diff --git a/translated_images/ar/.co-op-translator.json b/translated_images/ar/.co-op-translator.json
index 28d775c26..7e5306695 100644
--- a/translated_images/ar/.co-op-translator.json
+++ b/translated_images/ar/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "ar"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-13T23:57:44+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "ar"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T08:25:12+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "ar"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-13T23:57:57+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "ar"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T08:24:56+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "ar"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-13T23:58:02+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "ar"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T08:22:19+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "ar"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-13T23:57:50+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "ar"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T08:34:33+00:00",
diff --git a/translated_images/ar/catplot.e73fc35fdf96242b.webp b/translated_images/ar/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..5cfb4fd57
Binary files /dev/null and b/translated_images/ar/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/ar/heatmap.bd98dce43b404c57.webp b/translated_images/ar/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..50fd00441
Binary files /dev/null and b/translated_images/ar/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/ar/lineplot.f9034ba47b1e30ee.webp b/translated_images/ar/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..000e1b2d2
Binary files /dev/null and b/translated_images/ar/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/ar/relplot.a03837d8f0329cec.webp b/translated_images/ar/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..342bd88f7
Binary files /dev/null and b/translated_images/ar/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/bg/.co-op-translator.json b/translated_images/bg/.co-op-translator.json
index 83a0ab769..bd40fcb27 100644
--- a/translated_images/bg/.co-op-translator.json
+++ b/translated_images/bg/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "bg"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-14T06:26:38+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "bg"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T15:45:38+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "bg"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-14T06:26:55+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "bg"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T15:45:20+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "bg"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-14T06:27:01+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "bg"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T15:42:40+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "bg"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-14T06:26:46+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "bg"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T15:56:37+00:00",
diff --git a/translated_images/bg/catplot.e73fc35fdf96242b.webp b/translated_images/bg/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..c790fc770
Binary files /dev/null and b/translated_images/bg/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/bg/heatmap.bd98dce43b404c57.webp b/translated_images/bg/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..938c864db
Binary files /dev/null and b/translated_images/bg/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/bg/lineplot.f9034ba47b1e30ee.webp b/translated_images/bg/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..ea50129c3
Binary files /dev/null and b/translated_images/bg/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/bg/relplot.a03837d8f0329cec.webp b/translated_images/bg/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..7e68b1c4c
Binary files /dev/null and b/translated_images/bg/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/bn/.co-op-translator.json b/translated_images/bn/.co-op-translator.json
index 32dc35927..97435c7ac 100644
--- a/translated_images/bn/.co-op-translator.json
+++ b/translated_images/bn/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "bn"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-14T02:30:22+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "bn"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T10:50:47+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "bn"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-14T02:30:34+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "bn"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T10:50:26+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "bn"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-14T02:30:41+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "bn"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T10:47:45+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "bn"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-14T02:30:27+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "bn"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T11:01:24+00:00",
diff --git a/translated_images/bn/catplot.e73fc35fdf96242b.webp b/translated_images/bn/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..178746233
Binary files /dev/null and b/translated_images/bn/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/bn/heatmap.bd98dce43b404c57.webp b/translated_images/bn/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..1bf4350ed
Binary files /dev/null and b/translated_images/bn/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/bn/lineplot.f9034ba47b1e30ee.webp b/translated_images/bn/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..dd5e41ab0
Binary files /dev/null and b/translated_images/bn/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/bn/relplot.a03837d8f0329cec.webp b/translated_images/bn/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..22c209625
Binary files /dev/null and b/translated_images/bn/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/cs/.co-op-translator.json b/translated_images/cs/.co-op-translator.json
index 68e3f2519..20ec67d8b 100644
--- a/translated_images/cs/.co-op-translator.json
+++ b/translated_images/cs/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "cs"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-14T04:36:02+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "cs"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T15:07:52+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "cs"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-14T04:36:20+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "cs"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T15:07:33+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "cs"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-14T04:36:28+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "cs"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T15:04:54+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "cs"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-14T04:36:10+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "cs"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T15:18:46+00:00",
diff --git a/translated_images/cs/catplot.e73fc35fdf96242b.webp b/translated_images/cs/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..b7db9f9fe
Binary files /dev/null and b/translated_images/cs/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/cs/heatmap.bd98dce43b404c57.webp b/translated_images/cs/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..fe5239a3a
Binary files /dev/null and b/translated_images/cs/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/cs/lineplot.f9034ba47b1e30ee.webp b/translated_images/cs/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..096affe58
Binary files /dev/null and b/translated_images/cs/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/cs/relplot.a03837d8f0329cec.webp b/translated_images/cs/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..e58dc771e
Binary files /dev/null and b/translated_images/cs/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/da/.co-op-translator.json b/translated_images/da/.co-op-translator.json
index 9d09e8dc5..5b2fcc655 100644
--- a/translated_images/da/.co-op-translator.json
+++ b/translated_images/da/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "da"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-14T07:39:49+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "da"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T13:16:36+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "da"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-14T07:40:04+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "da"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T13:16:16+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "da"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-14T07:40:13+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "da"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T13:13:36+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "da"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-14T07:39:54+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "da"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T13:26:23+00:00",
diff --git a/translated_images/da/catplot.e73fc35fdf96242b.webp b/translated_images/da/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..f521a8ea4
Binary files /dev/null and b/translated_images/da/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/da/heatmap.bd98dce43b404c57.webp b/translated_images/da/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..3d890cf1d
Binary files /dev/null and b/translated_images/da/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/da/lineplot.f9034ba47b1e30ee.webp b/translated_images/da/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..1d9da40d2
Binary files /dev/null and b/translated_images/da/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/da/relplot.a03837d8f0329cec.webp b/translated_images/da/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..c5af6e67c
Binary files /dev/null and b/translated_images/da/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/de/.co-op-translator.json b/translated_images/de/.co-op-translator.json
index d109cc5df..7210aea85 100644
--- a/translated_images/de/.co-op-translator.json
+++ b/translated_images/de/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "de"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-13T23:57:42+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "de"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T08:25:04+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "de"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-13T23:57:53+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "de"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T08:24:47+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "de"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-13T23:57:59+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "de"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T08:22:04+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "de"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-13T23:57:46+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "de"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T08:34:31+00:00",
diff --git a/translated_images/de/catplot.e73fc35fdf96242b.webp b/translated_images/de/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..66b58453c
Binary files /dev/null and b/translated_images/de/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/de/heatmap.bd98dce43b404c57.webp b/translated_images/de/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..d653843c4
Binary files /dev/null and b/translated_images/de/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/de/lineplot.f9034ba47b1e30ee.webp b/translated_images/de/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..731ead390
Binary files /dev/null and b/translated_images/de/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/de/relplot.a03837d8f0329cec.webp b/translated_images/de/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..da4d2d651
Binary files /dev/null and b/translated_images/de/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/el/.co-op-translator.json b/translated_images/el/.co-op-translator.json
index f840304a4..14e5bbcec 100644
--- a/translated_images/el/.co-op-translator.json
+++ b/translated_images/el/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "el"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-14T05:51:49+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "el"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T12:38:09+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "el"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-14T05:52:03+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "el"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T12:37:48+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "el"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-14T05:52:10+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "el"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T12:35:04+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "el"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-14T05:51:54+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "el"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T12:50:42+00:00",
diff --git a/translated_images/el/catplot.e73fc35fdf96242b.webp b/translated_images/el/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..4b09f46ec
Binary files /dev/null and b/translated_images/el/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/el/heatmap.bd98dce43b404c57.webp b/translated_images/el/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..3a88ae0b0
Binary files /dev/null and b/translated_images/el/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/el/lineplot.f9034ba47b1e30ee.webp b/translated_images/el/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..dd4f92872
Binary files /dev/null and b/translated_images/el/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/el/relplot.a03837d8f0329cec.webp b/translated_images/el/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..212d8bb15
Binary files /dev/null and b/translated_images/el/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/en/.co-op-translator.json b/translated_images/en/.co-op-translator.json
index c434e78e8..eabd4c95f 100644
--- a/translated_images/en/.co-op-translator.json
+++ b/translated_images/en/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "en"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-13T23:33:54+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "en"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T07:51:28+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "en"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-13T23:34:07+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "en"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T07:51:11+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "en"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-13T23:34:14+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "en"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T07:48:44+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "en"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-13T23:33:59+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "en"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T08:00:06+00:00",
diff --git a/translated_images/en/catplot.e73fc35fdf96242b.webp b/translated_images/en/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..dc94328f6
Binary files /dev/null and b/translated_images/en/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/en/heatmap.bd98dce43b404c57.webp b/translated_images/en/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..396849cf3
Binary files /dev/null and b/translated_images/en/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/en/lineplot.f9034ba47b1e30ee.webp b/translated_images/en/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..8c1f729a4
Binary files /dev/null and b/translated_images/en/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/en/relplot.a03837d8f0329cec.webp b/translated_images/en/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..17fdb52ce
Binary files /dev/null and b/translated_images/en/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/es/.co-op-translator.json b/translated_images/es/.co-op-translator.json
index 1f49c3602..3ed0dbf52 100644
--- a/translated_images/es/.co-op-translator.json
+++ b/translated_images/es/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "es"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-13T23:33:57+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "es"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T07:51:34+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "es"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-13T23:34:12+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "es"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T07:51:19+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "es"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-13T23:34:17+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "es"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T07:48:58+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "es"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-13T23:34:04+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "es"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T08:00:08+00:00",
diff --git a/translated_images/es/catplot.e73fc35fdf96242b.webp b/translated_images/es/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..0cbd149da
Binary files /dev/null and b/translated_images/es/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/es/heatmap.bd98dce43b404c57.webp b/translated_images/es/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..b5eb4da82
Binary files /dev/null and b/translated_images/es/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/es/lineplot.f9034ba47b1e30ee.webp b/translated_images/es/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..c60f925e2
Binary files /dev/null and b/translated_images/es/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/es/relplot.a03837d8f0329cec.webp b/translated_images/es/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..75d75832a
Binary files /dev/null and b/translated_images/es/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/et/.co-op-translator.json b/translated_images/et/.co-op-translator.json
index aa9a3eb68..fc2ed5a93 100644
--- a/translated_images/et/.co-op-translator.json
+++ b/translated_images/et/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "et"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-14T00:25:17+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "et"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T17:39:07+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "et"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-14T00:25:29+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "et"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T17:38:49+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "et"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-14T00:25:34+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "et"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T17:36:13+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "et"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-14T00:25:22+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "et"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T17:49:32+00:00",
diff --git a/translated_images/et/catplot.e73fc35fdf96242b.webp b/translated_images/et/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..c8c64013a
Binary files /dev/null and b/translated_images/et/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/et/heatmap.bd98dce43b404c57.webp b/translated_images/et/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..59e66afd3
Binary files /dev/null and b/translated_images/et/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/et/lineplot.f9034ba47b1e30ee.webp b/translated_images/et/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..decb6c7af
Binary files /dev/null and b/translated_images/et/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/et/relplot.a03837d8f0329cec.webp b/translated_images/et/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..99428f84d
Binary files /dev/null and b/translated_images/et/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/fa/.co-op-translator.json b/translated_images/fa/.co-op-translator.json
index c46a4c54c..93e5c40e2 100644
--- a/translated_images/fa/.co-op-translator.json
+++ b/translated_images/fa/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "fa"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-14T03:40:34+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "fa"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T08:59:40+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "fa"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-14T03:40:46+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "fa"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T08:59:19+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "fa"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-14T03:40:52+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "fa"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T08:56:22+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "fa"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-14T03:40:38+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "fa"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T09:11:55+00:00",
diff --git a/translated_images/fa/catplot.e73fc35fdf96242b.webp b/translated_images/fa/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..e4239e1a9
Binary files /dev/null and b/translated_images/fa/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/fa/heatmap.bd98dce43b404c57.webp b/translated_images/fa/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..8d4b9d092
Binary files /dev/null and b/translated_images/fa/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/fa/lineplot.f9034ba47b1e30ee.webp b/translated_images/fa/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..f7b73c746
Binary files /dev/null and b/translated_images/fa/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/fa/relplot.a03837d8f0329cec.webp b/translated_images/fa/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..1d54dd08e
Binary files /dev/null and b/translated_images/fa/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/fi/.co-op-translator.json b/translated_images/fi/.co-op-translator.json
index 0454f637d..6e2829f93 100644
--- a/translated_images/fi/.co-op-translator.json
+++ b/translated_images/fi/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "fi"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-14T07:39:52+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "fi"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T13:16:44+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "fi"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-14T07:40:12+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "fi"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T13:16:26+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "fi"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-14T07:40:17+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "fi"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T13:13:50+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "fi"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-14T07:40:01+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "fi"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T13:26:25+00:00",
diff --git a/translated_images/fi/catplot.e73fc35fdf96242b.webp b/translated_images/fi/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..6303596df
Binary files /dev/null and b/translated_images/fi/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/fi/heatmap.bd98dce43b404c57.webp b/translated_images/fi/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..285b9826e
Binary files /dev/null and b/translated_images/fi/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/fi/lineplot.f9034ba47b1e30ee.webp b/translated_images/fi/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..4bbf3e482
Binary files /dev/null and b/translated_images/fi/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/fi/relplot.a03837d8f0329cec.webp b/translated_images/fi/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..e5d38a70c
Binary files /dev/null and b/translated_images/fi/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/fr/.co-op-translator.json b/translated_images/fr/.co-op-translator.json
index f826adc31..2cfbcd1d1 100644
--- a/translated_images/fr/.co-op-translator.json
+++ b/translated_images/fr/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "fr"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-13T23:33:55+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "fr"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T07:51:32+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "fr"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-13T23:34:10+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "fr"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T07:51:15+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "fr"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-13T23:34:16+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "fr"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T07:48:51+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "fr"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-13T23:34:02+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "fr"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T08:00:07+00:00",
diff --git a/translated_images/fr/catplot.e73fc35fdf96242b.webp b/translated_images/fr/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..b08aceb99
Binary files /dev/null and b/translated_images/fr/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/fr/heatmap.bd98dce43b404c57.webp b/translated_images/fr/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..9e9c927a5
Binary files /dev/null and b/translated_images/fr/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/fr/lineplot.f9034ba47b1e30ee.webp b/translated_images/fr/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..40a67508c
Binary files /dev/null and b/translated_images/fr/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/fr/relplot.a03837d8f0329cec.webp b/translated_images/fr/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..15f550943
Binary files /dev/null and b/translated_images/fr/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/he/.co-op-translator.json b/translated_images/he/.co-op-translator.json
index cbfe7b8f9..e4f396ebf 100644
--- a/translated_images/he/.co-op-translator.json
+++ b/translated_images/he/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "he"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-14T04:05:47+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "he"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T13:51:08+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "he"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-14T04:06:00+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "he"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T13:50:50+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "he"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-14T04:06:08+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "he"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T13:48:09+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "he"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-14T04:05:52+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "he"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T14:01:14+00:00",
diff --git a/translated_images/he/catplot.e73fc35fdf96242b.webp b/translated_images/he/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..eea3b09a8
Binary files /dev/null and b/translated_images/he/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/he/heatmap.bd98dce43b404c57.webp b/translated_images/he/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..2125a53ff
Binary files /dev/null and b/translated_images/he/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/he/lineplot.f9034ba47b1e30ee.webp b/translated_images/he/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..6e5d218a7
Binary files /dev/null and b/translated_images/he/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/he/relplot.a03837d8f0329cec.webp b/translated_images/he/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..cecf9bf55
Binary files /dev/null and b/translated_images/he/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/hi/.co-op-translator.json b/translated_images/hi/.co-op-translator.json
index 8ec0c5fc0..3f16b4271 100644
--- a/translated_images/hi/.co-op-translator.json
+++ b/translated_images/hi/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "hi"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-14T05:05:33+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "hi"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T10:15:30+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "hi"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-14T05:05:50+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "hi"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T10:15:13+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "hi"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-14T05:05:58+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "hi"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T10:12:42+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "hi"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-14T05:05:41+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "hi"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T10:25:42+00:00",
diff --git a/translated_images/hi/catplot.e73fc35fdf96242b.webp b/translated_images/hi/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..31c6030ff
Binary files /dev/null and b/translated_images/hi/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/hi/heatmap.bd98dce43b404c57.webp b/translated_images/hi/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..8cf70dfda
Binary files /dev/null and b/translated_images/hi/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/hi/lineplot.f9034ba47b1e30ee.webp b/translated_images/hi/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..2bfc5c94a
Binary files /dev/null and b/translated_images/hi/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/hi/relplot.a03837d8f0329cec.webp b/translated_images/hi/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..d06a5da9f
Binary files /dev/null and b/translated_images/hi/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/hr/.co-op-translator.json b/translated_images/hr/.co-op-translator.json
index f977de365..b5d5814bb 100644
--- a/translated_images/hr/.co-op-translator.json
+++ b/translated_images/hr/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "hr"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-14T02:00:12+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "hr"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T16:24:39+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "hr"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-14T02:00:25+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "hr"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T16:24:20+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "hr"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-14T02:00:31+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "hr"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T16:21:39+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "hr"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-14T02:00:18+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "hr"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T16:35:05+00:00",
diff --git a/translated_images/hr/catplot.e73fc35fdf96242b.webp b/translated_images/hr/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..59779d34f
Binary files /dev/null and b/translated_images/hr/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/hr/heatmap.bd98dce43b404c57.webp b/translated_images/hr/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..1a766f31a
Binary files /dev/null and b/translated_images/hr/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/hr/lineplot.f9034ba47b1e30ee.webp b/translated_images/hr/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..9d35f7b49
Binary files /dev/null and b/translated_images/hr/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/hr/relplot.a03837d8f0329cec.webp b/translated_images/hr/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..1d51c4b57
Binary files /dev/null and b/translated_images/hr/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/hu/.co-op-translator.json b/translated_images/hu/.co-op-translator.json
index 38187d435..dcb544bf7 100644
--- a/translated_images/hu/.co-op-translator.json
+++ b/translated_images/hu/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "hu"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-14T04:36:00+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "hu"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T15:07:48+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "hu"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-14T04:36:16+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "hu"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T15:07:28+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "hu"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-14T04:36:25+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "hu"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T15:04:47+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "hu"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-14T04:36:08+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "hu"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T15:18:45+00:00",
diff --git a/translated_images/hu/catplot.e73fc35fdf96242b.webp b/translated_images/hu/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..e57989b08
Binary files /dev/null and b/translated_images/hu/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/hu/heatmap.bd98dce43b404c57.webp b/translated_images/hu/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..f9113960a
Binary files /dev/null and b/translated_images/hu/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/hu/lineplot.f9034ba47b1e30ee.webp b/translated_images/hu/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..7b567a266
Binary files /dev/null and b/translated_images/hu/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/hu/relplot.a03837d8f0329cec.webp b/translated_images/hu/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..21b985712
Binary files /dev/null and b/translated_images/hu/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/id/.co-op-translator.json b/translated_images/id/.co-op-translator.json
index df39e1324..a609a0621 100644
--- a/translated_images/id/.co-op-translator.json
+++ b/translated_images/id/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "id"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-14T06:59:17+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "id"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T14:29:09+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "id"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-14T06:59:31+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "id"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T14:28:48+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "id"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-14T06:59:40+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "id"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T14:25:53+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "id"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-14T06:59:22+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "id"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T14:39:58+00:00",
diff --git a/translated_images/id/catplot.e73fc35fdf96242b.webp b/translated_images/id/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..4181d4a7a
Binary files /dev/null and b/translated_images/id/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/id/heatmap.bd98dce43b404c57.webp b/translated_images/id/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..824810778
Binary files /dev/null and b/translated_images/id/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/id/lineplot.f9034ba47b1e30ee.webp b/translated_images/id/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..e2d2f6195
Binary files /dev/null and b/translated_images/id/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/id/relplot.a03837d8f0329cec.webp b/translated_images/id/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..9f4c8974a
Binary files /dev/null and b/translated_images/id/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/it/.co-op-translator.json b/translated_images/it/.co-op-translator.json
index 0a5d835b9..bb2cb61ce 100644
--- a/translated_images/it/.co-op-translator.json
+++ b/translated_images/it/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "it"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-14T08:48:51+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "it"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T12:02:23+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "it"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-14T08:49:05+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "it"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T12:02:00+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "it"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-14T08:49:13+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "it"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T11:59:20+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "it"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-14T08:48:58+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "it"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T12:12:39+00:00",
diff --git a/translated_images/it/catplot.e73fc35fdf96242b.webp b/translated_images/it/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..2d7dba000
Binary files /dev/null and b/translated_images/it/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/it/heatmap.bd98dce43b404c57.webp b/translated_images/it/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..fee1cb00d
Binary files /dev/null and b/translated_images/it/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/it/lineplot.f9034ba47b1e30ee.webp b/translated_images/it/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..53cfa51b1
Binary files /dev/null and b/translated_images/it/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/it/relplot.a03837d8f0329cec.webp b/translated_images/it/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..d7c09e584
Binary files /dev/null and b/translated_images/it/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/ja/.co-op-translator.json b/translated_images/ja/.co-op-translator.json
index 529c816f1..7600ca772 100644
--- a/translated_images/ja/.co-op-translator.json
+++ b/translated_images/ja/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "ja"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-14T05:05:30+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "ja"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T10:15:24+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "ja"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-14T05:05:44+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "ja"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T10:15:04+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "ja"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-14T05:05:51+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "ja"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T10:12:27+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "ja"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-14T05:05:36+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "ja"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T10:25:40+00:00",
diff --git a/translated_images/ja/catplot.e73fc35fdf96242b.webp b/translated_images/ja/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..94fae08e1
Binary files /dev/null and b/translated_images/ja/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/ja/heatmap.bd98dce43b404c57.webp b/translated_images/ja/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..24fe98760
Binary files /dev/null and b/translated_images/ja/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/ja/lineplot.f9034ba47b1e30ee.webp b/translated_images/ja/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..544d15beb
Binary files /dev/null and b/translated_images/ja/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/ja/relplot.a03837d8f0329cec.webp b/translated_images/ja/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..5a90ba7f3
Binary files /dev/null and b/translated_images/ja/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/km/.co-op-translator.json b/translated_images/km/.co-op-translator.json
index 949b7eeb1..38d0ad570 100644
--- a/translated_images/km/.co-op-translator.json
+++ b/translated_images/km/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "km"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-14T01:04:45+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "km"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-04-06T19:42:33+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "km"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-14T01:04:49+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "km"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-04-06T19:42:26+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "km"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-14T01:04:52+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "km"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-04-06T19:41:31+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "km"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-14T01:04:47+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "km"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-04-06T19:46:35+00:00",
diff --git a/translated_images/km/catplot.e73fc35fdf96242b.webp b/translated_images/km/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..8bb4799e3
Binary files /dev/null and b/translated_images/km/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/km/heatmap.bd98dce43b404c57.webp b/translated_images/km/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..ca140d5fe
Binary files /dev/null and b/translated_images/km/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/km/lineplot.f9034ba47b1e30ee.webp b/translated_images/km/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..be47f8e4d
Binary files /dev/null and b/translated_images/km/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/km/relplot.a03837d8f0329cec.webp b/translated_images/km/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..509ff805a
Binary files /dev/null and b/translated_images/km/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/kn/.co-op-translator.json b/translated_images/kn/.co-op-translator.json
index 82549f2bd..435c5ae2b 100644
--- a/translated_images/kn/.co-op-translator.json
+++ b/translated_images/kn/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "kn"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-14T00:54:19+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "kn"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T18:20:57+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "kn"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-14T00:54:32+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "kn"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T18:20:39+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "kn"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-14T00:54:36+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "kn"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T18:17:49+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "kn"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-14T00:54:24+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "kn"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T18:32:33+00:00",
diff --git a/translated_images/kn/catplot.e73fc35fdf96242b.webp b/translated_images/kn/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..2769cac46
Binary files /dev/null and b/translated_images/kn/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/kn/heatmap.bd98dce43b404c57.webp b/translated_images/kn/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..4035f15d4
Binary files /dev/null and b/translated_images/kn/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/kn/lineplot.f9034ba47b1e30ee.webp b/translated_images/kn/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..bc4457ae1
Binary files /dev/null and b/translated_images/kn/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/kn/relplot.a03837d8f0329cec.webp b/translated_images/kn/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..7f56f250f
Binary files /dev/null and b/translated_images/kn/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/ko/.co-op-translator.json b/translated_images/ko/.co-op-translator.json
index 4e55f4369..c0db827f5 100644
--- a/translated_images/ko/.co-op-translator.json
+++ b/translated_images/ko/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "ko"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-14T05:05:32+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "ko"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T10:15:27+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "ko"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-14T05:05:47+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "ko"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T10:15:09+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "ko"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-14T05:05:55+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "ko"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T10:12:34+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "ko"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-14T05:05:39+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "ko"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T10:25:41+00:00",
diff --git a/translated_images/ko/catplot.e73fc35fdf96242b.webp b/translated_images/ko/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..fc11803b1
Binary files /dev/null and b/translated_images/ko/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/ko/heatmap.bd98dce43b404c57.webp b/translated_images/ko/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..bc9018f08
Binary files /dev/null and b/translated_images/ko/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/ko/lineplot.f9034ba47b1e30ee.webp b/translated_images/ko/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..86d8afbed
Binary files /dev/null and b/translated_images/ko/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/ko/relplot.a03837d8f0329cec.webp b/translated_images/ko/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..f06a930a0
Binary files /dev/null and b/translated_images/ko/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/lt/.co-op-translator.json b/translated_images/lt/.co-op-translator.json
index 275941076..ac2ff6604 100644
--- a/translated_images/lt/.co-op-translator.json
+++ b/translated_images/lt/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "lt"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-14T01:35:52+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "lt"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T17:03:13+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "lt"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-14T01:36:07+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "lt"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T17:02:54+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "lt"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-14T01:36:19+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "lt"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T17:00:09+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "lt"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-14T01:35:58+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "lt"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T17:14:45+00:00",
diff --git a/translated_images/lt/catplot.e73fc35fdf96242b.webp b/translated_images/lt/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..81624cf66
Binary files /dev/null and b/translated_images/lt/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/lt/heatmap.bd98dce43b404c57.webp b/translated_images/lt/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..e6e4e7e67
Binary files /dev/null and b/translated_images/lt/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/lt/lineplot.f9034ba47b1e30ee.webp b/translated_images/lt/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..51127bce7
Binary files /dev/null and b/translated_images/lt/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/lt/relplot.a03837d8f0329cec.webp b/translated_images/lt/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..430b97263
Binary files /dev/null and b/translated_images/lt/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/ml/.co-op-translator.json b/translated_images/ml/.co-op-translator.json
index 8bb3bbc7a..6277c00cb 100644
--- a/translated_images/ml/.co-op-translator.json
+++ b/translated_images/ml/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "ml"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-14T00:54:17+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "ml"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T18:20:53+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "ml"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-14T00:54:29+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "ml"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T18:20:34+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "ml"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-14T00:54:34+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "ml"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T18:17:39+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "ml"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-14T00:54:22+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "ml"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T18:32:31+00:00",
diff --git a/translated_images/ml/catplot.e73fc35fdf96242b.webp b/translated_images/ml/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..af47caac4
Binary files /dev/null and b/translated_images/ml/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/ml/heatmap.bd98dce43b404c57.webp b/translated_images/ml/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..d4053817a
Binary files /dev/null and b/translated_images/ml/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/ml/lineplot.f9034ba47b1e30ee.webp b/translated_images/ml/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..6afcff060
Binary files /dev/null and b/translated_images/ml/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/ml/relplot.a03837d8f0329cec.webp b/translated_images/ml/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..db41e1809
Binary files /dev/null and b/translated_images/ml/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/mr/.co-op-translator.json b/translated_images/mr/.co-op-translator.json
index 8351255e8..39102836c 100644
--- a/translated_images/mr/.co-op-translator.json
+++ b/translated_images/mr/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "mr"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-14T02:30:24+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "mr"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T10:50:50+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "mr"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-14T02:30:37+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "mr"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T10:50:31+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "mr"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-14T02:30:42+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "mr"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T10:47:53+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "mr"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-14T02:30:29+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "mr"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T11:01:25+00:00",
diff --git a/translated_images/mr/catplot.e73fc35fdf96242b.webp b/translated_images/mr/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..f33ebc4d4
Binary files /dev/null and b/translated_images/mr/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/mr/heatmap.bd98dce43b404c57.webp b/translated_images/mr/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..572984f0e
Binary files /dev/null and b/translated_images/mr/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/mr/lineplot.f9034ba47b1e30ee.webp b/translated_images/mr/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..1aad81145
Binary files /dev/null and b/translated_images/mr/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/mr/relplot.a03837d8f0329cec.webp b/translated_images/mr/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..8b6a37ca8
Binary files /dev/null and b/translated_images/mr/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/ms/.co-op-translator.json b/translated_images/ms/.co-op-translator.json
index 232b74a55..71b58ddec 100644
--- a/translated_images/ms/.co-op-translator.json
+++ b/translated_images/ms/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "ms"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-14T06:59:18+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "ms"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T14:29:12+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "ms"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-14T06:59:34+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "ms"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T14:28:53+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "ms"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-14T06:59:42+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "ms"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T14:26:02+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "ms"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-14T06:59:25+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "ms"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T14:39:59+00:00",
diff --git a/translated_images/ms/catplot.e73fc35fdf96242b.webp b/translated_images/ms/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..4181d4a7a
Binary files /dev/null and b/translated_images/ms/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/ms/heatmap.bd98dce43b404c57.webp b/translated_images/ms/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..824810778
Binary files /dev/null and b/translated_images/ms/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/ms/lineplot.f9034ba47b1e30ee.webp b/translated_images/ms/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..e2d2f6195
Binary files /dev/null and b/translated_images/ms/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/ms/relplot.a03837d8f0329cec.webp b/translated_images/ms/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..9f4c8974a
Binary files /dev/null and b/translated_images/ms/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/my/.co-op-translator.json b/translated_images/my/.co-op-translator.json
index 97f010173..538327560 100644
--- a/translated_images/my/.co-op-translator.json
+++ b/translated_images/my/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "my"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-14T01:35:50+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "my"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T17:03:05+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "my"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-14T01:36:01+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "my"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T17:02:44+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "my"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-14T01:36:09+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "my"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T16:59:53+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "my"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-14T01:35:54+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "my"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T17:14:43+00:00",
diff --git a/translated_images/my/catplot.e73fc35fdf96242b.webp b/translated_images/my/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..9a2b065da
Binary files /dev/null and b/translated_images/my/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/my/heatmap.bd98dce43b404c57.webp b/translated_images/my/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..7a7222717
Binary files /dev/null and b/translated_images/my/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/my/lineplot.f9034ba47b1e30ee.webp b/translated_images/my/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..808abee89
Binary files /dev/null and b/translated_images/my/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/my/relplot.a03837d8f0329cec.webp b/translated_images/my/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..9fb1ec911
Binary files /dev/null and b/translated_images/my/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/ne/.co-op-translator.json b/translated_images/ne/.co-op-translator.json
index 67de5c55b..06697d30d 100644
--- a/translated_images/ne/.co-op-translator.json
+++ b/translated_images/ne/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "ne"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-14T02:30:25+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "ne"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T10:50:54+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "ne"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-14T02:30:40+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "ne"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T10:50:36+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "ne"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-14T02:30:44+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "ne"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T10:48:02+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "ne"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-14T02:30:31+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "ne"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T11:01:26+00:00",
diff --git a/translated_images/ne/catplot.e73fc35fdf96242b.webp b/translated_images/ne/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..213f9d3e4
Binary files /dev/null and b/translated_images/ne/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/ne/heatmap.bd98dce43b404c57.webp b/translated_images/ne/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..e87ad37c4
Binary files /dev/null and b/translated_images/ne/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/ne/lineplot.f9034ba47b1e30ee.webp b/translated_images/ne/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..59e17a205
Binary files /dev/null and b/translated_images/ne/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/ne/relplot.a03837d8f0329cec.webp b/translated_images/ne/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..98e4a59e7
Binary files /dev/null and b/translated_images/ne/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/nl/.co-op-translator.json b/translated_images/nl/.co-op-translator.json
index 279c09b5a..a8823650b 100644
--- a/translated_images/nl/.co-op-translator.json
+++ b/translated_images/nl/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "nl"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-14T04:05:46+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "nl"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T13:51:04+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "nl"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-14T04:05:57+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "nl"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T13:50:45+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "nl"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-14T04:06:06+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "nl"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T13:48:02+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "nl"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-14T04:05:50+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "nl"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T14:01:14+00:00",
diff --git a/translated_images/nl/catplot.e73fc35fdf96242b.webp b/translated_images/nl/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..95108a3f9
Binary files /dev/null and b/translated_images/nl/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/nl/heatmap.bd98dce43b404c57.webp b/translated_images/nl/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..a34426f83
Binary files /dev/null and b/translated_images/nl/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/nl/lineplot.f9034ba47b1e30ee.webp b/translated_images/nl/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..9c631379b
Binary files /dev/null and b/translated_images/nl/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/nl/relplot.a03837d8f0329cec.webp b/translated_images/nl/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..f79baf50a
Binary files /dev/null and b/translated_images/nl/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/no/.co-op-translator.json b/translated_images/no/.co-op-translator.json
index d4974b688..8ae34927d 100644
--- a/translated_images/no/.co-op-translator.json
+++ b/translated_images/no/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "no"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-14T07:39:50+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "no"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T13:16:41+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "no"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-14T07:40:08+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "no"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T13:16:21+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "no"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-14T07:40:15+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "no"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T13:13:43+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "no"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-14T07:39:57+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "no"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T13:26:24+00:00",
diff --git a/translated_images/no/catplot.e73fc35fdf96242b.webp b/translated_images/no/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..f521a8ea4
Binary files /dev/null and b/translated_images/no/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/no/heatmap.bd98dce43b404c57.webp b/translated_images/no/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..1c5eeed9b
Binary files /dev/null and b/translated_images/no/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/no/lineplot.f9034ba47b1e30ee.webp b/translated_images/no/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..1d9da40d2
Binary files /dev/null and b/translated_images/no/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/no/relplot.a03837d8f0329cec.webp b/translated_images/no/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..c5af6e67c
Binary files /dev/null and b/translated_images/no/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/pa/.co-op-translator.json b/translated_images/pa/.co-op-translator.json
index 0fcd5bf3f..c325f35e5 100644
--- a/translated_images/pa/.co-op-translator.json
+++ b/translated_images/pa/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "pa"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-14T03:17:38+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "pa"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T11:27:03+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "pa"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-14T03:17:52+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "pa"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T11:26:44+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "pa"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-14T03:17:58+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "pa"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T11:24:04+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "pa"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-14T03:17:44+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "pa"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T11:37:41+00:00",
diff --git a/translated_images/pa/catplot.e73fc35fdf96242b.webp b/translated_images/pa/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..cc7f6f7cc
Binary files /dev/null and b/translated_images/pa/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/pa/heatmap.bd98dce43b404c57.webp b/translated_images/pa/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..986cff80f
Binary files /dev/null and b/translated_images/pa/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/pa/lineplot.f9034ba47b1e30ee.webp b/translated_images/pa/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..4fc8e63ad
Binary files /dev/null and b/translated_images/pa/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/pa/relplot.a03837d8f0329cec.webp b/translated_images/pa/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..1c8c0db4c
Binary files /dev/null and b/translated_images/pa/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/pcm/.co-op-translator.json b/translated_images/pcm/.co-op-translator.json
index f401993a7..22f23a5ef 100644
--- a/translated_images/pcm/.co-op-translator.json
+++ b/translated_images/pcm/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "pcm"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-14T00:25:18+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "pcm"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T17:39:11+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "pcm"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-14T00:25:31+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "pcm"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T17:38:53+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "pcm"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-14T00:25:36+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "pcm"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T17:36:20+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "pcm"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-14T00:25:24+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "pcm"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T17:49:33+00:00",
diff --git a/translated_images/pcm/catplot.e73fc35fdf96242b.webp b/translated_images/pcm/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..dc94328f6
Binary files /dev/null and b/translated_images/pcm/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/pcm/heatmap.bd98dce43b404c57.webp b/translated_images/pcm/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..396849cf3
Binary files /dev/null and b/translated_images/pcm/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/pcm/lineplot.f9034ba47b1e30ee.webp b/translated_images/pcm/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..8c1f729a4
Binary files /dev/null and b/translated_images/pcm/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/pcm/relplot.a03837d8f0329cec.webp b/translated_images/pcm/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..7e6450777
Binary files /dev/null and b/translated_images/pcm/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/pl/.co-op-translator.json b/translated_images/pl/.co-op-translator.json
index 8ff65744c..ed380feaf 100644
--- a/translated_images/pl/.co-op-translator.json
+++ b/translated_images/pl/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "pl"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-14T08:48:52+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "pl"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T12:02:27+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "pl"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-14T08:49:08+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "pl"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T12:02:04+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "pl"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-14T08:49:15+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "pl"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T11:59:27+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "pl"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-14T08:49:00+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "pl"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T12:12:40+00:00",
diff --git a/translated_images/pl/catplot.e73fc35fdf96242b.webp b/translated_images/pl/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..983d1d997
Binary files /dev/null and b/translated_images/pl/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/pl/heatmap.bd98dce43b404c57.webp b/translated_images/pl/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..e4add1162
Binary files /dev/null and b/translated_images/pl/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/pl/lineplot.f9034ba47b1e30ee.webp b/translated_images/pl/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..2907c7417
Binary files /dev/null and b/translated_images/pl/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/pl/relplot.a03837d8f0329cec.webp b/translated_images/pl/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..c9656c95a
Binary files /dev/null and b/translated_images/pl/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/pt-BR/.co-op-translator.json b/translated_images/pt-BR/.co-op-translator.json
index 70d72e5a2..7a406ab8c 100644
--- a/translated_images/pt-BR/.co-op-translator.json
+++ b/translated_images/pt-BR/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "pt-BR"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-14T03:17:41+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "pt-BR"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T11:27:10+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "pt-BR"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-14T03:17:57+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "pt-BR"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T11:26:53+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "pt-BR"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-14T03:18:01+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "pt-BR"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T11:24:17+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "pt-BR"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-14T03:17:48+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "pt-BR"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T11:37:43+00:00",
diff --git a/translated_images/pt-BR/catplot.e73fc35fdf96242b.webp b/translated_images/pt-BR/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..d00a9d226
Binary files /dev/null and b/translated_images/pt-BR/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/pt-BR/heatmap.bd98dce43b404c57.webp b/translated_images/pt-BR/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..4020efb42
Binary files /dev/null and b/translated_images/pt-BR/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/pt-BR/lineplot.f9034ba47b1e30ee.webp b/translated_images/pt-BR/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..2f67192ac
Binary files /dev/null and b/translated_images/pt-BR/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/pt-BR/relplot.a03837d8f0329cec.webp b/translated_images/pt-BR/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..ff9b1b455
Binary files /dev/null and b/translated_images/pt-BR/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/pt-PT/.co-op-translator.json b/translated_images/pt-PT/.co-op-translator.json
index 034a3392e..e550f35d1 100644
--- a/translated_images/pt-PT/.co-op-translator.json
+++ b/translated_images/pt-PT/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "pt-PT"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-14T03:17:40+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "pt-PT"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T11:27:07+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "pt-PT"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-14T03:17:54+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "pt-PT"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T11:26:49+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "pt-PT"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-14T03:18:00+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "pt-PT"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T11:24:10+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "pt-PT"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-14T03:17:47+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "pt-PT"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T11:37:42+00:00",
diff --git a/translated_images/pt-PT/catplot.e73fc35fdf96242b.webp b/translated_images/pt-PT/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..d00a9d226
Binary files /dev/null and b/translated_images/pt-PT/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/pt-PT/heatmap.bd98dce43b404c57.webp b/translated_images/pt-PT/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..9a7d58aa8
Binary files /dev/null and b/translated_images/pt-PT/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/pt-PT/lineplot.f9034ba47b1e30ee.webp b/translated_images/pt-PT/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..2f67192ac
Binary files /dev/null and b/translated_images/pt-PT/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/pt-PT/relplot.a03837d8f0329cec.webp b/translated_images/pt-PT/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..ff9b1b455
Binary files /dev/null and b/translated_images/pt-PT/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/ro/.co-op-translator.json b/translated_images/ro/.co-op-translator.json
index b8dc310ec..6f8c711b6 100644
--- a/translated_images/ro/.co-op-translator.json
+++ b/translated_images/ro/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "ro"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-14T06:26:36+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "ro"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T15:45:34+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "ro"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-14T06:26:52+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "ro"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T15:45:15+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "ro"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-14T06:26:59+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "ro"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T15:42:32+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "ro"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-14T06:26:44+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "ro"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T15:56:36+00:00",
diff --git a/translated_images/ro/catplot.e73fc35fdf96242b.webp b/translated_images/ro/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..47f9926b7
Binary files /dev/null and b/translated_images/ro/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/ro/heatmap.bd98dce43b404c57.webp b/translated_images/ro/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..baca5d10c
Binary files /dev/null and b/translated_images/ro/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/ro/lineplot.f9034ba47b1e30ee.webp b/translated_images/ro/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..78e001c2f
Binary files /dev/null and b/translated_images/ro/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/ro/relplot.a03837d8f0329cec.webp b/translated_images/ro/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..447ed0b78
Binary files /dev/null and b/translated_images/ro/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/ru/.co-op-translator.json b/translated_images/ru/.co-op-translator.json
index 30914c7fb..e80b028bd 100644
--- a/translated_images/ru/.co-op-translator.json
+++ b/translated_images/ru/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "ru"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-13T23:57:43+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "ru"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T08:25:08+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "ru"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-13T23:57:55+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "ru"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T08:24:51+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "ru"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-13T23:58:01+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "ru"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T08:22:11+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "ru"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-13T23:57:48+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "ru"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T08:34:32+00:00",
diff --git a/translated_images/ru/catplot.e73fc35fdf96242b.webp b/translated_images/ru/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..e6e2511ae
Binary files /dev/null and b/translated_images/ru/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/ru/heatmap.bd98dce43b404c57.webp b/translated_images/ru/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..173fb5075
Binary files /dev/null and b/translated_images/ru/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/ru/lineplot.f9034ba47b1e30ee.webp b/translated_images/ru/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..4285dfd49
Binary files /dev/null and b/translated_images/ru/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/ru/relplot.a03837d8f0329cec.webp b/translated_images/ru/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..95c882233
Binary files /dev/null and b/translated_images/ru/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/sk/.co-op-translator.json b/translated_images/sk/.co-op-translator.json
index 04fdcc50a..956d0053d 100644
--- a/translated_images/sk/.co-op-translator.json
+++ b/translated_images/sk/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "sk"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-14T06:26:35+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "sk"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T15:45:31+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "sk"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-14T06:26:49+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "sk"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T15:45:10+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "sk"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-14T06:26:57+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "sk"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T15:42:25+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "sk"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-14T06:26:40+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "sk"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T15:56:35+00:00",
diff --git a/translated_images/sk/catplot.e73fc35fdf96242b.webp b/translated_images/sk/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..71671da64
Binary files /dev/null and b/translated_images/sk/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/sk/heatmap.bd98dce43b404c57.webp b/translated_images/sk/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..8f076c4e0
Binary files /dev/null and b/translated_images/sk/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/sk/lineplot.f9034ba47b1e30ee.webp b/translated_images/sk/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..d2ca08f26
Binary files /dev/null and b/translated_images/sk/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/sk/relplot.a03837d8f0329cec.webp b/translated_images/sk/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..5f0606a29
Binary files /dev/null and b/translated_images/sk/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/sl/.co-op-translator.json b/translated_images/sl/.co-op-translator.json
index dff3ee605..c34102c45 100644
--- a/translated_images/sl/.co-op-translator.json
+++ b/translated_images/sl/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "sl"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-14T02:00:13+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "sl"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T16:24:42+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "sl"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-14T02:00:28+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "sl"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T16:24:25+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "sl"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-14T02:00:32+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "sl"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T16:21:46+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "sl"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-14T02:00:20+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "sl"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T16:35:06+00:00",
diff --git a/translated_images/sl/catplot.e73fc35fdf96242b.webp b/translated_images/sl/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..88bfca93c
Binary files /dev/null and b/translated_images/sl/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/sl/heatmap.bd98dce43b404c57.webp b/translated_images/sl/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..6a069286f
Binary files /dev/null and b/translated_images/sl/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/sl/lineplot.f9034ba47b1e30ee.webp b/translated_images/sl/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..e5ffb1c3b
Binary files /dev/null and b/translated_images/sl/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/sl/relplot.a03837d8f0329cec.webp b/translated_images/sl/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..f7e01b80e
Binary files /dev/null and b/translated_images/sl/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/sr/.co-op-translator.json b/translated_images/sr/.co-op-translator.json
index 6a3119713..376f3ef16 100644
--- a/translated_images/sr/.co-op-translator.json
+++ b/translated_images/sr/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "sr"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-14T02:00:11+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "sr"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T16:24:35+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "sr"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-14T02:00:22+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "sr"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T16:24:16+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "sr"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-14T02:00:29+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "sr"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T16:21:33+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "sr"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-14T02:00:15+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "sr"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T16:35:04+00:00",
diff --git a/translated_images/sr/catplot.e73fc35fdf96242b.webp b/translated_images/sr/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..c790fc770
Binary files /dev/null and b/translated_images/sr/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/sr/heatmap.bd98dce43b404c57.webp b/translated_images/sr/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..938c864db
Binary files /dev/null and b/translated_images/sr/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/sr/lineplot.f9034ba47b1e30ee.webp b/translated_images/sr/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..ea50129c3
Binary files /dev/null and b/translated_images/sr/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/sr/relplot.a03837d8f0329cec.webp b/translated_images/sr/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..7e68b1c4c
Binary files /dev/null and b/translated_images/sr/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/sv/.co-op-translator.json b/translated_images/sv/.co-op-translator.json
index cd0fde5b0..cfe02383c 100644
--- a/translated_images/sv/.co-op-translator.json
+++ b/translated_images/sv/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "sv"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-14T05:51:52+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "sv"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T12:38:15+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "sv"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-14T05:52:08+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "sv"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T12:37:58+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "sv"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-14T05:52:14+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "sv"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T12:35:19+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "sv"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-14T05:51:59+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "sv"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T12:50:44+00:00",
diff --git a/translated_images/sv/catplot.e73fc35fdf96242b.webp b/translated_images/sv/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..15f9ac94e
Binary files /dev/null and b/translated_images/sv/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/sv/heatmap.bd98dce43b404c57.webp b/translated_images/sv/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..d63bbe825
Binary files /dev/null and b/translated_images/sv/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/sv/lineplot.f9034ba47b1e30ee.webp b/translated_images/sv/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..aa91bc76b
Binary files /dev/null and b/translated_images/sv/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/sv/relplot.a03837d8f0329cec.webp b/translated_images/sv/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..4e9a97d44
Binary files /dev/null and b/translated_images/sv/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/sw/.co-op-translator.json b/translated_images/sw/.co-op-translator.json
index dee07a8ee..79025ea0e 100644
--- a/translated_images/sw/.co-op-translator.json
+++ b/translated_images/sw/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "sw"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-14T04:35:59+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "sw"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T15:07:44+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "sw"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-14T04:36:13+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "sw"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T15:07:23+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "sw"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-14T04:36:22+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "sw"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T15:04:39+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "sw"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-14T04:36:05+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "sw"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T15:18:44+00:00",
diff --git a/translated_images/sw/catplot.e73fc35fdf96242b.webp b/translated_images/sw/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..f9126160a
Binary files /dev/null and b/translated_images/sw/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/sw/heatmap.bd98dce43b404c57.webp b/translated_images/sw/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..b25ef6092
Binary files /dev/null and b/translated_images/sw/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/sw/lineplot.f9034ba47b1e30ee.webp b/translated_images/sw/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..096070967
Binary files /dev/null and b/translated_images/sw/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/sw/relplot.a03837d8f0329cec.webp b/translated_images/sw/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..fb458bc79
Binary files /dev/null and b/translated_images/sw/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/ta/.co-op-translator.json b/translated_images/ta/.co-op-translator.json
index 36004ed3d..de83186d9 100644
--- a/translated_images/ta/.co-op-translator.json
+++ b/translated_images/ta/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "ta"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-14T00:25:16+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "ta"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T17:39:04+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "ta"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-14T00:25:27+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "ta"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T17:38:44+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "ta"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-14T00:25:33+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "ta"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T17:36:06+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "ta"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-14T00:25:20+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "ta"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T17:49:31+00:00",
diff --git a/translated_images/ta/catplot.e73fc35fdf96242b.webp b/translated_images/ta/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..4a7ab7b98
Binary files /dev/null and b/translated_images/ta/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/ta/heatmap.bd98dce43b404c57.webp b/translated_images/ta/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..9bc8066a4
Binary files /dev/null and b/translated_images/ta/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/ta/lineplot.f9034ba47b1e30ee.webp b/translated_images/ta/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..eba569ca6
Binary files /dev/null and b/translated_images/ta/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/ta/relplot.a03837d8f0329cec.webp b/translated_images/ta/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..2283df621
Binary files /dev/null and b/translated_images/ta/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/te/.co-op-translator.json b/translated_images/te/.co-op-translator.json
index 133f0a046..38cddd449 100644
--- a/translated_images/te/.co-op-translator.json
+++ b/translated_images/te/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "te"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-14T00:54:16+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "te"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T18:20:49+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "te"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-14T00:54:27+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "te"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T18:20:28+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "te"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-14T00:54:33+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "te"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T18:17:30+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "te"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-14T00:54:20+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "te"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T18:32:30+00:00",
diff --git a/translated_images/te/catplot.e73fc35fdf96242b.webp b/translated_images/te/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..26cdd7481
Binary files /dev/null and b/translated_images/te/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/te/heatmap.bd98dce43b404c57.webp b/translated_images/te/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..2b4938e5c
Binary files /dev/null and b/translated_images/te/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/te/lineplot.f9034ba47b1e30ee.webp b/translated_images/te/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..f50b700d8
Binary files /dev/null and b/translated_images/te/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/te/relplot.a03837d8f0329cec.webp b/translated_images/te/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..160b896b4
Binary files /dev/null and b/translated_images/te/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/th/.co-op-translator.json b/translated_images/th/.co-op-translator.json
index f1898b300..87b2c1e22 100644
--- a/translated_images/th/.co-op-translator.json
+++ b/translated_images/th/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "th"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-14T05:51:50+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "th"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T12:38:12+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "th"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-14T05:52:06+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "th"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T12:37:53+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "th"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-14T05:52:12+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "th"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T12:35:12+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "th"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-14T05:51:57+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "th"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T12:50:44+00:00",
diff --git a/translated_images/th/catplot.e73fc35fdf96242b.webp b/translated_images/th/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..6177e1f2c
Binary files /dev/null and b/translated_images/th/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/th/heatmap.bd98dce43b404c57.webp b/translated_images/th/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..4124a3551
Binary files /dev/null and b/translated_images/th/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/th/lineplot.f9034ba47b1e30ee.webp b/translated_images/th/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..6326e953b
Binary files /dev/null and b/translated_images/th/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/th/relplot.a03837d8f0329cec.webp b/translated_images/th/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..1ea5ca111
Binary files /dev/null and b/translated_images/th/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/tl/.co-op-translator.json b/translated_images/tl/.co-op-translator.json
index 8cfcfb220..42bfd025d 100644
--- a/translated_images/tl/.co-op-translator.json
+++ b/translated_images/tl/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "tl"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-14T06:59:20+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "tl"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T14:29:15+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "tl"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-14T06:59:38+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "tl"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T14:28:58+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "tl"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-14T06:59:43+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "tl"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T14:26:12+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "tl"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-14T06:59:28+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "tl"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T14:40:00+00:00",
diff --git a/translated_images/tl/catplot.e73fc35fdf96242b.webp b/translated_images/tl/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..2b721ce04
Binary files /dev/null and b/translated_images/tl/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/tl/heatmap.bd98dce43b404c57.webp b/translated_images/tl/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..b7246ceae
Binary files /dev/null and b/translated_images/tl/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/tl/lineplot.f9034ba47b1e30ee.webp b/translated_images/tl/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..3c30fe112
Binary files /dev/null and b/translated_images/tl/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/tl/relplot.a03837d8f0329cec.webp b/translated_images/tl/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..f77c5953d
Binary files /dev/null and b/translated_images/tl/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/tr/.co-op-translator.json b/translated_images/tr/.co-op-translator.json
index dacb3f5ca..9c23aac1e 100644
--- a/translated_images/tr/.co-op-translator.json
+++ b/translated_images/tr/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "tr"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-14T08:48:55+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "tr"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T12:02:31+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "tr"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-14T08:49:11+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "tr"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T12:02:09+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "tr"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-14T08:49:17+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "tr"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T11:59:34+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "tr"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-14T08:49:03+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "tr"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T12:12:41+00:00",
diff --git a/translated_images/tr/catplot.e73fc35fdf96242b.webp b/translated_images/tr/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..f383c9385
Binary files /dev/null and b/translated_images/tr/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/tr/heatmap.bd98dce43b404c57.webp b/translated_images/tr/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..1b6ef6cfb
Binary files /dev/null and b/translated_images/tr/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/tr/lineplot.f9034ba47b1e30ee.webp b/translated_images/tr/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..447c7da60
Binary files /dev/null and b/translated_images/tr/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/tr/relplot.a03837d8f0329cec.webp b/translated_images/tr/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..a2e5d6686
Binary files /dev/null and b/translated_images/tr/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/uk/.co-op-translator.json b/translated_images/uk/.co-op-translator.json
index 6250b680e..3da15fbab 100644
--- a/translated_images/uk/.co-op-translator.json
+++ b/translated_images/uk/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "uk"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-14T01:35:51+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "uk"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T17:03:09+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "uk"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-14T01:36:04+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "uk"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T17:02:49+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "uk"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-14T01:36:17+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "uk"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T17:00:01+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "uk"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-14T01:35:56+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "uk"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T17:14:44+00:00",
diff --git a/translated_images/uk/catplot.e73fc35fdf96242b.webp b/translated_images/uk/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..5123781a8
Binary files /dev/null and b/translated_images/uk/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/uk/heatmap.bd98dce43b404c57.webp b/translated_images/uk/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..87124c7a6
Binary files /dev/null and b/translated_images/uk/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/uk/lineplot.f9034ba47b1e30ee.webp b/translated_images/uk/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..506d13bc4
Binary files /dev/null and b/translated_images/uk/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/uk/relplot.a03837d8f0329cec.webp b/translated_images/uk/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..10d923ec4
Binary files /dev/null and b/translated_images/uk/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/ur/.co-op-translator.json b/translated_images/ur/.co-op-translator.json
index 2867eddc2..649a30b8e 100644
--- a/translated_images/ur/.co-op-translator.json
+++ b/translated_images/ur/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "ur"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-14T03:40:35+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "ur"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T08:59:43+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "ur"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-14T03:40:48+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "ur"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T08:59:24+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "ur"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-14T03:40:53+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "ur"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T08:56:31+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "ur"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-14T03:40:40+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "ur"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T09:11:56+00:00",
diff --git a/translated_images/ur/catplot.e73fc35fdf96242b.webp b/translated_images/ur/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..81bc72d48
Binary files /dev/null and b/translated_images/ur/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/ur/heatmap.bd98dce43b404c57.webp b/translated_images/ur/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..95aaf634b
Binary files /dev/null and b/translated_images/ur/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/ur/lineplot.f9034ba47b1e30ee.webp b/translated_images/ur/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..b47812bec
Binary files /dev/null and b/translated_images/ur/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/ur/relplot.a03837d8f0329cec.webp b/translated_images/ur/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..f92c2083e
Binary files /dev/null and b/translated_images/ur/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/vi/.co-op-translator.json b/translated_images/vi/.co-op-translator.json
index 3cf768fe1..e6ee95417 100644
--- a/translated_images/vi/.co-op-translator.json
+++ b/translated_images/vi/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "vi"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-14T04:05:48+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "vi"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T13:51:12+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "vi"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-14T04:06:04+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "vi"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T13:50:55+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "vi"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-14T04:06:10+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "vi"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T13:48:19+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "vi"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-14T04:05:54+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "vi"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T14:01:15+00:00",
diff --git a/translated_images/vi/catplot.e73fc35fdf96242b.webp b/translated_images/vi/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..9fdcd7ccb
Binary files /dev/null and b/translated_images/vi/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/vi/heatmap.bd98dce43b404c57.webp b/translated_images/vi/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..206e18419
Binary files /dev/null and b/translated_images/vi/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/vi/lineplot.f9034ba47b1e30ee.webp b/translated_images/vi/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..3c66a9db8
Binary files /dev/null and b/translated_images/vi/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/vi/relplot.a03837d8f0329cec.webp b/translated_images/vi/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..870879719
Binary files /dev/null and b/translated_images/vi/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/zh-CN/.co-op-translator.json b/translated_images/zh-CN/.co-op-translator.json
index 6771fd524..aec3de6e8 100644
--- a/translated_images/zh-CN/.co-op-translator.json
+++ b/translated_images/zh-CN/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "zh-CN"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-14T03:40:36+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "zh-CN"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T08:59:47+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "zh-CN"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-14T03:40:50+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "zh-CN"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T08:59:28+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "zh-CN"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-14T03:40:55+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "zh-CN"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T08:56:38+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "zh-CN"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-14T03:40:43+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "zh-CN"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T09:11:57+00:00",
diff --git a/translated_images/zh-CN/catplot.e73fc35fdf96242b.webp b/translated_images/zh-CN/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..47d80de01
Binary files /dev/null and b/translated_images/zh-CN/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/zh-CN/heatmap.bd98dce43b404c57.webp b/translated_images/zh-CN/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..5cc7ee42b
Binary files /dev/null and b/translated_images/zh-CN/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/zh-CN/lineplot.f9034ba47b1e30ee.webp b/translated_images/zh-CN/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..a3c477f5e
Binary files /dev/null and b/translated_images/zh-CN/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/zh-CN/relplot.a03837d8f0329cec.webp b/translated_images/zh-CN/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..a545deeac
Binary files /dev/null and b/translated_images/zh-CN/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/zh-HK/.co-op-translator.json b/translated_images/zh-HK/.co-op-translator.json
index fbf93fece..75b58fbde 100644
--- a/translated_images/zh-HK/.co-op-translator.json
+++ b/translated_images/zh-HK/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "zh-HK"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-14T08:11:25+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "zh-HK"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T09:35:34+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "zh-HK"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-14T08:11:41+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "zh-HK"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T09:35:16+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "zh-HK"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-14T08:11:47+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "zh-HK"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T09:32:45+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "zh-HK"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-14T08:11:33+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "zh-HK"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T09:47:39+00:00",
diff --git a/translated_images/zh-HK/catplot.e73fc35fdf96242b.webp b/translated_images/zh-HK/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..9bfbd217f
Binary files /dev/null and b/translated_images/zh-HK/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/zh-HK/heatmap.bd98dce43b404c57.webp b/translated_images/zh-HK/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..fd32f6312
Binary files /dev/null and b/translated_images/zh-HK/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/zh-HK/lineplot.f9034ba47b1e30ee.webp b/translated_images/zh-HK/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..53240c236
Binary files /dev/null and b/translated_images/zh-HK/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/zh-HK/relplot.a03837d8f0329cec.webp b/translated_images/zh-HK/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..126847632
Binary files /dev/null and b/translated_images/zh-HK/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/zh-MO/.co-op-translator.json b/translated_images/zh-MO/.co-op-translator.json
index a3fb15d8d..299bd44a2 100644
--- a/translated_images/zh-MO/.co-op-translator.json
+++ b/translated_images/zh-MO/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "zh-MO"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-14T08:11:23+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "zh-MO"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T09:35:31+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "zh-MO"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-14T08:11:39+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "zh-MO"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T09:35:11+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "zh-MO"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-14T08:11:45+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "zh-MO"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T09:32:38+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "zh-MO"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-14T08:11:29+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "zh-MO"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T09:47:38+00:00",
diff --git a/translated_images/zh-MO/catplot.e73fc35fdf96242b.webp b/translated_images/zh-MO/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..9bfbd217f
Binary files /dev/null and b/translated_images/zh-MO/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/zh-MO/heatmap.bd98dce43b404c57.webp b/translated_images/zh-MO/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..5d765e0ab
Binary files /dev/null and b/translated_images/zh-MO/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/zh-MO/lineplot.f9034ba47b1e30ee.webp b/translated_images/zh-MO/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..53240c236
Binary files /dev/null and b/translated_images/zh-MO/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/zh-MO/relplot.a03837d8f0329cec.webp b/translated_images/zh-MO/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..e9161e3eb
Binary files /dev/null and b/translated_images/zh-MO/relplot.a03837d8f0329cec.webp differ
diff --git a/translated_images/zh-TW/.co-op-translator.json b/translated_images/zh-TW/.co-op-translator.json
index f645527d8..efb268375 100644
--- a/translated_images/zh-TW/.co-op-translator.json
+++ b/translated_images/zh-TW/.co-op-translator.json
@@ -101,6 +101,12 @@
"source_file": "8-Reinforcement/2-Gym/images/cartpole.png",
"language_code": "zh-TW"
},
+ "catplot.e73fc35fdf96242b.webp": {
+ "original_hash": "90cd4782a2f9b40dec8218b224b29c1c",
+ "translation_date": "2026-07-14T08:11:26+00:00",
+ "source_file": "2-Regression/2-Data/images/catplot.png",
+ "language_code": "zh-TW"
+ },
"centroid.097fde836cf6c918.webp": {
"original_hash": "c8f866ed446563d8e59087f1bca1f97d",
"translation_date": "2026-01-16T09:35:37+00:00",
@@ -383,6 +389,12 @@
"source_file": "2-Regression/3-Linear/images/heatmap.png",
"language_code": "zh-TW"
},
+ "heatmap.bd98dce43b404c57.webp": {
+ "original_hash": "7f2f2fbd993018bc01346e1eb8ae692e",
+ "translation_date": "2026-07-14T08:11:44+00:00",
+ "source_file": "2-Regression/2-Data/images/heatmap.png",
+ "language_code": "zh-TW"
+ },
"hierarchical.bf59403aa43c8c47.webp": {
"original_hash": "50b9bc3298659c463ae76564ca645b12",
"translation_date": "2026-01-16T09:35:20+00:00",
@@ -473,6 +485,12 @@
"source_file": "2-Regression/3-Linear/images/linear.png",
"language_code": "zh-TW"
},
+ "lineplot.f9034ba47b1e30ee.webp": {
+ "original_hash": "b3959c0ed0f02f668009c76b95c4ebbb",
+ "translation_date": "2026-07-14T08:11:51+00:00",
+ "source_file": "2-Regression/2-Data/images/lineplot.png",
+ "language_code": "zh-TW"
+ },
"lobe.2fa0806408ef9923.webp": {
"original_hash": "e6ec71dbe350aef39135dbf88bc89163",
"translation_date": "2026-01-16T09:32:52+00:00",
@@ -743,6 +761,12 @@
"source_file": "2-Regression/3-Linear/images/recipes.png",
"language_code": "zh-TW"
},
+ "relplot.a03837d8f0329cec.webp": {
+ "original_hash": "4733544cb1c2e58e987087283e66b4a5",
+ "translation_date": "2026-07-14T08:11:36+00:00",
+ "source_file": "2-Regression/2-Data/images/relplot.png",
+ "language_code": "zh-TW"
+ },
"scaled.91897dfbaa26ca4a.webp": {
"original_hash": "789c70fafe6f6dd6e377a90b66e7d740",
"translation_date": "2026-01-16T09:47:40+00:00",
diff --git a/translated_images/zh-TW/catplot.e73fc35fdf96242b.webp b/translated_images/zh-TW/catplot.e73fc35fdf96242b.webp
new file mode 100644
index 000000000..9bfbd217f
Binary files /dev/null and b/translated_images/zh-TW/catplot.e73fc35fdf96242b.webp differ
diff --git a/translated_images/zh-TW/heatmap.bd98dce43b404c57.webp b/translated_images/zh-TW/heatmap.bd98dce43b404c57.webp
new file mode 100644
index 000000000..fd32f6312
Binary files /dev/null and b/translated_images/zh-TW/heatmap.bd98dce43b404c57.webp differ
diff --git a/translated_images/zh-TW/lineplot.f9034ba47b1e30ee.webp b/translated_images/zh-TW/lineplot.f9034ba47b1e30ee.webp
new file mode 100644
index 000000000..4417942c0
Binary files /dev/null and b/translated_images/zh-TW/lineplot.f9034ba47b1e30ee.webp differ
diff --git a/translated_images/zh-TW/relplot.a03837d8f0329cec.webp b/translated_images/zh-TW/relplot.a03837d8f0329cec.webp
new file mode 100644
index 000000000..126847632
Binary files /dev/null and b/translated_images/zh-TW/relplot.a03837d8f0329cec.webp differ
diff --git a/translations/ar/.co-op-translator.json b/translations/ar/.co-op-translator.json
index 6292c1d6c..01e95847b 100644
--- a/translations/ar/.co-op-translator.json
+++ b/translations/ar/.co-op-translator.json
@@ -24,8 +24,8 @@
"language_code": "ar"
},
"1-Introduction/3-fairness/README.md": {
- "original_hash": "9a6b702d1437c0467e3c5c28d763dac2",
- "translation_date": "2025-09-04T20:46:15+00:00",
+ "original_hash": "0f00d72169a0d37eecfd16d71e01700a",
+ "translation_date": "2026-07-13T23:57:32+00:00",
"source_file": "1-Introduction/3-fairness/README.md",
"language_code": "ar"
},
@@ -54,8 +54,8 @@
"language_code": "ar"
},
"2-Regression/1-Tools/README.md": {
- "original_hash": "fa81d226c71d5af7a2cade31c1c92b88",
- "translation_date": "2025-09-04T20:40:45+00:00",
+ "original_hash": "0b8635427b582d03ea4ab7089b93e505",
+ "translation_date": "2026-07-13T23:53:57+00:00",
"source_file": "2-Regression/1-Tools/README.md",
"language_code": "ar"
},
@@ -72,8 +72,8 @@
"language_code": "ar"
},
"2-Regression/2-Data/README.md": {
- "original_hash": "7c077988328ebfe33b24d07945f16eca",
- "translation_date": "2025-09-04T20:41:20+00:00",
+ "original_hash": "a58b2c4d16c6b122643391745ac15af6",
+ "translation_date": "2026-07-13T23:54:45+00:00",
"source_file": "2-Regression/2-Data/README.md",
"language_code": "ar"
},
@@ -89,6 +89,12 @@
"source_file": "2-Regression/2-Data/solution/Julia/README.md",
"language_code": "ar"
},
+ "2-Regression/2-Data/solution/notebook.ipynb": {
+ "original_hash": "96b95f8cf473481f2f371de8156f1571",
+ "translation_date": "2026-07-13T23:36:33+00:00",
+ "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
+ "language_code": "ar"
+ },
"2-Regression/3-Linear/README.md": {
"original_hash": "8b776e731c35b171d316d01d0e7b1369",
"translation_date": "2026-04-26T20:13:41+00:00",
@@ -457,7 +463,7 @@
},
"8-Reinforcement/1-QLearning/README.md": {
"original_hash": "911efd5e595089000cb3c16fce1beab8",
- "translation_date": "2025-09-04T20:51:29+00:00",
+ "translation_date": "2026-07-13T23:55:33+00:00",
"source_file": "8-Reinforcement/1-QLearning/README.md",
"language_code": "ar"
},
@@ -481,7 +487,7 @@
},
"8-Reinforcement/2-Gym/README.md": {
"original_hash": "107d5bb29da8a562e7ae72262d251a75",
- "translation_date": "2025-09-04T20:52:36+00:00",
+ "translation_date": "2026-07-13T23:56:48+00:00",
"source_file": "8-Reinforcement/2-Gym/README.md",
"language_code": "ar"
},
@@ -581,6 +587,19 @@
"source_file": "TROUBLESHOOTING.md",
"language_code": "ar"
},
+ "__translation_failures__": {
+ "sketchnotes/LICENSE.md": {
+ "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f",
+ "source_file": "sketchnotes/LICENSE.md",
+ "language_code": "ar",
+ "failure_date": "2026-07-13T23:53:20+00:00",
+ "status": "failed",
+ "error_type": "TranslationIncompleteError",
+ "error_message": "Markdown translation remained incomplete for chunk 1.1.1 of 'LICENSE.md', and the chunk could not be split further.",
+ "translator_version": "0.20.0",
+ "failure_policy_version": 1
+ }
+ },
"docs/_sidebar.md": {
"original_hash": "68dd06c685f6ce840e0acfa313352e7c",
"translation_date": "2025-08-29T13:28:21+00:00",
diff --git a/translations/ar/1-Introduction/3-fairness/README.md b/translations/ar/1-Introduction/3-fairness/README.md
index 22514b8df..bd287f112 100644
--- a/translations/ar/1-Introduction/3-fairness/README.md
+++ b/translations/ar/1-Introduction/3-fairness/README.md
@@ -1,161 +1,167 @@
-# بناء حلول التعلم الآلي باستخدام الذكاء الاصطناعي المسؤول
-
-
+# بناء حلول التعلم الآلي مع الذكاء الاصطناعي المسؤول
+
+
> رسم تخطيطي بواسطة [Tomomi Imura](https://www.twitter.com/girlie_mac)
## [اختبار ما قبل المحاضرة](https://ff-quizzes.netlify.app/en/ml/)
+
+## مقدمة
-## المقدمة
-
-في هذا المنهج، ستبدأ في اكتشاف كيف يؤثر التعلم الآلي على حياتنا اليومية. حتى الآن، تُستخدم الأنظمة والنماذج في اتخاذ قرارات يومية مثل تشخيصات الرعاية الصحية، الموافقة على القروض، أو اكتشاف الاحتيال. لذلك، من المهم أن تعمل هذه النماذج بشكل جيد لتقديم نتائج موثوقة. مثل أي تطبيق برمجي، قد تخفق أنظمة الذكاء الاصطناعي في تلبية التوقعات أو تؤدي إلى نتائج غير مرغوبة. لهذا السبب، من الضروري فهم وتفسير سلوك نموذج الذكاء الاصطناعي.
+في هذا المنهج الدراسي، ستبدأ باكتشاف كيف يمكن للتعلم الآلي أن يؤثر ويؤثر بالفعل على حياتنا اليومية. حتى الآن، الأنظمة والنماذج تشارك في مهام اتخاذ القرار اليومية، مثل تشخيص الرعاية الصحية، الموافقات على القروض أو كشف الاحتيال. لذا، من المهم أن تعمل هذه النماذج بشكل جيد لتقديم نتائج جديرة بالثقة. مثل أي تطبيق برمجي، من الممكن أن تفشل أنظمة الذكاء الاصطناعي في الوفاء بالتوقعات أو أن تسفر عن نتيجة غير مرغوبة. لهذا السبب من الضروري أن نكون قادرين على فهم وشرح سلوك نموذج الذكاء الاصطناعي.
-تخيل ما يمكن أن يحدث عندما تفتقر البيانات التي تستخدمها لبناء هذه النماذج إلى تمثيل ديموغرافي معين مثل العرق، الجنس، الرؤية السياسية، الدين، أو تمثيل غير متوازن لهذه الفئات. ماذا عن عندما يتم تفسير نتائج النموذج لتفضيل فئة معينة؟ ما هي العواقب على التطبيق؟ بالإضافة إلى ذلك، ماذا يحدث عندما يؤدي النموذج إلى نتائج ضارة تؤثر سلبًا على الناس؟ من المسؤول عن سلوك أنظمة الذكاء الاصطناعي؟ هذه بعض الأسئلة التي سنستكشفها في هذا المنهج.
+تخيل ما قد يحدث عندما تكون البيانات التي تستخدمها لبناء هذه النماذج تفتقر إلى بعض الفئات السكانية، مثل العرق، الجنس، الرأي السياسي، الدين، أو تمثل هذه الفئات بشكل غير متناسب. ماذا عن عندما يتم تفسير ناتج النموذج لصالح فئة سكانية معينة؟ ما هي العواقب على التطبيق؟ بالإضافة إلى ذلك، ماذا يحدث عندما يكون للنموذج نتيجة سلبية وتسبب ضرراً للناس؟ من هو المسؤول عن سلوك أنظمة الذكاء الاصطناعي؟ هذه بعض الأسئلة التي سنستكشفها في هذا المنهج.
-في هذه الدرس، ستتعلم:
+في هذا الدرس، ستقوم بـ:
-- أهمية الإنصاف في التعلم الآلي والأضرار المرتبطة به.
+- زيادة وعيك بأهمية العدالة في التعلم الآلي والأضرار المتعلقة بالعدالة.
- التعرف على ممارسة استكشاف الحالات الشاذة والسيناريوهات غير المعتادة لضمان الموثوقية والسلامة.
-- فهم الحاجة إلى تمكين الجميع من خلال تصميم أنظمة شاملة.
-- استكشاف أهمية حماية الخصوصية وأمن البيانات والأفراد.
-- إدراك أهمية النهج الشفاف لتفسير سلوك نماذج الذكاء الاصطناعي.
-- التفكير في كيفية أن تكون المساءلة ضرورية لبناء الثقة في أنظمة الذكاء الاصطناعي.
+- فهم الحاجة لتمكين الجميع من خلال تصميم أنظمة شاملة.
+- استكشاف مدى أهمية حماية خصوصية وأمان البيانات والأشخاص.
+- رؤية أهمية وجود نهج شفاف لشرح سلوك نماذج الذكاء الاصطناعي.
+- الانتباه لكيفية كون المساءلة ضرورية لبناء الثقة في أنظمة الذكاء الاصطناعي.
-## المتطلبات الأساسية
+## المتطلبات المسبقة
-كشرط مسبق، يرجى أخذ مسار التعلم "مبادئ الذكاء الاصطناعي المسؤول" ومشاهدة الفيديو أدناه حول الموضوع:
+كمتطلب مسبق، يرجى أخذ مسار التعلم "مبادئ الذكاء الاصطناعي المسؤول" ومشاهدة الفيديو أدناه حول الموضوع:
-تعرف على المزيد حول الذكاء الاصطناعي المسؤول من خلال متابعة هذا [مسار التعلم](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)
+تعرّف أكثر على الذكاء الاصطناعي المسؤول من خلال متابعة هذا [مسار التعلم](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)
-[](https://youtu.be/dnC8-uUZXSc "نهج مايكروسوفت تجاه الذكاء الاصطناعي المسؤول")
+[](https://youtu.be/dnC8-uUZXSc "نهج مايكروسوفت للذكاء الاصطناعي المسؤول")
-> 🎥 انقر على الصورة أعلاه لمشاهدة الفيديو: نهج مايكروسوفت تجاه الذكاء الاصطناعي المسؤول
+> 🎥 انقر على الصورة أعلاه لمشاهدة فيديو: نهج مايكروسوفت للذكاء الاصطناعي المسؤول
-## الإنصاف
+## العدالة
-يجب أن تعامل أنظمة الذكاء الاصطناعي الجميع بإنصاف وتتجنب التأثير على مجموعات متشابهة من الناس بطرق مختلفة. على سبيل المثال، عندما تقدم أنظمة الذكاء الاصطناعي إرشادات حول العلاج الطبي، طلبات القروض، أو التوظيف، يجب أن تقدم نفس التوصيات للجميع بناءً على أعراض مشابهة، ظروف مالية، أو مؤهلات مهنية. كل واحد منا كبشر يحمل تحيزات موروثة تؤثر على قراراتنا وأفعالنا. يمكن أن تكون هذه التحيزات واضحة في البيانات التي نستخدمها لتدريب أنظمة الذكاء الاصطناعي. قد يحدث هذا التلاعب أحيانًا دون قصد. غالبًا ما يكون من الصعب إدراك متى يتم إدخال التحيز في البيانات.
+يجب أن تعامل أنظمة الذكاء الاصطناعي الجميع بشكل عادل وتتجنب التأثير بطرق مختلفة على مجموعات مماثلة من الناس. على سبيل المثال، عندما تقدم أنظمة الذكاء الاصطناعي التوجيه بشأن العلاج الطبي، طلبات القروض، أو التوظيف، يجب أن تقدم نفس التوصيات للجميع الذين لديهم أعراض متشابهة، أو ظروف مالية مماثلة، أو مؤهلات مهنية متقاربة. كل واحد منا كإنسان يحمل تحيزات مكتسبة تؤثر على قراراته وأفعاله. قد تكون هذه التحيزات واضحة في البيانات التي نستخدمها لتدريب أنظمة الذكاء الاصطناعي. قد يحدث مثل هذا التلاعب أحيانًا دون قصد. غالبًا ما يصعب معرفة متى تقوم بإدخال تحيز في البيانات بوعي.
-**"عدم الإنصاف"** يشمل التأثيرات السلبية أو "الأضرار" لمجموعة من الناس، مثل تلك المحددة بناءً على العرق، الجنس، العمر، أو حالة الإعاقة. يمكن تصنيف الأضرار الرئيسية المتعلقة بالإنصاف على النحو التالي:
+**"الظلم"** يشمل التأثيرات السلبية، أو "الأضرار"، لمجموعة من الناس، مثل تلك المعرفة من حيث العرق، الجنس، العمر، أو حالة الإعاقة. يمكن تصنيف الأضرار الرئيسية المتعلقة بالعدالة على النحو التالي:
-- **التخصيص**، إذا تم تفضيل جنس أو عرق معين على آخر.
-- **جودة الخدمة**. إذا تم تدريب البيانات على سيناريو محدد ولكن الواقع أكثر تعقيدًا، يؤدي ذلك إلى خدمة ضعيفة الأداء. على سبيل المثال، موزع صابون يدوي لم يتمكن من التعرف على الأشخاص ذوي البشرة الداكنة. [مرجع](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
-- **التشهير**. انتقاد أو تصنيف شيء أو شخص بشكل غير عادل. على سبيل المثال، تقنية تصنيف الصور التي وصفت بشكل خاطئ صور الأشخاص ذوي البشرة الداكنة كغوريلات.
-- **التمثيل الزائد أو الناقص**. الفكرة هي أن مجموعة معينة لا تُرى في مهنة معينة، وأي خدمة أو وظيفة تستمر في تعزيز ذلك تساهم في الضرر.
-- **التنميط**. ربط مجموعة معينة بصفات محددة مسبقًا. على سبيل المثال، قد يكون هناك أخطاء في نظام ترجمة اللغة بين الإنجليزية والتركية بسبب الكلمات المرتبطة بالتحيزات الجندرية.
+- **التخصيص**، إذا تم تفضيل جنس أو إثنية معينة على أخرى.
+- **جودة الخدمة**. إذا قمت بتدريب البيانات على سيناريو محدد ولكن الواقع أكثر تعقيدًا بكثير، يؤدي ذلك إلى خدمة سيئة الأداء. على سبيل المثال، موزع صابون لا يبدو قادرًا على التعرف على الأشخاص ذوي البشرة الداكنة. [مرجع](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
+- **الشهرة السيئة**. انتقاد لامر أو شخص بشكل غير عادل ووضع ملصقات عليه. على سبيل المثال، تقنية تصنيف الصور بالخطأ صنفت صور الأشخاص ذوي البشرة الداكنة على أنهم غوريلا.
+- **التمثيل الزائد أو الناقص**. الفكرة هي أن مجموعة معينة ليست مرئية في مهنة محددة، وأي خدمة أو وظيفة تستمر في تعزيز ذلك تسهم في الإضرار.
+- **الصور النمطية**. ربط مجموعة معينة بصفات محددة مسبقًا. على سبيل المثال، نظام ترجمة بين الإنجليزية والتركية قد يحتوي على أخطاء بسبب كلمات مرتبطة بالصور النمطية للجنس.
-
+
> الترجمة إلى التركية
-
-> الترجمة إلى الإنجليزية
+
+> الترجمة مرة أخرى إلى الإنجليزية
-عند تصميم واختبار أنظمة الذكاء الاصطناعي، يجب أن نضمن أن الذكاء الاصطناعي عادل وغير مبرمج لاتخاذ قرارات متحيزة أو تمييزية، وهي قرارات يُحظر على البشر اتخاذها أيضًا. ضمان الإنصاف في الذكاء الاصطناعي والتعلم الآلي يظل تحديًا اجتماعيًا تقنيًا معقدًا.
+عند تصميم واختبار أنظمة الذكاء الاصطناعي، نحتاج إلى ضمان أن الذكاء الاصطناعي عادل وليس مبرمجًا لاتخاذ قرارات متحيزة أو تمييزية، والتي يُمنع البشر من اتخاذها أيضًا. ضمان العدالة في الذكاء الاصطناعي والتعلم الآلي لا يزال تحديًا اجتماعيًا تقنيًا معقدًا.
### الموثوقية والسلامة
-لبناء الثقة، يجب أن تكون أنظمة الذكاء الاصطناعي موثوقة وآمنة ومتسقة في الظروف العادية وغير المتوقعة. من المهم معرفة كيف ستتصرف أنظمة الذكاء الاصطناعي في مجموعة متنوعة من المواقف، خاصة عندما تكون هناك حالات شاذة. عند بناء حلول الذكاء الاصطناعي، يجب التركيز بشكل كبير على كيفية التعامل مع مجموعة واسعة من الظروف التي قد تواجهها هذه الحلول. على سبيل المثال، يجب أن تكون السيارة ذاتية القيادة تضع سلامة الناس كأولوية قصوى. نتيجة لذلك، يجب أن يأخذ الذكاء الاصطناعي الذي يشغل السيارة في الاعتبار جميع السيناريوهات الممكنة التي قد تواجهها السيارة مثل الليل، العواصف الرعدية أو الثلوج، الأطفال الذين يركضون عبر الشارع، الحيوانات الأليفة، أعمال الطرق، إلخ. مدى قدرة نظام الذكاء الاصطناعي على التعامل مع مجموعة واسعة من الظروف بشكل موثوق وآمن يعكس مستوى التوقعات التي أخذها عالم البيانات أو مطور الذكاء الاصطناعي في الاعتبار أثناء تصميم أو اختبار النظام.
+لبناء الثقة، يجب أن تكون أنظمة الذكاء الاصطناعي موثوقة، وآمنة، ومتسقة في الظروف العادية وغير المتوقعة. من المهم معرفة كيف ستتصرف أنظمة الذكاء الاصطناعي في مجموعة متنوعة من الحالات، خاصة عندما تكون حالات شاذة. عند بناء حلول الذكاء الاصطناعي، يجب أن يكون هناك تركيز كبير على كيفية التعامل مع مجموعة واسعة من الظروف التي قد تواجهها الحلول. على سبيل المثال، يجب على السيارة ذاتية القيادة أن تضع سلامة الناس كأولوية قصوى. ونتيجة لذلك، يحتاج الذكاء الاصطناعي المشغّل للسيارة إلى النظر في جميع السيناريوهات الممكنة التي قد تواجه السيارة مثل الليل، العواصف الرعدية أو العواصف الثلجية، الأطفال الذين يركضون عبر الشارع، الحيوانات الأليفة، أعمال الطرق، وما إلى ذلك. مدى جودة قدرة نظام الذكاء الاصطناعي على التعامل مع نطاق واسع من الظروف بشكل موثوق وآمن يعكس مستوى التوقع الذي اعتبره عالم البيانات أو مطور الذكاء الاصطناعي خلال تصميم أو اختبار النظام.
-> [🎥 انقر هنا لمشاهدة الفيديو: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
+> [🎥 انقر هنا لمشاهدة فيديو: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
### الشمولية
-يجب تصميم أنظمة الذكاء الاصطناعي لتشرك وتمكن الجميع. عند تصميم وتنفيذ أنظمة الذكاء الاصطناعي، يقوم علماء البيانات ومطورو الذكاء الاصطناعي بتحديد ومعالجة الحواجز المحتملة في النظام التي قد تستبعد الناس دون قصد. على سبيل المثال، هناك مليار شخص يعانون من إعاقات حول العالم. مع تقدم الذكاء الاصطناعي، يمكنهم الوصول إلى مجموعة واسعة من المعلومات والفرص بسهولة أكبر في حياتهم اليومية. من خلال معالجة الحواجز، يتم خلق فرص للابتكار وتطوير منتجات الذكاء الاصطناعي بتجارب أفضل تفيد الجميع.
+يجب تصميم أنظمة الذكاء الاصطناعي لتشمل وتمكن الجميع. عند تصميم وتنفيذ أنظمة الذكاء الاصطناعي، يقوم علماء البيانات ومطورو الذكاء الاصطناعي بتحديد ومعالجة الحواجز المحتملة في النظام التي قد تستبعد الناس دون قصد. على سبيل المثال، هناك مليار شخص من ذوي الإعاقة حول العالم. مع تقدم الذكاء الاصطناعي، يمكنهم الوصول إلى مجموعة واسعة من المعلومات والفرص بسهولة أكبر في حياتهم اليومية. من خلال معالجة الحواجز، يتم خلق فرص للابتكار وتطوير منتجات ذكاء اصطناعي تقدم تجارب أفضل تفيد الجميع.
-> [🎥 انقر هنا لمشاهدة الفيديو: الشمولية في الذكاء الاصطناعي](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
+> [🎥 انقر هنا لفيديو: الشمولية في الذكاء الاصطناعي](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
-### الأمن والخصوصية
+### الأمان والخصوصية
-يجب أن تكون أنظمة الذكاء الاصطناعي آمنة وتحترم خصوصية الناس. يقل ثقة الناس في الأنظمة التي تعرض خصوصيتهم أو معلوماتهم أو حياتهم للخطر. عند تدريب نماذج التعلم الآلي، نعتمد على البيانات للحصول على أفضل النتائج. أثناء ذلك، يجب مراعاة مصدر البيانات وسلامتها. على سبيل المثال، هل البيانات مقدمة من المستخدم أو متاحة للجمهور؟ بعد ذلك، أثناء العمل مع البيانات، من الضروري تطوير أنظمة الذكاء الاصطناعي التي يمكنها حماية المعلومات السرية ومقاومة الهجمات. مع انتشار الذكاء الاصطناعي، أصبحت حماية الخصوصية وتأمين المعلومات الشخصية والتجارية الهامة أكثر أهمية وتعقيدًا. تتطلب قضايا الخصوصية وأمن البيانات اهتمامًا خاصًا للذكاء الاصطناعي لأن الوصول إلى البيانات ضروري لأنظمة الذكاء الاصطناعي لتقديم توقعات وقرارات دقيقة ومستنيرة حول الناس.
+يجب أن تكون أنظمة الذكاء الاصطناعي آمنة وتحترم خصوصية الناس. يقل ثقة الناس في الأنظمة التي تعرض خصوصيتهم، معلوماتهم أو حياتهم للخطر. عند تدريب نماذج التعلم الآلي، نعتمد على البيانات لتحقيق أفضل النتائج. لذلك، يجب مراعاة أصل البيانات وسلامتها. على سبيل المثال، هل كانت البيانات مقدمة من المستخدم أم متاحة بشكل عام؟ بعد ذلك، أثناء العمل مع البيانات، من الضروري تطوير أنظمة ذكاء اصطناعي يمكنها حماية المعلومات السرية ومقاومة الهجمات. مع انتشار الذكاء الاصطناعي، أصبح حماية الخصوصية وتأمين المعلومات الشخصية والتجارية المهمة أكثر حرجًا وتعقيدًا. تتطلب مسائل الخصوصية وأمن البيانات اهتمامًا خاصًا مع الذكاء الاصطناعي لأن الوصول إلى البيانات ضروري لأنظمة الذكاء الاصطناعي لاتخاذ تنبؤات وقرارات دقيقة ومستنيرة حول الأشخاص.
-> [🎥 انقر هنا لمشاهدة الفيديو: الأمن في الذكاء الاصطناعي](https://www.microsoft.com/videoplayer/embed/RE4voJF)
+> [🎥 انقر هنا لفيديو: الأمان في الذكاء الاصطناعي](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- كصناعة، حققنا تقدمًا كبيرًا في الخصوصية والأمن، مدفوعًا بشكل كبير بتنظيمات مثل اللائحة العامة لحماية البيانات (GDPR).
-- ومع ذلك، مع أنظمة الذكاء الاصطناعي، يجب أن نعترف بالتوتر بين الحاجة إلى المزيد من البيانات الشخصية لجعل الأنظمة أكثر شخصية وفعالية - والخصوصية.
-- تمامًا كما حدث مع ولادة أجهزة الكمبيوتر المتصلة بالإنترنت، نشهد أيضًا زيادة كبيرة في عدد مشكلات الأمن المتعلقة بالذكاء الاصطناعي.
-- في الوقت نفسه، رأينا استخدام الذكاء الاصطناعي لتحسين الأمن. على سبيل المثال، معظم ماسحات الفيروسات الحديثة تعتمد اليوم على استدلالات الذكاء الاصطناعي.
-- يجب أن نضمن أن عمليات علم البيانات لدينا تتناغم بشكل متناغم مع أحدث ممارسات الخصوصية والأمن.
+- كب صناعة، حققنا تقدمًا كبيرًا في الخصوصية والأمان، مدفوعًا بشكل كبير بتنظيمات مثل اللائحة العامة لحماية البيانات (GDPR).
+- ومع أنظمة الذكاء الاصطناعي، يجب أن نعترف بالتوتر بين الحاجة إلى المزيد من البيانات الشخصية لجعل الأنظمة أكثر شخصية وفعالية – وبين الخصوصية.
+- تمامًا كما حدث مع ولادة الكمبيوترات المتصلة بالإنترنت، نشهد أيضًا زيادة كبيرة في عدد قضايا الأمان المتعلقة بالذكاء الاصطناعي.
+- في الوقت نفسه، رأينا استخدام الذكاء الاصطناعي لتحسين الأمان. كمثال، معظم برامج مضادات الفيروسات الحديثة تعتمد اليوم على تقنيات الذكاء الاصطناعي.
+- يجب علينا التأكد من أن عمليات علم البيانات لدينا تمزج بتناغم مع أحدث ممارسات الخصوصية والأمان.
-### الشفافية
-يجب أن تكون أنظمة الذكاء الاصطناعي مفهومة. جزء أساسي من الشفافية هو تفسير سلوك أنظمة الذكاء الاصطناعي ومكوناتها. تحسين فهم أنظمة الذكاء الاصطناعي يتطلب أن يفهم أصحاب المصلحة كيف ولماذا تعمل هذه الأنظمة بحيث يمكنهم تحديد مشكلات الأداء المحتملة، مخاوف السلامة والخصوصية، التحيزات، الممارسات الإقصائية، أو النتائج غير المقصودة. نعتقد أيضًا أن أولئك الذين يستخدمون أنظمة الذكاء الاصطناعي يجب أن يكونوا صادقين وصريحين بشأن متى ولماذا وكيف يختارون نشرها، بالإضافة إلى قيود الأنظمة التي يستخدمونها. على سبيل المثال، إذا استخدم بنك نظام ذكاء اصطناعي لدعم قرارات الإقراض للمستهلكين، فمن المهم فحص النتائج وفهم البيانات التي تؤثر على توصيات النظام. بدأت الحكومات في تنظيم الذكاء الاصطناعي عبر الصناعات، لذا يجب على علماء البيانات والمنظمات تفسير ما إذا كان نظام الذكاء الاصطناعي يفي بالمتطلبات التنظيمية، خاصة عندما تكون هناك نتيجة غير مرغوبة.
+### الشفافية
+يجب أن تكون أنظمة الذكاء الاصطناعي مفهومة. جزء حاسم من الشفافية هو شرح سلوك أنظمة الذكاء الاصطناعي ومكوناتها. تحسين فهم أنظمة الذكاء الاصطناعي يتطلب أن يفهم المعنيون كيف ولماذا تعمل حتى يتمكنوا من تحديد مشاكل الأداء المحتملة، مخاوف السلامة والخصوصية، التحيزات، الممارسات الاستبعادية، أو النتائج غير المقصودة. نؤمن أيضًا بأن من يستخدم أنظمة الذكاء الاصطناعي يجب أن يكون صادقًا ومنفتحًا حول متى ولماذا وكيف يختار نشرها. وكذلك حدود الأنظمة التي يستخدمونها. على سبيل المثال، إذا استخدم بنك نظام ذكاء اصطناعي لدعم قرارات إقراض المستهلكين، فمن المهم فحص النتائج وفهم البيانات التي تؤثر على توصيات النظام. بدأت الحكومات بوضع تنظيمات للذكاء الاصطناعي عبر الصناعات، لذلك يجب على علماء البيانات والمنظمات شرح ما إذا كان نظام الذكاء الاصطناعي يفي بالمتطلبات التنظيمية، خاصة عندما تكون هناك نتائج غير مرغوبة.
-> [🎥 انقر هنا لمشاهدة الفيديو: الشفافية في الذكاء الاصطناعي](https://www.microsoft.com/videoplayer/embed/RE4voJF)
+> [🎥 انقر هنا لفيديو: الشفافية في الذكاء الاصطناعي](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- نظرًا لأن أنظمة الذكاء الاصطناعي معقدة للغاية، من الصعب فهم كيفية عملها وتفسير النتائج.
+- بسبب تعقيد أنظمة الذكاء الاصطناعي، يصعب فهم كيف تعمل وتفسير النتائج.
- يؤثر هذا النقص في الفهم على طريقة إدارة هذه الأنظمة، تشغيلها، وتوثيقها.
-- يؤثر هذا النقص في الفهم بشكل أكثر أهمية على القرارات التي تُتخذ باستخدام النتائج التي تنتجها هذه الأنظمة.
+- والأهم من ذلك، يؤثر هذا النقص في الفهم على القرارات المتخذة باستخدام النتائج التي تنتجها هذه الأنظمة.
### المساءلة
+
+يجب أن يكون الأشخاص الذين يصممون وينشرون أنظمة الذكاء الاصطناعي مسؤولين عن كيفية عمل أنظمتهم. الحاجة إلى المساءلة تكون مهمة بشكل خاص مع التقنيات الحساسة مثل التعرف على الوجه. مؤخرًا، كان هناك طلب متزايد لتقنية التعرف على الوجه، خاصة من منظمات إنفاذ القانون التي ترى إمكانيات التقنية في استخدامات مثل العثور على الأطفال المفقودين. ومع ذلك، يمكن أن تستخدم هذه التكنولوجيا من قبل الحكومات لتعريض الحريات الأساسية لمواطنيها للخطر، مثل تمكين المراقبة المستمرة لأفراد محددين. لذا، يجب على علماء البيانات والمنظمات أن يكونوا مسؤولين عن كيفية تأثير نظام الذكاء الاصطناعي على الأفراد أو المجتمع.
-يجب أن يكون الأشخاص الذين يصممون وينشرون أنظمة الذكاء الاصطناعي مسؤولين عن كيفية عمل أنظمتهم. الحاجة إلى المساءلة مهمة بشكل خاص مع التقنيات الحساسة مثل التعرف على الوجه. مؤخرًا، كان هناك طلب متزايد على تقنية التعرف على الوجه، خاصة من المنظمات القانونية التي ترى إمكانات التكنولوجيا في استخدامات مثل العثور على الأطفال المفقودين. ومع ذلك، يمكن أن تُستخدم هذه التقنيات من قبل الحكومات لتعريض الحريات الأساسية لمواطنيها للخطر، على سبيل المثال، من خلال تمكين المراقبة المستمرة لأفراد معينين. لذلك، يجب أن يكون علماء البيانات والمنظمات مسؤولين عن كيفية تأثير نظام الذكاء الاصطناعي على الأفراد أو المجتمع.
-
-[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "نهج مايكروسوفت تجاه الذكاء الاصطناعي المسؤول")
+[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "نهج مايكروسوفت للذكاء الاصطناعي المسؤول")
-> 🎥 انقر على الصورة أعلاه لمشاهدة الفيديو: تحذيرات من المراقبة الجماعية عبر التعرف على الوجه
+> 🎥 انقر على الصورة أعلاه لمشاهدة فيديو: تحذيرات من المراقبة الجماعية عبر التعرف على الوجه
-في النهاية، أحد أكبر الأسئلة لجيلنا، كأول جيل يجلب الذكاء الاصطناعي إلى المجتمع، هو كيفية ضمان أن تظل أجهزة الكمبيوتر مسؤولة أمام الناس وكيفية ضمان أن يظل الأشخاص الذين يصممون أجهزة الكمبيوتر مسؤولين أمام الجميع.
+في النهاية، أحد أكبر الأسئلة لأجيالنا، كجيل أول يجلب الذكاء الاصطناعي للمجتمع، هو كيفية ضمان بقاء الحواسيب مسؤولة أمام الناس وكيفية ضمان بقاء الأشخاص الذين يصممون الحواسيب مسؤولين أمام الجميع.
## تقييم التأثير
-قبل تدريب نموذج التعلم الآلي، من المهم إجراء تقييم تأثير لفهم الغرض من نظام الذكاء الاصطناعي؛ ما هو الاستخدام المقصود؛ أين سيتم نشره؛ ومن سيتفاعل مع النظام. هذه التقييمات مفيدة للمراجعين أو المختبرين لتقييم النظام ومعرفة العوامل التي يجب أخذها في الاعتبار عند تحديد المخاطر المحتملة والعواقب المتوقعة.
+قبل تدريب نموذج التعلم الآلي، من المهم إجراء تقييم تأثير لفهم هدف نظام الذكاء الاصطناعي؛ ما هو الاستخدام المقصود؛ أين سيتم نشره؛ ومن سيتفاعل مع النظام. هذه المعلومات تفيد المراجعين أو المختبرين الذين يقيمون النظام لمعرفة العوامل التي يجب مراعاتها عند تحديد المخاطر المحتملة والعواقب المتوقعة.
+
+المجالات التالية تعتبر محورية عند إجراء تقييم التأثير:
-تشمل المجالات التي يجب التركيز عليها عند إجراء تقييم التأثير:
+* **التأثير السلبي على الأفراد**. الوعي بأي قيود أو متطلبات، استخدام غير مدعوم أو أي قيود معروفة تعيق أداء النظام ضروري لضمان عدم استخدام النظام بطريقة قد تسبب ضررًا للأفراد.
+* **متطلبات البيانات**. فهم كيف وأين سيستخدم النظام البيانات يمكن المراجعين من استكشاف متطلبات البيانات التي يجب الانتباه لها (مثل تنظيمات GDPR أو HIPAA). بالإضافة إلى ذلك، يجب فحص ما إذا كانت مصدر البيانات أو كميتها كافيين للتدريب.
+* **ملخص التأثير**. جمع قائمة بالأضرار المحتملة التي قد تنشأ من استخدام النظام. خلال دورة حياة التعلم الآلي، مراجعة ما إذا تم التخفيف من المشكلات المحددة أو التعامل معها.
+* **الأهداف التطبيقية** لكل من المبادئ الستة الأساسية. تقييم ما إذا تم تحقيق أهداف كل مبدأ وإذا كان هناك أي ثغرات.
-* **التأثير السلبي على الأفراد**. إدراك أي قيود أو متطلبات، استخدام غير مدعوم أو أي قيود معروفة تعيق أداء النظام أمر ضروري لضمان عدم استخدام النظام بطريقة قد تسبب ضررًا للأفراد.
-* **متطلبات البيانات**. فهم كيفية وأين سيستخدم النظام البيانات يمكّن المراجعين من استكشاف أي متطلبات بيانات يجب أن تكون على دراية بها (مثل لوائح GDPR أو HIPPA). بالإضافة إلى ذلك، فحص ما إذا كان مصدر أو كمية البيانات كافٍ للتدريب.
-* **ملخص التأثير**. جمع قائمة بالأضرار المحتملة التي قد تنشأ عن استخدام النظام. خلال دورة حياة التعلم الآلي، مراجعة ما إذا كانت المشكلات المحددة قد تم تخفيفها أو معالجتها.
-* **الأهداف القابلة للتطبيق** لكل من المبادئ الستة الأساسية. تقييم ما إذا كانت الأهداف من كل مبدأ قد تم تحقيقها وما إذا كانت هناك أي فجوات.
-## تصحيح الأخطاء باستخدام الذكاء الاصطناعي المسؤول
+## تصحيح الأخطاء مع الذكاء الاصطناعي المسؤول
-مثل تصحيح الأخطاء في تطبيق برمجي، فإن تصحيح الأخطاء في نظام الذكاء الاصطناعي هو عملية ضرورية لتحديد وحل المشكلات في النظام. هناك العديد من العوامل التي قد تؤثر على أداء النموذج بشكل غير متوقع أو غير مسؤول. معظم مقاييس أداء النموذج التقليدية هي تجميعات كمية لأداء النموذج، والتي لا تكفي لتحليل كيفية انتهاك النموذج لمبادئ الذكاء الاصطناعي المسؤول. علاوة على ذلك، يعد نموذج التعلم الآلي صندوقًا أسودًا يجعل من الصعب فهم ما يدفع نتائجه أو تقديم تفسير عندما يرتكب خطأ. لاحقًا في هذه الدورة، سنتعلم كيفية استخدام لوحة معلومات الذكاء الاصطناعي المسؤول للمساعدة في تصحيح أخطاء أنظمة الذكاء الاصطناعي. توفر لوحة المعلومات أداة شاملة لعلماء البيانات ومطوري الذكاء الاصطناعي للقيام بما يلي:
+مثل تصحيح الأخطاء في تطبيق برمجي، يعد تصحيح أخطاء نظام الذكاء الاصطناعي خطوة ضرورية لتحديد وحل المشكلات في النظام. هناك العديد من العوامل التي تؤثر على عدم أداء النموذج كما هو متوقع أو بشكل مسؤول. معظم مقاييس أداء النماذج التقليدية هي مقاييس كمية لأداء النموذج، والتي لا تكفي لتحليل كيف ينتهك نموذج مبادئ الذكاء الاصطناعي المسؤول. علاوة على ذلك، نموذج التعلم الآلي صندوق أسود يصعب فهم ما الذي يدفع ناتجه أو تقديم شرح عند حدوث خطأ. لاحقًا في هذا المقرر، سنتعلم كيفية استخدام لوحة تحكم الذكاء الاصطناعي المسؤول للمساعدة في تصحيح أنظمة الذكاء الاصطناعي. توفر اللوحة أداة شاملة لعلماء البيانات ومطوري الذكاء الاصطناعي لأداء:
-* **تحليل الأخطاء**. لتحديد توزيع الأخطاء في النموذج الذي يمكن أن يؤثر على إنصاف النظام أو موثوقيته.
-* **نظرة عامة على النموذج**. لاكتشاف أين توجد تفاوتات في أداء النموذج عبر مجموعات البيانات.
-* **تحليل البيانات**. لفهم توزيع البيانات وتحديد أي تحيز محتمل في البيانات قد يؤدي إلى مشكلات في الإنصاف، الشمولية، والموثوقية.
-* **تفسير النموذج**. لفهم ما يؤثر أو يؤثر على توقعات النموذج. يساعد ذلك في تفسير سلوك النموذج، وهو أمر مهم للشفافية والمساءلة.
+* **تحليل الأخطاء**. لتحديد توزيع الخطأ للنموذج الذي يمكن أن يؤثر على عدالة النظام أو موثوقيته.
+* **نظرة عامة على النموذج**. لاكتشاف أماكن التفاوت في أداء النموذج عبر مجموعات البيانات.
+* **تحليل البيانات**. لفهم توزيع البيانات وتحديد أي تحيز محتمل في البيانات قد يؤدي إلى مشاكل في العدالة، الشمولية، والموثوقية.
+* **قابلية تفسير النموذج**. لفهم ما يؤثر أو يؤثر في تنبؤات النموذج. هذا يساعد في شرح سلوك النموذج، وهو أمر مهم للشفافية والمساءلة.
-## 🚀 التحدي
-لمنع الأضرار من أن تُدخل في المقام الأول، يجب علينا:
+## 🚀 تحدي
+
+لمنع إدخال الأضرار من البداية، يجب علينا:
-- ضمان تنوع الخلفيات ووجهات النظر بين الأشخاص الذين يعملون على الأنظمة.
-- الاستثمار في مجموعات بيانات تعكس تنوع مجتمعنا.
-- تطوير طرق أفضل خلال دورة حياة التعلم الآلي للكشف عن الذكاء الاصطناعي المسؤول وتصحيحه عند حدوثه.
+- وجود تنوع في الخلفيات ووجهات النظر بين الأشخاص العاملين على الأنظمة
+- الاستثمار في مجموعات البيانات التي تعكس تنوع مجتمعنا
+- تطوير طرق أفضل طوال دورة حياة التعلم الآلي لاكتشاف وتصحيح المسؤولية في الذكاء الاصطناعي عندما تحدث
-فكر في سيناريوهات واقعية حيث يكون عدم موثوقية النموذج واضحًا في بناء النموذج واستخدامه. ما الذي يجب أن نأخذه في الاعتبار أيضًا؟
+فكر في سيناريوهات حياتية حقيقية يكون فيها عدم ثقة النموذج واضحًا في بناء النموذج واستخدامه. ماذا يجب أن نأخذ في الاعتبار أيضًا؟
## [اختبار ما بعد المحاضرة](https://ff-quizzes.netlify.app/en/ml/)
-## المراجعة والدراسة الذاتية
+## مراجعة ودراسة ذاتية
+
-في هذا الدرس، تعلمت بعض أساسيات مفاهيم الإنصاف وعدم الإنصاف في التعلم الآلي.
-شاهد هذه الورشة للتعمق أكثر في المواضيع:
+في هذا الدرس، تعلمت بعض أساسيات مفاهيم العدالة وعدم العدالة في التعلم الآلي.
+
+شاهد هذه الورشة للتعمق أكثر في المواضيع:
-- السعي نحو الذكاء الاصطناعي المسؤول: تحويل المبادئ إلى ممارسة بواسطة بسميرة نوشي، مهرنوش ساميكي وأميت شارما
+- في السعي نحو الذكاء الاصطناعي المسؤول: تطبيق المبادئ عملياً بقلم بيسميرا نوشي، مهرنوش سامي وأميت شارما
-[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: إطار عمل مفتوح المصدر لبناء ذكاء اصطناعي مسؤول")
+[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI")
-> 🎥 اضغط على الصورة أعلاه لمشاهدة الفيديو: RAI Toolbox: إطار عمل مفتوح المصدر لبناء ذكاء اصطناعي مسؤول بواسطة بسميرة نوشي، مهرنوش ساميكي، وأميت شارما
+> 🎥 انقر على الصورة أعلاه لمشاهدة فيديو: صندوق أدوات الذكاء الاصطناعي المسؤول: إطار عمل مفتوح المصدر لبناء ذكاء اصطناعي مسؤول من تأليف بيسميرا نوشي، مهرنوش سامي، وأميت شارما
-اقرأ أيضًا:
+اقرأ أيضاً:
-- مركز موارد الذكاء الاصطناعي المسؤول من مايكروسوفت: [موارد الذكاء الاصطناعي المسؤول – مايكروسوفت AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
+- مركز موارد الذكاء الاصطناعي المسؤول من مايكروسوفت: [موارد الذكاء الاصطناعي المسؤول – مايكروسوفت AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
-- مجموعة أبحاث FATE من مايكروسوفت: [FATE: العدالة، المساءلة، الشفافية، والأخلاقيات في الذكاء الاصطناعي - أبحاث مايكروسوفت](https://www.microsoft.com/research/theme/fate/)
+- مجموعة أبحاث FATE من مايكروسوفت: [FATE: العدالة، المساءلة، الشفافية، والأخلاقيات في الذكاء الاصطناعي - أبحاث مايكروسوفت](https://www.microsoft.com/research/theme/fate/)
-RAI Toolbox:
+صندوق أدوات الذكاء الاصطناعي المسؤول:
-- [مستودع GitHub الخاص بـ Responsible AI Toolbox](https://github.com/microsoft/responsible-ai-toolbox)
+- [مستودع صندوق أدوات الذكاء الاصطناعي المسؤول على GitHub](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)
+- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
## المهمة
-[استكشف RAI Toolbox](assignment.md)
+[استكشف صندوق أدوات الذكاء الاصطناعي المسؤول](assignment.md)
---
-**إخلاء المسؤولية**:
-تمت ترجمة هذه الوثيقة باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار الوثيقة الأصلية بلغتها الأصلية المصدر الموثوق. للحصول على معلومات حساسة أو هامة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة ناتجة عن استخدام هذه الترجمة.
\ No newline at end of file
+
+**تنويه**:
+تمت ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى للدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الرسمي والمعتمد. للمعلومات الهامة، يُنصح بالاستعانة بترجمة بشرية محترفة. نحن غير مسؤولين عن أي سوء فهم أو تفسير ناتج عن استخدام هذه الترجمة.
+
\ No newline at end of file
diff --git a/translations/ar/2-Regression/1-Tools/README.md b/translations/ar/2-Regression/1-Tools/README.md
index e58f26891..f6f8425cf 100644
--- a/translations/ar/2-Regression/1-Tools/README.md
+++ b/translations/ar/2-Regression/1-Tools/README.md
@@ -1,55 +1,55 @@
-# البدء مع Python و Scikit-learn لنماذج الانحدار
+# ابدأ مع بايثون و Scikit-learn لنماذج الانحدار
-
+
-> رسم توضيحي بواسطة [Tomomi Imura](https://www.twitter.com/girlie_mac)
+> ملاحظة مرسومة بواسطة [تومومي إيمورا](https://www.twitter.com/girlie_mac)
-## [اختبار ما قبل المحاضرة](https://ff-quizzes.netlify.app/en/ml/)
+## [اختبار قبل المحاضرة](https://ff-quizzes.netlify.app/en/ml/)
-> ### [هذه الدرس متوفر بلغة R!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
+> ### [هذه الدرسة متاحة بلغة R!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
-## المقدمة
+## مقدمة
-في هذه الدروس الأربعة، ستتعلم كيفية بناء نماذج الانحدار. سنناقش قريبًا ما هي هذه النماذج وما الغرض منها. ولكن قبل أن تبدأ بأي شيء، تأكد من أن لديك الأدوات المناسبة للبدء!
+في هذه الدروس الأربعة، ستكتشف كيفية بناء نماذج الانحدار. سنناقش قريبًا ما هي استخداماتها. ولكن قبل أن تفعل أي شيء، تأكد من أن لديك الأدوات المناسبة لبدء العملية!
في هذا الدرس، ستتعلم كيفية:
-- إعداد جهاز الكمبيوتر الخاص بك لمهام تعلم الآلة المحلية.
+- تهيئة حاسوبك لمهام التعلم الآلي المحلية.
- العمل مع دفاتر Jupyter.
- استخدام Scikit-learn، بما في ذلك التثبيت.
- استكشاف الانحدار الخطي من خلال تمرين عملي.
-## التثبيت والإعدادات
+## التثبيتات والإعدادات
-[](https://youtu.be/-DfeD2k2Kj0 "تعلم الآلة للمبتدئين - إعداد أدواتك لبناء نماذج تعلم الآلة")
+[](https://youtu.be/-DfeD2k2Kj0 "التعلم الآلي للمبتدئين - جهز أدواتك لبناء نماذج التعلم الآلي")
-> 🎥 انقر على الصورة أعلاه لمشاهدة فيديو قصير حول إعداد جهاز الكمبيوتر الخاص بك لتعلم الآلة.
+> 🎥 انقر على الصورة أعلاه لمشاهدة فيديو قصير يشرح كيفية تهيئة حاسوبك للتعلم الآلي.
-1. **تثبيت Python**. تأكد من أن [Python](https://www.python.org/downloads/) مثبت على جهاز الكمبيوتر الخاص بك. ستستخدم Python للعديد من مهام علوم البيانات وتعلم الآلة. معظم أنظمة الكمبيوتر تحتوي بالفعل على تثبيت Python. هناك أيضًا [حزم برمجية لـ Python](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) مفيدة لتسهيل الإعداد لبعض المستخدمين.
+1. **تثبيت بايثون**. تأكد من تثبيت [بايثون](https://www.python.org/downloads/) على حاسوبك. ستستخدم بايثون في العديد من مهام علم البيانات والتعلم الآلي. تتضمن معظم أنظمة الحاسوب تثبيتًا مسبقًا لبايثون. هناك أيضًا [حزم برمجة بايثون](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) مفيدة متاحة لتسهيل الإعداد لبعض المستخدمين.
- بعض استخدامات Python تتطلب إصدارًا معينًا من البرنامج، بينما تتطلب أخرى إصدارًا مختلفًا. لهذا السبب، من المفيد العمل داخل [بيئة افتراضية](https://docs.python.org/3/library/venv.html).
+ مع ذلك، تتطلب بعض استخدامات بايثون إصدارًا معينًا من البرنامج، في حين تحتاج أخرى إلى إصدار مختلف. لذلك، من المفيد العمل ضمن [بيئة افتراضية](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 في هذه الدورة، لذا قد ترغب في مراجعة كيفية [إعداد Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) لتطوير Python.
+2. **تثبيت Visual Studio Code**. تأكد من وجود Visual Studio Code مثبتًا على حاسوبك. اتبع هذه التعليمات لـ [تثبيت Visual Studio Code](https://code.visualstudio.com/) للإعداد الأساسي. ستستخدم بايثون في Visual Studio Code في هذا المساق، لذا قد ترغب في تعلُّم كيفية [تهيئة Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) لتطوير برامج بايثون.
- > تعرف على Python من خلال هذه المجموعة من [وحدات التعلم](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)
+ > تعرّف على بايثون بسهولة من خلال متابعة مجموعة [وحدات التعلم](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)
>
- > [](https://youtu.be/yyQM70vi7V8 "إعداد Python مع Visual Studio Code")
+ > [](https://youtu.be/yyQM70vi7V8 "إعداد بايثون مع Visual Studio Code")
>
- > 🎥 انقر على الصورة أعلاه لمشاهدة فيديو: استخدام Python داخل VS Code.
+ > 🎥 انقر على الصورة أعلاه لمشاهدة فيديو: استخدام بايثون في VS Code.
-3. **تثبيت Scikit-learn**، باتباع [هذه التعليمات](https://scikit-learn.org/stable/install.html). نظرًا لأنك تحتاج إلى التأكد من استخدام Python 3، يُوصى باستخدام بيئة افتراضية. لاحظ أنه إذا كنت تقوم بتثبيت هذه المكتبة على جهاز Mac M1، فهناك تعليمات خاصة على الصفحة المرتبطة أعلاه.
+3. **تثبيت Scikit-learn**، باتباع [هذه التعليمات](https://scikit-learn.org/stable/install.html). بما أنك تحتاج إلى التأكد من استخدام بايثون 3، يُوصى باستخدام بيئة افتراضية. لاحظ أنه إذا كنت تثبت هذه المكتبة على ماك M1، هناك تعليمات خاصة على الصفحة المذكورة أعلاه.
-4. **تثبيت Jupyter Notebook**. ستحتاج إلى [تثبيت حزمة Jupyter](https://pypi.org/project/jupyter/).
+1. **تثبيت Jupyter Notebook**. ستحتاج إلى [تثبيت حزمة Jupyter](https://pypi.org/project/jupyter/).
-## بيئة تأليف تعلم الآلة الخاصة بك
+## بيئة التأليف الخاصة بك في التعلم الآلي
-ستستخدم **دفاتر الملاحظات** لتطوير كود Python الخاص بك وإنشاء نماذج تعلم الآلة. هذا النوع من الملفات هو أداة شائعة لعلماء البيانات، ويمكن التعرف عليها من خلال لاحقتها أو امتدادها `.ipynb`.
+ستستخدم **الدفاتر** لتطوير كود بايثون الخاص بك وإنشاء نماذج التعلم الآلي. هذا النوع من الملفات أداة شائعة لدى علماء البيانات، ويمكن التعرف عليها من خلال اللاحقة أو الامتداد `.ipynb`.
-دفاتر الملاحظات هي بيئة تفاعلية تسمح للمطور بكتابة الكود وإضافة ملاحظات وكتابة توثيق حول الكود، وهو أمر مفيد جدًا للمشاريع التجريبية أو البحثية.
+الدفاتر هي بيئة تفاعلية تسمح للمطور بكتابة الكود وإضافة ملاحظات وكتابة توثيق حول الكود، وهو أمر مفيد جدًا للمشاريع التجريبية أو البحثية.
-[](https://youtu.be/7E-jC8FLA2E "تعلم الآلة للمبتدئين - إعداد دفاتر Jupyter للبدء في بناء نماذج الانحدار")
+[](https://youtu.be/7E-jC8FLA2E "التعلم الآلي للمبتدئين - إعداد دفاتر Jupyter لبدء بناء نماذج الانحدار")
-> 🎥 انقر على الصورة أعلاه لمشاهدة فيديو قصير حول هذا التمرين.
+> 🎥 انقر على الصورة أعلاه لمشاهدة فيديو قصير يشرح هذا التمرين.
### تمرين - العمل مع دفتر ملاحظات
@@ -57,62 +57,63 @@
1. افتح _notebook.ipynb_ في Visual Studio Code.
- سيتم تشغيل خادم Jupyter مع Python 3+. ستجد مناطق في دفتر الملاحظات يمكن تشغيلها، وهي أجزاء من الكود. يمكنك تشغيل كتلة الكود عن طريق تحديد الرمز الذي يشبه زر التشغيل.
+ ستبدأ خادم Jupyter مع تشغيل بايثون 3+. ستجد أجزاء من الدفتر يمكن `تشغيلها`، وهي قطع من الكود. يمكنك تشغيل قطعة الكود من خلال اختيار الرمز الذي يشبه زر التشغيل.
-2. حدد رمز `md` وأضف بعض النصوص باستخدام Markdown، والنص التالي **# مرحبًا بك في دفتر ملاحظاتك**.
+1. اختر رمز `md` وأضف بعض الماركدون، والنص التالي **# مرحبًا بك في دفترك**.
- بعد ذلك، أضف بعض كود Python.
+ ثم أضف بعض كود بايثون.
-3. اكتب **print('hello notebook')** في كتلة الكود.
-4. حدد السهم لتشغيل الكود.
+1. اكتب **print('hello notebook')** في كتلة الكود.
+1. اختر السهم لتشغيل الكود.
- يجب أن ترى العبارة المطبوعة:
+ سترى العبارة المطبوعة:
```output
hello notebook
```
-
+
-يمكنك دمج الكود مع التعليقات لتوثيق دفتر الملاحظات ذاتيًا.
+يمكنك دمج كودك مع التعليقات لتوثيق الدفتر بنفسك.
-✅ فكر للحظة في مدى اختلاف بيئة عمل مطور الويب عن بيئة عمل عالم البيانات.
+✅ فكر للحظة كيف تختلف بيئة عمل مطور الويب مقارنةً ببيئة عالم البيانات.
-## البدء مع Scikit-learn
+## ابدأ العمل مع Scikit-learn
-الآن بعد أن تم إعداد Python في بيئتك المحلية وأصبحت مرتاحًا مع دفاتر Jupyter، دعنا نتعرف على Scikit-learn (تُنطق `sci` كما في `science`). توفر Scikit-learn [واجهة برمجية شاملة](https://scikit-learn.org/stable/modules/classes.html#api-ref) لمساعدتك في تنفيذ مهام تعلم الآلة.
+الآن بعد أن تم إعداد بايثون في بيئتك المحلية وأصبحت مرتاحًا في استخدام دفاتر Jupyter، لنكتسب نفس الراحة مع Scikit-learn (تنطق `ساي` كما في `science`). يوفر Scikit-learn [واجهة برمجة تطبيقات واسعة](https://scikit-learn.org/stable/modules/classes.html#api-ref) لمساعدتك في أداء مهام التعلم الآلي.
-وفقًا لموقعهم [الرسمي](https://scikit-learn.org/stable/getting_started.html)، "Scikit-learn هي مكتبة مفتوحة المصدر لتعلم الآلة تدعم التعلم الموجه وغير الموجه. كما توفر أدوات متنوعة لتلائم النماذج، ومعالجة البيانات، واختيار النماذج وتقييمها، والعديد من الأدوات الأخرى."
+حسب موقعهم [الرسمي](https://scikit-learn.org/stable/getting_started.html)، "سكايكيت-ليرن هي مكتبة تعلم آلي مفتوحة المصدر تدعم التعلم الخاضع للإشراف وغير الخاضع للإشراف. كما توفر أدوات متنوعة لتركيب النماذج، ومعالجة البيانات، واختيار النماذج وتقييمها، والعديد من الأدوات الأخرى."
-في هذه الدورة، ستستخدم Scikit-learn وأدوات أخرى لبناء نماذج تعلم الآلة لتنفيذ ما نسميه مهام "تعلم الآلة التقليدي". لقد تجنبنا عمدًا الشبكات العصبية والتعلم العميق، حيث يتم تغطيتها بشكل أفضل في منهجنا القادم "الذكاء الاصطناعي للمبتدئين".
+في هذا المساق، ستستخدم Scikit-learn وأدوات أخرى لبناء نماذج تعلم آلي لأداء ما نسميه 'التعلم الآلي التقليدي'. لقد تجنبنا عمدًا الشبكات العصبية والتعلم العميق، إذ يتم تناولها بشكل أفضل في منهجية 'الذكاء الاصطناعي للمبتدئين' القادمة.
-تجعل Scikit-learn بناء النماذج وتقييمها للاستخدام أمرًا بسيطًا. وهي تركز بشكل أساسي على استخدام البيانات الرقمية وتحتوي على العديد من مجموعات البيانات الجاهزة للاستخدام كأدوات تعليمية. كما تتضمن نماذج مسبقة الصنع يمكن للطلاب تجربتها. دعنا نستكشف عملية تحميل البيانات المعبأة مسبقًا واستخدام نموذج تقدير أولي مع Scikit-learn باستخدام بعض البيانات الأساسية.
+يجعل Scikit-learn بناء النماذج وتقييمها سهلاً. يركز أساسًا على استخدام البيانات الرقمية ويحتوي على عدة مجموعات بيانات جاهزة للاستخدام كأدوات تعلم. كما يتضمن نماذج مبنية مسبقًا ليجربها الطلاب. لنستكشف أولاً عملية تحميل البيانات المعبأة واستخدام مقدّر مدمج أول نموذج تعلم آلي مع Scikit-learn باستخدام بيانات أساسية.
-## تمرين - أول دفتر ملاحظات لك مع Scikit-learn
+## تمرين - دفتر ملاحظاتك الأول مع Scikit-learn
-> هذا الدرس مستوحى من [مثال الانحدار الخطي](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) على موقع Scikit-learn.
+> استُلهم هذا الدليل من [مثال الانحدار الخطي](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) على موقع Scikit-learn.
-[](https://youtu.be/2xkXL5EUpS0 "تعلم الآلة للمبتدئين - مشروعك الأول للانحدار الخطي في Python")
-> 🎥 انقر على الصورة أعلاه لمشاهدة فيديو قصير حول هذا التمرين.
+[](https://youtu.be/2xkXL5EUpS0 "التعلم الآلي للمبتدئين - مشروعك الأول للانحدار الخطي في بايثون")
-في ملف _notebook.ipynb_ المرتبط بهذا الدرس، قم بمسح جميع الخلايا بالضغط على رمز "سلة المهملات".
+> 🎥 انقر على الصورة أعلاه لمشاهدة فيديو قصير يشرح هذا التمرين.
-في هذا القسم، ستعمل مع مجموعة بيانات صغيرة حول مرض السكري مضمنة في Scikit-learn لأغراض التعلم. تخيل أنك تريد اختبار علاج لمرضى السكري. قد تساعدك نماذج تعلم الآلة في تحديد المرضى الذين قد يستجيبون بشكل أفضل للعلاج بناءً على مجموعات من المتغيرات. حتى نموذج الانحدار الأساسي جدًا، عند تصوره، قد يظهر معلومات حول المتغيرات التي قد تساعدك في تنظيم تجاربك السريرية النظرية.
+في ملف _notebook.ipynb_ المرتبط بهذا الدرس، قم بمسح كل الخلايا بالضغط على رمز 'سلة المهملات'.
-✅ هناك العديد من أنواع طرق الانحدار، واختيارك يعتمد على الإجابة التي تبحث عنها. إذا كنت تريد التنبؤ بالطول المحتمل لشخص بناءً على عمره، ستستخدم الانحدار الخطي، حيث تبحث عن **قيمة رقمية**. إذا كنت مهتمًا بمعرفة ما إذا كان نوع معين من الطعام يجب اعتباره نباتيًا أم لا، فأنت تبحث عن **تعيين فئة** وبالتالي ستستخدم الانحدار اللوجستي. ستتعلم المزيد عن الانحدار اللوجستي لاحقًا. فكر قليلاً في بعض الأسئلة التي يمكنك طرحها على البيانات، وأي من هذه الطرق سيكون أكثر ملاءمة.
+في هذا القسم، ستعمل مع مجموعة بيانات صغيرة عن مرض السكري مدمجة في Scikit-learn لأغراض التعلم. تخيل أنك تريد اختبار علاج لمرضى السكري. قد تساعدك نماذج التعلم الآلي على تحديد أي المرضى قد يستجيبون بشكل أفضل للعلاج، بناءً على تركيبات من المتغيرات. حتى نموذج انحدار بسيط جدًا، عند تصوره، قد يظهر معلومات حول المتغيرات التي قد تساعدك في تنظيم تجاربك السريرية النظرية.
+
+✅ هناك العديد من أنواع طرق الانحدار، واختيارك يعتمد على الإجابة التي تبحث عنها. إذا أردت التنبؤ بالطول المحتمل لشخص في عمر معين، ستستخدم الانحدار الخطي، لأنك تبحث عن **قيمة رقمية**. إذا كنت مهتمًا باكتشاف ما إذا كان نوع من المأكولات يجب اعتباره نباتيًا أم لا، فأنت تبحث عن **تصنيف فئة** لذا ستستخدم الانحدار اللوجستي. ستتعلم المزيد عن الانحدار اللوجستي لاحقًا. فكر قليلًا في بعض الأسئلة التي يمكنك طرحها على البيانات، وأي من هذه الطرق سيكون الأنسب.
لنبدأ هذه المهمة.
### استيراد المكتبات
-لهذه المهمة، سنقوم باستيراد بعض المكتبات:
+لهذه المهمة سنستورد بعض المكتبات:
-- **matplotlib**. إنها أداة [رسم بياني](https://matplotlib.org/) مفيدة وسنستخدمها لإنشاء مخطط خطي.
-- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) هي مكتبة مفيدة للتعامل مع البيانات الرقمية في Python.
+- **matplotlib**. إنها أداة [رسم بياني مفيدة](https://matplotlib.org/) وسنستخدمها لإنشاء مخطط خطي.
+- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) مكتبة مفيدة للتعامل مع البيانات الرقمية في بايثون.
- **sklearn**. هذه هي مكتبة [Scikit-learn](https://scikit-learn.org/stable/user_guide.html).
-قم باستيراد بعض المكتبات لمساعدتك في المهام.
+استورد بعض المكتبات لمساعدتك في مهامك.
1. أضف الاستيرادات بكتابة الكود التالي:
@@ -122,26 +123,26 @@
from sklearn import datasets, linear_model, model_selection
```
- أعلاه، تقوم باستيراد `matplotlib` و `numpy` وتستورد `datasets` و `linear_model` و `model_selection` من `sklearn`. يتم استخدام `model_selection` لتقسيم البيانات إلى مجموعات تدريب واختبار.
+ في الأعلى تقوم باستيراد `matplotlib`، و `numpy`، كما تستورد `datasets`، و `linear_model` و `model_selection` من `sklearn`. يستخدم `model_selection` لتقسيم البيانات إلى مجموعات تدريب واختبار.
### مجموعة بيانات السكري
-مجموعة بيانات [السكري المدمجة](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) تحتوي على 442 عينة من البيانات حول مرض السكري، مع 10 متغيرات مميزة، بعضها يشمل:
+تتضمن مجموعة البيانات المدمجة [السكري](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) 442 عينة بيانات عن مرض السكري، مع 10 متغيرات ميزة، بعضها يشمل:
- العمر: العمر بالسنوات
-- مؤشر كتلة الجسم (bmi): مؤشر كتلة الجسم
-- ضغط الدم (bp): متوسط ضغط الدم
-- خلايا T (s1 tc): نوع من خلايا الدم البيضاء
+- مؤشر كتلة الجسم
+- ضغط الدم: متوسط ضغط الدم
+- s1 tc: خلايا تي (نوع من خلايا الدم البيضاء)
-✅ تتضمن هذه المجموعة مفهوم "الجنس" كمتغير مميز مهم للبحث حول مرض السكري. العديد من مجموعات البيانات الطبية تتضمن هذا النوع من التصنيف الثنائي. فكر قليلاً في كيفية تأثير مثل هذه التصنيفات على استبعاد أجزاء معينة من السكان من العلاجات.
+✅ تشمل هذه المجموعة مفهوم 'الجنس' كمتغير ميزة مهم في البحث حول السكري. تتضمن العديد من مجموعات البيانات الطبية هذا النوع من التصنيف الثنائي. فكر قليلاً في كيفية أن تصنيفات مثل هذه قد تستبعد أجزاء معينة من السكان من العلاجات.
الآن، قم بتحميل بيانات X و y.
-> 🎓 تذكر، هذا تعلم موجه، ونحتاج إلى هدف مسمى "y".
+> 🎓 تذكر، هذا تعلم مشرف، ونحتاج إلى هدف ‘y’ مسمى.
-في خلية كود جديدة، قم بتحميل مجموعة بيانات السكري عن طريق استدعاء `load_diabetes()`. الإعداد `return_X_y=True` يشير إلى أن `X` ستكون مصفوفة بيانات، و `y` ستكون الهدف الانحداري.
+في خلية كود جديدة، قم بتحميل مجموعة بيانات السكري باستدعاء `load_diabetes()`. يشير المعطى `return_X_y=True` إلى أن `X` ستكون مصفوفة بيانات، و `y` سيكون الهدف للانحدار.
-1. أضف بعض أوامر الطباعة لعرض شكل مصفوفة البيانات وأول عنصر فيها:
+1. أضف بعض أوامر الطباعة لعرض شكل مصفوفة البيانات وعنصرها الأول:
```python
X, y = datasets.load_diabetes(return_X_y=True)
@@ -149,9 +150,9 @@
print(X[0])
```
- ما تحصل عليه كاستجابة هو مجموعة. ما تقوم به هو تعيين القيمتين الأوليين للمجموعة إلى `X` و `y` على التوالي. تعرف على المزيد [حول المجموعات](https://wikipedia.org/wiki/Tuple).
+ ما تحصل عليه كرد هو زوج مرتب. ما تفعله هو تعيين أول قيمتين من الزوج إلى `X` و `y` على التوالي. تعرف أكثر [عن الأزواج المرتبة](https://wikipedia.org/wiki/Tuple).
- يمكنك رؤية أن هذه البيانات تحتوي على 442 عنصرًا مرتبة في مصفوفات تحتوي على 10 عناصر:
+ يمكنك رؤية أن هذه البيانات تحتوي على 442 عنصرًا مشكّلة في مصفوفات من 10 عناصر:
```text
(442, 10)
@@ -159,39 +160,39 @@
-0.04340085 -0.00259226 0.01990842 -0.01764613]
```
- ✅ فكر قليلاً في العلاقة بين البيانات والهدف الانحداري. الانحدار الخطي يتنبأ بالعلاقات بين الميزة X والمتغير الهدف y. هل يمكنك العثور على [الهدف](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) لمجموعة بيانات السكري في الوثائق؟ ما الذي تظهره هذه المجموعة، بالنظر إلى الهدف؟
+ ✅ فكّر قليلًا في العلاقة بين البيانات وهدف الانحدار. الانحدار الخطي يتنبأ بالعلاقات بين ميزة X والمتغير الهدف y. هل يمكنك العثور على [الهدف](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) لمجموعة بيانات السكري في التوثيق؟ ماذا تُظهر هذه المجموعة بناءً على الهدف؟
-2. بعد ذلك، اختر جزءًا من هذه المجموعة لرسمه عن طريق اختيار العمود الثالث من المجموعة. يمكنك القيام بذلك باستخدام المشغل `:` لاختيار جميع الصفوف، ثم اختيار العمود الثالث باستخدام الفهرس (2). يمكنك أيضًا إعادة تشكيل البيانات لتكون مصفوفة ثنائية الأبعاد - كما هو مطلوب للرسم - باستخدام `reshape(n_rows, n_columns)`. إذا كانت إحدى المعلمات -1، يتم حساب البعد المقابل تلقائيًا.
+2. بعد ذلك، اختر جزءًا من هذه المجموعة لرسمه باختيار العمود الثالث من المجموعة. يمكنك فعل ذلك باستخدام عامل `:` لاختيار كل الصفوف، ثم اختيار العمود الثالث باستخدام الفهرس (2). يمكنك أيضًا إعادة تشكيل البيانات لتكون مصفوفة ثنائية الأبعاد - حسب المطلوب للرسم - باستخدام `reshape(n_rows, n_columns)`. إذا كان أحد المعاملات -1، يتم حساب البعد الموافق تلقائيًا.
```python
X = X[:, 2]
X = X.reshape((-1,1))
```
- ✅ في أي وقت، قم بطباعة البيانات للتحقق من شكلها.
+ ✅ في أي وقت، اطبع البيانات للتحقق من شكلها.
-3. الآن بعد أن أصبحت البيانات جاهزة للرسم، يمكنك معرفة ما إذا كانت الآلة يمكن أن تساعد في تحديد تقسيم منطقي بين الأرقام في هذه المجموعة. للقيام بذلك، تحتاج إلى تقسيم كل من البيانات (X) والهدف (y) إلى مجموعات اختبار وتدريب. لدى Scikit-learn طريقة مباشرة للقيام بذلك؛ يمكنك تقسيم بيانات الاختبار عند نقطة معينة.
+3. الآن بعد أن أصبحت لديك بيانات جاهزة للرسم، يمكنك أن ترى ما إذا كان الماكينة يمكنها المساعدة في تحديد تقسيم منطقي بين الأرقام في هذه المجموعة. للقيام بذلك، تحتاج إلى تقسيم كل من البيانات (X) والهدف (y) إلى مجموعات اختبار وتدريب. لدى Scikit-learn طريقة مباشرة لذلك؛ يمكنك تقسيم بيانات الاختبار عند نقطة معينة.
```python
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33)
```
-4. الآن أنت جاهز لتدريب النموذج الخاص بك! قم بتحميل نموذج الانحدار الخطي وقم بتدريبه باستخدام مجموعات التدريب X و y باستخدام `model.fit()`:
+4. الآن أنت جاهز لتدريب نموذجك! قم بتحميل نموذج الانحدار الخطي وقم بتدريبه باستخدام مجموعات التدريب X و y الخاصة بك باستخدام `model.fit()`:
```python
model = linear_model.LinearRegression()
model.fit(X_train, y_train)
```
- ✅ `model.fit()` هي وظيفة ستراها في العديد من مكتبات تعلم الآلة مثل TensorFlow.
+ ✅ `model.fit()` هي دالة سترى وجودها في العديد من مكتبات التعلم الآلي مثل TensorFlow
-5. بعد ذلك، قم بإنشاء توقع باستخدام بيانات الاختبار، باستخدام وظيفة `predict()`. سيتم استخدام هذا لرسم الخط بين مجموعات البيانات.
+5. ثم، أنشئ توقعًا باستخدام بيانات الاختبار، باستخدام الدالة `predict()`. سيتم استخدام هذا لرسم الخط بين مجموعات البيانات.
```python
y_pred = model.predict(X_test)
```
-6. الآن حان الوقت لعرض البيانات في مخطط. Matplotlib هي أداة مفيدة جدًا لهذه المهمة. قم بإنشاء مخطط نقاط لجميع بيانات الاختبار X و y، واستخدم التوقع لرسم خط في المكان الأنسب بين مجموعات البيانات الخاصة بالنموذج.
+6. حان الوقت الآن لعرض البيانات في رسم بياني. Matplotlib أداة مفيدة جدًا لهذه المهمة. أنشئ مخطط نقاط لجميع بيانات X و y الاختبارية، واستخدم التوقع لرسم خط في المكان الأنسب، بين مجموعات بيانات النموذج.
```python
plt.scatter(X_test, y_test, color='black')
@@ -202,23 +203,24 @@
plt.show()
```
- 
-✅ فكر قليلاً فيما يحدث هنا. هناك خط مستقيم يمر عبر العديد من النقاط الصغيرة من البيانات، ولكن ماذا يفعل بالضبط؟ هل يمكنك أن ترى كيف يمكن استخدام هذا الخط للتنبؤ بمكان نقطة بيانات جديدة وغير مرئية بالنسبة لمحور y في الرسم البياني؟ حاول أن تصف الاستخدام العملي لهذا النموذج بالكلمات.
+ 
-تهانينا، لقد قمت ببناء أول نموذج انحدار خطي، وأنشأت تنبؤًا باستخدامه، وعرضته في رسم بياني!
----
-## 🚀التحدي
+ ✅ فكر قليلاً في ما يحدث هنا. هناك خط مستقيم يمر عبر العديد من نقاط البيانات الصغيرة، ولكنه ماذا يفعل بالضبط؟ هل ترى كيف ينبغي أن تتمكن من استخدام هذا الخط للتنبؤ بمكان تناسب نقطة بيانات جديدة غير مرئية بالنسبة لمحور y في الرسم البياني؟ حاول التعبير بالكلمات عن الاستخدام العملي لهذا النموذج.
-قم برسم متغير مختلف من هذه المجموعة البيانية. تلميح: قم بتعديل هذا السطر: `X = X[:,2]`. بالنظر إلى الهدف من هذه المجموعة البيانية، ماذا يمكنك اكتشافه عن تطور مرض السكري كمرض؟
+تهانينا، لقد أنشأت نموذج الانحدار الخطي الأول لك، وأنتجت توقعًا به، وعرضته في رسم بياني!
+
+---
+## 🚀تحدي
+قم برسم متغير مختلف من هذه المجموعة البيانية. تلميح: حرر هذا السطر: `X = X[:,2]`. بالنظر إلى هدف هذه البيانات، ماذا يمكنك اكتشافه عن تقدم مرض السكري كمرض؟
## [اختبار ما بعد المحاضرة](https://ff-quizzes.netlify.app/en/ml/)
-## المراجعة والدراسة الذاتية
+## مراجعة ودراسة ذاتية
-في هذا الدرس، عملت مع الانحدار الخطي البسيط، بدلاً من الانحدار الأحادي أو الانحدار المتعدد. اقرأ قليلاً عن الفروقات بين هذه الطرق، أو شاهد [هذا الفيديو](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef).
+في هذا الدرس، عملت مع الانحدار الخطي البسيط، بدلاً من الانحدار الخطي أحادي المتغير أو المتعدد. اقرأ قليلاً عن الفروقات بين هذه الأساليب، أو ألق نظرة على [هذا الفيديو](https://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) لتعميق فهمك.
+اقرأ المزيد عن مفهوم الانحدار وفكر في أنواع الأسئلة التي يمكن الإجابة عليها باستخدام هذه التقنية. خذ هذا [الدليل](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) لتعميق فهمك.
## الواجب
@@ -226,5 +228,7 @@
---
-**إخلاء المسؤولية**:
-تمت ترجمة هذا المستند باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حساسة أو هامة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة.
\ No newline at end of file
+
+**تنويه**:
+تمت ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى للدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الرسمي والمعتمد. للمعلومات الهامة، يُنصح بالاستعانة بترجمة بشرية محترفة. نحن غير مسؤولين عن أي سوء فهم أو تفسير ناتج عن استخدام هذه الترجمة.
+
\ No newline at end of file
diff --git a/translations/ar/2-Regression/2-Data/README.md b/translations/ar/2-Regression/2-Data/README.md
index d66d9b9ec..07e9b07fa 100644
--- a/translations/ar/2-Regression/2-Data/README.md
+++ b/translations/ar/2-Regression/2-Data/README.md
@@ -1,62 +1,62 @@
-# بناء نموذج انحدار باستخدام Scikit-learn: إعداد البيانات وتصويرها
+# بناء نموذج انحدار باستخدام Scikit-learn: تحضير البيانات وتصويرها
-
+
-مخطط تصوير البيانات بواسطة [Dasani Madipalli](https://twitter.com/dasani_decoded)
+المخطط البياني بواسطة [دساني ماديباللي](https://twitter.com/dasani_decoded)
-## [اختبار ما قبل المحاضرة](https://ff-quizzes.netlify.app/en/ml/)
+## [اختبار قبل المحاضرة](https://ff-quizzes.netlify.app/en/ml/)
-> ### [هذه الدرس متوفر بلغة R!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
+> ### [هذا الدرس متاح بلغة R!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
-## المقدمة
+## مقدمة
-الآن بعد أن أصبحت مجهزًا بالأدوات اللازمة لبدء بناء نماذج تعلم الآلة باستخدام Scikit-learn، أصبحت جاهزًا لبدء طرح الأسئلة على بياناتك. أثناء العمل مع البيانات وتطبيق حلول تعلم الآلة، من المهم جدًا فهم كيفية طرح السؤال الصحيح لفتح إمكانيات مجموعة البيانات الخاصة بك بشكل صحيح.
+الآن بعد أن أعددت الأدوات التي تحتاجها لتبدأ في بناء نماذج تعلم الآلة باستخدام Scikit-learn، أنت جاهز لبدء طرح الأسئلة على بياناتك. أثناء عملك مع البيانات وتطبيق حلول تعلم الآلة، من المهم جدًا أن تفهم كيفية طرح السؤال الصحيح لفتح إمكانيات مجموعة بياناتك بشكل صحيح.
في هذا الدرس، ستتعلم:
-- كيفية إعداد البيانات لبناء النماذج.
-- كيفية استخدام مكتبة Matplotlib لتصوير البيانات.
+- كيفية تحضير بياناتك لبناء النموذج.
+- كيفية استخدام Matplotlib لتصور البيانات.
+- كيفية استخدام Seaborn لتصور بيانات أكثر تعبيرًا.
-## طرح السؤال الصحيح على بياناتك
+## طرح السؤال الصحيح بخصوص بياناتك
-السؤال الذي تحتاج إلى الإجابة عليه سيحدد نوع خوارزميات تعلم الآلة التي ستستخدمها. كما أن جودة الإجابة التي تحصل عليها تعتمد بشكل كبير على طبيعة بياناتك.
+السؤال الذي تحتاج إلى إجابته سيحدد نوع خوارزميات تعلم الآلة التي ستستخدمها. وجودة الجواب الذي ستحصل عليه ستكون مرتبطة بشكل كبير بطبيعة بياناتك.
-ألقِ نظرة على [البيانات](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) المقدمة لهذا الدرس. يمكنك فتح ملف .csv هذا في VS Code. نظرة سريعة تظهر على الفور وجود فراغات ومزيج من النصوص والبيانات الرقمية. هناك أيضًا عمود غريب يسمى "Package" حيث تكون البيانات مزيجًا بين "sacks"، "bins" وقيم أخرى. البيانات، في الواقع، تبدو فوضوية بعض الشيء.
+ألق نظرة على [البيانات](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 "تعلم الآلة للمبتدئين - كيفية تحليل وتنظيف مجموعة بيانات")
+[](https://youtu.be/5qGjczWTrDQ "تعلم الآلة للمبتدئين - كيف تحلل وتنظف مجموعة بيانات")
-> 🎥 انقر على الصورة أعلاه لمشاهدة فيديو قصير حول إعداد البيانات لهذا الدرس.
+> 🎥 انقر على الصورة أعلاه لمشاهدة فيديو قصير يشرح كيفية تحضير البيانات لهذا الدرس.
-في الواقع، من غير الشائع أن تحصل على مجموعة بيانات جاهزة تمامًا للاستخدام لإنشاء نموذج تعلم آلي مباشرة. في هذا الدرس، ستتعلم كيفية إعداد مجموعة بيانات خام باستخدام مكتبات Python القياسية. ستتعلم أيضًا تقنيات مختلفة لتصوير البيانات.
+في الواقع، من غير الشائع أن تُمنح مجموعة بيانات جاهزة تمامًا للاستخدام لبناء نموذج تعلم آلة من الصندوق مباشرة. في هذا الدرس، ستتعلم كيف تحضر مجموعة بيانات خام باستخدام مكتبات بايثون القياسية. ستتعلم أيضًا تقنيات مختلفة لتصور البيانات.
-## دراسة حالة: "سوق القرع"
+## دراسة حالة: 'سوق القرع'
-في هذا المجلد، ستجد ملف .csv في مجلد الجذر `data` يسمى [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) والذي يحتوي على 1757 سطرًا من البيانات حول سوق القرع، مرتبة في مجموعات حسب المدينة. هذه بيانات خام مستخرجة من [تقارير السوق القياسية للمحاصيل الخاصة](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) التي توزعها وزارة الزراعة الأمريكية.
+في هذا المجلد، ستجد ملف .csv في مجلد الجذر `data` يسمى [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) والذي يحتوي على 1757 سطرًا من البيانات حول سوق القرع، مرتبة في مجموعات حسب المدينة. هذه بيانات خام مستخرجة من [تقارير أسواق الخضروات المتخصصة](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) التي توزعها وزارة الزراعة الأمريكية.
-### إعداد البيانات
+### تحضير البيانات
-هذه البيانات متاحة في المجال العام. يمكن تنزيلها في العديد من الملفات المنفصلة، لكل مدينة، من موقع وزارة الزراعة الأمريكية. لتجنب وجود العديد من الملفات المنفصلة، قمنا بدمج جميع بيانات المدن في جدول بيانات واحد، وبالتالي قمنا بالفعل _بإعداد_ البيانات قليلاً. الآن، دعونا نلقي نظرة أقرب على البيانات.
+هذه البيانات في الملكية العامة. يمكن تنزيلها في ملفات متعددة، لكل مدينة على حدة، من موقع وزارة الزراعة الأمريكية. لتجنب وجود ملفات متعددة كثيرة، قمنا بدمج جميع بيانات المدن في ملف جدول بيانات واحد، وبالتالي قمنا بالفعل _بتحضير_ البيانات قليلاً. بعد ذلك، دعونا نلقي نظرة أدق على البيانات.
-### بيانات القرع - استنتاجات أولية
+### بيانات القرع - استنتاجات مبكرة
-ماذا تلاحظ حول هذه البيانات؟ لقد رأيت بالفعل أن هناك مزيجًا من النصوص، الأرقام، الفراغات والقيم الغريبة التي تحتاج إلى فهمها.
-
-ما السؤال الذي يمكنك طرحه على هذه البيانات باستخدام تقنية الانحدار؟ ماذا عن "توقع سعر القرع للبيع خلال شهر معين". بالنظر مرة أخرى إلى البيانات، هناك بعض التغييرات التي تحتاج إلى إجرائها لإنشاء هيكل البيانات اللازم لهذه المهمة.
+ماذا تلاحظ عن هذه البيانات؟ لقد رأيت بالفعل وجود مزيج من النصوص، الأرقام، الفراغات والقيم الغريبة التي تحتاج إلى تفسير.
+ما السؤال الذي يمكنك طرحه على هذه البيانات باستخدام تقنية الانحدار؟ ماذا عن "توقع سعر قرعة للبيع خلال شهر معين". بالنظر مرة أخرى إلى البيانات، هناك بعض التعديلات التي تحتاج إلى إجرائها لإنشاء هيكل البيانات اللازم للمهمة.
## تمرين - تحليل بيانات القرع
-لنستخدم [Pandas](https://pandas.pydata.org/) (الاسم اختصار لـ `Python Data Analysis`) وهي أداة مفيدة جدًا لتشكيل البيانات، لتحليل وإعداد بيانات القرع.
+دعونا نستخدم [Pandas](https://pandas.pydata.org/)، (اسمها يعني `تحليل بيانات بايثون`) أداة مفيدة جدًا لتشكيل البيانات، لتحليل وتحضير بيانات القرع هذه.
-### أولاً، تحقق من التواريخ المفقودة
+### أولاً، تحقق من تواريخ مفقودة
ستحتاج أولاً إلى اتخاذ خطوات للتحقق من التواريخ المفقودة:
1. تحويل التواريخ إلى صيغة شهر (هذه تواريخ أمريكية، لذا الصيغة هي `MM/DD/YYYY`).
-2. استخراج الشهر إلى عمود جديد.
+2. استخراج الشهر في عمود جديد.
-افتح ملف _notebook.ipynb_ في Visual Studio Code واستورد جدول البيانات إلى إطار بيانات جديد باستخدام Pandas.
+افتح ملف _notebook.ipynb_ في Visual Studio Code واستورد جدول البيانات إلى إطار بيانات جديد من Pandas.
-1. استخدم وظيفة `head()` لعرض أول خمسة صفوف.
+1. استخدم الدالة `head()` لمشاهدة أول خمسة صفوف.
```python
import pandas as pd
@@ -64,30 +64,30 @@
pumpkins.head()
```
- ✅ ما الوظيفة التي ستستخدمها لعرض آخر خمسة صفوف؟
+ ✅ ما الدالة التي ستستخدمها لعرض آخر خمسة صفوف؟
-1. تحقق مما إذا كانت هناك بيانات مفقودة في إطار البيانات الحالي:
+1. تحقق إذا كان هناك بيانات مفقودة في إطار البيانات الحالي:
```python
pumpkins.isnull().sum()
```
- هناك بيانات مفقودة، ولكن ربما لن تكون مهمة للمهمة الحالية.
+ توجد بيانات مفقودة، لكن ربما لن تؤثر على المهمة الحالية.
-1. لجعل إطار البيانات الخاص بك أسهل للعمل معه، اختر فقط الأعمدة التي تحتاجها، باستخدام وظيفة `loc` التي تستخرج من إطار البيانات الأصلي مجموعة من الصفوف (الممررة كمعامل أول) والأعمدة (الممررة كمعامل ثاني). التعبير `:` في الحالة أدناه يعني "جميع الصفوف".
+1. لجعل إطار البيانات أسهل في العمل، اختر فقط الأعمدة التي تحتاجها، باستخدام دالة `loc` التي تستخرج من إطار البيانات الأصلي مجموعة من الصفوف (تمرر كمعامل أول) وأعمدة (تمرر كمعامل ثاني). التعبير `:` في الحالة أدناه يعني "كل الصفوف".
```python
columns_to_select = ['Package', 'Low Price', 'High Price', 'Date']
pumpkins = pumpkins.loc[:, columns_to_select]
```
-### ثانيًا، تحديد متوسط سعر القرع
+### ثانيًا، حدد متوسط سعر القرع
فكر في كيفية تحديد متوسط سعر القرع في شهر معين. ما الأعمدة التي ستختارها لهذه المهمة؟ تلميح: ستحتاج إلى 3 أعمدة.
-الحل: خذ متوسط أعمدة `Low Price` و`High Price` لملء عمود السعر الجديد، وحوّل عمود التاريخ ليظهر الشهر فقط. لحسن الحظ، وفقًا للتحقق أعلاه، لا توجد بيانات مفقودة للتواريخ أو الأسعار.
+الحل: احسب متوسط عمودي `Low Price` و `High Price` لملء عمود السعر الجديد، وحول عمود التاريخ ليظهر فقط الشهر. لحسن الحظ، وفقًا للتحقق أعلاه، لا توجد بيانات مفقودة للتواريخ أو الأسعار.
-1. لحساب المتوسط، أضف الكود التالي:
+1. لحساب المتوسط، أضف الشيفرة التالية:
```python
price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2
@@ -96,37 +96,37 @@
```
- ✅ لا تتردد في طباعة أي بيانات ترغب في التحقق منها باستخدام `print(month)`.
+ ✅ لا تتردد في طباعة أي بيانات تود التحقق منها باستخدام `print(month)`.
-2. الآن، انسخ البيانات المحولة إلى إطار بيانات جديد باستخدام Pandas:
+2. الآن، انسخ بياناتك المحولة إلى إطار بيانات Pandas جديد:
```python
new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price})
```
- طباعة إطار البيانات الخاص بك ستظهر لك مجموعة بيانات نظيفة ومرتبة يمكنك بناء نموذج الانحدار الجديد عليها.
+ طباعة إطار البيانات ستظهر لك مجموعة بيانات نظيفة ومرتبة يمكنك بناء نموذج الانحدار الجديد عليها.
-### لكن انتظر! هناك شيء غريب هنا
+### انتظر! هناك أمر غريب هنا
-إذا نظرت إلى عمود `Package`، يتم بيع القرع في تكوينات مختلفة. بعضها يُباع بمقاييس "1 1/9 bushel"، وبعضها بمقاييس "1/2 bushel"، وبعضها لكل قرع، وبعضها لكل رطل، وبعضها في صناديق كبيرة بأحجام مختلفة.
+إذا نظرت إلى عمود `Package`، فالقرع يُباع في تكوينات عديدة مختلفة. بعضه يُباع في قياسات '1 1/9 bushel' وبعضه '1/2 bushel'، بعضها بالقرعة، وبعضه بالرطل، وبعضه في صناديق كبيرة بأحجام مختلفة.
-> يبدو أن القرع صعب الوزن بشكل متسق
+> يبدو أن وزن القرع بشكل ثابت أمر صعب جدًا
-بالتعمق في البيانات الأصلية، من المثير للاهتمام أن أي شيء يحتوي على `Unit of Sale` يساوي "EACH" أو "PER BIN" يحتوي أيضًا على نوع `Package` لكل بوصة، لكل صندوق، أو "each". يبدو أن القرع صعب الوزن بشكل متسق، لذا دعونا نقوم بتصفيته عن طريق اختيار فقط القرع الذي يحتوي على النص "bushel" في عمود `Package`.
+بالتعمق في البيانات الأصلية، من المثير للاهتمام أن أي شيء في `Unit of Sale` يساوي 'EACH' أو 'PER BIN' أيضًا تتضمن نوع `Package` وحدة بالبوصة أو per bin أو 'كل واحدة'. يبدو أن وزن القرع أمر صعب جدًا لتوحيده، فلنقوم بتصفية القرع باختيار فقط القرع الذي يحتوي على كلمة 'bushel' في عمود `Package`.
-1. أضف فلتر في أعلى الملف، تحت استيراد ملف .csv الأولي:
+1. أضف فلترًا في أعلى الملف، تحت استيراد ملف .csv الأولي:
```python
pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]
```
- إذا قمت بطباعة البيانات الآن، يمكنك رؤية أنك تحصل فقط على حوالي 415 صفًا من البيانات التي تحتوي على القرع حسب البوشل.
+ إذا طبعت البيانات الآن، سترى أنك تأخذ فقط حوالي 415 صفًا من البيانات تحتوي على قرع بالحجم bushel.
-### لكن انتظر! هناك شيء آخر يجب القيام به
+### انتظر! هناك شيء آخر يجب فعله
-هل لاحظت أن كمية البوشل تختلف حسب الصف؟ تحتاج إلى تطبيع التسعير بحيث تظهر التسعير لكل بوشل، لذا قم ببعض العمليات الحسابية لتوحيدها.
+هل لاحظت أن كمية bushel تختلف من صف لآخر؟ تحتاج إلى توحيد التسعير بحيث يعرض السعر لكل bushel، فقم ببعض العمليات الحسابية لتوحيده.
-1. أضف هذه الأسطر بعد الكتلة التي تنشئ إطار بيانات new_pumpkins:
+1. أضف هذه الأسطر بعد الكتلة التي تنشئ إطار البيانات new_pumpkins:
```python
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9)
@@ -134,29 +134,29 @@
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2)
```
-✅ وفقًا لـ [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308)، يعتمد وزن البوشل على نوع المنتج، حيث إنه قياس حجم. "يُفترض أن يزن بوشل الطماطم، على سبيل المثال، 56 رطلاً... الأوراق والخضروات تشغل مساحة أكبر بوزن أقل، لذا فإن بوشل السبانخ يزن فقط 20 رطلاً." الأمر معقد جدًا! دعونا لا نزعج أنفسنا بتحويل البوشل إلى رطل، وبدلاً من ذلك نحدد السعر حسب البوشل. كل هذا الدراسة للبوشل من القرع، مع ذلك، تظهر مدى أهمية فهم طبيعة بياناتك!
+✅ وفقًا لموقع [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308)، وزن الـ bushel يعتمد على نوع المنتج، لأنّه قياس حجم. "bushel الطماطم، على سبيل المثال، من المفترض أن يزن 56 رطلاً... الأوراق والخضروات تأخذ مساحة أكثر مع وزن أقل، لذا bushel السبانخ يزن فقط 20 رطلاً." الأمر معقد للغاية! لن نزعج أنفسنا بتحويل bushel إلى رطل، وسنقوم بالتسعير حسب bushel. ومع ذلك، كل هذه الدراسة لأحواض القرع تظهر مدى أهمية فهم طبيعة بياناتك!
-الآن، يمكنك تحليل التسعير لكل وحدة بناءً على قياس البوشل الخاص بها. إذا قمت بطباعة البيانات مرة أخرى، يمكنك رؤية كيف تم توحيدها.
+الآن يمكنك تحليل التسعير لكل وحدة بالاعتماد على قياس الـ bushel الخاص بها. إذا طبعت البيانات مرة أخرى، سترى كيف تم توحيدها.
-✅ هل لاحظت أن القرع الذي يُباع بنصف بوشل غالي جدًا؟ هل يمكنك معرفة السبب؟ تلميح: القرع الصغير أغلى بكثير من الكبير، ربما لأن هناك الكثير منه لكل بوشل، بالنظر إلى المساحة غير المستخدمة التي يشغلها قرع كبير مجوف.
+✅ هل لاحظت أن القرع المباع بالنصف bushel مكلف للغاية؟ هل تستطيع معرفة السبب؟ تلميح: القرع الصغير أغلى بكثير من الكبير، ربما لأن هناك الكثير منه في كل bushel، بالنظر إلى المساحة غير المستخدمة التي يشغلها قرع كبير مجوف.
-## استراتيجيات التصوير
+## استراتيجيات التصور
-جزء من دور عالم البيانات هو توضيح جودة وطبيعة البيانات التي يعمل معها. للقيام بذلك، غالبًا ما يقومون بإنشاء تصورات مثيرة للاهتمام، مثل المخططات، الرسوم البيانية، والخرائط، التي تظهر جوانب مختلفة من البيانات. بهذه الطريقة، يمكنهم عرض العلاقات والفجوات بصريًا التي يصعب اكتشافها بطريقة أخرى.
+جزء من دور عالم البيانات هو إظهار جودة وطبيعة البيانات التي يعملون بها. لتحقيق ذلك، كثيرًا ما يقومون بإنشاء تصورات مثيرة للاهتمام، مثل المخططات والرسوم البيانية التي تظهر جوانب مختلفة من البيانات. بهذه الطريقة، يستطيعون بصريًا إظهار العلاقات والفجوات التي يصعُب اكتشافها بطرق أخرى.
-[](https://youtu.be/SbUkxH6IJo0 "تعلم الآلة للمبتدئين - كيفية تصوير البيانات باستخدام Matplotlib")
+[](https://youtu.be/SbUkxH6IJo0 "تعلم الآلة للمبتدئين - كيفية تصور البيانات باستخدام Matplotlib")
-> 🎥 انقر على الصورة أعلاه لمشاهدة فيديو قصير حول تصوير البيانات لهذا الدرس.
+> 🎥 انقر على الصورة أعلاه لمشاهدة فيديو قصير يشرح كيفية تصور البيانات لهذا الدرس.
-يمكن أن تساعد التصورات أيضًا في تحديد تقنية تعلم الآلة الأكثر ملاءمة للبيانات. على سبيل المثال، مخطط الانتشار الذي يبدو أنه يتبع خطًا يشير إلى أن البيانات مرشحة جيدة لتمرين الانحدار الخطي.
+تساعد التصويرات أيضًا في تحديد تقنية تعلم الآلة الأكثر ملاءمة للبيانات. على سبيل المثال، إذا بدا أن مخطط التبعثر يتبع خطًا، فهذا يشير إلى أن البيانات مناسبة لتمرين الانحدار الخطي.
-أحد مكتبات تصوير البيانات التي تعمل جيدًا في دفاتر Jupyter هو [Matplotlib](https://matplotlib.org/) (الذي رأيته أيضًا في الدرس السابق).
+مكتبة تصور البيانات التي تعمل بشكل جيد في دفاتر Jupyter هي [Matplotlib](https://matplotlib.org/) (وقد رأيتها أيضًا في الدرس السابق).
-> احصل على المزيد من الخبرة مع تصوير البيانات في [هذه الدروس](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott).
+> احصل على مزيد من الخبرة في تصور البيانات من خلال [هذه الدروس التعليمية](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott).
-## تمرين - التجربة مع Matplotlib
+## تمرين - تجربة Matplotlib
-حاول إنشاء بعض المخططات الأساسية لعرض إطار البيانات الجديد الذي أنشأته للتو. ماذا سيظهر مخطط خطي أساسي؟
+حاول إنشاء بعض المخططات الأساسية لعرض إطار البيانات الجديد الذي أنشأته للتو. ماذا سيُظهر مخطط خطي أساسي؟
1. استورد Matplotlib في أعلى الملف، تحت استيراد Pandas:
@@ -165,7 +165,7 @@
```
1. أعد تشغيل الدفتر بالكامل للتحديث.
-1. في أسفل الدفتر، أضف خلية لرسم البيانات كمربع:
+1. في أسفل الدفتر، أضف خلية لعرض البيانات في مخطط صندوقي:
```python
price = new_pumpkins.Price
@@ -174,44 +174,121 @@
plt.show()
```
- 
+ 
- هل هذا مخطط مفيد؟ هل هناك شيء يفاجئك؟
+ هل هذا مخطط مفيد؟ هل من شيء مفاجئ بشأنه؟
- إنه ليس مفيدًا بشكل خاص حيث إنه يعرض فقط بياناتك كنقاط منتشرة في شهر معين.
+ هو ليس مفيدًا للغاية كونه يعرض بياناتك كنقاط منتشرة في شهر معين.
-### اجعلها مفيدة
+### اجعله مفيدًا
-لجعل المخططات تعرض بيانات مفيدة، عادةً ما تحتاج إلى تجميع البيانات بطريقة ما. دعونا نحاول إنشاء مخطط حيث يظهر المحور y الأشهر وتظهر البيانات توزيع البيانات.
+لجعل المخططات تعرض بيانات مفيدة، عادةً تحتاج إلى تجميع البيانات بطريقة ما. لنحاول إنشاء مخطط يعرض المحور الرأسي فيه الشهور وتوضح البيانات التوزيع.
-1. أضف خلية لإنشاء مخطط شريطي مجمع:
+1. أضف خلية لإنشاء مخطط أعمدة مجمعة:
```python
new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar')
plt.ylabel("Pumpkin Price")
```
- 
+ 
+
+ هذا تصور بيانات أكثر فائدة! يبدو أنه يشير إلى أن أعلى سعر للقرع يكون في سبتمبر وأكتوبر. هل يتوافق هذا مع توقعاتك؟ لماذا أو لماذا لا؟
+
+## تمرين - تجربة Seaborn
+
+Matplotlib قوي، لكنه قد يتطلب الكثير من الشيفرة لإنتاج مخطط مصقول. [Seaborn](https://seaborn.pydata.org/) هي مكتبة مبنية _على_ Matplotlib مصممة لتصور البيانات الإحصائية. تعمل مباشرة مع إطارات بيانات Pandas، تطبق أنماطًا افتراضية جذابة، وتتيح إنشاء مخططات إعلامية بقليل من الشفرة. وبما أن Seaborn تُرجع كائنات Matplotlib، فما زلت تستطيع استخدام كل ما تعرفه عن Matplotlib لضبط النتائج بدقة.
+
+> إذا لم تكن قد ثبتت Seaborn، ثبتها باستخدام `pip install seaborn`.
+
+1. استورد Seaborn في أعلى الدفتر، تحت الاستيرادات الأخرى. عادة ما يُستورد بالاسم `sns`:
+
+ ```python
+ import seaborn as sns
+ ```
+
+### مخططات تبعثر لإظهار العلاقات
+
+جزء كبير من استكشاف البيانات قبل بناء نموذج هو البحث عن _علاقات_ بين المتغيرات. يُعد [مخطط التبعثر](https://en.wikipedia.org/wiki/Scatter_plot) من أفضل الأدوات لذلك: إذا بدت النقاط وكأنها تتبع خطًا، فقد تكون المتغيرات مرتبطة، وهذا مؤشر جيد على أن نموذج الانحدار الخطي قد يعمل.
+
+1. أعد إنشاء مخطط التبعثر الذي أظهر السعر مقابل الشهر كما في السابق، هذه المرة باستخدام [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) من Seaborn (مخطط العلاقات) الذي يعمل مباشرة مع أعمدة إطار البيانات:
+
+ ```python
+ sns.relplot(x="Price", y="Month", data=new_pumpkins)
+ ```
+
+ 
+
+ لاحظ كيف تمرر _أسماء الأعمدة_ وإطار البيانات، ويتولى Seaborn تسمية المحاور لك.
+
+2. يمكنك التبديل إلى مخطط خطي بتمرير `kind="line"`. Seaborn يرسم حتى شريطًا مظللًا يظهر نطاق الثقة حول الخط:
+
+ ```python
+ sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins)
+ ```
+
+ 
+
+ هذه البيانات معقدة إلى حد ما، لذلك مخطط الخط ليس الخيار الأكثر وضوحًا هنا — لكنه يظهر مدى سهولة تغيير أنواع المخططات في Seaborn.
+
+### مخططات الأعمدة لإظهار التوزيعات
+
+
+سابقًا قمت بتجميع البيانات يدويًا لإنشاء مخطط أعمدة باستخدام Matplotlib. يمكن لـ Seaborn's [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) (مخطط تصنيفي) إجراء التجميع والتجميع نيابةً عنك. بشكل افتراضي، يعرض `kind="bar"` متوسط كل فئة مع خط أسود يشير إلى فترة الثقة.
+
+1. أنشئ مخطط أعمدة لسعر المتوسط لكل شهر:
+
+ ```python
+ sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar")
+ ```
+
+ 
+
+ هذا يؤكد ما رأيته مع Matplotlib — حيث تصل الأسعار إلى ذروتها حول سبتمبر وأكتوبر — لكن Seaborn يعرض أيضًا مدى تباين السعر _داخل_ كل شهر.
+
+### مخططات الحرارة لإظهار الارتباطات
+
+تقارن مخططات التشتت متغيرين في كل مرة. عندما يكون لديك عدة أعمدة رقمية، يسمح لك [مخطط الحرارة](https://en.wikipedia.org/wiki/Heat_map) برؤية قوة العلاقة بين _كل_ زوج من الأعمدة مرة واحدة. هذه طريقة شائعة لاكتشاف الميزات الأكثر ارتباطًا قبل اختيار ما يتم تغذيته في نموذج (ويُستخدم نفس النوع من المخططات لاحقًا لعرض مصفوفات الالتباس في التصنيف).
+
+1. ابنِ مصفوفة ارتباط باستخدام Pandas، ثم ارسمها باستخدام [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html) من Seaborn. خيار `annot=True` يطبع قيم الارتباط على كل خلية:
+
+ ```python
+ correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()
+ sns.heatmap(correlations, annot=True, cmap="coolwarm")
+ ```
+
+ 
+
+ القيم القريبة من `1` (أو `-1`) تعني أن الأعمدة مرتبطة ارتباطًا _خطيًا_ قويًا. لاحظ كيف أن `السعر الأدنى` و`السعر الأعلى` مرتبطان تقريبًا بشكل مثالي. من ناحية أخرى، يظهر `الشهر` ارتباطًا خطيًا ضعيفًا فقط مع السعر — على الرغم من أن مخطط الأعمدة أعلاه كشف عن ذروة موسمية واضحة في سبتمبر وأكتوبر. هذه درس مهم: يقيس معامل الارتباط فقط العلاقات _الخطية_ المباشرة، لذلك قد يفوت الأنماط الموسمية أو غير الخطية. ✅ لماذا من المفيد النظر إلى كل من مخطط الحرارة *ومخططات* مثل مخطط الأعمدة قبل اتخاذ قرار بشأن الأعمدة التي يجب استخدامها؟
+
+### Matplotlib أم Seaborn؟
+
+كلا المكتبتين تستحقان المعرفة:
+
+- **Matplotlib** يمنحك تحكمًا دقيقًا في كل عنصر من عناصر المخطط وهو الأساس الذي تبني عليه تقريبًا كل مكتبة رسم بياني بلغة بايثون أخرى.
+- **Seaborn** يوفر وظائف عالية المستوى وإعدادات جذابة للمخططات الإحصائية، ويعمل مباشرة مع الإطارات البيانية، وغالبًا ما يكون أسرع لتحليل البيانات الاستكشافي.
- هذا تصوير بيانات أكثر فائدة! يبدو أنه يشير إلى أن أعلى سعر للقرع يحدث في سبتمبر وأكتوبر. هل يتوافق ذلك مع توقعاتك؟ لماذا أو لماذا لا؟
+سير العمل الشائع هو اللجوء إلى Seaborn لاستكشاف بياناتك بسرعة، ثم النزول إلى Matplotlib عند الحاجة إلى تخصيص التفاصيل.
---
## 🚀تحدي
-استكشف الأنواع المختلفة من التصورات التي تقدمها Matplotlib. ما الأنواع الأكثر ملاءمة لمشاكل الانحدار؟
+استكشف أنواع التمثيل البياني المختلفة التي تقدمها مكتبات Matplotlib و Seaborn. ما هي الأنواع الأنسب لمشكلات الانحدار؟
## [اختبار ما بعد المحاضرة](https://ff-quizzes.netlify.app/en/ml/)
-## المراجعة والدراسة الذاتية
+## مراجعة ودراسة ذاتية
-ألقِ نظرة على الطرق العديدة لتصوير البيانات. قم بعمل قائمة بالمكتبات المختلفة المتاحة ولاحظ أيها الأفضل لأنواع معينة من المهام، على سبيل المثال التصورات ثنائية الأبعاد مقابل التصورات ثلاثية الأبعاد. ماذا تكتشف؟
+ألقِ نظرة على الطرق الكثيرة لعرض البيانات. قم بعمل قائمة بالمكتبات المختلفة المتاحة واشرح أيها الأنسب لأنواع المهام المختلفة، مثلاً التمثيل ثنائي الأبعاد مقابل التمثيل ثلاثي الأبعاد. ماذا تكتشف؟
-## الواجب
+## المهمة
-[استكشاف التصوير](assignment.md)
+[استكشاف التمثيل البياني](assignment.md)
---
-**إخلاء المسؤولية**:
-تمت ترجمة هذه الوثيقة باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). على الرغم من أننا نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار الوثيقة الأصلية بلغتها الأصلية المصدر الموثوق. للحصول على معلومات حساسة أو هامة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة ناتجة عن استخدام هذه الترجمة.
\ No newline at end of file
+
+**تنويه**:
+تمت ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى للدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الرسمي والمعتمد. للمعلومات الهامة، يُنصح بالاستعانة بترجمة بشرية محترفة. نحن غير مسؤولين عن أي سوء فهم أو تفسير ناتج عن استخدام هذه الترجمة.
+
\ No newline at end of file
diff --git a/translations/ar/2-Regression/2-Data/solution/notebook.ipynb b/translations/ar/2-Regression/2-Data/solution/notebook.ipynb
index 83e96f965..fa1c87338 100644
--- a/translations/ar/2-Regression/2-Data/solution/notebook.ipynb
+++ b/translations/ar/2-Regression/2-Data/solution/notebook.ipynb
@@ -222,6 +222,7 @@
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
"pumpkins = pd.read_csv('../../data/US-pumpkins.csv')\n",
"\n",
"pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]\n",
@@ -385,18 +386,78 @@
"plt.ylabel(\"Pumpkin Price\")"
]
},
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## التمثيل البياني باستخدام Seaborn\n",
+ "\n",
+ "[Seaborn](https://seaborn.pydata.org/) مبنية على مكتبة Matplotlib وتعمل مباشرة مع إطارات البيانات، مما يجعل من السهل إنشاء مخططات إحصائية جذابة بسرعة مع قليل جدًا من الشيفرة.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### مخططات النثر لعرض العلاقات\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", kind=\"line\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### مخططات الأعمدة لعرض التوزيعات\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.catplot(x=\"Month\", y=\"Price\", data=new_pumpkins, kind=\"bar\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### خرائط الحرارة لعرض الترابطات\n"
+ ]
+ },
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
- "source": []
+ "source": [
+ "correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()\n",
+ "sns.heatmap(correlations, annot=True, cmap=\"coolwarm\")"
+ ]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "\n---\n\n**إخلاء المسؤولية**: \nتم ترجمة هذا المستند باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). على الرغم من أننا نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حساسة أو هامة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة.\n"
+ "---\n\n\n**تنويه**:\nتمت ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى للدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الرسمي والمعتمد. للمعلومات الهامة، يُنصح بالاستعانة بترجمة بشرية محترفة. نحن غير مسؤولين عن أي سوء فهم أو تفسير ناتج عن استخدام هذه الترجمة.\n\n"
]
}
],
@@ -426,13 +487,7 @@
"hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d"
}
},
- "orig_nbformat": 2,
- "coopTranslator": {
- "original_hash": "95726f0b8283628d5356a4f8eb8b4b76",
- "translation_date": "2025-08-29T14:58:11+00:00",
- "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
- "language_code": "ar"
- }
+ "orig_nbformat": 2
},
"nbformat": 4,
"nbformat_minor": 2
diff --git a/translations/ar/8-Reinforcement/1-QLearning/README.md b/translations/ar/8-Reinforcement/1-QLearning/README.md
index dc9b72350..3f45911cc 100644
--- a/translations/ar/8-Reinforcement/1-QLearning/README.md
+++ b/translations/ar/8-Reinforcement/1-QLearning/README.md
@@ -1,47 +1,47 @@
-# مقدمة إلى التعلم التعزيزي وخوارزمية Q-Learning
+# مقدمة في التعلم المعزز وتعلم كيو
-
-> رسم توضيحي بواسطة [Tomomi Imura](https://www.twitter.com/girlie_mac)
+
+> رسم تخطيطي بواسطة [تومومي إيمورا](https://www.twitter.com/girlie_mac)
-يتضمن التعلم التعزيزي ثلاثة مفاهيم مهمة: الوكيل، بعض الحالات، ومجموعة من الإجراءات لكل حالة. من خلال تنفيذ إجراء في حالة معينة، يحصل الوكيل على مكافأة. تخيل مرة أخرى لعبة الكمبيوتر "سوبر ماريو". أنت ماريو، وأنت في مستوى من اللعبة، تقف بجانب حافة منحدر. فوقك توجد عملة معدنية. كونك ماريو، في مستوى معين من اللعبة، في موقع معين... هذه هي حالتك. التحرك خطوة إلى اليمين (إجراء) سيجعلك تسقط من الحافة، وهذا سيمنحك درجة رقمية منخفضة. ومع ذلك، فإن الضغط على زر القفز سيجعلك تحصل على نقطة وستبقى على قيد الحياة. هذا نتيجة إيجابية ويجب أن تمنحك درجة رقمية إيجابية.
+يتضمن التعلم المعزز ثلاث مفاهيم مهمة: الوكيل، بعض الحالات، ومجموعة من الإجراءات لكل حالة. من خلال تنفيذ إجراء في حالة محددة، يحصل الوكيل على مكافأة. تخيل مجددًا لعبة الحاسوب سوبر ماريو. أنت ماريو، في مستوى لعبة، واقف بجانب حافة منحدر. فوقك عملة معدنية. أنت كماريو، في مستوى لعبة، في موقع معين ... هذا هو حالتك. التحرك خطوة واحدة إلى اليمين (إجراء) سيجعلك تسقط من الحافة، وهذا سيعطيك درجة رقمية منخفضة. ولكن، الضغط على زر القفز سيمكنك من تسجيل نقطة وستبقى على قيد الحياة. هذه نتيجة إيجابية ويجب أن تمنحك درجة رقمية إيجابية.
-باستخدام التعلم التعزيزي والمحاكاة (اللعبة)، يمكنك تعلم كيفية لعب اللعبة لتحقيق أقصى قدر من المكافآت، وهي البقاء على قيد الحياة وتسجيل أكبر عدد ممكن من النقاط.
+باستخدام التعلم المعزز ومحاكي (اللعبة)، يمكنك تعلم كيفية لعب اللعبة لتعظيم المكافأة وهي البقاء على قيد الحياة وتسجيل أكبر عدد ممكن من النقاط.
-[](https://www.youtube.com/watch?v=lDq_en8RNOo)
+[](https://www.youtube.com/watch?v=lDq_en8RNOo)
-> 🎥 انقر على الصورة أعلاه للاستماع إلى ديمتري وهو يناقش التعلم التعزيزي
+> 🎥 اضغط على الصورة أعلاه للاستماع إلى دميتري وهو يناقش التعلم المعزز
-## [اختبار ما قبل المحاضرة](https://ff-quizzes.netlify.app/en/ml/)
+## [اختبار قبلي للمحاضرة](https://ff-quizzes.netlify.app/en/ml/)
-## المتطلبات والإعداد
+## المتطلبات المسبقة والإعداد
-في هذا الدرس، سنجرب بعض الأكواد بلغة Python. يجب أن تكون قادرًا على تشغيل كود Jupyter Notebook من هذا الدرس، سواء على جهاز الكمبيوتر الخاص بك أو في السحابة.
+في هذا الدرس، سنجرب بعض الكود في بايثون. يجب أن تكون قادرًا على تشغيل كود مفكرة Jupyter لهذا الدرس، إما على جهازك الحاسوبي أو في مكان ما على السحابة.
-يمكنك فتح [دفتر الدرس](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) ومتابعة هذا الدرس للبناء عليه.
+يمكنك فتح [مفكرة الدرس](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)، الذي يُستخدم في كود الدفتر. أضفه إلى نفس الدليل الذي يحتوي على الدفتر.
+> **ملاحظة:** إذا كنت تفتح هذا الكود من السحابة، تحتاج أيضًا إلى جلب ملف [`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). سنستخدم **التعلم التعزيزي** لتمكين بيتر من استكشاف بيئته، جمع التفاح اللذيذ وتجنب مواجهة الذئب.
+في هذا الدرس، سنستكشف عالم **[بيتر والذئب](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)**، مستوحى من قصة موسيقية للمؤلف الروسي، [سيرجي بروكوفييف](https://en.wikipedia.org/wiki/Sergei_Prokofiev). سنستخدم **التعلم المعزز** للسماح لبيتر باستكشاف بيئته، وجمع التفاح الشهي وتجنب مواجهة الذئب.
-**التعلم التعزيزي** (RL) هو تقنية تعلم تتيح لنا تعلم السلوك الأمثل لوكيل **agent** في بيئة **environment** معينة من خلال إجراء العديد من التجارب. يجب أن يكون للوكيل في هذه البيئة هدف **goal** محدد بواسطة دالة مكافأة **reward function**.
+**التعلم المعزز** (RL) هو تقنية تعلم تسمح لنا بتعلم سلوك مثالي لـ **وكيل** في بعض **البيئة** عبر إجراء العديد من التجارب. يجب أن يكون للوكيل في هذه البيئة **هدف**، يُعرّف بواسطة **دالة المكافأة**.
## البيئة
-للتبسيط، دعونا نعتبر أن عالم بيتر هو لوحة مربعة بحجم `width` x `height`، مثل هذه:
+لتبسيط الأمر، دعونا نعتبر عالم بيتر لوحة مربعة بحجم `العرض` × `الارتفاع`، مثل هذه:
-
+
-كل خلية في هذه اللوحة يمكن أن تكون:
+كل خلية في هذه اللوحة يمكن أن تكون إما:
-* **أرض**، يمكن لبيتر والمخلوقات الأخرى المشي عليها.
-* **ماء**، لا يمكن المشي عليه بالطبع.
-* **شجرة** أو **عشب**، مكان يمكن الراحة فيه.
-* **تفاحة**، تمثل شيئًا يود بيتر العثور عليه لإطعام نفسه.
-* **ذئب**، وهو خطير ويجب تجنبه.
+* **أرضًا** يمكن لبيتر والكائنات الأخرى المشي عليها.
+* **ماء** لا يمكنك بالطبع المشي عليه.
+* **شجرة** أو **عشبًا**، مكان للاسترخاء.
+* **تفاحة** تمثل شيئًا سيكون بيتر سعيدًا بالعثور عليه ليطعم نفسه.
+* **ذئبًا**، يمثل خطرًا ويجب تجنبه.
-يوجد وحدة Python منفصلة، [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py)، تحتوي على الكود للعمل مع هذه البيئة. نظرًا لأن هذا الكود ليس مهمًا لفهم مفاهيمنا، سنقوم باستيراد الوحدة واستخدامها لإنشاء اللوحة النموذجية (كتلة الكود 1):
+هناك وحدة بايثون منفصلة، [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py)، تحتوي على الكود للعمل مع هذه البيئة. نظرًا لأن هذا الكود غير مهم لفهم مفاهيمنا، سنستورد الوحدة ونستخدمها لإنشاء اللوحة التجريبية (كتلة الكود 1):
```python
from rlboard import *
@@ -52,63 +52,63 @@ m.randomize(seed=13)
m.plot()
```
-يجب أن يطبع هذا الكود صورة للبيئة مشابهة للصورة أعلاه.
+ينبغي أن يطبع هذا الكود صورة للبيئة مشابهة للتي أعلاه.
## الإجراءات والسياسة
-في مثالنا، سيكون هدف بيتر هو العثور على تفاحة، مع تجنب الذئب والعوائق الأخرى. للقيام بذلك، يمكنه ببساطة التجول حتى يجد تفاحة.
+في مثالنا، هدف بيتر هو أن يتمكن من العثور على تفاحة، مع تجنب الذئب والعقبات الأخرى. لتحقيق ذلك، يمكنه المشي حوله حتى يجد التفاحة.
لذلك، في أي موضع، يمكنه الاختيار بين أحد الإجراءات التالية: أعلى، أسفل، يسار، ويمين.
-سنعرّف هذه الإجراءات كقاموس، ونربطها بأزواج من التغيرات المنسقة المقابلة. على سبيل المثال، التحرك إلى اليمين (`R`) سيقابل الزوج `(1,0)`. (كتلة الكود 2):
+سنعرف هذه الإجراءات كقاموس، ونربطها بأزواج من التغييرات في الإحداثيات المقابلة. على سبيل المثال، التحرك يمينًا (`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).
+دعونا أولاً نحل مشكلتنا بتطبيق استراتيجية السير العشوائي. مع السير العشوائي، سنختار الإجراء التالي عشوائيًا من الإجراءات المسموح بها، حتى نصل إلى التفاحة (كتلة الكود 3).
-1. قم بتنفيذ المشي العشوائي باستخدام الكود أدناه:
+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
+ n = 0 # عدد الخطوات
+ # تعيين الموضع الابتدائي
if start_position:
m.human = start_position
else:
m.random_start()
while True:
if m.at() == Board.Cell.apple:
- return n # success!
+ return n # نجاح!
if m.at() in [Board.Cell.wolf, Board.Cell.water]:
- return -1 # eaten by wolf or drowned
+ return -1 # أكلها الذئب أو غرقت
while True:
a = actions[policy(m)]
new_pos = m.move_pos(m.human,a)
if m.is_valid(new_pos) and m.at(new_pos)!=Board.Cell.water:
- m.move(a) # do the actual move
+ m.move(a) # قم بالتحرك الفعلي
break
n+=1
walk(m,random_policy)
```
- يجب أن تُرجع استدعاء `walk` طول المسار المقابل، والذي يمكن أن يختلف من تشغيل إلى آخر.
+ يجب أن تعيد المكالمة إلى `walk` طول المسار المقابل، والذي يمكن أن يختلف من تشغيل لآخر.
-1. قم بتشغيل تجربة المشي عدة مرات (على سبيل المثال، 100 مرة)، واطبع الإحصائيات الناتجة (كتلة الكود 4):
+1. نفذ تجربة السير عدة مرات (لنقل 100)، واطبع الإحصائيات الناتجة (كتلة الكود 4):
```python
def print_statistics(policy):
@@ -125,17 +125,17 @@ action_idx = { a : i for i,a in enumerate(actions.keys()) }
print_statistics(random_policy)
```
- لاحظ أن متوسط طول المسار حوالي 30-40 خطوة، وهو عدد كبير نسبيًا، بالنظر إلى أن متوسط المسافة إلى أقرب تفاحة حوالي 5-6 خطوات.
+ لاحظ أن متوسط طول المسار حوالي 30-40 خطوة، وهو كثير نسبيًا، بالنظر إلى أن متوسط المسافة إلى التفاحة الأقرب حوالي 5-6 خطوات.
- يمكنك أيضًا رؤية كيف يبدو تحرك بيتر أثناء المشي العشوائي:
+ يمكنك أيضًا رؤية كيف يبدو تحرك بيتر أثناء السير العشوائي:
- 
+ 
## دالة المكافأة
-لجعل سياستنا أكثر ذكاءً، نحتاج إلى فهم أي الحركات "أفضل" من غيرها. للقيام بذلك، نحتاج إلى تعريف هدفنا.
+لجعل سياستنا أكثر ذكاءً، نحتاج إلى فهم أي الحركات "أفضل" من غيرها. لهذا، نحتاج إلى تعريف هدفنا.
-يمكن تعريف الهدف من خلال **دالة المكافأة**، التي ستُرجع قيمة درجة لكل حالة. كلما زاد الرقم، كانت دالة المكافأة أفضل. (كتلة الكود 5)
+يمكن تعريف الهدف بدالة **دالة مكافأة**، التي ترجع قيمة نتائج لكل حالة. كلما كان الرقم أكبر، كانت دالة المكافأة أفضل. (كتلة الكود 5)
```python
move_reward = -0.1
@@ -154,39 +154,115 @@ def reward(m,pos=None):
return move_reward
```
-الشيء المثير للاهتمام حول دوال المكافأة هو أنه في معظم الحالات، *نحصل فقط على مكافأة كبيرة في نهاية اللعبة*. هذا يعني أن خوارزميةنا يجب أن تتذكر بطريقة ما الخطوات "الجيدة" التي تؤدي إلى مكافأة إيجابية في النهاية، وتزيد من أهميتها. وبالمثل، يجب تثبيط جميع الحركات التي تؤدي إلى نتائج سيئة.
+شيء مثير للاهتمام حول دوال المكافأة هو أنه في معظم الحالات، *نحصل على مكافأة كبيرة فقط في نهاية اللعبة*. هذا يعني أن خوارزميتنا يجب أن تتذكر somehow الخطوات "الجيدة" التي تؤدي إلى مكافأة إيجابية في النهاية، وتعزز أهميتها. وبالمثل، يُثبط كل التحركات التي تؤدي إلى نتائج سيئة.
-## خوارزمية Q-Learning
+## تعلم كيو
-الخوارزمية التي سنناقشها هنا تُسمى **Q-Learning**. في هذه الخوارزمية، تُعرف السياسة بدالة (أو بنية بيانات) تُسمى **جدول Q**. يسجل الجدول "جودة" كل إجراء في حالة معينة.
+الخوارزمية التي سنناقشها هنا تسمى **تعلم كيو**. في هذه الخوارزمية، تُعرف السياسة بدالة (أو هيكل بيانات) يسمى **جدول كيو**. يسجل "جودة" كل العمليات في حالة معينة.
-يُسمى جدول Q بهذا الاسم لأنه غالبًا ما يكون من الملائم تمثيله كجدول، أو مصفوفة متعددة الأبعاد. نظرًا لأن لوحتنا لها أبعاد `width` x `height`، يمكننا تمثيل جدول Q باستخدام مصفوفة numpy ذات الشكل `width` x `height` x `len(actions)`: (كتلة الكود 6)
+يسمى جدول كيو لأنه من الملائم تمثيله في صورة جدول، أو مصفوفة متعددة الأبعاد. بما أن لوحتنا هي بأبعاد `عرض` × `ارتفاع`، يمكننا تمثيل جدول كيو باستخدام مصفوفة numpy على شكل `عرض` × `ارتفاع` × `len(actions)`: (كتلة الكود 6)
```python
Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions)
```
-لاحظ أننا نبدأ جميع قيم جدول Q بقيمة متساوية، في حالتنا - 0.25. هذا يتوافق مع سياسة "المشي العشوائي"، لأن جميع الحركات في كل حالة متساوية الجودة. يمكننا تمرير جدول Q إلى دالة `plot` لتصور الجدول على اللوحة: `m.plot(Q)`.
+لاحظ أننا نُهيئ كل قيم جدول كيو بقيمة متساوية، في حالتنا - 0.25. هذا يتوافق مع سياسة "السير العشوائي"، لأن كل التحركات في كل حالة متساوية. يمكننا تمرير جدول كيو إلى دالة `plot` لعرض الجدول على اللوحة: `m.plot(Q)`.
-
+
-في مركز كل خلية يوجد "سهم" يشير إلى الاتجاه المفضل للحركة. نظرًا لأن جميع الاتجاهات متساوية، يتم عرض نقطة.
+في وسط كل خلية هناك "سهم" يشير للاتجاه المفضل للحركة. بما أن كل الاتجاهات متساوية، يعرض نقطة.
-الآن نحتاج إلى تشغيل المحاكاة، استكشاف بيئتنا، وتعلم توزيع أفضل لقيم جدول Q، مما سيمكننا من العثور على المسار إلى التفاحة بشكل أسرع بكثير.
+الآن نحتاج إلى تشغيل المحاكاة، واستكشاف بيئتنا، وتعلم توزيع أفضل لقيم جدول كيو، مما سيمكننا من إيجاد المسار إلى التفاحة بشكل أسرع بكثير.
-## جوهر Q-Learning: معادلة بيلمان
+## جوهر تعلم كيو: معادلة بيلمان
-بمجرد أن نبدأ في التحرك، سيكون لكل إجراء مكافأة مقابلة، أي يمكننا نظريًا اختيار الإجراء التالي بناءً على أعلى مكافأة فورية. ومع ذلك، في معظم الحالات، لن تحقق الحركة هدفنا المتمثل في الوصول إلى التفاحة، وبالتالي لا يمكننا أن نقرر فورًا أي اتجاه هو الأفضل.
+بمجرد أن نبدأ في الحركة، سيكون لكل إجراء مكافأة مقابلة، أي يمكننا نظريًا اختيار الإجراء التالي بناءً على أعلى مكافأة فورية. ومع ذلك، في معظم الحالات، لن يحقق التحرك هدفنا في الوصول إلى التفاحة، وبالتالي لا يمكننا فورًا تحديد الاتجاه الأفضل.
-> تذكر أن النتيجة الفورية ليست هي المهمة، بل النتيجة النهائية، التي سنحصل عليها في نهاية المحاكاة.
+> تذكر أن النتيجة الفورية ليست المهمة، بل النتيجة النهائية التي سنحصل عليها في نهاية المحاكاة.
-لأخذ هذه المكافأة المؤجلة في الاعتبار، نحتاج إلى استخدام مبادئ **[البرمجة الديناميكية](https://en.wikipedia.org/wiki/Dynamic_programming)**، التي تتيح لنا التفكير في مشكلتنا بشكل تكراري.
+من أجل حساب هذه المكافأة المؤجلة، نحتاج إلى استخدام مبادئ **[البرمجة الديناميكية](https://en.wikipedia.org/wiki/Dynamic_programming)**، التي تسمح لنا بالتفكير في مشكلتنا بشكل متكرر.
-افترض أننا الآن في الحالة *s*، ونريد الانتقال إلى الحالة التالية *s'*. من خلال القيام بذلك، سنحصل على المكافأة الفورية *r(s,a)*، المعرفة بواسطة دالة المكافأة، بالإضافة إلى بعض المكافآت المستقبلية. إذا افترضنا أن جدول Q يعكس بشكل صحيح "جاذبية" كل إجراء، فإننا في الحالة *s'* سنختار الإجراء *a* الذي يتوافق مع القيمة القصوى لـ *Q(s',a')*. وبالتالي، فإن أفضل مكافأة مستقبلية ممكنة يمكننا الحصول عليها في الحالة *s* ستُعرف بـ `max`
+لنفترض أننا الآن في الحالة *s*، ونريد الانتقال إلى الحالة التالية *s'*. بعمل ذلك، سنتلقى المكافأة الفورية *r(s,a)*، المعرفة بواسطة دالة المكافأة، بالإضافة إلى بعض المكافأة المستقبلية. إذا افترضنا أن جدول كيو يعكس بدقة "جاذبية" كل إجراء، فعند الحالة *s'* سنختار إجراء *a* الذي يقابل القيمة القصوى لـ *Q(s',a')*. إذن، أفضل مكافأة مستقبلية ممكنة يمكننا الحصول عليها عند الحالة *s* ستُعرّف كـ `max`a'*Q(s',a')* (يُحسب الحد الأقصى هنا عبر جميع الإجراءات الممكنة *a'* في الحالة *s'*).
+
+هذا يعطينا **معادلة بيلمان** لحساب قيمة جدول كيو عند الحالة *s*، بناءً على الإجراء *a*:
+
+
+
+هنا γ هو ما يسمى **عامل الخصم** الذي يحدد إلى أي مدى يجب أن تفضّل المكافأة الحالية على المكافأة المستقبلية والعكس.
+
+## خوارزمية التعلم
+
+بالنظر إلى المعادلة أعلاه، يمكننا الآن كتابة كود زائف لخوارزمية التعلم:
+
+* ابدأ جدول كيو Q بأعداد متساوية لكل الحالات والإجراءات
+* اضبط معدل التعلم α ← 1
+* كرر المحاكاة عدة مرات
+ 1. ابدأ من موقع عشوائي
+ 1. كرر
+ 1. اختر إجراء *a* في الحالة *s*
+ 2. نفذ الإجراء بالتحرك إلى حالة جديدة *s'*
+ 3. إذا صادفنا شرط نهاية اللعبة، أو كانت المكافأة الكلية صغيرة جدًا - اخرج من المحاكاة
+ 4. احسب المكافأة *r* في الحالة الجديدة
+ 5. حدّث دالة Q حسب معادلة بيلمان: *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ maxa'Q(s',a'))*
+ 6. *s* ← *s'*
+ 7. حدّث المكافأة الكلية وقلل α.
+
+## الاستغلال مقابل الاستكشاف
+
+في الخوارزمية أعلاه، لم نحدد كيف نختار الإجراء بالضبط في الخطوة 2.1. إذا اخترنا الإجراء عشوائيًا، فسن **نستكشف** البيئة عشوائيًا، ومن المحتمل أن نموت كثيرًا وكذلك نستكشف مناطق لم نذهب إليها عادة. النهج البديل هو **استغلال** قيم جدول كيو التي نعرفها بالفعل، وبالتالي اختيار أفضل إجراء (بقيمة جدول كيو أعلى) عند الحالة *s*. وهذا، مع ذلك، سيمنعنا من استكشاف حالات أخرى، ومن المحتمل ألا نجد الحل الأمثل.
+
+لذلك، النهج الأفضل هو تحقيق توازن بين الاستكشاف والاستغلال. يمكن فعل ذلك باختيار الإجراء عند الحالة *s* مع احتمالات تتناسب مع القيم في جدول كيو. في البداية، عندما تكون قيم جدول كيو كلها متساوية، سيكون الاختيار عشوائيًا، ولكن مع تعلمنا المزيد عن بيئتنا، سنكون أكثر ميلًا لاتباع الطريق الأمثل مع السماح للوكيل باختيار مسار غير مستكشف أحيانًا.
+
+## تنفيذ بايثون
+
+نحن الآن مستعدون لتنفيذ خوارزمية التعلم. قبل أن نفعل ذلك، نحتاج أيضًا إلى دالة تُحوّل الأعداد العشوائية في جدول كيو إلى متجه احتمالات للإجراءات المقابلة.
+
+1. أنشئ دالة `probs()`:
+
+ ```python
+ def probs(v,eps=1e-4):
+ v = v-v.min()+eps
+ v = v/v.sum()
+ return v
+ ```
+
+ نضيف بعض `eps` إلى المتجه الأصلي لتجنب القسمة على صفر في الحالة الأولية، عندما تكون كل مكونات المتجه متطابقة.
+
+نفذ خوارزمية التعلم عبر 5000 تجربة، تُسمى أيضًا **عصور**: (كتلة الكود 8)
+```python
+ for epoch in range(5000):
+
+ # اختر نقطة البداية
+ m.random_start()
+
+ # ابدأ السفر
+ n=0
+ cum_reward = 0
+ while True:
+ x,y = m.human
+ v = probs(Q[x,y])
+ a = random.choices(list(actions),weights=v)[0]
+ dpos = actions[a]
+ m.move(dpos,check_correctness=False) # نسمح للاعب بالتحرك خارج اللوحة، مما يؤدي إلى إنهاء الحلقة
+ r = reward(m)
+ cum_reward += r
+ if r==end_reward or cum_reward < -1000:
+ lpath.append(n)
+ break
+ alpha = np.exp(-n / 10e5)
+ gamma = 0.5
+ ai = action_idx[a]
+ Q[x,y,ai] = (1 - alpha) * Q[x,y,ai] + alpha * (r + gamma * Q[x+dpos[0], y+dpos[1]].max())
+ n+=1
+```
+
+بعد تنفيذ هذه الخوارزمية، يجب تحديث جدول كيو بالقيم التي تحدد جاذبية الإجراءات المختلفة في كل خطوة. يمكننا محاولة عرض جدول كيو برسم متجه في كل خلية يشير إلى الاتجاه المطلوب للحركة. وللبساطة، نرسم دائرة صغيرة بدل رأس السهم.
+
+
## التحقق من السياسة
-نظرًا لأن جدول Q يسرد "جاذبية" كل إجراء في كل حالة، فمن السهل استخدامه لتحديد التنقل الفعّال في عالمنا. في أبسط الحالات، يمكننا اختيار الإجراء الذي يتوافق مع أعلى قيمة في جدول Q: (كتلة الكود 9)
+بما أن جدول كيو يسرد "جاذبية" كل إجراء في كل حالة، فمن السهل جدًا استخدامه لتحديد التنقل الفعال في عالمنا. في أبسط الحالات، يمكننا اختيار الإجراء المقابل لأعلى قيمة في جدول كيو: (كتلة الكود 9)
```python
def qpolicy_strict(m):
@@ -198,17 +274,18 @@ def qpolicy_strict(m):
walk(m,qpolicy_strict)
```
-> إذا جربت الكود أعلاه عدة مرات، قد تلاحظ أنه أحيانًا "يتوقف"، وتحتاج إلى الضغط على زر الإيقاف في الدفتر لمقاطعته. يحدث هذا لأن هناك حالات قد تشير فيها حالتان إلى بعضهما البعض من حيث قيمة Q المثلى، وفي هذه الحالة ينتهي الأمر بالوكيل بالتنقل بين تلك الحالات إلى ما لا نهاية.
+
+> إذا جربت الكود أعلاه عدة مرات، قد تلاحظ أحيانًا أنه "يتوقف عن الاستجابة"، وتحتاج إلى الضغط على زر الإيقاف في الدفتر لإيقافه. يحدث هذا لأن هناك حالات قد تتبادل فيها حالتان "الإشارة" لبعضهما البعض من حيث قيمة Q المثلى، وفي هذه الحالة ينتهي بالوكيل إلى التنقل بين تلك الحالات إلى أجل غير مسمى.
## 🚀التحدي
-> **المهمة 1:** قم بتعديل وظيفة `walk` لتحديد الحد الأقصى لطول المسار بعدد معين من الخطوات (على سبيل المثال، 100)، وشاهد الكود أعلاه يعيد هذه القيمة من وقت لآخر.
+> **المهمة 1:** عدل دالة `walk` لتحديد الحد الأقصى لطول المسار بعدد معين من الخطوات (مثلاً، 100)، وراقب الكود أعلاه وهو يعيد هذه القيمة من وقت لآخر.
-> **المهمة 2:** قم بتعديل وظيفة `walk` بحيث لا تعود إلى الأماكن التي زارتها مسبقًا. سيمنع هذا `walk` من التكرار، ومع ذلك، قد ينتهي الأمر بالوكيل بأن يكون "محاصرًا" في موقع لا يستطيع الهروب منه.
+> **المهمة 2:** عدل دالة `walk` بحيث لا تعود إلى الأماكن التي زارها سابقًا. هذا سيمنع `walk` من الدخول في حلقة لا نهائية، مع ذلك، قد يظل الوكيل محاصرًا في موقع لا يستطيع الهروب منه.
## التنقل
-سياسة التنقل الأفضل هي تلك التي استخدمناها أثناء التدريب، والتي تجمع بين الاستغلال والاستكشاف. في هذه السياسة، سنختار كل إجراء باحتمالية معينة، تتناسب مع القيم في جدول Q. قد تؤدي هذه الاستراتيجية إلى عودة الوكيل إلى موقع سبق أن استكشفه، ولكن كما ترى من الكود أدناه، فإنها تؤدي إلى مسار متوسط قصير جدًا إلى الموقع المطلوب (تذكر أن `print_statistics` يشغل المحاكاة 100 مرة): (كتلة الكود 10)
+سياسة التنقل الأفضل هي التي استخدمناها أثناء التدريب، والتي تجمع بين الاستغلال والاستكشاف. في هذه السياسة، سنختار كل فعل باحتمال معين يتناسب مع القيم في جدول Q. قد تؤدي هذه الاستراتيجية إلى عودة الوكيل إلى موقع استكشفه سابقًا، لكن، كما ترى من الكود أدناه، فإنها تؤدي إلى مسار متوسط قصير جدًا للوصول إلى الموقع المطلوب (تذكر أن `print_statistics` تشغل المحاكاة 100 مرة): (الكتلة البرمجية 10)
```python
def qpolicy(m):
@@ -220,28 +297,32 @@ def qpolicy(m):
print_statistics(qpolicy)
```
-بعد تشغيل هذا الكود، يجب أن تحصل على طول مسار متوسط أصغر بكثير من السابق، في نطاق 3-6.
+بعد تشغيل هذا الكود، يجب أن تحصل على متوسط طول مسار أصغر بكثير من السابق، في نطاق 3-6.
+
+## دراسة عملية التعلم
-## التحقيق في عملية التعلم
+كما ذكرنا، عملية التعلم هي توازن بين الاستكشاف والاستغلال للمعرفة المكتسبة حول هيكل فضاء المشكلة. لقد رأينا أن نتائج التعلم (القدرة على مساعدة الوكيل في إيجاد مسار قصير إلى الهدف) قد تحسنت، لكنه من المثير أيضًا مراقبة كيف يتصرف متوسط طول المسار أثناء عملية التعلم:
-كما ذكرنا، عملية التعلم هي توازن بين الاستكشاف واستغلال المعرفة المكتسبة حول هيكل مساحة المشكلة. لقد رأينا أن نتائج التعلم (القدرة على مساعدة الوكيل في العثور على مسار قصير إلى الهدف) قد تحسنت، ولكن من المثير أيضًا ملاحظة كيف يتصرف متوسط طول المسار أثناء عملية التعلم:
+
-### يمكن تلخيص التعلم كما يلي:
+يمكن تلخيص التعلم كما يلي:
-- **زيادة متوسط طول المسار**. ما نراه هنا هو أنه في البداية، يزيد متوسط طول المسار. ربما يرجع ذلك إلى أنه عندما لا نعرف شيئًا عن البيئة، فمن المحتمل أن نقع في حالات سيئة، مثل الماء أو الذئب. ومع تعلمنا المزيد واستخدام هذه المعرفة، يمكننا استكشاف البيئة لفترة أطول، ولكننا لا نزال لا نعرف جيدًا مكان التفاح.
+- **يزداد متوسط طول المسار**. ما نراه هنا هو أنه في البداية، يزداد متوسط طول المسار. ويرجع ذلك على الأرجح إلى أننا لا نعرف شيئًا عن البيئة، ومن المحتمل أن نعلق في حالات سيئة، مثل الماء أو الذئب. مع اكتسابنا للمزيد من المعرفة، نتمكن من استكشاف البيئة لفترة أطول، لكننا لا نزال لا نعرف أماكن التفاح جيدًا.
-- **انخفاض طول المسار مع زيادة التعلم**. بمجرد أن نتعلم بما يكفي، يصبح من الأسهل للوكيل تحقيق الهدف، ويبدأ طول المسار في الانخفاض. ومع ذلك، لا نزال منفتحين على الاستكشاف، لذا غالبًا ما ننحرف بعيدًا عن المسار الأفضل، ونستكشف خيارات جديدة، مما يجعل المسار أطول من المثالي.
+- **ينخفض طول المسار مع التعلّم**. بمجرد أن نتعلم بما فيه الكفاية، يصبح من الأسهل على الوكيل تحقيق الهدف، ويبدأ طول المسار في الانخفاض. ومع ذلك، نحن لا نزال منفتحين على الاستكشاف، لذا غالبًا ما ننحرف عن أفضل مسار، ونستكشف خيارات جديدة، مما يجعل المسار أطول من الأمثل.
-- **زيادة الطول بشكل مفاجئ**. ما نلاحظه أيضًا في هذا الرسم البياني هو أنه في مرحلة ما، زاد الطول بشكل مفاجئ. يشير هذا إلى الطبيعة العشوائية للعملية، وأنه يمكننا في مرحلة ما "إفساد" معاملات جدول Q عن طريق الكتابة فوقها بقيم جديدة. يجب تقليل هذا بشكل مثالي عن طريق تقليل معدل التعلم (على سبيل المثال، في نهاية التدريب، نقوم فقط بتعديل قيم جدول Q بقيمة صغيرة).
+- **يزداد الطول بشكل مفاجئ**. ما نلاحظه أيضًا في هذا الرسم البياني هو أنه في نقطة معينة، زاد الطول فجأة. يشير هذا إلى الطبيعة العشوائية للعملية، وأنه يمكن في نقطة ما "إفساد" معاملات جدول Q بإعادة كتابتها بقيم جديدة. من المثالي تقليل هذا عن طريق تقليل معدل التعلم (على سبيل المثال، نحو نهاية التدريب، نضبط قيم جدول Q بقيمة صغيرة فقط).
-بشكل عام، من المهم أن نتذكر أن نجاح وجودة عملية التعلم تعتمد بشكل كبير على المعلمات، مثل معدل التعلم، انخفاض معدل التعلم، وعامل الخصم. غالبًا ما يُطلق على هذه المعلمات اسم **المعلمات الفائقة**، لتمييزها عن **المعلمات**، التي نقوم بتحسينها أثناء التدريب (على سبيل المثال، معاملات جدول Q). عملية العثور على أفضل قيم للمعلمات الفائقة تُسمى **تحسين المعلمات الفائقة**، وهي تستحق موضوعًا منفصلًا.
+بشكل عام، من المهم أن نتذكر أن نجاح وجودة عملية التعلم تعتمد بشكل كبير على معايير، مثل معدل التعلم، تناقص معدل التعلم، وعامل الخصم. غالبًا ما تُسمى هذه **المعلمات الفائقة**، لتمييزها عن **المعلمات** التي نحسنها أثناء التدريب (مثل معاملات جدول Q). تُسمى عملية إيجاد أفضل قيم للمعلمات الفائقة **تحسين المعلمات الفائقة**، وتستحق موضوعًا منفصلًا.
## [اختبار ما بعد المحاضرة](https://ff-quizzes.netlify.app/en/ml/)
-## الواجب
+## المهمة
[عالم أكثر واقعية](assignment.md)
---
-**إخلاء المسؤولية**:
-تمت ترجمة هذا المستند باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حساسة أو هامة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة.
\ No newline at end of file
+
+**تنويه**:
+تمت ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى للدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الرسمي والمعتمد. للمعلومات الهامة، يُنصح بالاستعانة بترجمة بشرية محترفة. نحن غير مسؤولين عن أي سوء فهم أو تفسير ناتج عن استخدام هذه الترجمة.
+
\ No newline at end of file
diff --git a/translations/ar/8-Reinforcement/2-Gym/README.md b/translations/ar/8-Reinforcement/2-Gym/README.md
index 8e4e7048a..79532e57f 100644
--- a/translations/ar/8-Reinforcement/2-Gym/README.md
+++ b/translations/ar/8-Reinforcement/2-Gym/README.md
@@ -1,32 +1,34 @@
-# التزلج على CartPole
+# تزلج على العربة القطب
-المشكلة التي قمنا بحلها في الدرس السابق قد تبدو وكأنها مشكلة بسيطة وغير قابلة للتطبيق في سيناريوهات الحياة الواقعية. لكن هذا ليس صحيحًا، لأن العديد من مشاكل العالم الحقيقي تشترك في هذا السيناريو - بما في ذلك لعب الشطرنج أو لعبة Go. فهي مشابهة لأن لدينا أيضًا لوحة بقواعد محددة وحالة **منفصلة**.
+المشكلة التي كنا نحلها في الدرس السابق قد تبدو كمشكلة لعبة، ليست قابلة للتطبيق حقًا في سيناريوهات الحياة الواقعية. هذا ليس صحيحًا، لأن العديد من المشكلات الواقعية تشترك أيضًا في هذا السيناريو - بما في ذلك لعب الشطرنج أو جو. هي مشابهة، لأن لدينا أيضًا لوحة بقواعد معينة و**حالة متقطعة**.
## [اختبار ما قبل المحاضرة](https://ff-quizzes.netlify.app/en/ml/)
-## المقدمة
+## مقدمة
-في هذا الدرس، سنطبق نفس مبادئ التعلم باستخدام Q-Learning على مشكلة ذات حالة **مستمرة**، أي حالة يتم تحديدها بواسطة رقم حقيقي أو أكثر. سنتعامل مع المشكلة التالية:
+في هذا الدرس سنطبق نفس مبادئ التعلم القيمي (Q-Learning) على مشكلة ذات **حالة مستمرة**، أي حالة تحددها واحدة أو أكثر من الأرقام الحقيقية. سنتعامل مع المشكلة التالية:
-> **المشكلة**: إذا أراد بيتر الهروب من الذئب، يجب أن يكون قادرًا على التحرك بسرعة أكبر. سنرى كيف يمكن لبيتر تعلم التزلج، وبالتحديد الحفاظ على التوازن، باستخدام Q-Learning.
+> **المشكلة**: إذا أراد بيتر الهروب من الذئب، يحتاج لأن يكون قادرًا على التحرك بسرعة أكبر. سنرى كيف يمكن لبيتر تعلم التزلج، خصوصًا الحفاظ على التوازن، باستخدام التعلم القيمي.
-
+
-> بيتر وأصدقاؤه يبدعون للهروب من الذئب! الصورة بواسطة [Jen Looper](https://twitter.com/jenlooper)
+> بيتر وأصدقاؤه يبدعون للهروب من الذئب! الصورة بواسطة [جين لوبير](https://twitter.com/jenlooper)
-سنستخدم نسخة مبسطة من التوازن تُعرف بمشكلة **CartPole**. في عالم CartPole، لدينا شريط أفقي يمكنه التحرك إلى اليسار أو اليمين، والهدف هو الحفاظ على توازن عمود رأسي فوق الشريط.
+سنستخدم نسخة مبسطة من التوازن تعرف بمشكلة **العربة والقطب**. في عالم العربة والقطب، لدينا منزلق أفقي يمكنه التحرك لليسار أو اليمين، والهدف هو موازنة عمود رأسي على قمة المنزلق.
+
+
## المتطلبات الأساسية
-في هذا الدرس، سنستخدم مكتبة تُسمى **OpenAI Gym** لمحاكاة بيئات مختلفة. يمكنك تشغيل كود هذا الدرس محليًا (مثلًا من Visual Studio Code)، وفي هذه الحالة ستفتح المحاكاة في نافذة جديدة. عند تشغيل الكود عبر الإنترنت، قد تحتاج إلى إجراء بعض التعديلات على الكود كما هو موضح [هنا](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7).
+في هذا الدرس، سنستخدم مكتبة تسمى **OpenAI Gym** لمحاكاة بيئات مختلفة. يمكنك تشغيل كود هذا الدرس محليًا (مثلًا من Visual Studio Code)، وفي هذه الحالة ستفتح المحاكاة في نافذة جديدة. عند تشغيل الكود عبر الإنترنت، قد تحتاج إلى تعديل بعض الأكواد كما هو موضح [هنا](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7).
## OpenAI Gym
-في الدرس السابق، كانت قواعد اللعبة والحالة تُحدد بواسطة الفئة `Board` التي قمنا بتعريفها بأنفسنا. هنا سنستخدم بيئة **محاكاة خاصة**، والتي ستقوم بمحاكاة الفيزياء وراء العمود المتوازن. واحدة من أشهر بيئات المحاكاة لتدريب خوارزميات التعلم المعزز تُسمى [Gym](https://gym.openai.com/)، والتي يتم صيانتها بواسطة [OpenAI](https://openai.com/). باستخدام هذه البيئة يمكننا إنشاء بيئات مختلفة من محاكاة CartPole إلى ألعاب Atari.
+في الدرس السابق، كانت قواعد اللعبة والحالة معينة بواسطة فئة `Board` التي عرفناها بأنفسنا. هنا سنستخدم بيئة محاكاة خاصة، ستحاكي الفيزياء وراء عمود التوازن. إحدى أشهر بيئات المحاكاة لتدريب خوارزميات التعلم المعزز هي ما يسمى بـ [Gym](https://gym.openai.com/)، التي تديرها [OpenAI](https://openai.com/). باستخدام هذه الصالة الرياضية (gym) يمكننا إنشاء بيئات مختلفة من محاكاة العربة والقطب إلى ألعاب آتاري.
-> **ملاحظة**: يمكنك رؤية البيئات الأخرى المتاحة من OpenAI Gym [هنا](https://gym.openai.com/envs/#classic_control).
+> **ملاحظة**: يمكنك رؤية بيئات أخرى متاحة من OpenAI Gym [هنا](https://gym.openai.com/envs/#classic_control).
-أولاً، دعنا نقوم بتثبيت Gym واستيراد المكتبات المطلوبة (كتلة الكود 1):
+أولاً، لنثبت gym ونستورد المكتبات اللازمة (كتلة الأكواد 1):
```python
import sys
@@ -38,13 +40,13 @@ import numpy as np
import random
```
-## تمرين - تهيئة بيئة CartPole
+## تمرين - تهيئة بيئة عربة القطب
-للعمل مع مشكلة توازن CartPole، نحتاج إلى تهيئة البيئة المناسبة. كل بيئة مرتبطة بـ:
+للعمل مع مشكلة توازن العربة والقطب، نحتاج إلى تهيئة البيئة المقابلة. كل بيئة مرتبطة بـ:
-- **مساحة الملاحظة** التي تُحدد هيكل المعلومات التي نتلقاها من البيئة. بالنسبة لمشكلة CartPole، نتلقى موقع العمود، السرعة وبعض القيم الأخرى.
+- **فضاء الرصد** الذي يحدد بنية المعلومات التي نستقبلها من البيئة. بالنسبة لمشكلة العربة والقطب، نستقبل موضع القطب، السرعة وبعض القيم الأخرى.
-- **مساحة الحركة** التي تُحدد الإجراءات الممكنة. في حالتنا، مساحة الحركة منفصلة، وتتكون من إجراءين - **يسار** و **يمين**. (كتلة الكود 2)
+- **فضاء الإجراءات** الذي يحدد الإجراءات الممكنة. في حالتنا، فضاء الإجراءات متقطع، ويتكون من إجراءين - **اليسار** و**اليمين**. (كتلة الأكواد 2)
1. للتهيئة، اكتب الكود التالي:
@@ -55,11 +57,11 @@ import random
print(env.action_space.sample())
```
-لرؤية كيفية عمل البيئة، دعنا نقوم بتشغيل محاكاة قصيرة لمدة 100 خطوة. في كل خطوة، نقدم أحد الإجراءات التي يجب اتخاذها - في هذه المحاكاة نختار إجراءً عشوائيًا من `action_space`.
+لرؤية كيفية عمل البيئة، لنقم بتشغيل محاكاة قصيرة من 100 خطوة. في كل خطوة، نعطي إجراءً واحدًا ليتم تنفيذه - في هذه المحاكاة نختار إجراء عشوائيًا من `action_space`.
-1. قم بتشغيل الكود أدناه وشاهد النتائج.
+1. شغل الكود أدناه وانظر إلى النتيجة.
- ✅ تذكر أنه يُفضل تشغيل هذا الكود على تثبيت Python محلي! (كتلة الكود 3)
+ ✅ تذكر أنه من الأفضل تشغيل هذا الكود على تثبيت بايثون محلي! (كتلة الأكواد 3)
```python
env.reset()
@@ -70,11 +72,11 @@ import random
env.close()
```
- يجب أن ترى شيئًا مشابهًا لهذه الصورة:
+ يجب أن ترى شيئًا مماثلًا لهذه الصورة:
- 
+ 
-1. أثناء المحاكاة، نحتاج إلى الحصول على الملاحظات لتحديد كيفية التصرف. في الواقع، تُرجع وظيفة الخطوة الملاحظات الحالية، دالة المكافأة، وعلامة الانتهاء التي تشير إلى ما إذا كان من المنطقي متابعة المحاكاة أم لا: (كتلة الكود 4)
+1. أثناء المحاكاة، نحتاج إلى الحصول على الملاحظات لاتخاذ قرار الفعل. في الحقيقة، دالة step تُرجع الملاحظات الحالية، دالة المكافأة، وعلم الانتهاء الذي يشير إلى ما إذا كان من المنطقي الاستمرار في المحاكاة أم لا: (كتلة الأكواد 4)
```python
env.reset()
@@ -87,7 +89,7 @@ import random
env.close()
```
- ستنتهي برؤية شيء مثل هذا في إخراج الدفتر:
+ ستنتهي برؤية شيء مثل هذا في ناتج النوتبوك:
```text
[ 0.03403272 -0.24301182 0.02669811 0.2895829 ] -> 1.0
@@ -100,43 +102,43 @@ import random
[ 0.17617249 0.35602306 -0.21873684 -0.90998894] -> 1.0
```
- يحتوي متجه الملاحظة الذي يتم إرجاعه في كل خطوة من خطوات المحاكاة على القيم التالية:
- - موقع العربة
+ متجه الملاحظات الذي يرجع في كل خطوة محاكاة يحتوي القيم التالية:
+ - موضع العربة
- سرعة العربة
- - زاوية العمود
- - معدل دوران العمود
+ - زاوية القطب
+ - معدل دوران القطب
-1. احصل على الحد الأدنى والحد الأقصى لتلك الأرقام: (كتلة الكود 5)
+1. احصل على الحد الأدنى والحد الأقصى لهذه الأرقام: (كتلة الأكواد 5)
```python
print(env.observation_space.low)
print(env.observation_space.high)
```
- قد تلاحظ أيضًا أن قيمة المكافأة في كل خطوة من خطوات المحاكاة دائمًا 1. هذا لأن هدفنا هو البقاء لأطول فترة ممكنة، أي الحفاظ على العمود في وضع عمودي بشكل معقول لأطول فترة ممكنة.
-
- ✅ في الواقع، تُعتبر محاكاة CartPole محلولة إذا تمكنا من الحصول على متوسط مكافأة قدره 195 على مدى 100 تجربة متتالية.
+ قد تلاحظ أيضًا أن قيمة المكافأة في كل خطوة محاكاة دائمًا 1. هذا لأن هدفنا هو البقاء لأطول فترة ممكنة، أي الحفاظ على القطب في وضع عمودي معقول لأطول وقت.
-## تقسيم الحالة إلى قيم منفصلة
+ ✅ في الحقيقة، تعتبر محاكاة CartPole محلولة إذا استطعنا الحصول على المكافأة المتوسطة 195 خلال 100 محاكاة متتالية.
-في Q-Learning، نحتاج إلى بناء جدول Q الذي يُحدد ما يجب فعله في كل حالة. لكي نتمكن من القيام بذلك، يجب أن تكون الحالة **منفصلة**، وبشكل أكثر دقة، يجب أن تحتوي على عدد محدود من القيم المنفصلة. لذلك، نحتاج بطريقة ما إلى **تقسيم** ملاحظاتنا، وربطها بمجموعة محدودة من الحالات.
+## تقسيم الحالة
-هناك عدة طرق يمكننا القيام بذلك:
+في التعلم القيمي، نحتاج لبناء جدول Q يحدد ما يجب فعله في كل حالة. لنتمكن من ذلك، نحتاج أن تكون الحالة **متقطعة**، وبشكل أدق أن تحتوي على عدد محدود من القيم المتقطعة. لذا، نحتاج إلى طريقة لـ **تقسيم** ملاحظاتنا، وتحويلها إلى مجموعة محدودة من الحالات.
-- **التقسيم إلى مجموعات**. إذا كنا نعرف نطاق قيمة معينة، يمكننا تقسيم هذا النطاق إلى عدد من **المجموعات**، ثم استبدال القيمة برقم المجموعة التي تنتمي إليها. يمكن القيام بذلك باستخدام طريقة [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html) في numpy. في هذه الحالة، سنعرف حجم الحالة بدقة، لأنه سيعتمد على عدد المجموعات التي نختارها للتقسيم.
+هناك عدة طرق للقيام بذلك:
-✅ يمكننا استخدام الاستيفاء الخطي لجلب القيم إلى نطاق محدود (على سبيل المثال، من -20 إلى 20)، ثم تحويل الأرقام إلى أعداد صحيحة عن طريق تقريبها. هذا يمنحنا تحكمًا أقل في حجم الحالة، خاصة إذا لم نكن نعرف النطاقات الدقيقة للقيم المدخلة. على سبيل المثال، في حالتنا، 2 من أصل 4 قيم ليس لها حدود عليا/سفلى على قيمها، مما قد يؤدي إلى عدد لا نهائي من الحالات.
+- **التقسيم إلى حاويات**. إذا عرفنا فترة قيمة معينة، يمكننا تقسيم هذه الفترة إلى عدد من **الحاويات**، ثم نستبدل القيمة برقم الحاوية التي تنتمي إليها. يمكن القيام بذلك باستخدام دالة numpy [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html). في هذه الحالة، سنعرف بالضبط حجم الحالة، لأنه يعتمد على عدد الحاويات التي نختارها للرقمنة.
+
+✅ يمكننا استخدام الاستيفاء الخطي لجلب القيم إلى فترة محدودة (مثلاً من -20 إلى 20)، ثم تحويل الأرقام إلى أعداد صحيحة بتقريبها. هذا يمنحنا سيطرة أقل على حجم الحالة، خصوصًا إذا لم نكن نعرف نطاق القيم المدخلة بدقة. على سبيل المثال، في حالتنا، 2 من أصل 4 قيم لا تملك حدود عليا أو دنيا، مما قد يؤدي إلى عدد لا نهائي من الحالات.
-في مثالنا، سنستخدم الطريقة الثانية. كما قد تلاحظ لاحقًا، على الرغم من عدم وجود حدود عليا/سفلى محددة، فإن تلك القيم نادرًا ما تأخذ قيمًا خارج نطاقات معينة محدودة، وبالتالي ستكون تلك الحالات ذات القيم القصوى نادرة جدًا.
+في مثالنا، سنختار المنهج الثاني. كما قد تلاحظ لاحقًا، رغم الحدود العليا / الدنيا غير المحددة، فإن هذه القيم نادرًا ما تأخذ قيمًا خارج فترات محدودة معينة، لذلك الحالات ذات القيم القصوى ستكون نادرة جدًا.
-1. هنا وظيفة ستأخذ الملاحظة من نموذجنا وتنتج مجموعة من 4 قيم صحيحة: (كتلة الكود 6)
+1. هذه هي الدالة التي تأخذ الملاحظة من نموذجنا وتنتج زوجًا مكونًا من 4 قيم صحيحة: (كتلة الأكواد 6)
```python
def discretize(x):
return tuple((x/np.array([0.25, 0.25, 0.01, 0.1])).astype(np.int))
```
-1. دعنا نستكشف أيضًا طريقة أخرى للتقسيم باستخدام المجموعات: (كتلة الكود 7)
+1. لنستكشف أيضًا طريقة تقسيم أخرى باستخدام الحاويات: (كتلة الأكواد 7)
```python
def create_bins(i,num):
@@ -144,45 +146,165 @@ import random
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
+ ints = [(-5,5),(-2,2),(-0.5,0.5),(-2,2)] # فترات القيم لكل معلمة
+ nbins = [20,20,10,10] # عدد الحاويات لكل معلمة
bins = [create_bins(ints[i],nbins[i]) for i in range(4)]
def discretize_bins(x):
return tuple(np.digitize(x[i],bins[i]) for i in range(4))
```
-1. دعنا الآن نقوم بتشغيل محاكاة قصيرة ونلاحظ تلك القيم المنفصلة للبيئة. لا تتردد في تجربة كل من `discretize` و `discretize_bins` ومعرفة ما إذا كان هناك فرق.
+1. لنشغل الآن محاكاة قصيرة ونلاحظ تلك القيم البيئية المتقطعة. يمكنك تجربة كل من `discretize` و`discretize_bins` لترى إذا كان هناك فرق.
- ✅ تُرجع `discretize_bins` رقم المجموعة، وهو يبدأ من 0. وبالتالي بالنسبة لقيم المتغير المدخل حول 0، تُرجع الرقم من منتصف النطاق (10). في `discretize`، لم نهتم بنطاق قيم الإخراج، مما يسمح لها بأن تكون سلبية، وبالتالي فإن القيم 0 تتوافق مع 0. (كتلة الكود 8)
+ ✅ `discretize_bins` تعيد رقم الحاوية، الذي يكون مبدئيًا 0. لذا للقيم حول 0، تعيد الرقم من مركز الفترة (10). في `discretize`، لم نهتم بنطاق القيم المخرجة، مما سمح بأن تكون سالبة، لذا قيم الحالة ليست منتقلًة، و0 يمثل 0. (كتلة الأكواد 8)
```python
env.reset()
done = False
while not done:
- #env.render()
+ #عرض البيئة ()
obs, rew, done, info = env.step(env.action_space.sample())
- #print(discretize_bins(obs))
+ #طباعة (discretize_bins(obs))
print(discretize(obs))
env.close()
```
- ✅ قم بإلغاء تعليق السطر الذي يبدأ بـ `env.render` إذا كنت تريد رؤية كيفية تنفيذ البيئة. خلاف ذلك، يمكنك تنفيذها في الخلفية، وهو أسرع. سنستخدم هذا التنفيذ "غير المرئي" أثناء عملية Q-Learning.
+ ✅ قم بإلغاء تعليق السطر الذي يبدأ بـ env.render إذا أردت رؤية كيف تنفذ البيئة. وإلا يمكنك تشغيلها في الخلفية، مما يكون أسرع. سنستخدم هذا التنفيذ "غير المرئي" خلال عملية التعلم القيمي.
## هيكل جدول Q
-في درسنا السابق، كانت الحالة عبارة عن زوج بسيط من الأرقام من 0 إلى 8، وبالتالي كان من المناسب تمثيل جدول Q بمصفوفة numpy ذات شكل 8x8x2. إذا استخدمنا تقسيم المجموعات، فإن حجم متجه الحالة لدينا معروف أيضًا، لذلك يمكننا استخدام نفس النهج وتمثيل الحالة بمصفوفة ذات شكل 20x20x10x10x2 (هنا 2 هي بُعد مساحة الحركة، والأبعاد الأولى تتوافق مع عدد المجموعات التي اخترنا استخدامها لكل من المعلمات في مساحة الملاحظة).
+في درسنا السابق، كانت الحالة زوجًا بسيطًا من الأرقام من 0 إلى 8، لذا كان من الملائم تمثيل جدول Q عن طريق مصفوفة numpy ذات شكل 8x8x2. إذا استخدمنا تقسيم الحاويات، سيكون حجم متجه الحالة معروفًا، لذا يمكننا استخدام نفس النهج وتمثيل الحالة كمصفوفة ذات شكل 20x20x10x10x2 (هنا 2 هو بُعد فضاء الإجراءات، والأبعاد الأولى تمثل عدد الحاويات التي اخترناها لكل من معايير فضاء الملاحظات).
+
+أحيانًا لا تكون أبعاد فضاء الملاحظات الدقيقة معروفة. في حالة دالة `discretize`، قد لا نكون متأكدين أبدًا أن حالتنا تبقى ضمن حدود معينة، لأن بعض القيم الأصلية غير محدودة. لذلك، سنستخدم نهجًا مختلفًا قليلاً ونمثل جدول Q بواسطة قاموس.
+
+1. استخدم الزوج *(state, action)* كمفتاح في القاموس، والقيمة ستكون القيمة في جدول Q. (كتلة الأكواد 9)
+
+ ```python
+ Q = {}
+ actions = (0,1)
+
+ def qvalues(state):
+ return [Q.get((state,a),0) for a in actions]
+ ```
+
+ هنا نعرف أيضًا دالة `qvalues()` التي ترجع قائمة بقيم جدول Q لحالة معينة تتوافق مع كل الإجراءات الممكنة. إذا لم يكن الإدخال موجودًا في جدول Q، نُرجع 0 كافتراضي.
+
+## لنبدأ التعلم القيمي
+
+الآن نحن جاهزون لتعليم بيتر كيفية التوازن!
+
+1. أولًا، دعنا نحدد بعض المعاملات الفائقة: (كتلة الأكواد 10)
+
+ ```python
+ # المعلمات الفائقة
+ alpha = 0.3
+ gamma = 0.9
+ epsilon = 0.90
+ ```
+
+ هنا، `alpha` هو **معدل التعلم** الذي يحدد مدى تعديل القيم الحالية في جدول Q في كل خطوة. في الدرس السابق بدأنا بـ 1، ثم خفضنا `alpha` إلى قيم أقل أثناء التدريب. في هذا المثال سنبقيه ثابتًا للبساطة، ويمكنك تجربة تعديل قيم `alpha` لاحقًا.
+
+ `gamma` هو **عامل الخصم** الذي يوضح مدى أولوية المكافأة المستقبلية على المكافأة الحالية.
+
+ `epsilon` هو **عامل الاستكشاف / الاستغلال** الذي يحدد ما إذا كان يجب أن نفضل الاستكشاف على الاستغلال أو العكس. في الخوارزمية لدينا، سنختار الإجراء التالي وفقًا لقيم جدول Q في نسبة `epsilon` من الحالات، وفي الحالات المتبقية ننفذ إجراءً عشوائيًا. هذا يسمح لنا باستكشاف مناطق لم نرها من قبل في فضاء البحث.
+
+ ✅ من حيث التوازن - اختيار إجراء عشوائي (استكشاف) يشبه لكمة عشوائية في الاتجاه الخاطئ، ويجب على القطب أن يتعلم كيف يعيد التوازن من تلك "الأخطاء".
+
+### تحسين الخوارزمية
+
+يمكننا أيضًا إجراء تحسينين لخوارزميتنا من الدرس السابق:
+
+- **حساب متوسط المكافأة التراكمية** عبر عدد من المحاكيات. سنطبع التقدم كل 5000 تكرار، وسنحسب المتوسط للمكافأة التراكمية خلال تلك الفترة. هذا يعني أنه إذا حصلنا على أكثر من 195 نقطة - يمكننا اعتبار المشكلة محلولة بجودة أعلى حتى من المطلوبة.
+
+- **حساب الحد الأقصى للمتوسط التراكمي**، `Qmax`، وسنخزن جدول Q المقابل لذلك. عند تشغيل التدريب ستلاحظ أن متوسط النتيجة يبدأ أحيانًا في الانخفاض، ونريد الاحتفاظ بقيم جدول Q التي تمثل أفضل نموذج تم ملاحظته أثناء التدريب.
+
+1. اجمع كل المكافآت التراكمية في كل محاكاة في متجه `rewards` للرسم اللاحق. (كتلة الأكواد 11)
+
+ ```python
+ def probs(v,eps=1e-4):
+ v = v-v.min()+eps
+ v = v/v.sum()
+ return v
+
+ Qmax = 0
+ cum_rewards = []
+ rewards = []
+ for epoch in range(100000):
+ obs = env.reset()
+ done = False
+ cum_reward=0
+ # == قم بالمحاكاة ==
+ while not done:
+ s = discretize(obs)
+ if random.random() Qmax:
+ Qmax = np.average(cum_rewards)
+ Qbest = Q
+ cum_rewards=[]
+ ```
+
+ما قد تلاحظ من تلك النتائج:
+
+- **نحن قريبون من هدفنا**. نحن قريبون جدًا من تحقيق الهدف بالحصول على 195 مكافأة تراكمية خلال 100+ جولة متتالية من المحاكاة، أو قد نكون قد حققناه بالفعل! حتى إذا حصلنا على أرقام أقل، لا يمكننا التأكد لأنه يتم التوسط خلال 5000 جولة، بينما فقط 100 جولة مطلوبة في المعايير الرسمية.
+
+- **المكافأة تبدأ في الانخفاض**. أحيانًا تبدأ المكافأة في الانخفاض، مما يعني أننا قد "ندمر" القيم التي تعلمناها في جدول Q بقيم تجعل الوضع أسوأ.
+
+هذا الملاحظة تصبح أكثر وضوحًا إذا رسمنا تقدم التدريب.
+
+## رسم تقدم التدريب
+
+أثناء التدريب، جمعنا قيمة المكافأة التراكمية في كل تكرار في متجه `rewards`. هكذا يبدو شكل الرسم مقابل رقم التكرار:
+
+```python
+plt.plot(rewards)
+```
+
+
+
+من هذا الرسم لا يمكننا استنتاج شيء، لأن طبيعة عملية التدريب العشوائية تجعل طول جلسات التدريب يختلف كثيرًا. لجعل هذا الرسم أكثر معنى، يمكننا حساب **المتوسط المتحرك** عبر سلسلة من التجارب، لنقل 100 تجربة. يمكن تنفيذ ذلك بسهولة باستخدام `np.convolve`: (كتلة الأكواد 12)
+
+```python
+def running_average(x,window):
+ return np.convolve(x,np.ones(window)/window,mode='valid')
+
+plt.plot(running_average(rewards,100))
+```
+
+
+
+## تغيير المعاملات الفائقة
+
+لجعل التعلم أكثر استقرارًا، من المنطقي تعديل بعض معاملاتنا الفائقة أثناء التدريب. على وجه الخصوص:
+
+- **لمعدل التعلم** `alpha`، قد نبدأ بقيم قريبة من 1، ثم نخفض هذا المعامل تدريجيًا. مع الزمن، سنحصل على قيم احتمال جيدة في جدول Q، لذا يجب أن نعدلها قليلاً، وليس استبدالها تمامًا بقيم جديدة.
+
+- **زيادة epsilon**. قد نرغب في زيادة `epsilon` ببطء، لتقليل الاستكشاف وزيادة الاستغلال. من المنطقي أن نبدأ بقيمة منخفضة لـ `epsilon` ونصل بها إلى ما يقرب من 1.
+
+> **المهمة 1**: جرب قيم المعاملات الفائقة وانظر إن كنت تستطيع تحقيق مكافأة تراكمية أعلى. هل تحصل على أكثر من 195؟
-ومع ذلك، في بعض الأحيان لا تكون أبعاد مساحة الملاحظة معروفة بدقة. في حالة وظيفة `discretize`، قد لا نكون متأكدين أبدًا من أن حالتنا تبقى ضمن حدود معينة، لأن بعض القيم الأصلية ليست محدودة. لذلك، سنستخدم نهجًا مختلفًا قليلاً ونمثل جدول Q بواسطة قاموس.
-1. استخدم الزوج *(state,action)* كمفتاح للقام
-> **المهمة 1**: جرّب تعديل قيم المعاملات الفائقة (hyperparameters) وانظر إذا كان بإمكانك تحقيق مكافأة تراكمية أعلى. هل تحصل على أكثر من 195؟
-> **المهمة 2**: لحل المشكلة بشكل رسمي، تحتاج إلى تحقيق متوسط مكافأة قدره 195 عبر 100 تشغيل متتالي. قم بقياس ذلك أثناء التدريب وتأكد من أنك قد حللت المشكلة بشكل رسمي!
+> **المهمة 2**: لحل المشكلة رسمياً، تحتاج إلى تحقيق متوسط مكافأة قدره 195 عبر 100 تجربة متتالية. قم بقياس ذلك أثناء التدريب وتأكد من أنك قد حللت المشكلة رسمياً!
-## رؤية النتيجة عمليًا
+## مشاهدة النتيجة في التنفيذ
-سيكون من المثير للاهتمام رؤية كيف يتصرف النموذج المدرب بالفعل. دعنا نقوم بتشغيل المحاكاة ونتبع نفس استراتيجية اختيار الإجراءات كما في التدريب، حيث يتم أخذ العينات وفقًا لتوزيع الاحتمالات في Q-Table: (كتلة الكود 13)
+سيكون من المثير للاهتمام رؤية كيف يتصرف النموذج المدرب بالفعل. دعنا نشغل المحاكاة ونتبع نفس استراتيجية اختيار الإجراء كما في التدريب، مع أخذ عينات وفقاً لتوزيع الاحتمالية في جدول Q: (كتلة الكود 13)
```python
obs = env.reset()
@@ -196,30 +318,32 @@ while not done:
env.close()
```
-يجب أن ترى شيئًا مثل هذا:
+يجب أن ترى شيئاً مثل هذا:
-
+
---
## 🚀التحدي
-> **المهمة 3**: هنا، كنا نستخدم النسخة النهائية من Q-Table، والتي قد لا تكون الأفضل. تذكر أننا قمنا بتخزين أفضل نسخة أداءً من Q-Table في المتغير `Qbest`! جرب نفس المثال باستخدام Q-Table الأفضل أداءً عن طريق نسخ `Qbest` إلى `Q` وشاهد ما إذا كنت تلاحظ الفرق.
+> **المهمة 3**: هنا، كنا نستخدم النسخة النهائية من جدول Q، والتي قد لا تكون الأفضل. تذكر أننا قد خزنا أفضل جدول Q أداءً في متغير `Qbest`! جرّب المثال نفسه باستخدام أفضل جدول Q أداءً بنسخ `Qbest` إلى `Q` وانظر إذا لاحظت الفرق.
-> **المهمة 4**: هنا لم نكن نختار أفضل إجراء في كل خطوة، بل كنا نأخذ العينات وفقًا لتوزيع الاحتمالات المقابل. هل سيكون من المنطقي دائمًا اختيار أفضل إجراء، الذي يحتوي على أعلى قيمة في Q-Table؟ يمكن القيام بذلك باستخدام وظيفة `np.argmax` لمعرفة رقم الإجراء الذي يتوافق مع أعلى قيمة في Q-Table. قم بتنفيذ هذه الاستراتيجية وشاهد ما إذا كانت تحسن التوازن.
+> **المهمة 4**: هنا لم نكن نختار أفضل إجراء في كل خطوة، بل كنا نأخذ عينات باستخدام توزيع الاحتمالية المطابق. هل سيكون من المنطقي دائماً اختيار أفضل إجراء، ذو أعلى قيمة في جدول Q؟ يمكن القيام بذلك باستخدام دالة `np.argmax` لاكتشاف رقم الإجراء المقابل لأعلى قيمة في جدول Q. نفذ هذه الاستراتيجية وانظر إذا كانت تحسن التوازن.
## [اختبار ما بعد المحاضرة](https://ff-quizzes.netlify.app/en/ml/)
-## الواجب
-[تدريب سيارة الجبل](assignment.md)
+## المهمة
+[تدريب سيارة جبلية](assignment.md)
-## الخاتمة
+## الخلاصة
-لقد تعلمنا الآن كيفية تدريب الوكلاء لتحقيق نتائج جيدة فقط من خلال توفير دالة مكافأة تحدد الحالة المرغوبة للعبة، ومنحهم فرصة لاستكشاف مساحة البحث بذكاء. لقد طبقنا بنجاح خوارزمية Q-Learning في حالات البيئات المنفصلة والمستمرة، ولكن مع إجراءات منفصلة.
+لقد تعلمنا الآن كيفية تدريب العوامل لتحقيق نتائج جيدة فقط من خلال تزويدهم بدالة مكافأة تعرف الحالة المرغوبة للعبة، ومن خلال منحهم فرصة لاستكشاف فضاء البحث بذكاء. لقد طبقنا بنجاح خوارزمية التعلم Q في حالات البيئات المتقطعة والمستمرة، ولكن مع أفعال متقطعة.
-من المهم أيضًا دراسة الحالات التي تكون فيها حالة الإجراء مستمرة، وعندما تكون مساحة الملاحظة أكثر تعقيدًا، مثل الصورة من شاشة لعبة أتاري. في تلك المشاكل، غالبًا ما نحتاج إلى استخدام تقنيات تعلم الآلة الأكثر قوة، مثل الشبكات العصبية، لتحقيق نتائج جيدة. هذه المواضيع الأكثر تقدمًا هي موضوع دورتنا القادمة الأكثر تقدمًا في الذكاء الاصطناعي.
+من المهم أيضاً دراسة الحالات التي يكون فيها فضاء الأفعال مستمراً، وعندما يكون فضاء الملاحظات أكثر تعقيداً، مثل الصورة من شاشة لعبة أتاري. في تلك المشاكل غالباً ما نحتاج لاستخدام تقنيات تعلم آلي أقوى، مثل الشبكات العصبية، من أجل تحقيق نتائج جيدة. هذه الموضوعات الأكثر تقدماً هي موضوع دورتنا القادمة المتقدمة في الذكاء الاصطناعي.
---
-**إخلاء المسؤولية**:
-تمت ترجمة هذا المستند باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حساسة أو هامة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة.
\ No newline at end of file
+
+**تنويه**:
+تمت ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى للدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الرسمي والمعتمد. للمعلومات الهامة، يُنصح بالاستعانة بترجمة بشرية محترفة. نحن غير مسؤولين عن أي سوء فهم أو تفسير ناتج عن استخدام هذه الترجمة.
+
\ No newline at end of file
diff --git a/translations/bg/.co-op-translator.json b/translations/bg/.co-op-translator.json
index 9fbaabc6f..51f198cae 100644
--- a/translations/bg/.co-op-translator.json
+++ b/translations/bg/.co-op-translator.json
@@ -24,8 +24,8 @@
"language_code": "bg"
},
"1-Introduction/3-fairness/README.md": {
- "original_hash": "9a6b702d1437c0467e3c5c28d763dac2",
- "translation_date": "2025-09-05T00:20:49+00:00",
+ "original_hash": "0f00d72169a0d37eecfd16d71e01700a",
+ "translation_date": "2026-07-14T06:25:07+00:00",
"source_file": "1-Introduction/3-fairness/README.md",
"language_code": "bg"
},
@@ -54,8 +54,8 @@
"language_code": "bg"
},
"2-Regression/1-Tools/README.md": {
- "original_hash": "fa81d226c71d5af7a2cade31c1c92b88",
- "translation_date": "2025-09-04T23:34:53+00:00",
+ "original_hash": "0b8635427b582d03ea4ab7089b93e505",
+ "translation_date": "2026-07-14T06:21:26+00:00",
"source_file": "2-Regression/1-Tools/README.md",
"language_code": "bg"
},
@@ -72,8 +72,8 @@
"language_code": "bg"
},
"2-Regression/2-Data/README.md": {
- "original_hash": "7c077988328ebfe33b24d07945f16eca",
- "translation_date": "2025-09-04T23:40:27+00:00",
+ "original_hash": "a58b2c4d16c6b122643391745ac15af6",
+ "translation_date": "2026-07-14T06:22:39+00:00",
"source_file": "2-Regression/2-Data/README.md",
"language_code": "bg"
},
@@ -89,6 +89,12 @@
"source_file": "2-Regression/2-Data/solution/Julia/README.md",
"language_code": "bg"
},
+ "2-Regression/2-Data/solution/notebook.ipynb": {
+ "original_hash": "96b95f8cf473481f2f371de8156f1571",
+ "translation_date": "2026-07-14T05:54:15+00:00",
+ "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
+ "language_code": "bg"
+ },
"2-Regression/3-Linear/README.md": {
"original_hash": "8b776e731c35b171d316d01d0e7b1369",
"translation_date": "2026-04-26T19:11:25+00:00",
@@ -457,7 +463,7 @@
},
"8-Reinforcement/1-QLearning/README.md": {
"original_hash": "911efd5e595089000cb3c16fce1beab8",
- "translation_date": "2025-09-05T01:05:29+00:00",
+ "translation_date": "2026-07-14T06:23:57+00:00",
"source_file": "8-Reinforcement/1-QLearning/README.md",
"language_code": "bg"
},
@@ -523,7 +529,7 @@
},
"9-Real-World/2-Debugging-ML-Models/README.md": {
"original_hash": "df2b538e8fbb3e91cf0419ae2f858675",
- "translation_date": "2025-09-05T00:14:20+00:00",
+ "translation_date": "2026-07-14T06:26:25+00:00",
"source_file": "9-Real-World/2-Debugging-ML-Models/README.md",
"language_code": "bg"
},
@@ -581,6 +587,19 @@
"source_file": "TROUBLESHOOTING.md",
"language_code": "bg"
},
+ "__translation_failures__": {
+ "sketchnotes/LICENSE.md": {
+ "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f",
+ "source_file": "sketchnotes/LICENSE.md",
+ "language_code": "bg",
+ "failure_date": "2026-07-14T06:20:21+00:00",
+ "status": "failed",
+ "error_type": "TranslationIncompleteError",
+ "error_message": "Markdown translation remained incomplete for chunk 1.1.1 of 'LICENSE.md', and the chunk could not be split further.",
+ "translator_version": "0.20.0",
+ "failure_policy_version": 1
+ }
+ },
"docs/_sidebar.md": {
"original_hash": "68dd06c685f6ce840e0acfa313352e7c",
"translation_date": "2025-09-05T00:07:57+00:00",
diff --git a/translations/bg/1-Introduction/3-fairness/README.md b/translations/bg/1-Introduction/3-fairness/README.md
index be927a095..94e339ce2 100644
--- a/translations/bg/1-Introduction/3-fairness/README.md
+++ b/translations/bg/1-Introduction/3-fairness/README.md
@@ -1,140 +1,167 @@
-# Създаване на решения за машинно обучение с отговорен AI
-
-
-> Скица от [Tomomi Imura](https://www.twitter.com/girlie_mac)
-
-## [Тест преди лекцията](https://ff-quizzes.netlify.app/en/ml/)
+# Създаване на решения за машинно обучение с отговорен ИИ
+
+
+> Скичнот от [Tomomi Imura](https://www.twitter.com/girlie_mac)
+## [Квиз преди лекцията](https://ff-quizzes.netlify.app/en/ml/)
+
## Въведение
-В този учебен материал ще започнете да откривате как машинното обучение може да влияе и вече влияе на нашето ежедневие. Дори сега системи и модели участват в ежедневни задачи за вземане на решения, като диагностика в здравеопазването, одобрение на заеми или откриване на измами. Затова е важно тези модели да работят добре, за да предоставят резултати, които са надеждни. Както всяко софтуерно приложение, AI системите могат да не оправдаят очакванията или да доведат до нежелани резултати. Ето защо е от съществено значение да можем да разберем и обясним поведението на AI модела.
+В тази учебна програма ще започнете да откривате как машинното обучение може и оказва влияние върху нашия всекидневен живот. Дори сега, системи и модели участват в ежедневни задачи за вземане на решения, като диагнози в здравеопазването, одобрения на заеми или откриване на измами. Затова е важно тези модели да работят добре, за да предоставят резултати, на които може да се има доверие. Също като всяко софтуерно приложение, системите с ИИ могат да не отговарят на очакванията или да имат нежелан резултат. Затова е от съществено значение да можем да разбираме и обясняваме поведението на ИИ моделите.
-Представете си какво може да се случи, когато данните, които използвате за изграждане на тези модели, липсват определени демографски характеристики, като раса, пол, политически възгледи, религия, или непропорционално представят такива демографски характеристики. А какво става, когато изходът на модела се интерпретира така, че да фаворизира определена демографска група? Какви са последствията за приложението? Освен това, какво се случва, когато моделът има неблагоприятен резултат и вреди на хората? Кой носи отговорност за поведението на AI системите? Това са някои от въпросите, които ще разгледаме в този учебен материал.
+Представете си какво може да се случи, когато данните, които използвате за изграждане на тези модели, липсват определени демографски групи, като раса, пол, политически възгледи, религия, или непропорционално представят такива групи. Какво става, когато изходът на модела се интерпретира в полза на някоя демографска група? Какви са последствията за приложението? Освен това, какво се случва, когато моделът има неблагоприятен резултат и вреди на хората? Кой е отговорен за поведението на ИИ системите? Това са някои от въпросите, които ще разгледаме в тази учебна програма.
В този урок ще:
-- Повишите осведомеността си за важността на справедливостта в машинното обучение и вредите, свързани със справедливостта.
-- Станете запознати с практиката за изследване на изключения и необичайни сценарии, за да гарантирате надеждност и безопасност.
-- Разберете необходимостта от създаване на инклузивни системи, които дават възможност на всички.
-- Изследвате колко важно е да се защитава поверителността и сигурността на данните и хората.
-- Видите значението на подхода "стъклена кутия" за обяснение на поведението на AI моделите.
-- Бъдете внимателни към това как отговорността е от съществено значение за изграждане на доверие в AI системите.
+- Повишите осведомеността си за важността на справедливостта в машинното обучение и свързаните с нея вреди.
+- Запознаете се с практиката за изследване на отклонения и необичайни ситуации, за да се гарантира надеждност и безопасност
+- Разберете необходимостта от овластяване на всички чрез проектиране на приобщаващи системи
+- Изследвате колко е важно да се защитят поверителността и сигурността на данните и хората
+- Видите важността на подхода с прозрачна кутия, за да се обясни поведението на ИИ моделите
+- Осъзнаете как отговорността е съществена за изграждането на доверие в ИИ системите
-## Предварителни изисквания
+## Изисквания
-Като предварително изискване, моля, преминете през учебния път "Принципи на отговорния AI" и гледайте видеото по-долу на тази тема:
+Като предварително изискване, моля, преминете "Принципи на отговорен ИИ" и изгледайте видеото по-долу по темата:
-Научете повече за отговорния AI, като следвате този [учебен път](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)
+Научете повече за отговорния ИИ, като следвате този [Обучителен път](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)
-[](https://youtu.be/dnC8-uUZXSc "Подходът на Microsoft към отговорния AI")
+[](https://youtu.be/dnC8-uUZXSc "Подходът на Microsoft към отговорния ИИ")
-> 🎥 Кликнете върху изображението по-горе за видео: Подходът на Microsoft към отговорния AI
+> 🎥 Кликнете върху изображението по-горе за видео: Подходът на Microsoft към отговорния ИИ
## Справедливост
-AI системите трябва да третират всички справедливо и да избягват различно въздействие върху сходни групи хора. Например, когато AI системите предоставят насоки за медицинско лечение, заявления за заеми или заетост, те трябва да правят същите препоръки на всички със сходни симптоми, финансови обстоятелства или професионални квалификации. Всеки от нас като хора носи наследени предразсъдъци, които влияят на нашите решения и действия. Тези предразсъдъци могат да бъдат очевидни в данните, които използваме за обучение на AI системи. Такава манипулация понякога може да се случи неволно. Често е трудно съзнателно да се осъзнае кога въвеждате предразсъдъци в данните.
+ИИ системите трябва да третират всички справедливо и да избягват да засягат подобни групи хора по различен начин. Например, когато ИИ системи предоставят насока за медицинско лечение, заявления за заеми или заетост, те трябва да дават същите препоръки на всички с подобни симптоми, финансова ситуация или професионални квалификации. Всеки от нас като човек носи в себе си унаследени предразсъдъци, които влияят на нашите решения и действия. Тези предразсъдъци могат да са видими в данните, с които обучаваме ИИ системи. Такова манипулиране понякога се случва несъзнателно. Често е трудно да осъзнаете кога въвеждате пристрастие в данните.
-**„Несправедливост“** обхваща негативни въздействия или „вреди“ за група хора, като тези, дефинирани по отношение на раса, пол, възраст или статус на инвалидност. Основните вреди, свързани със справедливостта, могат да бъдат класифицирани като:
+**„Несправедливостта“** обхваща отрицателни въздействия, или „вреди“, за група хора, например определени чрез раса, пол, възраст или статус на увреждане. Основните вреди, свързани със справедливостта, могат да се класифицират като:
-- **Разпределение**, ако например даден пол или етнос е предпочитан пред друг.
-- **Качество на услугата**. Ако обучите данните за един специфичен сценарий, но реалността е много по-сложна, това води до лошо представяне на услугата. Например, дозатор за сапун, който не може да разпознае хора с тъмна кожа. [Референция](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
-- **Омаловажаване**. Несправедливо критикуване и етикетиране на нещо или някого. Например, технология за етикетиране на изображения, която скандално етикетира изображения на хора с тъмна кожа като горили.
-- **Прекомерно или недостатъчно представяне**. Идеята е, че определена група не се вижда в определена професия, и всяка услуга или функция, която продължава да насърчава това, допринася за вреда.
-- **Стереотипизиране**. Свързване на дадена група с предварително зададени атрибути. Например, система за превод между английски и турски може да има неточности поради думи със стереотипни асоциации към пола.
+- **Разпределение**, ако например се фаворизира пол или етнос пред друг.
+- **Качество на услугата**. Ако обучите данните за един конкретен сценарий, но реалността е много по-сложна, това води до лошо представяне. Например, дозатор за течен сапун, който изглежда не може да разпознава хора с тъмна кожа. [Референция](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 продукти с по-добри преживявания, които са от полза за всички.
+ИИ системите трябва да бъдат проектирани така, че да ангажират и овластят всички. При проектиране и внедряване на ИИ системи, датасайнтисти и разработчици на ИИ идентифицират и адресират потенциални бариери в системата, които могат несъзнателно да изключат хора. Например, има 1 милиард хора с увреждания по света. С напредъка на ИИ те могат по-лесно да имат достъп до широка гама от информация и възможности в своя ежедневен живот. Като се адресират бариерите, се създават възможности за иновации и разработване на ИИ продукти с по-добро потребителско изживяване, които да са от полза за всички.
-> [🎥 Кликнете тук за видео: инклузивност в AI](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
+> [🎥 Кликнете тук за видео: приобщаване в ИИ](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
### Сигурност и поверителност
-AI системите трябва да бъдат безопасни и да уважават поверителността на хората. Хората имат по-малко доверие в системи, които поставят тяхната поверителност, информация или живот в риск. Когато обучаваме модели за машинно обучение, разчитаме на данни, за да постигнем най-добри резултати. В този процес трябва да се вземе предвид произходът и интегритетът на данните. Например, дали данните са предоставени от потребители или са публично достъпни? Освен това, докато работим с данните, е важно да разработим AI системи, които могат да защитят конфиденциална информация и да устоят на атаки. С разпространението на AI защитата на поверителността и сигурността на важна лична и бизнес информация става все по-критична и сложна. Въпросите за поверителност и сигурност на данните изискват особено внимание за AI, защото достъпът до данни е от съществено значение за AI системите, за да правят точни и информирани прогнози и решения за хората.
+ИИ системите трябва да бъдат безопасни и да уважават личната неприкосновеност на хората. Хората имат по-малко доверие в системи, които застрашават тяхната поверителност, информация или живот. При обучението на модели за машинно обучение разчитаме на данни, за да получим най-добрите резултати. При това, трябва да се вземе под внимание произходът и интегритетът на данните. Например, потребителски данни ли са или са публично достъпни? След това, при работа с данните, е важно да се разработят ИИ системи, които могат да защитят конфиденциална информация и да устоят на атаки. С нарастващото използване на ИИ защитата на поверителността и сигурността на важна лична и бизнес информация става все по-критична и сложна. Въпросите за поверителността и сигурността на данните изискват особено внимание за ИИ, защото достъпът до данни е от съществено значение за ИИ системите да правят точни и информирани прогнози и решения за хората.
-> [🎥 Кликнете тук за видео: сигурност в AI](https://www.microsoft.com/videoplayer/embed/RE4voJF)
+> [🎥 Кликнете тук за видео: сигурност в ИИ](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- Като индустрия постигнахме значителен напредък в поверителността и сигурността, значително подпомогнат от регулации като GDPR (Общ регламент за защита на данните).
-- Въпреки това, с AI системите трябва да признаем напрежението между нуждата от повече лични данни за правене на системите по-лични и ефективни – и поверителността.
-- Както при раждането на свързани компютри с интернет, наблюдаваме огромен ръст в броя на проблемите със сигурността, свързани с AI.
-- В същото време виждаме AI, използван за подобряване на сигурността. Например, повечето съвременни антивирусни скенери се задвижват от AI евристики.
-- Трябва да гарантираме, че нашите процеси за анализ на данни хармонично се съчетават с най-новите практики за поверителност и сигурност.
+- Като индустрия направихме значителни напредъци в областта на Поверителност и сигурност, значително подпомогнати от регулации като GDPR (Общ регламент за защита на данните).
+- Въпреки това при ИИ системите трябва да признаем напрежението между нуждата от повече лични данни, за да се направят системите по-персонални и ефективни – и личната неприкосновеност.
+- Както при раждането на свързаните компютри с интернет, също виждаме голямо увеличение на броя на проблемите със сигурността, свързани с ИИ.
+- В същото време видяхме ИИ да се използва за подобряване на сигурността. Например, повечето съвременни антивирусни скенери днес се управляват от ИИ евристики.
+- Трябва да гарантираме, че нашите процеси в областта на данните се интегрират хармонично с най-новите практики за поверителност и сигурност.
-### Прозрачност
-AI системите трябва да бъдат разбираеми. Ключова част от прозрачността е обяснението на поведението на AI системите и техните компоненти. Подобряването на разбирането на AI системите изисква заинтересованите страни да разберат как и защо те функционират, за да могат да идентифицират потенциални проблеми с производителността, опасения за безопасността и поверителността, предразсъдъци, изключващи практики или нежелани резултати. Също така вярваме, че тези, които използват AI системи, трябва да бъдат честни и открити относно това кога, защо и как решават да ги внедрят, както и ограниченията на системите, които използват. Например, ако банка използва AI система за подпомагане на решения за потребителско кредитиране, важно е да се изследват резултатите и да се разбере кои данни влияят на препоръките на системата. Правителствата започват да регулират AI в различни индустрии, така че специалистите по данни и организациите трябва да обяснят дали AI системата отговаря на регулаторните изисквания, особено когато има нежелан резултат.
+### Прозрачност
+ИИ системите трябва да са разбираеми. Ключова част от прозрачността е обяснението на поведението на ИИ системите и техните компоненти. Подобряването на разбирането за ИИ системите изисква заинтересованите страни да разберат как и защо те функционират, за да могат да идентифицират потенциални проблеми с представянето, проблеми със сигурността и поверителността, пристрастия, изключващи практики или нежелани резултати. Ние също вярваме, че тези, които използват ИИ системи, трябва да бъдат честни и откровени за това кога, защо и как избират да ги внедрят. Както и за ограниченията на системите, които използват. Например, ако банка използва ИИ система, за да подпомогне решенията при кредитиране на потребители, е важно да се прегледат резултатите и да се разбере кои данни влияят върху препоръките на системата. Правителствата започват да регулират ИИ в различни индустрии, затова датасайнтисти и организации трябва да могат да обяснят дали ИИ система отговаря на регулаторните изисквания, особено при нежелан резултат.
-> [🎥 Кликнете тук за видео: прозрачност в AI](https://www.microsoft.com/videoplayer/embed/RE4voJF)
+> [🎥 Кликнете тук за видео: прозрачност в ИИ](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- Тъй като AI системите са толкова сложни, е трудно да се разбере как работят и да се интерпретират резултатите.
-- Тази липса на разбиране влияе върху начина, по който тези системи се управляват, оперативизират и документират.
-- Тази липса на разбиране, по-важното, влияе върху решенията, взети въз основа на резултатите, които тези системи произвеждат.
+- Поради сложността на ИИ системите е трудно да се разбере как работят и да се интерпретират резултатите.
+- Този недостиг на разбиране влияе на начина, по който системите се управляват, експлоатират и документират.
+- Още по-важно е, че това недоразумение влияе на решенията, изготвени на базата на резултатите, които тези системи генерират.
### Отговорност
+
+Хората, които проектират и внедряват ИИ системи, трябва да бъдат отговорни за начина, по който техните системи работят. Необходимостта от отговорност е особено важна при чувствителни технологии като лицево разпознаване. Наскоро има нарастващо търсене на технология за лицево разпознаване, особено от правоохранителни органи, които виждат потенциала на технологията за намиране на изчезнали деца. Въпреки това тези технологии потенциално могат да бъдат използвани от правителство, за да застрашат основните свободи на гражданите, например чрез осигуряване на непрекъснато наблюдение на определени лица. Поради това датасайнтисти и организации трябва да носят отговорност за това как техните ИИ системи влияят на индивиди или обществото.
-Хората, които проектират и внедряват AI системи, трябва да бъдат отговорни за начина, по който техните системи функционират. Необходимостта от отговорност е особено важна при чувствителни технологии като разпознаване на лица. Напоследък има нарастващо търсене на технологии за разпознаване на лица, особено от организации за правоприлагане, които виждат потенциала на технологията в приложения като намиране на изчезнали деца. Въпреки това, тези технологии могат потенциално да бъдат използвани от правителство, за да поставят основните свободи на гражданите в риск, например чрез непрекъснато наблюдение на конкретни лица. Затова специалистите по данни и организациите трябва да бъдат отговорни за начина, по който тяхната AI система влияе на индивидите или обществото.
+[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Подходът на Microsoft към отговорния ИИ")
-[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Подходът на Microsoft към отговорния AI")
+> 🎥 Кликнете върху изображението по-горе за видео: Предупреждения за масово наблюдение чрез лицево разпознаване
-> 🎥 Кликнете върху изображението по-горе за видео: Предупреждения за масово наблюдение чрез разпознаване на лица
-
-В крайна сметка един от най-големите въпроси за нашето поколение, като първото поколение, което въвежда AI в обществото, е как да гарантираме, че компютрите ще останат отговорни пред хората и как да гарантираме, че хората, които проектират компютри, остават отговорни пред всички останали.
+В крайна сметка един от най-големите въпроси за нашето поколение, като първото поколение, което въвежда ИИ в обществото, е как да се гарантира, че компютрите ще останат отговорни пред хората и как да се гарантира, че хората, които проектират компютрите, остават отговорни пред всички останали.
## Оценка на въздействието
-Преди да обучите модел за машинно обучение, е важно да проведете оценка на въздействието, за да разберете целта на AI системата; какво е предназначението ѝ; къде ще бъде внедрена; и кой ще взаимодейства със системата. Това е полезно за рецензенти или тестери, които оценяват системата, за да знаят какви фактори да вземат предвид при идентифициране на потенциални рискове и очаквани последствия.
+Преди да се обучи модел за машинно обучение, е важно да се проведе оценка на въздействието, за да се разбере целта на ИИ системата; как е предназначена да се използва; къде ще бъде внедрена; и кой ще взаимодейства със системата. Това е полезно за рецензенти или тестери, които ще оценяват системата, за да знаят кои фактори да вземат предвид при идентифициране на потенциални рискове и очаквани последствия.
+
+Следните области са във фокуса при провеждане на оценка на въздействието:
+
+* **Неблагоприятно въздействие върху индивидите**. Осъзнаването на всякакви ограничения или изисквания, неподдържана употреба или известни ограничения, които възпрепятстват представянето на системата, е от съществено значение, за да се гарантира, че системата не се използва по начин, който може да навреди на индивидите.
+* **Изисквания към данните**. Разбирането как и къде системата ще използва данни позволява на рецензентите да проучат всякакви изисквания към данните, които трябва да се спазват (напр. GDPR или HIPAA регулации). Освен това, да се провери дали източникът или количеството данни е достатъчно за обучението.
+* **Обобщение на въздействието**. Събират се списък с потенциални вреди, които могат да възникнат от използването на системата. През целия жизнен цикъл на машинното обучение се преглежда дали идентифицираните проблеми са смекчени или адресирани.
+* **Приложими цели** за всеки от шестте основни принципа. Оценява се дали целите от всеки от принципите са изпълнени и дали съществуват пропуски.
+
+
+## Отстраняване на грешки с отговорен ИИ
+
+Подобно на отстраняването на грешки при софтуерно приложение, отстраняването на грешки в ИИ система е необходим процес за идентифициране и разрешаване на проблеми в системата. Много фактори могат да повлияят на това моделът да не работи според очакванията или отговорно. Повечето традиционни метрики за представяне на модела са количествени агрегати на представянето, които не са достатъчни за анализ на нарушения на принципите на отговорен ИИ. Освен това, моделът за машинно обучение е черна кутия, която затруднява разбиране на движущите фактори зад резултата или даването на обяснение при грешка. По-нататък в курса ще научите как да използвате таблото за отговорен ИИ, за да помогнете при отстраняване на грешки на ИИ системи. Таблото предоставя цялостен инструмент за датасайнтисти и разработчици на ИИ да изпълняват:
+
+* **Анализ на грешки**. За идентифициране на разпределението на грешките на модела, които могат да повлияят на справедливостта или надеждността на системата.
+* **Преглед на модела**. За откриване на различия в представянето на модела сред групи данни.
+* **Анализ на данните**. За разбиране на разпределението на данните и идентифициране на потенциална пристрастност, която може да доведе до проблеми със справедливостта, приобщаването и надеждността.
+* **Интерпретируемост на модела**. За да се разбере какво влияе или определя прогнозите на модела. Това помага при обяснението на поведението на модела, което е важно за прозрачност и отговорност.
+
+
+## 🚀 Предизвикателство
+
+За да предотвратим въвеждането на вреди още в началото, трябва:
+
+- да имаме разнообразие от среди и гледни точки сред хората, работещи по системите
+- да инвестираме в набори от данни, които отразяват многообразието на нашето общество
+- да разработваме по-добри методи през целия жизнен цикъл на машинното обучение за откриване и коригиране на нарушения на отговорния ИИ, когато възникнат
-Следните са области на фокус при провеждане на оценка на въздействието:
+Помислете за реални ситуации, в които недоверие към модел е очевидно при изграждане и използване на модел. Какво още трябва да вземем под внимание?
-* **Неблагоприятно въздействие върху индивидите**. Осъзнаването на всякакви ограничения или изисквания, неподдържана употреба или известни ограничения, които възпрепятстват производителността на системата, е жизненоважно, за да се гарантира, че системата не се използва по начин, който може да причини вреда на индивидите.
-* **Изисквания за данни**. Разбирането на това как и къде системата ще използва данни позволява на рецензентите да изследват всякакви изисквания за данни, които трябва да се вземат предвид (например, GDPR или HIPPA регулации за данни). Освен това, проверете дали източникът или количеството данни са достатъчни за обучение.
-* **Обобщение на въздействието**. Съберете списък с потенциални вреди, които могат да възникнат от използването на системата. През целия жизнен цикъл на ML проверявайте дали идентифицираните проблеми са смекчени или адресирани.
-* **Приложими цели** за всяка от шестте основни принципа. Оценете дали целите от всеки принцип са постигнати и дали има пропуски.
+## [Квиз след лекцията](https://ff-quizzes.netlify.app/en/ml/)
-## Дебъгване с отговорен AI
+## Преглед и самостоятелно изучаване
+
-Подобно на дебъгването на софтуерно приложение, дебъгването на AI система е необходим процес за идентифициране и разрешаване на проблеми в системата. Има много фактори, които могат да повлияят на модела да не работи според очакванията или отговорно. Повечето традиционни метрики за производителност на модела са количествени агрегати на производителността на модела, които не са достатъчни за анализиране как моделът нарушава принципите на отговорния AI. Освен това, моделът за машинно обучение е черна кутия, което затруднява разбирането на това, което движи неговия резултат или предоставянето на обяснение, когато прави греш
-Гледайте този уъркшоп, за да се задълбочите в темите:
+В този урок научихте някои основи на концепциите за справедливост и несправедливост в машинното обучение.
+
+Гледайте този уъркшоп, за да се потопите по-дълбоко в темите:
-- В търсене на отговорен AI: Превръщане на принципите в практика от Бесмира Нуши, Мехрнуш Самеки и Амит Шарма
+- В преследване на отговорния изкуствен интелект: Прилагането на принципите на практика от Бесмира Нуши, Мехрнуш Самеки и Амит Шарма
-[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: Отворена рамка за изграждане на отговорен AI")
+[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI")
-> 🎥 Кликнете върху изображението по-горе за видео: RAI Toolbox: Отворена рамка за изграждане на отговорен AI от Бесмира Нуши, Мехрнуш Самеки и Амит Шарма
+> 🎥 Кликнете върху изображението по-горе за видео: RAI Toolbox: Отворена рамка за изграждане на отговорен ИИ от Бесмира Нуши, Мехрнуш Самеки и Амит Шарма
-Също така, прочетете:
+Също така, прочетете:
-- Ресурсният център на Microsoft за отговорен AI: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
+- Ресурсен център за отговорен ИИ на Microsoft: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
-- Изследователската група FATE на Microsoft: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
+- Изследователска група FATE на Microsoft: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
-RAI Toolbox:
+RAI Toolbox:
-- [GitHub хранилище на Responsible AI Toolbox](https://github.com/microsoft/responsible-ai-toolbox)
+- [Отворено хранилище GitHub на Responsible AI Toolbox](https://github.com/microsoft/responsible-ai-toolbox)
-Прочетете за инструментите на Azure Machine Learning за осигуряване на справедливост:
+Прочетете за инструментите на Azure Machine Learning за гарантиране на справедливост:
-- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
+- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
## Задача
-[Разгледайте RAI Toolbox](assignment.md)
+[Изследвайте RAI Toolbox](assignment.md)
---
-**Отказ от отговорност**:
-Този документ е преведен с помощта на AI услуга за превод [Co-op Translator](https://github.com/Azure/co-op-translator). Въпреки че се стремим към точност, моля, имайте предвид, че автоматизираните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия роден език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален човешки превод. Ние не носим отговорност за недоразумения или погрешни интерпретации, произтичащи от използването на този превод.
\ No newline at end of file
+
+**Отказ от отговорност**:
+Този документ е преведен с помощта на AI преводачески услуга [Co-op Translator](https://github.com/Azure/co-op-translator). Въпреки че се стремим към точност, моля имайте предвид, че автоматизираните преводи могат да съдържат грешки или неточности. Оригиналният документ на неговия роден език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален човешки превод. Ние не носим отговорност за каквито и да е недоразумения или неправилни тълкувания, произтичащи от използването на този превод.
+
\ No newline at end of file
diff --git a/translations/bg/2-Regression/1-Tools/README.md b/translations/bg/2-Regression/1-Tools/README.md
index cee531bf5..386d777f9 100644
--- a/translations/bg/2-Regression/1-Tools/README.md
+++ b/translations/bg/2-Regression/1-Tools/README.md
@@ -1,55 +1,55 @@
# Започнете с Python и Scikit-learn за регресионни модели
-
+
-> Скица от [Tomomi Imura](https://www.twitter.com/girlie_mac)
+> Скицник от [Tomomi Imura](https://www.twitter.com/girlie_mac)
-## [Тест преди лекцията](https://ff-quizzes.netlify.app/en/ml/)
+## [Квиз преди лекцията](https://ff-quizzes.netlify.app/en/ml/)
> ### [Този урок е наличен и на R!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
## Въведение
-В тези четири урока ще научите как да изграждате регресионни модели. Ще обсъдим за какво служат те след малко. Но преди да започнете, уверете се, че разполагате с правилните инструменти, за да стартирате процеса!
+В тези четири урока ще откриете как да изграждате регресионни модели. Скоро ще обсъдим за какво служат те. Но преди да започнете каквото и да е, уверете се, че имате правилните инструменти за започване на процеса!
В този урок ще научите как да:
-- Конфигурирате компютъра си за локални задачи по машинно обучение.
-- Работите с Jupyter notebooks.
+- Конфигурирате вашия компютър за локални задачи за машинно обучение.
+- Работите с Jupyter Notebooks.
- Използвате Scikit-learn, включително инсталация.
-- Изследвате линейна регресия чрез практическо упражнение.
+- Изследвате линейната регресия чрез практически упражнение.
## Инсталации и конфигурации
-[](https://youtu.be/-DfeD2k2Kj0 "Машинно обучение за начинаещи - Настройте инструментите си за изграждане на модели за машинно обучение")
+[](https://youtu.be/-DfeD2k2Kj0 "ML за начинаещи - Настройте инструментите си готови за изграждане на модели за машинно обучение")
-> 🎥 Кликнете върху изображението по-горе за кратко видео за конфигуриране на компютъра за машинно обучение.
+> 🎥 Кликнете върху изображението горе за кратко видео със стъпките за конфигуриране на компютъра за 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), които улесняват настройката за някои потребители.
+1. **Инсталирайте Python**. Уверете се, че на вашия компютър е инсталиран [Python](https://www.python.org/downloads/). Ще използвате Python за много задачи в науката за данни и машинното обучение. Повечето компютърни системи вече включват инсталация на Python. Има полезни [Python пакети за кодиране](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott), които улесняват настройката за някои потребители.
- Някои приложения на Python обаче изискват една версия на софтуера, докато други изискват различна версия. Поради тази причина е полезно да работите в [виртуална среда](https://docs.python.org/3/library/venv.html).
+ Някои употреби на Python обаче изискват една версия на софтуера, а други - различна версия. Поради тази причина е полезно да работите в [виртуална среда](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 в този курс, така че може да е полезно да се запознаете с [конфигурирането на Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) за разработка с Python.
+2. **Инсталирайте Visual Studio Code**. Уверете се, че имате инсталиран Visual Studio Code на компютъра си. Следвайте тези инструкции, за да [инсталирате Visual Studio Code](https://code.visualstudio.com/). Ще използвате Python във Visual Studio Code в този курс, затова може да искате да научите как да [конфигурирате Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) за Python разработка.
- > Запознайте се с Python, като преминете през тази колекция от [модули за обучение](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)
+ > Запознайте се с Python чрез този сбор от [учебни модули](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)
>
> [](https://youtu.be/yyQM70vi7V8 "Настройка на Python с Visual Studio Code")
>
- > 🎥 Кликнете върху изображението по-горе за видео: използване на Python във VS Code.
+ > 🎥 Кликнете върху изображението горе за видео: използване на Python във VS Code.
-3. **Инсталирайте Scikit-learn**, като следвате [тези инструкции](https://scikit-learn.org/stable/install.html). Тъй като трябва да използвате Python 3, препоръчително е да използвате виртуална среда. Обърнете внимание, че ако инсталирате тази библиотека на Mac с M1, има специални инструкции на страницата, посочена по-горе.
+3. **Инсталирайте Scikit-learn**, като следвате [тези инструкции](https://scikit-learn.org/stable/install.html). Тъй като трябва да използвате Python 3, препоръчително е да използвате виртуална среда. Забележете, ако инсталирате тази библиотека на M1 Mac, има специални инструкции на гореспоменатия сайт.
-4. **Инсталирайте Jupyter Notebook**. Ще трябва да [инсталирате пакета Jupyter](https://pypi.org/project/jupyter/).
+1. **Инсталирайте Jupyter Notebook**. Трябва да [инсталирате пакета Jupyter](https://pypi.org/project/jupyter/).
-## Вашата среда за авторство на машинно обучение
+## Вашата среда за разработка на ML
-Ще използвате **notebooks**, за да разработвате своя Python код и да създавате модели за машинно обучение. Този тип файлове е често срещан инструмент за специалисти по данни и може да бъде разпознат по разширението `.ipynb`.
+Ще използвате **notebooks** за разработка на Python код и създаване на модели за машинно обучение. Този тип файлове е общ инструмент за специалисти по данни, и могат да бъдат разпознати по суфикса или разширението `.ipynb`.
-Notebooks са интерактивна среда, която позволява на разработчика както да кодира, така и да добавя бележки и документация около кода, което е доста полезно за експериментални или изследователски проекти.
+Notebooks са интерактивна среда, която позволява на разработчика както да кодира, така и да добавя бележки и документация около кода, което е много полезно за експериментални или изследователски проекти.
-[](https://youtu.be/7E-jC8FLA2E "Машинно обучение за начинаещи - Настройка на Jupyter Notebooks за започване на изграждане на регресионни модели")
+[](https://youtu.be/7E-jC8FLA2E "ML за начинаещи - Настройте Jupyter Notebooks, за да започнете изграждане на регресионни модели")
-> 🎥 Кликнете върху изображението по-горе за кратко видео за това упражнение.
+> 🎥 Кликнете върху изображението горе за кратко видео с упражнението.
### Упражнение - работа с notebook
@@ -57,50 +57,51 @@ Notebooks са интерактивна среда, която позволяв
1. Отворете _notebook.ipynb_ във Visual Studio Code.
- Ще стартира Jupyter сървър с Python 3+. Ще намерите области в notebook-а, които могат да бъдат `изпълнени`, т.е. части от код. Можете да изпълните блок с код, като изберете иконата, която изглежда като бутон за възпроизвеждане.
+ Ще стартира Jupyter сървър с Python 3+. Ще намерите области на notebook-а, които могат да се `изпълнят`, парчета код. Можете да стартирате блок код, като изберете иконата, която прилича на бутон за пускане.
-2. Изберете иконата `md` и добавете малко markdown с текста **# Добре дошли в своя notebook**.
+1. Изберете иконата `md` и добавете малко markdown с текста **# Добре дошли във вашия notebook**.
След това добавете малко Python код.
-3. Въведете **print('hello notebook')** в блока с код.
-4. Изберете стрелката, за да изпълните кода.
+1. Въведете **print('hello notebook')** в блока с код.
+1. Изберете стрелката, за да стартирате кода.
- Трябва да видите отпечатаното съобщение:
+ Трябва да видите отпечатаното изявление:
```output
hello notebook
```
-
+
-Можете да преплитате кода си с коментари, за да документирате сами notebook-а.
+Можете да редувате вашия код с коментари, за да документирате notebook-а.
-✅ Помислете за момент колко различна е работната среда на уеб разработчика в сравнение с тази на специалиста по данни.
+✅ Помислете за момент колко различна е работната среда на уеб разработчик спрямо тази на специалист по данни.
-## Стартиране със Scikit-learn
+## Натам и с Scikit-learn
-Сега, когато Python е настроен във вашата локална среда и сте се запознали с Jupyter notebooks, нека се запознаем и със Scikit-learn (произнася се `сай`, както в `наука`). Scikit-learn предоставя [обширен API](https://scikit-learn.org/stable/modules/classes.html#api-ref), който ще ви помогне да изпълнявате задачи по машинно обучение.
+Сега, когато Python е настроен във вашата локална среда и сте уверени с Jupyter Notebooks, нека се запознаем и с Scikit-learn (произнася се 'сай', както в 'science'). Scikit-learn предоставя [обширен API](https://scikit-learn.org/stable/modules/classes.html#api-ref), който да ви помогне с машинно-обучителни задачи.
-Според техния [уебсайт](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn е библиотека с отворен код за машинно обучение, която поддържа контролирано и неконтролирано обучение. Тя също така предоставя различни инструменти за напасване на модели, предварителна обработка на данни, избор и оценка на модели, както и много други полезности."
+Според техния [уебсайт](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn е библиотека с отворен код за машинно обучение, която поддържа надзирано и ненадзирано обучение. Тя също така предоставя различни инструменти за настройка на модели, предварителна обработка на данни, избор и оценка на модели и много други."
-В този курс ще използвате Scikit-learn и други инструменти, за да изграждате модели за машинно обучение за изпълнение на това, което наричаме 'традиционни задачи по машинно обучение'. Умишлено сме избегнали невронни мрежи и дълбоко обучение, тъй като те са по-добре обхванати в предстоящата ни учебна програма 'AI за начинаещи'.
+В този курс ще използвате Scikit-learn и други инструменти за изграждане на модели за машинно обучение, които изпълняват това, което наричаме 'традиционни задачи за машинно обучение'. Целенасочено сме избегнали невронните мрежи и дълбокото обучение, понеже те се разглеждат по-добре в предстоящия ни курс 'ИИ за начинаещи'.
-Scikit-learn прави изграждането и оценяването на модели лесно за използване. Тя е основно фокусирана върху използването на числови данни и съдържа няколко готови набора от данни за използване като учебни инструменти. Тя също така включва предварително изградени модели, които студентите могат да изпробват. Нека изследваме процеса на зареждане на предварително пакетирани данни и използване на вграден оценител за първия ML модел със Scikit-learn с някои основни данни.
+Scikit-learn улеснява изграждането и оценката на модели за използване. Тя е основно фокусирана върху числови данни и включва няколко готови набора от данни за учене. Също така включва предварително изградени модели за изпробване от студенти. Нека първо да разгледаме процеса на зареждане на предварително пакетирани данни и използване на вграден оценител - първи ML модел със Scikit-learn с някои основни данни.
## Упражнение - вашият първи Scikit-learn notebook
-> Това ръководство е вдъхновено от [примера за линейна регресия](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) на уебсайта на Scikit-learn.
+> Този урок е вдъхновен от [пример за линейна регресия](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) на уебсайта на Scikit-learn.
-[](https://youtu.be/2xkXL5EUpS0 "Машинно обучение за начинаещи - Вашият първи проект за линейна регресия в Python")
-> 🎥 Кликнете върху изображението по-горе за кратко видео за това упражнение.
+[](https://youtu.be/2xkXL5EUpS0 "ML за начинаещи - Вашият първи проект за линейна регресия в Python")
-Във файла _notebook.ipynb_, свързан с този урок, изчистете всички клетки, като натиснете иконата 'кошче'.
+> 🎥 Кликнете върху изображението горе за кратко видео с упражнението.
-В този раздел ще работите с малък набор от данни за диабет, който е вграден в Scikit-learn за учебни цели. Представете си, че искате да тествате лечение за пациенти с диабет. Моделите за машинно обучение могат да ви помогнат да определите кои пациенти биха реагирали по-добре на лечението въз основа на комбинации от променливи. Дори много основен регресионен модел, когато е визуализиран, може да покаже информация за променливи, които биха ви помогнали да организирате теоретичните си клинични изпитвания.
+Във файла _notebook.ipynb_, свързан с този урок, изчистете всички клетки, като натиснете иконата на 'кошче'.
-✅ Съществуват много видове методи за регресия, и кой ще изберете зависи от въпроса, на който искате да отговорите. Ако искате да предскажете вероятната височина на човек на дадена възраст, ще използвате линейна регресия, тъй като търсите **числова стойност**. Ако се интересувате дали даден вид кухня трябва да се счита за веганска или не, търсите **категорийно присвояване**, така че ще използвате логистична регресия. Ще научите повече за логистичната регресия по-късно. Помислете малко за въпроси, които можете да зададете на данните, и кой от тези методи би бил по-подходящ.
+В тази секция ще работите с малък набор от данни за диабет, вграден в Scikit-learn за учебни цели. Представете си, че искате да тествате лечение за диабетни пациенти. Моделите за машинно обучение може да ви помогнат да определите кои пациенти биха реагирали по-добре на лечението, базирайки се на комбинации от променливи. Дори много основен регресионен модел, визуализиран, може да покаже информация за променливи, която би помогнала при организирането на теоретични клинични изпитвания.
+
+✅ Има много видове регресионни методи, и кой ще изберете зависи от въпроса, който търсите да отговорите. Ако искате да предскажете вероятна височина за човек на определена възраст, ще използвате линейна регресия, тъй като търсите **числова стойност**. Ако ви интересува дали даден тип кухня трябва да се счита за веганска или не, търсите **класовa принадлежност**, затова ще използвате логистична регресия. Ще научите повече за логистичната регресия по-нататък. Помислете малко за някои въпроси, които можете да зададете на данни, и кой от тези методи би бил по-подходящ.
Нека започнем с тази задача.
@@ -108,11 +109,11 @@ Scikit-learn прави изграждането и оценяването на
За тази задача ще импортираме някои библиотеки:
-- **matplotlib**. Това е полезен [инструмент за графики](https://matplotlib.org/), който ще използваме за създаване на линейна графика.
+- **matplotlib**. Полезен [инструмент за графики](https://matplotlib.org/), който ще използваме за създаване на линейна графика.
- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) е полезна библиотека за работа с числови данни в Python.
- **sklearn**. Това е библиотеката [Scikit-learn](https://scikit-learn.org/stable/user_guide.html).
-Импортирайте някои библиотеки, за да ви помогнат със задачите.
+Импортирайте някои библиотеки, за да помогнете с вашите задачи.
1. Добавете импорти, като въведете следния код:
@@ -122,26 +123,26 @@ Scikit-learn прави изграждането и оценяването на
from sklearn import datasets, linear_model, model_selection
```
- По-горе импортирате `matplotlib`, `numpy` и импортирате `datasets`, `linear_model` и `model_selection` от `sklearn`. `model_selection` се използва за разделяне на данни на тренировъчни и тестови набори.
+ По-горе импортирате `matplotlib`, `numpy` и импортирате `datasets`, `linear_model` и `model_selection` от `sklearn`. `model_selection` се използва за разделяне на данните на обучителен и тестов комплект.
### Наборът от данни за диабет
-Вграденият [набор от данни за диабет](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) включва 442 проби от данни за диабет с 10 характеристични променливи, някои от които включват:
+Вграденият [набор от данни за диабет](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) включва 442 проби с данни за диабет с 10 характеристични променливи, някои от които са:
-- age: възраст в години
+- възраст: възраст в години
- bmi: индекс на телесна маса
- bp: средно кръвно налягане
-- s1 tc: Т-клетки (вид бели кръвни клетки)
+- s1 tc: T-клетки (вид бели кръвни клетки)
-✅ Този набор от данни включва концепцията за 'пол' като характеристична променлива, важна за изследванията около диабета. Много медицински набори от данни включват този тип бинарна класификация. Помислете малко как подобни категоризации могат да изключат определени части от населението от лечения.
+✅ Този набор от данни включва концепцията „пол“ като важна характеристична променлива за изследвания, свързани с диабета. Много медицински набори от данни включват този вид бинарна класификация. Помислете как такива категоризации могат да изключат определени части от населението от лечението.
Сега заредете данните X и y.
-> 🎓 Запомнете, това е контролирано обучение и ни трябва целева променлива 'y'.
+> 🎓 Запомнете, че това е надзиравано обучение, и ни трябва именована цел 'y'.
-В нова клетка с код заредете набора от данни за диабет, като извикате `load_diabetes()`. Входът `return_X_y=True` сигнализира, че `X` ще бъде матрица с данни, а `y` ще бъде целта на регресията.
+В нов кодов блок заредете набора от данни за диабет, като извикате `load_diabetes()`. Параметърът `return_X_y=True` указва, че `X` ще бъде матрица от данни, а `y` ще бъде целят за регресия.
-1. Добавете някои команди за печат, за да покажете формата на матрицата с данни и първия ѝ елемент:
+1. Добавете някои команди за печат, за да покажете размера на матрицата и първия й елемент:
```python
X, y = datasets.load_diabetes(return_X_y=True)
@@ -149,9 +150,9 @@ Scikit-learn прави изграждането и оценяването на
print(X[0])
```
- Това, което получавате като отговор, е кортеж. Това, което правите, е да присвоите първите две стойности на кортежа съответно на `X` и `y`. Научете повече [за кортежите](https://wikipedia.org/wiki/Tuple).
+ Това, което връщате като отговор, е кортеж. Това, което правите, е да присвоите първите две стойности на кортежа на `X` и `y` съответно. Научете повече [за кортежите](https://wikipedia.org/wiki/Tuple).
- Можете да видите, че тези данни имат 442 елемента, оформени в масиви от 10 елемента:
+ Можете да видите, че този набор има 442 елемента, подредени в масиви с по 10 елемента:
```text
(442, 10)
@@ -159,9 +160,9 @@ Scikit-learn прави изграждането и оценяването на
-0.04340085 -0.00259226 0.01990842 -0.01764613]
```
- ✅ Помислете малко за връзката между данните и целевата променлива. Линейната регресия предсказва връзките между характеристиката X и целевата променлива y. Можете ли да намерите [целта](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) за набора от данни за диабет в документацията? Какво демонстрира този набор от данни, като се има предвид целта?
+ ✅ Помислете малко за връзката между данните и целта на регресията. Линейната регресия предсказва връзки между характеристика X и целева променлива y. Можете ли да намерите [цела](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) за набора от данни за диабет в документацията? Какво демонстрира този набор от данни, предвид тази цел?
-2. След това изберете част от този набор от данни за графика, като изберете третата колона от набора от данни. Можете да направите това, като използвате оператора `:` за избор на всички редове и след това изберете третата колона, използвайки индекса (2). Можете също така да преформатирате данните в 2D масив - както се изисква за графиката - като използвате `reshape(n_rows, n_columns)`. Ако един от параметрите е -1, съответното измерение се изчислява автоматично.
+2. След това изберете част от този набор за изобразяване, като изберете 3-тата колона на набора. Можете да го направите, като използвате оператора `:` за избиране на всички редове, след което изберете 3-тата колона с индекс (2). Можете също да преформатирате данните в 2D масив - както е необходимо за изчертаване - чрез използване на `reshape(n_rows, n_columns)`. Ако един от параметрите е -1, съответното измерение се изчислява автоматично.
```python
X = X[:, 2]
@@ -170,28 +171,28 @@ Scikit-learn прави изграждането и оценяването на
✅ По всяко време отпечатвайте данните, за да проверите формата им.
-3. Сега, когато имате данни, готови за графика, можете да видите дали машината може да помогне за определяне на логическо разделение между числата в този набор от данни. За да направите това, трябва да разделите както данните (X), така и целта (y) на тестови и тренировъчни набори. Scikit-learn има лесен начин за това; можете да разделите тестовите си данни в дадена точка.
+3. Сега, когато имате данни, готови за изобразяване, можете да видите дали машината може да помогне за определяне на логично разделяне между числата в набора. За целта трябва да разделите както данните (X), така и целта (y) на тестови и обучителни множества. Scikit-learn има лесен начин да направите това; можете да разделите тестовите си данни в даден момент.
```python
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33)
```
-4. Сега сте готови да обучите модела си! Заредете модела за линейна регресия и го обучете с тренировъчните си набори X и y, използвайки `model.fit()`:
+4. Сега сте готови да обучите модела! Заредете линейния регресионен модел и го обучете с вашите обучителни множества X и y, използвайки `model.fit()`:
```python
model = linear_model.LinearRegression()
model.fit(X_train, y_train)
```
- ✅ `model.fit()` е функция, която ще виждате в много библиотеки за машинно обучение, като TensorFlow.
+ ✅ `model.fit()` е функция, която ще срещнете в много ML библиотеки като TensorFlow
-5. След това създайте предсказание, използвайки тестовите данни, с помощта на функцията `predict()`. Това ще се използва за начертаване на линия между групите данни.
+5. След това направете прогноза, използвайки тестовите данни, с функцията `predict()`. Това ще се използва за изчертаване на линия между групите данни.
```python
y_pred = model.predict(X_test)
```
-6. Сега е време да покажете данните в графика. Matplotlib е много полезен инструмент за тази задача. Създайте разпръсната графика на всички тестови данни X и y и използвайте предсказанието, за да начертаете линия на най-подходящото място между групите данни на модела.
+6. Сега е време да покажете данните в графика. Matplotlib е много полезен инструмент за тази задача. Създайте scatterplot на всички тестови данни X и y и използвайте прогнозата, за да нарисувате линия на най-подходящото място между групите данни на модела.
```python
plt.scatter(X_test, y_test, color='black')
@@ -202,28 +203,32 @@ Scikit-learn прави изграждането и оценяването на
plt.show()
```
- 
-✅ Помислете малко какво се случва тук. Една права линия минава през множество малки точки от данни, но какво точно прави тя? Можете ли да видите как бихте могли да използвате тази линия, за да предскажете къде нова, невиждана точка от данни би трябвало да се намира спрямо y оста на графиката? Опитайте се да обясните с думи практическата употреба на този модел.
+ 
+
+
+ ✅ Помислете малко върху това, което се случва тук. Една права линия преминава през множество малки точки с данни, но какво точно прави тя? Виждате ли как трябва да можете да използвате тази линия, за да предскажете къде нова, ненаблюдавана точка данни би трябвало да се разположи спрямо оста y на графиката? Опитайте да изразите с думи практическото приложение на този модел.
-Поздравления, създадохте първия си модел за линейна регресия, направихте предсказание с него и го визуализирахте в графика!
+Поздравления, създадохте първия си модел за линейна регресия, направихте прогноза с него и го визуализирахте в графика!
---
## 🚀Предизвикателство
-Начертайте графика с различна променлива от този набор от данни. Подсказка: редактирайте този ред: `X = X[:,2]`. С оглед на целта на този набор от данни, какво можете да откриете за прогресията на диабета като заболяване?
-## [Тест след лекцията](https://ff-quizzes.netlify.app/en/ml/)
+Начертайте друга променлива от този набор от данни. Подсказка: редактирайте този ред: `X = X[:,2]`. Като имате предвид целта на този набор от данни, какво можете да откриете за прогресията на диабета като заболяване?
+## [Куиз след лекцията](https://ff-quizzes.netlify.app/en/ml/)
-## Преглед и самостоятелно обучение
+## Преглед и Самостоятелно обучение
-В този урок работихте с проста линейна регресия, а не с унивариантна или множествена линейна регресия. Прочетете малко за разликите между тези методи или разгледайте [това видео](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef).
+В този урок работихте с проста линейна регресия, а не с унарна или множествена линейна регресия. Прочетете малко за разликите между тези методи или разгледайте [това видео](https://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), за да задълбочите разбирането си.
+Прочетете повече за концепцията за регресия и помислете какви въпроси могат да бъдат отговорени чрез тази техника. Вземете този [урок](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott), за да задълбочите разбирането си.
## Задача
-[Различен набор от данни](assignment.md)
+[Друг набор от данни](assignment.md)
---
-**Отказ от отговорност**:
-Този документ е преведен с помощта на AI услуга за превод [Co-op Translator](https://github.com/Azure/co-op-translator). Въпреки че се стремим към точност, моля, имайте предвид, че автоматизираните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия роден език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален човешки превод. Ние не носим отговорност за недоразумения или погрешни интерпретации, произтичащи от използването на този превод.
\ No newline at end of file
+
+**Отказ от отговорност**:
+Този документ е преведен с помощта на AI преводачески услуга [Co-op Translator](https://github.com/Azure/co-op-translator). Въпреки че се стремим към точност, моля имайте предвид, че автоматизираните преводи могат да съдържат грешки или неточности. Оригиналният документ на неговия роден език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален човешки превод. Ние не носим отговорност за каквито и да е недоразумения или неправилни тълкувания, произтичащи от използването на този превод.
+
\ No newline at end of file
diff --git a/translations/bg/2-Regression/2-Data/README.md b/translations/bg/2-Regression/2-Data/README.md
index b31b820f0..faf6f2f98 100644
--- a/translations/bg/2-Regression/2-Data/README.md
+++ b/translations/bg/2-Regression/2-Data/README.md
@@ -1,62 +1,62 @@
-# Създаване на регресионен модел с помощта на Scikit-learn: подготовка и визуализация на данни
+# Създаване на регресионен модел с помощта на Scikit-learn: подготвяне и визуализация на данни
-
+
Инфографика от [Dasani Madipalli](https://twitter.com/dasani_decoded)
-## [Тест преди лекцията](https://ff-quizzes.netlify.app/en/ml/)
+## [Квиз преди лекцията](https://ff-quizzes.netlify.app/en/ml/)
-> ### [Тази лекция е налична и на R!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
+> ### [Този урок е наличен на R!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
## Въведение
-След като сте настроили инструментите, необходими за изграждане на модели за машинно обучение със Scikit-learn, сте готови да започнете да задавате въпроси към вашите данни. Докато работите с данни и прилагате ML решения, е изключително важно да знаете как да задавате правилните въпроси, за да отключите потенциала на вашия набор от данни.
+След като вече разполагате с необходимите инструменти, за да започнете да създавате модели за машинно обучение със Scikit-learn, сте готови да започнете да задавате въпроси към своите данни. Когато работите с данни и прилагате решения с машинно обучение, е много важно да разберете как да зададете правилния въпрос, за да отключите пълния потенциал на вашия набор от данни.
-В тази лекция ще научите:
+В този урок ще научите:
-- Как да подготвите данните си за изграждане на модели.
+- Как да подготвите данните си за създаване на модел.
- Как да използвате Matplotlib за визуализация на данни.
+- Как да използвате Seaborn за по-изразителна визуализация на данни.
## Задаване на правилния въпрос към вашите данни
-Въпросът, който искате да получите отговор, ще определи какъв тип ML алгоритми ще използвате. А качеството на отговора, който ще получите, ще зависи силно от естеството на вашите данни.
+Въпросът, на който трябва да получите отговор, ще определи какъв вид алгоритми за машинно обучение ще използвате. А качеството на отговора, който получите, ще зависи силно от естеството на вашите данни.
-Разгледайте [данните](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv), предоставени за тази лекция. Можете да отворите този .csv файл в VS Code. Бърз преглед веднага показва, че има празни полета и смесица от текстови и числови данни. Има и странна колона, наречена 'Package', където данните са смесица от 'sacks', 'bins' и други стойности. Данните, всъщност, са малко хаотични.
+Разгледайте [данните](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 за начинаещи - Как да анализираме и почистим набор от данни")
+[](https://youtu.be/5qGjczWTrDQ "ML за начинаещи - Как да анализирате и почистите набор от данни")
-> 🎥 Кликнете върху изображението по-горе за кратко видео, което показва как да подготвите данните за тази лекция.
+> 🎥 Кликнете върху изображението по-горе за кратко видео, в което се разглежда подготовката на данните за този урок.
-Всъщност, не е много често да получите набор от данни, който е напълно готов за създаване на ML модел директно. В тази лекция ще научите как да подготвите суров набор от данни, използвайки стандартни Python библиотеки. Ще научите и различни техники за визуализация на данни.
+Всъщност не е често да получите директно набор от данни, който да е напълно готов за създаване на модел за машинно обучение. В този урок ще научите как да подготвите суров набор от данни, използвайки стандартни библиотеки на Python. Също така ще научите различни техники за визуализация на данните.
-## Казус: 'пазарът на тикви'
+## Казус: „пазара на тиквите“
-В тази папка ще намерите .csv файл в основната папка `data`, наречен [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv), който включва 1757 реда данни за пазара на тикви, сортирани по градове. Това са сурови данни, извлечени от [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice), разпространявани от Министерството на земеделието на САЩ.
+В тази папка ще намерите .csv файл в основната папка `data`, наречен [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv), който съдържа 1757 реда с данни за пазара на тикви, сортирани по групи по градове. Това са сурови данни, извлечени от [Специализираните терминални пазари за култури - стандартни отчети](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice), разпространявани от Министерството на земеделието на САЩ.
-### Подготовка на данни
+### Подготовка на данните
-Тези данни са в публичното пространство. Те могат да бъдат изтеглени в много отделни файлове, за всеки град, от уебсайта на USDA. За да избегнем твърде много отделни файлове, сме обединили всички данни за градовете в една електронна таблица, така че вече сме _подготвили_ данните малко. Сега нека разгледаме данните по-отблизо.
+Тези данни са в публично достояние. Могат да бъдат изтеглени в много отделни файлове, по градове, от уебсайта на USDA. За да избегнем твърде много отделни файлове, ние сме обединили всички градски данни в една таблица, така че вече сме леко _подготвили_ данните. След това нека разгледаме по-подробно данните.
### Данните за тиквите - първоначални заключения
-Какво забелязвате за тези данни? Вече видяхте, че има смесица от текстове, числа, празни полета и странни стойности, които трябва да разберете.
-
-Какъв въпрос можете да зададете към тези данни, използвайки регресионна техника? Например: "Предскажете цената на тиква за продажба през даден месец". Поглеждайки отново към данните, има някои промени, които трябва да направите, за да създадете необходимата структура на данните за задачата.
+Какво забелязвате по тези данни? Вече видяхте, че има смесица от низове, числа, празни места и странни стойности, които трябва да разберете.
+Какъв въпрос можете да зададете към тези данни, използвайки техника на регресия? Например „Прогнозирай цената на тиква за продажба през даден месец“. Като погледнете отново данните, има някои промени, които трябва да направите, за да създадете необходимата структура от данни за тази задача.
## Упражнение - анализирайте данните за тиквите
-Нека използваме [Pandas](https://pandas.pydata.org/) (името означава `Python Data Analysis`), инструмент, много полезен за оформяне на данни, за да анализираме и подготвим тези данни за тиквите.
+Нека използваме [Pandas](https://pandas.pydata.org/) (името означава `Python Data Analysis`), много полезен инструмент за оформяне на данни, за да анализираме и подготвим тези данни за тикви.
### Първо, проверете за липсващи дати
-Първо трябва да предприемете стъпки, за да проверите за липсващи дати:
+Първо ще трябва да предприемете стъпки, за да проверите за липсващи дати:
-1. Конвертирайте датите във формат на месец (това са американски дати, така че форматът е `MM/DD/YYYY`).
+1. Преобразувайте датите във формат месец (това са американски дати, така че форматът е `MM/DD/YYYY`).
2. Извлечете месеца в нова колона.
-Отворете файла _notebook.ipynb_ във Visual Studio Code и импортирайте електронната таблица в нов Pandas dataframe.
+Отворете файла _notebook.ipynb_ във Visual Studio Code и импортирайте таблицата в нов Pandas dataframe.
-1. Използвайте функцията `head()`, за да видите първите пет реда.
+1. Използвайте функцията `head()` за преглед на първите пет реда.
```python
import pandas as pd
@@ -64,7 +64,7 @@
pumpkins.head()
```
- ✅ Каква функция бихте използвали, за да видите последните пет реда?
+ ✅ Коя функция бихте използвали, за да видите последните пет реда?
1. Проверете дали има липсващи данни в текущия dataframe:
@@ -72,9 +72,9 @@
pumpkins.isnull().sum()
```
- Има липсващи данни, но може би това няма да е от значение за задачата.
+ Има липсващи данни, но може би това няма да е важно за настоящата задача.
-1. За да направите вашия dataframe по-лесен за работа, изберете само колоните, които ви трябват, използвайки функцията `loc`, която извлича от оригиналния dataframe група от редове (предадени като първи параметър) и колони (предадени като втори параметър). Изразът `:` в случая означава "всички редове".
+1. За да улесните работата с dataframe, изберете само нужните колони, като използвате функцията `loc`, която извлича от оригиналния dataframe група от редове (първи параметър) и колони (втори параметър). Изразът `:` в случая означава „всички редове“.
```python
columns_to_select = ['Package', 'Low Price', 'High Price', 'Date']
@@ -83,9 +83,9 @@
### Второ, определете средната цена на тиква
-Помислете как да определите средната цена на тиква през даден месец. Кои колони бихте избрали за тази задача? Подсказка: ще ви трябват 3 колони.
+Помислете как да определите средната цена на тиква за даден месец. Кои колони бихте избрали за тази задача? Подсказка: ще ви трябват 3 колони.
-Решение: вземете средната стойност на колоните `Low Price` и `High Price`, за да попълните новата колона Price, и конвертирайте колоната Date, за да показва само месеца. За щастие, според проверката по-горе, няма липсващи данни за дати или цени.
+Решение: вземете средната стойност на колоните `Low Price` и `High Price`, за да попълните новата колона Price, и преобразувайте колоната Date, така че да показва само месеца. За щастие, според проверката по-горе, няма липсващи данни за дати или цени.
1. За да изчислите средната стойност, добавете следния код:
@@ -98,35 +98,35 @@
✅ Чувствайте се свободни да отпечатате всякакви данни, които искате да проверите, използвайки `print(month)`.
-2. Сега копирайте конвертираните данни в нов Pandas dataframe:
+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 ще ви покаже чист, подреден набор от данни, върху който можете да изградите новия си регресионен модел.
+ Отпечатването на dataframe ще ви покаже чист и организиран набор от данни, върху който можете да изградите новия си регресионен модел.
-### Но чакайте! Има нещо странно тук
+### Но чакайте! Нещо странно
-Ако погледнете колоната `Package`, тиквите се продават в много различни конфигурации. Някои се продават в мерки '1 1/9 bushel', други в '1/2 bushel', някои на тиква, някои на паунд, а някои в големи кутии с различни ширини.
+Ако погледнете колоната `Package`, тиквите се продават в много различни конфигурации. Някои се продават в мерки „1 1/9 бушел“, други в „1/2 бушел“, някои на брой, някои на паунд, и някои в големи кутии с различна ширина.
-> Тиквите изглежда са много трудни за консистентно претегляне
+> Тиквите изглеждат много трудни за претегляне по постоянен начин
-Разглеждайки оригиналните данни, е интересно, че всичко с `Unit of Sale`, равно на 'EACH' или 'PER BIN', също има тип `Package` на инч, на бин или 'each'. Тиквите изглежда са много трудни за консистентно претегляне, така че нека ги филтрираме, като изберем само тикви със стринга 'bushel' в колоната `Package`.
+При по-задълбочен поглед върху оригиналните данни, е интересно, че всичко със `Unit of Sale`, равно на 'EACH' или 'PER BIN', има също `Package` тип на инч, на кош, или 'всяка'. Изглежда тиквите са много трудни за претегляне по постоянен начин, затова ще ги филтрираме като изберем само тиквите с низа 'bushel' в колоната `Package`.
-1. Добавете филтър в началото на файла, под първоначалния импорт на .csv:
+1. Добавете филтър в началото на файла, под първоначалния .csv импорт:
```python
pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]
```
- Ако отпечатате данните сега, можете да видите, че получавате само около 415 реда данни, съдържащи тикви по bushel.
+ Ако отпечатате данните сега, ще видите, че получавате само около 415 реда от данни, съдържащи тикви на бушел.
-### Но чакайте! Има още нещо за правене
+### Но чакайте! Остава още нещо за правене
-Забелязахте ли, че количеството bushel варира за всеки ред? Трябва да нормализирате цените, така че да показват цените на bushel, затова направете малко математика, за да ги стандартизирате.
+Забелязахте ли, че количеството бушели варира при всеки ред? Трябва да нормализирате цените, така че да показват ценообразуването за бушел, затова направете някои математически операции, за да го стандартизирате.
-1. Добавете тези редове след блока, който създава new_pumpkins dataframe:
+1. Добавете тези редове след блока, създаващ новия dataframe new_pumpkins:
```python
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9)
@@ -134,29 +134,29 @@
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 тикви, обаче, показва колко важно е да разберете естеството на вашите данни!
+✅ Според [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), теглото на бушел зависи от вида на продукцията, тъй като той е обемна мярка. „Например, бушел домати трябва да тежи 56 паунда... Листата и зеленчуците заемат повече място с по-малко тегло, така че бушел спанак тежи само 20 паунда.“ Всичко това е доста сложно! Нека не се занимаваме с преобразуването от бушел към паунд, а вместо това да ценим на бушел. Въпреки това целият този анализ на бушели тикви показва колко е важно да разберем естеството на нашите данни!
-Сега можете да анализирате цените на единица, базирани на тяхната bushel мярка. Ако отпечатате данните още веднъж, можете да видите как са стандартизирани.
+Сега можете да анализирате ценообразуването на единица, базирано на мерките им в бушели. Ако отпечатате данните още веднъж, ще видите как са стандартизирани.
-✅ Забелязахте ли, че тиквите, продавани на половин bushel, са много скъпи? Можете ли да разберете защо? Подсказка: малките тикви са много по-скъпи от големите, вероятно защото има много повече от тях на bushel, като се вземе предвид неизползваното пространство, заето от една голяма куха тиква за пай.
+✅ Забелязахте ли, че тиквите, продавани на половин бушел, са много скъпи? Можете ли да разберете защо? Подсказка: малките тикви са много по-скъпи от големите, вероятно защото има много повече от тях на бушел, като се има предвид неизползваното пространство, което заема една голяма куха тиква за пай.
## Стратегии за визуализация
-Част от ролята на специалиста по данни е да демонстрира качеството и естеството на данните, с които работи. За да направят това, те често създават интересни визуализации, като графики, диаграми и таблици, показващи различни аспекти на данните. По този начин те могат визуално да покажат връзки и пропуски, които иначе са трудни за откриване.
+Част от ролята на специалиста по данни е да демонстрира качеството и естеството на данните, с които работи. За това те често създават интересни визуализации, графики, диаграми и таблици, които показват различни аспекти на данните. По този начин те могат визуално да покажат зависимости и пропуски, които иначе е трудно да се открият.
[](https://youtu.be/SbUkxH6IJo0 "ML за начинаещи - Как да визуализираме данни с Matplotlib")
-> 🎥 Кликнете върху изображението по-горе за кратко видео, което показва как да визуализирате данните за тази лекция.
+> 🎥 Кликнете върху изображението по-горе за кратко видео, в което се разглежда визуализирането на данните за този урок.
-Визуализациите могат също да помогнат за определяне на най-подходящата техника за машинно обучение за данните. Например, scatterplot, който изглежда следва линия, показва, че данните са добър кандидат за упражнение с линейна регресия.
+Визуализациите могат също така да помогнат за определяне на машинната обучителна техника, най-подходяща за данните. Например точкова диаграма (scatterplot), която изглежда следва линия, показва, че данните са добър кандидат за упражнение с линейна регресия.
-Една библиотека за визуализация на данни, която работи добре в Jupyter notebooks, е [Matplotlib](https://matplotlib.org/) (която видяхте и в предишната лекция).
+Една библиотека за визуализация, която работи добре в Jupyter notebooks, е [Matplotlib](https://matplotlib.org/) (която видяхте и в предишния урок).
-> Получете повече опит с визуализацията на данни в [тези уроци](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott).
+> Придобийте повече опит с визуализацията на данни в [тези уроци](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott).
## Упражнение - експериментирайте с Matplotlib
-Опитайте да създадете някои основни графики, за да покажете новия dataframe, който току-що създадохте. Какво би показала една основна линейна графика?
+Опитайте се да създадете някои базови графики, за да покажете новия dataframe, който току-що създадохте. Какво би показала базова линейна графика?
1. Импортирайте Matplotlib в началото на файла, под импорта на Pandas:
@@ -164,8 +164,8 @@
import matplotlib.pyplot as plt
```
-1. Презаредете целия notebook, за да го обновите.
-1. В края на notebook-а добавете клетка, за да начертаете данните като кутия:
+1. Стартирайте цялото notebook отново, за да го обновите.
+1. В долната част на notebook добавете клетка, която да нарисува данните като кутиева диаграма:
```python
price = new_pumpkins.Price
@@ -174,44 +174,121 @@
plt.show()
```
- 
+ 
- Полезна ли е тази графика? Има ли нещо, което ви изненадва?
+ Полезна ли е тази графика? Нещо ли ви изненадва в нея?
- Тя не е особено полезна, тъй като просто показва разпределението на точките в даден месец.
+ Тя не е особено полезна, тъй като просто показва разпределението на данните Ви като точки в даден месец.
### Направете я полезна
-За да направите графиките полезни, обикновено трябва да групирате данните по някакъв начин. Нека опитаме да създадем графика, където y оста показва месеците, а данните демонстрират разпределението.
+За да получите графики, които показват полезни данни, обикновено трябва да групирате данните по някакъв начин. Нека опитаме да създадем графика, където y-оста показва месеците, а данните илюстрират разпределението на данните.
-1. Добавете клетка, за да създадете групирана бар графика:
+1. Добавете клетка, която да създаде групирана стълбова диаграма:
```python
new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar')
plt.ylabel("Pumpkin Price")
```
- 
+ 
+
+ Това е по-полезна визуализация на данни! Изглежда показва, че най-високата цена на тиквите е през септември и октомври. Това отговаря ли на вашите очаквания? Защо или защо не?
+
+## Упражнение - експериментирайте със Seaborn
+
+Matplotlib е мощен, но може да изисква много код, за да се получи полиранa графика. [Seaborn](https://seaborn.pydata.org/) е библиотека, изградена _върху_ Matplotlib, предназначена за статистическа визуализация на данни. Тя работи директно с Pandas dataframe, прилага атрактивни стилове по подразбиране и ви позволява да създавате информативни графики с много по-малко код. Тъй като Seaborn връща Matplotlib обекти, можете все още да използвате всичко, което вече знаете за Matplotlib, за да донастроите резултата.
+
+> Ако все още нямате инсталиран Seaborn, инсталирайте го с `pip install seaborn`.
+
+1. Импортирайте Seaborn в началото на notebook, под другите импорти. По конвенция се импортира като `sns`:
+
+ ```python
+ import seaborn as sns
+ ```
+
+### Точкови графики за показване на зависимости
+
+Голяма част от изследването на данните преди създаване на модел е търсенето на _зависимости_ между променливите. [Точкова графика](https://en.wikipedia.org/wiki/Scatter_plot) е един от най-добрите инструменти за това: ако точките изглежда следват линия, двете променливи може да са корелирани, което е добър знак, че линейният регресионен модел може да работи.
+
+1. Пресъздайте точковата графика цена-срещу-месец от преди, но този път използвайте Seaborn [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) (релационна графика), която работи директно с колоните на вашия dataframe:
+
+ ```python
+ sns.relplot(x="Price", y="Month", data=new_pumpkins)
+ ```
+
+ 
+
+ Забележете как подавате _имената на колоните_ и dataframe, а Seaborn се грижи за надписите на осите.
+
+2. Можете да превключите на линейна графика, като подадете `kind="line"`. Seaborn дори чертае засенчена лента, показваща доверителния интервал около линията:
+
+ ```python
+ sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins)
+ ```
+
+ 
+
+ Тези конкретни данни са доста шумни, така че линейната графика не е най-ясният избор тук — но показва колко лесно можете да променяте типове графики в Seaborn.
+
+### Стълбови диаграми за показване на разпределения
+
+
+По-рано вие групирахте данните ръчно, за да създадете лентов диаграма с Matplotlib. [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) на Seaborn (категориален график) може да направи групирането и агрегирането вместо вас. По подразбиране `kind="bar"` показва средното на всяка категория заедно с черна линия, която обозначава интервала на доверие.
+
+1. Създайте лентов диаграма на средната цена за месец:
+
+ ```python
+ sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar")
+ ```
+
+ 
+
+ Това потвърждава това, което видяхте с Matplotlib — цените достигат пика си около септември и октомври — но Seaborn също визуализира колко _варира_ цената в рамките на всеки месец.
+
+### Топлинни карти за показване на корелации
+
+Диаграмите с разпръскване сравняват две променливи наведнъж. Когато имате няколко числови колони, [топлинна карта](https://en.wikipedia.org/wiki/Heat_map) ви позволява да видите силата на връзката между _всяка_ двойка колони едновременно. Това е често използван начин за откриване кои характеристики са най-корелирани, преди да изберете какво да подавате в модел (и същият вид диаграма по-късно се използва за показване на матрици на объркване при класификация).
+
+1. Изградете корелационна матрица с Pandas, после я начертайте с [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html) на Seaborn. Опцията `annot=True` отпечатва корелационните стойности във всяка клетка:
+
+ ```python
+ correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()
+ sns.heatmap(correlations, annot=True, cmap="coolwarm")
+ ```
+
+ 
+
+ Стойности близки до `1` (или `-1`) означават, че колоните са силно _линейно_ корелирани. Обърнете внимание как `Low Price` и `High Price` са почти перфектно корелирани. От друга страна, `Month` показва само слаба линейна корелация с цената — въпреки че лентовата диаграма по-горе разкрива ясно сезонен пик през септември и октомври. Това е важен урок: коефициентът на корелация измерва само _праволинейни_ връзки, така че може да пропусне сезонни или други нелинейни модели. ✅ Защо е полезно да разглеждате както топлинна карта, *така и* диаграми като лентовата преди да решите кои колони да използвате?
+
+### Matplotlib или Seaborn?
+
+Двете библиотеки си струва да ги знаете:
+
+- **Matplotlib** ви дава детайлен контрол върху всеки елемент на диаграмата и е основата, върху която почти всички други Python библиотеки за графики се изграждат.
+- **Seaborn** предоставя функции от по-високо ниво и привлекателни настройки за статистически диаграми, работи директно с dataframe-и и често е по-бърз за експлораторен анализ на данни.
- Това е по-полезна визуализация на данни! Изглежда, че най-високата цена за тикви е през септември и октомври. Това отговаря ли на вашите очаквания? Защо или защо не?
+Често срещан сценарий е първо да използвате Seaborn за бързо разглеждане на данните, а после да преминете към Matplotlib, когато трябва да персонализирате детайлите.
---
## 🚀Предизвикателство
-Разгледайте различните типове визуализации, които Matplotlib предлага. Кои типове са най-подходящи за регресионни задачи?
+Изследвайте различните типове визуализации, които предлагат Matplotlib и Seaborn. Кои типове са най-подходящи за регресионни задачи?
-## [Тест след лекцията](https://ff-quizzes.netlify.app/en/ml/)
+## [Кратък тест след лекцията](https://ff-quizzes.netlify.app/en/ml/)
-## Преглед и самостоятелно обучение
+## Преглед и Самостоятельно учене
-Разгледайте многото начини за визуализация на данни. Направете списък с различните налични библиотеки и отбележете кои са най-добри за дадени типове задачи, например 2D визуализации срещу 3D визуализации. Какво откривате?
+Вижте многобройните начини за визуализация на данни. Направете списък на наличните библиотеки и отбележете кои са най-подходящи за дадени задачи, например 2D визуализации срещу 3D визуализации. Какво откривате?
-## Задание
+## Задача
[Изследване на визуализацията](assignment.md)
---
-**Отказ от отговорност**:
-Този документ е преведен с помощта на AI услуга за превод [Co-op Translator](https://github.com/Azure/co-op-translator). Въпреки че се стремим към точност, моля, имайте предвид, че автоматизираните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия роден език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален човешки превод. Ние не носим отговорност за недоразумения или погрешни интерпретации, произтичащи от използването на този превод.
\ No newline at end of file
+
+**Отказ от отговорност**:
+Този документ е преведен с помощта на AI преводачески услуга [Co-op Translator](https://github.com/Azure/co-op-translator). Въпреки че се стремим към точност, моля имайте предвид, че автоматизираните преводи могат да съдържат грешки или неточности. Оригиналният документ на неговия роден език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален човешки превод. Ние не носим отговорност за каквито и да е недоразумения или неправилни тълкувания, произтичащи от използването на този превод.
+
\ No newline at end of file
diff --git a/translations/bg/2-Regression/2-Data/solution/notebook.ipynb b/translations/bg/2-Regression/2-Data/solution/notebook.ipynb
index 354230711..ce5417b29 100644
--- a/translations/bg/2-Regression/2-Data/solution/notebook.ipynb
+++ b/translations/bg/2-Regression/2-Data/solution/notebook.ipynb
@@ -4,7 +4,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## Линейна регресия за тикви - Урок 2\n"
+ "## Линеен регресионен анализ за тикви - Урок 2\n"
]
},
{
@@ -222,6 +222,7 @@
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
"pumpkins = pd.read_csv('../../data/US-pumpkins.csv')\n",
"\n",
"pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]\n",
@@ -385,18 +386,78 @@
"plt.ylabel(\"Pumpkin Price\")"
]
},
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Visualizing with Seaborn\n",
+ "\n",
+ "[Seaborn](https://seaborn.pydata.org/) is built on top of Matplotlib and works directly with dataframes, making it quick to create attractive statistical plots with very little code.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Диаграми с разсейване за показване на връзки\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", kind=\"line\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Лентови диаграми за показване на разпределенията\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.catplot(x=\"Month\", y=\"Price\", data=new_pumpkins, kind=\"bar\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Топлинни карти за показване на корелации\n"
+ ]
+ },
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
- "source": []
+ "source": [
+ "correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()\n",
+ "sns.heatmap(correlations, annot=True, cmap=\"coolwarm\")"
+ ]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "\n---\n\n**Отказ от отговорност**: \nТози документ е преведен с помощта на AI услуга за превод [Co-op Translator](https://github.com/Azure/co-op-translator). Въпреки че се стремим към точност, моля, имайте предвид, че автоматичните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия изходен език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален превод от човек. Ние не носим отговорност за каквито и да е недоразумения или погрешни интерпретации, произтичащи от използването на този превод.\n"
+ "---\n\n\n**Отказ от отговорност**:\nТози документ е преведен с помощта на AI преводачески услуга [Co-op Translator](https://github.com/Azure/co-op-translator). Въпреки че се стремим към точност, моля имайте предвид, че автоматизираните преводи могат да съдържат грешки или неточности. Оригиналният документ на неговия роден език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален човешки превод. Ние не носим отговорност за каквито и да е недоразумения или неправилни тълкувания, произтичащи от използването на този превод.\n\n"
]
}
],
@@ -426,13 +487,7 @@
"hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d"
}
},
- "orig_nbformat": 2,
- "coopTranslator": {
- "original_hash": "95726f0b8283628d5356a4f8eb8b4b76",
- "translation_date": "2025-09-04T07:11:15+00:00",
- "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
- "language_code": "bg"
- }
+ "orig_nbformat": 2
},
"nbformat": 4,
"nbformat_minor": 2
diff --git a/translations/bg/8-Reinforcement/1-QLearning/README.md b/translations/bg/8-Reinforcement/1-QLearning/README.md
index 19516623a..e64b316af 100644
--- a/translations/bg/8-Reinforcement/1-QLearning/README.md
+++ b/translations/bg/8-Reinforcement/1-QLearning/README.md
@@ -1,47 +1,47 @@
-# Въведение в Укрепващото Обучение и Q-Learning
+# Въведение в подсилващото обучение и Q-обучението
-
-> Скица от [Tomomi Imura](https://www.twitter.com/girlie_mac)
+
+> Скично от [Tomomi Imura](https://www.twitter.com/girlie_mac)
-Укрепващото обучение включва три важни концепции: агент, състояния и набор от действия за всяко състояние. Изпълнявайки действие в определено състояние, агентът получава награда. Представете си компютърната игра Super Mario. Вие сте Марио, намирате се на ниво в играта, стоите до ръба на скала. Над вас има монета. Вие, като Марио, на определено място в нивото на играта... това е вашето състояние. Ако направите крачка надясно (действие), ще паднете от скалата и ще получите ниска числена оценка. Но ако натиснете бутона за скок, ще спечелите точка и ще останете жив. Това е положителен резултат и трябва да ви донесе положителна числена оценка.
+Подсилващото обучение включва три важни понятия: агент, няколко състояния и набор от действия за всяко състояние. Като изпълнява действие в определено състояние, агентът получава награда. Представете си отново компютърната игра Super Mario. Вие сте Марио, в ниво на игра, стоите до ръба на скала. Над вас има монета. Вие, като Марио, в ниво на игра, на конкретна позиция ... това е вашето състояние. Да направите една крачка вдясно (действие) ще ви изхвърли през ръба, и това ще ви даде нисък числов резултат. Обаче, като натиснете бутона за скок, ще спечелите точка и ще останете жив. Това е положителен резултат и трябва да ви награди с положителна числова оценка.
-Използвайки укрепващо обучение и симулатор (играта), можете да научите как да играете играта, за да максимизирате наградата, която е да останете живи и да съберете възможно най-много точки.
+Използвайки подсилващо обучение и симулатор (играта), можете да научите как да играете играта, за да максимизирате наградата, която е да останете живи и да съберете колкото се може повече точки.
-[](https://www.youtube.com/watch?v=lDq_en8RNOo)
+[](https://www.youtube.com/watch?v=lDq_en8RNOo)
-> 🎥 Кликнете върху изображението по-горе, за да чуете Дмитрий да обсъжда Укрепващото Обучение
+> 🎥 Кликнете върху изображението по-горе, за да чуете Дмитрий да обсъжда Подсилващото обучение
-## [Тест преди лекцията](https://ff-quizzes.netlify.app/en/ml/)
+## [Предварителен тест](https://ff-quizzes.netlify.app/en/ml/)
-## Предпоставки и Настройка
+## Предварителни условия и настройка
-В този урок ще експериментираме с код на Python. Трябва да можете да изпълните кода от Jupyter Notebook, или на вашия компютър, или в облака.
+В този урок ще експериментираме с някакъв код на Python. Трябва да можете да стартирате кода в Jupyter Notebook от този урок, или на вашия компютър, или някъде в облака.
-Можете да отворите [ноутбука на урока](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) и да преминете през урока, за да го изградите.
+Можете да отворите [учебния ноутбук](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), който се използва в кода на ноутбука. Добавете го в същата директория като ноутбука.
+> **Забележка:** Ако отваряте този код от облака, трябва да изтеглите и файла [`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). Ще използваме **Укрепващо Обучение**, за да позволим на Петър да изследва своята среда, да събира вкусни ябълки и да избягва срещи с вълка.
+В този урок ще разгледаме света на **[Питър и вълкът](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)**, вдъхновен от музикална приказка на руския композитор [Сергеј Прокофиев](https://en.wikipedia.org/wiki/Sergei_Prokofiev). Ще използваме **подсилващо обучение**, за да позволим на Питър да изследва своята среда, да събира вкусни ябълки и да избягва срещата с вълка.
-**Укрепващото Обучение** (RL) е техника за обучение, която ни позволява да научим оптималното поведение на **агент** в някаква **среда**, като провеждаме множество експерименти. Агентът в тази среда трябва да има някаква **цел**, дефинирана чрез **функция за награда**.
+**Подсилващото обучение** (RL) е техника на обучение, която ни позволява да научим оптимално поведение на **агента** в някаква **среда** чрез провеждане на множество експерименти. Агентът в тази среда трябва да има някаква **цел**, дефинирана чрез **функция на наградата**.
## Средата
-За простота, нека разгледаме света на Петър като квадратна дъска с размери `ширина` x `височина`, като тази:
+За простота, нека светът на Питър да бъде квадратна дъска с размер `ширина` x `височина`, ето така:
-
+
Всяка клетка на тази дъска може да бъде:
-* **земя**, върху която Петър и други същества могат да ходят.
-* **вода**, върху която очевидно не можете да ходите.
-* **дърво** или **трева**, място, където можете да си починете.
-* **ябълка**, която представлява нещо, което Петър би се радвал да намери, за да се нахрани.
+* **земя**, по която Питър и други създания могат да ходят.
+* **вода**, по която очевидно не може да се ходи.
+* **дърво** или **тръстика**, място, където може да се почине.
+* **ябълка**, която представлява нещо, което Питър би се радвал да намери, за да се нахрани.
* **вълк**, който е опасен и трябва да се избягва.
-Има отделен Python модул, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), който съдържа кода за работа с тази среда. Тъй като този код не е важен за разбирането на нашите концепции, ще импортираме модула и ще го използваме, за да създадем примерна дъска (код блок 1):
+Има отделен Python модул, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), който съдържа кода за работа с тази среда. Тъй като този код не е важен за разбирането на нашите концепции, ще импортираме модула и ще го използваме, за да създадем примерна дъска (кодов блок 1):
```python
from rlboard import *
@@ -52,63 +52,63 @@ m.randomize(seed=13)
m.plot()
```
-Този код трябва да отпечата изображение на средата, подобно на горното.
+Този код трябва да изведе изображение на средата, подобно на показаното по-горе.
## Действия и политика
-В нашия пример целта на Петър е да намери ябълка, като избягва вълка и други препятствия. За да направи това, той може просто да се разхожда, докато намери ябълка.
+В нашия пример целта на Питър е да намери ябълка, като същевременно избягва вълка и други препятствия. За да направи това, той просто може да се разхожда, докато не намери ябълка.
-Следователно, на всяка позиция той може да избира между следните действия: нагоре, надолу, наляво и надясно.
+Затова, на всяка позиция той може да избере едно от следните действия: нагоре, надолу, наляво и надясно.
-Ще дефинираме тези действия като речник и ще ги свържем с двойки от съответните промени в координатите. Например, движението надясно (`R`) би съответствало на двойка `(1,0)`. (код блок 2):
+Ще дефинираме тези действия като речник и ще ги асоциираме с двойки от съответните промени в координатите. Например, движението надясно (`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).
+Нека първо решим нашия проблем като реализираме стратегия за случайна разходка. При случайна разходка ние на произволен принцип избираме следващото действие измежду позволените, докато не достигнем ябълката (кодов блок 3).
-1. Реализирайте случайната разходка с кода по-долу:
+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
+ n = 0 # брой стъпки
+ # задаване на начална позиция
if start_position:
m.human = start_position
else:
m.random_start()
while True:
if m.at() == Board.Cell.apple:
- return n # success!
+ return n # успех!
if m.at() in [Board.Cell.wolf, Board.Cell.water]:
- return -1 # eaten by wolf or drowned
+ return -1 # изяден от вълк или удавен
while True:
a = actions[policy(m)]
new_pos = m.move_pos(m.human,a)
if m.is_valid(new_pos) and m.at(new_pos)!=Board.Cell.water:
- m.move(a) # do the actual move
+ m.move(a) # извършване на действителното движение
break
n+=1
walk(m,random_policy)
```
- Извикването на `walk` трябва да върне дължината на съответния път, която може да варира от едно изпълнение до друго.
+ Извикването на `walk` трябва да върне дължината на съответния път, който може да варира от едно изпълнение до друго.
-1. Изпълнете експеримента за разходка няколко пъти (например 100) и отпечатайте получените статистики (код блок 4):
+1. Стартирайте експеримента с разходката няколко пъти (например 100) и изведете получената статистика (кодов блок 4):
```python
def print_statistics(policy):
@@ -125,17 +125,17 @@ action_idx = { a : i for i,a in enumerate(actions.keys()) }
print_statistics(random_policy)
```
- Забележете, че средната дължина на пътя е около 30-40 стъпки, което е доста, като се има предвид, че средното разстояние до най-близката ябълка е около 5-6 стъпки.
+ Обърнете внимание, че средната дължина на пътя е около 30-40 стъпки, което е доста много, имайки предвид факта, че средното разстояние до най-близката ябълка е около 5-6 стъпки.
- Можете също така да видите как изглежда движението на Петър по време на случайната разходка:
+ Можете също така да видите как изглежда движението на Питър по време на случайната разходка:
- 
+ 
## Функция за награда
За да направим нашата политика по-интелигентна, трябва да разберем кои ходове са "по-добри" от други. За да направим това, трябва да дефинираме нашата цел.
-Целта може да бъде дефинирана чрез **функция за награда**, която ще връща някаква стойност за всяко състояние. Колкото по-висока е стойността, толкова по-добра е наградата. (код блок 5)
+Целта може да бъде дефинирана чрез **функция на наградата**, която ще връща някаква стойност за всяко състояние. Колкото по-високо е числото, толкова по-добра е функцията на наградата. (кодов блок 5)
```python
move_reward = -0.1
@@ -154,39 +154,115 @@ def reward(m,pos=None):
return move_reward
```
-Интересното при функциите за награда е, че в повечето случаи *получаваме значителна награда само в края на играта*. Това означава, че нашият алгоритъм трябва по някакъв начин да запомни "добрите" стъпки, които водят до положителна награда в края, и да увеличи тяхната важност. По същия начин всички ходове, които водят до лоши резултати, трябва да бъдат обезкуражени.
+Интересно при функциите на наградата е, че в повечето случаи *получаваме съществена награда само в края на играта*. Това означава, че нашият алгоритъм трябва по някакъв начин да запомни "добрите" стъпки, които водят до положителна награда в края, и да увеличи тяхната важност. Съответно, всички ходове, които водят до лоши резултати, трябва да бъдат възпрепятствани.
-## Q-Learning
+## Q-обучение
-Алгоритъмът, който ще обсъдим тук, се нарича **Q-Learning**. В този алгоритъм политиката се дефинира чрез функция (или структура от данни), наречена **Q-таблица**. Тя записва "доброто" на всяко действие в дадено състояние.
+Алгоритъмът, който ще обсъдим тук, се нарича **Q-обучение**. При този алгоритъм политиката се дефинира чрез функция (или структура от данни), наречена **Q-таблица**. Тя записва "доброто" на всяко от действията в дадено състояние.
-Тя се нарича Q-таблица, защото често е удобно да се представи като таблица или многомерен масив. Тъй като нашата дъска има размери `ширина` x `височина`, можем да представим Q-таблицата, използвайки numpy масив с форма `ширина` x `височина` x `len(actions)`: (код блок 6)
+Тя се нарича Q-таблица, защото често е удобно да бъде представена като таблица или многомерен масив. Тъй като нашата дъска има размери `ширина` x `височина`, можем да представим Q-таблицата като numpy масив с форма `ширина` x `височина` x `len(actions)`: (кодов блок 6)
```python
Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions)
```
-Забележете, че инициализираме всички стойности на Q-таблицата с еднаква стойност, в нашия случай - 0.25. Това съответства на политиката за "случайна разходка", защото всички ходове във всяко състояние са еднакво добри. Можем да предадем Q-таблицата на функцията `plot`, за да визуализираме таблицата на дъската: `m.plot(Q)`.
+Забележете, че инициализираме всички стойности на Q-таблицата с еднаква стойност, в нашия случай - 0.25. Това съответства на политиката "случайна разходка", защото всички ходове във всяко състояние са еднакво добри. Можем да подадем Q-таблицата на функцията `plot`, за да визуализираме таблицата върху дъската: `m.plot(Q)`.
-
+
-В центъра на всяка клетка има "стрелка", която показва предпочитаната посока на движение. Тъй като всички посоки са равни, се показва точка.
+В центъра на всяка клетка има "стрелка", която указва предпочитаната посока на движение. Тъй като всички посоки са равни, се показва точка.
-Сега трябва да изпълним симулацията, да изследваме нашата среда и да научим по-добро разпределение на стойностите в Q-таблицата, което ще ни позволи да намерим пътя до ябълката много по-бързо.
+Сега трябва да стартираме симулацията, да изследваме нашата среда и да научим по-добро разпределение на стойностите в Q-таблицата, което ще ни позволи да намерим пътя до ябълката много по-бързо.
-## Същност на Q-Learning: Уравнението на Белман
+## Същност на Q-обучението: уравнението на Белман
-След като започнем да се движим, всяко действие ще има съответна награда, т.е. теоретично можем да изберем следващото действие въз основа на най-високата непосредствена награда. Въпреки това, в повечето състояния ходът няма да постигне нашата цел да стигнем до ябълката, и следователно не можем веднага да решим коя посока е по-добра.
+След като започнем да се движим, всяко действие ще има съответна награда, т.е. теоретично можем да изберем следващото действие въз основа на най-високата непосредствена награда. Въпреки това в повечето състояния ходът няма да ни доведе до целта – достигането до ябълката, и затова не можем веднага да решим коя посока е по-добра.
-> Запомнете, че не непосредственият резултат е важен, а крайният резултат, който ще получим в края на симулацията.
+> Запомнете, че не непосредственият резултат е важен, а по-скоро крайният резултат, който ще получим в края на симулацията.
-За да отчетем тази забавена награда, трябва да използваме принципите на **[динамичното програмиране](https://en.wikipedia.org/wiki/Dynamic_programming)**, които ни позволяват да мислим за проблема си рекурсивно.
+За да отчетем това отложено възнаграждение, трябва да използваме принципите на **[динамичното програмиране](https://en.wikipedia.org/wiki/Dynamic_programming)**, които ни позволяват да разсъждаваме за проблема рекурсивно.
-Да предположим, че сега сме в състояние *s*, и искаме да преминем към следващото състояние *s'*. Като направим това, ще получим непосредствената награда *r(s,a)*, дефинирана чрез функцията за награда, плюс някаква бъдеща награда. Ако предположим, че нашата Q-таблица правилно отразява "привлекателността" на всяко действие, тогава в състояние *s'* ще изберем действие *a*, което съответства на максималната стойност на *Q(s',a')*. Така най-добрата възможна бъдеща награда, която можем да получим в състояние *s*, ще бъде дефинирана като `max`
+Нека сме в състояние *s* и искаме да преминем в следващото състояние *s'*. Като направим това, ще получим непосредствена награда *r(s,a)*, дефинирана от функцията на наградата, плюс някаква бъдеща награда. Ако предположим, че нашата Q-таблица правилно отразява "атрактивността" на всяко действие, тогава в състояние *s'* ще изберем действие *a*, което съответства на максималната стойност на *Q(s',a')*. Следователно най-добрата бъдеща награда, която можем да получим в състояние *s*, ще бъде дефинирана като `max`a'*Q(s',a')* (максимумът тук се изчислява за всички възможни действия *a'* в състояние *s'*).
+
+Това дава **формулата на Белман** за изчисляване на стойността на Q-таблицата в състояние *s*, при дадено действие *a*:
+
+
+
+Тук γ е т.нар. **фактор на намаление**, който определя до каква степен трябва да предпочитате текущата награда пред бъдещата и обратно.
+
+## Алгоритъм на обучение
+
+Според горното уравнение можем сега да напишем псевдокод за нашия алгоритъм на обучение:
+
+* Инициализирайте Q-таблицата Q с равни стойности за всички състояния и действия
+* Задайте скорост на учене α ← 1
+* Повтаряйте симулацията многократно
+ 1. Започнете от произволна позиция
+ 1. Повтаряйте
+ 1. Изберете действие *a* в състояние *s*
+ 2. Изпълнете действието като се преместите в ново състояние *s'*
+ 3. Ако настъпи условие за край на играта или общата награда е твърде малка - излезте от симулацията
+ 4. Изчислете наградата *r* в новото състояние
+ 5. Обновете Q-функцията според уравнението на Белман: *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ maxa'Q(s',a'))*
+ 6. *s* ← *s'*
+ 7. Обновете общата награда и намалете α.
+
+## Използване срещу изследване
+
+В горния алгоритъм не посочихме как точно да избираме действие на стъпка 2.1. Ако избираме действието случайно, ние случайно **изследваме** средата, и е много вероятно често да "умираме", както и да изследваме области, където нормално не бихме отишли. Алтернативен подход е да **използваме** стойностите от Q-таблицата, които вече знаем, и по този начин да изберем най-доброто действие (с по-висока стойност в Q-таблицата) в състояние *s*. Това обаче ще ни спре да изследваме други състояния и е вероятно да не намерим оптималното решение.
+
+Следователно, най-добрият подход е да се намери баланс между изследване и използване. Това може да стане, като изберем действие в състояние *s* с вероятности, пропорционални на стойностите в Q-таблицата. В началото, когато стойностите в Q-таблицата са всички еднакви, това ще съответства на случайно избиране, но докато учим повече за нашата среда, ще сме по-склонни да следваме оптималния маршрут, като позволяваме на агента от време на време да поеме неизследван път.
+
+## Реализация на Python
+
+Сега сме готови да реализираме алгоритъма на обучение. Преди това трябва също така да имаме функция, която да превръща произволни числа в Q-таблицата в вектор от вероятности за съответните действия.
+
+1. Създайте функция `probs()`:
+
+ ```python
+ def probs(v,eps=1e-4):
+ v = v-v.min()+eps
+ v = v/v.sum()
+ return v
+ ```
+
+ Добавяме няколко `eps` към оригиналния вектор, за да избегнем деление на 0 в началния случай, когато всички компоненти на вектора са еднакви.
+
+Стартирайте алгоритъма на обучение през 5000 експеримента, наречени още **епохи**: (кодов блок 8)
+```python
+ for epoch in range(5000):
+
+ # Изберете начална точка
+ m.random_start()
+
+ # Започнете пътуването
+ n=0
+ cum_reward = 0
+ while True:
+ x,y = m.human
+ v = probs(Q[x,y])
+ a = random.choices(list(actions),weights=v)[0]
+ dpos = actions[a]
+ m.move(dpos,check_correctness=False) # позволяваме на играча да се движи извън дъската, което прекратява епизода
+ r = reward(m)
+ cum_reward += r
+ if r==end_reward or cum_reward < -1000:
+ lpath.append(n)
+ break
+ alpha = np.exp(-n / 10e5)
+ gamma = 0.5
+ ai = action_idx[a]
+ Q[x,y,ai] = (1 - alpha) * Q[x,y,ai] + alpha * (r + gamma * Q[x+dpos[0], y+dpos[1]].max())
+ n+=1
+```
+
+След изпълнението на този алгоритъм Q-таблицата трябва да е обновена със стойности, които определят атрактивността на различните действия на всяка стъпка. Можем да опитаме да визуализираме Q-таблицата, като изрисуваме вектор във всяка клетка, който сочи в желаната посока на движение. За простота чертаем малък кръг вместо острие на стрелка.
+
+
## Проверка на политиката
-Тъй като Q-таблицата показва "привлекателността" на всяко действие във всяко състояние, е доста лесно да я използваме за определяне на ефективната навигация в нашия свят. В най-простия случай можем да изберем действието, съответстващо на най-високата стойност в Q-таблицата: (код блок 9)
+Тъй като Q-таблицата изброява "атрактивността" на всяко действие във всяко състояние, лесно можем да я използваме, за да определим ефективна навигация в нашия свят. В най-простия случай можем да изберем действието, съответстващо на най-високата стойност в Q-таблицата: (кодов блок 9)
```python
def qpolicy_strict(m):
@@ -198,17 +274,18 @@ def qpolicy_strict(m):
walk(m,qpolicy_strict)
```
-> Ако опитате кода по-горе няколко пъти, може да забележите, че понякога той "забива" и трябва да натиснете бутона STOP в бележника, за да го прекъснете. Това се случва, защото може да има ситуации, когато две състояния "посочват" едно към друго в контекста на оптималната Q-стойност, което води до това, че агентът се движи между тези състояния безкрайно.
+
+> Ако опитате горния код няколко пъти, може да забележите, че понякога той „виси“ и трябва да натиснете бутона STOP в тетрадката, за да го прекъснете. Това се случва, защото може да има ситуации, в които две състояния „сочат“ едно към друго по отношение на оптималната Q-стойност, при което агентът започва да се движи между тези състояния безкрайно.
## 🚀Предизвикателство
-> **Задача 1:** Модифицирайте функцията `walk`, за да ограничите максималната дължина на пътя до определен брой стъпки (например 100), и наблюдавайте как кодът по-горе връща тази стойност от време на време.
+> **Задача 1:** Модифицирайте функцията `walk`, така че да ограничи максималната дължина на пътя до определен брой стъпки (например 100) и наблюдавайте как горният код от време на време връща тази стойност.
-> **Задача 2:** Модифицирайте функцията `walk`, така че да не се връща на места, където вече е бил. Това ще предотврати циклирането на `walk`, но агентът все пак може да се окаже "заклещен" на място, от което не може да избяга.
+> **Задача 2:** Модифицирайте функцията `walk`, така че тя да не се връща на места, на които вече е била преди. Това ще предотврати безкрайни цикли в `walk`, но все пак агентът може да се окаже „заложен“ на място, от което не може да избяга.
## Навигация
-По-добра навигационна политика би била тази, която използвахме по време на обучението, комбинираща експлоатация и изследване. В тази политика ще избираме всяко действие с определена вероятност, пропорционална на стойностите в Q-таблицата. Тази стратегия може все още да доведе до връщане на агента на позиция, която вече е изследвал, но, както можете да видите от кода по-долу, тя води до много кратък среден път до желаното местоположение (не забравяйте, че `print_statistics` изпълнява симулацията 100 пъти): (код блок 10)
+По-добра навигационна политика би била тази, която използвахме по време на обучението, която комбинира експлоатация и изследване. В тази политика ще избираме всяко действие с определена вероятност, пропорционална на стойностите в Q-таблицата. Тази стратегия все още може да доведе до връщане на агента на вече изследвано място, но, както виждате от кода по-долу, резултира в много кратък среден път до желания обект (помнете, че `print_statistics` изпълнява симулацията 100 пъти): (кодов блок 10)
```python
def qpolicy(m):
@@ -220,28 +297,32 @@ def qpolicy(m):
print_statistics(qpolicy)
```
-След изпълнение на този код, трябва да получите много по-малка средна дължина на пътя от преди, в диапазона 3-6.
+След изпълнението на този код, трябва да получите много по-малка средна дължина на пътя отколкото преди, в диапазона 3-6.
+
+## Изследване на процеса на учене
-## Изследване на процеса на обучение
+Както споменахме, процесът на учене е баланс между изследване и експлоатация на придобитите знания за структурата на проблема. Видяхме, че резултатите от обучението (способността да помогне на агента да намери кратък път до целта) са се подобрили, но е интересно да наблюдаваме как средната дължина на пътя се променя по време на процеса на учене:
-Както споменахме, процесът на обучение е баланс между изследване и използване на придобитите знания за структурата на пространството на проблема. Видяхме, че резултатите от обучението (способността да помогнем на агент да намери кратък път до целта) са се подобрили, но също така е интересно да наблюдаваме как се държи средната дължина на пътя по време на процеса на обучение:
+
-## Обобщение на наученото:
+Изводите могат да се обобщят по следния начин:
-- **Средната дължина на пътя се увеличава**. Това, което виждаме тук, е, че в началото средната дължина на пътя се увеличава. Вероятно това се дължи на факта, че когато не знаем нищо за средата, сме склонни да се "заклещим" в лоши състояния, като вода или вълк. Докато научаваме повече и започваме да използваме тези знания, можем да изследваме средата за по-дълго, но все още не знаем добре къде са ябълките.
+- **Средната дължина на пътя се увеличава**. Това, което виждаме тук, е, че първоначално средната дължина на пътя се увеличава. Това вероятно се дължи на факта, че когато не знаем нищо за околната среда, сме склонни да се озоваваме в лоши състояния като вода или вълк. С напредването на ученето и използването на знанията, можем да изследваме средата по-дълго, но все още не знаем много добре къде са ябълките.
-- **Дължината на пътя намалява, докато научаваме повече**. След като научим достатъчно, става по-лесно за агента да постигне целта, и дължината на пътя започва да намалява. Въпреки това, все още сме отворени към изследване, така че често се отклоняваме от най-добрия път и изследваме нови опции, което прави пътя по-дълъг от оптималния.
+- **Дължината на пътя намалява, докато учим повече**. След като научим достатъчно, на агента става по-лесно да достигне целта и дължината на пътя започва да намалява. Все пак сме отворени към изследване, затова често се отклоняваме от най-добрия път и изследваме нови опции, което прави пътя по-дълъг от оптималния.
-- **Дължината се увеличава рязко**. Това, което също наблюдаваме на този график, е, че в даден момент дължината се увеличава рязко. Това показва стохастичния характер на процеса и че в даден момент можем да "развалим" коефициентите в Q-таблицата, като ги презапишем с нови стойности. Това идеално трябва да се минимизира чрез намаляване на скоростта на обучение (например, към края на обучението, коригираме стойностите в Q-таблицата само с малка стойност).
+- **Дължината рязко се увеличава**. Освен това на тази графика се наблюдава, че в някакъв момент дължината се увеличава рязко. Това показва стохастичния характер на процеса и че можем в някакъв момент да „развалим“ коефициентите в Q-таблицата, като ги презапишем с нови стойности. Идеално това трябва да бъде минимизирано чрез намаляване на скоростта на учене (например, към края на обучението коригираме стойностите в Q-таблицата с малки стойности).
-Като цяло е важно да запомним, че успехът и качеството на процеса на обучение значително зависят от параметри като скорост на обучение, намаляване на скоростта на обучение и коефициент на дисконтиране. Те често се наричат **хиперпараметри**, за да се разграничат от **параметри**, които оптимизираме по време на обучението (например, коефициентите в Q-таблицата). Процесът на намиране на най-добрите стойности за хиперпараметрите се нарича **оптимизация на хиперпараметри**, и заслужава отделна тема.
+Като цяло, важно е да запомните, че успехът и качеството на процеса на учене зависи значително от параметри, като скорост на учене, намаляване на скоростта на учене и фактор на дисконт. Те често се наричат **хиперпараметри**, за да се разграничат от **параметри**, които оптимизираме по време на обучението (например коефициентите в Q-таблицата). Процесът на намиране на най-добрите стойности за хиперпараметрите се нарича **оптимизация на хиперпараметрите** и заслужава отделна тема.
-## [Тест след лекцията](https://ff-quizzes.netlify.app/en/ml/)
+## [Квиз след лекцията](https://ff-quizzes.netlify.app/en/ml/)
## Задание
[По-реалистичен свят](assignment.md)
---
-**Отказ от отговорност**:
-Този документ е преведен с помощта на AI услуга за превод [Co-op Translator](https://github.com/Azure/co-op-translator). Въпреки че се стремим към точност, моля, имайте предвид, че автоматизираните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия роден език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален човешки превод. Ние не носим отговорност за недоразумения или погрешни интерпретации, произтичащи от използването на този превод.
\ No newline at end of file
+
+**Отказ от отговорност**:
+Този документ е преведен с помощта на AI преводачески услуга [Co-op Translator](https://github.com/Azure/co-op-translator). Въпреки че се стремим към точност, моля имайте предвид, че автоматизираните преводи могат да съдържат грешки или неточности. Оригиналният документ на неговия роден език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален човешки превод. Ние не носим отговорност за каквито и да е недоразумения или неправилни тълкувания, произтичащи от използването на този превод.
+
\ No newline at end of file
diff --git a/translations/bg/9-Real-World/2-Debugging-ML-Models/README.md b/translations/bg/9-Real-World/2-Debugging-ML-Models/README.md
index dcb8a850d..2c2dce2fe 100644
--- a/translations/bg/9-Real-World/2-Debugging-ML-Models/README.md
+++ b/translations/bg/9-Real-World/2-Debugging-ML-Models/README.md
@@ -1,153 +1,179 @@
-# Постскриптум: Дебъгване на модели в машинното обучение с помощта на компоненти от таблото за отговорен AI
-
-## [Тест преди лекцията](https://ff-quizzes.netlify.app/en/ml/)
+# Постскриптум: Отстраняване на грешки в модели за машинно обучение с помощта на компоненти от таблото за отговорен ИИ
+
+## [Предварителен квиз](https://ff-quizzes.netlify.app/en/ml/)
+
## Въведение
-Машинното обучение оказва влияние върху ежедневния ни живот. AI навлиза в някои от най-важните системи, които ни засягат като индивиди и като общество – от здравеопазване, финанси, образование до заетост. Например, системи и модели участват в ежедневни задачи за вземане на решения, като диагностика в здравеопазването или откриване на измами. В резултат на това напредъкът в AI, заедно с ускореното му приемане, се среща с променящи се обществени очаквания и нарастваща регулация. Постоянно виждаме области, в които AI системите не оправдават очакванията, излагат нови предизвикателства, а правителствата започват да регулират AI решенията. Затова е важно тези модели да бъдат анализирани, за да предоставят справедливи, надеждни, приобщаващи, прозрачни и отговорни резултати за всички.
+Машинното обучение влияе на нашия ежедневен живот. Изкуственият интелект намира място в някои от най-важните системи, които засягат както отделните хора, така и обществото ни – от здравеопазване, финанси, образование до заетост. Например, системи и модели участват в ежедневни задачи за вземане на решения, като здравни диагнози или откриване на измами. В резултат на това напредъкът в ИИ, заедно с ускореното му внедряване, се среща с развиващи се обществени очаквания и растящо регулиране. Непрекъснато виждаме области, в които системите на ИИ продължават да не отговарят на очакванията; те разкриват нови предизвикателства; а правителствата започват да регулират ИИ решенията. Затова е важно тези модели да бъдат анализирани, за да предоставят справедливи, надеждни, включващи, прозрачни и отговорни резултати за всички.
-В този курс ще разгледаме практически инструменти, които могат да се използват за оценка дали даден модел има проблеми, свързани с отговорния AI. Традиционните техники за дебъгване на машинното обучение обикновено се основават на количествени изчисления, като агрегирана точност или средна загуба на грешка. Представете си какво може да се случи, ако данните, които използвате за изграждане на тези модели, липсват определени демографски характеристики, като раса, пол, политически възгледи, религия, или непропорционално представят такива демографски характеристики. Ами ако изходът на модела се интерпретира така, че да благоприятства определена демографска група? Това може да доведе до свръх или недостатъчно представяне на тези чувствителни характеристики, което да доведе до проблеми със справедливостта, приобщаването или надеждността на модела. Друг фактор е, че моделите за машинно обучение се считат за "черни кутии", което затруднява разбирането и обяснението на това, което движи прогнозите на модела. Всички тези предизвикателства са проблеми, пред които се изправят специалистите по данни и разработчиците на AI, когато нямат подходящи инструменти за дебъгване и оценка на справедливостта или надеждността на модела.
+В този курс ще разгледаме практични инструменти, които могат да се използват за оценка дали даден модел има проблеми с отговорния ИИ. Традиционните техники за отстраняване на грешки при машинното обучение обикновено се базират на количествени изчисления като агрегирана точност или средна загуба на грешка. Представете си какво може да се случи, ако данните, които използвате за изграждане на тези модели, не включват определени демографски групи, като раса, пол, политически възглед, религия, или непропорционално представят такива групи. Какво става, когато изходът на модела се интерпретира така, че да фаворизира някоя демографска група? Това може да въведе пре- или недопредставеност на тези чувствителни групи, причинявайки проблеми със справедливостта, включването или надеждността на модела. Друг фактор е, че моделите за машинно обучение се считат за черни кутии, което затруднява разбирането и обяснението на това какво движи предсказанието на модела. Всички тези предизвикателства срещат специалистите по данни и разработчиците на ИИ, когато нямат адекватни инструменти за отстраняване на грешки и оценка на справедливостта или надеждността на модела.
-В този урок ще научите как да дебъгвате вашите модели, използвайки:
+В този урок ще научите за отстраняване на грешки на вашите модели чрез:
-- **Анализ на грешки**: идентифициране на области в разпределението на данните, където моделът има високи нива на грешки.
-- **Общ преглед на модела**: извършване на сравнителен анализ между различни групи данни, за да се открият несъответствия в метриките за производителност на модела.
-- **Анализ на данни**: изследване на области, където може да има свръх или недостатъчно представяне на данни, което може да наклони модела да благоприятства една демографска група пред друга.
-- **Важност на характеристиките**: разбиране кои характеристики движат прогнозите на модела на глобално или локално ниво.
+- **Анализ на грешки**: идентифициране къде в разпределението на данните моделът има високи нива на грешки.
+- **Преглед на модела**: извършване на сравнителен анализ на различни кохорти от данни, за да се открият различия в метриките за представяне на модела.
+- **Анализ на данни**: проучване къде може да има пре- или недопредставеност на данни, която да наклони модела да фаворизира една демографска група пред друга.
+- **Значимост на признаците**: разбиране кои признаци задвижват предсказанията на модела на глобално или локално ниво.
-## Предварителни знания
+## Предварителни изисквания
-Като предварително условие, моля, прегледайте [Инструменти за отговорен AI за разработчици](https://www.microsoft.com/ai/ai-lab-responsible-ai-dashboard)
+Като предварително изискване, моля, преминете през прегледа [Инструменти за отговорен ИИ за разработчици](https://www.microsoft.com/ai/ai-lab-responsible-ai-dashboard)
-> 
+> 
## Анализ на грешки
-Традиционните метрики за производителност на моделите, използвани за измерване на точността, обикновено са изчисления, базирани на правилни срещу неправилни прогнози. Например, определянето, че моделът е точен в 89% от случаите със загуба на грешка от 0.001, може да се счита за добро представяне. Грешките обаче често не са разпределени равномерно в основния набор от данни. Може да получите резултат за точност на модела от 89%, но да откриете, че има различни области в данните, за които моделът се проваля в 42% от случаите. Последиците от тези модели на провал с определени групи данни могат да доведат до проблеми със справедливостта или надеждността. Затова е важно да се разберат областите, в които моделът се представя добре или не. Областите в данните, където има голям брой неточности в модела, могат да се окажат важни демографски данни.
+Традиционните метрики за представяне на модел, използвани за измерване на точност, са в по-голямата си част изчисления базирани на правилни срещу неправилни предсказания. Например, ако се определи, че моделът е точен 89% от времето с грешка от 0.001, това може да се счита за добро представяне. Грешките често не са равномерно разпределени в основния ви набор от данни. Може да получите резултат 89% точност на модела, но да откриете, че има различни региони от данните, в които моделът се проваля 42% от времето. Последствията от тези модели на провали с определени групи данни могат да доведат до проблеми със справедливостта или надеждността. Важно е да се разбере къде моделът се представя добре и къде не. Данните региони с висока неточност в модела може да се окажат важна демографска група.
-
+
-Компонентът за анализ на грешки в таблото за отговорен AI показва как провалите на модела са разпределени в различни групи с визуализация на дърво. Това е полезно за идентифициране на характеристики или области, където има висока степен на грешки в набора от данни. Като видите откъде идват повечето неточности на модела, можете да започнете да изследвате основната причина. Можете също така да създавате групи данни за анализ. Тези групи данни помагат в процеса на дебъгване, за да се определи защо представянето на модела е добро в една група, но грешно в друга.
+Компонентът Анализ на грешки в таблото за отговорен ИИ илюстрира как грешките на модела се разпределят сред различните кохорти с визуализация на дървовидна структура. Това е полезно за идентифициране на признаци или области, където има висока степен на грешки с вашия набор от данни. Като виждате откъде идват повечето неточности на модела, можете да започнете да изследвате основната причина. Можете също така да създавате кохорти от данни за извършване на анализ. Тези кохорти от данни помагат в процеса на отстраняване на грешки, за да се определи защо представянето на модела е добро в една кохорта, но грешно в друга.
-
+
-Визуалните индикатори на картата на дървото помагат за по-бързо локализиране на проблемните области. Например, колкото по-тъмно червен е цветът на възел в дървото, толкова по-висока е степента на грешка.
+Визуалните индикатори на дървовидната карта помагат за по-бързо локализиране на проблемните области. Например, колкото по-тъмен е червеният цвят на възела, толкова по-висока е степента на грешки.
-Топлинната карта е друга функционалност за визуализация, която потребителите могат да използват за изследване на степента на грешка, използвайки една или две характеристики, за да намерят фактор, допринасящ за грешките на модела в целия набор от данни или групи.
+Топлинната карта е друга визуална функционалност, която потребителите могат да използват за изследване на степента на грешки с помощта на един или два признака, за да открият фактор, допринасящ за грешките на модела в цял набор от данни или сред кохорти.
-
+
-Използвайте анализ на грешки, когато трябва:
+Използвайте анализа на грешки, когато трябва да:
-* Да получите дълбоко разбиране за това как провалите на модела са разпределени в набора от данни и в няколко входни и характеристични измерения.
-* Да разбиете агрегирани метрики за производителност, за да откриете автоматично грешни групи и да информирате за целенасочени стъпки за смекчаване.
+* Получите дълбоко разбиране за начина, по който грешките на моделите се разпределят в набора от данни и в няколко измерения на вход и признаци.
+* Разградите агрегирани метрики за представяне, за да откриете автоматично грешни кохорти и да информирате мерки за отстраняване.
-## Общ преглед на модела
+## Преглед на модела
-Оценяването на производителността на модел за машинно обучение изисква цялостно разбиране на неговото поведение. Това може да се постигне чрез преглед на повече от една метрика, като степен на грешка, точност, припомняне, прецизност или MAE (средна абсолютна грешка), за да се открият несъответствия между метриките за производителност. Една метрика за производителност може да изглежда добре, но неточности могат да бъдат разкрити в друга метрика. Освен това, сравняването на метриките за несъответствия в целия набор от данни или групи помага да се осветят областите, в които моделът се представя добре или не. Това е особено важно за наблюдение на представянето на модела сред чувствителни срещу нечувствителни характеристики (например раса, пол или възраст на пациента), за да се разкрие потенциална несправедливост в модела. Например, откриването, че моделът е по-неточен в група, която има чувствителни характеристики, може да разкрие потенциална несправедливост.
+Оценяването на представянето на модел за машинно обучение изисква цялостно разбиране на неговото поведение. Това може да се постигне чрез преглед на повече от една метрика като скорост на грешки, точност, възстановяване, прецизност или MAE (Средна абсолютна грешка), за да се открият различия в метриките за представяне. Една метрика може да изглежда добре, но неточности могат да се разкрият в друга метрика. Освен това сравнението на метриките за различия през целия набор от данни или кохорти помага да се види къде моделът се представя добре или не. Това е особено важно при разглеждане на представянето на модела между чувствителни и нечувствителни признаци (например раса, пол или възраст на пациента), за да се разкрие потенциална несправедливост. Например, откриването, че моделът е по-грешен в кохорта, която съдържа чувствителни признаци, може да разкрие потенциална несправедливост на модела.
-Компонентът "Общ преглед на модела" в таблото за отговорен AI помага не само за анализиране на метриките за производителност на представянето на данните в група, но и дава на потребителите възможност да сравняват поведението на модела между различни групи.
+Компонентът Преглед на модела в таблото за отговорен ИИ помага не само при анализа на метриките за представяне на представянето на данните в кохорта, но и дава възможност на потребителите да сравняват поведението на модела в различни кохорти.
-
+
-Функционалността за анализ, базирана на характеристики, позволява на потребителите да стеснят подгрупи от данни в рамките на определена характеристика, за да идентифицират аномалии на по-гранулирано ниво. Например, таблото има вградена интелигентност за автоматично генериране на групи за избрана от потребителя характеристика (например *"time_in_hospital < 3"* или *"time_in_hospital >= 7"*). Това позволява на потребителя да изолира определена характеристика от по-голяма група данни, за да види дали тя е ключов фактор за неточните резултати на модела.
+Функционалността за анализ на признаци в компонента позволява на потребителите да стесняват подгрупи от данни в даден признак, за да идентифицират аномалии на по-фино ниво. Например, таблото има вградена интелигентност за автоматично генериране на кохорти за избран от потребителя признак (например *"time_in_hospital < 3"* или *"time_in_hospital >= 7"*). Това позволява на потребителя да изолира конкретен признак от по-голяма група данни, за да види дали той оказва съществено влияние върху грешните резултати на модела.
-
+
-Компонентът "Общ преглед на модела" поддържа два класа метрики за несъответствия:
+Компонентът Преглед на модела поддържа два класа метрики за различия:
-**Несъответствие в производителността на модела**: Тези метрики изчисляват несъответствието (разликата) в стойностите на избраната метрика за производителност между подгрупи от данни. Ето няколко примера:
+**Различия в представянето на модела**: Тези метрики изчисляват разликата (диспропорцията) в стойностите на избраната метрика за представяне сред подгрупи от данни. Ето няколко примера:
-* Несъответствие в степента на точност
-* Несъответствие в степента на грешка
-* Несъответствие в прецизността
-* Несъответствие в припомнянето
-* Несъответствие в средната абсолютна грешка (MAE)
+* Различия в скоростта на точност
+* Различия в скоростта на грешка
+* Различия в прецизността
+* Различия във възстановяването
+* Различия в средната абсолютна грешка (MAE)
-**Несъответствие в степента на селекция**: Тази метрика съдържа разликата в степента на селекция (благоприятна прогноза) между подгрупи. Пример за това е несъответствието в степента на одобрение на заеми. Степента на селекция означава частта от точките от данни във всяка класа, класифицирани като 1 (в бинарна класификация) или разпределението на прогнозните стойности (в регресия).
+**Различия в степента на селекция**: Тази метрика съдържа разликата в степента на селекция (благоприятно предсказание) между подгрупите. Един пример за това е различията в процентите на одобрение на заем. Степента на селекция означава частта от точките от данни в всяка класова категория, класифицирани като 1 (в двоична класификация) или разпределение на стойностите на предсказанията (в регресия).
## Анализ на данни
-> "Ако измъчвате данните достатъчно дълго, те ще признаят всичко" - Роналд Коуз
+> "Ако измъчваш данните достатъчно дълго, те ще признаят всичко" - Роналд Коуз
+
+Това изказване звучи крайно, но е вярно, че данните могат да бъдат манипулирани, за да подкрепят всяко заключение. Понякога такива манипулации се случват неволно. Като хора всички имаме предразсъдъци и често е трудно съзнателно да осъзнаем кога въвеждаме предразсъдъци в данните. Гарантирането на справедливост в ИИ и машинното обучение остава сложно предизвикателство.
-Това изказване звучи крайно, но е вярно, че данните могат да бъдат манипулирани, за да подкрепят всяко заключение. Такава манипулация понякога може да се случи неволно. Като хора, всички имаме предразсъдъци и често е трудно да осъзнаем кога въвеждаме предразсъдъци в данните. Гарантирането на справедливост в AI и машинното обучение остава сложен предизвикателство.
+Данните са голяма "слепа зона" за традиционните метрики за представяне на модел. Може да имате високи резултати за точност, но това не винаги отразява скритите пристрастия в набора ви от данни. Например, ако в набор данни за служители има 27% жени на ръководни позиции и 73% мъже на същото ниво, AI модел, обучен с тези данни за рекламиране на работни места, може да таргетира главно мъжка аудитория за високи позиции. Тази дисбалансирана представеност в данните наклонява предсказанията на модела да фаворизират един пол. Това разкрива проблем със справедливостта, при който има полова пристрастност в AI модела.
-Данните са голямо сляпо петно за традиционните метрики за производителност на моделите. Може да имате високи резултати за точност, но това не винаги отразява основните предразсъдъци в набора от данни. Например, ако набор от данни за служители показва, че 27% от жените заемат изпълнителни позиции в компания, а 73% от мъжете са на същото ниво, AI модел за рекламиране на работни места, обучен на тези данни, може да насочи предимно мъжка аудитория за старши позиции. Този дисбаланс в данните накланя прогнозата на модела да благоприятства един пол. Това разкрива проблем със справедливостта, където има полова предразсъдък в AI модела.
+Компонентът Анализ на данни в таблото за отговорен ИИ помага да се идентифицират области с пре- и недопредставеност в набора от данни. Той помага на потребителите да диагностицират основната причина за грешки и проблеми със справедливостта, породени от дисбаланси в данните или липса на представеност на конкретна група данни. Това дава възможност на потребителите да визуализират наборите от данни въз основа на предсказани и реални резултати, групи грешки и конкретни признаци. Понякога откриването на недопредставена група данни може също да разкрие, че моделът не се учи добре и затова има висока неточност. Модел, който има пристрастия в данните, не е само проблем със справедливостта, но и показва, че моделът не е приобщаващ или надежден.
-Компонентът "Анализ на данни" в таблото за отговорен AI помага да се идентифицират области, където има свръх или недостатъчно представяне в набора от данни. Той помага на потребителите да диагностицират основната причина за грешки и проблеми със справедливостта, въведени от дисбаланси в данните или липса на представяне на определена група данни. Това дава на потребителите възможност да визуализират набори от данни въз основа на прогнозирани и действителни резултати, групи с грешки и специфични характеристики. Понякога откриването на недостатъчно представена група данни може също така да разкрие, че моделът не се учи добре, което води до високи неточности. Модел с предразсъдъци в данните не само е проблем със справедливостта, но показва, че моделът не е приобщаващ или надежден.
+
-
-Използвайте анализ на данни, когато трябва:
+Използвайте анализа на данни, когато трябва да:
-* Да изследвате статистиката на вашия набор от данни, като избирате различни филтри, за да разделите данните в различни измерения (известни също като групи).
-* Да разберете разпределението на вашия набор от данни между различни групи и характеристики.
-* Да определите дали вашите открития, свързани със справедливостта, анализа на грешки и причинността (получени от други компоненти на таблото), са резултат от разпределението на вашия набор от данни.
-* Да решите в кои области да съберете повече данни, за да смекчите грешки, произтичащи от проблеми с представянето, шум в етикетите, шум в характеристиките, предразсъдъци в етикетите и подобни фактори.
+* Изследвате статистиките на вашия набор от данни чрез избор на различни филтри, за да разделите данните си на различни измерения (наричани още кохорти).
+* Разберете разпределението на данните ви между различни кохорти и групи признаци.
+* Определите дали вашите наблюдения, свързани със справедливост, анализ на грешки и причинно-следствени връзки (произтичащи от други компоненти на таблото), са резултат от разпределението на набора ви от данни.
+* Изберете в кои области да съберете повече данни, за да намалите грешките, произтичащи от проблеми с представеността, шум в етикетите, шум в признаците, предразсъдъци в етикетите и подобни фактори.
## Интерпретируемост на модела
-Моделите за машинно обучение обикновено са "черни кутии". Разбирането кои ключови характеристики на данните движат прогнозата на модела може да бъде предизвикателство. Важно е да се осигури прозрачност относно причините, поради които моделът прави определена прогноза. Например, ако AI система прогнозира, че диабетен пациент е изложен на риск от повторно приемане в болница в рамките на по-малко от 30 дни, тя трябва да може да предостави подкрепящи данни, които са довели до тази прогноза. Наличието на подкрепящи данни носи прозрачност, която помага на клиницистите или болниците да вземат добре информирани решения. Освен това, възможността да се обясни защо моделът е направил прогноза за индивидуален пациент осигурява отговорност спрямо здравните регулации. Когато използвате модели за машинно обучение по начини, които засягат живота на хората, е от съществено значение да разберете и обясните какво влияе върху поведението на модела. Интерпретируемостта и обяснимостта на модела помагат да се отговори на въпроси в сценарии като:
+Моделите за машинно обучение често са черни кутии. Разбирането кои ключови признаци водят до предсказанието на модела може да бъде предизвикателство. Важно е да се осигури прозрачност защо модел дава дадено предсказание. Например, ако AI система предскаже, че диабетен пациент има риск да бъде повторно приет в болница за по-малко от 30 дни, тя трябва да може да предостави подкрепящи данни, довели до това предсказание. Наличието на индикатори за подкрепа въвежда прозрачност и помага на клиницисти или болници да взимат информирани решения. Освен това, възможността да се обясни защо модел е дал предсказание за отделен пациент осигурява отчетност според здравните регулации. Когато използвате модели за машинно обучение по начини, които засягат живота на хората, е жизненоважно да разберете и обясните какво влияе върху поведението на модела. Обяснимостта и интерпретируемостта на моделите помагат да се отговори на въпроси в сценарии като:
-* Дебъгване на модела: Защо моделът ми направи тази грешка? Как мога да го подобря?
-* Сътрудничество между хора и AI: Как мога да разбера и да се доверя на решенията на модела?
-* Регулаторно съответствие: Дали моделът ми отговаря на законовите изисквания?
+* Отстраняване на грешки в модел: Защо моят модел направи тази грешка? Как мога да го подобря?
+* Сътрудничество между човек и ИИ: Как мога да разбера и да се доверя на решенията на модела?
+* Спазване на регулации: Удволетворява ли моят модел законовите изисквания?
-Компонентът "Важност на характеристиките" в таблото за отговорен AI помага да се дебъгва и да се получи цялостно разбиране за това как моделът прави прогнози. Това е полезен инструмент за професионалисти в машинното обучение и вземащи решения, за да обяснят и покажат доказателства за характеристиките, които влияят върху поведението на модела за регулаторно съответствие. Потребителите могат да изследват както глобални, така и локални обяснения, за да валидират кои характеристики движат прогнозата на модела. Глобалните обяснения изброяват основните характеристики, които са повлияли на общата прогноза на модела. Локалните обяснения показват кои характеристики са довели до прогноза на модела за индивидуален случай. Възможността за оценка на локални обяснения също е полезна при дебъгване или одит на конкретен случай, за да се разбере и интерпретира защо моделът е направил точна или неточна прогноза.
+Компонентът Значимост на признаците в таблото за отговорен ИИ ви помага да отстранявате грешки и да добивате цялостно разбиране как моделът прави предсказания. Той е полезен инструмент за професионалисти в машинното обучение и вземащи решения, за да обясняват и показват доказателства за признаците, които влияят върху поведението на модела за спазване на регулации. След това потребителите могат да разглеждат както глобални, така и локални обяснения, за да валидират кои признаци движат предсказанията на модела. Глобалните обяснения изброяват основните признаци, които оказват влияние върху общото предсказание на модела. Локалните обяснения показват кои признаци са довели до предсказанието на модела за отделен случай. Възможността да се оценяват локални обяснения е полезна и при отстраняване на грешки или одит на конкретен случай с цел по-добро разбиране и интерпретация защо моделът е направил точно или неточно предсказание.
-
+
-* Глобални обяснения: Например, кои характеристики влияят върху общото поведение на модела за повторно приемане в болница на диабетни пациенти?
-* Локални обяснения: Например, защо диаб
-- **Прекомерно или недостатъчно представяне**. Идеята е, че определена група не е представена в дадена професия, и всяка услуга или функция, която продължава да насърчава това, допринася за вреда.
+* Глобални обяснения: Например, кои признаци влияят на общото поведение на модел за повторно приемане на пациенти с диабет в болница?
+* Локални обяснения: Например, защо диабетен пациент над 60 години с предходни хоспитализации беше предсказан да бъде или да не бъде повторно приет в болница в рамките на 30 дни?
-### Табло за отговорен AI в Azure
+В процеса на отстраняване на грешки при разглеждане на представянето на модела в различни кохорти, компонентът Значимост на признаците показва нивото на влияние, което даден признак оказва в кохортите. Той помага да се разкрият аномалии при сравняване на степента, с която признак влияе върху грешните предсказания на модела. Компонентът може да покаже кои стойности в даден признак са оказали положително или отрицателно влияние върху резултата на модела. Например, ако моделът е направил неточно предсказание, компонентът ви дава възможност да навлезете в подробности и да установите кои признаци или стойности на признаците са предизвикали това предсказание. Това ниво на детайлност помага не само при отстраняване на грешки, но и осигурява прозрачност и отчетност при одит. Накрая компонентът може да помогне за идентифициране на проблеми със справедливостта. Например, ако чувствителен признак като етническа принадлежност или пол оказва силно влияние при предсказание на модела, това може да е знак за раса или полова пристрастност в модела.
-[Табло за отговорен AI в Azure](https://learn.microsoft.com/en-us/azure/machine-learning/concept-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) е изградено върху инструменти с отворен код, разработени от водещи академични институции и организации, включително Microsoft. Те са от съществено значение за специалистите по данни и разработчиците на AI, за да разбират по-добре поведението на моделите, да откриват и смекчават нежелани проблеми в AI моделите.
+
-- Научете как да използвате различните компоненти, като разгледате [документацията за таблото за отговорен AI.](https://learn.microsoft.com/en-us/azure/machine-learning/how-to-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu)
+Използвайте интерпретируемостта, когато трябва да:
-- Разгледайте някои [примерни ноутбуци за таблото за отговорен AI](https://github.com/Azure/RAI-vNext-Preview/tree/main/examples/notebooks), за да дебъгвате по-отговорни AI сценарии в Azure Machine Learning.
+* Определите колко доверие заслужават предсказанията на вашата AI система, като разберете кои признаци са най-важни за предсказанията.
+* Подходите към отстраняването на грешки на модела, като първо го разберете и установите дали моделът използва здрави признаци или просто фалшиви корелации.
+* Откриете потенциални източници на несправедливост, като разберете дали моделът базира предсказанията си на чувствителни признаци или на такива, които са силно корелирани с тях.
+* Изградите доверие на потребителите в решенията на модела чрез генериране на локални обяснения, илюстриращи техните резултати.
+* Проведете регулаторен одит на AI система за валидиране на модели и наблюдение на въздействието на решенията на модела върху хората.
----
-## 🚀 Предизвикателство
+## Заключение
-За да предотвратим въвеждането на статистически или данни пристрастия от самото начало, трябва:
+Всички компоненти от таблото за отговорен ИИ са практични инструменти, които ви помагат да изграждате модели за машинно обучение, които са по-малко вредни и по-надеждни за обществото. Те подобряват превенцията на заплахи за човешките права; дискриминация или изключване на определени групи от възможности за живот; и риска от физически или психологически травми. Също така помагат да се изгради доверие в решенията на вашия модел чрез генериране на локални обяснения за илюстриране на резултатите им. Някои от потенциалните вреди могат да бъдат класифицирани като:
-- да имаме разнообразие от произходи и перспективи сред хората, работещи върху системите
-- да инвестираме в набори от данни, които отразяват разнообразието на нашето общество
-- да разработим по-добри методи за откриване и коригиране на пристрастия, когато те се появят
+- **Разпределение**, ако например се фаворизира един пол или етнос пред друг.
+- **Качество на услугата**. Ако обучите данните за един конкретен сценарий, но реалността е много по-сложна, това води до лошо представяща се услуга.
+- **Стереотипизиране**. Свързване на дадена група с предварително зададени атрибути.
-Помислете за реални сценарии, в които несправедливостта е очевидна при изграждането и използването на модели. Какво друго трябва да вземем предвид?
+- **Обезценяване**. Несправедливо критикуване и етикиране на нещо или някого.
+- **Прекомерно или недостатъчно представяне**. Идеята е, че дадена група не се вижда в определена професия и всяка услуга или функция, която продължава да популяризира това, допринася за вреда.
-## [Тест след лекцията](https://ff-quizzes.netlify.app/en/ml/)
-## Преглед и самостоятелно обучение
+### 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 моделите.
-В този урок научихте някои от практическите инструменти за интегриране на отговорен AI в машинното обучение.
+- Научете как да използвате различните компоненти, като прегледате RAI табло [документацията.](https://learn.microsoft.com/en-us/azure/machine-learning/how-to-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu)
-Гледайте този уъркшоп, за да се задълбочите в темите:
+- Вижте някои RAI табло [примерни тетрадки](https://github.com/Azure/RAI-vNext-Preview/tree/main/examples/notebooks) за отстраняване на грешки в по-отговорни AI сценарии в Azure Machine Learning.
+
+---
+## 🚀 Предизвикателство
+
+За да предотвратим въвеждането на статистически или данни предразсъдъци от самото начало, трябва:
+
+- да има разнообразие от среди и перспективи сред хората, работещи по системите
+- да инвестираме в набори от данни, които отразяват разнообразието на нашето общество
+- да разработим по-добри методи за откриване и коригиране на предразсъдъци, когато възникнат
+
+Помислете за реални сценарии, в които несправедливостта е очевидна при изграждането и използването на модели. Какво още трябва да вземем предвид?
+
+## [Тест след лекцията](https://ff-quizzes.netlify.app/en/ml/)
+## Преглед и Самообучение
+
+В този урок научихте някои от практическите инструменти за включване на отговорен AI в машинното обучение.
-- Табло за отговорен AI: Единно решение за оперативизиране на отговорен AI на практика от Бесмира Нуши и Мехрнуш Самеки
+Гледайте този уъркшоп, за да навлезете по-дълбоко в темите:
-[](https://www.youtube.com/watch?v=f1oaDNl3djg "Табло за отговорен AI: Единно решение за оперативизиране на отговорен AI на практика")
+- Отговорно AI табло: Централно място за опериране с RAI на практика от Бесмира Нуши и Мехрнуш Самеки
-> 🎥 Кликнете върху изображението по-горе за видео: Табло за отговорен AI: Единно решение за оперативизиране на отговорен AI на практика от Бесмира Нуши и Мехрнуш Самеки
+[](https://www.youtube.com/watch?v=f1oaDNl3djg "Отговорно AI табло: Централно място за опериране с RAI на практика")
-Прегледайте следните материали, за да научите повече за отговорния AI и как да изграждате по-надеждни модели:
+> 🎥 Кликнете върху изображението по-горе за видео: Отговорно AI табло: Централно място за опериране с RAI на практика от Бесмира Нуши и Мехрнуш Самеки
+
+Позовете се на следните материали, за да научите повече за отговорния AI и как да изградите по-доверени модели:
-- Инструменти на Microsoft за отговорен AI за дебъгване на ML модели: [Ресурси за инструменти за отговорен AI](https://aka.ms/rai-dashboard)
+- Инструменти на Microsoft за отговорно AI за отстраняване на грешки в ML модели: [Отговорни AI ресурси](https://aka.ms/rai-dashboard)
-- Разгледайте комплекта инструменти за отговорен AI: [Github](https://github.com/microsoft/responsible-ai-toolbox)
+- Разгледайте комплекта за отговорен AI: [Github](https://github.com/microsoft/responsible-ai-toolbox)
-- Център за ресурси за отговорен AI на Microsoft: [Ресурси за отговорен AI – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
+- Центърът за ресурси на Microsoft за RAI: [Отговорни AI ресурси – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
-- Изследователска група FATE на Microsoft: [FATE: Справедливост, отчетност, прозрачност и етика в AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
+- Изследователската група на Microsoft FATE: [FATE: Справедливост, Отговорност, Прозрачност и Етика в AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
## Задача
-[Разгледайте таблото за отговорен AI](assignment.md)
+[Разгледайте RAI табло](assignment.md)
---
-**Отказ от отговорност**:
-Този документ е преведен с помощта на AI услуга за превод [Co-op Translator](https://github.com/Azure/co-op-translator). Въпреки че се стремим към точност, моля, имайте предвид, че автоматизираните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия роден език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален човешки превод. Ние не носим отговорност за недоразумения или погрешни интерпретации, произтичащи от използването на този превод.
\ No newline at end of file
+
+**Отказ от отговорност**:
+Този документ е преведен с помощта на AI преводачески услуга [Co-op Translator](https://github.com/Azure/co-op-translator). Въпреки че се стремим към точност, моля имайте предвид, че автоматизираните преводи могат да съдържат грешки или неточности. Оригиналният документ на неговия роден език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален човешки превод. Ние не носим отговорност за каквито и да е недоразумения или неправилни тълкувания, произтичащи от използването на този превод.
+
\ No newline at end of file
diff --git a/translations/bn/.co-op-translator.json b/translations/bn/.co-op-translator.json
index 329ce4706..97cc4464b 100644
--- a/translations/bn/.co-op-translator.json
+++ b/translations/bn/.co-op-translator.json
@@ -24,8 +24,8 @@
"language_code": "bn"
},
"1-Introduction/3-fairness/README.md": {
- "original_hash": "9a6b702d1437c0467e3c5c28d763dac2",
- "translation_date": "2025-09-04T21:06:45+00:00",
+ "original_hash": "0f00d72169a0d37eecfd16d71e01700a",
+ "translation_date": "2026-07-14T02:09:21+00:00",
"source_file": "1-Introduction/3-fairness/README.md",
"language_code": "bn"
},
@@ -54,8 +54,8 @@
"language_code": "bn"
},
"2-Regression/1-Tools/README.md": {
- "original_hash": "fa81d226c71d5af7a2cade31c1c92b88",
- "translation_date": "2025-09-04T20:59:44+00:00",
+ "original_hash": "0b8635427b582d03ea4ab7089b93e505",
+ "translation_date": "2026-07-14T02:05:54+00:00",
"source_file": "2-Regression/1-Tools/README.md",
"language_code": "bn"
},
@@ -72,8 +72,8 @@
"language_code": "bn"
},
"2-Regression/2-Data/README.md": {
- "original_hash": "7c077988328ebfe33b24d07945f16eca",
- "translation_date": "2025-09-04T21:00:41+00:00",
+ "original_hash": "a58b2c4d16c6b122643391745ac15af6",
+ "translation_date": "2026-07-14T02:06:44+00:00",
"source_file": "2-Regression/2-Data/README.md",
"language_code": "bn"
},
@@ -89,6 +89,12 @@
"source_file": "2-Regression/2-Data/solution/Julia/README.md",
"language_code": "bn"
},
+ "2-Regression/2-Data/solution/notebook.ipynb": {
+ "original_hash": "96b95f8cf473481f2f371de8156f1571",
+ "translation_date": "2026-07-14T02:02:14+00:00",
+ "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
+ "language_code": "bn"
+ },
"2-Regression/3-Linear/README.md": {
"original_hash": "8b776e731c35b171d316d01d0e7b1369",
"translation_date": "2026-04-26T19:56:52+00:00",
@@ -457,7 +463,7 @@
},
"8-Reinforcement/1-QLearning/README.md": {
"original_hash": "911efd5e595089000cb3c16fce1beab8",
- "translation_date": "2025-09-04T21:13:21+00:00",
+ "translation_date": "2026-07-14T02:07:40+00:00",
"source_file": "8-Reinforcement/1-QLearning/README.md",
"language_code": "bn"
},
@@ -481,7 +487,7 @@
},
"8-Reinforcement/2-Gym/README.md": {
"original_hash": "107d5bb29da8a562e7ae72262d251a75",
- "translation_date": "2025-09-04T21:14:05+00:00",
+ "translation_date": "2026-07-14T02:08:33+00:00",
"source_file": "8-Reinforcement/2-Gym/README.md",
"language_code": "bn"
},
@@ -523,7 +529,7 @@
},
"9-Real-World/2-Debugging-ML-Models/README.md": {
"original_hash": "df2b538e8fbb3e91cf0419ae2f858675",
- "translation_date": "2025-09-04T21:05:51+00:00",
+ "translation_date": "2026-07-14T02:10:18+00:00",
"source_file": "9-Real-World/2-Debugging-ML-Models/README.md",
"language_code": "bn"
},
@@ -581,6 +587,19 @@
"source_file": "TROUBLESHOOTING.md",
"language_code": "bn"
},
+ "__translation_failures__": {
+ "sketchnotes/LICENSE.md": {
+ "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f",
+ "source_file": "sketchnotes/LICENSE.md",
+ "language_code": "bn",
+ "failure_date": "2026-07-14T02:05:09+00:00",
+ "status": "failed",
+ "error_type": "TranslationIncompleteError",
+ "error_message": "Markdown translation remained incomplete for chunk 1.1.1 of 'LICENSE.md', and the chunk could not be split further.",
+ "translator_version": "0.20.0",
+ "failure_policy_version": 1
+ }
+ },
"docs/_sidebar.md": {
"original_hash": "68dd06c685f6ce840e0acfa313352e7c",
"translation_date": "2025-08-29T21:08:07+00:00",
diff --git a/translations/bn/1-Introduction/3-fairness/README.md b/translations/bn/1-Introduction/3-fairness/README.md
index 93b4d4eb5..2b9efdead 100644
--- a/translations/bn/1-Introduction/3-fairness/README.md
+++ b/translations/bn/1-Introduction/3-fairness/README.md
@@ -1,144 +1,167 @@
-# দায়িত্বশীল AI দিয়ে মেশিন লার্নিং সমাধান তৈরি করা
+# দায়িত্বশীল AI দিয়ে মেশিন লার্নিং সমাধান তৈরি
+
+
+> স্কেচনোট লিখেছেন [Tomomi Imura](https://www.twitter.com/girlie_mac)
-
-> স্কেচনোট: [Tomomi Imura](https://www.twitter.com/girlie_mac)
+## [প্রী-লেকচার কুইজ](https://ff-quizzes.netlify.app/en/ml/)
+
+## পরিচিতি
-## [পূর্ব-লেকচার কুইজ](https://ff-quizzes.netlify.app/en/ml/)
+এই পাঠক্রমে, আপনি আবিষ্কার করতে শুরু করবেন যে কীভাবে মেশিন লার্নিং আমাদের প্রতিদিনের জীবনে প্রভাব ফেলছে এবং ফেলতে পারে। বিশেষ করে আজকের দিনে, সিস্টেম এবং মডেলগুলি প্রতিদিনের সিদ্ধান্ত গ্রহণের কাজগুলোতে জড়িত থাকে, যেমন স্বাস্থ্যসেবা নির্ণয়, ঋণ অনুমোদন বা দুর্নীতির সনাক্তকরণ। তাই, এই মডেলগুলোর সঠিক ও বিশ্বাসযোগ্য ফলাফল দেওয়া জরুরি। যেকোন সফটওয়্যার অ্যাপ্লিকেশনের মতো, AI সিস্টেমও প্রত্যাশা পূরণ করতে না পারা বা অনাকাঙ্ক্ষিত ফলাফল দেয়ার সম্ভাবনা থাকে। এজন্য AI মডেলের আচরণ বোঝা এবং ব্যাখ্যা করার ক্ষমতা থাকা অপরিহার্য।
-## ভূমিকা
+ভাবুন যখন আপনি মডেল তৈরিতে ব্যবহার করা ডাটাতে কোনো নির্দিষ্ট জনগোষ্ঠীর যেমন: বর্ণ, লিঙ্গ, রাজনৈতিক মতামত, ধর্মের অভাব থাকে বা অনুপাতে বেশি প্রতিনিধিত্ব পায়, তখন কী হতে পারে? যখন মডেলের আউটপুট কোনো নির্দিষ্ট জনগোষ্ঠীর পক্ষে যায় তখন কী হয়? তার পরিণতি কী? এছাড়াও, মডেলের ফলাফল কোনো ক্ষতিকর হলে এবং মানুষের জন্য অযাচিত হলে কী ঘটে? AI সিস্টেমের আচরণের জন্য কে দায়ী? এই প্রশ্নগুলোই আমরা এই পাঠক্রমে অনুসন্ধান করব।
-এই পাঠ্যক্রমে, আপনি শিখতে শুরু করবেন কীভাবে মেশিন লার্নিং আমাদের দৈনন্দিন জীবনে প্রভাব ফেলছে। এমনকি এখন, সিস্টেম এবং মডেলগুলি স্বাস্থ্যসেবা নির্ণয়, ঋণ অনুমোদন বা প্রতারণা সনাক্তকরণের মতো দৈনন্দিন সিদ্ধান্ত গ্রহণের কাজে জড়িত। তাই, এটি গুরুত্বপূর্ণ যে এই মডেলগুলি এমন ফলাফল প্রদান করে যা বিশ্বাসযোগ্য। যেকোনো সফটওয়্যার অ্যাপ্লিকেশনের মতো, AI সিস্টেমগুলি প্রত্যাশা পূরণে ব্যর্থ হতে পারে বা অনাকাঙ্ক্ষিত ফলাফল দিতে পারে। এজন্য AI মডেলের আচরণ বুঝতে এবং ব্যাখ্যা করতে সক্ষম হওয়া অত্যন্ত গুরুত্বপূর্ণ।
+এই পাঠে আপনি:
-কল্পনা করুন, আপনি যখন এই মডেলগুলি তৈরি করতে ব্যবহৃত ডেটাতে নির্দিষ্ট জনসংখ্যার অভাব থাকে, যেমন জাতি, লিঙ্গ, রাজনৈতিক মতামত, ধর্ম, বা অসমভাবে প্রতিনিধিত্ব করা হয়। যদি মডেলের আউটপুট কিছু জনসংখ্যাকে প্রাধান্য দেয়, তাহলে এর ফলাফল কী হতে পারে? এছাড়াও, যদি মডেলটি ক্ষতিকর ফলাফল দেয় এবং মানুষের জন্য ক্ষতিকর হয়, তাহলে এর জন্য কে দায়ী? এই পাঠ্যক্রমে আমরা এই প্রশ্নগুলো নিয়ে আলোচনা করব।
-
-এই পাঠে আপনি:
-
-- মেশিন লার্নিং-এ ন্যায্যতার গুরুত্ব এবং ন্যায্যতা-সম্পর্কিত ক্ষতির বিষয়ে সচেতনতা বৃদ্ধি করবেন।
-- আউটলায়ার এবং অস্বাভাবিক পরিস্থিতি অন্বেষণের অনুশীলনে পরিচিত হবেন যাতে নির্ভরযোগ্যতা এবং নিরাপত্তা নিশ্চিত করা যায়।
-- সবাইকে ক্ষমতায়িত করার জন্য অন্তর্ভুক্তিমূলক সিস্টেম ডিজাইনের প্রয়োজনীয়তা বুঝবেন।
-- ডেটা এবং মানুষের গোপনীয়তা এবং নিরাপত্তা রক্ষার গুরুত্ব অন্বেষণ করবেন।
-- AI মডেলের আচরণ ব্যাখ্যা করার জন্য একটি স্বচ্ছ পদ্ধতির গুরুত্ব দেখবেন।
-- AI সিস্টেমে বিশ্বাস তৈরি করতে দায়বদ্ধতার গুরুত্ব সম্পর্কে সচেতন হবেন।
+- মেশিন লার্নিংয়ে ন্যায়বিচারের গুরুত্ব এবং ন্যায়বিচার সংক্রান্ত ক্ষতির বিষয়ে সচেতনতা বাড়াবেন।
+- আউটলায়ার এবং অস্বাভাবিক পরিস্থিতি অন্বেষণ করার অভ্যাসে পরিচিত হবেন, যাতে নির্ভরযোগ্যতা ও নিরাপত্তা নিশ্চিত করা যায়।
+- অন্তর্ভুক্তিমূলক সিস্টেম ডিজাইন করে সবাইকে ক্ষমতায়িত করার প্রয়োজনীয়তা সম্পর্কে বোঝাপড়া লাভ করবেন।
+- ডেটা এবং মানুষের গোপনীয়তা ও সুরক্ষা রক্ষার গুরুত্ব অন্বেষণ করবেন।
+- AI মডেলের আচরণ ব্যাখ্যার জন্য গ্লাস বক্স পদ্ধতির গুরুত্ব দেখবেন।
+- AI সিস্টেমে বিশ্বাস গড়ে তুলতে জবাবদিহিতা কতটা অপরিহার্য তা সচেতন থাকবেন।
## পূর্বশর্ত
-পূর্বশর্ত হিসেবে, "Responsible AI Principles" শেখার পথটি গ্রহণ করুন এবং নিচের ভিডিওটি দেখুন:
+পূর্বশর্ত হিসেবে, অনুগ্রহ করে "দায়িত্বশীল AI নীতি" লার্ন পাথ সম্পন্ন করুন এবং নিচের ভিডিওটি দেখুন:
-[Responsible AI শেখার পথ](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)
+দায়িত্বশীল AI সম্পর্কে আরও শিখতে এই [লার্ন পাথ](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) অনুসরণ করুন
-[](https://youtu.be/dnC8-uUZXSc "Microsoft's Approach to Responsible AI")
+[](https://youtu.be/dnC8-uUZXSc "Microsoft's Approach to Responsible AI")
-> 🎥 উপরের ছবিতে ক্লিক করুন: Microsoft's Approach to Responsible AI
+> 🎥 ভিডিও দেখতে উপরের ছবিতে ক্লিক করুন: Microsoft-এর দায়িত্বশীল AI-এর পদ্ধতি
-## ন্যায্যতা
+## ন্যায়বিচার
-AI সিস্টেমগুলোকে সবার প্রতি ন্যায্য আচরণ করতে হবে এবং একই ধরনের গোষ্ঠীর মানুষের প্রতি ভিন্নভাবে প্রভাব না ফেলতে হবে। উদাহরণস্বরূপ, যখন AI সিস্টেমগুলো চিকিৎসা, ঋণ আবেদন বা চাকরির ক্ষেত্রে নির্দেশনা প্রদান করে, তখন একই উপসর্গ, আর্থিক পরিস্থিতি বা পেশাগত যোগ্যতা থাকা সবার জন্য একই সুপারিশ করা উচিত। আমাদের প্রত্যেকের মধ্যে এমন উত্তরাধিকারসূত্রে প্রাপ্ত পক্ষপাত রয়েছে যা আমাদের সিদ্ধান্ত এবং কর্মে প্রভাব ফেলে। এই পক্ষপাতগুলো আমরা AI সিস্টেম প্রশিক্ষণের জন্য ব্যবহৃত ডেটাতে দেখতে পাই। কখনও কখনও এই ধরনের প্রভাব অনিচ্ছাকৃতভাবে ঘটে। ডেটাতে পক্ষপাত যুক্ত করার সময় সচেতনভাবে তা জানা প্রায়ই কঠিন।
+AI সিস্টেমকে সবার প্রতি ন্যায়বান হতে হবে এবং একই ধরনের মানুষের গোষ্ঠীগুলোর প্রতি ভিন্নভাবে আচরণ এড়াতে হবে। উদাহরণস্বরূপ, যখন AI সিস্টেম চিকিৎসা নির্দেশনা, ঋণ আবেদন বা চাকরির ক্ষেত্রে পরামর্শ দেয়, তখন একই ধরনের উপসর্গ, আর্থিক পরিস্থিতি বা পেশাগত যোগ্যতা সম্পন্ন সবাইকে একই সুপারিশ করা উচিত। আমরা প্রত্যেকেই এমন বংশগত পক্ষপাত বহন করি যা আমাদের সিদ্ধান্ত ও কার্যকলাপকে প্রভাবিত করে। এই পক্ষপাতগুলি ডেটায় প্রতিফলিত হতে পারে যা AI সিস্টেমকে প্রশিক্ষিত করতে ব্যবহৃত হয়। কখনো কখনো এমন প্রভাব অজান্তে চলে আসে। পক্ষপাত অন্তর্ভুক্তির সজ্ঞানে সচেতন হওয়া কঠিন।
-**“অন্যায্যতা”** বলতে একটি গোষ্ঠীর জন্য নেতিবাচক প্রভাব বা “ক্ষতি” বোঝায়, যেমন জাতি, লিঙ্গ, বয়স বা অক্ষমতার ভিত্তিতে সংজ্ঞায়িত। ন্যায্যতা-সম্পর্কিত প্রধান ক্ষতিগুলোকে নিম্নরূপ শ্রেণীবদ্ধ করা যায়:
+**“অন্যায়”** মানে নেতিবাচক প্রভাব বা “ক্ষতি”, যা নির্দিষ্ট জনগোষ্ঠীর জন্য হয়, যেমন বর্ণ, লিঙ্গ, বয়স বা প্রতিবন্ধী অবস্থার ভিত্তিতে। প্রধান ন্যায়বিচার-সংক্রান্ত ক্ষতি শ্রেণীবদ্ধ করা যায়:
-- **বণ্টন**, যদি একটি লিঙ্গ বা জাতি অন্যটির তুলনায় প্রাধান্য পায়।
-- **সেবার গুণমান**। যদি আপনি একটি নির্দিষ্ট পরিস্থিতির জন্য ডেটা প্রশিক্ষণ করেন কিন্তু বাস্তবতা অনেক বেশি জটিল হয়, তাহলে এটি একটি দুর্বল সেবার দিকে নিয়ে যায়। উদাহরণস্বরূপ, একটি হাত ধোয়ার সাবান ডিসপেনসার যা গাঢ় ত্বকের মানুষের উপস্থিতি সনাক্ত করতে পারে না। [রেফারেন্স](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
-- **অপমান**। অন্যায়ভাবে সমালোচনা করা বা কিছু বা কাউকে লেবেল দেওয়া। উদাহরণস্বরূপ, একটি ইমেজ লেবেলিং প্রযুক্তি কালো ত্বকের মানুষের ছবি ভুলভাবে গরিলা হিসেবে চিহ্নিত করেছিল।
-- **অতিরিক্ত বা কম প্রতিনিধিত্ব**। ধারণাটি হলো একটি নির্দিষ্ট গোষ্ঠীকে একটি নির্দিষ্ট পেশায় দেখা যায় না, এবং যে কোনো সেবা বা কার্যক্রম যা এটি প্রচার করে তা ক্ষতির দিকে অবদান রাখে।
-- **স্টেরিওটাইপিং**। একটি নির্দিষ্ট গোষ্ঠীকে পূর্বনির্ধারিত বৈশিষ্ট্যের সাথে যুক্ত করা। উদাহরণস্বরূপ, ইংরেজি এবং তুর্কি ভাষার মধ্যে একটি ভাষা অনুবাদ সিস্টেমে লিঙ্গ-সম্পর্কিত স্টেরিওটাইপের কারণে ভুল হতে পারে।
+- **বন্টন**, যেমন লিঙ্গ বা জাতিগততার ক্ষেত্রে এক পক্ষের পক্ষে বেশি সুবিধা দেওয়া হয়।
+- **পরিষেবার গুণগত মান**। যদি আপনি এক বিশেষ পরিস্থিতির জন্য ডেটা প্রশিক্ষণ দেন কিন্তু বাস্তবতা অনেক বেশি জটিল হয়, তবে তা খারাপ সেবাতে পরিণত হয়। উদাহরণস্বরূপ, এমন একটি হ্যান্ড সাবান ডিসপেন্সার যা গাঢ় রঙের ত্বকের মানুষের উপস্থিতি শনাক্ত করতে পারে না। [তথ্যসূত্র](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
+- **হেয় করা**। অন্যায়ভাবে কারো সমালোচনা বা খারাপ ট্যাগ দেয়া। উদাহরণস্বরূপ, একটি ছবি লেবেলিং প্রযুক্তি গাঢ় রঙের মানুষের ছবি গোড়িলাদের হিসেবে ভুল চিহ্নিত করেছিল।
+- **অধিক বা কম প্রতিনিধিত্ব**। ধারণাটি হলো কোনো নির্দিষ্ট গোষ্ঠী কোনো পেশায় দেখা যায় না এবং যেকোনো পরিষেবা বা কাজ যা তা প্রাধান্য দেয়, তা ক্ষতিকর হতে পারে।
+- **স্টেরিওটাইপিং**। কোনো গোষ্ঠীকে পূর্বনির্ধারিত বৈশিষ্ট্যের সাথে যুক্ত করা। উদাহরণস্বরূপ, ইংরেজি এবং তুর্কি ভাষার অনুবাদ ব্যবস্থায় লিঙ্গভিত্তিক স্টেরিওটাইপিক্যাল শব্দ থাকার কারণে ভুল হতে পারে।
-
+
> তুর্কিতে অনুবাদ
-
-> ইংরেজিতে ফিরে অনুবাদ
+
+> আবার ইংরেজিতে অনুবাদ
-AI সিস্টেম ডিজাইন এবং পরীক্ষা করার সময়, আমাদের নিশ্চিত করতে হবে যে AI ন্যায্য এবং পক্ষপাতমূলক বা বৈষম্যমূলক সিদ্ধান্ত নিতে প্রোগ্রাম করা হয়নি, যা মানুষের জন্যও নিষিদ্ধ। AI এবং মেশিন লার্নিং-এ ন্যায্যতা নিশ্চিত করা একটি জটিল সামাজিক-প্রযুক্তিগত চ্যালেঞ্জ।
+AI সিস্টেম ডিজাইন ও পরীক্ষার সময় নিশ্চিত করতে হয় যে AI ন্যায়সঙ্গত এবং পক্ষপাতমূলক বা বৈষম্যমূলক সিদ্ধান্ত না দেয়, যা মানবকেও বাধ্যতামূলকভাবে এড়াতে হয়। AI ও মেশিন লার্নিংয়ে ন্যায়প্রদতা নিশ্চিত করা একটি জটিল সামাজিক-প্রযুক্তিগত চ্যালেঞ্জ।
### নির্ভরযোগ্যতা এবং নিরাপত্তা
-বিশ্বাস তৈরি করতে, AI সিস্টেমগুলোকে স্বাভাবিক এবং অপ্রত্যাশিত পরিস্থিতিতে নির্ভরযোগ্য, নিরাপদ এবং ধারাবাহিক হতে হবে। বিভিন্ন পরিস্থিতিতে AI সিস্টেমের আচরণ কেমন হবে তা জানা গুরুত্বপূর্ণ, বিশেষত যখন তারা অস্বাভাবিক পরিস্থিতিতে থাকে। AI সমাধান তৈরি করার সময়, AI সমাধানগুলো যে বিভিন্ন পরিস্থিতির সম্মুখীন হতে পারে তা পরিচালনা করার জন্য যথেষ্ট মনোযোগ দেওয়া প্রয়োজন। উদাহরণস্বরূপ, একটি স্বয়ংচালিত গাড়িকে মানুষের নিরাপত্তাকে সর্বোচ্চ অগ্রাধিকার দিতে হবে। ফলস্বরূপ, গাড়ির AI-কে রাত, বজ্রঝড় বা তুষারঝড়, রাস্তা পার হওয়া শিশু, পোষা প্রাণী, রাস্তা নির্মাণ ইত্যাদির মতো সমস্ত সম্ভাব্য পরিস্থিতি বিবেচনা করতে হবে। একটি AI সিস্টেম কতটা ভালোভাবে বিভিন্ন পরিস্থিতি নির্ভরযোগ্য এবং নিরাপদভাবে পরিচালনা করতে পারে তা ডেটা বিজ্ঞানী বা AI ডেভেলপার ডিজাইন বা পরীক্ষার সময় কতটা প্রত্যাশা করেছেন তা প্রতিফলিত করে।
+বিশ্বাস গড়ে তুলতে AI সিস্টেমগুলোকে সাধারণ ও অপ্রত্যাশিত পরিস্থিতিতেও নির্ভরযোগ্য, নিরাপদ এবং নিয়মিত থাকতে হবে। একাধিক পরিস্থিতিতে বিশেষ করে আউটলায়ার হলে AI সিস্টেম কেমন আচরণ করবে জানা গুরুত্বপূর্ণ। AI সমাধান গড়ে তোলার সময়ে AI সমাধানগুলো বিভিন্ন পরিস্থিতি মোকাবেলার উপর শক্ত ফোকাস থাকা প্রয়োজন। উদাহরণস্বরূপ, স্বয়ংচালিত গাড়ি মানুষের নিরাপত্তাকে সর্বোচ্চ অগ্রাধিকার দেবে। তাই গাড়িকে AI চালিত করার সময় গাড়িটি রাত, বিদ্যুৎ ঝড়, তুষারঝড়, রাস্তা পারাপারকারী শিশু, পোষা প্রাণী, রাস্তা নির্মাণ ইত্যাদি সকল সম্ভাব্য পরিস্থিতি বিবেচনা করতে হবে। একটি AI সিস্টেম কতটা ভালোভাবে এবং নিরাপদে বিভিন্ন পরিবেশ মোকাবেলা করতে পারে তা প্রকৌশলী বা AI ডেভেলপার কতটা পূর্বাভাস দিয়েছে, তা প্রতিফলিত করে।
-> [🎥 এখানে ক্লিক করুন একটি ভিডিওর জন্য: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
+> [🎥 ভিডিও দেখতে এখানে ক্লিক করুন: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
### অন্তর্ভুক্তিমূলকতা
-AI সিস্টেমগুলোকে এমনভাবে ডিজাইন করা উচিত যাতে সবার অংশগ্রহণ এবং ক্ষমতায়ন নিশ্চিত হয়। AI সিস্টেম ডিজাইন এবং বাস্তবায়নের সময়, ডেটা বিজ্ঞানী এবং AI ডেভেলপাররা সিস্টেমে সম্ভাব্য বাধাগুলো চিহ্নিত করেন এবং সমাধান করেন যা অনিচ্ছাকৃতভাবে মানুষকে বাদ দিতে পারে। উদাহরণস্বরূপ, বিশ্বে ১ বিলিয়ন প্রতিবন্ধী মানুষ রয়েছে। AI-এর অগ্রগতির মাধ্যমে, তারা তাদের দৈনন্দিন জীবনে আরও সহজে তথ্য এবং সুযোগগুলোতে প্রবেশ করতে পারে। বাধাগুলো দূর করার মাধ্যমে, এটি উদ্ভাবনের সুযোগ তৈরি করে এবং সবার জন্য আরও ভালো অভিজ্ঞতা সহ AI পণ্য তৈরি করে।
+AI সিস্টেম এমনভাবে ডিজাইন করা উচিত যা সবাইকে জড়িত করে এবং ক্ষমতায়িত করে। AI সিস্টেম ডিজাইন ও বাস্তবায়নের সময় ডেটা বিজ্ঞানী ও ডেভেলপাররা সিস্টেমের সম্ভাব্য প্রতিবন্ধকতাগুলো সনাক্ত করে যা মানুষের বেছে নিয়ে বাদ দিতে পারে। উদাহরণস্বরূপ, বিশ্বে ১ বিলিয়ন প্রতিবন্ধী মানুষ আছেন। AI প্রগতির মাধ্যমে তারা প্রতিদিনের জীবনে তথ্য ও সুযোগ আরও সহজে পেতে পারেন। প্রতিবন্ধকতাগুলো মোকাবেলা করে, everyoneকে উপকৃত করে এমন AI পণ্য উদ্ভাবন এবং উন্নয়নের সুযোগ তৈরি হয়।
-> [🎥 এখানে ক্লিক করুন একটি ভিডিওর জন্য: AI-তে অন্তর্ভুক্তিমূলকতা](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
+> [🎥 AI-তে অন্তর্ভুক্তিমূলকতা সম্পর্কে ভিডিও দেখতে এখানে ক্লিক করুন](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
-### নিরাপত্তা এবং গোপনীয়তা
+### সুরক্ষা ও গোপনীয়তা
-AI সিস্টেমগুলোকে নিরাপদ হতে হবে এবং মানুষের গোপনীয়তার প্রতি সম্মান দেখাতে হবে। এমন সিস্টেমে মানুষের কম বিশ্বাস থাকে যা তাদের গোপনীয়তা, তথ্য বা জীবনকে ঝুঁকিতে ফেলে। মেশিন লার্নিং মডেল প্রশিক্ষণের সময়, আমরা সেরা ফলাফল পেতে ডেটার উপর নির্ভর করি। এটি করার সময়, ডেটার উৎস এবং অখণ্ডতা বিবেচনা করা গুরুত্বপূর্ণ। উদাহরণস্বরূপ, ডেটা কি ব্যবহারকারী জমা দিয়েছে নাকি এটি সর্বজনীনভাবে উপলব্ধ? পরবর্তী ধাপে, ডেটার সাথে কাজ করার সময়, এটি অত্যন্ত গুরুত্বপূর্ণ যে AI সিস্টেমগুলো গোপনীয় তথ্য রক্ষা করতে এবং আক্রমণ প্রতিরোধ করতে সক্ষম। AI আরও ব্যাপক হওয়ার সাথে সাথে গোপনীয়তা রক্ষা এবং গুরুত্বপূর্ণ ব্যক্তিগত এবং ব্যবসায়িক তথ্য সুরক্ষিত করা আরও গুরুত্বপূর্ণ এবং জটিল হয়ে উঠছে। গোপনীয়তা এবং ডেটা নিরাপত্তার বিষয়গুলো AI-এর জন্য বিশেষভাবে ঘনিষ্ঠ মনোযোগ প্রয়োজন কারণ ডেটার অ্যাক্সেস AI সিস্টেমগুলোকে মানুষের সম্পর্কে সঠিক এবং তথ্যপূর্ণ পূর্বাভাস এবং সিদ্ধান্ত নিতে সক্ষম করে।
+AI সিস্টেম নিরাপদ হওয়া উচিত এবং মানুষের গোপনীয়তা সম্মান করা উচিত। যারা তাদের গোপনীয়তা, তথ্য বা জীবন ঝুঁকিতে ফেলে এমন সিস্টেমে কম বিশ্বাস করে। মেশিন লার্নিং মডেল প্রশিক্ষণের সময় সেরা ফলাফল পাওয়ার জন্য আমরা ডেটার ওপর নির্ভর করি। এজন্য ডেটার উৎস ও অখণ্ডতা বিবেচনা জরুরি। যেমন, ডেটা ব্যবহারকারী জমা দিয়েছেন কি না বা এটি কি প্রকাশ্যে উপলব্ধ ছিল? পরবর্তী ধাপে, ডেটার সঙ্গে কাজ করার সময় গোপনীয় তথ্য রক্ষা এবং আক্রমণ প্রতিরোধী AI সিস্টেম তৈরি করা আবশ্যক। AI ব্যাপক হওয়ায় গোপনীয়তা এবং গুরুত্বপূর্ণ ব্যক্তিগত ও ব্যবসায়িক তথ্য রক্ষা করা আরও গুরুত্বপূর্ণ ও জটিল হয়ে দাঁড়িয়েছে। গোপনীয়তা ও ডেটা সুরক্ষা সমস্যা AI-র জন্য বিশেষ মনোযোগ দাবি করে কারণ সঠিক ও সচেতন পূর্বাভাস ও সিদ্ধান্ত নেওয়ার জন্য AI সিস্টেমের ডেটা প্রবেশাধিকার অপরিহার্য।
-> [🎥 এখানে ক্লিক করুন একটি ভিডিওর জন্য: AI-তে নিরাপত্তা](https://www.microsoft.com/videoplayer/embed/RE4voJF)
+> [🎥 AI-তে সুরক্ষা সম্পর্কে ভিডিও দেখতে এখানে ক্লিক করুন](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- শিল্প হিসেবে আমরা গোপনীয়তা এবং নিরাপত্তায় উল্লেখযোগ্য অগ্রগতি করেছি, যা GDPR (General Data Protection Regulation)-এর মতো নিয়ম দ্বারা উল্লেখযোগ্যভাবে চালিত হয়েছে।
-- তবে AI সিস্টেমের ক্ষেত্রে আমাদের স্বীকার করতে হবে যে ব্যক্তিগত ডেটার প্রয়োজনীয়তা এবং গোপনীয়তার মধ্যে একটি টানাপোড়েন রয়েছে।
-- ইন্টারনেটের সাথে সংযুক্ত কম্পিউটারের জন্মের মতো, আমরা AI-সম্পর্কিত নিরাপত্তা সমস্যার সংখ্যায়ও একটি বড় বৃদ্ধি দেখছি।
-- একই সময়ে, আমরা AI ব্যবহার করে নিরাপত্তা উন্নত করতে দেখেছি। উদাহরণস্বরূপ, আজকের বেশিরভাগ আধুনিক অ্যান্টি-ভাইরাস স্ক্যানার AI হিউরিস্টিক দ্বারা চালিত।
-- আমাদের নিশ্চিত করতে হবে যে আমাদের ডেটা সায়েন্স প্রক্রিয়াগুলো সর্বশেষ গোপনীয়তা এবং নিরাপত্তা অনুশীলনের সাথে সুরেলা ভাবে মিশে যায়।
-
-### স্বচ্ছতা
+- একটি শিল্প হিসেবে, আমরা গোপনীয়তা ও সুরক্ষায় উল্লেখযোগ্য অগ্রগতি করেছি, বিশেষ করে GDPR (জনरल ডেটা প্রোটেকশন রেগুলেশন) এর মত নিয়মকানুন দ্বারা চালিত হয়।
+- তবে AI সিস্টেমে আমাদের মেনে নিতে হবে যে, ব্যক্তিগত ডেটার বেশি প্রয়োজন এবং গোপনীয়তার মধ্যে একটি টানাপোড়েন আছে।
+- যেমন ইন্টারনেটের জন্মের সময় সংযুক্ত কম্পিউটারগুলোর ক্ষেত্রে, এখনও AI-এর সাথে সম্পর্কিত সুরক্ষা সমস্যাগুলোর ব্যাপক বৃদ্ধি দেখছি।
+- একই সাথে, আমরা দেখেছি AI কে সুরক্ষা উন্নত করতে ব্যবহার করা হচ্ছে। উদাহরণস্বরূপ, অধিকাংশ আধুনিক অ্যান্টিভাইরাস স্ক্যানার আজকাল AI হিউরিস্টিক দ্বারা চালিত হয়।
+- আমাদের ডেটা সায়েন্স প্রক্রিয়াগুলো সম্প্রতি গোপনীয়তা এবং সুরক্ষার সর্বাধুনিক অনুশীলনের সাথে αρμονিয়ভাবে মিশতে হবে।
-AI সিস্টেমগুলোকে বোঝার মতো হতে হবে। স্বচ্ছতার একটি গুরুত্বপূর্ণ অংশ হলো AI সিস্টেম এবং এর উপাদানগুলোর আচরণ ব্যাখ্যা করা। AI সিস্টেমের বোঝাপড়া উন্নত করতে, স্টেকহোল্ডারদের বুঝতে হবে কীভাবে এবং কেন তারা কাজ করে যাতে তারা সম্ভাব্য কর্মক্ষমতা সমস্যা, নিরাপত্তা এবং গোপনীয়তা উদ্বেগ, পক্ষপাত, বাদ দেওয়ার অনুশীলন বা অনিচ্ছাকৃত ফলাফল চিহ্নিত করতে পারে। আমরা বিশ্বাস করি যে যারা AI সিস্টেম ব্যবহার করেন তাদের উচিত সেগুলো কখন, কেন এবং কীভাবে ব্যবহার করা হয় তা সম্পর্কে সৎ এবং খোলামেলা হওয়া। সেইসাথে তারা যে সিস্টেমগুলো ব্যবহার করেন তার সীমাবদ্ধতা সম্পর্কে। উদাহরণস্বরূপ, যদি একটি ব্যাংক তার ভোক্তা ঋণ সিদ্ধান্তে সহায়তা করার জন্য একটি AI সিস্টেম ব্যবহার করে, তাহলে ফলাফলগুলো পরীক্ষা করা এবং কোন ডেটা সিস্টেমের সুপারিশকে প্রভাবিত করে তা বোঝা গুরুত্বপূর্ণ। সরকার বিভিন্ন শিল্পে AI নিয়ন্ত্রণ করতে শুরু করেছে, তাই ডেটা বিজ্ঞানী এবং সংস্থাগুলোকে ব্যাখ্যা করতে হবে যে একটি AI সিস্টেম নিয়ন্ত্রক প্রয়োজনীয়তা পূরণ করে কিনা, বিশেষত যখন একটি অনাকাঙ্ক্ষিত ফলাফল ঘটে।
-> [🎥 এখানে ক্লিক করুন একটি ভিডিওর জন্য: AI-তে স্বচ্ছতা](https://www.microsoft.com/videoplayer/embed/RE4voJF)
+### স্বচ্ছতা
+AI সিস্টেম বোঝাপড়াযোগ্য হওয়া উচিত। স্বচ্ছতার একটি গুরুত্বপূর্ণ অংশ হলো AI সিস্টেম ও তাদের উপাদানগুলোর আচরণ ব্যাখ্যা করা। AI সিস্টেমের ভালো বোঝাপড়া নিশ্চিত করতে অংশীদারদের বুঝতে হবে তারা কেন এবং কীভাবে কাজ করে যাতে তারা সম্ভাব্য কর্মক্ষমতা সমস্যা, নিরাপত্তা ও গোপনীয়তা উদ্বেগ, পক্ষপাত, বঞ্চনামূলক অনুশীলন অথবা অনিচ্ছাকৃত ফলাফলের সনাক্তকরণ করতে পারে। আমরা বিশ্বাস করি AI ব্যবহারকারীদের উচিত সতর্ক এবং সৎ হওয়া যে কখন, কেন এবং কীভাবে তারা AI ব্যবহার করছেন, এবং ব্যবহৃত সিস্টেমের সীমাবদ্ধতা সম্পর্কে জানান। উদাহরণস্বরূপ, যদি একটি ব্যাংক তাদের ভোক্তা ঋণ সিদ্ধান্ত সমর্থনে AI সিস্টেম ব্যবহার করে, তবে ফলাফলগুলি নিরীক্ষণ ও বুঝা জরুরি কোন ডেটা সিস্টেমের পরামর্শকে প্রভাবিত করে। সরকার শিল্পগুলোর AI নিয়ন্ত্রণ শুরু করছে, তাই ডেটা বিজ্ঞানী ও প্রতিষ্ঠানগুলোকে ব্যাখ্যা করতে হবে যদি AI সিস্টেম আইনগত শর্ত পূরণ করে, বিশেষ করে অনিচ্ছাকৃত ফলাফল হলে।
-- AI সিস্টেমগুলো এতটাই জটিল যে সেগুলো কীভাবে কাজ করে এবং ফলাফলগুলো ব্যাখ্যা করা কঠিন।
-- এই বোঝার অভাব সিস্টেমগুলো কীভাবে পরিচালিত, কার্যকরী এবং নথিভুক্ত হয় তা প্রভাবিত করে।
-- এই বোঝার অভাব আরও গুরুত্বপূর্ণভাবে সিস্টেমগুলো যে ফলাফল তৈরি করে তা ব্যবহার করে নেওয়া সিদ্ধান্তগুলোকে প্রভাবিত করে।
+> [🎥 AI-তে স্বচ্ছতা সম্পর্কিত ভিডিও দেখতে এখানে ক্লিক করুন](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-### দায়িত্বশীলতা
+- AI সিস্টেমগুলি এত জটিল যে তারা কীভাবে কাজ করে এবং ফলাফল কেমন আসে বোঝা কঠিন।
+- এর ফলে এই সিস্টেমগুলোর ব্যবস্থাপনা, প্রয়োগ এবং নথিবদ্ধকরণ প্রভাবিত হয়।
+- সবচেয়ে গুরুত্বপূর্ণ, এর ফলে সিস্টেমগুলোর ফলাফল ব্যবহার করে যেসব সিদ্ধান্ত নেওয়া হয়, তারা প্রভাবিত হয়।
-AI সিস্টেম ডিজাইন এবং মোতায়েনকারী ব্যক্তিদের তাদের সিস্টেমের কার্যক্রমের জন্য দায়িত্বশীল হতে হবে। দায়িত্বশীলতার প্রয়োজনীয়তা বিশেষভাবে গুরুত্বপূর্ণ সংবেদনশীল প্রযুক্তি যেমন মুখের স্বীকৃতির ক্ষেত্রে। সম্প্রতি, মুখের স্বীকৃতি প্রযুক্তির জন্য একটি ক্রমবর্ধমান চাহিদা রয়েছে, বিশেষত আইন প্রয়োগকারী সংস্থাগুলোর কাছ থেকে যারা নিখোঁজ শিশুদের খুঁজে বের করার মতো ব্যবহারগুলোতে প্রযুক্তির সম্ভাবনা দেখছেন। তবে, এই প্রযুক্তিগুলো একটি সরকার তার নাগরিকদের মৌলিক স্বাধীনতাকে ঝুঁকিতে ফেলতে ব্যবহার করতে পারে, যেমন নির্দিষ্ট ব্যক্তিদের ক্রমাগত নজরদারি সক্ষম করা। তাই, ডেটা বিজ্ঞানী এবং সংস্থাগুলোকে তাদের AI সিস্টেমের ব্যক্তিগত বা সামাজিক প্রভাবের জন্য দায়িত্বশীল হতে হবে।
+### জবাবদিহিতা
+
+যারা AI সিস্টেম ডিজাইন ও প্রয়োগ করে তাদের সিস্টেমের কার্যকরির জন্য দায়ী হতে হবে। বিশেষত ফেসিয়াল রিকগনিশন মত সংবেদনশীল প্রযুক্তিতে জবাবদিহিতা অপরিহার্য। সম্প্রতি, ফেসিয়াল রিকগনিশন প্রযুক্তির উপর চাহিদা বেড়েছে, বিশেষত আইন প্রয়োগকারী সংস্থাগুলো থেকে যারা হারানো শিশু খুঁজে পেতে সম্ভাবনা দেখছেন। তবে এই প্রযুক্তি সরকার দ্বারা নাগরিকদের মৌলিক স্বাধীনতা ঝুঁকিতে ফেলতে ব্যবহৃত হতে পারে যেমন নির্দিষ্ট ব্যক্তিদের অব্যাহত নজরদারি চালানোর মাধ্যমে। তাই, ডেটা বিজ্ঞানী ও প্রতিষ্ঠানগুলোকে দায়িত্বশীল হতে হবে AI সিস্টেম মানুষ অথবা সমাজে কী প্রভাব ফেলে তার জন্য।
-[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft's Approach to Responsible AI")
+[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft's Approach to Responsible AI")
-> 🎥 উপরের ছবিতে ক্লিক করুন একটি ভিডিওর জন্য: মুখের স্বীকৃতির মাধ্যমে ব্যাপক নজরদারি সম্পর্কে সতর্কবার্তা
+> 🎥 ভিডিও দেখতে উপরের ছবিতে ক্লিক করুন: ফেসিয়াল রিকগনিশন দ্বারা বৃহৎ পর্যবেক্ষণের সতর্কতা
-অবশেষে, আমাদের প্রজন্মের জন্য সবচেয়ে বড় প্রশ্নগুলোর একটি হলো, প্রথম প্রজন্ম হিসেবে যারা AI সমাজে নিয়ে আসছে, কীভাবে নিশ্চিত করা যায় যে কম্পিউটারগুলো মানুষের কাছে দায়বদ্ধ থাকবে এবং যারা কম্পিউটার ডিজাইন করেন তারা সবার কাছে দায়বদ্ধ থাকবেন।
+আমাদের প্রজন্মের জন্য সবচেয়ে বড় প্রশ্নগুলোর মধ্যে একটি হলো, আমরা কিভাবে নিশ্চিত করব যে কম্পিউটার মানুষের প্রতি দায়বদ্ধ থাকবে এবং যারা কম্পিউটার ডিজাইন করে তারা সকলের প্রতি দায়বদ্ধ থাকবে।
## প্রভাব মূল্যায়ন
-মেশিন লার্নিং মডেল প্রশিক্ষণের আগে, AI সিস্টেমের উদ্দেশ্য, এর পরিকল্পিত ব্যবহার, এটি কোথায় মোতায়েন করা হবে এবং কারা সিস্টেমের সাথে যোগাযোগ করবে তা বুঝতে একটি প্রভাব মূল্যায়ন পরিচালনা করা গুরুত্বপূর্ণ। এটি পর্যালোচক বা পরীক্ষকদের জন্য সহায়ক যারা সিস্টেমটি মূল্যায়ন করছেন, যাতে সম্ভাব্য ঝুঁকি এবং প্রত্যাশিত পরিণতি চিহ্নিত করার সময় কোন বিষয়গুলো বিবেচনা করতে হবে তা জানা যায়।
+মেশিন লার্নিং মডেল প্রশিক্ষণের আগে, AI সিস্টেমের উদ্দেশ্য, এর পরিকল্পিত ব্যবহার, কোথায় এটি বসানো হবে এবং কারা সিস্টেমের সঙ্গে ইন্টার্যাক্ট করবে তা বোঝার জন্য প্রভাব মূল্যায়ন করা জরুরি। এটি রিভিউয়ার বা টেস্টারদের জন্য উপকারী যারা সিস্টেম পর্যালোচনা করছেন, যাতে তারা সম্ভাব্য ঝুঁকি ও প্রত্যাশিত পরিণতি নির্ধারণের জন্য প্রাসঙ্গিক বিষয় বিবেচনা করতে পারেন।
+
+প্রভাব মূল্যায়ন করার সময় নিম্নলিখিত বিষয়গুলো ফোকাসের অধীনে থাকে:
-প্রভাব মূল্যায়ন পরিচালনার সময় নিম্নলিখিত বিষয়গুলোতে মনোযোগ দেওয়া হয়:
+* **ব্যক্তিগত ওপর নেতিবাচক প্রভাব**। কোন বিধিনিষেধ, সীমাবদ্ধতা, অপর্যাপ্ত ব্যবহার বা পরিচিত সীমাবদ্ধতা যা সিস্টেমের কর্মদক্ষতাকে বাধাগ্রস্ত করে, তা জেনে রাখা জরুরি যেন সিস্টেম মানুষের ক্ষতি করতে ব্যবহৃত না হয়।
+* **ডেটা প্রয়োজনীয়তা**। সিস্টেম কিভাবে এবং কোথায় ডেটা ব্যবহার করবে তা বোঝার মাধ্যমে রিভিউয়াররা কোন ডেটা নিয়ম (যেমন, GDPR বা HIPAA) মেনে চলা প্রয়োজন কী না তা পরীক্ষা করতে পারবেন। আর ডেটার উৎস বা পরিমাণ প্রশিক্ষণের জন্য যথেষ্ট কি না তাও নিশ্চিত করবেন।
+* **প্রভাবের সারাংশ**। সিস্টেম ব্যবহার থেকে সম্ভাব্য ক্ষতির একটি তালিকা সংগ্রহ করুন। পুরো মেশিন লার্নিং ব lifecycle জুড়ে এই সমস্যা সমাধান বা মোকাবেলা হচ্ছে কিনা তা পর্যালোচনা করুন।
+* প্রতিটি ছয়টি মূল নীতির জন্য **প্রযোজ্য লক্ষ্য**। প্রতিটি নীতির লক্ষ্যে পৌঁছানো হয়েছে কিনা এবং কোনো ফাঁক আছে কিনা তা মূল্যায়ন করুন।
-* **ব্যক্তিদের উপর নেতিবাচক প্রভাব**। কোনো সীমাবদ্ধতা বা প্রয়োজনীয়তা, অসমর্থিত ব্যবহার বা সিস্টেমের কর্মক্ষমতাকে বাধাগ্রস্ত করে এমন কোনো পরিচিত সীমাবদ্ধতা সম্পর্কে সচেতন হওয়া গুরুত্বপূর্ণ যাতে সিস্টেমটি এমনভাবে ব্যবহার না করা হয় যা ব্যক্তিদের ক্ষতি করতে পারে।
-* **ডেটার প্রয়োজনীয়তা**। সিস্টেমটি কীভাবে এবং কোথায় ডেটা ব্যবহার করবে তা বোঝা পর্যালোচকদের ডেটার প্রয়োজনীয়তা সম্পর্কে সচেতন হতে সহায়তা করে (যেমন GDPR বা HIPPA ডেটা নিয়মাবলী)। এছাড়াও, ডেটার উৎস বা পরিমাণ প্রশিক্ষণের জন্য যথেষ্ট কিনা তা পরীক্ষা করুন।
-* **প্রভাবের সারাংশ**। সিস্টেম ব্যবহার থেকে উদ্ভূত সম্ভাব্য ক্ষতির একটি তালিকা সংগ্রহ করুন। ML লাইফসাইকেল জুড়ে, চিহ্নিত সমস্যাগুলো সমাধান করা হয়েছে কিনা তা পর্যালোচনা করুন।
-* **প্রতিটি ছয়টি মূল নীতির জন্য প্রযোজ্য লক্ষ্য**। প্রতিটি নীতির লক্ষ্যগুলো পূরণ হয়েছে কিনা এবং কোনো ফাঁক রয়েছে কিনা তা মূল্যায়ন করুন।
## দায়িত্বশীল AI দিয়ে ডিবাগিং
-একটি সফটওয়্যার অ্যাপ্লিকেশন ডিবাগ করার মতো, একটি AI সিস্টেম ডিবাগ করা একটি প্রয়োজনীয় প্রক্রিয়া যা সিস্টেমে সমস্যাগুলো চিহ্নিত এবং সমাধান করে। অনেক কারণ রয়েছে যা একটি মডেলের প্রত্যাশিত বা দায়িত্বশীলভাবে কাজ না করার ক্ষেত্রে প্রভাব ফেলতে পারে। বেশিরভাগ ঐতিহ্যবাহী মডেল কর্মক্ষমতা মেট্রিকগুলো একটি মডেলের কর্মক্ষমতার পরিমাণগত সামগ্রিক মান, যা দায়িত্বশীল AI নীতিগুলো লঙ্ঘন করে কীভাবে একটি মডেল বিশ্লেষণ করা যায় তা যথেষ্ট নয়। তদ্ব্যতীত, একটি মেশিন লার্নিং মডেল একটি ব্ল্যাক বক্স যা এর ফলাফল চালিত করে কী তা বোঝা বা যখন এটি ভুল করে তখন ব্যাখ্যা প্রদান করা কঠিন করে তোলে। এই কোর্সের পরে, আমরা শিখব কীভাবে দায়িত্বশীল AI ড্যাশবোর্ড ব্যবহার করে AI সিস্টেম ডিবাগ করতে হয়। ড্যাশবোর্ডটি ডেটা বিজ্ঞানী এবং AI ডেভেলপারদের জন্য একটি সামগ্রিক টুল প্রদান করে যা নিম্নলিখিত কাজগুলো সম্পাদন করতে সহায়তা করে:
+সফটওয়্যার অ্যাপ্লিকেশন ডিবাগিংয়ের মতোই, AI সিস্টেমে সমস্যা চিহ্নিত করা এবং সমাধান করা একটি অপরিহার্য প্রক্রিয়া। মডেল প্রত্যাশিত বা দায়িত্বশীলভাবে কাজ না করার অনেক কারণ থাকতে পারে। অনেক প্রচলিত মডেল কর্মক্ষমতা মেট্রিক্স একটি মডেলের ফলাফলের পরিমাণগত সামগ্রিক হিসাব প্রদান করে, যা দায়িত্বশীল AI নীতিমালা লঙ্ঘনের বিশ্লেষণে যথেষ্ট নয়। তদুপরি, মেশিন লার্নিং মডেল একটি কালো বাক্স যা এর ফলাফলের কারণ বোঝা বা ভুল হলে ব্যাখ্যা দেওয়া কঠিন করে তোলে। এই কোর্সের পরে, আমরা শেখব কিভাবে দায়িত্বশীল AI ড্যাশবোর্ড ব্যবহার করে AI সিস্টেম ডিবাগ করতে হয়। ড্যাশবোর্ড ডেটা বিজ্ঞানী ও AI ডেভেলপারদের জন্য একটি সমন্বিত টুল যা নিম্নলিখিত কাজ করতে সাহায্য করে:
+
+* **ত্রুটি বিশ্লেষণ**। মডেলের ত্রুটি বণ্টন চিহ্নিত করতে যা সিস্টেমের ন্যায়বিচার বা নির্ভরযোগ্যতাকে প্রভাবিত করতে পারে।
+* **মডেল ওভারভিউ**। ডেটা গোষ্ঠীগুলোর মধ্যে মডেলের পারফরম্যান্সের পার্থক্য কোথায় তা আবিষ্কার করতে।
+* **ডেটা বিশ্লেষণ**। ডেটা বণ্টন বোঝার ও ডেটায় যে কোনো পক্ষপাত চিহ্নিত করার জন্য, যা ন্যায়বিচার, অন্তর্ভুক্তিমূলকতা, এবং নির্ভরযোগ্যতার সমস্যা তৈরি করতে পারে।
+* **মডেল ব্যাখ্যাযোগ্যতা**। মডেলের পূর্বাভাসকে কী প্রভাবিত করে বা প্রভাব ফেলছে তা বুঝতে। এটি মডেলের আচরণ ব্যাখ্যা করতে সাহায্য করে যা স্বচ্ছতা ও জবাবদিহিতার জন্য গুরুত্বপূর্ণ।
+
+
+## 🚀 চ্যালেঞ্জ
+
+প্রথম থেকেই বিপদ এড়াতে আমাদের উচিত:
+
+- সিস্টেমে কাজ করা মানুষের মধ্যে বিভিন্ন পটভূমি ও দৃষ্টিভঙ্গির বৈচিত্র রাখা
+- এমন ডেটাসেটগুলিতে বিনিয়োগ করা যা আমাদের সমাজের বৈচিত্র প্রতিফলিত করে
+- মেশিন লার্নিং লাইফসাইকেলের প্রতিটি ধাপে দায়িত্বশীল AI এর ত্রুটি সনাক্ত ও সংশোধনের উন্নত পদ্ধতি উন্নয়ন করা
+
+বাস্তব জীবনের পরিস্থিতি ভাবুন যেখানে মডেলের অবিশ্বাসযোগ্যতা মডেল নির্মাণ ও ব্যবহারে স্পষ্ট। আর কী বিবেচনা করা উচিত?
+
+## [পোস্ট-লেকচার কুইজ](https://ff-quizzes.netlify.app/en/ml/)
+
+## পুনর্বিবেচনা ও স্ব-অধ্যয়ন
+
-* **ত্রুটি বিশ্লেষণ**। মডেলের ত্রুটির বিতরণ চিহ্নিত করতে যা সিস্টেমের ন্যায্যতা বা নির্ভরযোগ্যতাকে প্রভাবিত করতে পারে।
-* **মডেলের ওভারভিউ**। মডেলের কর্মক্ষমতায় ডেটা কোহর্টগুলোর মধ্যে কোথায় বৈষম্য রয়েছে তা আবিষ্কার করতে।
-* **ডেটা বিশ
-এই কর্মশালাটি দেখুন আরও গভীরভাবে বিষয়গুলো বোঝার জন্য:
+এই পাঠে, আপনি মেশিন লার্নিংয়ে ন্যায্যতা এবং অন্যায়তার ধারণাগুলির কিছু মৌলিক বিষয় শিখেছেন।
+
+এই কর্মশালাটি দেখুন বিষয়গুলির ওপর গভীরভাবে জানতে:
-- দায়িত্বশীল AI-এর সন্ধানে: নীতিগুলোকে বাস্তবে রূপ দেওয়ার উপায়, উপস্থাপনায় বেসমিরা নুশি, মেহরনুশ সামেকি এবং অমিত শর্মা
+- দায়িত্বশীল AI অনুসরণে: নীতিগুলোকে অনুশীলনে আনা Besmira Nushi, Mehrnoosh Sameki এবং Amit Sharma দ্বারা
-[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI টুলবক্স: দায়িত্বশীল AI তৈরির জন্য একটি ওপেন-সোর্স ফ্রেমওয়ার্ক")
+[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI")
-> 🎥 উপরের ছবিতে ক্লিক করুন একটি ভিডিওর জন্য: RAI টুলবক্স - দায়িত্বশীল AI তৈরির জন্য একটি ওপেন-সোর্স ফ্রেমওয়ার্ক, উপস্থাপনায় বেসমিরা নুশি, মেহরনুশ সামেকি এবং অমিত শর্মা
+> 🎥 উপরের ছবিতে ক্লিক করুন একটি ভিডিওর জন্য: RAI Toolbox: An open-source framework for building responsible AI by Besmira Nushi, Mehrnoosh Sameki, and Amit Sharma
-এছাড়াও পড়ুন:
+এছাড়াও পড়ুন:
-- মাইক্রোসফটের RAI রিসোর্স সেন্টার: [দায়িত্বশীল AI রিসোর্স – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
+- মাইক্রোসফটের RAI রিসোর্স সেন্টার: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
-- মাইক্রোসফটের FATE গবেষণা দল: [FATE: AI-তে ন্যায্যতা, জবাবদিহিতা, স্বচ্ছতা এবং নৈতিকতা - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
+- মাইক্রোসফটের FATE গবেষণা দল: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
-RAI টুলবক্স:
+RAI Toolbox:
-- [দায়িত্বশীল AI টুলবক্স GitHub রিপোজিটরি](https://github.com/microsoft/responsible-ai-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)
+- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
## অ্যাসাইনমেন্ট
-[RAI টুলবক্স অন্বেষণ করুন](assignment.md)
+[RAI Toolbox এক্সপ্লোর করুন](assignment.md)
---
-**অস্বীকৃতি**:
-এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিক অনুবাদ প্রদানের চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা দায়বদ্ধ থাকব না।
\ No newline at end of file
+
+**অস্বীকৃতি**:
+এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনূদিত হয়েছে। যদিও আমরা শুদ্ধতার জন্য চেষ্টা করি, অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল নথিটি তার স্বভাষায় কর্তৃত্বপূর্ণ উৎস হিসেবে বিবেচিত হওয়া উচিত। গুরুত্বপূর্ণ তথ্যের জন্য পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদের ব্যবহারে প্রয়োজনীয় ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়বদ্ধ নই।
+
\ No newline at end of file
diff --git a/translations/bn/2-Regression/1-Tools/README.md b/translations/bn/2-Regression/1-Tools/README.md
index 6d7480ace..75ab8bd3d 100644
--- a/translations/bn/2-Regression/1-Tools/README.md
+++ b/translations/bn/2-Regression/1-Tools/README.md
@@ -1,120 +1,121 @@
-# পাইথন এবং স্কিকিট-লার্ন দিয়ে রিগ্রেশন মডেল শুরু করা
+# রিগ্রেশন মডেলগুলির জন্য পাইথন এবং স্কিকিট-লার্ন দিয়ে শুরু করুন
-
+
-> স্কেচনোট: [টোমোমি ইমুরা](https://www.twitter.com/girlie_mac)
+> স্কেচনোট তৈরি করেছেন [তোমোমি ইমুরা](https://www.twitter.com/girlie_mac)
-## [পাঠের পূর্ববর্তী কুইজ](https://ff-quizzes.netlify.app/en/ml/)
+## [পূর্বে-লেকচার কুইজ](https://ff-quizzes.netlify.app/en/ml/)
-> ### [এই পাঠটি R-এও উপলব্ধ!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
+> ### [এই পাঠটি R-এ উপলব্ধ!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
-## ভূমিকা
+## পরিচিতি
-এই চারটি পাঠে, আপনি রিগ্রেশন মডেল তৈরি করতে শিখবেন। আমরা শীঘ্রই আলোচনা করব যে এগুলো কী কাজে লাগে। তবে তার আগে, নিশ্চিত করুন যে আপনার কাছে সঠিক সরঞ্জাম রয়েছে এই প্রক্রিয়া শুরু করার জন্য!
+এই চারটি পাঠে, আপনি কিভাবে রিগ্রেশন মডেল তৈরি করতে হয় তা জানবেন। আমরা এক্ষুনি আলোচনা করব এগুলি কী জন্য। কিন্তু কিছু করার আগে, নিশ্চিত করুন যে আপনার কাছে প্রক্রিয়া শুরু করার জন্য সঠিক সরঞ্জাম রয়েছে!
-এই পাঠে, আপনি শিখবেন কীভাবে:
+এই পাঠে, আপনি শিখবেন কিভাবে:
-- আপনার কম্পিউটারকে লোকাল মেশিন লার্নিং কাজের জন্য কনফিগার করবেন।
-- জুপিটার নোটবুক ব্যবহার করবেন।
-- স্কিকিট-লার্ন ব্যবহার করবেন, যার মধ্যে ইনস্টলেশন অন্তর্ভুক্ত।
-- একটি হাতে-কলমে অনুশীলনের মাধ্যমে লিনিয়ার রিগ্রেশন অন্বেষণ করবেন।
+- আপনার কম্পিউটারকে স্থানীয় মেশিন লার্নিং কাজের জন্য কনফিগার করবেন।
+- জুপিটার নোটবুকের সাথে কাজ করবেন।
+- স্কিকিট-লার্ন ব্যবহার করবেন, ইনস্টলেশন সহ।
+- একটি হাতে-কলমে অনুশীলন সহ লিনিয়ার রিগ্রেশন অন্বেষণ করবেন।
## ইনস্টলেশন এবং কনফিগারেশন
-[](https://youtu.be/-DfeD2k2Kj0 "শিক্ষার্থীদের জন্য মেশিন লার্নিং - মডেল তৈরির জন্য সরঞ্জাম প্রস্তুত করুন")
+[](https://youtu.be/-DfeD2k2Kj0 "শুরুর জন্য এমএল - মেশিন লার্নিং মডেল তৈরির জন্য আপনার টুলস প্রস্তুত করুন")
-> 🎥 উপরের ছবিতে ক্লিক করুন একটি সংক্ষিপ্ত ভিডিও দেখার জন্য যেখানে আপনার কম্পিউটারকে মেশিন লার্নিংয়ের জন্য কনফিগার করা দেখানো হয়েছে।
+> 🎥 এমএল কনফিগার করার জন্য একটি সংক্ষিপ্ত ভিডিও দেখতে উপরের চিত্রে ক্লিক করুন।
-1. **পাইথন ইনস্টল করুন**। নিশ্চিত করুন যে [পাইথন](https://www.python.org/downloads/) আপনার কম্পিউটারে ইনস্টল করা আছে। আপনি ডেটা সায়েন্স এবং মেশিন লার্নিংয়ের অনেক কাজের জন্য পাইথন ব্যবহার করবেন। বেশিরভাগ কম্পিউটার সিস্টেমে ইতোমধ্যেই পাইথন ইনস্টল করা থাকে। কিছু [পাইথন কোডিং প্যাক](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott)ও রয়েছে, যা কিছু ব্যবহারকারীর জন্য সেটআপ সহজ করে তোলে।
+1. **পাইথন ইনস্টল করুন**। নিশ্চিত করুন যে [Python](https://www.python.org/downloads/) আপনার কম্পিউটারে ইনস্টল করা আছে। আপনি অনেক ডেটা সাইন্স এবং মেশিন লার্নিং কাজের জন্য পাইথন ব্যবহার করবেন। বেশিরভাগ কম্পিউটার সিস্টেমে ইতিমধ্যে পাইথন ইনস্টল থাকে। কিছু ব্যবহারকারীর জন্য সহজতর করতে [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott)ও পাওয়া যায়।
- তবে, পাইথনের কিছু ব্যবহার একটি নির্দিষ্ট ভার্সন প্রয়োজন করে, আবার অন্য কিছু ব্যবহার অন্য ভার্সন চায়। এই কারণে, একটি [ভার্চুয়াল এনভায়রনমেন্ট](https://docs.python.org/3/library/venv.html) ব্যবহার করা সুবিধাজনক।
+ তবে, পাইথনের কিছু ব্যবহার এক ভার্সনের সফটওয়্যার চান, আবার কিছু অন্য ভার্সনের। এজন্য, একটি [ভার্চুয়াল এনভায়রনমেন্টে](https://docs.python.org/3/library/venv.html) কাজ করা উপকারী।
-2. **ভিজ্যুয়াল স্টুডিও কোড ইনস্টল করুন**। নিশ্চিত করুন যে ভিজ্যুয়াল স্টুডিও কোড আপনার কম্পিউটারে ইনস্টল করা আছে। [ভিজ্যুয়াল স্টুডিও কোড ইনস্টল](https://code.visualstudio.com/) করার জন্য এই নির্দেশাবলী অনুসরণ করুন। এই কোর্সে আপনি ভিজ্যুয়াল স্টুডিও কোডে পাইথন ব্যবহার করবেন, তাই [পাইথন ডেভেলপমেন্টের জন্য ভিজ্যুয়াল স্টুডিও কোড কনফিগার](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) করার পদ্ধতি দেখে নিন।
+2. **ভিজুয়াল স্টুডিও কোড ইনস্টল করুন**। নিশ্চিত করুন যে আপনার কম্পিউটারে ভিজুয়াল স্টুডিও কোড ইনস্টল করা আছে। বেসিক ইনস্টলেশনের জন্য এই নির্দেশনাগুলো অনুসরণ করুন: [Visual Studio Code ইনস্টল করুন](https://code.visualstudio.com/)। এই কোর্সে আপনি ভিজুয়াল স্টুডিও কোডে পাইথন ব্যবহার করবেন, তাই পাইথন ডেভেলপমেন্টের জন্য [Visual Studio Code কনফিগার করা](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) সম্পর্কেও জানতে পারেন।
- > পাইথন নিয়ে স্বাচ্ছন্দ্যবোধ করতে এই [লার্ন মডিউল](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) সংগ্রহটি অনুসরণ করুন।
+ > এই [লার্ন মডিউলস](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) থেকে কাজ করে পাইথনে স্বাচ্ছন্দ্যতা অর্জন করুন
>
- > [](https://youtu.be/yyQM70vi7V8 "ভিজ্যুয়াল স্টুডিও কোডে পাইথন সেটআপ করুন")
+ > [](https://youtu.be/yyQM70vi7V8 "Visual Studio Code-এ Python সেটআপ করুন")
>
- > 🎥 উপরের ছবিতে ক্লিক করুন একটি ভিডিও দেখার জন্য: ভিজ্যুয়াল স্টুডিও কোডে পাইথন ব্যবহার।
+ > 🎥 ভিডিওটির জন্য উপরের চিত্রে ক্লিক করুন: VS কোডে পাইথন ব্যবহার।
-3. **স্কিকিট-লার্ন ইনস্টল করুন**, এই [নির্দেশাবলী](https://scikit-learn.org/stable/install.html) অনুসরণ করে। যেহেতু আপনাকে পাইথন ৩ ব্যবহার নিশ্চিত করতে হবে, তাই ভার্চুয়াল এনভায়রনমেন্ট ব্যবহার করার পরামর্শ দেওয়া হয়। যদি আপনি M1 ম্যাক-এ এই লাইব্রেরি ইনস্টল করেন, তবে উপরের লিঙ্কে বিশেষ নির্দেশাবলী রয়েছে।
+3. **স্কিকিট-লার্ন ইনস্টল করুন**, এই [নির্দেশনাগুলো](https://scikit-learn.org/stable/install.html) অনুসরণ করে। আপনাকে নিশ্চিত করতে হবে যে আপনি পাইথন ৩ ব্যবহার করছেন, তাই ভার্চুয়াল এনভায়রনমেন্ট ব্যবহার করার পরামর্শ দেওয়া হয়। লক্ষ্য করুন, যদি আপনি M1 ম্যাক-এ এই লাইব্রেরি ইনস্টল করছেন, তাহলে উপরের লিঙ্কে বিশেষ নির্দেশনাগুলো আছে।
-4. **জুপিটার নোটবুক ইনস্টল করুন**। আপনাকে [জুপিটার প্যাকেজ](https://pypi.org/project/jupyter/) ইনস্টল করতে হবে।
+4. **জুপিটার নোটবুক ইনস্টল করুন**। আপনাকে [জুপিটার প্যাকেজ ইনস্টল](https://pypi.org/project/jupyter/) করতে হবে।
-## আপনার মেশিন লার্নিং লেখার পরিবেশ
+## আপনার এমএল লেখার পরিবেশ
-আপনি **নোটবুক** ব্যবহার করবেন আপনার পাইথন কোড ডেভেলপ করতে এবং মেশিন লার্নিং মডেল তৈরি করতে। এই ধরনের ফাইল ডেটা সায়েন্টিস্টদের জন্য একটি সাধারণ টুল এবং এগুলো `.ipynb` এক্সটেনশনে চিহ্নিত করা যায়।
+আপনি পাইথন কোড উন্নয়ন এবং মেশিন লার্নিং মডেল তৈরি করতে **নোটবুকস** ব্যবহার করবেন। এই ধরণের ফাইল ডেটা বিজ্ঞানীদের একটি সাধারণ টুল এবং এগুলোর সাফিক্স বা এক্সটেনশন `.ipynb` দ্বারা চিহ্নিত করা হয়।
-নোটবুক একটি ইন্টারঅ্যাকটিভ পরিবেশ যা ডেভেলপারকে কোড লেখার পাশাপাশি নোট এবং ডকুমেন্টেশন যোগ করতে দেয়, যা গবেষণা বা পরীক্ষামূলক প্রকল্পের জন্য বেশ সহায়ক।
+নোটবুক একটি ইন্টারঅ্যাকটিভ পরিবেশ যা ডেভেলপারকে কোড করার পাশাপাশি কোডের চারপাশে নোট এবং ডকুমেন্টেশন লেখার সুযোগ দেয়, যা পরীক্ষামূলক বা গবেষণাভিত্তিক প্রকল্পে খুব সহায়ক।
-[](https://youtu.be/7E-jC8FLA2E "শিক্ষার্থীদের জন্য মেশিন লার্নিং - রিগ্রেশন মডেল তৈরি করতে জুপিটার নোটবুক সেটআপ করুন")
+[](https://youtu.be/7E-jC8FLA2E "শুরুর জন্য এমএল - রিগ্রেশন মডেল তৈরির জন্য জুপিটার নোটবুক সেটআপ করুন")
-> 🎥 উপরের ছবিতে ক্লিক করুন এই অনুশীলনটি কাজ করে দেখানোর একটি সংক্ষিপ্ত ভিডিও দেখার জন্য।
+> 🎥 এই অনুশীলনটি করতে উপরের ছবিতে ক্লিক করুন একটি সংক্ষিপ্ত ভিডিওর জন্য।
-### অনুশীলন - একটি নোটবুক নিয়ে কাজ করুন
+### অনুশীলন - একটি নোটবুকের সাথে কাজ করুন
-এই ফোল্ডারে, আপনি _notebook.ipynb_ ফাইলটি পাবেন।
+এই ফোল্ডারে, আপনি _notebook.ipynb_ ফাইলটি দেখতে পাবেন।
-1. ভিজ্যুয়াল স্টুডিও কোডে _notebook.ipynb_ খুলুন।
+1. Visual Studio Code-এ _notebook.ipynb_ খুলুন।
- একটি জুপিটার সার্ভার চালু হবে এবং পাইথন ৩+ শুরু হবে। আপনি নোটবুকের এমন কিছু অংশ পাবেন যা `run` করা যায়, অর্থাৎ কোডের টুকরো। একটি কোড ব্লক চালানোর জন্য, প্লে বোতামের মতো দেখতে আইকনটি নির্বাচন করুন।
+ একটি জুপিটার সার্ভার Python 3+ দিয়ে চালু হবে। আপনি নোটবুকের এমন স্থান পাবেন যা `run` করা যাবে, কোডের টুকরা। কার্টির মত দেখতে আইকনটি নির্বাচন করে কোড ব্লক চালাতে পারেন।
-2. `md` আইকনটি নির্বাচন করুন এবং কিছু মার্কডাউন যোগ করুন, এবং এই টেক্সটটি লিখুন **# Welcome to your notebook**।
+2. `md` আইকন নির্বাচন করুন এবং কিছু মার্কডাউন লিখুন, এবং নিম্নলিখিত টেক্সট দিন **# আপনার নোটবুকে স্বাগতম**।
এরপর, কিছু পাইথন কোড যোগ করুন।
-3. কোড ব্লকে **print('hello notebook')** টাইপ করুন।
-4. কোড চালানোর জন্য তীর চিহ্নটি নির্বাচন করুন।
+3. কোড ব্লকে টাইপ করুন **print('hello notebook')**।
+4. কোড চালাতে তীর চিহ্ন নির্বাচন করুন।
- আপনি প্রিন্ট করা স্টেটমেন্টটি দেখতে পাবেন:
+ আপনি নিম্নলিখিত প্রিন্টেড স্টেটমেন্ট দেখতে পাবেন:
```output
hello notebook
```
-
+
-আপনার কোডের সাথে মন্তব্য যোগ করে নোটবুকটি স্ব-ডকুমেন্ট করতে পারেন।
+আপনি নোটবুক নিজেই ডকুমেন্ট করার জন্য মন্তব্যসহ কোডের মধ্যে ইন্টারলিফ করতে পারেন।
-✅ এক মিনিট চিন্তা করুন, একজন ওয়েব ডেভেলপারের কাজের পরিবেশ এবং একজন ডেটা সায়েন্টিস্টের কাজের পরিবেশ কতটা আলাদা।
+✅ একটি ওয়েব ডেভেলপার এবং একটি ডেটা বিজ্ঞানীর কাজের পরিবেশ কতোটা ভিন্ন হতে পারে, একটু ভাবুন।
-## স্কিকিট-লার্ন দিয়ে শুরু করা
+## স্কিকিট-লার্ন দিয়ে কাজ শুরু করুন
-এখন যেহেতু পাইথন আপনার লোকাল পরিবেশে সেটআপ করা হয়েছে এবং আপনি জুপিটার নোটবুক নিয়ে স্বাচ্ছন্দ্যবোধ করছেন, চলুন স্কিকিট-লার্ন নিয়ে সমানভাবে স্বাচ্ছন্দ্যবোধ করি। স্কিকিট-লার্ন একটি [ব্যাপক এপিআই](https://scikit-learn.org/stable/modules/classes.html#api-ref) প্রদান করে যা আপনাকে মেশিন লার্নিংয়ের কাজ সম্পাদনে সাহায্য করে।
+এখন যেহেতু পাইথন আপনার স্থানীয় পরিবেশে প্রস্তুত, এবং আপনি জুপিটার নোটবুকে স্বাচ্ছন্দ্যবোধ করছেন, চলুন স্কিকিট-লার্নের সাথেও সমান স্বাচ্ছন্দ্য অর্জন করি (উচ্চারণ `sci` যেমন `science`)। স্কিকিট-লার্ন একটি [বিস্তৃত এপিআই](https://scikit-learn.org/stable/modules/classes.html#api-ref) দেয় যেটা আপনাকে এমএল কাজ করতে সাহায্য করবে।
-তাদের [ওয়েবসাইট](https://scikit-learn.org/stable/getting_started.html) অনুযায়ী, "স্কিকিট-লার্ন একটি ওপেন সোর্স মেশিন লার্নিং লাইব্রেরি যা সুপারভাইজড এবং আনসুপারভাইজড লার্নিং সমর্থন করে। এটি মডেল ফিটিং, ডেটা প্রিপ্রসেসিং, মডেল সিলেকশন এবং ইভ্যালুয়েশন, এবং আরও অনেক ইউটিলিটির জন্য বিভিন্ন টুল সরবরাহ করে।"
+তাদের [ওয়েবসাইট](https://scikit-learn.org/stable/getting_started.html) অনুযায়ী, "স্কিকিট-লার্ন একটি ওপেন সোর্স মেশিন লার্নিং লাইব্রেরি যা সুপারভাইজড এবং আনসুপারভাইজড লার্নিং সাপোর্ট করে। এটি মডেল ফিটিং, ডেটা প্রিপ্রসেসিং, মডেল সিলেকশন এবং ইভ্যালুয়েশন, এবং অন্যান্য অনেক টুলস প্রদান করে।"
-এই কোর্সে, আপনি স্কিকিট-লার্ন এবং অন্যান্য টুল ব্যবহার করে মেশিন লার্নিং মডেল তৈরি করবেন যা আমরা 'প্রথাগত মেশিন লার্নিং' কাজ বলে থাকি। আমরা ইচ্ছাকৃতভাবে নিউরাল নেটওয়ার্ক এবং ডিপ লার্নিং এড়িয়ে গেছি, কারণ সেগুলো আমাদের আসন্ন 'AI for Beginners' কারিকুলামে আরও ভালোভাবে কভার করা হবে।
+এই কোর্সে, আপনি স্কিকিট-লার্ন এবং অন্যান্য সরঞ্জাম ব্যবহার করে একটি মেশিন লার্নিং মডেল গড়ে তুলবেন যা আমরা 'পরম্পরাগত মেশিন লার্নিং' কাজ বলে থাকি। আমরা ইচ্ছাকৃতভাবে নিউরাল নেটওয়ার্ক এবং ডিপ লার্নিং এড়িয়েছি, কারণ এগুলো আমাদের আসন্ন 'এআই ফর বিগিনার্স' কারিকুলামে ভালোভাবে কভার করা হয়েছে।
-স্কিকিট-লার্ন মডেল তৈরি এবং সেগুলো ব্যবহারযোগ্যতার জন্য ইভ্যালুয়েট করা সহজ করে তোলে। এটি প্রধানত সংখ্যাসূচক ডেটা ব্যবহারে ফোকাস করে এবং শিক্ষার সরঞ্জাম হিসেবে ব্যবহারের জন্য বেশ কিছু প্রস্তুত ডেটাসেট অন্তর্ভুক্ত করে। এটি শিক্ষার্থীদের চেষ্টা করার জন্য প্রি-বিল্ট মডেলও অন্তর্ভুক্ত করে। চলুন প্রিপ্যাকেজড ডেটা লোড করা এবং একটি বিল্ট-ইন এস্টিমেটর ব্যবহার করে প্রথম মেশিন লার্নিং মডেল তৈরি করার প্রক্রিয়া অন্বেষণ করি।
+স্কিকিট-লার্ন মডেল তৈরি করা এবং সেগুলোর মূল্যায়ন সহজ করে তোলে। এটি প্রধানত সংখ্যাগত ডেটা ব্যবহার করে এবং শেখার সরঞ্জাম হিসেবে বেশ কিছু প্রস্তুত ডেটাসেট রয়েছে। এতে শিক্ষার্থীদের জন্য প্রাক-তৈরি মডেলও আছে। প্রথমে স্কিকিট-লার্নের সাথে প্রিপ্যাকেজড ডেটা লোড এবং বিল্ট-ইন এস্টিমেটর ব্যবহার করে মৌলিক এমএল মডেল তৈরির প্রক্রিয়া অন্বেষণ করি।
## অনুশীলন - আপনার প্রথম স্কিকিট-লার্ন নোটবুক
-> এই টিউটোরিয়ালটি স্কিকিট-লার্নের ওয়েবসাইটে থাকা [লিনিয়ার রিগ্রেশনের উদাহরণ](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) দ্বারা অনুপ্রাণিত।
+> এই টিউটোরিয়ালটি অনুপ্র inspirationণ হয়েছে স্কিকিট-লার্নের ওয়েবসাইটের [লিনিয়ার রিগ্রেশন উদাহরণ](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 "শিক্ষার্থীদের জন্য মেশিন লার্নিং - পাইথনে আপনার প্রথম লিনিয়ার রিগ্রেশন প্রকল্প")
-> 🎥 উপরের ছবিতে ক্লিক করুন এই অনুশীলনটি কাজ করে দেখানোর একটি সংক্ষিপ্ত ভিডিও দেখার জন্য।
+[](https://youtu.be/2xkXL5EUpS0 "শুরুর জন্য এমএল - পাইথনে আপনার প্রথম লিনিয়ার রিগ্রেশন প্রকল্প")
-এই পাঠের সাথে সম্পর্কিত _notebook.ipynb_ ফাইলটি খুলুন এবং সমস্ত সেল মুছে ফেলুন 'ট্র্যাশ ক্যান' আইকনে ক্লিক করে।
+> 🎥 এই অনুশীলনটি দেখতে উপরের চিত্রে ক্লিক করুন একটি সংক্ষিপ্ত ভিডিওর জন্য।
-এই অংশে, আপনি স্কিকিট-লার্নে অন্তর্ভুক্ত ডায়াবেটিস সম্পর্কিত একটি ছোট ডেটাসেট নিয়ে কাজ করবেন। ধরুন আপনি ডায়াবেটিস রোগীদের জন্য একটি চিকিৎসা পরীক্ষা করতে চান। মেশিন লার্নিং মডেল আপনাকে ভেরিয়েবলগুলোর সংমিশ্রণের ভিত্তিতে কোন রোগীরা চিকিৎসায় ভালো সাড়া দেবে তা নির্ধারণে সাহায্য করতে পারে। এমনকি একটি খুব সাধারণ রিগ্রেশন মডেল, যখন ভিজ্যুয়ালাইজ করা হয়, তখন ভেরিয়েবলগুলোর সম্পর্ক সম্পর্কে তথ্য দেখাতে পারে যা আপনাকে তাত্ত্বিক ক্লিনিকাল ট্রায়াল সংগঠিত করতে সাহায্য করবে।
+এই পাঠের সাথে সংযুক্ত _notebook.ipynb_ ফাইলে, সকল সেলগুলি 'ট্র্যাশ ক্যান' আইকন চাপ দিয়ে ক্লিয়ার করুন।
-✅ রিগ্রেশনের অনেক ধরনের পদ্ধতি রয়েছে, এবং আপনি কোনটি বেছে নেবেন তা নির্ভর করে আপনি কী উত্তর খুঁজছেন তার ওপর। যদি আপনি একটি নির্দিষ্ট বয়সের ব্যক্তির সম্ভাব্য উচ্চতা পূর্বানুমান করতে চান, তবে আপনি লিনিয়ার রিগ্রেশন ব্যবহার করবেন, কারণ আপনি একটি **সংখ্যাসূচক মান** খুঁজছেন। যদি আপনি জানতে চান একটি নির্দিষ্ট ধরনের খাবার ভেগান হিসেবে বিবেচিত হওয়া উচিত কিনা, তবে আপনি একটি **ক্যাটেগরি অ্যাসাইনমেন্ট** খুঁজছেন, তাই আপনি লজিস্টিক রিগ্রেশন ব্যবহার করবেন। আপনি পরে লজিস্টিক রিগ্রেশন সম্পর্কে আরও শিখবেন। ডেটা থেকে কিছু প্রশ্ন ভাবুন এবং কোন পদ্ধতি বেশি উপযুক্ত হবে তা চিন্তা করুন।
+এই অংশে, আপনি ডায়াবেটিস সম্পর্কে একটি ছোট ডেটাসেট নিয়ে কাজ করবেন যা স্কিকিট-লার্নে শেখার জন্য অন্তর্ভুক্ত। কল্পনা করুন আপনি ডায়াবেটিক রোগীদের জন্য একটি চিকিৎসা পরীক্ষা করতে চান। মেশিন লার্নিং মডেল আপনাকে নির্ধারণ করতে সাহায্য করতে পারে কোন রোগী চিকিৎসায় ভাল সাড়া দেবে বিভিন্ন ভেরিয়েবলের সংমিশ্রণের ভিত্তিতে। একটি মৌলিক রিগ্রেশন মডেল, ভিজুয়ালাইজ করা হলে, ভেরিয়েবলের তথ্য দেখাতে পারে যা আপনার তাত্ত্বিক ক্লিনিক্যাল ট্রায়াল সংগঠনে সাহায্য করবে।
-চলুন এই কাজটি শুরু করি।
+✅ রিগ্রেশনের অনেক ধরন আছে এবং আপনি কোনটি বেছে নেন তা নির্ভর করে আপনি কোন প্রশ্নের উত্তর খুঁজছেন তার উপর। যদি আপনি নির্দিষ্ট বয়সের একজন ব্যক্তির সম্ভাব্য উচ্চতা পূর্বাভাস দিতে চান, তাহলে আপনি লিনিয়ার রিগ্রেশন ব্যবহার করবেন, কারণ আপনি একটি **সংখ্যাগত মান** খুঁজছেন। যদি আপনি জানতে চান একটি রান্নার ধরন নিরামিষ কিনা, তাহলে সেটি একটি **শ্রেণিবিন্যাস** তাই আপনি লজিস্টিক রিগ্রেশন ব্যবহার করবেন। লজিস্টিক রিগ্রেশন সম্পর্কে পরে শিখবেন। কিছু প্রশ্ন নিয়ে ভাবুন যা আপনি ডেটাবেজে করতে পারেন এবং কোন পদ্ধতিটি উপযুক্ত হবে।
-### লাইব্রেরি ইমপোর্ট করুন
+চলুন এই কাজ শুরু করি।
-এই কাজের জন্য আমরা কিছু লাইব্রেরি ইমপোর্ট করব:
+### লাইব্রেরি আমদানি
-- **matplotlib**। এটি একটি কার্যকর [গ্রাফিং টুল](https://matplotlib.org/) এবং আমরা এটি একটি লাইন প্লট তৈরি করতে ব্যবহার করব।
-- **numpy**। [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) পাইথনে সংখ্যাসূচক ডেটা পরিচালনার জন্য একটি কার্যকর লাইব্রেরি।
+এই কাজের জন্য আমরা কিছু লাইব্রেরি আমদানি করব:
+
+- **matplotlib**। এটি একটি উপকারী [গ্রাফিং টুল](https://matplotlib.org/) এবং আমরা একটি লাইন প্লট তৈরি করতে এটি ব্যবহার করব।
+- **numpy**। [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) পাইথনে সংখ্যাগত ডেটা পরিচালনার জন্য একটি দরকারী লাইব্রেরি।
- **sklearn**। এটি [স্কিকিট-লার্ন](https://scikit-learn.org/stable/user_guide.html) লাইব্রেরি।
-আপনার কাজের জন্য কিছু লাইব্রেরি ইমপোর্ট করুন।
+আপনার কাজের জন্য কিছু লাইব্রেরি আমদানি করুন।
-1. নিচের কোডটি টাইপ করে ইমপোর্ট করুন:
+1. নিচের কোড টাইপ করে আমদানি করুন:
```python
import matplotlib.pyplot as plt
@@ -122,26 +123,26 @@
from sklearn import datasets, linear_model, model_selection
```
- উপরের কোডে আপনি `matplotlib`, `numpy` এবং `sklearn` থেকে `datasets`, `linear_model` এবং `model_selection` ইমপোর্ট করছেন। `model_selection` ডেটাকে ট্রেনিং এবং টেস্ট সেটে ভাগ করার জন্য ব্যবহৃত হয়।
+ উপরে আপনি `matplotlib`, `numpy` আমদানি করছেন এবং `sklearn` থেকে `datasets`, `linear_model` এবং `model_selection` আমদানি করছেন। `model_selection` ডেটাকে প্রশিক্ষণ এবং পরীক্ষা সেটে ভাগ করার জন্য ব্যবহৃত।
-### ডায়াবেটিস ডেটাসেট
+### ডায়াবেটিস ডেটাসেট
-[ডায়াবেটিস ডেটাসেট](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset)-এ ডায়াবেটিস সম্পর্কিত ৪৪২টি নমুনা ডেটা রয়েছে, যার মধ্যে ১০টি ফিচার ভেরিয়েবল অন্তর্ভুক্ত, যেমন:
+অন্তর্ভুক্ত [ডায়াবেটিস ডেটাসেট](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) এ ৪৪২টি নমুনা রয়েছে, যেখানে ১০টি বৈশিষ্ট্য ভেরিয়েবল আছে, কিছু হল:
-- age: বয়স (বছরে)
-- bmi: বডি মাস ইনডেক্স
-- bp: গড় রক্তচাপ
-- s1 tc: টি-সেল (এক ধরনের শ্বেত রক্তকণিকা)
+- বয়স: বছরে বয়স
+- BMI: শরীরের ভর সূচক
+- রক্তচাপ: গড় রক্তচাপ
+- s1 tc: টি-সেলস (সাদা রক্তকণিকার একটি প্রকার)
-✅ এই ডেটাসেটে 'sex' ফিচার ভেরিয়েবল অন্তর্ভুক্ত রয়েছে, যা ডায়াবেটিস গবেষণার জন্য গুরুত্বপূর্ণ। অনেক মেডিকেল ডেটাসেটে এই ধরনের বাইনারি শ্রেণিবিন্যাস অন্তর্ভুক্ত থাকে। চিন্তা করুন, এই ধরনের শ্রেণিবিন্যাস কীভাবে জনসংখ্যার নির্দিষ্ট অংশকে চিকিৎসা থেকে বাদ দিতে পারে।
+✅ এই ডেটাসেটে 'লিঙ্গ' নামক একটি বৈশিষ্ট্য ভেরিয়েবল অন্তর্ভুক্ত আছে, যা ডায়াবেটিস গবেষণায় গুরুত্বপূর্ণ। অনেক চিকিৎসা তথ্যসেট এই ধরনের বাইনারি শ্রেণিবিভাজন অন্তর্ভুক্ত করে। ভাবুন কিভাবে এমন শ্রেণিবিভাজন কিছু জনগোষ্ঠীকে চিকিৎসা থেকে বাদ দিতে পারে।
এখন, X এবং y ডেটা লোড করুন।
-> 🎓 মনে রাখবেন, এটি সুপারভাইজড লার্নিং, এবং আমাদের একটি নামকৃত 'y' টার্গেট প্রয়োজন।
+> 🎓 মনে রাখবেন, এটি একটি সুপারভাইজড লার্নিং, এবং আমাদের একটি নামকৃত 'y' লক্ষ্য দরকার।
-একটি নতুন কোড সেলে, `load_diabetes()` কল করে ডায়াবেটিস ডেটাসেট লোড করুন। ইনপুট `return_X_y=True` নির্দেশ করে যে `X` একটি ডেটা ম্যাট্রিক্স হবে, এবং `y` হবে রিগ্রেশন টার্গেট।
+একটি নতুন কোড সেলে, `load_diabetes()` কল করে ডায়াবেটিস ডেটাসেট লোড করুন। `return_X_y=True` ইনপুট মানে হল `X` একটি ডেটা ম্যাট্রিক্স হবে, এবং `y` হবে রিগ্রেশন লক্ষ্য।
-1. ডেটা ম্যাট্রিক্সের আকার এবং এর প্রথম উপাদান দেখানোর জন্য কিছু প্রিন্ট কমান্ড যোগ করুন:
+1. ডেটা ম্যাট্রিক্সের আকৃতি এবং এর প্রথম উপাদান প্রদর্শনের জন্য কিছু প্রিন্ট কমান্ড যোগ করুন:
```python
X, y = datasets.load_diabetes(return_X_y=True)
@@ -149,9 +150,9 @@
print(X[0])
```
- আপনি যা রেসপন্স হিসেবে পাচ্ছেন তা একটি টাপল। আপনি যা করছেন তা হলো টাপলের প্রথম দুটি মান যথাক্রমে `X` এবং `y`-তে অ্যাসাইন করা। [টাপল সম্পর্কে আরও জানুন](https://wikipedia.org/wiki/Tuple)।
+ আপনি যে রেসপন্স পাচ্ছেন, তা একটি tuple। আপনি tuple- এর প্রথম দুটি মান `X` এবং `y` তে আলাদা করছেন। [tuple সম্পর্কে আরও জানুন](https://wikipedia.org/wiki/Tuple)।
- আপনি দেখতে পাবেন যে এই ডেটায় ৪৪২টি আইটেম রয়েছে যা ১০টি উপাদানের অ্যারে আকারে সাজানো:
+ আপনি দেখতে পাচ্ছেন ডেটা ৪৪২টি আইটেম নিয়ে তৈরি, যার প্রতিটি ১০টি উপাদানের অ্যারে আকারে:
```text
(442, 10)
@@ -159,49 +160,67 @@
-0.04340085 -0.00259226 0.01990842 -0.01764613]
```
- ✅ ডেটা এবং রিগ্রেশন টার্গেটের মধ্যে সম্পর্ক নিয়ে একটু চিন্তা করুন। লিনিয়ার রিগ্রেশন ফিচার X এবং টার্গেট ভেরিয়েবল y-এর মধ্যে সম্পর্ক পূর্বানুমান করে। ডায়াবেটিস ডেটাসেটের জন্য [টার্গেট](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) ডকুমেন্টেশনে খুঁজে বের করুন। এই ডেটাসেট কী প্রদর্শন করছে?
+ ✅ কিছুক্ষণ ভেবে দেখুন ডেটা এবং রিগ্রেশন লক্ষ্য এর সম্পর্ক। লিনিয়ার রিগ্রেশন বৈশিষ্ট্য X এবং লক্ষ্য ভেরিয়েবল y-এর মধ্যে সম্পর্ক পূর্বাভাস দেয়। আপনি কি ডকুমেন্টেশনে ডায়াবেটিস ডেটাসেটের [লক্ষ্য](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) খুঁজে পেয়েছেন? এই ডেটাসেটটি কি প্রদর্শন করছে, লক্ষ্য দেখে?
-2. এরপর, ডেটাসেটের একটি অংশ প্লট করার জন্য নির্বাচন করুন, ডেটাসেটের তৃতীয় কলামটি নির্বাচন করে। এটি করতে, `:` অপারেটর ব্যবহার করে সমস্ত সারি নির্বাচন করুন, এবং তারপর ইনডেক্স (2) ব্যবহার করে তৃতীয় কলামটি নির্বাচন করুন। আপনি `reshape(n_rows, n_columns)` ব্যবহার করে ডেটাকে ২ডি অ্যারেতে রিশেপ করতে পারেন। যদি প্যারামিটারগুলোর একটি -1 হয়, তবে সংশ্লিষ্ট ডাইমেনশন স্বয়ংক্রিয়ভাবে গণনা করা হয়।
+2. তারপরে, ডেটাসেটের একটি অংশ নির্বাচন করুন প্লট করার জন্য: ডেটাসেটের ৩য় কলাম নির্বাচিত করুন। `:` অপারেটর ব্যবহার করে সব সারি নির্বাচন করে তারপর ইনডেক্স (২) ব্যবহার করে তৃতীয় কলাম নির্বাচন করতে পারেন। প্লট করার জন্য ডেটাকে 2D অ্যারেতে রিশেপ করা দরকার `reshape(n_rows, n_columns)` ব্যবহার করে। যদি একটি প্যারামিটার -1 হয়, সংশ্লিষ্ট মাত্রা স্বয়ংক্রিয়ভাবে হিসাব হয়।
```python
X = X[:, 2]
X = X.reshape((-1,1))
```
- ✅ যেকোনো সময়, ডেটার আকার প্রিন্ট করে চেক করুন।
+ ✅ যেকোনো সময় ডেটার আকৃতি পরীক্ষা করতে প্রিন্ট করুন।
-3. এখন যেহেতু আপনার ডেটা প্লট করার জন্য প্রস্তুত, আপনি দেখতে পারেন একটি মেশিন এই ডেটাসেটে সংখ্যাগুলোর মধ্যে একটি যৌক্তিক বিভাজন নির্ধারণ করতে পারে কিনা। এটি করতে, আপনাকে ডেটা (X) এবং টার্গেট (y) উভয়কেই টেস্ট এবং ট্রেনিং সেটে ভাগ করতে হবে। স্কিকিট-লার্ন এটি করার একটি সহজ উপায় সরবরাহ করে; আপনি একটি নির্দিষ্ট পয়েন্টে আপনার টেস্ট ডেটা ভাগ করতে পারেন।
+3. এখন ডেটা প্লট করার প্রস্তুত, দেখুন একটি মেশিন সংখ্যাগুলোর মধ্যে যৌক্তিক বিভাজন নির্ধারণে সাহায্য করতে পারে কিনা। এর জন্য, আপনাকে ডেটা (X) এবং লক্ষ্য (y) উভয়ই পরীক্ষা এবং প্রশিক্ষণ সেটে ভাগ করতে হবে। স্কিকিট-লার্নে এর জন্য সরল উপায় আছে; আপনি নির্দিষ্ট পয়েন্টে পরীক্ষা ডেটা ভাগ করতে পারবেন।
```python
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33)
```
-4. এখন আপনি আপনার মডেল ট্রেন করার জন্য প্রস্তুত! লিনিয়ার রিগ্রেশন মডেল লোড করুন এবং `model.fit()` ব্যবহার করে আপনার X এবং y ট্রেনিং সেট দিয়ে এটি ট্রেন করুন:
+4. এখন আপনার মডেল প্রশিক্ষণের জন্য প্রস্তুত! লিনিয়ার রিগ্রেশন মডেল লোড করুন এবং `model.fit()` ব্যবহার করে X ও y প্রশিক্ষণ সেট দিয়ে প্রশিক্ষণ দিন:
```python
model = linear_model.LinearRegression()
model.fit(X_train, y_train)
```
- ✅ `model.fit()` একটি ফাংশন যা আপনি টেনসরফ্লোসহ অনেক এমএল লাইব্রেরিতে দেখতে পাবেন।
+ ✅ `model.fit()` একটি ফাংশন যা আপনি অনেক এমএল লাইব্রেরিতে যেমন TensorFlow দেথতে পাবেন
+
+5. এরপর, `predict()` ফাংশন ব্যবহার করে পরীক্ষার ডেটা দিয়ে পূর্বাভাস তৈরি করুন। এটি ডেটা গ্রুপের মধ্যে একটি লাইন আঁকতে ব্যবহৃত হবে
+
+ ```python
+ y_pred = model.predict(X_test)
+ ```
+
+6. এখন ডেটা একটি প্লটে প্রদর্শনের সময়। এই কাজের জন্য matplotlib খুব দরকারী টুল। সমস্ত X এবং y পরীক্ষার ডেটার একটি scatterplot তৈরি করুন এবং পূর্বাভাস ব্যবহার করে মডেলের ডেটা গ্রুপের মধ্যে সবচেয়ে উপযুক্ত স্থানে একটি লাইন আঁকুন।
-5. এরপর, টেস্ট ডেটা ব্যবহার করে একটি প্রেডিকশন তৈরি করুন, `predict()` ফাংশন ব্যবহার করে। এটি ডেটা গ্রুপ
-✅ এখানে কী ঘটছে তা একটু চিন্তা করুন। একটি সরল রেখা অনেক ছোট ছোট ডেটা বিন্দুর মধ্য দিয়ে যাচ্ছে, কিন্তু এটি ঠিক কী করছে? আপনি কি দেখতে পাচ্ছেন যে এই রেখাটি কীভাবে আপনাকে সাহায্য করতে পারে একটি নতুন, অদেখা ডেটা পয়েন্টের অবস্থান প্লটের y অক্ষের সাথে সম্পর্কিতভাবে পূর্বাভাস করতে? এই মডেলের ব্যবহারিক প্রয়োগটি শব্দে প্রকাশ করার চেষ্টা করুন।
+ ```python
+ plt.scatter(X_test, y_test, color='black')
+ plt.plot(X_test, y_pred, color='blue', linewidth=3)
+ plt.xlabel('Scaled BMIs')
+ plt.ylabel('Disease Progression')
+ plt.title('A Graph Plot Showing Diabetes Progression Against BMI')
+ plt.show()
+ ```
+
+ 
-অভিনন্দন, আপনি আপনার প্রথম লিনিয়ার রিগ্রেশন মডেল তৈরি করেছেন, এর মাধ্যমে একটি পূর্বাভাস তৈরি করেছেন এবং এটি একটি প্লটে প্রদর্শন করেছেন!
+
+ ✅ এখানে কী ঘটছে তা একটু ভাবুন। একটি সরলরেখা অনেক ছোট ডেটার বিন্দুর মধ্য দিয়ে যাচ্ছে, কিন্তু এটি ঠিক কী করছে? আপনি কি দেখতে পাচ্ছেন কীভাবে এই রেখাটিকে ব্যবহার করে কোনও নতুন, অদেখা ডেটা পয়েন্ট কোথায় প্লটের y অক্ষের সাথে সম্পর্ক করে বসাতে হবে তা পূর্বাভাস দেবে? এই মডেলের ব্যবহারিক উপযোগিতাটি শব্দে প্রকাশ করার চেষ্টা করুন।
+
+অভিনন্দন, আপনি প্রথম লিনিয়ার রিগ্রেশন মডেলটি তৈরি করেছেন, এটি দিয়ে একটি পূর্বাভাস তৈরি করেছেন, এবং এটি একটি প্লটে প্রদর্শন করেছেন!
---
## 🚀চ্যালেঞ্জ
-এই ডেটাসেট থেকে একটি ভিন্ন ভেরিয়েবল প্লট করুন। ইঙ্গিত: এই লাইনটি সম্পাদনা করুন: `X = X[:,2]`। এই ডেটাসেটের লক্ষ্য অনুযায়ী, আপনি ডায়াবেটিস রোগের অগ্রগতি সম্পর্কে কী আবিষ্কার করতে সক্ষম?
-
+এই ডেটাসেট থেকে একটি আলাদা ভেরিয়েবল প্লট করুন। ইঙ্গিত: এই লাইনটি সম্পাদনা করুন: `X = X[:,2]`। এই ডেটাসেটের টার্গেট বিবেচনায়, আপনি কী জানতে পারছেন ডায়াবেটিস রোগের অগ্রগতির সম্পর্কে?
## [পোস্ট-লেকচার কুইজ](https://ff-quizzes.netlify.app/en/ml/)
-## পর্যালোচনা ও স্ব-অধ্যয়ন
+## পর্যালোচনা এবং স্ব-অধ্যয়ন
-এই টিউটোরিয়ালে, আপনি সাধারণ লিনিয়ার রিগ্রেশন নিয়ে কাজ করেছেন, ইউনিভেরিয়েট বা মাল্টিপল লিনিয়ার রিগ্রেশন নয়। এই পদ্ধতিগুলির মধ্যে পার্থক্য সম্পর্কে একটু পড়ুন, অথবা [এই ভিডিওটি](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) দেখুন।
+এই টিউটোরিয়ালে, আপনি সহজ সরলরেখীয় রিগ্রেশন নিয়ে কাজ করেছেন, যা ইউনিভেরিয়েট বা মাল্টিপল লিনিয়ার রিগ্রেশনের থেকে আলাদা। এই পদ্ধতিগুলির মধ্যে পার্থক্য সম্পর্কে একটু পড়ুন, অথবা [এই ভিডিওটি](https://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) নিন।
+রিগ্রেশন ধারণা সম্পর্কে আরও পড়ুন এবং ভাবুন কী ধরনের প্রশ্ন এই প্রযুক্তি দ্বারা উত্তরযোগ্য। আপনার বোঝাপড়া গভীর করার জন্য এই [টিউটোরিয়ালটি](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) অনুসরণ করুন।
## অ্যাসাইনমেন্ট
@@ -209,5 +228,7 @@
---
-**অস্বীকৃতি**:
-এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিকতার জন্য চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা তার জন্য দায়ী থাকব না।
\ No newline at end of file
+
+**অস্বীকৃতি**:
+এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনূদিত হয়েছে। যদিও আমরা শুদ্ধতার জন্য চেষ্টা করি, অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল নথিটি তার স্বভাষায় কর্তৃত্বপূর্ণ উৎস হিসেবে বিবেচিত হওয়া উচিত। গুরুত্বপূর্ণ তথ্যের জন্য পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদের ব্যবহারে প্রয়োজনীয় ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়বদ্ধ নই।
+
\ No newline at end of file
diff --git a/translations/bn/2-Regression/2-Data/README.md b/translations/bn/2-Regression/2-Data/README.md
index 63453e815..81853a2b4 100644
--- a/translations/bn/2-Regression/2-Data/README.md
+++ b/translations/bn/2-Regression/2-Data/README.md
@@ -1,62 +1,62 @@
-# Scikit-learn ব্যবহার করে একটি রিগ্রেশন মডেল তৈরি করুন: ডেটা প্রস্তুত এবং ভিজ্যুয়ালাইজ করুন
+# Scikit-learn ব্যবহার করে রিগ্রেশন মডেল তৈরি করুন: ডেটা প্রস্তুত করুন এবং ভিজ্যুয়ালাইজ করুন
-
+
-ইনফোগ্রাফিক: [দাসানি মাদিপল্লি](https://twitter.com/dasani_decoded)
+ইনফোগ্রাফিক [দাসানি মাদিপালি](https://twitter.com/dasani_decoded) দ্বারা
-## [পূর্ব-লেকচার কুইজ](https://ff-quizzes.netlify.app/en/ml/)
+## [প্রাক-লেকচার কুইজ](https://ff-quizzes.netlify.app/en/ml/)
-> ### [এই পাঠটি R-এ উপলব্ধ!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
+> ### [এই পাঠ R-এ উপলব্ধ!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
-## ভূমিকা
+## পরিচিতি
-আপনি যখন Scikit-learn ব্যবহার করে মেশিন লার্নিং মডেল তৈরি করতে শুরু করবেন, তখন আপনার ডেটা থেকে সঠিক প্রশ্ন জিজ্ঞাসা করার জন্য প্রস্তুত হতে হবে। ডেটার সাথে কাজ করার সময় এবং ML সমাধান প্রয়োগ করার সময়, সঠিক প্রশ্ন জিজ্ঞাসা করা অত্যন্ত গুরুত্বপূর্ণ যাতে আপনার ডেটাসেটের সম্ভাবনাগুলি সঠিকভাবে উন্মোচিত হয়।
+এখন যেহেতু আপনি Scikit-learn সহ মেশিন লার্নিং মডেল তৈরি শুরু করার জন্য প্রয়োজনীয় সরঞ্জাম দিয়ে প্রস্তুত, আপনি আপনার ডেটাকে প্রশ্ন করার জন্য প্রস্তুত। ডেটার সাথে কাজ করার সময় এবং ML সমাধান প্রয়োগ করার সময়, আপনার ডেটাসেটের সম্ভাবনা সঠিকভাবে প্রকাশ করার জন্য সঠিক প্রশ্ন কিভাবে করতে হয় তা বোঝা খুবই গুরুত্বপূর্ণ।
-এই পাঠে আপনি শিখবেন:
+এই পাঠে, আপনি শিখবেন:
-- কীভাবে মডেল তৈরির জন্য আপনার ডেটা প্রস্তুত করবেন।
-- কীভাবে Matplotlib ব্যবহার করে ডেটা ভিজ্যুয়ালাইজ করবেন।
+- কিভাবে মডেল তৈরির জন্য আপনার ডেটা প্রস্তুত করবেন।
+- কিভাবে Matplotlib দিয়ে ডেটা ভিজ্যুয়ালাইজেশন করবেন।
+- কিভাবে Seaborn দিয়ে আরও প্রকাশময় ডেটা ভিজ্যুয়ালাইজেশন করবেন।
-## আপনার ডেটার সঠিক প্রশ্ন জিজ্ঞাসা করা
+## আপনার ডেটার জন্য সঠিক প্রশ্ন করা
-আপনার উত্তর পেতে চাওয়া প্রশ্নটি নির্ধারণ করবে আপনি কোন ধরনের ML অ্যালগরিদম ব্যবহার করবেন। এবং আপনি যে উত্তরটি পাবেন তার গুণমান আপনার ডেটার প্রকৃতির উপর ব্যাপকভাবে নির্ভর করবে।
+আপনি যে প্রশ্নের উত্তর জানতে চান তা নির্ধারণ করবে আপনি কোন ধরনের ML অ্যালগরিদম ব্যবহার করবেন। এবং আপনি যে উত্তরের মান পাবেন তা আপনার ডেটার প্রকৃতির উপর অনেক নির্ভর করবে।
-এই পাঠের জন্য প্রদত্ত [ডেটা](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) দেখুন। আপনি এই .csv ফাইলটি VS Code-এ খুলতে পারেন। দ্রুত স্কিম করলে দেখা যায় যে এখানে ফাঁকা স্থান এবং স্ট্রিং ও সংখ্যার মিশ্রণ রয়েছে। এছাড়াও একটি অদ্ভুত কলাম রয়েছে যার নাম 'Package', যেখানে ডেটা 'sacks', 'bins' এবং অন্যান্য মানের মিশ্রণ। ডেটা আসলে একটু বিশৃঙ্খল।
+এই পাঠের জন্য প্রদত্ত [ডেটা](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 - কীভাবে একটি ডেটাসেট বিশ্লেষণ এবং পরিষ্কার করবেন")
+[](https://youtu.be/5qGjczWTrDQ "ML for beginners - How to Analyze and Clean a Dataset")
-> 🎥 উপরের ছবিতে ক্লিক করুন এই পাঠের জন্য ডেটা প্রস্তুত করার একটি সংক্ষিপ্ত ভিডিও দেখতে।
+> 🎥 উপরের ছবিতে ক্লিক করে এই পাঠের জন্য ডেটা প্রস্তুত করার একটি সংক্ষিপ্ত ভিডিও দেখুন।
-আসলে, সম্পূর্ণ প্রস্তুত একটি ডেটাসেট পাওয়া খুবই বিরল যা সরাসরি ML মডেল তৈরির জন্য ব্যবহার করা যায়। এই পাঠে, আপনি স্ট্যান্ডার্ড Python লাইব্রেরি ব্যবহার করে একটি কাঁচা ডেটাসেট প্রস্তুত করার পদ্ধতি শিখবেন। এছাড়াও, আপনি ডেটা ভিজ্যুয়ালাইজ করার বিভিন্ন কৌশল শিখবেন।
+আসলে, ডেটাসেট সরাসরি ব্যবহার করার জন্য সম্পূর্ণ প্রস্তুত পাওয়া খুবই অস্বাভাবিক। এই পাঠে, আপনি শিখবেন কিভাবে স্ট্যান্ডার্ড পাইথন লাইব্রেরি ব্যবহার করে র ডেটাসেট প্রস্তুত করতে হয়। এছাড়াও আপনি বিভিন্ন পদ্ধতি শিখবেন ডেটা ভিজ্যুয়ালাইজেশনের।
-## কেস স্টাডি: 'কুমড়ার বাজার'
+## কেস স্টাডি: 'পাম্পকিন (কুমড়া) বাজার'
-এই ফোল্ডারে আপনি মূল `data` ফোল্ডারে [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) নামে একটি .csv ফাইল পাবেন, যেখানে 1757 লাইনের ডেটা রয়েছে যা শহর অনুযায়ী গোষ্ঠীবদ্ধ কুমড়ার বাজার সম্পর্কে তথ্য প্রদান করে। এটি [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) থেকে প্রাপ্ত কাঁচা ডেটা, যা মার্কিন যুক্তরাষ্ট্রের কৃষি বিভাগের দ্বারা বিতরণ করা হয়।
+এই ফোল্ডারে আপনি রুট `data` ফোল্ডারে [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) নামে একটি .csv ফাইল পাবেন যার মধ্যে পাম্পকিন বাজার সম্পর্কিত ১৭৫৭টি তথ্য সারি রয়েছে, শহরভিত্তিক গোষ্ঠীতে বিন্যস্ত। এটি [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) থেকে সংগৃহীত কাঁচা ডেটা যা যুক্তরাষ্ট্রের কৃষি বিভাগের দ্বারা বিতরণ করা হয়।
-### ডেটা প্রস্তুত করা
+### ডেটা প্রস্তুতি
-এই ডেটা পাবলিক ডোমেইনে রয়েছে। এটি USDA ওয়েবসাইট থেকে শহর অনুযায়ী আলাদা ফাইল হিসেবে ডাউনলোড করা যায়। অনেক আলাদা ফাইল এড়াতে, আমরা সমস্ত শহরের ডেটা একত্রিত করে একটি স্প্রেডশিটে রেখেছি, ফলে আমরা ইতিমধ্যেই ডেটা কিছুটা _প্রস্তুত_ করেছি। এবার, ডেটার দিকে আরও গভীরভাবে নজর দিন।
+এই ডেটা পাবলিক ডোমেইনে রয়েছে। এটি USDA ওয়েবসাইট থেকে প্রতিটি শহরের আলাদা আলাদা ফাইল হিসাবে ডাউনলোড করা যায়। অনেকগুলো আলাদা ফাইল এড়াতে, আমরা সব শহরের ডেটা একক স্প্রেডশীটে যুক্ত করেছি, অর্থাৎ আমরা ডেটা কিছুটা _প্রস্তুত_ করেছি। এবার, ডেটার প্রতি আরও গভীর দৃষ্টি দেওয়া যাক।
-### কুমড়ার ডেটা - প্রাথমিক পর্যবেক্ষণ
+### পাম্পকিন ডেটা - প্রাথমিক উপসংহার
-এই ডেটা সম্পর্কে আপনি কী লক্ষ্য করেন? আপনি ইতিমধ্যেই দেখেছেন যে এখানে স্ট্রিং, সংখ্যা, ফাঁকা স্থান এবং অদ্ভুত মানের মিশ্রণ রয়েছে যা আপনাকে বুঝতে হবে।
+আপনি এই ডেটার সম্পর্কে কি লক্ষ্য করেছেন? আপনি ইতোমধ্যেই দেখেছেন যে এখানে স্ট্রিং, সংখ্যা, ফাঁকা স্থান এবং কিছু অদ্ভুত মানের মিশ্রণ রয়েছে যার অর্থ আপনি খুঁজে বের করতে হবে।
-রিগ্রেশন কৌশল ব্যবহার করে আপনি এই ডেটা থেকে কী প্রশ্ন করতে পারেন? যেমন, "একটি নির্দিষ্ট মাসে বিক্রয়ের জন্য একটি কুমড়ার দাম পূর্বাভাস দিন।" ডেটার দিকে আবার তাকালে, আপনি লক্ষ্য করবেন যে এই কাজের জন্য প্রয়োজনীয় ডেটা কাঠামো তৈরি করতে কিছু পরিবর্তন করতে হবে।
+আপনি এই ডেটার কাছে কোন প্রশ্ন করতে পারেন, রিগ্রেশন টেকনিক ব্যবহার করে? উদাহরণস্বরূপ, "নির্দিষ্ট মাসে বিক্রির জন্য পাম্পকিনের দাম পূর্বানুমান করুন"। আবার ডেটা দেখে, কাজের জন্য প্রয়োজনীয় ডেটা স্ট্রাকচার তৈরি করতে কিছু পরিবর্তন করতে হবে।
+## অনুশীলন - পাম্পকিন ডেটা বিশ্লেষণ
-## অনুশীলন - কুমড়ার ডেটা বিশ্লেষণ করুন
-
-চলুন [Pandas](https://pandas.pydata.org/) ব্যবহার করি, (এর নাম `Python Data Analysis` থেকে এসেছে) একটি টুল যা ডেটা আকৃতির জন্য খুবই কার্যকর, কুমড়ার ডেটা বিশ্লেষণ এবং প্রস্তুত করতে।
+চলুন [Pandas](https://pandas.pydata.org/) (যার অর্থ `Python Data Analysis`) ব্যবহার করি, যা ডেটা বিন্যাসে খুবই কাজে লাগে, এই পাম্পকিন ডেটা বিশ্লেষণ এবং প্রস্তুত করার জন্য।
### প্রথমে, অনুপস্থিত তারিখ পরীক্ষা করুন
-আপনাকে প্রথমে অনুপস্থিত তারিখ পরীক্ষা করার জন্য কিছু পদক্ষেপ নিতে হবে:
+আপনাকে প্রথমে অনুপস্থিত তারিখগুলি পরীক্ষা করার পদক্ষেপ নিতে হবে:
-1. তারিখগুলোকে মাসের ফরম্যাটে রূপান্তর করুন (এগুলো US তারিখ, তাই ফরম্যাটটি `MM/DD/YYYY`)।
-2. মাসটি একটি নতুন কলামে বের করুন।
+১. তারিখগুলোকে মাস বিন্যাসে রূপান্তর করুন (এগুলো US তারিখ, তাই বিন্যাস `MM/DD/YYYY`)।
+২. একটি নতুন কলামে মাস আলাদা করুন।
-Visual Studio Code-এ _notebook.ipynb_ ফাইলটি খুলুন এবং স্প্রেডশিটটি একটি নতুন Pandas ডেটাফ্রেমে আমদানি করুন।
+_notebook.ipynb_ ফাইলটি Visual Studio Code-এ খুলুন এবং স্প্রেডশীটটি নতুন Pandas ডেটাফ্রেমে ইম্পোর্ট করুন।
-1. প্রথম পাঁচটি সারি দেখতে `head()` ফাংশন ব্যবহার করুন।
+১. প্রথম পাঁচটি সারি দেখার জন্য `head()` ফাংশন ব্যবহার করুন।
```python
import pandas as pd
@@ -64,30 +64,30 @@ Visual Studio Code-এ _notebook.ipynb_ ফাইলটি খুলুন এ
pumpkins.head()
```
- ✅ শেষ পাঁচটি সারি দেখতে আপনি কোন ফাংশন ব্যবহার করবেন?
+ ✅ সর্বশেষ পাঁচটি সারি দেখার জন্য কোন ফাংশনটি ব্যবহার করবেন?
-1. বর্তমান ডেটাফ্রেমে অনুপস্থিত ডেটা আছে কিনা তা পরীক্ষা করুন:
+১. চেক করুন বর্তমান ডেটাফ্রেমে কি অনুপস্থিত তথ্য আছে কি না:
```python
pumpkins.isnull().sum()
```
- অনুপস্থিত ডেটা রয়েছে, তবে এটি হয়তো এই কাজের জন্য গুরুত্বপূর্ণ নাও হতে পারে।
+ কিছু ডেটা অনুপস্থিত, কিন্তু হয়তো তা কাজের জন্য অনেকটা ততটা প্রভাব ফেলবে না।
-1. আপনার ডেটাফ্রেমটি আরও সহজে কাজ করার জন্য, শুধুমাত্র প্রয়োজনীয় কলামগুলো নির্বাচন করুন, `loc` ফাংশন ব্যবহার করে যা মূল ডেটাফ্রেম থেকে একটি নির্দিষ্ট সারি এবং কলাম গ্রুপ বের করে। নিচের ক্ষেত্রে `:` এর অর্থ "সব সারি।"
+১. ডেটাফ্রেম কাজ করা সহজ করতে, কেবল প্রয়োজনীয় কলামগুলি `loc` ফাংশন ব্যবহার করে বাছাই করুন, যা মূল ডেটাফ্রেম থেকে নির্দিষ্ট সারি (প্রথম প্যারামিটার) এবং কলাম (দ্বিতীয় প্যারামিটার) বের করে আনে। নিচে `:` মানে "সকল সারি"।
```python
columns_to_select = ['Package', 'Low Price', 'High Price', 'Date']
pumpkins = pumpkins.loc[:, columns_to_select]
```
-### দ্বিতীয়ত, কুমড়ার গড় দাম নির্ধারণ করুন
+### দ্বিতীয়, পাম্পকিনের গড় দাম নির্ণয় করুন
-একটি নির্দিষ্ট মাসে কুমড়ার গড় দাম নির্ধারণ করার জন্য কীভাবে চিন্তা করবেন? এই কাজের জন্য আপনি কোন কলামগুলো বাছাই করবেন? ইঙ্গিত: আপনাকে ৩টি কলাম দরকার হবে।
+একটি নির্দিষ্ট মাসের পাম্পকিনের গড় দাম কিভাবে নির্ণয় করবেন ভাবুন। এই কাজের জন্য কোন কোন কলাম প্রয়োজন? সূত্র: আপনাকে ৩টি কলাম দরকার হবে।
-সমাধান: `Low Price` এবং `High Price` কলামের গড় নিয়ে নতুন Price কলামটি পূরণ করুন এবং Date কলামটি শুধুমাত্র মাস দেখানোর জন্য রূপান্তর করুন। সৌভাগ্যক্রমে, উপরের পরীক্ষার অনুযায়ী, তারিখ বা দামের জন্য কোনো অনুপস্থিত ডেটা নেই।
+সমাধান: `Low Price` এবং `High Price` কলামগুলোর গড় নিয়ে নতুন `Price` কলাম পূরণ করুন, এবং `Date` কলাম শুধুমাত্র মাস দেখাবে। সৌভাগ্যক্রমে, উপরের পরীক্ষা অনুযায়ী, তারিখ বা মূল্যের জন্য কোন ডেটা অনুপস্থিত নয়।
-1. গড় নির্ধারণ করতে নিম্নলিখিত কোড যোগ করুন:
+১. গড় নির্ণয় করতে নিম্নলিখিত কোড যোগ করুন:
```python
price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2
@@ -96,37 +96,37 @@ Visual Studio Code-এ _notebook.ipynb_ ফাইলটি খুলুন এ
```
- ✅ আপনি `print(month)` ব্যবহার করে যেকোনো ডেটা পরীক্ষা করতে পারেন।
+ ✅ আপনি চেক করতে চাইলে `print(month)` ব্যবহার করে যেকোনো ডেটা মুদ্রণ করতে পারেন।
-2. এখন, আপনার রূপান্তরিত ডেটা একটি নতুন Pandas ডেটাফ্রেমে কপি করুন:
+২. এখন, আপনার রূপান্তরকৃত ডেটা একটি নতুন Pandas ডেটাফ্রেমে অনুলিপি করুন:
```python
new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price})
```
- আপনার ডেটাফ্রেম প্রিন্ট করলে আপনি একটি পরিষ্কার, সুশৃঙ্খল ডেটাসেট দেখতে পাবেন যার উপর আপনি আপনার নতুন রিগ্রেশন মডেল তৈরি করতে পারেন।
+ আপনার ডেটাফ্রেম মুদ্রণ করলে একটি পরিচ্ছন্ন, সুশৃঙ্খল ডেটাসেট দেখতে পাবেন, যার ওপর আপনি নতুন রিগ্রেশন মডেল নির্মাণ করতে পারবেন।
-### কিন্তু অপেক্ষা করুন! এখানে কিছু অদ্ভুত ব্যাপার আছে
+### কিন্তু অপেক্ষা করুন! এখানে কিছু অদ্ভুততা আছে
-যদি আপনি `Package` কলামের দিকে তাকান, তাহলে দেখবেন কুমড়াগুলো বিভিন্ন কনফিগারেশনে বিক্রি হয়। কিছু '1 1/9 bushel' পরিমাপে বিক্রি হয়, কিছু '1/2 bushel' পরিমাপে, কিছু প্রতি কুমড়া, কিছু প্রতি পাউন্ড, এবং কিছু বড় বাক্সে বিভিন্ন প্রস্থে।
+যদি আপনি `Package` কলাম দেখেন, পাম্পকিন বিক্রি হয় বিভিন্ন বিন্যাসে। কিছু বিক্রি হয় '1 1/9 bushel' মাপে, কিছু '1/2 bushel' মাপে, কিছু প্রতি পাম্পকিন, কিছু প্রতি পাউন্ড, এবং কিছু বড় বক্সে বিভিন্ন প্রস্থে।
-> কুমড়াগুলোকে ধারাবাহিকভাবে ওজন করা খুবই কঠিন
+> পাম্পকিন গুলো ধারাবাহিকভাবে ওজন করা খুব কঠিন বলে মনে হচ্ছে
-মূল ডেটার দিকে গভীরভাবে তাকালে দেখা যায় যে `Unit of Sale` কলামে 'EACH' বা 'PER BIN' সমান মান রয়েছে, এবং `Package` টাইপ প্রতি ইঞ্চি, প্রতি বিন, বা 'each'। কুমড়াগুলোকে ধারাবাহিকভাবে ওজন করা খুবই কঠিন, তাই চলুন `Package` কলামে 'bushel' স্ট্রিং থাকা কুমড়াগুলো বাছাই করি।
+মূল ডেটা বিশ্লেষণ করলে দেখা যায়, যেগুলোর `Unit of Sale` ধারায় 'EACH' বা 'PER BIN' আছে সেগুলোর `Package` প্রকার হয় প্রতি ইঞ্চি, প্রতি বিন, বা 'each'। পাম্পকিন ধারাবাহিকভাবে মাপা কঠিন, তাই `Package` কলামে 'bushel' স্ট্রিং থাকার পাম্পকিন গুলো বাছাই করে ফিল্টার করুন।
-1. ফাইলের শীর্ষে, প্রাথমিক .csv আমদানির নিচে একটি ফিল্টার যোগ করুন:
+১. ফাইলের শীর্ষে .csv ইম্পোর্টের নিচে একটি ফিল্টার যোগ করুন:
```python
pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]
```
- এখন ডেটা প্রিন্ট করলে আপনি দেখতে পাবেন যে আপনি শুধুমাত্র 415 বা তার বেশি সারি পাচ্ছেন যেখানে কুমড়াগুলো bushel হিসেবে বিক্রি হয়।
+ এখন যদি ডেটা প্রিন্ট করেন, দেখতে পাবেন প্রায় ৪১৫ সারি ডেটা আসছে যা 'bushel' অনুযায়ী পাম্পকিন সম্পর্কিত।
-### কিন্তু অপেক্ষা করুন! আরও একটি কাজ করতে হবে
+### কিন্তু অপেক্ষা করুন! আরেকটি কাজ বাকি আছে
-আপনি কি লক্ষ্য করেছেন যে bushel পরিমাণটি প্রতি সারিতে পরিবর্তিত হয়? আপনাকে দামকে স্বাভাবিক করতে হবে যাতে আপনি bushel অনুযায়ী দাম দেখাতে পারেন, তাই এটি মানক করতে কিছু গণনা করুন।
+আপনি কি লক্ষ্য করেছেন যে প্রতি সারিতে bushel-এর পরিমাণ বিভিন্ন? আপনাকে মূল্যমানকে bushel প্রতি হিসেবে স্বাভাবিকীকরণ করতে হবে, তাই কিছু গণিত করতে হবে।
-1. নতুন_pumpkins ডেটাফ্রেম তৈরি করার ব্লকের পরে এই লাইনগুলো যোগ করুন:
+১. নতুন_pumpkins ডেটাফ্রেম তৈরির ব্লকের নিচে এই লাইনগুলো যোগ করুন:
```python
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9)
@@ -134,38 +134,38 @@ Visual Studio Code-এ _notebook.ipynb_ ফাইলটি খুলুন এ
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 নিয়ে এই অধ্যয়নটি দেখায় যে আপনার ডেটার প্রকৃতি বোঝা কতটা গুরুত্বপূর্ণ!
+✅ [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) অনুযায়ী, একটি bushel-এর ওজন উৎপাদনের ধরণ অনুসারে নির্ভর করে, কারণ এটি ভলিউম মাপ। "উদাহরণস্বরূপ, একটি bushel টমেটোর ওজন ৫৬ পাউন্ড হওয়া উচিত... পাতা এবং সবজি কম ওজনের পাশাপাশি বেশি স্থান নেয়, তাই স্পিনাচের bushel মাত্র ২০ পাউন্ড।" এটা বেশ জটিল! আমরা bushel থেকে pound রূপান্তরে না গিয়ে bushel অনুযায়ী মূল্য নির্ধারণ করব। এই bushel ভিত্তিক পাম্পকিন অধ্যয়ন দেখায় কতটা গুরুত্বপূর্ণ আপনার ডেটার প্রকৃতি বোঝা!
-এখন, আপনি bushel পরিমাপের ভিত্তিতে ইউনিট অনুযায়ী দাম বিশ্লেষণ করতে পারেন। ডেটা আবার প্রিন্ট করলে আপনি দেখতে পাবেন এটি কীভাবে মানক হয়েছে।
+এখন আপনি তাদের bushel মাপ অনুযায়ী ইউনিট প্রতি মূল্য বিশ্লেষণ করতে পারবেন। যদি আবার ডেটা প্রিন্ট করেন, দেখতে পাবেন এটা স্বাভাবিকীকৃত।
-✅ আপনি কি লক্ষ্য করেছেন যে অর্ধ-bushel হিসেবে বিক্রি হওয়া কুমড়াগুলো খুবই ব্যয়বহুল? আপনি কি এর কারণ খুঁজে বের করতে পারেন? ইঙ্গিত: ছোট কুমড়াগুলো বড়গুলোর তুলনায় অনেক বেশি ব্যয়বহুল, সম্ভবত কারণ একটি বড় ফাঁপা পাই কুমড়ার দ্বারা নেওয়া অব্যবহৃত জায়গার তুলনায় bushel-এ অনেক বেশি ছোট কুমড়া থাকে।
+✅ আপনি কি দেখেছেন যে অর্ধেক bushel এ বিক্রয় হওয়া পাম্পকিনগুলো অনেক ব্যয়বহুল? আপনি কি এর কারণ বের করতে পারবেন? সূত্র: ছোট পাম্পকিনগুলো বড়দের থেকে অনেক বেশি দামী, সম্ভবত কারণ প্রতিটি bushel এ অনেক বেশি ছোট পাম্পকিন থাকে, যেখানে একটি বড় গর্তযুক্ত পাই পাম্পকিনের কারণে অনেক স্পেস ফাঁকা থাকে।
## ভিজ্যুয়ালাইজেশন কৌশল
-ডেটা বিজ্ঞানীর ভূমিকা হলো তারা যে ডেটার সাথে কাজ করছেন তার গুণমান এবং প্রকৃতি প্রদর্শন করা। এটি করতে তারা প্রায়ই আকর্ষণীয় ভিজ্যুয়ালাইজেশন তৈরি করেন, যেমন প্লট, গ্রাফ এবং চার্ট, যা ডেটার বিভিন্ন দিক দেখায়। এইভাবে, তারা সম্পর্ক এবং ফাঁকগুলো চাক্ষুষভাবে প্রদর্শন করতে সক্ষম হন যা অন্যথায় খুঁজে পাওয়া কঠিন।
+ডেটা বিজ্ঞানীর একটি অংশ হল তারা যে ডেটার ওপর কাজ করছে তার গুণমান ও প্রকৃতি প্রদর্শন করা। এজন্য তারা সাধারণত আকর্ষণীয় ভিজ্যুয়ালাইজেশন, প্লট, গ্রাফ এবং চার্ট তৈরি করে, যা ডেটার বিভিন্ন দিক প্রদর্শন করে। এর মাধ্যমে তারা এমন সম্পর্ক এবং ফাঁক গুলো ভিজ্যুয়ালি দেখতে পান যা অন্যথায় খুঁজে বের করা কঠিন।
-[](https://youtu.be/SbUkxH6IJo0 "ML for beginners - কীভাবে Matplotlib দিয়ে ডেটা ভিজ্যুয়ালাইজ করবেন")
+[](https://youtu.be/SbUkxH6IJo0 "ML for beginners - How to Visualize Data with Matplotlib")
-> 🎥 উপরের ছবিতে ক্লিক করুন এই পাঠের জন্য ডেটা ভিজ্যুয়ালাইজ করার একটি সংক্ষিপ্ত ভিডিও দেখতে।
+> 🎥 উপরের ছবিতে ক্লিক করে এই পাঠের জন্য ডেটা ভিজ্যুয়ালাইজ করার একটি সংক্ষিপ্ত ভিডিও দেখুন।
-ভিজ্যুয়ালাইজেশন ডেটার জন্য সবচেয়ে উপযুক্ত মেশিন লার্নিং কৌশল নির্ধারণ করতেও সাহায্য করতে পারে। একটি স্ক্যাটারপ্লট যা একটি রেখা অনুসরণ করে বলে মনে হয়, উদাহরণস্বরূপ, এটি নির্দেশ করে যে ডেটা একটি লিনিয়ার রিগ্রেশন অনুশীলনের জন্য উপযুক্ত।
+ভিজ্যুয়ালাইজেশন ডেটার জন্য সবচেয়ে উপযুক্ত মেশিন লার্নিং কৌশল নির্ধারণেও সাহায্য করে। উদাহরণস্বরূপ, একটি স্ক্যাটারপ্লট যা একটি রেখা অনুসরণ করে মনে হয়, তা নির্দেশ করে যে ডেটা একটি লিনিয়ার রিগ্রেশন অনুশীলনের জন্য ভাল প্রার্থী।
-একটি ডেটা ভিজ্যুয়ালাইজেশন লাইব্রেরি যা Jupyter নোটবুকে ভালো কাজ করে তা হলো [Matplotlib](https://matplotlib.org/) (যা আপনি আগের পাঠেও দেখেছেন)।
+একটি ডেটা ভিজ্যুয়ালাইজেশন লাইব্রেরি যা Jupyter নোটবুকে ভাল কাজ করে তা হল [Matplotlib](https://matplotlib.org/) (যা আপনি আগের পাঠেও দেখেছিলেন)।
-> ডেটা ভিজ্যুয়ালাইজেশনের আরও অভিজ্ঞতা পেতে [এই টিউটোরিয়ালগুলো](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott) দেখুন।
+> আরও অভিজ্ঞতা পেতে [এই টিউটোরিয়ালগুলোতে](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott) ডেটা ভিজ্যুয়ালাইজেশন অনুশীলন করুন।
-## অনুশীলন - Matplotlib নিয়ে পরীক্ষা করুন
+## অনুশীলন - Matplotlib দিয়ে পরীক্ষা করুন
-আপনি যে নতুন ডেটাফ্রেম তৈরি করেছেন তা প্রদর্শনের জন্য কিছু মৌলিক প্লট তৈরি করার চেষ্টা করুন। একটি মৌলিক লাইন প্লট কী দেখাবে?
+আপনি এখন যা তৈরি করেছেন নতুন ডেটাফ্রেম প্রদর্শনের জন্য কিছু মৌলিক প্লট তৈরি করার চেষ্টা করুন। একটি মৌলিক লাইন প্লট কী দেখাবে?
-1. ফাইলের শীর্ষে, Pandas আমদানির নিচে Matplotlib আমদানি করুন:
+১. ফাইলের উপরে, Pandas ইম্পোর্টের নিচে Matplotlib ইম্পোর্ট করুন:
```python
import matplotlib.pyplot as plt
```
-1. পুরো নোটবুকটি পুনরায় চালান।
-1. নোটবুকের নিচে একটি সেল যোগ করুন যাতে ডেটা একটি বক্স হিসেবে প্লট করা যায়:
+১. নোটবুকটি সম্পূর্ণ আবার চালান রিফ্রেশ করার জন্য।
+১. নোটবুকের নীচে একটি সেল যোগ করুন এবং ডেটাকে বক্স হিসাবে প্লট করুন:
```python
price = new_pumpkins.Price
@@ -174,44 +174,121 @@ Visual Studio Code-এ _notebook.ipynb_ ফাইলটি খুলুন এ
plt.show()
```
- 
+ 
- এটি কি একটি কার্যকর প্লট? এটি সম্পর্কে কি কিছু আপনাকে অবাক করে?
+ এটা কি একটি ব্যবহারযোগ্য প্লট? এতে কি কিছু চমকপ্রদ আছে?
- এটি বিশেষভাবে কার্যকর নয় কারণ এটি শুধুমাত্র একটি নির্দিষ্ট মাসে আপনার ডেটাকে পয়েন্টের একটি বিস্তৃতিতে প্রদর্শন করে।
+ এটা বিশেষত ব্যবহারযোগ্য নয় কারণ এটি কেবল আপনার ডেটা একটি নির্দিষ্ট মাসে বিন্দু হিসেবে দেখায়।
-### এটি কার্যকর করুন
+### এটাকে ব্যবহারযোগ্য করুন
-চার্টগুলোকে কার্যকর ডেটা প্রদর্শন করতে, সাধারণত আপনাকে ডেটাকে কোনোভাবে গ্রুপ করতে হয়। চলুন একটি প্লট তৈরি করার চেষ্টা করি যেখানে y অক্ষটি মাস দেখায় এবং ডেটা ডেটার বিতরণ প্রদর্শন করে।
+চার্টে ব্যবহারযোগ্য ডেটা প্রদর্শনের জন্য সাধারণত আপনাকে ডেটাকে কোন না কোনভাবে গোষ্ঠীবদ্ধ করতে হয়। আসুন একটি প্লট তৈরির চেষ্টা করি যেখানে y অক্ষ মাস দেখায় এবং ডেটা ডিস্ট্রিবিউশন প্রদর্শন করে।
-1. একটি গ্রুপড বার চার্ট তৈরি করতে একটি সেল যোগ করুন:
+১. একটি সেল যোগ করুন গ্রুপ করা বার চার্ট তৈরি করতে:
```python
new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar')
plt.ylabel("Pumpkin Price")
```
- 
+ 
+
+ এটা একটি বেশি ব্যবহারযোগ্য ডেটা ভিজ্যুয়ালাইজেশন! এটা দেখাচ্ছে যে পাম্পকিনের সর্বোচ্চ মূল্য সেপ্টেম্বর ও অক্টোবর মাসে হয়। এটা আপনার প্রত্যাশার সাথে সঙ্গতিপূর্ণ? কেন বা কেন নয়?
+
+## অনুশীলন - Seaborn দিয়ে পরীক্ষা করুন
+
+Matplotlib শক্তিশালী, কিন্তু একটি পলিশড চার্ট তৈরির জন্য অনেক কোড লাগতে পারে। [Seaborn](https://seaborn.pydata.org/) হল Matplotlib এর উপরে নির্মিত একটি লাইব্রেরি যা স্ট্যাটিস্টিক্যাল ডেটা ভিজ্যুয়ালাইজেশনের জন্য ডিজাইন করা হয়েছে। এটি সরাসরি Pandas ডেটাফ্রেমের সঙ্গে কাজ করে, আকর্ষণীয় ডিফল্ট স্টাইল দেয়, এবং অনেক কম কোডে তথ্যবহুল প্লট তৈরির সুযোগ দেয়। কারণ Seaborn Matplotlib অবজেক্ট ফেরত দেয়, তাই আপনি Matplotlib সম্পর্কে যা জানেন সবকিছু ব্যবহার করে ফলাফল আরও সূক্ষ্ম করতে পারবেন।
+
+> যদি আপনার কাছে ইতিমধ্যেই Seaborn ইনস্টল না থাকে, তাহলে `pip install seaborn` দিয়ে ইনস্টল করুন।
+
+১. নোটবুকের উপরে অন্য ইম্পোর্টের নিচে Seaborn ইম্পোর্ট করুন। এটি সাধারণত `sns` নামে ইম্পোর্ট করা হয়:
+
+ ```python
+ import seaborn as sns
+ ```
+
+### সম্পর্ক প্রদর্শনের জন্য স্ক্যাটার প্লট
+
+মডেল তৈরি করার আগে ডেটা অনুসন্ধানের একটি বড় অংশ হল ভেরিয়েবলগুলোর মধ্যে _সম্পর্ক_ খোঁজা। একটি [স্ক্যাটার প্লট](https://en.wikipedia.org/wiki/Scatter_plot) এর সাহায্যে এটা সবচেয়ে ভাল জানা যায়: যদি বিন্দুগুলো একটি রেখার সাথেই চলে, তাহলে দুই ভেরিয়েবল হয়ত সম্পর্কিত, যা লিনিয়ার রিগ্রেশন মডেলের জন্য ভালো সংকেত।
+
+১. আগের মতো মূল্য থেকে মাসের স্ক্যাটার প্লট আবার তৈরি করুন, এবার Seaborn-এর [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) (রিলেশনাল প্লট) ব্যবহার করে, যা সরাসরি আপনার ডেটাফ্রেম কলামের সাথে কাজ করে:
+
+ ```python
+ sns.relplot(x="Price", y="Month", data=new_pumpkins)
+ ```
+
+ 
+
+ লক্ষ্য করুন কিভাবে আপনি কলামের নাম এবং ডেটাফ্রেম পাঠান, আর Seaborn অক্ষের লেবেল দেখভাল করে।
+
+২. `kind="line"` পাস করে আপনি একটি লাইন প্লটে পরিবর্তন করতে পারেন। Seaborn রেখার আশপাশে কনফিডেন্স ইন্টারভ্যালও দেখায়:
+
+ ```python
+ sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins)
+ ```
+
+ 
+
+ এই ডেটাটি যথেষ্ট শব্দপূর্ণ, তাই লাইন প্লট সবচেয়ে স্পষ্ট নয় — তবে এটি দেখায় আপনি কিভাবে সহজেই Seaborn-এ চার্ট ধরনের পরিবর্তন করতে পারেন।
+
+### বারের চিত্রগুলি ডিস্ট্রিবিউশন দেখানোর জন্য
+
+
+আগে আপনি ম্যানুয়ালি ডেটাগুলো গ্রুপ করে Matplotlib দিয়ে একটি বার চার্ট তৈরি করেছিলেন। Seaborn-এর [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) (বর্গীকরণমূলক প্লট) আপনার জন্য গ্রুপিং এবং সংক্ষেপণ করতে পারে। ডিফল্ট হিসেবে `kind="bar"` প্রতিটি ক্যাটেগরির গড় দেখায় একটি কালো লাইনের সাথে যা বিশ্বাসযোগ্যতার ইন্টারভ্যাল নির্দেশ করে।
+
+১. মাসিক গড় মূল্যের একটি বার চার্ট তৈরি করুন:
+
+ ```python
+ sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar")
+ ```
+
+ 
+
+ এটি Matplotlib দিয়ে যা আপনি দেখেছেন তা নিশ্চিত করে — দাম সেপ্টেম্বর এবং অক্টোবরের আশেপাশে শীর্ষে থাকে — তবে Seaborn এছাড়াও ভিজ্যুয়ালাইজ করে প্রতিটি মাসের মধ্যে দাম কতটা _পরিবর্তিত_ হয়।
+
+### হিটম্যাপ দিয়ে সম্পর্ক দেখানো
+
+স্ক্যাটার প্লট একই সময়ে দুইটি ভেরিয়েবল তুলনা করে। যখন আপনার একাধিক সংখ্যাসূচক কলাম থাকে, একটি [হিটম্যাপ](https://en.wikipedia.org/wiki/Heat_map) সব কলামের প্রতিটি জোড়ার সম্পর্কের শক্তি একবারে দেখায়। এটা একটি সাধারণ উপায় কোন ফিচারগুলো সবচেয়ে বেশি সম্পর্কিত তা চিহ্নিত করার আগে (এবং একই ধরনের চার্ট পরে শ্রেণিবিন্যাসে বিভ্রান্তি ম্যাট্রিক্স প্রদর্শনের জন্য ব্যবহার করা হয়) মডেলে কি ফিড দিতে হবে তা সিদ্ধান্ত নেওয়ার জন্য।
+
+১. Pandas দিয়ে একটি সম্পর্ক ম্যাট্রিক্স তৈরি করুন, তারপর Seaborn-এর [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html) দিয়ে এটি আঁকুন। `annot=True` অপশন প্রতিটি সেলে সম্পর্কের মানগুলো প্রিন্ট করে:
+
+ ```python
+ correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()
+ sns.heatmap(correlations, annot=True, cmap="coolwarm")
+ ```
+
+ 
+
+ মানগুলো `1` (অথবা `-1`) এর কাছে থাকলে বোঝায় কলামগুলো শক্তভাবে _রৈখিক_ সম্পর্কযুক্ত। লক্ষ্য করুন `Low Price` এবং `High Price` প্রায় পরিপূর্ণভাবে সম্পর্কিত। অপরদিকে `Month` মূল্যগুলোর সাথে শুধুমাত্র দুর্বল রৈখিক সম্পর্ক দেখায় — যদিও উপরোক্ত বার চার্টে সেপ্টেম্বর ও অক্টোবর মাসে স্পষ্ট ঋতুবৈশিষ্ট্য দেখা গেছে। এটা একটি গুরুত্বপূর্ণ শিক্ষা: সম্পর্ক সহগ শুধু _সোজা-সারি_ সম্পর্ক মাপতে পারে, তাই ঋতুসংক্রান্ত বা অন্য কোনো ধরণের অ-রৈখিক প্যাটার্ন মিস করতে পারে। ✅ কেন একটি হিটম্যাপ *এবং* বার চার্টের মতো চার্ট দুটোই দেখে সিদ্ধান্ত নেওয়া উচিত কোন কলামগুলো ব্যবহার করবেন?
+
+### Matplotlib নাকি Seaborn?
+
+উভয় লাইব্রেরি জানা উচিত:
+
+- **Matplotlib** প্রতিটি উপাদানের উপর সূক্ষ্ম নিয়ন্ত্রণ দেয় এবং প্রায় সব অন্যান্য পাইথন প্লটিং লাইব্রেরির ভিত্তি।
+- **Seaborn** উচ্চ-স্তরের ফাংশন এবং আকর্ষণীয় ডিফল্ট প্রদান করে পরিসংখ্যানমূলক চার্টের জন্য, সরাসরি ডেটাফ্রেমের সাথে কাজ করে, এবং প্রায়শই অনুসন্ধানী ডেটা বিশ্লেষণের জন্য দ্রুত।
- এটি একটি আরও কার্যকর ডেটা ভিজ্যুয়ালাইজেশন! এটি মনে হয় যে কুমড়ার সর্বোচ্চ দাম সেপ্টেম্বর এবং অক্টোবর মাসে ঘটে। এটি কি আপনার প্রত্যাশার সাথে মিলে যায়? কেন বা কেন নয়?
+একটি সাধারণ কাজের প্রবাহ হলো দ্রুত ডেটা পর্যবেক্ষণের জন্য Seaborn ব্যবহার করা, তারপর বিস্তারিত কাস্টমাইজেশনের জন্য Matplotlib-এ নেমে যাওয়া।
---
## 🚀চ্যালেঞ্জ
-Matplotlib যে বিভিন্ন ধরনের ভিজ্যুয়ালাইজেশন অফার করে তা অন্বেষণ করুন। কোন ধরনের ভিজ্যুয়ালাইজেশন রিগ্রেশন সমস্যার জন্য সবচেয়ে উপযুক্ত?
+Matplotlib এবং Seaborn যে ধরনের ভিজ্যুয়ালাইজেশন দিয়ে থাকে তা অনুসন্ধান করুন। কোন ধরনের ভিজ্যুয়ালাইজেশন রিগ্রেশন সমস্যার জন্য সবচেয়ে উপযোগী?
-## [পোস্ট-লেকচার কুইজ](https://ff-quizzes.netlify.app/en/ml/)
+## [পরবর্তী লেকচার কুইজ](https://ff-quizzes.netlify.app/en/ml/)
-## পর্যালোচনা এবং স্ব-অধ্যয়ন
+## পর্যালোচনা ও স্ব-মূল্যায়ন
-ডেটা ভিজ্যুয়ালাইজ করার বিভিন্ন উপায় দেখুন। উপলব্ধ বিভিন্ন লাইব্রেরির একটি তালিকা তৈরি করুন এবং নোট করুন কোনটি নির্দিষ্ট ধরনের কাজের জন্য সবচেয়ে ভালো, যেমন 2D ভিজ্যুয়ালাইজেশন বনাম 3D ভিজ্যুয়ালাইজেশন। আপনি কী আবিষ্কার করেন?
+ডেটা ভিজ্যুয়ালাইজ করার বিভিন্ন উপায় দেখুন। বিভিন্ন লাইব্রেরির একটি তালিকা তৈরি করুন এবং কোনগুলো নির্দিষ্ট ধরনের কাজের জন্য সবচেয়ে ভালো, যেমন ২ডি ভিজ্যুয়ালাইজেশন বনাম ৩ডি ভিজ্যুয়ালাইজেশন। আপনি কি আবিষ্কার করেছেন?
## অ্যাসাইনমেন্ট
-[ভিজ্যুয়ালাইজেশন অন্বেষণ](assignment.md)
+[ভিজ্যুয়ালাইজেশন অনুসন্ধান](assignment.md)
---
-**অস্বীকৃতি**:
-এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিক অনুবাদ প্রদানের চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা দায়বদ্ধ থাকব না।
\ No newline at end of file
+
+**অস্বীকৃতি**:
+এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনূদিত হয়েছে। যদিও আমরা শুদ্ধতার জন্য চেষ্টা করি, অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল নথিটি তার স্বভাষায় কর্তৃত্বপূর্ণ উৎস হিসেবে বিবেচিত হওয়া উচিত। গুরুত্বপূর্ণ তথ্যের জন্য পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদের ব্যবহারে প্রয়োজনীয় ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়বদ্ধ নই।
+
\ No newline at end of file
diff --git a/translations/bn/2-Regression/2-Data/solution/notebook.ipynb b/translations/bn/2-Regression/2-Data/solution/notebook.ipynb
index 00ca6a736..03b94f572 100644
--- a/translations/bn/2-Regression/2-Data/solution/notebook.ipynb
+++ b/translations/bn/2-Regression/2-Data/solution/notebook.ipynb
@@ -4,7 +4,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## কুমড়ার জন্য লিনিয়ার রিগ্রেশন - পাঠ ২\n"
+ "## কুমড়োর জন্য রৈখিক রিগ্রেশন - পাঠ ২\n"
]
},
{
@@ -222,6 +222,7 @@
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
"pumpkins = pd.read_csv('../../data/US-pumpkins.csv')\n",
"\n",
"pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]\n",
@@ -385,18 +386,78 @@
"plt.ylabel(\"Pumpkin Price\")"
]
},
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Seaborn দিয়ে ভিজুয়ালাইজেশন\n",
+ "\n",
+ "[Seaborn](https://seaborn.pydata.org/) Matplotlib এর উপরে নির্মিত এবং সরাসরি ডেটাফ্রেমের সাথে কাজ করে, খুব কম কোডের মাধ্যমে আকর্ষণীয় পরিসংখ্যান প্লট তৈরি করা দ্রুত এবং সহজ করে তোলে।\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### সম্পর্ক প্রদর্শনের জন্য স্ক্যাটার প্লট\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", kind=\"line\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### বন্টন দেখাতে বারের চার্ট\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.catplot(x=\"Month\", y=\"Price\", data=new_pumpkins, kind=\"bar\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### সম্পর্ক দেখানোর জন্য হিটম্যাপ\n"
+ ]
+ },
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
- "source": []
+ "source": [
+ "correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()\n",
+ "sns.heatmap(correlations, annot=True, cmap=\"coolwarm\")"
+ ]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "\n---\n\n**অস্বীকৃতি**: \nএই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিকতার জন্য চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা দায়বদ্ধ থাকব না।\n"
+ "---\n\n\n**অস্বীকৃতি**:\nএই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনূদিত হয়েছে। যদিও আমরা শুদ্ধতার জন্য চেষ্টা করি, অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল নথিটি তার স্বভাষায় কর্তৃত্বপূর্ণ উৎস হিসেবে বিবেচিত হওয়া উচিত। গুরুত্বপূর্ণ তথ্যের জন্য পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদের ব্যবহারে প্রয়োজনীয় ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়বদ্ধ নই।\n\n"
]
}
],
@@ -426,13 +487,7 @@
"hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d"
}
},
- "orig_nbformat": 2,
- "coopTranslator": {
- "original_hash": "95726f0b8283628d5356a4f8eb8b4b76",
- "translation_date": "2025-08-29T23:10:48+00:00",
- "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
- "language_code": "bn"
- }
+ "orig_nbformat": 2
},
"nbformat": 4,
"nbformat_minor": 2
diff --git a/translations/bn/8-Reinforcement/1-QLearning/README.md b/translations/bn/8-Reinforcement/1-QLearning/README.md
index 8eb11955c..239fb890e 100644
--- a/translations/bn/8-Reinforcement/1-QLearning/README.md
+++ b/translations/bn/8-Reinforcement/1-QLearning/README.md
@@ -1,47 +1,47 @@
# রিইনফোর্সমেন্ট লার্নিং এবং কিউ-লার্নিং এর পরিচিতি
-
-> স্কেচনোট: [Tomomi Imura](https://www.twitter.com/girlie_mac)
+
+> স্কেচনোট করেছেন [Tomomi Imura](https://www.twitter.com/girlie_mac)
-রিইনফোর্সমেন্ট লার্নিং তিনটি গুরুত্বপূর্ণ ধারণার উপর ভিত্তি করে: এজেন্ট, কিছু স্টেট এবং প্রতিটি স্টেটের জন্য একটি অ্যাকশনের সেট। নির্দিষ্ট স্টেটে একটি অ্যাকশন সম্পাদন করে এজেন্ট একটি পুরস্কার পায়। আবার সুপার মারিও কম্পিউটার গেমটি কল্পনা করুন। আপনি মারিও, আপনি একটি গেম লেভেলে আছেন, একটি ক্লিফের কিনারায় দাঁড়িয়ে। আপনার উপরে একটি কয়েন রয়েছে। আপনি মারিও, একটি গেম লেভেলে, একটি নির্দিষ্ট অবস্থানে ... এটি আপনার স্টেট। ডানদিকে এক ধাপ এগিয়ে যাওয়া (একটি অ্যাকশন) আপনাকে কিনারা থেকে ফেলে দেবে, এবং এটি আপনাকে একটি নিম্ন সংখ্যাসূচক স্কোর দেবে। তবে, জাম্প বাটন চাপলে আপনি একটি পয়েন্ট পাবেন এবং আপনি জীবিত থাকবেন। এটি একটি ইতিবাচক ফলাফল এবং এটি আপনাকে একটি ইতিবাচক সংখ্যাসূচক স্কোর প্রদান করবে।
+রিইনফোর্সমেন্ট লার্নিং-এ তিনটি গুরুত্বপূর্ণ ধারণা রয়েছে: এজেন্ট, কিছু স্টেট, এবং প্রতি স্টেটে কিছু ক্রিয়া। নির্দিষ্ট স্টেটে একটি ক্রিয়া সম্পাদনের মাধ্যমে এজেন্টকে একটি পুরস্কার দেওয়া হয়। আবার কম্পিউটার গেম সুপার মারিও কল্পনা করুন। আপনি মারিও, আপনি একটি গেম লেভেলে, একটি ঝরনার পাশে দাঁড়িয়ে আছেন। আপনার উপর একটি কয়েন আছে। আপনি মারিও, একটি গেম লেভেলে, একটি নির্দিষ্ট স্থানে ... এটাই আপনার স্টেট। ডানদিকে এক ধাপ এগিয়ে যাওয়া (একটি ক্রিয়া) আপনাকে ঝরনার উপর দিয়ে নিয়ে যাবে, এবং আপনাকে একটি নিচু সংখ্যামূলক স্কোর দেবে। তবে, জাম্প বোতাম চাপলে আপনি একটি পয়েন্ট স্কোর করবেন এবং জীবিত থাকবেন। এটা একটি ইতিবাচক ফলাফল এবং এটা আপনাকে একটি ইতিবাচক সংখ্যাত্মক স্কোর প্রদান করবে।
-রিইনফোর্সমেন্ট লার্নিং এবং একটি সিমুলেটর (গেম) ব্যবহার করে, আপনি গেমটি খেলার পদ্ধতি শিখতে পারেন যাতে আপনি জীবিত থাকতে পারেন এবং যত বেশি পয়েন্ট সম্ভব অর্জন করতে পারেন।
+রিইনফোর্সমেন্ট লার্নিং এবং একটি সিমুলেটর (গেম) ব্যবহার করে, আপনি গেমটি কীভাবে খেলতে হয় তা শিখতে পারেন যাতে পুরস্কার সর্বাধিক হয়, যা হলো জীবিত থাকা এবং যতটা সম্ভব বেশি পয়েন্ট স্কোর করা।
[](https://www.youtube.com/watch?v=lDq_en8RNOo)
-> 🎥 উপরের ছবিতে ক্লিক করে Dmitry এর রিইনফোর্সমেন্ট লার্নিং আলোচনা শুনুন
+> 🎥 উপরের ছবিতে ক্লিক করে Dmitry কে রিইনফোর্সমেন্ট লার্নিং নিয়ে আলোচনা করতে শুনুন
## [পূর্ব-লেকচার কুইজ](https://ff-quizzes.netlify.app/en/ml/)
-## প্রয়োজনীয়তা এবং সেটআপ
+## পূর্বশর্ত এবং সেটআপ
-এই পাঠে, আমরা পাইথনে কিছু কোড নিয়ে পরীক্ষা করব। আপনি এই পাঠের জুপিটার নোটবুক কোডটি আপনার কম্পিউটারে বা ক্লাউডে কোথাও চালাতে সক্ষম হওয়া উচিত।
+এই পাঠে, আমরা পাইথনে কিছু কোড পরীক্ষা করব। আপনি এই পাঠের জুপিটার नोटবুক কোড চালাতে সক্ষম হওয়া উচিত, আপনার কম্পিউটারে অথবা ক্লাউডে কোথাও।
-আপনি [পাঠের নোটবুক](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) খুলতে পারেন এবং এই পাঠটি অনুসরণ করে তৈরি করতে পারেন।
+আপনি [পাঠের নোটবুক](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) খুলে এই পাঠের মাধ্যমে এগিয়ে যেতে পারেন।
-> **Note:** যদি আপনি ক্লাউড থেকে এই কোডটি খুলছেন, তবে আপনাকে [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) ফাইলটিও আনতে হবে, যা নোটবুক কোডে ব্যবহৃত হয়। এটি নোটবুকের একই ডিরেক্টরিতে যোগ করুন।
+> **দ্রষ্টব্য:** যদি আপনি কোডটি ক্লাউড থেকে খুলেন, তাহলে আপনাকে নোটবুক কোডে ব্যবহৃত [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) ফাইলটিও ডাউনলোড করতে হবে। এটি নোটবুকের একই ডিরেক্টরিতে যোগ করুন।
## পরিচিতি
-এই পাঠে, আমরা **[Peter and the Wolf](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)** এর জগৎ অন্বেষণ করব, যা একজন রাশিয়ান সুরকার [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev) এর একটি সঙ্গীতময় রূপকথার দ্বারা অনুপ্রাণিত। আমরা **রিইনফোর্সমেন্ট লার্নিং** ব্যবহার করব যাতে পিটার তার পরিবেশ অন্বেষণ করতে পারে, সুস্বাদু আপেল সংগ্রহ করতে পারে এবং নেকড়ের সাথে দেখা এড়াতে পারে।
+এই পাঠে, আমরা রুশ সুরকার [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev) দ্বারা অনুপ্রাণিত সঙ্গীত নাটক **[Peter and the Wolf](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)** এর জগৎ অন্বেষণ করব। আমরা **রিইনফোর্সমেন্ট লার্নিং** ব্যবহার করব যাতে পিটার তার পরিবেশ অন্বেষণ করতে পারে, সুস্বাদু আপেল সংগ্রহ করতে পারে এবং উলের সাথে দেখা এড়াতে পারে।
-**রিইনফোর্সমেন্ট লার্নিং** (RL) একটি শেখার কৌশল যা আমাদের **এজেন্ট** এর **পরিবেশ**-এ একটি অপ্টিমাল আচরণ শেখার অনুমতি দেয় অনেক পরীক্ষা চালিয়ে। এই পরিবেশে একটি এজেন্টের কিছু **লক্ষ্য** থাকা উচিত, যা একটি **পুরস্কার ফাংশন** দ্বারা সংজ্ঞায়িত।
+**রিইনফোর্সমেন্ট লার্নিং** (RL) একটি শেখার কৌশল যা আমাদের একটি **এজেন্ট**-এর জন্য একটি অর্থপূর্ণ আচরণ শেখার সুযোগ দেয় কিছু **পরিবেশে** বহু পরীক্ষা চালিয়ে। এই পরিবেশে একজন এজেন্টের একটি **লক্ষ্য** থাকা উচিত, যা একটি **পুরস্কার ফাংশন** দ্বারা সংজ্ঞায়িত।
## পরিবেশ
-সরলতার জন্য, পিটারের জগৎকে `width` x `height` আকারের একটি বর্গাকার বোর্ড হিসাবে বিবেচনা করা যাক, যেমন:
+সহজতার জন্য, আমরা ধরব পিটার এর জগত একটি `width` x `height` মাপের স্কুয়ার বোর্ড, এভাবে:
-
+
এই বোর্ডের প্রতিটি সেল হতে পারে:
-* **মাটি**, যেখানে পিটার এবং অন্যান্য প্রাণীরা হাঁটতে পারে।
-* **পানি**, যেখানে হাঁটা সম্ভব নয়।
-* একটি **গাছ** বা **ঘাস**, যেখানে আপনি বিশ্রাম নিতে পারেন।
-* একটি **আপেল**, যা পিটার খুঁজে পেতে পছন্দ করবে নিজেকে খাওয়ানোর জন্য।
-* একটি **নেকড়ে**, যা বিপজ্জনক এবং এড়ানো উচিত।
+* **মাটি**, যেখানে পিটার এবং অন্য প্রাণীরা হাঁটতে পারে।
+* **পানি**, যেখানে আপনি অবশ্যই হাঁটতে পারবেন না।
+* একটি **গাছ** অথবা **ঘাস**, যা বিশ্রামের স্থান।
+* একটি **আপেল**, যা পিটার খুঁজে পেলে নিজেকে খাওয়াতে পছন্দ করবে।
+* একটি **বাঘ**, যা বিপজ্জনক এবং এড়ানো উচিত।
-একটি পৃথক পাইথন মডিউল, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), এই পরিবেশের সাথে কাজ করার কোড ধারণ করে। যেহেতু এই কোডটি আমাদের ধারণাগুলি বোঝার জন্য গুরুত্বপূর্ণ নয়, আমরা মডিউলটি আমদানি করব এবং নমুনা বোর্ড তৈরি করতে এটি ব্যবহার করব (কোড ব্লক 1):
+একটি পৃথক পাইথন মডিউল আছে, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), যা এই পরিবেশের সাথে কাজ করার কোড ধারণ করে। কারণ এই কোড আমাদের ধারণাগুলি বোঝার জন্য গুরুত্বপূর্ণ নয়, আমরা মডিউলটি ইমপোর্ট করে নমুনা বোর্ড তৈরি করব (কোড ব্লক ১):
```python
from rlboard import *
@@ -52,63 +52,63 @@ m.randomize(seed=13)
m.plot()
```
-এই কোডটি পরিবেশের একটি ছবি মুদ্রণ করবে যা উপরের ছবির মতো।
+এই কোডটি উপরের পরিবেশের একটি ছবি প্রিন্ট করবে।
-## অ্যাকশন এবং পলিসি
+## ক্রিয়া এবং নীতি
-আমাদের উদাহরণে, পিটারের লক্ষ্য হবে একটি আপেল খুঁজে পাওয়া, নেকড়ে এবং অন্যান্য বাধা এড়ানো। এটি করতে, সে মূলত হাঁটতে পারে যতক্ষণ না সে একটি আপেল খুঁজে পায়।
+আমাদের উদাহরণে, পিটার এর লক্ষ্য একটি আপেল খুঁজে পাওয়া, তবে উল এবং অন্যান্য বাধা এড়ানো। এজন্য সে মূলত হাঁটতে পারে যতক্ষণ না সে আপেল পায়।
-তাই, যেকোনো অবস্থানে, সে নিম্নলিখিত অ্যাকশনগুলির মধ্যে একটি বেছে নিতে পারে: উপরে, নিচে, বামে এবং ডানে।
+তাই, যেকোন স্থানে সে নিচের যেকোন একটি ক্রিয়া বেছে নিতে পারে: উপরে, নিচে, বামে, এবং ডানে।
-আমরা এই অ্যাকশনগুলিকে একটি ডিকশনারি হিসাবে সংজ্ঞায়িত করব এবং সেগুলিকে সংশ্লিষ্ট কোঅর্ডিনেট পরিবর্তনের জোড়ার সাথে ম্যাপ করব। উদাহরণস্বরূপ, ডানে (`R`) যাওয়া একটি জোড়া `(1,0)` এর সাথে সম্পর্কিত হবে। (কোড ব্লক 2):
+আমরা এই ক্রিয়াগুলোকে একটি অভিধান হিসেবে সংজ্ঞায়িত করব, এবং তাদের সংশ্লিষ্ট স্থানাঙ্ক পরিবর্তনের সাথে যুক্ত করব। উদাহরণস্বরূপ, ডানদিকে যাওয়া (`R`) হবে একটি জোড়া `(1,0)`। (কোড ব্লক ২):
```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. নিচের কোড দিয়ে র্যান্ডম ওয়াক বাস্তবায়ন করুন:
+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
+ n = 0 # ধাপের সংখ্যা
+ # প্রাথমিক অবস্থান সেট করুন
if start_position:
m.human = start_position
else:
m.random_start()
while True:
if m.at() == Board.Cell.apple:
- return n # success!
+ return n # সাফল্য!
if m.at() in [Board.Cell.wolf, Board.Cell.water]:
- return -1 # eaten by wolf or drowned
+ return -1 # নেকড়ে খেয়ে ফেলেছে অথবা ডুবে গেছে
while True:
a = actions[policy(m)]
new_pos = m.move_pos(m.human,a)
if m.is_valid(new_pos) and m.at(new_pos)!=Board.Cell.water:
- m.move(a) # do the actual move
+ m.move(a) # আসল স্থানান্তর করুন
break
n+=1
walk(m,random_policy)
```
- `walk` এর কলটি সংশ্লিষ্ট পথের দৈর্ঘ্য ফেরত দেবে, যা এক রান থেকে অন্য রানে পরিবর্তিত হতে পারে।
+ `walk` কলের ফলাফল হবে সংশ্লিষ্ট পথের দৈর্ঘ্য, যা একবারের রান থেকে অন্য রানের মধ্যে পরিবর্তিত হতে পারে।
-1. একাধিকবার (ধরা যাক, 100 বার) ওয়াক পরীক্ষা চালান এবং ফলাফল পরিসংখ্যান মুদ্রণ করুন (কোড ব্লক 4):
+1. হেঁটার পরীক্ষা অনেকবার চালান (ধরা যাক, ১০০ বার), এবং ফলাফল পরিসংখ্যান প্রিন্ট করুন (কোড ব্লক ৪):
```python
def print_statistics(policy):
@@ -125,17 +125,17 @@ action_idx = { a : i for i,a in enumerate(actions.keys()) }
print_statistics(random_policy)
```
- লক্ষ্য করুন যে পথের গড় দৈর্ঘ্য প্রায় 30-40 ধাপ, যা বেশ দীর্ঘ, কারণ আপেলের নিকটতম দূরত্বের গড় প্রায় 5-6 ধাপ।
+ লক্ষ্য করুন যে পথের গড় দৈর্ঘ্য প্রায় ৩০-৪০ ধাপ, যা বেশ বড়, কারণ নিকটস্থ আপেলের গড় দূরত্ব প্রায় ৫-৬ ধাপ।
- আপনি পিটারের র্যান্ডম ওয়াক চলাকালীন গতিবিধি দেখতে পারেন:
+ আপনি পিটারের চলাফেরার র্যান্ডম ওয়াক চলাকালীন দেখতে পারেন:
- 
+ 
## পুরস্কার ফাংশন
-আমাদের পলিসিকে আরও বুদ্ধিমান করতে, আমাদের বুঝতে হবে কোন পদক্ষেপগুলি অন্যদের তুলনায় "ভালো"। এটি করতে, আমাদের লক্ষ্য সংজ্ঞায়িত করতে হবে।
+আমাদের নীতিকে আরো বুদ্ধিমান করতে, আমাদের বুঝতে হবে কোন চলাচল "অন্যের চেয়ে ভালো"। এ জন্য, আমাদের লক্ষ্য সংজ্ঞায়িত করতে হবে।
-লক্ষ্যটি একটি **পুরস্কার ফাংশন** এর মাধ্যমে সংজ্ঞায়িত করা যেতে পারে, যা প্রতিটি স্টেটের জন্য কিছু স্কোর মান ফেরত দেবে। সংখ্যাটি যত বেশি হবে, পুরস্কার ফাংশন তত ভালো। (কোড ব্লক 5)
+লক্ষ্যকে একটি **পুরস্কার ফাংশন** এর মাধ্যমে সংজ্ঞায়িত করা যায়, যা প্রতি স্টেটে একটি স্কোর মান প্রদান করবে। মান যত বেশি, পুরস্কার ফাংশন তত ভাল। (কোড ব্লক ৫)
```python
move_reward = -0.1
@@ -154,39 +154,115 @@ def reward(m,pos=None):
return move_reward
```
-পুরস্কার ফাংশন সম্পর্কে একটি আকর্ষণীয় বিষয় হল যে বেশিরভাগ ক্ষেত্রে, *আমরা শুধুমাত্র গেমের শেষে একটি উল্লেখযোগ্য পুরস্কার পাই*। এর মানে হল যে আমাদের অ্যালগরিদমটি "ভালো" পদক্ষেপগুলি মনে রাখতে হবে যা শেষ পর্যন্ত একটি ইতিবাচক পুরস্কার দেয় এবং তাদের গুরুত্ব বাড়াতে হবে। একইভাবে, সমস্ত পদক্ষেপ যা খারাপ ফলাফলের দিকে নিয়ে যায় তা নিরুৎসাহিত করা উচিত।
+পুরস্কার ফাংশন নিয়ে একটি আকর্ষণীয় দিক হলো অধিকাংশ ক্ষেত্রে, *আমাদেরকে গেমের শেষে একটি গুরুত্বপূর্ণ পুরস্কার দেওয়া হয়*। এর মানে হলো আমাদের অ্যালগরিদমকে "ভালো" ধাপ মনে রাখতে হবে যা গেম শেষে ইতিবাচক পুরস্কারে নিয়ে যায়, এবং তাদের গুরুত্ব বাড়াতে হবে। একইভাবে, সব ভুল ধাপকে হ্রাস করতে হবে।
## কিউ-লার্নিং
-আমরা এখানে যে অ্যালগরিদমটি আলোচনা করব তাকে **কিউ-লার্নিং** বলা হয়। এই অ্যালগরিদমে, পলিসি একটি ফাংশন (বা একটি ডেটা স্ট্রাকচার) দ্বারা সংজ্ঞায়িত করা হয়, যাকে **কিউ-টেবিল** বলা হয়। এটি একটি প্রদত্ত স্টেটে প্রতিটি অ্যাকশনের "ভালোত্ব" রেকর্ড করে।
+আমরা যে অ্যালগরিদমটি আলোচনা করব তা হল **কিউ-লার্নিং**। এই অ্যালগরিদমে, নীতি একটি ফাংশন (বা ডেটা স্ট্রাকচার) দ্বারা সংজ্ঞায়িত যা **কিউ-টেবিল** নামে পরিচিত। এটি প্রতিটি স্টেটে প্রতিটি ক্রিয়ার "মধ্যস্থতা" রেকর্ড করে।
-এটি একটি কিউ-টেবিল বলা হয় কারণ এটি প্রায়শই একটি টেবিল বা মাল্টি-ডাইমেনশনাল অ্যারে হিসাবে উপস্থাপন করা সুবিধাজনক। যেহেতু আমাদের বোর্ডের মাত্রা `width` x `height`, আমরা কিউ-টেবিলকে একটি numpy অ্যারে ব্যবহার করে উপস্থাপন করতে পারি যার আকার `width` x `height` x `len(actions)`: (কোড ব্লক 6)
+এটা কিউ-টেবিল বলা হয় কারণ এটি প্রায়শই একটি টেবিল বা বহু-মাত্রিক অ্যারে হিসেবে উপস্থাপন করা সুবিধাজনক। আমাদের বোর্ডের মাত্রা `width` x `height` হওয়ায়, আমরা একটি numpy অ্যারে ব্যবহার করে কিউ-টেবিল উপস্থাপন করতে পারি যার আকার `width` x `height` x `len(actions)`: (কোড ব্লক ৬)
```python
Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions)
```
-লক্ষ্য করুন যে আমরা কিউ-টেবিলের সমস্ত মান সমান মান দিয়ে আরম্ভ করি, আমাদের ক্ষেত্রে - 0.25। এটি "র্যান্ডম ওয়াক" পলিসির সাথে সম্পর্কিত, কারণ প্রতিটি স্টেটে সমস্ত পদক্ষেপ সমানভাবে ভালো। আমরা কিউ-টেবিলকে বোর্ডে চিত্রিত করতে `plot` ফাংশনে পাস করতে পারি: `m.plot(Q)`।
+লক্ষ্য করুন, আমরা কিউ-টেবিলের সব মান একরকম দিয়ে প্রাথমিক করিনি, আমাদের ক্ষেত্রে - 0.25। এটা "র্যান্ডম ওয়াক" নীতির সমতুল্য, কারণ প্রতিটি স্টেটে সব ক্রিয়াই সমান ভাল। আমরা `plot` ফাংশনে কিউ-টেবিল পাস করব যাতে বোর্ডে টেবিল ভিজ্যুয়ালাইজ করা যায়: `m.plot(Q)`.
-
+
-প্রতিটি সেলের কেন্দ্রে একটি "তীর" রয়েছে যা গতির পছন্দসই দিক নির্দেশ করে। যেহেতু সমস্ত দিক সমান, একটি বিন্দু প্রদর্শিত হয়।
+প্রতিটি সেলের কেন্দ্রবিন্দুতে একটি "তীর" থাকে যা পছন্দসই চলাচলের দিক নির্দেশ করে। যেহেতু সব দিক সমান, একটি বিন্দু প্রদর্শিত হয়।
-এখন আমাদের সিমুলেশন চালাতে হবে, আমাদের পরিবেশ অন্বেষণ করতে হবে এবং কিউ-টেবিল মানগুলির একটি ভালো বন্টন শিখতে হবে, যা আমাদের আপেলটি খুঁজে পেতে অনেক দ্রুত সাহায্য করবে।
+এখন আমাদের সিমুলেশন চালাতে হবে, পরিবেশ অন্বেষণ করতে হবে, এবং কিউ-টেবিল মানের একটি উন্নত বন্টন শিখতে হবে, যা আপেলের পথে দ্রুত পৌঁছানোর সুযোগ দেবে।
-## কিউ-লার্নিং এর মূল: বেলম্যান সমীকরণ
+## কিউ-লার্নিং এর সারমর্ম: বেলম্যান সমীকরণ
-একবার আমরা চলতে শুরু করলে, প্রতিটি অ্যাকশনের একটি সংশ্লিষ্ট পুরস্কার থাকবে, অর্থাৎ আমরা তাত্ত্বিকভাবে সর্বোচ্চ তাৎক্ষণিক পুরস্কারের উপর ভিত্তি করে পরবর্তী অ্যাকশনটি নির্বাচন করতে পারি। তবে, বেশিরভাগ স্টেটে, পদক্ষেপটি আমাদের আপেল খুঁজে পাওয়ার লক্ষ্য অর্জন করবে না, এবং তাই আমরা তাৎক্ষণিকভাবে সিদ্ধান্ত নিতে পারি না কোন দিকটি ভালো।
+যখন আমরা চলতে শুরু করব, প্রতিটি ক্রিয়ার জন্য একটি সংশ্লিষ্ট পুরস্কার থাকবে, অর্থাৎ আমরা তাত্ক্ষণিক পুরস্কারের সর্বোচ্চ ভিত্তিতে পরবর্তী ক্রিয়া নির্বাচন করতে পারব। তবে বেশিরভাগ স্টেটে, চলাচল আমাদের লক্ষ্য — আপেল পৌঁছানো — অর্জন করবে না, তাই আমরা সাথে সাথেই সিদ্ধান্ত নিতে পারব না কোন দিক ভালো।
-> মনে রাখবেন যে তাৎক্ষণিক ফলাফলটি গুরুত্বপূর্ণ নয়, বরং চূড়ান্ত ফলাফলটি গুরুত্বপূর্ণ, যা আমরা সিমুলেশনের শেষে অর্জন করব।
+> মনে রাখবেন তাত্ক্ষণিক ফলাফল নয় যে গুরুত্বপূর্ণ, বরং চূড়ান্ত ফলাফল যা আমরা সিমুলেশন শেষে পাবো।
-এই বিলম্বিত পুরস্কারটি বিবেচনা করার জন্য, আমাদের **[ডাইনামিক প্রোগ্রামিং](https://en.wikipedia.org/wiki/Dynamic_programming)** এর নীতিগুলি ব্যবহার করতে হবে, যা আমাদের সমস্যাটি পুনরাবৃত্তিমূলকভাবে চিন্তা করতে দেয়।
+এই বিলম্বিত পুরস্কার বিবেচনার জন্য, আমাদের **[ডাইনামিক প্রোগ্রামিং](https://en.wikipedia.org/wiki/Dynamic_programming)** এর নীতিমালা ব্যবহার করতে হবে, যা আমাদের সমস্যাটিকে রিকার্সিভ ভাবতে দেয়।
-ধরা যাক আমরা এখন স্টেট *s* এ আছি, এবং আমরা পরবর্তী স্টেট *s'* এ যেতে চাই। এটি করে, আমরা তাৎক্ষণিক পুরস্কার *r(s,a)* পাব, যা পুরস্কার ফাংশন দ্বারা সংজ্ঞায়িত, এবং কিছু ভবিষ্যৎ পুরস্কার। যদি আমরা ধরে নিই যে আমাদের কিউ-টেবিল প্রতিটি অ্যাকশনের "আকর্ষণীয়তা" সঠিকভাবে প্রতিফলিত করে, তাহলে স্টেট *s'* এ আমরা একটি অ্যাকশন *a'* বেছে নেব যা *Q(s',a')* এর সর্বাধিক মানের সাথে সম্পর্কিত। তাই, স্টেট *s* এ আমরা যে সর্বোত্তম সম্ভাব্য ভবিষ্যৎ পুরস্কার পেতে পারি তা হবে `max`
+ধরুন আমরা এখন স্টেট *s* এ আছি, এবং পরবর্তী স্টেট *s'* তে যেতে চাই। তখন আমরা তাত্ক্ষণিক পুরস্কার *r(s,a)* পাব, যা পুরস্কার ফাংশন দ্বারা নির্ধারিত, এবং ভবিষ্যতের কিছু পুরস্কার পাব। যদি আমরা ধরি আমাদের কিউ-টেবিল প্রতিটি ক্রিয়ার আকর্ষণীয়তা সঠিকভাবে প্রতিফলিত করে, তাহলে স্টেট *s'* এ আমরা এমন একটি ক্রিয়া *a* বাছাই করব যার মান সর্বোচ্চ *Q(s',a')*। অতএব, স্টেট *s* এ সর্বোত্তম সম্ভব ভবিষ্যত পুরস্কার হবে `max`a'*Q(s',a')* (এই সর্বোচ্চ সকল সম্ভাব্য ক্রিয়া *a'* এর উপর গণনা করা হবে স্টেট *s'* এ)।
-## নীতিমালা পরীক্ষা করা
+এটি দেয় **বেলম্যান ফর্মুলা** কিউ-টেবিল এর মান গণনার জন্য স্টেট *s*, ক্রিয়া *a* দেওয়া হলে:
-Q-Table-এ প্রতিটি অবস্থায় প্রতিটি ক্রিয়ার "আকর্ষণীয়তা" তালিকাভুক্ত করা থাকে, তাই আমাদের জগতে দক্ষ নেভিগেশনের জন্য এটি ব্যবহার করা বেশ সহজ। সহজতম ক্ষেত্রে, আমরা Q-Table-এর সর্বোচ্চ মানের সাথে সম্পর্কিত ক্রিয়াটি নির্বাচন করতে পারি: (কোড ব্লক 9)
+
+
+এখানে γ হল তথাকথিত **ডিসকাউন্ট ফ্যাক্টর** যা নির্ধারণ করে আপনি বর্তমান পুরস্কারের তুলনায় ভবিষ্যৎ পুরস্কারের কতটা গুরুত্ব দেবেন।
+
+## শেখার অ্যালগরিদম
+
+উপরের সমীকরণ অনুযায়ী, আমরা এখন আমাদের শেখার অ্যালগরিদমের ছদ্ম-কোড লিখতে পারি:
+
+* সব স্টেট এবং ক্রিয়ার জন্য সমান সংখ্যায় Q-টেবিল Q শুরু করুন
+* শেখার হার α ← 1 সেট করুন
+* বহুবার সিমুলেশন পুনরাবৃত্তি করুন
+ 1. এলোমেলো অবস্থান থেকে শুরু করুন
+ 1. পুনরাবৃত্তি করুন
+ 1. স্টেট *s* এ একটি ক্রিয়া *a* নির্বাচন করুন
+ 2. নতুন স্টেট *s'* এ যেতে ক্রিয়া সম্পাদন করুন
+ 3. গেমের শেষ শর্ত পাওয়া গেলে, অথবা মোট পুরস্কার খুব কম হলে সিমুলেশন বন্ধ করুন
+ 4. নতুন স্টেটে পুরস্কার *r* গুণিত করুন
+ 5. বেলম্যান সমীকরণ অনুযায়ী Q ফাংশন আপডেট করুন: *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ maxa'Q(s',a'))*
+ 6. *s* ← *s'*
+ 7. মোট পুরস্কার আপডেট করুন এবং α হ্রাস করুন।
+
+## এক্সপ্লয়েট বনাম এক্সপ্লোর
+
+উপরের অ্যালগরিদমে, আমরা বিস্তারিত উল্লেখ করিনি কীভাবে ২.১ ধাপে ক্রিয়া নির্বাচন করা উচিত। যদি আপনি এলোমেলোভাবে ক্রিয়া নির্বাচন করেন, তাহলে আপনি এলোমেলোভাবে পরিবেশ অন্বেষণ করবেন, এবং বেশীরভাগ সময় মরতে পারেন এবং এমন এলাকা অন্বেষণ করবেন যেখানে আপনি সাধারণত যাবেন না। একটি বিকল্প হলো ইতিমধ্যেই পরিচিত কিউ-টেবিল মান ব্যবহার করে সর্বোত্তম ক্রিয়া বেছে নেওয়া (যার মান বেশি) স্টেট *s* এ। এই পদ্ধতি পরিবেশের অন্য স্টেটগুলি অন্বেষণ না করায় হয়তো আমরা সেরা সমাধান না পেতে পারি।
+
+তাই, সবচেয়ে ভালো পদ্ধতি হল অন্বেষণ এবং শোষণের মধ্যে ভারসাম্য রাখা। এটি করা যায় স্টেট *s* এ এমনভাবে ক্রিয়া নির্বাচন করে যার সম্ভাবনা কিউ-টেবিল মানের সমানুপাতিক। শুরুতে, যখন সব মান সমান, এটি এলোমেলো নির্বাচনের মতো হবে, কিন্তু পরিবেশ সম্পর্কে আমরা যেমনই শিখব, তেমনই আমরা সম্ভবত সর্বোত্তম পথ অনুসরণ করব তবে মাঝে মাঝে এজেন্টকে অন্বেষণ করতে দেব।
+
+## পাইথন বাস্তবায়ন
+
+এখন আমরা শেখার অ্যালগরিদম বাস্তবায়ন করতে প্রস্তুত। এর আগে, আমাদের একটি ফাংশন দরকার যা কিউ-টেবিলের যেকোন সংখ্যাকে সংশ্লিষ্ট ক্রিয়াগুলোর সম্ভাবনার ভেক্টরে রূপান্তর করবে।
+
+1. একটি ফাংশন `probs()` তৈরি করুন:
+
+ ```python
+ def probs(v,eps=1e-4):
+ v = v-v.min()+eps
+ v = v/v.sum()
+ return v
+ ```
+
+ আমরা মূল ভেক্টরে কিছু `eps` যোগ করি যাতে প্রাথমিক অবস্থায়, যখন সব উপাদান সমান, ভাগফল 0 হওয়া এড়ানো যায়।
+
+এই শেখার অ্যালগরিদম ৫০০০ পরীক্ষার মাধ্যমে চালান, যাকে **ইপোক** বলা হয়: (কোড ব্লক ৮)
+```python
+ for epoch in range(5000):
+
+ # প্রাথমিক পয়েন্ট নির্বাচন করুন
+ m.random_start()
+
+ # যাত্রা শুরু করুন
+ n=0
+ cum_reward = 0
+ while True:
+ x,y = m.human
+ v = probs(Q[x,y])
+ a = random.choices(list(actions),weights=v)[0]
+ dpos = actions[a]
+ m.move(dpos,check_correctness=False) # আমরা খেলোয়াড়কে বোর্ডের বাইরে চলার অনুমতি দিই, যা পর্ব শেষ করে দেয়
+ r = reward(m)
+ cum_reward += r
+ if r==end_reward or cum_reward < -1000:
+ lpath.append(n)
+ break
+ alpha = np.exp(-n / 10e5)
+ gamma = 0.5
+ ai = action_idx[a]
+ Q[x,y,ai] = (1 - alpha) * Q[x,y,ai] + alpha * (r + gamma * Q[x+dpos[0], y+dpos[1]].max())
+ n+=1
+```
+
+অ্যালগরিদম চালানোর পর, কিউ-টেবিল এমন মান দিয়ে আপডেট হবে যা প্রতিটি ধাপে বিভিন্ন ক্রিয়ার আকর্ষণীয়তা সংজ্ঞায়িত করে। আমরা প্রতিটি সেলে একটি ভেক্টর প্লট করে কিউ-টেবিল ভিজ্যুয়ালাইজ করতে পারি যা পছন্দসই চলাচলের দিক নির্দেশ করবে। সহজতার জন্য, আমরা তীরের পরিবর্তে একটি ছোট বৃত্ত আঁকব।
+
+
+
+## নীতি যাচাই
+
+যেহেতু কিউ-টেবিল প্রতিটি স্টেটে প্রতিটি ক্রিয়ার "আকর্ষণীয়তা" তালিকাভুক্ত করে, তাই এটি ব্যবহার করে আমাদের পৃথিবীতে কার্যকর নেভিগেশন সংজ্ঞায়িত করা সহজ। সবচেয়ে সাধারণ ক্ষেত্রে, আমরা সর্বোচ্চ কিউ-টেবিল মানের সাথে ক্রিয়া নির্বাচন করতে পারি: (কোড ব্লক ৯)
```python
def qpolicy_strict(m):
@@ -198,17 +274,18 @@ def qpolicy_strict(m):
walk(m,qpolicy_strict)
```
-> উপরের কোডটি কয়েকবার চেষ্টা করলে, আপনি লক্ষ্য করতে পারেন যে এটি কখনও কখনও "হ্যাং" করে, এবং আপনাকে নোটবুকে STOP বোতাম চাপ দিয়ে এটি বন্ধ করতে হয়। এটি ঘটে কারণ এমন পরিস্থিতি হতে পারে যেখানে দুটি অবস্থান একে অপরকে সর্বোত্তম Q-Value-এর দিক থেকে নির্দেশ করে, যার ফলে এজেন্টটি সেই অবস্থানগুলির মধ্যে অনির্দিষ্টভাবে চলতে থাকে।
+
+> উপরোক্ত কোডটি কয়েকবার চেষ্টা করলে, আপনি লক্ষ্য করতে পারেন যে কখনও কখনও এটি "হ্যাং" হয়ে যায়, এবং আপনাকে নোটবুকে STOP বোতামটি চাপতে হয় এটি থামানোর জন্য। এটি ঘটে কারণ এমন পরিস্থিতি হতে পারে যেখানে দুটি অবস্থা পরস্পরের প্রতি অপ্টিমাল Q-মানের দিক থেকে "ইঙ্গিত" করে, এমনক্ষেত্রে এজেন্ট সেই অবস্থাগুলোর মধ্যে অনির্দিষ্টকালের জন্য চলাচল করতে থাকে।
## 🚀চ্যালেঞ্জ
-> **কাজ ১:** `walk` ফাংশনটি সংশোধন করুন যাতে পথের সর্বাধিক দৈর্ঘ্য একটি নির্দিষ্ট সংখ্যক ধাপে (যেমন, ১০০) সীমাবদ্ধ থাকে এবং উপরের কোডটি মাঝে মাঝে এই মানটি ফেরত দেয়।
+> **টাস্ক ১:** `walk` ফাংশনটি পরিবর্তন করুন যাতে পথের সর্বোচ্চ দৈর্ঘ্য নির্দিষ্ট সংখ্যক ধাপ দ্বারা সীমাবদ্ধ থাকে (ধরা যাক, ১০০), এবং উপরের কোডটি মাঝে মাঝে এই মানটি ফেরত দেয় তা পর্যবেক্ষণ করুন।
-> **কাজ ২:** `walk` ফাংশনটি সংশোধন করুন যাতে এটি পূর্বে যেখানে ছিল সেই জায়গাগুলিতে ফিরে না যায়। এটি `walk`-কে লুপিং থেকে রোধ করবে, তবে এজেন্টটি এখনও এমন একটি স্থানে "ফাঁদে" পড়তে পারে যেখান থেকে এটি পালাতে অক্ষম।
+> **টাস্ক ২:** `walk` ফাংশনটি পরিবর্তন করুন যাতে এটি পূর্বে যেসব স্থানে গিয়েছিল সেগুলোতে ফিরে না যায়। এটি `walk` এর লুপিং প্রতিরোধ করবে, তবে, এজেন্ট তখনও এমন একটি জায়গায় ফসকে থাকতে পারে যেখানে থেকে সে পালাতে পারবে না।
## নেভিগেশন
-একটি ভালো নেভিগেশন নীতিমালা হবে সেই নীতিমালা যা আমরা প্রশিক্ষণের সময় ব্যবহার করেছি, যা শোষণ এবং অনুসন্ধানের সংমিশ্রণ। এই নীতিমালায়, আমরা Q-Table-এ মানগুলির আনুপাতিক সম্ভাবনার ভিত্তিতে প্রতিটি ক্রিয়া নির্বাচন করব। এই কৌশলটি এখনও এজেন্টকে পূর্বে অন্বেষণ করা অবস্থানে ফিরে যেতে পারে, তবে, নিচের কোড থেকে আপনি দেখতে পারেন, এটি কাঙ্ক্ষিত অবস্থানে খুব ছোট গড় পথের দৈর্ঘ্য প্রদান করে (মনে রাখুন `print_statistics` ১০০ বার সিমুলেশন চালায়): (কোড ব্লক 10)
+একটি উন্নত নেভিগেশন নীতি হবে যে নীতিটি আমরা প্রশিক্ষণের সময় ব্যবহার করেছি, যা এক্সপ্লোইটেশন এবং এক্সপ্লোরেশনের সমন্বয়। এই নীতিতে, আমরা Q-টেবিলের মান অনুযায়ী নির্দিষ্ট সম্ভাবনার সাথে প্রতিটি কর্ম নির্বাচন করব। এই কৌশলটি এখনও এজেন্টকে এমন একটি অবস্থানে ফিরিয়ে নিয়ে যেতে পারে যা সে পূর্বে অন্বেষণ করেছে, কিন্তু, নিচের কোড থেকে দেখা যাচ্ছে, এটি কাঙ্ক্ষিত অবস্থানে খুব ছোট গড় পথের ফলাফল দেয় (মনে রাখবেন `print_statistics` ১০০ বার সিমুলেশন চালায়): (কোড ব্লক ১০)
```python
def qpolicy(m):
@@ -220,28 +297,32 @@ def qpolicy(m):
print_statistics(qpolicy)
```
-এই কোডটি চালানোর পরে, আপনি আগের তুলনায় অনেক ছোট গড় পথের দৈর্ঘ্য পাবেন, যা ৩-৬ এর মধ্যে থাকবে।
+এই কোড চালানোর পর, আপনার আগের তুলনায় অনেক ছোট গড় পথ দৈর্ঘ্য পাওয়া উচিত, যে পরিসর ৩-৬ এর মধ্যে থাকবে।
+
+## শেখার প্রক্রিয়া তদন্ত
-## শেখার প্রক্রিয়া তদন্ত করা
+যেমন আমরা উল্লেখ করেছি, শেখার প্রক্রিয়াটি হচ্ছে সমস্যা ক্ষেত্রের গঠন সম্পর্কে প্রাপ্ত জ্ঞানের অনুসন্ধান এবং ব্যবহার এর মধ্যে একটি সুষম অবস্থা। আমরা দেখেছি শেখার ফলাফল (এজেন্টকে একটি ছোট পথ খুঁজে পেতে সাহায্য করার ক্ষমতা) উন্নত হয়েছে, তবে শিক্ষণ প্রক্রিয়ার সময় গড় পথের দৈর্ঘ্য কীভাবে পরিবর্তিত হয় তাও পর্যবেক্ষণ করা আকর্ষণীয়:
-যেমন আমরা উল্লেখ করেছি, শেখার প্রক্রিয়া হলো অনুসন্ধান এবং সমস্যার স্থান সম্পর্কে অর্জিত জ্ঞান অন্বেষণের মধ্যে একটি ভারসাম্য। আমরা দেখেছি যে শেখার ফলাফল (এজেন্টকে লক্ষ্য অর্জনের জন্য একটি ছোট পথ খুঁজে পেতে সাহায্য করার ক্ষমতা) উন্নত হয়েছে, তবে শেখার প্রক্রিয়ার সময় গড় পথের দৈর্ঘ্য কীভাবে আচরণ করে তা পর্যবেক্ষণ করাও আকর্ষণীয়:
+
-## শেখার সারসংক্ষেপ:
+শিক্ষাগুলো সংক্ষেপে হল:
-- **গড় পথের দৈর্ঘ্য বৃদ্ধি পায়**। প্রথমে, গড় পথের দৈর্ঘ্য বৃদ্ধি পায়। এর কারণ হতে পারে যে পরিবেশ সম্পর্কে কিছুই না জানার কারণে আমরা খারাপ অবস্থায়, যেমন জল বা নেকড়ের ফাঁদে পড়ে যাই। যখন আমরা আরও শিখি এবং এই জ্ঞান ব্যবহার করতে শুরু করি, তখন আমরা পরিবেশটি দীর্ঘ সময় ধরে অন্বেষণ করতে পারি, তবে এখনও আপেলগুলির অবস্থান সম্পর্কে খুব ভালোভাবে জানি না।
+- **গড় পথের দৈর্ঘ্য বৃদ্ধি পায়**। প্রথম দিকে দেখা যাচ্ছে যে গড় পথের দৈর্ঘ্য বৃদ্ধি পায়। সম্ভবত এর কারণ হল যখন পরিবেশ সম্পর্কে আমরা কিছুই জানি না, তখন আমরা খারাপ অবস্থায়, জলের মধ্যে বা বাঘের কাছে আটকে যেতে পারি। যতই আমরা শিখি এবং এই জ্ঞান ব্যবহার শুরু করি, আমরা পরিবেশকে দীর্ঘ সময় ধরে অনুসন্ধান করতে পারি, তবে আপেল কোথায় আছে সেটা এখনও আমরা খুব ভাল জানি না।
-- **পথের দৈর্ঘ্য কমে যায়, যত বেশি শিখি**। একবার আমরা যথেষ্ট শিখে গেলে, এজেন্টের জন্য লক্ষ্য অর্জন করা সহজ হয়ে যায়, এবং পথের দৈর্ঘ্য কমতে শুরু করে। তবে, আমরা এখনও অনুসন্ধানের জন্য উন্মুক্ত থাকি, তাই আমরা প্রায়ই সেরা পথ থেকে সরে যাই এবং নতুন বিকল্পগুলি অন্বেষণ করি, যা পথকে আদর্শের চেয়ে দীর্ঘ করে তোলে।
+- **শেখার সাথে সাথে পথের দৈর্ঘ্য কমে**। একবার আমরা যথেষ্ট শিখে গেলে, এজেন্টের জন্য লক্ষ্য অর্জন করা সহজ হয়ে উঠে, এবং পথের দৈর্ঘ্য কমতে শুরু করে। তবে আমরা এখনো অনুসন্ধান চালিয়ে যাচ্ছি, তাই আমরা প্রায়ই সেরা পথে থেকে সরে গিয়ে নতুন বিকল্প পরীক্ষা করি, ফলে পথটি অপ্টিমালের চেয়ে দীর্ঘ হয়।
-- **দৈর্ঘ্য হঠাৎ বৃদ্ধি পায়**। আমরা এই গ্রাফে যা লক্ষ্য করি তা হলো যে কোনো এক সময়ে দৈর্ঘ্য হঠাৎ বৃদ্ধি পায়। এটি প্রক্রিয়ার স্টোকাস্টিক প্রকৃতি নির্দেশ করে, এবং যে কোনো সময় আমরা Q-Table-এর গুণফলগুলি নতুন মান দিয়ে ওভাররাইট করে "বিগড়ে" দিতে পারি। এটি আদর্শভাবে শেখার হার কমিয়ে (যেমন, প্রশিক্ষণের শেষের দিকে, আমরা শুধুমাত্র Q-Table মানগুলি একটি ছোট মান দ্বারা সামঞ্জস্য করি) কমানো উচিত।
+- **দৈর্ঘ্য আকস্মিকভাবে বৃদ্ধি পায়**। এই গ্রাফে আমরা আরও দেখতে পাই যে কোথাও কোথাও দৈর্ঘ্য হঠাৎ করে বেড়ে গেছে। এটি প্রক্রিয়াটির সম্ভাব্য বৈশিষ্ট্যকে নির্দেশ করে, এবং যে আমরা কখনও কখনও Q-টেবিলের সহগ গুলো নতুন মান দিয়ে ওভাররাইট করে "বিরূপ" করতে পারি। এটি কমানোর জন্য সাধারণত শেখার হার হ্রাস করা হয় (উদাহরণস্বরূপ, প্রশিক্ষণের শেষ দিকে আমরা শুধু ছোট মান দিয়ে Q-টেবিল মানগুলি সামঞ্জস্য করি)।
-সামগ্রিকভাবে, এটি মনে রাখা গুরুত্বপূর্ণ যে শেখার প্রক্রিয়ার সাফল্য এবং গুণমান উল্লেখযোগ্যভাবে প্যারামিটারগুলির উপর নির্ভর করে, যেমন শেখার হার, শেখার হার হ্রাস, এবং ডিসকাউন্ট ফ্যাক্টর। এগুলিকে প্রায়ই **হাইপারপ্যারামিটার** বলা হয়, যাতে **প্যারামিটার** থেকে আলাদা করা যায়, যা আমরা প্রশিক্ষণের সময় অপ্টিমাইজ করি (যেমন, Q-Table গুণফল)। সেরা হাইপারপ্যারামিটার মানগুলি খুঁজে বের করার প্রক্রিয়াকে **হাইপারপ্যারামিটার অপ্টিমাইজেশন** বলা হয়, এবং এটি একটি আলাদা বিষয়ের যোগ্য।
+মোটের উপর, শেখার প্রক্রিয়ার সফলতা এবং গুণমান উল্লেখযোগ্যভাবে নির্ভর করে প্যারামিটারগুলোর উপর, যেমন শেখার হার, শেখার হারের অবনতি, এবং ছাড়ের কারক। এগুলিকে প্রায়ই **হাইপারপ্যারামিটার** বলা হয়, যা **প্যারামিটার** থেকে পৃথক যেগুলোকে আমরা প্রশিক্ষণের সময় অপ্টিমাইজ করি (উদাঃ Q-টেবিলের সহগ)। সেরা হাইপারপ্যারামিটার মানগুলো খোঁজার প্রক্রিয়াটিকে **হাইপারপ্যারামিটার অপ্টিমাইজেশন** বলা হয়, এবং এটি একটি স্বতন্ত্র বিষয়।
## [পোস্ট-লেকচার কুইজ](https://ff-quizzes.netlify.app/en/ml/)
## অ্যাসাইনমেন্ট
-[একটি আরও বাস্তবসম্মত জগৎ](assignment.md)
+[একটি আরো বাস্তবসম্মত বিশ্ব](assignment.md)
---
-**অস্বীকৃতি**:
-এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসাধ্য সঠিকতার জন্য চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা দায়বদ্ধ থাকব না।
\ No newline at end of file
+
+**অস্বীকৃতি**:
+এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনূদিত হয়েছে। যদিও আমরা শুদ্ধতার জন্য চেষ্টা করি, অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল নথিটি তার স্বভাষায় কর্তৃত্বপূর্ণ উৎস হিসেবে বিবেচিত হওয়া উচিত। গুরুত্বপূর্ণ তথ্যের জন্য পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদের ব্যবহারে প্রয়োজনীয় ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়বদ্ধ নই।
+
\ No newline at end of file
diff --git a/translations/bn/8-Reinforcement/2-Gym/README.md b/translations/bn/8-Reinforcement/2-Gym/README.md
index 1e1ca43f2..c00e85b1f 100644
--- a/translations/bn/8-Reinforcement/2-Gym/README.md
+++ b/translations/bn/8-Reinforcement/2-Gym/README.md
@@ -1,14 +1,34 @@
-## প্রয়োজনীয়তা
+# কার্টপোল স্কেটিং
-এই পাঠে আমরা **OpenAI Gym** নামক একটি লাইব্রেরি ব্যবহার করব বিভিন্ন **পরিবেশ** সিমুলেট করার জন্য। আপনি যদি এই পাঠের কোড স্থানীয়ভাবে (যেমন Visual Studio Code থেকে) চালান, তাহলে সিমুলেশনটি একটি নতুন উইন্ডোতে খুলবে। অনলাইনে কোড চালানোর সময়, আপনাকে কোডে কিছু পরিবর্তন করতে হতে পারে, যেমনটি [এখানে](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7) বর্ণনা করা হয়েছে।
+আমরা যা সমস্যা আগের পাঠে সমাধান করেছিলাম তা হয়তো একটি খেলনা সমস্যা মনে হতে পারে, বাস্তব জীবনের পরিস্থিতিতে খুব একটা প্রযোজ্য নয়। কিন্তু তা নয়, কারণ অনেক বাস্তব জগতের সমস্যা এই পরিস্থিতির সাথে মিল আছে - যেমন দাবা বা গো খেলা। এগুলো একই রকম কারণ আমাদেরও একটি বোর্ড এবং নির্ধারিত নিয়ম আছে এবং একটি **বিচ্ছিন্ন অবস্থা**।
+
+## [পাঠ পূর্ববর্তী কুইজ](https://ff-quizzes.netlify.app/en/ml/)
+
+## পরিচিতি
+
+এই পাঠে আমরা Q-লার্নিংয়ের একই নীতিগুলো একটি **অবিচ্ছিন্ন অবস্থা** বিশিষ্ট সমস্যায় প্রয়োগ করব, অর্থাৎ এমন একটি অবস্থা যা এক বা একাধিক বাস্তব সংখ্যার দ্বারা নির্ধারিত। আমরা নিম্নলিখিত সমস্যার সাথে যুক্ত হব:
+
+> **সমস্যা**: যদি পিটার নেকড়ে থেকে পালাতে চায়, তাকে দ্রুত গতিতে চলতে জানতে হবে। আমরা দেখব পিটার কীভাবে স্কেট শিখতে পারে, বিশেষত, কীভাবে ভারসাম্য বজায় রাখতে পারে, Q-লার্নিং ব্যবহার করে।
+
+
+
+> পিটার এবং তার বন্ধুরা নেকড়ে থেকে পালানোর জন্য সৃজনশীল হচ্ছে! ছবি: [জেন লুপার](https://twitter.com/jenlooper)
+
+আমরা ভারসাম্য বজায় রাখার একটি সরলীকৃত সংস্করণ ব্যবহার করব, যা **কার্টপোল** সমস্যা নামে পরিচিত। কার্টপোল জগতে, আমাদের একটি অনুভূমিক স্লাইডার আছে যা বাঁয়ে বা ডানে সরতে পারে, এবং লক্ষ হল স্লাইডারের উপরে একটি উল্লম্ব খুঁটি ভারসাম্য বজায় রাখা।
+
+
+
+## পূর্ব-প্রয়োজনীয়তা
+
+এই পাঠে, আমরা **OpenAI Gym** নামে একটি লাইব্রেরি ব্যবহার করব বিভিন্ন **পরিবেশ** অনুকরণ করতে। আপনি এই পাঠের কোড স্থানীয়ভাবে (যেমন Visual Studio Code থেকে) চালাতে পারেন, যেটাতে সিমুলেশন একটি নতুন উইন্ডোতে খুলবে। অনলাইনে কোড চালানোর সময় কিছু সামঞ্জস্য প্রয়োজন হতে পারে, যেমন এখানে বর্ণিত [এখানে](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7)।
## OpenAI Gym
-পূর্ববর্তী পাঠে, খেলার নিয়ম এবং অবস্থান আমরা নিজেরাই সংজ্ঞায়িত `Board` ক্লাসের মাধ্যমে দিয়েছিলাম। এখানে আমরা একটি বিশেষ **সিমুলেশন পরিবেশ** ব্যবহার করব, যা ভারসাম্য রক্ষার জন্য পোলের পিছনের পদার্থবিদ্যা সিমুলেট করবে। রিইনফোর্সমেন্ট লার্নিং অ্যালগরিদম প্রশিক্ষণের জন্য সবচেয়ে জনপ্রিয় সিমুলেশন পরিবেশগুলির মধ্যে একটি হল [Gym](https://gym.openai.com/), যা [OpenAI](https://openai.com/) দ্বারা রক্ষণাবেক্ষণ করা হয়। এই Gym ব্যবহার করে আমরা বিভিন্ন **পরিবেশ** তৈরি করতে পারি, যেমন CartPole সিমুলেশন থেকে Atari গেমস।
+পূর্ববর্তী পাঠে, আমরা গেমের নিয়ম এবং অবস্থা নিজস্ব সংজ্ঞায়িত `Board` ক্লাস দ্বারা দিয়েছিলাম। এখানে আমরা একটি বিশেষ **সিমুলেশন পরিবেশ** ব্যবহার করব, যা ভারসাম্যপূর্ণ খুটির পিছনে ফিজিক্স অনুকরণ করবে। প্রশিক্ষণের জন্য সবচেয়ে জনপ্রিয় সিমুলেশন পরিবেশগুলোর মধ্যে একটি হল [Gym](https://gym.openai.com/), যা [OpenAI](https://openai.com/) দ্বারা রক্ষণাবেক্ষণ করা হয়। এই জিম ব্যবহার করে আমরা কার্টপোল সিমুলেশন থেকে অ্যাটারি গেম পর্যন্ত বিভিন্ন **পরিবেশ** তৈরি করতে পারি।
-> **Note**: OpenAI Gym থেকে অন্যান্য উপলব্ধ পরিবেশগুলি আপনি [এখানে](https://gym.openai.com/envs/#classic_control) দেখতে পারেন।
+> **দ্রষ্টব্য**: OpenAI Gym থেকে উপলব্ধ অন্যান্য পরিবেশগুলি আপনি দেখতে পারেন [এখানে](https://gym.openai.com/envs/#classic_control)।
-প্রথমে Gym ইনস্টল করুন এবং প্রয়োজনীয় লাইব্রেরিগুলি ইমপোর্ট করুন (কোড ব্লক 1):
+প্রথমে, চলুন জিম ইনস্টল করি এবং প্রয়োজনীয় লাইব্রেরিগুলো আমদানি করি (কোড ব্লক ১):
```python
import sys
@@ -20,15 +40,15 @@ import numpy as np
import random
```
-## অনুশীলন - একটি CartPole পরিবেশ ইনিশিয়ালাইজ করুন
+## অনুশীলন - একটি কার্টপোল পরিবেশ initialized করুন
-CartPole ভারসাম্য সমস্যার সাথে কাজ করতে, আমাদের সংশ্লিষ্ট পরিবেশ ইনিশিয়ালাইজ করতে হবে। প্রতিটি পরিবেশের সাথে যুক্ত থাকে:
+কার্টপোল ভারসাম্য সমস্যা নিয়ে কাজ করতে হলে আমাদের সংশ্লিষ্ট পরিবেশটি initialized করতে হবে। প্রতিটি পরিবেশ একটি নিম্নলিখিত গুণাবলীর সাথে যুক্ত:
-- **Observation space**, যা পরিবেশ থেকে প্রাপ্ত তথ্যের গঠন সংজ্ঞায়িত করে। CartPole সমস্যার ক্ষেত্রে, আমরা পোলের অবস্থান, গতি এবং অন্যান্য কিছু মান পাই।
+- **পর্যবেক্ষণ স্থান** যা পরিবেশ থেকে প্রাপ্ত তথ্যের গঠন নির্ধারণ করে। কার্টপোল সমস্যায় আমরা খুটির অবস্থান, গতি এবং কিছু অন্যান্য মান পেয়ে থাকি।
-- **Action space**, যা সম্ভাব্য ক্রিয়াগুলি সংজ্ঞায়িত করে। আমাদের ক্ষেত্রে Action space ডিসক্রিট, এবং দুটি ক্রিয়া নিয়ে গঠিত - **বাম** এবং **ডান**। (কোড ব্লক 2)
+- **ক্রিয়াকলাপ স্থান** যা সম্ভাব্য ক্রিয়াকলাপ নির্ধারণ করে। আমাদের ক্ষেত্রে, ক্রিয়াকলাপ স্থান বিভক্ত এবং দুটি ক্রিয়াকলাপ নিয়ে গঠিত - **বাঁয়ে** এবং **ডানে**। (কোড ব্লক ২)
-1. ইনিশিয়ালাইজ করতে, নিম্নলিখিত কোড টাইপ করুন:
+১. initialized করতে নিচের কোডটি টাইপ করুন:
```python
env = gym.make("CartPole-v1")
@@ -37,11 +57,11 @@ CartPole ভারসাম্য সমস্যার সাথে কাজ
print(env.action_space.sample())
```
-পরিবেশটি কীভাবে কাজ করে তা দেখতে, 100 ধাপের জন্য একটি ছোট সিমুলেশন চালান। প্রতিটি ধাপে, আমরা একটি ক্রিয়া প্রদান করি যা নেওয়া হবে - এই সিমুলেশনে আমরা `action_space` থেকে এলোমেলোভাবে একটি ক্রিয়া নির্বাচন করি।
+পরিবেশটি কিভাবে কাজ করছে তা দেখতে, আসুন ১০০ ধাপের একটি সংক্ষিপ্ত সিমুলেশন চালাই। প্রতিটি ধাপে, আমরা যে একটি ক্রিয়াকলাপ নেওয়ার কথা সেটি প্রদান করি - এই সিমুলেশনে আমরা শুধু এলোমেলো ভাবে একটি ক্রিয়াকলাপ `action_space` থেকে বেছে নিলে।
-1. নিচের কোডটি চালান এবং এটি কী ফলাফল দেয় তা দেখুন।
+১. নিচের কোডটি চালান এবং দেখুন এর ফলাফল কী হয়।
- ✅ মনে রাখবেন যে এই কোডটি স্থানীয় Python ইনস্টলেশনে চালানো পছন্দনীয়! (কোড ব্লক 3)
+ ✅ মনে রাখবেন, স্থানীয় পাইথন ইনস্টলেশনে এটি চালানোই সর্বোত্তম! (কোড ব্লক ৩)
```python
env.reset()
@@ -52,11 +72,11 @@ CartPole ভারসাম্য সমস্যার সাথে কাজ
env.close()
```
- আপনি এরকম একটি চিত্র দেখতে পাবেন:
+ আপনি কিছু এরকম ছবি দেখতে পাবেন:
- 
+ 
-1. সিমুলেশনের সময়, আমাদের সিদ্ধান্ত নিতে পর্যবেক্ষণগুলি পেতে হবে। প্রকৃতপক্ষে, `step` ফাংশন বর্তমান পর্যবেক্ষণ, একটি রিওয়ার্ড ফাংশন এবং `done` ফ্ল্যাগ প্রদান করে যা নির্দেশ করে যে সিমুলেশন চালিয়ে যাওয়া যুক্তিযুক্ত কিনা: (কোড ব্লক 4)
+১. সিমুলেশন চলাকালে, আমাদের পর্যবেক্ষণ পেতে হবে যাতে সিদ্ধান্ত নেওয়া যায় কীভাবে কাজ করতে হবে। আসলে, `step` ফাংশন বর্তমান পর্যবেক্ষণ, একটি পুরস্কার ফাংশন, এবং একটি ডন ফ্ল্যাগ (যা নির্দেশ করে সিমুলেশন চালিয়ে যাওয়া উচিত কিনা) প্রদান করে: (কোড ব্লক ৪)
```python
env.reset()
@@ -69,7 +89,7 @@ CartPole ভারসাম্য সমস্যার সাথে কাজ
env.close()
```
- আপনি নোটবুক আউটপুটে এরকম কিছু দেখতে পাবেন:
+ আপনি নতুনালে আউটপুটে কিছু এরকম দেখতে পাবেন:
```text
[ 0.03403272 -0.24301182 0.02669811 0.2895829 ] -> 1.0
@@ -82,43 +102,43 @@ CartPole ভারসাম্য সমস্যার সাথে কাজ
[ 0.17617249 0.35602306 -0.21873684 -0.90998894] -> 1.0
```
- সিমুলেশনের প্রতিটি ধাপে ফেরত দেওয়া পর্যবেক্ষণ ভেক্টরটি নিম্নলিখিত মানগুলি ধারণ করে:
+ প্রতিটি সিমুলেশনের ধাপে ফেরত দেওয়া পর্যবেক্ষণ ভেক্টরে নিম্নলিখিত মান থাকে:
- কার্টের অবস্থান
- কার্টের গতি
- - পোলের কোণ
- - পোলের ঘূর্ণন হার
+ - খুটির কোণ
+ - খুটির ঘূর্ণন হার
-1. এই সংখ্যাগুলির সর্বনিম্ন এবং সর্বাধিক মান পান: (কোড ব্লক 5)
+১. সেই সংখ্যাগুলোর সর্বনিম্ন এবং সর্বোচ্চ মান পান: (কোড ব্লক ৫)
```python
print(env.observation_space.low)
print(env.observation_space.high)
```
- আপনি লক্ষ্য করতে পারেন যে প্রতিটি সিমুলেশন ধাপে রিওয়ার্ড মান সর্বদা 1। এর কারণ আমাদের লক্ষ্য যতটা সম্ভব দীর্ঘ সময় ধরে টিকে থাকা, অর্থাৎ পোলটিকে একটি যুক্তিসঙ্গতভাবে উল্লম্ব অবস্থানে দীর্ঘ সময় ধরে রাখা।
+ আপনি লক্ষ্য করবেন প্রতিটি সিমুলেশন ধাপে পুরস্কার মান সর্বদা ১। কারণ আমাদের লক্ষ্য যত দিন সম্ভব বেঁচে থাকা, অর্থাৎ খুটিকে যথাযথ উল্লম্ব অবস্থায় দীর্ঘ সময় ধরে রাখা।
- ✅ প্রকৃতপক্ষে, CartPole সিমুলেশন সমাধান করা হয়েছে বলে বিবেচিত হয় যদি আমরা 100 ধারাবাহিক ট্রায়ালের উপর গড় রিওয়ার্ড 195 অর্জন করতে পারি।
+ ✅ আসলে, কার্টপোল সিমুলেশন সমাধান করা হয়েছে বলে গণ্য হয় যদি আমরা ১০০ ধারাবাহিক চেষ্টা জুড়ে গড় পুরস্কার ১৯৫ বা তার বেশি পাই।
-## অবস্থার ডিসক্রিটাইজেশন
+## অবস্থা বিচ্ছিন্নকরণ
-Q-Learning-এ, আমাদের একটি Q-Table তৈরি করতে হবে যা প্রতিটি অবস্থায় কী করতে হবে তা সংজ্ঞায়িত করে। এটি করতে, আমাদের অবস্থান **ডিসক্রিট** হতে হবে, আরও স্পষ্টভাবে, এটি একটি সীমিত সংখ্যক ডিসক্রিট মান ধারণ করতে হবে। তাই, আমাদের পর্যবেক্ষণগুলিকে **ডিসক্রিটাইজ** করতে হবে, তাদের একটি সীমিত সেটের সাথে মানচিত্র করতে হবে।
+Q-লার্নিং-এ, আমাদের একটি Q-টেবিল তৈরি করতে হবে যা প্রতিটি অবস্থায় কী করতে হবে তা নির্ধারণ করে। এটি করার জন্য, আমাদের অবস্থা **বিচ্ছিন্ন** হতে হবে, অর্থাৎ নির্দিষ্ট সংখ্যক বিচ্ছিন্ন মান থাকা উচিত। তাই আমাদের পর্যবেক্ষণ গুলোকে **বিচ্ছিন্নকরণ** করতে হবে, অর্থাৎ সেগুলোকে একটি সীমাবদ্ধ সংখ্যা অবস্থা বা স্টেটে রূপান্তর করতে হবে।
-এটি করার কয়েকটি উপায় রয়েছে:
+আমরা এটি করার কয়েকটি উপায় আছে:
-- **বিনে ভাগ করুন**। যদি আমরা একটি নির্দিষ্ট মানের পরিসর জানি, আমরা এই পরিসরটিকে একটি নির্দিষ্ট সংখ্যক **বিনে** ভাগ করতে পারি এবং তারপর মানটিকে সেই বিন নম্বর দ্বারা প্রতিস্থাপন করতে পারি যেখানে এটি অন্তর্ভুক্ত। এটি numpy [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html) পদ্ধতি ব্যবহার করে করা যেতে পারে। এই ক্ষেত্রে, আমরা সঠিকভাবে অবস্থার আকার জানব, কারণ এটি ডিজিটালাইজেশনের জন্য নির্বাচিত বিনের সংখ্যার উপর নির্ভর করবে।
+- **বিনে ভাগ করা**। যদি আমরা একটি নির্দিষ্ট মানের সীমা জানি, তাহলে আমরা সেই সীমাকে অনেকগুলো **বিন** এ ভাগ করতে পারি, এবং মানটিকে সেই বিন নম্বর দিয়ে প্রতিস্থাপন করতে পারি যেখানে তা পড়ে। এটি numpy এর [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html) পদ্ধতি ব্যবহার করে করা যায়। এই ক্ষেত্রে, আমরা অবস্থা আকার নির্দিষ্টভাবে জানব, কারণ তা নির্ভর করবে কতগুলো বিন ব্যবহার করেছি তার উপর।
+
+✅ আমরা লিনিয়ার ইন্টারপোলেশন ব্যবহার করে মানগুলোকে একটি সীমাবদ্ধ অন্তরালে (ধরি, -২০ থেকে ২০) নিয়ে যেতে পারি, এবং তারপর রাউন্ড করে পূর্ণসংখ্যায় রূপান্তর করতে পারি। এটি অবস্থা আকারে কম নিয়ন্ত্রণ দেয়, বিশেষ করে ইনপুট মানগুলোর সঠিক সীমা জানা না থাকলে। যেমন আমাদের ক্ষেত্রে ৪ মানের মধ্যে ২টির মানের উর্ধ্ব বা নিম্ন সীমা নির্ধারিত নয়, যার ফলে অবস্থা সংখ্যাই অসীম হতে পারে।
-✅ আমরা লিনিয়ার ইন্টারপোলেশন ব্যবহার করে মানগুলিকে একটি সীমিত পরিসরে (যেমন, -20 থেকে 20) আনতে পারি এবং তারপর সংখ্যাগুলিকে রাউন্ডিং করে পূর্ণসংখ্যায় রূপান্তর করতে পারি। এটি আমাদের অবস্থার আকারের উপর কিছুটা কম নিয়ন্ত্রণ দেয়, বিশেষত যদি আমরা ইনপুট মানগুলির সঠিক পরিসর না জানি। উদাহরণস্বরূপ, আমাদের ক্ষেত্রে 4টির মধ্যে 2টি মানের উপরের/নিচের সীমা নেই, যা সীমাহীন সংখ্যক অবস্থার ফলস্বরূপ হতে পারে।
+আমাদের উদাহরণে, আমরা দ্বিতীয় পদ্ধতিটি গ্রহণ করব। আপনি পরে লক্ষ্য করবেন, যেখানে উর্ধ্ব/নিম্ন সীমা নির্ধারিত নেই সেখানে মানগুলি বিরলভাবে সীমাবদ্ধটির বাইরে যায়, তাই চরম মানের অবস্থা খুব কমই হবে।
-আমাদের উদাহরণে, আমরা দ্বিতীয় পদ্ধতির সাথে যাব। আপনি পরে লক্ষ্য করতে পারেন, অজানা উপরের/নিচের সীমা থাকা সত্ত্বেও, এই মানগুলি খুব কমই নির্দিষ্ট সীমিত পরিসরের বাইরে মান নেয়, তাই চরম মান সহ অবস্থাগুলি খুব বিরল হবে।
-
-1. এখানে একটি ফাংশন রয়েছে যা আমাদের মডেল থেকে পর্যবেক্ষণ গ্রহণ করবে এবং 4টি পূর্ণসংখ্যার মানের একটি টুপল তৈরি করবে: (কোড ব্লক 6)
+১. এখানে একটি ফাংশন যা আমাদের মডেল থেকে পর্যবেক্ষণ নিয়ে ৪টি পূর্ণসংখ্যার টিউপল তৈরি করবে: (কোড ব্লক ৬)
```python
def discretize(x):
return tuple((x/np.array([0.25, 0.25, 0.01, 0.1])).astype(np.int))
```
-1. বিন ব্যবহার করে আরেকটি ডিসক্রিটাইজেশন পদ্ধতি অন্বেষণ করুন: (কোড ব্লক 7)
+১. অন্য একটি বিন-ভিত্তিক বিচ্ছিন্নকরণ পদ্ধতি পরীক্ষা করা যাক: (কোড ব্লক ৭)
```python
def create_bins(i,num):
@@ -126,17 +146,17 @@ Q-Learning-এ, আমাদের একটি Q-Table তৈরি করত
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
+ ints = [(-5,5),(-2,2),(-0.5,0.5),(-2,2)] # প্রতিটি প্যারামিটারের জন্য মানের অন্তরগুলো
+ nbins = [20,20,10,10] # প্রতিটি প্যারামিটারের জন্য বিনের সংখ্যা
bins = [create_bins(ints[i],nbins[i]) for i in range(4)]
def discretize_bins(x):
return tuple(np.digitize(x[i],bins[i]) for i in range(4))
```
-1. এখন একটি ছোট সিমুলেশন চালান এবং সেই ডিসক্রিট পরিবেশের মানগুলি পর্যবেক্ষণ করুন। `discretize` এবং `discretize_bins` উভয়ই চেষ্টা করুন এবং পার্থক্য আছে কিনা তা দেখুন।
+১. এখন একটি সংক্ষিপ্ত সিমুলেশন চালিয়ে ঐ বিচ্ছিন্ন পরিবেশের মান পর্যবেক্ষণ করি। আপনি চাইলে উভয় `discretize` ও `discretize_bins` চেষ্টা করতে পারেন এবং পার্থক্য দেখতে পারেন।
- ✅ `discretize_bins` বিন নম্বর ফেরত দেয়, যা 0-ভিত্তিক। তাই ইনপুট ভেরিয়েবলের মান 0-এর কাছাকাছি থাকলে এটি পরিসরের মাঝখান থেকে একটি সংখ্যা (10) ফেরত দেয়। `discretize`-এ, আমরা আউটপুট মানগুলির পরিসরের বিষয়ে চিন্তা করিনি, তাদের নেতিবাচক হতে দিয়েছি, তাই অবস্থার মানগুলি স্থানান্তরিত হয়নি এবং 0 মানে 0। (কোড ব্লক 8)
+ ✅ `discretize_bins` বিন নম্বর প্রদান করে, যা ০-ভিত্তিক। তাই ইনপুট ভেরিয়েবলের মান ০ এর আশেপাশে হলে এটি অন্তরের মাঝের নম্বর (১০) দেয়। `discretize` তে, আমরা আউটপুট মানের সীমার ব্যাপারে চিন্তিত ছিলাম না, তাই মান নেতিবাচকও হতে পারে, ফলে অবস্থা মান স্থানান্তর হয়নি এবং ০ এর মান ০ই।
```python
env.reset()
@@ -150,15 +170,15 @@ Q-Learning-এ, আমাদের একটি Q-Table তৈরি করত
env.close()
```
- ✅ পরিবেশটি কীভাবে কার্যকর হয় তা দেখতে `env.render` দিয়ে শুরু হওয়া লাইনটি আনকমেন্ট করুন। অন্যথায় আপনি এটি ব্যাকগ্রাউন্ডে কার্যকর করতে পারেন, যা দ্রুত। আমরা আমাদের Q-Learning প্রক্রিয়ার সময় এই "অদৃশ্য" কার্যকরকরণ ব্যবহার করব।
+ ✅ আপনি যদি দেখতে চান পরিবেশ কিভাবে কাজ করে, তাহলে `env.render` দিয়ে শুরু হওয়া লাইনের মন্তব্য তুলে দিন। না হলে আপনি এটিকে পেছনে চলতে দিবেন, যা দ্রুত হয়। আমরা Q-লার্নিং প্রক্রিয়ায় এই "অদৃশ্য" কার্যকরকরণ ব্যবহার করব।
-## Q-Table এর গঠন
+## Q-টেবিল কাঠামো
-পূর্ববর্তী পাঠে, অবস্থাটি 0 থেকে 8 পর্যন্ত সংখ্যার একটি সাধারণ জোড়া ছিল, এবং তাই এটি একটি numpy টেনসর দ্বারা Q-Table উপস্থাপন করা সুবিধাজনক ছিল যার আকৃতি ছিল 8x8x2। যদি আমরা বিন ডিসক্রিটাইজেশন ব্যবহার করি, আমাদের অবস্থান ভেক্টরের আকারও জানা যায়, তাই আমরা একই পদ্ধতি ব্যবহার করতে পারি এবং অবস্থানটিকে একটি অ্যারের আকার 20x20x10x10x2 দ্বারা উপস্থাপন করতে পারি (এখানে 2 হল Action space-এর মাত্রা, এবং প্রথম মাত্রাগুলি পর্যবেক্ষণ স্পেসে প্রতিটি প্যারামিটারের জন্য ব্যবহৃত বিনের সংখ্যার সাথে সম্পর্কিত)।
+পূর্ববর্তী পাঠে, অবস্থা ছিল সরল ০ থেকে ৮ পর্যন্ত জোড় সংখ্যার, তাই Q-টেবিল উপযুক্ত ছিল numpy টেনসর দ্বারা আকার ৮x৮x২ যেখানে ৮x৮ অবস্থা এবং ২ অ্যাকশনের সংখ্যা। বিন-ভিত্তিক বিচ্ছিন্নকরণ করলে অবস্থা ভেক্টরের আকারও জানা থাকবে, তাই আমরা একই পদ্ধতি ব্যবহার করতে পারি এবং অবস্থা উপস্থাপন করতে পারি একটি অ্যারেতে যার আকার ২০x২০x১০x১০x২ (এখানে ২ অ্যাকশন স্পেসের মাত্রা, এবং প্রথম মাত্রাগুলো বিনের সংখ্যা যা আমরা প্রতিটি পর্যবেক্ষণ প্যারামিটারের জন্য নির্বাচন করেছি)।
-তবে, কখনও কখনও পর্যবেক্ষণ স্পেসের সঠিক মাত্রা জানা যায় না। `discretize` ফাংশনের ক্ষেত্রে, আমরা কখনই নিশ্চিত হতে পারি না যে আমাদের অবস্থান নির্দিষ্ট সীমার মধ্যে থাকে, কারণ কিছু মূল মান সীমাবদ্ধ নয়। তাই, আমরা একটি সামান্য ভিন্ন পদ্ধতি ব্যবহার করব এবং Q-Table একটি ডিকশনারি দ্বারা উপস্থাপন করব।
+কিন্তু কখনো কখনো পর্যবেক্ষণ স্পেসের সঠিক মাত্রা জানা যায় না। `discretize` ফাংশনের ক্ষেত্রে, আমরা কখনো নিশ্চিত হতে পারি না আমাদের অবস্থা নির্দিষ্ট সীমার মধ্যে থাকবে, কারণ কিছু মানের কোন সীমা নেই। তাই আমরা সামান্য ভিন্ন পদ্ধতি ব্যবহার করব এবং Q-টেবিলকে একটি ডিকশনারি দ্বারা উপস্থাপন করব।
-1. *(state,action)* জোড়াকে ডিকশনারি কী হিসাবে ব্যবহার করুন, এবং মানটি Q-Table এন্ট্রি মানের সাথে সম্পর্কিত হবে। (কোড ব্লক 9)
+১. *(state, action)* জোড়াটিকে ডিকশনারির কী হিসেবে ব্যবহার করুন, এবং মান হবে সেই Q-টেবিলের এন্ট্রি মান। (কোড ব্লক ৯)
```python
Q = {}
@@ -168,38 +188,38 @@ Q-Learning-এ, আমাদের একটি Q-Table তৈরি করত
return [Q.get((state,a),0) for a in actions]
```
- এখানে আমরা একটি ফাংশন `qvalues()` সংজ্ঞায়িত করি, যা একটি প্রদত্ত অবস্থার জন্য Q-Table মানগুলির একটি তালিকা ফেরত দেয় যা সমস্ত সম্ভাব্য ক্রিয়াগুলির সাথে সম্পর্কিত। যদি এন্ট্রি Q-Table-এ উপস্থিত না থাকে, আমরা ডিফল্ট হিসাবে 0 ফেরত দেব।
+ এখানে আমরা একটি ফাংশন `qvalues()` সংজ্ঞায়িত করেছি, যা একটি নির্দিষ্ট অবস্থার জন্য সমস্ত সম্ভাব্য অ্যাকশনের Q-টেবিল মানের একটি তালিকা প্রদান করে। যদি Q-টেবিলে এন্ট্রি না থাকে, আমরা ডিফল্ট হিসেবে ০ ফেরত দেব।
-## আসুন Q-Learning শুরু করি
+## চলুন Q-লার্নিং শুরু করি
-এখন আমরা পিটারকে ভারসাম্য রক্ষা করতে শেখানোর জন্য প্রস্তুত!
+এখন আমরা পিটারকে ভারসাম্য শিখাতে প্রস্তুত!
-1. প্রথমে কিছু হাইপারপ্যারামিটার সেট করুন: (কোড ব্লক 10)
+১. প্রথমে, কিছু হাইপারপ্যারামিটার সেট করি: (কোড ব্লক ১০)
```python
- # hyperparameters
+ # হাইপারপ্যারামিটারসমূহ
alpha = 0.3
gamma = 0.9
epsilon = 0.90
```
- এখানে, `alpha` হল **learning rate**, যা সংজ্ঞায়িত করে যে প্রতিটি ধাপে Q-Table এর বর্তমান মানগুলি আমরা কতটা সমন্বয় করব। পূর্ববর্তী পাঠে আমরা 1 দিয়ে শুরু করেছি এবং প্রশিক্ষণের সময় `alpha`-কে কম মানগুলিতে কমিয়েছি। এই উদাহরণে আমরা এটি স্থির রাখব শুধুমাত্র সরলতার জন্য, এবং আপনি পরে `alpha` মানগুলি সামঞ্জস্য করার সাথে পরীক্ষা করতে পারেন।
+ এখানে, `alpha` হলো **লার্নিং রেট** যা প্রতিটি ধাপে Q-টেবিলের বর্তমান মান কতটুকু সামঞ্জস্য করতে হবে তা নির্ধারণ করে। পূর্ববর্তী পাঠে আমরা ১ দিয়ে শুরু করেছিলাম এবং প্রশিক্ষণের সময় ধীরে ধীরে `alpha` কমিয়েছিলাম। এই উদাহরণে, আমরা সহজতার জন্য এটিকে ধ্রুবক রাখব, এবং আপনি পরে `alpha` মান পরিবর্তন করে পরীক্ষা করতে পারেন।
- `gamma` হল **discount factor**, যা দেখায় যে আমরা বর্তমান রিওয়ার্ডের তুলনায় ভবিষ্যতের রিওয়ার্ডকে কতটা অগ্রাধিকার দেব।
+ `gamma` হলো **ডিসকাউন্ট ফ্যাক্টর** যা দেখায় ভবিষ্যতের পুরস্কার বর্তমান পুরস্কারের তুলনায় কতটা গুরুত্ব পাবে।
- `epsilon` হল **exploration/exploitation factor**, যা নির্ধারণ করে যে আমরা অনুসন্ধানকে শোষণের তুলনায় বেশি পছন্দ করব কিনা বা এর বিপরীত। আমাদের অ্যালগরিদমে, আমরা `epsilon` শতাংশ ক্ষেত্রে Q-Table মান অনুযায়ী পরবর্তী ক্রিয়া নির্বাচন করব, এবং বাকি সংখ্যক ক্ষেত্রে আমরা একটি এলোমেলো ক্রিয়া কার্যকর করব। এটি আমাদের অনুসন্ধান স্পেসের এমন এলাকাগুলি অন্বেষণ করতে দেবে যা আমরা আগে কখনও দেখিনি।
+ `epsilon` হলো **এক্সপ্লোরেশন/এক্সপ্লাইটেশন ফ্যাক্টর** যা নির্ধারণ করে আমরা অনুসন্ধান (explore) করব না শোষণ (exploit) করব। আমাদের অ্যালগরিদমে, `epsilon` শতাংশ সময় আমরা Q-টেবিল অনুসারে পরবর্তী অ্যাকশন নির্বাচন করব, আর বাকি সময় এলোমেলো অ্যাকশন চালাব। এটি আমাদের আগে কখনো না দেখা অনুসন্ধান অঞ্চলগুলি পরীক্ষা করার সুযোগ দেবে।
- ✅ ভারসাম্যের ক্ষেত্রে - এলোমেলো ক্রিয়া (অনুসন্ধান) নির্বাচন করা ভুল দিকে একটি এলোমেলো ধাক্কার মতো কাজ করবে, এবং পোলটি এই "ভুলগুলি" থেকে ভারসাম্য পুনরুদ্ধার করতে শিখতে হবে।
+ ✅ ভারসাম্যের ক্ষেত্রে - এলোমেলো পদক্ষেপ (exploration) হবে ভুল দিকের একটি হঠাৎ ধাক্কা, যেখান থেকে খুটিকে শেখা লাগবে কিভাবে ভারসাম্য পুনরুদ্ধার করতে হয়।
### অ্যালগরিদম উন্নত করুন
-আমরা পূর্ববর্তী পাঠ থেকে আমাদের অ্যালগরিদমে দুটি উন্নতি করতে পারি:
-
-- **গড় সামগ্রিক রিওয়ার্ড গণনা করুন**, একটি নির্দিষ্ট সংখ্যক সিমুলেশনের উপর। আমরা প্রতি 5000 পুনরাবৃত্তিতে আমাদের অগ্রগতি প্রিন্ট করব এবং আমরা সেই সময়ের মধ্যে আমাদের সামগ্রিক রিওয়ার্ড গড় করব। এর মানে হল যে যদি আমরা 195 পয়েন্টের বেশি পাই - আমরা সমস্যাটি সমাধান হয়েছে বলে বিবেচনা করতে পারি, এমনকি প্রয়োজনীয় মানের চেয়েও বেশি মানের সাথে।
+আমরা পূর্ববর্তী পাঠের থেকে আমাদের অ্যালগরিদমে দুটি উন্নতি করতে পারি:
-- **সর্বাধিক গড় সামগ্রিক ফলাফল গণনা করুন**, `Qmax`, এবং আমরা সেই ফলাফলের সাথে সম্পর্কিত Q-Table সংরক্ষণ করব। যখন আপনি প্রশিক্ষণ চালান তখন আপনি লক্ষ্য করবেন যে কখনও কখনও গড় সামগ্রিক ফলাফল কমতে শুরু করে, এবং আমরা Q-Table এর মানগুলি রাখতে চাই যা প্রশিক্ষণের সময় পর্যবেক্ষণ করা সেরা মডেলের সাথে সম্পর্কিত।
+- **গড় সম্মিলিত পুরস্কার হিসাব করুন**, অনেক সিমুলেশনের উপর। আমরা প্রতিটি ৫০০০ পুনরাবৃত্তিতে অগ্রগতি মুদ্রণ করব, এবং ঐ সময়কালের মধ্যে গড় সম্মিলিত পুরস্কার হিসাব করব। অর্থাৎ যদি আমরা ১৯৫ এর বেশি পেয়ে থাকি, আমরা সমস্যাটি সমাধান বলে বিবেচনা করতে পারব যা প্রয়োজনীয়তার থেকেও ভালো।
+
+- **সর্বোচ্চ গড় সম্মিলিত ফলাফলের হিসাব**, `Qmax`, এবং সেই ফলাফলের জন্য Q-টেবিল সংরক্ষণ করব। যখন আপনি প্রশিক্ষণ চালাবেন, দেখতে পাবেন মাঝে মাঝে গড় সম্মিলিত ফলাফল কমতে শুরু করে, এবং আমরা সেই Q-টেবিল মান রাখতে চাই যা প্রশিক্ষণের সর্বোত্তম মডেলের সাথে মিলে।
-1. প্রতিটি সিমুলেশনে সমস্ত সামগ্রিক রিওয়ার্ড `rewards` ভেক্টরে সংগ্রহ করুন ভবিষ্যতে প্লট করার জন্য। (কোড ব্লক 11)
+১. প্রতিটি সিমুলেশনের সম্মিলিত পুরস্কার `rewards` ভেক্টরে সংগ্রহ করুন পরবর্তী প্লটিং-এর জন্য। (কোড ব্লক ১১)
```python
def probs(v,eps=1e-4):
@@ -214,15 +234,15 @@ Q-Learning-এ, আমাদের একটি Q-Table তৈরি করত
obs = env.reset()
done = False
cum_reward=0
- # == do the simulation ==
+ # == সিমুলেশন চালান ==
while not done:
s = discretize(obs)
if random.random() Qmax:
@@ -240,25 +260,25 @@ Q-Learning-এ, আমাদের একটি Q-Table তৈরি করত
cum_rewards=[]
```
-এই ফলাফলগুলি থেকে আপনি যা লক্ষ্য করতে পারেন:
+আপনি যে ফলাফলগুলো দেখতে পারেন তা হলো:
-- **আমাদের লক্ষ্য কাছাকাছি**। আমরা 100+ ধারাবাহিক সিমুলেশনের উপর 195 সামগ্রিক রিওয়ার্ড অর্জনের লক্ষ্য অর্জনের খুব কাছাকাছি, বা আমরা প্রকৃতপক্ষে এটি অর্জন করেছি! এমনকি যদি আমরা ছোট সংখ্যা পাই, আমরা এখনও জানি না, কারণ আমরা 5000 রান গড় করি, এবং আনুষ্ঠানিক মানদণ্ডে শুধুমাত্র 100 রান প্রয়োজন।
+- **লক্ষ্যের খুব কাছাকাছি**। আমরা ১৯৫ সম্মিলিত পুরস্কার ১০০ ধারাবাহিক সিমুলেশনের মধ্যে পাওয়ার লক্ষ্য খুব কাছাকাছি বা হয়তো ইতিমধ্যেই অর্জিত! যদিও ছোট মান আসে, আমরা নিশ্চিত নই কারণ আমরা ৫০০০ এর উপর গড় করছি, এবং আনুষ্ঠানিক শর্তে শুধুমাত্র ১০০ রান প্রয়োজন।
+
+- **পুরস্কার কমতে শুরু**। মাঝে মাঝে পুরস্কার কমতে পারে, অর্থাৎ আমরা Q-টেবিলে ইতিমধ্যে শেখা মানগুলো ভয়ানক মান দিয়ে "ধ্বংস" করতে পারি।
-- **রিওয়ার্ড কমতে শুরু করে**। কখনও কখনও রিওয়ার্ড কমতে শুরু করে, যার অর্থ আমরা Q-Table-এ ইতিমধ্যে শেখা মানগুলি "ধ্বংস" করতে পারি এমন মানগুলির সাথে যা পরিস্থিতিকে আরও খারাপ করে তোলে।
-
-এই পর্যবেক্ষণটি আরও স্পষ্টভাবে দৃশ্যমান হয় যদি আমরা প্রশিক্ষণের অগ্রগতি প্লট করি।
+এই পর্যবেক্ষণটা স্পষ্ট হয় যদি আমরা প্রশিক্ষণের অগ্রগতি প্লট করি।
## প্রশিক্ষণের অগ্রগতি প্লট করা
-প্রশিক্ষণের সময়, আমরা প্রতিটি পুনরাবৃত্তিতে সামগ্রিক রিওয়ার্ড মান `rewards` ভেক্টরে সংগ্রহ করেছি। এটি পুনরাবৃত্তি সংখ্যার বিপরীতে প্লট করলে এটি দেখতে কেমন:
+প্রশিক্ষণের সময়, আমরা প্রতিটি পুনরাবৃত্তিতে সম্মিলিত পুরস্কার `rewards` ভেক্টরে সংগ্রহ করেছি। এটি পুনরাবৃত্তি সংখ্যার বিপরীতে প্লট করলে এরূপ দেখা যায়:
```python
plt.plot(rewards)
```
-
+
-এই গ্রাফ থেকে কিছু বলা সম্ভব নয়, কারণ স্টোকাস্টিক প্রশিক্ষণ প্রক্রিয়ার প্রকৃতির কারণে প্রশিক্ষণ সেশনের দৈর্ঘ্য ব্যাপকভাবে পরিবর্তিত হয়। এই গ্রাফটি আরও অর্থবহ করতে, আমরা 100টি পরীক্ষার উপর **running average** গণনা করতে পারি। এটি সুবিধামত `np.convolve` ব্যবহার করে করা যেতে পারে: (কোড ব্লক 12)
+এই গ্রাফ থেকে কিছুই বলা যায় না, কারণ স্টোকাস্টিক প্রশিক্ষণ প্রক্রিয়ার প্রকৃতির কারণে সেশনগুলোর দৈর্ঘ্য অনেক ভিন্ন। এতে আরো অর্থ আনতে, আমরা একটি নির্দিষ্ট পরিসরের গড় বের করতে পারি, বলে নিই ১০০। এটা `np.convolve` ব্যবহার করে সহজে করা যায়: (কোড ব্লক ১২)
```python
def running_average(x,window):
@@ -267,21 +287,24 @@ def running_average(x,window):
plt.plot(running_average(rewards,100))
```
-
+
+
+## হাইপারপ্যারামিটার পরিবর্তন
+
+শেখাকে আরো স্থিতিশীল করতে, প্রশিক্ষণের সময় কিছু হাইপারপ্যারামিটার সামঞ্জস্য করা বুদ্ধিমানের কাজ। বিশেষ করে:
+
+- **লার্নিং রেট** `alpha` এর জন্য, আমরা সম্ভবত ১ এর কাছাকাছি মান দিয়ে শুরু করব, তারপর ধীরে ধীরে কমাব। সময়ের সঙ্গে Q-টেবিলের মান ভাল সম্ভাবনা পাবে, তাই আমরা ছোটখাটো পরিবর্তন করব এবং পুরোপুরি নতুন মান দেওয়া থেকে বিরত থাকব।
-## হাইপারপ্যারামিটার পরিবর্তন করা
+- **epsilon বাড়ানো**। আমরা `epsilon` ধীরে ধীরে বাড়াতে চাইব, যাতে কম অনুসন্ধান হয় এবং বেশি শোষণ। সম্ভবত শুরুতে `epsilon` কম রাখব এবং ধীরে ধীরে ১ এর কাছাকাছি নিয়ে যাব।
-শিক্ষণ আরও স্থিতিশীল করতে, প্রশিক্ষণের সময় আমাদের কিছু হাইপারপ্যারামিটার সামঞ্জস্য করা বুদ্ধিমানের কাজ। বিশেষত:
+> **কাজ ১**: হাইপারপ্যারামিটার মান নিয়ে পরীক্ষা চালান এবং দেখুন আপনি কি উচ্চ সম্মিলিত পুরস্কার পেতে পারেন। আপনি কি ১৯৫ এর উপরে পৌঁছাতে পারছেন?
-- **শিক্ষণ হার**, `alpha`, আমরা 1-এর কাছাকাছি মান দিয়ে শুরু করতে পারি এবং তারপর প্যারামিটারটি কমিয়ে রাখতে পারি। সময়ের সাথে সাথে, আমরা Q-Table-এ ভাল সম্ভাব্য মান পাব, এবং তাই আমাদের তাদের সামান্য সামঞ্জস্য করা উচিত এবং নতুন মানগুলির সাথে সম্পূর্ণভাবে ওভাররাইট করা উচিত নয়।
-- **epsilon বৃদ্ধি করুন**। আমরা `epsilon` ধীরে ধীরে বৃদ্ধি করতে চাই, যাতে কম অনুসন্ধান এবং বেশি শোষণ করা যায়। সম্ভবত এটি কম `epsilon` মান দিয়ে শুরু করা এবং প্রায় 1 পর্যন্ত নিয়ে যাওয়া বুদ্ধিমানের কাজ।
-> **টাস্ক ১**: হাইপারপ্যারামিটার মানগুলোর সাথে পরীক্ষা করুন এবং দেখুন আপনি কি উচ্চতর সামগ্রিক পুরস্কার অর্জন করতে পারেন। আপনি কি ১৯৫ এর উপরে পাচ্ছেন?
-> **টাস্ক ২**: সমস্যাটি আনুষ্ঠানিকভাবে সমাধান করতে, আপনাকে ১০০ ধারাবাহিক রান জুড়ে ১৯৫ গড় পুরস্কার অর্জন করতে হবে। প্রশিক্ষণের সময় এটি পরিমাপ করুন এবং নিশ্চিত করুন যে আপনি সমস্যাটি আনুষ্ঠানিকভাবে সমাধান করেছেন!
+> **কাজ ২**: সমস্যাটি আনুষ্ঠানিকভাবে সমাধান করতে, আপনাকে ১০০ ধারাবাহিক চালানোর উপর গড়ে ১৯৫ পুরস্কার পেতে হবে। প্রশিক্ষণের সময় এটি মাপুন এবং নিশ্চিত করুন যে আপনি আনুষ্ঠানিকভাবে সমস্যাটি সমাধান করেছেন!
## ফলাফল কার্যকরভাবে দেখা
-প্রশিক্ষিত মডেলটি কীভাবে আচরণ করে তা দেখা বেশ আকর্ষণীয় হবে। চলুন সিমুলেশন চালাই এবং প্রশিক্ষণের সময় ব্যবহৃত একই অ্যাকশন নির্বাচন কৌশল অনুসরণ করি, Q-টেবিলের সম্ভাব্যতা বিতরণ অনুযায়ী নমুনা করি: (কোড ব্লক ১৩)
+প্রকৃতপক্ষে প্রশিক্ষিত মডেলটি কীভাবে আচরণ করে তা দেখা আকর্ষণীয় হবে। চলুন সিমুলেশন চালাই এবং প্রশিক্ষণের সময় যেমন ছিল তেমনই Q-টেবিলের সম্ভাব্যতা বিতরণের অনুযায়ী নমুনা নিয়ে একই ক্রিয়া নির্বাচন কৌশল অনুসরণ করি: (কোড ব্লক ১৩)
```python
obs = env.reset()
@@ -295,17 +318,17 @@ while not done:
env.close()
```
-আপনার কিছুটা এরকম দেখতে পাওয়া উচিত:
+আপনি এরকম কিছু দেখতে পাবেন:
-
+
---
## 🚀চ্যালেঞ্জ
-> **টাস্ক ৩**: এখানে আমরা Q-টেবিলের চূড়ান্ত কপি ব্যবহার করছিলাম, যা হয়তো সেরা নাও হতে পারে। মনে রাখবেন যে আমরা `Qbest` ভেরিয়েবলে সেরা পারফর্মিং Q-টেবিল সংরক্ষণ করেছি! `Qbest`-কে `Q`-তে কপি করে একই উদাহরণ চেষ্টা করুন এবং পার্থক্য লক্ষ্য করুন।
+> **কাজ ৩**: এখানে, আমরা শেষ কপি Q-টেবিল ব্যবহার করছিলাম, যা হয়তো সেরা নয়। মনে রাখবেন আমরা সেরা পারফর্ম করা Q-টেবিলটি `Qbest` ভেরিয়েবলে সংরক্ষণ করেছি! একই উদাহরণ সেরা পারফর্ম করা Q-টেবিল ব্যবহার করে চেষ্টা করুন, `Qbest` থেকে `Q` তে কপি করে এবং দেখুন পার্থক্য লক্ষ্য করছেন কিনা।
-> **টাস্ক ৪**: এখানে আমরা প্রতিটি ধাপে সেরা অ্যাকশন নির্বাচন করছিলাম না, বরং সংশ্লিষ্ট সম্ভাব্যতা বিতরণ দিয়ে নমুনা করছিলাম। সর্বোচ্চ Q-টেবিল মান সহ সর্বদা সেরা অ্যাকশন নির্বাচন করা কি আরও অর্থবহ হবে? এটি `np.argmax` ফাংশন ব্যবহার করে করা যেতে পারে, যা সর্বোচ্চ Q-টেবিল মানের সাথে সম্পর্কিত অ্যাকশন নম্বর খুঁজে বের করে। এই কৌশলটি বাস্তবায়ন করুন এবং দেখুন এটি ব্যালেন্সিং উন্নত করে কিনা।
+> **কাজ ৪**: এখানে আমরা প্রতিটি ধাপে সেরা ক্রিয়া নির্বাচন করছিলাম না, বরং সংশ্লিষ্ট সম্ভাব্যতা বিতরণের মাধ্যমে নমুনা নিচ্ছিলাম। সর্বদা সর্বোচ্চ Q-টেবিল মানের ক্রিয়াটি নির্বাচন করা কি আরও যুক্তিযুক্ত হবে? এটি `np.argmax` ফাংশন ব্যবহার করে করা যায় যা সর্বোচ্চ Q-টেবিল মানের সাথে সংশ্লিষ্ট ক্রিয়ার নম্বর বের করে। এই কৌশলটি বাস্তবায়ন করুন এবং দেখুন এটি ব্যালান্সিং উন্নত করছে কিনা।
## [পোস্ট-লেকচার কুইজ](https://ff-quizzes.netlify.app/en/ml/)
@@ -314,11 +337,13 @@ env.close()
## উপসংহার
-আমরা এখন শিখেছি কীভাবে এজেন্টদের প্রশিক্ষণ দিয়ে ভালো ফলাফল অর্জন করা যায়, শুধুমাত্র একটি পুরস্কার ফাংশন প্রদান করে যা গেমের কাঙ্ক্ষিত অবস্থাকে সংজ্ঞায়িত করে এবং তাদের বুদ্ধিমত্তার সাথে অনুসন্ধান স্থানটি অন্বেষণ করার সুযোগ দিয়ে। আমরা সফলভাবে Q-লার্নিং অ্যালগরিদম প্রয়োগ করেছি ডিসক্রিট এবং কন্টিনিউয়াস পরিবেশের ক্ষেত্রে, তবে ডিসক্রিট অ্যাকশন সহ।
+আমরা এখন শিখেছি কীভাবে একটি অ্যাজেন্টকে একটি পুরস্কার ফাংশন দিয়ে প্রশিক্ষণ দেওয়া যায় যা গেমের কাঙ্ক্ষিত অবস্থাটি নির্ধারণ করে এবং তাদের বুদ্ধিমত্তার সাথে অনুসন্ধান স্থান অন্বেষণ করার সুযোগ দেয়। আমরা সফলভাবে Q-লার্নিং অ্যালগরিদম প্রয়োগ করেছি ডিসক্রিট এবং ধারাবাহিক পরিবেশের ক্ষেত্রে, তবে ডিসক্রিট ক্রিয়াগুলির সাথে।
-এটি গুরুত্বপূর্ণ যে আমরা এমন পরিস্থিতি অধ্যয়ন করি যেখানে অ্যাকশন স্টেটও কন্টিনিউয়াস এবং পর্যবেক্ষণ স্থান অনেক বেশি জটিল, যেমন অ্যাটারি গেম স্ক্রিনের চিত্র। এই ধরনের সমস্যাগুলিতে ভালো ফলাফল অর্জনের জন্য প্রায়ই আরও শক্তিশালী মেশিন লার্নিং কৌশল, যেমন নিউরাল নেটওয়ার্ক, ব্যবহার করতে হয়। এই আরও উন্নত বিষয়গুলি আমাদের আসন্ন উন্নত AI কোর্সের বিষয়।
+এটি গুরুত্বপূর্ণ যে আমরা এমন পরিস্থিতিও অধ্যয়ন করি যেখানে ক্রিয়া ক্ষেত্রও ধারাবাহিক, এবং পর্যবেক্ষণের ক্ষেত্র অনেক বেশি জটিল, যেমন এটারি গেম স্ক্রিন থেকে চিত্র। সেই সমস্যাগুলিতে ভাল ফলাফল অর্জনের জন্য প্রায়শই আরও শক্তিশালী মেশিন লার্নিং কৌশল ব্যবহার করতে হয়, যেমন নিউরাল নেটওয়ার্ক। এই আরও উন্নত বিষয়গুলি আমাদের আগামের আরও উন্নত AI কোर्सের বিষয়বস্তু।
---
-**অস্বীকৃতি**:
-এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিক অনুবাদ প্রদানের চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা তার জন্য দায়ী থাকব না।
\ No newline at end of file
+
+**অস্বীকৃতি**:
+এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনূদিত হয়েছে। যদিও আমরা শুদ্ধতার জন্য চেষ্টা করি, অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল নথিটি তার স্বভাষায় কর্তৃত্বপূর্ণ উৎস হিসেবে বিবেচিত হওয়া উচিত। গুরুত্বপূর্ণ তথ্যের জন্য পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদের ব্যবহারে প্রয়োজনীয় ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়বদ্ধ নই।
+
\ No newline at end of file
diff --git a/translations/bn/9-Real-World/2-Debugging-ML-Models/README.md b/translations/bn/9-Real-World/2-Debugging-ML-Models/README.md
index a4c45e962..d55a0ed4e 100644
--- a/translations/bn/9-Real-World/2-Debugging-ML-Models/README.md
+++ b/translations/bn/9-Real-World/2-Debugging-ML-Models/README.md
@@ -1,148 +1,171 @@
-# পোস্টস্ক্রিপ্ট: মডেল ডিবাগিং মেশিন লার্নিং-এ রেসপন্সিবল AI ড্যাশবোর্ড কম্পোনেন্ট ব্যবহার করে
-
-## [পূর্ব-লেকচার কুইজ](https://ff-quizzes.netlify.app/en/ml/)
+# পোস্টস্ক্রিপ্ট: রেস্পন্সিবল AI ড্যাশবোর্ড কম্পোনেন্ট ব্যবহার করে মেশিন লার্নিংয়ে মডেল ডিবাগিং
+
-## ভূমিকা
+## [প্রাক-লেকচার কুইজ](https://ff-quizzes.netlify.app/en/ml/)
+
+## পরিচিতি
-মেশিন লার্নিং আমাদের দৈনন্দিন জীবনে প্রভাব ফেলে। AI এখন এমন গুরুত্বপূর্ণ সিস্টেমে প্রবেশ করছে যা আমাদের ব্যক্তিগত এবং সামাজিক জীবনে প্রভাব ফেলে, যেমন স্বাস্থ্যসেবা, অর্থনীতি, শিক্ষা এবং কর্মসংস্থান। উদাহরণস্বরূপ, সিস্টেম এবং মডেল দৈনন্দিন সিদ্ধান্ত গ্রহণের কাজে ব্যবহৃত হয়, যেমন স্বাস্থ্যসেবা নির্ণয় বা প্রতারণা সনাক্তকরণ। এর ফলে, AI-এর অগ্রগতি এবং দ্রুত গ্রহণের সঙ্গে সঙ্গে সমাজের প্রত্যাশা এবং নিয়মাবলীও পরিবর্তিত হচ্ছে। আমরা প্রায়ই দেখি যে AI সিস্টেমগুলি প্রত্যাশা পূরণ করতে ব্যর্থ হয়; তারা নতুন চ্যালেঞ্জ উন্মোচন করে; এবং সরকার AI সমাধান নিয়ন্ত্রণ করতে শুরু করেছে। তাই, এই মডেলগুলো বিশ্লেষণ করা গুরুত্বপূর্ণ যাতে সবার জন্য ন্যায্য, নির্ভরযোগ্য, অন্তর্ভুক্তিমূলক, স্বচ্ছ এবং দায়িত্বশীল ফলাফল নিশ্চিত করা যায়।
+মেশিন লার্নিং আমাদের দৈনন্দিন জীবনে প্রভাব ফেলে। AI আমাদের প্রত্যেকে এবং আমাদের সমাজের উপর প্রভাবিত করা সবচেয়ে গুরুত্বপূর্ণ কিছু সিস্টেমে প্রবেশ করছে, যেমন স্বাস্থ্যসেবা, আর্থিক, শিক্ষা, এবং কর্মসংস্থান। উদাহরণস্বরূপ, সিস্টেম এবং মডেলগুলি দৈনন্দিন সিদ্ধান্ত গ্রহণের কাজগুলিতে জড়িত থাকে, যেমন স্বাস্থ্যসেবা নির্ণয় বা প্রতারণা সনাক্তকরণ। এর ফলে, AI এর অগ্রগতি এবং দ্রুত গ্রহণের সাথে সাথে সমাজের পরিবর্তিত প্রত্যাশা এবং বৃদ্ধিপ্রাপ্ত নিয়ন্ত্রণের মুখোমুখি হচ্ছে। আমরা ক্রমাগত দেখি এমন জায়গা যেখানে AI সিস্টেমগুলি প্রত্যাশা পূরণে ব্যর্থ হয়; তারা নতুন চ্যালেঞ্জ উন্মোচন করে; এবং সরকারগুলি AI সমাধান নিয়ন্ত্রণ শুরু করছে। তাই, এই মডেলগুলি বিশ্লেষণ করা গুরুত্বপূর্ণ যাতে সবার জন্য ন্যায়সঙ্গত, বিশ্বস্ত, অন্তর্ভুক্তিমূলক, স্বচ্ছ এবং দায়বদ্ধ ফলাফল প্রদান করা যায়।
-এই পাঠ্যক্রমে, আমরা ব্যবহারিক টুল নিয়ে আলোচনা করব যা মডেলের রেসপন্সিবল AI সমস্যা আছে কিনা তা মূল্যায়ন করতে সাহায্য করে। প্রচলিত মেশিন লার্নিং ডিবাগিং কৌশল সাধারণত পরিমাণগত গণনার উপর ভিত্তি করে, যেমন সামগ্রিক সঠিকতা বা গড় ত্রুটি হার। কল্পনা করুন, আপনি যে ডেটা ব্যবহার করছেন তা যদি কিছু জনসংখ্যাগত তথ্যের অভাব থাকে, যেমন জাতি, লিঙ্গ, রাজনৈতিক মতামত, ধর্ম, বা যদি এটি এই জনসংখ্যাকে অসমভাবে উপস্থাপন করে। আবার, যদি মডেলের আউটপুট কিছু জনসংখ্যাকে প্রাধান্য দেয়, তাহলে এটি সংবেদনশীল বৈশিষ্ট্য গোষ্ঠীর অতিরিক্ত বা কম প্রতিনিধিত্ব সৃষ্টি করতে পারে, যা মডেলের ন্যায্যতা, অন্তর্ভুক্তি বা নির্ভরযোগ্যতার সমস্যার কারণ হতে পারে। আরেকটি বিষয় হলো, মেশিন লার্নিং মডেলগুলোকে "ব্ল্যাক বক্স" হিসেবে বিবেচনা করা হয়, যা মডেলের পূর্বাভাসের কারণ বোঝা এবং ব্যাখ্যা করা কঠিন করে তোলে। এই সমস্ত চ্যালেঞ্জের মুখোমুখি হন ডেটা বিজ্ঞানী এবং AI ডেভেলপাররা যখন তাদের কাছে মডেলের ন্যায্যতা বা বিশ্বাসযোগ্যতা মূল্যায়নের জন্য পর্যাপ্ত টুল থাকে না।
+এই পাঠক্রমে, আমরা বাস্তবিক টুলগুলি দেখব যা ব্যবহার করে যাচাই করা যায় একটি মডেলে রেস্পন্সিবল AI সমস্যা আছে কিনা। ঐতিহ্যগত মেশিন লার্নিং ডিবাগিং কৌশলগুলি সাধারণত পরিমাপের উপর ভিত্তি করে যেমন সম্মিলিত সঠিকতা বা গড় ত্রুটির ক্ষতি। ভাবুন, যখন আপনি যে তথ্য ব্যবহার করে মডেলগুলি নির্মাণ করছেন তা কিছু জনসংখ্যার প্রতিনিধিত্ব করছে না, যেমন বর্ণ, লিঙ্গ, রাজনৈতিক দৃষ্টিভঙ্গি, ধর্ম বা এই ধরনের জনসংখ্যার অতিরিক্ত/অপ্রতুল প্রতিনিধিত্ব। মডেলের আউটপুট যদি নির্দিষ্ট কোন জনসংখ্যার পক্ষে ব্যাখ্যা করা হয় তাহলে কী হয়? এটি সংবেদনশীল বৈশিষ্ট্য গোষ্ঠীর অতিরিক্ত বা কম প্রতিনিধিত্ব সৃষ্টি করতে পারে, যার ফলে মডেলের ন্যায্যতা, অন্তর্ভুক্তিতা বা নির্ভরযোগ্যতা সমস্যা দেখা দেয়। আরেকটি কারণ হলো, মেশিন লার্নিং মডেলগুলি কালো বাক্স হিসেবে বিবেচিত হয়, যার ফলে মডেলের পূর্বাভাস কীভাবে কাজ করে তা বোঝা এবং ব্যাখ্যা করা কঠিন। এ সকলই চ্যালেঞ্জ যা ডেটা বিজ্ঞানী এবং AI ডেভেলপাররা সম্মুখীন হন যখন তাদের কাছে পর্যাপ্ত ডিবাগ এবং ন্যায়সঙ্গতা বা বিশ্বাসযোগ্যতা যাচাই করার সরঞ্জাম থাকে না।
-এই পাঠে, আপনি শিখবেন কীভাবে আপনার মডেল ডিবাগ করবেন:
+এই পাঠে আপনি শিখবেন কিভাবে আপনার মডেলগুলি ডিবাগ করবেন:
-- **ত্রুটি বিশ্লেষণ**: আপনার ডেটা বিতরণে মডেলের উচ্চ ত্রুটি হার কোথায় রয়েছে তা চিহ্নিত করুন।
-- **মডেল ওভারভিউ**: বিভিন্ন ডেটা কোহর্টের মধ্যে তুলনামূলক বিশ্লেষণ করুন যাতে মডেলের পারফরম্যান্স মেট্রিকগুলিতে বৈষম্য আবিষ্কার করা যায়।
-- **ডেটা বিশ্লেষণ**: যেখানে আপনার ডেটার অতিরিক্ত বা কম প্রতিনিধিত্ব থাকতে পারে তা তদন্ত করুন, যা আপনার মডেলকে এক ডেটা জনসংখ্যার পক্ষে পক্ষপাতিত্ব করতে প্রভাবিত করতে পারে।
-- **ফিচার ইম্পরট্যান্স**: বৈশ্বিক বা স্থানীয় স্তরে কোন বৈশিষ্ট্যগুলি আপনার মডেলের পূর্বাভাস চালাচ্ছে তা বুঝুন।
+- **ত্রুটি বিশ্লেষণ**: আপনার ডেটা বিতরণে মডেলের কোথায় উচ্চ ত্রুটির হার আছে তা নির্ণয় করুন।
+- **মডেল ওভারভিউ**: বিভিন্ন ডেটা গোষ্ঠীর মধ্যে তুলনামূলক বিশ্লেষণ করুন এবং মডেলের কর্মক্ষমতার ভিন্নতা আবিষ্কার করুন।
+- **ডেটা বিশ্লেষণ**: কোথায় আপনার ডেটার অতিরিক্ত বা কম প্রতিনিধিত্ব থাকতে পারে তা অনুসন্ধান করুন যা মডেলকে এক ডেটা জনসংখ্যার পক্ষে পক্ষপাতপূর্ণ করতে পারে।
+- **ফিচার ইম্পরটেন্স**: বুঝুন কোন বৈশিষ্ট্যগুলি গ্লোবাল অথবা লোকাল স্তরে মডেলের পূর্বাভাস চালায়।
-## পূর্বশর্ত
+## পূর্বপ্রয়োজনীয়তা
-পূর্বশর্ত হিসেবে, [ডেভেলপারদের জন্য রেসপন্সিবল AI টুল](https://www.microsoft.com/ai/ai-lab-responsible-ai-dashboard) পর্যালোচনা করুন।
+পূর্বপ্রয়োজনীয়তা হিসেবে, অনুগ্রহ করে পর্যালোচনা করুন [উন্নয়নকারীদের জন্য রেস্পন্সিবল AI টুল](https://www.microsoft.com/ai/ai-lab-responsible-ai-dashboard)
-> 
+> 
## ত্রুটি বিশ্লেষণ
-প্রচলিত মডেল পারফরম্যান্স মেট্রিক, যা সঠিকতা পরিমাপের জন্য ব্যবহৃত হয়, সাধারণত সঠিক বনাম ভুল পূর্বাভাসের উপর ভিত্তি করে গণনা করা হয়। উদাহরণস্বরূপ, একটি মডেল ৮৯% সময় সঠিক এবং ত্রুটি হার ০.০০১ হলে এটি ভালো পারফরম্যান্স হিসেবে বিবেচিত হতে পারে। তবে ত্রুটি আপনার ডেটাসেটে সমানভাবে বিতরণ নাও হতে পারে। আপনি ৮৯% মডেল সঠিকতার স্কোর পেতে পারেন, কিন্তু দেখতে পারেন যে আপনার ডেটার কিছু অঞ্চলে মডেল ৪২% সময় ব্যর্থ হচ্ছে। এই ব্যর্থতার প্যাটার্নের ফলে নির্দিষ্ট ডেটা গোষ্ঠীর ক্ষেত্রে ন্যায্যতা বা নির্ভরযোগ্যতার সমস্যা দেখা দিতে পারে। মডেল কোথায় ভালো করছে বা কোথায় ব্যর্থ হচ্ছে তা বোঝা অত্যন্ত গুরুত্বপূর্ণ। ডেটার সেই অঞ্চলগুলো যেখানে মডেলের ত্রুটি বেশি, তা গুরুত্বপূর্ণ ডেটা জনসংখ্যা হতে পারে।
+মডেলের পারফরম্যান্স পরিমাপের জন্য ঐতিহ্যগত কর্মক্ষমতা সূচকগুলি সাধারণত সঠিক বনাম ভুল পূর্বাভাসের উপর ভিত্তি করে গণনা করা হয়। উদাহরণস্বরূপ, একটি মডেল ৮৯% সময় সঠিক বলে নির্ধারণ করা এবং ত্রুটি হার ০.০০১ হলে সেটিকে ভালো পারফরম্যান্স বলা যেতে পারে। কিন্তু ত্রুটিগুলি আপনার মূল ডেটাসেটে সমানভাবে বিতরণ হয় না। আপনি হয়তো ৮৯% সঠিকতা পাবেন কিন্তু দেখতে পাবেন এমন ডেটার বিভিন্ন অঞ্চল রয়েছে যেখানে মডেল ৪২% সময় ব্যর্থ হচ্ছে। এই ধরনের ব্যর্থতা নিদর্শন নির্দিষ্ট ডেটা গোষ্ঠীর জন্য ন্যায়সঙ্গতা বা বিশ্বাসযোগ্যতা সমস্যা তৈরি করতে পারে। মডেলটি কোথায় ভালো কাজ করছে বা করছে না তা বোঝা অত্যন্ত গুরুত্বপূর্ণ। যেখানে মডেলে ভুলের সংখ্যা বেশি সেখানে তথ্যটি একটি গুরুত্বপূর্ণ ডেটা জনসংখ্যা হতে পারে।
-
+
-RAI ড্যাশবোর্ডের ত্রুটি বিশ্লেষণ কম্পোনেন্ট একটি গাছের ভিজ্যুয়ালাইজেশনের মাধ্যমে মডেলের ব্যর্থতা বিভিন্ন কোহর্টে কীভাবে বিতরণ হয়েছে তা দেখায়। এটি আপনার ডেটাসেটে উচ্চ ত্রুটি হার রয়েছে এমন বৈশিষ্ট্য বা এলাকাগুলি চিহ্নিত করতে সহায়ক। মডেলের বেশিরভাগ ত্রুটি কোথা থেকে আসছে তা দেখে আপনি মূল কারণ তদন্ত শুরু করতে পারেন। আপনি ডেটা কোহর্ট তৈরি করে বিশ্লেষণ করতে পারেন। এই ডেটা কোহর্টগুলো ডিবাগিং প্রক্রিয়ায় সাহায্য করে, কেন মডেল একটি কোহর্টে ভালো পারফর্ম করছে কিন্তু অন্যটিতে ভুল করছে তা নির্ধারণ করতে।
+RAI ড্যাশবোর্ডের ত্রুটি বিশ্লেষণ কম্পোনেন্টটি দেখায় কিভাবে মডেল ব্যর্থতা বিভিন্ন গোষ্ঠীর মধ্যে বিতরণ হয়েছে একটি ট্রি ভিজ্যুয়ালাইজেশনের মাধ্যমে। এটি বৈশিষ্ট্য বা এমন কোন এলাকাগুলো চিহ্নিত করতে সাহায্য করে যেখানে আপনার ডেটাসেটে উচ্চ ত্রুটির হার আছে। মডেলের ভুলের উৎস খুঁজে পেতে এটি সহায়ক। আপনি ডেটার গোষ্ঠীও তৈরি করতে পারেন বিশ্লেষণের জন্য। এই গোষ্ঠীগুলো ডিবাগিং প্রক্রিয়ায় সহায়তা করে বুঝতে কেন মডেলের পারফরম্যান্স এক গোষ্ঠীতে ভাল কিন্তু অন্যটিতে ত্রুটিপূর্ণ।
-
+
-গাছের মানচিত্রে গাঢ় লাল রঙের ছায়া দ্রুত সমস্যার এলাকাগুলি চিহ্নিত করতে সাহায্য করে। উদাহরণস্বরূপ, একটি গাছের নোড যত গাঢ় লাল, ত্রুটি হার তত বেশি।
+ট্রি ম্যাপের ভিজ্যুয়াল নির্দেশকগুলি সমস্যা এলাকাগুলো দ্রুত সনাক্ত করতে সাহায্য করে। উদাহরণস্বরূপ, একটি ট্রি নোডের লাল রং যত গাঢ় হবে তত ত্রুটির হার বেশি থাকবে।
-হিট ম্যাপ একটি অন্য ভিজ্যুয়ালাইজেশন কার্যকারিতা যা ব্যবহারকারীরা এক বা দুটি বৈশিষ্ট্য ব্যবহার করে ত্রুটি হার তদন্ত করতে ব্যবহার করতে পারেন, যা পুরো ডেটাসেট বা কোহর্টে মডেলের ত্রুটির কারণ খুঁজে বের করতে সাহায্য করে।
+হিট ম্যাপ আরেকটি ভিজ্যুয়ালাইজেশন ফিচার যা ব্যবহারকারীরা একটি বা দুটি বৈশিষ্ট্যের মাধ্যমে ত্রুটির হার তদন্তে ব্যবহার করতে পারেন যা সম্পূর্ণ ডেটাসেট অথবা গোষ্ঠীর মধ্যে মডেল ত্রুটির কারণ খুঁজতে সাহায্য করে।
-
+
-ত্রুটি বিশ্লেষণ ব্যবহার করুন যখন আপনি:
+ত্রুটি বিশ্লেষণ ব্যবহার করুন যখন আপনাকে:
-* মডেলের ব্যর্থতা কীভাবে ডেটাসেট এবং বিভিন্ন ইনপুট ও বৈশিষ্ট্য মাত্রায় বিতরণ হয়েছে তা গভীরভাবে বুঝতে চান।
-* সামগ্রিক পারফরম্যান্স মেট্রিক ভেঙে ত্রুটিপূর্ণ কোহর্টগুলি স্বয়ংক্রিয়ভাবে আবিষ্কার করতে চান, যা আপনার লক্ষ্যযুক্ত সমাধান পদক্ষেপগুলিকে জানাতে সাহায্য করবে।
+* গভীরভাবে বুঝতে হবে কিভাবে মডেল ব্যর্থতা ডেটাসেট এবং বিভিন্ন ইনপুট ও বৈশিষ্ট্য মাত্রায় বিতরণ হয়েছে।
+* সম্মিলিত কর্মক্ষমতা সূচক ভাঙ্গা এবং স্বয়ংক্রিয়ভাবেই ভুল গোষ্ঠী আবিষ্কার করতে যা লক্ষ্যভিত্তিক সমাধান পদক্ষেপে সাহায্য করবে।
## মডেল ওভারভিউ
-একটি মেশিন লার্নিং মডেলের পারফরম্যান্স মূল্যায়ন করতে হলে এর আচরণের একটি সামগ্রিক ধারণা পাওয়া প্রয়োজন। এটি একাধিক মেট্রিক পর্যালোচনা করে অর্জন করা যেতে পারে, যেমন ত্রুটি হার, সঠিকতা, রিকল, প্রিসিশন, বা MAE (Mean Absolute Error) এর মধ্যে বৈষম্য খুঁজে বের করা। একটি পারফরম্যান্স মেট্রিক ভালো দেখাতে পারে, কিন্তু অন্য মেট্রিকে ত্রুটি প্রকাশিত হতে পারে। এছাড়াও, পুরো ডেটাসেট বা কোহর্টের মধ্যে মেট্রিকগুলির তুলনা পারফরম্যান্সের বৈষম্য প্রকাশ করতে সাহায্য করে। এটি বিশেষভাবে গুরুত্বপূর্ণ যখন সংবেদনশীল বনাম অসংবেদনশীল বৈশিষ্ট্যের (যেমন রোগীর জাতি, লিঙ্গ, বা বয়স) মধ্যে মডেলের পারফরম্যান্স দেখা হয়, যাতে মডেলের সম্ভাব্য অন্যায়তা প্রকাশ করা যায়। উদাহরণস্বরূপ, যদি দেখা যায় যে মডেল একটি সংবেদনশীল বৈশিষ্ট্যযুক্ত কোহর্টে বেশি ত্রুটি করছে, তাহলে এটি মডেলের সম্ভাব্য অন্যায়তা প্রকাশ করতে পারে।
+মেশিন লার্নিং মডেলের পারফরম্যান্স মূল্যায়নের জন্য এর আচরণের সম্পূর্ণ ধারণা প্রয়োজন। এটি একাধিক সূচক যেমন ত্রুটির হার, সঠিকতা, রিকল, প্রিসিশন, বা MAE (গড় আপেক্ষিক ত্রুটি) পর্যালোচনা করে প্রাপ্ত হতে পারে যা পারফরম্যান্স সূচকের মধ্যে বৈষম্য খুঁজে পেতে সাহায্য করে। একটি সূচক ভাল দেখলেও অন্য সূচকে ভুলসাধ্যতা প্রকাশ পেতে পারে। এছাড়া, সমগ্র ডেটাসেট বা গোষ্ঠীর মধ্যে সূচক তুলনা মডেল কোথায় ভাল কাজ করছে বা কাজ করছে না তা স্পষ্ট করে তোলে। এটি বিশেষ করে সংবেদনশীল বনাম অসংবেদনশীল বৈশিষ্ট্যের পারফরম্যান্স পর্যবেক্ষণে গুরুত্বপূর্ণ (যেমন রোগীর বর্ণ, লিঙ্গ বা বয়স) যা মডেলের সম্ভাব্য পক্ষপাত উন্মোচন করতে পারে। উদাহরণস্বরূপ, মডেল সংবেদনশীল বৈশিষ্ট্যযুক্ত গোষ্ঠীতে বেশি ভুল করলে এটি মডেলের সম্ভাব্য পক্ষপাত প্রকাশ করে।
-RAI ড্যাশবোর্ডের মডেল ওভারভিউ কম্পোনেন্ট শুধুমাত্র ডেটা কোহর্টে পারফরম্যান্স মেট্রিক বিশ্লেষণ করতে সাহায্য করে না, এটি ব্যবহারকারীদের বিভিন্ন কোহর্টের মধ্যে মডেলের আচরণ তুলনা করার ক্ষমতা দেয়।
+RAI ড্যাশবোর্ডের মডেল ওভারভিউ কম্পোনেন্টটি কেবল গোষ্ঠীর মধ্যে ডেটার কর্মক্ষমতা সূচক বিশ্লেষণই নয় বরং ভিন্ন গোষ্ঠীর মধ্যে মডেলের আচরণ তুলনা করার সুযোগ দেয়।
-
+
-কম্পোনেন্টের বৈশিষ্ট্য-ভিত্তিক বিশ্লেষণ কার্যকারিতা ব্যবহারকারীদের একটি নির্দিষ্ট বৈশিষ্ট্যের মধ্যে ডেটা উপগোষ্ঠী সংকুচিত করতে এবং একটি সূক্ষ্ম স্তরে অস্বাভাবিকতা চিহ্নিত করতে সাহায্য করে। উদাহরণস্বরূপ, ড্যাশবোর্ডে একটি ব্যবহারকারী-নির্বাচিত বৈশিষ্ট্যের জন্য স্বয়ংক্রিয়ভাবে কোহর্ট তৈরি করার বিল্ট-ইন বুদ্ধিমত্তা রয়েছে (যেমন *"time_in_hospital < 3"* বা *"time_in_hospital >= 7"*)। এটি ব্যবহারকারীকে একটি বড় ডেটা গোষ্ঠী থেকে একটি নির্দিষ্ট বৈশিষ্ট্য আলাদা করতে সক্ষম করে, যাতে দেখা যায় এটি মডেলের ত্রুটিপূর্ণ ফলাফলের একটি মূল প্রভাবক কিনা।
+এই কম্পোনেন্টের বৈশিষ্ট্য-ভিত্তিক বিশ্লেষণ ফাংশনালিটি ব্যবহারকারীকে নির্দিষ্ট বৈশিষ্ট্যের মধ্যে ডেটার উপগোষ্ঠী সংকুচিত করতে সাহায্য করে যাতে সূক্ষ্ম স্তরে ব্যতিক্রম সনাক্ত করা যায়। উদাহরণস্বরূপ, ড্যাশবোর্ডে বিল্ট-ইন বুদ্ধিমত্তা আছে যা ব্যবহারকারীর নির্বাচিত বৈশিষ্ট্যের জন্য স্বয়ংক্রিয়ভাবে গোষ্ঠী তৈরি করে (যেমন, *"time_in_hospital < 3"* অথবা *"time_in_hospital >= 7"*)। এটি ব্যবহারকারীকে বড় ডেটা গোষ্ঠী থেকে একটি কিছু বৈশিষ্ট্য পৃথক করে দেখতে দেয় যে তা মডেলের ভুল ফলাফলে গুরুত্বপূর্ণ প্রভাব ফেলে কিনা।
-
+
-মডেল ওভারভিউ কম্পোনেন্ট দুটি শ্রেণির বৈষম্য মেট্রিক সমর্থন করে:
+মডেল ওভারভিউ কম্পোনেন্ট দুই ধরনের বৈষম্য সূচক সমর্থন করে:
-**মডেল পারফরম্যান্সে বৈষম্য**: এই সেটের মেট্রিকগুলি ডেটার উপগোষ্ঠীগুলির মধ্যে নির্বাচিত পারফরম্যান্স মেট্রিকের মানগুলির বৈষম্য (পার্থক্য) গণনা করে। এখানে কয়েকটি উদাহরণ:
+**মডেল কর্মক্ষমতায় বৈষম্য**: এই সূচকগুলি নির্বাচিত কর্মক্ষমতা সূচকের (metric) মানগুলোর মধ্যে উপগোষ্ঠীর মধ্যে পার্থক্য গণনা করে। কিছু উদাহরণ:
* সঠিকতার হার বৈষম্য
-* ত্রুটি হার বৈষম্য
-* প্রিসিশন বৈষম্য
-* রিকল বৈষম্য
-* গড় পরম ত্রুটি (MAE) বৈষম্য
+* ত্রুটি হারের বৈষম্য
+* প্রিসিশনের বৈষম্য
+* রিকলের বৈষম্য
+* গড় আপেক্ষিক ত্রুটি (MAE) এর বৈষম্য
-**নির্বাচনের হার বৈষম্য**: এই মেট্রিকটি উপগোষ্ঠীগুলির মধ্যে নির্বাচনের হার (অনুকূল পূর্বাভাস) এর পার্থক্য ধারণ করে। এর একটি উদাহরণ হলো ঋণ অনুমোদনের হার বৈষম্য। নির্বাচনের হার মানে প্রতিটি শ্রেণির ডেটা পয়েন্টের ভগ্নাংশ যা ১ হিসেবে শ্রেণীবদ্ধ (বাইনারি শ্রেণীবিভাজনে) বা পূর্বাভাসের মানগুলির বিতরণ (রিগ্রেশনে)।
+**নির্বাচন হারে বৈষম্য**: এই সূচকে উপগোষ্ঠীর মধ্যে নির্বাচনের হার (পক্ষপাতমূলক পূর্বাভাস) এর পার্থক্য থাকে। যেমন ঋণ অনুমোদনের হারে বৈষম্য। নির্বাচনের হার মানে হলো প্রতিটি শ্রেণীতে ডেটা পয়েন্টগুলোর ভাগ যা ১ হিসাবে শ্রেণীবদ্ধ হয় (বাইনারি শ্রেণীবিভাগে) অথবা পূর্বাভাসের মানের বিতরণ (রিগ্রেশনে)।
## ডেটা বিশ্লেষণ
-> "যদি আপনি ডেটাকে যথেষ্ট সময় ধরে চাপ দেন, এটি যেকোনো কিছু স্বীকার করবে" - রোনাল্ড কোস
+> "যদি তুমি ডেটাকে যথেষ্ট লম্বা সময় ধরে শিকলবন্দী করো, তবে এটি যেকোন কিছু স্বীকার করবে" - রোনাল্ড কোস
+
+এই উক্তিটি অতিরঞ্জিত শোনায়, তবে সত্য হলো তথ্যকে যেকোন সিদ্ধান্তের পক্ষে প্রভাবিত করা যায়। এমন প্রভাব কখনো তাৎক্ষণিকভাবে ঘটতে পারে। আমরা সবাই পক্ষপাত ধারণ করি, এবং সচেতনভাবে কখন ডেটায় পক্ষপাত প্রবেশ করাচ্ছি তা বুঝতে কঠিন। AI এবং মেশিন লার্নিংয়ে ন্যায়সঙ্গতা নিশ্চিত করা একটি জটিল চ্যালেঞ্জ।
+
+ডেটা ঐতিহ্যগত মডেল কর্মক্ষমতা সূচকের জন্য একটি বড় অন্ধস্থান। আপনার উচ্চ সঠিকতা থাকতে পারে, তবে এটি সবসময় ডেটাসেটের মধ্যে থাকা পক্ষপাত প্রতিফলিত করে না। উদাহরণস্বরূপ, যদি কোনো প্রতিষ্ঠানের কর্মচারীদের ডেটাসেটে ২৭% মহিলা নির্বাহী পদে থাকে এবং ৭৩% পুরুষ একই স্তরে থাকে, তাহলে এ তথ্য ব্যবহার করে প্রশিক্ষিত একটি চাকরির বিজ্ঞাপন AI মডেল প্রধানত পুরুষ শ্রোতাদের লক্ষ্য করত; যা লিঙ্গ পক্ষপাত প্রকাশ করে। এই ধরনের ডেটা অসমতা মডেলের পূর্বাভাসকে একটি লিঙ্গের পক্ষে পক্ষপাতপ্রবণ করে। এটা ন্যায়সঙ্গতার ইস্যু নির্দেশ করে যেখানে AI মডেলে লিঙ্গ পক্ষপাত আছে।
+
+RAI ড্যাশবোর্ডের ডেটা বিশ্লেষণ কম্পোনেন্ট আস্তে সাহায্য করে সনাক্ত করতে কোথায় 과অঙ্গ বা কম প্রতিনিধিত্ব আছে। এটি ব্যবহারকারীদের নির্ণয় করতে সাহায্য করে ডেটার অসমতা বা নির্দিষ্ট গোষ্ঠীর প্রতিনিধিত্বের অভাব থেকে ত্রুটি এবং ন্যায়সঙ্গতার সমস্যা কোথা থেকে আসছে। এটি ব্যবহারকারীদের অনুমানকৃত এবং প্রকৃত ফলাফল, ত্রুটি গোষ্ঠী এবং নির্দিষ্ট বৈশিষ্ট্যের ভিত্তিতে ডেটাসেট ভিজ্যুয়ালাইজ করার অনুমতি দেয়। কখনো কখনো কম প্রতিনিধিত্বশীল ডেটা গোষ্ঠী আবিষ্কার কেবল তা নয় যে মডেল ভালো শিখছে না, ফলে ভুলের সংখ্যা বেশি। পক্ষপাতপূর্ণ মডেল হওয়া মানেই শুধু ন্যায়সঙ্গতার সমস্যা নয়, বরং মডেল অন্তর্ভুক্তিমূলক বা বিশ্বাসযোগ্য নয় তা নির্দেশ করে।
+
+
-এই বক্তব্যটি চরম শোনায়, কিন্তু এটি সত্য যে ডেটা যেকোনো সিদ্ধান্তকে সমর্থন করার জন্য প্রভাবিত করা যেতে পারে। এমন প্রভাব কখনও কখনও অনিচ্ছাকৃতভাবে ঘটতে পারে। আমরা সবাই মানুষ হিসেবে পক্ষপাতিত্ব করি, এবং ডেটায় পক্ষপাতিত্ব প্রবর্তন করছি কিনা তা সচেতনভাবে জানা প্রায়ই কঠিন। AI এবং মেশিন লার্নিং-এ ন্যায্যতা নিশ্চিত করা একটি জটিল চ্যালেঞ্জ।
-ডেটা প্রচলিত মডেল পারফরম্যান্স মেট্রিকের জন্য একটি বড় অন্ধকার অঞ্চল। আপনার সঠিকতার স্কোর উচ্চ হতে পারে, কিন্তু এটি সবসময় আপনার ডেটাসেটে থাকা অন্তর্নিহিত ডেটা পক্ষপাতিত্ব প্রতিফলিত করে না। উদাহরণস্বরূপ, যদি একটি কোম্পানির নির্বাহী পদে কর্মীদের ডেটাসেটে ২৭% নারী এবং ৭৩% পুরুষ থাকে, তাহলে এই ডেটার উপর প্রশিক্ষিত একটি চাকরি বিজ্ঞাপন AI মডেল মূলত পুরুষদের লক্ষ্য করতে পারে। এই ডেটার ভারসাম্যহীনতা মডেলের পূর্বাভাসকে এক লিঙ্গের পক্ষে পক্ষপাতিত্ব করেছে। এটি একটি ন্যায্যতার সমস্যা প্রকাশ করে যেখানে AI মডেলে লিঙ্গ পক্ষপাতিত্ব রয়েছে।
+ডেটা বিশ্লেষণ ব্যবহার করুন যখন আপনাকে:
-RAI ড্যাশবোর্ডের ডেটা বিশ্লেষণ কম্পোনেন্ট ডেটাসেটে অতিরিক্ত এবং কম প্রতিনিধিত্বের এলাকাগুলি চিহ্নিত করতে সাহায্য করে। এটি ব্যবহারকারীদের ডেটা ভারসাম্যহীনতা বা একটি নির্দিষ্ট ডেটা গোষ্ঠীর প্রতিনিধিত্বের অভাব থেকে উদ্ভূত ত্রুটি এবং ন্যায্যতার সমস্যাগুলি নির্ণয় করতে সাহায্য করে। এটি ব্যবহারকারীদের পূর্বাভাস এবং প্রকৃত ফলাফল, ত্রুটি গোষ্ঠী এবং নির্দিষ্ট বৈশিষ্ট্যের উপর ভিত্তি করে ডেটাসেট ভিজ্যুয়ালাইজ করার ক্ষমতা দেয়। কখনও কখনও একটি কম প্রতিনিধিত্বকারী ডেটা গোষ্ঠী আবিষ্কার করা মডেলটি ভালোভাবে শিখছে না তা প্রকাশ করতে পারে, যার ফলে উচ্চ ত্রুটি দেখা দেয়। একটি মডেলে ডেটা পক্ষপাতিত্ব থাকা শুধুমাত্র একটি ন্যায্যতার সমস্যা নয়, এটি দেখায় যে মডেলটি অন্তর্ভুক্তিমূলক বা নির্ভরযোগ্য নয়।
+* বিভিন্ন ফিল্টার নির্বাচন করে আপনার ডেটাসেট পরিসংখ্যান অনুসন্ধান করতে হবে (যাকে কোহর্টও বলা হয়)।
+* বিভিন্ন গোষ্ঠী ও বৈশিষ্ট্য গোষ্ঠীগুলোর মধ্যে ডেটাসেটের বিতরণ বুঝতে হবে।
+* জানতে হবে যে অন্য ড্যাশবোর্ড কম্পোনেন্ট থেকে প্রাপ্ত ন্যায়সঙ্গতা, ত্রুটি বিশ্লেষণ এবং কারণ-প্রমাণিত ফলাফল কি ডেটাসেটের বিতরণের কারণে হয়েছে কিনা।
+* সিদ্ধান্ত নিতে হবে কোন এলাকায় আরও ডেটা সংগ্রহ করা দরকার যাতে প্রতিনিধিত্বের জনিত সমস্যা, লেবেল গোলমাল, বৈশিষ্ট্যের গোলমাল ইত্যাদি থেকে উদ্ভূত ত্রুটি দূর করা যায়।
-
+## মডেল ব্যাখ্যাত্মকতা
-ডেটা বিশ্লেষণ ব্যবহার করুন যখন আপনি:
+মেশিন লার্নিং মডেলগুলি সাধারণত কালো বাক্স হিসেবে বিবেচিত হয়। কোন প্রধান বৈশিষ্ট্য মডেলের পূর্বাভাস চালাচ্ছে তা বোঝা কঠিন। কোন মডেল কেন নির্দিষ্ট পূর্বাভাস দেয় তা স্পষ্টতা দেওয়া গুরুত্বপূর্ণ। উদাহরণস্বরূপ, যদি কোনো AI সিস্টেম পূর্বাভাস দেয় যে একজন ডায়াবেটিস রোগীর ৩০ দিনের কম সময়ের মধ্যে হাসপাতলে পুনরায় ভর্তি হওয়ার ঝুঁকি আছে, তবে এটি তার পূর্বাভাসের পেছনে থাকা সমর্থনকারী তথ্য দিতে পারা উচিত। এই সমর্থক তথ্য প্রদান স্বচ্ছতা আনে যা ক্লিনিশিয়ান বা হাসপাতালকে সুষ্ঠু সিদ্ধান্ত নিতে সাহায্য করে। এছাড়া, একজন নির্দিষ্ট রোগীর জন্য মডেল কেন পূর্বাভাস দিয়েছে তা ব্যাখ্যা করা স্বাস্থ্য নিয়মাবলীর সঙ্গে দায়বদ্ধতা জড়িত করে। যখন আপনি মেশিন লার্নিং মডেল মানুষের জীবনে প্রভাবিত করার জন্য ব্যবহার করছেন, তখন মডেলের আচরণ কী দ্বারা প্রভাবিত হচ্ছে তা বোঝা এবং ব্যাখ্যা করা অত্যন্ত গুরুত্বপূর্ণ। মডেল ব্যাখ্যাত্মকতা এবং বোধগম্যতা এই ধরনের প্রশ্নের উত্তর দেয় যেমন:
-* আপনার ডেটাসেটের পরিসংখ্যান অন্বেষণ করতে চান, বিভিন্ন ফিল্টার নির্বাচন করে আপনার ডেটাকে বিভিন্ন মাত্রায় (কোহর্ট নামে পরিচিত) ভাগ করতে।
-* বিভিন্ন কোহর্ট এবং বৈশিষ্ট্য গোষ্ঠীর মধ্যে আপনার ডেটাসেটের বিতরণ বুঝতে চান।
-* ন্যায্যতা, ত্রুটি বিশ্লেষণ এবং কারণ সম্পর্কিত আপনার অনুসন্ধানগুলি (অন্যান্য ড্যাশবোর্ড কম্পোনেন্ট থেকে প্রাপ্ত) আপনার ডেটাসেটের বিতরণের ফলাফল কিনা তা নির্ধারণ করতে চান।
-* প্রতিনিধিত্বের সমস্যাগুলি থেকে উদ্ভূত ত্রুটি কমানোর জন্য আরও ডেটা সংগ্রহের এলাকাগুলি সিদ্ধান্ত নিতে চান।
+* মডেল ডিবাগিং: আমার মডেল কেন এই ভুল করল? কিভাবে আমি মডেল উন্নত করতে পারি?
+* মানব-AI সমবায়: কিভাবে আমি মডেলের সিদ্ধান্ত বোঝব এবং বিশ্বাস করব?
+* নিয়ন্ত্রক অনুপালন: আমার মডেল কি আইনি শর্ত পূরণ করে?
-## মডেল ব্যাখ্যাযোগ্যতা
+RAI ড্যাশবোর্ডের ফিচার ইম্পরটেন্স কম্পোনেন্ট আপনাকে ডিবাগ করতে এবং বুঝতে সাহায্য করে কিভাবে মডেল পূর্বাভাস দেয়। এটি মেশিন লার্নিং পেশাজীবী এবং সিদ্ধান্ত গ্রহণকারীদের জন্য গুরুত্বপূর্ণ যা একটি মডেলের আচরণে প্রভাব ফেলা বৈশিষ্ট্যগুলোর প্রমাণ দেখিয়ে আইনগত নিয়মাবলীর সঙ্গতি নিশ্চিত করে। পরবর্তীতে, ব্যবহারকারীরা গ্লোবাল এবং লোকাল ব্যাখ্যাত্মকতা দুটোই অন্বেষণ করতে পারেন যা যাচাই করে কোন বৈশিষ্ট্য মডেলের পূর্বাভাস চালায়। গ্লোবাল ব্যাখ্যাত্মকতায় মডেলের ওপর সর্বাধিক প্রভাব ফেলা শীর্ষ বৈশিষ্ট্য তালিকাভুক্ত হয়। লোকাল ব্যাখ্যাত্মকতায় একটি নির্দিষ্ট মামলার পূর্বাভাস চালানো বৈশিষ্ট্যগুলো প্রদর্শিত হয়। লোকাল ব্যাখ্যাত্মকতা নিরীক্ষণ বা ডিবাগিং এর জন্য সহায়ক, কারণ এতে একটি নির্দিষ্ট মামলার সঠিক বা ভুল পূর্বাভাস কেন হয় তা ব্যাখ্যা করা যায়।
-মেশিন লার্নিং মডেলগুলো সাধারণত "ব্ল্যাক বক্স" হিসেবে বিবেচিত হয়। একটি মডেলের পূর্বাভাস চালানোর জন্য কোন মূল ডেটা বৈশিষ্ট্যগুলি গুরুত্বপূর্ণ তা বোঝা চ্যালেঞ্জিং হতে পারে। একটি মডেল কেন একটি নির্দিষ্ট পূর্বাভাস করেছে তা বোঝার জন্য স্বচ্ছতা প্রদান করা গুরুত্বপূর্ণ। উদাহরণস্বরূপ, যদি একটি AI সিস্টেম পূর্বাভাস দেয় যে একটি ডায়াবেটিক রোগী ৩০ দিনের মধ্যে হাসপাতালে পুনরায় ভর্তি হওয়ার ঝুঁকিতে রয়েছে, তাহলে এটি তার পূর্বাভাসের জন্য প্রাসঙ্গিক ডেটা প্রদান করতে সক্ষম হওয়া উচিত। এই ধরনের ডেটা সূচক স্বচ্ছতা নিয়ে আসে, যা চিকিৎসক বা হাসপাতালকে ভালোভাবে সিদ্ধান্ত নিতে সাহায্য করে। এছাড়াও, একটি নির্দিষ্ট রোগীর জন্য একটি মডেল কেন পূর্বাভাস দিয়েছে তা ব্যাখ্যা করতে সক্ষম হওয়া স্বাস্থ্য নিয়মাবলীর সঙ্গে দায়িত্বশীলতা নিশ্চিত করে। যখন আপনি মেশিন লার্নিং মডেল ব্যবহার করছেন যা মানুষের জীবনে প্রভাব ফেলে, তখন মডেলের আচরণ কী দ্বারা প্রভাবিত হয় তা বোঝা এবং ব্যাখ্যা করা অত্যন্ত গুরুত্বপূর্ণ। মডেল ব্যাখ্যাযোগ্যতা এবং ব্যাখ্যা করার ক্ষমতা নিম্নলিখিত পরিস্থিতিতে প্রশ্নের উত্তর দিতে সাহায্য করে:
+
-* মডেল ডিবাগিং: আমার মডেল কেন এই ভুল করেছে? আমি কীভাবে আমার মডেল উন্নত করতে পারি?
-* মানব-AI সহযোগিতা: আমি কীভাবে মডেলের সিদ্ধান্ত বুঝতে এবং বিশ্বাস করতে পারি?
-* নিয়ন্ত্রক সম্মতি: আমার মডেল কি আইনি প্রয়োজনীয়তা পূরণ করে?
+* গ্লোবাল ব্যাখ্যাত্মকতা: উদাহরণস্বরূপ, কোন বৈশিষ্ট্য একটি ডায়াবেটিস হাসপাতালের পুনর্ভর্তি মডেলের সামগ্রিক আচরণে প্রভাব ফেলে?
+* লোকাল ব্যাখ্যাত্মকতা: উদাহরণস্বরূপ, কেন এক রোগী, যাঁর বয়স ৬০ এর বেশি এবং আগের ভর্তি ইতিহাস আছে, তাকে পূর্বাভাস দেওয়া হয় যে সে ৩০ দিনের মধ্যে পুনরায় ভর্তি হবে বা হবে না?
-RAI ড্যাশবোর্ডের ফিচার ইম্পরট্যান্স কম্পোনেন্ট আপনাকে ডিবাগ করতে এবং একটি মডেল কীভাবে পূর্বাভাস তৈরি করে তা ব্যাপকভাবে বুঝতে সাহায্য করে। এটি মেশিন লার্নিং পেশাদার এবং সিদ্ধান্ত গ্রহণকারীদের জন্য একটি দরকারী টুল, যা মডেলের আচরণ প্রভাবিতকারী বৈশিষ্ট্যগুলির প্রমাণ দেখাতে এবং নিয়ন্ত্রক সম্মতির জন্য ব্যাখ্যা করতে সাহায্য করে। ব্যবহারকারীরা বৈশ্বিক এবং স্থানীয় ব্যাখ্যা উভয়ই অন্বেষণ করতে পারেন, যা মডেলের পূর্বাভাস চালানোর বৈশিষ্ট্যগুলি যাচাই করতে সাহায্য করে। বৈশ্বিক ব্যাখ্যা মডেলের সামগ্রিক পূর্বাভাসকে প্রভাবিত করা শীর্ষ বৈশিষ্ট্যগুলির তালিকা দেয়। স্থানীয় ব্যাখ্যা দেখায় যে একটি নির্দিষ্ট ক্ষেত্রে মডেলের পূর্বাভাসের জন্য কোন বৈশিষ্ট্যগুলি ভূমিকা পালন করেছে। স্থানীয় ব্যাখ্যা মূল্যায়নের ক্ষমতা একটি নির্দিষ্ট ক্ষেত্রে ডিবাগিং বা অডিটিংয়ে সহায়ক, যাতে মডেল কেন সঠিক বা ভুল পূর্বাভাস দিয়েছে তা ভালোভাবে বোঝা এবং ব্যাখ্যা করা যায়।
+মডেলের পারফরম্যান্স বিভিন্ন গোষ্ঠীতে বিশ্লেষণের সময়, ফিচার ইম্পরটেন্স দেখায় বৈশিষ্ট্যের প্রভাবের মাত্রা। এটি মডেলের ভুল পূর্বাভাসে বৈশিষ্ট্যের প্রভাবের পার্থক্য প্রকাশ করে। কম্পোনেন্টটি দেখাতে পারে কোন বৈশিষ্ট্যের কোন মান মডেলের ফলাফলে ইতিবাচক বা নেতিবাচক প্রভাব ফেলেছে। উদাহরণস্বরূপ, যদি মডেল ভুল পূর্বাভাস দেয়, এটি বিস্তারিত তথ্য দিয়ে বোঝায় কোন বৈশিষ্ট্য বা মান পূর্বাভাস চালায়। এই স্তরের তথ্য ডিবাগিং ছাড়াও স্বচ্ছতা এবং যাচাই প্রক্রিয়াতে দায়বদ্ধতা বাড়ায়। অবশেষে, এটি ন্যায়সঙ্গতার সমস্যা চিহ্নিত করতে সাহায্য করে। উদাহরণস্বরূপ, যদি এক সংবেদনশীল বৈশিষ্ট্য যেমন জাতিত্ব বা লিঙ্গ মডেলের পূর্বাভাসে অত্যন্ত প্রভাবশালী হয়, তবে এটি মডেলে জাতি বা লিঙ্গ পক্ষপাতের সংকেত হতে পারে।
-
+
-* বৈশ্বিক ব্যাখ্যা: উদাহরণস্বরূপ, ডায়াবেটিস হাসপাতাল পুনরায় ভর্তি মডেলের সামগ্রিক আচরণে কোন বৈশিষ্ট্যগুলি প্রভাব ফেলে?
-* স্থানীয় ব্যাখ্যা: উদাহরণস্বরূপ, কেন ৬০ বছরের বেশি বয়সী এবং পূর্ববর্তী হাসপাতালে ভর্তি থাকা একজন ডায়াবেটিক রোগীকে ৩০ দিনের মধ্যে পুনরায় ভর্তি বা পুনরায় ভর্তি না হওয়ার
-- **অতিরিক্ত বা কম প্রতিনিধিত্ব**। ধারণাটি হলো একটি নির্দিষ্ট গোষ্ঠীকে একটি নির্দিষ্ট পেশায় দেখা যায় না, এবং যে কোনো সেবা বা কার্যক্রম যা এটি প্রচার করে তা ক্ষতির কারণ হতে পারে।
+ব্যাখ্যাত্মকতা ব্যবহার করুন যখন আপনাকে:
-### Azure RAI ড্যাশবোর্ড
+* বুঝতে হবে আপনার AI সিস্টেমের পূর্বাভাস কতটা বিশ্বস্ত এবং কোন বৈশিষ্ট্যগুলি পূর্বাভাসে সবচেয়ে গুরুত্বপূর্ণ ভূমিকা রাখে।
+* মডেল ডিবাগ করার সময় প্রথমে মডেলটি বুঝতে হবে এবং নির্ণয় করতে হবে মডেল কি স্বাস্থ্যকর বৈশিষ্ট্য ব্যবহার করছে বা শুধুই ভুল সম্পর্ক।
+* সম্ভাব্য পক্ষপাত উন্মোচন করতে হবে যে মডেল সংবেদনশীল বৈশিষ্ট্যের ওপর পূর্বাভাস করছে বা তাদের সাথে উচ্চমাত্রায় সম্পর্কিত বৈশিষ্ট্যগুলোর ওপর।
+* ব্যবহারকারীদের মডেলের সিদ্ধান্তে বিশ্বাস তৈরি করতে হবে স্থানীয় ব্যাখ্যা তৈরি করে।
+* AI সিস্টেমের নিয়ন্ত্রক নিরীক্ষা সম্পন্ন করতে হবে যাতে মডেলগুলি যাচাই হয় এবং মানুষের ওপর মডেল সিদ্ধান্তের প্রভাব পর্যবেক্ষণ করা যায়।
+
+## উপসংহার
+
+RAI ড্যাশবোর্ডের সব কম্পোনেন্টই ব্যাবহারিক সরঞ্জাম যা মেশিন লার্নিং মডেলগুলি কম ক্ষতিকর এবং সমাজের জন্য বেশি বিশ্বাসযোগ্য করতে সাহায্য করে। এটি মানবাধিকারের হুমকি প্রতিরোধে উন্নতি করে; নির্দিষ্ট গোষ্ঠীকে জীবন সুযোগ থেকে বঞ্চিত বা বৈষম্যমূলক আচরণ থেকে রক্ষা করে; এবং শারীরিক বা মানসিক আঘাতের ঝুঁকি হ্রাস করে। এটি মডেলের সিদ্ধান্তে বিশ্বাস তৈরি করতে স্থানীয় ব্যাখ্যা তৈরি করতেও সাহায্য করে। সম্ভাব্য ক্ষতিগুলোর শ্রেণীবিভাগ হতে পারে:
+
+- **বন্টন**, যেমন একটি লিঙ্গ বা জাতি অন্যটির থেকে অধিক প্রাধান্য পাওয়া।
+- **সেবা গুণমান**। আপনি যদি ডেটা প্রশিক্ষণ দেন একটি নির্দিষ্ট ক্ষেত্রের জন্য, কিন্তু বাস্তবতা অনেক বেশি জটিল, তাহলে সেবা কর্মক্ষমতা খারাপ হয়।
+- **স্টেরিয়োটাইপিং**। একটি নির্দিষ্ট গোষ্ঠীকে পূর্বনির্ধারিত বৈশিষ্ট্যের সাথে যুক্ত করা।
+
+- **অবমাননা**। অন্যায়ভাবে কারো বা কারো কিছু সমালোচনা এবং লেবেল করা।
+- **অতিরিক্ত বা কম প্রতিনিধিত্ব**। ধারণাটি হল একটি নির্দিষ্ট গোষ্ঠী কোনো নির্দিষ্ট পেশায় দেখা যায় না, এবং যে কোনো পরিষেবা বা কার্যকলাপ যা তা প্রচার করে তা ক্ষতি সাধনে অবদান রাখে।
+
+### অ্যাজুর 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/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) দেখুন।
+- RAI ড্যাশবোর্ডের বিভিন্ন উপাদান ব্যবহার শিখতে RAI ড্যাশবোর্ডের [ডকুমেন্টেশন](https://learn.microsoft.com/en-us/azure/machine-learning/how-to-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) দেখুন।
-- Azure Machine Learning-এ আরও দায়িত্বশীল AI পরিস্থিতি ডিবাগ করার জন্য কিছু RAI ড্যাশবোর্ডের [নমুনা নোটবুক](https://github.com/Azure/RAI-vNext-Preview/tree/main/examples/notebooks) দেখুন।
+- অ্যাজুর মেশিন লার্নিংয়ে আরও দায়িত্বশীল AI পরিস্থিতির ডিবাগিং-এর জন্য RAI ড্যাশবোর্ডের কিছু [স্যাম্পল নোটবুক](https://github.com/Azure/RAI-vNext-Preview/tree/main/examples/notebooks) দেখুন।
---
## 🚀 চ্যালেঞ্জ
-পরিসংখ্যানগত বা ডেটা পক্ষপাত এড়ানোর জন্য আমাদের উচিত:
+পরিসংখ্যানগত বা ডেটা পক্ষপাত প্রথম থেকেই এড়াতে, আমাদের উচিত:
-- সিস্টেমে কাজ করা ব্যক্তিদের মধ্যে বিভিন্ন পটভূমি এবং দৃষ্টিভঙ্গি থাকা
-- এমন ডেটাসেটে বিনিয়োগ করা যা আমাদের সমাজের বৈচিত্র্যকে প্রতিফলিত করে
-- পক্ষপাত সনাক্ত এবং সংশোধন করার জন্য আরও ভালো পদ্ধতি তৈরি করা
+- সিস্টেমগুলিতে কাজ করা লোকদের মধ্যে বিভিন্ন পটভূমি এবং দৃষ্টিভঙ্গি থাকা
+- আমাদের সমাজের বৈচিত্র্য প্রতিফলিত করে এমন ডেটাসেটে বিনিয়োগ করা
+- পক্ষপাত সনাক্ত এবং সংশোধনের জন্য আরো উন্নত পদ্ধতি বিকাশ করা যখনই এটি ঘটে
-বাস্তব জীবনের পরিস্থিতি নিয়ে চিন্তা করুন যেখানে মডেল তৈরিতে এবং ব্যবহারে অন্যায় স্পষ্ট। আর কী বিবেচনা করা উচিত?
+বাস্তব জীবনের এমন পরিস্থিতি ভাবুন যেখানে মডেল তৈরি এবং ব্যবহারে অন্যায়তা স্পষ্ট। আমরা আর কী বিবেচনা করা উচিত?
## [পোস্ট-লেকচার কুইজ](https://ff-quizzes.netlify.app/en/ml/)
## পর্যালোচনা ও স্ব-অধ্যয়ন
-এই পাঠে, আপনি মেশিন লার্নিংয়ে দায়িত্বশীল AI অন্তর্ভুক্ত করার কিছু ব্যবহারিক টুল শিখেছেন।
-
-এই কর্মশালাটি দেখুন বিষয়গুলো আরও গভীরভাবে বুঝতে:
+এই পাঠে, আপনি দায়িত্বশীল AI মেশিন লার্নিং-এ অন্তর্ভুক্ত করার কিছু ব্যবহারিক টুল সম্পর্কে শিখেছেন।
-- দায়িত্বশীল AI ড্যাশবোর্ড: বাস্তবে RAI পরিচালনার জন্য একক প্ল্যাটফর্ম, Besmira Nushi এবং Mehrnoosh Sameki দ্বারা
+এই বিষয়গুলো আরও গভীরভাবে জানতে নিম্নলিখিত কর্মশালাটি দেখুন:
-[](https://www.youtube.com/watch?v=f1oaDNl3djg "দায়িত্বশীল AI ড্যাশবোর্ড: বাস্তবে RAI পরিচালনার জন্য একক প্ল্যাটফর্ম")
+- দায়িত্বশীল AI ড্যাশবোর্ড: বাস্তবায়নে রাই-কে একত্রে সজ্জিত করার জন্য একটি এক-স্টপ শপ, বেসমিরা নুশি ও মেহরনূশ সামেকির দ্বারা
+[](https://www.youtube.com/watch?v=f1oaDNl3djg "দায়িত্বশীল AI ড্যাশবোর্ড: বাস্তবায়নে রাই-কে একত্রে সজ্জিত করার জন্য একটি এক-স্টপ শপ")
-> 🎥 উপরের ছবিতে ক্লিক করুন ভিডিওর জন্য: দায়িত্বশীল AI ড্যাশবোর্ড: বাস্তবে RAI পরিচালনার জন্য একক প্ল্যাটফর্ম, Besmira Nushi এবং Mehrnoosh Sameki দ্বারা
+> 🎥 ভিডিও দেখতে উপরের ছবিতে ক্লিক করুন: দায়িত্বশীল AI ড্যাশবোর্ড: বাস্তবায়নে রাই-কে একত্রে সজ্জিত করার জন্য একটি এক-স্টপ শপ, বেসমিরা নুশি ও মেহরনূশ সামেকির দ্বারা
-দায়িত্বশীল AI এবং আরও বিশ্বাসযোগ্য মডেল তৈরি করার বিষয়ে আরও জানতে নিম্নলিখিত উপকরণগুলি দেখুন:
+আরও বিশ্বাসযোগ্য মডেল তৈরি ও দায়িত্বশীল AI সম্পর্কে জানতে নিম্নলিখিত উপকরণগুলোর সাহায্য নিন:
-- ML মডেল ডিবাগ করার জন্য Microsoft-এর RAI ড্যাশবোর্ড টুল: [দায়িত্বশীল AI টুল রিসোর্স](https://aka.ms/rai-dashboard)
+- মাইক্রোসফটের 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)
+- মাইক্রোসফটের 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/)
+- মাইক্রোসফটের FATE গবেষণা গ্রুপ: [FATE: ন্যায্যতা, হিসাবদারি, স্বচ্ছতা এবং AI-তে নীতি - মাইক্রোসফট রিসার্চ](https://www.microsoft.com/research/theme/fate/)
## অ্যাসাইনমেন্ট
@@ -150,5 +173,7 @@ RAI ড্যাশবোর্ডের ফিচার ইম্পরট্
---
-**অস্বীকৃতি**:
-এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিকতার জন্য চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা দায়বদ্ধ থাকব না।
\ No newline at end of file
+
+**অস্বীকৃতি**:
+এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনূদিত হয়েছে। যদিও আমরা শুদ্ধতার জন্য চেষ্টা করি, অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল নথিটি তার স্বভাষায় কর্তৃত্বপূর্ণ উৎস হিসেবে বিবেচিত হওয়া উচিত। গুরুত্বপূর্ণ তথ্যের জন্য পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদের ব্যবহারে প্রয়োজনীয় ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়বদ্ধ নই।
+
\ No newline at end of file
diff --git a/translations/cs/.co-op-translator.json b/translations/cs/.co-op-translator.json
index 31813f583..4f8050b23 100644
--- a/translations/cs/.co-op-translator.json
+++ b/translations/cs/.co-op-translator.json
@@ -24,8 +24,8 @@
"language_code": "cs"
},
"1-Introduction/3-fairness/README.md": {
- "original_hash": "9a6b702d1437c0467e3c5c28d763dac2",
- "translation_date": "2025-09-05T00:21:33+00:00",
+ "original_hash": "0f00d72169a0d37eecfd16d71e01700a",
+ "translation_date": "2026-07-14T04:34:48+00:00",
"source_file": "1-Introduction/3-fairness/README.md",
"language_code": "cs"
},
@@ -54,8 +54,8 @@
"language_code": "cs"
},
"2-Regression/1-Tools/README.md": {
- "original_hash": "fa81d226c71d5af7a2cade31c1c92b88",
- "translation_date": "2025-09-04T23:35:46+00:00",
+ "original_hash": "0b8635427b582d03ea4ab7089b93e505",
+ "translation_date": "2026-07-14T04:31:46+00:00",
"source_file": "2-Regression/1-Tools/README.md",
"language_code": "cs"
},
@@ -72,8 +72,8 @@
"language_code": "cs"
},
"2-Regression/2-Data/README.md": {
- "original_hash": "7c077988328ebfe33b24d07945f16eca",
- "translation_date": "2025-09-04T23:41:01+00:00",
+ "original_hash": "a58b2c4d16c6b122643391745ac15af6",
+ "translation_date": "2026-07-14T04:32:46+00:00",
"source_file": "2-Regression/2-Data/README.md",
"language_code": "cs"
},
@@ -89,6 +89,12 @@
"source_file": "2-Regression/2-Data/solution/Julia/README.md",
"language_code": "cs"
},
+ "2-Regression/2-Data/solution/notebook.ipynb": {
+ "original_hash": "96b95f8cf473481f2f371de8156f1571",
+ "translation_date": "2026-07-14T04:08:06+00:00",
+ "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
+ "language_code": "cs"
+ },
"2-Regression/3-Linear/README.md": {
"original_hash": "8b776e731c35b171d316d01d0e7b1369",
"translation_date": "2026-04-26T19:03:47+00:00",
@@ -457,7 +463,7 @@
},
"8-Reinforcement/1-QLearning/README.md": {
"original_hash": "911efd5e595089000cb3c16fce1beab8",
- "translation_date": "2025-09-05T01:06:51+00:00",
+ "translation_date": "2026-07-14T04:33:52+00:00",
"source_file": "8-Reinforcement/1-QLearning/README.md",
"language_code": "cs"
},
@@ -523,7 +529,7 @@
},
"9-Real-World/2-Debugging-ML-Models/README.md": {
"original_hash": "df2b538e8fbb3e91cf0419ae2f858675",
- "translation_date": "2025-09-05T00:15:11+00:00",
+ "translation_date": "2026-07-14T04:35:50+00:00",
"source_file": "9-Real-World/2-Debugging-ML-Models/README.md",
"language_code": "cs"
},
@@ -581,6 +587,19 @@
"source_file": "TROUBLESHOOTING.md",
"language_code": "cs"
},
+ "__translation_failures__": {
+ "sketchnotes/LICENSE.md": {
+ "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f",
+ "source_file": "sketchnotes/LICENSE.md",
+ "language_code": "cs",
+ "failure_date": "2026-07-14T04:30:52+00:00",
+ "status": "failed",
+ "error_type": "TranslationIncompleteError",
+ "error_message": "Markdown translation remained incomplete for chunk 1.1.1 of 'LICENSE.md', and the chunk could not be split further.",
+ "translator_version": "0.20.0",
+ "failure_policy_version": 1
+ }
+ },
"docs/_sidebar.md": {
"original_hash": "68dd06c685f6ce840e0acfa313352e7c",
"translation_date": "2025-09-05T00:08:07+00:00",
diff --git a/translations/cs/1-Introduction/3-fairness/README.md b/translations/cs/1-Introduction/3-fairness/README.md
index ab7ac8471..acc2c9691 100644
--- a/translations/cs/1-Introduction/3-fairness/README.md
+++ b/translations/cs/1-Introduction/3-fairness/README.md
@@ -1,30 +1,30 @@
-# Budování řešení strojového učení s odpovědnou AI
-
-
-> Sketchnote od [Tomomi Imura](https://www.twitter.com/girlie_mac)
-
-## [Kvíz před lekcí](https://ff-quizzes.netlify.app/en/ml/)
+# Tvorba řešení strojového učení s odpovědnou umělou inteligencí
+
+
+> Náčrt od [Tomomi Imura](https://www.twitter.com/girlie_mac)
+## [Přednáškový kvíz](https://ff-quizzes.netlify.app/en/ml/)
+
## Úvod
-V tomto kurzu začnete objevovat, jak strojové učení ovlivňuje a může ovlivňovat náš každodenní život. Již nyní jsou systémy a modely zapojeny do každodenních rozhodovacích úkolů, jako jsou diagnózy ve zdravotnictví, schvalování půjček nebo odhalování podvodů. Je tedy důležité, aby tyto modely fungovaly dobře a poskytovaly důvěryhodné výsledky. Stejně jako u jakékoli softwarové aplikace, i systémy AI mohou selhat nebo mít nežádoucí výsledek. Proto je zásadní být schopen porozumět a vysvětlit chování modelu AI.
+V tomto kurzu začnete objevovat, jak strojové učení ovlivňuje náš každodenní život. Již nyní jsou systémy a modely zapojeny do každodenních rozhodovacích úloh, jako jsou zdravotnické diagnózy, schvalování půjček nebo detekce podvodů. Je proto důležité, aby tyto modely fungovaly dobře a poskytovaly výsledky, kterým lze důvěřovat. Stejně jako jakýkoli software, i AI systémy mohou nesplnit očekávání nebo mít nežádoucí výsledek. Proto je zásadní být schopen pochopit a vysvětlit chování AI modelu.
-Představte si, co se může stát, když data, která používáte k vytváření těchto modelů, postrádají určité demografické údaje, jako je rasa, pohlaví, politický názor, náboženství, nebo naopak nepřiměřeně zastupují určité demografické skupiny. Co když je výstup modelu interpretován tak, že upřednostňuje určitou demografickou skupinu? Jaké to má důsledky pro aplikaci? A co se stane, když model má nepříznivý výsledek a je škodlivý pro lidi? Kdo je odpovědný za chování systému AI? To jsou některé otázky, které budeme v tomto kurzu zkoumat.
+Představte si, co se stane, když data, která používáte k vytvoření těchto modelů, postrádají určité demografické skupiny, jako je rasa, pohlaví, politický názor, náboženství, nebo tyto skupiny nepoměrně reprezentují. Co když je výstup modelu interpretován tak, že preferuje nějakou demografickou skupinu? Jaký má to důsledek pro aplikaci? Navíc, co když má model nežádoucí výsledek a ubližuje lidem? Kdo je odpovědný za chování AI systému? To jsou některé otázky, které v tomto kurzu prozkoumáme.
-V této lekci se naučíte:
+V této lekci si:
-- Zvýšit povědomí o důležitosti spravedlnosti ve strojovém učení a o škodách spojených s nespravedlností.
-- Seznámit se s praxí zkoumání odlehlých hodnot a neobvyklých scénářů pro zajištění spolehlivosti a bezpečnosti.
-- Porozumět potřebě posilovat všechny tím, že navrhujete inkluzivní systémy.
-- Prozkoumat, jak je důležité chránit soukromí a bezpečnost dat a lidí.
-- Uvědomit si význam přístupu „skleněné krabice“ pro vysvětlení chování modelů AI.
-- Být si vědomi toho, jak je odpovědnost klíčová pro budování důvěry v systémy AI.
+- Zvýšíte povědomí o důležitosti spravedlnosti ve strojovém učení a škodách souvisejících se spravedlností.
+- Se seznámíte s praxí zkoumání odlehlých případů a neobvyklých scénářů pro zajištění spolehlivosti a bezpečnosti
+- Získáte pochopení potřeby posílit každého navrhováním inkluzivních systémů
+- Prozkoumáte, jak je zásadní chránit soukromí a bezpečnost dat a lidí
+- Uvidíte důležitost přístupu s otevřenou schránkou ke vysvětlení chování AI modelů
+- Budete si vědomi, jak je odpovědnost nezbytná pro budování důvěry v AI systémy
## Předpoklady
-Jako předpoklad si projděte „Principy odpovědné AI“ na Learn Path a podívejte se na níže uvedené video na toto téma:
+Jako předpoklad prosím absolvujte "Principy odpovědné AI" v Learning Path a podívejte se na video níže na toto téma:
-Zjistěte více o odpovědné AI prostřednictvím tohoto [Learning Path](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)
+Dozvíte se více o odpovědné AI tím, že budete sledovat tento [Learning Path](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)
[](https://youtu.be/dnC8-uUZXSc "Přístup Microsoftu k odpovědné AI")
@@ -32,107 +32,128 @@ Zjistěte více o odpovědné AI prostřednictvím tohoto [Learning Path](https:
## Spravedlnost
-Systémy AI by měly zacházet se všemi spravedlivě a vyhnout se tomu, aby ovlivňovaly podobné skupiny lidí různými způsoby. Například když systémy AI poskytují doporučení ohledně lékařské péče, žádostí o půjčky nebo zaměstnání, měly by dávat stejná doporučení všem s podobnými symptomy, finančními podmínkami nebo profesními kvalifikacemi. Každý z nás jako člověk má vrozené předsudky, které ovlivňují naše rozhodnutí a jednání. Tyto předsudky se mohou projevit v datech, která používáme k trénování systémů AI. Taková manipulace může někdy nastat neúmyslně. Často je obtížné vědomě rozpoznat, kdy do dat zavádíte předsudky.
+AI systémy by měly zacházet se všemi spravedlivě a vyhnout se tomu, aby ovlivňovaly podobné skupiny lidí různými způsoby. Například, když AI systémy poskytují doporučení ohledně lékařské léčby, žádostí o půjčku nebo zaměstnání, měly by všem s podobnými příznaky, finanční situací nebo profesní kvalifikací doporučit to samé. Každý z nás jako lidé nosí s sebou zděděné předsudky, které ovlivňují naše rozhodnutí a činy. Tyto předsudky mohou být patrné v datech, která používáme k tréninku AI systémů. Taková manipulace se někdy děje neúmyslně. Často je obtížné si vědomě uvědomit, kdy data zkreslujete.
-**„Nespravedlnost“** zahrnuje negativní dopady, nebo „škody“, na skupinu lidí, například definovanou podle rasy, pohlaví, věku nebo zdravotního postižení. Hlavní škody spojené se spravedlností lze klasifikovat jako:
+**„Nespravedlnost“** zahrnuje negativní dopady, nebo „škody“ pro skupinu lidí, například definovanou podle rasy, pohlaví, věku nebo zdravotního postižení. Hlavní škody související se spravedlností lze klasifikovat jako:
-- **Alokace**, pokud je například upřednostňováno jedno pohlaví nebo etnická skupina před jinou.
-- **Kvalita služby**. Pokud trénujete data pro jeden konkrétní scénář, ale realita je mnohem složitější, vede to k špatně fungující službě. Například dávkovač mýdla, který nedokázal rozpoznat lidi s tmavou pletí. [Reference](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
-- **Očernění**. Nespravedlivé kritizování a označování něčeho nebo někoho. Například technologie označování obrázků nesprávně označila obrázky lidí s tmavou pletí jako gorily.
-- **Nad- nebo podreprezentace**. Myšlenka, že určitá skupina není vidět v určité profesi, a jakákoli služba nebo funkce, která to nadále podporuje, přispívá ke škodě.
-- **Stereotypizace**. Spojování určité skupiny s předem přiřazenými atributy. Například systém překladu mezi angličtinou a turečtinou může mít nepřesnosti kvůli slovům se stereotypními asociacemi k pohlaví.
+- **Přidělení**, pokud je například preferováno nějaké pohlaví nebo etnikum.
+- **Kvalita služby**. Pokud trénujete data pro jeden specifický scénář, ale realita je mnohem složitější, vede to k špatně fungující službě. Například dávkovač tekutého mýdla, který nedokázal rozpoznat lidi s tmavou pokožkou. [Reference](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
+- **Ošklivé označování**. Nespravedlivé kritizování a označování něčeho nebo někoho. Například technologie značkování obrázků neslavně označila obrázky tmavé pleti lidí jako gorily.
+- **Nadměrné nebo nedostatečné zastoupení**. Myšlenka, že určitá skupina není vidět v určité profesi, a každá služba nebo funkce, která toto podporuje, přispívá ke škodě.
+- **Stereotypizace**. Přiřazování dané skupině předem určených atributů. Například jazykový překladový systém mezi angličtinou a turečtinou může mít nepřesnosti kvůli slovům s genderově stereotypními asociacemi.
-
+
> překlad do turečtiny
-
+
> překlad zpět do angličtiny
-Při navrhování a testování systémů AI musíme zajistit, že AI je spravedlivá a není naprogramována tak, aby činila zaujatá nebo diskriminační rozhodnutí, která jsou zakázána i lidem. Zajištění spravedlnosti v AI a strojovém učení zůstává složitou sociotechnickou výzvou.
+Při návrhu a testování AI systémů musíme zajistit, aby AI byla spravedlivá a nebyla naprogramována k rozhodnutím s předsudky nebo diskriminačním rozhodnutím, která jsou lidským bytostem také zakázána. Zajištění spravedlnosti v AI a strojovém učení je stále složitou sociotechnickou výzvou.
### Spolehlivost a bezpečnost
-Pro budování důvěry musí být systémy AI spolehlivé, bezpečné a konzistentní za normálních i neočekávaných podmínek. Je důležité vědět, jak se systémy AI budou chovat v různých situacích, zejména když se jedná o odlehlé hodnoty. Při budování řešení AI je třeba věnovat značnou pozornost tomu, jak zvládnout širokou škálu okolností, se kterými se řešení AI může setkat. Například samořídící auto musí klást bezpečnost lidí na první místo. Výsledkem je, že AI pohánějící auto musí zohlednit všechny možné scénáře, se kterými se auto může setkat, jako je noc, bouřky nebo sněhové bouře, děti běžící přes ulici, domácí mazlíčci, silniční stavby atd. Jak dobře systém AI dokáže spolehlivě a bezpečně zvládnout širokou škálu podmínek, odráží úroveň předvídavosti, kterou datový vědec nebo vývojář AI zohlednil při návrhu nebo testování systému.
+Aby AI systémy vyvolaly důvěru, musí být spolehlivé, bezpečné a konzistentní za normálních i neočekávaných podmínek. Je důležité vědět, jak se AI systémy budou chovat v různých situacích, zejména pokud jde o odlehlé případy. Při vytváření AI řešení je třeba věnovat značnou pozornost tomu, jak zvládat širokou škálu okolností, se kterými se AI řešení mohou setkat. Například samořiditelné auto musí klást bezpečnost lidí na první místo. Výsledkem je, že AI, která auto pohání, musí zvážit všechny možné scénáře, jako je noc, bouřky nebo sněhové vánice, děti přebíhající přes ulici, domácí mazlíčci, silniční práce atd. Jak dobře může AI systém spolehlivě a bezpečně zvládnout širokou škálu podmínek odráží míru předvídavosti, kterou vědec zabývající se daty nebo vývojář AI při návrhu či testování systému zohlednil.
> [🎥 Klikněte zde pro video: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
### Inkluzivita
-Systémy AI by měly být navrženy tak, aby zapojily a posílily všechny. Při navrhování a implementaci systémů AI datoví vědci a vývojáři AI identifikují a řeší potenciální bariéry v systému, které by mohly neúmyslně vyloučit lidi. Například na světě je 1 miliarda lidí s postižením. Díky pokroku v AI mohou snadněji přistupovat k široké škále informací a příležitostí ve svém každodenním životě. Řešením bariér vznikají příležitosti k inovacím a vývoji produktů AI s lepšími zkušenostmi, které přinášejí užitek všem.
+AI systémy by měly být navrženy tak, aby zapojily a posílily každého. Při návrhu a implementaci AI systémů identifikují datoví vědci a vývojáři AI případné bariéry v systému, které by mohly neúmyslně vyloučit lidi. Například na světě je 1 miliarda lidí s postižením. Díky pokroku AI mají oni snadnější přístup k širokému spektru informací a příležitostí ve svém každodenním životě. Odstraňováním bariér se vytvářejí příležitosti k inovacím a vývoji AI produktů s lepšími zkušenostmi, které prospívají všem.
> [🎥 Klikněte zde pro video: inkluzivita v AI](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
### Bezpečnost a soukromí
-Systémy AI by měly být bezpečné a respektovat soukromí lidí. Lidé mají menší důvěru v systémy, které ohrožují jejich soukromí, informace nebo životy. Při trénování modelů strojového učení se spoléháme na data, abychom dosáhli co nejlepších výsledků. Při tom je třeba zohlednit původ dat a jejich integritu. Například byla data poskytnuta uživateli nebo byla veřejně dostupná? Dále je při práci s daty zásadní vyvíjet systémy AI, které dokážou chránit důvěrné informace a odolávat útokům. Jak se AI stává rozšířenější, ochrana soukromí a zabezpečení důležitých osobních a obchodních informací se stává stále důležitější a složitější. Otázky soukromí a bezpečnosti dat vyžadují zvláštní pozornost u AI, protože přístup k datům je nezbytný pro to, aby systémy AI mohly činit přesné a informované předpovědi a rozhodnutí o lidech.
+AI systémy by měly být bezpečné a respektovat soukromí lidí. Lidé mají menší důvěru ve systémy, které ohrožují jejich soukromí, informace nebo životy. Při tréninku strojových učících se modelů spoléháme na data, abychom dosáhli co nejlepších výsledků. Při tom je třeba zvažovat původ dat a jejich integritu. Například zda data uživatel zadal, nebo zda jsou veřejně dostupná. Dále je během práce s daty klíčové vyvíjet AI systémy, které mohou chránit důvěrné informace a odolávat útokům. Jak AI získává na významu, ochrana soukromí a zabezpečení důležitých osobních a obchodních informací se stává stále kritičtější a složitější. Otázky soukromí a zabezpečení dat vyžadují zvláštní pozornost u AI, protože přístup k datům je nezbytný pro AI systémy, aby mohly přesně a informovaně předpovídat a rozhodovat o lidech.
> [🎥 Klikněte zde pro video: bezpečnost v AI](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- Jako průmysl jsme dosáhli významného pokroku v oblasti soukromí a bezpečnosti, výrazně podpořeného regulacemi, jako je GDPR (Obecné nařízení o ochraně osobních údajů).
-- Přesto u systémů AI musíme uznat napětí mezi potřebou více osobních dat pro zlepšení personalizace a efektivity systémů – a ochranou soukromí.
-- Stejně jako při vzniku propojených počítačů s internetem, vidíme také obrovský nárůst počtu bezpečnostních problémů souvisejících s AI.
-- Zároveň jsme viděli, že AI je využívána ke zlepšení bezpečnosti. Například většina moderních antivirových skenerů je dnes poháněna heuristikou AI.
-- Musíme zajistit, aby naše procesy datové vědy harmonicky zapadaly do nejnovějších postupů v oblasti soukromí a bezpečnosti.
+- Jako odvětví jsme dosáhli významných pokroků v oblasti soukromí a bezpečnosti, významně podpořených regulacemi jako GDPR (Obecné nařízení o ochraně osobních údajů).
+- Přesto u AI systémů musíme uznat napětí mezi potřebou více osobních dat, aby systémy byly osobnější a efektivnější – a ochranou soukromí.
+- Stejně jako při vzniku připojených počítačů s internetem sledujeme výrazný nárůst bezpečnostních problémů souvisejících s AI.
+- Současně jsme také viděli, že AI se používá ke zlepšení bezpečnosti. Například většina moderních antivirových skenerů je dnes řízena AI heuristikami.
+- Musíme zajistit, aby naše procesy datové vědy harmonicky splývaly s nejnovějšími praktikami ochrany soukromí a bezpečnosti.
-### Transparentnost
-Systémy AI by měly být srozumitelné. Klíčovou součástí transparentnosti je vysvětlení chování systémů AI a jejich komponent. Zlepšení porozumění systémům AI vyžaduje, aby zainteresované strany pochopily, jak a proč fungují, aby mohly identifikovat potenciální problémy s výkonem, obavy o bezpečnost a soukromí, předsudky, vylučující praktiky nebo nechtěné výsledky. Věříme také, že ti, kdo používají systémy AI, by měli být upřímní a otevření ohledně toho, kdy, proč a jak se rozhodnou je nasadit. Stejně tak o omezeních systémů, které používají. Například pokud banka používá systém AI k podpoře svých rozhodnutí o spotřebitelských půjčkách, je důležité zkoumat výsledky a pochopit, která data ovlivňují doporučení systému. Vlády začínají regulovat AI napříč odvětvími, takže datoví vědci a organizace musí vysvětlit, zda systém AI splňuje regulační požadavky, zejména když dojde k nežádoucímu výsledku.
+### Transparentnost
+AI systémy by měly být pochopitelné. Klíčovou součástí transparentnosti je vysvětlování chování AI systémů a jejich komponent. Zlepšení porozumění AI systémům vyžaduje, aby zainteresované strany rozuměly jak a proč fungují, aby mohly identifikovat možné problémy s výkonem, bezpečnostní a soukromí rizika, předsudky, výlučné praktiky nebo nežádoucí výsledky. Také věříme, že ti, kdo AI systémy používají, by měli být upřímní a otevření ohledně toho, kdy, proč a jak se rozhodli je nasadit. A také o omezeních systémů, které používají. Například pokud banka používá AI systém na podporu svých rozhodnutí o půjčkách pro spotřebitele, je důležité zkoumat výsledky a pochopit, která data ovlivňují doporučení systému. Vlády začínají regulovat AI napříč odvětvími, a proto musí datoví vědci a organizace vysvětlit, zda AI systém splňuje regulatorní požadavky, zejména pokud dojde k nežádoucímu výsledku.
> [🎥 Klikněte zde pro video: transparentnost v AI](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- Protože systémy AI jsou tak složité, je těžké pochopit, jak fungují a interpretovat výsledky.
-- Tento nedostatek porozumění ovlivňuje způsob, jakým jsou tyto systémy spravovány, provozovány a dokumentovány.
-- Tento nedostatek porozumění především ovlivňuje rozhodnutí učiněná na základě výsledků, které tyto systémy produkují.
+- Protože AI systémy jsou tak složité, je obtížné pochopit, jak fungují, a interpretovat výsledky.
+- Tento nedostatek porozumění ovlivňuje způsob, jakým jsou tyto systémy spravovány, zaváděny a dokumentovány.
+- Tento nedostatek porozumění ovlivňuje nade vše rozhodnutí učiněná na základě výsledků, které tyto systémy produkují.
### Odpovědnost
+
+Lidé, kteří navrhují a zavádějí AI systémy, musí být odpovědní za to, jak jejich systémy fungují. Potřeba odpovědnosti je zvlášť důležitá u citlivých technologií, jako je rozpoznávání obličejů. Nedávno vzrostla poptávka po technologii rozpoznávání obličejů, zejména ze strany orgánů činných v trestním řízení, které vidí potenciál této technologie pro použití, například při hledání pohřešovaných dětí. Nicméně tyto technologie by mohly být potenciálně použity vládou k ohrožení základních svobod občanů například umožněním trvalého sledování konkrétních jednotlivců. Proto je třeba, aby datoví vědci a organizace nesli odpovědnost za to, jak jejich AI systém ovlivňuje jednotlivce nebo společnost.
-Lidé, kteří navrhují a nasazují systémy AI, musí být odpovědní za to, jak jejich systémy fungují. Potřeba odpovědnosti je obzvláště důležitá u technologií citlivého použití, jako je rozpoznávání obličeje. V poslední době roste poptávka po technologii rozpoznávání obličeje, zejména ze strany orgánů činných v trestním řízení, které vidí potenciál této technologie například při hledání pohřešovaných dětí. Tyto technologie však mohou být potenciálně využívány vládou k ohrožení základních svobod občanů, například umožněním nepřetržitého sledování konkrétních jednotlivců. Proto musí být datoví vědci a organizace odpovědní za to, jak jejich systém AI ovlivňuje jednotlivce nebo společnost.
+[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Přístup Microsoftu k odpovědné AI")
-[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Přístup Microsoftu k odpovědné AI")
+> 🎥 Klikněte na obrázek výše pro video: Varování před masovým sledováním pomocí rozpoznávání obličejů
-> 🎥 Klikněte na obrázek výše pro video: Varování před masovým sledováním prostřednictvím rozpoznávání obličeje
+Nakonec jedna z největších otázek pro naši generaci, jako první generaci, která přináší AI do společnosti, je, jak zajistit, aby počítače zůstaly odpovědné vůči lidem a jak zajistit, aby lidé, kteří počítače navrhují, zůstali odpovědní vůči všem ostatním.
-Nakonec jednou z největších otázek pro naši generaci, jako první generaci, která přináší AI do společnosti, je, jak zajistit, aby počítače zůstaly odpovědné vůči lidem a jak zajistit, aby lidé, kteří počítače navrhují, zůstali odpovědní vůči všem ostatním.
+## Hodnocení dopadů
-## Posouzení dopadu
+Před tréninkem strojového učícího modelu je důležité provést hodnocení dopadů, aby se pochopil účel AI systému; jaké je jeho zamýšlené použití; kde bude nasazen; a kdo s ním bude interagovat. Tyto informace jsou užitečné pro hodnotitele nebo testery systému, kteří potřebují vědět, jaké faktory zvážit při identifikaci potenciálních rizik a očekávaných důsledků.
-Před trénováním modelu strojového učení je důležité provést posouzení dopadu, abyste pochopili účel systému AI; jaké je zamýšlené použití; kde bude nasazen; a kdo bude se systémem interagovat. Tyto informace jsou užitečné pro recenzenty nebo testery, kteří hodnotí systém, aby věděli, jaké faktory je třeba vzít v úvahu při identifikaci potenciálních rizik a očekávaných důsledků.
+Následují oblasti zaměření při provádění hodnocení dopadů:
-Následující oblasti jsou klíčové při provádění posouzení dopadu:
+* **Nepříznivý dopad na jednotlivce**. Být si vědom jakýchkoli omezení nebo požadavků, nepodporovaného použití nebo jakýchkoli známých omezení, která brání výkonu systému, je nezbytné, aby se zajistilo, že systém nebude používán způsobem, který by mohl způsobit škody jednotlivcům.
+* **Požadavky na data**. Pochopení toho, jak a kde systém bude data používat, umožňuje hodnotitelům prozkoumat požadavky na data, na které je třeba dbát (např. regulace GDPR nebo HIPAA). Dále je třeba zkontrolovat, zda je zdroj nebo množství dat dostačující pro trénink.
+* **Shrnutí dopadů**. Shromáždit seznam potenciálních škod, které by mohly vzniknout použitím systému. Během životního cyklu ML pravidelně kontrolovat, zda jsou zjištěné problémy zmírněny nebo řešeny.
+* **Platné cíle** pro každý ze šesti základních principů. Zhodnotit, zda jsou cíle z každého z principů splněny a zda jsou nějaké mezery.
-* **Nepříznivý dopad na jednotlivce**. Být si vědom jakýchkoli omezení nebo požadavků, nepodporovaného použití nebo známých omezení, která brání výkonu systému, je zásadní pro zajištění toho, že systém nebude používán způsobem, který by mohl způsobit škodu jednotlivcům.
-* **Požadavky na data**. Získání porozumění tomu, jak a kde systém bude používat data, umožňuje recenzentům prozkoumat jakékoli požadavky na data, na které byste měli být ohleduplní (např. GDPR nebo HIPPA regulace dat). Dále je třeba zkoumat, zda je zdroj nebo množství dat dostatečné pro trénování.
-* **Shrnutí dopadu**. Sestavte seznam potenciálních škod, které by mohly vzniknout při používání systému. Během životního cyklu ML zkontrolujte, zda byly identifikované problémy zmírněny nebo vyřešeny.
-* **Platné cíle** pro každou ze šesti základních zásad. Posuďte, zda byly cíle z každé zásady splněny a zda existují nějaké mezery.
## Ladění s odpovědnou AI
-Podobně jako ladění softwarové aplikace je ladění systému AI nezbytným procesem identifikace a řešení problémů v systému. Existuje mnoho faktorů, které mohou ovlivnit, že model nefunguje podle očekávání nebo odpovědně. Většina tradičních metrik výkonu modelu jsou kvantitativní agregáty výkonu modelu, které nejsou dostatečné k analýze, jak model porušuje zásady odpovědné AI. Navíc je model strojového učení černou skříňkou, což ztěžuje pochopení, co ovlivňuje jeho výstup, nebo poskytování vysvětlení, když udělá chybu. Později v tomto kurzu se naučíme, jak používat dashboard odpovědné AI k ladění systémů AI. Dashboard poskytuje komplexní nástroj pro datové vědce a vývojáře AI k provádění:
+Podobně jako ladění softwarové aplikace je ladění AI systému nezbytným postupem identifikace a řešení problémů v systému. Existuje mnoho faktorů, které by mohly způsobit, že model nebude fungovat podle očekávání nebo odpovědně. Většina tradičních metrik výkonnosti modelu jsou kvantitativní agregáty výkonu modelu, které však nejsou dostačující k analýze toho, jak model porušuje principy odpovědné AI. Navíc je model strojového učení černá skříňka, která ztěžuje pochopení toho, co ovlivňuje jeho výsledek, nebo poskytnutí vysvětlení, když udělá chybu. Později v tomto kurzu se naučíme používat řídicí panel Responsible AI k ladění AI systémů. Tento řídicí panel poskytuje komplexní nástroj pro datové vědce a vývojáře AI k provádění:
+
+* **Analýza chyb**. Identifikovat rozložení chyb modelu, které mohou ovlivnit spravedlnost nebo spolehlivost systému.
+* **Přehled modelu**. Objevit, kde existují rozdíly ve výkonu modelu napříč datovými kohortami.
+* **Analýza dat**. Pochopit rozložení dat a identifikovat možné předsudky v datech, které by mohly vést k problémům se spravedlností, inkluzivitou a spolehlivostí.
+* **Interpretovatelnost modelu**. Porozumět tomu, co ovlivňuje nebo určuje předpovědi modelu. To pomáhá při vysvětlování chování modelu, což je důležité pro transparentnost a odpovědnost.
+
+
+## 🚀 Výzva
+
+Abychom zabránili vzniku škod již v zárodku, měli bychom:
+
+- mít rozmanitost zázemí a názorů mezi lidmi pracujícími na systémech
+- investovat do datových sad, které odrážejí rozmanitost naší společnosti
+- vyvíjet lepší metody během celého životního cyklu strojového učení pro detekci a opravu odpovědné AI, když k ní dojde
+
+Zamyslete se nad reálnými scénáři, kde je nedůvěryhodnost modelu evidentní při tvorbě a používání modelu. Co dalšího bychom měli zvážit?
+
+## [Povídkový kvíz](https://ff-quizzes.netlify.app/en/ml/)
+
+## Recenze a samostudium
+
-* **Analýzy chyb**. Identifikace rozložení chyb modelu, které mohou ovlivnit spravedlnost nebo spolehlivost systému.
-* **Přehledu modelu**. Objevování, kde jsou rozdíly ve výkonu modelu napříč datovými kohortami.
-* **Analýzy dat**. Porozumění rozložení dat a identifikace jakéhokoli potenciálního předsudku v datech, který by mohl vést k problémům se spravedlností
-Podívejte se na tento workshop, abyste se ponořili hlouběji do témat:
+V této lekci jste se naučili základy konceptů spravedlnosti a nespravedlnosti v oblasti strojového učení.
+
+Podívejte se na tento workshop, ve kterém se do těchto témat ponoříte hlouběji:
-- V hledání odpovědné AI: Přenesení principů do praxe od Besmiry Nushi, Mehrnoosh Sameki a Amita Sharmy
+- V úsilí o odpovědnou AI: Převádění principů do praxe od Besmiry Nushi, Mehrnoosh Sameki a Amita Sharma
-[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: Open-source rámec pro budování odpovědné AI")
+[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI")
-> 🎥 Klikněte na obrázek výše pro video: RAI Toolbox: Open-source rámec pro budování odpovědné AI od Besmiry Nushi, Mehrnoosh Sameki a Amita Sharmy
+> 🎥 Klikněte na obrázek výše pro video: RAI Toolbox: Open source rámec pro vytváření odpovědné AI od Besmiry Nushi, Mehrnoosh Sameki a Amita Sharma
-Také si přečtěte:
+Také si přečtěte:
-- Microsoftův RAI zdrojový centrum: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
+- Centrum zdrojů pro odpovědnou AI Microsoftu: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
-- Microsoftova výzkumná skupina FATE: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
+- Výzkumná skupina FATE Microsoftu: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
-RAI Toolbox:
+RAI Toolbox:
- [GitHub repozitář Responsible AI Toolbox](https://github.com/microsoft/responsible-ai-toolbox)
Přečtěte si o nástrojích Azure Machine Learning pro zajištění spravedlnosti:
-- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
+- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
## Úkol
@@ -140,5 +161,7 @@ Přečtěte si o nástrojích Azure Machine Learning pro zajištění spravedlno
---
-**Prohlášení**:
-Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace doporučujeme profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu.
\ No newline at end of file
+
+**Prohlášení o omezení odpovědnosti**:
+Tento dokument byl přeložen pomocí AI překladatelské služby [Co-op Translator](https://github.com/Azure/co-op-translator). Přestože usilujeme o co největší přesnost, mějte prosím na paměti, že automatizované překlady mohou obsahovat chyby nebo nepřesnosti. Originální dokument v jeho mateřském jazyce by měl být považován za autoritativní zdroj. Pro kritické informace se doporučuje profesionální lidský překlad. Nejsme odpovědní za jakékoli nedorozumění nebo nesprávné interpretace vzniklé použitím tohoto překladu.
+
\ No newline at end of file
diff --git a/translations/cs/2-Regression/1-Tools/README.md b/translations/cs/2-Regression/1-Tools/README.md
index 63e02081a..7b234991a 100644
--- a/translations/cs/2-Regression/1-Tools/README.md
+++ b/translations/cs/2-Regression/1-Tools/README.md
@@ -1,120 +1,121 @@
-# Začínáme s Pythonem a Scikit-learn pro regresní modely
+# Začněte s Pythonem a Scikit-learn pro regresní modely
-
+
> Sketchnote od [Tomomi Imura](https://www.twitter.com/girlie_mac)
-## [Kvíz před lekcí](https://ff-quizzes.netlify.app/en/ml/)
+## [Přednáškový kvíz](https://ff-quizzes.netlify.app/en/ml/)
> ### [Tato lekce je dostupná v R!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
## Úvod
-V těchto čtyřech lekcích se naučíte, jak vytvářet regresní modely. Brzy si vysvětlíme, k čemu slouží. Ale než začnete, ujistěte se, že máte správné nástroje pro zahájení procesu!
+V těchto čtyřech lekcích objevíte, jak vytvářet regresní modely. Brzy si vysvětlíme, k čemu slouží. Než však začnete, ujistěte se, že máte správné nástroje připravené ke startu!
-V této lekci se naučíte:
+V této lekci se naučíte, jak:
-- Nastavit váš počítač pro úlohy strojového učení.
-- Pracovat s Jupyter notebooky.
+- Nakonfigurovat váš počítač pro místní úlohy strojového učení.
+- Pracovat s Jupyter Notebooky.
- Používat Scikit-learn, včetně instalace.
-- Prozkoumat lineární regresi prostřednictvím praktického cvičení.
+- Prozkoumat lineární regresi pomocí praktického cvičení.
## Instalace a konfigurace
-[](https://youtu.be/-DfeD2k2Kj0 "ML pro začátečníky - Nastavte si nástroje pro vytváření modelů strojového učení")
+[](https://youtu.be/-DfeD2k2Kj0 "ML pro začátečníky - Připravte své nástroje pro tvorbu modelů strojového učení")
-> 🎥 Klikněte na obrázek výše pro krátké video o konfiguraci vašeho počítače pro ML.
+> 🎥 Klikněte na obrázek výše pro krátké video, ve kterém se naučíte, jak konfigurovat váš počítač pro ML.
-1. **Nainstalujte Python**. Ujistěte se, že máte na svém počítači nainstalovaný [Python](https://www.python.org/downloads/). Python budete používat pro mnoho úloh v oblasti datové vědy a strojového učení. Většina počítačových systémů již obsahuje instalaci Pythonu. K dispozici jsou také užitečné [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott), které usnadní nastavení pro některé uživatele.
+1. **Nainstalujte Python**. Ujistěte se, že máte na počítači nainstalovaný [Python](https://www.python.org/downloads/). Python budete používat pro mnoho úloh datové vědy a strojového učení. Většina počítačových systémů již obsahuje instalaci Pythonu. Existují i užitečné [balíčky pro kódování v Pythonu](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott), které některým uživatelům usnadní nastavení.
- Některé použití Pythonu však vyžaduje jednu verzi softwaru, zatímco jiné vyžaduje jinou verzi. Z tohoto důvodu je užitečné pracovat v [virtuálním prostředí](https://docs.python.org/3/library/venv.html).
+ Některé použití Pythonu však vyžadují jednu verzi softwaru, zatímco jiné vyžadují verzi jinou. Proto je užitečné pracovat uvnitř [virtuálního prostředí](https://docs.python.org/3/library/venv.html).
-2. **Nainstalujte Visual Studio Code**. Ujistěte se, že máte na svém počítači nainstalovaný Visual Studio Code. Postupujte podle těchto pokynů pro [instalaci Visual Studio Code](https://code.visualstudio.com/) pro základní instalaci. V tomto kurzu budete používat Python ve Visual Studio Code, takže byste si mohli osvěžit, jak [konfigurovat Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) pro vývoj v Pythonu.
+2. **Nainstalujte Visual Studio Code**. Ujistěte se, že máte na počítači nainstalovaný Visual Studio Code. Postupujte podle těchto instrukcí k [instalaci Visual Studio Code](https://code.visualstudio.com/) pro základní instalaci. V tomto kurzu budete používat Python ve Visual Studio Code, takže možná budete chtít osvěžit, jak [nastavit Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) pro vývoj v Pythonu.
- > Získejte jistotu v Pythonu prostřednictvím této sbírky [modulů Learn](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)
+ > Získejte jistotu v Pythonu tím, že projdete tuto sbírku [učebních modulů](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)
>
> [](https://youtu.be/yyQM70vi7V8 "Nastavení Pythonu ve Visual Studio Code")
>
> 🎥 Klikněte na obrázek výše pro video: používání Pythonu ve VS Code.
-3. **Nainstalujte Scikit-learn** podle [těchto pokynů](https://scikit-learn.org/stable/install.html). Protože je potřeba zajistit, že používáte Python 3, doporučuje se použít virtuální prostředí. Pokud instalujete tuto knihovnu na Mac s procesorem M1, na stránce výše jsou speciální pokyny.
+3. **Nainstalujte Scikit-learn** podle [těchto instrukcí](https://scikit-learn.org/stable/install.html). Protože je potřeba používat Python 3, doporučuje se použít virtuální prostředí. Vezměte na vědomí, že pokud knihovnu instalujete na M1 Macu, jsou na výše uvedené stránce speciální instrukce.
-4. **Nainstalujte Jupyter Notebook**. Budete potřebovat [nainstalovat balíček Jupyter](https://pypi.org/project/jupyter/).
+1. **Nainstalujte Jupyter Notebook**. Budete potřebovat [nainstalovat balíček Jupyter](https://pypi.org/project/jupyter/).
## Vaše prostředí pro tvorbu ML
-Budete používat **notebooky** k vývoji vašeho Python kódu a vytváření modelů strojového učení. Tento typ souboru je běžným nástrojem pro datové vědce a lze jej identifikovat podle přípony `.ipynb`.
+Budete používat **notebooky** k vývoji vašeho Python kódu a tvorbě modelů strojového učení. Tento typ souboru je běžným nástrojem datových vědců a poznáte je podle přípony `.ipynb`.
-Notebooky jsou interaktivní prostředí, které umožňuje vývojáři nejen kódovat, ale také přidávat poznámky a psát dokumentaci kolem kódu, což je velmi užitečné pro experimentální nebo výzkumné projekty.
+Notebooky jsou interaktivní prostředí, která umožňují vývojáři jak kódovat, tak přidávat poznámky a psát dokumentaci kolem kódu, což je velmi užitečné pro experimentální nebo výzkumné projekty.
-[](https://youtu.be/7E-jC8FLA2E "ML pro začátečníky - Nastavení Jupyter Notebooků pro začátek práce s regresními modely")
+[](https://youtu.be/7E-jC8FLA2E "ML pro začátečníky - Nastavte Jupyter Notebooky pro začátek tvorby regresních modelů")
-> 🎥 Klikněte na obrázek výše pro krátké video o tomto cvičení.
+> 🎥 Klikněte na obrázek výše pro krátké video pracovní cvičení.
### Cvičení - práce s notebookem
-V této složce najdete soubor _notebook.ipynb_.
+V této složce naleznete soubor _notebook.ipynb_.
1. Otevřete _notebook.ipynb_ ve Visual Studio Code.
- Spustí se Jupyter server s Pythonem 3+. Najdete oblasti notebooku, které lze `spustit`, tedy části kódu. Můžete spustit blok kódu výběrem ikony, která vypadá jako tlačítko přehrávání.
+ Spustí se Jupyter server s Pythonem 3+. V notebooku najdete části, které mohou být `spuštěny`, kusy kódu. Blok kódu můžete spustit výběrem ikony vypadající jako tlačítko přehrávání (play).
-2. Vyberte ikonu `md` a přidejte trochu markdownu, například následující text **# Vítejte ve vašem notebooku**.
+1. Vyberte ikonu `md` a přidejte trochu markdownu s následujícím textem **# Vítejte ve vašem notebooku**.
Poté přidejte nějaký Python kód.
-3. Napište **print('hello notebook')** do bloku kódu.
-4. Vyberte šipku pro spuštění kódu.
+1. Napište **print('hello notebook')** ve bloku kódu.
+1. Klikněte na šipku pro spuštění kódu.
- Měli byste vidět vytištěný výstup:
+ Měli byste vidět vytištěné prohlášení:
```output
hello notebook
```
-
+
-Můžete prokládat váš kód komentáři, abyste si sami dokumentovali notebook.
+Můžete prokládat svůj kód komentáři, aby si notebook sám dokumentoval.
-✅ Zamyslete se na chvíli nad tím, jak se pracovní prostředí webového vývojáře liší od prostředí datového vědce.
+✅ Zamyslete se na chvíli, jak odlišné je pracovní prostředí webového vývojáře oproti datovému vědci.
-## Práce se Scikit-learn
+## Spuštění se Scikit-learn
-Nyní, když máte Python nastavený ve vašem lokálním prostředí a jste si jisti prací s Jupyter notebooky, pojďme se stejně tak seznámit se Scikit-learn (vyslovujte `sci` jako `science`). Scikit-learn poskytuje [rozsáhlé API](https://scikit-learn.org/stable/modules/classes.html#api-ref), které vám pomůže provádět úlohy strojového učení.
+Nyní když máte Python nastavený ve vašem lokálním prostředí a jste si jistí v Jupyter Notebookech, pojďme si přivyknout i na Scikit-learn (vyslovujte `sci` jako `science`). Scikit-learn poskytuje [rozsáhlé API](https://scikit-learn.org/stable/modules/classes.html#api-ref), které vám pomůže provádět úlohy ML.
-Podle jejich [webové stránky](https://scikit-learn.org/stable/getting_started.html) je "Scikit-learn open source knihovna strojového učení, která podporuje řízené a neřízené učení. Poskytuje také různé nástroje pro přizpůsobení modelů, předzpracování dat, výběr modelů a jejich hodnocení, a mnoho dalších užitečných funkcí."
+Podle jejich [webu](https://scikit-learn.org/stable/getting_started.html) "Scikit-learn je open source knihovna strojového učení, která podporuje učení s učitelem i bez učitele. Poskytuje také různé nástroje pro fitování modelů, předzpracování dat, výběr modelů a hodnocení, a mnoho dalších utilit."
-V tomto kurzu budete používat Scikit-learn a další nástroje k vytváření modelů strojového učení pro provádění úloh, které nazýváme 'tradiční strojové učení'. Záměrně jsme se vyhnuli neuronovým sítím a hlubokému učení, protože ty jsou lépe pokryty v našem připravovaném kurzu 'AI pro začátečníky'.
+V tomto kurzu budete používat Scikit-learn a další nástroje k vytváření modelů strojového učení, které budou plnit tzv. 'tradiční úlohy strojového učení'. Záměrně jsme vynechali neuronové sítě a hluboké učení, které budou pokryty v našem nadcházejícím kurzu 'AI pro začátečníky'.
-Scikit-learn usnadňuje vytváření modelů a jejich hodnocení pro použití. Primárně se zaměřuje na práci s číselnými daty a obsahuje několik připravených datasetů pro použití jako učební nástroje. Obsahuje také předem připravené modely, které si studenti mohou vyzkoušet. Pojďme prozkoumat proces načítání předbalených dat a použití vestavěného odhadu pro první ML model se Scikit-learn s některými základními daty.
+Scikit-learn výrazně zjednodušuje vytváření modelů a jejich hodnocení pro použití. Zaměřuje se především na práci s číselnými daty a obsahuje několik připravených datasetů, které můžete užít jako učební pomůcky. Zahrnuje také předem vytvořené modely pro studenty k vyzkoušení. Nejprve si pojďme prohlédnout proces načtení předpřipravených dat a použití vestavěného odhadce — prvního ML modelu se Scikit-learn s některými základními daty.
## Cvičení - váš první notebook se Scikit-learn
> Tento tutoriál byl inspirován [příkladem lineární regrese](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) na webu Scikit-learn.
+
[](https://youtu.be/2xkXL5EUpS0 "ML pro začátečníky - Váš první projekt lineární regrese v Pythonu")
-> 🎥 Klikněte na obrázek výše pro krátké video o tomto cvičení.
+> 🎥 Klikněte na obrázek výše pro krátké video s průchodem tímto cvičením.
-V souboru _notebook.ipynb_ přidruženém k této lekci vymažte všechny buňky stisknutím ikony 'koše'.
+V souboru _notebook.ipynb_ přidruženém k této lekci vymažte všechny buňky stisknutím ikony „koš“.
-V této části budete pracovat s malým datasetem o diabetu, který je vestavěný ve Scikit-learn pro učební účely. Představte si, že chcete otestovat léčbu pro diabetické pacienty. Modely strojového učení vám mohou pomoci určit, kteří pacienti by na léčbu reagovali lépe, na základě kombinací proměnných. I velmi základní regresní model, pokud je vizualizován, může ukázat informace o proměnných, které by vám pomohly organizovat vaše teoretické klinické studie.
+V této části budete pracovat s malým datasetem o diabetu, který je součástí Scikit-learn pro účely výuky. Představte si, že chcete testovat léčbu pro pacienty s diabetem. Modely strojového učení vám mohou pomoci určit, kteří pacienti by na léčbu reagovali lépe na základě kombinací proměnných. Dokonce i velmi základní regresní model, pokud ho vizualizujete, může ukázat informace o proměnných, které vám pomohou uspořádat vaše teoretické klinické studie.
-✅ Existuje mnoho typů regresních metod a výběr závisí na otázce, kterou chcete zodpovědět. Pokud chcete předpovědět pravděpodobnou výšku osoby určitého věku, použili byste lineární regresi, protože hledáte **číselnou hodnotu**. Pokud vás zajímá, zda by určitý typ kuchyně měl být považován za veganský nebo ne, hledáte **kategorické přiřazení**, takže byste použili logistickou regresi. Později se dozvíte více o logistické regresi. Zamyslete se nad některými otázkami, které můžete klást datům, a která z těchto metod by byla vhodnější.
+✅ Existuje mnoho typů regresních metod a kterou zvolíte, závisí na odpovědi, kterou hledáte. Pokud chcete předpovědět pravděpodobnou výšku osoby určitého věku, použijete lineární regresi, protože hledáte **číselnou hodnotu**. Pokud vás zajímá, zda by určitý typ kuchyně měl být považován za veganský nebo ne, hledáte **přiřazení do kategorie**, takže byste použili logistickou regresi. O logistické regresi se naučíte později. Zamyslete se trochu nad otázkami, které můžete datům položit, a která z těchto metod by byla vhodnější.
-Pojďme začít s tímto úkolem.
+Pojďme na to.
### Import knihoven
-Pro tento úkol importujeme některé knihovny:
+Pro tento úkol naimportujeme některé knihovny:
-- **matplotlib**. Je to užitečný [nástroj pro grafy](https://matplotlib.org/) a použijeme ho k vytvoření čárového grafu.
-- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) je užitečná knihovna pro práci s číselnými daty v Pythonu.
-- **sklearn**. Toto je [knihovna Scikit-learn](https://scikit-learn.org/stable/user_guide.html).
+- **matplotlib**. Je to užitečný [nástroj pro grafy](https://matplotlib.org/) a použijeme jej k vytvoření čárového grafu.
+- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) je užitečná knihovna pro práci s numerickými daty v Pythonu.
+- **sklearn**. To je [knihovna Scikit-learn](https://scikit-learn.org/stable/user_guide.html).
-Importujte některé knihovny, které vám pomohou s úkoly.
+Naimportujte knihovny pro podporu vašich úloh.
-1. Přidejte importy zadáním následujícího kódu:
+1. Přidejte importy tím, že napíšete následující kód:
```python
import matplotlib.pyplot as plt
@@ -122,26 +123,26 @@ Importujte některé knihovny, které vám pomohou s úkoly.
from sklearn import datasets, linear_model, model_selection
```
- Výše importujete `matplotlib`, `numpy` a importujete `datasets`, `linear_model` a `model_selection` z `sklearn`. `model_selection` se používá pro rozdělení dat na trénovací a testovací sady.
+ Výše importujete `matplotlib`, `numpy` a načítáte `datasets`, `linear_model` a `model_selection` ze `sklearn`. `model_selection` se používá pro rozdělení dat na tréninková a testovací data.
-### Dataset o diabetu
+### Dataset diabetu
-Vestavěný [dataset o diabetu](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) obsahuje 442 vzorků dat o diabetu s 10 proměnnými, mezi které patří:
+V vestavěném [diabetickém datasetu](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) je 442 vzorků dat o diabetu, s 10 proměnnými vlastností, z nichž některé zahrnují:
-- age: věk v letech
+- věk: věk v letech
- bmi: index tělesné hmotnosti
- bp: průměrný krevní tlak
-- s1 tc: T-lymfocyty (typ bílých krvinek)
+- s1 tc: T-buňky (typ bílých krvinek)
-✅ Tento dataset zahrnuje koncept 'pohlaví' jako důležitou proměnnou pro výzkum diabetu. Mnoho lékařských datasetů zahrnuje tento typ binární klasifikace. Zamyslete se nad tím, jak takové kategorizace mohou vyloučit určité části populace z léčby.
+✅ Tento dataset zahrnuje pojem 'pohlaví' jako důležitou proměnnou vlastnost pro výzkum diabetu. Mnoho lékařských datasetů obsahuje tento typ binární klasifikace. Zamyslete se nad tím, jak takové kategorizace mohou vyloučit určité části populace z léčby.
-Nyní načtěte data X a y.
+Teď načtěte data X a y.
-> 🎓 Pamatujte, že se jedná o řízené učení, a potřebujeme pojmenovaný cíl 'y'.
+> 🎓 Pamatujte, toto je učení s učitelem a potřebujeme pojmenovaný cíl 'y'.
-V nové buňce kódu načtěte dataset o diabetu pomocí `load_diabetes()`. Vstup `return_X_y=True` signalizuje, že `X` bude datová matice a `y` bude regresní cíl.
+V nové buňce kódu načtěte dataset diabetu zavoláním `load_diabetes()`. Vstup `return_X_y=True` signalizuje, že `X` bude datová matice a `y` bude cílem regrese.
-1. Přidejte příkazy pro zobrazení tvaru datové matice a jejího prvního prvku:
+1. Přidejte několik příkazů print pro zobrazení tvaru datové matice a jejího prvního prvku:
```python
X, y = datasets.load_diabetes(return_X_y=True)
@@ -149,9 +150,9 @@ V nové buňce kódu načtěte dataset o diabetu pomocí `load_diabetes()`. Vstu
print(X[0])
```
- To, co dostáváte jako odpověď, je tuple. To, co děláte, je přiřazení dvou prvních hodnot tuple k `X` a `y`. Více se dozvíte [o tuple](https://wikipedia.org/wiki/Tuple).
+ To, co dostáváte zpět jako odpověď, je n-tice. To, co děláte, je přiřazení dvou prvních hodnot n-tice do `X` a `y`. Více se dozvíte [o n-ticích](https://wikipedia.org/wiki/Tuple).
- Můžete vidět, že tato data mají 442 položek uspořádaných v polích o 10 prvcích:
+ Vidíte, že tato data mají 442 položek uspořádaných v polích o 10 prvcích:
```text
(442, 10)
@@ -159,39 +160,39 @@ V nové buňce kódu načtěte dataset o diabetu pomocí `load_diabetes()`. Vstu
-0.04340085 -0.00259226 0.01990842 -0.01764613]
```
- ✅ Zamyslete se nad vztahem mezi daty a regresním cílem. Lineární regrese předpovídá vztahy mezi proměnnou X a cílovou proměnnou y. Můžete najít [cíl](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) pro dataset o diabetu v dokumentaci? Co tento dataset demonstruje, vzhledem k cíli?
+ ✅ Zamyslete se nad vztahem mezi daty a cílem regrese. Lineární regrese předpovídá vztahy mezi vlastností X a cílovou proměnnou y. Dokážete najít [cíl](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) pro dataset diabetu v dokumentaci? Co tento dataset demonstruje vzhledem k tomuto cíli?
-2. Dále vyberte část tohoto datasetu pro vykreslení výběrem 3. sloupce datasetu. Můžete to udělat pomocí operátoru `:` pro výběr všech řádků a poté výběrem 3. sloupce pomocí indexu (2). Data můžete také přetvořit na 2D pole - jak je požadováno pro vykreslení - pomocí `reshape(n_rows, n_columns)`. Pokud je jeden z parametrů -1, odpovídající rozměr se vypočítá automaticky.
+2. Dále vyberte část tohoto datasetu k vykreslení tím, že vyberete třetí sloupec datasetu. Můžete to udělat použitím operátoru `:` pro výběr všech řádků a pak výběrem třetího sloupce pomocí indexu (2). Data můžete také přetvarovat na 2D pole - jak je potřeba pro vykreslování - použitím `reshape(n_rows, n_columns)`. Pokud je jeden z parametrů -1, odpovídající rozměr se dopočítá automaticky.
```python
X = X[:, 2]
X = X.reshape((-1,1))
```
- ✅ Kdykoli si data vytiskněte, abyste zkontrolovali jejich tvar.
+ ✅ Kdykoliv vytiskněte data, abyste zkontrolovali jejich tvar.
-3. Nyní, když máte data připravená k vykreslení, můžete zjistit, zda stroj dokáže určit logické rozdělení mezi čísly v tomto datasetu. K tomu je potřeba rozdělit data (X) i cíl (y) na testovací a trénovací sady. Scikit-learn má jednoduchý způsob, jak to udělat; můžete rozdělit vaše testovací data na daném bodě.
+3. Nyní když máte data připravená k vykreslení, můžete zjistit, zda vám stroj pomůže určit logický rozdělení mezi čísly v tomto datasetu. K tomu je potřeba rozdělit data (X) i cíl (y) na testovací a tréninkové sady. Scikit-learn má snadný způsob, jak toho dosáhnout; můžete rozdělit svá testovací data v daném bodě.
```python
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33)
```
-4. Nyní jste připraveni trénovat váš model! Načtěte model lineární regrese a trénujte ho s vašimi trénovacími sadami X a y pomocí `model.fit()`:
+4. Nyní jste připraveni trénovat svůj model! Načtěte lineární regresní model a trénujte ho s vašimi tréninkovými sadami X a y pomocí `model.fit()`:
```python
model = linear_model.LinearRegression()
model.fit(X_train, y_train)
```
- ✅ `model.fit()` je funkce, kterou uvidíte v mnoha knihovnách ML, jako je TensorFlow.
+ ✅ `model.fit()` je funkce, kterou uvidíte v mnoha ML knihovnách jako TensorFlow
-5. Poté vytvořte predikci pomocí testovacích dat pomocí funkce `predict()`. To bude použito k nakreslení čáry mezi skupinami dat.
+5. Poté vytvořte predikci pomocí testovacích dat funkcí `predict()`. To použijete k vykreslení čáry mezi skupinami dat
```python
y_pred = model.predict(X_test)
```
-6. Nyní je čas zobrazit data v grafu. Matplotlib je velmi užitečný nástroj pro tento úkol. Vytvořte scatterplot všech testovacích dat X a y a použijte predikci k nakreslení čáry na nejvhodnějším místě mezi skupinami dat modelu.
+6. Teď je čas zobrazit data v grafu. Matplotlib je pro tento úkol velmi užitečný nástroj. Vytvořte rozptylový graf všech testovacích dat X a y a použijte predikci k vykreslení čáry na nejvhodnějším místě mezi skupinami dat modelu.
```python
plt.scatter(X_test, y_test, color='black')
@@ -202,28 +203,32 @@ V nové buňce kódu načtěte dataset o diabetu pomocí `load_diabetes()`. Vstu
plt.show()
```
- 
-✅ Zamyslete se nad tím, co se zde děje. Přímka prochází mnoha malými body dat, ale co přesně dělá? Vidíte, jak byste měli být schopni použít tuto přímku k předpovědi, kde by měl nový, dosud neviděný datový bod zapadnout ve vztahu k ose y grafu? Zkuste slovy popsat praktické využití tohoto modelu.
+ 
+
+
+ ✅ Zamyslete se trochu nad tím, co se zde odehrává. Přímka prochází mnoha malými datovými body, ale co přesně dělá? Vidíte, jak byste měli být schopni tuto přímku použít k předpovědi, kde by se nový, neviděný datový bod měl ve vztahu k ose y grafu umístit? Zkuste slovy vyjádřit praktické využití tohoto modelu.
-Gratulujeme, vytvořili jste svůj první model lineární regrese, provedli předpověď a zobrazili ji v grafu!
+Gratulujeme, vytvořili jste svůj první model lineární regrese, vytvořili s ním předpověď a zobrazili ji v grafu!
---
## 🚀Výzva
-Vykreslete jinou proměnnou z této datové sady. Tip: upravte tento řádek: `X = X[:,2]`. S ohledem na cíl této datové sady, co můžete zjistit o progresi diabetu jako nemoci?
+Vykreslete jinou proměnnou z této datové sady. Tip: upravte tento řádek: `X = X[:,2]`. Vzhledem k cíli této sady dat, co dokážete zjistit o průběhu diabetu jako nemoci?
## [Kvíz po přednášce](https://ff-quizzes.netlify.app/en/ml/)
-## Přehled & Samostudium
+## Přehled a samostudium
-V tomto tutoriálu jste pracovali s jednoduchou lineární regresí, nikoli s univariační nebo vícenásobnou lineární regresí. Přečtěte si něco o rozdílech mezi těmito metodami nebo se podívejte na [toto video](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef).
+V tomto tutoriálu jste pracovali s jednoduchou lineární regresí, nikoli s univariátní nebo multivariátní lineární regresí. Přečtěte si něco o rozdílech mezi těmito metodami, nebo se podívejte na [toto video](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef)
-Přečtěte si více o konceptu regrese a zamyslete se nad tím, jaké typy otázek lze touto technikou zodpovědět. Absolvujte [tento tutoriál](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott), abyste si prohloubili své znalosti.
+Přečtěte si více o konceptu regrese a zamyslete se nad tím, na jaké otázky může tato technika odpovědět. Absolvujte tento [návod](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott), aby jste prohloubili své porozumění.
## Zadání
-[Odlišná datová sada](assignment.md)
+[Jiná datová sada](assignment.md)
---
-**Prohlášení**:
-Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádné nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu.
\ No newline at end of file
+
+**Prohlášení o omezení odpovědnosti**:
+Tento dokument byl přeložen pomocí AI překladatelské služby [Co-op Translator](https://github.com/Azure/co-op-translator). Přestože usilujeme o co největší přesnost, mějte prosím na paměti, že automatizované překlady mohou obsahovat chyby nebo nepřesnosti. Originální dokument v jeho mateřském jazyce by měl být považován za autoritativní zdroj. Pro kritické informace se doporučuje profesionální lidský překlad. Nejsme odpovědní za jakékoli nedorozumění nebo nesprávné interpretace vzniklé použitím tohoto překladu.
+
\ No newline at end of file
diff --git a/translations/cs/2-Regression/2-Data/README.md b/translations/cs/2-Regression/2-Data/README.md
index 6b3b692d4..e22a49656 100644
--- a/translations/cs/2-Regression/2-Data/README.md
+++ b/translations/cs/2-Regression/2-Data/README.md
@@ -1,62 +1,62 @@
# Vytvoření regresního modelu pomocí Scikit-learn: příprava a vizualizace dat
-
+
Infografika od [Dasani Madipalli](https://twitter.com/dasani_decoded)
## [Kvíz před lekcí](https://ff-quizzes.netlify.app/en/ml/)
-> ### [Tato lekce je dostupná v R!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
+> ### [Tato lekce je dostupná i v R!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
## Úvod
-Nyní, když máte k dispozici nástroje potřebné k zahájení práce na vytváření modelů strojového učení pomocí Scikit-learn, jste připraveni začít klást otázky svým datům. Při práci s daty a aplikaci řešení ML je velmi důležité vědět, jak položit správnou otázku, abyste mohli plně využít potenciál svého datasetu.
+Nyní, když máte připravené nástroje potřebné k začátku tvorby strojového učení s Scikit-learn, jste připraveni začít pokládat otázky svým datům. Při práci s daty a aplikaci ML řešení je velmi důležité vědět, jak správně otázky klást, aby bylo možné správně odemknout potenciály vaší datové sady.
V této lekci se naučíte:
-- Jak připravit data pro vytváření modelů.
+- Jak připravit svá data pro tvorbu modelu.
- Jak používat Matplotlib pro vizualizaci dat.
+- Jak používat Seaborn pro expresivnější vizualizaci dat.
-## Kladení správných otázek svým datům
+## Klást správné otázky svým datům
-Otázka, na kterou potřebujete odpověď, určí, jaký typ algoritmů ML budete používat. Kvalita odpovědi, kterou získáte, bude silně záviset na povaze vašich dat.
+Otázka, na kterou potřebujete znát odpověď, určí, jaký typ ML algoritmů budete využívat. A kvalita odpovědi, kterou obdržíte, bude silně záviset na povaze vašich dat.
-Podívejte se na [data](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) poskytnutá pro tuto lekci. Tento soubor .csv můžete otevřít ve VS Code. Rychlý pohled okamžitě ukáže, že jsou zde prázdné hodnoty a směs textových a číselných dat. Je zde také zvláštní sloupec nazvaný 'Package', kde jsou data směsí hodnot jako 'sacks', 'bins' a dalších. Data jsou vlastně trochu chaotická.
+Podívejte se na [data](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) poskytnutá pro tuto lekci. Tento .csv soubor si můžete otevřít ve VS Code. Rychlý pohled okamžitě ukáže, že tam jsou prázdná místa a mix textových a číselných dat. Také je tam zvláštní sloupec s názvem 'Package', kde jsou data smíšená mezi 'sacky', 'koše' a další hodnoty. Data jsou vlastně trochu nepořádek.
-[](https://youtu.be/5qGjczWTrDQ "ML pro začátečníky - Jak analyzovat a čistit dataset")
+[](https://youtu.be/5qGjczWTrDQ "ML pro začátečníky - Jak analyzovat a čistit datovou sadu")
> 🎥 Klikněte na obrázek výše pro krátké video o přípravě dat pro tuto lekci.
-Ve skutečnosti není příliš běžné dostat dataset, který je zcela připraven k použití pro vytvoření modelu ML bez jakýchkoli úprav. V této lekci se naučíte, jak připravit surový dataset pomocí standardních knihoven Pythonu. Naučíte se také různé techniky vizualizace dat.
+Ve skutečnosti není moc běžné dostat datovou sadu, která je zcela připravená k okamžitému použití pro vytvoření ML modelu. V této lekci se naučíte, jak připravit surová data pomocí standardních knihoven Pythonu. Také poznáte různé techniky vizualizace dat.
## Případová studie: 'trh s dýněmi'
-V této složce najdete soubor .csv v kořenové složce `data` nazvaný [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv), který obsahuje 1757 řádků dat o trhu s dýněmi, rozdělených do skupin podle měst. Jedná se o surová data získaná z [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice), která distribuuje Ministerstvo zemědělství Spojených států.
+V této složce najdete .csv soubor v hlavní složce `data` nazvaný [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv), který obsahuje 1757 řádků dat o trhu s dýněmi, rozdělených do skupin podle měst. Jedná se o surová data extrahovaná z [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice), distribuovaná Ministerstvem zemědělství USA.
### Příprava dat
-Tato data jsou veřejně dostupná. Mohou být stažena v mnoha samostatných souborech, podle města, z webu USDA. Abychom se vyhnuli příliš mnoha samostatným souborům, spojili jsme všechna data měst do jedné tabulky, takže jsme data již _částečně připravili_. Nyní se podívejme na data podrobněji.
+Tato data jsou veřejně dostupná. Lze je stáhnout v mnoha oddělených souborech podle jednotlivých měst ze stránek USDA. Abychom se vyhnuli příliš mnoha samostatným souborům, spojili jsme všechna data ze měst do jedné tabulky, takže jsme data už trochu _připravili_. Nyní se podívejme podrobněji na data.
### Data o dýních - první závěry
-Co si všimnete na těchto datech? Už jste viděli, že je zde směs textů, čísel, prázdných hodnot a zvláštních hodnot, které je třeba pochopit.
+Co si o těchto datech všimnete? Už jste viděli, že tam jsou smíšené texty, čísla, prázdná místa a zvláštní hodnoty, které je potřeba pochopit.
-Jakou otázku můžete položit těmto datům pomocí regresní techniky? Co třeba "Předpovědět cenu dýně na prodej během daného měsíce". Při pohledu na data je třeba provést určité změny, aby se vytvořila datová struktura potřebná pro tento úkol.
+Jakou otázku můžete položit těmto datům využitím regresní techniky? Co třeba "Předpovědět cenu dýně na prodej během určitého měsíce". Když se znovu podíváte na data, je potřeba provést některé změny, abyste vytvořili datovou strukturu potřebnou pro tento úkol.
+## Cvičení - analyzujte data o dýních
-## Cvičení - analýza dat o dýních
-
-Použijme [Pandas](https://pandas.pydata.org/) (název znamená `Python Data Analysis`), nástroj velmi užitečný pro tvarování dat, k analýze a přípravě těchto dat o dýních.
+Použijme [Pandas](https://pandas.pydata.org/), (název znamená `Python Data Analysis`) nástroj velmi užitečný pro tvarování dat, pro analýzu a přípravu těchto dat o dýních.
### Nejprve zkontrolujte chybějící data
-Nejprve budete muset podniknout kroky k ověření chybějících dat:
+Nejprve bude potřeba prověřit případná chybějící data:
-1. Převést data na formát měsíce (jedná se o americká data, takže formát je `MM/DD/YYYY`).
-2. Extrahovat měsíc do nového sloupce.
+1. Převeďte data na formát měsíce (jedná se o americká data, takže formát je `MM/DD/YYYY`).
+2. Extrahujte měsíc do nového sloupce.
-Otevřete soubor _notebook.ipynb_ ve Visual Studio Code a importujte tabulku do nového dataframe Pandas.
+Otevřete soubor _notebook.ipynb_ ve Visual Studio Code a naimportujte tabulku do nového Pandas dataframe.
-1. Použijte funkci `head()`, abyste zobrazili prvních pět řádků.
+1. Použijte funkci `head()` k zobrazení prvních pěti řádků.
```python
import pandas as pd
@@ -64,28 +64,28 @@ Otevřete soubor _notebook.ipynb_ ve Visual Studio Code a importujte tabulku do
pumpkins.head()
```
- ✅ Jakou funkci byste použili k zobrazení posledních pěti řádků?
+ ✅ Jakou funkci použijete pro zobrazení posledních pěti řádků?
-1. Zkontrolujte, zda v aktuálním dataframe chybí data:
+1. Zkontrolujte, zda v aktuálním dataframe nejsou chybějící data:
```python
pumpkins.isnull().sum()
```
- Chybí data, ale možná to nebude mít vliv na daný úkol.
+ Nějaká chybějící data jsou, ale možná to pro daný úkol nebude vadit.
-1. Aby byl váš dataframe snazší na práci, vyberte pouze sloupce, které potřebujete, pomocí funkce `loc`, která extrahuje z původního dataframe skupinu řádků (předaná jako první parametr) a sloupců (předaná jako druhý parametr). Výraz `:` v níže uvedeném případě znamená "všechny řádky".
+1. Aby bylo snazší s dataframe pracovat, vyberte si jen sloupce, které potřebujete, použitím funkce `loc`, která z původního dataframe vybere skupinu řádků (jako první parametr) a sloupců (jako druhý parametr). Výraz `:` znamená "všechny řádky".
```python
columns_to_select = ['Package', 'Low Price', 'High Price', 'Date']
pumpkins = pumpkins.loc[:, columns_to_select]
```
-### Dále určete průměrnou cenu dýně
+### Druhé, určete průměrnou cenu dýně
-Přemýšlejte o tom, jak určit průměrnou cenu dýně v daném měsíci. Jaké sloupce byste si vybrali pro tento úkol? Nápověda: budete potřebovat 3 sloupce.
+Přemýšlejte, jak zjistit průměrnou cenu dýně za daný měsíc. Jaké sloupce byste pro tento úkol vybrali? Tip: potřebujete tři sloupce.
-Řešení: vezměte průměr sloupců `Low Price` a `High Price`, abyste naplnili nový sloupec Price, a převeďte sloupec Date tak, aby zobrazoval pouze měsíc. Naštěstí podle výše uvedené kontroly nechybí žádná data pro datumy nebo ceny.
+Řešení: vezměte průměr sloupců `Low Price` a `High Price` pro vyplnění nového sloupce Cena, a převeďte sloupec Date tak, aby ukazoval jen měsíc. Naštěstí podle předchozí kontroly chybí data pro datum nebo ceny.
1. Pro výpočet průměru přidejte následující kód:
@@ -96,37 +96,37 @@ Přemýšlejte o tom, jak určit průměrnou cenu dýně v daném měsíci. Jak
```
- ✅ Neváhejte si vytisknout jakákoli data, která chcete zkontrolovat, pomocí `print(month)`.
+ ✅ Klidně si vytiskněte jakákoliv data pomocí `print(month)`, chcete-li je zkontrolovat.
-2. Nyní zkopírujte převedená data do nového dataframe Pandas:
+2. Nyní zkopírujte převedená data do nového Pandas dataframe:
```python
new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price})
```
- Pokud si vytisknete svůj dataframe, uvidíte čistý, upravený dataset, na kterém můžete vytvořit nový regresní model.
+ Vytištěný dataframe vám ukáže čistou a přehlednou datovou sadu, na které můžete stavět svůj nový regresní model.
-### Ale počkejte! Něco je tu zvláštní
+### Ale počkejte! Něco tu není v pořádku
-Pokud se podíváte na sloupec `Package`, dýně se prodávají v mnoha různých konfiguracích. Některé se prodávají v mírách '1 1/9 bushel', některé v '1/2 bushel', některé na kus, některé na libru a některé ve velkých krabicích s různými šířkami.
+Pokud se podíváte na sloupec `Package`, dýně jsou prodávány v mnoha různých konfiguracích. Některé jsou prodávány v měrách '1 1/9 koše', jiné v '1/2 koše', některé po kusech, jiné za libru, a některé ve velkých krabicích různé šířky.
-> Dýně se zdají být velmi těžké vážit konzistentně
+> Dýně se zdá být velmi obtížné vážit konzistentně
-Při zkoumání původních dat je zajímavé, že vše, co má `Unit of Sale` rovné 'EACH' nebo 'PER BIN', má také typ `Package` na palec, na bin nebo 'each'. Dýně se zdají být velmi těžké vážit konzistentně, takže je filtrujme výběrem pouze dýní s řetězcem 'bushel' ve sloupci `Package`.
+Při zkoumání původních dat je zajímavé, že cokoli, kde je `Unit of Sale` rovno 'EACH' nebo 'PER BIN', má také typ `Package` ve znacích palec, koš nebo 'each'. Dýně se zdá být velmi obtížné vážit konzistentně, proto je vyfiltrujme tak, že vybereme jen dýně se stringem 'bushel' ve sloupci `Package`.
-1. Přidejte filtr na začátek souboru, pod počáteční import .csv:
+1. Přidejte filtr na začátek souboru, pod inicializační import .csv:
```python
pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]
```
- Pokud nyní vytisknete data, uvidíte, že získáváte pouze asi 415 řádků dat obsahujících dýně podle bushelu.
+ Pokud nyní vytisknete data, můžete vidět, že se zobrazují jen asi 415 řádků obsahujících dýně podle košů.
-### Ale počkejte! Je tu ještě jedna věc, kterou je třeba udělat
+### Ale počkejte! Ještě je potřeba něco udělat
-Všimli jste si, že množství bushelu se liší podle řádku? Musíte normalizovat ceny tak, aby ukazovaly ceny za bushel, takže proveďte nějaké výpočty pro standardizaci.
+Všimli jste si, že množství koše se liší podle řádku? Je potřeba normalizovat ceny tak, aby ukazovaly cenu za koš, takže proveďte matematické úpravy pro standardizaci.
-1. Přidejte tyto řádky po bloku vytvářejícím dataframe new_pumpkins:
+1. Přidejte následující řádky po bloku vytvářejícím nový `new_pumpkins` dataframe:
```python
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9)
@@ -134,38 +134,38 @@ Všimli jste si, že množství bushelu se liší podle řádku? Musíte normali
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2)
```
-✅ Podle [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) váha bushelu závisí na typu produktu, protože se jedná o objemové měření. "Bushel rajčat, například, by měl vážit 56 liber... Listy a zelenina zabírají více prostoru s menší váhou, takže bushel špenátu váží pouze 20 liber." Je to všechno docela komplikované! Nebudeme se zabývat konverzí bushelu na libry, místo toho budeme určovat cenu podle bushelu. Všechny tyto studie bushelů dýní však ukazují, jak velmi důležité je pochopit povahu vašich dat!
+✅ Podle [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) závisí váha koše na typu produktu, protože jde o měření objemu. "Koš rajčat například váží přibližně 56 liber... Listy a zelenina zabírají více místa a váží méně, takže koš špenátu váží pouze 20 liber." Je to poměrně komplikované! Raději nebudeme provádět převod koše na libry, a místo toho budeme ceny uvádět za koš. Toto studium objemu košů dýní však ukazuje, jak je důležité rozumět povaze svých dat!
-Nyní můžete analyzovat ceny za jednotku na základě jejich měření bushelu. Pokud si data vytisknete ještě jednou, uvidíte, jak jsou standardizována.
+Nyní můžete analyzovat ceny za jednotku podle jejich měření košem. Pokud data vytisknete znovu, uvidíte, jak jsou standardizovaná.
-✅ Všimli jste si, že dýně prodávané na půl bushelu jsou velmi drahé? Dokážete zjistit proč? Nápověda: malé dýně jsou mnohem dražší než velké, pravděpodobně proto, že jich je mnohem více na bushel, vzhledem k nevyužitému prostoru, který zabírá jedna velká dutá dýně na koláč.
+✅ Všimli jste si, že dýně prodávané po polovině koše jsou velmi drahé? Dokážete přijít na důvod? Tip: malé dýně jsou mnohem dražší než velké, pravděpodobně proto, že jich je v koši mnohem více, vzhledem k nevyužitému prostoru zabranému jednou velkou dutou dýní na koláč.
## Strategie vizualizace
-Součástí role datového vědce je demonstrovat kvalitu a povahu dat, se kterými pracuje. K tomu často vytvářejí zajímavé vizualizace, jako jsou grafy, diagramy a tabulky, které ukazují různé aspekty dat. Tímto způsobem mohou vizuálně ukázat vztahy a mezery, které by jinak bylo těžké odhalit.
+Částí práce datového vědce je ukázat kvalitu a povahu dat, se kterými pracuje. Často vytváří zajímavé vizualizace, tedy grafy, diagramy a schémata, ukazující různé aspekty dat. Tímto způsobem mohou vizuálně ukázat vztahy a mezery, které by jinak byly těžko odhalitelné.
-[](https://youtu.be/SbUkxH6IJo0 "ML pro začátečníky - Jak vizualizovat data pomocí Matplotlib")
+[](https://youtu.be/SbUkxH6IJo0 "ML pro začátečníky - Jak vizualizovat data s Matplotlib")
-> 🎥 Klikněte na obrázek výše pro krátké video o vizualizaci dat pro tuto lekci.
+> 🎥 Klikněte na obrázek výše pro krátké video o tom, jak vizualizovat data pro tuto lekci.
-Vizualizace mohou také pomoci určit techniku strojového učení, která je pro data nejvhodnější. Například scatterplot, který se zdá sledovat linii, naznačuje, že data jsou dobrým kandidátem pro cvičení lineární regrese.
+Vizualizace také mohou pomoci určit nejvhodnější techniku strojového učení pro daná data. Například rozptylový graf, který následuje přímku, naznačuje, že data jsou dobrým kandidátem pro úlohu lineární regrese.
-Jedna knihovna pro vizualizaci dat, která dobře funguje v Jupyter notebooku, je [Matplotlib](https://matplotlib.org/) (kterou jste viděli i v předchozí lekci).
+Jedna knihovna pro vizualizaci dat, která dobře funguje v Jupyter noteboocích, je [Matplotlib](https://matplotlib.org/) (kterou jste také viděli v předchozí lekci).
-> Získejte více zkušeností s vizualizací dat v [těchto tutoriálech](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott).
+> Získejte více zkušeností s vizualizací dat v [těchto návodech](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott).
## Cvičení - experimentujte s Matplotlib
-Zkuste vytvořit základní grafy pro zobrazení nového dataframe, který jste právě vytvořili. Co by ukázal základní čárový graf?
+Zkuste vytvořit základní grafy pro zobrazení nového dataframe, který jste právě vytvořili. Co by základní čárový graf ukázal?
-1. Importujte Matplotlib na začátek souboru, pod import Pandas:
+1. Naimportujte Matplotlib na začátku souboru, pod import Pandas:
```python
import matplotlib.pyplot as plt
```
-1. Znovu spusťte celý notebook, aby se aktualizoval.
-1. Na konec notebooku přidejte buňku pro vykreslení dat jako box:
+1. Znovu spusťte celý notebook pro jeho obnovení.
+1. Na konci notebooku přidejte buňku pro vykreslení dat jako box:
```python
price = new_pumpkins.Price
@@ -174,44 +174,121 @@ Zkuste vytvořit základní grafy pro zobrazení nového dataframe, který jste
plt.show()
```
- 
+ 
- Je tento graf užitečný? Překvapilo vás na něm něco?
+ Je to užitečný graf? Překvapí vás na něm něco?
- Není příliš užitečný, protože pouze zobrazuje vaše data jako rozptyl bodů v daném měsíci.
+ Není příliš užitečný, protože pouze zobrazuje vaše data jako rozptyl bodů pro daný měsíc.
-### Udělejte to užitečné
+### Aby byl užitečný
-Aby grafy zobrazovaly užitečná data, obvykle je třeba data nějak seskupit. Zkusme vytvořit graf, kde osa y ukazuje měsíce a data demonstrují rozložení dat.
+Pro zobrazení užitečných dat obvykle potřebujete data nějak seskupit. Zkuste vytvořit graf, kde osa y bude zobrazovat měsíce a graf ukáže rozložení dat.
-1. Přidejte buňku pro vytvoření seskupeného sloupcového grafu:
+1. Přidejte buňku, která vytvoří seskupený sloupcový graf:
```python
new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar')
plt.ylabel("Pumpkin Price")
```
- 
+ 
+
+ Toto je užitečnější vizualizace dat! Zdá se, že nejvyšší cena dýní nastává v září a říjnu. Odpovídá to vašim očekáváním? Proč ano, nebo proč ne?
+
+## Cvičení - experimentujte se Seaborn
+
+Matplotlib je mocný, ale tvorba dokonale vypadajícího grafu může vyžadovat hodně kódu. [Seaborn](https://seaborn.pydata.org/) je knihovna postavená _nad_ Matplotlib navržená pro statistickou vizualizaci dat. Pracuje přímo s Pandas dataframe, aplikuje příjemné výchozí styly a umožňuje vytvářet informativní grafy s mnohem menším množstvím kódu. Protože Seaborn vrací objekty Matplotlib, můžete stále používat vše, co už o Matplotlib víte, k doladění výsledku.
+
+> Pokud ještě nemáte Seaborn nainstalovaný, nainstalujte jej pomocí `pip install seaborn`.
+
+1. Naimportujte Seaborn na začátku notebooku, pod ostatní importy. Obvykle se importuje jako `sns`:
+
+ ```python
+ import seaborn as sns
+ ```
+
+### Rozptylové grafy pro ukázku vztahů
+
+Velká část prozkoumávání dat před tvorbou modelu spočívá ve hledání _vztahů_ mezi proměnnými. [Rozptylový graf](https://cs.wikipedia.org/wiki/XY_graf) je jedním z nejlepších nástrojů pro toto: pokud body vypadají, že následují přímku, tyto dvě proměnné mohou být korelované, což je dobré znamení, že model lineární regrese by mohl fungovat.
+
+1. Znovu vytvořte scatterplot ceny vůči měsíci, tentokrát pomocí Seaborn funkce [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) (relační graf), která pracuje přímo s vašimi databázovými sloupci:
+
+ ```python
+ sns.relplot(x="Price", y="Month", data=new_pumpkins)
+ ```
+
+ 
+
+ Všimněte si, jak předáváte _názvy sloupců_ a dataframe a Seaborn pak za vás přidá popisky os.
+
+2. Můžete změnit graf na čárový pomocí `kind="line"`. Seaborn dokonce vykreslí stinný pruh ukazující interval spolehlivosti kolem čáry:
+
+ ```python
+ sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins)
+ ```
+
+ 
+
+ Tato konkrétní data jsou poměrně hlučná, takže čárový graf zde není nejjasnější volbou — ale ukazuje, jak snadno lze v Seaborn měnit typ grafu.
+
+### Sloupcové grafy pro zobrazení rozložení
+
+
+Dříve jste data ručně seskupili, abyste vytvořili pruhový graf pomocí Matplotlib. Seabornova funkce [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) (kategorický graf) může seskupování a agregaci udělat za vás. Ve výchozím nastavení `kind="bar"` zobrazuje průměr každé kategorie spolu s černou čarou označující interval spolehlivosti.
+
+1. Vytvořte pruhový graf průměrné ceny za měsíc:
+
+ ```python
+ sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar")
+ ```
+
+ 
+
+ To potvrzuje to, co jste viděli v Matplotlibu — ceny vrcholí kolem září a října — ale Seaborn také vizualizuje, jak moc se cena _liší_ v rámci jednotlivých měsíců.
+
+### Tepelné mapy pro zobrazení korelací
+
+Bodové grafy porovnávají vždy dva proměnné najednou. Když máte několik číselných sloupců, [tepelná mapa](https://en.wikipedia.org/wiki/Heat_map) vám umožňuje zobrazit sílu vztahu mezi _každým_ párem sloupců najednou. Toto je běžný způsob, jak zjistit, které prvky jsou nejvíce korelované před výběrem toho, co použít do modelu (a stejný typ grafu se později používá k zobrazení matic záměny v klasifikaci).
+
+1. Vytvořte korelační matici pomocí Pandas a pak ji nakreslete pomocí Seabornovy funkce [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html). Možnost `annot=True` vytiskne hodnoty korelace do každé buňky:
+
+ ```python
+ correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()
+ sns.heatmap(correlations, annot=True, cmap="coolwarm")
+ ```
+
+ 
+
+ Hodnoty blízké `1` (nebo `-1`) znamenají, že sloupce jsou silně _lineárně_ korelované. Všimněte si, že `Low Price` a `High Price` jsou téměř dokonale korelované. `Month` naopak vykazuje pouze slabou lineární korelaci s cenou — ačkoli pruhový graf výše ukázal zřetelný sezonní vrchol v září a říjnu. To je důležitá lekce: korelační koeficient měří pouze _přímočaré_ vztahy, takže může přehlédnout sezónní či jiné nelineární vzory. ✅ Proč je užitečné podívat se před rozhodnutím, které sloupce použít, jak na tepelnou mapu, *tak* na grafy jako pruhový graf?
+
+### Matplotlib nebo Seaborn?
+
+Obě knihovny stojí za to znát:
+
+- **Matplotlib** vám dává detailní kontrolu nad každým prvkem grafu a je základem, na kterém staví téměř všechny ostatní Python knihovny pro grafiku.
+- **Seaborn** poskytuje vyšší úroveň funkcí a atraktivní výchozí nastavení pro statistické grafy, pracuje přímo s datovými rámci a často je rychlejší pro průzkumnou analýzu dat.
- Toto je užitečnější vizualizace dat! Zdá se, že naznačuje, že nejvyšší cena za dýně se vyskytuje v září a říjnu. Odpovídá to vašemu očekávání? Proč ano nebo ne?
+Běžný pracovní postup je začít Seabornem pro rychlý průzkum dat a poté přejít do Matplotlibu, když chcete přizpůsobit detaily.
---
## 🚀Výzva
-Prozkoumejte různé typy vizualizací, které Matplotlib nabízí. Které typy jsou nejvhodnější pro regresní problémy?
+Prozkoumejte různé typy vizualizací, které Matplotlib a Seaborn nabízejí. Které typy jsou nejvhodnější pro regresní problémy?
-## [Kvíz po lekci](https://ff-quizzes.netlify.app/en/ml/)
+## [Kvíz po přednášce](https://ff-quizzes.netlify.app/en/ml/)
-## Přehled & Samostudium
+## Přehled a samostudium
-Podívejte se na různé způsoby vizualizace dat. Udělejte si seznam různých dostupných knihoven a poznamenejte si, které jsou nejlepší pro dané typy úkolů, například 2D vizualizace vs. 3D vizualizace. Co objevíte?
+Podívejte se na mnoho způsobů, jak vizualizovat data. Vytvořte seznam dostupných knihoven a poznamenejte, které jsou nejlepší pro různé typy úkolů, například 2D vizualizace vs. 3D vizualizace. Co objevíte?
-## Úkol
+## Zadání
[Prozkoumání vizualizace](assignment.md)
---
-**Prohlášení**:
-Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu.
\ No newline at end of file
+
+**Prohlášení o omezení odpovědnosti**:
+Tento dokument byl přeložen pomocí AI překladatelské služby [Co-op Translator](https://github.com/Azure/co-op-translator). Přestože usilujeme o co největší přesnost, mějte prosím na paměti, že automatizované překlady mohou obsahovat chyby nebo nepřesnosti. Originální dokument v jeho mateřském jazyce by měl být považován za autoritativní zdroj. Pro kritické informace se doporučuje profesionální lidský překlad. Nejsme odpovědní za jakékoli nedorozumění nebo nesprávné interpretace vzniklé použitím tohoto překladu.
+
\ No newline at end of file
diff --git a/translations/cs/2-Regression/2-Data/solution/notebook.ipynb b/translations/cs/2-Regression/2-Data/solution/notebook.ipynb
index e05c9aa53..d33cb4738 100644
--- a/translations/cs/2-Regression/2-Data/solution/notebook.ipynb
+++ b/translations/cs/2-Regression/2-Data/solution/notebook.ipynb
@@ -3,7 +3,9 @@
{
"cell_type": "markdown",
"metadata": {},
- "source": []
+ "source": [
+ "## Lineární regrese pro dýně - Lekce 2\n"
+ ]
},
{
"cell_type": "code",
@@ -220,6 +222,7 @@
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
"pumpkins = pd.read_csv('../../data/US-pumpkins.csv')\n",
"\n",
"pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]\n",
@@ -383,18 +386,78 @@
"plt.ylabel(\"Pumpkin Price\")"
]
},
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Vizualizace pomocí Seaborn\n",
+ "\n",
+ "[Seaborn](https://seaborn.pydata.org/) je postavený na Matplotlibu a pracuje přímo s datovými rámci, což umožňuje rychle vytvářet atraktivní statistické grafy s minimem kódu.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Bodové grafy pro zobrazení vztahů\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", kind=\"line\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Sloupcové grafy pro zobrazení rozdělení\n"
+ ]
+ },
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
- "source": []
+ "source": [
+ "sns.catplot(x=\"Month\", y=\"Price\", data=new_pumpkins, kind=\"bar\")"
+ ]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "\n---\n\n**Upozornění**: \nTento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). I když se snažíme o co největší přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za závazný zdroj. Pro důležité informace doporučujeme profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné výklady vyplývající z použití tohoto překladu.\n"
+ "### Heatmapy pro zobrazení korelací\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()\n",
+ "sns.heatmap(correlations, annot=True, cmap=\"coolwarm\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "---\n\n\n**Prohlášení o omezení odpovědnosti**:\nTento dokument byl přeložen pomocí AI překladatelské služby [Co-op Translator](https://github.com/Azure/co-op-translator). Přestože usilujeme o co největší přesnost, mějte prosím na paměti, že automatizované překlady mohou obsahovat chyby nebo nepřesnosti. Originální dokument v jeho mateřském jazyce by měl být považován za autoritativní zdroj. Pro kritické informace se doporučuje profesionální lidský překlad. Nejsme odpovědní za jakékoli nedorozumění nebo nesprávné interpretace vzniklé použitím tohoto překladu.\n\n"
]
}
],
@@ -424,13 +487,7 @@
"hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d"
}
},
- "orig_nbformat": 2,
- "coopTranslator": {
- "original_hash": "95726f0b8283628d5356a4f8eb8b4b76",
- "translation_date": "2025-09-04T07:11:18+00:00",
- "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
- "language_code": "cs"
- }
+ "orig_nbformat": 2
},
"nbformat": 4,
"nbformat_minor": 2
diff --git a/translations/cs/8-Reinforcement/1-QLearning/README.md b/translations/cs/8-Reinforcement/1-QLearning/README.md
index 431aaec9a..2976ae3d3 100644
--- a/translations/cs/8-Reinforcement/1-QLearning/README.md
+++ b/translations/cs/8-Reinforcement/1-QLearning/README.md
@@ -1,47 +1,47 @@
-# Úvod do posilovaného učení a Q-Learningu
+# Úvod do posilovaného učení a Q-učení
-
+
> Sketchnote od [Tomomi Imura](https://www.twitter.com/girlie_mac)
-Posilované učení zahrnuje tři důležité koncepty: agenta, stavy a sadu akcí pro každý stav. Prováděním akce ve specifickém stavu získává agent odměnu. Představte si opět počítačovou hru Super Mario. Vy jste Mario, nacházíte se v úrovni hry, stojíte vedle okraje útesu. Nad vámi je mince. Vy jako Mario, v herní úrovni, na konkrétní pozici... to je váš stav. Posun o krok doprava (akce) vás přivede přes okraj, což by vám přineslo nízké číselné skóre. Stisknutí tlačítka skoku by vám však umožnilo získat bod a zůstat naživu. To je pozitivní výsledek, který by vám měl přinést pozitivní číselné skóre.
+Posilované učení zahrnuje tři důležité koncepty: agenta, nějaké stavy a sadu akcí pro každý stav. Provedením akce ve specifikovaném stavu agent obdrží odměnu. Opět si představte počítačovou hru Super Mario. Jste Mario, jste v úrovni hry, stojíte vedle okraje útesu. Nad vámi je mince. Vy jako Mario, v úrovni hry, na konkrétní pozici ... to je váš stav. Posun o krok doprava (akce) by vás přivedl přes hranu, což by vám přineslo nízké číselné skóre. Nicméně stisknutí tlačítka skoku by vám dovolilo získat bod a zůstat naživu. To je pozitivní výsledek a měl by být oceněn kladným číselným skóre.
-Pomocí posilovaného učení a simulátoru (hry) se můžete naučit, jak hru hrát, abyste maximalizovali odměnu, což znamená zůstat naživu a získat co nejvíce bodů.
+Použitím posilovaného učení a simulátoru (hry) se můžete naučit, jak hrát hru tak, aby bylo dosaženo maximální odměny, což je přežití a získání co nejvíce bodů.
[](https://www.youtube.com/watch?v=lDq_en8RNOo)
-> 🎥 Klikněte na obrázek výše a poslechněte si Dmitryho, jak diskutuje o posilovaném učení.
+> 🎥 Klikněte na obrázek výše a poslechněte si Dmitryho, jak diskutuje o posilovaném učení
-## [Kvíz před lekcí](https://ff-quizzes.netlify.app/en/ml/)
+## [Přednáškový kvíz](https://ff-quizzes.netlify.app/en/ml/)
-## Předpoklady a nastavení
+## Požadavky a nastavení
-V této lekci budeme experimentovat s kódem v Pythonu. Měli byste být schopni spustit kód v Jupyter Notebooku z této lekce, buď na svém počítači, nebo někde v cloudu.
+V této lekci budeme experimentovat s kódem v Pythonu. Měli byste být schopni spustit kód Jupyter Notebooku z této lekce, buď na svém počítači nebo někde v cloudu.
Můžete otevřít [notebook lekce](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) a projít si tuto lekci krok za krokem.
-> **Poznámka:** Pokud otevíráte tento kód z cloudu, musíte také stáhnout soubor [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), který se používá v kódu notebooku. Přidejte jej do stejného adresáře jako notebook.
+> **Poznámka:** Pokud otevíráte tento kód z cloudu, je také potřeba stáhnout soubor [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), který se používá v kódu notebooku. Přidejte jej do stejného adresáře jako notebook.
## Úvod
-V této lekci prozkoumáme svět **[Petr a vlk](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)**, inspirovaný hudební pohádkou ruského skladatele [Sergeje Prokofjeva](https://en.wikipedia.org/wiki/Sergei_Prokofiev). Použijeme **posilované učení**, aby Petr mohl prozkoumat své prostředí, sbírat chutná jablka a vyhnout se setkání s vlkem.
+V této lekci prozkoumáme svět **[Petra a vlka](https://cs.wikipedia.org/wiki/Petr_a_vlk)**, inspirovaný hudební pohádkou od ruského skladatele, [Sergeje Prokofjeva](https://en.wikipedia.org/wiki/Sergei_Prokofiev). Použijeme **posilované učení**, aby Petr prozkoumal své prostředí, sbíral chutná jablka a vyhnul se setkání s vlkem.
-**Posilované učení** (RL) je technika učení, která nám umožňuje naučit se optimální chování **agenta** v nějakém **prostředí** prostřednictvím mnoha experimentů. Agent v tomto prostředí by měl mít nějaký **cíl**, definovaný pomocí **funkce odměny**.
+**Posilované učení** (RL) je učební technika, která nám umožňuje naučit se optimální chování **agenta** v nějakém **prostředí** pomocí mnoha experimentů. Agent v tomto prostředí by měl mít nějaký **cíl**, definovaný **funkcí odměny**.
## Prostředí
-Pro jednoduchost si představme Petrov svět jako čtvercovou desku o velikosti `šířka` x `výška`, jako je tato:
+Pro jednoduchost si představme Petrův svět jako čtvercovou desku o rozměrech `width` x `height`, takto:
-
+
-Každá buňka na této desce může být:
+Každá buňka v této desce může být:
-* **zem**, po které Petr a další bytosti mohou chodit.
-* **voda**, po které samozřejmě nemůžete chodit.
+* **země**, po které mohou Petr a další tvory chodit.
+* **voda**, po které samozřejmě chodit nelze.
* **strom** nebo **tráva**, místo, kde si můžete odpočinout.
-* **jablko**, což představuje něco, co by Petr rád našel, aby se nakrmil.
+* **jablko**, které představuje něco, co by Petr rád našel, aby se nasytit.
* **vlk**, který je nebezpečný a měl by být vyhnut.
-Existuje samostatný modul v Pythonu, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), který obsahuje kód pro práci s tímto prostředím. Protože tento kód není důležitý pro pochopení našich konceptů, importujeme modul a použijeme jej k vytvoření vzorové desky (blok kódu 1):
+Existuje samostatný Python modul, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), který obsahuje kód pro práci s tímto prostředím. Jelikož tento kód není důležitý pro pochopení našich konceptů, naimportujeme modul a použijeme jej k vytvoření pracovní desky (blok kódu 1):
```python
from rlboard import *
@@ -52,63 +52,63 @@ m.randomize(seed=13)
m.plot()
```
-Tento kód by měl vytisknout obrázek prostředí podobný tomu výše.
+Tento kód by měl vypsat obrázek prostředí podobný tomuto výše.
## Akce a politika
-V našem příkladu by Petrovým cílem bylo najít jablko, zatímco se vyhýbá vlkovi a dalším překážkám. K tomu může v podstatě chodit, dokud nenajde jablko.
+V našem příkladu by Petrův cíl byl najít jablko a zároveň se vyhnout vlkovi a jiným překážkám. Aby toho dosáhl, může v podstatě chodit dokola, dokud nenajde jablko.
-Proto může na jakékoli pozici zvolit jednu z následujících akcí: nahoru, dolů, doleva a doprava.
+Proto může na jakékoli pozici vybírat jednu z následujících akcí: nahoru, dolů, vlevo a vpravo.
-Tyto akce definujeme jako slovník a mapujeme je na dvojice odpovídajících změn souřadnic. Například pohyb doprava (`R`) by odpovídal dvojici `(1,0)`. (blok kódu 2):
+Tyto akce definujeme jako slovník a namapujeme je na dvojice odpovídajících změn souřadnic. Například pohyb vpravo (`R`) odpovídá dvojici `(1,0)`. (blok kódu 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()) }
```
-Shrneme-li, strategie a cíl tohoto scénáře jsou následující:
+Na závěr je strategie a cíl tohoto scénáře následující:
-- **Strategie** našeho agenta (Petra) je definována tzv. **politikou**. Politika je funkce, která vrací akci v daném stavu. V našem případě je stav problému reprezentován deskou, včetně aktuální pozice hráče.
+- **Strategie**, našeho agenta (Petra) je definována tzv. **politikou**. Politika je funkce, která vrací akci pro daný stav. V našem případě je stav problému reprezentován deskou včetně aktuální pozice hráče.
-- **Cíl** posilovaného učení je nakonec naučit se dobrou politiku, která nám umožní problém efektivně vyřešit. Jako základ však zvažme nejjednodušší politiku nazvanou **náhodná chůze**.
+- **Cíl**, posilovaného učení je nakonec naučit se dobrou politiku, která nám umožní problém efektivně vyřešit. Nicméně jako základní přístup vezměme nejjednodušší politiku nazvanou **náhodná chůze**.
## Náhodná chůze
-Nejprve vyřešíme náš problém implementací strategie náhodné chůze. Při náhodné chůzi budeme náhodně vybírat další akci z povolených akcí, dokud nedosáhneme jablka (blok kódu 3).
+Nejdříve vyřešíme náš problém implementací strategie náhodné chůze. Při náhodné chůzi náhodně vybereme další akci ze povolených akcí, dokud nedosáhneme jablka (blok kódu 3).
-1. Implementujte náhodnou chůzi pomocí níže uvedeného kódu:
+1. Implementujte náhodnou chůzi pomocí kódu níže:
```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
+ n = 0 # počet kroků
+ # nastav počáteční pozici
if start_position:
m.human = start_position
else:
m.random_start()
while True:
if m.at() == Board.Cell.apple:
- return n # success!
+ return n # úspěch!
if m.at() in [Board.Cell.wolf, Board.Cell.water]:
- return -1 # eaten by wolf or drowned
+ return -1 # snězen vlkem nebo utonut
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
+ m.move(a) # proveď skutečný pohyb
break
n+=1
walk(m,random_policy)
```
- Volání `walk` by mělo vrátit délku odpovídající cesty, která se může lišit od jednoho spuštění k druhému.
+ Volání `walk` by mělo vrátit délku odpovídající cesty, která se může při různých bězích lišit.
-1. Spusťte experiment chůze několikrát (řekněme 100krát) a vytiskněte výsledné statistiky (blok kódu 4):
+1. Proveďte experiment chůze několikrát (např. 100x) a vytiskněte získanou statistiku (blok kódu 4):
```python
def print_statistics(policy):
@@ -125,17 +125,17 @@ Nejprve vyřešíme náš problém implementací strategie náhodné chůze. Př
print_statistics(random_policy)
```
- Všimněte si, že průměrná délka cesty je kolem 30-40 kroků, což je poměrně hodně, vzhledem k tomu, že průměrná vzdálenost k nejbližšímu jablku je kolem 5-6 kroků.
+ Všimněte si, že průměrná délka cesty je kolem 30-40 kroků, což je dost, vzhledem k tomu, že průměrná vzdálenost k nejbližšímu jablku je kolem 5-6 kroků.
- Můžete také vidět, jak vypadá Petrov pohyb během náhodné chůze:
+ Můžete také vidět, jak vypadají Petrovy pohyby během náhodné chůze:

## Funkce odměny
-Aby byla naše politika inteligentnější, musíme pochopit, které kroky jsou "lepší" než jiné. K tomu musíme definovat náš cíl.
+Abychom naši politiku učinili inteligentnější, musíme pochopit, které kroky jsou „lepší“ než jiné. K tomu je potřeba definovat náš cíl.
-Cíl může být definován pomocí **funkce odměny**, která vrátí nějakou hodnotu skóre pro každý stav. Čím vyšší číslo, tím lepší funkce odměny. (blok kódu 5)
+Cíl můžeme definovat pomocí **funkce odměny**, která vrací určitou hodnotu skóre pro každý stav. Čím vyšší číslo, tím lepší odměna. (blok kódu 5)
```python
move_reward = -0.1
@@ -154,39 +154,115 @@ def reward(m,pos=None):
return move_reward
```
-Zajímavé na funkcích odměny je, že ve většině případů *dostáváme podstatnou odměnu až na konci hry*. To znamená, že náš algoritmus by měl nějakým způsobem zapamatovat "dobré" kroky, které vedou k pozitivní odměně na konci, a zvýšit jejich důležitost. Podobně by měly být odrazeny všechny kroky, které vedou k špatným výsledkům.
+Zajímavé na funkcích odměny je to, že většinou *dostáváme podstatnou odměnu až na konci hry*. To znamená, že algoritmus by měl nějak pamatovat „dobré“ kroky vedoucí k pozitivní odměně na konci a zvyšovat jejich váhu. Podobně by měly být odrazovány kroky vedoucí k špatným výsledkům.
-## Q-Learning
+## Q-učení
-Algoritmus, který zde budeme diskutovat, se nazývá **Q-Learning**. V tomto algoritmu je politika definována funkcí (nebo datovou strukturou) nazvanou **Q-Tabulka**. Ta zaznamenává "kvalitu" každé akce v daném stavu.
+Algoritmus, který zde diskutujeme, se nazývá **Q-učení**. V tomto algoritmu je politika definována funkcí (nebo datovou strukturou) nazývanou **Q-tabulka**. Ta zaznamenává „dobrý“ nebo „špatný“ vliv každé akce v daném stavu.
-Nazývá se Q-Tabulka, protože je často výhodné ji reprezentovat jako tabulku nebo vícerozměrné pole. Protože naše deska má rozměry `šířka` x `výška`, můžeme Q-Tabulku reprezentovat pomocí numpy pole s tvarem `šířka` x `výška` x `len(actions)`: (blok kódu 6)
+Nazývá se Q-tabulka, protože je často pohodlné ji představit jako tabulku nebo vícerozměrné pole. Protože má naše deska rozměry `width` x `height`, můžeme Q-tabulku reprezentovat pomocí numpy pole tvaru `width` x `height` x `len(actions)`: (blok kódu 6)
```python
Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions)
```
-Všimněte si, že inicializujeme všechny hodnoty Q-Tabulky stejnou hodnotou, v našem případě - 0.25. To odpovídá politice "náhodné chůze", protože všechny kroky v každém stavu jsou stejně dobré. Q-Tabulku můžeme předat funkci `plot`, abychom ji vizualizovali na desce: `m.plot(Q)`.
+Všimněte si, že všechny hodnoty Q-tabulky inicializujeme na stejnou hodnotu, v našem případě 0,25. To odpovídá politice „náhodné chůze“, protože všechny akce v každém stavu jsou stejně dobré. Můžeme předat Q-tabulku funkci `plot` pro vizualizaci tabulky na desce: `m.plot(Q)`.
-
+
-Uprostřed každé buňky je "šipka", která označuje preferovaný směr pohybu. Protože všechny směry jsou stejné, je zobrazen bod.
+Ve středu každé buňky je „šípka“, která ukazuje preferovaný směr pohybu. Protože jsou všechny směry stejné, zobrazuje se tečka.
-Nyní musíme spustit simulaci, prozkoumat naše prostředí a naučit se lepší rozložení hodnot Q-Tabulky, které nám umožní najít cestu k jablku mnohem rychleji.
+Nyní potřebujeme spustit simulaci, prozkoumat naše prostředí a naučit se lepší rozdělení hodnot v Q-tabulce, které nám umožní najít cestu k jablku mnohem rychleji.
-## Podstata Q-Learningu: Bellmanova rovnice
+## Podstata Q-učení: Bellmanova rovnice
-Jakmile se začneme pohybovat, každá akce bude mít odpovídající odměnu, tj. teoreticky můžeme vybrat další akci na základě nejvyšší okamžité odměny. Ve většině stavů však krok nedosáhne našeho cíle dosáhnout jablka, a proto nemůžeme okamžitě rozhodnout, který směr je lepší.
+Jakmile začneme pohybovat, každá akce bude mít odpovídající odměnu, tedy teoreticky můžeme zvolit další akci na základě nejvyšší okamžité odměny. Nicméně v většině stavů tah nepřinese cíl dosáhnout jablko, a proto nemůžeme ihned rozhodnout, který směr je lepší.
-> Pamatujte, že nezáleží na okamžitém výsledku, ale spíše na konečném výsledku, který získáme na konci simulace.
+> Pamatujte, že ne okamžitý výsledek je důležitý, ale konečný výsledek, kterého dosáhneme na konci simulace.
-Abychom zohlednili tuto zpožděnou odměnu, musíme použít principy **[dynamického programování](https://en.wikipedia.org/wiki/Dynamic_programming)**, které nám umožňují přemýšlet o našem problému rekurzivně.
+Abychom mohli zohlednit tuto odloženou odměnu, musíme použít principy **[dynamického programování](https://cs.wikipedia.org/wiki/Dynamick%C3%A9_programov%C3%A1n%C3%AD)**, které nám umožňují uvažovat o našem problému rekurzivně.
-Předpokládejme, že se nyní nacházíme ve stavu *s* a chceme se přesunout do dalšího stavu *s'*. Tím získáme okamžitou odměnu *r(s,a)*, definovanou funkcí odměny, plus nějakou budoucí odměnu. Pokud předpokládáme, že naše Q-Tabulka správně odráží "atraktivitu" každé akce, pak ve stavu *s'* zvolíme akci *a*, která odpovídá maximální hodnotě *Q(s',a')*. Tím pádem nejlepší možná budoucí odměna, kterou bychom mohli získat ve stavu *s*, bude definována jako `max`
+Předpokládejme, že jsme nyní ve stavu *s* a chceme přejít do dalšího stavu *s'*. Tímto dostaneme okamžitou odměnu *r(s,a)*, definovanou funkcí odměny, plus nějakou budoucí odměnu. Pokud předpokládáme, že naše Q-tabulka správně odráží „atraktivitu“ každé akce, pak ve stavu *s'* zvolíme akci *a*, která odpovídá maximální hodnotě *Q(s',a')*. Nejlepší možná budoucí odměna ve stavu *s* bude tedy definována jako `max`a'*Q(s',a')* (maximum je počítáno přes všechny možné akce *a'* ve stavu *s'*).
+
+To nám dává **Bellmanův vzorec** pro výpočet hodnoty Q-tabule ve stavu *s*, vzhledem k akci *a*:
+
+
+
+Zde γ je tzv. **diskontní faktor**, který určuje, do jaké míry byste měli preferovat současnou odměnu před budoucí odměnou a naopak.
+
+## Učební algoritmus
+
+Na základě výše uvedené rovnice nyní můžeme napsat pseudokód našeho učebního algoritmu:
+
+* Inicializujte Q-tabulku Q stejnými čísly pro všechny stavy a akce
+* Nastavte rychlost učení α ← 1
+* Opakujte simulaci mnohokrát
+ 1. Začněte na náhodné pozici
+ 1. Opakujte
+ 1. Vyberte akci *a* ve stavu *s*
+ 2. Proveďte akci přesunem do nového stavu *s'*
+ 3. Pokud narazíme na konec hry, nebo je celková odměna příliš malá - ukončete simulaci
+ 4. Spočítejte odměnu *r* v novém stavu
+ 5. Aktualizujte Q-funkci podle Bellmanovy rovnice: *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ maxa'Q(s',a'))*
+ 6. *s* ← *s'*
+ 7. Aktualizujte celkovou odměnu a snižte α.
+
+## Využití vs. průzkum
+
+V výše uvedeném algoritmu jsme nespecifikovali, jak přesně vybrat akci v kroku 2.1. Pokud vybíráme akci náhodně, budeme náhodně **průzkoumávat** prostředí a je pravděpodobné, že často zemřeme a budeme prozkoumávat oblasti, kam bychom normálně nešli. Alternativní přístup je **využívat** hodnoty Q-tabulky, které už známe, a zvolit nejlepší akci (s vyšší hodnotou Q) ve stavu *s*. To nás však připraví o průzkum jiných stavů a pravděpodobně nenajdeme optimální řešení.
+
+Nejlepší tedy je najít rovnováhu mezi průzkumem a využíváním. To lze udělat tak, že akci ve stavu *s* zvolíme s pravděpodobností úměrnou hodnotám v Q-tabulce. Na začátku, když jsou všechny hodnoty Q-tabulek stejné, to odpovídá náhodnému výběru, ale jak se učíme více o prostředí, pravděpodobněji půjdeme optimální cestou, přičemž agent si občas zvolí neprozkoumanou cestu.
+
+## Implementace v Pythonu
+
+Jsme nyní připraveni implementovat učební algoritmus. Než to uděláme, potřebujeme také funkci, která převede libovolná čísla v Q-tabulce na vektor pravděpodobností pro odpovídající akce.
+
+1. Vytvořte funkci `probs()`:
+
+ ```python
+ def probs(v,eps=1e-4):
+ v = v-v.min()+eps
+ v = v/v.sum()
+ return v
+ ```
+
+ Přidáváme několik `eps` k původnímu vektoru, abychom se vyhnuli dělení nulou v počátečním případě, kdy jsou všechny složky vektoru stejné.
+
+Proveďte učební algoritmus přes 5000 experimentů, nazývaných také **epochy**: (blok kódu 8)
+```python
+ for epoch in range(5000):
+
+ # Vyberte počáteční bod
+ m.random_start()
+
+ # Začněte cestovat
+ n=0
+ cum_reward = 0
+ while True:
+ x,y = m.human
+ v = probs(Q[x,y])
+ a = random.choices(list(actions),weights=v)[0]
+ dpos = actions[a]
+ m.move(dpos,check_correctness=False) # dovolujeme hráči pohybovat se mimo plán, což ukončuje epizodu
+ r = reward(m)
+ cum_reward += r
+ if r==end_reward or cum_reward < -1000:
+ lpath.append(n)
+ break
+ alpha = np.exp(-n / 10e5)
+ gamma = 0.5
+ ai = action_idx[a]
+ Q[x,y,ai] = (1 - alpha) * Q[x,y,ai] + alpha * (r + gamma * Q[x+dpos[0], y+dpos[1]].max())
+ n+=1
+```
+
+Po provedení tohoto algoritmu by měla být Q-tabulka aktualizována hodnotami definujícími atraktivitu různých akcí v každém kroku. Můžeme zkusit vizualizovat Q-tabulku vykreslením vektoru v každé buňce, který bude ukazovat požadovaný směr pohybu. Pro jednoduchost kreslíme malý kruh místo šipky.
+
+
## Kontrola politiky
-Protože Q-Tabulka uvádí "atraktivitu" každé akce v každém stavu, je poměrně snadné ji použít k definování efektivní navigace v našem světě. V nejjednodušším případě můžeme vybrat akci odpovídající nejvyšší hodnotě v Q-Tabulce: (kódový blok 9)
+Protože Q-tabulka uvádí „atraktivitu“ každé akce v každém stavu, je poměrně jednoduché ji použít k definování efektivní navigace v našem světě. V nejjednodušším případě můžeme vybrat akci odpovídající nejvyšší hodnotě v Q-tabulce: (blok kódu 9)
```python
def qpolicy_strict(m):
@@ -198,17 +274,18 @@ def qpolicy_strict(m):
walk(m,qpolicy_strict)
```
-> Pokud výše uvedený kód vyzkoušíte několikrát, můžete si všimnout, že se někdy "zasekne" a je třeba stisknout tlačítko STOP v notebooku, abyste ho přerušili. K tomu dochází, protože mohou nastat situace, kdy si dva stavy "ukazují" na sebe z hlediska optimální hodnoty Q, což vede k tomu, že agent se mezi těmito stavy pohybuje nekonečně.
+
+> Pokud vyzkoušíte výše uvedený kód několikrát, můžete si všimnout, že se někdy "zasekne" a je potřeba v notebooku stisknout tlačítko STOP k jeho přerušení. To se děje proto, že mohou nastat situace, kdy dva stavy „ukazují“ na sebe z hlediska optimální hodnoty Q (Q-Value), v takovém případě agent skončí pohybováním se mezi těmito stavy donekonečna.
## 🚀Výzva
-> **Úkol 1:** Upravte funkci `walk` tak, aby omezila maximální délku cesty na určitý počet kroků (například 100), a sledujte, jak výše uvedený kód tuto hodnotu čas od času vrací.
+> **Úkol 1:** Upravte funkci `walk` tak, aby omezila maximální délku cesty na určitý počet kroků (například 100), a sledujte, jak výše uvedený kód tuto hodnotu občas vrací.
-> **Úkol 2:** Upravte funkci `walk` tak, aby se nevracela na místa, kde již byla. Tím se zabrání tomu, aby se `walk` opakovala, nicméně agent může stále skončit "uvězněný" na místě, odkud se nemůže dostat.
+> **Úkol 2:** Upravte funkci `walk` tak, aby se nevracela na místa, kde již dříve byla. Tím se zabrání zasekávání funkce `walk`, ovšem agent se může i tak ocitnout „uvězněn“ na místě, ze kterého není schopen uniknout.
## Navigace
-Lepší navigační politika by byla ta, kterou jsme použili během tréninku, která kombinuje využívání a zkoumání. V této politice budeme vybírat každou akci s určitou pravděpodobností, úměrnou hodnotám v Q-Tabulce. Tato strategie může stále vést k tomu, že se agent vrátí na pozici, kterou již prozkoumal, ale jak můžete vidět z níže uvedeného kódu, vede k velmi krátké průměrné cestě k požadovanému místu (pamatujte, že `print_statistics` spouští simulaci 100krát): (kódový blok 10)
+Lepší navigační politikou bude ta, kterou jsme používali během tréninku, kombinující využití poznatků a průzkum. V této politice vybereme každou akci s určitou pravděpodobností, úměrnou hodnotám v Q-tabuli. Tato strategie může stále způsobit, že se agent vrátí na místo, které již prozkoumal, ale jak je vidět z níže uvedeného kódu, vede to k velmi krátké průměrné délce cesty k požadovanému cíli (pamatujte, že `print_statistics` spouští simulaci 100x): (kódový blok 10)
```python
def qpolicy(m):
@@ -220,21 +297,23 @@ def qpolicy(m):
print_statistics(qpolicy)
```
-Po spuštění tohoto kódu byste měli získat mnohem kratší průměrnou délku cesty než dříve, v rozmezí 3-6.
+Po spuštění tohoto kódu byste měli dostat mnohem menší průměrnou délku cesty než dříve, v rozsahu 3–6.
## Zkoumání procesu učení
-Jak jsme zmínili, proces učení je rovnováhou mezi zkoumáním a využíváním získaných znalostí o struktuře prostoru problému. Viděli jsme, že výsledky učení (schopnost pomoci agentovi najít krátkou cestu k cíli) se zlepšily, ale je také zajímavé sledovat, jak se průměrná délka cesty chová během procesu učení:
+Jak jsme zmínili, proces učení je rovnováha mezi průzkumem a využíváním získaných znalostí o struktuře problémového prostoru. Viděli jsme, že výsledky učení (schopnost pomoci agentovi najít krátkou cestu k cíli) se zlepšily, ale je také zajímavé sledovat, jak se průměrná délka cesty chová během procesu učení:
+
+
-## Shrnutí poznatků:
+Učení lze shrnout takto:
-- **Průměrná délka cesty se zvyšuje**. Na začátku vidíme, že průměrná délka cesty roste. Pravděpodobně je to způsobeno tím, že když o prostředí nic nevíme, máme tendenci uvíznout ve špatných stavech, jako je voda nebo vlk. Jak se dozvídáme více a začneme tyto znalosti využívat, můžeme prostředí prozkoumávat déle, ale stále nevíme, kde přesně jsou jablka.
+- **Průměrná délka cesty roste**. Vidíme zde, že ze začátku průměrná délka cesty roste. Pravděpodobně je to způsobeno tím, že když o prostředí nic nevíme, je pravděpodobné, že uvízneme ve špatných stavech, vodě nebo vlkovi. Jak se učíme a začneme tyto znalosti používat, můžeme prostředí prozkoumávat déle, ale stále ještě nevíme, kde jsou jablka.
-- **Délka cesty se s učením zkracuje**. Jakmile se naučíme dostatečně, je pro agenta snazší dosáhnout cíle a délka cesty se začne zkracovat. Stále však zůstáváme otevření zkoumání, takže často odbočíme od nejlepší cesty a zkoumáme nové možnosti, což cestu prodlužuje nad optimální délku.
+- **Délka cesty klesá, jak se učíme více**. Jakmile se naučíme dost, agentovi se snáz podaří dosáhnout cíle a délka cesty začne klesat. Přesto máme stále otevřený průzkum, takže se často odchylujeme od nejlepší cesty a snažíme se prozkoumat nové možnosti, což dělá cestu delší než optimální.
-- **Délka se náhle zvýší**. Na grafu také pozorujeme, že v určitém bodě se délka náhle zvýší. To ukazuje na stochastickou povahu procesu a na to, že můžeme v určitém okamžiku "zkazit" koeficienty Q-Tabulky jejich přepsáním novými hodnotami. Ideálně by se tomu mělo zabránit snížením rychlosti učení (například ke konci tréninku upravujeme hodnoty Q-Tabulky pouze o malou hodnotu).
+- **Délka náhle stoupne**. Na tomto grafu také pozorujeme, že v určitém bodě délka náhle vzrostla. To ukazuje na stochastickou povahu procesu a že můžeme v nějakém okamžiku „pokazit“ koeficienty Q-tabule přepsáním novými hodnotami. Toto by mělo být ideálně minimalizováno snížením rychlosti učení (například ke konci tréninku upravujeme hodnoty Q-tabule jen o malou hodnotu).
-Celkově je důležité si uvědomit, že úspěch a kvalita procesu učení významně závisí na parametrech, jako je rychlost učení, pokles rychlosti učení a diskontní faktor. Tyto parametry se často nazývají **hyperparametry**, aby se odlišily od **parametrů**, které optimalizujeme během tréninku (například koeficienty Q-Tabulky). Proces hledání nejlepších hodnot hyperparametrů se nazývá **optimalizace hyperparametrů** a zaslouží si samostatné téma.
+Celkově je důležité si uvědomit, že úspěch a kvalita procesu učení výrazně závisí na parametrech, jako je rychlost učení, pokles rychlosti učení a diskontní faktor. Tyto hodnoty se často nazývají **hyperparametry**, aby se odlišily od **parametrů**, které optimalizujeme během tréninku (například koeficienty Q-tabule). Proces hledání nejlepších hodnot hyperparametrů nazýváme **optimalizace hyperparametrů** a zaslouží si samostatné téma.
## [Kvíz po přednášce](https://ff-quizzes.netlify.app/en/ml/)
@@ -243,5 +322,7 @@ Celkově je důležité si uvědomit, že úspěch a kvalita procesu učení vý
---
-**Prohlášení**:
-Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu.
\ No newline at end of file
+
+**Prohlášení o omezení odpovědnosti**:
+Tento dokument byl přeložen pomocí AI překladatelské služby [Co-op Translator](https://github.com/Azure/co-op-translator). Přestože usilujeme o co největší přesnost, mějte prosím na paměti, že automatizované překlady mohou obsahovat chyby nebo nepřesnosti. Originální dokument v jeho mateřském jazyce by měl být považován za autoritativní zdroj. Pro kritické informace se doporučuje profesionální lidský překlad. Nejsme odpovědní za jakékoli nedorozumění nebo nesprávné interpretace vzniklé použitím tohoto překladu.
+
\ No newline at end of file
diff --git a/translations/cs/9-Real-World/2-Debugging-ML-Models/README.md b/translations/cs/9-Real-World/2-Debugging-ML-Models/README.md
index 6a34a2813..dea2bfc4d 100644
--- a/translations/cs/9-Real-World/2-Debugging-ML-Models/README.md
+++ b/translations/cs/9-Real-World/2-Debugging-ML-Models/README.md
@@ -1,155 +1,179 @@
-# Postscript: Ladění modelů strojového učení pomocí komponent Responsible AI dashboardu
-
-## [Kvíz před přednáškou](https://ff-quizzes.netlify.app/en/ml/)
+# Postscript: Ladění modelů v strojovém učení pomocí komponent panelu Responsible AI
+
+## [Přednáškový kvíz](https://ff-quizzes.netlify.app/en/ml/)
+
## Úvod
-Strojové učení ovlivňuje náš každodenní život. AI se dostává do některých z nejdůležitějších systémů, které ovlivňují nás jako jednotlivce i naši společnost, od zdravotnictví, financí, vzdělávání až po zaměstnanost. Například systémy a modely se podílejí na každodenních rozhodovacích úlohách, jako jsou diagnózy ve zdravotnictví nebo odhalování podvodů. V důsledku toho jsou pokroky v AI spolu s rychlou adopcí doprovázeny měnícími se společenskými očekáváními a rostoucí regulací. Neustále vidíme oblasti, kde systémy AI nesplňují očekávání, odhalují nové výzvy a vlády začínají regulovat AI řešení. Je tedy důležité, aby tyto modely byly analyzovány tak, aby poskytovaly spravedlivé, spolehlivé, inkluzivní, transparentní a odpovědné výsledky pro všechny.
+Strojové učení ovlivňuje naše každodenní životy. Umělá inteligence nachází uplatnění v některých z nejdůležitějších systémů, které ovlivňují nás jako jednotlivce i naši společnost – od zdravotnictví, financí, vzdělávání až po zaměstnanost. Například systémy a modely jsou zapojeny do každodenního rozhodování, jako jsou zdravotní diagnózy nebo detekce podvodů. V důsledku toho jsou pokroky v AI spolu s urychleným zaváděním vystaveny rostoucím očekáváním společnosti a větší regulaci jako odpovědi na ně. Neustále vidíme oblasti, kde AI systémy nesplňují očekávání; odhalují nové výzvy; a vlády začínají regulovat AI řešení. Proto je důležité tyto modely analyzovat, aby poskytly spravedlivé, spolehlivé, inkluzivní, transparentní a zodpovědné výsledky pro všechny.
-V tomto kurzu se podíváme na praktické nástroje, které lze použít k posouzení, zda má model problémy s odpovědnou AI. Tradiční techniky ladění strojového učení bývají založeny na kvantitativních výpočtech, jako je agregovaná přesnost nebo průměrná ztráta chyb. Představte si, co se může stát, když data, která používáte k vytváření těchto modelů, postrádají určité demografické skupiny, jako je rasa, pohlaví, politický názor, náboženství, nebo naopak nepřiměřeně zastupují tyto demografické skupiny. Co když je výstup modelu interpretován tak, že upřednostňuje určitou demografickou skupinu? To může vést k nadměrnému nebo nedostatečnému zastoupení těchto citlivých skupin, což způsobí problémy se spravedlností, inkluzivitou nebo spolehlivostí modelu. Dalším faktorem je, že modely strojového učení jsou považovány za "černé skříňky", což ztěžuje pochopení a vysvětlení toho, co ovlivňuje predikce modelu. Všechny tyto výzvy čelí datoví vědci a vývojáři AI, pokud nemají dostatečné nástroje k ladění a posouzení spravedlnosti nebo důvěryhodnosti modelu.
+V tomto kurzu si ukážeme praktické nástroje, které lze použít k posouzení, zda model má problémy s odpovědnou AI. Tradiční techniky ladění modelů strojového učení bývají založeny na kvantitativních výpočtech, jako je agregovaná přesnost nebo průměrná ztráta chyby. Představte si, co se může stát, když data, která používáte k tvorbě těchto modelů, postrádají určité demografické skupiny, například rasu, pohlaví, politický názor, náboženství, nebo tyto skupiny nepřiměřeně zastupují. Co když se výstup modelu interpretuje tak, že preferuje některou demografickou skupinu? To může zavést nad- nebo podreprezentaci těchto citlivých skupin funkcí, což vede k problémům se spravedlností, inkluzivitou nebo spolehlivostí modelu. Dalším faktorem je, že modely strojového učení jsou považovány za černé skříňky, což ztěžuje pochopit a vysvětlit, co ovlivňuje předpověď modelu. Všechny tyto problémy čelí datoví vědci a vývojáři AI, pokud nemají adekvátní nástroje na ladění a hodnocení spravedlnosti nebo důvěryhodnosti modelu.
V této lekci se naučíte ladit své modely pomocí:
-- **Analýzy chyb**: identifikace oblastí v distribuci dat, kde má model vysokou míru chyb.
-- **Přehledu modelu**: provádění srovnávací analýzy mezi různými datovými kohortami k odhalení rozdílů ve výkonnostních metrikách modelu.
-- **Analýzy dat**: zkoumání, kde může docházet k nadměrnému nebo nedostatečnému zastoupení dat, což může zkreslit model ve prospěch jedné demografické skupiny oproti jiné.
-- **Důležitosti vlastností**: pochopení, které vlastnosti ovlivňují predikce modelu na globální nebo lokální úrovni.
+- **Analýza chyb**: identifikovat, ve kterých částech datového rozdělení má model vysoké míry chyb.
+- **Přehled modelu**: provést komparativní analýzu napříč různými datovými kohortami k odhalení rozdílů ve výkonových metrikách modelu.
+- **Analýza dat**: zkoumat, kde může být v datech nad- nebo podreprezentace, která může naklonit model k preferování jedné demografické skupiny před jinou.
+- **Důležitost funkcí**: pochopit, které funkce ovlivňují předpovědi modelu na globální nebo lokální úrovni.
-## Předpoklady
+## Požadavky
-Jako předpoklad si prosím projděte [Nástroje odpovědné AI pro vývojáře](https://www.microsoft.com/ai/ai-lab-responsible-ai-dashboard)
+Jako předpoklad prosím projděte recenzi [Responsible AI nástrojů pro vývojáře](https://www.microsoft.com/ai/ai-lab-responsible-ai-dashboard)
-> 
+> 
## Analýza chyb
-Tradiční metriky výkonnosti modelu používané k měření přesnosti jsou většinou výpočty založené na správných vs nesprávných predikcích. Například určení, že model je přesný z 89 % s chybovou ztrátou 0,001, může být považováno za dobrý výkon. Chyby však nejsou v základním datovém souboru rozloženy rovnoměrně. Můžete získat skóre přesnosti modelu 89 %, ale zjistit, že existují různé oblasti vašich dat, kde model selhává ve 42 % případů. Důsledky těchto vzorců selhání u určitých datových skupin mohou vést k problémům se spravedlností nebo spolehlivostí. Je zásadní pochopit oblasti, kde model funguje dobře nebo ne. Datové oblasti, kde má váš model vysoký počet nepřesností, se mohou ukázat jako důležitá demografická data.
+Tradiční metriky výkonnosti modelu používané k měření přesnosti jsou většinou výpočty založené na správných versus nesprávných předpovědích. Například zjištění, že model je přesný 89 % času s chybovou ztrátou 0,001, lze považovat za dobrý výkon. Chyby však často nejsou rovnoměrně rozděleny ve vašem základním datasetu. Můžete mít skóre přesnosti modelu 89 %, ale objevit, že v různých oblastech dat model selhává 42 % času. Důsledky těchto vzorců selhání v určitých datových skupinách mohou vést k problémům s férovostí nebo spolehlivostí. Je nezbytné pochopit oblasti, kde model funguje dobře nebo ne. Datové oblasti, kde je vysoký počet nepřesností v modelu, se mohou ukázat jako důležitá datová demografie.
-
+
-Komponenta Analýza chyb na RAI dashboardu ukazuje, jak jsou selhání modelu rozložena napříč různými kohortami pomocí vizualizace stromu. To je užitečné při identifikaci vlastností nebo oblastí, kde je vysoká míra chyb ve vašem datovém souboru. Díky tomu, že vidíte, odkud pochází většina nepřesností modelu, můžete začít zkoumat jejich příčinu. Můžete také vytvořit datové kohorty pro provádění analýzy. Tyto datové kohorty pomáhají v procesu ladění určit, proč je výkon modelu dobrý v jedné kohortě, ale chybný v jiné.
+Komponenta Analýza chyb v panelu RAI znázorňuje, jak je selhání modelu rozloženo napříč různými kohortami pomocí vizualizace ve formě stromu. To je užitečné pro identifikaci funkcí nebo oblastí, kde je vysoká míra chyb v datasetu. Viděním, odkud pochází většina nepřesností modelu, můžete začít zkoumat jejich příčinu. Můžete také vytvářet datové kohorty pro provedení analýzy. Tyto datové kohorty pomáhají při ladění zjistit, proč je výkon modelu dobrý v jedné kohortě, ale chybný v jiné.
-
+
-Vizualizační indikátory na mapě stromu pomáhají rychleji lokalizovat problémové oblasti. Například čím tmavší odstín červené barvy má uzel stromu, tím vyšší je míra chyb.
+Vizualní indikátory na stromové mapě pomáhají rychleji lokalizovat problémové oblasti. Například čím tmavší odstín červené barvy stromový uzel má, tím vyšší je míra chyb.
-Heatmapa je další vizualizační funkce, kterou mohou uživatelé použít k vyšetřování míry chyb pomocí jedné nebo dvou vlastností, aby našli přispěvatele k chybám modelu napříč celým datovým souborem nebo kohortami.
+Tepelná mapa je další funkcionalitou vizualizace, kterou mohou uživatelé využít k prozkoumání míry chyb pomocí jedné nebo dvou funkcí a najít příčinu modelových chyb v celém datasetu nebo kohortách.
-
+
Použijte analýzu chyb, když potřebujete:
-* Získat hluboké pochopení toho, jak jsou selhání modelu rozložena napříč datovým souborem a několika vstupními a vlastnostními dimenzemi.
-* Rozložit agregované metriky výkonu a automaticky objevit chybné kohorty, které informují o vašich cílených krocích k nápravě.
+* Získat hluboké pochopení, jak jsou selhání modelu rozložena v datasetu a přes několik vstupních a funkčních dimenzí.
+* Rozložit agregované výkonové metriky k automatickému objevení chybných kohort pro informování cílených nápravných kroků.
## Přehled modelu
-Hodnocení výkonu modelu strojového učení vyžaduje získání komplexního pochopení jeho chování. Toho lze dosáhnout přezkoumáním více než jedné metriky, jako je míra chyb, přesnost, recall, precision nebo MAE (Mean Absolute Error), aby se odhalily rozdíly mezi výkonnostními metrikami. Jedna metrika výkonu může vypadat skvěle, ale nepřesnosti mohou být odhaleny v jiné metrice. Navíc porovnání metrik pro rozdíly napříč celým datovým souborem nebo kohortami pomáhá osvětlit, kde model funguje dobře nebo ne. To je obzvláště důležité při sledování výkonu modelu mezi citlivými vs necitlivými vlastnostmi (např. rasa pacienta, pohlaví nebo věk), aby se odhalila potenciální nespravedlnost modelu. Například zjištění, že model je více chybný v kohortě, která má citlivé vlastnosti, může odhalit potenciální nespravedlnost modelu.
+Hodnocení výkonnosti modelu strojového učení vyžaduje získat celkové pochopení jeho chování. To lze dosáhnout přezkoumáním více než jedné metriky, jako je míra chyb, přesnost, vybavování, preciznost nebo MAE (střední absolutní chyba), k nalezení rozdílů mezi výkonovými metrikami. Jedna metrika výkonu může vypadat skvěle, ale jiné metriky mohou odhalit nepřesnosti. Navíc porovnání metrik kvůli rozdílům v celém datasetu nebo kohortách pomáhá osvětlit, kde model funguje dobře a kde ne. To je obzvlášť důležité při sledování výkonu modelu mezi citlivými a necitlivými funkcemi (např. rasa, pohlaví nebo věk pacienta) k odhalení potenciální nespravedlnosti modelu. Například zjištění, že model je chybnější v kohortě s citlivými funkcemi, může odhalit možnou nespravedlnost modelu.
-Komponenta Přehled modelu na RAI dashboardu pomáhá nejen při analýze výkonnostních metrik reprezentace dat v kohortě, ale dává uživatelům možnost porovnávat chování modelu napříč různými kohortami.
+Komponenta Přehled modelu v panelu RAI pomáhá nejen analyzovat výkonové metriky datové reprezentace v kohortě, ale také dává uživatelům možnost porovnat chování modelu napříč různými kohortami.
-
+
-Funkce analýzy založené na vlastnostech komponenty umožňuje uživatelům zúžit podskupiny dat v rámci konkrétní vlastnosti, aby identifikovali anomálie na granulární úrovni. Například dashboard má vestavěnou inteligenci, která automaticky generuje kohorty pro uživatelem vybranou vlastnost (např. *"time_in_hospital < 3"* nebo *"time_in_hospital >= 7"*). To umožňuje uživateli izolovat konkrétní vlastnost z větší skupiny dat, aby zjistil, zda je klíčovým ovlivňovatelem chybných výsledků modelu.
+Funkce analýzy podle funkcí komponenty umožňuje uživatelům zúžit podskupiny dat v konkrétní funkci k identifikaci anomálií na detailní úrovni. Například panel má vestavěnou inteligenci, která automaticky generuje kohorty pro uživatelem vybranou funkci (např. *"time_in_hospital < 3"* nebo *"time_in_hospital >= 7"*). To umožňuje uživateli izolovat konkrétní funkci z větší datové skupiny a zjistit, jestli je klíčovým faktorem pro chybné výsledky modelu.
-
+
Komponenta Přehled modelu podporuje dvě třídy metrik rozdílů:
-**Rozdíly ve výkonnosti modelu**: Tyto sady metrik vypočítávají rozdíly (disparity) ve hodnotách vybrané výkonnostní metriky napříč podskupinami dat. Zde je několik příkladů:
+**Rozdíly ve výkonu modelu**: Tyto metriky vypočítávají rozdíl (disparitu) v hodnotách vybrané výkonové metriky mezi podskupinami dat. Několik příkladů:
-* Rozdíly v míře přesnosti
-* Rozdíly v míře chyb
-* Rozdíly v precision
-* Rozdíly v recall
-* Rozdíly v průměrné absolutní chybě (MAE)
+* Rozdíl v míře přesnosti
+* Rozdíl v míře chyb
+* Rozdíl v preciznosti
+* Rozdíl v vybavování
+* Rozdíl ve střední absolutní chybě (MAE)
-**Rozdíly v míře výběru**: Tato metrika obsahuje rozdíly v míře výběru (příznivá predikce) mezi podskupinami. Příkladem je rozdíl v míře schvalování půjček. Míra výběru znamená podíl datových bodů v každé třídě klasifikovaných jako 1 (v binární klasifikaci) nebo rozložení hodnot predikce (v regresi).
+**Rozdíl v míře výběru**: Tato metrika obsahuje rozdíl v míře výběru (příznivé předpovědi) mezi podskupinami. Příkladem je rozdíl v míře schvalování půjček. Míra výběru znamená podíl datových bodů v každé třídě klasifikovaných jako 1 (v binární klasifikaci) nebo rozdělení hodnot předpovědí (v regresi).
## Analýza dat
-> "Pokud budete data mučit dostatečně dlouho, přiznají cokoliv" - Ronald Coase
+> "Pokud data dlouho mučíte, přiznají cokoliv" - Ronald Coase
+
+Tento výrok zní extrémně, ale je pravda, že data lze manipulovat tak, aby podporovala jakýkoliv závěr. Taková manipulace může někdy nastat nevědomky. Jako lidé všichni máme své předsudky a často je těžké si uvědomit, kdy do dat zavádíme zaujatost. Zaručit spravedlnost v AI a strojovém učení zůstává složitou výzvou.
-Toto tvrzení zní extrémně, ale je pravda, že data mohou být manipulována tak, aby podporovala jakýkoliv závěr. Taková manipulace se někdy může stát neúmyslně. Jako lidé máme všichni předsudky a často je obtížné vědomě vědět, kdy do dat zavádíme předsudky. Zajištění spravedlnosti v AI a strojovém učení zůstává složitou výzvou.
+Data jsou velkou slepou skvrnou pro tradiční výkonové metriky modelů. Můžete mít vysoké skóre přesnosti, ale to ne vždy odráží základní datové zaujatosti, které mohou být ve vašem datasetu. Například, pokud má dataset zaměstnanců 27 % žen na vedoucích pozicích a 73 % mužů na stejných pozicích, model AI pro inzerci pracovních míst trénovaný na těchto datech může cílit převážně na mužské publikum pro pozice vyšší úrovně. Tato nerovnováha v datech zkreslila předpověď modelu tak, že preferuje jedno pohlaví. To odhaluje problém spravedlnosti, kde je pohlaví preferováno v AI modelu.
-Data jsou velkým slepým místem pro tradiční metriky výkonnosti modelu. Můžete mít vysoké skóre přesnosti, ale to ne vždy odráží základní předsudky v datech, které mohou být ve vašem datovém souboru. Například pokud datový soubor zaměstnanců obsahuje 27 % žen na výkonných pozicích ve firmě a 73 % mužů na stejné úrovni, model AI pro inzerci pracovních míst vyškolený na těchto datech může cílit převážně na mužské publikum pro seniorní pracovní pozice. Tato nerovnováha v datech zkreslila predikci modelu ve prospěch jednoho pohlaví. To odhaluje problém spravedlnosti, kde je v modelu AI přítomna genderová předpojatost.
+Komponenta Analýza dat v panelu RAI pomáhá identifikovat oblasti, kde je v datasetu nad- nebo podreprezentace. Pomáhá uživatelům diagnostikovat příčiny chyb a problémů se spravedlností způsobených nerovnováhou dat nebo nedostatečnou reprezentací konkrétní datové skupiny. Umožňuje vizualizovat dataset na základě předpovězených a skutečných výsledků, skupin s chybami a specifických funkcí. Někdy odhalení nedostatečně zastoupené datové skupiny může také odhalit, že model se neučí dobře, a proto má vysoký počet nepřesností. Model, který má datovou zaujatost, není jen problém spravedlnosti, ale ukazuje, že model není inkluzivní ani spolehlivý.
-Komponenta Analýza dat na RAI dashboardu pomáhá identifikovat oblasti, kde je v datovém souboru nadměrné nebo nedostatečné zastoupení. Pomáhá uživatelům diagnostikovat příčinu chyb a problémů se spravedlností, které jsou způsobeny nerovnováhou dat nebo nedostatečným zastoupením určité datové skupiny. To dává uživatelům možnost vizualizovat datové soubory na základě predikovaných a skutečných výsledků, skupin chyb a konkrétních vlastností. Někdy objevení nedostatečně zastoupené datové skupiny může také odhalit, že model se dobře neučí, což vede k vysokým nepřesnostem. Model, který má předsudky v datech, není jen problémem spravedlnosti, ale ukazuje, že model není inkluzivní nebo spolehlivý.
+
-
Použijte analýzu dat, když potřebujete:
-* Prozkoumat statistiky svého datového souboru výběrem různých filtrů pro rozdělení dat do různých dimenzí (známých jako kohorty).
-* Pochopit rozložení svého datového souboru napříč různými kohortami a skupinami vlastností.
-* Určit, zda vaše zjištění týkající se spravedlnosti, analýzy chyb a kauzality (odvozené z jiných komponent dashboardu) jsou výsledkem rozložení vašeho datového souboru.
-* Rozhodnout, v jakých oblastech sbírat více dat, aby se zmírnily chyby způsobené problémy s reprezentací, šumem v označení, šumem ve vlastnostech, předsudky v označení a podobnými faktory.
+* Prozkoumat statistiky svého datasetu výběrem různých filtrů pro rozdělení dat do různých dimenzí (také známých jako kohorty).
+* Pochopit rozložení svého datasetu napříč různými kohortami a skupinami funkcí.
+* Určit, zda vaše nálezy týkající se spravedlnosti, analýzy chyb a kauzality (odvozené z jiných komponent panelu) jsou výsledkem rozložení vašeho datasetu.
+* Rozhodnout, v kterých oblastech je potřeba shromáždit více dat ke zmírnění chyb vyplývajících z problémů s reprezentací, šumu štítků, šumu funkcí, zaujatosti štítků a podobných faktorů.
-## Interpretace modelu
+## Interpretabilita modelu
-Modely strojového učení mají tendenci být "černými skříňkami". Pochopení, které klíčové vlastnosti dat ovlivňují predikci modelu, může být náročné. Je důležité poskytnout transparentnost ohledně toho, proč model dělá určitou predikci. Například pokud systém AI předpovídá, že diabetický pacient je ohrožen opětovným přijetím do nemocnice během méně než 30 dnů, měl by být schopen poskytnout podpůrná data, která vedla k jeho predikci. Mít podpůrné datové indikátory přináší transparentnost, která pomáhá lékařům nebo nemocnicím činit dobře informovaná rozhodnutí. Navíc schopnost vysvětlit, proč model učinil predikci pro konkrétního pacienta, umožňuje odpovědnost vůči zdravotním regulacím. Když používáte modely strojového učení způsoby, které ovlivňují životy lidí, je zásadní pochopit a vysvětlit, co ovlivňuje chování modelu. Vysvětlitelnost a interpretace modelu pomáhá odpovědět na otázky v situacích, jako jsou:
+Modely strojového učení bývají černými skříňkami. Pochopit, které klíčové datové funkce ovlivňují předpověď modelu, může být náročné. Je důležité poskytnout transparentnost, proč model dělá určitý předpověď. Například pokud systém AI předpovídá, že diabetický pacient je ohrožen opětovným přijetím do nemocnice během méně než 30 dnů, měl by být schopen poskytnout podpůrná data, která vedla k této předpovědi. Mít podpůrné indikátory dat přináší transparentnost a pomáhá klinikům nebo nemocnicím činit dobře informovaná rozhodnutí. Navíc schopnost vysvětlit, proč model učinil předpověď u jednotlivého pacienta, umožňuje zodpovědnost vzhledem ke zdravotnickým předpisům. Když používáte modely strojového učení způsoby, které ovlivňují životy lidí, je klíčové pochopit a vysvětlit, co ovlivňuje chování modelu. Vysvětlitelnost a interpretabilita modelu pomáhá odpovídat na otázky v situacích jako jsou:
* Ladění modelu: Proč můj model udělal tuto chybu? Jak mohu svůj model zlepšit?
* Spolupráce člověk-AI: Jak mohu pochopit a důvěřovat rozhodnutím modelu?
-* Regulativní shoda: Splňuje můj model právní požadavky?
+* Dodržování předpisů: Splňuje můj model právní požadavky?
-Komponenta Důležitost vlastností na RAI dashboardu vám pomáhá ladit a získat komplexní pochopení toho, jak model dělá predikce. Je to také užitečný nástroj pro profesionály v oblasti strojového učení a rozhodovací činitele, kteří potřebují vysvětlit a ukázat důkazy o vlastnostech ovlivňujících chování modelu pro regulativní shodu. Uživatelé mohou dále zkoumat globální i lokální vysvětlení, aby ověřili, které vlastnosti ovlivňují predikce modelu. Globální vysvětlení uvádí hlavní vlastnosti, které ovlivnily celkovou predikci modelu. Lokální vysvětlení ukazuje, které vlastnosti vedly k predikci modelu pro konkrétní případ. Schopnost hodnotit lokální vysvětlení je také užitečná při ladění nebo auditu konkrétního případu, aby bylo možné lépe pochopit a interpretovat, proč model učinil přesnou nebo nepřesnou predikci.
+Komponenta Důležitost funkcí na panelu RAI vám pomáhá ladit a získat komplexní pochopení, jak model vytváří předpovědi. Je to také užitečný nástroj pro profesionály ve strojovém učení a rozhodovatele k vysvětlování a prokazování vlivu funkcí na chování modelu v rámci dodržování předpisů. Dále mohou uživatelé prozkoumat jak globální, tak lokální vysvětlení, aby ověřili, které funkce ovlivňují předpověď modelu. Globální vysvětlení uvádějí hlavní funkce, které ovlivnily celkovou předpověď modelu. Lokální vysvětlení ukazují, které funkce vedly k předpovědi modelu pro jednotlivý případ. Schopnost hodnotit lokální vysvětlení je také užitečná při ladění nebo auditu konkrétního případu, aby lépe pochopili a interpretovali, proč model udělal přesnou nebo nepřesnou předpověď.
-
+
-* Globální vysvětlení: Například, které vlastnosti ovlivňují celkové chování modelu pro opětovné přijetí diabetických pacientů do nemocnice?
-* Lokální vysvětlení: Například, proč byl diabetický pacient starší 60 let s předchozími hospitalizacemi předpovězen jako opětovně přijatý nebo nepřijatý do nemocnice během 30 dnů?
+* Globální vysvětlení: Například, jaké funkce ovlivňují celkové chování modelu předpovědi opětovného přijetí diabetického pacienta do nemocnice?
+* Lokální vysvětlení: Například, proč byl diabetický pacient starší 60 let s předchozími hospitalizacemi předpovězen k opětovnému přijetí nebo ne do 30 dnů?
-V procesu ladění výkonu modelu napříč různými kohortami Důležitost vlastností ukazuje, jakou úroveň vlivu má vlastnost napříč kohortami. Pomáhá odhalit anomálie při porovnávání úrovně vlivu vlastnosti na chybné predikce modelu. Komponenta Důležitost vlastností může ukázat, které hodnoty ve vlastnosti pozitivně nebo negativně ovlivnily výsledek modelu. Například pokud model učinil nepřesnou predikci, komponenta vám umožňuje podrobněji prozkoumat a určit, které vlastnosti nebo hodnoty vlastností ovlivnily predikci. Tato úroveň detailu pomáhá nejen při ladění, ale poskytuje transparentnost a odpovědnost v auditních situacích. Nakonec komponenta může pomoci identifikovat problémy se spravedlností. Například pokud citlivá vlastnost, jako je etnicita nebo pohlaví, má vysoký vliv na predikci modelu, může to být známka rasové nebo
-- **Nad- nebo pod-reprezentace**. Myšlenka spočívá v tom, že určitá skupina není zastoupena v určité profesi, a jakákoli služba nebo funkce, která toto nadále podporuje, přispívá k poškození.
+Při ladění modelu a zkoumání jeho výkonu napříč různými kohortami ukazuje Důležitost funkcí míru dopadu, kterou má funkce napříč kohortami. Pomáhá odhalit anomálie při srovnávání úrovně vlivu funkce na chybná předpovědní modelu. Komponenta Důležitost funkcí může ukázat, které hodnoty v funkci pozitivně nebo negativně ovlivnily výsledek modelu. Například pokud model udělal nepřesnou předpověď, komponenta vám umožní detailně rozklíčovat, které funkce nebo hodnoty funkcí vedly k předpovědi. Tato úroveň detailu pomáhá nejen při ladění, ale poskytuje transparentnost a zodpovědnost v auditorských situacích. Nakonec komponenta vám může pomoci identifikovat problém spravedlnosti. Například, pokud citlivá funkce, jako je etnicita nebo pohlaví, je velmi vlivná v řízení předpovědi modelu, může to být znak rasové nebo pohlavní zaujatosti modelu.
-### Azure RAI dashboard
+
-[Azure RAI dashboard](https://learn.microsoft.com/en-us/azure/machine-learning/concept-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) je postaven na open-source nástrojích vyvinutých předními akademickými institucemi a organizacemi, včetně Microsoftu. Tyto nástroje jsou klíčové pro datové vědce a vývojáře AI, aby lépe porozuměli chování modelů, objevovali a zmírňovali nežádoucí problémy v modelech AI.
+Použijte interpretabilitu, když potřebujete:
-- Naučte se, jak používat různé komponenty, přečtením dokumentace k RAI dashboardu [docs.](https://learn.microsoft.com/en-us/azure/machine-learning/how-to-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu)
+* Určit, jak důvěryhodné jsou předpovědi vašeho AI systému pochopením, které funkce jsou pro předpovědi nejdůležitější.
+* Přistoupit k ladění modelu nejprve jeho pochopením a zjistit, zda model používá zdravé funkce nebo jen falešné korelace.
+* Odhalit potenciální zdroje nespravedlnosti tím, že pochopíte, zda model staví předpovědi na citlivých funkcích nebo těch, které jsou s nimi silně korelovány.
+* Budovat důvěru uživatelů v rozhodnutí modelu generováním lokálních vysvětlení, která ilustrují jejich výsledky.
+* Dokončit regulační audit AI systému k validaci modelů a sledování dopadů rozhodnutí modelu na lidi.
-- Podívejte se na některé ukázkové [notebooky RAI dashboardu](https://github.com/Azure/RAI-vNext-Preview/tree/main/examples/notebooks) pro ladění odpovědnějších scénářů AI v Azure Machine Learning.
+## Závěr
----
-## 🚀 Výzva
+Všechny komponenty panelu RAI jsou praktické nástroje, které vám pomohou vytvářet modely strojového učení, které jsou méně škodlivé a důvěryhodnější pro společnost. Zlepšují prevenci ohrožení lidských práv; diskriminace nebo vylučování určitých skupin z životních příležitostí; a riziko fyzického nebo psychického poškození. Také pomáhají budovat důvěru v rozhodnutí vašeho modelu generováním lokálních vysvětlení, která ilustrují výsledky. Některé potenciální škody lze klasifikovat jako:
+
+- **Přidělování**, pokud je například jedno pohlaví nebo etnicita upřednostňována před jiným.
+- **Kvalita služby**. Pokud data trénujete pro jeden konkrétní scénář, ale realita je mnohem složitější, vede to k špatně fungující službě.
+- **Stereotypizace**. Přisuzování dané skupině předem přiřazených charakteristik.
-Abychom zabránili zavádění statistických nebo datových předsudků, měli bychom:
+- **Diskreditace**. Nespravedlivě kritizovat a označovat něco nebo někoho.
+- **Nadměrné nebo nedostatečné zastoupení**. Představa je, že určitá skupina není vidět v určité profesi, a jakákoli služba nebo funkce, která to nadále podporuje, přispívá ke škodě.
-- zajistit rozmanitost zázemí a perspektiv mezi lidmi pracujícími na systémech
-- investovat do datových sad, které odrážejí rozmanitost naší společnosti
-- vyvíjet lepší metody pro detekci a nápravu předsudků, když k nim dojde
+### Azure RAI dashboard
+
+[Azure RAI dashboard](https://learn.microsoft.com/en-us/azure/machine-learning/concept-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) je postaven na open-source nástrojích vyvinutých předními akademickými institucemi a organizacemi včetně Microsoftu, které jsou zásadní pro datové vědce a vývojáře AI, aby lépe porozuměli chování modelů, objevovali a zmírňovali nežádoucí problémy u AI modelů.
-Přemýšlejte o reálných situacích, kde je nespravedlnost zřejmá při vytváření a používání modelů. Co dalšího bychom měli zvážit?
+- Naučte se používat různé komponenty tím, že si prohlédnete dokumentaci pro RAI dashboard. [docs.](https://learn.microsoft.com/en-us/azure/machine-learning/how-to-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu)
-## [Kvíz po přednášce](https://ff-quizzes.netlify.app/en/ml/)
-## Přehled a samostudium
+- Podívejte se na některé ukázkové notebooky pro RAI dashboard [sample notebooks](https://github.com/Azure/RAI-vNext-Preview/tree/main/examples/notebooks) pro ladění scénářů odpovědné AI v Azure Machine Learning.
+
+---
+## 🚀 Výzva
+
+Abychom zabránili vzniku statistických nebo datových zkreslení od samého začátku, měli bychom:
-V této lekci jste se naučili některé praktické nástroje pro začlenění odpovědné AI do strojového učení.
+- mít mezi lidmi pracujícími na systémech různorodé zázemí a pohledy
+- investovat do datových sad, které odrážejí rozmanitost naší společnosti
+- vyvíjet lepší metody pro detekci a korekci zkreslení, když k němu dojde
-Podívejte se na tento workshop, abyste se ponořili hlouběji do témat:
+Zamyslete se nad reálnými scénáři, kde je nespravedlnost evidentní při tvorbě a používání modelů. Co dalšího bychom měli zvážit?
+
+## [Kvíz po přednášce](https://ff-quizzes.netlify.app/en/ml/)
+## Revize & Samostudium
+
+V této lekci jste se naučili některé praktické nástroje pro začleňování odpovědné AI v strojovém učení.
-- Responsible AI Dashboard: Jednotné místo pro operacionalizaci RAI v praxi od Besmiry Nushi a Mehrnoosh Sameki
+Podívejte se na tento workshop, abyste se podrobněji ponořili do témat:
-[](https://www.youtube.com/watch?v=f1oaDNl3djg "Responsible AI Dashboard: Jednotné místo pro operacionalizaci RAI v praxi")
+- Responsible AI Dashboard: Komplexní řešení pro praktickou implementaci odpovědné AI od Besmira Nushi a Mehrnoosh Sameki
-> 🎥 Klikněte na obrázek výše pro video: Responsible AI Dashboard: Jednotné místo pro operacionalizaci RAI v praxi od Besmiry Nushi a Mehrnoosh Sameki
+[](https://www.youtube.com/watch?v=f1oaDNl3djg "Responsible AI Dashboard: One-stop shop for operationalizing RAI in practice")
-Odkazujte na následující materiály, abyste se dozvěděli více o odpovědné AI a jak vytvářet důvěryhodnější modely:
+> 🎥 Klikněte na obrázek nahoře pro video: Responsible AI Dashboard: Komplexní řešení pro praktickou implementaci odpovědné AI od Besmira Nushi a Mehrnoosh Sameki
+
+Pro další poznatky o odpovědné AI a jak budovat důvěryhodnější modely použijte následující materiály:
-- Microsoftovy nástroje RAI dashboardu pro ladění modelů ML: [Responsible AI tools resources](https://aka.ms/rai-dashboard)
+- Microsoft nástroje RAI dashboard pro ladění ML modelů: [Responsible AI tools resources](https://aka.ms/rai-dashboard)
-- Prozkoumejte sadu nástrojů Responsible AI: [Github](https://github.com/microsoft/responsible-ai-toolbox)
+- Prozkoumejte soupravu nástrojů Responsible AI: [Github](https://github.com/microsoft/responsible-ai-toolbox)
-- Microsoftovo centrum zdrojů RAI: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
+- Microsoft RAI resource center: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
-- Microsoftova výzkumná skupina FATE: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
+- Výzkumná skupina Microsoftu FATE: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
-## Úkol
+## Zadání
[Prozkoumejte RAI dashboard](assignment.md)
---
-**Prohlášení**:
-Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). Ačkoli se snažíme o přesnost, mějte na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádné nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu.
\ No newline at end of file
+
+**Prohlášení o omezení odpovědnosti**:
+Tento dokument byl přeložen pomocí AI překladatelské služby [Co-op Translator](https://github.com/Azure/co-op-translator). Přestože usilujeme o co největší přesnost, mějte prosím na paměti, že automatizované překlady mohou obsahovat chyby nebo nepřesnosti. Originální dokument v jeho mateřském jazyce by měl být považován za autoritativní zdroj. Pro kritické informace se doporučuje profesionální lidský překlad. Nejsme odpovědní za jakékoli nedorozumění nebo nesprávné interpretace vzniklé použitím tohoto překladu.
+
\ No newline at end of file
diff --git a/translations/da/.co-op-translator.json b/translations/da/.co-op-translator.json
index 058aaff94..63bbe8d1d 100644
--- a/translations/da/.co-op-translator.json
+++ b/translations/da/.co-op-translator.json
@@ -24,8 +24,8 @@
"language_code": "da"
},
"1-Introduction/3-fairness/README.md": {
- "original_hash": "9a6b702d1437c0467e3c5c28d763dac2",
- "translation_date": "2025-09-05T00:22:19+00:00",
+ "original_hash": "0f00d72169a0d37eecfd16d71e01700a",
+ "translation_date": "2026-07-14T07:13:11+00:00",
"source_file": "1-Introduction/3-fairness/README.md",
"language_code": "da"
},
@@ -54,8 +54,8 @@
"language_code": "da"
},
"2-Regression/1-Tools/README.md": {
- "original_hash": "fa81d226c71d5af7a2cade31c1c92b88",
- "translation_date": "2025-09-04T23:36:28+00:00",
+ "original_hash": "0b8635427b582d03ea4ab7089b93e505",
+ "translation_date": "2026-07-14T07:09:05+00:00",
"source_file": "2-Regression/1-Tools/README.md",
"language_code": "da"
},
@@ -72,8 +72,8 @@
"language_code": "da"
},
"2-Regression/2-Data/README.md": {
- "original_hash": "7c077988328ebfe33b24d07945f16eca",
- "translation_date": "2025-09-04T23:41:33+00:00",
+ "original_hash": "a58b2c4d16c6b122643391745ac15af6",
+ "translation_date": "2026-07-14T07:10:35+00:00",
"source_file": "2-Regression/2-Data/README.md",
"language_code": "da"
},
@@ -89,6 +89,12 @@
"source_file": "2-Regression/2-Data/solution/Julia/README.md",
"language_code": "da"
},
+ "2-Regression/2-Data/solution/notebook.ipynb": {
+ "original_hash": "96b95f8cf473481f2f371de8156f1571",
+ "translation_date": "2026-07-14T07:01:27+00:00",
+ "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
+ "language_code": "da"
+ },
"2-Regression/3-Linear/README.md": {
"original_hash": "8b776e731c35b171d316d01d0e7b1369",
"translation_date": "2026-04-26T18:53:22+00:00",
@@ -457,7 +463,7 @@
},
"8-Reinforcement/1-QLearning/README.md": {
"original_hash": "911efd5e595089000cb3c16fce1beab8",
- "translation_date": "2025-09-05T01:08:08+00:00",
+ "translation_date": "2026-07-14T07:11:37+00:00",
"source_file": "8-Reinforcement/1-QLearning/README.md",
"language_code": "da"
},
@@ -581,6 +587,19 @@
"source_file": "TROUBLESHOOTING.md",
"language_code": "da"
},
+ "__translation_failures__": {
+ "sketchnotes/LICENSE.md": {
+ "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f",
+ "source_file": "sketchnotes/LICENSE.md",
+ "language_code": "da",
+ "failure_date": "2026-07-14T07:07:41+00:00",
+ "status": "failed",
+ "error_type": "TranslationIncompleteError",
+ "error_message": "Markdown translation remained incomplete for chunk 1.1.2 of 'LICENSE.md', and the chunk could not be split further.",
+ "translator_version": "0.20.0",
+ "failure_policy_version": 1
+ }
+ },
"docs/_sidebar.md": {
"original_hash": "68dd06c685f6ce840e0acfa313352e7c",
"translation_date": "2025-09-05T00:08:17+00:00",
diff --git a/translations/da/1-Introduction/3-fairness/README.md b/translations/da/1-Introduction/3-fairness/README.md
index 2f899e246..2b6a89bd1 100644
--- a/translations/da/1-Introduction/3-fairness/README.md
+++ b/translations/da/1-Introduction/3-fairness/README.md
@@ -1,30 +1,30 @@
-# Bygge maskinlæringsløsninger med ansvarlig AI
-
-
-> Sketchnote af [Tomomi Imura](https://www.twitter.com/girlie_mac)
-
-## [Quiz før lektionen](https://ff-quizzes.netlify.app/en/ml/)
+# Opbygning af Maskinlæringsløsninger med ansvarlig AI
+
+
+> Skitsetegning af [Tomomi Imura](https://www.twitter.com/girlie_mac)
+## [Forforelæsning quiz](https://ff-quizzes.netlify.app/en/ml/)
+
## Introduktion
-I dette pensum vil du begynde at opdage, hvordan maskinlæring kan og allerede påvirker vores daglige liv. Selv nu er systemer og modeller involveret i daglige beslutningsopgaver, såsom sundhedsdiagnoser, låneansøgninger eller afsløring af svindel. Derfor er det vigtigt, at disse modeller fungerer godt for at levere resultater, der er troværdige. Ligesom enhver softwareapplikation vil AI-systemer kunne fejle eller have uønskede resultater. Derfor er det afgørende at kunne forstå og forklare adfærden af en AI-model.
+I dette curriculum vil du begynde at opdage, hvordan maskinlæring kan og påvirker vores hverdag. Selv nu er systemer og modeller involveret i daglige beslutningstagninger, såsom sundhedsdiagnoser, lån-godkendelser eller registrering af svindel. Derfor er det vigtigt, at disse modeller fungerer godt for at levere resultater, der er pålidelige. Ligesom enhver softwareapplikation vil AI-systemer kunne fejle forventninger eller have uønsket resultat. Derfor er det væsentligt at kunne forstå og forklare adfærden hos en AI-model.
-Forestil dig, hvad der kan ske, når de data, du bruger til at bygge disse modeller, mangler visse demografiske grupper, såsom race, køn, politisk holdning, religion, eller uforholdsmæssigt repræsenterer sådanne grupper. Hvad med når modellens output tolkes til at favorisere en bestemt demografisk gruppe? Hvad er konsekvensen for applikationen? Derudover, hvad sker der, når modellen har et negativt resultat og skader mennesker? Hvem er ansvarlig for AI-systemets adfærd? Dette er nogle af de spørgsmål, vi vil udforske i dette pensum.
+Forestil dig, hvad der kan ske, når de data, du bruger til at opbygge disse modeller, mangler bestemte demografiske grupper, såsom race, køn, politisk synspunkt, religion eller uforholdsmæssigt repræsenterer sådanne demografier. Hvad hvis modellens output fortolkes som favoriserende nogle demografier? Hvad er konsekvensen for anvendelsen? Desuden, hvad sker der, når modellen giver et negativt resultat og er skadelig for mennesker? Hvem er ansvarlig for AI-systemets adfærd? Det er nogle af de spørgsmål, vi vil udforske i dette curriculum.
I denne lektion vil du:
- Øge din bevidsthed om vigtigheden af retfærdighed i maskinlæring og skader relateret til retfærdighed.
-- Blive bekendt med praksis for at udforske outliers og usædvanlige scenarier for at sikre pålidelighed og sikkerhed.
-- Få forståelse for behovet for at styrke alle ved at designe inkluderende systemer.
-- Udforske, hvor vigtigt det er at beskytte privatliv og sikkerhed for data og mennesker.
-- Se vigtigheden af en "glasboks"-tilgang til at forklare adfærden af AI-modeller.
-- Være opmærksom på, hvordan ansvarlighed er afgørende for at opbygge tillid til AI-systemer.
+- Blive fortrolig med praksissen omkring at undersøge afvigere og usædvanlige scenarier for at sikre pålidelighed og sikkerhed.
+- Opnå forståelse for nødvendigheden af at styrke alle ved at designe inkluderende systemer.
+- Udforske hvor vigtigt det er at beskytte fortrolighed og datasikkerhed for data og mennesker.
+- Se vigtigheden af at have en gennemsigtig tilgang til at forklare AI-modellers adfærd.
+- Være opmærksom på, hvordan ansvarlighed er essentiel for at opbygge tillid til AI-systemer.
## Forudsætning
-Som forudsætning bedes du tage "Principper for ansvarlig AI"-læringsstien og se videoen nedenfor om emnet:
+Som forudsætning, tag venligst "Principper for ansvarlig AI" læringssti og se videoen nedenfor om emnet:
-Lær mere om ansvarlig AI ved at følge denne [læringssti](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)
+Lær mere om ansvarlig AI ved at følge denne [Læringssti](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)
[](https://youtu.be/dnC8-uUZXSc "Microsofts tilgang til ansvarlig AI")
@@ -32,124 +32,128 @@ Lær mere om ansvarlig AI ved at følge denne [læringssti](https://docs.microso
## Retfærdighed
-AI-systemer bør behandle alle retfærdigt og undgå at påvirke lignende grupper af mennesker på forskellige måder. For eksempel, når AI-systemer giver vejledning om medicinsk behandling, låneansøgninger eller ansættelse, bør de give de samme anbefalinger til alle med lignende symptomer, økonomiske forhold eller faglige kvalifikationer. Hver af os som mennesker bærer med os arvede fordomme, der påvirker vores beslutninger og handlinger. Disse fordomme kan være tydelige i de data, vi bruger til at træne AI-systemer. Sådan manipulation kan nogle gange ske utilsigtet. Det er ofte svært bevidst at vide, hvornår man introducerer bias i data.
+AI-systemer bør behandle alle retfærdigt og undgå at påvirke lignende grupper af mennesker på forskellige måder. For eksempel, når AI-systemer leverer vejledning om medicinsk behandling, låneansøgninger eller beskæftigelse, bør de give de samme anbefalinger til alle med lignende symptomer, økonomiske forhold eller faglige kvalifikationer. Hver af os som mennesker bærer rundt på indgroede fordomme, som påvirker vores beslutninger og handlinger. Disse fordomme kan være tydelige i de data, vi bruger til at træne AI-systemer. Sådan manipulation kan nogle gange ske utilsigtet. Det er ofte svært bevidst at vide, hvornår man introducerer bias i data.
-**"Uretfærdighed"** omfatter negative konsekvenser eller "skader" for en gruppe mennesker, såsom dem defineret ud fra race, køn, alder eller handicapstatus. De vigtigste skader relateret til retfærdighed kan klassificeres som:
+**"Uretfærdighed"** omfatter negative påvirkninger, eller "skader", for en gruppe mennesker, såsom dem der er defineret ud fra race, køn, alder eller handicapstatus. De vigtigste skader relateret til retfærdighed kan klassificeres som:
-- **Allokering**, hvis et køn eller en etnicitet for eksempel favoriseres frem for en anden.
-- **Kvalitet af service**. Hvis du træner data til et specifikt scenarie, men virkeligheden er meget mere kompleks, fører det til en dårligt fungerende service. For eksempel en håndsæbedispenser, der ikke kunne registrere personer med mørk hud. [Reference](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
-- **Nedgørelse**. At kritisere og mærke noget eller nogen uretfærdigt. For eksempel mislabeled en billedmærkningsteknologi berømt billeder af mørkhudede mennesker som gorillaer.
-- **Over- eller underrepræsentation**. Ideen er, at en bestemt gruppe ikke ses i en bestemt profession, og enhver service eller funktion, der fortsat fremmer dette, bidrager til skade.
-- **Stereotyper**. At associere en given gruppe med forudbestemte attributter. For eksempel kan et sprogoversættelsessystem mellem engelsk og tyrkisk have unøjagtigheder på grund af ord med stereotype associationer til køn.
+- **Fordeling**, hvis for eksempel et køn eller en etnicitet favoriseres over en anden.
+- **Servicekvalitet**. Hvis du træner data til et specifikt scenarie, men virkeligheden er meget mere kompleks, fører det til en dårlig ydende service. For eksempel en håndsæbedispenser, der tilsyneladende ikke kunne genkende mennesker med mørk hud. [Reference](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
+- **Nedgørelse**. At uretfærdigt kritisere og mærke noget eller nogen. For eksempel blev en billedmærkningsteknologi berygtet for at fejlklassificere billeder af mørkhudede mennesker som gorillaer.
+- **Over- eller underrepræsentation**. Ideen er, at en bestemt gruppe ikke ses i et bestemt erhverv, og enhver service eller funktion, der fortsat fremmer det, bidrager til skade.
+- **Stereotyper**. At forbinde en given gruppe med forudbestemte karakteristika. For eksempel kan et sprogoversættelsessystem mellem engelsk og tyrkisk have unøjagtigheder på grund af ord med stereotype kønsforbindelser.
-
+
> oversættelse til tyrkisk
-
+
> oversættelse tilbage til engelsk
-Når vi designer og tester AI-systemer, skal vi sikre, at AI er retfærdig og ikke programmeret til at træffe biased eller diskriminerende beslutninger, som mennesker også er forbudt mod at træffe. At garantere retfærdighed i AI og maskinlæring forbliver en kompleks socioteknisk udfordring.
+Når vi designer og tester AI-systemer, skal vi sikre, at AI er retfærdig og ikke programmeret til at træffe biasede eller diskriminerende beslutninger, som mennesker også er forbudt at gøre. At garantere retfærdighed i AI og maskinlæring forbliver en kompleks socioteknisk udfordring.
### Pålidelighed og sikkerhed
-For at opbygge tillid skal AI-systemer være pålidelige, sikre og konsistente under normale og uventede forhold. Det er vigtigt at vide, hvordan AI-systemer vil opføre sig i en række forskellige situationer, især når de er outliers. Når man bygger AI-løsninger, skal der være betydelig fokus på, hvordan man håndterer en bred vifte af omstændigheder, som AI-løsningerne ville støde på. For eksempel skal en selvkørende bil prioritere menneskers sikkerhed højt. Som et resultat skal AI, der driver bilen, tage højde for alle de mulige scenarier, bilen kunne støde på, såsom nat, tordenvejr eller snestorme, børn der løber over gaden, kæledyr, vejarbejder osv. Hvor godt et AI-system kan håndtere en bred vifte af forhold pålideligt og sikkert afspejler niveauet af forudseenhed, som dataforskeren eller AI-udvikleren har overvejet under design eller test af systemet.
+For at opbygge tillid skal AI-systemer være pålidelige, sikre og konsistente under normale og uventede forhold. Det er vigtigt at vide, hvordan AI-systemer vil opføre sig i en række situationer, især når de er afvigere. Når man bygger AI-løsninger, skal der lægges væsentligt fokus på at håndtere en bred vifte af omstændigheder, som AI-løsningerne kan møde. For eksempel skal en selvkørende bil prioritere menneskers sikkerhed højest. Som følge heraf skal AI'en, der driver bilen, tage alle mulige scenarier i betragtning, som bilen kunne støde på, såsom nat, tordenvejr eller snestorm, børn der løber over gaden, kæledyr, vejarbejde mv. Hvor godt et AI-system kan håndtere et bredt spektrum af forhold pålideligt og sikkert, afspejler det niveau af forudseenhed, som dataforsker eller AI-udvikler har haft under design eller test af systemet.
> [🎥 Klik her for en video: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
-### Inklusion
+### Inklusivitet
-AI-systemer bør designes til at engagere og styrke alle. Når dataforskere og AI-udviklere designer og implementerer AI-systemer, identificerer og adresserer de potentielle barrierer i systemet, der utilsigtet kunne ekskludere mennesker. For eksempel er der 1 milliard mennesker med handicap verden over. Med fremskridt inden for AI kan de få adgang til en bred vifte af information og muligheder lettere i deres daglige liv. Ved at adressere barriererne skabes der muligheder for at innovere og udvikle AI-produkter med bedre oplevelser, der gavner alle.
+AI-systemer bør designes til at engagere og styrke alle. Når dataforskere og AI-udviklere designer og implementerer AI-systemer, identificerer og håndterer de potentielle barrierer i systemet, som utilsigtet kan udelukke mennesker. For eksempel er der 1 milliard mennesker med handicap på verdensplan. Med AI's fremskridt kan de nemmere få adgang til et bredt udvalg af information og muligheder i deres daglige liv. Ved at håndtere barriererne skabes der muligheder for at innovere og udvikle AI-produkter med bedre oplevelser, som gavner alle.
-> [🎥 Klik her for en video: inklusion i AI](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
+> [🎥 Klik her for en video: inklusivitet i AI](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
### Sikkerhed og privatliv
-AI-systemer bør være sikre og respektere folks privatliv. Folk har mindre tillid til systemer, der sætter deres privatliv, information eller liv i fare. Når vi træner maskinlæringsmodeller, stoler vi på data for at producere de bedste resultater. I den proces skal dataenes oprindelse og integritet overvejes. For eksempel, blev dataene indsendt af brugere eller offentligt tilgængelige? Dernæst, mens vi arbejder med dataene, er det afgørende at udvikle AI-systemer, der kan beskytte fortrolige oplysninger og modstå angreb. Efterhånden som AI bliver mere udbredt, bliver beskyttelse af privatliv og sikring af vigtige personlige og forretningsmæssige oplysninger mere kritisk og komplekst. Privatlivs- og datasikkerhedsproblemer kræver særlig opmærksomhed for AI, fordi adgang til data er afgørende for, at AI-systemer kan lave præcise og informerede forudsigelser og beslutninger om mennesker.
+AI-systemer bør være sikre og respektere folks privatliv. Folk har mindre tillid til systemer, der sætter deres privatliv, oplysninger eller liv i fare. Når vi træner maskinlæringsmodeller, er vi afhængige af data for at opnå de bedste resultater. Derfor skal dataens oprindelse og integritet tages i betragtning. For eksempel, var dataene brugergenererede eller offentligt tilgængelige? Dernæst, mens vi arbejder med data, er det afgørende at udvikle AI-systemer, som kan beskytte fortrolige oplysninger og modstå angreb. Efterhånden som AI bliver mere udbredt, bliver beskyttelse af privatliv og sikring af vigtige personlige og forretningsmæssige oplysninger mere kritisk og komplekst. Privatlivs- og datasikkerhedsproblemer kræver særlig opmærksomhed for AI, fordi adgang til data er afgørende for AI-systemers evne til at lave præcise og informerede forudsigelser og beslutninger om mennesker.
> [🎥 Klik her for en video: sikkerhed i AI](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- Som industri har vi gjort betydelige fremskridt inden for privatliv og sikkerhed, drevet væsentligt af reguleringer som GDPR (General Data Protection Regulation).
-- Alligevel må vi med AI-systemer erkende spændingen mellem behovet for mere personlige data for at gøre systemer mere personlige og effektive – og privatliv.
-- Ligesom med internettets fødsel ser vi også en stor stigning i antallet af sikkerhedsproblemer relateret til AI.
-- Samtidig har vi set AI blive brugt til at forbedre sikkerheden. For eksempel drives de fleste moderne antivirus-scannere i dag af AI-heuristikker.
-- Vi skal sikre, at vores dataforskningsprocesser harmonisk integreres med de nyeste privatlivs- og sikkerhedspraksisser.
+- Som industri har vi gjort betydelige fremskridt inden for privatliv og sikkerhed, drevet væsentligt af regulativer som GDPR (Generel forordning om databeskyttelse).
+- Alligevel må vi med AI-systemer anerkende spændingen mellem behovet for flere persondata for at gøre systemerne mere personlige og effektive – og privatliv.
+- Ligesom ved fødslen af internetforbundne computere ser vi også en stor stigning i antallet af sikkerhedsproblemer relateret til AI.
+- Samtidig har vi set AI blive brugt til at forbedre sikkerhed. For eksempel drives de fleste moderne antivirus-scannere i dag af AI-heuristikker.
+- Vi skal sikre, at vores Data Science-processer harmonerer med de nyeste privatlivs- og sikkerhedspraksisser.
-### Transparens
-AI-systemer bør være forståelige. En afgørende del af transparens er at forklare adfærden af AI-systemer og deres komponenter. At forbedre forståelsen af AI-systemer kræver, at interessenter forstår, hvordan og hvorfor de fungerer, så de kan identificere potentielle præstationsproblemer, sikkerheds- og privatlivsbekymringer, bias, ekskluderende praksis eller utilsigtede resultater. Vi mener også, at de, der bruger AI-systemer, bør være ærlige og åbne om, hvornår, hvorfor og hvordan de vælger at implementere dem. Samt begrænsningerne af de systemer, de bruger. For eksempel, hvis en bank bruger et AI-system til at understøtte sine forbrugerlånsbeslutninger, er det vigtigt at undersøge resultaterne og forstå, hvilke data der påvirker systemets anbefalinger. Regeringer begynder at regulere AI på tværs af industrier, så dataforskere og organisationer skal forklare, om et AI-system opfylder lovgivningsmæssige krav, især når der er et uønsket resultat.
+### Gennemsigtighed
+AI-systemer skal være forståelige. En afgørende del af gennemsigtighed er at forklare adfærden af AI-systemer og deres komponenter. For at forbedre forståelsen af AI-systemer kræves det, at interessenter forstår, hvordan og hvorfor de fungerer, så de kan identificere potentielle ydelsesproblemer, sikkerheds- og privatlivsbekymringer, bias, ekskluderende praksisser eller utilsigtede resultater. Vi mener også, at dem, der bruger AI-systemer, bør være ærlige og åbne omkring, hvornår, hvorfor og hvordan de vælger at implementere dem. Samt systemernes begrænsninger. For eksempel, hvis en bank bruger et AI-system til at støtte sine forbruger-lånebeslutninger, er det vigtigt at undersøge resultaterne og forstå, hvilke data der påvirker systemets anbefalinger. Regeringer begynder at regulere AI på tværs af brancher, så dataforskere og organisationer skal kunne forklare, om et AI-system opfylder reglerne, især når der er et uønsket resultat.
-> [🎥 Klik her for en video: transparens i AI](https://www.microsoft.com/videoplayer/embed/RE4voJF)
+> [🎥 Klik her for en video: gennemsigtighed i AI](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- Fordi AI-systemer er så komplekse, er det svært at forstå, hvordan de fungerer og tolke resultaterne.
-- Denne manglende forståelse påvirker, hvordan disse systemer administreres, operationaliseres og dokumenteres.
-- Denne manglende forståelse påvirker endnu vigtigere de beslutninger, der træffes ved hjælp af de resultater, disse systemer producerer.
+- Fordi AI-systemer er så komplekse, er det svært at forstå, hvordan de fungerer og fortolke resultaterne.
+- Denne mangel på forståelse påvirker måden, disse systemer administreres, operationaliseres og dokumenteres på.
+- Denne mangel på forståelse påvirker vigtigere beslutningerne, som træffes ved hjælp af de resultater, disse systemer producerer.
-### Ansvarlighed
+### Ansvarlighed
+
+De personer, der designer og implementerer AI-systemer, skal være ansvarlige for, hvordan deres systemer opererer. Behovet for ansvarlighed er særligt afgørende ved følsomme teknologier som ansigtsgenkendelse. For nylig har der været en stigende efterspørgsel efter ansigtsgenkendelsesteknologi, især fra retshåndhævende myndigheder, som ser potentialet i teknologien til blandt andet at finde savnede børn. Dog kunne disse teknologier potentielt bruges af en regering til at sætte borgernes grundlæggende friheder på spil ved for eksempel at muliggøre konstant overvågning af specifikke individer. Derfor skal dataforskere og organisationer være ansvarlige for, hvordan deres AI-system påvirker individer eller samfundet.
-De mennesker, der designer og implementerer AI-systemer, skal være ansvarlige for, hvordan deres systemer fungerer. Behovet for ansvarlighed er særligt vigtigt med følsomme teknologier som ansigtsgenkendelse. For nylig har der været en stigende efterspørgsel efter ansigtsgenkendelsesteknologi, især fra retshåndhævende organisationer, der ser potentialet i teknologien til anvendelser som at finde forsvundne børn. Men disse teknologier kunne potentielt bruges af en regering til at sætte borgernes grundlæggende friheder i fare ved for eksempel at muliggøre kontinuerlig overvågning af specifikke individer. Derfor skal dataforskere og organisationer være ansvarlige for, hvordan deres AI-system påvirker individer eller samfundet.
+[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsofts tilgang til ansvarlig AI")
-[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsofts tilgang til ansvarlig AI")
+> 🎥 Klik på billedet ovenfor for en video: Advarsler om masseovervågning via ansigtsgenkendelse
-> 🎥 Klik på billedet ovenfor for en video: Advarsler om masseovervågning gennem ansigtsgenkendelse
+I sidste ende er et af de største spørgsmål for vores generation, som den første generation, der bringer AI til samfundet, hvordan vi sikrer, at computere forbliver ansvarlige over for mennesker, og hvordan vi sikrer, at dem, der designer computere, forbliver ansvarlige over for alle andre.
-I sidste ende er et af de største spørgsmål for vores generation, som den første generation, der bringer AI til samfundet, hvordan vi sikrer, at computere forbliver ansvarlige over for mennesker, og hvordan vi sikrer, at de mennesker, der designer computere, forbliver ansvarlige over for alle andre.
+## Konsekvensvurdering
-## Vurdering af påvirkning
+Før træning af en maskinlæringsmodel er det vigtigt at gennemføre en konsekvensvurdering for at forstå formålet med AI-systemet; hvilken tiltænkt brug der er; hvor det vil blive implementeret; og hvem der vil interagere med systemet. Disse oplysninger er nyttige for bedømmere eller testere, der evaluerer systemet, for at vide, hvilke faktorer der skal tages i betragtning ved identifikation af potentielle risici og forventede konsekvenser.
-Før du træner en maskinlæringsmodel, er det vigtigt at gennemføre en vurdering af påvirkning for at forstå formålet med AI-systemet; hvad den tilsigtede anvendelse er; hvor det vil blive implementeret; og hvem der vil interagere med systemet. Disse er nyttige for anmelder(e) eller testere, der evaluerer systemet, for at vide, hvilke faktorer der skal tages i betragtning, når man identificerer potentielle risici og forventede konsekvenser.
+Følgende er fokusområder ved gennemførelse af en konsekvensvurdering:
-Følgende er fokusområder, når man gennemfører en vurdering af påvirkning:
+* **Negativ påvirkning på individer**. At være opmærksom på eventuelle begrænsninger eller krav, uautoriseret brug eller kendte begrænsninger, der forhindrer systemets ydelse, er vigtigt for at sikre, at systemet ikke bruges på en måde, der kan skade individer.
+* **Data krav**. At få forståelse for, hvordan og hvor systemet vil bruge data gør det muligt for bedømmere at undersøge eventuelle datakrav, som man skal være opmærksom på (fx GDPR- eller HIPAA-dataregler). Derudover skal man vurdere, om datakilden eller mængden af data er tilstrækkelig til træning.
+* **Oversigt over konsekvenser**. Saml en liste over potentielle skader, der kan opstå ved brug af systemet. Gennem hele ML-livscyklussen skal man gennemgå, om de identificerede problemer er blevet afhjulpet eller løst.
+* **Anvendte mål** for hver af de seks kerneprincipper. Vurder, om målene under hvert princip er mødt, og om der er nogen huller.
-* **Negative konsekvenser for individer**. At være opmærksom på eventuelle begrænsninger eller krav, ikke-understøttet brug eller kendte begrænsninger, der hindrer systemets ydeevne, er afgørende for at sikre, at systemet ikke bruges på en måde, der kan skade individer.
-* **Data krav**. At få en forståelse af, hvordan og hvor systemet vil bruge data, gør det muligt for anmeldere at udforske eventuelle datakrav, du skal være opmærksom på (f.eks. GDPR eller HIPPA dataregler). Derudover skal du undersøge, om kilden eller mængden af data er tilstrækkelig til træning.
-* **Opsummering af påvirkning**. Saml en liste over potentielle skader, der kunne opstå ved brug af systemet. Gennem hele ML-livscyklussen skal du gennemgå, om de identificerede problemer er afhjulpet eller adresseret.
-* **Anvendelige mål** for hver af de seks kerneprincipper. Vurder, om målene fra hvert af principperne er opfyldt, og om der er nogen mangler.
## Fejlfinding med ansvarlig AI
-Ligesom fejlfinding af en softwareapplikation er fejlfinding af et AI-system en nødvendig proces for at identificere og løse problemer i systemet. Der er mange faktorer, der kan påvirke en models ydeevne eller ansvarlighed. De fleste traditionelle modelpræstationsmålinger er kvantitative aggregater af en models ydeevne, hvilket ikke er tilstrækkeligt til at analysere, hvordan en model overtræder principperne for ansvarlig AI. Desuden er en maskinlæringsmodel en "black box", der gør det svært at forstå, hvad der driver dens resultater eller give forklaringer, når den begår fejl. Senere i dette kursus vil vi lære, hvordan man bruger Responsible AI-dashboardet til at hjælpe med fejlfinding af AI-systemer. Dashboardet giver et holistisk værktøj til dataforskere og AI-udviklere til at udføre:
+Ligesom ved fejlfinding af en softwareapplikation er fejlfinding af et AI-system en nødvendig proces til at identificere og løse problemer i systemet. Der er mange faktorer, der kan påvirke en models ydeevne til ikke at opføre sig som forventet eller ansvarligt. De fleste traditionelle målinger af modelpræstation er kvantitative summeringer af modellens præstation, som ikke er tilstrækkelige til at analysere, hvordan en model overtræder principperne for ansvarlig AI. Desuden er en maskinlæringsmodel en sort boks, der gør det svært at forstå, hvad der styrer dens resultat eller give forklaring, når den laver en fejl. Senere i kurset vil vi lære at bruge dashboardet for ansvarlig AI til at hjælpe med fejlfinding af AI-systemer. Dashboardet giver et holistisk værktøj for dataforskere og AI-udviklere til at udføre:
-* **Fejlanalyse**. For at identificere fejlfordelingen i modellen, der kan påvirke systemets retfærdighed eller pålidelighed.
-* **Modeloversigt**. For at opdage, hvor der er forskelle i modellens ydeevne på tværs af datakohorter.
-* **Dataanalyse**. For at forstå datadistributionen og identificere eventuel bias i dataene, der kunne føre til problemer med retfærdighed, inklusion og pålidelighed.
-* **Modelfortolkning**. For at forstå, hvad der påvirker eller influerer modellens forudsigelser. Dette hjælper med at forklare modellens adfærd, hvilket er vigtigt for transparens og ansvarlighed.
+* **Fejl-analyse**. For at identificere fejlfordelingen i modellen, som kan påvirke systemets retfærdighed eller pålidelighed.
+* **Modeloversigt**. For at opdage hvor der er forskelle i modellens ydeevne på tværs af datakohorter.
+* **Dataanalyse**. For at forstå datadistribution og identificere eventuel bias i data, som kan føre til problemer med retfærdighed, inklusivitet og pålidelighed.
+* **Modelfortolkning**. For at forstå, hvad der påvirker eller influerer modellens forudsigelser. Dette hjælper med at forklare modellens adfærd, hvilket er vigtigt for gennemsigtighed og ansvarlighed.
-## 🚀 Udfordring
-For at forhindre skader i at blive introduceret i første omgang bør vi:
+## 🚀 Udfordring
+
+For at forhindre, at skader overhovedet opstår, bør vi:
-- have en mangfoldighed af baggrunde og perspektiver blandt de mennesker, der arbejder på systemer
-- investere i datasæt, der afspejler mangfoldigheden i vores samfund
-- udvikle bedre metoder gennem hele maskinlæringslivscyklussen til at opdage og rette ansvarlig AI, når det opstår
+- have en mangfoldighed af baggrunde og perspektiver blandt de mennesker, der arbejder med systemerne
+- investere i datasæt, der afspejler samfundets mangfoldighed
+- udvikle bedre metoder gennem hele maskinlæringslivscyklussen til at opdage og korrigere ansvarlig AI, når det opstår
-Tænk på virkelige scenarier, hvor en models utroværdighed er tydelig i modelbygning og brug. Hvad bør vi ellers overveje?
+Tænk på virkelige scenarier, hvor en models upålidelighed er tydelig i modelbygning og brug. Hvad ellers bør vi overveje?
-## [Quiz efter lektionen](https://ff-quizzes.netlify.app/en/ml/)
+## [Efterforelæsning quiz](https://ff-quizzes.netlify.app/en/ml/)
-## Gennemgang & Selvstudie
+## Opsummering & Selvlæring
+
-I denne lektion har du lært nogle grundlæggende begreber om retfærdighed og uretfærdighed i maskinlæring.
-Se denne workshop for at dykke dybere ned i emnerne:
+I denne lektion har du lært nogle grundlæggende begreber inden for retfærdighed og uretfærdighed i maskinlæring.
+
+Se denne workshop for at dykke dybere ned i emnerne:
-- På jagt efter ansvarlig AI: Fra principper til praksis af Besmira Nushi, Mehrnoosh Sameki og Amit Sharma
+- I jagten på ansvarlig AI: At omsætte principper til praksis af Besmira Nushi, Mehrnoosh Sameki og Amit Sharma
-[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: En open-source ramme for at bygge ansvarlig AI")
+[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI")
-> 🎥 Klik på billedet ovenfor for en video: RAI Toolbox: En open-source ramme for at bygge ansvarlig AI af Besmira Nushi, Mehrnoosh Sameki og Amit Sharma
+> 🎥 Klik på billedet ovenfor for en video: RAI Toolbox: Et open-source rammeværk til at bygge ansvarlig AI af Besmira Nushi, Mehrnoosh Sameki og Amit Sharma
-Læs også:
+Læs også:
-- Microsofts RAI ressourcecenter: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
+- Microsofts RAI ressourcecenter: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
-- Microsofts FATE forskningsgruppe: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
+- Microsofts FATE forskergruppe: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
-RAI Toolbox:
+RAI Toolbox:
- [Responsible AI Toolbox GitHub repository](https://github.com/microsoft/responsible-ai-toolbox)
Læs om Azure Machine Learnings værktøjer til at sikre retfærdighed:
-- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
+- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
## Opgave
@@ -157,5 +161,7 @@ Læs om Azure Machine Learnings værktøjer til at sikre retfærdighed:
---
-**Ansvarsfraskrivelse**:
-Dette dokument er blevet oversat ved hjælp af AI-oversættelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selvom vi bestræber os på nøjagtighed, skal du være opmærksom på, at automatiserede oversættelser kan indeholde fejl eller unøjagtigheder. Det originale dokument på dets oprindelige sprog bør betragtes som den autoritative kilde. For kritisk information anbefales professionel menneskelig oversættelse. Vi er ikke ansvarlige for eventuelle misforståelser eller fejltolkninger, der opstår som følge af brugen af denne oversættelse.
\ No newline at end of file
+
+**Ansvarsfraskrivelse**:
+Dette dokument er blevet oversat ved hjælp af AI-oversættelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selvom vi bestræber os på nøjagtighed, skal du være opmærksom på, at automatiserede oversættelser kan indeholde fejl eller unøjagtigheder. Det originale dokument på dets oprindelige sprog bør betragtes som den autoritative kilde. For kritisk information anbefales professionel menneskelig oversættelse. Vi påtager os intet ansvar for misforståelser eller fejltolkninger, der opstår som følge af brugen af denne oversættelse.
+
\ No newline at end of file
diff --git a/translations/da/2-Regression/1-Tools/README.md b/translations/da/2-Regression/1-Tools/README.md
index f284ff24e..00a6602f6 100644
--- a/translations/da/2-Regression/1-Tools/README.md
+++ b/translations/da/2-Regression/1-Tools/README.md
@@ -1,106 +1,107 @@
# Kom godt i gang med Python og Scikit-learn til regressionsmodeller
-
+
> Sketchnote af [Tomomi Imura](https://www.twitter.com/girlie_mac)
-## [Quiz før lektionen](https://ff-quizzes.netlify.app/en/ml/)
+## [For-forelæsning quiz](https://ff-quizzes.netlify.app/en/ml/)
-> ### [Denne lektion er også tilgængelig i R!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
+> ### [Denne lektion findes også i R!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
## Introduktion
-I disse fire lektioner vil du lære, hvordan man bygger regressionsmodeller. Vi vil snart diskutere, hvad de bruges til. Men før du gør noget, skal du sørge for, at du har de rigtige værktøjer klar til at starte processen!
+I disse fire lektioner vil du opdage, hvordan man bygger regressionsmodeller. Vi vil snart diskutere, hvad disse bruges til. Men før du gør noget, skal du sikre dig, at du har de rette værktøjer på plads for at begynde processen!
I denne lektion vil du lære at:
-- Konfigurere din computer til lokale machine learning-opgaver.
-- Arbejde med Jupyter-notebooks.
-- Bruge Scikit-learn, herunder installation.
+- Konfigurere din computer til lokale maskinlæringsopgaver.
+- Arbejde med Jupyter Notebooks.
+- Bruge Scikit-learn, inklusive installation.
- Udforske lineær regression med en praktisk øvelse.
## Installationer og konfigurationer
-[](https://youtu.be/-DfeD2k2Kj0 "ML for begyndere - Konfigurer dine værktøjer til at bygge Machine Learning-modeller")
+[](https://youtu.be/-DfeD2k2Kj0 "ML for begyndere -Opsæt dine værktøjer klar til at bygge maskinlæringsmodeller")
-> 🎥 Klik på billedet ovenfor for en kort video om konfiguration af din computer til ML.
+> 🎥 Klik på billedet ovenfor for en kort video, der viser, hvordan du konfigurerer din computer til ML.
-1. **Installer Python**. Sørg for, at [Python](https://www.python.org/downloads/) er installeret på din computer. Du vil bruge Python til mange data science- og machine learning-opgaver. De fleste computersystemer har allerede en Python-installation. Der findes også nyttige [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott), som kan gøre opsætningen lettere for nogle brugere.
+1. **Installer Python**. Sørg for, at [Python](https://www.python.org/downloads/) er installeret på din computer. Du vil bruge Python til mange data science- og maskinlæringsopgaver. De fleste computersystemer inkluderer allerede en Python-installation. Der findes også nyttige [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) tilgængelige, som kan lette opsætningen for nogle brugere.
- Nogle anvendelser af Python kræver én version af softwaren, mens andre kræver en anden version. Derfor er det nyttigt at arbejde i et [virtuelt miljø](https://docs.python.org/3/library/venv.html).
+ Nogle anvendelser af Python kræver dog én version af softwaren, mens andre kræver en anden version. Af denne grund er det nyttigt at arbejde inden for et [virtuelt miljø](https://docs.python.org/3/library/venv.html).
-2. **Installer Visual Studio Code**. Sørg for, at du har Visual Studio Code installeret på din computer. Følg disse instruktioner for at [installere Visual Studio Code](https://code.visualstudio.com/) til den grundlæggende installation. Du vil bruge Python i Visual Studio Code i dette kursus, så det kan være en god idé at opdatere din viden om, hvordan man [konfigurerer Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) til Python-udvikling.
+2. **Installer Visual Studio Code**. Sørg for, at du har Visual Studio Code installeret på din computer. Følg disse instruktioner for at [installere Visual Studio Code](https://code.visualstudio.com/) til den grundlæggende installation. Du kommer til at bruge Python i Visual Studio Code i dette kursus, så du vil måske opfriske, hvordan man [konfigurerer Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) til Python-udvikling.
- > Bliv fortrolig med Python ved at gennemgå denne samling af [Learn-moduler](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)
+ > Bliv fortrolig med Python ved at arbejde gennem denne samling af [Læringsmoduler](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)
>
> [](https://youtu.be/yyQM70vi7V8 "Opsæt Python med Visual Studio Code")
>
- > 🎥 Klik på billedet ovenfor for en video: Brug Python i VS Code.
+ > 🎥 Klik på billedet ovenfor for en video: brug af Python i VS Code.
-3. **Installer Scikit-learn** ved at følge [disse instruktioner](https://scikit-learn.org/stable/install.html). Da du skal sikre dig, at du bruger Python 3, anbefales det, at du bruger et virtuelt miljø. Bemærk, at hvis du installerer dette bibliotek på en M1 Mac, er der særlige instruktioner på den side, der er linket til ovenfor.
+3. **Installer Scikit-learn**, ved at følge [disse instruktioner](https://scikit-learn.org/stable/install.html). Da du skal sikre dig, at du bruger Python 3, anbefales det, at du bruger et virtuelt miljø. Bemærk, hvis du installerer dette bibliotek på en M1 Mac, er der særlige instruktioner på den linkede side ovenfor.
-4. **Installer Jupyter Notebook**. Du skal [installere Jupyter-pakken](https://pypi.org/project/jupyter/).
+1. **Installer Jupyter Notebook**. Du skal [installere Jupyter-pakken](https://pypi.org/project/jupyter/).
-## Dit ML-udviklingsmiljø
+## Dit ML forfattermiljø
-Du vil bruge **notebooks** til at udvikle din Python-kode og oprette machine learning-modeller. Denne type fil er et almindeligt værktøj for dataforskere, og de kan identificeres ved deres suffix eller filtype `.ipynb`.
+Du kommer til at bruge **notebooks** til at udvikle din Python-kode og skabe maskinlæringsmodeller. Denne type fil er et almindeligt værktøj for dataforskere, og de kan identificeres ved deres suffix eller filendelse `.ipynb`.
-Notebooks er et interaktivt miljø, der giver udvikleren mulighed for både at kode og tilføje noter samt skrive dokumentation omkring koden, hvilket er meget nyttigt for eksperimentelle eller forskningsorienterede projekter.
+Notebooks er et interaktivt miljø, som tillader udvikleren både at kode og tilføje noter og skrive dokumentation omkring koden, hvilket er ganske hjælpsomt til eksperimentelle eller forskningsorienterede projekter.
-[](https://youtu.be/7E-jC8FLA2E "ML for begyndere - Opsæt Jupyter Notebooks for at begynde at bygge regressionsmodeller")
+[](https://youtu.be/7E-jC8FLA2E "ML for begyndere - Opsæt Jupyter Notebooks for at starte med at bygge regressionsmodeller")
-> 🎥 Klik på billedet ovenfor for en kort video om denne øvelse.
+> 🎥 Klik på billedet ovenfor for en kort video, der gennemgår denne øvelse.
-### Øvelse - arbejde med en notebook
+### Øvelse - arbejd med en notebook
I denne mappe finder du filen _notebook.ipynb_.
1. Åbn _notebook.ipynb_ i Visual Studio Code.
- En Jupyter-server vil starte med Python 3+. Du vil finde områder i notebooken, der kan `køres`, stykker af kode. Du kan køre en kodeblok ved at vælge ikonet, der ligner en afspilningsknap.
+ En Jupyter-server vil starte med Python 3+ i gang. Du vil finde områder af notebooken, der kan `køres`, stykker af kode. Du kan køre en kodeblok ved at vælge ikonet, der ligner en afspilningsknap.
-2. Vælg `md`-ikonet og tilføj lidt markdown med følgende tekst **# Velkommen til din notebook**.
+1. Vælg `md`-ikonet og tilføj lidt markdown, og følgende tekst **# Velkommen til din notebook**.
Tilføj derefter noget Python-kode.
-3. Skriv **print('hello notebook')** i kodeblokken.
-4. Vælg pilen for at køre koden.
+1. Skriv **print('hello notebook')** i kodeblokken.
+1. Vælg pilen for at køre koden.
- Du bør se den udskrevne erklæring:
+ Du skulle gerne se den udskrevne sætning:
```output
hello notebook
```
-
+
-Du kan blande din kode med kommentarer for at selv-dokumentere notebooken.
+Du kan folde din kode sammen med kommentarer for at selvdokumentere notebooken.
✅ Tænk et øjeblik over, hvor forskelligt en webudviklers arbejdsmiljø er i forhold til en dataforskers.
-## Kom godt i gang med Scikit-learn
+## Oppe og køre med Scikit-learn
-Nu hvor Python er sat op i dit lokale miljø, og du er fortrolig med Jupyter-notebooks, lad os blive lige så fortrolige med Scikit-learn (udtales `sci` som i `science`). Scikit-learn tilbyder en [omfattende API](https://scikit-learn.org/stable/modules/classes.html#api-ref) til at hjælpe dig med at udføre ML-opgaver.
+Nu hvor Python er sat op i dit lokale miljø, og du er fortrolig med Jupyter Notebooks, lad os blive lige så fortrolige med Scikit-learn (udtales `sci` som i `science`). Scikit-learn tilbyder et [omfattende API](https://scikit-learn.org/stable/modules/classes.html#api-ref) for at hjælpe dig med at udføre ML-opgaver.
-Ifølge deres [websted](https://scikit-learn.org/stable/getting_started.html) er "Scikit-learn et open source machine learning-bibliotek, der understøtter superviseret og usuperviseret læring. Det tilbyder også forskellige værktøjer til modeltilpasning, databehandling, modelvalg og evaluering samt mange andre funktioner."
+Ifølge deres [hjemmeside](https://scikit-learn.org/stable/getting_started.html), "er Scikit-learn et open source maskinlæringsbibliotek, der understøtter superviseret og usuperviseret læring. Det tilbyder også forskellige værktøjer til modeltilpasning, dataprvbehandling, modelvalg og evaluering samt mange andre hjælpemidler."
-I dette kursus vil du bruge Scikit-learn og andre værktøjer til at bygge machine learning-modeller til at udføre det, vi kalder 'traditionelle machine learning'-opgaver. Vi har bevidst undgået neurale netværk og deep learning, da de er bedre dækket i vores kommende 'AI for Beginners'-curriculum.
+I dette kursus vil du bruge Scikit-learn og andre værktøjer til at bygge maskinlæringsmodeller for at udføre det, vi kalder 'traditionelle maskinlærings'-opgaver. Vi har bevidst undgået neurale netværk og dyb læring, da de bedre dækkes i vores kommende 'AI for Beginners' pensum.
-Scikit-learn gør det nemt at bygge modeller og evaluere dem til brug. Det fokuserer primært på brugen af numeriske data og indeholder flere færdiglavede datasæt til brug som læringsværktøjer. Det inkluderer også forudbyggede modeller, som studerende kan prøve. Lad os udforske processen med at indlæse forpakkede data og bruge en indbygget estimator til den første ML-model med Scikit-learn med nogle grundlæggende data.
+Scikit-learn gør det enkelt at bygge modeller og evaluere dem til brug. Det fokuserer primært på at bruge numeriske data og indeholder adskillige færdiglavede datasæt til brug som læringsværktøjer. Det inkluderer også forberedte modeller, som studerende kan prøve. Lad os først udforske processen med at indlæse forberedte data og bruge en indbygget estimator — den første ML-model med Scikit-learn med nogle grundlæggende data.
## Øvelse - din første Scikit-learn notebook
> Denne tutorial er inspireret af [eksemplet på lineær regression](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) på Scikit-learns websted.
-[](https://youtu.be/2xkXL5EUpS0 "ML for begyndere - Dit første projekt med lineær regression i Python")
-> 🎥 Klik på billedet ovenfor for en kort video om denne øvelse.
+[](https://youtu.be/2xkXL5EUpS0 "ML for begyndere - Dit første lineære regressionsprojekt i Python")
-I filen _notebook.ipynb_ tilknyttet denne lektion skal du rydde alle celler ved at trykke på 'skraldespand'-ikonet.
+> 🎥 Klik på billedet ovenfor for en kort video, der gennemgår denne øvelse.
-I denne sektion vil du arbejde med et lille datasæt om diabetes, som er indbygget i Scikit-learn til læringsformål. Forestil dig, at du ville teste en behandling for diabetiske patienter. Machine Learning-modeller kan hjælpe dig med at afgøre, hvilke patienter der vil reagere bedre på behandlingen baseret på kombinationer af variabler. Selv en meget grundlæggende regressionsmodel, når den visualiseres, kan vise information om variabler, der kan hjælpe dig med at organisere dine teoretiske kliniske forsøg.
+I filen _notebook.ipynb_ tilknyttet denne lektion, ryd alle cellerne ved at trykke på 'skraldespands' ikonet.
-✅ Der findes mange typer regressionsmetoder, og hvilken du vælger afhænger af det svar, du leder efter. Hvis du vil forudsige den sandsynlige højde for en person i en given alder, vil du bruge lineær regression, da du søger en **numerisk værdi**. Hvis du er interesseret i at finde ud af, om en type køkken skal betragtes som vegansk eller ej, leder du efter en **kategoriinddeling**, så du vil bruge logistisk regression. Du vil lære mere om logistisk regression senere. Tænk lidt over nogle spørgsmål, du kan stille til data, og hvilken af disse metoder der ville være mest passende.
+I denne sektion vil du arbejde med et lille datasæt om diabetes, som er indbygget i Scikit-learn til læringsformål. Forestil dig, at du ønskede at teste en behandling for diabetespatienter. Maskinlæringsmodeller kan hjælpe dig med at afgøre, hvilke patienter der ville reagere bedre på behandlingen, baseret på kombinationer af variable. Selv en meget basal regressionsmodel, når den visualiseres, kan vise oplysninger om variable, der ville hjælpe dig med at organisere dine teoretiske kliniske forsøg.
+
+✅ Der findes mange typer regressionsmetoder, og hvilken du vælger afhænger af det svar, du søger. Hvis du vil forudsige den sandsynlige højde for en person i en given alder, vil du bruge lineær regression, da du søger en **numerisk værdi**. Hvis du er interesseret i at finde ud af, om en bestemt type køkken skal betragtes som vegansk eller ej, søger du en **kategori-tildeling**, så du ville bruge logistisk regression. Du lærer mere om logistisk regression senere. Tænk lidt over nogle spørgsmål, du kan stille om data, og hvilken af disse metoder der ville være mere passende.
Lad os komme i gang med denne opgave.
@@ -108,9 +109,9 @@ Lad os komme i gang med denne opgave.
Til denne opgave vil vi importere nogle biblioteker:
-- **matplotlib**. Det er et nyttigt [grafværktøj](https://matplotlib.org/), og vi vil bruge det til at oprette en linjeplot.
+- **matplotlib**. Det er et nyttigt [grafværktøj](https://matplotlib.org/) og vi vil bruge det til at lave en linjeplot.
- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) er et nyttigt bibliotek til håndtering af numeriske data i Python.
-- **sklearn**. Dette er [Scikit-learn](https://scikit-learn.org/stable/user_guide.html)-biblioteket.
+- **sklearn**. Dette er [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) biblioteket.
Importer nogle biblioteker til at hjælpe med dine opgaver.
@@ -122,26 +123,26 @@ Importer nogle biblioteker til at hjælpe med dine opgaver.
from sklearn import datasets, linear_model, model_selection
```
- Ovenfor importerer du `matplotlib`, `numpy`, og du importerer `datasets`, `linear_model` og `model_selection` fra `sklearn`. `model_selection` bruges til at opdele data i trænings- og test-sæt.
+ Ovenfor importerer du `matplotlib`, `numpy` og du importerer også `datasets`, `linear_model` og `model_selection` fra `sklearn`. `model_selection` bruges til at opdele data i trænings- og testdatasæt.
### Diabetes-datasættet
-Det indbyggede [diabetes-datasæt](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) inkluderer 442 prøver af data omkring diabetes med 10 feature-variabler, nogle af dem inkluderer:
+Det indbyggede [diabetes datasæt](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) indeholder 442 datapunkter om diabetes, med 10 feature variabler, nogle af dem inkluderer:
-- age: alder i år
-- bmi: body mass index
+- alder: alder i år
+- bmi: kropsmasseindeks
- bp: gennemsnitligt blodtryk
-- s1 tc: T-celler (en type hvide blodceller)
+- s1 tc: T-celler (en type hvide blodlegemer)
-✅ Dette datasæt inkluderer begrebet 'køn' som en feature-variabel, der er vigtig for forskning omkring diabetes. Mange medicinske datasæt inkluderer denne type binær klassifikation. Tænk lidt over, hvordan kategoriseringer som denne kan udelukke visse dele af befolkningen fra behandlinger.
+✅ Dette datasæt inkluderer begrebet 'køn' som en feature variabel vigtig for forskning omkring diabetes. Mange medicinske datasæt inkluderer denne type binær klassifikation. Tænk lidt over, hvordan kategoriseringer som denne kan udelukke visse dele af en befolkning fra behandlinger.
-Nu skal du indlæse X- og y-data.
+Nu skal du indlæse X- og y-dataene.
-> 🎓 Husk, dette er superviseret læring, og vi har brug for et navngivet 'y'-mål.
+> 🎓 Husk, dette er superviseret læring, og vi har brug for et navngivet 'y' mål.
-I en ny kodecelle skal du indlæse diabetes-datasættet ved at kalde `load_diabetes()`. Inputtet `return_X_y=True` signalerer, at `X` vil være en datamatrix, og `y` vil være regressionsmålet.
+I en ny kodecelle, indlæs diabetes datasættet ved at kalde `load_diabetes()`. Inputtet `return_X_y=True` signalerer, at `X` vil være en datamatricer, og `y` vil være regressionsmålet.
-1. Tilføj nogle print-kommandoer for at vise formen på datamatricen og dens første element:
+1. Tilføj nogle print-kommandoer for at vise formen af datamatrixen og dens første element:
```python
X, y = datasets.load_diabetes(return_X_y=True)
@@ -149,9 +150,9 @@ I en ny kodecelle skal du indlæse diabetes-datasættet ved at kalde `load_diabe
print(X[0])
```
- Det, du får tilbage som svar, er en tuple. Det, du gør, er at tildele de to første værdier af tuplen til henholdsvis `X` og `y`. Læs mere [om tuples](https://wikipedia.org/wiki/Tuple).
+ Det, du får tilbage som respons, er en tuple. Det, du gør, er at tildele de to første værdier i tuplen til henholdsvis `X` og `y`. Læs mere [om tuples](https://wikipedia.org/wiki/Tuple).
- Du kan se, at disse data har 442 elementer formet i arrays med 10 elementer:
+ Du kan se, at disse data har 442 elementer formet som arrays med 10 elementer:
```text
(442, 10)
@@ -159,39 +160,39 @@ I en ny kodecelle skal du indlæse diabetes-datasættet ved at kalde `load_diabe
-0.04340085 -0.00259226 0.01990842 -0.01764613]
```
- ✅ Tænk lidt over forholdet mellem dataene og regressionsmålet. Lineær regression forudsiger forholdet mellem feature X og målvariabel y. Kan du finde [målet](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) for diabetes-datasættet i dokumentationen? Hvad demonstrerer dette datasæt, givet målet?
+ ✅ Tænk lidt over forholdet mellem dataene og regressionsmålet. Lineær regression forudsiger sammenhænge mellem feature X og målvariablen y. Kan du finde [målet](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) for diabetes datasættet i dokumentationen? Hvad demonstrerer dette datasæt, givet målet?
-2. Vælg derefter en del af dette datasæt til at plotte ved at vælge den 3. kolonne i datasættet. Du kan gøre dette ved at bruge `:`-operatoren til at vælge alle rækker og derefter vælge den 3. kolonne ved hjælp af indekset (2). Du kan også omforme dataene til at være et 2D-array - som krævet for plotning - ved at bruge `reshape(n_rows, n_columns)`. Hvis en af parametrene er -1, beregnes den tilsvarende dimension automatisk.
+2. Vælg derefter en del af dette datasæt til at plotte ved at vælge den 3. kolonne af datasættet. Det kan du gøre ved at bruge `:` operatoren til at vælge alle rækker, og derefter vælge den 3. kolonne ved hjælp af indekset (2). Du kan også omforme dataene til at være et 2D-array — som krævet for plotning — ved at bruge `reshape(n_rows, n_columns)`. Hvis en af parametrene er -1, beregnes den tilsvarende dimension automatisk.
```python
X = X[:, 2]
X = X.reshape((-1,1))
```
- ✅ Print dataene når som helst for at kontrollere deres form.
+ ✅ Print dataene ud når som helst for at tjekke deres form.
-3. Nu hvor du har data klar til at blive plottet, kan du se, om en maskine kan hjælpe med at bestemme en logisk opdeling mellem tallene i dette datasæt. For at gøre dette skal du opdele både dataene (X) og målet (y) i test- og træningssæt. Scikit-learn har en ligetil måde at gøre dette på; du kan opdele dine testdata på et givet punkt.
+3. Nu hvor du har data klar til at blive plottet, kan du se, om en maskine kan hjælpe med at bestemme en logisk opdeling mellem tallene i dette datasæt. For at gøre dette skal du opdele både dataene (X) og målet (y) i test- og træningssæt. Scikit-learn har en ligetil måde at gøre dette på; du kan opdele dine testdata på et givent punkt.
```python
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33)
```
-4. Nu er du klar til at træne din model! Indlæs den lineære regressionsmodel og træn den med dine X- og y-træningssæt ved hjælp af `model.fit()`:
+4. Nu er du klar til at træne din model! Indlæs den lineære regressionsmodel og træne den med dine X- og y træningssæt ved hjælp af `model.fit()`:
```python
model = linear_model.LinearRegression()
model.fit(X_train, y_train)
```
- ✅ `model.fit()` er en funktion, du vil se i mange ML-biblioteker som TensorFlow.
+ ✅ `model.fit()` er en funktion, du vil se i mange ML-biblioteker såsom TensorFlow
-5. Derefter skal du oprette en forudsigelse ved hjælp af testdata ved hjælp af funktionen `predict()`. Dette vil blive brugt til at tegne linjen mellem data-grupperne.
+5. Opret derefter en forudsigelse ved hjælp af testdata, brug funktionen `predict()`. Dette vil blive brugt til at tegne linjen mellem datagrupper
```python
y_pred = model.predict(X_test)
```
-6. Nu er det tid til at vise dataene i et plot. Matplotlib er et meget nyttigt værktøj til denne opgave. Opret et scatterplot af alle X- og y-testdata, og brug forudsigelsen til at tegne en linje på det mest passende sted mellem modellens data-grupperinger.
+6. Nu er det tid til at vise dataene i et plot. Matplotlib er et meget nyttigt værktøj til denne opgave. Lav et scatterplot af alle X- og y testdata, og brug forudsigelsen til at tegne en linje på det mest passende sted, mellem modellens datagrupperinger.
```python
plt.scatter(X_test, y_test, color='black')
@@ -202,22 +203,24 @@ I en ny kodecelle skal du indlæse diabetes-datasættet ved at kalde `load_diabe
plt.show()
```
- 
-✅ Tænk lidt over, hvad der foregår her. En lige linje løber gennem mange små datapunkter, men hvad gør den egentlig? Kan du se, hvordan du burde kunne bruge denne linje til at forudsige, hvor et nyt, ukendt datapunkt skulle passe i forhold til plottets y-akse? Prøv at sætte ord på den praktiske anvendelse af denne model.
+ 
+
+
+ ✅ Tænk lidt over, hvad der foregår her. En ret linje løber gennem mange små datapunkter, men hvad gør den egentlig? Kan du se, hvordan du burde kunne bruge denne linje til at forudsige, hvor et nyt, uset datapunkt skal placeres i forhold til plottets y-akse? Prøv at formulere den praktiske anvendelse af denne model.
Tillykke, du har bygget din første lineære regressionsmodel, lavet en forudsigelse med den og vist den i et plot!
---
## 🚀Udfordring
-Plot en anden variabel fra dette datasæt. Tip: rediger denne linje: `X = X[:,2]`. Givet målet for dette datasæt, hvad kan du opdage om udviklingen af diabetes som en sygdom?
+Plot en anden variabel fra dette datasæt. Tip: rediger denne linje: `X = X[:,2]`. Med dette datasæts målvariabel, hvad kan du opdage om progressionen af diabetes som sygdom?
## [Quiz efter forelæsning](https://ff-quizzes.netlify.app/en/ml/)
-## Gennemgang & Selvstudie
+## Gennemgang & Selvstudium
-I denne tutorial arbejdede du med simpel lineær regression, frem for univariat eller multivariat regression. Læs lidt om forskellene mellem disse metoder, eller se [denne video](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef).
+I denne vejledning arbejdede du med simpel lineær regression fremfor univariat eller multiple lineære regression. Læs lidt om forskellene mellem disse metoder, eller se [denne video](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef)
-Læs mere om begrebet regression og tænk over, hvilke slags spørgsmål der kan besvares med denne teknik. Tag [denne tutorial](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) for at uddybe din forståelse.
+Læs mere om konceptet regression og tænk over, hvilke slags spørgsmål der kan besvares med denne teknik. Tag denne [vejledning](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) for at fordybe din forståelse.
## Opgave
@@ -225,5 +228,7 @@ Læs mere om begrebet regression og tænk over, hvilke slags spørgsmål der kan
---
-**Ansvarsfraskrivelse**:
-Dette dokument er blevet oversat ved hjælp af AI-oversættelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selvom vi bestræber os på at opnå nøjagtighed, skal du være opmærksom på, at automatiserede oversættelser kan indeholde fejl eller unøjagtigheder. Det originale dokument på dets oprindelige sprog bør betragtes som den autoritative kilde. For kritisk information anbefales professionel menneskelig oversættelse. Vi er ikke ansvarlige for eventuelle misforståelser eller fejltolkninger, der måtte opstå som følge af brugen af denne oversættelse.
\ No newline at end of file
+
+**Ansvarsfraskrivelse**:
+Dette dokument er blevet oversat ved hjælp af AI-oversættelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selvom vi bestræber os på nøjagtighed, skal du være opmærksom på, at automatiserede oversættelser kan indeholde fejl eller unøjagtigheder. Det originale dokument på dets oprindelige sprog bør betragtes som den autoritative kilde. For kritisk information anbefales professionel menneskelig oversættelse. Vi påtager os intet ansvar for misforståelser eller fejltolkninger, der opstår som følge af brugen af denne oversættelse.
+
\ No newline at end of file
diff --git a/translations/da/2-Regression/2-Data/README.md b/translations/da/2-Regression/2-Data/README.md
index ae83ebcef..ad12e7378 100644
--- a/translations/da/2-Regression/2-Data/README.md
+++ b/translations/da/2-Regression/2-Data/README.md
@@ -1,62 +1,62 @@
# Byg en regressionsmodel med Scikit-learn: forbered og visualiser data
-
+
-Infographic af [Dasani Madipalli](https://twitter.com/dasani_decoded)
+Infografik af [Dasani Madipalli](https://twitter.com/dasani_decoded)
-## [Quiz før lektionen](https://ff-quizzes.netlify.app/en/ml/)
+## [For-forelæsning quiz](https://ff-quizzes.netlify.app/en/ml/)
-> ### [Denne lektion er også tilgængelig i R!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
+> ### [Denne lektion findes også i R!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
## Introduktion
-Nu hvor du har de nødvendige værktøjer til at begynde at bygge maskinlæringsmodeller med Scikit-learn, er du klar til at begynde at stille spørgsmål til dine data. Når du arbejder med data og anvender ML-løsninger, er det meget vigtigt at forstå, hvordan man stiller de rigtige spørgsmål for at udnytte potentialet i dit datasæt korrekt.
+Nu hvor du er sat op med de værktøjer, du har brug for til at begynde at angribe maskinlæringsmodelbygning med Scikit-learn, er du klar til at begynde at stille spørgsmål til dine data. Når du arbejder med data og anvender ML-løsninger, er det meget vigtigt at forstå, hvordan man stiller det rigtige spørgsmål for ordentligt at låse op for potentialerne i dit datasæt.
I denne lektion vil du lære:
- Hvordan du forbereder dine data til modelbygning.
- Hvordan du bruger Matplotlib til datavisualisering.
+- Hvordan du bruger Seaborn til mere udtryksfuld datavisualisering.
-## Stille de rigtige spørgsmål til dine data
+## At stille det rette spørgsmål til dine data
-Det spørgsmål, du ønsker besvaret, vil afgøre, hvilken type ML-algoritmer du skal bruge. Og kvaliteten af det svar, du får, vil i høj grad afhænge af kvaliteten af dine data.
+Det spørgsmål, du har brug for svar på, vil afgøre, hvilken type ML-algoritmer du vil anvende. Og kvaliteten af det svar, du får tilbage, vil i høj grad afhænge af karakteren af dine data.
-Tag et kig på [dataene](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv), der er leveret til denne lektion. Du kan åbne denne .csv-fil i VS Code. En hurtig gennemgang viser straks, at der er tomme felter og en blanding af tekst og numeriske data. Der er også en mærkelig kolonne kaldet 'Package', hvor dataene er en blanding af 'sacks', 'bins' og andre værdier. Dataene er faktisk lidt rodede.
+Tag et kig på de [data](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv), der er leveret til denne lektion. Du kan åbne denne .csv-fil i VS Code. En hurtig gennemgang viser straks, at der er tomme felter og en blanding af tekststrenge og numeriske data. Der er også en mærkelig kolonne kaldet 'Package', hvor dataene er en blanding af 'sække', 'beholdere' og andre værdier. Dataene er faktisk en smule rodede.
-[](https://youtu.be/5qGjczWTrDQ "ML for begyndere - Hvordan analyserer og renser man et datasæt")
+[](https://youtu.be/5qGjczWTrDQ "ML for begyndere - Hvordan man analyserer og rengør et datasæt")
> 🎥 Klik på billedet ovenfor for en kort video, der gennemgår forberedelsen af dataene til denne lektion.
-Det er faktisk ikke særlig almindeligt at få et datasæt, der er helt klar til brug til at skabe en ML-model direkte. I denne lektion vil du lære, hvordan du forbereder et råt datasæt ved hjælp af standard Python-biblioteker. Du vil også lære forskellige teknikker til at visualisere dataene.
+Det er faktisk ikke særlig almindeligt at få et datasæt, der er helt klar til brug direkte til at oprette en ML-model. I denne lektion vil du lære at forberede et råt datasæt ved hjælp af standard Python-biblioteker. Du vil også lære forskellige teknikker til at visualisere dataene.
## Case study: 'græskarmarkedet'
-I denne mappe finder du en .csv-fil i roden af `data`-mappen kaldet [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv), som indeholder 1757 linjer med data om markedet for græskar, sorteret i grupperinger efter by. Dette er rå data, der er hentet fra [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice), distribueret af United States Department of Agriculture.
+I denne mappe finder du en .csv-fil i rodmappen `data` kaldet [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv), som indeholder 1757 linjer data om markedet for græskar, sorteret i grupper efter by. Dette er rådata udtrukket fra [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) distribueret af United States Department of Agriculture.
### Forberedelse af data
-Disse data er offentligt tilgængelige. De kan downloades i mange separate filer, per by, fra USDA's hjemmeside. For at undgå for mange separate filer har vi sammenføjet alle bydataene til ét regneark, så vi har allerede _forberedt_ dataene en smule. Lad os nu tage et nærmere kig på dataene.
+Disse data er offentligt tilgængelige. De kan downloades i mange separate filer, pr. by, fra USDA’s websted. For at undgå for mange separate filer har vi samlet alle bydata i et regneark, så vi har allerede _forberedt_ dataene lidt. Lad os nu tage et nærmere kig på dataene.
-### Græskardata - tidlige konklusioner
+### Græskardataene - tidlige konklusioner
-Hvad bemærker du ved disse data? Du har allerede set, at der er en blanding af tekst, tal, tomme felter og mærkelige værdier, som du skal finde mening i.
+Hvad bemærker du om disse data? Du så allerede, at der er en blanding af tekst, tal, tomme felter og mærkelige værdier, som du skal forstå.
-Hvilket spørgsmål kan du stille til disse data ved hjælp af en regressionsmetode? Hvad med "Forudsig prisen på et græskar til salg i en given måned". Når du ser på dataene igen, er der nogle ændringer, du skal foretage for at skabe den datastruktur, der er nødvendig for opgaven.
+Hvilket spørgsmål kan du stille til disse data ved brug af en regressionsmetode? Hvad med "Forudsig prisen på et græskar til salg i en given måned"? Ser man igen på dataene, er der nogle ændringer, du skal foretage for at skabe den datastruktur, der er nødvendig for opgaven.
+## Øvelse - analyser græskardata
-## Øvelse - analyser græskardataene
-
-Lad os bruge [Pandas](https://pandas.pydata.org/) (navnet står for `Python Data Analysis`), et værktøj, der er meget nyttigt til at forme data, til at analysere og forberede disse græskardata.
+Lad os bruge [Pandas](https://pandas.pydata.org/) (navnet står for `Python Data Analysis`) – et værktøj meget nyttigt til at forme data – til at analysere og forberede disse græskardata.
### Først, tjek for manglende datoer
Du skal først tage skridt til at tjekke for manglende datoer:
-1. Konverter datoerne til et månedsformat (disse er amerikanske datoer, så formatet er `MM/DD/YYYY`).
-2. Uddrag måneden til en ny kolonne.
+1. Konverter datoerne til månedsformat (det er amerikanske datoer, så formatet er `MM/DD/YYYY`).
+2. Ekstraher måneden til en ny kolonne.
-Åbn _notebook.ipynb_-filen i Visual Studio Code og importer regnearket til en ny Pandas dataframe.
+Åbn filen _notebook.ipynb_ i Visual Studio Code, og importer regnearket til en ny Pandas dataframe.
-1. Brug funktionen `head()` til at se de første fem rækker.
+1. Brug `head()`-funktionen til at se de første fem rækker.
```python
import pandas as pd
@@ -66,15 +66,15 @@ Du skal først tage skridt til at tjekke for manglende datoer:
✅ Hvilken funktion ville du bruge til at se de sidste fem rækker?
-1. Tjek om der er manglende data i den aktuelle dataframe:
+1. Tjek om der mangler data i den nuværende dataframe:
```python
pumpkins.isnull().sum()
```
- Der er manglende data, men måske betyder det ikke noget for den aktuelle opgave.
+ Der mangler data, men måske gør det ikke noget for den aktuelle opgave.
-1. For at gøre din dataframe lettere at arbejde med, vælg kun de kolonner, du har brug for, ved hjælp af funktionen `loc`, som udtrækker en gruppe af rækker (angivet som første parameter) og kolonner (angivet som anden parameter) fra den originale dataframe. Udtrykket `:` i nedenstående tilfælde betyder "alle rækker".
+1. For at gøre din dataframe nemmere at arbejde med, vælg kun de kolonner, du har brug for, ved hjælp af `loc`-funktionen, som udtrækker fra den oprindelige dataframe en gruppe af rækker (angivet som første parameter) og kolonner (angivet som anden parameter). Udtrykket `:` i eksemplet nedenfor betyder "alle rækker".
```python
columns_to_select = ['Package', 'Low Price', 'High Price', 'Date']
@@ -83,11 +83,11 @@ Du skal først tage skridt til at tjekke for manglende datoer:
### For det andet, bestem gennemsnitsprisen på græskar
-Tænk over, hvordan du kan bestemme gennemsnitsprisen på et græskar i en given måned. Hvilke kolonner ville du vælge til denne opgave? Hint: du skal bruge 3 kolonner.
+Tænk over, hvordan du bestemmer gennemsnitsprisen på et græskar i en given måned. Hvilke kolonner ville du vælge til denne opgave? Tip: du får brug for 3 kolonner.
-Løsning: Tag gennemsnittet af kolonnerne `Low Price` og `High Price` for at udfylde den nye Price-kolonne, og konverter Date-kolonnen til kun at vise måneden. Heldigvis, ifølge ovenstående tjek, er der ingen manglende data for datoer eller priser.
+Løsning: tag gennemsnittet af kolonnerne `Low Price` og `High Price` for at udfylde den nye kolonne Pris, og konverter kolonnen Dato til kun at vise måneden. Heldigvis ifølge kontrollen ovenfor, mangler der ikke data for datoer eller priser.
-1. For at beregne gennemsnittet, tilføj følgende kode:
+1. For at beregne gennemsnittet skal du tilføje følgende kode:
```python
price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2
@@ -96,35 +96,35 @@ Løsning: Tag gennemsnittet af kolonnerne `Low Price` og `High Price` for at udf
```
- ✅ Du er velkommen til at udskrive data, du gerne vil tjekke, ved hjælp af `print(month)`.
+ ✅ Føl dig fri til at printe hvilke data du vil tjekke ved at bruge `print(month)`.
-2. Kopier nu dine konverterede data til en ny Pandas dataframe:
+2. Kopier derefter dine konverterede data ind i en frisk Pandas dataframe:
```python
new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price})
```
- Hvis du udskriver din dataframe, vil du se et rent, ryddeligt datasæt, som du kan bygge din nye regressionsmodel på.
+ Udskriver du din dataframe, vil du se et rent, ordentligt datasæt, som du kan bygge din nye regressionsmodel på.
### Men vent! Der er noget mærkeligt her
-Hvis du ser på kolonnen `Package`, bliver græskar solgt i mange forskellige konfigurationer. Nogle bliver solgt i '1 1/9 bushel'-mål, og nogle i '1/2 bushel'-mål, nogle per græskar, nogle per pund, og nogle i store kasser med varierende bredder.
+Hvis du ser på kolonnen `Package`, sælges græskar i mange forskellige konfigurationer. Nogle sælges i mål som '1 1/9 bushel', og nogle i '1/2 bushel', nogle pr. græskar, nogle pr. pund, og nogle i store kasser med varierende bredder.
-> Græskar synes at være meget svære at veje konsekvent
+> Græskar er tilsyneladende meget svære at veje konsekvent
-Når man dykker ned i de originale data, er det interessant, at alt med `Unit of Sale` lig med 'EACH' eller 'PER BIN' også har `Package`-typen per tomme, per bin eller 'each'. Græskar synes at være meget svære at veje konsekvent, så lad os filtrere dem ved kun at vælge græskar med strengen 'bushel' i deres `Package`-kolonne.
+Når man dykker ned i de oprindelige data, er det interessant, at alt med `Unit of Sale` lig med 'EACH' eller 'PER BIN' også har `Package`-typen per tomme, per beholder eller 'each'. Græskar synes at være vanskelige at veje konsekvent, så lad os filtrere dem ved kun at vælge græskar med strengen 'bushel' i deres `Package`-kolonne.
-1. Tilføj et filter øverst i filen, under den oprindelige .csv-import:
+1. Tilføj et filter øverst i filen, under den indledende .csv-import:
```python
pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]
```
- Hvis du udskriver dataene nu, kan du se, at du kun får de cirka 415 rækker med data, der indeholder græskar per bushel.
+ Hvis du printer dataene nu, kan du se, at du kun får de ca. 415 rækker, der indeholder græskar betalt per bushel.
-### Men vent! Der er én ting mere at gøre
+### Men vent! Der er en sidste ting at gøre
-Bemærkede du, at bushel-mængden varierer per række? Du skal normalisere prissætningen, så du viser prisen per bushel, så lav nogle beregninger for at standardisere det.
+Lagde du mærke til, at bushel-mængden varierer pr. række? Du skal normalisere priserne, så du viser prisen per bushel, så lav noget matematik for at standardisere det.
1. Tilføj disse linjer efter blokken, der opretter new_pumpkins-dataframen:
@@ -134,38 +134,38 @@ Bemærkede du, at bushel-mængden varierer per række? Du skal normalisere priss
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2)
```
-✅ Ifølge [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) afhænger en bushels vægt af typen af produkt, da det er en volumenmåling. "En bushel tomater, for eksempel, skal veje 56 pund... Blade og grøntsager fylder mere med mindre vægt, så en bushel spinat er kun 20 pund." Det er alt sammen ret kompliceret! Lad os ikke bekymre os om at lave en bushel-til-pund-konvertering, og i stedet prissætte per bushel. Al denne undersøgelse af bushels af græskar viser dog, hvor vigtigt det er at forstå naturen af dine data!
+✅ Ifølge [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) afhænger vægten af en bushel af typen af afgrøder, da det er et mål for rumfang. "En bushel tomater f.eks. vejer omkring 56 pund... Blade og grønne planter fylder mere plads med mindre vægt, så en bushel spinat vejer kun 20 pund." Det hele er meget kompliceret! Lad os ikke bøvle med at omregne bushel til pund, men prissæt i stedet efter bushel. Alt dette studie af bushels græskar viser dog, hvor vigtigt det er at forstå karakteren af dine data!
-Nu kan du analysere prissætningen per enhed baseret på deres bushel-måling. Hvis du udskriver dataene en gang til, kan du se, hvordan det er standardiseret.
+Nu kan du analysere prisen pr. enhed baseret på deres bushel-mål. Hvis du printer dataene en gang mere, kan du se, hvordan det er standardiseret.
-✅ Bemærkede du, at græskar solgt per halv bushel er meget dyre? Kan du finde ud af hvorfor? Hint: små græskar er meget dyrere end store, sandsynligvis fordi der er så mange flere af dem per bushel, givet den ubrugte plads, som et stort hul græskar til tærte optager.
+✅ Lagde du mærke til, at græskar solgt pr. halv bushel er meget dyre? Kan du regne ud hvorfor? Tip: små græskar er meget dyrere end store, sandsynligvis fordi der er så mange flere af dem pr. bushel, givet den ubrugte plads optaget af et stort hulgræskar til tærter.
## Visualiseringsstrategier
-En del af dataforskerens rolle er at demonstrere kvaliteten og naturen af de data, de arbejder med. For at gøre dette skaber de ofte interessante visualiseringer, såsom grafer, diagrammer og plots, der viser forskellige aspekter af dataene. På denne måde kan de visuelt vise relationer og mangler, der ellers er svære at opdage.
+En del af dataforskerens rolle er at demonstrere kvaliteten og karakteren af de data, de arbejder med. For at gøre dette skaber de ofte interessante visualiseringer, eller plots, grafer og diagrammer, der viser forskellige aspekter af dataene. På denne måde kan de visuelt vise sammenhænge og huller, som ellers er svære at opdage.
-[](https://youtu.be/SbUkxH6IJo0 "ML for begyndere - Hvordan visualiserer man data med Matplotlib")
+[](https://youtu.be/SbUkxH6IJo0 "ML for begyndere - Hvordan man visualiserer data med Matplotlib")
> 🎥 Klik på billedet ovenfor for en kort video, der gennemgår visualisering af dataene til denne lektion.
-Visualiseringer kan også hjælpe med at bestemme den maskinlæringsteknik, der er mest passende for dataene. Et scatterplot, der ser ud til at følge en linje, indikerer for eksempel, at dataene er en god kandidat til en lineær regressionsøvelse.
+Visualiseringer kan også hjælpe med at afgøre, hvilken maskinlæringsteknik der er mest egnet til dataene. En scatterplot, der ser ud til at følge en linje, indikerer f.eks., at dataene er en god kandidat til en lineær regressionsøvelse.
-Et datavisualiseringsbibliotek, der fungerer godt i Jupyter notebooks, er [Matplotlib](https://matplotlib.org/) (som du også så i den forrige lektion).
+Et datavisualiseringsbibliotek, der fungerer godt i Jupyter-notebooks, er [Matplotlib](https://matplotlib.org/) (som du også så i den tidligere lektion).
-> Få mere erfaring med datavisualisering i [disse tutorials](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott).
+> Få mere erfaring med datavisualisering i [disse vejledninger](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott).
-## Øvelse - eksperimentér med Matplotlib
+## Øvelse - eksperimenter med Matplotlib
-Prøv at skabe nogle grundlæggende plots for at vise den nye dataframe, du lige har oprettet. Hvad ville et grundlæggende linjeplot vise?
+Prøv at lave nogle grundlæggende plots for at vise den nye dataframe, du netop har oprettet. Hvad ville en grundlæggende linjeplot vise?
-1. Importér Matplotlib øverst i filen, under Pandas-importen:
+1. Importer Matplotlib øverst i filen, under Pandas-importen:
```python
import matplotlib.pyplot as plt
```
-1. Kør hele notebooken igen for at opdatere.
-1. Nederst i notebooken, tilføj en celle for at plotte dataene som en boks:
+1. Kør hele notebook'en igen for at opdatere.
+1. Nederst i notebook'en, tilføj en celle til at plotte data som en kasse:
```python
price = new_pumpkins.Price
@@ -174,44 +174,121 @@ Prøv at skabe nogle grundlæggende plots for at vise den nye dataframe, du lige
plt.show()
```
- 
+ 
Er dette et nyttigt plot? Overrasker noget ved det dig?
- Det er ikke særlig nyttigt, da det blot viser dine data som en spredning af punkter i en given måned.
+ Det er ikke særligt nyttigt, da det blot viser dine data som en spredning af punkter i en given måned.
### Gør det nyttigt
-For at få diagrammer til at vise nyttige data, skal du normalt gruppere dataene på en eller anden måde. Lad os prøve at skabe et plot, hvor y-aksen viser månederne, og dataene demonstrerer fordelingen af data.
+For at få diagrammer til at vise nyttige data, skal man normalt gruppere dataene på en eller anden måde. Lad os prøve at oprette et plot, hvor y-aksen viser månederne, og dataene demonstrerer fordelingen af data.
-1. Tilføj en celle for at skabe et grupperet søjlediagram:
+1. Tilføj en celle til at oprette et grupperet søjlediagram:
```python
new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar')
plt.ylabel("Pumpkin Price")
```
- 
+ 
+
+ Dette er en mere nyttig datavisualisering! Det ser ud til at indikere, at den højeste pris for græskar forekommer i september og oktober. Opfylder det dine forventninger? Hvorfor eller hvorfor ikke?
+
+## Øvelse - eksperimenter med Seaborn
+
+Matplotlib er kraftfuldt, men det kan tage meget kode at producere et poleret diagram. [Seaborn](https://seaborn.pydata.org/) er et bibliotek bygget _oven på_ Matplotlib, der er designet til statistisk datavisualisering. Det arbejder direkte med Pandas dataframes, anvender attraktive standardstile og lader dig skabe informative plots med langt mindre kode. Fordi Seaborn returnerer Matplotlib-objekter, kan du stadig bruge alt, hvad du allerede ved om Matplotlib til at finjustere resultatet.
+
+> Hvis du ikke allerede har Seaborn installeret, så installer det med `pip install seaborn`.
+
+1. Importer Seaborn øverst i notebook'en, under de andre imports. Det importeres sædvanligvis som `sns`:
+
+ ```python
+ import seaborn as sns
+ ```
+
+### Scatterplots til at vise relationer
+
+En stor del af at udforske data før opbygning af en model er at lede efter _relationer_ mellem variabler. Et [scatter plot](https://en.wikipedia.org/wiki/Scatter_plot) er et af de bedste værktøjer til dette: hvis punkterne ser ud til at følge en linje, kan de to variabler være korrelerede, hvilket er et godt tegn på, at en lineær regressionsmodel kan fungere.
+
+1. Genskab scatterplottet fra før med pris til måned, denne gang ved brug af Seaborns [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) (relations-plot), som arbejder direkte med dine dataframe-kolonner:
+
+ ```python
+ sns.relplot(x="Price", y="Month", data=new_pumpkins)
+ ```
+
+ 
+
+ Læg mærke til, hvordan du angiver _kolonnenavne_ og dataframe, og Seaborn tager sig af akseetiketterne for dig.
+
+2. Du kan skifte til et linjediagram ved at sende `kind="line"`. Seaborn tegner endda et skyggebånd, som viser konfidensintervallet omkring linjen:
+
+ ```python
+ sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins)
+ ```
+
+ 
+
+ Disse data er ret støjende, så et linjediagram er ikke det klareste valg her – men det viser, hvor let du kan ændre diagramtype i Seaborn.
+
+### Søjlediagrammer til at vise fordelinger
+
+
+Tidligere grupperede du dataene manuelt for at skabe et søjlediagram med Matplotlib. Seaborns [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) (kategoriplot) kan lave gruppering og aggregering for dig. Som standard viser `kind="bar"` gennemsnittet for hver kategori sammen med en sort linje, der angiver konfidensintervallet.
+
+1. Opret et søjlediagram over gennemsnitsprisen pr. måned:
+
+ ```python
+ sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar")
+ ```
+
+ 
+
+ Dette bekræfter det, du så med Matplotlib — priserne topper omkring september og oktober — men Seaborn visualiserer også, hvor meget prisen _varierer_ inden for hver måned.
+
+### Heatmaps for at vise korrelationer
+
+Scatterplots sammenligner to variable ad gangen. Når du har flere numeriske kolonner, lader et [heatmap](https://en.wikipedia.org/wiki/Heat_map) dig se styrken af forholdet mellem _alle_ par af kolonner på én gang. Dette er en almindelig måde at spotte, hvilke egenskaber der er mest korrelerede, før man vælger, hvad der skal fodres ind i en model (og samme slags diagram bruges senere til at vise forvirringsmatricer i klassifikation).
+
+1. Byg en korrelationsmatrix med Pandas, og tegn den derefter med Seaborns [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html). Muligheden `annot=True` skriver korrelationsværdierne på hver celle:
+
+ ```python
+ correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()
+ sns.heatmap(correlations, annot=True, cmap="coolwarm")
+ ```
+
+ 
+
+ Værdier tæt på `1` (eller `-1`) betyder, at kolonnerne er stærkt _lineært_ korrelerede. Bemærk, hvordan `Low Price` og `High Price` næsten er perfekt korrelerede. `Month` viser derimod kun en svag lineær korrelation med prisen — selvom søjlediagrammet ovenfor afslørede en tydelig sæsonbestemt top i september og oktober. Det er en vigtig lektion: korrelationskoefficienten måler kun _lige linje_-sammenhænge, så den kan overse sæsonbestemte eller på anden måde ikke-lineære mønstre. ✅ Hvorfor er det nyttigt at se både et heatmap *og* diagrammer som søjlediagrammet, før du beslutter, hvilke kolonner du skal bruge?
+
+### Matplotlib eller Seaborn?
+
+Begge biblioteker er værd at kende:
+
+- **Matplotlib** giver dig detaljeret kontrol over hvert element i et diagram og er fundamentet, som næsten alle andre Python-plotbiblioteker bygger på.
+- **Seaborn** giver høj-niveau funktioner og attraktive standardindstillinger for statistiske diagrammer, arbejder direkte med dataframes og er ofte hurtigere til eksplorativ dataanalyse.
- Dette er en mere nyttig datavisualisering! Det ser ud til at indikere, at den højeste pris for græskar forekommer i september og oktober. Stemmer det overens med dine forventninger? Hvorfor eller hvorfor ikke?
+En almindelig arbejdsgang er at bruge Seaborn til hurtigt at udforske dine data og derefter gå ned til Matplotlib, når du vil tilpasse detaljerne.
---
## 🚀Udfordring
-Udforsk de forskellige typer visualiseringer, som Matplotlib tilbyder. Hvilke typer er mest passende for regressionsproblemer?
+Udforsk de forskellige typer visualisering, som Matplotlib og Seaborn tilbyder. Hvilke typer er mest egnede til regressionsproblemer?
-## [Quiz efter lektionen](https://ff-quizzes.netlify.app/en/ml/)
+## [Quiz efter forelæsning](https://ff-quizzes.netlify.app/en/ml/)
-## Gennemgang & Selvstudie
+## Gennemgang & Selvlæring
-Tag et kig på de mange måder at visualisere data på. Lav en liste over de forskellige biblioteker, der er tilgængelige, og notér hvilke der er bedst til bestemte typer opgaver, for eksempel 2D-visualiseringer vs. 3D-visualiseringer. Hvad opdager du?
+Se på de mange måder at visualisere data på. Lav en liste over de forskellige biblioteker, der findes, og noter, hvilke der er bedst til givne typer opgaver, for eksempel 2D-visualiseringer vs. 3D-visualiseringer. Hvad opdager du?
## Opgave
-[Udforsk visualisering](assignment.md)
+[Udforskning af visualisering](assignment.md)
---
-**Ansvarsfraskrivelse**:
-Dette dokument er blevet oversat ved hjælp af AI-oversættelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selvom vi bestræber os på nøjagtighed, skal du være opmærksom på, at automatiserede oversættelser kan indeholde fejl eller unøjagtigheder. Det originale dokument på dets oprindelige sprog bør betragtes som den autoritative kilde. For kritisk information anbefales professionel menneskelig oversættelse. Vi påtager os ikke ansvar for eventuelle misforståelser eller fejltolkninger, der opstår som følge af brugen af denne oversættelse.
\ No newline at end of file
+
+**Ansvarsfraskrivelse**:
+Dette dokument er blevet oversat ved hjælp af AI-oversættelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selvom vi bestræber os på nøjagtighed, skal du være opmærksom på, at automatiserede oversættelser kan indeholde fejl eller unøjagtigheder. Det originale dokument på dets oprindelige sprog bør betragtes som den autoritative kilde. For kritisk information anbefales professionel menneskelig oversættelse. Vi påtager os intet ansvar for misforståelser eller fejltolkninger, der opstår som følge af brugen af denne oversættelse.
+
\ No newline at end of file
diff --git a/translations/da/2-Regression/2-Data/solution/notebook.ipynb b/translations/da/2-Regression/2-Data/solution/notebook.ipynb
index 07a7dcd6a..20dc23a0f 100644
--- a/translations/da/2-Regression/2-Data/solution/notebook.ipynb
+++ b/translations/da/2-Regression/2-Data/solution/notebook.ipynb
@@ -3,7 +3,9 @@
{
"cell_type": "markdown",
"metadata": {},
- "source": []
+ "source": [
+ "## Lineær regression for græskar - Lektion 2\n"
+ ]
},
{
"cell_type": "code",
@@ -220,6 +222,7 @@
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
"pumpkins = pd.read_csv('../../data/US-pumpkins.csv')\n",
"\n",
"pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]\n",
@@ -383,18 +386,78 @@
"plt.ylabel(\"Pumpkin Price\")"
]
},
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Visualisering med Seaborn\n",
+ "\n",
+ "[Seaborn](https://seaborn.pydata.org/) er bygget oven på Matplotlib og arbejder direkte med dataframes, hvilket gør det hurtigt at lave attraktive statistiske plots med meget lidt kode.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Spredningsdiagrammer til at vise sammenhænge\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", kind=\"line\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Søjlediagrammer til at vise fordelinger\n"
+ ]
+ },
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
- "source": []
+ "source": [
+ "sns.catplot(x=\"Month\", y=\"Price\", data=new_pumpkins, kind=\"bar\")"
+ ]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "\n---\n\n**Ansvarsfraskrivelse**: \nDette dokument er blevet oversat ved hjælp af AI-oversættelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selvom vi bestræber os på nøjagtighed, skal du være opmærksom på, at automatiserede oversættelser kan indeholde fejl eller unøjagtigheder. Det originale dokument på dets oprindelige sprog bør betragtes som den autoritative kilde. For kritisk information anbefales professionel menneskelig oversættelse. Vi påtager os intet ansvar for misforståelser eller fejltolkninger, der måtte opstå som følge af brugen af denne oversættelse.\n"
+ "### Varmekort til at vise korrelationer\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()\n",
+ "sns.heatmap(correlations, annot=True, cmap=\"coolwarm\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "---\n\n\n**Ansvarsfraskrivelse**:\nDette dokument er blevet oversat ved hjælp af AI-oversættelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selvom vi bestræber os på nøjagtighed, skal du være opmærksom på, at automatiserede oversættelser kan indeholde fejl eller unøjagtigheder. Det originale dokument på dets oprindelige sprog bør betragtes som den autoritative kilde. For kritisk information anbefales professionel menneskelig oversættelse. Vi påtager os intet ansvar for misforståelser eller fejltolkninger, der opstår som følge af brugen af denne oversættelse.\n\n"
]
}
],
@@ -424,13 +487,7 @@
"hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d"
}
},
- "orig_nbformat": 2,
- "coopTranslator": {
- "original_hash": "95726f0b8283628d5356a4f8eb8b4b76",
- "translation_date": "2025-09-04T07:11:21+00:00",
- "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
- "language_code": "da"
- }
+ "orig_nbformat": 2
},
"nbformat": 4,
"nbformat_minor": 2
diff --git a/translations/da/8-Reinforcement/1-QLearning/README.md b/translations/da/8-Reinforcement/1-QLearning/README.md
index 7d627851d..98ea1a982 100644
--- a/translations/da/8-Reinforcement/1-QLearning/README.md
+++ b/translations/da/8-Reinforcement/1-QLearning/README.md
@@ -1,47 +1,47 @@
-# Introduktion til Forstærkningslæring og Q-Learning
+# Introduktion til Forstærkningslæring og Q-Læring
-
+
> Sketchnote af [Tomomi Imura](https://www.twitter.com/girlie_mac)
-Forstærkningslæring involverer tre vigtige begreber: agenten, nogle tilstande og et sæt handlinger pr. tilstand. Ved at udføre en handling i en specifik tilstand får agenten en belønning. Forestil dig igen computerspillet Super Mario. Du er Mario, du befinder dig i et spilniveau, stående ved kanten af en klippe. Over dig er der en mønt. Du som Mario, i et spilniveau, på en specifik position ... det er din tilstand. Hvis du tager et skridt til højre (en handling), falder du ud over kanten, hvilket giver dig en lav numerisk score. Men hvis du trykker på hop-knappen, scorer du et point og forbliver i live. Det er et positivt resultat, og det bør give dig en positiv numerisk score.
+Forstærkningslæring involverer tre vigtige begreber: agenten, nogle tilstande og et sæt handlinger pr. tilstand. Ved at udføre en handling i en bestemt tilstand får agenten en belønning. Forestil dig igen computerspillet Super Mario. Du er Mario, du er i et spelniveau og står ved siden af en klippekant. Over dig er der en mønt. Du som Mario, i et spelniveau, på en bestemt position ... det er din tilstand. At tage et skridt til højre (en handling) vil få dig til at falde ud over kanten, hvilket giver dig en lav numerisk score. Men hvis du trykker på springknappen, vil du score et point og forblive i live. Det er et positivt resultat, og det burde belønnes med en positiv numerisk score.
-Ved at bruge forstærkningslæring og en simulator (spillet) kan du lære at spille spillet for at maksimere belønningen, som er at forblive i live og score så mange point som muligt.
+Ved at anvende forstærkningslæring og en simulator (spillet) kan du lære at spille spillet for at maksimere belønningen, som er at forblive i live og score så mange point som muligt.
-[](https://www.youtube.com/watch?v=lDq_en8RNOo)
+[](https://www.youtube.com/watch?v=lDq_en8RNOo)
> 🎥 Klik på billedet ovenfor for at høre Dmitry diskutere Forstærkningslæring
-## [Quiz før lektionen](https://ff-quizzes.netlify.app/en/ml/)
+## [Pre-lecture quiz](https://ff-quizzes.netlify.app/en/ml/)
-## Forudsætninger og Opsætning
+## Forudsætninger og opsætning
-I denne lektion vil vi eksperimentere med noget kode i Python. Du skal kunne køre Jupyter Notebook-koden fra denne lektion, enten på din computer eller i skyen.
+I denne lektion vil vi eksperimentere med noget kode i Python. Du bør kunne køre Jupyter Notebook-koden fra denne lektion, enten på din computer eller et sted i skyen.
-Du kan åbne [lektionens notebook](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) og gennemgå denne lektion for at bygge.
+Du kan åbne [lektionsnotebook'en](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) og følge med i denne lektion for at bygge.
-> **Bemærk:** Hvis du åbner denne kode fra skyen, skal du også hente filen [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), som bruges i notebook-koden. Tilføj den til samme mappe som notebooken.
+> **Bemærk:** Hvis du åbner denne kode fra skyen, skal du også hente filen [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), som bruges i notebook-koden. Placer den i samme mappe som notebooken.
## Introduktion
-I denne lektion vil vi udforske verdenen af **[Peter og Ulven](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)**, inspireret af et musikalsk eventyr af den russiske komponist [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev). Vi vil bruge **Forstærkningslæring** til at lade Peter udforske sit miljø, samle lækre æbler og undgå at møde ulven.
+I denne lektion vil vi udforske verdenen af **[Peter og Ulven](https://da.wikipedia.org/wiki/Peter_og_Ulven)**, inspireret af et musisk eventyr af en russisk komponist, [Sergej Prokofjev](https://da.wikipedia.org/wiki/Sergej_Prokofjev). Vi vil bruge **Forstærkningslæring** til at lade Peter udforske sit miljø, samle lækre æbler og undgå at møde ulven.
-**Forstærkningslæring** (RL) er en læringsteknik, der giver os mulighed for at lære en optimal adfærd for en **agent** i et **miljø** ved at udføre mange eksperimenter. En agent i dette miljø skal have et **mål**, defineret af en **belønningsfunktion**.
+**Forstærkningslæring** (RL) er en læringsteknik, der gør det muligt for os at lære en optimal adfærd for en **agent** i et givent **miljø** ved at gennemføre mange eksperimenter. En agent i dette miljø skal have et **mål** defineret af en **belønningsfunktion**.
## Miljøet
-For enkelhedens skyld lad os antage, at Peters verden er en kvadratisk spilleplade med størrelsen `bredde` x `højde`, som denne:
+For enkelhedens skyld, lad os betragte Peters verden som et kvadratisk bræt af størrelse `width` x `height`, sådan her:
-
+
-Hver celle på denne spilleplade kan enten være:
+Hver celle på dette bræt kan enten være:
* **jord**, som Peter og andre væsener kan gå på.
-* **vand**, som man selvfølgelig ikke kan gå på.
-* et **træ** eller **græs**, et sted hvor man kan hvile sig.
-* et **æble**, som repræsenterer noget, Peter ville være glad for at finde for at spise.
+* **vand**, som du åbenlyst ikke kan gå på.
+* et **træ** eller **græs**, et sted hvor du kan hvile.
+* et **æble**, som repræsenterer noget Peter vil være glad for at finde for at fodre sig selv.
* en **ulv**, som er farlig og bør undgås.
-Der er et separat Python-modul, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), som indeholder koden til at arbejde med dette miljø. Fordi denne kode ikke er vigtig for at forstå vores begreber, vil vi importere modulet og bruge det til at oprette spillepladen (kodeblok 1):
+Der findes et separat Python-modul, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), som indeholder koden til at arbejde med dette miljø. Da denne kode ikke er vigtig for forståelsen af vores koncepter, importer vi modulet og bruger det til at skabe prøvebrættet (kodeblok 1):
```python
from rlboard import *
@@ -52,30 +52,30 @@ m.randomize(seed=13)
m.plot()
```
-Denne kode bør udskrive et billede af miljøet, der ligner det ovenfor.
+Denne kode skulle udskrive et billede af miljøet lignende det ovenfor.
-## Handlinger og strategi
+## Handlinger og politik
-I vores eksempel vil Peters mål være at finde et æble, mens han undgår ulven og andre forhindringer. For at gøre dette kan han i princippet gå rundt, indtil han finder et æble.
+I vores eksempel ville Peters mål være at finde et æble, mens han undgår ulven og andre forhindringer. For at gøre dette kan han grundlæggende bevæge sig rundt, indtil han finder et æble.
-Derfor kan han på enhver position vælge mellem følgende handlinger: op, ned, venstre og højre.
+Derfor kan han i enhver position vælge mellem følgende handlinger: op, ned, venstre og højre.
-Vi vil definere disse handlinger som en ordbog og kortlægge dem til par af tilsvarende koordinatændringer. For eksempel vil bevægelse til højre (`R`) svare til et par `(1,0)`. (kodeblok 2):
+Vi vil definere disse handlinger som en ordbog, og kortlægge dem til par af tilsvarende koordinerede ændringer. For eksempel vil bevægelse til højre (`R`) svare til et par `(1,0)`. (kodeblok 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()) }
```
-For at opsummere er strategien og målet for dette scenarie som følger:
+For at opsummere er strategi og mål for dette scenarie som følger:
-- **Strategien**, for vores agent (Peter) er defineret af en såkaldt **politik**. En politik er en funktion, der returnerer handlingen i en given tilstand. I vores tilfælde er problemet repræsenteret af spillepladen, inklusive spillerens aktuelle position.
+- **Strategien**, for vores agent (Peter) defineres af en såkaldt **politik**. En politik er en funktion, der returnerer handlingen i enhver given tilstand. I vores tilfælde repræsenteres problemets tilstand af brættet, inklusive spillerens aktuelle position.
-- **Målet**, med forstærkningslæring er at lære en god politik, der gør det muligt for os at løse problemet effektivt. Som en baseline lad os overveje den enkleste politik kaldet **tilfældig gang**.
+- **Målet** for forstærkningslæring er til sidst at lære en god politik, som vil tillade os at løse problemet effektivt. Men som en basislinje, lad os betragte den simpleste politik kaldet **tilfældig gang**.
## Tilfældig gang
-Lad os først løse vores problem ved at implementere en strategi med tilfældig gang. Med tilfældig gang vil vi tilfældigt vælge den næste handling fra de tilladte handlinger, indtil vi når æblet (kodeblok 3).
+Lad os først løse vores problem ved at implementere en tilfældig gang-strategi. Med tilfældig gang vælger vi tilfældigt den næste handling fra de tilladte handlinger, indtil vi når æblet (kodeblok 3).
1. Implementer den tilfældige gang med nedenstående kode:
@@ -84,31 +84,31 @@ Lad os først løse vores problem ved at implementere en strategi med tilfældig
return random.choice(list(actions))
def walk(m,policy,start_position=None):
- n = 0 # number of steps
- # set initial position
+ n = 0 # antal skridt
+ # indstil startposition
if start_position:
m.human = start_position
else:
m.random_start()
while True:
if m.at() == Board.Cell.apple:
- return n # success!
+ return n # succes!
if m.at() in [Board.Cell.wolf, Board.Cell.water]:
- return -1 # eaten by wolf or drowned
+ return -1 # spist af ulv eller druknet
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
+ m.move(a) # udfør selve flytningen
break
n+=1
walk(m,random_policy)
```
- Kaldet til `walk` bør returnere længden af den tilsvarende sti, som kan variere fra den ene kørsel til den anden.
+ Kaldet til `walk` burde returnere længden af den tilsvarende sti, som kan variere fra kørsel til kørsel.
-1. Kør gangeksperimentet et antal gange (f.eks. 100), og udskriv de resulterende statistikker (kodeblok 4):
+1. Kør gang-eksperimentet et antal gange (sig 100), og udskriv de resulterende statistikker (kodeblok 4):
```python
def print_statistics(policy):
@@ -125,17 +125,17 @@ Lad os først løse vores problem ved at implementere en strategi med tilfældig
print_statistics(random_policy)
```
- Bemærk, at den gennemsnitlige længde af en sti er omkring 30-40 trin, hvilket er ret meget, i betragtning af at den gennemsnitlige afstand til det nærmeste æble er omkring 5-6 trin.
+ Bemærk at den gennemsnitlige længde af en sti er omkring 30-40 skridt, hvilket er temmelig meget, når man tager i betragtning, at den gennemsnitlige afstand til nærmeste æble er omkring 5-6 skridt.
- Du kan også se, hvordan Peters bevægelse ser ud under den tilfældige gang:
+ Du kan også se hvordan Peters bevægelse ser ud under den tilfældige gang:

## Belønningsfunktion
-For at gøre vores politik mere intelligent skal vi forstå, hvilke bevægelser der er "bedre" end andre. For at gøre dette skal vi definere vores mål.
+For at gøre vores politik mere intelligent, skal vi forstå hvilke bevægelser der er "bedre" end andre. For at gøre dette skal vi definere vores mål.
-Målet kan defineres i form af en **belønningsfunktion**, som vil returnere en scoreværdi for hver tilstand. Jo højere tallet er, desto bedre er belønningsfunktionen. (kodeblok 5)
+Målet kan defineres i form af en **belønningsfunktion**, som vil returnere en scoreværdi for hver tilstand. Jo højere tal, desto bedre belønningsfunktion. (kodeblok 5)
```python
move_reward = -0.1
@@ -154,39 +154,115 @@ def reward(m,pos=None):
return move_reward
```
-En interessant ting ved belønningsfunktioner er, at i de fleste tilfælde *får vi kun en væsentlig belønning ved slutningen af spillet*. Det betyder, at vores algoritme på en eller anden måde skal huske "gode" trin, der fører til en positiv belønning til sidst, og øge deres betydning. Tilsvarende bør alle bevægelser, der fører til dårlige resultater, frarådes.
+En interessant ting ved belønningsfunktioner er, at i de fleste tilfælde får *vi kun en betydelig belønning til sidst i spillet*. Det betyder, at vores algoritme på en eller anden måde skal huske "gode" skridt, der fører til en positiv belønning til sidst, og øge deres betydning. Ligeledes bør alle bevægelser, der fører til dårlige resultater, frarådes.
-## Q-Learning
+## Q-Læring
-En algoritme, som vi vil diskutere her, kaldes **Q-Learning**. I denne algoritme defineres politikken af en funktion (eller en datastruktur) kaldet en **Q-Table**. Den registrerer "godheden" af hver af handlingerne i en given tilstand.
+En algoritme, som vi vil diskutere her, kaldes **Q-Læring**. I denne algoritme defineres politikken af en funktion (eller datastruktur) kaldet en **Q-Tabel**. Den registrerer "godheden" af hver af handlingerne i en given tilstand.
-Den kaldes en Q-Table, fordi det ofte er praktisk at repræsentere den som en tabel eller en multidimensionel array. Da vores spilleplade har dimensionerne `bredde` x `højde`, kan vi repræsentere Q-Table ved hjælp af en numpy-array med formen `bredde` x `højde` x `len(actions)`: (kodeblok 6)
+Den kaldes Q-Tabel, fordi det ofte er praktisk at repræsentere den som en tabel eller flerdimensionelt array. Da vores bræt har dimensionerne `width` x `height`, kan vi repræsentere Q-Tabellen med et numpy-array med formen `width` x `height` x `len(actions)`: (kodeblok 6)
```python
Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions)
```
-Bemærk, at vi initialiserer alle værdierne i Q-Table med en ens værdi, i vores tilfælde - 0.25. Dette svarer til politikken "tilfældig gang", fordi alle bevægelser i hver tilstand er lige gode. Vi kan sende Q-Table til `plot`-funktionen for at visualisere tabellen på spillepladen: `m.plot(Q)`.
+Bemærk at vi initialiserer alle værdier i Q-Tabellen med en ens værdi, i vores tilfælde 0,25. Dette svarer til "tilfældig gang"-politikken, fordi alle bevægelser i hver tilstand er lige gode. Vi kan give Q-Tabellen videre til funktionen `plot` for at visualisere tabellen på brættet: `m.plot(Q)`.
-
+
-I midten af hver celle er der en "pil", der angiver den foretrukne bevægelsesretning. Da alle retninger er ens, vises en prik.
+I midten af hver celle er der en "pil", der angiver den foretrukne bevægelsesretning. Da alle retninger er lige, vises et punkt.
-Nu skal vi køre simuleringen, udforske vores miljø og lære en bedre fordeling af Q-Table-værdier, som gør det muligt for os at finde vejen til æblet meget hurtigere.
+Nu skal vi køre simuleringen, udforske vores miljø og lære en bedre fordeling af Q-Tabelværdier, hvilket vil gøre os i stand til at finde vejen til æblet meget hurtigere.
-## Essensen af Q-Learning: Bellman-ligningen
+## Essensen af Q-Læring: Bellman-ligningen
-Når vi begynder at bevæge os, vil hver handling have en tilsvarende belønning, dvs. vi kan teoretisk vælge den næste handling baseret på den højeste umiddelbare belønning. Men i de fleste tilstande vil bevægelsen ikke opnå vores mål om at nå æblet, og vi kan derfor ikke straks beslutte, hvilken retning der er bedre.
+Når vi begynder at bevæge os, vil hver handling have en tilhørende belønning, dvs. vi kan teoretisk vælge næste handling baseret på højeste umiddelbare belønning. Men i de fleste tilstande vil bevægelsen ikke opnå vores mål om at nå æblet, og derfor kan vi ikke straks afgøre, hvilken retning der er bedre.
-> Husk, at det ikke er det umiddelbare resultat, der betyder noget, men snarere det endelige resultat, som vi vil opnå ved slutningen af simuleringen.
+> Husk, at det ikke er det umiddelbare resultat, der betyder noget, men snarere det endelige resultat, som vi opnår ved simuleringens slutning.
-For at tage højde for denne forsinkede belønning skal vi bruge principperne for **[dynamisk programmering](https://en.wikipedia.org/wiki/Dynamic_programming)**, som giver os mulighed for at tænke på vores problem rekursivt.
+For at tage højde for denne forsinkede belønning skal vi bruge principperne for **[dynamisk programmering](https://da.wikipedia.org/wiki/Dynamisk_programmering)**, som tillader os at tænke på vores problem rekursivt.
-Antag, at vi nu er i tilstanden *s*, og vi ønsker at bevæge os til den næste tilstand *s'*. Ved at gøre det vil vi modtage den umiddelbare belønning *r(s,a)*, defineret af belønningsfunktionen, plus en fremtidig belønning. Hvis vi antager, at vores Q-Table korrekt afspejler "attraktiviteten" af hver handling, vil vi i tilstanden *s'* vælge en handling *a*, der svarer til den maksimale værdi af *Q(s',a')*. Således vil den bedste mulige fremtidige belønning, vi kunne få i tilstanden *s*, være defineret som `max`
+Antag, at vi nu er i tilstanden *s*, og vi ønsker at bevæge os til næste tilstand *s'*. Ved at gøre dette vil vi modtage den umiddelbare belønning *r(s,a)*, defineret af belønningsfunktionen, plus en fremtidig belønning. Hvis vi antager, at vores Q-Tabel korrekt afspejler "tiltrækningskraften" af hver handling, vil vi i tilstand *s'* vælge en handling *a*, der svarer til maksimumværdien af *Q(s',a')*. Således defineres den bedste mulige fremtidige belønning, vi kunne opnå i tilstand *s*, som `max`a'*Q(s',a')* (maksimum udregnes her over alle mulige handlinger *a'* i tilstand *s'*).
+
+Dette giver **Bellman-formlen** til beregning af værdien af Q-Tabellen i tilstand *s* for handling *a*:
+
+
+
+Her er γ den såkaldte **diskonteringsfaktor**, som bestemmer, i hvilken grad du bør foretrække den nuværende belønning frem for den fremtidige belønning og omvendt.
+
+## Læringsalgoritme
+
+Givet ovenstående ligning kan vi nu skrive pseudokode for vores læringsalgoritme:
+
+* Initialiser Q-Tabel Q med ens værdier for alle tilstande og handlinger
+* Sæt læringsrate α ← 1
+* Gentag simulering mange gange
+ 1. Start ved en tilfældig position
+ 1. Gentag
+ 1. Vælg en handling *a* i tilstand *s*
+ 2. Udfør handling ved at bevæge til en ny tilstand *s'*
+ 3. Hvis vi støder på slut-tilstand eller samlet belønning er for lav - afslut simulering
+ 4. Beregn belønning *r* i den nye tilstand
+ 5. Opdater Q-funktionen ifølge Bellman-ligningen: *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ maxa'Q(s',a'))*
+ 6. *s* ← *s'*
+ 7. Opdater den samlede belønning og reducer α.
+
+## Udnytte vs. udforske
+
+I algoritmen ovenfor specificerede vi ikke præcist, hvordan vi bør vælge en handling på trin 2.1. Hvis vi vælger handlingen tilfældigt, vil vi tilfældigt **udforske** miljøet, og vi vil med stor sandsynlighed ofte dø og udforske områder, hvor vi normalt ikke ville gå. En alternativ tilgang ville være at **udnytte** de Q-Tabel-værdier, vi allerede kender, og dermed vælge den bedste handling (med højere Q-Tabel-værdi) i tilstand *s*. Dette vil dog forhindre os i at udforske andre tilstande, og det er sandsynligt, at vi ikke finder den optimale løsning.
+
+Derfor er den bedste tilgang at finde en balance mellem udforskning og udnyttelse. Dette kan gøres ved at vælge handlingen i tilstand *s* med sandsynligheder proportionalt med værdierne i Q-Tabellen. I begyndelsen, når Q-Tabel-værdierne er ens, svarer det til et tilfældigt valg, men efterhånden som vi lærer mere om vores miljø, vil vi sandsynligvis følge den optimale rute, samtidig med at agenten får lov til at vælge den uudforskede vej en gang imellem.
+
+## Python-implementering
+
+Vi er nu klar til at implementere læringsalgoritmen. Før vi gør det, har vi også brug for en funktion, der kan konvertere vilkårlige tal i Q-Tabellen til en vektor af sandsynligheder for de tilsvarende handlinger.
+
+1. Opret funktionen `probs()`:
+
+ ```python
+ def probs(v,eps=1e-4):
+ v = v-v.min()+eps
+ v = v/v.sum()
+ return v
+ ```
+
+ Vi tilføjer lidt `eps` til den oprindelige vektor for at undgå division med 0 i det indledende tilfælde, hvor alle komponenter i vektoren er identiske.
+
+Kør læringsalgoritmen gennem 5000 eksperimenter, også kaldet **epochs**: (kodeblok 8)
+```python
+ for epoch in range(5000):
+
+ # Vælg startpunkt
+ m.random_start()
+
+ # Begynd at rejse
+ n=0
+ cum_reward = 0
+ while True:
+ x,y = m.human
+ v = probs(Q[x,y])
+ a = random.choices(list(actions),weights=v)[0]
+ dpos = actions[a]
+ m.move(dpos,check_correctness=False) # vi tillader spilleren at bevæge sig uden for brættet, hvilket afslutter episoden
+ r = reward(m)
+ cum_reward += r
+ if r==end_reward or cum_reward < -1000:
+ lpath.append(n)
+ break
+ alpha = np.exp(-n / 10e5)
+ gamma = 0.5
+ ai = action_idx[a]
+ Q[x,y,ai] = (1 - alpha) * Q[x,y,ai] + alpha * (r + gamma * Q[x+dpos[0], y+dpos[1]].max())
+ n+=1
+```
+
+Efter at have udført denne algoritme, bør Q-Tabellen være opdateret med værdier, der definerer attraktiviteten af forskellige handlinger på hvert trin. Vi kan forsøge at visualisere Q-Tabellen ved at plotte en vektor i hver celle, der peger i den ønskede bevægelsesretning. For enkelhedens skyld tegner vi en lille cirkel i stedet for pilspids.
+
+
## Kontrol af politikken
-Da Q-Tabellen viser "attraktiviteten" af hver handling i hver tilstand, er det ret nemt at bruge den til at definere effektiv navigation i vores verden. I det simpleste tilfælde kan vi vælge den handling, der svarer til den højeste Q-Table-værdi: (kodeblok 9)
+Da Q-Tabellen angiver "attraktiviteten" af hver handling i hver tilstand, er det ganske nemt at bruge den til at definere effektiv navigation i vores verden. I den simpleste form kan vi vælge den handling, der svarer til den højeste Q-Tabelværdi: (kodeblok 9)
```python
def qpolicy_strict(m):
@@ -198,17 +274,18 @@ def qpolicy_strict(m):
walk(m,qpolicy_strict)
```
-> Hvis du prøver koden ovenfor flere gange, vil du måske bemærke, at den nogle gange "hænger", og du skal trykke på STOP-knappen i notebooken for at afbryde den. Dette sker, fordi der kan være situationer, hvor to tilstande "peger" på hinanden i forhold til optimal Q-værdi, hvilket får agenten til at bevæge sig mellem disse tilstande uendeligt.
+
+> Hvis du prøver koden ovenfor flere gange, vil du måske bemærke, at den nogle gange "hænger", og du bliver nødt til at trykke på STOP-knappen i notesbogen for at afbryde den. Dette sker, fordi der kan være situationer, hvor to tilstande "peger" på hinanden i forhold til optimal Q-værdi, hvorved agenten ender med at bevæge sig mellem disse tilstande på ubestemt tid.
## 🚀Udfordring
-> **Opgave 1:** Modificer `walk`-funktionen til at begrænse den maksimale længde af stien til et bestemt antal trin (f.eks. 100), og se koden ovenfor returnere denne værdi fra tid til anden.
+> **Opgave 1:** Tilpas `walk`-funktionen, så den begrænser den maksimale længde af stien til et bestemt antal skridt (sig 100), og se koden ovenfor returnere denne værdi fra tid til anden.
-> **Opgave 2:** Modificer `walk`-funktionen, så den ikke vender tilbage til steder, hvor den allerede har været tidligere. Dette vil forhindre `walk` i at gentage sig selv, men agenten kan stadig ende med at være "fanget" på et sted, hvorfra den ikke kan undslippe.
+> **Opgave 2:** Tilpas `walk`-funktionen, så den ikke går tilbage til steder, hvor den tidligere har været. Dette vil forhindre `walk` i at komme i løkke, men agenten kan stadig ende med at være "fanget" et sted, hvor den ikke kan slippe ud.
## Navigation
-En bedre navigationspolitik ville være den, vi brugte under træningen, som kombinerer udnyttelse og udforskning. I denne politik vil vi vælge hver handling med en vis sandsynlighed, proportional med værdierne i Q-Tabellen. Denne strategi kan stadig resultere i, at agenten vender tilbage til en position, den allerede har udforsket, men som du kan se fra koden nedenfor, resulterer den i en meget kort gennemsnitlig sti til den ønskede placering (husk, at `print_statistics` kører simuleringen 100 gange): (kodeblok 10)
+En bedre navigationspolitik ville være den, vi brugte under træningen, som kombinerer udnyttelse og udforskning. I denne politik vælger vi hver handling med en bestemt sandsynlighed, proportional med værdierne i Q-tabellen. Denne strategi kan stadig medføre, at agenten vender tilbage til en position, den allerede har udforsket, men som du kan se fra koden nedenfor, resulterer det i en meget kort gennemsnitlig sti til det ønskede sted (husk at `print_statistics` kører simuleringen 100 gange): (kodeblok 10)
```python
def qpolicy(m):
@@ -220,28 +297,32 @@ def qpolicy(m):
print_statistics(qpolicy)
```
-Efter at have kørt denne kode, bør du få en meget mindre gennemsnitlig stiens længde end før, i området 3-6.
+Efter at have kørt denne kode, bør du få en meget kortere gennemsnitlig stiens længde end før, i området 3-6.
## Undersøgelse af læringsprocessen
-Som vi har nævnt, er læringsprocessen en balance mellem udforskning og udnyttelse af den viden, der er opnået om problemrummets struktur. Vi har set, at resultaterne af læringen (evnen til at hjælpe en agent med at finde en kort sti til målet) er forbedret, men det er også interessant at observere, hvordan den gennemsnitlige stiens længde opfører sig under læringsprocessen:
+Som vi har nævnt, er læringsprocessen en balance mellem udforskning og udnyttelse af den viden, vi har opnået om problemområdets struktur. Vi har set, at resultatet af læring (evnen til at hjælpe en agent med at finde en kort sti til målet) er forbedret, men det er også interessant at observere, hvordan den gennemsnitlige stiens længde opfører sig i løbet af læringsprocessen:
+
+
Læringen kan opsummeres som:
-- **Gennemsnitlig stiens længde stiger**. Det, vi ser her, er, at i starten stiger den gennemsnitlige stiens længde. Dette skyldes sandsynligvis, at når vi intet ved om miljøet, er vi tilbøjelige til at blive fanget i dårlige tilstande, vand eller ulv. Når vi lærer mere og begynder at bruge denne viden, kan vi udforske miljøet længere, men vi ved stadig ikke særlig godt, hvor æblerne er.
+- **Gennemsnitlig stiens længde stiger**. Det, vi ser her, er, at stiens gennemsnitlige længde først stiger. Det skyldes sandsynligvis, at når vi intet ved om miljøet, er det sandsynligt, at vi kommer i uheldige tilstande, som vand eller ulv. Når vi lærer mere og begynder at bruge denne viden, kan vi udforske miljøet længere, men vi ved stadig ikke særlig godt, hvor æblerne er.
-- **Stiens længde falder, efterhånden som vi lærer mere**. Når vi lærer nok, bliver det lettere for agenten at nå målet, og stiens længde begynder at falde. Vi er dog stadig åbne for udforskning, så vi afviger ofte fra den bedste sti og udforsker nye muligheder, hvilket gør stien længere end optimal.
+- **Stiens længde falder, efterhånden som vi lærer mere**. Når vi har lært nok, bliver det lettere for agenten at nå målet, og stiens længde begynder at falde. Men vi er stadig åbne for udforskning, så vi afviger ofte fra den bedste sti og prøver nye muligheder, hvilket gør stien længere end optimalt.
-- **Længden stiger pludseligt**. Det, vi også observerer på denne graf, er, at længden på et tidspunkt steg pludseligt. Dette indikerer den stokastiske natur af processen, og at vi på et tidspunkt kan "ødelægge" Q-Table-koefficienterne ved at overskrive dem med nye værdier. Dette bør ideelt set minimeres ved at reducere læringsraten (for eksempel mod slutningen af træningen justerer vi kun Q-Table-værdierne med en lille værdi).
+- **Længden stiger pludseligt**. Det, vi også observerer på denne graf, er, at længden på et tidspunkt stiger pludseligt. Det indikerer den stokastiske natur af processen, og at vi på et tidspunkt kan "forvirre" Q-tabel-koefficienterne ved at overskrive dem med nye værdier. Dette bør ideelt set minimeres ved at sænke læringsraten (for eksempel mod slutningen af træningen justerer vi kun Q-tabelværdierne med en lille værdi).
-Samlet set er det vigtigt at huske, at succes og kvaliteten af læringsprocessen afhænger betydeligt af parametre som læringsrate, læringsrate-nedgang og diskonteringsfaktor. Disse kaldes ofte **hyperparametre** for at skelne dem fra **parametre**, som vi optimerer under træningen (for eksempel Q-Table-koefficienter). Processen med at finde de bedste hyperparameterværdier kaldes **hyperparameteroptimering**, og det fortjener et separat emne.
+Overordnet er det vigtigt at huske, at succesen og kvaliteten af læringsprocessen i høj grad afhænger af parametre som læringsrate, decay af læringsrate og diskonteringsfaktor. Disse kaldes ofte **hyperparametre** for at skelne dem fra **parametre**, som vi optimerer under træningen (for eksempel Q-tabel-koefficienter). Processen med at finde de bedste hyperparameterværdier kaldes **hyperparameteroptimering**, og det fortjener et separat emne.
## [Quiz efter forelæsning](https://ff-quizzes.netlify.app/en/ml/)
## Opgave
-[En Mere Realistisk Verden](assignment.md)
+[En mere realistisk verden](assignment.md)
---
-**Ansvarsfraskrivelse**:
-Dette dokument er blevet oversat ved hjælp af AI-oversættelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selvom vi bestræber os på nøjagtighed, skal du være opmærksom på, at automatiserede oversættelser kan indeholde fejl eller unøjagtigheder. Det originale dokument på dets oprindelige sprog bør betragtes som den autoritative kilde. For kritisk information anbefales professionel menneskelig oversættelse. Vi er ikke ansvarlige for eventuelle misforståelser eller fejltolkninger, der opstår som følge af brugen af denne oversættelse.
\ No newline at end of file
+
+**Ansvarsfraskrivelse**:
+Dette dokument er blevet oversat ved hjælp af AI-oversættelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selvom vi bestræber os på nøjagtighed, skal du være opmærksom på, at automatiserede oversættelser kan indeholde fejl eller unøjagtigheder. Det originale dokument på dets oprindelige sprog bør betragtes som den autoritative kilde. For kritisk information anbefales professionel menneskelig oversættelse. Vi påtager os intet ansvar for misforståelser eller fejltolkninger, der opstår som følge af brugen af denne oversættelse.
+
\ No newline at end of file
diff --git a/translations/de/.co-op-translator.json b/translations/de/.co-op-translator.json
index dd3b6256a..17f76155f 100644
--- a/translations/de/.co-op-translator.json
+++ b/translations/de/.co-op-translator.json
@@ -24,8 +24,8 @@
"language_code": "de"
},
"1-Introduction/3-fairness/README.md": {
- "original_hash": "9a6b702d1437c0467e3c5c28d763dac2",
- "translation_date": "2025-09-04T21:58:29+00:00",
+ "original_hash": "0f00d72169a0d37eecfd16d71e01700a",
+ "translation_date": "2026-07-13T23:43:04+00:00",
"source_file": "1-Introduction/3-fairness/README.md",
"language_code": "de"
},
@@ -54,8 +54,8 @@
"language_code": "de"
},
"2-Regression/1-Tools/README.md": {
- "original_hash": "fa81d226c71d5af7a2cade31c1c92b88",
- "translation_date": "2025-09-04T21:52:04+00:00",
+ "original_hash": "0b8635427b582d03ea4ab7089b93e505",
+ "translation_date": "2026-07-13T23:39:45+00:00",
"source_file": "2-Regression/1-Tools/README.md",
"language_code": "de"
},
@@ -72,8 +72,8 @@
"language_code": "de"
},
"2-Regression/2-Data/README.md": {
- "original_hash": "7c077988328ebfe33b24d07945f16eca",
- "translation_date": "2025-09-04T21:52:58+00:00",
+ "original_hash": "a58b2c4d16c6b122643391745ac15af6",
+ "translation_date": "2026-07-13T23:40:41+00:00",
"source_file": "2-Regression/2-Data/README.md",
"language_code": "de"
},
@@ -89,6 +89,12 @@
"source_file": "2-Regression/2-Data/solution/Julia/README.md",
"language_code": "de"
},
+ "2-Regression/2-Data/solution/notebook.ipynb": {
+ "original_hash": "96b95f8cf473481f2f371de8156f1571",
+ "translation_date": "2026-07-13T23:36:12+00:00",
+ "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
+ "language_code": "de"
+ },
"2-Regression/3-Linear/README.md": {
"original_hash": "8b776e731c35b171d316d01d0e7b1369",
"translation_date": "2026-04-26T20:11:15+00:00",
@@ -457,7 +463,7 @@
},
"8-Reinforcement/1-QLearning/README.md": {
"original_hash": "911efd5e595089000cb3c16fce1beab8",
- "translation_date": "2025-09-04T22:04:40+00:00",
+ "translation_date": "2026-07-13T23:41:39+00:00",
"source_file": "8-Reinforcement/1-QLearning/README.md",
"language_code": "de"
},
@@ -481,7 +487,7 @@
},
"8-Reinforcement/2-Gym/README.md": {
"original_hash": "107d5bb29da8a562e7ae72262d251a75",
- "translation_date": "2025-09-04T22:05:24+00:00",
+ "translation_date": "2026-07-13T23:42:26+00:00",
"source_file": "8-Reinforcement/2-Gym/README.md",
"language_code": "de"
},
@@ -581,6 +587,19 @@
"source_file": "TROUBLESHOOTING.md",
"language_code": "de"
},
+ "__translation_failures__": {
+ "sketchnotes/LICENSE.md": {
+ "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f",
+ "source_file": "sketchnotes/LICENSE.md",
+ "language_code": "de",
+ "failure_date": "2026-07-13T23:39:00+00:00",
+ "status": "failed",
+ "error_type": "TranslationIncompleteError",
+ "error_message": "Markdown translation remained incomplete for chunk 1.1.1 of 'LICENSE.md', and the chunk could not be split further.",
+ "translator_version": "0.20.0",
+ "failure_policy_version": 1
+ }
+ },
"docs/_sidebar.md": {
"original_hash": "68dd06c685f6ce840e0acfa313352e7c",
"translation_date": "2025-09-03T21:47:56+00:00",
diff --git a/translations/de/1-Introduction/3-fairness/README.md b/translations/de/1-Introduction/3-fairness/README.md
index 9b77a6635..a794aa416 100644
--- a/translations/de/1-Introduction/3-fairness/README.md
+++ b/translations/de/1-Introduction/3-fairness/README.md
@@ -1,161 +1,167 @@
-# Aufbau von Machine-Learning-Lösungen mit verantwortungsbewusster KI
-
-
+# Aufbau von Machine Learning-Lösungen mit verantwortungsvoller KI
+
+
> Sketchnote von [Tomomi Imura](https://www.twitter.com/girlie_mac)
-## [Quiz vor der Vorlesung](https://ff-quizzes.netlify.app/en/ml/)
-
+## [Vortrag Quiz](https://ff-quizzes.netlify.app/en/ml/)
+
## Einführung
-In diesem Lehrplan werden Sie entdecken, wie Machine Learning unser tägliches Leben beeinflusst. Schon jetzt sind Systeme und Modelle in alltägliche Entscheidungsprozesse eingebunden, wie z. B. bei medizinischen Diagnosen, Kreditgenehmigungen oder der Betrugserkennung. Daher ist es wichtig, dass diese Modelle zuverlässig arbeiten und vertrauenswürdige Ergebnisse liefern. Genau wie jede andere Softwareanwendung können KI-Systeme Erwartungen nicht erfüllen oder unerwünschte Ergebnisse liefern. Deshalb ist es entscheidend, das Verhalten eines KI-Modells zu verstehen und erklären zu können.
+In diesem Lehrplan werden Sie entdecken, wie Machine Learning unser tägliches Leben beeinflussen kann und bereits beeinflusst. Schon jetzt sind Systeme und Modelle in alltäglichen Entscheidungsaufgaben involviert, wie z. B. Gesundheitsdiagnosen, Kreditgenehmigungen oder Betrugserkennung. Daher ist es wichtig, dass diese Modelle gut funktionieren, um vertrauenswürdige Ergebnisse zu liefern. Genau wie jede Softwareanwendung werden KI-Systeme Erwartungen nicht erfüllen oder unerwünschte Ergebnisse liefern. Deshalb ist es essenziell, das Verhalten eines KI-Modells verstehen und erklären zu können.
-Stellen Sie sich vor, was passieren kann, wenn die Daten, die Sie zur Erstellung dieser Modelle verwenden, bestimmte demografische Gruppen wie Ethnie, Geschlecht, politische Ansichten oder Religion nicht berücksichtigen oder unverhältnismäßig repräsentieren. Was passiert, wenn die Ergebnisse des Modells so interpretiert werden, dass sie eine bestimmte demografische Gruppe bevorzugen? Welche Konsequenzen hat das für die Anwendung? Und was passiert, wenn das Modell ein schädliches Ergebnis liefert? Wer ist für das Verhalten des KI-Systems verantwortlich? Diese Fragen werden wir in diesem Lehrplan untersuchen.
+Stellen Sie sich vor, was passieren kann, wenn die Daten, die Sie zum Erstellen dieser Modelle verwenden, bestimmte demografische Merkmale wie Rasse, Geschlecht, politische Ansicht, Religion nicht enthalten oder diese demografischen Merkmale unverhältnismäßig repräsentieren. Was passiert, wenn die Ausgabe des Modells interpretiert wird, um eine demografische Gruppe zu bevorzugen? Was sind die Folgen für die Anwendung? Außerdem, was geschieht, wenn das Modell ein nachteiliges Ergebnis liefert und Menschen schadet? Wer ist verantwortlich für das Verhalten des KI-Systems? Diese und weitere Fragen werden wir in diesem Lehrplan erkunden.
In dieser Lektion werden Sie:
-- Ein Bewusstsein für die Bedeutung von Fairness im Machine Learning und fairnessbezogene Schäden entwickeln.
-- Die Praxis des Erkundens von Ausreißern und ungewöhnlichen Szenarien kennenlernen, um Zuverlässigkeit und Sicherheit zu gewährleisten.
-- Verstehen, warum es wichtig ist, inklusive Systeme zu entwerfen, die alle Menschen einbeziehen.
-- Erforschen, wie entscheidend es ist, die Privatsphäre und Sicherheit von Daten und Menschen zu schützen.
-- Die Bedeutung eines transparenten Ansatzes erkennen, um das Verhalten von KI-Modellen zu erklären.
-- Verstehen, warum Verantwortlichkeit essenziell ist, um Vertrauen in KI-Systeme aufzubauen.
+- Ihr Bewusstsein für die Bedeutung von Fairness im Machine Learning und mit Fairness zusammenhängende Schäden erhöhen.
+- Sich mit der Praxis der Untersuchung von Ausreißern und ungewöhnlichen Szenarien zur Sicherstellung von Zuverlässigkeit und Sicherheit vertraut machen.
+- Ein Verständnis dafür entwickeln, wie wichtig es ist, alle zu befähigen, indem inklusive Systeme entworfen werden.
+- Erkunden, wie wichtig es ist, die Privatsphäre und Sicherheit von Daten und Personen zu schützen.
+- Die Bedeutung eines transparenten Ansatzes zur Erklärung des Verhaltens von KI-Modellen erkennen.
+- Sensibilisiert sein, wie wichtig Verantwortlichkeit ist, um Vertrauen in KI-Systeme aufzubauen.
-## Voraussetzungen
+## Voraussetzung
-Als Voraussetzung sollten Sie den "Responsible AI Principles"-Lernpfad absolvieren und das folgende Video zum Thema ansehen:
+Als Voraussetzung absolvieren Sie bitte den Lernpfad "Verantwortungsvolle KI Prinzipien" und schauen sich das untenstehende Video zum Thema an:
-Erfahren Sie mehr über verantwortungsbewusste KI, indem Sie diesem [Lernpfad](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) folgen.
+Erfahren Sie mehr über verantwortungsvolle KI, indem Sie diesem [Lernpfad](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) folgen.
-[](https://youtu.be/dnC8-uUZXSc "Microsofts Ansatz für verantwortungsbewusste KI")
+[](https://youtu.be/dnC8-uUZXSc "Microsofts Ansatz für verantwortungsvolle KI")
-> 🎥 Klicken Sie auf das Bild oben für ein Video: Microsofts Ansatz für verantwortungsbewusste KI
+> 🎥 Klicken Sie auf das Bild oben für ein Video: Microsofts Ansatz für verantwortungsvolle KI
## Fairness
-KI-Systeme sollten alle Menschen fair behandeln und vermeiden, ähnliche Gruppen unterschiedlich zu beeinflussen. Beispielsweise sollten KI-Systeme bei medizinischen Behandlungen, Kreditanträgen oder Beschäftigungsentscheidungen dieselben Empfehlungen für Menschen mit ähnlichen Symptomen, finanziellen Verhältnissen oder beruflichen Qualifikationen geben. Jeder von uns trägt unbewusste Vorurteile mit sich, die unsere Entscheidungen und Handlungen beeinflussen. Diese Vorurteile können sich in den Daten widerspiegeln, die wir zur Schulung von KI-Systemen verwenden. Solche Verzerrungen können manchmal unbeabsichtigt auftreten. Es ist oft schwierig, bewusst zu erkennen, wann man Vorurteile in Daten einführt.
+KI-Systeme sollten alle Menschen fair behandeln und vermeiden, ähnliche Personengruppen unterschiedlich zu beeinflussen. Beispielsweise sollten KI-Systeme bei der Beratung zu medizinischer Behandlung, Kreditanträgen oder Beschäftigung dieselben Empfehlungen für alle mit ähnlichen Symptomen, finanziellen Umständen oder beruflichen Qualifikationen aussprechen. Jeder von uns trägt als Mensch ererbte Vorurteile mit sich, die unsere Entscheidungen und Handlungen beeinflussen. Diese Vorurteile können in den Daten sichtbar sein, die wir zum Trainieren von KI-Systemen verwenden. Eine solche Verzerrung kann manchmal unbeabsichtigt geschehen. Es ist oft schwierig, bewusst zu erkennen, wann man Vorurteile in Daten einführt.
-**„Unfairness“** umfasst negative Auswirkungen oder „Schäden“ für eine Gruppe von Menschen, z. B. definiert durch Ethnie, Geschlecht, Alter oder Behinderungsstatus. Die Hauptarten von fairnessbezogenen Schäden lassen sich wie folgt klassifizieren:
+**„Unfairness“** umfasst negative Auswirkungen oder „Schäden“ für eine Gruppe von Menschen, wie jene definiert durch Rasse, Geschlecht, Alter oder Behinderungsstatus. Die wichtigsten fairnessbezogenen Schäden können klassifiziert werden als:
-- **Zuweisung**: Wenn z. B. ein Geschlecht oder eine Ethnie gegenüber einer anderen bevorzugt wird.
-- **Qualität des Dienstes**: Wenn die Daten für ein spezifisches Szenario trainiert wurden, die Realität jedoch viel komplexer ist, führt dies zu einer schlechten Leistung des Dienstes. Ein Beispiel ist ein Seifenspender, der Menschen mit dunkler Hautfarbe nicht erkennen konnte. [Referenz](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
-- **Herabwürdigung**: Unfaire Kritik oder Etikettierung von etwas oder jemandem. Ein Beispiel ist eine Bildkennzeichnungstechnologie, die dunkelhäutige Menschen fälschlicherweise als Gorillas bezeichnete.
-- **Über- oder Unterrepräsentation**: Die Idee, dass eine bestimmte Gruppe in einem bestimmten Beruf nicht sichtbar ist, und jede Funktion, die dies weiter fördert, trägt zu Schaden bei.
-- **Stereotypisierung**: Die Zuordnung vorgefertigter Eigenschaften zu einer bestimmten Gruppe. Ein Beispiel ist ein Sprachübersetzungssystem zwischen Englisch und Türkisch, das aufgrund von stereotypischen Geschlechterassoziationen Ungenauigkeiten aufweist.
+- **Zuteilung**, wenn beispielsweise ein Geschlecht oder eine Ethnie gegenüber einer anderen bevorzugt wird.
+- **Dienstleistungsqualität**. Wenn Sie die Daten für ein spezifisches Szenario trainieren, die Realität aber viel komplexer ist, führt das zu einer schlecht funktionierenden Dienstleistung. Zum Beispiel konnte ein Handseifenspender scheinbar keine Menschen mit dunkler Haut erkennen. [Referenz](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
+- **Herabwürdigung**. Etwas oder jemanden unfair zu kritisieren und zu etikettieren. Zum Beispiel hat eine Bilderkennungstechnologie berüchtigterweise Bilder von dunkelhäutigen Menschen als Gorillas falsch etikettiert.
+- **Über- oder Unterrepräsentation**. Die Vorstellung ist, dass eine bestimmte Gruppe in einem bestimmten Beruf nicht vertreten ist, und jeder Dienst oder Funktion, der dies weiterhin fördert, trägt zu Schäden bei.
+- **Stereotypisierung**. Eine bestimmte Gruppe mit vorab zugewiesenen Eigenschaften verbinden. Zum Beispiel kann ein maschinelles Übersetzungssystem zwischen Englisch und Türkisch Ungenauigkeiten haben, die auf stereotype Assoziationen mit dem Geschlecht bei einzelnen Wörtern basieren.
-
+
> Übersetzung ins Türkische
-
-> Übersetzung zurück ins Englische
+
+> Rückübersetzung ins Englische
-Beim Entwerfen und Testen von KI-Systemen müssen wir sicherstellen, dass KI fair ist und nicht so programmiert wird, dass sie voreingenommene oder diskriminierende Entscheidungen trifft, die auch Menschen nicht treffen dürfen. Fairness in KI und Machine Learning zu gewährleisten, bleibt eine komplexe soziotechnische Herausforderung.
+Beim Entwerfen und Testen von KI-Systemen müssen wir sicherstellen, dass KI fair ist und nicht so programmiert ist, voreingenommene oder diskriminierende Entscheidungen zu treffen, was Menschen auch verboten ist. Sicherstellung von Fairness in KI und Machine Learning bleibt eine komplexe soziotechnische Herausforderung.
### Zuverlässigkeit und Sicherheit
-Um Vertrauen aufzubauen, müssen KI-Systeme zuverlässig, sicher und konsistent unter normalen und unerwarteten Bedingungen sein. Es ist wichtig zu wissen, wie sich KI-Systeme in verschiedenen Situationen verhalten, insbesondere bei Ausreißern. Beim Aufbau von KI-Lösungen sollte ein erheblicher Fokus darauf gelegt werden, wie eine Vielzahl von Umständen gehandhabt werden kann, denen die KI-Lösungen begegnen könnten. Zum Beispiel muss ein selbstfahrendes Auto die Sicherheit der Menschen als oberste Priorität betrachten. Daher muss die KI, die das Auto antreibt, alle möglichen Szenarien berücksichtigen, denen das Auto begegnen könnte, wie z. B. Nacht, Gewitter, Schneestürme, Kinder, die über die Straße rennen, Haustiere, Straßenbauarbeiten usw. Wie gut ein KI-System eine Vielzahl von Bedingungen zuverlässig und sicher bewältigen kann, spiegelt das Maß an Voraussicht wider, das der Datenwissenschaftler oder KI-Entwickler während des Designs oder Tests des Systems berücksichtigt hat.
+Um Vertrauen aufzubauen, müssen KI-Systeme zuverlässig, sicher und konsistent unter normalen und unerwarteten Bedingungen sein. Es ist wichtig zu wissen, wie sich KI-Systeme in verschiedenen Situationen verhalten, besonders wenn sie Ausreißer darstellen. Beim Erstellen von KI-Lösungen muss ein großer Fokus darauf liegen, wie eine breite Palette von Umständen behandelt wird, denen die KI-Lösung begegnen könnte. Zum Beispiel muss ein selbstfahrendes Auto die Sicherheit der Menschen höchste Priorität einräumen. Daher muss die KI, die das Auto antreibt, alle möglichen Szenarien berücksichtigen, wie Nacht, Gewitter oder Schneestürme, Kinder, die über die Straße rennen, Haustiere, Straßenbau usw. Wie gut ein KI-System eine breite Palette an Bedingungen zuverlässig und sicher bewältigen kann, spiegelt das Maß an Antizipation wider, das der Datenwissenschaftler oder KI-Entwickler bei Design oder Test des Systems berücksichtigt hat.
> [🎥 Klicken Sie hier für ein Video: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
### Inklusivität
-KI-Systeme sollten so gestaltet sein, dass sie alle Menschen einbeziehen und befähigen. Beim Entwerfen und Implementieren von KI-Systemen identifizieren und adressieren Datenwissenschaftler und KI-Entwickler potenzielle Barrieren im System, die Menschen unbeabsichtigt ausschließen könnten. Zum Beispiel gibt es weltweit 1 Milliarde Menschen mit Behinderungen. Mit den Fortschritten in der KI können sie leichter auf eine Vielzahl von Informationen und Möglichkeiten in ihrem täglichen Leben zugreifen. Durch die Beseitigung von Barrieren entstehen Chancen, KI-Produkte mit besseren Erfahrungen zu entwickeln, die allen zugutekommen.
+KI-Systeme sollten so gestaltet sein, dass sie alle einbeziehen und befähigen. Beim Entwerfen und Implementieren von KI-Systemen identifizieren und adressieren Datenwissenschaftler und KI-Entwickler potenzielle Barrieren im System, die unbeabsichtigt Menschen ausschließen könnten. Beispielsweise gibt es rund 1 Milliarde Menschen mit Behinderungen weltweit. Mit der Weiterentwicklung von KI können sie im Alltag leichter auf eine breite Palette von Informationen und Möglichkeiten zugreifen. Durch das Beseitigen von Barrieren entstehen Chancen zur Innovation und Entwicklung von KI-Produkten mit besseren Erfahrungen, die allen zugutekommen.
-> [🎥 Klicken Sie hier für ein Video: Inklusivität in der KI](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
+> [🎥 Klicken Sie hier für ein Video: Inklusivität in KI](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
### Sicherheit und Datenschutz
-KI-Systeme sollten sicher sein und die Privatsphäre der Menschen respektieren. Menschen vertrauen Systemen weniger, die ihre Privatsphäre, Informationen oder ihr Leben gefährden. Beim Training von Machine-Learning-Modellen verlassen wir uns auf Daten, um die besten Ergebnisse zu erzielen. Dabei muss die Herkunft und Integrität der Daten berücksichtigt werden. Zum Beispiel: Wurden die Daten von Nutzern bereitgestellt oder waren sie öffentlich zugänglich? Während der Arbeit mit den Daten ist es entscheidend, KI-Systeme zu entwickeln, die vertrauliche Informationen schützen und Angriffen widerstehen können. Da KI immer weiter verbreitet wird, wird der Schutz der Privatsphäre und die Sicherung wichtiger persönlicher und geschäftlicher Informationen immer kritischer und komplexer. Datenschutz- und Datensicherheitsfragen erfordern besondere Aufmerksamkeit, da der Zugang zu Daten für KI-Systeme essenziell ist, um genaue und fundierte Vorhersagen und Entscheidungen über Menschen zu treffen.
+KI-Systeme sollten sicher sein und die Privatsphäre der Menschen respektieren. Menschen vertrauen Systemen weniger, die ihre Privatsphäre, Informationen oder Leben gefährden. Beim Trainieren von Machine Learning-Modellen verlassen wir uns auf Daten, um die besten Ergebnisse zu erzielen. Dabei müssen Ursprung und Integrität der Daten berücksichtigt werden. Wurden die Daten beispielsweise vom Nutzer bereitgestellt oder sind öffentlich zugänglich? Weiterhin ist es entscheidend, KI-Systeme zu entwickeln, die vertrauliche Informationen schützen und Angriffen widerstehen können. Da KI immer verbreiteter wird, steigt die Bedeutung und Komplexität des Schutzes der Privatsphäre und wichtiger persönlicher sowie geschäftlicher Informationen. Datenschutz- und Datensicherheitsfragen erfordern besonders hohe Aufmerksamkeit bei KI, da der Zugriff auf Daten für KI-Systeme essentiell ist, um genaue und informierte Vorhersagen und Entscheidungen über Personen zu treffen.
-> [🎥 Klicken Sie hier für ein Video: Sicherheit in der KI](https://www.microsoft.com/videoplayer/embed/RE4voJF)
+> [🎥 Klicken Sie hier für ein Video: Sicherheit in KI](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- Als Branche haben wir bedeutende Fortschritte im Bereich Datenschutz und Sicherheit gemacht, die maßgeblich durch Vorschriften wie die DSGVO (Datenschutz-Grundverordnung) vorangetrieben wurden.
-- Dennoch müssen wir bei KI-Systemen die Spannung zwischen dem Bedarf an mehr persönlichen Daten, um Systeme persönlicher und effektiver zu machen, und dem Datenschutz anerkennen.
-- Genau wie bei der Einführung vernetzter Computer mit dem Internet sehen wir auch einen starken Anstieg der Sicherheitsprobleme im Zusammenhang mit KI.
-- Gleichzeitig wird KI genutzt, um die Sicherheit zu verbessern. Zum Beispiel werden die meisten modernen Antiviren-Scanner heute von KI-Heuristiken angetrieben.
-- Wir müssen sicherstellen, dass unsere Datenwissenschaftsprozesse harmonisch mit den neuesten Datenschutz- und Sicherheitspraktiken zusammenarbeiten.
+- Als Branche haben wir bedeutende Fortschritte im Bereich Datenschutz & Sicherheit gemacht, die maßgeblich durch Vorschriften wie die DSGVO (Datenschutz-Grundverordnung) unterstützt wurden.
+- Mit KI-Systemen müssen wir dennoch die Spannung zwischen dem Bedarf an mehr persönlichen Daten zur Personalisierung und Effektivität der Systeme – und dem Datenschutz anerkennen.
+- Ähnlich wie beim Aufkommen vernetzter Computer mit dem Internet erleben wir auch einen starken Anstieg der Sicherheitsprobleme im Zusammenhang mit KI.
+- Gleichzeitig sehen wir, dass KI zur Verbesserung der Sicherheit eingesetzt wird. Zum Beispiel werden die meisten modernen Antiviren-Scanner heute von KI-Heuristiken angetrieben.
+- Wir müssen sicherstellen, dass unsere Data Science-Prozesse harmonisch mit den neuesten Datenschutz- und Sicherheitspraktiken verschmelzen.
-### Transparenz
-KI-Systeme sollten verständlich sein. Ein wesentlicher Bestandteil der Transparenz ist die Erklärung des Verhaltens von KI-Systemen und ihrer Komponenten. Die Verbesserung des Verständnisses von KI-Systemen erfordert, dass Interessengruppen verstehen, wie und warum sie funktionieren, damit sie potenzielle Leistungsprobleme, Sicherheits- und Datenschutzbedenken, Vorurteile, ausschließende Praktiken oder unbeabsichtigte Ergebnisse identifizieren können. Wir glauben auch, dass diejenigen, die KI-Systeme nutzen, ehrlich und offen darüber sein sollten, wann, warum und wie sie diese einsetzen. Ebenso über die Grenzen der Systeme, die sie verwenden. Zum Beispiel: Wenn eine Bank ein KI-System zur Unterstützung ihrer Kreditentscheidungen einsetzt, ist es wichtig, die Ergebnisse zu überprüfen und zu verstehen, welche Daten die Empfehlungen des Systems beeinflussen. Regierungen beginnen, KI branchenübergreifend zu regulieren, daher müssen Datenwissenschaftler und Organisationen erklären, ob ein KI-System die regulatorischen Anforderungen erfüllt, insbesondere wenn es zu einem unerwünschten Ergebnis kommt.
+### Transparenz
+KI-Systeme sollten verständlich sein. Ein wesentlicher Teil von Transparenz ist, das Verhalten von KI-Systemen und deren Komponenten zu erklären. Um KI-Systeme besser zu verstehen, müssen Beteiligte verstehen, wie und warum sie funktionieren, damit sie potenzielle Leistungsprobleme, Sicherheits- und Datenschutzbedenken, Vorurteile, ausschließende Praktiken oder unbeabsichtigte Ergebnisse identifizieren können. Wir sind zudem der Ansicht, dass Nutzer von KI-Systemen ehrlich und offen darüber sein sollten, wann, warum und wie sie diese einsetzen. Ebenso über die Beschränkungen der Systeme, die sie nutzen. Beispielsweise ist es wichtig, bei der Verwendung eines KI-Systems durch eine Bank zur Unterstützung von Verbraucherkreditentscheidungen die Ergebnisse zu überprüfen und zu verstehen, welche Daten die Empfehlungen des Systems beeinflussen. Regierungen beginnen, KI branchenübergreifend zu regulieren, weshalb Datenwissenschaftler und Organisationen erklären müssen, ob ein KI-System regulatorische Anforderungen erfüllt, besonders bei einem unerwünschten Ergebnis.
-> [🎥 Klicken Sie hier für ein Video: Transparenz in der KI](https://www.microsoft.com/videoplayer/embed/RE4voJF)
+> [🎥 Klicken Sie hier für ein Video: Transparenz in KI](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- Da KI-Systeme so komplex sind, ist es schwierig zu verstehen, wie sie funktionieren und ihre Ergebnisse zu interpretieren.
-- Dieses mangelnde Verständnis beeinflusst, wie diese Systeme verwaltet, operationalisiert und dokumentiert werden.
-- Noch wichtiger ist, dass dieses mangelnde Verständnis die Entscheidungen beeinflusst, die auf Basis der Ergebnisse dieser Systeme getroffen werden.
+- Da KI-Systeme so komplex sind, ist es schwer zu verstehen, wie sie funktionieren und die Ergebnisse zu interpretieren.
+- Dieses fehlende Verständnis beeinflusst die Art, wie diese Systeme verwaltet, eingesetzt und dokumentiert werden.
+- Dieses fehlende Verständnis wirkt sich vor allem auf die Entscheidungen aus, die auf Basis der Ergebnisse dieser Systeme getroffen werden.
### Verantwortlichkeit
+
+Die Personen, die KI-Systeme entwerfen und einsetzen, müssen für deren Betrieb verantwortlich sein. Die Notwendigkeit von Verantwortlichkeit ist besonders entscheidend bei sensiblen Technologien wie der Gesichtserkennung. Kürzlich ist die Nachfrage nach Gesichtserkennungstechnologie gestiegen, insbesondere seitens Strafverfolgungsbehörden, die Potential zum Beispiel bei der Suche nach vermissten Kindern sehen. Diese Technologien könnten jedoch von Regierungen genutzt werden, um die Grundfreiheiten ihrer Bürger zu gefährden, etwa durch ermöglichen einer kontinuierlichen Überwachung bestimmter Personen. Daher müssen Datenwissenschaftler und Organisationen verantwortungsbewusst sein, wie ihr KI-System Einzelpersonen oder die Gesellschaft beeinflusst.
-Die Menschen, die KI-Systeme entwerfen und einsetzen, müssen für deren Betrieb verantwortlich sein. Die Notwendigkeit der Verantwortlichkeit ist besonders wichtig bei sensiblen Technologien wie Gesichtserkennung. In letzter Zeit gibt es eine wachsende Nachfrage nach Gesichtserkennungstechnologie, insbesondere von Strafverfolgungsbehörden, die das Potenzial der Technologie beispielsweise bei der Suche nach vermissten Kindern sehen. Diese Technologien könnten jedoch von einer Regierung genutzt werden, um die Grundfreiheiten ihrer Bürger zu gefährden, indem sie beispielsweise eine kontinuierliche Überwachung bestimmter Personen ermöglichen. Daher müssen Datenwissenschaftler und Organisationen verantwortlich dafür sein, wie ihr KI-System Einzelpersonen oder die Gesellschaft beeinflusst.
-
-[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsofts Ansatz für verantwortungsbewusste KI")
+[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsofts Ansatz für verantwortungsvolle KI")
> 🎥 Klicken Sie auf das Bild oben für ein Video: Warnungen vor Massenüberwachung durch Gesichtserkennung
-Letztendlich ist eine der größten Fragen für unsere Generation, als die erste Generation, die KI in die Gesellschaft bringt, wie wir sicherstellen können, dass Computer den Menschen gegenüber rechenschaftspflichtig bleiben und dass die Menschen, die Computer entwerfen, allen anderen gegenüber rechenschaftspflichtig bleiben.
+Letztendlich ist eine der größten Fragen für unsere Generation, als erste Generation, die KI in die Gesellschaft bringt, wie sichergestellt wird, dass Computer gegenüber Menschen verantwortlich bleiben und wie sichergestellt wird, dass die Menschen, die Computer entwerfen, gegenüber allen anderen verantwortlich bleiben.
-## Auswirkungen bewerten
+## Wirkungseinschätzung
-Bevor ein Machine-Learning-Modell trainiert wird, ist es wichtig, eine Auswirkungsbewertung durchzuführen, um den Zweck des KI-Systems zu verstehen: Was ist der beabsichtigte Nutzen? Wo wird es eingesetzt? Und wer wird mit dem System interagieren? Diese Bewertungen helfen Prüfern oder Testern, die das System bewerten, zu wissen, welche Faktoren bei der Identifizierung potenzieller Risiken und erwarteter Konsequenzen zu berücksichtigen sind.
+Vor dem Trainieren eines Machine Learning-Modells ist es wichtig, eine Wirkungseinschätzung vorzunehmen, um den Zweck des KI-Systems zu verstehen; wie es verwendet werden soll; wo es eingesetzt wird; und wer mit dem System interagieren wird. Diese Informationen sind hilfreich für Gutachter oder Tester, die das System bewerten, um zu wissen, welche Faktoren bei der Identifikation potenzieller Risiken und erwarteter Konsequenzen beachtet werden müssen.
-Die folgenden Bereiche stehen bei einer Auswirkungsbewertung im Fokus:
+Die folgenden Bereiche stehen im Fokus bei der Durchführung einer Wirkungseinschätzung:
-* **Negative Auswirkungen auf Einzelpersonen**: Es ist wichtig, sich über Einschränkungen, Anforderungen, nicht unterstützte Verwendungen oder bekannte Begrenzungen bewusst zu sein, die die Leistung des Systems beeinträchtigen könnten, um sicherzustellen, dass das System nicht auf eine Weise verwendet wird, die Einzelpersonen schaden könnte.
-* **Datenanforderungen**: Ein Verständnis dafür zu gewinnen, wie und wo das System Daten verwendet, ermöglicht es Prüfern, Datenanforderungen zu identifizieren, die berücksichtigt werden müssen (z. B. DSGVO- oder HIPAA-Datenvorschriften). Außerdem sollte geprüft werden, ob die Quelle oder Menge der Daten für das Training ausreicht.
-* **Zusammenfassung der Auswirkungen**: Eine Liste potenzieller Schäden erstellen, die durch die Nutzung des Systems entstehen könnten. Während des gesamten ML-Lebenszyklus überprüfen, ob die identifizierten Probleme behoben oder adressiert wurden.
-* **Ziele für die sechs Kernprinzipien**: Bewerten, ob die Ziele jedes Prinzips erreicht wurden und ob es Lücken gibt.
+* **Negative Auswirkungen auf Individuen**. Das Bewusstsein für jegliche Einschränkungen oder Anforderungen, ununterstützte Nutzung oder bekannte Einschränkungen, die die Leistung des Systems behindern, ist entscheidend, um sicherzustellen, dass das System nicht auf eine Weise verwendet wird, die Menschen schadet.
+* **Datenanforderungen**. Das Verständnis, wie und wo das System Daten verwendet, ermöglicht den Gutachtern, eventuelle Datenanforderungen wie z. B. DSGVO- oder HIPAA-Datenschutzregelungen zu prüfen. Außerdem wird bewertet, ob die Datenquelle oder -menge ausreichend zum Training ist.
+* **Zusammenfassung der Auswirkungen**. Eine Liste potenzieller Schäden, die aus der Nutzung des Systems entstehen könnten, sammeln. Während des gesamten ML-Lebenszyklus überprüfen, ob die identifizierten Probleme gemindert oder adressiert werden.
+* **Anwendbare Ziele** für jedes der sechs Kernprinzipien. Prüfen, ob die Ziele der Prinzipien erfüllt sind und ob Lücken bestehen.
-## Debugging mit verantwortungsbewusster KI
-Ähnlich wie beim Debugging einer Softwareanwendung ist das Debugging eines KI-Systems ein notwendiger Prozess, um Probleme im System zu identifizieren und zu lösen. Es gibt viele Faktoren, die dazu führen können, dass ein Modell nicht wie erwartet oder verantwortungsvoll funktioniert. Die meisten traditionellen Leistungsmetriken für Modelle sind quantitative Zusammenfassungen der Modellleistung, die nicht ausreichen, um zu analysieren, wie ein Modell gegen die Prinzipien der verantwortungsbewussten KI verstößt. Darüber hinaus ist ein Machine-Learning-Modell eine Blackbox, die es schwierig macht, die Gründe für seine Ergebnisse zu verstehen oder Erklärungen zu liefern, wenn es Fehler macht. Später in diesem Kurs lernen wir, wie man das Responsible AI Dashboard verwendet, um KI-Systeme zu debuggen. Das Dashboard bietet ein umfassendes Werkzeug für Datenwissenschaftler und KI-Entwickler, um:
+## Debugging mit verantwortungsvoller KI
-* **Fehleranalyse**: Die Fehlerverteilung des Modells zu identifizieren, die die Fairness oder Zuverlässigkeit des Systems beeinträchtigen könnte.
-* **Modellübersicht**: Zu entdecken, wo es Leistungsunterschiede des Modells über verschiedene Datenkohorten hinweg gibt.
-* **Datenanalyse**: Die Datenverteilung zu verstehen und potenzielle Verzerrungen in den Daten zu identifizieren, die zu Fairness-, Inklusivitäts- und Zuverlässigkeitsproblemen führen könnten.
-* **Modellinterpretierbarkeit**: Zu verstehen, was die Vorhersagen des Modells beeinflusst. Dies hilft, das Verhalten des Modells zu erklären, was für Transparenz und Verantwortlichkeit wichtig ist.
+Ähnlich wie beim Debuggen einer Softwareanwendung ist das Debuggen eines KI-Systems ein notwendiger Prozess, um Probleme im System zu identifizieren und zu beheben. Es gibt viele Faktoren, die beeinflussen können, dass ein Modell nicht erwartungsgemäß oder verantwortungsvoll arbeitet. Die meisten traditionellen Leistungsmetriken eines Modells sind quantitative Aggregationen der Modellleistung, welche nicht ausreichen, um zu analysieren, wie ein Modell die Prinzipien verantwortungsvoller KI verletzt. Außerdem ist ein Machine Learning-Modell eine Blackbox, was es schwierig macht zu verstehen, was seine Ergebnisse beeinflusst oder eine Erklärung zu liefern, wenn ein Fehler auftritt. Später in diesem Kurs lernen wir, wie man das Responsible AI Dashboard verwendet, um KI-Systeme zu debuggen. Das Dashboard bietet ein ganzheitliches Werkzeug für Datenwissenschaftler und KI-Entwickler, um:
-## 🚀 Herausforderung
+* **Fehleranalyse**. Um die Fehlerverteilung des Modells zu identifizieren, die Fairness oder Zuverlässigkeit des Systems beeinflussen kann.
+* **Modellübersicht**. Um zu entdecken, wo es Leistungsunterschiede des Modells über Datenkohorten hinweg gibt.
+* **Datenanalyse**. Um die Datenverteilung zu verstehen und mögliche Vorurteile in den Daten zu erkennen, die zu Problemen bei Fairness, Inklusivität und Zuverlässigkeit führen können.
+* **Modellinterpretierbarkeit**. Um zu verstehen, was die Vorhersagen des Modells beeinflusst. Dies hilft, das Verhalten des Modells zu erklären, was wichtig für Transparenz und Verantwortlichkeit ist.
-Um Schäden von vornherein zu vermeiden, sollten wir:
-- eine Vielfalt an Hintergründen und Perspektiven unter den Menschen haben, die an den Systemen arbeiten
+## 🚀 Herausforderung
+
+Um zu verhindern, dass Schäden überhaupt entstehen, sollten wir:
+
+- eine Vielfalt an Hintergründen und Perspektiven unter den Menschen, die an Systemen arbeiten, haben
- in Datensätze investieren, die die Vielfalt unserer Gesellschaft widerspiegeln
-- bessere Methoden im gesamten Machine-Learning-Lebenszyklus entwickeln, um verantwortungsbewusste KI zu erkennen und zu korrigieren, wenn sie auftritt
+- bessere Methoden über den gesamten Machine Learning-Lebenszyklus entwickeln, um verantwortungsvolle KI-Verstöße zu erkennen und zu korrigieren, wenn sie auftreten
-Denken Sie an reale Szenarien, in denen die Unzuverlässigkeit eines Modells beim Erstellen und Verwenden offensichtlich wird. Was sollten wir noch berücksichtigen?
+Denken Sie an reale Szenarien, in denen die Unzuverlässigkeit eines Modells beim Erstellen und Verwenden des Modells offensichtlich wird. Was sollten wir sonst noch in Betracht ziehen?
-## [Quiz nach der Vorlesung](https://ff-quizzes.netlify.app/en/ml/)
+## [Nachvortrags-Quiz](https://ff-quizzes.netlify.app/en/ml/)
## Rückblick & Selbststudium
+
-In dieser Lektion haben Sie einige Grundlagen zu den Konzepten von Fairness und Unfairness im Machine Learning gelernt.
-Schauen Sie sich diesen Workshop an, um tiefer in die Themen einzutauchen:
+In dieser Lektion haben Sie einige Grundlagen der Konzepte von Fairness und Unfairness im maschinellen Lernen kennengelernt.
+
+Sehen Sie sich diesen Workshop an, um tiefer in die Themen einzutauchen:
- Auf der Suche nach verantwortungsvoller KI: Prinzipien in die Praxis umsetzen von Besmira Nushi, Mehrnoosh Sameki und Amit Sharma
[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: Ein Open-Source-Framework für den Aufbau verantwortungsvoller KI")
-> 🎥 Klicken Sie auf das Bild oben für ein Video: RAI Toolbox: Ein Open-Source-Framework für den Aufbau verantwortungsvoller KI von Besmira Nushi, Mehrnoosh Sameki und Amit Sharma
+> 🎥 Klicken Sie auf das obige Bild für ein Video: RAI Toolbox: Ein Open-Source-Framework für den Aufbau verantwortungsvoller KI von Besmira Nushi, Mehrnoosh Sameki und Amit Sharma
-Lesen Sie außerdem:
+Lesen Sie auch:
-- Microsofts RAI-Ressourcenzentrum: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
+- Microsofts RAI-Ressourcenzentrum: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
-- Microsofts FATE-Forschungsgruppe: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
+- Microsofts FATE-Forschungsgruppe: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
-RAI Toolbox:
+RAI Toolbox:
-- [Responsible AI Toolbox GitHub-Repository](https://github.com/microsoft/responsible-ai-toolbox)
+- [Responsible AI Toolbox GitHub Repository](https://github.com/microsoft/responsible-ai-toolbox)
-Lesen Sie über die Tools von Azure Machine Learning, um Fairness sicherzustellen:
+Lesen Sie über die Tools von Azure Machine Learning zur Gewährleistung von Fairness:
-- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
+- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
## Aufgabe
-[Erkunden Sie die RAI Toolbox](assignment.md)
+[RAI Toolbox erkunden](assignment.md)
---
-**Haftungsausschluss**:
-Dieses Dokument wurde mithilfe des KI-Übersetzungsdienstes [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, weisen wir darauf hin, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben.
\ No newline at end of file
+
+**Haftungsausschluss**:
+Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner Ursprungssprache gilt als maßgebliche Quelle. Bei kritischen Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen.
+
\ No newline at end of file
diff --git a/translations/de/2-Regression/1-Tools/README.md b/translations/de/2-Regression/1-Tools/README.md
index f74cb8f17..4394491fa 100644
--- a/translations/de/2-Regression/1-Tools/README.md
+++ b/translations/de/2-Regression/1-Tools/README.md
@@ -1,120 +1,121 @@
# Einstieg in Python und Scikit-learn für Regressionsmodelle
-
+
> Sketchnote von [Tomomi Imura](https://www.twitter.com/girlie_mac)
-## [Quiz vor der Lektion](https://ff-quizzes.netlify.app/en/ml/)
+## [Quiz vor der Vorlesung](https://ff-quizzes.netlify.app/en/ml/)
> ### [Diese Lektion ist auch in R verfügbar!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
## Einführung
-In diesen vier Lektionen lernen Sie, wie man Regressionsmodelle erstellt. Wir werden gleich besprechen, wofür diese verwendet werden. Aber bevor Sie loslegen, stellen Sie sicher, dass Sie die richtigen Werkzeuge eingerichtet haben, um den Prozess zu starten!
+In diesen vier Lektionen wirst du erfahren, wie man Regressionsmodelle erstellt. Wir werden gleich besprechen, wofür sie dienen. Aber bevor du irgendetwas machst, stelle sicher, dass du die richtigen Werkzeuge bereit hast, um den Prozess zu starten!
-In dieser Lektion lernen Sie:
+In dieser Lektion lernst du,
-- Wie Sie Ihren Computer für lokale Machine-Learning-Aufgaben konfigurieren.
-- Wie Sie mit Jupyter-Notebooks arbeiten.
-- Wie Sie Scikit-learn verwenden, einschließlich der Installation.
-- Wie Sie lineare Regression durch eine praktische Übung erkunden.
+- Deinen Computer für lokale Machine-Learning-Aufgaben zu konfigurieren.
+- Mit Jupyter Notebooks zu arbeiten.
+- Scikit-learn zu verwenden, einschließlich Installation.
+- Lineare Regression anhand einer praktischen Übung zu erkunden.
## Installationen und Konfigurationen
-[](https://youtu.be/-DfeD2k2Kj0 "ML für Anfänger - Richten Sie Ihre Tools ein, um Machine-Learning-Modelle zu erstellen")
+[](https://youtu.be/-DfeD2k2Kj0 "ML für Anfänger - Richte deine Werkzeuge ein, um Machine-Learning-Modelle zu erstellen")
-> 🎥 Klicken Sie auf das Bild oben, um ein kurzes Video zur Konfiguration Ihres Computers für ML anzusehen.
+> 🎥 Klicke auf das Bild oben für ein kurzes Video zur Konfiguration deines Computers für ML.
-1. **Installieren Sie Python**. Stellen Sie sicher, dass [Python](https://www.python.org/downloads/) auf Ihrem Computer installiert ist. Sie werden Python für viele Aufgaben in den Bereichen Datenwissenschaft und maschinelles Lernen verwenden. Die meisten Computersysteme haben Python bereits vorinstalliert. Es gibt auch nützliche [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott), die die Einrichtung für einige Benutzer erleichtern.
+1. **Installiere Python**. Sorge dafür, dass [Python](https://www.python.org/downloads/) auf deinem Computer installiert ist. Du wirst Python für viele Data-Science- und Machine-Learning-Aufgaben verwenden. Auf den meisten Computersystemen ist Python bereits installiert. Es gibt auch nützliche [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott), die einigen Anwendern die Einrichtung erleichtern.
- Einige Anwendungen von Python erfordern jedoch eine bestimmte Version der Software, während andere eine andere Version benötigen. Aus diesem Grund ist es sinnvoll, in einer [virtuellen Umgebung](https://docs.python.org/3/library/venv.html) zu arbeiten.
+Einige Anwendungsbereiche von Python erfordern jedoch eine Version der Software, während andere eine andere Version benötigen. Deshalb ist es sinnvoll, innerhalb einer [virtuellen Umgebung](https://docs.python.org/3/library/venv.html) zu arbeiten.
-2. **Installieren Sie Visual Studio Code**. Stellen Sie sicher, dass Visual Studio Code auf Ihrem Computer installiert ist. Folgen Sie diesen Anweisungen, um [Visual Studio Code zu installieren](https://code.visualstudio.com/). In diesem Kurs werden Sie Python in Visual Studio Code verwenden, daher sollten Sie sich mit der [Konfiguration von Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) für die Python-Entwicklung vertraut machen.
+2. **Installiere Visual Studio Code**. Stelle sicher, dass Visual Studio Code auf deinem Computer installiert ist. Folge diesen Anweisungen, um [Visual Studio Code zu installieren](https://code.visualstudio.com/) für die Basiseinrichtung. Du wirst Python in Visual Studio Code in diesem Kurs verwenden, daher solltest du dich damit vertraut machen, wie man [Visual Studio Code für die Python-Entwicklung konfiguriert](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott).
- > Machen Sie sich mit Python vertraut, indem Sie diese Sammlung von [Lernmodulen](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) durcharbeiten.
- >
- > [](https://youtu.be/yyQM70vi7V8 "Python mit Visual Studio Code einrichten")
- >
- > 🎥 Klicken Sie auf das Bild oben, um ein Video über die Verwendung von Python in VS Code anzusehen.
+> Mach dich mit Python vertraut, indem du diese Sammlung von [Lernmodulen](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) durchgehst.
+>
+> [](https://youtu.be/yyQM70vi7V8 "Setup Python mit Visual Studio Code")
+>
+> 🎥 Klicke auf das Bild oben für ein Video: Python innerhalb von VS Code verwenden.
-3. **Installieren Sie Scikit-learn**, indem Sie [diesen Anweisungen](https://scikit-learn.org/stable/install.html) folgen. Da Sie sicherstellen müssen, dass Sie Python 3 verwenden, wird empfohlen, eine virtuelle Umgebung zu nutzen. Beachten Sie, dass es spezielle Anweisungen gibt, wenn Sie diese Bibliothek auf einem M1 Mac installieren.
+3. **Installiere Scikit-learn**, indem du [diesen Anleitungen](https://scikit-learn.org/stable/install.html) folgst. Da du sicherstellen musst, dass Python 3 verwendet wird, wird empfohlen, eine virtuelle Umgebung zu nutzen. Beachte, dass es für die Installation auf einem M1 Mac auf der verlinkten Seite spezielle Hinweise gibt.
-4. **Installieren Sie Jupyter Notebook**. Sie müssen das [Jupyter-Paket installieren](https://pypi.org/project/jupyter/).
+1. **Installiere Jupyter Notebook**. Du musst das [Jupyter-Paket installieren](https://pypi.org/project/jupyter/).
-## Ihre ML-Entwicklungsumgebung
+## Deine ML-Entwicklungsumgebung
-Sie werden **Notebooks** verwenden, um Ihren Python-Code zu entwickeln und Machine-Learning-Modelle zu erstellen. Diese Art von Datei ist ein gängiges Werkzeug für Datenwissenschaftler und kann an ihrer Endung `.ipynb` erkannt werden.
+Du wirst **Notebooks** verwenden, um deinen Python-Code zu entwickeln und Machine-Learning-Modelle zu erstellen. Diese Dateitypen sind ein gängiges Werkzeug für Data Scientists und sind an der Dateiendung `.ipynb` zu erkennen.
-Notebooks sind eine interaktive Umgebung, die es Entwicklern ermöglicht, sowohl Code zu schreiben als auch Notizen und Dokumentationen rund um den Code hinzuzufügen. Dies ist besonders hilfreich für experimentelle oder forschungsorientierte Projekte.
+Notebooks bieten eine interaktive Umgebung, die es ermöglicht, sowohl Code zu schreiben als auch Notizen und Dokumentationen um den Code herum hinzuzufügen, was für experimentelle oder forschungsorientierte Projekte sehr hilfreich ist.
-[](https://youtu.be/7E-jC8FLA2E "ML für Anfänger - Jupyter-Notebooks einrichten, um Regressionsmodelle zu erstellen")
+[](https://youtu.be/7E-jC8FLA2E "ML für Anfänger - Richte Jupyter Notebooks ein, um Regressionsmodelle zu erstellen")
-> 🎥 Klicken Sie auf das Bild oben, um ein kurzes Video zu dieser Übung anzusehen.
+> 🎥 Klicke auf das Bild oben für ein kurzes Video zu dieser Übung.
-### Übung - Arbeiten mit einem Notebook
+### Übung - Arbeite mit einem Notebook
-In diesem Ordner finden Sie die Datei _notebook.ipynb_.
+In diesem Ordner findest du die Datei _notebook.ipynb_.
-1. Öffnen Sie _notebook.ipynb_ in Visual Studio Code.
+1. Öffne _notebook.ipynb_ in Visual Studio Code.
- Ein Jupyter-Server wird mit Python 3+ gestartet. Sie finden Bereiche im Notebook, die `ausgeführt` werden können, also Codeabschnitte. Sie können einen Codeblock ausführen, indem Sie das Symbol auswählen, das wie eine Wiedergabetaste aussieht.
+Ein Jupyter-Server mit Python 3+ wird gestartet. Du findest Abschnitte im Notebook, die `run`bar sind, also Codeblöcke. Du kannst einen Codeblock ausführen, indem du das Symbol auswählst, das wie ein Abspielknopf aussieht.
-2. Wählen Sie das `md`-Symbol und fügen Sie etwas Markdown sowie den folgenden Text hinzu: **# Willkommen in Ihrem Notebook**.
+1. Wähle das `md`-Symbol und füge etwas Markdown ein, mit folgendem Text **# Willkommen in deinem Notebook**.
- Fügen Sie anschließend etwas Python-Code hinzu.
+Füge danach etwas Python-Code hinzu.
-3. Geben Sie **print('hello notebook')** in den Codeblock ein.
-4. Wählen Sie den Pfeil, um den Code auszuführen.
+1. Tippe **print('hello notebook')** in den Codeblock.
+1. Wähle den Pfeil aus, um den Code auszuführen.
- Sie sollten die folgende Ausgabe sehen:
+Du solltest die folgende Ausgabe sehen:
```output
hello notebook
```
-
+
-Sie können Ihren Code mit Kommentaren versehen, um das Notebook selbst zu dokumentieren.
+Du kannst deinen Code mit Kommentaren durchmischen, um das Notebook selbst zu dokumentieren.
-✅ Denken Sie einen Moment darüber nach, wie unterschiedlich die Arbeitsumgebung eines Webentwicklers im Vergleich zu der eines Datenwissenschaftlers ist.
+✅ Denke einen Moment darüber nach, wie unterschiedlich die Arbeitsumgebung eines Webentwicklers im Vergleich zu der eines Data Scientists ist.
-## Einführung in Scikit-learn
+## Aufsetzen von Scikit-learn
-Jetzt, da Python in Ihrer lokalen Umgebung eingerichtet ist und Sie sich mit Jupyter-Notebooks vertraut gemacht haben, machen wir uns ebenso mit Scikit-learn vertraut (ausgesprochen `sci` wie in `science`). Scikit-learn bietet eine [umfangreiche API](https://scikit-learn.org/stable/modules/classes.html#api-ref), die Ihnen bei der Durchführung von ML-Aufgaben hilft.
+Nun, da Python in deiner lokalen Umgebung eingerichtet ist und du dich mit Jupyter Notebooks wohl fühlst, lass uns jetzt auch Scikit-learn gut kennenlernen (ausgesprochen `sci` wie in `science`). Scikit-learn bietet eine [umfangreiche API](https://scikit-learn.org/stable/modules/classes.html#api-ref), die dir bei ML-Aufgaben hilft.
-Laut ihrer [Website](https://scikit-learn.org/stable/getting_started.html) ist "Scikit-learn eine Open-Source-Bibliothek für maschinelles Lernen, die sowohl überwachtes als auch unüberwachtes Lernen unterstützt. Sie bietet auch verschiedene Werkzeuge für Modellanpassung, Datenvorverarbeitung, Modellauswahl und -bewertung sowie viele andere Hilfsmittel."
+Laut ihrer [Webseite](https://scikit-learn.org/stable/getting_started.html) ist „Scikit-learn eine Open-Source-Machine-Learning-Bibliothek, die überwachtes und unüberwachtes Lernen unterstützt. Außerdem bietet sie verschiedene Werkzeuge für Modellanpassung, Datenvorverarbeitung, Modellauswahl und -bewertung sowie viele andere Hilfsmittel.“
-In diesem Kurs werden Sie Scikit-learn und andere Werkzeuge verwenden, um Machine-Learning-Modelle für sogenannte "traditionelle Machine-Learning"-Aufgaben zu erstellen. Wir haben bewusst auf neuronale Netze und Deep Learning verzichtet, da diese besser in unserem kommenden Lehrplan "KI für Anfänger" behandelt werden.
+In diesem Kurs wirst du Scikit-learn und andere Werkzeuge verwenden, um Machine-Learning-Modelle für das zu bauen, was wir „traditionelles Machine Learning“ nennen. Wir haben bewusst neuronale Netze und Deep Learning ausgelassen, da diese besser in unserem kommenden Curriculum „KI für Anfänger“ abgedeckt werden.
-Scikit-learn macht es einfach, Modelle zu erstellen und zu bewerten. Es konzentriert sich hauptsächlich auf die Verwendung numerischer Daten und enthält mehrere vorgefertigte Datensätze, die als Lernwerkzeuge dienen. Es bietet auch vorgefertigte Modelle, die Schüler ausprobieren können. Lassen Sie uns den Prozess des Ladens vorgefertigter Daten und der Verwendung eines eingebauten Schätzers für ein erstes ML-Modell mit Scikit-learn erkunden.
+Scikit-learn macht es einfach, Modelle zu erstellen und für die Nutzung zu bewerten. Es konzentriert sich primär auf numerische Daten und enthält mehrere vorgefertigte Datensätze, die als Lernwerkzeuge genutzt werden können. Außerdem sind vorgefertigte Modelle enthalten, die Studenten ausprobieren können. Lass uns zuerst den Prozess erkunden, vorgefertigte Daten zu laden und mit einem integrierten Schätzer das erste ML-Modell mit Scikit-learn anhand einiger einfacher Daten aufzubauen.
-## Übung - Ihr erstes Scikit-learn-Notebook
+## Übung - dein erstes Scikit-learn-Notebook
-> Dieses Tutorial wurde vom [Beispiel zur linearen Regression](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) auf der Scikit-learn-Website inspiriert.
+> Dieses Tutorial wurde vom [Beispiel für lineare Regression](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) auf der Webseite von Scikit-learn inspiriert.
-[](https://youtu.be/2xkXL5EUpS0 "ML für Anfänger - Ihr erstes lineares Regressionsprojekt in Python")
-> 🎥 Klicken Sie auf das Bild oben, um ein kurzes Video zu dieser Übung anzusehen.
+[](https://youtu.be/2xkXL5EUpS0 "ML für Anfänger - Dein erstes lineares Regressionsprojekt in Python")
-In der Datei _notebook.ipynb_, die mit dieser Lektion verbunden ist, löschen Sie alle Zellen, indem Sie auf das Symbol "Papierkorb" klicken.
+> 🎥 Klicke auf das Bild oben für ein kurzes Video zu dieser Übung.
-In diesem Abschnitt arbeiten Sie mit einem kleinen Datensatz über Diabetes, der in Scikit-learn integriert ist und zu Lernzwecken dient. Stellen Sie sich vor, Sie möchten eine Behandlung für Diabetespatienten testen. Machine-Learning-Modelle könnten Ihnen helfen, herauszufinden, welche Patienten basierend auf Kombinationen von Variablen besser auf die Behandlung ansprechen würden. Selbst ein sehr einfaches Regressionsmodell könnte, wenn es visualisiert wird, Informationen über Variablen liefern, die Ihnen helfen könnten, Ihre theoretischen klinischen Studien zu organisieren.
+Im zu dieser Lektion gehörenden _notebook.ipynb_-Datei lösche alle Zellen, indem du auf das „Mülleimer“-Symbol klickst.
-✅ Es gibt viele Arten von Regressionsmethoden, und welche Sie wählen, hängt von der Frage ab, die Sie beantworten möchten. Wenn Sie beispielsweise die wahrscheinliche Größe einer Person in einem bestimmten Alter vorhersagen möchten, würden Sie lineare Regression verwenden, da Sie einen **numerischen Wert** suchen. Wenn Sie hingegen herausfinden möchten, ob eine bestimmte Küche als vegan betrachtet werden sollte oder nicht, suchen Sie nach einer **Kategorisierung** und würden logistische Regression verwenden. Sie werden später mehr über logistische Regression lernen. Überlegen Sie sich einige Fragen, die Sie an Daten stellen könnten, und welche dieser Methoden dafür besser geeignet wäre.
+In diesem Abschnitt wirst du mit einem kleinen Datensatz über Diabetes arbeiten, der zu Lernzwecken in Scikit-learn eingebaut ist. Stell dir vor, du möchtest eine Behandlung für Diabetiker testen. Machine-Learning-Modelle könnten dir helfen zu bestimmen, welche Patienten besser auf die Behandlung reagieren würden, basierend auf Kombinationen von Variablen. Schon ein sehr einfaches Regressionsmodell kann, wenn es visualisiert wird, Informationen über Variablen zeigen, die bei der Organisation potenzieller klinischer Studien helfen.
-Lassen Sie uns mit dieser Aufgabe beginnen.
+✅ Es gibt viele Arten von Regressionsmethoden, und welche du auswählst, hängt von der Frage ab, die du beantworten möchtest. Möchtest du die wahrscheinliche Körpergröße einer Person eines bestimmten Alters vorhersagen, würdest du lineare Regression verwenden, da du einen **numerischen Wert** suchst. Wenn du herausfinden möchtest, ob eine Art von Küche als vegan eingestuft werden sollte oder nicht, suchst du eine **Kategorie-Zuordnung** und würdest logistische Regression verwenden. Logistische Regression lernst du später kennen. Überlege dir ein paar Fragen, die du an Daten stellen kannst, und welche dieser Methoden dafür passender wäre.
+
+Lass uns mit dieser Aufgabe beginnen.
### Bibliotheken importieren
Für diese Aufgabe importieren wir einige Bibliotheken:
-- **matplotlib**. Ein nützliches [Grafikwerkzeug](https://matplotlib.org/), das wir verwenden, um ein Liniendiagramm zu erstellen.
-- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) ist eine nützliche Bibliothek für den Umgang mit numerischen Daten in Python.
-- **sklearn**. Dies ist die [Scikit-learn](https://scikit-learn.org/stable/user_guide.html)-Bibliothek.
+- **matplotlib**. Es ist ein nützliches [Graphing-Tool](https://matplotlib.org/) und wird verwendet, um ein Liniendiagramm zu erstellen.
+- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) ist eine nützliche Bibliothek zur Verarbeitung numerischer Daten in Python.
+- **sklearn**. Das ist die [Scikit-learn](https://scikit-learn.org/stable/user_guide.html)-Bibliothek.
-Importieren Sie einige Bibliotheken, um Ihre Aufgaben zu unterstützen.
+Importiere einige Bibliotheken, die dir bei deinen Aufgaben helfen.
-1. Fügen Sie die Importe hinzu, indem Sie den folgenden Code eingeben:
+1. Füge die Importe ein, indem du den folgenden Code eingibst:
```python
import matplotlib.pyplot as plt
@@ -122,26 +123,26 @@ Importieren Sie einige Bibliotheken, um Ihre Aufgaben zu unterstützen.
from sklearn import datasets, linear_model, model_selection
```
- Oben importieren Sie `matplotlib`, `numpy` und `datasets`, `linear_model` sowie `model_selection` aus `sklearn`. `model_selection` wird verwendet, um Daten in Trainings- und Testsets aufzuteilen.
+Oben importierst du `matplotlib`, `numpy` und du importierst `datasets`, `linear_model` und `model_selection` von `sklearn`. `model_selection` wird zum Aufteilen der Daten in Trainings- und Testsets verwendet.
### Der Diabetes-Datensatz
-Der integrierte [Diabetes-Datensatz](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) enthält 442 Datenproben zu Diabetes mit 10 Merkmalvariablen, darunter:
+Der eingebaute [Diabetes-Datensatz](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) enthält 442 Datensätze rund um Diabetes mit 10 Merkmalvariablen, von denen einige sind:
- age: Alter in Jahren
- bmi: Body-Mass-Index
-- bp: Durchschnittlicher Blutdruck
-- s1 tc: T-Zellen (eine Art von weißen Blutkörperchen)
+- bp: durchschnittlicher Blutdruck
+- s1 tc: T-Zellen (eine Art weiße Blutzellen)
-✅ Dieser Datensatz enthält das Konzept von "Geschlecht" als Merkmalvariable, das für die Forschung zu Diabetes wichtig ist. Viele medizinische Datensätze enthalten diese Art von binärer Klassifikation. Überlegen Sie, wie solche Kategorisierungen bestimmte Teile der Bevölkerung von Behandlungen ausschließen könnten.
+✅ Dieser Datensatz enthält das Merkmal „sex“ (Geschlecht), das in der Diabetesforschung eine wichtige Rolle spielt. Viele medizinische Datensätze enthalten diese Art der binären Klassifikation. Überlege kurz, wie solche Kategorisierungen bestimmte Bevölkerungsgruppen von Behandlungen ausschließen könnten.
-Laden Sie nun die X- und y-Daten.
+Lade jetzt die X- und y-Daten.
-> 🎓 Denken Sie daran, dass dies überwachtes Lernen ist und wir ein benanntes 'y'-Ziel benötigen.
+> 🎓 Denke daran, dass dies überwachtes Lernen ist und wir ein benanntes Ziel „y“ brauchen.
-In einer neuen Codezelle laden Sie den Diabetes-Datensatz, indem Sie `load_diabetes()` aufrufen. Der Eingabeparameter `return_X_y=True` signalisiert, dass `X` eine Datenmatrix und `y` das Regressionsziel sein wird.
+Lade den Diabetes-Datensatz in eine neue Codezelle, indem du `load_diabetes()` aufrufst. Der Parameter `return_X_y=True` gibt an, dass `X` eine Datenmatrix und `y` das Regressionsziel ist.
-1. Fügen Sie einige Print-Befehle hinzu, um die Form der Datenmatrix und ihr erstes Element anzuzeigen:
+1. Füge ein paar print-Befehle ein, um die Form der Datenmatrix und ihr erstes Element anzuzeigen:
```python
X, y = datasets.load_diabetes(return_X_y=True)
@@ -149,9 +150,9 @@ In einer neuen Codezelle laden Sie den Diabetes-Datensatz, indem Sie `load_diabe
print(X[0])
```
- Was Sie als Antwort erhalten, ist ein Tupel. Sie weisen die beiden ersten Werte des Tupels `X` und `y` zu. Erfahren Sie mehr über [Tupel](https://wikipedia.org/wiki/Tuple).
+Was du zurückbekommst, ist ein Tupel. Du weist die beiden ersten Werte des Tupels `X` und `y` zu. Erfahre mehr über [Tupel](https://wikipedia.org/wiki/Tuple).
- Sie können sehen, dass diese Daten 442 Elemente in Arrays mit 10 Elementen enthalten:
+Du kannst sehen, dass die Daten 442 Einträge enthalten, die in Arrays mit jeweils 10 Elementen geformt sind:
```text
(442, 10)
@@ -159,39 +160,39 @@ In einer neuen Codezelle laden Sie den Diabetes-Datensatz, indem Sie `load_diabe
-0.04340085 -0.00259226 0.01990842 -0.01764613]
```
- ✅ Denken Sie über die Beziehung zwischen den Daten und dem Regressionsziel nach. Lineare Regression sagt Beziehungen zwischen Merkmal X und Zielvariable y voraus. Können Sie das [Ziel](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) für den Diabetes-Datensatz in der Dokumentation finden? Was zeigt dieser Datensatz, wenn man das Ziel betrachtet?
+✅ Überlege dir, welche Beziehung zwischen den Daten und dem Regressionsziel besteht. Lineare Regression sagt Beziehungen zwischen Merkmalsvariablen X und Zielvariablen y voraus. Kannst du das [Ziel](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) für den Diabetes-Datensatz in der Dokumentation finden? Was zeigt dieser Datensatz mit dem Ziel?
-2. Wählen Sie als Nächstes einen Teil dieses Datensatzes aus, um ihn zu plotten, indem Sie die dritte Spalte des Datensatzes auswählen. Sie können dies tun, indem Sie den `:`-Operator verwenden, um alle Zeilen auszuwählen, und dann die dritte Spalte mit dem Index (2) auswählen. Sie können die Daten auch in ein 2D-Array umformen, wie es für das Plotten erforderlich ist, indem Sie `reshape(n_rows, n_columns)` verwenden. Wenn einer der Parameter -1 ist, wird die entsprechende Dimension automatisch berechnet.
+2. Wähle als nächstes einen Teil dieses Datensatzes aus, indem du die 3. Spalte auswählst. Du kannst dies mit dem Operator `:` machen, um alle Zeilen zu nehmen und dann mit dem Index (2) die 3. Spalte auszuwählen. Du kannst die Daten auch in ein 2D-Array umformen – wie es für eine Darstellung erforderlich ist – mit `reshape(n_rows, n_columns)`. Ist einer der Parameter -1, wird die entsprechende Dimension automatisch berechnet.
```python
X = X[:, 2]
X = X.reshape((-1,1))
```
- ✅ Drucken Sie die Daten jederzeit aus, um ihre Form zu überprüfen.
+✅ Drucke jederzeit die Daten aus, um ihre Form zu überprüfen.
-3. Jetzt, da Sie die Daten zum Plotten bereit haben, können Sie sehen, ob eine Maschine helfen kann, eine logische Trennung zwischen den Zahlen in diesem Datensatz zu bestimmen. Dazu müssen Sie sowohl die Daten (X) als auch das Ziel (y) in Test- und Trainingssets aufteilen. Scikit-learn bietet eine einfache Möglichkeit, dies zu tun; Sie können Ihre Testdaten an einem bestimmten Punkt aufteilen.
+3. Nun, da du Daten zum Plotten hast, kannst du prüfen, ob eine Maschine helfen kann, eine sinnvolle Trennung zwischen den Werten in diesem Datensatz zu finden. Dazu musst du sowohl die Daten (X) als auch das Ziel (y) in Test- und Trainingssets aufteilen. Scikit-learn hat dafür eine einfache Methode; du kannst deine Testdaten an einem bestimmten Punkt aufteilen.
```python
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33)
```
-4. Jetzt sind Sie bereit, Ihr Modell zu trainieren! Laden Sie das lineare Regressionsmodell und trainieren Sie es mit Ihren X- und y-Trainingssets, indem Sie `model.fit()` verwenden:
+4. Jetzt bist du bereit, dein Modell zu trainieren! Lade das lineare Regressionsmodell und trainiere es mit deinen X- und y-Trainingsdaten mit `model.fit()`:
```python
model = linear_model.LinearRegression()
model.fit(X_train, y_train)
```
- ✅ `model.fit()` ist eine Funktion, die Sie in vielen ML-Bibliotheken wie TensorFlow sehen werden.
+✅ `model.fit()` ist eine Funktion, die du in vielen ML-Bibliotheken wie TensorFlow sehen wirst.
-5. Erstellen Sie dann eine Vorhersage mit Testdaten, indem Sie die Funktion `predict()` verwenden. Diese wird verwendet, um die Linie zwischen den Datengruppen zu zeichnen.
+5. Erstelle als nächstes eine Vorhersage mit den Testdaten, indem du die Funktion `predict()` verwendest. Diese wird genutzt, um die Linie zwischen den Datengruppen zu zeichnen.
```python
y_pred = model.predict(X_test)
```
-6. Jetzt ist es an der Zeit, die Daten in einem Diagramm darzustellen. Matplotlib ist ein sehr nützliches Werkzeug für diese Aufgabe. Erstellen Sie ein Streudiagramm aller X- und y-Testdaten und verwenden Sie die Vorhersage, um eine Linie an der passendsten Stelle zwischen den Datengruppierungen des Modells zu zeichnen.
+6. Jetzt ist es Zeit, die Daten in einem Plot zu zeigen. Matplotlib ist dafür ein sehr nützliches Werkzeug. Erstelle ein Streudiagramm aller X- und y-Testdaten und verwende die Vorhersage, um eine Linie an der passendsten Stelle zwischen den Datenclustern des Modells zu zeichnen.
```python
plt.scatter(X_test, y_test, color='black')
@@ -202,23 +203,24 @@ In einer neuen Codezelle laden Sie den Diabetes-Datensatz, indem Sie `load_diabe
plt.show()
```
- 
-✅ Überlege ein wenig, was hier passiert. Eine gerade Linie verläuft durch viele kleine Datenpunkte, aber was genau macht sie? Kannst du erkennen, wie du diese Linie nutzen könntest, um vorherzusagen, wo ein neuer, unbekannter Datenpunkt in Bezug auf die y-Achse des Plots liegen sollte? Versuche, den praktischen Nutzen dieses Modells in Worte zu fassen.
+
-Herzlichen Glückwunsch, du hast dein erstes lineares Regressionsmodell erstellt, eine Vorhersage damit gemacht und es in einem Plot dargestellt!
----
-## 🚀Herausforderung
+ ✅ Denken Sie ein wenig darüber nach, was hier vor sich geht. Eine gerade Linie verläuft durch viele kleine Datenpunkte, aber was macht sie genau? Können Sie sehen, wie Sie diese Linie verwenden sollten, um zu prognostizieren, wo ein neuer, unbekannter Datenpunkt in Bezug auf die y-Achse des Diagramms passen sollte? Versuchen Sie, den praktischen Nutzen dieses Modells in Worte zu fassen.
-Plotte eine andere Variable aus diesem Datensatz. Hinweis: Bearbeite diese Zeile: `X = X[:,2]`. Angesichts des Ziels dieses Datensatzes, was kannst du über den Verlauf von Diabetes als Krankheit herausfinden?
+Herzlichen Glückwunsch, Sie haben Ihr erstes lineares Regressionsmodell erstellt, eine Vorhersage damit gemacht und diese in einem Diagramm dargestellt!
+
+---
+## 🚀 Herausforderung
+Stellen Sie eine andere Variable aus diesem Datensatz dar. Hinweis: Bearbeiten Sie diese Zeile: `X = X[:,2]`. Angesichts des Ziels dieses Datensatzes, was können Sie über den Verlauf von Diabetes als Krankheit herausfinden?
## [Quiz nach der Vorlesung](https://ff-quizzes.netlify.app/en/ml/)
-## Rückblick & Selbststudium
+## Wiederholung & Selbststudium
-In diesem Tutorial hast du mit einfacher linearer Regression gearbeitet, anstatt mit univariater oder multipler linearer Regression. Lies ein wenig über die Unterschiede zwischen diesen Methoden oder sieh dir [dieses Video](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) an.
+In diesem Tutorial haben Sie mit einfacher linearer Regression gearbeitet, statt mit univariater oder multipler linearer Regression. Lesen Sie etwas über die Unterschiede zwischen diesen Methoden oder schauen Sie sich [dieses Video](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) an.
-Lies mehr über das Konzept der Regression und denke darüber nach, welche Arten von Fragen mit dieser Technik beantwortet werden können. Nimm an [diesem Tutorial](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) teil, um dein Verständnis zu vertiefen.
+Lesen Sie mehr über das Konzept der Regression und denken Sie darüber nach, welche Arten von Fragen mit dieser Technik beantwortet werden können. Machen Sie dieses [Tutorial](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott), um Ihr Verständnis zu vertiefen.
## Aufgabe
@@ -226,5 +228,7 @@ Lies mehr über das Konzept der Regression und denke darüber nach, welche Arten
---
-**Haftungsausschluss**:
-Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, weisen wir darauf hin, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben.
\ No newline at end of file
+
+**Haftungsausschluss**:
+Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner Ursprungssprache gilt als maßgebliche Quelle. Bei kritischen Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen.
+
\ No newline at end of file
diff --git a/translations/de/2-Regression/2-Data/README.md b/translations/de/2-Regression/2-Data/README.md
index 1df9bbabf..2afe553dc 100644
--- a/translations/de/2-Regression/2-Data/README.md
+++ b/translations/de/2-Regression/2-Data/README.md
@@ -1,62 +1,62 @@
# Erstellen eines Regressionsmodells mit Scikit-learn: Daten vorbereiten und visualisieren
-
+
Infografik von [Dasani Madipalli](https://twitter.com/dasani_decoded)
-## [Quiz vor der Lektion](https://ff-quizzes.netlify.app/en/ml/)
+## [Vortragsquiz](https://ff-quizzes.netlify.app/en/ml/)
> ### [Diese Lektion ist auch in R verfügbar!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
## Einführung
-Nachdem Sie nun die notwendigen Werkzeuge eingerichtet haben, um mit dem Aufbau von Machine-Learning-Modellen in Scikit-learn zu beginnen, können Sie anfangen, Fragen an Ihre Daten zu stellen. Wenn Sie mit Daten arbeiten und ML-Lösungen anwenden, ist es entscheidend, die richtigen Fragen zu stellen, um das volle Potenzial Ihres Datensatzes auszuschöpfen.
+Jetzt, wo du mit den Werkzeugen eingerichtet bist, die du brauchst, um mit dem Aufbau von Machine-Learning-Modellen mit Scikit-learn zu beginnen, bist du bereit, Fragen an deine Daten zu stellen. Wenn du mit Daten arbeitest und ML-Lösungen anwendest, ist es sehr wichtig, zu verstehen, wie man die richtige Frage stellt, um das Potenzial deines Datensatzes richtig zu erschließen.
-In dieser Lektion lernen Sie:
+In dieser Lektion wirst du lernen:
-- Wie Sie Ihre Daten für den Modellaufbau vorbereiten.
-- Wie Sie Matplotlib für die Datenvisualisierung nutzen.
+- Wie du deine Daten für den Modellbau vorbereitest.
+- Wie du Matplotlib für die Datenvisualisierung verwendest.
+- Wie du Seaborn für ausdrucksvollere Datenvisualisierungen einsetzt.
-## Die richtigen Fragen an Ihre Daten stellen
+## Die richtige Frage an deine Daten stellen
-Die Frage, die Sie beantwortet haben möchten, bestimmt, welche Art von ML-Algorithmen Sie verwenden. Und die Qualität der Antwort hängt stark von der Beschaffenheit Ihrer Daten ab.
+Die Frage, die du beantwortet haben möchtest, bestimmt, welche Art von ML-Algorithmen du einsetzen wirst. Und die Qualität der Antwort hängt stark von der Beschaffenheit deiner Daten ab.
-Werfen Sie einen Blick auf die [Daten](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv), die für diese Lektion bereitgestellt wurden. Sie können diese .csv-Datei in VS Code öffnen. Ein kurzer Blick zeigt sofort, dass es Lücken gibt und eine Mischung aus Zeichenketten und numerischen Daten vorliegt. Es gibt auch eine seltsame Spalte namens 'Package', in der die Daten eine Mischung aus 'sacks', 'bins' und anderen Werten sind. Die Daten sind tatsächlich ein bisschen chaotisch.
+Schau dir die für diese Lektion bereitgestellten [Daten](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) an. Du kannst diese .csv-Datei in VS Code öffnen. Ein kurzer Blick zeigt sofort, dass es Lücken und eine Mischung aus Text- und numerischen Daten gibt. Es gibt auch eine merkwürdige Spalte namens „Package“, in der die Daten eine Mischung aus „sacks“, „bins“ und anderen Werten sind. Die Daten sind tatsächlich etwas chaotisch.
[](https://youtu.be/5qGjczWTrDQ "ML für Anfänger - Wie man einen Datensatz analysiert und bereinigt")
-> 🎥 Klicken Sie auf das Bild oben, um ein kurzes Video zur Vorbereitung der Daten für diese Lektion anzusehen.
+> 🎥 Klicke auf das obige Bild für ein kurzes Video, das die Vorbereitung der Daten für diese Lektion durchgeht.
-Es ist tatsächlich nicht sehr häufig, dass man einen Datensatz erhält, der vollständig bereit ist, um direkt ein ML-Modell zu erstellen. In dieser Lektion lernen Sie, wie Sie einen Rohdatensatz mit Standard-Python-Bibliotheken vorbereiten. Außerdem lernen Sie verschiedene Techniken zur Visualisierung der Daten kennen.
+Tatsächlich ist es nicht sehr üblich, einen Datensatz zu erhalten, der vollständig bereit ist, um sofort ein ML-Modell zu erstellen. In dieser Lektion lernst du, wie du einen Rohdatensatz mit Standard-Python-Bibliotheken vorbereitest. Du lernst auch verschiedene Techniken zur Visualisierung der Daten.
-## Fallstudie: 'Der Kürbismarkt'
+## Fallstudie: „Der Kürbismarkt“
-In diesem Ordner finden Sie eine .csv-Datei im Stammverzeichnis des `data`-Ordners namens [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv), die 1757 Zeilen mit Daten über den Kürbismarkt enthält, sortiert nach Städten. Dies sind Rohdaten, die aus den [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) des US-Landwirtschaftsministeriums extrahiert wurden.
+In diesem Ordner findest du eine .csv-Datei im Hauptordner `data` namens [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv), die 1757 Zeilen Daten über den Kürbismarkt enthält, sortiert nach Städten. Dies sind Rohdaten, die aus den [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) entnommen wurden, die vom United States Department of Agriculture herausgegeben werden.
### Daten vorbereiten
-Diese Daten sind gemeinfrei. Sie können in vielen separaten Dateien, nach Städten sortiert, von der USDA-Website heruntergeladen werden. Um zu vermeiden, dass zu viele separate Dateien vorliegen, haben wir alle Städtedaten in eine Tabelle zusammengeführt, sodass die Daten bereits etwas _vorbereitet_ wurden. Schauen wir uns die Daten nun genauer an.
+Diese Daten sind Gemeingut. Sie können in vielen einzelnen Dateien, jeweils pro Stadt, von der USDA-Website heruntergeladen werden. Um zu viele separate Dateien zu vermeiden, haben wir alle Stadtdaten in einem Tabellenblatt zusammengefasst, daher haben wir die Daten bereits etwas _vorbereitet_. Schauen wir uns nun die Daten genauer an.
-### Die Kürbis-Daten - erste Eindrücke
+### Die Kürbisdaten – erste Schlüsse
-Was fällt Ihnen an diesen Daten auf? Sie haben bereits gesehen, dass es eine Mischung aus Zeichenketten, Zahlen, Lücken und seltsamen Werten gibt, die Sie interpretieren müssen.
+Was fällt dir an diesen Daten auf? Du hast bereits gesehen, dass eine Mischung aus Texten, Zahlen, Leerstellen und merkwürdigen Werten besteht, die du verstehen musst.
-Welche Frage könnten Sie mit diesen Daten unter Verwendung einer Regressionsmethode stellen? Wie wäre es mit: "Den Preis eines Kürbisses für einen bestimmten Monat vorhersagen". Wenn Sie die Daten erneut betrachten, gibt es einige Änderungen, die Sie vornehmen müssen, um die für diese Aufgabe erforderliche Datenstruktur zu erstellen.
+Welche Frage kannst du mit einer Regressionsmethode an diese Daten stellen? Wie wäre es mit „Prognose des Preises eines Kürbisses zum Verkauf in einem bestimmten Monat“? Wenn man die Daten nochmal betrachtet, gibt es einige Änderungen, die du vornehmen musst, um die Datenstruktur für die Aufgabe zu erstellen.
+## Übung – Kürbisdaten analysieren
-## Übung - Analysieren der Kürbis-Daten
+Lass uns [Pandas](https://pandas.pydata.org/) verwenden (der Name steht für `Python Data Analysis`), ein sehr nützliches Werkzeug für die Datenaufbereitung, um diese Kürbisdaten zu analysieren und vorzubereiten.
-Verwenden wir [Pandas](https://pandas.pydata.org/), ein sehr nützliches Tool zur Datenanalyse, um diese Kürbis-Daten zu analysieren und vorzubereiten.
+### Zuerst: Fehlende Daten prüfen
-### Zuerst fehlende Daten überprüfen
+Du musst zuerst Schritte unternehmen, um nach fehlenden Daten zu suchen:
-Zunächst müssen Sie Schritte unternehmen, um fehlende Daten zu überprüfen:
+1. Wandle die Daten in ein Monatsformat um (das sind US-Daten, deshalb ist das Format `MM/DD/YYYY`).
+2. Extrahiere den Monat in eine neue Spalte.
-1. Konvertieren Sie die Daten in ein Monatsformat (es handelt sich um US-Daten, daher ist das Format `MM/DD/YYYY`).
-2. Extrahieren Sie den Monat in eine neue Spalte.
+Öffne die Datei _notebook.ipynb_ in Visual Studio Code und importiere die Tabelle in einen neuen Pandas DataFrame.
-Öffnen Sie die Datei _notebook.ipynb_ in Visual Studio Code und importieren Sie die Tabelle in ein neues Pandas-Dataframe.
-
-1. Verwenden Sie die Funktion `head()`, um die ersten fünf Zeilen anzuzeigen.
+1. Verwende die Funktion `head()`, um die ersten fünf Zeilen anzuzeigen.
```python
import pandas as pd
@@ -64,30 +64,30 @@ Zunächst müssen Sie Schritte unternehmen, um fehlende Daten zu überprüfen:
pumpkins.head()
```
- ✅ Welche Funktion würden Sie verwenden, um die letzten fünf Zeilen anzuzeigen?
+ ✅ Welche Funktion würdest du verwenden, um die letzten fünf Zeilen zu sehen?
-1. Überprüfen Sie, ob im aktuellen Dataframe fehlende Daten vorhanden sind:
+1. Prüfe, ob es fehlende Daten im aktuellen DataFrame gibt:
```python
pumpkins.isnull().sum()
```
- Es gibt fehlende Daten, aber möglicherweise sind diese für die aktuelle Aufgabe nicht relevant.
+ Es gibt fehlende Daten, aber vielleicht spielen sie für die aktuelle Aufgabe keine Rolle.
-1. Um Ihr Dataframe einfacher zu gestalten, wählen Sie nur die benötigten Spalten aus, indem Sie die Funktion `loc` verwenden, die aus dem ursprünglichen Dataframe eine Gruppe von Zeilen (als erster Parameter übergeben) und Spalten (als zweiter Parameter übergeben) extrahiert. Der Ausdruck `:` im folgenden Fall bedeutet "alle Zeilen".
+1. Um den DataFrame einfacher handhabbar zu machen, wähle nur die benötigten Spalten mit der `loc`-Funktion aus, die aus dem originalen DataFrame eine Gruppe von Zeilen (als erster Parameter) und Spalten (als zweiter Parameter) extrahiert. Der Ausdruck `:` bedeutet hier "alle Zeilen".
```python
columns_to_select = ['Package', 'Low Price', 'High Price', 'Date']
pumpkins = pumpkins.loc[:, columns_to_select]
```
-### Zweitens, den Durchschnittspreis eines Kürbisses bestimmen
+### Zweitens: Durchschnittspreis des Kürbisses bestimmen
-Überlegen Sie, wie Sie den Durchschnittspreis eines Kürbisses in einem bestimmten Monat bestimmen können. Welche Spalten würden Sie für diese Aufgabe auswählen? Hinweis: Sie benötigen 3 Spalten.
+Überlege, wie du den Durchschnittspreis eines Kürbisses in einem bestimmten Monat bestimmen kannst. Welche Spalten würdest du hierfür auswählen? Tipp: Du brauchst 3 Spalten.
-Lösung: Nehmen Sie den Durchschnitt der Spalten `Low Price` und `High Price`, um die neue Spalte `Price` zu füllen, und konvertieren Sie die Spalte `Date`, sodass nur der Monat angezeigt wird. Glücklicherweise gibt es laut der oben durchgeführten Überprüfung keine fehlenden Daten für Daten oder Preise.
+Lösung: Nimm den Durchschnitt der Spalten `Low Price` und `High Price`, um die neue Preis-Spalte zu füllen, und konvertiere die Datumsspalte so, dass nur der Monat angezeigt wird. Glücklicherweise gibt es laut der oben durchgeführten Prüfung keine fehlenden Daten bei Datum oder Preisen.
-1. Um den Durchschnitt zu berechnen, fügen Sie den folgenden Code hinzu:
+1. Um den Durchschnitt zu berechnen, füge folgenden Code hinzu:
```python
price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2
@@ -96,37 +96,37 @@ Lösung: Nehmen Sie den Durchschnitt der Spalten `Low Price` und `High Price`, u
```
- ✅ Sie können beliebige Daten mit `print(month)` überprüfen.
+ ✅ Du kannst jederzeit Daten zum Überprüfen mit `print(month)` ausgeben.
-2. Kopieren Sie nun Ihre konvertierten Daten in ein neues Pandas-Dataframe:
+2. Kopiere nun deine umgewandelten Daten in einen neuen Pandas DataFrame:
```python
new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price})
```
- Wenn Sie Ihr Dataframe ausgeben, sehen Sie einen sauberen, aufgeräumten Datensatz, auf dessen Grundlage Sie Ihr neues Regressionsmodell erstellen können.
+ Wenn du deinen DataFrame ausgibst, erhältst du einen sauberen, aufgeräumten Datensatz, auf dem du dein neues Regressionsmodell aufbauen kannst.
-### Aber Moment! Etwas ist hier seltsam
+### Aber Moment! Hier ist etwas Merkwürdiges
-Wenn Sie sich die Spalte `Package` ansehen, werden Kürbisse in vielen verschiedenen Konfigurationen verkauft. Einige werden in '1 1/9 bushel'-Maßen verkauft, andere in '1/2 bushel'-Maßen, einige pro Kürbis, einige pro Pfund und einige in großen Kisten mit unterschiedlichen Breiten.
+Wenn du dir die Spalte `Package` ansiehst, werden Kürbisse in verschiedenen Einheiten verkauft. Einige werden in „1 1/9 bushel“ Messungen verkauft, andere in „1/2 bushel“, einige pro Kürbis, einige pro Pfund, und einige in großen Kisten mit variierenden Breiten.
-> Kürbisse scheinen schwer konsistent zu wiegen
+> Kürbisse scheinen sehr schwer einheitlich zu wiegen zu sein
-Wenn man sich die Originaldaten ansieht, ist es interessant, dass alles mit `Unit of Sale` gleich 'EACH' oder 'PER BIN' auch den `Package`-Typ pro Zoll, pro Kiste oder 'each' hat. Kürbisse scheinen schwer konsistent zu wiegen, daher filtern wir sie, indem wir nur Kürbisse mit dem String 'bushel' in ihrer `Package`-Spalte auswählen.
+Wenn man die Originaldaten betrachtet, haben alle Zeilen mit `Unit of Sale` gleich 'EACH' oder 'PER BIN' auch bei der Spalte `Package` Werte wie per Inch, per Bin oder 'each'. Kürbisse sind sehr schwer einheitlich zu wiegen, daher filtern wir sie, indem wir nur Kürbisse auswählen, die den String „bushel“ in ihrer `Package`-Spalte enthalten.
-1. Fügen Sie einen Filter am Anfang der Datei unter dem ersten .csv-Import hinzu:
+1. Füge einen Filter oben in der Datei unter dem initialen .csv-Import hinzu:
```python
pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]
```
- Wenn Sie die Daten jetzt ausgeben, sehen Sie, dass Sie nur die etwa 415 Zeilen mit Daten erhalten, die Kürbisse nach dem Bushel enthalten.
+ Wenn du die Daten jetzt ausgibst, siehst du, dass du nur die etwa 415 Zeilen mit Kürbissen pro Bushel erhältst.
-### Aber Moment! Es gibt noch etwas zu tun
+### Aber Moment! Es gibt noch eine Sache zu tun
-Haben Sie bemerkt, dass die Bushel-Menge pro Zeile variiert? Sie müssen die Preise normalisieren, sodass Sie die Preise pro Bushel anzeigen. Führen Sie also einige Berechnungen durch, um dies zu standardisieren.
+Hast du bemerkt, dass die Bushel-Menge pro Zeile variiert? Du musst die Preise normalisieren, sodass die Preise pro Bushel angezeigt werden, also mache eine Berechnung zur Standardisierung.
-1. Fügen Sie diese Zeilen nach dem Block hinzu, der das `new_pumpkins`-Dataframe erstellt:
+1. Füge diese Zeilen nach dem Block hinzu, der den neuen DataFrame new_pumpkins erstellt:
```python
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9)
@@ -134,38 +134,38 @@ Haben Sie bemerkt, dass die Bushel-Menge pro Zeile variiert? Sie müssen die Pre
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2)
```
-✅ Laut [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) hängt das Gewicht eines Bushels von der Art des Produkts ab, da es sich um eine Volumenmessung handelt. "Ein Bushel Tomaten wiegt beispielsweise 56 Pfund... Blätter und Grünzeug nehmen mehr Platz mit weniger Gewicht ein, daher wiegt ein Bushel Spinat nur 20 Pfund." Das ist alles ziemlich kompliziert! Lassen Sie uns die Umrechnung von Bushel zu Pfund ignorieren und stattdessen den Preis pro Bushel berechnen. All diese Studien zu Bushels von Kürbissen zeigen jedoch, wie wichtig es ist, die Natur Ihrer Daten zu verstehen!
+✅ Laut [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) hängt das Gewicht eines Bushels von der Art des Erzeugnisses ab, da es sich um ein Volumenmaß handelt. „Ein Bushel Tomaten soll zum Beispiel 56 Pfund wiegen... Blätter und Grünes nehmen mehr Platz bei geringerer Masse ein, ein Bushel Spinat wiegt so nur 20 Pfund.“ Alles ziemlich kompliziert! Lass uns also auf eine Umrechnung von Bushel zu Pfund verzichten und stattdessen die Preise pro Bushel angeben. Diese Untersuchung der Bushel-Kürbisse zeigt jedoch, wie wichtig es ist, die Beschaffenheit der Daten zu verstehen!
-Nun können Sie die Preise pro Einheit basierend auf ihrer Bushel-Messung analysieren. Wenn Sie die Daten noch einmal ausgeben, sehen Sie, wie sie standardisiert wurden.
+Jetzt kannst du die Preise pro Einheit basierend auf ihrer Bushel-Messung analysieren. Wenn du die Daten noch einmal ausgibst, siehst du, wie sie standardisiert sind.
-✅ Haben Sie bemerkt, dass Kürbisse, die nach dem halben Bushel verkauft werden, sehr teuer sind? Können Sie herausfinden, warum? Hinweis: Kleine Kürbisse sind viel teurer als große, wahrscheinlich weil es viel mehr davon pro Bushel gibt, da ein großer hohler Kürbis viel Platz einnimmt.
+✅ Hast du bemerkt, dass Kürbisse, die im halben Bushel verkauft werden, sehr teuer sind? Kannst du herausfinden warum? Tipp: Kleine Kürbisse sind viel teurer als große, wahrscheinlich weil viel mehr davon in einen Bushel passen, im Gegensatz zu einem großen hohlen Pie-Kürbis, der ungenutzten Platz einnimmt.
## Visualisierungsstrategien
-Ein Teil der Aufgabe eines Datenwissenschaftlers besteht darin, die Qualität und Beschaffenheit der Daten, mit denen er arbeitet, zu demonstrieren. Dazu erstellen sie oft interessante Visualisierungen, wie Diagramme, Grafiken und Charts, die verschiedene Aspekte der Daten zeigen. Auf diese Weise können sie Beziehungen und Lücken visuell darstellen, die sonst schwer zu erkennen wären.
+Ein Teil der Rolle des Datenwissenschaftlers ist es, die Qualität und Beschaffenheit der Daten, mit denen er arbeitet, zu demonstrieren. Dazu erstellen sie oft interessante Visualisierungen oder Plots, Graphen und Diagramme, die verschiedene Aspekte der Daten zeigen. So können sie Beziehungen und Lücken visuell darstellen, die sonst schwer zu entdecken sind.
[](https://youtu.be/SbUkxH6IJo0 "ML für Anfänger - Wie man Daten mit Matplotlib visualisiert")
-> 🎥 Klicken Sie auf das Bild oben, um ein kurzes Video zur Visualisierung der Daten für diese Lektion anzusehen.
+> 🎥 Klicke auf das obige Bild für ein kurzes Video, das die Visualisierung der Daten für diese Lektion zeigt.
-Visualisierungen können auch dabei helfen, die am besten geeignete Machine-Learning-Technik für die Daten zu bestimmen. Ein Streudiagramm, das einer Linie zu folgen scheint, deutet beispielsweise darauf hin, dass die Daten gut für eine lineare Regression geeignet sind.
+Visualisierungen können auch helfen, die am besten geeignete Machine-Learning-Technik für die Daten zu bestimmen. Ein Streudiagramm, das einer Linie zu folgen scheint, zeigt zum Beispiel, dass die Daten gut für eine lineare Regression geeignet sein könnten.
-Eine Datenvisualisierungsbibliothek, die gut in Jupyter-Notebooks funktioniert, ist [Matplotlib](https://matplotlib.org/) (die Sie auch in der vorherigen Lektion gesehen haben).
+Eine Datenvisualisierungsbibliothek, die gut in Jupyter-Notebooks funktioniert, ist [Matplotlib](https://matplotlib.org/) (die du auch in der vorherigen Lektion gesehen hast).
-> Erhalten Sie mehr Erfahrung mit der Datenvisualisierung in [diesen Tutorials](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott).
+> Sammle mehr Erfahrung mit Datenvisualisierung in [diesen Tutorials](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott).
-## Übung - Experimentieren mit Matplotlib
+## Übung – Experimentiere mit Matplotlib
-Versuchen Sie, einige grundlegende Diagramme zu erstellen, um das neue Dataframe anzuzeigen, das Sie gerade erstellt haben. Was würde ein einfaches Liniendiagramm zeigen?
+Versuche, einige grundlegende Diagramme zu erstellen, um den neuen DataFrame, den du gerade erstellt hast, darzustellen. Was würde ein einfaches Liniendiagramm zeigen?
-1. Importieren Sie Matplotlib am Anfang der Datei, unter dem Pandas-Import:
+1. Importiere Matplotlib oben in der Datei, unter dem Pandas-Import:
```python
import matplotlib.pyplot as plt
```
-1. Führen Sie das gesamte Notebook erneut aus, um es zu aktualisieren.
-1. Fügen Sie am Ende des Notebooks eine Zelle hinzu, um die Daten als Box-Diagramm darzustellen:
+1. Führe das gesamte Notebook erneut aus, um es zu aktualisieren.
+1. Füge am Ende des Notebooks eine Zelle hinzu, um die Daten als Box-Plot darzustellen:
```python
price = new_pumpkins.Price
@@ -174,38 +174,113 @@ Versuchen Sie, einige grundlegende Diagramme zu erstellen, um das neue Dataframe
plt.show()
```
- 
+ 
- Ist dies ein nützliches Diagramm? Überrascht Sie etwas daran?
+ Ist das ein nützliches Diagramm? Überrasch dich etwas daran?
- Es ist nicht besonders nützlich, da es nur die Verteilung Ihrer Daten in einem bestimmten Monat anzeigt.
+ Es ist nicht besonders nützlich, da es nur deine Daten als Verteilung von Punkten in einem bestimmten Monat anzeigt.
-### Machen Sie es nützlich
+### Mach es nützlich
-Um Diagramme nützlich zu machen, müssen Sie die Daten in der Regel irgendwie gruppieren. Versuchen wir, ein Diagramm zu erstellen, bei dem die y-Achse die Monate zeigt und die Daten die Verteilung darstellen.
+Um Diagramme nützlich zu machen, muss man die Daten normalerweise irgendwie gruppieren. Lass uns versuchen, ein Diagramm zu erstellen, bei dem die y-Achse die Monate zeigt und die Daten die Verteilung demonstrieren.
-1. Fügen Sie eine Zelle hinzu, um ein gruppiertes Balkendiagramm zu erstellen:
+1. Füge eine Zelle hinzu, um ein gruppiertes Balkendiagramm zu erstellen:
```python
new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar')
plt.ylabel("Pumpkin Price")
```
- 
+ 
+
+ Das ist eine nützlichere Datenvisualisierung! Sie zeigt, dass die höchsten Preise für Kürbisse im September und Oktober auftreten. Entspricht das deinen Erwartungen? Warum oder warum nicht?
+
+## Übung – Experimentiere mit Seaborn
+
+Matplotlib ist mächtig, aber es braucht oft viel Code, um ein ausgefeiltes Diagramm zu erzeugen. [Seaborn](https://seaborn.pydata.org/) ist eine Bibliothek, die _auf_ Matplotlib aufbaut und für statistische Datenvisualisierung entwickelt wurde. Sie arbeitet direkt mit Pandas DataFrames, verwendet attraktive Standardstile und ermöglicht es, mit viel weniger Code informative Diagramme zu erstellen. Da Seaborn Matplotlib-Objekte zurückgibt, kannst du alles, was du über Matplotlib weißt, nutzen, um das Ergebnis weiter anzupassen.
+
+> Wenn du Seaborn noch nicht installiert hast, installiere es mit `pip install seaborn`.
+
+1. Importiere Seaborn oben im Notebook unter den anderen Imports. Es wird konventionell als `sns` importiert:
+
+ ```python
+ import seaborn as sns
+ ```
+
+### Streudiagramme zur Darstellung von Zusammenhängen
+
+Ein großer Teil der Datenexploration vor dem Modellaufbau ist die Suche nach _Zusammenhängen_ zwischen Variablen. Ein [Streudiagramm](https://en.wikipedia.org/wiki/Scatter_plot) ist dafür eines der besten Werkzeuge: Wenn die Punkte einer Linie folgen, können die beiden Variablen korreliert sein – das ist ein gutes Zeichen, dass ein lineares Regressionsmodell funktionieren könnte.
+
+1. Erstelle das Streudiagramm von Preis zu Monat wie zuvor, diesmal mit Seaborns [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) (Relationsdiagramm), das direkt mit den DataFrame-Spalten arbeitet:
+
+ ```python
+ sns.relplot(x="Price", y="Month", data=new_pumpkins)
+ ```
+
+ 
+
+ Beachte, wie du die _Spaltennamen_ und den DataFrame übergibst, und Seaborn kümmert sich um die Achsenbeschriftungen.
+
+2. Du kannst zu einem Liniendiagramm wechseln, indem du `kind="line"` übergibst. Seaborn zeichnet sogar ein schattiertes Band, das das Konfidenzintervall um die Linie zeigt:
+
+ ```python
+ sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins)
+ ```
+
+ 
+
+ Diese Daten sind recht stark verrauscht, daher ist ein Liniendiagramm hier nicht die klarste Wahl – aber es zeigt, wie leicht du Diagrammtypen in Seaborn ändern kannst.
+
+### Balkendiagramme zur Darstellung von Verteilungen
+
+
+Früher hast du die Daten manuell gruppiert, um mit Matplotlib ein Balkendiagramm zu erstellen. Seaborns [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) (kategorische Darstellung) kann die Gruppierung und Aggregation für dich übernehmen. Standardmäßig zeigt `kind="bar"` den Mittelwert jeder Kategorie zusammen mit einer schwarzen Linie, die das Konfidenzintervall anzeigt.
+
+1. Erstelle ein Balkendiagramm des durchschnittlichen Preises pro Monat:
+
+ ```python
+ sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar")
+ ```
+
+ 
+
+ Dies bestätigt, was du mit Matplotlib gesehen hast — die Preise erreichen ihren Höhepunkt um September und Oktober — aber Seaborn visualisiert auch, wie stark der Preis innerhalb jedes Monats _variiert_.
+
+### Heatmaps zur Darstellung von Korrelationen
+
+Scatterplots vergleichen jeweils zwei Variablen. Wenn du mehrere numerische Spalten hast, ermöglicht dir eine [Heatmap](https://de.wikipedia.org/wiki/Heatmap) die Stärke der Beziehung zwischen _jedem_ Paar von Spalten auf einmal zu sehen. Dies ist eine gängige Methode, um zu erkennen, welche Merkmale am meisten korreliert sind, bevor du entscheidest, was du in ein Modell einspeist (und dieselbe Art von Diagramm wird später verwendet, um Verwechslungsmatrizen bei Klassifikationen darzustellen).
+
+1. Erstelle mit Pandas eine Korrelationsmatrix, und zeichne sie dann mit Seaborns [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html). Die Option `annot=True` druckt die Korrelationswerte in jede Zelle:
+
+ ```python
+ correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()
+ sns.heatmap(correlations, annot=True, cmap="coolwarm")
+ ```
+
+ 
+
+ Werte nahe bei `1` (oder `-1`) bedeuten, dass die Spalten stark _linear_ korreliert sind. Beachte, wie `Low Price` und `High Price` fast perfekt korreliert sind. `Month` hingegen zeigt nur eine schwache lineare Korrelation mit dem Preis — obwohl das Balkendiagramm oben einen klaren saisonalen Höhepunkt im September und Oktober aufzeigte. Das ist eine wichtige Erkenntnis: der Korrelationskoeffizient misst nur _geradlinige_ Zusammenhänge, daher können saisonale oder anderweitig nicht-lineare Muster übersehen werden. ✅ Warum ist es nützlich, sowohl eine Heatmap als auch Diagramme wie das Balkendiagramm anzuschauen, bevor man entscheidet, welche Spalten man verwendet?
+
+### Matplotlib oder Seaborn?
+
+Beide Bibliotheken sind es wert, sie zu kennen:
+
+- **Matplotlib** bietet dir eine feinkörnige Kontrolle über jedes Element eines Diagramms und ist die Grundlage, auf der fast jede andere Python-Plotting-Bibliothek aufbaut.
+- **Seaborn** stellt höherstufige Funktionen und attraktive Standardwerte für statistische Diagramme bereit, arbeitet direkt mit DataFrames und ist oft schneller für explorative Datenanalysen.
- Dies ist eine nützlichere Datenvisualisierung! Es scheint darauf hinzudeuten, dass die höchsten Preise für Kürbisse im September und Oktober auftreten. Entspricht das Ihrer Erwartung? Warum oder warum nicht?
+Ein üblicher Arbeitsablauf besteht darin, zunächst Seaborn zu verwenden, um deine Daten schnell zu erkunden, und dann zu Matplotlib zu wechseln, wenn du die Details anpassen musst.
---
-## 🚀 Herausforderung
+## 🚀Herausforderung
-Erforschen Sie die verschiedenen Arten von Visualisierungen, die Matplotlib bietet. Welche Arten sind am besten für Regressionsprobleme geeignet?
+Erkunde die verschiedenen Visualisierungstypen, die Matplotlib und Seaborn anbieten. Welche Typen eignen sich am besten für Regressionsprobleme?
-## [Quiz nach der Lektion](https://ff-quizzes.netlify.app/en/ml/)
+## [Nachvorlesungs-Quiz](https://ff-quizzes.netlify.app/en/ml/)
## Rückblick & Selbststudium
-Schauen Sie sich die vielen Möglichkeiten zur Datenvisualisierung an. Erstellen Sie eine Liste der verschiedenen verfügbaren Bibliotheken und notieren Sie, welche für bestimmte Aufgaben am besten geeignet sind, z. B. 2D-Visualisierungen vs. 3D-Visualisierungen. Was entdecken Sie?
+Schau dir die vielen Möglichkeiten an, Daten zu visualisieren. Erstelle eine Liste der verfügbaren Bibliotheken und notiere, welche am besten für bestimmte Aufgaben geeignet sind, zum Beispiel 2D-Visualisierungen vs. 3D-Visualisierungen. Was entdeckst du?
## Aufgabe
@@ -213,5 +288,7 @@ Schauen Sie sich die vielen Möglichkeiten zur Datenvisualisierung an. Erstellen
---
-**Haftungsausschluss**:
-Dieses Dokument wurde mithilfe des KI-Übersetzungsdienstes [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, weisen wir darauf hin, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben.
\ No newline at end of file
+
+**Haftungsausschluss**:
+Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner Ursprungssprache gilt als maßgebliche Quelle. Bei kritischen Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen.
+
\ No newline at end of file
diff --git a/translations/de/2-Regression/2-Data/solution/notebook.ipynb b/translations/de/2-Regression/2-Data/solution/notebook.ipynb
index 80cfec8e5..27576cbb9 100644
--- a/translations/de/2-Regression/2-Data/solution/notebook.ipynb
+++ b/translations/de/2-Regression/2-Data/solution/notebook.ipynb
@@ -3,7 +3,9 @@
{
"cell_type": "markdown",
"metadata": {},
- "source": []
+ "source": [
+ "## Lineare Regression für Kürbisse - Lektion 2\n"
+ ]
},
{
"cell_type": "code",
@@ -220,6 +222,7 @@
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
"pumpkins = pd.read_csv('../../data/US-pumpkins.csv')\n",
"\n",
"pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]\n",
@@ -383,18 +386,78 @@
"plt.ylabel(\"Pumpkin Price\")"
]
},
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Visualisieren mit Seaborn\n",
+ "\n",
+ "[Seaborn](https://seaborn.pydata.org/) baut auf Matplotlib auf und arbeitet direkt mit DataFrames, wodurch es schnell möglich ist, attraktive statistische Diagramme mit sehr wenig Code zu erstellen.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Streudiagramme zur Darstellung von Beziehungen\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", kind=\"line\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Balkendiagramme zur Veranschaulichung von Verteilungen\n"
+ ]
+ },
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
- "source": []
+ "source": [
+ "sns.catplot(x=\"Month\", y=\"Price\", data=new_pumpkins, kind=\"bar\")"
+ ]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "\n---\n\n**Haftungsausschluss**: \nDieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, weisen wir darauf hin, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben.\n"
+ "### Heatmaps zur Darstellung von Korrelationen\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()\n",
+ "sns.heatmap(correlations, annot=True, cmap=\"coolwarm\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "---\n\n\n**Haftungsausschluss**:\nDieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner Ursprungssprache gilt als maßgebliche Quelle. Bei kritischen Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen.\n\n"
]
}
],
@@ -424,13 +487,7 @@
"hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d"
}
},
- "orig_nbformat": 2,
- "coopTranslator": {
- "original_hash": "95726f0b8283628d5356a4f8eb8b4b76",
- "translation_date": "2025-09-04T01:36:47+00:00",
- "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
- "language_code": "de"
- }
+ "orig_nbformat": 2
},
"nbformat": 4,
"nbformat_minor": 2
diff --git a/translations/de/8-Reinforcement/1-QLearning/README.md b/translations/de/8-Reinforcement/1-QLearning/README.md
index 8a5b31f73..af45a82ca 100644
--- a/translations/de/8-Reinforcement/1-QLearning/README.md
+++ b/translations/de/8-Reinforcement/1-QLearning/README.md
@@ -1,47 +1,47 @@
# Einführung in Reinforcement Learning und Q-Learning
-
+
> Sketchnote von [Tomomi Imura](https://www.twitter.com/girlie_mac)
-Reinforcement Learning umfasst drei wichtige Konzepte: den Agenten, einige Zustände und eine Menge von Aktionen pro Zustand. Indem der Agent in einem bestimmten Zustand eine Aktion ausführt, erhält er eine Belohnung. Stellen Sie sich erneut das Computerspiel Super Mario vor. Sie sind Mario, befinden sich in einem Level und stehen am Rand einer Klippe. Über Ihnen schwebt eine Münze. Sie, als Mario, in einem Level, an einer bestimmten Position ... das ist Ihr Zustand. Wenn Sie einen Schritt nach rechts machen (eine Aktion), fallen Sie über die Klippe, was Ihnen eine niedrige Punktzahl einbringt. Drücken Sie jedoch die Sprungtaste, können Sie eine Münze einsammeln und bleiben am Leben. Das ist ein positives Ergebnis und sollte mit einer positiven Punktzahl belohnt werden.
+Reinforcement Learning umfasst drei wichtige Konzepte: den Agenten, einige Zustände und eine Menge von Aktionen pro Zustand. Durch das Ausführen einer Aktion in einem bestimmten Zustand erhält der Agent eine Belohnung. Stellen Sie sich wieder das Computerspiel Super Mario vor. Sie sind Mario, Sie befinden sich in einem Spiellevel, stehen neben einer Klippe. Über Ihnen ist eine Münze. Sie als Mario, in einem Spiellevel, an einer bestimmten Position ... das ist Ihr Zustand. Einen Schritt nach rechts zu gehen (eine Aktion) würde Sie über die Kante führen und das würde Ihnen eine niedrige Punktzahl geben. Der Sprung-Button zu drücken würde Ihnen jedoch einen Punkt bringen und Sie würden am Leben bleiben. Das ist ein positives Ergebnis, das Ihnen eine positive Punktzahl geben sollte.
-Mit Reinforcement Learning und einem Simulator (dem Spiel) können Sie lernen, wie Sie das Spiel spielen, um die Belohnung zu maximieren, also am Leben zu bleiben und so viele Punkte wie möglich zu sammeln.
+Mit Hilfe von Reinforcement Learning und einem Simulator (dem Spiel) können Sie lernen, wie man das Spiel spielt, um die Belohnung zu maximieren, nämlich am Leben zu bleiben und so viele Punkte wie möglich zu erzielen.
[](https://www.youtube.com/watch?v=lDq_en8RNOo)
-> 🎥 Klicken Sie auf das Bild oben, um Dmitry über Reinforcement Learning sprechen zu hören.
+> 🎥 Klicken Sie auf das obige Bild, um Dmitry über Reinforcement Learning sprechen zu hören
-## [Quiz vor der Lektion](https://ff-quizzes.netlify.app/en/ml/)
+## [Vorlesungsquiz](https://ff-quizzes.netlify.app/en/ml/)
## Voraussetzungen und Einrichtung
-In dieser Lektion werden wir mit etwas Python-Code experimentieren. Sie sollten in der Lage sein, den Jupyter-Notebook-Code aus dieser Lektion entweder auf Ihrem Computer oder in der Cloud auszuführen.
+In dieser Lektion werden wir mit etwas Code in Python experimentieren. Sie sollten in der Lage sein, den Jupyter Notebook-Code aus dieser Lektion entweder auf Ihrem Computer oder irgendwo in der Cloud auszuführen.
-Sie können [das Notebook zur Lektion](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) öffnen und die Lektion Schritt für Schritt durchgehen.
+Sie können [das Lektion-Notebook](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) öffnen und diese Lektion durchgehen, um zu bauen.
-> **Hinweis:** Wenn Sie diesen Code aus der Cloud öffnen, müssen Sie auch die Datei [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) abrufen, die im Notebook-Code verwendet wird. Fügen Sie sie in dasselbe Verzeichnis wie das Notebook ein.
+> **Hinweis:** Wenn Sie diesen Code aus der Cloud öffnen, müssen Sie auch die Datei [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) herunterladen, die im Notebook-Code verwendet wird. Fügen Sie sie in dasselbe Verzeichnis wie das Notebook ein.
## Einführung
-In dieser Lektion erkunden wir die Welt von **[Peter und der Wolf](https://de.wikipedia.org/wiki/Peter_und_der_Wolf)**, inspiriert von einem musikalischen Märchen des russischen Komponisten [Sergei Prokofjew](https://de.wikipedia.org/wiki/Sergei_Prokofjew). Wir verwenden **Reinforcement Learning**, um Peter seine Umgebung erkunden zu lassen, leckere Äpfel zu sammeln und dem Wolf auszuweichen.
+In dieser Lektion werden wir die Welt von **[Peter und der Wolf](https://de.wikipedia.org/wiki/Peter_und_der_Wolf)** erforschen, inspiriert von einem musikalischen Märchen des russischen Komponisten [Sergej Prokofjew](https://de.wikipedia.org/wiki/Sergej_Prokofjew). Wir werden **Reinforcement Learning** verwenden, um Peter seine Umgebung erkunden zu lassen, leckere Äpfel zu sammeln und die Begegnung mit dem Wolf zu vermeiden.
-**Reinforcement Learning** (RL) ist eine Lerntechnik, die es uns ermöglicht, das optimale Verhalten eines **Agenten** in einer bestimmten **Umgebung** durch viele Experimente zu erlernen. Ein Agent in dieser Umgebung sollte ein **Ziel** haben, das durch eine **Belohnungsfunktion** definiert ist.
+**Reinforcement Learning** (RL) ist eine Lerntechnik, mit der wir ein optimales Verhalten eines **Agenten** in einer bestimmten **Umgebung** durch viele Experimente erlernen können. Ein Agent in dieser Umgebung sollte ein **Ziel** haben, das durch eine **Belohnungsfunktion** definiert ist.
## Die Umgebung
-Der Einfachheit halber nehmen wir an, dass Peters Welt ein quadratisches Spielfeld der Größe `Breite` x `Höhe` ist, wie dieses:
+Zur Vereinfachung betrachten wir Peters Welt als quadratisches Spielfeld der Größe `width` x `height`, so wie hier:
-
+
Jede Zelle auf diesem Spielfeld kann entweder sein:
-* **Boden**, auf dem Peter und andere Wesen laufen können.
-* **Wasser**, auf dem man offensichtlich nicht laufen kann.
+* **Boden**, auf dem Peter und andere Kreaturen gehen können.
+* **Wasser**, auf dem man offensichtlich nicht gehen kann.
* ein **Baum** oder **Gras**, ein Ort, an dem man sich ausruhen kann.
-* ein **Apfel**, den Peter gerne finden würde, um sich zu ernähren.
+* ein **Apfel**, der etwas darstellt, das Peter gerne finden würde, um sich zu ernähren.
* ein **Wolf**, der gefährlich ist und gemieden werden sollte.
-Es gibt ein separates Python-Modul, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), das den Code für die Arbeit mit dieser Umgebung enthält. Da dieser Code nicht entscheidend für das Verständnis unserer Konzepte ist, importieren wir das Modul und verwenden es, um das Beispielbrett zu erstellen (Codeblock 1):
+Es gibt ein separates Python-Modul, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), das den Code für die Arbeit mit dieser Umgebung enthält. Da dieser Code für das Verständnis unserer Konzepte nicht wichtig ist, werden wir das Modul importieren und verwenden, um das Beispielbrett zu erstellen (Codeblock 1):
```python
from rlboard import *
@@ -52,15 +52,15 @@ m.randomize(seed=13)
m.plot()
```
-Dieser Code sollte ein Bild der Umgebung ausgeben, das dem oben gezeigten ähnelt.
+Dieser Code sollte ein Bild der Umgebung ähnlich dem oben genannten ausgeben.
## Aktionen und Strategie
-In unserem Beispiel besteht Peters Ziel darin, einen Apfel zu finden, während er dem Wolf und anderen Hindernissen ausweicht. Dazu kann er sich im Grunde umherbewegen, bis er einen Apfel findet.
+In unserem Beispiel wäre Peters Ziel, einen Apfel zu finden, während er den Wolf und andere Hindernisse vermeidet. Dazu kann er im Wesentlichen herumlaufen, bis er einen Apfel findet.
-An jeder Position kann er zwischen den folgenden Aktionen wählen: nach oben, nach unten, nach links und nach rechts.
+Deshalb kann er an jeder Position zwischen den folgenden Aktionen wählen: oben, unten, links und rechts.
-Wir definieren diese Aktionen als ein Wörterbuch und ordnen sie Paaren von entsprechenden Koordinatenänderungen zu. Zum Beispiel würde die Bewegung nach rechts (`R`) einem Paar `(1,0)` entsprechen. (Codeblock 2):
+Wir definieren diese Aktionen als ein Wörterbuch und ordnen sie Paaren entsprechender Koordinatenänderungen zu. Zum Beispiel würde das Bewegen nach rechts (`R`) einem Paar `(1,0)` entsprechen. (Codeblock 2):
```python
actions = { "U" : (0,-1), "D" : (0,1), "L" : (-1,0), "R" : (1,0) }
@@ -69,46 +69,46 @@ action_idx = { a : i for i,a in enumerate(actions.keys()) }
Zusammengefasst sind die Strategie und das Ziel dieses Szenarios wie folgt:
-- **Die Strategie** unseres Agenten (Peter) wird durch eine sogenannte **Policy** definiert. Eine Policy ist eine Funktion, die die Aktion in einem bestimmten Zustand zurückgibt. In unserem Fall wird der Zustand des Problems durch das Spielfeld einschließlich der aktuellen Position des Spielers dargestellt.
+- **Die Strategie**, unseres Agenten (Peter) wird durch eine sogenannte **Policy** definiert. Eine Policy ist eine Funktion, die in jedem Zustand die Aktion zurückgibt. In unserem Fall wird der Zustand des Problems durch das Spielfeld repräsentiert, einschließlich der aktuellen Position des Spielers.
-- **Das Ziel** des Reinforcement Learning ist es, schließlich eine gute Policy zu erlernen, die es uns ermöglicht, das Problem effizient zu lösen. Als Ausgangspunkt betrachten wir jedoch die einfachste Policy, die als **Random Walk** bezeichnet wird.
+- **Das Ziel** des Reinforcement Learning ist es schließlich, eine gute Policy zu lernen, die es uns ermöglicht, das Problem effizient zu lösen. Als Basis betrachten wir die einfachste Strategie, die **random walk** (zufälliger Spaziergang) genannt wird.
-## Random Walk
+## Zufälliger Spaziergang
-Lassen Sie uns zunächst unser Problem lösen, indem wir eine Random-Walk-Strategie implementieren. Beim Random Walk wählen wir zufällig die nächste Aktion aus den erlaubten Aktionen, bis wir den Apfel erreichen (Codeblock 3).
+Lassen Sie uns zuerst unser Problem lösen, indem wir eine Zufallsspagat-Strategie implementieren. Mit random walk wählen wir zufällig die nächste Aktion aus den erlaubten Aktionen, bis wir den Apfel erreichen (Codeblock 3).
-1. Implementieren Sie den Random Walk mit dem folgenden Code:
+1. Implementieren Sie den Zufallsspagat mit dem folgenden Code:
```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
+ n = 0 # Anzahl der Schritte
+ # Anfangsposition setzen
if start_position:
m.human = start_position
else:
m.random_start()
while True:
if m.at() == Board.Cell.apple:
- return n # success!
+ return n # Erfolg!
if m.at() in [Board.Cell.wolf, Board.Cell.water]:
- return -1 # eaten by wolf or drowned
+ return -1 # vom Wolf gefressen oder ertrunken
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
+ m.move(a) # mache den eigentlichen Zug
break
n+=1
walk(m,random_policy)
```
- Der Aufruf von `walk` sollte die Länge des entsprechenden Pfads zurückgeben, die von einem Lauf zum anderen variieren kann.
+ Der Aufruf von `walk` sollte die Länge des entsprechenden Pfades zurückgeben, die von Lauf zu Lauf variieren kann.
-1. Führen Sie das Walk-Experiment mehrmals durch (z. B. 100 Mal) und geben Sie die resultierenden Statistiken aus (Codeblock 4):
+1. Führen Sie das Spaziergang-Experiment mehrmals (z.B. 100) durch und geben Sie die Statistik aus (Codeblock 4):
```python
def print_statistics(policy):
@@ -125,17 +125,17 @@ Lassen Sie uns zunächst unser Problem lösen, indem wir eine Random-Walk-Strate
print_statistics(random_policy)
```
- Beachten Sie, dass die durchschnittliche Länge eines Pfads etwa 30-40 Schritte beträgt, was ziemlich viel ist, wenn man bedenkt, dass die durchschnittliche Entfernung zum nächsten Apfel etwa 5-6 Schritte beträgt.
+ Beachten Sie, dass die durchschnittliche Pfadlänge bei etwa 30-40 Schritten liegt, was relativ viel ist, wenn man bedenkt, dass die durchschnittliche Entfernung zum nächsten Apfel etwa 5-6 Schritte beträgt.
- Sie können auch sehen, wie sich Peter während des Random Walks bewegt:
+ Sie können auch sehen, wie Peters Bewegung während des Zufallsspaziergangs aussieht:
- 
+ 
## Belohnungsfunktion
-Um unsere Policy intelligenter zu machen, müssen wir verstehen, welche Züge "besser" sind als andere. Dazu müssen wir unser Ziel definieren.
+Um unsere Policy intelligenter zu machen, müssen wir verstehen, welche Bewegungen "besser" als andere sind. Dazu müssen wir unser Ziel definieren.
-Das Ziel kann in Form einer **Belohnungsfunktion** definiert werden, die für jeden Zustand einen Punktwert zurückgibt. Je höher die Zahl, desto besser die Belohnung. (Codeblock 5)
+Das Ziel kann durch eine **Belohnungsfunktion** definiert werden, die für jeden Zustand einen Bewertungswert zurückgibt. Je höher die Zahl, desto besser die Belohnungsfunktion. (Codeblock 5)
```python
move_reward = -0.1
@@ -154,39 +154,115 @@ def reward(m,pos=None):
return move_reward
```
-Eine interessante Eigenschaft von Belohnungsfunktionen ist, dass in den meisten Fällen *eine wesentliche Belohnung erst am Ende des Spiels gegeben wird*. Das bedeutet, dass unser Algorithmus irgendwie "gute" Schritte, die zu einer positiven Belohnung am Ende führen, speichern und deren Bedeutung erhöhen sollte. Ebenso sollten alle Züge, die zu schlechten Ergebnissen führen, entmutigt werden.
+Eine interessante Sache an Belohnungsfunktionen ist, dass uns in den meisten Fällen *nur am Ende des Spiels eine bedeutende Belohnung gegeben wird*. Das bedeutet, dass unser Algorithmus irgendwie „gute“ Schritte, die zu einer positiven Belohnung am Ende führen, merken und deren Bedeutung erhöhen sollte. Ebenso sollten alle Züge, die zu schlechten Ergebnissen führen, entmutigt werden.
## Q-Learning
-Ein Algorithmus, den wir hier besprechen werden, heißt **Q-Learning**. In diesem Algorithmus wird die Policy durch eine Funktion (oder eine Datenstruktur) definiert, die als **Q-Tabelle** bezeichnet wird. Sie zeichnet die "Güte" jeder Aktion in einem bestimmten Zustand auf.
+Ein Algorithmus, den wir hier besprechen werden, heißt **Q-Learning**. In diesem Algorithmus wird die Policy durch eine Funktion (oder Datenstruktur) namens **Q-Tabelle** definiert. Sie zeichnet die „Güte“ jeder Aktion in einem bestimmten Zustand auf.
-Die Q-Tabelle wird so genannt, weil es oft praktisch ist, sie als Tabelle oder mehrdimensionales Array darzustellen. Da unser Spielfeld die Dimensionen `Breite` x `Höhe` hat, können wir die Q-Tabelle mit einem numpy-Array der Form `Breite` x `Höhe` x `len(actions)` darstellen: (Codeblock 6)
+Sie heißt Q-Tabelle, weil es oft praktisch ist, sie als Tabelle oder mehrdimensionales Array darzustellen. Da unser Spielfeld die Dimensionen `width` x `height` hat, können wir die Q-Tabelle mit einem numpy-Array der Form `width` x `height` x `len(actions)` darstellen: (Codeblock 6)
```python
Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions)
```
-Beachten Sie, dass wir alle Werte der Q-Tabelle mit einem gleichen Wert initialisieren, in unserem Fall 0,25. Dies entspricht der "Random-Walk"-Policy, da alle Züge in jedem Zustand gleich gut sind. Wir können die Q-Tabelle an die `plot`-Funktion übergeben, um die Tabelle auf dem Spielfeld zu visualisieren: `m.plot(Q)`.
+Beachten Sie, dass wir alle Werte der Q-Tabelle mit dem gleichen Wert initialisieren, in unserem Fall - 0,25. Dies entspricht der „random walk“ Policy, da alle Züge in jedem Zustand gleich gut sind. Wir können die Q-Tabelle an die `plot` Funktion übergeben, um die Tabelle auf dem Spielfeld zu visualisieren: `m.plot(Q)`.
-
+
-In der Mitte jeder Zelle befindet sich ein "Pfeil", der die bevorzugte Bewegungsrichtung anzeigt. Da alle Richtungen gleich sind, wird ein Punkt angezeigt.
+In der Mitte jeder Zelle befindet sich ein „Pfeil“, der die bevorzugte Bewegungsrichtung anzeigt. Da alle Richtungen gleich sind, wird ein Punkt angezeigt.
-Nun müssen wir die Simulation ausführen, unsere Umgebung erkunden und eine bessere Verteilung der Q-Tabelle-Werte erlernen, die es uns ermöglicht, den Weg zum Apfel viel schneller zu finden.
+Jetzt müssen wir die Simulation ausführen, unsere Umgebung erkunden und eine bessere Verteilung der Q-Tabellenwerte erlernen, die es uns ermöglichen wird, den Weg zum Apfel viel schneller zu finden.
-## Essenz des Q-Learning: Bellman-Gleichung
+## Kern von Q-Learning: Bellman-Gleichung
-Sobald wir uns bewegen, hat jede Aktion eine entsprechende Belohnung, d. h. wir könnten theoretisch die nächste Aktion basierend auf der höchsten unmittelbaren Belohnung auswählen. In den meisten Zuständen wird der Zug jedoch nicht unser Ziel, den Apfel zu erreichen, erfüllen, und daher können wir nicht sofort entscheiden, welche Richtung besser ist.
+Sobald wir anfangen zu bewegen, hat jede Aktion eine entsprechende Belohnung, d.h. theoretisch könnten wir die nächste Aktion basierend auf der höchsten unmittelbaren Belohnung auswählen. Allerdings wird der Zug in den meisten Zuständen nicht unser Ziel erreichen, den Apfel zu finden, und deshalb können wir nicht sofort entscheiden, welche Richtung besser ist.
-> Denken Sie daran, dass nicht das unmittelbare Ergebnis zählt, sondern das Endergebnis, das wir am Ende der Simulation erhalten.
+> Denken Sie daran, dass nicht das unmittelbare Ergebnis zählt, sondern das endgültige Ergebnis, das wir am Ende der Simulation erhalten.
Um diese verzögerte Belohnung zu berücksichtigen, müssen wir die Prinzipien der **[dynamischen Programmierung](https://de.wikipedia.org/wiki/Dynamische_Programmierung)** verwenden, die es uns ermöglichen, unser Problem rekursiv zu betrachten.
-Angenommen, wir befinden uns jetzt im Zustand *s* und möchten zum nächsten Zustand *s'* wechseln. Indem wir dies tun, erhalten wir die unmittelbare Belohnung *r(s,a)*, die durch die Belohnungsfunktion definiert ist, plus eine zukünftige Belohnung. Wenn wir annehmen, dass unsere Q-Tabelle die "Attraktivität" jeder Aktion korrekt widerspiegelt, dann wählen wir im Zustand *s'* eine Aktion *a*, die dem maximalen Wert von *Q(s',a')* entspricht. Somit wird die bestmögliche zukünftige Belohnung, die wir im Zustand *s* erhalten könnten, durch `max`
+Angenommen, wir befinden uns jetzt im Zustand *s* und wollen in den nächsten Zustand *s'* übergehen. Dabei erhalten wir die unmittelbare Belohnung *r(s,a)*, definiert durch die Belohnungsfunktion, plus eine zukünftige Belohnung. Wenn wir annehmen, dass unsere Q-Tabelle korrekt die „Attraktivität“ jeder Aktion widerspiegelt, wählen wir im Zustand *s'* eine Aktion *a* aus, die dem maximalen Wert von *Q(s',a')* entspricht. Somit ist die bestmögliche zukünftige Belohnung, die wir im Zustand *s* erhalten könnten, definiert als `max`a'*Q(s',a')* (das Maximum hier wird über alle möglichen Aktionen *a'* im Zustand *s'* berechnet).
-## Überprüfung der Richtlinie
+Dies ergibt die **Bellman-Gleichung** zur Berechnung des Wertes der Q-Tabelle im Zustand *s* bei Aktion *a*:
-Da die Q-Tabelle die "Attraktivität" jeder Aktion in jedem Zustand auflistet, ist es recht einfach, sie zu nutzen, um eine effiziente Navigation in unserer Welt zu definieren. Im einfachsten Fall können wir die Aktion auswählen, die dem höchsten Wert in der Q-Tabelle entspricht: (Codeblock 9)
+
+
+Hier ist γ der sogenannte **Discount-Faktor**, der bestimmt, in welchem Maße Sie die aktuelle Belohnung der zukünftigen vorziehen oder umgekehrt bewerten sollten.
+
+## Lernalgorithmus
+
+Angesichts der obigen Gleichung können wir nun Pseudocode für unseren Lernalgorithmus schreiben:
+
+* Initialisiere Q-Tabelle Q mit gleichen Werten für alle Zustände und Aktionen
+* Setze Lernrate α ← 1
+* Wiederhole die Simulation viele Male
+ 1. Starte an einer zufälligen Position
+ 1. Wiederhole
+ 1. Wähle eine Aktion *a* im Zustand *s*
+ 2. Führe die Aktion aus, indem du in einen neuen Zustand *s'* wechselst
+ 3. Wenn Endbedingung des Spiels erreicht wird oder die Gesamtbelohnung zu niedrig ist - beende die Simulation
+ 4. Berechne die Belohnung *r* im neuen Zustand
+ 5. Aktualisiere die Q-Funktion gemäß Bellman-Gleichung: *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ maxa'Q(s',a'))*
+ 6. *s* ← *s'*
+ 7. Aktualisiere die Gesamtbelohnung und verringere α.
+
+## Ausnutzen vs. erkunden
+
+Im obigen Algorithmus haben wir nicht genau angegeben, wie wir bei Schritt 2.1 die Aktion auswählen sollen. Wenn wir die Aktion zufällig wählen, werden wir die Umgebung zufällig **erkunden** und es ist ziemlich wahrscheinlich, dass wir oft sterben und Bereiche erkunden, in die wir normalerweise nicht gehen würden. Eine alternative Herangehensweise wäre, die Q-Tabellenwerte, die wir bereits kennen, **auszunutzen** und somit die beste Aktion (mit höherem Q-Tabellenwert) im Zustand *s* zu wählen. Dies würde uns jedoch daran hindern, andere Zustände zu erkunden, und es ist wahrscheinlich, dass wir nicht die optimale Lösung finden.
+
+Deshalb ist der beste Ansatz, ein Gleichgewicht zwischen Erkundung und Ausnutzung zu finden. Dies kann erreicht werden, indem man die Aktion im Zustand *s* mit Wahrscheinlichkeiten proportional zu den Werten in der Q-Tabelle auswählt. Anfangs, wenn alle Q-Tabelle Werte gleich sind, entspricht dies einer zufälligen Auswahl, aber je mehr wir über unsere Umgebung lernen, desto wahrscheinlicher ist es, dass wir der optimalen Route folgen und gleichzeitig dem Agenten erlauben, ab und zu einen unerforschten Weg zu wählen.
+
+## Python-Implementierung
+
+Wir sind nun bereit, den Lernalgorithmus zu implementieren. Bevor wir das tun, benötigen wir auch eine Funktion, die beliebige Zahlen in der Q-Tabelle in einen Wahrscheinlichkeitsvektor für die entsprechenden Aktionen umwandelt.
+
+1. Erstellen Sie eine Funktion `probs()`:
+
+ ```python
+ def probs(v,eps=1e-4):
+ v = v-v.min()+eps
+ v = v/v.sum()
+ return v
+ ```
+
+ Wir fügen dem ursprünglichen Vektor einige `eps` hinzu, um eine Division durch 0 im Anfangsfall zu vermeiden, wenn alle Komponenten des Vektors identisch sind.
+
+Führen Sie den Lernalgorithmus für 5000 Experimente, auch **Epochen** genannt, aus: (Codeblock 8)
+```python
+ for epoch in range(5000):
+
+ # Startpunkt wählen
+ m.random_start()
+
+ # Beginnen Sie die Reise
+ n=0
+ cum_reward = 0
+ while True:
+ x,y = m.human
+ v = probs(Q[x,y])
+ a = random.choices(list(actions),weights=v)[0]
+ dpos = actions[a]
+ m.move(dpos,check_correctness=False) # Wir erlauben dem Spieler, sich außerhalb des Spielfelds zu bewegen, was die Folge beendet
+ r = reward(m)
+ cum_reward += r
+ if r==end_reward or cum_reward < -1000:
+ lpath.append(n)
+ break
+ alpha = np.exp(-n / 10e5)
+ gamma = 0.5
+ ai = action_idx[a]
+ Q[x,y,ai] = (1 - alpha) * Q[x,y,ai] + alpha * (r + gamma * Q[x+dpos[0], y+dpos[1]].max())
+ n+=1
+```
+
+Nach Ausführung dieses Algorithmus sollte die Q-Tabelle mit Werten aktualisiert sein, die die Attraktivität verschiedener Aktionen in jedem Schritt definieren. Wir können versuchen, die Q-Tabelle zu visualisieren, indem wir in jeder Zelle einen Vektor zeichnen, der in die gewünschte Bewegungsrichtung zeigt. Zur Vereinfachung zeichnen wir anstelle eines Pfeilkopfes einen kleinen Kreis.
+
+
+
+## Überprüfung der Policy
+
+Da die Q-Tabelle die „Attraktivität“ jeder Aktion in jedem Zustand auflistet, ist es recht einfach, sie zur Definition der effizienten Navigation in unserer Welt zu verwenden. Im einfachsten Fall können wir die Aktion auswählen, die dem höchsten Q-Tabellenwert entspricht: (Codeblock 9)
```python
def qpolicy_strict(m):
@@ -198,17 +274,18 @@ def qpolicy_strict(m):
walk(m,qpolicy_strict)
```
-> Wenn Sie den obigen Code mehrmals ausprobieren, werden Sie möglicherweise feststellen, dass er manchmal "hängt" und Sie die STOP-Taste im Notebook drücken müssen, um ihn zu unterbrechen. Dies passiert, weil es Situationen geben kann, in denen zwei Zustände sich gegenseitig in Bezug auf den optimalen Q-Wert "zeigen", wodurch der Agent zwischen diesen Zuständen endlos hin- und herwechselt.
+
+> Wenn du den oben stehenden Code mehrere Male ausprobierst, kann es vorkommen, dass er manchmal „hängen bleibt“ und du den STOP-Knopf im Notebook drücken musst, um ihn zu unterbrechen. Das passiert, weil es Situationen geben kann, in denen zwei Zustände sich in Bezug auf den optimalen Q-Wert „gegenseitig ansprechen“, sodass der Agent zwischen diesen Zuständen unendlich hin- und her wandert.
## 🚀Herausforderung
-> **Aufgabe 1:** Ändern Sie die Funktion `walk`, um die maximale Pfadlänge auf eine bestimmte Anzahl von Schritten (z. B. 100) zu begrenzen, und beobachten Sie, wie der obige Code diesen Wert von Zeit zu Zeit zurückgibt.
+> **Aufgabe 1:** Ändere die Funktion `walk` so ab, dass die maximale Pfadlänge auf eine bestimmte Anzahl von Schritten (zum Beispiel 100) begrenzt wird, und beobachte, dass der oben stehende Code von Zeit zu Zeit diesen Wert zurückgibt.
-> **Aufgabe 2:** Ändern Sie die Funktion `walk` so, dass sie nicht an Orte zurückkehrt, an denen sie zuvor bereits war. Dies verhindert, dass `walk` in einer Schleife hängen bleibt. Allerdings kann der Agent dennoch in einer Position "gefangen" sein, aus der er nicht entkommen kann.
+> **Aufgabe 2:** Ändere die Funktion `walk` so, dass sie nicht an Orte zurückkehrt, an denen sie bereits zuvor war. Das verhindert, dass `walk` in einer Schleife läuft, jedoch kann der Agent trotzdem an einem Ort „gefangen“ sein, aus dem er nicht entkommen kann.
## Navigation
-Eine bessere Navigationsstrategie wäre die, die wir während des Trainings verwendet haben, die Ausnutzung und Erkundung kombiniert. In dieser Strategie wählen wir jede Aktion mit einer bestimmten Wahrscheinlichkeit aus, die proportional zu den Werten in der Q-Tabelle ist. Diese Strategie kann dazu führen, dass der Agent zu einer Position zurückkehrt, die er bereits erkundet hat. Wie Sie jedoch aus dem untenstehenden Code sehen können, führt sie zu einem sehr kurzen durchschnittlichen Pfad zur gewünschten Position (denken Sie daran, dass `print_statistics` die Simulation 100 Mal ausführt): (Codeblock 10)
+Eine bessere Navigationsstrategie wäre die, die wir während des Trainings verwendet haben, und die Ausnutzung und Erkundung kombiniert. Bei dieser Strategie wählen wir jede Aktion mit einer gewissen Wahrscheinlichkeit, die proportional zu den Werten in der Q-Tabelle ist. Diese Strategie kann dazu führen, dass der Agent zu einer bereits erkundeten Position zurückkehrt, aber wie du im folgenden Code sehen kannst, führt sie zu einem sehr kurzen durchschnittlichen Pfad zur gewünschten Position (denk daran, dass `print_statistics` die Simulation 100 mal ausführt): (Codeblock 10)
```python
def qpolicy(m):
@@ -220,28 +297,32 @@ def qpolicy(m):
print_statistics(qpolicy)
```
-Nach Ausführung dieses Codes sollten Sie eine deutlich kürzere durchschnittliche Pfadlänge als zuvor erhalten, im Bereich von 3-6.
+Nachdem du diesen Code ausgeführt hast, solltest du eine viel kleinere durchschnittliche Pfadlänge als zuvor erhalten, etwa im Bereich von 3-6.
## Untersuchung des Lernprozesses
-Wie bereits erwähnt, ist der Lernprozess ein Gleichgewicht zwischen der Erkundung und der Nutzung des gewonnenen Wissens über die Struktur des Problemraums. Wir haben gesehen, dass die Ergebnisse des Lernens (die Fähigkeit, einem Agenten zu helfen, einen kurzen Weg zum Ziel zu finden) sich verbessert haben. Es ist jedoch auch interessant zu beobachten, wie sich die durchschnittliche Pfadlänge während des Lernprozesses verhält:
+Wie wir bereits erwähnt haben, ist der Lernprozess ein Gleichgewicht zwischen Erkundung und Ausnutzung des gewonnenen Wissens über die Struktur des Problemraums. Wir haben gesehen, dass sich die Lernergebnisse (die Fähigkeit, einem Agenten zu helfen, einen kurzen Weg zum Ziel zu finden) verbessert haben, aber es ist auch interessant zu beobachten, wie sich die durchschnittliche Pfadlänge während des Lernprozesses verhält:
+
+
-Die Erkenntnisse lassen sich wie folgt zusammenfassen:
+Die Erkenntnisse lassen sich zusammenfassen als:
-- **Durchschnittliche Pfadlänge nimmt zu**. Was wir hier sehen, ist, dass die durchschnittliche Pfadlänge zunächst zunimmt. Dies liegt wahrscheinlich daran, dass wir, wenn wir nichts über die Umgebung wissen, dazu neigen, in schlechten Zuständen, wie Wasser oder bei einem Wolf, gefangen zu werden. Wenn wir mehr lernen und dieses Wissen nutzen, können wir die Umgebung länger erkunden, wissen aber immer noch nicht genau, wo sich die Äpfel befinden.
+- **Die durchschnittliche Pfadlänge nimmt zu.** Was wir hier sehen, ist, dass zuerst die durchschnittliche Pfadlänge zunimmt. Wahrscheinlich liegt das daran, dass wir am Anfang nichts über die Umgebung wissen und daher wahrscheinlich in schlechten Zuständen stecken bleiben, etwa Wasser oder Wolf. Wenn wir mehr lernen und dieses Wissen anwenden, können wir die Umgebung länger erkunden, aber wir wissen noch nicht genau, wo die Äpfel sind.
-- **Pfadlänge nimmt ab, je mehr wir lernen**. Sobald wir genug gelernt haben, wird es für den Agenten einfacher, das Ziel zu erreichen, und die Pfadlänge beginnt abzunehmen. Wir sind jedoch weiterhin offen für Erkundungen, sodass wir oft vom besten Weg abweichen und neue Optionen erkunden, was den Pfad länger als optimal macht.
+- **Die Pfadlänge nimmt ab, wenn wir mehr lernen.** Sobald wir genug gelernt haben, wird es für den Agenten einfacher, das Ziel zu erreichen, und die Pfadlänge beginnt zu sinken. Wir bleiben jedoch offen für Erkundungen, weshalb wir oft vom besten Weg abweichen und neue Optionen prüfen, was den Weg länger als optimal macht.
-- **Länge nimmt abrupt zu**. Was wir auf diesem Diagramm ebenfalls beobachten, ist, dass die Länge an einem Punkt abrupt zunimmt. Dies zeigt die stochastische Natur des Prozesses und dass wir die Q-Tabellen-Koeffizienten durch Überschreiben mit neuen Werten "verderben" können. Dies sollte idealerweise minimiert werden, indem die Lernrate verringert wird (zum Beispiel passen wir gegen Ende des Trainings die Q-Tabellen-Werte nur noch geringfügig an).
+- **Die Länge nimmt plötzlich zu.** Was wir ebenfalls auf dem Diagramm beobachten, ist, dass die Länge an einem Punkt plötzlich stark angestiegen ist. Das zeigt die stochastische Natur des Prozesses und dass wir die Q-Tabellen-Koeffizienten gelegentlich „versauen“ können, indem wir sie mit neuen Werten überschreiben. Das sollte idealerweise durch Verringerung der Lernrate minimiert werden (beispielsweise passen wir gegen Ende des Trainings die Q-Tabellen-Werte nur noch mit kleinen Schritten an).
-Insgesamt ist es wichtig zu bedenken, dass der Erfolg und die Qualität des Lernprozesses stark von Parametern wie Lernrate, Abnahme der Lernrate und Diskontierungsfaktor abhängen. Diese werden oft als **Hyperparameter** bezeichnet, um sie von **Parametern** zu unterscheiden, die wir während des Trainings optimieren (zum Beispiel Q-Tabellen-Koeffizienten). Der Prozess, die besten Werte für die Hyperparameter zu finden, wird als **Hyperparameter-Optimierung** bezeichnet und verdient ein eigenes Thema.
+Insgesamt ist es wichtig zu bedenken, dass Erfolg und Qualität des Lernprozesses maßgeblich von Parametern abhängen, etwa Lernrate, Lernratenabnahme und Diskontfaktor. Diese werden oft als **Hyperparameter** bezeichnet, um sie von **Parametern** zu unterscheiden, die während des Trainings optimiert werden (zum Beispiel Q-Tabellen-Koeffizienten). Der Prozess, die besten Werte für Hyperparameter zu finden, heißt **Hyperparameter-Optimierung** und verdient ein eigenes Thema.
## [Quiz nach der Vorlesung](https://ff-quizzes.netlify.app/en/ml/)
-## Aufgabe
+## Aufgabe
[Eine realistischere Welt](assignment.md)
---
-**Haftungsausschluss**:
-Dieses Dokument wurde mithilfe des KI-Übersetzungsdienstes [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, weisen wir darauf hin, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben.
\ No newline at end of file
+
+**Haftungsausschluss**:
+Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner Ursprungssprache gilt als maßgebliche Quelle. Bei kritischen Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen.
+
\ No newline at end of file
diff --git a/translations/de/8-Reinforcement/2-Gym/README.md b/translations/de/8-Reinforcement/2-Gym/README.md
index 90d080829..07651b11e 100644
--- a/translations/de/8-Reinforcement/2-Gym/README.md
+++ b/translations/de/8-Reinforcement/2-Gym/README.md
@@ -1,12 +1,32 @@
+# CartPole Skating
+
+Das Problem, das wir in der vorherigen Lektion gelöst haben, mag wie ein Spielzeugproblem erscheinen, das in realen Szenarien nicht wirklich anwendbar ist. Das ist jedoch nicht der Fall, da viele reale Probleme dieses Szenario teilen – darunter das Spielen von Schach oder Go. Sie sind ähnlich, weil wir auch ein Brett mit bestimmten Regeln und einen **diskreten Zustand** haben.
+
+## [Vorlesungsvorquiz](https://ff-quizzes.netlify.app/en/ml/)
+
+## Einführung
+
+In dieser Lektion wenden wir die gleichen Prinzipien des Q-Learning auf ein Problem mit **kontinuierlichem Zustand** an, d.h. einem Zustand, der durch eine oder mehrere reelle Zahlen gegeben ist. Wir beschäftigen uns mit folgendem Problem:
+
+> **Problem**: Wenn Peter vor dem Wolf fliehen will, muss er sich schneller bewegen können. Wir werden sehen, wie Peter mit Q-Learning das Skaten lernen kann, insbesondere, wie man das Gleichgewicht hält.
+
+
+
+> Peter und seine Freunde sind kreativ, um vor dem Wolf zu entkommen! Bild von [Jen Looper](https://twitter.com/jenlooper)
+
+Wir verwenden eine vereinfachte Version des Balancierens, bekannt als **CartPole**-Problem. In der Cartpole-Welt haben wir einen horizontalen Schlitten, der sich nach links oder rechts bewegen kann, und das Ziel ist es, einen vertikalen Stab auf dem Schlitten zu balancieren.
+
+
+
## Voraussetzungen
-In dieser Lektion verwenden wir eine Bibliothek namens **OpenAI Gym**, um verschiedene **Umgebungen** zu simulieren. Du kannst den Code dieser Lektion lokal ausführen (z. B. in Visual Studio Code), wobei die Simulation in einem neuen Fenster geöffnet wird. Wenn du den Code online ausführst, musst du möglicherweise einige Anpassungen vornehmen, wie [hier](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7) beschrieben.
+In dieser Lektion verwenden wir eine Bibliothek namens **OpenAI Gym**, um verschiedene **Umgebungen** zu simulieren. Du kannst den Code dieser Lektion lokal ausführen (z.B. aus Visual Studio Code), in diesem Fall öffnet sich die Simulation in einem neuen Fenster. Wenn du den Code online ausführst, sind eventuell einige Anpassungen erforderlich, wie [hier](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7) beschrieben.
## OpenAI Gym
-In der vorherigen Lektion wurden die Spielregeln und der Zustand durch die `Board`-Klasse definiert, die wir selbst erstellt haben. Hier verwenden wir eine spezielle **Simulationsumgebung**, die die Physik hinter der balancierenden Stange simuliert. Eine der beliebtesten Simulationsumgebungen für das Training von Reinforcement-Learning-Algorithmen ist das [Gym](https://gym.openai.com/), das von [OpenAI](https://openai.com/) gepflegt wird. Mit diesem Gym können wir verschiedene **Umgebungen** erstellen, von einer CartPole-Simulation bis hin zu Atari-Spielen.
+In der vorherigen Lektion wurden die Spielregeln und der Zustand von der selbst definierten `Board`-Klasse angegeben. Hier verwenden wir eine spezielle **Simulationsumgebung**, die die Physik hinter dem balancierenden Stab simuliert. Eine der beliebtesten Simulationsumgebungen zum Trainieren von Reinforcement-Learning-Algorithmen heißt [Gym](https://gym.openai.com/), das von [OpenAI](https://openai.com/) gepflegt wird. Mit diesem Gym können wir verschiedene **Umgebungen** erstellen – von einer Cartpole-Simulation bis zu Atari-Spielen.
-> **Hinweis**: Weitere Umgebungen von OpenAI Gym findest du [hier](https://gym.openai.com/envs/#classic_control).
+> **Hinweis**: Andere verfügbare OpenAI Gym-Umgebungen findest du [hier](https://gym.openai.com/envs/#classic_control).
Zuerst installieren wir das Gym und importieren die benötigten Bibliotheken (Codeblock 1):
@@ -20,13 +40,13 @@ import numpy as np
import random
```
-## Übung - Initialisiere eine CartPole-Umgebung
+## Übung – Initialisiere eine Cartpole-Umgebung
-Um mit dem CartPole-Balancierproblem zu arbeiten, müssen wir die entsprechende Umgebung initialisieren. Jede Umgebung ist mit einem:
+Um mit dem Cartpole-Balancierproblem zu arbeiten, müssen wir die entsprechende Umgebung initialisieren. Jede Umgebung ist mit einem:
-- **Beobachtungsraum** verbunden, der die Struktur der Informationen definiert, die wir von der Umgebung erhalten. Beim CartPole-Problem erhalten wir die Position der Stange, die Geschwindigkeit und einige andere Werte.
+- **Beobachtungsraum** verknüpft, der die Struktur der Informationen definiert, die wir von der Umgebung erhalten. Für das Cartpole-Problem erhalten wir Position des Stabs, Geschwindigkeit und einige andere Werte.
-- **Aktionsraum**, der mögliche Aktionen definiert. In unserem Fall ist der Aktionsraum diskret und besteht aus zwei Aktionen - **links** und **rechts**. (Codeblock 2)
+- **Aktionsraum**, der mögliche Aktionen definiert. In unserem Fall ist der Aktionsraum diskret und besteht aus zwei Aktionen – **links** und **rechts**. (Codeblock 2)
1. Um zu initialisieren, gib den folgenden Code ein:
@@ -37,11 +57,11 @@ Um mit dem CartPole-Balancierproblem zu arbeiten, müssen wir die entsprechende
print(env.action_space.sample())
```
-Um zu sehen, wie die Umgebung funktioniert, führen wir eine kurze Simulation für 100 Schritte durch. Bei jedem Schritt geben wir eine der Aktionen vor - in dieser Simulation wählen wir zufällig eine Aktion aus dem `action_space`.
+Um zu sehen, wie die Umgebung funktioniert, führen wir eine kurze Simulation für 100 Schritte durch. Bei jedem Schritt geben wir eine der Aktionen vor – in dieser Simulation wählen wir die Aktion zufällig aus dem `action_space` aus.
-1. Führe den folgenden Code aus und sieh dir an, was passiert.
+1. Führe den folgenden Code aus und schau, was passiert.
- ✅ Denke daran, dass es bevorzugt wird, diesen Code in einer lokalen Python-Installation auszuführen! (Codeblock 3)
+ ✅ Es ist empfehlenswert, diesen Code in einer lokalen Python-Installation auszuführen! (Codeblock 3)
```python
env.reset()
@@ -54,9 +74,9 @@ Um zu sehen, wie die Umgebung funktioniert, führen wir eine kurze Simulation f
Du solltest etwas Ähnliches wie dieses Bild sehen:
- 
+ 
-1. Während der Simulation müssen wir Beobachtungen erhalten, um zu entscheiden, wie wir handeln sollen. Tatsächlich gibt die `step`-Funktion aktuelle Beobachtungen, eine Belohnungsfunktion und ein `done`-Flag zurück, das anzeigt, ob es sinnvoll ist, die Simulation fortzusetzen oder nicht: (Codeblock 4)
+1. Während der Simulation müssen wir Beobachtungen erhalten, um zu entscheiden, wie wir handeln. Die Schrittfunktion gibt tatsächlich aktuelle Beobachtungen, eine Belohnungsfunktion und das Done-Flag zurück, das anzeigt, ob es sinnvoll ist, die Simulation fortzusetzen oder nicht: (Codeblock 4)
```python
env.reset()
@@ -69,7 +89,7 @@ Um zu sehen, wie die Umgebung funktioniert, führen wir eine kurze Simulation f
env.close()
```
- Du wirst etwas Ähnliches wie dies in der Notebook-Ausgabe sehen:
+ Am Ende siehst du etwas Ähnliches in der Ausgabe des Notebooks:
```text
[ 0.03403272 -0.24301182 0.02669811 0.2895829 ] -> 1.0
@@ -82,36 +102,36 @@ Um zu sehen, wie die Umgebung funktioniert, führen wir eine kurze Simulation f
[ 0.17617249 0.35602306 -0.21873684 -0.90998894] -> 1.0
```
- Der Beobachtungsvektor, der bei jedem Schritt der Simulation zurückgegeben wird, enthält die folgenden Werte:
- - Position des Wagens
- - Geschwindigkeit des Wagens
- - Winkel der Stange
- - Rotationsrate der Stange
+ Der Beobachtungsvektor, der bei jedem Simulationsschritt zurückgegeben wird, enthält die folgenden Werte:
+ - Position des Schlittens
+ - Geschwindigkeit des Schlittens
+ - Winkel des Stabs
+ - Rotationsrate des Stabs
-1. Ermittle den minimalen und maximalen Wert dieser Zahlen: (Codeblock 5)
+1. Erhalte Min- und Max-Werte dieser Zahlen: (Codeblock 5)
```python
print(env.observation_space.low)
print(env.observation_space.high)
```
- Du wirst auch feststellen, dass der Belohnungswert bei jedem Simulationsschritt immer 1 ist. Das liegt daran, dass unser Ziel darin besteht, so lange wie möglich zu überleben, d. h. die Stange so lange wie möglich in einer einigermaßen vertikalen Position zu halten.
+ Du wirst auch bemerken, dass der Belohnungswert bei jedem Simulationsschritt immer 1 ist. Das liegt daran, dass unser Ziel ist, so lange wie möglich zu überleben, d.h. den Stab für die längste Zeit in einer einigermaßen vertikalen Position zu halten.
- ✅ Tatsächlich gilt die CartPole-Simulation als gelöst, wenn wir es schaffen, eine durchschnittliche Belohnung von 195 über 100 aufeinanderfolgende Versuche zu erreichen.
+ ✅ Tatsächlich gilt die CartPole-Simulation als gelöst, wenn wir eine durchschnittliche Belohnung von 195 über 100 aufeinanderfolgende Versuche erreichen.
## Zustandsdiskretisierung
-Beim Q-Learning müssen wir eine Q-Tabelle erstellen, die definiert, was in jedem Zustand zu tun ist. Um dies tun zu können, muss der Zustand **diskret** sein, genauer gesagt, er sollte eine endliche Anzahl diskreter Werte enthalten. Daher müssen wir unsere Beobachtungen irgendwie **diskretisieren**, indem wir sie auf eine endliche Menge von Zuständen abbilden.
+Im Q-Learning müssen wir eine Q-Tabelle erstellen, die definiert, was in jedem Zustand zu tun ist. Um dies tun zu können, muss der Zustand **diskret** sein, genauer gesagt, er sollte eine endliche Anzahl diskreter Werte enthalten. Deshalb müssen wir unsere Beobachtungen irgendwie **diskretisieren**, indem wir sie auf eine endliche Menge von Zuständen abbilden.
-Es gibt einige Möglichkeiten, dies zu tun:
+Es gibt einige Methoden, wie wir das tun können:
-- **In Bins aufteilen**. Wenn wir das Intervall eines bestimmten Wertes kennen, können wir dieses Intervall in eine Anzahl von **Bins** aufteilen und dann den Wert durch die Bin-Nummer ersetzen, zu der er gehört. Dies kann mit der numpy-Methode [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html) durchgeführt werden. In diesem Fall kennen wir die Zustandsgröße genau, da sie von der Anzahl der Bins abhängt, die wir für die Digitalisierung auswählen.
+- **In Bins unterteilen**. Wenn wir das Intervall eines bestimmten Werts kennen, können wir dieses Intervall in mehrere **Bins** unterteilen und dann den Wert durch die Bin-Nummer ersetzen, zu der er gehört. Dies kann mit der numpy-Methode [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html) erfolgen. So wissen wir genau die Größe des Zustands, da sie von der Anzahl der Bins abhängt, die wir für die Digitalisierung auswählen.
+
+✅ Wir können lineare Interpolation verwenden, um Werte auf ein endliches Intervall zu bringen (z.B. von -20 bis 20) und dann die Zahlen durch Runden in Ganzzahlen umwandeln. Das gibt uns weniger Kontrolle über die Größe des Zustands, insbesondere wenn wir die genauen Bereiche der Eingabewerte nicht kennen. Zum Beispiel haben 2 von 4 Werten in unserem Fall keine obere/untere Grenze, was zu einer unendlichen Anzahl von Zuständen führen kann.
-✅ Wir können lineare Interpolation verwenden, um Werte auf ein endliches Intervall (z. B. von -20 bis 20) zu bringen, und dann Zahlen durch Runden in ganze Zahlen umwandeln. Dies gibt uns etwas weniger Kontrolle über die Größe des Zustands, insbesondere wenn wir die genauen Bereiche der Eingabewerte nicht kennen. Zum Beispiel haben in unserem Fall 2 von 4 Werten keine oberen/unteren Grenzen, was zu einer unendlichen Anzahl von Zuständen führen kann.
+In unserem Beispiel wählen wir den zweiten Ansatz. Wie du später bemerken wirst, trotz undefinierter Ober-/Untergrenzen nehmen diese Werte nur selten Werte außerhalb bestimmter endlicher Intervalle an, sodass Zustände mit extremen Werten sehr selten sind.
-In unserem Beispiel verwenden wir den zweiten Ansatz. Wie du später feststellen wirst, nehmen diese Werte trotz undefinierter oberer/unterer Grenzen selten Werte außerhalb bestimmter endlicher Intervalle an, sodass Zustände mit extremen Werten sehr selten sein werden.
-
-1. Hier ist die Funktion, die die Beobachtung aus unserem Modell nimmt und ein Tupel aus 4 ganzzahligen Werten erzeugt: (Codeblock 6)
+1. Hier ist die Funktion, die die Beobachtung unseres Modells entgegennimmt und ein Tupel mit 4 ganzzahligen Werten zurückgibt: (Codeblock 6)
```python
def discretize(x):
@@ -126,17 +146,17 @@ In unserem Beispiel verwenden wir den zweiten Ansatz. Wie du später feststellen
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
+ ints = [(-5,5),(-2,2),(-0.5,0.5),(-2,2)] # Werteintervalle für jeden Parameter
+ nbins = [20,20,10,10] # Anzahl der Klassen für jeden 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. Lass uns nun eine kurze Simulation durchführen und diese diskreten Umgebungswerte beobachten. Probiere gerne sowohl `discretize` als auch `discretize_bins` aus und sieh, ob es einen Unterschied gibt.
+1. Lass uns nun eine kurze Simulation durchführen und diese diskreten Umweltwerte beobachten. Probiere gerne beide `discretize` und `discretize_bins` aus und schau, ob es Unterschiede gibt.
- ✅ `discretize_bins` gibt die Bin-Nummer zurück, die bei 0 beginnt. Für Eingabewerte um 0 gibt es daher die Zahl aus der Mitte des Intervalls (10) zurück. Bei `discretize` haben wir uns nicht um den Bereich der Ausgabewerte gekümmert, sodass sie negativ sein können, und 0 entspricht 0. (Codeblock 8)
+ ✅ `discretize_bins` gibt die Bin-Nummer zurück, die Null-basiert ist. Für Werte der Eingangsvariablen um 0 gibt es also die Zahl aus der Mitte des Intervalls (10) zurück. In `discretize` haben wir uns nicht um den Bereich der Ausgabewerte gekümmert, sodass sie negativ sein können, der Zustandswert ist nicht verschoben, und 0 entspricht 0. (Codeblock 8)
```python
env.reset()
@@ -150,15 +170,15 @@ In unserem Beispiel verwenden wir den zweiten Ansatz. Wie du später feststellen
env.close()
```
- ✅ Kommentiere die Zeile, die mit `env.render` beginnt, aus, wenn du sehen möchtest, wie die Umgebung ausgeführt wird. Andernfalls kannst du sie im Hintergrund ausführen, was schneller ist. Wir werden diese "unsichtbare" Ausführung während unseres Q-Learning-Prozesses verwenden.
+ ✅ Kommentiere die Zeile, die mit `env.render` beginnt, aus, wenn du sehen möchtest, wie die Umgebung ausgeführt wird. Ansonsten kannst du sie im Hintergrund ausführen lassen, was schneller ist. Diese „unsichtbare“ Ausführung verwenden wir während unseres Q-Learning-Prozesses.
## Die Struktur der Q-Tabelle
-In unserer vorherigen Lektion war der Zustand ein einfaches Zahlenpaar von 0 bis 8, und daher war es praktisch, die Q-Tabelle durch einen numpy-Tensor mit einer Form von 8x8x2 darzustellen. Wenn wir die Bins-Diskretisierung verwenden, ist die Größe unseres Zustandsvektors ebenfalls bekannt, sodass wir denselben Ansatz verwenden und den Zustand durch ein Array der Form 20x20x10x10x2 darstellen können (hier ist 2 die Dimension des Aktionsraums, und die ersten Dimensionen entsprechen der Anzahl der Bins, die wir für jeden der Parameter im Beobachtungsraum ausgewählt haben).
+In unserer vorherigen Lektion war der Zustand ein einfaches Zahlenpaar von 0 bis 8, somit war es praktisch, die Q-Tabelle als numpy-Tensor mit der Form 8x8x2 darzustellen. Wenn wir Bins-Diskretisierung verwenden, kennen wir auch die Größe unseres Zustandsvektors, sodass wir denselben Ansatz verwenden können und den Zustand als Array mit der Form 20x20x10x10x2 darstellen (hier ist 2 die Dimension des Aktionsraums, und die ersten Dimensionen entsprechen der Anzahl der Bins, die wir für jeden Parameter im Beobachtungsraum ausgewählt haben).
-Manchmal sind jedoch die genauen Dimensionen des Beobachtungsraums nicht bekannt. Im Fall der `discretize`-Funktion können wir uns nie sicher sein, dass unser Zustand innerhalb bestimmter Grenzen bleibt, da einige der ursprünglichen Werte nicht begrenzt sind. Daher verwenden wir einen etwas anderen Ansatz und stellen die Q-Tabelle durch ein Wörterbuch dar.
+Manchmal sind die genauen Dimensionen des Beobachtungsraums jedoch nicht bekannt. Im Fall der Funktion `discretize` können wir nie sicher sein, dass unser Zustand innerhalb bestimmter Grenzen bleibt, weil einige der ursprünglichen Werte nicht begrenzt sind. Deshalb verwenden wir einen etwas anderen Ansatz und stellen die Q-Tabelle als Dictionary dar.
-1. Verwende das Paar *(state, action)* als Schlüssel des Wörterbuchs, und der Wert würde dem Eintrag der Q-Tabelle entsprechen. (Codeblock 9)
+1. Verwende das Paar *(Zustand, Aktion)* als Schlüssel im Dictionary, und der Wert entspricht dem Eintrag in der Q-Tabelle. (Codeblock 9)
```python
Q = {}
@@ -168,38 +188,38 @@ Manchmal sind jedoch die genauen Dimensionen des Beobachtungsraums nicht bekannt
return [Q.get((state,a),0) for a in actions]
```
- Hier definieren wir auch eine Funktion `qvalues()`, die eine Liste von Q-Tabellenwerten für einen gegebenen Zustand zurückgibt, die allen möglichen Aktionen entspricht. Wenn der Eintrag nicht in der Q-Tabelle vorhanden ist, geben wir standardmäßig 0 zurück.
+ Hier definieren wir auch eine Funktion `qvalues()`, die eine Liste der Q-Tabellenwerte für einen gegebenen Zustand zurückgibt, die allen möglichen Aktionen entsprechen. Wenn der Eintrag nicht in der Q-Tabelle vorhanden ist, geben wir als Standardwert 0 zurück.
-## Lass uns mit Q-Learning beginnen
+## Starten wir mit Q-Learning
-Jetzt sind wir bereit, Peter das Balancieren beizubringen!
+Nun sind wir bereit, Peter das Balancieren beizubringen!
1. Zuerst setzen wir einige Hyperparameter: (Codeblock 10)
```python
- # hyperparameters
+ # Hyperparameter
alpha = 0.3
gamma = 0.9
epsilon = 0.90
```
- Hier ist `alpha` die **Lernrate**, die definiert, in welchem Ausmaß wir die aktuellen Werte der Q-Tabelle bei jedem Schritt anpassen sollten. In der vorherigen Lektion haben wir mit 1 begonnen und dann `alpha` während des Trainings auf niedrigere Werte reduziert. In diesem Beispiel halten wir es der Einfachheit halber konstant, und du kannst später mit der Anpassung der `alpha`-Werte experimentieren.
-
- `gamma` ist der **Abzinsungsfaktor**, der zeigt, in welchem Ausmaß wir zukünftige Belohnungen gegenüber aktuellen Belohnungen priorisieren sollten.
+ Hier ist `alpha` die **Lernrate**, die angibt, in welchem Ausmaß wir die aktuellen Werte der Q-Tabelle bei jedem Schritt anpassen sollten. In der vorherigen Lektion haben wir mit 1 begonnen und dann `alpha` während des Trainings verringert. In diesem Beispiel halten wir sie der Einfachheit halber konstant, du kannst aber später experimentieren und `alpha`-Werte anpassen.
- `epsilon` ist der **Explorations-/Exploiterungsfaktor**, der bestimmt, ob wir Exploration der Exploitation vorziehen sollten oder umgekehrt. In unserem Algorithmus wählen wir in `epsilon` Prozent der Fälle die nächste Aktion entsprechend den Q-Tabellenwerten aus, und in den verbleibenden Fällen führen wir eine zufällige Aktion aus. Dies ermöglicht es uns, Bereiche des Suchraums zu erkunden, die wir noch nie zuvor gesehen haben.
+ `gamma` ist der **Diskontierungsfaktor**, der zeigt, inwieweit zukünftige Belohnungen gegenüber aktuellen belohnt werden.
- ✅ In Bezug auf das Balancieren - das Auswählen einer zufälligen Aktion (Exploration) würde wie ein zufälliger Stoß in die falsche Richtung wirken, und die Stange müsste lernen, wie sie das Gleichgewicht aus diesen "Fehlern" wiederherstellt.
+ `epsilon` ist der **Explorations-/Exploitation-Faktor**, der bestimmt, ob wir Exploration der Exploitation vorziehen oder umgekehrt. In unserem Algorithmus wählen wir in `epsilon` Prozent der Fälle die nächste Aktion basierend auf den Q-Tabellenwerten, und in den restlichen Fällen führen wir eine zufällige Aktion aus. So erkunden wir Bereiche des Suchraums, die wir noch nicht gesehen haben.
-### Den Algorithmus verbessern
+ ✅ Beim Balancieren entspricht die Wahl einer zufälligen Aktion (Exploration) einem zufälligen Schlag in die falsche Richtung, und der Stab muss lernen, das Gleichgewicht aus diesen „Fehlern“ wiederherzustellen.
-Wir können auch zwei Verbesserungen an unserem Algorithmus aus der vorherigen Lektion vornehmen:
+### Verbesserung des Algorithmus
-- **Durchschnittliche kumulative Belohnung berechnen**, über eine Anzahl von Simulationen. Wir drucken den Fortschritt alle 5000 Iterationen aus und mitteln unsere kumulative Belohnung über diesen Zeitraum. Das bedeutet, dass wir, wenn wir mehr als 195 Punkte erreichen, das Problem als gelöst betrachten können, und zwar mit einer noch höheren Qualität als erforderlich.
+Wir können unseren Algorithmus aus der vorherigen Lektion auch in zwei Punkten verbessern:
-- **Maximales durchschnittliches kumulatives Ergebnis berechnen**, `Qmax`, und wir speichern die Q-Tabelle, die diesem Ergebnis entspricht. Wenn du das Training ausführst, wirst du feststellen, dass manchmal das durchschnittliche kumulative Ergebnis zu sinken beginnt, und wir möchten die Werte der Q-Tabelle beibehalten, die dem besten während des Trainings beobachteten Modell entsprechen.
+- **Berechne die durchschnittliche kumulative Belohnung**, über eine Anzahl von Simulationen. Wir geben den Fortschritt alle 5000 Iterationen aus und mitteln unsere kumulative Belohnung über diesen Zeitraum. Das bedeutet, wenn wir mehr als 195 Punkte erreichen, können wir das Problem als gelöst betrachten, sogar mit höherer Qualität als erforderlich.
+
+- **Berechne den maximalen durchschnittlichen kumulativen Wert**, `Qmax`, und speichere die Q-Tabelle, die diesem Ergebnis entspricht. Während des Trainings wirst du bemerken, dass der durchschnittliche kumulative Wert manchmal zu sinken beginnt. Wir möchten die Q-Tabellenwerte speichern, die dem besten während des Trainings beobachteten Modell entsprechen.
-1. Sammle alle kumulativen Belohnungen bei jeder Simulation im `rewards`-Vektor für eine spätere Darstellung. (Codeblock 11)
+1. Sammle alle kumulativen Belohnungen jeder Simulation im `rewards`-Vektor für weitere Darstellungen. (Codeblock 11)
```python
def probs(v,eps=1e-4):
@@ -214,15 +234,15 @@ Wir können auch zwei Verbesserungen an unserem Algorithmus aus der vorherigen L
obs = env.reset()
done = False
cum_reward=0
- # == do the simulation ==
+ # == führe die Simulation durch ==
while not done:
s = discretize(obs)
if random.random() Qmax:
@@ -240,25 +260,25 @@ Wir können auch zwei Verbesserungen an unserem Algorithmus aus der vorherigen L
cum_rewards=[]
```
-Was du aus diesen Ergebnissen feststellen kannst:
+Was du aus diesen Ergebnissen erkennen kannst:
-- **Nahe an unserem Ziel**. Wir sind dem Ziel, 195 kumulative Belohnungen über 100+ aufeinanderfolgende Simulationen zu erreichen, sehr nahe oder haben es möglicherweise sogar erreicht! Selbst wenn wir kleinere Zahlen erhalten, wissen wir es nicht genau, da wir über 5000 Läufe mitteln, und nur 100 Läufe sind im formalen Kriterium erforderlich.
+- **Nahe an unserem Ziel**. Wir sind sehr nahe daran, das Ziel von 195 kumulativen Belohnungen über 100+ aufeinanderfolgende Durchläufe der Simulation zu erreichen, oder haben es möglicherweise sogar erreicht! Auch wenn wir kleinere Zahlen bekommen, wissen wir es noch nicht sicher, weil wir über 5000 Durchläufe mitteln, und nur 100 Durchläufe für das formale Kriterium erforderlich sind.
+
+- **Belohnung beginnt zu fallen**. Manchmal beginnt die Belohnung zu fallen, was bedeutet, dass wir bereits gelernte Werte in der Q-Tabelle durch Werte überschreiben, die die Situation verschlimmern.
-- **Belohnung beginnt zu sinken**. Manchmal beginnt die Belohnung zu sinken, was bedeutet, dass wir bereits gelernte Werte in der Q-Tabelle durch solche ersetzen können, die die Situation verschlechtern.
+Diese Beobachtung wird deutlicher, wenn wir den Trainingsfortschritt darstellen.
-Diese Beobachtung wird deutlicher, wenn wir den Trainingsfortschritt grafisch darstellen.
+## Darstellung des Trainingsfortschritts
-## Trainingsfortschritt darstellen
-
-Während des Trainings haben wir den kumulativen Belohnungswert bei jeder Iteration im `rewards`-Vektor gesammelt. So sieht es aus, wenn wir es gegen die Iterationsnummer plotten:
+Während des Trainings haben wir den kumulativen Belohnungswert bei jeder Iteration in den `rewards`-Vektor gesammelt. So sieht es aus, wenn wir ihn gegen die Iterationsnummer darstellen:
```python
plt.plot(rewards)
```
-
+
-Aus diesem Diagramm lässt sich nichts ableiten, da aufgrund der stochastischen Natur des Trainingsprozesses die Länge der Trainingseinheiten stark variiert. Um dieses Diagramm sinnvoller zu machen, können wir den **gleitenden Durchschnitt** über eine Reihe von Experimenten berechnen, sagen wir 100. Dies kann bequem mit `np.convolve` durchgeführt werden: (Codeblock 12)
+Aus diesem Diagramm lässt sich nicht viel ablesen, da die Länge der Trainingssessions aufgrund der stochastischen Natur des Trainingsprozesses stark variiert. Um dieses Diagramm besser zu interpretieren, können wir den **laufenden Durchschnitt** über eine Serie von Experimenten, sagen wir 100, berechnen. Das geht bequem mit `np.convolve`: (Codeblock 12)
```python
def running_average(x,window):
@@ -267,21 +287,24 @@ def running_average(x,window):
plt.plot(running_average(rewards,100))
```
-
+
-## Hyperparameter variieren
+## Variation der Hyperparameter
Um das Lernen stabiler zu machen, macht es Sinn, einige unserer Hyperparameter während des Trainings anzupassen. Insbesondere:
-- **Für die Lernrate**, `alpha`, können wir mit Werten nahe 1 beginnen und dann den Parameter schrittweise verringern. Mit der Zeit erhalten wir gute Wahrscheinlichkeitswerte in der Q-Tabelle, und daher sollten wir sie nur leicht anpassen und nicht vollständig mit neuen Werten überschreiben.
+- **Für die Lernrate**, `alpha`, können wir mit Werten nahe 1 beginnen und den Parameter dann langsam verringern. Mit der Zeit erhalten wir gute Wahrscheinlichkeitswerte in der Q-Tabelle und sollten diese nur noch leicht anpassen und nicht mehr komplett überschreiben.
+
+- **Erhöhe epsilon**. Wir könnten `epsilon` langsam erhöhen, um weniger zu explorieren und mehr zu exploitieren. Wahrscheinlich macht es Sinn, mit einem niedrigen Wert für `epsilon` zu starten und ihn bis fast 1 zu erhöhen.
+
+> **Aufgabe 1**: Spiele mit den Hyperparameterwerten und schaue, ob du eine höhere kumulative Belohnung erzielen kannst. Kommst du über 195?
+
-- **Epsilon erhöhen**. Wir könnten `epsilon` langsam erhöhen, um weniger zu explorieren und mehr zu exploiten. Es macht wahrscheinlich Sinn, mit einem niedrigeren Wert von `epsilon` zu beginnen und ihn auf fast 1 zu steigern.
-> **Aufgabe 1**: Experimentiere mit den Hyperparametern und überprüfe, ob du eine höhere kumulative Belohnung erzielen kannst. Erreichst du mehr als 195?
-> **Aufgabe 2**: Um das Problem formal zu lösen, musst du einen durchschnittlichen Reward von 195 über 100 aufeinanderfolgende Durchläufe erreichen. Messe dies während des Trainings und stelle sicher, dass du das Problem formal gelöst hast!
+> **Aufgabe 2**: Um das Problem formell zu lösen, müssen Sie eine durchschnittliche Belohnung von 195 über 100 aufeinanderfolgende Durchläufe erreichen. Messen Sie das während des Trainings und stellen Sie sicher, dass Sie das Problem formell gelöst haben!
## Das Ergebnis in Aktion sehen
-Es wäre interessant zu sehen, wie sich das trainierte Modell tatsächlich verhält. Lass uns die Simulation ausführen und dieselbe Aktionsauswahlstrategie wie während des Trainings anwenden, indem wir entsprechend der Wahrscheinlichkeitsverteilung in der Q-Tabelle sampeln: (Codeblock 13)
+Es wäre interessant, tatsächlich zu sehen, wie sich das trainierte Modell verhält. Lassen Sie uns die Simulation laufen und dieselbe Aktionsauswahlstrategie wie beim Training verfolgen, indem wir entsprechend der Wahrscheinlichkeitsverteilung in der Q-Tabelle sampeln: (Codeblock 13)
```python
obs = env.reset()
@@ -295,7 +318,7 @@ while not done:
env.close()
```
-Du solltest etwas Ähnliches sehen wie hier:
+Sie sollten so etwas sehen:

@@ -303,22 +326,24 @@ Du solltest etwas Ähnliches sehen wie hier:
## 🚀Herausforderung
-> **Aufgabe 3**: Hier haben wir die finale Version der Q-Tabelle verwendet, die möglicherweise nicht die beste ist. Denke daran, dass wir die am besten performende Q-Tabelle in der Variable `Qbest` gespeichert haben! Probiere dasselbe Beispiel mit der am besten performenden Q-Tabelle aus, indem du `Qbest` in `Q` kopierst, und schau, ob du einen Unterschied bemerkst.
+> **Aufgabe 3**: Hier haben wir die finale Kopie der Q-Tabelle verwendet, die möglicherweise nicht die beste ist. Denken Sie daran, dass wir die bestperformende Q-Tabelle in der Variable `Qbest` gespeichert haben! Versuchen Sie dasselbe Beispiel mit der bestperformenden Q-Tabelle, indem Sie `Qbest` auf `Q` kopieren, und sehen Sie, ob Sie einen Unterschied bemerken.
-> **Aufgabe 4**: Hier haben wir nicht bei jedem Schritt die beste Aktion ausgewählt, sondern stattdessen entsprechend der Wahrscheinlichkeitsverteilung gesampelt. Wäre es sinnvoller, immer die beste Aktion mit dem höchsten Q-Tabelle-Wert auszuwählen? Das kann mit der Funktion `np.argmax` umgesetzt werden, um die Aktionsnummer mit dem höchsten Q-Tabelle-Wert zu ermitteln. Implementiere diese Strategie und überprüfe, ob sie das Balancieren verbessert.
+> **Aufgabe 4**: Hier haben wir nicht bei jedem Schritt die beste Aktion ausgewählt, sondern stattdessen entsprechend der Wahrscheinlichkeitsverteilung gesampelt. Würde es mehr Sinn machen, immer die beste Aktion mit dem höchsten Q-Tabellenwert auszuwählen? Das kann durch die Verwendung der Funktion `np.argmax` geschehen, um die Aktionsnummer zu finden, die dem höchsten Q-Tabellenwert entspricht. Implementieren Sie diese Strategie und prüfen Sie, ob sich das Balancieren verbessert.
## [Quiz nach der Vorlesung](https://ff-quizzes.netlify.app/en/ml/)
## Aufgabe
-[Trainiere ein Mountain Car](assignment.md)
+[Trainieren eines Mountain Car](assignment.md)
## Fazit
-Wir haben nun gelernt, wie man Agenten trainiert, um gute Ergebnisse zu erzielen, indem man ihnen lediglich eine Reward-Funktion bereitstellt, die den gewünschten Zustand des Spiels definiert, und ihnen die Möglichkeit gibt, den Suchraum intelligent zu erkunden. Wir haben den Q-Learning-Algorithmus erfolgreich in Fällen mit diskreten und kontinuierlichen Umgebungen angewendet, jedoch mit diskreten Aktionen.
+Wir haben nun gelernt, wie man Agenten trainiert, um gute Ergebnisse zu erzielen, indem man ihnen nur eine Belohnungsfunktion gibt, die den gewünschten Zustand des Spiels definiert, und indem man ihnen die Möglichkeit gibt, den Suchraum intelligent zu erkunden. Wir haben den Q-Learning-Algorithmus erfolgreich sowohl bei diskreten als auch bei kontinuierlichen Umgebungen angewendet, allerdings mit diskreten Aktionen.
-Es ist auch wichtig, Situationen zu untersuchen, in denen der Aktionsraum ebenfalls kontinuierlich ist und der Beobachtungsraum viel komplexer wird, wie beispielsweise ein Bild vom Bildschirm eines Atari-Spiels. In solchen Problemen müssen oft leistungsstärkere Machine-Learning-Techniken wie neuronale Netze eingesetzt werden, um gute Ergebnisse zu erzielen. Diese fortgeschritteneren Themen sind Gegenstand unseres kommenden, weiterführenden KI-Kurses.
+Es ist wichtig, auch Situationen zu untersuchen, bei denen die Aktionsdimension ebenfalls kontinuierlich ist und der Beobachtungsraum viel komplexer ist, zum Beispiel ein Bild vom Atari-Spielbildschirm. In solchen Problemen müssen wir oft leistungsfähigere maschinelle Lernmethoden wie neuronale Netze verwenden, um gute Ergebnisse zu erzielen. Diese fortgeschritteneren Themen sind Gegenstand unseres bevorstehenden, fortgeschrittenen AI-Kurses.
---
-**Haftungsausschluss**:
-Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, weisen wir darauf hin, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben.
\ No newline at end of file
+
+**Haftungsausschluss**:
+Dieses Dokument wurde mit dem KI-Übersetzungsdienst [Co-op Translator](https://github.com/Azure/co-op-translator) übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner Ursprungssprache gilt als maßgebliche Quelle. Bei kritischen Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die aus der Verwendung dieser Übersetzung entstehen.
+
\ No newline at end of file
diff --git a/translations/el/.co-op-translator.json b/translations/el/.co-op-translator.json
index f66035b83..956c4db47 100644
--- a/translations/el/.co-op-translator.json
+++ b/translations/el/.co-op-translator.json
@@ -13,7 +13,7 @@
},
"1-Introduction/2-history-of-ML/README.md": {
"original_hash": "6a05fec147e734c3e6bfa54505648e2b",
- "translation_date": "2025-09-05T00:34:26+00:00",
+ "translation_date": "2026-07-14T05:26:58+00:00",
"source_file": "1-Introduction/2-history-of-ML/README.md",
"language_code": "el"
},
@@ -24,8 +24,8 @@
"language_code": "el"
},
"1-Introduction/3-fairness/README.md": {
- "original_hash": "9a6b702d1437c0467e3c5c28d763dac2",
- "translation_date": "2025-09-05T00:23:51+00:00",
+ "original_hash": "0f00d72169a0d37eecfd16d71e01700a",
+ "translation_date": "2026-07-14T05:28:24+00:00",
"source_file": "1-Introduction/3-fairness/README.md",
"language_code": "el"
},
@@ -54,8 +54,8 @@
"language_code": "el"
},
"2-Regression/1-Tools/README.md": {
- "original_hash": "fa81d226c71d5af7a2cade31c1c92b88",
- "translation_date": "2025-09-04T23:37:56+00:00",
+ "original_hash": "0b8635427b582d03ea4ab7089b93e505",
+ "translation_date": "2026-07-14T05:19:17+00:00",
"source_file": "2-Regression/1-Tools/README.md",
"language_code": "el"
},
@@ -89,6 +89,12 @@
"source_file": "2-Regression/2-Data/solution/Julia/README.md",
"language_code": "el"
},
+ "2-Regression/2-Data/solution/notebook.ipynb": {
+ "original_hash": "96b95f8cf473481f2f371de8156f1571",
+ "translation_date": "2026-07-14T05:08:14+00:00",
+ "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
+ "language_code": "el"
+ },
"2-Regression/3-Linear/README.md": {
"original_hash": "8b776e731c35b171d316d01d0e7b1369",
"translation_date": "2026-04-26T20:18:24+00:00",
@@ -115,7 +121,7 @@
},
"2-Regression/4-Logistic/README.md": {
"original_hash": "abf86d845c84330bce205a46b382ec88",
- "translation_date": "2025-09-04T23:31:10+00:00",
+ "translation_date": "2026-07-14T05:20:53+00:00",
"source_file": "2-Regression/4-Logistic/README.md",
"language_code": "el"
},
@@ -307,7 +313,7 @@
},
"6-NLP/3-Translation-Sentiment/README.md": {
"original_hash": "be03c8182982b87ced155e4e9d1438e8",
- "translation_date": "2025-09-05T01:39:23+00:00",
+ "translation_date": "2026-07-14T05:15:46+00:00",
"source_file": "6-NLP/3-Translation-Sentiment/README.md",
"language_code": "el"
},
@@ -457,7 +463,7 @@
},
"8-Reinforcement/1-QLearning/README.md": {
"original_hash": "911efd5e595089000cb3c16fce1beab8",
- "translation_date": "2025-09-05T01:09:32+00:00",
+ "translation_date": "2026-07-14T05:24:21+00:00",
"source_file": "8-Reinforcement/1-QLearning/README.md",
"language_code": "el"
},
@@ -481,7 +487,7 @@
},
"8-Reinforcement/2-Gym/README.md": {
"original_hash": "107d5bb29da8a562e7ae72262d251a75",
- "translation_date": "2025-09-05T01:16:37+00:00",
+ "translation_date": "2026-07-14T05:25:54+00:00",
"source_file": "8-Reinforcement/2-Gym/README.md",
"language_code": "el"
},
@@ -511,7 +517,7 @@
},
"9-Real-World/1-Applications/README.md": {
"original_hash": "83320d6b6994909e35d830cebf214039",
- "translation_date": "2025-09-05T00:12:14+00:00",
+ "translation_date": "2026-07-14T05:31:19+00:00",
"source_file": "9-Real-World/1-Applications/README.md",
"language_code": "el"
},
@@ -523,7 +529,7 @@
},
"9-Real-World/2-Debugging-ML-Models/README.md": {
"original_hash": "df2b538e8fbb3e91cf0419ae2f858675",
- "translation_date": "2025-09-05T00:17:42+00:00",
+ "translation_date": "2026-07-14T05:29:57+00:00",
"source_file": "9-Real-World/2-Debugging-ML-Models/README.md",
"language_code": "el"
},
@@ -581,6 +587,30 @@
"source_file": "TROUBLESHOOTING.md",
"language_code": "el"
},
+ "__translation_failures__": {
+ "6-NLP/5-Hotel-Reviews-2/README.md": {
+ "original_hash": "2c742993fe95d5bcbb2846eda3d442a1",
+ "source_file": "6-NLP/5-Hotel-Reviews-2/README.md",
+ "language_code": "el",
+ "failure_date": "2026-07-14T05:17:56+00:00",
+ "status": "failed",
+ "error_type": "TranslationIncompleteError",
+ "error_message": "Markdown translation remained incomplete for chunk 2 of 'README.md', and the chunk could not be split further.",
+ "translator_version": "0.20.0",
+ "failure_policy_version": 1
+ },
+ "2-Regression/2-Data/README.md": {
+ "original_hash": "a58b2c4d16c6b122643391745ac15af6",
+ "source_file": "2-Regression/2-Data/README.md",
+ "language_code": "el",
+ "failure_date": "2026-07-14T05:22:47+00:00",
+ "status": "failed",
+ "error_type": "TranslationIncompleteError",
+ "error_message": "Markdown translation remained incomplete for chunk 2 of 'README.md', and the chunk could not be split further.",
+ "translator_version": "0.20.0",
+ "failure_policy_version": 1
+ }
+ },
"docs/_sidebar.md": {
"original_hash": "68dd06c685f6ce840e0acfa313352e7c",
"translation_date": "2025-09-05T00:08:27+00:00",
@@ -601,7 +631,7 @@
},
"sketchnotes/LICENSE.md": {
"original_hash": "fba3b94d88bfb9b81369b869a1e9a20f",
- "translation_date": "2025-09-05T01:01:52+00:00",
+ "translation_date": "2026-07-14T05:14:34+00:00",
"source_file": "sketchnotes/LICENSE.md",
"language_code": "el"
},
diff --git a/translations/el/1-Introduction/2-history-of-ML/README.md b/translations/el/1-Introduction/2-history-of-ML/README.md
index c78aa17d1..e12c9018d 100644
--- a/translations/el/1-Introduction/2-history-of-ML/README.md
+++ b/translations/el/1-Introduction/2-history-of-ML/README.md
@@ -1,132 +1,157 @@
# Ιστορία της μηχανικής μάθησης
-
-> Σκίτσο από την [Tomomi Imura](https://www.twitter.com/girlie_mac)
+
+> Σκίτσο από τη [Tomomi Imura](https://www.twitter.com/girlie_mac)
## [Προ-μάθημα κουίζ](https://ff-quizzes.netlify.app/en/ml/)
---
-[](https://youtu.be/N6wxM4wZ7V0 "ML για αρχάριους - Ιστορία της Μηχανικής Μάθησης")
+[](https://youtu.be/N6wxM4wZ7V0 "ML για αρχάριους - Ιστορία της μηχανικής μάθησης")
-> 🎥 Κάντε κλικ στην εικόνα παραπάνω για ένα σύντομο βίντεο που εξηγεί αυτό το μάθημα.
+> 🎥 Κάντε κλικ στην εικόνα παραπάνω για ένα σύντομο βίντεο που καλύπτει αυτό το μάθημα.
-Σε αυτό το μάθημα, θα εξετάσουμε τα σημαντικά ορόσημα στην ιστορία της μηχανικής μάθησης και της τεχνητής νοημοσύνης.
+Σε αυτό το μάθημα, θα περιηγηθούμε στα βασικά ορόσημα στην ιστορία της μηχανικής μάθησης και της τεχνητής νοημοσύνης.
-Η ιστορία της τεχνητής νοημοσύνης (AI) ως πεδίο είναι άρρηκτα συνδεδεμένη με την ιστορία της μηχανικής μάθησης, καθώς οι αλγόριθμοι και οι υπολογιστικές εξελίξεις που στηρίζουν τη μηχανική μάθηση συνέβαλαν στην ανάπτυξη της τεχνητής νοημοσύνης. Είναι χρήσιμο να θυμόμαστε ότι, ενώ αυτά τα πεδία ως ξεχωριστές περιοχές έρευνας άρχισαν να αποκρυσταλλώνονται τη δεκαετία του 1950, σημαντικές [αλγοριθμικές, στατιστικές, μαθηματικές, υπολογιστικές και τεχνικές ανακαλύψεις](https://wikipedia.org/wiki/Timeline_of_machine_learning) προηγήθηκαν και επικαλύφθηκαν αυτή την εποχή. Στην πραγματικότητα, οι άνθρωποι σκέφτονται αυτά τα ερωτήματα για [εκατοντάδες χρόνια](https://wikipedia.org/wiki/History_of_artificial_intelligence): αυτό το άρθρο συζητά τις ιστορικές διανοητικές βάσεις της ιδέας μιας 'σκεπτόμενης μηχανής'.
+Η ιστορία της τεχνητής νοημοσύνης (ΤΝ) ως πεδίο έχει συνυφανθεί με την ιστορία της μηχανικής μάθησης, καθώς οι αλγόριθμοι και οι υπολογιστικές εξελίξεις που στηρίζουν την μηχανική μάθηση συνέβαλαν στην ανάπτυξη της ΤΝ. Είναι χρήσιμο να θυμόμαστε ότι, ενώ αυτοί οι τομείς ως ξεχωριστές περιοχές έρευνας άρχισαν να διαμορφώνονται τη δεκαετία του 1950, σημαντικές [αλγοριθμικές, στατιστικές, μαθηματικές, υπολογιστικές και τεχνικές ανακαλύψεις](https://wikipedia.org/wiki/Timeline_of_machine_learning) προηγήθηκαν και επικαλύφθηκαν με αυτήν την εποχή. Στην πραγματικότητα, οι άνθρωποι έχουν σκεφτεί αυτά τα ερωτήματα για [εκατοντάδες χρόνια](https://wikipedia.org/wiki/History_of_artificial_intelligence): το άρθρο αυτό συζητά τα ιστορικά νοητικά θεμέλια της ιδέας μιας 'σκεπτόμενης μηχανής.'
---
## Σημαντικές ανακαλύψεις
-- 1763, 1812 [Θεώρημα του Bayes](https://wikipedia.org/wiki/Bayes%27_theorem) και οι προκάτοχοί του. Αυτό το θεώρημα και οι εφαρμογές του αποτελούν τη βάση της επαγωγής, περιγράφοντας την πιθανότητα ενός γεγονότος με βάση την προηγούμενη γνώση.
-- 1805 [Θεωρία Ελαχίστων Τετραγώνων](https://wikipedia.org/wiki/Least_squares) από τον Γάλλο μαθηματικό Adrien-Marie Legendre. Αυτή η θεωρία, την οποία θα μάθετε στη μονάδα μας για την Παλινδρόμηση, βοηθά στην προσαρμογή δεδομένων.
-- 1913 [Αλυσίδες Markov](https://wikipedia.org/wiki/Markov_chain), που πήραν το όνομά τους από τον Ρώσο μαθηματικό Andrey Markov, χρησιμοποιούνται για να περιγράψουν μια ακολουθία πιθανών γεγονότων με βάση μια προηγούμενη κατάσταση.
-- 1957 [Perceptron](https://wikipedia.org/wiki/Perceptron), ένας τύπος γραμμικού ταξινομητή που εφευρέθηκε από τον Αμερικανό ψυχολόγο Frank Rosenblatt και αποτελεί τη βάση για τις εξελίξεις στη βαθιά μάθηση.
+- 1763, 1812 [Θεώρημα Bayes](https://wikipedia.org/wiki/Bayes%27_theorem) και οι πρόγονοί του. Αυτό το θεώρημα και οι εφαρμογές του βασίζουν την επαγωγή, περιγράφοντας την πιθανότητα εμφάνισης ενός γεγονότος με βάση προηγούμενη γνώση.
+- 1805 [Θεωρία Ελαχίστων Τετραγώνων](https://wikipedia.org/wiki/Least_squares) από τον Γάλλο μαθηματικό Adrien-Marie Legendre. Αυτή η θεωρία, την οποία θα μάθετε στην ενότητα μας για την Παλινδρόμηση, βοηθά στη προσαρμογή δεδομένων.
+- 1913 [Αλυσίδες Markov](https://wikipedia.org/wiki/Markov_chain), ονομασμένες από τον Ρώσο μαθηματικό Andrey Markov, χρησιμοποιούνται για να περιγράψουν μια ακολουθία πιθανών γεγονότων βασισμένη σε προηγούμενη κατάσταση.
+- 1957 [Περσέπτρον](https://wikipedia.org/wiki/Perceptron) είναι ένα είδος γραμμικού ταξινομητή που εφευρέθηκε από τον Αμερικανό ψυχολόγο Frank Rosenblatt και στηρίζει τις εξελίξεις στο βαθύ μάθημα.
---
-- 1967 [Πλησιέστερος Γείτονας](https://wikipedia.org/wiki/Nearest_neighbor), ένας αλγόριθμος που αρχικά σχεδιάστηκε για χαρτογράφηση διαδρομών. Στο πλαίσιο της μηχανικής μάθησης χρησιμοποιείται για την ανίχνευση μοτίβων.
-- 1970 [Backpropagation](https://wikipedia.org/wiki/Backpropagation), χρησιμοποιείται για την εκπαίδευση [νευρωνικών δικτύων προώθησης](https://wikipedia.org/wiki/Feedforward_neural_network).
-- 1982 [Επαναληπτικά Νευρωνικά Δίκτυα](https://wikipedia.org/wiki/Recurrent_neural_network), τεχνητά νευρωνικά δίκτυα που προέρχονται από νευρωνικά δίκτυα προώθησης και δημιουργούν χρονικά γραφήματα.
+- 1967 [Πλησιέστερος Γείτονας](https://wikipedia.org/wiki/Nearest_neighbor) είναι ένας αλγόριθμος που αρχικά σχεδιάστηκε για χαρτογράφηση διαδρομών. Σε πλαίσιο μηχανικής μάθησης χρησιμοποιείται για ανίχνευση προτύπων.
+- 1970 [Οπισθοδιάδοση](https://wikipedia.org/wiki/Backpropagation) χρησιμοποιείται για εκπαίδευση [προωθητών νευρωνικών δικτύων](https://wikipedia.org/wiki/Feedforward_neural_network).
+- 1982 [Επαναφορικά Νευρωνικά Δίκτυα](https://wikipedia.org/wiki/Recurrent_neural_network) είναι τεχνητά νευρωνικά δίκτυα που προέρχονται από προωθητικά νευρωνικά δίκτυα και δημιουργούν χρονικά γραφήματα.
-✅ Κάντε λίγη έρευνα. Ποιες άλλες ημερομηνίες ξεχωρίζουν ως καθοριστικές στην ιστορία της μηχανικής μάθησης και της τεχνητής νοημοσύνης;
+✅ Κάντε μια μικρή έρευνα. Ποιες άλλες ημερομηνίες ξεχωρίζουν ως καθοριστικές στην ιστορία της ΜΜ και της ΤΝ;
---
## 1950: Μηχανές που σκέφτονται
-Ο Alan Turing, ένας πραγματικά αξιοσημείωτος άνθρωπος που ψηφίστηκε [από το κοινό το 2019](https://wikipedia.org/wiki/Icons:_The_Greatest_Person_of_the_20th_Century) ως ο μεγαλύτερος επιστήμονας του 20ού αιώνα, πιστώνεται ότι βοήθησε να τεθούν τα θεμέλια για την έννοια μιας 'μηχανής που μπορεί να σκέφτεται'. Αντιμετώπισε τους επικριτές και την ανάγκη του για εμπειρικά στοιχεία αυτής της έννοιας, εν μέρει δημιουργώντας το [Τεστ Turing](https://www.bbc.com/news/technology-18475646), το οποίο θα εξερευνήσετε στα μαθήματα μας για την Επεξεργασία Φυσικής Γλώσσας (NLP).
+Ο Alan Turing, ένα πραγματικά αξιοσημείωτο άτομο που ψηφίστηκε [από το κοινό το 2019](https://wikipedia.org/wiki/Icons:_The_Greatest_Person_of_the_20th_Century) ως ο μεγαλύτερος επιστήμονας του 20ού αιώνα, αποδίδεται η συμβολή του στη θεμελίωση της έννοιας «μηχανή που μπορεί να σκέφτεται.» Αντιμετώπισε επικριτές και το δικό του αίτημα για εμπειρικά αποδεικτικά στοιχεία αυτής της ιδέας δημιουργώντας εν μέρει το [Τεστ Turing](https://www.bbc.com/news/technology-18475646), το οποίο θα εξερευνήσετε στα μαθήματα NLP.
---
-## 1956: Θερινό Ερευνητικό Πρόγραμμα στο Dartmouth
+## 1956: Θερινό Ερευνητικό Πρόγραμμα Dartmouth
-"Το Θερινό Ερευνητικό Πρόγραμμα στο Dartmouth για την τεχνητή νοημοσύνη ήταν ένα καθοριστικό γεγονός για την τεχνητή νοημοσύνη ως πεδίο," και εδώ επινοήθηκε ο όρος 'τεχνητή νοημοσύνη' ([πηγή](https://250.dartmouth.edu/highlights/artificial-intelligence-ai-coined-dartmouth)).
+"Το Θερινό Ερευνητικό Πρόγραμμα Dartmouth για την τεχνητή νοημοσύνη ήταν ένα θεμελιώδες γεγονός για την τεχνητή νοημοσύνη ως πεδίο," και σε αυτό το συνέδριο επινοήθηκε ο όρος 'τεχνητή νοημοσύνη' ([πηγή](https://250.dartmouth.edu/highlights/artificial-intelligence-ai-coined-dartmouth)).
-> Κάθε πτυχή της μάθησης ή οποιοδήποτε άλλο χαρακτηριστικό της νοημοσύνης μπορεί, κατ' αρχήν, να περιγραφεί τόσο ακριβώς ώστε να μπορεί να κατασκευαστεί μια μηχανή που να το προσομοιώνει.
+> Κάθε πτυχή της μάθησης ή οποιοδήποτε άλλο χαρακτηριστικό της νοημοσύνης μπορεί κατά βάση να περιγραφεί τόσο ακριβώς ώστε να μπορεί να κατασκευαστεί μια μηχανή που να το προσομοιώνει.
---
-Ο επικεφαλής ερευνητής, καθηγητής μαθηματικών John McCarthy, ήλπιζε "να προχωρήσει με βάση την υπόθεση ότι κάθε πτυχή της μάθησης ή οποιοδήποτε άλλο χαρακτηριστικό της νοημοσύνης μπορεί, κατ' αρχήν, να περιγραφεί τόσο ακριβώς ώστε να μπορεί να κατασκευαστεί μια μηχανή που να το προσομοιώνει." Οι συμμετέχοντες περιλάμβαναν έναν άλλο φωτεινό νου του πεδίου, τον Marvin Minsky.
+Ο επικεφαλής ερευνητής, καθηγητής μαθηματικών John McCarthy, ελπίζε ότι "θα προχωρήσουμε με βάση την εικασία ότι κάθε πτυχή της μάθησης ή οποιοδήποτε άλλο χαρακτηριστικό της νοημοσύνης μπορεί κατά βάση να περιγραφεί τόσο ακριβώς ώστε να μπορεί να κατασκευαστεί μια μηχανή που να το προσομοιώνει." Οι συμμετέχοντες συμπεριλάμβαναν έναν ακόμη διακεκριμένο στον τομέα, τον Marvin Minsky.
-Το εργαστήριο πιστώνεται ότι ξεκίνησε και ενθάρρυνε αρκετές συζητήσεις, συμπεριλαμβανομένων "της ανόδου των συμβολικών μεθόδων, των συστημάτων που επικεντρώνονται σε περιορισμένους τομείς (πρώιμα συστήματα ειδικών), και των συστημάτων επαγωγής έναντι των συστημάτων επαγωγής." ([πηγή](https://wikipedia.org/wiki/Dartmouth_workshop)).
+Το σεμινάριο πιστώνεται ότι ξεκίνησε και ενθάρρυνε πολλές συζητήσεις, όπως "την άνοδο των συμβολικών μεθόδων, συστήματα εστιασμένα σε περιορισμένους τομείς (πρώιμα συστήματα ειδικών γνώσεων) και το σύστημα επαγωγής έναντι του συστήματος παραγωγής." ([πηγή](https://wikipedia.org/wiki/Dartmouth_workshop)).
---
-## 1956 - 1974: "Τα χρυσά χρόνια"
+## 1956 - 1974: "Η χρυσή εποχή"
-Από τη δεκαετία του 1950 έως τα μέσα της δεκαετίας του '70, υπήρχε μεγάλη αισιοδοξία ότι η τεχνητή νοημοσύνη θα μπορούσε να λύσει πολλά προβλήματα. Το 1967, ο Marvin Minsky δήλωσε με αυτοπεποίθηση ότι "Μέσα σε μια γενιά ... το πρόβλημα της δημιουργίας 'τεχνητής νοημοσύνης' θα έχει ουσιαστικά λυθεί." (Minsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall)
+Από τη δεκαετία του 1950 έως τα μέσα της δεκαετίας του '70, επικρατούσε έντονος αισιοδοξισμός με την ελπίδα ότι η ΤΝ θα μπορούσε να λύσει πολλά προβλήματα. Το 1967, ο Marvin Minsky δήλωσε με αυτοπεποίθηση ότι "Μέσα σε μια γενιά ... το πρόβλημα της δημιουργίας 'τεχνητής νοημοσύνης' θα έχει ουσιαστικά λυθεί." (Minsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall)
-Η έρευνα για την επεξεργασία φυσικής γλώσσας άνθισε, η αναζήτηση βελτιώθηκε και έγινε πιο ισχυρή, και δημιουργήθηκε η έννοια των 'μικρόκοσμων', όπου απλές εργασίες ολοκληρώνονταν χρησιμοποιώντας απλές γλωσσικές οδηγίες.
+Η έρευνα στην επεξεργασία φυσικής γλώσσας άνθισε, η αναζήτηση βελτιώθηκε και έγινε πιο ισχυρή, και η έννοια των 'μικρο-κόσμων' δημιουργήθηκε, όπου απλές εργασίες ολοκληρώνονταν με απλές γλωσσικές οδηγίες.
---
-Η έρευνα χρηματοδοτήθηκε καλά από κυβερνητικούς φορείς, έγιναν πρόοδοι στην υπολογιστική και στους αλγόριθμους, και κατασκευάστηκαν πρωτότυπα ευφυών μηχανών. Μερικές από αυτές τις μηχανές περιλαμβάνουν:
+Η έρευνα χρηματοδοτήθηκε επαρκώς από κυβερνητικές υπηρεσίες, επιτεύχθηκαν πρόοδοι στην υπολογιστική και στους αλγόριθμους, και κατασκευάστηκαν πρωτότυπα έξυπνων μηχανών. Μερικές από αυτές τις μηχανές περιλαμβάνουν:
-* [Shakey το ρομπότ](https://wikipedia.org/wiki/Shakey_the_robot), που μπορούσε να κινείται και να αποφασίζει πώς να εκτελέσει εργασίες 'ευφυώς'.
+* [Shakey το ρομπότ](https://wikipedia.org/wiki/Shakey_the_robot), που μπορούσε να κινείται και να αποφασίζει πώς να εκτελεί εργασίες «έξυπνα».
- 
+ 
> Shakey το 1972
---
-* Η Eliza, ένα πρώιμο 'chatterbot', μπορούσε να συνομιλεί με ανθρώπους και να λειτουργεί ως πρωτόγονος 'θεραπευτής'. Θα μάθετε περισσότερα για την Eliza στα μαθήματα NLP.
+* Η Eliza, ένας πρώιμος 'chatbot', μπορούσε να συνομιλήσει με ανθρώπους και να λειτουργεί ως πρωτόγονος 'θεραπευτής'. Θα μάθετε περισσότερα για την Eliza στα μαθήματα NLP.
- 
+ 
> Μια έκδοση της Eliza, ενός chatbot
---
-* Ο "κόσμος των μπλοκ" ήταν ένα παράδειγμα μικρόκοσμου όπου τα μπλοκ μπορούσαν να στοιβάζονται και να ταξινομούνται, και τα πειράματα για τη διδασκαλία μηχανών να λαμβάνουν αποφάσεις μπορούσαν να δοκιμαστούν. Οι εξελίξεις που κατασκευάστηκαν με βιβλιοθήκες όπως το [SHRDLU](https://wikipedia.org/wiki/SHRDLU) βοήθησαν να προωθηθεί η επεξεργασία γλώσσας.
+* Το "Blocks world" ήταν ένα παράδειγμα μικρο-κόσμου όπου τα μπλοκ μπορούσαν να στοιβάζονται και να ταξινομούνται, και γίνονταν πειράματα στη διδασκαλία μηχανών να παίρνουν αποφάσεις. Οι εξελίξεις κατασκευασμένες με βιβλιοθήκες όπως η [SHRDLU](https://wikipedia.org/wiki/SHRDLU) βοήθησαν να προωθηθεί η επεξεργασία γλώσσας.
- [](https://www.youtube.com/watch?v=QAJz4YKUwqw "κόσμος των μπλοκ με το SHRDLU")
+ [](https://www.youtube.com/watch?v=QAJz4YKUwqw "blocks world with SHRDLU")
- > 🎥 Κάντε κλικ στην εικόνα παραπάνω για ένα βίντεο: Κόσμος των μπλοκ με το SHRDLU
+ > 🎥 Κάντε κλικ στην εικόνα παραπάνω για βίντεο: Blocks world με SHRDLU
---
-## 1974 - 1980: "Χειμώνας της AI"
+## 1974 - 1980: "Χειμώνας της ΤΝ"
-Μέχρι τα μέσα της δεκαετίας του 1970, είχε γίνει εμφανές ότι η πολυπλοκότητα της δημιουργίας 'ευφυών μηχανών' είχε υποτιμηθεί και ότι η υπόσχεσή της, δεδομένης της διαθέσιμης υπολογιστικής ισχύος, είχε υπερεκτιμηθεί. Η χρηματοδότηση μειώθηκε και η εμπιστοσύνη στο πεδίο επιβραδύνθηκε. Μερικά ζητήματα που επηρέασαν την εμπιστοσύνη περιλάμβαναν:
+Μέχρι τα μέσα της δεκαετίας του 1970, είχε γίνει σαφές ότι η πολυπλοκότητα της κατασκευής 'έξυπνων μηχανών' είχε υποτιμηθεί και ότι οι υποσχέσεις της, δεδομένης της διαθέσιμης υπολογιστικής ισχύος, είχαν υπερεκτιμηθεί. Οι οικονομικοί πόροι μειώθηκαν και η εμπιστοσύνη στο πεδίο επιβραδύνθηκε. Μερικά ζητήματα που επηρέασαν την εμπιστοσύνη περιλαμβάνουν:
---
- **Περιορισμοί**. Η υπολογιστική ισχύς ήταν πολύ περιορισμένη.
-- **Συνδυαστική έκρηξη**. Ο αριθμός των παραμέτρων που έπρεπε να εκπαιδευτούν αυξήθηκε εκθετικά καθώς ζητήθηκαν περισσότερα από τους υπολογιστές, χωρίς παράλληλη εξέλιξη της υπολογιστικής ισχύος και ικανότητας.
-- **Έλλειψη δεδομένων**. Υπήρχε έλλειψη δεδομένων που εμπόδιζε τη διαδικασία δοκιμής, ανάπτυξης και βελτίωσης αλγορίθμων.
-- **Ρωτάμε τις σωστές ερωτήσεις;**. Οι ίδιες οι ερωτήσεις που τίθεντο άρχισαν να αμφισβητούνται. Οι ερευνητές άρχισαν να δέχονται κριτική για τις προσεγγίσεις τους:
- - Τα τεστ Turing αμφισβητήθηκαν μέσω, μεταξύ άλλων ιδεών, της θεωρίας του 'κινέζικου δωματίου', η οποία υποστήριζε ότι, "ο προγραμματισμός ενός ψηφιακού υπολογιστή μπορεί να τον κάνει να φαίνεται ότι κατανοεί τη γλώσσα αλλά δεν μπορεί να παράγει πραγματική κατανόηση." ([πηγή](https://plato.stanford.edu/entries/chinese-room/))
- - Η ηθική της εισαγωγής τεχνητών νοημοσυνών όπως η "θεραπεύτρια" ELIZA στην κοινωνία αμφισβητήθηκε.
+- **Συνδυαστική έκρηξη**. Ο αριθμός των παραμέτρων που έπρεπε να εκπαιδευτούν αυξανόταν εκθετικά καθώς του ζητούνταν περισσότερα από τους υπολογιστές, χωρίς παράλληλη εξέλιξη της υπολογιστικής ισχύος και των δυνατοτήτων.
+- **Έλλειψη δεδομένων**. Υπήρχε έλλειψη δεδομένων που εμπόδιζε τη διαδικασία δοκιμής, ανάπτυξης και βελτίωσης των αλγορίθμων.
+- **Ζητάμε τα σωστά ερωτήματα;**. Τα ίδια τα ερωτήματα που τίθενται άρχισαν να αμφισβητούνται. Οι ερευνητές άρχισαν να δέχονται κριτική για τις προσεγγίσεις τους:
+ - Τα τεστ Turing αμφισβητήθηκαν μέσω, μεταξύ άλλων, της «θεωρίας του κινεζικού δωματίου» που ανέφερε ότι, «ο προγραμματισμός ενός ψηφιακού υπολογιστή μπορεί να φαίνεται ότι κατανοεί τη γλώσσα αλλά δεν μπορεί να παράγει πραγματική κατανόηση.» ([πηγή](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, καθώς προέκυψε η ανάγκη να γίνουν τα συστήματα μηχανικής μάθησης αναπαραγώγιμα, η προσέγγιση _neat_ σταδιακά πήρε το προβάδισμα καθώς τα αποτελέσματά της είναι πιο εξηγήσιμα.
+Την ίδια στιγμή, διάφορες σχολές σκέψης στην ΤΝ άρχισαν να διαμορφώνονται. Δημιουργήθηκε μια διχοτομία μεταξύ των πρακτικών ["βρώμικης" έναντι "τακτικής ΤΝ"](https://wikipedia.org/wiki/Neats_and_scruffies). Τα _βρώμικα_ εργαστήρια διόρθωναν προγράμματα για ώρες μέχρι να επιτύχουν τα επιθυμητά αποτελέσματα. Τα _τακτικά_ εργαστήρια «επικεντρώνονταν στη λογική και στην επίλυση προβλημάτων με τυπικούς κανόνες». Η ELIZA και η SHRDLU ήταν γνωστά _βρώμικα_ συστήματα. Τη δεκαετία του 1980, καθώς δημιουργήθηκε η ανάγκη να γίνουν τα συστήματα μηχανικής μάθησης αναπαραγώγιμα, η _τακτική_ προσέγγιση προώθησε σταδιακά ως τα αποτελέσματά της είναι πιο ερμηνεύσιμα.
---
-## 1980s Εξειδικευμένα συστήματα
+## Δεκαετία του 1980: Συστήματα ειδικών γνώσεων
-Καθώς το πεδίο μεγάλωνε, το όφελός του για τις επιχειρήσεις έγινε πιο σαφές, και τη δεκαετία του 1980 έτσι έγινε και η διάδοση των 'εξειδικευμένων συστημάτων'. "Τα εξειδικευμένα συστήματα ήταν από τις πρώτες πραγματικά επιτυχημένες μορφές λογισμικού τεχνητής νοημοσύνης (AI)." ([πηγή](https://wikipedia.org/wiki/Expert_system)).
+Καθώς το πεδίο μεγάλωνε, η ωφέλεια προς τις επιχειρήσεις έγινε πιο ξεκάθαρη, και τη δεκαετία του 1980 αυξήθηκε η διάδοση των 'συστημάτων ειδικών γνώσεων'. "Τα συστήματα ειδικών γνώσεων ήταν από τις πρώτες πραγματικά επιτυχημένες μορφές λογισμικού τεχνητής νοημοσύνης (ΤΝ)." ([πηγή](https://wikipedia.org/wiki/Expert_system)).
-Αυτός ο τύπος συστήματος είναι στην πραγματικότητα _υβριδικός_, αποτελούμενος εν μέρει από μια μηχανή κανόνων που ορίζει επιχειρηματικές απαιτήσεις, και μια μηχανή επαγωγής που αξιοποιεί το σύστημα κανόνων για να εξάγει νέα δεδομένα.
+Αυτό το είδος συστήματος είναι στην πραγματικότητα _υβριδικό_, αποτελούμενο εν μέρει από μια μηχανή κανόνων που ορίζει επιχειρηματικές απαιτήσεις, και μια μηχανή συμπερασμών που χρησιμοποιεί το σύστημα κανόνων για την εξαγωγή νέων συμπερασμάτων.
-Αυτή η εποχή είδε επίσης αυξανόμενη προσοχή στα νευρωνικά δίκτυα.
+Αυτός ο χρόνος είδε επίσης αυξανόμενο ενδιαφέρον για τα νευρωνικά δίκτυα.
---
-## 1987 - 1993: Ψύχρα της AI
+## 1987 - 1993: Ψύχρα της ΤΝ
-Η διάδοση εξειδικευμένου υλικού για εξειδικευμένα συστήματα είχε το δυσάρεστο αποτέλεσμα να γίνει υπερβολικά εξειδικευμένο. Η άνοδος των προσωπικών υπολογιστών επίσης ανταγωνίστηκε αυτά τα μεγάλα, εξειδικευμένα, κεντρικά συστήματα. Η δημοκρατικοποίηση της υπολογιστικής είχε αρχίσει, και τελικά άνοιξε το δρόμο για τη σύγχρονη έκρηξη των μεγάλων δεδομένων.
+Η διάδοση εξειδικευμένου υλικού για τα συστήματα ειδικών γνώσεων είχε το δυσμενές αποτέλεσμα να γίνει πολύ εξειδικευμένη. Η άνοδος των προσωπικών υπολογιστών ανταγωνίστηκε επίσης αυτά τα μεγάλα, εξειδικευμένα, κεντρικά συστήματα. Η δημοκρατικοποίηση της πληροφορικής είχε ξεκινήσει και τελικά άνοιξε το δρόμο για την σύγχρονη έκρηξη των μεγάλων δεδομένων.
---
## 1993 - 2011
-Αυτή η εποχή είδε μια νέα εποχή για τη μηχανική μάθηση και την τεχνητή νοημοσύνη να μπορούν να λύσουν μερικά από τα προβλήματα που είχαν προκληθεί νωρίτερα από την έλλειψη δεδομένων και υπολογιστικής ισχύος. Η ποσότητα των δεδομένων άρχισε να αυξάνεται ραγδαία και να γίνεται πιο ευρέως διαθέσιμη, για καλό και για κακό, ειδικά με την εμφάνιση του smartphone γύρω στο 2007. Η υπολογιστική ισχύς επεκτάθηκε εκθετικά, και οι αλγόριθμοι εξελίχθηκαν παράλληλα. Το πεδίο άρχισε να αποκτά ωριμότητα καθώς οι ελεύθερες μέρες του παρελθόντος άρχισαν να αποκρυσταλλώνονται σε μια πραγματική επιστήμη.
+Αυτή η εποχή είδε μια νέα εποχή για τη ΜΜ και την ΤΝ να μπορούν να λύσουν κάποια από τα προβλήματα που είχαν προκύψει προηγουμένως από την έλλειψη δεδομένων και υπολογιστικής ισχύος. Η ποσότητα των δεδομένων άρχισε να αυξάνεται ραγδαία και να γίνεται πιο ευρέως διαθέσιμη, για καλό και για κακό, ειδικά με την εισαγωγή του smartphone γύρω στο 2007. Η υπολογιστική ισχύς αυξήθηκε εκθετικά, και οι αλγόριθμοι εξελίχθηκαν παράλληλα. Το πεδίο άρχισε να ωριμάζει καθώς οι ελεύθερες μέρες του παρελθόντος άρχισαν να κρυσταλλώνονται σε μια αληθινή πειθαρχία.
---
-## Σήμερα
+## Τώρα
-Σήμερα η μηχανική μάθηση και η τεχνητή νοημοσύνη αγγίζουν σχεδόν κάθε μέρος της ζωής μας. Αυτή η εποχή απαιτεί προσεκτική κατανόηση των κινδύνων και των πιθανών επιπτώσεων αυτών των αλγορίθμων στις ανθρώπινες ζωές. Όπως έχει δηλώσει ο Brad Smith της Microsoft, "Η τεχνολογία της πληροφορίας θέτει ζητήματα που αγγίζουν την καρδιά των θεμελιωδών προστασιών των ανθρωπίνων δικαιωμάτων, όπως η ιδιωτικότητα και η ελευθερία της έκφρασης. Αυτά τα ζητήματα αυξάνουν την ευθύνη των τεχνολογικών εταιρειών που δημιουργούν αυτά τα προϊόντα. Κατά την άποψή μας, καλούν επίσης για προσεκτική κυβερνητική ρύθμιση και για την ανάπτυξη κανόνων γύρω από αποδεκτές χρήσεις" ([πηγή](https://www.technologyreview.com/2019/12/18/102365/the-future-of-ais-impact-on-society/)).
+Σήμερα η μηχανική μάθηση και η τεχνητή νοημοσύνη αγγίζουν σχεδόν κάθε μέρος της ζωής μας. Αυτή η εποχή απαιτεί προσεκτική κατανόηση των κινδύνων και των πιθανών επιπτώσεων αυτών των αλγορίθμων στις ζωές των ανθρώπων. Όπως έχει δηλώσει ο Brad Smith της Microsoft, "Η τεχνολογία της πληροφορίας εγείρει ζητήματα που αγγίζουν τον πυρήνα θεμελιωδών προστασιών ανθρωπίνων δικαιωμάτων όπως η ιδιωτικότητα και η ελευθερία της έκφρασης. Αυτά τα ζητήματα αυξάνουν την ευθύνη των εταιρειών τεχνολογίας που δημιουργούν αυτά τα προϊόντα. Κατά την άποψή μας, καλούν επίσης σε στοχαστικό κρατικό κανονισμό και στην ανάπτυξη κανόνων σχετικά με αποδεκτές χρήσεις." ([πηγή](https://www.technologyreview.com/2019/12/18/102365/the-future-of-ais-impact-on-society/)).
---
-Μένει να δούμε τι επιφυλάσσει το μέλλον, αλλά είναι σημαντικό να κατανοήσουμε αυτά τα υπολογιστικά συστήματα και το λογισμικό και τους αλγόριθμους που εκτελούν. Ελπίζουμε ότι αυτό το πρόγραμμα σπουδών θα σας βοηθήσει να αποκτήσετε μια καλύτερη κατανόηση ώστε να αποφασίσετε μόνοι σας.
+Παραμένει να δούμε τι επιφυλάσσει το μέλλον, αλλά είναι σημαντικό να κατανοούμε αυτά τα συστήματα υπολογιστών και το λογισμικό και τους αλγορίθμους που εκτελούν. Ελπίζουμε αυτό το εκπαιδευτικό πρόγραμμα να σας βοηθήσει να αποκτήσετε καλύτερη κατανόηση ώστε να μπορείτε να αποφασίσετε μόνοι σας.
-[](https://www.youtube.com/watch?v=mTtDfKgLm54 "Η ιστορία του βαθιού μάθησης")
+> 🎥 Κάντε κλικ στην εικόνα παραπάνω για βίντεο: Ο Yann LeCun συζητά την ιστορία του βαθιού μάθησης σε αυτό το μάθημα
---
+## 🚀Πρόκληση
-**Αποποίηση ευθύνης**:
-Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.
\ No newline at end of file
+Ερευνήστε μία από αυτές τις ιστορικές στιγμές και μάθετε περισσότερα για τους ανθρώπους που βρίσκονταν πίσω τους. Υπάρχουν συναρπαστικοί χαρακτήρες, και καμία επιστημονική ανακάλυψη δεν δημιουργήθηκε ποτέ σε πολιτιστικό κενό. Τι ανακαλύπτετε;
+
+## [Μετα-μάθημα κουίζ](https://ff-quizzes.netlify.app/en/ml/)
+
+---
+## Επανεξέταση & Αυτομελέτη
+
+Εδώ είναι μερικά αντικείμενα για να δείτε και να ακούσετε:
+
+[Αυτό το podcast όπου η Amy Boyd συζητά την εξέλιξη της ΤΝ](http://runasradio.com/Shows/Show/739)
+
+[](https://www.youtube.com/watch?v=EJt3_bFYKss "Η ιστορία της ΤΝ από την Amy Boyd")
+
+---
+
+## Αποστολή
+
+[Δημιουργήστε ένα χρονικό διάγραμμα](assignment.md)
+
+---
+
+
+**Αποποίηση ευθυνών**:
+Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία μετάφρασης με τεχνητή νοημοσύνη [Co-op Translator](https://github.com/Azure/co-op-translator). Ενώ επιδιώκουμε την ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή λανθασμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.
+
\ No newline at end of file
diff --git a/translations/el/1-Introduction/3-fairness/README.md b/translations/el/1-Introduction/3-fairness/README.md
index 44737bf1a..92626b34d 100644
--- a/translations/el/1-Introduction/3-fairness/README.md
+++ b/translations/el/1-Introduction/3-fairness/README.md
@@ -1,119 +1,167 @@
-# Δημιουργία λύσεων Μηχανικής Μάθησης με υπεύθυνη Τεχνητή Νοημοσύνη
-
-
-> Σκίτσο από την [Tomomi Imura](https://www.twitter.com/girlie_mac)
-
-## [Προ-μάθημα κουίζ](https://ff-quizzes.netlify.app/en/ml/)
+# Κατασκευή λύσεων Μηχανικής Μάθησης με υπεύθυνη AI
+
+
+> Σκέτχνόουτ από την [Tomomi Imura](https://www.twitter.com/girlie_mac)
+## [Προ-διάλεξη κουίζ](https://ff-quizzes.netlify.app/en/ml/)
+
## Εισαγωγή
-Σε αυτό το πρόγραμμα σπουδών, θα αρχίσετε να ανακαλύπτετε πώς η μηχανική μάθηση μπορεί και επηρεάζει την καθημερινή μας ζωή. Ακόμα και τώρα, συστήματα και μοντέλα εμπλέκονται σε καθημερινές διαδικασίες λήψης αποφάσεων, όπως διαγνώσεις υγείας, εγκρίσεις δανείων ή ανίχνευση απάτης. Είναι λοιπόν σημαντικό αυτά τα μοντέλα να λειτουργούν σωστά ώστε να παρέχουν αξιόπιστα αποτελέσματα. Όπως κάθε εφαρμογή λογισμικού, τα συστήματα Τεχνητής Νοημοσύνης μπορεί να μην ανταποκριθούν στις προσδοκίες ή να έχουν ανεπιθύμητα αποτελέσματα. Γι' αυτό είναι απαραίτητο να μπορούμε να κατανοούμε και να εξηγούμε τη συμπεριφορά ενός μοντέλου Τεχνητής Νοημοσύνης.
+Σε αυτό το πρόγραμμα σπουδών, θα αρχίσετε να ανακαλύπτετε πώς η μηχανική μάθηση μπορεί και επηρεάζει την καθημερινή μας ζωή. Ακόμα και τώρα, συστήματα και μοντέλα συμμετέχουν σε καθημερινές εργασίες λήψης αποφάσεων, όπως διαγνώσεις υγείας, εγκρίσεις δανείων ή ανίχνευση απάτης. Επομένως, είναι σημαντικό αυτά τα μοντέλα να λειτουργούν καλά για να παρέχουν αξιόπιστα αποτελέσματα. Όπως κάθε εφαρμογή λογισμικού, τα συστήματα AI θα αποτύχουν να ανταποκριθούν σε προσδοκίες ή θα έχουν ανεπιθύμητα αποτελέσματα. Για αυτό είναι ουσιώδες να μπορούμε να κατανοήσουμε και να εξηγήσουμε τη συμπεριφορά ενός μοντέλου AI.
-Φανταστείτε τι μπορεί να συμβεί όταν τα δεδομένα που χρησιμοποιείτε για να δημιουργήσετε αυτά τα μοντέλα δεν περιλαμβάνουν συγκεκριμένες δημογραφικές ομάδες, όπως φυλή, φύλο, πολιτικές απόψεις, θρησκεία, ή όταν εκπροσωπούν δυσανάλογα αυτές τις ομάδες. Τι γίνεται όταν η έξοδος του μοντέλου ερμηνεύεται ώστε να ευνοεί κάποια δημογραφική ομάδα; Ποια είναι η συνέπεια για την εφαρμογή; Επιπλέον, τι συμβαίνει όταν το μοντέλο έχει αρνητικό αποτέλεσμα και είναι επιβλαβές για τους ανθρώπους; Ποιος είναι υπεύθυνος για τη συμπεριφορά του συστήματος Τεχνητής Νοημοσύνης; Αυτά είναι μερικά από τα ερωτήματα που θα εξερευνήσουμε σε αυτό το πρόγραμμα σπουδών.
+Φανταστείτε τι μπορεί να συμβεί όταν τα δεδομένα που χρησιμοποιείτε για να χτίσετε αυτά τα μοντέλα λείπουν ορισμένα δημογραφικά χαρακτηριστικά, όπως φυλή, φύλο, πολιτική άποψη, θρησκεία, ή αναπαριστούν δυσανάλογα τέτοια δημογραφικά στοιχεία. Τι γίνεται όταν η έξοδος του μοντέλου ερμηνεύεται για να ευνοεί κάποιο δημογραφικό; Ποιο είναι το αποτέλεσμα αυτό για την εφαρμογή; Επιπλέον, τι συμβαίνει όταν το μοντέλο έχει αρνητικό αποτέλεσμα και βλάπτει ανθρώπους; Ποιος ευθύνεται για τη συμπεριφορά των συστημάτων AI; Αυτά είναι μερικά από τα ερωτήματα που θα εξερευνήσουμε σε αυτό το πρόγραμμα σπουδών.
Σε αυτό το μάθημα, θα:
- Αυξήσετε την ευαισθητοποίησή σας για τη σημασία της δικαιοσύνης στη μηχανική μάθηση και τις βλάβες που σχετίζονται με αυτήν.
-- Εξοικειωθείτε με την πρακτική της εξερεύνησης ακραίων περιπτώσεων και ασυνήθιστων σεναρίων για να διασφαλίσετε την αξιοπιστία και την ασφάλεια.
-- Κατανοήσετε την ανάγκη να ενδυναμώσουμε όλους σχεδιάζοντας συστήματα χωρίς αποκλεισμούς.
+- Γνωρίσετε την πρακτική της διερεύνησης εξαιρέσεων και ασυνήθιστων σεναρίων για να εξασφαλίσετε αξιοπιστία και ασφάλεια.
+- Κατανοήσετε την ανάγκη ενδυνάμωσης όλων μέσω του σχεδιασμού περιεκτικών συστημάτων.
- Εξερευνήσετε πόσο ζωτικής σημασίας είναι η προστασία της ιδιωτικότητας και της ασφάλειας των δεδομένων και των ανθρώπων.
-- Δείτε τη σημασία της διαφάνειας για την εξήγηση της συμπεριφοράς των μοντέλων Τεχνητής Νοημοσύνης.
-- Εξετάσετε πώς η λογοδοσία είναι απαραίτητη για την οικοδόμηση εμπιστοσύνης στα συστήματα Τεχνητής Νοημοσύνης.
+- Δείτε τη σημασία της προσέγγισης με "γυάλινο κουτί" στην εξήγηση της συμπεριφοράς των μοντέλων AI.
+- Να έχετε υπόψη σας πόσο είναι απαραίτητη η λογοδοσία για την οικοδόμηση εμπιστοσύνης στα συστήματα AI.
## Προαπαιτούμενα
-Ως προαπαιτούμενο, παρακαλούμε να παρακολουθήσετε το "Responsible AI Principles" Learn Path και να δείτε το παρακάτω βίντεο σχετικά με το θέμα:
+Ως προαπαιτούμενο, παρακαλούμε να ακολουθήσετε το Μάθημα "Αρχές Υπεύθυνης AI" και να παρακολουθήσετε το παρακάτω βίντεο για το θέμα:
-Μάθετε περισσότερα για την Υπεύθυνη Τεχνητή Νοημοσύνη ακολουθώντας αυτό το [Learning Path](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)
+Μάθετε περισσότερα για την Υπεύθυνη AI ακολουθώντας αυτήν την [Διαδρομή Μάθησης](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)
-[](https://youtu.be/dnC8-uUZXSc "Η προσέγγιση της Microsoft για την Υπεύθυνη Τεχνητή Νοημοσύνη")
+[](https://youtu.be/dnC8-uUZXSc "Η προσέγγιση της Microsoft για την Υπεύθυνη AI")
-> 🎥 Κάντε κλικ στην εικόνα παραπάνω για το βίντεο: Η προσέγγιση της Microsoft για την Υπεύθυνη Τεχνητή Νοημοσύνη
+> 🎥 Κάντε κλικ στην εικόνα παραπάνω για ένα βίντεο: Η προσέγγιση της Microsoft για την Υπεύθυνη AI
## Δικαιοσύνη
-Τα συστήματα Τεχνητής Νοημοσύνης πρέπει να αντιμετωπίζουν όλους δίκαια και να αποφεύγουν να επηρεάζουν παρόμοιες ομάδες ανθρώπων με διαφορετικούς τρόπους. Για παράδειγμα, όταν τα συστήματα Τεχνητής Νοημοσύνης παρέχουν καθοδήγηση για ιατρική θεραπεία, αιτήσεις δανείων ή απασχόληση, πρέπει να κάνουν τις ίδιες συστάσεις σε όλους με παρόμοια συμπτώματα, οικονομικές συνθήκες ή επαγγελματικά προσόντα. Ο καθένας μας, ως άνθρωπος, φέρει κληρονομικές προκαταλήψεις που επηρεάζουν τις αποφάσεις και τις ενέργειές μας. Αυτές οι προκαταλήψεις μπορεί να είναι εμφανείς στα δεδομένα που χρησιμοποιούμε για την εκπαίδευση των συστημάτων Τεχνητής Νοημοσύνης. Μερικές φορές, τέτοιες παραποιήσεις συμβαίνουν ακούσια. Είναι συχνά δύσκολο να γνωρίζουμε συνειδητά πότε εισάγουμε προκατάληψη στα δεδομένα.
+Τα συστήματα AI πρέπει να αντιμετωπίζουν όλους δίκαια και να αποφεύγουν να επηρεάζουν παρόμοιες ομάδες ανθρώπων με διαφορετικούς τρόπους. Για παράδειγμα, όταν τα συστήματα AI παρέχουν καθοδήγηση για ιατρική θεραπεία, αιτήσεις δανείων ή απασχόληση, θα πρέπει να κάνουν τις ίδιες συστάσεις σε όλους με παρόμοια συμπτώματα, οικονομικές συνθήκες ή επαγγελματικά προσόντα. Κάθε ένας από εμάς ως άνθρωποι κουβαλά έμφυτες προκαταλήψεις που επηρεάζουν τις αποφάσεις και τις πράξεις μας. Αυτές οι προκαταλήψεις μπορεί να είναι εμφανείς στα δεδομένα που χρησιμοποιούμε για την εκπαίδευση των συστημάτων AI. Τέτοιος χειρισμός μπορεί μερικές φορές να συμβαίνει ακούσια. Συχνά είναι δύσκολο να γνωρίζετε συνειδητά πότε εισάγετε προκατάληψη στα δεδομένα.
-**Η "Αδικία"** περιλαμβάνει αρνητικές επιπτώσεις ή "βλάβες" για μια ομάδα ανθρώπων, όπως αυτές που ορίζονται με βάση τη φυλή, το φύλο, την ηλικία ή την κατάσταση αναπηρίας. Οι κύριες βλάβες που σχετίζονται με τη δικαιοσύνη μπορούν να ταξινομηθούν ως:
+**«Αδικία»** περιλαμβάνει αρνητικές επιπτώσεις, ή «βλάβες», για μια ομάδα ανθρώπων, όπως αυτές που ορίζονται με βάση φυλή, φύλο, ηλικία ή κατάσταση αναπηρίας. Οι κύριες βλάβες σχετιζόμενες με δικαιοσύνη μπορούν να ταξινομηθούν ως:
-- **Κατανομή**: Όταν, για παράδειγμα, ένα φύλο ή μια εθνικότητα ευνοείται έναντι άλλης.
-- **Ποιότητα υπηρεσίας**: Εάν εκπαιδεύσετε τα δεδομένα για ένα συγκεκριμένο σενάριο, αλλά η πραγματικότητα είναι πολύ πιο περίπλοκη, αυτό οδηγεί σε κακή απόδοση της υπηρεσίας. Για παράδειγμα, ένας διανομέας σαπουνιού που δεν μπορούσε να ανιχνεύσει ανθρώπους με σκούρο δέρμα. [Αναφορά](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
-- **Υποτίμηση**: Η άδικη κριτική και η ετικετοποίηση κάτι ή κάποιου. Για παράδειγμα, μια τεχνολογία ετικετοποίησης εικόνων κατηγορήθηκε ότι εσφαλμένα ετικετοποίησε εικόνες ανθρώπων με σκούρο δέρμα ως γορίλες.
-- **Υπερ- ή υπο-εκπροσώπηση**: Η ιδέα ότι μια συγκεκριμένη ομάδα δεν φαίνεται σε ένα συγκεκριμένο επάγγελμα, και οποιαδήποτε υπηρεσία ή λειτουργία που συνεχίζει να προωθεί αυτό συμβάλλει στη βλάβη.
-- **Στερεοτυπία**: Η σύνδεση μιας δεδομένης ομάδας με προκαθορισμένα χαρακτηριστικά. Για παράδειγμα, ένα σύστημα μετάφρασης μεταξύ Αγγλικών και Τουρκικών μπορεί να έχει ανακρίβειες λόγω λέξεων με στερεοτυπικές συσχετίσεις με το φύλο.
+- **Κατανομή**, εάν π.χ. προτιμάται κάποιο φύλο ή εθνότητα έναντι άλλου.
+- **Ποιότητα υπηρεσίας**. Αν εκπαιδεύσετε τα δεδομένα για ένα συγκεκριμένο σενάριο αλλά η πραγματικότητα είναι πιο σύνθετη, οδηγεί σε κακή απόδοση της υπηρεσίας. Για παράδειγμα, ένας διανομέας σαπουνιού χεριών που δεν μπορούσε να ανιχνεύσει ανθρώπους με σκοτεινό δέρμα. [Αναφορά](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)
+> [🎥 Κάντε κλικ εδώ για βίντεο: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
-### Συμπερίληψη
+### Ενσωμάτωση
-Τα συστήματα Τεχνητής Νοημοσύνης πρέπει να σχεδιάζονται ώστε να εμπλέκουν και να ενδυναμώνουν όλους. Κατά τη σχεδίαση και την υλοποίηση συστημάτων Τεχνητής Νοημοσύνης, οι επιστήμονες δεδομένων και οι προγραμματιστές Τεχνητής Νοημοσύνης εντοπίζουν και αντιμετωπίζουν πιθανά εμπόδια στο σύστημα που θα μπορούσαν ακούσια να αποκλείσουν ανθρώπους. Για παράδειγμα, υπάρχουν 1 δισεκατομμύριο άνθρωποι με αναπηρίες σε όλο τον κόσμο. Με την πρόοδο της Τεχνητής Νοημοσύνης, μπορούν να έχουν πρόσβαση σε ένα ευρύ φάσμα πληροφοριών και ευκαιριών πιο εύκολα στην καθημερινή τους ζωή. Αντιμετωπίζοντας τα εμπόδια, δημιουργούνται ευκαιρίες για καινοτομία και ανάπτυξη προϊόντων Τεχνητής Νοημοσύνης με καλύτερες εμπειρίες που ωφελούν όλους.
+Τα συστήματα AI πρέπει να σχεδιάζονται για να εμπλέκουν και να ενδυναμώνουν όλους. Κατά το σχεδιασμό και την υλοποίηση συστημάτων AI, οι επιστήμονες δεδομένων και οι προγραμματιστές AI εντοπίζουν και αντιμετωπίζουν πιθανά εμπόδια στο σύστημα που μπορεί να αποκλείσουν ακούσια ανθρώπους. Για παράδειγμα, υπάρχουν 1 δισεκατομμύριο άνθρωποι με αναπηρίες σε όλο τον κόσμο. Με την πρόοδο της AI, μπορούν να έχουν ευκολότερη πρόσβαση σε ένα ευρύ φάσμα πληροφοριών και ευκαιριών στην καθημερινή τους ζωή. Με την αντιμετώπιση των εμποδίων δημιουργούνται ευκαιρίες καινοτομίας και ανάπτυξης προϊόντων AI με καλύτερες εμπειρίες που ωφελούν όλους.
-> [🎥 Κάντε κλικ εδώ για ένα βίντεο: συμπερίληψη στην Τεχνητή Νοημοσύνη](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
+> [🎥 Κάντε κλικ εδώ για βίντεο: ενσωμάτωση στην AI](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
### Ασφάλεια και ιδιωτικότητα
-Τα συστήματα Τεχνητής Νοημοσύνης πρέπει να είναι ασφαλή και να σέβονται την ιδιωτικότητα των ανθρώπων. Οι άνθρωποι έχουν λιγότερη εμπιστοσύνη σε συστήματα που θέτουν την ιδιωτικότητά τους, τις πληροφορίες τους ή τη ζωή τους σε κίνδυνο. Κατά την εκπαίδευση μοντέλων μηχανικής μάθησης, βασιζόμαστε στα δεδομένα για να παράγουμε τα καλύτερα αποτελέσματα. Κάνοντας αυτό, πρέπει να λαμβάνεται υπόψη η προέλευση και η ακεραιότητα των δεδομένων. Για παράδειγμα, υποβλήθηκαν τα δεδομένα από χρήστες ή ήταν διαθέσιμα δημόσια; Στη συνέχεια, ενώ εργαζόμαστε με τα δεδομένα, είναι κρίσιμο να αναπτύξουμε συστήματα Τεχνητής Νοημοσύνης που μπορούν να προστατεύσουν εμπιστευτικές πληροφορίες και να αντισταθούν σε επιθέσεις. Καθώς η Τεχνητή Νοημοσύνη γίνεται πιο διαδεδομένη, η προστασία της ιδιωτικότητας και η ασφάλεια σημαντικών προσωπικών και επιχειρηματικών πληροφοριών γίνεται πιο κρίσιμη και περίπλοκη. Τα ζητήματα ιδιωτικότητας και ασφάλειας δεδομένων απαιτούν ιδιαίτερη προσοχή για την Τεχνητή Νοημοσύνη, επειδή η πρόσβαση στα δεδομένα είναι απαραίτητη για να κάνουν τα συστήματα Τεχνητής Νοημοσύνης ακριβείς και ενημερωμένες προβλέψεις και αποφάσεις για τους ανθρώπους.
+Τα συστήματα AI πρέπει να είναι ασφαλή και να σέβονται την ιδιωτικότητα των ανθρώπων. Οι άνθρωποι έχουν λιγότερη εμπιστοσύνη σε συστήματα που θέτουν σε κίνδυνο την ιδιωτικότητά τους, τις πληροφορίες ή τη ζωή τους. Κατά την εκπαίδευση μοντέλων μηχανικής μάθησης βασιζόμαστε σε δεδομένα για να παράγουμε τα καλύτερα αποτελέσματα. Κατά τη διαδικασία αυτή, πρέπει να λαμβάνονται υπόψη η προέλευση των δεδομένων και η ακεραιότητά τους. Για παράδειγμα, τα δεδομένα προέρχονταν από τον χρήστη ή ήταν δημόσια διαθέσιμα; Στη συνέχεια, κατά την εργασία με τα δεδομένα, είναι κρίσιμη η ανάπτυξη συστημάτων AI που μπορούν να προστατεύουν εμπιστευτικές πληροφορίες και να αντιστέκονται σε επιθέσεις. Καθώς η AI καθίσταται πιο διαδεδομένη, η προστασία της ιδιωτικότητας και η ασφάλεια σημαντικών προσωπικών και επιχειρησιακών πληροφοριών γίνεται όλο και πιο κρίσιμη και πολύπλοκη. Τα ζητήματα ιδιωτικότητας και ασφάλειας δεδομένων απαιτούν ιδιαίτερη προσοχή για την AI επειδή η πρόσβαση στα δεδομένα είναι ουσιαστική για να κάνει ακριβείς και ενημερωμένες προβλέψεις και αποφάσεις για ανθρώπους.
-> [🎥 Κάντε κλικ εδώ για ένα βίντεο: ασφάλεια στην Τεχνητή Νοημοσύνη](https://www.microsoft.com/videoplayer/embed/RE4voJF)
+> [🎥 Κάντε κλικ εδώ για βίντεο: ασφάλεια στην AI](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- Ως βιομηχανία έχουμε σημειώσει σημαντική πρόοδο στην ιδιωτικότητα και την ασφάλεια, τροφοδοτούμενη σημαντικά από κανονισμούς όπως ο GDPR (Γενικός Κανονισμός για την Προστασία Δεδομένων).
-- Παρ' όλα αυτά, με τα συστήματα Τεχνητής Νοημοσύνης πρέπει να αναγνωρίσουμε την ένταση μεταξύ της ανάγκης για περισσότερα προσωπικά δεδομένα ώστε να κάνουμε τα συστήματα πιο προσωπικά και αποτελεσματικά – και της ιδιωτικότητας.
-- Όπως με τη γέννηση των συνδεδεμένων υπολογιστών μέσω του διαδικτύου, βλέπουμε επίσης μια τεράστια αύξηση στον αριθμό των ζητημάτων ασφάλειας που σχετίζονται με την Τεχνητή Νοημοσύνη.
-- Ταυτόχρονα, έχουμε δει την Τεχνητή Νοημοσύνη να χρησιμοποιείται για τη βελτίωση της ασφάλειας. Για παράδειγμα, οι περισσότερες σύγχρονες σαρωτές αντι-ιών καθοδηγούνται από ευρετικές Τεχνητής Νοημοσύνης.
-- Πρέπει να διασφαλίσουμε ότι οι διαδικασίες Επιστήμης Δεδομένων μας συνδυάζονται αρμονικά με τις τελευταίες πρακτικές ιδιωτικότητας και ασφάλειας.
+- Ως κλάδος έχουμε κάνει σημαντικές προόδους στην Ιδιωτικότητα & ασφάλεια, τροφοδοτούμενες σημαντικά από κανονισμούς όπως ο GDPR (Γενικός Κανονισμός Προστασίας Δεδομένων).
+- Ωστόσο, με τα συστήματα AI πρέπει να αναγνωρίσουμε την ένταση μεταξύ της ανάγκης για περισσότερα προσωπικά δεδομένα για να γίνουν τα συστήματα πιο προσωπικά και αποτελεσματικά – και της ιδιωτικότητας.
+- Όπως με τη γέννηση των συνδεδεμένων υπολογιστών με το διαδίκτυο, βλέπουμε επίσης μεγάλη αύξηση σε ζητήματα ασφάλειας που σχετίζονται με την AI.
+- Ταυτόχρονα, έχουμε δει την AI να χρησιμοποιείται για τη βελτίωση της ασφάλειας. Για παράδειγμα, οι περισσότερες σύγχρονες σαρώτριες αντι-ιού σήμερα τροφοδοτούνται από ευρετικές μεθόδους AI.
+- Πρέπει να διασφαλίσουμε ότι οι διαδικασίες Επιστήμης Δεδομένων μας εναρμονίζονται αρμονικά με τις πιο σύγχρονες πρακτικές ιδιωτικότητας και ασφάλειας.
-### Διαφάνεια
-Τα συστήματα Τεχνητής Νοημοσύνης πρέπει να είναι κατανοητά. Ένα κρίσιμο μέρος της διαφάνειας είναι η εξήγηση της συμπεριφοράς των συστημάτων Τεχνητής Νοημοσύνης και των συστατικών τους. Η βελτίωση της κατανόησης των συστημάτων Τεχνητής Νοημοσύνης απαιτεί από τους ενδιαφερόμενους να κατανοήσουν πώς και γιατί λειτουργούν, ώστε να μπορούν να εντοπίσουν πιθανά ζητήματα απόδοσης, ανησυχίες για την ασφάλεια και την ιδιωτικότητα, προκαταλήψεις, πρακτικές αποκλεισμού ή ακούσια αποτελέσματα. Πιστεύουμε επίσης ότι όσοι χρησιμοποιούν συστήματα Τεχνητής Νοημοσύνης πρέπει να είναι ειλικρινείς και ανοιχτοί σχετικά με το πότε, γιατί και πώς επιλέγουν να τα χρησιμοποιήσουν. Καθώς και για τους περιορισμούς των συστημάτων που χρησιμοποιούν. Για παράδειγμα, εάν μια τράπεζα χρησιμοποιεί ένα σύστημα Τεχνητής Νοημοσύνης για να υποστηρίξει τις αποφάσεις δανεισμού καταναλωτών, είναι σημαντικό να εξεταστούν τα αποτελέσματα και να κατανοηθεί ποια δεδομένα επηρεάζουν τις συστάσεις του συστήματος. Οι κυβερνήσεις αρχίζουν να ρυθμίζουν την Τεχνητή Νοημοσύνη σε διάφορους κλάδους, οπότε οι επιστήμονες δεδομένων και οι οργανισμοί πρέπει να εξηγήσουν εάν ένα σύστημα Τεχνητής Νοημοσύνης πληροί τις κανονιστικές απαιτήσεις, ειδικά όταν υπάρχει ανεπιθύμητο αποτέλεσμα.
+### Διαφάνεια
+Τα συστήματα AI πρέπει να είναι κατανοητά. Ένα κρίσιμο μέρος της διαφάνειας είναι η εξήγηση της συμπεριφοράς των συστημάτων AI και των συστατικών τους. Η βελτίωση της κατανόησης των συστημάτων AI απαιτεί από τους εμπλεκόμενους να κατανοούν πώς και γιατί λειτουργούν ώστε να μπορούν να εντοπίζουν πιθανά προβλήματα απόδοσης, ζητήματα ασφάλειας και ιδιωτικότητας, προκαταλήψεις, αποκλειστικές πρακτικές ή ανεπιθύμητα αποτελέσματα. Πιστεύουμε επίσης ότι όσοι χρησιμοποιούν συστήματα AI πρέπει να είναι ειλικρινείς και διαφανείς σχετικά με το πότε, γιατί και πώς επιλέγουν να τα αναπτύξουν. Καθώς και για τους περιορισμούς των συστημάτων που χρησιμοποιούν. Για παράδειγμα, αν μια τράπεζα χρησιμοποιεί σύστημα AI για να υποστηρίξει τις αποφάσεις χορήγησης δανείων, είναι σημαντικό να εξεταστούν τα αποτελέσματα και να κατανοήσουν ποια δεδομένα επηρεάζουν τις συστάσεις του συστήματος. Οι κυβερνήσεις αρχίζουν να ρυθμίζουν την AI σε διάφορους κλάδους, οπότε οι επιστήμονες δεδομένων και οι οργανισμοί πρέπει να εξηγούν εάν ένα σύστημα AI πληροί τους κανονισμούς, ειδικά όταν υπάρχει ανεπιθύμητο αποτέλεσμα.
-> [🎥 Κάντε κλικ εδώ για ένα βίντεο: διαφάνεια στην Τεχνητή Νοημοσύνη](https://www.microsoft.com/videoplayer/embed/RE4voJF)
+> [🎥 Κάντε κλικ εδώ για βίντεο: διαφάνεια στην AI](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- Επειδή τα συστήματα Τεχνητής Νοημοσύνης είναι τόσο περίπλοκα, είναι δύσκολο να κατανοήσουμε πώς λειτουργούν και να ερμηνεύσουμε τα αποτελέσματα.
-- Αυτή η έλλειψη κατανόησης επηρεάζει τον τρόπο με τον οποίο αυτά τα συστήματα διαχειρίζονται, λειτουργούν και τεκμηριώνονται.
-- Αυτή η έλλειψη κατανόησης επηρεάζει πιο σημαντικά τις αποφάσεις που λαμβάνονται χρησιμοποιώντας τα αποτελέσματα που παράγουν αυτά τα συστήματα.
+- Επειδή τα συστήματα AI είναι τόσο πολύπλοκα, είναι δύσκολο να κατανοήσουμε πώς λειτουργούν και να ερμηνεύσουμε τα αποτελέσματα.
+- Αυτή η έλλειψη κατανόησης επηρεάζει τον τρόπο διαχείρισης, λειτουργίας και τεκμηρίωσης αυτών των συστημάτων.
+- Αυτή η έλλειψη κατανόησης επηρεάζει πιο σημαντικά τις αποφάσεις που λαμβάνονται με βάση τα αποτελέσματα αυτών των συστημάτων.
### Λογοδοσία
+
+Οι άνθρωποι που σχεδιάζουν και αναπτύσσουν συστήματα AI πρέπει να είναι υπεύθυνοι για το πώς λειτουργούν τα συστήματά τους. Η ανάγκη για λογοδοσία είναι ιδιαίτερα κρίσιμη με ευαίσθητες τεχνολογίες όπως η αναγνώριση προσώπου. Πρόσφατα, έχει αυξηθεί η ζήτηση για τεχνολογία αναγνώρισης προσώπου, ειδικά από οργανώσεις επιβολής του νόμου που βλέπουν τη δυνατότητα χρήσης της τεχνολογίας για την εύρεση αγνοουμένων παιδιών. Ωστόσο, αυτές οι τεχνολογίες θα μπορούσαν ενδεχομένως να χρησιμοποιηθούν από μια κυβέρνηση για να θέσουν σε κίνδυνο τα θεμελιώδη δικαιώματα των πολιτών, π.χ. επιτρέποντας συνεχή επιτήρηση συγκεκριμένων ατόμων. Επομένως, οι επιστήμονες δεδομένων και οι οργανισμοί πρέπει να είναι υπεύθυνοι για το πώς το σύστημα AI επηρεάζει τα άτομα ή την κοινωνία.
+
+[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Η προσέγγιση της Microsoft για την Υπεύθυνη AI")
+
+> 🎥 Κάντε κλικ στην εικόνα παραπάνω για ένα βίντεο: Προειδοποιήσεις για Μαζική Παρακολούθηση μέσω Αναγνώρισης Προσώπου
+
+Τελικά, ένα από τα μεγαλύτερα ερωτήματα για τη γενιά μας, καθώς είναι η πρώτη γενιά που φέρνει την AI στην κοινωνία, είναι πώς να διασφαλίσουμε ότι οι υπολογιστές θα παραμένουν λογοδοτικοί προς τους ανθρώπους και πώς να διασφαλίσουμε ότι αυτοί που σχεδιάζουν τους υπολογιστές παραμένουν υπεύθυνοι προς όλους τους υπόλοιπους.
+
+## Αξιολόγηση επιπτώσεων
+
+Πριν την εκπαίδευση ενός μοντέλου μηχανικής μάθησης, είναι σημαντικό να διενεργείται αξιολόγηση επιπτώσεων για να κατανοήσουμε τον σκοπό του συστήματος AI, ποια είναι η προβλεπόμενη χρήση, πού θα αναπτυχθεί και ποιος θα αλληλεπιδρά με το σύστημα. Αυτά είναι χρήσιμα για τους αξιολογητές ή ελεγκτές του συστήματος ώστε να γνωρίζουν ποιους παράγοντες πρέπει να λάβουν υπόψη κατά την αναγνώριση πιθανών κινδύνων και αναμενόμενων συνεπειών.
+
+Τα παρακάτω είναι τομείς εστίασης κατά τη διεξαγωγή μιας αξιολόγησης επιπτώσεων:
+
+* **Αρνητική επίπτωση σε άτομα**. Η επίγνωση οποιουδήποτε περιορισμού ή απαιτήσεων, μη υποστηριζόμενης χρήσης ή γνωστών περιορισμών που εμποδίζουν την απόδοση του συστήματος είναι ζωτικής σημασίας για να διασφαλιστεί ότι το σύστημα δεν χρησιμοποιείται με τρόπο που θα μπορούσε να βλάψει τα άτομα.
+* **Απαιτήσεις δεδομένων**. Η κατανόηση του πώς και πού το σύστημα θα χρησιμοποιήσει δεδομένα επιτρέπει στους αξιολογητές να διερευνήσουν τυχόν απαιτήσεις δεδομένων που πρέπει να ληφθούν υπόψη (π.χ. GDPR ή κανονισμοί HIPAA). Επιπλέον, να εξεταστεί αν η πηγή ή η ποσότητα των δεδομένων είναι επαρκής για την εκπαίδευση.
+* **Περίληψη επιπτώσεων**. Συγκεντρώστε έναν κατάλογο πιθανών βλαβών που θα μπορούσαν να προκύψουν από τη χρήση του συστήματος. Κατά τη διάρκεια του κύκλου ζωής της ΜΜ, εξετάστε αν τα προβλήματα που εντοπίστηκαν έχουν μετριαστεί ή αντιμετωπιστεί.
+* **Εφαρμόσιμα στόχοι** για κάθε μία από τις έξι βασικές αρχές. Αξιολογήστε αν οι στόχοι κάθε αρχής επιτυγχάνονται και αν υπάρχουν κενά.
+
+
+## Αποσφαλμάτωση με υπεύθυνη AI
+
+Παρόμοια με την αποσφαλμάτωση μιας εφαρμογής λογισμικού, η αποσφαλμάτωση ενός συστήματος AI είναι μια αναγκαία διαδικασία εντοπισμού και επίλυσης ζητημάτων στο σύστημα. Υπάρχουν πολλοί παράγοντες που μπορεί να επηρεάσουν την απόδοση ενός μοντέλου ώστε να μην λειτουργεί όπως αναμένεται ή υπεύθυνα. Οι περισσότερες παραδοσιακές μετρικές απόδοσης μοντέλου είναι ποσοτικές συγκεντρωτικές τιμές της απόδοσης ενός μοντέλου, οι οποίες δεν αρκούν για να αναλύσουν πώς ένα μοντέλο παραβιάζει τις αρχές υπεύθυνης AI. Επιπλέον, ένα μοντέλο μηχανικής μάθησης είναι ένα μαύρο κουτί που δυσκολεύει να κατανοηθεί τι οδηγεί στο αποτέλεσμα ή να δοθεί εξήγηση όταν κάνει λάθος. Αργότερα σε αυτό το μάθημα, θα μάθουμε πώς να χρησιμοποιούμε τον πίνακα ελέγχου Responsible AI για να βοηθά στην αποσφαλμάτωση συστημάτων AI. Ο πίνακας ελέγχου παρέχει ολιστικό εργαλείο για επιστήμονες δεδομένων και προγραμματιστές AI για να εκτελούν:
+
+* **Ανάλυση σφαλμάτων**. Για τον εντοπισμό της κατανομής σφαλμάτων του μοντέλου που μπορεί να επηρεάσουν τη δικαιοσύνη ή την αξιοπιστία του συστήματος.
+* **Επισκόπηση μοντέλου**. Για να ανακαλύψετε πού υπάρχουν διαφορές στην απόδοση του μοντέλου ανάμεσα σε ομάδες δεδομένων.
+* **Ανάλυση δεδομένων**. Για να κατανοήσετε την κατανομή δεδομένων και να εντοπίσετε οποιαδήποτε πιθανή προκατάληψη στα δεδομένα που θα μπορούσε να οδηγήσει σε ζητήματα δικαιοσύνης, ενσωμάτωσης και αξιοπιστίας.
+* **Ερμηνευσιμότητα μοντέλου**. Για να κατανοήσετε τι επηρεάζει ή καθοδηγεί τις προβλέψεις του μοντέλου. Αυτό βοηθά στην εξήγηση της συμπεριφοράς του μοντέλου, κάτι σημαντικό για τη διαφάνεια και τη λογοδοσία.
+
+
+## 🚀 Πρόκληση
+
+Για να αποτρέψουμε να εισαχθούν βλάβες εξαρχής, πρέπει:
+
+- να υπάρχει ποικιλία υποβάθρων και προοπτικών μεταξύ των ανθρώπων που εργάζονται στα συστήματα
+- να επενδύσουμε σε σύνολα δεδομένων που αντικατοπτρίζουν τη διαφορετικότητα της κοινωνίας μας
+- να αναπτύξουμε καλύτερες μεθόδους σε όλο τον κύκλο ζωής της μηχανικής μάθησης για την ανίχνευση και διόρθωση της υπεύθυνης AI όταν αυτή εμφανίζεται
+
+Σκεφτείτε σενάρια πραγματικής ζωής όπου η αναξιοπιστία ενός μοντέλου γίνεται προφανής στην κατασκευή και χρήση του μοντέλου. Τι άλλο θα πρέπει να λάβουμε υπόψη μας;
+
+## [Μετά-διάλεξη κουίζ](https://ff-quizzes.netlify.app/en/ml/)
+
+## Ανασκόπηση & Αυτοδιδασκαλία
+
-Οι άνθρωποι που σχεδιάζουν και αναπτύσσουν συστήματα Τεχνητής Νοημοσύνης πρέπει να είναι υπεύθυ
-Παρακολουθήστε αυτό το εργαστήριο για να εμβαθύνετε στα θέματα:
+Σε αυτό το μάθημα, έχετε μάθει μερικά βασικά στοιχεία των εννοιών της δικαιοσύνης και αδικίας στη μηχανική μάθηση.
+
+Παρακολουθήστε αυτό το εργαστήριο για να εμβαθύνετε στα θέματα:
-- Στην αναζήτηση υπεύθυνης AI: Εφαρμογή αρχών στην πράξη από τους Besmira Nushi, Mehrnoosh Sameki και Amit Sharma
+- Στην επιδίωξη της υπεύθυνης ΤΝ: Φέρνοντας τις αρχές στην πράξη από τις Besmira Nushi, Mehrnoosh Sameki και Amit Sharma
-[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: Ένα ανοιχτού κώδικα πλαίσιο για την ανάπτυξη υπεύθυνης AI")
+[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI")
-> 🎥 Κάντε κλικ στην εικόνα παραπάνω για το βίντεο: RAI Toolbox: Ένα ανοιχτού κώδικα πλαίσιο για την ανάπτυξη υπεύθυνης AI από τους Besmira Nushi, Mehrnoosh Sameki και Amit Sharma
+> 🎥 Κάντε κλικ στην εικόνα παραπάνω για ένα βίντεο: RAI Toolbox: Ένα πλαίσιο ανοιχτού κώδικα για την κατασκευή υπεύθυνης ΤΝ από τις Besmira Nushi, Mehrnoosh Sameki και Amit Sharma
-Επίσης, διαβάστε:
+Επίσης, διαβάστε:
-- Το κέντρο πόρων RAI της Microsoft: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
+- κέντρο πόρων RAI της Microsoft: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
-- Η ερευνητική ομάδα FATE της Microsoft: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
+- η ερευνητική ομάδα FATE της Microsoft: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
-RAI Toolbox:
+RAI Toolbox:
- [Αποθετήριο GitHub του Responsible AI Toolbox](https://github.com/microsoft/responsible-ai-toolbox)
-Διαβάστε για τα εργαλεία του Azure Machine Learning για τη διασφάλιση της δικαιοσύνης:
+Διαβάστε για τα εργαλεία του Azure Machine Learning που εξασφαλίζουν τη δικαιοσύνη:
-- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
+- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
-## Εργασία
+## Ανάθεση
[Εξερευνήστε το RAI Toolbox](assignment.md)
---
-**Αποποίηση ευθύνης**:
-Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.
\ No newline at end of file
+
+**Αποποίηση ευθυνών**:
+Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία μετάφρασης με τεχνητή νοημοσύνη [Co-op Translator](https://github.com/Azure/co-op-translator). Ενώ επιδιώκουμε την ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή λανθασμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.
+
\ No newline at end of file
diff --git a/translations/el/2-Regression/1-Tools/README.md b/translations/el/2-Regression/1-Tools/README.md
index d42e9bb56..95e78ae4e 100644
--- a/translations/el/2-Regression/1-Tools/README.md
+++ b/translations/el/2-Regression/1-Tools/README.md
@@ -1,120 +1,121 @@
-# Ξεκινήστε με Python και Scikit-learn για μοντέλα παλινδρόμησης
+# Ξεκινώντας με Python και Scikit-learn για μοντέλα παλινδρόμησης
-
+
-> Σκίτσο από [Tomomi Imura](https://www.twitter.com/girlie_mac)
+> Sketchnote από τον/την [Tomomi Imura](https://www.twitter.com/girlie_mac)
-## [Προ-μάθημα κουίζ](https://ff-quizzes.netlify.app/en/ml/)
+## [Προτελευταίο κουίζ](https://ff-quizzes.netlify.app/en/ml/)
> ### [Αυτό το μάθημα είναι διαθέσιμο και σε R!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
## Εισαγωγή
-Σε αυτά τα τέσσερα μαθήματα, θα ανακαλύψετε πώς να δημιουργείτε μοντέλα παλινδρόμησης. Θα συζητήσουμε σύντομα για το τι χρησιμεύουν. Αλλά πριν κάνετε οτιδήποτε, βεβαιωθείτε ότι έχετε τα κατάλληλα εργαλεία για να ξεκινήσετε τη διαδικασία!
+Σε αυτά τα τέσσερα μαθήματα, θα ανακαλύψετε πώς να δημιουργείτε μοντέλα παλινδρόμησης. Θα συζητήσουμε σε λίγο γι' αυτό το σκοπό. Αλλά πριν κάνετε οτιδήποτε, βεβαιωθείτε ότι έχετε τα σωστά εργαλεία στη θέση τους για να ξεκινήσετε τη διαδικασία!
Σε αυτό το μάθημα, θα μάθετε πώς να:
-- Ρυθμίσετε τον υπολογιστή σας για τοπικές εργασίες μηχανικής μάθησης.
-- Εργαστείτε με Jupyter notebooks.
-- Χρησιμοποιήσετε το Scikit-learn, συμπεριλαμβανομένης της εγκατάστασης.
-- Εξερευνήσετε την γραμμική παλινδρόμηση με μια πρακτική άσκηση.
+- Ρυθμίζετε τον υπολογιστή σας για τοπικές εργασίες μηχανικής μάθησης.
+- Δουλεύετε με Jupyter Notebooks.
+- Χρησιμοποιείτε το Scikit-learn, συμπεριλαμβανομένης της εγκατάστασης.
+- Εξερευνάτε τη γραμμική παλινδρόμηση με μια πρακτική άσκηση.
## Εγκαταστάσεις και ρυθμίσεις
-[](https://youtu.be/-DfeD2k2Kj0 "ML για αρχάριους - Ρυθμίστε τα εργαλεία σας για να δημιουργήσετε μοντέλα μηχανικής μάθησης")
+[](https://youtu.be/-DfeD2k2Kj0 "ML για αρχάριους - Ρύθμισε τα εργαλεία σου για την κατασκευή μοντέλων Μηχανικής Μάθησης")
-> 🎥 Κάντε κλικ στην εικόνα παραπάνω για ένα σύντομο βίντεο σχετικά με τη ρύθμιση του υπολογιστή σας για 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) για να διευκολύνουν τη ρύθμιση για ορισμένους χρήστες.
+1. **Εγκαταστήστε Python**. Βεβαιωθείτε ότι η [Python](https://www.python.org/downloads/) είναι εγκατεστημένη στον υπολογιστή σας. Θα χρησιμοποιήσετε την Python για πολλές εργασίες επιστήμης δεδομένων και μηχανικής μάθησης. Τα περισσότερα συστήματα υπολογιστών έχουν ήδη εγκατεστημένη μια έκδοση Python. Υπάρχουν επίσης χρήσιμα [Πακέτα Κωδικοποίησης Python](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) διαθέσιμα για να απλοποιήσουν την εγκατάσταση για ορισμένους χρήστες.
- Ωστόσο, ορισμένες χρήσεις του Python απαιτούν μία έκδοση του λογισμικού, ενώ άλλες απαιτούν διαφορετική έκδοση. Για αυτόν τον λόγο, είναι χρήσιμο να εργάζεστε μέσα σε ένα [εικονικό περιβάλλον](https://docs.python.org/3/library/venv.html).
+ Ωστόσο, κάποιες χρήσεις της Python απαιτούν μια έκδοση του λογισμικού, ενώ άλλες άλλη έκδοση. Γι' αυτό είναι χρήσιμο να δουλεύετε μέσα σε ένα [εικονικό περιβάλλον](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 σε αυτό το μάθημα, οπότε ίσως θέλετε να εξοικειωθείτε με το πώς να [ρυθμίσετε το Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) για ανάπτυξη Python.
+2. **Εγκαταστήστε το Visual Studio Code**. Βεβαιωθείτε ότι έχετε εγκαταστήσει το Visual Studio Code στον υπολογιστή σας. Ακολουθήστε αυτές τις οδηγίες για να [εγκαταστήσετε το Visual Studio Code](https://code.visualstudio.com/) για την βασική εγκατάσταση. Θα χρησιμοποιήσετε Python στο Visual Studio Code σε αυτό το μάθημα, οπότε ίσως θέλετε να εξοικειωθείτε με το πώς να [ρυθμίσετε το Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) για ανάπτυξη Python.
- > Εξοικειωθείτε με το Python δουλεύοντας μέσα από αυτή τη συλλογή [Learn modules](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)
+ > Εξοικειωθείτε με την Python δουλεύοντας μέσα από αυτή τη συλλογή από [Μαθήματα](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)
>
> [](https://youtu.be/yyQM70vi7V8 "Ρύθμιση Python με Visual Studio Code")
>
> 🎥 Κάντε κλικ στην εικόνα παραπάνω για ένα βίντεο: χρήση Python μέσα στο VS Code.
-3. **Εγκαταστήστε το Scikit-learn**, ακολουθώντας [αυτές τις οδηγίες](https://scikit-learn.org/stable/install.html). Επειδή πρέπει να βεβαιωθείτε ότι χρησιμοποιείτε Python 3, συνιστάται να χρησιμοποιήσετε ένα εικονικό περιβάλλον. Σημειώστε ότι αν εγκαθιστάτε αυτήν τη βιβλιοθήκη σε Mac M1, υπάρχουν ειδικές οδηγίες στη σελίδα που συνδέεται παραπάνω.
+3. **Εγκαταστήστε το Scikit-learn**, ακολουθώντας [αυτές τις οδηγίες](https://scikit-learn.org/stable/install.html). Επειδή πρέπει να βεβαιωθείτε ότι χρησιμοποιείτε Python 3, συνιστάται η χρήση ενός εικονικού περιβάλλοντος. Σημειώστε, αν εγκαθιστάτε αυτή τη βιβλιοθήκη σε Mac M1, υπάρχουν ειδικές οδηγίες στη σελίδα που συνδέεται παραπάνω.
-4. **Εγκαταστήστε το Jupyter Notebook**. Θα χρειαστεί να [εγκαταστήσετε το πακέτο Jupyter](https://pypi.org/project/jupyter/).
+1. **Εγκαταστήστε το Jupyter Notebook**. Θα χρειαστεί να [εγκαταστήσετε το πακέτο Jupyter](https://pypi.org/project/jupyter/).
-## Το περιβάλλον συγγραφής ML σας
+## Το περιβάλλον συγγραφής ΜΜ σας
-Θα χρησιμοποιήσετε **notebooks** για να αναπτύξετε τον κώδικα Python σας και να δημιουργήσετε μοντέλα μηχανικής μάθησης. Αυτός ο τύπος αρχείου είναι ένα κοινό εργαλείο για επιστήμονες δεδομένων και μπορεί να αναγνωριστεί από την κατάληξη `.ipynb`.
+Θα χρησιμοποιήσετε **notebooks** για την ανάπτυξη του κώδικα Python και τη δημιουργία μοντέλων μηχανικής μάθησης. Αυτός ο τύπος αρχείου είναι ένα κοινό εργαλείο για επιστήμονες δεδομένων και μπορούν να αναγνωριστούν από το επίθημα ή την επέκταση `.ipynb`.
-Τα notebooks είναι ένα διαδραστικό περιβάλλον που επιτρέπει στον προγραμματιστή να γράφει κώδικα και να προσθέτει σημειώσεις και τεκμηρίωση γύρω από τον κώδικα, κάτι που είναι αρκετά χρήσιμο για πειραματικά ή ερευνητικά έργα.
+Τα notebooks είναι ένα διαδραστικό περιβάλλον που επιτρέπει στον προγραμματιστή να γράφει κώδικα και να προσθέτει σημειώσεις και τεκμηρίωση γύρω από τον κώδικα, κάτι που είναι πολύ χρήσιμο για πειραματικά ή ερευνητικά έργα.
-[](https://youtu.be/7E-jC8FLA2E "ML για αρχάριους - Ρύθμιση Jupyter Notebooks για να ξεκινήσετε τη δημιουργία μοντέλων παλινδρόμησης")
+[](https://youtu.be/7E-jC8FLA2E "ML για αρχάριους - Ρύθμισε τα Jupyter Notebooks για να ξεκινήσεις την κατασκευή μοντέλων παλινδρόμησης")
-> 🎥 Κάντε κλικ στην εικόνα παραπάνω για ένα σύντομο βίντεο σχετικά με αυτήν την άσκηση.
+> 🎥 Κάντε κλικ στην εικόνα παραπάνω για ένα σύντομο βίντεο που δείχνει τη διαδικασία αυτής της άσκησης.
-### Άσκηση - εργασία με ένα notebook
+### Άσκηση - δουλέψτε με ένα notebook
-Σε αυτόν τον φάκελο, θα βρείτε το αρχείο _notebook.ipynb_.
+Σε αυτό το φάκελο, θα βρείτε το αρχείο _notebook.ipynb_.
1. Ανοίξτε το _notebook.ipynb_ στο Visual Studio Code.
- Ένας Jupyter server θα ξεκινήσει με Python 3+. Θα βρείτε περιοχές του notebook που μπορούν να `εκτελεστούν`, κομμάτια κώδικα. Μπορείτε να εκτελέσετε ένα μπλοκ κώδικα, επιλέγοντας το εικονίδιο που μοιάζει με κουμπί αναπαραγωγής.
+ Ένας Jupyter server θα ξεκινήσει με Python 3+ ενεργοποιημένη. Θα βρείτε περιοχές του notebook που μπορούν να `τρέξουν`, κομμάτια κώδικα. Μπορείτε να τρέξετε ένα μπλοκ κώδικα επιλέγοντας το εικονίδιο που μοιάζει με κουμπί play.
-2. Επιλέξτε το εικονίδιο `md` και προσθέστε λίγο markdown, και το ακόλουθο κείμενο **# Καλώς ήρθατε στο notebook σας**.
+1. Επιλέξτε το εικονίδιο `md` και προσθέστε λίγο markdown, και το παρακάτω κείμενο **# Καλώς ήρθατε στο notebook σας**.
Στη συνέχεια, προσθέστε λίγο κώδικα Python.
-3. Πληκτρολογήστε **print('hello notebook')** στο μπλοκ κώδικα.
-4. Επιλέξτε το βέλος για να εκτελέσετε τον κώδικα.
+1. Πληκτρολογήστε **print('hello notebook')** στο μπλοκ κώδικα.
+1. Επιλέξτε το βελάκι για να τρέξετε τον κώδικα.
- Θα πρέπει να δείτε την εκτυπωμένη δήλωση:
+ Πρέπει να δείτε την εκτυπωμένη δήλωση:
```output
hello notebook
```
-
+
-Μπορείτε να ενσωματώσετε τον κώδικα σας με σχόλια για να τεκμηριώσετε το notebook.
+Μπορείτε να εναλλάσσετε τον κώδικά σας με σχόλια για να αυτο-τεκμηριώσετε το notebook.
-✅ Σκεφτείτε για λίγο πόσο διαφορετικό είναι το περιβάλλον εργασίας ενός web developer σε σχέση με αυτό ενός επιστήμονα δεδομένων.
+✅ Σκεφτείτε για ένα λεπτό πόσο διαφορετικό είναι το εργασιακό περιβάλλον ενός web developer σε σύγκριση με ενός επιστήμονα δεδομένων.
-## Ξεκινώντας με το Scikit-learn
+## Έναρξη με το Scikit-learn
-Τώρα που το Python έχει ρυθμιστεί στο τοπικό σας περιβάλλον και είστε εξοικειωμένοι με τα Jupyter notebooks, ας εξοικειωθούμε εξίσου με το Scikit-learn (προφέρεται `sci` όπως το `science`). Το Scikit-learn παρέχει ένα [εκτενές API](https://scikit-learn.org/stable/modules/classes.html#api-ref) για να σας βοηθήσει να εκτελέσετε εργασίες ML.
+Τώρα που η Python είναι ρυθμισμένη στο τοπικό σας περιβάλλον, και είστε άνετοι με τα Jupyter Notebooks, ας εξοικειωθούμε και με το Scikit-learn (προφέρεται `sci` όπως το `επιστήμη`). Το Scikit-learn παρέχει ένα [εκτεταμένο API](https://scikit-learn.org/stable/modules/classes.html#api-ref) για να σας βοηθήσει να εκτελέσετε εργασίες ΜΜ.
-Σύμφωνα με την [ιστοσελίδα τους](https://scikit-learn.org/stable/getting_started.html), "Το Scikit-learn είναι μια βιβλιοθήκη μηχανικής μάθησης ανοιχτού κώδικα που υποστηρίζει εποπτευόμενη και μη εποπτευόμενη μάθηση. Παρέχει επίσης διάφορα εργαλεία για προσαρμογή μοντέλων, προεπεξεργασία δεδομένων, επιλογή και αξιολόγηση μοντέλων, και πολλές άλλες λειτουργίες."
+Σύμφωνα με την [ιστοσελίδα](https://scikit-learn.org/stable/getting_started.html), "Το Scikit-learn είναι μια ανοιχτού κώδικα βιβλιοθήκη μηχανικής μάθησης που υποστηρίζει επιβλεπόμενη και μη επιβλεπόμενη μάθηση. Παρέχει επίσης διάφορα εργαλεία για την προσαρμογή μοντέλων, προεπεξεργασία δεδομένων, επιλογή και αξιολόγηση μοντέλων, και πολλά άλλα βοηθητικά."
-Σε αυτό το μάθημα, θα χρησιμοποιήσετε το Scikit-learn και άλλα εργαλεία για να δημιουργήσετε μοντέλα μηχανικής μάθησης για να εκτελέσετε αυτό που αποκαλούμε 'παραδοσιακές εργασίες μηχανικής μάθησης'. Έχουμε σκόπιμα αποφύγει τα νευρωνικά δίκτυα και τη βαθιά μάθηση, καθώς καλύπτονται καλύτερα στο επερχόμενο πρόγραμμα σπουδών μας 'AI για Αρχάριους'.
+Σε αυτό το μάθημα, θα χρησιμοποιήσετε το Scikit-learn και άλλα εργαλεία για να κατασκευάσετε μοντέλα μηχανικής μάθησης για να πραγματοποιήσετε αυτά που ονομάζουμε 'παραδοσιακές εργασίες μηχανικής μάθησης'. Αποφύγαμε σκόπιμα τα νευρωνικά δίκτυα και τη βαθιά μάθηση, καθώς καλύπτονται καλύτερα στο αναμενόμενο πρόγραμμα σπουδών μας 'AI για Αρχάριους'.
-Το Scikit-learn καθιστά απλό να δημιουργείτε μοντέλα και να τα αξιολογείτε για χρήση. Εστιάζει κυρίως στη χρήση αριθμητικών δεδομένων και περιέχει αρκετά έτοιμα σύνολα δεδομένων για χρήση ως εργαλεία μάθησης. Περιλαμβάνει επίσης προκατασκευασμένα μοντέλα για δοκιμή από τους μαθητές. Ας εξερευνήσουμε τη διαδικασία φόρτωσης προκατασκευασμένων δεδομένων και τη χρήση ενός ενσωματωμένου εκτιμητή για το πρώτο μοντέλο ML με το Scikit-learn με κάποια βασικά δεδομένα.
+Το Scikit-learn καθιστά εύκολη τη δημιουργία μοντέλων και την αξιολόγησή τους για χρήση. Επικεντρώνεται κυρίως στη χρήση αριθμητικών δεδομένων και περιέχει αρκετά έτοιμα σύνολα δεδομένων για χρήση ως εργαλεία μάθησης. Επίσης περιλαμβάνει προεγκατεστημένα μοντέλα για να δοκιμάσουν οι μαθητές. Ας εξερευνήσουμε πρώτα τη διαδικασία φόρτωσης προ-πακεταρισμένων δεδομένων και τη χρήση ενός ενσωματωμένου εκτιμητή για το πρώτο μοντέλο ΜΜ με το Scikit-learn με μερικά βασικά δεδομένα.
-## Άσκηση - το πρώτο σας notebook με Scikit-learn
+## Άσκηση - το πρώτο σας notebook Scikit-learn
-> Αυτό το σεμινάριο εμπνεύστηκε από το [παράδειγμα γραμμικής παλινδρόμησης](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) στην ιστοσελίδα του Scikit-learn.
+> Αυτό το σεμινάριο εμπνεύστηκε από το [παράδειγμα γραμμικής παλινδρόμησης](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) στον ιστότοπο του Scikit-learn.
-[](https://youtu.be/2xkXL5EUpS0 "ML για αρχάριους - Το πρώτο σας έργο γραμμικής παλινδρόμησης σε Python")
-> 🎥 Κάντε κλικ στην εικόνα παραπάνω για ένα σύντομο βίντεο σχετικά με αυτήν την άσκηση.
+[](https://youtu.be/2xkXL5EUpS0 "ML για αρχάριους - Το πρώτο σου έργο γραμμικής παλινδρόμησης σε Python")
-Στο αρχείο _notebook.ipynb_ που σχετίζεται με αυτό το μάθημα, διαγράψτε όλα τα κελιά πατώντας το εικονίδιο 'κάδος απορριμμάτων'.
+> 🎥 Κάντε κλικ στην εικόνα παραπάνω για ένα σύντομο βίντεο που δείχνει τη διαδικασία αυτής της άσκησης.
-Σε αυτήν την ενότητα, θα εργαστείτε με ένα μικρό σύνολο δεδομένων για τον διαβήτη που είναι ενσωματωμένο στο Scikit-learn για εκπαιδευτικούς σκοπούς. Φανταστείτε ότι θέλετε να δοκιμάσετε μια θεραπεία για ασθενείς με διαβήτη. Τα μοντέλα μηχανικής μάθησης μπορεί να σας βοηθήσουν να προσδιορίσετε ποιοι ασθενείς θα ανταποκριθούν καλύτερα στη θεραπεία, με βάση συνδυασμούς μεταβλητών. Ακόμη και ένα πολύ βασικό μοντέλο παλινδρόμησης, όταν οπτικοποιηθεί, μπορεί να δείξει πληροφορίες για μεταβλητές που θα σας βοηθήσουν να οργανώσετε τις θεωρητικές κλινικές σας δοκιμές.
+Στο αρχείο _notebook.ipynb_ που σχετίζεται με αυτό το μάθημα, καθαρίστε όλα τα κελιά πατώντας το εικονίδιο 'καλάθι απορριμμάτων'.
-✅ Υπάρχουν πολλοί τύποι μεθόδων παλινδρόμησης, και ποια θα επιλέξετε εξαρτάται από την απάντηση που ψάχνετε. Αν θέλετε να προβλέψετε το πιθανό ύψος ενός ατόμου μιας δεδομένης ηλικίας, θα χρησιμοποιούσατε γραμμική παλινδρόμηση, καθώς αναζητάτε μια **αριθμητική τιμή**. Αν ενδιαφέρεστε να ανακαλύψετε αν ένας τύπος κουζίνας πρέπει να θεωρείται vegan ή όχι, αναζητάτε μια **κατηγοριοποίηση**, οπότε θα χρησιμοποιούσατε λογιστική παλινδρόμηση. Θα μάθετε περισσότερα για τη λογιστική παλινδρόμηση αργότερα. Σκεφτείτε λίγο για κάποιες ερωτήσεις που μπορείτε να κάνετε στα δεδομένα και ποια από αυτές τις μεθόδους θα ήταν πιο κατάλληλη.
+Σε αυτή την ενότητα, θα δουλέψετε με ένα μικρό σύνολο δεδομένων σχετικά με τον διαβήτη που είναι ενσωματωμένο στο Scikit-learn για σκοπούς μάθησης. Φανταστείτε ότι θέλετε να δοκιμάσετε μια θεραπεία για ασθενείς με διαβήτη. Τα μοντέλα μηχανικής μάθησης μπορεί να σας βοηθήσουν να καθορίσετε ποιοι ασθενείς θα ανταποκριθούν καλύτερα στη θεραπεία, βάσει συνδυασμών μεταβλητών. Ακόμα και ένα πολύ βασικό μοντέλο παλινδρόμησης, όταν οπτικοποιείται, μπορεί να δείξει πληροφορίες για μεταβλητές που θα σας βοηθήσουν να οργανώσετε τις θεωρητικές σας κλινικές δοκιμές.
-Ας ξεκινήσουμε αυτήν την εργασία.
+✅ Υπάρχουν πολλοί τύποι μεθόδων παλινδρόμησης, και ποια θα επιλέξετε εξαρτάται από την απάντηση που ψάχνετε. Αν θέλετε να προβλέψετε το πιθανό ύψος για ένα άτομο σε μια δεδομένη ηλικία, θα χρησιμοποιήσετε τη γραμμική παλινδρόμηση, αφού ψάχνετε για μια **αριθμητική τιμή**. Αν ενδιαφέρεστε να ανακαλύψετε αν ένας τύπος κουζίνας πρέπει να θεωρείται vegan ή όχι, ψάχνετε για **κατηγορική ανάθεση**, οπότε θα χρησιμοποιήσετε τη λογιστική παλινδρόμηση. Θα μάθετε περισσότερα για τη λογιστική παλινδρόμηση αργότερα. Σκεφτείτε λίγο μερικές ερωτήσεις που μπορείτε να κάνετε στα δεδομένα, και ποια από αυτές τις μεθόδους θα ήταν πιο κατάλληλη.
+
+Ας ξεκινήσουμε αυτή την εργασία.
### Εισαγωγή βιβλιοθηκών
-Για αυτήν την εργασία θα εισάγουμε κάποιες βιβλιοθήκες:
+Για αυτή την εργασία, θα εισάγουμε μερικές βιβλιοθήκες:
-- **matplotlib**. Είναι ένα χρήσιμο [εργαλείο γραφικών](https://matplotlib.org/) και θα το χρησιμοποιήσουμε για να δημιουργήσουμε ένα γραμμικό διάγραμμα.
-- **numpy**. Το [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) είναι μια χρήσιμη βιβλιοθήκη για τη διαχείριση αριθμητικών δεδομένων στο Python.
-- **sklearn**. Αυτή είναι η [βιβλιοθήκη Scikit-learn](https://scikit-learn.org/stable/user_guide.html).
+- **matplotlib**. Είναι ένα χρήσιμο [εργαλείο γραφικών](https://matplotlib.org/) και θα το χρησιμοποιήσουμε για να δημιουργήσουμε ένα διάγραμμα γραμμής.
+- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) είναι μια χρήσιμη βιβλιοθήκη για χειρισμό αριθμητικών δεδομένων σε Python.
+- **sklearn**. Αυτή είναι η βιβλιοθήκη [Scikit-learn](https://scikit-learn.org/stable/user_guide.html).
-Εισάγετε κάποιες βιβλιοθήκες για να σας βοηθήσουν στις εργασίες σας.
+Εισάγετε μερικές βιβλιοθήκες για να βοηθήσετε με τις εργασίες σας.
-1. Προσθέστε εισαγωγές πληκτρολογώντας τον ακόλουθο κώδικα:
+1. Προσθέστε τις εισαγωγές πληκτρολογώντας τον ακόλουθο κώδικα:
```python
import matplotlib.pyplot as plt
@@ -124,22 +125,22 @@
Πάνω εισάγετε το `matplotlib`, το `numpy` και εισάγετε το `datasets`, `linear_model` και `model_selection` από το `sklearn`. Το `model_selection` χρησιμοποιείται για τη διαίρεση δεδομένων σε σύνολα εκπαίδευσης και δοκιμής.
-### Το σύνολο δεδομένων για τον διαβήτη
+### Το σύνολο δεδομένων διαβήτη
-Το ενσωματωμένο [σύνολο δεδομένων για τον διαβήτη](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) περιλαμβάνει 442 δείγματα δεδομένων σχετικά με τον διαβήτη, με 10 χαρακτηριστικές μεταβλητές, μερικές από τις οποίες περιλαμβάνουν:
+Το ενσωματωμένο [σύνολο δεδομένων διαβήτη](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) περιλαμβάνει 442 δείγματα δεδομένων σχετικά με τον διαβήτη, με 10 χαρακτηριστικές μεταβλητές, μερικές από τις οποίες είναι:
-- age: ηλικία σε χρόνια
+- ηλικία: ηλικία σε χρόνια
- bmi: δείκτης μάζας σώματος
- bp: μέση αρτηριακή πίεση
-- s1 tc: T-Cells (ένας τύπος λευκών αιμοσφαιρίων)
+- s1 tc: T-κύτταρα (είδος λευκών αιμοσφαιρίων)
-✅ Αυτό το σύνολο δεδομένων περιλαμβάνει την έννοια του 'φύλου' ως χαρακτηριστική μεταβλητή σημαντική για την έρευνα γύρω από τον διαβήτη. Πολλά ιατρικά σύνολα δεδομένων περιλαμβάνουν αυτόν τον τύπο δυαδικής ταξινόμησης. Σκεφτείτε λίγο πώς τέτοιες κατηγοριοποιήσεις μπορεί να αποκλείσουν ορισμένα μέρη του πληθυσμού από θεραπείες.
+✅ Αυτό το σύνολο δεδομένων περιλαμβάνει την έννοια του 'φύλου' ως χαρακτηριστική μεταβλητή σημαντική για τις έρευνες γύρω από τον διαβήτη. Πολλά ιατρικά σύνολα δεδομένων περιλαμβάνουν τέτοιου τύπου δυαδική ταξινόμηση. Σκεφτείτε λίγο πώς τέτοιες κατηγοριοποιήσεις μπορεί να αποκλείουν ορισμένα μέρη του πληθυσμού από θεραπείες.
Τώρα, φορτώστε τα δεδομένα X και y.
-> 🎓 Θυμηθείτε, αυτή είναι εποπτευόμενη μάθηση, και χρειαζόμαστε έναν ονομασμένο στόχο 'y'.
+> 🎓 Θυμηθείτε, αυτή είναι επιβλεπόμενη μάθηση, και χρειαζόμαστε έναν με το όνομα 'y' στόχο.
-Σε ένα νέο κελί κώδικα, φορτώστε το σύνολο δεδομένων για τον διαβήτη καλώντας το `load_diabetes()`. Η είσοδος `return_X_y=True` σηματοδοτεί ότι το `X` θα είναι ένας πίνακας δεδομένων και το `y` θα είναι ο στόχος παλινδρόμησης.
+Σε ένα νέο κελί κώδικα, φορτώστε το σύνολο δεδομένων διαβήτη καλώντας `load_diabetes()`. Η είσοδος `return_X_y=True` σηματοδοτεί ότι το `X` θα είναι ένας πίνακας δεδομένων, και το `y` θα είναι ο στόχος παλινδρόμησης.
1. Προσθέστε κάποιες εντολές εκτύπωσης για να δείξετε το σχήμα του πίνακα δεδομένων και το πρώτο του στοιχείο:
@@ -149,9 +150,9 @@
print(X[0])
```
- Αυτό που λαμβάνετε ως απάντηση είναι ένα tuple. Αυτό που κάνετε είναι να αντιστοιχίσετε τις δύο πρώτες τιμές του tuple στο `X` και `y` αντίστοιχα. Μάθετε περισσότερα [για τα tuples](https://wikipedia.org/wiki/Tuple).
+ Αυτό που παίρνετε ως απόκριση, είναι μια πλειάδα (tuple). Αυτό που κάνετε είναι να αναθέσετε τις δύο πρώτες τιμές της πλειάδας σε `X` και `y` αντίστοιχα. Μάθετε περισσότερα [για τις πλειάδες (tuples)](https://wikipedia.org/wiki/Tuple).
- Μπορείτε να δείτε ότι αυτά τα δεδομένα έχουν 442 στοιχεία διαμορφωμένα σε πίνακες των 10 στοιχείων:
+ Μπορείτε να δείτε ότι αυτά τα δεδομένα έχουν 442 αντικείμενα διαμορφωμένα σε πίνακες με 10 στοιχεία:
```text
(442, 10)
@@ -159,30 +160,75 @@
-0.04340085 -0.00259226 0.01990842 -0.01764613]
```
- ✅ Σκεφτείτε λίγο τη σχέση μεταξύ των δεδομένων και του στόχου παλινδρόμησης. Η γραμμική παλινδρόμηση προβλέπει σχέσεις μεταξύ της χαρακτηριστικής μεταβλητής X και της μεταβλητής στόχου y. Μπορείτε να βρείτε τον [στόχο](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) για το σύνολο δεδομένων για τον διαβήτη στην τεκμηρίωση; Τι δείχνει αυτό το σύνολο δεδομένων, δεδομένου του στόχου;
+ ✅ Σκεφτείτε λίγο τη σχέση μεταξύ των δεδομένων και του στόχου παλινδρόμησης. Η γραμμική παλινδρόμηση προβλέπει σχέσεις μεταξύ χαρακτηριστικού X και μεταβλητής στόχου y. Μπορείτε να βρείτε τον [στόχο](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) για το σύνολο δεδομένων διαβήτη στην τεκμηρίωση; Τι δείχνει αυτό το σύνολο δεδομένων, δεδομένου του στόχου;
+
+2. Στη συνέχεια, επιλέξτε ένα τμήμα αυτού του συνόλου δεδομένων για την απεικόνιση διαλέγοντας την 3η στήλη του συνόλου. Μπορείτε να το κάνετε αυτό χρησιμοποιώντας τον τελεστή `:` για να επιλέξετε όλες τις γραμμές, και μετά επιλέγοντας την 3η στήλη με το δείκτη (2). Μπορείτε επίσης να μετασχηματίσετε τα δεδομένα σε έναν 2D πίνακα - όπως απαιτείται για την απεικόνιση - χρησιμοποιώντας το `reshape(n_rows, n_columns)`. Αν μια από τις παραμέτρους είναι -1, η αντίστοιχη διάσταση υπολογίζεται αυτόματα.
+
+ ```python
+ X = X[:, 2]
+ X = X.reshape((-1,1))
+ ```
+
+ ✅ Οποιαδήποτε στιγμή εκτυπώστε τα δεδομένα για να ελέγξετε το σχήμα τους.
+
+3. Τώρα που έχετε τα δεδομένα έτοιμα για απεικόνιση, μπορείτε να δείτε αν μια μηχανή μπορεί να βοηθήσει να καθοριστεί μια λογική διαχωριστική γραμμή μεταξύ των αριθμών σε αυτό το σύνολο. Για να το κάνετε αυτό, χρειάζεται να χωρίσετε τόσο τα δεδομένα (X) όσο και τον στόχο (y) σε σύνολα δοκιμής και εκπαίδευσης. Το Scikit-learn έχει έναν απλό τρόπο να το κάνει αυτό· μπορείτε να χωρίσετε τα δεδομένα δοκιμής σε ένα συγκεκριμένο σημείο.
+
+ ```python
+ X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33)
+ ```
+
+4. Τώρα είστε έτοιμοι να εκπαιδεύσετε το μοντέλο σας! Φορτώστε το μοντέλο γραμμικής παλινδρόμησης και εκπαιδεύστε το με τα σύνολα εκπαίδευσής σας X και y χρησιμοποιώντας `model.fit()`:
+
+ ```python
+ model = linear_model.LinearRegression()
+ model.fit(X_train, y_train)
+ ```
+
+ ✅ Το `model.fit()` είναι μια συνάρτηση που θα δείτε σε πολλές βιβλιοθήκες ΜΜ όπως το TensorFlow
+
+5. Στη συνέχεια, δημιουργήστε μια πρόβλεψη χρησιμοποιώντας δεδομένα δοκιμής, χρησιμοποιώντας τη συνάρτηση `predict()`. Αυτό θα χρησιμοποιηθεί για να σχεδιάσει τη γραμμή μεταξύ των ομάδων δεδομένων
+
+ ```python
+ y_pred = model.predict(X_test)
+ ```
+
+6. Τώρα ήρθε η ώρα να εμφανίσουμε τα δεδομένα σε ένα διάγραμμα. Το Matplotlib είναι ένα πολύ χρήσιμο εργαλείο για αυτή την εργασία. Δημιουργήστε ένα διάγραμμα διασποράς όλων των δεδομένων X και y δοκιμής, και χρησιμοποιήστε την πρόβλεψη για να σχεδιάσετε μια γραμμή στο πιο κατάλληλο σημείο, ανάμεσα στις ομάδες δεδομένων του μοντέλου.
+
+ ```python
+ plt.scatter(X_test, y_test, color='black')
+ plt.plot(X_test, y_pred, color='blue', linewidth=3)
+ plt.xlabel('Scaled BMIs')
+ plt.ylabel('Disease Progression')
+ plt.title('A Graph Plot Showing Diabetes Progression Against BMI')
+ plt.show()
+ ```
+
+ 
+
-2. Στη συνέχεια, επιλέξτε ένα μέρος αυτού του συνόλου δεδομένων για να το σχεδιάσετε επιλέγοντας την 3η στήλη του συνόλου δεδομένων. Μπορείτε να το κάνετε αυτό χρησιμοποιώντας τον τελεστή `:` για να επιλέξετε όλες τις γραμμές και στη συνέχεια να επιλέξετε την 3η στήλη χρησιμοποιώντας τον δείκτη (2). Μπορείτε επίσης να αναδιαμορφώσετε τα δεδομένα ώστε να είναι ένας πίνακας 2D - όπως απαιτείται για σχεδίαση - χρησιμοποιώντας
-✅ Σκέψου λίγο τι συμβαίνει εδώ. Μια ευθεία γραμμή περνάει μέσα από πολλά μικρά σημεία δεδομένων, αλλά τι ακριβώς κάνει; Μπορείς να δεις πώς θα μπορούσες να χρησιμοποιήσεις αυτή τη γραμμή για να προβλέψεις πού θα έπρεπε να τοποθετηθεί ένα νέο, άγνωστο σημείο δεδομένων σε σχέση με τον άξονα y του γραφήματος; Προσπάθησε να εκφράσεις με λόγια την πρακτική χρήση αυτού του μοντέλου.
+ ✅ Σκέψου λίγο τι συμβαίνει εδώ. Μια ευθεία γραμμή διασχίζει πολλά μικρά σημεία δεδομένων, αλλά τι κάνει ακριβώς; Μπορείς να δεις πώς θα πρέπει να μπορείς να χρησιμοποιήσεις αυτή τη γραμμή για να προβλέψεις πού θα έπρεπε να ταιριάζει ένα νέο, αθέατο σημείο δεδομένων σε σχέση με τον άξονα y του διαγράμματος; Προσπάθησε να εκφράσεις με λέξεις τη πρακτική χρήση αυτού του μοντέλου.
-Συγχαρητήρια, δημιούργησες το πρώτο σου μοντέλο γραμμικής παλινδρόμησης, έκανες μια πρόβλεψη με αυτό και την εμφάνισες σε ένα γράφημα!
+Συγχαρητήρια, κατασκεύασες το πρώτο σου μοντέλο γραμμικής παλινδρόμησης, δημιούργησες μια πρόβλεψη με αυτό και την εμφάνισες σε διάγραμμα!
---
## 🚀Πρόκληση
-Σχεδίασε μια διαφορετική μεταβλητή από αυτό το σύνολο δεδομένων. Υπόδειξη: επεξεργάσου αυτή τη γραμμή: `X = X[:,2]`. Δεδομένου του στόχου αυτού του συνόλου δεδομένων, τι μπορείς να ανακαλύψεις σχετικά με την εξέλιξη του διαβήτη ως ασθένεια;
-## [Κουίζ μετά το μάθημα](https://ff-quizzes.netlify.app/en/ml/)
+Σχεδίασε μια διαφορετική μεταβλητή από αυτό το σύνολο δεδομένων. Υπόδειξη: επεξεργάσου αυτή τη γραμμή: `X = X[:,2]`. Δεδομένου του στόχου αυτού του συνόλου δεδομένων, τι μπορείς να ανακαλύψεις για την εξέλιξη του διαβήτη ως ασθένεια;
+## [Κουίζ μετά τη διάλεξη](https://ff-quizzes.netlify.app/en/ml/)
## Ανασκόπηση & Αυτομελέτη
-Σε αυτό το σεμινάριο, εργάστηκες με απλή γραμμική παλινδρόμηση, αντί για μονομεταβλητή ή πολυμεταβλητή γραμμική παλινδρόμηση. Διάβασε λίγο για τις διαφορές μεταξύ αυτών των μεθόδων ή δες [αυτό το βίντεο](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef).
+Σε αυτό το σεμινάριο, εργάστηκες με απλή γραμμική παλινδρόμηση, αντί για μονομεταβλητή ή πολλαπλή γραμμική παλινδρόμηση. Διάβασε λίγο για τις διαφορές μεταξύ αυτών των μεθόδων ή ρίξε μια ματιά σε [αυτό το βίντεο](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef)
Διάβασε περισσότερα για την έννοια της παλινδρόμησης και σκέψου τι είδους ερωτήσεις μπορούν να απαντηθούν με αυτή την τεχνική. Πάρε αυτό το [σεμινάριο](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) για να εμβαθύνεις την κατανόησή σου.
-## Εργασία
+## Ανάθεση
[Ένα διαφορετικό σύνολο δεδομένων](assignment.md)
---
-**Αποποίηση ευθύνης**:
-Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.
\ No newline at end of file
+
+**Αποποίηση ευθυνών**:
+Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία μετάφρασης με τεχνητή νοημοσύνη [Co-op Translator](https://github.com/Azure/co-op-translator). Ενώ επιδιώκουμε την ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή λανθασμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.
+
\ No newline at end of file
diff --git a/translations/el/2-Regression/2-Data/solution/notebook.ipynb b/translations/el/2-Regression/2-Data/solution/notebook.ipynb
index 166cc0218..89fda30e3 100644
--- a/translations/el/2-Regression/2-Data/solution/notebook.ipynb
+++ b/translations/el/2-Regression/2-Data/solution/notebook.ipynb
@@ -3,7 +3,9 @@
{
"cell_type": "markdown",
"metadata": {},
- "source": []
+ "source": [
+ "## Γραμμική Παλινδρόμηση για Κολοκύθες - Μάθημα 2\n"
+ ]
},
{
"cell_type": "code",
@@ -220,6 +222,7 @@
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
"pumpkins = pd.read_csv('../../data/US-pumpkins.csv')\n",
"\n",
"pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]\n",
@@ -383,18 +386,78 @@
"plt.ylabel(\"Pumpkin Price\")"
]
},
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Visualizing with Seaborn\n",
+ "\n",
+ "[Seaborn](https://seaborn.pydata.org/) is built on top of Matplotlib and works directly with dataframes, making it quick to create attractive statistical plots with very little code.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Διαγράμματα διασποράς για να δείξουν σχέσεις\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", kind=\"line\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Ραβδογράμματα για την εμφάνιση κατανομών\n"
+ ]
+ },
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
- "source": []
+ "source": [
+ "sns.catplot(x=\"Month\", y=\"Price\", data=new_pumpkins, kind=\"bar\")"
+ ]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "\n---\n\n**Αποποίηση ευθύνης**: \nΑυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης AI [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτόματες μεταφράσεις ενδέχεται να περιέχουν σφάλματα ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.\n"
+ "### Θερμικοί χάρτες για την εμφάνιση συσχετίσεων\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()\n",
+ "sns.heatmap(correlations, annot=True, cmap=\"coolwarm\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "---\n\n\n**Αποποίηση ευθυνών**:\nΑυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία μετάφρασης με τεχνητή νοημοσύνη [Co-op Translator](https://github.com/Azure/co-op-translator). Ενώ επιδιώκουμε την ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή λανθασμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.\n\n"
]
}
],
@@ -424,13 +487,7 @@
"hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d"
}
},
- "orig_nbformat": 2,
- "coopTranslator": {
- "original_hash": "95726f0b8283628d5356a4f8eb8b4b76",
- "translation_date": "2025-09-04T07:11:25+00:00",
- "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
- "language_code": "el"
- }
+ "orig_nbformat": 2
},
"nbformat": 4,
"nbformat_minor": 2
diff --git a/translations/el/2-Regression/4-Logistic/README.md b/translations/el/2-Regression/4-Logistic/README.md
index 32add3c88..917bafc1e 100644
--- a/translations/el/2-Regression/4-Logistic/README.md
+++ b/translations/el/2-Regression/4-Logistic/README.md
@@ -1,79 +1,79 @@
-# Λογιστική παλινδρόμηση για πρόβλεψη κατηγοριών
+# Λογιστική παλινδρόμηση για την πρόβλεψη κατηγοριών
-
+
-## [Προ-μάθημα κουίζ](https://ff-quizzes.netlify.app/en/ml/)
+## [Κουίζ προ-διάλεξης](https://ff-quizzes.netlify.app/en/ml/)
-> ### [Αυτό το μάθημα είναι διαθέσιμο και σε R!](../../../../2-Regression/4-Logistic/solution/R/lesson_4.html)
+> ### [Αυτό το μάθημα είναι διαθέσιμο σε 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)
+✅ Εμβαθύνετε την κατανόηση της εργασίας με αυτό τον τύπο παλινδρόμησης σε αυτό το [Μάθημα Learn](https://docs.microsoft.com/learn/modules/train-evaluate-classification-models?WT.mc_id=academic-77952-leestott)
-## Προαπαιτούμενα
+## Προαπαιτούμενο
-Έχοντας δουλέψει με τα δεδομένα κολοκύθας, είμαστε πλέον αρκετά εξοικειωμένοι ώστε να συνειδητοποιήσουμε ότι υπάρχει μία δυαδική κατηγορία με την οποία μπορούμε να δουλέψουμε: `Χρώμα`.
+Έχοντας εργαστεί με τα δεδομένα κολοκύθας, τώρα είμαστε αρκετά εξοικειωμένοι με αυτά ώστε να καταλάβουμε ότι υπάρχει μια δυαδική κατηγορία με την οποία μπορούμε να δουλέψουμε: `Color`.
-Ας δημιουργήσουμε ένα μοντέλο λογιστικής παλινδρόμησης για να προβλέψουμε, δεδομένων κάποιων μεταβλητών, _ποιο χρώμα είναι πιθανό να έχει μια δεδομένη κολοκύθα_ (πορτοκαλί 🎃 ή λευκό 👻).
+Ας δημιουργήσουμε ένα μοντέλο λογιστικής παλινδρόμησης για να προβλέψουμε, δεδομένων ορισμένων μεταβλητών, _ποιο χρώμα είναι πιθανό να έχει μια δεδομένη κολοκύθα_ (πορτοκαλί 🎃 ή λευκή 👻).
-> Γιατί μιλάμε για δυαδική ταξινόμηση σε ένα μάθημα που αφορά την παλινδρόμηση; Μόνο για γλωσσική ευκολία, καθώς η λογιστική παλινδρόμηση είναι [στην πραγματικότητα μια μέθοδος ταξινόμησης](https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression), αν και βασίζεται στη γραμμική παλινδρόμηση. Μάθετε για άλλους τρόπους ταξινόμησης δεδομένων στην επόμενη ομάδα μαθημάτων.
+> Γιατί μιλάμε για δυαδική ταξινόμηση σε ένα μάθημα που αφορά την παλινδρόμηση; Απλά για γλωσσική ευκολία, καθώς η λογιστική παλινδρόμηση είναι [στην πραγματικότητα μέθοδος ταξινόμησης](https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression), έστω και βασισμένη στη γραμμική παλινδρόμηση. Μάθετε για άλλους τρόπους ταξινόμησης δεδομένων στην επόμενη ομάδα μαθημάτων.
-## Ορισμός της ερώτησης
+## Ορισμός του ερωτήματος
-Για τους σκοπούς μας, θα εκφράσουμε αυτό ως δυαδικό: 'Λευκό' ή 'Όχι Λευκό'. Υπάρχει επίσης μια κατηγορία 'ριγέ' στο σύνολο δεδομένων μας, αλλά υπάρχουν λίγες περιπτώσεις αυτής, οπότε δεν θα τη χρησιμοποιήσουμε. Εξαφανίζεται ούτως ή άλλως μόλις αφαιρέσουμε τις κενές τιμές από το σύνολο δεδομένων.
+Για τους σκοπούς μας, θα το εκφράσουμε ως δυαδικό: 'Λευκό' ή 'Όχι Λευκό'. Υπάρχει επίσης μια κατηγορία 'ριγέ' στον πίνακά μας, αλλά υπάρχουν λίγα παραδείγματα, οπότε δεν θα την χρησιμοποιήσουμε. Καταλήγει να εξαφανίζεται όταν αφαιρούμε τις κενές τιμές από το dataset, ούτως ή άλλως.
-> 🎃 Διασκεδαστικό γεγονός: Μερικές φορές αποκαλούμε τις λευκές κολοκύθες 'κολοκύθες-φαντάσματα'. Δεν είναι πολύ εύκολο να τις σκαλίσουμε, οπότε δεν είναι τόσο δημοφιλείς όσο οι πορτοκαλί, αλλά είναι εντυπωσιακές! Έτσι, θα μπορούσαμε επίσης να διατυπώσουμε την ερώτηση ως: 'Φάντασμα' ή 'Όχι Φάντασμα'. 👻
+> 🎃 Διασκεδαστικό γεγονός, μερικές φορές αποκαλούμε τις λευκές κολοκύθες 'φαντάσματα'. Δεν είναι πολύ εύκολο να τις χαράξεις, γι' αυτό δεν είναι τόσο δημοφιλείς όσο οι πορτοκαλί, αλλά έχουν ωραία εμφάνιση! Μπορούμε επίσης να αναδιατυπώσουμε την ερώτηση ως: 'Φάντασμα' ή 'Όχι Φάντασμα'. 👻
## Σχετικά με τη λογιστική παλινδρόμηση
-Η λογιστική παλινδρόμηση διαφέρει από τη γραμμική παλινδρόμηση, την οποία μάθατε προηγουμένως, σε μερικούς σημαντικούς τρόπους.
+Η λογιστική παλινδρόμηση διαφέρει από τη γραμμική παλινδρόμηση, που μάθατε προηγουμένως, σε κάποιους σημαντικούς τρόπους.
-[](https://youtu.be/KpeCT6nEpBY "ML για αρχάριους - Κατανόηση της Λογιστικής Παλινδρόμησης για Ταξινόμηση Δεδομένων")
+[](https://youtu.be/KpeCT6nEpBY "Μηχανική Μάθηση για αρχάριους - Κατανόηση της λογιστικής παλινδρόμησης για ταξινόμηση μηχανικής μάθησης")
-> 🎥 Κάντε κλικ στην εικόνα παραπάνω για μια σύντομη επισκόπηση της λογιστικής παλινδρόμησης.
+> 🎥 Κάντε κλικ στην εικόνα παραπάνω για μια σύντομη επισκόπηση βίντεο της λογιστικής παλινδρόμησης.
### Δυαδική ταξινόμηση
-Η λογιστική παλινδρόμηση δεν προσφέρει τις ίδιες δυνατότητες με τη γραμμική παλινδρόμηση. Η πρώτη προσφέρει πρόβλεψη για μια δυαδική κατηγορία ("λευκό ή όχι λευκό"), ενώ η δεύτερη είναι ικανή να προβλέπει συνεχείς τιμές, για παράδειγμα, δεδομένης της προέλευσης μιας κολοκύθας και του χρόνου συγκομιδής, _πόσο θα αυξηθεί η τιμή της_.
+Η λογιστική παλινδρόμηση δεν προσφέρει τις ίδιες λειτουργίες όπως η γραμμική παλινδρόμηση. Η πρώτη δίνει πρόβλεψη για μια δυαδική κατηγορία ("λευκό ή όχι λευκό") ενώ η δεύτερη μπορεί να προβλέψει συνεχή τιμές, για παράδειγμα δεδομένης της προέλευσης μιας κολοκύθας και της εποχής συγκομιδής, _πόσο θα ανέβει η τιμή της_.
-
-> Εικόνα από [Dasani Madipalli](https://twitter.com/dasani_decoded)
+
+> Infographic από [Dasani Madipalli](https://twitter.com/dasani_decoded)
### Άλλες ταξινομήσεις
-Υπάρχουν άλλοι τύποι λογιστικής παλινδρόμησης, όπως πολυωνυμική και διατακτική:
+Υπάρχουν και άλλοι τύποι λογιστικής παλινδρόμησης, όπως η πολυωνυμική και η διατακτική:
-- **Πολυωνυμική**, που περιλαμβάνει περισσότερες από μία κατηγορίες - "Πορτοκαλί, Λευκό και Ριγέ".
-- **Διατακτική**, που περιλαμβάνει διατεταγμένες κατηγορίες, χρήσιμη αν θέλαμε να ταξινομήσουμε τα αποτελέσματά μας λογικά, όπως οι κολοκύθες μας που ταξινομούνται με βάση έναν πεπερασμένο αριθμό μεγεθών (mini, sm, med, lg, xl, xxl).
+- **Πολυωνυμική**, που αφορά περισσότερες από μία κατηγορίες - "Πορτοκαλί, Λευκό, και Ριγέ".
+- **Διατακτική**, που αφορά κατηγορίες με σειρά, χρήσιμη αν θέλαμε να ταξινομήσουμε τα αποτελέσματα λογικά, όπως οι κολοκύθες μας που ταξινομούνται σε πεπερασμένο αριθμό μεγεθών (μίνι, μικρή, μέση, μεγάλη, πολύ μεγάλη, τεράστια).
-
+
### Οι μεταβλητές ΔΕΝ χρειάζεται να συσχετίζονται
-Θυμάστε πώς η γραμμική παλινδρόμηση λειτουργούσε καλύτερα με πιο συσχετισμένες μεταβλητές; Η λογιστική παλινδρόμηση είναι το αντίθετο - οι μεταβλητές δεν χρειάζεται να ευθυγραμμίζονται. Αυτό λειτουργεί για αυτά τα δεδομένα που έχουν σχετικά αδύναμες συσχετίσεις.
+Θυμάστε πώς η γραμμική παλινδρόμηση λειτουργούσε καλύτερα με πιο συσχετισμένες μεταβλητές; Η λογιστική παλινδρόμηση είναι το αντίθετο - οι μεταβλητές δεν χρειάζεται να ευθυγραμμίζονται. Αυτό λειτουργεί για αυτά τα δεδομένα που έχουν κάπως αδύναμους συσχετισμούς.
### Χρειάζεστε πολλά καθαρά δεδομένα
-Η λογιστική παλινδρόμηση θα δώσει πιο ακριβή αποτελέσματα αν χρησιμοποιήσετε περισσότερα δεδομένα. Το μικρό μας σύνολο δεδομένων δεν είναι ιδανικό για αυτήν την εργασία, οπότε λάβετε το υπόψη σας.
+Η λογιστική παλινδρόμηση δίνει πιο ακριβή αποτελέσματα αν χρησιμοποιήσετε περισσότερα δεδομένα· το μικρό μας σύνολο δεδομένων δεν είναι ιδανικό για αυτήν την εργασία, οπότε να το έχετε υπόψη.
-[](https://youtu.be/B2X4H9vcXTs "ML για αρχάριους - Ανάλυση και Προετοιμασία Δεδομένων για Λογιστική Παλινδρόμηση")
+[](https://youtu.be/B2X4H9vcXTs "Μηχανική Μάθηση για αρχάριους - Ανάλυση και προετοιμασία δεδομένων για λογιστική παλινδρόμηση")
-> 🎥 Κάντε κλικ στην εικόνα παραπάνω για μια σύντομη επισκόπηση της προετοιμασίας δεδομένων για γραμμική παλινδρόμηση
+> 🎥 Κάντε κλικ στην εικόνα παραπάνω για μια σύντομη επισκόπηση βίντεο προετοιμασίας δεδομένων για γραμμική παλινδρόμηση
-✅ Σκεφτείτε τους τύπους δεδομένων που θα μπορούσαν να ταιριάζουν καλά στη λογιστική παλινδρόμηση
+✅ Σκεφτείτε τους τύπους δεδομένων που θα ευνοούσαν τη λογιστική παλινδρόμηση
## Άσκηση - καθαρισμός δεδομένων
-Πρώτα, καθαρίστε λίγο τα δεδομένα, αφαιρώντας τις κενές τιμές και επιλέγοντας μόνο ορισμένες στήλες:
+Πρώτα, καθαρίστε λίγο τα δεδομένα, αφαιρώντας τις κενές τιμές και επιλέγοντας μόνο μερικές από τις στήλες:
-1. Προσθέστε τον παρακάτω κώδικα:
+1. Προσθέστε τον ακόλουθο κώδικα:
```python
@@ -89,13 +89,13 @@
pumpkins.info
```
-### Οπτικοποίηση - κατηγορικό διάγραμμα
+### Οπτικοποίηση - κατηγορηματικό γράφημα
-Μέχρι τώρα έχετε φορτώσει το [αρχικό notebook](../../../../2-Regression/4-Logistic/notebook.ipynb) με δεδομένα κολοκύθας ξανά και το έχετε καθαρίσει ώστε να διατηρεί ένα σύνολο δεδομένων που περιέχει μερικές μεταβλητές, συμπεριλαμβανομένου του `Χρώματος`. Ας οπτικοποιήσουμε το dataframe στο notebook χρησιμοποιώντας μια διαφορετική βιβλιοθήκη: [Seaborn](https://seaborn.pydata.org/index.html), η οποία βασίζεται στο Matplotlib που χρησιμοποιήσαμε νωρίτερα.
+Μέχρι τώρα έχετε φορτώσει ξανά το [αρχικό σημειωματάριο](./notebook.ipynb) με δεδομένα κολοκύθας και το έχετε καθαρίσει ώστε να διατηρήσετε ένα dataset με μερικές μεταβλητές, συμπεριλαμβανομένου του `Color`. Ας οπτικοποιήσουμε το dataframe στο σημειωματάριο χρησιμοποιώντας μια διαφορετική βιβλιοθήκη: [Seaborn](https://seaborn.pydata.org/index.html), που βασίζεται στο Matplotlib που χρησιμοποιήσαμε προηγουμένως.
-Το Seaborn προσφέρει μερικούς έξυπνους τρόπους για να οπτικοποιήσετε τα δεδομένα σας. Για παράδειγμα, μπορείτε να συγκρίνετε τις κατανομές των δεδομένων για κάθε `Ποικιλία` και `Χρώμα` σε ένα κατηγορικό διάγραμμα.
+Το Seaborn προσφέρει κάποιους ωραίους τρόπους να οπτικοποιήσετε τα δεδομένα σας. Για παράδειγμα, μπορείτε να συγκρίνετε τις κατανομές των δεδομένων για κάθε `Variety` και `Color` σε ένα κατηγορηματικό γράφημα.
-1. Δημιουργήστε ένα τέτοιο διάγραμμα χρησιμοποιώντας τη συνάρτηση `catplot`, χρησιμοποιώντας τα δεδομένα κολοκύθας `pumpkins` και καθορίζοντας έναν χρωματικό χάρτη για κάθε κατηγορία κολοκύθας (πορτοκαλί ή λευκό):
+1. Δημιουργήστε ένα τέτοιο γράφημα χρησιμοποιώντας τη λειτουργία `catplot`, χρησιμοποιώντας τα δεδομένα κολοκύθας `pumpkins`, και προσδιορίζοντας έναν χρωματικό χάρτη για κάθε κατηγορία κολοκύθας (πορτοκαλί ή λευκή):
```python
import seaborn as sns
@@ -111,19 +111,18 @@
)
```
- 
+ 
- Παρατηρώντας τα δεδομένα, μπορείτε να δείτε πώς τα δεδομένα Χρώματος σχετίζονται με την Ποικιλία.
+ Παρατηρώντας τα δεδομένα, μπορείτε να δείτε πώς τα δεδομένα Χρώματος σχετίζονται με τη Ποικιλία.
- ✅ Δεδομένου αυτού του κατηγορικού διαγράμματος, ποιες ενδιαφέρουσες εξερευνήσεις μπορείτε να φανταστείτε;
+ ✅ Δεδομένου αυτού του κατηγορηματικού γραφήματος, ποιες είναι μερικές ενδιαφέρουσες εξερευνήσεις που μπορείτε να φανταστείτε;
### Προεπεξεργασία δεδομένων: κωδικοποίηση χαρακτηριστικών και ετικετών
-
-Το σύνολο δεδομένων κολοκύθας μας περιέχει τιμές κειμένου για όλες τις στήλες του. Η εργασία με κατηγορικά δεδομένα είναι διαισθητική για τους ανθρώπους αλλά όχι για τις μηχανές. Οι αλγόριθμοι μηχανικής μάθησης λειτουργούν καλά με αριθμούς. Γι' αυτό η κωδικοποίηση είναι ένα πολύ σημαντικό βήμα στη φάση προεπεξεργασίας δεδομένων, καθώς μας επιτρέπει να μετατρέψουμε τα κατηγορικά δεδομένα σε αριθμητικά δεδομένα, χωρίς να χάσουμε καμία πληροφορία. Καλή κωδικοποίηση οδηγεί στη δημιουργία ενός καλού μοντέλου.
+Το dataset κολοκύθας περιέχει τιμές κειμένου για όλες τις στήλες του. Η εργασία με κατηγορηματικά δεδομένα είναι διαισθητική για τους ανθρώπους αλλά όχι για τις μηχανές. Οι αλγόριθμοι μηχανικής μάθησης λειτουργούν καλά με αριθμούς. Γι' αυτό η κωδικοποίηση είναι ένα πολύ σημαντικό βήμα στη φάση προεπεξεργασίας δεδομένων, καθώς μας επιτρέπει να μετατρέψουμε κατηγορηματικά δεδομένα σε αριθμητικά, χωρίς να χάσουμε πληροφορίες. Καλή κωδικοποίηση οδηγεί στην κατασκευή ενός καλού μοντέλου.
Για την κωδικοποίηση χαρακτηριστικών υπάρχουν δύο κύριοι τύποι κωδικοποιητών:
-1. Ordinal encoder: ταιριάζει καλά για διατακτικές μεταβλητές, οι οποίες είναι κατηγορικές μεταβλητές όπου τα δεδομένα τους ακολουθούν μια λογική σειρά, όπως η στήλη `Item Size` στο σύνολο δεδομένων μας. Δημιουργεί έναν χάρτη έτσι ώστε κάθε κατηγορία να αντιπροσωπεύεται από έναν αριθμό, που είναι η σειρά της κατηγορίας στη στήλη.
+1. Διατακτικός κωδικοποιητής: ταιριάζει καλά για διατακτικές μεταβλητές, που είναι κατηγορηματικές μεταβλητές όπου τα δεδομένα τους ακολουθούν μια λογική σειρά, όπως η στήλη `Item Size` στο dataset μας. Δημιουργεί ένα χάρτη έτσι ώστε κάθε κατηγορία να αντιπροσωπεύεται από έναν αριθμό, που είναι η σειρά της κατηγορίας στη στήλη.
```python
from sklearn.preprocessing import OrdinalEncoder
@@ -133,7 +132,7 @@
ordinal_encoder = OrdinalEncoder(categories=item_size_categories)
```
-2. Categorical encoder: ταιριάζει καλά για ονομαστικές μεταβλητές, οι οποίες είναι κατηγορικές μεταβλητές όπου τα δεδομένα τους δεν ακολουθούν μια λογική σειρά, όπως όλα τα χαρακτηριστικά εκτός από το `Item Size` στο σύνολο δεδομένων μας. Είναι μια κωδικοποίηση one-hot, που σημαίνει ότι κάθε κατηγορία αντιπροσωπεύεται από μια δυαδική στήλη: η κωδικοποιημένη μεταβλητή είναι ίση με 1 αν η κολοκύθα ανήκει σε αυτήν την Ποικιλία και 0 διαφορετικά.
+2. Κατηγορικός κωδικοποιητής: ταιριάζει καλά για ονομαστικές μεταβλητές, που είναι κατηγορηματικές μεταβλητές όπου τα δεδομένα τους δεν ακολουθούν λογική σειρά, όπως όλα τα χαρακτηριστικά εκτός της `Item Size` στο dataset μας. Είναι το one-hot encoding, που σημαίνει ότι κάθε κατηγορία αντιπροσωπεύεται από μια δυαδική στήλη: η κωδικοποιημένη μεταβλητή είναι ίση με 1 αν η κολοκύθα ανήκει σε αυτήν την Ποικιλία και 0 αλλιώς.
```python
from sklearn.preprocessing import OneHotEncoder
@@ -141,8 +140,7 @@
categorical_features = ['City Name', 'Package', 'Variety', 'Origin']
categorical_encoder = OneHotEncoder(sparse_output=False)
```
-
-Στη συνέχεια, χρησιμοποιείται το `ColumnTransformer` για να συνδυάσει πολλούς κωδικοποιητές σε ένα βήμα και να τους εφαρμόσει στις κατάλληλες στήλες.
+Στη συνέχεια, ο `ColumnTransformer` χρησιμοποιείται για να συνδυάσει πολλούς κωδικοποιητές σε ένα βήμα και να τους εφαρμόσει στις κατάλληλες στήλες.
```python
from sklearn.compose import ColumnTransformer
@@ -155,8 +153,7 @@
ct.set_output(transform='pandas')
encoded_features = ct.fit_transform(pumpkins)
```
-
-Από την άλλη πλευρά, για την κωδικοποίηση της ετικέτας, χρησιμοποιούμε την κλάση `LabelEncoder` της scikit-learn, η οποία είναι μια βοηθητική κλάση για την κανονικοποίηση ετικετών ώστε να περιέχουν μόνο τιμές μεταξύ 0 και n_classes-1 (εδώ, 0 και 1).
+Από την άλλη πλευρά, για να κωδικοποιήσουμε την ετικέτα, χρησιμοποιούμε την κλάση `LabelEncoder` του scikit-learn, η οποία είναι μια βοηθητική κλάση για την κανονικοποίηση ετικετών ώστε να περιέχουν μόνο τιμές μεταξύ 0 και n_classes-1 (εδώ, 0 και 1).
```python
from sklearn.preprocessing import LabelEncoder
@@ -164,20 +161,17 @@
label_encoder = LabelEncoder()
encoded_label = label_encoder.fit_transform(pumpkins['Color'])
```
-
-Μόλις κωδικοποιήσουμε τα χαρακτηριστικά και την ετικέτα, μπορούμε να τα συγχωνεύσουμε σε ένα νέο dataframe `encoded_pumpkins`.
+Μόλις έχουμε κωδικοποιήσει τα χαρακτηριστικά και την ετικέτα, μπορούμε να τα συγχωνεύσουμε σε ένα νέο dataframe `encoded_pumpkins`.
```python
encoded_pumpkins = encoded_features.assign(Color=encoded_label)
```
-
-✅ Ποια είναι τα πλεονεκτήματα της χρήσης ενός ordinal encoder για τη στήλη `Item Size`;
+✅ Ποια είναι τα πλεονεκτήματα της χρήσης διατακτικού κωδικοποιητή για τη στήλη `Item Size`;
### Ανάλυση σχέσεων μεταξύ μεταβλητών
-Τώρα που έχουμε προεπεξεργαστεί τα δεδομένα μας, μπορούμε να αναλύσουμε τις σχέσεις μεταξύ των χαρακτηριστικών και της ετικέτας για να αποκτήσουμε μια ιδέα για το πόσο καλά το μοντέλο θα μπορέσει να προβλέψει την ετικέτα δεδομένων των χαρακτηριστικών.
-
-Ο καλύτερος τρόπος για να πραγματοποιήσουμε αυτό το είδος ανάλυσης είναι να σχεδιάσουμε τα δεδομένα. Θα χρησιμοποιήσουμε ξανά τη συνάρτηση `catplot` του Seaborn, για να οπτικοποιήσουμε τις σχέσεις μεταξύ `Item Size`, `Variety` και `Color` σε ένα κατηγορικό διάγραμμα. Για καλύτερη απεικόνιση των δεδομένων θα χρησιμοποιήσουμε την κωδικοποιημένη στήλη `Item Size` και την μη κωδικοποιημένη στήλη `Variety`.
+Τώρα που έχουμε προεπεξεργαστεί τα δεδομένα μας, μπορούμε να αναλύσουμε τις σχέσεις μεταξύ των χαρακτηριστικών και της ετικέτας για να κατανοήσουμε σε ποιο βαθμό το μοντέλο θα είναι ικανό να προβλέψει την ετικέτα δεδομένων των χαρακτηριστικών.
+Ο καλύτερος τρόπος για να κάνουμε αυτή την ανάλυση είναι η οπτικοποίηση των δεδομένων. Θα χρησιμοποιήσουμε ξανά τη λειτουργία `catplot` του Seaborn, για να οπτικοποιήσουμε τις σχέσεις μεταξύ των `Item Size`, `Variety` και `Color` σε ένα κατηγορηματικό γράφημα. Για καλύτερη οπτικοποίηση των δεδομένων θα χρησιμοποιήσουμε την κωδικοποιημένη στήλη `Item Size` και την μη κωδικοποιημένη στήλη `Variety`.
```python
palette = {
@@ -196,16 +190,15 @@
g.set(xlabel="Item Size", ylabel="").set(xlim=(0,6))
g.set_titles(row_template="{row_name}")
```
+
-
-
-### Χρήση swarm plot
+### Χρησιμοποιήστε ένα swarm plot
-Επειδή το Χρώμα είναι μια δυαδική κατηγορία (Λευκό ή Όχι), χρειάζεται 'μια [εξειδικευμένη προσέγγιση](https://seaborn.pydata.org/tutorial/categorical.html?highlight=bar) για την οπτικοποίηση'. Υπάρχουν άλλοι τρόποι για να οπτικοποιήσετε τη σχέση αυτής της κατηγορίας με άλλες μεταβλητές.
+Εφόσον το Color είναι δυαδική κατηγορία (Λευκό ή Όχι), απαιτεί 'μια [ειδική προσέγγιση](https://seaborn.pydata.org/tutorial/categorical.html?highlight=bar) για οπτικοποίηση'. Υπάρχουν και άλλοι τρόποι να οπτικοποιήσετε τη σχέση αυτής της κατηγορίας με άλλες μεταβλητές.
-Μπορείτε να οπτικοποιήσετε μεταβλητές δίπλα-δίπλα με διαγράμματα Seaborn.
+Μπορείτε να οπτικοποιήσετε μεταβλητές δίπλα-δίπλα με γραφήματα Seaborn.
-1. Δοκιμάστε ένα διάγραμμα 'swarm' για να δείξετε την κατανομή των τιμών:
+1. Δοκιμάστε ένα 'swarm' γράφημα για να δείξετε την κατανομή των τιμών:
```python
palette = {
@@ -215,27 +208,28 @@
sns.swarmplot(x="Color", y="ord__Item Size", data=encoded_pumpkins, palette=palette)
```
- 
+ 
+
+**Προσοχή**: ο παραπάνω κώδικας μπορεί να παράγει προειδοποίηση, καθώς το seaborn αδυνατεί να παρουσιάσει τόσο μεγάλο αριθμό δεδομένων σε ένα swarm plot. Μια πιθανή λύση είναι η μείωση του μεγέθους των σημείων με την παράμετρο 'size'. Ωστόσο, να γνωρίζετε ότι αυτό επηρεάζει την αναγνωσιμότητα του γραφήματος.
-**Προσοχή**: ο παραπάνω κώδικας μπορεί να δημιουργήσει μια προειδοποίηση, καθώς το seaborn αποτυγχάνει να αναπαραστήσει τέτοιο αριθμό σημείων δεδομένων σε ένα swarm plot. Μια πιθανή λύση είναι η μείωση του μεγέθους του δείκτη, χρησιμοποιώντας την παράμετρο 'size'. Ωστόσο, να είστε προσεκτικοί καθώς αυτό επηρεάζει την αναγνωσιμότητα του διαγράμματος.
> **🧮 Δείξτε μου τα Μαθηματικά**
>
-> Η λογιστική παλινδρόμηση βασίζεται στην έννοια της 'μέγιστης πιθανότητας' χρησιμοποιώντας [συναρτήσεις sigmoid](https://wikipedia.org/wiki/Sigmoid_function). Μια 'Συνάρτηση Sigmoid' σε ένα διάγραμμα μοιάζει με σχήμα 'S'. Παίρνει μια τιμή και τη χαρτογραφεί κάπου μεταξύ 0 και 1. Η καμπύλη της ονομάζεται επίσης 'λογιστική καμπύλη'. Ο τύπος της μοιάζει με αυτόν:
+> Η λογιστική παλινδρόμηση βασίζεται στην έννοια της 'μέγιστης πιθανοφάνειας' χρησιμοποιώντας [συγκεκριμένες σιγμοειδείς συναρτήσεις](https://wikipedia.org/wiki/Sigmoid_function). Μια 'Σιγμοειδής Συνάρτηση' σε μια γραφική παράσταση μοιάζει με το γράμμα 'S'. Παίρνει μια τιμή και την αντιστοιχεί κάπου μεταξύ 0 και 1. Η καμπύλη της ονομάζεται και 'λογιστική καμπύλη'. Ο τύπος της φαίνεται ως εξής:
>
-> 
+> 
>
-> όπου το μέσο της sigmoid βρίσκεται στο σημείο 0 του x, το L είναι η μέγιστη τιμή της καμπύλης και το k είναι η απότομη κλίση της καμπύλης. Αν το αποτέλεσμα της συνάρτησης είναι μεγαλύτερο από 0.5, η ετικέτα θα λάβει την κατηγορία '1' της δυαδικής επιλογής. Αν όχι, θα ταξινομηθεί ως '0'.
+> όπου το μέσον της σιγμοειδούς βρίσκεται στο σημείο 0 του x, το L είναι η μέγιστη τιμή της καμπύλης και το k η κλίση της καμπύλης. Αν το αποτέλεσμα της συνάρτησης είναι πάνω από 0.5, η αντίστοιχη ετικέτα θα λάβει την κλάση '1' της δυαδικής επιλογής. Διαφορετικά, θα ταξινομηθεί ως '0'.
-## Δημιουργία του μοντέλου σας
+## Δημιουργήστε το μοντέλο σας
-Η δημιουργία ενός μοντέλου για την εύρεση αυτών των δυαδικών ταξινομήσεων είναι εκπληκτικά απλή στο Scikit-learn.
+Η δημιουργία ενός μοντέλου για αυτή τη δυαδική ταξινόμηση είναι εκπληκτικά απλή στο Scikit-learn.
-[](https://youtu.be/MmZS2otPrQ8 "ML για αρχάριους - Λογιστική Παλινδρόμηση για ταξινόμηση δεδομένων")
+[](https://youtu.be/MmZS2otPrQ8 "Μηχανική Μάθηση για αρχάριους - Λογιστική Παλινδρόμηση για ταξινόμηση δεδομένων")
-> 🎥 Κάντε κλικ στην εικόνα παραπάνω για μια σύντομη επισκόπηση της δημιουργίας ενός μοντέλου γραμμικής παλινδρόμησης
+> 🎥 Κάντε κλικ στην εικόνα παραπάνω για μια σύντομη επισκόπηση βίντεο σχετικά με τη δημιουργία μοντέλου γραμμικής παλινδρόμησης
-1. Επιλέξτε τις μεταβλητές που θέλετε να χρησιμοποιήσετε στο μοντέλο ταξινόμησης και χωρίστε τα σύνολα εκπαίδευσης και δοκιμής καλώντας τη συνάρτηση `train_test_split()`:
+1. Επιλέξτε τις μεταβλητές που θέλετε να χρησιμοποιήσετε στο μοντέλο ταξινόμησής σας και χωρίστε τα σε σύνολα εκπαίδευσης και δοκιμής καλώντας τη συνάρτηση `train_test_split()`:
```python
from sklearn.model_selection import train_test_split
@@ -247,40 +241,112 @@
```
-2. Τώρα μπορείτε να εκπαιδεύσετε το μοντέλο σας, καλώντας τη συνάρτηση `fit()` με τα
-Πώς σχετίζεται ο πίνακας σύγχυσης με την ακρίβεια και την ανάκληση; Θυμηθείτε, η αναφορά ταξινόμησης που εκτυπώθηκε παραπάνω έδειξε ακρίβεια (0.85) και ανάκληση (0.67).
+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, οι γραμμές (άξονας 0) είναι οι πραγματικές ετικέτες και οι στήλες (άξονας 1) είναι οι προβλεπόμενες ετικέτες.
+
+| | 0 | 1 |
+| :---: | :---: | :---: |
+| 0 | TN | FP |
+| 1 | FN | TP |
+
+Τι συμβαίνει εδώ; Ας υποθέσουμε ότι ζητείται από το μοντέλο μας να ταξινομήσει κολοκύθες μεταξύ δύο δυαδικών κατηγοριών, την κατηγορία 'λευκό' και την κατηγορία 'μη-λευκό'.
+
+- Αν το μοντέλο σας προβλέψει μια κολοκύθα ως μη λευκή και αυτή ανήκει πραγματικά στην κατηγορία 'μη λευκό', το ονομάζουμε αληθές αρνητικό, που δείχνεται από τον αριθμό πάνω αριστερά.
+- Αν το μοντέλο σας προβλέψει μια κολοκύθα ως λευκή και αυτή ανήκει πραγματικά στην κατηγορία 'μη λευκό', το ονομάζουμε ψευδώς θετικό, που δείχνεται από τον αριθμό κάτω αριστερά.
+- Αν το μοντέλο σας προβλέψει μια κολοκύθα ως μη λευκή και αυτή ανήκει πραγματικά στην κατηγορία 'λευκό', το ονομάζουμε ψευδώς αρνητικό, που δείχνεται από τον αριθμό πάνω δεξιά.
+- Αν το μοντέλο σας προβλέψει μια κολοκύθα ως λευκή και αυτή ανήκει πραγματικά στην κατηγορία 'λευκό', το ονομάζουμε αληθές θετικό, που δείχνεται από τον αριθμό κάτω δεξιά.
+
+
+Όπως ίσως έχετε υποθέσει, είναι προτιμότερο να έχουμε μεγαλύτερο αριθμό πραγματικών θετικών και πραγματικών αρνητικών και μικρότερο αριθμό ψευδώς θετικών και ψευδώς αρνητικών, κάτι που υποδηλώνει ότι το μοντέλο αποδίδει καλύτερα.
+
+Πώς σχετίζεται ο πίνακας σύγχυσης με την ακρίβεια και την ανάκληση; Θυμηθείτε, η έκθεση ταξινόμησης που τυπώθηκε παραπάνω έδειξε ακρίβεια (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/TN και FP/FN:
-🎓 Ακρίβεια: TP/(TP + FP) Το ποσοστό των σχετικών περιπτώσεων μεταξύ των ανακτημένων περιπτώσεων (π.χ. ποιες ετικέτες ήταν σωστά επισημασμένες)
+🎓 Ακρίβεια: TP/(TP + FP) Το ποσοστό των σχετικών περιπτώσεων ανάμεσα στις ανακτηθείσες περιπτώσεις (π.χ. ποίες ετικέτες ήταν σωστά επισημασμένες)
-🎓 Ανάκληση: TP/(TP + FN) Το ποσοστό των σχετικών περιπτώσεων που ανακτήθηκαν, είτε ήταν σωστά επισημασμένες είτε όχι
+🎓 Ανάκληση: TP/(TP + FN) Το ποσοστό των σχετικών περιπτώσεων που ανακτήθηκαν, είτε επισημάνθηκαν σωστά είτε όχι
-🎓 f1-score: (2 * ακρίβεια * ανάκληση)/(ακρίβεια + ανάκληση) Ένας σταθμισμένος μέσος όρος της ακρίβειας και της ανάκλησης, με το καλύτερο να είναι 1 και το χειρότερο να είναι 0
+🎓 f1-score: (2 * ακρίβεια * ανάκληση)/(ακρίβεια + ανάκληση) Ένας σταθμισμένος μέσος όρος της ακρίβειας και της ανάκλησης, όπου 1 είναι το καλύτερο και 0 το χειρότερο
-🎓 Υποστήριξη: Ο αριθμός των εμφανίσεων κάθε ετικέτας που ανακτήθηκε
+🎓 Υποστήριξη: Ο αριθμός εμφανίσεων κάθε ανακτηθείσας ετικέτας
🎓 Ακρίβεια: (TP + TN)/(TP + TN + FP + FN) Το ποσοστό των ετικετών που προβλέφθηκαν σωστά για ένα δείγμα.
-🎓 Μακρο Μέσος Όρος: Ο υπολογισμός του μη σταθμισμένου μέσου όρου των μετρικών για κάθε ετικέτα, χωρίς να λαμβάνεται υπόψη η ανισορροπία των ετικετών.
+🎓 Μέσος Όρος Macro: Ο υπολογισμός μετρικών μη σταθμισμένων μέσων για κάθε ετικέτα, χωρίς να λαμβάνεται υπόψη η ανισορροπία των ετικετών.
-🎓 Σταθμισμένος Μέσος Όρος: Ο υπολογισμός του μέσου όρου των μετρικών για κάθε ετικέτα, λαμβάνοντας υπόψη την ανισορροπία των ετικετών με τη στάθμιση τους βάσει της υποστήριξής τους (ο αριθμός των πραγματικών περιπτώσεων για κάθε ετικέτα).
+🎓 Σταθμισμένος Μέσος Όρος: Ο υπολογισμός των μέσων μετρικών για κάθε ετικέτα, λαμβάνοντας υπόψη την ανισορροπία των ετικετών με το να τους δίνει βάρη ανάλογα με την υποστήριξή τους (τον αριθμό των πραγματικών περιπτώσεων για κάθε ετικέτα).
-✅ Μπορείτε να σκεφτείτε ποια μετρική πρέπει να παρακολουθείτε αν θέλετε το μοντέλο σας να μειώσει τον αριθμό των ψευδώς αρνητικών;
+✅ Μπορείτε να σκεφτείτε ποιο μέτρο πρέπει να παρακολουθείτε αν θέλετε το μοντέλο σας να μειώσει τον αριθμό των ψευδώς αρνητικών;
-## Οπτικοποίηση της καμπύλης ROC αυτού του μοντέλου
+## Οπτικοποιήστε την καμπύλη ROC αυτού του μοντέλου
-[](https://youtu.be/GApO575jTA0 "ML για αρχάριους - Ανάλυση της Απόδοσης Logistic Regression με Καμπύλες ROC")
+[](https://youtu.be/GApO575jTA0 "ML for beginners - Analyzing Logistic Regression Performance with ROC Curves")
-> 🎥 Κάντε κλικ στην εικόνα παραπάνω για ένα σύντομο βίντεο επισκόπησης των καμπυλών ROC
+> 🎥 Κάντε κλικ στην παραπάνω εικόνα για μια σύντομη επισκόπηση βίντεο των καμπυλών ROC
-Ας κάνουμε μία ακόμη οπτικοποίηση για να δούμε τη λεγόμενη 'καμπύλη ROC':
+Ας κάνουμε ακόμα μία οπτικοποίηση για να δούμε την λεγόμενη καμπύλη 'ROC':
```python
from sklearn.metrics import roc_curve, roc_auc_score
@@ -300,36 +366,38 @@ plt.title('ROC Curve')
plt.show()
```
-Χρησιμοποιώντας το Matplotlib, σχεδιάστε την [Καμπύλη Λειτουργίας Λήψης](https://scikit-learn.org/stable/auto_examples/model_selection/plot_roc.html?highlight=roc) ή ROC του μοντέλου. Οι καμπύλες ROC χρησιμοποιούνται συχνά για να αποκτήσετε μια εικόνα της εξόδου ενός ταξινομητή όσον αφορά τα σωστά έναντι των ψευδώς θετικών. "Οι καμπύλες ROC συνήθως εμφανίζουν το ποσοστό σωστών θετικών στον άξονα Y και το ποσοστό ψευδώς θετικών στον άξονα X." Έτσι, η απότομη κλίση της καμπύλης και ο χώρος μεταξύ της γραμμής του μέσου σημείου και της καμπύλης έχουν σημασία: θέλετε μια καμπύλη που γρήγορα ανεβαίνει και ξεπερνά τη γραμμή. Στην περίπτωσή μας, υπάρχουν ψευδώς θετικά στην αρχή, και στη συνέχεια η γραμμή ανεβαίνει και ξεπερνά σωστά:
+Χρησιμοποιώντας το Matplotlib, σχεδιάστε το [Receiving Operating Characteristic](https://scikit-learn.org/stable/auto_examples/model_selection/plot_roc.html?highlight=roc) ή ROC του μοντέλου. Οι καμπύλες ROC χρησιμοποιούνται συχνά για να έχουμε μια εικόνα της εξόδου ενός ταξινομητή όσον αφορά τα αληθώς θετικά έναντι των ψευδώς θετικών. "Οι καμπύλες ROC συνήθως εμφανίζουν το ποσοστό αληθών θετικών στον άξονα Υ, και το ποσοστό ψευδών θετικών στον άξονα Χ." Επομένως, η κλίση της καμπύλης και ο χώρος μεταξύ της γραμμής μέσης τιμής και της καμπύλης έχουν σημασία: θέλετε μια καμπύλη που ανεβαίνει γρήγορα και πέρα από τη γραμμή. Στην περίπτωσή μας, υπάρχουν ψευδώς θετικά στην αρχή, και στη συνέχεια η γραμμή ανεβαίνει και περνά σωστά πάνω από:
-
+
-Τέλος, χρησιμοποιήστε το API [`roc_auc_score`](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_auc_score.html?highlight=roc_auc#sklearn.metrics.roc_auc_score) του Scikit-learn για να υπολογίσετε την πραγματική 'Περιοχή Κάτω από την Καμπύλη' (AUC):
+Τέλος, χρησιμοποιήστε το Scikit-learn [`roc_auc_score` API](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_auc_score.html?highlight=roc_auc#sklearn.metrics.roc_auc_score) για να υπολογίσετε την πραγματική 'Επιφάνεια Κάτω από την Καμπύλη' (AUC):
```python
auc = roc_auc_score(y_test,y_scores[:,1])
print(auc)
```
-Το αποτέλεσμα είναι `0.9749908725812341`. Δεδομένου ότι το AUC κυμαίνεται από 0 έως 1, θέλετε ένα μεγάλο σκορ, καθώς ένα μοντέλο που είναι 100% σωστό στις προβλέψεις του θα έχει AUC ίσο με 1· σε αυτή την περίπτωση, το μοντέλο είναι _αρκετά καλό_.
+Το αποτέλεσμα είναι `0.9749908725812341`. Δεδομένου ότι η AUC κυμαίνεται από 0 έως 1, θέλετε υψηλό σκορ, καθώς ένα μοντέλο που είναι 100% σωστό στις προβλέψεις του θα έχει AUC ίση με 1· στην περίπτωσή μας, το μοντέλο είναι _αρκετά καλό_.
-Στα μελλοντικά μαθήματα για ταξινομήσεις, θα μάθετε πώς να επαναλαμβάνετε για να βελτιώσετε τα σκορ του μοντέλου σας. Αλλά προς το παρόν, συγχαρητήρια! Ολοκληρώσατε αυτά τα μαθήματα για την παλινδρόμηση!
+Σε μελλοντικά μαθήματα για ταξινομήσεις, θα μάθετε πώς να επαναλαμβάνετε για να βελτιώσετε τα σκορ του μοντέλου σας. Αλλά προς το παρόν, συγχαρητήρια! Ολοκληρώσατε αυτά τα μαθήματα παλινδρόμησης!
---
## 🚀Πρόκληση
-Υπάρχουν πολλά περισσότερα να εξερευνήσετε σχετικά με τη λογιστική παλινδρόμηση! Αλλά ο καλύτερος τρόπος για να μάθετε είναι να πειραματιστείτε. Βρείτε ένα σύνολο δεδομένων που ταιριάζει σε αυτόν τον τύπο ανάλυσης και δημιουργήστε ένα μοντέλο με αυτό. Τι μαθαίνετε; συμβουλή: δοκιμάστε το [Kaggle](https://www.kaggle.com/search?q=logistic+regression+datasets) για ενδιαφέροντα σύνολα δεδομένων.
+Υπάρχουν πολλά ακόμη να αναλυθούν όσον αφορά την λογιστική παλινδρόμηση! Αλλά ο καλύτερος τρόπος να μάθετε είναι να πειραματιστείτε. Βρείτε ένα σύνολο δεδομένων που ταιριάζει σε αυτόν τον τύπο ανάλυσης και φτιάξτε με αυτό ένα μοντέλο. Τι μαθαίνετε; Συμβουλή: δοκιμάστε το [Kaggle](https://www.kaggle.com/search?q=logistic+regression+datasets) για ενδιαφέροντα σύνολα δεδομένων.
-## [Κουίζ μετά το μάθημα](https://ff-quizzes.netlify.app/en/ml/)
+## [Quiz μετά το μάθημα](https://ff-quizzes.netlify.app/en/ml/)
-## Ανασκόπηση & Αυτομελέτη
+## Ανασκόπηση & Αυτομάθηση
-Διαβάστε τις πρώτες σελίδες [αυτής της εργασίας από το Stanford](https://web.stanford.edu/~jurafsky/slp3/5.pdf) σχετικά με κάποιες πρακτικές χρήσεις της λογιστικής παλινδρόμησης. Σκεφτείτε εργασίες που είναι καλύτερα προσαρμοσμένες για έναν ή τον άλλο τύπο παλινδρομήσεων που έχουμε μελετήσει μέχρι τώρα. Τι θα λειτουργούσε καλύτερα;
+Διαβάστε τις πρώτες σελίδες από [αυτό το έγγραφο του Stanford](https://web.stanford.edu/~jurafsky/slp3/5.pdf) για κάποιες πρακτικές χρήσεις της λογιστικής παλινδρόμησης. Σκεφτείτε εργασίες που είναι πιο κατάλληλες για τον ένα ή τον άλλο τύπο εργασιών παλινδρόμησης που έχουμε μελετήσει μέχρι τώρα. Τι θα λειτουργούσε καλύτερα;
## Εργασία
-[Επαναπροσπάθεια αυτής της παλινδρόμησης](assignment.md)
+[Επανάληψη αυτής της παλινδρόμησης](assignment.md)
---
-**Αποποίηση ευθύνης**:
-Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.
\ No newline at end of file
+
+**Αποποίηση ευθυνών**:
+Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία μετάφρασης με τεχνητή νοημοσύνη [Co-op Translator](https://github.com/Azure/co-op-translator). Ενώ επιδιώκουμε την ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή λανθασμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.
+
\ No newline at end of file
diff --git a/translations/el/6-NLP/3-Translation-Sentiment/README.md b/translations/el/6-NLP/3-Translation-Sentiment/README.md
index ef7f4efc6..d9063dbc8 100644
--- a/translations/el/6-NLP/3-Translation-Sentiment/README.md
+++ b/translations/el/6-NLP/3-Translation-Sentiment/README.md
@@ -1,15 +1,15 @@
-# Μετάφραση και ανάλυση συναισθημάτων με ML
+# Μετάφραση και ανάλυση συναισθήματος με ML
-Στα προηγούμενα μαθήματα μάθατε πώς να δημιουργείτε ένα βασικό bot χρησιμοποιώντας το `TextBlob`, μια βιβλιοθήκη που ενσωματώνει ML στο παρασκήνιο για να εκτελεί βασικές εργασίες NLP, όπως η εξαγωγή φράσεων ουσιαστικών. Μια άλλη σημαντική πρόκληση στη γλωσσολογία υπολογιστών είναι η ακριβής _μετάφραση_ μιας πρότασης από μία ομιλούμενη ή γραπτή γλώσσα σε μια άλλη.
+Στα προηγούμενα μαθήματα μάθατε πώς να δημιουργείτε έναν βασικό bot χρησιμοποιώντας το `TextBlob`, μια βιβλιοθήκη που ενσωματώνει ML στο παρασκήνιο για να εκτελεί βασικές εργασίες NLP όπως η εξαγωγή ουσιαστικών φράσεων. Μια άλλη σημαντική πρόκληση στη γνωστική γλωσσολογία είναι η ακριβής _μετάφραση_ μιας πρότασης από μια ομιλούμενη ή γραπτή γλώσσα σε άλλη.
## [Προ-μάθημα κουίζ](https://ff-quizzes.netlify.app/en/ml/)
-Η μετάφραση είναι ένα πολύ δύσκολο πρόβλημα, επιβαρυμένο από το γεγονός ότι υπάρχουν χιλιάδες γλώσσες και κάθε μία μπορεί να έχει πολύ διαφορετικούς γραμματικούς κανόνες. Μια προσέγγιση είναι να μετατρέψετε τους επίσημους γραμματικούς κανόνες μιας γλώσσας, όπως τα Αγγλικά, σε μια δομή ανεξάρτητη από τη γλώσσα και στη συνέχεια να την μεταφράσετε μετατρέποντάς την πίσω σε μια άλλη γλώσσα. Αυτή η προσέγγιση σημαίνει ότι θα ακολουθήσετε τα εξής βήματα:
+Η μετάφραση είναι ένα πολύ δύσκολο πρόβλημα που επιβαρύνεται από το γεγονός ότι υπάρχουν χιλιάδες γλώσσες και κάθε μία μπορεί να έχει πολύ διαφορετικούς κανόνες γραμματικής. Μια προσέγγιση είναι να μετατρέψουμε τους επίσημους κανόνες γραμματικής για μια γλώσσα, όπως τα Αγγλικά, σε μια δομή που δεν εξαρτάται από τη γλώσσα, και στη συνέχεια να τη μεταφράσουμε επιστρέφοντας σε μια άλλη γλώσσα. Αυτή η προσέγγιση σημαίνει ότι θα κάνατε τα παρακάτω βήματα:
-1. **Αναγνώριση**. Αναγνωρίστε ή επισημάνετε τις λέξεις στην εισαγωγική γλώσσα ως ουσιαστικά, ρήματα κ.λπ.
-2. **Δημιουργία μετάφρασης**. Παράγετε μια άμεση μετάφραση κάθε λέξης στη μορφή της γλώσσας-στόχου.
+1. **Αναγνώριση**. Αναγνωρίστε ή επισημάνετε τις λέξεις στην είσοδο της γλώσσας ως ουσιαστικά, ρήματα κ.λπ.
+2. **Δημιουργία μετάφρασης**. Παραγάγετε άμεση μετάφραση κάθε λέξης στη μορφή της γλώσσας στόχου.
-### Παράδειγμα πρότασης, Αγγλικά προς Ιρλανδικά
+### Παράδειγμα πρότασης, από Αγγλικά στα Ιρλανδικά
Στα 'Αγγλικά', η πρόταση _I feel happy_ αποτελείται από τρεις λέξεις με τη σειρά:
@@ -17,45 +17,45 @@
- **ρήμα** (feel)
- **επίθετο** (happy)
-Ωστόσο, στη γλώσσα 'Ιρλανδικά', η ίδια πρόταση έχει πολύ διαφορετική γραμματική δομή - τα συναισθήματα όπως "*happy*" ή "*sad*" εκφράζονται ως κάτι που είναι *επάνω* σου.
+Ωστόσο, στη γλώσσα 'Ιρλανδικά', η ίδια πρόταση έχει πολύ διαφορετική γραμματική δομή - τα συναισθήματα όπως "*happy*" ή "*sad*" εκφράζονται ως να είναι *πάνω* σου.
Η αγγλική φράση `I feel happy` στα Ιρλανδικά θα ήταν `Tá athas orm`. Μια *κυριολεκτική* μετάφραση θα ήταν `Happy is upon me`.
-Ένας Ιρλανδός ομιλητής που μεταφράζει στα Αγγλικά θα έλεγε `I feel happy`, όχι `Happy is upon me`, επειδή κατανοεί το νόημα της πρότασης, ακόμα κι αν οι λέξεις και η δομή της πρότασης είναι διαφορετικές.
+Ένας ομιλητής των Ιρλανδικών που μεταφράζει στα Αγγλικά θα λέει `I feel happy`, όχι `Happy is upon me`, επειδή κατανοεί το νόημα της πρότασης, ακόμα κι αν οι λέξεις και η δομή της πρότασης είναι διαφορετικές.
Η επίσημη σειρά για την πρόταση στα Ιρλανδικά είναι:
- **ρήμα** (Tá ή is)
- **επίθετο** (athas, ή happy)
-- **υποκείμενο** (orm, ή upon me)
+- **υποκείμενο** (orm, ή πάνω μου)
## Μετάφραση
-Ένα απλοϊκό πρόγραμμα μετάφρασης μπορεί να μεταφράσει μόνο λέξεις, αγνοώντας τη δομή της πρότασης.
+Ένα αφελές πρόγραμμα μετάφρασης μπορεί να μεταφράσει μόνο λέξεις, αγνοώντας τη δομή της πρότασης.
-✅ Εάν έχετε μάθει μια δεύτερη (ή τρίτη ή περισσότερες) γλώσσα ως ενήλικας, ίσως ξεκινήσατε σκεπτόμενοι στη μητρική σας γλώσσα, μεταφράζοντας μια έννοια λέξη προς λέξη στο μυαλό σας στη δεύτερη γλώσσα και στη συνέχεια εκφωνώντας τη μετάφρασή σας. Αυτό είναι παρόμοιο με αυτό που κάνουν τα απλοϊκά προγράμματα μετάφρασης υπολογιστών. Είναι σημαντικό να ξεπεράσετε αυτή τη φάση για να αποκτήσετε ευχέρεια!
+✅ Αν έχετε μάθει μια δεύτερη (ή τρίτη ή περισσότερες) γλώσσα ως ενήλικας, ίσως έχετε αρχίσει σκεπτόμενοι στη μητρική σας γλώσσα, μεταφράζοντας μια έννοια λέξη προς λέξη στο κεφάλι σας στη δεύτερη γλώσσα και μετά μιλώντας τη μετάφρασή σας. Αυτό είναι παρόμοιο με ό,τι κάνουν τα αφελή προγράμματα μετάφρασης υπολογιστή. Είναι σημαντικό να ξεπεράσετε αυτή τη φάση για να αποκτήσετε ευφράδεια!
-Η απλοϊκή μετάφραση οδηγεί σε κακές (και μερικές φορές ξεκαρδιστικές) λανθασμένες μεταφράσεις: `I feel happy` μεταφράζεται κυριολεκτικά ως `Mise bhraitheann athas` στα Ιρλανδικά. Αυτό σημαίνει (κυριολεκτικά) `me feel happy` και δεν είναι έγκυρη Ιρλανδική πρόταση. Παρόλο που τα Αγγλικά και τα Ιρλανδικά είναι γλώσσες που ομιλούνται σε δύο γειτονικά νησιά, είναι πολύ διαφορετικές γλώσσες με διαφορετικές γραμματικές δομές.
+Η αφελής μετάφραση οδηγεί σε κακές (και μερικές φορές αστείες) παραφράσεις: `I feel happy` μεταφράζεται κυριολεκτικά σε `Mise bhraitheann athas` στα Ιρλανδικά. Αυτό σημαίνει (κυριολεκτικά) `εγώ αισθάνομαι χαρά` και δεν είναι έγκυρη ιρλανδική πρόταση. Παρόλο που τα Αγγλικά και τα Ιρλανδικά ομιλούνται σε δύο γειτονικά νησιά, είναι πολύ διαφορετικές γλώσσες με διαφορετικές γραμματικές δομές.
-> Μπορείτε να παρακολουθήσετε μερικά βίντεο σχετικά με τις γλωσσικές παραδόσεις των Ιρλανδικών, όπως [αυτό](https://www.youtube.com/watch?v=mRIaLSdRMMs)
+> Μπορείτε να δείτε κάποια βίντεο για τις ιρλανδικές γλωσσικές παραδόσεις όπως [αυτό](https://www.youtube.com/watch?v=mRIaLSdRMMs)
### Προσεγγίσεις μηχανικής μάθησης
-Μέχρι τώρα, έχετε μάθει για την προσέγγιση των επίσημων κανόνων στην επεξεργασία φυσικής γλώσσας. Μια άλλη προσέγγιση είναι να αγνοήσετε το νόημα των λέξεων και _αντί να χρησιμοποιήσετε μηχανική μάθηση για να ανιχνεύσετε μοτίβα_. Αυτό μπορεί να λειτουργήσει στη μετάφραση εάν έχετε πολλά κείμενα (ένα *corpus*) ή κείμενα (*corpora*) τόσο στην αρχική όσο και στη γλώσσα-στόχο.
+Μέχρι τώρα, έχετε μάθει για την προσέγγιση των επίσημων κανόνων στην επεξεργασία φυσικής γλώσσας. Μια άλλη προσέγγιση είναι να αγνοήσουμε το νόημα των λέξεων και _αντίθετα να χρησιμοποιήσουμε μηχανική μάθηση για την ανίχνευση προτύπων_. Αυτό μπορεί να λειτουργήσει στη μετάφραση αν έχετε πολλά κείμενα (ένα *κορπούμ*) ή κείμενα (*κορπούμ*) και στις δύο γλώσσες, την αφετηρία και την στόχο.
-Για παράδειγμα, σκεφτείτε την περίπτωση του *Περηφάνια και Προκατάληψη*, ενός γνωστού αγγλικού μυθιστορήματος γραμμένου από την Jane Austen το 1813. Εάν συμβουλευτείτε το βιβλίο στα Αγγλικά και μια ανθρώπινη μετάφραση του βιβλίου στα *Γαλλικά*, θα μπορούσατε να ανιχνεύσετε φράσεις που είναι _ιδιωματικά_ μεταφρασμένες από τη μία γλώσσα στην άλλη. Θα το κάνετε αυτό σε λίγο.
+Για παράδειγμα, σκεφτείτε το *Pride and Prejudice*, ένα γνωστό αγγλικό μυθιστόρημα που έγραψε η Jane Austen το 1813. Αν συμβουλευτείτε το βιβλίο στα Αγγλικά και μια ανθρώπινη μετάφραση του βιβλίου στα *γαλλικά*, μπορείτε να εντοπίσετε φράσεις που έχουν μεταφραστεί _ιδιωματικά_ στο ένα από το άλλο. Αυτό θα το κάνετε σε λίγο.
-Για παράδειγμα, όταν μια αγγλική φράση όπως `I have no money` μεταφράζεται κυριολεκτικά στα Γαλλικά, μπορεί να γίνει `Je n'ai pas de monnaie`. Η "Monnaie" είναι ένα δύσκολο γαλλικό 'ψευδο-ομόλογο', καθώς 'money' και 'monnaie' δεν είναι συνώνυμα. Μια καλύτερη μετάφραση που θα μπορούσε να κάνει ένας άνθρωπος θα ήταν `Je n'ai pas d'argent`, επειδή μεταφέρει καλύτερα το νόημα ότι δεν έχετε χρήματα (αντί για 'ψιλά', που είναι η έννοια του 'monnaie').
+Για παράδειγμα, όταν μια αγγλική φράση όπως το `I have no money` μεταφράζεται κυριολεκτικά στα γαλλικά, μπορεί να γίνει `Je n'ai pas de monnaie`. Η "Monnaie" είναι ένα δύσκολο γαλλικό 'false cognate', καθώς 'money' και 'monnaie' δεν είναι συνώνυμα. Μια καλύτερη μετάφραση που μπορεί να κάνει ένας άνθρωπος θα ήταν `Je n'ai pas d'argent`, επειδή μεταφέρει καλύτερα το νόημα ότι δεν έχεις χρήματα (αντί για 'ψιλά' που είναι το νόημα του 'monnaie').
-
+
> Εικόνα από [Jen Looper](https://twitter.com/jenlooper)
-Εάν ένα μοντέλο ML έχει αρκετές ανθρώπινες μεταφράσεις για να δημιουργήσει ένα μοντέλο, μπορεί να βελτιώσει την ακρίβεια των μεταφράσεων εντοπίζοντας κοινά μοτίβα σε κείμενα που έχουν μεταφραστεί προηγουμένως από ειδικούς ανθρώπινους ομιλητές και των δύο γλωσσών.
+Αν ένα μοντέλο ML έχει αρκετές ανθρώπινες μεταφράσεις για να χτίσει ένα μοντέλο, μπορεί να βελτιώσει την ακρίβεια των μεταφράσεων αναγνωρίζοντας κοινά πρότυπα σε κείμενα που έχουν ήδη μεταφραστεί από ειδικούς ανθρώπινους ομιλητές και των δύο γλωσσών.
### Άσκηση - μετάφραση
-Μπορείτε να χρησιμοποιήσετε το `TextBlob` για να μεταφράσετε προτάσεις. Δοκιμάστε την διάσημη πρώτη γραμμή του **Περηφάνια και Προκατάληψη**:
+Μπορείτε να χρησιμοποιήσετε το `TextBlob` για να μεταφράσετε προτάσεις. Δοκιμάστε τη διάσημη πρώτη γραμμή του **Pride and Prejudice**:
```python
from textblob import TextBlob
@@ -67,43 +67,43 @@ 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` κάνει πάρα πολύ καλή δουλειά στη μετάφραση: "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:
+Μπορεί να υποστηριχθεί ότι η μετάφραση του 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 κάνει καλύτερη δουλειά από τον ανθρώπινο μεταφραστή που προσθέτει περιττά λόγια στο στόμα του αρχικού συγγραφέα για 'σαφήνεια'.
+Σε αυτή την περίπτωση, η μετάφραση που υποστηρίζεται από ML κάνει καλύτερη δουλειά από τον ανθρώπινο μεταφραστή που βάζει περιττές λέξεις στο στόμα του αρχικού συγγραφέα για λόγους «καθαρότητας».
-> Τι συμβαίνει εδώ; και γιατί το TextBlob είναι τόσο καλό στη μετάφραση; Λοιπόν, στο παρασκήνιο, χρησιμοποιεί το Google translate, ένα εξελιγμένο AI που μπορεί να αναλύσει εκατομμύρια φράσεις για να προβλέψει τις καλύτερες ακολουθίες για την εκάστοτε εργασία. Δεν υπάρχει τίποτα χειροκίνητο εδώ και χρειάζεστε σύνδεση στο διαδίκτυο για να χρησιμοποιήσετε το `blob.translate`.
+> Τι συμβαίνει εδώ; και γιατί το TextBlob είναι τόσο καλό στη μετάφραση; Λοιπόν, στο παρασκήνιο, χρησιμοποιεί το Google translate, μια εξελιγμένη τεχνητή νοημοσύνη ικανή να αναλύσει εκατομμύρια φράσεις ώστε να προβλέψει τις καλύτερες ακολουθίες για την εργασία που έχει να κάνει. Δεν υπάρχει τίποτα χειροκίνητο εδώ και χρειάζεστε σύνδεση στο ίντερνετ για να χρησιμοποιήσετε το `blob.translate`.
-✅ Δοκιμάστε μερικές ακόμα προτάσεις. Ποια είναι καλύτερη, η ML ή η ανθρώπινη μετάφραση; Σε ποιες περιπτώσεις;
+✅ Δοκιμάστε μερικές ακόμα προτάσεις. Ποια είναι καλύτερη, η μετάφραση ML ή η ανθρώπινη; Σε ποιες περιπτώσεις;
-## Ανάλυση συναισθημάτων
+## Ανάλυση συναισθήματος
-Ένας άλλος τομέας όπου η μηχανική μάθηση μπορεί να λειτουργήσει πολύ καλά είναι η ανάλυση συναισθημάτων. Μια μη-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' ως αρνητικά. Η συνολική διάθεση επηρεάζεται από αυτές τις αντικρουόμενες λέξεις.
+Αυτή η προσέγγιση είναι εύκολο να παραπλανηθεί όπως ίσως έχετε δει στην άσκηση του 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" με διαφορετικούς τρόπους για να ανακαλύψετε πώς η φωνή σας μεταφέρει νόημα.
+✅ Σταματήστε για λίγο και σκεφτείτε πώς εκφράζουμε τον σαρκασμό ως ανθρώπινοι ομιλητές. Η αλλαγή στην τονικότητα παίζει μεγάλο ρόλο. Δοκιμάστε να πείτε τη φράση "Well, that film was awesome" με διαφορετικούς τρόπους για να ανακαλύψετε πώς η φωνή σας μεταδίδει το νόημα.
### Προσεγγίσεις ML
-Η προσέγγιση ML θα ήταν να συγκεντρώσετε χειροκίνητα αρνητικά και θετικά σώματα κειμένου - tweets, ή κριτικές ταινιών, ή οτιδήποτε όπου ο άνθρωπος έχει δώσει μια βαθμολογία *και* μια γραπτή γνώμη. Στη συνέχεια, μπορούν να εφαρμοστούν τεχνικές NLP στις γνώμες και τις βαθμολογίες, ώστε να προκύψουν μοτίβα (π.χ., θετικές κριτικές ταινιών τείνουν να έχουν τη φράση 'Oscar worthy' περισσότερο από αρνητικές κριτικές ταινιών, ή θετικές κριτικές εστιατορίων λένε 'gourmet' πολύ περισσότερο από 'disgusting').
+Η προσέγγιση ML θα ήταν να συλλέξετε χειροκίνητα αρνητικά και θετικά σώματα κειμένων - tweets ή κριτικές ταινιών, ή οτιδήποτε όπου ο άνθρωπος έχει δώσει βαθμολογία *και* γραπτή γνώμη. Στη συνέχεια, μπορούν να εφαρμοστούν τεχνικές NLP στις γνώμες και στις βαθμολογίες, ώστε να εμφανίζονται πρότυπα (π.χ., οι θετικές κριτικές ταινιών έχουν πιο συχνά τη φράση 'Oscar worthy' από ό,τι οι αρνητικές κριτικές ταινιών, ή οι θετικές κριτικές εστιατορίων λένε 'gourmet' πολύ περισσότερο από 'disgusting').
-> ⚖️ **Παράδειγμα**: Εάν εργαζόσασταν στο γραφείο ενός πολιτικού και υπήρχε κάποιος νέος νόμος υπό συζήτηση, οι πολίτες μπορεί να έγραφαν στο γραφείο με emails υπέρ ή κατά του συγκεκριμένου νέου νόμου. Ας πούμε ότι σας ανατέθηκε να διαβάσετε τα emails και να τα ταξινομήσετε σε 2 κατηγορίες, *υπέρ* και *κατά*. Εάν υπήρχαν πολλά emails, μπορεί να αισθανθείτε υπερβολική πίεση προσπαθώντας να τα διαβάσετε όλα. Δεν θα ήταν ωραίο αν ένα bot μπορούσε να τα διαβάσει όλα για εσάς, να τα κατανοήσει και να σας πει σε ποια κατηγορία ανήκει κάθε email;
->
-> Ένας τρόπος για να το πετύχετε αυτό είναι να χρησιμοποιήσετε Μηχανική Μάθηση. Θα εκπαιδεύατε το μοντέλο με ένα μέρος των emails *κατά* και ένα μέρος των emails *υπέρ*. Το μοντέλο θα τείνει να συσχετίζει φράσεις και λέξεις με την πλευρά κατά και την πλευρά υπέρ, *αλλά δεν θα κατανοούσε κανένα από τα περιεχόμενα*, μόνο ότι ορισμένες λέξεις και μοτίβα ήταν πιο πιθανό να εμφανιστούν σε ένα email *κατά* ή *υπέρ*. Θα μπορούσατε να το δοκιμάσετε με μερικά emails που δεν είχατε χρησιμοποιήσει για να εκπαιδεύσετε το μοντέλο και να δείτε αν κατέληγε στο ίδιο συμπέρασμα με εσάς. Στη συνέχεια, μόλις ήσασταν ικανοποιημένοι με την ακρίβεια του μοντέλου, θα μπορούσατε να επεξεργαστείτε μελλοντικά emails χωρίς να χρειάζεται να διαβάσετε το καθένα.
+> ⚖️ **Παράδειγμα**: Αν εργαζόσασταν σε ένα γραφείο πολιτικού και υπήρχε κάποιο νέο νομοσχέδιο που συζητείται, οι ψηφοφόροι μπορεί να έστελναν στο γραφείο e-mails υπέρ ή κατά αυτού του νέου νόμου. Ας πούμε ότι σας ανέθεσαν να διαβάσετε τα emails και να τα ταξινομήσετε σε 2 σωρούς, *υπέρ* και *κατά*. Αν υπήρχαν πολλά emails, μπορεί να ήσασταν υπερφορτωμένοι προσπαθώντας να τα διαβάσετε όλα. Δεν θα ήταν ωραίο αν ένα bot μπορούσε να τα διαβάσει όλα για εσάς, να τα κατανοήσει και να σας πει σε ποιο σωρό ανήκει κάθε email;
+>
+> Ένας τρόπος για να το πετύχετε αυτό είναι να χρησιμοποιήσετε τη Μηχανική Μάθηση. Θα εκπαιδεύατε το μοντέλο με ένα μέρος των emails *κατά* και ένα μέρος των emails *υπέρ*. Το μοντέλο θα συσχέτιζε φράσεις και λέξεις με την πλευρά κατά και την πλευρά υπέρ, *αλλά δεν θα καταλάβαινε κανένα από το περιεχόμενο*, μόνο ότι ορισμένες λέξεις και πρότυπα ήταν πιο πιθανά να εμφανιστούν σε ένα email *κατά* ή *υπέρ*. Μπορείτε να το δοκιμάσετε με μερικά email που δεν χρησιμοποιήσατε στην εκπαίδευση του μοντέλου, και να δείτε αν καταλήγει στο ίδιο συμπέρασμα με εσάς. Τότε, μόλις θα ήσασταν ικανοποιημένοι με την ακρίβεια του μοντέλου, θα μπορούσατε να επεξεργαστείτε τα μελλοντικά email χωρίς να χρειάζεται να διαβάσετε το κάθε ένα.
-✅ Μοιάζει αυτή η διαδικασία με διαδικασίες που έχετε χρησιμοποιήσει σε προηγούμενα μαθήματα;
+✅ Αυτή η διαδικασία σας ακούγεται σαν διαδικασίες που έχετε χρησιμοποιήσει σε προηγούμενα μαθήματα;
-## Άσκηση - συναισθηματικές προτάσεις
+## Άσκηση - προτάσεις συναισθήματος
-Τα συναισθήματα μετρώνται με μια *πολικότητα* από -1 έως 1, που σημαίνει ότι -1 είναι το πιο αρνητικό συναίσθημα και 1 είναι το πιο θετικό. Τα συναισθήματα μετρώνται επίσης με μια βαθμολογία από 0 έως 1 για αντικειμενικότητα (0) και υποκειμενικότητα (1).
+Το συναίσθημα μετριέται με *πολικότητα* από -1 έως 1, που σημαίνει ότι το -1 είναι το πιο αρνητικό συναίσθημα και το 1 το πιο θετικό. Το συναίσθημα μετριέται επίσης με βαθμολογία 0 - 1 για αντικειμενικότητα (0) και υποκειμενικότητα (1).
-Ρίξτε μια άλλη ματιά στο *Περηφάνια και Προκατάληψη* της Jane Austen. Το κείμενο είναι διαθέσιμο εδώ στο [Project Gutenberg](https://www.gutenberg.org/files/1342/1342-h/1342-h.htm). Το παρακάτω δείγμα δείχνει ένα σύντομο πρόγραμμα που αναλύει τα συναισθήματα των πρώτων και τελευταίων προτάσεων του βιβλίου και εμφανίζει την πολικότητα συναισθήματος και τη βαθμολογία υποκειμενικότητας/αντικειμενικότητας.
+Ρίξτε μια ακόμα ματιά στο *Pride and Prejudice* της Jane Austen. Το κείμενο είναι διαθέσιμο εδώ στο [Project Gutenberg](https://www.gutenberg.org/files/1342/1342-h/1342-h.htm). Το δείγμα παρακάτω δείχνει ένα σύντομο πρόγραμμα που αναλύει τη συναισθηματική πολικότητα και την υποκειμενικότητα/αντικειμενικότητα των πρώτων και τελευταίων προτάσεων του βιβλίου.
-Θα πρέπει να χρησιμοποιήσετε τη βιβλιοθήκη `TextBlob` (που περιγράφεται παραπάνω) για να προσδιορίσετε το `sentiment` (δεν χρειάζεται να γράψετε τον δικό σας υπολογιστή συναισθημάτων) στην ακόλουθη εργασία.
+Πρέπει να χρησιμοποιήσετε τη βιβλιοθήκη `TextBlob` (που περιγράφεται παραπάνω) για να προσδιορίσετε το `sentiment` (δεν χρειάζεται να γράψετε τον δικό σας υπολογιστή συναισθήματος) στην παρακάτω εργασία.
```python
from textblob import TextBlob
@@ -119,7 +119,7 @@ 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)
@@ -130,42 +130,66 @@ Darcy, as well as Elizabeth, really loved them; and they were
uniting them. has a sentiment of Sentiment(polarity=0.7, subjectivity=0.8)
```
-## Πρόκληση - ελέγξτε την πολικότητα συναισθήματος
+## Πρόκληση - έλεγχος πολικότητας συναισθήματος
-Η εργασία σας είναι να προσδιορίσετε, χρησιμοποιώντας την πολικότητα συναισθήματος, εάν το *Περηφάνια και Προκατάληψη* έχει περισσότερες απόλυτα θετικές προτάσεις από απόλυτα αρνητικές. Για αυτή την εργασία, μπορείτε να υποθέσετε ότι μια βαθμολογία πολικότητας 1 ή -1 είναι απόλυτα θετική ή αρνητική αντίστοιχα.
+Η εργασία σας είναι να προσδιορίσετε, χρησιμοποιώντας την πολικότητα του συναισθήματος, αν το *Pride and Prejudice* έχει περισσότερες απόλυτα θετικές προτάσεις παρά απόλυτα αρνητικές. Για αυτήν την εργασία, μπορείτε να θεωρήσετε ότι βαθμολογία πολικότητας 1 ή -1 είναι απόλυτα θετική ή αρνητική αντίστοιχα.
**Βήματα:**
-1. Κατεβάστε ένα [αντίγραφο του Περηφάνια και Προκατάληψη](https://www.gutenberg.org/files/1342/1342-h/1342-h.htm) από το Project Gutenberg ως αρχείο .txt. Αφαιρέστε τα μεταδεδομένα στην αρχή και το τέλος του αρχείου, αφήνοντας μόνο το αρχικό κείμενο
-2. Ανοίξτε το αρχείο σε Python και εξαγάγετε το περιεχόμενο ως string
-3. Δημιουργήστε ένα TextBlob χρησιμοποιώντας το string του βιβλίου
-4. Αναλύστε κάθε πρόταση στο βιβλίο σε έναν βρόχο
- 1. Εάν η πολικότητα είναι 1 ή -1 αποθηκεύστε την πρόταση σε έναν πίνακα ή λίστα θετικών ή αρνητικών μηνυμάτων
-5. Στο τέλος, εκτυπώστε όλες τις θετικές προτάσεις και τις αρνητικές προτάσεις (ξεχωριστά) και τον αριθμό της κάθε μίας.
-
-Εδώ είναι ένα δείγμα [λύσης](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/3-Translation-Sentiment/solution/notebook.ipynb).
-
-✅ Έλεγχος Γνώσεων
-
-1. Τα συναισθήματα βασίζονται στις λέξεις που χρησιμοποιούνται στην πρόταση, αλλά ο κώδικας *κατανοεί* τις λέξεις;
-2. Πιστεύετε ότι η πολικότητα συναισθήματος είναι ακριβής, ή με άλλα λόγια, *συμφωνείτε* με τις βαθμολογίες;
- 1. Ειδικότερα, συμφωνείτε ή διαφωνείτε με την απόλυτη **θετική** πολικότητα των ακόλουθων προτάσεων;
- * “What an excellent father you have, girls!” said she, when the door was shut.
- * “Your examination of Mr. Darcy is over, I presume,” said Miss Bingley; “and pray what is the result?” “I am perfectly convinced by it that Mr. Darcy has no defect.
- * How wonderfully these sort of things occur!
- * I have the greatest dislike in the world to that sort of thing.
- * Charlotte is an excellent manager, I dare say.
- * “This is delightful indeed!
- * I am so happy!
- * Your idea of the ponies is delightful.
- 2. Οι επόμενες 3 προ
-Υπάρχουν πολλοί τρόποι για να εξάγουμε το συναίσθημα από κείμενο. Σκεφτείτε τις επιχειρηματικές εφαρμογές που θα μπορούσαν να χρησιμοποιήσουν αυτήν την τεχνική. Σκεφτείτε πώς μπορεί να πάει στραβά. Διαβάστε περισσότερα για εξελιγμένα συστήματα έτοιμα για επιχειρήσεις που αναλύουν το συναίσθημα, όπως το [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). Δοκιμάστε μερικές από τις προτάσεις του "Περηφάνια και Προκατάληψη" παραπάνω και δείτε αν μπορεί να ανιχνεύσει λεπτές αποχρώσεις.
-
-## Εργασία
+1. Κατεβάστε ένα [αντίγραφο του Pride and Prejudice](https://www.gutenberg.org/files/1342/1342-h/1342-h.htm) από το Project Gutenberg ως αρχείο .txt. Αφαιρέστε τα μεταδεδομένα στην αρχή και στο τέλος του αρχείου, αφήνοντας μόνο το αρχικό κείμενο
+2. Ανοίξτε το αρχείο σε Python και εξαγάγετε τα περιεχόμενα ως συμβολοσειρά
+3. Δημιουργήστε ένα TextBlob χρησιμοποιώντας τη συμβολοσειρά του βιβλίου
+4. Αναλύστε κάθε πρόταση στο βιβλίο σε βρόχο
+ 1. Αν η πολικότητα είναι 1 ή -1 αποθηκεύστε την πρόταση σε έναν πίνακα ή λίστα θετικών ή αρνητικών μηνυμάτων
+5. Στο τέλος, εκτυπώστε όλες τις θετικές και τις αρνητικές προτάσεις (ξεχωριστά) και τον αριθμό της κάθε κατηγορίας.
+
+Εδώ είναι μια δείγμα [λύσης](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/3-Translation-Sentiment/solution/notebook.ipynb).
+
+✅ Έλεγχος γνώσης
+
+1. Το συναίσθημα βασίζεται στις λέξεις που χρησιμοποιούνται στην πρόταση, αλλά ο κώδικας *καταλαβαίνει* τις λέξεις;
+2. Πιστεύετε ότι η πολικότητα του συναισθήματος είναι ακριβής, ή με άλλα λόγια, συμφωνείτε με τις βαθμολογίες;
+ 1. Συγκεκριμένα, συμφωνείτε ή διαφωνείτε με την απόλυτα **θετική** πολικότητα των παρακάτω προτάσεων;
+ * “Τι εξαιρετικός πατέρας έχετε, κορίτσια!” είπε, όταν έκλεισε η πόρτα.
+ * “Η εξέτασή σας για τον κ. Darcy έχει τελειώσει, υποθέτω,” είπε η δεσποινίς Bingley· “και παρακαλώ ποιο είναι το αποτέλεσμα;" “Είμαι απόλυτα πεπεισμένη ότι ο κ. Darcy δεν έχει κανένα ελάττωμα.
+ * Πώς συμβαίνουν θαυμάσια αυτά τα πράγματα!
+ * Έχω τη μεγαλύτερη αντιπάθεια στον κόσμο γι’ αυτά τα πράγματα.
+ * Η Charlotte είναι άριστη διαχειρίστρια, τολμώ να πω.
+ * “Αυτό είναι πραγματικά απολαυστικό!
+ * Είμαι τόσο χαρούμενη!
+ * Η ιδέα σου για τα πόνυ είναι απολαυστική.
+ 2. Οι επόμενες 3 προτάσεις αξιολογήθηκαν με απόλυτα θετικό συναίσθημα, αλλά κατά την προσεκτική ανάγνωση, δεν είναι θετικές προτάσεις. Γιατί η ανάλυση συναισθήματος θεώρησε ότι ήταν θετικές προτάσεις;
+ * Ευτυχισμένη θα είμαι, όταν τελειώσει η διαμονή του στο Netherfield!” “Εύχομαι να μπορούσα να σου πω κάτι παρηγορητικό,” απάντησε η Elizabeth· “αλλά είναι εντελώς εκτός των δυνατοτήτων μου.
+ * Αν μπορούσα να σε δω τόσο ευτυχισμένη!
+ * Η στενοχώρια μας, αγαπητή μου Lizzy, είναι πολύ μεγάλη.
+ 3. Συμφωνείτε ή διαφωνείτε με την απόλυτα **αρνητική** πολικότητα των παρακάτω προτάσεων;
+ - Όλοι είναι απογοητευμένοι με την υπερηφάνειά του.
+ - “Θα ήθελα να μάθω πώς συμπεριφέρεται ανάμεσα σε ξένους.” “Τότε θα ακούσεις—αλλά ετοιμάσου για κάτι πολύ τρομερό.
+ - Η παύση ήταν για τα συναισθήματα της Elizabeth τρομακτική.
+ - Θα ήταν τρομερό!
+
+✅ Κάθε λάτρης της Jane Austen θα καταλάβει ότι συχνά χρησιμοποιεί τα βιβλία της για να κριτικάρει τις πιο γελοίες πλευρές της αγγλικής κοινωνίας της εποχής της Ρέγκενσι. Η Elizabeth Bennett, η κύρια ηρωίδα του *Pride and Prejudice*, είναι έντονη κοινωνική παρατηρήτρια (όπως η συγγραφέας) και η γλώσσα της είναι συχνά πολύ περιεκτική. Ακόμα και ο κ. Darcy (το ερωτικό ενδιαφέρον στην ιστορία) σημειώνει το παιχνιδιάρικο και πειραχτικό λεκτικό ύφος της Elizabeth: "Είχα την ευχαρίστηση της γνωριμίας σας αρκετό καιρό για να ξέρω ότι βρίσκετε μεγάλη απόλαυση καμιά φορά να διατυπώνετε γνώμες που στην πραγματικότητα δεν είναι δικές σας."
+
+---
+
+## 🚀Πρόκληση
+
+Μπορείτε να κάνετε τον Marvin ακόμα καλύτερο αν εξάγετε άλλα χαρακτηριστικά από την είσοδο του χρήστη;
+
+## [Μετά το μάθημα κουίζ](https://ff-quizzes.netlify.app/en/ml/)
+
+## Επισκόπηση & Αυτο-μελέτη
+
+
+Υπάρχουν πολλοί τρόποι για να εξαχθεί το συναίσθημα από κείμενο. Σκεφτείτε τις επιχειρηματικές εφαρμογές που μπορεί να χρησιμοποιήσουν αυτήν την τεχνική. Σκεφτείτε πώς μπορεί να πάει στραβά. Διαβάστε περισσότερα για προηγμένα συστήματα έτοιμα για επιχειρήσεις που αναλύουν το συναίσθημα όπως το [Azure Text Analysis](https://docs.microsoft.com/azure/cognitive-services/Text-Analytics/how-tos/text-analytics-how-to-sentiment-analysis?tabs=version-3-1?WT.mc_id=academic-77952-leestott). Δοκιμάστε κάποιες από τις προτάσεις από το Pride and Prejudice παραπάνω και δείτε αν μπορεί να ανιχνεύσει την λεπτομέρεια.
+
+## Ανάθεση
[Ποιητική άδεια](assignment.md)
---
-**Αποποίηση ευθύνης**:
-Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.
\ No newline at end of file
+
+**Αποποίηση ευθυνών**:
+Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία μετάφρασης με τεχνητή νοημοσύνη [Co-op Translator](https://github.com/Azure/co-op-translator). Ενώ επιδιώκουμε την ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή λανθασμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.
+
\ No newline at end of file
diff --git a/translations/el/8-Reinforcement/1-QLearning/README.md b/translations/el/8-Reinforcement/1-QLearning/README.md
index 1f48dd3d8..032615afa 100644
--- a/translations/el/8-Reinforcement/1-QLearning/README.md
+++ b/translations/el/8-Reinforcement/1-QLearning/README.md
@@ -1,47 +1,47 @@
-# Εισαγωγή στη Μάθηση Ενίσχυσης και Q-Learning
+# Εισαγωγή στην Εκμάθηση με Ενίσχυση και στην Q-Μάθηση
-
+
> Σκίτσο από [Tomomi Imura](https://www.twitter.com/girlie_mac)
-Η μάθηση ενίσχυσης περιλαμβάνει τρεις σημαντικές έννοιες: τον πράκτορα, κάποιες καταστάσεις και ένα σύνολο ενεργειών ανά κατάσταση. Εκτελώντας μια ενέργεια σε μια συγκεκριμένη κατάσταση, ο πράκτορας λαμβάνει μια ανταμοιβή. Φανταστείτε ξανά το παιχνίδι στον υπολογιστή Super Mario. Είστε ο Mario, βρίσκεστε σε ένα επίπεδο του παιχνιδιού, δίπλα σε μια άκρη γκρεμού. Πάνω σας υπάρχει ένα νόμισμα. Εσείς, ως Mario, σε ένα επίπεδο του παιχνιδιού, σε μια συγκεκριμένη θέση... αυτή είναι η κατάστασή σας. Αν κάνετε ένα βήμα προς τα δεξιά (μια ενέργεια), θα πέσετε από την άκρη και θα λάβετε χαμηλή αριθμητική βαθμολογία. Ωστόσο, αν πατήσετε το κουμπί άλματος, θα κερδίσετε έναν πόντο και θα παραμείνετε ζωντανοί. Αυτό είναι ένα θετικό αποτέλεσμα και θα πρέπει να σας απονείμει μια θετική αριθμητική βαθμολογία.
+Η εκμάθηση με ενίσχυση περιλαμβάνει τρεις σημαντικές έννοιες: τον πρακτορά (agent), κάποιες καταστάσεις, και ένα σύνολο ενεργειών ανά κατάσταση. Εκτελώντας μια ενέργεια σε μια συγκεκριμένη κατάσταση, ο πρακτοράς λαμβάνει μια ανταμοιβή. Φανταστείτε ξανά το ηλεκτρονικό παιχνίδι Super Mario. Εσείς είστε ο Μάριο, βρίσκεστε σε ένα επίπεδο του παιχνιδιού, όρθιος δίπλα σε μια άκρη γκρεμού. Πάνω σας υπάρχει ένα νόμισμα. Εσείς ως Μάριο, σε ένα επίπεδο του παιχνιδιού, σε μια συγκεκριμένη θέση... αυτή είναι η κατάσταση σας. Μετακίνηση ένα βήμα δεξιά (μια ενέργεια) θα σας έριχνε από την άκρη, και αυτό θα σας έδινε μια χαμηλή αριθμητική βαθμολογία. Ωστόσο, πατώντας το κουμπί άλματος, θα μπορούσατε να σκοράρετε ένα πόντο και να παραμείνετε ζωντανοί. Αυτό είναι ένα θετικό αποτέλεσμα και θα έπρεπε να σας αποδώσει μια θετική αριθμητική βαθμολογία.
-Χρησιμοποιώντας τη μάθηση ενίσχυσης και έναν προσομοιωτή (το παιχνίδι), μπορείτε να μάθετε πώς να παίζετε το παιχνίδι για να μεγιστοποιήσετε την ανταμοιβή, δηλαδή να παραμείνετε ζωντανοί και να συγκεντρώσετε όσο το δυνατόν περισσότερους πόντους.
+Με τη χρήση της εκμάθησης με ενίσχυση και ενός προσομοιωτή (του παιχνιδιού), μπορείτε να μάθετε πώς να παίζετε το παιχνίδι για να μεγιστοποιήσετε την ανταμοιβή, που είναι να παραμείνετε ζωντανοί και να σκοράρετε όσο το δυνατόν περισσότερους πόντους.
-[](https://www.youtube.com/watch?v=lDq_en8RNOo)
+[](https://www.youtube.com/watch?v=lDq_en8RNOo)
-> 🎥 Κάντε κλικ στην εικόνα παραπάνω για να ακούσετε τον Dmitry να συζητά για τη Μάθηση Ενίσχυσης
+> 🎥 Κάντε κλικ στην εικόνα παραπάνω για να ακούσετε τον Dmitry να συζητά για την Εκμάθηση με Ενίσχυση
-## [Κουίζ πριν το μάθημα](https://ff-quizzes.netlify.app/en/ml/)
+## [Προ-μάθημα κουίζ](https://ff-quizzes.netlify.app/en/ml/)
## Προαπαιτούμενα και Ρύθμιση
-Σε αυτό το μάθημα, θα πειραματιστούμε με κώδικα σε Python. Θα πρέπει να μπορείτε να εκτελέσετε τον κώδικα του Jupyter Notebook από αυτό το μάθημα, είτε στον υπολογιστή σας είτε κάπου στο cloud.
+Σε αυτό το μάθημα, θα πειραματιστούμε με μερικό κώδικα σε Python. Θα πρέπει να μπορείτε να τρέξετε τον κώδικα του Jupyter Notebook από αυτό το μάθημα, είτε στον υπολογιστή σας είτε κάπου στο cloud.
-Μπορείτε να ανοίξετε [το notebook του μαθήματος](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) και να ακολουθήσετε το μάθημα για να το δημιουργήσετε.
+Μπορείτε να ανοίξετε [το notebook του μαθήματος](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) και να ακολουθήσετε αυτό το μάθημα για να κατασκευάσετε.
-> **Σημείωση:** Εάν ανοίγετε αυτόν τον κώδικα από το cloud, θα πρέπει επίσης να κατεβάσετε το αρχείο [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), το οποίο χρησιμοποιείται στον κώδικα του notebook. Προσθέστε το στον ίδιο κατάλογο με το notebook.
+> **Σημείωση:** Αν ανοίγετε αυτόν τον κώδικα από το cloud, χρειάζεται επίσης να κατεβάσετε το αρχείο [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), το οποίο χρησιμοποιείται στον κώδικα του notebook. Προσθέστε το στο ίδιο φάκελο με το notebook.
## Εισαγωγή
-Σε αυτό το μάθημα, θα εξερευνήσουμε τον κόσμο του **[Πέτρου και του Λύκου](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)**, εμπνευσμένο από ένα μουσικό παραμύθι του Ρώσου συνθέτη [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev). Θα χρησιμοποιήσουμε τη **Μάθηση Ενίσχυσης** για να αφήσουμε τον Πέτρο να εξερευνήσει το περιβάλλον του, να συλλέξει νόστιμα μήλα και να αποφύγει τη συνάντηση με τον λύκο.
+Σε αυτό το μάθημα, θα εξερευνήσουμε τον κόσμο του **[Ο Πέτρος και ο Λύκος](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)**, εμπνευσμένο από ένα μουσικό παραμύθι του Ρώσου συνθέτη, [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev). Θα χρησιμοποιήσουμε την **Εκμάθηση με Ενίσχυση** για να αφήσουμε τον Πέτρο να εξερευνήσει το περιβάλλον του, να συλλέξει νόστιμα μήλα και να αποφύγει να συναντήσει τον λύκο.
-Η **Μάθηση Ενίσχυσης** (RL) είναι μια τεχνική μάθησης που μας επιτρέπει να μάθουμε τη βέλτιστη συμπεριφορά ενός **πράκτορα** σε κάποιο **περιβάλλον** μέσω πολλών πειραμάτων. Ένας πράκτορας σε αυτό το περιβάλλον πρέπει να έχει κάποιο **στόχο**, ο οποίος ορίζεται από μια **συνάρτηση ανταμοιβής**.
+Η **Εκμάθηση με Ενίσχυση** (RL) είναι μια τεχνική μάθησης που μας επιτρέπει να μάθουμε την βέλτιστη συμπεριφορά ενός **πρακτορά** σε κάποιο **περιβάλλον** τρέχοντας πολλά πειράματα. Ένας πρακτοράς σε αυτό το περιβάλλον πρέπει να έχει κάποιο **στόχο**, ο οποίος ορίζεται από μια **συνάρτηση ανταμοιβής**.
## Το περιβάλλον
-Για απλότητα, ας θεωρήσουμε ότι ο κόσμος του Πέτρου είναι ένας τετράγωνος πίνακας μεγέθους `width` x `height`, όπως αυτός:
+Για απλότητα, ας θεωρήσουμε τον κόσμο του Πέτρου σαν μια τετράγωνη πίστα διαστάσεων `πλάτος` x `ύψος`, όπως αυτή:
-
+
-Κάθε κελί σε αυτόν τον πίνακα μπορεί να είναι:
+Κάθε κελί αυτής της πίστα μπορεί είτε να είναι:
-* **έδαφος**, πάνω στο οποίο ο Πέτρος και άλλα πλάσματα μπορούν να περπατήσουν.
+* **έδαφος**, πάνω στο οποίο μπορεί να περπατήσει ο Πέτρος και άλλα πλάσματα.
* **νερό**, πάνω στο οποίο προφανώς δεν μπορείτε να περπατήσετε.
-* **δέντρο** ή **γρασίδι**, ένα μέρος όπου μπορείτε να ξεκουραστείτε.
-* **μήλο**, που αντιπροσωπεύει κάτι που ο Πέτρος θα χαρεί να βρει για να τραφεί.
-* **λύκος**, που είναι επικίνδυνος και πρέπει να αποφεύγεται.
+* ένα **δέντρο** ή **χλόη**, ένα μέρος όπου μπορείτε να ξεκουραστείτε.
+* ένα **μήλο**, που αντιπροσωπεύει κάτι που ο Πέτρος θα ήταν χαρούμενος να βρει για να τραφεί.
+* έναν **λύκο**, που είναι επικίνδυνος και πρέπει να αποφευχθεί.
-Υπάρχει ένα ξεχωριστό Python module, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), το οποίο περιέχει τον κώδικα για να δουλέψουμε με αυτό το περιβάλλον. Επειδή αυτός ο κώδικας δεν είναι σημαντικός για την κατανόηση των εννοιών μας, θα εισάγουμε το module και θα το χρησιμοποιήσουμε για να δημιουργήσουμε τον δείγμα πίνακα (code block 1):
+Υπάρχει ένα ξεχωριστό Python module, το [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), που περιέχει τον κώδικα για να δουλέψουμε με αυτό το περιβάλλον. Επειδή αυτός ο κώδικας δεν είναι σημαντικός για την κατανόηση των εννοιών μας, θα εισαγάγουμε το module και θα το χρησιμοποιήσουμε για να δημιουργήσουμε την δειγματική πίστα (μπλοκ κώδικα 1):
```python
from rlboard import *
@@ -56,59 +56,59 @@ m.plot()
## Ενέργειες και πολιτική
-Στο παράδειγμά μας, ο στόχος του Πέτρου θα είναι να βρει ένα μήλο, ενώ θα αποφεύγει τον λύκο και άλλα εμπόδια. Για να το κάνει αυτό, μπορεί ουσιαστικά να περπατήσει γύρω μέχρι να βρει ένα μήλο.
+Στο παράδειγμά μας, ο στόχος του Πέτρου θα ήταν να βρει ένα μήλο, αποφεύγοντας τον λύκο και άλλα εμπόδια. Για να το κάνουμε αυτό, μπορεί ουσιαστικά να περπατάει μέχρι να βρει ένα μήλο.
-Επομένως, σε οποιαδήποτε θέση, μπορεί να επιλέξει μία από τις ακόλουθες ενέργειες: πάνω, κάτω, αριστερά και δεξιά.
+Επομένως, σε κάθε θέση, μπορεί να επιλέξει ανάμεσα στις εξής ενέργειες: πάνω, κάτω, αριστερά και δεξιά.
-Θα ορίσουμε αυτές τις ενέργειες ως ένα λεξικό και θα τις αντιστοιχίσουμε σε ζεύγη αντίστοιχων αλλαγών συντεταγμένων. Για παράδειγμα, η κίνηση προς τα δεξιά (`R`) θα αντιστοιχεί σε ένα ζεύγος `(1,0)`. (code block 2):
+Θα ορίσουμε αυτές τις ενέργειες ως ένα λεξικό, και θα τις αντιστοιχίσουμε σε ζεύγη αντίστοιχων αλλαγών συντεταγμένων. Για παράδειγμα, η κίνηση δεξιά (`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()) }
```
-Συνοψίζοντας, η στρατηγική και ο στόχος αυτού του σεναρίου είναι οι εξής:
+Συνοπτικά, η στρατηγική και ο στόχος αυτού του σεναρίου είναι οι εξής:
-- **Η στρατηγική** του πράκτορά μας (Πέτρος) ορίζεται από τη λεγόμενη **πολιτική**. Μια πολιτική είναι μια συνάρτηση που επιστρέφει την ενέργεια σε οποιαδήποτε δεδομένη κατάσταση. Στην περίπτωσή μας, η κατάσταση του προβλήματος αντιπροσωπεύεται από τον πίνακα, συμπεριλαμβανομένης της τρέχουσας θέσης του παίκτη.
+- **Η στρατηγική**, του πρακτορά μας (Πέτρος) ορίζεται από την λεγόμενη **πολιτική**. Μια πολιτική είναι μια συνάρτηση που επιστρέφει την ενέργεια για κάθε δοσμένη κατάσταση. Στη δική μας περίπτωση, η κατάσταση του προβλήματος αντιπροσωπεύεται από την πίστα, συμπεριλαμβανομένης της τρέχουσας θέσης του παίκτη.
-- **Ο στόχος** της μάθησης ενίσχυσης είναι να μάθουμε τελικά μια καλή πολιτική που θα μας επιτρέψει να λύσουμε το πρόβλημα αποτελεσματικά. Ωστόσο, ως βάση, ας θεωρήσουμε την απλούστερη πολιτική που ονομάζεται **τυχαία περιπλάνηση**.
+- **Ο στόχος**, της εκμάθησης με ενίσχυση είναι τελικά να μάθουμε μια καλή πολιτική που θα μας επιτρέψει να λύσουμε το πρόβλημα αποτελεσματικά. Ωστόσο, ως βάση, ας θεωρήσουμε την απλούστερη πολιτική, που ονομάζεται **τυχαίο περπάτημα**.
-## Τυχαία περιπλάνηση
+## Τυχαίο περπάτημα
-Ας λύσουμε πρώτα το πρόβλημά μας υλοποιώντας μια στρατηγική τυχαίας περιπλάνησης. Με την τυχαία περιπλάνηση, θα επιλέγουμε τυχαία την επόμενη ενέργεια από τις επιτρεπόμενες ενέργειες, μέχρι να φτάσουμε στο μήλο (code block 3).
+Ας λύσουμε πρώτα το πρόβλημά μας υλοποιώντας μια στρατηγική τυχαίου περπατήματος. Με το τυχαίο περπάτημα, θα διαλέγουμε τυχαία την επόμενη ενέργεια από τις επιτρεπτές ενέργειες, μέχρι να φτάσουμε στο μήλο (μπλοκ κώδικα 3).
-1. Υλοποιήστε την τυχαία περιπλάνηση με τον παρακάτω κώδικα:
+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
+ n = 0 # αριθμός βημάτων
+ # ορίστε την αρχική θέση
if start_position:
m.human = start_position
else:
m.random_start()
while True:
if m.at() == Board.Cell.apple:
- return n # success!
+ return n # επιτυχία!
if m.at() in [Board.Cell.wolf, Board.Cell.water]:
- return -1 # eaten by wolf or drowned
+ return -1 # φαγώθηκε από λύκο ή πνίγηκε
while True:
a = actions[policy(m)]
new_pos = m.move_pos(m.human,a)
if m.is_valid(new_pos) and m.at(new_pos)!=Board.Cell.water:
- m.move(a) # do the actual move
+ m.move(a) # κάντε την πραγματική κίνηση
break
n+=1
walk(m,random_policy)
```
- Η κλήση στη `walk` θα πρέπει να επιστρέψει το μήκος της αντίστοιχης διαδρομής, το οποίο μπορεί να διαφέρει από τη μία εκτέλεση στην άλλη.
+ Η κλήση της `walk` θα πρέπει να επιστρέφει το μήκος της αντίστοιχης διαδρομής, το οποίο μπορεί να διαφέρει από τρέξιμο σε τρέξιμο.
-1. Εκτελέστε το πείραμα περιπλάνησης αρκετές φορές (π.χ. 100) και εκτυπώστε τα αποτελέσματα (code block 4):
+1. Εκτελέστε το πείραμα περπατήματος πολλές φορές (π.χ. 100), και εκτυπώστε τα στατιστικά αποτελέσματα (μπλοκ κώδικα 4):
```python
def print_statistics(policy):
@@ -125,17 +125,17 @@ action_idx = { a : i for i,a in enumerate(actions.keys()) }
print_statistics(random_policy)
```
- Σημειώστε ότι το μέσο μήκος μιας διαδρομής είναι περίπου 30-40 βήματα, που είναι αρκετά μεγάλο, δεδομένου ότι η μέση απόσταση από το πλησιέστερο μήλο είναι περίπου 5-6 βήματα.
+ Σημειώστε ότι ο μέσος όρος μήκους μιας διαδρομής είναι περίπου 30-40 βήματα, που είναι αρκετά πολλά, δεδομένου ότι η μέση απόσταση από το κοντινότερο μήλο είναι περίπου 5-6 βήματα.
- Μπορείτε επίσης να δείτε πώς φαίνεται η κίνηση του Πέτρου κατά την τυχαία περιπλάνηση:
+ Μπορείτε επίσης να δείτε πώς μοιάζει η κίνηση του Πέτρου κατά το τυχαίο περπάτημα:
- 
+ 
## Συνάρτηση ανταμοιβής
-Για να κάνουμε την πολιτική μας πιο έξυπνη, πρέπει να κατανοήσουμε ποιες κινήσεις είναι "καλύτερες" από άλλες. Για να το κάνουμε αυτό, πρέπει να ορίσουμε τον στόχο μας.
+Για να κάνουμε την πολιτική μας πιο έξυπνη, πρέπει να καταλάβουμε ποιες κινήσεις είναι "καλύτερες" από άλλες. Για να το κάνουμε αυτό, πρέπει να ορίσουμε τον στόχο μας.
-Ο στόχος μπορεί να οριστεί με όρους μιας **συνάρτησης ανταμοιβής**, η οποία θα επιστρέφει κάποια τιμή βαθμολογίας για κάθε κατάσταση. Όσο μεγαλύτερος ο αριθμός, τόσο καλύτερη η συνάρτηση ανταμοιβής. (code block 5)
+Ο στόχος μπορεί να οριστεί με όρους μιας **συνάρτησης ανταμοιβής**, η οποία θα επιστρέφει κάποια τιμή βαθμολογίας για κάθε κατάσταση. Όσο μεγαλύτερος ο αριθμός, τόσο καλύτερη η συνάρτηση ανταμοιβής. (μπλοκ κώδικα 5)
```python
move_reward = -0.1
@@ -154,39 +154,115 @@ def reward(m,pos=None):
return move_reward
```
-Ένα ενδιαφέρον πράγμα σχετικά με τις συναρτήσεις ανταμοιβής είναι ότι στις περισσότερες περιπτώσεις, *λαμβάνουμε ουσιαστική ανταμοιβή μόνο στο τέλος του παιχνιδιού*. Αυτό σημαίνει ότι ο αλγόριθμός μας πρέπει με κάποιο τρόπο να θυμάται "καλές" κινήσεις που οδηγούν σε θετική ανταμοιβή στο τέλος και να αυξάνει τη σημασία τους. Παρομοίως, όλες οι κινήσεις που οδηγούν σε κακά αποτελέσματα πρέπει να αποθαρρύνονται.
+Ένα ενδιαφέρον στοιχείο για τις συναρτήσεις ανταμοιβής είναι ότι στις περισσότερες περιπτώσεις, *μας δίνεται ουσιαστική ανταμοιβή μόνο στο τέλος του παιχνιδιού*. Αυτό σημαίνει ότι ο αλγόριθμός μας πρέπει κάπως να θυμάται τα "καλά" βήματα που οδηγούν σε θετική ανταμοιβή στο τέλος, και να αυξάνει τη σημασία τους. Ομοίως, όλες οι κινήσεις που οδηγούν σε κακά αποτελέσματα θα πρέπει να αποθαρρύνονται.
-## Q-Learning
+## Q-Μάθηση
-Ο αλγόριθμος που θα συζητήσουμε εδώ ονομάζεται **Q-Learning**. Σε αυτόν τον αλγόριθμο, η πολιτική ορίζεται από μια συνάρτηση (ή μια δομή δεδομένων) που ονομάζεται **Q-Table**. Καταγράφει την "καλοσύνη" κάθε ενέργειας σε μια δεδομένη κατάσταση.
+Ένας αλγόριθμος που θα συζητήσουμε εδώ ονομάζεται **Q-Μάθηση**. Σε αυτόν τον αλγόριθμο, η πολιτική ορίζεται από μια συνάρτηση (ή μια δομή δεδομένων) που ονομάζεται **Πίνακας Q**. Καταγράφει την "ποιότητα" κάθε ενέργειας σε μια δεδομένη κατάσταση.
-Ονομάζεται Q-Table επειδή είναι συχνά βολικό να την αναπαραστήσουμε ως πίνακα ή πολυδιάστατο array. Δεδομένου ότι ο πίνακάς μας έχει διαστάσεις `width` x `height`, μπορούμε να αναπαραστήσουμε την Q-Table χρησιμοποιώντας ένα numpy array με σχήμα `width` x `height` x `len(actions)`: (code block 6)
+Ονομάζεται Πίνακας Q επειδή είναι συχνά βολικό να αντιπροσωπεύεται ως πίνακας ή πολυδιάστατος πίνακας. Εφόσον η πίστα μας έχει διαστάσεις `πλάτος` x `ύψος`, μπορούμε να αναπαραστήσουμε τον Πίνακα Q χρησιμοποιώντας έναν numpy πίνακα με σχήμα `πλάτος` x `ύψος` x `len(actions)`: (μπλοκ κώδικα 6)
```python
Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions)
```
-Παρατηρήστε ότι αρχικοποιούμε όλες τις τιμές της Q-Table με ίση τιμή, στην περίπτωσή μας - 0.25. Αυτό αντιστοιχεί στην πολιτική "τυχαίας περιπλάνησης", επειδή όλες οι κινήσεις σε κάθε κατάσταση είναι εξίσου καλές. Μπορούμε να περάσουμε την Q-Table στη συνάρτηση `plot` για να οπτικοποιήσουμε τον πίνακα στον πίνακα: `m.plot(Q)`.
+Παρατηρήστε ότι αρχικοποιούμε όλες τις τιμές του Πίνακα Q με μια ίση τιμή, στην περίπτωσή μας - 0.25. Αυτό αντιστοιχεί στην πολιτική του "τυχαίου περπατήματος", γιατί όλες οι κινήσεις σε κάθε κατάσταση είναι εξίσου καλές. Μπορούμε να περάσουμε τον Πίνακα Q στη συνάρτηση `plot` για να απεικονίσουμε τον πίνακα στην πίστα: `m.plot(Q)`.
-
+
-Στο κέντρο κάθε κελιού υπάρχει ένα "βέλος" που υποδεικνύει την προτιμώμενη κατεύθυνση κίνησης. Επειδή όλες οι κατευθύνσεις είναι ίσες, εμφανίζεται μια κουκκίδα.
+Στο κέντρο κάθε κελιού υπάρχει ένα "βέλος" που δείχνει την προτιμώμενη κατεύθυνση κίνησης. Εφόσον όλες οι κατευθύνσεις είναι ίσες, εμφανίζεται μια τελεία.
-Τώρα πρέπει να εκτελέσουμε την προσομοίωση, να εξερευνήσουμε το περιβάλλον μας και να μάθουμε μια καλύτερη κατανομή τιμών Q-Table, η οποία θα μας επιτρέψει να βρούμε τον δρόμο προς το μήλο πολύ πιο γρήγορα.
+Τώρα πρέπει να τρέξουμε την προσομοίωση, να εξερευνήσουμε το περιβάλλον μας και να μάθουμε μια καλύτερη κατανομή τιμών του Πίνακα Q, που θα μας επιτρέψει να βρούμε τον δρόμο προς το μήλο πολύ πιο γρήγορα.
-## Ουσία του Q-Learning: Εξίσωση Bellman
+## Η Ουσία της Q-Μάθησης: Η Εξίσωση του Bellman
-Μόλις αρχίσουμε να κινούμαστε, κάθε ενέργεια θα έχει μια αντίστοιχη ανταμοιβή, δηλαδή θεωρητικά μπορούμε να επιλέξουμε την επόμενη ενέργεια με βάση την υψηλότερη άμεση ανταμοιβή. Ωστόσο, στις περισσότερες καταστάσεις, η κίνηση δεν θα επιτύχει τον στόχο μας να φτάσουμε στο μήλο, και έτσι δεν μπορούμε να αποφασίσουμε άμεσα ποια κατεύθυνση είναι καλύτερη.
+Μόλις αρχίσουμε να κινούμαστε, κάθε ενέργεια θα έχει μια αντίστοιχη ανταμοιβή, δηλαδή μπορούμε θεωρητικά να επιλέξουμε την επόμενη ενέργεια βασιζόμενοι στην υψηλότερη άμεση ανταμοιβή. Ωστόσο, σε περισσότερες καταστάσεις, η κίνηση δεν θα πετύχει τον στόχο μας να φτάσουμε στο μήλο, και έτσι δεν μπορούμε αμέσως να αποφασίσουμε ποια κατεύθυνση είναι καλύτερη.
-> Θυμηθείτε ότι δεν έχει σημασία το άμεσο αποτέλεσμα, αλλά μάλλον το τελικό αποτέλεσμα, το οποίο θα επιτύχουμε στο τέλος της προσομοίωσης.
+> Θυμηθείτε ότι δεν έχει σημασία το άμεσο αποτέλεσμα, αλλά το τελικό αποτέλεσμα, το οποίο θα λάβουμε στο τέλος της προσομοίωσης.
-Για να λάβουμε υπόψη αυτήν την καθυστερημένη ανταμοιβή, πρέπει να χρησιμοποιήσουμε τις αρχές του **[δυναμικού προγραμματισμού](https://en.wikipedia.org/wiki/Dynamic_programming)**, που μας επιτρέπουν να σκεφτούμε το πρόβλημά μας αναδρομικά.
+Για να λάβουμε υπόψη αυτήν την καθυστερημένη ανταμοιβή, πρέπει να χρησιμοποιήσουμε τις αρχές του **[δυναμικού προγραμματισμού](https://el.wikipedia.org/wiki/%CE%94%CF%85%CE%BD%CE%B1%CE%BC%CE%B9%CE%BA%CF%8C%CF%82_%CF%80%CF%81%CE%BF%CE%B3%CF%81%CE%B1%CE%BC%CE%BC%CE%B1%CF%84%CE%B9%CF%83%CE%BC%CF%8C%CF%82)**, που μας επιτρέπουν να σκεφτούμε το πρόβλημά μας αναδρομικά.
-Ας υποθέσουμε ότι βρισκόμαστε τώρα στην κατάσταση *s*, και θέλουμε να μετακινηθούμε στην επόμενη κατάσταση *s'*. Κάνοντας αυτό, θα λάβουμε την άμεση ανταμοιβή *r(s,a)*, που ορίζεται από τη συνάρτηση ανταμοιβής, συν κάποια μελλοντική ανταμοιβή. Αν υποθέσουμε ότι η Q-Table μας αντικατοπτρίζει σωστά την "ελκυστικότητα" κάθε ενέργειας, τότε στην κατάσταση *s'* θα επιλέξουμε μια ενέργεια *a* που αντιστοιχεί στη μέγιστη τιμή του *Q(s',a')*. Έτσι, η καλύτερη δυνατή μελλοντική ανταμοιβή που θα μπορούσαμε να λάβουμε στην κατάσταση *s* θα οριστεί ως `max`
+Ας υποθέσουμε ότι βρισκόμαστε στη κατάσταση *s*, και θέλουμε να μεταβούμε στην επόμενη κατάσταση *s'*. Κάνοντας αυτό, θα λάβουμε την άμεση ανταμοιβή *r(s,a)*, που ορίζεται από τη συνάρτηση ανταμοιβής, συν κάποια μελλοντική ανταμοιβή. Αν υποθέσουμε ότι ο Πίνακας Q αντανακλά σωστά την "ελκυστικότητα" κάθε ενέργειας, τότε στη κατάσταση *s'* θα επιλέξουμε μια ενέργεια *a* που αντιστοιχεί στην μέγιστη τιμή του *Q(s',a')*. Έτσι, η καλύτερη δυνατή μελλοντική ανταμοιβή που θα μπορούσαμε να έχουμε στην κατάσταση *s* θα ορίζεται ως `max`a'*Q(s',a')* (το μέγιστο εδώ υπολογίζεται σε όλες τις πιθανές ενέργειες *a'* στην κατάσταση *s'*).
+
+Αυτό δίνει τον **τύπο του Bellman** για τον υπολογισμό της τιμής του Πίνακα Q στην κατάσταση *s*, δεδομένης της ενέργειας *a*:
+
+
+
+Εδώ το γ είναι ο λεγόμενος **συντελεστής έκπτωσης** που καθορίζει σε ποιο βαθμό πρέπει να προτιμήσετε την τρέχουσα ανταμοιβή έναντι της μελλοντικής και αντίστροφα.
+
+## Αλγόριθμος εκμάθησης
+
+Δεδομένου του παραπάνω τύπου, μπορούμε τώρα να γράψουμε ψευδοκώδικα για τον αλγόριθμο εκμάθησής μας:
+
+* Αρχικοποιήστε τον Πίνακα Q με ίσες τιμές για όλες τις καταστάσεις και ενέργειες
+* Θέστε το ρυθμό εκμάθησης α ← 1
+* Επαναλάβετε την προσομοίωση πολλές φορές
+ 1. Ξεκινήστε από τυχαία θέση
+ 1. Επαναλάβετε
+ 1. Επιλέξτε μια ενέργεια *a* στην κατάσταση *s*
+ 2. Εκτελέστε την ενέργεια μεταβαίνοντας σε νέα κατάσταση *s'*
+ 3. Αν συναντήσουμε συνθήκη λήξης παιχνιδιού, ή αν η συνολική ανταμοιβή είναι πολύ μικρή - τερματίστε την προσομοίωση
+ 4. Υπολογίστε την ανταμοιβή *r* στη νέα κατάσταση
+ 5. Ενημερώστε τη συνάρτηση Q σύμφωνα με την εξίσωση Bellman: *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ maxa'Q(s',a'))*
+ 6. *s* ← *s'*
+ 7. Ενημερώστε τη συνολική ανταμοιβή και μειώστε την α.
+
+## Εκμετάλλευση vs. εξερεύνηση
+
+Στον παραπάνω αλγόριθμο, δεν προσδιορίσαμε ακριβώς πώς πρέπει να διαλέξουμε μια ενέργεια στο βήμα 2.1. Αν επιλέγουμε την ενέργεια τυχαία, θα **εξερευνούμε** τυχαία το περιβάλλον, και είναι αρκετά πιθανό να πεθάνουμε συχνά, όπως και να εξερευνήσουμε περιοχές που κανονικά δεν θα πηγαίναμε. Μια εναλλακτική προσέγγιση είναι να **εκμεταλλευτούμε** τις τιμές του Πίνακα Q που ήδη γνωρίζουμε, και έτσι να διαλέξουμε την καλύτερη ενέργεια (με τη μεγαλύτερη τιμή Πίνακα Q) στην κατάσταση *s*. Αυτό, όμως, θα μας εμποδίσει να εξερευνήσουμε άλλες καταστάσεις, και πιθανόν να μην βρούμε την βέλτιστη λύση.
+
+Έτσι, η βέλτιστη προσέγγιση είναι να βρούμε μια ισορροπία μεταξύ εξερεύνησης και εκμετάλλευσης. Αυτό μπορεί να γίνει επιλέγοντας την ενέργεια στην κατάσταση *s* με πιθανότητες αναλογικές με τις τιμές στον Πίνακα Q. Στην αρχή, όταν οι τιμές του Πίνακα Q είναι όλες ίσες, αυτό θα αντιστοιχεί σε τυχαία επιλογή, αλλά όσο μαθαίνουμε περισσότερα για το περιβάλλον μας, θα είναι πιο πιθανό να ακολουθήσουμε την βέλτιστη πορεία, επιτρέποντας ωστόσο στον πρακτορά να διαλέγει την αχαρτογράφητη διαδρομή κατά διαστήματα.
+
+## Υλοποίηση σε Python
+
+Τώρα είμαστε έτοιμοι να υλοποιήσουμε τον αλγόριθμο εκμάθησης. Πριν το κάνουμε αυτό, χρειαζόμαστε επίσης μια συνάρτηση που θα μετατρέπει αυθαίρετους αριθμούς στον Πίνακα Q σε διάνυσμα πιθανοτήτων για τις αντίστοιχες ενέργειες.
+
+1. Δημιουργήστε μια συνάρτηση `probs()`:
+
+ ```python
+ def probs(v,eps=1e-4):
+ v = v-v.min()+eps
+ v = v/v.sum()
+ return v
+ ```
+
+ Προσθέτουμε λίγα `eps` στο αρχικό διάνυσμα για να αποφύγουμε τη διαίρεση με το 0 στην αρχική περίπτωση, όταν όλα τα στοιχεία του διανύσματος είναι όμοια.
+
+Τρέξτε τον αλγόριθμο εκμάθησης μέσα από 5000 πειράματα, που επίσης ονομάζονται **εποχές**: (μπλοκ κώδικα 8)
+```python
+ for epoch in range(5000):
+
+ # Επιλέξτε αρχικό σημείο
+ m.random_start()
+
+ # Ξεκινήστε το ταξίδι
+ n=0
+ cum_reward = 0
+ while True:
+ x,y = m.human
+ v = probs(Q[x,y])
+ a = random.choices(list(actions),weights=v)[0]
+ dpos = actions[a]
+ m.move(dpos,check_correctness=False) # Επιτρέπουμε στον παίκτη να κινηθεί εκτός του πίνακα, κάτι που τερματίζει το επεισόδιο
+ r = reward(m)
+ cum_reward += r
+ if r==end_reward or cum_reward < -1000:
+ lpath.append(n)
+ break
+ alpha = np.exp(-n / 10e5)
+ gamma = 0.5
+ ai = action_idx[a]
+ Q[x,y,ai] = (1 - alpha) * Q[x,y,ai] + alpha * (r + gamma * Q[x+dpos[0], y+dpos[1]].max())
+ n+=1
+```
+
+Μετά την εκτέλεση αυτού του αλγορίθμου, ο Πίνακας Q θα πρέπει να έχει ενημερωθεί με τιμές που ορίζουν την ελκυστικότητα των διαφορετικών ενεργειών σε κάθε βήμα. Μπορούμε να προσπαθήσουμε να απεικονίσουμε τον Πίνακα Q σχεδιάζοντας ένα διάνυσμα σε κάθε κελί που θα δείχνει στην επιθυμητή κατεύθυνση κίνησης. Για απλότητα, σχεδιάζουμε έναν μικρό κύκλο αντί για το κεφάλι βέλους.
+
+
## Έλεγχος της πολιτικής
-Δεδομένου ότι ο Πίνακας Q (Q-Table) καταγράφει την "ελκυστικότητα" κάθε ενέργειας σε κάθε κατάσταση, είναι αρκετά εύκολο να τον χρησιμοποιήσουμε για να ορίσουμε την αποδοτική πλοήγηση στον κόσμο μας. Στην πιο απλή περίπτωση, μπορούμε να επιλέξουμε την ενέργεια που αντιστοιχεί στη μεγαλύτερη τιμή του Πίνακα Q: (κώδικας 9)
+Δεδομένου ότι ο Πίνακας Q καταγράφει την "ελκυστικότητα" κάθε ενέργειας σε κάθε κατάσταση, είναι αρκετά εύκολο να τον χρησιμοποιήσουμε για να ορίσουμε την αποδοτική πλοήγηση στον κόσμο μας. Στην απλούστερη περίπτωση, μπορούμε να επιλέξουμε την ενέργεια που αντιστοιχεί στην υψηλότερη τιμή Πίνακα Q: (μπλοκ κώδικα 9)
```python
def qpolicy_strict(m):
@@ -198,17 +274,18 @@ def qpolicy_strict(m):
walk(m,qpolicy_strict)
```
-> Αν δοκιμάσετε τον παραπάνω κώδικα αρκετές φορές, μπορεί να παρατηρήσετε ότι κάποιες φορές "κολλάει" και χρειάζεται να πατήσετε το κουμπί STOP στο notebook για να τον διακόψετε. Αυτό συμβαίνει επειδή μπορεί να υπάρχουν καταστάσεις όπου δύο καταστάσεις "δείχνουν" η μία την άλλη με βάση τη βέλτιστη τιμή Q, οπότε ο πράκτορας καταλήγει να κινείται μεταξύ αυτών των καταστάσεων επ' αόριστον.
+
+> Αν δοκιμάσετε τον παραπάνω κώδικα πολλές φορές, μπορεί να παρατηρήσετε ότι μερικές φορές "κολλάει", και πρέπει να πατήσετε το κουμπί STOP στο σημειωματάριο για να τον διακόψετε. Αυτό συμβαίνει επειδή μπορεί να υπάρχουν καταστάσεις όπου δύο καταστάσεις "δείχνουν" η μία στην άλλη όσον αφορά την βέλτιστη Q-Τιμή, οπότε ο πράκτορας καταλήγει να κινείται μεταξύ αυτών των καταστάσεων επ' αόριστον.
## 🚀Πρόκληση
-> **Εργασία 1:** Τροποποιήστε τη συνάρτηση `walk` ώστε να περιορίσετε το μέγιστο μήκος της διαδρομής σε έναν συγκεκριμένο αριθμό βημάτων (π.χ., 100) και παρατηρήστε τον παραπάνω κώδικα να επιστρέφει αυτή την τιμή κατά διαστήματα.
+> **Εργασία 1:** Τροποποιήστε τη συνάρτηση `walk` ώστε να περιορίσει το μέγιστο μήκος της διαδρομής σε έναν αριθμό βημάτων (ας πούμε, 100), και παρακολουθήστε τον παραπάνω κώδικα να επιστρέφει αυτήν την τιμή από καιρό σε καιρό.
-> **Εργασία 2:** Τροποποιήστε τη συνάρτηση `walk` ώστε να μην επιστρέφει σε μέρη που έχει ήδη επισκεφθεί. Αυτό θα αποτρέψει τη `walk` από το να επαναλαμβάνει βρόχους, ωστόσο, ο πράκτορας μπορεί ακόμα να "παγιδευτεί" σε μια τοποθεσία από την οποία δεν μπορεί να διαφύγει.
+> **Εργασία 2:** Τροποποιήστε τη συνάρτηση `walk` ώστε να μην επιστρέφει σε μέρη που έχει ήδη βρεθεί προηγουμένως. Αυτό θα αποτρέψει το `walk` από το να κάνει βρόχο, ωστόσο, ο πράκτορας μπορεί ακόμα να "παγιδευτεί" σε μια θέση από την οποία δεν μπορεί να διαφύγει.
## Πλοήγηση
-Μια καλύτερη πολιτική πλοήγησης θα ήταν αυτή που χρησιμοποιήσαμε κατά την εκπαίδευση, η οποία συνδυάζει εκμετάλλευση και εξερεύνηση. Σε αυτή την πολιτική, θα επιλέγουμε κάθε ενέργεια με μια συγκεκριμένη πιθανότητα, ανάλογη με τις τιμές στον Πίνακα Q. Αυτή η στρατηγική μπορεί ακόμα να οδηγήσει τον πράκτορα να επιστρέψει σε μια θέση που έχει ήδη εξερευνήσει, αλλά, όπως μπορείτε να δείτε από τον παρακάτω κώδικα, οδηγεί σε πολύ μικρότερο μέσο μήκος διαδρομής προς την επιθυμητή τοποθεσία (θυμηθείτε ότι το `print_statistics` εκτελεί τη προσομοίωση 100 φορές): (κώδικας 10)
+Μια καλύτερη πολιτική πλοήγησης θα ήταν αυτή που χρησιμοποιήσαμε κατά την εκπαίδευση, η οποία συνδυάζει εκμετάλλευση και εξερεύνηση. Σε αυτή την πολιτική, επιλέγουμε κάθε ενέργεια με μια συγκεκριμένη πιθανότητα, ανάλογη με τις τιμές στον Πίνακα Q. Αυτή η στρατηγική μπορεί ακόμα να έχει ως αποτέλεσμα ο πράκτορας να επιστρέψει σε μια θέση που έχει ήδη εξερευνήσει, αλλά, όπως φαίνεται από τον παρακάτω κώδικα, οδηγεί σε πολύ μικρό μέσο μήκος διαδρομής προς την επιθυμητή θέση (θυμηθείτε ότι η `print_statistics` τρέχει την προσομοίωση 100 φορές): (μπλοκ κώδικα 10)
```python
def qpolicy(m):
@@ -220,28 +297,32 @@ def qpolicy(m):
print_statistics(qpolicy)
```
-Μετά την εκτέλεση αυτού του κώδικα, θα πρέπει να παρατηρήσετε ένα πολύ μικρότερο μέσο μήκος διαδρομής από πριν, στην περιοχή των 3-6.
+Μετά την εκτέλεση αυτού του κώδικα, θα πρέπει να πάρετε ένα πολύ μικρότερο μέσο μήκος διαδρομής από πριν, στο εύρος των 3-6.
## Διερεύνηση της διαδικασίας μάθησης
-Όπως αναφέραμε, η διαδικασία μάθησης είναι μια ισορροπία μεταξύ εξερεύνησης και εκμετάλλευσης της αποκτηθείσας γνώσης για τη δομή του χώρου προβλήματος. Έχουμε δει ότι τα αποτελέσματα της μάθησης (η ικανότητα να βοηθήσουμε έναν πράκτορα να βρει μια σύντομη διαδρομή προς τον στόχο) έχουν βελτιωθεί, αλλά είναι επίσης ενδιαφέρον να παρατηρήσουμε πώς συμπεριφέρεται το μέσο μήκος διαδρομής κατά τη διάρκεια της διαδικασίας μάθησης:
+Όπως έχουμε αναφέρει, η διαδικασία μάθησης είναι μια ισορροπία μεταξύ εξερεύνησης και αξιοποίησης της γνώσης που έχει αποκτηθεί για τη δομή του χώρου προβλήματος. Έχουμε δει ότι τα αποτελέσματα της μάθησης (η ικανότητα να βοηθήσει έναν πράκτορα να βρει μια σύντομη διαδρομή προς τον στόχο) έχουν βελτιωθεί, αλλά είναι επίσης ενδιαφέρον να παρατηρήσουμε πώς συμπεριφέρεται το μέσο μήκος διαδρομής κατά τη διάρκεια της διαδικασίας μάθησης:
+
+
-Οι παρατηρήσεις συνοψίζονται ως εξής:
+Οι παρατηρήσεις μπορούν να συνοψιστούν ως εξής:
-- **Το μέσο μήκος διαδρομής αυξάνεται**. Αυτό που βλέπουμε εδώ είναι ότι αρχικά, το μέσο μήκος διαδρομής αυξάνεται. Αυτό πιθανώς οφείλεται στο γεγονός ότι όταν δεν γνωρίζουμε τίποτα για το περιβάλλον, είναι πιθανό να παγιδευτούμε σε κακές καταστάσεις, όπως νερό ή λύκους. Καθώς μαθαίνουμε περισσότερα και αρχίζουμε να χρησιμοποιούμε αυτή τη γνώση, μπορούμε να εξερευνούμε το περιβάλλον για περισσότερο χρόνο, αλλά ακόμα δεν γνωρίζουμε καλά πού βρίσκονται τα μήλα.
+- **Το μέσο μήκος διαδρομής αυξάνεται**. Αυτό που βλέπουμε εδώ είναι ότι αρχικά, το μέσο μήκος διαδρομής αυξάνεται. Αυτό πιθανότατα οφείλεται στο γεγονός ότι όταν δεν ξέρουμε τίποτα για το περιβάλλον, είναι πιθανό να παγιδευτούμε σε κακές καταστάσεις, νερό ή λύκο. Καθώς μαθαίνουμε περισσότερο και αρχίζουμε να χρησιμοποιούμε αυτή τη γνώση, μπορούμε να εξερευνήσουμε το περιβάλλον για μεγαλύτερο διάστημα, αλλά ακόμα δεν γνωρίζουμε πολύ καλά πού βρίσκονται τα μήλα.
-- **Το μήκος διαδρομής μειώνεται καθώς μαθαίνουμε περισσότερα**. Όταν μάθουμε αρκετά, γίνεται πιο εύκολο για τον πράκτορα να πετύχει τον στόχο, και το μήκος της διαδρομής αρχίζει να μειώνεται. Ωστόσο, παραμένουμε ανοιχτοί στην εξερεύνηση, οπότε συχνά αποκλίνουμε από την καλύτερη διαδρομή και εξερευνούμε νέες επιλογές, κάνοντας τη διαδρομή μεγαλύτερη από την ιδανική.
+- **Το μήκος διαδρομής μειώνεται καθώς μαθαίνουμε περισσότερο**. Μόλις μάθουμε αρκετά, γίνεται πιο εύκολο για τον πράκτορα να πετύχει τον στόχο, και το μήκος διαδρομής αρχίζει να μειώνεται. Ωστόσο, παραμένουμε ανοιχτοί στην εξερεύνηση, οπότε συχνά απομακρυνόμαστε από την καλύτερη διαδρομή και εξερευνούμε νέες επιλογές, καθιστώντας τη διαδρομή μεγαλύτερη από την ιδανική.
-- **Το μήκος αυξάνεται απότομα**. Αυτό που παρατηρούμε επίσης στο γράφημα είναι ότι σε κάποιο σημείο, το μήκος αυξάνεται απότομα. Αυτό υποδεικνύει τη στοχαστική φύση της διαδικασίας και ότι μπορούμε σε κάποιο σημείο να "χαλάσουμε" τους συντελεστές του Πίνακα Q αντικαθιστώντας τους με νέες τιμές. Αυτό ιδανικά θα πρέπει να ελαχιστοποιηθεί μειώνοντας τον ρυθμό μάθησης (για παράδειγμα, προς το τέλος της εκπαίδευσης, προσαρμόζουμε τις τιμές του Πίνακα Q μόνο κατά μια μικρή τιμή).
+- **Η αύξηση μήκους συμβαίνει ξαφνικά**. Αυτό που παρατηρούμε επίσης σε αυτό το γράφημα είναι ότι σε κάποιο σημείο, το μήκος αυξήθηκε απότομα. Αυτό υποδηλώνει τη στοχαστική φύση της διαδικασίας, και ότι κάπου μπορεί να "χαλάσουμε" τους συντελεστές του Πίνακα Q, αντικαθιστώντας τους με νέες τιμές. Ιδανικά αυτό θα πρέπει να μειωθεί μειώνοντας το ρυθμό μάθησης (για παράδειγμα, προς το τέλος της εκπαίδευσης, ρυθμίζουμε τις τιμές του Πίνακα Q με μικρές τιμές).
-Συνολικά, είναι σημαντικό να θυμόμαστε ότι η επιτυχία και η ποιότητα της διαδικασίας μάθησης εξαρτώνται σημαντικά από παραμέτρους, όπως ο ρυθμός μάθησης, η μείωση του ρυθμού μάθησης και ο συντελεστής έκπτωσης. Αυτές συχνά ονομάζονται **υπερπαράμετροι**, για να διακριθούν από τις **παραμέτρους**, τις οποίες βελτιστοποιούμε κατά την εκπαίδευση (για παράδειγμα, τους συντελεστές του Πίνακα Q). Η διαδικασία εύρεσης των καλύτερων τιμών υπερπαραμέτρων ονομάζεται **βελτιστοποίηση υπερπαραμέτρων** και αξίζει ξεχωριστή ανάλυση.
+Συνολικά, είναι σημαντικό να θυμόμαστε ότι η επιτυχία και η ποιότητα της διαδικασίας μάθησης εξαρτώνται σημαντικά από παραμέτρους, όπως ο ρυθμός μάθησης, η παρακμή του ρυθμού μάθησης, και ο παράγοντας έκπτωσης. Αυτές συχνά ονομάζονται **υπερπαράμετροι**, για να διαχωριστούν από τις **παραμέτρους**, που βελτιστοποιούμε κατά την εκπαίδευση (για παράδειγμα, οι συντελεστές του Πίνακα Q). Η διαδικασία εύρεσης των καλύτερων τιμών υπερπαραμέτρων ονομάζεται **βελτιστοποίηση υπερπαραμέτρων**, και αξίζει ξεχωριστό θέμα.
## [Κουίζ μετά τη διάλεξη](https://ff-quizzes.netlify.app/en/ml/)
-## Ανάθεση
-[Ένας Πιο Ρεαλιστικός Κόσμος](assignment.md)
+## Ανάθεση
+[Ένας πιο ρεαλιστικός κόσμος](assignment.md)
---
-**Αποποίηση ευθύνης**:
-Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν σφάλματα ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.
\ No newline at end of file
+
+**Αποποίηση ευθυνών**:
+Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία μετάφρασης με τεχνητή νοημοσύνη [Co-op Translator](https://github.com/Azure/co-op-translator). Ενώ επιδιώκουμε την ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή λανθασμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.
+
\ No newline at end of file
diff --git a/translations/el/8-Reinforcement/2-Gym/README.md b/translations/el/8-Reinforcement/2-Gym/README.md
index 34c9f9b22..5e02c4bbb 100644
--- a/translations/el/8-Reinforcement/2-Gym/README.md
+++ b/translations/el/8-Reinforcement/2-Gym/README.md
@@ -1,14 +1,34 @@
+# Καροτσάκι με πόλο (CartPole Skating)
+
+Το πρόβλημα που έχουμε λύσει στο προηγούμενο μάθημα μπορεί να φαίνεται ως ένα πρόβλημα παιχνιδιού, που δεν εφαρμόζεται πραγματικά σε σενάρια της καθημερινής ζωής. Αυτό δεν ισχύει, διότι πολλά πραγματικά προβλήματα μοιράζονται αυτό το σενάριο - όπως το να παίζεις Σκάκι ή Go. Είναι παρόμοια, επειδή έχουμε επίσης ένα ταμπλό με δεδομένους κανόνες και μια **διακριτή κατάσταση**.
+
+## [Προ-μάθημα κουίζ](https://ff-quizzes.netlify.app/en/ml/)
+
+## Εισαγωγή
+
+Σε αυτό το μάθημα θα εφαρμόσουμε τις ίδιες αρχές του Q-Learning σε ένα πρόβλημα με **συνεχή κατάσταση**, δηλαδή μια κατάσταση που δίνεται από έναν ή περισσότερους πραγματικούς αριθμούς. Θα ασχοληθούμε με το ακόλουθο πρόβλημα:
+
+> **Πρόβλημα**: Αν ο Πέτρος θέλει να ξεφύγει από τον λύκο, πρέπει να μπορεί να κινείται πιο γρήγορα. Θα δούμε πώς ο Πέτρος μπορεί να μάθει να πατινάρει, συγκεκριμένα, να διατηρεί την ισορροπία, χρησιμοποιώντας το Q-Learning.
+
+
+
+> Ο Πέτρος και οι φίλοι του γίνονται δημιουργικοί για να ξεφύγουν από τον λύκο! Εικόνα από την [Jen Looper](https://twitter.com/jenlooper)
+
+Θα χρησιμοποιήσουμε μια απλοποιημένη εκδοχή της ισορροπίας γνωστή ως πρόβλημα **CartPole**. Στον κόσμο του cartpole, έχουμε ένα οριζόντιο ολισθητήρα που μπορεί να κινηθεί αριστερά ή δεξιά, και στόχος είναι να κρατήσουμε μια κατακόρυφη ράβδο στην κορυφή του ολισθητήρα.
+
+
+
## Προαπαιτούμενα
-Σε αυτό το μάθημα, θα χρησιμοποιήσουμε μια βιβλιοθήκη που ονομάζεται **OpenAI Gym** για να προσομοιώσουμε διαφορετικά **περιβάλλοντα**. Μπορείτε να εκτελέσετε τον κώδικα αυτού του μαθήματος τοπικά (π.χ. από το Visual Studio Code), οπότε η προσομοίωση θα ανοίξει σε νέο παράθυρο. Όταν εκτελείτε τον κώδικα online, ίσως χρειαστεί να κάνετε κάποιες τροποποιήσεις, όπως περιγράφεται [εδώ](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7).
+Σε αυτό το μάθημα, θα χρησιμοποιήσουμε μια βιβλιοθήκη που ονομάζεται **OpenAI Gym** για να προσομοιώσουμε διάφορα **περιβάλλοντα**. Μπορείτε να εκτελέσετε τον κώδικα του μαθήματος τοπικά (π.χ. από το Visual Studio Code), οπότε η προσομοίωση θα ανοίξει σε νέο παράθυρο. Όταν τρέχετε τον κώδικα διαδικτυακά, ίσως χρειαστεί να κάνετε κάποιες τροποποιήσεις στον κώδικα, όπως περιγράφεται [εδώ](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7).
## OpenAI Gym
-Στο προηγούμενο μάθημα, οι κανόνες του παιχνιδιού και η κατάσταση καθορίζονταν από την κλάση `Board` που ορίσαμε εμείς. Εδώ θα χρησιμοποιήσουμε ένα ειδικό **περιβάλλον προσομοίωσης**, το οποίο θα προσομοιώσει τη φυσική πίσω από την ισορροπία του πόλου. Ένα από τα πιο δημοφιλή περιβάλλοντα προσομοίωσης για εκπαίδευση αλγορίθμων ενισχυτικής μάθησης ονομάζεται [Gym](https://gym.openai.com/), το οποίο συντηρείται από την [OpenAI](https://openai.com/). Χρησιμοποιώντας αυτό το gym μπορούμε να δημιουργήσουμε διάφορα **περιβάλλοντα**, από προσομοίωση cartpole έως παιχνίδια Atari.
+Στο προηγούμενο μάθημα, οι κανόνες του παιχνιδιού και η κατάσταση δόθηκαν από την κλάση `Board` που ορίσαμε εμείς. Εδώ θα χρησιμοποιήσουμε ένα ειδικό **περιβάλλον προσομοίωσης**, που θα προσομοιώνει τη φυσική πίσω από την ισορροπία της ράβδου. Ένα από τα πιο δημοφιλή περιβάλλοντα προσομοίωσης για εκπαίδευση αλγορίθμων ενίσχυσης μάθησης είναι ένα [Gym](https://gym.openai.com/), που συντηρείται από το [OpenAI](https://openai.com/). Χρησιμοποιώντας αυτό το gym μπορούμε να δημιουργήσουμε διάφορα **περιβάλλοντα** από μια προσομοίωση cartpole μέχρι παιχνίδια Atari.
-> **Σημείωση**: Μπορείτε να δείτε άλλα διαθέσιμα περιβάλλοντα από το OpenAI Gym [εδώ](https://gym.openai.com/envs/#classic_control).
+> **Σημείωση**: Μπορείτε να δείτε άλλα περιβάλλοντα διαθέσιμα από το OpenAI Gym [εδώ](https://gym.openai.com/envs/#classic_control).
-Αρχικά, ας εγκαταστήσουμε το gym και να εισάγουμε τις απαραίτητες βιβλιοθήκες (code block 1):
+Πρώτα, ας εγκαταστήσουμε το gym και να εισάγουμε τις απαραίτητες βιβλιοθήκες (code block 1):
```python
import sys
@@ -22,13 +42,13 @@ import random
## Άσκηση - αρχικοποίηση περιβάλλοντος cartpole
-Για να δουλέψουμε με το πρόβλημα ισορροπίας του cartpole, πρέπει να αρχικοποιήσουμε το αντίστοιχο περιβάλλον. Κάθε περιβάλλον συνδέεται με:
+Για να δουλέψουμε με το πρόβλημα ισορροπίας cartpole, πρέπει να αρχικοποιήσουμε το αντίστοιχο περιβάλλον. Κάθε περιβάλλον σχετίζεται με ένα:
-- **Observation space** που ορίζει τη δομή των πληροφοριών που λαμβάνουμε από το περιβάλλον. Στο πρόβλημα του cartpole, λαμβάνουμε τη θέση του πόλου, την ταχύτητα και κάποιες άλλες τιμές.
+- **Χώρο παρατήρησης** που ορίζει τη δομή των πληροφοριών που λαμβάνουμε από το περιβάλλον. Για το πρόβλημα cartpole λαμβάνουμε τη θέση της ράβδου, την ταχύτητα και μερικές άλλες τιμές.
-- **Action space** που ορίζει τις δυνατές ενέργειες. Στην περίπτωσή μας, το action space είναι διακριτό και αποτελείται από δύο ενέργειες - **αριστερά** και **δεξιά**. (code block 2)
+- **Χώρο δράσης** που ορίζει τις πιθανές ενέργειες. Στην περίπτωσή μας ο χώρος δράσης είναι διακριτός και περιλαμβάνει δύο ενέργειες - **αριστερά** και **δεξιά**. (code block 2)
-1. Για να αρχικοποιήσετε, πληκτρολογήστε τον παρακάτω κώδικα:
+1. Για να αρχικοποιήσετε, πληκτρολογήστε τον ακόλουθο κώδικα:
```python
env = gym.make("CartPole-v1")
@@ -37,11 +57,11 @@ import random
print(env.action_space.sample())
```
-Για να δείτε πώς λειτουργεί το περιβάλλον, ας εκτελέσουμε μια σύντομη προσομοίωση για 100 βήματα. Σε κάθε βήμα, παρέχουμε μία από τις ενέργειες που πρέπει να εκτελεστούν - σε αυτή την προσομοίωση απλώς επιλέγουμε τυχαία μια ενέργεια από το `action_space`.
+Για να δείτε πώς λειτουργεί το περιβάλλον, ας τρέξουμε μια σύντομη προσομοίωση για 100 βήματα. Σε κάθε βήμα, παρέχουμε μία από τις ενέργειες που πρέπει να λάβουμε - σε αυτήν την προσομοίωση επιλέγουμε τυχαία μια ενέργεια από το `action_space`.
-1. Εκτελέστε τον παρακάτω κώδικα και δείτε τι προκύπτει.
+1. Εκτελέστε τον κώδικα παρακάτω και δείτε το αποτέλεσμα.
- ✅ Θυμηθείτε ότι είναι προτιμότερο να εκτελέσετε αυτόν τον κώδικα σε τοπική εγκατάσταση Python! (code block 3)
+ ✅ Θυμηθείτε ότι προτιμάται να εκτελείτε αυτόν τον κώδικα σε τοπική εγκατάσταση Python! (code block 3)
```python
env.reset()
@@ -52,11 +72,11 @@ import random
env.close()
```
- Θα πρέπει να βλέπετε κάτι παρόμοιο με αυτήν την εικόνα:
+ Θα πρέπει να βλέπετε κάτι σαν αυτήν την εικόνα:
- 
+ 
-1. Κατά τη διάρκεια της προσομοίωσης, πρέπει να λαμβάνουμε παρατηρήσεις για να αποφασίσουμε πώς να δράσουμε. Στην πραγματικότητα, η συνάρτηση step επιστρέφει τις τρέχουσες παρατηρήσεις, μια συνάρτηση ανταμοιβής και τη σημαία done που υποδεικνύει αν έχει νόημα να συνεχίσουμε την προσομοίωση ή όχι: (code block 4)
+1. Κατά τη διάρκεια της προσομοίωσης, πρέπει να λαμβάνουμε παρατηρήσεις για να αποφασίσουμε πώς να ενεργήσουμε. Στην πραγματικότητα, η συνάρτηση step επιστρέφει τις τρέχουσες παρατηρήσεις, μια συνάρτηση ανταμοιβής, και τη σημαία done που υποδηλώνει αν έχει νόημα να συνεχιστεί η προσομοίωση ή όχι: (code block 4)
```python
env.reset()
@@ -69,7 +89,7 @@ import random
env.close()
```
- Θα καταλήξετε να βλέπετε κάτι σαν αυτό στην έξοδο του notebook:
+ Στο output του notebook θα δείτε κάτι παρόμοιο με το παρακάτω:
```text
[ 0.03403272 -0.24301182 0.02669811 0.2895829 ] -> 1.0
@@ -82,43 +102,43 @@ import random
[ 0.17617249 0.35602306 -0.21873684 -0.90998894] -> 1.0
```
- Το διάνυσμα παρατήρησης που επιστρέφεται σε κάθε βήμα της προσομοίωσης περιέχει τις εξής τιμές:
+ Το διάνυσμα παρατήρησης που επιστρέφεται σε κάθε βήμα της προσομοίωσης περιέχει τις ακόλουθες τιμές:
- Θέση του καροτσιού
- Ταχύτητα του καροτσιού
- - Γωνία του πόλου
- - Ρυθμός περιστροφής του πόλου
+ - Γωνία της ράβδου
+ - Ρυθμός περιστροφής της ράβδου
-1. Βρείτε την ελάχιστη και μέγιστη τιμή αυτών των αριθμών: (code block 5)
+1. Πάρτε την ελάχιστη και μέγιστη τιμή αυτών των αριθμών: (code block 5)
```python
print(env.observation_space.low)
print(env.observation_space.high)
```
- Μπορεί επίσης να παρατηρήσετε ότι η τιμή ανταμοιβής σε κάθε βήμα της προσομοίωσης είναι πάντα 1. Αυτό συμβαίνει επειδή ο στόχος μας είναι να επιβιώσουμε όσο το δυνατόν περισσότερο, δηλαδή να διατηρήσουμε τον πόλο σε μια σχετικά κάθετη θέση για τη μεγαλύτερη δυνατή χρονική περίοδο.
-
- ✅ Στην πραγματικότητα, η προσομοίωση CartPole θεωρείται λυμένη αν καταφέρουμε να πετύχουμε μέση ανταμοιβή 195 σε 100 συνεχόμενες δοκιμές.
+ Μπορείτε επίσης να παρατηρήσετε ότι η τιμή της ανταμοιβής σε κάθε βήμα της προσομοίωσης είναι πάντα 1. Αυτό συμβαίνει γιατί ο στόχος μας είναι να επιβιώσουμε όσο περισσότερο γίνεται, δηλαδή να κρατήσουμε τη ράβδο σε σχετικά κάθετη θέση για τη μεγαλύτερη δυνατή διάρκεια.
-## Διακριτοποίηση κατάστασης
+ ✅ Στην πραγματικότητα, η προσομοίωση CartPole θεωρείται λυμένη αν καταφέρουμε να πάρουμε μέση ανταμοιβή 195 πάνω από 100 συνεχόμενες δοκιμές.
-Στο Q-Learning, πρέπει να δημιουργήσουμε έναν Πίνακα Q που ορίζει τι να κάνουμε σε κάθε κατάσταση. Για να το κάνουμε αυτό, η κατάσταση πρέπει να είναι **διακριτή**, πιο συγκεκριμένα, πρέπει να περιέχει πεπερασμένο αριθμό διακριτών τιμών. Έτσι, πρέπει με κάποιο τρόπο να **διακριτοποιήσουμε** τις παρατηρήσεις μας, αντιστοιχίζοντάς τες σε ένα πεπερασμένο σύνολο καταστάσεων.
+## Διακριτοποίηση της κατάστασης
-Υπάρχουν μερικοί τρόποι να το κάνουμε αυτό:
+Στο Q-Learning, πρέπει να φτιάξουμε έναν Πίνακα Q που ορίζει τι να κάνουμε σε κάθε κατάσταση. Για να το κάνουμε αυτό, η κατάσταση πρέπει να είναι **διακριτή**, πιο συγκεκριμένα, να περιέχει πεπερασμένο αριθμό διακριτών τιμών. Έτσι, πρέπει κάπως να **διακριτοποιήσουμε** τις παρατηρήσεις μας, χαρτογραφώντας τις σε έναν πεπερασμένο αριθμό καταστάσεων.
-- **Διαίρεση σε διαστήματα**. Αν γνωρίζουμε το εύρος μιας συγκεκριμένης τιμής, μπορούμε να διαιρέσουμε αυτό το εύρος σε έναν αριθμό **διαστημάτων** και στη συνέχεια να αντικαταστήσουμε την τιμή με τον αριθμό του διαστήματος στο οποίο ανήκει. Αυτό μπορεί να γίνει χρησιμοποιώντας τη μέθοδο [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html) της numpy. Σε αυτή την περίπτωση, θα γνωρίζουμε ακριβώς το μέγεθος της κατάστασης, καθώς θα εξαρτάται από τον αριθμό των διαστημάτων που επιλέγουμε για την ψηφιοποίηση.
+Υπάρχουν μερικοί τρόποι για να το κάνουμε αυτό:
-✅ Μπορούμε να χρησιμοποιήσουμε γραμμική παρεμβολή για να φέρουμε τις τιμές σε κάποιο πεπερασμένο εύρος (π.χ. από -20 έως 20) και στη συνέχεια να μετατρέψουμε τους αριθμούς σε ακέραιους στρογγυλοποιώντας τους. Αυτό μας δίνει λίγο λιγότερο έλεγχο στο μέγεθος της κατάστασης, ειδικά αν δεν γνωρίζουμε τα ακριβή εύρη των τιμών εισόδου. Για παράδειγμα, στην περίπτωσή μας, 2 από τις 4 τιμές δεν έχουν ανώτερα/κατώτερα όρια, κάτι που μπορεί να οδηγήσει σε άπειρο αριθμό καταστάσεων.
+- **Διαίρεση σε διαμερίσματα**. Αν ξέρουμε το διάστημα μιας συγκεκριμένης τιμής, μπορούμε να διαιρέσουμε αυτό το διάστημα σε αριθμό **διαμερισμάτων**, και στη συνέχεια να αντικαταστήσουμε την τιμή με τον αριθμό του διαμερίσματος στο οποίο ανήκει. Αυτό μπορεί να γίνει χρησιμοποιώντας τη μέθοδο [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html) της numpy. Σε αυτήν την περίπτωση, θα γνωρίζουμε ακριβώς το μέγεθος της κατάστασης, γιατί θα εξαρτάται από τον αριθμό των διαμερισμάτων που επιλέγουμε για τη διακριτοποίηση.
+
+✅ Μπορούμε να χρησιμοποιήσουμε γραμμική παρεμβολή για να φέρουμε τις τιμές σε ένα πεπερασμένο διάστημα (π.χ., από -20 έως 20), και στη συνέχεια να μετατρέψουμε τους αριθμούς σε ακέραιους στρογγυλοποιώντας τους. Αυτό μας δίνει λίγο λιγότερο έλεγχο στο μέγεθος της κατάστασης, ειδικά αν δεν ξέρουμε τα ακριβή εύρη των εισερχόμενων τιμών. Για παράδειγμα, στην περίπτωσή μας 2 από τις 4 τιμές δεν έχουν ανώτατο/κατώτατο όριο, που μπορεί να οδηγήσει σε άπειρο αριθμό καταστάσεων.
-Στο παράδειγμά μας, θα ακολουθήσουμε τη δεύτερη προσέγγιση. Όπως θα παρατηρήσετε αργότερα, παρά τα απροσδιόριστα ανώτερα/κατώτερα όρια, αυτές οι τιμές σπάνια λαμβάνουν τιμές εκτός ορισμένων πεπερασμένων εύρων, επομένως αυτές οι καταστάσεις με ακραίες τιμές θα είναι πολύ σπάνιες.
+Στο παράδειγμά μας, θα επιλέξουμε τη δεύτερη προσέγγιση. Όπως θα παρατηρήσετε αργότερα, παρά τα μη ορισμένα άνω/κάτω όρια, αυτές οι τιμές σπάνια παίρνουν τιμές εκτός ορισμένων πεπερασμένων διαστημάτων, έτσι οι καταστάσεις με ακραίες τιμές θα είναι πολύ σπάνιες.
-1. Εδώ είναι η συνάρτηση που θα πάρει την παρατήρηση από το μοντέλο μας και θα παράγει μια πλειάδα από 4 ακέραιες τιμές: (code block 6)
+1. Να η συνάρτηση που παίρνει την παρατήρηση από το μοντέλο μας και επιστρέφει μια πεντάδα 4 ακεραίων τιμών: (code block 6)
```python
def discretize(x):
return tuple((x/np.array([0.25, 0.25, 0.01, 0.1])).astype(np.int))
```
-1. Ας εξερευνήσουμε επίσης μια άλλη μέθοδο διακριτοποίησης χρησιμοποιώντας διαστήματα: (code block 7)
+1. Ας εξερευνήσουμε επίσης μια άλλη μέθοδο διακριτοποίησης χρησιμοποιώντας διαμερίσματα: (code block 7)
```python
def create_bins(i,num):
@@ -126,17 +146,17 @@ import random
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
+ ints = [(-5,5),(-2,2),(-0.5,0.5),(-2,2)] # διαστήματα τιμών για κάθε παράμετρο
+ nbins = [20,20,10,10] # αριθμός κάδων για κάθε παράμετρο
bins = [create_bins(ints[i],nbins[i]) for i in range(4)]
def discretize_bins(x):
return tuple(np.digitize(x[i],bins[i]) for i in range(4))
```
-1. Ας εκτελέσουμε τώρα μια σύντομη προσομοίωση και να παρατηρήσουμε αυτές τις διακριτές τιμές περιβάλλοντος. Δοκιμάστε ελεύθερα τόσο το `discretize` όσο και το `discretize_bins` και δείτε αν υπάρχει διαφορά.
+1. Ας τρέξουμε τώρα μια σύντομη προσομοίωση και να παρατηρήσουμε αυτές τις διακριτές τιμές του περιβάλλοντος. Μπορείτε να δοκιμάσετε τόσο τη `discretize` όσο και τη `discretize_bins` και να δείτε αν υπάρχει διαφορά.
- ✅ Το discretize_bins επιστρέφει τον αριθμό του διαστήματος, που ξεκινά από το 0. Έτσι, για τιμές της μεταβλητής εισόδου γύρω στο 0 επιστρέφει τον αριθμό από το μέσο του εύρους (10). Στο discretize, δεν μας ένοιαζε το εύρος των τιμών εξόδου, επιτρέποντάς τους να είναι αρνητικές, επομένως οι τιμές κατάστασης δεν μετατοπίζονται και το 0 αντιστοιχεί στο 0. (code block 8)
+ ✅ Η `discretize_bins` επιστρέφει τον αριθμό του διαμερίσματος, που είναι μηδενικής βάσης. Έτσι για τιμές της εισόδου γύρω από το 0 επιστρέφει τον αριθμό από το μέσο του διαστήματος (10). Στη `discretize`, δεν μας ενδιέφερε το εύρος των τιμών εξόδου, επιτρέποντας αρνητικές τιμές, έτσι οι τιμές της κατάστασης δεν μετατοπίζονται και το 0 αντιστοιχεί στο 0. (code block 8)
```python
env.reset()
@@ -145,20 +165,20 @@ import random
while not done:
#env.render()
obs, rew, done, info = env.step(env.action_space.sample())
- #print(discretize_bins(obs))
+ #εκτύπωσε(discretize_bins(obs))
print(discretize(obs))
env.close()
```
- ✅ Αποσχολιάστε τη γραμμή που ξεκινά με env.render αν θέλετε να δείτε πώς εκτελείται το περιβάλλον. Διαφορετικά, μπορείτε να το εκτελέσετε στο παρασκήνιο, κάτι που είναι πιο γρήγορο. Θα χρησιμοποιήσουμε αυτήν την "αόρατη" εκτέλεση κατά τη διαδικασία Q-Learning.
+ ✅ Αποσχολιάστε τη γραμμή που ξεκινά με env.render αν θέλετε να δείτε πώς εκτελείται το περιβάλλον. Διαφορετικά, μπορείτε να το εκτελέσετε στο παρασκήνιο, που είναι πιο γρήγορο. Θα χρησιμοποιήσουμε αυτήν την "αόρατη" εκτέλεση κατά τη διαδικασία Q-Learning.
## Η δομή του Πίνακα Q
-Στο προηγούμενο μάθημα, η κατάσταση ήταν ένα απλό ζεύγος αριθμών από το 0 έως το 8, και έτσι ήταν βολικό να αναπαραστήσουμε τον Πίνακα Q με έναν πίνακα numpy με σχήμα 8x8x2. Αν χρησιμοποιήσουμε τη διακριτοποίηση με διαστήματα, το μέγεθος του διανύσματος κατάστασης μας είναι επίσης γνωστό, οπότε μπορούμε να χρησιμοποιήσουμε την ίδια προσέγγιση και να αναπαραστήσουμε την κατάσταση με έναν πίνακα σχήματος 20x20x10x10x2 (εδώ το 2 είναι η διάσταση του action space και οι πρώτες διαστάσεις αντιστοιχούν στον αριθμό των διαστημάτων που έχουμε επιλέξει να χρησιμοποιήσουμε για κάθε μία από τις παραμέτρους στο observation space).
+Στο προηγούμενο μάθημα, η κατάσταση ήταν ένα απλό ζεύγος αριθμών από 0 έως 8, και έτσι ήταν βολικό να αναπαραστήσουμε τον Πίνακα Q με έναν numpy tensor σχήματος 8x8x2. Αν χρησιμοποιήσουμε διακριτοποίηση με διαμερίσματα, το μέγεθος του διανύσματος κατάστασης είναι επίσης γνωστό, οπότε μπορούμε να χρησιμοποιήσουμε την ίδια προσέγγιση και να αναπαραστήσουμε την κατάσταση με έναν πίνακα σχήματος 20x20x10x10x2 (εδώ το 2 είναι η διάσταση του χώρου δράσης, και οι πρώτες διαστάσεις αντιστοιχούν στον αριθμό των διαμερισμάτων που επιλέξαμε για κάθε παράμετρο στον χώρο παρατήρησης).
-Ωστόσο, μερικές φορές οι ακριβείς διαστάσεις του observation space δεν είναι γνωστές. Στην περίπτωση της συνάρτησης `discretize`, μπορεί να μην είμαστε ποτέ σίγουροι ότι η κατάστασή μας παραμένει εντός ορισμένων ορίων, επειδή ορισμένες από τις αρχικές τιμές δεν είναι περιορισμένες. Έτσι, θα χρησιμοποιήσουμε μια ελαφρώς διαφορετική προσέγγιση και θα αναπαραστήσουμε τον Πίνακα Q με ένα λεξικό.
+Ωστόσο, κάποιες φορές οι ακριβείς διαστάσεις του χώρου παρατήρησης δεν είναι γνωστές. Στην περίπτωση της συνάρτησης `discretize`, ποτέ δεν μπορούμε να είμαστε σίγουροι ότι η κατάσταση παραμένει εντός συγκεκριμένων ορίων, γιατί κάποιες από τις αρχικές τιμές δεν είναι περιορισμένες. Έτσι, θα χρησιμοποιήσουμε μια ελαφρώς διαφορετική προσέγγιση και θα αναπαραστήσουμε τον Πίνακα Q ως λεξικό.
-1. Χρησιμοποιήστε το ζεύγος *(state,action)* ως το κλειδί του λεξικού και η τιμή θα αντιστοιχεί στην τιμή του Πίνακα Q. (code block 9)
+1. Χρησιμοποιήστε το ζεύγος *(state,action)* ως κλειδί του λεξικού, και η τιμή θα αντιστοιχεί στην τιμή της αντίστοιχης εγγραφής στον Πίνακα Q. (code block 9)
```python
Q = {}
@@ -168,38 +188,38 @@ import random
return [Q.get((state,a),0) for a in actions]
```
- Εδώ ορίζουμε επίσης μια συνάρτηση `qvalues()`, η οποία επιστρέφει μια λίστα τιμών του Πίνακα Q για μια δεδομένη κατάσταση που αντιστοιχεί σε όλες τις δυνατές ενέργειες. Αν η εγγραφή δεν υπάρχει στον Πίνακα Q, θα επιστρέψουμε 0 ως προεπιλογή.
+ Εδώ ορίζουμε επίσης μια συνάρτηση `qvalues()`, που επιστρέφει μια λίστα με τις τιμές του Πίνακα Q για μια δοσμένη κατάσταση, που αντιστοιχεί σε όλες τις δυνατές ενέργειες. Αν η εγγραφή δεν υπάρχει στον Πίνακα Q, θα επιστρέψουμε 0 ως προεπιλογή.
-## Ας ξεκινήσουμε το Q-Learning
+## Ας ξεκινήσουμε Q-Learning
-Τώρα είμαστε έτοιμοι να διδάξουμε στον Πέτρο πώς να ισορροπεί!
+Τώρα είμαστε έτοιμοι να διδάξουμε στον Πέτρο πώς να κρατά ισορροπία!
-1. Πρώτα, ας ορίσουμε κάποιες υπερπαραμέτρους: (code block 10)
+1. Πρώτα, ας ορίσουμε μερικούς υπερπαραμέτρους: (code block 10)
```python
- # hyperparameters
+ # υπερπαράμετροι
alpha = 0.3
gamma = 0.9
epsilon = 0.90
```
- Εδώ, το `alpha` είναι ο **ρυθμός μάθησης** που καθορίζει σε ποιο βαθμό πρέπει να προσαρμόζουμε τις τρέχουσες τιμές του Πίνακα Q σε κάθε βήμα. Στο προηγούμενο μάθημα ξεκινήσαμε με 1 και στη συνέχεια μειώσαμε το `alpha` σε χαμηλότερες τιμές κατά την εκπαίδευση. Σε αυτό το παράδειγμα θα το κρατήσουμε σταθερό για απλότητα, και μπορείτε να πειραματιστείτε με την προσαρμογή των τιμών του `alpha` αργότερα.
+ Εδώ, το `alpha` είναι ο **ρυθμός μάθησης** που ορίζει σε ποιο βαθμό πρέπει να προσαρμόζουμε τις τρέχουσες τιμές του Πίνακα Q σε κάθε βήμα. Στο προηγούμενο μάθημα ξεκινήσαμε με 1 και μετά μειώσαμε το `alpha` σε μικρότερες τιμές κατά την εκπαίδευση. Σε αυτό το παράδειγμα θα το κρατήσουμε σταθερό για απλότητα, και μπορείτε να πειραματιστείτε με την προσαρμογή των τιμών του `alpha` αργότερα.
- Το `gamma` είναι ο **παράγοντας έκπτωσης** που δείχνει σε ποιο βαθμό πρέπει να δίνουμε προτεραιότητα στη μελλοντική ανταμοιβή έναντι της τρέχουσας ανταμοιβής.
+ Το `gamma` είναι ο **παράγοντας έκπτωσης** που δείχνει σε ποιο βαθμό πρέπει να προτεραιοποιούμε την μελλοντική ανταμοιβή έναντι της τρέχουσας.
- Το `epsilon` είναι ο **παράγοντας εξερεύνησης/εκμετάλλευσης** που καθορίζει αν πρέπει να προτιμούμε την εξερεύνηση ή την εκμετάλλευση. Στον αλγόριθμό μας, σε ποσοστό `epsilon` των περιπτώσεων θα επιλέγουμε την επόμενη ενέργεια σύμφωνα με τις τιμές του Πίνακα Q, και στις υπόλοιπες περιπτώσεις θα εκτελούμε μια τυχαία ενέργεια. Αυτό θα μας επιτρέψει να εξερευνήσουμε περιοχές του χώρου αναζήτησης που δεν έχουμε δει ποτέ πριν.
+ Το `epsilon` είναι ο **παράγοντας εξερεύνησης/εκμετάλλευσης** που καθορίζει αν προτιμάμε την εξερεύνηση ή την εκμετάλλευση. Στον αλγόριθμό μας, σε `epsilon` ποσοστό των περιπτώσεων θα επιλέγουμε την επόμενη ενέργεια σύμφωνα με τις τιμές του Πίνακα Q, και στις υπόλοιπες θα εκτελούμε τυχαία ενέργεια. Αυτό θα μας επιτρέψει να εξερευνήσουμε μέρη του χώρου αναζήτησης που δεν έχουμε δει ποτέ πριν.
- ✅ Όσον αφορά την ισορροπία - η επιλογή τυχαίας ενέργειας (εξερεύνηση) θα λειτουργεί σαν ένα τυχαίο χτύπημα προς τη λάθος κατεύθυνση, και ο πόλος θα πρέπει να μάθει πώς να ανακτά την ισορροπία από αυτά τα "λάθη".
+ ✅ Στον τομέα της ισορροπίας - η επιλογή τυχαίας ενέργειας (εξερεύνηση) λειτουργεί ως τυχαίο χτύπημα προς λάθος κατεύθυνση, και η ράβδος θα πρέπει να μάθει πώς να ανακτήσει την ισορροπία από αυτά τα "λάθη".
### Βελτίωση του αλγορίθμου
-Μπορούμε επίσης να κάνουμε δύο βελτιώσεις στον αλγόριθμό μας από το προηγούμενο μάθημα:
+Μπορούμε επίσης να κάνουμε δύο βελτιώσεις στον αλγόριθμο μας από το προηγούμενο μάθημα:
-- **Υπολογισμός μέσης σωρευτικής ανταμοιβής**, σε έναν αριθμό προσομοιώσεων. Θα εκτυπώνουμε την πρόοδο κάθε 5000 επαναλήψεις και θα υπολογίζουμε τη μέση σωρευτική ανταμοιβή σε αυτή την περίοδο. Αυτό σημαίνει ότι αν πετύχουμε περισσότερους από 195 πόντους - μπορούμε να θεωρήσουμε το πρόβλημα λυμένο, με ακόμη υψηλότερη ποιότητα από την απαιτούμενη.
+- **Υπολογισμός μέσης σωρευτικής ανταμοιβής**, πάνω σε έναν αριθμό προσομοιώσεων. Θα εκτυπώνουμε την πρόοδο κάθε 5000 επαναλήψεις, και θα παίρνουμε το μέσο όρο της σωρευτικής ανταμοιβής μας σε αυτήν την περίοδο. Αυτό σημαίνει ότι αν πάρουμε πάνω από 195 πόντους - μπορούμε να θεωρήσουμε το πρόβλημα λυμένο, με ακόμα καλύτερη ποιότητα από αυτή που απαιτείται.
+
+- **Υπολογισμός μέγιστου μέσου σωρευτικού αποτελέσματος**, `Qmax`, και θα αποθηκεύσουμε τον Πίνακα Q που αντιστοιχεί σε αυτό το αποτέλεσμα. Όταν τρέχετε την εκπαίδευση, θα παρατηρήσετε ότι μερικές φορές το μέσο σωρευτικό αποτέλεσμα αρχίζει να πέφτει, και θέλουμε να κρατήσουμε τις τιμές του Πίνακα Q που αντιστοιχούν στο καλύτερο μοντέλο που παρατηρήθηκε κατά την εκπαίδευση.
-- **Υπολογισμός μέγιστης μέσης σωρευτικής ανταμοιβής**, `Qmax`, και θα αποθηκεύουμε τον Πίνακα Q που αντιστοιχεί σε αυτό το αποτέλεσμα. Όταν εκτελείτε την εκπαίδευση, θα παρατηρήσετε ότι μερικές φορές η μέση σωρευτική ανταμοιβή αρχίζει να μειώνεται, και θέλουμε να διατηρήσουμε τις τιμές του Πίνακα Q που αντιστοιχούν στο καλύτερο μοντέλο που παρατηρήθηκε κατά την εκπαίδευση.
-
-1. Συλλέξτε όλες τις σωρευτικές ανταμοιβές σε κάθε προσομοίωση στο διάνυσμα `rewards` για περαιτέρω σχεδίαση. (code block 11)
+1. Συλλέξτε όλα τα σωρευτικά βραβεία σε κάθε προσομοίωση στον πίνακα `rewards` για περαιτέρω σχεδιασμό διαγραμμάτων. (code block 11)
```python
def probs(v,eps=1e-4):
@@ -214,15 +234,15 @@ import random
obs = env.reset()
done = False
cum_reward=0
- # == do the simulation ==
+ # == εκτέλεση της προσομοίωσης ==
while not done:
s = discretize(obs)
if random.random() Qmax:
@@ -240,25 +260,25 @@ import random
cum_rewards=[]
```
-Αυτό που μπορεί να παρατηρήσετε από αυτά τα αποτελέσματα:
-
-- **Κοντά στον στόχο μας**. Είμαστε πολύ κοντά στην επίτευξη του στόχου να πετύχουμε 195 σωρευτικές ανταμοιβές σε 100+ συνεχόμενες εκτελέσεις της προσομοίωσης, ή μπορεί να το έχουμε ήδη πετύχει! Ακόμα κι αν πετύχουμε μικρότερους αριθμούς, δεν το γνωρίζουμε, επειδή υπολογίζουμε τον μέσο όρο σε 5000 εκτελέσεις, και μόνο 100 εκτελέσεις απαιτούνται στα επίσημα κριτήρια.
+Τι μπορεί να παρατηρήσετε από αυτά τα αποτελέσματα:
-- **Η ανταμοιβή αρχίζει να μειώνεται**. Μερικές φορές η ανταμοιβή αρχίζει να μειώνεται, κάτι που σημαίνει ότι μπορούμε να "καταστρέψουμε" ήδη μαθημένες τιμές στον Πίνακα Q με αυτές που κάνουν την κατάσταση χειρότερη.
+- **Κοντά στο στόχο μας**. Είμαστε πολύ κοντά στο να πετύχουμε τον στόχο των 195 σωρευτικών βραβείων πάνω από 100+ συνεχόμενες εκτελέσεις της προσομοίωσης, ή ίσως να τον έχουμε ήδη πετύχει! Ακόμα κι αν πάρουμε μικρότερους αριθμούς, δεν έχουμε ακόμη σιγουριά επειδή παίρνουμε μέσο όρο πάνω από 5000 εκτελέσεις, και μόνο 100 εκτελέσεις απαιτούνται στο επίσημο κριτήριο.
+
+- **Η ανταμοιβή αρχίζει να πέφτει**. Μερικές φορές η ανταμοιβή αρχίζει να πέφτει, που σημαίνει ότι μπορούμε να "καταστρέψουμε" ήδη μάθεις τιμές στον Πίνακα Q με αυτές που κάνουν την κατάσταση χειρότερη.
Αυτή η παρατήρηση είναι πιο εμφανής αν σχεδιάσουμε την πρόοδο της εκπαίδευσης.
-## Σχεδίαση Προόδου Εκπαίδευσης
+## Σχεδιασμός προόδου εκπαίδευσης
-Κατά την εκπαίδευση, έχουμε συλλέξει την τιμή σωρευτικής ανταμοιβής σε κάθε μία από τις επαναλήψεις στο διάνυσμα `rewards`. Εδώ είναι πώς φαίνεται όταν το σχεδιάζουμε σε σχέση με τον αριθμό επαναλήψεων:
+Κατά τη διάρκεια της εκπαίδευσης, έχουμε συλλέξει την τιμή της σωρευτικής ανταμοιβής σε κάθε επανάληψη στο διάνυσμα `rewards`. Να πώς φαίνεται όταν το σχεδιάζουμε σε σχέση με τον αριθμό της επανάληψης:
```python
plt.plot(rewards)
```
-
+
-Από αυτό το γράφημα, δεν είναι δυνατό να πούμε κάτι, επειδή λόγω της φύσης της στοχαστικής διαδικασίας εκπαίδευσης το μήκος των συνεδριών εκπαίδευσης ποικίλλει πολύ. Για να βγάλουμε περισσότερο νόημα από αυτό το γράφημα, μπορούμε να υπολογίσουμε τον **κινούμενο μέσο όρο** σε μια σειρά πειραμάτων, ας πούμε 100. Αυτό μπορεί να γίνει εύκολα χρησιμοποιώντας το `np.convolve`: (code block 12)
+Από αυτό το γράφημα δεν μπορούμε να πούμε πολλά, γιατί λόγω της φύσης της στοχαστικής διαδικασίας εκπαίδευσης το μήκος των συνεδριών εκπαίδευσης διαφέρει πολύ. Για να κατανοήσουμε καλύτερα αυτό το γράφημα, μπορούμε να υπολογίσουμε τον **τρέχοντα μέσο όρο** σε μια σειρά πειραμάτων, ας πούμε 100. Αυτό μπορεί να γίνει εύκολα χρησιμοποιώντας το `np.convolve`: (code block 12)
```python
def running_average(x,window):
@@ -267,19 +287,24 @@ def running_average(x,window):
plt.plot(running_average(rewards,100))
```
-
+
+
+## Μεταβλητές υπερπαράμετροι
+
+Για να γίνει η μάθηση πιο σταθερή, έχει νόημα να προσαρμόσουμε κάποιες από τις υπερπαραμέτρους μας κατά τη διάρκεια της εκπαίδευσης. Συγκεκριμένα:
+
+- **Για τον ρυθμό μάθησης**, `alpha`, μπορεί να ξεκινήσουμε με τιμές κοντά στο 1, και μετά να μειώνουμε σταδιακά την παράμετρο. Με το χρόνο, θα παίρνουμε καλές τιμές πιθανότητας στον Πίνακα Q, και έτσι πρέπει να τις προσαρμόζουμε ελαφρώς και όχι να τις αντικαθιστούμε εντελώς με νέες τιμές.
+
+- **Αύξηση του epsilon**. Μπορεί να θέλουμε να αυξήσουμε το `epsilon` αργά, έτσι ώστε να εξερευνούμε λιγότερο και να εκμεταλλευόμαστε περισσότερο. Πιθανώς έχει νόημα να ξεκινήσουμε με μικρότερη τιμή του `epsilon`, και να φτάσουμε σχεδόν στο 1.
-## Μεταβολή υπερπαραμέτρων
+> **Εργασία 1**: Πειραματιστείτε με τις τιμές των υπερπαραμέτρων και δείτε αν μπορείτε να πετύχετε υψηλότερη σωρευτική ανταμοιβή. Μπορείτε να φτάσετε πάνω από 195;
-Για να κάνουμε τη μάθηση πιο σταθερή, έχει νόημα να προσαρμόσουμε κάποιες από τις υπερπαραμέτρους μας κατά την εκπαίδευση. Συγκεκριμένα:
-- **Για τον ρυθμό μάθησης**, `alpha`, μπορούμε να ξεκιν
-> **Εργασία 1**: Πειραματιστείτε με τις τιμές των υπερπαραμέτρων και δείτε αν μπορείτε να πετύχετε υψηλότερη συνολική ανταμοιβή. Φτάνετε πάνω από 195;
-> **Εργασία 2**: Για να λύσετε επίσημα το πρόβλημα, πρέπει να πετύχετε μέσο όρο ανταμοιβής 195 σε 100 συνεχόμενες εκτελέσεις. Μετρήστε το κατά τη διάρκεια της εκπαίδευσης και βεβαιωθείτε ότι έχετε λύσει επίσημα το πρόβλημα!
+> **Εργασία 2**: Για να λύσετε επίσημα το πρόβλημα, πρέπει να πετύχετε μέση ανταμοιβή 195 κατά τη διάρκεια 100 συνεχόμενων εκτελέσεων. Μετρήστε αυτό κατά τη διάρκεια της εκπαίδευσης και βεβαιωθείτε ότι έχετε επίσημα λύσει το πρόβλημα!
## Βλέποντας το αποτέλεσμα σε δράση
-Θα ήταν ενδιαφέρον να δούμε πώς συμπεριφέρεται το εκπαιδευμένο μοντέλο. Ας τρέξουμε τη προσομοίωση και ακολουθήσουμε την ίδια στρατηγική επιλογής ενεργειών όπως κατά την εκπαίδευση, δειγματοληπτώντας σύμφωνα με την κατανομή πιθανότητας στον Q-Table: (code block 13)
+Θα ήταν ενδιαφέρον να δούμε πώς συμπεριφέρεται το εκπαιδευμένο μοντέλο. Ας τρέξουμε την προσομοίωση και να ακολουθήσουμε την ίδια στρατηγική επιλογής δράσης όπως κατά την εκπαίδευση, δειγματοληπτώντας σύμφωνα με την κατανομή πιθανοτήτων στον Πίνακα Q: (μπλοκ κώδικα 13)
```python
obs = env.reset()
@@ -295,28 +320,30 @@ env.close()
Θα πρέπει να δείτε κάτι σαν αυτό:
-
+
---
## 🚀Πρόκληση
-> **Εργασία 3**: Εδώ χρησιμοποιούσαμε την τελική έκδοση του Q-Table, η οποία μπορεί να μην είναι η καλύτερη. Θυμηθείτε ότι έχουμε αποθηκεύσει το Q-Table με την καλύτερη απόδοση στη μεταβλητή `Qbest`! Δοκιμάστε το ίδιο παράδειγμα με το Q-Table με την καλύτερη απόδοση, αντιγράφοντας το `Qbest` στο `Q` και δείτε αν παρατηρείτε τη διαφορά.
+> **Εργασία 3**: Εδώ χρησιμοποιούσαμε την τελική έκδοση του Πίνακα Q, η οποία ίσως να μην είναι η καλύτερη. Θυμηθείτε ότι έχουμε αποθηκεύσει τον Πίνακα Q με την καλύτερη απόδοση στη μεταβλητή `Qbest`! Δοκιμάστε το ίδιο παράδειγμα με τον καλύτερο Πίνακα Q αντιγράφοντας το `Qbest` στο `Q` και δείτε αν παρατηρείτε τη διαφορά.
-> **Εργασία 4**: Εδώ δεν επιλέγαμε την καλύτερη ενέργεια σε κάθε βήμα, αλλά δειγματοληπτούσαμε με την αντίστοιχη κατανομή πιθανότητας. Θα είχε περισσότερο νόημα να επιλέγουμε πάντα την καλύτερη ενέργεια, με τη μεγαλύτερη τιμή στο Q-Table; Αυτό μπορεί να γίνει χρησιμοποιώντας τη συνάρτηση `np.argmax` για να βρούμε τον αριθμό της ενέργειας που αντιστοιχεί στη μεγαλύτερη τιμή του Q-Table. Υλοποιήστε αυτή τη στρατηγική και δείτε αν βελτιώνει την ισορροπία.
+> **Εργασία 4**: Εδώ δεν επιλέγαμε πάντα την καλύτερη δράση σε κάθε βήμα, αλλά αντίθετα δειγματοληπτούσαμε με την αντίστοιχη κατανομή πιθανοτήτων. Θα ήταν πιο λογικό να επιλέγουμε πάντα την καλύτερη δράση, με την υψηλότερη τιμή στον Πίνακα Q; Αυτό μπορεί να γίνει χρησιμοποιώντας τη συνάρτηση `np.argmax` για να βρούμε τον αριθμό της δράσης που αντιστοιχεί στην υψηλότερη τιμή του Πίνακα Q. Υλοποιήστε αυτή τη στρατηγική και δείτε αν βελτιώνει την ισορροπία.
-## [Κουίζ μετά το μάθημα](https://ff-quizzes.netlify.app/en/ml/)
+## [Μετά τη διάλεξη quiz](https://ff-quizzes.netlify.app/en/ml/)
-## Εργασία
+## Ανάθεση
[Εκπαιδεύστε ένα Mountain Car](assignment.md)
## Συμπέρασμα
-Μάθαμε πλέον πώς να εκπαιδεύουμε πράκτορες ώστε να πετυχαίνουν καλά αποτελέσματα απλώς παρέχοντάς τους μια συνάρτηση ανταμοιβής που ορίζει την επιθυμητή κατάσταση του παιχνιδιού και δίνοντάς τους την ευκαιρία να εξερευνήσουν έξυπνα τον χώρο αναζήτησης. Εφαρμόσαμε με επιτυχία τον αλγόριθμο Q-Learning σε περιπτώσεις διακριτών και συνεχών περιβαλλόντων, αλλά με διακριτές ενέργειες.
+Έχουμε πλέον μάθει πώς να εκπαιδεύουμε πράκτορες να επιτυγχάνουν καλά αποτελέσματα απλά παρέχοντάς τους μια συνάρτηση ανταμοιβής που ορίζει την επιθυμητή κατάσταση του παιχνιδιού, και δίνοντάς τους τη δυνατότητα να εξερευνήσουν έξυπνα τον χώρο αναζήτησης. Έχουμε εφαρμόσει με επιτυχία τον αλγόριθμο Q-Learning σε περιπτώσεις διακριτών και συνεχών περιβαλλόντων, αλλά με διακριτές δράσεις.
-Είναι σημαντικό να μελετήσουμε επίσης καταστάσεις όπου η κατάσταση των ενεργειών είναι επίσης συνεχής και όταν ο χώρος παρατήρησης είναι πολύ πιο περίπλοκος, όπως η εικόνα από την οθόνη του παιχνιδιού Atari. Σε αυτά τα προβλήματα συχνά χρειάζεται να χρησιμοποιήσουμε πιο ισχυρές τεχνικές μηχανικής μάθησης, όπως νευρωνικά δίκτυα, για να πετύχουμε καλά αποτελέσματα. Αυτά τα πιο προχωρημένα θέματα είναι το αντικείμενο του επερχόμενου πιο προχωρημένου μαθήματος AI.
+Είναι σημαντικό επίσης να μελετήσουμε καταστάσεις όπου η δράση είναι επίσης συνεχής, και όταν ο χώρος παρατήρησης είναι πολύ πιο περίπλοκος, όπως η εικόνα από την οθόνη του παιχνιδιού Atari. Σε αυτά τα προβλήματα συχνά χρειάζεται να χρησιμοποιήσουμε πιο ισχυρές τεχνικές μηχανικής μάθησης, όπως τα νευρωνικά δίκτυα, για να πετύχουμε καλά αποτελέσματα. Αυτά τα πιο προχωρημένα θέματα είναι το αντικείμενο του επερχόμενου πιο προχωρημένου μαθήματος AI μας.
---
-**Αποποίηση ευθύνης**:
-Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν σφάλματα ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.
\ No newline at end of file
+
+**Αποποίηση ευθυνών**:
+Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία μετάφρασης με τεχνητή νοημοσύνη [Co-op Translator](https://github.com/Azure/co-op-translator). Ενώ επιδιώκουμε την ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή λανθασμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.
+
\ No newline at end of file
diff --git a/translations/el/9-Real-World/1-Applications/README.md b/translations/el/9-Real-World/1-Applications/README.md
index 672708ee5..675745e18 100644
--- a/translations/el/9-Real-World/1-Applications/README.md
+++ b/translations/el/9-Real-World/1-Applications/README.md
@@ -1,121 +1,155 @@
-# Υστερόγραφο: Μηχανική μάθηση στον πραγματικό κόσμο
+# Επίμετρο: Η μηχανική μάθηση στον πραγματικό κόσμο
-
+
+
> Σκίτσο από την [Tomomi Imura](https://www.twitter.com/girlie_mac)
-Σε αυτό το πρόγραμμα σπουδών, μάθατε πολλούς τρόπους για να προετοιμάσετε δεδομένα για εκπαίδευση και να δημιουργήσετε μοντέλα μηχανικής μάθησης. Δημιουργήσατε μια σειρά από κλασικά μοντέλα παλινδρόμησης, ομαδοποίησης, ταξινόμησης, επεξεργασίας φυσικής γλώσσας και χρονοσειρών. Συγχαρητήρια! Τώρα, ίσως αναρωτιέστε ποιος είναι ο σκοπός όλων αυτών... ποιες είναι οι πραγματικές εφαρμογές αυτών των μοντέλων;
+Σε αυτή τη διδακτική ενότητα, μάθατε πολλούς τρόπους για να προετοιμάσετε δεδομένα για εκπαίδευση και να δημιουργήσετε μοντέλα μηχανικής μάθησης. Δημιουργήσατε μια σειρά από κλασικά μοντέλα παλινδρόμησης, ομαδοποίησης, ταξινόμησης, επεξεργασίας φυσικής γλώσσας και χρονοσειρών. Συγχαρητήρια! Τώρα, ίσως αναρωτιέστε ποιος είναι ο σκοπός τους... ποια είναι τα πραγματικά εφαρμογές αυτών των μοντέλων;
-Παρόλο που η βιομηχανία έχει δείξει μεγάλο ενδιαφέρον για την τεχνητή νοημοσύνη, η οποία συνήθως βασίζεται στη βαθιά μάθηση, υπάρχουν ακόμα πολύτιμες εφαρμογές για τα κλασικά μοντέλα μηχανικής μάθησης. Ίσως χρησιμοποιείτε ήδη κάποιες από αυτές τις εφαρμογές σήμερα! Σε αυτό το μάθημα, θα εξερευνήσετε πώς οκτώ διαφορετικοί κλάδοι και τομείς εξειδίκευσης χρησιμοποιούν αυτούς τους τύπους μοντέλων για να κάνουν τις εφαρμογές τους πιο αποδοτικές, αξιόπιστες, έξυπνες και πολύτιμες για τους χρήστες.
+Ενώ μεγάλο ενδιαφέρον στη βιομηχανία έχει προσελκύσει η Τεχνητή Νοημοσύνη, που συνήθως αξιοποιεί τη βαθιά μάθηση, υπάρχουν ακόμα πολύτιμες εφαρμογές για κλασικά μοντέλα μηχανικής μάθησης. Είναι πιθανό να χρησιμοποιείτε κάποιες από αυτές τις εφαρμογές σήμερα! Σε αυτό το μάθημα, θα εξερευνήσετε πώς οκτώ διαφορετικοί κλάδοι και γνωστικά πεδία χρησιμοποιούν αυτού του είδους τα μοντέλα για να κάνουν τις εφαρμογές τους πιο αποδοτικές, αξιόπιστες, έξυπνες και πολύτιμες για τους χρήστες.
## [Προ-μάθημα κουίζ](https://ff-quizzes.netlify.app/en/ml/)
## 💰 Χρηματοοικονομικά
-Ο χρηματοοικονομικός τομέας προσφέρει πολλές ευκαιρίες για μηχανική μάθηση. Πολλά προβλήματα σε αυτόν τον τομέα μπορούν να μοντελοποιηθούν και να λυθούν χρησιμοποιώντας ML.
+Ο χρηματοοικονομικός τομέας προσφέρει πολλές ευκαιρίες για τη μηχανική μάθηση. Πολλά προβλήματα σε αυτόν τον τομέα μπορούν να μοντελοποιηθούν και να επιλυθούν με τη χρήση της μηχανικής μάθησης.
### Ανίχνευση απάτης με πιστωτικές κάρτες
-Μάθαμε για την [ομαδοποίηση k-means](../../5-Clustering/2-K-Means/README.md) νωρίτερα στο μάθημα, αλλά πώς μπορεί να χρησιμοποιηθεί για την επίλυση προβλημάτων που σχετίζονται με την απάτη με πιστωτικές κάρτες;
+Μάθαμε για τον [k-means clustering](../../5-Clustering/2-K-Means/README.md) νωρίτερα στο μάθημα, αλλά πώς μπορεί να χρησιμοποιηθεί για την επίλυση προβλημάτων σχετικά με την απάτη πιστωτικών καρτών;
-Η ομαδοποίηση k-means είναι χρήσιμη σε μια τεχνική ανίχνευσης απάτης με πιστωτικές κάρτες που ονομάζεται **ανίχνευση αποκλίσεων**. Οι αποκλίσεις ή οι διαφοροποιήσεις στις παρατηρήσεις ενός συνόλου δεδομένων μπορούν να μας δείξουν αν μια πιστωτική κάρτα χρησιμοποιείται κανονικά ή αν συμβαίνει κάτι ασυνήθιστο. Όπως φαίνεται στο παρακάτω άρθρο, μπορείτε να ταξινομήσετε δεδομένα πιστωτικών καρτών χρησιμοποιώντας έναν αλγόριθμο ομαδοποίησης k-means και να αναθέσετε κάθε συναλλαγή σε μια ομάδα με βάση το πόσο αποκλίνουσα φαίνεται να είναι. Στη συνέχεια, μπορείτε να αξιολογήσετε τις πιο επικίνδυνες ομάδες για να διακρίνετε τις απατηλές συναλλαγές από τις νόμιμες.
+Ο k-means clustering είναι χρήσιμος σε μια τεχνική ανίχνευσης απάτης πιστωτικών καρτών που ονομάζεται **ανίχνευση ανώμαλων τιμών (outlier detection)**. Οι ανώμαλες τιμές, ή αποκλίσεις στις παρατηρήσεις σχετικά με ένα σύνολο δεδομένων, μπορούν να μας πουν αν μια πιστωτική κάρτα χρησιμοποιείται κανονικά ή αν συμβαίνει κάτι ασυνήθιστο. Όπως φαίνεται στο παρακάτω συνδεδεμένο άρθρο, μπορείτε να ταξινομήσετε τα δεδομένα πιστωτικών καρτών χρησιμοποιώντας έναν αλγόριθμο k-means clustering και να αναθέσετε κάθε συναλλαγή σε μια ομάδα βάσει του πόσο ανώμαλη φαίνεται να είναι. Στη συνέχεια, μπορείτε να αξιολογήσετε τις πιο ριψοκίνδυνες ομάδες για κλοπές ή νόμιμες συναλλαγές.
[Αναφορά](https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.680.1195&rep=rep1&type=pdf)
### Διαχείριση πλούτου
-Στη διαχείριση πλούτου, ένα άτομο ή μια εταιρεία διαχειρίζεται επενδύσεις εκ μέρους των πελατών τους. Η δουλειά τους είναι να διατηρούν και να αυξάνουν τον πλούτο μακροπρόθεσμα, οπότε είναι απαραίτητο να επιλέγουν επενδύσεις που αποδίδουν καλά.
+Στη διαχείριση πλούτου, ένα άτομο ή μια εταιρεία διαχειρίζεται επενδύσεις για λογαριασμό των πελατών τους. Η δουλειά τους είναι να διατηρούν και να αυξάνουν τον πλούτο μακροπρόθεσμα, οπότε είναι ουσιώδες να επιλέγουν επενδύσεις που αποδίδουν καλά.
-Ένας τρόπος για να αξιολογηθεί η απόδοση μιας συγκεκριμένης επένδυσης είναι μέσω στατιστικής παλινδρόμησης. Η [γραμμική παλινδρόμηση](../../2-Regression/1-Tools/README.md) είναι ένα πολύτιμο εργαλείο για την κατανόηση του πώς αποδίδει ένα επενδυτικό ταμείο σε σχέση με κάποιο σημείο αναφοράς. Μπορούμε επίσης να συμπεράνουμε αν τα αποτελέσματα της παλινδρόμησης είναι στατιστικά σημαντικά ή πόσο θα επηρεάσουν τις επενδύσεις ενός πελάτη. Μπορείτε να επεκτείνετε περαιτέρω την ανάλυσή σας χρησιμοποιώντας πολλαπλή παλινδρόμηση, όπου μπορούν να ληφθούν υπόψη πρόσθετοι παράγοντες κινδύνου. Για ένα παράδειγμα του πώς αυτό θα λειτουργούσε για ένα συγκεκριμένο ταμείο, δείτε το παρακάτω άρθρο σχετικά με την αξιολόγηση της απόδοσης ταμείων χρησιμοποιώντας παλινδρόμηση.
+Ένας τρόπος για να αξιολογηθεί η απόδοση μιας συγκεκριμένης επένδυσης είναι μέσω στατιστικής παλινδρόμησης. Η [γραμμική παλινδρόμηση](../../2-Regression/1-Tools/README.md) είναι ένα πολύτιμο εργαλείο για να κατανοήσουμε πώς αποδίδει ένα κεφάλαιο σε σχέση με κάποιο δείκτη αναφοράς. Μπορούμε επίσης να συμπεράνουμε αν τα αποτελέσματα της παλινδρόμησης είναι στατιστικά σημαντικά ή πόσο θα επηρεάζουν τις επενδύσεις ενός πελάτη. Μπορείτε ακόμη να επεκτείνετε την ανάλυσή σας με πολλαπλή παλινδρόμηση, όπου λαμβάνονται υπόψη πρόσθετοι παράγοντες κινδύνου. Για παράδειγμα πώς λειτουργεί αυτό για ένα συγκεκριμένο ταμείο, δείτε το παρακάτω άρθρο για την αξιολόγηση της απόδοσης ταμείων με παλινδρόμηση.
[Αναφορά](http://www.brightwoodventures.com/evaluating-fund-performance-using-regression/)
## 🎓 Εκπαίδευση
-Ο εκπαιδευτικός τομέας είναι επίσης ένας πολύ ενδιαφέρων τομέας όπου μπορεί να εφαρμοστεί η μηχανική μάθηση. Υπάρχουν ενδιαφέροντα προβλήματα προς επίλυση, όπως η ανίχνευση αντιγραφής σε εξετάσεις ή εκθέσεις ή η διαχείριση προκαταλήψεων, είτε είναι ακούσιες είτε όχι, στη διαδικασία διόρθωσης.
+Ο τομέας της εκπαίδευσης είναι επίσης μια πολύ ενδιαφέρουσα περιοχή όπου μπορεί να εφαρμοστεί η μηχανική μάθηση. Υπάρχουν ενδιαφέροντα προβλήματα προς επίλυση όπως η ανίχνευση απάτης σε εξετάσεις ή εκθέσεις ή η διαχείριση προκαταλήψεων, σκόπιμων ή αθέλητων, στη διαδικασία διόρθωσης.
-### Πρόβλεψη συμπεριφοράς μαθητών
+### Πρόβλεψη της συμπεριφοράς του φοιτητή
-Η [Coursera](https://coursera.com), ένας πάροχος διαδικτυακών ανοιχτών μαθημάτων, έχει ένα εξαιρετικό τεχνολογικό blog όπου συζητούν πολλές μηχανικές αποφάσεις. Σε αυτή τη μελέτη περίπτωσης, σχεδίασαν μια γραμμή παλινδρόμησης για να εξερευνήσουν τυχόν συσχέτιση μεταξύ χαμηλής βαθμολογίας NPS (Net Promoter Score) και διατήρησης ή εγκατάλειψης μαθημάτων.
+Η [Coursera](https://coursera.com), πάροχος διαδικτυακών ανοιχτών μαθημάτων, έχει ένα εξαιρετικό τεχνολογικό ιστολόγιο όπου συζητούν πολλές μηχανικές αποφάσεις. Σε αυτή την περίπτωση μελέτης, σχεδίασαν μια γραμμή παλινδρόμησης για να εξερευνήσουν τυχόν συσχέτιση ανάμεσα σε χαμηλή βαθμολογία NPS (Net Promoter Score) και τη διακράτηση ή εγκατάλειψη των μαθημάτων.
[Αναφορά](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) σε όλα τα προϊόντα της. Δημοσίευσαν μια ενδιαφέρουσα μελέτη περίπτωσης στο τεχνολογικό τους blog σχετικά με το πώς αντιμετώπισαν την προκατάληψη φύλου στη μηχανική μάθηση, την οποία μάθατε στο [εισαγωγικό μάθημα για τη δικαιοσύνη](../../1-Introduction/3-fairness/README.md).
+Η [Grammarly](https://grammarly.com), βοηθός γραφής που ελέγχει για ορθογραφικά και γραμματικά λάθη, χρησιμοποιεί εξελιγμένα [συστήματα επεξεργασίας φυσικής γλώσσας](../../6-NLP/README.md) σε όλα τα προϊόντα της. Έχουν δημοσιεύσει μια ενδιαφέρουσα μελέτη περίπτωσης στο τεχνολογικό τους ιστολόγιο για το πώς αντιμετώπισαν την προκατάληψη φύλου στη μηχανική μάθηση, που μάθατε στην [εισαγωγική μας ενότητα για τη δικαιοσύνη](../../1-Introduction/3-fairness/README.md).
[Αναφορά](https://www.grammarly.com/blog/engineering/mitigating-gender-bias-in-autocorrect/)
## 👜 Λιανικό εμπόριο
-Ο τομέας του λιανικού εμπορίου μπορεί σίγουρα να επωφεληθεί από τη χρήση της μηχανικής μάθησης, από τη δημιουργία μιας καλύτερης εμπειρίας πελάτη έως τη βέλτιστη διαχείριση αποθεμάτων.
+Ο τομέας του λιανικού εμπορίου μπορεί σίγουρα να ωφεληθεί από τη χρήση της μηχανικής μάθησης, από τη δημιουργία καλύτερης εμπειρίας πελάτη έως τη βέλτιστη διαχείριση αποθεμάτων.
### Εξατομίκευση της εμπειρίας πελάτη
-Στην Wayfair, μια εταιρεία που πωλεί είδη σπιτιού όπως έπιπλα, η βοήθεια στους πελάτες να βρουν τα κατάλληλα προϊόντα για τις προτιμήσεις και τις ανάγκες τους είναι πρωταρχικής σημασίας. Σε αυτό το άρθρο, οι μηχανικοί της εταιρείας περιγράφουν πώς χρησιμοποιούν ML και NLP για να "προβάλλουν τα σωστά αποτελέσματα στους πελάτες". Συγκεκριμένα, η Μηχανή Πρόθεσης Ερωτήματος τους έχει κατασκευαστεί για να χρησιμοποιεί εξαγωγή οντοτήτων, εκπαίδευση ταξινομητών, εξαγωγή στοιχείων και απόψεων, και ετικέτες συναισθημάτων στις κριτικές πελατών. Αυτή είναι μια κλασική περίπτωση χρήσης του NLP στο διαδικτυακό λιανικό εμπόριο.
+Στη Wayfair, μια εταιρεία που πουλάει οικιακά είδη όπως έπιπλα, η βοήθεια των πελατών να βρουν τα κατάλληλα προϊόντα για τα γούστα και τις ανάγκες τους είναι πρωταρχικής σημασίας. Σε αυτό το άρθρο, μηχανικοί της εταιρείας περιγράφουν πώς χρησιμοποιούν την μηχανική μάθηση και NLP για να "προβάλλουν τα σωστά αποτελέσματα για τους πελάτες". Ειδικότερα, η Μηχανή Πρόθεσης Query τους έχει κατασκευαστεί για να χρησιμοποιεί εξαγωγή οντοτήτων, εκπαίδευση ταξινομητών, εξαγωγή περιουσιακών στοιχείων και γνώμης, καθώς και επισήμανση συναισθημάτων σε κριτικές πελατών. Αυτή είναι μια κλασική περίπτωση χρήσης του NLP στο ηλεκτρονικό εμπόριο.
[Αναφορά](https://www.aboutwayfair.com/tech-innovation/how-we-use-machine-learning-and-natural-language-processing-to-empower-search)
### Διαχείριση αποθεμάτων
-Καινοτόμες, ευέλικτες εταιρείες όπως η [StitchFix](https://stitchfix.com), μια υπηρεσία κουτιών που αποστέλλει ρούχα στους καταναλωτές, βασίζονται σε μεγάλο βαθμό στη μηχανική μάθηση για συστάσεις και διαχείριση αποθεμάτων. Οι ομάδες στυλ τους συνεργάζονται με τις ομάδες εμπορευμάτων τους, στην πραγματικότητα: "ένας από τους επιστήμονες δεδομένων μας πειραματίστηκε με έναν γενετικό αλγόριθμο και τον εφάρμοσε στα ενδύματα για να προβλέψει ποιο θα ήταν ένα επιτυχημένο κομμάτι ρούχου που δεν υπάρχει σήμερα. Το παρουσιάσαμε στην ομάδα εμπορευμάτων και τώρα μπορούν να το χρησιμοποιήσουν ως εργαλείο."
+Καινοτόμες, ευέλικτες εταιρείες όπως η [StitchFix](https://stitchfix.com), μια υπηρεσία που αποστέλλει ρούχα στους καταναλωτές, βασίζονται σε μεγάλο βαθμό στη μηχανική μάθηση για συστάσεις και διαχείριση αποθεμάτων. Οι ομάδες στυλιστών συνεργάζονται με τις ομάδες εμπορίας τους, στην πραγματικότητα: "ένας από τους επιστήμονες δεδομένων μας έκανε πειράματα με έναν γενετικό αλγόριθμο και τον εφάρμοσε σε ενδύματα για να προβλέψει ποιο θα είναι ένα επιτυχημένο ένδυμα που δεν υπάρχει σήμερα. Το παρουσιάσαμε στην ομάδα εμπορίας και τώρα μπορούν να το χρησιμοποιούν ως εργαλείο."
[Αναφορά](https://www.zdnet.com/article/how-stitch-fix-uses-machine-learning-to-master-the-science-of-styling/)
## 🏥 Υγειονομική περίθαλψη
-Ο τομέας της υγειονομικής περίθαλψης μπορεί να αξιοποιήσει τη μηχανική μάθηση για τη βελτιστοποίηση ερευνητικών εργασιών και επίσης για λογιστικά προβλήματα όπως η επανεισαγωγή ασθενών ή η διακοπή της εξάπλωσης ασθενειών.
+Ο τομέας της υγειονομικής περίθαλψης μπορεί να αξιοποιήσει τη μηχανική μάθηση για να βελτιστοποιήσει ερευνητικές εργασίες αλλά και λογιστικά προβλήματα όπως η επανεισαγωγή ασθενών ή η πρόληψη εξάπλωσης ασθενειών.
### Διαχείριση κλινικών δοκιμών
-Η τοξικότητα στις κλινικές δοκιμές είναι ένα σημαντικό ζήτημα για τους κατασκευαστές φαρμάκων. Πόση τοξικότητα είναι ανεκτή; Σε αυτή τη μελέτη, η ανάλυση διαφόρων μεθόδων κλινικών δοκιμών οδήγησε στην ανάπτυξη μιας νέας προσέγγισης για την πρόβλεψη των πιθανοτήτων αποτελεσμάτων κλινικών δοκιμών. Συγκεκριμένα, κατάφεραν να χρησιμοποιήσουν τυχαία δάση για να δημιουργήσουν έναν [ταξινομητή](../../4-Classification/README.md) που μπορεί να διακρίνει μεταξύ ομάδων φαρμάκων.
+Η τοξικότητα στις κλινικές δοκιμές αποτελεί σημαντική ανησυχία για τους φαρμακευτικούς κατασκευαστές. Πόση τοξικότητα είναι ανεκτή; Σε αυτή τη μελέτη, η ανάλυση διαφόρων μεθόδων κλινικών δοκιμών οδήγησε στην ανάπτυξη μιας νέας προσέγγισης για την πρόβλεψη των πιθανοτήτων αποτελεσμάτων κλινικών δοκιμών. Συγκεκριμένα, μπόρεσαν να χρησιμοποιήσουν το random forest για να παραγάγουν έναν [ταξινομητή](../../4-Classification/README.md) που μπορεί να διακρίνει ανάμεσα σε ομάδες φαρμάκων.
[Αναφορά](https://www.sciencedirect.com/science/article/pii/S2451945616302914)
-### Διαχείριση επανεισαγωγής ασθενών
+### Διαχείριση επανεισαγωγής νοσοκομείου
-Η νοσοκομειακή φροντίδα είναι δαπανηρή, ειδικά όταν οι ασθενείς πρέπει να επανεισαχθούν. Αυτό το άρθρο συζητά μια εταιρεία που χρησιμοποιεί ML για να προβλέψει την πιθανότητα επανεισαγωγής χρησιμοποιώντας [αλγόριθμους ομαδοποίησης](../../5-Clustering/README.md). Αυτές οι ομάδες βοηθούν τους αναλυτές να "ανακαλύψουν ομάδες επανεισαγωγών που μπορεί να μοιράζονται μια κοινή αιτία".
+Η νοσηλεία στα νοσοκομεία έχει υψηλό κόστος, ειδικά όταν οι ασθενείς πρέπει να επανεισαχθούν. Αυτό το άρθρο αναφέρεται σε μια εταιρεία που χρησιμοποιεί μηχανική μάθηση για να προβλέπει την πιθανότητα επανεισαγωγής χρησιμοποιώντας αλγορίθμους [ομαδοποίησης](../../5-Clustering/README.md). Αυτές οι ομάδες βοηθούν τους αναλυτές να "ανακαλύψουν ομάδες επανεισαγωγών που ενδέχεται να έχουν κοινή αιτία".
[Αναφορά](https://healthmanagement.org/c/healthmanagement/issuearticle/hospital-readmissions-and-machine-learning)
### Διαχείριση ασθενειών
-Η πρόσφατη πανδημία έριξε φως στους τρόπους με τους οποίους η μηχανική μάθηση μπορεί να βοηθήσει στη διακοπή της εξάπλωσης ασθενειών. Σε αυτό το άρθρο, θα αναγνωρίσετε τη χρήση ARIMA, λογιστικών καμπυλών, γραμμικής παλινδρόμησης και SARIMA. "Αυτή η εργασία είναι μια προσπάθεια να υπολογιστεί ο ρυθμός εξάπλωσης αυτού του ιού και έτσι να προβλεφθούν οι θάνατοι, οι αναρρώσεις και τα επιβεβαιωμένα κρούσματα, ώστε να μας βοηθήσει να προετοιμαστούμε καλύτερα και να επιβιώσουμε."
+Η πρόσφατη πανδημία έριξε φως στους τρόπους με τους οποίους η μηχανική μάθηση μπορεί να βοηθήσει στην αναχαίτιση της εξάπλωσης ασθενειών. Σε αυτό το άρθρο, θα αναγνωρίσετε τη χρήση ARIMA, λογαριθμικών καμπυλών, γραμμικής παλινδρόμησης και SARIMA. "Αυτή η εργασία είναι απόπειρα υπολογισμού του ρυθμού εξάπλωσης αυτού του ιού και επομένως της πρόβλεψης θανάτων, ανάρρωσεων και επιβεβαιωμένων κρουσμάτων, έτσι ώστε να μας βοηθήσει να προετοιμαστούμε καλύτερα και να επιβιώσουμε."
[Αναφορά](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7979218/)
## 🌲 Οικολογία και Πράσινη Τεχνολογία
-Η φύση και η οικολογία αποτελούνται από πολλά ευαίσθητα συστήματα όπου η αλληλεπίδραση μεταξύ ζώων και φύσης έρχεται στο προσκήνιο. Είναι σημαντικό να μπορούμε να μετρήσουμε αυτά τα συστήματα με ακρίβεια και να δράσουμε κατάλληλα αν συμβεί κάτι, όπως μια δασική πυρκαγιά ή μια πτώση στον πληθυσμό των ζώων.
+Η φύση και η οικολογία αποτελούνται από πολλά ευαίσθητα συστήματα όπου η αλληλεπίδραση μεταξύ ζώων και φύσης είναι στο επίκεντρο. Είναι σημαντικό να μπορούμε να μετράμε αυτά τα συστήματα με ακρίβεια και να δράσουμε κατάλληλα αν συμβεί κάτι, όπως μια δασική πυρκαγιά ή πτώση του πληθυσμού ζώων.
### Διαχείριση δασών
-Μάθατε για την [Ενισχυτική Μάθηση](../../8-Reinforcement/README.md) σε προηγούμενα μαθήματα. Μπορεί να είναι πολύ χρήσιμη όταν προσπαθείτε να προβλέψετε μοτίβα στη φύση. Συγκεκριμένα, μπορεί να χρησιμοποιηθεί για την παρακολούθηση οικολογικών προβλημάτων όπως οι δασικές πυρκαγιές και η εξάπλωση εισβολικών ειδών. Στον Καναδά, μια ομάδα ερευνητών χρησιμοποίησε Ενισχυτική Μάθηση για να δημιουργήσει μοντέλα δυναμικής δασικών πυρκαγιών από δορυφορικές εικόνες. Χρησιμοποιώντας μια καινοτόμο "διαδικασία χωρικής εξάπλωσης (SSP)", οραματίστηκαν μια δασική πυρκαγιά ως "ο πράκτορας σε οποιοδήποτε κελί στο τοπίο." "Το σύνολο των ενεργειών που μπορεί να λάβει η φωτιά από μια τοποθεσία σε οποιοδήποτε σημείο του χρόνου περιλαμβάνει την εξάπλωση προς βορρά, νότο, ανατολή ή δύση ή τη μη εξάπλωση.
+Μάθατε για τη [Μάθηση με Ενίσχυση](../../8-Reinforcement/README.md) σε προηγούμενα μαθήματα. Μπορεί να είναι πολύ χρήσιμη όταν προσπαθούμε να προβλέψουμε μοτίβα στη φύση. Ειδικότερα, μπορεί να χρησιμοποιηθεί για να παρακολουθεί οικολογικά προβλήματα όπως δασικές πυρκαγιές και τη διάδοση εισβολικών ειδών. Στον Καναδά, μια ομάδα ερευνητών χρησιμοποίησε Μάθηση με Ενίσχυση για να κατασκευάσει μοντέλα δυναμικής δασικών πυρκαγιών από δορυφορικές εικόνες. Χρησιμοποιώντας μια καινοτόμο "διαδικασία χωρικής εξάπλωσης (SSP)", είδαν μια δασική πυρκαγιά ως "πράκτορα σε οποιοδήποτε κελί στο τοπίο." "Το σύνολο ενεργειών που μπορεί να λάβει η φωτιά από μια θέση κάθε στιγμή περιλαμβάνει εξάπλωση προς βορρά, νότο, ανατολή ή δύση ή μη εξάπλωση.
-Αυτή η προσέγγιση αντιστρέφει τη συνήθη ρύθμιση της Ενισχυτικής Μάθησης, καθώς η δυναμική της αντίστοιχης Διαδικασίας Λήψης Αποφάσεων Markov (MDP) είναι μια γνωστή λειτουργία για την άμεση εξάπλωση της πυρκαγιάς." Διαβάστε περισσότερα για τους κλασικούς αλγόριθμους που χρησιμοποίησε αυτή η ομάδα στον παρακάτω σύνδεσμο.
+Αυτή η προσέγγιση ανατρέπει το συνηθισμένο περιβάλλον Μάθησης με Ενίσχυση καθώς η δυναμική της αντίστοιχης Διεργασίας Απόφασης Markov (MDP) είναι γνωστή συνάρτηση για την άμεση εξάπλωση πυρκαγιάς." Μάθετε περισσότερα για τους κλασικούς αλγορίθμους που χρησιμοποίησε αυτή η ομάδα στον παρακάτω σύνδεσμο.
[Αναφορά](https://www.frontiersin.org/articles/10.3389/fict.2018.00006/full)
### Ανίχνευση κίνησης ζώων
-Ενώ η βαθιά μάθηση έχει δημιουργήσει επανάσταση στην οπτική παρακολούθηση των κινήσεων των ζώων (μπορείτε να δημιουργήσετε τον δικό σας [ιχνηλάτη πολικών αρκούδων](https://docs.microsoft.com/learn/modules/build-ml-model-with-azure-stream-analytics/?WT.mc_id=academic-77952-leestott) εδώ), η κλασική ML εξακολουθεί να έχει θέση σε αυτή την εργασία.
+Ενώ η βαθιά μάθηση έχει δημιουργήσει μια επανάσταση στην οπτική παρακολούθηση κινήσεων ζώων (μπορείτε να φτιάξετε το δικό σας [tracker πολικής αρκούδας](https://docs.microsoft.com/learn/modules/build-ml-model-with-azure-stream-analytics/?WT.mc_id=academic-77952-leestott) εδώ), η κλασική μηχανική μάθηση έχει ακόμη θέση σε αυτό το έργο.
-Οι αισθητήρες για την παρακολούθηση των κινήσεων των ζώων εκτροφής και το IoT κάνουν χρήση αυτού του τύπου οπτικής επεξεργασίας, αλλά πιο βασικές τεχνικές ML είναι χρήσιμες για την προεπεξεργασία δεδομένων. Για παράδειγμα, σε αυτό το άρθρο, οι στάσεις των προβάτων παρακολουθήθηκαν και αναλύθηκαν χρησιμοποιώντας διάφορους αλγόριθμους ταξινόμησης. Μπορεί να αναγνωρίσετε την καμπύλη ROC στη σελίδα 335.
+Αισθητήρες παρακολούθησης κινήσεων ζώων εκτροφής και ΙοΤ χρησιμοποιούν αυτού του είδους την οπτική επεξεργασία, αλλά πιο βασικές τεχνικές μηχανικής μάθησης είναι χρήσιμες για την προεπεξεργασία των δεδομένων. Για παράδειγμα, σε αυτό το άρθρο, η στάση προβάτων παρακολουθήθηκε και αναλύθηκε χρησιμοποιώντας διάφορους αλγόριθμους ταξινόμησης. Μπορεί να αναγνωρίσετε την καμπύλη ROC στη σελίδα 335.
[Αναφορά](https://druckhaus-hofmann.de/gallery/31-wj-feb-2020.pdf)
### ⚡️ Διαχείριση Ενέργειας
-
-Στα μαθήματά μας για την [πρόβλεψη χρονοσειρών](../../7-TimeSeries/README.md), αναφέραμε την έννοια των έξυπνων παρκόμετρων για τη δημιουργία εσόδων για μια πόλη με βάση την κατανόηση της προσφοράς και της ζήτησης. Αυτό το άρθρο συζητά λεπτομερώς πώς η ομαδοποίηση, η παλινδρόμηση και η πρόβλεψη χρονοσειρών συνδυάστηκαν για να βοηθήσουν στην πρόβλεψη της μελλοντικής χρήσης ενέργειας στην Ιρλανδία, με βάση τα έξυπνα μετρητικά συστήματα.
+
+Στα μαθήματά μας για την [πρόβλεψη χρονοσειρών](../../7-TimeSeries/README.md), επικαλεστήκαμε την έννοια των έξυπνων παρκόμετρων για τη δημιουργία εσόδων για μια πόλη με βάση την κατανόηση της ζήτησης και της προσφοράς. Αυτό το άρθρο συζητά με λεπτομέρειες πώς ο συνδυασμός ομαδοποίησης, παλινδρόμησης και πρόβλεψης χρονοσειρών βοήθησε στην εκτίμηση μελλοντικής κατανάλωσης ενέργειας στην Ιρλανδία, βασισμένη σε έξυπνους μετρητές.
[Αναφορά](https://www-cdn.knime.com/sites/default/files/inline-images/knime_bigdata_energy_timeseries_whitepaper.pdf)
-## 💼 Ασφάλιση
+## 💼 Ασφάλειες
-Ο ασφαλιστικός τομέας είναι ένας άλλος τομέας που χρησιμοποιεί ML για τη δημιουργία και τη βελτιστοποίηση βιώσιμων χρηματοοικονομικών και αναλογιστικών μοντέλων.
+Ο τομέας των ασφαλειών είναι ένας άλλος τομέας που χρησιμοποιεί μηχανική μάθηση για τη δημιουργία και βελτιστοποίηση βιώσιμων οικονομικών και ασφαλιστικών μοντέλων.
### Διαχείριση μεταβλητότητας
-Η MetLife, ένας πάροχος ασφάλισης ζωής, είναι ανοιχτή σχετικά με τον τρόπο που αναλύει και μετριάζει τη μεταβλητότητα στα χρηματοοικονομικά της μοντέλα. Σε αυτό το άρθρο θα παρατηρήσετε οπτικοποιήσεις δυαδικής και τακτικής ταξινόμησης. Θα ανακαλύψετε επίσης οπτικοποιήσεις πρόβλεψης.
-[Αναφορά](https://invest
-## [Κουίζ μετά τη διάλεξη](https://ff-quizzes.netlify.app/en/ml/)
+Η MetLife, πάροχος ασφάλισης ζωής, είναι ανοιχτή σχετικά με τον τρόπο με τον οποίο αναλύει και μειώνει τη μεταβλητότητα στα οικονομικά μοντέλα της. Σε αυτό το άρθρο θα εντοπίσετε οπτικοποιήσεις δυαδικής και διατακτικής ταξινόμησης. Θα βρείτε επίσης οπτικοποιήσεις πρόβλεψης.
+[Αναφορά](https://investments.metlife.com/content/dam/metlifecom/us/investments/insights/research-topics/macro-strategy/pdf/MetLifeInvestmentManagement_MachineLearnedRanking_070920.pdf)
+
+## 🎨 Τέχνες, Πολιτισμός και Λογοτεχνία
+
+Στις τέχνες, για παράδειγμα στη δημοσιογραφία, υπάρχουν πολλά ενδιαφέροντα προβλήματα. Η ανίχνευση ψευδών ειδήσεων είναι ένα μεγάλο πρόβλημα καθώς έχει αποδειχθεί ότι επηρεάζει την κοινή γνώμη και ακόμα και ότι ανατρέπει δημοκρατίες. Τα μουσεία μπορούν επίσης να ωφεληθούν από τη χρήση μηχανικής μάθησης σε όλα, από την εύρεση συνδέσμων μεταξύ αντικειμένων μέχρι τον σχεδιασμό πόρων.
+
+### Ανίχνευση ψευδών ειδήσεων
+
+Η ανίχνευση ψευδών ειδήσεων έχει γίνει παιχνίδι γάτας και ποντικιού στα σημερινά μέσα ενημέρωσης. Σε αυτό το άρθρο, οι ερευνητές προτείνουν ότι ένα σύστημα που συνδυάζει διάφορες τεχνικές μηχανικής μάθησης που έχουμε μελετήσει μπορεί να δοκιμαστεί και το καλύτερο μοντέλο να αναπτυχθεί: "Αυτό το σύστημα βασίζεται στην επεξεργασία φυσικής γλώσσας για την εξαγωγή χαρακτηριστικών από τα δεδομένα και στη συνέχεια αυτά τα χαρακτηριστικά χρησιμοποιούνται για την εκπαίδευση ταξινομητών μηχανικής μάθησης όπως 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)
+
+Αυτό το άρθρο δείχνει πώς ο συνδυασμός διαφορετικών πεδίων της μηχανικής μάθησης μπορεί να παράγει ενδιαφέροντα αποτελέσματα που βοηθούν στην αναχαίτιση της εξάπλωσης ψευδών ειδήσεων και την αποφυγή πραγματικής ζημιάς· σε αυτή την περίπτωση, το κίνητρο ήταν η διάδοση φημών για θεραπείες COVID που προκάλεσαν βία από όχλους.
+
+### Μηχανική μάθηση στα μουσεία
+
+Τα μουσεία βρίσκονται στα πρόθυρα μιας επανάστασης ΑΙ όπου η καταγραφή και ψηφιοποίηση συλλογών και η εύρεση συνδέσμων μεταξύ αντικειμένων γίνεται πιο εύκολη καθώς η τεχνολογία προχωρά. Έργα όπως το [In Codice Ratio](https://www.sciencedirect.com/science/article/abs/pii/S0306457321001035#:~:text=1.,studies%20over%20large%20historical%20sources.) βοηθούν να ξεκλειδώσουν τα μυστήρια απρόσιτων συλλογών όπως τα Αρχεία του Βατικανού. Ωστόσο, και η επιχειρηματική πτυχή των μουσείων ωφελείται από τα μοντέλα μηχανικής μάθησης.
+
+Για παράδειγμα, το Art Institute of Chicago έχει δημιουργήσει μοντέλα για την πρόβλεψη των ενδιαφερόντων του κοινού και του πότε θα παρακολουθήσουν εκθέσεις. Ο στόχος είναι η δημιουργία εξατομικευμένων και βελτιστοποιημένων εμπειριών επισκεπτών κάθε φορά που ο χρήστης επισκέπτεται το μουσείο. "Κατά το οικονομικό έτος 2017, το μοντέλο προέβλεψε την προσέλευση και τα έσοδα με ακρίβεια εντός του 1 τοις εκατό, λέει ο Andrew Simnick, ανώτερος αντιπρόεδρος του Art Institute."
+[Αναφορά](https://www.chicagobusiness.com/article/20180518/ISSUE01/180519840/art-institute-of-chicago-uses-data-to-make-exhibit-choices)
+
+## 🏷 Μάρκετινγκ
+
+### Τμηματοποίηση πελατών
+
+Οι πιο αποτελεσματικές στρατηγικές μάρκετινγκ στοχεύουν τους πελάτες με διαφορετικούς τρόπους βάσει διαφόρων ομαδοποιήσεων. Σε αυτό το άρθρο συζητούνται οι χρήσεις αλγορίθμων ομαδοποίησης για την υποστήριξη διαφοροποιημένου μάρκετινγκ. Το διαφοροποιημένο μάρκετινγκ βοηθά τις εταιρείες να βελτιώσουν την αναγνώριση της μάρκας, να προσεγγίσουν περισσότερους πελάτες και να κερδίσουν περισσότερα χρήματα.
+[Αναφορά](https://ai.inqline.com/machine-learning-for-marketing-customer-segmentation/)
+
+## 🚀 Πρόκληση
+
+Εντοπίστε έναν άλλο τομέα που ωφελείται από μερικές από τις τεχνικές που μάθατε σε αυτό το αναλυτικό πρόγραμμα και ανακαλύψτε πώς χρησιμοποιεί τη μηχανική μάθηση.
+
+
+## [Τεστ μετά τη διάλεξη](https://ff-quizzes.netlify.app/en/ml/)
-## Ανασκόπηση & Αυτομελέτη
+## Επανεξέταση & Αυτομελέτη
-Η ομάδα επιστήμης δεδομένων της Wayfair έχει αρκετά ενδιαφέροντα βίντεο σχετικά με το πώς χρησιμοποιούν τη Μηχανική Μάθηση στην εταιρεία τους. Αξίζει [να ρίξετε μια ματιά](https://www.youtube.com/channel/UCe2PjkQXqOuwkW1gw6Ameuw/videos)!
+Η ομάδα επιστήμης δεδομένων της Wayfair έχει αρκετά ενδιαφέροντα βίντεο για το πώς χρησιμοποιούν τη Μηχανική Μάθηση στην εταιρεία τους. Αξίζει [να ρίξετε μια ματιά](https://www.youtube.com/channel/UCe2PjkQXqOuwkW1gw6Ameuw/videos)!
-## Εργασία
+## Ανάθεση
-[Κυνήγι θησαυρού στη Μηχανική Μάθηση](assignment.md)
+[Κυνήγι θησαυρού Μηχανικής Μάθησης](assignment.md)
---
-**Αποποίηση ευθύνης**:
-Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.
\ No newline at end of file
+
+**Αποποίηση ευθυνών**:
+Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία μετάφρασης με τεχνητή νοημοσύνη [Co-op Translator](https://github.com/Azure/co-op-translator). Ενώ επιδιώκουμε την ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή λανθασμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.
+
\ No newline at end of file
diff --git a/translations/el/9-Real-World/2-Debugging-ML-Models/README.md b/translations/el/9-Real-World/2-Debugging-ML-Models/README.md
index 3cea6d621..a1dda52d7 100644
--- a/translations/el/9-Real-World/2-Debugging-ML-Models/README.md
+++ b/translations/el/9-Real-World/2-Debugging-ML-Models/README.md
@@ -1,142 +1,179 @@
-# Υστερόγραφο: Εντοπισμός σφαλμάτων μοντέλων στη Μηχανική Μάθηση με χρήση των στοιχείων του πίνακα ελέγχου Υπεύθυνης Τεχνητής Νοημοσύνης
-
-## [Προ-μάθημα κουίζ](https://ff-quizzes.netlify.app/en/ml/)
+# Μεταγραφή: Αποσφαλμάτωση Μοντέλου στη Μηχανική Μάθηση χρησιμοποιώντας τα συστατικά του Πίνακα Ελέγχου Responsible AI
+
+## [Προ-διάλεξη κουίζ](https://ff-quizzes.netlify.app/en/ml/)
+
## Εισαγωγή
-Η μηχανική μάθηση επηρεάζει την καθημερινή μας ζωή. Η τεχνητή νοημοσύνη βρίσκει τον δρόμο της σε μερικά από τα πιο σημαντικά συστήματα που μας επηρεάζουν ως άτομα αλλά και ως κοινωνία, όπως η υγειονομική περίθαλψη, τα οικονομικά, η εκπαίδευση και η απασχόληση. Για παράδειγμα, συστήματα και μοντέλα εμπλέκονται σε καθημερινές διαδικασίες λήψης αποφάσεων, όπως η διάγνωση ασθενειών ή η ανίχνευση απάτης. Ως αποτέλεσμα, οι εξελίξεις στην τεχνητή νοημοσύνη, μαζί με την επιταχυνόμενη υιοθέτησή της, αντιμετωπίζονται με μεταβαλλόμενες κοινωνικές προσδοκίες και αυξανόμενη ρύθμιση. Συνεχώς βλέπουμε περιοχές όπου τα συστήματα τεχνητής νοημοσύνης δεν ανταποκρίνονται στις προσδοκίες, εκθέτουν νέες προκλήσεις και οι κυβερνήσεις αρχίζουν να ρυθμίζουν τις λύσεις τεχνητής νοημοσύνης. Επομένως, είναι σημαντικό αυτά τα μοντέλα να αναλύονται ώστε να παρέχουν δίκαια, αξιόπιστα, συμπεριληπτικά, διαφανή και υπεύθυνα αποτελέσματα για όλους.
+Η μηχανική μάθηση επηρεάζει την καθημερινή μας ζωή. Η τεχνητή νοημοσύνη βρίσκει τον δρόμο της σε μερικά από τα πιο σημαντικά συστήματα που μας επηρεάζουν ως άτομα καθώς και την κοινωνία μας, από την υγειονομική περίθαλψη, τα οικονομικά, την εκπαίδευση και την εργασία. Για παράδειγμα, τα συστήματα και τα μοντέλα εμπλέκονται σε καθημερινές εργασίες λήψης αποφάσεων, όπως διαγνώσεις υγείας ή ανίχνευση απάτης. Ως αποτέλεσμα, οι εξελίξεις στην τεχνητή νοημοσύνη σε συνδυασμό με την επιταχυνόμενη υιοθέτηση αντιμετωπίζονται με εξελισσόμενες κοινωνικές προσδοκίες και αυξανόμενη ρύθμιση ως απάντηση. Συνεχώς βλέπουμε περιοχές όπου τα συστήματα τεχνητής νοημοσύνης συνεχίζουν να αποτυγχάνουν να ικανοποιήσουν προσδοκίες· εκθέτουν νέες προκλήσεις· και οι κυβερνήσεις αρχίζουν να ρυθμίζουν τις λύσεις AI. Έτσι, είναι σημαντικό αυτά τα μοντέλα να αναλύονται ώστε να παρέχουν δίκαια, αξιόπιστα, συμπεριληπτικά, διαφανή και υπεύθυνα αποτελέσματα για όλους.
-Σε αυτό το πρόγραμμα σπουδών, θα εξετάσουμε πρακτικά εργαλεία που μπορούν να χρησιμοποιηθούν για να αξιολογηθεί αν ένα μοντέλο έχει ζητήματα υπεύθυνης τεχνητής νοημοσύνης. Οι παραδοσιακές τεχνικές εντοπισμού σφαλμάτων στη μηχανική μάθηση τείνουν να βασίζονται σε ποσοτικούς υπολογισμούς, όπως η συνολική ακρίβεια ή η μέση απώλεια σφάλματος. Φανταστείτε τι μπορεί να συμβεί όταν τα δεδομένα που χρησιμοποιείτε για να δημιουργήσετε αυτά τα μοντέλα στερούνται ορισμένων δημογραφικών στοιχείων, όπως η φυλή, το φύλο, η πολιτική άποψη, η θρησκεία ή αντιπροσωπεύουν δυσανάλογα τέτοια δημογραφικά στοιχεία. Τι γίνεται όταν η έξοδος του μοντέλου ερμηνεύεται ώστε να ευνοεί κάποια δημογραφική ομάδα; Αυτό μπορεί να εισάγει υπερβολική ή ανεπαρκή εκπροσώπηση αυτών των ευαίσθητων χαρακτηριστικών, οδηγώντας σε ζητήματα δικαιοσύνης, συμπερίληψης ή αξιοπιστίας από το μοντέλο. Ένας άλλος παράγοντας είναι ότι τα μοντέλα μηχανικής μάθησης θεωρούνται "μαύρα κουτιά", γεγονός που καθιστά δύσκολο να κατανοηθεί και να εξηγηθεί τι οδηγεί την πρόβλεψη ενός μοντέλου. Όλα αυτά είναι προκλήσεις που αντιμετωπίζουν οι επιστήμονες δεδομένων και οι προγραμματιστές τεχνητής νοημοσύνης όταν δεν διαθέτουν επαρκή εργαλεία για να εντοπίσουν σφάλματα και να αξιολογήσουν τη δικαιοσύνη ή την αξιοπιστία ενός μοντέλου.
+Σε αυτό το πρόγραμμα σπουδών, θα εξετάσουμε πρακτικά εργαλεία που μπορούν να χρησιμοποιηθούν για να αξιολογήσουμε εάν ένα μοντέλο έχει ζητήματα υπεύθυνης AI. Οι παραδοσιακές τεχνικές αποσφαλμάτωσης μηχανικής μάθησης συνήθως βασίζονται σε ποσοτικούς υπολογισμούς όπως η συνολική ακρίβεια ή η μέση απώλεια σφάλματος. Φανταστείτε τι μπορεί να συμβεί όταν τα δεδομένα που χρησιμοποιείτε για να χτίσετε αυτά τα μοντέλα λείπουν ορισμένα δημογραφικά στοιχεία, όπως φυλή, φύλο, πολιτική άποψη, θρησκεία ή εκπροσωπούν δυσανάλογα τέτοια δημογραφικά. Τι γίνεται όταν η έξοδος του μοντέλου ερμηνεύεται έτσι ώστε να ευνοεί κάποια δημογραφικά στοιχεία; Αυτό μπορεί να εισάγει υπερεκπροσώπηση ή υποεκπροσώπηση αυτών των ευαίσθητων ομάδων χαρακτηριστικών, με αποτέλεσμα προβλήματα δικαιοσύνης, συμπερίληψης ή αξιοπιστίας από το μοντέλο. Ένας άλλος παράγοντας είναι ότι τα μοντέλα μηχανικής μάθησης θεωρούνται μαύρα κουτιά, γεγονός που καθιστά δύσκολο να κατανοηθεί και να εξηγηθεί τι οδηγεί στην πρόβλεψη ενός μοντέλου. Όλες αυτές είναι προκλήσεις που αντιμετωπίζουν οι επιστήμονες δεδομένων και οι προγραμματιστές AI όταν δεν διαθέτουν επαρκή εργαλεία για να αποσφαλματώσουν και να αξιολογήσουν τη δικαιοσύνη ή την αξιοπιστία ενός μοντέλου.
-Σε αυτό το μάθημα, θα μάθετε πώς να εντοπίζετε σφάλματα στα μοντέλα σας χρησιμοποιώντας:
+Σε αυτό το μάθημα, θα μάθετε για την αποσφαλμάτωση των μοντέλων σας χρησιμοποιώντας:
-- **Ανάλυση Σφαλμάτων**: εντοπισμός περιοχών στη διανομή δεδομένων όπου το μοντέλο έχει υψηλά ποσοστά σφαλμάτων.
-- **Επισκόπηση Μοντέλου**: συγκριτική ανάλυση μεταξύ διαφορετικών ομάδων δεδομένων για την ανακάλυψη διαφορών στις μετρικές απόδοσης του μοντέλου.
-- **Ανάλυση Δεδομένων**: διερεύνηση περιοχών όπου μπορεί να υπάρχει υπερβολική ή ανεπαρκής εκπροσώπηση των δεδομένων που μπορεί να προκαλέσει την ευνοϊκή πρόβλεψη του μοντέλου για μια δημογραφική ομάδα έναντι μιας άλλης.
-- **Σημαντικότητα Χαρακτηριστικών**: κατανόηση των χαρακτηριστικών που οδηγούν τις προβλέψεις του μοντέλου σε παγκόσμιο ή τοπικό επίπεδο.
+- **Ανάλυση Σφαλμάτων**: εντοπίστε πού στην κατανομή των δεδομένων σας έχει το μοντέλο υψηλά ποσοστά σφαλμάτων.
+- **Επισκόπηση Μοντέλου**: εκτελέστε συγκριτική ανάλυση σε διαφορετικές υποομάδες δεδομένων για να ανακαλύψετε ανισότητες στις μετρικές απόδοσης του μοντέλου σας.
+- **Ανάλυση Δεδομένων**: διερευνήστε πού μπορεί να υπάρχει υπερεκπροσώπηση ή υποεκπροσώπηση των δεδομένων σας που μπορεί να προκαλέσει το μοντέλο να ευνοεί ένα δημογραφικό έναντι ενός άλλου.
+- **Σημαντικότητα Χαρακτηριστικών**: κατανοήστε ποια χαρακτηριστικά καθοδηγούν τις προβλέψεις του μοντέλου σε παγκόσμιο ή τοπικό επίπεδο.
-## Προαπαιτούμενα
+## Προαπαιτούμενο
-Ως προαπαιτούμενο, παρακαλούμε να ανατρέξετε στο [Υπεύθυνα εργαλεία τεχνητής νοημοσύνης για προγραμματιστές](https://www.microsoft.com/ai/ai-lab-responsible-ai-dashboard)
+Ως προαπαιτούμενο, παρακαλώ κάντε την επισκόπηση [Responsible AI tools for developers](https://www.microsoft.com/ai/ai-lab-responsible-ai-dashboard)
-> 
+> 
## Ανάλυση Σφαλμάτων
-Οι παραδοσιακές μετρικές απόδοσης μοντέλων που χρησιμοποιούνται για τη μέτρηση της ακρίβειας είναι κυρίως υπολογισμοί που βασίζονται σε σωστές έναντι λανθασμένων προβλέψεων. Για παράδειγμα, ο προσδιορισμός ότι ένα μοντέλο είναι ακριβές κατά 89% με απώλεια σφάλματος 0.001 μπορεί να θεωρηθεί καλή απόδοση. Ωστόσο, τα σφάλματα δεν κατανέμονται πάντα ομοιόμορφα στο υποκείμενο σύνολο δεδομένων. Μπορεί να έχετε βαθμολογία ακρίβειας μοντέλου 89%, αλλά να ανακαλύψετε ότι υπάρχουν διαφορετικές περιοχές των δεδομένων σας στις οποίες το μοντέλο αποτυγχάνει κατά 42% του χρόνου. Οι συνέπειες αυτών των μοτίβων αποτυχίας με ορισμένες ομάδες δεδομένων μπορούν να οδηγήσουν σε ζητήματα δικαιοσύνης ή αξιοπιστίας. Είναι απαραίτητο να κατανοήσετε τις περιοχές όπου το μοντέλο αποδίδει καλά ή όχι. Οι περιοχές δεδομένων όπου υπάρχουν υψηλά ποσοστά ανακρίβειας στο μοντέλο σας μπορεί να αποδειχθούν σημαντικές δημογραφικές ομάδες δεδομένων.
+Οι παραδοσιακές μετρικές απόδοσης μοντέλων που χρησιμοποιούνται για τη μέτρηση της ακρίβειας είναι κυρίως υπολογισμοί βασισμένοι σε σωστές έναντι λανθασμένων προβλέψεων. Για παράδειγμα, η διαπίστωση ότι ένα μοντέλο έχει ακρίβεια 89% με απώλεια σφάλματος 0,001 μπορεί να θεωρηθεί καλή απόδοση. Τα σφάλματα συχνά δεν κατανέμονται ομοιόμορφα στο υποκείμενο σύνολο δεδομένων σας. Μπορεί να έχετε σκορ ακρίβειας μοντέλου 89% αλλά να ανακαλύψετε ότι υπάρχουν διαφορετικές περιοχές των δεδομένων σας όπου το μοντέλο αποτυγχάνει στο 42% των φορών. Το αποτέλεσμα αυτών των προτύπων αποτυχίας με ορισμένες ομάδες δεδομένων μπορεί να οδηγήσει σε ζητήματα δικαιοσύνης ή αξιοπιστίας. Είναι απαραίτητο να κατανοήσουμε τις περιοχές όπου το μοντέλο αποδίδει καλά ή όχι. Οι περιοχές δεδομένων όπου υπάρχουν πολλά λάθη στο μοντέλο σας μπορεί να αποδειχθούν σημαντικό δημογραφικό δεδομένων.
-
+
-Η συνιστώσα Ανάλυσης Σφαλμάτων στον πίνακα ελέγχου Υπεύθυνης Τεχνητής Νοημοσύνης απεικονίζει πώς η αποτυχία του μοντέλου κατανέμεται σε διάφορες ομάδες με μια οπτικοποίηση δέντρου. Αυτό είναι χρήσιμο για τον εντοπισμό χαρακτηριστικών ή περιοχών όπου υπάρχει υψηλό ποσοστό σφαλμάτων στο σύνολο δεδομένων σας. Βλέποντας από πού προέρχονται οι περισσότερες ανακρίβειες του μοντέλου, μπορείτε να αρχίσετε να διερευνάτε τη βασική αιτία. Μπορείτε επίσης να δημιουργήσετε ομάδες δεδομένων για να πραγματοποιήσετε ανάλυση. Αυτές οι ομάδες δεδομένων βοηθούν στη διαδικασία εντοπισμού σφαλμάτων για να προσδιορίσετε γιατί η απόδοση του μοντέλου είναι καλή σε μια ομάδα, αλλά λανθασμένη σε μια άλλη.
+Το συστατικό Ανάλυσης Σφαλμάτων στον πίνακα ελέγχου RAI απεικονίζει πώς η αποτυχία του μοντέλου κατανέμεται σε διάφορες υποομάδες με μια δεντρική απεικόνιση. Αυτό είναι χρήσιμο για τον εντοπισμό χαρακτηριστικών ή περιοχών όπου υπάρχει υψηλό ποσοστό σφαλμάτων στο σύνολο δεδομένων σας. Βλέποντας από πού προέρχονται οι περισσότερες ανακρίβειες του μοντέλου, μπορείτε να αρχίσετε να διερευνάτε την ρίζα του προβλήματος. Μπορείτε επίσης να δημιουργήσετε ομάδες δεδομένων για να εκτελέσετε ανάλυση. Αυτές οι υποομάδες δεδομένων βοηθούν στη διαδικασία αποσφαλμάτωσης για να διαπιστωθεί γιατί η απόδοση του μοντέλου είναι καλή σε μια υποομάδα, αλλά λανθασμένη σε άλλη.
-
+
-Οι οπτικοί δείκτες στον χάρτη δέντρου βοηθούν στον εντοπισμό των προβληματικών περιοχών πιο γρήγορα. Για παράδειγμα, όσο πιο σκούρο κόκκινο είναι ένας κόμβος δέντρου, τόσο υψηλότερο είναι το ποσοστό σφάλματος.
+Οι οπτικοί δείκτες στο δεντρικό χάρτη βοηθούν στον ταχύτερο εντοπισμό των προβληματικών περιοχών. Για παράδειγμα, όσο πιο σκούρο κόκκινο έχει ένας κόμβος στο δέντρο, τόσο υψηλότερο είναι το ποσοστό σφάλματος.
-Ο θερμικός χάρτης είναι μια άλλη λειτουργία οπτικοποίησης που οι χρήστες μπορούν να χρησιμοποιήσουν για να διερευνήσουν το ποσοστό σφάλματος χρησιμοποιώντας ένα ή δύο χαρακτηριστικά για να βρουν έναν παράγοντα που συμβάλλει στα σφάλματα του μοντέλου σε ολόκληρο το σύνολο δεδομένων ή τις ομάδες.
+Ο θερμικός χάρτης είναι μια άλλη οπτικοποιητική λειτουργία που οι χρήστες μπορούν να χρησιμοποιήσουν για να διερευνήσουν το ποσοστό σφάλματος χρησιμοποιώντας ένα ή δύο χαρακτηριστικά για να βρουν μια συνεισφορά στα σφάλματα του μοντέλου σε ολόκληρο το σύνολο δεδομένων ή τις υποομάδες.
-
+
-Χρησιμοποιήστε την ανάλυση σφαλμάτων όταν χρειάζεστε:
+Χρησιμοποιήστε την ανάλυση σφαλμάτων όταν χρειάζεται να:
-* Βαθιά κατανόηση του πώς οι αποτυχίες του μοντέλου κατανέμονται σε ένα σύνολο δεδομένων και σε διάφορες διαστάσεις εισόδου και χαρακτηριστικών.
-* Ανάλυση των συνολικών μετρικών απόδοσης για την αυτόματη ανακάλυψη λανθασμένων ομάδων δεδομένων ώστε να ενημερώσετε τα στοχευμένα βήματα μετριασμού.
+* Αποκτήσετε βαθιά κατανόηση του τρόπου με τον οποίο οι αποτυχίες μοντέλου κατανέμονται σε ένα σύνολο δεδομένων και μέσα από πολλές διαστάσεις εισόδου και χαρακτηριστικών.
+* Χωρίσετε τις συνολικές μετρικές απόδοσης για να ανακαλύψετε αυτόματα λανθασμένες υποομάδες ώστε να ενημερώσετε τα στοχευμένα βήματα μετριασμού.
## Επισκόπηση Μοντέλου
-Η αξιολόγηση της απόδοσης ενός μοντέλου μηχανικής μάθησης απαιτεί την απόκτηση μιας ολιστικής κατανόησης της συμπεριφοράς του. Αυτό μπορεί να επιτευχθεί με την ανασκόπηση περισσότερων από μία μετρικών, όπως το ποσοστό σφάλματος, η ακρίβεια, η ανάκληση, η ακρίβεια ή το MAE (Μέσο Απόλυτο Σφάλμα), για να βρεθούν διαφορές μεταξύ των μετρικών απόδοσης. Μια μετρική απόδοσης μπορεί να φαίνεται εξαιρετική, αλλά οι ανακρίβειες μπορούν να αποκαλυφθούν σε μια άλλη μετρική. Επιπλέον, η σύγκριση των μετρικών για διαφορές σε ολόκληρο το σύνολο δεδομένων ή τις ομάδες βοηθά να φωτιστούν περιοχές όπου το μοντέλο αποδίδει καλά ή όχι. Αυτό είναι ιδιαίτερα σημαντικό για να δούμε την απόδοση του μοντέλου μεταξύ ευαίσθητων και μη ευαίσθητων χαρακτηριστικών (π.χ., φυλή ασθενών, φύλο ή ηλικία) ώστε να αποκαλυφθεί πιθανή αδικία που μπορεί να έχει το μοντέλο. Για παράδειγμα, η ανακάλυψη ότι το μοντέλο είναι πιο λανθασμένο σε μια ομάδα που έχει ευαίσθητα χαρακτηριστικά μπορεί να αποκαλύψει πιθανή αδικία που μπορεί να έχει το μοντέλο.
+Η αξιολόγηση της απόδοσης ενός μοντέλου μηχανικής μάθησης απαιτεί την απόκτηση μιας ολιστικής κατανόησης της συμπεριφοράς του. Αυτό μπορεί να επιτευχθεί εξετάζοντας περισσότερες από μία μετρικές όπως ποσοστό σφάλματος, ακρίβεια, ανάκληση, ακρίβεια (precision) ή MAE (Μέσο Απόλυτο Σφάλμα) για να βρεθούν ανισότητες μεταξύ των μετρικών απόδοσης. Μια μετρική απόδοσης μπορεί να φαίνεται εξαιρετική, αλλά ανακρίβειες μπορεί να αποκαλυφθούν σε άλλη μετρική. Επιπλέον, η σύγκριση των μετρικών ως προς τις ανισότητες σε ολόκληρο το σύνολο δεδομένων ή υποομάδες βοηθά στο να φωτιστούν οι περιοχές όπου το μοντέλο αποδίδει καλά ή όχι. Αυτό είναι ιδιαίτερα σημαντικό για να δούμε την απόδοση του μοντέλου ανάμεσα σε ευαίσθητα έναντι μη ευαίσθητων χαρακτηριστικών (π.χ. φυλή ασθενούς, φύλο ή ηλικία) για την αποκάλυψη πιθανής αδικίας που μπορεί να έχει το μοντέλο. Για παράδειγμα, η ανακάλυψη ότι το μοντέλο είναι πιο ανακριβές σε μια υποομάδα που περιέχει ευαίσθητα χαρακτηριστικά μπορεί να αποκαλύψει πιθανή αδικία που υπάρχει στο μοντέλο.
-Η συνιστώσα Επισκόπησης Μοντέλου του πίνακα ελέγχου Υπεύθυνης Τεχνητής Νοημοσύνης βοηθά όχι μόνο στην ανάλυση των μετρικών απόδοσης της εκπροσώπησης δεδομένων σε μια ομάδα, αλλά δίνει στους χρήστες τη δυνατότητα να συγκρίνουν τη συμπεριφορά του μοντέλου μεταξύ διαφορετικών ομάδων.
+Το συστατικό Επισκόπηση Μοντέλου στον πίνακα ελέγχου RAI βοηθά όχι μόνο στην ανάλυση των μετρικών απόδοσης της αναπαράστασης δεδομένων σε μια υποομάδα, αλλά παρέχει στους χρήστες τη δυνατότητα να συγκρίνουν τη συμπεριφορά του μοντέλου σε διαφορετικές υποομάδες.
-
+
-Η λειτουργία ανάλυσης βάσει χαρακτηριστικών της συνιστώσας επιτρέπει στους χρήστες να περιορίσουν υποομάδες δεδομένων μέσα σε ένα συγκεκριμένο χαρακτηριστικό για να εντοπίσουν ανωμαλίες σε λεπτομερές επίπεδο. Για παράδειγμα, ο πίνακας ελέγχου διαθέτει ενσωματωμένη νοημοσύνη για να δημιουργεί αυτόματα ομάδες για ένα χαρακτηριστικό που επιλέγει ο χρήστης (π.χ., *"time_in_hospital < 3"* ή *"time_in_hospital >= 7"*). Αυτό επιτρέπει στον χρήστη να απομονώσει ένα συγκεκριμένο χαρακτηριστικό από μια μεγαλύτερη ομάδα δεδομένων για να δει αν είναι βασικός παράγοντας των λανθασμένων αποτελεσμάτων του μοντέλου.
+Η λειτουργία ανάλυσης βάσει χαρακτηριστικών του συστατικού επιτρέπει στους χρήστες να περιορίσουν υποομάδες δεδομένων εντός ενός συγκεκριμένου χαρακτηριστικού για να εντοπίσουν ανωμαλίες σε λεπτομερές επίπεδο. Για παράδειγμα, ο πίνακας ελέγχου έχει ενσωματωμένη νοημοσύνη για αυτόματη δημιουργία υποομάδων για ένα χαρακτηριστικό που επιλέγει ο χρήστης (π.χ., *"time_in_hospital < 3"* ή *"time_in_hospital >= 7"*). Αυτό επιτρέπει σε έναν χρήστη να απομονώσει ένα συγκεκριμένο χαρακτηριστικό από μια μεγαλύτερη ομάδα δεδομένων για να δει εάν είναι σημαντικός παράγοντας που επηρεάζει τα λανθασμένα αποτελέσματα του μοντέλου.
-
+
-Η συνιστώσα Επισκόπησης Μοντέλου υποστηρίζει δύο κατηγορίες μετρικών διαφορών:
+Το συστατικό Επισκόπηση Μοντέλου υποστηρίζει δύο κατηγορίες μετρικών ανισότητας:
-**Διαφορά στην απόδοση του μοντέλου**: Αυτά τα σύνολα μετρικών υπολογίζουν τη διαφορά στις τιμές της επιλεγμένης μετρικής απόδοσης μεταξύ υποομάδων δεδομένων. Εδώ είναι μερικά παραδείγματα:
+**Ανισότητα στην απόδοση του μοντέλου**: Αυτά τα σύνολα μετρικών υπολογίζουν την ανισότητα (διαφορά) στις τιμές της επιλεγμένης μετρικής απόδοσης μεταξύ υποομάδων δεδομένων. Εδώ είναι μερικά παραδείγματα:
-* Διαφορά στο ποσοστό ακρίβειας
-* Διαφορά στο ποσοστό σφάλματος
-* Διαφορά στην ακρίβεια
-* Διαφορά στην ανάκληση
-* Διαφορά στο μέσο απόλυτο σφάλμα (MAE)
+* Ανισότητα στο ποσοστό ακρίβειας
+* Ανισότητα στο ποσοστό σφάλματος
+* Ανισότητα στην ακρίβεια (precision)
+* Ανισότητα στην ανάκληση (recall)
+* Ανισότητα στο μέσο απόλυτο σφάλμα (MAE)
-**Διαφορά στο ποσοστό επιλογής**: Αυτή η μετρική περιέχει τη διαφορά στο ποσοστό επιλογής (ευνοϊκή πρόβλεψη) μεταξύ υποομάδων. Ένα παράδειγμα αυτού είναι η διαφορά στα ποσοστά έγκρισης δανείων. Το ποσοστό επιλογής σημαίνει το κλάσμα των σημείων δεδομένων σε κάθε κατηγορία που ταξινομούνται ως 1 (σε δυαδική ταξινόμηση) ή η κατανομή των τιμών πρόβλεψης (σε παλινδρόμηση).
+**Ανισότητα στο ποσοστό επιλογής**: Αυτή η μετρική περιλαμβάνει τη διαφορά στο ποσοστό επιλογής (ευνοϊκή πρόβλεψη) ανάμεσα σε υποομάδες. Ένα παράδειγμα είναι η ανισότητα στα ποσοστά έγκρισης δανείων. Ο ρυθμός επιλογής σημαίνει το κλάσμα των σημείων δεδομένων σε κάθε κατηγορία που ταξινομούνται ως 1 (στη δυαδική ταξινόμηση) ή η κατανομή των τιμών πρόβλεψης (στην παλινδρόμηση).
## Ανάλυση Δεδομένων
> "Αν βασανίσεις τα δεδομένα αρκετά, θα ομολογήσουν οτιδήποτε" - Ronald Coase
-Αυτή η δήλωση ακούγεται υπερβολική, αλλά είναι αλήθεια ότι τα δεδομένα μπορούν να χειραγωγηθούν για να υποστηρίξουν οποιοδήποτε συμπέρασμα. Μια τέτοια χειραγώγηση μπορεί μερικές φορές να συμβεί ακούσια. Ως άνθρωποι, όλοι έχουμε προκαταλήψεις, και είναι συχνά δύσκολο να γνωρίζουμε συνειδητά πότε εισάγουμε προκατάληψη στα δεδομένα. Η διασφάλιση της δικαιοσύνης στην τεχνητή νοημοσύνη και τη μηχανική μάθηση παραμένει μια σύνθετη πρόκληση.
+Αυτή η δήλωση ακούγεται ακραία, αλλά είναι αλήθεια ότι τα δεδομένα μπορούν να χειραγωγηθούν για να υποστηρίξουν οποιοδήποτε συμπέρασμα. Τέτοια χειραγώγηση μπορεί μερικές φορές να συμβεί ακούσια. Ως άνθρωποι, όλοι έχουμε προκαταλήψεις, και συχνά είναι δύσκολο να γνωρίζουμε συνειδητά πότε εισάγουμε προκατάληψη στα δεδομένα. Η διασφάλιση της δικαιοσύνης στην AI και τη μηχανική μάθηση παραμένει μια πολύπλοκη πρόκληση.
+
+Τα δεδομένα είναι ένα μεγάλο τυφλό σημείο για τις παραδοσιακές μετρικές απόδοσης μοντέλων. Μπορεί να έχετε υψηλές βαθμολογίες ακρίβειας, αλλά αυτό δεν αντικατοπτρίζει πάντα την υποκείμενη προκατάληψη στα δεδομένα που μπορεί να υπάρχει στο σύνολο δεδομένων σας. Για παράδειγμα, αν ένα σύνολο δεδομένων εργαζομένων έχει 27% γυναίκες σε εκτελεστικές θέσεις σε μια εταιρεία και 73% άνδρες στο ίδιο επίπεδο, ένα AI μοντέλο που εκπαιδεύτηκε για διαφήμιση εργασίας σε αυτά τα δεδομένα μπορεί να στοχεύει κυρίως ανδρικό κοινό για θέσεις ανώτερου επιπέδου. Έχοντας αυτή την ανισορροπία στα δεδομένα, το μοντέλο προσανατολίστηκε να ευνοεί ένα φύλο. Αυτό αποκαλύπτει ένα ζήτημα δικαιοσύνης όπου υπάρχει μεροληψία φύλου στο μοντέλο AI.
-Τα δεδομένα αποτελούν ένα μεγάλο τυφλό σημείο για τις παραδοσιακές μετρικές απόδοσης μοντέλων. Μπορεί να έχετε υψηλές βαθμολογίες ακρίβειας, αλλά αυτό δεν αντικατοπτρίζει πάντα την υποκείμενη προκατάληψη δεδομένων που μπορεί να υπάρχει στο σύνολο δεδομένων σας. Για παράδειγμα, αν ένα σύνολο δεδομένων εργαζομένων έχει 27% γυναίκες σε εκτελεστικές θέσεις σε μια εταιρεία και 73% άνδρες στο ίδιο επίπεδο, ένα μοντέλο διαφήμισης θέσεων εργασίας που εκπαιδεύεται σε αυτά τα δεδομένα μπορεί να στοχεύει κυρίως ανδρικό κοινό για θέσεις ανώτερου επιπέδου. Αυτή η ανισορροπία στα δεδομένα επηρέασε την πρόβλεψη του μοντέλου ώστε να ευνοεί ένα φύλο. Αυτό αποκαλύπτει ένα ζήτημα δικαιοσύνης όπου υπάρχει προκατάληψη φύλου στο μοντέλο τεχνητής νοημοσύνης.
+Το συστατικό Ανάλυσης Δεδομένων στον πίνακα ελέγχου RAI βοηθά στον εντοπισμό περιοχών όπου υπάρχει υπερεκπροσώπηση και υποεκπροσώπηση στο σύνολο δεδομένων. Βοηθά τους χρήστες να διαγνώσουν την ρίζα των σφαλμάτων και των ζητημάτων δικαιοσύνης που εισάγονται από ανισορροπίες δεδομένων ή έλλειψη εκπροσώπησης μιας συγκεκριμένης ομάδας δεδομένων. Αυτό δίνει στους χρήστες τη δυνατότητα να οπτικοποιήσουν σύνολα δεδομένων βάσει προβλεφθέντων και πραγματικών αποτελεσμάτων, ομάδων σφαλμάτων και συγκεκριμένων χαρακτηριστικών. Μερικές φορές η ανακάλυψη μιας υποεκπροσωπούμενης ομάδας δεδομένων μπορεί επίσης να αποκαλύψει ότι το μοντέλο δεν μαθαίνει καλά, εξ ου και οι υψηλές ανακρίβειες. Η ύπαρξη ενός μοντέλου με προκατάληψη στα δεδομένα δεν είναι μόνο θέμα δικαιοσύνης αλλά δείχνει ότι το μοντέλο δεν είναι συμπεριληπτικό ή αξιόπιστο.
-Η συνιστώσα Ανάλυσης Δεδομένων στον πίνακα ελέγχου Υπεύθυνης Τεχνητής Νοημοσύνης βοηθά στον εντοπισμό περιοχών όπου υπάρχει υπερβολική ή ανεπαρκής εκπροσώπηση στο σύνολο δεδομένων. Βοηθά τους χρήστες να διαγνώσουν τη βασική αιτία σφαλμάτων και ζητημάτων δικαιοσύνης που εισάγονται από ανισορροπίες δεδομένων ή έλλειψη εκπροσώπησης μιας συγκεκριμένης ομάδας δεδομένων. Αυτό δίνει στους χρήστες τη δυνατότητα να οπτικοποιούν σύνολα δεδομένων βάσει προβλεπόμενων και πραγματικών αποτελεσμάτων, ομάδων σφαλμάτων και συγκεκριμένων χαρακτηριστικών. Μερικές φορές η ανακάλυψη μιας υποεκπροσωπούμενης ομάδας δεδομένων μπορεί επίσης να αποκαλύψει ότι το μοντέλο δεν μαθαίνει καλά, εξ ου και οι υψηλές ανακρίβειες. Ένα μοντέλο που έχει προκατάληψη δεδομένων δεν είναι μόνο ζήτημα δικαιοσύνης αλλά δείχνει ότι το μοντέλο δεν είναι συμπεριληπτικό ή αξιόπιστο.
+
-
-Χρησιμοποιήστε την ανάλυση δεδομένων όταν χρειάζεστε:
+Χρησιμοποιήστε την ανάλυση δεδομένων όταν χρειάζεται να:
-* Εξερεύνηση στατιστικών του συνόλου δεδομένων σας επιλέγοντας διαφορετικά φίλτρα για να διαχωρίσετε τα δεδομένα σας σε διαφορετικές διαστάσεις (γνωστές και ως ομάδες).
-* Κατανόηση της κατανομής του συνόλου δεδομένων σας σε διαφορετικές ομάδες και χαρακτηριστικά.
-* Προσδιορισμός αν τα ευρήματά σας σχετικά με τη δικαιοσύνη, την ανάλυση σφαλμάτων και την αιτιότητα (που προέρχονται από άλλες συνιστώσες του πίνακα ελέγχου) είναι αποτέλεσμα της κατανομής του συνόλου δεδομένων σας.
-* Απόφαση για το πού να συλλέξετε περισσότερα δεδομένα για να μετριάσετε σφάλματα που προέρχονται από ζητήματα εκπροσώπησης, θόρυβο ετικετών, θόρυβο χαρακτηριστικών, προκατάληψη ετικετών και παρόμοιους παράγοντες.
+* Εξερευνήσετε τα στατιστικά του συνόλου δεδομένων σας επιλέγοντας διαφορετικά φίλτρα για να χωρίσετε τα δεδομένα σας σε διαφορετικές διαστάσεις (γνωστές και ως υποομάδες).
+* Κατανοήσετε την κατανομή του συνόλου δεδομένων σας σε διάφορες υποομάδες και ομάδες χαρακτηριστικών.
+* Καθορίσετε αν τα ευρήματά σας σχετικά με τη δικαιοσύνη, την ανάλυση σφαλμάτων και την αιτιότητα (που προέρχονται από άλλα συστατικά του πίνακα ελέγχου) είναι αποτέλεσμα της κατανομής του συνόλου δεδομένων σας.
+* Αποφασίσετε σε ποιες περιοχές να συλλέξετε περισσότερα δεδομένα για να μετριάσετε σφάλματα που προέρχονται από προβλήματα εκπροσώπησης, θόρυβο ετικετών, θόρυβο χαρακτηριστικών, μεροληψία ετικετών και παρόμοιους παράγοντες.
## Ερμηνευσιμότητα Μοντέλου
-Τα μοντέλα μηχανικής μάθησης τείνουν να είναι "μαύρα κουτιά". Η κατανόηση των βασικών
-- **Υπερβολική ή ανεπαρκής εκπροσώπηση**. Η ιδέα είναι ότι μια συγκεκριμένη ομάδα δεν εμφανίζεται σε ένα συγκεκριμένο επάγγελμα, και οποιαδήποτε υπηρεσία ή λειτουργία που συνεχίζει να προωθεί αυτό συμβάλλει στη βλάβη.
+Τα μοντέλα μηχανικής μάθησης τείνουν να είναι μαύρα κουτιά. Η κατανόηση των βασικών χαρακτηριστικών δεδομένων που καθοδηγούν την πρόβλεψη ενός μοντέλου μπορεί να είναι πρόκληση. Είναι σημαντικό να παρέχεται διαφάνεια στο γιατί ένα μοντέλο κάνει μια συγκεκριμένη πρόβλεψη. Για παράδειγμα, αν ένα σύστημα AI προβλέψει ότι ένας διαβητικός ασθενής κινδυνεύει να επανεισαχθεί σε νοσοκομείο σε λιγότερο από 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 σας βοηθά να αποσφαλματώσετε και να αποκτήσετε μια ολοκληρωμένη κατανόηση του πώς ένα μοντέλο κάνει προβλέψεις. Είναι επίσης ένα χρήσιμο εργαλείο για επαγγελματίες μηχανικής μάθησης και λήψης αποφάσεων ώστε να εξηγήσουν και να δείξουν αποδεικτικά στοιχεία των χαρακτηριστικών που επηρεάζουν τη συμπεριφορά ενός μοντέλου για τη ρυθμιστική συμμόρφωση. Στη συνέχεια, οι χρήστες μπορούν να εξετάσουν τόσο τις παγκόσμιες όσο και τις τοπικές εξηγήσεις για να επαληθεύσουν ποια χαρακτηριστικά καθοδηγούν μια πρόβλεψη μοντέλου. Οι παγκόσμιες εξηγήσεις απαριθμούν τα πιο σημαντικά χαρακτηριστικά που επηρέασαν τη συνολική πρόβλεψη ενός μοντέλου. Οι τοπικές εξηγήσεις δείχνουν ποια χαρακτηριστικά οδήγησαν στην πρόβλεψη ενός μοντέλου για μια μεμονωμένη περίπτωση. Η δυνατότητα αξιολόγησης τοπικών εξηγήσεων βοηθά επίσης στην αποσφαλμάτωση ή τον έλεγχο μιας συγκεκριμένης περίπτωσης για καλύτερη κατανόηση και ερμηνεία του γιατί ένα μοντέλο έκανε ακριβή ή ανακριβή πρόβλεψη.
-- Μάθετε πώς να χρησιμοποιείτε τα διάφορα στοιχεία, εξετάζοντας την τεκμηρίωση του πίνακα ελέγχου RAI [docs.](https://learn.microsoft.com/en-us/azure/machine-learning/how-to-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu)
+
-- Δείτε μερικά δείγματα σημειωματάριων του πίνακα ελέγχου RAI [sample notebooks](https://github.com/Azure/RAI-vNext-Preview/tree/main/examples/notebooks) για την αποσφαλμάτωση πιο υπεύθυνων σεναρίων AI στο Azure Machine Learning.
+* Παγκόσμιες εξηγήσεις: Για παράδειγμα, ποια χαρακτηριστικά επηρεάζουν τη συνολική συμπεριφορά ενός μοντέλου επανεισαγωγής σε νοσοκομείο διαβητικών;
+* Τοπικές εξηγήσεις: Για παράδειγμα, γιατί ένας διαβητικός ασθενής άνω των 60 ετών με προηγούμενες νοσηλείες προβλέφθηκε να επανεισαχθεί ή όχι εντός 30 ημερών σε νοσοκομείο;
----
-## 🚀 Πρόκληση
+Στη διαδικασία αποσφαλμάτωσης εξετάζοντας την απόδοση ενός μοντέλου σε διάφορες υποομάδες, η Σημαντικότητα Χαρακτηριστικών δείχνει το επίπεδο επιρροής που έχει ένα χαρακτηριστικό σε όλες τις υποομάδες. Βοηθά να αποκαλυφθούν ανωμαλίες όταν συγκρίνεται το επίπεδο επίδρασης του χαρακτηριστικού στην πρόκληση λανθασμένων προβλέψεων ενός μοντέλου. Το συστατικό Σημαντικότητας Χαρακτηριστικών μπορεί να δείξει ποιες τιμές ενός χαρακτηριστικού επηρέασαν θετικά ή αρνητικά το αποτέλεσμα του μοντέλου. Για παράδειγμα, εάν ένα μοντέλο έκανε μια ανακριβή πρόβλεψη, το συστατικό σας δίνει τη δυνατότητα να ερευνήσετε και να εντοπίσετε ποια χαρακτηριστικά ή τιμές χαρακτηριστικών οδήγησαν στην πρόβλεψη. Αυτό το επίπεδο λεπτομέρειας βοηθά όχι μόνο στην αποσφαλμάτωση αλλά παρέχει διαφάνεια και υπευθυνότητα σε καταστάσεις ελέγχου. Τέλος, το συστατικό μπορεί να σας βοηθήσει να εντοπίσετε ζητήματα δικαιοσύνης. Για να το δείξουμε, εάν ένα ευαίσθητο χαρακτηριστικό όπως η εθνικότητα ή το φύλο έχει μεγάλη επιρροή στην πρόβλεψη ενός μοντέλου, αυτό θα μπορούσε να είναι ένδειξη μεροληψίας λόγω φυλής ή φύλου στο μοντέλο.
+
+
+
+Χρησιμοποιήστε την ερμηνευσιμότητα όταν χρειάζεται να:
+
+* Καθορίσετε πόσο αξιόπιστες είναι οι προβλέψεις του συστήματος AI σας κατανοώντας ποια χαρακτηριστικά είναι πιο σημαντικά για τις προβλέψεις.
+* Προσεγγίσετε την αποσφαλμάτωση του μοντέλου σας κατανοώντας το πρώτα και προσδιορίζοντας εάν το μοντέλο χρησιμοποιεί υγιή χαρακτηριστικά ή απλώς ψευδείς συσχετίσεις.
+* Αποκαλύψετε πιθανές πηγές αδικίας κατανοώντας αν το μοντέλο βασίζει τις προβλέψεις σε ευαίσθητα χαρακτηριστικά ή σε χαρακτηριστικά που σχετίζονται ισχυρά με αυτά.
+* Κατασκευάσετε εμπιστοσύνη των χρηστών στις αποφάσεις του μοντέλου σας δημιουργώντας τοπικές εξηγήσεις για να απεικονίσετε τα αποτελέσματά τους.
+* Ολοκληρώσετε έναν ρυθμιστικό έλεγχο ενός συστήματος AI για την επαλήθευση μοντέλων και την παρακολούθηση του αντίκτυπου των αποφάσεων μοντέλου στους ανθρώπους.
-Για να αποτρέψουμε την εισαγωγή στατιστικών ή δεδομένων προκαταλήψεων από την αρχή, πρέπει:
+## Συμπέρασμα
-- να έχουμε ποικιλία υποβάθρων και προοπτικών μεταξύ των ανθρώπων που εργάζονται στα συστήματα
-- να επενδύσουμε σε σύνολα δεδομένων που αντικατοπτρίζουν την ποικιλομορφία της κοινωνίας μας
-- να αναπτύξουμε καλύτερες μεθόδους για την ανίχνευση και διόρθωση προκαταλήψεων όταν αυτές εμφανίζονται
+Όλα τα συστατικά του πίνακα ελέγχου RAI είναι πρακτικά εργαλεία που σας βοηθούν να δημιουργήσετε μοντέλα μηχανικής μάθησης που είναι λιγότερο επιβλαβή και πιο αξιόπιστα για την κοινωνία. Βελτιώνει την πρόληψη απειλών για τα ανθρώπινα δικαιώματα· τον διαχωρισμό ή τον αποκλεισμό ορισμένων ομάδων από ευκαιρίες ζωής· και τον κίνδυνο σωματικής ή ψυχολογικής βλάβης. Βοηθά επίσης να οικοδομηθεί εμπιστοσύνη στις αποφάσεις του μοντέλου δημιουργώντας τοπικές εξηγήσεις για να απεικονίσει τα αποτελέσματά τους. Μερικές από τις πιθανές βλάβες μπορούν να χαρακτηριστούν ως:
-Σκεφτείτε πραγματικά σενάρια όπου η αδικία είναι εμφανής στη δημιουργία και χρήση μοντέλων. Τι άλλο πρέπει να λάβουμε υπόψη;
+- **Κατανομή**, αν π.χ. ένα φύλο ή εθνικότητα ευνοείται έναντι άλλου.
+- **Ποιότητα υπηρεσίας**. Αν εκπαιδεύσετε τα δεδομένα για ένα συγκεκριμένο σενάριο αλλά η πραγματικότητα είναι πολύ πιο πολύπλοκη, οδηγεί σε υπηρεσία με κακή απόδοση.
+- **Στερεοτυπία**. Συνδέοντας μια συγκεκριμένη ομάδα με προκαθορισμένα χαρακτηριστικά.
+
+- **Κατασυκοφάντηση**. Να κριτικάρεις άδικα και να χαρακτηρίζεις κάτι ή κάποιον.
+- **Υπερ- ή υπο-αναπαράσταση**. Η ιδέα είναι ότι μια συγκεκριμένη ομάδα δεν εμφανίζεται σε ένα συγκεκριμένο επάγγελμα, και οποιαδήποτε υπηρεσία ή λειτουργία που συνεχίζει να το προωθεί συμβάλλει σε βλάβη.
+
+### Πίνακας εργαλείων Azure RAI
+
+[Azure RAI dashboard](https://learn.microsoft.com/en-us/azure/machine-learning/concept-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) είναι χτισμένος σε εργαλεία ανοιχτού κώδικα που αναπτύσσονται από κορυφαίους ακαδημαϊκούς οργανισμούς και οργανώσεις, συμπεριλαμβανομένης της Microsoft, και είναι καθοριστικά για επιστήμονες δεδομένων και προγραμματιστές AI ώστε να κατανοήσουν καλύτερα τη συμπεριφορά των μοντέλων, να ανακαλύψουν και να μετριάσουν ανεπιθύμητα ζητήματα από τα μοντέλα AI.
+
+- Μάθετε πώς να χρησιμοποιείτε τα διάφορα συστατικά ελέγχοντας την τεκμηρίωση του RAI dashboard [docs.](https://learn.microsoft.com/en-us/azure/machine-learning/how-to-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu)
+
+- Δείτε μερικά παραδείγματα σημειωματάριων RAI dashboard [sample notebooks](https://github.com/Azure/RAI-vNext-Preview/tree/main/examples/notebooks) για αποσφαλμάτωση πιο υπεύθυνων σεναρίων AI στο Azure Machine Learning.
+
+---
+## 🚀 Πρόκληση
+
+Για να αποτρέψουμε την εισαγωγή στατιστικών ή δεδομένων προκαταλήψεων από την αρχή, πρέπει:
-## [Κουίζ μετά το μάθημα](https://ff-quizzes.netlify.app/en/ml/)
-## Ανασκόπηση & Αυτομελέτη
+- να υπάρχει ποικιλία υπόβαθρων και οπτικών μεταξύ των ανθρώπων που εργάζονται στα συστήματα
+- να επενδύσουμε σε σύνολα δεδομένων που αντανακλούν την ποικιλία της κοινωνίας μας
+- να αναπτύξουμε καλύτερες μεθόδους ανίχνευσης και διόρθωσης προκατάληψης όταν αυτή συμβαίνει
-Σε αυτό το μάθημα, μάθατε μερικά από τα πρακτικά εργαλεία για την ενσωμάτωση υπεύθυνης AI στη μηχανική μάθηση.
+Σκεφτείτε πραγματικά σενάρια όπου η αδικία είναι εμφανής στην κατασκευή και χρήση μοντέλων. Τι άλλο πρέπει να σκεφτούμε;
-Παρακολουθήστε αυτό το εργαστήριο για να εμβαθύνετε στα θέματα:
+## [Μετα-μάθημα κουίζ](https://ff-quizzes.netlify.app/en/ml/)
+## Ανασκόπηση & Αυτο-μελέτη
+
+Σε αυτό το μάθημα, μάθατε μερικά από τα πρακτικά εργαλεία για την ενσωμάτωση υπεύθυνου AI στη μηχανική μάθηση.
-- Πίνακας ελέγχου Υπεύθυνης AI: Μια ολοκληρωμένη λύση για την επιχειρησιακή εφαρμογή της RAI στην πράξη από τις Besmira Nushi και Mehrnoosh Sameki
+Παρακολουθήστε αυτό το εργαστήριο για να εμβαθύνετε στα θέματα:
-[](https://www.youtube.com/watch?v=f1oaDNl3djg "Πίνακας ελέγχου Υπεύθυνης AI: Μια ολοκληρωμένη λύση για την επιχειρησιακή εφαρμογή της RAI στην πράξη")
+- Responsible AI Dashboard: Ένα μέρος για την υλοποίηση του RAI στην πράξη από τους Besmira Nushi και Mehrnoosh Sameki
-> 🎥 Κάντε κλικ στην εικόνα παραπάνω για το βίντεο: Πίνακας ελέγχου Υπεύθυνης AI: Μια ολοκληρωμένη λύση για την επιχειρησιακή εφαρμογή της RAI στην πράξη από τις Besmira Nushi και Mehrnoosh Sameki
+[](https://www.youtube.com/watch?v=f1oaDNl3djg "Responsible AI Dashboard: One-stop shop for operationalizing RAI in practice")
-Ανατρέξτε στα παρακάτω υλικά για να μάθετε περισσότερα σχετικά με την υπεύθυνη AI και πώς να δημιουργήσετε πιο αξιόπιστα μοντέλα:
+> 🎥 Κάντε κλικ στην παραπάνω εικόνα για ένα βίντεο: Responsible AI Dashboard: Ένα μέρος για την υλοποίηση του RAI στην πράξη από τους Besmira Nushi και Mehrnoosh Sameki
+
+Ανατρέξτε στα ακόλουθα υλικά για να μάθετε περισσότερα για το υπεύθυνο AI και πώς να κατασκευάζετε πιο αξιόπιστα μοντέλα:
-- Εργαλεία του πίνακα ελέγχου RAI της Microsoft για την αποσφαλμάτωση μοντέλων ML: [Πόροι εργαλείων Υπεύθυνης AI](https://aka.ms/rai-dashboard)
+- Εργαλεία RAI της Microsoft για αποσφαλμάτωση μοντέλων ML: [Responsible AI tools resources](https://aka.ms/rai-dashboard)
-- Εξερευνήστε το εργαλείο Υπεύθυνης AI: [Github](https://github.com/microsoft/responsible-ai-toolbox)
+- Εξερευνήστε το κιτ εργαλείων Responsible AI: [Github](https://github.com/microsoft/responsible-ai-toolbox)
-- Κέντρο πόρων RAI της Microsoft: [Πόροι Υπεύθυνης AI – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
+- Κέντρο πόρων RAI της Microsoft: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
-- Ερευνητική ομάδα FATE της Microsoft: [FATE: Δικαιοσύνη, Λογοδοσία, Διαφάνεια και Ηθική στην AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
+- Ομάδα έρευνας FATE της Microsoft: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
-## Εργασία
+## Ανάθεση εργασίας
-[Εξερευνήστε τον πίνακα ελέγχου RAI](assignment.md)
+[Εξερευνήστε τον πίνακα RAI](assignment.md)
---
-**Αποποίηση ευθύνης**:
-Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν σφάλματα ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.
\ No newline at end of file
+
+**Αποποίηση ευθυνών**:
+Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία μετάφρασης με τεχνητή νοημοσύνη [Co-op Translator](https://github.com/Azure/co-op-translator). Ενώ επιδιώκουμε την ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή λανθασμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.
+
\ No newline at end of file
diff --git a/translations/el/sketchnotes/LICENSE.md b/translations/el/sketchnotes/LICENSE.md
index 06745c950..cb0ad0783 100644
--- a/translations/el/sketchnotes/LICENSE.md
+++ b/translations/el/sketchnotes/LICENSE.md
@@ -1,87 +1,436 @@
-Διεθνής Άδεια Creative Commons Αναφορά-Παρόμοια Διανομή 4.0
+Απόδοση-Παρόμοια Διανομή 4.0 Διεθνές
=======================================================================
-Η Creative Commons Corporation ("Creative Commons") δεν είναι δικηγορικό γραφείο και δεν παρέχει νομικές υπηρεσίες ή νομικές συμβουλές. Η διανομή των δημόσιων αδειών Creative Commons δεν δημιουργεί σχέση δικηγόρου-πελάτη ή οποιαδήποτε άλλη σχέση. Η Creative Commons διαθέτει τις άδειές της και τις σχετικές πληροφορίες "ως έχουν". Η Creative Commons δεν παρέχει εγγυήσεις σχετικά με τις άδειές της, οποιοδήποτε υλικό αδειοδοτημένο υπό τους όρους και τις προϋποθέσεις της, ή οποιαδήποτε σχετική πληροφορία. Η Creative Commons αποποιείται κάθε ευθύνη για ζημιές που προκύπτουν από τη χρήση τους στο μέγιστο δυνατό βαθμό.
+Η εταιρεία Creative Commons ("Creative Commons") δεν είναι δικηγορικό γραφείο και
+δεν παρέχει νομικές υπηρεσίες ή νομικές συμβουλές. Η διανομή
+των δημόσιων αδειών της Creative Commons δεν δημιουργεί σχέση δικηγόρου-πελάτη ή
+άλλη σχέση. Η Creative Commons καθιστά διαθέσιμες τις άδειές της και τις σχετικές
+πληροφορίες "ως έχουν". Η Creative Commons δεν παρέχει
+εγγυήσεις όσον αφορά τις άδειές της, οποιοδήποτε υλικό αδειοδοτημένο σύμφωνα με τους
+όρους και προϋποθέσεις τους, ή οποιεσδήποτε σχετικές πληροφορίες. Η Creative Commons
+απαλλάσσεται από κάθε ευθύνη για ζημιές που προκύπτουν από τη χρήση τους στο
+μέγιστο δυνατό βαθμό.
+
+Χρήση Δημόσιων Αδειών της Creative Commons
+
+Οι δημόσιες άδειες της Creative Commons παρέχουν ένα τυποποιημένο σύνολο όρων και
+προϋποθέσεων που οι δημιουργοί και άλλοι κάτοχοι δικαιωμάτων μπορούν να χρησιμοποιήσουν για να μοιραστούν
+πρωτότυπα έργα δημιουργίας και άλλο υλικό υπό την προστασία πνευματικών δικαιωμάτων
+και ορισμένων άλλων δικαιωμάτων που ορίζονται στην παρακάτω δημόσια άδεια. Οι
+ακόλουθες παρατηρήσεις είναι μόνο για ενημερωτικούς σκοπούς, δεν είναι
+εξαντλητικές και δεν αποτελούν μέρος των αδειών μας.
+
+ Παρατηρήσεις για τους αδειοδότες: Οι δημόσιες άδειες μας
+ προορίζονται για χρήση από όσους είναι εξουσιοδοτημένοι να δώσουν στο κοινό
+ άδεια χρήσης του υλικού με τρόπους που διαφορετικά περιορίζονται από
+ πνευματικά δικαιώματα και ορισμένα άλλα δικαιώματα. Οι άδειές μας είναι
+ αμετάκλητες. Οι αδειοδότες θα πρέπει να διαβάζουν και να κατανοούν τους όρους
+ και τις προϋποθέσεις της άδειας που επιλέγουν πριν την εφαρμόσουν.
+ Οι αδειοδότες θα πρέπει επίσης να εξασφαλίζουν όλα τα αναγκαία δικαιώματα πριν
+ εφαρμόσουν τις άδειές μας ώστε το κοινό να μπορεί να επαναχρησιμοποιήσει το
+ υλικό όπως αναμένεται. Οι αδειοδότες πρέπει να επισημαίνουν σαφώς οποιοδήποτε
+ υλικό δεν υπόκειται στην άδεια. Αυτό περιλαμβάνει άλλο υλικό με άδεια CC-
+ ή υλικό που χρησιμοποιείται με εξαίρεση ή περιορισμό στα πνευματικά δικαιώματα.
+ Περισσότερες παρατηρήσεις για τους αδειοδότες:
+ wiki.creativecommons.org/Considerations_for_licensors
+
+ Παρατηρήσεις για το κοινό: Χρησιμοποιώντας μία από τις δημόσιες
+ άδειές μας, ένας αδειοδότης παρέχει στο κοινό άδεια να χρησιμοποιήσει το
+ αδειοδοτημένο υλικό σύμφωνα με ορισμένους όρους και προϋποθέσεις. Αν
+ η άδεια του αδειοδότη δεν είναι απαραίτητη για οποιονδήποτε λόγο — για
+ παράδειγμα, λόγω οποιασδήποτε εφαρμόσιμης εξαίρεσης ή περιορισμού στα
+ πνευματικά δικαιώματα — τότε αυτή η χρήση δεν ρυθμίζεται από την άδεια. Οι
+ άδειές μας παρέχουν μόνο άδειες στα πλαίσια των πνευματικών δικαιωμάτων και ορισμένων
+ άλλων δικαιωμάτων που έχει ο αδειοδότης την εξουσία να παραχωρήσει. Η χρήση
+ του αδειοδοτημένου υλικού μπορεί ακόμη να περιορίζεται για άλλους
+ λόγους, συμπεριλαμβανομένου ότι άλλοι έχουν πνευματικά δικαιώματα ή άλλα
+ δικαιώματα στο υλικό. Ένας αδειοδότης μπορεί να κάνει ειδικά αιτήματα,
+ όπως να ζητά να επισημαίνονται ή να περιγράφονται όλες οι αλλαγές.
+ Αν και δεν απαιτείται από τις άδειές μας, σας ενθαρρύνουμε να
+ σεβαστείτε αυτά τα αιτήματα όπου είναι λογικό. Περισσότερες_παρατηρήσεις
+ για το κοινό:
+ wiki.creativecommons.org/Considerations_for_licensees
-Χρήση Δημόσιων Αδειών Creative Commons
+=======================================================================
-Οι δημόσιες άδειες Creative Commons παρέχουν ένα τυποποιημένο σύνολο όρων και προϋποθέσεων που οι δημιουργοί και άλλοι κάτοχοι δικαιωμάτων μπορούν να χρησιμοποιήσουν για να μοιραστούν πρωτότυπα έργα πνευματικής ιδιοκτησίας και άλλο υλικό που υπόκειται σε πνευματικά δικαιώματα και ορισμένα άλλα δικαιώματα που καθορίζονται στην παρακάτω δημόσια άδεια. Οι ακόλουθες παρατηρήσεις είναι μόνο για ενημερωτικούς σκοπούς, δεν είναι εξαντλητικές και δεν αποτελούν μέρος των αδειών μας.
+Δημόσια Άδεια Creative Commons Απόδοσης-Παρόμοιας Διανομής 4.0 Διεθνής
- Παρατηρήσεις για τους αδειοδότες: Οι δημόσιες άδειές μας προορίζονται για χρήση από όσους έχουν εξουσιοδότηση να δώσουν στο κοινό άδεια χρήσης υλικού με τρόπους που διαφορετικά περιορίζονται από πνευματικά δικαιώματα και ορισμένα άλλα δικαιώματα. Οι άδειές μας είναι αμετάκλητες. Οι αδειοδότες πρέπει να διαβάσουν και να κατανοήσουν τους όρους και τις προϋποθέσεις της άδειας που επιλέγουν πριν την εφαρμόσουν. Οι αδειοδότες πρέπει επίσης να εξασφαλίσουν όλα τα απαραίτητα δικαιώματα πριν εφαρμόσουν τις άδειές μας, ώστε το κοινό να μπορεί να επαναχρησιμοποιήσει το υλικό όπως αναμένεται. Οι αδειοδότες πρέπει να επισημάνουν σαφώς οποιοδήποτε υλικό δεν υπόκειται στην άδεια. Αυτό περιλαμβάνει άλλο υλικό με άδεια CC ή υλικό που χρησιμοποιείται υπό εξαίρεση ή περιορισμό των πνευματικών δικαιωμάτων. Περισσότερες παρατηρήσεις για τους αδειοδότες: wiki.creativecommons.org/Considerations_for_licensors
- Παρατηρήσεις για το κοινό: Με τη χρήση μιας από τις δημόσιες άδειές μας, ένας αδειοδότης παρέχει στο κοινό άδεια χρήσης του αδειοδοτημένου υλικού υπό συγκεκριμένους όρους και προϋποθέσεις. Εάν η άδεια του αδειοδότη δεν είναι απαραίτητη για οποιονδήποτε λόγο—για παράδειγμα, λόγω οποιασδήποτε εφαρμοστέας εξαίρεσης ή περιορισμού των πνευματικών δικαιωμάτων—τότε η χρήση αυτή δεν ρυθμίζεται από την άδεια. Οι άδειές μας παρέχουν μόνο άδειες υπό πνευματικά δικαιώματα και ορισμένα άλλα δικαιώματα που ένας αδειοδότης έχει την εξουσία να παραχωρήσει. Η χρήση του αδειοδοτημένου υλικού μπορεί να εξακολουθεί να περιορίζεται για άλλους λόγους, συμπεριλαμβανομένου του ότι άλλοι έχουν πνευματικά δικαιώματα ή άλλα δικαιώματα στο υλικό. Ένας αδειοδότης μπορεί να κάνει ειδικά αιτήματα, όπως να ζητήσει να επισημαίνονται ή να περιγράφονται όλες οι αλλαγές. Παρόλο που δεν απαιτείται από τις άδειές μας, ενθαρρύνεστε να σεβαστείτε αυτά τα αιτήματα όπου είναι λογικό. Περισσότερες παρατηρήσεις για το κοινό: wiki.creativecommons.org/Considerations_for_licensees
+να δεσμεύεστε από τους όρους και τις προϋποθέσεις αυτής της Δημόσιας Άδειας
+Creative Commons Απόδοσης-Παρόμοιας Διανομής 4.0 Διεθνής ("Δημόσια
+Άδεια"). Στο μέτρο που αυτή η Δημόσια Άδεια μπορεί να ερμηνευτεί ως
+σύμβαση, σας παραχωρούνται τα Αδειοδοτημένα Δικαιώματα ως αντάλλαγμα για
+την αποδοχή σας αυτών των όρων και προϋποθέσεων, και ο Αδειοδότης σας παραχωρεί
+αυτά τα δικαιώματα ως αντάλλαγμα για τα οφέλη που λαμβάνει ο Αδειοδότης από
+τη διάθεση του Αδειοδοτημένου Υλικού υπό αυτούς τους όρους και
+προϋποθέσεις.
-=======================================================================
-Διεθνής Δημόσια Άδεια Creative Commons Αναφορά-Παρόμοια Διανομή 4.0
-Με την άσκηση των Αδειοδοτημένων Δικαιωμάτων (όπως ορίζονται παρακάτω), αποδέχεστε και συμφωνείτε να δεσμεύεστε από τους όρους και τις προϋποθέσεις αυτής της Διεθνούς Δημόσιας Άδειας Creative Commons Αναφορά-Παρόμοια Διανομή 4.0 ("Δημόσια Άδεια"). Στο βαθμό που αυτή η Δημόσια Άδεια μπορεί να ερμηνευθεί ως σύμβαση, σας παραχωρούνται τα Αδειοδοτημένα Δικαιώματα ως αντάλλαγμα για την αποδοχή αυτών των όρων και προϋποθέσεων, και ο Αδειοδότης σας παραχωρεί αυτά τα δικαιώματα ως αντάλλαγμα για τα οφέλη που λαμβάνει από τη διάθεση του Αδειοδοτημένου Υλικού υπό αυτούς τους όρους και προϋποθέσεις.
-Δικαιώματα, τότε η βάση δεδομένων στην οποία έχετε Δικαιώματα Sui Generis Database (αλλά όχι τα μεμονωμένα περιεχόμενά της) είναι Προσαρμοσμένο Υλικό,
+ Δικαιώματα που προέρχεται από ή βασίζεται στο Αδειοδοτημένο Υλικό
+ και στο οποίο το Αδειοδοτημένο Υλικό μεταφράζεται, τροποποιείται,
+ διατάσσεται, μετατρέπεται ή τροποποιείται με άλλο τρόπο κατά τρόπο που απαιτεί
+ άδεια σύμφωνα με τα Πνευματικά Δικαιώματα και Παρόμοια Δικαιώματα που κατέχει ο
+ Αδειοδότης. Για τους σκοπούς αυτής της Δημόσιας Άδειας, όταν το Αδειοδοτημένο
+ Υλικό είναι ένα μουσικό έργο, εκτέλεση ή ηχογράφηση,
+ Υλικό Προσαρμογής παράγεται πάντα όπου το Αδειοδοτημένο Υλικό
+ συγχρονίζεται σε χρονική σχέση με κινούμενη εικόνα.
-συμπεριλαμβανομένου για τους σκοπούς του Τμήματος 3(β)· και
-γ. Πρέπει να συμμορφώνεστε με τις προϋποθέσεις του Τμήματος 3(α) εάν κοινοποιείτε όλα ή ένα σημαντικό μέρος των περιεχομένων της βάσης δεδομένων.
-Για αποφυγή αμφιβολιών, αυτό το Τμήμα 4 συμπληρώνει και δεν αντικαθιστά τις υποχρεώσεις σας βάσει αυτής της Δημόσιας Άδειας όπου τα Αδειοδοτημένα Δικαιώματα περιλαμβάνουν άλλα Δικαιώματα Πνευματικής Ιδιοκτησίας και Παρόμοια Δικαιώματα.
+ και Παρόμοια Δικαιώματα στα δικά σας συνεισφέροντα μέρη στο Υλικό Προσαρμογής
+ σύμφωνα με τους όρους και τις προϋποθέσεις αυτής της Δημόσιας Άδειας.
----
-Τμήμα 5 -- Αποποίηση Εγγυήσεων και Περιορισμός Ευθύνης.
+ creativecommons.org/compatiblelicenses, εγκεκριμένη από την Creative
+ Commons ως ουσιαστικά ισοδύναμη με αυτήν τη Δημόσια Άδεια.
-α. ΕΚΤΟΣ ΕΑΝ Ο ΛΟΓΟΘΕΤΗΣ ΕΧΕΙ ΑΝΑΛΑΒΕΙ ΞΕΧΩΡΙΣΤΑ, ΣΤΟ ΜΕΤΡΟ ΤΟΥ ΔΥΝΑΤΟΥ, Ο ΛΟΓΟΘΕΤΗΣ ΠΡΟΣΦΕΡΕΙ ΤΟ ΑΔΕΙΟΔΟΤΗΜΕΝΟ ΥΛΙΚΟ ΩΣ ΕΧΕΙ ΚΑΙ ΩΣ ΔΙΑΘΕΣΙΜΟ, ΚΑΙ ΔΕΝ ΠΑΡΕΧΕΙ ΚΑΜΙΑ ΔΗΛΩΣΗ Ή ΕΓΓΥΗΣΗ ΟΠΟΙΟΥΔΗΠΟΤΕ ΕΙΔΟΥΣ ΣΧΕΤΙΚΑ ΜΕ ΤΟ ΑΔΕΙΟΔΟΤΗΜΕΝΟ ΥΛΙΚΟ, ΕΙΤΕ ΡΗΤΗ, ΕΙΤΕ ΣΙΩΠΗΡΗ, ΕΙΤΕ ΝΟΜΟΘΕΤΙΚΗ, ΕΙΤΕ ΑΛΛΗ. ΑΥΤΟ ΠΕΡΙΛΑΜΒΑΝΕΙ, ΧΩΡΙΣ ΠΕΡΙΟΡΙΣΜΟ, ΕΓΓΥΗΣΕΙΣ ΤΙΤΛΟΥ, ΕΜΠΟΡΕΥΣΙΜΟΤΗΤΑΣ, ΚΑΤΑΛΛΗΛΟΤΗΤΑΣ ΓΙΑ ΣΥΓΚΕΚΡΙΜΕΝΟ ΣΚΟΠΟ, ΜΗ ΠΑΡΑΒΙΑΣΗΣ, ΑΠΟΥΣΙΑΣ ΛΑΝΘΑΝΟΥΣΩΝ Ή ΑΛΛΩΝ ΕΛΑΤΤΩΜΑΤΩΝ, ΑΚΡΙΒΕΙΑΣ Ή ΠΑΡΟΥΣΙΑΣ Ή ΑΠΟΥΣΙΑΣ ΣΦΑΛΜΑΤΩΝ, ΕΙΤΕ ΕΙΝΑΙ ΓΝΩΣΤΑ ΕΙΤΕ ΑΝΑΚΑΛΥΨΙΜΑ. ΟΠΟΥ Η ΑΠΟΠΟΙΗΣΗ ΕΓΓΥΗΣΕΩΝ ΔΕΝ ΕΠΙΤΡΕΠΕΤΑΙ ΕΝ ΜΕΡΕΙ Ή ΕΝ ΟΛΩ, ΑΥΤΗ Η ΑΠΟΠΟΙΗΣΗ ΕΝΔΕΧΕΤΑΙ ΝΑ ΜΗΝ ΙΣΧΥΕΙ ΓΙΑ ΕΣΑΣ.
-β. ΣΤΟ ΜΕΤΡΟ ΤΟΥ ΔΥΝΑΤΟΥ, ΣΕ ΚΑΜΙΑ ΠΕΡΙΠΤΩΣΗ Ο ΛΟΓΟΘΕΤΗΣ ΔΕΝ ΘΑ ΕΙΝΑΙ ΥΠΕΥΘΥΝΟΣ ΠΡΟΣ ΕΣΑΣ ΒΑΣΕΙ ΟΠΟΙΑΣΔΗΠΟΤΕ ΝΟΜΙΚΗΣ ΘΕΩΡΙΑΣ (ΣΥΜΠΕΡΙΛΑΜΒΑΝΟΜΕΝΗΣ, ΧΩΡΙΣ ΠΕΡΙΟΡΙΣΜΟ, ΑΜΕΛΕΙΑΣ) Ή ΑΛΛΩΣ ΓΙΑ ΟΠΟΙΕΣΔΗΠΟΤΕ ΑΜΕΣΕΣ, ΕΙΔΙΚΕΣ, ΕΜΜΕΣΕΣ, ΣΥΜΠΤΩΜΑΤΙΚΕΣ, ΣΥΝΕΠΑΓΟΜΕΝΕΣ, ΠΟΙΝΙΚΕΣ, ΠΑΡΑΔΕΙΓΜΑΤΙΚΕΣ Ή ΑΛΛΕΣ ΖΗΜΙΕΣ, ΚΟΣΤΗ, ΕΞΟΔΑ Ή ΑΠΩΛΕΙΕΣ ΠΟΥ ΠΡΟΚΥΠΤΟΥΝ ΑΠΟ ΑΥΤΗ ΤΗ ΔΗΜΟΣΙΑ ΑΔΕΙΑ Ή ΤΗ ΧΡΗΣΗ ΤΟΥ ΑΔΕΙΟΔΟΤΗΜΕΝΟΥ ΥΛΙΚΟΥ, ΑΚΟΜΑ ΚΑΙ ΑΝ Ο ΛΟΓΟΘΕΤΗΣ ΕΧΕΙ ΕΝΗΜΕΡΩΘΕΙ ΓΙΑ ΤΗΝ ΠΙΘΑΝΟΤΗΤΑ ΤΕΤΟΙΩΝ ΑΠΩΛΕΙΩΝ, ΚΟΣΤΩΝ, ΕΞΟΔΩΝ Ή ΖΗΜΙΩΝ. ΟΠΟΥ Ο ΠΕΡΙΟΡΙΣΜΟΣ ΕΥΘΥΝΗΣ ΔΕΝ ΕΠΙΤΡΕΠΕΤΑΙ ΕΝ ΜΕΡΕΙ Ή ΕΝ ΟΛΩ, ΑΥΤΟΣ Ο ΠΕΡΙΟΡΙΣΜΟΣ ΕΝΔΕΧΕΤΑΙ ΝΑ ΜΗΝ ΙΣΧΥΕΙ ΓΙΑ ΕΣΑΣ.
+ δ. Πνευματικά και Παρόμοια Δικαιώματα σημαίνει πνευματικά δικαιώματα και/ή παρόμοια δικαιώματα
+ στενά συνδεδεμένα με τα πνευματικά δικαιώματα, συμπεριλαμβανομένων, χωρίς περιορισμό,
+ εκτέλεση, μετάδοση, ηχογράφηση και δικαιώματα βάσεων δεδομένων sui generis,
+ ανεξαρτήτως του πώς τα δικαιώματα αυτού του είδους ονομάζονται ή
+ κατηγοριοποιούνται. Για τους σκοπούς αυτής της Δημόσιας Άδειας, τα δικαιώματα
+ που καθορίζονται στην Ενότητα 2(β)(1)-(2) δεν αποτελούν Πνευματικά και Παρόμοια
+ Δικαιώματα.
-γ. Η αποποίηση εγγυήσεων και ο περιορισμός ευθύνης που παρέχονται παραπάνω θα ερμηνεύονται κατά τρόπο που, στο μέτρο του δυνατού, προσεγγίζει περισσότερο μια απόλυτη αποποίηση και παραίτηση από κάθε ευθύνη.
+ ε. Αποτελεσματικά Τεχνολογικά Μέτρα σημαίνει εκείνα τα μέτρα που,
+ χωρίς κατάλληλη εξουσιοδότηση, δεν μπορούν να παρακαμφθούν σύμφωνα με νόμους
+ που εκπληρώνουν υποχρεώσεις βάσει του Άρθρου 11 της Συνθήκης Πνευματικής
+ Ιδιοκτησίας του WIPO που υιοθετήθηκε στις 20 Δεκεμβρίου 1996, και/ή παρόμοιες διεθνείς
+ συμφωνίες.
----
+ στ. Εξαιρέσεις και Περιορισμοί σημαίνει εύλογη χρήση, δίκαιη συμπεριφορά, και/ή
+ οποιαδήποτε άλλη εξαίρεση ή περιορισμό στα Πνευματικά και Παρόμοια Δικαιώματα
+ που εφαρμόζεται στη χρήση από εσάς του Αδειοδοτημένου Υλικού.
-Τμήμα 6 -- Διάρκεια και Λήξη.
+ ζ. Στοιχεία της Άδειας σημαίνει τις ιδιότητες της άδειας που αναφέρονται στο όνομα
+ μιας Δημόσιας Άδειας Creative Commons. Τα Στοιχεία της Άδειας αυτής της
+ Δημόσιας Άδειας είναι απόδοση και παρόμοια διανομή.
-α. Αυτή η Δημόσια Άδεια ισχύει για τη διάρκεια των Δικαιωμάτων Πνευματικής Ιδιοκτησίας και Παρόμοιων Δικαιωμάτων που αδειοδοτούνται εδώ. Ωστόσο, εάν δεν συμμορφώνεστε με αυτή τη Δημόσια Άδεια, τότε τα δικαιώματά σας βάσει αυτής της Δημόσιας Άδειας τερματίζονται αυτόματα.
+ η. Αδειοδοτημένο Υλικό σημαίνει το καλλιτεχνικό ή λογοτεχνικό έργο, βάση δεδομένων,
+ ή άλλο υλικό στο οποίο ο Αδειοδότης έχει εφαρμόσει αυτή τη Δημόσια
+ Άδεια.
-β. Όπου το δικαίωμά σας να χρησιμοποιείτε το Αδειοδοτημένο Υλικό έχει τερματιστεί βάσει του Τμήματος 6(α), επανέρχεται:
+ θ. Αδειοδοτημένα Δικαιώματα σημαίνει τα δικαιώματα που σας παραχωρούνται υπό τους
+ όρους και προϋποθέσεις αυτής της Δημόσιας Άδειας, τα οποία περιορίζονται σε
+ όλα τα Πνευματικά και Παρόμοια Δικαιώματα που ισχύουν για τη χρήση σας του
+ Αδειοδοτημένου Υλικού και για τα οποία ο Αδειοδότης έχει την εξουσία να αδειοδοτήσει.
-1. αυτόματα από την ημερομηνία που διορθώνεται η παραβίαση, υπό την προϋπόθεση ότι διορθώνεται εντός 30 ημερών από την ανακάλυψη της παραβίασης· ή
-2. με ρητή επανενεργοποίηση από τον Λογοθέτη.
+ ι. Αδειοδότης σημαίνει το ή τα άτομα ή οντότητες που παραχωρούν δικαιώματα
+ βάσει αυτής της Δημόσιας Άδειας.
-Για αποφυγή αμφιβολιών, αυτό το Τμήμα 6(β) δεν επηρεάζει οποιοδήποτε δικαίωμα που μπορεί να έχει ο Λογοθέτης να επιδιώξει ένδικα μέσα για τις παραβιάσεις σας αυτής της Δημόσιας Άδειας.
+ κ. Διανέμω σημαίνει να παρέχετε υλικό στο κοινό με οποιοδήποτε μέσο ή
+ διαδικασία που απαιτεί άδεια βάσει των Αδειοδοτημένων Δικαιωμάτων, όπως
+ αναπαραγωγή, δημόσια προβολή, δημόσια εκτέλεση, διανομή,
+ διάδοση, επικοινωνία ή εισαγωγή, και να κάνετε το υλικό
+ διαθέσιμο στο κοινό συμπεριλαμβανομένων τρόπων που τα μέλη του
+ κοινού μπορούν να έχουν πρόσβαση στο υλικό από τόπο και ώρα
+ της ατομικής τους επιλογής.
-γ. Για αποφυγή αμφιβολιών, ο Λογοθέτης μπορεί επίσης να προσφέρει το Αδειοδοτημένο Υλικό υπό ξεχωριστούς όρους ή προϋποθέσεις ή να σταματήσει να διανέμει το Αδειοδοτημένο Υλικό οποιαδήποτε στιγμή· ωστόσο, αυτό δεν θα τερματίσει αυτή τη Δημόσια Άδεια.
+ λ. Δικαιώματα Βάσης Δεδομένων sui generis σημαίνει δικαιώματα εκτός πνευματικών
+ δικαιωμάτων που προκύπτουν από την Οδηγία 96/9/ΕΚ του Ευρωπαϊκού Κοινοβουλίου και
+ του Συμβουλίου της 11ης Μαρτίου 1996 για την νομική προστασία των βάσεων δεδομένων,
+ όπως έχει τροποποιηθεί και/ή διαδεχθεί, καθώς και άλλα ουσιαστικά
+ ισοδύναμα δικαιώματα οπουδήποτε στον κόσμο.
-δ. Τα Τμήματα 1, 5, 6, 7 και 8 παραμένουν σε ισχύ μετά τη λήξη αυτής της Δημόσιας Άδειας.
+ μ. Εσείς σημαίνει το άτομο ή την οντότητα που ασκεί τα Αδειοδοτημένα Δικαιώματα
+ υπό αυτή τη Δημόσια Άδεια. Το δικό σας έχει αντίστοιχο νόημα.
----
-Τμήμα 7 -- Άλλοι Όροι και Προϋποθέσεις.
+Ενότητα 2 -- Πεδίο εφαρμογής.
-α. Ο Λογοθέτης δεν δεσμεύεται από οποιουσδήποτε πρόσθετους ή διαφορετικούς όρους ή προϋποθέσεις που επικοινωνούνται από εσάς, εκτός εάν συμφωνηθούν ρητά.
-β. Οποιαδήποτε διευθέτηση, κατανόηση ή συμφωνία σχετικά με το Αδειοδοτημένο Υλικό που δεν αναφέρεται εδώ είναι ξεχωριστή και ανεξάρτητη από τους όρους και τις προϋποθέσεις αυτής της Δημόσιας Άδειας.
+ α. Χορήγηση άδειας.
----
+ 1. Υπό τους όρους και προϋποθέσεις αυτής της Δημόσιας Άδειας,
+ ο Χορηγητής αδειών σας παραχωρεί παγκοσμίως, χωρίς δικαιώματα,
+ μη υποαδειοδοτούμενη, μη αποκλειστική, αμετάκλητη άδεια για να
+ ασκήσετε τα Αδειοδοτημένα Δικαιώματα στο Αδειοδοτημένο Υλικό για:
-Τμήμα 8 -- Ερμηνεία.
+ α. την αναπαραγωγή και Κοινοποίηση του Αδειοδοτημένου Υλικού, ολόκληρου ή
+ μέρους· και
-α. Για αποφυγή αμφιβολιών, αυτή η Δημόσια Άδεια δεν μειώνει, περιορίζει, περιορίζει ή επιβάλλει προϋποθέσεις σε οποιαδήποτε χρήση του Αδειοδοτημένου Υλικού που θα μπορούσε νόμιμα να γίνει χωρίς άδεια βάσει αυτής της Δημόσιας Άδειας.
+ β. την παραγωγή, αναπαραγωγή και Κοινοποίηση Προσαρμοσμένου Υλικού.
-β. Στο μέτρο του δυνατού, εάν οποιαδήποτε διάταξη αυτής της Δημόσιας Άδειας θεωρηθεί ανεφάρμοστη, θα αναμορφωθεί αυτόματα στο ελάχιστο απαραίτητο για να καταστεί εφαρμόσιμη. Εάν η διάταξη δεν μπορεί να αναμορφωθεί, θα αποκοπεί από αυτή τη Δημόσια Άδεια χωρίς να επηρεαστεί η εφαρμοσιμότητα των υπόλοιπων όρων και προϋποθέσεων.
+ 2. Εξαιρέσεις και Περιορισμοί. Για την αποφυγή αμφιβολιών, όπου
+ οι Εξαιρέσεις και οι Περιορισμοί ισχύουν για τη χρήση σας, αυτή η Δημόσια
+ Άδεια δεν ισχύει, και δεν χρειάζεται να συμμορφωθείτε με
+ τους όρους και τις προϋποθέσεις της.
-γ. Κανένας όρος ή προϋπόθεση αυτής της Δημόσιας Άδειας δεν θα παραιτηθεί και καμία αποτυχία συμμόρφωσης δεν θα θεωρηθεί ότι έχει γίνει αποδεκτή, εκτός εάν συμφωνηθεί ρητά από τον Λογοθέτη.
+ 3. Διάρκεια. Η διάρκεια αυτής της Δημόσιας Άδειας ορίζεται στο Τμήμα
+ 6(α).
-δ. Τίποτα σε αυτή τη Δημόσια Άδεια δεν συνιστά ή μπορεί να ερμηνευθεί ως περιορισμός ή παραίτηση από οποιαδήποτε προνόμια και ασυλίες που ισχύουν για τον Λογοθέτη ή εσάς, συμπεριλαμβανομένων των νομικών διαδικασιών οποιασδήποτε δικαιοδοσίας ή αρχής.
+ 4. Μέσα και μορφές· επιτρέπονται τεχνικές τροποποιήσεις. Ο
+ Χορηγητής αδειών σας εξουσιοδοτεί να ασκήσετε τα Αδειοδοτημένα Δικαιώματα σε
+ όλα τα μέσα και μορφές, είτε είναι γνωστά τώρα είτε δημιουργηθούν στο μέλλον,
+ και να κάνετε τις αναγκαίες τεχνικές τροποποιήσεις για να το κάνετε. Ο
+ Χορηγητής αδειών παραιτείται και/ή συμφωνεί να μην ασκήσει κανένα δικαίωμα ή
+ εξουσία να σας απαγορεύσει να κάνετε τεχνικές τροποποιήσεις
+ απαραίτητες για την άσκηση των Αδειοδοτημένων Δικαιωμάτων, συμπεριλαμβανομένων
+ των τεχνικών τροποποιήσεων που απαιτούνται για την παράκαμψη των Αποτελεσματικών
+ Τεχνολογικών Μέτρων. Για τους σκοπούς αυτής της Δημόσιας Άδειας,
+ απλά η δημιουργία τροποποιήσεων εξουσιοδοτημένων από αυτό το Τμήμα 2(α)
+ (4) δεν παράγει ποτέ Προσαρμοσμένο Υλικό.
----
+ 5. Παραλήπτες κατάντη.
-=======================================================================
+ α. Προσφορά από τον Χορηγητή αδειών -- Αδειοδοτημένο Υλικό. Κάθε
+ παραλήπτης του Αδειοδοτημένου Υλικού λαμβάνει αυτόματα
+ μια προσφορά από τον Χορηγητή αδειών να ασκήσει τα
+ Αδειοδοτημένα Δικαιώματα υπό τους όρους και τις προϋποθέσεις αυτής της
+ Δημόσιας Άδειας.
+
+ β. Πρόσθετη προσφορά από τον Χορηγητή αδειών -- Προσαρμοσμένο Υλικό.
+ Κάθε παραλήπτης Προσαρμοσμένου Υλικού από εσάς
+ λαμβάνει αυτόματα μια προσφορά από τον Χορηγητή αδειών να
+ ασκήσει τα Αδειοδοτημένα Δικαιώματα στο Προσαρμοσμένο Υλικό
+ υπό τους όρους της Άδειας του Διαμορφωτή που εφαρμόζετε.
+
+ γ. Καμία περιοριστική ρύθμιση κατάντη. Δεν επιτρέπεται να προσφέρετε ή επιβάλλετε
+ πρόσθετους ή διαφορετικούς όρους ή προϋποθέσεις, ή
+ να εφαρμόζετε οποιαδήποτε Αποτελεσματικά Τεχνολογικά Μέτρα στο
+ Αδειοδοτημένο Υλικό αν αυτό περιορίζει την άσκηση των
+ Αδειοδοτημένων Δικαιωμάτων από οποιονδήποτε παραλήπτη του
+ Αδειοδοτημένου Υλικού.
+
+ 6. Καμία έγκριση. Τίποτα σε αυτή τη Δημόσια Άδεια δεν αποτελεί ή
+ μπορεί να ερμηνευτεί ως άδεια να υποστηρίξετε ή να υπονοήσετε ότι
+ είστε, ή ότι η χρήση σας του Αδειοδοτημένου Υλικού είναι, συνδεδεμένη
+ με, ή χορηγείται επίσημος χαρακτήρας, επιδοτείται ή εγκρίνεται από,
+ τον Χορηγητή αδειών ή άλλους που έχουν οριστεί να λαμβάνουν απόδοση όπως
+ παρέχεται στο Τμήμα 3(α)(1)(Α)(i).
+
+ β. Άλλα δικαιώματα.
+
+ 1. Τα ηθικά δικαιώματα, όπως το δικαίωμα ακεραιότητας, δεν
+ αδειοδοτούνται με αυτή τη Δημόσια Άδεια, ούτε τα δικαιώματα δημοσιότητας,
+ ιδιωτικότητας και/ή άλλα παρόμοια προσωπικά δικαιώματα· παρόλα αυτά, στο
+ μέτρο του δυνατού, ο Χορηγητής αδειών παραιτείται και/ή συμφωνεί να μην
+ ασκήσει τέτοια δικαιώματα που κατέχει ο Χορηγητής αδειών στο περιορισμένο
+ μέτρο που είναι απαραίτητο για να σας επιτρέψει να ασκήσετε τα Αδειοδοτημένα
+ Δικαιώματα, αλλά όχι αλλιώς.
+
+ 2. Τα πατέντες και δικαιώματα εμπορικού σήματος δεν αδειοδοτούνται με αυτή τη
+ Δημόσια Άδεια.
+
+ 3. Στο μέτρο του δυνατού, ο Χορηγητής αδειών παραιτείται από οποιοδήποτε δικαίωμα
+ να συλλέξει δικαιώματα από εσάς για την άσκηση των Αδειοδοτημένων
+ Δικαιωμάτων, είτε άμεσα είτε μέσω συλλογικού οργανισμού
+ υπό οποιοδήποτε εθελοντικό ή παραχωρήσιμο νομοθετικό ή υποχρεωτικό
+ σύστημα αδειοδότησης. Σε όλες τις άλλες περιπτώσεις ο Χορηγητής ρητώς
+ διατηρεί οποιοδήποτε δικαίωμα να συλλέγεται τέτοια δικαιώματα.
+
+
+Τμήμα 3 -- Όροι Άδειας.
+
+Η άσκηση των Αδειοδοτημένων Δικαιωμάτων υπόκειται ρητά στους
+ακόλουθους όρους.
+
+ α. Απόδοση.
+
+ 1. Εάν Κοινοποιήσετε το Αδειοδοτημένο Υλικό (συμπεριλαμβανομένης τροποποιημένης
+ μορφής), πρέπει:
+
+ α. να διατηρήσετε τα ακόλουθα εάν παρέχονται από τον Χορηγητή αδειών
+ μαζί με το Αδειοδοτημένο Υλικό:
+
+ i. την ταυτότητα του δημιουργού/των δημιουργών του Αδειοδοτημένου
+ Υλικού και οποιωνδήποτε άλλων ορισμένων για την απόδοση,
+ με οποιονδήποτε εύλογο τρόπο που ζητεί ο Χορηγητής αδειών
+ (συμπεριλαμβανομένου ψευδωνύμου αν
+ ορίζεται)·
+
+ ii. μια ανακοίνωση πνευματικών δικαιωμάτων·
+
+ iii. μια ανακοίνωση που αναφέρεται σε αυτή τη Δημόσια Άδεια·
+
+ iv. μια ανακοίνωση που αναφέρεται στην αποποίηση των
+ εγγυήσεων·
+
+ v. ένα URI ή σύνδεσμο στο Αδειοδοτημένο Υλικό στο
+ μέτρο που είναι εύλογα πρακτικό·
+
+ β. να υποδείξετε εάν τροποποιήσατε το Αδειοδοτημένο Υλικό και
+ να διατηρήσετε ένδειξη οποιωνδήποτε προηγούμενων τροποποιήσεων· και
+
+ γ. να υποδείξετε ότι το Αδειοδοτημένο Υλικό έχει αδειοδοτηθεί υπό αυτή
+ τη Δημόσια Άδεια, και να συμπεριλάβετε το κείμενο, το URI ή
+ τον σύνδεσμο σε αυτή τη Δημόσια Άδεια.
+
+ 2. Μπορείτε να εκπληρώσετε τις προϋποθέσεις του Τμήματος 3(α)(1) με οποιονδήποτε
+ εύλογο τρόπο βασισμένο στο μέσο, τα μέσα και το πλαίσιο στα οποία
+ Κοινοποιείτε το Αδειοδοτημένο Υλικό. Για παράδειγμα, μπορεί να είναι
+ εύλογο να εκπληρώσετε τις προϋποθέσεις παρέχοντας ένα URI ή
+ σύνδεσμο προς μια πηγή που περιλαμβάνει τις απαιτούμενες
+ πληροφορίες.
+
+ 3. Εάν ζητηθεί από τον Χορηγητή αδειών, πρέπει να αφαιρέσετε οποιαδήποτε από τις
+ πληροφορίες που απαιτούνται από το Τμήμα 3(α)(1)(Α) στο μέτρο που είναι
+ εύλογα πρακτικό.
+
+ β. ShareAlike.
+
+ Επιπλέον των όρων του Τμήματος 3(α), εάν Κοινοποιήσετε
+ Προσαρμοσμένο Υλικό που παράγετε, ισχύουν επίσης οι ακόλουθοι όροι.
+
+ 1. Η Άδεια του Διαμορφωτή που εφαρμόζετε πρέπει να είναι άδεια Creative Commons
+ με τα ίδια Στοιχεία Άδειας, αυτή ή μεταγενέστερη έκδοση,
+ ή μια Άδεια Συμβατή με BY-SA.
+
+ 2. Πρέπει να περιλάβετε το κείμενο, το URI ή τον σύνδεσμο στην
+ Άδεια του Διαμορφωτή που εφαρμόζετε. Μπορείτε να εκπληρώσετε αυτόν τον όρο
+ με οποιονδήποτε εύλογο τρόπο βασισμένο στο μέσο, τα μέσα και
+ το πλαίσιο στα οποία Κοινοποιείτε το Προσαρμοσμένο Υλικό.
+
+ 3. Δεν μπορείτε να προσφέρετε ή επιβάλλετε οποιουςδήποτε επιπλέον ή διαφορετικούς
+ όρους ή προϋποθέσεις, ή να εφαρμόζετε Αποτελεσματικά Τεχνολογικά
+ Μέτρα στο Προσαρμοσμένο Υλικό που περιορίζουν την άσκηση των
+ δικαιωμάτων που παραχωρούνται με την Άδεια του Διαμορφωτή που εφαρμόζετε.
+
+
+Τμήμα 4 -- Δικαιώματα Βάσης Δεδομένων Sui Generis.
-Το Creative Commons δεν αποτελεί μέρος των δημόσιων αδειών του. Παρ' όλα αυτά, το Creative Commons μπορεί να επιλέξει να εφαρμόσει μία από τις δημόσιες άδειές του σε υλικό που δημοσιεύει και σε αυτές τις περιπτώσεις θα θεωρείται ο "Λογοθέτης". Το κείμενο των δημόσιων αδειών του Creative Commons είναι αφιερωμένο στο δημόσιο τομέα βάσει της CC0 Public Domain Dedication. Εκτός από τον περιορισμένο σκοπό της ένδειξης ότι το υλικό κοινοποιείται βάσει δημόσιας άδειας Creative Commons ή όπως επιτρέπεται από τις πολιτικές του Creative Commons που δημοσιεύονται στο creativecommons.org/policies, το Creative Commons δεν εξουσιοδοτεί τη χρήση του εμπορικού σήματος "Creative Commons" ή οποιουδήποτε άλλου εμπορικού σήματος ή λογότυπου του Creative Commons χωρίς την προηγούμενη γραπτή συγκατάθεσή του, συμπεριλαμβανομένων, χωρίς περιορισμό, σε σχέση με οποιεσδήποτε μη εξουσιοδοτημένες τροποποιήσεις σε οποιαδήποτε από τις δημόσιες άδειές του ή οποιεσδήποτε άλλες διευθετήσεις, κατανοήσεις ή συμφωνίες σχετικά με τη χρήση αδειοδοτημένου υλικού. Για αποφυγή αμφιβολιών, αυτή η παράγραφος δεν αποτελεί μέρος των δημόσιων αδειών.
+Όπου τα Αδειοδοτημένα Δικαιώματα περιλαμβάνουν Δικαιώματα Βάσης Δεδομένων Sui Generis που
+ισχύουν για τη χρήση σας του Αδειοδοτημένου Υλικού:
+
+ α. για την αποφυγή αμφιβολιών, το Τμήμα 2(α)(1) σας παραχωρεί το δικαίωμα
+ να εξάγετε, επαναχρησιμοποιείτε, αναπαράγετε και Κοινοποιείτε όλο ή σημαντικό
+ τμήμα των περιεχομένων της βάσης δεδομένων·
+
+ β. εάν συμπεριλάβετε όλο ή σημαντικό τμήμα των περιεχομένων της βάσης δεδομένων
+ σε βάση δεδομένων στην οποία κατέχετε Δικαιώματα Βάσης Δεδομένων
+ Sui Generis, τότε η βάση δεδομένων στην οποία κατέχετε Δικαιώματα Βάσης Δεδομένων
+ Sui Generis (αλλά όχι τα μεμονωμένα της περιεχόμενα) αποτελεί Προσαρμοσμένο Υλικό,
+
+ συμπεριλαμβανομένων για σκοπούς του Τμήματος 3(β)· και
+
+ γ. Πρέπει να συμμορφώνεστε με τις προϋποθέσεις στην Ενότητα 3(α) εάν Μοιράζεστε
+ ολόκληρο ή σημαντικό μέρος του περιεχομένου της βάσης δεδομένων.
+
+Για αποφυγή αμφιβολιών, αυτή η Ενότητα 4 συμπληρώνει και δεν
+αντικαθιστά τις υποχρεώσεις σας βάσει αυτής της Δημόσιας Άδειας όπου τα Αδειοδοτημένα
+Δικαιώματα περιλαμβάνουν άλλα Δικαιώματα Πνευματικής Ιδιοκτησίας και Παρόμοια Δικαιώματα.
+
+
+Ενότητα 5 -- Αποποίηση Εγγυήσεων και Περιορισμός Ευθύνης.
+
+ α. ΕΚΤΟΣ ΑΝ ΑΛΛΙΩΣ ΔΙΑΚΑΝΟΝΙΣΤΕΙ ΞΕΧΩΡΙΣΤΑ ΑΠΟ ΤΟΝ ΑΔΕΙΟΔΟΤΗ, ΣΤΟ
+ ΒΑΘΜΟ ΠΟΥ ΕΙΝΑΙ ΔΥΝΑΤΟ, Ο ΑΔΕΙΟΔΟΤΗΣ ΠΑΡΕΧΕΙ ΤΟ ΑΔΕΙΟΔΟΤΗΜΕΝΟ ΥΛΙΚΟ ΩΣ ΕΧΕΙ
+ ΚΑΙ ΟΠΩΣ ΕΙΝΑΙ ΔΙΑΘΕΣΙΜΟ, ΚΑΙ ΔΕΝ ΠΑΡΕΧΕΙ ΚΑΜΙΑ ΔΗΛΩΣΗ Ή ΕΓΓΥΗΣΕΙΣ
+ ΟΠΟΙΟΥΔΗΠΟΤΕ ΕΙΔΟΥΣ ΣΧΕΤΙΚΑ ΜΕ ΤΟ ΑΔΕΙΟΔΟΤΗΜΕΝΟ ΥΛΙΚΟ, ΕΙΤΕ ΕΙΝΑΙ ΡΗΤΕΣ,
+ ΣΥΝΕΙΔΗΤΕΣ, ΝΟΜΙΚΕΣ Ή ΑΛΛΕΣ. ΑΥΤΟ ΠΕΡΙΛΑΜΒΑΝΕΙ, ΜΕΤΑΞΥ ΑΛΛΩΝ,
+ ΕΓΓΥΗΣΕΙΣ ΤΙΤΛΟΥ, ΕΜΠΟΡΙΚΗΣ ΙΚΑΝΟΤΗΤΑΣ, ΚΑΤΑΛΛΗΛΟΤΗΤΑΣ ΓΙΑ ΣΥΓΚΕΚΡΙΜΕΝΟ
+ ΣΚΟΠΟ, ΜΗ ΠΑΡΑΒΙΑΣΗ, ΑΠΟΥΣΙΑ ΛΑΘΩΝ Ή ΑΛΛΩΝ ΕΛΑΤΤΩΜΑΤΩΝ,
+ ΑΚΡΙΒΕΙΑΣ, Ή ΤΗΣ ΥΠΑΡΞΗΣ Ή ΜΗ ΛΑΘΩΝ, ΕΙΤΕ ΑΥΤΑ ΕΙΝΑΙ
+ ΓΝΩΣΤΑ Ή ΑΝΙΧΝΕΥΣΙΜΑ. ΟΤΑΝ ΑΠΟΠΟΙΗΣΕΙΣ ΕΓΓΥΗΣΕΩΝ ΔΕΝ ΕΠΙΤΡΕΠΟΝΤΑΙ
+ ΟΛΟΚΛΗΡΩΤΙΚΑ Ή ΜΕΡΟΣΙΚΑ, ΑΥΤΗ Η ΑΠΟΠΟΙΗΣΗ ΕΝΔΕΧΕΤΑΙ ΝΑ ΜΗΝ ΙΣΧΥΕΙ ΓΙΑ ΕΣΑΣ.
+
+ β. ΣΤΟ ΒΑΘΜΟ ΠΟΥ ΕΙΝΑΙ ΔΥΝΑΤΟ, Ο ΑΔΕΙΟΔΟΤΗΣ ΔΕΝ ΘΑ ΕΙΝΑΙ ΥΠΕΥΘΥΝΟΣ
+ ΣΕ ΣΑΣ ΜΕ ΒΑΣΗ ΟΠΟΙΑΔΗΠΟΤΕ ΝΟΜΙΚΗ ΘΕΩΡΙΑ (ΣΥΜΠΕΡΙΛΑΜΒΑΝΟΜΕΝΗΣ, ΧΩΡΙΣ ΠΕΡΙΟΡΙΣΜΟ,
+ ΤΗΣ ΑΜΕΛΕΙΑΣ) Ή ΑΛΛΙΩΣ ΓΙΑ ΟΠΟΙΑΔΗΠΟΤΕ ΑΜΕΣΗ, ΕΙΔΙΚΗ, ΕΜΜΕΣΗ,
+ ΠΕΡΙΠΤΩΤΙΚΗ, ΣΥΝΕΠΕΙΑΚΗ, ΕΚΔΙΚΗΤΙΚΗ, ΠΑΡΑΔΕΙΓΜΑΤΙΚΗ Ή ΑΛΛΕΣ ΖΗΜΙΕΣ,
+ ΚΟΣΤΗ, ΕΞΟΔΑ Ή ΖΗΜΙΕΣ ΠΟΥ ΠΡΟΚΥΠΤΟΥΝ ΑΠΟ ΑΥΤΗ ΤΗΝ ΔΗΜΟΣΙΑ ΑΔΕΙΑ Ή
+ ΧΡΗΣΗ ΤΟΥ ΑΔΕΙΟΔΟΤΗΜΕΝΟΥ ΥΛΙΚΟΥ, ΑΚΟΜΑ ΚΑΙ ΑΝ Ο ΑΔΕΙΟΔΟΤΗΣ ΕΧΕΙ
+ ΕΙΔΟΠΟΙΗΘΕΙ ΓΙΑ ΤΗ ΔΥΝΑΤΟΤΗΤΑ ΑΥΤΩΝ ΤΩΝ ΖΗΜΙΩΝ, ΚΟΣΤΩΝ, ΕΞΟΔΩΝ Ή
+ ΖΗΜΙΩΝ. ΟΤΑΝ ΕΝΑ ΟΡΙΣΜΕΝΟ ΟΡΙΟ ΕΥΘΥΝΗΣ ΔΕΝ ΕΠΙΤΡΕΠΕΤΑΙ ΟΛΟΚΛΗΡΩΤΙΚΑ Ή
+ ΜΕΡΙΚΑ, ΑΥΤΟΣ Ο ΠΕΡΙΟΡΙΣΜΟΣ ΕΝΔΕΧΕΤΑΙ ΝΑ ΜΗΝ ΙΣΧΥΕΙ ΓΙΑ ΕΣΑΣ.
+
+ γ. Η αποποίηση εγγυήσεων και ο περιορισμός ευθύνης που παρέχονται
+ παραπάνω θα ερμηνεύονται με τέτοιο τρόπο που, στο μέτρο του
+ δυνατού, προσεγγίζει όσο το δυνατόν πιο στενά μια απόλυτη αποποίηση και
+ παραίτηση από κάθε ευθύνη.
+
+
+Ενότητα 6 -- Διάρκεια και Λήξη.
+
+ α. Αυτή η Δημόσια Άδεια ισχύει για τη διάρκεια των Δικαιωμάτων Πνευματικής Ιδιοκτησίας και
+ Παρόμοιων Δικαιωμάτων που αδειοδοτούνται εδώ. Ωστόσο, αν δεν συμμορφωθείτε με
+ αυτή τη Δημόσια Άδεια, τότε τα δικαιώματά σας βάσει αυτής της Δημόσιας Άδειας
+ παύουν αυτόματα.
+
+ β. Όταν το δικαίωμά σας να χρησιμοποιείτε το Αδειοδοτημένο Υλικό έχει λήξει βάσει
+ της Ενότητας 6(α), αυτό επανέρχεται:
+
+ 1. αυτόματα από την ημερομηνία που διορθώνεται η παράβαση, υπό την προϋπόθεση
+ ότι διορθώνεται εντός 30 ημερών από την ανακάλυψη της
+ παράβασης· ή
+
+ 2. κατόπιν ρητής επανόρθωσης από τον Αδειοδότη.
+
+ Για αποφυγή αμφιβολιών, αυτή η Ενότητα 6(β) δεν επηρεάζει οποιοδήποτε
+ δικαίωμα μπορεί να έχει ο Αδειοδότης να αναζητήσει αποζημιώσεις για τις παραβιάσεις σας
+ αυτής της Δημόσιας Άδειας.
+
+ γ. Για αποφυγή αμφιβολιών, ο Αδειοδότης μπορεί επίσης να προσφέρει το
+ Αδειοδοτημένο Υλικό υπό ξεχωριστούς όρους ή προϋποθέσεις ή να σταματήσει
+ τη διανομή του Αδειοδοτημένου Υλικού οποτεδήποτε· ωστόσο, κάτι τέτοιο
+ δεν θα τερματίσει αυτή τη Δημόσια Άδεια.
+
+ δ. Οι Ενότητες 1, 5, 6, 7 και 8 επιβιώνουν μετά τη λήξη αυτής της Δημόσιας
+ Άδειας.
+
+
+Ενότητα 7 -- Άλλοι Όροι και Προϋποθέσεις.
+
+ α. Ο Αδειοδότης δεν δεσμεύεται από επιπλέον ή διαφορετικούς
+ όρους ή προϋποθέσεις που επικοινωνούνται από εσάς εκτός εάν συμφωνηθεί ρητά.
+
+ β. Οποιεσδήποτε ρυθμίσεις, κατανοήσεις ή συμφωνίες σχετικά με το
+ Αδειοδοτημένο Υλικό που δεν δηλώνονται εδώ αποτελούν ξεχωριστές και
+ ανεξάρτητες από τους όρους και τις προϋποθέσεις αυτής της Δημόσιας Άδειας.
+
+
+Ενότητα 8 -- Ερμηνεία.
+
+ α. Για αποφυγή αμφιβολιών, αυτή η Δημόσια Άδεια δεν μειώνει, περιορίζει,
+ δεν θέτει περιορισμούς ή προϋποθέσεις σε οποιαδήποτε χρήση του Αδειοδοτημένου Υλικού
+ που θα μπορούσε νόμιμα να γίνει χωρίς άδεια βάσει αυτής της Δημόσιας Άδειας.
+
+
+ β. Στο μέτρο του δυνατού, αν οποιαδήποτε διάταξη αυτής της Δημόσιας Άδειας θεωρηθεί
+ μη εφαρμόσιμη, θα αναμορφωθεί αυτόματα στο ελάχιστο αναγκαίο βαθμό για να
+ γίνει εφαρμόσιμη. Εάν η διάταξη δεν μπορεί να αναμορφωθεί, θα διαχωριστεί από αυτή τη Δημόσια Άδεια
+ χωρίς να επηρεάσει την εφαρμοσιμότητα των υπολοίπων όρων και
+ προϋποθέσεων.
+
+
+ γ. Κανένας όρος ή προϋπόθεση αυτής της Δημόσιας Άδειας δεν θα παραιτηθεί και καμία
+ αποτυχία συμμόρφωσης δεν θα γίνει αποδεκτή εκτός αν συμφωνηθεί ρητά από τον
+ Αδειοδότη.
+
+ δ. Τίποτα σε αυτή τη Δημόσια Άδεια δεν συνιστά ή μπορεί να ερμηνευθεί
+ ως περιορισμός ή παραίτηση από οποιαδήποτε προνόμια και ασυλίες
+ που ισχύουν για τον Αδειοδότη ή εσάς, συμπεριλαμβανομένων των νομικών
+ διαδικασιών οποιασδήποτε δικαιοδοσίας ή αρχής.
+
+
+=======================================================================
-Το Creative Commons μπορεί να επικοινωνηθεί στο creativecommons.org.
+Το Creative Commons δεν είναι μέρος των δημόσιων
+αδειών του. Παρ'όλα αυτά, το Creative Commons μπορεί να επιλέξει να εφαρμόσει μια από
+τις δημόσιες άδειές του σε υλικό που δημοσιεύει και σε αυτές τις περιπτώσεις
+θα θεωρείται ο «Αδειοδότης». Το κείμενο των δημόσιων αδειών Creative Commons
+έχει αφιερωθεί στο δημόσιο τομέα υπό την CC0 Δημόσια
+Αφιέρωση στον Δημόσιο Τομέα. Εκτός από τον περιορισμένο σκοπό να υποδηλώσει ότι
+το υλικό κοινοποιείται υπό δημόσια άδεια Creative Commons ή όπως
+επιτρέπεται διαφορετικά από τις πολιτικές του Creative Commons που δημοσιεύονται στο
+creativecommons.org/policies, το Creative Commons δεν εξουσιοδοτεί τη
+χρήση του εμπορικού σήματος "Creative Commons" ή οποιουδήποτε άλλου εμπορικού σήματος ή λογότυπου
+του Creative Commons χωρίς την προηγούμενη γραπτή του συγκατάθεση, συμπεριλαμβανομένων,
+χωρίς περιορισμό, σε σχέση με οποιεσδήποτε μη εξουσιοδοτημένες τροποποιήσεις
+σε οποιαδήποτε από τις δημόσιες άδειές του ή οποιεσδήποτε άλλες ρυθμίσεις,
+κατανοήσεις, ή συμφωνίες που αφορούν τη χρήση αδειοδοτημένου υλικού. Για
+αποφυγή αμφιβολιών, αυτή η παράγραφος δεν αποτελεί μέρος των
+δημόσιων αδειών.
+
+Μπορείτε να επικοινωνήσετε με το Creative Commons στη διεύθυνση creativecommons.org.
---
-**Αποποίηση ευθύνης**:
-Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν σφάλματα ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.
\ No newline at end of file
+
+**Αποποίηση ευθυνών**:
+Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία μετάφρασης με τεχνητή νοημοσύνη [Co-op Translator](https://github.com/Azure/co-op-translator). Ενώ επιδιώκουμε την ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή λανθασμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.
+
\ No newline at end of file
diff --git a/translations/en/.co-op-translator.json b/translations/en/.co-op-translator.json
index ad1fbf300..3f4ac720b 100644
--- a/translations/en/.co-op-translator.json
+++ b/translations/en/.co-op-translator.json
@@ -24,8 +24,8 @@
"language_code": "en"
},
"1-Introduction/3-fairness/README.md": {
- "original_hash": "9a6b702d1437c0467e3c5c28d763dac2",
- "translation_date": "2025-09-06T10:53:05+00:00",
+ "original_hash": "0f00d72169a0d37eecfd16d71e01700a",
+ "translation_date": "2026-07-13T23:20:31+00:00",
"source_file": "1-Introduction/3-fairness/README.md",
"language_code": "en"
},
@@ -54,8 +54,8 @@
"language_code": "en"
},
"2-Regression/1-Tools/README.md": {
- "original_hash": "fa81d226c71d5af7a2cade31c1c92b88",
- "translation_date": "2025-09-06T10:46:54+00:00",
+ "original_hash": "0b8635427b582d03ea4ab7089b93e505",
+ "translation_date": "2026-07-13T23:17:54+00:00",
"source_file": "2-Regression/1-Tools/README.md",
"language_code": "en"
},
@@ -72,8 +72,8 @@
"language_code": "en"
},
"2-Regression/2-Data/README.md": {
- "original_hash": "7c077988328ebfe33b24d07945f16eca",
- "translation_date": "2025-09-06T10:47:29+00:00",
+ "original_hash": "a58b2c4d16c6b122643391745ac15af6",
+ "translation_date": "2026-07-13T23:18:34+00:00",
"source_file": "2-Regression/2-Data/README.md",
"language_code": "en"
},
@@ -89,6 +89,12 @@
"source_file": "2-Regression/2-Data/solution/Julia/README.md",
"language_code": "en"
},
+ "2-Regression/2-Data/solution/notebook.ipynb": {
+ "original_hash": "96b95f8cf473481f2f371de8156f1571",
+ "translation_date": "2026-07-13T23:15:00+00:00",
+ "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
+ "language_code": "en"
+ },
"2-Regression/3-Linear/README.md": {
"original_hash": "8b776e731c35b171d316d01d0e7b1369",
"translation_date": "2026-04-26T18:31:36+00:00",
@@ -457,7 +463,7 @@
},
"8-Reinforcement/1-QLearning/README.md": {
"original_hash": "911efd5e595089000cb3c16fce1beab8",
- "translation_date": "2025-09-06T10:59:08+00:00",
+ "translation_date": "2026-07-13T23:19:14+00:00",
"source_file": "8-Reinforcement/1-QLearning/README.md",
"language_code": "en"
},
@@ -481,7 +487,7 @@
},
"8-Reinforcement/2-Gym/README.md": {
"original_hash": "107d5bb29da8a562e7ae72262d251a75",
- "translation_date": "2025-09-06T10:59:45+00:00",
+ "translation_date": "2026-07-13T23:19:55+00:00",
"source_file": "8-Reinforcement/2-Gym/README.md",
"language_code": "en"
},
@@ -601,7 +607,7 @@
},
"sketchnotes/LICENSE.md": {
"original_hash": "fba3b94d88bfb9b81369b869a1e9a20f",
- "translation_date": "2025-09-06T10:58:18+00:00",
+ "translation_date": "2026-07-13T23:17:21+00:00",
"source_file": "sketchnotes/LICENSE.md",
"language_code": "en"
},
diff --git a/translations/en/1-Introduction/3-fairness/README.md b/translations/en/1-Introduction/3-fairness/README.md
index e666e0950..dd167d72b 100644
--- a/translations/en/1-Introduction/3-fairness/README.md
+++ b/translations/en/1-Introduction/3-fairness/README.md
@@ -1,28 +1,28 @@
# Building Machine Learning solutions with responsible AI
-
-
+
+
> Sketchnote by [Tomomi Imura](https://www.twitter.com/girlie_mac)
## [Pre-lecture quiz](https://ff-quizzes.netlify.app/en/ml/)
-
+
## Introduction
-In this curriculum, you will begin to explore how machine learning is shaping and influencing our daily lives. Today, systems and models play a role in decision-making processes such as healthcare diagnoses, loan approvals, or fraud detection. It is crucial that these models perform well and deliver trustworthy outcomes. Like any software application, AI systems can fail to meet expectations or produce undesirable results. This is why it is essential to understand and explain the behavior of AI models.
+In this curriculum, you will start to discover how machine learning can and is impacting our everyday lives. Even now, systems and models are involved in daily decision-making tasks, such as health care diagnoses, loan approvals or detecting fraud. So, it is important that these models work well to provide outcomes that are trustworthy. Just as any software application, AI systems are going to miss expectations or have an undesirable outcome. That is why it is essential to be about to understand and explain the behavior of an AI model.
-Consider what might happen if the data used to build these models lacks representation of certain demographics, such as race, gender, political views, or religion, or if it disproportionately represents some groups. What if the model’s output favors one demographic over another? What are the consequences for the application? Furthermore, what happens when the model causes harm? Who is accountable for the behavior of AI systems? These are some of the questions we will explore in this curriculum.
+Imagine what can happen when the data you are using to build these models lacks certain demographics, such as race, gender, political view, religion, or disproportionally represents such demographics. What about when the model’s output is interpreted to favor some demographic? What is the consequence for the application? In addition, what happens when the model has an adverse outcome and is harmful to people? Who is accountable for the AI systems behavior? These are some questions we will explore in this curriculum.
-In this lesson, you will:
+In this lesson, you will:
-- Learn about the importance of fairness in machine learning and the harms related to unfairness.
-- Understand the practice of exploring outliers and unusual scenarios to ensure reliability and safety.
-- Recognize the need to design inclusive systems that empower everyone.
-- Explore the importance of protecting privacy and security for both data and individuals.
-- Understand the value of a transparent approach to explain AI model behavior.
-- Appreciate how accountability is key to building trust in AI systems.
+- Raise your awareness of the importance of fairness in machine learning and fairness-related harms.
+- Become familiar with the practice of exploring outliers and unusual scenarios to ensure reliability and safety
+- Gain understanding on the need to empower everyone by designing inclusive systems
+- Explore how vital it is to protect privacy and security of data and people
+- See the importance of having a glass box approach to explain the behavior of AI models
+- Be mindful of how accountability is essential to build trust in AI systems
## Prerequisite
-Before starting, please complete the "Responsible AI Principles" Learn Path and watch the video below on the topic:
+As a prerequisite, please take the "Responsible AI Principles" Learn Path and watch the video below on the topic:
Learn more about Responsible AI by following this [Learning Path](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)
@@ -32,124 +32,128 @@ Learn more about Responsible AI by following this [Learning Path](https://docs.m
## Fairness
-AI systems should treat everyone fairly and avoid disadvantaging similar groups of people. For example, when AI systems provide recommendations for medical treatment, loan applications, or employment, they should offer the same guidance to individuals with similar symptoms, financial situations, or qualifications. As humans, we all carry biases that influence our decisions and actions. These biases can also appear in the data used to train AI systems, sometimes unintentionally. It can be challenging to recognize when bias is being introduced into data.
+AI systems should treat everyone fairly and avoid affecting similar groups of people in different ways. For example, when AI systems provide guidance on medical treatment, loan applications, or employment, they should make the same recommendations to everyone with similar symptoms, financial circumstances, or professional qualifications. Each of us as humans carries around inherited biases that affect our decisions and actions. These biases can be evident in the data that we use to train AI systems. Such manipulation can sometimes happen unintentionally. It is often difficult to consciously know when you are introducing bias in data.
-**“Unfairness”** refers to negative impacts, or “harms,” experienced by a group of people, such as those defined by race, gender, age, or disability. The main types of fairness-related harms include:
+**“Unfairness”** encompasses negative impacts, or “harms”, for a group of people, such as those defined in terms of race, gender, age, or disability status. The main fairness-related harms can be classified as:
-- **Allocation**: Favoring one gender, ethnicity, or group over another.
-- **Quality of service**: Training data for a specific scenario while ignoring the complexity of real-world situations, leading to poor performance. For example, a soap dispenser that fails to detect people with dark skin. [Reference](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
-- **Denigration**: Unfairly criticizing or labeling someone or something. For instance, an image labeling system that mislabeled dark-skinned individuals as gorillas.
-- **Over- or under-representation**: When a group is absent or underrepresented in a profession, and systems perpetuate this imbalance.
-- **Stereotyping**: Associating a group with predefined attributes. For example, a language translation system between English and Turkish may produce errors due to gender-based stereotypes.
+- **Allocation**, if a gender or ethnicity for example is favored over another.
+- **Quality of service**. If you train the data for one specific scenario but reality is much more complex, it leads to a poor performing service. For instance, a hand soap dispenser that could not seem to be able to sense people with dark skin. [Reference](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
+- **Denigration**. To unfairly criticize and label something or someone. For example, an image labeling technology infamously mislabeled images of dark-skinned people as gorillas.
+- **Over- or under- representation**. The idea is that a certain group is not seen in a certain profession, and any service or function that keeps promoting that is contributing to harm.
+- **Stereotyping**. Associating a given group with pre-assigned attributes. For example, a language translation system betweem English and Turkish may have inaccuraces due to words with stereotypical associations to gender.
-
+
> translation to Turkish
-
+
> translation back to English
-When designing and testing AI systems, it is essential to ensure that AI is fair and does not make biased or discriminatory decisions—just as humans are prohibited from doing. Achieving fairness in AI and machine learning is a complex sociotechnical challenge.
+When designing and testing AI systems, we need to ensure that AI is fair and not programmed to make biased or discriminatory decisions, which human beings are also prohibited from making. Guaranteeing fairness in AI and machine learning remains a complex sociotechnical challenge.
### Reliability and safety
-To build trust, AI systems must be reliable, safe, and consistent under both normal and unexpected conditions. It is important to understand how AI systems behave in various situations, especially outliers. When developing AI solutions, significant attention must be given to handling a wide range of scenarios the system might encounter. For example, a self-driving car must prioritize people’s safety. The AI powering the car must account for scenarios like nighttime driving, thunderstorms, blizzards, children running into the street, pets, road construction, and more. The reliability and safety of an AI system reflect the level of foresight and preparation by the data scientist or AI developer during design and testing.
+To build trust, AI systems need to be reliable, safe, and consistent under normal and unexpected conditions. It is important to know how AI systems will behavior in a variety of situations, especially when they are outliers. When building AI solutions, there needs to be a substantial amount of focus on how to handle a wide variety of circumstances that the AI solutions would encounter. For example, a self-driving car needs to put people's safety as a top priority. As a result, the AI powering the car need to consider all the possible scenarios that the car could come across such as night, thunderstorms or blizzards, kids running across the street, pets, road constructions etc. How well an AI system can handle a wild range of conditions reliably and safely reflects the level of anticipation the data scientist or AI developer considered during the design or testing of the system.
-> [🎥 Click here for a video: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
+> [🎥 Click the here for a video: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
### Inclusiveness
-AI systems should be designed to engage and empower everyone. Data scientists and AI developers must identify and address potential barriers in the system that could unintentionally exclude people. For example, there are 1 billion people with disabilities worldwide. Advances in AI can help them access information and opportunities more easily in their daily lives. Addressing barriers creates opportunities to innovate and develop AI products that provide better experiences for everyone.
+AI systems should be designed to engage and empower everyone. When designing and implementing AI systems data scientists and AI developers identify and address potential barriers in the system that could unintentionally exclude people. For example, there are 1 billion people with disabilities around the world. With the advancement of AI, they can access a wide range of information and opportunities more easily in their daily lives. By addressing the barriers, it creates opportunities to innovate and develop AI products with better experiences that benefit everyone.
-> [🎥 Click here for a video: inclusiveness in AI](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
+> [🎥 Click the here for a video: inclusiveness in AI](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
-### Security and privacy
+### Security and privacy
-AI systems must be safe and respect people’s privacy. People are less likely to trust systems that put their privacy, information, or lives at risk. When training machine learning models, data is essential for producing accurate results. However, the origin and integrity of the data must be considered. For example, was the data user-submitted or publicly available? Additionally, AI systems must protect confidential information and resist attacks. As AI becomes more widespread, safeguarding privacy and securing personal and business information are increasingly critical and complex. Privacy and data security require special attention because AI systems rely on data to make accurate predictions and decisions.
+AI systems should be safe and respect people’s privacy. People have less trust in systems that put their privacy, information, or lives at risk. When training machine learning models, we rely on data to produce the best results. In doing so, the origin of the data and integrity must be considered. For example, was the data user submitted or publicly available? Next, while working with the data, it is crucial to develop AI systems that can protect confidential information and resist attacks. As AI becomes more prevalent, protecting privacy and securing important personal and business information is becoming more critical and complex. Privacy and data security issues require especially close attention for AI because access to data is essential for AI systems to make accurate and informed predictions and decisions about people.
-> [🎥 Click here for a video: security in AI](https://www.microsoft.com/videoplayer/embed/RE4voJF)
+> [🎥 Click the here for a video: security in AI](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- The industry has made significant progress in privacy and security, driven by regulations like GDPR (General Data Protection Regulation).
-- However, AI systems face a tension between the need for personal data to improve effectiveness and the need to protect privacy.
-- Just as the internet brought new security challenges, AI has led to a rise in security issues.
-- At the same time, AI is being used to enhance security, such as in modern antivirus scanners powered by AI heuristics.
-- Data science processes must align with the latest privacy and security practices.
+- As an industry we have made significant advancements in Privacy & security, fueled significantly by regulations like the GDPR (General Data Protection Regulation).
+- Yet with AI systems we must acknowledge the tension between the need for more personal data to make systems more personal and effective – and privacy.
+- Just like with the birth of connected computers with the internet, we are also seeing a huge uptick in the number of security issues related to AI.
+- At the same time, we have seen AI being used to improve security. As an example, most modern anti-virus scanners are driven by AI heuristics today.
+- We need to ensure that our Data Science processes blend harmoniously with the latest privacy and security practices.
-### Transparency
-AI systems should be understandable. Transparency involves explaining the behavior of AI systems and their components. Stakeholders need to understand how and why AI systems function to identify potential performance issues, safety and privacy concerns, biases, exclusionary practices, or unintended outcomes. Those who use AI systems should also be transparent about when, why, and how they deploy them, as well as the systems’ limitations. For example, if a bank uses AI for lending decisions, it is important to examine the outcomes and understand which data influences the system’s recommendations. Governments are beginning to regulate AI across industries, so data scientists and organizations must ensure their systems meet regulatory requirements, especially in cases of undesirable outcomes.
+### Transparency
+AI systems should be understandable. A crucial part of transparency is explaining the behavior of AI systems and their components. Improving the understanding of AI systems requires that stakeholders comprehend how and why they function so that they can identify potential performance issues, safety and privacy concerns, biases, exclusionary practices, or unintended outcomes. We also believe that those who use AI systems should be honest and forthcoming about when, why, and how they choose to deploy them. As well as the limitations of the systems they use. For example, if a bank uses an AI system to support its consumer lending decisions, it is important to examine the outcomes and understand which data influences the system’s recommendations. Governments are starting to regulate AI across industries, so data scientists and organizations must explain if an AI system meets regulatory requirements, especially when there is an undesirable outcome.
-> [🎥 Click here for a video: transparency in AI](https://www.microsoft.com/videoplayer/embed/RE4voJF)
+> [🎥 Click the here for a video: transparency in AI](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- AI systems are complex, making it difficult to understand how they work and interpret their results.
-- This lack of understanding affects how systems are managed, operationalized, and documented.
-- More importantly, it impacts the decisions made based on the systems’ results.
+- Because AI systems are so complex, it is hard to understand how they work and interpret the results.
+- This lack of understanding affects the way these systems are managed, operationalized, and documented.
+- This lack of understanding more importantly affects the decisions made using the results these systems produce.
-### Accountability
+### Accountability
+
+The people who design and deploy AI systems must be accountable for how their systems operate. The need for accountability is particularly crucial with sensitive use technologies like facial recognition. Recently, there has been a growing demand for facial recognition technology, especially from law enforcement organizations who see the potential of the technology in uses like finding missing children. However, these technologies could potentially be used by a government to put their citizens’ fundamental freedoms at risk by, for example, enabling continuous surveillance of specific individuals. Hence, data scientists and organizations need to be responsible for how their AI system impacts individuals or society.
-The people who design and deploy AI systems must be accountable for their operation. Accountability is especially critical for sensitive technologies like facial recognition. For example, law enforcement agencies may use facial recognition to find missing children, but the same technology could enable governments to infringe on citizens’ freedoms through continuous surveillance. Data scientists and organizations must take responsibility for how their AI systems impact individuals and society.
+[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft's Approach to Responsible AI")
-[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft's Approach to Responsible AI")
+> 🎥 Click the image above for a video: Warnings of Mass Surveillance Through Facial Recognition
-> 🎥 Click the image above for a video: Warnings of Mass Surveillance Through Facial Recognition
+Ultimately one of the biggest questions for our generation, as the first generation that is bringing AI to society, is how to ensure that computers will remain accountable to people and how to ensure that the people that design computers remain accountable to everyone else.
-One of the most significant questions for our generation, as the first to bring AI to society, is how to ensure that computers remain accountable to people and that the people designing these systems remain accountable to everyone else.
+## Impact assessment
-## Impact assessment
+Before training a machine learning model, it is important to conduct an impact assessmet to understand the purpose of the AI system; what the intended use is; where it will be deployed; and who will be interacting with the system. These are helpful for reviewer(s) or testers evaluating the system to know what factors to take into consideration when identifying potential risks and expected consequences.
-Before training a machine learning model, it is important to conduct an impact assessment to understand the purpose of the AI system, its intended use, where it will be deployed, and who will interact with it. This helps reviewers or testers identify potential risks and expected consequences.
+The following are areas of focus when conducting an impact assessment:
-Key areas to focus on during an impact assessment include:
+* **Adverse impact on individuals**. Being aware of any restriction or requirements, unsupported use or any known limitations hindering the system's performance is vital to ensure that the system is not used in a way that could cause harm to individuals.
+* **Data requirements**. Gaining an understanding of how and where the system will use data enables reviewers to explore any data requirements you would need to be mindful of (e.g., GDPR or HIPAA data regulations). In addition, examine whether the source or quantity of data is substantial for training.
+* **Summary of impact**. Gather a list of potential harms that could arise from using the system. Throughout the ML lifecycle, review if the issues identified are mitigated or addressed.
+* **Applicable goals** for each of the six core principles. Assess if the goals from each of the principles are met and if there are any gaps.
-- **Adverse impact on individuals**: Be aware of any restrictions, requirements, unsupported uses, or known limitations that could hinder the system’s performance and cause harm.
-- **Data requirements**: Understand how and where the system will use data to identify any regulatory requirements (e.g., GDPR or HIPAA) and ensure the data source and quantity are sufficient for training.
-- **Summary of impact**: Identify potential harms that could arise from using the system and review whether these issues are addressed throughout the ML lifecycle.
-- **Applicable goals** for each of the six core principles: Assess whether the goals of each principle are met and identify any gaps.
-## Debugging with responsible AI
+## Debugging with responsible AI
-Debugging an AI system is similar to debugging a software application—it involves identifying and resolving issues. Many factors can cause a model to perform unexpectedly or irresponsibly. Traditional model performance metrics, which are often quantitative aggregates, are insufficient for analyzing how a model violates responsible AI principles. Additionally, machine learning models are often black boxes, making it difficult to understand their outcomes or explain their mistakes. Later in this course, we will learn how to use the Responsible AI dashboard to debug AI systems. This dashboard provides a comprehensive tool for data scientists and AI developers to:
+Similar to debugging a software application, debugging an AI system is a necessary process of identifying and resolving issues in the system. There are many factors that would affect a model not performing as expected or responsibly. Most traditional model performance metrics are quantitative aggregates of a model's performance, which are not sufficient to analyze how a model violates the responsible AI principles. Furthermore, a machine learning model is a black box that makes it difficult to understand what drives its outcome or provide explanation when it makes a mistake. Later in this course, we will learn how to use the Responsible AI dashboard to help debug AI systems. The dashboard provides a holistic tool for data scientists and AI developers to perform:
-- **Perform error analysis**: Identify error distributions that affect fairness or reliability.
-- **Review the model overview**: Discover disparities in the model’s performance across data cohorts.
-- **Analyze data**: Understand data distribution and identify potential biases that could impact fairness, inclusiveness, and reliability.
-- **Interpret the model**: Understand what influences the model’s predictions, which is essential for transparency and accountability.
+* **Error analysis**. To identify the error distribution of the model that can affect the system's fairness or reliability.
+* **Model overview**. To discover where there are disparities in the model's performance across data cohorts.
+* **Data analysis**. To understand the data distribution and identify any potential bias in the data that could lead to fairness, inclusiveness, and reliability issues.
+* **Model interpretability**. To understand what affects or influences the model's predictions. This helps in explaining the model's behavior, which is important for transparency and accountability.
-## 🚀 Challenge
-To prevent harms from being introduced in the first place, we should:
+## 🚀 Challenge
+
+To prevent harms from being introduced in the first place, we should:
-- Ensure diversity in the backgrounds and perspectives of the people working on AI systems.
-- Invest in datasets that reflect the diversity of society.
-- Develop better methods throughout the machine learning lifecycle to detect and address responsible AI issues.
+- have a diversity of backgrounds and perspectives among the people working on systems
+- invest in datasets that reflect the diversity of our society
+- develop better methods throughout the machine learning lifecycle for detecting and correcting responible AI when it occurs
-Think about real-life scenarios where a model’s lack of trustworthiness is evident during development or use. What else should we consider?
+Think about real-life scenarios where a model's untrustworthiness is evident in model-building and usage. What else should we consider?
## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ml/)
-## Review & Self Study
+## Review & Self Study
+
-In this lesson, you have learned the basics of fairness and unfairness in machine learning.
-Watch this workshop to explore the topics in more detail:
+In this lesson, you have learned some basics of the concepts of fairness and unfairness in machine learning.
+
+Watch this workshop to dive deeper into the topics:
-- In pursuit of responsible AI: Applying principles in practice by Besmira Nushi, Mehrnoosh Sameki, and Amit Sharma
+- In pursuit of responsible AI: Bringing principles to practice by Besmira Nushi, Mehrnoosh Sameki and Amit Sharma
[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI")
-> 🎥 Click the image above to watch the video: RAI Toolbox: An open-source framework for building responsible AI by Besmira Nushi, Mehrnoosh Sameki, and Amit Sharma
+> 🎥 Click the image above for a video: RAI Toolbox: An open-source framework for building responsible AI by Besmira Nushi, Mehrnoosh Sameki, and Amit Sharma
-Additionally, check out:
+Also, read:
-- Microsoft’s RAI resource center: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
+- Microsoft’s RAI resource center: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
-- Microsoft’s FATE research group: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
+- Microsoft’s FATE research group: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
-RAI Toolbox:
+RAI Toolbox:
- [Responsible AI Toolbox GitHub repository](https://github.com/microsoft/responsible-ai-toolbox)
-Learn about Azure Machine Learning's tools for ensuring fairness:
+Read about Azure Machine Learning's tools to ensure fairness:
-- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
+- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
## Assignment
@@ -157,5 +161,7 @@ Learn about Azure Machine Learning's tools for ensuring fairness:
---
-**Disclaimer**:
-This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we strive for accuracy, please note that automated translations may contain errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is recommended. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
+
+**Disclaimer**:
+This document has been translated using AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation.
+
\ No newline at end of file
diff --git a/translations/en/2-Regression/1-Tools/README.md b/translations/en/2-Regression/1-Tools/README.md
index cc38068fc..3eaf0abd8 100644
--- a/translations/en/2-Regression/1-Tools/README.md
+++ b/translations/en/2-Regression/1-Tools/README.md
@@ -1,6 +1,6 @@
# Get started with Python and Scikit-learn for regression models
-
+
> Sketchnote by [Tomomi Imura](https://www.twitter.com/girlie_mac)
@@ -10,109 +10,110 @@
## Introduction
-In these four lessons, you will learn how to build regression models. We'll discuss their purpose shortly. But before diving in, ensure you have the necessary tools set up to begin!
+In these four lessons, you will discover how to build regression models. We will discuss what these are for shortly. But before you do anything, make sure you have the right tools in place to start the process!
-In this lesson, you will:
+In this lesson, you will learn how to:
-- Set up your computer for local machine learning tasks.
-- Work with Jupyter notebooks.
-- Install and use Scikit-learn.
-- Explore linear regression through a hands-on exercise.
+- Configure your computer for local machine learning tasks.
+- Work with Jupyter Notebooks.
+- Use Scikit-learn, including installation.
+- Explore linear regression with a hands-on exercise.
## Installations and configurations
[](https://youtu.be/-DfeD2k2Kj0 "ML for beginners -Setup your tools ready to build Machine Learning models")
-> 🎥 Click the image above for a short video on configuring your computer for ML.
+> 🎥 Click the image above for a short video working through configuring your computer for ML.
-1. **Install Python**. Ensure that [Python](https://www.python.org/downloads/) is installed on your computer. Python is essential for many data science and machine learning tasks. Most systems already have Python installed. You can also use [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) to simplify the setup process.
+1. **Install Python**. Ensure that [Python](https://www.python.org/downloads/) is installed on your computer. You will use Python for many data science and machine learning tasks. Most computer systems already include a Python installation. There are useful [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) available as well, to ease the setup for some users.
- Some Python tasks require specific versions of the software. To manage this, it's helpful to work within a [virtual environment](https://docs.python.org/3/library/venv.html).
+ Some usages of Python, however, require one version of the software, whereas others require a different version. For this reason, it's useful to work within a [virtual environment](https://docs.python.org/3/library/venv.html).
-2. **Install Visual Studio Code**. Make sure Visual Studio Code is installed on your computer. Follow these instructions to [install Visual Studio Code](https://code.visualstudio.com/) for the basic setup. Since you'll use Python in Visual Studio Code during this course, you might want to review how to [configure Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) for Python development.
+2. **Install Visual Studio Code**. Make sure you have Visual Studio Code installed on your computer. Follow these instructions to [install Visual Studio Code](https://code.visualstudio.com/) for the basic installation. You are going to use Python in Visual Studio Code in this course, so you might want to brush up on how to [configure Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) for Python development.
- > Familiarize yourself with Python by exploring this collection of [Learn modules](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)
+ > Get comfortable with Python by working through this collection of [Learn modules](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)
>
> [](https://youtu.be/yyQM70vi7V8 "Setup Python with Visual Studio Code")
>
- > 🎥 Click the image above for a video on using Python within VS Code.
+ > 🎥 Click the image above for a video: using Python within VS Code.
-3. **Install Scikit-learn** by following [these instructions](https://scikit-learn.org/stable/install.html). Since Python 3 is required, using a virtual environment is recommended. If you're installing this library on an M1 Mac, refer to the special instructions on the linked page.
+3. **Install Scikit-learn**, by following [these instructions](https://scikit-learn.org/stable/install.html). Since you need to ensure that you use Python 3, it's recommended that you use a virtual environment. Note, if you are installing this library on a M1 Mac, there are special instructions on the page linked above.
-4. **Install Jupyter Notebook**. You'll need to [install the Jupyter package](https://pypi.org/project/jupyter/).
+1. **Install Jupyter Notebook**. You will need to [install the Jupyter package](https://pypi.org/project/jupyter/).
## Your ML authoring environment
-You'll use **notebooks** to develop Python code and create machine learning models. Notebooks are a popular tool for data scientists, identifiable by their `.ipynb` extension.
+You are going to use **notebooks** to develop your Python code and create machine learning models. This type of file is a common tool for data scientists, and they can be identified by their suffix or extension `.ipynb`.
-Notebooks provide an interactive environment where developers can code, add notes, and write documentation alongside their code—ideal for experimental or research-oriented projects.
+Notebooks are an interactive environment that allow the developer to both code and add notes and write documentation around the code which is quite helpful for experimental or research-oriented projects.
[](https://youtu.be/7E-jC8FLA2E "ML for beginners - Set up Jupyter Notebooks to start building regression models")
-> 🎥 Click the image above for a short video on setting up Jupyter Notebooks.
+> 🎥 Click the image above for a short video working through this exercise.
### Exercise - work with a notebook
-In this folder, you'll find the file _notebook.ipynb_.
+In this folder, you will find the file _notebook.ipynb_.
1. Open _notebook.ipynb_ in Visual Studio Code.
- A Jupyter server will start with Python 3+. You'll find areas of the notebook containing `run` sections of code. You can execute a code block by clicking the play button icon.
+ A Jupyter server will start with Python 3+ started. You will find areas of the notebook that can be `run`, pieces of code. You can run a code block, by selecting the icon that looks like a play button.
-2. Select the `md` icon and add some markdown with the text **# Welcome to your notebook**.
+1. Select the `md` icon and add a bit of markdown, and the following text **# Welcome to your notebook**.
Next, add some Python code.
-3. Type **print('hello notebook')** in the code block.
-4. Click the arrow to run the code.
+1. Type **print('hello notebook')** in the code block.
+1. Select the arrow to run the code.
- You should see the printed output:
+ You should see the printed statement:
```output
hello notebook
```
-
+
-You can intersperse your code with comments to document the notebook.
+You can interleaf your code with comments to self-document the notebook.
-✅ Reflect on how a web developer's working environment differs from that of a data scientist.
+✅ Think for a minute how different a web developer's working environment is versus that of a data scientist.
## Up and running with Scikit-learn
-Now that Python is set up locally and you're comfortable with Jupyter notebooks, let's get familiar with Scikit-learn (pronounced `sci` as in `science`). Scikit-learn offers an [extensive API](https://scikit-learn.org/stable/modules/classes.html#api-ref) for performing ML tasks.
+Now that Python is set up in your local environment, and you are comfortable with Jupyter Notebooks, let's get equally comfortable with Scikit-learn (pronounce it `sci` as in `science`). Scikit-learn provides an [extensive API](https://scikit-learn.org/stable/modules/classes.html#api-ref) to help you perform ML tasks.
-According to its [website](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn is an open source machine learning library that supports supervised and unsupervised learning. It also provides various tools for model fitting, data preprocessing, model selection and evaluation, and many other utilities."
+According to their [website](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn is an open source machine learning library that supports supervised and unsupervised learning. It also provides various tools for model fitting, data preprocessing, model selection and evaluation, and many other utilities."
-In this course, you'll use Scikit-learn and other tools to build machine learning models for 'traditional machine learning' tasks. Neural networks and deep learning are excluded, as they are covered in our upcoming 'AI for Beginners' curriculum.
+In this course, you will use Scikit-learn and other tools to build machine learning models to perform what we call 'traditional machine learning' tasks. We have deliberately avoided neural networks and deep learning, as they are better covered in our forthcoming 'AI for Beginners' curriculum.
-Scikit-learn simplifies model building and evaluation. It primarily focuses on numeric data and includes several ready-made datasets for learning. It also provides pre-built models for experimentation. Let's explore how to load prepackaged data and use a built-in estimator to create your first ML model with Scikit-learn.
+Scikit-learn makes it straightforward to build models and evaluate them for use. It is primarily focused on using numeric data and contains several ready-made datasets for use as learning tools. It also includes pre-built models for students to try. Let's explore the process of loading prepackaged data and using a built in estimator first ML model with Scikit-learn with some basic data.
## Exercise - your first Scikit-learn notebook
-> This tutorial was inspired by the [linear regression example](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) on Scikit-learn's website.
+> This tutorial was inspired by the [linear regression example](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) on Scikit-learn's web site.
+
[](https://youtu.be/2xkXL5EUpS0 "ML for beginners - Your First Linear Regression Project in Python")
-> 🎥 Click the image above for a short video on this exercise.
+> 🎥 Click the image above for a short video working through this exercise.
-In the _notebook.ipynb_ file associated with this lesson, clear all cells by clicking the 'trash can' icon.
+In the _notebook.ipynb_ file associated to this lesson, clear out all the cells by pressing the 'trash can' icon.
-In this section, you'll work with a small diabetes dataset built into Scikit-learn for learning purposes. Imagine testing a treatment for diabetic patients. Machine learning models can help identify which patients might respond better to the treatment based on variable combinations. Even a basic regression model, when visualized, can reveal insights about variables that could guide clinical trials.
+In this section, you will work with a small dataset about diabetes that is built into Scikit-learn for learning purposes. Imagine that you wanted to test a treatment for diabetic patients. Machine Learning models might help you determine which patients would respond better to the treatment, based on combinations of variables. Even a very basic regression model, when visualized, might show information about variables that would help you organize your theoretical clinical trials.
-✅ There are various regression methods, and your choice depends on the question you're trying to answer. For example, if you want to predict someone's probable height based on their age, you'd use linear regression to find a **numeric value**. If you're determining whether a cuisine is vegan, you'd use logistic regression for a **category assignment**. Think about questions you could ask of data and which method would be most suitable.
+✅ There are many types of regression methods, and which one you pick depends on the answer you're looking for. If you want to predict the probable height for a person of a given age, you'd use linear regression, as you're seeking a **numeric value**. If you're interested in discovering whether a type of cuisine should be considered vegan or not, you're looking for a **category assignment** so you would use logistic regression. You'll learn more about logistic regression later. Think a bit about some questions you can ask of data, and which of these methods would be more appropriate.
-Let's begin.
+Let's get started on this task.
### Import libraries
-For this task, we'll import the following libraries:
+For this task we will import some libraries:
-- **matplotlib**: A useful [graphing tool](https://matplotlib.org/) for creating visualizations.
-- **numpy**: [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) is a library for handling numeric data in Python.
-- **sklearn**: The [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) library.
+- **matplotlib**. It's a useful [graphing tool](https://matplotlib.org/) and we will use it to create a line plot.
+- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) is a useful library for handling numeric data in Python.
+- **sklearn**. This is the [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) library.
-Import the libraries you'll need for this task.
+Import some libraries to help with your tasks.
1. Add imports by typing the following code:
@@ -122,26 +123,26 @@ Import the libraries you'll need for this task.
from sklearn import datasets, linear_model, model_selection
```
- Here, you're importing `matplotlib`, `numpy`, and `datasets`, `linear_model`, and `model_selection` from `sklearn`. `model_selection` is used for splitting data into training and test sets.
+ Above you are importing `matplotlib`, `numpy` and you are importing `datasets`, `linear_model` and `model_selection` from `sklearn`. `model_selection` is used for splitting data into training and test sets.
### The diabetes dataset
-The built-in [diabetes dataset](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) contains 442 samples of diabetes-related data with 10 feature variables, including:
+The built-in [diabetes dataset](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) includes 442 samples of data around diabetes, with 10 feature variables, some of which include:
- age: age in years
- bmi: body mass index
- bp: average blood pressure
- s1 tc: T-Cells (a type of white blood cells)
-✅ This dataset includes 'sex' as a feature variable, which is significant in diabetes research. Many medical datasets use binary classifications like this. Consider how such categorizations might exclude certain populations from treatments.
+✅ This dataset includes the concept of 'sex' as a feature variable important to research around diabetes. Many medical datasets include this type of binary classification. Think a bit about how categorizations such as this might exclude certain parts of a population from treatments.
-Now, load the X and y data.
+Now, load up the X and y data.
-> 🎓 Remember, this is supervised learning, so we need a labeled 'y' target.
+> 🎓 Remember, this is supervised learning, and we need a named 'y' target.
-In a new code cell, load the diabetes dataset by calling `load_diabetes()`. The input `return_X_y=True` ensures `X` is a data matrix and `y` is the regression target.
+In a new code cell, load the diabetes dataset by calling `load_diabetes()`. The input `return_X_y=True` signals that `X` will be a data matrix, and `y` will be the regression target.
-1. Add print commands to display the shape of the data matrix and its first element:
+1. Add some print commands to show the shape of the data matrix and its first element:
```python
X, y = datasets.load_diabetes(return_X_y=True)
@@ -149,9 +150,9 @@ In a new code cell, load the diabetes dataset by calling `load_diabetes()`. The
print(X[0])
```
- The response is a tuple. You're assigning the first two values of the tuple to `X` and `y`. Learn more [about tuples](https://wikipedia.org/wiki/Tuple).
+ What you are getting back as a response, is a tuple. What you are doing is to assign the two first values of the tuple to `X` and `y` respectively. Learn more [about tuples](https://wikipedia.org/wiki/Tuple).
- You'll see the data has 442 items shaped into arrays of 10 elements:
+ You can see that this data has 442 items shaped in arrays of 10 elements:
```text
(442, 10)
@@ -159,39 +160,39 @@ In a new code cell, load the diabetes dataset by calling `load_diabetes()`. The
-0.04340085 -0.00259226 0.01990842 -0.01764613]
```
- ✅ Reflect on the relationship between the data and the regression target. Linear regression predicts relationships between feature X and target variable y. Can you find the [target](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) for the diabetes dataset in the documentation? What does this dataset demonstrate, given the target?
+ ✅ Think a bit about the relationship between the data and the regression target. Linear regression predicts relationships between feature X and target variable y. Can you find the [target](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) for the diabetes dataset in the documentation? What is this dataset demonstrating, given that target?
-2. Select a portion of the dataset to plot by choosing the 3rd column. Use the `:` operator to select all rows, and then select the 3rd column using the index (2). Reshape the data into a 2D array for plotting using `reshape(n_rows, n_columns)`. If one parameter is -1, the corresponding dimension is calculated automatically.
+2. Next, select a portion of this dataset to plot by selecting the 3rd column of the dataset. You can do this by using the `:` operator to select all rows, and then selecting the 3rd column using the index (2). You can also reshape the data to be a 2D array - as required for plotting - by using `reshape(n_rows, n_columns)`. If one of the parameter is -1, the corresponding dimension is calculated automatically.
```python
X = X[:, 2]
X = X.reshape((-1,1))
```
- ✅ Print the data at any time to check its shape.
+ ✅ At any time, print out the data to check its shape.
-3. With the data ready for plotting, use a machine to determine a logical split between the numbers in the dataset. Split both the data (X) and the target (y) into test and training sets. Scikit-learn provides a simple way to do this; you can split your test data at a specific point.
+3. Now that you have data ready to be plotted, you can see if a machine can help determine a logical split between the numbers in this dataset. To do this, you need to split both the data (X) and the target (y) into test and training sets. Scikit-learn has a straightforward way to do this; you can split your test data at a given point.
```python
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33)
```
-4. Train your model! Load the linear regression model and train it with your X and y training sets using `model.fit()`:
+4. Now you are ready to train your model! Load up the linear regression model and train it with your X and y training sets using `model.fit()`:
```python
model = linear_model.LinearRegression()
model.fit(X_train, y_train)
```
- ✅ `model.fit()` is a function you'll encounter in many ML libraries like TensorFlow.
+ ✅ `model.fit()` is a function you'll see in many ML libraries such as TensorFlow
-5. Create a prediction using test data with the `predict()` function. This will help draw the line between data groups.
+5. Then, create a prediction using test data, using the function `predict()`. This will be used to draw the line between data groups
```python
y_pred = model.predict(X_test)
```
-6. Finally, visualize the data using Matplotlib. Create a scatterplot of all the X and y test data, and use the prediction to draw a line that best separates the data groups.
+6. Now it's time to show the data in a plot. Matplotlib is a very useful tool for this task. Create a scatterplot of all the X and y test data, and use the prediction to draw a line in the most appropriate place, between the model's data groupings.
```python
plt.scatter(X_test, y_test, color='black')
@@ -202,23 +203,24 @@ In a new code cell, load the diabetes dataset by calling `load_diabetes()`. The
plt.show()
```
- 
-✅ Think about what's happening here. A straight line is passing through many small data points, but what is its purpose? Can you see how this line can help predict where a new, unseen data point might align with the plot's y-axis? Try to describe the practical application of this model in your own words.
+ 
+
-Congratulations, you've built your first linear regression model, made a prediction with it, and visualized it in a plot!
+ ✅ Think a bit about what's going on here. A straight line is running through many small dots of data, but what is it doing exactly? Can you see how you should be able to use this line to predict where a new, unseen data point should fit in relationship to the plot's y axis? Try to put into words the practical use of this model.
+
+Congratulations, you built your first linear regression model, created a prediction with it, and displayed it in a plot!
---
## 🚀Challenge
-Plot a different variable from this dataset. Hint: modify this line: `X = X[:,2]`. Considering the target of this dataset, what insights can you gain about the progression of diabetes as a disease?
-
+Plot a different variable from this dataset. Hint: edit this line: `X = X[:,2]`. Given this dataset's target, what are you able to discover about the progression of diabetes as a disease?
## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ml/)
## Review & Self Study
-In this tutorial, you worked with simple linear regression, rather than univariate or multiple linear regression. Take some time to read about the differences between these methods, or watch [this video](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef).
+In this tutorial, you worked with simple linear regression, rather than univariate or multiple linear regression. Read a little about the differences between these methods, or take a look at [this video](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef)
-Learn more about the concept of regression and reflect on the types of questions this technique can help answer. Consider taking [this tutorial](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) to deepen your understanding.
+Read more about the concept of regression and think about what kinds of questions can be answered by this technique. Take this [tutorial](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) to deepen your understanding.
## Assignment
@@ -226,5 +228,7 @@ Learn more about the concept of regression and reflect on the types of questions
---
-**Disclaimer**:
-This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we strive for accuracy, please note that automated translations may contain errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is recommended. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
+
+**Disclaimer**:
+This document has been translated using AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation.
+
\ No newline at end of file
diff --git a/translations/en/2-Regression/2-Data/README.md b/translations/en/2-Regression/2-Data/README.md
index 1f2062d04..b8b8d7796 100644
--- a/translations/en/2-Regression/2-Data/README.md
+++ b/translations/en/2-Regression/2-Data/README.md
@@ -1,6 +1,6 @@
# Build a regression model using Scikit-learn: prepare and visualize data
-
+
Infographic by [Dasani Madipalli](https://twitter.com/dasani_decoded)
@@ -10,51 +10,51 @@ Infographic by [Dasani Madipalli](https://twitter.com/dasani_decoded)
## Introduction
-Now that you have the tools needed to start building machine learning models with Scikit-learn, you're ready to begin asking questions of your data. When working with data and applying ML solutions, it's crucial to know how to ask the right questions to unlock the full potential of your dataset.
+Now that you are set up with the tools you need to start tackling machine learning model building with Scikit-learn, you are ready to start asking questions of your data. As you work with data and apply ML solutions, it's very important to understand how to ask the right question to properly unlock the potentials of your dataset.
In this lesson, you will learn:
-- How to prepare your data for model building.
+- How to prepare your data for model-building.
- How to use Matplotlib for data visualization.
+- How to use Seaborn for more expressive data visualization.
## Asking the right question of your data
-The type of question you want answered will determine the ML algorithms you use. The quality of the answer you get will largely depend on the nature of your data.
+The question you need answered will determine what type of ML algorithms you will leverage. And the quality of the answer you get back will be heavily dependent on the nature of your data.
-Take a look at the [data](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) provided for this lesson. You can open this .csv file in VS Code. A quick glance reveals blanks, a mix of strings and numeric data, and a peculiar column called 'Package' with values like 'sacks', 'bins', and others. The data is, frankly, a bit messy.
+Take a look at the [data](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) provided for this lesson. You can open this .csv file in VS Code. A quick skim immediately shows that there are blanks and a mix of strings and numeric data. There's also a strange column called 'Package' where the data is a mix between 'sacks', 'bins' and other values. The data, in fact, is a bit of a mess.
[](https://youtu.be/5qGjczWTrDQ "ML for beginners - How to Analyze and Clean a Dataset")
-> 🎥 Click the image above for a short video on preparing the data for this lesson.
+> 🎥 Click the image above for a short video working through preparing the data for this lesson.
-It's rare to receive a dataset that's completely ready for building a machine learning model. In this lesson, you'll learn how to prepare a raw dataset using standard Python libraries. You'll also explore techniques for visualizing the data.
+In fact, it is not very common to be gifted a dataset that is completely ready to use to create a ML model out of the box. In this lesson, you will learn how to prepare a raw dataset using standard Python libraries. You will also learn various techniques to visualize the data.
## Case study: 'the pumpkin market'
-In this folder, you'll find a .csv file in the root `data` folder called [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv), which contains 1757 rows of data about the pumpkin market, grouped by city. This raw data was extracted from the [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) provided by the United States Department of Agriculture.
+In this folder you will find a .csv file in the root `data` folder called [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) which includes 1757 lines of data about the market for pumpkins, sorted into groupings by city. This is raw data extracted from the [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) distributed by the United States Department of Agriculture.
### Preparing data
-This data is in the public domain and can be downloaded in separate files for each city from the USDA website. To simplify things, we've combined all the city data into one spreadsheet, so the data has already been partially prepared. Next, let's examine the data more closely.
+This data is in the public domain. It can be downloaded in many separate files, per city, from the USDA web site. To avoid too many separate files, we have concatenated all the city data into one spreadsheet, thus we have already _prepared_ the data a bit. Next, let's take a closer look at the data.
### The pumpkin data - early conclusions
-What do you notice about this data? As mentioned earlier, there's a mix of strings, numbers, blanks, and odd values that need to be understood.
-
-What question can you ask of this data using a regression technique? For example: "Predict the price of a pumpkin for sale during a given month." Looking at the data again, you'll need to make some adjustments to structure it properly for this task.
+What do you notice about this data? You already saw that there is a mix of strings, numbers, blanks and strange values that you need to make sense of.
+What question can you ask of this data, using a Regression technique? What about "Predict the price of a pumpkin for sale during a given month". Looking again at the data, there are some changes you need to make to create the data structure necessary for the task.
## Exercise - analyze the pumpkin data
-Let's use [Pandas](https://pandas.pydata.org/) (short for `Python Data Analysis`), a powerful tool for shaping data, to analyze and prepare the pumpkin data.
+Let's use [Pandas](https://pandas.pydata.org/), (the name stands for `Python Data Analysis`) a tool very useful for shaping data, to analyze and prepare this pumpkin data.
### First, check for missing dates
-Start by checking for missing dates:
+You will first need to take steps to check for missing dates:
1. Convert the dates to a month format (these are US dates, so the format is `MM/DD/YYYY`).
-2. Extract the month into a new column.
+2. Extract the month to a new column.
-Open the _notebook.ipynb_ file in Visual Studio Code and import the spreadsheet into a new Pandas dataframe.
+Open the _notebook.ipynb_ file in Visual Studio Code and import the spreadsheet in to a new Pandas dataframe.
1. Use the `head()` function to view the first five rows.
@@ -66,15 +66,15 @@ Open the _notebook.ipynb_ file in Visual Studio Code and import the spreadsheet
✅ What function would you use to view the last five rows?
-1. Check for missing data in the current dataframe:
+1. Check if there is missing data in the current dataframe:
```python
pumpkins.isnull().sum()
```
- There is missing data, but it might not affect the task at hand.
+ There is missing data, but maybe it won't matter for the task at hand.
-1. To simplify your dataframe, select only the columns you need using the `loc` function. This function extracts rows (first parameter) and columns (second parameter) from the original dataframe. The `:` expression below means "all rows."
+1. To make your dataframe easier to work with, select only the columns you need, using the `loc` function which extracts from the original dataframe a group of rows (passed as first parameter) and columns (passed as second parameter). The expression `:` in the case below means "all rows".
```python
columns_to_select = ['Package', 'Low Price', 'High Price', 'Date']
@@ -83,9 +83,9 @@ Open the _notebook.ipynb_ file in Visual Studio Code and import the spreadsheet
### Second, determine average price of pumpkin
-Think about how to calculate the average price of a pumpkin in a given month. Which columns would you use for this task? Hint: you'll need three columns.
+Think about how to determine the average price of a pumpkin in a given month. What columns would you pick for this task? Hint: you'll need 3 columns.
-Solution: Take the average of the `Low Price` and `High Price` columns to populate a new `Price` column, and convert the `Date` column to show only the month. Fortunately, based on the earlier check, there is no missing data for dates or prices.
+Solution: take the average of the `Low Price` and `High Price` columns to populate the new Price column, and convert the Date column to only show the month. Fortunately, according to the check above, there is no missing data for dates or prices.
1. To calculate the average, add the following code:
@@ -98,21 +98,21 @@ Solution: Take the average of the `Low Price` and `High Price` columns to popula
✅ Feel free to print any data you'd like to check using `print(month)`.
-2. Copy your converted data into a new Pandas dataframe:
+2. Now, copy your converted data into a fresh Pandas dataframe:
```python
new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price})
```
- Printing your dataframe will show a clean, organized dataset ready for building your regression model.
+ Printing out your dataframe will show you a clean, tidy dataset on which you can build your new regression model.
### But wait! There's something odd here
-Looking at the `Package` column, pumpkins are sold in various configurations. Some are sold in '1 1/9 bushel' measures, others in '1/2 bushel' measures, some per pumpkin, some per pound, and some in large boxes of varying sizes.
+If you look at the `Package` column, pumpkins are sold in many different configurations. Some are sold in '1 1/9 bushel' measures, and some in '1/2 bushel' measures, some per pumpkin, some per pound, and some in big boxes with varying widths.
> Pumpkins seem very hard to weigh consistently
-Examining the original data, anything with `Unit of Sale` equal to 'EACH' or 'PER BIN' also has the `Package` type listed as per inch, per bin, or 'each'. Pumpkins are difficult to weigh consistently, so let's filter the data to include only pumpkins with the string 'bushel' in their `Package` column.
+Digging into the original data, it's interesting that anything with `Unit of Sale` equalling 'EACH' or 'PER BIN' also have the `Package` type per inch, per bin, or 'each'. Pumpkins seem to be very hard to weigh consistently, so let's filter them by selecting only pumpkins with the string 'bushel' in their `Package` column.
1. Add a filter at the top of the file, under the initial .csv import:
@@ -120,11 +120,11 @@ Examining the original data, anything with `Unit of Sale` equal to 'EACH' or 'PE
pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]
```
- If you print the data now, you'll see only the 415 rows containing pumpkins sold by the bushel.
+ If you print the data now, you can see that you are only getting the 415 or so rows of data containing pumpkins by the bushel.
### But wait! There's one more thing to do
-Did you notice that the bushel amount varies per row? You'll need to normalize the pricing to show the price per bushel. Perform some calculations to standardize it.
+Did you notice that the bushel amount varies per row? You need to normalize the pricing so that you show the pricing per bushel, so do some math to standardize it.
1. Add these lines after the block creating the new_pumpkins dataframe:
@@ -134,29 +134,29 @@ Did you notice that the bushel amount varies per row? You'll need to normalize t
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2)
```
-✅ According to [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), a bushel's weight depends on the type of produce, as it's a volume measurement. "A bushel of tomatoes, for example, is supposed to weigh 56 pounds... Leaves and greens take up more space with less weight, so a bushel of spinach is only 20 pounds." It's all quite complex! For simplicity, let's price by the bushel without converting to pounds. This study of bushels highlights the importance of understanding your data!
+✅ According to [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), a bushel's weight depends on the type of produce, as it's a volume measurement. "A bushel of tomatoes, for example, is supposed to weigh 56 pounds... Leaves and greens take up more space with less weight, so a bushel of spinach is only 20 pounds." It's all pretty complicated! Let's not bother with making a bushel-to-pound conversion, and instead price by the bushel. All this study of bushels of pumpkins, however, goes to show how very important it is to understand the nature of your data!
-Now, you can analyze pricing per unit based on bushel measurements. If you print the data again, you'll see it's standardized.
+Now, you can analyze the pricing per unit based on their bushel measurement. If you print out the data one more time, you can see how it's standardized.
-✅ Did you notice that pumpkins sold by the half-bushel are very expensive? Can you figure out why? Hint: Smaller pumpkins are pricier than larger ones, likely because more of them fit into a bushel, leaving less unused space compared to one large hollow pumpkin.
+✅ Did you notice that pumpkins sold by the half-bushel are very expensive? Can you figure out why? Hint: little pumpkins are way pricier than big ones, probably because there are so many more of them per bushel, given the unused space taken by one big hollow pie pumpkin.
## Visualization Strategies
-A data scientist's role often involves demonstrating the quality and characteristics of the data they're working with. This is done by creating visualizations—plots, graphs, and charts—that reveal relationships and gaps that might otherwise be hard to identify.
+Part of the data scientist's role is to demonstrate the quality and nature of the data they are working with. To do this, they often create interesting visualizations, or plots, graphs, and charts, showing different aspects of data. In this way, they are able to visually show relationships and gaps that are otherwise hard to uncover.
[](https://youtu.be/SbUkxH6IJo0 "ML for beginners - How to Visualize Data with Matplotlib")
-> 🎥 Click the image above for a short video on visualizing the data for this lesson.
+> 🎥 Click the image above for a short video working through visualizing the data for this lesson.
-Visualizations can also help determine the most suitable machine learning technique for the data. For example, a scatterplot that follows a line suggests the data is a good candidate for linear regression.
+Visualizations can also help determine the machine learning technique most appropriate for the data. A scatterplot that seems to follow a line, for example, indicates that the data is a good candidate for a linear regression exercise.
-One data visualization library that works well in Jupyter notebooks is [Matplotlib](https://matplotlib.org/) (introduced in the previous lesson).
+One data visualization library that works well in Jupyter notebooks is [Matplotlib](https://matplotlib.org/) (which you also saw in the previous lesson).
-> Gain more experience with data visualization in [these tutorials](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott).
+> Get more experience with data visualization in [these tutorials](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott).
## Exercise - experiment with Matplotlib
-Try creating some basic plots to display the new dataframe you just created. What insights can a simple line plot provide?
+Try to create some basic plots to display the new dataframe you just created. What would a basic line plot show?
1. Import Matplotlib at the top of the file, under the Pandas import:
@@ -174,15 +174,15 @@ Try creating some basic plots to display the new dataframe you just created. Wha
plt.show()
```
- 
+ 
- Is this plot useful? Does anything about it surprise you?
+ Is this a useful plot? Does anything about it surprise you?
- It's not particularly useful, as it simply displays the data as a spread of points for each month.
+ It's not particularly useful as all it does is display in your data as a spread of points in a given month.
### Make it useful
-To create more meaningful charts, you often need to group the data. Let's try creating a plot where the y-axis shows the months and the data demonstrates the distribution.
+To get charts to display useful data, you usually need to group the data somehow. Let's try creating a plot where the y axis shows the months and the data demonstrates the distribution of data.
1. Add a cell to create a grouped bar chart:
@@ -191,21 +191,96 @@ To create more meaningful charts, you often need to group the data. Let's try cr
plt.ylabel("Pumpkin Price")
```
- 
+ 
+
+ This is a more useful data visualization! It seems to indicate that the highest price for pumpkins occurs in September and October. Does that meet your expectation? Why or why not?
+
+## Exercise - experiment with Seaborn
+
+Matplotlib is powerful, but it can take a lot of code to produce a polished chart. [Seaborn](https://seaborn.pydata.org/) is a library built _on top of_ Matplotlib that is designed for statistical data visualization. It works directly with Pandas dataframes, applies attractive default styles, and lets you create informative plots with far less code. Because Seaborn returns Matplotlib objects, you can still use everything you already know about Matplotlib to fine-tune the result.
+
+> If you don't already have Seaborn installed, install it with `pip install seaborn`.
+
+1. Import Seaborn at the top of the notebook, under the other imports. It is conventionally imported as `sns`:
+
+ ```python
+ import seaborn as sns
+ ```
+
+### Scatter plots to show relationships
+
+A big part of exploring data before building a model is looking for _relationships_ between variables. A [scatter plot](https://en.wikipedia.org/wiki/Scatter_plot) is one of the best tools for this: if the points seem to follow a line, the two variables may be correlated, which is a good sign that a linear regression model could work.
+
+1. Recreate the price-to-month scatter plot from before, this time using Seaborn's [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) (relational plot), which works directly with your dataframe columns:
+
+ ```python
+ sns.relplot(x="Price", y="Month", data=new_pumpkins)
+ ```
+
+ 
+
+ Notice how you pass the _column names_ and the dataframe, and Seaborn takes care of the axis labels for you.
+
+2. You can switch to a line plot by passing `kind="line"`. Seaborn even draws a shaded band showing the confidence interval around the line:
+
+ ```python
+ sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins)
+ ```
+
+ 
+
+ This particular data is quite noisy, so a line plot isn't the clearest choice here — but it shows how easily you can change chart types in Seaborn.
+
+### Bar charts to show distributions
+
+
+Earlier you grouped the data by hand to create a bar chart with Matplotlib. Seaborn's [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) (categorical plot) can do the grouping and aggregation for you. By default `kind="bar"` shows the mean of each category along with a black line indicating the confidence interval.
+
+1. Create a bar chart of average price per month:
+
+ ```python
+ sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar")
+ ```
+
+ 
+
+ This confirms what you saw with Matplotlib — prices peak around September and October — but Seaborn also visualizes how much the price _varies_ within each month.
+
+### Heatmaps to show correlations
+
+Scatter plots compare two variables at a time. When you have several numeric columns, a [heatmap](https://en.wikipedia.org/wiki/Heat_map) lets you view the strength of the relationship between _every_ pair of columns at once. This is a common way to spot which features are most correlated before choosing what to feed into a model (and the same kind of chart is later used to display confusion matrices in classification).
+
+1. Build a correlation matrix with Pandas, then draw it with Seaborn's [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html). The `annot=True` option prints the correlation values on each cell:
+
+ ```python
+ correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()
+ sns.heatmap(correlations, annot=True, cmap="coolwarm")
+ ```
+
+ 
+
+ Values close to `1` (or `-1`) mean the columns are strongly _linearly_ correlated. Notice how `Low Price` and `High Price` are almost perfectly correlated. `Month`, on the other hand, shows only a weak linear correlation with price — even though the bar chart above revealed a clear seasonal peak in September and October. That's an important lesson: the correlation coefficient only measures _straight-line_ relationships, so it can miss seasonal or otherwise non-linear patterns. ✅ Why is it useful to look at both a heatmap *and* charts like the bar chart before deciding which columns to use?
+
+### Matplotlib or Seaborn?
+
+Both libraries are worth knowing:
+
+- **Matplotlib** gives you fine-grained control over every element of a chart and is the foundation almost every other Python plotting library builds on.
+- **Seaborn** provides higher-level functions and attractive defaults for statistical charts, works directly with dataframes, and is often quicker for exploratory data analysis.
- This visualization is more useful! It suggests that pumpkin prices peak in September and October. Does this match your expectations? Why or why not?
+A common workflow is to reach for Seaborn to explore your data quickly, then drop down to Matplotlib when you need to customize the details.
---
## 🚀Challenge
-Explore the different types of visualizations offered by Matplotlib. Which types are most suitable for regression problems?
+Explore the different types of visualization that Matplotlib and Seaborn offer. Which types are most appropriate for regression problems?
## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ml/)
## Review & Self Study
-Investigate the various ways to visualize data. Make a list of available libraries and note which are best for specific tasks, such as 2D vs. 3D visualizations. What do you discover?
+Take a look at the many ways to visualize data. Make a list of the various libraries available and note which are best for given types of tasks, for example 2D visualizations vs. 3D visualizations. What do you discover?
## Assignment
@@ -213,5 +288,7 @@ Investigate the various ways to visualize data. Make a list of available librari
---
-**Disclaimer**:
-This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we strive for accuracy, please note that automated translations may contain errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is recommended. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
+
+**Disclaimer**:
+This document has been translated using AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation.
+
\ No newline at end of file
diff --git a/translations/en/2-Regression/2-Data/solution/notebook.ipynb b/translations/en/2-Regression/2-Data/solution/notebook.ipynb
index 66cb96dcd..00cee9f15 100644
--- a/translations/en/2-Regression/2-Data/solution/notebook.ipynb
+++ b/translations/en/2-Regression/2-Data/solution/notebook.ipynb
@@ -222,6 +222,7 @@
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
"pumpkins = pd.read_csv('../../data/US-pumpkins.csv')\n",
"\n",
"pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]\n",
@@ -385,18 +386,78 @@
"plt.ylabel(\"Pumpkin Price\")"
]
},
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Visualizing with Seaborn\n",
+ "\n",
+ "[Seaborn](https://seaborn.pydata.org/) is built on top of Matplotlib and works directly with dataframes, making it quick to create attractive statistical plots with very little code.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Scatter plots to show relationships\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", kind=\"line\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Bar charts to show distributions\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.catplot(x=\"Month\", y=\"Price\", data=new_pumpkins, kind=\"bar\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Heatmaps to show correlations\n"
+ ]
+ },
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
- "source": []
+ "source": [
+ "correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()\n",
+ "sns.heatmap(correlations, annot=True, cmap=\"coolwarm\")"
+ ]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "\n---\n\n**Disclaimer**: \nThis document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may include errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is advised. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.\n"
+ "---\n\n\n**Disclaimer**:\nThis document has been translated using AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation.\n\n"
]
}
],
@@ -426,13 +487,7 @@
"hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d"
}
},
- "orig_nbformat": 2,
- "coopTranslator": {
- "original_hash": "95726f0b8283628d5356a4f8eb8b4b76",
- "translation_date": "2025-09-06T15:31:50+00:00",
- "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
- "language_code": "en"
- }
+ "orig_nbformat": 2
},
"nbformat": 4,
"nbformat_minor": 2
diff --git a/translations/en/8-Reinforcement/1-QLearning/README.md b/translations/en/8-Reinforcement/1-QLearning/README.md
index 349fe96f8..e4dbe9482 100644
--- a/translations/en/8-Reinforcement/1-QLearning/README.md
+++ b/translations/en/8-Reinforcement/1-QLearning/README.md
@@ -1,20 +1,268 @@
-## Visualizing the Learned Policy
+# Introduction to Reinforcement Learning and Q-Learning
-After running the learning algorithm, we can visualize the Q-Table to see the learned policy. The arrows (or circles) in each cell will indicate the preferred direction of movement based on the Q-Table values. This visualization helps us understand how the agent has learned to navigate the environment.
+
+> Sketchnote by [Tomomi Imura](https://www.twitter.com/girlie_mac)
-For example, the updated Q-Table might look like this:
+Reinforcement learning involves three important concepts: the agent, some states, and a set of actions per state. By executing an action in a specified state, the agent is given a reward. Again imagine the computer game Super Mario. You are Mario, you are in a game level, standing next to a cliff edge. Above you is a coin. You being Mario, in a game level, at a specific position ... that's your state. Moving one step to the right (an action) will take you over the edge, and that would give you a low numerical score. However, pressing the jump button would let you score a point and you would stay alive. That's a positive outcome and that should award you a positive numerical score.
-
+By using reinforcement learning and a simulator (the game), you can learn how to play the game to maximize the reward which is staying alive and scoring as many points as possible.
-In this visualization:
-- The arrows point in the direction of the action with the highest Q-Table value for each state.
-- The agent is more likely to follow these directions to reach the apple while avoiding the wolf and other obstacles.
+[](https://www.youtube.com/watch?v=lDq_en8RNOo)
-## Testing the Learned Policy
+> 🎥 Click the image above to hear Dmitry discuss Reinforcement Learning
-Once the Q-Table is trained, we can test the learned policy by letting the agent navigate the environment using the Q-Table values. Instead of randomly choosing actions, the agent will now select the action with the highest Q-Table value at each state.
+## [Pre-lecture quiz](https://ff-quizzes.netlify.app/en/ml/)
-Run the following code to test the learned policy: (code block 9)
+## Prerequisites and Setup
+
+In this lesson, we will be experimenting with some code in Python. You should be able to run the Jupyter Notebook code from this lesson, either on your computer or somewhere in the cloud.
+
+You can open [the lesson notebook](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) and walk through this lesson to build.
+
+> **Note:** If you are opening this code from the cloud, you also need to fetch the [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) file, which is used in the notebook code. Add it to the same directory as the notebook.
+
+## Introduction
+
+In this lesson, we will explore the world of **[Peter and the Wolf](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)**, inspired by a musical fairy tale by a Russian composer, [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev). We will use **Reinforcement Learning** to let Peter explore his environment, collect tasty apples and avoid meeting the wolf.
+
+**Reinforcement Learning** (RL) is a learning technique that allows us to learn an optimal behavior of an **agent** in some **environment** by running many experiments. An agent in this environment should have some **goal**, defined by a **reward function**.
+
+## The environment
+
+For simplicity, let's consider Peter's world to be a square board of size `width` x `height`, like this:
+
+
+
+Each cell in this board can either be:
+
+* **ground**, on which Peter and other creatures can walk.
+* **water**, on which you obviously cannot walk.
+* a **tree** or **grass**, a place where you can rest.
+* an **apple**, which represents something Peter would be glad to find in order to feed himself.
+* a **wolf**, which is dangerous and should be avoided.
+
+There is a separate Python module, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), which contains the code to work with this environment. Because this code is not important for understanding our concepts, we will import the module and use it to create the sample board (code block 1):
+
+```python
+from rlboard import *
+
+width, height = 8,8
+m = Board(width,height)
+m.randomize(seed=13)
+m.plot()
+```
+
+This code should print a picture of the environment similar to the one above.
+
+## Actions and policy
+
+In our example, Peter's goal would be able to find an apple, while avoiding the wolf and other obstacles. To do this, he can essentially walk around until he finds an apple.
+
+Therefore, at any position, he can choose between one of the following actions: up, down, left and right.
+
+We will define those actions as a dictionary, and map them to pairs of corresponding coordinate changes. For example, moving right (`R`) would correspond to a pair `(1,0)`. (code block 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()) }
+```
+
+To sum up, the strategy and goal of this scenario are as follows:
+
+- **The strategy**, of our agent (Peter) is defined by a so-called **policy**. A policy is a function that returns the action at any given state. In our case, the state of the problem is represented by the board, including the current position of the player.
+
+- **The goal**, of reinforcement learning is to eventually learn a good policy that will allow us to solve the problem efficiently. However, as a baseline, let's consider the simplest policy called **random walk**.
+
+## Random walk
+
+Let's first solve our problem by implementing a random walk strategy. With random walk, we will randomly choose the next action from the allowed actions, until we reach the apple (code block 3).
+
+1. Implement the random walk with the below code:
+
+ ```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)
+ ```
+
+ The call to `walk` should return the length of the corresponding path, which can vary from one run to another.
+
+1. Run the walk experiment a number of times (say, 100), and print the resulting statistics (code block 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)
+ ```
+
+ Note that the average length of a path is around 30-40 steps, which is quite a lot, given the fact that the average distance to the nearest apple is around 5-6 steps.
+
+ You can also see what Peter's movement looks like during the random walk:
+
+ 
+
+## Reward function
+
+To make our policy more intelligent, we need to understand which moves are "better" than others. To do this, we need to define our goal.
+
+The goal can be defined in terms of a **reward function**, which will return some score value for each state. The higher the number, the better the reward function. (code block 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
+```
+
+An interesting thing about reward functions is that in most cases, *we are only given a substantial reward at the end of the game*. This means that our algorithm should somehow remember "good" steps that lead to a positive reward at the end, and increase their importance. Similarly, all moves that lead to bad results should be discouraged.
+
+## Q-Learning
+
+An algorithm that we will discuss here is called **Q-Learning**. In this algorithm, the policy is defined by a function (or a data structure) called a **Q-Table**. It records the "goodness" of each of the actions in a given state.
+
+It is called a Q-Table because it is often convenient to represent it as a table, or multi-dimensional array. Since our board has dimensions `width` x `height`, we can represent the Q-Table using a numpy array with shape `width` x `height` x `len(actions)`: (code block 6)
+
+```python
+Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions)
+```
+
+Notice that we initialize all the values of the Q-Table with an equal value, in our case - 0.25. This corresponds to the "random walk" policy, because all moves in each state are equally good. We can pass the Q-Table to the `plot` function in order to visualize the table on the board: `m.plot(Q)`.
+
+
+
+In the center of each cell there is an "arrow" that indicates the preferred direction of movement. Since all directions are equal, a dot is displayed.
+
+Now we need to run the simulation, explore our environment, and learn a better distribution of Q-Table values, which will allow us to find the path to the apple much faster.
+
+## Essence of Q-Learning: Bellman Equation
+
+Once we start moving, each action will have a corresponding reward, i.e. we can theoretically select the next action based on the highest immediate reward. However, in most states, the move will not achieve our goal of reaching the apple, and thus we cannot immediately decide which direction is better.
+
+> Remember that it is not the immediate result that matters, but rather the final result, which we will obtain at the end of the simulation.
+
+In order to account for this delayed reward, we need to use the principles of **[dynamic programming](https://en.wikipedia.org/wiki/Dynamic_programming)**, which allow us to think about out problem recursively.
+
+Suppose we are now at the state *s*, and we want to move to the next state *s'*. By doing so, we will receive the immediate reward *r(s,a)*, defined by the reward function, plus some future reward. If we suppose that our Q-Table correctly reflects the "attractiveness" of each action, then at state *s'* we will chose an action *a* that corresponds to maximum value of *Q(s',a')*. Thus, the best possible future reward we could get at state *s* will be defined as `max`a'*Q(s',a')* (maximum here is computed over all possible actions *a'* at state *s'*).
+
+This gives the **Bellman formula** for calculating the value of the Q-Table at state *s*, given action *a*:
+
+
+
+Here γ is the so-called **discount factor** that determines to which extent you should prefer the current reward over the future reward and vice versa.
+
+## Learning Algorithm
+
+Given the equation above, we can now write pseudo-code for our learning algorithm:
+
+* Initialize Q-Table Q with equal numbers for all states and actions
+* Set learning rate α ← 1
+* Repeat simulation many times
+ 1. Start at random position
+ 1. Repeat
+ 1. Select an action *a* at state *s*
+ 2. Execute action by moving to a new state *s'*
+ 3. If we encounter end-of-game condition, or total reward is too small - exit simulation
+ 4. Compute reward *r* at the new state
+ 5. Update Q-Function according to Bellman equation: *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ maxa'Q(s',a'))*
+ 6. *s* ← *s'*
+ 7. Update the total reward and decrease α.
+
+## Exploit vs. explore
+
+In the algorithm above, we did not specify how exactly we should choose an action at step 2.1. If we are choosing the action randomly, we will randomly **explore** the environment, and we are quite likely to die often as well as explore areas where we would not normally go. An alternative approach would be to **exploit** the Q-Table values that we already know, and thus to choose the best action (with higher Q-Table value) at state *s*. This, however, will prevent us from exploring other states, and it's likely we might not find the optimal solution.
+
+Thus, the best approach is to strike a balance between exploration and exploitation. This can be done by choosing the action at state *s* with probabilities proportional to values in the Q-Table. In the beginning, when Q-Table values are all the same, it would correspond to a random selection, but as we learn more about our environment, we would be more likely to follow the optimal route while allowing the agent to choose the unexplored path once in a while.
+
+## Python implementation
+
+We are now ready to implement the learning algorithm. Before we do that, we also need some function that will convert arbitrary numbers in the Q-Table into a vector of probabilities for corresponding actions.
+
+1. Create a function `probs()`:
+
+ ```python
+ def probs(v,eps=1e-4):
+ v = v-v.min()+eps
+ v = v/v.sum()
+ return v
+ ```
+
+ We add a few `eps` to the original vector in order to avoid division by 0 in the initial case, when all components of the vector are identical.
+
+Run them learning algorithm through 5000 experiments, also called **epochs**: (code block 8)
+```python
+ for epoch in range(5000):
+
+ # Pick initial point
+ m.random_start()
+
+ # Start travelling
+ n=0
+ cum_reward = 0
+ while True:
+ x,y = m.human
+ v = probs(Q[x,y])
+ a = random.choices(list(actions),weights=v)[0]
+ dpos = actions[a]
+ m.move(dpos,check_correctness=False) # we allow player to move outside the board, which terminates episode
+ r = reward(m)
+ cum_reward += r
+ if r==end_reward or cum_reward < -1000:
+ lpath.append(n)
+ break
+ alpha = np.exp(-n / 10e5)
+ gamma = 0.5
+ ai = action_idx[a]
+ Q[x,y,ai] = (1 - alpha) * Q[x,y,ai] + alpha * (r + gamma * Q[x+dpos[0], y+dpos[1]].max())
+ n+=1
+```
+
+After executing this algorithm, the Q-Table should be updated with values that define the attractiveness of different actions at each step. We can try to visualize the Q-Table by plotting a vector at each cell that will point in the desired direction of movement. For simplicity, we draw a small circle instead of an arrow head.
+
+
+
+## Checking the policy
+
+Since the Q-Table lists the "attractiveness" of each action at each state, it is quite easy to use it to define the efficient navigation in our world. In the simplest case, we can select the action corresponding to the highest Q-Table value: (code block 9)
```python
def qpolicy_strict(m):
@@ -26,57 +274,55 @@ def qpolicy_strict(m):
walk(m,qpolicy_strict)
```
-This code will simulate the agent's movement based on the learned policy. You can observe how efficiently the agent reaches the apple compared to the random walk strategy.
-## Results and Observations
+> If you try the code above several times, you may notice that sometimes it "hangs", and you need to press the STOP button in the notebook to interrupt it. This happens because there could be situations when two states "point" to each other in terms of optimal Q-Value, in which case the agents ends up moving between those states indefinitely.
-After training the agent using Q-Learning:
-- The agent should be able to reach the apple in significantly fewer steps compared to the random walk strategy.
-- The learned policy will guide the agent to avoid the wolf and other obstacles while maximizing the reward.
+## 🚀Challenge
-You can also visualize the agent's movement during the test run:
+> **Task 1:** Modify the `walk` function to limit the maximum length of path by a certain number of steps (say, 100), and watch the code above return this value from time to time.
-
+> **Task 2:** Modify the `walk` function so that it does not go back to the places where it has already been previously. This will prevent `walk` from looping, however, the agent can still end up being "trapped" in a location from which it is unable to escape.
-Notice how the agent's movements are more purposeful and efficient compared to the random walk.
+## Navigation
-## Summary
+A better navigation policy would be the one that we used during training, which combines exploitation and exploration. In this policy, we will select each action with a certain probability, proportional to the values in the Q-Table. This strategy may still result in the agent returning back to a position it has already explored, but, as you can see from the code below, it results in a very short average path to the desired location (remember that `print_statistics` runs the simulation 100 times): (code block 10)
-In this lesson, we explored the basics of reinforcement learning and implemented the Q-Learning algorithm to train an agent to navigate an environment. Here's what we covered:
-- The concepts of states, actions, rewards, and policies in reinforcement learning.
-- How to define a reward function to guide the agent's learning process.
-- The Bellman equation and its role in updating the Q-Table.
-- The balance between exploration and exploitation during training.
-- How to implement and visualize the Q-Learning algorithm in Python.
+```python
+def qpolicy(m):
+ x,y = m.human
+ v = probs(Q[x,y])
+ a = random.choices(list(actions),weights=v)[0]
+ return a
-By the end of this lesson, you should have a solid understanding of how reinforcement learning works and how Q-Learning can be used to solve problems in a simulated environment.
+print_statistics(qpolicy)
+```
-## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ml/)
+After running this code, you should get a much smaller average path length than before, in the range of 3-6.
-## Assignment
+## Investigating the learning process
-1. Modify the reward function to include penalties for stepping into water or grass. How does this affect the agent's learning process and the resulting policy?
-2. Experiment with different values of the discount factor (γ) and learning rate (α). How do these parameters influence the agent's behavior and the speed of learning?
-3. Create a new environment with a different layout (e.g., more obstacles, multiple apples, or multiple wolves). Train the agent in this new environment and observe how it adapts.
+As we have mentioned, the learning process is a balance between exploration and exploration of gained knowledge about the structure of problem space. We have seen that the results of learning (the ability to help an agent to find a short path to the goal) has improved, but it is also interesting to observe how the average path length behaves during the learning process:
-By completing these assignments, you'll gain a deeper understanding of how to fine-tune reinforcement learning algorithms and apply them to various scenarios.
+
The learnings can be summarized as:
-- **Average path length increases**. Initially, the average path length increases. This is likely because, when we know nothing about the environment, the agent is prone to getting stuck in unfavorable states, such as water or encountering a wolf. As the agent gathers more knowledge and begins to use it, it can explore the environment for longer periods, but it still doesn't have a clear understanding of where the apples are located.
+- **Average path length increases**. What we see here is that at first, the average path length increases. This is probably due to the fact that when we know nothing about the environment, we are likely to get trapped in bad states, water or wolf. As we learn more and start using this knowledge, we can explore the environment for longer, but we still do not know where the apples are very well.
-- **Path length decreases as we learn more**. Once the agent has learned enough, it becomes easier to achieve the goal, and the path length starts to decrease. However, since the agent is still exploring, it occasionally deviates from the optimal path to investigate new possibilities, which can make the path longer than necessary.
+- **Path length decrease, as we learn more**. Once we learn enough, it becomes easier for the agent to achieve the goal, and the path length starts to decrease. However, we are still open to exploration, so we often diverge away from the best path, and explore new options, making the path longer than optimal.
-- **Abrupt length increase**. Another observation from the graph is that, at some point, the path length increases abruptly. This highlights the stochastic nature of the process, where the Q-Table coefficients can be "spoiled" by being overwritten with new values. Ideally, this should be minimized by reducing the learning rate (e.g., toward the end of training, adjusting Q-Table values by only small amounts).
+- **Length increase abruptly**. What we also observe on this graph is that at some point, the length increased abruptly. This indicates the stochastic nature of the process, and that we can at some point "spoil" the Q-Table coefficients by overwriting them with new values. This ideally should be minimized by decreasing learning rate (for example, towards the end of training, we only adjust Q-Table values by a small value).
-Overall, it’s important to note that the success and quality of the learning process depend heavily on parameters such as the learning rate, learning rate decay, and discount factor. These are often referred to as **hyperparameters**, to distinguish them from **parameters**, which are optimized during training (e.g., Q-Table coefficients). The process of finding the best hyperparameter values is called **hyperparameter optimization**, which is a topic worthy of its own discussion.
+Overall, it is important to remember that the success and quality of the learning process significantly depends on parameters, such as learning rate, learning rate decay, and discount factor. Those are often called **hyperparameters**, to distinguish them from **parameters**, which we optimize during training (for example, Q-Table coefficients). The process of finding the best hyperparameter values is called **hyperparameter optimization**, and it deserves a separate topic.
## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ml/)
-## Assignment
+## Assignment
[A More Realistic World](assignment.md)
---
-**Disclaimer**:
-This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we strive for accuracy, please note that automated translations may contain errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is recommended. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
+
+**Disclaimer**:
+This document has been translated using AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation.
+
\ No newline at end of file
diff --git a/translations/en/8-Reinforcement/2-Gym/README.md b/translations/en/8-Reinforcement/2-Gym/README.md
index 540d19807..5f36823fd 100644
--- a/translations/en/8-Reinforcement/2-Gym/README.md
+++ b/translations/en/8-Reinforcement/2-Gym/README.md
@@ -1,14 +1,34 @@
+# CartPole Skating
+
+The problem we have been solving in the previous lesson might seem like a toy problem, not really applicable for real life scenarios. This is not the case, because many real world problems also share this scenario - including playing Chess or Go. They are similar, because we also have a board with given rules and a **discrete state**.
+
+## [Pre-lecture quiz](https://ff-quizzes.netlify.app/en/ml/)
+
+## Introduction
+
+In this lesson we will apply the same principles of Q-Learning to a problem with **continuous state**, i.e. a state that is given by one or more real numbers. We will deal with the following problem:
+
+> **Problem**: If Peter wants to escape from the wolf, he needs to be able to move faster. We will see how Peter can learn to skate, in particular, to keep balance, using Q-Learning.
+
+
+
+> Peter and his friends get creative to escape the wolf! Image by [Jen Looper](https://twitter.com/jenlooper)
+
+We will use a simplified version of balancing known as a **CartPole** problem. In the cartpole world, we have a horizontal slider that can move left or right, and the goal is to balance a vertical pole on top of the slider.
+
+
+
## Prerequisites
-In this lesson, we will use a library called **OpenAI Gym** to simulate different **environments**. You can run the code for this lesson locally (e.g., using Visual Studio Code), in which case the simulation will open in a new window. If you're running the code online, you may need to make some adjustments, as described [here](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7).
+In this lesson, we will be using a library called **OpenAI Gym** to simulate different **environments**. You can run this lesson's code locally (eg. from Visual Studio Code), in which case the simulation will open in a new window. When running the code online, you may need to make some tweaks to the code, as described [here](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7).
## OpenAI Gym
-In the previous lesson, the rules of the game and the state were defined by the `Board` class that we created ourselves. Here, we will use a specialized **simulation environment** to simulate the physics of the balancing pole. One of the most popular simulation environments for training reinforcement learning algorithms is called [Gym](https://gym.openai.com/), maintained by [OpenAI](https://openai.com/). Using Gym, we can create various **environments**, ranging from cartpole simulations to Atari games.
+In the previous lesson, the rules of the game and the state were given by the `Board` class which we defined ourselves. Here we will use a special **simulation environment**, which will simulate the physics behind the balancing pole. One of the most popular simulation environments for training reinforcement learning algorithms is called a [Gym](https://gym.openai.com/), which is maintained by [OpenAI](https://openai.com/). By using this gym we can create difference **environments** from a cartpole simulation to Atari games.
-> **Note**: You can explore other environments available in OpenAI Gym [here](https://gym.openai.com/envs/#classic_control).
+> **Note**: You can see other environments available from OpenAI Gym [here](https://gym.openai.com/envs/#classic_control).
-First, let's install Gym and import the required libraries (code block 1):
+First, let's install the gym and import required libraries (code block 1):
```python
import sys
@@ -20,15 +40,15 @@ import numpy as np
import random
```
-## Exercise - Initialize a CartPole Environment
+## Exercise - initialize a cartpole environment
-To work on the cartpole balancing problem, we need to initialize the corresponding environment. Each environment is associated with:
+To work with a cartpole balancing problem, we need to initialize corresponding environment. Each environment is associated with an:
-- **Observation space**, which defines the structure of the information we receive from the environment. For the cartpole problem, we receive the position of the pole, velocity, and other values.
+- **Observation space** that defines the structure of information that we receive from the environment. For cartpole problem, we receive position of the pole, velocity and some other values.
-- **Action space**, which defines the possible actions. In this case, the action space is discrete and consists of two actions: **left** and **right**. (code block 2)
+- **Action space** that defines possible actions. In our case the action space is discrete, and consists of two actions - **left** and **right**. (code block 2)
-1. To initialize the environment, type the following code:
+1. To initialize, type the following code:
```python
env = gym.make("CartPole-v1")
@@ -37,11 +57,11 @@ To work on the cartpole balancing problem, we need to initialize the correspondi
print(env.action_space.sample())
```
-To understand how the environment works, let's run a short simulation for 100 steps. At each step, we provide an action to be taken—here, we randomly select an action from `action_space`.
+To see how the environment works, let's run a short simulation for 100 steps. At each step, we provide one of the actions to be taken - in this simulation we just randomly select an action from `action_space`.
-1. Run the code below and observe the results.
+1. Run the code below and see what it leads to.
- ✅ It's recommended to run this code on a local Python installation! (code block 3)
+ ✅ Remember that it is preferred to run this code on local Python installation! (code block 3)
```python
env.reset()
@@ -52,11 +72,11 @@ To understand how the environment works, let's run a short simulation for 100 st
env.close()
```
- You should see something similar to this image:
+ You should be seeing something similar to this image:

-1. During the simulation, we need to gather observations to decide on the next action. The `step` function returns the current observations, a reward value, and a flag (`done`) indicating whether the simulation should continue or stop: (code block 4)
+1. During simulation, we need to get observations in order to decide how to act. In fact, the step function returns current observations, a reward function, and the done flag that indicates whether it makes sense to continue the simulation or not: (code block 4)
```python
env.reset()
@@ -69,7 +89,7 @@ To understand how the environment works, let's run a short simulation for 100 st
env.close()
```
- You will see output similar to this in the notebook:
+ You will end up seeing something like this in the notebook output:
```text
[ 0.03403272 -0.24301182 0.02669811 0.2895829 ] -> 1.0
@@ -82,36 +102,36 @@ To understand how the environment works, let's run a short simulation for 100 st
[ 0.17617249 0.35602306 -0.21873684 -0.90998894] -> 1.0
```
- The observation vector returned at each step contains the following values:
- - Position of the cart
- - Velocity of the cart
- - Angle of the pole
- - Rotation rate of the pole
+ The observation vector that is returned at each step of the simulation contains the following values:
+ - Position of cart
+ - Velocity of cart
+ - Angle of pole
+ - Rotation rate of pole
-1. Retrieve the minimum and maximum values of these numbers: (code block 5)
+1. Get min and max value of those numbers: (code block 5)
```python
print(env.observation_space.low)
print(env.observation_space.high)
```
- You may also notice that the reward value at each simulation step is always 1. This is because the goal is to survive as long as possible, i.e., to keep the pole reasonably vertical for the longest time.
-
- ✅ The CartPole simulation is considered solved if we achieve an average reward of 195 over 100 consecutive trials.
+ You may also notice that reward value on each simulation step is always 1. This is because our goal is to survive as long as possible, i.e. keep the pole to a reasonably vertical position for the longest period of time.
-## State Discretization
+ ✅ In fact, the CartPole simulation is considered solved if we manage to get the average reward of 195 over 100 consecutive trials.
-In Q-Learning, we need to build a Q-Table that defines the actions for each state. To do this, the state must be **discrete**, meaning it should consist of a finite number of discrete values. Therefore, we need to **discretize** our observations, mapping them to a finite set of states.
+## State discretization
-There are a few ways to achieve this:
+In Q-Learning, we need to build Q-Table that defines what to do at each state. To be able to do this, we need state to be **discrete**, more precisely, it should contain finite number of discrete values. Thus, we need somehow to **discretize** our observations, mapping them to a finite set of states.
-- **Divide into bins**: If we know the range of a value, we can divide it into a number of **bins** and replace the value with the bin number it belongs to. This can be done using the numpy [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html) method. This approach gives precise control over the state size, as it depends on the number of bins chosen for discretization.
+There are a few ways we can do this:
-✅ Alternatively, we can use linear interpolation to map values to a finite interval (e.g., from -20 to 20) and then convert them to integers by rounding. This approach offers less control over the state size, especially if the exact ranges of input values are unknown. For example, in our case, 2 out of 4 values lack upper/lower bounds, which could result in an infinite number of states.
+- **Divide into bins**. If we know the interval of a certain value, we can divide this interval into a number of **bins**, and then replace the value by the bin number that it belongs to. This can be done using the numpy [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html) method. In this case, we will precisely know the state size, because it will depend on the number of bins we select for digitalization.
+
+✅ We can use linear interpolation to bring values to some finite interval (say, from -20 to 20), and then convert numbers to integers by rounding them. This gives us a bit less control on the size of the state, especially if we do not know the exact ranges of input values. For example, in our case 2 out of 4 values do not have upper/lower bounds on their values, which may result in the infinite number of states.
-In this example, we'll use the second approach. As you'll notice later, despite undefined upper/lower bounds, these values rarely exceed certain finite intervals, making states with extreme values very rare.
+In our example, we will go with the second approach. As you may notice later, despite undefined upper/lower bounds, those value rarely take values outside of certain finite intervals, thus those states with extreme values will be very rare.
-1. Here's a function that takes the observation from our model and produces a tuple of 4 integer values: (code block 6)
+1. Here is the function that will take the observation from our model and produce a tuple of 4 integer values: (code block 6)
```python
def discretize(x):
@@ -134,9 +154,9 @@ In this example, we'll use the second approach. As you'll notice later, despite
return tuple(np.digitize(x[i],bins[i]) for i in range(4))
```
-1. Now, run a short simulation and observe the discrete environment values. Feel free to try both `discretize` and `discretize_bins` to see if there's a difference.
+1. Let's now run a short simulation and observe those discrete environment values. Feel free to try both `discretize` and `discretize_bins` and see if there is a difference.
- ✅ `discretize_bins` returns the bin number, which is 0-based. For input values around 0, it returns the middle bin number (10). In `discretize`, we didn't constrain the output range, allowing negative values, so 0 corresponds directly to 0. (code block 8)
+ ✅ discretize_bins returns the bin number, which is 0-based. Thus for values of input variable around 0 it returns the number from the middle of the interval (10). In discretize, we did not care about the range of output values, allowing them to be negative, thus the state values are not shifted, and 0 corresponds to 0. (code block 8)
```python
env.reset()
@@ -150,15 +170,15 @@ In this example, we'll use the second approach. As you'll notice later, despite
env.close()
```
- ✅ Uncomment the line starting with `env.render` if you want to visualize the environment's execution. Otherwise, you can run it in the background for faster execution. We'll use this "invisible" execution during the Q-Learning process.
+ ✅ Uncomment the line starting with env.render if you want to see how the environment executes. Otherwise you can execute it in the background, which is faster. We will use this "invisible" execution during our Q-Learning process.
-## The Q-Table Structure
+## The Q-Table structure
-In the previous lesson, the state was a simple pair of numbers ranging from 0 to 8, making it convenient to represent the Q-Table as a numpy tensor with a shape of 8x8x2. If we use bin discretization, the size of our state vector is also known, so we can use a similar approach and represent the state as an array with a shape of 20x20x10x10x2 (where 2 corresponds to the action space dimension, and the first dimensions represent the number of bins chosen for each parameter in the observation space).
+In our previous lesson, the state was a simple pair of numbers from 0 to 8, and thus it was convenient to represent Q-Table by a numpy tensor with a shape of 8x8x2. If we use bins discretization, the size of our state vector is also known, so we can use the same approach and represent state by an array of shape 20x20x10x10x2 (here 2 is the dimension of action space, and first dimensions correspond to the number of bins we have selected to use for each of the parameters in observation space).
-However, sometimes the precise dimensions of the observation space are unknown. In the case of the `discretize` function, we can't guarantee that the state will remain within certain limits, as some original values are unbounded. Therefore, we'll use a slightly different approach and represent the Q-Table as a dictionary.
+However, sometimes precise dimensions of the observation space are not known. In case of the `discretize` function, we may never be sure that our state stays within certain limits, because some of the original values are not bound. Thus, we will use a slightly different approach and represent Q-Table by a dictionary.
-1. Use the pair *(state, action)* as the dictionary key, with the corresponding Q-Table entry value as the value. (code block 9)
+1. Use the pair *(state,action)* as the dictionary key, and the value would correspond to Q-Table entry value. (code block 9)
```python
Q = {}
@@ -168,13 +188,13 @@ However, sometimes the precise dimensions of the observation space are unknown.
return [Q.get((state,a),0) for a in actions]
```
- Here, we also define a function `qvalues()` that returns a list of Q-Table values for a given state corresponding to all possible actions. If the entry isn't present in the Q-Table, it defaults to 0.
+ Here we also define a function `qvalues()`, which returns a list of Q-Table values for a given state that corresponds to all possible actions. If the entry is not present in the Q-Table, we will return 0 as the default.
-## Let's Start Q-Learning
+## Let's start Q-Learning
-Now it's time to teach Peter how to balance!
+Now we are ready to teach Peter to balance!
-1. First, set some hyperparameters: (code block 10)
+1. First, let's set some hyperparameters: (code block 10)
```python
# hyperparameters
@@ -183,22 +203,23 @@ Now it's time to teach Peter how to balance!
epsilon = 0.90
```
- Here:
- - `alpha` is the **learning rate**, which determines how much we adjust the current Q-Table values at each step. In the previous lesson, we started with 1 and gradually decreased `alpha` during training. In this example, we'll keep it constant for simplicity, but you can experiment with adjusting `alpha` later.
- - `gamma` is the **discount factor**, which indicates how much we prioritize future rewards over immediate rewards.
- - `epsilon` is the **exploration/exploitation factor**, which decides whether to favor exploration or exploitation. In our algorithm, we'll select the next action based on Q-Table values in `epsilon` percent of cases, and choose a random action in the remaining cases. This helps explore areas of the search space that haven't been visited yet.
+ Here, `alpha` is the **learning rate** that defines to which extent we should adjust the current values of Q-Table at each step. In the previous lesson we started with 1, and then decreased `alpha` to lower values during training. In this example we will keep it constant just for simplicity, and you can experiment with adjusting `alpha` values later.
+
+ `gamma` is the **discount factor** that shows to which extent we should prioritize future reward over current reward.
- ✅ In terms of balancing, choosing a random action (exploration) acts like a random push in the wrong direction, forcing the pole to learn how to recover balance from these "mistakes."
+ `epsilon` is the **exploration/exploitation factor** that determines whether we should prefer exploration to exploitation or vice versa. In our algorithm, we will in `epsilon` percent of the cases select the next action according to Q-Table values, and in the remaining number of cases we will execute a random action. This will allow us to explore areas of the search space that we have never seen before.
-### Improve the Algorithm
+ ✅ In terms of balancing - choosing random action (exploration) would act as a random punch in the wrong direction, and the pole would have to learn how to recover the balance from those "mistakes"
-We can make two improvements to the algorithm from the previous lesson:
+### Improve the algorithm
-- **Calculate average cumulative reward** over multiple simulations. We'll print progress every 5000 iterations and average the cumulative reward over that period. If we achieve more than 195 points, we can consider the problem solved, exceeding the required quality.
+We can also make two improvements to our algorithm from the previous lesson:
+
+- **Calculate average cumulative reward**, over a number of simulations. We will print the progress each 5000 iterations, and we will average out our cumulative reward over that period of time. It means that if we get more than 195 point - we can consider the problem solved, with even higher quality than required.
-- **Track maximum average cumulative reward**, `Qmax`, and store the Q-Table corresponding to that result. During training, you'll notice that the average cumulative reward sometimes drops, so we want to preserve the Q-Table values corresponding to the best model observed.
+- **Calculate maximum average cumulative result**, `Qmax`, and we will store the Q-Table corresponding to that result. When you run the training you will notice that sometimes the average cumulative result starts to drop, and we want to keep the values of Q-Table that correspond to the best model observed during training.
-1. Collect all cumulative rewards from each simulation in the `rewards` vector for later plotting. (code block 11)
+1. Collect all cumulative rewards at each simulation at `rewards` vector for further plotting. (code block 11)
```python
def probs(v,eps=1e-4):
@@ -217,11 +238,11 @@ We can make two improvements to the algorithm from the previous lesson:
while not done:
s = discretize(obs)
if random.random() **Task 1**: Play with hyperparameter values and see if you can achieve higher cumulative reward. Are you getting above 195?
-- **Learning rate (`alpha`)**: Start with values close to 1 and gradually decrease it. Over time, as the Q-Table values become more reliable, adjustments should be smaller to avoid overwriting good values completely.
-- **Exploration factor (`epsilon`)**: Gradually increase `epsilon` to explore less and exploit more. It might be better to start with a lower `epsilon` value and increase it to nearly 1 over time.
-> **Task 1**: Experiment with the hyperparameter values and see if you can achieve a higher cumulative reward. Are you reaching above 195?
-> **Task 2**: To formally solve the problem, you need to achieve an average reward of 195 across 100 consecutive runs. Track this during training to ensure the problem is officially solved!
+> **Task 2**: To formally solve the problem, you need to get 195 average reward across 100 consecutive runs. Measure that during training and make sure that you have formally solved the problem!
## Seeing the result in action
-It’s fascinating to observe how the trained model performs. Let’s run the simulation and use the same action selection strategy as during training, sampling based on the probability distribution in the Q-Table: (code block 13)
+It would be interesting to actually see how the trained model behaves. Let's run the simulation and follow the same action selection strategy as during training, sampling according to the probability distribution in Q-Table: (code block 13)
```python
obs = env.reset()
@@ -294,7 +318,7 @@ while not done:
env.close()
```
-You should see something similar to this:
+You should see something like this:

@@ -302,9 +326,9 @@ You should see something similar to this:
## 🚀Challenge
-> **Task 3**: In this example, we used the final version of the Q-Table, which might not be the optimal one. Remember, we saved the best-performing Q-Table in the `Qbest` variable! Try running the same example using the best-performing Q-Table by copying `Qbest` into `Q` and observe if there’s any noticeable difference.
+> **Task 3**: Here, we were using the final copy of Q-Table, which may not be the best one. Remember that we have stored the best-performing Q-Table into `Qbest` variable! Try the same example with the best-performing Q-Table by copying `Qbest` over to `Q` and see if you notice the difference.
-> **Task 4**: In this example, we didn’t always select the best action at each step but instead sampled actions based on the corresponding probability distribution. Would it be better to always choose the best action—the one with the highest Q-Table value? This can be achieved using the `np.argmax` function to identify the action number with the highest Q-Table value. Implement this strategy and check if it improves the balancing performance.
+> **Task 4**: Here we were not selecting the best action on each step, but rather sampling with corresponding probability distribution. Would it make more sense to always select the best action, with the highest Q-Table value? This can be done by using `np.argmax` function to find out the action number corresponding to higher Q-Table value. Implement this strategy and see if it improves the balancing.
## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ml/)
@@ -313,11 +337,13 @@ You should see something similar to this:
## Conclusion
-We’ve now learned how to train agents to achieve strong results simply by providing them with a reward function that defines the desired state of the game and allowing them to intelligently explore the search space. We successfully applied the Q-Learning algorithm in both discrete and continuous environments, though with discrete actions.
+We have now learned how to train agents to achieve good results just by providing them a reward function that defines the desired state of the game, and by giving them an opportunity to intelligently explore the search space. We have successfully applied the Q-Learning algorithm in the cases of discrete and continuous environments, but with discrete actions.
-It’s also crucial to study scenarios where the action space is continuous and the observation space is more complex, such as an image from an Atari game screen. In such cases, more advanced machine learning techniques, like neural networks, are often required to achieve good results. These advanced topics will be covered in our upcoming, more advanced AI course.
+It's important to also study situations where action state is also continuous, and when observation space is much more complex, such as the image from the Atari game screen. In those problems we often need to use more powerful machine learning techniques, such as neural networks, in order to achieve good results. Those more advanced topics are the subject of our forthcoming more advanced AI course.
---
-**Disclaimer**:
-This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we strive for accuracy, please note that automated translations may contain errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is recommended. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
+
+**Disclaimer**:
+This document has been translated using AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation.
+
\ No newline at end of file
diff --git a/translations/en/sketchnotes/LICENSE.md b/translations/en/sketchnotes/LICENSE.md
index 135f9fbbe..98eed3c13 100644
--- a/translations/en/sketchnotes/LICENSE.md
+++ b/translations/en/sketchnotes/LICENSE.md
@@ -1,113 +1,436 @@
-Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material; and
+Attribution-ShareAlike 4.0 International
+
+=======================================================================
+
+Creative Commons Corporation ("Creative Commons") is not a law firm and
+does not provide legal services or legal advice. Distribution of
+Creative Commons public licenses does not create a lawyer-client or
+other relationship. Creative Commons makes its licenses and related
+information available on an "as-is" basis. Creative Commons gives no
+warranties regarding its licenses, any material licensed under their
+terms and conditions, or any related information. Creative Commons
+disclaims all liability for damages resulting from their use to the
+fullest extent possible.
+
+Using Creative Commons Public Licenses
+
+Creative Commons public licenses provide a standard set of terms and
+conditions that creators and other rights holders may use to share
+original works of authorship and other material subject to copyright
+and certain other rights specified in the public license below. The
+following considerations are for informational purposes only, are not
+exhaustive, and do not form part of our licenses.
+
+ Considerations for licensors: Our public licenses are
+ intended for use by those authorized to give the public
+ permission to use material in ways otherwise restricted by
+ copyright and certain other rights. Our licenses are
+ irrevocable. Licensors should read and understand the terms
+ and conditions of the license they choose before applying it.
+ Licensors should also secure all rights necessary before
+ applying our licenses so that the public can reuse the
+ material as expected. Licensors should clearly mark any
+ material not subject to the license. This includes other CC-
+ licensed material, or material used under an exception or
+ limitation to copyright. More considerations for licensors:
+ wiki.creativecommons.org/Considerations_for_licensors
+
+ Considerations for the public: By using one of our public
+ licenses, a licensor grants the public permission to use the
+ licensed material under specified terms and conditions. If
+ the licensor's permission is not necessary for any reason--for
+ example, because of any applicable exception or limitation to
+ copyright--then that use is not regulated by the license. Our
+ licenses grant only permissions under copyright and certain
+ other rights that a licensor has authority to grant. Use of
+ the licensed material may still be restricted for other
+ reasons, including because others have copyright or other
+ rights in the material. A licensor may make special requests,
+ such as asking that all changes be marked or described.
+ Although not required by our licenses, you are encouraged to
+ respect those requests where reasonable. More_considerations
+ for the public:
+ wiki.creativecommons.org/Considerations_for_licensees
+
+=======================================================================
+
+Creative Commons Attribution-ShareAlike 4.0 International Public
+License
+
+By exercising the Licensed Rights (defined below), You accept and agree
+to be bound by the terms and conditions of this Creative Commons
+Attribution-ShareAlike 4.0 International Public License ("Public
+License"). To the extent this Public License may be interpreted as a
+contract, You are granted the Licensed Rights in consideration of Your
+acceptance of these terms and conditions, and the Licensor grants You
+such rights in consideration of benefits the Licensor receives from
+making the Licensed Material available under these terms and
+conditions.
+
+
+Section 1 -- Definitions.
+
+ a. Adapted Material means material subject to Copyright and Similar
+ Rights that is derived from or based upon the Licensed Material
+ and in which the Licensed Material is translated, altered,
+ arranged, transformed, or otherwise modified in a manner requiring
+ permission under the Copyright and Similar Rights held by the
+ Licensor. For purposes of this Public License, where the Licensed
+ Material is a musical work, performance, or sound recording,
+ Adapted Material is always produced where the Licensed Material is
+ synched in timed relation with a moving image.
+
+ b. Adapter's License means the license You apply to Your Copyright
+ and Similar Rights in Your contributions to Adapted Material in
+ accordance with the terms and conditions of this Public License.
+
+ c. BY-SA Compatible License means a license listed at
+ creativecommons.org/compatiblelicenses, approved by Creative
+ Commons as essentially the equivalent of this Public License.
+
+ d. Copyright and Similar Rights means copyright and/or similar rights
+ closely related to copyright including, without limitation,
+ performance, broadcast, sound recording, and Sui Generis Database
+ Rights, without regard to how the rights are labeled or
+ categorized. For purposes of this Public License, the rights
+ specified in Section 2(b)(1)-(2) are not Copyright and Similar
+ Rights.
+
+ e. Effective Technological Measures means those measures that, in the
+ absence of proper authority, may not be circumvented under laws
+ fulfilling obligations under Article 11 of the WIPO Copyright
+ Treaty adopted on December 20, 1996, and/or similar international
+ agreements.
+
+ f. Exceptions and Limitations means fair use, fair dealing, and/or
+ any other exception or limitation to Copyright and Similar Rights
+ that applies to Your use of the Licensed Material.
+
+ g. License Elements means the license attributes listed in the name
+ of a Creative Commons Public License. The License Elements of this
+ Public License are Attribution and ShareAlike.
+
+ h. Licensed Material means the artistic or literary work, database,
+ or other material to which the Licensor applied this Public
+ License.
+
+ i. Licensed Rights means the rights granted to You subject to the
+ terms and conditions of this Public License, which are limited to
+ all Copyright and Similar Rights that apply to Your use of the
+ Licensed Material and that the Licensor has authority to license.
+
+ j. Licensor means the individual(s) or entity(ies) granting rights
+ under this Public License.
+
+ k. Share means to provide material to the public by any means or
+ process that requires permission under the Licensed Rights, such
+ as reproduction, public display, public performance, distribution,
+ dissemination, communication, or importation, and to make material
+ available to the public including in ways that members of the
+ public may access the material from a place and at a time
+ individually chosen by them.
+
+ l. Sui Generis Database Rights means rights other than copyright
+ resulting from Directive 96/9/EC of the European Parliament and of
+ the Council of 11 March 1996 on the legal protection of databases,
+ as amended and/or succeeded, as well as other essentially
+ equivalent rights anywhere in the world.
+
+ m. You means the individual or entity exercising the Licensed Rights
+ under this Public License. Your has a corresponding meaning.
+
+
+Section 2 -- Scope.
+
+
+ a. License grant.
+
+ 1. Subject to the terms and conditions of this Public License,
+ the Licensor hereby grants You a worldwide, royalty-free,
+ non-sublicensable, non-exclusive, irrevocable license to
+ exercise the Licensed Rights in the Licensed Material to:
+
+ a. reproduce and Share the Licensed Material, in whole or
+ in part; and
+
+ b. produce, reproduce, and Share Adapted Material.
+
+ 2. Exceptions and Limitations. For the avoidance of doubt, where
+ Exceptions and Limitations apply to Your use, this Public
+ License does not apply, and You do not need to comply with
+ its terms and conditions.
+
+ 3. Term. The term of this Public License is specified in Section
+ 6(a).
+
+ 4. Media and formats; technical modifications allowed. The
+ Licensor authorizes You to exercise the Licensed Rights in
+ all media and formats whether now known or hereafter created,
+ and to make technical modifications necessary to do so. The
+ Licensor waives and/or agrees not to assert any right or
+ authority to forbid You from making technical modifications
+ necessary to exercise the Licensed Rights, including
+ technical modifications necessary to circumvent Effective
+ Technological Measures. For purposes of this Public License,
+ simply making modifications authorized by this Section 2(a)
+ (4) never produces Adapted Material.
+
+ 5. Downstream recipients.
+
+ a. Offer from the Licensor -- Licensed Material. Every
+ recipient of the Licensed Material automatically
+ receives an offer from the Licensor to exercise the
+ Licensed Rights under the terms and conditions of this
+ Public License.
+
+ b. Additional offer from the Licensor -- Adapted Material.
+ Every recipient of Adapted Material from You
+ automatically receives an offer from the Licensor to
+ exercise the Licensed Rights in the Adapted Material
+ under the conditions of the Adapter's License You apply.
+
+ c. No downstream restrictions. You may not offer or impose
+ any additional or different terms or conditions on, or
+ apply any Effective Technological Measures to, the
+ Licensed Material if doing so restricts exercise of the
+ Licensed Rights by any recipient of the Licensed
+ Material.
- c. You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database.
+ 6. No endorsement. Nothing in this Public License constitutes or
+ may be construed as permission to assert or imply that You
+ are, or that Your use of the Licensed Material is, connected
+ with, or sponsored, endorsed, or granted official status by,
+ the Licensor or others designated to receive attribution as
+ provided in Section 3(a)(1)(A)(i).
-For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights.
+ b. Other rights.
+ 1. Moral rights, such as the right of integrity, are not
+ licensed under this Public License, nor are publicity,
+ privacy, and/or other similar personality rights; however, to
+ the extent possible, the Licensor waives and/or agrees not to
+ assert any such rights held by the Licensor to the limited
+ extent necessary to allow You to exercise the Licensed
+ Rights, but not otherwise.
-Section 5 -- Disclaimer of Warranties and Limitation of Liability.
+ 2. Patent and trademark rights are not licensed under this
+ Public License.
- a. Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation, warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not discoverable.
+ 3. To the extent possible, the Licensor waives any right to
+ collect royalties from You for the exercise of the Licensed
+ Rights, whether directly or through a collecting society
+ under any voluntary or waivable statutory or compulsory
+ licensing scheme. In all other cases the Licensor expressly
+ reserves any right to collect such royalties.
- b. To the extent possible, in no event will the Licensor be liable to You on any legal theory (including, without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential, punitive, exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use of the Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs, expenses, or damages.
- c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability.
+Section 3 -- License Conditions.
+Your exercise of the Licensed Rights is expressly made subject to the
+following conditions.
-Section 6 -- Term and Termination.
+ a. Attribution.
- a. This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, Your rights under this Public License terminate automatically.
+ 1. If You Share the Licensed Material (including in modified
+ form), You must:
- b. Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates:
+ a. retain the following if it is supplied by the Licensor
+ with the Licensed Material:
- 1. automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or
+ i. identification of the creator(s) of the Licensed
+ Material and any others designated to receive
+ attribution, in any reasonable manner requested by
+ the Licensor (including by pseudonym if
+ designated);
- 2. upon express reinstatement by the Licensor.
+ ii. a copyright notice;
- c. For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License.
+ iii. a notice that refers to this Public License;
- d. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License.
+ iv. a notice that refers to the disclaimer of
+ warranties;
- e. Sections 1, 5, 6, 7, and 8 survive termination of this Public License.
+ v. a URI or hyperlink to the Licensed Material to the
+ extent reasonably practicable;
+ b. indicate if You modified the Licensed Material and
+ retain an indication of any previous modifications; and
+
+ c. indicate the Licensed Material is licensed under this
+ Public License, and include the text of, or the URI or
+ hyperlink to, this Public License.
-Section 7 -- Other Terms and Conditions.
+ 2. You may satisfy the conditions in Section 3(a)(1) in any
+ reasonable manner based on the medium, means, and context in
+ which You Share the Licensed Material. For example, it may be
+ reasonable to satisfy the conditions by providing a URI or
+ hyperlink to a resource that includes the required
+ information.
- a. The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed.
+ 3. If requested by the Licensor, You must remove any of the
+ information required by Section 3(a)(1)(A) to the extent
+ reasonably practicable.
- b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated in this Public License are separate from and independent of the terms and conditions of this Public License.
+ b. ShareAlike.
+ In addition to the conditions in Section 3(a), if You Share
+ Adapted Material You produce, the following conditions also apply.
-Section 8 -- Interpretation.
+ 1. The Adapter's License You apply must be a Creative Commons
+ license with the same License Elements, this version or
+ later, or a BY-SA Compatible License.
- a. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License.
+ 2. You must include the text of, or the URI or hyperlink to, the
+ Adapter's License You apply. You may satisfy this condition
+ in any reasonable manner based on the medium, means, and
+ context in which You Share Adapted Material.
- b. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions.
+ 3. You may not offer or impose any additional or different terms
+ or conditions on, or apply any Effective Technological
+ Measures to, Adapted Material that restrict exercise of the
+ rights granted under the Adapter's License You apply.
- c. No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor.
- d. Nothing in this Public License constitutes or may be interpreted as a limitation or waiver of any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority.
-Rights, then the database in which you hold Sui Generis Database Rights (but not its individual contents) is considered Adapted Material,
+Section 4 -- Sui Generis Database Rights.
-including for the purposes of Section 3(b); and
-c. You must comply with the conditions in Section 3(a) if you share all or a substantial portion of the contents of the database.
+Where the Licensed Rights include Sui Generis Database Rights that
+apply to Your use of the Licensed Material:
-For clarity, this Section 4 supplements and does not replace your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights.
+ a. for the avoidance of doubt, Section 2(a)(1) grants You the right
+ to extract, reuse, reproduce, and Share all or a substantial
+ portion of the contents of the database;
----
+ b. if You include all or a substantial portion of the database
+ contents in a database in which You have Sui Generis Database
+ Rights, then the database in which You have Sui Generis Database
+ Rights (but not its individual contents) is Adapted Material,
-**Section 5 -- Disclaimer of Warranties and Limitation of Liability**
+ including for purposes of Section 3(b); and
-a. UNLESS OTHERWISE AGREED SEPARATELY BY THE LICENSOR, TO THE EXTENT POSSIBLE, THE LICENSOR PROVIDES THE LICENSED MATERIAL "AS IS" AND "AS AVAILABLE," AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND REGARDING THE LICENSED MATERIAL, WHETHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE. THIS INCLUDES, BUT IS NOT LIMITED TO, WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT FULLY OR PARTIALLY PERMITTED, THIS DISCLAIMER MAY NOT APPLY TO YOU.
+ c. You must comply with the conditions in Section 3(a) if You Share
+ all or a substantial portion of the contents of the database.
-b. TO THE EXTENT POSSIBLE, UNDER NO CIRCUMSTANCES WILL THE LICENSOR BE LIABLE TO YOU UNDER ANY LEGAL THEORY (INCLUDING, BUT NOT LIMITED TO, NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, COSTS, EXPENSES, OR DAMAGES ARISING FROM THIS PUBLIC LICENSE OR USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR DAMAGES. WHERE LIMITATIONS OF LIABILITY ARE NOT FULLY OR PARTIALLY PERMITTED, THIS LIMITATION MAY NOT APPLY TO YOU.
+For the avoidance of doubt, this Section 4 supplements and does not
+replace Your obligations under this Public License where the Licensed
+Rights include other Copyright and Similar Rights.
-c. The disclaimer of warranties and limitation of liability outlined above shall be interpreted in a way that, to the extent possible, most closely resembles an absolute disclaimer and waiver of all liability.
----
+Section 5 -- Disclaimer of Warranties and Limitation of Liability.
-**Section 6 -- Term and Termination**
+ a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
+ EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
+ AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
+ ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
+ IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
+ WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
+ PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
+ ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
+ KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
+ ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
-a. This Public License remains in effect for the duration of the Copyright and Similar Rights licensed here. However, if you fail to comply with this Public License, your rights under this Public License terminate automatically.
+ b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
+ TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
+ NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
+ INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
+ COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
+ USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
+ ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
+ DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
+ IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
-b. If your right to use the Licensed Material is terminated under Section 6(a), it may be reinstated:
+ c. The disclaimer of warranties and limitation of liability provided
+ above shall be interpreted in a manner that, to the extent
+ possible, most closely approximates an absolute disclaimer and
+ waiver of all liability.
-1. Automatically as of the date the violation is remedied, provided it is remedied within 30 days of your discovery of the violation; or
-2. Upon explicit reinstatement by the Licensor.
-For clarity, this Section 6(b) does not affect any rights the Licensor may have to seek remedies for your violations of this Public License.
+Section 6 -- Term and Termination.
-c. For clarity, the Licensor may also offer the Licensed Material under separate terms or conditions or cease distributing the Licensed Material at any time; however, doing so does not terminate this Public License.
+ a. This Public License applies for the term of the Copyright and
+ Similar Rights licensed here. However, if You fail to comply with
+ this Public License, then Your rights under this Public License
+ terminate automatically.
-d. Sections 1, 5, 6, 7, and 8 remain in effect even after termination of this Public License.
+ b. Where Your right to use the Licensed Material has terminated under
+ Section 6(a), it reinstates:
----
+ 1. automatically as of the date the violation is cured, provided
+ it is cured within 30 days of Your discovery of the
+ violation; or
-**Section 7 -- Other Terms and Conditions**
+ 2. upon express reinstatement by the Licensor.
-a. The Licensor is not bound by any additional or different terms or conditions communicated by you unless explicitly agreed upon.
+ For the avoidance of doubt, this Section 6(b) does not affect any
+ right the Licensor may have to seek remedies for Your violations
+ of this Public License.
-b. Any arrangements, understandings, or agreements regarding the Licensed Material that are not stated here are separate from and independent of the terms and conditions of this Public License.
+ c. For the avoidance of doubt, the Licensor may also offer the
+ Licensed Material under separate terms or conditions or stop
+ distributing the Licensed Material at any time; however, doing so
+ will not terminate this Public License.
----
+ d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
+ License.
-**Section 8 -- Interpretation**
-a. For clarity, this Public License does not, and should not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License.
+Section 7 -- Other Terms and Conditions.
-b. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically adjusted to the minimum extent necessary to make it enforceable. If the provision cannot be adjusted, it shall be removed from this Public License without affecting the enforceability of the remaining terms and conditions.
+ a. The Licensor shall not be bound by any additional or different
+ terms or conditions communicated by You unless expressly agreed.
-c. No term or condition of this Public License will be waived, and no failure to comply will be consented to unless explicitly agreed upon by the Licensor.
+ b. Any arrangements, understandings, or agreements regarding the
+ Licensed Material not stated herein are separate from and
+ independent of the terms and conditions of this Public License.
-d. Nothing in this Public License constitutes or may be interpreted as a limitation on, or waiver of, any privileges and immunities that apply to the Licensor or you, including those arising from the legal processes of any jurisdiction or authority.
----
+Section 8 -- Interpretation.
+
+ a. For the avoidance of doubt, this Public License does not, and
+ shall not be interpreted to, reduce, limit, restrict, or impose
+ conditions on any use of the Licensed Material that could lawfully
+ be made without permission under this Public License.
+
+ b. To the extent possible, if any provision of this Public License is
+ deemed unenforceable, it shall be automatically reformed to the
+ minimum extent necessary to make it enforceable. If the provision
+ cannot be reformed, it shall be severed from this Public License
+ without affecting the enforceability of the remaining terms and
+ conditions.
+
+ c. No term or condition of this Public License will be waived and no
+ failure to comply consented to unless expressly agreed to by the
+ Licensor.
+
+ d. Nothing in this Public License constitutes or may be interpreted
+ as a limitation upon, or waiver of, any privileges and immunities
+ that apply to the Licensor or You, including from the legal
+ processes of any jurisdiction or authority.
+
+
+=======================================================================
-Creative Commons is not a party to its public licenses. However, Creative Commons may choose to apply one of its public licenses to material it publishes, and in such cases, it will be considered the “Licensor.” The text of the Creative Commons public licenses is dedicated to the public domain under the CC0 Public Domain Dedication. Except for the limited purpose of indicating that material is shared under a Creative Commons public license or as otherwise permitted by the Creative Commons policies published at creativecommons.org/policies, Creative Commons does not authorize the use of the trademark "Creative Commons" or any other trademark or logo of Creative Commons without prior written consent, including, but not limited to, in connection with any unauthorized modifications to any of its public licenses or any other arrangements, understandings, or agreements concerning the use of licensed material. For clarity, this paragraph is not part of the public licenses.
+Creative Commons is not a party to its public
+licenses. Notwithstanding, Creative Commons may elect to apply one of
+its public licenses to material it publishes and in those instances
+will be considered the “Licensor.” The text of the Creative Commons
+public licenses is dedicated to the public domain under the CC0 Public
+Domain Dedication. Except for the limited purpose of indicating that
+material is shared under a Creative Commons public license or as
+otherwise permitted by the Creative Commons policies published at
+creativecommons.org/policies, Creative Commons does not authorize the
+use of the trademark "Creative Commons" or any other trademark or logo
+of Creative Commons without its prior written consent including,
+without limitation, in connection with any unauthorized modifications
+to any of its public licenses or any other arrangements,
+understandings, or agreements concerning use of licensed material. For
+the avoidance of doubt, this paragraph does not form part of the
+public licenses.
-Creative Commons can be contacted at creativecommons.org.
+Creative Commons may be contacted at creativecommons.org.
---
-**Disclaimer**:
-This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we strive for accuracy, please note that automated translations may contain errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is recommended. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
\ No newline at end of file
+
+**Disclaimer**:
+This document has been translated using AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation.
+
\ No newline at end of file
diff --git a/translations/es/.co-op-translator.json b/translations/es/.co-op-translator.json
index bb044b3f2..a887e53ee 100644
--- a/translations/es/.co-op-translator.json
+++ b/translations/es/.co-op-translator.json
@@ -24,8 +24,8 @@
"language_code": "es"
},
"1-Introduction/3-fairness/README.md": {
- "original_hash": "9a6b702d1437c0467e3c5c28d763dac2",
- "translation_date": "2025-09-04T22:20:36+00:00",
+ "original_hash": "0f00d72169a0d37eecfd16d71e01700a",
+ "translation_date": "2026-07-13T23:33:45+00:00",
"source_file": "1-Introduction/3-fairness/README.md",
"language_code": "es"
},
@@ -54,8 +54,8 @@
"language_code": "es"
},
"2-Regression/1-Tools/README.md": {
- "original_hash": "fa81d226c71d5af7a2cade31c1c92b88",
- "translation_date": "2025-09-04T22:13:49+00:00",
+ "original_hash": "0b8635427b582d03ea4ab7089b93e505",
+ "translation_date": "2026-07-13T23:31:13+00:00",
"source_file": "2-Regression/1-Tools/README.md",
"language_code": "es"
},
@@ -72,8 +72,8 @@
"language_code": "es"
},
"2-Regression/2-Data/README.md": {
- "original_hash": "7c077988328ebfe33b24d07945f16eca",
- "translation_date": "2025-09-04T22:14:22+00:00",
+ "original_hash": "a58b2c4d16c6b122643391745ac15af6",
+ "translation_date": "2026-07-13T23:32:06+00:00",
"source_file": "2-Regression/2-Data/README.md",
"language_code": "es"
},
@@ -89,6 +89,12 @@
"source_file": "2-Regression/2-Data/solution/Julia/README.md",
"language_code": "es"
},
+ "2-Regression/2-Data/solution/notebook.ipynb": {
+ "original_hash": "96b95f8cf473481f2f371de8156f1571",
+ "translation_date": "2026-07-13T23:15:20+00:00",
+ "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
+ "language_code": "es"
+ },
"2-Regression/3-Linear/README.md": {
"original_hash": "8b776e731c35b171d316d01d0e7b1369",
"translation_date": "2026-04-26T18:34:21+00:00",
@@ -457,7 +463,7 @@
},
"8-Reinforcement/1-QLearning/README.md": {
"original_hash": "911efd5e595089000cb3c16fce1beab8",
- "translation_date": "2025-09-04T22:25:29+00:00",
+ "translation_date": "2026-07-13T23:33:04+00:00",
"source_file": "8-Reinforcement/1-QLearning/README.md",
"language_code": "es"
},
@@ -581,6 +587,19 @@
"source_file": "TROUBLESHOOTING.md",
"language_code": "es"
},
+ "__translation_failures__": {
+ "sketchnotes/LICENSE.md": {
+ "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f",
+ "source_file": "sketchnotes/LICENSE.md",
+ "language_code": "es",
+ "failure_date": "2026-07-13T23:30:23+00:00",
+ "status": "failed",
+ "error_type": "TranslationIncompleteError",
+ "error_message": "Markdown translation remained incomplete for chunk 1.1.1 of 'LICENSE.md', and the chunk could not be split further.",
+ "translator_version": "0.20.0",
+ "failure_policy_version": 1
+ }
+ },
"docs/_sidebar.md": {
"original_hash": "68dd06c685f6ce840e0acfa313352e7c",
"translation_date": "2025-09-03T23:13:58+00:00",
diff --git a/translations/es/1-Introduction/3-fairness/README.md b/translations/es/1-Introduction/3-fairness/README.md
index 320d03b97..b576274c6 100644
--- a/translations/es/1-Introduction/3-fairness/README.md
+++ b/translations/es/1-Introduction/3-fairness/README.md
@@ -1,161 +1,167 @@
-# Construyendo soluciones de aprendizaje automático con IA responsable
-
-
+# Construyendo soluciones de Machine Learning con IA responsable
+
+
> Sketchnote por [Tomomi Imura](https://www.twitter.com/girlie_mac)
-## [Cuestionario previo a la lección](https://ff-quizzes.netlify.app/en/ml/)
-
+## [Cuestionario previo a la clase](https://ff-quizzes.netlify.app/en/ml/)
+
## Introducción
-En este currículo, comenzarás a descubrir cómo el aprendizaje automático puede y está impactando nuestras vidas cotidianas. Incluso ahora, los sistemas y modelos están involucrados en tareas de toma de decisiones diarias, como diagnósticos médicos, aprobaciones de préstamos o detección de fraudes. Por lo tanto, es importante que estos modelos funcionen bien para proporcionar resultados confiables. Al igual que cualquier aplicación de software, los sistemas de IA pueden no cumplir con las expectativas o tener un resultado indeseable. Es por eso que es esencial poder entender y explicar el comportamiento de un modelo de IA.
+En este currículo, comenzarás a descubrir cómo el aprendizaje automático puede y está impactando nuestra vida diaria. Incluso ahora, los sistemas y modelos participan en tareas diarias de toma de decisiones, como diagnósticos médicos, aprobación de préstamos o detección de fraudes. Por lo tanto, es importante que estos modelos funcionen bien para proporcionar resultados confiables. Al igual que cualquier aplicación de software, los sistemas de IA pueden no cumplir con las expectativas o tener un resultado no deseado. Por eso es esencial poder entender y explicar el comportamiento de un modelo de IA.
-Imagina lo que puede suceder cuando los datos que utilizas para construir estos modelos carecen de ciertos grupos demográficos, como raza, género, visión política, religión, o representan desproporcionadamente dichos grupos. ¿Qué pasa cuando la salida del modelo se interpreta para favorecer a algún grupo demográfico? ¿Cuál es la consecuencia para la aplicación? Además, ¿qué sucede cuando el modelo tiene un resultado adverso y es perjudicial para las personas? ¿Quién es responsable del comportamiento de los sistemas de IA? Estas son algunas preguntas que exploraremos en este currículo.
+Imagina qué puede pasar cuando los datos que usas para construir estos modelos carecen de ciertos grupos demográficos, como raza, género, opinión política, religión, o representan de manera desproporcionada dichos grupos demográficos. ¿Qué pasa cuando la salida del modelo se interpreta para favorecer a algún grupo demográfico? ¿Cuál es la consecuencia para la aplicación? Además, ¿qué ocurre cuando el modelo tiene un resultado adverso y es perjudicial para las personas? ¿Quién es responsable del comportamiento del sistema de IA? Estas son algunas preguntas que exploraremos en este currículo.
-En esta lección, aprenderás a:
+En esta lección, tú:
-- Concienciarte sobre la importancia de la equidad en el aprendizaje automático y los daños relacionados con la falta de equidad.
-- Familiarizarte con la práctica de explorar valores atípicos y escenarios inusuales para garantizar confiabilidad y seguridad.
-- Comprender la necesidad de empoderar a todos mediante el diseño de sistemas inclusivos.
-- Explorar lo vital que es proteger la privacidad y seguridad de los datos y las personas.
-- Ver la importancia de tener un enfoque de caja de cristal para explicar el comportamiento de los modelos de IA.
-- Ser consciente de cómo la responsabilidad es esencial para generar confianza en los sistemas de IA.
+- Tomarás conciencia sobre la importancia de la equidad en el aprendizaje automático y los daños relacionados con la equidad.
+- Te familiarizarás con la práctica de explorar valores atípicos y escenarios inusuales para asegurar la fiabilidad y seguridad.
+- Entenderás la necesidad de empoderar a todos mediante el diseño de sistemas inclusivos.
+- Explorarás lo vital que es proteger la privacidad y la seguridad de los datos y las personas.
+- Verás la importancia de tener un enfoque de caja transparente para explicar el comportamiento de los modelos de IA.
+- Serás consciente de cómo la responsabilidad es esencial para construir confianza en los sistemas de IA.
-## Prerrequisito
+## Requisito previo
-Como prerrequisito, toma el "Camino de Aprendizaje de Principios de IA Responsable" y mira el siguiente video sobre el tema:
+Como requisito previo, realiza el "Camino de aprendizaje de Principios de IA Responsable" y mira el video a continuación sobre el tema:
-Aprende más sobre IA Responsable siguiendo este [Camino de Aprendizaje](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)
+Aprende más sobre IA Responsable siguiendo este [Camino de aprendizaje](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)
-[](https://youtu.be/dnC8-uUZXSc "Enfoque de Microsoft hacia la IA Responsable")
+[](https://youtu.be/dnC8-uUZXSc "Enfoque de Microsoft sobre IA Responsable")
-> 🎥 Haz clic en la imagen de arriba para ver el video: Enfoque de Microsoft hacia la IA Responsable
+> 🎥 Haz clic en la imagen de arriba para un video: Enfoque de Microsoft sobre IA Responsable
## Equidad
-Los sistemas de IA deben tratar a todos de manera justa y evitar afectar a grupos similares de personas de diferentes maneras. Por ejemplo, cuando los sistemas de IA proporcionan orientación sobre tratamientos médicos, solicitudes de préstamos o empleo, deben hacer las mismas recomendaciones a todos con síntomas similares, circunstancias financieras o calificaciones profesionales. Cada uno de nosotros, como humanos, lleva consigo sesgos heredados que afectan nuestras decisiones y acciones. Estos sesgos pueden ser evidentes en los datos que usamos para entrenar sistemas de IA. A veces, esta manipulación ocurre de manera no intencional. A menudo es difícil saber conscientemente cuándo estás introduciendo sesgos en los datos.
+Los sistemas de IA deben tratar a todos con equidad y evitar afectar de manera diferente a grupos similares de personas. Por ejemplo, cuando los sistemas de IA brindan orientación sobre tratamiento médico, solicitudes de préstamos o empleo, deberían hacer las mismas recomendaciones a todos con síntomas, circunstancias financieras o calificaciones profesionales similares. Cada uno de nosotros, como humanos, lleva inherentes sesgos que afectan nuestras decisiones y acciones. Estos sesgos pueden estar presentes en los datos que usamos para entrenar sistemas de IA. Tal manipulación a veces ocurre sin intención. A menudo es difícil saber conscientemente cuándo estás introduciendo un sesgo en los datos.
-**“Injusticia”** abarca impactos negativos, o “daños”, para un grupo de personas, como aquellos definidos en términos de raza, género, edad o estado de discapacidad. Los principales daños relacionados con la equidad pueden clasificarse como:
+**"Injusticia"** abarca impactos negativos, o "daños", para un grupo de personas, como aquellos definidos en términos de raza, género, edad o condición de discapacidad. Los principales daños relacionados con la equidad pueden clasificarse como:
-- **Asignación**, si, por ejemplo, se favorece un género o etnia sobre otro.
-- **Calidad del servicio**. Si entrenas los datos para un escenario específico pero la realidad es mucho más compleja, esto lleva a un servicio de bajo rendimiento. Por ejemplo, un dispensador de jabón que no parece ser capaz de detectar personas con piel oscura. [Referencia](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
-- **Denigración**. Criticar y etiquetar algo o alguien de manera injusta. Por ejemplo, una tecnología de etiquetado de imágenes etiquetó erróneamente imágenes de personas de piel oscura como gorilas.
-- **Sobre- o sub-representación**. La idea de que un cierto grupo no se ve en una determinada profesión, y cualquier servicio o función que siga promoviendo eso está contribuyendo al daño.
-- **Estereotipos**. Asociar un grupo dado con atributos preasignados. Por ejemplo, un sistema de traducción entre inglés y turco puede tener inexactitudes debido a palabras con asociaciones estereotípicas de género.
+- **Asignación**, si por ejemplo se favorece un género o etnia sobre otro.
+- **Calidad del servicio**. Si entrenas los datos para un escenario específico pero la realidad es mucho más compleja, lleva a un servicio de bajo rendimiento. Por ejemplo, un dispensador de jabón que no podía detectar personas con piel oscura. [Referencia](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
+- **Denigración**. Criticar y etiquetar injustamente algo o a alguien. Por ejemplo, una tecnología de etiquetado de imágenes que etiquetó erróneamente imágenes de personas de piel oscura como gorilas.
+- **Sobre o sub-representación**. La idea es que un cierto grupo no se vea en una profesión determinada, y cualquier servicio o función que siga promoviendo eso contribuye al daño.
+- **Estereotipos**. Asociar a un grupo dado atributos preasignados. Por ejemplo, un sistema de traducción entre inglés y turco puede tener inexactitudes debido a palabras con asociaciones estereotipadas de género.
-
+
> traducción al turco
-
+
> traducción de vuelta al inglés
-Al diseñar y probar sistemas de IA, debemos asegurarnos de que la IA sea justa y no esté programada para tomar decisiones sesgadas o discriminatorias, las cuales también están prohibidas para los seres humanos. Garantizar la equidad en la IA y el aprendizaje automático sigue siendo un desafío sociotécnico complejo.
+Al diseñar y probar sistemas de IA, debemos asegurar que la IA sea justa y no esté programada para tomar decisiones sesgadas o discriminatorias, decisión que también está prohibida a los humanos. Garantizar la equidad en IA y aprendizaje automático sigue siendo un desafío sociotécnico complejo.
-### Confiabilidad y seguridad
+### Fiabilidad y seguridad
-Para generar confianza, los sistemas de IA deben ser confiables, seguros y consistentes bajo condiciones normales e inesperadas. Es importante saber cómo se comportarán los sistemas de IA en una variedad de situaciones, especialmente cuando son valores atípicos. Al construir soluciones de IA, se necesita un enfoque sustancial en cómo manejar una amplia variedad de circunstancias que las soluciones de IA podrían encontrar. Por ejemplo, un automóvil autónomo debe priorizar la seguridad de las personas. Como resultado, la IA que impulsa el automóvil debe considerar todos los posibles escenarios que el automóvil podría enfrentar, como la noche, tormentas eléctricas o ventiscas, niños cruzando la calle, mascotas, construcciones en la carretera, etc. Qué tan bien un sistema de IA puede manejar una amplia gama de condiciones de manera confiable y segura refleja el nivel de anticipación que el científico de datos o desarrollador de IA consideró durante el diseño o prueba del sistema.
+Para generar confianza, los sistemas de IA deben ser fiables, seguros y consistentes en condiciones normales e inesperadas. Es importante saber cómo se comportarán los sistemas de IA en diversas situaciones, especialmente cuando son casos extremos. Al construir soluciones de IA, se debe poner un enfoque sustancial en cómo manejar una amplia variedad de circunstancias que las soluciones de IA puedan encontrar. Por ejemplo, un auto autónomo debe priorizar la seguridad de las personas. Por eso, la IA que impulsa el auto debe considerar todos los posibles escenarios que el auto podría encontrar, como la noche, tormentas eléctricas o granizadas, niños cruzando la calle, mascotas, construcciones en la vía, etc. Qué tan bien puede un sistema de IA manejar un rango amplio de condiciones de manera confiable y segura refleja el nivel de anticipación que el científico de datos o desarrollador de IA consideró durante el diseño o pruebas del sistema.
-> [🎥 Haz clic aquí para ver un video: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
+> [🎥 Haz clic aquí para un video: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
### Inclusión
-Los sistemas de IA deben diseñarse para involucrar y empoderar a todos. Al diseñar e implementar sistemas de IA, los científicos de datos y desarrolladores de IA identifican y abordan posibles barreras en el sistema que podrían excluir a las personas de manera no intencional. Por ejemplo, hay 1,000 millones de personas con discapacidades en todo el mundo. Con el avance de la IA, pueden acceder a una amplia gama de información y oportunidades más fácilmente en su vida diaria. Al abordar las barreras, se crean oportunidades para innovar y desarrollar productos de IA con mejores experiencias que beneficien a todos.
+Los sistemas de IA deben diseñarse para involucrar y empoderar a todos. Al diseñar e implementar sistemas de IA, los científicos de datos y desarrolladores de IA identifican y abordan posibles barreras en el sistema que podrían excluir a personas sin intención. Por ejemplo, hay 1 mil millones de personas con discapacidades en el mundo. Con el avance de la IA, pueden acceder más fácilmente a una amplia gama de información y oportunidades en su vida diaria. Al abordar las barreras, se crean oportunidades para innovar y desarrollar productos de IA con mejores experiencias que benefician a todos.
-> [🎥 Haz clic aquí para ver un video: inclusión en IA](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
+> [🎥 Haz clic aquí para un video: inclusión en IA](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
### Seguridad y privacidad
-Los sistemas de IA deben ser seguros y respetar la privacidad de las personas. Las personas tienen menos confianza en sistemas que ponen en riesgo su privacidad, información o vidas. Al entrenar modelos de aprendizaje automático, dependemos de los datos para producir los mejores resultados. Al hacerlo, se debe considerar el origen de los datos y su integridad. Por ejemplo, ¿los datos fueron enviados por el usuario o estaban disponibles públicamente? Luego, al trabajar con los datos, es crucial desarrollar sistemas de IA que puedan proteger información confidencial y resistir ataques. A medida que la IA se vuelve más prevalente, proteger la privacidad y asegurar información personal y empresarial importante se está volviendo más crítico y complejo. Los problemas de privacidad y seguridad de los datos requieren especial atención en la IA porque el acceso a los datos es esencial para que los sistemas de IA hagan predicciones y decisiones precisas e informadas sobre las personas.
+Los sistemas de IA deben ser seguros y respetar la privacidad de las personas. La gente confía menos en sistemas que ponen en riesgo su privacidad, información o vidas. Al entrenar modelos de aprendizaje automático, confiamos en los datos para producir los mejores resultados. Al hacerlo, se debe considerar el origen y la integridad de los datos. Por ejemplo, ¿fueron los datos enviados por usuarios o están disponibles públicamente? Además, al trabajar con los datos, es crucial desarrollar sistemas de IA que puedan proteger información confidencial y resistir ataques. Conforme la IA se vuelve más prevalente, proteger la privacidad y asegurar información personal y empresarial importante se vuelve más crítico y complejo. Los temas de privacidad y seguridad de datos requieren especial atención en IA porque el acceso a los datos es esencial para que los sistemas de IA hagan predicciones y decisiones precisas e informadas sobre las personas.
-> [🎥 Haz clic aquí para ver un video: seguridad en IA](https://www.microsoft.com/videoplayer/embed/RE4voJF)
+> [🎥 Haz clic aquí para un video: seguridad en IA](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- Como industria, hemos logrado avances significativos en privacidad y seguridad, impulsados significativamente por regulaciones como el GDPR (Reglamento General de Protección de Datos).
-- Sin embargo, con los sistemas de IA debemos reconocer la tensión entre la necesidad de más datos personales para hacer los sistemas más efectivos y la privacidad.
-- Al igual que con el nacimiento de las computadoras conectadas a internet, también estamos viendo un gran aumento en el número de problemas de seguridad relacionados con la IA.
-- Al mismo tiempo, hemos visto que la IA se utiliza para mejorar la seguridad. Por ejemplo, la mayoría de los escáneres antivirus modernos están impulsados por heurísticas de IA.
-- Necesitamos asegurarnos de que nuestros procesos de Ciencia de Datos se integren armoniosamente con las últimas prácticas de privacidad y seguridad.
+- Como industria hemos avanzado significativamente en privacidad y seguridad, impulsados en gran medida por regulaciones como el GDPR (Reglamento General de Protección de Datos).
+- Sin embargo, con los sistemas de IA debemos reconocer la tensión entre la necesidad de más datos personales para hacer los sistemas más personales y efectivos – y la privacidad.
+- Al igual que con el nacimiento de computadoras conectadas con internet, también estamos viendo un gran aumento en los problemas de seguridad relacionados con la IA.
+- Al mismo tiempo, hemos visto que la IA se usa para mejorar la seguridad. Por ejemplo, la mayoría de los escáneres antivirus modernos hoy en día cuentan con heurísticas de IA.
+- Debemos asegurar que nuestros procesos de Ciencia de Datos se integren armoniosamente con las últimas prácticas de privacidad y seguridad.
-### Transparencia
-Los sistemas de IA deben ser comprensibles. Una parte crucial de la transparencia es explicar el comportamiento de los sistemas de IA y sus componentes. Mejorar la comprensión de los sistemas de IA requiere que las partes interesadas comprendan cómo y por qué funcionan para que puedan identificar posibles problemas de rendimiento, preocupaciones de seguridad y privacidad, sesgos, prácticas excluyentes o resultados no deseados. También creemos que quienes usan sistemas de IA deben ser honestos y transparentes sobre cuándo, por qué y cómo eligen implementarlos, así como las limitaciones de los sistemas que utilizan. Por ejemplo, si un banco utiliza un sistema de IA para apoyar sus decisiones de préstamos al consumidor, es importante examinar los resultados y entender qué datos influyen en las recomendaciones del sistema. Los gobiernos están comenzando a regular la IA en diversas industrias, por lo que los científicos de datos y las organizaciones deben explicar si un sistema de IA cumple con los requisitos regulatorios, especialmente cuando hay un resultado no deseado.
+### Transparencia
+Los sistemas de IA deben ser comprensibles. Parte crucial de la transparencia es explicar el comportamiento de los sistemas de IA y sus componentes. Mejorar la comprensión de los sistemas de IA requiere que las partes interesadas comprendan cómo y por qué funcionan para que puedan identificar problemas potenciales de desempeño, preocupaciones de seguridad y privacidad, sesgos, prácticas excluyentes o resultados no intencionados. También creemos que quienes usan sistemas de IA deben ser honestos y transparentes sobre cuándo, por qué y cómo eligen desplegarlos, así como sus limitaciones. Por ejemplo, si un banco usa un sistema de IA para soportar decisiones de préstamos a consumidores, es importante examinar los resultados y entender qué datos influyen en las recomendaciones del sistema. Los gobiernos están empezando a regular la IA en diferentes industrias, por lo tanto los científicos de datos y organizaciones deben explicar si un sistema de IA cumple con los requerimientos regulatorios, especialmente si hay un resultado no deseado.
-> [🎥 Haz clic aquí para ver un video: transparencia en IA](https://www.microsoft.com/videoplayer/embed/RE4voJF)
+> [🎥 Haz clic aquí para un video: transparencia en IA](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- Debido a que los sistemas de IA son tan complejos, es difícil entender cómo funcionan e interpretar los resultados.
-- Esta falta de comprensión afecta la forma en que se gestionan, operacionalizan y documentan estos sistemas.
-- Más importante aún, esta falta de comprensión afecta las decisiones tomadas utilizando los resultados que producen estos sistemas.
+- Debido a que los sistemas de IA son muy complejos, es difícil entender cómo funcionan e interpretar los resultados.
+- Esta falta de comprensión afecta la manera en que estos sistemas son gestionados, operativizados y documentados.
+- Lo más importante, esta falta de comprensión afecta las decisiones tomadas usando los resultados que estos sistemas producen.
### Responsabilidad
+
+Las personas que diseñan y despliegan sistemas de IA deben ser responsables de cómo operan sus sistemas. La necesidad de responsabilidad es especialmente crucial con tecnologías sensibles como el reconocimiento facial. Recientemente, ha habido una creciente demanda de tecnología de reconocimiento facial, especialmente de organizaciones de aplicación de la ley que ven el potencial en usos como localizar niños desaparecidos. Sin embargo, estas tecnologías podrían ser usadas por un gobierno para poner en riesgo las libertades fundamentales de sus ciudadanos, por ejemplo, habilitando vigilancia continua de individuos específicos. Por lo tanto, los científicos de datos y organizaciones deben ser responsables de cómo su sistema de IA impacta a los individuos o la sociedad.
-Las personas que diseñan y despliegan sistemas de IA deben ser responsables de cómo operan sus sistemas. La necesidad de responsabilidad es particularmente crucial con tecnologías de uso sensible como el reconocimiento facial. Recientemente, ha habido una creciente demanda de tecnología de reconocimiento facial, especialmente por parte de organizaciones de aplicación de la ley que ven el potencial de la tecnología en usos como encontrar niños desaparecidos. Sin embargo, estas tecnologías podrían ser utilizadas por un gobierno para poner en riesgo las libertades fundamentales de sus ciudadanos, por ejemplo, habilitando la vigilancia continua de individuos específicos. Por lo tanto, los científicos de datos y las organizaciones deben ser responsables de cómo su sistema de IA impacta a las personas o la sociedad.
+[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Enfoque de Microsoft sobre IA Responsable")
-[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Enfoque de Microsoft hacia la IA Responsable")
+> 🎥 Haz clic en la imagen de arriba para un video: Advertencias sobre vigilancia masiva mediante reconocimiento facial
-> 🎥 Haz clic en la imagen de arriba para ver el video: Advertencias sobre vigilancia masiva a través del reconocimiento facial
-
-En última instancia, una de las mayores preguntas para nuestra generación, como la primera generación que está llevando la IA a la sociedad, es cómo garantizar que las computadoras sigan siendo responsables ante las personas y cómo garantizar que las personas que diseñan computadoras sean responsables ante todos los demás.
+En última instancia, una de las mayores preguntas para nuestra generación, como la primera generación que está trayendo IA a la sociedad, es cómo asegurar que las computadoras permanezcan responsables ante las personas y cómo asegurar que quienes diseñan las computadoras sigan siendo responsables ante todos los demás.
## Evaluación de impacto
-Antes de entrenar un modelo de aprendizaje automático, es importante realizar una evaluación de impacto para entender el propósito del sistema de IA; cuál es el uso previsto; dónde se desplegará; y quién interactuará con el sistema. Esto es útil para los revisores o evaluadores del sistema para saber qué factores considerar al identificar riesgos potenciales y consecuencias esperadas.
+Antes de entrenar un modelo de aprendizaje automático, es importante realizar una evaluación de impacto para entender el propósito del sistema de IA; cuál es el uso previsto; dónde será desplegado; y quién interactuará con el sistema. Esto es útil para revisores o evaluadores del sistema para saber qué factores considerar al identificar riesgos potenciales y consecuencias esperadas.
Las siguientes son áreas de enfoque al realizar una evaluación de impacto:
-* **Impacto adverso en individuos**. Ser consciente de cualquier restricción o requisito, uso no compatible o cualquier limitación conocida que obstaculice el rendimiento del sistema es vital para garantizar que el sistema no se utilice de manera que pueda causar daño a las personas.
-* **Requisitos de datos**. Comprender cómo y dónde el sistema utilizará datos permite a los revisores explorar cualquier requisito de datos que debas tener en cuenta (por ejemplo, regulaciones de datos como GDPR o HIPAA). Además, examina si la fuente o cantidad de datos es suficiente para el entrenamiento.
-* **Resumen del impacto**. Reúne una lista de posibles daños que podrían surgir del uso del sistema. A lo largo del ciclo de vida del aprendizaje automático, revisa si los problemas identificados se han mitigado o abordado.
-* **Metas aplicables** para cada uno de los seis principios fundamentales. Evalúa si las metas de cada principio se cumplen y si hay alguna brecha.
+* **Impacto adverso en individuos**. Ser consciente de cualquier restricción o requisito, uso no soportado o cualquier limitación conocida que impida el desempeño del sistema es vital para asegurar que el sistema no se use de manera que pueda causar daño a las personas.
+* **Requisitos de datos**. Entender cómo y dónde el sistema usará los datos permite a los revisores explorar cualquier requisito de datos que se deba considerar (por ejemplo, regulaciones de datos GDPR o HIPAA). Además, examina si la fuente o cantidad de datos es suficiente para el entrenamiento.
+* **Resumen de impacto**. Recopila una lista de posibles daños que podrían surgir del uso del sistema. A lo largo del ciclo de vida de ML, revisa si los problemas identificados se mitigan o abordan.
+* **Objetivos aplicables** para cada uno de los seis principios fundamentales. Evalúa si se cumplen los objetivos de cada principio y si existen brechas.
+
## Depuración con IA responsable
-Al igual que depurar una aplicación de software, depurar un sistema de IA es un proceso necesario para identificar y resolver problemas en el sistema. Hay muchos factores que pueden afectar que un modelo no funcione como se espera o de manera responsable. La mayoría de las métricas tradicionales de rendimiento de modelos son agregados cuantitativos del rendimiento de un modelo, lo cual no es suficiente para analizar cómo un modelo viola los principios de IA responsable. Además, un modelo de aprendizaje automático es una caja negra que dificulta entender qué impulsa su resultado o proporcionar explicaciones cuando comete un error. Más adelante en este curso, aprenderemos cómo usar el panel de IA Responsable para ayudar a depurar sistemas de IA. El panel proporciona una herramienta integral para que los científicos de datos y desarrolladores de IA realicen:
+Similar a depurar una aplicación de software, depurar un sistema de IA es un proceso necesario para identificar y resolver problemas en el sistema. Hay muchos factores que afectarían que un modelo no rinda como se espera o de manera responsable. La mayoría de métricas tradicionales de desempeño de modelos son agregados cuantitativos del rendimiento del modelo, que no son suficientes para analizar cómo un modelo viola los principios de IA responsable. Además, un modelo de aprendizaje automático es una caja negra que dificulta entender qué impulsa su resultado o dar explicación cuando comete un error. Más adelante en este curso aprenderemos a usar el panel de IA Responsable para ayudar a depurar sistemas de IA. El panel proporciona una herramienta holística para que científicos de datos y desarrolladores de IA realicen:
-* **Análisis de errores**. Para identificar la distribución de errores del modelo que puede afectar la equidad o confiabilidad del sistema.
-* **Visión general del modelo**. Para descubrir dónde hay disparidades en el rendimiento del modelo entre cohortes de datos.
-* **Análisis de datos**. Para entender la distribución de datos e identificar cualquier sesgo potencial en los datos que podría generar problemas de equidad, inclusión y confiabilidad.
-* **Interpretabilidad del modelo**. Para entender qué afecta o influye en las predicciones del modelo. Esto ayuda a explicar el comportamiento del modelo, lo cual es importante para la transparencia y la responsabilidad.
+* **Análisis de errores**. Para identificar la distribución de errores del modelo que pueden afectar la equidad o fiabilidad del sistema.
+* **Resumen del modelo**. Para descubrir dónde hay disparidades en el desempeño del modelo a través de cohortes de datos.
+* **Análisis de datos**. Para entender la distribución de datos e identificar posibles sesgos en los datos que podrían causar problemas de equidad, inclusión y fiabilidad.
+* **Interpretabilidad del modelo**. Para entender qué afecta o influye en las predicciones del modelo. Esto ayuda a explicar el comportamiento del modelo, importante para la transparencia y responsabilidad.
-## 🚀 Desafío
-Para prevenir daños desde el principio, deberíamos:
+## 🚀 Desafío
+
+Para prevenir que se introduzcan daños en primer lugar, deberíamos:
-- contar con diversidad de antecedentes y perspectivas entre las personas que trabajan en los sistemas
+- tener diversidad de orígenes y perspectivas entre las personas que trabajan en sistemas
- invertir en conjuntos de datos que reflejen la diversidad de nuestra sociedad
-- desarrollar mejores métodos a lo largo del ciclo de vida del aprendizaje automático para detectar y corregir problemas de IA responsable cuando ocurran
+- desarrollar mejores métodos a lo largo del ciclo de vida del aprendizaje automático para detectar y corregir IA responsable cuando ocurra
-Piensa en escenarios de la vida real donde la falta de confianza en un modelo sea evidente en su construcción y uso. ¿Qué más deberíamos considerar?
+Piensa en escenarios de la vida real donde la falta de confiabilidad de un modelo es evidente en la construcción y uso del modelo. ¿Qué más deberíamos considerar?
-## [Cuestionario posterior a la lección](https://ff-quizzes.netlify.app/en/ml/)
+## [Cuestionario posterior a la clase](https://ff-quizzes.netlify.app/en/ml/)
## Revisión y autoestudio
+
-En esta lección, has aprendido algunos conceptos básicos sobre la equidad y la falta de equidad en el aprendizaje automático.
-Mira este taller para profundizar en los temas:
+En esta lección, has aprendido algunos conceptos básicos sobre la equidad y la inequidad en el aprendizaje automático.
+
+Mira este taller para profundizar en los temas:
-- En busca de una IA responsable: Llevando los principios a la práctica por Besmira Nushi, Mehrnoosh Sameki y Amit Sharma
+- En búsqueda de una IA responsable: Llevar los principios a la práctica por Besmira Nushi, Mehrnoosh Sameki y Amit Sharma
-[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: Un marco de código abierto para construir IA responsable")
+[](https://www.youtube.com/watch?v=tGgJCrA-MZU "Caja de herramientas RAI: Un marco de código abierto para construir IA responsable")
-> 🎥 Haz clic en la imagen de arriba para ver el video: RAI Toolbox: Un marco de código abierto para construir IA responsable por Besmira Nushi, Mehrnoosh Sameki y Amit Sharma
+> 🎥 Haz clic en la imagen de arriba para ver el video: Caja de herramientas RAI: Un marco de código abierto para construir IA responsable por Besmira Nushi, Mehrnoosh Sameki y Amit Sharma
-Además, lee:
+También, lee:
-- Centro de recursos de RAI de Microsoft: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
+- Centro de recursos RAI de Microsoft: [Recursos de IA Responsable – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
-- Grupo de investigación FATE de Microsoft: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
+- Grupo de investigación FATE de Microsoft: [FATE: Equidad, Responsabilidad, Transparencia y Ética en IA - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
-RAI Toolbox:
+Caja de herramientas RAI:
-- [Repositorio de GitHub de Responsible AI Toolbox](https://github.com/microsoft/responsible-ai-toolbox)
+- [Repositorio GitHub de la Caja de herramientas de IA Responsable](https://github.com/microsoft/responsible-ai-toolbox)
-Lee sobre las herramientas de Azure Machine Learning para garantizar la equidad:
+Lee sobre las herramientas de Azure Machine Learning para asegurar la equidad:
-- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
+- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
## Tarea
-[Explora RAI Toolbox](assignment.md)
+[Explora Caja de herramientas RAI](assignment.md)
---
-**Descargo de responsabilidad**:
-Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por garantizar la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción.
\ No newline at end of file
+
+**Descargo de responsabilidad**:
+Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No somos responsables de cualquier malentendido o interpretación errónea que surja del uso de esta traducción.
+
\ No newline at end of file
diff --git a/translations/es/2-Regression/1-Tools/README.md b/translations/es/2-Regression/1-Tools/README.md
index 9da925065..07063017b 100644
--- a/translations/es/2-Regression/1-Tools/README.md
+++ b/translations/es/2-Regression/1-Tools/README.md
@@ -1,120 +1,121 @@
# Comienza con Python y Scikit-learn para modelos de regresión
-
+
-> Sketchnote por [Tomomi Imura](https://www.twitter.com/girlie_mac)
+> Sketchnote de [Tomomi Imura](https://www.twitter.com/girlie_mac)
-## [Cuestionario previo a la lección](https://ff-quizzes.netlify.app/en/ml/)
+## [Cuestionario previo a la clase](https://ff-quizzes.netlify.app/en/ml/)
> ### [¡Esta lección está disponible en R!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
## Introducción
-En estas cuatro lecciones, descubrirás cómo construir modelos de regresión. Hablaremos sobre para qué sirven en breve. Pero antes de hacer nada, ¡asegúrate de tener las herramientas adecuadas para comenzar el proceso!
+En estas cuatro lecciones, descubrirás cómo construir modelos de regresión. Hablaremos de para qué sirven en breve. Pero antes de hacer cualquier cosa, asegúrate de tener las herramientas correctas para comenzar el proceso.
En esta lección, aprenderás a:
- Configurar tu computadora para tareas locales de aprendizaje automático.
-- Trabajar con Jupyter notebooks.
-- Usar Scikit-learn, incluyendo su instalación.
+- Trabajar con Jupyter Notebooks.
+- Usar Scikit-learn, incluida la instalación.
- Explorar la regresión lineal con un ejercicio práctico.
## Instalaciones y configuraciones
-[](https://youtu.be/-DfeD2k2Kj0 "ML para principiantes - Configura tus herramientas para construir modelos de aprendizaje automático")
+[](https://youtu.be/-DfeD2k2Kj0 "ML para principiantes - Prepara tus herramientas listas para construir modelos de Machine Learning")
-> 🎥 Haz clic en la imagen de arriba para ver un video corto sobre cómo configurar tu computadora para ML.
+> 🎥 Haz clic en la imagen de arriba para un video corto mostrando cómo configurar tu computadora para ML.
-1. **Instalar Python**. Asegúrate de que [Python](https://www.python.org/downloads/) esté instalado en tu computadora. Usarás Python para muchas tareas de ciencia de datos y aprendizaje automático. La mayoría de los sistemas informáticos ya incluyen una instalación de Python. También hay disponibles [Paquetes de Codificación de Python](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) útiles para facilitar la configuración a algunos usuarios.
+1. **Instala Python**. Asegúrate de que [Python](https://www.python.org/downloads/) esté instalado en tu computadora. Usarás Python para muchas tareas de ciencia de datos y aprendizaje automático. La mayoría de los sistemas ya incluyen una instalación de Python. También hay útiles [Paquetes de Codificación Python](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) disponibles para facilitar la configuración a algunos usuarios.
- Sin embargo, algunos usos de Python requieren una versión específica del software, mientras que otros requieren una versión diferente. Por esta razón, es útil trabajar dentro de un [entorno virtual](https://docs.python.org/3/library/venv.html).
+ Sin embargo, algunos usos de Python requieren una versión del software, mientras que otros requieren una diferente. Por esto, es útil trabajar dentro de un [entorno virtual](https://docs.python.org/3/library/venv.html).
-2. **Instalar Visual Studio Code**. Asegúrate de tener Visual Studio Code instalado en tu computadora. Sigue estas instrucciones para [instalar Visual Studio Code](https://code.visualstudio.com/) para la instalación básica. Vas a usar Python en Visual Studio Code en este curso, por lo que podrías querer repasar cómo [configurar Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) para el desarrollo en Python.
+2. **Instala Visual Studio Code**. Asegúrate de tener instalado Visual Studio Code en tu computadora. Sigue estas instrucciones para [instalar Visual Studio Code](https://code.visualstudio.com/) para la instalación básica. Vas a usar Python en Visual Studio Code en este curso, por lo que quizás quieras repasar cómo [configurar Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) para desarrollo en Python.
- > Familiarízate con Python trabajando en esta colección de [módulos de aprendizaje](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)
+ > Familiarízate con Python trabajando estos [módulos de aprendizaje](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)
>
> [](https://youtu.be/yyQM70vi7V8 "Configura Python con Visual Studio Code")
>
- > 🎥 Haz clic en la imagen de arriba para ver un video: usando Python dentro de VS Code.
+ > 🎥 Haz clic en la imagen de arriba para un video: usando Python dentro de VS Code.
-3. **Instalar Scikit-learn**, siguiendo [estas instrucciones](https://scikit-learn.org/stable/install.html). Dado que necesitas asegurarte de usar Python 3, se recomienda que utilices un entorno virtual. Nota: si estás instalando esta biblioteca en una Mac M1, hay instrucciones especiales en la página enlazada arriba.
+3. **Instala Scikit-learn**, siguiendo [estas instrucciones](https://scikit-learn.org/stable/install.html). Como necesitas asegurarte de usar Python 3, se recomienda usar un entorno virtual. Nota que si instalas esta biblioteca en un Mac M1, hay instrucciones especiales en la página enlazada arriba.
-4. **Instalar Jupyter Notebook**. Necesitarás [instalar el paquete Jupyter](https://pypi.org/project/jupyter/).
+1. **Instala Jupyter Notebook**. Necesitarás [instalar el paquete Jupyter](https://pypi.org/project/jupyter/).
-## Tu entorno de autoría de ML
+## Tu entorno de autoría ML
-Vas a usar **notebooks** para desarrollar tu código en Python y crear modelos de aprendizaje automático. Este tipo de archivo es una herramienta común para los científicos de datos y se identifican por su sufijo o extensión `.ipynb`.
+Usarás **notebooks** para desarrollar tu código Python y crear modelos de aprendizaje automático. Este tipo de archivo es una herramienta común para científicos de datos, y se identifica por su sufijo o extensión `.ipynb`.
-Los notebooks son un entorno interactivo que permite al desarrollador tanto codificar como agregar notas y escribir documentación alrededor del código, lo cual es bastante útil para proyectos experimentales o de investigación.
+Los notebooks son un entorno interactivo que permite al desarrollador tanto codificar como añadir notas y escribir documentación alrededor del código, lo que es muy útil para proyectos experimentales o de investigación.
[](https://youtu.be/7E-jC8FLA2E "ML para principiantes - Configura Jupyter Notebooks para comenzar a construir modelos de regresión")
-> 🎥 Haz clic en la imagen de arriba para ver un video corto sobre este ejercicio.
+> 🎥 Haz clic en la imagen de arriba para un video corto realizando este ejercicio.
-### Ejercicio - trabajar con un notebook
+### Ejercicio - trabaja con un notebook
En esta carpeta, encontrarás el archivo _notebook.ipynb_.
1. Abre _notebook.ipynb_ en Visual Studio Code.
- Se iniciará un servidor Jupyter con Python 3+. Encontrarás áreas del notebook que pueden ser `ejecutadas`, piezas de código. Puedes ejecutar un bloque de código seleccionando el ícono que parece un botón de reproducción.
+ Se iniciará un servidor Jupyter con Python 3+ activo. Encontrarás áreas del notebook que pueden `ejecutarse`, fragmentos de código. Puedes ejecutar un bloque de código seleccionando el icono que parece un botón de reproducir.
-2. Selecciona el ícono `md` y agrega un poco de markdown, y el siguiente texto **# Bienvenido a tu notebook**.
+1. Selecciona el icono `md` y añade un poco de markdown, y el siguiente texto **# Bienvenido a tu notebook**.
- Luego, agrega algo de código en Python.
+ Luego, añade un poco de código Python.
-3. Escribe **print('hello notebook')** en el bloque de código.
-4. Selecciona la flecha para ejecutar el código.
+1. Escribe **print('hola notebook')** en el bloque de código.
+1. Selecciona la flecha para ejecutar el código.
- Deberías ver la declaración impresa:
+ Deberías ver la instrucción impresa:
```output
hello notebook
```
-
+
Puedes intercalar tu código con comentarios para auto-documentar el notebook.
-✅ Piensa por un momento en cómo es diferente el entorno de trabajo de un desarrollador web en comparación con el de un científico de datos.
+✅ Piensa por un minuto cuán diferente es el entorno de trabajo de un desarrollador web en comparación con el de un científico de datos.
-## Puesta en marcha con Scikit-learn
+## En marcha con Scikit-learn
-Ahora que Python está configurado en tu entorno local y te sientes cómodo con los notebooks de Jupyter, vamos a familiarizarnos con Scikit-learn (se pronuncia `sci` como en `science`). Scikit-learn proporciona una [API extensa](https://scikit-learn.org/stable/modules/classes.html#api-ref) para ayudarte a realizar tareas de ML.
+Ahora que Python está configurado en tu entorno local y estás cómodo con Jupyter Notebooks, vamos a familiarizarnos también con Scikit-learn (pronúncialo `sci` como en `science`). Scikit-learn proporciona una [API extensa](https://scikit-learn.org/stable/modules/classes.html#api-ref) para ayudarte a realizar tareas de ML.
-Según su [sitio web](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn es una biblioteca de aprendizaje automático de código abierto que admite aprendizaje supervisado y no supervisado. También proporciona varias herramientas para ajuste de modelos, preprocesamiento de datos, selección y evaluación de modelos, y muchas otras utilidades."
+Según su [sitio web](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn es una biblioteca de aprendizaje automático de código abierto que soporta aprendizaje supervisado y no supervisado. También provee varias herramientas para ajuste de modelos, preprocesamiento de datos, selección y evaluación de modelos, y muchas otras utilidades."
-En este curso, usarás Scikit-learn y otras herramientas para construir modelos de aprendizaje automático para realizar lo que llamamos tareas de 'aprendizaje automático tradicional'. Hemos evitado deliberadamente redes neuronales y aprendizaje profundo, ya que están mejor cubiertos en nuestro próximo currículo 'AI para Principiantes'.
+En este curso usarás Scikit-learn y otras herramientas para construir modelos de aprendizaje automático para realizar lo que llamamos tareas tradicionales de aprendizaje automático. Hemos evitado intencionadamente redes neuronales y aprendizaje profundo, ya que se cubren mejor en nuestro próximo plan curricular 'IA para principiantes'.
-Scikit-learn hace que sea sencillo construir modelos y evaluarlos para su uso. Se centra principalmente en el uso de datos numéricos y contiene varios conjuntos de datos listos para usar como herramientas de aprendizaje. También incluye modelos preconstruidos para que los estudiantes los prueben. Vamos a explorar el proceso de cargar datos preempaquetados y usar un estimador para el primer modelo de ML con Scikit-learn con algunos datos básicos.
+Scikit-learn facilita construir modelos y evaluarlos para uso. Se centra principalmente en datos numéricos y contiene varios conjuntos de datos listos para usar como herramientas de aprendizaje. También incluye modelos preconstruidos para que los estudiantes prueben. Exploremos primero el proceso de cargar datos preempaquetados y usar un estimador incorporado para el primer modelo ML con Scikit-learn con datos básicos.
## Ejercicio - tu primer notebook con Scikit-learn
> Este tutorial fue inspirado por el [ejemplo de regresión lineal](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) en el sitio web de Scikit-learn.
-[](https://youtu.be/2xkXL5EUpS0 "ML para principiantes - Tu primer proyecto de regresión lineal en Python")
-> 🎥 Haz clic en la imagen de arriba para ver un video corto sobre este ejercicio.
+[](https://youtu.be/2xkXL5EUpS0 "ML para principiantes - Tu Primer Proyecto de Regresión Lineal en Python")
-En el archivo _notebook.ipynb_ asociado a esta lección, elimina todas las celdas presionando el ícono de 'papelera'.
+> 🎥 Haz clic en la imagen de arriba para un video corto realizando este ejercicio.
-En esta sección, trabajarás con un pequeño conjunto de datos sobre diabetes que está integrado en Scikit-learn para propósitos de aprendizaje. Imagina que quisieras probar un tratamiento para pacientes diabéticos. Los modelos de aprendizaje automático podrían ayudarte a determinar qué pacientes responderían mejor al tratamiento, basándote en combinaciones de variables. Incluso un modelo de regresión muy básico, cuando se visualiza, podría mostrar información sobre variables que te ayudarían a organizar tus ensayos clínicos teóricos.
+En el archivo _notebook.ipynb_ asociado a esta lección, limpia todas las celdas presionando el icono de 'papelera'.
-✅ Hay muchos tipos de métodos de regresión, y cuál elijas depende de la respuesta que estés buscando. Si quieres predecir la altura probable de una persona dada su edad, usarías regresión lineal, ya que estás buscando un **valor numérico**. Si estás interesado en descubrir si un tipo de cocina debería considerarse vegana o no, estás buscando una **asignación de categoría**, por lo que usarías regresión logística. Aprenderás más sobre regresión logística más adelante. Piensa un poco en algunas preguntas que puedes hacer a los datos y cuál de estos métodos sería más apropiado.
+En esta sección, trabajarás con un pequeño conjunto de datos sobre diabetes que está incorporado en Scikit-learn para fines de aprendizaje. Imagina que quieres probar un tratamiento para pacientes diabéticos. Los modelos de aprendizaje automático pueden ayudarte a determinar qué pacientes responderían mejor al tratamiento, basándose en combinaciones de variables. Incluso un modelo básico de regresión, cuando se visualiza, puede mostrar información sobre variables que te ayudarían a organizar tus ensayos clínicos teóricos.
+
+✅ Hay muchos tipos de métodos de regresión y cuál eliges depende de la respuesta que buscas. Si quieres predecir la altura probable para una persona de cierta edad, usarías regresión lineal, ya que buscas un **valor numérico**. Si te interesa descubrir si un tipo de cocina debe considerarse vegana o no, buscas una **asignación de categoría**, por lo que usarías regresión logística. Aprenderás más sobre regresión logística más adelante. Piensa un poco en algunas preguntas que puedes hacer sobre datos y cuál de estos métodos sería más apropiado.
Vamos a comenzar con esta tarea.
### Importar bibliotecas
-Para esta tarea, importaremos algunas bibliotecas:
+Para esta tarea importaremos algunas bibliotecas:
-- **matplotlib**. Es una herramienta útil para [graficar](https://matplotlib.org/) y la usaremos para crear un gráfico de líneas.
+- **matplotlib**. Es una [herramienta de gráficos](https://matplotlib.org/) útil que usaremos para crear un gráfico de líneas.
- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) es una biblioteca útil para manejar datos numéricos en Python.
- **sklearn**. Esta es la biblioteca [Scikit-learn](https://scikit-learn.org/stable/user_guide.html).
Importa algunas bibliotecas para ayudarte con tus tareas.
-1. Agrega las importaciones escribiendo el siguiente código:
+1. Añade las importaciones escribiendo el siguiente código:
```python
import matplotlib.pyplot as plt
@@ -122,26 +123,26 @@ Importa algunas bibliotecas para ayudarte con tus tareas.
from sklearn import datasets, linear_model, model_selection
```
- Arriba estás importando `matplotlib`, `numpy` y estás importando `datasets`, `linear_model` y `model_selection` de `sklearn`. `model_selection` se usa para dividir datos en conjuntos de entrenamiento y prueba.
+ Más arriba estás importando `matplotlib`, `numpy` y estás importando `datasets`, `linear_model` y `model_selection` de `sklearn`. `model_selection` se usa para dividir los datos en conjuntos de entrenamiento y prueba.
### El conjunto de datos de diabetes
-El [conjunto de datos de diabetes](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) integrado incluye 442 muestras de datos sobre diabetes, con 10 variables de características, algunas de las cuales incluyen:
+El [conjunto de datos diabetes](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) incorporado incluye 442 muestras de datos sobre diabetes, con 10 variables características, algunas de las cuales incluyen:
-- age: edad en años
-- bmi: índice de masa corporal
-- bp: presión arterial promedio
-- s1 tc: células T (un tipo de glóbulos blancos)
+- edad: edad en años
+- imc: índice de masa corporal
+- presión arterial: presión arterial promedio
+- s1 tc: Células T (un tipo de glóbulos blancos)
-✅ Este conjunto de datos incluye el concepto de 'sexo' como una variable de característica importante para la investigación sobre diabetes. Muchos conjuntos de datos médicos incluyen este tipo de clasificación binaria. Piensa un poco en cómo categorizaciones como esta podrían excluir a ciertas partes de la población de los tratamientos.
+✅ Este conjunto de datos incluye el concepto de 'sexo' como variable característica importante para la investigación sobre diabetes. Muchos conjuntos de datos médicos incluyen este tipo de clasificación binaria. Piensa un poco en cómo categorizaciones así podrían excluir a ciertas partes de una población de tratamientos.
-Ahora, carga los datos X e y.
+Ahora, carga los datos X y y.
-> 🎓 Recuerda, esto es aprendizaje supervisado, y necesitamos un objetivo 'y' nombrado.
+> 🎓 Recuerda, este es aprendizaje supervisado, y necesitamos un objetivo llamado 'y'.
-En una nueva celda de código, carga el conjunto de datos de diabetes llamando a `load_diabetes()`. El parámetro `return_X_y=True` indica que `X` será una matriz de datos y `y` será el objetivo de regresión.
+En una nueva celda de código, carga el conjunto de datos diabetes llamando a `load_diabetes()`. El parámetro `return_X_y=True` señala que `X` será una matriz de datos, y `y` será el objetivo de regresión.
-1. Agrega algunos comandos de impresión para mostrar la forma de la matriz de datos y su primer elemento:
+1. Añade algunos comandos print para mostrar la forma de la matriz de datos y su primer elemento:
```python
X, y = datasets.load_diabetes(return_X_y=True)
@@ -149,9 +150,9 @@ En una nueva celda de código, carga el conjunto de datos de diabetes llamando a
print(X[0])
```
- Lo que estás obteniendo como respuesta es una tupla. Lo que estás haciendo es asignar los dos primeros valores de la tupla a `X` e `y` respectivamente. Aprende más [sobre tuplas](https://wikipedia.org/wiki/Tuple).
+ Lo que recibes como respuesta es una tupla. Lo que haces es asignar los dos primeros valores de la tupla a `X` y `y` respectivamente. Aprende más [sobre tuplas](https://wikipedia.org/wiki/Tuple).
- Puedes ver que estos datos tienen 442 elementos organizados en matrices de 10 elementos:
+ Puedes ver que estos datos tienen 442 ítems con forma de arrays de 10 elementos:
```text
(442, 10)
@@ -159,9 +160,9 @@ En una nueva celda de código, carga el conjunto de datos de diabetes llamando a
-0.04340085 -0.00259226 0.01990842 -0.01764613]
```
- ✅ Piensa un poco sobre la relación entre los datos y el objetivo de regresión. La regresión lineal predice relaciones entre la característica X y la variable objetivo y. ¿Puedes encontrar el [objetivo](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) para el conjunto de datos de diabetes en la documentación? ¿Qué está demostrando este conjunto de datos, dado ese objetivo?
+ ✅ Piensa un poco sobre la relación entre los datos y el objetivo de regresión. La regresión lineal predice relaciones entre la característica X y la variable objetivo y. ¿Puedes encontrar el [objetivo](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) para el conjunto de datos de diabetes en la documentación? ¿Qué está demostrando este conjunto de datos dado ese objetivo?
-2. A continuación, selecciona una porción de este conjunto de datos para graficar seleccionando la tercera columna del conjunto de datos. Puedes hacerlo usando el operador `:` para seleccionar todas las filas y luego seleccionando la tercera columna usando el índice (2). También puedes cambiar la forma de los datos para que sean una matriz 2D, como se requiere para graficar, usando `reshape(n_rows, n_columns)`. Si uno de los parámetros es -1, la dimensión correspondiente se calcula automáticamente.
+2. Luego, selecciona una parte de este conjunto de datos para graficar seleccionando la tercera columna del conjunto. Puedes hacerlo usando el operador `:` para seleccionar todas las filas, y luego seleccionando la tercera columna usando el índice (2). También puedes remodelar los datos para que sean un array 2D — como se requiere para la gráfica — usando `reshape(n_filas, n_columnas)`. Si uno de los parámetros es -1, la dimensión correspondiente se calcula automáticamente.
```python
X = X[:, 2]
@@ -170,28 +171,28 @@ En una nueva celda de código, carga el conjunto de datos de diabetes llamando a
✅ En cualquier momento, imprime los datos para verificar su forma.
-3. Ahora que tienes los datos listos para ser graficados, puedes ver si una máquina puede ayudar a determinar una división lógica entre los números en este conjunto de datos. Para hacer esto, necesitas dividir tanto los datos (X) como el objetivo (y) en conjuntos de prueba y entrenamiento. Scikit-learn tiene una forma sencilla de hacer esto; puedes dividir tus datos de prueba en un punto dado.
+3. Ahora que tienes datos listos para graficar, puedes ver si una máquina puede ayudar a determinar una división lógica entre los números en este conjunto de datos. Para ello, necesitas dividir tanto los datos (X) como el objetivo (y) en conjuntos de prueba y entrenamiento. Scikit-learn tiene una forma sencilla de hacerlo; puedes dividir tus datos de prueba en un punto dado.
```python
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33)
```
-4. ¡Ahora estás listo para entrenar tu modelo! Carga el modelo de regresión lineal y entrénalo con tus conjuntos de entrenamiento X e y usando `model.fit()`:
+4. ¡Ahora estás listo para entrenar tu modelo! Carga el modelo de regresión lineal y entrénalo con tus conjuntos de entrenamiento X y y usando `model.fit()`:
```python
model = linear_model.LinearRegression()
model.fit(X_train, y_train)
```
- ✅ `model.fit()` es una función que verás en muchas bibliotecas de ML como TensorFlow.
+ ✅ `model.fit()` es una función que verás en muchas bibliotecas de ML como TensorFlow
-5. Luego, crea una predicción usando datos de prueba, utilizando la función `predict()`. Esto se usará para dibujar la línea entre los grupos de datos.
+5. Luego, crea una predicción usando los datos de prueba, usando la función `predict()`. Esto se usará para trazar la línea entre los grupos de datos.
```python
y_pred = model.predict(X_test)
```
-6. Ahora es momento de mostrar los datos en un gráfico. Matplotlib es una herramienta muy útil para esta tarea. Crea un gráfico de dispersión de todos los datos de prueba X e y, y usa la predicción para dibujar una línea en el lugar más apropiado, entre los grupos de datos del modelo.
+6. Ahora es momento de mostrar los datos en una gráfica. Matplotlib es una herramienta muy útil para esta tarea. Crea un diagrama de dispersión de todos los datos de prueba X e y, y usa la predicción para dibujar una línea en el lugar más apropiado, entre los grupos de datos del modelo.
```python
plt.scatter(X_test, y_test, color='black')
@@ -202,23 +203,24 @@ En una nueva celda de código, carga el conjunto de datos de diabetes llamando a
plt.show()
```
- 
-✅ Piensa un poco en lo que está sucediendo aquí. Una línea recta está atravesando muchos pequeños puntos de datos, pero ¿qué está haciendo exactamente? ¿Puedes ver cómo deberías poder usar esta línea para predecir dónde debería encajar un nuevo punto de datos no visto en relación con el eje y del gráfico? Intenta poner en palabras el uso práctico de este modelo.
+ 
+
-¡Felicidades! Has construido tu primer modelo de regresión lineal, creado una predicción con él y la has mostrado en un gráfico.
+ ✅ Piensa un poco sobre lo que está pasando aquí. Una línea recta atraviesa muchos pequeños puntos de datos, pero ¿qué está haciendo exactamente? ¿Puedes ver cómo deberías poder usar esta línea para predecir dónde debería encajar un nuevo punto de datos no visto en relación con el eje y del gráfico? Trata de poner en palabras el uso práctico de este modelo.
+
+¡Felicidades, construiste tu primer modelo de regresión lineal, creaste una predicción con él y la mostraste en un gráfico!
---
## 🚀Desafío
Grafica una variable diferente de este conjunto de datos. Pista: edita esta línea: `X = X[:,2]`. Dado el objetivo de este conjunto de datos, ¿qué puedes descubrir sobre la progresión de la diabetes como enfermedad?
-
-## [Cuestionario posterior a la lección](https://ff-quizzes.netlify.app/en/ml/)
+## [Cuestionario posterior a la conferencia](https://ff-quizzes.netlify.app/en/ml/)
## Revisión y Autoestudio
-En este tutorial, trabajaste con regresión lineal simple, en lugar de regresión univariante o múltiple. Lee un poco sobre las diferencias entre estos métodos, o echa un vistazo a [este video](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef).
+En este tutorial, trabajaste con regresión lineal simple, en lugar de regresión lineal univariante o múltiple. Lee un poco sobre las diferencias entre estos métodos, o mira [este video](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef)
-Lee más sobre el concepto de regresión y piensa en qué tipo de preguntas pueden responderse con esta técnica. Toma este [tutorial](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) para profundizar tu comprensión.
+Lee más sobre el concepto de regresión y piensa en qué tipos de preguntas pueden responderse con esta técnica. Toma este [tutorial](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) para profundizar tu comprensión.
## Tarea
@@ -226,5 +228,7 @@ Lee más sobre el concepto de regresión y piensa en qué tipo de preguntas pued
---
-**Descargo de responsabilidad**:
-Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción.
\ No newline at end of file
+
+**Descargo de responsabilidad**:
+Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No somos responsables de cualquier malentendido o interpretación errónea que surja del uso de esta traducción.
+
\ No newline at end of file
diff --git a/translations/es/2-Regression/2-Data/README.md b/translations/es/2-Regression/2-Data/README.md
index b923bd389..485406987 100644
--- a/translations/es/2-Regression/2-Data/README.md
+++ b/translations/es/2-Regression/2-Data/README.md
@@ -1,60 +1,60 @@
-# Construir un modelo de regresión usando Scikit-learn: preparar y visualizar datos
+# Construye un modelo de regresión usando Scikit-learn: prepara y visualiza datos
-
+
Infografía por [Dasani Madipalli](https://twitter.com/dasani_decoded)
-## [Cuestionario previo a la lección](https://ff-quizzes.netlify.app/en/ml/)
+## [Cuestionario antes de la lección](https://ff-quizzes.netlify.app/en/ml/)
> ### [¡Esta lección está disponible en R!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
## Introducción
-Ahora que tienes las herramientas necesarias para comenzar a construir modelos de aprendizaje automático con Scikit-learn, estás listo para empezar a formular preguntas sobre tus datos. Al trabajar con datos y aplicar soluciones de ML, es muy importante saber cómo hacer la pregunta correcta para desbloquear adecuadamente el potencial de tu conjunto de datos.
+Ahora que tienes configuradas las herramientas que necesitas para comenzar a abordar la construcción de modelos de aprendizaje automático con Scikit-learn, estás listo para empezar a hacer preguntas a tus datos. Al trabajar con datos y aplicar soluciones de ML, es muy importante entender cómo hacer la pregunta correcta para desbloquear adecuadamente el potencial de tu conjunto de datos.
En esta lección, aprenderás:
- Cómo preparar tus datos para construir modelos.
- Cómo usar Matplotlib para la visualización de datos.
+- Cómo usar Seaborn para una visualización de datos más expresiva.
-## Hacer la pregunta correcta sobre tus datos
+## Hacer la pregunta correcta a tus datos
-La pregunta que necesitas responder determinará qué tipo de algoritmos de ML utilizarás. Y la calidad de la respuesta que obtengas dependerá en gran medida de la naturaleza de tus datos.
+La pregunta que necesitas responder determinará qué tipo de algoritmos de ML utilizarás. Y la calidad de la respuesta que recibas dependerá en gran medida de la naturaleza de tus datos.
-Echa un vistazo a los [datos](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) proporcionados para esta lección. Puedes abrir este archivo .csv en VS Code. Una revisión rápida muestra que hay espacios en blanco y una mezcla de datos de tipo cadena y numéricos. También hay una columna extraña llamada 'Package' donde los datos son una mezcla entre 'sacks', 'bins' y otros valores. De hecho, los datos están un poco desordenados.
+Observa el [conjunto de datos](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) proporcionado para esta lección. Puedes abrir este archivo .csv en VS Code. Una revisión rápida muestra inmediatamente que hay espacios en blanco y una mezcla de datos de texto y numéricos. También hay una columna extraña llamada 'Package' donde los datos son una mezcla entre 'sacks', 'bins' y otros valores. De hecho, los datos están un poco desordenados.
[](https://youtu.be/5qGjczWTrDQ "ML para principiantes - Cómo analizar y limpiar un conjunto de datos")
-> 🎥 Haz clic en la imagen de arriba para ver un breve video sobre cómo preparar los datos para esta lección.
+> 🎥 Haz clic en la imagen de arriba para un video breve que muestra cómo preparar los datos para esta lección.
-De hecho, no es muy común recibir un conjunto de datos completamente listo para usar y crear un modelo de ML directamente. En esta lección, aprenderás cómo preparar un conjunto de datos sin procesar utilizando bibliotecas estándar de Python. También aprenderás varias técnicas para visualizar los datos.
+De hecho, no es muy común recibir un conjunto de datos completamente listo para usar y crear un modelo de ML directamente. En esta lección, aprenderás cómo preparar un conjunto de datos sin procesar usando bibliotecas estándar de Python. También aprenderás varias técnicas para visualizar los datos.
-## Caso de estudio: 'el mercado de calabazas'
+## Estudio de caso: 'el mercado de calabazas'
-En esta carpeta encontrarás un archivo .csv en la carpeta raíz `data` llamado [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv), que incluye 1757 líneas de datos sobre el mercado de calabazas, agrupados por ciudad. Estos son datos sin procesar extraídos de los [Informes estándar de mercados terminales de cultivos especiales](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) distribuidos por el Departamento de Agricultura de los Estados Unidos.
+En esta carpeta encontrarás un archivo .csv en la carpeta raíz `data` llamado [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) que incluye 1757 líneas de datos sobre el mercado de calabazas, agrupados por ciudad. Estos son datos sin procesar extraídos de los [Informes estándar de mercados terminales de cultivos especializados](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) distribuidos por el Departamento de Agricultura de los Estados Unidos.
-### Preparar los datos
+### Preparando datos
Estos datos son de dominio público. Se pueden descargar en muchos archivos separados, por ciudad, desde el sitio web del USDA. Para evitar demasiados archivos separados, hemos concatenado todos los datos de las ciudades en una sola hoja de cálculo, por lo que ya hemos _preparado_ un poco los datos. Ahora, echemos un vistazo más de cerca a los datos.
-### Los datos de calabazas - primeras conclusiones
+### Los datos de calabazas - conclusiones iniciales
-¿Qué notas sobre estos datos? Ya viste que hay una mezcla de cadenas, números, espacios en blanco y valores extraños que necesitas interpretar.
+¿Qué notas sobre estos datos? Ya viste que hay una mezcla de cadenas, números, espacios en blanco y valores extraños que necesitas comprender.
-¿Qué pregunta puedes hacer sobre estos datos utilizando una técnica de regresión? ¿Qué tal "Predecir el precio de una calabaza en venta durante un mes determinado"? Mirando nuevamente los datos, hay algunos cambios que necesitas hacer para crear la estructura de datos necesaria para esta tarea.
+¿Qué pregunta puedes hacerle a estos datos usando una técnica de Regresión? ¿Qué tal "Predecir el precio de una calabaza a la venta durante un mes dado"? Mirando nuevamente los datos, hay algunos cambios que necesitas hacer para crear la estructura de datos necesaria para la tarea.
+## Ejercicio - analiza los datos de calabazas
-## Ejercicio - analizar los datos de calabazas
+Usemos [Pandas](https://pandas.pydata.org/), (el nombre significa `Python Data Analysis`), una herramienta muy útil para dar forma a los datos, para analizar y preparar estos datos de calabazas.
-Usemos [Pandas](https://pandas.pydata.org/) (el nombre significa `Python Data Analysis`), una herramienta muy útil para dar forma a los datos, para analizar y preparar estos datos de calabazas.
+### Primero, verifica fechas faltantes
-### Primero, verifica si faltan fechas
+Primero necesitarás hacer pasos para verificar si faltan fechas:
-Primero necesitarás tomar medidas para verificar si faltan fechas:
+1. Convertir las fechas a formato de mes (estas son fechas de EE.UU., así que el formato es `MM/DD/YYYY`).
+2. Extraer el mes a una nueva columna.
-1. Convierte las fechas al formato de mes (estas son fechas de EE. UU., por lo que el formato es `MM/DD/YYYY`).
-2. Extrae el mes a una nueva columna.
-
-Abre el archivo _notebook.ipynb_ en Visual Studio Code e importa la hoja de cálculo en un nuevo dataframe de Pandas.
+Abre el archivo _notebook.ipynb_ en Visual Studio Code y importa la hoja de cálculo en un nuevo dataframe de Pandas.
1. Usa la función `head()` para ver las primeras cinco filas.
@@ -66,28 +66,28 @@ Abre el archivo _notebook.ipynb_ en Visual Studio Code e importa la hoja de cál
✅ ¿Qué función usarías para ver las últimas cinco filas?
-1. Verifica si hay datos faltantes en el dataframe actual:
+1. Revisa si hay datos faltantes en el dataframe actual:
```python
pumpkins.isnull().sum()
```
- Hay datos faltantes, pero tal vez no importen para la tarea en cuestión.
+ Hay datos faltantes, pero quizá no importen para la tarea en cuestión.
-1. Para que tu dataframe sea más fácil de trabajar, selecciona solo las columnas que necesitas, usando la función `loc`, que extrae del dataframe original un grupo de filas (pasadas como primer parámetro) y columnas (pasadas como segundo parámetro). La expresión `:` en el caso siguiente significa "todas las filas".
+1. Para que tu dataframe sea más fácil de manejar, selecciona solo las columnas que necesitas, usando la función `loc` que extrae del dataframe original un grupo de filas (pasado como primer parámetro) y columnas (pasado como segundo parámetro). La expresión `:` en el caso siguiente significa "todas las filas".
```python
columns_to_select = ['Package', 'Low Price', 'High Price', 'Date']
pumpkins = pumpkins.loc[:, columns_to_select]
```
-### Segundo, determina el precio promedio de las calabazas
+### Segundo, determina el precio promedio de la calabaza
-Piensa en cómo determinar el precio promedio de una calabaza en un mes determinado. ¿Qué columnas elegirías para esta tarea? Pista: necesitarás 3 columnas.
+Piensa cómo determinar el precio promedio de una calabaza en un mes dado. ¿Qué columnas escogerías para esta tarea? Pista: necesitarás 3 columnas.
-Solución: toma el promedio de las columnas `Low Price` y `High Price` para llenar la nueva columna Price, y convierte la columna Date para que solo muestre el mes. Afortunadamente, según la verificación anterior, no hay datos faltantes para fechas o precios.
+Solución: toma el promedio de las columnas `Low Price` y `High Price` para llenar la nueva columna Price, y convierte la columna Date para mostrar solo el mes. Afortunadamente, según la revisión anterior, no hay datos faltantes para fechas o precios.
-1. Para calcular el promedio, agrega el siguiente código:
+1. Para calcular el promedio, añade el siguiente código:
```python
price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2
@@ -96,37 +96,37 @@ Solución: toma el promedio de las columnas `Low Price` y `High Price` para llen
```
- ✅ Siéntete libre de imprimir cualquier dato que desees verificar usando `print(month)`.
+ ✅ Si quieres, puedes imprimir cualquier dato que desees verificar usando `print(month)`.
-2. Ahora, copia tus datos convertidos en un nuevo dataframe de Pandas:
+2. Ahora, copia tus datos convertidos a un nuevo dataframe de Pandas:
```python
new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price})
```
- Al imprimir tu dataframe, verás un conjunto de datos limpio y ordenado sobre el cual puedes construir tu nuevo modelo de regresión.
+ Imprimir tu dataframe te mostrará un conjunto de datos limpio y ordenado sobre el que puedes construir tu nuevo modelo de regresión.
-### Pero espera, ¡hay algo extraño aquí!
+### ¡Pero espera! Hay algo extraño aquí
-Si miras la columna `Package`, las calabazas se venden en muchas configuraciones diferentes. Algunas se venden en medidas de '1 1/9 bushel', otras en '1/2 bushel', algunas por calabaza, otras por libra, y algunas en grandes cajas con anchos variables.
+Si miras la columna `Package`, las calabazas se venden en muchas configuraciones diferentes. Algunas se venden en medidas de '1 1/9 bushel', otras en '1/2 bushel', algunas por calabaza, otras por libra, y algunas en cajas grandes de diferentes tamaños.
-> Parece que las calabazas son muy difíciles de pesar de manera consistente.
+> Las calabazas parecen muy difíciles de pesar de manera consistente
-Al profundizar en los datos originales, es interesante notar que cualquier cosa con `Unit of Sale` igual a 'EACH' o 'PER BIN' también tiene el tipo `Package` por pulgada, por bin, o 'each'. Parece que las calabazas son muy difíciles de pesar de manera consistente, así que filtremos seleccionando solo las calabazas con la cadena 'bushel' en su columna `Package`.
+Al profundizar en los datos originales, es interesante que cualquier cosa con `Unit of Sale` igual a 'EACH' o 'PER BIN' también tenga el tipo `Package` por pulgada, por contenedor o 'cada uno'. Las calabazas parecen ser muy difíciles de pesar consistentemente, así que filtremos solo las calabazas que tengan la cadena 'bushel' en su columna `Package`.
-1. Agrega un filtro en la parte superior del archivo, debajo de la importación inicial del .csv:
+1. Añade un filtro al principio del archivo, bajo la importación inicial del .csv:
```python
pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]
```
- Si imprimes los datos ahora, puedes ver que solo estás obteniendo las aproximadamente 415 filas de datos que contienen calabazas por bushel.
+ Si imprimes los datos ahora, verás que solo estás obteniendo alrededor de 415 filas de datos que contienen calabazas por bushel.
-### Pero espera, ¡hay una cosa más por hacer!
+### ¡Pero espera! Hay una cosa más que hacer
-¿Notaste que la cantidad de bushel varía por fila? Necesitas normalizar los precios para mostrar el precio por bushel, así que haz algunos cálculos para estandarizarlo.
+¿Notaste que la cantidad de bushel varía por fila? Necesitas normalizar los precios para que muestren el precio por bushel, así que haz algunos cálculos para estandarizarlo.
-1. Agrega estas líneas después del bloque que crea el dataframe new_pumpkins:
+1. Añade estas líneas después del bloque que crea el nuevo dataframe new_pumpkins:
```python
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9)
@@ -134,38 +134,38 @@ Al profundizar en los datos originales, es interesante notar que cualquier cosa
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2)
```
-✅ Según [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), el peso de un bushel depende del tipo de producto, ya que es una medida de volumen. "Un bushel de tomates, por ejemplo, se supone que pesa 56 libras... Las hojas y los vegetales ocupan más espacio con menos peso, por lo que un bushel de espinacas pesa solo 20 libras". ¡Es todo bastante complicado! No nos molestemos en hacer una conversión de bushel a libra, y en su lugar fijemos el precio por bushel. Todo este estudio sobre bushels de calabazas, sin embargo, demuestra lo importante que es entender la naturaleza de tus datos.
+✅ Según [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), el peso de un bushel depende del tipo de producto, ya que es una medida de volumen. "Un bushel de tomates, por ejemplo, debe pesar 56 libras... Las hojas y verduras ocupan más espacio con menos peso, así que un bushel de espinacas pesa solo 20 libras." ¡Todo es bastante complicado! No nos molestaremos en hacer una conversión de bushel a libra, sino que valoraremos por bushel. ¡Todo este estudio sobre bushels de calabazas demuestra lo importante que es entender la naturaleza de tus datos!
-Ahora puedes analizar el precio por unidad basado en su medida de bushel. Si imprimes los datos una vez más, puedes ver cómo se han estandarizado.
+Ahora, puedes analizar los precios por unidad basados en su medida de bushel. Si imprimes los datos una vez más, puedes ver cómo están estandarizados.
-✅ ¿Notaste que las calabazas vendidas por medio bushel son muy caras? ¿Puedes averiguar por qué? Pista: las calabazas pequeñas son mucho más caras que las grandes, probablemente porque hay muchas más por bushel, dado el espacio no utilizado que ocupa una calabaza grande y hueca para pastel.
+✅ ¿Notaste que las calabazas vendidas por medio bushel son muy caras? ¿Puedes descubrir por qué? Pista: las calabazas pequeñas son mucho más caras que las grandes, probablemente porque hay muchas más por bushel, dado el espacio no usado que ocupa una calabaza grande hueca para pasteles.
## Estrategias de visualización
-Parte del rol del científico de datos es demostrar la calidad y naturaleza de los datos con los que están trabajando. Para hacerlo, a menudo crean visualizaciones interesantes, como gráficos, diagramas y tablas, que muestran diferentes aspectos de los datos. De esta manera, pueden mostrar visualmente relaciones y brechas que de otro modo serían difíciles de descubrir.
+Parte del rol del científico de datos es demostrar la calidad y naturaleza de los datos con los que están trabajando. Para ello, frecuentemente crean visualizaciones interesantes, o gráficos, diagramas y tablas que muestran diferentes aspectos de los datos. De este modo, pueden mostrar visualmente relaciones y vacíos que de otro modo serían difíciles de descubrir.
[](https://youtu.be/SbUkxH6IJo0 "ML para principiantes - Cómo visualizar datos con Matplotlib")
-> 🎥 Haz clic en la imagen de arriba para ver un breve video sobre cómo visualizar los datos para esta lección.
+> 🎥 Haz clic en la imagen arriba para un video corto que muestra cómo visualizar los datos para esta lección.
-Las visualizaciones también pueden ayudar a determinar la técnica de aprendizaje automático más adecuada para los datos. Un gráfico de dispersión que parece seguir una línea, por ejemplo, indica que los datos son buenos candidatos para un ejercicio de regresión lineal.
+Las visualizaciones también pueden ayudar a determinar la técnica de aprendizaje automático más apropiada para los datos. Un diagrama de dispersión que parece seguir una línea, por ejemplo, indica que los datos son buenos candidatos para un ejercicio de regresión lineal.
-Una biblioteca de visualización de datos que funciona bien en Jupyter notebooks es [Matplotlib](https://matplotlib.org/) (que también viste en la lección anterior).
+Una biblioteca de visualización de datos que funciona bien en notebooks de Jupyter es [Matplotlib](https://matplotlib.org/) (que también viste en la lección anterior).
-> Obtén más experiencia con la visualización de datos en [estos tutoriales](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott).
+> Obtén más experiencia con visualización de datos en [estos tutoriales](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott).
-## Ejercicio - experimentar con Matplotlib
+## Ejercicio - experimenta con Matplotlib
Intenta crear algunos gráficos básicos para mostrar el nuevo dataframe que acabas de crear. ¿Qué mostraría un gráfico de líneas básico?
-1. Importa Matplotlib en la parte superior del archivo, debajo de la importación de Pandas:
+1. Importa Matplotlib al principio del archivo, bajo la importación de Pandas:
```python
import matplotlib.pyplot as plt
```
-1. Vuelve a ejecutar todo el notebook para actualizar.
-1. En la parte inferior del notebook, agrega una celda para graficar los datos como un cuadro:
+1. Vuelve a ejecutar todo el notebook para refrescar.
+1. Al final del notebook, añade una celda para graficar los datos como un boxplot:
```python
price = new_pumpkins.Price
@@ -174,44 +174,121 @@ Intenta crear algunos gráficos básicos para mostrar el nuevo dataframe que aca
plt.show()
```
- 
+ 
- ¿Es este un gráfico útil? ¿Hay algo que te sorprenda?
+ ¿Es este un gráfico útil? ¿Te sorprende algo en él?
- No es particularmente útil, ya que solo muestra tus datos como una dispersión de puntos en un mes determinado.
+ No es particularmente útil ya que solo muestra tus datos como una dispersión de puntos en un mes dado.
### Hazlo útil
-Para que los gráficos muestren datos útiles, generalmente necesitas agrupar los datos de alguna manera. Intentemos crear un gráfico donde el eje y muestre los meses y los datos demuestren la distribución de los mismos.
+Para que los gráficos muestren datos útiles, usualmente necesitas agrupar los datos de alguna manera. Intentemos crear un gráfico donde el eje y muestre los meses y los datos demuestren la distribución de datos.
-1. Agrega una celda para crear un gráfico de barras agrupado:
+1. Añade una celda para crear un gráfico de barras agrupadas:
```python
new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar')
plt.ylabel("Pumpkin Price")
```
- 
+ 
+
+ ¡Esta es una visualización de datos más útil! Parece indicar que el precio más alto de las calabazas ocurre en septiembre y octubre. ¿Cumple esto tus expectativas? ¿Por qué o por qué no?
+
+## Ejercicio - experimenta con Seaborn
+
+Matplotlib es poderoso, pero puede requerir mucho código para producir un gráfico pulido. [Seaborn](https://seaborn.pydata.org/) es una biblioteca construida _sobre_ Matplotlib diseñada para visualización estadística de datos. Trabaja directamente con dataframes de Pandas, aplica estilos predeterminados atractivos y permite crear gráficos informativos con mucho menos código. Dado que Seaborn devuelve objetos de Matplotlib, aún puedes usar todo lo que ya sabes de Matplotlib para afinar el resultado.
+
+> Si aún no tienes Seaborn instalado, instálalo con `pip install seaborn`.
+
+1. Importa Seaborn al inicio del notebook, bajo las otras importaciones. Convencionalmente se importa como `sns`:
+
+ ```python
+ import seaborn as sns
+ ```
+
+### Diagramas de dispersión para mostrar relaciones
+
+Una gran parte de explorar datos antes de construir un modelo es buscar _relaciones_ entre variables. Un [diagrama de dispersión](https://en.wikipedia.org/wiki/Scatter_plot) es una de las mejores herramientas para esto: si los puntos parecen seguir una línea, las dos variables podrían estar correlacionadas, lo que es una buena señal de que un modelo de regresión lineal podría funcionar.
+
+1. Reproduce el diagrama de dispersión precio a mes de antes, esta vez usando [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) de Seaborn (gráfico relacional), que funciona directamente con las columnas de tu dataframe:
+
+ ```python
+ sns.relplot(x="Price", y="Month", data=new_pumpkins)
+ ```
+
+ 
+
+ Observa cómo pasas los _nombres de las columnas_ y el dataframe, y Seaborn se encarga de las etiquetas de los ejes por ti.
+
+2. Puedes cambiar a un gráfico de líneas pasando `kind="line"`. Seaborn incluso dibuja una banda sombreada mostrando el intervalo de confianza alrededor de la línea:
+
+ ```python
+ sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins)
+ ```
+
+ 
+
+ Estos datos son bastante ruidosos, así que un gráfico de líneas no es la opción más clara aquí — pero muestra qué tan fácil es cambiar tipos de gráficos en Seaborn.
+
+### Gráficos de barras para mostrar distribuciones
+
+
+Anteriormente agrupaste los datos a mano para crear un gráfico de barras con Matplotlib. El [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) de Seaborn (gráfico categórico) puede hacer la agrupación y agregación por ti. Por defecto, `kind="bar"` muestra la media de cada categoría junto con una línea negra que indica el intervalo de confianza.
+
+1. Crea un gráfico de barras del precio promedio por mes:
+
+ ```python
+ sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar")
+ ```
+
+ 
+
+ Esto confirma lo que viste con Matplotlib: los precios alcanzan su punto máximo alrededor de septiembre y octubre, pero Seaborn también visualiza cuánto _varía_ el precio dentro de cada mes.
+
+### Mapas de calor para mostrar correlaciones
+
+Los gráficos de dispersión comparan dos variables a la vez. Cuando tienes varias columnas numéricas, un [mapa de calor](https://es.wikipedia.org/wiki/Mapa_de_calor) te permite ver la fuerza de la relación entre _cada_ par de columnas al mismo tiempo. Esta es una manera común de identificar qué características están más correlacionadas antes de elegir qué alimentar en un modelo (y el mismo tipo de gráfico se usa después para mostrar matrices de confusión en clasificación).
+
+1. Construye una matriz de correlación con Pandas y luego dibújala con el [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html) de Seaborn. La opción `annot=True` imprime los valores de correlación en cada celda:
+
+ ```python
+ correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()
+ sns.heatmap(correlations, annot=True, cmap="coolwarm")
+ ```
+
+ 
+
+ Valores cercanos a `1` (o `-1`) significan que las columnas están fuertemente correlacionadas _linealmente_. Observa cómo `Low Price` y `High Price` están casi perfectamente correlacionados. `Month`, en cambio, muestra solo una débil correlación lineal con el precio, aunque el gráfico de barras arriba reveló un pico estacional claro en septiembre y octubre. Esa es una lección importante: el coeficiente de correlación solo mide relaciones _lineales_, por lo que puede perder patrones estacionales o no lineales. ✅ ¿Por qué es útil mirar tanto un mapa de calor *como* gráficos como el de barras antes de decidir qué columnas usar?
+
+### ¿Matplotlib o Seaborn?
+
+Ambas bibliotecas vale la pena conocer:
+
+- **Matplotlib** te da un control detallado sobre cada elemento de un gráfico y es la base sobre la que se construyen casi todas las otras bibliotecas de visualización en Python.
+- **Seaborn** proporciona funciones de mayor nivel y valores predeterminados atractivos para gráficos estadísticos, trabaja directamente con dataframes y es a menudo más rápido para el análisis exploratorio de datos.
- ¡Este es un gráfico de datos más útil! Parece indicar que el precio más alto de las calabazas ocurre en septiembre y octubre. ¿Cumple con tus expectativas? ¿Por qué o por qué no?
+Un flujo de trabajo común es usar Seaborn para explorar tus datos rápidamente y luego recurrir a Matplotlib cuando necesitas personalizar detalles.
---
## 🚀Desafío
-Explora los diferentes tipos de visualización que ofrece Matplotlib. ¿Qué tipos son más apropiados para problemas de regresión?
+Explora los diferentes tipos de visualización que ofrecen Matplotlib y Seaborn. ¿Qué tipos son más apropiados para problemas de regresión?
## [Cuestionario posterior a la lección](https://ff-quizzes.netlify.app/en/ml/)
-## Revisión y autoestudio
+## Repaso y estudio autónomo
-Echa un vistazo a las muchas formas de visualizar datos. Haz una lista de las diversas bibliotecas disponibles y anota cuáles son mejores para ciertos tipos de tareas, por ejemplo, visualizaciones en 2D frente a visualizaciones en 3D. ¿Qué descubres?
+Echa un vistazo a las muchas formas de visualizar datos. Haz una lista de las diversas bibliotecas disponibles y anota cuáles son mejores para determinados tipos de tareas, por ejemplo visualizaciones 2D versus visualizaciones 3D. ¿Qué descubres?
## Tarea
-[Explorar visualización](assignment.md)
+[Explorando la visualización](assignment.md)
---
-**Descargo de responsabilidad**:
-Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción.
\ No newline at end of file
+
+**Descargo de responsabilidad**:
+Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No somos responsables de cualquier malentendido o interpretación errónea que surja del uso de esta traducción.
+
\ No newline at end of file
diff --git a/translations/es/2-Regression/2-Data/solution/notebook.ipynb b/translations/es/2-Regression/2-Data/solution/notebook.ipynb
index d057529e7..19de44cee 100644
--- a/translations/es/2-Regression/2-Data/solution/notebook.ipynb
+++ b/translations/es/2-Regression/2-Data/solution/notebook.ipynb
@@ -3,7 +3,9 @@
{
"cell_type": "markdown",
"metadata": {},
- "source": []
+ "source": [
+ "## Regresión Lineal para Calabazas - Lección 2\n"
+ ]
},
{
"cell_type": "code",
@@ -220,6 +222,7 @@
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
"pumpkins = pd.read_csv('../../data/US-pumpkins.csv')\n",
"\n",
"pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]\n",
@@ -383,18 +386,78 @@
"plt.ylabel(\"Pumpkin Price\")"
]
},
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Visualizando con Seaborn\n",
+ "\n",
+ "[Seaborn](https://seaborn.pydata.org/) está construido sobre Matplotlib y trabaja directamente con dataframes, lo que permite crear rápidamente gráficos estadísticos atractivos con muy poco código.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Diagramas de dispersión para mostrar relaciones\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", kind=\"line\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Gráficos de barras para mostrar distribuciones\n"
+ ]
+ },
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
- "source": []
+ "source": [
+ "sns.catplot(x=\"Month\", y=\"Price\", data=new_pumpkins, kind=\"bar\")"
+ ]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "\n---\n\n**Descargo de responsabilidad**: \nEste documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por garantizar la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción.\n"
+ "### Mapas de calor para mostrar correlaciones\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()\n",
+ "sns.heatmap(correlations, annot=True, cmap=\"coolwarm\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "---\n\n\n**Descargo de responsabilidad**:\nEste documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No somos responsables de cualquier malentendido o interpretación errónea que surja del uso de esta traducción.\n\n"
]
}
],
@@ -424,13 +487,7 @@
"hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d"
}
},
- "orig_nbformat": 2,
- "coopTranslator": {
- "original_hash": "95726f0b8283628d5356a4f8eb8b4b76",
- "translation_date": "2025-09-04T01:36:43+00:00",
- "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
- "language_code": "es"
- }
+ "orig_nbformat": 2
},
"nbformat": 4,
"nbformat_minor": 2
diff --git a/translations/es/8-Reinforcement/1-QLearning/README.md b/translations/es/8-Reinforcement/1-QLearning/README.md
index bd18e2364..0c40f68dd 100644
--- a/translations/es/8-Reinforcement/1-QLearning/README.md
+++ b/translations/es/8-Reinforcement/1-QLearning/README.md
@@ -1,11 +1,11 @@
# Introducción al Aprendizaje por Refuerzo y Q-Learning
-
+
> Sketchnote por [Tomomi Imura](https://www.twitter.com/girlie_mac)
-El aprendizaje por refuerzo implica tres conceptos importantes: el agente, algunos estados y un conjunto de acciones por estado. Al ejecutar una acción en un estado específico, el agente recibe una recompensa. Imagina nuevamente el videojuego Super Mario. Tú eres Mario, estás en un nivel del juego, parado junto al borde de un acantilado. Sobre ti hay una moneda. Tú, siendo Mario, en un nivel del juego, en una posición específica... ese es tu estado. Moverte un paso hacia la derecha (una acción) te llevará al borde y te dará una puntuación numérica baja. Sin embargo, presionar el botón de salto te permitirá ganar un punto y seguir vivo. Ese es un resultado positivo y debería otorgarte una puntuación numérica positiva.
+El aprendizaje por refuerzo involucra tres conceptos importantes: el agente, algunos estados y un conjunto de acciones por estado. Al ejecutar una acción en un estado especificado, el agente recibe una recompensa. Imagina nuevamente el videojuego Super Mario. Eres Mario, estás en un nivel de juego, de pie junto al borde de un acantilado. Encima de ti hay una moneda. Tú siendo Mario, en un nivel de juego, en una posición específica... ese es tu estado. Mover un paso a la derecha (una acción) te llevaría al borde, y eso te daría una puntuación numérica baja. Sin embargo, presionar el botón de salto te permitiría anotar un punto y seguirías vivo. Ese es un resultado positivo y debería premiarte con una puntuación numérica positiva.
-Usando aprendizaje por refuerzo y un simulador (el juego), puedes aprender a jugar para maximizar la recompensa, que es permanecer vivo y obtener la mayor cantidad de puntos posible.
+Usando el aprendizaje por refuerzo y un simulador (el juego), puedes aprender cómo jugar para maximizar la recompensa, que es mantenerse vivo y anotar tantos puntos como sea posible.
[](https://www.youtube.com/watch?v=lDq_en8RNOo)
@@ -13,35 +13,35 @@ Usando aprendizaje por refuerzo y un simulador (el juego), puedes aprender a jug
## [Cuestionario previo a la lección](https://ff-quizzes.netlify.app/en/ml/)
-## Prerrequisitos y Configuración
+## Requisitos previos y configuración
-En esta lección, experimentaremos con algo de código en Python. Deberías poder ejecutar el código del Jupyter Notebook de esta lección, ya sea en tu computadora o en la nube.
+En esta lección, experimentaremos con algo de código en Python. Deberías poder ejecutar el código del Jupyter Notebook de esta lección, ya sea en tu computadora o en algún lugar en la nube.
-Puedes abrir [el notebook de la lección](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) y seguir esta lección para construir.
+Puedes abrir [el cuaderno de la lección](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) y seguir esta lección para construir.
-> **Nota:** Si estás abriendo este código desde la nube, también necesitas obtener el archivo [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), que se utiliza en el código del notebook. Agrégalo al mismo directorio que el notebook.
+> **Nota:** Si abres este código desde la nube, también debes obtener el archivo [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), que se usa en el código del cuaderno. Agrégalo al mismo directorio que el cuaderno.
## Introducción
-En esta lección, exploraremos el mundo de **[Pedro y el Lobo](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)**, inspirado en un cuento musical de hadas de un compositor ruso, [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev). Usaremos **Aprendizaje por Refuerzo** para permitir que Pedro explore su entorno, recoja manzanas deliciosas y evite encontrarse con el lobo.
+En esta lección, exploraremos el mundo de **[Pedro y el Lobo](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)**, inspirado en un cuento musical de un compositor ruso, [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev). Usaremos el **Aprendizaje por Refuerzo** para dejar que Pedro explore su entorno, recolecte manzanas sabrosas y evite encontrarse con el lobo.
-El **Aprendizaje por Refuerzo** (RL) es una técnica de aprendizaje que nos permite aprender un comportamiento óptimo de un **agente** en algún **entorno** realizando muchos experimentos. Un agente en este entorno debe tener algún **objetivo**, definido por una **función de recompensa**.
+El **Aprendizaje por Refuerzo** (RL) es una técnica de aprendizaje que nos permite aprender un comportamiento óptimo de un **agente** en algún **entorno** ejecutando muchos experimentos. Un agente en este entorno debe tener algún **objetivo**, definido por una **función de recompensa**.
## El entorno
-Para simplificar, consideremos el mundo de Pedro como un tablero cuadrado de tamaño `ancho` x `alto`, como este:
+Para simplificar, consideremos que el mundo de Pedro es un tablero cuadrado de tamaño `width` x `height`, así:
-
+
-Cada celda en este tablero puede ser:
+Cada celda de este tablero puede ser:
-* **suelo**, sobre el cual Pedro y otras criaturas pueden caminar.
+* **tierra**, sobre la cual Pedro y otras criaturas pueden caminar.
* **agua**, sobre la cual obviamente no puedes caminar.
-* un **árbol** o **hierba**, un lugar donde puedes descansar.
-* una **manzana**, que representa algo que Pedro estaría encantado de encontrar para alimentarse.
+* un **árbol** o **césped**, un lugar donde puedes descansar.
+* una **manzana**, que representa algo que Pedro estaría feliz de encontrar para alimentarse.
* un **lobo**, que es peligroso y debe evitarse.
-Hay un módulo de Python separado, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), que contiene el código para trabajar con este entorno. Dado que este código no es importante para entender nuestros conceptos, importaremos el módulo y lo usaremos para crear el tablero de muestra (bloque de código 1):
+Hay un módulo Python separado, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), que contiene el código para trabajar con este entorno. Debido a que este código no es importante para entender nuestros conceptos, importaremos el módulo y lo usaremos para crear el tablero de ejemplo (bloque de código 1):
```python
from rlboard import *
@@ -56,11 +56,11 @@ Este código debería imprimir una imagen del entorno similar a la anterior.
## Acciones y política
-En nuestro ejemplo, el objetivo de Pedro sería encontrar una manzana, mientras evita al lobo y otros obstáculos. Para lograr esto, esencialmente puede caminar por el tablero hasta encontrar una manzana.
+En nuestro ejemplo, el objetivo de Pedro sería poder encontrar una manzana, evitando al lobo y otros obstáculos. Para ello, básicamente puede caminar hasta encontrar una manzana.
-Por lo tanto, en cualquier posición, puede elegir entre una de las siguientes acciones: arriba, abajo, izquierda y derecha.
+Por lo tanto, en cualquier posición puede elegir entre una de las siguientes acciones: arriba, abajo, izquierda y derecha.
-Definiremos esas acciones como un diccionario y las mapearemos a pares de cambios de coordenadas correspondientes. Por ejemplo, moverse a la derecha (`R`) correspondería a un par `(1,0)`. (bloque de código 2):
+Definiremos estas acciones como un diccionario y las asignaremos a pares de cambios de coordenadas correspondientes. Por ejemplo, moverse a la derecha (`R`) correspondería al par `(1,0)`. (bloque de código 2):
```python
actions = { "U" : (0,-1), "D" : (0,1), "L" : (-1,0), "R" : (1,0) }
@@ -69,46 +69,46 @@ action_idx = { a : i for i,a in enumerate(actions.keys()) }
En resumen, la estrategia y el objetivo de este escenario son los siguientes:
-- **La estrategia** de nuestro agente (Pedro) está definida por una llamada **política**. Una política es una función que devuelve la acción en cualquier estado dado. En nuestro caso, el estado del problema está representado por el tablero, incluida la posición actual del jugador.
+- **La estrategia**, de nuestro agente (Pedro) está definida por una llamada **política**. Una política es una función que devuelve la acción en cualquier estado dado. En nuestro caso, el estado del problema está representado por el tablero, incluidas las posiciones actuales del jugador.
-- **El objetivo** del aprendizaje por refuerzo es eventualmente aprender una buena política que nos permita resolver el problema de manera eficiente. Sin embargo, como línea base, consideremos la política más simple llamada **camino aleatorio**.
+- **El objetivo**, del aprendizaje por refuerzo es eventualmente aprender una buena política que nos permita resolver el problema eficientemente. Sin embargo, como referencia, consideremos la política más simple llamada **camino aleatorio**.
## Camino aleatorio
-Primero resolvamos nuestro problema implementando una estrategia de camino aleatorio. Con el camino aleatorio, elegiremos aleatoriamente la siguiente acción de las acciones permitidas, hasta que lleguemos a la manzana (bloque de código 3).
+Primero resolvamos nuestro problema implementando una estrategia de camino aleatorio. Con el camino aleatorio, elegiremos aleatoriamente la próxima acción entre las permitidas hasta que lleguemos a la manzana (bloque de código 3).
-1. Implementa el camino aleatorio con el siguiente código:
+1. Implementa el camino aleatorio con el código a continuación:
```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
+ n = 0 # número de pasos
+ # establecer posición inicial
if start_position:
m.human = start_position
else:
m.random_start()
while True:
if m.at() == Board.Cell.apple:
- return n # success!
+ return n # ¡éxito!
if m.at() in [Board.Cell.wolf, Board.Cell.water]:
- return -1 # eaten by wolf or drowned
+ return -1 # comido por el lobo o ahogado
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
+ m.move(a) # realizar el movimiento real
break
n+=1
walk(m,random_policy)
```
- La llamada a `walk` debería devolver la longitud del camino correspondiente, que puede variar de una ejecución a otra.
+ La llamada a `walk` debería devolver la longitud del camino correspondiente, que puede variar de una ejecución a otra.
-1. Ejecuta el experimento de camino varias veces (digamos, 100) y muestra las estadísticas resultantes (bloque de código 4):
+1. Ejecuta el experimento de camino aleatorio varias veces (digamos, 100) y muestra las estadísticas resultantes (bloque de código 4):
```python
def print_statistics(policy):
@@ -125,15 +125,15 @@ Primero resolvamos nuestro problema implementando una estrategia de camino aleat
print_statistics(random_policy)
```
- Nota que la longitud promedio de un camino es de alrededor de 30-40 pasos, lo cual es bastante, dado que la distancia promedio a la manzana más cercana es de alrededor de 5-6 pasos.
+ Ten en cuenta que la longitud promedio de un camino es de aproximadamente 30-40 pasos, que es bastante, dado que la distancia promedio a la manzana más cercana es de unos 5-6 pasos.
- También puedes ver cómo se mueve Pedro durante el camino aleatorio:
+ También puedes ver cómo se ve el movimiento de Pedro durante el camino aleatorio:
- 
+ 
## Función de recompensa
-Para hacer nuestra política más inteligente, necesitamos entender qué movimientos son "mejores" que otros. Para hacer esto, necesitamos definir nuestro objetivo.
+Para hacer nuestra política más inteligente, necesitamos entender qué movimientos son "mejores" que otros. Para ello, necesitamos definir nuestro objetivo.
El objetivo puede definirse en términos de una **función de recompensa**, que devolverá algún valor de puntuación para cada estado. Cuanto mayor sea el número, mejor será la función de recompensa. (bloque de código 5)
@@ -154,39 +154,115 @@ def reward(m,pos=None):
return move_reward
```
-Lo interesante de las funciones de recompensa es que en la mayoría de los casos, *solo se nos da una recompensa sustancial al final del juego*. Esto significa que nuestro algoritmo debería recordar los pasos "buenos" que conducen a una recompensa positiva al final y aumentar su importancia. De manera similar, todos los movimientos que conducen a malos resultados deberían desalentarse.
+Algo interesante sobre las funciones de recompensa es que en la mayoría de los casos, *solo se nos da una recompensa sustancial al final del juego*. Esto significa que nuestro algoritmo debería de alguna manera recordar los "buenos" pasos que llevan a una recompensa positiva al final y aumentar su importancia. De manera similar, todos los movimientos que llevan a malos resultados deberían ser desalentados.
## Q-Learning
-El algoritmo que discutiremos aquí se llama **Q-Learning**. En este algoritmo, la política está definida por una función (o una estructura de datos) llamada **Q-Table**. Registra la "bondad" de cada una de las acciones en un estado dado.
+Un algoritmo que discutiremos aquí se llama **Q-Learning**. En este algoritmo, la política está definida por una función (o una estructura de datos) llamada **Q-Table**. Esta registra la "bondad" de cada una de las acciones en un estado dado.
-Se llama Q-Table porque a menudo es conveniente representarla como una tabla o un arreglo multidimensional. Dado que nuestro tablero tiene dimensiones `ancho` x `alto`, podemos representar la Q-Table usando un arreglo numpy con forma `ancho` x `alto` x `len(actions)`: (bloque de código 6)
+Se llama Q-Table porque a menudo es conveniente representarla como una tabla o un arreglo multidimensional. Dado que nuestro tablero tiene dimensiones `width` x `height`, podemos representar la Q-Table usando un arreglo numpy con forma `width` x `height` x `len(actions)`: (bloque de código 6)
```python
Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions)
```
-Nota que inicializamos todos los valores de la Q-Table con un valor igual, en nuestro caso - 0.25. Esto corresponde a la política de "camino aleatorio", porque todos los movimientos en cada estado son igualmente buenos. Podemos pasar la Q-Table a la función `plot` para visualizar la tabla en el tablero: `m.plot(Q)`.
+Observa que inicializamos todos los valores de la Q-Table con un valor igual, en nuestro caso - 0.25. Esto corresponde a la política de "camino aleatorio", porque todos los movimientos en cada estado son igualmente buenos. Podemos pasar la Q-Table a la función `plot` para visualizar la tabla en el tablero: `m.plot(Q)`.
-
+
-En el centro de cada celda hay una "flecha" que indica la dirección preferida de movimiento. Dado que todas las direcciones son iguales, se muestra un punto.
+En el centro de cada celda hay una "flecha" que indica la dirección preferida del movimiento. Como todas las direcciones son iguales, se muestra un punto.
-Ahora necesitamos ejecutar la simulación, explorar nuestro entorno y aprender una mejor distribución de valores de la Q-Table, lo que nos permitirá encontrar el camino hacia la manzana mucho más rápido.
+Ahora necesitamos ejecutar la simulación, explorar nuestro entorno y aprender una mejor distribución de los valores de la Q-Table, que nos permitirá encontrar el camino a la manzana mucho más rápido.
## Esencia del Q-Learning: Ecuación de Bellman
-Una vez que comenzamos a movernos, cada acción tendrá una recompensa correspondiente, es decir, teóricamente podemos seleccionar la siguiente acción basada en la recompensa inmediata más alta. Sin embargo, en la mayoría de los estados, el movimiento no logrará nuestro objetivo de alcanzar la manzana, y por lo tanto no podemos decidir inmediatamente qué dirección es mejor.
+Una vez que empezamos a movernos, cada acción tendrá una recompensa correspondiente, es decir, teóricamente podemos seleccionar la próxima acción basada en la recompensa inmediata más alta. Sin embargo, en la mayoría de los estados, el movimiento no logrará nuestro objetivo de alcanzar la manzana, y por lo tanto no podemos decidir inmediatamente qué dirección es mejor.
> Recuerda que no importa el resultado inmediato, sino el resultado final, que obtendremos al final de la simulación.
-Para tener en cuenta esta recompensa diferida, necesitamos usar los principios de la **[programación dinámica](https://en.wikipedia.org/wiki/Dynamic_programming)**, que nos permiten pensar en nuestro problema de manera recursiva.
+Para tener en cuenta esta recompensa retardada, necesitamos usar los principios de la **[programación dinámica](https://en.wikipedia.org/wiki/Dynamic_programming)**, que nos permiten pensar en nuestro problema recursivamente.
-Supongamos que ahora estamos en el estado *s*, y queremos movernos al siguiente estado *s'*. Al hacerlo, recibiremos la recompensa inmediata *r(s,a)*, definida por la función de recompensa, más alguna recompensa futura. Si suponemos que nuestra Q-Table refleja correctamente la "atractividad" de cada acción, entonces en el estado *s'* elegiremos una acción *a'* que corresponda al valor máximo de *Q(s',a')*. Así, la mejor recompensa futura posible que podríamos obtener en el estado *s* se definirá como `max`
+Supongamos que ahora estamos en el estado *s*, y queremos movernos al siguiente estado *s'*. Al hacerlo, recibiremos la recompensa inmediata *r(s,a)*, definida por la función de recompensa, más alguna recompensa futura. Si suponemos que nuestra Q-Table refleja correctamente la "atractividad" de cada acción, entonces en el estado *s'* escogeremos una acción *a* que corresponda al valor máximo de *Q(s',a')*. Por lo tanto, la mejor recompensa futura posible que podríamos obtener en el estado *s* estará definida como `max`a'*Q(s',a')* (el máximo aquí se calcula sobre todas las acciones posibles *a'* en el estado *s'*).
-## Comprobando la política
+Esto da la **fórmula de Bellman** para calcular el valor de la Q-Table en el estado *s*, dada la acción *a*:
-Dado que la Q-Table enumera la "atractividad" de cada acción en cada estado, es bastante fácil usarla para definir la navegación eficiente en nuestro mundo. En el caso más simple, podemos seleccionar la acción correspondiente al valor más alto de la Q-Table: (bloque de código 9)
+
+
+Aquí γ es el llamado **factor de descuento** que determina hasta qué punto deberías preferir la recompensa actual sobre la futura y viceversa.
+
+## Algoritmo de aprendizaje
+
+Dada la ecuación anterior, ahora podemos escribir un pseudo-código para nuestro algoritmo de aprendizaje:
+
+* Inicializar Q-Table Q con números iguales para todos los estados y acciones
+* Establecer tasa de aprendizaje α ← 1
+* Repetir la simulación muchas veces
+ 1. Comenzar en posición aleatoria
+ 1. Repetir
+ 1. Seleccionar una acción *a* en el estado *s*
+ 2. Ejecutar la acción moviéndose a un nuevo estado *s'*
+ 3. Si encontramos la condición de fin del juego, o la recompensa total es muy baja - salir de la simulación
+ 4. Calcular la recompensa *r* en el nuevo estado
+ 5. Actualizar la función Q según la ecuación de Bellman: *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ maxa'Q(s',a'))*
+ 6. *s* ← *s'*
+ 7. Actualizar la recompensa total y disminuir α.
+
+## Explotar vs. explorar
+
+En el algoritmo anterior, no especificamos exactamente cómo deberíamos elegir una acción en el paso 2.1. Si elegimos la acción aleatoriamente, estaremos **explorando** aleatoriamente el entorno, y es bastante probable que muramos a menudo, así como también exploraremos áreas a las que normalmente no iríamos. Un enfoque alternativo sería **explotar** los valores de la Q-Table que ya conocemos y así elegir la mejor acción (con el valor más alto en la Q-Table) en el estado *s*. Esto, sin embargo, nos impedirá explorar otros estados y es probable que no encontremos la solución óptima.
+
+Por lo tanto, el mejor enfoque es encontrar un equilibrio entre exploración y explotación. Esto se puede lograr eligiendo la acción en el estado *s* con probabilidades proporcionales a los valores en la Q-Table. Al principio, cuando los valores de la Q-Table son todos iguales, esto corresponderá a una selección aleatoria, pero a medida que aprendamos más sobre nuestro entorno, será más probable que sigamos la ruta óptima mientras permitimos que el agente elija el camino inexplorado de vez en cuando.
+
+## Implementación en Python
+
+Ahora estamos listos para implementar el algoritmo de aprendizaje. Antes de hacerlo, también necesitamos una función que convierta números arbitrarios en la Q-Table en un vector de probabilidades para las acciones correspondientes.
+
+1. Crea una función `probs()`:
+
+ ```python
+ def probs(v,eps=1e-4):
+ v = v-v.min()+eps
+ v = v/v.sum()
+ return v
+ ```
+
+ Añadimos un poco de `eps` al vector original para evitar la división por 0 en el caso inicial, cuando todos los componentes del vector son idénticos.
+
+Ejecuta el algoritmo de aprendizaje a través de 5000 experimentos, también llamados **épocas**: (bloque de código 8)
+```python
+ for epoch in range(5000):
+
+ # Elegir punto inicial
+ m.random_start()
+
+ # Comenzar a viajar
+ n=0
+ cum_reward = 0
+ while True:
+ x,y = m.human
+ v = probs(Q[x,y])
+ a = random.choices(list(actions),weights=v)[0]
+ dpos = actions[a]
+ m.move(dpos,check_correctness=False) # permitimos que el jugador se mueva fuera del tablero, lo que termina el episodio
+ r = reward(m)
+ cum_reward += r
+ if r==end_reward or cum_reward < -1000:
+ lpath.append(n)
+ break
+ alpha = np.exp(-n / 10e5)
+ gamma = 0.5
+ ai = action_idx[a]
+ Q[x,y,ai] = (1 - alpha) * Q[x,y,ai] + alpha * (r + gamma * Q[x+dpos[0], y+dpos[1]].max())
+ n+=1
+```
+
+Después de ejecutar este algoritmo, la Q-Table debería actualizarse con valores que definen la atractividad de diferentes acciones en cada paso. Podemos intentar visualizar la Q-Table plotteando un vector en cada celda que apunte en la dirección deseada de movimiento. Por simplicidad, dibujamos un pequeño círculo en lugar de una punta de flecha.
+
+
+
+## Verificación de la política
+
+Dado que la Q-Table lista la "atractividad" de cada acción en cada estado, es bastante fácil usarla para definir una navegación eficiente en nuestro mundo. En el caso más simple, podemos seleccionar la acción correspondiente al valor más alto de la Q-Table: (bloque de código 9)
```python
def qpolicy_strict(m):
@@ -198,17 +274,18 @@ def qpolicy_strict(m):
walk(m,qpolicy_strict)
```
-> Si pruebas el código anterior varias veces, puede que notes que a veces se "queda colgado" y necesitas presionar el botón STOP en el notebook para interrumpirlo. Esto ocurre porque podría haber situaciones en las que dos estados "apuntan" el uno al otro en términos de valor óptimo de Q-Value, en cuyo caso el agente termina moviéndose entre esos estados indefinidamente.
+
+> Si pruebas el código anterior varias veces, puedes notar que a veces se "cuelga" y necesitas presionar el botón DETENER en el cuaderno para interrumpirlo. Esto ocurre porque podrían existir situaciones en las que dos estados se "apuntan" entre sí en términos del valor Q óptimo, en cuyo caso el agente termina moviéndose entre esos estados indefinidamente.
## 🚀Desafío
-> **Tarea 1:** Modifica la función `walk` para limitar la longitud máxima del camino a un cierto número de pasos (por ejemplo, 100), y observa cómo el código anterior devuelve este valor de vez en cuando.
+> **Tarea 1:** Modifica la función `walk` para limitar la longitud máxima del camino a cierto número de pasos (por ejemplo, 100), y observa cómo el código anterior devuelve este valor de vez en cuando.
-> **Tarea 2:** Modifica la función `walk` para que no regrese a los lugares donde ya ha estado previamente. Esto evitará que `walk` entre en bucles, sin embargo, el agente aún puede terminar "atrapado" en una ubicación de la que no puede escapar.
+> **Tarea 2:** Modifica la función `walk` para que no regrese a lugares donde ya ha estado anteriormente. Esto evitará que `walk` haga bucles, sin embargo, el agente aún puede quedar "atrapado" en un lugar del que no pueda escapar.
## Navegación
-Una política de navegación mejor sería la que usamos durante el entrenamiento, que combina explotación y exploración. En esta política, seleccionaremos cada acción con cierta probabilidad, proporcional a los valores en la Q-Table. Esta estrategia aún puede hacer que el agente regrese a una posición que ya ha explorado, pero, como puedes ver en el código a continuación, resulta en un camino promedio muy corto hacia la ubicación deseada (recuerda que `print_statistics` ejecuta la simulación 100 veces): (bloque de código 10)
+Una mejor política de navegación sería la que usamos durante el entrenamiento, que combina explotación y exploración. En esta política, seleccionaremos cada acción con cierta probabilidad, proporcional a los valores en la tabla Q. Esta estrategia aún puede resultar en que el agente regrese a una posición que ya ha explorado, pero, como puedes ver en el código a continuación, resulta en un camino promedio muy corto hasta la ubicación deseada (recuerda que `print_statistics` ejecuta la simulación 100 veces): (bloque de código 10)
```python
def qpolicy(m):
@@ -220,28 +297,32 @@ def qpolicy(m):
print_statistics(qpolicy)
```
-Después de ejecutar este código, deberías obtener una longitud promedio de camino mucho más pequeña que antes, en el rango de 3-6.
+Después de ejecutar este código, deberías obtener una longitud promedio de camino mucho menor que antes, en el rango de 3-6.
## Investigando el proceso de aprendizaje
-Como hemos mencionado, el proceso de aprendizaje es un equilibrio entre la exploración y la explotación del conocimiento adquirido sobre la estructura del espacio del problema. Hemos visto que los resultados del aprendizaje (la capacidad de ayudar a un agente a encontrar un camino corto hacia el objetivo) han mejorado, pero también es interesante observar cómo se comporta la longitud promedio del camino durante el proceso de aprendizaje:
+Como hemos mencionado, el proceso de aprendizaje es un equilibrio entre la exploración y la explotación del conocimiento adquirido sobre la estructura del espacio del problema. Hemos visto que los resultados del aprendizaje (la habilidad para ayudar a un agente a encontrar un camino corto hasta la meta) han mejorado, pero también es interesante observar cómo se comporta la longitud promedio del camino durante el proceso de aprendizaje:
+
+
-## Los aprendizajes pueden resumirse como:
+Se pueden resumir las enseñanzas como:
-- **La longitud promedio del camino aumenta**. Lo que vemos aquí es que al principio, la longitud promedio del camino aumenta. Esto probablemente se debe al hecho de que cuando no sabemos nada sobre el entorno, es probable que quedemos atrapados en estados desfavorables, como agua o lobos. A medida que aprendemos más y comenzamos a usar este conocimiento, podemos explorar el entorno por más tiempo, pero aún no sabemos muy bien dónde están las manzanas.
+- **La longitud promedio del camino aumenta**. Lo que vemos aquí es que al principio, la longitud promedio del camino aumenta. Probablemente se deba a que cuando no sabemos nada sobre el entorno, es probable que quedemos atrapados en estados malos, como agua o lobo. A medida que aprendemos más y comenzamos a usar este conocimiento, podemos explorar el entorno por más tiempo, pero todavía no sabemos muy bien dónde están las manzanas.
-- **La longitud del camino disminuye a medida que aprendemos más**. Una vez que aprendemos lo suficiente, se vuelve más fácil para el agente alcanzar el objetivo, y la longitud del camino comienza a disminuir. Sin embargo, aún estamos abiertos a la exploración, por lo que a menudo nos desviamos del mejor camino y exploramos nuevas opciones, haciendo que el camino sea más largo de lo óptimo.
+- **La longitud del camino disminuye a medida que aprendemos más**. Una vez que aprendemos lo suficiente, se vuelve más fácil para el agente lograr la meta, y la longitud del camino comienza a disminuir. Sin embargo, todavía estamos abiertos a la exploración, por lo que a menudo nos desviamos del mejor camino y exploramos nuevas opciones, haciendo que el camino sea más largo que el óptimo.
-- **La longitud aumenta abruptamente**. Lo que también observamos en este gráfico es que en algún momento, la longitud aumentó abruptamente. Esto indica la naturaleza estocástica del proceso, y que en algún momento podemos "estropear" los coeficientes de la Q-Table sobrescribiéndolos con nuevos valores. Esto idealmente debería minimizarse disminuyendo la tasa de aprendizaje (por ejemplo, hacia el final del entrenamiento, solo ajustamos los valores de la Q-Table por un pequeño valor).
+- **La longitud aumenta abruptamente**. Lo que también observamos en este gráfico es que en algún punto, la longitud aumentó abruptamente. Esto indica la naturaleza estocástica del proceso, y que en algún momento podemos "estropear" los coeficientes de la tabla Q sobrescribiéndolos con nuevos valores. Idealmente, esto debería minimizarse disminuyendo la tasa de aprendizaje (por ejemplo, hacia el final del entrenamiento, solo ajustamos los valores de la tabla Q por un valor pequeño).
-En general, es importante recordar que el éxito y la calidad del proceso de aprendizaje dependen significativamente de parámetros como la tasa de aprendizaje, la disminución de la tasa de aprendizaje y el factor de descuento. A menudo se les llama **hiperparámetros**, para distinguirlos de los **parámetros**, que optimizamos durante el entrenamiento (por ejemplo, los coeficientes de la Q-Table). El proceso de encontrar los mejores valores de hiperparámetros se llama **optimización de hiperparámetros**, y merece un tema aparte.
+En general, es importante recordar que el éxito y la calidad del proceso de aprendizaje dependen significativamente de parámetros, tales como la tasa de aprendizaje, la disminución de la tasa de aprendizaje y el factor de descuento. Estos a menudo se llaman **hiperparámetros**, para distinguirlos de los **parámetros**, que optimizamos durante el entrenamiento (por ejemplo, los coeficientes de la tabla Q). El proceso de encontrar los mejores valores para los hiperparámetros se llama **optimización de hiperparámetros**, y merece un tema aparte.
-## [Cuestionario post-clase](https://ff-quizzes.netlify.app/en/ml/)
+## [Cuestionario posterior a la conferencia](https://ff-quizzes.netlify.app/en/ml/)
-## Tarea
-[Un Mundo Más Realista](assignment.md)
+## Tarea
+[Un mundo más realista](assignment.md)
---
-**Descargo de responsabilidad**:
-Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Si bien nos esforzamos por garantizar la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción.
\ No newline at end of file
+
+**Descargo de responsabilidad**:
+Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional humana. No somos responsables de cualquier malentendido o interpretación errónea que surja del uso de esta traducción.
+
\ No newline at end of file
diff --git a/translations/et/.co-op-translator.json b/translations/et/.co-op-translator.json
index 4e7acb01f..f92d350dc 100644
--- a/translations/et/.co-op-translator.json
+++ b/translations/et/.co-op-translator.json
@@ -24,8 +24,8 @@
"language_code": "et"
},
"1-Introduction/3-fairness/README.md": {
- "original_hash": "9a6b702d1437c0467e3c5c28d763dac2",
- "translation_date": "2025-10-11T11:26:33+00:00",
+ "original_hash": "0f00d72169a0d37eecfd16d71e01700a",
+ "translation_date": "2026-07-14T00:20:25+00:00",
"source_file": "1-Introduction/3-fairness/README.md",
"language_code": "et"
},
@@ -54,8 +54,8 @@
"language_code": "et"
},
"2-Regression/1-Tools/README.md": {
- "original_hash": "fa81d226c71d5af7a2cade31c1c92b88",
- "translation_date": "2025-10-11T11:43:52+00:00",
+ "original_hash": "0b8635427b582d03ea4ab7089b93e505",
+ "translation_date": "2026-07-14T00:18:55+00:00",
"source_file": "2-Regression/1-Tools/README.md",
"language_code": "et"
},
@@ -72,8 +72,8 @@
"language_code": "et"
},
"2-Regression/2-Data/README.md": {
- "original_hash": "7c077988328ebfe33b24d07945f16eca",
- "translation_date": "2025-10-11T11:47:54+00:00",
+ "original_hash": "a58b2c4d16c6b122643391745ac15af6",
+ "translation_date": "2026-07-14T00:19:41+00:00",
"source_file": "2-Regression/2-Data/README.md",
"language_code": "et"
},
@@ -89,6 +89,12 @@
"source_file": "2-Regression/2-Data/solution/Julia/README.md",
"language_code": "et"
},
+ "2-Regression/2-Data/solution/notebook.ipynb": {
+ "original_hash": "96b95f8cf473481f2f371de8156f1571",
+ "translation_date": "2026-07-13T23:59:50+00:00",
+ "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
+ "language_code": "et"
+ },
"2-Regression/3-Linear/README.md": {
"original_hash": "8b776e731c35b171d316d01d0e7b1369",
"translation_date": "2026-04-26T19:25:13+00:00",
@@ -581,6 +587,19 @@
"source_file": "TROUBLESHOOTING.md",
"language_code": "et"
},
+ "__translation_failures__": {
+ "sketchnotes/LICENSE.md": {
+ "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f",
+ "source_file": "sketchnotes/LICENSE.md",
+ "language_code": "et",
+ "failure_date": "2026-07-14T00:17:39+00:00",
+ "status": "failed",
+ "error_type": "TranslationIncompleteError",
+ "error_message": "Markdown translation remained incomplete for chunk 1.1.1 of 'LICENSE.md', and the chunk could not be split further.",
+ "translator_version": "0.20.0",
+ "failure_policy_version": 1
+ }
+ },
"docs/_sidebar.md": {
"original_hash": "68dd06c685f6ce840e0acfa313352e7c",
"translation_date": "2025-10-11T11:48:54+00:00",
diff --git a/translations/et/1-Introduction/3-fairness/README.md b/translations/et/1-Introduction/3-fairness/README.md
index 55188b4c5..1c87fac16 100644
--- a/translations/et/1-Introduction/3-fairness/README.md
+++ b/translations/et/1-Introduction/3-fairness/README.md
@@ -1,148 +1,167 @@
-# Masinõppe lahenduste loomine vastutustundliku tehisintellektiga
-
-
-> Sketšimärkmed: [Tomomi Imura](https://www.twitter.com/girlie_mac)
-
-## [Loengu-eelne viktoriin](https://ff-quizzes.netlify.app/en/ml/)
+# Vastutustundliku tehisintellektiga masinõppe lahenduste loomine
+
+
+> Joonismärkus autorilt [Tomomi Imura](https://www.twitter.com/girlie_mac)
+## [Eel-loengu viktoriin](https://ff-quizzes.netlify.app/en/ml/)
+
## Sissejuhatus
-Selles õppekavas hakkate avastama, kuidas masinõpe mõjutab meie igapäevaelu. Juba praegu on süsteemid ja mudelid seotud igapäevaste otsustusprotsessidega, nagu tervishoiudiagnoosid, laenu heakskiitmine või pettuste tuvastamine. Seetõttu on oluline, et need mudelid töötaksid hästi ja pakuksid usaldusväärseid tulemusi. Nagu iga tarkvararakendus, võivad ka tehisintellekti süsteemid eksida ootustes või anda soovimatuid tulemusi. Seetõttu on hädavajalik mõista ja selgitada tehisintellekti mudeli käitumist.
+Selles õppekavas hakkate avastama, kuidas masinõpe mõjutab ja võib mõjutada meie igapäevaelu. Juba praegu osalevad süsteemid ja mudelid igapäevastes otsustusülesannetes, nagu tervishoiudiagnoosid, laenude heakskiitmine või pettuste tuvastamine. Seepärast on oluline, et need mudelid töötaksid hästi ja pakuksid usaldusväärseid tulemusi. Nagu iga tarkvararakenduse puhul, võivad ka tehisintellekti süsteemid mitte vastata ootustele või anda soovimatuid tulemusi. Seetõttu on oluline mõista ja osata selgitada tehisintellekti mudeli käitumist.
-Kujutage ette, mis juhtub, kui andmed, mida kasutate mudelite loomiseks, ei sisalda teatud demograafilisi rühmi, nagu rass, sugu, poliitilised vaated, religioon, või esindavad neid ebaproportsionaalselt. Mis saab siis, kui mudeli väljund eelistab teatud demograafilist rühma? Millised on tagajärjed rakendusele? Lisaks, mis juhtub siis, kui mudelil on kahjulik tulemus? Kes vastutab tehisintellekti süsteemi käitumise eest? Need on mõned küsimused, mida selles õppekavas uurime.
+Kujutage ette, mis võib juhtuda, kui andmed, mida kasutate nende mudelite loomiseks, puudutavad teatud demograafilisi rühmi, näiteks rassi, sugu, poliitilist vaadet, usku või esindavad selliseid rühmi ebaproportsionaalselt. Mis saab siis, kui mudeli väljundit tõlgendatakse ühekülgselt mõne demograafilise rühma kasuks? Millised on tagajärjed rakendusele? Lisaks, mis juhtub, kui mudel annab kahjuliku tulemuse inimestele? Kes vastutab tehisintellekti süsteemi käitumise eest? Need on mõned küsimused, mida selles õppekavas uurime.
Selles õppetükis:
-- Tõstate teadlikkust masinõppe õiglusest ja sellega seotud kahjudest.
-- Tutvute praktika ja ebatavaliste stsenaariumide uurimisega, et tagada usaldusväärsus ja ohutus.
-- Saate aru, miks on oluline luua kaasavaid süsteeme, mis võimestavad kõiki.
-- Uurite, kui tähtis on kaitsta inimeste ja andmete privaatsust ja turvalisust.
-- Näete, kui oluline on "klaaskasti" lähenemine tehisintellekti mudelite käitumise selgitamiseks.
-- Mõistate, kuidas vastutus on hädavajalik tehisintellekti süsteemide usalduse loomiseks.
+- Suurendate teadlikkust õiglusest masinõppes ja sellega seotud kahjudest.
+- Tutvute haruliste juhtumite ja ebatavaliste stsenaariumite uurimise praktikaga, et tagada usaldusväärsus ja ohutus.
+- Saate aru vajadusest võimestada kõiki, kujundades kaasavaid süsteeme.
+- Uurite, kui tähtis on kaitsta andmete ja inimeste privaatsust ja turvalisust.
+- Näete, kui oluline on läbipaistva lähenemisega selgitada tehisintellekti mudelite käitumist.
+- Olete teadlik sellest, kui oluline on vastutus, et ehitada usaldust tehisintellekti süsteemide vastu.
-## Eeltingimus
+## Eelteadmised
-Eeltingimusena palun läbige "Vastutustundliku tehisintellekti põhimõtted" õppeprogramm ja vaadake allolevat videot:
+Eelteadmise jaoks palun läbitage „Vastutustundliku tehisintellekti põhimõtted“ õpperada ja vaadake allolevat videot sellel teemal:
-Lisateavet vastutustundliku tehisintellekti kohta leiate siit: [Õppeprogramm](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)
+Lisateavet vastutustundliku tehisintellekti kohta leiate järgides seda [Õpperada](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)
-[](https://youtu.be/dnC8-uUZXSc "Microsofti lähenemine vastutustundlikule tehisintellektile")
+[](https://youtu.be/dnC8-uUZXSc "Microsofti lähenemine vastutustundlikule AI-le")
-> 🎥 Klõpsake ülaloleval pildil, et vaadata videot: Microsofti lähenemine vastutustundlikule tehisintellektile
+> 🎥 Klõpsake ülaloleval pildil video vaatamiseks: Microsofti lähenemine vastutustundlikule tehisintellektile
## Õiglus
-Tehisintellekti süsteemid peaksid kohtlema kõiki õiglaselt ja vältima sarnaste inimrühmade erinevat kohtlemist. Näiteks kui tehisintellekti süsteemid annavad juhiseid meditsiinilise ravi, laenutaotluste või töölevõtmise kohta, peaksid nad tegema samad soovitused kõigile, kellel on sarnased sümptomid, finantsolukord või professionaalsed kvalifikatsioonid. Igaüks meist kannab endaga kaasas pärilikke eelarvamusi, mis mõjutavad meie otsuseid ja tegevusi. Need eelarvamused võivad ilmneda andmetes, mida kasutame tehisintellekti süsteemide treenimiseks. Selline manipuleerimine võib mõnikord juhtuda tahtmatult. Sageli on raske teadlikult märgata, millal andmetesse eelarvamusi lisate.
+Tehisintellekti süsteemid peaksid kõigi suhtes käituma õiglaselt ega tohi mõjutada sarnaseid inimrühmi erinevalt. Näiteks kui tehisintellekti süsteemid annavad juhiseid meditsiinilise ravi, laenutaotluste või töölevõtmise kohta, peaksid nad tegema samad soovitused kõigile, kellel on sarnased sümptomid, rahalised olud või kutseoskused. Me kõik kanname kaasas päritud eelarvamusi, mis mõjutavad meie otsuseid ja tegusid. Need eelarvamused võivad olla nähtavad andmetes, mida kasutame tehisintellekti süsteemide koolitamiseks. Selline manipulatsioon võib juhtuda sageli tahtmatult. Teadlikult on sageli keeruline teada, millal andmetesse eelarvamus sisse juhitakse.
-**"Ebaõiglus"** hõlmab negatiivseid mõjusid või "kahjusid" inimrühmale, näiteks rassi, soo, vanuse või puude alusel. Peamised õigusega seotud kahjud võib jagada järgmiselt:
+**„Ebaõiglus“** hõlmab negatiivseid mõjusid või „kahjusid“ teatud inimrühma jaoks, näiteks rassi, soo, vanuse või puude seisundi alusel määratletud rühmasid. Peamised õiglusest tulenevad kahjud võib klassifitseerida järgmiselt:
-- **Jaotamine**, kui näiteks sugu või etnilist kuuluvust eelistatakse teisele.
-- **Teenuse kvaliteet**. Kui treenite andmeid ühe konkreetse stsenaariumi jaoks, kuid tegelikkus on palju keerulisem, viib see halvasti toimiva teenuseni. Näiteks käte seebidosaator, mis ei suutnud tuvastada tumedanahalisi inimesi. [Viide](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
-- **Halvustamine**. Ebaõiglane kriitika ja kellegi või millegi sildistamine. Näiteks pildisildistamise tehnoloogia, mis kurikuulsalt ekslikult sildistas tumedanahaliste inimeste pilte gorilladena.
-- **Üle- või alaesindatus**. Idee, et teatud rühma ei nähta teatud ametis, ja iga teenus või funktsioon, mis seda jätkuvalt edendab, aitab kaasa kahjule.
-- **Stereotüpiseerimine**. Teatud rühma seostamine eelnevalt määratud omadustega. Näiteks inglise ja türgi keele vahel tõlkiv süsteem võib eksida sõnadega, millel on sooga seotud stereotüüpsed seosed.
+- **Jaotus**, kui näiteks üks sugu või etniline rühm saab teise ees eelise.
+- **Teenuse kvaliteet**. Kui treenite mudelit ainult konkreetse stsenaariumi jaoks, kuid tegelikkus on palju keerukam, viib see kehva teeninduse tulemuseni. Näiteks käsiseebidosaator, mis tundus olevat võimetu märkama tumeda nahaga inimesi. [Allikas](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
+- **Määrimine**. Ebaõiglane kriitika ja märgistamine kellegi või millegi kohta. Näiteks pildituvastustehnoloogia ekslikult märkis tumeda nahavärviga inimeste pilte gorilladena.
+- **Liigne või vähene esindatus**. Mõte on see, et teatud rühma ei ole nähtud teatud ametis ja mis tahes teenus või funktsioon, mis jätkab seda edendamist, põhjustab kahju.
+- **Stereotüüpimine**. Antud rühma seostamine eelmääratud omadustega. Näiteks inglise ja türgi keele tõlketehnoloogia võib sisaldada ebatäpseid tõlkeid seoses sõnadega, mis on seotud sugude stereotüüpiga.
-
-> Tõlge türgi keelde
+
+> tõlge türgi keelde
-
-> Tõlge tagasi inglise keelde
+
+> tõlge tagasi inglise keelde
-Tehisintellekti süsteemide kavandamisel ja testimisel peame tagama, et tehisintellekt oleks õiglane ega oleks programmeeritud tegema eelarvamuslikke või diskrimineerivaid otsuseid, mida ka inimestel on keelatud teha. Õigluse tagamine tehisintellektis ja masinõppes jääb keeruliseks sotsiaal-tehniliseks väljakutseks.
+Tehisintellekti süsteemide loomisel ja testimisel peame tagama, et AI oleks õiglane ega oleks programmeeritud tegema kallutatud või diskrimineerivaid otsuseid, mida ka inimestel on keelatud teha. Õigluse tagamine tehisintellektis ja masinõppes on siiski keeruline sotsiaal-tehniline väljakutse.
### Usaldusväärsus ja ohutus
-Usalduse loomiseks peavad tehisintellekti süsteemid olema usaldusväärsed, ohutud ja järjepidevad nii tavapärastes kui ka ootamatutes tingimustes. Oluline on teada, kuidas tehisintellekti süsteemid käituvad erinevates olukordades, eriti kui tegemist on eranditega. Tehisintellekti lahenduste loomisel tuleb keskenduda sellele, kuidas lahendused suudavad toime tulla mitmesuguste olukordadega, millega nad kokku puutuvad. Näiteks peab isesõitev auto seadma inimeste ohutuse esikohale. Seetõttu peab autot juhtiv tehisintellekt arvestama kõiki võimalikke stsenaariume, millega auto võib kokku puutuda, nagu öö, äikesetormid või lumetormid, tänaval jooksvad lapsed, lemmikloomad, teetööd jne. Kui hästi tehisintellekti süsteem suudab usaldusväärselt ja ohutult toime tulla laia valiku tingimustega, peegeldab see andmeteadlase või tehisintellekti arendaja disaini- või testimisprotsessi taset.
+Usalduse loomiseks peavad tehisintellekti süsteemid olema usaldusväärsed, ohutud ja järjepidevad nii tavatingimustes kui ka ootamatutes olukordades. On oluline teada, kuidas tehisintellekti süsteemid käituvad erinevates olukordades, eriti haruldastes juhtumites. Masinõppelahenduste loomisel tuleb pöörata suurt tähelepanu sellele, kuidas käsitleda AI lahenduste võimalikke olukordi. Näiteks peab isesõitev auto panema inimeste ohutuse esikohale. Seetõttu peab autot juhiv AI arvestama kõigi võimalike stsenaariumitega, millega auto võib kokku puutuda, nagu öö, äikesetormid või lumetormid, tänavat ületavad lapsed, lemmikloomad, teetööd jms. Kuidas hästi suudab AI süsteem usaldusväärselt ja ohutult toime tulla erinevate tingimustega, peegeldab andmeteadlase või AI arendaja kavandamisel või testimisel arvestatud ettevalmistuse taset.
-> [🎥 Klõpsake siia, et vaadata videot: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
+> [🎥 Klõpsake siia video vaatamiseks: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
### Kaasavus
-Tehisintellekti süsteemid peaksid olema loodud kaasama ja võimestama kõiki. Tehisintellekti süsteemide kavandamisel ja rakendamisel tuvastavad andmeteadlased ja tehisintellekti arendajad süsteemis potentsiaalsed takistused, mis võivad tahtmatult inimesi välistada. Näiteks on maailmas 1 miljard puudega inimest. Tehisintellekti arenguga saavad nad igapäevaelus hõlpsamini juurde pääseda laiale hulgale teabele ja võimalustele. Takistuste kõrvaldamine loob võimalusi innovatsiooniks ja tehisintellekti toodete arendamiseks paremate kogemustega, mis toovad kasu kõigile.
+Tehisintellekti süsteemid peaksid olema loodud nii, et kaasavad ja jõustavad kõiki. AI süsteemide loomisel ja rakendamisel tuvastavad andmeteadlased ja arendajad süsteemis potentsiaalsed takistused, mis võivad tahtmatult inimesi välistada. Näiteks maailmas on miljard puudega inimest. AI arenguga pääsevad nad oma igapäevaelus hõlpsamalt ligi erinevale infole ja võimalustele. Takistuste kõrvaldamine loob võimalused uuendusteks ja arendab AI tooteid paremate kogemustega, mis kasu toovad kõigile.
-> [🎥 Klõpsake siia, et vaadata videot: kaasavus tehisintellektis](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
+> [🎥 Klõpsake siia video vaatamiseks: kaasavus tehisintellektis](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
### Turvalisus ja privaatsus
-Tehisintellekti süsteemid peaksid olema ohutud ja austama inimeste privaatsust. Inimesed usaldavad vähem süsteeme, mis seavad ohtu nende privaatsuse, teabe või elu. Masinõppe mudelite treenimisel toetume andmetele, et saavutada parimaid tulemusi. Selle käigus tuleb arvestada andmete päritolu ja terviklikkusega. Näiteks, kas andmed on kasutaja esitatud või avalikult kättesaadavad? Järgmisena, andmetega töötades on oluline arendada tehisintellekti süsteeme, mis suudavad kaitsta konfidentsiaalset teavet ja taluda rünnakuid. Kuna tehisintellekt muutub üha levinumaks, muutub privaatsuse kaitsmine ja olulise isikliku ning ärilise teabe turvalisuse tagamine üha kriitilisemaks ja keerulisemaks. Privaatsuse ja andmete turvalisuse küsimused vajavad tehisintellekti puhul erilist tähelepanu, kuna andmetele juurdepääs on hädavajalik, et tehisintellekti süsteemid saaksid teha täpseid ja informeeritud ennustusi ning otsuseid inimeste kohta.
+AI süsteemid peaksid olema ohutud ja austama inimeste privaatsust. Inimestel on väiksem usaldus süsteemidesse, mis panevad ohtu nende privaatsuse, info või elu. Masinõppemudelite koolitamisel sõltume andmetest, et saavutada parimad tulemused. Selle juures tuleb arvestada andmete päritolu ja terviklikkust. Näiteks, kas andmed esitas kasutaja või olid need avalikult kättesaadavad? Järgmiseks on oluline arendada AI süsteeme, mis kaitsevad konfidentsiaalset infot ja taluvad rünnakuid. AI laiemaks levikuks muutub privaatsuse kaitse ja olulise isiku- ning ärilise info turvalisus üha kriitilisemaks ja keerulisemaks. Privaatsuse ja andmeturbe probleemid vajavad AI puhul eriti head tähelepanu, sest ligipääs andmetele on AI süsteemide jaoks hädavajalik täpsete ja teadlike prognooside ning otsuste tegemiseks.
-> [🎥 Klõpsake siia, et vaadata videot: turvalisus tehisintellektis](https://www.microsoft.com/videoplayer/embed/RE4voJF)
+> [🎥 Klõpsake siia video vaatamiseks: turvalisus tehisintellektis](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- Tööstus on teinud privaatsuse ja turvalisuse valdkonnas märkimisväärseid edusamme, mida on oluliselt edendanud sellised regulatsioonid nagu GDPR (üldine andmekaitse määrus).
-- Kuid tehisintellekti süsteemide puhul peame tunnistama pinget, mis tekib vajadusest koguda rohkem isikuandmeid, et muuta süsteemid isiklikumaks ja tõhusamaks – ja privaatsuse säilitamise vahel.
-- Nagu internetiga ühendatud arvutite sünni puhul, näeme ka tehisintellektiga seotud turvalisusküsimuste suurt kasvu.
-- Samal ajal on tehisintellekti kasutatud turvalisuse parandamiseks. Näiteks enamik kaasaegseid viirusetõrje skannereid põhineb tehisintellekti heuristikal.
-- Peame tagama, et meie andmeteaduse protsessid sobituksid harmooniliselt uusimate privaatsuse ja turvalisuse praktikatega.
+- Tööstusena oleme saavutanud märkimisväärseid edusamme privaatsuse ja turvalisuse valdkonnas, mida on oluliselt toetanud sellised regulatsioonid nagu GDPR (üldine andmekaitse määrus).
+- Kuid tehisintellekti süsteemides peame tunnistama pingeid, mis on andmekoguse suurenemise vajaduse ja privaatsuse vahel, et muuta süsteeme isikupärasemaks ja efektiivsemaks.
+- Nagu interneti ja ühendatud arvutite sünniga, on meil ka AI-ga seotud turvalisusega seotud probleemide arv märkimisväärselt kasvanud.
+- Samal ajal on AI-d kasutatud ka turvalisuse parandamiseks. Näiteks on enamik tänapäeva viirusetõrjetarkvara võimsad AI heuristikale toetuvad skannerid.
+- Peame tagama, et meie andmeteaduse protsessid sobituksid harmooniliselt uusimate privaatsus- ja turvatavadega.
-### Läbipaistvus
-Tehisintellekti süsteemid peaksid olema arusaadavad. Läbipaistvuse oluline osa on tehisintellekti süsteemide ja nende komponentide käitumise selgitamine. Tehisintellekti süsteemide mõistmise parandamine nõuab, et sidusrühmad mõistaksid, kuidas ja miks need toimivad, et nad saaksid tuvastada võimalikke jõudlusprobleeme, ohutus- ja privaatsusprobleeme, eelarvamusi, välistavaid tavasid või soovimatuid tulemusi. Usume ka, et need, kes kasutavad tehisintellekti süsteeme, peaksid olema ausad ja avameelsed, kui, miks ja kuidas nad otsustavad neid rakendada. Samuti peaksid nad selgitama kasutatavate süsteemide piiranguid. Näiteks kui pank kasutab tehisintellekti süsteemi, et toetada tarbijate laenuotsuseid, on oluline uurida tulemusi ja mõista, millised andmed mõjutavad süsteemi soovitusi. Valitsused hakkavad tehisintellekti tööstusharudes reguleerima, seega peavad andmeteadlased ja organisatsioonid selgitama, kas tehisintellekti süsteem vastab regulatiivsetele nõuetele, eriti kui esineb soovimatu tulemus.
+### Läbipaistvus
+AI süsteemid peaksid olema arusaadavad. Läbipaistvuse oluline osa on tehisintellekti süsteemide ja nende komponentide käitumise selgitamine. AI süsteemide parema mõistmise tagamiseks peavad sidusrühmad mõistma, kuidas ja miks need töötavad, et tuvastada võimalikke jõudlusprobleeme, ohutus- ja privaatsusküsimusi, eelarvamusi, välistavaid praktikaid või soovimatuid tulemusi. Usume ka, et need, kes AI süsteeme kasutavad, peaksid ausalt ja avameelselt selgitama, millal, miks ja kuidas nad otsustavad neid rakendada. Samuti piiranguid nende süsteemide suhtes, mida nad kasutavad. Näiteks kui pank kasutab tehisintellekti süsteemi tarbijalaenude otsuste toetamiseks, on oluline analüüsida tulemusi ja mõista, millised andmed mõjutavad süsteemi soovitusi. Valitsused hakkavad AI-d erinevates valdkondades reguleerima, seega peavad andmeteadlased ja organisatsioonid selgitama, kas tehisintellekti süsteem vastab regulatiivsetele nõuetele, eriti kui toimub soovimatu tulemus.
-> [🎥 Klõpsake siia, et vaadata videot: läbipaistvus tehisintellektis](https://www.microsoft.com/videoplayer/embed/RE4voJF)
+> [🎥 Klõpsake siia video vaatamiseks: läbipaistvus tehisintellektis](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- Kuna tehisintellekti süsteemid on nii keerulised, on raske mõista, kuidas need töötavad ja tulemusi tõlgendada.
-- See arusaamise puudumine mõjutab nende süsteemide haldamist, rakendamist ja dokumenteerimist.
-- Veelgi olulisem on see, et see arusaamise puudumine mõjutab otsuseid, mis tehakse nende süsteemide toodetud tulemuste põhjal.
+- Kuna AI süsteemid on nii keerulised, on raske aru saada, kuidas need töötavad ja tulemusi tõlgendada.
+- See arusaamatus mõjutab seda, kuidas neid süsteeme haldatakse, rakendatakse ja dokumenteeritakse.
+- Veelgi olulisem on see, et arusaamatus mõjutab otsuseid, mis tehakse nendesüsteemides toodetud tulemuste põhjal.
### Vastutus
+
+Tehisintellekti süsteeme kujundavad ja juurutavad inimesed peavad olema vastutavad oma süsteemide toimimise eest. Vastutuse vajadus on eriti oluline tundlike tehnoloogiate, näiteks näotuvastuse puhul. Viimasel ajal on kasvanud nõudlus näotuvastustehnoloogia järele, eriti õiguskaitseorganisatsioonide poolt, kes näevad tehnoloogias potentsiaali näiteks kadunud laste leidmisel. Kuid neid tehnoloogiaid võiks valitsus kasutada oma kodanike põhivabaduste ohustamiseks, näiteks võimaldades konkreetsete isikute pidevat jälgimist. Seega peavad andmeteadlased ja organisatsioonid olema vastutavad selle eest, kuidas nende AI süsteemi mõju mõjutab üksikisikuid või ühiskonda.
-Inimesed, kes kavandavad ja rakendavad tehisintellekti süsteeme, peavad vastutama selle eest, kuidas nende süsteemid toimivad. Vastutuse vajadus on eriti oluline tundlike tehnoloogiate, nagu näotuvastus, puhul. Viimasel ajal on näotuvastustehnoloogia järele olnud kasvav nõudlus, eriti õiguskaitseorganisatsioonide poolt, kes näevad tehnoloogia potentsiaali näiteks kadunud laste leidmisel. Kuid need tehnoloogiad võivad valitsuse poolt potentsiaalselt ohustada kodanike põhiõigusi, võimaldades näiteks konkreetsete isikute pidevat jälgimist. Seetõttu peavad andmeteadlased ja organisatsioonid vastutama selle eest, kuidas nende tehisintellekti süsteem mõjutab üksikisikuid või ühiskonda.
+[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsofti lähenemine vastutustundlikule AI-le")
-[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsofti lähenemine vastutustundlikule tehisintellektile")
+> 🎥 Klõpsake ülaloleval pildil video vaatamiseks: hoiatused näotuvastuse massilise järelvalve kohta
-> 🎥 Klõpsake ülaloleval pildil, et vaadata videot: Hoiatused massilise jälgimise eest näotuvastuse kaudu
+Lõppkokkuvõttes on üks suurimaid küsimusi meie põlvkonnale, kes toob AI esmakordselt ühiskonda, kuidas tagada, et arvutid jäävad inimeste suhtes vastutavaks ning kuidas tagada, et arvuteid kujundavad inimesed jäävad vastutavaks kõigi teiste ees.
-Lõppkokkuvõttes on üks suurimaid küsimusi meie põlvkonnale, kui esimesele põlvkonnale, kes toob tehisintellekti ühiskonda, kuidas tagada, et arvutid jääksid inimestele vastutavaks ja kuidas tagada, et arvutite disainerid jääksid vastutavaks kõigi teiste ees.
+## Mõjuhinnang
-## Mõju hindamine
+Enne masinõppemudeli koolitamist on oluline läbi viia mõjuhinnang, et mõista AI süsteemi eesmärki; milline on kavandatud kasutus; kus see juurutatakse; ja kes süsteemiga suhtleb. Need on abiks süsteemi hindajatele või testijatele, et teada, milliseid tegureid tuleb riskide ja oodatavate tagajärgede tuvastamisel arvestada.
-Enne masinõppe mudeli treenimist on oluline läbi viia mõju hindamine, et mõista tehisintellekti süsteemi eesmärki; milline on kavandatud kasutus; kus seda rakendatakse; ja kes süsteemiga suhtleb. Need on kasulikud hindajatele või testijatele, et teada saada, milliseid tegureid arvestada võimalike riskide ja oodatavate tagajärgede tuvastamisel.
+Mõjuhinnangu läbiviimisel keskendutakse järgmistele valdkondadele:
-Mõju hindamise fookusvaldkonnad:
+* **Negatiivne mõju üksikisikutele**. Oluline on olla teadlik piirangutest või nõuetest, toetust mittesaavast kasutusest või teadaolevatest piirangutest, mis takistavad süsteemi jõudlust, et tagada süsteemi ohutu kasutamine.
+* **Andmenõuded**. Mõistmine, kuidas ja kus süsteem andmeid kasutab, võimaldab hindajatel uurida, milliseid andmenõudeid tuleks arvesse võtta (nt GDPR või HIPAA andmekaitsenõuded). Kontrollige ka, kas andmete allikas ja kogus on piisavad mudeli koolitamiseks.
+* **Mõjude kokkuvõte**. Koostage võimalikest kahjudest nimekiri, mis võivad süsteemi kasutusest tekkida. Läbi masinõppe kogu elutsükli vaadake üle, kas tuvastatud probleemid on leevendatud või lahendatud.
+* **Rakendatavad eesmärgid** kõigi kuue põhialuse jaoks. Hinnake, kas iga põhimõtte eesmärgid on täidetud ja kas esinevad lüngad.
-* **Kahjulik mõju üksikisikutele**. Oluline on olla teadlik piirangutest või nõuetest, mittetoetatud kasutusest või teadaolevatest piirangutest, mis takistavad süsteemi toimimist, et tagada, et süsteemi ei kasutata viisil, mis võiks üksikisikutele kahju tekitada.
-* **Andmete nõuded**. Süsteemi andmekasutuse mõistmine võimaldab hindajatel uurida andmenõudeid, mida tuleb arvesse võtta (nt GDPR või HIPAA andmereeglid). Lisaks tuleb uurida, kas andmete allikas või kogus on treenimiseks piisav.
-* **Mõju kokkuvõte**. Koostage nimekiri võimalikest kahjudest, mis võivad süsteemi kasutamisest tuleneda. Masinõppe elutsükli jooksul vaadake üle, kas tuvastatud probleemid on leevendatud või lahendatud.
-* **Rakendatavad eesmärgid** kuue põhiväärtuse jaoks. Hinnake, kas iga põhimõtte eesmärgid on täidetud ja kas on mingeid puudujääke.
-## Vastutustundliku tehisintellektiga silumine
+## Silumistegevused vastutustundliku AI-ga
-Sarnaselt tarkvararakenduse silumisele on tehisintellekti süsteemi silumine vajalik protsess süsteemi probleemide tuvastamiseks ja lahendamiseks. On palju tegureid, mis võivad põhjustada mudeli ootustele mittevastavat või vastutustundetut toimimist. Enamik traditsioonilisi mudeli jõudluse mõõdikuid on kvantitatiivsed koondandmed mudeli jõudluse kohta, mis ei ole piisavad, et analüüsida, kuidas mudel rikub vastutustundliku tehisintellekti põhimõtteid. Lisaks on masinõppe mudel must kast, mis teeb selle tulemuste põhjuseid raskesti mõistetavaks või selgitab eksimusi. Hiljem selles kursuses õpime kasutama vastutustundliku tehisintellekti juhtpaneeli, et aidata tehisintellekti süsteeme siluda. Juhtpaneel pakub terviklikku tööriista andmeteadlastele ja tehisintellekti arendajatele, et teha:
+Sarnaselt tarkvararakenduse silumisele on AI süsteemi silumine vajalik protsess süsteemi vigade tuvastamiseks ja lahendamiseks. Paljud tegurid võivad mõjutada mudeli ootuspärast ja vastutustundlikku toimimist. Enamik traditsioonilisi mudelijõudluse mõõdikuid on mudeli tulemuslikkuse kvantitatiivsed agregaadid, mis ei piisa selleks, et analüüsida, kuidas mudel rikub vastutustundliku AI põhimõtteid. Lisaks on masinõppemudel must kast, mis teeb keeruliseks selle väljundi põhjendamise või vea tekke selgitamise. Selle kursuse edenedes õpime kasutama Vastutustundliku AI juhtpaneeli AI süsteemide silumiseks. Juhtpaneel pakub terviklikku tööriista andmeteadlastele ja arendajatele, et teha järgmist:
+
+* **Vigade analüüs**. Mudeli vea jaotuse tuvastamiseks, mis võib mõjutada süsteemi õiglust või usaldusväärsust.
+* **Mudeli ülevaade**. Avastada, kus mudeli jõudluses esineb erinevusi andmekogumite vahel.
+* **Andmete analüüs**. Andmete jaotuse mõistmiseks ja võimaliku kallutatuse tuvastamiseks, mis võib põhjustada õiglus-, kaasavuse ja usaldusväärsuse probleeme.
+* **Mudeli tõlgendatavus**. Mõista, mis mõjutab või suunab mudeli prognoose. See aitab selgitada mudeli käitumist, mis on oluline läbipaistvuse ja vastutuse saavutamiseks.
-* **Vigade analüüs**. Tuvastada mudeli veajaotust, mis võib mõjutada süsteemi õiglust või usaldusväärsust.
-* **Mudeli ülevaade**. Avastada, kus mudeli jõudluses esineb erinevusi andmekoortide vahel.
-* **Andmete analüüs
-## Ülevaade ja iseseisev õppimine
-Selles tunnis õppisite masinõppe õiglus- ja ebaõigluskontseptsioonide põhitõdesid.
+## 🚀 Väljakutse
+
+Kahjude ennetamiseks peaksime:
+
+- omama mitmekesist tausta ja vaatenurki süsteemide loomisel töötavate inimeste seas
+- investeerima andmestikesse, mis peegeldavad meie ühiskonna mitmekesisust
+- arendama paremaid meetodeid kogu masinõppe elutsükli jooksul, et avastada ja parandada vastutustundlikku AI-d esinevaid probleeme
+
+Mõelge reaalse elu olukordadele, kus mudeli usaldusväärsus on ehituses ja kasutuses ilmne. Mida muud tuleks kaaluda?
+
+## [Järgneva loengu viktoriin](https://ff-quizzes.netlify.app/en/ml/)
+
+## Ülevaade ja iseseisev õppimine
+
-Vaadake seda töötuba, et teemadesse süveneda:
+Selles õppetükis olete õppinud mõningaid masinõppe õiglust ja ebaõiglust käsitlevate mõistete põhialuseid.
+
+Vaadake seda töötuba, et teemadesse põhjalikumalt süveneda:
-- Vastutustundliku tehisintellekti poole püüdlemine: Põhimõtete rakendamine praktikas, autorid Besmira Nushi, Mehrnoosh Sameki ja Amit Sharma
+- Vastutustundliku tehisintellekti poole: põhimõtete rakendamine praktikas, esinejad Besmira Nushi, Mehrnoosh Sameki ja Amit Sharma
-[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: Avatud lähtekoodiga raamistik vastutustundliku tehisintellekti loomiseks")
+[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI")
-> 🎥 Klõpsake ülaloleval pildil, et vaadata videot: RAI Toolbox: Avatud lähtekoodiga raamistik vastutustundliku tehisintellekti loomiseks, autorid Besmira Nushi, Mehrnoosh Sameki ja Amit Sharma
+> 🎥 Klõpsake ülaloleval pildil video vaatamiseks: Vastutustundliku tehisintellekti tööriistakomplekt, esitavad Besmira Nushi, Mehrnoosh Sameki ja Amit Sharma
-Lugege ka:
+Samuti lugege:
-- Microsofti RAI ressursikeskus: [Vastutustundliku tehisintellekti ressursid – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
+- Microsofti vastutustundliku tehisintellekti ressursside keskpunkt: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
-- Microsofti FATE uurimisrühm: [FATE: Õiglus, vastutus, läbipaistvus ja eetika tehisintellektis - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
+- Microsofti FATE uurimisrühm: [FATE: õiglus, vastutus, läbipaistvus ja eetika tehisintellektis - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
-RAI tööriistakast:
+RAI Toolbox:
-- [Vastutustundliku tehisintellekti tööriistakasti GitHubi hoidla](https://github.com/microsoft/responsible-ai-toolbox)
+- [Vastutustundliku tehisintellekti tööriistakomplekti GitHub reposiit](https://github.com/microsoft/responsible-ai-toolbox)
-Lugege Azure Machine Learningu tööriistade kohta, mis aitavad tagada õiglust:
+Lugege Azure Machine Learning vahendite kohta, mis aitavad tagada õigluse:
-- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
+- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
## Ülesanne
-[Uurige RAI tööriistakasti](assignment.md)
+[Uurige RAI Toolboxi](assignment.md)
---
-**Vastutusest loobumine**:
-See dokument on tõlgitud AI tõlketeenuse [Co-op Translator](https://github.com/Azure/co-op-translator) abil. Kuigi püüame tagada täpsust, palume arvestada, et automaatsed tõlked võivad sisaldada vigu või ebatäpsusi. Algne dokument selle algses keeles tuleks pidada autoriteetseks allikaks. Olulise teabe puhul soovitame kasutada professionaalset inimtõlget. Me ei vastuta arusaamatuste või valesti tõlgenduste eest, mis võivad tuleneda selle tõlke kasutamisest.
\ No newline at end of file
+
+**Lahtiütlus**:
+See dokument on tõlgitud kasutades AI tõlketeenust [Co-op Translator](https://github.com/Azure/co-op-translator). Kuigi me püüdleme täpsuse poole, palun pange tähele, et automatiseeritud tõlgetes võib esineda vigu või ebatäpsusi. Originaaldokument selle emakeeles tuleks pidada autoriteetseks allikaks. Olulise teabe puhul soovitatakse kasutada professionaalset inimtõlget. Me ei vastuta selle tõlkega seotud eksimustest või valesti mõistmistest.
+
\ No newline at end of file
diff --git a/translations/et/2-Regression/1-Tools/README.md b/translations/et/2-Regression/1-Tools/README.md
index 15e7a0bb9..e3776770e 100644
--- a/translations/et/2-Regression/1-Tools/README.md
+++ b/translations/et/2-Regression/1-Tools/README.md
@@ -1,120 +1,121 @@
-# Alusta Pythoni ja Scikit-learniga regressioonimudelite jaoks
+# Alustamine Pythoniga ja Scikit-learn regressioonimudelite jaoks
-
+
-> Visuaalne märge: [Tomomi Imura](https://www.twitter.com/girlie_mac)
+> Visand, autor [Tomomi Imura](https://www.twitter.com/girlie_mac)
-## [Eelloengu viktoriin](https://ff-quizzes.netlify.app/en/ml/)
+## [Eeloengu viktoriin](https://ff-quizzes.netlify.app/en/ml/)
-> ### [See õppetund on saadaval ka R-is!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
+> ### [See õppetund on saadaval ka R keeles!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
## Sissejuhatus
-Nendes neljas õppetunnis õpid, kuidas luua regressioonimudeleid. Arutame peagi, milleks need vajalikud on. Enne alustamist veendu, et sul on õiged tööriistad paigas!
+Nendes neljas õppetükis õpid, kuidas ehitada regressioonimudeleid. Peagi räägime, milleks neid kasutatakse. Kuid enne kui midagi teed, veendu, et sul oleksid õiged tööriistad valmis protsessi alustamiseks!
-Selles õppetunnis õpid:
+Selles õppetükis õpid, kuidas:
-- Kuidas seadistada oma arvuti kohalike masinõppe ülesannete jaoks.
-- Kuidas töötada Jupyteri märkmikega.
-- Kuidas kasutada Scikit-learni, sealhulgas selle paigaldamist.
-- Kuidas uurida lineaarset regressiooni praktilise harjutuse kaudu.
+- Konfigureerida oma arvutit kohalike masinõppe ülesannete jaoks.
+- Töötada Jupyter Notebookidega.
+- Kasutada Scikit-learn'i, sealhulgas paigaldamist.
+- Uurida lineaarset regressiooni praktilise ülesande kaudu.
## Paigaldused ja seadistused
-[](https://youtu.be/-DfeD2k2Kj0 "ML algajatele - Seadista oma tööriistad masinõppemudelite loomiseks")
+[](https://youtu.be/-DfeD2k2Kj0 "Masinõpe algajatele - Seadista oma tööriistad masinõppemudelite ehitamiseks")
-> 🎥 Klõpsa ülaloleval pildil, et vaadata lühikest videot arvuti seadistamisest ML jaoks.
+> 🎥 Klõpsa ülalolevale pildile lühikese video jaoks, mis näitab arvuti seadistamist masinõppe jaoks.
-1. **Paigalda Python**. Veendu, et [Python](https://www.python.org/downloads/) on sinu arvutisse paigaldatud. Pythonit kasutatakse paljude andmeteaduse ja masinõppe ülesannete jaoks. Enamik arvutisüsteeme sisaldab juba Pythonit. Kasulikud [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) võivad samuti seadistamist lihtsustada.
+1. **Paigalda Python**. Veendu, et arvutisse on paigaldatud [Python](https://www.python.org/downloads/). Pythoni kasutatakse paljudes andmeteaduse ja masinõppe ülesannetes. Enamik arvutisüsteeme sisaldab Pythonit juba vaikimisi. Lisaks on saadaval kasulikud [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott), mis lihtsustavad seadistamist mõne kasutaja jaoks.
- Mõned Python kasutusviisid nõuavad ühte versiooni tarkvarast, samas kui teised vajavad teist versiooni. Seetõttu on kasulik töötada [virtuaalses keskkonnas](https://docs.python.org/3/library/venv.html).
+ Mõningad Pythoni kasutusviisid nõuavad ühte tarkvaraversiooni, teised teist. Seetõttu on kasulik töötada [virtuaalses keskkonnas](https://docs.python.org/3/library/venv.html).
-2. **Paigalda Visual Studio Code**. Veendu, et Visual Studio Code on sinu arvutisse paigaldatud. Järgi neid juhiseid, et [paigaldada Visual Studio Code](https://code.visualstudio.com/) põhilise paigalduse jaoks. Selles kursuses kasutad Pythonit Visual Studio Code'is, seega võib olla kasulik tutvuda, kuidas [Visual Studio Code'i seadistada](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) Python arenduseks.
+2. **Paigalda Visual Studio Code**. Veendu, et Visual Studio Code on sinu arvutis paigaldatud. Järgi juhiseid visual studio koodi [paigaldamiseks](https://code.visualstudio.com/). Selles kursuses kasutad Pythoni Visual Studio Codes, nii et võib olla kasulik värskendada teadmisi, kuidas [Visual Studio Code'i seadistada Python arenduseks](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott).
- > Tutvu Pythoniga, läbides selle [õppemoodulite kogumiku](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)
+ > Tutvu Pythoniga lähemalt, läbides selle kogumi [Õpi moodulid](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)
>
- > [](https://youtu.be/yyQM70vi7V8 "Seadista Python Visual Studio Code'iga")
+ > [](https://youtu.be/yyQM70vi7V8 "Seadista Python Visual Studio Code’iga")
>
- > 🎥 Klõpsa ülaloleval pildil, et vaadata videot: Python kasutamine VS Code'is.
+ > 🎥 Klõpsa ülalolevale pildile video vaatamiseks: Pythoni kasutamine VS Code’is.
-3. **Paigalda Scikit-learn**, järgides [neid juhiseid](https://scikit-learn.org/stable/install.html). Kuna pead kasutama Python 3, on soovitatav kasutada virtuaalset keskkonda. Kui paigaldad seda teeki M1 Macile, on ülaltoodud lehel spetsiaalsed juhised.
+3. **Paigalda Scikit-learn** järgides [selleid juhiseid](https://scikit-learn.org/stable/install.html). Kuna vajad Python 3 kasutamist, on soovitatav kasutada virtuaalkeskkonda. Kui paigaldate seda teeki M1 Mac süsteemile, on ülalkirjeldatud lingil erijuhised.
-4. **Paigalda Jupyter Notebook**. Pead [paigaldama Jupyter paketi](https://pypi.org/project/jupyter/).
+1. **Paigalda Jupyter Notebook**. Pead paigaldama [Jupyter paketi](https://pypi.org/project/jupyter/).
-## Sinu ML arenduskeskkond
+## Sinu masinõppe arenduskeskkond
-Sa hakkad kasutama **märkmikke**, et arendada oma Python koodi ja luua masinõppemudeleid. Seda tüüpi fail on andmeteadlaste seas levinud tööriist ja neid saab tuvastada nende laiendi `.ipynb` järgi.
+Kasutad **notebooke**, et arendada oma Pythoni koodi ja luua masinõppemudeleid. See failitüüp on andmeteadlaste seas populaarne, neid saab tuvastada faililaiendi `.ipynb` järgi.
-Märkmikud on interaktiivne keskkond, mis võimaldab arendajal nii koodi kirjutada kui ka märkmeid lisada ja dokumentatsiooni koostada, mis on eksperimentaalsete või uurimuslike projektide jaoks väga kasulik.
+Notebookid on interaktiivne keskkond, mis võimaldab arendajal nii koodi kirjutada kui märkmeid lisada ning dokumentatsiooni kirjutada. See on eriti kasulik eksperimenteerimise või uurimusprojektide korral.
-[](https://youtu.be/7E-jC8FLA2E "ML algajatele - Seadista Jupyter märkmikud regressioonimudelite loomiseks")
+[](https://youtu.be/7E-jC8FLA2E "Masinõpe algajatele - Seadista Jupyter Notebookid regressioonimudelite ehituse alustamiseks")
-> 🎥 Klõpsa ülaloleval pildil, et vaadata lühikest videot selle harjutuse läbiviimisest.
+> 🎥 Klõpsa ülalolevale pildile lühikese video jaoks, mis selgitab viisi.
-### Harjutus - töö märkmikuga
+### Harjutus - töötamine notebookiga
Selles kaustas leiad faili _notebook.ipynb_.
-1. Ava _notebook.ipynb_ Visual Studio Code'is.
+1. Ava _notebook.ipynb_ Visual Studio Codes.
- Jupyter server käivitub koos Python 3+ versiooniga. Märkmikus leiad alasid, mida saab `käivitada`, koodilõike. Koodilõiku saab käivitada, valides ikooni, mis näeb välja nagu mängimise nupp.
+ Järgnevalt käivitub Jupyteri server koos Python 3+ keskkonnaga. Notebookis on kohti, mida saab `run` käivitada, need on koodilõigud. Koodibloki käivitamiseks vali ikoon, mis näeb välja nagu esitamisnupp.
-2. Vali `md` ikoon ja lisa veidi markdowni ning järgmine tekst **# Tere tulemast oma märkmikku**.
+1. Vali `md` ikoon ja lisa natuke markdowni tekstina: **# Welcome to your notebook**.
- Järgmisena lisa veidi Python koodi.
+ Seejärel lisa natuke Pythoni koodi.
-3. Kirjuta **print('hello notebook')** koodilõiku.
-4. Vali nool, et koodi käivitada.
+1. Kirjuta koodiblokki **print('hello notebook')**.
+1. Vali nool, et koodi käivitada.
- Näed järgmist väljundit:
+ Sa peaksid nägema väljatrükki:
```output
hello notebook
```
-
+
-Sa saad oma koodi vaheldumisi kommentaaridega täiendada, et märkmikku ise dokumenteerida.
+Sa võid oma koodi lisada kommentaare, et notebook iseenesest dokumenteeriks seda.
-✅ Mõtle hetkeks, kui erinev on veebiarendaja töökeskkond võrreldes andmeteadlase omaga.
+✅ Mõtle korraks, kui erinev on veebiarendaja töökeskkond võrreldes andmeteadlase omaga.
## Scikit-learniga alustamine
-Nüüd, kui Python on sinu kohalikus keskkonnas seadistatud ja oled Jupyter märkmikega mugav, on aeg saada sama mugavaks Scikit-learniga (häälda `sci` nagu `science`). Scikit-learn pakub [ulatuslikku API-d](https://scikit-learn.org/stable/modules/classes.html#api-ref), mis aitab sul ML ülesandeid täita.
+Nüüd, kui Python on sinu lokaalses keskkonnas seadistatud ja sa oled Jupyter Notebookidega harjunud, tutvume ka Scikit-learniga (hääldus 'sci' nagu 'science'). Scikit-learn pakub [ulatuslikku API-t](https://scikit-learn.org/stable/modules/classes.html#api-ref), mis aitab sul masinõppe ülesandeid teha.
-Nende [veebisaidi](https://scikit-learn.org/stable/getting_started.html) järgi on "Scikit-learn avatud lähtekoodiga masinõppe teek, mis toetab juhendatud ja juhendamata õppimist. See pakub ka mitmesuguseid tööriistu mudelite sobitamiseks, andmete eeltöötluseks, mudelite valikuks ja hindamiseks ning palju muid kasulikke funktsioone."
+Nende [veebilehe](https://scikit-learn.org/stable/getting_started.html) kohaselt: "Scikit-learn on avatud lähtekoodiga masinõppe teek, mis toetab juhendatud ja juhendamata õppimist. See pakub ka erinevaid tööriistu mudelite sobitamiseks, andmete ettevalmistamiseks, mudeli valikuks ja hindamiseks ning palju muud."
-Selles kursuses kasutad Scikit-learni ja teisi tööriistu, et luua masinõppemudeleid, mis täidavad nn "traditsioonilise masinõppe" ülesandeid. Oleme teadlikult vältinud närvivõrke ja süvaõpet, kuna need on paremini kaetud meie tulevases "AI algajatele" õppekavas.
+Selles kursuses kasutad Scikit-learn'i ja teisi tööriistu tavapäraste masinõppe mudelite ehitamiseks. Oleme teadlikult vältinud närvivõrke ja süvaõpet, sest need on põhjalikumalt käsitletud meie tulevases õppekavas 'Tehisintellekt algajatele'.
-Scikit-learn muudab mudelite loomise ja nende hindamise lihtsaks. See keskendub peamiselt numbriliste andmete kasutamisele ja sisaldab mitmeid valmisandmekogumeid, mida saab kasutada õppematerjalidena. Samuti sisaldab see eelvalmistatud mudeleid, mida õpilased saavad proovida. Uurime protsessi, kuidas laadida eelpakendatud andmeid ja kasutada sisseehitatud hindajat esimese ML mudeli loomiseks Scikit-learniga, kasutades põhiandmeid.
+Scikit-learn teeb mudelite ehitamise ja nende hindamise lihtsalt teostatavaks. See on keskendunud peamiselt numbrilistele andmetele ning sisaldab arenguks mitmeid valmis andmekogumeid ja mudelimalle. Uurimegi kõigepealt, kuidas laadida ettevalmistatud andmeid ja kasutada sisse ehitatud hinnangut esimeseks ML mudeliks Scikit-learniga koos lihtsate andmetega.
-## Harjutus - sinu esimene Scikit-learn märkmik
+## Harjutus - sinu esimene Scikit-learn notebook
-> See õpetus on inspireeritud [lineaarse regressiooni näitest](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) Scikit-learni veebisaidil.
+> Selle juhendi inspiratsiooniks oli Scikit-learn'i veebisaidilt leitav [lineaarse regressiooni näide](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 "ML algajatele - Sinu esimene lineaarse regressiooni projekt Pythonis")
-> 🎥 Klõpsa ülaloleval pildil, et vaadata lühikest videot selle harjutuse läbiviimisest.
+[](https://youtu.be/2xkXL5EUpS0 "Masinõpe algajatele - sinu esimene lineaarse regressiooni projekt Pythonis")
-Failis _notebook.ipynb_, mis on seotud selle õppetunniga, kustuta kõik lahtrid, vajutades prügikasti ikooni.
+> 🎥 Klõpsa ülalolevale pildile, et vaadata lühikest videot selle ülesande kohta.
-Selles osas töötad väikese diabeedi andmekogumiga, mis on Scikit-learnis õppimise eesmärgil sisse ehitatud. Kujuta ette, et tahad testida ravi diabeediga patsientide jaoks. Masinõppemudelid võivad aidata kindlaks teha, millised patsiendid reageeriksid ravile paremini, tuginedes muutujate kombinatsioonidele. Isegi väga lihtne regressioonimudel, kui seda visualiseerida, võib näidata teavet muutujate kohta, mis aitaksid korraldada teoreetilisi kliinilisi katseid.
+Failis _notebook.ipynb_, mis käib selle õppetüki juurde, kustuta kõik lahtrid, vajutades 'prügikasti' ikooni.
-✅ Regressioonimeetodeid on palju erinevaid ja millise valid, sõltub küsimusest, millele vastust otsid. Kui tahad ennustada tõenäolist pikkust inimesele teatud vanuses, kasutaksid lineaarset regressiooni, kuna otsid **numbrilist väärtust**. Kui sind huvitab, kas teatud köök peaks olema vegan või mitte, otsid **kategooria määramist**, seega kasutaksid logistilist regressiooni. Õpid logistilisest regressioonist hiljem rohkem. Mõtle veidi, milliseid küsimusi saad andmetelt küsida ja milline neist meetoditest oleks sobivam.
+Selles osas töötad väikese diabeediandmestikuga, mis on Scikit-learn'i sisse ehitatud õppeotstarbel. Kujuta ette, et soovid testida raviviisi diabeetikutele. Masinõppemudelid võivad aidata otsustada, millised patsiendid reageerivad ravile paremini, tuginedes erinevate muutujate kombineeritud väärtustele. Isegi väga lihtne regressioonimudel võib visualiseerituna näidata infot muutujate kohta, mis aitavad teoreetilisi kliinilisi katseid paremini planeerida.
-Alustame ülesandega.
+✅ Regressioonimeetodeid on palju ning millist valida, sõltub sellest, mida soovid leida. Kui tahad ennustada inimese tõenäolist pikkust teatud vanuses, kasutad lineaarset regressiooni, sest otsid **numbrilist väärtust**. Kui tahad teada, kas mingi köögi tüüp on vegan või mitte, otsid **kategooria määratlust**, siis kasutad logistilist regressiooni. Logistilise regressiooni kohta õpid hiljem veel. Mõtle, milliseid küsimusi sa andmetelt küsida võid ja milline meetod oleks sobivam.
-### Teekide importimine
+Alustame nüüd selle ülesandega.
+
+### Impordi teegid
Selle ülesande jaoks impordime mõned teegid:
-- **matplotlib**. See on kasulik [graafikute tööriist](https://matplotlib.org/) ja kasutame seda joondiagrammi loomiseks.
+- **matplotlib**. Kasulik [graafikutööriist](https://matplotlib.org/), mida kasutame joondiagrammi loomiseks.
- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) on kasulik teek numbriliste andmete käsitlemiseks Pythonis.
- **sklearn**. See on [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) teek.
-Impordi mõned teegid, mis aitavad ülesande täitmisel.
+Impordi vajalikud teegid, et ülesannet täita.
-1. Lisa impordid, kirjutades järgmise koodi:
+1. Lisa import käsud, kirjutades järgmist kood:
```python
import matplotlib.pyplot as plt
@@ -122,26 +123,26 @@ Impordi mõned teegid, mis aitavad ülesande täitmisel.
from sklearn import datasets, linear_model, model_selection
```
- Ülal impordid `matplotlib`, `numpy` ja impordid `datasets`, `linear_model` ja `model_selection` teegist `sklearn`. `model_selection` kasutatakse andmete jagamiseks treening- ja testkomplektideks.
+ Ülal tood imports `matplotlib`, `numpy` ja lisaks `datasets`, `linear_model` ning `model_selection` `sklearn` teegist. `model_selection` kasutatakse andmete jagamiseks treening- ja testkoguks.
-### Diabeedi andmekogum
+### Diabeedi andmestik
-Sisseehitatud [diabeedi andmekogum](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) sisaldab 442 diabeediga seotud andmeproovi, millel on 10 tunnuse muutujat, millest mõned on:
+Sisse ehitatud [diabeedi andmestik](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) sisaldab 442 proovimaterjali diabeedi kohta, 10 tunnusega, millest mõned on:
-- age: vanus aastates
-- bmi: kehamassiindeks
-- bp: keskmine vererõhk
-- s1 tc: T-rakud (teatud tüüpi valged verelibled)
+- vanus: vanus aastates
+- kehakaaluindeks (BMI)
+- vererõhk (bp)
+- s1 tc: T-rakud (valgete vereliblede tüüp)
-✅ See andmekogum sisaldab tunnuse muutujana "sugu", mis on oluline diabeedi uurimisel. Paljud meditsiinilised andmekogumid sisaldavad sellist binaarset klassifikatsiooni. Mõtle veidi, kuidas sellised kategooriad võivad teatud osa elanikkonnast ravist välja jätta.
+✅ Selle andmestiku tunnusena on “sugu”, mis on oluline diabeediuuringutes. Paljud meditsiinilised andmestikud sisaldavad sellist binaarset klassifikatsiooni. Mõtle, kuidas sellised kategooriad võivad mõjutada ja vähendada osade elanikkonna ravile pääsemist.
-Nüüd laadi X ja y andmed.
+Laadi nüüd X ja y andmed.
-> 🎓 Pea meeles, et see on juhendatud õppimine ja vajame nimetatud 'y' sihtmärki.
+> 🎓 Pea meeles, see on juhendatud õppimine ja meil peab olema nimetatud eesmärk `y`.
-Uues koodilahtris laadi diabeedi andmekogum, kutsudes `load_diabetes()`. Sisend `return_X_y=True` näitab, et `X` on andmemaatriks ja `y` on regressiooni sihtmärk.
+Uues koodilahtris lae diabeedi andmestik funktsiooniga `load_diabetes()`. Parameeter `return_X_y=True` annab teada, et `X` on andmemaatriks ja `y` regressiooni eesmärgi vektor.
-1. Lisa mõned print-käsud, et näidata andmemaatriksi kuju ja selle esimest elementi:
+1. Lisa mõned print käsud, et kuvada andmemaatriksi kuju ja esimene element:
```python
X, y = datasets.load_diabetes(return_X_y=True)
@@ -149,9 +150,9 @@ Uues koodilahtris laadi diabeedi andmekogum, kutsudes `load_diabetes()`. Sisend
print(X[0])
```
- Saad vastuseks tupli. Mida teed, on tupli kahe esimese väärtuse määramine vastavalt `X` ja `y`. Loe rohkem [tuplite kohta](https://wikipedia.org/wiki/Tuple).
+ Tagastuseks on tuple, mille kaks esimest väärtust määrad `X` ja `y` muutujatele. Loe rohkem [tuple’ide kohta](https://wikipedia.org/wiki/Tuple).
- Näed, et need andmed sisaldavad 442 üksust, mis on kujundatud 10 elemendiga massiivideks:
+ Näed, et selles andmestikus on 442 üksust, mis on kuju 10 elemendiga massiividena:
```text
(442, 10)
@@ -159,39 +160,39 @@ Uues koodilahtris laadi diabeedi andmekogum, kutsudes `load_diabetes()`. Sisend
-0.04340085 -0.00259226 0.01990842 -0.01764613]
```
- ✅ Mõtle veidi andmete ja regressiooni sihtmärgi vahelisele seosele. Lineaarne regressioon ennustab seoseid tunnuse X ja sihtmuutuja y vahel. Kas leiad diabeedi andmekogumi [sihtmärgi](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) dokumentatsioonist? Mida see andmekogum näitab, arvestades sihtmärki?
+ ✅ Mõtle natuke seosele andmete ja regressiooni eesmärgi vahel. Lineaarne regressioon ennustab seost tunnuse X ja eesmärgi y vahel. Kas leiad dokumentatsioonist diabeedi andmestiku [eesmärgi](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset)? Mida see andmestik näitab, arvestades eesmärki?
-2. Järgmisena vali osa sellest andmekogumist, mida graafikul kuvada, valides andmekogumi 3. veeru. Seda saab teha, kasutades `:` operaatorit kõigi ridade valimiseks ja seejärel valides 3. veeru indeksi (2) abil. Samuti saad andmed kujundada 2D massiiviks - nagu graafiku jaoks vajalik - kasutades `reshape(n_rows, n_columns)`. Kui üks parameetritest on -1, arvutatakse vastav mõõde automaatselt.
+2. Vali nüüd sellest andmestikust osa, mille joonistad, valides andmestiku 3. veeru. Seda saad teha, kasutades operaatorit `:` kõigi ridade valimiseks ja seejärel veeru valimiseks indeksi (2) abil. Andmeid vajadusel ümberkujunda 2D-massiiviks joonistamiseks, kasutades `reshape(n_rows, n_columns)`. Kui üks parameetritest on -1, arvutatakse selle mõõt automaatselt.
```python
X = X[:, 2]
X = X.reshape((-1,1))
```
- ✅ Igal ajal prindi andmed välja, et kontrollida nende kuju.
+ ✅ Vahel prindi alati andmed välja, et veenduda vormingus.
-3. Nüüd, kui andmed on graafiku jaoks valmis, saad näha, kas masin suudab määrata loogilise jaotuse numbrite vahel selles andmekogumis. Selleks pead jagama nii andmed (X) kui ka sihtmärgi (y) test- ja treeningkomplektideks. Scikit-learnil on selleks lihtne viis; saad jagada oma testandmed kindlas punktis.
+3. Nüüd, kui tead, et andmed on joonistamiseks valmis, vaatame, kas masin saab aidata loogilist jaotust arvude vahel selgitada. Selleks on vaja jagada nii andmed (X) kui ka eesmärk (y) test- ja treeningkoguks. Scikit-learn pakub lihtsat meetodit andmete jagamiseks antud punktist.
```python
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33)
```
-4. Nüüd oled valmis oma mudelit treenima! Laadi lineaarse regressiooni mudel ja treeni seda oma X ja y treeningkomplektidega, kasutades `model.fit()`:
+4. Nüüd oled valmis mudelit treenima! Lae lineaarse regressiooni mudel ja treeni seda oma X ja y treeningkoguga, kasutades `model.fit()`:
```python
model = linear_model.LinearRegression()
model.fit(X_train, y_train)
```
- ✅ `model.fit()` on funktsioon, mida näed paljudes ML teekides, nagu TensorFlow
+ ✅ `model.fit()` on funktsioon, mida näed paljudes ML teekides nagu TensorFlow.
-5. Seejärel loo ennustus, kasutades testandmeid, funktsiooni `predict()` abil. Seda kasutatakse joone joonistamiseks kõige sobivamasse kohta andmegruppide vahel.
+5. Seejärel loo ennustus testandmete põhjal, kasutades funktsiooni `predict()`. Seda kasutatakse joonistades joon mudeli andmegruppide vahel.
```python
y_pred = model.predict(X_test)
```
-6. Nüüd on aeg andmeid graafikul kuvada. Matplotlib on selleks ülesandeks väga kasulik tööriist. Loo hajusdiagramm kõigist X ja y testandmetest ning kasuta ennustust, et joonistada joon kõige sobivamasse kohta mudeli andmegruppide vahel.
+6. Nüüd on aeg näidata andmeid graafikus. Matplotlib on selleks väga kasulik vahend. Loo hajuvusdiagramm kõigist X ja y testandmetest ning kasuta ennustust, et joonistada joon kõige loogilisemasse kohta mudeli andmerühmituse vahele.
```python
plt.scatter(X_test, y_test, color='black')
@@ -202,29 +203,32 @@ Uues koodilahtris laadi diabeedi andmekogum, kutsudes `load_diabetes()`. Sisend
plt.show()
```
- 
-✅ Mõtle veidi, mis siin toimub. Sirgjoon kulgeb läbi paljude väikeste andmepunktide, kuid mida see täpselt teeb? Kas näed, kuidas saaksid seda joont kasutada, et ennustada, kuhu uus, seni nägemata andmepunkt peaks graafiku y-telje suhtes sobituma? Proovi sõnastada selle mudeli praktiline kasutus.
+ 
+
-Palju õnne, sa ehitasid oma esimese lineaarse regressioonimudeli, tegid sellega ennustuse ja kuvad selle graafikul!
+ ✅ Mõtle natuke selle üle, mis siin toimub. Sirgjoon jookseb läbi paljude väikeste andmepunktide, aga mida see täpselt teeb? Kas näed, kuidas sa peaksid saama seda joont kasutada selleks, et ennustada, kuhu uus, nähtamata andmepunkt võiks suhtega plot'i y-teljele sobituda? Proovi sõnastada praktiline kasutusvõimalus selle mudeli jaoks.
+
+Palju õnne, sa ehitasid oma esimese lineaarse regressioonimudeli, tegid selle abil ennustuse ja kuvastasid selle plot'is!
---
## 🚀Väljakutse
-Kuvage graafikul mõni muu muutuja sellest andmestikust. Vihje: muuda seda rida: `X = X[:,2]`. Arvestades selle andmestiku sihtmärki, mida saate avastada diabeedi kui haiguse progresseerumise kohta?
-
-## [Loengu järgne viktoriin](https://ff-quizzes.netlify.app/en/ml/)
+Kuvada selle andmekogu mõni teine muutuja. Vihje: muuda seda rida: `X = X[:,2]`. Arvestades selle andmekogu sihtmärki, mida sa suudad avastada diabeedi haiguse progresseerumise kohta?
+## [Loengu järeltest](https://ff-quizzes.netlify.app/en/ml/)
-## Ülevaade ja iseseisev õppimine
+## Ülevaade & Iseõpe
-Selles juhendis töötasite lihtsa lineaarse regressiooniga, mitte univariatiivse või mitme muutujaga regressiooniga. Lugege veidi nende meetodite erinevuste kohta või vaadake [seda videot](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef).
+Selles juhendis töötasid sa lihtsa lineaarse regressiooniga, mitte univariatiivse või mitme muutujaga lineaarse regressiooniga. Loe veidi nende meetodite erinevustest või vaata seda [videot](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef)
-Lugege rohkem regressiooni kontseptsiooni kohta ja mõelge, millistele küsimustele saab selle tehnikaga vastata. Võtke see [juhend](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott), et süvendada oma arusaamist.
+Loe rohkem regressiooni kontseptsioonist ja mõtle, milliseid küsimusi selle tehnikaga saab vastata. Võta see [juhend](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott), et oma arusaama süvendada.
-## Ülesanne
+## Kodune ülesanne
-[Teistsugune andmestik](assignment.md)
+[Teine andmekogu](assignment.md)
---
-**Lahtiütlus**:
-See dokument on tõlgitud AI tõlketeenuse [Co-op Translator](https://github.com/Azure/co-op-translator) abil. Kuigi püüame tagada täpsust, palume arvestada, et automaatsed tõlked võivad sisaldada vigu või ebatäpsusi. Algne dokument selle algses keeles tuleks pidada autoriteetseks allikaks. Olulise teabe puhul soovitame kasutada professionaalset inimtõlget. Me ei vastuta selle tõlke kasutamisest tulenevate arusaamatuste või valesti tõlgenduste eest.
\ No newline at end of file
+
+**Lahtiütlus**:
+See dokument on tõlgitud kasutades AI tõlketeenust [Co-op Translator](https://github.com/Azure/co-op-translator). Kuigi me püüdleme täpsuse poole, palun pange tähele, et automatiseeritud tõlgetes võib esineda vigu või ebatäpsusi. Originaaldokument selle emakeeles tuleks pidada autoriteetseks allikaks. Olulise teabe puhul soovitatakse kasutada professionaalset inimtõlget. Me ei vastuta selle tõlkega seotud eksimustest või valesti mõistmistest.
+
\ No newline at end of file
diff --git a/translations/et/2-Regression/2-Data/README.md b/translations/et/2-Regression/2-Data/README.md
index b7a55ce84..e9404367d 100644
--- a/translations/et/2-Regression/2-Data/README.md
+++ b/translations/et/2-Regression/2-Data/README.md
@@ -1,62 +1,62 @@
-# Ehita regressioonimudel Scikit-learniga: andmete ettevalmistamine ja visualiseerimine
+# Ehita regressioonimudel Scikit-learn kasutades: andmete ettevalmistamine ja visualiseerimine
-
+
-Infograafika autor: [Dasani Madipalli](https://twitter.com/dasani_decoded)
+Infograafik autorilt [Dasani Madipalli](https://twitter.com/dasani_decoded)
-## [Eelloengu viktoriin](https://ff-quizzes.netlify.app/en/ml/)
+## [Eel-loengu viktoriin](https://ff-quizzes.netlify.app/en/ml/)
-> ### [See õppetund on saadaval ka R-is!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
+> ### [See õppetund on saadaval R-is!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
## Sissejuhatus
-Nüüd, kui sul on olemas tööriistad, et alustada masinõppe mudelite loomist Scikit-learniga, oled valmis hakkama oma andmetele küsimusi esitama. Andmetega töötades ja ML-lahendusi rakendades on väga oluline osata esitada õigeid küsimusi, et avada oma andmekogumi potentsiaal.
+Nüüd, kui sul on olemas tööriistad masinaõppemudeli ehitamiseks Scikit-learn abil, oled valmis oma andmetest küsimusi esitama. Andmetega töötades ja masinõpperakendusi kasutades on väga oluline mõista, kuidas esitada õigeid küsimusi, et oma andmekogu potentsiaali õigesti avada.
-Selles õppetunnis õpid:
+Selles õppetükis õpid:
-- Kuidas valmistada andmeid mudeli loomiseks.
+- Kuidas ette valmistada andmeid mudeli koostamiseks.
- Kuidas kasutada Matplotlibi andmete visualiseerimiseks.
+- Kuidas kasutada Seaborni väljendusrikkamate andmevisualiseeringute loomiseks.
## Õige küsimuse esitamine oma andmetele
-Küsimus, millele vastust otsid, määrab, millist tüüpi ML-algoritme sa kasutad. Vastuse kvaliteet sõltub suuresti sinu andmete olemusest.
+Sulle vajaliku vastuse küsimus määrab, milliseid ML-algoritme sa kasutad. Ja vastuse kvaliteet sõltub tugevalt sinu andmete olemusest.
-Vaata [andmeid](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv), mis on selle õppetunni jaoks ette nähtud. Sa saad avada selle .csv-faili VS Code'is. Kiire pilk näitab kohe, et seal on tühje kohti ja segu stringidest ning numbrilistest andmetest. Seal on ka kummaline veerg nimega 'Package', kus andmed on segu 'sacks', 'bins' ja muudest väärtustest. Tegelikult on andmed üsna segased.
+Vaata [andmeid](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv), mis on selle õppetunni jaoks esitatud. Saad selle .csv faili avada VS Codes. Esmane kiire ülevaade näitab kohe, et andmetes on tühjad väljad ja segamini on nii tekstid kui ka numbrilised andmed. On ka kummaline veerg nimega 'Package', kus andmed on segamini 'kottide', 'kastide' ja teiste väärtustega. Tegelikult on andmed üsna segased.
-[](https://youtu.be/5qGjczWTrDQ "ML algajatele - Kuidas analüüsida ja puhastada andmekogumit")
+[](https://youtu.be/5qGjczWTrDQ "Masinõpe algajatele - Kuidas analüüsida ja puhastada andmestikku")
-> 🎥 Klõpsa ülaloleval pildil, et vaadata lühikest videot, mis käsitleb andmete ettevalmistamist selle õppetunni jaoks.
+> 🎥 Klõpsa ülalolevale pildile, et vaadata lühivideot, kus näidatakse, kuidas õppetunni andmeid ette valmistada.
-Tegelikult ei ole väga tavaline, et sulle antakse andmekogum, mis on täiesti valmis ML-mudeli loomiseks. Selles õppetunnis õpid, kuidas valmistada ette toorandmeid, kasutades standardseid Python'i teeke. Samuti õpid erinevaid tehnikaid andmete visualiseerimiseks.
+Tegelikult pole väga tavaline, et sulle kingitakse andmestik, mis on täiesti valmis masinõppemudeli loomiseks. Selles õppetükis õpid, kuidas ette valmistada toores andmestik, kasutades standardseid Python'i raamatukogusid. Samuti õpid erinevaid tehnikaid andmete visualiseerimiseks.
## Juhtumiuuring: 'kõrvitsaturg'
-Selles kaustas leiad .csv-faili juurkaustas `data`, nimega [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv), mis sisaldab 1757 rida andmeid kõrvitsaturu kohta, rühmitatuna linnade kaupa. Need on toorandmed, mis on saadud [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) kaudu, mida levitab Ameerika Ühendriikide Põllumajandusministeerium.
+Selles kaustas leiad juurkaustast `data` kausta .csv faili nimega [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv), mis sisaldab 1757 andmerida kõrvitsaturu kohta, sorteeritud linnade kaupa. See on toores andmestik, mis pärineb [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) aruannetest, mida levitab USA Põllumajandusministeerium.
### Andmete ettevalmistamine
-Need andmed on avalikus domeenis. Neid saab alla laadida paljudes eraldi failides, iga linna kohta, USDA veebisaidilt. Et vältida liiga paljusid eraldi faile, oleme kõik linnade andmed üheks tabeliks kokku liitnud, seega oleme andmeid juba veidi _ette valmistanud_. Järgmine samm on andmetele lähemalt pilk heita.
+Need andmed on avalikus omandis. Neid saab alla laadida paljudes eraldi failides, iga linna kohta, USDA veebisaidilt. Koputades, et vältida liiga paljusid eraldi faile, oleme ühendanud kõik linnade andmed üheks tabeliks, seega oleme juba veidi andmeid _valmistanud_. Järgmisena vaatame andmetele lähemalt.
-### Kõrvitsaandmed - esialgsed järeldused
+### Kõrvitsaandmed - esimesed järeldused
-Mida sa nende andmete kohta märkad? Sa juba nägid, et seal on segu stringidest, numbritest, tühjadest kohtadest ja kummalistest väärtustest, mida tuleb mõista.
-
-Millist küsimust sa võiksid nendele andmetele esitada, kasutades regressioonitehnikat? Näiteks: "Prognoosi kõrvitsa müügihinda teatud kuu jooksul." Vaadates andmeid uuesti, on vaja teha mõned muudatused, et luua ülesande jaoks vajalik andmestruktuur.
+Mida sa märkad nende andmete kohta? Sa juba nägid, et seal on segamini tekstid, numbrid, tühjad väljad ja kummalised väärtused, mida pead mõistma.
+Millise küsimuse võid esitada nende andmete kohta, kasutades regressioonitehnikat? Näiteks "Ennusta kõrvitsa hind müügil antud kuul". Andmeid vaadates tuleb mõningaid muudatusi teha, et luua sobiv andmestruktuur ülesande täitmiseks.
## Harjutus - analüüsi kõrvitsaandmeid
-Kasutame [Pandas](https://pandas.pydata.org/) (nimi tähistab `Python Data Analysis`), mis on väga kasulik tööriist andmete kujundamiseks, et analüüsida ja ette valmistada kõrvitsaandmeid.
+Kasuta [Pandas](https://pandas.pydata.org/), (nimi tuleneb sõnadest `Python Data Analysis`), väga kasulikku tööriista andmete kujundamiseks, et analüüsida ja ette valmistada neid kõrvitsaandmeid.
-### Esmalt kontrolli puuduvate kuupäevade olemasolu
+### Esiteks, vaata puuduvad kuupäevad
-Esmalt tuleb astuda samme, et kontrollida puuduvate kuupäevade olemasolu:
+Esmalt pead kontrollima puuduvate kuupäevade olemasolu:
-1. Konverteeri kuupäevad kuu formaati (need on USA kuupäevad, seega formaat on `MM/DD/YYYY`).
-2. Ekstraheeri kuu uude veergu.
+1. Muuda kuupäevad kuu formaati (need on USA kuupäevad, seega formaat on `KK/PP/AAAA`).
+2. Eemalda kuu uusasse veergu.
-Ava _notebook.ipynb_ fail Visual Studio Code'is ja impordi tabel uude Pandase andmeraami.
+Ava Visual Studio Codes fail _notebook.ipynb_ ja impordi tabel uude Pandase andmeraami.
-1. Kasuta `head()` funktsiooni, et vaadata esimesi viit rida.
+1. Kasuta funktsiooni `head()`, et vaadata esimesi viit rida.
```python
import pandas as pd
@@ -64,28 +64,28 @@ Ava _notebook.ipynb_ fail Visual Studio Code'is ja impordi tabel uude Pandase an
pumpkins.head()
```
- ✅ Millist funktsiooni kasutaksid viimase viie rea vaatamiseks?
+ ✅ Millist funktsiooni kasutaksid viimaste viie rea vaatamiseks?
-1. Kontrolli, kas praeguses andmeraamis on puuduvad andmed:
+1. Kontrolli, kas andmeraamis on puuduvaid andmeid:
```python
pumpkins.isnull().sum()
```
- Seal on puuduvad andmed, kuid võib-olla see ei ole ülesande jaoks oluline.
+ Puuduvad andmed on olemas, kuid võib-olla see ei mõjuta antud ülesannet.
-1. Et muuta oma andmeraamiga töötamine lihtsamaks, vali ainult vajalikud veerud, kasutades `loc` funktsiooni, mis ekstraheerib algsest andmeraamist ridade (esimene parameeter) ja veergude (teine parameeter) grupi. Allpool olev väljend `:` tähendab "kõik read".
+1. Tee oma andmebaasiga lihtsam töötada, valides ainult vajalikud veerud, kasutades `loc` funktsiooni, mis väljavõtab originaalandmebaasist rea (esimene parameeter) ja veeru (teine parameeter). Avaldis `:` tähendab allpool "kõik read".
```python
columns_to_select = ['Package', 'Low Price', 'High Price', 'Date']
pumpkins = pumpkins.loc[:, columns_to_select]
```
-### Teiseks, määrake kõrvitsa keskmine hind
+### Teiseks, määra kõrvitsa keskmine hind
-Mõtle, kuidas määrata kõrvitsa keskmine hind teatud kuus. Milliseid veerge sa selleks ülesandeks valiksid? Vihje: sul on vaja 3 veergu.
+Mõtle, kuidas määrata kõrvitsa keskmine hind kindlal kuul. Milliseid veerge sa selleks valiksid? Vihje: vajate kolme veergu.
-Lahendus: arvuta `Low Price` ja `High Price` veergude keskmine, et täita uus Price veerg, ja konverteeri Date veerg, et näidata ainult kuud. Õnneks, vastavalt ülaltoodud kontrollile, ei ole kuupäevade või hindade osas puuduvat teavet.
+Lahendus: arvuta veergude `Low Price` ja `High Price` keskmine, et täita uus veerg Price, ja muuda Date veerg nii, et näidatakse ainult kuud. Õnneks, nagu eelnev kontroll näitas, puuduvad andmed kuupäevade või hindade osas.
1. Keskmise arvutamiseks lisa järgmine kood:
@@ -96,35 +96,35 @@ Lahendus: arvuta `Low Price` ja `High Price` veergude keskmine, et täita uus Pr
```
- ✅ Võid vabalt printida mis tahes andmeid, mida soovid kontrollida, kasutades `print(month)`.
+ ✅ Kui soovid, võid printida andmeid, nt `print(month)`, et kontrollida.
-2. Nüüd kopeeri konverteeritud andmed uude Pandase andmeraami:
+2. Nüüd kopeeri muudetud andmed uude Pandase andmeraami:
```python
new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price})
```
- Kui prindid oma andmeraami välja, näed puhast ja korrastatud andmekogumit, mille põhjal saad ehitada uue regressioonimudeli.
+ Andmeraami printimine näitab sulle puhtaid ja korras andmeid, millele saad ehitada oma regressioonimudeli.
### Aga oota! Siin on midagi kummalist
-Kui vaatad `Package` veergu, müüakse kõrvitsaid mitmes erinevas konfiguratsioonis. Mõned müüakse '1 1/9 bushel' mõõtühikutes, mõned '1/2 bushel' mõõtühikutes, mõned kõrvitsa kaupa, mõned naela kaupa ja mõned suurtes kastides, mille laius varieerub.
+Kui vaatad `Package` veergu, müüakse kõrvitsaid paljudes erinevates kogustes. Mõned müüakse '1 1/9 bushel' mõõtudes, mõned '1/2 bushel' mõõtudes, mõned tükiti, mõned kilo kohta ja mõned suurtes kastides erinevate laiustega.
-> Kõrvitsaid tundub olevat väga raske ühtlaselt kaaluda
+> Kõrvitsaid paistab olevat raske ühtlaselt kaaluda
-Originaalandmetesse süvenedes on huvitav, et kõik, mille `Unit of Sale` on 'EACH' või 'PER BIN', omavad ka `Package` tüüpi tolli, bin'i või 'each' kaupa. Kõrvitsaid tundub olevat väga raske ühtlaselt kaaluda, seega filtreerime need, valides ainult kõrvitsad, mille `Package` veerus on string 'bushel'.
+Originaalandmetes on huvitav, et kõik müügitüübid `Unit of Sale` väärtusega 'EACH' või 'PER BIN' on seotud ka `Package` tüübile tolli või kasti või 'üksik' põhise andmetega. Kõrvitsaid on raske ühtlaselt kaaluda, nii et filtreerime neid, valides ainult kõrvitsaid, mille `Package` veerus on sõna 'bushel'.
-1. Lisa filter faili algusesse, .csv importimise alla:
+1. Lisa faili algusesse filter, pärast .csv importi:
```python
pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]
```
- Kui prindid andmed nüüd välja, näed, et saad ainult umbes 415 rida andmeid, mis sisaldavad kõrvitsaid bushel'i kaupa.
+ Kui nüüd andmeid prindid, näed, et saad ainult umbes 415 rida kõrvitsaid bushelites.
-### Aga oota! Veel üks asi, mida teha
+### Aga oota! Veel üks asi mida teha
-Kas märkasid, et bushel'i kogus varieerub ridade kaupa? Pead hindade normaliseerimiseks tegema matemaatilisi arvutusi, et näidata hinda bushel'i kohta.
+Kas märkasid, et busheli suurus erineb ridade lõikes? Pead hindade normaliseerimiseks näitama hinda ühe busheli kohta, tee seda matemaatiliselt.
1. Lisa need read pärast plokki, mis loob new_pumpkins andmeraami:
@@ -134,38 +134,38 @@ Kas märkasid, et bushel'i kogus varieerub ridade kaupa? Pead hindade normalisee
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2)
```
-✅ Vastavalt [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), bushel'i kaal sõltub toodangu tüübist, kuna see on mahu mõõtühik. "Näiteks tomatite bushel peaks kaaluma 56 naela... Lehed ja rohelised võtavad rohkem ruumi vähem kaaluga, seega spinati bushel on ainult 20 naela." See kõik on üsna keeruline! Ärgem vaevugem bushel'i-naela konversiooni tegemisega ja hinnastagem bushel'i kaupa. Kõik see kõrvitsate bushel'ite uurimine näitab aga, kui oluline on mõista oma andmete olemust!
+✅ Vastavalt [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) järgi sõltub busheli kaal toote tüübist, kuna see on mahtmõõde. "Näiteks tomatite bushel peaks kaaluma 56 naela... Lehed ja rohelised võtavad rohkem ruumi vähem kaalu tõttu, seega spinati bushel kaalub ainult 20 naela." See on üsna keeruline! Me ei viitsi teha busheli- ja naela konversiooni, vaid hindame hinda lihtsalt busheli kohta. Kõik see uurimine näitab, kui tähtis on mõista oma andmete olemust!
-Nüüd saad analüüsida hinnaühikut nende bushel'i mõõtühiku alusel. Kui prindid andmed veel kord välja, näed, kuidas need on standardiseeritud.
+Nüüd saad analüüsida hinnastamist ühiku kohta, mis põhineb busheli mõõdul. Kui prindid andmed veel kord, näed, et see on standardiseeritud.
-✅ Kas märkasid, et kõrvitsad, mida müüakse pool-bushel'i kaupa, on väga kallid? Kas oskad välja selgitada, miks? Vihje: väikesed kõrvitsad on palju kallimad kui suured, tõenäoliselt seetõttu, et neid on bushel'is palju rohkem, arvestades ühe suure õõnsa pirukakõrvitsa poolt hõivatud kasutamata ruumi.
+✅ Kas märkasid, et poolbusheli kaupa müüdavad kõrvitsad on väga kallid? Kas suudad aru saada, miks? Vihje: väiksed kõrvitsad on palju kallimad kui suured, tõenäoliselt sellepärast, et bushelis on neid palju rohkem, kuna ühe suure aukliku piruka kõrvale jääb palju kasutamata ruumi.
-## Visualiseerimisstrateegiad
+## Visualiseerimise strateegiad
-Andmeteadlase roll on näidata andmete kvaliteeti ja olemust, millega ta töötab. Selleks luuakse sageli huvitavaid visualiseeringuid, nagu graafikud, diagrammid ja joonised, mis näitavad andmete erinevaid aspekte. Nii on võimalik visuaalselt näidata seoseid ja lünki, mida muidu oleks raske avastada.
+Andmeteadlase ülesanne on näidata töötatavate andmete kvaliteeti ja olemust. Selleks loovad nad tihti huvitavaid visualiseeringuid ehk jooniseid, graafikuid ja tabeleid, mis näitavad andmete erinevaid aspekte. Nii suudavad nad näidata visuaalselt seoseid ja lünki, mida muidu on raske avastada.
-[](https://youtu.be/SbUkxH6IJo0 "ML algajatele - Kuidas visualiseerida andmeid Matplotlibiga")
+[](https://youtu.be/SbUkxH6IJo0 "Masinõpe algajatele - Kuidas visualiseerida andmeid Matplotlibiga")
-> 🎥 Klõpsa ülaloleval pildil, et vaadata lühikest videot, mis käsitleb andmete visualiseerimist selle õppetunni jaoks.
+> 🎥 Klõpsa ülalolevale pildile, et vaadata lühivideot, mis näitab, kuidas selle õppetunni andmeid visualiseerida.
-Visualiseeringud aitavad ka määrata, milline masinõppe tehnika on andmete jaoks kõige sobivam. Näiteks hajuvusdiagramm, mis näib järgivat joont, viitab sellele, et andmed sobivad hästi lineaarse regressiooni harjutuseks.
+Visualiseeringud aitavad ka määrata masinõppetehnika andmete jaoks. Näiteks hajuvusdiagramm, mille punktid paistavad järgivat joont, viitab, et andmed sobivad hästi lineaarse regressiooni ülesandeks.
-Üks andmete visualiseerimise teek, mis töötab hästi Jupyter'i märkmikes, on [Matplotlib](https://matplotlib.org/) (mida nägid ka eelmises õppetunnis).
+Üks andmevisualiseerimise teek, mis sobib hästi Jupyteri märkmikesse, on [Matplotlib](https://matplotlib.org/) (mida sa juba eelnevalt nägid).
-> Saa rohkem kogemusi andmete visualiseerimisega [nendes juhendites](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott).
+> Saavuta rohkem kogemusi andmete visualiseerimisel [nendes juhendites](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott).
-## Harjutus - katseta Matplotlibiga
+## Harjutus - eksperimenteeri Matplotlibiga
-Proovi luua mõned põhilised graafikud, et kuvada just loodud andmeraami. Mida näitaks põhiline joongraafik?
+Proovi luua mõned lihtsad joonised, et kuvada oma äsja loodud andmeraami. Mida näitaks lihtne joondiagramm?
-1. Impordi Matplotlib faili algusesse, Pandase importimise alla:
+1. Impordi faili alguses Matplotlib, Pandase importide alla:
```python
import matplotlib.pyplot as plt
```
1. Käivita kogu märkmik uuesti, et värskendada.
-1. Lisa märkmiku lõppu lahter, et kuvada andmed kastina:
+1. Lisa märkmiku lõppu lahter, mis joonistab andmed karbidiagrammina:
```python
price = new_pumpkins.Price
@@ -174,17 +174,17 @@ Proovi luua mõned põhilised graafikud, et kuvada just loodud andmeraami. Mida
plt.show()
```
- 
+ 
- Kas see on kasulik graafik? Kas miski selles üllatab sind?
+ Kas see joonis on kasulik? Kas miski sind selle juures üllatab?
- See ei ole eriti kasulik, kuna see lihtsalt kuvab sinu andmed punktide hajuvusena antud kuus.
+ See ei ole eriti kasulik, sest see kuvab lihtsalt andmed hajutatult punktidena antud kuus.
-### Muuda see kasulikuks
+### Tee sellest kasulik
-Et graafikud kuvaksid kasulikke andmeid, tuleb andmeid tavaliselt kuidagi rühmitada. Proovime luua graafiku, kus y-telg näitab kuud ja andmed demonstreerivad andmete jaotust.
+Kasulike diagrammide saamiseks tuleb tavaliselt andmeid kuidagi rühmitada. Proovime luua joonise, kus y-teljel on kuud ning andmed näitavad jaotust.
-1. Lisa lahter, et luua rühmitatud tulpdiagramm:
+1. Lisa lahter, mis loob rühmitatud tulpdiagrammi:
```python
new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar')
@@ -193,25 +193,102 @@ Et graafikud kuvaksid kasulikke andmeid, tuleb andmeid tavaliselt kuidagi rühmi

- See on kasulikum andmete visualiseerimine! Näib, et kõrvitsate kõrgeim hind esineb septembris ja oktoobris. Kas see vastab sinu ootustele? Miks või miks mitte?
+ See on kasulikum andmete visualiseerimine! Tundub, et kõrvitsate kõrgeim hind on septembris ja oktoobris. Kas see vastab sinu ootustele? Miks või miks mitte?
+
+## Harjutus - eksperimenteeri Seaborniga
+
+Matplotlib on võimas, kuid võib nõuda palju koodi poleeritud diagrammide loomiseks. [Seaborn](https://seaborn.pydata.org/) on raamatukogu, mis ehitatud _Matplotlibi peale_, mõeldud statistiliste andmete visualiseerimiseks. See töötab otse Pandase andmeraamidega, rakendab atraktiivseid vaikestiile ning võimaldab luua informatiivseid diagramme palju vähem koodiga. Kuna Seaborn tagastab Matplotlibi objekte, saad kasutada kõike, mida tead Matplotlibi kohta, tulemuse täiendavaks häälestamiseks.
+
+> Kui sul Seaborni veel ei ole, paigalda see käsuga `pip install seaborn`.
+
+1. Impordi Seaborn märkmiku algusesse koos ülejäänud importidega. Tavaliselt imporditakse see nimega `sns`:
+
+ ```python
+ import seaborn as sns
+ ```
+
+### Hajuvusgraafikud suhete näitamiseks
+
+Suur osa andmete uurimisest enne mudeli koostamist on otsida _seoseid_ muutujate vahel. [Hajuvusdiagramm](https://en.wikipedia.org/wiki/Scatter_plot) on selleks üks parimaid tööriistu: kui punktid paistavad järgivat joont, võivad kaks muutujat olla korreleeritud, mis on hea märk, et lineaarne regressioonimudel võib toimida.
+
+1. Reproduseeri eelmine hinna-ja-kuu hajuvusdiagramm, seekord kasutades Seaborni [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) (seoseline diagramm), mis töötab otse sinu andmeraami veergudega:
+
+ ```python
+ sns.relplot(x="Price", y="Month", data=new_pumpkins)
+ ```
+
+ 
+
+ Märka, kuidas sa annad _veerunimed_ ja andmeraami ning Seaborn hoolitseb teljesiltide eest ise.
+
+2. Võid lülituda joondiagrammile, andes argumendiks `kind="line"`. Seaborn joonistab isegi varjutatud ala, mis näitab joone ümber usaldusvahemikku:
+
+ ```python
+ sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins)
+ ```
+
+ 
+
+ See konkreetne andmestik on üsna mürarikas, seega joondiagramm pole kõige selgem valik — kuid see näitab, kui lihtsalt saab Seabornis diagrammitüüpe vahetada.
+
+### Tulpdiagrammid jaotusnäitajate kuvamiseks
+
+
+Varem grupeerisite andmed käsitsi, et Matplotlibiga luua tulpdiagramm. Seaborn'i [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) (kategoriadiagramm) suudab teha grupeerimise ja agregatsiooni teie eest. Vaikimisi näitab `kind="bar"` iga kategooria keskmist koos musta joonisega, mis näitab usaldusintervalli.
+
+1. Looge kuu keskmise hinna tulpdiagramm:
+
+ ```python
+ sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar")
+ ```
+
+ 
+
+ See kinnitab, mida nägite Matplotlibiga — hinnad on tipphetkel septembris ja oktoobris — kuid Seaborn visualiseerib ka, kui palju hind iga kuu sees _muutub_.
+
+### Soojuskaardid korrelatsioonide näitamiseks
+
+Hajuvusdiagrammid võrdlevad korraga kahte muutujat. Kui teil on mitu numbrilist veergu, võimaldab [soojuskaart](https://en.wikipedia.org/wiki/Heat_map) korraga vaadata iga veerupaaride vahelise seose tugevust. See on levinud viis tuvastada, millised tunnused on kõige korreleeritumad enne, kui valida, mida mudelile sisendiks anda (ja sarnast diagrammi kasutatakse hiljem klassifikatsiooni segadusmaatriksite kuvamiseks).
+
+1. Koostage Pandasega korrelatsioonimaatriks ja joonistage see Seaborni [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html) abil. Valik `annot=True` trükib korrelatsiooniväärtused iga lahtri peale:
+
+ ```python
+ correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()
+ sns.heatmap(correlations, annot=True, cmap="coolwarm")
+ ```
+
+ 
+
+ Väärtused, mis on lähedal `1`-le (või `-1`-le), tähendavad, et veerud on tugevalt _lineaarselt_ korreleeritud. Märkige, kuidas `Low Price` ja `High Price` on peaaegu täiuslikult korreleeritud. `Month` aga näitab ainult nõrka lineaarset korrelatsiooni hinnaga — kuigi ülaltoodud tulpdiagramm näitas selget hooajalist tippu septembris ja oktoobris. See on tähtis õppetund: korrelatsioonikordaja mõõdab ainult _äärtesirge_ seoseid, seega võib see hooajalisi või muid mittelineaarseid mustreid mitte tuua esile. ✅ Miks on kasulik vaadata nii soojuskaarti kui ka näiteks tulpdiagrammi enne, kui otsustate, milliseid veerge kasutada?
+
+### Matplotlib või Seaborn?
+
+Mõlemad teegid on teadmiste väärt:
+
+- **Matplotlib** annab teile väga peene kontrolli iga diagrammi elemendi üle ja on aluseks peaaegu igale teisele Pythonis kasutatavale graafikuteegile.
+- **Seaborn** pakub kõrgema taseme funktsioone ja atraktiivseid vaikeväärtusi statistiliste diagrammide jaoks, töötab otse DataFrame'idega ja on sageli kiirem esmaseks andmeanalüüsiks.
+
+Tavaliselt kasutataksegi Seaborni, et kiiresti andmeid avastada, ning vajadusel liigub seejärel detailseks kohandamiseks Matplotlibi.
---
## 🚀Väljakutse
-Uuri erinevaid visualiseerimise tüüpe, mida Matplotlib pakub. Millised tüübid sobivad kõige paremini regressiooniprobleemide jaoks?
+Uurige Matplotlibi ja Seaborni erinevaid visualiseerimise tüüpe. Millised on regressiooniprobleemide jaoks kõige sobivamad?
-## [Järelloengu viktoriin](https://ff-quizzes.netlify.app/en/ml/)
+## [Loengu järel test](https://ff-quizzes.netlify.app/en/ml/)
-## Ülevaade ja iseseisev õpe
+## Kordamine ja iseseisev õppimine
-Vaata erinevaid viise andmete visualiseerimiseks. Koosta nimekiri erinevatest teekidest ja märgi, millised sobivad kõige paremini teatud tüüpi ülesannete jaoks, näiteks 2D-visualiseeringud vs. 3D-visualiseeringud. Mida sa avastad?
+Vaadake üle erinevad viisid andmete visualiseerimiseks. Koostage nimekiri saadaolevatest teekidest ja märkige, millised sobivad konkreetselt erinevate ülesannete jaoks, näiteks 2D vs 3D visualiseerimine. Mida te avastate?
-## Ülesanne
+## Kodune ülesanne
[Visualiseerimise uurimine](assignment.md)
---
-**Vastutusest loobumine**:
-See dokument on tõlgitud AI tõlketeenuse [Co-op Translator](https://github.com/Azure/co-op-translator) abil. Kuigi püüame tagada täpsust, palume arvestada, et automaatsed tõlked võivad sisaldada vigu või ebatäpsusi. Algne dokument selle algses keeles tuleks pidada autoriteetseks allikaks. Olulise teabe puhul soovitame kasutada professionaalset inimtõlget. Me ei vastuta arusaamatuste või valesti tõlgendamise eest, mis võivad tuleneda selle tõlke kasutamisest.
\ No newline at end of file
+
+**Lahtiütlus**:
+See dokument on tõlgitud kasutades AI tõlketeenust [Co-op Translator](https://github.com/Azure/co-op-translator). Kuigi me püüdleme täpsuse poole, palun pange tähele, et automatiseeritud tõlgetes võib esineda vigu või ebatäpsusi. Originaaldokument selle emakeeles tuleks pidada autoriteetseks allikaks. Olulise teabe puhul soovitatakse kasutada professionaalset inimtõlget. Me ei vastuta selle tõlkega seotud eksimustest või valesti mõistmistest.
+
\ No newline at end of file
diff --git a/translations/et/2-Regression/2-Data/solution/notebook.ipynb b/translations/et/2-Regression/2-Data/solution/notebook.ipynb
index 1d873efc6..d0b70c4ce 100644
--- a/translations/et/2-Regression/2-Data/solution/notebook.ipynb
+++ b/translations/et/2-Regression/2-Data/solution/notebook.ipynb
@@ -222,6 +222,7 @@
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
"pumpkins = pd.read_csv('../../data/US-pumpkins.csv')\n",
"\n",
"pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]\n",
@@ -385,18 +386,78 @@
"plt.ylabel(\"Pumpkin Price\")"
]
},
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Visualiseerimine Seaborniga\n",
+ "\n",
+ "[Seaborn](https://seaborn.pydata.org/) on ehitatud Matplotlibi peale ja töötab otse andmeraamidega, võimaldades väga vähese koodiga kiiresti luua atraktiivseid statistilisi jooniseid.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Hajuvusgraafikud suhete näitamiseks\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", kind=\"line\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Tulbadiagrammid jaotuste näitamiseks\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.catplot(x=\"Month\", y=\"Price\", data=new_pumpkins, kind=\"bar\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Soojuskaardid korrelatsioonide näitamiseks\n"
+ ]
+ },
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
- "source": []
+ "source": [
+ "correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()\n",
+ "sns.heatmap(correlations, annot=True, cmap=\"coolwarm\")"
+ ]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "\n---\n\n**Lahtiütlus**: \nSee dokument on tõlgitud, kasutades AI tõlketeenust [Co-op Translator](https://github.com/Azure/co-op-translator). Kuigi püüame tagada täpsust, palun arvestage, et automaatsed tõlked võivad sisaldada vigu või ebatäpsusi. Algne dokument selle algkeeles tuleks lugeda autoriteetseks allikaks. Olulise teabe puhul on soovitatav kasutada professionaalset inimtõlget. Me ei vastuta selle tõlke kasutamisest tulenevate arusaamatuste või valede tõlgenduste eest.\n"
+ "---\n\n\n**Lahtiütlus**:\nSee dokument on tõlgitud kasutades AI tõlketeenust [Co-op Translator](https://github.com/Azure/co-op-translator). Kuigi me püüdleme täpsuse poole, palun pange tähele, et automatiseeritud tõlgetes võib esineda vigu või ebatäpsusi. Originaaldokument selle emakeeles tuleks pidada autoriteetseks allikaks. Olulise teabe puhul soovitatakse kasutada professionaalset inimtõlget. Me ei vastuta selle tõlkega seotud eksimustest või valesti mõistmistest.\n\n"
]
}
],
@@ -426,13 +487,7 @@
"hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d"
}
},
- "orig_nbformat": 2,
- "coopTranslator": {
- "original_hash": "95726f0b8283628d5356a4f8eb8b4b76",
- "translation_date": "2025-10-11T12:24:49+00:00",
- "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
- "language_code": "et"
- }
+ "orig_nbformat": 2
},
"nbformat": 4,
"nbformat_minor": 2
diff --git a/translations/fa/.co-op-translator.json b/translations/fa/.co-op-translator.json
index aaa0bcf40..8a1fc136f 100644
--- a/translations/fa/.co-op-translator.json
+++ b/translations/fa/.co-op-translator.json
@@ -24,8 +24,8 @@
"language_code": "fa"
},
"1-Introduction/3-fairness/README.md": {
- "original_hash": "9a6b702d1437c0467e3c5c28d763dac2",
- "translation_date": "2025-09-04T22:39:13+00:00",
+ "original_hash": "0f00d72169a0d37eecfd16d71e01700a",
+ "translation_date": "2026-07-14T03:27:38+00:00",
"source_file": "1-Introduction/3-fairness/README.md",
"language_code": "fa"
},
@@ -54,8 +54,8 @@
"language_code": "fa"
},
"2-Regression/1-Tools/README.md": {
- "original_hash": "fa81d226c71d5af7a2cade31c1c92b88",
- "translation_date": "2025-09-04T22:33:17+00:00",
+ "original_hash": "0b8635427b582d03ea4ab7089b93e505",
+ "translation_date": "2026-07-14T03:23:38+00:00",
"source_file": "2-Regression/1-Tools/README.md",
"language_code": "fa"
},
@@ -72,8 +72,8 @@
"language_code": "fa"
},
"2-Regression/2-Data/README.md": {
- "original_hash": "7c077988328ebfe33b24d07945f16eca",
- "translation_date": "2025-09-04T22:33:56+00:00",
+ "original_hash": "a58b2c4d16c6b122643391745ac15af6",
+ "translation_date": "2026-07-14T03:24:42+00:00",
"source_file": "2-Regression/2-Data/README.md",
"language_code": "fa"
},
@@ -89,6 +89,12 @@
"source_file": "2-Regression/2-Data/solution/Julia/README.md",
"language_code": "fa"
},
+ "2-Regression/2-Data/solution/notebook.ipynb": {
+ "original_hash": "96b95f8cf473481f2f371de8156f1571",
+ "translation_date": "2026-07-14T03:19:36+00:00",
+ "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
+ "language_code": "fa"
+ },
"2-Regression/3-Linear/README.md": {
"original_hash": "8b776e731c35b171d316d01d0e7b1369",
"translation_date": "2026-04-26T19:49:31+00:00",
@@ -457,7 +463,7 @@
},
"8-Reinforcement/1-QLearning/README.md": {
"original_hash": "911efd5e595089000cb3c16fce1beab8",
- "translation_date": "2025-09-04T22:45:00+00:00",
+ "translation_date": "2026-07-14T03:25:43+00:00",
"source_file": "8-Reinforcement/1-QLearning/README.md",
"language_code": "fa"
},
@@ -481,7 +487,7 @@
},
"8-Reinforcement/2-Gym/README.md": {
"original_hash": "107d5bb29da8a562e7ae72262d251a75",
- "translation_date": "2025-09-04T22:45:37+00:00",
+ "translation_date": "2026-07-14T03:26:45+00:00",
"source_file": "8-Reinforcement/2-Gym/README.md",
"language_code": "fa"
},
@@ -581,6 +587,19 @@
"source_file": "TROUBLESHOOTING.md",
"language_code": "fa"
},
+ "__translation_failures__": {
+ "sketchnotes/LICENSE.md": {
+ "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f",
+ "source_file": "sketchnotes/LICENSE.md",
+ "language_code": "fa",
+ "failure_date": "2026-07-14T03:22:46+00:00",
+ "status": "failed",
+ "error_type": "TranslationIncompleteError",
+ "error_message": "Markdown translation remained incomplete for chunk 1.1.1 of 'LICENSE.md', and the chunk could not be split further.",
+ "translator_version": "0.20.0",
+ "failure_policy_version": 1
+ }
+ },
"docs/_sidebar.md": {
"original_hash": "68dd06c685f6ce840e0acfa313352e7c",
"translation_date": "2025-09-03T23:14:07+00:00",
diff --git a/translations/fa/1-Introduction/3-fairness/README.md b/translations/fa/1-Introduction/3-fairness/README.md
index 2f2e115d2..f902499c6 100644
--- a/translations/fa/1-Introduction/3-fairness/README.md
+++ b/translations/fa/1-Introduction/3-fairness/README.md
@@ -1,153 +1,167 @@
# ساخت راهحلهای یادگیری ماشین با هوش مصنوعی مسئولانه
+
+
+> اسکچ نوت از [Tomomi Imura](https://www.twitter.com/girlie_mac)
-
-> طرح توسط [Tomomi Imura](https://www.twitter.com/girlie_mac)
+## [آزمون پیشدرس](https://ff-quizzes.netlify.app/en/ml/)
+
+## معرفی
-## [آزمون پیش از درس](https://ff-quizzes.netlify.app/en/ml/)
+در این برنامه آموزشی، شما شروع به کشف اینکه چگونه یادگیری ماشین میتواند و در زندگی روزمره ما تأثیرگذار است، خواهید کرد. حتی اکنون، سیستمها و مدلها در کارهای تصمیمگیری روزانه، مانند تشخیصهای پزشکی، تصویب وامها یا شناسایی تقلب دخیل هستند. بنابراین، مهم است که این مدلها بهخوبی کار کنند تا نتایجی قابل اعتماد ارائه دهند. همانند هر برنامه نرمافزاری، سیستمهای هوش مصنوعی ممکن است انتظارات را برآورده نکنند یا نتیجه نامطلوب داشته باشند. به همین دلیل ضروری است که بتوان رفتار مدل هوش مصنوعی را فهمید و توضیح داد.
-## مقدمه
-
-در این دوره آموزشی، شما شروع به کشف خواهید کرد که چگونه یادگیری ماشین میتواند و در حال حاضر زندگی روزمره ما را تحت تأثیر قرار میدهد. حتی اکنون، سیستمها و مدلها در وظایف تصمیمگیری روزانه مانند تشخیصهای پزشکی، تأیید وام یا شناسایی تقلب دخیل هستند. بنابراین، مهم است که این مدلها به خوبی کار کنند تا نتایجی قابل اعتماد ارائه دهند. همانند هر برنامه نرمافزاری، سیستمهای هوش مصنوعی ممکن است انتظارات را برآورده نکنند یا نتایج نامطلوبی داشته باشند. به همین دلیل ضروری است که بتوانیم رفتار یک مدل هوش مصنوعی را درک و توضیح دهیم.
-
-تصور کنید چه اتفاقی میافتد وقتی دادههایی که برای ساخت این مدلها استفاده میکنید فاقد برخی گروههای جمعیتی مانند نژاد، جنسیت، دیدگاه سیاسی، مذهب یا نمایندگی نامتناسب این گروهها باشد. یا وقتی خروجی مدل به گونهای تفسیر شود که به نفع برخی گروههای جمعیتی باشد. پیامد این امر برای برنامه چیست؟ علاوه بر این، وقتی مدل نتیجهای نامطلوب داشته باشد و به افراد آسیب برساند، چه اتفاقی میافتد؟ چه کسی مسئول رفتار سیستمهای هوش مصنوعی است؟ اینها برخی از سوالاتی هستند که در این دوره آموزشی بررسی خواهیم کرد.
+تصور کنید چه اتفاقی میافتد وقتی دادههایی که برای ساخت این مدلها استفاده میکنید فاقد برخی جمعیتشناسیها مانند نژاد، جنسیت، دیدگاه سیاسی، مذهب باشد یا جمعیتشناسیها را بهطور نامتناسبی نمایش دهد. وقتی خروجی مدل به نفع برخی جمعیتشناسیها تفسیر شود چه؟ پیامد این برای کاربرد چیست؟ علاوه بر این، وقتی مدل نتیجهای نامطلوب دارد و به افراد آسیب میرساند چه؟ چه کسی مسئول رفتار سیستمهای هوش مصنوعی است؟ اینها برخی سوالاتی هستند که در این برنامه آموزشی بررسی خواهیم کرد.
در این درس، شما:
-- اهمیت عدالت در یادگیری ماشین و آسیبهای مرتبط با عدالت را درک خواهید کرد.
-- با تمرین بررسی موارد استثنایی و سناریوهای غیرمعمول برای اطمینان از قابلیت اطمینان و ایمنی آشنا خواهید شد.
-- نیاز به توانمندسازی همه افراد از طریق طراحی سیستمهای فراگیر را درک خواهید کرد.
-- اهمیت حفاظت از حریم خصوصی و امنیت دادهها و افراد را بررسی خواهید کرد.
-- اهمیت داشتن رویکرد شفاف برای توضیح رفتار مدلهای هوش مصنوعی را خواهید دید.
-- به اهمیت مسئولیتپذیری برای ایجاد اعتماد در سیستمهای هوش مصنوعی توجه خواهید کرد.
+- آگاهی خود را نسبت به اهمیت عدالت در یادگیری ماشین و آسیبهای مرتبط با عدالت افزایش میدهید.
+- با تمرین بررسی موارد پرت و سناریوهای غیرمعمول برای اطمینان از قابلیت اطمینان و ایمنی آشنا میشوید.
+- درک نیاز به توانمندسازی همه افراد با طراحی سیستمهای فراگیر را کسب میکنید.
+- اهمیت حفاظت از حریم خصوصی و امنیت دادهها و افراد را بررسی میکنید.
+- اهمیت داشتن رویکرد جعبه شیشهای برای توضیح رفتار مدلهای هوش مصنوعی را میبینید.
+- مراقب این باشید که چگونه مسئولیتپذیری برای ایجاد اعتماد در سیستمهای هوش مصنوعی ضروری است.
## پیشنیاز
-به عنوان پیشنیاز، لطفاً مسیر یادگیری "اصول هوش مصنوعی مسئولانه" را طی کنید و ویدئوی زیر را در این موضوع مشاهده کنید:
+به عنوان پیشنیاز، لطفاً "اصول هوش مصنوعی مسئولانه" را از مسیر یادگیری بگذرانید و ویدیو زیر را در این موضوع مشاهده کنید:
-اطلاعات بیشتر درباره هوش مصنوعی مسئولانه را با دنبال کردن این [مسیر یادگیری](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) بیاموزید.
+با دنبال کردن این [مسیر یادگیری](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) بیشتر درباره هوش مصنوعی مسئولانه بیاموزید.
[](https://youtu.be/dnC8-uUZXSc "رویکرد مایکروسافت به هوش مصنوعی مسئولانه")
-> 🎥 روی تصویر بالا کلیک کنید برای ویدئو: رویکرد مایکروسافت به هوش مصنوعی مسئولانه
+> 🎥 برای ویدیو: رویکرد مایکروسافت به هوش مصنوعی مسئولانه، روی تصویر بالا کلیک کنید
## عدالت
-سیستمهای هوش مصنوعی باید با همه افراد به طور عادلانه رفتار کنند و از تأثیرگذاری متفاوت بر گروههای مشابه اجتناب کنند. برای مثال، وقتی سیستمهای هوش مصنوعی راهنماییهایی درباره درمان پزشکی، درخواستهای وام یا استخدام ارائه میدهند، باید توصیههای مشابهی به همه افراد با علائم مشابه، شرایط مالی مشابه یا صلاحیتهای حرفهای مشابه بدهند. هر یک از ما به عنوان انسان، تعصباتی را به ارث بردهایم که بر تصمیمات و اقدامات ما تأثیر میگذارد. این تعصبات میتوانند در دادههایی که برای آموزش سیستمهای هوش مصنوعی استفاده میکنیم، مشهود باشند. چنین دستکاریهایی گاهی به طور ناخواسته اتفاق میافتد. اغلب دشوار است که به طور آگاهانه بدانیم چه زمانی در دادهها تعصب وارد میکنیم.
+سیستمهای هوش مصنوعی باید با همه به طور عادلانه رفتار کنند و از تأثیرگذاری متفاوت روی گروههای مشابهی از مردم پرهیز کنند. به عنوان مثال، وقتی سیستمهای هوش مصنوعی راهنمایی در مورد درمان پزشکی، درخواست وام یا استخدام ارائه میدهند، باید به همه با علائم، شرایط مالی یا صلاحیتهای حرفهای مشابه، توصیههای یکسانی بدهند. هر یک از ما به عنوان انسانها دارای تعصبات به ارث برده شدهای هستیم که تصمیمات و اقدامات ما را تحت تأثیر قرار میدهند. این تعصبات ممکن است در دادههایی که برای آموزش سیستمهای هوش مصنوعی استفاده میکنیم آشکار باشند. گاهی این دستکاری غیرفعالانه و ناخواسته اتفاق میافتد. اغلب دشوار است به صورت آگاهانه بدانیم که چه زمانی تعصب را در دادهها وارد میکنیم.
-**"بیعدالتی"** شامل تأثیرات منفی یا "آسیبها" برای گروهی از افراد است، مانند گروههایی که بر اساس نژاد، جنسیت، سن یا وضعیت معلولیت تعریف شدهاند. آسیبهای اصلی مرتبط با عدالت را میتوان به صورت زیر طبقهبندی کرد:
+**«بیعدالتی»** شامل تأثیرات منفی یا «آسیبها» بر گروهی از افراد است، مانند گروههایی که بر اساس نژاد، جنسیت، سن یا وضعیت معلولیت تعریف شدهاند. آسیبهای اصلی مربوط به عدالت را میتوان به شرح زیر طبقهبندی کرد:
-- **تخصیص**، اگر برای مثال یک جنسیت یا قومیت بر دیگری ترجیح داده شود.
-- **کیفیت خدمات**. اگر دادهها را برای یک سناریوی خاص آموزش دهید اما واقعیت بسیار پیچیدهتر باشد، منجر به خدمات ضعیف میشود. برای مثال، یک دستگاه پخش صابون که به نظر نمیرسد بتواند افراد با پوست تیره را تشخیص دهد. [منبع](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
-- **تحقیر**. انتقاد ناعادلانه و برچسب زدن به چیزی یا کسی. برای مثال، یک فناوری برچسبگذاری تصویر به طور بدنامی تصاویر افراد با پوست تیره را به عنوان گوریلها اشتباه برچسبگذاری کرد.
-- **نمایندگی بیش از حد یا کم**. ایده این است که یک گروه خاص در یک حرفه خاص دیده نمیشود، و هر خدمات یا عملکردی که به ترویج این امر ادامه دهد، به آسیب کمک میکند.
-- **کلیشهسازی**. ارتباط دادن یک گروه خاص با ویژگیهای از پیش تعیینشده. برای مثال، یک سیستم ترجمه زبان بین انگلیسی و ترکی ممکن است به دلیل کلمات با ارتباطات کلیشهای به جنسیت، نادرستیهایی داشته باشد.
+- **تخصیص**، اگر به عنوان مثال جنسیت یا قومیت خاصی بر دیگری ترجیح داده شود.
+- **کیفیت خدمات**. اگر دادهها برای یک سناریوی خاص آموزش داده شوند اما واقعیت پیچیدهتر باشد، منجر به خدمات ضعیف میشود. برای مثال، یک دستگاه پخش مایع دستشویی که ظاهراً نمیتواند افراد با پوست تیره را تشخیص دهد. [ارجاع](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
+- **نقد ناعادلانه**. به ناحق چیزی یا کسی را نقد و برچسب زدن. به عنوان مثال، تکنولوژی برچسبگذاری تصاویر بدنام، تصاویر افراد با پوست تیره را به اشتباه به عنوان گوریل برچسب زد.
+- **نمایندگی بیش از حد یا کمتر از حد**. ایده این است که گروه خاصی در حرفهای دیده نمیشود و هر خدمتی یا عملکردی که این وضعیت را تداوم میبخشد، به آسیب کمک میکند.
+- **کلیشهسازی**. نسبت دادن ویژگیهای پیشفرض به یک گروه مشخص. به عنوان مثال، سیستم ترجمه زبانی بین انگلیسی و ترکی ممکن است به دلیل کلمات با ارتباطات کلیشهای جنسیتی دچار اشتباه شود.
-
+
> ترجمه به ترکی
-
-> ترجمه به انگلیسی
+
+> ترجمه بازگشت به انگلیسی
-هنگام طراحی و آزمایش سیستمهای هوش مصنوعی، باید اطمینان حاصل کنیم که هوش مصنوعی عادلانه است و به گونهای برنامهریزی نشده است که تصمیمات متعصبانه یا تبعیضآمیز بگیرد، تصمیماتی که انسانها نیز از گرفتن آنها منع شدهاند. تضمین عدالت در هوش مصنوعی و یادگیری ماشین همچنان یک چالش پیچیده اجتماعی-فنی است.
+هنگام طراحی و آزمایش سیستمهای هوش مصنوعی، باید اطمینان حاصل کنیم که هوش مصنوعی عادلانه است و برنامهای برای اتخاذ تصمیمات مغرضانه یا تبعیضآمیز ندارد، که انسانها نیز از انجام آن منع شدهاند. تضمین عدالت در هوش مصنوعی و یادگیری ماشین همچنان یک چالش پیچیده اجتماعی-فنی است.
### قابلیت اطمینان و ایمنی
-برای ایجاد اعتماد، سیستمهای هوش مصنوعی باید قابل اعتماد، ایمن و سازگار در شرایط عادی و غیرمنتظره باشند. مهم است بدانیم که سیستمهای هوش مصنوعی در انواع مختلف شرایط چگونه رفتار خواهند کرد، به ویژه زمانی که موارد استثنایی هستند. هنگام ساخت راهحلهای هوش مصنوعی، باید تمرکز قابل توجهی بر نحوه مدیریت انواع مختلف شرایطی که راهحلهای هوش مصنوعی با آنها مواجه میشوند، وجود داشته باشد. برای مثال، یک ماشین خودران باید ایمنی افراد را به عنوان اولویت اصلی قرار دهد. در نتیجه، هوش مصنوعی که ماشین را قدرت میبخشد باید تمام سناریوهای ممکن را که ماشین ممکن است با آنها روبرو شود، مانند شب، طوفانهای رعد و برق یا کولاک، کودکان در حال دویدن در خیابان، حیوانات خانگی، ساختوسازهای جادهای و غیره در نظر بگیرد. اینکه یک سیستم هوش مصنوعی چقدر میتواند طیف گستردهای از شرایط را به طور قابل اعتماد و ایمن مدیریت کند، سطح پیشبینیپذیری را که دانشمند داده یا توسعهدهنده هوش مصنوعی در طراحی یا آزمایش سیستم در نظر گرفته است، منعکس میکند.
+برای ایجاد اعتماد، سیستمهای هوش مصنوعی باید قابل اطمینان، ایمن و ثابت در شرایط عادی و غیرمنتظره باشند. مهم است بدانیم سیستمهای هوش مصنوعی چگونه در شرایط مختلف، به ویژه موارد پرت، رفتار خواهند کرد. هنگام ساخت راهحلهای هوش مصنوعی باید تمرکز زیادی بر نحوه برخورد با شرایط متنوعی که سیستم ممکن است با آن روبرو شود، گذاشته شود. برای مثال، یک خودرو خودران باید ایمنی مردم را در اولویت قرار دهد. در نتیجه، هوش مصنوعی که خودرو را هدایت میکند باید همه سناریوهای ممکن مانند شب، رعد و برق یا بوران، کودکانی که از خیابان عبور میکنند، حیوانات خانگی، ساختوسازهای جادهای و غیره را مدنظر داشته باشد. اینکه یک سیستم هوش مصنوعی چگونه میتواند طیف وسیعی از شرایط را بهطور قابل اعتماد و ایمن مدیریت کند، بازتابی از میزان پیشبینی دانشمند داده یا توسعهدهنده هوش مصنوعی در طراحی یا آزمایش سیستم است.
-> [🎥 روی اینجا کلیک کنید برای ویدئو: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
+> [🎥 برای ویدیو اینجا کلیک کنید: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
-### فراگیری
+### جامعیت
-سیستمهای هوش مصنوعی باید به گونهای طراحی شوند که همه افراد را درگیر و توانمند کنند. هنگام طراحی و اجرای سیستمهای هوش مصنوعی، دانشمندان داده و توسعهدهندگان هوش مصنوعی موانع احتمالی در سیستم را شناسایی و برطرف میکنند که ممکن است به طور ناخواسته افراد را حذف کند. برای مثال، یک میلیارد نفر در سراسر جهان دارای معلولیت هستند. با پیشرفت هوش مصنوعی، آنها میتوانند به طیف گستردهای از اطلاعات و فرصتها در زندگی روزمره خود دسترسی آسانتری داشته باشند. با رفع موانع، فرصتهایی برای نوآوری و توسعه محصولات هوش مصنوعی با تجربیات بهتر ایجاد میشود که به نفع همه است.
+سیستمهای هوش مصنوعی باید به گونهای طراحی شوند که همه را درگیر و توانمند کنند. هنگام طراحی و پیادهسازی سیستمهای هوش مصنوعی، دانشمندان داده و توسعهدهندگان هوش مصنوعی موانع احتمالی در سیستم را شناسایی و برطرف میکنند که ممکن است بهطور ناخواسته افراد را کنار بگذارد. به عنوان مثال، حدود یک میلیارد نفر دارای معلولیت در سراسر جهان وجود دارند. با پیشرفت هوش مصنوعی، این افراد میتوانند دسترسی آسانتری به طیف گستردهای از اطلاعات و فرصتها در زندگی روزمرهشان داشته باشند. با رفع این موانع، فرصتهایی برای نوآوری و توسعه محصولات هوش مصنوعی با تجربه بهتر که به نفع همه است ایجاد میشود.
-> [🎥 روی اینجا کلیک کنید برای ویدئو: فراگیری در هوش مصنوعی](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
+> [🎥 برای ویدیوی جامعیت در هوش مصنوعی اینجا کلیک کنید](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
### امنیت و حریم خصوصی
-سیستمهای هوش مصنوعی باید ایمن باشند و به حریم خصوصی افراد احترام بگذارند. افراد کمتر به سیستمهایی اعتماد دارند که حریم خصوصی، اطلاعات یا زندگی آنها را به خطر میاندازند. هنگام آموزش مدلهای یادگیری ماشین، ما به دادهها برای تولید بهترین نتایج متکی هستیم. در این فرآیند، منبع دادهها و یکپارچگی آنها باید مورد توجه قرار گیرد. برای مثال، آیا دادهها توسط کاربر ارسال شدهاند یا به صورت عمومی در دسترس هستند؟ سپس، هنگام کار با دادهها، ضروری است که سیستمهای هوش مصنوعی توسعه داده شوند که بتوانند اطلاعات محرمانه را محافظت کنند و در برابر حملات مقاومت کنند. با گسترش هوش مصنوعی، حفاظت از حریم خصوصی و امنیت اطلاعات شخصی و تجاری مهمتر و پیچیدهتر میشود. مسائل مربوط به حریم خصوصی و امنیت دادهها نیاز به توجه ویژهای در هوش مصنوعی دارند زیرا دسترسی به دادهها برای سیستمهای هوش مصنوعی ضروری است تا پیشبینیها و تصمیمات دقیق و آگاهانهای درباره افراد انجام دهند.
+سیستمهای هوش مصنوعی باید ایمن باشند و به حریم خصوصی افراد احترام بگذارند. مردم به سیستمهایی که حریم خصوصی، اطلاعات یا زندگیشان را به خطر میاندازند کمتر اعتماد میکنند. هنگام آموزش مدلهای یادگیری ماشین، ما برای تولید بهترین نتایج به دادهها اعتماد میکنیم. در این فرآیند، منشأ داده و یکپارچگی آن باید مورد توجه قرار گیرد. برای مثال، آیا داده توسط کاربر ارسال شده یا به صورت عمومی در دسترس است؟ سپس، هنگام کار با دادهها، توسعه سیستمهای هوش مصنوعی که بتوانند اطلاعات محرمانه را محافظت کنند و در برابر حملات مقاومت کنند، بسیار حیاتی است. با گسترش هوش مصنوعی، حفاظت از حریم خصوصی و امنیت اطلاعات شخصی و تجاری مهمتر و پیچیدهتر میشود. مسائل مربوط به حریم خصوصی و امنیت دادهها نیازمند توجه ویژه برای هوش مصنوعی هستند، زیرا دسترسی به داده برای سیستمهای هوش مصنوعی برای ارائه پیشبینیها و تصمیمات دقیق و آگاهانه درباره افراد ضروری است.
-> [🎥 روی اینجا کلیک کنید برای ویدئو: امنیت در هوش مصنوعی](https://www.microsoft.com/videoplayer/embed/RE4voJF)
+> [🎥 برای ویدیوی امنیت در هوش مصنوعی اینجا کلیک کنید](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- به عنوان یک صنعت، ما پیشرفتهای قابل توجهی در حریم خصوصی و امنیت داشتهایم که به طور قابل توجهی توسط مقرراتی مانند GDPR (مقررات عمومی حفاظت از دادهها) تقویت شده است.
-- با این حال، با سیستمهای هوش مصنوعی باید تنش بین نیاز به دادههای شخصی بیشتر برای شخصیتر و مؤثرتر کردن سیستمها و حریم خصوصی را بپذیریم.
-- همانند تولد کامپیوترهای متصل به اینترنت، ما همچنین شاهد افزایش قابل توجهی در تعداد مسائل امنیتی مرتبط با هوش مصنوعی هستیم.
-- در عین حال، ما شاهد استفاده از هوش مصنوعی برای بهبود امنیت بودهایم. به عنوان مثال، اکثر اسکنرهای ضد ویروس مدرن امروز توسط الگوریتمهای هوش مصنوعی هدایت میشوند.
-- ما باید اطمینان حاصل کنیم که فرآیندهای علم داده ما به طور هماهنگ با آخرین شیوههای حریم خصوصی و امنیت ترکیب شوند.
+- به عنوان یک صنعت، در زمینه حریم خصوصی و امنیت پیشرفتهای قابل توجهی داشتهایم که عمدتاً توسط مقرراتی مانند GDPR (مقررات عمومی حفاظت از دادهها) تقویت شده است.
+- اما در سیستمهای هوش مصنوعی باید تنش بین نیاز به دادههای شخصی بیشتر برای شخصیتر و مؤثرتر کردن سیستمها و حفظ حریم خصوصی را بپذیریم.
+- همانند تولد کامپیوترهای متصل به اینترنت، شاهد افزایش چشمگیر مسائل امنیتی مرتبط با هوش مصنوعی نیز هستیم.
+- در عین حال، دیدهایم که هوش مصنوعی برای بهبود امنیت استفاده میشود. به عنوان مثال، اکثر نرمافزارهای ضدویروس مدرن امروزه توسط قواعد هوش مصنوعی هدایت میشوند.
+- باید اطمینان حاصل کنیم که فرایندهای علم داده ما با آخرین شیوههای حریم خصوصی و امنیت هماهنگ باشد.
-### شفافیت
-سیستمهای هوش مصنوعی باید قابل فهم باشند. بخش مهمی از شفافیت، توضیح رفتار سیستمهای هوش مصنوعی و اجزای آنها است. بهبود درک سیستمهای هوش مصنوعی مستلزم آن است که ذینفعان نحوه و دلیل عملکرد آنها را درک کنند تا بتوانند مسائل بالقوه عملکردی، نگرانیهای ایمنی و حریم خصوصی، تعصبات، شیوههای حذفکننده یا نتایج ناخواسته را شناسایی کنند. ما همچنین معتقدیم که کسانی که از سیستمهای هوش مصنوعی استفاده میکنند باید صادق و شفاف باشند که چه زمانی، چرا و چگونه تصمیم به استفاده از آنها میگیرند. همچنین محدودیتهای سیستمهایی که استفاده میکنند. برای مثال، اگر یک بانک از سیستم هوش مصنوعی برای حمایت از تصمیمات وامدهی مصرفکننده خود استفاده کند، مهم است که نتایج را بررسی کند و بفهمد کدام دادهها بر توصیههای سیستم تأثیر میگذارند. دولتها شروع به تنظیم هوش مصنوعی در صنایع مختلف کردهاند، بنابراین دانشمندان داده و سازمانها باید توضیح دهند که آیا یک سیستم هوش مصنوعی الزامات قانونی را برآورده میکند، به ویژه زمانی که نتیجهای نامطلوب وجود دارد.
+### شفافیت
+سیستمهای هوش مصنوعی باید قابل فهم باشند. بخش حیاتی شفافیت، توضیح رفتار سیستمهای هوش مصنوعی و اجزای آنها است. بهبود درک سیستمهای هوش مصنوعی نیازمند آن است که سهامداران بفهمند چگونه و چرا این سیستمها کار میکنند تا بتوانند مشکلات احتمالی عملکرد، نگرانیهای ایمنی و حریم خصوصی، تعصبات، رفتارهای تبعیضآمیز یا نتایج ناخواسته را شناسایی کنند. همچنین معتقدیم کسانی که از سیستمهای هوش مصنوعی استفاده میکنند باید درباره زمانی که، چرا و چگونه تصمیم به استفاده از آنها میگیرند صادق و شفاف باشند. همچنین باید محدودیتهای سیستمهایی که استفاده میکنند را بپذیرند. به عنوان مثال، اگر بانکی از سیستم هوش مصنوعی برای حمایت از تصمیمات وامدهی مصرفکنندگان استفاده میکند، مهم است که نتایج بررسی شده و دادههایی که بر توصیههای سیستم تأثیر میگذارند فهمیده شوند. دولتها شروع به تنظیم مقررات هوش مصنوعی در صنایع مختلف کردهاند، بنابراین دانشمندان داده و سازمانها باید توضیح دهند که آیا سیستم هوش مصنوعی با الزامات نظارتی مطابقت دارد، به ویژه زمانی که نتیجه نامطلوبی رخ داده است.
-> [🎥 روی اینجا کلیک کنید برای ویدئو: شفافیت در هوش مصنوعی](https://www.microsoft.com/videoplayer/embed/RE4voJF)
+> [🎥 برای ویدیو شفافیت در هوش مصنوعی اینجا کلیک کنید](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- از آنجا که سیستمهای هوش مصنوعی بسیار پیچیده هستند، درک نحوه عملکرد آنها و تفسیر نتایج دشوار است.
-- این عدم درک بر نحوه مدیریت، عملیاتی شدن و مستندسازی این سیستمها تأثیر میگذارد.
-- این عدم درک مهمتر از همه بر تصمیماتی که با استفاده از نتایج تولید شده توسط این سیستمها گرفته میشود، تأثیر میگذارد.
+- به دلیل پیچیدگی سیستمهای هوش مصنوعی، درک چگونگی کار آنها و تفسیر نتایج دشوار است.
+- این کمبود درک بر نحوه مدیریت، عملیاتی شدن و مستندسازی این سیستمها تأثیر میگذارد.
+- این کمبود درک بخصوص روی تصمیماتی که بر اساس نتایج این سیستمها گرفته میشود، تأثیرگذار است.
### مسئولیتپذیری
+
+افرادی که سیستمهای هوش مصنوعی را طراحی و پیادهسازی میکنند باید مسئول چگونگی عملکرد سیستمهایشان باشند. نیاز به مسئولیتپذیری به ویژه برای فناوریهای حساس مانند تشخیص چهره حیاتی است. اخیراً تقاضا برای فناوری تشخیص چهره رو به افزایش است، به خصوص از طرف سازمانهای اجرای قانون که پتانسیل این فناوری را در مواردی مانند یافتن کودکان گمشده میبینند. با این حال، این فناوریها میتوانند توسط دولتها برای تهدید آزادیهای اساسی شهروندان استفاده شوند، به عنوان مثال با نظارت مداوم بر افراد خاص. بنابراین، دانشمندان داده و سازمانها باید مسئول باشند که سیستم هوش مصنوعیشان چگونه بر افراد یا جامعه تأثیر میگذارد.
-افرادی که سیستمهای هوش مصنوعی را طراحی و اجرا میکنند باید مسئول نحوه عملکرد سیستمهای خود باشند. نیاز به مسئولیتپذیری به ویژه در فناوریهای حساس مانند تشخیص چهره بسیار مهم است. اخیراً، تقاضا برای فناوری تشخیص چهره افزایش یافته است، به ویژه از سوی سازمانهای اجرای قانون که پتانسیل این فناوری را در استفادههایی مانند یافتن کودکان گمشده میبینند. با این حال، این فناوریها میتوانند به طور بالقوه توسط یک دولت برای به خطر انداختن آزادیهای اساسی شهروندان خود استفاده شوند، به عنوان مثال، با امکان نظارت مداوم بر افراد خاص. بنابراین، دانشمندان داده و سازمانها باید مسئول تأثیر سیستم هوش مصنوعی خود بر افراد یا جامعه باشند.
+[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "رویکرد مایکروسافت به هوش مصنوعی مسئولانه")
-[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "رویکرد مایکروسافت به هوش مصنوعی مسئولانه")
+> 🎥 برای ویدیو: هشدارهای نظارت گسترده از طریق تشخیص چهره، روی تصویر بالا کلیک کنید
-> 🎥 روی تصویر بالا کلیک کنید برای ویدئو: هشدار درباره نظارت گسترده از طریق تشخیص چهره
+در نهایت یکی از بزرگترین سوالات نسل ما، به عنوان نسل اولی که هوش مصنوعی را به جامعه وارد میکند، این است که چگونه اطمینان حاصل کنیم که کامپیوترها همچنان نسبت به مردم پاسخگو باقی بمانند و چگونه اطمینان حاصل کنیم کسانی که کامپیوترها را طراحی میکنند نسبت به همه باقی مردم پاسخگو باشند.
-در نهایت یکی از بزرگترین سوالات برای نسل ما، به عنوان اولین نسلی که هوش مصنوعی را به جامعه میآورد، این است که چگونه میتوان اطمینان حاصل کرد که کامپیوترها همچنان مسئولیتپذیر باقی میمانند و چگونه میتوان اطمینان حاصل کرد که افرادی که کامپیوترها را طراحی میکنند مسئولیتپذیر باقی میمانند.
+## ارزیابی تاثیر
-## ارزیابی تأثیر
+قبل از آموزش یک مدل یادگیری ماشین، مهم است که ارزیابی تأثیر انجام شود تا هدف از سیستم هوش مصنوعی، نحوه استفاده مورد نظر، محل استقرار و افرادی که با سیستم تعامل دارند، درک شود. این موارد برای ارزیابان یا تستکنندگان سیستم مفید است تا عوامل مورد توجه هنگام شناسایی خطرات احتمالی و پیامدهای پیشبینی شده را بدانند.
-قبل از آموزش یک مدل یادگیری ماشین، مهم است که یک ارزیابی تأثیر انجام شود تا هدف سیستم هوش مصنوعی، استفاده مورد نظر، محل اجرا و افرادی که با سیستم تعامل خواهند داشت، درک شود. این موارد برای بازبینها یا آزمایشکنندگان سیستم مفید هستند تا بدانند چه عواملی را باید هنگام شناسایی خطرات بالقوه و پیامدهای مورد انتظار در نظر بگیرند.
+حوزههای اصلی هنگام انجام ارزیابی تأثیر عبارتند از:
-موارد زیر حوزههای تمرکز هنگام انجام ارزیابی تأثیر هستند:
+* **تأثیر منفی بر افراد**. آگاهی از هرگونه محدودیت یا نیازمندی، استفاده غیرمجاز یا هر محدودیت شناخته شده که کارایی سیستم را مختل کند، برای اطمینان از عدم استفاده سیستم به روش مضر برای افراد حیاتی است.
+* **نیازهای دادهای**. درک این که سیستم چگونه و کجا از داده استفاده میکند، به ارزیابان این امکان را میدهد که هر نیاز دادهای که باید رعایت شود (مانند مقررات GDPR یا HIPAA) را بررسی کنند. علاوه بر این، منبع یا مقدار داده برای آموزش کافی بودن را ارزیابی کنند.
+* **خلاصه تأثیر**. فهرستی از آسیبهای احتمالی ناشی از استفاده از سیستم جمعآوری کنید. در طول چرخه عمر یادگیری ماشین، بررسی کنید که آیا مسائل شناسایی شده کاهش یافته یا برطرف شدهاند.
+* **اهداف قابل اعمال** برای هر یک از شش اصل اصلی. ارزیابی کنید که آیا اهداف هر اصل برآورده شدهاند و آیا شکافهایی وجود دارد یا خیر.
-* **تأثیر نامطلوب بر افراد**. آگاهی از هرگونه محدودیت یا الزامات، استفاده غیرپشتیبانی شده یا هر محدودیت شناخته شدهای که عملکرد سیستم را مختل میکند، برای اطمینان از اینکه سیستم به گونهای استفاده نمیشود که به افراد آسیب برساند، حیاتی است.
-* **نیازهای داده**. درک نحوه و محل استفاده سیستم از دادهها به بازبینها امکان میدهد تا هرگونه نیاز دادهای را که باید به آن توجه شود (مانند مقررات داده GDPR یا HIPPA) بررسی کنند. علاوه بر این، بررسی کنید که آیا منبع یا مقدار داده برای آموزش کافی است.
-* **خلاصه تأثیر**. فهرستی از آسیبهای بالقوهای که ممکن است از استفاده از سیستم ایجاد شود، جمعآوری کنید. در طول چرخه عمر یادگیری ماشین، بررسی کنید که آیا مسائل شناسایی شده کاهش یافته یا برطرف شدهاند.
-* **اهداف قابل اجرا** برای هر یک از شش اصل اصلی. ارزیابی کنید که آیا اهداف هر یک از اصول برآورده شدهاند و آیا شکافهایی وجود دارد.
## اشکالزدایی با هوش مصنوعی مسئولانه
-مشابه اشکالزدایی یک برنامه نرمافزاری، اشکالزدایی یک سیستم هوش مصنوعی فرآیند ضروری شناسایی و حل مشکلات در سیستم است. عوامل زیادی وجود دارند که میتوانند باعث شوند یک مدل به طور مورد انتظار یا مسئولانه عمل نکند. اکثر معیارهای عملکرد مدلهای سنتی، تجمعات کمی از عملکرد مدل هستند که برای تحلیل نحوه نقض اصول هوش مصنوعی مسئولانه کافی نیستند. علاوه بر این، یک مدل یادگیری ماشین یک جعبه سیاه است که درک آنچه باعث نتیجه آن میشود یا ارائه توضیح زمانی که اشتباه میکند، دشوار است. در ادامه این دوره، یاد خواهیم گرفت که چگونه از داشبورد هوش مصنوعی مسئولانه برای کمک به اشکالزدایی سیستمهای هوش مصنوعی استفاده کنیم. این داشبورد ابزار جامعی برای دانشمندان داده و توسعهدهندگان هوش مصنوعی فراهم میکند تا انجام دهند:
+مشابه اشکالزدایی برنامه نرمافزاری، اشکالزدایی سیستم هوش مصنوعی فرآیندی ضروری برای شناسایی و حل مشکلات در سیستم است. عوامل زیادی میتوانند باعث شوند مدل مطابق انتظار یا به صورت مسئولانه عمل نکند. اکثر معیارهای عملکرد مدل سنتی، مقادیر عددی کلی عملکرد مدل هستند که برای تحلیل نقض اصول هوش مصنوعی مسئولانه کافی نیستند. علاوه بر این، مدل یادگیری ماشین جعبه سیاهی است که درک محرکهای خروجی آن یا ارائه توضیح در هنگام خطا را دشوار میکند. در ادامه این دوره، یاد میگیریم چگونه از داشبورد هوش مصنوعی مسئولانه برای کمک به اشکالزدایی سیستمهای هوش مصنوعی استفاده کنیم. این داشبورد ابزار جامع برای دانشمندان داده و توسعهدهندگان هوش مصنوعی فراهم میکند تا:
+
+* **تحلیل خطا**. شناسایی توزیع خطاهای مدل که میتواند بر عدالت یا قابلیت اطمینان سیستم تأثیر بگذارد.
+* **نمای کلی مدل**. کشف نقاط اختلاف عملکرد مدل در دادههای گروههای مختلف.
+* **تحلیل داده**. فهم توزیع دادهها و شناسایی هر گونه تعصب احتمالی که ممکن است به مشکلات عدالت، جامعیت یا قابلیت اطمینان منجر شود.
+* **تفسیری بودن مدل**. درک عوامل مؤثر بر پیشبینیهای مدل که به توضیح رفتار مدل، مهم برای شفافیت و مسئولیتپذیری کمک میکند.
-* **تحلیل خطا**. برای شناسایی توزیع خطاهای مدل که میتواند بر عدالت یا قابلیت اطمینان سیستم تأثیر بگذارد.
-* **نمای کلی مدل**. برای کشف اینکه کجا در عملکرد مدل در میان گروههای داده تفاوت وجود دارد.
-* **تحلیل دادهها**. برای درک توزیع دادهها و شناسایی هرگونه تعصب بالقوه در دادهها که میتواند منجر به مسائل عدالت، فراگیری و قابلیت اطمینان شود.
-* **قابلیت تفسیر مدل**. برای درک اینکه چه چیزی بر پیشبینیهای مدل تأثیر میگذارد یا آنها را تحت تأثیر قرار میدهد. این امر به توضیح رفتار مدل کمک میکند که برای شفافیت و مسئولیتپذیری مهم است.
## 🚀 چالش
+
+برای جلوگیری از وارد شدن آسیبها از ابتدا، باید:
+
+- تنوعی از پیشزمینهها و دیدگاهها را در میان افرادی که روی سیستمها کار میکنند داشته باشیم.
+- در مجموعه دادههایی سرمایهگذاری کنیم که تنوع جامعه ما را منعکس کنند.
+- روشهای بهتری در طول چرخه عمر یادگیری ماشین برای شناسایی و اصلاح هوش مصنوعی مسئولانه هنگام وقوع آن توسعه دهیم.
+
+درباره سناریوهای واقعی فکر کنید که در آن عدم اطمینان مدل در ساخت و استفاده از مدل مشخص است. چه موارد دیگری باید در نظر بگیریم؟
+
+## [آزمون پس از درس](https://ff-quizzes.netlify.app/en/ml/)
-برای جلوگیری از معرفی آسیبها در وهله اول، باید:
+## مرور و خودآموزی
+
-- تنوع در پیشینهها و دیدگاهها در میان افرادی که روی سیستمها کار میکنند داشته باشیم.
-- در مجموعه دادههایی که تنوع جامعه ما را منعکس میکنند سرمایهگذاری کنیم.
-- روشهای بهتری در طول چرخه
-تماشای این کارگاه برای بررسی عمیقتر موضوعات:
+در این درس، شما برخی اصول اولیه مفاهیم عدالت و بیعدالتی در یادگیری ماشین را یاد گرفتهاید.
+
+برای بررسی عمیقتر موضوعات، این کارگاه را تماشا کنید:
-- در جستجوی هوش مصنوعی مسئولانه: تبدیل اصول به عمل توسط بسیمرا نوشی، مهرنوش سامکی و آمیت شارما
+- در جستجوی هوش مصنوعی مسئولانه: بهکارگیری اصول در عمل توسط بِسمیرا نوشی، مهرنوش سامکی و آمیـت شارما
-[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: یک چارچوب متنباز برای ساخت هوش مصنوعی مسئولانه")
+[](https://www.youtube.com/watch?v=tGgJCrA-MZU "جعبهابزار هوش مصنوعی مسئولانه: چارچوب متنباز برای ساخت هوش مصنوعی مسئول")
-> 🎥 برای مشاهده ویدیو روی تصویر بالا کلیک کنید: جعبهابزار هوش مصنوعی مسئولانه: یک چارچوب متنباز برای ساخت هوش مصنوعی مسئولانه توسط بسیمرا نوشی، مهرنوش سامکی و آمیت شارما
+> 🎥 برای مشاهده ویدئو، روی تصویر بالا کلیک کنید: جعبهابزار هوش مصنوعی مسئولانه: چارچوب متنباز برای ساخت هوش مصنوعی مسئول توسط بِسمیرا نوشی، مهرنوش سامکی و آمیـت شارما
-همچنین بخوانید:
+همچنین بخوانید:
-- مرکز منابع هوش مصنوعی مسئولانه مایکروسافت: [منابع هوش مصنوعی مسئولانه – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
+- مرکز منابع هوش مصنوعی مسئول ماکروسافت: [منابع هوش مصنوعی مسئول – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
-- گروه تحقیقاتی FATE مایکروسافت: [FATE: عدالت، پاسخگویی، شفافیت و اخلاق در هوش مصنوعی - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
+- گروه پژوهشی FATE ماکروسافت: [FATE: عدالت، پاسخگویی، شفافیت و اخلاق در هوش مصنوعی - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
-جعبهابزار هوش مصنوعی مسئولانه:
+جعبهابزار هوش مصنوعی مسئولانه:
-- [مخزن GitHub جعبهابزار هوش مصنوعی مسئولانه](https://github.com/microsoft/responsible-ai-toolbox)
+- [مخزن گیتهاب جعبهابزار هوش مصنوعی مسئولانه](https://github.com/microsoft/responsible-ai-toolbox)
-درباره ابزارهای Azure Machine Learning برای تضمین عدالت بخوانید:
+درباره ابزارهای Azure Machine Learning برای اطمینان از عدالت بخوانید:
-- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
+- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
-## تکلیف
+## تمرین
-[جعبهابزار هوش مصنوعی مسئولانه را بررسی کنید](assignment.md)
+[کاوش در جعبهابزار هوش مصنوعی مسئولانه](assignment.md)
---
-**سلب مسئولیت**:
-این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش میکنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است شامل خطاها یا نادرستیها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، توصیه میشود از ترجمه حرفهای انسانی استفاده کنید. ما مسئولیتی در قبال سوء تفاهمها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم.
\ No newline at end of file
+
+**سلب مسئولیت**:
+این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما در تلاش برای دقت هستیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است شامل خطاها یا نادرستیهایی باشند. سند اصلی به زبان مادری خود باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حیاتی، ترجمه حرفهای انسانی توصیه میشود. ما در قبال هرگونه سوء تفاهم یا برداشت نادرست ناشی از استفاده از این ترجمه مسئولیتی نداریم.
+
\ No newline at end of file
diff --git a/translations/fa/2-Regression/1-Tools/README.md b/translations/fa/2-Regression/1-Tools/README.md
index fa2372bde..b54feaf2f 100644
--- a/translations/fa/2-Regression/1-Tools/README.md
+++ b/translations/fa/2-Regression/1-Tools/README.md
@@ -1,118 +1,119 @@
# شروع کار با پایتون و Scikit-learn برای مدلهای رگرسیون
-
+
> اسکچنوت توسط [Tomomi Imura](https://www.twitter.com/girlie_mac)
-## [آزمون پیش از درس](https://ff-quizzes.netlify.app/en/ml/)
+## [آزمون قبل از درس](https://ff-quizzes.netlify.app/en/ml/)
> ### [این درس به زبان R نیز موجود است!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
## مقدمه
-در این چهار درس، شما یاد خواهید گرفت که چگونه مدلهای رگرسیون بسازید. به زودی در مورد کاربردهای این مدلها صحبت خواهیم کرد. اما قبل از شروع، مطمئن شوید که ابزارهای مناسب برای شروع فرآیند را در اختیار دارید!
+در این چهار درس، با نحوه ساخت مدلهای رگرسیون آشنا خواهید شد. به زودی درباره کاربردهای آنها صحبت خواهیم کرد. اما پیش از انجام هر کاری، مطمئن شوید که ابزارهای مناسب برای شروع فرآیند در اختیار دارید!
-در این درس، شما یاد خواهید گرفت که:
+در این درس، خواهید آموخت چگونه:
-- کامپیوتر خود را برای وظایف یادگیری ماشین محلی تنظیم کنید.
-- با Jupyter notebooks کار کنید.
+- رایانه خود را برای انجام وظایف یادگیری ماشین محلی پیکربندی کنید.
+- با Jupyter Notebooks کار کنید.
- از Scikit-learn استفاده کنید، شامل نصب آن.
-- رگرسیون خطی را با یک تمرین عملی بررسی کنید.
+- با تمرینی عملی، رگرسیون خطی را بررسی کنید.
-## نصبها و تنظیمات
+## نصب و پیکربندیها
-[](https://youtu.be/-DfeD2k2Kj0 "یادگیری ماشین برای مبتدیان - تنظیم ابزارها برای ساخت مدلهای یادگیری ماشین")
+[](https://youtu.be/-DfeD2k2Kj0 "یادگیری ماشین برای مبتدیان - آمادهسازی ابزارها برای ساخت مدلهای یادگیری ماشین")
-> 🎥 روی تصویر بالا کلیک کنید تا یک ویدئوی کوتاه درباره تنظیم کامپیوتر برای یادگیری ماشین مشاهده کنید.
+> 🎥 برای مشاهده ویدیوی کوتاه درباره تنظیم رایانه برای یادگیری ماشین روی تصویر بالا کلیک کنید.
-1. **نصب پایتون**. مطمئن شوید که [پایتون](https://www.python.org/downloads/) روی کامپیوتر شما نصب شده است. شما از پایتون برای بسیاری از وظایف علم داده و یادگیری ماشین استفاده خواهید کرد. اکثر سیستمهای کامپیوتری از قبل شامل نصب پایتون هستند. همچنین بستههای [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) مفیدی وجود دارند که تنظیمات را برای برخی کاربران آسانتر میکنند.
+1. **نصب پایتون**. مطمئن شوید که [پایتون](https://www.python.org/downloads/) روی رایانه شما نصب شده است. شما برای بسیاری از کارهای دادهکاوی و یادگیری ماشین به پایتون نیاز خواهید داشت. بیشتر سیستمهای کامپیوتری از قبل پایتون را نصب دارند. بستههای [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) مفیدی هم موجود است که نصب را برای برخی کاربران آسانتر میکند.
- برخی کاربردهای پایتون ممکن است به یک نسخه خاص از نرمافزار نیاز داشته باشند، در حالی که دیگر کاربردها به نسخه دیگری نیاز دارند. به همین دلیل، کار کردن در یک [محیط مجازی](https://docs.python.org/3/library/venv.html) مفید است.
+ برخی کاربردهای پایتون نیاز به نسخه خاصی از نرمافزار دارند، در حالی که برخی دیگر نسخهای متفاوت. به همین دلیل، کار در یک [محیط مجازی](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 استفاده خواهید کرد، بنابراین ممکن است بخواهید نحوه [تنظیم Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) برای توسعه پایتون را مرور کنید.
+2. **نصب Visual Studio Code**. مطمئن شوید که Visual Studio Code روی رایانه شما نصب شده است. برای نصب پایهای به این دستورالعملها برای [نصب Visual Studio Code](https://code.visualstudio.com/) مراجعه کنید. شما در این دوره قرار است از پایتون در Visual Studio Code استفاده کنید، پس ممکن است بخواهید نحوه [پیکربندی Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) برای توسعه پایتون را مرور کنید.
- > با کار کردن روی این مجموعه [ماژولهای یادگیری](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) با پایتون راحتتر شوید.
+ > با گذراندن این مجموعه از [ماژولهای آموزش](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)، با پایتون راحت شوید.
>
- > [](https://youtu.be/yyQM70vi7V8 "تنظیم پایتون با Visual Studio Code")
+ > [](https://youtu.be/yyQM70vi7V8 "راهاندازی پایتون با Visual Studio Code")
>
- > 🎥 روی تصویر بالا کلیک کنید تا یک ویدئو درباره استفاده از پایتون در VS Code مشاهده کنید.
+ > 🎥 برای ویدیویی درباره استفاده از پایتون در VS Code روی تصویر بالا کلیک کنید.
-3. **نصب Scikit-learn**، با دنبال کردن [این دستورالعملها](https://scikit-learn.org/stable/install.html). از آنجا که باید مطمئن شوید که از پایتون 3 استفاده میکنید، توصیه میشود از یک محیط مجازی استفاده کنید. توجه داشته باشید، اگر این کتابخانه را روی یک مک M1 نصب میکنید، دستورالعملهای خاصی در صفحه لینک شده وجود دارد.
+3. **نصب Scikit-learn**، با دنبال کردن [این دستورالعملها](https://scikit-learn.org/stable/install.html). از آنجایی که باید از پایتون ۳ استفاده کنید، توصیه میشود از محیط مجازی استفاده کنید. اگر این کتابخانه را روی یک مک با پردازنده M1 نصب میکنید، دستورالعملهای خاصی در صفحه فوق وجود دارد.
-4. **نصب Jupyter Notebook**. شما باید [بسته Jupyter](https://pypi.org/project/jupyter/) را نصب کنید.
+1. **نصب Jupyter Notebook**. شما باید [بسته Jupyter](https://pypi.org/project/jupyter/) را نصب کنید.
-## محیط نویسندگی یادگیری ماشین شما
+## محیط نویسندگی شما برای یادگیری ماشین
-شما از **notebooks** برای توسعه کد پایتون و ایجاد مدلهای یادگیری ماشین استفاده خواهید کرد. این نوع فایل یک ابزار رایج برای دانشمندان داده است و با پسوند `.ipynb` شناسایی میشود.
+شما از **دفترچهها (notebooks)** برای توسعه کد پایتون خود و ایجاد مدلهای یادگیری ماشین استفاده خواهید کرد. این نوع فایل ابزاری رایج در علوم داده است و با پسوند `.ipynb` شناسایی میشود.
-نوتبوکها یک محیط تعاملی هستند که به توسعهدهنده اجازه میدهند هم کدنویسی کنند و هم یادداشتها و مستندات پیرامون کد بنویسند، که برای پروژههای آزمایشی یا تحقیقاتی بسیار مفید است.
+دفترچهها محیطی تعاملی هستند که به توسعهدهنده اجازه میدهد هم کد بنویسد و هم یادداشتها و مستندات پیرامون کد را اضافه کند که برای پروژههای تجربی یا پژوهشی بسیار مفید است.
-[](https://youtu.be/7E-jC8FLA2E "یادگیری ماشین برای مبتدیان - تنظیم Jupyter Notebooks برای شروع ساخت مدلهای رگرسیون")
+[](https://youtu.be/7E-jC8FLA2E "یادگیری ماشین برای مبتدیان - راهاندازی Jupyter Notebooks برای شروع ساخت مدلهای رگرسیون")
-> 🎥 روی تصویر بالا کلیک کنید تا یک ویدئوی کوتاه درباره این تمرین مشاهده کنید.
+> 🎥 برای مشاهده ویدیوی کوتاه درباره این تمرین روی تصویر بالا کلیک کنید.
-### تمرین - کار با یک نوتبوک
+### تمرین - کار با یک دفترچه
در این پوشه، فایل _notebook.ipynb_ را پیدا خواهید کرد.
1. فایل _notebook.ipynb_ را در Visual Studio Code باز کنید.
- یک سرور Jupyter با پایتون 3+ شروع خواهد شد. شما بخشهایی از نوتبوک را پیدا خواهید کرد که میتوانند `اجرا شوند`، قطعات کد. شما میتوانید یک بلوک کد را با انتخاب آیکونی که شبیه دکمه پخش است اجرا کنید.
+ یک سرور Jupyter با پایتون ۳+ شروع به کار خواهد کرد. بخشهایی از دفترچه که میتوانید آنها را `run` کنید، بخشهایی از کد هستند. میتوانید یک بلوک کد را با انتخاب آیکونی که شبیه دکمه پخش است اجرا کنید.
-2. آیکون `md` را انتخاب کنید و کمی متن مارکداون اضافه کنید، و متن زیر را وارد کنید **# خوش آمدید به نوتبوک خود**.
+1. آیکون `md` را انتخاب کنید و کمی متن مارکداون اضافه کنید، از جمله متن زیر: **# به دفترچه خود خوش آمدید**
- سپس کمی کد پایتون اضافه کنید.
+ سپس، کمی کد پایتون اضافه کنید.
-3. در بلوک کد تایپ کنید **print('hello notebook')**.
-4. فلش را انتخاب کنید تا کد اجرا شود.
+1. کد **print('hello notebook')** را در بلوک کد تایپ کنید.
+1. برای اجرای کد، روی فلش کلیک کنید.
- شما باید عبارت چاپ شده را مشاهده کنید:
+ باید عبارت چاپشده را ببینید:
```output
hello notebook
```
-
+
-شما میتوانید کد خود را با نظرات ترکیب کنید تا نوتبوک را خود-مستند کنید.
+میتوانید کد خود را با کامنتهایی برای خودتان همراه کنید تا دفترچه مستند شود.
-✅ برای یک دقیقه فکر کنید که محیط کاری یک توسعهدهنده وب چقدر با محیط کاری یک دانشمند داده متفاوت است.
+✅ کمی فکر کنید که محیط کاری یک توسعهدهنده وب چقدر با محیط کاری یک دانشمند داده متفاوت است.
-## شروع کار با Scikit-learn
+## راهاندازی و شروع کار با Scikit-learn
-اکنون که پایتون در محیط محلی شما تنظیم شده است و با Jupyter notebooks راحت هستید، بیایید با Scikit-learn نیز راحت شویم (تلفظ آن `sci` مانند `science`). Scikit-learn یک [API گسترده](https://scikit-learn.org/stable/modules/classes.html#api-ref) ارائه میدهد تا به شما در انجام وظایف یادگیری ماشین کمک کند.
+حال که پایتون در محیط محلی شما راهاندازی شده است و با Jupyter Notebooks راحت هستید، بیایید با Scikit-learn هم همینقدر راحت شویم (تلفظ آن `سای` مثل science است). Scikit-learn یک [رابط برنامهنویسی گسترده](https://scikit-learn.org/stable/modules/classes.html#api-ref) فراهم میکند تا به شما در انجام وظایف یادگیری ماشین کمک کند.
-طبق [وبسایت آنها](https://scikit-learn.org/stable/getting_started.html)، "Scikit-learn یک کتابخانه یادگیری ماشین متنباز است که از یادگیری نظارتشده و بدون نظارت پشتیبانی میکند. همچنین ابزارهای مختلفی برای برازش مدل، پیشپردازش دادهها، انتخاب مدل و ارزیابی، و بسیاری از امکانات دیگر ارائه میدهد."
+طبق گفته وبسایت آنها [وبسایت](https://scikit-learn.org/stable/getting_started.html) "Scikit-learn یک کتابخانه متن باز یادگیری ماشین است که یادگیری نظارتشده و نظارتنشده را پشتیبانی میکند. همچنین ابزارهای مختلفی برای برازش مدل، پیشپردازش داده، انتخاب و ارزیابی مدل و بسیاری کاربردهای دیگر فراهم میآورد."
-در این دوره، شما از Scikit-learn و ابزارهای دیگر برای ساخت مدلهای یادگیری ماشین استفاده خواهید کرد تا وظایفی را که به آنها "یادگیری ماشین سنتی" میگوییم انجام دهید. ما عمداً از شبکههای عصبی و یادگیری عمیق اجتناب کردهایم، زیرا آنها بهتر در برنامه درسی آینده ما با عنوان "AI برای مبتدیان" پوشش داده میشوند.
+در این دوره، از Scikit-learn و ابزارهای دیگر برای ساخت مدلهای یادگیری ماشین استفاده خواهید کرد تا وظایفی که ما «یادگیری ماشین سنتی» مینامیم را انجام دهید. عمدتاً از شبکههای عصبی و یادگیری عمیق اجتناب کردهایم، چون آنها را بهتر در دوره آینده «هوش مصنوعی برای مبتدیان» پوشش خواهیم داد.
-Scikit-learn ساخت مدلها و ارزیابی آنها برای استفاده را ساده میکند. این کتابخانه عمدتاً بر استفاده از دادههای عددی تمرکز دارد و شامل چندین مجموعه داده آماده برای استفاده به عنوان ابزارهای یادگیری است. همچنین مدلهای پیشساختهای برای دانشآموزان دارد تا امتحان کنند. بیایید فرآیند بارگذاری دادههای از پیش بستهبندی شده و استفاده از یک تخمینگر برای اولین مدل یادگیری ماشین با Scikit-learn را با دادههای پایه بررسی کنیم.
+Scikit-learn ساخت مدلها و ارزیابی آنها را بسیار ساده کرده است. عمدتاً بر استفاده از دادههای عددی تمرکز دارد و چندین مجموعه داده آماده برای یادگیری دارد. همچنین مدلهایی آماده برای امتحان دانشجویان دارد. ابتدا پروسه بارگذاری دادههای بستهبندی شده و استفاده از یک تخمینزن داخلی را برای اولین مدل ML با Scikit-learn و دادههای پایه بررسی کنیم.
-## تمرین - اولین نوتبوک Scikit-learn شما
+## تمرین - اولین دفترچه Scikit-learn شما
+
+> این آموزش بر اساس [مثال رگرسیون خطی](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) در وبسایت Scikit-learn الهام گرفته شده است.
-> این آموزش از [مثال رگرسیون خطی](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) در وبسایت Scikit-learn الهام گرفته شده است.
[](https://youtu.be/2xkXL5EUpS0 "یادگیری ماشین برای مبتدیان - اولین پروژه رگرسیون خطی شما در پایتون")
-> 🎥 روی تصویر بالا کلیک کنید تا یک ویدئوی کوتاه درباره این تمرین مشاهده کنید.
+> 🎥 برای مشاهده ویدیوی کوتاه درباره این تمرین روی تصویر بالا کلیک کنید.
-در فایل _notebook.ipynb_ مرتبط با این درس، تمام سلولها را با فشار دادن آیکون 'سطل زباله' پاک کنید.
+در فایل _notebook.ipynb_ مربوط به این درس، همه سلولها را با کلیک روی آیکون سطل زباله پاک کنید.
-در این بخش، شما با یک مجموعه داده کوچک درباره دیابت که در Scikit-learn برای اهداف یادگیری ساخته شده است کار خواهید کرد. تصور کنید که میخواهید یک درمان برای بیماران دیابتی آزمایش کنید. مدلهای یادگیری ماشین ممکن است به شما کمک کنند تعیین کنید کدام بیماران بر اساس ترکیب متغیرها بهتر به درمان پاسخ میدهند. حتی یک مدل رگرسیون بسیار پایه، زمانی که بصریسازی شود، ممکن است اطلاعاتی درباره متغیرهایی ارائه دهد که به شما در سازماندهی آزمایشهای بالینی نظری کمک کند.
+در این بخش، با یک مجموعه داده کوچک درباره دیابت کار خواهید کرد که به منظور یادگیری در Scikit-learn ساخته شده است. تصور کنید میخواهید درمانی برای بیماران دیابتی آزمایش کنید. مدلهای یادگیری ماشین میتوانند به شما کمک کنند تعیین کنید کدام بیماران بهتر به درمان پاسخ میدهند، بر اساس ترکیبی از متغیرها. حتی یک مدل رگرسیون بسیار ساده، وقتی تجسم شود، میتواند اطلاعاتی درباره متغیرها نشان دهد که به سازماندهی آزمایشات بالینی نظری شما کمک کند.
-✅ روشهای رگرسیون زیادی وجود دارند، و انتخاب شما بستگی به پاسخی دارد که به دنبال آن هستید. اگر میخواهید ارتفاع احتمالی یک فرد را بر اساس سن او پیشبینی کنید، از رگرسیون خطی استفاده میکنید، زیرا به دنبال یک **مقدار عددی** هستید. اگر علاقهمند به کشف این هستید که آیا یک نوع غذا باید به عنوان وگان در نظر گرفته شود یا نه، به دنبال یک **تخصیص دستهبندی** هستید، بنابراین از رگرسیون لجستیک استفاده میکنید. بعداً درباره رگرسیون لجستیک بیشتر یاد خواهید گرفت. کمی فکر کنید که چه سوالاتی میتوانید از دادهها بپرسید و کدام یک از این روشها مناسبتر خواهد بود.
+✅ روشهای مختلف رگرسیون وجود دارند و انتخاب یکی به پاسخ موردنظر شما بستگی دارد. اگر بخواهید ارتفاع احتمالی یک شخص در سن مشخص را پیشبینی کنید، از رگرسیون خطی استفاده میکنید چون دنبال یک **مقدار عددی** هستید. اگر بخواهید بدانید یک نوع غذای خاص باید به عنوان گیاهخواری شمرده شود یا نه، به دنبال **دستهبندی** هستید، پس از رگرسیون لجستیک استفاده میکنید. درباره رگرسیون لجستیک بعداً بیشتر خواهید آموخت. کمی در مورد سوالاتی که میتوانید از دادهها بپرسید فکر کنید و کدام روش برای آن مناسبتر است.
-بیایید این کار را شروع کنیم.
+بریم سراغ این کار.
### وارد کردن کتابخانهها
-برای این کار، ما برخی کتابخانهها را وارد خواهیم کرد:
+برای این کار برخی کتابخانهها را وارد میکنیم:
-- **matplotlib**. این یک [ابزار گرافیکی](https://matplotlib.org/) مفید است و ما از آن برای ایجاد یک نمودار خطی استفاده خواهیم کرد.
-- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) یک کتابخانه مفید برای کار با دادههای عددی در پایتون است.
-- **sklearn**. این همان [کتابخانه Scikit-learn](https://scikit-learn.org/stable/user_guide.html) است.
+- **matplotlib**. این یک [ابزار رسم نمودار مفید](https://matplotlib.org/) است و ما از آن برای رسم نمودار خطی استفاده خواهیم کرد.
+- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) کتابخانهای مفید برای مدیریت دادههای عددی در پایتون است.
+- **sklearn**. این کتابخانه [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) است.
-برخی کتابخانهها را برای کمک به وظایف خود وارد کنید.
+برخی کتابخانهها را برای انجام وظایف خود وارد کنید.
1. واردات را با تایپ کد زیر اضافه کنید:
@@ -122,26 +123,26 @@ Scikit-learn ساخت مدلها و ارزیابی آنها برای اس
from sklearn import datasets, linear_model, model_selection
```
- در بالا، شما `matplotlib` و `numpy` را وارد میکنید و `datasets`، `linear_model` و `model_selection` را از `sklearn` وارد میکنید. `model_selection` برای تقسیم دادهها به مجموعههای آموزشی و آزمایشی استفاده میشود.
+ شما در بالا `matplotlib`، `numpy` را وارد کردهاید و نیز از `sklearn`، `datasets`، `linear_model` و `model_selection` را وارد کردهاید. `model_selection` برای تقسیم دادهها به مجموعههای آموزش و تست استفاده میشود.
### مجموعه داده دیابت
-مجموعه داده [دیابت](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) شامل 442 نمونه داده درباره دیابت است، با 10 متغیر ویژگی، برخی از آنها شامل:
+مجموعه داده [دیابت داخلی](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) شامل ۴۴۲ نمونه داده درباره دیابت است، با ۱۰ متغیر ویژگی که برخی از آنها شامل:
-- age: سن به سال
+- سن: سن بر حسب سال
- bmi: شاخص توده بدنی
- bp: فشار خون متوسط
-- s1 tc: سلولهای T (نوعی از گلبولهای سفید خون)
+- s1 tc: سلولهای T (نوعی از سلولهای سفید خون)
-✅ این مجموعه داده شامل مفهوم 'جنسیت' به عنوان یک متغیر ویژگی مهم برای تحقیق درباره دیابت است. بسیاری از مجموعه دادههای پزشکی شامل این نوع طبقهبندی دودویی هستند. کمی فکر کنید که چگونه چنین دستهبندیهایی ممکن است بخشهایی از جمعیت را از درمانها حذف کنند.
+✅ این مجموعه داده مفهوم «جنسیت» را به عنوان متغیر ویژگی مهمی برای تحقیقات درباره دیابت شامل میشود. بسیاری از مجموعه دادههای پزشکی این نوع دستهبندی دودویی را دارند. کمی فکر کنید که چنین دستهبندیهایی چطور ممکن است بخشی از جمعیت را از درمانها کنار بگذارند.
-اکنون دادههای X و y را بارگذاری کنید.
+حال، دادههای X و y را بارگذاری کنید.
-> 🎓 به یاد داشته باشید، این یادگیری نظارتشده است و ما به یک هدف 'y' نامگذاری شده نیاز داریم.
+> 🎓 به یاد داشته باشید، این یادگیری نظارتشده است و باید «y» هدف نامگذاری شده وجود داشته باشد.
-در یک سلول کد جدید، مجموعه داده دیابت را با فراخوانی `load_diabetes()` بارگذاری کنید. ورودی `return_X_y=True` نشان میدهد که `X` یک ماتریس داده خواهد بود و `y` هدف رگرسیون خواهد بود.
+در یک سلول کد جدید، مجموعه داده دیابت را با فراخوانی `load_diabetes()` بارگذاری کنید. ورودی `return_X_y=True` به معنای این است که `X` یک ماتریس داده و `y` هدف رگرسیون خواهد بود.
-1. برخی دستورات چاپ اضافه کنید تا شکل ماتریس داده و اولین عنصر آن را نشان دهید:
+1. چند دستور print برای نشان دادن شکل ماتریس داده و اولین عنصر آن اضافه کنید:
```python
X, y = datasets.load_diabetes(return_X_y=True)
@@ -149,9 +150,9 @@ Scikit-learn ساخت مدلها و ارزیابی آنها برای اس
print(X[0])
```
- چیزی که به عنوان پاسخ دریافت میکنید، یک tuple است. کاری که انجام میدهید این است که دو مقدار اول tuple را به ترتیب به `X` و `y` اختصاص دهید. بیشتر درباره [tupleها](https://wikipedia.org/wiki/Tuple) یاد بگیرید.
+ آنچه برمیگردید به صورت یک تاپل است. کاری که میکنید این است که دو مقدار اول تاپل را به ترتیب به `X` و `y` انتساب دهید. درباره [تاپلها](https://wikipedia.org/wiki/Tuple) بیشتر بدانید.
- شما میتوانید ببینید که این دادهها شامل 442 آیتم هستند که در آرایههایی با 10 عنصر شکل گرفتهاند:
+ میتوانید ببینید این داده ۴۴۲ مورد دارد که در آرایهای با ۱۰ عنصر شکل داده شده است:
```text
(442, 10)
@@ -159,39 +160,39 @@ Scikit-learn ساخت مدلها و ارزیابی آنها برای اس
-0.04340085 -0.00259226 0.01990842 -0.01764613]
```
- ✅ کمی فکر کنید درباره رابطه بین دادهها و هدف رگرسیون. رگرسیون خطی روابط بین ویژگی X و متغیر هدف y را پیشبینی میکند. آیا میتوانید [هدف](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) مجموعه داده دیابت را در مستندات پیدا کنید؟ این مجموعه داده چه چیزی را نشان میدهد، با توجه به هدف؟
+ ✅ کمی درباره رابطه بین داده و هدف رگرسیون فکر کنید. رگرسیون خطی روابط بین ویژگی X و متغیر هدف y را پیشبینی میکند. آیا میتوانید [هدف](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) مجموعه داده دیابت را در مستندات پیدا کنید؟ این مجموعه داده با آن هدف چه چیزی را نشان میدهد؟
-2. سپس، بخشی از این مجموعه داده را برای رسم انتخاب کنید، با انتخاب ستون سوم مجموعه داده. شما میتوانید این کار را با استفاده از عملگر `:` برای انتخاب تمام ردیفها انجام دهید، و سپس ستون سوم را با استفاده از ایندکس (2) انتخاب کنید. همچنین میتوانید دادهها را به یک آرایه 2D تغییر شکل دهید - همانطور که برای رسم لازم است - با استفاده از `reshape(n_rows, n_columns)`. اگر یکی از پارامترها -1 باشد، بعد مربوطه به طور خودکار محاسبه میشود.
+2. سپس بخشی از این مجموعه داده را برای رسم انتخاب کنید، با انتخاب ستون سوم مجموعه داده. برای این کار میتوانید از عملگر `:` برای انتخاب همه ردیفها استفاده کنید، و سپس ستون سوم را با ایندکس (2) انتخاب کنید. همچنین میتوانید داده را به آرایه ۲ بعدی تغییر شکل دهید - برای رسم لازم است - با استفاده از `reshape(n_rows, n_columns)`. اگر یکی از پارامترها -۱ باشد، بعد متناظر به طور خودکار محاسبه میشود.
```python
X = X[:, 2]
X = X.reshape((-1,1))
```
- ✅ در هر زمان، دادهها را چاپ کنید تا شکل آنها را بررسی کنید.
+ ✅ در هر لحظه داده را چاپ کنید تا شکل آن را چک کنید.
-3. اکنون که دادهها آماده رسم هستند، میتوانید ببینید آیا یک ماشین میتواند به تعیین یک تقسیم منطقی بین اعداد در این مجموعه داده کمک کند. برای انجام این کار، باید هم دادهها (X) و هم هدف (y) را به مجموعههای آزمایشی و آموزشی تقسیم کنید. Scikit-learn یک روش ساده برای انجام این کار دارد؛ شما میتوانید دادههای آزمایشی خود را در یک نقطه مشخص تقسیم کنید.
+3. حال که داده آماده رسم است، میتوانید ببینید که آیا ماشین میتواند تقسیم منطقی بین اعداد این مجموعه داده تشخیص دهد یا نه. برای این کار باید دادهها (X) و هدف (y) را به مجموعههای تست و آموزش تقسیم کنید. Scikit-learn راه سادهای برای این کار دارد؛ میتوانید داده تست خود را در نقطهای مشخص تقسیم کنید.
```python
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33)
```
-4. اکنون آماده آموزش مدل خود هستید! مدل رگرسیون خطی را بارگذاری کنید و آن را با مجموعههای آموزشی X و y خود با استفاده از `model.fit()` آموزش دهید:
+4. حال آماده آموزش مدل خود هستید! مدل رگرسیون خطی را بارگذاری کنید و آن را با مجموعههای آموزش X و y خود با استفاده از `model.fit()` آموزش دهید:
```python
model = linear_model.LinearRegression()
model.fit(X_train, y_train)
```
- ✅ `model.fit()` یک تابع است که در بسیاری از کتابخانههای یادگیری ماشین مانند TensorFlow مشاهده خواهید کرد.
+ ✅ `model.fit()` تابعی است که در بسیاری از کتابخانههای یادگیری ماشین مانند TensorFlow خواهید دید.
-5. سپس، با استفاده از دادههای آزمایشی، یک پیشبینی ایجاد کنید، با استفاده از تابع `predict()`. این برای رسم خط بین گروههای داده استفاده خواهد شد.
+5. سپس با استفاده از دادههای تست، پیشبینی ایجاد کنید، با استفاده از تابع `predict()`. این برای رسم خط میان گروههای داده مدل استفاده خواهد شد.
```python
y_pred = model.predict(X_test)
```
-6. اکنون زمان نمایش دادهها در یک نمودار است. Matplotlib یک ابزار بسیار مفید برای این کار است. یک نمودار پراکندگی از تمام دادههای آزمایشی X و y ایجاد کنید، و از پیشبینی برای رسم یک خط در مناسبترین مکان، بین گروههای داده مدل استفاده کنید.
+6. اکنون زمان نمایش دادهها با یک نمودار است. Matplotlib ابزاری بسیار مفید برای این کار است. یک scatterplot از تمام دادههای تست X و y ایجاد کنید، و با استفاده از پیشبینی خط را در مناسبترین محل بین گروههای داده مدل رسم کنید.
```python
plt.scatter(X_test, y_test, color='black')
@@ -202,29 +203,32 @@ Scikit-learn ساخت مدلها و ارزیابی آنها برای اس
plt.show()
```
- 
-✅ کمی فکر کنید که اینجا چه اتفاقی میافتد. یک خط مستقیم از میان نقاط کوچک زیادی از داده عبور میکند، اما دقیقاً چه کاری انجام میدهد؟ آیا میتوانید ببینید که چگونه باید بتوانید از این خط برای پیشبینی محل قرارگیری یک نقطه داده جدید و دیدهنشده نسبت به محور y نمودار استفاده کنید؟ سعی کنید کاربرد عملی این مدل را به زبان بیاورید.
+ 
+
-تبریک میگویم، شما اولین مدل رگرسیون خطی خود را ساختید، با آن یک پیشبینی انجام دادید و آن را در یک نمودار نمایش دادید!
+ ✅ کمی فکر کنید دربارهی آنچه اینجا اتفاق میافتد. یک خط مستقیم از میان بسیاری نقاط کوچک داده عبور میکند، اما دقیقاً چه کاری انجام میدهد؟ آیا میتوانید ببینید چگونه باید بتوانید از این خط استفاده کنید تا پیشبینی کنید یک نقطه داده جدید و دیده نشده باید نسبت به محور y نمودار کجا قرار گیرد؟ سعی کنید کاربرد عملی این مدل را به زبان بیاورید.
+
+تبریک میگویم، شما اولین مدل رگرسیون خطی خود را ساختید، با آن پیشبینی انجام دادید و آن را در یک نمودار نمایش دادید!
---
## 🚀چالش
-یک متغیر دیگر از این مجموعه داده را رسم کنید. نکته: این خط را ویرایش کنید: `X = X[:,2]`. با توجه به هدف این مجموعه داده، چه چیزی میتوانید درباره پیشرفت بیماری دیابت کشف کنید؟
-
+یک متغیر متفاوت از این مجموعه داده رسم کنید. راهنمایی: این خط را ویرایش کنید: `X = X[:,2]`. با توجه به هدف این مجموعه داده، چه چیزهایی میتوانید درباره پیشرفت بیماری دیابت کشف کنید؟
## [آزمون پس از درس](https://ff-quizzes.netlify.app/en/ml/)
-## مرور و مطالعه شخصی
+## مرور و خودآموزی
-در این آموزش، شما با رگرسیون خطی ساده کار کردید، نه رگرسیون تکمتغیره یا چندمتغیره. کمی درباره تفاوتهای این روشها بخوانید یا به [این ویدیو](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) نگاهی بیندازید.
+در این آموزش، شما با رگرسیون خطی ساده کار کردید، نه رگرسیون خطی تکمتغیره یا چندگانه. کمی درباره تفاوتهای این روشها بخوانید، یا به [این ویدیو](https://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) را بگیرید تا درک خود را عمیقتر کنید.
+بیشتر درباره مفهوم رگرسیون بخوانید و فکر کنید که چه نوع سوالاتی را میتوان با این تکنیک پاسخ داد. این [آموزش](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) را برای تعمیق درک خود بگذرانید.
-## تکلیف
+## تمرین
[یک مجموعه داده متفاوت](assignment.md)
---
-**سلب مسئولیت**:
-این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش میکنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است شامل خطاها یا نادرستیها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، توصیه میشود از ترجمه حرفهای انسانی استفاده کنید. ما مسئولیتی در قبال سوء تفاهمها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم.
\ No newline at end of file
+
+**سلب مسئولیت**:
+این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما در تلاش برای دقت هستیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است شامل خطاها یا نادرستیهایی باشند. سند اصلی به زبان مادری خود باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حیاتی، ترجمه حرفهای انسانی توصیه میشود. ما در قبال هرگونه سوء تفاهم یا برداشت نادرست ناشی از استفاده از این ترجمه مسئولیتی نداریم.
+
\ No newline at end of file
diff --git a/translations/fa/2-Regression/2-Data/README.md b/translations/fa/2-Regression/2-Data/README.md
index a3bd8df95..ce0081aad 100644
--- a/translations/fa/2-Regression/2-Data/README.md
+++ b/translations/fa/2-Regression/2-Data/README.md
@@ -1,62 +1,62 @@
-# ساخت مدل رگرسیون با استفاده از Scikit-learn: آمادهسازی و مصورسازی دادهها
+# ساخت مدل رگرسیون با استفاده از Scikit-learn: آمادهسازی و تجسم دادهها
-
+
اینفوگرافیک توسط [Dasani Madipalli](https://twitter.com/dasani_decoded)
-## [آزمون پیش از درس](https://ff-quizzes.netlify.app/en/ml/)
+## [آزمون پیشدرس](https://ff-quizzes.netlify.app/en/ml/)
> ### [این درس به زبان R نیز موجود است!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
## مقدمه
-حالا که ابزارهای لازم برای شروع ساخت مدلهای یادگیری ماشین با Scikit-learn را آماده کردهاید، آمادهاید تا سوالاتی از دادههای خود بپرسید. هنگام کار با دادهها و اعمال راهحلهای یادگیری ماشین، بسیار مهم است که بدانید چگونه سوالات درست بپرسید تا بتوانید پتانسیلهای دادههای خود را به درستی کشف کنید.
+حال که ابزارهای لازم برای شروع ساخت مدل ماشین لرنینگ با Scikit-learn را آماده کردهاید، آمادهاید که شروع به پرسیدن سوال از دادههای خود کنید. هنگام کار با دادهها و اعمال راهحلهای ML، بسیار مهم است که بدانید چگونه سوال درست را بپرسید تا به طور صحیح پتانسیلهای مجموعه داده شما باز شود.
-در این درس، یاد خواهید گرفت:
+در این درس، شما یاد خواهید گرفت:
- چگونه دادههای خود را برای ساخت مدل آماده کنید.
-- چگونه از Matplotlib برای مصورسازی دادهها استفاده کنید.
+- چگونه از Matplotlib برای تجسم دادهها استفاده کنید.
+- چگونه از Seaborn برای تجسم دادههای بیانگرتر استفاده کنید.
-## پرسیدن سوالات درست از دادهها
+## پرسیدن سوال صحیح از دادههای شما
-سوالی که نیاز دارید به آن پاسخ داده شود، نوع الگوریتمهای یادگیری ماشین که استفاده خواهید کرد را تعیین میکند. کیفیت پاسخی که دریافت میکنید نیز به شدت به ماهیت دادههای شما وابسته است.
+سوالی که باید پاسخ داده شود نوع الگوریتمهای ML مورد استفاده را تعیین میکند. و کیفیت پاسخی که دریافت میکنید به شدت به ماهیت داده شما بستگی دارد.
-به [دادهها](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) ارائهشده برای این درس نگاهی بیندازید. میتوانید این فایل .csv را در VS Code باز کنید. یک نگاه سریع نشان میدهد که دادهها شامل جاهای خالی و ترکیبی از رشتهها و دادههای عددی هستند. همچنین یک ستون عجیب به نام 'Package' وجود دارد که دادههای آن ترکیبی از 'sacks'، 'bins' و مقادیر دیگر است. در واقع، دادهها کمی بههمریخته هستند.
+نگاهی به [دادهها](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) ارائه شده برای این درس بیندازید. میتوانید این فایل .csv را در VS Code باز کنید. نگاه کوتاهی فوراً نشان میدهد که جاهای خالی وجود دارد و ترکیبی از دادههای متنی و عددی است. همچنین ستونی عجیب به نام 'Package' وجود دارد که دادههای آن ترکیبی از 'کیسهها'، 'سطلها' و مقادیر دیگر است. در واقع، دادهها کمی درهمبرهم هستند.
-[](https://youtu.be/5qGjczWTrDQ "یادگیری ماشین برای مبتدیان - چگونه یک مجموعه داده را تحلیل و پاکسازی کنیم")
+[](https://youtu.be/5qGjczWTrDQ "ML برای مبتدیان - چگونه یک مجموعه داده را تحلیل و پاکسازی کنیم")
-> 🎥 روی تصویر بالا کلیک کنید تا یک ویدئوی کوتاه درباره آمادهسازی دادهها برای این درس مشاهده کنید.
+> 🎥 برای مشاهده ویدیوی کوتاه درباره آمادهسازی دادهها برای این درس، روی تصویر بالا کلیک کنید.
-در واقع، بسیار نادر است که یک مجموعه داده کاملاً آماده برای استفاده جهت ساخت مدل یادگیری ماشین به شما داده شود. در این درس، یاد خواهید گرفت که چگونه یک مجموعه داده خام را با استفاده از کتابخانههای استاندارد پایتون آماده کنید. همچنین تکنیکهای مختلفی برای مصورسازی دادهها خواهید آموخت.
+در واقع، معمولاً مجموعه دادهای که کاملاً آماده استفاده برای ساخت مدل ML باشد از ابتدا ارائه نمیشود. در این درس، شما یاد میگیرید چگونه یک مجموعه داده خام را با استفاده از کتابخانههای استاندارد پایتون آماده کنید. همچنین تکنیکهای مختلفی برای تجسم دادهها خواهید آموخت.
-## مطالعه موردی: 'بازار کدو تنبل'
+## مطالعه موردی: «بازار کدو تنبل»
-در این پوشه، یک فایل .csv در پوشه اصلی `data` به نام [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) وجود دارد که شامل 1757 خط داده درباره بازار کدو تنبل است، که بر اساس شهرها گروهبندی شدهاند. این دادهها خام هستند و از [گزارشهای استاندارد بازارهای محصولات خاص](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) که توسط وزارت کشاورزی ایالات متحده منتشر شدهاند، استخراج شدهاند.
+در این پوشه، فایلی با فرمت .csv با نام [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) در پوشه ریشه `data` پیدا خواهید کرد که شامل 1757 خط داده درباره بازار کدو تنبلها است که بر اساس شهر گروهبندی شده است. این داده خام استخراج شده از گزارشهای استاندارد بازار ترمینال محصولات تخصصی ([Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice)) منتشر شده توسط وزارت کشاورزی ایالات متحده است.
### آمادهسازی دادهها
-این دادهها در حوزه عمومی قرار دارند. میتوان آنها را از وبسایت USDA در فایلهای جداگانه، برای هر شهر، دانلود کرد. برای جلوگیری از داشتن فایلهای جداگانه زیاد، ما تمام دادههای شهرها را در یک صفحه گسترده ترکیب کردهایم، بنابراین تا حدی دادهها را _آمادهسازی_ کردهایم. حالا بیایید نگاهی دقیقتر به دادهها بیندازیم.
+این دادهها در مالکیت عمومی هستند. میتوان آنها را از وبسایت USDA در چندین فایل جداگانه، بر اساس شهر، دانلود کرد. برای جلوگیری از فایلهای جداگانه زیاد، ما تمام دادههای شهرها را در یک صفحه گسترده concatenated کردهایم، بنابراین ما دادهها را کمی _آماده_ کردهایم. حالا، بیایید نگاهی دقیقتر به دادهها بیندازیم.
-### دادههای کدو تنبل - نتیجهگیری اولیه
+### داده کدو تنبل - نتیجهگیری اولیه
-چه چیزی در مورد این دادهها متوجه میشوید؟ قبلاً دیدید که ترکیبی از رشتهها، اعداد، جاهای خالی و مقادیر عجیب وجود دارد که باید آنها را درک کنید.
+درباره این دادهها چه میبینید؟ شما قبلاً دیدید که ترکیبی از رشتهها، اعداد، جاهای خالی و مقادیر عجیب وجود دارد که باید مفهوم آنها را فهمید.
-چه سوالی میتوانید از این دادهها بپرسید، با استفاده از تکنیک رگرسیون؟ مثلاً "پیشبینی قیمت کدو تنبل برای فروش در یک ماه خاص". با نگاه دوباره به دادهها، تغییراتی وجود دارد که باید انجام دهید تا ساختار دادهها را برای این وظیفه ایجاد کنید.
+چه سوالی میتوانید با استفاده از تکنیک رگرسیون از این دادهها بپرسید؟ مثلاً "پیشبینی قیمت یک کدو تنبل برای فروش در یک ماه خاص". دوباره به دادهها نگاه کنید، تغییراتی هست که باید انجام دهید تا ساختار داده لازم برای این کار ایجاد شود.
+## تمرین - تحلیل داده کدو تنبل
-## تمرین - تحلیل دادههای کدو تنبل
+بیایید از [Pandas](https://pandas.pydata.org/) (نام آن مخفف تحلیل دادههای پایتون است)، که ابزاری بسیار مفید برای شکل دادن به دادههاست، استفاده کنیم تا این داده کدو تنبل را تحلیل و آماده کنیم.
-بیایید از [Pandas](https://pandas.pydata.org/) (نام آن مخفف `Python Data Analysis` است)، ابزاری بسیار مفید برای شکلدهی دادهها، استفاده کنیم تا دادههای کدو تنبل را تحلیل و آماده کنیم.
+### ابتدا، بررسی برای تاریخهای غایب
-### ابتدا، بررسی تاریخهای گمشده
+ابتدا باید اقداماتی برای بررسی وجود تاریخهای گمشده انجام دهید:
-ابتدا باید اقداماتی برای بررسی تاریخهای گمشده انجام دهید:
+1. تاریخها را به فرمت ماه تبدیل کنید (اینها تاریخهای آمریکایی هستند، بنابراین فرمت `MM/DD/YYYY` است).
+2. ماه را استخراج کرده و در ستون جدیدی قرار دهید.
-1. تاریخها را به فرمت ماه تبدیل کنید (اینها تاریخهای ایالات متحده هستند، بنابراین فرمت آنها `MM/DD/YYYY` است).
-2. ماه را به یک ستون جدید استخراج کنید.
+فایل _notebook.ipynb_ را در Visual Studio Code باز کرده و صفحه گسترده را به یک dataframe جدید Pandas وارد کنید.
-فایل _notebook.ipynb_ را در Visual Studio Code باز کنید و صفحه گسترده را به یک دیتافریم جدید Pandas وارد کنید.
-
-1. از تابع `head()` برای مشاهده پنج ردیف اول استفاده کنید.
+1. با استفاده از تابع `head()` پنج ردیف اول را مشاهده کنید.
```python
import pandas as pd
@@ -64,30 +64,30 @@
pumpkins.head()
```
- ✅ از چه تابعی برای مشاهده پنج ردیف آخر استفاده میکنید؟
+ ✅ چه تابعی را برای مشاهده پنج ردیف آخر استفاده میکنید؟
-1. بررسی کنید که آیا دادههای گمشده در دیتافریم فعلی وجود دارد:
+1. بررسی کنید که آیا دادهای در dataframe فعلی گم شده است یا خیر:
```python
pumpkins.isnull().sum()
```
- دادههای گمشده وجود دارند، اما شاید برای وظیفه مورد نظر اهمیتی نداشته باشند.
+ دادهای گم شده وجود دارد، اما شاید برای کار جاری مهم نباشد.
-1. برای آسانتر کردن کار با دیتافریم خود، فقط ستونهایی را که نیاز دارید انتخاب کنید، با استفاده از تابع `loc` که از دیتافریم اصلی گروهی از ردیفها (به عنوان پارامتر اول) و ستونها (به عنوان پارامتر دوم) استخراج میکند. عبارت `:` در مثال زیر به معنای "همه ردیفها" است.
+1. برای راحتتر کردن کار با dataframe، فقط ستونهای مورد نیاز را انتخاب کنید، با استفاده از تابع `loc` که از dataframe اصلی گروهی از ردیفها (پارامتر اول) و ستونها (پارامتر دوم) را استخراج میکند. عبارت `:` در اینجا به معنی "همه ردیفها" است.
```python
columns_to_select = ['Package', 'Low Price', 'High Price', 'Date']
pumpkins = pumpkins.loc[:, columns_to_select]
```
-### دوم، تعیین میانگین قیمت کدو تنبل
+### دوم، تعیین قیمت متوسط کدو تنبل
-فکر کنید چگونه میتوانید میانگین قیمت کدو تنبل را در یک ماه خاص تعیین کنید. برای این وظیفه چه ستونهایی را انتخاب میکنید؟ نکته: شما به 3 ستون نیاز دارید.
+به این فکر کنید که چگونه میتوان قیمت متوسط یک کدو تنبل در یک ماه مشخص را تعیین کرد. برای این کار از چه ستونهایی باید استفاده کنید؟ نکته: شما به 3 ستون نیاز خواهید داشت.
-راهحل: میانگین ستونهای `Low Price` و `High Price` را محاسبه کنید تا ستون جدید Price را پر کنید، و ستون Date را به گونهای تبدیل کنید که فقط ماه را نشان دهد. خوشبختانه، طبق بررسی بالا، هیچ داده گمشدهای برای تاریخها یا قیمتها وجود ندارد.
+راه حل: میانگین ستونهای `Low Price` و `High Price` را بگیرید تا ستون قیمت جدید پر شود، و ستون تاریخ را فقط به ماه تبدیل کنید. خوشبختانه، بر اساس بررسی فوق، دادههایی برای تاریخها یا قیمتها گم نیست.
-1. برای محاسبه میانگین، کد زیر را اضافه کنید:
+1. برای محاسبه متوسط، کد زیر را اضافه کنید:
```python
price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2
@@ -96,37 +96,37 @@
```
- ✅ هر دادهای را که دوست دارید بررسی کنید با استفاده از `print(month)` چاپ کنید.
+ ✅ اگر میخواهید دادهها را بررسی کنید، میتوانید با `print(month)` آنها را چاپ کنید.
-2. حالا دادههای تبدیلشده خود را به یک دیتافریم جدید Pandas کپی کنید:
+2. حال، داده تبدیلشده را در dataframe جدید Pandas کپی کنید:
```python
new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price})
```
- چاپ دیتافریم شما یک مجموعه داده تمیز و مرتب را نشان میدهد که میتوانید مدل رگرسیون جدید خود را بر اساس آن بسازید.
+ چاپ dataframe شما نشاندهنده مجموعه دادهای تمیز و مرتب است که میتوانید مدل رگرسیون جدید خود را بسازید.
-### اما صبر کنید! چیزی عجیب اینجا وجود دارد
+### اما صبر کنید! یک چیز عجیب وجود دارد
-اگر به ستون `Package` نگاه کنید، کدو تنبلها در پیکربندیهای مختلفی فروخته میشوند. برخی در اندازههای '1 1/9 bushel'، برخی در اندازههای '1/2 bushel'، برخی به ازای هر کدو تنبل، برخی به ازای هر پوند، و برخی در جعبههای بزرگ با عرضهای مختلف فروخته میشوند.
+اگر به ستون `Package` نگاه کنید، میبینید که کدو تنبلها به شکلهای مختلف فروخته میشوند. برخی به صورت '1 1/9 بوشل'، برخی به صورت '1/2 بوشل'، برخی به صورت کدو تنبلهای جداگانه، برخی به صورت پوند و برخی در جعبههای بزرگ با عرضهای متفاوت.
-> به نظر میرسد وزن کردن کدو تنبلها به طور مداوم بسیار دشوار است
+> کدو تنبلها به نظر میرسد بسیار سخت به صورت یکسان بر اساس وزن دستهبندی شوند
-با بررسی دادههای اصلی، جالب است که هر چیزی که `Unit of Sale` برابر با 'EACH' یا 'PER BIN' دارد، همچنین نوع `Package` آن به ازای اینچ، به ازای هر جعبه، یا 'each' است. به نظر میرسد وزن کردن کدو تنبلها به طور مداوم بسیار دشوار است، بنابراین بیایید آنها را با انتخاب فقط کدو تنبلهایی که رشته 'bushel' در ستون `Package` دارند، فیلتر کنیم.
+با بررسی داده اصلی، جالب است که هر دادهای که مقدار `Unit of Sale` آن 'EACH' یا 'PER BIN' باشد، نوع `Package` آن نیز به صورت اندازه بر اینچ، بر سطل، یا 'هرکدام' است. به نظر میرسد کدو تنبلها بسیار سخت بتوانند به صورت یکنواخت وزنکشی شوند، پس بیایید فقط کدو تنبلهای دارای رشته 'bushel' در ستون `Package` خود را فیلتر کنیم.
-1. یک فیلتر در بالای فایل، زیر وارد کردن اولیه .csv اضافه کنید:
+1. فیلتر را در بالای فایل، زیر وارد کردن اولیه .csv اضافه کنید:
```python
pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]
```
- اگر اکنون دادهها را چاپ کنید، میتوانید ببینید که فقط حدود 415 ردیف داده شامل کدو تنبلها به ازای هر بوشل را دریافت میکنید.
+ اگر دادهها را اکنون چاپ کنید، خواهید دید که فقط حدود 415 ردیف داده که شامل کدو تنبل به صورت بوشل هستند را دریافت میکنید.
-### اما صبر کنید! یک کار دیگر باید انجام شود
+### اما صبر کنید! یک چیز دیگر هم هست که باید انجام دهید
-آیا متوجه شدید که مقدار بوشل در هر ردیف متفاوت است؟ شما باید قیمتگذاری را نرمالسازی کنید تا قیمت به ازای هر بوشل را نشان دهید، بنابراین کمی محاسبه انجام دهید تا آن را استاندارد کنید.
+آیا متوجه شدهاید که مقدار بوشل در هر ردیف متفاوت است؟ شما باید قیمتها را نرمال کنید تا قیمتها بر اساس هر بوشل نمایش داده شوند، پس محاسباتی برای استانداردسازی انجام دهید.
-1. این خطوط را بعد از بلوک ایجاد دیتافریم new_pumpkins اضافه کنید:
+1. این خطوط را بعد از بلاک ایجاد dataframe جدید _new_pumpkins_ اضافه کنید:
```python
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9)
@@ -134,38 +134,38 @@
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2)
```
-✅ طبق [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308)، وزن یک بوشل به نوع محصول بستگی دارد، زیرا این یک اندازهگیری حجمی است. "یک بوشل گوجهفرنگی، به عنوان مثال، باید 56 پوند وزن داشته باشد... برگها و سبزیجات فضای بیشتری با وزن کمتر اشغال میکنند، بنابراین یک بوشل اسفناج فقط 20 پوند است." این همه بسیار پیچیده است! بیایید به تبدیل بوشل به پوند نپردازیم و به جای آن قیمتگذاری به ازای بوشل را انجام دهیم. تمام این مطالعه درباره بوشلهای کدو تنبل، با این حال، نشان میدهد که چقدر مهم است که ماهیت دادههای خود را درک کنید!
+✅ بر اساس بررسی [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308)، وزن یک بوشل به نوع محصول بستگی دارد چون این یک اندازهگیری حجمی است. "یک بوشل گوجهفرنگی، مثلاً، قرار است 56 پوند وزن داشته باشد... برگها و سبزیجات فضای بیشتری اشغال میکنند ولی وزن کمتری دارند، بنابراین یک بوشل اسفناج فقط 20 پوند است." همه اینها کمی پیچیده است! بیا تبدیل بوشل به پوند را کنار بگذاریم و قیمت را بر اساس بوشل در نظر بگیریم. با این حال، این مطالعه در مورد بوشلهای کدو تنبل نشان میدهد چقدر مهم است که ماهیت دادهها را درک کنیم!
-حالا میتوانید قیمتگذاری به ازای واحد را بر اساس اندازهگیری بوشل تحلیل کنید. اگر دادهها را یک بار دیگر چاپ کنید، میتوانید ببینید که چگونه استاندارد شدهاند.
+اکنون میتوانید قیمتگذاری بر اساس واحد بر اساس اندازهگیری بوشل آنها را تحلیل کنید. اگر یک بار دیگر دادهها را چاپ کنید، خواهید دید که چگونه استاندارد شده است.
-✅ آیا متوجه شدید که کدو تنبلهایی که به ازای نیمبوشل فروخته میشوند بسیار گران هستند؟ آیا میتوانید دلیل آن را پیدا کنید؟ نکته: کدو تنبلهای کوچک بسیار گرانتر از کدو تنبلهای بزرگ هستند، احتمالاً به این دلیل که تعداد بیشتری از آنها در هر بوشل وجود دارد، با توجه به فضای خالی که توسط یک کدو تنبل بزرگ توخالی اشغال میشود.
+✅ متوجه شدهاید کدو تنبلهایی که نصف بوشل فروخته میشوند بسیار گرانترند؟ میتوانید دلیل آن را حدس بزنید؟ نکته: کدو تنبلهای کوچک احتمالاً خیلی گرانترند چون تعدادشان در هر بوشل خیلی بیشتر است، به دلیل فضای بلااستفادهای که یک کدو تنبل بزرگ توخالی اشغال میکند.
-## استراتژیهای مصورسازی
+## استراتژیهای تجسم دادهها
-بخشی از نقش دانشمند داده این است که کیفیت و ماهیت دادههایی که با آنها کار میکند را نشان دهد. برای این کار، آنها اغلب مصورسازیهای جالبی، مانند نمودارها، گرافها و چارتها، ایجاد میکنند که جنبههای مختلف دادهها را نشان میدهند. به این ترتیب، آنها میتوانند روابط و شکافهایی را که در غیر این صورت سخت است کشف شوند، به صورت بصری نشان دهند.
+بخشی از نقش دانشمند داده این است که کیفیت و ماهیت دادههایی را که با آنها کار میکند نشان دهد. برای این منظور، اغلب تجسمهای جالب، یا نمودارها، گرافها و چارتهای مختلفی ایجاد میکنند که جنبههای متفاوت داده را نمایش میدهد. به این ترتیب، آنها میتوانند روابط و شکافهایی که سخت قابل کشف هستند را بهصورت بصری نشان دهند.
-[](https://youtu.be/SbUkxH6IJo0 "یادگیری ماشین برای مبتدیان - چگونه دادهها را با Matplotlib مصورسازی کنیم")
+[](https://youtu.be/SbUkxH6IJo0 "ML برای مبتدیان - چگونه با Matplotlib دادهها را تجسم کنیم")
-> 🎥 روی تصویر بالا کلیک کنید تا یک ویدئوی کوتاه درباره مصورسازی دادهها برای این درس مشاهده کنید.
+> 🎥 برای مشاهده ویدیوی کوتاه درباره تجسم دادهها برای این درس، روی تصویر بالا کلیک کنید.
-مصورسازیها همچنین میتوانند به تعیین تکنیک یادگیری ماشین مناسب برای دادهها کمک کنند. یک نمودار پراکندگی که به نظر میرسد یک خط را دنبال میکند، به عنوان مثال، نشان میدهد که دادهها کاندیدای خوبی برای یک تمرین رگرسیون خطی هستند.
+تجسمها همچنین میتوانند در تعیین مناسبترین تکنیک ماشین لرنینگ برای دادهها کمک کنند. مثلاً یک نمودار پراکندگی که به نظر میرسد یک خط را دنبال میکند، نشان میدهد که دادهها گزینه خوبی برای تمرین رگرسیون خطی هستند.
-یکی از کتابخانههای مصورسازی داده که در نوتبوکهای Jupyter خوب کار میکند، [Matplotlib](https://matplotlib.org/) است (که در درس قبلی نیز آن را دیدید).
+یکی از کتابخانههای تجسم داده که در نوتبوکهای Jupyter خوب کار میکند، [Matplotlib](https://matplotlib.org/) است (که قبلاً هم در درس قبل آن را دیدهاید).
-> تجربه بیشتری در مصورسازی دادهها در [این آموزشها](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott) کسب کنید.
+> تجربه بیشتر با تجسم دادهها در [این آموزشها](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott) کسب کنید.
## تمرین - آزمایش با Matplotlib
-سعی کنید برخی نمودارهای پایه برای نمایش دیتافریم جدیدی که ایجاد کردهاید، بسازید. یک نمودار خطی پایه چه چیزی را نشان میدهد؟
+سعی کنید چند نمودار پایه برای نمایش dataframe جدیدی که ساختهاید ایجاد کنید. یک نمودار خطی ساده چه چیزی را نشان میدهد؟
-1. Matplotlib را در بالای فایل، زیر وارد کردن Pandas وارد کنید:
+1. Matplotlib را در بالای فایل، زیر وارد کردن Pandas، وارد کنید:
```python
import matplotlib.pyplot as plt
```
-1. کل نوتبوک را دوباره اجرا کنید تا تازه شود.
-1. در پایین نوتبوک، یک سلول برای رسم دادهها به صورت جعبه اضافه کنید:
+1. کل نوتبوک را دوباره اجرا کنید تا تازهسازی شود.
+1. در پایین نوتبوک، یک سلول اضافه کنید تا دادهها را به صورت نمودار جعبهای (box plot) رسم کند:
```python
price = new_pumpkins.Price
@@ -174,44 +174,121 @@
plt.show()
```
- 
+ 
- آیا این نمودار مفید است؟ آیا چیزی در مورد آن شما را شگفتزده میکند؟
+ آیا این نمودار مفید است؟ آیا چیزی درباره آن شما را متعجب میکند؟
- این نمودار چندان مفید نیست زیرا فقط دادههای شما را به صورت پراکندگی نقاط در یک ماه خاص نمایش میدهد.
+ این نمودار چندان مفید نیست چون فقط دادههای شما را به صورت پراکندگی نقاط در ماه نمایش میدهد.
### آن را مفید کنید
-برای اینکه نمودارها دادههای مفید را نمایش دهند، معمولاً باید دادهها را به نوعی گروهبندی کنید. بیایید سعی کنیم نموداری ایجاد کنیم که محور y ماهها را نشان دهد و دادهها توزیع دادهها را نشان دهند.
+برای اینکه نمودارها دادههای مفید نشان دهند، معمولاً باید دادهها را به نوعی گروهبندی کنید. بیایید امتحان کنیم نموداری بسازیم که محور y ماهها را نشان دهد و داده توزیع دادهها را نمایش دهد.
-1. یک سلول برای ایجاد نمودار میلهای گروهبندیشده اضافه کنید:
+1. یک سلول اضافه کنید تا نمودار میلهای گروهبندی شده بسازد:
```python
new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar')
plt.ylabel("Pumpkin Price")
```
- 
+ 
+
+ این تجسم داده مفیدتری است! به نظر میرسد بالاترین قیمت کدو تنبل در سپتامبر و اکتبر رخ میدهد. آیا این با انتظار شما مطابقت دارد؟ چرا یا چرا نه؟
+
+## تمرین - آزمایش با Seaborn
+
+Matplotlib قدرتمند است، اما ممکن است نیاز به کد زیادی برای ساخت یک نمودار صیقلخورده باشد. [Seaborn](https://seaborn.pydata.org/) کتابخانهای است که _روی_ Matplotlib ساخته شده و برای تجسم دادههای آماری طراحی شده است. این کتابخانه مستقیماً با dataframes پاندا کار میکند، استایلهای پیشفرض جذابی دارد و اجازه میدهد نمودارهای آموزنده با کد بسیار کمتر بسازید. چون Seaborn اشیای Matplotlib را بازمیگرداند، شما هنوز میتوانید هر چیزی که درباره Matplotlib میدانید را برای ریزهکاری نتایج استفاده کنید.
+
+> اگر Seaborn را نصب ندارید، با `pip install seaborn` آن را نصب کنید.
+
+1. Seaborn را در بالای نوتبوک، زیر سایر واردات، وارد کنید. بهطور قراردادی به صورت `sns` وارد میشود:
+
+ ```python
+ import seaborn as sns
+ ```
+
+### نمودارهای پراکندگی برای نمایش روابط
+
+بخش بزرگ کاوش دادهها قبل از ساخت مدل، جستجوی _روابط_ بین متغیرهاست. یک [نمودار پراکندگی](https://en.wikipedia.org/wiki/Scatter_plot) یکی از بهترین ابزارها برای این کار است: اگر نقاط به نظر میرسد یک خط را دنبال کنند، ممکن است دو متغیر همبسته باشند، که نشانه خوبی از کارکرد مدل رگرسیون خطی است.
+
+1. نمودار پراکندگی قیمت به ماه را دوباره ایجاد کنید، این بار با استفاده از [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) (نمودار رابطهای) از Seaborn که مستقیماً با ستونهای dataframe شما کار میکند:
+
+ ```python
+ sns.relplot(x="Price", y="Month", data=new_pumpkins)
+ ```
+
+ 
+
+ توجه کنید چگونه نام ستونها و dataframe را میدهید و Seaborn برچسبهای محورها را برای شما تعیین میکند.
+
+2. میتوانید با دادن `kind="line"` به یک نمودار خطی تغییر دهید. Seaborn حتی نوار سایهداری برای نشان دادن بازه اطمینان در اطراف خط رسم میکند:
+
+ ```python
+ sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins)
+ ```
+
+ 
+
+ این داده خاص نویزی است پس نمودار خطی بهترین انتخاب نیست — اما نشان میدهد چقدر راحت میتوانید نوع نمودار را در Seaborn تغییر دهید.
+
+### نمودارهای میلهای برای نمایش توزیعها
+
+
+پیشتر دادهها را به صورت دستی گروهبندی کردید تا نمودار میلهای با Matplotlib بسازید. تابع [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) در Seaborn (نمودار دستهای) میتواند گروهبندی و تجمیع را برای شما انجام دهد. بهطور پیشفرض `kind="bar"` میانگین هر دسته را به همراه یک خط سیاه که بازه اطمینان را نشان میدهد نمایش میدهد.
+
+1. یک نمودار میلهای از میانگین قیمت در هر ماه بسازید:
+
+ ```python
+ sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar")
+ ```
+
+ 
+
+ این تایید میکند آنچه با Matplotlib دیدید — قیمتها در حوالی ماههای سپتامبر و اکتبر به اوج میرسد — اما Seaborn همچنین نشان میدهد که قیمت در هر ماه چقدر _متغیر_ است.
+
+### نقشههای حرارتی برای نمایش همبستگیها
+
+نمودارهای پراکندگی دو متغیر را با هم مقایسه میکنند. وقتی چندین ستون عددی دارید، [نقشه حرارتی](https://en.wikipedia.org/wiki/Heat_map) به شما اجازه میدهد قویبودن رابطه بین _هر_ جفت ستون را به صورت همزمان ببینید. این روش رایجی است برای تشخیص ویژگیهایی که بیشترین همبستگی را دارند قبل از انتخاب دادهها برای مدل (و همین نوع نمودار بعدها برای نمایش ماتریسهای خطا در طبقهبندی استفاده میشود).
+
+1. با Pandas یک ماتریس همبستگی بسازید، سپس با تابع [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html) از Seaborn آن را رسم کنید. گزینه `annot=True` مقادیر همبستگی را در هر سلول نشان میدهد:
+
+ ```python
+ correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()
+ sns.heatmap(correlations, annot=True, cmap="coolwarm")
+ ```
+
+ 
+
+ مقادیری نزدیک به `1` (یا `-1`) به این معنی است که ستونها بهشدت با هم _خطی_ همبسته هستند. ببینید چطور `Low Price` و `High Price` تقریباً به طور کامل همبستهاند. از سوی دیگر، `Month` فقط همبستگی خطی ضعیفی با قیمت نشان میدهد — حتی اگر نمودار میلهای فوق اوج فصلی روشنی در سپتامبر و اکتبر را نمایش داده است. این یک درس مهم است: ضریب همبستگی فقط روابط _خط مستقیم_ را اندازهگیری میکند، بنابراین ممکن است الگوهای فصلی یا غیرخطی را نادیده بگیرد. ✅ چرا نگاهکردن همزمان به نقشه حرارتی *و* نمودارهای مثل نمودار میلهای قبل از تصمیمگیری درباره ستونهایی که استفاده میکنید مفید است؟
+
+### Matplotlib یا Seaborn؟
+
+هر دو کتابخانه ارزش یادگیری دارند:
+
+- **Matplotlib** کنترل دقیق روی هر عنصر یک نمودار را به شما میدهد و پایهای است که تقریباً هر کتابخانه رسم دیگری در پایتون روی آن ساخته شده است.
+- **Seaborn** توابع سطح بالاتر و پیشفرضهای جذابی برای نمودارهای آماری ارائه میدهد، مستقیما با دیتافریم کار میکند، و اغلب برای تحلیل اکتشافی داده سریعتر است.
- این یک مصورسازی داده مفیدتر است! به نظر میرسد که بالاترین قیمت برای کدو تنبلها در ماههای سپتامبر و اکتبر رخ میدهد. آیا این مطابق انتظار شماست؟ چرا یا چرا نه؟
+جریان کاری رایج این است که برای اکتشاف سریع دادهها به سراغ Seaborn بروید، سپس در صورت نیاز به جزئیات سفارشی به Matplotlib رجوع کنید.
---
## 🚀چالش
-انواع مختلف مصورسازیهایی که Matplotlib ارائه میدهد را بررسی کنید. کدام نوعها برای مسائل رگرسیون مناسبتر هستند؟
+انواع مختلف تجسمی که Matplotlib و Seaborn ارائه میدهند را بررسی کنید. کدام نوعها برای مسائل رگرسیون مناسبتر هستند؟
## [آزمون پس از درس](https://ff-quizzes.netlify.app/en/ml/)
-## مرور و مطالعه شخصی
+## مرور و خودآموزی
-به روشهای مختلف مصورسازی دادهها نگاهی بیندازید. لیستی از کتابخانههای مختلف موجود تهیه کنید و مشخص کنید کدام برای انواع خاصی از وظایف مناسبتر هستند، مثلاً مصورسازیهای 2D در مقابل 3D. چه چیزی کشف میکنید؟
+نگاهی به روشهای مختلف تجسم داده بیندازید. فهرستی از کتابخانههای مختلف موجود تهیه کنید و مشخص کنید کدام برای انواع خاصی از وظایف بهتر هستند، مثلاً تجسم دوبعدی در مقابل سهبعدی. چه نکتهای کشف میکنید؟
-## تکلیف
+## تمرین
-[بررسی مصورسازی](assignment.md)
+[کاوش تجسم](assignment.md)
---
-**سلب مسئولیت**:
-این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش میکنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است شامل خطاها یا نادرستیها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، توصیه میشود از ترجمه حرفهای انسانی استفاده کنید. ما مسئولیتی در قبال سوء تفاهمها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم.
\ No newline at end of file
+
+**سلب مسئولیت**:
+این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما در تلاش برای دقت هستیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است شامل خطاها یا نادرستیهایی باشند. سند اصلی به زبان مادری خود باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حیاتی، ترجمه حرفهای انسانی توصیه میشود. ما در قبال هرگونه سوء تفاهم یا برداشت نادرست ناشی از استفاده از این ترجمه مسئولیتی نداریم.
+
\ No newline at end of file
diff --git a/translations/fa/2-Regression/2-Data/solution/notebook.ipynb b/translations/fa/2-Regression/2-Data/solution/notebook.ipynb
index 58820872b..3f729cfec 100644
--- a/translations/fa/2-Regression/2-Data/solution/notebook.ipynb
+++ b/translations/fa/2-Regression/2-Data/solution/notebook.ipynb
@@ -4,7 +4,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## رگرسیون خطی برای کدو تنبل - درس ۲\n"
+ "## رگرسیون خطی برای کدو حلوایی - درس ۲\n"
]
},
{
@@ -222,6 +222,7 @@
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
"pumpkins = pd.read_csv('../../data/US-pumpkins.csv')\n",
"\n",
"pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]\n",
@@ -385,18 +386,78 @@
"plt.ylabel(\"Pumpkin Price\")"
]
},
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## تجسم دادهها با Seaborn\n",
+ "\n",
+ "[Seaborn](https://seaborn.pydata.org/) بر پایه Matplotlib ساخته شده است و مستقیماً با دیتافریمها کار میکند، که ایجاد نمودارهای آماری جذاب را با کد بسیار کم سریع میکند.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### نمودارهای پراکندگی برای نشان دادن روابط\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", kind=\"line\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### نمودارهای میلهای برای نمایش توزیعها\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.catplot(x=\"Month\", y=\"Price\", data=new_pumpkins, kind=\"bar\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### نقشههای حرارتی برای نمایش همبستگیها\n"
+ ]
+ },
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
- "source": []
+ "source": [
+ "correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()\n",
+ "sns.heatmap(correlations, annot=True, cmap=\"coolwarm\")"
+ ]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "\n---\n\n**سلب مسئولیت**: \nاین سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش میکنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است حاوی خطاها یا نادرستیهایی باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفهای انسانی توصیه میشود. ما هیچ مسئولیتی در قبال سوءتفاهمها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم.\n"
+ "---\n\n\n**سلب مسئولیت**:\nاین سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما در تلاش برای دقت هستیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است شامل خطاها یا نادرستیهایی باشند. سند اصلی به زبان مادری خود باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حیاتی، ترجمه حرفهای انسانی توصیه میشود. ما در قبال هرگونه سوء تفاهم یا برداشت نادرست ناشی از استفاده از این ترجمه مسئولیتی نداریم.\n\n"
]
}
],
@@ -426,13 +487,7 @@
"hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d"
}
},
- "orig_nbformat": 2,
- "coopTranslator": {
- "original_hash": "95726f0b8283628d5356a4f8eb8b4b76",
- "translation_date": "2025-09-04T01:36:54+00:00",
- "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
- "language_code": "fa"
- }
+ "orig_nbformat": 2
},
"nbformat": 4,
"nbformat_minor": 2
diff --git a/translations/fa/8-Reinforcement/1-QLearning/README.md b/translations/fa/8-Reinforcement/1-QLearning/README.md
index a5497c0fb..6a7139b4e 100644
--- a/translations/fa/8-Reinforcement/1-QLearning/README.md
+++ b/translations/fa/8-Reinforcement/1-QLearning/README.md
@@ -1,47 +1,47 @@
-# مقدمهای بر یادگیری تقویتی و Q-Learning
+# معرفی یادگیری تقویتی و Q-یادگیری
-
-> اسکچنوت توسط [Tomomi Imura](https://www.twitter.com/girlie_mac)
+
+> اسکچنوت توسط [تامومی ایمورا](https://www.twitter.com/girlie_mac)
-یادگیری تقویتی شامل سه مفهوم مهم است: عامل، حالتها، و مجموعهای از اقدامات برای هر حالت. با انجام یک اقدام در یک حالت مشخص، عامل یک پاداش دریافت میکند. دوباره بازی کامپیوتری سوپر ماریو را تصور کنید. شما ماریو هستید، در یک مرحله بازی، کنار لبه یک پرتگاه ایستادهاید. بالای شما یک سکه قرار دارد. شما که ماریو هستید، در یک مرحله بازی، در یک موقعیت خاص... این حالت شماست. حرکت یک قدم به سمت راست (یک اقدام) شما را به پایین پرتگاه میبرد و این به شما امتیاز عددی پایینی میدهد. اما فشار دادن دکمه پرش به شما اجازه میدهد امتیاز کسب کنید و زنده بمانید. این یک نتیجه مثبت است و باید به شما امتیاز عددی مثبت بدهد.
+یادگیری تقویتی شامل سه مفهوم مهم است: عامل، چند حالت و مجموعهای از اقدامات برای هر حالت. با اجرای یک اقدام در حالت مشخص، به عامل پاداش داده میشود. دوباره بازی کامپیوتری سوپر ماریو را تصور کنید. شما ماریو هستید، در یک سطح بازی، کنار لبه پرتگاه ایستادهاید. بالای شما یک سکه است. شما بهعنوان ماریو، در یک سطح بازی، در موقعیت خاص ... این حالت شماست. رفتن یک قدم به سمت راست (یک اقدام) شما را از لبه پرتگاه میاندازد و این نمره عددی کمی به شما خواهد داد. اما فشردن دکمه پرش به شما امکان میدهد یک امتیاز کسب کنید و زنده بمانید. این یک نتیجه مثبت است و باید به شما نمره عددی مثبت بدهد.
-با استفاده از یادگیری تقویتی و یک شبیهساز (بازی)، میتوانید یاد بگیرید چگونه بازی کنید تا پاداش را به حداکثر برسانید، که شامل زنده ماندن و کسب بیشترین امتیاز ممکن است.
+با استفاده از یادگیری تقویتی و شبیهساز (بازی)، میتوانید یاد بگیرید چگونه بازی کنید تا پاداش را که زنده ماندن و کسب بیشترین امتیاز است، به حداکثر برسانید.
-[](https://www.youtube.com/watch?v=lDq_en8RNOo)
+[](https://www.youtube.com/watch?v=lDq_en8RNOo)
-> 🎥 روی تصویر بالا کلیک کنید تا صحبتهای دیمیتری درباره یادگیری تقویتی را بشنوید
+> 🎥 برای شنیدن توضیحات دیمیتری درباره یادگیری تقویتی، روی تصویر بالا کلیک کنید
-## [پیشآزمون درس](https://ff-quizzes.netlify.app/en/ml/)
+## [آزمون قبل از درس](https://ff-quizzes.netlify.app/en/ml/)
-## پیشنیازها و تنظیمات
+## پیشنیازها و راهاندازی
-در این درس، ما با کدی در پایتون آزمایش خواهیم کرد. شما باید بتوانید کد Jupyter Notebook این درس را روی کامپیوتر خود یا در فضای ابری اجرا کنید.
+در این درس، با برخی کدهای پایتون آزمایش خواهیم کرد. شما باید بتوانید کد دفترچه یادداشت Jupyter این درس را روی کامپیوتر خود یا در جایی در ابر اجرا کنید.
-میتوانید [دفترچه درس](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) را باز کنید و این درس را دنبال کنید تا آن را بسازید.
+میتوانید دفترچه درس [این درس](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) را نیز دریافت کنید، که در کد دفترچه استفاده میشود. آن را در همان دایرکتوری دفترچه قرار دهید.
+> **توجه:** اگر این کد را از ابر باز میکنید، باید فایل [`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) الهام گرفته شده است. ما از **یادگیری تقویتی** استفاده خواهیم کرد تا به پیتر اجازه دهیم محیط خود را کشف کند، سیبهای خوشمزه جمعآوری کند و از ملاقات با گرگ اجتناب کند.
+در این درس، دنیای **[پیتر و گرگ](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)** را کاوش خواهیم کرد، که از قصهای موسیقایی توسط یک آهنگساز روسی، [سرگئی پروکفیف](https://en.wikipedia.org/wiki/Sergei_Prokofiev) الهام گرفته شده است. ما از **یادگیری تقویتی** استفاده خواهیم کرد تا پیتر محیط خود را کاوش کند، سیبهای خوشمزه جمع کند و از دیدار با گرگ اجتناب کند.
-**یادگیری تقویتی** (RL) یک تکنیک یادگیری است که به ما اجازه میدهد رفتار بهینه یک **عامل** را در یک **محیط** با اجرای آزمایشهای متعدد یاد بگیریم. یک عامل در این محیط باید یک **هدف** داشته باشد که توسط یک **تابع پاداش** تعریف شده است.
+یادگیری تقویتی (RL) تکنیکی است که به ما اجازه میدهد رفتار بهینه یک **عامل** را در یک **محیط** با انجام آزمایشهای متعدد یاد بگیریم. عامل در این محیط باید یک **هدف** داشته باشد که توسط یک **تابع پاداش** تعریف میشود.
## محیط
-برای سادگی، دنیای پیتر را به صورت یک تخته مربعی با اندازه `عرض` x `ارتفاع` در نظر بگیریم، مانند این:
+برای سادگی، اجازه دهید دنیای پیتر را یک صفحه مربع به اندازه `width` در `height` در نظر بگیریم، مانند این:
-
+
-هر سلول در این تخته میتواند یکی از موارد زیر باشد:
+هر خانه در این صفحه میتواند یکی از موارد زیر باشد:
-* **زمین**، که پیتر و موجودات دیگر میتوانند روی آن راه بروند.
-* **آب**، که به وضوح نمیتوانید روی آن راه بروید.
-* یک **درخت** یا **چمن**، جایی که میتوانید استراحت کنید.
-* یک **سیب**، که چیزی است که پیتر خوشحال میشود پیدا کند تا خودش را تغذیه کند.
-* یک **گرگ**، که خطرناک است و باید از آن اجتناب کرد.
+* **زمین**، که پیتر و دیگر موجودات میتوانند روی آن راه بروند.
+* **آب**، که البته نمیتوانید روی آن راه بروید.
+* یک **درخت** یا **چمن**، مکانی برای استراحت.
+* یک **سیب**، که نمایانگر چیزی است که پیتر خوشحال میشود آن را پیدا کند و خودش را تغذیه کند.
+* یک **گرگ**، که خطرناک است و باید از آن اجتناب شود.
-یک ماژول جداگانه پایتون، [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py)، وجود دارد که شامل کدی برای کار با این محیط است. از آنجا که این کد برای درک مفاهیم ما مهم نیست، ما ماژول را وارد میکنیم و از آن برای ایجاد تخته نمونه استفاده میکنیم (بلوک کد 1):
+یک ماژول پایتون جداگانه، [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py)، شامل کد کار با این محیط است. چون این کد برای درک مفاهیم ما مهم نیست، ما ماژول را وارد میکنیم و از آن برای ساختن نمونه صفحه استفاده میکنیم (بلوک کد 1):
```python
from rlboard import *
@@ -56,59 +56,59 @@ m.plot()
## اقدامات و سیاست
-در مثال ما، هدف پیتر این است که بتواند یک سیب پیدا کند، در حالی که از گرگ و موانع دیگر اجتناب میکند. برای این کار، او اساساً میتواند در اطراف قدم بزند تا یک سیب پیدا کند.
+در مثال ما، هدف پیتر یافتن سیب است، در حالی که از گرگ و سایر موانع اجتناب میکند. برای انجام این کار، او اساساً میتواند راه برود تا سیب را پیدا کند.
-بنابراین، در هر موقعیت، او میتواند یکی از اقدامات زیر را انتخاب کند: بالا، پایین، چپ و راست.
+بنابراین، در هر موقعیتی، میتواند یکی از اقدامات زیر را انتخاب کند: بالا، پایین، چپ و راست.
-ما این اقدامات را به صورت یک دیکشنری تعریف میکنیم و آنها را به جفتهای تغییرات مختصات مربوطه نگاشت میکنیم. برای مثال، حرکت به راست (`R`) به جفت `(1,0)` مربوط میشود. (بلوک کد 2):
+ما این اقدامات را به صورت یک دیکشنری تعریف میکنیم و آنها را به جفتهای تغییر مختصات متناظر نگاشت میکنیم. برای مثال، حرکت به راست (`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).
+ابتدا مشکل خود را با پیادهسازی استراتژی گام تصادفی حل کنیم. در گام تصادفی، ما اقدام بعدی را به طور تصادفی از میان اقدامات مجاز انتخاب میکنیم تا زمانی که به سیب برسیم (بلوک کد 3).
-1. قدم زدن تصادفی را با کد زیر اجرا کنید:
+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
+ n = 0 # تعداد گامها
+ # تعیین موقعیت اولیه
if start_position:
m.human = start_position
else:
m.random_start()
while True:
if m.at() == Board.Cell.apple:
- return n # success!
+ return n # موفقیت!
if m.at() in [Board.Cell.wolf, Board.Cell.water]:
- return -1 # eaten by wolf or drowned
+ return -1 # خورده شده توسط گرگ یا غرق شده
while True:
a = actions[policy(m)]
new_pos = m.move_pos(m.human,a)
if m.is_valid(new_pos) and m.at(new_pos)!=Board.Cell.water:
- m.move(a) # do the actual move
+ m.move(a) # انجام حرکت واقعی
break
n+=1
walk(m,random_policy)
```
- فراخوانی `walk` باید طول مسیر مربوطه را بازگرداند، که میتواند از یک اجرا به اجرای دیگر متفاوت باشد.
+ فراخوانی `walk` باید طول مسیر مربوطه را که میتواند از یک اجرا به اجرای دیگر متفاوت باشد، برگرداند.
-1. آزمایش قدم زدن را چندین بار اجرا کنید (مثلاً 100 بار) و آمار حاصل را چاپ کنید (بلوک کد 4):
+1. آزمایش راه رفتن را بارها (مثلاً 100 بار) اجرا کنید و آمار به دست آمده را چاپ کنید (بلوک کد 4):
```python
def print_statistics(policy):
@@ -125,17 +125,17 @@ action_idx = { a : i for i,a in enumerate(actions.keys()) }
print_statistics(random_policy)
```
- توجه داشته باشید که میانگین طول مسیر حدود 30-40 قدم است، که نسبتاً زیاد است، با توجه به اینکه میانگین فاصله تا نزدیکترین سیب حدود 5-6 قدم است.
+ توجه داشته باشید که طول متوسط مسیر حدود ۳۰ تا ۴۰ قدم است که نسبتاً زیاد است، با توجه به اینکه فاصله متوسط تا نزدیکترین سیب حدود ۵ تا ۶ قدم است.
- همچنین میتوانید ببینید حرکت پیتر در طول قدم زدن تصادفی چگونه به نظر میرسد:
+ همچنین میتوانید ببینید حرکت پیتر در طی گام تصادفی چگونه است:
- 
+ 
## تابع پاداش
-برای هوشمندتر کردن سیاست خود، باید بفهمیم کدام حرکتها "بهتر" از دیگران هستند. برای این کار، باید هدف خود را تعریف کنیم.
+برای هوشمندتر کردن سیاست ما، باید بفهمیم کدام حرکات «بهتر» از بقیه هستند. برای این کار، باید هدف خود را تعریف کنیم.
-هدف میتواند به صورت یک **تابع پاداش** تعریف شود، که برای هر حالت یک مقدار امتیاز بازمیگرداند. هرچه عدد بالاتر باشد، تابع پاداش بهتر است. (بلوک کد 5)
+هدف را میتوان به صورت یک **تابع پاداش** تعریف کرد که برای هر حالت مقداری امتیاز برمیگرداند. هرچه عدد بالاتر باشد، تابع پاداش بهتر است. (بلوک کد 5)
```python
move_reward = -0.1
@@ -154,39 +154,115 @@ def reward(m,pos=None):
return move_reward
```
-یک نکته جالب درباره توابع پاداش این است که در بیشتر موارد، *ما فقط در پایان بازی یک پاداش قابل توجه دریافت میکنیم*. این بدان معناست که الگوریتم ما باید به نوعی "قدمهای خوب" را که منجر به یک پاداش مثبت در پایان میشوند به خاطر بسپارد و اهمیت آنها را افزایش دهد. به همین ترتیب، همه حرکتهایی که منجر به نتایج بد میشوند باید دلسرد شوند.
+نکته جالب درباره توابع پاداش این است که در اکثر موارد، *ما تنها در پایان بازی یک پاداش قابل توجه دریافت میکنیم*. این به این معناست که الگوریتم ما باید به نحوی قدمهای «خوب» که به پاداش مثبت در پایان منجر میشوند را به خاطر بسپارد و اهمیت آنها را افزایش دهد. به همین ترتیب، همه حرکاتی که به نتایج بد منتهی میشوند باید تشویق نشوند.
-## Q-Learning
+## Q-یادگیری
-الگوریتمی که در اینجا مورد بحث قرار میدهیم **Q-Learning** نام دارد. در این الگوریتم، سیاست توسط یک تابع (یا یک ساختار داده) به نام **جدول Q** تعریف میشود. این جدول "خوبی" هر یک از اقدامات در یک حالت مشخص را ثبت میکند.
+الگوریتمی که در اینجا بحث میکنیم، **Q-یادگیری** نام دارد. در این الگوریتم، سیاست توسط تابعی (یا یک ساختار داده) به نام **جدول Q** تعریف میشود. این جدول «خوبی» هر اقدام را در حالت داده شده ثبت میکند.
-این جدول Q نامیده میشود زیرا اغلب راحت است که آن را به صورت یک جدول یا آرایه چندبعدی نمایش دهیم. از آنجا که تخته ما ابعاد `عرض` x `ارتفاع` دارد، میتوانیم جدول Q را با استفاده از یک آرایه numpy با شکل `عرض` x `ارتفاع` x `طول(actions)` نمایش دهیم: (بلوک کد 6)
+این جدول به نام جدول Q نامیده میشود زیرا معمولاً نمایش آن به صورت یک جدول یا آرایه چندبعدی راحت است. از آنجا که صفحه ما ابعاد `width` در `height` دارد، میتوانیم جدول Q را با استفاده از آرایه numpy به شکل `width` در `height` در `len(actions)` نمایش دهیم: (بلوک کد 6)
```python
Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions)
```
-توجه داشته باشید که ما تمام مقادیر جدول Q را با یک مقدار برابر مقداردهی اولیه میکنیم، در مورد ما - 0.25. این مربوط به سیاست "قدم زدن تصادفی" است، زیرا همه حرکتها در هر حالت به طور مساوی خوب هستند. ما میتوانیم جدول Q را به تابع `plot` منتقل کنیم تا جدول را روی تخته تجسم کنیم: `m.plot(Q)`.
+توجه کنید که تمام مقادیر جدول Q را با یک مقدار مساوی، در مورد ما ۰.۲۵، مقداردهی اولیه میکنیم. این متناظر با سیاست «گام تصادفی» است، زیرا همه حرکات در هر حالت به یک اندازه خوب هستند. ما میتوانیم جدول Q را به تابع `plot` بدهیم تا جدول را روی صفحه ترسیم کنیم: `m.plot(Q)`.
-
+
-در مرکز هر سلول یک "فلش" وجود دارد که جهت ترجیحی حرکت را نشان میدهد. از آنجا که همه جهتها برابر هستند، یک نقطه نمایش داده میشود.
+در مرکز هر خانه یک «فلش» وجود دارد که جهت اولویت حرکت را نشان میدهد. از آنجایی که همه جهتها برابر هستند، یک نقطه نمایش داده میشود.
-اکنون باید شبیهسازی را اجرا کنیم، محیط خود را کشف کنیم، و یک توزیع بهتر از مقادیر جدول Q یاد بگیریم، که به ما اجازه میدهد مسیر رسیدن به سیب را بسیار سریعتر پیدا کنیم.
+اکنون باید شبیهسازی را اجرا کنیم، محیط خود را کاوش کنیم و توزیع بهتری از مقادیر جدول Q بیاموزیم که به ما اجازه دهد مسیر به سمت سیب را سریعتر پیدا کنیم.
-## جوهره Q-Learning: معادله بلمن
+## ماهیت Q-یادگیری: معادله بلمن
-هنگامی که شروع به حرکت میکنیم، هر اقدام یک پاداش مربوطه خواهد داشت، یعنی ما از نظر تئوری میتوانیم اقدام بعدی را بر اساس بالاترین پاداش فوری انتخاب کنیم. با این حال، در بیشتر حالتها، حرکت به هدف ما برای رسیدن به سیب نمیرسد، و بنابراین نمیتوانیم بلافاصله تصمیم بگیریم کدام جهت بهتر است.
+وقتی شروع به حرکت میکنیم، هر عمل پاداش مربوط به خود را دارد، یعنی ما به طور نظری میتوانیم اقدام بعدی را بر اساس بالاترین پاداش فوری انتخاب کنیم. اما در اکثر حالتها، حرکت به هدف رسیدن به سیب نمیانجامد، بنابراین نمیتوانیم فوراً تصمیم بگیریم کدام جهت بهتر است.
-> به یاد داشته باشید که نتیجه فوری مهم نیست، بلکه نتیجه نهایی که در پایان شبیهسازی به دست خواهیم آورد اهمیت دارد.
+> به یاد داشته باشید که نتیجه فوری مهم نیست، بلکه نتیجه نهایی مهم است که در پایان شبیهسازی به دست میآوریم.
-برای در نظر گرفتن این پاداش تأخیری، باید از اصول **[برنامهریزی پویا](https://en.wikipedia.org/wiki/Dynamic_programming)** استفاده کنیم، که به ما اجازه میدهد به صورت بازگشتی درباره مسئله خود فکر کنیم.
+برای لحاظ کردن این پاداش با تأخیر، باید اصول **[برنامهریزی پویا](https://en.wikipedia.org/wiki/Dynamic_programming)** را به کار ببریم، که به ما اجازه میدهد مسئله خود را به شکل بازگشتی بررسی کنیم.
-فرض کنید اکنون در حالت *s* هستیم و میخواهیم به حالت بعدی *s'* حرکت کنیم. با انجام این کار، پاداش فوری *r(s,a)* را دریافت خواهیم کرد، که توسط تابع پاداش تعریف شده است، به علاوه مقداری پاداش آینده. اگر فرض کنیم که جدول Q ما به درستی "جذابیت" هر اقدام را منعکس میکند، در حالت *s'* ما اقدامی *a* را انتخاب خواهیم کرد که به مقدار حداکثر *Q(s',a')* مربوط باشد. بنابراین، بهترین پاداش آینده ممکن که میتوانیم در حالت *s* دریافت کنیم به صورت `max`
+فرض کنید اکنون در حالت *s* هستیم و میخواهیم به حالت بعدی *s'* حرکت کنیم. با انجام این کار، پاداش فوری *r(s,a)* که توسط تابع پاداش تعریف شده را دریافت میکنیم، به علاوه مقداری پاداش آینده. اگر فرض کنیم جدول Q ما بهدرستی «جذابیت» هر عمل را منعکس کند، آنگاه در حالت *s'* عمل *a* را انتخاب خواهیم کرد که متناظر با بیشینه مقدار *Q(s',a')* است. بنابراین بهترین پاداش آینده ممکن در حالت *s* به صورت `max`a'*Q(s',a')* تعریف میشود (بیشینهگیری در اینجا روی همه اقدامات ممکن *a'* در حالت *s'* انجام میشود).
+
+این معادله، **فرمول بلمن** برای محاسبه مقدار جدول Q در حالت *s* با اقدام *a* است:
+
+
+
+در اینجا γ همان **ضریب تخفیف** است که تعیین میکند چقدر باید پاداش کنونی را به پاداش آینده ترجیح دهیم و بالعکس.
+
+## الگوریتم یادگیری
+
+با توجه به معادله فوق، میتوان الآن شبهکدی برای الگوریتم یادگیری خود نوشت:
+
+* مقداردهی اولیه جدول Q با اعداد مساوی برای همه حالات و اقدامات
+* تنظیم نرخ یادگیری α ← ۱
+* تکرار شبیهسازی به دفعات زیاد
+ 1. شروع در موقعیت تصادفی
+ 1. تکرار
+ 1. انتخاب یک اقدام *a* در حالت *s*
+ ۲. اجرای اقدام با حرکت به حالت جدید *s'*
+ ۳. اگر شرط پایان بازی برقرار شد یا مجموع پاداش خیلی کم بود - شبیهسازی را متوقف کن
+ ۴. محاسبه پاداش *r* در حالت جدید
+ ۵. بهروزرسانی تابع Q بر اساس معادله بلمن: *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ maxa'Q(s',a'))*
+ ۶. *s* ← *s'*
+ ۷. بهروزرسانی مجموع پاداش و کاهش α.
+
+## بهرهبرداری و کاوش
+
+در الگوریتم بالا، ما مشخص نکردیم دقیقا در مرحله ۲.۱ چگونه باید اقدام انتخاب شود. اگر اقدام را به صورت تصادفی انتخاب کنیم، به طور تصادفی محیط را **کاوش** میکنیم و احتمالاً زیاد خواهیم مرد و به مناطق غیرمعمول خواهیم رفت. رویکرد جایگزین این است که **از مقادیر جدول Q که قبلاً میدانیم استفاده کنیم** و بهترین اقدام (با بالاترین مقدار جدول Q) را در حالت *s* انتخاب کنیم. البته این مانع از کاوش سایر حالات میشود و احتمال دارد راه حل بهینه را پیدا نکنیم.
+
+بنابراین بهترین رویکرد حفظ تعادل بین کاوش و بهرهبرداری است. این کار با انتخاب اقدام در حالت *s* با احتمالات متناسب با مقادیر جدول Q امکانپذیر است. ابتدا که مقادیر جدول Q همه برابرند، این انتخاب مانند انتخاب تصادفی است، اما با یادگیری بیشتر درباره محیط، احتمالاً مسیر بهینه دنبال میشود در حالی که گاهی به عامل اجازه داده میشود مسیر ناکاوش شده را انتخاب کند.
+
+## پیادهسازی پایتون
+
+اکنون آمادهایم الگوریتم یادگیری را پیادهسازی کنیم. قبل از این، نیاز به تابعی داریم که اعداد دلخواه در جدول Q را به برداری از احتمالات متناظر با اقدامات تبدیل کند.
+
+1. تابع `probs()` را ایجاد کنید:
+
+ ```python
+ def probs(v,eps=1e-4):
+ v = v-v.min()+eps
+ v = v/v.sum()
+ return v
+ ```
+
+ چند `eps` به بردار اصلی اضافه میکنیم تا از تقسیم بر صفر در حالت اولیه جلوگیری شود، زمانی که همه مؤلفههای بردار برابرند.
+
+الگوریتم یادگیری را در ۵۰۰۰ آزمایش، که به آن **اپوک** نیز میگویند، اجرا کنید: (بلوک کد 8)
+```python
+ for epoch in range(5000):
+
+ # انتخاب نقطه اولیه
+ m.random_start()
+
+ # شروع به حرکت
+ n=0
+ cum_reward = 0
+ while True:
+ x,y = m.human
+ v = probs(Q[x,y])
+ a = random.choices(list(actions),weights=v)[0]
+ dpos = actions[a]
+ m.move(dpos,check_correctness=False) # ما به بازیکن اجازه میدهیم خارج از صفحه حرکت کند، که باعث پایان اپیزود میشود
+ r = reward(m)
+ cum_reward += r
+ if r==end_reward or cum_reward < -1000:
+ lpath.append(n)
+ break
+ alpha = np.exp(-n / 10e5)
+ gamma = 0.5
+ ai = action_idx[a]
+ Q[x,y,ai] = (1 - alpha) * Q[x,y,ai] + alpha * (r + gamma * Q[x+dpos[0], y+dpos[1]].max())
+ n+=1
+```
+
+پس از اجرای این الگوریتم، جدول Q باید با مقادیری بهروزرسانی شده باشد که جذابیت اقدامات مختلف را در هر گام تعریف میکنند. میتوانیم جدول Q را با رسم برداری در هر خانه که به سمت جهت مطلوب حرکت اشاره میکند، دیداری کنیم. برای سادگی به جای سر پیکان، یک دایره کوچک رسم میکنیم.
+
+
## بررسی سیاست
-از آنجا که جدول Q "جذابیت" هر اقدام را در هر حالت فهرست میکند، استفاده از آن برای تعریف ناوبری کارآمد در دنیای ما بسیار آسان است. در سادهترین حالت، میتوانیم اقدامی را انتخاب کنیم که با بالاترین مقدار جدول Q مطابقت دارد: (کد بلاک 9)
+از آنجا که جدول Q «جذابیت» هر اقدام در هر حالت را لیست میکند، استفاده از آن برای تعریف مسیریابی موثر در دنیای ما بسیار آسان است. در سادهترین حالت، میتوانیم اقدامی را انتخاب کنیم که بیشترین مقدار جدول Q را داشته باشد: (بلوک کد 9)
```python
def qpolicy_strict(m):
@@ -198,17 +274,18 @@ def qpolicy_strict(m):
walk(m,qpolicy_strict)
```
-> اگر کد بالا را چندین بار امتحان کنید، ممکن است متوجه شوید که گاهی اوقات "گیر" میکند و باید دکمه STOP را در نوتبوک فشار دهید تا آن را متوقف کنید. این اتفاق به این دلیل رخ میدهد که ممکن است شرایطی وجود داشته باشد که دو حالت از نظر مقدار Q-Value بهینه به یکدیگر "اشاره" کنند، که در این صورت عامل بین این حالتها به طور نامحدود حرکت میکند.
+
+> اگر کد بالا را چندین بار اجرا کنید، ممکن است متوجه شوید که گاهی اوقات "گیر میکند" و لازم است دکمه STOP در دفترچه یادداشت را برای قطع اجرا فشار دهید. این اتفاق میافتد چون ممکن است شرایطی پیش بیاید که دو حالت از نظر مقدار بهینه Q-Value به یکدیگر "اشاره" کنند، در این حالت عامل به طور نامحدود بین آن دو حالت حرکت میکند.
## 🚀چالش
-> **وظیفه 1:** تابع `walk` را تغییر دهید تا طول مسیر را به تعداد مشخصی از مراحل (مثلاً 100) محدود کند و مشاهده کنید که کد بالا گاهی اوقات این مقدار را برمیگرداند.
+> **وظیفه ۱:** تابع `walk` را طوری تغییر دهید که طول مسیر حداکثر به تعداد معینی از گامها (مثلاً ۱۰۰) محدود شود و ببینید کد بالا گاهی اوقات این مقدار را بازمیگرداند.
-> **وظیفه 2:** تابع `walk` را تغییر دهید تا به مکانهایی که قبلاً در آنها بوده است بازنگردد. این کار از حلقه زدن `walk` جلوگیری میکند، اما عامل همچنان ممکن است در مکانی "گیر" کند که قادر به فرار از آن نیست.
+> **وظیفه ۲:** تابع `walk` را طوری تغییر دهید که به مکانهایی که قبلاً رفته باز نگردد. این کار از حلقهزدن `walk` جلوگیری میکند، اما با این حال ممکن است عامل در موقعیتی گرفتار شود که امکان فرار از آن را ندارد.
## ناوبری
-سیاست ناوبری بهتر، همان سیاستی است که در طول آموزش استفاده کردیم، که ترکیبی از بهرهبرداری و اکتشاف است. در این سیاست، هر اقدام را با احتمال مشخصی انتخاب میکنیم که متناسب با مقادیر موجود در جدول Q است. این استراتژی ممکن است همچنان باعث شود عامل به موقعیتی که قبلاً بررسی کرده بازگردد، اما همانطور که از کد زیر میبینید، منجر به مسیر متوسط بسیار کوتاهتری به مکان مورد نظر میشود (به یاد داشته باشید که `print_statistics` شبیهسازی را 100 بار اجرا میکند): (کد بلاک 10)
+سیاست ناوبری بهتر، همان سیاستی است که در طول آموزش استفاده کردیم، که اکتشاف و بهرهبرداری را ترکیب میکند. در این سیاست، هر عمل با احتمال مشخصی انتخاب میشود که متناسب با مقادیر در جدول Q است. این استراتژی ممکن است همچنان باعث شود عامل به موقعیتی که قبلاً کاوش کرده برگردد، اما همانطور که از کد زیر میبینید، منجر به متوسط مسیر بسیار کوتاهتری به مکان مطلوب میشود (به یاد داشته باشید که `print_statistics` شبیهسازی را ۱۰۰ بار اجرا میکند): (کد بلوک ۱۰)
```python
def qpolicy(m):
@@ -220,28 +297,32 @@ def qpolicy(m):
print_statistics(qpolicy)
```
-پس از اجرای این کد، باید طول مسیر متوسط بسیار کوتاهتری نسبت به قبل دریافت کنید، در محدوده 3-6.
+پس از اجرای این کد، باید طول متوسط مسیر بسیار کوتاهتری نسبت به قبل، در محدوده ۳-۶ به دست آورید.
+
+## بررسی روند یادگیری
-## بررسی فرآیند یادگیری
+همانطور که اشاره کردیم، روند یادگیری تعادلی است بین اکتشاف و بهرهبرداری از دانش بهدست آمده درباره ساختار فضای مسئله. دیدیم که نتایج یادگیری (توانایی کمک به عامل برای پیدا کردن مسیر کوتاه به هدف) بهبود یافته است، اما مشاهده رفتار طول متوسط مسیر در طی فرآیند یادگیری نیز جالب است:
-همانطور که اشاره کردیم، فرآیند یادگیری تعادلی بین اکتشاف و بهرهبرداری از دانش کسبشده درباره ساختار فضای مسئله است. مشاهده کردیم که نتایج یادگیری (توانایی کمک به عامل برای یافتن مسیر کوتاه به هدف) بهبود یافته است، اما همچنین جالب است که ببینیم طول مسیر متوسط در طول فرآیند یادگیری چگونه رفتار میکند:
+
-## خلاصه یادگیریها:
+نتایج یادگیری را میتوان به شکل زیر خلاصه کرد:
-- **طول مسیر متوسط افزایش مییابد**. آنچه در اینجا مشاهده میکنیم این است که در ابتدا طول مسیر متوسط افزایش مییابد. این احتمالاً به این دلیل است که وقتی هیچ اطلاعاتی درباره محیط نداریم، احتمالاً در حالتهای بد، آب یا گرگ گیر میکنیم. با یادگیری بیشتر و استفاده از این دانش، میتوانیم محیط را بیشتر بررسی کنیم، اما هنوز نمیدانیم سیبها دقیقاً کجا هستند.
+- **طول متوسط مسیر افزایش مییابد**. آنچه اینجا میبینیم این است که ابتدا، طول متوسط مسیر افزایش مییابد. این احتمالاً به این دلیل است که وقتی هیچ اطلاعاتی درباره محیط نداریم، احتمال گرفتار شدن در حالتهای نامطلوب مانند آب یا گرگ زیاد است. وقتی بیشتر یاد میگیریم و شروع به استفاده از این دانش میکنیم، میتوانیم مدت زمان بیشتری محیط را کاوش کنیم، اما هنوز به خوبی نمیدانیم سیبها دقیقاً کجا هستند.
-- **طول مسیر کاهش مییابد، با یادگیری بیشتر**. وقتی به اندازه کافی یاد میگیریم، رسیدن به هدف برای عامل آسانتر میشود و طول مسیر شروع به کاهش میکند. با این حال، همچنان به اکتشاف باز هستیم، بنابراین اغلب از مسیر بهینه منحرف میشویم و گزینههای جدیدی را بررسی میکنیم که باعث طولانیتر شدن مسیر از حد مطلوب میشود.
+- **طول مسیر با یادگیری کمتر میشود**. وقتی به اندازه کافی یاد میگیریم، رسیدن به هدف برای عامل آسانتر میشود و طول مسیر شروع به کاهش میکند. با این حال، هنوز هم آماده اکتشاف هستیم، پس اغلب از بهترین مسیر منحرف شده و گزینههای جدیدی را کاوش میکنیم که مسیر را از حالت بهینه طولانیتر میکند.
-- **طول مسیر به طور ناگهانی افزایش مییابد**. آنچه در این نمودار نیز مشاهده میکنیم این است که در برخی مواقع طول مسیر به طور ناگهانی افزایش مییابد. این نشاندهنده ماهیت تصادفی فرآیند است و اینکه ممکن است در برخی مواقع ضرایب جدول Q را با مقادیر جدید خراب کنیم. این موضوع باید به طور ایدهآل با کاهش نرخ یادگیری به حداقل برسد (برای مثال، در پایان آموزش، فقط مقادیر جدول Q را با مقدار کمی تنظیم کنیم).
+- **طول به طور ناگهانی افزایش مییابد**. همچنین در این نمودار مشاهده میکنیم که در نقطهای طول مسیر به طور ناگهانی افزایش یافته است. این نشاندهنده طبیعت استوکستیک فرآیند است و اینکه ممکن است در برخی مواقع ضرایب جدول Q را با مقادیر جدید بازنویسی کرده و "خراب" کنیم. این موضوع به طور ایدهآل باید با کاهش نرخ یادگیری به حداقل برسد (مثلاً در پایان آموزش، تنها مقادیر جدول Q را با مقدار کمی تنظیم کنیم).
-به طور کلی، مهم است که به یاد داشته باشیم موفقیت و کیفیت فرآیند یادگیری به طور قابل توجهی به پارامترهایی مانند نرخ یادگیری، کاهش نرخ یادگیری و عامل تخفیف بستگی دارد. این پارامترها اغلب **ابرپارامتر** نامیده میشوند تا از **پارامترها** که در طول آموزش بهینهسازی میشوند (برای مثال، ضرایب جدول Q) متمایز شوند. فرآیند یافتن بهترین مقادیر ابرپارامترها **بهینهسازی ابرپارامتر** نامیده میشود و شایسته یک موضوع جداگانه است.
+به طور کلی، مهم است که به خاطر بسپاریم موفقیت و کیفیت فرآیند یادگیری به طور قابل توجهی به پارامترهایی مانند نرخ یادگیری، کاهش نرخ یادگیری و ضریب تخفیف بستگی دارد. این پارامترها اغلب به عنوان **ابرپارامترها** شناخته میشوند، تا آنها را از **پارامترها** که در طول آموزش بهینه میشوند (مثلاً ضرایب جدول Q) متمایز کنند. فرایند یافتن بهترین مقادیر برای ابرپارامترها، **بهینهسازی ابرپارامتر** نامیده میشود و موضوع جداگانهای است.
-## [آزمون پس از درس](https://ff-quizzes.netlify.app/en/ml/)
+## [آزمون پس از آموزش](https://ff-quizzes.netlify.app/en/ml/)
-## تکلیف
-[دنیای واقعیتر](assignment.md)
+## تمرین
+[دنیایی واقعگرایانهتر](assignment.md)
---
-**سلب مسئولیت**:
-این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش میکنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است شامل خطاها یا نادرستیها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، توصیه میشود از ترجمه حرفهای انسانی استفاده کنید. ما مسئولیتی در قبال سوء تفاهمها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم.
\ No newline at end of file
+
+**سلب مسئولیت**:
+این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما در تلاش برای دقت هستیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است شامل خطاها یا نادرستیهایی باشند. سند اصلی به زبان مادری خود باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حیاتی، ترجمه حرفهای انسانی توصیه میشود. ما در قبال هرگونه سوء تفاهم یا برداشت نادرست ناشی از استفاده از این ترجمه مسئولیتی نداریم.
+
\ No newline at end of file
diff --git a/translations/fa/8-Reinforcement/2-Gym/README.md b/translations/fa/8-Reinforcement/2-Gym/README.md
index 7ac371942..ece7cc8fc 100644
--- a/translations/fa/8-Reinforcement/2-Gym/README.md
+++ b/translations/fa/8-Reinforcement/2-Gym/README.md
@@ -1,14 +1,34 @@
-## پیشنیازها
+# اسکیت روی CartPole
-در این درس، از کتابخانهای به نام **OpenAI Gym** برای شبیهسازی محیطهای مختلف استفاده خواهیم کرد. شما میتوانید کد این درس را به صورت محلی اجرا کنید (مثلاً از طریق Visual Studio Code)، که در این صورت شبیهسازی در یک پنجره جدید باز خواهد شد. اگر کد را به صورت آنلاین اجرا میکنید، ممکن است نیاز باشد تغییراتی در کد ایجاد کنید، همانطور که [اینجا](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7) توضیح داده شده است.
+مشکلی که در درس قبلی حل کردیم ممکن است یک مسئله اسباببازی به نظر برسد و برای سناریوهای واقعی کاربرد چندانی نداشته باشد. اما اینطور نیست، زیرا بسیاری از مسائل دنیای واقعی هم همین سناریو را دارند - از جمله بازی شطرنج یا گو. این موارد مشابه هستند چون ما یک صفحه بازی با قوانین معین و یک **حالت گسسته** داریم.
-## OpenAI Gym
+## [آزمون پیش از تدریس](https://ff-quizzes.netlify.app/en/ml/)
-در درس قبلی، قوانین بازی و وضعیت توسط کلاس `Board` که خودمان تعریف کرده بودیم مشخص میشد. در اینجا از یک **محیط شبیهسازی خاص** استفاده خواهیم کرد که فیزیک پشت میله تعادل را شبیهسازی میکند. یکی از محبوبترین محیطهای شبیهسازی برای آموزش الگوریتمهای یادگیری تقویتی، [Gym](https://gym.openai.com/) است که توسط [OpenAI](https://openai.com/) نگهداری میشود. با استفاده از این Gym میتوانیم محیطهای مختلفی از شبیهسازی CartPole تا بازیهای Atari ایجاد کنیم.
+## مقدمه
-> **توجه**: میتوانید سایر محیطهای موجود در OpenAI Gym را [اینجا](https://gym.openai.com/envs/#classic_control) مشاهده کنید.
+در این درس همان اصول Q-Learning را به مسئلهای با **حالت پیوسته** اعمال خواهیم کرد، یعنی حالتی که توسط یک یا چند عدد واقعی داده میشود. مسئله زیر را بررسی خواهیم کرد:
-ابتدا Gym را نصب کرده و کتابخانههای مورد نیاز را وارد کنید (کد بلاک 1):
+> **مسئله**: اگر پیتر بخواهد از گرگ فرار کند، باید بتواند سریعتر حرکت کند. خواهیم دید که چگونه پیتر میتواند یاد بگیرد اسکیت کند، به خصوص چگونه تعادل خود را حفظ کند، با استفاده از Q-Learning.
+
+
+
+> پیتر و دوستانش برای فرار از گرگ خلاقیت به خرج میدهند! تصویر از [Jen Looper](https://twitter.com/jenlooper)
+
+ما از نسخه سادهشدهای از تعادل استفاده خواهیم کرد که به عنوان مسئله **CartPole** شناخته میشود. در دنیای CartPole، ما یک لغزنده افقی داریم که میتواند به چپ یا راست حرکت کند و هدف این است که یک قطب عمودی را روی لغزنده تعادل دهیم.
+
+
+
+## پیشنیازها
+
+در این درس از کتابخانهای به نام **OpenAI Gym** برای شبیهسازی **محیطهای** مختلف استفاده خواهیم کرد. میتوانید کد این درس را به صورت محلی (مثلاً در Visual Studio Code) اجرا کنید که در این صورت شبیهسازی در پنجرهای جدید باز میشود. هنگام اجرای کد به صورت آنلاین، ممکن است به تنظیماتی در کد نیاز داشته باشید، همانطور که [اینجا](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7) توضیح داده شده است.
+
+## OpenAI Gym
+
+در درس قبلی قوانین بازی و حالت توسط کلاس `Board` که خودمان تعریف کردیم ارائه شد. اینجا از یک **محیط شبیهسازی خاص** استفاده خواهیم کرد که فیزیک پشت قطب تعادلی را شبیهسازی میکند. یکی از محبوبترین محیطهای شبیهسازی برای آموزش الگوریتمهای تقویت یادگیری، [Gym](https://gym.openai.com/) است که توسط [OpenAI](https://openai.com/) نگهداری میشود. با استفاده از این Gym میتوانیم محیطهای مختلفی از شبیهسازی CartPole تا بازیهای آتاری بسازیم.
+
+> **توجه**: دیگر محیطهای موجود در OpenAI Gym را میتوانید [اینجا](https://gym.openai.com/envs/#classic_control) مشاهده کنید.
+
+ابتدا، بیایید gym را نصب کنیم و کتابخانههای مورد نیاز را وارد کنیم (کد بلاک 1):
```python
import sys
@@ -20,15 +40,15 @@ import numpy as np
import random
```
-## تمرین - مقداردهی اولیه به محیط CartPole
+## تمرین - راهاندازی محیط CartPole
-برای کار با مسئله تعادل CartPole، باید محیط مربوطه را مقداردهی اولیه کنیم. هر محیط دارای موارد زیر است:
+برای کار با مسئله تعادل CartPole، باید محیط مربوطه را راهاندازی کنیم. هر محیط با یک:
-- **فضای مشاهده** که ساختار اطلاعاتی را که از محیط دریافت میکنیم تعریف میکند. برای مسئله CartPole، موقعیت میله، سرعت و برخی مقادیر دیگر را دریافت میکنیم.
+- **فضای مشاهده** که ساختار اطلاعات دریافتی از محیط را تعریف میکند. برای مسئله CartPole موقعیت قطب، سرعت و چند مقدار دیگر دریافت میکنیم.
-- **فضای عمل** که اقدامات ممکن را تعریف میکند. در مورد ما، فضای عمل گسسته است و شامل دو عمل - **چپ** و **راست** میشود. (کد بلاک 2)
+- **فضای عمل** که اعمال ممکن را تعریف میکند. در مورد ما فضای عمل گسسته است و شامل دو عمل - **چپ** و **راست** - میشود. (کد بلاک 2)
-1. برای مقداردهی اولیه، کد زیر را تایپ کنید:
+1. برای راهاندازی، کد زیر را تایپ کنید:
```python
env = gym.make("CartPole-v1")
@@ -37,11 +57,11 @@ import random
print(env.action_space.sample())
```
-برای مشاهده نحوه عملکرد محیط، یک شبیهسازی کوتاه برای 100 مرحله اجرا کنید. در هر مرحله، یکی از اقدامات را ارائه میدهیم - در این شبیهسازی، به صورت تصادفی یک اقدام از `action_space` انتخاب میشود.
+برای دیدن نحوه عملکرد محیط، بیایید شبیهسازی کوتاهی روی 100 گام اجرا کنیم. در هر مرحله یکی از اعمال را انتخاب میکنیم – در این شبیهسازی فقط به صورت تصادفی یک عمل از `action_space` انتخاب میشود.
-1. کد زیر را اجرا کنید و ببینید چه نتیجهای حاصل میشود.
+1. کد زیر را اجرا کنید و ببینید نتیجه چه میشود.
- ✅ به یاد داشته باشید که ترجیحاً این کد را روی نصب محلی Python اجرا کنید! (کد بلاک 3)
+ ✅ به خاطر داشته باشید بهتر است این کد را روی نصب محلی پایتون اجرا کنید! (کد بلاک 3)
```python
env.reset()
@@ -52,11 +72,11 @@ import random
env.close()
```
- باید چیزی مشابه این تصویر مشاهده کنید:
+ شما باید چیزی شبیه به این تصویر ببینید:
- 
+ 
-1. در طول شبیهسازی، باید مشاهداتی دریافت کنیم تا تصمیم بگیریم چگونه عمل کنیم. در واقع، تابع step مشاهدات فعلی، یک تابع پاداش و یک پرچم done را که نشان میدهد آیا ادامه شبیهسازی منطقی است یا خیر، بازمیگرداند: (کد بلاک 4)
+1. در طول شبیهسازی باید مشاهدات را دریافت کنیم تا تصمیم بگیریم چگونه عمل کنیم. در واقع تابع step مشاهدات فعلی، تابع پاداش و فَلَگ done را برمیگرداند که نشان میدهد آیا ادامه شبیهسازی منطقی است یا خیر: (کد بلاک 4)
```python
env.reset()
@@ -69,7 +89,7 @@ import random
env.close()
```
- در خروجی نوتبوک باید چیزی شبیه به این مشاهده کنید:
+ در خروجی دفترچه باید چیزی شبیه به این ببینید:
```text
[ 0.03403272 -0.24301182 0.02669811 0.2895829 ] -> 1.0
@@ -82,43 +102,43 @@ import random
[ 0.17617249 0.35602306 -0.21873684 -0.90998894] -> 1.0
```
- بردار مشاهدهای که در هر مرحله از شبیهسازی بازگردانده میشود شامل مقادیر زیر است:
- - موقعیت چرخ دستی
- - سرعت چرخ دستی
- - زاویه میله
- - نرخ چرخش میله
+ بردار مشاهدهای که در هر گام برمیگردد شامل مقادیر زیر است:
+ - موقعیت واگن
+ - سرعت واگن
+ - زاویه قطب
+ - نرخ چرخش قطب
-1. حداقل و حداکثر مقدار این اعداد را دریافت کنید: (کد بلاک 5)
+1. حداقل و حداکثر مقدار این اعداد را بگیرید: (کد بلاک 5)
```python
print(env.observation_space.low)
print(env.observation_space.high)
```
- همچنین ممکن است متوجه شوید که مقدار پاداش در هر مرحله شبیهسازی همیشه 1 است. این به این دلیل است که هدف ما زنده ماندن تا حد ممکن است، یعنی نگه داشتن میله در موقعیت عمودی معقول برای طولانیترین مدت زمان ممکن.
+ همچنین ممکن است متوجه شوید که مقدار پاداش در هر گام شبیهسازی همواره 1 است. زیرا هدف ما زنده ماندن تا حد امکان طولانی است، یعنی نگه داشتن قطب در موقعیت تقریباً عمودی برای طولانیترین مدت زمان.
- ✅ در واقع، شبیهسازی CartPole زمانی حل شده در نظر گرفته میشود که بتوانیم میانگین پاداش 195 را در 100 آزمایش متوالی کسب کنیم.
+ ✅ در واقع، شبیهسازی CartPole وقتی حل شده در نظر گرفته میشود که بتوانیم میانگین پاداش 195 را در 100 آزمایش متوالی کسب کنیم.
-## گسستهسازی وضعیت
+## گسستهسازی حالت
-در Q-Learning، باید یک Q-Table بسازیم که مشخص کند در هر وضعیت چه کاری انجام دهیم. برای انجام این کار، وضعیت باید **گسسته** باشد، به طور دقیقتر، باید شامل تعداد محدودی از مقادیر گسسته باشد. بنابراین، باید به نوعی مشاهدات خود را **گسستهسازی** کنیم و آنها را به مجموعهای محدود از وضعیتها نگاشت کنیم.
+در Q-Learning باید جدول Q ساخته شود که مشخص میکند در هر حالت چه باید انجام داد. برای این کار باید حالت به صورت **گسسته** باشد، دقیقا به این معنا که حالت شامل تعداد محدودی مقدار گسسته باشد. بنابراین باید مشاهدات خود را به یک مجموعه محدود از حالات نقشهبرداری کنیم که به آن **گسستهسازی** گفته میشود.
-چند روش برای انجام این کار وجود دارد:
+چند روش برای انجام این کار وجود دارد:
-- **تقسیم به بازهها**. اگر بازه یک مقدار خاص را بدانیم، میتوانیم این بازه را به تعدادی **بازه** تقسیم کنیم و سپس مقدار را با شماره بازهای که به آن تعلق دارد جایگزین کنیم. این کار را میتوان با استفاده از روش [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html) در numpy انجام داد. در این حالت، اندازه وضعیت را دقیقاً میدانیم، زیرا به تعداد بازههایی که برای دیجیتالیسازی انتخاب میکنیم بستگی دارد.
+- **تقسیم به بازهها**. اگر بازه یک مقدار مشخص باشد، میتوانیم آن بازه را به تعدادی **باین (bin)** تقسیم کنیم و سپس مقدار را با شمارهی باین مربوطه جایگزین کنیم. این کار را میتوان با روش `digitize` در numpy انجام داد. با این روش اندازه حالت دقیق مشخص میشود زیرا به تعداد باینهای انتخابی بستگی دارد.
+
+✅ میتوانیم از درونیابی خطی استفاده کنیم تا مقادیر را به بازهای محدود (مثلاً -20 تا 20) بیاوریم و سپس با رند کردن به عدد صحیح تبدیل کنیم. این روش کنترل کمتری روی اندازه حالت میدهد، به خصوص اگر بازه دقیق مقادیر ورودی را ندانیم. مثلاً در مورد ما 2 مقدار از 4 مقدار برای مقادیرشان بازه بالایی یا پایینی تعریف نشده، که ممکن است منجر به تعداد نامحدودی حالت شود.
-✅ میتوانیم از درونیابی خطی برای آوردن مقادیر به یک بازه محدود (مثلاً از -20 تا 20) استفاده کنیم و سپس اعداد را با گرد کردن به اعداد صحیح تبدیل کنیم. این روش کنترل کمتری بر اندازه وضعیت به ما میدهد، به خصوص اگر بازههای دقیق مقادیر ورودی را ندانیم. به عنوان مثال، در مورد ما 2 مورد از 4 مقدار هیچ حد بالا/پایینی ندارند، که ممکن است منجر به تعداد بینهایت وضعیت شود.
+در مثال ما، از روش دوم استفاده خواهیم کرد. همانطور که بعداً خواهید دید، با وجود نبود بازه دقیق بالا/پایین، آن مقادیر به ندرت خارج از بازههای محدود خاص میروند، پس حالات با مقادیر بسیار بزرگ یا کوچک بسیار نادر خواهد بود.
-در مثال ما، از روش دوم استفاده خواهیم کرد. همانطور که بعداً متوجه خواهید شد، با وجود عدم تعریف حد بالا/پایین، این مقادیر به ندرت مقادیر خارج از بازههای محدود خاصی میگیرند، بنابراین وضعیتهایی با مقادیر شدید بسیار نادر خواهند بود.
-
-1. در اینجا تابعی است که مشاهده را از مدل ما میگیرد و یک تاپل از 4 مقدار صحیح تولید میکند: (کد بلاک 6)
+1. تابعی که مشاهدات مدل را گرفته و یک تاپل از 4 عدد صحیح برمیگرداند را اینجا داریم: (کد بلاک 6)
```python
def discretize(x):
return tuple((x/np.array([0.25, 0.25, 0.01, 0.1])).astype(np.int))
```
-1. بیایید روش دیگری برای گسستهسازی با استفاده از بازهها بررسی کنیم: (کد بلاک 7)
+1. بیایید روش گسستهسازی دیگر با استفاده از باینها را هم امتحان کنیم: (کد بلاک 7)
```python
def create_bins(i,num):
@@ -126,39 +146,39 @@ import random
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
+ ints = [(-5,5),(-2,2),(-0.5,0.5),(-2,2)] # بازههای مقادیر برای هر پارامتر
+ nbins = [20,20,10,10] # تعداد بینها برای هر پارامتر
bins = [create_bins(ints[i],nbins[i]) for i in range(4)]
def discretize_bins(x):
return tuple(np.digitize(x[i],bins[i]) for i in range(4))
```
-1. حالا یک شبیهسازی کوتاه اجرا کنید و این مقادیر گسسته محیط را مشاهده کنید. میتوانید هر دو `discretize` و `discretize_bins` را امتحان کنید و ببینید آیا تفاوتی وجود دارد.
+1. حالا یک شبیهسازی کوتاه اجرا کنیم و مقادیر گسسته محیط را مشاهده کنیم. میتوانید هر دو تابع `discretize` و `discretize_bins` را امتحان کنید و ببینید تفاوتی دارد یا خیر.
- ✅ `discretize_bins` شماره بازه را بازمیگرداند که از 0 شروع میشود. بنابراین برای مقادیر متغیر ورودی در حدود 0، عددی از وسط بازه (10) بازمیگرداند. در `discretize`، به بازه مقادیر خروجی توجه نکردیم و اجازه دادیم مقادیر منفی باشند، بنابراین مقادیر وضعیت جابجا نشدهاند و 0 متناظر با 0 است. (کد بلاک 8)
+ ✅ `discretize_bins` شماره باین را برمیگرداند که از 0 شروع میشود. بنابراین مقادیری نزدیک صفر عددی نزدیک به وسط بازه (10) را میدهد. در `discretize` ما به دامنه مقادیر خروجی اهمیت ندادیم و اجازه دادیم مقادیر منفی باشند، بنابراین مقادیر حالت جابهجا نشده و عدد صفر همان صفر است. (کد بلاک 8)
```python
env.reset()
done = False
while not done:
- #env.render()
+ #محیط را رندر میکند
obs, rew, done, info = env.step(env.action_space.sample())
- #print(discretize_bins(obs))
+ #چاپ مقادیر گسستهشده مشاهدهها
print(discretize(obs))
env.close()
```
- ✅ خطی که با `env.render` شروع میشود را اگر میخواهید ببینید محیط چگونه اجرا میشود، از حالت کامنت خارج کنید. در غیر این صورت میتوانید آن را در پسزمینه اجرا کنید که سریعتر است. ما از این اجرای "نامرئی" در طول فرآیند Q-Learning استفاده خواهیم کرد.
+ ✅ اگر میخواهید ببینید محیط چگونه اجرا میشود، خطی که با `env.render` شروع میشود را از حالت کامنت خارج کنید. در غیر این صورت میتوانید کد را در پسزمینه اجرا کنید که سریعتر است. ما در فرآیند Q-Learning اجرای «نامرئی» را استفاده خواهیم کرد.
-## ساختار Q-Table
+## ساختار جدول Q
-در درس قبلی، وضعیت یک جفت ساده از اعداد از 0 تا 8 بود و بنابراین راحت بود که Q-Table را با یک آرایه numpy با شکل 8x8x2 نمایش دهیم. اگر از گسستهسازی بازهها استفاده کنیم، اندازه بردار وضعیت ما نیز مشخص است، بنابراین میتوانیم از همان روش استفاده کنیم و وضعیت را با یک آرایه با شکل 20x20x10x10x2 نمایش دهیم (اینجا 2 بعد فضای عمل است و ابعاد اول متناظر با تعداد بازههایی است که برای هر یک از پارامترهای فضای مشاهده انتخاب کردهایم).
+در درس قبلی حالت جفتی از اعداد 0 تا 8 بود و بنابراین برای نمایش جدول Q از یک تنسور numpy با شکل 8x8x2 استفاده کردیم. اگر از گسستهسازی با باین استفاده کنیم، اندازه بردار حالت هم مشخص است و میتوانیم همان رویکرد را داشته باشیم و حالت را به آرایهای با شکل 20x20x10x10x2 نمایش دهیم (اینجا 2 بعد فضای عمل است و ابعاد اولی تعداد باین تعیینشده برای هر پارامتر فضای مشاهده است).
-با این حال، گاهی اوقات ابعاد دقیق فضای مشاهده مشخص نیست. در مورد تابع `discretize`، ممکن است هرگز مطمئن نباشیم که وضعیت ما در محدوده خاصی باقی میماند، زیرا برخی از مقادیر اصلی محدود نیستند. بنابراین، از رویکرد کمی متفاوت استفاده خواهیم کرد و Q-Table را با یک دیکشنری نمایش میدهیم.
+اما گاهی ابعاد دقیق فضای مشاهده معلوم نیست. در مورد تابع `discretize` هرگز نمیتوانیم مطمئن باشیم که حالت در محدودهای خاص باقی میماند زیرا بعضی مقادیر اصلی محدود نیستند. بنابراین رویکردی کمی متفاوت خواهیم داشت و جدول Q را به صورت دیکشنری نمایش میدهیم.
-1. از زوج *(state,action)* به عنوان کلید دیکشنری استفاده کنید و مقدار متناظر با مقدار ورودی Q-Table باشد. (کد بلاک 9)
+1. جفت *(state, action)* را به عنوان کلید دیکشنری استفاده کنید و مقدار متناظر مقدار خانه جدول Q باشد. (کد بلاک 9)
```python
Q = {}
@@ -168,38 +188,38 @@ import random
return [Q.get((state,a),0) for a in actions]
```
- در اینجا همچنین تابعی به نام `qvalues()` تعریف میکنیم که لیستی از مقادیر Q-Table را برای یک وضعیت مشخص که متناظر با تمام اقدامات ممکن است بازمیگرداند. اگر ورودی در Q-Table وجود نداشته باشد، مقدار پیشفرض 0 را بازمیگردانیم.
+ اینجا همچنین تابع `qvalues()` تعریف شده که برای حالت داده شده مقادیر جدول Q را در قالب لیستی شامل تمام اعمال ممکن برمیگرداند. اگر مقدار در جدول Q موجود نباشد، مقدار پیشفرض 0 برگردانده میشود.
-## شروع Q-Learning
+## بیایید Q-Learning را شروع کنیم
-حالا آمادهایم که به پیتر آموزش دهیم چگونه تعادل را حفظ کند!
+اکنون آمادهایم به پیتر آموزش دهیم تعادلش را حفظ کند!
-1. ابتدا برخی از هایپرپارامترها را تنظیم کنیم: (کد بلاک 10)
+1. ابتدا چند ابرپارامتر را تنظیم کنیم: (کد بلاک 10)
```python
- # hyperparameters
+ # ابرپارامترها
alpha = 0.3
gamma = 0.9
epsilon = 0.90
```
- در اینجا، `alpha` **نرخ یادگیری** است که مشخص میکند تا چه حد باید مقادیر فعلی Q-Table را در هر مرحله تنظیم کنیم. در درس قبلی با مقدار 1 شروع کردیم و سپس `alpha` را در طول آموزش به مقادیر پایینتر کاهش دادیم. در این مثال برای سادگی مقدار آن را ثابت نگه میداریم و شما میتوانید بعداً با تنظیم مقادیر `alpha` آزمایش کنید.
-
- `gamma` **عامل تخفیف** است که نشان میدهد تا چه حد باید پاداش آینده را نسبت به پاداش فعلی اولویت دهیم.
+ اینجا، `alpha` نرخ یادگیری است که مشخص میکند در هر گام تا چه حد باید مقادیر فعلی جدول Q را تنظیم کنیم. در درس قبلی با 1 شروع کردیم و سپس `alpha` را به مقادیر کمتر در طول آموزش کاهش دادیم. در این مثال برای سادگی ثابت نگه میداریم و میتوانید بعداً با تغییر `alpha` آزمایش کنید.
- `epsilon` **عامل اکتشاف/بهرهبرداری** است که تعیین میکند آیا باید اکتشاف را به بهرهبرداری ترجیح دهیم یا بالعکس. در الگوریتم ما، در درصد `epsilon` موارد، اقدام بعدی را بر اساس مقادیر Q-Table انتخاب میکنیم و در باقی موارد یک اقدام تصادفی اجرا میکنیم. این به ما امکان میدهد مناطقی از فضای جستجو را که قبلاً ندیدهایم کشف کنیم.
+ `gamma` فاکتور تخفیف است که نشان میدهد تا چه حد باید پاداش آینده را به پاداش فعلی ترجیح دهیم.
- ✅ در مورد تعادل - انتخاب اقدام تصادفی (اکتشاف) مانند یک ضربه تصادفی در جهت اشتباه عمل میکند و میله باید یاد بگیرد چگونه از این "اشتباهات" تعادل خود را بازیابی کند.
+ `epsilon` فاکتور اکتشاف/بهرهبرداری است که تعیین میکند آیا باید اکتشاف را ترجیح دهیم یا بهرهبرداری را. در الگوریتم ما در درصد `epsilon` بعدی عمل بر اساس مقادیر جدول Q انتخاب میشود و در باقی موارد عمل به صورت تصادفی انجام میشود. این اجازه میدهد بخشهایی از فضای جستجو را که قبلاً ندیدهایم کاوش کنیم.
-### بهبود الگوریتم
+ ✅ از لحاظ تعادل - انتخاب عمل تصادفی (اکتشاف) مانند یک ضربه تصادفی به جهت اشتباه است و قطب باید یاد بگیرد چگونه تعادل را از این «اشتباهات» بازیابی کند.
-میتوانیم دو بهبود در الگوریتم خود نسبت به درس قبلی ایجاد کنیم:
+### بهبود الگوریتم
-- **محاسبه میانگین پاداش تجمعی**، در طول تعدادی شبیهسازی. پیشرفت را هر 5000 تکرار چاپ میکنیم و میانگین پاداش تجمعی را در آن دوره زمانی محاسبه میکنیم. این بدان معناست که اگر بیش از 195 امتیاز کسب کنیم - میتوانیم مسئله را حل شده در نظر بگیریم، حتی با کیفیتی بالاتر از حد مورد نیاز.
+همچنین میتوانیم دو بهبود نسبت به الگوریتم درس قبلی انجام دهیم:
-- **محاسبه حداکثر نتیجه تجمعی میانگین**، `Qmax`، و Q-Table متناظر با آن نتیجه را ذخیره میکنیم. وقتی آموزش را اجرا میکنید، متوجه میشوید که گاهی میانگین نتیجه تجمعی شروع به کاهش میکند و میخواهیم مقادیر Q-Table را که متناظر با بهترین مدل مشاهده شده در طول آموزش است حفظ کنیم.
+- **محاسبه میانگین پاداش تجمعی** روی تعدادی شبیهسازی. هر 5000 تکرار پیشرفت را چاپ میکنیم و میانگین پاداش تجمعی در این بازه زمانی گرفته میشود. این یعنی اگر بیش از 195 امتیاز بگیریم، میتوانیم مسئله را حل شده با کیفیت بالاتر از حد لازم در نظر بگیریم.
+
+- **محاسبه بیشینه میانگین نتیجه تجمعی**، `Qmax` و ذخیره جدول Q مربوط به آن نتیجه. وقتی آموزش را اجرا میکنید ممکن است ببینید که بعضی مواقع میانگین نتیجه تجمعی شروع به افت میکند و ما میخواهیم مقادیر جدول Q مربوط به بهترین مدل دیده شده در آموزش را نگه داریم.
-1. تمام پاداشهای تجمعی را در هر شبیهسازی در بردار `rewards` برای رسم نمودار بعدی جمعآوری کنید. (کد بلاک 11)
+1. تمام پاداشهای تجمعی هر شبیهسازی را در بردار `rewards` جمعآوری کنید برای رسم نمودارهای بعدی. (کد بلاک 11)
```python
def probs(v,eps=1e-4):
@@ -214,15 +234,15 @@ import random
obs = env.reset()
done = False
cum_reward=0
- # == do the simulation ==
+ # == انجام شبیهسازی ==
while not done:
s = discretize(obs)
if random.random() Qmax:
@@ -240,25 +260,25 @@ import random
cum_rewards=[]
```
-آنچه ممکن است از این نتایج متوجه شوید:
+آنچه ممکن است از این نتایج متوجه شوید:
-- **نزدیک به هدف ما**. ما بسیار نزدیک به دستیابی به هدف کسب 195 پاداش تجمعی در بیش از 100 اجرای متوالی شبیهسازی هستیم، یا ممکن است واقعاً به آن دست یافته باشیم! حتی اگر اعداد کوچکتری کسب کنیم، هنوز نمیدانیم، زیرا میانگین را در طول 5000 اجرا محاسبه میکنیم و فقط 100 اجرا در معیار رسمی مورد نیاز است.
+- **نزدیک به هدف ما**. ما خیلی نزدیک به رسیدن به هدف 195 پاداش تجمعی در بیش از 100 اجرای متوالی شبیهسازی هستیم، یا ممکن است حتی به هدف رسیده باشیم! حتی اگر عددهای کوچکتر بگیریم، هنوز مطمئن نیستیم چون میانگین را روی 5000 اجرا گرفتهایم و فقط 100 اجرا در معیار رسمی لازم است.
+
+- **پاداش شروع به افت میکند**. گاهی پاداش شروع به افت میکند، یعنی ممکن است مقادیر یادگرفته شده در جدول Q را با مقادیری جایگزین کنیم که وضعیت را بدتر میکنند.
-- **پاداش شروع به کاهش میکند**. گاهی پاداش شروع به کاهش میکند، که به این معناست که ممکن است مقادیر یاد گرفته شده در Q-Table را با مقادیری که وضعیت را بدتر میکنند "خراب" کنیم.
+این مشاهده واضحتر است اگر پیشرفت آموزش را رسم کنیم.
-این مشاهده در صورتی که پیشرفت آموزش را رسم کنیم واضحتر است.
+## رسم پیشرفت آموزش
-## رسم پیشرفت آموزش
-
-در طول آموزش، مقدار پاداش تجمعی را در هر یک از تکرارها در بردار `rewards` جمعآوری کردهایم. اینجا نحوه نمایش آن در برابر شماره تکرار آمده است:
+در طول آموزش مقدار پاداش تجمعی هر تکرار را در بردار `rewards` جمعآوری کردیم. اینجا وقتی آن را نسبت به شماره تکرار رسم کنیم اینطور دیده میشود:
```python
plt.plot(rewards)
```
-
+
-از این نمودار نمیتوان چیزی گفت، زیرا به دلیل ماهیت فرآیند آموزش تصادفی، طول جلسات آموزشی بسیار متفاوت است. برای درک بهتر این نمودار، میتوان میانگین متحرک را در طول یک سری آزمایشها، مثلاً 100، محاسبه کرد. این کار را میتوان به راحتی با استفاده از `np.convolve` انجام داد: (کد بلاک 12)
+از این نمودار نمیتوان هیچ چیز خاصی فهمید چون به دلیل طبیعت تصادفی فرآیند آموزش طول جلسات آموزش بسیار متفاوت است. برای درک بهتر میتوان میانگین متحرک (running average) در فاصلهای مثلاً 100 آزمایش حساب کرد. این کار راحت با `np.convolve` انجام میشود: (کد بلاک 12)
```python
def running_average(x,window):
@@ -267,21 +287,24 @@ def running_average(x,window):
plt.plot(running_average(rewards,100))
```
-
+
+
+## تغییر ابرپارامترها
+
+برای پایدارتر کردن یادگیری، منطقی است که برخی از ابرپارامترها را در طول آموزش تنظیم کنیم. به خصوص:
+
+- **برای نرخ یادگیری**، `alpha`، میتوانیم با مقادیر نزدیک به 1 شروع کنیم و سپس این پارامتر را کم کم کاهش دهیم. با گذشت زمان مقادیر احتمال خوبی در جدول Q خواهیم داشت پس باید آنها را کمی تنظیم کنیم و به طور کامل بازنویسی نکنیم.
-## تغییر هایپرپارامترها
+- **افزایش epsilon**. ممکن است بخواهیم `epsilon` را به آرامی افزایش دهیم تا کمتر اکتشاف کنیم و بیشتر بهرهبرداری کنیم. احتمالاً منطقی است با مقدار کم `epsilon` شروع کنیم و به سمت مقدار نزدیک به 1 پیش برویم.
-برای پایدارتر کردن یادگیری، منطقی است که برخی از هایپرپارامترهای خود را در طول آموزش تنظیم کنیم. به طور خاص:
+> **وظیفه 1**: با مقادیر ابرپارامتر بازی کنید و ببینید میتوانید پاداش تجمعی بالاتری به دست آورید. آیا امتیاز بالای 195 میگیرید؟
-- **برای نرخ یادگیری**، `alpha`، میتوانیم با مقادیر نزدیک به 1 شروع کنیم و سپس این پارامتر را کاهش دهیم. با گذشت زمان، احتمالهای خوبی در Q-Table خواهیم داشت و بنابراین باید آنها را کمی تنظیم کنیم و نه اینکه کاملاً با مقادیر جدید بازنویسی کنیم.
-- **افزایش epsilon**. ممکن است بخواهیم `epsilon` را به آرامی افزایش دهیم تا کمتر اکتشاف کنیم و بیشتر بهرهبرداری کنیم. احتمالاً منطقی است که با مقدار پایینتر `epsilon` شروع کنیم و به تدریج به تقریباً 1 برسیم.
-> **وظیفه ۱**: با مقادیر هایپرپارامترها بازی کنید و ببینید آیا میتوانید پاداش تجمعی بیشتری کسب کنید. آیا به بالای ۱۹۵ میرسید؟
-> **وظیفه ۲**: برای حل رسمی مسئله، باید میانگین پاداش ۱۹۵ را در طول ۱۰۰ اجرای متوالی به دست آورید. این مقدار را در طول آموزش اندازهگیری کنید و مطمئن شوید که مسئله را به طور رسمی حل کردهاید!
+> **وظیفه ۲**: برای حل رسمی مسئله، باید میانگین پاداش ۱۹۵ را در طول ۱۰۰ اجرای متوالی به دست آورید. این را در طول آموزش اندازهگیری کنید و مطمئن شوید که مسئله به صورت رسمی حل شده است!
-## مشاهده نتیجه در عمل
+## دیدن نتیجه در عمل
-جالب است که ببینیم مدل آموزشدیده چگونه رفتار میکند. بیایید شبیهسازی را اجرا کنیم و همان استراتژی انتخاب عمل را که در طول آموزش استفاده کردیم دنبال کنیم، یعنی نمونهگیری بر اساس توزیع احتمالی در Q-Table: (بلوک کد ۱۳)
+جالب خواهد بود که ببینیم مدل آموزشدیده چگونه رفتار میکند. بیایید شبیهسازی را اجرا کنیم و همان استراتژی انتخاب عمل در زمان آموزش را دنبال کنیم، نمونهبرداری مطابق با توزیع احتمال در Q-Table: (بلاک کد ۱۳)
```python
obs = env.reset()
@@ -297,15 +320,15 @@ env.close()
شما باید چیزی شبیه به این ببینید:
-
+
---
## 🚀چالش
-> **وظیفه ۳**: در اینجا، ما از نسخه نهایی Q-Table استفاده کردیم که ممکن است بهترین نسخه نباشد. به یاد داشته باشید که ما بهترین Q-Table را در متغیر `Qbest` ذخیره کردهایم! همین مثال را با بهترین Q-Table امتحان کنید، با کپی کردن `Qbest` به `Q` و ببینید آیا تفاوتی مشاهده میکنید.
+> **وظیفه ۳**: در اینجا، ما از نسخه نهایی Q-Table استفاده میکردیم، که ممکن است بهترین نسخه نباشد. به خاطر داشته باشید که بهترین Q-Table عملکرد را در متغیر `Qbest` ذخیره کردهایم! همان مثال را با بهترین Q-Table امتحان کنید، با کپی کردن `Qbest` به `Q` و ببینید که آیا تفاوتی مشاهده میکنید یا خیر.
-> **وظیفه ۴**: در اینجا ما بهترین عمل را در هر مرحله انتخاب نمیکردیم، بلکه بر اساس توزیع احتمالی مربوطه نمونهگیری میکردیم. آیا منطقیتر است که همیشه بهترین عمل را با بالاترین مقدار Q-Table انتخاب کنیم؟ این کار را میتوان با استفاده از تابع `np.argmax` انجام داد تا شماره عمل مربوط به بالاترین مقدار Q-Table را پیدا کنید. این استراتژی را پیادهسازی کنید و ببینید آیا تعادل بهبود مییابد.
+> **وظیفه ۴**: در اینجا ما بهترین عمل را در هر مرحله انتخاب نمیکردیم، بلکه نمونهبرداری با توجه به توزیع احتمال مربوطه انجام میدادیم. آیا منطقیتر نیست که همیشه بهترین عمل، یعنی بالاترین مقدار Q-Table را انتخاب کنیم؟ این کار میتواند با استفاده از تابع `np.argmax` انجام شود تا شماره عملیات مربوط به بالاترین مقدار Q-Table را پیدا کند. این استراتژی را پیادهسازی کنید و ببینید آیا تعادل بهتری برقرار میشود یا خیر.
## [آزمون پس از درس](https://ff-quizzes.netlify.app/en/ml/)
@@ -314,11 +337,13 @@ env.close()
## نتیجهگیری
-ما اکنون یاد گرفتهایم که چگونه عوامل را آموزش دهیم تا فقط با ارائه یک تابع پاداش که حالت مطلوب بازی را تعریف میکند و با دادن فرصت به آنها برای جستجوی هوشمندانه فضای جستجو، به نتایج خوبی دست یابند. ما الگوریتم Q-Learning را در موارد محیطهای گسسته و پیوسته، اما با اعمال گسسته، با موفقیت اعمال کردهایم.
+ما اکنون یاد گرفتهایم که چگونه عاملها را آموزش دهیم تا فقط با ارائه تابع پاداش که حالت دلخواه بازی را تعریف میکند، و با دادن فرصت کاوش هوشمندانه در فضای جستجو، نتایج خوبی کسب کنند. ما الگوریتم Q-Learning را با موفقیت در محیطهای گسسته و پیوسته، اما با اعمال گسسته، پیادهسازی کردهایم.
-مهم است که همچنین شرایطی را مطالعه کنیم که در آن حالت عمل نیز پیوسته باشد و فضای مشاهده بسیار پیچیدهتر باشد، مانند تصویر صفحه بازی آتاری. در این مسائل، اغلب نیاز داریم از تکنیکهای قدرتمندتر یادگیری ماشین، مانند شبکههای عصبی، برای دستیابی به نتایج خوب استفاده کنیم. این موضوعات پیشرفتهتر، موضوع دوره پیشرفتهتر هوش مصنوعی ما خواهد بود.
+همچنین مهم است که موقعیتهایی را بررسی کنیم که حالت عمل نیز پیوسته است و زمانی که فضای مشاهده بسیار پیچیدهتر است، مانند تصویر صفحه بازی آتاری. در این مسائل معمولاً باید از تکنیکهای قدرتمندتر یادگیری ماشین، مانند شبکههای عصبی، برای کسب نتایج بهتر استفاده کنیم. این مباحث پیشرفتهتر موضوع دوره پیشرفتهتر آینده ما در هوش مصنوعی است.
---
-**سلب مسئولیت**:
-این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش میکنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است شامل خطاها یا نادرستیها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، توصیه میشود از ترجمه حرفهای انسانی استفاده کنید. ما مسئولیتی در قبال سوءتفاهمها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم.
\ No newline at end of file
+
+**سلب مسئولیت**:
+این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما در تلاش برای دقت هستیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است شامل خطاها یا نادرستیهایی باشند. سند اصلی به زبان مادری خود باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حیاتی، ترجمه حرفهای انسانی توصیه میشود. ما در قبال هرگونه سوء تفاهم یا برداشت نادرست ناشی از استفاده از این ترجمه مسئولیتی نداریم.
+
\ No newline at end of file
diff --git a/translations/fi/.co-op-translator.json b/translations/fi/.co-op-translator.json
index f041bb27a..b6ed9e78f 100644
--- a/translations/fi/.co-op-translator.json
+++ b/translations/fi/.co-op-translator.json
@@ -24,8 +24,8 @@
"language_code": "fi"
},
"1-Introduction/3-fairness/README.md": {
- "original_hash": "9a6b702d1437c0467e3c5c28d763dac2",
- "translation_date": "2025-09-05T00:24:41+00:00",
+ "original_hash": "0f00d72169a0d37eecfd16d71e01700a",
+ "translation_date": "2026-07-14T07:39:39+00:00",
"source_file": "1-Introduction/3-fairness/README.md",
"language_code": "fi"
},
@@ -54,8 +54,8 @@
"language_code": "fi"
},
"2-Regression/1-Tools/README.md": {
- "original_hash": "fa81d226c71d5af7a2cade31c1c92b88",
- "translation_date": "2025-09-04T23:38:50+00:00",
+ "original_hash": "0b8635427b582d03ea4ab7089b93e505",
+ "translation_date": "2026-07-14T07:33:47+00:00",
"source_file": "2-Regression/1-Tools/README.md",
"language_code": "fi"
},
@@ -72,8 +72,8 @@
"language_code": "fi"
},
"2-Regression/2-Data/README.md": {
- "original_hash": "7c077988328ebfe33b24d07945f16eca",
- "translation_date": "2025-09-04T23:42:48+00:00",
+ "original_hash": "a58b2c4d16c6b122643391745ac15af6",
+ "translation_date": "2026-07-14T07:35:06+00:00",
"source_file": "2-Regression/2-Data/README.md",
"language_code": "fi"
},
@@ -89,6 +89,12 @@
"source_file": "2-Regression/2-Data/solution/Julia/README.md",
"language_code": "fi"
},
+ "2-Regression/2-Data/solution/notebook.ipynb": {
+ "original_hash": "96b95f8cf473481f2f371de8156f1571",
+ "translation_date": "2026-07-14T07:01:54+00:00",
+ "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
+ "language_code": "fi"
+ },
"2-Regression/3-Linear/README.md": {
"original_hash": "8b776e731c35b171d316d01d0e7b1369",
"translation_date": "2026-04-26T18:56:14+00:00",
@@ -331,7 +337,7 @@
},
"6-NLP/4-Hotel-Reviews-1/README.md": {
"original_hash": "8d32dadeda93c6fb5c43619854882ab1",
- "translation_date": "2025-09-05T01:30:53+00:00",
+ "translation_date": "2026-07-14T07:32:32+00:00",
"source_file": "6-NLP/4-Hotel-Reviews-1/README.md",
"language_code": "fi"
},
@@ -457,7 +463,7 @@
},
"8-Reinforcement/1-QLearning/README.md": {
"original_hash": "911efd5e595089000cb3c16fce1beab8",
- "translation_date": "2025-09-05T01:11:06+00:00",
+ "translation_date": "2026-07-14T07:36:37+00:00",
"source_file": "8-Reinforcement/1-QLearning/README.md",
"language_code": "fi"
},
@@ -481,7 +487,7 @@
},
"8-Reinforcement/2-Gym/README.md": {
"original_hash": "107d5bb29da8a562e7ae72262d251a75",
- "translation_date": "2025-09-05T01:17:30+00:00",
+ "translation_date": "2026-07-14T07:38:02+00:00",
"source_file": "8-Reinforcement/2-Gym/README.md",
"language_code": "fi"
},
@@ -581,6 +587,19 @@
"source_file": "TROUBLESHOOTING.md",
"language_code": "fi"
},
+ "__translation_failures__": {
+ "sketchnotes/LICENSE.md": {
+ "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f",
+ "source_file": "sketchnotes/LICENSE.md",
+ "language_code": "fi",
+ "failure_date": "2026-07-14T07:29:51+00:00",
+ "status": "failed",
+ "error_type": "TranslationIncompleteError",
+ "error_message": "Markdown translation remained incomplete for chunk 1.1.1 of 'LICENSE.md', and the chunk could not be split further.",
+ "translator_version": "0.20.0",
+ "failure_policy_version": 1
+ }
+ },
"docs/_sidebar.md": {
"original_hash": "68dd06c685f6ce840e0acfa313352e7c",
"translation_date": "2025-09-05T00:08:39+00:00",
diff --git a/translations/fi/1-Introduction/3-fairness/README.md b/translations/fi/1-Introduction/3-fairness/README.md
index a7a266d33..4cd1d0ea3 100644
--- a/translations/fi/1-Introduction/3-fairness/README.md
+++ b/translations/fi/1-Introduction/3-fairness/README.md
@@ -1,125 +1,147 @@
-# Rakentamassa koneoppimisratkaisuja vastuullisen tekoälyn avulla
-
-
-> Sketchnote: [Tomomi Imura](https://www.twitter.com/girlie_mac)
-
-## [Ennakkotesti](https://ff-quizzes.netlify.app/en/ml/)
+# Koneoppimissovellusten rakentaminen vastuullisella tekoälyllä
+
+
+> Sketchnote tekijältä [Tomomi Imura](https://www.twitter.com/girlie_mac)
+## [Ennakkokysely](https://ff-quizzes.netlify.app/en/ml/)
+
## Johdanto
-Tässä oppimateriaalissa alat tutkia, miten koneoppiminen vaikuttaa ja voi vaikuttaa jokapäiväiseen elämäämme. Jo nyt järjestelmät ja mallit osallistuvat päivittäisiin päätöksentekotehtäviin, kuten terveydenhuollon diagnooseihin, lainapäätöksiin tai petosten havaitsemiseen. On siis tärkeää, että nämä mallit toimivat luotettavasti ja tuottavat luottamusta herättäviä tuloksia. Kuten mikä tahansa ohjelmistosovellus, myös tekoälyjärjestelmät voivat epäonnistua tai tuottaa ei-toivottuja tuloksia. Siksi on olennaista ymmärtää ja selittää tekoälymallin käyttäytymistä.
+Tässä opetussuunnitelmassa alat tutkia, miten koneoppiminen voi vaikuttaa ja vaikuttaa jo arkeemme. Järjestelmät ja mallit ovat jo nyt mukana päivittäisissä päätöksentekotehtävissä, kuten terveydenhuollon diagnooseissa, lainojen hyväksynnöissä tai petosten havaitsemisessa. Tästä syystä on tärkeää, että nämä mallit toimivat hyvin ja tuottavat luotettavia tuloksia. Kuten mikä tahansa ohjelmistosovellus, tekoälyjärjestelmät voivat epäonnistua odotuksissa tai tuottaa ei-toivottuja tuloksia. Siksi on olennaista ymmärtää ja pystyä selittämään tekoälymallin käyttäytyminen.
-Kuvittele, mitä voi tapahtua, jos käyttämäsi data mallien rakentamiseen ei sisällä tiettyjä väestöryhmiä, kuten rotua, sukupuolta, poliittisia näkemyksiä tai uskontoa, tai jos se edustaa näitä ryhmiä epätasapainoisesti. Entä jos mallin tuloksia tulkitaan suosivan tiettyä väestöryhmää? Mitä seurauksia sillä on sovellukselle? Lisäksi, mitä tapahtuu, jos malli tuottaa haitallisia tuloksia ja vahingoittaa ihmisiä? Kuka on vastuussa tekoälyjärjestelmän käyttäytymisestä? Näitä kysymyksiä tutkimme tässä oppimateriaalissa.
+Kuvittele, mitä voi tapahtua, kun mallin rakentamisessa käytetyissä tiedoissa puuttuu tiettyjä väestöryhmiä, kuten rotu, sukupuoli, poliittinen näkemys, uskonto, tai aineisto edustaa tällaisia ryhmiä epäsuhteisesti. Entä kun mallin tuotos tulkitaan suosivan jotakin väestöryhmää? Mikä on tämän sovelluksen seuraus? Lisäksi, mitä tapahtuu, kun malli tuottaa kielteisen lopputuloksen ja vahingoittaa ihmisiä? Kuka on vastuussa tekoälyjärjestelmän käyttäytymisestä? Näitä kysymyksiä käsitellään tässä opetussuunnitelmassa.
-Tässä oppitunnissa:
+Tässä oppitunnissa opit:
-- Opit ymmärtämään oikeudenmukaisuuden merkityksen koneoppimisessa ja siihen liittyvät haitat.
-- Tutustut poikkeamien ja epätavallisten tilanteiden tutkimiseen luotettavuuden ja turvallisuuden varmistamiseksi.
-- Ymmärrät, miksi on tärkeää suunnitella kaikille osallistavia järjestelmiä.
-- Tutkit, miksi on olennaista suojella ihmisten ja datan yksityisyyttä ja turvallisuutta.
-- Näet, miksi on tärkeää käyttää "lasilaatikko"-lähestymistapaa tekoälymallien käyttäytymisen selittämiseksi.
-- Opit, miksi vastuu on keskeistä tekoälyjärjestelmien luottamuksen rakentamisessa.
+- Tietoisuuden lisääminen oikeudenmukaisuuden merkityksestä koneoppimisessa ja oikeudenmukaisuuteen liittyvistä vahingoista.
+- Tutustuminen poikkeuksiin ja epätavallisiin tilanteisiin laadunvarmistuksen ja turvallisuuden takaamiseksi.
+- Ymmärrys tarpeesta voimaannuttaa kaikki suunnittelemalla osallistavia järjestelmiä.
+- Tutkia kuinka tärkeää on suojella tiedon ja ihmisten yksityisyyttä ja turvallisuutta.
+- Näyttää lasilaatikkomenetelmän merkitys tekoälymallien käyttäytymisen selittämisessä.
+- Huomioida, kuinka vastuullisuus on välttämätöntä luottamuksen rakentamiseksi tekoälyjärjestelmiin.
## Esitiedot
-Esitietona suositellaan "Vastuullisen tekoälyn periaatteet" -oppimispolun suorittamista ja alla olevan videon katsomista aiheesta:
+Esitietona ota "Vastuullisen tekoälyn periaatteet" -oppimispolku ja katso alla oleva video aiheesta:
-Lisätietoja vastuullisesta tekoälystä löydät tästä [oppimispolusta](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)
+Lue lisää Vastuullisesta tekoälystä seuraamalla tätä [Oppimispolkua](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)
[](https://youtu.be/dnC8-uUZXSc "Microsoftin lähestymistapa vastuulliseen tekoälyyn")
-> 🎥 Klikkaa yllä olevaa kuvaa: Microsoftin lähestymistapa vastuulliseen tekoälyyn
+> 🎥 Klikkaa yllä olevaa kuvaa nähdäksesi videon: Microsoftin lähestymistapa vastuulliseen tekoälyyn
## Oikeudenmukaisuus
-Tekoälyjärjestelmien tulisi kohdella kaikkia oikeudenmukaisesti ja välttää vaikuttamasta eri ryhmiin eri tavoin. Esimerkiksi, kun tekoälyjärjestelmät antavat suosituksia lääketieteellisestä hoidosta, lainahakemuksista tai työllistymisestä, niiden tulisi antaa samat suositukset kaikille, joilla on samanlaiset oireet, taloudelliset olosuhteet tai ammatilliset pätevyydet. Meillä kaikilla ihmisillä on perittyjä ennakkoluuloja, jotka vaikuttavat päätöksiimme ja toimintaamme. Nämä ennakkoluulot voivat näkyä datassa, jota käytämme tekoälyjärjestelmien kouluttamiseen. Tällainen manipulointi voi joskus tapahtua tahattomasti. On usein vaikeaa tietoisesti tietää, milloin tuot datassa esiin ennakkoluuloja.
+Tekoälyjärjestelmien tulisi kohdella kaikkia oikeudenmukaisesti ja välttää vaikuttamasta samanlaisiin ihmisryhmiin eri tavoin. Esimerkiksi kun tekoälyjärjestelmät antavat ohjeita lääketieteellisestä hoidosta, lainahakemuksista tai työllistymisestä, niiden tulisi antaa samanlaiset suositukset kaikille, joilla on samankaltaiset oireet, taloudellinen tilanne tai ammatilliset pätevyydet. Me ihmisinä kannamme mukanamme perittyjä ennakkoluuloja, jotka vaikuttavat päätöksiimme ja tekoihimme. Nämä ennakkoluulot voivat näkyä myös data-aineistoissa, joita käytämme tekoälyjärjestelmien kouluttamiseen. Tällainen manipulaatio voi joskus tapahtua tahattomasti. On usein vaikeaa tiedostaa, milloin tuomme vinoumaa dataan.
-**"Epäoikeudenmukaisuus"** kattaa negatiiviset vaikutukset tai "haitat" tietylle ihmisryhmälle, kuten rodun, sukupuolen, iän tai vammaisuuden perusteella. Oikeudenmukaisuuteen liittyvät haitat voidaan luokitella seuraavasti:
+**”Epäoikeudenmukaisuus”** sisältää negatiiviset vaikutukset tai ”vahingot” tietylle ihmisryhmälle, kuten rotu, sukupuoli, ikä tai vammaisuus. Merkittävät oikeudenmukaisuuteen liittyvät haitat voidaan luokitella seuraavasti:
-- **Allokaatio**, jos esimerkiksi sukupuolta tai etnisyyttä suositaan toisen kustannuksella.
-- **Palvelun laatu**. Jos data koulutetaan tiettyyn skenaarioon, mutta todellisuus on paljon monimutkaisempi, se johtaa huonosti toimivaan palveluun. Esimerkiksi käsisaippua-annostelija, joka ei tunnista tumman ihon sävyjä. [Viite](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
-- **Halventaminen**. Epäreilu kritiikki tai leimaaminen. Esimerkiksi kuvantunnistusteknologia, joka virheellisesti luokitteli tumman ihon sävyisiä ihmisiä gorilloiksi.
-- **Yli- tai aliedustus**. Tietyn ryhmän näkymättömyys tietyssä ammatissa, ja palvelut tai toiminnot, jotka ylläpitävät tätä, aiheuttavat haittaa.
-- **Stereotypiointi**. Tietyn ryhmän yhdistäminen ennalta määrättyihin ominaisuuksiin. Esimerkiksi kielikäännösjärjestelmä englannin ja turkin välillä voi sisältää epätarkkuuksia sukupuoleen liittyvien stereotypioiden vuoksi.
+- **Jakautuminen**, jos esimerkiksi sukupuolta tai etnistä ryhmää suositaan toisen yli.
+- **Palvelun laatu**. Jos data on koulutettu vain yhteen tiettyyn tilanteeseen, mutta todellisuus on paljon monimutkaisempi, tuloksena on huonosti toimiva palvelu. Esimerkiksi käsisaippua-annostelija, joka ei tunnistanut tummaihoisia ihmisiä. [Lähde](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
+- **Halventaminen**. Epäreilu kriittisyys ja leimaaminen jotakin tai jotakuta kohtaan. Esimerkiksi kuvantunnistusteknologia väärin luokitteli tummaihoisia ihmisiä gorilloiksi.
+- **Liiallinen tai puutteellinen edustavuus**. Ajatus siitä, että tietty ryhmä ei ole näkyvä tietyssä ammatissa, ja kaikki palvelut tai toiminnot, jotka ylläpitävät tätä, vahingoittavat.
+- **Stereotypioiden luominen**. Tietyn ryhmän yhdistäminen ennalta annettuihin ominaisuuksiin. Esimerkiksi englannin ja turkin kielen käännösjärjestelmässä voi esiintyä epätarkkuuksia, koska sanoilla on sukupuoleen liittyviä stereotypioita.
-
+
> käännös turkiksi
-
+
> käännös takaisin englanniksi
-Kun suunnittelemme ja testaamme tekoälyjärjestelmiä, meidän on varmistettava, että tekoäly on oikeudenmukainen eikä ohjelmoitu tekemään puolueellisia tai syrjiviä päätöksiä, joita ihmisetkään eivät saa tehdä. Oikeudenmukaisuuden takaaminen tekoälyssä ja koneoppimisessa on edelleen monimutkainen sosio-tekninen haaste.
+Kun suunnittelemme ja testaamme tekoälyjärjestelmiä, meidän tulee varmistaa, että tekoäly on oikeudenmukaista eikä ohjelmoitu tekemään vinoutuneita tai syrjiviä päätöksiä, joista ihmisiltäkin on kiellettyä. Vastuullisuuden takaaminen tekoälyssä ja koneoppimisessa on edelleen monimutkainen yhteiskunnallinen haaste.
### Luotettavuus ja turvallisuus
-Luottamuksen rakentamiseksi tekoälyjärjestelmien on oltava luotettavia, turvallisia ja johdonmukaisia sekä normaaleissa että odottamattomissa olosuhteissa. On tärkeää tietää, miten tekoälyjärjestelmät käyttäytyvät erilaisissa tilanteissa, erityisesti poikkeustilanteissa. Tekoälyratkaisuja rakennettaessa on keskityttävä huomattavasti siihen, miten käsitellä monenlaisia olosuhteita, joita tekoälyratkaisut voivat kohdata. Esimerkiksi itseohjautuvan auton on asetettava ihmisten turvallisuus etusijalle. Tämän vuoksi auton tekoälyn on otettava huomioon kaikki mahdolliset skenaariot, kuten yö, ukkosmyrskyt tai lumimyrskyt, kadulle juoksevat lapset, lemmikit, tietyömaat jne. Se, kuinka hyvin tekoälyjärjestelmä pystyy käsittelemään laajan valikoiman olosuhteita luotettavasti ja turvallisesti, heijastaa sitä, kuinka hyvin datatieteilijä tai tekoälykehittäjä on ennakoinut tilanteita suunnittelussa tai testauksessa.
+Luottamuksen rakentamiseksi tekoälyjärjestelmien tulee olla luotettavia, turvallisia ja johdonmukaisia normaaleissa ja odottamattomissa tilanteissa. On tärkeää tietää, miten tekoäly toimii erilaisissa tilanteissa, erityisesti poikkeustapauksissa. Kun rakennetaan tekoälyratkaisuja, on keskeistä keskittyä siihen, miten järjestelmä käsittelee laajaa kirjoa tilanteita, joita se kohtaisi. Esimerkiksi itseajavan auton tulee asettaa ihmisten turvallisuus etusijalle. Siksi auton tekoälyn täytyy ottaa huomioon kaikki mahdolliset tilanteet, kuten yö, ukkosmyrskyt, lumimyrskyt, lapset juoksemassa kadun poikki, lemmikit, tienrakennustyöt jne. Kuinka hyvin tekoäly pystyy luotettavasti ja turvallisesti käsittelemään monenlaista tilannetta heijastaa,data scientistin tai tekoälyn kehittäjän ennakointikykyä suunnittelun ja testauksen aikana.
> [🎥 Klikkaa tästä videoon: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
-### Osallistavuus
+### Osallisuus
-Tekoälyjärjestelmät tulisi suunnitella siten, että ne osallistavat ja voimaannuttavat kaikkia. Tekoälyjärjestelmiä suunnitellessaan ja toteuttaessaan datatieteilijät ja tekoälykehittäjät tunnistavat ja ratkaisevat järjestelmän mahdolliset esteet, jotka voisivat tahattomasti sulkea ihmisiä ulkopuolelle. Esimerkiksi maailmassa on miljardi vammaista ihmistä. Tekoälyn kehityksen myötä he voivat helpommin saada pääsyn laajaan valikoimaan tietoa ja mahdollisuuksia jokapäiväisessä elämässään. Esteiden poistaminen luo mahdollisuuksia innovoida ja kehittää tekoälytuotteita, jotka tarjoavat parempia kokemuksia kaikille.
+Tekoälyjärjestelmät tulee suunnitella siten, että ne aktivoivat ja voimaannuttavat kaikkia. Tekoälytieteilijät ja kehittäjät tunnistavat ja poistavat järjestelmän potentiaaliset esteet, jotka voivat tahattomasti syrjiä ihmisiä. Esimerkiksi maailmassa on miljardi ihmistä, joilla on vamma. Tekoälyn kehittyessä he voivat helpommin saada pääsyn monenlaiseen tietoon ja mahdollisuuksiin arjessaan. Esteiden poistaminen luo mahdollisuuksia innovoida ja kehittää tekoälytuotteita, jotka tarjoavat parempia käyttökokemuksia ja hyödyttävät kaikkia.
-> [🎥 Klikkaa tästä videoon: osallistavuus tekoälyssä](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
+> [🎥 Klikkaa tästä videoon: osallisuus tekoälyssä](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
### Turvallisuus ja yksityisyys
-Tekoälyjärjestelmien tulisi olla turvallisia ja kunnioittaa ihmisten yksityisyyttä. Ihmiset luottavat vähemmän järjestelmiin, jotka vaarantavat heidän yksityisyytensä, tietonsa tai elämänsä. Koneoppimismalleja koulutettaessa luotamme dataan parhaiden tulosten saavuttamiseksi. Tällöin datan alkuperä ja eheys on otettava huomioon. Esimerkiksi, onko data käyttäjän toimittamaa vai julkisesti saatavilla? Lisäksi datan kanssa työskenneltäessä on tärkeää kehittää tekoälyjärjestelmiä, jotka voivat suojata luottamuksellisia tietoja ja vastustaa hyökkäyksiä. Tekoälyn yleistyessä yksityisyyden suojaaminen ja tärkeiden henkilö- ja yritystietojen turvaaminen on yhä kriittisempää ja monimutkaisempaa. Yksityisyyteen ja tietoturvaan liittyvät kysymykset vaativat erityistä huomiota tekoälyssä, koska datan saatavuus on olennaista tekoälyjärjestelmien tarkkojen ja perusteltujen ennusteiden ja päätösten tekemiseksi.
+Tekoälyjärjestelmien tulee olla turvallisia ja kunnioittaa ihmisten yksityisyyttä. Ihmiset luottavat vähemmän järjestelmiin, jotka asettavat heidän yksityisyytensä, tietonsa tai henkensä vaaraan. Koneoppimismallien kouluttamisessa luotamme dataan parhaiden tulosten tuottamiseksi. Tässä yhteydessä datan alkuperä ja eheys tulee ottaa huomioon. Esimerkiksi, onko data käyttäjän lähettämää vai julkisesti saatavilla? Työskennellessä datan kanssa on keskeistä kehittää tekoälyjärjestelmiä, jotka voivat suojella luottamuksellisia tietoja ja kestää hyökkäyksiä. Kun tekoälyn käyttö kasvaa, yksityisyyden suojaaminen ja tärkeiden henkilö- ja liiketietojen turvaaminen tulee yhä tärkeämmäksi ja monimutkaisemmaksi. Yksityisyys- ja tietoturva-asioihin on kiinnitettävä erityistä huomiota tekoälyn kohdalla, koska tieto on välttämätöntä, jotta tekoäly pystyy tekemään tarkkoja ja tietoon perustuvia ennusteita ja päätöksiä ihmisistä.
> [🎥 Klikkaa tästä videoon: turvallisuus tekoälyssä](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- Teollisuutena olemme saavuttaneet merkittäviä edistysaskeleita yksityisyydessä ja turvallisuudessa, erityisesti GDPR:n (General Data Protection Regulation) kaltaisten säädösten ansiosta.
-- Tekoälyjärjestelmien kohdalla meidän on kuitenkin tunnustettava jännite henkilökohtaisemman datan tarpeen ja yksityisyyden välillä.
-- Kuten internetin myötä yhdistettyjen tietokoneiden syntyessä, myös tekoälyyn liittyvien turvallisuusongelmien määrä on kasvanut merkittävästi.
-- Samalla olemme nähneet tekoälyn käytön turvallisuuden parantamisessa. Esimerkiksi useimmat modernit virustorjuntaohjelmat perustuvat tekoälyyn.
-- Meidän on varmistettava, että datatieteen prosessimme sulautuvat harmonisesti uusimpiin yksityisyyden ja turvallisuuden käytäntöihin.
+- Toimialana olemme tehneet merkittäviä edistysaskelia yksityisyyden ja turvallisuuden saralla, mihin osaltaan ovat vaikuttaneet voimakkaasti säädökset kuten GDPR (Yleinen tietosuoja-asetus).
+- Kuitenkin tekoälyjärjestelmien kohdalla meidän tulee hyväksyä jännite tarpeen välillä saada enemmän henkilökohtaista dataa tehdä järjestelmistä henkilökohtaisempia ja tehokkaampia – ja yksityisyyden välillä.
+- Samoin kuin internetin ja yhdistettyjen tietokoneiden synnyn aikaan, myös tekoälyyn liittyvien tietoturvaongelmien määrä on kasvanut huomattavasti.
+- Samalla tekoälyä on käytetty turvallisuuden parantamiseen. Esimerkiksi useimmat nykyaikaiset virustorjuntaohjelmat käyttävät tekoälyä heuristiikkana.
+- Meidän tulee varmistaa, että datatieteelliset prosessimme ovat yhteensopivia viimeisimpien yksityisyys- ja turvallisuuskäytäntöjen kanssa.
-### Läpinäkyvyys
-Tekoälyjärjestelmien tulisi olla ymmärrettäviä. Läpinäkyvyyden keskeinen osa on tekoälyjärjestelmien ja niiden komponenttien käyttäytymisen selittäminen. Tekoälyjärjestelmien ymmärtämisen parantaminen edellyttää, että sidosryhmät ymmärtävät, miten ja miksi ne toimivat, jotta he voivat tunnistaa mahdolliset suorituskykyongelmat, turvallisuus- ja yksityisyyshuolenaiheet, puolueellisuudet, poissulkevat käytännöt tai ei-toivotut tulokset. Lisäksi uskomme, että niiden, jotka käyttävät tekoälyjärjestelmiä, tulisi olla rehellisiä ja avoimia siitä, milloin, miksi ja miten he päättävät ottaa ne käyttöön. Samoin heidän tulisi kertoa järjestelmien rajoituksista. Esimerkiksi, jos pankki käyttää tekoälyjärjestelmää tukemaan kuluttajalainapäätöksiä, on tärkeää tarkastella tuloksia ja ymmärtää, mitkä tiedot vaikuttavat järjestelmän suosituksiin. Hallitukset ovat alkaneet säännellä tekoälyä eri toimialoilla, joten datatieteilijöiden ja organisaatioiden on selitettävä, täyttääkö tekoälyjärjestelmä sääntelyvaatimukset, erityisesti silloin, kun tulos on ei-toivottu.
+### Läpinäkyvyys
+Tekoälyjärjestelmien tulee olla ymmärrettäviä. Olennainen osa läpinäkyvyyttä on tekoälyjärjestelmien ja niiden osien käyttäytymisen selittäminen. Tekoälyjärjestelmien ymmärtämisen parantaminen edellyttää, että sidosryhmät ymmärtävät, miten ja miksi ne toimivat, jotta he voivat tunnistaa mahdolliset suorituskykyongelmat, turvallisuus- ja yksityisyysongelmat, vinoumat, syrjivät käytännöt tai ei-toivotut lopputulokset. Uskomme myös, että tekoälyjärjestelmiä käyttävien tulee olla rehellisiä ja avoimia siitä, milloin, miksi ja miten he ottavat ne käyttöön. Samoin järjestelmien rajoituksista, joita he käyttävät. Esimerkiksi, jos pankki käyttää tekoälyjärjestelmää tukemaan kuluttajalainapäätöksiä, on tärkeää tarkastella tuloksia ja ymmärtää, mikä data vaikuttaa järjestelmän suosituksiin. Hallitukset alkavat säädellä tekoälyä eri aloilla, joten datatieteilijöiden ja organisaatioiden täytyy pystyä selittämään, täyttääkö tekoälyjärjestelmä säädösvaatimukset, etenkin kun lopputulos on epätoivottu.
> [🎥 Klikkaa tästä videoon: läpinäkyvyys tekoälyssä](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- Koska tekoälyjärjestelmät ovat niin monimutkaisia, niiden toiminnan ymmärtäminen ja tulosten tulkitseminen on vaikeaa.
-- Tämä ymmärryksen puute vaikuttaa siihen, miten näitä järjestelmiä hallitaan, otetaan käyttöön ja dokumentoidaan.
-- Tämä ymmärryksen puute vaikuttaa vielä enemmän päätöksiin, joita tehdään näiden järjestelmien tuottamien tulosten perusteella.
-
-### Vastuu
+- Koska tekoälyjärjestelmät ovat niin monimutkaisia, on vaikea ymmärtää, miten ne toimivat, ja tulkita tuloksia.
+- Tämä ymmärryksen puute vaikuttaa siihen, miten järjestelmiä hallinnoidaan, otetaan käyttöön ja dokumentoidaan.
+- Tämä ymmärryksen puute vaikuttaa vielä merkittävimmin päätöksiin, joita tehdään järjestelmien tuottamien tulosten perusteella.
-Tekoälyjärjestelmiä suunnittelevien ja käyttävien ihmisten on oltava vastuussa siitä, miten heidän järjestelmänsä toimivat. Vastuun tarve on erityisen tärkeä arkaluonteisten teknologioiden, kuten kasvojentunnistuksen, kohdalla. Viime aikoina kasvojentunnistusteknologian kysyntä on kasvanut, erityisesti lainvalvontaviranomaisten keskuudessa, jotka näkevät teknologian potentiaalin esimerkiksi kadonneiden lasten löytämisessä. Näitä teknologioita voitaisiin kuitenkin käyttää hallitusten toimesta vaarantamaan kansalaisten perusoikeuksia, esimerkiksi mahdollistamalla jatkuva tiettyjen henkilöiden valvonta. Siksi datatieteilijöiden ja organisaatioiden on oltava vastuussa siitä, miten heidän tekoälyjärjestelmänsä vaikuttavat yksilöihin tai yhteiskuntaan.
+### Vastuullisuus
+
+Ihmisten, jotka suunnittelevat ja ottavat käyttöön tekoälyjärjestelmiä, on oltava vastuussa niiden toiminnasta. Vastuullisuuden tarve korostuu erityisesti arkaluontoisten teknologioiden, kuten kasvojentunnistuksen, kohdalla. Viime aikoina on lisääntynyt kysyntä kasvojentunnistusteknologialle, erityisesti lainvalvontajärjestöjen keskuudessa, jotka näkevät sen potentiaalin esimerkiksi kadonneiden lasten löytämisessä. Kuitenkin näitä teknologioita voisi mahdollisesti käyttää hallitus asettamaan kansalaistensa perusoikeuksia vaaraan, esimerkiksi sallimalla jatkuvan valvonnan tiettyjä henkilöitä kohtaan. Näin ollen datatieteilijöiden ja organisaatioiden on oltava vastuussa siitä, miten heidän tekoälyjärjestelmänsä vaikuttaa yksilöihin tai yhteiskuntaan.
-[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoftin lähestymistapa vastuulliseen tekoälyyn")
+[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoftin lähestymistapa vastuulliseen tekoälyyn")
-> 🎥 Klikkaa yllä olevaa kuvaa: Varoituksia kasvojentunnistuksen massavalvonnasta
+> 🎥 Klikkaa yllä olevaa kuvaa videoon: Varotoimet massavalvontaa vastaan kasvojentunnistuksen avulla
-Lopulta yksi sukupolvemme suurimmista kysymyksistä, ensimmäisenä sukupolvena, joka tuo tekoälyn yhteiskuntaan, on se, miten varmistamme, että tietokoneet pysyvät vastuussa ihmisille ja miten varmistamme, että tietokoneita suunnittelevat ihmiset pysyvät vastuussa kaikille muille.
+Lopulta yksi suurimmista sukupolveamme koskevista kysymyksistä, kun olemme ensimmäinen tekoälyn yhteiskuntaan tuova sukupolvi, on miten varmistamme, että tietokoneet pysyvät vastuullisina ihmisille ja että tietokoneita suunnittelevat ihmiset pysyvät vastuullisina kaikille muille.
## Vaikutusten arviointi
-Ennen koneoppimismallin kouluttamista on tärkeää suorittaa vaikutusten arviointi ymmärtääkseen tekoälyjärjestelmän tarkoitus, sen aiottu käyttö, missä se otetaan käyttöön ja ketkä ovat vuorovaikutuksessa järjestelmän kanssa. Nämä ovat hyödyllisiä arvioijille tai testaajille, jotta he tietävät, mitkä tekijät on otettava huomioon mahdollisia riskejä ja odotettuja seurauksia tunnistettaessa.
+Ennen koneoppimismallin kouluttamista on tärkeää tehdä vaikutusten arviointi ymmärtääkseen tekoälyjärjestelmän tarkoituksen; millainen sen suunniteltu käyttötarkoitus on; missä sitä käytetään ja keiden kanssa järjestelmä toimii. Nämä tiedot auttavat arvioijia tai testaajia ottamaan huomioon tekijät, kun he tunnistavat mahdollisia riskejä ja odotettuja seurauksia.
+
+Alla on painopistealueita vaikutusten arvioinnissa:
+
+* **Haitalliset vaikutukset yksilöihin**. On tärkeää olla tietoinen rajoituksista tai vaatimuksista, tuettomista käyttötarkoituksista tai tunnetuista rajoituksista, jotka häiritsevät järjestelmän suorituskykyä, jotta vältetään haitalliset vaikutukset yksilöihin.
+* **Datan vaatimukset**. Ymmärtämällä, miten ja missä järjestelmä käyttää dataa, arvioijat voivat tutkia mahdollisia datavaatimuksia (esim. GDPR- tai HIPAA-säädökset). Lisäksi on tarkasteltava, onko datan lähde tai määrä riittävä koulutukseen.
+* **Vaikutusten yhteenveto**. Kerää lista mahdollisista haittavaikutuksista, joita järjestelmän käyttö voisi aiheuttaa. Koneoppimiselinkaaren aikana arvioi, onko tunnistetut ongelmat lievennetty tai korjattu.
+* **Sovellettavat tavoitteet** kullekin kuudesta perusperiaatteesta. Arvioi, täyttyvätkö periaatteiden tavoitteet ja onko puutteita.
+
+
+## Virheiden korjaus vastuullisella tekoälyllä
+
+Samoin kuin ohjelmistosovelluksen virheenkorjaus, myös tekoälyjärjestelmän virheenkorjaus on välttämätön prosessi järjestelmän ongelmien tunnistamiseksi ja ratkaisemiseksi. On monia tekijöitä, jotka voivat vaikuttaa siihen, että malli ei toimi odotetusti tai vastuullisesti. Useimmat perinteiset mallin suorituskykymittarit ovat mallin suorituskyvyn numeerisia yhteenlaskuja, mutta ne eivät riitä analysoimaan, miten malli rikkoo vastuullisen tekoälyn periaatteita. Lisäksi koneoppimismalli on musta laatikko, mikä tekee vaikeaksi ymmärtää, mikä ohjaa sen tuloksia tai selittää virheitä. Myöhemmin tässä kurssissa opimme käyttämään vastuullisen tekoälyn hallintapaneelia auttamaan tekoälyjärjestelmien virheenkorjauksessa. Hallintapaneeli tarjoaa kokonaisvaltaisen työkalun datatieteilijöille ja tekoälyn kehittäjille seuraaviin tehtäviin:
+
+* **Virheanalyysi**. Mallin virheiden jakautumisen tunnistaminen, mikä voi vaikuttaa järjestelmän oikeudenmukaisuuteen tai luotettavuuteen.
+* **Mallin yleiskatsaus**. Mallin suorituskyvyn erojen tunnistaminen eri datajoukoissa.
+* **Datan analyysi**. Datan jakautumisen ymmärtäminen ja mahdollisten vinoumien tunnistaminen, jotka voivat johtaa oikeudenmukaisuuden, osallisuuden ja luotettavuuden ongelmiin.
+* **Mallin tulkittavuus**. Ymmärtää, mikä vaikuttaa tai ohjaa mallin ennusteita. Tämä auttaa selittämään mallin käyttäytymistä, mikä on tärkeää läpinäkyvyyden ja vastuullisuuden kannalta.
+
-Seuraavat ovat keskeisiä alueita vaikutusten arvioinnissa:
+## 🚀 Haaste
+
+Estääksemme vahinkojen syntymisen, meidän tulisi:
-- **Haitalliset vaikutukset yksilöihin**. On tärkeää olla tietoinen kaikista rajoituksista tai vaatimuksista, tukemattomasta käytöstä tai tunnetuista rajoituksista, jotka voivat haitata järjestelmän suorituskykyä, jotta varmistetaan, ettei järjestelmää käytetä tavalla, joka voisi aiheuttaa haittaa yksilöille.
-- **Datan vaatimukset**. Ymmärtämällä, miten ja missä järjestelmä käyttää dataa, arvioijat voivat tutkia mahdollisia datavaatimuksia, jotka on otettava huomioon (esim. GDPR- tai HIPPA-säädökset). Lisäksi on tarkasteltava, onko datan lähde tai määrä riittävä koulutukseen.
-- **Vaikutusten yhteenveto**. Kerää lista mahdollisista haitoista, joita järjestelmän käytöstä voi aiheutua. Koko koneoppimisen elinkaaren ajan tarkista, onko tunnistettuja ongelmia lievennetty tai ratkaistu.
-- **Sovellettavat tavoitteet** kuudelle ydinperiaatteelle. Arvioi, täyttyvätkö kunkin periaatteen tavoitteet ja onko niissä puutteita.
+- varmistaa, että järjestelmien parissa työskentelee monipuolisesti eri taustoista ja näkökulmista tulevia ihmisiä
+- investoida aineistoihin, jotka heijastavat yhteiskuntamme monimuotoisuutta
+- kehittää parempia menetelmiä koneoppimisen elinkaaren aikana vastuullisen tekoälyn tunnistamiseen ja korjaamiseen
-## Vastuullisen tekoälyn debuggaus
+Mieti tosielämän tilanteita, joissa mallin epäluotettavuus tulee ilmi mallin rakentamisessa ja käytössä. Mitä muuta meidän pitäisi ottaa huomioon?
-Kuten ohjelmistosovelluksen debuggaus, myös tekoälyjärjestelmän debuggaus on välttämätön prosessi järjestelmän ongelmien tunnistamiseksi ja ratkaisemiseksi. On monia tekijöitä, jotka voivat vaikuttaa siihen, että malli ei toimi odotetusti tai vastuullisesti. Useimmat perinteiset mallin suorituskykymittarit ovat määrällisiä yhteenvetoja mallin suorituskyvystä, eivätkä ne riitä analysoimaan, miten malli rikkoo vastuullisen tekoälyn periaatteita. Lisäksi koneoppimismalli on "musta laatikko", mikä vaikeuttaa sen tulosten ymmärtämistä tai selittämistä, kun se tekee virheen. Myöhemmin tässä kurssissa opimme käyttämään vastuullisen tekoälyn hallintapaneelia tekoälyjärjestelmien debuggaamiseen. Hallintapaneeli tarjoaa kokonaisvaltaisen työkalun datatieteilijöille ja tekoälykehittäjille seuraaviin tarkoituksiin:
+## [Jälkikysely](https://ff-quizzes.netlify.app/en/ml/)
-- **Virheanalyysi**. Mallin virhejakautuman tunnistaminen, joka voi vaikuttaa järjestelmän oikeudenmukaisuuteen tai luotett
-Katso tämä työpaja, joka syventyy aiheisiin:
+## Kertaus & Itsenäinen opiskelu
+
-- Vastuullisen tekoälyn tavoittelu: Periaatteiden tuominen käytäntöön, esittäjät Besmira Nushi, Mehrnoosh Sameki ja Amit Sharma
+Tässä oppitunnissa olet oppinut joitakin koneoppimisen oikeudenmukaisuuden ja epäoikeudenmukaisuuden käsitteiden perusteita.
+
+Katso tämä työpaja saadaksesi syvällisempää tietoa aiheista:
-[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: Avoimen lähdekoodin kehys vastuullisen tekoälyn rakentamiseen")
+- Kohti vastuullista tekoälyä: Periaatteiden vieminen käytäntöön, esittäjinä Besmira Nushi, Mehrnoosh Sameki ja Amit Sharma
+[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI")
-> 🎥 Klikkaa yllä olevaa kuvaa nähdäksesi videon: RAI Toolbox: Avoimen lähdekoodin kehys vastuullisen tekoälyn rakentamiseen, esittäjät Besmira Nushi, Mehrnoosh Sameki ja Amit Sharma
+> 🎥 Klikkaa yllä olevaa kuvaa videoon: RAI Toolbox: Avoimen lähdekoodin kehys vastuullisen tekoälyn rakentamiseen, esittäjinä Besmira Nushi, Mehrnoosh Sameki ja Amit Sharma
-Lue myös:
+Tutustu myös:
- Microsoftin RAI-resurssikeskus: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
@@ -127,7 +149,7 @@ Lue myös:
RAI Toolbox:
-- [Responsible AI Toolbox GitHub -repository](https://github.com/microsoft/responsible-ai-toolbox)
+- [Responsible AI Toolboxin GitHub-repositorio](https://github.com/microsoft/responsible-ai-toolbox)
Lue Azure Machine Learningin työkaluista, jotka varmistavat oikeudenmukaisuuden:
@@ -139,5 +161,7 @@ Lue Azure Machine Learningin työkaluista, jotka varmistavat oikeudenmukaisuuden
---
-**Vastuuvapauslauseke**:
-Tämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua [Co-op Translator](https://github.com/Azure/co-op-translator). Vaikka pyrimme tarkkuuteen, huomioithan, että automaattiset käännökset voivat sisältää virheitä tai epätarkkuuksia. Alkuperäistä asiakirjaa sen alkuperäisellä kielellä tulisi pitää ensisijaisena lähteenä. Kriittisen tiedon osalta suositellaan ammattimaista ihmiskäännöstä. Emme ole vastuussa väärinkäsityksistä tai virhetulkinnoista, jotka johtuvat tämän käännöksen käytöstä.
\ No newline at end of file
+
+**Vastuuvapauslauseke**:
+Tämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua [Co-op Translator](https://github.com/Azure/co-op-translator). Vaikka pyrimme tarkkuuteen, otathan huomioon, että automaattiset käännökset saattavat sisältää virheitä tai epätarkkuuksia. Alkuperäinen asiakirja sen alkuperäiskielellä on virallinen lähde. Tärkeissä asioissa suositellaan ammattimaista ihmiskäännöstä. Emme ole vastuussa tämän käännöksen käytöstä aiheutuvista väärinymmärryksistä tai tulkinnoista.
+
\ No newline at end of file
diff --git a/translations/fi/2-Regression/1-Tools/README.md b/translations/fi/2-Regression/1-Tools/README.md
index 02624308c..378a22698 100644
--- a/translations/fi/2-Regression/1-Tools/README.md
+++ b/translations/fi/2-Regression/1-Tools/README.md
@@ -1,120 +1,121 @@
-# Aloita Pythonin ja Scikit-learnin käyttö regressiomallien kanssa
+# Aloita Pythonin ja Scikit-learnin kanssa regressiomallien tekeminen
-
+
-> Luonnosmuistiinpanon tekijä [Tomomi Imura](https://www.twitter.com/girlie_mac)
+> Sketchnote tekijältä [Tomomi Imura](https://www.twitter.com/girlie_mac)
-## [Esiluennon kysely](https://ff-quizzes.netlify.app/en/ml/)
+## [Alkuverkkokysely](https://ff-quizzes.netlify.app/en/ml/)
-> ### [Tämä oppitunti on saatavilla myös R-kielellä!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
+> ### [Tämä opetus on saatavilla myös R:llä!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
## Johdanto
-Näissä neljässä oppitunnissa opit rakentamaan regressiomalleja. Keskustelemme pian siitä, mihin niitä käytetään. Mutta ennen kuin aloitat, varmista, että sinulla on oikeat työkalut valmiina prosessin aloittamiseen!
+Näissä neljässä oppitunnissa opit rakentamaan regressiomalleja. Keskustelemme pian, mihin niitä tarvitaan. Mutta ennen kuin aloitat, varmista, että sinulla on oikeat työkalut käytettävissä prosessin aloittamiseksi!
Tässä oppitunnissa opit:
- Konfiguroimaan tietokoneesi paikallisia koneoppimistehtäviä varten.
-- Työskentelemään Jupyter-notebookien kanssa.
-- Käyttämään Scikit-learnia, mukaan lukien asennus.
+- Työskentelemään Jupyter Notebookien kanssa.
+- Käyttämään Scikit-learnia, mukaan lukien asennuksen.
- Tutustumaan lineaariseen regressioon käytännön harjoituksen avulla.
-## Asennukset ja konfiguroinnit
+## Asennukset ja asetukset
-[](https://youtu.be/-DfeD2k2Kj0 "ML aloittelijoille - Valmista työkalusi koneoppimismallien rakentamiseen")
+[](https://youtu.be/-DfeD2k2Kj0 "Aloittelijoille ML - Valmistele työkalut koneoppimismallien rakentamista varten")
> 🎥 Klikkaa yllä olevaa kuvaa lyhyen videon katsomiseksi, jossa käydään läpi tietokoneen konfigurointi ML:ää varten.
-1. **Asenna Python**. Varmista, että [Python](https://www.python.org/downloads/) on asennettu tietokoneellesi. Pythonia käytetään monissa data-analytiikan ja koneoppimisen tehtävissä. Useimmissa tietokonejärjestelmissä Python on jo valmiiksi asennettuna. Käytettävissä on myös hyödyllisiä [Python Coding Packeja](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott), jotka helpottavat asennusta joillekin käyttäjille.
+1. **Asenna Python**. Varmista, että [Python](https://www.python.org/downloads/) on asennettu tietokoneellesi. Käytät Pythonia monissa datatieteen ja koneoppimisen tehtävissä. Useimmissa tietokonejärjestelmissä on valmiiksi asennettuna Python. On myös hyödyllisiä [Python-koodauspaketteja](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott), jotka helpottavat asennusta joillekin käyttäjille.
- Joissakin Pythonin käyttötapauksissa tarvitaan yksi versio ohjelmistosta, kun taas toisissa tarvitaan eri versio. Tämän vuoksi on hyödyllistä työskennellä [virtuaaliympäristössä](https://docs.python.org/3/library/venv.html).
+ Joissakin Pythonin käyttötapauksissa tarvitaan yksi ohjelmistoversio, kun taas toiset vaativat toisen version. Tästä syystä on hyödyllistä työskennellä [virtuaaliympäristössä](https://docs.python.org/3/library/venv.html).
-2. **Asenna Visual Studio Code**. Varmista, että Visual Studio Code on asennettu tietokoneellesi. Seuraa näitä ohjeita [Visual Studio Coden asentamiseksi](https://code.visualstudio.com/) perusasennusta varten. Tässä kurssissa käytät Pythonia Visual Studio Codessa, joten kannattaa tutustua siihen, miten [Visual Studio Code konfiguroidaan](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) Python-kehitystä varten.
+2. **Asenna Visual Studio Code**. Varmista, että sinulla on Visual Studio Code asennettuna tietokoneellesi. Noudata näitä ohjeita [Visual Studio Coden asentamiseksi](https://code.visualstudio.com/) perusasennusta varten. Aiot käyttää Pythonia Visual Studio Codessa tässä kurssissa, joten saatat haluta kerrata, miten [konfiguroidaan Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) Python-kehitystä varten.
- > Tutustu Pythonin käyttöön käymällä läpi tämä kokoelma [Learn-moduuleja](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)
+ > Tutustu Pythonin käyttöön työskentelemällä tämän kokoelman [Learn-moduulien](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) parissa
>
- > [](https://youtu.be/yyQM70vi7V8 "Pythonin konfigurointi Visual Studio Codessa")
+ > [](https://youtu.be/yyQM70vi7V8 "Pythonin asennus Visual Studio Codeen")
>
- > 🎥 Klikkaa yllä olevaa kuvaa videon katsomiseksi: Pythonin käyttö VS Codessa.
+ > 🎥 Klikkaa yllä olevaa kuvaa näyttääksesi videon Pythonin käytöstä VS Codessa.
-3. **Asenna Scikit-learn** seuraamalla [näitä ohjeita](https://scikit-learn.org/stable/install.html). Koska sinun täytyy varmistaa, että käytät Python 3:a, on suositeltavaa käyttää virtuaaliympäristöä. Huomaa, että jos asennat tämän kirjaston M1 Macille, sivulla on erityisohjeita.
+3. **Asenna Scikit-learn** seuraamalla [näitä ohjeita](https://scikit-learn.org/stable/install.html). Koska sinun täytyy käyttää Python 3:sta, on suositeltavaa käyttää virtuaaliympäristöä. Huomaa, että jos asennat tätä kirjastoa M1-Macille, sivulla on erikoisohjeita.
-4. **Asenna Jupyter Notebook**. Sinun täytyy [asentaa Jupyter-paketti](https://pypi.org/project/jupyter/).
+1. **Asenna Jupyter Notebook**. Sinun tulee [asenna Jupyter-paketti](https://pypi.org/project/jupyter/).
-## ML-kehitysympäristösi
+## ML:n kirjoitusympäristö
-Käytät **notebookeja** Python-koodin kehittämiseen ja koneoppimismallien luomiseen. Tällainen tiedostotyyppi on yleinen työkalu data-analyytikoille, ja ne tunnistaa niiden päätteestä `.ipynb`.
+Aiot käyttää **notebookeja** Python-koodin kehittämiseen ja koneoppimismallien luomiseen. Tällainen tiedosto on yleinen työkalu datatieteilijöille, ja ne tunnistaa tiedostopäätteestä `.ipynb`.
-Notebookit ovat interaktiivinen ympäristö, joka mahdollistaa sekä koodauksen että dokumentaation lisäämisen koodin ympärille, mikä on erittäin hyödyllistä kokeellisiin tai tutkimusprojekteihin.
+Notebookit ovat interaktiivinen ympäristö, joka sallii kehittäjän sekä koodata että lisätä muistiinpanoja ja kirjoittaa dokumentaatiota koodin ympärille, mikä on hyödyllistä kokeellisissa tai tutkimuspainotteisissa projekteissa.
-[](https://youtu.be/7E-jC8FLA2E "ML aloittelijoille - Jupyter Notebookien asennus regressiomallien rakentamisen aloittamiseksi")
+[](https://youtu.be/7E-jC8FLA2E "Aloittelijoille ML - Jupyter Notebookien asennus regressiomallien rakentamisen aloittamiseksi")
> 🎥 Klikkaa yllä olevaa kuvaa lyhyen videon katsomiseksi, jossa käydään läpi tämä harjoitus.
-### Harjoitus - työskentele notebookin kanssa
+### Harjoitus - työskentely notebookin kanssa
Tässä kansiossa löydät tiedoston _notebook.ipynb_.
1. Avaa _notebook.ipynb_ Visual Studio Codessa.
- Jupyter-palvelin käynnistyy Python 3+:lla. Löydät notebookista alueita, jotka voidaan `ajaa`, eli koodinpätkiä. Voit ajaa koodilohkon valitsemalla kuvakkeen, joka näyttää toistopainikkeelta.
+ Jupyter-palvelin käynnistyy, jossa Python 3+ on aloittaen. Löydät notebookin alueita, joita voi `ajaa`, eli koodilohkoja. Voit ajaa koodilohkon valitsemalla painikkeen, joka näyttää toistopainikkeelta.
-2. Valitse `md`-kuvake ja lisää hieman markdownia sekä seuraava teksti **# Tervetuloa notebookiisi**.
+1. Valitse `md`-ikoni ja lisää vähän markdown-koodia sekä seuraava teksti **# Tervetuloa notebookiisi**.
- Lisää seuraavaksi Python-koodia.
+ Lisää seuraavaksi hieman Python-koodia.
-3. Kirjoita **print('hello notebook')** koodilohkoon.
-4. Valitse nuoli ajaaksesi koodin.
+1. Kirjoita koodilohkoon **print('hello notebook')**.
+1. Valitse nuoli koodin ajamiseksi.
- Näet tulostetun lauseen:
+ Näet tulosteen:
```output
hello notebook
```
-
+
-Voit yhdistää koodisi kommentteihin dokumentoidaksesi notebookin itse.
+Voit sijoittaa koodin väliin kommentteja dokumentoidaksesi notebookia itse.
-✅ Mieti hetki, kuinka erilainen web-kehittäjän työympäristö on verrattuna data-analyytikon työympäristöön.
+✅ Mieti hetki, kuinka erilainen web-kehittäjän työympäristö on verrattuna datatieteilijän ympäristöön.
-## Scikit-learnin käyttöönotto
+## Scikit-learn käyttöön
-Nyt kun Python on asennettu paikalliseen ympäristöösi ja olet mukautunut Jupyter-notebookeihin, tutustutaan yhtä mukavasti Scikit-learniin (lausutaan `sci` kuten `science`). Scikit-learn tarjoaa [laajan API:n](https://scikit-learn.org/stable/modules/classes.html#api-ref), joka auttaa sinua suorittamaan ML-tehtäviä.
+Nyt kun Python on asennettu paikalliseen ympäristöösi ja tunnet olosi mukavaksi Jupyter Notebookien kanssa, tutustutaan yhtä hyvin Scikit-learniin (lausutaan `sci` kuten `science`). Scikit-learn tarjoaa [laajan API:n](https://scikit-learn.org/stable/modules/classes.html#api-ref) auttamaan ML-tehtävissä.
-Heidän [verkkosivustonsa](https://scikit-learn.org/stable/getting_started.html) mukaan "Scikit-learn on avoimen lähdekoodin koneoppimiskirjasto, joka tukee ohjattua ja ohjaamatonta oppimista. Se tarjoaa myös erilaisia työkaluja mallien sovittamiseen, datan esikäsittelyyn, mallien valintaan ja arviointiin sekä moniin muihin hyödyllisiin toimintoihin."
+Heidän [verkkosivustonsa mukaan](https://scikit-learn.org/stable/getting_started.html) "Scikit-learn on avoimen lähdekoodin koneoppimiskirjasto, joka tukee valvottua ja valvomattomia oppimista. Se tarjoaa myös työkaluja mallin sovittamiseen, datan esikäsittelyyn, mallin valintaan ja arviointiin sekä monia muita apuvälineitä."
-Tässä kurssissa käytät Scikit-learnia ja muita työkaluja koneoppimismallien rakentamiseen suorittaaksesi niin sanottuja 'perinteisiä koneoppimistehtäviä'. Olemme tarkoituksella välttäneet neuroverkkoja ja syväoppimista, sillä ne käsitellään paremmin tulevassa 'AI aloittelijoille' -opetussuunnitelmassamme.
+Tässä kurssissa käytät Scikit-learnia ja muita työkaluja koneoppimismallien rakentamiseen niin sanottujen perinteisten koneoppimistehtävien suorittamiseen. Olemme tietoisesti välttäneet neuroverkkoja ja syväoppimista, jotka käsitellään paremmin tulevassa 'AI for Beginners' -oppiaineistossamme.
-Scikit-learn tekee mallien rakentamisesta ja niiden arvioinnista helppoa. Se keskittyy pääasiassa numeerisen datan käyttöön ja sisältää useita valmiita datasettiä oppimistyökaluiksi. Se sisältää myös valmiiksi rakennettuja malleja, joita opiskelijat voivat kokeilla. Tutustutaan prosessiin, jossa ladataan valmiiksi pakattua dataa ja käytetään sisäänrakennettua estimaattoria ensimmäisen ML-mallin luomiseen Scikit-learnilla perusdatan avulla.
+Scikit-learn tekee mallien rakentamisen ja arvioinnin helpoksi. Se keskittyy pääsääntöisesti numeerisen datan käyttöön ja sisältää valmiita datasettejä opetustarkoituksiin. Siinä on myös valmiita malleja opiskelijoiden kokeiltavaksi. Tutkitaan ensin, miten ladataan valmiiksi pakattua dataa ja käytetään sisäänrakennettua estimaattoria ensimmäisen Scikit-learn -mallin kanssa perusdatan avulla.
-## Harjoitus - ensimmäinen Scikit-learn notebookisi
+## Harjoitus - ensimmäinen Scikit-learn -notebookisi
-> Tämä opetus on saanut inspiraationsa [lineaarisen regression esimerkistä](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) Scikit-learnin verkkosivustolla.
+> Tämä opetus on inspiroitunut Scikit-learnin verkkosivun [lineaarisen regression esimerkistä](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 "ML aloittelijoille - Ensimmäinen lineaarisen regression projekti Pythonilla")
+
+[](https://youtu.be/2xkXL5EUpS0 "Aloittelijoille ML - Ensimmäinen projektisi lineaarisessa regressiossa Pythonilla")
> 🎥 Klikkaa yllä olevaa kuvaa lyhyen videon katsomiseksi, jossa käydään läpi tämä harjoitus.
-Poista _notebook.ipynb_-tiedostosta kaikki solut painamalla 'roskakori'-kuvaketta.
+Tyhjennä kaikki solut _notebook.ipynb_ -tiedostosta painamalla 'roskakorin' kuvaketta.
-Tässä osiossa työskentelet pienen datasetin kanssa, joka liittyy diabetekseen ja joka on sisäänrakennettu Scikit-learniin oppimistarkoituksia varten. Kuvittele, että haluaisit testata hoitoa diabeetikoille. Koneoppimismallit voivat auttaa sinua määrittämään, mitkä potilaat reagoisivat hoitoon paremmin, perustuen muuttujien yhdistelmiin. Jopa hyvin yksinkertainen regressiomalli, kun se visualisoidaan, voi paljastaa tietoa muuttujista, jotka auttaisivat sinua järjestämään teoreettisia kliinisiä kokeita.
+Tässä osassa työskentelet pienen diabetesaiheisen datasetin kanssa, joka on osa Scikit-learnia opetustarkoituksiin. Kuvittele, että haluaisit testata hoitokeinoa diabeetikoilla. Koneoppimismallit voivat auttaa määrittämään, mitkä potilaat reagoisivat hoitoon paremmin eri muuttujayhdistelmien perusteella. Jo hyvin peruskäyttöinen regressiomalli, kun se visualisoidaan, voi näyttää tietoja muuttujista, jotka auttaisivat teoreettisten kliinisten kokeiden järjestämistä.
-✅ Regressiomenetelmiä on monenlaisia, ja valinta riippuu siitä, mitä haluat selvittää. Jos haluat ennustaa todennäköistä pituutta tietyn ikäiselle henkilölle, käyttäisit lineaarista regressiota, koska etsit **numeerista arvoa**. Jos haluat selvittää, pitäisikö tiettyä ruokakulttuuria pitää vegaanisena vai ei, etsit **kategoriaa**, joten käyttäisit logistista regressiota. Opit lisää logistisesta regressiosta myöhemmin. Mieti hetki, mitä kysymyksiä voisit esittää datasta ja mikä näistä menetelmistä olisi sopivampi.
+✅ Regressiomenetelmiä on monia, ja valinta riippuu etsimästäsi vastauksesta. Jos haluat ennustaa tietyn ikäisen henkilön mahdollisen pituuden, käytät lineaarista regressiota, koska tarvitset **numeerisen arvon**. Jos taas haluat selvittää, pitäisikö erään ruokalajin luokitella vegaaniseksi, etsit **kategorian määrittämistä** ja käyttäisit logistista regressiota. Opit logistisesta regressiosta myöhemmin. Mieti hieman kysymyksiä, joita voit dataan esittää, ja mitkä menetelmät olisivat sopivimpia.
-Aloitetaan tehtävä.
+Aloitetaan tehtävästä.
### Kirjastojen tuonti
-Tätä tehtävää varten tuomme joitakin kirjastoja:
+Tätä tehtävää varten tuotamme joitakin kirjastoja:
-- **matplotlib**. Se on hyödyllinen [graafinen työkalu](https://matplotlib.org/), ja käytämme sitä viivakaavion luomiseen.
+- **matplotlib**. Se on hyödyllinen [graafinen työkalu](https://matplotlib.org/), jota käytämme viivakaavion luomiseen.
- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) on hyödyllinen kirjasto numeerisen datan käsittelyyn Pythonissa.
- **sklearn**. Tämä on [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) -kirjasto.
-Tuo joitakin kirjastoja auttamaan tehtävissäsi.
+Tuo joitakin kirjastoja tehtävien tueksi.
-1. Lisää tuonnit kirjoittamalla seuraava koodi:
+1. Lisää tuontikoodit kirjoittamalla seuraava koodi:
```python
import matplotlib.pyplot as plt
@@ -122,26 +123,26 @@ Tuo joitakin kirjastoja auttamaan tehtävissäsi.
from sklearn import datasets, linear_model, model_selection
```
- Yllä tuodaan `matplotlib`, `numpy` sekä `datasets`, `linear_model` ja `model_selection` `sklearn`-kirjastosta. `model_selection` käytetään datan jakamiseen harjoitus- ja testijoukkoihin.
+ Yllä tuot `matplotlib`in, `numpyn` ja `datasets`, `linear_model` sekä `model_selection` tuodaan `sklearn`ista. `model_selection` on tarkoitettu datan jakamiseen harjoitus- ja testisarjoihin.
### Diabetes-datasetti
-Sisäänrakennettu [diabetes-datasetti](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) sisältää 442 näytettä diabetekseen liittyvästä datasta, jossa on 10 ominaisuusmuuttujaa, joista osa sisältää:
+Sisäänrakennettu [diabetes-datasetti](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) sisältää 442 näytettä diabetesta koskevaa dataa, 10 piirre-muuttujaa, joista osa on:
-- age: ikä vuosina
-- bmi: kehon massan indeksi
+- age: ikä vuosissa
+- bmi: painoindeksi
- bp: keskimääräinen verenpaine
-- s1 tc: T-solut (eräänlainen valkosolu)
+- s1 tc: T-solut (eräs valkosolutyyppi)
-✅ Tämä datasetti sisältää 'sukupuolen' käsitteen tärkeänä ominaisuusmuuttujana diabetekseen liittyvässä tutkimuksessa. Monet lääketieteelliset datasetit sisältävät tällaisen binääriluokituksen. Mieti hetki, miten tällaiset luokitukset saattavat sulkea pois tiettyjä väestönosia hoidoista.
+✅ Tämä datasetti sisältää 'sukupuoli' -käsitteen piirre-muuttujana, mikä on tärkeä diabetestutkimuksissa. Monet lääketieteelliset datasetit sisältävät tällaisen binaariluokittelun. Mieti hetki, miten tällaiset luokitukset voivat sulkea pois osia väestöstä hoidoista.
-Lataa nyt X- ja y-data.
+Ladataan nyt X- ja y-data.
-> 🎓 Muista, että tämä on ohjattua oppimista, ja tarvitsemme nimetyn 'y'-kohteen.
+> 🎓 Muista, että tämä on valvottua oppimista, ja tarvitsemme nimettyä 'y' kohdetta.
-Uudessa koodisolussa lataa diabetes-datasetti kutsumalla `load_diabetes()`. Syöte `return_X_y=True` ilmoittaa, että `X` on datamatriisi ja `y` on regressiotavoite.
+Lisää uuteen koodisoluun diabetes-datasetin latauskutsu `load_diabetes()`. Parametri `return_X_y=True` tarkoittaa, että `X` on datamatriisi ja `y` on regressiokohde.
-1. Lisää joitakin tulostuskäskyjä näyttämään datamatriisin muoto ja sen ensimmäinen elementti:
+1. Lisää print-komennot näyttämään datamatriisin muoto ja sen ensimmäinen alkio:
```python
X, y = datasets.load_diabetes(return_X_y=True)
@@ -149,9 +150,9 @@ Uudessa koodisolussa lataa diabetes-datasetti kutsumalla `load_diabetes()`. Syö
print(X[0])
```
- Saat vastauksena tuplen. Teet niin, että määrität tuplen kaksi ensimmäistä arvoa `X`:lle ja `y`:lle. Lue lisää [tuplista](https://wikipedia.org/wiki/Tuple).
+ Saat vastauksena tuplen. Teet siten, että tuple:n kaksi ensimmäistä arvoa annetaan muuttujille `X` ja `y`. Lue lisää [tupleista](https://wikipedia.org/wiki/Tuple).
- Näet, että tämä data sisältää 442 kohdetta, jotka on muotoiltu 10 elementin taulukoiksi:
+ Näet, että data sisältää 442 kohdetta, joissa kussakin on 10 alkiota taulukkona:
```text
(442, 10)
@@ -159,39 +160,39 @@ Uudessa koodisolussa lataa diabetes-datasetti kutsumalla `load_diabetes()`. Syö
-0.04340085 -0.00259226 0.01990842 -0.01764613]
```
- ✅ Mieti hetki datan ja regressiotavoitteen välistä suhdetta. Lineaarinen regressio ennustaa suhteita ominaisuuden X ja tavoitemuuttujan y välillä. Voitko löytää [tavoitteen](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) diabetes-datasetille dokumentaatiosta? Mitä tämä datasetti havainnollistaa, kun otetaan huomioon tavoite?
+ ✅ Mieti hetki datan ja regressiokohteen välistä suhdetta. Lineaarinen regressio ennustaa suhteita piirteiden X ja kohde-muuttujan y välillä. Löydätkö [kohteen](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) diabetes-datakokonaisuudesta dokumentaatiosta? Mitä datasetti esittää kyseisen kohteen perusteella?
-2. Valitse seuraavaksi osa tästä datasetistä piirtämistä varten valitsemalla datasetin 3. sarake. Voit tehdä tämän käyttämällä `:`-operaattoria valitaksesi kaikki rivit ja sitten valitsemalla 3. sarakkeen indeksillä (2). Voit myös muotoilla datan 2D-taulukoksi - kuten vaaditaan piirtämistä varten - käyttämällä `reshape(n_rows, n_columns)`. Jos yksi parametreista on -1, vastaava ulottuvuus lasketaan automaattisesti.
+2. Valitse seuraavaksi osa tästä datasetistä plottia varten valitsemalla datan 3. sarake. Voit tehdä sen käyttämällä `:`-operaattoria kaikkien rivien valitsemiseen ja sitten 3. sarakkeen valitsemiseen indeksillä (2). Voit myös muotoilla datan uudelleen 2-ulotteiseksi taulukoksi - joka vaaditaan plottia varten - käyttäen `reshape(n_rivit, n_sarakkeet)`. Jos jompikumpi parametristä on -1, vastaava ulottuvuus lasketaan automaattisesti.
```python
X = X[:, 2]
X = X.reshape((-1,1))
```
- ✅ Tulosta data milloin tahansa tarkistaaksesi sen muodon.
+ ✅ Tulosta milloin tahansa data tarkistaaksesi sen muodon.
-3. Nyt kun sinulla on data valmiina piirtämistä varten, voit nähdä, voiko kone auttaa määrittämään loogisen jaon numeroiden välillä tässä datasetissä. Tätä varten sinun täytyy jakaa sekä data (X) että tavoite (y) testaus- ja harjoitusjoukkoihin. Scikit-learn tarjoaa yksinkertaisen tavan tehdä tämä; voit jakaa testidatasi tietyssä pisteessä.
+3. Nyt kun sinulla on data valmiina plottiin, voit kokeilla, voisiko kone auttaa määrittämään loogisen rajan lukujen välille tässä datasetissä. Tätä varten sinun täytyy jakaa sekä data (X) että kohde (y) testiin ja harjoitusjoukkoon. Scikit-learn tarjoaa yksinkertaisen tavan tehdä tämä, avulla voit jakaa testidatan tietystä kohdasta.
```python
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33)
```
-4. Nyt olet valmis kouluttamaan mallisi! Lataa lineaarinen regressiomalli ja kouluta sitä X- ja y-harjoitusjoukoilla käyttämällä `model.fit()`:
+4. Nyt olet valmis kouluttamaan mallisi! Lataa lineaarinen regressiomalli ja kouluta se X- ja y-harjoitusjoukoillasi käyttämällä `model.fit()`-funktiota:
```python
model = linear_model.LinearRegression()
model.fit(X_train, y_train)
```
- ✅ `model.fit()` on funktio, jonka näet monissa ML-kirjastoissa, kuten TensorFlowssa.
+ ✅ `model.fit()`-funktion näet monissa ML-kirjastoissa, kuten TensorFlowssa
-5. Luo sitten ennuste testidatan avulla käyttämällä funktiota `predict()`. Tätä käytetään piirtämään viiva dataryhmien välille.
+5. Tee sitten ennuste testidatalle funktiolla `predict()`. Tätä käytetään piirtämään viiva dataryhmien väliin.
```python
y_pred = model.predict(X_test)
```
-6. Nyt on aika näyttää data kaaviossa. Matplotlib on erittäin hyödyllinen työkalu tähän tehtävään. Luo scatterplot kaikesta X- ja y-testidatasta ja käytä ennustetta piirtääksesi viiva sopivimpaan kohtaan dataryhmien välillä.
+6. On aika näyttää data plottina. Matplotlib on erittäin hyödyllinen tähän tehtävään. Luo hajontakuvio kaikista X- ja y-testidatasta ja käytä ennustetta piirtääksesi viiva mahdollisimman sopivaan kohtaan mallin dataryhmien välille.
```python
plt.scatter(X_test, y_test, color='black')
@@ -202,29 +203,32 @@ Uudessa koodisolussa lataa diabetes-datasetti kutsumalla `load_diabetes()`. Syö
plt.show()
```
- 
-✅ Mieti hetki, mitä tässä tapahtuu. Suora viiva kulkee monien pienten datapisteiden läpi, mutta mitä se oikeastaan tekee? Voitko nähdä, miten tämän viivan avulla pitäisi pystyä ennustamaan, mihin uusi, ennennäkemätön datapiste sijoittuu suhteessa kuvaajan y-akseliin? Yritä pukea sanoiksi tämän mallin käytännön hyöty.
+ 
+
-Onnittelut, loit ensimmäisen lineaarisen regressiomallisi, teit ennusteen sen avulla ja esittelit sen kuvaajassa!
+ ✅ Mieti hetki, mitä tässä tapahtuu. Suora viiva kulkee monien pienten datapisteiden läpi, mutta mitä se tarkalleen tekee? Näetkö, miten tämän viivan pitäisi pystyä ennustamaan, mihin uusi, näkymätön datapiste sopisi suhteen kuvaajan y-akseliin? Yritä muotoilla käytännön hyöty tämän mallin käytöstä.
+
+Onnittelut, rakensit ensimmäisen lineaarisen regressiomallisi, teit sillä ennusteen ja näytit sen kuvaajassa!
---
## 🚀Haaste
-Piirrä kuvaaja, jossa käytetään eri muuttujaa tästä datasetistä. Vinkki: muokkaa tätä riviä: `X = X[:,2]`. Tämän datasetin tavoitteen perusteella, mitä pystyt päättelemään diabeteksen etenemisestä sairautena?
-
-## [Luennon jälkeinen kysely](https://ff-quizzes.netlify.app/en/ml/)
+Kuvioi toinen muuttuja tästä aineistosta. Vihje: muokkaa tätä riviä: `X = X[:,2]`. Kun otetaan huomioon tämän aineiston tavoite, mitä voit havaita diabeteksen etenemisestä sairautena?
+## [Luentotestin jälkeinen visailu](https://ff-quizzes.netlify.app/en/ml/)
## Kertaus & Itseopiskelu
-Tässä opetusmateriaalissa työskentelit yksinkertaisen lineaarisen regression parissa, etkä univariaatin tai monimuuttujaisen regression kanssa. Lue hieman näiden menetelmien eroista tai katso [tämä video](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef).
+Tässä tutoriaalissa työskentelit yksinkertaisen lineaarisen regressiomallin kanssa, etkä univariaatin tai moninkertaisen lineaarisen regressiomallin kanssa. Lue hieman näiden menetelmien eroista tai tutustu [tähän videoon](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef)
-Lue lisää regressiokonseptista ja pohdi, millaisiin kysymyksiin tällä tekniikalla voidaan vastata. Syvennä ymmärrystäsi ottamalla [tämä opetusohjelma](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott).
+Lue lisää regressiokäsitteestä ja pohdi, millaisia kysymyksiä tällä tekniikalla voidaan vastata. Käy tämä [tutoriaali](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) syventääksesi ymmärrystäsi.
## Tehtävä
-[Eri datasetti](assignment.md)
+[Eri aineisto](assignment.md)
---
-**Vastuuvapauslauseke**:
-Tämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua [Co-op Translator](https://github.com/Azure/co-op-translator). Vaikka pyrimme tarkkuuteen, huomioithan, että automaattiset käännökset voivat sisältää virheitä tai epätarkkuuksia. Alkuperäinen asiakirja sen alkuperäisellä kielellä tulisi pitää ensisijaisena lähteenä. Kriittisen tiedon osalta suositellaan ammattimaista ihmiskäännöstä. Emme ole vastuussa väärinkäsityksistä tai virhetulkinnoista, jotka johtuvat tämän käännöksen käytöstä.
\ No newline at end of file
+
+**Vastuuvapauslauseke**:
+Tämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua [Co-op Translator](https://github.com/Azure/co-op-translator). Vaikka pyrimme tarkkuuteen, otathan huomioon, että automaattiset käännökset saattavat sisältää virheitä tai epätarkkuuksia. Alkuperäinen asiakirja sen alkuperäiskielellä on virallinen lähde. Tärkeissä asioissa suositellaan ammattimaista ihmiskäännöstä. Emme ole vastuussa tämän käännöksen käytöstä aiheutuvista väärinymmärryksistä tai tulkinnoista.
+
\ No newline at end of file
diff --git a/translations/fi/2-Regression/2-Data/README.md b/translations/fi/2-Regression/2-Data/README.md
index 4c1405faf..1e6402d8d 100644
--- a/translations/fi/2-Regression/2-Data/README.md
+++ b/translations/fi/2-Regression/2-Data/README.md
@@ -1,62 +1,62 @@
-# Rakenna regressiomalli Scikit-learnilla: valmistele ja visualisoi data
+# Rakennetaan regressiomalli Scikit-learnilla: valmistele ja visualisoi data
-
+
-Infografiikka: [Dasani Madipalli](https://twitter.com/dasani_decoded)
+Infografiikan teki [Dasani Madipalli](https://twitter.com/dasani_decoded)
-## [Ennakkokysely](https://ff-quizzes.netlify.app/en/ml/)
+## [Esiluentokoe](https://ff-quizzes.netlify.app/en/ml/)
-> ### [Tämä oppitunti on saatavilla myös R-kielellä!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
+> ### [Tämä oppitunti on saatavilla R-kielisenä!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
## Johdanto
-Nyt kun sinulla on tarvittavat työkalut koneoppimismallien rakentamiseen Scikit-learnilla, olet valmis aloittamaan datan analysoinnin ja kysymysten esittämisen. Kun työskentelet datan parissa ja sovellat koneoppimisratkaisuja, on erittäin tärkeää osata esittää oikeat kysymykset, jotta datan potentiaali saadaan kunnolla hyödynnettyä.
+Nyt kun sinulla on käytössäsi työkalut koneoppimismallien rakentamisen aloittamiseen Scikit-learnilla, voit alkaa esittää kysymyksiä datallesi. Työskennellessäsi datan kanssa ja soveltaessasi ML-ratkaisuja on erittäin tärkeää ymmärtää, miten esitetään oikea kysymys, jotta voit tehokkaasti hyödyntää datasi potentiaalin.
Tässä oppitunnissa opit:
- Kuinka valmistella data mallin rakentamista varten.
- Kuinka käyttää Matplotlibia datan visualisointiin.
+- Kuinka käyttää Seabornia ilmeikkäämpään datan visualisointiin.
-## Oikean kysymyksen esittäminen datalle
+## Oikeiden kysymysten esittäminen datallesi
-Kysymys, johon haluat vastauksen, määrittää sen, millaisia koneoppimisalgoritmeja käytät. Ja vastausten laatu riippuu suuresti datan luonteesta.
+Tarvittava vastaus määrittää, mitä tyyppiä ML-algoritmeja käytät. Ja vastauksen laatu riippuu voimakkaasti datasi luonteesta.
-Tutustu tämän oppitunnin [dataan](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv). Voit avata tämän .csv-tiedoston VS Codessa. Nopealla silmäyksellä huomaat, että datassa on tyhjiä kohtia sekä sekoitus merkkijonoja ja numeerista dataa. Lisäksi on outo sarake nimeltä 'Package', jossa data vaihtelee 'sacks', 'bins' ja muiden arvojen välillä. Data on itse asiassa melko sekavaa.
+Tutustu tähän oppituntiin liittyvään [dataan](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv). Voit avata tämän .csv-tiedoston VS Codessa. Pikainen silmäys paljastaa heti, että siinä on tyhjiä kenttiä ja sekoitus merkkijono- ja numeerista dataa. Siellä on myös outo sarake nimeltä 'Package', jossa data on sekoitus 'säkeistä', 'laatikoista' ja muista arvoista. Data on itse asiassa aika sekavaa.
-[](https://youtu.be/5qGjczWTrDQ "ML aloittelijoille - Kuinka analysoida ja siivota datasetti")
+[](https://youtu.be/5qGjczWTrDQ "ML aloittelijoille - Kuinka analysoida ja puhdistaa datasetti")
-> 🎥 Klikkaa yllä olevaa kuvaa nähdäksesi lyhyen videon datan valmistelusta tätä oppituntia varten.
+> 🎥 Klikkaa yllä olevaa kuvaa katsoaksesi lyhyen videon datan valmistelusta tähän oppituntiin.
-On hyvin harvinaista saada datasetti, joka on täysin valmis koneoppimismallin luomiseen sellaisenaan. Tässä oppitunnissa opit, kuinka valmistella raakadataa käyttämällä Pythonin standardikirjastoja. Opit myös erilaisia tekniikoita datan visualisointiin.
+Itse asiassa ei ole kovin tavallista saada täysin käyttövalmis datasetti suoraan koneoppimismallin rakentamiseen. Tässä oppitunnissa opit, miten raakadata valmistellaan käyttäen Pythonin vakiokirjastoja. Opit myös erilaisia tekniikoita datan visualisointiin.
## Tapaustutkimus: 'kurpitsamarkkinat'
-Tässä kansiossa löydät .csv-tiedoston juurihakemistosta `data`-kansiosta nimeltä [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv), joka sisältää 1757 riviä dataa kurpitsamarkkinoista, ryhmiteltynä kaupungeittain. Tämä on raakadataa, joka on peräisin Yhdysvaltain maatalousministeriön [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) -raporteista.
+Tässä kansiossa löydät juurihakemistosta `data`-kansion sisältä .csv-tiedoston nimeltä [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv), joka sisältää 1757 riviä tietoa kurpitsamarkkinoista kaupungeittain ryhmiteltynä. Tämä on raakadataa, joka on poimittu Yhdysvaltain maa- ja metsätalousministeriön jakamista [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) -raporteista.
### Datan valmistelu
-Tämä data on julkista. Se voidaan ladata useina erillisinä tiedostoina, kaupungeittain, USDA:n verkkosivustolta. Välttääksemme liian monta erillistä tiedostoa, olemme yhdistäneet kaikki kaupunkien datat yhteen taulukkoon, joten dataa on jo _valmisteltu_ hieman. Seuraavaksi tarkastellaan dataa tarkemmin.
+Tämä data on julkisessa käytössä. Sen voi ladata useina erillisinä tiedostoina kaupungeittain USDA:n verkkosivuilta. Välttyäksemme liian monilta erillisiltä tiedostoilta, olemme yhdistäneet kaikki kaupunkien data yhdeksi taulukoksi, eli olemme jo hieman _valmistelleet_ dataa. Tutustutaan seuraavaksi tarkemmin dataan.
-### Kurpitsadata - ensimmäiset havainnot
+### Kurpitsadata - varhaiset havainnot
-Mitä huomaat tästä datasta? Näet jo, että siinä on sekoitus merkkijonoja, numeroita, tyhjiä kohtia ja outoja arvoja, jotka täytyy ymmärtää.
+Mitä huomaat tästä datasta? Näit jo, että siinä on sekoitus merkkijonoja, numeroita, tyhjiä kenttiä ja outoja arvoja, jotka täytyy saada järkeviksi.
-Mitä kysymystä voisit esittää tästä datasta käyttäen regressiotekniikkaa? Entä "Ennusta kurpitsan hinta myyntikuukauden perusteella". Kun tarkastelet dataa uudelleen, huomaat, että sinun täytyy tehdä joitakin muutoksia luodaksesi tarvittavan datastruktuurin tätä tehtävää varten.
+Mitä kysymystä voisit esittää tästä datasta käyttäen regressiomenetelmää? Entä "ennusta kurpitsan myyntihinta tietylle kuukaudelle"? Katso dataa uudelleen: tehtävän luomiseksi datarakenteeseen täytyy tehdä joitakin muutoksia.
+## Harjoitus - analysoi kurpitsadataa
-## Harjoitus - analysoi kurpitsadata
-
-Käytetään [Pandas](https://pandas.pydata.org/) -kirjastoa (nimi tulee sanoista `Python Data Analysis`), joka on erittäin hyödyllinen datan muokkaamiseen, kurpitsadatan analysointiin ja valmisteluun.
+Käytetään [Pandas](https://pandas.pydata.org/), (nimi tulee sanoista `Python Data Analysis`), työkalua, joka on erittäin hyödyllinen datan muokkaamiseen analysointia ja valmistelua varten.
### Ensiksi, tarkista puuttuvat päivämäärät
-Ensimmäinen askel on tarkistaa puuttuvat päivämäärät:
+Täytyy ensin tarkistaa puuttuuko päivämääriä:
-1. Muunna päivämäärät kuukausimuotoon (nämä ovat Yhdysvaltain päivämääriä, joten muoto on `MM/DD/YYYY`).
-2. Tallenna kuukausi uuteen sarakkeeseen.
+1. Muunna päivämäärät kuukauden muotoon (näissä on käytössä Yhdysvaltojen päivämäärämuoto, eli `KK/PP/VVVV` eli MM/DD/YYYY).
+2. Erota kuukausi uudeksi sarakkeeksi.
-Avaa _notebook.ipynb_-tiedosto Visual Studio Codessa ja tuo taulukko uuteen Pandas-dataframeen.
+Avaa _notebook.ipynb_ tiedosto Visual Studio Codessa ja tuo taulukko uuteen Pandas-dataframeen.
-1. Käytä `head()`-funktiota nähdäksesi ensimmäiset viisi riviä.
+1. Käytä `head()`-funktiota katsomaan ensimmäiset viisi riviä.
```python
import pandas as pd
@@ -66,26 +66,26 @@ Avaa _notebook.ipynb_-tiedosto Visual Studio Codessa ja tuo taulukko uuteen Pand
✅ Mitä funktiota käyttäisit nähdäksesi viimeiset viisi riviä?
-1. Tarkista, onko nykyisessä dataframessa puuttuvaa dataa:
+1. Tarkista onko nykyisessä dataframeissa puuttuvaa dataa:
```python
pumpkins.isnull().sum()
```
- Dataa puuttuu, mutta ehkä se ei ole merkityksellistä tämän tehtävän kannalta.
+ Puuttuvaa dataa on, mutta ehkä se ei haittaa tässä tehtävässä.
-1. Jotta dataframe olisi helpompi käsitellä, valitse vain tarvittavat sarakkeet käyttämällä `loc`-funktiota, joka poimii alkuperäisestä dataframesta rivien (ensimmäinen parametri) ja sarakkeiden (toinen parametri) ryhmän. Ilmaisu `:` alla olevassa esimerkissä tarkoittaa "kaikki rivit".
+1. Helpottaaksesi dataframein käsittelyä, valitse vain tarvittavat sarakkeet käyttäen `loc`-funktiota, joka hakee alkuperäisestä datasta rivejä (ensimmäinen parametri) ja sarakkeita (toinen parametri). Alla oleva ilmaisu `:` tarkoittaa "kaikki rivit".
```python
columns_to_select = ['Package', 'Low Price', 'High Price', 'Date']
pumpkins = pumpkins.loc[:, columns_to_select]
```
-### Toiseksi, määritä kurpitsan keskihinta
+### Toiseksi, määritä keskimääräinen kurpitsan hinta
-Mieti, kuinka määrittäisit kurpitsan keskihinnan tiettynä kuukautena. Mitä sarakkeita valitsisit tähän tehtävään? Vinkki: tarvitset kolme saraketta.
+Mieti, miten lasket kurpitsan keskimääräisen hinnan tietyssä kuukaudessa. Mitä sarakkeita tarvitset tähän? Vihje: tarvitset 3 saraketta.
-Ratkaisu: laske keskiarvo `Low Price`- ja `High Price`-sarakkeista täyttääksesi uuden Price-sarakkeen, ja muunna Date-sarake näyttämään vain kuukauden. Onneksi yllä olevan tarkistuksen mukaan päivämääristä tai hinnoista ei puutu dataa.
+Ratkaisu: ota keskiarvo `Low Price`- ja `High Price` -sarakkeista uuden Price-sarakkeen täyttämiseksi ja muuta Date-sarake näyttämään vain kuukausi. Onneksi yllä tehdyn tarkistuksen mukaan päivämäärissä tai hinnoissa ei ole puuttuvaa dataa.
1. Laske keskiarvo lisäämällä seuraava koodi:
@@ -96,7 +96,7 @@ Ratkaisu: laske keskiarvo `Low Price`- ja `High Price`-sarakkeista täyttääkse
```
- ✅ Voit halutessasi tulostaa mitä tahansa dataa tarkistaaksesi sen käyttämällä `print(month)`.
+ ✅ Voit halutessasi tulostaa dataa tarkistaaksesi sen `print(month)`-käskyllä.
2. Kopioi nyt muunnettu data uuteen Pandas-dataframeen:
@@ -104,29 +104,29 @@ Ratkaisu: laske keskiarvo `Low Price`- ja `High Price`-sarakkeista täyttääkse
new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price})
```
- Kun tulostat dataframen, näet siistin ja järjestetyn datasetin, jonka pohjalta voit rakentaa uuden regressiomallin.
+ Dataframen tulostaminen näyttää sinulle siistin ja järjestetyn datasetin, jolle voit rakentaa uuden regressiomallisi.
### Mutta hetkinen! Tässä on jotain outoa
-Jos tarkastelet `Package`-saraketta, kurpitsat myydään monissa eri kokoonpanoissa. Jotkut myydään '1 1/9 bushel' -mittauksina, jotkut '1/2 bushel' -mittauksina, jotkut per kurpitsa, jotkut per pauna, ja jotkut suurissa laatikoissa, joiden leveydet vaihtelevat.
+Katsoessasi `Package`-saraketta, kurpitsoja myydään monissa eri muodoissa. Joitakin myydään '1 1/9 bushelin' mittayksiköissä, joitakin '1/2 bushelin', joitakin yksittäisinä kurpitsoina, joitakin painon mukaan ja joitakin isoissa laatikoissa, joiden leveydet vaihtelevat.
-> Kurpitsojen punnitseminen näyttää olevan erittäin haastavaa
+> Kurpitsojen punnitseminen on ilmeisesti erittäin vaikeaa tasaisesti
-Kun tarkastellaan alkuperäistä dataa, on mielenkiintoista, että kaikki, joiden `Unit of Sale` on 'EACH' tai 'PER BIN', sisältävät myös `Package`-tyypin per tuuma, per bin tai 'each'. Kurpitsat näyttävät olevan erittäin vaikeita punnita johdonmukaisesti, joten suodatetaan ne valitsemalla vain kurpitsat, joiden `Package`-sarake sisältää merkkijonon 'bushel'.
+Alkuperäisen datan pohjalta huomataan, että kaikki, joiden `Unit of Sale` on 'EACH' tai 'PER BIN', sisältävät myös `Package`-tyyppiä kuten per tuuma, per laatikko tai 'each'. Kurpitsojen tasa-arvoinen punnitseminen näyttää olevan vaikeaa, joten rajataan dataa valitsemalla ainoastaan ne kurpitsat, joiden `Package`-sarakkeessa on merkkijono 'bushel'.
-1. Lisää suodatin tiedoston alkuun, alkuperäisen .csv-tuonnin alle:
+1. Lisää suodatin tiedoston alkuun .csv-tiedoston tuonnin jälkeen:
```python
pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]
```
- Jos tulostat datan nyt, näet, että saat vain noin 415 riviä dataa, jotka sisältävät kurpitsat bushel-mittauksina.
+ Jos tulostat datan nyt, näet, että saat vain noin 415 riviä, jotka sisältävät bushel-muotoisia kurpitsoja.
-### Mutta hetkinen! Vielä yksi asia täytyy tehdä
+### Mutta hetkinen! Vielä yksi asia tehtävänä
-Huomasitko, että bushel-määrä vaihtelee rivikohtaisesti? Sinun täytyy normalisoida hinnoittelu niin, että näytät hinnan per bushel, joten tee hieman laskutoimituksia standardoidaksesi sen.
+Huomasitko, että bushel-määrä vaihtelee rivikohtaisesti? Sinun täytyy normalisoida hinta näyttämään hinta per bushel, joten tee laskelmia standardoimiseksi.
-1. Lisää nämä rivit uuden_pumpkins-dataframen luovan lohkon jälkeen:
+1. Lisää seuraavat rivit uuden pumpkin-dataframen luomisen jälkeen:
```python
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9)
@@ -134,38 +134,38 @@ Huomasitko, että bushel-määrä vaihtelee rivikohtaisesti? Sinun täytyy norma
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) -sivuston mukaan bushelin paino riippuu tuotteen tyypistä, koska se on tilavuusmittaus. "Esimerkiksi tomaattien bushelin painon pitäisi olla 56 paunaa... Lehdet ja vihreät vievät enemmän tilaa vähemmällä painolla, joten pinaatin bushel painaa vain 20 paunaa." Tämä on melko monimutkaista! Emme vaivaudu tekemään bushelin ja paunan välistä muunnosta, vaan hinnoittelemme bushelin mukaan. Kaikki tämä kurpitsabushelien tutkiminen kuitenkin osoittaa, kuinka tärkeää on ymmärtää datan luonne!
+✅ [The Spruce Eatsin](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) mukaan bushelin paino riippuu tuotteen tyypistä, koska se on tilavuusmittaus. "Tomaatin bushelin painoksi oletetaan esimerkiksi 56 paunaa... Lehtivihannekset vievät enemmän tilaa mutta ovat kevyempiä, joten pinaatin bushel painaa vain 20 paunaa." Tämä on siis melko monimutkaista! Ei vaivauduta nyt muuttamaan bushelin painoa paunoiksi vaan hinnoitellaan bushelin mukaan. Tämä tutkimus kurpitsabusheleista osoittaa kuinka tärkeää on ymmärtää datasi luonne!
-Nyt voit analysoida hinnoittelua yksikköä kohden bushel-mittauksen perusteella. Jos tulostat datan vielä kerran, näet, kuinka se on standardoitu.
+Nyt voit analysoida yksikköhinnan bushel-mittauksen mukaan. Jos tulostat datan vielä kerran, näet miten se on standardoitu.
-✅ Huomasitko, että kurpitsat, jotka myydään puolibushelina, ovat erittäin kalliita? Voitko selvittää miksi? Vinkki: pienet kurpitsat ovat paljon kalliimpia kuin isot, luultavasti siksi, että niitä on paljon enemmän per bushel, kun otetaan huomioon yhden suuren ontelon piirakkakurpitsan käyttämätön tila.
+✅ Huomasitko, että puoli-bushelin mukaan myydyt kurpitsat ovat hyvin kalliita? Osaatko arvata miksi? Vihje: pienet kurpitsat ovat paljon kalliimpia kuin isot, luultavasti siksi, että bushelissa on paljon enemmän pieniä, kun taas yksi iso ontto piirakkakurpitsa vie paljon tilaa ja vähentää määrää.
## Visualisointistrategiat
-Osa datatieteilijän roolia on osoittaa datan laatu ja luonne, jonka parissa hän työskentelee. Tätä varten he usein luovat mielenkiintoisia visualisointeja, kuten kaavioita, graafeja ja diagrammeja, jotka näyttävät datan eri näkökulmia. Näin he voivat visuaalisesti osoittaa suhteita ja aukkoja, jotka muuten olisivat vaikeasti havaittavissa.
+Työskennellessään data-analyytikot esittävät usein työskentelemänsä datan laadun ja luonteen visuaalisesti. He luovat mielenkiintoisia visualisointeja, kuten diagrammeja, käyriä ja kaavioita, jotka näyttävät datan eri puolia. Näin he voivat visuaalisesti osoittaa yhteyksiä ja aukkoja, jotka muuten olisivat vaikeasti havaittavissa.
-[](https://youtu.be/SbUkxH6IJo0 "ML aloittelijoille - Kuinka visualisoida dataa Matplotlibilla")
+[](https://youtu.be/SbUkxH6IJo0 "ML aloittelijoille - Kuinka visualisoida dataa Matplotlibillä")
-> 🎥 Klikkaa yllä olevaa kuvaa nähdäksesi lyhyen videon datan visualisoinnista tätä oppituntia varten.
+> 🎥 Klikkaa yllä olevaa kuvaa katsoaksesi lyhyen videon tämän oppitunnin datan visualisoinnista.
-Visualisoinnit voivat myös auttaa määrittämään koneoppimistekniikan, joka sopii parhaiten datalle. Esimerkiksi hajontakaavio, joka näyttää seuraavan linjaa, viittaa siihen, että data sopii hyvin lineaariseen regressioharjoitukseen.
+Visualisoinnit auttavat myös valitsemaan datalle sopivimman koneoppimistekniikan. Esimerkiksi hajontakuvio, joka näyttää noudattavan viivaa, osoittaa datan soveltuvan hyvin lineaariseen regressioon.
-Yksi datavisualisointikirjasto, joka toimii hyvin Jupyter-notebookeissa, on [Matplotlib](https://matplotlib.org/) (jota näit myös edellisessä oppitunnissa).
+Yksi Jupyter-muistikirjoissa hyvin toimiva visualisointikirjasto on [Matplotlib](https://matplotlib.org/) (jonka näit myös edellisessä oppitunnissa).
> Saat lisää kokemusta datan visualisoinnista [näissä tutoriaaleissa](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott).
## Harjoitus - kokeile Matplotlibia
-Yritä luoda joitakin peruskaavioita näyttämään juuri luomasi uusi dataframe. Mitä perusviivakaavio näyttäisi?
+Yritä luoda joitakin perustason kuvaajia näyttääksesi juuri luodun dataframen. Mitä yksinkertainen viivakuvaaja näyttäisi?
-1. Tuo Matplotlib tiedoston alkuun Pandas-tuonnin alle:
+1. Tuo Matplotlib tiedoston alkuun, Pandas-tuonnin alapuolelle:
```python
import matplotlib.pyplot as plt
```
-1. Suorita koko notebook uudelleen päivittääksesi.
-1. Lisää notebookin loppuun solu, joka piirtää datan laatikkona:
+1. Suorita koko muistikirja uudelleen päivittääksesi.
+1. Lisää muistikirjan loppuun solu, joka piirtää datan laatikkokaaviona:
```python
price = new_pumpkins.Price
@@ -174,38 +174,113 @@ Yritä luoda joitakin peruskaavioita näyttämään juuri luomasi uusi dataframe
plt.show()
```
- 
+ 
- Onko tämä hyödyllinen kaavio? Yllättääkö siinä jokin sinua?
+ Onko tämä hyödyllinen kuvaaja? Yllättääkö jokin siinä?
- Se ei ole erityisen hyödyllinen, sillä se vain näyttää datan pisteiden levityksen tiettynä kuukautena.
+ Se ei ole kovin hyödyllinen, koska se ainoastaan näyttää puntospridauksen datassasi tietylle kuukaudelle.
### Tee siitä hyödyllinen
-Jotta kaaviot näyttäisivät hyödyllistä dataa, sinun täytyy yleensä ryhmitellä data jotenkin. Yritetään luoda kaavio, jossa y-akseli näyttää kuukaudet ja data osoittaa datan jakauman.
+Jotta kaaviot näyttäisivät hyödyllistä dataa, täytyy yleensä ryhmitellä dataa jotenkin. Yritetään luoda kaavio, jossa y-akselilla ovat kuukaudet ja data osoittaa jakauman.
-1. Lisää solu luodaksesi ryhmitellyn pylväskaavion:
+1. Lisää solu ryhmitellyn pylväskaavion luomiseksi:
```python
new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar')
plt.ylabel("Pumpkin Price")
```
- 
+ 
+
+ Tämä on paljon hyödyllisempi datan visualisointi! Se näyttää osoittavan, että kurpitsan korkein hinta on syys- ja lokakuussa. Täsmääkö tämä odotuksiisi? Miksi tai miksi ei?
+
+## Harjoitus - kokeile Seabornia
+
+Matplotlib on tehokas, mutta voi vaatia paljon koodia siistin kaavion luomiseen. [Seaborn](https://seaborn.pydata.org/) on Matplotlibin päälle rakennettu kirjasto, joka on suunniteltu tilastolliseen datan visualisointiin. Se toimii suoraan Pandas-dataframien kanssa, käyttää houkuttelevia oletustyylejä ja antaa sinun luoda informatiivisia kaavioita paljon vähemmällä koodilla. Koska Seaborn palauttaa Matplotlib-objekteja, voit edelleen käyttää kaikkea mitä tiedät Matplotlibista hienosäätämiseen.
+
+> Jos sinulla ei vielä ole Seaborn asennettuna, asenna se komennolla `pip install seaborn`.
+
+1. Tuo Seaborn muistikirjan alkuun muiden tuontien alle. Yleisesti se tuodaan nimellä `sns`:
+
+ ```python
+ import seaborn as sns
+ ```
+
+### Hajontakuvioiden käyttö suhteiden näyttämiseen
+
+Iso osa datan tutkimista ennen mallin rakentamista on etsiä _suhteita_ muuttujien välillä. [Hajontakuvio](https://en.wikipedia.org/wiki/Scatter_plot) on yksi parhaista työkaluista tähän: jos pisteet näyttävät noudattavan viivaa, kaksi muuttujaa saattavat korreloida, mikä on hyvä merkki lineaarisen regressiomallin toimivuudesta.
+
+1. Luo uudelleen aiemmin tehty hinta-kuukausi hajontakuvio, mutta käytä tällä kertaa Seabornin [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) (relaatiokuvio) -funktiota, joka toimii suoraan dataframen sarakkeiden kanssa:
+
+ ```python
+ sns.relplot(x="Price", y="Month", data=new_pumpkins)
+ ```
+
+ 
+
+ Huomaa, miten annat _sarakkeiden nimet_ ja dataframe-objektin, ja Seaborn hoitaa akselien nimet puolestasi.
+
+2. Voit vaihtaa viivakuvaajaan asettamalla `kind="line"`. Seaborn piirtää myös varjostetun alueen, joka näyttää luottamusvälin viivan ympärillä:
+
+ ```python
+ sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins)
+ ```
+
+ 
+
+ Tämä data on melko kohinaista, joten viivakuvaaja ei ole kaikkein selkein valinta – mutta se havainnollistaa kuinka helposti kaaviotyyppiä voi muuttaa Seabornissa.
+
+### Pylväskaaviot jakaumien näyttämiseen
+
+
+Aiemmin ryhmittelit tiedot käsin luodaksesi pylväskaavion Matplotlibillä. Seabornin [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) (kategoriallinen kaavio) voi tehdä ryhmittelyn ja aggregaation puolestasi. Oletuksena `kind="bar"` näyttää kunkin kategorian keskiarvon mustalla viivalla, joka ilmaisee luottamusvälin.
+
+1. Luo pylväskaavio kuukausittaisesta keskimääräisestä hinnasta:
+
+ ```python
+ sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar")
+ ```
+
+ 
+
+ Tämä vahvistaa, mitä näit Matplotlibillä — hinnat huippuavat syys- ja lokakuussa — mutta Seaborn visualisoi myös, kuinka paljon hinta _vaihtelee_ jokaisen kuukauden sisällä.
+
+### Lämmityskartat korrelaatioiden näyttämiseen
+
+Hajontakuvioissa verrataan kahta muuttujaa kerrallaan. Kun sinulla on useita numeerisia sarakkeita, [lämmityskartta](https://en.wikipedia.org/wiki/Heat_map) antaa sinun nähdä kaikkien sarakeparien välisten suhteiden vahvuuden kerralla. Tämä on yleinen tapa havaita, mitkä piirteet ovat vahvasti korreloituneita ennen kuin valitaan, mitä syötetään malliin (ja saman tyyppistä kaaviota käytetään myöhemmin luokittelussa sekavuusmatriiseihin).
+
+1. Rakenna korrelaatiomatriisi Pandasilla ja piirrä se sitten Seabornin [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html) avulla. `annot=True` -valinta tulostaa korrelaatioarvot jokaisessa solussa:
+
+ ```python
+ correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()
+ sns.heatmap(correlations, annot=True, cmap="coolwarm")
+ ```
+
+ 
+
+ Arvot, jotka ovat lähellä `1` (tai `-1`), tarkoittavat, että sarakkeet ovat vahvasti _lineaarisesti_ korreloituneita. Huomaa, miten `Low Price` ja `High Price` ovat lähes täydellisesti korreloituneita. `Month` puolestaan näyttää vain heikon lineaarisen korrelaation hinnan kanssa — vaikka yllä oleva pylväskaavio paljasti selkeän sesonkihuipun syys- ja lokakuussa. Tämä on tärkeä oppitunti: korrelaatiokerroin mittaa vain _suoraviivaisia_ suhteita, joten se voi jättää huomiotta sesonkiluonteiset tai muutoin epälineaariset kuviot. ✅ Miksi on hyödyllistä katsoa sekä lämmityskarttaa että kaavioita, kuten pylväskaaviota, ennen kuin päättää, mitä sarakkeita käyttää?
+
+### Matplotlib vai Seaborn?
+
+Molemmat kirjastot kannattaa tuntea:
+
+- **Matplotlib** antaa sinulle yksityiskohtaisen hallinnan kaavion jokaisesta elementistä ja on pohja, jonka päälle lähes kaikki muut Pythonin visualisointikirjastot rakentavat.
+- **Seaborn** tarjoaa korkeamman tason funktioita ja houkuttelevat oletusasetukset tilastollisiin kaavioihin, toimii suoraan datafreimien kanssa ja on usein nopeampi tutkimustarkoituksiin.
- Tämä on hyödyllisempi datavisualisointi! Se näyttää, että kurpitsojen korkein hinta esiintyy syys- ja lokakuussa. Vastaako tämä odotuksiasi? Miksi tai miksi ei?
+Yleinen työnkulku on aloittaa Seabornilla datan nopeaan tutkimiseen ja siirtyä sitten Matplotlibiin, kun halutaan räätälöidä yksityiskohtia.
---
## 🚀Haaste
-Tutki Matplotlibin tarjoamia erilaisia visualisointityyppejä. Mitkä tyypit sopivat parhaiten regressio-ongelmiin?
+Tutki erilaisia Matplotlibin ja Seabornin tarjoamia visualisointityyppejä. Mitkä tyypit sopivat parhaiten regressio-ongelmiin?
-## [Jälkikysely](https://ff-quizzes.netlify.app/en/ml/)
+## [Luennon jälkeinen tietovisa](https://ff-quizzes.netlify.app/en/ml/)
-## Kertaus & Itseopiskelu
+## Kertaus ja itsenäinen opiskelu
-Tutustu datan visualisoinnin eri tapoihin. Tee lista saatavilla olevista kirjastoista ja merkitse, mitkä sopivat parhaiten tiettyihin tehtäviin, esimerkiksi 2D-visualisointeihin vs. 3D-visualisointeihin. Mitä huomaat?
+Tutustu moniin tapoihin visualisoida dataa. Tee lista eri saatavilla olevista kirjastoista ja merkitse, mitkä sopivat parhaiten tiettyihin tehtävätyyppeihin, esimerkiksi 2D-visualisointiin vs. 3D-visualisointiin. Mitä havaitset?
## Tehtävä
@@ -213,5 +288,7 @@ Tutustu datan visualisoinnin eri tapoihin. Tee lista saatavilla olevista kirjast
---
-**Vastuuvapauslauseke**:
-Tämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua [Co-op Translator](https://github.com/Azure/co-op-translator). Vaikka pyrimme tarkkuuteen, huomioithan, että automaattiset käännökset voivat sisältää virheitä tai epätarkkuuksia. Alkuperäistä asiakirjaa sen alkuperäisellä kielellä tulisi pitää ensisijaisena lähteenä. Kriittisen tiedon osalta suositellaan ammattimaista ihmiskäännöstä. Emme ole vastuussa väärinkäsityksistä tai virhetulkinnoista, jotka johtuvat tämän käännöksen käytöstä.
\ No newline at end of file
+
+**Vastuuvapauslauseke**:
+Tämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua [Co-op Translator](https://github.com/Azure/co-op-translator). Vaikka pyrimme tarkkuuteen, otathan huomioon, että automaattiset käännökset saattavat sisältää virheitä tai epätarkkuuksia. Alkuperäinen asiakirja sen alkuperäiskielellä on virallinen lähde. Tärkeissä asioissa suositellaan ammattimaista ihmiskäännöstä. Emme ole vastuussa tämän käännöksen käytöstä aiheutuvista väärinymmärryksistä tai tulkinnoista.
+
\ No newline at end of file
diff --git a/translations/fi/2-Regression/2-Data/solution/notebook.ipynb b/translations/fi/2-Regression/2-Data/solution/notebook.ipynb
index 91f5d1470..782a59a35 100644
--- a/translations/fi/2-Regression/2-Data/solution/notebook.ipynb
+++ b/translations/fi/2-Regression/2-Data/solution/notebook.ipynb
@@ -3,7 +3,9 @@
{
"cell_type": "markdown",
"metadata": {},
- "source": []
+ "source": [
+ "## Suora regressio kurpitsalle - Osa 2\n"
+ ]
},
{
"cell_type": "code",
@@ -220,6 +222,7 @@
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
"pumpkins = pd.read_csv('../../data/US-pumpkins.csv')\n",
"\n",
"pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]\n",
@@ -383,18 +386,78 @@
"plt.ylabel(\"Pumpkin Price\")"
]
},
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Visualisointi Seabornilla\n",
+ "\n",
+ "[Seaborn](https://seaborn.pydata.org/) on rakennettu Matplotlibin päälle ja toimii suoraan datafreimien kanssa, mikä tekee houkuttelevien tilastollisten kuvioiden luomisesta nopeaa ja vaatii hyvin vähän koodia.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Hajontakuvioita suhteiden esittämiseen\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", kind=\"line\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Pylväskaaviot jakaumien näyttämiseen\n"
+ ]
+ },
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
- "source": []
+ "source": [
+ "sns.catplot(x=\"Month\", y=\"Price\", data=new_pumpkins, kind=\"bar\")"
+ ]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "\n---\n\n**Vastuuvapauslauseke**: \nTämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua [Co-op Translator](https://github.com/Azure/co-op-translator). Pyrimme tarkkuuteen, mutta huomioithan, että automaattiset käännökset voivat sisältää virheitä tai epätarkkuuksia. Alkuperäistä asiakirjaa sen alkuperäisellä kielellä tulee pitää ensisijaisena lähteenä. Kriittisen tiedon osalta suositellaan ammattimaista ihmiskääntämistä. Emme ole vastuussa väärinkäsityksistä tai virhetulkinnoista, jotka johtuvat tämän käännöksen käytöstä.\n"
+ "### Lämpökartat korrelaatioiden näyttämiseen\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()\n",
+ "sns.heatmap(correlations, annot=True, cmap=\"coolwarm\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "---\n\n\n**Vastuuvapauslauseke**:\nTämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua [Co-op Translator](https://github.com/Azure/co-op-translator). Vaikka pyrimme tarkkuuteen, otathan huomioon, että automaattiset käännökset saattavat sisältää virheitä tai epätarkkuuksia. Alkuperäinen asiakirja sen alkuperäiskielellä on virallinen lähde. Tärkeissä asioissa suositellaan ammattimaista ihmiskäännöstä. Emme ole vastuussa tämän käännöksen käytöstä aiheutuvista väärinymmärryksistä tai tulkinnoista.\n\n"
]
}
],
@@ -424,13 +487,7 @@
"hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d"
}
},
- "orig_nbformat": 2,
- "coopTranslator": {
- "original_hash": "95726f0b8283628d5356a4f8eb8b4b76",
- "translation_date": "2025-09-04T07:11:28+00:00",
- "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
- "language_code": "fi"
- }
+ "orig_nbformat": 2
},
"nbformat": 4,
"nbformat_minor": 2
diff --git a/translations/fi/6-NLP/4-Hotel-Reviews-1/README.md b/translations/fi/6-NLP/4-Hotel-Reviews-1/README.md
index ba2402039..87e1ae4c4 100644
--- a/translations/fi/6-NLP/4-Hotel-Reviews-1/README.md
+++ b/translations/fi/6-NLP/4-Hotel-Reviews-1/README.md
@@ -1,171 +1,210 @@
-# Sentimenttianalyysi hotelliarvosteluilla - datan käsittely
+# Sentimenttianalyysi hotelliarvosteluilla – datan käsittely
-Tässä osiossa käytät aiemmissa oppitunneissa opittuja tekniikoita suuren datasetin tutkimiseen. Kun ymmärrät eri sarakkeiden hyödyllisyyden, opit:
+Tässä osassa käytät edellisten oppituntien menetelmiä tutkiaksesi laajaa aineistoa. Kun ymmärrät eri sarakkeiden hyödyllisyyden, opit:
-- kuinka poistaa tarpeettomat sarakkeet
-- kuinka laskea uutta dataa olemassa olevien sarakkeiden perusteella
-- kuinka tallentaa tuloksena syntynyt datasetti lopullista haastetta varten
+- miten poistaa tarpeettomat sarakkeet
+- miten laskea uutta tietoa olemassa olevien sarakkeiden perusteella
+- miten tallentaa lopullista haastetta varten muokattu aineisto
-## [Esiluennon kysely](https://ff-quizzes.netlify.app/en/ml/)
+## [Esiluentokoe](https://ff-quizzes.netlify.app/en/ml/)
### Johdanto
-Tähän mennessä olet oppinut, kuinka tekstidata eroaa numeerisesta datasta. Jos teksti on ihmisen kirjoittamaa tai puhumaa, sitä voidaan analysoida löytääkseen kaavoja ja frekvenssejä, tunteita ja merkityksiä. Tämä oppitunti vie sinut todellisen datasetin ja todellisen haasteen pariin: **[515K hotelliarvostelut Euroopassa](https://www.kaggle.com/jiashenliu/515k-hotel-reviews-data-in-europe)**, joka sisältää [CC0: Public Domain -lisenssin](https://creativecommons.org/publicdomain/zero/1.0/). Datasetti on kerätty Booking.comista julkisista lähteistä. Datasetin luoja on Jiashen Liu.
+Olet oppinut, että tekstuaalinen data poikkeaa merkittävästi numeerisesta datasta. Jos teksti on ihmisen kirjoittamaa tai puhuma, sitä voidaan analysoida löytääkseen kuvioita, esiintymistiheyksiä, tunteita ja merkityksiä. Tämä oppitunti vie sinut oikeaan tietoaineistoon ja aitoon haasteeseen: **[515 000 hotelliarvostelua Euroopasta](https://www.kaggle.com/jiashenliu/515k-hotel-reviews-data-in-europe)**, ja aineisto on julkaistu [CC0: Public Domain -lisenssillä](https://creativecommons.org/publicdomain/zero/1.0/). Se on kerätty Booking.comin julkisista lähteistä. Aineiston tekijä on Jiashen Liu.
-### Valmistelu
+### Valmistelut
-Tarvitset:
+Tarvitset seuraavaa:
-* Mahdollisuuden ajaa .ipynb-tiedostoja Python 3:lla
-* pandas
-* NLTK, [joka sinun tulisi asentaa paikallisesti](https://www.nltk.org/install.html)
-* Datasetti, joka on saatavilla Kagglesta [515K hotelliarvostelut Euroopassa](https://www.kaggle.com/jiashenliu/515k-hotel-reviews-data-in-europe). Se on noin 230 MB purettuna. Lataa se NLP-oppituntien `/data`-kansioon.
+* Kyvyn suorittaa .ipynb-muotoisia muistikirjoja käyttäen Python 3:a
+* pandas-kirjaston
+* NLTK:n, [jonka tulee asentaa paikallisesti](https://www.nltk.org/install.html)
+* Aineiston, joka on saatavilla Kagglesta: [515 000 hotelliarvostelua Euroopasta](https://www.kaggle.com/jiashenliu/515k-hotel-reviews-data-in-europe). Pakkaamattomana noin 230 MB. Lataa se `/data`-kansioon, joka liittyy näihin NLP-oppitunteihin.
-## Tutkiva data-analyysi
+## Tutkiva datan analyysi
-Tässä haasteessa oletetaan, että rakennat hotellisuositusbotin käyttäen sentimenttianalyysiä ja vieraiden arvostelupisteitä. Datasetti, jota käytät, sisältää arvosteluja 1493 eri hotellista kuudessa kaupungissa.
+Tässä haasteessa rakennat hotellisuositusbottia käyttäen sentimenttianalyysiä ja asiakkaiden arvosteluja. Käyttämäsi aineisto sisältää arvosteluja 1493 eri hotellista kuudessa kaupungissa.
-Pythonin, hotelliarvosteludatan ja NLTK:n sentimenttianalyysin avulla voit selvittää:
+Pythonin, hotelliarvosteluaineiston ja NLTK:n sentimenttianalyysin avulla voit selvittää:
-* Mitkä ovat yleisimmin käytetyt sanat ja fraasit arvosteluissa?
-* Korreloivatko hotellia kuvaavat *tagit* arvostelupisteiden kanssa (esim. ovatko negatiivisemmat arvostelut tietylle hotellille *Perhe nuorten lasten kanssa* -tagilla kuin *Yksin matkustava*, mikä voisi viitata siihen, että hotelli sopii paremmin *Yksin matkustaville*?)
-* Ovatko NLTK:n sentimenttipisteet "samaa mieltä" hotelliarvostelijan numeerisen pisteen kanssa?
+* Mitkä sanat ja ilmaisut ovat eniten käytettyjä arvosteluissa?
+* Korreloivatko hotellin viralliset *tags*-tägit arvostelupisteiden kanssa (esim. onko enemmän negatiivisia arvosteluja *Perhe lapsineen* -tägillä kuin *Yksin matkustava*, mikä saattaisi viitata siihen, että hotelli sopii paremmin *Yksin matkustaville*)?
+* Vastaavatko NLTK:n sentimenttipisteet hotelliarvostelijan numeerisia pisteitä?
-#### Datasetti
+#### Aineisto
-Tutkitaan datasetti, jonka olet ladannut ja tallentanut paikallisesti. Avaa tiedosto editorissa, kuten VS Code tai jopa Excel.
+Tutustutaan ladattuun ja paikallisesti tallennettuun aineistoon. Avaa tiedosto esimerkiksi VS Codessa tai Excelissä.
-Datasetin otsikot ovat seuraavat:
+Aineiston sarakkeet ovat seuraavat:
*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*
-Tässä ne on ryhmitelty helpommin tarkasteltavaksi:
-##### Hotellin sarakkeet
+Tässä sarakkeet ryhmiteltyinä helpompaan tarkasteluun:
+##### Hotelli-sarakkeet
* `Hotel_Name`, `Hotel_Address`, `lat` (leveysaste), `lng` (pituusaste)
- * Käyttäen *lat* ja *lng* voit piirtää kartan Pythonilla, joka näyttää hotellien sijainnit (ehkä värikoodattuna negatiivisten ja positiivisten arvostelujen mukaan)
- * Hotel_Address ei vaikuta ilmeisen hyödylliseltä, ja todennäköisesti korvaamme sen maalla helpompaa lajittelua ja hakua varten
+ * Näillä latitude- ja longitude-tiedoilla voisi piirtää Pythonilla kartan hotellien sijainneista (esim. väritettynä negatiivisten ja positiivisten arvostelujen mukaan)
+ * Hotel_Address ei vaikuta kovin hyödylliseltä, ja saatamme korvata sen maalla helpompaa lajittelua ja hakua varten
**Hotellin meta-arvostelusarakkeet**
* `Average_Score`
- * Datasetin luojan mukaan tämä sarake on *Hotellin keskiarvo, laskettu viimeisen vuoden aikana annettujen kommenttien perusteella*. Tämä vaikuttaa epätavalliselta tavalta laskea pisteet, mutta koska data on kerätty, otamme sen toistaiseksi sellaisenaan.
+ * Aineiston luojan mukaan tämä sarake kertoo *hotellin keskimääräisen pisteen, laskettuna viime vuoden uusimman kommentin perusteella*. Tämä tapa vaikuttaa erikoiselta, mutta se on kerätty data, joten voimme ottaa sen väliaikaisena arvona.
- ✅ Voitko keksiä toisen tavan laskea keskiarvo datasetin muiden sarakkeiden perusteella?
+ ✅ Voisitko keksiä toisen tavan laskea keskipiste tämän aineiston muista sarakkeista?
* `Total_Number_of_Reviews`
- * Hotellin saamien arvostelujen kokonaismäärä - ei ole selvää (ilman koodin kirjoittamista), viittaako tämä datasetin arvosteluihin.
+ * Hotellin saamien arvostelujen kokonaismäärä – ei ole selvää (ilman koodin kirjoittamista), viittaako tämä tämän aineiston arvosteluihin.
* `Additional_Number_of_Scoring`
- * Tämä tarkoittaa, että arvostelupiste annettiin, mutta arvostelija ei kirjoittanut positiivista tai negatiivista arvostelua
+ * Tämä tarkoittaa, että arvostelupiste annettiin, mutta positiivista tai negatiivista arvostelua ei kirjoitettu
**Arvostelusarakkeet**
- `Reviewer_Score`
- - Tämä on numeerinen arvo, jossa on korkeintaan yksi desimaali, välillä 2.5 ja 10
- - Ei ole selitetty, miksi alin mahdollinen piste on 2.5
+ - Numeerinen arvo korkeintaan yhdellä desimaalilla, vaihtelu 2.5 ja 10 välillä
+ - Ei selitetä, miksi alin piste on 2.5
- `Negative_Review`
- - Jos arvostelija ei kirjoittanut mitään, tämä kenttä sisältää "**No Negative**"
- - Huomaa, että arvostelija voi kirjoittaa positiivisen arvostelun negatiiviseen arvostelukenttään (esim. "ei ole mitään huonoa tässä hotellissa")
+ - Jos arvostelija ei kirjoittanut mitään, tässä lukee "**No Negative**" (ei negatiivista)
+ - Huomaa, että arvostelija voi kirjoittaa positiivisen arvostelun tähän kenttään (esim. "tässä hotellissa ei ole mitään huonoa")
- `Review_Total_Negative_Word_Counts`
- - Korkeampi negatiivisten sanojen määrä viittaa matalampaan pisteeseen (ilman sentimenttianalyysiä)
+ - Korkeampi negatiivisten sanojen määrä usein tarkoittaa matalampaa pistettä (ilman sentimentin tarkistusta)
- `Positive_Review`
- - Jos arvostelija ei kirjoittanut mitään, tämä kenttä sisältää "**No Positive**"
- - Huomaa, että arvostelija voi kirjoittaa negatiivisen arvostelun positiiviseen arvostelukenttään (esim. "tässä hotellissa ei ole mitään hyvää")
+ - Jos arvostelija ei kirjoittanut mitään, tässä lukee "**No Positive**" (ei positiivista)
+ - Huomaa, että arvostelija voi kirjoittaa negatiivisen arvostelun tähän kenttään (esim. "tässä hotellissa ei ole lainkaan mitään hyvää")
- `Review_Total_Positive_Word_Counts`
- - Korkeampi positiivisten sanojen määrä viittaa korkeampaan pisteeseen (ilman sentimenttianalyysiä)
+ - Korkeampi positiivisten sanojen määrä usein tarkoittaa korkeampaa pistettä (ilman sentimentin tarkistusta)
- `Review_Date` ja `days_since_review`
- - Tuoreuden tai vanhentuneisuuden mittari voidaan soveltaa arvosteluun (vanhemmat arvostelut eivät välttämättä ole yhtä tarkkoja kuin uudemmat, koska hotellin johto on voinut muuttua, remontteja on voitu tehdä, tai uima-allas on lisätty jne.)
+ - Arvostelun tuoreudelle tai vanhentuneisuudelle voisi antaa painoarvon (vanhemmat arvostelut eivät ehkä ole enää yhtä oikeita, koska hotellin johto on vaihtunut, remontteja on tehty tai uima-allas lisätty jne.)
- `Tags`
- - Nämä ovat lyhyitä kuvauksia, joita arvostelija voi valita kuvaamaan vierailunsa tyyppiä (esim. yksin tai perhe), huoneen tyyppiä, oleskelun pituutta ja tapaa, jolla arvostelu lähetettiin.
- - Valitettavasti näiden tagien käyttö on ongelmallista, katso alla oleva osio, joka käsittelee niiden hyödyllisyyttä
+ - Nämä ovat lyhyitä kuvauksia, joita arvostelija on voinut valita kuvaamaan vierailijan tyyppiä (esim. yksin matkustava tai perhe), huonetyyppiä, oleskelun kestoa ja miten arvostelu on jätetty.
+ - Valitettavasti näiden tägien käyttö on hankalaa – katso alla oleva osio, jossa niiden hyödyllisyyttä käsitellään
**Arvostelijan sarakkeet**
- `Total_Number_of_Reviews_Reviewer_Has_Given`
- - Tämä saattaa olla tekijä suositusmallissa, esimerkiksi jos voisit määrittää, että tuotteliaammat arvostelijat, joilla on satoja arvosteluja, ovat todennäköisemmin negatiivisia kuin positiivisia. Kuitenkin minkään tietyn arvostelun arvostelijaa ei ole tunnistettu yksilöllisellä koodilla, eikä häntä siksi voida yhdistää arvostelujen joukkoon. Datasetissä on 30 arvostelijaa, joilla on 100 tai enemmän arvosteluja, mutta on vaikea nähdä, kuinka tämä voisi auttaa suositusmallia.
+ - Tämä voisi olla tekijä suositusmallissa, jos pystyisit toteamaan, että aktiivisemmat arvostelijat kirjoittavat todennäköisemmin negatiivisia kuin positiivisia arvioita. Kuitenkaan yksittäistä arvostelijaa ei tunnisteta uniikilla koodilla, joten arvioita ei voi yhdistää tiettyihin arvostelijoihin. 30 arvostelijalla on 100 tai useampia arvosteluja, mutta vaikea nähdä, miten tämä auttaisi suositusmallia.
- `Reviewer_Nationality`
- - Jotkut saattavat ajatella, että tietyt kansallisuudet ovat todennäköisemmin antamassa positiivisia tai negatiivisia arvosteluja kansallisen taipumuksen vuoksi. Ole varovainen rakentaessasi tällaisia anekdoottisia näkemyksiä malleihisi. Nämä ovat kansallisia (ja joskus rodullisia) stereotypioita, ja jokainen arvostelija oli yksilö, joka kirjoitti arvostelun kokemuksensa perusteella. Se saattoi olla suodatettu monien linssien läpi, kuten heidän aiemmat hotellivierailunsa, matkustettu etäisyys ja heidän henkilökohtainen temperamenttinsa. Ajatus siitä, että heidän kansallisuutensa oli syy arvostelupisteeseen, on vaikea perustella.
+ - Jotkut saattavat ajatella, että kansallisuus vaikuttaa positiivisten tai negatiivisten arvostelujen todennäköisyyteen. Ole varovainen sisällyttäessäsi tällaisia ennakko-olettamuksia malleihisi. Ne ovat kansalliseen (ja joskus rotuun liittyvään) stereotypiaan perustuvia, vaikka jokainen arvostelija on yksilö, joka kirjoitti arvostelunsa kokemuksensa perusteella. Kokemus voi olla suodatettu monien asioiden, kuten aiempien hotelliyöpymisten, matkustetun matkan ja henkilökohtaisen temperamentin, kautta. On vaikea perustella, että kansallisuus olisi arvostelupisteen syy.
-##### Esimerkit
+##### Esimerkkejä
-| Keskiarvo Piste | Arvostelujen Kokonaismäärä | Arvostelijan Piste | Negatiivinen
Arvostelu | Positiivinen Arvostelu | Tagit |
-| ----------------- | -------------------------- | -------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-> 🚨 Huomio varovaisuudesta
+| Average Score | Total Number Reviews | Reviewer Score | Negative
Review | Positive Review | Tags |
+| -------------- | ---------------------- | ---------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------- | ----------------------------------------------------------------------------------------- |
+| 7.8 | 1945 | 2.5 | Tämä on tällä hetkellä rakennustyömaa, jossa minut terrorisoitiin varhain aamulla ja koko päivän sietämättömällä rakennusmelulla, kun lepäsin pitkän matkan jälkeen ja työskentelin huoneessa. Ihmiset työskentelivät koko päivän, eli käytettiin piikkaajia viereisissä huoneissa. Pyysin huoneenvaihtoa, mutta hiljaista huonetta ei ollut tarjolla. Pahentaakseni tilannetta minulta veloitettiin liikaa. Check-out illalla, koska minun piti lähteä hyvin aikaisella lennolla, sain asianmukaisen laskun. Päivää myöhemmin hotelli veloitti toisen maksun ilman suostumustani, yli varatun hinnan. Tämä paikka on kamala. Älä rankaise itseäsi varaamalla tänne | Ei mitään Kamala paikka, pysy poissa | Työmatka Pariskunta Standard Double Room Majoitus 2 yötä |
+
+Kuten näet, tämä asiakas ei viihtynyt hotellissa. Hotellilla on hyvä keskimääräinen piste 7.8 ja 1945 arvostelua, mutta tämä arvostelija antoi sille 2.5 ja kirjoitti 115 sanaa siitä, kuinka negatiivinen heidän oleskelunsa oli. Jos he eivät olisi kirjoittaneet mitään Positive_Review-kenttään, voisi kuvitella, ettei mitään positiivista ollut, mutta he kirjoittivat kuitenkin 7 varoittavaa sanaa. Jos vain laskemme sanat tunteiden tai merkityksen sijaan, arvostelun sisältö voi vääristyä. Heidän pisteensä 2.5 on outo, koska jos hotelli oli niin huono, miksi antaa pisteitä lainkaan? Tutkimalla aineistoa tarkemmin huomaat, että alin mahdollinen pistemäärä on 2.5, ei 0. Korkein mahdollinen on 10.
+
+##### Tags-tägit
+
+Kuten aiemmin mainittu, ensimmäiseltä silmäykseltä idee käyttää `Tags`-kenttää luokitukseen vaikuttaa järkevältä. Valitettavasti nämä tägät eivät ole standardoituja, mikä tarkoittaa, että toisessa hotellissa vaihtoehdot voivat olla *Yhden hengen huone*, *Kahden hengen huone* ja *Parihuone*, mutta toisessa hotellissa ne voivat olla *Deluxe yhden hengen huone*, *Classic Queen -huone* ja *Executive King -huone*. Nämä voivat tarkoittaa samaa asiaa, mutta kun vaihteluita on niin paljon, vaihtoehdot ovat:
+
+1. Yrittää muuttaa kaikki termit yhdeksi standardiksi, mikä on hyvin vaikeaa, koska ei ole selvää, mikä muunto olisi missäkin tapauksessa (esimerkiksi *Classic yhden hengen huone* vastaa *Yhden hengen huonetta*, mutta *Superior Queen Room with Courtyard Garden or City View* on paljon vaikeampi muuntaa)
+
+1. Voidaan käyttää NLP-menetelmää ja mitata tiettyjen termien, kuten *Solo*, *Business Traveller* tai *Family with young kids*, esiintymistiheyttä hotellikohtaisesti ja ottaa se mukaan suositukseen
+
+Tägit ovat yleensä (mutta eivät aina) yksi kenttä, jossa on 5–6 pilkuilla eroteltua arvoa, jotka vastaavat matkustustyyppiä, asiakastyyppiä, huonetyyppiä, yöpymisten määrää ja laitetta, jolla arvostelu lähetettiin. Jotkut arvostelijat eivät kuitenkaan täytä kaikkia kenttiä, joten arvot eivät ole aina samassa järjestyksessä.
+
+Esimerkiksi *Ryhmän tyyppi* -kentässä on 1025 erilaista arvoa `Tags`-sarakkeessa, mutta valitettavasti vain osa viittaa ryhmään (osa liittyy huonetyyppiin jne.). Jos suodatat vain perhettä koskevat, tuloksissa on paljon *Perhehuone* -tyyppisiä tuloksia. Jos mukaan otetaan termi *with*, eli lasketaan *Family with* -arvot, tulokset ovat parempia: yli 80 000 tuloksesta 515 000:sta sisältää ilmaisun "Family with young children" tai "Family with older children".
+
+Tämä tarkoittaa, että tägisarakkeen avulla voi olla hyödyllistä, mutta sen tekeminen käyttökelpoiseksi vaatii työtä.
+
+##### Keskimääräinen hotellin piste
+
+Aineistossa on joitain outouksia tai ristiriitaisuuksia, joita en pysty selittämään, mutta jotka esitetään tässä, jotta tiedät niistä mallia rakentaessasi. Jos ratkaiset asian, ilmoitathan siitä keskusteluosiossa!
+
+Aineistossa on seuraavat sarakkeet, jotka liittyvät keskipisteeseen ja arvostelujen määrään:
+
+1. Hotel_Name
+2. Additional_Number_of_Scoring
+3. Average_Score
+4. Total_Number_of_Reviews
+5. Reviewer_Score
+
+Yhden hotellin suurin arvostelujen määrä tässä aineistossa on *Britannia International Hotel Canary Wharf* 4789 arvostelua 515 000:sta. Mutta jos katsot `Total_Number_of_Reviews` -arvoa tässä hotellissa, se on 9086. Voisit päätellä, että on paljon pisteitä ilman arvostelua, joten lisätään mukaan myös `Additional_Number_of_Scoring` -arvo. Tämä on 2682, ja sen lisääminen 4789:ään antaa 7 471, mikä on silti 1615 vähemmän kuin `Total_Number_of_Reviews`.
+
+Jos katsoo `Average_Score` -saraketta, voisi päätellä, että se on aineiston arvostelujen keskiarvo, mutta Kagglessa kuvaillaan sitä seuraavasti: "*Eniten ajankohtaisen viime vuoden kommentin mukaan laskettu hotellin keskipiste*". Tämä ei vaikuta kovin hyödylliseltä, mutta voimme laskea oman keskiarvon arvostelupisteiden perusteella aineistosta. Käyttäen samaa hotellia esimerkkinä, keskimääräinen hotellin piste on annettu arvoksi 7.1, mutta laskettu (aineistossa olevien arvostelijoiden keskiarvo) on 6.8. Se on lähellä, mutta ei sama, ja voimme vain arvata, että `Additional_Number_of_Scoring` -arvostelut nostivat keskiarvon 7.1:een. Valitettavasti, kun tätä ei voi testata tai todistaa, on vaikea luottaa tai käyttää `Average_Score`, `Additional_Number_of_Scoring` ja `Total_Number_of_Reviews` arvoja, kun ne perustuvat tai viittaavat dataan, jota meillä ei ole.
+
+Tilannetta monimutkaistaa se, että toiseksi suurimman arvostelumäärän hotelli saa laskettua keskipisteeksi 8.12 ja aineiston `Average_Score` on 8.1. Onko tämä oikea piste sattumaa vai onko ensimmäinen hotelli poikkeama?
+
+
+On mahdollista, että nämä hotellit saattavat olla poikkeuksia ja että ehkä suurin osa arvoista täsmää (mutta jotkut eivät jostain syystä), kirjoitamme seuraavaksi lyhyen ohjelman tutkiaksemme datasetin arvoja ja määrittääksemme arvojen oikean käytön (tai käyttämättömyyden).
+
+> 🚨 Varoituksen sana
>
-> Työskennellessäsi tämän datasetin parissa kirjoitat koodia, joka laskee jotain tekstistä ilman, että sinun tarvitsee itse lukea tai analysoida tekstiä. Tämä on NLP:n ydin: tulkita merkitystä tai tunnetta ilman, että ihminen tekee sen. On kuitenkin mahdollista, että luet joitakin negatiivisia arvosteluja. Kehottaisin sinua välttämään sitä, koska se ei ole tarpeen. Jotkut niistä ovat typeriä tai epäolennaisia negatiivisia hotelliarvosteluja, kuten "Sää ei ollut hyvä", asia, joka on hotellin tai kenenkään muun hallinnan ulkopuolella. Mutta joissakin arvosteluissa on myös synkempi puoli. Joskus negatiiviset arvostelut ovat rasistisia, seksistisiä tai ikäsyrjiviä. Tämä on valitettavaa, mutta odotettavissa datasetissä, joka on kerätty julkiselta verkkosivustolta. Jotkut arvostelijat jättävät arvosteluja, jotka saattavat olla vastenmielisiä, epämukavia tai järkyttäviä. On parempi antaa koodin mitata tunne kuin lukea ne itse ja järkyttyä. Tästä huolimatta vain vähemmistö kirjoittaa tällaisia asioita, mutta heitä on silti olemassa.
+> Kun työskentelet tämän datasetin kanssa, kirjoitat koodia, joka laskee jotain tekstistä ilman, että sinun tarvitsee itse lukea tai analysoida tekstiä. Tämä on NLP:n ydin, tulkita merkitys tai tunnelma ilman ihmisen osallistumista. On kuitenkin mahdollista, että luet joitakin negatiivisia arvosteluja. Kehotan sinua olemaan tekemättä niin, koska sinun ei tarvitse. Jotkut niistä ovat typeriä tai merkityksettömiä negatiivisia hotelliarvosteluja, kuten "Sää ei ollut hyvä", jotain hotellin hallinnan ulkopuolella, tai oikeastaan kenenkään hallinnan ulkopuolella. Mutta joissakin arvosteluissa on myös pimeä puoli. Joskus negatiiviset arvostelut ovat rasistisia, seksistisiä tai ikään perustuvia. Tämä on valitettavaa mutta odotettavissa julkisen verkkosivuston keräämässä datasetissä. Jotkut arvostelijat jättävät arvosteluja, jotka koet epämiellyttävinä, epämukavina tai loukkaavina. On parempi antaa koodin mitata tunnelmaa kuin lukea niitä itse ja loukkaantua. Tosin tällaisia kirjoittavia on vähemmistönä, mutta heitä on kuitenkin olemassa.
+
## Harjoitus - Datan tutkiminen
### Lataa data
-Visuaalinen tarkastelu riittää, nyt on aika kirjoittaa koodia ja saada vastauksia! Tässä osiossa käytetään pandas-kirjastoa. Ensimmäinen tehtäväsi on varmistaa, että pystyt lataamaan ja lukemaan CSV-datan. Pandas-kirjastossa on nopea CSV-lataustyökalu, ja tulos sijoitetaan dataframeen, kuten aiemmissa oppitunneissa. Lataamassamme CSV-tiedostossa on yli puoli miljoonaa riviä, mutta vain 17 saraketta. Pandas tarjoaa monia tehokkaita tapoja käsitellä dataframea, mukaan lukien mahdollisuuden suorittaa operaatioita jokaiselle riville.
+Dataa on tutkittu visuaalisesti tarpeeksi, nyt kirjoitat koodia ja saat vastauksia! Tämä osio käyttää pandas-kirjastoa. Ensimmäinen tehtäväsi on varmistaa, että pystyt lataamaan ja lukemaan CSV-dataa. Pandas-kirjastolla on nopea CSV-lataaja, ja tulos sijoitetaan dataframeen, kuten aiemmissa oppitunneissa. Lataamamme CSV:ssä on yli puoli miljoonaa riviä, mutta vain 17 saraketta. Pandas tarjoaa monia tehokkaita tapoja käsitellä dataa, mukaan lukien mahdollisuuden suorittaa operaatioita jokaiselle riville.
-Tästä eteenpäin tässä oppitunnissa on koodiesimerkkejä, selityksiä koodista ja keskustelua tulosten merkityksestä. Käytä mukana olevaa _notebook.ipynb_-tiedostoa koodiasi varten.
+Tästä oppitunnista eteenpäin on mukana koodipätkiä ja joitain selityksiä sekä keskustelua tuloksista. Käytä mukana tullutta _notebook.ipynb_-tiedostoa koodillesi.
-Aloitetaan lataamalla datatiedosto, jota käytät:
+Aloitetaan lataamalla käyttämäsi datatiedosto:
```python
-# Load the hotel reviews from CSV
+# Lataa hotelliarvostelut CSV-tiedostosta
import pandas as pd
import time
-# importing time so the start and end time can be used to calculate file loading time
+# tuodaan time, jotta aloitus- ja lopetusaikaa voidaan käyttää tiedoston latausajan laskemiseen
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 on 'DataFrame' - varmista, että latasit tiedoston data-kansioon
df = pd.read_csv('../../data/Hotel_Reviews.csv')
end = time.time()
print("Loading took " + str(round(end - start, 2)) + " seconds")
```
-Kun data on ladattu, voimme suorittaa siihen operaatioita. Pidä tämä koodi ohjelmasi yläosassa seuraavaa osaa varten.
+Nyt kun data on ladattu, voimme tehdä siihen operaatioita. Pidä tämä koodi ohjelmasi yläosassa seuraavaa osaa varten.
## Tutki dataa
-Tässä tapauksessa data on jo *puhdasta*, mikä tarkoittaa, että se on valmis käsiteltäväksi eikä sisällä muiden kielten merkkejä, jotka saattaisivat häiritä algoritmeja, jotka odottavat vain englanninkielisiä merkkejä.
-
-✅ Saatat joutua työskentelemään datan kanssa, joka vaatii alkuvaiheen käsittelyä ennen NLP-tekniikoiden soveltamista, mutta tällä kertaa ei tarvitse. Jos joutuisit, miten käsittelisit ei-englanninkielisiä merkkejä?
+Tässä tapauksessa data on jo *puhdasta*, eli se on valmis käsiteltäväksi eikä sisällä muita kuin englantilaisia merkkejä, jotka voisivat sotkea algoritmit.
-Varmista, että kun data on ladattu, voit tutkia sitä koodilla. On helppoa keskittyä `Negative_Review`- ja `Positive_Review`-sarakkeisiin. Ne sisältävät luonnollista tekstiä NLP-algoritmejasi varten. Mutta odota! Ennen kuin siirryt NLP:hen ja sentimenttianalyysiin, seuraa alla olevaa koodia varmistaaksesi, että datasetissä annetut arvot vastaavat pandasilla laskettuja arvoja.
+✅ Saatat joutua työskentelemään datan kanssa, joka vaatii jonkinlaista esikäsittelyä ennen NLP-teknisten menetelmien soveltamista, mutta ei tällä kertaa. Mutta jos joutuisit, kuinka käsittelisit ei-englanninkielisiä merkkejä?
-## Dataframen operaatioita
+Varmista hetki, että datan latauduttua voit tutkia sitä koodilla. On hyvin helppo keskittyä sarakkeisiin `Negative_Review` ja `Positive_Review`. Niissä on luonnollista tekstiä, jota NLP-algoritmit voivat käsitellä. Mutta odota! Ennen kuin hyppäät NLP:n ja tunnelman analysointiin, sinun pitäisi seurata alla olevaa koodia tarkistaaksesi, vastaavatko datasetissä annetut arvot arvoja, jotka lasket pandasilla.
-Ensimmäinen tehtävä tässä oppitunnissa on tarkistaa, ovatko seuraavat väittämät oikein kirjoittamalla koodia, joka tutkii dataframea (ilman sen muuttamista).
+## Dataframen operoinnit
-> Kuten monissa ohjelmointitehtävissä, on useita tapoja suorittaa tämä, mutta hyvä neuvo on tehdä se yksinkertaisimmalla ja helpoimmalla tavalla, erityisesti jos se on helpompi ymmärtää, kun palaat tähän koodiin tulevaisuudessa. Dataframeissa on kattava API, joka usein tarjoaa tehokkaan tavan tehdä haluamasi.
+Ensimmäinen tehtävä tässä oppitunnissa on tarkistaa, ovatko seuraavat väittämät oikein kirjoittamalla koodi, joka tutkii dataframeta (ilman sen muuttamista).
-Käsittele seuraavia kysymyksiä kooditehtävinä ja yritä vastata niihin katsomatta ratkaisua.
+> Kuten monissa ohjelmointitehtävissä, on useita tapoja suorittaa tämä, mutta hyvä neuvo on tehdä se yksinkertaisimmalla, helpoimmalla tavalla, erityisesti jos on helpompaa ymmärtää tätä koodia myöhemmin. Dataframella on laaja API, joka usein mahdollistaa halutun tekemisen tehokkaasti.
-1. Tulosta juuri lataamasi dataframen *shape* (muoto eli rivien ja sarakkeiden määrä).
-2. Laske arvot `Reviewer_Nationality`-sarakkeelle:
- 1. Kuinka monta erillistä arvoa `Reviewer_Nationality`-sarakkeessa on ja mitkä ne ovat?
- 2. Mikä arvostelijan kansallisuus on datasetissä yleisin (tulosta maa ja arvostelujen määrä)?
- 3. Mitkä ovat seuraavat 10 yleisintä kansallisuutta ja niiden lukumäärät?
-3. Mikä hotelli sai eniten arvosteluja kunkin 10 yleisimmän arvostelijan kansallisuuden osalta?
-4. Kuinka monta arvostelua datasetissä on per hotelli (hotellin arvostelujen lukumäärä)?
-5. Vaikka datasetissä on `Average_Score`-sarake jokaiselle hotellille, voit myös laskea keskiarvon (laskemalla kaikkien arvostelijoiden pisteiden keskiarvon datasetissä jokaiselle hotellille). Lisää dataframeen uusi sarake otsikolla `Calc_Average_Score`, joka sisältää lasketun keskiarvon.
-6. Onko hotelleja, joilla on sama (pyöristetty yhteen desimaaliin) `Average_Score` ja `Calc_Average_Score`?
- 1. Kokeile kirjoittaa Python-funktio, joka ottaa argumenttina Seriesin (rivin) ja vertaa arvoja, tulostaen viestin, kun arvot eivät ole yhtäläiset. Käytä sitten `.apply()`-metodia käsitelläksesi jokaisen rivin funktiolla.
-7. Laske ja tulosta, kuinka monella rivillä `Negative_Review`-sarake sisältää arvon "No Negative".
-8. Laske ja tulosta, kuinka monella rivillä `Positive_Review`-sarake sisältää arvon "No Positive".
-9. Laske ja tulosta, kuinka monella rivillä `Positive_Review`-sarake sisältää arvon "No Positive" **ja** `Negative_Review`-sarake arvon "No Negative".
+Kohtele seuraavia kysymyksiä kooditehtävinä ja yritä vastata niihin ilman ratkaisun katsomista.
+1. Tulosta juuri lataamasi dataframen *muoto* (muoto on rivien ja sarakkeiden lukumäärä)
+2. Laske arvostelijoiden kansallisuuksien esiintymistiheys:
+ 1. Kuinka monta eri arvoa sarakkeessa `Reviewer_Nationality` on ja mitkä ne ovat?
+ 2. Mikä arvostelijan kansallisuus on yleisin datasetissä (tulosta maa ja arvostelujen määrä)?
+ 3. Mitkä ovat seuraavat 10 yleisintä kansallisuutta ja niiden esiintymistiheys?
+3. Mikä oli yleisimmin arvosteltu hotelli kullekin kymmenelle yleiselle arvostelijakansallisuudelle?
+4. Kuinka monta arvostelua hotellilla on datasetissä (hotellin esiintymistiheys)?
+5. Vaikka datasetissä on sarake `Average_Score` jokaiselle hotellille, voit myös laskea keskiarvon (otsikoiden kaikkien arvostelijoiden pisteiden keskiarvon jokaiselle hotellille). Lisää dataframeesi uusi sarake otsikolla `Calc_Average_Score`, joka sisältää lasketun keskiarvon.
+6. Onko joillakin hotelleilla sama (pyöristettynä 1 desimaaliin) `Average_Score` ja `Calc_Average_Score`?
+ 1. Yritä kirjoittaa Python-funktio, joka ottaa sarjan (rivin) argumentiksi ja vertaa arvoja, tulostaen viestin, kun arvot eivät ole yhtä suuret. Käytä sitten `.apply()`-metodia käsittelemään jokainen rivi funktiolla.
+7. Laske ja tulosta, kuinka monessa rivissä sarakkeen `Negative_Review` arvo on "No Negative"
+8. Laske ja tulosta, kuinka monessa rivissä sarakkeen `Positive_Review` arvo on "No Positive"
+9. Laske ja tulosta, kuinka monessa rivissä sarakkeen `Positive_Review` arvo on "No Positive" **ja** sarakkeen `Negative_Review` arvo on "No Negative"
### Koodivastaukset
-1. Tulosta juuri lataamasi dataframen *shape* (muoto eli rivien ja sarakkeiden määrä).
+1. Tulosta juuri lataamasi dataframen *muoto* (muoto on rivien ja sarakkeiden lukumäärä)
```python
print("The shape of the data (rows, cols) is " + str(df.shape))
> The shape of the data (rows, cols) is (515738, 17)
```
-2. Laske arvot `Reviewer_Nationality`-sarakkeelle:
+2. Laske arvostelijoiden kansallisuuksien esiintymistiheys:
- 1. Kuinka monta erillistä arvoa `Reviewer_Nationality`-sarakkeessa on ja mitkä ne ovat?
- 2. Mikä arvostelijan kansallisuus on datasetissä yleisin (tulosta maa ja arvostelujen määrä)?
+ 1. Kuinka monta eri arvoa sarakkeessa `Reviewer_Nationality` on ja mitkä ne ovat?
+ 2. Mikä arvostelijan kansallisuus on yleisin datasetissä (tulosta maa ja arvostelujen määrä)?
```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
+ # value_counts() luo Series-olion, jolla on tässä tapauksessa indeksi ja arvot, eli maa ja kuinka usein ne esiintyvät arvioijan kansalaisuuksissa
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
+ # tulosta Seriesin ensimmäiset ja viimeiset rivit. Vaihda nationality_freq.to_string() tulostaaksesi kaikki tiedot
print(nationality_freq)
There are 227 different nationalities
@@ -183,12 +222,12 @@ Käsittele seuraavia kysymyksiä kooditehtävinä ja yritä vastata niihin katso
Name: Reviewer_Nationality, Length: 227, dtype: int64
```
- 3. Mitkä ovat seuraavat 10 yleisintä kansallisuutta ja niiden lukumäärät?
+ 3. Mitkä ovat seuraavat 10 yleisintä kansallisuutta ja niiden esiintymistiheys?
```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?
+ # Huomaa, että arvoissa on alussa välilyönti, strip() poistaa sen tulostusta varten
+ # Mitkä ovat 10 yleisintä kansallisuutta ja niiden esiintymistiheydet?
print("The next 10 highest frequency reviewer nationalities are:")
print(nationality_freq[1:11].to_string())
@@ -206,15 +245,15 @@ Käsittele seuraavia kysymyksiä kooditehtävinä ja yritä vastata niihin katso
France 7296
```
-3. Mikä hotelli sai eniten arvosteluja kunkin 10 yleisimmän arvostelijan kansallisuuden osalta?
+3. Mikä oli yleisimmin arvosteltu hotelli kullekin kymmenelle yleiselle arvostelijakansallisuudelle?
```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)
+ # Mikä oli eniten arvosteltu hotelli kymmenen suosituimman kansallisuuden joukossa
+ # Yleensä Pandasissa vältät eksplisiittisiä silmukoita, mutta halusin näyttää uuden dataframen luomisen kriteerien avulla (älä tee tätä suurilla tietomäärillä, koska se voi olla hyvin hidasta)
for nat in nationality_freq[:10].index:
- # First, extract all the rows that match the criteria into a new dataframe
+ # Ensin poimi kaikki rivit, jotka täyttävät kriteerit, uuteen dataframeen
nat_df = df[df["Reviewer_Nationality"] == nat]
- # Now get the hotel freq
+ # Nyt haetaan hotellin esiintymistiheys
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.")
@@ -230,16 +269,16 @@ Käsittele seuraavia kysymyksiä kooditehtävinä ja yritä vastata niihin katso
The most reviewed hotel for Canada was St James Court A Taj Hotel London with 61 reviews.
```
-4. Kuinka monta arvostelua datasetissä on per hotelli (hotellin arvostelujen lukumäärä)?
+4. Kuinka monta arvostelua hotellilla on datasetissä (hotellin esiintymistiheys)?
```python
- # First create a new dataframe based on the old one, removing the uneeded columns
+ # Luo ensin uusi dataframe vanhan pohjalta poistamalla tarpeettomat sarakkeet
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
+ # Ryhmittele rivit Hotel_Name mukaan, laske ne ja laita tulos uuteen sarakkeeseen Total_Reviews_Found
hotel_freq_df['Total_Reviews_Found'] = hotel_freq_df.groupby('Hotel_Name').transform('count')
- # Get rid of all the duplicated rows
+ # Poista kaikki päällekkäiset rivit
hotel_freq_df = hotel_freq_df.drop_duplicates(subset = ["Hotel_Name"])
display(hotel_freq_df)
```
@@ -253,31 +292,31 @@ Käsittele seuraavia kysymyksiä kooditehtävinä ja yritä vastata niihin katso
| Hotel Wagner | 135 | 10 |
| Hotel Gallitzinberg | 173 | 8 |
- Saatat huomata, että datasetistä laskettu tulos ei vastaa `Total_Number_of_Reviews`-arvoa. On epäselvää, edustiko datasetin arvo hotellin kokonaisarvostelujen määrää, mutta kaikkia ei ehkä ole kerätty, tai kyseessä on jokin muu laskelma. `Total_Number_of_Reviews`-arvoa ei käytetä mallissa tämän epäselvyyden vuoksi.
+ Saatat huomata, että datasetissä *lasketut* tulokset eivät vastaa arvoa `Total_Number_of_Reviews`. Ei ole selvää, kuvaako datasetin arvo hotellin kokonaistarvostelumäärää, mutta kaikki arvostelut eivät ole mukana, vai onko kyseessä muu laskelma. Arvoa `Total_Number_of_Reviews` ei käytetä mallissa tämän epäselvyyden vuoksi.
-5. Vaikka datasetissä on `Average_Score`-sarake jokaiselle hotellille, voit myös laskea keskiarvon (laskemalla kaikkien arvostelijoiden pisteiden keskiarvon datasetissä jokaiselle hotellille). Lisää dataframeen uusi sarake otsikolla `Calc_Average_Score`, joka sisältää lasketun keskiarvon. Tulosta sarakkeet `Hotel_Name`, `Average_Score` ja `Calc_Average_Score`.
+5. Vaikka datasetissä on sarake `Average_Score` jokaiselle hotellille, voit myös laskea keskiarvon (kaikkien arvostelijoiden pisteiden keskiarvon jokaiselle hotellille). Lisää dataframeresultsiisi uusi sarake otsikolla `Calc_Average_Score`, joka sisältää tämän lasketun keskiarvon. Tulosta sarakkeet `Hotel_Name`, `Average_Score` ja `Calc_Average_Score`.
```python
- # define a function that takes a row and performs some calculation with it
+ # määrittele funktio, joka ottaa rivin ja suorittaa sillä jonkin laskelman
def get_difference_review_avg(row):
return row["Average_Score"] - row["Calc_Average_Score"]
- # 'mean' is mathematical word for 'average'
+ # 'mean' on matemaattinen sana 'keskiarvolle'
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
+ # Lisää uusi sarake, jossa on kahden keskiarvopistemäärän välinen ero
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)
+ # Luo df ilman kaikkia Hotel_Name-kentän päällekkäisyyksiä (joten vain 1 rivi per hotelli)
review_scores_df = df.drop_duplicates(subset = ["Hotel_Name"])
- # Sort the dataframe to find the lowest and highest average score difference
+ # Järjestä dataframe löytääksesi pienimmän ja suurimman keskiarvopistemäärän eron
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"]])
```
- Saatat myös ihmetellä `Average_Score`-arvoa ja miksi se joskus eroaa lasketusta keskiarvosta. Koska emme voi tietää, miksi jotkut arvot täsmäävät, mutta toiset eroavat, on turvallisinta tässä tapauksessa käyttää arvostelupisteitä, jotka meillä on, ja laskea keskiarvo itse. Ero on yleensä hyvin pieni, tässä ovat hotellit, joilla on suurin poikkeama datasetin keskiarvon ja lasketun keskiarvon välillä:
+ Saatat myös pohtia `Average_Score`-arvoa ja miksi se joskus eroaa lasketusta keskiarvosta. Koska emme voi tietää, miksi jotkut arvot täsmäävät, mutta toiset eroavat, on tässä tapauksessa turvallisinta käyttää laskettuja arvostelupisteitä keskiarvon laskemiseen itse. Tosin erot ovat yleensä hyvin pieniä, tässä ovat hotellit, joilla on suurimmat poikkeamat datasetin keskiarvosta ja lasketusta keskiarvosta:
| Average_Score_Difference | Average_Score | Calc_Average_Score | Hotel_Name |
| :----------------------: | :-----------: | :----------------: | ------------------------------------------: |
@@ -293,16 +332,16 @@ Käsittele seuraavia kysymyksiä kooditehtävinä ja yritä vastata niihin katso
| 0.9 | 8.6 | 7.7 | MARQUIS Faubourg St Honor Relais Ch teaux |
| 1.3 | 7.2 | 5.9 | Kube Hotel Ice Bar |
- Koska vain yhdellä hotellilla on ero, joka on suurempi kuin 1, voimme todennäköisesti jättää eron huomiotta ja käyttää laskettua keskiarvoa.
+ Kun vain yhdellä hotellilla ero pisteissä on yli 1, voimme todennäköisesti jättää erot huomioimatta ja käyttää laskettua keskiarvosummaa.
-6. Laske ja tulosta, kuinka monella rivillä `Negative_Review`-sarake sisältää arvon "No Negative".
+6. Laske ja tulosta, kuinka monessa rivissä sarakkeen `Negative_Review` arvo on "No Negative"
-7. Laske ja tulosta, kuinka monella rivillä `Positive_Review`-sarake sisältää arvon "No Positive".
+7. Laske ja tulosta, kuinka monessa rivissä sarakkeen `Positive_Review` arvo on "No Positive"
-8. Laske ja tulosta, kuinka monella rivillä `Positive_Review`-sarake sisältää arvon "No Positive" **ja** `Negative_Review`-sarake arvon "No Negative".
+8. Laske ja tulosta, kuinka monessa rivissä sarakkeen `Positive_Review` arvo on "No Positive" **ja** sarakkeen `Negative_Review` arvo on "No Negative"
```python
- # with lambdas:
+ # lambda-funktioiden kanssa:
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)))
@@ -323,10 +362,10 @@ Käsittele seuraavia kysymyksiä kooditehtävinä ja yritä vastata niihin katso
## Toinen tapa
-Toinen tapa laskea rivejä ilman Lambdaa ja käyttää summaa rivien laskemiseen:
+Toinen tapa laskea kohteet ilman lambda-funktioita ja käyttää summaa rivien laskemiseen:
```python
- # without lambdas (using a mixture of notations to show you can use both)
+ # ilman lambdoja (käyttämällä sekoitusta merkintöjä näyttämään, että voit käyttää molempia)
start = time.time()
no_negative_reviews = sum(df.Negative_Review == "No Negative")
print("Number of No Negative reviews: " + str(no_negative_reviews))
@@ -346,20 +385,20 @@ Toinen tapa laskea rivejä ilman Lambdaa ja käyttää summaa rivien laskemiseen
Sum took 0.19 seconds
```
- Saatat huomata, että 127 rivillä on sekä "No Negative" että "No Positive" arvot sarakkeissa `Negative_Review` ja `Positive_Review`. Tämä tarkoittaa, että arvostelija antoi hotellille numeerisen pisteen, mutta jätti kirjoittamatta sekä positiivisen että negatiivisen arvostelun. Onneksi tämä on pieni määrä rivejä (127/515738, eli 0,02 %), joten se ei todennäköisesti vääristä malliamme tai tuloksia mihinkään suuntaan. Saatat kuitenkin yllättyä, että arvosteludatasetissä on rivejä ilman arvosteluja, joten datan tutkiminen on tärkeää tällaisten rivien löytämiseksi.
+ Saatat huomata, että 127 rivillä molempien sarakkeiden `Negative_Review` ja `Positive_Review` arvot ovat vastaavasti "No Negative" ja "No Positive". Tämä tarkoittaa, että arvostelija antoi hotellille numeerisen arvion, mutta ei kirjoittanut positiivista eikä negatiivista arvostelua. Onneksi tämä on pieni osuus riveistä (127 / 515738, eli 0,02 %), joten se ei todennäköisesti vinouta mallia tai tuloksia, mutta et ehkä odottanut arvosteludatan sisältävän rivejä ilman varsinaisia arvosteluja, joten datan tutkiminen tällaisten rivien löytämiseksi on tärkeää.
-Nyt kun olet tutkinut datasetin, seuraavassa oppitunnissa suodatat dataa ja lisäät sentimenttianalyysin.
+Nyt kun olet tutkinut datasetin, voit seuraavassa oppitunnissa suodattaa dataa ja lisätä tunnelman analysoinnin.
---
## 🚀Haaste
-Tämä oppitunti osoittaa, kuten aiemmissa oppitunneissa nähtiin, kuinka tärkeää on ymmärtää data ja sen erityispiirteet ennen operaatioiden suorittamista. Tekstipohjainen data vaatii erityistä tarkastelua. Tutki erilaisia tekstipainotteisia datasettejä ja katso, voitko löytää alueita, jotka voisivat tuoda malliin vinoumaa tai vääristynyttä sentimenttiä.
+Tämä oppitunti osoittaa, kuten aiemmissa oppitunneissa, kuinka kriittistä on ymmärtää oma data ja sen ominaisuudet ennen operaatioiden tekemistä. Erityisesti tekstipohjainen data vaatii huolellista tarkastelua. Kaiva eri tekstipainotteisia datasettejä ja katso, löydätkö alueita, jotka voisivat aiheuttaa vinoutumia tai vääristynyttä tunnelmaa mallissa.
-## [Oppitunnin jälkeinen kysely](https://ff-quizzes.netlify.app/en/ml/)
+## [Luenton jälkeinen tietovisa](https://ff-quizzes.netlify.app/en/ml/)
-## Kertaus ja itseopiskelu
+## Kertaus & Itsenäinen opiskelu
-Ota [tämä NLP-oppimispolku](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77952-leestott) ja tutustu työkaluihin, joita voit kokeilla puhe- ja tekstipainotteisten mallien rakentamisessa.
+Suosittelemme [tätä oppimispolkua NLP:stä](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77952-leestott) löytääksesi työkaluja puhe- ja tekstipainotteisten mallien rakentamiseen.
## Tehtävä
@@ -367,5 +406,7 @@ Ota [tämä NLP-oppimispolku](https://docs.microsoft.com/learn/paths/explore-nat
---
-**Vastuuvapauslauseke**:
-Tämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua [Co-op Translator](https://github.com/Azure/co-op-translator). Vaikka pyrimme tarkkuuteen, huomioithan, että automaattiset käännökset voivat sisältää virheitä tai epätarkkuuksia. Alkuperäinen asiakirja sen alkuperäisellä kielellä tulisi pitää ensisijaisena lähteenä. Kriittisen tiedon osalta suositellaan ammattimaista ihmiskäännöstä. Emme ole vastuussa väärinkäsityksistä tai virhetulkinnoista, jotka johtuvat tämän käännöksen käytöstä.
\ No newline at end of file
+
+**Vastuuvapauslauseke**:
+Tämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua [Co-op Translator](https://github.com/Azure/co-op-translator). Vaikka pyrimme tarkkuuteen, otathan huomioon, että automaattiset käännökset saattavat sisältää virheitä tai epätarkkuuksia. Alkuperäinen asiakirja sen alkuperäiskielellä on virallinen lähde. Tärkeissä asioissa suositellaan ammattimaista ihmiskäännöstä. Emme ole vastuussa tämän käännöksen käytöstä aiheutuvista väärinymmärryksistä tai tulkinnoista.
+
\ No newline at end of file
diff --git a/translations/fi/8-Reinforcement/1-QLearning/README.md b/translations/fi/8-Reinforcement/1-QLearning/README.md
index 127ccebb9..b873c6d80 100644
--- a/translations/fi/8-Reinforcement/1-QLearning/README.md
+++ b/translations/fi/8-Reinforcement/1-QLearning/README.md
@@ -1,47 +1,47 @@
-# Johdanto vahvistusoppimiseen ja Q-oppimiseen
+# Johdatus vahvistusoppimiseen ja Q-oppimiseen
-
-> Sketchnote by [Tomomi Imura](https://www.twitter.com/girlie_mac)
+
+> Sketchnote tekijältä [Tomomi Imura](https://www.twitter.com/girlie_mac)
-Vahvistusoppiminen sisältää kolme tärkeää käsitettä: agentti, tilat ja joukko toimintoja per tila. Kun agentti suorittaa toiminnon tietyssä tilassa, se saa palkkion. Kuvittele tietokonepeli Super Mario. Sinä olet Mario, olet pelitasolla, seisot kallion reunalla. Yläpuolellasi on kolikko. Sinä, Mario, pelitasolla, tietyssä sijainnissa... se on tilasi. Yksi askel oikealle (toiminto) vie sinut reunalta alas, ja se antaisi sinulle matalan numeerisen pisteen. Kuitenkin hyppynapin painaminen antaisi sinulle pisteen ja pysyisit hengissä. Se on positiivinen lopputulos, ja sen pitäisi palkita sinut positiivisella numeerisella pisteellä.
+Vahvistusoppiminen sisältää kolme tärkeää käsitettä: agentin, joitain tiloja ja joukossa toimintoja kullekin tilalle. Suorittamalla toiminnon tietyssä tilassa agentti saa palkinnon. Kuvittele jälleen tietokonepeli Super Mario. Sinä olet Mario, olet pelitasolla ja seisot kallion reunalla. Ylläsi on kolikko. Sinä Mario, pelitasolla tiettyssä paikassa ... se on tilasi. Siirtyminen yhden askeleen oikealle (toiminto) vie sinut reunalta alas ja saat alhaisen numeerisen pisteen. Hyppynapin painaminen puolestaan antaa pisteen ja pysyt elossa. Se on positiivinen lopputulos ja siitä pitäisi antaa positiivinen numeerinen piste.
-Käyttämällä vahvistusoppimista ja simulaattoria (peliä) voit oppia pelaamaan peliä maksimoidaksesi palkkion, joka on pysyä hengissä ja kerätä mahdollisimman paljon pisteitä.
+Käyttämällä vahvistusoppimista ja simulaattoria (peliä) voit oppia pelaamaan peliä siten, että maksimoi palkinnon, eli pysyy elossa ja kerää mahdollisimman monta pistettä.
[](https://www.youtube.com/watch?v=lDq_en8RNOo)
-> 🎥 Klikkaa yllä olevaa kuvaa kuullaksesi Dmitryn keskustelua vahvistusoppimisesta
+> 🎥 Klikkaa yllä olevaa kuvaa kuullaksesi Dmitryn keskustelun vahvistusoppimisesta
-## [Ennakkokysely](https://ff-quizzes.netlify.app/en/ml/)
+## [Ennakkokoe](https://ff-quizzes.netlify.app/en/ml/)
## Esivaatimukset ja asennus
-Tässä oppitunnissa kokeilemme Python-koodia. Sinun pitäisi pystyä suorittamaan tämän oppitunnin Jupyter Notebook -koodi joko omalla tietokoneellasi tai pilvessä.
+Tässä oppitunnissa kokeilemme koodia Pythonilla. Sinun tulisi pystyä suorittamaan Jupyter Notebook -koodi tästä oppitunnista joko omalla tietokoneella tai jossain pilvessä.
-Voit avata [oppitunnin notebookin](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) ja käydä läpi tämän oppitunnin rakentaaksesi.
+Voit avata [oppitunnin notebookin](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) ja käydä tämän oppitunnin läpi.
-> **Huom:** Jos avaat tämän koodin pilvestä, sinun täytyy myös hakea [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) -tiedosto, jota käytetään notebook-koodissa. Lisää se samaan hakemistoon kuin notebook.
+> **Huom:** Jos avaat tämän koodin pilvestä, sinun tulee myös hakea [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) -tiedosto, jota käytetään notebookin koodissa. Lisää se samaan hakemistoon notebookin kanssa.
## Johdanto
-Tässä oppitunnissa tutkimme **[Pekka ja susi](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)** -maailmaa, joka on saanut inspiraationsa venäläisen säveltäjän [Sergei Prokofjevin](https://en.wikipedia.org/wiki/Sergei_Prokofiev) musiikillisesta sadusta. Käytämme **vahvistusoppimista** antaaksemme Pekalle mahdollisuuden tutkia ympäristöään, kerätä herkullisia omenoita ja välttää kohtaamista suden kanssa.
+Tässä oppitunnissa tutustumme **[Petteriin ja suden tarinaan](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)**, joka on saanut inspiraationsa venäläisen säveltäjän [Sergei Prokofjevin](https://en.wikipedia.org/wiki/Sergei_Prokofiev) musiikillisesta satuun, käytämme **vahvistusoppimista** antaa Petterin tutkia ympäristöään, kerätä herkullisia omenoita ja välttää suden kohtaamista.
-**Vahvistusoppiminen** (RL) on oppimistekniikka, joka mahdollistaa optimaalisen käyttäytymisen oppimisen **agentille** jossain **ympäristössä** suorittamalla lukuisia kokeita. Agentilla tässä ympäristössä tulisi olla jokin **tavoite**, joka määritellään **palkkiofunktiolla**.
+**Vahvistusoppiminen** (RL) on oppimismenetelmä, joka mahdollistaa meille agentin optimaalisen käyttäytymisen oppimisen jossain **ympäristössä** suorittamalla monia kokeita. Agentilla tässä ympäristössä on jokin **tavoite**, joka määritellään **palkintofunktion** avulla.
## Ympäristö
-Yksinkertaisuuden vuoksi kuvitelkaamme Pekan maailma neliötaulukoksi, jonka koko on `leveys` x `korkeus`, kuten tässä:
+Yksinkertaisuuden vuoksi pidetään Petterin maailma neliömäisenä laudana, jonka koko on `width` x `height`, kuten alla:
-
+
-Jokainen solu tässä taulukossa voi olla:
+Jokainen laudan solu voi olla:
-* **maa**, jolla Pekka ja muut olennot voivat kävellä.
-* **vesi**, jolla ei tietenkään voi kävellä.
-* **puu** tai **ruoho**, paikka, jossa voi levätä.
-* **omena**, joka edustaa jotain, mitä Pekka mielellään löytäisi ravinnokseen.
-* **susi**, joka on vaarallinen ja tulisi välttää.
+* **maa**, jolla Petteri ja muut olennot voivat kävellä.
+* **vesi**, jolla et tietenkään voi kävellä.
+* **puu** tai **ruoho**, paikka jossa voi levätä.
+* **omena**, joka edustaa jotain jota Petteri ilolla haluaa löytää ruoan hankkimiseksi.
+* **susi**, joka on vaarallinen ja jota tulisi välttää.
-On olemassa erillinen Python-moduuli, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), joka sisältää koodin tämän ympäristön kanssa työskentelyyn. Koska tämä koodi ei ole tärkeä käsitteidemme ymmärtämisen kannalta, tuomme moduulin ja käytämme sitä luodaksemme esimerkkitaulukon (koodilohko 1):
+On olemassa erillinen Python-moduuli, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), joka sisältää koodin työskentelyyn tämän ympäristön kanssa. Koska tämä koodi ei ole tärkeää käsitteidemme ymmärtämiselle, tuomme vain moduulin ja käytämme sitä luodaksemme esimerkkilaudan (koodilohko 1):
```python
from rlboard import *
@@ -52,63 +52,63 @@ m.randomize(seed=13)
m.plot()
```
-Tämän koodin pitäisi tulostaa ympäristön kuva, joka on samanlainen kuin yllä.
+Tämän koodin pitäisi tulostaa kuvan kaltainen esitys ympäristöstä.
## Toiminnot ja politiikka
-Esimerkissämme Pekan tavoitteena olisi löytää omena samalla välttäen suden ja muut esteet. Tätä varten hän voi käytännössä kävellä ympäriinsä, kunnes löytää omenan.
+Esimerkissämme Petterin tavoitteena olisi löytää omena ja välttää susi sekä muut esteet. Tätä varten hän voi kävellä ympäriinsä, kunnes löytää omenan.
-Siksi missä tahansa sijainnissa hän voi valita yhden seuraavista toiminnoista: ylös, alas, vasemmalle ja oikealle.
+Siksi missä tahansa sijainnissa hän voi valita seuraavista toiminnoista: ylös, alas, vasemmalle ja oikealle.
-Määrittelemme nämä toiminnot sanakirjana ja yhdistämme ne vastaaviin koordinaattimuutoksiin. Esimerkiksi oikealle siirtyminen (`R`) vastaisi paria `(1,0)`. (koodilohko 2):
+Määrittelemme nämä toiminnot sanakirjaksi ja yhdistämme ne vastaaviin koordinaattimuutoksiin. Esimerkiksi oikealle siirtyminen (`R`) vastaa paria `(1,0)`. (koodilohko 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()) }
```
-Yhteenvetona tämän skenaarion strategia ja tavoite ovat seuraavat:
+Yhteenvetona, tämän skenaarion strategia ja tavoite ovat seuraavat:
-- **Strategia**, agenttimme (Pekan) strategia määritellään niin sanotulla **politiikalla**. Politiikka on funktio, joka palauttaa toiminnon missä tahansa tilassa. Meidän tapauksessamme ongelman tila esitetään taulukolla, mukaan lukien pelaajan nykyinen sijainti.
+- **Strategia**, agenttimme (Petterin) strategia määritellään niin kutsutulla **politiikalla**. Politiikka on funktio, joka palauttaa toiminnon missä tahansa tilassa. Tässä tapauksessa ongelman tila määritellään laudan avulla, sisältäen pelaajan nykyisen sijainnin.
-- **Tavoite**, vahvistusoppimisen tavoite on lopulta oppia hyvä politiikka, joka mahdollistaa ongelman tehokkaan ratkaisemisen. Perustana tarkastelemme kuitenkin yksinkertaisinta politiikkaa, jota kutsutaan **satunnaiseksi kävelyksi**.
+- **Tavoite**, vahvistusoppimisen tavoite on oppia lopulta hyvä politiikka, joka mahdollistaa ongelman tehokkaan ratkaisemisen. Lähtötasona pidämme yksinkertaisinta politiikkaa, nimeltään **satunnaiskävely**.
-## Satunnainen kävely
+## Satunnaiskävely
-Ratkaistaan ensin ongelmamme toteuttamalla satunnaisen kävelyn strategia. Satunnaisessa kävelyssä valitsemme seuraavan toiminnon satunnaisesti sallituista toiminnoista, kunnes saavumme omenalle (koodilohko 3).
+Ratkaistaan ensin ongelmamme toteuttamalla satunnaiskävelystrategia. Satunnaiskävelyssä valitsemme seuraavan toiminnon satunnaisesti sallituista toiminnoista, kunnes saavutamme omenan (koodilohko 3).
-1. Toteuta satunnainen kävely alla olevalla koodilla:
+1. Toteuta satunnaiskävely alla olevalla koodilla:
```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
+ n = 0 # askelten määrä
+ # aseta alkuasento
if start_position:
m.human = start_position
else:
m.random_start()
while True:
if m.at() == Board.Cell.apple:
- return n # success!
+ return n # onnistui!
if m.at() in [Board.Cell.wolf, Board.Cell.water]:
- return -1 # eaten by wolf or drowned
+ return -1 # suden syömänä tai hukkui
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
+ m.move(a) # suorita varsinainen siirto
break
n+=1
walk(m,random_policy)
```
- `walk`-kutsun pitäisi palauttaa vastaavan polun pituus, joka voi vaihdella eri suorituskerroilla.
+ Kutsun `walk` tulisi palauttaa polun pituus, joka voi vaihdella suorituskertojen välillä.
-1. Suorita kävelykokeilu useita kertoja (esimerkiksi 100) ja tulosta tuloksena saadut tilastot (koodilohko 4):
+1. Suorita kävelykokeilu useita kertoja (esim. 100), ja tulosta tuloksena saadut tilastot (koodilohko 4):
```python
def print_statistics(policy):
@@ -125,17 +125,17 @@ Ratkaistaan ensin ongelmamme toteuttamalla satunnaisen kävelyn strategia. Satun
print_statistics(random_policy)
```
- Huomaa, että polun keskimääräinen pituus on noin 30–40 askelta, mikä on melko paljon, kun otetaan huomioon, että keskimääräinen etäisyys lähimpään omenaan on noin 5–6 askelta.
+ Huomaa, että polun keskipituus on noin 30-40 askelta, mikä on melko paljon, kun otetaan huomioon, että lähimmän omenan keskimatka on noin 5-6 askelta.
- Voit myös nähdä, miltä Pekan liikkuminen näyttää satunnaisen kävelyn aikana:
+ Voit myös nähdä, miltä Petterin liike näyttää satunnaiskävelyn aikana:
- 
+ 
-## Palkkiofunktio
+## Palkintofunktio
-Jotta politiikkamme olisi älykkäämpi, meidän täytyy ymmärtää, mitkä siirrot ovat "parempia" kuin toiset. Tätä varten meidän täytyy määritellä tavoitteemme.
+Tehdäksemme politiikasta älykkäämmän, meidän täytyy ymmärtää, mitkä liikkeet ovat "parempia" kuin toiset. Tätä varten meidän on määriteltävä tavoitteemme.
-Tavoite voidaan määritellä **palkkiofunktion** avulla, joka palauttaa jonkin pistemäärän jokaiselle tilalle. Mitä korkeampi numero, sitä parempi palkkiofunktio. (koodilohko 5)
+Tavoite voidaan määritellä **palkintofunktion** muodossa, joka palauttaa jonkin pistemäärän kullekin tilalle. Mitä suurempi luku, sitä parempi palkinto. (koodilohko 5)
```python
move_reward = -0.1
@@ -154,39 +154,115 @@ def reward(m,pos=None):
return move_reward
```
-Mielenkiintoinen asia palkkiofunktioissa on, että useimmissa tapauksissa *merkittävä palkkio annetaan vasta pelin lopussa*. Tämä tarkoittaa, että algoritmimme pitäisi jotenkin muistaa "hyvät" askeleet, jotka johtavat positiiviseen palkkioon lopussa, ja lisätä niiden merkitystä. Samoin kaikki siirrot, jotka johtavat huonoihin tuloksiin, tulisi estää.
+Mielenkiintoinen seikka palkintofunktioissa on, että useimmiten *saanemme merkittävän palkinnon vasta pelin lopussa*. Tämä tarkoittaa, että algoritmin pitäisi jotenkin muistaa "hyvät" askeleet, jotka johtivat positiiviseen palkintoon lopussa, ja lisätä niiden merkitystä. Vastaavasti kaikki liikkeet, jotka johtavat huonoihin tuloksiin, pitäisi estää.
## Q-oppiminen
-Algoritmi, jota käsittelemme tässä, on nimeltään **Q-oppiminen**. Tässä algoritmissa politiikka määritellään funktiolla (tai tietorakenteella), jota kutsutaan **Q-taulukoksi**. Se tallentaa kunkin toiminnon "hyvyyden" tietyssä tilassa.
+Algoritmi, josta keskustelemme tässä, on nimeltään **Q-oppiminen**. Tässä algoritmissa politiikka määritellään funktiona (tai tietorakenteena), jota kutsutaan **Q-taulukoksi**. Se tallentaa kunkin toiminnon "hyvyyden" annetussa tilassa.
-Sitä kutsutaan Q-taulukoksi, koska se on usein kätevää esittää taulukkona tai monidimensionaalisena matriisina. Koska taulukkomme mitat ovat `leveys` x `korkeus`, voimme esittää Q-taulukon numpy-matriisina, jonka muoto on `leveys` x `korkeus` x `len(toiminnot)`: (koodilohko 6)
+Sitä kutsutaan Q-taulukoksi, koska usein on kätevää esittää se taulukkona tai monidimensionaalisena taulukona. Koska laudallamme on mitat `width` x `height`, voimme esittää Q-taulukon numpy-taulukkona, jonka koko on `width` x `height` x `len(actions)`: (koodilohko 6)
```python
Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions)
```
-Huomaa, että alustamme kaikki Q-taulukon arvot samalla arvolla, tässä tapauksessa - 0.25. Tämä vastaa "satunnaisen kävelyn" politiikkaa, koska kaikki siirrot jokaisessa tilassa ovat yhtä hyviä. Voimme välittää Q-taulukon `plot`-funktiolle visualisoidaksemme taulukon taulukossa: `m.plot(Q)`.
+Huomaa, että alustamme Q-taulukon kaikki arvot samalla arvolla, tässä tapauksessa - 0.25. Tämä vastaa "satunnaiskävely" politiikkaa, koska kaikki siirrot jokaisessa tilassa ovat yhtä hyviä. Voimme välittää Q-taulukon `plot`-funktiolle taulukkokuvan piirtämistä varten laudalla: `m.plot(Q)`.
-
+
-Jokaisen solun keskellä on "nuoli", joka osoittaa suositellun liikkumissuunnan. Koska kaikki suunnat ovat yhtä hyviä, näytetään piste.
+Jokaisen solun keskellä on "nuoli", joka osoittaa suositellun liikkumissuunan. Koska kaikki suunnat ovat yhtä hyviä, näytetään piste.
-Nyt meidän täytyy suorittaa simulaatio, tutkia ympäristöämme ja oppia parempi Q-taulukon arvojen jakauma, joka mahdollistaa omenan löytämisen paljon nopeammin.
+Nyt meidän täytyy ajaa simulaatio, tutkia ympäristöämme ja oppia parempi Q-taulukon arvojen jakauma, joka mahdollistaa omenan löytämisen paljon nopeammin.
## Q-oppimisen ydin: Bellmanin yhtälö
-Kun alamme liikkua, jokaisella toiminnolla on vastaava palkkio, eli voimme teoriassa valita seuraavan toiminnon korkeimman välittömän palkkion perusteella. Useimmissa tiloissa siirto ei kuitenkaan saavuta tavoitettamme, eli omenan löytämistä, joten emme voi heti päättää, mikä suunta on parempi.
+Kun alamme liikkua, jokaisella toiminnolla on vastaava palkkio, eli voimme teoreettisesti valita seuraavan toiminnon sen perusteella, mikä palkinto on suurin heti. Useimmissa tiloissa tämä liikku ei kuitenkaan vie meitä tavoittelemaamme omenaa kohti, joten emme voi heti päättää, kumpi suunta on parempi.
-> Muista, että välitön tulos ei ole tärkein, vaan lopullinen tulos, jonka saamme simulaation lopussa.
+> Muistathan, että tärkeää ei ole välitön tulos, vaan lopullinen tulos, jonka saamme simulaation lopussa.
-Jotta voimme ottaa huomioon viivästyneen palkkion, meidän täytyy käyttää **[dynaamisen ohjelmoinnin](https://en.wikipedia.org/wiki/Dynamic_programming)** periaatteita, jotka mahdollistavat ongelman tarkastelun rekursiivisesti.
+Ottaaksemme huomioon viivästyneen palkkion, meidän täytyy käyttää **[dynaamista ohjelmointia](https://en.wikipedia.org/wiki/Dynamic_programming)**, joka sallii meidän ajatella ongelmaa rekursiivisesti.
-Oletetaan, että olemme nyt tilassa *s*, ja haluamme siirtyä seuraavaan tilaan *s'*. Tekemällä niin saamme välittömän palkkion *r(s,a)*, joka määritellään palkkiofunktiolla, plus jonkin tulevan palkkion. Jos oletamme, että Q-taulukkomme heijastaa oikein kunkin toiminnon "houkuttelevuuden", niin tilassa *s'* valitsemme toiminnon *a*, joka vastaa maksimiarvoa *Q(s',a')*. Näin ollen paras mahdollinen tuleva palkkio, jonka voimme saada tilassa *s*, määritellään `max`
+Kuvitellaan, että olemme tilassa *s* ja haluamme siirtyä tilaan *s'*. Tekemällä näin saamme välittömän palkkion *r(s,a)*, joka määritellään palkintofunktiolla, sekä jonkin tulevan palkkion. Jos oletamme, että Q-taulukko heijastaa oikein jokaisen toiminnon "vetovoimaa", valitsemme tilassa *s'* toiminnon *a*, joka vastaa suurinta arvoa *Q(s',a')*. Näin paras mahdollinen tuleva palkkio tilassa *s* määritellään `max`a'*Q(s',a')* (maksimi lasketaan kaikkien mahdollisten toimintojen *a'* yli tilassa *s'*).
-## Politiikan tarkistaminen
+Tämä antaa **Bellmanin kaavan** Q-taulukon arvon laskemiseksi tilassa *s*, toiminnon *a* perusteella:
-Koska Q-taulukko listaa kunkin toiminnon "houkuttelevuuden" kussakin tilassa, sen avulla on melko helppoa määritellä tehokas navigointi maailmassamme. Yksinkertaisimmassa tapauksessa voimme valita toiminnon, joka vastaa korkeinta Q-taulukon arvoa: (koodilohko 9)
+
+
+Tässä γ on niin kutsuttu **diskonttokerroin**, joka määrittää, kuinka paljon nykyistä palkkiota kannattaa arvostaa suhteessa tulevaan palkkioon ja päinvastoin.
+
+## Oppimisalgoritmi
+
+Edellisen yhtälön perusteella voimme kirjoittaa pseudokoodin oppimisalgoritmillemme:
+
+* Alusta Q-taulukko Q tasaisilla arvoilla kaikille tiloille ja toiminnoille
+* Aseta oppimisnopeus α ← 1
+* Toista simulaatio monta kertaa
+ 1. Aloita satunnaisesta sijainnista
+ 1. Toista
+ 1. Valitse toiminto *a* tilassa *s*
+ 2. Suorita toiminto siirtymällä tilaan *s'*
+ 3. Jos peli päättyy tai kokonaipalkinto on liian pieni - lopeta simulaatio
+ 4. Laske palkinto *r* uudessa tilassa
+ 5. Päivitä Q-funktio Bellmanin yhtälön mukaan: *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ maxa'Q(s',a'))*
+ 6. *s* ← *s'*
+ 7. Päivitä kokonaipalkinto ja vähennä α.
+
+## Hyödyntäminen vs. tutkiminen
+
+Edellä mainitussa algoritmissa emme täsmentäneet, kuinka toiminto valitaan kohdassa 2.1. Jos valitsemme toiminnon satunnaisesti, **tutkimme** satunnaisesti ympäristöä ja todennäköisesti kuolemme usein sekä tutkimme alueita, joihin emme normaalisti menisi. Vaihtoehtoinen lähestymistapa olisi **hyödyntää** jo tiedettyjä Q-taulukon arvoja ja valita paras toiminto (korkeamman Q-arvon omaava) tilassa *s*. Tämä estää kuitenkin muiden tilojen tutkimisen, ja on todennäköistä, ettemme löydä optimaalista ratkaisua.
+
+Siten paras lähestymistapa on löytää tasapaino tutkimisen ja hyödyntämisen välillä. Tämä onnistuu valitsemalla toiminto tilassa *s* todennäköisyyksillä, jotka ovat verrannollisia Q-taulukon arvoihin. Alussa, kun Q-taulukon arvot ovat kaikki samat, valinta vastaa satunnaista valintaa, mutta oppimisen myötä seuraamme todennäköisemmin optimaalisinta reittiä ja samalla sallimme agentin valita välillä myös tutkimattoman reitin.
+
+## Pythonin toteutus
+
+Olemme nyt valmiita toteuttamaan oppimisalgoritmin. Ennen sitä tarvitsemme funktion, joka muuttaa mielivaltaiset luvut Q-taulukossa vektoriksi todennäköisyyksiä vastaaville toiminnoille.
+
+1. Luo funktio `probs()`:
+
+ ```python
+ def probs(v,eps=1e-4):
+ v = v-v.min()+eps
+ v = v/v.sum()
+ return v
+ ```
+
+ Lisäämme pienen `eps`-arvon alkuperäiseen vektoriin välttääksemme jakamisen nollalla tapauksessa, jossa kaikki vektorin komponentit ovat identtisiä.
+
+Suorita oppimisalgoritmi 5000 kokeen eli **epookin** ajan: (koodilohko 8)
+```python
+ for epoch in range(5000):
+
+ # Valitse alkuperäinen piste
+ m.random_start()
+
+ # Aloita matkustaminen
+ n=0
+ cum_reward = 0
+ while True:
+ x,y = m.human
+ v = probs(Q[x,y])
+ a = random.choices(list(actions),weights=v)[0]
+ dpos = actions[a]
+ m.move(dpos,check_correctness=False) # sallimme pelaajan liikkua laudan ulkopuolella, mikä päättää episodin
+ r = reward(m)
+ cum_reward += r
+ if r==end_reward or cum_reward < -1000:
+ lpath.append(n)
+ break
+ alpha = np.exp(-n / 10e5)
+ gamma = 0.5
+ ai = action_idx[a]
+ Q[x,y,ai] = (1 - alpha) * Q[x,y,ai] + alpha * (r + gamma * Q[x+dpos[0], y+dpos[1]].max())
+ n+=1
+```
+
+Algoritmin suorittamisen jälkeen Q-taulukon arvot on päivitetty siten, että ne määrittävät eri toimintojen vetovoiman kussakin vaiheessa. Voimme yrittää visualisoida Q-taulukon piirtämällä vektorin jokaisen solun yläpuolelle, joka osoittaa halutun liikkumissuunan. Yksinkertaisuuden vuoksi piirrämme pienen ympyrän nuolen päässä.
+
+
+
+## Politiikan tarkistus
+
+Koska Q-taulukko listaa kunkin toiminnon vetovoiman kussakin tilassa, sen käyttäminen tehokkaaseen navigointiin maailmassamme on helppoa. Yksinkertaisimmassa tapauksessa valitsemme toiminnon, jonka Q-taulukon arvo on korkein: (koodilohko 9)
```python
def qpolicy_strict(m):
@@ -198,17 +274,18 @@ def qpolicy_strict(m):
walk(m,qpolicy_strict)
```
-> Jos kokeilet yllä olevaa koodia useita kertoja, saatat huomata, että se joskus "jumittuu", ja sinun täytyy painaa STOP-painiketta keskeyttääksesi sen. Tämä johtuu siitä, että voi olla tilanteita, joissa kaksi tilaa "osoittavat" toisiaan optimaalisen Q-arvon suhteen, jolloin agentti päätyy liikkumaan näiden tilojen välillä loputtomasti.
+
+> Jos kokeilet yllä olevaa koodia useita kertoja, saatat huomata, että se joskus "jämähtää", ja sinun täytyy painaa STOP-painiketta muistikirjassa keskeyttääksesi sen. Tämä tapahtuu, koska voi olla tilanteita, joissa kaksi tilaa "osoittavat" toisiaan optimaalisen Q-arvon suhteen, jolloin agentti päätyy liikkumaan näiden tilojen välillä loputtomasti.
## 🚀Haaste
-> **Tehtävä 1:** Muokkaa `walk`-funktiota rajoittamaan polun maksimipituus tiettyyn askelmäärään (esimerkiksi 100), ja katso, kuinka yllä oleva koodi palauttaa tämän arvon ajoittain.
+> **Tehtävä 1:** Muokkaa `walk`-funktiota rajoittamaan polun maksimipituutta tiettyyn askelten määrään (esim. 100), ja katso miten yllä oleva koodi palauttaa tämän arvon silloin tällöin.
-> **Tehtävä 2:** Muokkaa `walk`-funktiota niin, ettei se palaa paikkoihin, joissa se on jo aiemmin käynyt. Tämä estää `walk`-toiminnon silmukoinnin, mutta agentti voi silti päätyä "jumiin" paikkaan, josta se ei pääse pois.
+> **Tehtävä 2:** Muokkaa `walk`-funktiota niin, että se ei palaa paikkoihin, joissa se on jo aiemmin käynyt. Tämä estää `walk`-funktion silmukoitumisen, mutta agentti saattaa silti jäädä "ansaan" paikkaan, josta se ei pysty pakenemaan.
## Navigointi
-Parempi navigointipolitiikka olisi se, jota käytimme harjoittelun aikana, ja joka yhdistää hyödyntämisen ja tutkimisen. Tässä politiikassa valitsemme kunkin toiminnon tietyllä todennäköisyydellä, suhteessa Q-taulukon arvoihin. Tämä strategia voi silti johtaa siihen, että agentti palaa jo tutkittuun paikkaan, mutta kuten alla olevasta koodista näet, se johtaa hyvin lyhyeen keskimääräiseen polkuun haluttuun sijaintiin (muista, että `print_statistics` suorittaa simulaation 100 kertaa): (koodilohko 10)
+Parempi navigointipolitiikka olisi sellainen, jota käytimme harjoittelun aikana, jossa yhdistetään hyväksikäyttö ja tutkiminen. Tässä politiikassa valitsemme jokaisen toiminnon tietyllä todennäköisyydellä, joka on verrannollinen arvoihin Q-taulukossa. Tämä strategia voi silti johtaa siihen, että agentti palaa takaisin aiemmin tutkittuun sijaintiin, mutta kuten alla olevasta koodista näet, se johtaa hyvin lyhyeen keskimääräiseen polkuun haluttuun paikkaan (muista, että `print_statistics` suorittaa simulaation 100 kertaa): (koodilohko 10)
```python
def qpolicy(m):
@@ -220,28 +297,32 @@ def qpolicy(m):
print_statistics(qpolicy)
```
-Kun suoritat tämän koodin, saat paljon lyhyemmän keskimääräisen polun pituuden kuin aiemmin, noin 3-6 välillä.
+Tämän koodin suorittamisen jälkeen keskimääräisen polun pituuden tulisi olla huomattavasti pienempi kuin ennen, noin 3-6 välillä.
## Oppimisprosessin tutkiminen
-Kuten mainitsimme, oppimisprosessi on tasapaino tutkimisen ja ongelmatilan rakenteesta saadun tiedon hyödyntämisen välillä. Olemme nähneet, että oppimisen tulokset (kyky auttaa agenttia löytämään lyhyt polku tavoitteeseen) ovat parantuneet, mutta on myös mielenkiintoista tarkastella, miten keskimääräinen polun pituus käyttäytyy oppimisprosessin aikana:
+Kuten mainitsimme, oppimisprosessi on tasapaino uuden tiedon etsimisen ja opitun tiedon hyödyntämisen välillä ongelmatilan rakenteesta. Olemme nähneet, että oppimisen tulokset (kyky auttaa agenttia löytämään lyhyt polku tavoitteeseen) ovat parantuneet, mutta on myös mielenkiintoista tarkastella, miten keskimääräinen polun pituus käyttäytyy oppimisprosessin aikana:
+
+
-## Oppimisen yhteenveto:
+Oppimista voidaan tiivistää seuraavasti:
-- **Keskimääräinen polun pituus kasvaa**. Aluksi keskimääräinen polun pituus kasvaa. Tämä johtuu todennäköisesti siitä, että kun emme tiedä ympäristöstä mitään, olemme todennäköisesti jumissa huonoissa tiloissa, kuten vedessä tai suden luona. Kun opimme lisää ja alamme käyttää tätä tietoa, voimme tutkia ympäristöä pidempään, mutta emme silti tiedä kovin hyvin, missä omenat ovat.
+- **Keskimääräinen polun pituus kasvaa**. Tässä näemme, että aluksi keskimääräinen polun pituus kasvaa. Tämä johtuu todennäköisesti siitä, että kun emme tiedä ympäristöstä mitään, saatamme jäädä loukkuun huonoihin tiloihin, kuten veteen tai susiin. Kun opimme enemmän ja alamme käyttää tätä tietoa, voimme tutkia ympäristöä pidempään, mutta emme silti vielä tiedä, missä omenat ovat kovin hyvin.
-- **Polun pituus lyhenee oppimisen edetessä**. Kun opimme tarpeeksi, agentin on helpompi saavuttaa tavoite, ja polun pituus alkaa lyhentyä. Olemme kuitenkin edelleen avoimia tutkimiselle, joten poikkeamme usein parhaasta polusta ja tutkimme uusia vaihtoehtoja, mikä tekee polusta pidemmän kuin optimaalinen.
+- **Polun pituus lyhenee oppimisen myötä**. Kun opimme tarpeeksi, agentin on helpompi saavuttaa tavoite, ja polun pituus alkaa vähentyä. Olemme kuitenkin yhä avoimia tutkimiselle, joten poikkeamme usein parhaalta polulta ja tutkimme uusia vaihtoehtoja, jolloin polku on pidempi kuin optimaalinen.
-- **Pituus kasvaa äkillisesti**. Graafista näemme myös, että jossain vaiheessa pituus kasvaa äkillisesti. Tämä osoittaa prosessin satunnaisen luonteen, ja että voimme jossain vaiheessa "pilata" Q-taulukon kertoimet korvaamalla ne uusilla arvoilla. Tämä tulisi ihanteellisesti minimoida pienentämällä oppimisnopeutta (esimerkiksi harjoittelun loppuvaiheessa säädämme Q-taulukon arvoja vain pienellä arvolla).
+- **Pituus kasvaa äkillisesti**. Myös havaitsemme tässä käyrässä, että jossain vaiheessa pituus kasvoi äkillisesti. Tämä kertoo prosessin stokastisesta luonteesta ja siitä, että voimme jossain vaiheessa "pilata" Q-taulukon kertoimet ylikirjoittamalla niitä uusilla arvoilla. Tämä tulisi olla minimoitu pienentämällä oppimisnopeutta (esimerkiksi harjoittelun lopussa säädämme Q-taulukon arvoja vain pienellä määrällä).
-Kaiken kaikkiaan on tärkeää muistaa, että oppimisprosessin onnistuminen ja laatu riippuvat merkittävästi parametreista, kuten oppimisnopeudesta, oppimisnopeuden vähenemisestä ja diskonttauskerroimesta. Näitä kutsutaan usein **hyperparametreiksi**, jotta ne erotetaan **parametreista**, joita optimoimme harjoittelun aikana (esimerkiksi Q-taulukon kertoimet). Parhaiden hyperparametriarvojen löytämistä kutsutaan **hyperparametrien optimoinniksi**, ja se ansaitsee oman aiheensa.
+Kokonaisuudessaan on tärkeää muistaa, että oppimisprosessin onnistuminen ja laatu riippuvat merkittävästi parametreista, kuten oppimisnopeudesta, oppimisnopeuden hiipumisesta ja palkkioden diskonttaustekijästä. Näitä kutsutaan usein **hyperparametreiksi**, jotta ne eroavat **parametreista**, joita optimoimme harjoittelun aikana (esimerkiksi Q-taulukon kertoimet). Parhaiden hyperparametriarvojen etsimistä kutsutaan **hyperparametrien optimoinniksi**, ja se ansaitsee oman aiheensa.
-## [Luennon jälkeinen kysely](https://ff-quizzes.netlify.app/en/ml/)
+## [Luentojälkeinen visailu](https://ff-quizzes.netlify.app/en/ml/)
## Tehtävä
-[Realistisempi maailma](assignment.md)
+[Todellisempi maailma](assignment.md)
---
-**Vastuuvapauslauseke**:
-Tämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua [Co-op Translator](https://github.com/Azure/co-op-translator). Vaikka pyrimme tarkkuuteen, huomioithan, että automaattiset käännökset voivat sisältää virheitä tai epätarkkuuksia. Alkuperäistä asiakirjaa sen alkuperäisellä kielellä tulisi pitää ensisijaisena lähteenä. Kriittisen tiedon osalta suositellaan ammattimaista ihmiskäännöstä. Emme ole vastuussa väärinkäsityksistä tai virhetulkinnoista, jotka johtuvat tämän käännöksen käytöstä.
\ No newline at end of file
+
+**Vastuuvapauslauseke**:
+Tämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua [Co-op Translator](https://github.com/Azure/co-op-translator). Vaikka pyrimme tarkkuuteen, otathan huomioon, että automaattiset käännökset saattavat sisältää virheitä tai epätarkkuuksia. Alkuperäinen asiakirja sen alkuperäiskielellä on virallinen lähde. Tärkeissä asioissa suositellaan ammattimaista ihmiskäännöstä. Emme ole vastuussa tämän käännöksen käytöstä aiheutuvista väärinymmärryksistä tai tulkinnoista.
+
\ No newline at end of file
diff --git a/translations/fi/8-Reinforcement/2-Gym/README.md b/translations/fi/8-Reinforcement/2-Gym/README.md
index eb77286c5..652e3241c 100644
--- a/translations/fi/8-Reinforcement/2-Gym/README.md
+++ b/translations/fi/8-Reinforcement/2-Gym/README.md
@@ -1,14 +1,34 @@
+# CartPole-luistelu
+
+Ongelma, jota olemme ratkaisseet edellisessä oppitunnissa, saattaa vaikuttaa lelulmaalta, ei oikeastaan sovellettavalta todellisissa tilanteissa. Näin ei kuitenkaan ole, koska monet todellisen maailman ongelmat jakavat tämän tilanteen — mukaan lukien shakin ja Gon pelaaminen. Ne ovat samankaltaisia, koska meillä on lauta tietyin säännöin ja **diskreetti tila**.
+
+## [Ennakkotehtävä](https://ff-quizzes.netlify.app/en/ml/)
+
+## Johdanto
+
+Tässä oppitunnissa sovellamme samoja Q-Learningin periaatteita ongelmaan, jossa on **jatkuva tila**, eli tila, joka esitetään yhdellä tai useammalla reaaliluvulla. Käsittelemme seuraavaa ongelmaa:
+
+> **Ongelma**: Jos Peter haluaa paeta susia, hänen täytyy pystyä liikkumaan nopeammin. Näemme, miten Peter voi oppia luistelemaan, erityisesti pitämään tasapainoa, käyttämällä Q-Learningia.
+
+
+
+> Peter ja hänen ystävänsä keksivät keinoja paeta susia! Kuva: [Jen Looper](https://twitter.com/jenlooper)
+
+Käytämme yksinkertaistettua versiota tasapainoilusta, joka tunnetaan **CartPole**-ongelmana. CartPole-maailmassa on vaakasuora liukukisko, joka voi liikkua vasemmalle tai oikealle, ja tavoitteena on pitää pystysuora tanko tasapainossa liukukiskon päällä.
+
+
+
## Esivaatimukset
-Tässä oppitunnissa käytämme kirjastoa nimeltä **OpenAI Gym** simuloimaan erilaisia **ympäristöjä**. Voit ajaa oppitunnin koodin paikallisesti (esim. Visual Studio Codessa), jolloin simulaatio avautuu uuteen ikkunaan. Jos suoritat koodin verkossa, sinun täytyy ehkä tehdä joitakin muutoksia koodiin, kuten kuvataan [tässä](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7).
+Tässä oppitunnissa käytämme **OpenAI Gym** -kirjastoa simuloimaan erilaisia **ympäristöjä**. Voit ajaa tämän oppitunnin koodin paikallisesti (esim. Visual Studio Codessa), jolloin simulointi avautuu uuteen ikkunaan. Kun ajat koodia verkossa, saatat joutua tekemään joitain muutoksia koodiin, kuten [tässä](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7) kuvataan.
## OpenAI Gym
-Edellisessä oppitunnissa pelin säännöt ja tila määriteltiin itse luomassamme `Board`-luokassa. Tässä käytämme erityistä **simulaatioympäristöä**, joka simuloi tasapainottavan tangon fysiikkaa. Yksi suosituimmista simulaatioympäristöistä vahvistusoppimisalgoritmien kouluttamiseen on nimeltään [Gym](https://gym.openai.com/), jota ylläpitää [OpenAI](https://openai.com/). Tämän Gymin avulla voimme luoda erilaisia **ympäristöjä**, kuten cartpole-simulaation tai Atari-pelejä.
+Edellisessä oppitunnissa pelin säännöt ja tila määriteltiin `Board`-luokalla, jonka loimme itse. Tässä käytämme erikoista **simulaatioympäristöä**, joka simuloi tasapainotasangon fysiikkaa. Yksi suosituimmista simulaatioympäristöistä vahvistusoppimisen algoritmien harjoitteluun on nimeltään [Gym](https://gym.openai.com/), jota ylläpitää [OpenAI](https://openai.com/). Käyttämällä tätä gymiä voimme luoda erilaisia **ympäristöjä** cartpole-simulaatiosta Atari-peleihin.
-> **Huomio**: Voit nähdä muita OpenAI Gymin tarjoamia ympäristöjä [täältä](https://gym.openai.com/envs/#classic_control).
+> **Huomaa**: Voit nähdä muita OpenAI Gymin saatavilla olevia ympäristöjä [tästä](https://gym.openai.com/envs/#classic_control).
-Aloitetaan asentamalla Gym ja tuomalla tarvittavat kirjastot (koodilohko 1):
+Ensin asennetaan gym ja tuodaan tarvittavat kirjastot (koodilohko 1):
```python
import sys
@@ -20,15 +40,15 @@ import numpy as np
import random
```
-## Harjoitus - alustetaan cartpole-ympäristö
+## Harjoitus – alustetaan cartpole-ympäristö
-Cartpole-tasapainotusongelman kanssa työskentelyä varten meidän täytyy alustaa vastaava ympäristö. Jokainen ympäristö liittyy:
+Työskennellessäsi cartpole-tasapainon ongelman kanssa, sinun täytyy alustaa vastaava ympäristö. Jokaisella ympäristöllä on:
-- **Havaintotilaan**, joka määrittää rakenteen tiedoille, joita saamme ympäristöstä. Cartpole-ongelmassa saamme tangon sijainnin, nopeuden ja joitakin muita arvoja.
+- **Havainnointitila**, joka määrittelee tiedon rakenteen, jonka saamme ympäristöstä. Cartpole-ongelmassa saamme tangon sijainnin, nopeuden ja muita arvoja.
-- **Toimintatilaan**, joka määrittää mahdolliset toiminnot. Meidän tapauksessamme toimintatila on diskreetti ja sisältää kaksi toimintoa - **vasemmalle** ja **oikealle**. (koodilohko 2)
+- **Toimintatila**, joka määrittelee mahdolliset toiminnot. Tapauksessamme toimintatila on diskreetti ja sisältää kaksi toimintoa – **vasen** ja **oikea**. (koodilohko 2)
-1. Alustamiseen kirjoita seuraava koodi:
+1. Alusta kirjoittamalla seuraava koodi:
```python
env = gym.make("CartPole-v1")
@@ -37,11 +57,11 @@ Cartpole-tasapainotusongelman kanssa työskentelyä varten meidän täytyy alust
print(env.action_space.sample())
```
-Näemme, miten ympäristö toimii, suorittamalla lyhyen simulaation 100 askeleen ajan. Jokaisella askeleella annamme yhden toiminnon suoritettavaksi - tässä simulaatiossa valitsemme toiminnon satunnaisesti `action_space`-tilasta.
+Tarkastellaksemme, miten ympäristö toimii, ajetaan lyhyt 100 askeleen simulaatio. Jokaisessa askeleessa annamme yhden toteutettavan toiminnon – tässä simulaatiossa valitsemme toiminnon sattumanvaraisesti `action_space`-joukosta.
-1. Suorita alla oleva koodi ja katso, mihin se johtaa.
+1. Aja alla oleva koodi ja katso, mihin se johtaa.
- ✅ Muista, että on suositeltavaa ajaa tämä koodi paikallisessa Python-asennuksessa! (koodilohko 3)
+ ✅ Muista, että kaiken järjen mukaan tämä koodi kannattaa ajaa paikallisessa Python-asennuksessa! (koodilohko 3)
```python
env.reset()
@@ -52,11 +72,11 @@ Näemme, miten ympäristö toimii, suorittamalla lyhyen simulaation 100 askeleen
env.close()
```
- Sinun pitäisi nähdä jotain tämän kuvan kaltaista:
+ Näet jotain tällaista kuin tämä kuva:
- 
+ 
-1. Simulaation aikana meidän täytyy saada havaintoja päättääksemme, miten toimia. Itse asiassa `step`-funktio palauttaa nykyiset havainnot, palkintofunktion ja `done`-lipun, joka osoittaa, onko järkevää jatkaa simulaatiota vai ei: (koodilohko 4)
+1. Simulaation aikana tarvitsemme havaintoja päättääksemme, miten toimia. Itse asiassa step-funktio palauttaa nykyiset havainnot, palkkiofunktion ja done-lipun, joka kertoo, onko järkevää jatkaa simulaatiota vai ei: (koodilohko 4)
```python
env.reset()
@@ -69,7 +89,7 @@ Näemme, miten ympäristö toimii, suorittamalla lyhyen simulaation 100 askeleen
env.close()
```
- Näet jotain tällaista notebookin tulosteessa:
+ Näet jotakin tällaista muistikirjan tulosteissa:
```text
[ 0.03403272 -0.24301182 0.02669811 0.2895829 ] -> 1.0
@@ -82,11 +102,11 @@ Näemme, miten ympäristö toimii, suorittamalla lyhyen simulaation 100 askeleen
[ 0.17617249 0.35602306 -0.21873684 -0.90998894] -> 1.0
```
- Simulaation jokaisella askeleella palautettu havaintovektori sisältää seuraavat arvot:
+ Simulaation jokaisessa askeleessa palautettava havaintovektori sisältää seuraavat arvot:
- Kärryn sijainti
- Kärryn nopeus
- Tangon kulma
- - Tangon pyörimisnopeus
+ - Tangon kiertonopeus
1. Hanki näiden lukujen minimi- ja maksimiarvot: (koodilohko 5)
@@ -95,30 +115,30 @@ Näemme, miten ympäristö toimii, suorittamalla lyhyen simulaation 100 askeleen
print(env.observation_space.high)
```
- Saatat myös huomata, että palkintoarvo jokaisella simulaatioaskeleella on aina 1. Tämä johtuu siitä, että tavoitteemme on selviytyä mahdollisimman pitkään, eli pitää tanko kohtuullisen pystysuorassa mahdollisimman pitkään.
+ Saatat myös huomata, että palkkio jokaisella simulaation askeleella on aina 1. Tämä johtuu siitä, että tavoitteemme on selviytyä mahdollisimman pitkään, eli pitää tanko kohtuullisen pystyasennossa mahdollisimman pitkään.
- ✅ Itse asiassa CartPole-simulaatio katsotaan ratkaistuksi, jos onnistumme saamaan keskimääräisen palkinnon 195 yli 100 peräkkäisen kokeilun aikana.
+ ✅ CartPole-simulaatiota pidetään ratkaistuna, jos onnistumme saamaan keskimääräisen palkkion 195 sadan peräkkäisen kokeilun yli.
-## Tilojen diskretisointi
+## Tilojen diskretointi
-Q-Learningissa meidän täytyy rakentaa Q-taulukko, joka määrittää, mitä tehdä kussakin tilassa. Jotta voimme tehdä tämän, tilan täytyy olla **diskreetti**, tarkemmin sanottuna sen täytyy sisältää rajallinen määrä diskreettejä arvoja. Siksi meidän täytyy jollain tavalla **diskretisoida** havaintomme, kartoittaen ne rajalliseen joukkoon tiloja.
+Q-Learningissa meidän täytyy rakentaa Q-Taulukko, joka määrittelee mitä tehdä kussakin tilassa. Jotta voimme tehdä tämän, tilan täytyy olla **diskreetti**, tarkemmin sanottuna sen täytyy sisältää äärellinen määrä diskreettejä arvoja. Näin ollen meidän täytyy jotenkin **diskretoida** havainnot, kartoittamalla ne äärelliseen tilojen joukkoon.
-Tähän on muutamia tapoja:
+Tämä voidaan tehdä muutamalla tavalla:
-- **Jakaminen osiin**. Jos tiedämme tietyn arvon välin, voimme jakaa tämän välin useisiin **osiin** ja korvata arvon sen osan numerolla, johon se kuuluu. Tämä voidaan tehdä numpy-kirjaston [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html)-menetelmällä. Tässä tapauksessa tiedämme tarkasti tilan koon, koska se riippuu valitsemastamme osien määrästä digitalisointia varten.
+- **Jakamalla lokeroihin**. Jos tiedämme tietyn arvon vaihteluvälin, voimme jakaa tämän välin useaan **lokeroon** ja korvata arvon sillä lokeron numerolla, johon arvo kuuluu. Tämä voidaan tehdä numpy-kirjaston [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html)-metodilla. Näin tiedämme täsmällisesti tilan koon, koska se riippuu valitsemistamme lokeroiden lukumäärästä.
+
+✅ Voimme käyttää lineaarista interpolaatiota tuomaan arvot tietylle rajatulle välille (esim. -20:sta 20:een), ja sitten muuntaa luvut kokonaisluvuiksi pyöristämällä. Tämä antaa meille hieman vähemmän hallintaa tilan koosta varsinkin silloin, kun tuloarvojen tarkkoja vaihteluvälejä ei tiedetä. Esimerkiksi meidän tapauksessamme 2 neljästä arvosta ei omaa ylä- tai alarajoja, mikä voi johtaa äärettömään tilojen määrään.
-✅ Voimme käyttää lineaarista interpolointia tuodaksemme arvot rajalliseen väliin (esim. -20:stä 20:een) ja sitten muuntaa numerot kokonaisluvuiksi pyöristämällä. Tämä antaa meille hieman vähemmän kontrollia tilan koosta, erityisesti jos emme tiedä tarkkoja syötearvojen rajoja. Esimerkiksi meidän tapauksessamme 2 neljästä arvosta ei ole ylä-/alarajoja, mikä voi johtaa äärettömään määrään tiloja.
+Esimerkissämme käytämme toista lähestymistapaa. Kuten myöhemmin huomaat, vaikka ylä- ja alarajat eivät ole määriteltyjä, arvot esiintyvät harvoin tiettyjen äärellisten välien ulkopuolella, joten äärimmäisiin arvoihin liittyvät tilat ovat hyvin harvinaisia.
-Esimerkissämme käytämme toista lähestymistapaa. Kuten saatat myöhemmin huomata, huolimatta määrittelemättömistä ylä-/alarajoista, nämä arvot harvoin saavuttavat tiettyjen rajallisten väliarvojen ulkopuolisia arvoja, joten tilat, joilla on äärimmäisiä arvoja, ovat hyvin harvinaisia.
-
-1. Tässä on funktio, joka ottaa mallimme havainnon ja tuottaa 4 kokonaislukuarvon tuplen: (koodilohko 6)
+1. Tässä on funktio, joka ottaa mallimme havainnon ja tuottaa 4 kokonaisluvun tupleen: (koodilohko 6)
```python
def discretize(x):
return tuple((x/np.array([0.25, 0.25, 0.01, 0.1])).astype(np.int))
```
-1. Tutkitaan myös toinen diskretisointimenetelmä käyttäen osia: (koodilohko 7)
+1. Tutustutaan myös toiseen diskretointimenetelmään, joka perustuu lokeroihin: (koodilohko 7)
```python
def create_bins(i,num):
@@ -126,39 +146,39 @@ Esimerkissämme käytämme toista lähestymistapaa. Kuten saatat myöhemmin huom
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
+ ints = [(-5,5),(-2,2),(-0.5,0.5),(-2,2)] # arvojen välit jokaiselle parametrille
+ nbins = [20,20,10,10] # kunkin parametrin laatikoiden määrä
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. Suoritetaan lyhyt simulaatio ja tarkkaillaan näitä diskreettejä ympäristöarvoja. Voit kokeilla sekä `discretize`- että `discretize_bins`-funktioita ja nähdä, onko niissä eroa.
+1. Ajetaan nyt lyhyt simulaatio ja tarkastellaan näitä diskreettejä ympäristöarvoja. Voit kokeilla molempia `discretize` ja `discretize_bins` ja katsoa, onko niissä eroa.
- ✅ `discretize_bins` palauttaa osan numeron, joka alkaa nollasta. Näin ollen syötearvojen ollessa lähellä 0 se palauttaa numeron välin keskeltä (10). `discretize`-funktiossa emme välittäneet lähtöarvojen välistä, jolloin arvot voivat olla negatiivisia, ja 0 vastaa 0:aa. (koodilohko 8)
+ ✅ discretize_bins palauttaa lokeron numeron, joka on nollapohjainen. Näin syötteen arvon ollessa lähellä 0 se palauttaa välin keskivaiheen numeron (10). Discretize ei huomioi tulosarvojen vaihteluväliä, sallien negatiiviset arvot, joten tilan arvot eivät ole siirtyneet ja 0 vastaa 0:aa. (koodilohko 8)
```python
env.reset()
done = False
while not done:
- #env.render()
+ #env.renderöi()
obs, rew, done, info = env.step(env.action_space.sample())
- #print(discretize_bins(obs))
+ #tulosta(kotoutetut_astiat(obs))
print(discretize(obs))
env.close()
```
- ✅ Poista kommentti riviltä, joka alkaa `env.render`, jos haluat nähdä, miten ympäristö suoritetaan. Muutoin voit suorittaa sen taustalla, mikä on nopeampaa. Käytämme tätä "näkymätöntä" suoritusta Q-Learning-prosessimme aikana.
+ ✅ Poista rivin alusta merkintä `env.render` jos haluat nähdä, miten ympäristö toimii. Muussa tapauksessa voit ajaa sen taustalla, mikä on nopeampaa. Tämä näkymätön suoritus käytetään Q-Learning-prosessimme aikana.
-## Q-taulukon rakenne
+## Q-Taulukon rakenne
-Edellisessä oppitunnissa tila oli yksinkertainen pariluku välillä 0–8, ja siksi oli kätevää esittää Q-taulukko numpy-tensorina, jonka muoto oli 8x8x2. Jos käytämme osien diskretisointia, tilavektorimme koko on myös tiedossa, joten voimme käyttää samaa lähestymistapaa ja esittää tilan taulukolla, jonka muoto on 20x20x10x10x2 (tässä 2 on toimintatilan ulottuvuus, ja ensimmäiset ulottuvuudet vastaavat osien määrää, joita olemme valinneet kullekin havaintotilan parametrille).
+Edellisessä oppitunnissa tila oli yksinkertainen lukupari välillä 0–8, joten Q-Taulukko esitettiin numpy-tensorina, jonka muoto oli 8x8x2. Jos käytämme lokeroihin diskretisointia, tilavektorimme koko tunnetaan myös, joten voimme käyttää samaa lähestymistapaa ja esittää tilan taulukkona, jonka muoto on 20x20x10x10x2 (tässä 2 on toimintojen dimensio, ja ensimmäiset dimensioiden arvot vastaavat lokeromäärää, jonka valitsimme kullekin havainnointitilan parametrille).
-Joskus havaintotilan tarkat ulottuvuudet eivät kuitenkaan ole tiedossa. `discretize`-funktion tapauksessa emme voi koskaan olla varmoja, että tilamme pysyy tiettyjen rajojen sisällä, koska jotkut alkuperäisistä arvoista eivät ole rajattuja. Siksi käytämme hieman erilaista lähestymistapaa ja esittelemme Q-taulukon sanakirjana.
+Joskus emme kuitenkaan tiedä täsmällisiä havainnointitilan dimensioita. `discretize`-funktion tapauksessa emme voi koskaan olla varmoja, että tilamme pysyy tietyissä rajoissa, koska jotkut alkuperäiset arvot eivät ole rajoitettuja. Näin ollen käytämme hieman erilaista lähestymistapaa ja esitämmme Q-Taulukon sanakirjana.
-1. Käytä paria *(tila, toiminto)* sanakirjan avaimena, ja arvo vastaisi Q-taulukon arvoa. (koodilohko 9)
+1. Käytä paria *(tila, toiminto)* sanakirjan avaimena ja arvona olisi vastaava Q-Taulukon arvo. (koodilohko 9)
```python
Q = {}
@@ -168,38 +188,38 @@ Joskus havaintotilan tarkat ulottuvuudet eivät kuitenkaan ole tiedossa. `discre
return [Q.get((state,a),0) for a in actions]
```
- Tässä määrittelemme myös funktion `qvalues()`, joka palauttaa listan Q-taulukon arvoista tietylle tilalle, joka vastaa kaikkia mahdollisia toimintoja. Jos merkintää ei ole Q-taulukossa, palautamme oletusarvona 0.
+ Määrittelemme myös funktion `qvalues()`, joka palauttaa listan Q-Taulukon arvoista annetulle tilalle, joka vastaa kaikkia mahdollisia toimintoja. Jos merkintää ei ole taulukossa, palautamme oletusarvona 0.
## Aloitetaan Q-Learning
-Nyt olemme valmiita opettamaan Peteriä tasapainottamaan!
+Nyt olemme valmiita opettamaan Peterille tasapainon hallintaa!
-1. Asetetaan ensin joitakin hyperparametreja: (koodilohko 10)
+1. Ensin asetetaan muutama hyperparametri: (koodilohko 10)
```python
- # hyperparameters
+ # hyperparametrit
alpha = 0.3
gamma = 0.9
epsilon = 0.90
```
- Tässä `alpha` on **oppimisnopeus**, joka määrittää, missä määrin meidän pitäisi säätää Q-taulukon nykyisiä arvoja jokaisella askeleella. Edellisessä oppitunnissa aloitimme arvolla 1 ja sitten vähensimme `alpha`-arvoa koulutuksen aikana. Tässä esimerkissä pidämme sen vakiona yksinkertaisuuden vuoksi, ja voit kokeilla `alpha`-arvojen säätämistä myöhemmin.
-
- `gamma` on **diskonttaustekijä**, joka osoittaa, missä määrin meidän pitäisi priorisoida tulevaa palkintoa nykyisen palkinnon yli.
+ Tässä `alpha` on **oppimisnopeus**, joka määrittää, missä määrin päivitämme Q-Taulukon arvoja jokaisessa askeleessa. Edellisessä oppitunnissa aloitimme arvolla 1 ja pienensimme sitten `alpha` arvoa koulutuksen aikana. Tässä esimerkissä pidämme sitä yksinkertaisuuden vuoksi vakiona, mutta voit kokeilla myöhemmin `alpha`-arvojen säätämistä.
- `epsilon` on **tutkimus/hyödyntämistekijä**, joka määrittää, pitäisikö meidän suosia tutkimista vai hyödyntämistä. Algoritmissamme valitsemme `epsilon`-prosentissa tapauksista seuraavan toiminnon Q-taulukon arvojen mukaan, ja jäljellä olevissa tapauksissa suoritamme satunnaisen toiminnon. Tämä antaa meille mahdollisuuden tutkia hakutilan alueita, joita emme ole koskaan nähneet.
+ `gamma` on **diskonttokerroin**, joka kertoo, kuinka paljon painotamme tulevia palkkioita nykyisiin verrattuna.
- ✅ Tasapainottamisen kannalta satunnaisen toiminnon valitseminen (tutkiminen) toimisi kuin satunnainen isku väärään suuntaan, ja tangon täytyisi oppia, miten palauttaa tasapaino näistä "virheistä".
+ `epsilon` on **tutkimis- ja hyväksikäyttökertoimen** suhdeluku, joka määrittää pidämmekö parempana tutkia vai hyödyntää. Algoritmissamme `epsilon` prosentissa tapauksista valitsemme toiminnon Q-Taulukon arvojen perusteella ja muissa tapauksissa valitsemme toiminnon satunnaisesti. Tämä antaa meille mahdollisuuden tutkia hakutilan alueita, joita emme ole aiemmin nähneet.
-### Paranna algoritmia
+ ✅ Tasapainon kannalta satunnainen toiminto (tutkiminen) olisi kuin satunnainen isku väärään suuntaan, ja tangon täytyy oppia palauttamaan tasapaino näistä "virheistä".
-Voimme myös tehdä kaksi parannusta algoritmiimme edellisestä oppitunnista:
+### Parannetaan algoritmia
-- **Laske keskimääräinen kumulatiivinen palkinto** useiden simulaatioiden aikana. Tulostamme edistymisen joka 5000 iteraation jälkeen ja keskiarvoistamme kumulatiivisen palkinnon tuolta ajalta. Tämä tarkoittaa, että jos saamme yli 195 pistettä, voimme pitää ongelman ratkaistuna, jopa vaadittua korkeammalla laadulla.
+Voimme tehdä kaksi parannusta edelliseen algoritmiimme:
-- **Laske maksimaalinen keskimääräinen kumulatiivinen tulos**, `Qmax`, ja tallennamme Q-taulukon, joka vastaa kyseistä tulosta. Kun suoritat koulutuksen, huomaat, että joskus keskimääräinen kumulatiivinen tulos alkaa laskea, ja haluamme säilyttää Q-taulukon arvot, jotka vastaavat parasta mallia, joka havaittiin koulutuksen aikana.
+- **Laske keskimääräinen kumulatiivinen palkkio** useiden simulaatioiden yli. Tulostamme edistymisen joka 5000 iteraatiossa ja keskiarvoistamme kumulatiivisen palkkion tämän ajanjakson yli. Tämä tarkoittaa, että jos saamme yli 195 pistettä, voimme pitää ongelmaa ratkaistuna jopa vaadittua paremmin.
+
+- **Laske suurin keskimääräinen kumulatiivinen tulos**, `Qmax`, ja tallennamme Q-Taulukon, joka vastaa tätä tulosta. Kun ajat koulutusta, huomaat, että keskimääräinen kumulatiivinen tulos joskus laskee, ja haluamme säilyttää ne Q-Taulukon arvot, jotka vastaavat parasta koulutuksen aikana nähtyä mallia.
-1. Kerää kaikki kumulatiiviset palkinnot jokaisessa simulaatiossa `rewards`-vektoriin myöhempää visualisointia varten. (koodilohko 11)
+1. Kerää kaikki kumulatiiviset palkkiot kullekin simulaatiolle vektoriin `rewards` myöhempää kuvaajaa varten. (koodilohko 11)
```python
def probs(v,eps=1e-4):
@@ -214,15 +234,15 @@ Voimme myös tehdä kaksi parannusta algoritmiimme edellisestä oppitunnista:
obs = env.reset()
done = False
cum_reward=0
- # == do the simulation ==
+ # == tee simulointi ==
while not done:
s = discretize(obs)
if random.random() Qmax:
@@ -242,23 +262,23 @@ Voimme myös tehdä kaksi parannusta algoritmiimme edellisestä oppitunnista:
Mitä voit huomata näistä tuloksista:
-- **Lähellä tavoitettamme**. Olemme hyvin lähellä tavoitteen saavuttamista, eli 195 kumulatiivista palkintoa yli 100+ peräkkäisen simulaation aikana, tai olemme ehkä jo saavuttaneet sen! Vaikka saisimme pienempiä lukuja, emme silti tiedä, koska keskiarvoistamme 5000 suorituksen aikana, ja virallinen kriteeri vaatii vain 100 suoritusta.
+- **Lähellä tavoitetta**. Olemme hyvin lähellä tavoitetta saada 195 kumulatiivista palkkiopistettä sadan peräkkäisen simulaation aikana, tai olemme ehkä jopa saavuttaneet sen! Vaikka saisimme pienempiä arvoja, emme tiedä tarkasti, koska laskemme keskiarvon 5000 ajokerran yli ja virallinen raja on 100 ajokertaa.
+
+- **Palkkio alkaa laskea**. Joskus palkkio alkaa laskea, mikä tarkoittaa, että voimme "rikkoa" jo opitut arvot Q-Taulukossa arvoilla, jotka pahentavat tilannetta.
-- **Palkinto alkaa laskea**. Joskus palkinto alkaa laskea, mikä tarkoittaa, että voimme "tuhota" jo opitut arvot Q-taulukossa arvoilla, jotka pahentavat tilannetta.
+Tämä havainto näkyy selkeämmin, jos piirrämme koulutuksen edistymisen kuvaajan.
-Tämä havainto näkyy selkeämmin, jos piirrämme koulutuksen edistymisen.
+## Koulutuksen edistymisen kuvaaja
-## Koulutuksen edistymisen visualisointi
-
-Koulutuksen aikana olemme keränneet kumulatiivisen palkintoarvon jokaisessa iteraatiossa `rewards`-vektoriin. Tässä on, miltä se näyttää, kun piirrämme sen iteraation numeroa vastaan:
+Koulutuksen aikana olemme keränneet kumulatiivisen palkkion arvon jokaisesta iteraatiosta vektoriin `rewards`. Näin se näyttää, kun kuvaamme sen iteraation numeron funktiona:
```python
plt.plot(rewards)
```
-
+
-Tästä graafista ei ole mahdollista päätellä mitään, koska stokastisen koulutusprosessin luonteen vuoksi koulutussessioiden pituus vaihtelee suuresti. Jotta graafi olisi ymmärrettävämpi, voimme laskea **juoksevan keskiarvon** sarjasta kokeita, esimerkiksi 100. Tämä voidaan tehdä kätevästi `np.convolve`-menetelmällä: (koodilohko 12)
+Tästä kuvasta ei voi päätellä juuri mitään, koska stokastisen koulutusprosessin luonteen vuoksi koulutussessioiden pituudet vaihtelevat paljon. Jotta kuvasta olisi enemmän tolkkua, voimme laskea **liukuvan keskiarvon** joukosta kokeita, sanotaan vaikka 100. Tämä voidaan kätevästi tehdä käyttämällä `np.convolve`:a (koodilohko 12)
```python
def running_average(x,window):
@@ -267,21 +287,24 @@ def running_average(x,window):
plt.plot(running_average(rewards,100))
```
-
+
+
+## Hyperparametrien muuttaminen
+
+Jotta oppiminen olisi vakaampaa, on järkevää säätää joitain hyperparametreja koulutuksen aikana. Erityisesti:
+
+- **Oppimisnopeus**, `alpha`, voi alkaa lähellä arvoa 1 ja pienentyä asteittain. Ajan myötä saamme hyviä todennäköisyysarvoja Q-Taulukkoon, joten niitä tulisi säätää varovasti eikä täysin korvata uusilla arvoilla.
-## Hyperparametrien säätäminen
+- **Lisää epsilonia**. Saatamme haluta nostaa `epsilon`-arvoa hitaasti, jotta tutkimista vähennetään ja hyväksikäyttöä lisätään. On todennäköisesti järkevää aloittaa matalalla `epsilon`-arvolla ja nousta lähes ykköseen.
-Jotta oppiminen olisi vakaampaa, kannattaa säätää joitakin hyperparametreja koulutuksen aikana. Erityisesti:
+> **Tehtävä 1**: Kokeile hyperparametrien arvoja ja katso, voitko saavuttaa suuremman kumulatiivisen palkkion. Saatko yli 195?
-- **Oppimisnopeuden**, `alpha`, osalta voimme aloittaa arvoilla lähellä 1 ja sitten vähentää parametria. Ajan myötä saamme hyviä todennäköisyysarvoja Q-taulukkoon, ja siksi meidän pitäisi säätää niitä hieman, eikä korvata kokonaan uusilla arvoilla.
-- **Lisää epsilonia**. Voimme haluta lisätä `epsilon`-arvoa hitaasti, jotta tutkimme vähemmän ja hyödynnämme enemmän. Todennäköisesti kannattaa aloittaa pienemmällä `epsilon`-arvolla ja nostaa se lähes 1:een.
-> **Tehtävä 1**: Kokeile hyperparametrien arvoja ja katso, voitko saavuttaa suuremman kumulatiivisen palkkion. Pääsetkö yli 195?
-> **Tehtävä 2**: Jotta ongelma ratkaistaan virallisesti, sinun täytyy saavuttaa 195 keskimääräinen palkinto 100 peräkkäisen ajon aikana. Mittaa tämä koulutuksen aikana ja varmista, että olet ratkaissut ongelman virallisesti!
+> **Tehtävä 2**: Ratkaistaksesi ongelman muodollisesti, sinun tulee saada keskimäärin 195 pistettä 100 peräkkäisen suorituksen ajan. Mittaa tätä harjoittelun aikana ja varmista, että olet muodollisesti ratkaissut ongelman!
-## Tulosten tarkastelu käytännössä
+## Tuloksen näkeminen toiminnassa
-Olisi mielenkiintoista nähdä, miten koulutettu malli käyttäytyy. Suoritetaan simulaatio ja käytetään samaa toimintojen valintastrategiaa kuin koulutuksen aikana, näytteistämällä Q-taulukon todennäköisyysjakauman mukaan: (koodilohko 13)
+Olisi mielenkiintoista nähdä, miten koulutettu malli käyttäytyy. Suoritetaan simulaatio ja noudatetaan samaa toimintavalintastrategiaa kuin harjoittelun aikana, otetaan näytteitä Q-taulukon todennäköisyysjakauman mukaan: (koodilohko 13)
```python
obs = env.reset()
@@ -295,7 +318,7 @@ while not done:
env.close()
```
-Näet jotain tällaista:
+Näet todennäköisesti jotakin tällaista:

@@ -303,22 +326,24 @@ Näet jotain tällaista:
## 🚀Haaste
-> **Tehtävä 3**: Tässä käytimme Q-taulukon lopullista versiota, joka ei välttämättä ole paras. Muista, että olemme tallentaneet parhaiten toimivan Q-taulukon `Qbest`-muuttujaan! Kokeile samaa esimerkkiä parhaiten toimivalla Q-taulukolla kopioimalla `Qbest` `Q`:n tilalle ja katso, huomaatko eroa.
+> **Tehtävä 3**: Tässä käytimme Q-taulukon viimeisintä kopiota, joka ei välttämättä ole paras mahdollinen. Muistathan, että olemme tallentaneet parhaiten suoriutuneen Q-taulukon `Qbest`-muuttujaan! Kokeile samaa esimerkkiä käyttämällä parhaiten suoriutunutta Q-taulukkoa kopioimalla `Qbest` muuttujasta `Q`:hun ja katso, huomaatko eroa.
-> **Tehtävä 4**: Tässä emme valinneet parasta toimintoa jokaisella askeleella, vaan näytteistimme vastaavan todennäköisyysjakauman mukaan. Olisiko järkevämpää aina valita paras toiminto, jolla on korkein Q-taulukon arvo? Tämä voidaan tehdä käyttämällä `np.argmax`-funktiota löytääkseen toimintojen numeron, joka vastaa korkeinta Q-taulukon arvoa. Toteuta tämä strategia ja katso, parantaako se tasapainottamista.
+> **Tehtävä 4**: Tässä emme valinneet parasta toimintoa jokaisella askeleella, vaan otimme näytteitä vastaavan todennäköisyysjakauman mukaan. Olisiko järkevämpää aina valita paras toiminto, eli se, jolla on korkein Q-taulukon arvo? Tämä voidaan tehdä käyttämällä `np.argmax`-funktiota, jolla saa selville toimintonumeron, johon korkein Q-taulukon arvo liittyy. Tuo strategia käyttöön ja katso, parantaako se tasapainottelua.
-## [Luentojälkeinen kysely](https://ff-quizzes.netlify.app/en/ml/)
+## [Luennon jälkeinen tietovisa](https://ff-quizzes.netlify.app/en/ml/)
## Tehtävä
[Harjoittele Mountain Car](assignment.md)
## Yhteenveto
-Olemme nyt oppineet, kuinka kouluttaa agentteja saavuttamaan hyviä tuloksia pelkästään tarjoamalla heille palkintofunktion, joka määrittelee pelin halutun tilan, ja antamalla heille mahdollisuuden älykkäästi tutkia hakutilaa. Olemme onnistuneesti soveltaneet Q-Learning-algoritmia sekä diskreeteissä että jatkuvissa ympäristöissä, mutta diskreeteillä toiminnoilla.
+Olemme nyt oppineet, miten agentteja koulutetaan saavuttamaan hyviä tuloksia yksinkertaisesti tarjoamalla heille palkkiofunktio, joka määrittelee halutun pelitilan, ja antamalla heille mahdollisuus älykkääseen tilan tutkimiseen. Olemme onnistuneesti käyttäneet Q-Learning-algoritmia sekä diskreeteissä että jatkuvissa ympäristöissä, tosin diskreettien toimintojen kanssa.
-On myös tärkeää tutkia tilanteita, joissa toimintotila on jatkuva ja havaintotila paljon monimutkaisempi, kuten kuva Atari-pelin näytöstä. Näissä ongelmissa tarvitsemme usein tehokkaampia koneoppimistekniikoita, kuten neuroverkkoja, saavuttaaksemme hyviä tuloksia. Nämä edistyneemmät aiheet ovat tulevan kehittyneemmän tekoälykurssimme aiheena.
+On tärkeää myös tutkia tilanteita, joissa toiminta-avaruus on jatkuva ja havaintoavaruus paljon monimutkaisempi, kuten kuva Atari-pelin näytöltä. Näissä ongelmissa tarvitsemme usein tehokkaampia koneoppimistekniikoita, kuten neuroverkkoja, hyvän suorituskyvyn saavuttamiseksi. Näistä kehittyneemmistä aiheista käsitellään tulevassa edistyneemmässä tekoälykurssissamme.
---
-**Vastuuvapauslauseke**:
-Tämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua [Co-op Translator](https://github.com/Azure/co-op-translator). Vaikka pyrimme tarkkuuteen, huomioithan, että automaattiset käännökset voivat sisältää virheitä tai epätarkkuuksia. Alkuperäinen asiakirja sen alkuperäisellä kielellä tulisi pitää ensisijaisena lähteenä. Kriittisen tiedon osalta suositellaan ammattimaista ihmiskäännöstä. Emme ole vastuussa väärinkäsityksistä tai virhetulkinnoista, jotka johtuvat tämän käännöksen käytöstä.
\ No newline at end of file
+
+**Vastuuvapauslauseke**:
+Tämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua [Co-op Translator](https://github.com/Azure/co-op-translator). Vaikka pyrimme tarkkuuteen, otathan huomioon, että automaattiset käännökset saattavat sisältää virheitä tai epätarkkuuksia. Alkuperäinen asiakirja sen alkuperäiskielellä on virallinen lähde. Tärkeissä asioissa suositellaan ammattimaista ihmiskäännöstä. Emme ole vastuussa tämän käännöksen käytöstä aiheutuvista väärinymmärryksistä tai tulkinnoista.
+
\ No newline at end of file
diff --git a/translations/fr/.co-op-translator.json b/translations/fr/.co-op-translator.json
index 87ab9809a..829ce3cd1 100644
--- a/translations/fr/.co-op-translator.json
+++ b/translations/fr/.co-op-translator.json
@@ -24,8 +24,8 @@
"language_code": "fr"
},
"1-Introduction/3-fairness/README.md": {
- "original_hash": "9a6b702d1437c0467e3c5c28d763dac2",
- "translation_date": "2025-09-04T22:59:38+00:00",
+ "original_hash": "0f00d72169a0d37eecfd16d71e01700a",
+ "translation_date": "2026-07-13T23:27:21+00:00",
"source_file": "1-Introduction/3-fairness/README.md",
"language_code": "fr"
},
@@ -54,8 +54,8 @@
"language_code": "fr"
},
"2-Regression/1-Tools/README.md": {
- "original_hash": "fa81d226c71d5af7a2cade31c1c92b88",
- "translation_date": "2025-09-04T22:53:45+00:00",
+ "original_hash": "0b8635427b582d03ea4ab7089b93e505",
+ "translation_date": "2026-07-13T23:23:57+00:00",
"source_file": "2-Regression/1-Tools/README.md",
"language_code": "fr"
},
@@ -72,8 +72,8 @@
"language_code": "fr"
},
"2-Regression/2-Data/README.md": {
- "original_hash": "7c077988328ebfe33b24d07945f16eca",
- "translation_date": "2025-09-04T22:54:23+00:00",
+ "original_hash": "a58b2c4d16c6b122643391745ac15af6",
+ "translation_date": "2026-07-13T23:24:59+00:00",
"source_file": "2-Regression/2-Data/README.md",
"language_code": "fr"
},
@@ -89,6 +89,12 @@
"source_file": "2-Regression/2-Data/solution/Julia/README.md",
"language_code": "fr"
},
+ "2-Regression/2-Data/solution/notebook.ipynb": {
+ "original_hash": "96b95f8cf473481f2f371de8156f1571",
+ "translation_date": "2026-07-13T23:15:10+00:00",
+ "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
+ "language_code": "fr"
+ },
"2-Regression/3-Linear/README.md": {
"original_hash": "8b776e731c35b171d316d01d0e7b1369",
"translation_date": "2026-04-26T18:32:56+00:00",
@@ -457,7 +463,7 @@
},
"8-Reinforcement/1-QLearning/README.md": {
"original_hash": "911efd5e595089000cb3c16fce1beab8",
- "translation_date": "2025-09-04T23:05:02+00:00",
+ "translation_date": "2026-07-13T23:25:49+00:00",
"source_file": "8-Reinforcement/1-QLearning/README.md",
"language_code": "fr"
},
@@ -481,7 +487,7 @@
},
"8-Reinforcement/2-Gym/README.md": {
"original_hash": "107d5bb29da8a562e7ae72262d251a75",
- "translation_date": "2025-09-04T23:05:38+00:00",
+ "translation_date": "2026-07-13T23:26:38+00:00",
"source_file": "8-Reinforcement/2-Gym/README.md",
"language_code": "fr"
},
@@ -581,6 +587,19 @@
"source_file": "TROUBLESHOOTING.md",
"language_code": "fr"
},
+ "__translation_failures__": {
+ "sketchnotes/LICENSE.md": {
+ "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f",
+ "source_file": "sketchnotes/LICENSE.md",
+ "language_code": "fr",
+ "failure_date": "2026-07-13T23:23:19+00:00",
+ "status": "failed",
+ "error_type": "TranslationIncompleteError",
+ "error_message": "Markdown translation remained incomplete for chunk 1.1.1 of 'LICENSE.md', and the chunk could not be split further.",
+ "translator_version": "0.20.0",
+ "failure_policy_version": 1
+ }
+ },
"docs/_sidebar.md": {
"original_hash": "68dd06c685f6ce840e0acfa313352e7c",
"translation_date": "2025-09-03T23:13:30+00:00",
diff --git a/translations/fr/1-Introduction/3-fairness/README.md b/translations/fr/1-Introduction/3-fairness/README.md
index 47567baac..18e7e1627 100644
--- a/translations/fr/1-Introduction/3-fairness/README.md
+++ b/translations/fr/1-Introduction/3-fairness/README.md
@@ -1,161 +1,167 @@
-# Construire des solutions de Machine Learning avec une IA responsable
-
-
+# Construire des solutions d’apprentissage automatique avec une IA responsable
+
+
> Sketchnote par [Tomomi Imura](https://www.twitter.com/girlie_mac)
-## [Quiz avant le cours](https://ff-quizzes.netlify.app/en/ml/)
-
+## [Quiz avant la leçon](https://ff-quizzes.netlify.app/en/ml/)
+
## Introduction
-Dans ce programme, vous commencerez à découvrir comment le machine learning influence et impacte nos vies quotidiennes. Aujourd'hui, des systèmes et modèles participent à des tâches de prise de décision quotidienne, comme les diagnostics médicaux, les approbations de prêts ou la détection de fraudes. Il est donc crucial que ces modèles fonctionnent correctement pour fournir des résultats fiables. Comme tout logiciel, les systèmes d'IA peuvent ne pas répondre aux attentes ou produire des résultats indésirables. C'est pourquoi il est essentiel de comprendre et d'expliquer le comportement d'un modèle d'IA.
+Dans ce programme, vous commencerez à découvrir comment l’apprentissage automatique peut et impacte nos vies quotidiennes. Même à l’heure actuelle, des systèmes et modèles interviennent dans les tâches décisionnelles quotidiennes, telles que les diagnostics médicaux, les approbations de prêts ou la détection de fraudes. Il est donc important que ces modèles fonctionnent bien pour fournir des résultats dignes de confiance. Comme toute application logicielle, les systèmes d’IA peuvent ne pas répondre aux attentes ou produire un résultat indésirable. C’est pourquoi il est essentiel de pouvoir comprendre et expliquer le comportement d’un modèle d’IA.
-Imaginez ce qui peut arriver lorsque les données utilisées pour construire ces modèles manquent de représentations de certains groupes démographiques, comme la race, le genre, les opinions politiques ou la religion, ou lorsqu'elles surreprésentent certains groupes. Que se passe-t-il lorsque les résultats du modèle favorisent un groupe démographique particulier ? Quelles sont les conséquences pour l'application ? De plus, que se passe-t-il lorsque le modèle produit un résultat négatif et nuit aux personnes ? Qui est responsable du comportement des systèmes d'IA ? Ce sont quelques-unes des questions que nous explorerons dans ce programme.
+Imaginez ce qui peut arriver lorsque les données utilisées pour construire ces modèles manquent certains groupes démographiques, tels que la race, le genre, les opinions politiques, la religion, ou représentent de façon disproportionnée ces groupes démographiques. Que se passe-t-il lorsque le résultat du modèle est interprété comme favorisant un groupe démographique ? Quelle est la conséquence pour l’application ? De plus, que se passe-t-il lorsque le modèle produit un résultat défavorable et nuit aux personnes ? Qui est responsable du comportement des systèmes d’IA ? Ce sont quelques-unes des questions que nous explorerons dans ce programme.
Dans cette leçon, vous allez :
-- Prendre conscience de l'importance de l'équité dans le machine learning et des préjudices liés à l'injustice.
-- Vous familiariser avec la pratique d'exploration des cas atypiques et des scénarios inhabituels pour garantir fiabilité et sécurité.
-- Comprendre la nécessité de concevoir des systèmes inclusifs pour autonomiser tout le monde.
-- Explorer l'importance de protéger la vie privée et la sécurité des données et des individus.
-- Découvrir l'importance d'une approche transparente pour expliquer le comportement des modèles d'IA.
-- Être attentif à l'importance de la responsabilité pour instaurer la confiance dans les systèmes d'IA.
+- Prendre conscience de l’importance de l’équité dans l’apprentissage automatique et des préjudices liés à l’équité.
+- Vous familiariser avec la pratique d’explorer les valeurs aberrantes et les scénarios inhabituels pour assurer la fiabilité et la sécurité.
+- Comprendre la nécessité d’autonomiser tout le monde en concevant des systèmes inclusifs.
+- Explorer combien il est vital de protéger la vie privée et la sécurité des données et des personnes.
+- Voir l’importance d’adopter une approche « boîte transparente » pour expliquer le comportement des modèles d’IA.
+- Être conscient de l’importance de la responsabilité pour construire la confiance dans les systèmes d’IA.
## Prérequis
-En guise de prérequis, veuillez suivre le parcours d'apprentissage "Principes de l'IA responsable" et regarder la vidéo ci-dessous sur le sujet :
+En préalable, veuillez suivre le parcours d’apprentissage « Principes de l’IA responsable » et visionner la vidéo ci-dessous sur le sujet :
-Apprenez-en davantage sur l'IA responsable en suivant ce [parcours d'apprentissage](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)
+En savoir plus sur l’IA responsable en suivant ce [Parcours d’apprentissage](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)
-[](https://youtu.be/dnC8-uUZXSc "Approche de Microsoft sur l'IA responsable")
+[](https://youtu.be/dnC8-uUZXSc "Approche de Microsoft pour une IA responsable")
-> 🎥 Cliquez sur l'image ci-dessus pour une vidéo : Approche de Microsoft sur l'IA responsable
+> 🎥 Cliquez sur l’image ci-dessus pour une vidéo : Approche de Microsoft pour une IA responsable
## Équité
-Les systèmes d'IA doivent traiter tout le monde de manière équitable et éviter d'affecter différemment des groupes similaires. Par exemple, lorsque les systèmes d'IA fournissent des recommandations sur les traitements médicaux, les demandes de prêt ou l'emploi, ils doivent faire les mêmes recommandations à tous ceux qui présentent des symptômes, des circonstances financières ou des qualifications professionnelles similaires. Chacun de nous, en tant qu'humain, porte des biais hérités qui influencent nos décisions et actions. Ces biais peuvent se refléter dans les données utilisées pour entraîner les systèmes d'IA. Ces manipulations peuvent parfois se produire involontairement. Il est souvent difficile de savoir consciemment quand on introduit des biais dans les données.
+Les systèmes d’IA doivent traiter tout le monde équitablement et éviter d’affecter différemment des groupes de personnes similaires. Par exemple, lorsque les systèmes d’IA fournissent des recommandations sur un traitement médical, des demandes de prêt ou un emploi, ils doivent faire les mêmes recommandations à tous ceux qui présentent des symptômes similaires, des circonstances financières semblables ou des qualifications professionnelles équivalentes. Chacun de nous porte des biais hérités qui influencent nos décisions et actions. Ces biais peuvent être présents dans les données utilisées pour entraîner les systèmes d’IA. Cette manipulation peut parfois se produire involontairement. Il est souvent difficile de savoir consciemment quand on introduit un biais dans les données.
-**L'“injustice”** englobe les impacts négatifs, ou “préjudices”, pour un groupe de personnes, comme ceux définis en termes de race, genre, âge ou statut de handicap. Les principaux préjudices liés à l'équité peuvent être classés comme suit :
+**« Injustice »** englobe les impacts négatifs, ou « préjudices », subis par un groupe de personnes, par exemple définis en fonction de la race, du genre, de l’âge ou du statut de handicap. Les principaux préjudices liés à l’équité peuvent être classés comme suit :
-- **Allocation**, lorsque, par exemple, un genre ou une ethnie est favorisé par rapport à un autre.
-- **Qualité du service**. Si vous entraînez les données pour un scénario spécifique alors que la réalité est bien plus complexe, cela conduit à un service de mauvaise qualité. Par exemple, un distributeur de savon qui ne semble pas détecter les personnes à la peau foncée. [Référence](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
-- **Dénigrement**. Critiquer ou étiqueter injustement quelque chose ou quelqu'un. Par exemple, une technologie de reconnaissance d'images a tristement mal identifié des images de personnes à la peau foncée comme des gorilles.
-- **Sur- ou sous-représentation**. L'idée qu'un certain groupe n'est pas représenté dans une profession donnée, et tout service ou fonction qui continue de promouvoir cela contribue au préjudice.
-- **Stéréotypage**. Associer un groupe donné à des attributs préassignés. Par exemple, un système de traduction entre l'anglais et le turc peut présenter des inexactitudes dues à des associations stéréotypées liées au genre.
+- **Répartition**, si un genre ou une origine ethnique, par exemple, est favorisé par rapport à un autre.
+- **Qualité du service**. Si vous entraînez les données pour un scénario précis mais que la réalité est beaucoup plus complexe, cela conduit à un service de mauvaise qualité. Par exemple, un distributeur de savon qui ne semble pas capable de détecter les personnes à la peau foncée. [Référence](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
+- **Dénigrement**. Critiquer et étiqueter injustement quelque chose ou quelqu’un. Par exemple, une technologie d’étiquetage d’images a tristement célèbrement mal étiqueté des images de personnes à la peau foncée comme des gorilles.
+- **Sur- ou sous-représentation**. L’idée est qu’un certain groupe n’est pas visible dans une certaine profession, et tout service ou fonction qui continue à promouvoir cela contribue à causer un préjudice.
+- **Stéréotypage**. Associer un groupe donné à des attributs préassignés. Par exemple, un système de traduction linguistique entre l’anglais et le turc peut avoir des inexactitudes dues à des mots associés à des stéréotypes de genre.
-
-> traduction en turc
+
+> traduction vers le turc
-
-> traduction en anglais
+
+> traduction retour en anglais
-Lors de la conception et des tests des systèmes d'IA, nous devons nous assurer que l'IA est équitable et qu'elle n'est pas programmée pour prendre des décisions biaisées ou discriminatoires, que les êtres humains sont également interdits de prendre. Garantir l'équité dans l'IA et le machine learning reste un défi sociotechnique complexe.
+Lors de la conception et des tests des systèmes d’IA, nous devons nous assurer que l’IA est équitable et ne soit pas programmée pour prendre des décisions biaisées ou discriminatoires, ce que les êtres humains sont également interdits de faire. Garantir l’équité dans l’IA et l’apprentissage automatique reste un défi sociotechnique complexe.
### Fiabilité et sécurité
-Pour instaurer la confiance, les systèmes d'IA doivent être fiables, sûrs et cohérents dans des conditions normales et inattendues. Il est important de savoir comment les systèmes d'IA se comporteront dans une variété de situations, en particulier lorsqu'il s'agit de cas atypiques. Lors de la création de solutions d'IA, il est nécessaire de se concentrer sur la manière de gérer une grande variété de circonstances que les solutions d'IA pourraient rencontrer. Par exemple, une voiture autonome doit donner la priorité à la sécurité des personnes. En conséquence, l'IA qui alimente la voiture doit prendre en compte tous les scénarios possibles que la voiture pourrait rencontrer, comme la nuit, les orages ou les tempêtes de neige, les enfants traversant la rue, les animaux domestiques, les travaux routiers, etc. La capacité d'un système d'IA à gérer de manière fiable et sûre une large gamme de conditions reflète le niveau d'anticipation que le data scientist ou le développeur d'IA a pris en compte lors de la conception ou des tests du système.
+Pour instaurer la confiance, les systèmes d’IA doivent être fiables, sûrs et cohérents dans des conditions normales et inattendues. Il est important de savoir comment les systèmes d’IA se comporteront dans différentes situations, en particulier lorsqu’il s’agit d’éléments atypiques. Lors de la création de solutions d’IA, il faut accorder une attention substantielle à la manière de gérer une grande variété de circonstances que la solution d’IA pourrait rencontrer. Par exemple, une voiture autonome doit faire de la sécurité des personnes une priorité absolue. Par conséquent, l’IA qui alimente la voiture doit considérer tous les scénarios possibles que la voiture pourrait rencontrer, comme la nuit, les orages, les tempêtes de neige, les enfants traversant la rue, les animaux domestiques, les travaux routiers, etc. La capacité d’un système d’IA à gérer une grande diversité de conditions avec fiabilité et sécurité reflète le niveau d’anticipation du data scientist ou du développeur d’IA lors de la conception ou des tests du système.
> [🎥 Cliquez ici pour une vidéo : ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
### Inclusion
-Les systèmes d'IA doivent être conçus pour engager et autonomiser tout le monde. Lors de la conception et de la mise en œuvre des systèmes d'IA, les data scientists et les développeurs d'IA identifient et abordent les obstacles potentiels dans le système qui pourraient exclure involontairement des personnes. Par exemple, il y a 1 milliard de personnes handicapées dans le monde. Avec les avancées de l'IA, elles peuvent accéder plus facilement à une large gamme d'informations et d'opportunités dans leur vie quotidienne. En abordant ces obstacles, cela crée des opportunités d'innover et de développer des produits d'IA avec de meilleures expériences qui profitent à tout le monde.
+Les systèmes d’IA doivent être conçus pour engager et autonomiser tout le monde. Lors de la conception et de la mise en œuvre des systèmes d’IA, les data scientists et développeurs identifient et traitent les obstacles potentiels dans le système qui pourraient exclure involontairement des personnes. Par exemple, il y a 1 milliard de personnes en situation de handicap dans le monde. Avec l’avancement de l’IA, elles peuvent accéder plus facilement à une grande variété d’informations et d’opportunités dans leur vie quotidienne. En levant ces obstacles, cela crée des opportunités d’innover et de développer des produits d’IA avec de meilleures expériences qui bénéficient à tous.
-> [🎥 Cliquez ici pour une vidéo : inclusion dans l'IA](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
+> [🎥 Cliquez ici pour une vidéo : inclusion dans l’IA](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
-### Sécurité et confidentialité
+### Sécurité et vie privée
-Les systèmes d'IA doivent être sûrs et respecter la vie privée des individus. Les gens ont moins confiance dans les systèmes qui mettent leur vie privée, leurs informations ou leur sécurité en danger. Lors de l'entraînement des modèles de machine learning, nous nous appuyons sur les données pour produire les meilleurs résultats. Ce faisant, l'origine des données et leur intégrité doivent être prises en compte. Par exemple, les données ont-elles été soumises par les utilisateurs ou sont-elles disponibles publiquement ? Ensuite, en travaillant avec les données, il est crucial de développer des systèmes d'IA capables de protéger les informations confidentielles et de résister aux attaques. À mesure que l'IA devient plus répandue, protéger la vie privée et sécuriser les informations personnelles et professionnelles importantes devient de plus en plus critique et complexe. Les questions de confidentialité et de sécurité des données nécessitent une attention particulière pour l'IA, car l'accès aux données est essentiel pour que les systèmes d'IA fassent des prédictions et des décisions précises et éclairées sur les individus.
+Les systèmes d’IA doivent être sûrs et respecter la vie privée des personnes. Les gens ont moins confiance dans les systèmes qui mettent leur vie privée, leurs informations ou leur vie en danger. Lors de l’entraînement de modèles d’apprentissage automatique, nous nous appuyons sur des données pour produire les meilleurs résultats. Ce faisant, l’origine des données et leur intégrité doivent être prises en compte. Par exemple, les données ont-elles été fournies par l’utilisateur ou sont-elles disponibles publiquement ? Ensuite, lors du travail avec les données, il est crucial de développer des systèmes d’IA capables de protéger les informations confidentielles et de résister aux attaques. À mesure que l’IA devient plus courante, protéger la vie privée et sécuriser les informations personnelles et professionnelles importantes devient de plus en plus critique et complexe. Les problèmes de vie privée et de sécurité des données requièrent une attention particulière en IA car l’accès aux données est essentiel pour que les systèmes d’IA fassent des prédictions et des décisions précises et éclairées sur les personnes.
-> [🎥 Cliquez ici pour une vidéo : sécurité dans l'IA](https://www.microsoft.com/videoplayer/embed/RE4voJF)
+> [🎥 Cliquez ici pour une vidéo : sécurité dans l’IA](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- En tant qu'industrie, nous avons réalisé des avancées significatives en matière de confidentialité et de sécurité, largement alimentées par des réglementations comme le RGPD (Règlement Général sur la Protection des Données).
-- Cependant, avec les systèmes d'IA, nous devons reconnaître la tension entre le besoin de données personnelles pour rendre les systèmes plus efficaces et la protection de la vie privée.
-- Tout comme avec la naissance des ordinateurs connectés à Internet, nous observons également une augmentation significative des problèmes de sécurité liés à l'IA.
-- En même temps, nous avons vu l'IA être utilisée pour améliorer la sécurité. Par exemple, la plupart des scanners antivirus modernes sont aujourd'hui alimentés par des heuristiques d'IA.
-- Nous devons nous assurer que nos processus de Data Science s'harmonisent avec les dernières pratiques en matière de confidentialité et de sécurité.
+- En tant qu’industrie, nous avons réalisé des avancées significatives en matière de vie privée et de sécurité, largement stimulées par des réglementations comme le RGPD (Règlement général sur la protection des données).
+- Pourtant, avec les systèmes d’IA, nous devons reconnaître la tension entre le besoin de plus de données personnelles pour rendre les systèmes plus personnels et efficaces – et la vie privée.
+- Comme avec la naissance des ordinateurs connectés à Internet, nous observons aussi une forte augmentation du nombre de problèmes de sécurité liés à l’IA.
+- En même temps, nous avons vu l’IA utilisée pour améliorer la sécurité. Par exemple, la plupart des scanners antivirus modernes sont aujourd’hui alimentés par des heuristiques d’IA.
+- Nous devons veiller à ce que nos processus de science des données s’harmonisent avec les dernières pratiques en matière de vie privée et de sécurité.
-### Transparence
-Les systèmes d'IA doivent être compréhensibles. Une partie essentielle de la transparence consiste à expliquer le comportement des systèmes d'IA et de leurs composants. Améliorer la compréhension des systèmes d'IA nécessite que les parties prenantes comprennent comment et pourquoi ils fonctionnent afin qu'elles puissent identifier les problèmes de performance potentiels, les préoccupations en matière de sécurité et de confidentialité, les biais, les pratiques d'exclusion ou les résultats involontaires. Nous pensons également que ceux qui utilisent les systèmes d'IA doivent être honnêtes et transparents sur le moment, les raisons et la manière dont ils choisissent de les déployer, ainsi que sur les limites des systèmes qu'ils utilisent. Par exemple, si une banque utilise un système d'IA pour soutenir ses décisions de prêt aux consommateurs, il est important d'examiner les résultats et de comprendre quelles données influencent les recommandations du système. Les gouvernements commencent à réglementer l'IA dans divers secteurs, donc les data scientists et les organisations doivent expliquer si un système d'IA répond aux exigences réglementaires, en particulier lorsqu'il y a un résultat indésirable.
+### Transparence
+Les systèmes d’IA doivent être compréhensibles. Une partie cruciale de la transparence est d’expliquer le comportement des systèmes d’IA et de leurs composants. Améliorer la compréhension des systèmes d’IA exige que les parties prenantes comprennent comment et pourquoi ils fonctionnent afin de pouvoir identifier les problèmes potentiels de performance, les préoccupations en matière de sécurité et de vie privée, les biais, les pratiques exclusionnaires ou les résultats inattendus. Nous pensons également que ceux qui utilisent les systèmes d’IA devraient être honnêtes et transparents sur le moment, la raison et la manière dont ils choisissent de les déployer, ainsi que sur les limites des systèmes qu’ils utilisent. Par exemple, si une banque utilise un système d’IA pour soutenir ses décisions de prêt à la consommation, il est important d’examiner les résultats et de comprendre quelles données influencent les recommandations du système. Les gouvernements commencent à réglementer l’IA dans tous les secteurs, donc les data scientists et les organisations doivent expliquer si un système d’IA respecte les exigences réglementaires, notamment en cas de résultat indésirable.
-> [🎥 Cliquez ici pour une vidéo : transparence dans l'IA](https://www.microsoft.com/videoplayer/embed/RE4voJF)
+> [🎥 Cliquez ici pour une vidéo : transparence dans l’IA](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- Parce que les systèmes d'IA sont si complexes, il est difficile de comprendre leur fonctionnement et d'interpréter les résultats.
-- Ce manque de compréhension affecte la manière dont ces systèmes sont gérés, opérationnalisés et documentés.
-- Ce manque de compréhension affecte surtout les décisions prises en utilisant les résultats produits par ces systèmes.
+- Parce que les systèmes d’IA sont si complexes, il est difficile de comprendre leur fonctionnement et d’interpréter les résultats.
+- Cette incompréhension impacte la manière dont ces systèmes sont gérés, opérationnalisés et documentés.
+- Cette incompréhension affecte surtout les décisions prises à partir des résultats produits par ces systèmes.
### Responsabilité
+
+Les personnes qui conçoivent et déploient les systèmes d’IA doivent être responsables de leur fonctionnement. Le besoin de responsabilité est particulièrement crucial avec des technologies d’usage sensible comme la reconnaissance faciale. Récemment, il y a eu une demande croissante pour la reconnaissance faciale, notamment de la part des forces de l’ordre qui voient le potentiel de la technologie pour des usages tels que la recherche d’enfants disparus. Cependant, ces technologies pourraient potentiellement être utilisées par un gouvernement pour mettre en danger les libertés fondamentales de ses citoyens en permettant, par exemple, la surveillance continue de certains individus. Ainsi, les data scientists et les organisations doivent être responsables de l’impact de leurs systèmes d’IA sur les individus ou la société.
-Les personnes qui conçoivent et déploient des systèmes d'IA doivent être responsables de leur fonctionnement. La nécessité de responsabilité est particulièrement cruciale avec les technologies sensibles comme la reconnaissance faciale. Récemment, la demande pour la technologie de reconnaissance faciale a augmenté, notamment de la part des organisations de maintien de l'ordre qui voient le potentiel de cette technologie pour des usages comme retrouver des enfants disparus. Cependant, ces technologies pourraient être utilisées par un gouvernement pour mettre en danger les libertés fondamentales de ses citoyens, par exemple en permettant une surveillance continue de certains individus. Ainsi, les data scientists et les organisations doivent être responsables de l'impact de leur système d'IA sur les individus ou la société.
+[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Approche de Microsoft pour une IA responsable")
-[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Approche de Microsoft sur l'IA responsable")
+> 🎥 Cliquez sur l’image ci-dessus pour une vidéo : Avertissements sur la surveillance de masse via la reconnaissance faciale
-> 🎥 Cliquez sur l'image ci-dessus pour une vidéo : Mises en garde contre la surveillance de masse via la reconnaissance faciale
+En fin de compte, l'une des plus grandes questions pour notre génération, en tant que première génération à introduire l’IA dans la société, est de savoir comment garantir que les ordinateurs resteront responsables envers les personnes et comment garantir que les personnes qui conçoivent les ordinateurs restent responsables envers tout le monde.
-En fin de compte, l'une des plus grandes questions pour notre génération, en tant que première génération à introduire l'IA dans la société, est de savoir comment garantir que les ordinateurs resteront responsables envers les humains et comment s'assurer que les personnes qui conçoivent les ordinateurs restent responsables envers tout le monde.
+## Évaluation d’impact
-## Évaluation de l'impact
+Avant d’entraîner un modèle d’apprentissage automatique, il est important de réaliser une évaluation d’impact pour comprendre le but du système d’IA ; son usage prévu ; où il sera déployé ; et qui interagira avec le système. Cela aide les évaluateurs ou testeurs à savoir quels facteurs prendre en compte pour identifier les risques potentiels et les conséquences attendues.
-Avant d'entraîner un modèle de machine learning, il est important de réaliser une évaluation de l'impact pour comprendre l'objectif du système d'IA, son utilisation prévue, son lieu de déploiement et les personnes qui interagiront avec le système. Ces éléments sont utiles pour les examinateurs ou testeurs qui évaluent le système afin de savoir quels facteurs prendre en compte pour identifier les risques potentiels et les conséquences attendues.
+Les domaines d’intérêt lors de l’évaluation d’impact sont :
-Les domaines suivants sont à examiner lors de l'évaluation de l'impact :
+* **Impact négatif sur les individus**. Être conscient de toute restriction ou exigence, utilisation non supportée ou toute limite connue entravant la performance du système est vital pour s’assurer que le système ne soit pas utilisé d’une manière susceptible de nuire aux individus.
+* **Exigences en matière de données**. Comprendre comment et où le système utilisera les données permet aux évaluateurs d’explorer toutes les exigences en matière de données à respecter (par exemple, RGPD ou HIPAA). En outre, vérifier si la source ou la quantité de données est suffisante pour l’entraînement.
+* **Résumé de l’impact**. Recueillir une liste des préjudices potentiels qui pourraient découler de l’utilisation du système. Tout au long du cycle de vie de l’IA, vérifier si les problèmes identifiés sont atténués ou traités.
+* **Objectifs applicables** pour chacun des six principes fondamentaux. Évaluer si les objectifs de chaque principe sont atteints et s’il existe des lacunes.
-* **Impact négatif sur les individus**. Être conscient de toute restriction ou exigence, utilisation non prise en charge ou toute limitation connue entravant les performances du système est essentiel pour garantir que le système n'est pas utilisé d'une manière qui pourrait nuire aux individus.
-* **Exigences en matière de données**. Comprendre comment et où le système utilisera les données permet aux examinateurs d'explorer les exigences en matière de données dont vous devez tenir compte (par exemple, les réglementations RGPD ou HIPAA). En outre, examinez si la source ou la quantité de données est suffisante pour l'entraînement.
-* **Résumé de l'impact**. Rassemblez une liste des préjudices potentiels qui pourraient découler de l'utilisation du système. Tout au long du cycle de vie du ML, vérifiez si les problèmes identifiés sont atténués ou résolus.
-* **Objectifs applicables** pour chacun des six principes fondamentaux. Évaluez si les objectifs de chaque principe sont atteints et s'il existe des lacunes.
## Débogage avec une IA responsable
-Tout comme le débogage d'une application logicielle, le débogage d'un système d'IA est un processus nécessaire pour identifier et résoudre les problèmes dans le système. De nombreux facteurs peuvent affecter les performances d'un modèle et l'empêcher d'agir de manière responsable. La plupart des métriques traditionnelles de performance des modèles sont des agrégats quantitatifs des performances d'un modèle, ce qui n'est pas suffisant pour analyser comment un modèle viole les principes de l'IA responsable. De plus, un modèle de machine learning est une boîte noire, ce qui rend difficile de comprendre ce qui motive ses résultats ou d'expliquer ses erreurs. Plus tard dans ce cours, nous apprendrons à utiliser le tableau de bord de l'IA responsable pour aider à déboguer les systèmes d'IA. Ce tableau de bord fournit un outil holistique pour les data scientists et les développeurs d'IA afin de réaliser :
+Comme pour le débogage d’une application logicielle, déboguer un système d’IA est un processus nécessaire pour identifier et résoudre les problèmes du système. De nombreux facteurs peuvent affecter la performance d’un modèle qui ne répond pas aux attentes ou n’est pas responsable. La plupart des métriques classiques de performance des modèles sont des agrégats quantitatifs de la performance d’un modèle, ce qui n’est pas suffisant pour analyser comment un modèle viole les principes d’IA responsable. Par ailleurs, un modèle d’apprentissage automatique est une boîte noire qui rend difficile la compréhension des facteurs influençant son résultat ou l’explication d’une erreur. Plus tard dans ce cours, nous apprendrons à utiliser le tableau de bord Responsible AI pour aider à déboguer les systèmes d’IA. Le tableau de bord offre un outil holistique pour les data scientists et développeurs d’IA afin d’effectuer :
-* **Analyse des erreurs**. Identifier la distribution des erreurs du modèle qui peut affecter l'équité ou la fiabilité du système.
-* **Vue d'ensemble du modèle**. Découvrir où il existe des disparités dans les performances du modèle à travers les cohortes de données.
-* **Analyse des données**. Comprendre la distribution des données et identifier tout biais potentiel dans les données pouvant entraîner des problèmes d'équité, d'inclusion et de fiabilité.
-* **Interprétabilité du modèle**. Comprendre ce qui affecte ou influence les prédictions du modèle. Cela aide à expliquer le comportement du modèle, ce qui est important pour la transparence et la responsabilité.
+* **Analyse des erreurs**. Identifier la distribution des erreurs du modèle qui peuvent affecter l’équité ou la fiabilité du système.
+* **Vue d’ensemble du modèle**. Découvrir où il existe des disparités dans la performance du modèle selon les cohortes de données.
+* **Analyse des données**. Comprendre la répartition des données et identifier tout biais potentiel dans les données susceptible de causer des problèmes d’équité, d’inclusion et de fiabilité.
+* **Interprétabilité du modèle**. Comprendre ce qui influence ou impacte les prédictions du modèle. Cela aide à expliquer le comportement du modèle, ce qui est important pour la transparence et la responsabilité.
-## 🚀 Défi
-Pour éviter que des préjudices ne soient introduits dès le départ, nous devrions :
+## 🚀 Défi
+
+Pour prévenir l’apparition de préjudices dès le départ, nous devrions :
- avoir une diversité de parcours et de perspectives parmi les personnes travaillant sur les systèmes
-- investir dans des ensembles de données qui reflètent la diversité de notre société
-- développer de meilleures méthodes tout au long du cycle de vie du machine learning pour détecter et corriger les problèmes liés à l'IA responsable lorsqu'ils surviennent
+- investir dans des jeux de données reflétant la diversité de notre société
+- développer de meilleures méthodes tout au long du cycle de vie de l’apprentissage automatique pour détecter et corriger les cas d’IA responsable lorsque cela se produit
-Réfléchissez à des scénarios réels où le manque de fiabilité d'un modèle est évident dans sa création et son utilisation. Que devrions-nous considérer d'autre ?
+Pensez à des scénarios réels où le manque de fiabilité d’un modèle est évident lors de la construction et de l’utilisation du modèle. Que devrions-nous d’autre prendre en compte ?
-## [Quiz après le cours](https://ff-quizzes.netlify.app/en/ml/)
+## [Quiz après la leçon](https://ff-quizzes.netlify.app/en/ml/)
-## Révision et étude personnelle
+## Revue & auto-étude
+
-Dans cette leçon, vous avez appris les bases des concepts d'équité et d'injustice dans le machine learning.
-Regardez cet atelier pour approfondir les sujets abordés :
+Dans cette leçon, vous avez appris quelques notions de base sur les concepts d’équité et d’inéquité en apprentissage automatique.
+
+Regardez cet atelier pour approfondir les sujets :
-- À la recherche d'une IA responsable : Mettre les principes en pratique par Besmira Nushi, Mehrnoosh Sameki et Amit Sharma
+- À la poursuite d’une IA responsable : Mettre les principes en pratique par Besmira Nushi, Mehrnoosh Sameki et Amit Sharma
-[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox : Un cadre open-source pour construire une IA responsable")
+[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI")
-> 🎥 Cliquez sur l'image ci-dessus pour une vidéo : RAI Toolbox : Un cadre open-source pour construire une IA responsable par Besmira Nushi, Mehrnoosh Sameki et Amit Sharma
+> 🎥 Cliquez sur l’image ci-dessus pour une vidéo : RAI Toolbox : Un cadre open-source pour construire une IA responsable par Besmira Nushi, Mehrnoosh Sameki et Amit Sharma
-À lire également :
+Lisez aussi :
-- Centre de ressources RAI de Microsoft : [Ressources sur l'IA responsable – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
+- Centre de ressources IA responsable de Microsoft : [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
-- Groupe de recherche FATE de Microsoft : [FATE : Équité, Responsabilité, Transparence et Éthique dans l'IA - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
+- Groupe de recherche FATE de Microsoft : [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
-RAI Toolbox :
+Boîte à outils RAI :
-- [Dépôt GitHub de Responsible AI Toolbox](https://github.com/microsoft/responsible-ai-toolbox)
+- [Dépôt GitHub de la Responsible AI Toolbox](https://github.com/microsoft/responsible-ai-toolbox)
-Découvrez les outils d'Azure Machine Learning pour garantir l'équité :
+Lisez sur les outils d’Azure Machine Learning pour garantir l’équité :
-- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
+- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
-## Devoir
+## Exercice
-[Explorez RAI Toolbox](assignment.md)
+[Explorez la Responsible AI Toolbox](assignment.md)
---
-**Avertissement** :
-Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
\ No newline at end of file
+
+**Avertissement** :
+Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforçions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source faisant autorité. Pour les informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous ne saurions être tenus responsables des malentendus ou erreurs d'interprétation découlant de l'utilisation de cette traduction.
+
\ No newline at end of file
diff --git a/translations/fr/2-Regression/1-Tools/README.md b/translations/fr/2-Regression/1-Tools/README.md
index 8ad44bd55..a7ce2710b 100644
--- a/translations/fr/2-Regression/1-Tools/README.md
+++ b/translations/fr/2-Regression/1-Tools/README.md
@@ -1,106 +1,107 @@
# Commencez avec Python et Scikit-learn pour les modèles de régression
-
+
> Sketchnote par [Tomomi Imura](https://www.twitter.com/girlie_mac)
-## [Quiz avant le cours](https://ff-quizzes.netlify.app/en/ml/)
+## [Quiz avant la leçon](https://ff-quizzes.netlify.app/en/ml/)
> ### [Cette leçon est disponible en R !](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
## Introduction
-Dans ces quatre leçons, vous allez découvrir comment construire des modèles de régression. Nous discuterons bientôt de leur utilité. Mais avant de commencer, assurez-vous d'avoir les bons outils en place pour démarrer le processus !
+Dans ces quatre leçons, vous allez découvrir comment construire des modèles de régression. Nous discuterons brièvement de leur utilité. Mais avant de faire quoi que ce soit, assurez-vous d'avoir les bons outils en place pour commencer le processus !
Dans cette leçon, vous apprendrez à :
-- Configurer votre ordinateur pour des tâches locales d'apprentissage automatique.
-- Travailler avec les notebooks Jupyter.
-- Utiliser Scikit-learn, y compris son installation.
+- Configurer votre ordinateur pour des tâches d'apprentissage automatique local.
+- Travailler avec Jupyter Notebooks.
+- Utiliser Scikit-learn, y compris l'installation.
- Explorer la régression linéaire avec un exercice pratique.
## Installations et configurations
-[](https://youtu.be/-DfeD2k2Kj0 "ML pour débutants - Configurez vos outils pour créer des modèles d'apprentissage automatique")
+[](https://youtu.be/-DfeD2k2Kj0 "ML pour débutants - Préparez vos outils pour construire des modèles d'apprentissage automatique")
-> 🎥 Cliquez sur l'image ci-dessus pour une courte vidéo expliquant comment configurer votre ordinateur pour l'apprentissage automatique.
+> 🎥 Cliquez sur l'image ci-dessus pour une courte vidéo expliquant la configuration de votre ordinateur pour le ML.
-1. **Installez Python**. Assurez-vous que [Python](https://www.python.org/downloads/) est installé sur votre ordinateur. Vous utiliserez Python pour de nombreuses tâches de science des données et d'apprentissage automatique. La plupart des systèmes informatiques incluent déjà une installation de Python. Il existe également des [packs de codage Python](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) utiles pour simplifier la configuration pour certains utilisateurs.
+1. **Installez Python**. Assurez-vous que [Python](https://www.python.org/downloads/) est installé sur votre ordinateur. Vous utiliserez Python pour de nombreuses tâches de science des données et d'apprentissage automatique. La plupart des systèmes informatiques incluent déjà une installation de Python. Il existe aussi des [packs de codage Python](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) utiles pour faciliter la configuration pour certains utilisateurs.
- Certaines utilisations de Python nécessitent une version spécifique du logiciel, tandis que d'autres en nécessitent une différente. Pour cette raison, il est utile de travailler dans un [environnement virtuel](https://docs.python.org/3/library/venv.html).
+ Certaines utilisations de Python nécessitent cependant une version du logiciel, tandis que d'autres en requièrent une différente. Pour cette raison, il est utile de travailler dans un [environnement virtuel](https://docs.python.org/3/library/venv.html).
-2. **Installez Visual Studio Code**. Assurez-vous que Visual Studio Code est installé sur votre ordinateur. Suivez ces instructions pour [installer Visual Studio Code](https://code.visualstudio.com/) pour une installation de base. Vous allez utiliser Python dans Visual Studio Code dans ce cours, alors vous pourriez vouloir vous familiariser avec la [configuration de Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) pour le développement Python.
+2. **Installez Visual Studio Code**. Assurez-vous d'avoir Visual Studio Code installé sur votre ordinateur. Suivez ces instructions pour [installer Visual Studio Code](https://code.visualstudio.com/) pour l'installation de base. Vous allez utiliser Python dans Visual Studio Code dans ce cours, donc vous voudrez peut-être vous familiariser avec la façon de [configurer Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) pour le développement Python.
> Familiarisez-vous avec Python en parcourant cette collection de [modules d'apprentissage](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)
>
- > [](https://youtu.be/yyQM70vi7V8 "Configurer Python avec Visual Studio Code")
+ > [](https://youtu.be/yyQM70vi7V8 "Configurez Python avec Visual Studio Code")
>
> 🎥 Cliquez sur l'image ci-dessus pour une vidéo : utiliser Python dans VS Code.
-3. **Installez Scikit-learn**, en suivant [ces instructions](https://scikit-learn.org/stable/install.html). Étant donné que vous devez utiliser Python 3, il est recommandé d'utiliser un environnement virtuel. Notez que si vous installez cette bibliothèque sur un Mac M1, il existe des instructions spéciales sur la page liée ci-dessus.
+3. **Installez Scikit-learn**, en suivant [ces instructions](https://scikit-learn.org/stable/install.html). Comme vous devez vous assurer d'utiliser Python 3, il est recommandé d'utiliser un environnement virtuel. Notez, si vous installez cette bibliothèque sur un Mac M1, des instructions spéciales sont disponibles sur la page liée ci-dessus.
-4. **Installez Jupyter Notebook**. Vous devrez [installer le package Jupyter](https://pypi.org/project/jupyter/).
+1. **Installez Jupyter Notebook**. Vous devrez [installer le package Jupyter](https://pypi.org/project/jupyter/).
## Votre environnement d'écriture ML
-Vous allez utiliser des **notebooks** pour développer votre code Python et créer des modèles d'apprentissage automatique. Ce type de fichier est un outil courant pour les data scientists, et ils peuvent être identifiés par leur suffixe ou extension `.ipynb`.
+Vous allez utiliser des **notebooks** pour développer votre code Python et créer des modèles d'apprentissage automatique. Ce type de fichier est un outil courant pour les data scientists, et il se reconnaît par son suffixe ou extension `.ipynb`.
-Les notebooks sont un environnement interactif qui permet au développeur de coder, d'ajouter des notes et de rédiger de la documentation autour du code, ce qui est très utile pour les projets expérimentaux ou orientés recherche.
+Les notebooks sont un environnement interactif qui permet au développeur de coder tout en ajoutant des notes et en rédigeant de la documentation autour du code, ce qui est très utile pour les projets expérimentaux ou de recherche.
-[](https://youtu.be/7E-jC8FLA2E "ML pour débutants - Configurez Jupyter Notebooks pour commencer à créer des modèles de régression")
+[](https://youtu.be/7E-jC8FLA2E "ML pour débutants - Configurez Jupyter Notebooks pour commencer à construire des modèles de régression")
> 🎥 Cliquez sur l'image ci-dessus pour une courte vidéo expliquant cet exercice.
-### Exercice - travailler avec un notebook
+### Exercice - travaillez avec un notebook
Dans ce dossier, vous trouverez le fichier _notebook.ipynb_.
1. Ouvrez _notebook.ipynb_ dans Visual Studio Code.
- Un serveur Jupyter démarrera avec Python 3+. Vous trouverez des zones du notebook qui peuvent être `exécutées`, des morceaux de code. Vous pouvez exécuter un bloc de code en sélectionnant l'icône qui ressemble à un bouton de lecture.
+ Un serveur Jupyter va démarrer avec Python 3+ lancé. Vous trouverez des zones du notebook qui peuvent être `exécutées`, des morceaux de code. Vous pouvez exécuter un bloc de code en sélectionnant l'icône qui ressemble à un bouton de lecture.
-2. Sélectionnez l'icône `md` et ajoutez un peu de markdown, ainsi que le texte suivant **# Bienvenue dans votre notebook**.
+1. Sélectionnez l'icône `md` et ajoutez un peu de markdown, ainsi que le texte suivant : **# Bienvenue dans votre notebook**.
- Ensuite, ajoutez du code Python.
+ Ensuite, ajoutez un peu de code Python.
-3. Tapez **print('hello notebook')** dans le bloc de code.
-4. Sélectionnez la flèche pour exécuter le code.
+1. Tapez **print('hello notebook')** dans le bloc de code.
+1. Sélectionnez la flèche pour exécuter le code.
- Vous devriez voir l'instruction imprimée :
+ Vous devriez voir la ligne imprimée :
```output
hello notebook
```
-
+
-Vous pouvez intercaler votre code avec des commentaires pour auto-documenter le notebook.
+Vous pouvez alterner votre code avec des commentaires pour auto-documenter le notebook.
-✅ Réfléchissez un instant à la différence entre l'environnement de travail d'un développeur web et celui d'un data scientist.
+✅ Réfléchissez un instant à quel point l'environnement de travail d'un développeur web est différent de celui d'un data scientist.
-## Prise en main avec Scikit-learn
+## Prise en main de Scikit-learn
-Maintenant que Python est configuré dans votre environnement local et que vous êtes à l'aise avec les notebooks Jupyter, familiarisons-nous avec Scikit-learn (prononcez-le `sci` comme dans `science`). Scikit-learn fournit une [API étendue](https://scikit-learn.org/stable/modules/classes.html#api-ref) pour vous aider à effectuer des tâches d'apprentissage automatique.
+Maintenant que Python est configuré dans votre environnement local, et que vous êtes à l'aise avec Jupyter Notebooks, familiarisons-nous de la même façon avec Scikit-learn (prononcez `sci` comme dans `science`). Scikit-learn fournit une [API étendue](https://scikit-learn.org/stable/modules/classes.html#api-ref) pour vous aider à réaliser des tâches de ML.
-Selon leur [site web](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn est une bibliothèque d'apprentissage automatique open source qui prend en charge l'apprentissage supervisé et non supervisé. Elle fournit également divers outils pour l'ajustement de modèles, le prétraitement des données, la sélection et l'évaluation de modèles, ainsi que de nombreuses autres utilités."
+Selon leur [site web](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn est une bibliothèque open source d'apprentissage automatique qui prend en charge l'apprentissage supervisé et non supervisé. Elle fournit également divers outils pour l'ajustement de modèles, le prétraitement des données, la sélection et l'évaluation de modèles, ainsi que de nombreuses autres utilités."
-Dans ce cours, vous utiliserez Scikit-learn et d'autres outils pour construire des modèles d'apprentissage automatique afin d'effectuer ce que nous appelons des tâches d'apprentissage automatique "traditionnel". Nous avons délibérément évité les réseaux neuronaux et l'apprentissage profond, car ils sont mieux couverts dans notre prochain programme "IA pour débutants".
+Dans ce cours, vous utiliserez Scikit-learn et d'autres outils pour construire des modèles d'apprentissage automatique pour effectuer ce que nous appelons des tâches de "machine learning traditionnel". Nous avons délibérément évité les réseaux neuronaux et l'apprentissage profond, car ils sont mieux abordés dans notre futur programme "IA pour débutants".
-Scikit-learn simplifie la construction de modèles et leur évaluation pour une utilisation. Il est principalement axé sur l'utilisation de données numériques et contient plusieurs ensembles de données prêts à l'emploi pour servir d'outils d'apprentissage. Il inclut également des modèles préconstruits que les étudiants peuvent essayer. Explorons le processus de chargement de données préemballées et utilisons un estimateur intégré pour créer un premier modèle ML avec Scikit-learn à l'aide de données de base.
+Scikit-learn facilite la construction et l'évaluation des modèles pour une utilisation pratique. Il se concentre principalement sur l'utilisation de données numériques et contient plusieurs ensembles de données préconçus pour servir d'outils d'apprentissage. Il inclut aussi des modèles préconstruits pour que les étudiants puissent les essayer. Explorons d'abord le processus de chargement des données préemballées et l'utilisation d'un estimateur intégré pour un premier modèle ML avec Scikit-learn et des données basiques.
## Exercice - votre premier notebook Scikit-learn
-> Ce tutoriel a été inspiré par l'[exemple de régression linéaire](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) sur le site web de Scikit-learn.
+> Ce tutoriel s'inspire de l'[exemple de régression linéaire](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) sur le site de Scikit-learn.
+
[](https://youtu.be/2xkXL5EUpS0 "ML pour débutants - Votre premier projet de régression linéaire en Python")
> 🎥 Cliquez sur l'image ci-dessus pour une courte vidéo expliquant cet exercice.
-Dans le fichier _notebook.ipynb_ associé à cette leçon, supprimez toutes les cellules en appuyant sur l'icône de la "poubelle".
+Dans le fichier _notebook.ipynb_ associé à cette leçon, videz toutes les cellules en appuyant sur l'icône de la 'poubelle'.
-Dans cette section, vous travaillerez avec un petit ensemble de données sur le diabète intégré à Scikit-learn à des fins d'apprentissage. Imaginez que vous vouliez tester un traitement pour les patients diabétiques. Les modèles d'apprentissage automatique pourraient vous aider à déterminer quels patients répondraient mieux au traitement, en fonction de combinaisons de variables. Même un modèle de régression très basique, lorsqu'il est visualisé, pourrait montrer des informations sur les variables qui vous aideraient à organiser vos essais cliniques théoriques.
+Dans cette section, vous allez travailler avec un petit ensemble de données sur le diabète intégré à Scikit-learn à des fins d'apprentissage. Imaginez que vous vouliez tester un traitement pour des patients diabétiques. Les modèles d'apprentissage automatique pourraient vous aider à déterminer quels patients répondraient mieux au traitement, en fonction de combinaisons de variables. Même un modèle de régression très basique, une fois visualisé, pourrait montrer des informations sur les variables qui vous aideraient à organiser vos essais cliniques théoriques.
-✅ Il existe de nombreux types de méthodes de régression, et le choix dépend de la réponse que vous recherchez. Si vous voulez prédire la taille probable d'une personne en fonction de son âge, vous utiliseriez une régression linéaire, car vous cherchez une **valeur numérique**. Si vous êtes intéressé par la découverte de si un type de cuisine doit être considéré comme végétalien ou non, vous cherchez une **attribution de catégorie**, donc vous utiliseriez une régression logistique. Vous en apprendrez davantage sur la régression logistique plus tard. Réfléchissez un peu à des questions que vous pourriez poser aux données, et à laquelle de ces méthodes serait la plus appropriée.
+✅ Il existe de nombreux types de méthodes de régression, et celle que vous choisissez dépend de la réponse que vous cherchez. Si vous voulez prédire la taille probable d'une personne à un âge donné, vous utiliserez la régression linéaire, car vous cherchez une **valeur numérique**. Si vous vous intéressez à savoir si un type de cuisine doit être considéré comme végan ou non, vous recherchez une **attribution de catégorie**, donc vous utiliseriez la régression logistique. Vous en apprendrez davantage sur la régression logistique plus tard. Réfléchissez un peu à quelques questions que vous pouvez poser aux données, et à laquelle de ces méthodes serait la plus appropriée.
Commençons cette tâche.
@@ -108,11 +109,11 @@ Commençons cette tâche.
Pour cette tâche, nous allons importer quelques bibliothèques :
-- **matplotlib**. C'est un [outil de graphisme](https://matplotlib.org/) utile que nous utiliserons pour créer un graphique linéaire.
+- **matplotlib**. C'est un [outil de graphique](https://matplotlib.org/) utile que nous utiliserons pour créer un graphique en ligne.
- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) est une bibliothèque utile pour manipuler des données numériques en Python.
- **sklearn**. C'est la bibliothèque [Scikit-learn](https://scikit-learn.org/stable/user_guide.html).
-Importez quelques bibliothèques pour vous aider dans vos tâches.
+Importez quelques bibliothèques pour aider dans vos tâches.
1. Ajoutez les imports en tapant le code suivant :
@@ -122,24 +123,24 @@ Importez quelques bibliothèques pour vous aider dans vos tâches.
from sklearn import datasets, linear_model, model_selection
```
- Ci-dessus, vous importez `matplotlib`, `numpy` et vous importez `datasets`, `linear_model` et `model_selection` de `sklearn`. `model_selection` est utilisé pour diviser les données en ensembles d'entraînement et de test.
+ Ci-dessus, vous importez `matplotlib`, `numpy` et vous importez `datasets`, `linear_model` et `model_selection` de `sklearn`. `model_selection` est utilisé pour séparer les données en ensembles d'entraînement et de test.
-### L'ensemble de données sur le diabète
+### Le jeu de données sur le diabète
-L'[ensemble de données sur le diabète](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) intégré comprend 442 échantillons de données sur le diabète, avec 10 variables de caractéristiques, dont certaines incluent :
+Le [jeu de données diabète intégré](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) comprend 442 échantillons de données autour du diabète, avec 10 variables de caractéristiques, dont certaines incluent :
-- age : âge en années
+- âge : âge en années
- bmi : indice de masse corporelle
-- bp : pression artérielle moyenne
+- bp : pression sanguine moyenne
- s1 tc : cellules T (un type de globules blancs)
-✅ Cet ensemble de données inclut le concept de "sexe" comme variable de caractéristique importante pour la recherche sur le diabète. De nombreux ensembles de données médicaux incluent ce type de classification binaire. Réfléchissez un peu à la manière dont des catégorisations comme celle-ci pourraient exclure certaines parties de la population des traitements.
+✅ Ce jeu de données comprend la notion de 'sexe' comme variable caractéristique importante pour la recherche autour du diabète. Beaucoup de jeux de données médicales incluent ce type de classification binaire. Réfléchissez un peu à la façon dont ce type de catégorisation pourrait exclure certaines parties d'une population des traitements.
Maintenant, chargez les données X et y.
-> 🎓 Rappelez-vous, il s'agit d'apprentissage supervisé, et nous avons besoin d'une cible nommée 'y'.
+> 🎓 Rappelez-vous, il s'agit d'un apprentissage supervisé, et nous avons besoin d'une cible nommée 'y'.
-Dans une nouvelle cellule de code, chargez l'ensemble de données sur le diabète en appelant `load_diabetes()`. L'entrée `return_X_y=True` indique que `X` sera une matrice de données, et `y` sera la cible de régression.
+Dans une nouvelle cellule de code, chargez le jeu de données diabète en appelant `load_diabetes()`. L'entrée `return_X_y=True` signifie que `X` sera une matrice de données, et que `y` sera la cible de la régression.
1. Ajoutez quelques commandes print pour afficher la forme de la matrice de données et son premier élément :
@@ -149,9 +150,9 @@ Dans une nouvelle cellule de code, chargez l'ensemble de données sur le diabèt
print(X[0])
```
- Ce que vous obtenez en réponse est un tuple. Ce que vous faites est d'attribuer les deux premières valeurs du tuple à `X` et `y` respectivement. Apprenez-en davantage [sur les tuples](https://wikipedia.org/wiki/Tuple).
+ Ce que vous obtenez en réponse est un tuple. Ce que vous faites, c'est attribuer les deux premières valeurs du tuple à `X` et `y` respectivement. Apprenez-en plus [sur les tuples](https://wikipedia.org/wiki/Tuple).
- Vous pouvez voir que ces données contiennent 442 éléments organisés en tableaux de 10 éléments :
+ Vous pouvez voir que ces données ont 442 items formés en tableaux de 10 éléments :
```text
(442, 10)
@@ -159,39 +160,39 @@ Dans une nouvelle cellule de code, chargez l'ensemble de données sur le diabèt
-0.04340085 -0.00259226 0.01990842 -0.01764613]
```
- ✅ Réfléchissez un peu à la relation entre les données et la cible de régression. La régression linéaire prédit les relations entre la caractéristique X et la variable cible y. Pouvez-vous trouver la [cible](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) pour l'ensemble de données sur le diabète dans la documentation ? Que démontre cet ensemble de données, étant donné la cible ?
+ ✅ Réfléchissez un peu à la relation entre les données et la cible de régression. La régression linéaire prédit les relations entre la caractéristique X et la variable cible y. Pouvez-vous trouver la [cible](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) pour le jeu de données diabète dans la documentation ? Que démontre ce jeu de données, étant donné cette cible ?
-2. Ensuite, sélectionnez une partie de cet ensemble de données à tracer en sélectionnant la 3ème colonne de l'ensemble de données. Vous pouvez le faire en utilisant l'opérateur `:` pour sélectionner toutes les lignes, puis en sélectionnant la 3ème colonne en utilisant l'index (2). Vous pouvez également remodeler les données pour qu'elles soient un tableau 2D - comme requis pour le tracé - en utilisant `reshape(n_rows, n_columns)`. Si l'un des paramètres est -1, la dimension correspondante est calculée automatiquement.
+2. Ensuite, sélectionnez une portion de ce jeu de données à tracer en sélectionnant la 3e colonne du jeu de données. Vous pouvez le faire en utilisant l'opérateur `:` pour sélectionner toutes les lignes, puis en sélectionnant la 3e colonne en utilisant l'index (2). Vous pouvez aussi remodeler les données pour qu'elles soient un tableau 2D - comme requis pour le tracé - en utilisant `reshape(n_rows, n_columns)`. Si un des paramètres est -1, la dimension correspondante est calculée automatiquement.
```python
X = X[:, 2]
X = X.reshape((-1,1))
```
- ✅ À tout moment, imprimez les données pour vérifier leur forme.
+ ✅ À tout moment, affichez les données pour vérifier leur forme.
-3. Maintenant que vous avez des données prêtes à être tracées, vous pouvez voir si une machine peut aider à déterminer une séparation logique entre les nombres dans cet ensemble de données. Pour ce faire, vous devez diviser à la fois les données (X) et la cible (y) en ensembles de test et d'entraînement. Scikit-learn propose une méthode simple pour cela ; vous pouvez diviser vos données de test à un point donné.
+3. Maintenant que vous avez des données prêtes à être tracées, vous pouvez voir si une machine peut aider à déterminer une séparation logique parmi les nombres de ce dataset. Pour ce faire, vous devez diviser à la fois les données (X) et la cible (y) en ensembles de test et d'entraînement. Scikit-learn offre un moyen simple de faire cela ; vous pouvez diviser vos données de test à un point donné.
```python
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33)
```
-4. Vous êtes maintenant prêt à entraîner votre modèle ! Chargez le modèle de régression linéaire et entraînez-le avec vos ensembles d'entraînement X et y en utilisant `model.fit()` :
+4. Maintenant vous êtes prêt à entraîner votre modèle ! Chargez le modèle de régression linéaire et entraînez-le avec vos ensembles d'entraînement X et y en utilisant `model.fit()` :
```python
model = linear_model.LinearRegression()
model.fit(X_train, y_train)
```
- ✅ `model.fit()` est une fonction que vous verrez dans de nombreuses bibliothèques ML comme TensorFlow.
+ ✅ `model.fit()` est une fonction que vous verrez dans de nombreuses bibliothèques ML telles que TensorFlow
-5. Ensuite, créez une prédiction en utilisant les données de test, avec la fonction `predict()`. Cela sera utilisé pour tracer la ligne entre les groupes de données.
+5. Puis, créez une prédiction en utilisant les données de test, avec la fonction `predict()`. Cela sera utilisé pour tracer la ligne entre les groupes de données
```python
y_pred = model.predict(X_test)
```
-6. Il est maintenant temps de montrer les données dans un graphique. Matplotlib est un outil très utile pour cette tâche. Créez un nuage de points de toutes les données de test X et y, et utilisez la prédiction pour tracer une ligne à l'endroit le plus approprié, entre les regroupements de données du modèle.
+6. Il est maintenant temps d'afficher les données dans un graphique. Matplotlib est un outil très utile pour cette tâche. Créez un nuage de points de toutes les données de test X et y, et utilisez la prédiction pour tracer une ligne à l'endroit le plus approprié, entre les groupes de données du modèle.
```python
plt.scatter(X_test, y_test, color='black')
@@ -202,22 +203,24 @@ Dans une nouvelle cellule de code, chargez l'ensemble de données sur le diabèt
plt.show()
```
- 
-✅ Réfléchissez un peu à ce qui se passe ici. Une ligne droite traverse de nombreux petits points de données, mais que fait-elle exactement ? Pouvez-vous voir comment cette ligne pourrait vous permettre de prédire où un nouveau point de données, encore inconnu, devrait se situer par rapport à l'axe y du graphique ? Essayez de mettre en mots l'utilité pratique de ce modèle.
+ 
+
+
+ ✅ Réfléchissez un peu à ce qui se passe ici. Une ligne droite traverse de nombreux petits points de données, mais que fait-elle exactement ? Pouvez-vous voir comment vous devriez pouvoir utiliser cette ligne pour prédire où un nouveau point de données non vu devrait se situer par rapport à l'axe y du graphique ? Essayez de mettre en mots l'utilisation pratique de ce modèle.
-Félicitations, vous avez construit votre premier modèle de régression linéaire, créé une prédiction avec celui-ci, et l'avez affichée dans un graphique !
+Félicitations, vous avez construit votre premier modèle de régression linéaire, créé une prédiction avec celui-ci, et l'avez affiché dans un graphique !
---
## 🚀Défi
-Tracez une autre variable de ce jeu de données. Indice : modifiez cette ligne : `X = X[:,2]`. Étant donné la cible de ce jeu de données, que pouvez-vous découvrir sur la progression du diabète en tant que maladie ?
-## [Quiz post-cours](https://ff-quizzes.netlify.app/en/ml/)
+Tracez une variable différente de ce jeu de données. Astuce : modifiez cette ligne : `X = X[:,2]`. Étant donné la cible de ce jeu de données, que pouvez-vous découvrir sur la progression du diabète en tant que maladie ?
+## [Quiz post-conférence](https://ff-quizzes.netlify.app/en/ml/)
-## Révision & Étude personnelle
+## Revue & Auto-apprentissage
-Dans ce tutoriel, vous avez travaillé avec la régression linéaire simple, plutôt qu'avec la régression univariée ou multiple. Lisez un peu sur les différences entre ces méthodes, ou regardez [cette vidéo](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef).
+Dans ce tutoriel, vous avez travaillé avec une régression linéaire simple, plutôt qu’avec une régression univariée ou multiple. Lisez un peu sur les différences entre ces méthodes, ou jetez un œil à [cette vidéo](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef)
-Lisez davantage sur le concept de régression et réfléchissez aux types de questions qui peuvent être résolues grâce à cette technique. Suivez [ce tutoriel](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) pour approfondir votre compréhension.
+Lisez davantage à propos du concept de régression et réfléchissez aux types de questions auxquelles cette technique peut répondre. Suivez ce [tutoriel](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) pour approfondir votre compréhension.
## Devoir
@@ -225,5 +228,7 @@ Lisez davantage sur le concept de régression et réfléchissez aux types de que
---
-**Avertissement** :
-Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
\ No newline at end of file
+
+**Avertissement** :
+Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforçions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source faisant autorité. Pour les informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous ne saurions être tenus responsables des malentendus ou erreurs d'interprétation découlant de l'utilisation de cette traduction.
+
\ No newline at end of file
diff --git a/translations/fr/2-Regression/2-Data/README.md b/translations/fr/2-Regression/2-Data/README.md
index bb6e2b73a..1533c17ac 100644
--- a/translations/fr/2-Regression/2-Data/README.md
+++ b/translations/fr/2-Regression/2-Data/README.md
@@ -1,62 +1,62 @@
# Construire un modèle de régression avec Scikit-learn : préparer et visualiser les données
-
+
Infographie par [Dasani Madipalli](https://twitter.com/dasani_decoded)
-## [Quiz avant le cours](https://ff-quizzes.netlify.app/en/ml/)
+## [Quiz avant la leçon](https://ff-quizzes.netlify.app/en/ml/)
> ### [Cette leçon est disponible en R !](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
## Introduction
-Maintenant que vous êtes équipé des outils nécessaires pour commencer à construire des modèles d'apprentissage automatique avec Scikit-learn, vous êtes prêt à poser des questions à vos données. Lorsque vous travaillez avec des données et appliquez des solutions d'apprentissage automatique, il est essentiel de savoir poser les bonnes questions pour exploiter pleinement le potentiel de votre ensemble de données.
+Maintenant que vous avez configuré les outils dont vous avez besoin pour commencer à construire des modèles d'apprentissage automatique avec Scikit-learn, vous êtes prêt à commencer à poser des questions sur vos données. Lorsqu'on travaille avec des données et qu'on applique des solutions ML, il est très important de savoir poser la bonne question pour bien exploiter le potentiel de votre jeu de données.
Dans cette leçon, vous apprendrez :
-- Comment préparer vos données pour la construction de modèles.
-- Comment utiliser Matplotlib pour la visualisation des données.
+- Comment préparer vos données pour la construction de modèle.
+- Comment utiliser Matplotlib pour la visualisation de données.
+- Comment utiliser Seaborn pour une visualisation des données plus expressive.
-## Poser les bonnes questions à vos données
+## Poser la bonne question à vos données
-La question que vous souhaitez résoudre déterminera le type d'algorithmes d'apprentissage automatique que vous utiliserez. La qualité de la réponse que vous obtiendrez dépendra fortement de la nature de vos données.
+La question à laquelle vous avez besoin de répondre déterminera le type d'algorithmes ML que vous utiliserez. Et la qualité de la réponse dépendra fortement de la nature de vos données.
-Examinez les [données](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) fournies pour cette leçon. Vous pouvez ouvrir ce fichier .csv dans VS Code. Un rapide coup d'œil montre immédiatement qu'il y a des valeurs manquantes et un mélange de chaînes de caractères et de données numériques. Il y a aussi une colonne étrange appelée 'Package' où les données sont un mélange de 'sacks', 'bins' et d'autres valeurs. Les données, en fait, sont un peu désordonnées.
+Jetez un œil aux [données](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) fournies pour cette leçon. Vous pouvez ouvrir ce fichier .csv dans VS Code. Un coup d'œil rapide montre immédiatement qu'il y a des blancs et un mélange de chaînes et de données numériques. Il y a aussi une colonne étrange appelée 'Package' où les données sont un mélange entre 'sacs', 'bacs' et d'autres valeurs. Les données, en fait, sont un peu désordonnées.
-[](https://youtu.be/5qGjczWTrDQ "ML pour débutants - Comment analyser et nettoyer un ensemble de données")
+[](https://youtu.be/5qGjczWTrDQ "ML pour débutants - Comment analyser et nettoyer un jeu de données")
-> 🎥 Cliquez sur l'image ci-dessus pour une courte vidéo expliquant comment préparer les données pour cette leçon.
+> 🎥 Cliquez sur l'image ci-dessus pour une courte vidéo expliquant la préparation des données pour cette leçon.
-En réalité, il est rare de recevoir un ensemble de données entièrement prêt à être utilisé pour créer un modèle d'apprentissage automatique. Dans cette leçon, vous apprendrez à préparer un ensemble de données brut en utilisant des bibliothèques Python standard. Vous apprendrez également différentes techniques pour visualiser les données.
+En fait, il est rare qu'on vous donne un jeu de données prêt à l'emploi pour créer un modèle ML directement. Dans cette leçon, vous apprendrez comment préparer un jeu de données brut en utilisant des bibliothèques Python standards. Vous apprendrez également différentes techniques pour visualiser les données.
-## Étude de cas : "le marché des citrouilles"
+## Étude de cas : 'le marché de la citrouille'
-Dans ce dossier, vous trouverez un fichier .csv dans le dossier racine `data` appelé [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) qui contient 1757 lignes de données sur le marché des citrouilles, triées par ville. Ce sont des données brutes extraites des [Rapports standards des marchés terminaux des cultures spécialisées](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) distribués par le Département de l'Agriculture des États-Unis.
+Dans ce dossier, vous trouverez un fichier .csv dans le dossier racine `data` appelé [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) qui comprend 1757 lignes de données sur le marché des citrouilles, triées par ville. Il s’agit de données brutes extraites des [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) distribués par le Département de l'Agriculture des États-Unis.
-### Préparer les données
+### Préparation des données
-Ces données sont dans le domaine public. Elles peuvent être téléchargées en plusieurs fichiers distincts, par ville, depuis le site web de l'USDA. Pour éviter trop de fichiers séparés, nous avons concaténé toutes les données des villes en une seule feuille de calcul, ce qui signifie que nous avons déjà _préparé_ un peu les données. Ensuite, examinons de plus près ces données.
+Ces données sont dans le domaine public. Elles peuvent être téléchargées dans de nombreux fichiers séparés, par ville, sur le site web de l'USDA. Pour éviter trop de fichiers distincts, nous avons concaténé toutes les données des villes en une seule feuille de calcul, ainsi nous avons déjà un peu _préparé_ les données. Ensuite, examinons de plus près les données.
-### Les données sur les citrouilles - premières conclusions
+### Les données de la citrouille - premières conclusions
-Que remarquez-vous à propos de ces données ? Vous avez déjà vu qu'il y a un mélange de chaînes de caractères, de nombres, de valeurs manquantes et de valeurs étranges qu'il faut interpréter.
+Que remarquez-vous à propos de ces données ? Vous avez déjà vu qu'il y a un mélange de chaînes, de nombres, de blancs et de valeurs étranges dont vous devez comprendre la signification.
-Quelle question pouvez-vous poser à ces données en utilisant une technique de régression ? Que diriez-vous de "Prédire le prix d'une citrouille en vente pendant un mois donné". En regardant à nouveau les données, il y a des modifications à apporter pour créer la structure de données nécessaire à cette tâche.
+Quelle question pouvez-vous poser à ces données, en utilisant une technique de régression ? Que diriez-vous de "Prédire le prix d'une citrouille à la vente durant un mois donné". En regardant de nouveau les données, il y a quelques modifications à apporter pour créer la structure de données nécessaire à cette tâche.
+## Exercice - analyser les données de la citrouille
-## Exercice - analyser les données sur les citrouilles
+Utilisons [Pandas](https://pandas.pydata.org/) (le nom signifie `Python Data Analysis`), un outil très utile pour structurer les données, afin d'analyser et de préparer ces données de citrouille.
-Utilisons [Pandas](https://pandas.pydata.org/), (le nom signifie `Python Data Analysis`) un outil très utile pour façonner les données, afin d'analyser et de préparer ces données sur les citrouilles.
+### D'abord, vérifier les dates manquantes
-### Premièrement, vérifier les dates manquantes
-
-Vous devrez d'abord prendre des mesures pour vérifier les dates manquantes :
+Vous devez d'abord prendre des mesures pour vérifier les dates manquantes :
1. Convertir les dates au format mois (ce sont des dates américaines, donc le format est `MM/DD/YYYY`).
2. Extraire le mois dans une nouvelle colonne.
Ouvrez le fichier _notebook.ipynb_ dans Visual Studio Code et importez la feuille de calcul dans un nouveau dataframe Pandas.
-1. Utilisez la fonction `head()` pour afficher les cinq premières lignes.
+1. Utilisez la fonction `head()` pour voir les cinq premières lignes.
```python
import pandas as pd
@@ -64,7 +64,7 @@ Ouvrez le fichier _notebook.ipynb_ dans Visual Studio Code et importez la feuill
pumpkins.head()
```
- ✅ Quelle fonction utiliseriez-vous pour afficher les cinq dernières lignes ?
+ ✅ Quelle fonction utiliseriez-vous pour voir les cinq dernières lignes ?
1. Vérifiez s'il y a des données manquantes dans le dataframe actuel :
@@ -72,20 +72,20 @@ Ouvrez le fichier _notebook.ipynb_ dans Visual Studio Code et importez la feuill
pumpkins.isnull().sum()
```
- Il y a des données manquantes, mais peut-être que cela n'aura pas d'importance pour la tâche à accomplir.
+ Il y a des données manquantes, mais peut-être que cela ne posera pas de problème pour la tâche.
-1. Pour rendre votre dataframe plus facile à manipuler, sélectionnez uniquement les colonnes nécessaires en utilisant la fonction `loc`, qui extrait du dataframe original un groupe de lignes (passé en premier paramètre) et de colonnes (passé en second paramètre). L'expression `:` dans le cas ci-dessous signifie "toutes les lignes".
+1. Pour rendre votre dataframe plus facile à manipuler, sélectionnez uniquement les colonnes nécessaires, en utilisant la fonction `loc` qui extrait du dataframe original un groupe de lignes (passées en premier paramètre) et de colonnes (passées en second paramètre). L'expression `:` signifie "toutes les lignes" dans ce cas.
```python
columns_to_select = ['Package', 'Low Price', 'High Price', 'Date']
pumpkins = pumpkins.loc[:, columns_to_select]
```
-### Deuxièmement, déterminer le prix moyen des citrouilles
+### Secondement, déterminer le prix moyen de la citrouille
Réfléchissez à la manière de déterminer le prix moyen d'une citrouille pour un mois donné. Quelles colonnes choisiriez-vous pour cette tâche ? Indice : vous aurez besoin de 3 colonnes.
-Solution : prenez la moyenne des colonnes `Low Price` et `High Price` pour remplir la nouvelle colonne Price, et convertissez la colonne Date pour n'afficher que le mois. Heureusement, selon la vérification ci-dessus, il n'y a pas de données manquantes pour les dates ou les prix.
+Solution : prenez la moyenne des colonnes `Low Price` et `High Price` pour remplir la nouvelle colonne Prix, et convertissez la colonne Date pour n'afficher que le mois. Heureusement, selon la vérification ci-dessus, il n'y a pas de données manquantes pour les dates ou les prix.
1. Pour calculer la moyenne, ajoutez le code suivant :
@@ -96,7 +96,7 @@ Solution : prenez la moyenne des colonnes `Low Price` et `High Price` pour rempl
```
- ✅ N'hésitez pas à imprimer les données que vous souhaitez vérifier en utilisant `print(month)`.
+ ✅ N'hésitez pas à afficher les données avec `print(month)` pour vérifier.
2. Maintenant, copiez vos données converties dans un nouveau dataframe Pandas :
@@ -104,29 +104,29 @@ Solution : prenez la moyenne des colonnes `Low Price` et `High Price` pour rempl
new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price})
```
- En imprimant votre dataframe, vous verrez un ensemble de données propre et ordonné sur lequel vous pourrez construire votre nouveau modèle de régression.
+ Afficher votre dataframe vous montrera un jeu de données propre et rangé sur lequel vous pouvez construire votre nouveau modèle de régression.
### Mais attendez ! Il y a quelque chose d'étrange ici
-Si vous regardez la colonne `Package`, les citrouilles sont vendues dans de nombreuses configurations différentes. Certaines sont vendues en mesures de '1 1/9 bushel', d'autres en '1/2 bushel', certaines par citrouille, certaines par livre, et d'autres dans de grandes boîtes de tailles variées.
+Si vous regardez la colonne `Package`, les citrouilles sont vendues sous différentes configurations. Certaines sont vendues en mesures '1 1/9 boisseau', d'autres en '1/2 boisseau', certaines à l'unité, d'autres à la livre, et certaines dans de grosses boîtes de largeur variable.
-> Les citrouilles semblent très difficiles à peser de manière cohérente
+> Les citrouilles semblent très difficiles à peser de manière uniforme
-En examinant les données originales, il est intéressant de noter que tout ce qui a `Unit of Sale` égal à 'EACH' ou 'PER BIN' a également le type `Package` par pouce, par bin, ou 'each'. Les citrouilles semblent être très difficiles à peser de manière cohérente, alors filtrons-les en sélectionnant uniquement les citrouilles avec le mot 'bushel' dans leur colonne `Package`.
+En creusant les données initiales, il est intéressant de noter que tout ce qui a `Unit of Sale` égale à 'EACH' ou 'PER BIN' possède aussi un type `Package` par pouce, par bac, ou 'chacun'. Les citrouilles semblent très difficiles à peser de façon cohérente, donc filtrons-les en sélectionnant uniquement celles avec la chaîne 'bushel' dans leur colonne `Package`.
-1. Ajoutez un filtre en haut du fichier, sous l'importation initiale du fichier .csv :
+1. Ajoutez un filtre en haut du fichier, sous l'import initial du fichier .csv :
```python
pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]
```
- Si vous imprimez les données maintenant, vous verrez que vous obtenez uniquement les 415 lignes de données contenant des citrouilles par bushel.
+ Si vous affichez les données maintenant, vous verrez que vous ne récupérez que les 415 lignes environ contenant des citrouilles vendues au boisseau.
### Mais attendez ! Il y a encore une chose à faire
-Avez-vous remarqué que la quantité de bushel varie selon les lignes ? Vous devez normaliser les prix pour afficher les prix par bushel, alors faites quelques calculs pour les standardiser.
+Avez-vous remarqué que la quantité par boisseau varie selon la ligne ? Vous devez normaliser les prix afin d'afficher le prix par boisseau, donc faites quelques calculs pour l'uniformiser.
-1. Ajoutez ces lignes après le bloc créant le dataframe new_pumpkins :
+1. Ajoutez ces lignes après le bloc de création du dataframe new_pumpkins :
```python
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9)
@@ -134,37 +134,37 @@ Avez-vous remarqué que la quantité de bushel varie selon les lignes ? Vous dev
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2)
```
-✅ Selon [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), le poids d'un bushel dépend du type de produit, car c'est une mesure de volume. "Un bushel de tomates, par exemple, est censé peser 56 livres... Les feuilles et les légumes verts prennent plus de place avec moins de poids, donc un bushel d'épinards ne pèse que 20 livres." Tout cela est assez compliqué ! Ne nous embêtons pas à faire une conversion bushel-livre, et affichons plutôt les prix par bushel. Toute cette étude des bushels de citrouilles montre cependant à quel point il est important de comprendre la nature de vos données !
+✅ Selon [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), le poids d'un boisseau dépend du type de produit, car c'est une mesure de volume. « Un boisseau de tomates, par exemple, est censé peser 56 livres... Les feuilles et les verdure occupent plus d'espace avec moins de poids, donc un boisseau d'épinards ne fait que 20 livres. » C'est assez compliqué ! Ne nous embêtons pas avec la conversion boisseau-livre, mais tarifons plutôt à l'unité de boisseau. Toute cette étude des boisseaux de citrouilles montre cependant combien il est important de comprendre la nature de vos données !
-Maintenant, vous pouvez analyser les prix par unité en fonction de leur mesure en bushel. Si vous imprimez les données une fois de plus, vous verrez comment elles sont standardisées.
+Vous pouvez maintenant analyser les prix par unité selon leur mesure en boisseaux. Si vous affichez les données une nouvelle fois, vous verrez comment elles sont standardisées.
-✅ Avez-vous remarqué que les citrouilles vendues par demi-bushel sont très chères ? Pouvez-vous comprendre pourquoi ? Indice : les petites citrouilles sont beaucoup plus chères que les grandes, probablement parce qu'il y en a beaucoup plus par bushel, étant donné l'espace inutilisé occupé par une grande citrouille creuse pour tarte.
+✅ Avez-vous remarqué que les citrouilles vendues par demi-boisseau sont très chères ? Pouvez-vous deviner pourquoi ? Indice : les petites citrouilles sont bien plus chères que les grosses, probablement parce qu'il y en a beaucoup plus par boisseau, compte tenu de l'espace inutilisé pris par une grosse citrouille creuse pour tarte.
## Stratégies de visualisation
-Une partie du rôle du data scientist est de démontrer la qualité et la nature des données avec lesquelles il travaille. Pour ce faire, il crée souvent des visualisations intéressantes, comme des graphiques, des diagrammes et des courbes, montrant différents aspects des données. De cette manière, il peut montrer visuellement des relations et des lacunes qui seraient autrement difficiles à découvrir.
+Une partie du rôle du data scientist est de démontrer la qualité et la nature des données avec lesquelles il travaille. Pour ce faire, ils créent souvent des visualisations intéressantes, ou des graphiques, diagrammes et tableaux, montrant différents aspects des données. De cette façon, ils peuvent montrer visuellement des relations et des lacunes difficiles à découvrir autrement.
[](https://youtu.be/SbUkxH6IJo0 "ML pour débutants - Comment visualiser les données avec Matplotlib")
-> 🎥 Cliquez sur l'image ci-dessus pour une courte vidéo expliquant comment visualiser les données pour cette leçon.
+> 🎥 Cliquez sur l'image ci-dessus pour une courte vidéo expliquant la visualisation des données de cette leçon.
-Les visualisations peuvent également aider à déterminer la technique d'apprentissage automatique la plus appropriée pour les données. Un nuage de points qui semble suivre une ligne, par exemple, indique que les données sont un bon candidat pour un exercice de régression linéaire.
+Les visualisations peuvent aussi aider à déterminer la technique d'apprentissage machine la plus appropriée aux données. Un graphique de dispersion qui semble suivre une ligne, par exemple, indique que les données sont de bons candidats pour un exercice de régression linéaire.
Une bibliothèque de visualisation de données qui fonctionne bien dans les notebooks Jupyter est [Matplotlib](https://matplotlib.org/) (que vous avez également vue dans la leçon précédente).
> Obtenez plus d'expérience avec la visualisation des données dans [ces tutoriels](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott).
-## Exercice - expérimenter avec Matplotlib
+## Exercice - expérimentez avec Matplotlib
-Essayez de créer des graphiques simples pour afficher le nouveau dataframe que vous venez de créer. Que montrerait un graphique linéaire de base ?
+Essayez de créer des graphiques de base pour afficher le nouveau dataframe que vous venez de créer. Que montrerait un graphique linéaire de base ?
-1. Importez Matplotlib en haut du fichier, sous l'importation de Pandas :
+1. Importez Matplotlib en haut du fichier, sous l'import de Pandas :
```python
import matplotlib.pyplot as plt
```
-1. Relancez tout le notebook pour actualiser.
+1. Relancez l'intégralité du notebook pour le rafraîchir.
1. En bas du notebook, ajoutez une cellule pour tracer les données sous forme de boîte :
```python
@@ -174,44 +174,121 @@ Essayez de créer des graphiques simples pour afficher le nouveau dataframe que
plt.show()
```
- 
+ 
- Ce graphique est-il utile ? Y a-t-il quelque chose qui vous surprend ?
+ Est-ce un graphique utile ? Y a-t-il quelque chose qui vous surprend ?
- Ce n'est pas particulièrement utile car tout ce qu'il fait est d'afficher vos données sous forme de points répartis dans un mois donné.
+ Ce n’est pas particulièrement utile car tout ce qu’il fait est d’afficher vos données étalées en une série de points pour un mois donné.
### Rendez-le utile
-Pour obtenir des graphiques affichant des données utiles, vous devez généralement regrouper les données d'une manière ou d'une autre. Essayons de créer un graphique où l'axe y montre les mois et les données démontrent la distribution des données.
+Pour que les graphiques affichent des données utiles, vous devez généralement grouper les données d'une manière ou d'une autre. Essayons de créer un graphique où l’axe y montre les mois et les données illustrent la distribution.
-1. Ajoutez une cellule pour créer un graphique en barres groupées :
+1. Ajoutez une cellule pour créer un histogramme groupé :
```python
new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar')
plt.ylabel("Pumpkin Price")
```
- 
+ 
+
+ C’est une visualisation de données bien plus utile ! Elle semble indiquer que le prix le plus élevé pour les citrouilles a lieu en septembre et en octobre. Est-ce conforme à vos attentes ? Pourquoi ou pourquoi pas ?
+
+## Exercice - expérimentez avec Seaborn
+
+Matplotlib est puissant, mais il peut nécessiter beaucoup de code pour produire un graphique soigné. [Seaborn](https://seaborn.pydata.org/) est une bibliothèque construite _au-dessus de_ Matplotlib qui est conçue pour la visualisation statistique des données. Elle fonctionne directement avec les dataframes Pandas, applique des styles attractifs par défaut, et vous permet de créer des graphiques informatifs avec beaucoup moins de code. Parce que Seaborn retourne des objets Matplotlib, vous pouvez toujours utiliser tout ce que vous savez déjà sur Matplotlib pour affiner le résultat.
+
+> Si vous n’avez pas encore Seaborn installé, installez-le avec `pip install seaborn`.
+
+1. Importez Seaborn en haut du notebook, sous les autres imports. Par convention, il est importé sous le nom `sns` :
+
+ ```python
+ import seaborn as sns
+ ```
+
+### Graphiques de dispersion pour montrer les relations
+
+Une grande partie de l’exploration des données avant de construire un modèle consiste à rechercher des _relations_ entre les variables. Un [nuage de points](https://en.wikipedia.org/wiki/Scatter_plot) est l’un des meilleurs outils pour cela : si les points semblent suivre une ligne, il se peut que les deux variables soient corrélées, ce qui est un bon signe qu’un modèle de régression linéaire pourrait fonctionner.
+
+1. Reproduisez le graphique de dispersion prix-mois vu plus tôt, cette fois en utilisant [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) de Seaborn (graphique relationnel), qui travaille directement avec les colonnes de votre dataframe :
+
+ ```python
+ sns.relplot(x="Price", y="Month", data=new_pumpkins)
+ ```
+
+ 
+
+ Remarquez comment vous passez les _noms des colonnes_ et le dataframe, et Seaborn s'occupe des étiquettes des axes pour vous.
+
+2. Vous pouvez passer à un graphique linéaire en passant `kind="line"`. Seaborn trace même une bande ombrée montrant l'intervalle de confiance autour de la ligne :
+
+ ```python
+ sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins)
+ ```
+
+ 
+
+ Ces données sont assez bruyantes, donc un graphique linéaire n'est pas le choix le plus clair ici — mais cela montre à quel point il est facile de changer le type de graphique dans Seaborn.
+
+### Histogrammes pour montrer les distributions
+
+
+Plus tôt, vous avez regroupé les données manuellement pour créer un graphique à barres avec Matplotlib. Le [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) de Seaborn (graphique catégoriel) peut effectuer le regroupement et l'agrégation pour vous. Par défaut, `kind="bar"` affiche la moyenne de chaque catégorie avec une ligne noire indiquant l'intervalle de confiance.
+
+1. Créez un graphique à barres du prix moyen par mois :
+
+ ```python
+ sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar")
+ ```
+
+ 
+
+ Cela confirme ce que vous avez vu avec Matplotlib — les prix culminent autour de septembre et octobre — mais Seaborn visualise aussi à quel point le prix _varie_ au sein de chaque mois.
+
+### Cartes thermiques pour montrer les corrélations
+
+Les graphiques de dispersion comparent deux variables à la fois. Lorsque vous avez plusieurs colonnes numériques, une [carte thermique](https://en.wikipedia.org/wiki/Heat_map) vous permet de voir la force de la relation entre _toutes_ les paires de colonnes en même temps. C'est un moyen courant pour repérer quelles caractéristiques sont les plus corrélées avant de choisir ce que vous allez utiliser dans un modèle (et ce même type de graphique est plus tard utilisé pour afficher les matrices de confusion en classification).
+
+1. Construisez une matrice de corrélation avec Pandas, puis tracez-la avec le [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html) de Seaborn. L'option `annot=True` affiche les valeurs de corrélation sur chaque cellule :
+
+ ```python
+ correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()
+ sns.heatmap(correlations, annot=True, cmap="coolwarm")
+ ```
+
+ 
+
+ Les valeurs proches de `1` (ou `-1`) signifient que les colonnes sont fortement corrélées _linéairement_. Remarquez comment `Low Price` et `High Price` sont presque parfaitement corrélées. `Month`, en revanche, ne montre qu'une faible corrélation linéaire avec le prix — même si le graphique à barres ci-dessus a révélé un pic saisonnier clair en septembre et octobre. C'est une leçon importante : le coefficient de corrélation ne mesure que les relations _linéaires droites_, il peut donc manquer des motifs saisonniers ou non linéaires. ✅ Pourquoi est-il utile de regarder à la fois une carte thermique *et* des graphiques comme le graphique à barres avant de décider quelles colonnes utiliser ?
+
+### Matplotlib ou Seaborn ?
+
+Les deux bibliothèques valent la peine d’être connues :
+
+- **Matplotlib** vous donne un contrôle précis sur chaque élément d'un graphique et est la base sur laquelle presque toutes les autres bibliothèques Python de visualisation sont construites.
+- **Seaborn** offre des fonctions de plus haut niveau et des valeurs par défaut attrayantes pour les graphiques statistiques, travaille directement avec des dataframes et est souvent plus rapide pour l’analyse exploratoire des données.
- Ce graphique est une visualisation de données plus utile ! Il semble indiquer que le prix le plus élevé des citrouilles se produit en septembre et octobre. Cela correspond-il à vos attentes ? Pourquoi ou pourquoi pas ?
+Un flux de travail courant est d'utiliser Seaborn pour explorer rapidement vos données, puis de passer à Matplotlib lorsque vous avez besoin de personnaliser les détails.
---
## 🚀Défi
-Explorez les différents types de visualisation que Matplotlib propose. Quels types sont les plus appropriés pour les problèmes de régression ?
+Explorez les différents types de visualisation que Matplotlib et Seaborn offrent. Quels types sont les plus adaptés aux problèmes de régression ?
-## [Quiz après le cours](https://ff-quizzes.netlify.app/en/ml/)
+## [Quiz post-conférence](https://ff-quizzes.netlify.app/en/ml/)
-## Révision et étude personnelle
+## Revue & Auto-apprentissage
-Examinez les nombreuses façons de visualiser les données. Faites une liste des différentes bibliothèques disponibles et notez celles qui sont les meilleures pour certains types de tâches, par exemple les visualisations 2D contre les visualisations 3D. Que découvrez-vous ?
+Jetez un œil aux nombreuses façons de visualiser les données. Faites une liste des différentes bibliothèques disponibles et notez quelles sont les mieux adaptées à certains types de tâches, par exemple visualisations 2D vs. visualisations 3D. Que découvrez-vous ?
## Devoir
-[Explorer la visualisation](assignment.md)
+[Exploration de la visualisation](assignment.md)
---
-**Avertissement** :
-Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
\ No newline at end of file
+
+**Avertissement** :
+Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforçions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source faisant autorité. Pour les informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous ne saurions être tenus responsables des malentendus ou erreurs d'interprétation découlant de l'utilisation de cette traduction.
+
\ No newline at end of file
diff --git a/translations/fr/2-Regression/2-Data/solution/notebook.ipynb b/translations/fr/2-Regression/2-Data/solution/notebook.ipynb
index 496b15525..d27036f5b 100644
--- a/translations/fr/2-Regression/2-Data/solution/notebook.ipynb
+++ b/translations/fr/2-Regression/2-Data/solution/notebook.ipynb
@@ -3,7 +3,9 @@
{
"cell_type": "markdown",
"metadata": {},
- "source": []
+ "source": [
+ "## Régression linéaire pour les citrouilles - Leçon 2\n"
+ ]
},
{
"cell_type": "code",
@@ -220,6 +222,7 @@
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
"pumpkins = pd.read_csv('../../data/US-pumpkins.csv')\n",
"\n",
"pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]\n",
@@ -383,18 +386,78 @@
"plt.ylabel(\"Pumpkin Price\")"
]
},
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Visualisation avec Seaborn\n",
+ "\n",
+ "[Seaborn](https://seaborn.pydata.org/) est construit au-dessus de Matplotlib et fonctionne directement avec des dataframes, ce qui permet de créer rapidement des graphiques statistiques attrayants avec très peu de code.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Graphiques de dispersion pour montrer les relations\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", kind=\"line\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Diagrammes à barres pour montrer les distributions\n"
+ ]
+ },
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
- "source": []
+ "source": [
+ "sns.catplot(x=\"Month\", y=\"Price\", data=new_pumpkins, kind=\"bar\")"
+ ]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "\n---\n\n**Avertissement** : \nCe document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de faire appel à une traduction humaine professionnelle. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.\n"
+ "### Cartes thermiques pour montrer les corrélations\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()\n",
+ "sns.heatmap(correlations, annot=True, cmap=\"coolwarm\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "---\n\n\n**Avertissement** :\nCe document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforçions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source faisant autorité. Pour les informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous ne saurions être tenus responsables des malentendus ou erreurs d'interprétation découlant de l'utilisation de cette traduction.\n\n"
]
}
],
@@ -424,13 +487,7 @@
"hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d"
}
},
- "orig_nbformat": 2,
- "coopTranslator": {
- "original_hash": "95726f0b8283628d5356a4f8eb8b4b76",
- "translation_date": "2025-09-04T01:36:32+00:00",
- "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
- "language_code": "fr"
- }
+ "orig_nbformat": 2
},
"nbformat": 4,
"nbformat_minor": 2
diff --git a/translations/fr/8-Reinforcement/1-QLearning/README.md b/translations/fr/8-Reinforcement/1-QLearning/README.md
index b12aa18dc..9f431e0b2 100644
--- a/translations/fr/8-Reinforcement/1-QLearning/README.md
+++ b/translations/fr/8-Reinforcement/1-QLearning/README.md
@@ -1,11 +1,11 @@
# Introduction à l'apprentissage par renforcement et au Q-Learning
-
+
> Sketchnote par [Tomomi Imura](https://www.twitter.com/girlie_mac)
-L'apprentissage par renforcement repose sur trois concepts importants : l'agent, des états, et un ensemble d'actions par état. En exécutant une action dans un état donné, l'agent reçoit une récompense. Imaginez à nouveau le jeu vidéo Super Mario. Vous êtes Mario, vous êtes dans un niveau de jeu, debout près du bord d'une falaise. Au-dessus de vous se trouve une pièce. Vous, étant Mario, dans un niveau de jeu, à une position spécifique... c'est votre état. Faire un pas vers la droite (une action) vous ferait tomber dans le vide, ce qui vous donnerait un score numérique faible. Cependant, appuyer sur le bouton de saut vous permettrait de marquer un point et de rester en vie. C'est un résultat positif qui devrait vous attribuer un score numérique positif.
+L'apprentissage par renforcement implique trois concepts importants : l'agent, certains états et un ensemble d'actions par état. En exécutant une action dans un état spécifié, l'agent reçoit une récompense. Imaginez encore le jeu vidéo Super Mario. Vous êtes Mario, vous êtes dans un niveau de jeu, debout au bord d'une falaise. Au-dessus de vous se trouve une pièce. Vous, en tant que Mario, dans un niveau de jeu, à une position spécifique... c'est votre état. Faire un pas vers la droite (une action) vous ferait tomber du bord, ce qui vous donnerait un score numérique faible. Cependant, appuyer sur le bouton de saut vous permettrait de marquer un point et de rester en vie. C'est un résultat positif qui devrait vous attribuer un score numérique positif.
-En utilisant l'apprentissage par renforcement et un simulateur (le jeu), vous pouvez apprendre à jouer au jeu pour maximiser la récompense, c'est-à-dire rester en vie et marquer autant de points que possible.
+En utilisant l'apprentissage par renforcement et un simulateur (le jeu), vous pouvez apprendre à jouer afin de maximiser la récompense, qui est de rester en vie et de marquer autant de points que possible.
[](https://www.youtube.com/watch?v=lDq_en8RNOo)
@@ -13,35 +13,35 @@ En utilisant l'apprentissage par renforcement et un simulateur (le jeu), vous po
## [Quiz pré-lecture](https://ff-quizzes.netlify.app/en/ml/)
-## Prérequis et configuration
+## Prérequis et installation
-Dans cette leçon, nous allons expérimenter avec du code en Python. Vous devriez pouvoir exécuter le code du Jupyter Notebook de cette leçon, soit sur votre ordinateur, soit dans le cloud.
+Dans cette leçon, nous expérimenterons avec du code Python. Vous devriez pouvoir exécuter le code du Jupyter Notebook de cette leçon, soit sur votre ordinateur, soit dans le cloud.
Vous pouvez ouvrir [le notebook de la leçon](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) et suivre cette leçon pour construire.
-> **Note :** Si vous ouvrez ce code depuis le cloud, vous devez également récupérer le fichier [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), qui est utilisé dans le code du notebook. Ajoutez-le au même répertoire que le notebook.
+> **Note :** Si vous ouvrez ce code depuis le cloud, vous devez également récupérer le fichier [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), qui est utilisé dans le code du notebook. Ajoutez-le dans le même répertoire que le notebook.
## Introduction
-Dans cette leçon, nous allons explorer le monde de **[Pierre et le Loup](https://fr.wikipedia.org/wiki/Pierre_et_le_Loup)**, inspiré d'un conte musical du compositeur russe [Sergei Prokofiev](https://fr.wikipedia.org/wiki/Sergei_Prokofiev). Nous utiliserons **l'apprentissage par renforcement** pour permettre à Pierre d'explorer son environnement, de collecter de savoureuses pommes et d'éviter de rencontrer le loup.
+Dans cette leçon, nous allons explorer le monde de **[Pierre et le Loup](https://fr.wikipedia.org/wiki/Pierre_et_le_loup)**, inspiré d'un conte musical du compositeur russe [Sergei Prokofiev](https://fr.wikipedia.org/wiki/Sergei_Prokofiev). Nous utiliserons l'**apprentissage par renforcement** pour permettre à Pierre d'explorer son environnement, de collecter de délicieuses pommes et d'éviter le loup.
-**L'apprentissage par renforcement** (RL) est une technique d'apprentissage qui nous permet d'apprendre un comportement optimal d'un **agent** dans un **environnement** en réalisant de nombreuses expériences. Un agent dans cet environnement doit avoir un **objectif**, défini par une **fonction de récompense**.
+L'**apprentissage par renforcement** (RL) est une technique d'apprentissage qui nous permet d'apprendre un comportement optimal d'un **agent** dans un **environnement** en réalisant de nombreuses expériences. Un agent dans cet environnement doit avoir un **objectif**, défini par une **fonction de récompense**.
## L'environnement
-Pour simplifier, considérons le monde de Pierre comme un plateau carré de taille `width` x `height`, comme ceci :
+Pour simplifier, considérons que le monde de Pierre est une grille carrée de taille `largeur` x `hauteur`, comme ceci :
-
+
-Chaque case de ce plateau peut être :
+Chaque case de cette grille peut être :
* **sol**, sur lequel Pierre et d'autres créatures peuvent marcher.
* **eau**, sur laquelle il est évidemment impossible de marcher.
-* un **arbre** ou de l'**herbe**, un endroit où l'on peut se reposer.
+* un **arbre** ou de **l'herbe**, un endroit où vous pouvez vous reposer.
* une **pomme**, qui représente quelque chose que Pierre serait heureux de trouver pour se nourrir.
* un **loup**, qui est dangereux et doit être évité.
-Il existe un module Python séparé, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), qui contient le code pour travailler avec cet environnement. Comme ce code n'est pas essentiel pour comprendre nos concepts, nous allons importer le module et l'utiliser pour créer le plateau d'exemple (bloc de code 1) :
+Il existe un module Python séparé, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), qui contient le code pour travailler avec cet environnement. Comme ce code n'est pas important pour comprendre nos concepts, nous importerons le module et l'utiliserons pour créer la grille d'exemple (bloc de code 1) :
```python
from rlboard import *
@@ -56,26 +56,26 @@ Ce code devrait afficher une image de l'environnement similaire à celle ci-dess
## Actions et politique
-Dans notre exemple, l'objectif de Pierre serait de trouver une pomme tout en évitant le loup et les autres obstacles. Pour ce faire, il peut essentiellement se déplacer jusqu'à ce qu'il trouve une pomme.
+Dans notre exemple, l'objectif de Pierre serait de trouver une pomme tout en évitant le loup et d'autres obstacles. Pour cela, il peut essentiellement se déplacer jusqu'à trouver une pomme.
-Ainsi, à n'importe quelle position, il peut choisir entre l'une des actions suivantes : haut, bas, gauche et droite.
+Ainsi, à n'importe quelle position, il peut choisir entre les actions suivantes : haut, bas, gauche et droite.
-Nous définirons ces actions comme un dictionnaire et les mapperons à des paires de changements de coordonnées correspondants. Par exemple, se déplacer vers la droite (`R`) correspondrait à une paire `(1,0)`. (bloc de code 2) :
+Nous définirons ces actions sous forme d'un dictionnaire, et les mapperons à des paires correspondant aux changements de coordonnées. Par exemple, aller à droite (`R`) correspondrait à une paire `(1,0)`. (bloc de code 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()) }
```
-Pour résumer, la stratégie et l'objectif de ce scénario sont les suivants :
+En résumé, la stratégie et l'objectif de ce scénario sont les suivants :
-- **La stratégie**, de notre agent (Pierre) est définie par ce qu'on appelle une **politique**. Une politique est une fonction qui retourne l'action à effectuer dans un état donné. Dans notre cas, l'état du problème est représenté par le plateau, y compris la position actuelle du joueur.
+- **La stratégie**, de notre agent (Pierre) est définie par une **politique**. Une politique est une fonction qui retourne l'action à tout état donné. Dans notre cas, l'état du problème est représenté par la grille, incluant la position actuelle du joueur.
-- **L'objectif**, de l'apprentissage par renforcement est d'apprendre finalement une bonne politique qui nous permettra de résoudre le problème efficacement. Cependant, comme point de départ, considérons la politique la plus simple appelée **marche aléatoire**.
+- **L'objectif**, de l'apprentissage par renforcement est d'apprendre finalement une bonne politique qui nous permettra de résoudre le problème efficacement. Cependant, comme référence, considérons la politique la plus simple appelée **marche aléatoire**.
## Marche aléatoire
-Résolvons d'abord notre problème en implémentant une stratégie de marche aléatoire. Avec la marche aléatoire, nous choisirons aléatoirement la prochaine action parmi les actions autorisées, jusqu'à ce que nous atteignions la pomme (bloc de code 3).
+Résolvons d'abord notre problème en implémentant une stratégie de marche aléatoire. Avec la marche aléatoire, nous choisirons de manière aléatoire la prochaine action parmi celles autorisées, jusqu'à atteindre la pomme (bloc de code 3).
1. Implémentez la marche aléatoire avec le code ci-dessous :
@@ -84,22 +84,22 @@ Résolvons d'abord notre problème en implémentant une stratégie de marche al
return random.choice(list(actions))
def walk(m,policy,start_position=None):
- n = 0 # number of steps
- # set initial position
+ n = 0 # nombre de pas
+ # définir la position initiale
if start_position:
m.human = start_position
else:
m.random_start()
while True:
if m.at() == Board.Cell.apple:
- return n # success!
+ return n # succès !
if m.at() in [Board.Cell.wolf, Board.Cell.water]:
- return -1 # eaten by wolf or drowned
+ return -1 # mangé par un loup ou noyé
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
+ m.move(a) # faire le déplacement réel
break
n+=1
@@ -108,7 +108,7 @@ Résolvons d'abord notre problème en implémentant une stratégie de marche al
L'appel à `walk` devrait retourner la longueur du chemin correspondant, qui peut varier d'une exécution à l'autre.
-1. Exécutez l'expérience de marche plusieurs fois (disons, 100), et imprimez les statistiques résultantes (bloc de code 4) :
+1. Exécutez l'expérience de marche un certain nombre de fois (disons 100), et affichez les statistiques résultantes (bloc de code 4) :
```python
def print_statistics(policy):
@@ -125,17 +125,17 @@ Résolvons d'abord notre problème en implémentant une stratégie de marche al
print_statistics(random_policy)
```
- Notez que la longueur moyenne d'un chemin est d'environ 30-40 étapes, ce qui est assez élevé, étant donné que la distance moyenne jusqu'à la pomme la plus proche est d'environ 5-6 étapes.
+ Notez que la longueur moyenne d'un chemin est d'environ 30-40 pas, ce qui est assez long, étant donné que la distance moyenne à la pomme la plus proche est d'environ 5-6 pas.
- Vous pouvez également voir à quoi ressemble le mouvement de Pierre pendant la marche aléatoire :
+ Vous pouvez aussi voir à quoi ressemble le déplacement de Pierre durant la marche aléatoire :

## Fonction de récompense
-Pour rendre notre politique plus intelligente, nous devons comprendre quels mouvements sont "meilleurs" que d'autres. Pour ce faire, nous devons définir notre objectif.
+Pour rendre notre politique plus intelligente, nous devons comprendre quels mouvements sont « meilleurs » que d’autres. Pour cela, nous devons définir notre objectif.
-L'objectif peut être défini en termes de **fonction de récompense**, qui retournera une valeur de score pour chaque état. Plus le nombre est élevé, meilleure est la récompense. (bloc de code 5)
+L'objectif peut être défini en termes de **fonction de récompense**, qui retournera une valeur de score pour chaque état. Plus ce nombre est élevé, meilleure est la fonction de récompense. (bloc de code 5)
```python
move_reward = -0.1
@@ -154,39 +154,115 @@ def reward(m,pos=None):
return move_reward
```
-Une chose intéressante à propos des fonctions de récompense est que dans la plupart des cas, *nous ne recevons une récompense substantielle qu'à la fin du jeu*. Cela signifie que notre algorithme doit d'une certaine manière se souvenir des "bons" pas qui mènent à une récompense positive à la fin, et augmenter leur importance. De même, tous les mouvements qui mènent à de mauvais résultats doivent être découragés.
+Une chose intéressante au sujet des fonctions de récompense est que dans la plupart des cas, *une récompense substantielle ne nous est donnée qu'à la fin du jeu*. Cela signifie que notre algorithme doit d'une certaine façon mémoriser les « bonnes » étapes qui mènent à une récompense positive à la fin, et augmenter leur importance. De même, tous les mouvements qui mènent à de mauvais résultats doivent être découragés.
## Q-Learning
-L'algorithme que nous allons discuter ici s'appelle **Q-Learning**. Dans cet algorithme, la politique est définie par une fonction (ou une structure de données) appelée **Q-Table**. Elle enregistre la "qualité" de chaque action dans un état donné.
+Un algorithme que nous allons discuter ici s'appelle **Q-Learning**. Dans cet algorithme, la politique est définie par une fonction (ou une structure de données) appelée **Q-Table**. Elle enregistre la "bonté" de chacune des actions dans un état donné.
-On l'appelle une Q-Table car il est souvent pratique de la représenter sous forme de tableau ou de tableau multidimensionnel. Étant donné que notre plateau a des dimensions `width` x `height`, nous pouvons représenter la Q-Table en utilisant un tableau numpy de forme `width` x `height` x `len(actions)` : (bloc de code 6)
+Elle s'appelle Q-Table car il est souvent pratique de la représenter sous la forme d'un tableau, ou d'un tableau multidimensionnel. Puisque notre grille a des dimensions `largeur` x `hauteur`, nous pouvons représenter la Q-Table en utilisant un tableau numpy de forme `largeur` x `hauteur` x `len(actions)` : (bloc de code 6)
```python
Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions)
```
-Notez que nous initialisons toutes les valeurs de la Q-Table avec une valeur égale, dans notre cas - 0.25. Cela correspond à la politique de "marche aléatoire", car tous les mouvements dans chaque état sont également bons. Nous pouvons passer la Q-Table à la fonction `plot` afin de visualiser le tableau sur le plateau : `m.plot(Q)`.
+Notez que nous initialisons toutes les valeurs de la Q-Table avec une valeur égale, dans notre cas - 0,25. Cela correspond à la politique de la « marche aléatoire », car tous les mouvements à chaque état sont également bons. Nous pouvons passer la Q-Table à la fonction `plot` afin de visualiser le tableau sur la grille : `m.plot(Q)`.
-
+
-Au centre de chaque case, il y a une "flèche" qui indique la direction préférée du mouvement. Étant donné que toutes les directions sont égales, un point est affiché.
+Au centre de chaque case, il y a une « flèche » qui indique la direction préférée du mouvement. Comme toutes les directions sont égales, un point est affiché.
-Nous devons maintenant exécuter la simulation, explorer notre environnement, et apprendre une meilleure distribution des valeurs de la Q-Table, ce qui nous permettra de trouver le chemin vers la pomme beaucoup plus rapidement.
+Maintenant, nous devons exécuter la simulation, explorer notre environnement, et apprendre une meilleure distribution des valeurs de la Q-Table, ce qui nous permettra de trouver le chemin vers la pomme beaucoup plus rapidement.
-## Essence du Q-Learning : Équation de Bellman
+## L'essence du Q-Learning : l'équation de Bellman
-Une fois que nous commençons à nous déplacer, chaque action aura une récompense correspondante, c'est-à-dire que nous pourrions théoriquement sélectionner la prochaine action en fonction de la récompense immédiate la plus élevée. Cependant, dans la plupart des états, le mouvement n'atteindra pas notre objectif de trouver la pomme, et nous ne pouvons donc pas immédiatement décider quelle direction est meilleure.
+Une fois que nous commençons à bouger, chaque action aura une récompense correspondante, c’est-à-dire que nous pouvons théoriquement sélectionner la prochaine action selon la meilleure récompense immédiate. Cependant, dans la plupart des états, le mouvement n'atteindra pas notre objectif d'atteindre la pomme, et nous ne pouvons donc pas immédiatement décider quelle direction est meilleure.
-> Rappelez-vous que ce n'est pas le résultat immédiat qui compte, mais plutôt le résultat final, que nous obtiendrons à la fin de la simulation.
+> Souvenez-vous que ce n’est pas le résultat immédiat qui compte, mais plutôt le résultat final que nous obtiendrons à la fin de la simulation.
-Pour tenir compte de cette récompense différée, nous devons utiliser les principes de la **[programmation dynamique](https://fr.wikipedia.org/wiki/Programmation_dynamique)**, qui nous permettent de réfléchir à notre problème de manière récursive.
+Pour prendre en compte cette récompense différée, nous devons utiliser les principes de **[programmation dynamique](https://fr.wikipedia.org/wiki/Programmation_dynamique)**, qui nous permettent de penser à notre problème de manière récursive.
-Supposons que nous sommes maintenant dans l'état *s*, et que nous voulons passer à l'état suivant *s'*. En faisant cela, nous recevrons la récompense immédiate *r(s,a)*, définie par la fonction de récompense, plus une récompense future. Si nous supposons que notre Q-Table reflète correctement l'"attractivité" de chaque action, alors dans l'état *s'*, nous choisirons une action *a* qui correspond à la valeur maximale de *Q(s',a')*. Ainsi, la meilleure récompense future possible que nous pourrions obtenir dans l'état *s* sera définie comme `max`
+Supposons que nous soyons maintenant à l'état *s*, et que nous voulons aller à l'état suivant *s'*. En faisant cela, nous recevrons la récompense immédiate *r(s,a)*, définie par la fonction de récompense, plus une récompense future. Si nous supposons que notre Q-Table reflète correctement « l'attractivité » de chaque action, alors à l'état *s'* nous choisirons une action *a* correspondant à la valeur maximale de *Q(s',a')*. Ainsi, la meilleure récompense future possible à l'état *s* sera définie comme `max`a'*Q(s',a')* (le maximum ici est calculé sur toutes les actions possibles *a'* à l'état *s'*).
+
+Cela donne la **formule de Bellman** pour calculer la valeur de la Q-Table à l'état *s*, pour une action donnée *a* :
+
+
+
+Ici γ est le facteur de **décote** qui détermine à quel point vous devriez préférer la récompense actuelle par rapport à la récompense future et inversement.
+
+## Algorithme d'apprentissage
+
+Avec l'équation ci-dessus, nous pouvons maintenant écrire un pseudo-code pour notre algorithme d'apprentissage :
+
+* Initialiser la Q-Table Q avec des nombres égaux pour tous les états et actions
+* Fixer le taux d'apprentissage α ← 1
+* Répéter la simulation plusieurs fois
+ 1. Commencer à une position aléatoire
+ 1. Répéter
+ 1. Sélectionner une action *a* à l'état *s*
+ 2. Effectuer l'action en allant à un nouvel état *s'*
+ 3. Si la condition de fin de jeu est atteinte, ou si la récompense totale est trop faible - quitter la simulation
+ 4. Calculer la récompense *r* à ce nouvel état
+ 5. Mettre à jour la fonction Q selon l'équation de Bellman : *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ maxa'Q(s',a'))*
+ 6. *s* ← *s'*
+ 7. Mettre à jour la récompense totale et diminuer α.
+
+## Exploiter vs. explorer
+
+Dans l'algorithme ci-dessus, nous n'avons pas précisé comment choisir exactement une action à l'étape 2.1. Si nous choisissons l'action au hasard, nous **explorerons** aléatoirement l'environnement, et il est assez probable que nous mourions fréquemment ainsi que d’explorer des zones où nous n’irions pas normalement. Une autre approche serait d’**exploiter** les valeurs de la Q-Table que nous connaissons déjà, en choisissant ainsi la meilleure action (avec la plus haute valeur Q-Table) à l’état *s*. Cela, cependant, nous empêchera d’explorer d’autres états, et il est probable que nous ne trouvions pas la solution optimale.
+
+Ainsi, la meilleure approche est de trouver un équilibre entre exploration et exploitation. Cela peut se faire en choisissant l'action à l'état *s* avec des probabilités proportionnelles aux valeurs dans la Q-Table. Au début, lorsque toutes les valeurs de la Q-Table sont identiques, cela correspondrait à une sélection aléatoire, mais à mesure que nous en apprenons davantage sur notre environnement, nous serions plus susceptibles de suivre la route optimale tout en permettant à l'agent de choisir parfois un chemin inexploré.
+
+## Implémentation Python
+
+Nous sommes maintenant prêts à implémenter l'algorithme d'apprentissage. Avant cela, nous avons également besoin d'une fonction qui convertira des nombres arbitraires dans la Q-Table en un vecteur de probabilités pour les actions correspondantes.
+
+1. Créez une fonction `probs()` :
+
+ ```python
+ def probs(v,eps=1e-4):
+ v = v-v.min()+eps
+ v = v/v.sum()
+ return v
+ ```
+
+ Nous ajoutons quelques `eps` au vecteur original afin d'éviter une division par 0 dans le cas initial, lorsque tous les composants du vecteur sont identiques.
+
+Exécutez l'algorithme d'apprentissage sur 5000 expériences, également appelées **époques** : (bloc de code 8)
+```python
+ for epoch in range(5000):
+
+ # Choisir le point initial
+ m.random_start()
+
+ # Commencer à voyager
+ n=0
+ cum_reward = 0
+ while True:
+ x,y = m.human
+ v = probs(Q[x,y])
+ a = random.choices(list(actions),weights=v)[0]
+ dpos = actions[a]
+ m.move(dpos,check_correctness=False) # nous permettons au joueur de sortir du plateau, ce qui termine l'épisode
+ r = reward(m)
+ cum_reward += r
+ if r==end_reward or cum_reward < -1000:
+ lpath.append(n)
+ break
+ alpha = np.exp(-n / 10e5)
+ gamma = 0.5
+ ai = action_idx[a]
+ Q[x,y,ai] = (1 - alpha) * Q[x,y,ai] + alpha * (r + gamma * Q[x+dpos[0], y+dpos[1]].max())
+ n+=1
+```
+
+Après avoir exécuté cet algorithme, la Q-Table devrait être mise à jour avec des valeurs qui définissent l'attractivité des différentes actions à chaque étape. Nous pouvons essayer de visualiser la Q-Table en traçant un vecteur à chaque case qui pointera dans la direction souhaitée du mouvement. Par simplicité, nous dessinons un petit cercle au lieu d'une pointe de flèche.
+
+
## Vérification de la politique
-Étant donné que la Q-Table liste l'"attractivité" de chaque action dans chaque état, il est assez facile de l'utiliser pour définir une navigation efficace dans notre monde. Dans le cas le plus simple, nous pouvons sélectionner l'action correspondant à la valeur la plus élevée de la Q-Table : (bloc de code 9)
+Puisque la Q-Table liste l’« attractivité » de chaque action à chaque état, il est assez facile de l’utiliser pour définir une navigation efficace dans notre monde. Dans le cas le plus simple, nous pouvons sélectionner l’action correspondant à la valeur maximale de la Q-Table : (bloc de code 9)
```python
def qpolicy_strict(m):
@@ -198,17 +274,18 @@ def qpolicy_strict(m):
walk(m,qpolicy_strict)
```
-> Si vous essayez le code ci-dessus plusieurs fois, vous remarquerez peut-être qu'il "bloque" parfois, et vous devez appuyer sur le bouton STOP dans le notebook pour l'interrompre. Cela se produit parce qu'il peut y avoir des situations où deux états "pointent" l'un vers l'autre en termes de valeur Q optimale, auquel cas l'agent finit par se déplacer indéfiniment entre ces états.
+
+> Si vous essayez le code ci-dessus plusieurs fois, vous remarquerez peut-être que parfois il « se bloque », et vous devez appuyer sur le bouton STOP dans le notebook pour l’interrompre. Cela arrive parce qu’il peut y avoir des situations où deux états se « pointent » mutuellement en termes de valeur Q optimale, auquel cas l’agent finit par se déplacer indéfiniment entre ces états.
## 🚀Défi
-> **Tâche 1 :** Modifiez la fonction `walk` pour limiter la longueur maximale du chemin à un certain nombre de pas (par exemple, 100), et observez le code ci-dessus retourner cette valeur de temps en temps.
+> **Tâche 1 :** Modifiez la fonction `walk` pour limiter la longueur maximale du chemin à un certain nombre de pas (disons, 100), et observez que le code ci-dessus retourne cette valeur de temps en temps.
-> **Tâche 2 :** Modifiez la fonction `walk` afin qu'elle ne retourne pas aux endroits où elle est déjà passée auparavant. Cela empêchera `walk` de boucler, cependant, l'agent peut toujours se retrouver "piégé" dans un endroit dont il ne peut pas s'échapper.
+> **Tâche 2 :** Modifiez la fonction `walk` pour qu’elle ne retourne pas aux endroits où elle est déjà passée auparavant. Cela empêchera `walk` de boucler, cependant, l’agent peut toujours se retrouver « piégé » dans un endroit dont il ne peut pas s’échapper.
## Navigation
-Une meilleure politique de navigation serait celle que nous avons utilisée pendant l'entraînement, qui combine exploitation et exploration. Dans cette politique, nous sélectionnerons chaque action avec une certaine probabilité, proportionnelle aux valeurs dans la Q-Table. Cette stratégie peut encore entraîner l'agent à retourner à une position qu'il a déjà explorée, mais, comme vous pouvez le voir dans le code ci-dessous, elle aboutit à un chemin moyen très court vers l'emplacement souhaité (rappelez-vous que `print_statistics` exécute la simulation 100 fois) : (bloc de code 10)
+Une meilleure politique de navigation serait celle que nous avons utilisée pendant l’entraînement, qui combine exploitation et exploration. Dans cette politique, nous sélectionnerons chaque action avec une certaine probabilité, proportionnelle aux valeurs dans la Q-Table. Cette stratégie peut encore amener l’agent à retourner à une position qu’il a déjà explorée, mais, comme vous pouvez le voir dans le code ci-dessous, cela aboutit à un chemin moyen très court vers la localisation souhaitée (rappelez-vous que `print_statistics` exécute la simulation 100 fois) : (bloc de code 10)
```python
def qpolicy(m):
@@ -220,28 +297,32 @@ def qpolicy(m):
print_statistics(qpolicy)
```
-Après avoir exécuté ce code, vous devriez obtenir une longueur moyenne de chemin beaucoup plus petite qu'auparavant, dans une plage de 3 à 6.
+Après avoir exécuté ce code, vous devriez obtenir une longueur moyenne de chemin beaucoup plus petite qu’auparavant, dans la plage de 3 à 6.
+
+## Étudier le processus d’apprentissage
-## Examiner le processus d'apprentissage
+Comme nous l’avons mentionné, le processus d’apprentissage est un équilibre entre exploration et exploitation des connaissances acquises sur la structure de l’espace problème. Nous avons vu que les résultats de l’apprentissage (la capacité à aider un agent à trouver un chemin court vers l’objectif) se sont améliorés, mais il est aussi intéressant d’observer comment la longueur moyenne du chemin se comporte pendant le processus d’apprentissage :
-Comme nous l'avons mentionné, le processus d'apprentissage est un équilibre entre l'exploration et l'exploitation des connaissances acquises sur la structure de l'espace problème. Nous avons vu que les résultats de l'apprentissage (la capacité à aider un agent à trouver un chemin court vers l'objectif) se sont améliorés, mais il est également intéressant d'observer comment la longueur moyenne du chemin évolue pendant le processus d'apprentissage :
+
-Les apprentissages peuvent être résumés comme suit :
+Les apprentissages peuvent être résumés ainsi :
-- **La longueur moyenne du chemin augmente**. Ce que nous observons ici, c'est qu'au début, la longueur moyenne du chemin augmente. Cela est probablement dû au fait que lorsque nous ne savons rien de l'environnement, nous sommes susceptibles de nous retrouver piégés dans des états défavorables, comme l'eau ou le loup. À mesure que nous apprenons davantage et commençons à utiliser ces connaissances, nous pouvons explorer l'environnement plus longtemps, mais nous ne savons toujours pas très bien où se trouvent les pommes.
+- **La longueur moyenne du chemin augmente**. Ce que l’on voit ici est qu’au début, la longueur moyenne du chemin augmente. Cela est probablement dû au fait que lorsque nous ne connaissons rien de l’environnement, il est probable que nous soyons piégés dans de mauvais états, comme dans l’eau ou près du loup. À mesure que nous apprenons et commençons à utiliser cette connaissance, nous pouvons explorer l’environnement plus longtemps, mais nous ne savons toujours pas très bien où se trouvent les pommes.
-- **La longueur du chemin diminue à mesure que nous apprenons davantage**. Une fois que nous avons suffisamment appris, il devient plus facile pour l'agent d'atteindre l'objectif, et la longueur du chemin commence à diminuer. Cependant, nous restons ouverts à l'exploration, ce qui nous amène souvent à nous éloigner du meilleur chemin et à explorer de nouvelles options, rendant le chemin plus long que l'optimal.
+- **La longueur du chemin diminue à mesure que nous apprenons**. Une fois que nous avons suffisamment appris, il devient plus facile pour l’agent d’atteindre l’objectif, et la longueur du chemin commence à diminuer. Cependant, nous restons ouverts à l’exploration, donc nous nous écartons souvent du meilleur chemin et explorons de nouvelles options, ce qui rend le chemin plus long que l’optimal.
-- **La longueur augmente brusquement**. Ce que nous observons également sur ce graphique, c'est qu'à un moment donné, la longueur a augmenté brusquement. Cela indique la nature stochastique du processus, et qu'à un moment donné, nous pouvons "altérer" les coefficients de la Q-Table en les remplaçant par de nouvelles valeurs. Cela devrait idéalement être minimisé en diminuant le taux d'apprentissage (par exemple, vers la fin de l'entraînement, nous ajustons les valeurs de la Q-Table uniquement par une petite valeur).
+- **La longueur augmente brusquement**. Ce que nous observons aussi sur ce graphique est qu’à un moment donné, la longueur a augmenté brusquement. Cela indique la nature stochastique du processus et que nous pouvons à un moment donné « altérer » les coefficients de la Q-Table en les écrasant avec de nouvelles valeurs. Idéalement, cela devrait être minimisé en diminuant le taux d’apprentissage (par exemple, vers la fin de l’entraînement, nous ajustons les valeurs de la Q-Table par une petite valeur).
-Dans l'ensemble, il est important de se rappeler que le succès et la qualité du processus d'apprentissage dépendent significativement des paramètres, tels que le taux d'apprentissage, la décroissance du taux d'apprentissage et le facteur de réduction. Ceux-ci sont souvent appelés **hyperparamètres**, pour les distinguer des **paramètres**, que nous optimisons pendant l'entraînement (par exemple, les coefficients de la Q-Table). Le processus de recherche des meilleures valeurs d'hyperparamètres est appelé **optimisation des hyperparamètres**, et il mérite un sujet à part entière.
+Globalement, il est important de se rappeler que le succès et la qualité du processus d’apprentissage dépendent significativement des paramètres, tels que le taux d’apprentissage, la décroissance du taux d’apprentissage, et le facteur de remise. Ceux-ci sont souvent appelés **hyperparamètres**, pour les distinguer des **paramètres**, que nous optimisons pendant l’entraînement (par exemple, les coefficients de la Q-Table). Le processus de recherche des meilleures valeurs d’hyperparamètres s’appelle **optimisation des hyperparamètres**, et mérite un sujet à part entière.
## [Quiz post-conférence](https://ff-quizzes.netlify.app/en/ml/)
-## Devoir
+## Devoir
[Un monde plus réaliste](assignment.md)
---
-**Avertissement** :
-Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
\ No newline at end of file
+
+**Avertissement** :
+Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforçions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source faisant autorité. Pour les informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous ne saurions être tenus responsables des malentendus ou erreurs d'interprétation découlant de l'utilisation de cette traduction.
+
\ No newline at end of file
diff --git a/translations/fr/8-Reinforcement/2-Gym/README.md b/translations/fr/8-Reinforcement/2-Gym/README.md
index 28b27c603..0701cb821 100644
--- a/translations/fr/8-Reinforcement/2-Gym/README.md
+++ b/translations/fr/8-Reinforcement/2-Gym/README.md
@@ -1,14 +1,34 @@
+# Patinage CartPole
+
+Le problème que nous avons résolu dans la leçon précédente peut sembler être un problème de jouet, pas vraiment applicable aux scénarios de la vie réelle. Ce n'est pas le cas, car de nombreux problèmes réels partagent également ce scénario - y compris jouer aux échecs ou au Go. Ils sont similaires, car nous avons aussi un plateau avec des règles données et un **état discret**.
+
+## [Quiz avant le cours](https://ff-quizzes.netlify.app/en/ml/)
+
+## Introduction
+
+Dans cette leçon, nous appliquerons les mêmes principes du Q-Learning à un problème avec un **état continu**, c’est-à-dire un état donné par un ou plusieurs nombres réels. Nous allons traiter le problème suivant :
+
+> **Problème** : Si Peter veut échapper au loup, il doit pouvoir se déplacer plus vite. Nous verrons comment Peter peut apprendre à patiner, en particulier, à garder l’équilibre, en utilisant le Q-Learning.
+
+
+
+> Peter et ses amis font preuve de créativité pour échapper au loup ! Image par [Jen Looper](https://twitter.com/jenlooper)
+
+Nous utiliserons une version simplifiée de l’équilibre connue sous le nom de problème **CartPole**. Dans le monde du cartpole, nous avons un curseur horizontal qui peut se déplacer à gauche ou à droite, et l’objectif est d’équilibrer un poteau vertical au sommet du curseur.
+
+
+
## Prérequis
-Dans cette leçon, nous utiliserons une bibliothèque appelée **OpenAI Gym** pour simuler différents **environnements**. Vous pouvez exécuter le code de cette leçon localement (par exemple, depuis Visual Studio Code), auquel cas la simulation s'ouvrira dans une nouvelle fenêtre. Si vous exécutez le code en ligne, vous devrez peut-être apporter quelques ajustements au code, comme décrit [ici](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7).
+Dans cette leçon, nous utiliserons une bibliothèque appelée **OpenAI Gym** pour simuler différents **environnements**. Vous pouvez exécuter le code de cette leçon localement (par exemple depuis Visual Studio Code), dans ce cas la simulation s’ouvrira dans une nouvelle fenêtre. En exécutant le code en ligne, vous devrez peut-être effectuer quelques ajustements du code, comme décrit [ici](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7).
## OpenAI Gym
-Dans la leçon précédente, les règles du jeu et l'état étaient définis par la classe `Board` que nous avons créée nous-mêmes. Ici, nous utiliserons un **environnement de simulation** spécial, qui simulera la physique derrière le balancement du poteau. L'un des environnements de simulation les plus populaires pour entraîner des algorithmes d'apprentissage par renforcement est appelé [Gym](https://gym.openai.com/), maintenu par [OpenAI](https://openai.com/). Grâce à ce gym, nous pouvons créer différents **environnements**, allant de la simulation de CartPole aux jeux Atari.
+Dans la leçon précédente, les règles du jeu et l’état étaient donnés par la classe `Board` que nous avions définie nous-mêmes. Ici, nous utiliserons un **environnement de simulation** spécial, qui simulera la physique derrière le poteau en équilibre. Un des environnements de simulation les plus populaires pour l’entraînement des algorithmes d’apprentissage par renforcement s’appelle un [Gym](https://gym.openai.com/), maintenu par [OpenAI](https://openai.com/). En utilisant ce gym, nous pouvons créer différents **environnements** allant d’une simulation de cartpole à des jeux Atari.
-> **Note** : Vous pouvez consulter les autres environnements disponibles dans OpenAI Gym [ici](https://gym.openai.com/envs/#classic_control).
+> **Note** : Vous pouvez voir d’autres environnements disponibles sur OpenAI Gym [ici](https://gym.openai.com/envs/#classic_control).
-Tout d'abord, installons le gym et importons les bibliothèques nécessaires (bloc de code 1) :
+Tout d’abord, installons le gym et importons les bibliothèques requises (bloc de code 1) :
```python
import sys
@@ -20,13 +40,13 @@ import numpy as np
import random
```
-## Exercice - initialiser un environnement CartPole
+## Exercice - initialiser un environnement cartpole
-Pour travailler sur le problème d'équilibre du CartPole, nous devons initialiser l'environnement correspondant. Chaque environnement est associé à :
+Pour travailler avec un problème d’équilibre cartpole, nous devons initialiser l’environnement correspondant. Chaque environnement est associé à un :
-- **Espace d'observation** qui définit la structure des informations que nous recevons de l'environnement. Pour le problème CartPole, nous recevons la position du poteau, la vitesse et quelques autres valeurs.
+- **espace d’observation** qui définit la structure des informations que nous recevons de l’environnement. Pour le problème cartpole, nous recevons la position du poteau, la vitesse et d’autres valeurs.
-- **Espace d'action** qui définit les actions possibles. Dans notre cas, l'espace d'action est discret et se compose de deux actions : **gauche** et **droite**. (bloc de code 2)
+- **espace d’action** qui définit les actions possibles. Dans notre cas, l’espace d’actions est discret et se compose de deux actions - **gauche** et **droite**. (bloc de code 2)
1. Pour initialiser, tapez le code suivant :
@@ -37,11 +57,11 @@ Pour travailler sur le problème d'équilibre du CartPole, nous devons initialis
print(env.action_space.sample())
```
-Pour voir comment fonctionne l'environnement, exécutons une courte simulation de 100 étapes. À chaque étape, nous fournissons une action à effectuer - dans cette simulation, nous sélectionnons simplement une action aléatoire dans `action_space`.
+Pour voir comment l’environnement fonctionne, exécutons une courte simulation sur 100 étapes. À chaque étape, nous fournissons une des actions à prendre – dans cette simulation nous sélectionnons simplement une action au hasard parmi `action_space`.
-1. Exécutez le code ci-dessous et observez le résultat.
+1. Exécutez le code ci-dessous et voyez ce que cela donne.
- ✅ N'oubliez pas qu'il est préférable d'exécuter ce code sur une installation locale de Python ! (bloc de code 3)
+ ✅ N’oubliez pas qu’il est préférable d’exécuter ce code sur une installation Python locale ! (bloc de code 3)
```python
env.reset()
@@ -54,9 +74,9 @@ Pour voir comment fonctionne l'environnement, exécutons une courte simulation d
Vous devriez voir quelque chose de similaire à cette image :
- 
+ 
-1. Pendant la simulation, nous devons obtenir des observations pour décider comment agir. En fait, la fonction step retourne les observations actuelles, une fonction de récompense et un indicateur `done` qui indique s'il est pertinent de continuer la simulation ou non : (bloc de code 4)
+1. Pendant la simulation, nous devons obtenir des observations pour décider comment agir. En fait, la fonction step renvoie les observations actuelles, une fonction de récompense, et le drapeau done qui indique s’il est judicieux de continuer la simulation ou non : (bloc de code 4)
```python
env.reset()
@@ -69,7 +89,7 @@ Pour voir comment fonctionne l'environnement, exécutons une courte simulation d
env.close()
```
- Vous obtiendrez quelque chose comme ceci dans la sortie du notebook :
+ Vous devriez voir quelque chose comme ceci dans la sortie du notebook :
```text
[ 0.03403272 -0.24301182 0.02669811 0.2895829 ] -> 1.0
@@ -82,43 +102,43 @@ Pour voir comment fonctionne l'environnement, exécutons une courte simulation d
[ 0.17617249 0.35602306 -0.21873684 -0.90998894] -> 1.0
```
- Le vecteur d'observation retourné à chaque étape de la simulation contient les valeurs suivantes :
+ Le vecteur d’observations renvoyé à chaque étape de la simulation contient les valeurs suivantes :
- Position du chariot
- Vitesse du chariot
- Angle du poteau
- - Taux de rotation du poteau
+ - Vitesse de rotation du poteau
-1. Obtenez les valeurs minimales et maximales de ces nombres : (bloc de code 5)
+1. Obtenez les valeurs minimum et maximum de ces nombres : (bloc de code 5)
```python
print(env.observation_space.low)
print(env.observation_space.high)
```
- Vous remarquerez également que la valeur de récompense à chaque étape de la simulation est toujours 1. Cela s'explique par le fait que notre objectif est de survivre le plus longtemps possible, c'est-à-dire de maintenir le poteau dans une position raisonnablement verticale pendant la période la plus longue possible.
+ Vous remarquerez aussi que la valeur de la récompense à chaque étape de la simulation est toujours 1. Cela est dû au fait que notre objectif est de survivre aussi longtemps que possible, c’est-à-dire garder le poteau dans une position raisonnablement verticale le plus longtemps possible.
- ✅ En fait, la simulation CartPole est considérée comme résolue si nous parvenons à obtenir une récompense moyenne de 195 sur 100 essais consécutifs.
+ ✅ En fait, la simulation CartPole est considérée comme résolue si nous obtenons une récompense moyenne de 195 sur 100 essais consécutifs.
-## Discrétisation de l'état
+## Discrétisation de l’état
-Dans le Q-Learning, nous devons construire une Q-Table qui définit quoi faire à chaque état. Pour ce faire, l'état doit être **discret**, plus précisément, il doit contenir un nombre fini de valeurs discrètes. Ainsi, nous devons d'une manière ou d'une autre **discrétiser** nos observations, en les mappant à un ensemble fini d'états.
+En Q-Learning, nous devons construire une Q-Table qui définit quoi faire à chaque état. Pour cela, l’état doit être **discret**, plus précisément, il doit contenir un nombre fini de valeurs discrètes. Ainsi, nous devons d’une certaine manière **discrétiser** nos observations, en les mappant à un ensemble fini d’états.
-Il existe plusieurs façons de procéder :
+Il y a plusieurs façons de faire cela :
-- **Diviser en intervalles**. Si nous connaissons l'intervalle d'une certaine valeur, nous pouvons diviser cet intervalle en un certain nombre d'**intervalles**, puis remplacer la valeur par le numéro de l'intervalle auquel elle appartient. Cela peut être fait en utilisant la méthode [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html) de numpy. Dans ce cas, nous connaîtrons précisément la taille de l'état, car elle dépendra du nombre d'intervalles que nous sélectionnons pour la digitalisation.
+- **Diviser en bacs**. Si nous connaissons l’intervalle d’une certaine valeur, nous pouvons diviser cet intervalle en un nombre de **bacs**, puis remplacer la valeur par le numéro du bac auquel elle appartient. Cela peut être fait à l’aide de la méthode numpy [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html). Dans ce cas, nous connaîtrons précisément la taille de l’état, car elle dépendra du nombre de bacs sélectionné pour la digitalisation.
+
+✅ Nous pouvons utiliser une interpolation linéaire pour ramener les valeurs à un intervalle fini (disons, de -20 à 20), puis convertir les nombres en entiers en les arrondissant. Cela nous donne un peu moins de contrôle sur la taille de l’état, surtout si nous ne connaissons pas les plages exactes des valeurs d’entrée. Par exemple, dans notre cas, 2 des 4 valeurs n’ont pas de bornes supérieures/inférieures, ce qui peut conduire à un nombre infini d’états.
-✅ Nous pouvons utiliser l'interpolation linéaire pour ramener les valeurs à un intervalle fini (par exemple, de -20 à 20), puis convertir les nombres en entiers en les arrondissant. Cela nous donne un peu moins de contrôle sur la taille de l'état, surtout si nous ne connaissons pas les plages exactes des valeurs d'entrée. Par exemple, dans notre cas, 2 des 4 valeurs n'ont pas de limites supérieures/inférieures, ce qui peut entraîner un nombre infini d'états.
+Dans notre exemple, nous allons choisir la deuxième approche. Comme vous le remarquerez plus tard, malgré les bornes supérieures/inférieures indéfinies, ces valeurs prennent rarement des valeurs en dehors de certains intervalles finis, donc ces états avec des valeurs extrêmes seront très rares.
-Dans notre exemple, nous opterons pour la deuxième approche. Comme vous le remarquerez plus tard, malgré l'absence de limites supérieures/inférieures, ces valeurs prennent rarement des valeurs en dehors de certains intervalles finis, donc ces états avec des valeurs extrêmes seront très rares.
-
-1. Voici la fonction qui prendra l'observation de notre modèle et produira un tuple de 4 valeurs entières : (bloc de code 6)
+1. Voici la fonction qui prendra l’observation de notre modèle et produira un tuple de 4 valeurs entières : (bloc de code 6)
```python
def discretize(x):
return tuple((x/np.array([0.25, 0.25, 0.01, 0.1])).astype(np.int))
```
-1. Explorons également une autre méthode de discrétisation utilisant des intervalles : (bloc de code 7)
+1. Explorons aussi une autre méthode de discrétisation utilisant des bacs : (bloc de code 7)
```python
def create_bins(i,num):
@@ -126,17 +146,17 @@ Dans notre exemple, nous opterons pour la deuxième approche. Comme vous le rema
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
+ ints = [(-5,5),(-2,2),(-0.5,0.5),(-2,2)] # intervalles de valeurs pour chaque paramètre
+ nbins = [20,20,10,10] # nombre de classes pour chaque paramètre
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. Exécutons maintenant une courte simulation et observons ces valeurs discrètes de l'environnement. N'hésitez pas à essayer `discretize` et `discretize_bins` et à voir s'il y a une différence.
+1. Faisons maintenant une courte simulation et observons ces valeurs d’environnement discrètes. N’hésitez pas à essayer `discretize` et `discretize_bins` et à voir s’il y a une différence.
- ✅ `discretize_bins` retourne le numéro de l'intervalle, qui commence à 0. Ainsi, pour les valeurs de la variable d'entrée autour de 0, il retourne le numéro du milieu de l'intervalle (10). Dans `discretize`, nous ne nous sommes pas souciés de la plage des valeurs de sortie, leur permettant d'être négatives, donc les valeurs d'état ne sont pas décalées, et 0 correspond à 0. (bloc de code 8)
+ ✅ discretize_bins renvoie le numéro du bac, qui commence à 0. Ainsi, pour des valeurs de la variable d’entrée proches de 0, il renvoie le numéro du milieu de l’intervalle (10). Dans discretize, nous ne nous sommes pas souciés de la plage des valeurs de sortie, les autorisant à être négatives, ainsi les valeurs d’état ne sont pas décalées, et 0 correspond à 0. (bloc de code 8)
```python
env.reset()
@@ -150,15 +170,15 @@ Dans notre exemple, nous opterons pour la deuxième approche. Comme vous le rema
env.close()
```
- ✅ Décommentez la ligne commençant par `env.render` si vous souhaitez voir comment l'environnement s'exécute. Sinon, vous pouvez l'exécuter en arrière-plan, ce qui est plus rapide. Nous utiliserons cette exécution "invisible" pendant notre processus de Q-Learning.
+ ✅ Décochez la ligne commençant par env.render si vous voulez voir comment l’environnement s’exécute. Sinon, vous pouvez l’exécuter en arrière-plan, ce qui est plus rapide. Nous utiliserons cette exécution "invisible" durant notre processus de Q-Learning.
## La structure de la Q-Table
-Dans notre leçon précédente, l'état était une simple paire de nombres allant de 0 à 8, et il était donc pratique de représenter la Q-Table par un tenseur numpy de forme 8x8x2. Si nous utilisons la discrétisation par intervalles, la taille de notre vecteur d'état est également connue, nous pouvons donc utiliser la même approche et représenter l'état par un tableau de forme 20x20x10x10x2 (ici 2 est la dimension de l'espace d'action, et les premières dimensions correspondent au nombre d'intervalles que nous avons choisi d'utiliser pour chacun des paramètres dans l'espace d'observation).
+Dans notre leçon précédente, l’état était une simple paire de nombres de 0 à 8, et donc il était pratique de représenter la Q-Table par un tenseur numpy de forme 8x8x2. Si nous utilisons la discrétisation par bacs, la taille de notre vecteur d’état est également connue, donc nous pouvons utiliser la même approche et représenter l’état par un tableau de forme 20x20x10x10x2 (ici 2 est la dimension de l’espace d’action, et les premières dimensions correspondent au nombre de bacs sélectionnés pour chacun des paramètres dans l’espace d’observation).
-Cependant, parfois, les dimensions précises de l'espace d'observation ne sont pas connues. Dans le cas de la fonction `discretize`, nous ne pouvons jamais être sûrs que notre état reste dans certaines limites, car certaines des valeurs originales ne sont pas bornées. Ainsi, nous utiliserons une approche légèrement différente et représenterons la Q-Table par un dictionnaire.
+Cependant, parfois les dimensions précises de l’espace d’observation ne sont pas connues. Dans le cas de la fonction `discretize`, nous ne pouvons jamais être sûrs que notre état reste dans certaines limites, car certaines des valeurs originales ne sont pas bornées. Ainsi, nous utiliserons une approche légèrement différente et représenterons la Q-Table par un dictionnaire.
-1. Utilisez la paire *(state,action)* comme clé du dictionnaire, et la valeur correspondra à la valeur de l'entrée de la Q-Table. (bloc de code 9)
+1. Utilisez la paire *(état, action)* comme clé du dictionnaire, et la valeur correspondra à la valeur de l’entrée dans la Q-Table. (bloc de code 9)
```python
Q = {}
@@ -168,38 +188,38 @@ Cependant, parfois, les dimensions précises de l'espace d'observation ne sont p
return [Q.get((state,a),0) for a in actions]
```
- Ici, nous définissons également une fonction `qvalues()`, qui retourne une liste de valeurs de la Q-Table pour un état donné correspondant à toutes les actions possibles. Si l'entrée n'est pas présente dans la Q-Table, nous retournerons 0 par défaut.
+ Ici, nous définissons aussi une fonction `qvalues()`, qui renvoie une liste des valeurs de la Q-Table pour un état donné qui correspond à toutes les actions possibles. Si l’entrée n’est pas présente dans la Q-Table, nous retournerons 0 par défaut.
## Commençons le Q-Learning
-Nous sommes maintenant prêts à apprendre à Peter à maintenir l'équilibre !
+Maintenant, nous sommes prêts à apprendre à Peter à garder l’équilibre !
-1. Tout d'abord, définissons quelques hyperparamètres : (bloc de code 10)
+1. D’abord, définissons quelques hyperparamètres : (bloc de code 10)
```python
- # hyperparameters
+ # hyperparamètres
alpha = 0.3
gamma = 0.9
epsilon = 0.90
```
- Ici, `alpha` est le **taux d'apprentissage** qui définit dans quelle mesure nous devons ajuster les valeurs actuelles de la Q-Table à chaque étape. Dans la leçon précédente, nous avons commencé avec 1, puis diminué `alpha` à des valeurs plus faibles pendant l'entraînement. Dans cet exemple, nous le garderons constant pour simplifier, et vous pourrez expérimenter avec l'ajustement des valeurs de `alpha` plus tard.
-
- `gamma` est le **facteur d'actualisation** qui montre dans quelle mesure nous devons privilégier la récompense future par rapport à la récompense actuelle.
+ Ici, `alpha` est le **taux d’apprentissage** qui définit dans quelle mesure nous devons ajuster les valeurs actuelles de la Q-Table à chaque étape. Dans la leçon précédente, nous avons commencé avec 1, puis diminué `alpha` vers des valeurs plus basses pendant l’entraînement. Dans cet exemple, nous le garderons constant par simplicité, et vous pouvez expérimenter en ajustant `alpha` plus tard.
- `epsilon` est le **facteur d'exploration/exploitation** qui détermine si nous devons privilégier l'exploration ou l'exploitation. Dans notre algorithme, nous sélectionnerons dans `epsilon` pourcentage des cas la prochaine action en fonction des valeurs de la Q-Table, et dans le reste des cas, nous exécuterons une action aléatoire. Cela nous permettra d'explorer des zones de l'espace de recherche que nous n'avons jamais vues auparavant.
+ `gamma` est le **facteur d’actualisation** qui indique dans quelle mesure nous devons privilégier la récompense future par rapport à la récompense actuelle.
- ✅ En termes d'équilibre - choisir une action aléatoire (exploration) agirait comme un coup de poing aléatoire dans la mauvaise direction, et le poteau devrait apprendre à récupérer l'équilibre à partir de ces "erreurs".
+ `epsilon` est le **facteur exploration/exploitation** qui détermine si nous devons privilégier l’exploration à l’exploitation ou vice versa. Dans notre algorithme, dans `epsilon` pourcents des cas, nous sélectionnerons l’action suivante selon les valeurs de la Q-Table, et dans le reste des cas nous exécuterons une action aléatoire. Cela nous permettra d’explorer des zones de l’espace de recherche que nous n’avons jamais vues auparavant.
-### Améliorer l'algorithme
+ ✅ En termes d’équilibre - choisir une action aléatoire (exploration) agit comme un coup aléatoire dans la mauvaise direction, et le poteau devra apprendre comment récupérer l’équilibre après ces "erreurs".
-Nous pouvons également apporter deux améliorations à notre algorithme de la leçon précédente :
+### Améliorer l’algorithme
-- **Calculer la récompense cumulative moyenne**, sur un certain nombre de simulations. Nous imprimerons les progrès tous les 5000 itérations, et nous ferons la moyenne de notre récompense cumulative sur cette période. Cela signifie que si nous obtenons plus de 195 points, nous pouvons considérer le problème comme résolu, avec une qualité encore supérieure à celle requise.
+Nous pouvons aussi apporter deux améliorations à notre algorithme de la leçon précédente :
-- **Calculer le résultat cumulatif moyen maximum**, `Qmax`, et nous stockerons la Q-Table correspondant à ce résultat. Lorsque vous exécutez l'entraînement, vous remarquerez que parfois le résultat cumulatif moyen commence à diminuer, et nous voulons conserver les valeurs de la Q-Table correspondant au meilleur modèle observé pendant l'entraînement.
+- **Calculer la récompense cumulative moyenne**, sur un certain nombre de simulations. Nous afficherons la progression toutes les 5000 itérations, et nous ferons la moyenne de notre récompense cumulative sur cette période. Cela signifie que si nous obtenons plus de 195 points - nous pouvons considérer le problème résolu, avec une qualité encore meilleure que requise.
+
+- **Calculer le maximum de la récompense cumulative moyenne**, `Qmax`, et nous stockerons la Q-Table correspondant à ce résultat. Lorsque vous exécuterez l’entraînement, vous remarquerez que parfois, la récompense moyenne cumulative commence à chuter, et nous voulons garder les valeurs de la Q-Table correspondant au meilleur modèle observé pendant l’entraînement.
-1. Collectez toutes les récompenses cumulatives à chaque simulation dans le vecteur `rewards` pour un futur tracé. (bloc de code 11)
+1. Rassembler toutes les récompenses cumulatives à chaque simulation dans le vecteur `rewards` pour un tracé ultérieur. (bloc de code 11)
```python
def probs(v,eps=1e-4):
@@ -214,15 +234,15 @@ Nous pouvons également apporter deux améliorations à notre algorithme de la l
obs = env.reset()
done = False
cum_reward=0
- # == do the simulation ==
+ # == faire la simulation ==
while not done:
s = discretize(obs)
if random.random() Qmax:
@@ -240,25 +260,25 @@ Nous pouvons également apporter deux améliorations à notre algorithme de la l
cum_rewards=[]
```
-Ce que vous pouvez remarquer à partir de ces résultats :
+Ce que vous pouvez remarquer d’après ces résultats :
-- **Proche de notre objectif**. Nous sommes très proches d'atteindre l'objectif de 195 récompenses cumulatives sur 100+ exécutions consécutives de la simulation, ou nous l'avons peut-être déjà atteint ! Même si nous obtenons des nombres plus faibles, nous ne le savons pas, car nous faisons la moyenne sur 5000 exécutions, et seuls 100 exécutions sont nécessaires dans les critères formels.
+- **Proche de notre objectif**. Nous sommes très proches d’atteindre l’objectif d’obtenir 195 récompenses cumulées sur 100+ exécutions consécutives de la simulation, ou nous l’avons peut-être réellement atteint ! Même si nous obtenons des chiffres plus petits, nous ne savons pas encore, car nous faisons la moyenne sur 5000 exécutions alors que 100 exécutions seulement sont requises officiellement.
+
+- **La récompense commence à chuter**. Parfois, la récompense commence à diminuer, ce qui signifie que nous pouvons "détruire" les valeurs déjà apprises dans la Q-Table avec des valeurs qui aggravent la situation.
-- **La récompense commence à diminuer**. Parfois, la récompense commence à diminuer, ce qui signifie que nous pouvons "détruire" les valeurs déjà apprises dans la Q-Table avec celles qui aggravent la situation.
+Cette observation est plus clairement visible si nous traçons la progression de l’entraînement.
-Cette observation est plus clairement visible si nous traçons les progrès de l'entraînement.
+## Tracer la progression de l’entraînement
-## Tracer les progrès de l'entraînement
-
-Pendant l'entraînement, nous avons collecté la valeur de récompense cumulative à chaque itération dans le vecteur `rewards`. Voici à quoi cela ressemble lorsque nous le traçons par rapport au numéro d'itération :
+Pendant l’entraînement, nous avons collecté la valeur de la récompense cumulative à chaque itération dans le vecteur `rewards`. Voici à quoi cela ressemble lorsque nous la traçons en fonction du numéro d’itération :
```python
plt.plot(rewards)
```
-
+
-À partir de ce graphique, il n'est pas possible de tirer des conclusions, car en raison de la nature du processus d'entraînement stochastique, la durée des sessions d'entraînement varie considérablement. Pour donner plus de sens à ce graphique, nous pouvons calculer la **moyenne mobile** sur une série d'expériences, disons 100. Cela peut être fait facilement en utilisant `np.convolve` : (bloc de code 12)
+Sur ce graphique, il est impossible de tirer des conclusions, car en raison de la nature stochastique du processus d’entraînement, la durée des sessions d’entraînement varie fortement. Pour mieux comprendre ce graphique, nous pouvons calculer la **moyenne glissante** sur une série d’expériences, disons 100. Cela peut être fait aisément avec `np.convolve` : (bloc de code 12)
```python
def running_average(x,window):
@@ -267,21 +287,24 @@ def running_average(x,window):
plt.plot(running_average(rewards,100))
```
-
+
## Variation des hyperparamètres
-Pour rendre l'apprentissage plus stable, il est judicieux d'ajuster certains de nos hyperparamètres pendant l'entraînement. En particulier :
+Pour rendre l’apprentissage plus stable, il est judicieux d’ajuster certains de nos hyperparamètres durant l’entraînement. En particulier :
+
+- **Pour le taux d’apprentissage**, `alpha`, nous pouvons commencer avec des valeurs proches de 1, puis continuer à diminuer ce paramètre. Avec le temps, nous obtiendrons de bonnes valeurs de probabilité dans la Q-Table, et donc nous devrions les ajuster légèrement, sans les écraser complètement avec des nouvelles valeurs.
+
+- **Augmenter epsilon**. Nous pourrions augmenter lentement `epsilon`, afin d’explorer moins et d’exploiter plus. Il est probablement judicieux de commencer avec une valeur basse de `epsilon`, puis la faire monter presque à 1.
+
+> **Tâche 1** : Testez les valeurs des hyperparamètres et voyez si vous pouvez obtenir une récompense cumulative plus élevée. Parvenez-vous à dépasser 195 ?
-- **Pour le taux d'apprentissage**, `alpha`, nous pouvons commencer avec des valeurs proches de 1, puis diminuer progressivement le paramètre. Avec le temps, nous obtiendrons de bonnes probabilités dans la Q-Table, et nous devrions donc les ajuster légèrement, et non les écraser complètement avec de nouvelles valeurs.
-- **Augmenter epsilon**. Nous pouvons vouloir augmenter lentement `epsilon`, afin d'explorer moins et d'exploiter davantage. Il semble logique de commencer avec une valeur plus faible de `epsilon`, et de monter jusqu'à presque 1.
-> **Tâche 1** : Expérimentez avec les valeurs des hyperparamètres et voyez si vous pouvez obtenir une récompense cumulative plus élevée. Atteignez-vous plus de 195 ?
-> **Tâche 2** : Pour résoudre formellement le problème, vous devez atteindre une récompense moyenne de 195 sur 100 exécutions consécutives. Mesurez cela pendant l'entraînement et assurez-vous d'avoir résolu le problème de manière formelle !
+> **Tâche 2** : Pour résoudre formellement le problème, vous devez obtenir une récompense moyenne de 195 sur 100 exécutions consécutives. Mesurez cela pendant l'entraînement et assurez-vous d'avoir formellement résolu le problème !
## Voir le résultat en action
-Il serait intéressant de voir comment le modèle entraîné se comporte. Lançons la simulation et suivons la même stratégie de sélection d'actions qu'au cours de l'entraînement, en échantillonnant selon la distribution de probabilité dans la Q-Table : (bloc de code 13)
+Il serait intéressant de voir comment le modèle entraîné se comporte réellement. Exécutons la simulation et suivons la même stratégie de sélection d'action que pendant l'entraînement, en échantillonnant selon la distribution de probabilité dans la Q-Table : (bloc de code 13)
```python
obs = env.reset()
@@ -297,28 +320,30 @@ env.close()
Vous devriez voir quelque chose comme ceci :
-
+
---
## 🚀Défi
-> **Tâche 3** : Ici, nous utilisions la copie finale de la Q-Table, qui n'est peut-être pas la meilleure. Rappelez-vous que nous avons stocké la Q-Table la plus performante dans la variable `Qbest` ! Essayez le même exemple avec la Q-Table la plus performante en copiant `Qbest` dans `Q` et voyez si vous remarquez une différence.
+> **Tâche 3** : Ici, nous utilisions la copie finale de la Q-Table, qui peut ne pas être la meilleure. Rappelez-vous que nous avons stocké la Q-Table la plus performante dans la variable `Qbest` ! Essayez le même exemple avec la Q-Table la plus performante en recopiant `Qbest` dans `Q` et voyez si vous remarquez la différence.
-> **Tâche 4** : Ici, nous ne sélectionnions pas la meilleure action à chaque étape, mais plutôt en échantillonnant avec la distribution de probabilité correspondante. Serait-il plus logique de toujours sélectionner la meilleure action, celle avec la valeur la plus élevée dans la Q-Table ? Cela peut être fait en utilisant la fonction `np.argmax` pour trouver le numéro de l'action correspondant à la valeur la plus élevée dans la Q-Table. Implémentez cette stratégie et voyez si cela améliore l'équilibre.
+> **Tâche 4** : Ici, nous ne sélectionnions pas la meilleure action à chaque étape, mais plutôt un échantillonnage selon la distribution de probabilité correspondante. Ne serait-il pas plus logique de toujours sélectionner la meilleure action, avec la valeur la plus haute dans la Q-Table ? Cela peut se faire en utilisant la fonction `np.argmax` pour trouver le numéro de l'action correspondant à la valeur la plus élevée dans la Q-Table. Implémentez cette stratégie et voyez si cela améliore l'équilibre.
-## [Quiz post-lecture](https://ff-quizzes.netlify.app/en/ml/)
+## [Quiz après cours](https://ff-quizzes.netlify.app/en/ml/)
## Devoir
-[Entraîner une voiture de montagne](assignment.md)
+[Entraîner une Mountain Car](assignment.md)
## Conclusion
-Nous avons maintenant appris à entraîner des agents pour obtenir de bons résultats simplement en leur fournissant une fonction de récompense qui définit l'état souhaité du jeu, et en leur donnant l'opportunité d'explorer intelligemment l'espace de recherche. Nous avons appliqué avec succès l'algorithme de Q-Learning dans des environnements discrets et continus, mais avec des actions discrètes.
+Nous avons maintenant appris comment entraîner des agents à obtenir de bons résultats en leur fournissant simplement une fonction de récompense qui définit l'état désiré du jeu, et en leur donnant l'opportunité d'explorer intelligemment l'espace de recherche. Nous avons appliqué avec succès l'algorithme de Q-Learning dans des environnements discrets et continus, mais avec des actions discrètes.
-Il est également important d'étudier des situations où l'état des actions est continu, et où l'espace d'observation est beaucoup plus complexe, comme l'image de l'écran d'un jeu Atari. Dans ces problèmes, nous devons souvent utiliser des techniques d'apprentissage automatique plus puissantes, telles que les réseaux neuronaux, pour obtenir de bons résultats. Ces sujets plus avancés seront abordés dans notre prochain cours d'IA avancé.
+Il est aussi important d'étudier les situations où l'état d'action est également continu, et où l'espace d'observation est beaucoup plus complexe, comme l'image de l'écran du jeu Atari. Dans ces problèmes, nous devons souvent utiliser des techniques d'apprentissage automatique plus puissantes, telles que les réseaux neuronaux, afin d'obtenir de bons résultats. Ces sujets plus avancés feront l'objet de notre prochain cours d'IA plus avancé.
---
-**Avertissement** :
-Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.
\ No newline at end of file
+
+**Avertissement** :
+Ce document a été traduit à l'aide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforçions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source faisant autorité. Pour les informations critiques, il est recommandé de recourir à une traduction professionnelle réalisée par un humain. Nous ne saurions être tenus responsables des malentendus ou erreurs d'interprétation découlant de l'utilisation de cette traduction.
+
\ No newline at end of file
diff --git a/translations/he/.co-op-translator.json b/translations/he/.co-op-translator.json
index 2496cc8fd..8b0cf0845 100644
--- a/translations/he/.co-op-translator.json
+++ b/translations/he/.co-op-translator.json
@@ -24,8 +24,8 @@
"language_code": "he"
},
"1-Introduction/3-fairness/README.md": {
- "original_hash": "9a6b702d1437c0467e3c5c28d763dac2",
- "translation_date": "2025-09-05T19:31:10+00:00",
+ "original_hash": "0f00d72169a0d37eecfd16d71e01700a",
+ "translation_date": "2026-07-14T03:58:42+00:00",
"source_file": "1-Introduction/3-fairness/README.md",
"language_code": "he"
},
@@ -54,8 +54,8 @@
"language_code": "he"
},
"2-Regression/1-Tools/README.md": {
- "original_hash": "fa81d226c71d5af7a2cade31c1c92b88",
- "translation_date": "2025-09-05T18:50:40+00:00",
+ "original_hash": "0b8635427b582d03ea4ab7089b93e505",
+ "translation_date": "2026-07-14T03:53:36+00:00",
"source_file": "2-Regression/1-Tools/README.md",
"language_code": "he"
},
@@ -72,8 +72,8 @@
"language_code": "he"
},
"2-Regression/2-Data/README.md": {
- "original_hash": "7c077988328ebfe33b24d07945f16eca",
- "translation_date": "2025-09-05T18:54:41+00:00",
+ "original_hash": "a58b2c4d16c6b122643391745ac15af6",
+ "translation_date": "2026-07-14T03:54:42+00:00",
"source_file": "2-Regression/2-Data/README.md",
"language_code": "he"
},
@@ -89,6 +89,12 @@
"source_file": "2-Regression/2-Data/solution/Julia/README.md",
"language_code": "he"
},
+ "2-Regression/2-Data/solution/notebook.ipynb": {
+ "original_hash": "96b95f8cf473481f2f371de8156f1571",
+ "translation_date": "2026-07-14T03:42:45+00:00",
+ "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
+ "language_code": "he"
+ },
"2-Regression/3-Linear/README.md": {
"original_hash": "8b776e731c35b171d316d01d0e7b1369",
"translation_date": "2026-04-26T20:05:31+00:00",
@@ -457,7 +463,7 @@
},
"8-Reinforcement/1-QLearning/README.md": {
"original_hash": "911efd5e595089000cb3c16fce1beab8",
- "translation_date": "2025-09-05T20:12:27+00:00",
+ "translation_date": "2026-07-14T03:55:51+00:00",
"source_file": "8-Reinforcement/1-QLearning/README.md",
"language_code": "he"
},
@@ -481,7 +487,7 @@
},
"8-Reinforcement/2-Gym/README.md": {
"original_hash": "107d5bb29da8a562e7ae72262d251a75",
- "translation_date": "2025-09-05T20:19:54+00:00",
+ "translation_date": "2026-07-14T03:57:43+00:00",
"source_file": "8-Reinforcement/2-Gym/README.md",
"language_code": "he"
},
@@ -581,6 +587,19 @@
"source_file": "TROUBLESHOOTING.md",
"language_code": "he"
},
+ "__translation_failures__": {
+ "sketchnotes/LICENSE.md": {
+ "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f",
+ "source_file": "sketchnotes/LICENSE.md",
+ "language_code": "he",
+ "failure_date": "2026-07-14T03:52:44+00:00",
+ "status": "failed",
+ "error_type": "TranslationIncompleteError",
+ "error_message": "Markdown translation remained incomplete for chunk 1.1.1 of 'LICENSE.md', and the chunk could not be split further.",
+ "translator_version": "0.20.0",
+ "failure_policy_version": 1
+ }
+ },
"docs/_sidebar.md": {
"original_hash": "68dd06c685f6ce840e0acfa313352e7c",
"translation_date": "2025-09-05T19:19:54+00:00",
diff --git a/translations/he/1-Introduction/3-fairness/README.md b/translations/he/1-Introduction/3-fairness/README.md
index 2ba72178f..760291801 100644
--- a/translations/he/1-Introduction/3-fairness/README.md
+++ b/translations/he/1-Introduction/3-fairness/README.md
@@ -1,161 +1,167 @@
-# בניית פתרונות למידת מכונה עם AI אחראי
-
-
-> סקיצה מאת [Tomomi Imura](https://www.twitter.com/girlie_mac)
-
-## [שאלון לפני ההרצאה](https://ff-quizzes.netlify.app/en/ml/)
+# בניית פתרונות למידת מכונה עם בינה מלאכותית אחראית
+
+
+> שרטוט מאת [Tomomi Imura](https://www.twitter.com/girlie_mac)
+## [חידון לפני ההרצאה](https://ff-quizzes.netlify.app/en/ml/)
+
## מבוא
-בתוכנית לימודים זו, תתחילו לגלות כיצד למידת מכונה משפיעה על חיי היומיום שלנו. כבר עכשיו, מערכות ומודלים מעורבים במשימות קבלת החלטות יומיומיות, כמו אבחנות רפואיות, אישורי הלוואות או זיהוי הונאות. לכן, חשוב שהמודלים הללו יפעלו בצורה טובה ויספקו תוצאות אמינות. כמו כל יישום תוכנה, מערכות AI עשויות לאכזב או להוביל לתוצאה לא רצויה. זו הסיבה שחשוב להבין ולהסביר את ההתנהגות של מודל AI.
+בתכנית לימודים זו, תתחילו לגלות כיצד למידת מכונה משפיעה וכבר משפיעה על חיי היומיום שלנו. כבר כיום, מערכות ודגמים מעורבים במשימות קבלת החלטות יומיומיות, כמו אבחנות בריאותיות, אישורי הלוואות או גילוי הונאה. לכן, חשוב שהדגמים הללו יעבדו היטב ויספקו תוצאות שניתן לסמוך עליהן. כמו כל יישום תוכנה, מערכות AI עלולות לא לעמוד בציפיות או להביא לתוצאות בלתי רצויות. לכן חיוני להיות מסוגל להבין ולהסביר את התנהגות מודל AI.
-דמיינו מה יכול לקרות כאשר הנתונים שבהם אתם משתמשים לבניית המודלים חסרים ייצוג של קבוצות דמוגרפיות מסוימות, כמו גזע, מגדר, השקפה פוליטית, דת, או מייצגים אותן באופן לא פרופורציונלי. ומה לגבי מצב שבו תוצאות המודל מפורשות כך שהן מעדיפות קבוצה דמוגרפית מסוימת? מה ההשלכות עבור היישום? בנוסף, מה קורה כאשר למודל יש תוצאה שלילית שפוגעת באנשים? מי אחראי להתנהגות של מערכות AI? אלו שאלות שנחקור בתוכנית לימודים זו.
+דמיינו מה עלול לקרות כאשר הנתונים בהם אתם משתמשים לבניית דגמים אלו חסרים קבוצות דמוגרפיות מסוימות, כגון גזע, מין, השקפה פוליטית, דת, או מייצגים באופן לא פרופורציונלי את אותן קבוצות. מה קורה כאשר התוצאה של המודל מפורשת לטובת דמוגרפיה מסוימת? מה תהיה ההשלכה לאפליקציה? בנוסף, מה קורה כאשר למודל יש תוצאה שלילית ופוגע באנשים? מי אחראי להתנהגות מערכת ה-AI? אלה הן כמה מהשאלות שנחקור בתכנית לימודים זו.
בשיעור זה תלמדו:
- להעלות את המודעות לחשיבות ההוגנות בלמידת מכונה ולנזקים הקשורים להוגנות.
-- להכיר את הפרקטיקה של חקר חריגים ותסריטים לא שגרתיים כדי להבטיח אמינות ובטיחות.
+- להכיר את הנוהג לחקור חריגים ותסריטים יוצאי דופן כדי להבטיח אמינות ובטיחות.
- להבין את הצורך להעצים את כולם על ידי עיצוב מערכות מכילות.
-- לחקור את החשיבות של הגנה על פרטיות ואבטחת נתונים ואנשים.
-- לראות את החשיבות של גישה שקופה להסבר התנהגות מודלים של AI.
-- להיות מודעים לכך שאחריות היא חיונית לבניית אמון במערכות AI.
+- לחקור כמה חשוב להגן על פרטיות ואבטחת נתונים ואנשים.
+- לראות את חשיבות הגישה של "קופסת זכוכית" כדי להסביר את התנהגות דגמי ה-AI.
+- להיות מודעים לאופן בו האחריות חיונית לבניית אמון במערכות AI.
-## דרישות מקדימות
+## דרישות מוקדמות
-כדרישה מקדימה, אנא עברו על מסלול הלמידה "עקרונות AI אחראי" וצפו בסרטון הבא בנושא:
+כדרישה מוקדמת, אנא עברו את מסלול הלמידה "עקרונות בינה מלאכותית אחראית" וצפו בסרטון למטה בנושא:
-למדו עוד על AI אחראי על ידי מעקב אחר [מסלול הלמידה](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)
+למדו עוד על בינה מלאכותית אחראית במעקב אחר מסלול זה [Learning Path](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)
-[](https://youtu.be/dnC8-uUZXSc "הגישה של Microsoft ל-AI אחראי")
+[](https://youtu.be/dnC8-uUZXSc "הגישה של מיקרוסופט לבינה מלאכותית אחראית")
-> 🎥 לחצו על התמונה למעלה לצפייה בסרטון: הגישה של Microsoft ל-AI אחראי
+> 🎥 לחצו על התמונה למעלה לסרטון: הגישה של מיקרוסופט לבינה מלאכותית אחראית
## הוגנות
-מערכות AI צריכות להתייחס לכולם באופן הוגן ולהימנע מהשפעה שונה על קבוצות דומות של אנשים. לדוגמה, כאשר מערכות AI מספקות המלצות לטיפול רפואי, בקשות להלוואות או תעסוקה, עליהן להציע את אותן המלצות לכל מי שיש לו סימפטומים, נסיבות פיננסיות או כישורים מקצועיים דומים. כל אחד מאיתנו נושא עמו הטיות מובנות שמשפיעות על ההחלטות והפעולות שלנו. הטיות אלו יכולות להיות ניכרות בנתונים שבהם אנו משתמשים לאימון מערכות AI. לעיתים, מניפולציה כזו מתרחשת באופן לא מכוון. קשה לעיתים לדעת באופן מודע מתי אנו מכניסים הטיה לנתונים.
+מערכות AI צריכות להתייחס לכולם בהוגנות ולהימנע מהשפעה שונה על קבוצות אנשים דומות. לדוגמה, כאשר מערכות AI מספקות הנחיות לטיפול רפואי, בקשות להלוואות או תעסוקה, הן צריכות לתת את אותן ההמלצות לכל מי שיש לו תסמינים דומים, מצב כלכלי דומה או הכשרה מקצועית דומה. כל אחד מאיתנו כנשא הטיות מונחות שמורשות המשפיעות על החלטותינו ופעולותינו. הטיות אלו יכולות להיות ברורות בנתונים שבהם אנו משתמשים לאימון מערכות AI. מניפולציה כזו יכולה להתרחש לפעמים בטעות. לעיתים קרובות קשה במודע לדעת מתי אתם מכניסים הטיה לנתונים.
-**"חוסר הוגנות"** כולל השפעות שליליות, או "נזקים", לקבוצה של אנשים, כמו אלו המוגדרים לפי גזע, מגדר, גיל או מצב נכות. הנזקים העיקריים הקשורים להוגנות יכולים להיות מסווגים כ:
+**“אי-הוגנות”** כוללת השפעות שליליות, או "נזקים", עבור קבוצת אנשים, כגון אלה המוגדרים במונחים של גזע, מין, גיל או מצב נכות. הנזקים העיקריים הקשורים להוגנות יכולים להתחלק כך:
-- **הקצאה**, אם מגדר או אתניות, לדוגמה, מועדפים על פני אחרים.
-- **איכות השירות**. אם מאמנים את הנתונים לתרחיש ספציפי אך המציאות מורכבת יותר, זה מוביל לשירות בעל ביצועים ירודים. לדוגמה, מתקן סבון ידיים שלא הצליח לזהות אנשים עם עור כהה. [מקור](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
-- **השמצה**. ביקורת לא הוגנת ותיוג של משהו או מישהו. לדוגמה, טכנולוגיית תיוג תמונות שגתה בתיוג תמונות של אנשים כהי עור כגורילות.
-- **ייצוג יתר או חסר**. הרעיון הוא שקבוצה מסוימת אינה נראית במקצוע מסוים, וכל שירות או פונקציה שממשיכים לקדם זאת תורמים לנזק.
-- **סטראוטיפים**. שיוך קבוצה מסוימת לתכונות שהוקצו מראש. לדוגמה, מערכת תרגום בין אנגלית לטורקית עשויה לכלול אי דיוקים בשל מילים עם שיוך סטראוטיפי למגדר.
+- **הקצאה**, אם מגדר או אתניות לדוגמה מועדפים על אחרים.
+- **איכות השירות**. אם מאמנים את הנתונים לתרחיש ספציפי אך המציאות מורכבת יותר, זה מוביל לשירות ביצועי ירוד. לדוגמה, מתDisp מוזל יד לא הצליח לזהות אנשים עם עור כהה. [Reference](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
+- **השמצה**. לבקר ולהתייג משהו או מישהו בצורה בלתי הוגנת. לדוגמה, טכנולוגיית סימון תמונות תויגה לשמצה כאשר סימנה בטעות תמונות של אנשים עם עור כהה ככלבים.
+- **ייצוג מופרז או חסר**. הרעיון הוא שקבוצה מסוימת לא נראית במקצוע מסוים, וכל שירות או פונקציה שמקדם זאת תורם לנזק.
+- **סטריאוטיפים**. לקשר קבוצה מסוימת עם תכונות מוקצות מראש. לדוגמה, מערכת תרגום שפות בין אנגלית לטורקית עלולה להכיל אי דיוקים בגלל מילים של סטריאוטיפים מגדריים.
-
+
> תרגום לטורקית
-
+
> תרגום חזרה לאנגלית
-בעת עיצוב ובדיקת מערכות AI, עלינו להבטיח שה-AI יהיה הוגן ולא יתוכנת לקבל החלטות מוטות או מפלות, שאסורות גם על בני אדם. הבטחת הוגנות ב-AI ובלמידת מכונה נותרת אתגר סוציוטכני מורכב.
+בעת עיצוב ובדיקת מערכות AI, עלינו לוודא שה-AI הוגן ואינו מתוכנת לקבל החלטות מוטות או מפלות, שהאדם גם אסור לו לקבל. הבטחת הוגנות ב-AI ולמידת מכונה נשארת אתגר טכנו-חברתי מורכב.
### אמינות ובטיחות
-כדי לבנות אמון, מערכות AI צריכות להיות אמינות, בטוחות ועקביות בתנאים רגילים ולא צפויים. חשוב לדעת כיצד מערכות AI יתנהגו במגוון מצבים, במיוחד כאשר מדובר בחריגים. בעת בניית פתרונות AI, יש להתמקד באופן משמעותי בטיפול במגוון רחב של נסיבות שהפתרונות עשויים להיתקל בהן. לדוגמה, רכב אוטונומי צריך לשים את בטיחות האנשים בראש סדר העדיפויות. כתוצאה מכך, ה-AI שמפעיל את הרכב צריך לשקול את כל התרחישים האפשריים שהרכב עשוי להיתקל בהם, כמו לילה, סופות רעמים או שלגים, ילדים שרצים ברחוב, חיות מחמד, עבודות בכביש וכו'. עד כמה מערכת AI יכולה להתמודד עם מגוון רחב של תנאים בצורה אמינה ובטוחה משקף את רמת הציפייה שהמדען נתונים או מפתח ה-AI לקחו בחשבון במהלך העיצוב או הבדיקה של המערכת.
+כדי לבנות אמון, מערכות AI צריכות להיות אמינות, בטוחות ועקביות בתנאים נורמליים ובלתי צפויים. חשוב לדעת כיצד מערכות AI יתנהגו במגוון מצבים, במיוחד כאשר הם חריגים. כאשר בונים פתרונות AI, יש צורך להקדיש דגש משמעותי כיצד להתמודד עם מגוון רחב של נסיבות שהפתרונות AI ייתקלו בהן. לדוגמה, רכב אוטונומי חייב לשים את בטיחות האנשים בראש סדר העדיפויות. כתוצאה מכך, ה-AI שמפעיל את הרכב צריך לקחת בחשבון את כל התסריטים האפשריים בהם הרכב עלול להיתקל, כגון לילה, סופות רעמים או סופות שלגים, ילדים שרצים מעבר לכביש, חיות מחמד, עבודות בכביש וכו'. כמה טוב מערכת AI מסוגלת להתמודד עם מגוון רחב של תנאים באופן אמין ובטוח משקף את רמת הצפייה שהמדען או המפתח של ה-AI שקל במהלך העיצוב או בדיקת המערכת.
-> [🎥 לחצו כאן לצפייה בסרטון: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
+> [🎥 לחצו כאן לסרטון: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
-### הכלה
+### שיתופיות
-מערכות AI צריכות להיות מעוצבות כך שיתקשרו ויעצימו את כולם. בעת עיצוב ויישום מערכות AI, מדעני נתונים ומפתחי AI מזהים ומטפלים במחסומים פוטנציאליים במערכת שיכולים להוציא אנשים באופן לא מכוון. לדוגמה, ישנם מיליארד אנשים עם מוגבלויות ברחבי העולם. עם התקדמות ה-AI, הם יכולים לגשת למגוון רחב של מידע והזדמנויות בקלות רבה יותר בחיי היומיום שלהם. על ידי טיפול במחסומים, נוצרת הזדמנות לחדש ולפתח מוצרים AI עם חוויות טובות יותר שמועילות לכולם.
+מערכות AI צריכות להיות מעוצבות כדי לכלול ולהעצים את כולם. בעת עיצוב ויישום מערכות AI, מדעני נתונים ומפתחי AI מזהים ומתמודדים עם מחסומים פוטנציאליים במערכת שיכולים בטעות להוציא אנשים מחוץ. לדוגמה, ישנם מיליארד אנשים עם מוגבלויות ברחבי העולם. עם התקדמות ה-AI, הם יכולים לגשת למגוון רחב של מידע והזדמנויות בקלות רבה יותר בחיי היומיום שלהם. על ידי התמודדות עם המחסומים, נוצרות הזדמנויות לחדש ולפתח מוצרי AI עם חוויות טובות יותר שמועילות לכולם.
-> [🎥 לחצו כאן לצפייה בסרטון: הכלה ב-AI](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
+> [🎥 לחצו כאן לסרטון: שיתופיות ב-AI](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
### אבטחה ופרטיות
-מערכות AI צריכות להיות בטוחות ולכבד את פרטיות האנשים. אנשים נותנים פחות אמון במערכות שמסכנות את פרטיותם, המידע שלהם או חייהם. בעת אימון מודלים של למידת מכונה, אנו מסתמכים על נתונים כדי להפיק את התוצאות הטובות ביותר. תוך כדי כך, יש לקחת בחשבון את מקור הנתונים ואת שלמותם. לדוגמה, האם הנתונים הוגשו על ידי משתמשים או היו זמינים לציבור? לאחר מכן, בעת עבודה עם הנתונים, חשוב לפתח מערכות AI שיכולות להגן על מידע חסוי ולהתנגד להתקפות. ככל שה-AI הופך לנפוץ יותר, הגנה על פרטיות ואבטחת מידע אישי ועסקי חשובים הופכת לקריטית ומורכבת יותר. סוגיות פרטיות ואבטחת נתונים דורשות תשומת לב מיוחדת עבור AI מכיוון שגישה לנתונים חיונית למערכות AI כדי לבצע תחזיות והחלטות מדויקות ומושכלות על אנשים.
+מערכות AI צריכות להיות בטוחות ולכבד את פרטיות האנשים. אנשים סומכים פחות על מערכות שמסכנות את פרטיותם, מידעם או חייהם. כאשר מאמנים מודלים של למידת מכונה, אנו מסתמכים על נתונים כדי להפיק את התוצאות הטובות ביותר. בכך, יש לשקול את המקור והיושרה של הנתונים. לדוגמה, האם הנתונים הוגשו על ידי המשתמש או זמינים לציבור? לאחר מכן, בעת עבודה עם הנתונים, חיוני לפתח מערכות AI שיכולות להגן על מידע סודי ולהתנגד להתקפות. ככל שה-AI נעשה נפוץ יותר, ההגנה על הפרטיות ואבטחת מידע אישי ועסקי נעשות קריטיות ומורכבות יותר. סוגיות פריבטיות ואבטחת נתונים דורשות תשומת לב מיוחדת ב-AI כיוון שגישה לנתונים חיונית למערכות AI לעשות תחזיות והחלטות מדויקות ומושכלות על אנשים.
-> [🎥 לחצו כאן לצפייה בסרטון: אבטחה ב-AI](https://www.microsoft.com/videoplayer/embed/RE4voJF)
+> [🎥 לחצו כאן לסרטון: אבטחה ב-AI](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- בתעשייה עשינו התקדמות משמעותית בפרטיות ואבטחה, מונעת באופן משמעותי על ידי רגולציות כמו ה-GDPR (General Data Protection Regulation).
-- עם זאת, במערכות AI עלינו להכיר במתח בין הצורך ביותר נתונים אישיים כדי להפוך את המערכות ליותר אישיות ויעילות – לבין פרטיות.
-- כמו עם לידת המחשבים המחוברים לאינטרנט, אנו גם רואים עלייה משמעותית במספר סוגיות האבטחה הקשורות ל-AI.
-- באותו הזמן, ראינו שימוש ב-AI לשיפור האבטחה. לדוגמה, רוב סורקי האנטי-וירוס המודרניים מונעים על ידי AI היום.
-- עלינו להבטיח שתהליכי מדע הנתונים שלנו ישתלבו בהרמוניה עם שיטות הפרטיות והאבטחה העדכניות ביותר.
+- בתעשייה שלנו נעשו התפתחויות משמעותיות בפרטיות ואבטחה, שניזונו במידה רבה מה-GDPR (תקנת הגנת המידע הכללית).
+- אך עם מערכות AI עלינו להכיר במתח בין הצורך בנתונים אישיים כדי להפוך מערכות ליותר אישיות ויעילות – לבין פרטיות.
+- בדומה ללידת המחשבים המחוברים עם האינטרנט, אנו רואים גם עלייה משמעותית במספר סוגיות האבטחה הקשורות ל-AI.
+- במקביל, ראינו שימוש ב-AI לשיפור האבטחה. לדוגמה, רוב הסורקים המודרניים נגד וירוסים מונעים היום על ידי אלגוריתמים AI.
+- עלינו להבטיח שתהליכי מדעי הנתונים שלנו משולבים בהרמוניה עם השיטות האחרונות של פרטיות ואבטחה.
-### שקיפות
-מערכות AI צריכות להיות מובנות. חלק קריטי בשקיפות הוא הסבר ההתנהגות של מערכות AI ושל רכיביהן. שיפור ההבנה של מערכות AI דורש שהגורמים המעורבים יבינו כיצד ולמה הן פועלות, כך שיוכלו לזהות בעיות ביצועים פוטנציאליות, חששות בטיחות ופרטיות, הטיות, פרקטיקות מפלות או תוצאות לא מכוונות. אנו גם מאמינים שמי שמשתמש במערכות AI צריך להיות כנה וגלוי לגבי מתי, למה ואיך הוא בוחר להפעיל אותן, כמו גם לגבי המגבלות של המערכות שהוא משתמש בהן. לדוגמה, אם בנק משתמש במערכת AI כדי לתמוך בהחלטות הלוואה לצרכנים, חשוב לבחון את התוצאות ולהבין אילו נתונים משפיעים על ההמלצות של המערכת. ממשלות מתחילות להסדיר את ה-AI בתעשיות שונות, ולכן מדעני נתונים וארגונים חייבים להסביר אם מערכת AI עומדת בדרישות הרגולציה, במיוחד כאשר יש תוצאה לא רצויה.
+### שקיפות
+מערכות AI צריכות להיות מובנות. חלק חשוב בשקיפות הוא הסבר התנהגות מערכות ה-AI והרכיבים שלהן. שיפור ההבנה של מערכות AI דורש מהמעורבים להבין כיצד ומדוע הן פועלות, כדי שיוכלו לזהות בעיות ביצועים פוטנציאליות, חששות בטיחות ופרטיות, הטיות, פרקטיקות הכללה לא ראויות או תוצאות בלתי מכוונות. אנו גם מאמינים כי אלה שמשתמשים במערכות AI צריכים להיות כנים וגלויים לגבי מתי, מדוע ואיך הם בוחרים ליישמן. כמו גם לגבי מגבלות המערכות שבהן הם משתמשים. לדוגמה, אם בנק משתמש במערכת AI לתמיכה בהחלטות ההלוואה לצרכנים, חשוב לבדוק את התוצאות ולהבין אילו נתונים משפיעים על המלצות המערכת. ממשלות מתחילות להסדיר את ה-AI ברחבי התעשיות, ולכן מדעני נתונים וארגונים חייבים להסביר אם מערכת AI עומדת בדרישות הרגולציה, במיוחד כאשר יש תוצאה לא רצויה.
-> [🎥 לחצו כאן לצפייה בסרטון: שקיפות ב-AI](https://www.microsoft.com/videoplayer/embed/RE4voJF)
+> [🎥 לחצו כאן לסרטון: שקיפות ב-AI](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- מכיוון שמערכות AI כל כך מורכבות, קשה להבין כיצד הן פועלות ולפרש את התוצאות.
-- חוסר הבנה זה משפיע על האופן שבו מערכות אלו מנוהלות, מופעלות ומתועדות.
-- חוסר הבנה זה משפיע יותר מכל על ההחלטות שמתקבלות באמצעות התוצאות שמערכות אלו מפיקות.
+- משום שמערכות AI מורכבות כל כך, קשה להבין כיצד הן פועלות ולפרש את התוצאות.
+- חוסר הבנה זה משפיע על האופן שבו מערכות אלו מנוהלות, מפעילות ומתועדות.
+- חוסר ההבנה הזה חשוב אף יותר משפיע על החלטות שמתקבלות תוך שימוש בתוצאות שמערכות אלו מפיקות.
### אחריות
+
+האנשים שמעצבים ומפעילים מערכות AI צריכים להיות אחראים לאופן שבו מערכותיהם פועלות. הצורך באחריות הוא קריטי במיוחד בטכנולוגיות שימוש רגישות כמו זיהוי פנים. לאחרונה, יש דרישה גוברת לטכנולוגיית זיהוי פנים, במיוחד מארגוני אכיפת חוק שרואים את הפוטנציאל בטכנולוגיה לשימושים כמו מציאת ילדים נעדרים. עם זאת, טכנולוגיות אלו עלולות לשמש ממשלות לסכן את חירויות היסוד של אזרחיהם על ידי, למשל, הפעלה מתמדת של מעקב על אנשים מסוימים. לכן, מדעני נתונים וארגונים חייבים להיות אחראים לאופן בו מערכת ה-AI שלהם משפיעה על יחידים או על החברה.
-האנשים שמעצבים ומפעילים מערכות AI חייבים להיות אחראים לאופן שבו המערכות שלהם פועלות. הצורך באחריות הוא קריטי במיוחד בטכנולוגיות רגישות כמו זיהוי פנים. לאחרונה, ישנה דרישה גוברת לטכנולוגיית זיהוי פנים, במיוחד מארגוני אכיפת חוק שרואים את הפוטנציאל של הטכנולוגיה בשימושים כמו מציאת ילדים נעדרים. עם זאת, טכנולוגיות אלו עשויות לשמש ממשלות כדי לסכן את חירויות היסוד של אזרחיהן, למשל, על ידי הפעלת מעקב מתמשך על אנשים מסוימים. לכן, מדעני נתונים וארגונים צריכים להיות אחראים לאופן שבו מערכת ה-AI שלהם משפיעה על אנשים או על החברה.
+[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "הגישה של מיקרוסופט לבינה מלאכותית אחראית")
-[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "הגישה של Microsoft ל-AI אחראי")
+> 🎥 לחצו על התמונה למעלה לסרטון: אזהרות ממעקב המוני באמצעות זיהוי פנים
-> 🎥 לחצו על התמונה למעלה לצפייה בסרטון: אזהרות מפני מעקב המוני באמצעות זיהוי פנים
-
-בסופו של דבר, אחת השאלות הגדולות ביותר לדור שלנו, כראשון שמביא את ה-AI לחברה, היא כיצד להבטיח שמחשבים יישארו אחראים לאנשים וכיצד להבטיח שהאנשים שמעצבים מחשבים יישארו אחראים לכל השאר.
+בסופו של דבר, אחת מהשאלות הגדולות של דורנו, כדור ראשון שמביא את ה-AI לחברה, היא איך להבטיח שמחשבים יישארו אחראים בפני אנשים ואיך להבטיח שאנשים שמעצבים מחשבים יישארו אחראים בפני כולם.
## הערכת השפעה
-לפני אימון מודל למידת מכונה, חשוב לבצע הערכת השפעה כדי להבין את מטרת מערכת ה-AI; מה השימוש המיועד; היכן היא תופעל; ומי יתקשר עם המערכת. אלו מועילים לבוחנים או למבקרים שמעריכים את המערכת לדעת אילו גורמים יש לקחת בחשבון בעת זיהוי סיכונים פוטנציאליים ותוצאות צפויות.
+לפני אימון מודל למידת מכונה, חשוב לבצע הערכת השפעה כדי להבין את מטרת מערכת ה-AI; מה השימוש המיועד; היכן היא תופעל; ומי יתקשר עם המערכת. אלו מידע מועיל לבוחן או לבודק המעריך את המערכת לדעת אילו גורמים לקחת בחשבון בעת זיהוי סיכונים פוטנציאליים ותוצאות צפויות.
-התחומים הבאים הם מוקדי תשומת לב בעת ביצוע הערכת השפעה:
+להלן אזורי מיקוד בעת ביצוע הערכת השפעה:
-* **השפעה שלילית על אנשים**. מודעות לכל מגבלה או דרישה, שימוש לא נתמך או כל מגבלה ידועה שמפריעה לביצועי המערכת היא חיונית כדי להבטיח שהמערכת לא תופעל באופן שעלול לגרום נזק לאנשים.
-* **דרישות נתונים**. הבנת האופן והיכן המערכת תשתמש בנתונים מאפשרת למבקרים לחקור כל דרישות נתונים שיש לקחת בחשבון (למשל, תקנות GDPR או HIPPA). בנוסף, יש לבחון האם מקור או כמות הנתונים מספקים לאימון.
-* **סיכום השפעה**. איסוף רשימה של נזקים פוטנציאליים שעלולים להתעורר משימוש במערכת. לאורך מחזור החיים של למידת מכונה, יש לבדוק אם הבעיות שזוהו טופלו או נפתרו.
-* **מטרות ישימות** לכל אחד מששת העקרונות המרכזיים. יש להעריך אם המטרות מכל אחד מהעקרונות הושגו ואם יש פערים.
+* **השפעה שלילית על יחידים**. חשוב להיות מודעים לכל מגבלה או דרישות, שימוש בלתי נתמך או כל הגבלה ידועה שמפריעה לביצועי המערכת כדי להבטיח שהמערכת לא תשמש בדרך שתווצר נזק ליחידים.
+* **דרישות נתונים**. הבנת כיצד והיכן המערכת תשתמש בנתונים מאפשרת לבוחנים לחקור את דרישות הנתונים שעליכם לקחת בחשבון (למשל, תקנות GDPR או HIPAA). בנוסף, לבדוק אם מקור או כמות הנתונים מספיקה לאימון.
+* **סיכום השפעה**. לאסוף רשימה של נזקים פוטנציאליים שעשויים לעלות משימוש במערכת. במהלך מחזור החיים של למידת המכונה, לבדוק האם בעיות שזוהו מומטות או מטופלות.
+* **מטרות ישימות** עבור כל אחד מששת העקרונות המרכזיים. להעריך אם המטרות מכל עקרון מתקיימות והאם יש פערים.
-## איתור באגים עם AI אחראי
-בדומה לאיתור באגים ביישום תוכנה, איתור באגים במערכת AI הוא תהליך הכרחי לזיהוי ופתרון בעיות במערכת. ישנם גורמים רבים שיכולים להשפיע על כך שמודל לא יפעל כמצופה או באופן אחראי. רוב מדדי הביצועים המסורתיים של מודלים הם אגרגטים כמותיים של ביצועי המודל, שאינם מספיקים לניתוח כיצד מודל מפר את עקרונות ה-AI האחראי. יתרה מכך, מודל למידת מכונה הוא "קופסה שחורה" שמקשה להבין מה מניע את תוצאותיו או לספק הסבר כאשר הוא טועה. בהמשך הקורס, נלמד כיצד להשתמש בלוח המחוונים של AI אחראי כדי לעזור באיתור באגים במערכות AI. לוח המחוונים מספק כלי הוליסטי למדעני נתונים ומפתחי AI לבצע:
+## איתור תקלות עם בינה מלאכותית אחראית
-* **ניתוח שגיאות**. לזהות את התפלגות השגיאות של המודל שיכולה להשפיע על ההוגנות או האמינות של המערכת.
-* **סקירת מודל**. לגלות היכן יש פערים בביצועי המודל בין קבוצות נתונים שונות.
-* **ניתוח נתונים**. להבין את התפלגות הנתונים ולזהות כל הטיה פוטנציאלית בנתונים שעלולה להוביל לבעיות הוגנות, הכלה ואמינות.
-* **הבנת מודל**. להבין מה משפיע או משפיע על תחזיות המודל. זה עוזר להסביר את התנהגות המודל, שחשובה לשקיפות ואחריות.
+בדומה לאיתור תקלות בתוכנה, איתור תקלות במערכת AI הוא תהליך נחוץ של זיהוי ופתרון בעיות במערכת. ישנם גורמים רבים שעשויים להשפיע על כך שמודל לא יבצע כמצופה או בצורה אחראית. רוב מדדי הביצועים המסורתיים של מודלים הם ערכים מספריים מרכזיים של ביצועי המודל, שאינם מספקים לנתח כיצד מודל מפר את עקרונות ה-AI האחראית. נוסף על כך, מודל למידת מכונה הוא תיבת שחורה המקשה להבין מה מניע את תוצאתו או לספק הסבר כאשר הוא טועה. בהמשך הקורס, נלמד כיצד להשתמש בלוח הבקרה של בינה מלאכותית אחראית כדי לסייע באיתור תקלות במערכות AI. לוח הבקרה מספק כלי הוליסטי למדעני נתונים ומפתחי AI לבצע:
-## 🚀 אתגר
+* **ניתוח שגיאות**. כדי לזהות את התפלגות השגיאות של המודל אשר עלולה להשפיע על ההוגנות או האמינות של המערכת.
+* **סקירת מודל**. כדי לגלות היכן קיימים פערים בביצועי המודל בקרב קבוצות נתונים.
+* **ניתוח נתונים**. כדי להבין את התפלגות הנתונים ולזהות הטיות פוטנציאליות שעלולות להוביל לבעיות של הוגנות, שיתופיות ואמינות.
+* **פירושיות המודל**. כדי להבין מה משפיע או משפעל את תחזיות המודל. זה מסייע בהסברת התנהגות המודל, החשובה לשקיפות ואחריות.
-כדי למנוע נזקים מלהיות מוכנסים מלכתחילה, עלינו:
-- לכלול מגוון של רקעים ופרספקטיבות בקרב האנשים שעובדים על מערכות
-- להשקיע במאגרי נתונים שמייצגים את המגוון של החברה שלנו
-- לפתח שיטות טובות יותר לאורך מחזור החיים של למידת מכונה לזיהוי ותיקון AI אחראי כאשר הוא מתרחש
+## 🚀 אתגר
+
+כדי למנוע נזקים כבר בשלב הראשוני, עלינו:
+
+- שיהיה גיוון רקעי והשקפות בין האנשים שעובדים על המערכות
+- להשקיע בסטי נתונים שמשקפים את הגיוון של החברה שלנו
+- לפתח שיטות טובות יותר לאורך מחזור חיי למידת המכונה לזיהוי ותיקון בינה מלאכותית אחראית כשהיא מתרחשת
-חשבו על תרחישים אמיתיים שבהם חוסר אמינות של מודל ניכר בבנייה ובשימוש במודל. מה עוד כדאי לקחת בחשבון?
+חשבו על תסריטים מחיי היום-יום שבהם חוסר אמינות של מודל ניכר בבנייתו ובשימוש בו. מה עוד צריך להתחשב בו?
-## [שאלון לאחר ההרצאה](https://ff-quizzes.netlify.app/en/ml/)
+## [חידון לאחר ההרצאה](https://ff-quizzes.netlify.app/en/ml/)
-## סקירה ולימוד עצמי
+## סקירה ולמידה עצמית
+
-בשיעור זה, למדתם כמה יסודות של מושגי הוגנות וחוסר הוגנות בלמידת מכונה.
-צפו בסדנה זו כדי להעמיק בנושאים:
+בשיעור זה, למדתם כמה יסודות של מושגי הוגנות ואי-הוגנות בלמידת מכונה.
+
+צפו בסדנה זו כדי להעמיק בנושאים:
-- במרדף אחר בינה מלאכותית אחראית: יישום עקרונות בפועל מאת בסמירה נושי, מהרנוש סמקי ואמיט שארמה
+- במרדף אחרי בינה מלאכותית אחראית: הבאת עקרונות אל הפרקטיקה מאת בסמירה נושי, מהרנווש סמאקי ואמיט שרמה
-[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: מסגרת קוד פתוח לבניית בינה מלאכותית אחראית")
+[](https://www.youtube.com/watch?v=tGgJCrA-MZU "ערכת כלים לבינה מלאכותית אחראית: מסגרת קוד פתוח לבניית בינה מלאכותית אחראית")
-> 🎥 לחצו על התמונה למעלה לצפייה בסרטון: RAI Toolbox: מסגרת קוד פתוח לבניית בינה מלאכותית אחראית מאת בסמירה נושי, מהרנוש סמקי ואמיט שארמה
+> 🎥 לחצו על התמונה למעלה לסרטון: ערכת כלים לבינה מלאכותית אחראית: מסגרת קוד פתוח לבניית בינה מלאכותית אחראית מאת בסמירה נושי, מהרנווש סמאקי, ואמיט שרמה
-בנוסף, קראו:
+בנוסף, קראו:
-- מרכז המשאבים של Microsoft בנושא בינה מלאכותית אחראית: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
+- מרכז המשאבים של מיקרוסופט לבינה מלאכותית אחראית: [משאבי בינה מלאכותית אחראית – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
-- קבוצת המחקר FATE של Microsoft: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
+- קבוצת המחקר FATE של מיקרוסופט: [FATE: הוגנות, אחריות, שקיפות ואתיקה בבינה מלאכותית - מחקר מיקרוסופט](https://www.microsoft.com/research/theme/fate/)
-RAI Toolbox:
+ערכת כלים לבינה מלאכותית אחראית:
-- [מאגר GitHub של Responsible AI Toolbox](https://github.com/microsoft/responsible-ai-toolbox)
+- [מאגר GitHub של ערכת כלים לבינה מלאכותית אחראית](https://github.com/microsoft/responsible-ai-toolbox)
-קראו על הכלים של Azure Machine Learning להבטחת הוגנות:
+קראו על כלי Azure Machine Learning להבטחת הוגנות:
-- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
+- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
-## משימה
+## מטלה
-[חקור את RAI Toolbox](assignment.md)
+[חקור את ערכת הכלים לבינה מלאכותית אחראית](assignment.md)
---
-**כתב ויתור**:
-מסמך זה תורגם באמצעות שירות תרגום מבוסס בינה מלאכותית [Co-op Translator](https://github.com/Azure/co-op-translator). למרות שאנו שואפים לדיוק, יש לקחת בחשבון שתרגומים אוטומטיים עשויים להכיל שגיאות או אי דיוקים. המסמך המקורי בשפתו המקורית צריך להיחשב כמקור סמכותי. עבור מידע קריטי, מומלץ להשתמש בתרגום מקצועי על ידי אדם. איננו נושאים באחריות לאי הבנות או לפרשנויות שגויות הנובעות משימוש בתרגום זה.
\ No newline at end of file
+
+**כתב ויתור**:
+מסמך זה תורגם באמצעות שירות תרגום אוטומטי [Co-op Translator](https://github.com/Azure/co-op-translator). למרות שאנו שואפים לדיוק, יש לקחת בחשבון שתרגומים אוטומטיים עלולים להכיל שגיאות או אי-דיוקים. יש להחשיב את המסמך המקורי בשפתו הטבעית כמקור הסמכות. למידע קריטי מומלץ להשתמש בתרגום מקצועי על ידי מתרגם אדם. אנו לא אחראים לכל אי-הבנה או פירוש שגוי הנובע מהשימוש בתרגום זה.
+
\ No newline at end of file
diff --git a/translations/he/2-Regression/1-Tools/README.md b/translations/he/2-Regression/1-Tools/README.md
index eb866cdf5..de344abea 100644
--- a/translations/he/2-Regression/1-Tools/README.md
+++ b/translations/he/2-Regression/1-Tools/README.md
@@ -1,120 +1,121 @@
-# התחילו עם Python ו-Scikit-learn עבור מודלים של רגרסיה
+# התחילו עם פייתון ו-Scikit-learn למודלי רגרסיה
-
+
-> סקצ'נוט מאת [Tomomi Imura](https://www.twitter.com/girlie_mac)
+> סקטצ'נוט מאת [Tomomi Imura](https://www.twitter.com/girlie_mac)
-## [שאלון לפני השיעור](https://ff-quizzes.netlify.app/en/ml/)
+## [מבחן טרום-הרצאה](https://ff-quizzes.netlify.app/en/ml/)
-> ### [השיעור הזה זמין גם ב-R!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
+> ### [שיעור זה זמין ב-R!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
-## מבוא
+## مقدّمة
-בארבעת השיעורים הללו, תלמדו כיצד לבנות מודלים של רגרסיה. נדון במה הם משמשים בקרוב. אבל לפני שתתחילו, ודאו שיש לכם את הכלים הנכונים כדי להתחיל את התהליך!
+בארבעת השיעורים האלה תגלה כיצד לבנות מודלי רגרסיה. נדון במה הם מיועדים בקרוב. אבל לפני שתגשים משהו, ודא שיש לך את הכלים המתאימים להתחלת התהליך!
-בשיעור הזה תלמדו:
+בשיעור זה תלמד כיצד:
-- להגדיר את המחשב שלכם למשימות למידת מכונה מקומיות.
-- לעבוד עם מחברות Jupyter.
+- להגדיר את המחשב שלך למשימות למידת מכונה מקומיות.
+- לעבוד עם פנקסי Jupyter.
- להשתמש ב-Scikit-learn, כולל התקנה.
-- לחקור רגרסיה ליניארית באמצעות תרגיל מעשי.
+- לחקור את הרגרסיה הליניארית באמצעות תרגיל מעשי.
## התקנות והגדרות
-[](https://youtu.be/-DfeD2k2Kj0 "ML למתחילים - הגדרת הכלים שלכם לבניית מודלים של למידת מכונה")
+[](https://youtu.be/-DfeD2k2Kj0 "ML למתחילים - התקן את הכלים שלך כדי לבנות מודלי למידת מכונה")
-> 🎥 לחצו על התמונה למעלה לצפייה בסרטון קצר על הגדרת המחשב שלכם ללמידת מכונה.
+> 🎥 לחץ על התמונה למעלה לסרטון קצר שמראה כיצד להגדיר את המחשב ללמידת מכונה.
-1. **התקינו Python**. ודאו ש-[Python](https://www.python.org/downloads/) מותקן במחשב שלכם. תשתמשו ב-Python עבור משימות רבות במדעי הנתונים ולמידת מכונה. רוב מערכות המחשב כבר כוללות התקנה של Python. ישנם [חבילות קוד Python](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) שימושיות שיכולות להקל על ההגדרה עבור חלק מהמשתמשים.
+1. **התקן את פייתון**. ודא ש-[Python](https://www.python.org/downloads/) מותקן על המחשב שלך. תשתמש ב-Python עבור משימות רבות במדעי הנתונים ולמידת מכונה. רוב המחשבים כבר כוללים התקנת Python. יש גם חבילות קידוד [Python](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) שימושיות להקלת ההתקנה עבור חלק מהמשתמשים.
- עם זאת, שימושים מסוימים ב-Python דורשים גרסה אחת של התוכנה, בעוד אחרים דורשים גרסה שונה. לכן, כדאי לעבוד בתוך [סביבה וירטואלית](https://docs.python.org/3/library/venv.html).
+ עם זאת, שימושים שונים של 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 בקורס הזה, אז אולי תרצו ללמוד כיצד [להגדיר את Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) לפיתוח ב-Python.
+2. **התקן את Visual Studio Code**. ודא שיש לך את Visual Studio Code מותקן על המחשב שלך. עקוב אחר ההוראות ל-[התקנת Visual Studio Code](https://code.visualstudio.com/) להתקנה בסיסית. תלמד להשתמש ב-Python בתוך Visual Studio Code בקורס זה, אז כדאי לחדד את הידע שלך כיצד [להגדיר Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) לפיתוח Python.
- > תרגישו בנוח עם Python על ידי עבודה עם אוסף זה של [מודולי למידה](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)
+ > הכירו את Python באמצעות עבודה עם אוסף זה של [מודולים ללמידה](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)
>
- > [](https://youtu.be/yyQM70vi7V8 "הגדרת Python עם Visual Studio Code")
+ > [](https://youtu.be/yyQM70vi7V8 "הגדר Python עם Visual Studio Code")
>
- > 🎥 לחצו על התמונה למעלה לצפייה בסרטון: שימוש ב-Python בתוך VS Code.
+ > 🎥 לחץ על התמונה למעלה לסרטון: שימוש ב-Python בתוך VS Code.
-3. **התקינו Scikit-learn**, על ידי מעקב אחר [ההוראות הללו](https://scikit-learn.org/stable/install.html). מכיוון שאתם צריכים לוודא שאתם משתמשים ב-Python 3, מומלץ להשתמש בסביבה וירטואלית. שימו לב, אם אתם מתקינים את הספרייה הזו על Mac עם M1, יש הוראות מיוחדות בעמוד המקושר למעלה.
+3. **התקן את Scikit-learn**, על ידי עקיבה אחרי [הוראות אלה](https://scikit-learn.org/stable/install.html). מכיוון שעליך לוודא שאתה משתמש ב-Python 3, מומלץ שתשתמש בסביבה וירטואלית. שים לב, אם אתה מתקין את הספרייה הזו על מחשב M1 של Mac, יש הוראות מיוחדות בדף המקושר לעיל.
-4. **התקינו Jupyter Notebook**. תצטרכו [להתקין את חבילת Jupyter](https://pypi.org/project/jupyter/).
+1. **התקן את Jupyter Notebook**. תצטרך [להתקין את חבילת Jupyter](https://pypi.org/project/jupyter/).
-## סביבת העבודה שלכם ללמידת מכונה
+## סביבת הפיתוח שלך ללמידת מכונה
-אתם הולכים להשתמש ב-**מחברות** כדי לפתח את קוד ה-Python שלכם וליצור מודלים של למידת מכונה. סוג קובץ זה הוא כלי נפוץ עבור מדעני נתונים, וניתן לזהות אותו לפי הסיומת `.ipynb`.
+תשתמש ב-**פנקסים (notebooks)** לפיתוח קוד פייתון ולבניית מודלי למידת מכונה. קובץ מסוג זה הוא כלי נפוץ למדעני נתונים, וניתן לזהות אותם לפי הסיומת שלהם `.ipynb`.
-מחברות הן סביבה אינטראקטיבית שמאפשרת למפתח גם לקודד וגם להוסיף הערות ולכתוב תיעוד סביב הקוד, מה שמאוד מועיל עבור פרויקטים ניסיוניים או מחקריים.
+פנקסים הם סביבה אינטראקטיבית שמאפשרת למפתח גם לקודד וגם להוסיף הערות ולכתוב תיעוד סביב הקוד, דבר שעוזר מאוד בפרויקטים ניסיוניים או מחקריים.
-[](https://youtu.be/7E-jC8FLA2E "ML למתחילים - הגדרת מחברות Jupyter כדי להתחיל לבנות מודלים של רגרסיה")
+[](https://youtu.be/7E-jC8FLA2E "ML למתחילים - התקן פנקסי Jupyter כדי להתחיל לבנות מודלי רגרסיה")
-> 🎥 לחצו על התמונה למעלה לצפייה בסרטון קצר על ביצוע התרגיל הזה.
+> 🎥 לחץ על התמונה למעלה לסרטון קצר שמראה את התרגיל.
-### תרגיל - עבודה עם מחברת
+### תרגיל - עבודה עם פנקס
-בתיקייה הזו, תמצאו את הקובץ _notebook.ipynb_.
+בתיקייה זו תמצא את הקובץ _notebook.ipynb_.
-1. פתחו את _notebook.ipynb_ ב-Visual Studio Code.
+1. פתח את הקובץ _notebook.ipynb_ ב-Visual Studio Code.
- שרת Jupyter יתחיל עם Python 3+. תמצאו אזורים במחברת שניתן `להריץ`, חלקי קוד. תוכלו להריץ בלוק קוד על ידי בחירת האייקון שנראה כמו כפתור הפעלה.
+ יופעל שרת Jupyter עם פייתון 3+. תמצא אזורים בפנקס שניתן `להריץ`, קטעי קוד. אתה יכול להריץ קוד על ידי בחירת האייקון שנראה כמו כפתור הפעלה.
-2. בחרו את האייקון `md` והוסיפו קצת Markdown, ואת הטקסט הבא **# ברוכים הבאים למחברת שלכם**.
+1. בחר באייקון `md` והוסף קצת מרקדאון, עם הטקסט הבא **# Welcome to your notebook**.
- לאחר מכן, הוסיפו קצת קוד Python.
+ לאחר מכן, הוסף קצת קוד פייתון.
-3. הקלידו **print('hello notebook')** בבלוק הקוד.
-4. בחרו את החץ כדי להריץ את הקוד.
+1. הקלד **print('hello notebook')** בקטע הקוד.
+1. בחר בחץ כדי להריץ את הקוד.
- אתם אמורים לראות את ההצהרה המודפסת:
+ תראה את ההצהרה המודפסת:
```output
hello notebook
```
-
+
-אתם יכולים לשלב את הקוד שלכם עם הערות כדי לתעד את המחברת בעצמכם.
+אתה יכול לסרוג את הקוד שלך עם הערות לתיעוד פנקס עצמאי.
-✅ חשבו לרגע כמה שונה סביבת העבודה של מפתחי אתרים מזו של מדעני נתונים.
+✅ חשוב לרגע איך הסביבה של מפתח ווב שונה מאוד מזו של מדען נתונים.
-## התחלה עם Scikit-learn
+## התחלת עבודה עם Scikit-learn
-עכשיו ש-Python מוגדר בסביבה המקומית שלכם, ואתם מרגישים בנוח עם מחברות Jupyter, בואו נרגיש בנוח גם עם Scikit-learn (יש להגות `sci` כמו `science`). Scikit-learn מספקת [API נרחב](https://scikit-learn.org/stable/modules/classes.html#api-ref) שיעזור לכם לבצע משימות למידת מכונה.
+כעת שפייתון מוגדר במחשב המקומי שלך, ואתה רגיל עם פנקסי Jupyter, נעבור להיות נוחים גם עם Scikit-learn (מבוטא `sci` כמו במילה `science`). Scikit-learn מציעה [API נרחב](https://scikit-learn.org/stable/modules/classes.html#api-ref) כדי לעזור לך לבצע משימות ML.
-לפי [האתר שלהם](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn היא ספריית למידת מכונה בקוד פתוח שתומכת בלמידה מונחית ולמידה לא מונחית. היא גם מספקת כלים שונים להתאמת מודלים, עיבוד נתונים, בחירת מודלים והערכה, ועוד הרבה כלי עזר."
+בהתאם ל-[אתר שלהם](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn היא ספריית קוד פתוח ללמידת מכונה שתומכת בלמידה מפוקחת ובלמידה לא מפוקחת. היא גם מספקת כלים שונים להתאמת מודלים, טרום-עיבוד נתונים, בחירת מודלים והערכה, ורבות אחרות."
-בקורס הזה, תשתמשו ב-Scikit-learn ובכלים נוספים כדי לבנות מודלים של למידת מכונה לביצוע מה שאנחנו מכנים 'למידת מכונה מסורתית'. נמנענו בכוונה מרשתות נוירונים ולמידה עמוקה, שכן הם מכוסים טוב יותר בתוכנית הלימודים שלנו 'AI למתחילים' שתצא בקרוב.
+בקורס זה תשתמש ב-Scikit-learn וכלים אחרים לבניית מודלי למידת מכונה לביצוע מה שאנו קוראים 'משימות למידת מכונה מסורתיות'. הימנענו במכוון מרשתות עצביות ולמידה עמוקה, שכן הם מטופלים טוב יותר בקורס הקרוב שלנו 'AI למתחילים'.
-Scikit-learn הופכת את בניית המודלים והערכתם לשימוש לפשוטה. היא מתמקדת בעיקר בשימוש בנתונים מספריים וכוללת כמה מערכי נתונים מוכנים לשימוש ככלי למידה. היא גם כוללת מודלים מוכנים לסטודנטים לנסות. בואו נחקור את תהליך טעינת הנתונים המובנים מראש ושימוש באומדן מובנה למודל למידת מכונה הראשון עם Scikit-learn באמצעות נתונים בסיסיים.
+Scikit-learn מקלה על בניית מודלים והערכתם לשימוש. היא מתמקדת בעיקר בשימוש בנתונים מספריים וכוללת כמה מערכי נתונים מוכנים לשימוש ככלי למידה. היא כוללת גם מודלים מוכנים שמאפשרים לתלמידים לנסות. בוא נחקור תחילה את תהליך טעינת נתונים מוכנים לשימוש ושימוש באסטרטגיה מובנית למודל ML ראשון עם Scikit-learn עם נתונים בסיסיים.
-## תרגיל - המחברת הראשונה שלכם עם Scikit-learn
+## תרגיל - פנקס Scikit-learn הראשון שלך
-> מדריך זה נוצר בהשראת [דוגמת הרגרסיה הליניארית](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) באתר של Scikit-learn.
+> מדריך זה הושפע מ-[דוגמת הרגרסיה הליניארית](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) באתר Scikit-learn.
-[](https://youtu.be/2xkXL5EUpS0 "ML למתחילים - פרויקט הרגרסיה הליניארית הראשון שלכם ב-Python")
-> 🎥 לחצו על התמונה למעלה לצפייה בסרטון קצר על ביצוע התרגיל הזה.
+[](https://youtu.be/2xkXL5EUpS0 "ML למתחילים - פרויקט הרגרסיה הליניארית הראשון שלך בפייתון")
-בקובץ _notebook.ipynb_ המשויך לשיעור הזה, נקו את כל התאים על ידי לחיצה על אייקון 'פח האשפה'.
+> 🎥 לחץ על התמונה למעלה לסרטון קצר שמראה תרגיל זה.
-בקטע הזה, תעבדו עם מערך נתונים קטן על סוכרת שמובנה ב-Scikit-learn לצורכי למידה. דמיינו שאתם רוצים לבדוק טיפול עבור חולי סוכרת. מודלים של למידת מכונה עשויים לעזור לכם לקבוע אילו חולים יגיבו טוב יותר לטיפול, בהתבסס על שילובים של משתנים. אפילו מודל רגרסיה בסיסי מאוד, כאשר הוא מוצג בצורה חזותית, עשוי להראות מידע על משתנים שיעזרו לכם לארגן את הניסויים הקליניים התיאורטיים שלכם.
+בקובץ _notebook.ipynb_ המשויך לשיעור זה, נקה את כל התאים על ידי לחיצה על אייקון פח האשפה.
-✅ ישנם סוגים רבים של שיטות רגרסיה, והבחירה תלויה בשאלה שאתם מחפשים תשובה עליה. אם אתם רוצים לחזות את הגובה הסביר של אדם בגיל מסוים, תשתמשו ברגרסיה ליניארית, שכן אתם מחפשים **ערך מספרי**. אם אתם מעוניינים לגלות האם סוג מסוים של מטבח צריך להיחשב טבעוני או לא, אתם מחפשים **שיוך קטגוריה**, ולכן תשתמשו ברגרסיה לוגיסטית. תלמדו יותר על רגרסיה לוגיסטית בהמשך. חשבו קצת על שאלות שתוכלו לשאול את הנתונים, ואיזו משיטה זו תהיה המתאימה יותר.
+בחלק זה תעבוד עם מערך נתונים קטן על סוכרת שנבנה בתוך Scikit-learn למטרות למידה. דמיין שאתה רוצה לבדוק טיפול לחולי סוכרת. מודלי למידת מכונה עשויים לעזור לך לקבוע אילו מטופלים יגיבו טוב יותר לטיפול, בהתבסס על שילובים של משתנים. אפילו מודל רגרסיה בסיסי, כשהוא מוצג, עשוי להראות מידע על משתנים שיעזור לך לארגן ניסויים קליניים תיאורטיים.
-בואו נתחיל במשימה הזו.
+✅ יש הרבה סוגים של שיטות רגרסיה, ואיזו תבחר תלוי בתוצאה שאתה מחפש. אם אתה רוצה לנבא את הגובה הסביר לאדם בגיל מסוים, תשתמש ברגרסיה ליניארית, כי אתה מחפש **ערך מספרי**. אם אתה מעוניין לגלות האם סוג מטבח מוגדר כצמחוני או לא, אתה מחפש **שייכות קטגוריאלית** ולכן תשתמש בלוגיסטית. תלמד על רגרסיה לוגיסטית מאוחר יותר. חשוב קצת על שאלות שאתה יכול לשאול את הנתונים ואיזו שיטה מתאימה יותר.
+
+בוא נתחיל במשימה הזו.
### ייבוא ספריות
למשימה הזו נייבא כמה ספריות:
-- **matplotlib**. זהו [כלי גרפי](https://matplotlib.org/) שימושי, ונשתמש בו ליצירת גרף קו.
-- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) היא ספרייה שימושית לטיפול בנתונים מספריים ב-Python.
-- **sklearn**. זו הספרייה [Scikit-learn](https://scikit-learn.org/stable/user_guide.html).
+- **matplotlib**. זהו [כלי גרפים](https://matplotlib.org/) שימושי ואנו נשתמש בו ליצירת גרף קווים.
+- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) היא ספרייה שימושית לניהול נתונים מספריים בפייתון.
+- **sklearn**. זו ספריית [Scikit-learn](https://scikit-learn.org/stable/user_guide.html).
-ייבאו כמה ספריות שיעזרו לכם במשימות.
+ייבא כמה ספריות שיעזרו במשימות שלך.
-1. הוסיפו ייבוא על ידי הקלדת הקוד הבא:
+1. הוסף ייבואים על ידי הקלדת הקוד הבא:
```python
import matplotlib.pyplot as plt
@@ -122,26 +123,26 @@ Scikit-learn הופכת את בניית המודלים והערכתם לשימו
from sklearn import datasets, linear_model, model_selection
```
- למעלה אתם מייבאים `matplotlib`, `numpy`, ואתם מייבאים `datasets`, `linear_model` ו-`model_selection` מ-`sklearn`. `model_selection` משמש לפיצול נתונים לסטי אימון ובדיקה.
+ למעלה אתה מייבא את `matplotlib`, `numpy` ואת `datasets`, `linear_model` ו-`model_selection` מ-`sklearn`. `model_selection` משמש לחלוקת הנתונים לקבוצות אימון ובדיקה.
### מערך הנתונים של סוכרת
-מערך הנתונים המובנה [diabetes dataset](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) כולל 442 דגימות נתונים על סוכרת, עם 10 משתנים תכונה, שחלקם כוללים:
+מערך הנתונים המובנה [diabetes dataset](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) כולל 442 דגימות מידע על סוכרת, עם 10 משתני תכונות, חלקם כוללים:
- גיל: גיל בשנים
-- BMI: מדד מסת גוף
-- BP: לחץ דם ממוצע
-- S1 TC: תאי T (סוג של תאי דם לבנים)
+- bmi: מדד מסת גוף
+- לחץ דם: לחץ דם ממוצע
+- s1 tc: תאי T (סוג של תאי דם לבנים)
-✅ מערך הנתונים הזה כולל את מושג 'מין' כמשתנה תכונה חשוב למחקר על סוכרת. מערכי נתונים רפואיים רבים כוללים סוג זה של סיווג בינארי. חשבו קצת על איך סיווגים כאלה עשויים להוציא חלקים מסוימים מהאוכלוסייה מטיפולים.
+✅ מערך זה כולל את המשתנה 'מין' כמשתנה חשוב למחקר סביב סוכרת. מערכות רפואיות רבות כוללות סיווג בינארי כזה. חשוב לחשוב כיצד קטגוריזציות כאלה עשויות להוציא חלקים מסוימים של אוכלוסייה מהטיפולים.
-עכשיו, טענו את נתוני X ו-y.
+עכשיו, טען את הנתונים של X ו-y.
-> 🎓 זכרו, זו למידה מונחית, ואנחנו צריכים מטרה בשם 'y'.
+> 🎓 זכור, זו למידה מפוקחת, ונדרש משתנה מטרה מוכר בשם 'y'.
-בתא קוד חדש, טענו את מערך הנתונים של סוכרת על ידי קריאה ל-`load_diabetes()`. הקלט `return_X_y=True` מסמן ש-`X` יהיה מטריצת נתונים, ו-`y` יהיה יעד הרגרסיה.
+בתא קוד חדש, טען את מערך הנתונים של סוכרת על ידי קריאה ל-`load_diabetes()`. הפרמטר `return_X_y=True` מציין ש-`X` יהיה מטריצת נתונים, ו-`y` יהיה משתנה המטרה של הרגרסיה.
-1. הוסיפו כמה פקודות הדפסה כדי להציג את הצורה של מטריצת הנתונים והאלמנט הראשון שלה:
+1. הוסף כמה פקודות הדפסה להראות את מימדי מטריצת הנתונים ואת האלמנט הראשון שלה:
```python
X, y = datasets.load_diabetes(return_X_y=True)
@@ -149,9 +150,9 @@ Scikit-learn הופכת את בניית המודלים והערכתם לשימו
print(X[0])
```
- מה שאתם מקבלים בתגובה הוא טופל. מה שאתם עושים הוא להקצות את שני הערכים הראשונים של הטופל ל-`X` ו-`y` בהתאמה. למדו יותר [על טופלים](https://wikipedia.org/wiki/Tuple).
+ מה שמוחזר הוא זוג ערכים (tuple). אתה מקצה את שני הערכים הראשונים של הזוג ל-`X` ול-`y` בהתאמה. למד עוד על [tuples](https://wikipedia.org/wiki/Tuple).
- אתם יכולים לראות שלנתונים האלה יש 442 פריטים בצורת מערכים של 10 אלמנטים:
+ ניתן לראות שמדובר ב-442 פריטים במערכי 10 אלמנטים:
```text
(442, 10)
@@ -159,39 +160,39 @@ Scikit-learn הופכת את בניית המודלים והערכתם לשימו
-0.04340085 -0.00259226 0.01990842 -0.01764613]
```
- ✅ חשבו קצת על הקשר בין הנתונים ליעד הרגרסיה. רגרסיה ליניארית חוזה קשרים בין תכונה X למשתנה יעד y. האם תוכלו למצוא את [היעד](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) עבור מערך הנתונים של סוכרת בתיעוד? מה מערך הנתונים הזה מדגים, בהתחשב ביעד?
+ ✅ חשוב לחשוב על הקשר בין הנתונים למשתנה המטרה ברגרסיה. הרגרסיה הליניארית מנבאת קשרים בין תכונת X למשתנה המטרה y. האם תוכל למצוא את [המטרה](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) של מערך הסוכרת בתיעוד? מה מערך הנתונים מדגים, בהתחשב במטרה זו?
-2. לאחר מכן, בחרו חלק ממערך הנתונים הזה כדי לשרטט על ידי בחירת העמודה השלישית של מערך הנתונים. תוכלו לעשות זאת על ידי שימוש באופרטור `:` כדי לבחור את כל השורות, ואז לבחור את העמודה השלישית באמצעות האינדקס (2). תוכלו גם לשנות את צורת הנתונים להיות מערך דו-ממדי - כפי שנדרש לשרטוט - על ידי שימוש ב-`reshape(n_rows, n_columns)`. אם אחד הפרמטרים הוא -1, הממד המתאים מחושב אוטומטית.
+2. עכשיו בחר חלק ממערך הנתונים לציור על ידי בחירת העמודה השלישית. ניתן לעשות זאת באמצעות האופרטור `:` לבחירת כל השורות, ואז בחירת העמודה השלישית באמצעות האינדקס (2). אפשר גם לעצב את הנתונים כמערך דו-ממדי - כנדרש לציור - באמצעות `reshape(n_rows, n_columns)`. אם אחד הפרמטרים הוא -1, המימד המקביל מחושב אוטומטית.
```python
X = X[:, 2]
X = X.reshape((-1,1))
```
- ✅ בכל זמן, הדפיסו את הנתונים כדי לבדוק את צורתם.
+ ✅ בכל עת, הדפס את הנתונים כדי לבדוק את צורתם.
-3. עכשיו כשיש לכם נתונים מוכנים לשרטוט, תוכלו לראות אם מכונה יכולה לעזור לקבוע חלוקה הגיונית בין המספרים במערך הנתונים הזה. כדי לעשות זאת, עליכם לפצל גם את הנתונים (X) וגם את היעד (y) לסטי בדיקה ואימון. ל-Scikit-learn יש דרך פשוטה לעשות זאת; תוכלו לפצל את נתוני הבדיקה שלכם בנקודה נתונה.
+3. כעת כשיש לך נתונים מוכנים לציור, תראה אם מכונה יכולה לסייע לקבוע חלוקה הגיונית בין המספרים במערך זה. לשם כך, יש לחלק את הנתונים (X) ואת המשתנה המטרה (y) לקבוצות אימון ובדיקה. ל-Scikit-learn יש דרך פשוטה לעשות זאת; אתה יכול לחלק את הנתונים בנקודה נתונה.
```python
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33)
```
-4. עכשיו אתם מוכנים לאמן את המודל שלכם! טענו את מודל הרגרסיה הליניארית ואמנו אותו עם סטי האימון של X ו-y באמצעות `model.fit()`:
+4. עכשיו אתה מוכן לאמן את המודל שלך! טען את מודל הרגרסיה הליניארית ואמן אותו עם קבוצות האימון X ו-y באמצעות `model.fit()`:
```python
model = linear_model.LinearRegression()
model.fit(X_train, y_train)
```
- ✅ `model.fit()` היא פונקציה שתראו בהרבה ספריות למידת מכונה כמו TensorFlow.
+ ✅ `model.fit()` היא פונקציה שתראה בהרבה ספריות ML כגון TensorFlow
-5. לאחר מכן, צרו תחזית באמצעות נתוני הבדיקה, באמצעות הפונקציה `predict()`. זה ישמש לציור הקו בין קבוצות הנתונים של המודל.
+5. לאחר מכן, צור חיזוי באמצעות נתוני הבדיקה, באמצעות הפונקציה `predict()`. היא תשמש לשרטוט קו בין קבוצות הנתונים.
```python
y_pred = model.predict(X_test)
```
-6. עכשיו הגיע הזמן להציג את הנתונים בגרף. Matplotlib הוא כלי מאוד שימושי למשימה הזו. צרו גרף פיזור של כל נתוני הבדיקה של X ו-y, והשתמשו בתחזית כדי לצייר קו במקום המתאים ביותר, בין קבוצות הנתונים של המודל.
+6. עכשיו הזמן להציג את הנתונים בגרף. Matplotlib הוא כלי מאוד שימושי למשימה זו. צור גרף פיזור של כל נתוני הבדיקה X ו-y, והשתמש בחיזוי כדי לשרטט קו במקום המתאים ביותר, בין קבוצות הנתונים של המודל.
```python
plt.scatter(X_test, y_test, color='black')
@@ -202,29 +203,32 @@ Scikit-learn הופכת את בניית המודלים והערכתם לשימו
plt.show()
```
- 
-✅ תחשבו קצת על מה שקורה כאן. קו ישר עובר דרך הרבה נקודות קטנות של נתונים, אבל מה הוא עושה בדיוק? האם אתם יכולים לראות איך אפשר להשתמש בקו הזה כדי לחזות איפה נקודת נתונים חדשה ולא מוכרת צריכה להתאים ביחס לציר ה-y של הגרף? נסו לנסח במילים את השימוש המעשי של המודל הזה.
+ 
+
-מזל טוב, יצרתם את מודל הרגרסיה הליניארית הראשון שלכם, ביצעתם תחזית באמצעותו, והצגתם אותה בגרף!
+ ✅ חשוב קצת על מה שקורה כאן. קו ישר עובר דרך נקודות נתונים קטנות רבות, אבל מה הוא בעצם עושה? האם אתה רואה כיצד אתה אמור להיות מסוגל להשתמש בקו הזה כדי לחזות היכן נקודת נתונים חדשה ובלתי נראית צריכה להתאים ביחס לציר ה- y של הגרף? נסה לנסח במילים את השימוש המעשי במודל זה.
+
+מזל טוב, בנית את מודל הרגרסיה הליניארית הראשון שלך, יצרת באמצעותו תחזית והצגת אותה בגרף!
---
## 🚀אתגר
-צרו גרף עבור משתנה אחר מתוך מערך הנתונים הזה. רמז: ערכו את השורה הזו: `X = X[:,2]`. בהתחשב במטרת מערך הנתונים הזה, מה אתם יכולים לגלות על התקדמות מחלת הסוכרת?
-
-## [שאלון לאחר ההרצאה](https://ff-quizzes.netlify.app/en/ml/)
+הצג משתנה שונה ממערכת הנתונים הזו. רמז: ערוך את השורה הזו: `X = X[:,2]`. בהתחשב במטרה של מערכת נתונים זו, מה אתה יכול לגלות על התקדמות הסוכרת כמחלה?
+## [מבחן לאחר ההרצאה](https://ff-quizzes.netlify.app/en/ml/)
## סקירה ולימוד עצמי
-במדריך הזה עבדתם עם רגרסיה ליניארית פשוטה, ולא עם רגרסיה חד-משתנית או רגרסיה מרובת משתנים. קראו מעט על ההבדלים בין השיטות הללו, או צפו ב-[סרטון הזה](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef).
+במדריך זה עבדת עם רגרסיה ליניארית פשוטה, ולא עם רגרסיה חד-משתנית או רב-משתנית. קרא מעט על ההבדלים בין השיטות הללו, או צפה ב[וידאו הזה](https://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) כדי להעמיק את ההבנה שלכם.
+קרא עוד על מושג הרגרסיה וחשוב על אילו סוגי שאלות ניתן לענות באמצעות טכניקה זו. עשה את [המדריך הזה](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) כדי להעמיק את הבנתך.
## משימה
-[מערך נתונים אחר](assignment.md)
+[מערכת נתונים שונה](assignment.md)
---
-**כתב ויתור**:
-מסמך זה תורגם באמצעות שירות תרגום מבוסס בינה מלאכותית [Co-op Translator](https://github.com/Azure/co-op-translator). בעוד שאנו שואפים לדיוק, יש להיות מודעים לכך שתרגומים אוטומטיים עשויים להכיל שגיאות או אי דיוקים. המסמך המקורי בשפתו המקורית צריך להיחשב כמקור סמכותי. עבור מידע קריטי, מומלץ להשתמש בתרגום מקצועי על ידי אדם. איננו נושאים באחריות לאי הבנות או לפרשנויות שגויות הנובעות משימוש בתרגום זה.
\ No newline at end of file
+
+**כתב ויתור**:
+מסמך זה תורגם באמצעות שירות תרגום אוטומטי [Co-op Translator](https://github.com/Azure/co-op-translator). למרות שאנו שואפים לדיוק, יש לקחת בחשבון שתרגומים אוטומטיים עלולים להכיל שגיאות או אי-דיוקים. יש להחשיב את המסמך המקורי בשפתו הטבעית כמקור הסמכות. למידע קריטי מומלץ להשתמש בתרגום מקצועי על ידי מתרגם אדם. אנו לא אחראים לכל אי-הבנה או פירוש שגוי הנובע מהשימוש בתרגום זה.
+
\ No newline at end of file
diff --git a/translations/he/2-Regression/2-Data/README.md b/translations/he/2-Regression/2-Data/README.md
index df726fa35..c42675ba5 100644
--- a/translations/he/2-Regression/2-Data/README.md
+++ b/translations/he/2-Regression/2-Data/README.md
@@ -1,60 +1,60 @@
-# בניית מודל רגרסיה באמצעות Scikit-learn: הכנת ויזואליזציה של נתונים
+# לבנות מודל רגרסיה באמצעות Scikit-learn: להכין ול визуализировать נתונים
-
+
-אינפוגרפיקה מאת [Dasani Madipalli](https://twitter.com/dasani_decoded)
+אינפוגרפיקה מאת [דאסאני מדיפאלי](https://twitter.com/dasani_decoded)
-## [שאלון לפני השיעור](https://ff-quizzes.netlify.app/en/ml/)
+## [חידון מקדים להרצאה](https://ff-quizzes.netlify.app/en/ml/)
-> ### [השיעור הזה זמין גם ב-R!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
+> ### [שיעור זה זמין גם ב-R!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
## מבוא
-עכשיו, כשיש לך את הכלים הדרושים כדי להתחיל לבנות מודלים של למידת מכונה באמצעות Scikit-learn, אתה מוכן להתחיל לשאול שאלות על הנתונים שלך. כשאתה עובד עם נתונים ומיישם פתרונות ML, חשוב מאוד להבין איך לשאול את השאלה הנכונה כדי למצות את הפוטנציאל של מערך הנתונים שלך.
+עכשיו כשאתה מוכן עם הכלים שאתה צריך כדי להתחיל להתמודד עם בניית מודל למידת מכונה עם Scikit-learn, אתה מוכן להתחיל לשאול שאלות לגבי הנתונים שלך. כשהינך עובד עם נתונים ומיישם פתרונות למידת מכונה, חשוב מאוד להבין איך לשאול את השאלה הנכונה כדי לפתוח כראוי את הפוטנציאל של קבוצת הנתונים שלך.
בשיעור זה תלמד:
-- איך להכין את הנתונים שלך לבניית מודלים.
-- איך להשתמש ב-Matplotlib לויזואליזציה של נתונים.
+- איך להכין את הנתונים שלך לבניית מודל.
+- איך להשתמש ב-Matplotlib לוויזואליזציית נתונים.
+- איך להשתמש ב-Seaborn לוויזואליזציית נתונים יותר הבעה.
-## לשאול את השאלה הנכונה על הנתונים שלך
+## לשאול את השאלה הנכונה בנוגע לנתונים שלך
-השאלה שאתה רוצה לענות עליה תקבע איזה סוג של אלגוריתמים ML תשתמש. איכות התשובה שתקבל תהיה תלויה מאוד באופי הנתונים שלך.
+השאלה שאתה צריך לקבל עליה תשובה תכתיב איזה סוג של אלגוריתמי למידת מכונה תשתמש. ואיכות התשובה שתקבל תלויה במידה רבה בטבע הנתונים שלך.
-תסתכל על [הנתונים](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) שסופקו לשיעור הזה. אתה יכול לפתוח את קובץ ה-.csv הזה ב-VS Code. מבט מהיר מראה מיד שיש בו ערכים חסרים ותערובת של נתונים טקסטואליים ומספריים. יש גם עמודה מוזרה בשם 'Package' שבה הנתונים הם תערובת של 'sacks', 'bins' וערכים אחרים. למעשה, הנתונים די מבולגנים.
+עיין ב-[הנתונים](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) שסופקו לשיעור זה. תוכל לפתוח את קובץ ה-.csv הזה ב-VS Code. מבט מהיר מראה מיד שיש רווחים וערבוב של מחרוזות ונתונים מספריים. יש גם עמודה מוזרה שנקראת 'Package' שבה הנתונים הם תערובת בין 'שקים', 'מכלים' וערכים אחרים. הנתונים, למעשה, מעט מבולגנים.
-[](https://youtu.be/5qGjczWTrDQ "ML למתחילים - איך לנתח ולנקות מערך נתונים")
+[](https://youtu.be/5qGjczWTrDQ "למידת מכונה למתחילים - איך לנתח ולנקות קבוצת נתונים")
-> 🎥 לחץ על התמונה למעלה לצפייה בסרטון קצר שמסביר איך להכין את הנתונים לשיעור הזה.
+> 🎥 לחץ על התמונה למעלה לסרטון קצר שעובר על הכנת הנתונים לשיעור זה.
-למעשה, זה לא מאוד נפוץ לקבל מערך נתונים שמוכן לחלוטין לשימוש ליצירת מודל ML ישר מהקופסה. בשיעור הזה תלמד איך להכין מערך נתונים גולמי באמצעות ספריות Python סטנדרטיות. תלמד גם טכניקות שונות לויזואליזציה של הנתונים.
+למעשה, אינו נפוץ לקבל קבוצת נתונים שמוכנה להשתמש בה מלאה כדי ליצור מודל למידת מכונה מתוך הקופסה. בשיעור זה תלמד איך להכין קבוצת נתונים גולמית באמצעות ספריות פייתון סטנדרטיות. בנוסף, תלמד טכניקות שונות כדי להמחיש את הנתונים.
-## מחקר מקרה: 'שוק הדלעות'
+## מקרה בוחן: "שוק הדלעות"
-בתיקייה זו תמצא קובץ .csv בתיקיית השורש `data` בשם [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) שמכיל 1757 שורות של נתונים על שוק הדלעות, מסודרות לפי ערים. אלו נתונים גולמיים שנלקחו מתוך [דוחות שוקי היבולים המיוחדים](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) שמופצים על ידי משרד החקלאות של ארצות הברית.
+בתיקיה זו תמצא קובץ .csv בתיקיה ראשית `data` בשם [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) הכולל 1757 שורות של נתונים על שוק הדלעות, מסווג לפי קבוצות לפי עיר. אלה נתונים גולמיים שהופקו מדוחות סטנדרטיים של שוקי המסחרי ייחודיים [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) שמופצים על ידי משרד החקלאות של ארצות הברית.
-### הכנת נתונים
+### הכנת הנתונים
-הנתונים האלה הם נחלת הכלל. ניתן להוריד אותם בקבצים נפרדים רבים, לפי עיר, מאתר ה-USDA. כדי להימנע ממספר רב של קבצים נפרדים, איחדנו את כל נתוני הערים לגיליון אלקטרוני אחד, כך שכבר _הכנו_ את הנתונים מעט. עכשיו, בואו נסתכל מקרוב על הנתונים.
+נתונים אלה הם ברשות הציבור. ניתן להורידם בקבצים נפרדים רבים, לכל עיר בנפרד, מאתר USDA. כדי למנוע יותר מדי קבצים נפרדים, איחדנו את כל הנתונים של הערים לטבלת נתונים אחת, כך שכבר הכנו קצת את הנתונים. לאחר מכן, נבחן את הנתונים מקרוב.
-### נתוני הדלעות - מסקנות ראשוניות
+### נתוני הדלעות - מסקנות מוקדמות
-מה אתה שם לב לגבי הנתונים האלה? כבר ראית שיש תערובת של טקסטים, מספרים, ערכים חסרים וערכים מוזרים שצריך להבין.
+מה אתה מבחין בנתונים האלה? כבר ראית שיש תערובת של מחרוזות, מספרים, חללים וערכים מוזרים שצריך להבין אותם.
-איזו שאלה אפשר לשאול על הנתונים האלה, באמצעות טכניקת רגרסיה? מה דעתך על "לחזות את המחיר של דלעת למכירה במהלך חודש נתון". מבט נוסף על הנתונים מראה שיש כמה שינויים שצריך לעשות כדי ליצור את מבנה הנתונים הדרוש למשימה.
+איזו שאלה אפשר לשאול את הנתונים האלה, באמצעות טכניקת רגרסיה? מה דעתך על "לחזות את מחיר דלעת למכירה בחודש מסוים". כשאתה מסתכל שוב על הנתונים, יש כמה שינויים שצריך לבצע כדי ליצור מבנה נתונים הנדרש למשימה.
+## תרגיל - ניתוח נתוני דלעות
-## תרגיל - ניתוח נתוני הדלעות
+נשתמש ב-[Pandas](https://pandas.pydata.org/), (שמתייחס ל-'Python Data Analysis'), כלי מאוד שימושי לעיצוב נתונים, כדי לנתח ולהכין את נתוני הדלעות הללו.
-בואו נשתמש ב-[Pandas](https://pandas.pydata.org/) (השם הוא קיצור של `Python Data Analysis`), כלי מאוד שימושי לעיצוב נתונים, כדי לנתח ולהכין את נתוני הדלעות.
+### תחילה, בדוק אם חסרים תאריכים
-### קודם כל, בדוק אם יש תאריכים חסרים
+תחילה תצטרך לנקוט צעדים כדי לבדוק תאריכים חסרים:
-קודם כל תצטרך לנקוט צעדים כדי לבדוק אם יש תאריכים חסרים:
+1. המר את התאריכים לפורמט חודש (מדובר בתאריכים אמריקאיים, אז הפורמט הוא `MM/DD/YYYY`).
+2. הפק את החודש לעמודה חדשה.
-1. המרה של התאריכים לפורמט חודשי (אלו תאריכים אמריקאים, כך שהפורמט הוא `MM/DD/YYYY`).
-2. חילוץ החודש לעמודה חדשה.
-
-פתח את הקובץ _notebook.ipynb_ ב-Visual Studio Code וייבא את הגיליון האלקטרוני ל-DataFrame חדש של Pandas.
+פתח את קובץ _notebook.ipynb_ ב-Visual Studio Code וייבא את הגיליון הנתונים למערך נתונים חדש של Pandas.
1. השתמש בפונקציה `head()` כדי לצפות בחמש השורות הראשונות.
@@ -64,28 +64,28 @@
pumpkins.head()
```
- ✅ באיזו פונקציה היית משתמש כדי לצפות בחמש השורות האחרונות?
+ ✅ איזו פונקציה תשתמש כדי לראות את חמש השורות האחרונות?
-1. בדוק אם יש נתונים חסרים ב-DataFrame הנוכחי:
+1. בדוק אם יש נתונים חסרים במערך הנתונים הנוכחי:
```python
pumpkins.isnull().sum()
```
- יש נתונים חסרים, אבל אולי זה לא משנה למשימה הנוכחית.
+ ישנם נתונים חסרים, אך אולי זה לא יהיה משמעותי למשימה הנוכחית.
-1. כדי להפוך את ה-DataFrame שלך לקל יותר לעבודה, בחר רק את העמודות שאתה צריך, באמצעות פונקציית `loc` שמחלצת מה-DataFrame המקורי קבוצת שורות (שנמסרות כפרמטר ראשון) ועמודות (שנמסרות כפרמטר שני). הביטוי `:` במקרה הזה אומר "כל השורות".
+1. כדי להקל על העבודה עם מערך הנתונים שלך, בחר רק את העמודות שאתה צריך, באמצעות הפונקציה `loc` שמחלצת מהמערך המקורי קבוצה של שורות (כפרמטר ראשון) ועמודות (כפרמטר שני). הביטוי `:` במקרה זה אומר "כל השורות".
```python
columns_to_select = ['Package', 'Low Price', 'High Price', 'Date']
pumpkins = pumpkins.loc[:, columns_to_select]
```
-### שנית, קבע את המחיר הממוצע של דלעת
+### שנית, חשב את מחיר הדלעת הממוצע
-חשוב איך לקבוע את המחיר הממוצע של דלעת בחודש נתון. אילו עמודות היית בוחר למשימה הזו? רמז: תצטרך 3 עמודות.
+חשוב כיצד לחשב את המחיר הממוצע לדלעת בחודש מסוים. אילו עמודות תבחר למשימה זו? רמז: תצטרך 3 עמודות.
-פתרון: קח את הממוצע של העמודות `Low Price` ו-`High Price` כדי למלא את עמודת המחיר החדשה, והמר את עמודת התאריך כך שתציג רק את החודש. למרבה המזל, לפי הבדיקה לעיל, אין נתונים חסרים עבור תאריכים או מחירים.
+פתרון: קח את הממוצע של עמודות `Low Price` ו-`High Price` כדי למלא את עמודת המחיר החדשה, והמר את עמודת התאריך כך שתציג רק את החודש. למזלינו, לפי הבדיקה הנ"ל, אין נתונים חסרים לגבי תאריכים או מחירים.
1. כדי לחשב את הממוצע, הוסף את הקוד הבא:
@@ -96,37 +96,37 @@
```
- ✅ אתה מוזמן להדפיס כל נתון שתרצה לבדוק באמצעות `print(month)`.
+ ✅ ניתן להדפיס כל נתון שברצונך לבדוק באמצעות `print(month)`.
-2. עכשיו, העתק את הנתונים שהומרו ל-DataFrame חדש של Pandas:
+2. עכשיו, העתק את הנתונים שהומרו למערך נתונים חדש של Pandas:
```python
new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price})
```
- הדפסת ה-DataFrame שלך תראה לך מערך נתונים נקי ומסודר שעליו תוכל לבנות את מודל הרגרסיה החדש שלך.
+ הדפסת מערך הנתונים תראה לך קבוצת נתונים נקייה ומסודרת שעליה תוכל לבנות את מודל הרגרסיה החדש שלך.
-### אבל רגע! יש כאן משהו מוזר
+### אבל חכה! יש משהו מוזר כאן
-אם תסתכל על עמודת `Package`, דלעות נמכרות בהרבה תצורות שונות. חלקן נמכרות במידות של '1 1/9 bushel', חלקן ב-'1/2 bushel', חלקן לפי דלעת, חלקן לפי פאונד, וחלקן בקופסאות גדולות עם רוחבים משתנים.
+אם תסתכל על עמודת `Package`, דלעות נמכרות בהרכב שונה במידה רבה. חלק נמכרו במידות '1 1/9 בושהל'ות', וחלק במידות '1/2 בושהל'ות', חלק לדלעת בודדת, חלק לפי פאונד, וחלק בקופסאות גדולות ברוחבים משתנים.
-> נראה שדלעות מאוד קשה לשקול באופן עקבי
+> נראה כי דלעות מאוד קשות לשקילה בעקביות
-כשחוקרים את הנתונים המקוריים, מעניין שכל דבר עם `Unit of Sale` השווה ל-'EACH' או 'PER BIN' גם יש לו סוג `Package` לפי אינץ', לפי bin, או 'each'. נראה שדלעות מאוד קשה לשקול באופן עקבי, אז בואו נסנן אותן על ידי בחירת דלעות בלבד עם המחרוזת 'bushel' בעמודת `Package`.
+בחינה מעמיקה של הנתונים המקוריים, מעניין שכל דבר עם `Unit of Sale` שווה ל-'EACH' או 'PER BIN' יש גם את סוג ה-`Package` לפי אינץ', לפי מכל, או 'לכל אחד'. נראה כי דלעות קשות מאוד לשקילה בעקביות, אז נסנן אותן על ידי בחירת רק דלעות שמכילות את המחרוזת 'bushel' בעמודת ה-`Package` שלהן.
-1. הוסף מסנן בראש הקובץ, מתחת לייבוא הראשוני של ה-.csv:
+1. הוסף פילטר בראש הקובץ, מתחת לייבוא ה-.csv ההתחלתי:
```python
pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]
```
- אם תדפיס את הנתונים עכשיו, תוכל לראות שאתה מקבל רק את 415 השורות בערך שמכילות דלעות לפי bushel.
+ אם תדפיס את הנתונים עכשיו, תוכל לראות שאתה מקבל רק את כ-415 השורות של נתוני דלעות לפי בושהל.
-### אבל רגע! יש עוד משהו שצריך לעשות
+### אבל חכה! יש עוד משהו שצריך לעשות
-שמת לב שהכמות של bushel משתנה לפי שורה? אתה צריך לנרמל את התמחור כך שתראה את התמחור לפי bushel, אז תעשה קצת חישובים כדי לסטנדרט אותו.
+האם שמת לב שכמות הבושהל משתנה בין שורה לשורה? אתה צריך לנרמל את התמחור כך שתראה את המחירים לפי בושהל, אז בצע כמה חישובים כדי לאחד את זה.
-1. הוסף את השורות האלה אחרי הבלוק שיוצר את ה-DataFrame החדש של הדלעות:
+1. הוסף את השורות האלה אחרי בלוק יצירת מערך הנתונים new_pumpkins:
```python
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9)
@@ -134,38 +134,38 @@
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. כל המחקר הזה על bushels של דלעות, עם זאת, מראה כמה חשוב להבין את אופי הנתונים שלך!
+✅ לפי [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), משקל הבושהל תלוי בסוג התוצרת, מאחר שזהו מדד נפח. "בושהל של עגבניות, למשל, אמור לשקול 56 פאונד... עלים וירקות תופסים יותר נפח עם פחות משקל, אז בושהל של תרד שוקל רק 20 פאונד." זה די מסובך! לא נטריד את עצמנו בהמרת בושהל לפאונד, במקום זאת נמחיר לפי בושהל. כל הלימוד הזה של בושהלים של דלעות מראה כמה חשוב להבין את טבע הנתונים שלך!
-עכשיו, אתה יכול לנתח את התמחור ליחידה בהתבסס על מדידת ה-bushel שלהם. אם תדפיס את הנתונים פעם נוספת, תוכל לראות איך הם סטנדרטיים.
+עכשיו, תוכל לנתח את התמחור ליחידה בהתבסס על מדידת הבושהל שלהם. אם תדפיס את הנתונים פעם נוספת, ניתן לראות כיצד זה מנורמל.
-✅ שמת לב שדלעות שנמכרות לפי חצי bushel הן מאוד יקרות? האם תוכל להבין למה? רמז: דלעות קטנות יקרות הרבה יותר מדלעות גדולות, כנראה בגלל שיש הרבה יותר מהן בכל bushel, בהתחשב במקום הלא מנוצל שנלקח על ידי דלעת פאי גדולה וחלולה אחת.
+✅ האם שמת לב שדלעות שנמכרות בחצי בושהל יקרות מאוד? תוכל להבין למה? רמז: דלעות קטנות הרבה יותר יקרות מדלעות גדולות, כנראה בגלל שיש הרבה יותר מהן בבושהל, בהתחשב במקום הלא מנוצל שמכילה דלעת עוגה גדולה ומחוררת אחת.
## אסטרטגיות ויזואליזציה
-חלק מתפקידו של מדען הנתונים הוא להציג את האיכות והאופי של הנתונים שהוא עובד איתם. לשם כך, הם לעיתים קרובות יוצרים ויזואליזציות מעניינות, כמו גרפים, תרשימים ומפות, שמציגים היבטים שונים של הנתונים. בדרך זו, הם יכולים להראות באופן חזותי קשרים ופערים שקשה לחשוף בדרך אחרת.
+חלק מתפקיד מדען הנתונים הוא להמחיש את איכות וטבע הנתונים שהם עובדים איתם. לשם כך, הם לעיתים יוצרים ויזואליזציות מעניינות, תרשימים, גרפים וטבלאות, המראים היבטים שונים של הנתונים. כך הם יכולים להראות בצורה ויזואלית קשרים ופערים שקשה לגלות בדרך אחרת.
-[](https://youtu.be/SbUkxH6IJo0 "ML למתחילים - איך לויזואליזציה של נתונים עם Matplotlib")
+[](https://youtu.be/SbUkxH6IJo0 "למידת מכונה למתחילים - איך להמחיש נתונים עם Matplotlib")
-> 🎥 לחץ על התמונה למעלה לצפייה בסרטון קצר שמסביר איך לויזואליזציה של הנתונים לשיעור הזה.
+> 🎥 לחץ על התמונה למעלה לסרטון קצר שעובר על ויזואליזציית הנתונים לשיעור זה.
-ויזואליזציות יכולות גם לעזור לקבוע את טכניקת הלמידת מכונה המתאימה ביותר לנתונים. למשל, תרשים פיזור שנראה כמו קו יכול להצביע על כך שהנתונים מתאימים לתרגיל רגרסיה ליניארית.
+ויזואליזציות יכולות גם לעזור לקבוע את טכניקת למידת המכונה המתאימה ביותר לנתונים. תרשים פיזור שנראה עוקב אחר קו, למשל, מצביע שהנתונים הם מועמדים טובים לתרגיל רגרסיה ליניארית.
-אחת מספריות הויזואליזציה שעובדות היטב במחברות Jupyter היא [Matplotlib](https://matplotlib.org/) (שגם ראית בשיעור הקודם).
+ספריית ויזואליזציית נתונים אחת שעובדת טוב במחברות Jupyter היא [Matplotlib](https://matplotlib.org/) (שכבר ראית בשיעור הקודם).
-> קבל עוד ניסיון עם ויזואליזציה של נתונים ב-[המדריכים האלה](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott).
+> השג יותר ניסיון בוויזואליזציות נתונים ב-[המדריכים האלה](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott).
-## תרגיל - להתנסות עם Matplotlib
+## תרגיל - התנסה ב-Matplotlib
-נסה ליצור כמה גרפים בסיסיים כדי להציג את ה-DataFrame החדש שיצרת. מה יראה גרף קו בסיסי?
+נסה ליצור כמה תרשימים בסיסיים כדי להציג את מערך הנתונים החדש שיצרת זה עתה. מה תרשים קו בסיסי יציג?
-1. ייבא את Matplotlib בראש הקובץ, מתחת לייבוא של Pandas:
+1. ייבא את Matplotlib בראש הקובץ, מתחת לייבוא Pandas:
```python
import matplotlib.pyplot as plt
```
-1. הרץ מחדש את כל המחברת כדי לרענן.
-1. בתחתית המחברת, הוסף תא כדי לשרטט את הנתונים כקופסה:
+1. הרץ מחדש את כל המחברת לרענון.
+1. בתחתית המחברת, הוסף תא כדי לצייר את הנתונים כ-box plot:
```python
price = new_pumpkins.Price
@@ -174,15 +174,15 @@
plt.show()
```
- 
+ 
- האם זה גרף שימושי? האם משהו בו מפתיע אותך?
+ האם תרשים זה שימושי? האם משהו בו מפתיע אותך?
- זה לא מאוד שימושי מכיוון שכל מה שהוא עושה זה להציג את הנתונים שלך כפריסה של נקודות בחודש נתון.
+ זה אינו שימושי במיוחד כי כל מה שהוא עושה הוא להציג את הנתונים שלך כהתפרסות נקודות בחודש נתון.
-### להפוך את זה לשימושי
+### להפוך אותו לשימושי
-כדי לקבל גרפים שמציגים נתונים שימושיים, בדרך כלל צריך לקבץ את הנתונים בצורה כלשהי. בואו ננסה ליצור גרף שבו ציר ה-y מציג את החודשים והנתונים מדגימים את התפלגות הנתונים.
+כדי שתרשימים יציגו נתונים שימושיים, בדרך כלל צריך לקבץ את הנתונים בצורה מסוימת. בוא ננסה ליצור תרשים שבו ציר ה-y מראה את החודשים והנתונים מראים את התפלגות הנתונים.
1. הוסף תא ליצירת תרשים עמודות מקובץ:
@@ -191,21 +191,96 @@
plt.ylabel("Pumpkin Price")
```
- 
+ 
+
+ זו ויזואליזציית נתונים שימושית יותר! נראה שהיא מצביעה שהמחיר הכי גבוה לדלעות הוא בספטמבר ואוקטובר. האם זה עונה על הציפייה שלך? למה או למה לא?
+
+## תרגיל - התנסה ב-Seaborn
+
+Matplotlib עוצמתי, אבל לפעמים נדרש הרבה קוד כדי ליצור תרשים מחודד. [Seaborn](https://seaborn.pydata.org/) היא ספרייה שבנויה _על גבי_ Matplotlib שמיועדת לוויזואליזציית נתונים סטטיסטית. היא עובדת ישירות עם מערכי הנתונים של Pandas, מיישמת סגנונות ברירת מחדל מושכים, ומאפשרת ליצור תרשימים אינפורמטיביים בפחות קוד. מכיוון ש-Seaborn מחזירה אובייקטים של Matplotlib, עדיין אפשר להשתמש בכל מה שכבר יודעים על Matplotlib כדי לכוונן את התוצאה.
+
+> אם עדיין לא התקנת את Seaborn, התקן אותה באמצעות `pip install seaborn`.
+
+1. ייבא את Seaborn בראש המחברת, מתחת ליבואים האחרים. נהוג לייבא אותה כ-`sns`:
+
+ ```python
+ import seaborn as sns
+ ```
+
+### תרשימי פיזור להראות קשרים
+
+חלק גדול מחקר הנתונים לפני בניית מודל הוא חיפוש _קשרים_ בין משתנים. [תרשים פיזור](https://en.wikipedia.org/wiki/Scatter_plot) הוא אחד הכלים הטובים לכך: אם הנקודות נראות מעקבות אחר קו, שני המשתנים עשויים להיות מתואמים, וזה סימן טוב שמודל רגרסיה ליניארית יכול לעבוד.
+
+1. צור מחדש את תרשים פיזור המחיר-לחודש מהפעם הקודמת, הפעם באמצעות [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) של Seaborn (תרשים יחסי), שעובד ישירות עם עמודות מערך הנתונים שלך:
+
+ ```python
+ sns.relplot(x="Price", y="Month", data=new_pumpkins)
+ ```
+
+ 
+
+ שים לב כיצד מעבירים את _שמות העמודות_ ואת מערך הנתונים, ו-Seaborn מטפל בתוויות הצירים בשבילך.
+
+2. אפשר לעבור לתרשים קו על ידי העברת `kind="line"`. Seaborn אפילו מציירת רצועה מוצללת שמציגה את תחום האמון סביב הקו:
+
+ ```python
+ sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins)
+ ```
+
+ 
+
+ הנתונים הספציפיים האלה די רעשניים, אז תרשים קו לא הבחירה הברורה ביותר כאן — אבל הוא מראה כמה קל לשנות סוגי תרשימים ב-Seaborn.
+
+### תרשימי עמודות להראות התפלגויות
+
+
+קודם סידרת את הנתונים בעצמך כדי ליצור תרשים עמודות עם Matplotlib. הפונקציה [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) (תרשים קטגורי) של Seaborn יכולה לבצע את הסידור והאגרגציה עבורך. כבררת מחדל `kind="bar"` מציגה את הממוצע של כל קטגוריה יחד עם קו שחור המציין את מרווח האמון.
+
+1. צור תרשים עמודות של מחיר ממוצע לכל חודש:
+
+ ```python
+ sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar")
+ ```
+
+ 
+
+ זה מאשר את מה שראית עם Matplotlib — המחירים בשיא סביב ספטמבר ואוקטובר — אך Seaborn גם ממחיש כמה המחיר _משתנה_ בתוך כל חודש.
+
+### מפות חום להראות קורלציות
+
+תרשימי פיזור משווים שני משתנים בכל פעם. כשיש לך כמה עמודות מספריות, [מפת חום](https://en.wikipedia.org/wiki/Heat_map) מאפשרת לך לראות את עוצמת הקשר בין _כל_ זוג עמודות בבת אחת. זהו דרך נפוצה לזהות אילו תכונות קשורות ביותר לפני שבוחרים מה להכניס למודל (ואותו סוג תרשים משמש לאחר מכן להצגת מטריצות בילבול במיון).
+
+1. בנה מטריצת קורלציה עם Pandas, ואז צייר אותה עם [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html) של Seaborn. האפשרות `annot=True` מדפיסה את ערכי הקורלציה בכל תא:
+
+ ```python
+ correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()
+ sns.heatmap(correlations, annot=True, cmap="coolwarm")
+ ```
+
+ 
+
+ ערכים הקרובים ל-`1` (או `-1`) מצביעים על כך שהעמודות קשורות _בקו ישר_ בצורה חזקה. שים לב כיצד `Low Price` ו-`High Price` כמעט מושלמות בקורלציה ביניהן. מצד שני, `Month` מציגה קורלציה ליניארית חלשה למחיר — למרות שתרשים העמודות לעיל חשף שיא עונתי ברור בספטמבר ואוקטובר. זו מוסכמה חשובה: מקדם הקורלציה מודד רק קשרים _בקו ישר_, ולכן הוא עלול לפספס תבניות עונתיות או לא ליניאריות. ✅ מדוע כדאי להסתכל הן על מפת חום *והן* על תרשימים כמו תרשים העמודות לפני שקובעים אילו עמודות להשתמש בהם?
+
+### Matplotlib או Seaborn?
+
+שתי הספריות שכדאי להכיר:
+
+- **Matplotlib** נותנת לך שליטה מדויקת על כל אלמנט בתרשים והיא הבסיס שעליו כמעט כל ספריית דיווח בפייתון מבוססת.
+- **Seaborn** מספקת פונקציות ברמת אבחנה גבוהה יותר וערכות ברירת מחדל אטרקטיביות לתרשימים סטטיסטיים, עובדת ישירות עם dataframes, ולעיתים מהירה יותר לניתוח נתונים חקרני.
- זהו ויזואליזציה נתונים שימושית יותר! נראה שהיא מצביעה על כך שהמחיר הגבוה ביותר לדלעות מתרחש בספטמבר ובאוקטובר. האם זה תואם את הציפיות שלך? למה או למה לא?
+זרימת עבודה נפוצה היא להשתמש ב-Seaborn כדי לחקור את הנתונים במהירות, ואז לעבור ל-Matplotlib כשצריך להתאים את הפרטים.
---
## 🚀אתגר
-חקור את סוגי הויזואליזציה השונים ש-Matplotlib מציעה. אילו סוגים הם המתאימים ביותר לבעיות רגרסיה?
+חקור את סוגי הויזואליזציה השונים ש-Matplotlib ו-Seaborn מציעים. אילו סוגים מתאימים ביותר לבעיות רגרסיה?
-## [שאלון אחרי השיעור](https://ff-quizzes.netlify.app/en/ml/)
+## [חידון לאחר ההרצאה](https://ff-quizzes.netlify.app/en/ml/)
## סקירה ולימוד עצמי
-תסתכל על הדרכים הרבות לויזואליזציה של נתונים. צור רשימה של הספריות השונות הזמינות וציין אילו מהן מתאימות לסוגי משימות מסוימים, למשל ויזואליזציות דו-ממדיות לעומת תלת-ממדיות. מה אתה מגלה?
+עיין בדרכים הרבות להמחיש נתונים. ערוך רשימה של ספריות שונות הזמינות וציין אילו טובות למשימות שונות, למשל ויזואליזציות דו-ממדיות לעומת תלת-ממדיות. מה גילית?
## משימה
@@ -213,5 +288,7 @@
---
-**כתב ויתור**:
-מסמך זה תורגם באמצעות שירות תרגום מבוסס בינה מלאכותית [Co-op Translator](https://github.com/Azure/co-op-translator). למרות שאנו שואפים לדיוק, יש לקחת בחשבון שתרגומים אוטומטיים עשויים להכיל שגיאות או אי דיוקים. המסמך המקורי בשפתו המקורית צריך להיחשב כמקור סמכותי. עבור מידע קריטי, מומלץ להשתמש בתרגום מקצועי על ידי אדם. איננו נושאים באחריות לאי הבנות או לפרשנויות שגויות הנובעות משימוש בתרגום זה.
\ No newline at end of file
+
+**כתב ויתור**:
+מסמך זה תורגם באמצעות שירות תרגום אוטומטי [Co-op Translator](https://github.com/Azure/co-op-translator). למרות שאנו שואפים לדיוק, יש לקחת בחשבון שתרגומים אוטומטיים עלולים להכיל שגיאות או אי-דיוקים. יש להחשיב את המסמך המקורי בשפתו הטבעית כמקור הסמכות. למידע קריטי מומלץ להשתמש בתרגום מקצועי על ידי מתרגם אדם. אנו לא אחראים לכל אי-הבנה או פירוש שגוי הנובע מהשימוש בתרגום זה.
+
\ No newline at end of file
diff --git a/translations/he/2-Regression/2-Data/solution/notebook.ipynb b/translations/he/2-Regression/2-Data/solution/notebook.ipynb
index be732d03a..57ac5cfee 100644
--- a/translations/he/2-Regression/2-Data/solution/notebook.ipynb
+++ b/translations/he/2-Regression/2-Data/solution/notebook.ipynb
@@ -4,7 +4,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## רגרסיה לינארית לדלעות - שיעור 2\n"
+ "## רגרסיה ליניארית לדליים - שיעור 2\n"
]
},
{
@@ -222,6 +222,7 @@
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
"pumpkins = pd.read_csv('../../data/US-pumpkins.csv')\n",
"\n",
"pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]\n",
@@ -385,18 +386,78 @@
"plt.ylabel(\"Pumpkin Price\")"
]
},
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## ויזואליזציה עם Seaborn\n",
+ "\n",
+ "[Seaborn](https://seaborn.pydata.org/) מבוסס על Matplotlib ופועל ישירות עם dataframes, מה שמאפשר ליצור במהירות גרפים סטטיסטיים אסתטיים עם מעט מאוד קוד.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### תרשימי פיזור להצגת קשרים\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", kind=\"line\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### תרשימי עמודות להצגת התפלגויות\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.catplot(x=\"Month\", y=\"Price\", data=new_pumpkins, kind=\"bar\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### מפות חום להצגת מתאמים\n"
+ ]
+ },
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
- "source": []
+ "source": [
+ "correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()\n",
+ "sns.heatmap(correlations, annot=True, cmap=\"coolwarm\")"
+ ]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "\n---\n\n**כתב ויתור**: \nמסמך זה תורגם באמצעות שירות תרגום מבוסס בינה מלאכותית [Co-op Translator](https://github.com/Azure/co-op-translator). בעוד שאנו שואפים לדיוק, יש לקחת בחשבון שתרגומים אוטומטיים עשויים להכיל שגיאות או אי דיוקים. המסמך המקורי בשפתו המקורית צריך להיחשב כמקור סמכותי. עבור מידע קריטי, מומלץ להשתמש בתרגום מקצועי על ידי אדם. איננו נושאים באחריות לאי הבנות או לפרשנויות שגויות הנובעות משימוש בתרגום זה.\n"
+ "---\n\n\n**כתב ויתור**:\nמסמך זה תורגם באמצעות שירות תרגום אוטומטי [Co-op Translator](https://github.com/Azure/co-op-translator). למרות שאנו שואפים לדיוק, יש לקחת בחשבון שתרגומים אוטומטיים עלולים להכיל שגיאות או אי-דיוקים. יש להחשיב את המסמך המקורי בשפתו הטבעית כמקור הסמכות. למידע קריטי מומלץ להשתמש בתרגום מקצועי על ידי מתרגם אדם. אנו לא אחראים לכל אי-הבנה או פירוש שגוי הנובע מהשימוש בתרגום זה.\n\n"
]
}
],
@@ -426,13 +487,7 @@
"hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d"
}
},
- "orig_nbformat": 2,
- "coopTranslator": {
- "original_hash": "95726f0b8283628d5356a4f8eb8b4b76",
- "translation_date": "2025-09-04T07:11:32+00:00",
- "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
- "language_code": "he"
- }
+ "orig_nbformat": 2
},
"nbformat": 4,
"nbformat_minor": 2
diff --git a/translations/he/8-Reinforcement/1-QLearning/README.md b/translations/he/8-Reinforcement/1-QLearning/README.md
index eb7be92e2..da1330661 100644
--- a/translations/he/8-Reinforcement/1-QLearning/README.md
+++ b/translations/he/8-Reinforcement/1-QLearning/README.md
@@ -1,47 +1,47 @@
-# מבוא ללמידת חיזוק ולמידת Q
+# מבוא ללמידת חיזוק ו-Q-Learning
-
-> סקצ'נוט מאת [Tomomi Imura](https://www.twitter.com/girlie_mac)
+
+> בישול של [Tomomi Imura](https://www.twitter.com/girlie_mac)
-למידת חיזוק כוללת שלושה מושגים חשובים: הסוכן, מצבים מסוימים, ומערך פעולות לכל מצב. על ידי ביצוע פעולה במצב מסוים, הסוכן מקבל תגמול. דמיינו שוב את משחק המחשב סופר מריו. אתם מריו, נמצאים ברמת משחק, עומדים ליד קצה צוק. מעליכם יש מטבע. אתם, בתור מריו, ברמת משחק, במיקום ספציפי... זהו המצב שלכם. צעד אחד ימינה (פעולה) יוביל אתכם מעבר לקצה, וזה יעניק לכם ניקוד נמוך. לעומת זאת, לחיצה על כפתור הקפיצה תאפשר לכם לצבור נקודה ולהישאר בחיים. זהו תוצאה חיובית שצריכה להעניק לכם ניקוד חיובי.
+למידת חיזוק כוללת שלושה מושגים חשובים: הסוכן, כמה מצבים, וקבוצת פעולות לכל מצב. על ידי ביצוע פעולה במצב מסוים, מוענק לסוכן תגמול. שוב דמיינו את משחק המחשב סופר מריו. אתה מריו, אתה ברמת משחק, עומד ליד קצה צוק. מעליך יש מטבע. אתה בתור מריו, ברמת משחק, במיקום מסוים ... זה המצב שלך. הזזה צעד אחד ימינה (פעולה) תגרום לך ליפול מהקצה, וזו תיתן לך ציון מספרי נמוך. עם זאת, לחיצה על כפתור הקפיצה תאפשר לך לצבור נקודה ותישאר בחיים. זו תוצאה חיובית והיא צריכה להעניק ציון מספרי חיובי.
-באמצעות למידת חיזוק וסימולטור (המשחק), ניתן ללמוד כיצד לשחק את המשחק כדי למקסם את התגמול, כלומר להישאר בחיים ולצבור כמה שיותר נקודות.
+באמצעות למידת חיזוק וסימולטור (המשחק), ניתן ללמוד כיצד לשחק במשחק בכדי למקסם את התגמול שהוא הישרדות וצבירת נקודות מרביות.
[](https://www.youtube.com/watch?v=lDq_en8RNOo)
-> 🎥 לחצו על התמונה למעלה כדי לשמוע את דמיטרי מדבר על למידת חיזוק
+> 🎥 לחצו על התמונה למעלה כדי לשמוע את דימיטרי מדבר על למידת חיזוק
-## [שאלון לפני השיעור](https://ff-quizzes.netlify.app/en/ml/)
+## [בחן טרם ההרצאה](https://ff-quizzes.netlify.app/en/ml/)
-## דרישות מוקדמות והגדרות
+## תנאים מוקדמים והתקנה
-בשיעור זה, נתנסה בקוד בפייתון. עליכם להיות מסוגלים להריץ את הקוד של Jupyter Notebook מהשיעור הזה, בין אם במחשב שלכם או בענן.
+בשיעור זה ננסה קוד בפייתון. עליך להיות מסוגל להריץ את קוד מחברת Jupyter של שיעור זה, במחשב שלך או בענן כלשהו.
-ניתן לפתוח את [מחברת השיעור](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) ולעבור על השיעור כדי לבנות.
+ניתן לפתוח את [מחברת השיעור](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), שמשמש בקוד המחברת. הוסיפו אותו לאותה תיקייה כמו המחברת.
+> **הערה:** אם אתה פותח את הקוד מהענן, עליך גם להוריד את קובץ [`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). נשתמש ב**למידת חיזוק** כדי לאפשר לפטר לחקור את סביבתו, לאסוף תפוחים טעימים ולהימנע ממפגש עם הזאב.
+בשיעור זה נחקור את עולמו של **[פיטר והזאב](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)**, בהשראת סיפור מוסיקלי מאת קומפוזיטור רוסי, [סרגיי פרוקופייב](https://en.wikipedia.org/wiki/Sergei_Prokofiev). נשתמש ב**למידת חיזוק** כדי לאפשר לפיטר לחקור את הסביבה שלו, לאסוף תפוחים טעימים ולהימנע מפגישה עם הזאב.
-**למידת חיזוק** (RL) היא טכניקת למידה שמאפשרת לנו ללמוד התנהגות אופטימלית של **סוכן** בסביבה מסוימת על ידי ביצוע ניסויים רבים. סוכן בסביבה זו צריך שיהיה לו **מטרה**, שמוגדרת על ידי **פונקציית תגמול**.
+**למידת חיזוק** (RL) היא טכניקת למידה שמאפשרת לנו ללמוד התנהגות אופטימלית של **סוכן** בסביבה מסוימת על ידי הרצת ניסויים רבים. לסוכן בסביבה זו אמור להיות **מטרה**, המוגדרת על ידי **פונקציית תגמול**.
## הסביבה
-לצורך הפשטות, נניח שעולמו של פטר הוא לוח מרובע בגודל `width` x `height`, כמו זה:
+לצורך פשטות, נחשיב את עולמו של פיטר כלוח מרובע בגודל `width` x `height`, כך:
-
+
-כל תא בלוח הזה יכול להיות:
+כל תא בלוח זה יכול להיות:
-* **קרקע**, שעליה פטר ויצורים אחרים יכולים ללכת.
+* **קרקע**, שעליה פיטר ויצורים אחרים יכולים ללכת.
* **מים**, שעליהם כמובן אי אפשר ללכת.
-* **עץ** או **דשא**, מקום שבו אפשר לנוח.
-* **תפוח**, שמייצג משהו שפטר ישמח למצוא כדי להאכיל את עצמו.
+* **עץ** או **דשא**, מקום למנוחה.
+* **תפוח**, המייצג משהו שפיטר ישמח למצוא כדי להאכיל את עצמו.
* **זאב**, שהוא מסוכן ויש להימנע ממנו.
-ישנו מודול פייתון נפרד, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), שמכיל את הקוד לעבודה עם הסביבה הזו. מכיוון שהקוד הזה אינו חשוב להבנת המושגים שלנו, נייבא את המודול ונשתמש בו כדי ליצור את הלוח לדוגמה (בלוק קוד 1):
+יש מודול פייתון נפרד, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), שמכיל את הקוד לעבודה עם הסביבה הזו. מכיוון שקוד זה אינו חשוב להבנת המושגים שלנו, נייבא את המודול ונשתמש בו כדי ליצור את לוח הדוגמה (בלוק קוד 1):
```python
from rlboard import *
@@ -52,63 +52,63 @@ m.randomize(seed=13)
m.plot()
```
-הקוד הזה אמור להדפיס תמונה של הסביבה הדומה לזו שמוצגת למעלה.
+קוד זה אמור להדפיס תמונה של הסביבה הדומה לזו למעלה.
## פעולות ומדיניות
-בדוגמה שלנו, המטרה של פטר תהיה למצוא תפוח, תוך הימנעות מהזאב ומכשולים אחרים. לשם כך, הוא יכול למעשה להסתובב עד שימצא תפוח.
+בדוגמה שלנו, המטרה של פיטר היא למצוא תפוח, תוך הימנעות מהזאב וממכשולים אחרים. לשם כך, הוא יכול פשוט ללכת סביב עד שימצא תפוח.
-לכן, בכל מיקום, הוא יכול לבחור בין אחת מהפעולות הבאות: למעלה, למטה, שמאלה וימינה.
+לכן, בכל מיקום, הוא יכול לבחור בין הפעולות הבאות: למעלה, למטה, שמאלה וימינה.
-נגדיר את הפעולות הללו כמילון, ונמפה אותן לזוגות של שינויי קואורדינטות מתאימים. לדוגמה, תנועה ימינה (`R`) תתאים לזוג `(1,0)`. (בלוק קוד 2):
+נגדיר את הפעולות הללו כמילון, ונתאים אותן לזוגות של שינויים מתאימים בקואורדינטות. לדוגמה, הליכה ימינה (`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).
+בואו קודם נפתור את הבעיה שלנו על ידי יישום אסטרטגיית הליכה אקראית. בהליכה אקראית נבחר אקראית את הפעולה הבאה מתוך הפעולות המותרות, עד שנגיע לתפוח (בלוק קוד 3).
-1. יישמו את ההליכה האקראית עם הקוד הבא:
+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
+ n = 0 # מספר הצעדים
+ # קבע מיקום התחלתי
if start_position:
m.human = start_position
else:
m.random_start()
while True:
if m.at() == Board.Cell.apple:
- return n # success!
+ return n # הצלחה!
if m.at() in [Board.Cell.wolf, Board.Cell.water]:
- return -1 # eaten by wolf or drowned
+ return -1 # נאכל על ידי זאב או שט בלבול
while True:
a = actions[policy(m)]
new_pos = m.move_pos(m.human,a)
if m.is_valid(new_pos) and m.at(new_pos)!=Board.Cell.water:
- m.move(a) # do the actual move
+ m.move(a) # בצע את התנועה בפועל
break
n+=1
walk(m,random_policy)
```
- הקריאה ל-`walk` אמורה להחזיר את אורך המסלול המתאים, שיכול להשתנות מריצה אחת לאחרת.
+ הקריאה ל-`walk` אמורה להחזיר את אורך המסלול המתאים, שיכול להשתנות בין ריצה לריצה.
-1. הריצו את ניסוי ההליכה מספר פעמים (נניח, 100), והדפיסו את הסטטיסטיקות המתקבלות (בלוק קוד 4):
+1. הרץ את ניסוי ההליכה מספר פעמים (נאמר 100), והדפיס את הסטטיסטיקות המתקבלות (בלוק קוד 4):
```python
def print_statistics(policy):
@@ -125,17 +125,17 @@ action_idx = { a : i for i,a in enumerate(actions.keys()) }
print_statistics(random_policy)
```
- שימו לב שאורך המסלול הממוצע הוא סביב 30-40 צעדים, שזה די הרבה, בהתחשב בכך שהמרחק הממוצע לתפוח הקרוב ביותר הוא סביב 5-6 צעדים.
+ יש לשים לב שאורך הממוצע של מסלול הוא בין 30 ל-40 צעדים, שזה די הרבה, בהתחשב בכך שהמרחק הממוצע לתפוח הקרוב הוא כ-5-6 צעדים.
- תוכלו גם לראות כיצד נראית תנועתו של פטר במהלך ההליכה האקראית:
+ ניתן גם לראות כיצד נראית התנועה של פיטר במהלך ההליכה האקראית:
- 
+ 
## פונקציית תגמול
-כדי להפוך את המדיניות שלנו לאינטליגנטית יותר, עלינו להבין אילו מהלכים הם "טובים" יותר מאחרים. לשם כך, עלינו להגדיר את המטרה שלנו.
+כדי להפוך את המדיניות שלנו לחכמה יותר, עלינו להבין אילו מהלכים "טובים יותר" מאחרים. לשם כך, עלינו להגדיר את המטרה שלנו.
-המטרה יכולה להיות מוגדרת במונחים של **פונקציית תגמול**, שתחזיר ערך ניקוד עבור כל מצב. ככל שהמספר גבוה יותר, כך פונקציית התגמול טובה יותר. (בלוק קוד 5)
+המטרה יכולה להיות מוגדרת במונחים של **פונקציית תגמול**, אשר תחזיר ערך ניקוד עבור כל מצב. ככל שהמספר גבוה יותר, פונקציית התגמול טובה יותר. (בלוק קוד 5)
```python
move_reward = -0.1
@@ -154,39 +154,115 @@ def reward(m,pos=None):
return move_reward
```
-דבר מעניין לגבי פונקציות תגמול הוא שבמקרים רבים, *אנו מקבלים תגמול משמעותי רק בסוף המשחק*. משמעות הדבר היא שהאלגוריתם שלנו צריך לזכור "צעדים טובים" שהובילו לתגמול חיובי בסוף, ולהגדיל את חשיבותם. באופן דומה, כל המהלכים שמובילים לתוצאות רעות צריכים להיות מדוכאים.
+דבר מעניין לגבי פונקציות תגמול הוא שבמרבית המקרים, *ניתן לנו תגמול משמעותי רק בסוף המשחק*. משמעות הדבר היא שהאלגוריתם שלנו צריך איכשהו לזכור צעדים "טובים" שהובילו לתגמול חיובי בסוף, ולהגביר את משמעותם. באופן דומה, כל המהלכים שבהם התוצאות רעות צריכים להיות מ discouraged.
-## למידת Q
+## Q-Learning
-האלגוריתם שנדון בו כאן נקרא **למידת Q**. באלגוריתם זה, המדיניות מוגדרת על ידי פונקציה (או מבנה נתונים) שנקראת **טבלת Q**. היא מתעדת את "הטוב" של כל אחת מהפעולות במצב נתון.
+אלגוריתם שנדון כאן נקרא **Q-Learning**. באלגוריתם זה, המדיניות מוגדרת על ידי פונקציה (או מבנה נתונים) שנקרא **טבלת Q**. היא רושמת את "האיכות" של כל פעולות בכל מצב נתון.
-היא נקראת טבלת Q מכיוון שלעתים קרובות נוח לייצג אותה כטבלה, או מערך רב-ממדי. מכיוון שלוח המשחק שלנו הוא בגודל `width` x `height`, נוכל לייצג את טבלת Q באמצעות מערך numpy עם צורה `width` x `height` x `len(actions)`: (בלוק קוד 6)
+היא נקראת טבלת Q כי לרוב נוח לייצגה כמטבלה, או מערך רב-ממדי. כיוון שלוח שלנו בגודל `width` x `height`, נוכל לייצג את טבלת Q באמצעות מערך numpy בצורת `width` x `height` x `len(actions)`: (בלוק קוד 6)
```python
Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions)
```
-שימו לב שאנו מאתחלים את כל הערכים בטבלת Q עם ערך שווה, במקרה שלנו - 0.25. זה תואם למדיניות "הליכה אקראית", מכיוון שכל המהלכים בכל מצב הם טובים באותה מידה. נוכל להעביר את טבלת Q לפונקציית `plot` כדי להמחיש את הטבלה על הלוח: `m.plot(Q)`.
+שימו לב שאנו מאתחלים את כל הערכים בטבלת Q בערך שווה, במקרה שלנו - 0.25. זה מתאים למדיניות "הליכה אקראית", מכיוון שכל המהלכים בכל מצב הם באותה מידה טובים. ניתן להעביר את טבלת Q לפונקציית `plot` כדי להמחיש את הטבלה על הלוח: `m.plot(Q)`.
-
+
-במרכז כל תא יש "חץ" שמצביע על כיוון התנועה המועדף. מכיוון שכל הכיוונים שווים, מוצגת נקודה.
+במרכז כל תא יש "חץ" שמצביע על הכיוון המועדף לתנועה. כיוון שכל הכיוונים שווים, מוצג נקודה.
-כעת עלינו להריץ את הסימולציה, לחקור את הסביבה שלנו, וללמוד חלוקה טובה יותר של ערכי טבלת Q, שתאפשר לנו למצוא את הדרך לתפוח הרבה יותר מהר.
+עכשיו עלינו להריץ את הסימולציה, לחקור את הסביבה שלנו, וללמוד התפלגות טובה יותר של ערכי טבלת Q, שתאפשר לנו למצוא את הדרך לתפוח מהר יותר.
-## מהות למידת Q: משוואת בלמן
+## מהות Q-Learning: משוואת בלמן
-ברגע שנתחיל לזוז, לכל פעולה יהיה תגמול מתאים, כלומר נוכל באופן תיאורטי לבחור את הפעולה הבאה על סמך התגמול המיידי הגבוה ביותר. עם זאת, ברוב המצבים, המהלך לא ישיג את מטרתנו להגיע לתפוח, ולכן לא נוכל להחליט מיד איזה כיוון טוב יותר.
+ברגע שנתחיל לזוז, כל פעולה תקבל תגמול מתאים, כלומר נוכל תיאורטית לבחור את הפעולה הבאה על בסיס התגמול המיידי הגבוה ביותר. אולם ברוב המצבים, המהלך לא ישיג את מטרתנו של להגיע לתפוח, ולכן איננו יכולים להחליט מייד איזה כיוון הוא טוב יותר.
> זכרו שזה לא התוצאה המיידית שחשובה, אלא התוצאה הסופית, שנקבל בסוף הסימולציה.
-כדי לקחת בחשבון את התגמול המושהה, עלינו להשתמש בעקרונות של **[תכנות דינמי](https://en.wikipedia.org/wiki/Dynamic_programming)**, שמאפשרים לנו לחשוב על הבעיה שלנו באופן רקורסיבי.
+על מנת להתחשב בתגמול המאוחר הזה, עלינו להשתמש בעקרונות **[תכנות דינמי](https://en.wikipedia.org/wiki/Dynamic_programming)**, שמאפשרים לנו לחשוב על בעיה באופן רקורסיבי.
-נניח שאנחנו נמצאים כעת במצב *s*, ורוצים לעבור למצב הבא *s'*. על ידי כך, נקבל את התגמול המיידי *r(s,a)*, שמוגדר על ידי פונקציית התגמול, בתוספת תגמול עתידי כלשהו. אם נניח שטבלת Q שלנו משקפת נכון את "האטרקטיביות" של כל פעולה, אז במצב *s'* נבחר פעולה *a* שתואמת לערך המקסימלי של *Q(s',a')*. לכן, התגמול העתידי הטוב ביותר שנוכל לקבל במצב *s* יוגדר כ-`max`
+נניח שאנו כעת במצב *s*, ואנו רוצים לעבור למצב הבא *s'*. באמצעות המעבר נקבל את התגמול המיידי *r(s,a)*, המוגדר על ידי פונקציית התגמול, בתוספת תגמול עתידי כלשהו. אם נניח שטבלת Q שלנו משקפת נכונה את "המשיכה" של כל פעולה, אז במצב *s'* נבחר פעולה *a* המתאימה לערך המקסימלי של *Q(s',a')*. לכן, התגמול העתידי הטוב ביותר שנוכל לקבל במצב *s* יוגדר כ-`max`a'*Q(s',a')* (מקסימום מחושב על כל הפעולות האפשריות *a'* במצב *s'*).
+
+נוסחת בלמן לחישוב ערך טבלת Q במצב *s*, עבור פעולה *a*, היא:
+
+
+
+כאן γ הוא מה שנקרא **מקדם הנחה** שקובע עד כמה יש להעדיף את התגמול הנוכחי על פני תגמול עתידי ולהפך.
+
+## אלגוריתם למידה
+
+בהתבסס על המשוואה שלמעלה, נכתוב כעת קוד מזויף לאלגוריתם הלמידה שלנו:
+
+* אתחל את טבלת Q עם ערכים שווים לכל המצבים והפעולות
+* הגדר שיעור למידה α ← 1
+* חזור על הסימולציה מספר פעמים
+ 1. התחל במיקום אקראי
+ 1. חזור
+ 1. בחר פעולה *a* במצב *s*
+ 2. בצע את הפעולה על ידי מעבר למצב חדש *s'*
+ 3. אם נתקלת בתנאי סוף משחק, או שהתגמול הכולל קטן מדי - יצא מהסימולציה
+ 4. חשב תגמול *r* במצב החדש
+ 5. עדכן את פונקציית Q לפי משוואת בלמן: *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ maxa'Q(s',a'))*
+ 6. *s* ← *s'*
+ 7. עדכן את התגמול הכולל והקטן את α.
+
+## ניצול מול חקר
+
+באלגוריתם שלעיל לא ציינו בדיוק כיצד לבחור פעולה בשלב 2.1. אם נבחר את הפעולה באופן אקראי, נחקור אקראית את הסביבה, ויש סיכוי גבוה שנמות לעיתים קרובות ונבדוק אזורים שאליהם בדרך כלל לא היינו הולכים. גישה חלופית תהיה **לנצל** את ערכי טבלת Q שכבר ידועים, ובכך לבחור את הפעולה הטובה ביותר (עם ערך טבלת Q גבוה יותר) במצב *s*. עם זאת, זה ימנע מאיתנו לחקור מצבים אחרים, וקיים סיכוי שלא נמצא את הפתרון האופטימלי.
+
+לכן, הגישה הטובה ביותר היא ליצור איזון בין חקר לניצול. זה יכול להיעשות על ידי בחירת הפעולה במצב *s* עם הסתברויות פרופורציונליות לערכים בטבלת Q. בתחילה, כאשר ערכי טבלת Q כולם זהים, זה יתאים לבחירה אקראית, אך ככל שנלמד יותר על הסביבה שלנו, נהיה יותר סבירים לעקוב אחרי המסלול האופטימלי תוך מתן אפשרות לסוכן לבחור את הנתיב הלא נבדק מדי פעם.
+
+## יישום בפייתון
+
+אנו מוכנים כעת ליישם את אלגוריתם הלמידה. לפני כן, אנו צריכים פונקציה שתמיר מספרים שרירותיים בטבלת Q לווקטור של הסתברויות עבור הפעולות המתאימות.
+
+1. צור פונקציה `probs()`:
+
+ ```python
+ def probs(v,eps=1e-4):
+ v = v-v.min()+eps
+ v = v/v.sum()
+ return v
+ ```
+
+ אנו מוסיפים כמה `eps` לווקטור המקורי כדי להימנע מחלוקה באפס במקרה הראשוני, כאשר כל רכיבי הווקטור זהים.
+
+הרץ את אלגוריתם הלמידה לאורך 5000 ניסויים, המכונים גם ** epochs **: (בלוק קוד 8)
+```python
+ for epoch in range(5000):
+
+ # בחר נקודה התחלתית
+ m.random_start()
+
+ # התחל לנוע
+ n=0
+ cum_reward = 0
+ while True:
+ x,y = m.human
+ v = probs(Q[x,y])
+ a = random.choices(list(actions),weights=v)[0]
+ dpos = actions[a]
+ m.move(dpos,check_correctness=False) # אנו מאפשרים לשחקן לזוז מחוץ ללוח, מה שמסיים את הפרק
+ r = reward(m)
+ cum_reward += r
+ if r==end_reward or cum_reward < -1000:
+ lpath.append(n)
+ break
+ alpha = np.exp(-n / 10e5)
+ gamma = 0.5
+ ai = action_idx[a]
+ Q[x,y,ai] = (1 - alpha) * Q[x,y,ai] + alpha * (r + gamma * Q[x+dpos[0], y+dpos[1]].max())
+ n+=1
+```
+
+לאחר ביצוע האלגוריתם, טבלת Q אמורה להתעדכן בערכים המגדירים את המשיכה של פעולות שונות בכל שלב. נוכל לנסות להמחיש את טבלת Q על ידי ציור וקטור בכל תא שיצביע בכיוון הרצוי לתנועה. לצורך פשטות, אנו מציירים מעגל קטן במקום ראש חץ.
+
+
## בדיקת המדיניות
-מכיוון ש-Q-Table מציג את "האטרקטיביות" של כל פעולה בכל מצב, קל מאוד להשתמש בו כדי להגדיר ניווט יעיל בעולם שלנו. במקרה הפשוט ביותר, ניתן לבחור את הפעולה המתאימה לערך הגבוה ביותר ב-Q-Table: (בלוק קוד 9)
+מכיוון שטבלת Q מפרטת את ה"משיכה" של כל פעולה בכל מצב, קל לשימוש בה כדי להגדיר ניווט יעיל בעולם שלנו. בפשטות, ניתן לבחור את הפעולה המתאימה לערך הגבוה ביותר בטבלת Q: (בלוק קוד 9)
```python
def qpolicy_strict(m):
@@ -198,17 +274,18 @@ def qpolicy_strict(m):
walk(m,qpolicy_strict)
```
-> אם תנסו את הקוד למעלה מספר פעמים, ייתכן שתשימו לב שלפעמים הוא "נתקע", ותצטרכו ללחוץ על כפתור ה-STOP במחברת כדי להפסיק אותו. זה קורה מכיוון שיכולות להיות מצבים שבהם שני מצבים "מצביעים" זה על זה מבחינת ערך Q אופטימלי, ובמקרה כזה הסוכן ימשיך לנוע בין אותם מצבים ללא סוף.
+
+> אם תנסו את הקוד למעלה מספר פעמים, ייתכן שתבחינו שברגעים מסוימים הוא "נתקע", ותצטרכו ללחוץ על כפתור העצור במחברת כדי להפסיק אותו. זה קורה מאחר שיכולות להיות מצבים בהם שני המצבים "מצביעים" זה על זה מבחינת ערך Q אופטימלי, ובמקרה כזה הסוכנים מוצאים את עצמם נעים בין אותם מצבים ללא הגבלה.
## 🚀אתגר
-> **משימה 1:** שנו את הפונקציה `walk` כך שתוגבל אורך המסלול המרבי למספר מסוים של צעדים (לדוגמה, 100), וצפו בקוד למעלה מחזיר את הערך הזה מדי פעם.
+> **משימה 1:** שנו את פונקציית `walk` כך שתמנע מהאורך המקסימלי של המסלול לעבור מספר מסוים של צעדים (נניח, 100), וצפו בקוד למעלה מחזיר ערך זה מעת לעת.
-> **משימה 2:** שנו את הפונקציה `walk` כך שלא תחזור למקומות שבהם כבר הייתה בעבר. זה ימנע מ-`walk` להיכנס ללולאה, אך עדיין ייתכן שהסוכן ימצא את עצמו "תקוע" במקום שממנו אינו יכול לברוח.
+> **משימה 2:** שנו את פונקציית `walk` כך שהיא לא תחזור למקומות בהם כבר הייתה בעבר. זה ימנע מ-`walk` להיכנס ללופים, אולם הסוכן עדיין עלול להיתקע במקום ממנו הוא לא יכול להיחלץ.
## ניווט
-מדיניות ניווט טובה יותר תהיה זו שהשתמשנו בה במהלך האימון, שמשלבת ניצול וחקר. במדיניות זו, נבחר כל פעולה עם הסתברות מסוימת, פרופורציונלית לערכים ב-Q-Table. אסטרטגיה זו עדיין עשויה לגרום לסוכן לחזור למיקום שכבר חקר, אך כפי שניתן לראות מהקוד למטה, היא מביאה למסלול ממוצע קצר מאוד למיקום הרצוי (זכרו ש-`print_statistics` מריץ את הסימולציה 100 פעמים): (בלוק קוד 10)
+מדיניות ניווט טובה יותר תהיה זו שהשתמשנו בה בזמן האימון, שמשלבת ניצול וחיפוש. במדיניות זו נבחר כל פעולה עם הסתברות מסוימת, בפרופורציה לערכים בטבלת Q. אסטרטגיה זו יכולה עדיין לגרום לסוכן לחזור למקום שכבר חקר, אבל, כפי שרואים מהקוד למטה, היא מביאה לאורך ממוצע קצר מאוד למסלול למיקום הרצוי (זכרו ש-`print_statistics` מפעילה את הסימולציה 100 פעמים): (בלוק קוד 10)
```python
def qpolicy(m):
@@ -220,28 +297,32 @@ def qpolicy(m):
print_statistics(qpolicy)
```
-לאחר הרצת הקוד הזה, אתם אמורים לקבל אורך מסלול ממוצע קטן בהרבה מאשר קודם, בטווח של 3-6.
+לאחר הרצת הקוד הזה, אתם אמורים לקבל אורך מסלול ממוצע קטן בהרבה מאשר קודם, בתחום של 3-6.
## חקירת תהליך הלמידה
-כפי שציינו, תהליך הלמידה הוא איזון בין חקר לבין ניצול הידע שנצבר על מבנה מרחב הבעיה. ראינו שהתוצאות של הלמידה (היכולת לעזור לסוכן למצוא מסלול קצר למטרה) השתפרו, אך גם מעניין לצפות כיצד אורך המסלול הממוצע מתנהג במהלך תהליך הלמידה:
+כפי שציינו, תהליך הלמידה הוא איזון בין חקר למידת הידע שנצבר אודות מבנה מרחב הבעיה. ראינו שהתוצאות של הלמידה (היכולת לעזור לסוכן למצוא מסלול קצר למטרה) השתפרו, אך מעניין גם לעקוב כיצד אורך המסלול הממוצע מתנהג במהלך תהליך הלמידה:
+
+
-## סיכום הלמידות:
+את תהליך הלמידה ניתן לסכם כך:
-- **אורך המסלול הממוצע עולה**. מה שאנו רואים כאן הוא שבתחילה, אורך המסלול הממוצע עולה. זה כנראה נובע מכך שכאשר איננו יודעים דבר על הסביבה, אנו נוטים להיתקע במצבים גרועים, כמו מים או זאב. ככל שאנו לומדים יותר ומתחילים להשתמש בידע הזה, אנו יכולים לחקור את הסביבה לזמן ארוך יותר, אך עדיין איננו יודעים היטב היכן נמצאים התפוחים.
+- **אורך המסלול הממוצע עולה**. מה שאנחנו רואים כאן הוא שבתתחילה, אורך המסלול הממוצע עולה. זה ככל הנראה נובע מכך שכאשר איננו יודעים דבר על הסביבה, אנחנו עלולים להיכנס למצבים לא טובים, כמו מים או זאב. ככל שלומדים יותר ומתחילים להשתמש בידע זה, ניתן לחקור את הסביבה לאורך זמן רב יותר, אך עדיין אנו לא יודעים היטב איפה התפוחים נמצאים.
-- **אורך המסלול יורד ככל שאנו לומדים יותר**. ברגע שאנו לומדים מספיק, קל יותר לסוכן להשיג את המטרה, ואורך המסלול מתחיל לרדת. עם זאת, אנו עדיין פתוחים לחקר, ולכן לעיתים קרובות אנו סוטים מהמסלול הטוב ביותר ובוחנים אפשרויות חדשות, מה שגורם למסלול להיות ארוך יותר מהאופטימלי.
+- **אורך המסלול מתקצר ככל שמלמדים יותר**. ברגע שלומדים מספיק, הסוכן מצליח להשיג את המטרה ביתר קלות, ואורך המסלול מתחיל להתקצר. עם זאת, אנחנו עדיין פתוחים לחקר, ולכן לעיתים הולכים עם סיבוב מהמסלול הטוב ביותר ובודקים אופציות חדשות, מה שגורם לאורך המסלול להיות ארוך יותר מהאופטימלי.
-- **אורך המסלול עולה באופן פתאומי**. מה שאנו גם רואים בגרף הוא שבשלב מסוים, האורך עלה באופן פתאומי. זה מצביע על האופי הסטוכסטי של התהליך, ועל כך שבשלב מסוים אנו יכולים "לקלקל" את מקדמי ה-Q-Table על ידי החלפתם בערכים חדשים. באופן אידיאלי, יש למזער זאת על ידי הפחתת קצב הלמידה (לדוגמה, לקראת סוף האימון, אנו משנים את ערכי ה-Q-Table רק במידה קטנה).
+- **אורך המסלול עולה בפתאומיות**. בנוסף אנחנו מבחינים בגרף שכמה פעמים האורך עלה בפתאומיות. זה מצביע על אופיו האקראי של התהליך, ועל כך שבנקודה מסוימת יכול להתקלקל טבלת ה-Q על ידי כתיבה מחדש של ערכים חדשים. יש להפחית זאת ככל הניתן על ידי הקטנת קצב הלמידה (לדוגמה, לקראת סוף האימון, אנו מעדכנים את ערכי טבלת ה-Q על ידי ערך קטן בלבד).
-בסך הכל, חשוב לזכור שההצלחה והאיכות של תהליך הלמידה תלויים באופן משמעותי בפרמטרים, כמו קצב הלמידה, דעיכת קצב הלמידה, ופקטור ההנחה. אלו נקראים לעיתים קרובות **היפר-פרמטרים**, כדי להבדילם מ-**פרמטרים**, שאותם אנו ממטבים במהלך האימון (לדוגמה, מקדמי Q-Table). תהליך מציאת הערכים הטובים ביותר להיפר-פרמטרים נקרא **אופטימיזציה של היפר-פרמטרים**, והוא ראוי לנושא נפרד.
+בסך הכול, חשוב לזכור שהצלחת ותוצאות תהליך הלמידה תלויות במידה רבה בפרמטרים כמו קצב הלמידה, דעיכת קצב הלמידה, וגורם ההנחה. אלו קרויים לעיתים **היפרפרמטרים**, כדי להבדיל אותם מ-**פרמטרים**, אותם אנו עושים אופטימיזציה במהלך האימון (לדוגמה, ערכי טבלת ה-Q). תהליך מציאת ערכי ההיפרפרמטר הטובים נקרא **אופטימיזציית היפרפרמטרים**, ומגיע לו נושא נפרד.
-## [שאלון לאחר ההרצאה](https://ff-quizzes.netlify.app/en/ml/)
+## [חידון לאחר ההרצאה](https://ff-quizzes.netlify.app/en/ml/)
-## משימה
-[עולם מציאותי יותר](assignment.md)
+## מטלה
+[עולם יותר ריאליסטי](assignment.md)
---
-**כתב ויתור**:
-מסמך זה תורגם באמצעות שירות תרגום מבוסס בינה מלאכותית [Co-op Translator](https://github.com/Azure/co-op-translator). למרות שאנו שואפים לדיוק, יש לקחת בחשבון שתרגומים אוטומטיים עשויים להכיל שגיאות או אי דיוקים. המסמך המקורי בשפתו המקורית צריך להיחשב כמקור סמכותי. עבור מידע קריטי, מומלץ להשתמש בתרגום מקצועי על ידי אדם. איננו נושאים באחריות לאי הבנות או לפרשנויות שגויות הנובעות משימוש בתרגום זה.
\ No newline at end of file
+
+**כתב ויתור**:
+מסמך זה תורגם באמצעות שירות תרגום אוטומטי [Co-op Translator](https://github.com/Azure/co-op-translator). למרות שאנו שואפים לדיוק, יש לקחת בחשבון שתרגומים אוטומטיים עלולים להכיל שגיאות או אי-דיוקים. יש להחשיב את המסמך המקורי בשפתו הטבעית כמקור הסמכות. למידע קריטי מומלץ להשתמש בתרגום מקצועי על ידי מתרגם אדם. אנו לא אחראים לכל אי-הבנה או פירוש שגוי הנובע מהשימוש בתרגום זה.
+
\ No newline at end of file
diff --git a/translations/he/8-Reinforcement/2-Gym/README.md b/translations/he/8-Reinforcement/2-Gym/README.md
index 751cfd48f..de55f2082 100644
--- a/translations/he/8-Reinforcement/2-Gym/README.md
+++ b/translations/he/8-Reinforcement/2-Gym/README.md
@@ -1,14 +1,34 @@
-## דרישות מקדימות
+# גלישת CartPole
-בשיעור הזה נשתמש בספרייה בשם **OpenAI Gym** כדי לדמות **סביבות** שונות. ניתן להריץ את הקוד של השיעור הזה באופן מקומי (למשל, מ-Visual Studio Code), ובמקרה כזה הסימולציה תיפתח בחלון חדש. כאשר מריצים את הקוד אונליין, ייתכן שתצטרכו לבצע כמה התאמות בקוד, כפי שמתואר [כאן](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7).
+הבעיה שפתרנו בשיעור הקודם עשויה להיראות כבעיה משחקית, שלא ממש ישימה במצבים אמיתיים. זה לא המקרה, כי בעיות רבות מהעולם האמיתי חולקות תרחיש זה - כולל משחק שחמט או גו. הן דומות, כי יש לנו גם לוח עם חוקים נתונים ו**סטייט בדידה**.
+
+## [חידון לפני ההרצאה](https://ff-quizzes.netlify.app/en/ml/)
+
+## מבוא
+
+בשיעור זה ניישם את אותם עקרונות של Q-Learning על בעיה עם **סטייט רציף**, כלומר סטייט הנתון על ידי מספר ממשי אחד או יותר. נתמודד עם הבעיה הבאה:
+
+> **בעיה**: אם פיטר רוצה להימלט מהזאב, הוא צריך להיות מסוגל לנוע מהר יותר. נראה כיצד פיטר יכול ללמוד לגלוש, במיוחד לשמור על איזון, תוך שימוש ב-Q-Learning.
+
+
+
+> פיטר וחבריו מגלים יצירתיות כדי להימלט מהזאב! תמונה מאת [Jen Looper](https://twitter.com/jenlooper)
+
+נשתמש בגרסה מפושטת של שמירת איזון הידועה כבעיית **CartPole**. בעולם ה-cartpole יש לנו מחליק אופקי שיכול לנוע שמאלה או ימינה, והמטרה היא לאזן קורה אנכית על גבי המחליק.
+
+
+
+## דרישות מוקדמות
+
+בשיעור זה נשתמש בספרייה בשם **OpenAI Gym** כדי לסמלץ סביבות שונות. ניתן להריץ את קוד השיעור מקומית (למשל מתוך Visual Studio Code), ובמקרה זה הסימולציה תיפתח בחלון חדש. כאשר מריצים את הקוד אונליין, ייתכן שתצטרכו לבצע כמה התאמות בקוד, כפי שמתואר [כאן](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7).
## OpenAI Gym
-בשיעור הקודם, חוקי המשחק והמצב הוגדרו על ידי מחלקת `Board` שהגדרנו בעצמנו. כאן נשתמש ב**סביבת סימולציה** מיוחדת, שתדמה את הפיזיקה שמאחורי מוט האיזון. אחת מסביבות הסימולציה הפופולריות ביותר לאימון אלגוריתמים של למידת חיזוק נקראת [Gym](https://gym.openai.com/), שמנוהלת על ידי [OpenAI](https://openai.com/). באמצעות ה-Gym נוכל ליצור סביבות שונות, החל מסימולציית CartPole ועד משחקי Atari.
+בשיעור הקודם, חוקי המשחק והסטייט נקבעו על ידי מחלקת `Board` שהגדרנו בעצמנו. כאן נשתמש ב**סביבת סימולציה** מיוחדת, שתחקה את הפיזיקה שמאחורי הקורה המשמרת איזון. אחת מסביבות הסימולציה הפופולריות ביותר לאימון אלגוריתמים של למידה מחוזקת נקראת [Gym](https://gym.openai.com/), שמתוחזקת על ידי [OpenAI](https://openai.com/). באמצעות Gym זה, נוכל ליצור סביבות שונות, מסימולציית cartpole ועד למשחקי אטארי.
-> **הערה**: ניתן לראות סביבות נוספות הזמינות ב-OpenAI Gym [כאן](https://gym.openai.com/envs/#classic_control).
+> **הערה**: ניתן לראות סביבות נוספות זמינות מתוך OpenAI Gym [כאן](https://gym.openai.com/envs/#classic_control).
-ראשית, נתקין את ה-Gym ונייבא את הספריות הנדרשות (קוד בלוק 1):
+ראשית, נתקין את gym ונייבא את הספריות הנדרשות (קוד בלוק 1):
```python
import sys
@@ -20,15 +40,15 @@ import numpy as np
import random
```
-## תרגיל - אתחול סביבת CartPole
+## תרגיל - אתחול סביבה ל-cartpole
-כדי לעבוד עם בעיית איזון מוט ה-CartPole, עלינו לאתחל את הסביבה המתאימה. כל סביבה מקושרת ל:
+כדי לעבוד עם בעיית שמירת האיזון ב-cartpole, יש לאתחל את הסביבה המתאימה. כל סביבה מקושרת ל:
-- **מרחב תצפיות** שמגדיר את מבנה המידע שאנו מקבלים מהסביבה. עבור בעיית ה-CartPole, אנו מקבלים את מיקום המוט, מהירות ועוד ערכים נוספים.
+- **מרחב תצפית** שמגדיר את מבנה המידע שנקבל מהסביבה. עבור בעיית ה-cartpole, נקבל את מיקום הקורה, מהירות וערכים נוספים.
-- **מרחב פעולות** שמגדיר פעולות אפשריות. במקרה שלנו מרחב הפעולות הוא דיסקרטי, ומורכב משתי פעולות - **שמאלה** ו-**ימינה**. (קוד בלוק 2)
+- **מרחב פעולה** שמגדיר פעולות אפשריות. במקרה שלנו מרחב הפעולה הוא בדידי, וכולל שתי פעולות - **שמאל** ו-**ימין**. (קוד בלוק 2)
-1. כדי לאתחל, הקלידו את הקוד הבא:
+1. לאתחל, הקלד את הקוד הבא:
```python
env = gym.make("CartPole-v1")
@@ -37,11 +57,11 @@ import random
print(env.action_space.sample())
```
-כדי לראות איך הסביבה עובדת, נריץ סימולציה קצרה של 100 צעדים. בכל צעד, נספק אחת מהפעולות לביצוע - בסימולציה הזו פשוט נבחר פעולה באופן אקראי מתוך `action_space`.
+כדי לראות כיצד הסביבה פועלת, נריץ סימולציה קצרה של 100 צעדים. בכל צעד נספק פעולה אחת לביצוע - בסימולציה הזו אנו פשוט בוחרים פעולה באקראי מתוך `action_space`.
-1. הריצו את הקוד הבא וראו מה מתקבל.
+1. הרץ את הקוד למטה וראה לאן זה מוביל.
- ✅ זכרו שמומלץ להריץ את הקוד הזה בהתקנה מקומית של Python! (קוד בלוק 3)
+ ✅ זכור שמומלץ להריץ קוד זה בהתקנת פייתון מקומית! (קוד בלוק 3)
```python
env.reset()
@@ -52,11 +72,11 @@ import random
env.close()
```
- אתם אמורים לראות משהו דומה לתמונה הזו:
+ תראה משהו דומה לתמונה הזו:
- 
+ 
-1. במהלך הסימולציה, עלינו לקבל תצפיות כדי להחליט כיצד לפעול. למעשה, פונקציית הצעד מחזירה תצפיות נוכחיות, פונקציית תגמול ודגל שמציין האם יש טעם להמשיך את הסימולציה או לא: (קוד בלוק 4)
+1. במהלך הסימולציה, אנו זקוקים לתצפיות כדי להחליט איך לפעול. בפועל, הפונקציה step מחזירה את התצפיות הנוכחיות, את פונקציית התגמול, ואת הדגל done שמצביע האם יש טעם להמשיך בסימולציה או לא: (קוד בלוק 4)
```python
env.reset()
@@ -69,7 +89,7 @@ import random
env.close()
```
- בסופו של דבר תראו משהו כזה בתוצאות המחברת:
+ תראה משהו כזה ביציאת המחברת:
```text
[ 0.03403272 -0.24301182 0.02669811 0.2895829 ] -> 1.0
@@ -82,43 +102,43 @@ import random
[ 0.17617249 0.35602306 -0.21873684 -0.90998894] -> 1.0
```
- וקטור התצפיות שמוחזר בכל צעד של הסימולציה מכיל את הערכים הבאים:
+ וקטור התצפיות שמוחזר בכל צעד מכיל את הערכים הבאים:
- מיקום העגלה
- מהירות העגלה
- - זווית המוט
- - קצב הסיבוב של המוט
+ - זווית הקורה
+ - קצב סיבוב הקורה
-1. קבלו את הערכים המינימליים והמקסימליים של המספרים הללו: (קוד בלוק 5)
+1. קבל ערך מינימום ומקסימום של המספרים האלה: (קוד בלוק 5)
```python
print(env.observation_space.low)
print(env.observation_space.high)
```
- ייתכן שתשימו לב שערך התגמול בכל צעד של הסימולציה הוא תמיד 1. זאת מכיוון שהמטרה שלנו היא לשרוד כמה שיותר זמן, כלומר לשמור על המוט במצב אנכי סביר למשך הזמן הארוך ביותר.
+ ייתכן גם שתבחין שערך התגמול בכל צעד בסימולציה תמיד הוא 1. זה מכיוון שהמטרה שלנו היא לשרוד כמה שיותר זמן, כלומר לשמור על הקורה במצב אנכי סביר במשך זמן ממושך.
- ✅ למעשה, סימולציית CartPole נחשבת לפתרון אם נצליח להגיע לתגמול ממוצע של 195 לאורך 100 ניסיונות רצופים.
+ ✅ למעשה, סימולציית CartPole נחשבת לפתרונה אם נצליח לקבל תגמול ממוצע של 195 על 100 ניסיונות עוקבים.
-## דיסקרטיזציה של מצב
+## בדידת סטייט
-בלמידת Q, עלינו לבנות טבלת Q שמגדירה מה לעשות בכל מצב. כדי לעשות זאת, עלינו שהמצב יהיה **דיסקרטי**, כלומר יכיל מספר סופי של ערכים דיסקרטיים. לכן, עלינו למצוא דרך **לדסקרט** את התצפיות שלנו, ולמפות אותן לקבוצה סופית של מצבים.
+ב-Q-Learning, צריך לבנות טבלת Q שמגדירה מה לעשות בכל סטייט. כדי לעשות זאת, הסטייט צריך להיות **בדידי**, כלומר להכיל מספר סופי של ערכים בדידים. לכן, יש צורך איכשהו **לבדד** את התצפיות שלנו, ולמפות אותן למערכת סופית של סטייטים.
יש כמה דרכים לעשות זאת:
-- **חלוקה לבינים**. אם אנו יודעים את הטווח של ערך מסוים, נוכל לחלק את הטווח למספר **בינים**, ואז להחליף את הערך במספר הבין שאליו הוא שייך. ניתן לעשות זאת באמצעות המתודה [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html) של numpy. במקרה זה, נדע בדיוק את גודל המצב, מכיוון שהוא תלוי במספר הבינים שנבחר לדיגיטציה.
+- **חלוקה לתאים (bins)**. אם אנו יודעים את התחום של ערך מסוים, נוכל לחלק תחום זה למספר **תאים**, ואז להחליף את הערך במספר התא שאליו הוא שייך. ניתן לעשות זאת באמצעות השיטה [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html) של numpy. במקרה זה, נדע בדיוק את גודל הסטייט, כי הוא תלוי במספר התאים שנבחר.
+
+✅ ניתן להשתמש באינטרפולציה ליניארית כדי להביא ערכים לתחום סופי מסוים (נניח, מ-20- עד 20), ואז להמיר את המספרים לשלמים על ידי עיגול. זה נותן לנו פחות שליטה על גודל הסטייט, במיוחד אם איננו יודעים את טווחי הקלט המדויקים. למשל, במקרה שלנו 2 מתוך 4 ערכים אינם מוגבלים עליונה/תחתונה, מה שעלול לגרום למספר אינסופי של סטייטים.
-✅ ניתן להשתמש באינטרפולציה ליניארית כדי להביא ערכים לטווח סופי (למשל, מ-20- עד 20), ואז להמיר מספרים לשלמים על ידי עיגול. זה נותן לנו פחות שליטה על גודל המצב, במיוחד אם איננו יודעים את הטווחים המדויקים של ערכי הקלט. לדוגמה, במקרה שלנו 2 מתוך 4 הערכים אינם מוגבלים בטווח העליון/תחתון שלהם, מה שעשוי להוביל למספר אינסופי של מצבים.
+בדוגמה שלנו, נלך עם הגישה השנייה. כפי שתבחין מאוחר יותר, למרות חוסר הגבלות עליונות/תחתונות, הערכים הללו לעיתים נדירות יוצאים מטווחים סופיים מסוימים, ולכן הסטייטים עם ערכים קיצוניים יהיו נדירים מאוד.
-בדוגמה שלנו, נבחר בגישה השנייה. כפי שתשימו לב מאוחר יותר, למרות שהטווחים העליונים/תחתונים אינם מוגדרים, הערכים הללו לעיתים רחוקות לוקחים ערכים מחוץ לטווחים סופיים מסוימים, ולכן מצבים עם ערכים קיצוניים יהיו נדירים מאוד.
-
-1. הנה הפונקציה שתיקח את התצפית מהמודל שלנו ותפיק טופס של 4 ערכים שלמים: (קוד בלוק 6)
+1. הנה הפונקציה שלוקחת תצפית מהמודל ומחזירה זוג זוגות של 4 ערכים שלמים: (קוד בלוק 6)
```python
def discretize(x):
return tuple((x/np.array([0.25, 0.25, 0.01, 0.1])).astype(np.int))
```
-1. בואו נחקור גם שיטת דיסקרטיזציה נוספת באמצעות בינים: (קוד בלוק 7)
+1. בוא נבדוק גם שיטת בדידה אחרת באמצעות תאים: (קוד בלוק 7)
```python
def create_bins(i,num):
@@ -126,39 +146,39 @@ import random
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
+ ints = [(-5,5),(-2,2),(-0.5,0.5),(-2,2)] # טווחי ערכים עבור כל פרמטר
+ nbins = [20,20,10,10] # מספר תיבות עבור כל פרמטר
bins = [create_bins(ints[i],nbins[i]) for i in range(4)]
def discretize_bins(x):
return tuple(np.digitize(x[i],bins[i]) for i in range(4))
```
-1. עכשיו נריץ סימולציה קצרה ונצפה בערכי הסביבה הדיסקרטיים. אתם מוזמנים לנסות גם את `discretize` וגם את `discretize_bins` ולראות אם יש הבדל.
+1. עכשיו נריץ סימולציה קצרה ונבחן את הערכים הבדידים הללו מהסביבה. הרגש חופשי לנסות גם את `discretize` וגם את `discretize_bins` ולראות אם יש הבדל.
- ✅ `discretize_bins` מחזירה את מספר הבין, שהוא מבוסס על 0. לכן עבור ערכי משתנה קלט סביב 0 היא מחזירה את המספר מאמצע הטווח (10). ב-`discretize`, לא דאגנו לטווח ערכי הפלט, מה שמאפשר להם להיות שליליים, ולכן ערכי המצב אינם מוזזים, ו-0 מתאים ל-0. (קוד בלוק 8)
+ ✅ discretize_bins מחזיר את מספר התא, שמתחיל ב-0. לכן, עבור ערכי משתנה קלט סביב 0 הוא מחזיר את המספר מהאמצע התחום (10). ב-discretize לא התחשבנו בטווח ערכי הפלט, ואיפשרנו להם להיות שליליים, ולכן ערכי הסטייט לא מוזזים, ו-0 מתייחס ל-0. (קוד בלוק 8)
```python
env.reset()
done = False
while not done:
- #env.render()
+ #הסביבה מציגה()
obs, rew, done, info = env.step(env.action_space.sample())
- #print(discretize_bins(obs))
+ #הדפס את תוצאות החלוקה למרחבים בדידים (obs)
print(discretize(obs))
env.close()
```
- ✅ בטלו את ההערה בשורה שמתחילה ב-env.render אם אתם רוצים לראות איך הסביבה מתבצעת. אחרת, תוכלו להריץ אותה ברקע, מה שמהיר יותר. נשתמש בהרצה "בלתי נראית" זו במהלך תהליך למידת Q.
+ ✅ בטל את ההערה בשורה שמתחילה ב-env.render אם ברצונך לראות כיצד הסביבה מתבצעת. אחרת אפשר להריץ אותה ברקע, וזה מהיר יותר. נשתמש בהרצה "בלתי נראית" זו במהלך תהליך ה-Q-Learning.
## מבנה טבלת Q
-בשיעור הקודם, המצב היה זוג פשוט של מספרים מ-0 עד 8, ולכן היה נוח לייצג את טבלת Q באמצעות טנזור numpy עם צורה של 8x8x2. אם נשתמש בדיסקרטיזציה באמצעות בינים, גודל וקטור המצב שלנו גם ידוע, ולכן נוכל להשתמש באותה גישה ולייצג מצב באמצעות מערך בצורת 20x20x10x10x2 (כאן 2 הוא הממד של מרחב הפעולות, והמידות הראשונות מתאימות למספר הבינים שבחרנו להשתמש עבור כל אחד מהפרמטרים במרחב התצפיות).
+בשיעור הקודם, היה הסטייט זוג פשוט של מספרים מ-0 עד 8, ולכן היה נוח לייצג את טבלת Q בטנסור numpy עם צורה 8x8x2. אם נשתמש בבידוד תאים, גודל וקטור הסטייט שלנו ידוע גם כן, ולכן נוכל להשתמש בגישה דומה ולייצג את הסטייט במערך בצורה 20x20x10x10x2 (כאן 2 היא מימד מרחב הפעולה, והמימדים הראשונים מתאימים למספר התאים שבחרנו לכל אחד מהפרמטרים במרחב התצפית).
-עם זאת, לפעמים המידות המדויקות של מרחב התצפיות אינן ידועות. במקרה של פונקציית `discretize`, לעולם לא נוכל להיות בטוחים שהמצב שלנו נשאר בתוך גבולות מסוימים, מכיוון שחלק מהערכים המקוריים אינם מוגבלים. לכן, נשתמש בגישה מעט שונה ונייצג את טבלת Q באמצעות מילון.
+עם זאת, לפעמים מימדי מרחב התצפיות המדויקים אינם ידועים. במקרה של הפונקציה `discretize` אולי לא נדע שהסטייט ישאר במסגרת גבולות מסוימים, מכיוון שחלק מהערכים המקוריים אינם מוגבלים. לכן, נשתמש בגישה שונה מעט ונייצג את טבלת ה-Q כמילון.
-1. השתמשו בזוג *(state,action)* כמפתח המילון, והערך יתאים לערך הכניסה בטבלת Q. (קוד בלוק 9)
+1. השתמש בזוג *(state,action)* כמפתח מילון, והערך יתאים לערך טבלת Q. (קוד בלוק 9)
```python
Q = {}
@@ -168,38 +188,38 @@ import random
return [Q.get((state,a),0) for a in actions]
```
- כאן אנו גם מגדירים פונקציה `qvalues()`, שמחזירה רשימה של ערכי טבלת Q עבור מצב נתון שמתאים לכל הפעולות האפשריות. אם הכניסה אינה קיימת בטבלת Q, נחזיר 0 כברירת מחדל.
+ כאן גם מגדירים פונקציה `qvalues()`, שמחזירה רשימת ערכי טבלת Q עבור סטייט נתון התואמת לכל הפעולות האפשריות. אם הכניסה אינה קיימת בטבלה, נחזיר 0 כברירת מחדל.
-## בואו נתחיל בלמידת Q
+## נתחיל ב-Q-Learning
-עכשיו אנחנו מוכנים ללמד את פיטר לשמור על איזון!
+עכשיו אנו מוכנים ללמד את פיטר לשמור על איזון!
-1. ראשית, נגדיר כמה היפרפרמטרים: (קוד בלוק 10)
+1. ראשית, נגדיר כמה היפר-פרמטרים: (קוד בלוק 10)
```python
- # hyperparameters
+ # היפר-פרמטרים
alpha = 0.3
gamma = 0.9
epsilon = 0.90
```
- כאן, `alpha` הוא **קצב הלמידה** שמגדיר באיזו מידה עלינו להתאים את הערכים הנוכחיים של טבלת Q בכל צעד. בשיעור הקודם התחלנו עם 1, ואז הפחתנו את `alpha` לערכים נמוכים יותר במהלך האימון. בדוגמה הזו נשמור אותו קבוע רק לשם הפשטות, ואתם יכולים להתנסות בהתאמת ערכי `alpha` מאוחר יותר.
+ כאן, `alpha` הוא **קצב הלמידה** שמגדיר באיזו מידה יש להתאים את הערכים הנוכחיים של טבלת Q בכל צעד. בשיעור הקודם התחלנו ב-1, ואז הורדנו את `alpha` לערכים נמוכים יותר במהלך האימון. בדוגמה זו נשמור אותו קבוע למען הפשטות, ואתם יכולים להתנסות בהמשך בהתאמות בערכי `alpha`.
- `gamma` הוא **גורם ההנחה** שמראה באיזו מידה עלינו להעדיף תגמול עתידי על פני תגמול נוכחי.
+ `gamma` הוא **מקדם הנחה** שמראה באיזו מידה יש להעדיף תגמול עתידי על פני תגמול נוכחי.
- `epsilon` הוא **גורם החקר/ניצול** שקובע האם עלינו להעדיף חקר על פני ניצול או להפך. באלגוריתם שלנו, נבחר באחוז `epsilon` מהמקרים את הפעולה הבאה לפי ערכי טבלת Q, ובשאר המקרים נבצע פעולה אקראית. זה יאפשר לנו לחקור אזורים במרחב החיפוש שמעולם לא ראינו קודם.
+ `epsilon` הוא **מקדם חקירה/ניצול** שמכתיב האם להעדיף חקירה או ניצול. באלגוריתם שלנו נבחר באחוז `epsilon` מהרצות את הפעולה על פי ערכי טבלת Q, ובשאר המקרים נבחר פעולה אקראית. זה יאפשר לנו לחקור אזורים במרחב החיפוש שמעולם לא ראינו.
- ✅ מבחינת איזון - בחירת פעולה אקראית (חקר) תפעל כמו מכה אקראית בכיוון הלא נכון, והמוט יצטרך ללמוד כיצד להתאושש מה"טעויות" הללו.
+ ✅ בהקשר של שמירת איזון - בחירת פעולה אקראית (חקירה) תתנהל כמו מכה אקראית בכיוון הלא נכון, והקורה תצטרך ללמוד איך להתאושש מאיזון בעקבות "שגיאות" אלו.
### שיפור האלגוריתם
-ניתן גם לבצע שני שיפורים באלגוריתם שלנו מהשיעור הקודם:
-
-- **חישוב תגמול מצטבר ממוצע**, לאורך מספר סימולציות. נדפיס את ההתקדמות כל 5000 איטרציות, ונחשב את התגמול המצטבר הממוצע לאורך פרק הזמן הזה. המשמעות היא שאם נקבל יותר מ-195 נקודות - נוכל להחשיב את הבעיה כפתורה, באיכות גבוהה אף יותר מהנדרש.
+נוכל גם לבצע שני שיפורים באלגוריתם שלנו מהשיעור הקודם:
-- **חישוב התוצאה המצטברת הממוצעת המקסימלית**, `Qmax`, ונשמור את טבלת Q המתאימה לתוצאה זו. כאשר תריצו את האימון תבחינו שלפעמים התוצאה המצטברת הממוצעת מתחילה לרדת, ואנו רוצים לשמור את ערכי טבלת Q המתאימים למודל הטוב ביותר שנצפה במהלך האימון.
+- **חישוב ממוצע תגמול מצטבר**, על פני מספר סימולציות. נדפיס את ההתקדמות כל 5000 איטרציות, ונחשב את ממוצע התגמול המצטבר לאורך תקופה זו. משמעות הדבר היא שאם נקבל יותר מ-195 נקודות - נוכל להחשיב את הבעיה כפתורה, באיכות אפילו גבוהה יותר מהנדרש.
+
+- **חישוב ממוצע תוצאה מצטברת מקסימלית**, `Qmax`, ונשמור את טבלת Q המתאימה לתוצאה הזו. במהלך האימון תבחין שעיתים ממוצע התוצאה מתחיל לרדת, ואנחנו רוצים לשמור את ערכי טבלת Q שמתאימים למודל הטוב ביותר שנצפה במהלך האימון.
-1. אספו את כל התגמולים המצטברים בכל סימולציה בוקטור `rewards` לצורך גרפיקה מאוחרת יותר. (קוד בלוק 11)
+1. אסוף את כל תגמולי המצטברים בכל סימולציה במערך `rewards` לצורך הצגה גרפית מאוחרת יותר. (קוד בלוק 11)
```python
def probs(v,eps=1e-4):
@@ -214,15 +234,15 @@ import random
obs = env.reset()
done = False
cum_reward=0
- # == do the simulation ==
+ # == בצע את הסימולציה ==
while not done:
s = discretize(obs)
if random.random() Qmax:
@@ -240,25 +260,25 @@ import random
cum_rewards=[]
```
-מה שתשימו לב מהתוצאות הללו:
+מה שאולי תבחין מהתוצאות האלה:
-- **קרוב למטרה שלנו**. אנו קרובים מאוד להשגת המטרה של קבלת 195 תגמולים מצטברים לאורך 100+ ריצות רצופות של הסימולציה, או שאולי כבר השגנו אותה! גם אם נקבל מספרים קטנים יותר, עדיין איננו יודעים, מכיוון שאנו מחשבים ממוצע לאורך 5000 ריצות, ורק 100 ריצות נדרשות בקריטריון הרשמי.
+- **קרוב למטרה שלנו**. אנו מאוד קרובים להשיג את המטרה של 195 תגמולים מצטברים על פני 100+ הרצות רצופות של הסימולציה, ואולי אפילו השגנו זאת! אפילו אם נקבל מספרים נמוכים יותר, לא נדע בוודאות, כי אנו מחשבים ממוצע על פני 5000 הרצות, ובקריטריון הרשמי נדרשות רק 100 הרצות.
+
+- **התגמול מתחיל לרדת**. לפעמים התגמול מתחיל לרדת, מה שמצביע על כך שאולי "הורסים" ערכים שכבר נלמדו בטבלת Q עם אלו שמחמירים את המצב.
-- **התגמול מתחיל לרדת**. לפעמים התגמול מתחיל לרדת, מה שאומר שאנו יכולים "להרוס" ערכים שכבר נלמדו בטבלת Q עם כאלה שמחמירים את המצב.
+תופעה זו נראית בבהירות גדולה יותר אם נציג גרף של תהליך האימון.
-תצפית זו ברורה יותר אם נגרף את התקדמות האימון.
+## הצגת התקדמות האימון
-## גרפיקה של התקדמות האימון
-
-במהלך האימון, אספנו את ערך התגמול המצטבר בכל אחת מהאיטרציות לוקטור `rewards`. הנה איך זה נראה כשאנו מגרפים אותו מול מספר האיטרציות:
+במהלך האימון אספנו את ערך התגמול המצטבר בכל איטרציה לתוך מערך `rewards`. כך זה נראה כאשר מציגים את הגרף כפונקציה של מספר האיטרציה:
```python
plt.plot(rewards)
```
-
+
-מהגרף הזה, לא ניתן להסיק דבר, מכיוון שבשל טבעו של תהליך האימון הסטוכסטי, אורך הסשנים משתנה מאוד. כדי להבין יותר את הגרף הזה, נוכל לחשב את **הממוצע הרץ** לאורך סדרת ניסויים, נאמר 100. ניתן לעשות זאת בנוחות באמצעות `np.convolve`: (קוד בלוק 12)
+מהגרף הזה אי אפשר להסיק דבר, כי בשל אופיו הסטוכסטי של תהליך האימון, אורך סשני האימון משתנה במידה רבה. כדי להבין טוב יותר את הגרף, נחשב את ה**ממוצע הנע** על פני סדרה של ניסויים, נניח 100. זה נעשה בנוחות באמצעות `np.convolve`: (קוד בלוק 12)
```python
def running_average(x,window):
@@ -267,21 +287,24 @@ def running_average(x,window):
plt.plot(running_average(rewards,100))
```
-
+
+
+## שינוי היפר-פרמטרים
+
+כדי להפוך את הלמידה ליציבה יותר, כדאי להתאים חלק מההיפר-פרמטרים במהלך האימון. במיוחד:
+
+- **לקצב הלמידה**, `alpha`, כדאי להתחיל בערכים קרובים ל-1, ואז להמשיך ולהוריד את הפרמטר. עם הזמן, נקבל ערכי הסתברות טובים בטבלת Q, ולכן נרצה להתאים אותם במעט ולא להחליף לגמרי בערכים חדשים.
-## שינוי היפרפרמטרים
+- **להגדיל את אפסילון**. כדאי להגדיל את `epsilon` בהדרגה, כדי לחקור פחות ולהנצל יותר. כנראה הגיוני להתחיל בערך נמוך של `epsilon`, ולהגיע כמעט ל-1.
-כדי להפוך את הלמידה ליציבה יותר, הגיוני להתאים כמה מההיפרפרמטרים שלנו במהלך האימון. במיוחד:
+> **משימה 1**: שחק עם ערכי ההיפר-פרמטרים וראה אם אתה יכול להשיג תגמול מצטבר גבוה יותר. האם אתה מגיע מעל 195?
-- **עבור קצב הלמידה**, `alpha`, נוכל להתחיל עם ערכים קרובים ל-1, ואז להמשיך להקטין את הפרמטר. עם הזמן, נקבל ערכי הסתברות טובים בטבלת Q, ולכן עלינו להתאים אותם בעדינות, ולא להחליף לחלוטין בערכים חדשים.
-- **הגדלת epsilon**. ייתכן שנרצה להגדיל את `epsilon` בהדרגה, כדי לחקור פחות ולנצל יותר. כנראה הגיוני להתחיל עם ערך נמוך של `epsilon`, ולהתקדם כמעט עד 1.
-> **משימה 1**: נסו לשחק עם ערכי ההיפרפרמטרים ולבדוק אם אתם מצליחים להשיג תגמול מצטבר גבוה יותר. האם אתם מגיעים מעל 195?
-> **משימה 2**: כדי לפתור את הבעיה באופן פורמלי, עליכם להגיע ל-195 תגמול ממוצע לאורך 100 ריצות רצופות. מדדו זאת במהלך האימון וודאו שהבעיה נפתרה באופן פורמלי!
+> **משימה 2**: כדי לפתור את הבעיה באופן פורמלי, עליך לקבל ממוצע תגמולים של 195 לאורך 100 הרצות רצופות. מדוד זאת במהלך האימון וודא שפתרת את הבעיה באופן פורמלי!
## לראות את התוצאה בפעולה
-יהיה מעניין לראות כיצד המודל המאומן מתנהג בפועל. בואו נריץ את הסימולציה ונשתמש באותה אסטרטגיית בחירת פעולות כמו במהלך האימון, על ידי דגימה בהתאם להתפלגות ההסתברות ב-Q-Table: (בלוק קוד 13)
+יהיה מעניין לראות בפועל כיצד המודל המאומן מתנהג. בואו נפעיל את הסימולציה ונעקוב אחרי אסטרטגיית בחירת הפעולה כפי שבוצעה באימון, על ידי דגימה לפי התפלגות ההסתברות בטבלת Q: (בלוק קוד 13)
```python
obs = env.reset()
@@ -295,30 +318,32 @@ while not done:
env.close()
```
-אתם אמורים לראות משהו כזה:
+אמור לראות משהו כזה:
-
+
---
## 🚀אתגר
-> **משימה 3**: כאן השתמשנו בעותק הסופי של Q-Table, שייתכן שאינו הטוב ביותר. זכרו ששמרנו את ה-Q-Table עם הביצועים הטובים ביותר במשתנה `Qbest`! נסו את אותו הדוגמה עם ה-Q-Table הטוב ביותר על ידי העתקת `Qbest` ל-`Q` ובדקו אם אתם מבחינים בהבדל.
+> **משימה 3**: כאן השתמשנו בגירסה הסופית של טבלת Q, שייתכן ואינה הטובה ביותר. זכור ששמרנו את טבלת Q הביצועית הטובה ביותר במשתנה `Qbest`! נסה את אותו הדוגמה עם טבלת Q הטובה ביותר על ידי העתקת `Qbest` ל-`Q` וראה אם אתה מבחין בהבדל.
-> **משימה 4**: כאן לא בחרנו את הפעולה הטובה ביותר בכל שלב, אלא דגמנו לפי התפלגות ההסתברות המתאימה. האם יהיה הגיוני יותר תמיד לבחור את הפעולה הטובה ביותר, עם הערך הגבוה ביותר ב-Q-Table? ניתן לעשות זאת באמצעות פונקציית `np.argmax` כדי למצוא את מספר הפעולה המתאים לערך הגבוה ביותר ב-Q-Table. יישמו את האסטרטגיה הזו ובדקו אם היא משפרת את האיזון.
+> **משימה 4**: כאן לא בחרנו תמיד את הפעולה הטובה ביותר בכל שלב, אלא דגמנו על פי התפלגות ההסתברות המתאימה. האם הגיוני יותר לבחור תמיד את הפעולה הטובה ביותר, זו עם הערך הגבוה ביותר בטבלת Q? ניתן לעשות זאת על ידי שימוש בפונקציה `np.argmax` כדי למצוא את מספר הפעולה התואם לערך הגבוה ביותר בטבלת Q. יישם את האסטרטגיה הזו וראה אם זה משפר את האיזון.
-## [שאלון לאחר ההרצאה](https://ff-quizzes.netlify.app/en/ml/)
+## [חידון לאחר ההרצאה](https://ff-quizzes.netlify.app/en/ml/)
## משימה
-[אמן מכונית הרים](assignment.md)
+[אמן רכב הרים](assignment.md)
## סיכום
-למדנו כעת כיצד לאמן סוכנים להשיג תוצאות טובות רק על ידי מתן פונקציית תגמול שמגדירה את מצב המשחק הרצוי, ועל ידי מתן הזדמנות לחקור את מרחב החיפוש בצורה חכמה. יישמנו בהצלחה את אלגוריתם Q-Learning במקרים של סביבות דיסקרטיות ורציפות, אך עם פעולות דיסקרטיות.
+למדנו כעת כיצד לאמן סוכנים להשיג תוצאות טובות על ידי מתן פונקציית תגמולים המגדירה את מצב המשחק הרצוי, ועל ידי מתן הזדמנות לחקור בחוכמה את מרחב החיפוש. יישמנו בהצלחה את אלגוריתם Q-Learning במקרים של סביבות דיסקרטיות ורציפות, אך עם פעולות דיסקרטיות.
-חשוב גם ללמוד מצבים שבהם מצב הפעולה הוא רציף, וכאשר מרחב התצפית מורכב הרבה יותר, כמו התמונה ממסך משחק Atari. בבעיות אלו לעיתים קרובות נדרש להשתמש בטכניקות למידת מכונה חזקות יותר, כמו רשתות נוירונים, כדי להשיג תוצאות טובות. נושאים מתקדמים אלו הם הנושא של קורס הבינה המלאכותית המתקדם שלנו שיבוא בהמשך.
+חשוב גם ללמוד מצבים בהם מצב הפעולה הוא רציף, וכאשר מרחב התצפית מורכב יותר, כמו בתמונה ממסך המשחק אתרי. בבעיות כאלה לעיתים קרובות נדרש להשתמש בטכניקות למידת מכונה מתקדמות יותר, כגון רשתות עצביות, כדי להשיג תוצאות טובות. נושאים מתקדמים אלה הם נושא הקורס המתקדם שלנו בבינה מלאכותית שבדרך.
---
-**כתב ויתור**:
-מסמך זה תורגם באמצעות שירות תרגום מבוסס בינה מלאכותית [Co-op Translator](https://github.com/Azure/co-op-translator). למרות שאנו שואפים לדיוק, יש להיות מודעים לכך שתרגומים אוטומטיים עשויים להכיל שגיאות או אי דיוקים. המסמך המקורי בשפתו המקורית צריך להיחשב כמקור סמכותי. עבור מידע קריטי, מומלץ להשתמש בתרגום מקצועי על ידי אדם. איננו נושאים באחריות לאי הבנות או לפרשנויות שגויות הנובעות משימוש בתרגום זה.
\ No newline at end of file
+
+**כתב ויתור**:
+מסמך זה תורגם באמצעות שירות תרגום אוטומטי [Co-op Translator](https://github.com/Azure/co-op-translator). למרות שאנו שואפים לדיוק, יש לקחת בחשבון שתרגומים אוטומטיים עלולים להכיל שגיאות או אי-דיוקים. יש להחשיב את המסמך המקורי בשפתו הטבעית כמקור הסמכות. למידע קריטי מומלץ להשתמש בתרגום מקצועי על ידי מתרגם אדם. אנו לא אחראים לכל אי-הבנה או פירוש שגוי הנובע מהשימוש בתרגום זה.
+
\ No newline at end of file
diff --git a/translations/hi/.co-op-translator.json b/translations/hi/.co-op-translator.json
index 313a160d9..ff2278473 100644
--- a/translations/hi/.co-op-translator.json
+++ b/translations/hi/.co-op-translator.json
@@ -24,8 +24,8 @@
"language_code": "hi"
},
"1-Introduction/3-fairness/README.md": {
- "original_hash": "9a6b702d1437c0467e3c5c28d763dac2",
- "translation_date": "2025-09-05T10:22:56+00:00",
+ "original_hash": "0f00d72169a0d37eecfd16d71e01700a",
+ "translation_date": "2026-07-14T05:05:20+00:00",
"source_file": "1-Introduction/3-fairness/README.md",
"language_code": "hi"
},
@@ -54,8 +54,8 @@
"language_code": "hi"
},
"2-Regression/1-Tools/README.md": {
- "original_hash": "fa81d226c71d5af7a2cade31c1c92b88",
- "translation_date": "2025-09-05T10:15:47+00:00",
+ "original_hash": "0b8635427b582d03ea4ab7089b93e505",
+ "translation_date": "2026-07-14T05:00:51+00:00",
"source_file": "2-Regression/1-Tools/README.md",
"language_code": "hi"
},
@@ -72,8 +72,8 @@
"language_code": "hi"
},
"2-Regression/2-Data/README.md": {
- "original_hash": "7c077988328ebfe33b24d07945f16eca",
- "translation_date": "2025-09-05T10:16:34+00:00",
+ "original_hash": "a58b2c4d16c6b122643391745ac15af6",
+ "translation_date": "2026-07-14T05:02:04+00:00",
"source_file": "2-Regression/2-Data/README.md",
"language_code": "hi"
},
@@ -89,6 +89,12 @@
"source_file": "2-Regression/2-Data/solution/Julia/README.md",
"language_code": "hi"
},
+ "2-Regression/2-Data/solution/notebook.ipynb": {
+ "original_hash": "96b95f8cf473481f2f371de8156f1571",
+ "translation_date": "2026-07-14T04:38:28+00:00",
+ "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
+ "language_code": "hi"
+ },
"2-Regression/3-Linear/README.md": {
"original_hash": "8b776e731c35b171d316d01d0e7b1369",
"translation_date": "2026-04-26T20:43:13+00:00",
@@ -457,7 +463,7 @@
},
"8-Reinforcement/1-QLearning/README.md": {
"original_hash": "911efd5e595089000cb3c16fce1beab8",
- "translation_date": "2025-09-05T10:29:57+00:00",
+ "translation_date": "2026-07-14T05:03:20+00:00",
"source_file": "8-Reinforcement/1-QLearning/README.md",
"language_code": "hi"
},
@@ -481,7 +487,7 @@
},
"8-Reinforcement/2-Gym/README.md": {
"original_hash": "107d5bb29da8a562e7ae72262d251a75",
- "translation_date": "2025-09-05T10:30:41+00:00",
+ "translation_date": "2026-07-14T05:04:24+00:00",
"source_file": "8-Reinforcement/2-Gym/README.md",
"language_code": "hi"
},
@@ -581,6 +587,19 @@
"source_file": "TROUBLESHOOTING.md",
"language_code": "hi"
},
+ "__translation_failures__": {
+ "sketchnotes/LICENSE.md": {
+ "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f",
+ "source_file": "sketchnotes/LICENSE.md",
+ "language_code": "hi",
+ "failure_date": "2026-07-14T04:59:56+00:00",
+ "status": "failed",
+ "error_type": "TranslationIncompleteError",
+ "error_message": "Markdown translation remained incomplete for chunk 1.1.1 of 'LICENSE.md', and the chunk could not be split further.",
+ "translator_version": "0.20.0",
+ "failure_policy_version": 1
+ }
+ },
"docs/_sidebar.md": {
"original_hash": "68dd06c685f6ce840e0acfa313352e7c",
"translation_date": "2025-09-03T23:14:17+00:00",
diff --git a/translations/hi/1-Introduction/3-fairness/README.md b/translations/hi/1-Introduction/3-fairness/README.md
index faed8ad46..e9280fa3a 100644
--- a/translations/hi/1-Introduction/3-fairness/README.md
+++ b/translations/hi/1-Introduction/3-fairness/README.md
@@ -1,161 +1,167 @@
-# जिम्मेदार AI के साथ मशीन लर्निंग समाधान बनाना
-
-
-> स्केच नोट: [Tomomi Imura](https://www.twitter.com/girlie_mac)
-
-## [पाठ से पहले का क्विज़](https://ff-quizzes.netlify.app/en/ml/)
+# जिम्मेदार AI के साथ मशीन लर्निंग समाधानों का निर्माण
+
+
+> स्केचनोट द्वारा [Tomomi Imura](https://www.twitter.com/girlie_mac)
+## [प्री-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
+
## परिचय
-इस पाठ्यक्रम में, आप जानेंगे कि मशीन लर्निंग हमारे दैनिक जीवन को कैसे प्रभावित कर रही है। आज भी, सिस्टम और मॉडल स्वास्थ्य देखभाल निदान, ऋण स्वीकृति, या धोखाधड़ी का पता लगाने जैसे दैनिक निर्णय लेने के कार्यों में शामिल हैं। इसलिए यह महत्वपूर्ण है कि ये मॉडल भरोसेमंद परिणाम प्रदान करने के लिए अच्छी तरह से काम करें। जैसे किसी भी सॉफ़्टवेयर एप्लिकेशन में, AI सिस्टम भी अपेक्षाओं से चूक सकते हैं या अवांछनीय परिणाम दे सकते हैं। यही कारण है कि AI मॉडल के व्यवहार को समझना और समझाना आवश्यक है।
+इस पाठ्यक्रम में, आप खोज शुरू करेंगे कि मशीन लर्निंग हमारे दैनिक जीवन को कैसे प्रभावित कर रही है और कर सकती है। अभी भी, प्रणालियाँ और मॉडल रोज़मर्रा के निर्णय लेने के कार्यों में शामिल हैं, जैसे स्वास्थ्य देखभाल निदान, ऋण स्वीकृतियां या धोखाधड़ी का पता लगाना। इसलिए, यह महत्वपूर्ण है कि ये मॉडल विश्वसनीय परिणाम प्रदान करने के लिए अच्छी तरह से काम करें। किसी भी सॉफ़्टवेयर एप्लिकेशन की तरह, AI सिस्टम अपेक्षाओं पर खरे नहीं उतर सकते या अवांछित परिणामों का कारण बन सकते हैं। इसलिए, AI मॉडल के व्यवहार को समझना और समझाना आवश्यक है।
-कल्पना करें कि जब आप इन मॉडलों को बनाने के लिए उपयोग किए जा रहे डेटा में कुछ जनसांख्यिकी, जैसे जाति, लिंग, राजनीतिक दृष्टिकोण, धर्म, या असमान रूप से प्रतिनिधित्व करने वाले जनसांख्यिकी की कमी हो, तो क्या हो सकता है। अगर मॉडल का आउटपुट किसी विशेष जनसांख्यिकी को प्राथमिकता देता है, तो इसका एप्लिकेशन पर क्या प्रभाव पड़ेगा? इसके अलावा, जब मॉडल का परिणाम हानिकारक हो और लोगों को नुकसान पहुंचाए, तो क्या होगा? AI सिस्टम के व्यवहार के लिए कौन जिम्मेदार होगा? ये कुछ सवाल हैं जिनकी हम इस पाठ्यक्रम में जांच करेंगे।
+कल्पना कीजिए कि जब आप जिन डेटा का उपयोग इन मॉडलों के निर्माण के लिए कर रहे हैं, उनमें कुछ जनसांख्यिकी जैसे जाति, लिंग, राजनीतिक दृष्टिकोण, धर्म की कमी हो, या वे असंतुलित रूप से कुछ जनसांख्यिकीय समूहों का प्रतिनिधित्व करते हों। जब मॉडल का आउटपुट किसी जनसांख्यिकीय पक्षपात को प्रोत्साहित करता है तो क्या होता है? आवेदन के लिए इसका क्या परिणाम है? इसके अलावा, जब मॉडल का परिणाम प्रतिकूल होता है और लोगों के लिए हानिकारक होता है, तो क्या होता है? AI सिस्टम के व्यवहार के लिए कौन जिम्मेदार है? ये कुछ प्रश्न हैं जिनका हम इस पाठ्यक्रम में पता लगाएंगे।
इस पाठ में, आप:
-- मशीन लर्निंग में निष्पक्षता और इससे संबंधित हानियों के महत्व के बारे में जागरूकता बढ़ाएंगे।
-- असामान्य परिदृश्यों और बाहरी मूल्यों की जांच करने की प्रक्रिया से परिचित होंगे ताकि विश्वसनीयता और सुरक्षा सुनिश्चित की जा सके।
-- समावेशी सिस्टम डिज़ाइन करके सभी को सशक्त बनाने की आवश्यकता को समझेंगे।
-- डेटा और लोगों की गोपनीयता और सुरक्षा की रक्षा करने के महत्व का पता लगाएंगे।
-- AI मॉडल के व्यवहार को समझाने के लिए एक पारदर्शी दृष्टिकोण अपनाने के महत्व को देखेंगे।
-- यह समझेंगे कि AI सिस्टम में विश्वास बनाने के लिए जवाबदेही क्यों आवश्यक है।
+- मशीन लर्निंग में निष्पक्षता के महत्व और निष्पक्षता-संबंधी हानियों के बारे में जागरूकता बढ़ाएंगे।
+- विश्वसनीयता और सुरक्षा सुनिश्चित करने के लिए अपवादों और असामान्य परिदृश्यों की खोज के अभ्यास से परिचित होंगे।
+- समावेशी सिस्टम डिजाइन करके सभी को सशक्त बनाने की आवश्यकता को समझेंगे।
+- डेटा और लोगों की गोपनीयता और सुरक्षा की रक्षा के महत्व की जांच करेंगे।
+- AI मॉडलों के व्यवहार को समझाने के लिए ग्लास बॉक्स दृष्टिकोण की आवश्यकता को देखेंगे।
+- AI सिस्टमों में भरोसा बनाने के लिए जवाबदेही के महत्व के प्रति सावधान रहना सीखेंगे।
## पूर्वापेक्षा
-इस पाठ से पहले, कृपया "जिम्मेदार AI सिद्धांत" सीखने का पथ पूरा करें और नीचे दिए गए वीडियो को देखें:
+पूर्वापेक्षा के रूप में, कृपया "Responsible AI Principles" लर्न पाथ लें और नीचे दिए गए वीडियो को देखें:
-जिम्मेदार AI के बारे में अधिक जानने के लिए इस [लर्निंग पाथ](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) का अनुसरण करें।
+जिम्मेदार AI के बारे में अधिक जानने के लिए इस [लर्निंग पाथ](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) का अनुसरण करें
-[](https://youtu.be/dnC8-uUZXSc "Microsoft का जिम्मेदार AI के प्रति दृष्टिकोण")
+[](https://youtu.be/dnC8-uUZXSc "Microsoft का Responsible AI के प्रति दृष्टिकोण")
-> 🎥 ऊपर दी गई छवि पर क्लिक करें: Microsoft का जिम्मेदार AI के प्रति दृष्टिकोण
+> 🎥 ऊपर छवि पर क्लिक करें वीडियो के लिए: Microsoft का Responsible AI के प्रति दृष्टिकोण
## निष्पक्षता
-AI सिस्टम को सभी के साथ निष्पक्ष व्यवहार करना चाहिए और समान समूहों के लोगों को अलग-अलग तरीके से प्रभावित करने से बचना चाहिए। उदाहरण के लिए, जब AI सिस्टम चिकित्सा उपचार, ऋण आवेदन, या रोजगार पर मार्गदर्शन प्रदान करते हैं, तो उन्हें समान लक्षण, वित्तीय परिस्थितियों, या पेशेवर योग्यताओं वाले सभी लोगों को समान सिफारिशें देनी चाहिए। हम सभी मनुष्य अपनी निर्णय लेने की प्रक्रिया में अंतर्निहित पूर्वाग्रह रखते हैं। ये पूर्वाग्रह उस डेटा में भी दिखाई दे सकते हैं जिसका उपयोग हम AI सिस्टम को प्रशिक्षित करने के लिए करते हैं। कभी-कभी यह हेरफेर अनजाने में हो सकता है। यह जानबूझकर पहचानना कठिन हो सकता है कि आप डेटा में पूर्वाग्रह कब पेश कर रहे हैं।
+AI सिस्टम सभी के साथ निष्पक्ष व्यवहार करें और समान समूहों के लोगों के साथ भिन्न तरीकों से प्रभाव न डालें। उदाहरण के लिए, जब AI सिस्टम चिकित्सा उपचार, ऋण आवेदन या रोजगार पर मार्गदर्शन प्रदान करते हैं, तो वे समान लक्षण, वित्तीय परिस्थितियाँ या व्यावसायिक योग्यताओं वाले सभी को समान सिफारिशें करें। हममें से प्रत्येक मनुष्य विरासत में मिली पूर्वाग्रह लेकर चलता है, जो हमारे निर्णयों और कार्यों को प्रभावित करता है। ये पूर्वाग्रह उस डेटा में स्पष्ट हो सकते हैं जिसका हम AI सिस्टम के प्रशिक्षण के लिए उपयोग करते हैं। कभी-कभी ऐसा अनजाने में होता है। यह जानना अक्सर कठिन होता है कि आप डेटा में कब पूर्वाग्रह लाकर उसे प्रभावित कर रहे हैं।
-**"असमानता"** का मतलब है किसी समूह के लिए नकारात्मक प्रभाव या "हानियां", जैसे कि जाति, लिंग, आयु, या विकलांगता की स्थिति के संदर्भ में परिभाषित समूह। मुख्य निष्पक्षता-संबंधी हानियों को निम्नलिखित श्रेणियों में वर्गीकृत किया जा सकता है:
+**"अन्याय"** नकारात्मक प्रभावों या "हानियों" को दर्शाता है, जो किसी समूह के लिए हो सकती हैं, जैसे जाति, लिंग, उम्र या विकलांगता स्थिति के संदर्भ में परिभाषित। मुख्य निष्पक्षता-संबंधी हानियाँ निम्नलिखित प्रकार से वर्गीकृत की जा सकती हैं:
-- **आवंटन**: यदि किसी लिंग या जातीयता को दूसरे पर प्राथमिकता दी जाती है।
-- **सेवा की गुणवत्ता**: यदि आप डेटा को केवल एक विशिष्ट परिदृश्य के लिए प्रशिक्षित करते हैं, लेकिन वास्तविकता अधिक जटिल होती है, तो यह खराब प्रदर्शन वाली सेवा की ओर ले जाता है। उदाहरण के लिए, एक साबुन डिस्पेंसर जो गहरे रंग की त्वचा वाले लोगों को पहचानने में असमर्थ था। [संदर्भ](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
-- **अपमान**: किसी चीज़ या व्यक्ति की अनुचित आलोचना और लेबलिंग। उदाहरण के लिए, एक छवि लेबलिंग तकनीक ने काले रंग की त्वचा वाले लोगों की छवियों को गोरिल्ला के रूप में गलत लेबल किया।
-- **अधिक या कम प्रतिनिधित्व**: यह विचार कि एक निश्चित समूह को किसी पेशे में नहीं देखा जाता है, और कोई भी सेवा या कार्य जो इसे बढ़ावा देता है, वह नुकसान में योगदान देता है।
-- **रूढ़िबद्धता**: किसी दिए गए समूह को पूर्व-निर्धारित विशेषताओं के साथ जोड़ना। उदाहरण के लिए, अंग्रेजी और तुर्की के बीच एक भाषा अनुवाद प्रणाली में लिंग से संबंधित रूढ़ियों के कारण गलतियां हो सकती हैं।
+- **आवंटन**, यदि उदाहरण के लिए कोई लिंग या जातीयता दूसरे की तुलना में अधिक पसंद की जाए।
+- **सेवा की गुणवत्ता**। अगर आप किसी विशेष परिदृश्य के लिए डेटा का प्रशिक्षण करते हैं लेकिन वास्तविकता अधिक जटिल है, तो यह खराब प्रदर्शन वाली सेवा को जन्म देता है। उदाहरण के लिए, एक हाथ धोने का साबुन डिस्पेंसर जो गहरे रंग की त्वचा वाले लोगों को महसूस नहीं कर पाता। [संदर्भ](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
+- **अपमानजनक टिप्पणी**। किसी चीज़ या किसी के प्रति अन्यायपूर्ण आलोचना और लेबल लगाना। उदाहरण के लिए, एक इमेज लेबलिंग तकनीक ने कुख्यात रूप से गहरे रंग की त्वचा वाले लोगों की तस्वीरों को गोरिल्ला के रूप में गलत लेबल किया।
+- **अधिप्रतिनिधित्व या अतिप्रतिनिधित्व**। धारणा यह है कि किसी निश्चित समूह को किसी पेशे में नहीं देखा जाता, और कोई भी सेवा या फ़ंक्शन जो इसे बढ़ावा देता है वह हानि का योगदान देता है।
+- **स्टीरियोटाइपिंग**। किसी निर्दिष्ट समूह का पूर्व निर्धारित विशेषताओं के साथ जुड़ाव। उदाहरण के लिए, अंग्रेज़ी और तुर्की भाषा के बीच अनुवाद प्रणाली में ऐसे शब्दों के कारण गलतियां हो सकती हैं, जिनके लिंग से जुड़े पूर्वाग्रह होते हैं।
-
+
> तुर्की में अनुवाद
-
-> फिर से अंग्रेजी में अनुवाद
+
+> अंग्रेज़ी में वापस अनुवाद
-AI सिस्टम को डिज़ाइन और परीक्षण करते समय, हमें यह सुनिश्चित करना चाहिए कि AI निष्पक्ष हो और इसे पूर्वाग्रही या भेदभावपूर्ण निर्णय लेने के लिए प्रोग्राम न किया गया हो, जो मनुष्यों के लिए भी निषिद्ध हैं। AI और मशीन लर्निंग में निष्पक्षता सुनिश्चित करना एक जटिल सामाजिक-तकनीकी चुनौती बनी हुई है।
+AI सिस्टम डिजाइन और परीक्षण करते समय, हमें यह सुनिश्चित करना चाहिए कि AI निष्पक्ष हो और पक्षपातपूर्ण या भेदभावपूर्ण निर्णय लेने के लिए प्रोग्राम न किया गया हो, जो मनुष्यों को भी निषिद्ध है। AI और मशीन लर्निंग में निष्पक्षता को गारंटीकृत करना एक जटिल सामाजिक-तकनीकी चुनौती है।
### विश्वसनीयता और सुरक्षा
-विश्वास बनाने के लिए, AI सिस्टम को सामान्य और अप्रत्याशित परिस्थितियों में विश्वसनीय, सुरक्षित और सुसंगत होना चाहिए। यह जानना महत्वपूर्ण है कि AI सिस्टम विभिन्न परिस्थितियों में कैसा व्यवहार करेगा, विशेष रूप से जब वे असामान्य हों। AI समाधान बनाते समय, उन सभी संभावित परिस्थितियों को संभालने पर ध्यान केंद्रित करना आवश्यक है जिनका सामना AI समाधान कर सकता है। उदाहरण के लिए, एक स्वचालित कार को लोगों की सुरक्षा को सर्वोच्च प्राथमिकता देनी चाहिए। इसलिए, कार को चलाने वाले AI को सभी संभावित परिदृश्यों पर विचार करना चाहिए, जैसे रात, तूफान, बर्फ़ीला तूफ़ान, सड़क पर दौड़ते बच्चे, पालतू जानवर, सड़क निर्माण आदि। AI सिस्टम कितनी अच्छी तरह से विभिन्न परिस्थितियों को विश्वसनीय और सुरक्षित रूप से संभाल सकता है, यह डेटा वैज्ञानिक या AI डेवलपर द्वारा डिज़ाइन या परीक्षण के दौरान विचार किए गए पूर्वानुमान के स्तर को दर्शाता है।
+भरोसा बनाने के लिए, AI सिस्टम विश्वसनीय, सुरक्षित और सामान्य तथा अप्रत्याशित परिस्थितियों में स्थिर होने चाहिए। यह जानना महत्वपूर्ण है कि AI सिस्टम विभिन्न परिस्थितियों में कैसे व्यवहार करेंगे, विशेषकर जब वे अपवाद(आउटलेयर) हों। AI समाधान बनाते समय, विभिन्न प्रकार की परिस्थितियों का सामना करने के तरीके पर पर्याप्त ध्यान देना आवश्यक है। उदाहरण के लिए, स्वचालित चलने वाली कार को लोगों की सुरक्षा सर्वोच्च प्राथमिकता देनी चाहिए। इसलिए, उस कार को चलाने वाले AI को सभी संभावित परिदृश्यों पर विचार करना चाहिए, जैसे रात, तूफान या हिमपात, सड़क पार करते बच्चे, पालतू जानवर, सड़क निर्माण आदि। AI सिस्टम कितनी अच्छी तरह से इन विभिन्न परिस्थितियों को विश्वसनीय और सुरक्षित तरीके से हैंडल कर सकता है, यह इस बात पर निर्भर करता है कि डेटा वैज्ञानिक या AI डेवलपर ने डिजाइन या परीक्षण के दौरान कितनी अच्छी तरह से पूर्वानुमान लगाया।
-> [🎥 वीडियो के लिए यहां क्लिक करें: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
+> [🎥 वीडियो के लिए यहाँ क्लिक करें: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
-### समावेशिता
+### समावेशन
-AI सिस्टम को सभी को शामिल करने और सशक्त बनाने के लिए डिज़ाइन किया जाना चाहिए। AI सिस्टम को डिज़ाइन और लागू करते समय, डेटा वैज्ञानिक और AI डेवलपर सिस्टम में संभावित बाधाओं की पहचान करते हैं और उन्हें संबोधित करते हैं जो अनजाने में लोगों को बाहर कर सकती हैं। उदाहरण के लिए, दुनिया भर में 1 बिलियन लोग विकलांग हैं। AI की प्रगति के साथ, वे अपने दैनिक जीवन में अधिक आसानी से जानकारी और अवसरों तक पहुंच सकते हैं। बाधाओं को दूर करके, यह नवाचार के अवसर पैदा करता है और बेहतर अनुभवों के साथ AI उत्पादों को विकसित करता है जो सभी को लाभान्वित करते हैं।
+AI सिस्टम को इस तरह डिजाइन किया जाना चाहिए कि वे सभी को शामिल करें और सशक्त बनाएं। AI सिस्टम डिजाइन और क्रियान्वयन करते समय डेटा वैज्ञानिक और AI डेवलपर संभावित बाधाओं की पहचान कर उन्हें दूर करते हैं, जो अनजाने में लोगों को बाहर कर सकती हैं। उदाहरण के लिए, दुनिया भर में 1 अरब से अधिक लोग विकलांग हैं। AI के विकास के साथ, वे अपने दैनिक जीवन में आसानी से सूचना और अवसरों तक पहुंच सकते हैं। बाधाओं को दूर करके, बेहतर अनुभव के साथ AI उत्पाद विकसित करने और नवाचार के अवसर पैदा किए जा सकते हैं जो सभी के लिए लाभकारी हों।
-> [🎥 वीडियो के लिए यहां क्लिक करें: AI में समावेशिता](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
+> [🎥 AI में समावेशन के लिए यहाँ क्लिक करें वीडियो पर](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
### सुरक्षा और गोपनीयता
-AI सिस्टम को सुरक्षित होना चाहिए और लोगों की गोपनीयता का सम्मान करना चाहिए। लोग उन सिस्टमों पर कम विश्वास करते हैं जो उनकी गोपनीयता, जानकारी, या जीवन को जोखिम में डालते हैं। मशीन लर्निंग मॉडल को प्रशिक्षित करते समय, हम सर्वोत्तम परिणाम प्राप्त करने के लिए डेटा पर निर्भर करते हैं। ऐसा करते समय, डेटा की उत्पत्ति और अखंडता पर विचार करना आवश्यक है। उदाहरण के लिए, क्या डेटा उपयोगकर्ता द्वारा प्रस्तुत किया गया था या सार्वजनिक रूप से उपलब्ध था? इसके बाद, डेटा के साथ काम करते समय, यह महत्वपूर्ण है कि AI सिस्टम गोपनीय जानकारी की रक्षा कर सके और हमलों का विरोध कर सके। जैसे-जैसे AI अधिक प्रचलित होता जा रहा है, गोपनीयता की रक्षा करना और महत्वपूर्ण व्यक्तिगत और व्यावसायिक जानकारी को सुरक्षित रखना अधिक महत्वपूर्ण और जटिल होता जा रहा है। गोपनीयता और डेटा सुरक्षा के मुद्दों को AI के लिए विशेष रूप से ध्यान देने की आवश्यकता है क्योंकि डेटा तक पहुंच AI सिस्टम को लोगों के बारे में सटीक और सूचित भविष्यवाणियां और निर्णय लेने के लिए आवश्यक है।
+AI सिस्टम सुरक्षित होने चाहिए और लोगों की गोपनीयता का सम्मान करना चाहिए। लोग ऐसे सिस्टम पर कम भरोसा करते हैं जो उनकी गोपनीयता, जानकारी या जीवन को खतरे में डालते हैं। मशीन लर्निंग मॉडल को प्रशिक्षित करते समय, हम सर्वोत्तम परिणाम पाने के लिए डेटा पर निर्भर करते हैं। ऐसा करते समय, डेटा की उत्पत्ति और अखंडता पर विचार करना आवश्यक है। उदाहरण के लिए, क्या डेटा उपयोगकर्ता द्वारा प्रस्तुत किया गया था या सार्वजनिक रूप से उपलब्ध था? अगला, डेटा के साथ काम करते समय, ऐसे AI सिस्टम विकसित करना महत्वपूर्ण है जो गोपनीय जानकारी की रक्षा कर सके और हमलों का सामना कर सके। जैसे-जैसे AI अधिक प्रचलित हो रहा है, गोपनीयता की सुरक्षा और महत्वपूर्ण व्यक्तिगत और व्यावसायिक जानकारी की सुरक्षा अधिक महत्वपूर्ण और जटिल होती जा रही है। गोपनीयता और डेटा सुरक्षा के मुद्दे AI के लिए विशेष रूप से ध्यान देने योग्य हैं क्योंकि AI सिस्टमों को लोगों के बारे में सटीक और सूचित पूर्वानुमान और निर्णय लेने के लिए डेटा तक पहुंच आवश्यक है।
-> [🎥 वीडियो के लिए यहां क्लिक करें: AI में सुरक्षा](https://www.microsoft.com/videoplayer/embed/RE4voJF)
+> [🎥 AI में सुरक्षा के लिए यहाँ क्लिक करें वीडियो पर](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- उद्योग के रूप में हमने गोपनीयता और सुरक्षा में महत्वपूर्ण प्रगति की है, जो मुख्य रूप से GDPR (जनरल डेटा प्रोटेक्शन रेगुलेशन) जैसे नियमों द्वारा संचालित है।
-- फिर भी AI सिस्टम के साथ हमें यह स्वीकार करना होगा कि सिस्टम को अधिक व्यक्तिगत और प्रभावी बनाने के लिए अधिक व्यक्तिगत डेटा की आवश्यकता और गोपनीयता के बीच तनाव है।
-- जैसे इंटरनेट के साथ जुड़े कंप्यूटरों के जन्म के साथ, हम AI से संबंधित सुरक्षा मुद्दों की संख्या में भारी वृद्धि देख रहे हैं।
-- साथ ही, हमने सुरक्षा में सुधार के लिए AI का उपयोग होते देखा है। उदाहरण के लिए, अधिकांश आधुनिक एंटी-वायरस स्कैनर आज AI ह्यूरिस्टिक्स द्वारा संचालित हैं।
-- हमें यह सुनिश्चित करने की आवश्यकता है कि हमारे डेटा विज्ञान प्रक्रियाएं नवीनतम गोपनीयता और सुरक्षा प्रथाओं के साथ सामंजस्यपूर्ण रूप से मिश्रित हों।
+- एक उद्योग के रूप में, हमने GDPR (General Data Protection Regulation) जैसे नियमों के चलते गोपनीयता और सुरक्षा में उल्लेखनीय प्रगति की है।
+- फिर भी AI सिस्टमों के साथ हमें अधिक व्यक्तिगत डेटा की आवश्यकता और गोपनीयता के बीच टकराव को स्वीकार करना होगा।
+- ठीक वैसे ही जैसे इंटरनेट के साथ जुड़े कंप्यूटरों के जन्म के दौरान, AI से संबंधित सुरक्षा मुद्दों की संख्या में भी भारी वृद्धि देखी जा रही है।
+- साथ ही, हमने देखा है कि सुरक्षा सुधारने के लिए AI का उपयोग किया जा रहा है। उदाहरण के लिए, अधिकांश आधुनिक एंटी-वायरस स्कैनर आज AI ह्यूरिस्टिक्स द्वारा संचालित हैं।
+- हमें सुनिश्चित करना होगा कि हमारा डेटा साइंस प्रक्रियाएँ नवीनतम गोपनीयता और सुरक्षा प्रथाओं के साथ तालमेल में हों।
-### पारदर्शिता
-AI सिस्टम को समझने योग्य होना चाहिए। पारदर्शिता का एक महत्वपूर्ण हिस्सा AI सिस्टम और उनके घटकों के व्यवहार को समझाना है। AI सिस्टम की समझ में सुधार के लिए यह आवश्यक है कि हितधारक यह समझें कि वे कैसे और क्यों कार्य करते हैं ताकि वे संभावित प्रदर्शन मुद्दों, सुरक्षा और गोपनीयता चिंताओं, पूर्वाग्रहों, बहिष्करण प्रथाओं, या अनपेक्षित परिणामों की पहचान कर सकें। हम यह भी मानते हैं कि जो लोग AI सिस्टम का उपयोग करते हैं, उन्हें यह स्पष्ट और ईमानदारी से बताना चाहिए कि वे कब, क्यों, और कैसे उनका उपयोग करते हैं। साथ ही, उनके उपयोग की सीमाओं के बारे में भी जानकारी होनी चाहिए। उदाहरण के लिए, यदि कोई बैंक अपने उपभोक्ता ऋण निर्णयों का समर्थन करने के लिए AI सिस्टम का उपयोग करता है, तो यह महत्वपूर्ण है कि परिणामों की जांच की जाए और यह समझा जाए कि कौन सा डेटा सिस्टम की सिफारिशों को प्रभावित करता है। सरकारें उद्योगों में AI को विनियमित करना शुरू कर रही हैं, इसलिए डेटा वैज्ञानिकों और संगठनों को यह समझाना होगा कि AI सिस्टम नियामक आवश्यकताओं को पूरा करता है या नहीं, विशेष रूप से जब कोई अवांछनीय परिणाम होता है।
+### पारदर्शिता
+AI सिस्टम को समझने योग्य होना चाहिए। पारदर्शिता का एक महत्वपूर्ण हिस्सा AI सिस्टमों और उनके घटकों के व्यवहार की व्याख्या करना है। AI सिस्टमों की समझ में सुधार के लिए यह आवश्यक है कि हितधारक यह समझें कि वे कैसे और क्यों कार्य करते हैं ताकि वे संभावित प्रदर्शन समस्याओं, सुरक्षा और गोपनीयता चिंताओं, पूर्वाग्रह, बहिष्करण संबंधी प्रथाओं या अनपेक्षित परिणामों की पहचान कर सकें। हम यह भी मानते हैं कि जो लोग AI सिस्टमों का उपयोग करते हैं, उन्हें ईमानदार और स्पष्ट होना चाहिए कि वे कब, क्यों और कैसे इन्हें लागू करते हैं। साथ ही, जिन सिस्टमों का वे उपयोग करते हैं उनकी सीमाओं को समझाना भी आवश्यक है। उदाहरण के लिए, यदि कोई बैंक अपने उपभोक्ता ऋण निर्णयों का समर्थन करने के लिए AI सिस्टम का उपयोग करता है, तो परिणामों की जांच करना और यह समझना महत्वपूर्ण है कि कौन सा डेटा सिस्टम की सिफारिशों को प्रभावित करता है। सरकारें उद्योगों में AI को विनियमित करना शुरू कर रही हैं, इसलिए डेटा वैज्ञानिकों और संगठनों को यह समझाना होगा कि क्या कोई AI सिस्टम नियामक आवश्यकताओं को पूरा करता है, विशेष रूप से जब कोई अवांछित परिणाम होता है।
-> [🎥 वीडियो के लिए यहां क्लिक करें: AI में पारदर्शिता](https://www.microsoft.com/videoplayer/embed/RE4voJF)
+> [🎥 AI में पारदर्शिता के लिए यहाँ क्लिक करें वीडियो पर](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- क्योंकि AI सिस्टम इतने जटिल हैं, यह समझना कठिन है कि वे कैसे काम करते हैं और उनके परिणामों की व्याख्या कैसे करें।
-- इस समझ की कमी इन सिस्टमों के प्रबंधन, संचालन, और प्रलेखन को प्रभावित करती है।
-- यह समझ की कमी, विशेष रूप से, उन निर्णयों को प्रभावित करती है जो इन सिस्टमों द्वारा उत्पन्न परिणामों का उपयोग करके किए जाते हैं।
+- क्योंकि AI सिस्टम इतने जटिल हैं, यह समझना कठिन है कि वे कैसे काम करते हैं और परिणामों की व्याख्या कैसे करें।
+- इस समझ के अभाव का प्रभाव इन सिस्टमों के प्रबंधन, संचालन और प्रलेखन पर पड़ता है।
+- यह समझ के अभाव का सबसे महत्वपूर्ण प्रभाव उन निर्णयों पर पड़ता है जो इन सिस्टमों द्वारा उत्पन्न परिणामों के आधार पर लिए जाते हैं।
### जवाबदेही
+
+वे लोग जो AI सिस्टम डिजाइन और तैनात करते हैं, उन्हें अपने सिस्टम के संचालन के लिए जवाबदेह होना चाहिए। जवाबदेही की आवश्यकता विशेष रूप से संवेदनशील उपयोग जैसी तकनीकों के साथ महत्वपूर्ण होती है जैसे चेहरे की पहचान। हाल ही में, कानून प्रवर्तन संगठनों की ओर से चेहरे की पहचान तकनीक की मांग बढ़ रही है, जो इससे खोए हुए बच्चों को खोजने जैसे उपयोग देखते हैं। हालांकि, ये तकनीकें संभावित रूप से सरकार द्वारा अपने नागरिकों की मौलिक स्वतंत्रताओं को जोखिम में डालने के लिए उपयोग की जा सकती हैं, उदाहरण के लिए, विशिष्ट व्यक्तियों की निरंतर निगरानी सक्षम करके। इसलिए, डेटा वैज्ञानिकों और संगठनों को जिम्मेदार होना चाहिए कि उनका AI सिस्टम व्यक्तियों या समाज पर कैसे प्रभाव डालता है।
-जो लोग AI सिस्टम डिज़ाइन और तैनात करते हैं, उन्हें यह सुनिश्चित करना चाहिए कि उनके सिस्टम कैसे काम करते हैं, इसके लिए वे जवाबदेह हों। जवाबदेही की आवश्यकता विशेष रूप से संवेदनशील उपयोग प्रौद्योगिकियों जैसे चेहरे की पहचान के साथ महत्वपूर्ण है। हाल ही में, चेहरे की पहचान तकनीक की मांग बढ़ रही है, विशेष रूप से कानून प्रवर्तन संगठनों से जो इस तकनीक की क्षमता को लापता बच्चों को खोजने जैसे उपयोगों में देखते हैं। हालांकि, इन तकनीकों का उपयोग सरकार द्वारा नागरिकों की मौलिक स्वतंत्रताओं को खतरे में डालने के लिए किया जा सकता है, जैसे कि विशिष्ट व्यक्तियों की निरंतर निगरानी को सक्षम करना। इसलिए, डेटा वैज्ञानिकों और संगठनों को यह सुनिश्चित करना चाहिए कि उनके AI सिस्टम का प्रभाव व्यक्तियों या समाज पर जिम्मेदार हो।
+[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft का Responsible AI के प्रति दृष्टिकोण")
-[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft का जिम्मेदार AI के प्रति दृष्टिकोण")
+> 🎥 ऊपर छवि पर क्लिक करें वीडियो के लिए: चेहरे की पहचान के जरिए व्यापक निगरानी की चेतावनियाँ
-> 🎥 ऊपर दी गई छवि पर क्लिक करें: चेहरे की पहचान के माध्यम से बड़े पैमाने पर निगरानी की चेतावनी
+अंततः, हमारी पीढ़ी के लिए सबसे बड़ा सवाल यह है, जो AI को समाज में ला रही है, कि यह कैसे सुनिश्चित करें कि कंप्यूटर लोगों के प्रति जवाबदेह बने रहें और वे लोग जो कंप्यूटर डिजाइन करते हैं, वे सभी के प्रति जवाबदेह बने रहें।
-आखिरकार, हमारे युग के लिए सबसे बड़े सवालों में से एक यह है कि, AI को समाज में लाने वाली पहली पीढ़ी के रूप में, हम यह कैसे सुनिश्चित करेंगे कि कंप्यूटर लोगों के प्रति जवाबदेह बने रहें और यह सुनिश्चित करें कि कंप्यूटर डिज़ाइन करने वाले लोग बाकी सभी के प्रति जवाबदेह बने रहें।
+## प्रभाव आकलन
-## प्रभाव मूल्यांकन
+मशीन लर्निंग मॉडल प्रशिक्षित करने से पहले, यह महत्वपूर्ण है कि प्रभाव आकलन किया जाए ताकि AI सिस्टम के उद्देश्य, इसके उपयोग क्षेत्र, कहां लागू किया जाएगा और कौन इस सिस्टम के साथ बातचीत करेगा, ये समझा जा सके। समीक्षा करने वाले या परीक्षणकर्ता यह जान पाते हैं कि संभावित जोखिम और अपेक्षित परिणामों की पहचान करते समय किन पहलुओं पर ध्यान देना है।
-मशीन लर्निंग मॉडल को प्रशिक्षित करने से पहले, AI सिस्टम के उद्देश्य को समझने के लिए प्रभाव मूल्यांकन करना महत्वपूर्ण है; इसका इरादा उपयोग क्या है; इसे कहाँ तैनात किया जाएगा; और कौन सिस्टम के साथ इंटरैक्ट करेगा। ये समीक्षक या परीक्षक के लिए सहायक होते हैं ताकि वे संभावित जोखिमों और अपेक्षित परिणामों की पहचान करते समय किन कारकों पर विचार करें, यह जान सकें।
+प्रभाव आकलन करते समय निम्न क्षेत्र ध्यान केंद्रित किए जाते हैं:
-प्रभाव मूल्यांकन करते समय ध्यान केंद्रित करने के क्षेत्र निम्नलिखित हैं:
+* **व्यक्तियों पर प्रतिकूल प्रभाव**। किसी भी प्रतिबंध, आवश्यकताओं, अनुचित उपयोग या ज्ञात सीमाओं के प्रति जागरूक रहना आवश्यक है ताकि यह सुनिश्चित किया जा सके कि सिस्टम का उपयोग ऐसे तरीके से न हो जो व्यक्तियों को हानि पहुंचाए।
+* **डेटा आवश्यकताएँ**। यह समझना कि सिस्टम डेटा का उपयोग कैसे और कहां करेगा, समीक्षकों को डेटा आवश्यकताओं (जैसे, GDPR या HIPAA डेटा नियम) के प्रति जागरूक होने में सक्षम बनाता है। इसके अलावा, जांचें कि प्रशिक्षण के लिए स्रोत या डेटा की मात्रा पर्याप्त है या नहीं।
+* **प्रभाव का सारांश**। सिस्टम के उपयोग से उत्पन्न होने वाली संभावित हानियों की सूची एकत्र करें। ML जीवनचक्र के दौरान, जाँचे कि पहचानी गई समस्याएँ कम या सुलझाई गई हैं या नहीं।
+* छह प्रमुख सिद्धांतों में से प्रत्येक के लिए **लागू उद्देश्यों**। यह आकलन करें कि सिद्धांतों के लक्ष्य पूरे होते हैं या कोई अंतराल है।
-* **व्यक्तियों पर प्रतिकूल प्रभाव**: किसी भी प्रतिबंध या आवश्यकताओं, असमर्थित उपयोग, या किसी भी ज्ञात सीमाओं के बारे में जागरूक होना जो सिस्टम के प्रदर्शन को बाधित कर सकती हैं, यह सुनिश्चित करने के लिए महत्वपूर्ण है कि सिस्टम का उपयोग इस तरह से न हो जो व्यक्तियों को नुकसान पहुंचा सके।
-* **डेटा आवश्यकताएं**: यह समझना कि सिस्टम डेटा का उपयोग कैसे और कहाँ करेगा, समीक्षकों को उन डेटा आवश्यकताओं का पता लगाने में सक्षम बनाता है जिनका आपको ध्यान रखना चाहिए (जैसे, GDPR या HIPPA डेटा नियम)। इसके अलावा, यह जांचें कि क्या डेटा का स्रोत या मात्रा प्रशिक्षण के लिए पर्याप्त है।
-* **प्रभाव का सारांश**: संभावित हानियों की एक सूची एकत्र करें जो सिस्टम का उपयोग करने से उत्पन्न हो सकती हैं। ML जीवनचक्र के दौरान, यह समीक्षा करें कि पहचानी गई समस्याओं को कम किया गया है या संबोधित किया गया है।
-* **प्रत्येक छह मुख्य सिद्धांतों के लिए लागू लक्ष्य**: मूल्यांकन करें कि क्या प्रत्येक सिद्धांत के लक्ष्यों को पूरा किया गया है और क्या कोई अंतराल है।
## जिम्मेदार AI के साथ डिबगिंग
-जैसे सॉफ़्टवेयर एप्लिकेशन को डिबग करना आवश्यक है, वैसे ही AI सिस्टम को डिबग करना भी आवश्यक है ताकि सिस्टम में समस्याओं की पहचान की जा सके और उन्हें हल किया जा सके। कई कारक हैं जो एक मॉडल को अपेक्षित या जिम्मेदार तरीके से प्रदर्शन करने से रोक सकते हैं। अधिकांश पारंपरिक मॉडल प्रदर्शन मेट्रिक्स मॉडल के प्रदर्शन के मात्रात्मक समुच्चय होते हैं, जो यह विश्लेषण करने के लिए पर्याप्त नहीं हैं कि मॉडल जिम्मेदार AI सिद्धांतों का उल्लंघन कैसे करता है। इसके अलावा, मशीन लर्निंग मॉडल एक ब्लैक बॉक्स है जो यह समझना कठिन बनाता है कि इसके परिणामों को क्या प्रेरित करता है या जब यह गलती करता है तो स्पष्टीकरण प्रदान करता है। इस पाठ्यक्रम में बाद में, हम जिम्मेदार AI डैशबोर्ड का उपयोग करना सीखेंगे ताकि AI सिस्टम को डिबग करने में मदद मिल सके। डैशबोर्ड डेटा वैज्ञानिकों और AI डेवलपर्स के लिए एक समग्र उपकरण प्रदान करता है ताकि वे निम्नलिखित कार्य कर सकें:
+किसी सॉफ़्टवेयर एप्लिकेशन की तरह ही, AI सिस्टम की डिबगिंग आवश्यक प्रक्रिया है जो सिस्टम की समस्याओं की पहचान और समाधान करती है। कई ऐसे कारक होते हैं जो एक मॉडल को अपेक्षित या जिम्मेदार तरीके से प्रदर्शन न करने पर प्रभाव डालते हैं। अधिकांश पारंपरिक मॉडल प्रदर्शन मीट्रिक्स मॉडल के प्रदर्शन के मात्रात्मक सारांश हैं, जो यह विश्लेषण करने के लिए पर्याप्त नहीं हैं कि मॉडल जिम्मेदार AI सिद्धांतों का उल्लंघन कैसे करता है। इसके अलावा, एक मशीन लर्निंग मॉडल एक ब्लैक बॉक्स होता है जिससे यह समझना मुश्किल हो जाता है कि उसके परिणाम को क्या प्रेरित करता है या जब वह गलती करता है तो उसकी व्याख्या देना कठिन होता है। इस कोर्स के आगे के भाग में, हम जिम्मेदार AI डैशबोर्ड का उपयोग करना सीखेंगे जो AI सिस्टम डिबग करने में मदद करता है। यह डैशबोर्ड डेटा वैज्ञानिकों और AI डेवलपर्स के लिए एक समग्र उपकरण प्रदान करता है:
-* **त्रुटि विश्लेषण**: मॉडल की त्रुटि वितरण की पहचान करने के लिए जो सिस्टम की निष्पक्षता या विश्वसनीयता को प्रभावित कर सकता है।
-* **मॉडल अवलोकन**: यह पता लगाने के लिए कि डेटा समूहों में मॉडल के प्रदर्शन में असमानताएं कहाँ हैं।
-* **डेटा विश्लेषण**: डेटा वितरण को समझने और डेटा में किसी भी संभावित पूर्वाग्रह की पहचान करने के लिए जो निष्पक्षता, समावेशिता, और विश्वसनीयता के मुद्दों को जन्म दे सकता है।
-* **मॉडल व्याख्या**: यह समझने के लिए कि मॉडल की भविष्यवाणियों को क्या प्रभावित करता है। यह मॉडल के व्यवहार को समझाने में मदद करता है, जो पारदर्शिता और जवाबदेही के लिए महत्वपूर्ण है।
+* **त्रुटि विश्लेषण**। मॉडल की त्रुटियों का वितरण पहचानने के लिए जो सिस्टम की निष्पक्षता या विश्वसनीयता प्रभावित कर सकते हैं।
+* **मॉडल अवलोकन**। यह जानने के लिए कि डेटा समूहों के प्रदर्शन में कहाँ असमानताएं हैं।
+* **डेटा विश्लेषण**। डेटा वितरण को समझने और ऐसे संभावित पूर्वाग्रह की पहचान करने के लिए जो निष्पक्षता, समावेशन और विश्वसनीयता से संबंधित समस्याएँ पैदा कर सकता है।
+* **मॉडल व्याख्यात्मकता**। यह समझने के लिए कि मॉडल के पूर्वानुमानों को क्या प्रभावित करता है। यह मॉडल के व्यवहार को समझाने में मदद करता है, जो पारदर्शिता और जवाबदेही के लिए महत्वपूर्ण है।
-## 🚀 चुनौती
-हानियों को पहली जगह में पेश होने से रोकने के लिए, हमें:
+## 🚀 चुनौती
+
+हानियों को शुरू में ही रोकने के लिए, हमें:
-- सिस्टम पर काम करने वाले लोगों में पृष्ठभूमि और दृष्टिकोण की विविधता होनी चाहिए।
-- ऐसे डेटासेट में निवेश करना चाहिए जो हमारे समाज की विविधता को दर्शाते हों।
-- मशीन लर्निंग जीवनचक्र के दौरान जिम्मेदार AI का पता लगाने और सुधारने के लिए बेहतर तरीकों का विकास करना चाहिए।
+- सिस्टम पर काम करने वाले लोगों के बीच पृष्ठभूमि और दृष्टिकोण में विविधता होनी चाहिए।
+- ऐसे डेटासेट्स में निवेश करें जो हमारे समाज की विविधता को दर्शाते हों।
+- मशीन लर्निंग जीवनचक्र के दौरान जिम्मेदार AI के किसी भी उल्लंघन का पता लगाने और सुधारने के लिए बेहतर विधियाँ विकसित करें।
-उन वास्तविक जीवन परिदृश्यों के बारे में सोचें जहां मॉडल की अविश्वसनीयता मॉडल-निर्माण और उपयोग में स्पष्ट है। हमें और क्या विचार करना चाहिए?
+वास्तविक जीवन के परिदृश्यों के बारे में सोचें जहाँ मॉडल की अविश्वसनीयता मॉडल निर्माण और उपयोग में स्पष्ट हो। हमें और क्या विचार करना चाहिए?
-## [पाठ के बाद का क्विज़](https://ff-quizzes.netlify.app/en/ml/)
+## [पोस्ट-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
-## समीक्षा और स्व-अध्ययन
+## पुनरावलोकन और स्व-अध्ययन
+
-इस पाठ में, आपने मशीन लर्निंग में निष्पक्षता और असमानता की अवधारणाओं की कुछ मूल बातें सीखी हैं।
-इस कार्यशाला को देखें ताकि विषयों को गहराई से समझा जा सके:
+इस पाठ में, आपने मशीन लर्निंग में निष्पक्षता और अन्याय के कुछ मूलभूत सिद्धांतों के बारे में सीखा है।
+
+इन विषयों में गहराई से जाने के लिए इस कार्यशाला को देखें:
-- जिम्मेदार AI की खोज में: सिद्धांतों को व्यवहार में लाने पर Besmira Nushi, Mehrnoosh Sameki और Amit Sharma द्वारा प्रस्तुति
+- जिम्मेदार एआई के प्रयास में: सिद्धांतों को अभ्यास में लाना, लेखक: बेस्मिरा नूशी, मेहरनूश सामेकी और अमित शर्मा
-[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: जिम्मेदार AI बनाने के लिए एक ओपन-सोर्स फ्रेमवर्क")
+[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI")
-> 🎥 ऊपर दी गई छवि पर क्लिक करें वीडियो के लिए: RAI Toolbox: जिम्मेदार AI बनाने के लिए एक ओपन-सोर्स फ्रेमवर्क, Besmira Nushi, Mehrnoosh Sameki और Amit Sharma द्वारा
+> 🎥 वीडियो के लिए ऊपर दिए गए चित्र पर क्लिक करें: RAI Toolbox: बेस्मिरा नूशी, मेहरनूश सामेकी, और अमित शर्मा द्वारा जिम्मेदार एआई के लिए एक ओपन-सोर्स फ्रेमवर्क
-साथ ही पढ़ें:
+साथ ही, पढ़ें:
-- Microsoft का RAI संसाधन केंद्र: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
+- माइक्रोसॉफ्ट का 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/)
+- माइक्रोसॉफ्ट का FATE अनुसंधान समूह: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
-RAI Toolbox:
+RAI टूलबॉक्स:
-- [Responsible AI Toolbox GitHub रिपॉजिटरी](https://github.com/microsoft/responsible-ai-toolbox)
+- [Responsible AI Toolbox GitHub repository](https://github.com/microsoft/responsible-ai-toolbox)
-Azure Machine Learning के उपकरणों के बारे में पढ़ें जो निष्पक्षता सुनिश्चित करते हैं:
+निष्पक्षता सुनिश्चित करने के लिए Azure Machine Learning के उपकरणों के बारे में पढ़ें:
-- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
+- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
## असाइनमेंट
-[RAI Toolbox का अन्वेषण करें](assignment.md)
+[RAI टूलबॉक्स खोजें](assignment.md)
---
-**अस्वीकरण**:
-यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को आधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।
\ No newline at end of file
+
+**अस्वीकरण**:
+इस दस्तावेज़ का अनुवाद AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या अशुद्धियाँ हो सकती हैं। मूल दस्तावेज़ अपनी मूल भाषा में ही प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।
+
\ No newline at end of file
diff --git a/translations/hi/2-Regression/1-Tools/README.md b/translations/hi/2-Regression/1-Tools/README.md
index f4e043828..afd79bbb6 100644
--- a/translations/hi/2-Regression/1-Tools/README.md
+++ b/translations/hi/2-Regression/1-Tools/README.md
@@ -1,8 +1,8 @@
-# Python और Scikit-learn के साथ रिग्रेशन मॉडल्स शुरू करें
+# रिग्रेशन मॉडल्स के लिए पाइथन और साइकीट-लर्न के साथ शुरुआत करें
-
+
-> स्केच नोट [Tomomi Imura](https://www.twitter.com/girlie_mac) द्वारा
+> स्केचनोट द्वारा [तोमौमी इमूरा](https://www.twitter.com/girlie_mac)
## [प्री-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
@@ -10,111 +10,112 @@
## परिचय
-इन चार पाठों में, आप सीखेंगे कि रिग्रेशन मॉडल्स कैसे बनाए जाते हैं। हम जल्द ही चर्चा करेंगे कि इनका उपयोग किस लिए किया जाता है। लेकिन कुछ भी शुरू करने से पहले, सुनिश्चित करें कि आपके पास सही उपकरण हैं ताकि आप प्रक्रिया शुरू कर सकें!
+इन चार पाठों में, आप सीखेंगे कि रिग्रेशन मॉडल कैसे बनाएं। हम थोड़ी देर में चर्चा करेंगे कि ये क्या हैं। लेकिन इससे पहले कि आप कुछ भी करें, सुनिश्चित करें कि आपके पास प्रक्रिया शुरू करने के लिए सही उपकरण हैं!
-इस पाठ में, आप सीखेंगे:
+इस पाठ में, आप सीखेंगे कि कैसे:
-- अपने कंप्यूटर को स्थानीय मशीन लर्निंग कार्यों के लिए कॉन्फ़िगर करना।
-- Jupyter नोटबुक्स के साथ काम करना।
-- Scikit-learn का उपयोग करना, जिसमें इंस्टॉलेशन शामिल है।
-- एक हैंड्स-ऑन अभ्यास के साथ लीनियर रिग्रेशन का अन्वेषण करना।
+- अपने कंप्यूटर को स्थानीय मशीन लर्निंग कार्यों के लिए कॉन्फ़िगर करें।
+- जुपिटर नोटबुक्स के साथ काम करें।
+- साइकीट-लर्न का उपयोग करें, इंस्टॉलेशन सहित।
+- एक हैंड्स-ऑन अभ्यास के साथ लीनियर रिग्रेशन का अन्वेषण करें।
## इंस्टॉलेशन और कॉन्फ़िगरेशन
-[](https://youtu.be/-DfeD2k2Kj0 "मशीन लर्निंग के लिए शुरुआती - अपने उपकरण सेटअप करें")
+[](https://youtu.be/-DfeD2k2Kj0 "शुरुआती के लिए एमएल - मशीन लर्निंग मॉडल बनाने के लिए अपने उपकरण तैयार करें")
-> 🎥 ऊपर दी गई छवि पर क्लिक करें ताकि आप अपने कंप्यूटर को मशीन लर्निंग के लिए कॉन्फ़िगर करने की प्रक्रिया देख सकें।
+> 🎥 ऊपर दिए गए चित्र पर क्लिक करें एक लघु वीडियो के लिए, जो आपके कंप्यूटर को एमएल के लिए कॉन्फ़िगर करने की प्रक्रिया दिखाता है।
-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) भी उपलब्ध हैं।
+1. **पायथन इंस्टॉल करें**। सुनिश्चित करें कि [पायथन](https://www.python.org/downloads/) आपके कंप्यूटर पर इंस्टॉल है। आप कई डेटा साइंस और मशीन लर्निंग कार्यों के लिए पायथन का उपयोग करेंगे। अधिकांश कंप्यूटर सिस्टम में पहले से पायथन इंस्टॉल होता है। कुछ उपयोगकर्ताओं के लिए सेटअप को आसान बनाने के लिए उपयोगी [पायथन कोडिंग पैक्स](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) भी उपलब्ध हैं।
- हालांकि, Python के कुछ उपयोगों के लिए सॉफ़्टवेयर का एक संस्करण आवश्यक होता है, जबकि अन्य के लिए अलग संस्करण। इस कारण से, [वर्चुअल एनवायरनमेंट](https://docs.python.org/3/library/venv.html) में काम करना उपयोगी होता है।
+ पायथन के कुछ उपयोग एक सॉफ्टवेयर संस्करण की मांग करते हैं, जबकि दूसरे उपयोग किसी भिन्न संस्करण की। इसलिए, एक [वर्चुअल एन्वायरनमेंट](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) के बारे में जानकारी प्राप्त कर सकते हैं।
+2. **विज़ुअल स्टूडियो कोड इंस्टॉल करें**। सुनिश्चित करें कि आपके कंप्यूटर पर विज़ुअल स्टूडियो कोड इंस्टॉल है। बुनियादी इंस्टॉलेशन के लिए इन निर्देशों का पालन करें [विज़ुअल स्टूडियो कोड इंस्टॉल करें](https://code.visualstudio.com/)। इस पाठ्यक्रम में आप विज़ुअल स्टूडियो कोड में पायथन का उपयोग करेंगे, इसलिए आप सीख सकते हैं कि कैसे [विज़ुअल स्टूडियो कोड को पायथन विकास के लिए कॉन्फ़िगर करें](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://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)
>
- > [](https://youtu.be/yyQM70vi7V8 "Python को Visual Studio Code के साथ सेटअप करें")
+ > [](https://youtu.be/yyQM70vi7V8 "विज़ुअल स्टूडियो कोड के साथ पायथन सेटअप करें")
>
- > 🎥 ऊपर दी गई छवि पर क्लिक करें ताकि आप Python को VS Code में उपयोग करने की प्रक्रिया देख सकें।
+ > 🎥 ऊपर दिए गए चित्र पर क्लिक करें एक वीडियो के लिए: VS कोड में पायथन का उपयोग करना।
-3. **Scikit-learn इंस्टॉल करें**, [इन निर्देशों](https://scikit-learn.org/stable/install.html) का पालन करके। चूंकि आपको Python 3 का उपयोग सुनिश्चित करना है, इसलिए वर्चुअल एनवायरनमेंट का उपयोग करने की सिफारिश की जाती है। ध्यान दें, यदि आप इस लाइब्रेरी को M1 Mac पर इंस्टॉल कर रहे हैं, तो ऊपर दिए गए पृष्ठ पर विशेष निर्देश हैं।
+3. **साइकीट-लर्न इंस्टॉल करें**, इन [निर्देशों](https://scikit-learn.org/stable/install.html) का पालन करते हुए। चूंकि आपको पायथन 3 का उपयोग सुनिश्चित करना है, इसलिए वर्चुअल एन्वायरनमेंट का उपयोग करने की सलाह दी जाती है। ध्यान दें, अगर आप इसे M1 Mac पर इंस्टॉल कर रहे हैं, तो ऊपर दिए लिंक पर विशेष निर्देश हैं।
-4. **Jupyter Notebook इंस्टॉल करें**। आपको [Jupyter पैकेज](https://pypi.org/project/jupyter/) इंस्टॉल करना होगा।
+1. **जुपिटर नोटबुक इंस्टॉल करें**। आपको [जुपिटर पैकेज इंस्टॉल करना](https://pypi.org/project/jupyter/) होगा।
-## आपका मशीन लर्निंग लेखन वातावरण
+## आपका एमएल लेखन वातावरण
-आप **नोटबुक्स** का उपयोग करके Python कोड विकसित करेंगे और मशीन लर्निंग मॉडल बनाएंगे। यह प्रकार की फाइल डेटा वैज्ञानिकों के लिए एक सामान्य उपकरण है, और इन्हें उनके `.ipynb` एक्सटेंशन से पहचाना जा सकता है।
+आप **नोटबुक्स** का उपयोग करेंगे अपने पायथन कोड का विकास करने और मशीन लर्निंग मॉडल बनाने के लिए। इस प्रकार की फाइल डेटा वैज्ञानिकों के लिए एक सामान्य उपकरण है, और इन्हें उनकी प्रत्यय या एक्सटेंशन `.ipynb` से पहचाना जा सकता है।
-नोटबुक्स एक इंटरैक्टिव वातावरण हैं जो डेवलपर को कोड लिखने और उसके आसपास नोट्स और दस्तावेज़ जोड़ने की अनुमति देते हैं, जो शोध-उन्मुख परियोजनाओं के लिए काफी उपयोगी है।
+नोटबुक्स एक इंटरैक्टिव वातावरण हैं जो डेवलपर को कोड लिखने के साथ ही उसके आसपास नोट्स और दस्तावेज़ भी जोड़ने की अनुमति देते हैं, जो प्रयोगात्मक या शोध-उन्मुख परियोजनाओं के लिए बहुत सहायक होता है।
-[](https://youtu.be/7E-jC8FLA2E "मशीन लर्निंग के लिए शुरुआती - Jupyter नोटबुक्स सेटअप करें")
+[](https://youtu.be/7E-jC8FLA2E "शुरुआती के लिए एमएल - रिग्रेशन मॉडल बनाने के लिए जुपिटर नोटबुक सेटअप करें")
-> 🎥 ऊपर दी गई छवि पर क्लिक करें ताकि आप इस अभ्यास की प्रक्रिया देख सकें।
+> 🎥 ऊपर दिए गए चित्र पर क्लिक करें इस अभ्यास के माध्यम से एक लघु वीडियो के लिए।
-### अभ्यास - नोटबुक के साथ काम करें
+### अभ्यास - एक नोटबुक के साथ काम करें
-इस फ़ोल्डर में, आपको _notebook.ipynb_ नामक फाइल मिलेगी।
+इस फ़ोल्डर में, आपको फाइल _notebook.ipynb_ मिलेगी।
-1. _notebook.ipynb_ को Visual Studio Code में खोलें।
+1. विज़ुअल स्टूडियो कोड में _notebook.ipynb_ खोलें।
- एक Jupyter सर्वर Python 3+ के साथ शुरू होगा। आप नोटबुक के उन क्षेत्रों को पाएंगे जिन्हें `run` किया जा सकता है, यानी कोड के टुकड़े। आप कोड ब्लॉक को चलाने के लिए उस आइकन का चयन कर सकते हैं जो प्ले बटन जैसा दिखता है।
+ एक जुपिटर सर्वर पायथन 3+ के साथ शुरू हो जाएगा। आपको नोटबुक के ऐसे भाग मिलेंगे जिन्हें `run` किया जा सकता है, कोड के टुकड़े। आप किसी कोड ब्लॉक को चलाने के लिए उस आइकन का चयन कर सकते हैं जो प्ले बटन जैसा दिखता है।
-2. `md` आइकन का चयन करें और थोड़ा मार्कडाउन जोड़ें, और निम्नलिखित टेक्स्ट लिखें **# Welcome to your notebook**।
+1. `md` आइकन चुनें और थोड़ा मार्कडाउन जोड़ें, साथ ही निम्नलिखित टेक्स्ट **# Welcome to your notebook**।
- इसके बाद, कुछ Python कोड जोड़ें।
+ इसके बाद कुछ पायथन कोड जोड़ें।
-3. कोड ब्लॉक में **print('hello notebook')** टाइप करें।
-4. कोड चलाने के लिए तीर का चयन करें।
+1. कोड ब्लॉक में टाइप करें **print('hello notebook')**।
+1. कोड चलाने के लिए ऊपर तीर दबाएं।
- आपको प्रिंट किया गया कथन दिखाई देना चाहिए:
+ आपको मुद्रित कथन दिखाई देना चाहिए:
```output
hello notebook
```
-
+
-आप अपने कोड के साथ टिप्पणियां जोड़ सकते हैं ताकि नोटबुक को स्वयं दस्तावेज़ित किया जा सके।
+आप अपने कोड के बीच टिप्पणियां (comments) जोड़ सकते हैं ताकि नोटबुक स्वयं दस्तावेज़ हो जाए।
-✅ एक मिनट के लिए सोचें कि एक वेब डेवलपर का कार्य वातावरण डेटा वैज्ञानिक के कार्य वातावरण से कितना अलग है।
+✅ एक मिनट सोचिए, एक वेब डेवलपर का कार्य वातावरण डेटा वैज्ञानिक के कार्य वातावरण से कितना भिन्न होता है।
-## Scikit-learn के साथ शुरुआत
+## साइकीट-लर्न के साथ शुरुआत और चलाना
-अब जब Python आपके स्थानीय वातावरण में सेटअप हो गया है, और आप Jupyter नोटबुक्स के साथ सहज हैं, तो आइए Scikit-learn के साथ भी उतना ही सहज हो जाएं। (इसे `sci` के रूप में उच्चारित करें, जैसे `science`)। Scikit-learn आपको मशीन लर्निंग कार्यों को करने में मदद करने के लिए एक [विस्तृत API](https://scikit-learn.org/stable/modules/classes.html#api-ref) प्रदान करता है।
+अब जब पाइथन आपके लोकल वातावरण में सेटअप हो चुका है, और आप जुपिटर नोटबुक्स के साथ आरामदायक हैं, आइए साइकीट-लर्न (उच्चारण: `sci` जैसा `science`) के साथ भी सहज हो जाएं। साइकीट-लर्न एक [विस्तृत API](https://scikit-learn.org/stable/modules/classes.html#api-ref) प्रदान करता है जो आपको एमएल कार्य करने में मदद करता है।
-उनकी [वेबसाइट](https://scikit-learn.org/stable/getting_started.html) के अनुसार, "Scikit-learn एक ओपन सोर्स मशीन लर्निंग लाइब्रेरी है जो सुपरवाइज्ड और अनसुपरवाइज्ड लर्निंग का समर्थन करती है। यह मॉडल फिटिंग, डेटा प्रीप्रोसेसिंग, मॉडल चयन और मूल्यांकन, और कई अन्य उपयोगिताओं के लिए विभिन्न उपकरण भी प्रदान करती है।"
+उनकी [वेबसाइट](https://scikit-learn.org/stable/getting_started.html) के अनुसार, "साइकीट-लर्न एक ओपन सोर्स मशीन लर्निंग लाइब्रेरी है जो सुपरवाइज्ड और अनसुपरवाइज्ड लर्निंग का समर्थन करती है। यह मॉडल फिटिंग, डेटा प्रीप्रोसेसिंग, मॉडल चयन और मूल्यांकन, और कई अन्य उपयोगिताओं के लिए विभिन्न टूल भी प्रदान करता है।"
-इस पाठ्यक्रम में, आप Scikit-learn और अन्य उपकरणों का उपयोग करके मशीन लर्निंग मॉडल बनाएंगे ताकि 'पारंपरिक मशीन लर्निंग' कार्यों को अंजाम दिया जा सके। हमने जानबूझकर न्यूरल नेटवर्क्स और डीप लर्निंग को शामिल नहीं किया है, क्योंकि इन्हें हमारे आगामी 'AI for Beginners' पाठ्यक्रम में बेहतर तरीके से कवर किया जाएगा।
+इस कोर्स में, आप मशीन लर्निंग मॉडल बनाने के लिए साइकीट-लर्न और अन्य टूल का उपयोग करेंगे, जिन्हें हम 'पारंपरिक मशीन लर्निंग' कार्य कहते हैं। हमने जानबूझकर न्यूरल नेटवर्क और डीप लर्निंग से बचाव किया है क्योंकि वे हमारे आगामी 'बिगिनर्स के लिए एआई' पाठ्यक्रम में बेहतर कवर किए जाएंगे।
-Scikit-learn मॉडल्स को बनाना और उनका मूल्यांकन करना आसान बनाता है। यह मुख्य रूप से संख्यात्मक डेटा का उपयोग करता है और सीखने के उपकरण के रूप में उपयोग के लिए कई तैयार किए गए डेटासेट्स प्रदान करता है। इसमें छात्रों के लिए आज़माने के लिए प्री-बिल्ट मॉडल्स भी शामिल हैं। आइए पहले Scikit-learn के साथ प्रीपैकेज्ड डेटा को लोड करने और एक बिल्ट-इन एस्टीमेटर का उपयोग करके पहला मशीन लर्निंग मॉडल बनाने की प्रक्रिया का अन्वेषण करें।
+साइकीट-लर्न मॉडल बनाने और उनका मूल्यांकन करने को सरल बनाता है। यह मुख्य रूप से संख्यात्मक डेटा का उपयोग करता है और सीखने के लिए कुछ पहले से बने डेटासेट भी शामिल करता है। इसमें विद्यार्थियों के प्रयोग के लिए पूर्वनिर्मित मॉडल भी शामिल हैं। आइए पहले कुछ बुनियादी डेटा के साथ प्रीपैकेज्ड डेटा लोड करने और एक अंतर्निर्मित एस्टीमेटर का उपयोग करके पहला ML मॉडल बनाने की प्रक्रिया देखें।
-## अभ्यास - आपका पहला Scikit-learn नोटबुक
+## अभ्यास - आपका पहला साइकीट-लर्न नोटबुक
-> यह ट्यूटोरियल Scikit-learn की वेबसाइट पर [लीनियर रिग्रेशन उदाहरण](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) से प्रेरित है।
+> यह ट्यूटोरियल साइकीट-लर्न की वेबसाइट पर [लीनियर रिग्रेशन उदाहरण](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 में आपका पहला लीनियर रिग्रेशन प्रोजेक्ट")
-> 🎥 ऊपर दी गई छवि पर क्लिक करें ताकि आप इस अभ्यास की प्रक्रिया देख सकें।
+[](https://youtu.be/2xkXL5EUpS0 "शुरुआती के लिए एमएल - पाइथन में आपका पहला लीनियर रिग्रेशन प्रोजेक्ट")
-इस पाठ से संबंधित _notebook.ipynb_ फाइल में, सभी सेल्स को 'trash can' आइकन दबाकर साफ़ करें।
+> 🎥 ऊपर दिए गए चित्र पर क्लिक करें इस अभ्यास के माध्यम से एक लघु वीडियो के लिए।
-इस सेक्शन में, आप Scikit-learn में सीखने के उद्देश्यों के लिए बनाए गए एक छोटे से डायबिटीज डेटासेट के साथ काम करेंगे। कल्पना करें कि आप डायबिटीज रोगियों के लिए एक उपचार का परीक्षण करना चाहते हैं। मशीन लर्निंग मॉडल्स आपको यह निर्धारित करने में मदद कर सकते हैं कि कौन से रोगी उपचार के लिए बेहतर प्रतिक्रिया देंगे, चर के संयोजनों के आधार पर। यहां तक कि एक बहुत ही बुनियादी रिग्रेशन मॉडल, जब विज़ुअलाइज़ किया जाता है, तो चर के बारे में जानकारी दिखा सकता है जो आपको अपने सैद्धांतिक क्लिनिकल ट्रायल्स को व्यवस्थित करने में मदद कर सकता है।
+_notebook.ipynb_ फ़ाइल में, इस पाठ से संबंधित, सभी सेल को 'ट्रैश कैन' आइकन दबाकर साफ़ करें।
-✅ रिग्रेशन विधियों के कई प्रकार होते हैं, और आप कौन सा चुनते हैं यह उस उत्तर पर निर्भर करता है जिसे आप ढूंढ रहे हैं। यदि आप किसी दिए गए उम्र के व्यक्ति की संभावित ऊंचाई की भविष्यवाणी करना चाहते हैं, तो आप लीनियर रिग्रेशन का उपयोग करेंगे, क्योंकि आप एक **संख्यात्मक मान** की तलाश कर रहे हैं। यदि आप यह पता लगाना चाहते हैं कि किसी प्रकार के भोजन को शाकाहारी माना जाना चाहिए या नहीं, तो आप एक **श्रेणी असाइनमेंट** की तलाश कर रहे हैं, इसलिए आप लॉजिस्टिक रिग्रेशन का उपयोग करेंगे। आप बाद में लॉजिस्टिक रिग्रेशन के बारे में अधिक जानेंगे। डेटा से कुछ प्रश्न पूछने के बारे में सोचें, और इनमें से कौन सी विधि अधिक उपयुक्त होगी।
+इस अनुभाग में, आप स्किकट-लर्न में सीखने के उद्देश्य से बने मधुमेह (डायबिटीज) के एक छोटे डेटासेट के साथ काम करेंगे। कल्पना करें कि आप मधुमेह रोगियों के लिए एक उपचार जांचना चाहते हैं। मशीन लर्निंग मॉडल मदद कर सकते हैं यह निर्धारित करने में कि कौन से रोगी उपचार पर बेहतर प्रतिक्रिया देंगे, विभिन्न वेरिएबल्स के संयोजन के आधार पर। एक बहुत ही बुनियादी रिग्रेशन मॉडल भी, जब विज़ुअलाइज़ किया जाए, तो उन वेरिएबल्स के बारे में जानकारी दे सकता है जो चिकित्सीय परीक्षणों की योजना बनाने में मदद कर सकते हैं।
+
+✅ कई प्रकार के रिग्रेशन तरीकों होते हैं, और कौन सा चुनना है यह आपके प्रश्न के उत्तर पर निर्भर करता है। यदि आप किसी व्यक्ति की उम्र के अनुसार उसकी संभावित ऊंचाई का पूर्वानुमान लगाना चाहते हैं, तो आप लीनियर रिग्रेशन का उपयोग करेंगे, क्योंकि आप एक **संख्यात्मक मान** तलाश रहे हैं। यदि आप पता लगाना चाहते हैं कि कोई भोजन शाकाहारी (वेजन) माना जाना चाहिए या नहीं, तो आप **श्रेणी निर्धारण** तलाश रहे हैं इसलिए आप लॉजिस्टिक रिग्रेशन का उपयोग करेंगे। आप लॉजिस्टिक रिग्रेशन के बारे में बाद में अधिक जानेंगे। डेटा से पूछे जाने वाले कुछ प्रश्नों के बारे में सोचें और कौन सा तरीका अधिक उपयुक्त होगा।
आइए इस कार्य को शुरू करें।
-### लाइब्रेरीज़ इंपोर्ट करें
+### पुस्तकालयों का इम्पोर्ट करें
-इस कार्य के लिए हम कुछ लाइब्रेरीज़ इंपोर्ट करेंगे:
+इस कार्य के लिए हम कुछ पुस्तकालय इम्पोर्ट करेंगे:
-- **matplotlib**। यह एक उपयोगी [ग्राफिंग टूल](https://matplotlib.org/) है और हम इसका उपयोग लाइन प्लॉट बनाने के लिए करेंगे।
-- **numpy**। [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) Python में संख्यात्मक डेटा को संभालने के लिए एक उपयोगी लाइब्रेरी है।
-- **sklearn**। यह [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) लाइब्रेरी है।
+- **matplotlib**। यह एक उपयोगी [ग्राफिंग टूल](https://matplotlib.org/) है और हम इसे लाइन प्लॉट बनाने के लिए उपयोग करेंगे।
+- **numpy**। [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) पाइथन में संख्यात्मक डेटा संभालने के लिए उपयोगी पुस्तकालय है।
+- **sklearn**। यह [साइकीट-लर्न](https://scikit-learn.org/stable/user_guide.html) पुस्तकालय है।
-अपने कार्यों में मदद के लिए कुछ लाइब्रेरीज़ इंपोर्ट करें।
+अपने कार्यों में सहायता के लिए कुछ लाइब्रेरी आयात करें।
-1. निम्नलिखित कोड टाइप करके इंपोर्ट्स जोड़ें:
+1. निम्न कोड टाइप करके आयात जोड़ें:
```python
import matplotlib.pyplot as plt
@@ -122,26 +123,26 @@ Scikit-learn मॉडल्स को बनाना और उनका म
from sklearn import datasets, linear_model, model_selection
```
- ऊपर आप `matplotlib`, `numpy` और `sklearn` से `datasets`, `linear_model` और `model_selection` इंपोर्ट कर रहे हैं। `model_selection` का उपयोग डेटा को ट्रेनिंग और टेस्ट सेट्स में विभाजित करने के लिए किया जाता है।
+ ऊपर आप `matplotlib`, `numpy` आयात कर रहे हैं और `sklearn` से `datasets`, `linear_model` और `model_selection` आयात कर रहे हैं। `model_selection` का उपयोग डेटा को प्रशिक्षण और परीक्षण सेटों में विभाजित करने के लिए किया जाता है।
-### डायबिटीज डेटासेट
+### मधुमेह डेटासेट
-बिल्ट-इन [डायबिटीज डेटासेट](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) में डायबिटीज से संबंधित 442 नमूनों का डेटा है, जिसमें 10 फीचर वेरिएबल्स शामिल हैं, जिनमें से कुछ हैं:
+अंतर्निर्मित [मधुमेह डेटासेट](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) में मधुमेह से संबंधित 442 नमूने होते हैं, जिनमें 10 फीचर चर होते हैं, जिनमें से कुछ हैं:
-- age: उम्र वर्षों में
+- उम्र: वर्षों में उम्र
- bmi: बॉडी मास इंडेक्स
- bp: औसत रक्तचाप
-- s1 tc: टी-सेल्स (सफेद रक्त कोशिकाओं का एक प्रकार)
+- s1 tc: T-सेल्स (सफेद रक्त कोशिकाओं का एक प्रकार)
-✅ इस डेटासेट में 'sex' की अवधारणा एक फीचर वेरिएबल के रूप में शामिल है, जो डायबिटीज के शोध के लिए महत्वपूर्ण है। कई मेडिकल डेटासेट्स में इस प्रकार का बाइनरी वर्गीकरण शामिल होता है। सोचें कि इस प्रकार की श्रेणियां आबादी के कुछ हिस्सों को उपचार से कैसे बाहर कर सकती हैं।
+✅ इस डेटासेट में 'लिंग' का विचार एक फीचर चर के रूप में शामिल है, जो मधुमेह अनुसंधान के लिए महत्वपूर्ण है। कई चिकित्सा डेटासेट में इस प्रकार की द्विआधारी श्रेणीकरण शामिल होती है। इस तरह की श्रेणीबद्धता इसे ध्यान में रखते हुए सोचें कि कैसे यह जनसंख्या के कुछ हिस्सों को उपचारों से बाहर कर सकती है।
अब, X और y डेटा लोड करें।
-> 🎓 याद रखें, यह सुपरवाइज्ड लर्निंग है, और हमें एक नामित 'y' टारगेट की आवश्यकता है।
+> 🎓 याद रखें, यह सुपरवाइज्ड लर्निंग है, और हमें 'y' टारगेट चाहिए।
-एक नए कोड सेल में, डायबिटीज डेटासेट को `load_diabetes()` कॉल करके लोड करें। इनपुट `return_X_y=True` संकेत देता है कि `X` एक डेटा मैट्रिक्स होगा, और `y` रिग्रेशन टारगेट होगा।
+नई कोड सेल में, मधुमेह डेटासेट को `load_diabetes()` कॉल करके लोड करें। इनपुट `return_X_y=True` से संकेत मिलता है कि `X` डेटा मैट्रिक्स होगा, और `y` रिग्रेशन टारगेट होगा।
-1. डेटा मैट्रिक्स के आकार और इसके पहले तत्व को दिखाने के लिए कुछ प्रिंट कमांड जोड़ें:
+1. डेटा मैट्रिक्स के आकार और उसके पहले तत्व को दिखाने के लिए कुछ प्रिंट कमांड जोड़ें:
```python
X, y = datasets.load_diabetes(return_X_y=True)
@@ -149,9 +150,9 @@ Scikit-learn मॉडल्स को बनाना और उनका म
print(X[0])
```
- जो प्रतिक्रिया आपको मिल रही है, वह एक ट्यूपल है। आप जो कर रहे हैं वह ट्यूपल के पहले दो मानों को क्रमशः `X` और `y` को असाइन करना है। [ट्यूपल्स](https://wikipedia.org/wiki/Tuple) के बारे में अधिक जानें।
+ आपको जो प्रतिक्रिया मिल रही है वह एक टपल है। आप टपल के पहले दो मानों को क्रमशः `X` और `y` को सौंप रहे हैं। टपल के बारे में अधिक जानें [यहां](https://wikipedia.org/wiki/Tuple)।
- आप देख सकते हैं कि इस डेटा में 442 आइटम हैं जो 10 तत्वों के एरे में आकारित हैं:
+ आप देख सकते हैं कि इस डेटा में 442 आइटम हैं जो 10 तत्वों वाले एरे में आकारित हैं:
```text
(442, 10)
@@ -159,39 +160,39 @@ Scikit-learn मॉडल्स को बनाना और उनका म
-0.04340085 -0.00259226 0.01990842 -0.01764613]
```
- ✅ डेटा और रिग्रेशन टारगेट के बीच संबंध के बारे में सोचें। लीनियर रिग्रेशन फीचर X और टारगेट वेरिएबल y के बीच संबंधों की भविष्यवाणी करता है। क्या आप डायबिटीज डेटासेट के लिए [टारगेट](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) को दस्तावेज़ में पा सकते हैं? यह डेटासेट क्या प्रदर्शित कर रहा है, टारगेट को देखते हुए?
+ ✅ डेटा और रिग्रेशन टारगेट के बीच संबंध के बारे में थोड़ा सोचें। लीनियर रिग्रेशन फीचर X और टारगेट वेरिएबल y के बीच संबंध की भविष्यवाणी करता है। क्या आप मधुमेह डेटासेट के लिए [टारगेट](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) को डॉक्यूमेंटेशन में देख सकते हैं? यह डेटासेट उस टारगेट के आधार पर क्या प्रदर्शित कर रहा है?
-2. इसके बाद, इस डेटासेट के एक हिस्से को प्लॉट करने के लिए चुनें, डेटासेट के तीसरे कॉलम का चयन करके। आप `:` ऑपरेटर का उपयोग करके सभी पंक्तियों का चयन कर सकते हैं, और फिर इंडेक्स (2) का उपयोग करके तीसरे कॉलम का चयन कर सकते हैं। आप डेटा को 2D एरे में आकार देने के लिए `reshape(n_rows, n_columns)` का उपयोग कर सकते हैं - जैसा कि प्लॉटिंग के लिए आवश्यक है। यदि पैरामीटर में से एक -1 है, तो संबंधित आयाम स्वचालित रूप से गणना किया जाता है।
+2. अगला, इस डेटासेट का एक हिस्सा प्लॉट करने के लिए 3री कॉलम चुनें। आप `:` ऑपरेटर का उपयोग करके सभी पंक्तियां चुन सकते हैं, फिर इंडेक्स (2) द्वारा तीसरी कॉलम चुन सकते हैं। इसके अलावा, प्लॉटिंग के लिए आवश्यक 2D एरे में डेटा को `reshape(n_rows, n_columns)` का उपयोग करके पुनः आकारित कर सकते हैं। यदि कोई पैरामीटर -1 है, तो संबंधित आयाम स्वचालित रूप से गणना किया जाएगा।
```python
X = X[:, 2]
X = X.reshape((-1,1))
```
- ✅ किसी भी समय, डेटा का आकार जांचने के लिए इसे प्रिंट करें।
+ ✅ किसी भी समय, डेटा का आकार जांचने के लिए प्रिंट करें।
-3. अब जब आपके पास डेटा प्लॉट करने के लिए तैयार है, तो आप देख सकते हैं कि क्या मशीन इस डेटासेट में संख्याओं के बीच एक तार्किक विभाजन निर्धारित करने में मदद कर सकती है। ऐसा करने के लिए, आपको डेटा (X) और टारगेट (y) दोनों को टेस्ट और ट्रेनिंग सेट्स में विभाजित करना होगा। Scikit-learn में इसे करने का एक सीधा तरीका है; आप अपने टेस्ट डेटा को एक दिए गए बिंदु पर विभाजित कर सकते हैं।
+3. अब जब आपके पास प्लॉट करने के लिए डेटा तैयार है, तो देखें कि क्या मशीन इस डेटासेट के नंबरों के बीच तार्किक विभाजन करने में मदद कर सकती है। इसके लिए, आपको दोनों डेटा (X) और टारगेट (y) को परीक्षण और प्रशिक्षण सेटों में विभाजित करना होगा। साइकीट-लर्न के पास इसे करने का सरल तरीका है; आप अपने परीक्षण डेटा को एक दिए गए बिंदु पर विभाजित कर सकते हैं।
```python
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33)
```
-4. अब आप अपने मॉडल को ट्रेन करने के लिए तैयार हैं! लीनियर रिग्रेशन मॉडल लोड करें और इसे अपने X और y ट्रेनिंग सेट्स के साथ `model.fit()` का उपयोग करके ट्रेन करें:
+4. अब आप अपने मॉडल को प्रशिक्षित करने के लिए तैयार हैं! लाइनियर रिग्रेशन मॉडल लोड करें और अपने X और y प्रशिक्षण सेट का उपयोग करके `model.fit()` के साथ प्रशिक्षित करें:
```python
model = linear_model.LinearRegression()
model.fit(X_train, y_train)
```
- ✅ `model.fit()` एक फ़ंक्शन है जिसे आप TensorFlow जैसी कई ML लाइब्रेरीज़ में देखेंगे।
+ ✅ `model.fit()` एक फ़ंक्शन है जिसे आप कई एमएल लाइब्रेरियों जैसे TensorFlow में भी देखेंगे।
-5. फिर, टेस्ट डेटा का उपयोग करके एक प्रेडिक्शन बनाएं, `predict()` फ़ंक्शन का उपयोग करके। इसका उपयोग डेटा समूहों के बीच लाइन खींचने के लिए किया जाएगा।
+5. फिर, परीक्षण डेटा का उपयोग करके भविष्यवाणी बनाएं, `predict()` फ़ंक्शन का उपयोग करके। इसका उपयोग मॉडल के डेटा समूहों के बीच लाइन खींचने के लिए किया जाएगा।
```python
y_pred = model.predict(X_test)
```
-6. अब डेटा को प्लॉट में दिखाने का समय है। Matplotlib इस कार्य के लिए एक बहुत उपयोगी टूल है। सभी X और y टेस्ट डेटा का एक स्कैटरप्लॉट बनाएं, और मॉडल के डेटा समूहों के बीच सबसे उपयुक्त स्थान पर एक लाइन खींचने के लिए प्रेडिक्शन का उपयोग करें।
+6. अब डेटा को प्लॉट में दिखाने का समय है। मैटप्लॉटलिब इस कार्य के लिए एक बहुत उपयोगी उपकरण है। सभी X और y टेस्ट डेटा का एक स्कैटरप्लॉट बनाएं, और मॉडल के डेटा समूहों के बीच सबसे उपयुक्त जगह पर लाइन खींचने के लिए भविष्यवाणी का उपयोग करें।
```python
plt.scatter(X_test, y_test, color='black')
@@ -202,29 +203,32 @@ Scikit-learn मॉडल्स को बनाना और उनका म
plt.show()
```
- 
-✅ यहां क्या हो रहा है, इस पर थोड़ा विचार करें। एक सीधी रेखा कई छोटे डेटा बिंदुओं के बीच से गुजर रही है, लेकिन यह वास्तव में क्या कर रही है? क्या आप देख सकते हैं कि इस रेखा का उपयोग करके आप यह अनुमान कैसे लगा सकते हैं कि एक नया, अनदेखा डेटा बिंदु प्लॉट के y अक्ष के संबंध में कहां फिट होगा? इस मॉडल के व्यावहारिक उपयोग को शब्दों में व्यक्त करने की कोशिश करें।
+ 
+
-बधाई हो, आपने अपना पहला लीनियर रिग्रेशन मॉडल बनाया, इसके साथ एक भविष्यवाणी की, और इसे एक प्लॉट में प्रदर्शित किया!
+ ✅ यहाँ जो हो रहा है उसके बारे में थोड़ा सोचें। एक सीधी रेखा कई छोटे डेटा बिंदुओं से होकर गुजर रही है, लेकिन यह वास्तव में क्या कर रही है? क्या आप देख सकते हैं कि आपको इस रेखा का उपयोग कैसे करना चाहिए ताकि यह अनुमान लगाया जा सके कि एक नया, अब तक न देखा गया डेटा पॉइंट प्लॉट के y अक्ष के सापेक्ष कहाँ फिट होना चाहिए? इस मॉडल के व्यावहारिक उपयोग को शब्दों में व्यक्त करने की कोशिश करें।
+
+बधाई हो, आपने अपना पहला लीनियर रिग्रेशन मॉडल बनाया, इसके साथ एक पूर्वानुमान बनाया, और इसे एक प्लॉट में प्रदर्शित किया!
---
## 🚀चुनौती
-इस डेटा सेट से एक अलग वेरिएबल को प्लॉट करें। संकेत: इस लाइन को एडिट करें: `X = X[:,2]`। इस डेटा सेट के टारगेट को देखते हुए, आप डायबिटीज के एक बीमारी के रूप में प्रगति के बारे में क्या पता लगा सकते हैं?
-
-## [पोस्ट-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
+इस डेटासेट से एक अलग चर को प्लॉट करें। सलाह: इस लाइन को संपादित करें: `X = X[:,2]`। इस डेटासेट के लक्ष्य के आधार पर, आप मधुमेह को एक रोग के रूप में प्रगति के बारे में क्या खोजने में सक्षम हैं?
+## [पाठ-पर्याप्ति क्विज़](https://ff-quizzes.netlify.app/en/ml/)
-## समीक्षा और स्व-अध्ययन
+## पुनरावलोकन और स्व-अध्ययन
-इस ट्यूटोरियल में, आपने सिंपल लीनियर रिग्रेशन के साथ काम किया, न कि यूनिवेरिएट या मल्टीपल लीनियर रिग्रेशन के साथ। इन विधियों के बीच के अंतर के बारे में थोड़ा पढ़ें, या [इस वीडियो](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) को देखें।
+इस ट्यूटोरियल में, आपने सरल लीनियर रिग्रेशन के साथ काम किया, न कि एकविवरणीय या बहुविवरणीय लीनियर रिग्रेशन के साथ। इन तरीकों के बीच के अंतर के बारे में थोड़ा पढ़ें, या इस [वीडियो](https://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) लें।
+रिग्रेशन की अवधारणा के बारे में अधिक पढ़ें और सोचें कि इस तकनीक से किस तरह के प्रश्नों का उत्तर दिया जा सकता है। अपनी समझ को गहरा करने के लिए यह [ट्यूटोरियल](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) लें।
## असाइनमेंट
-[एक अलग डेटा सेट](assignment.md)
+[एक अलग डेटासेट](assignment.md)
---
-**अस्वीकरण**:
-यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को आधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।
\ No newline at end of file
+
+**अस्वीकरण**:
+इस दस्तावेज़ का अनुवाद AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या अशुद्धियाँ हो सकती हैं। मूल दस्तावेज़ अपनी मूल भाषा में ही प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।
+
\ No newline at end of file
diff --git a/translations/hi/2-Regression/2-Data/README.md b/translations/hi/2-Regression/2-Data/README.md
index 5465bd77b..1e586503d 100644
--- a/translations/hi/2-Regression/2-Data/README.md
+++ b/translations/hi/2-Regression/2-Data/README.md
@@ -1,62 +1,62 @@
-# Scikit-learn का उपयोग करके एक रिग्रेशन मॉडल बनाएं: डेटा तैयार करें और विज़ुअलाइज़ करें
+# Scikit-learn का उपयोग करके एक रिग्रेशन मॉडल बनाएं: डेटा तैयार करें और विज़ुअलाईज़ करें
-
+
-इन्फोग्राफिक: [दसानी मडिपल्ली](https://twitter.com/dasani_decoded)
+इन्फोग्राफिक द्वारा [Dasani Madipalli](https://twitter.com/dasani_decoded)
-## [प्री-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
+## [प्रि-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
-> ### [यह पाठ R में भी उपलब्ध है!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
+> ### [यह पाठ R में उपलब्ध है!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
## परिचय
-अब जब आपके पास Scikit-learn के साथ मशीन लर्निंग मॉडल बनाने के लिए आवश्यक टूल्स हैं, तो आप अपने डेटा से सवाल पूछने के लिए तैयार हैं। जब आप डेटा के साथ काम करते हैं और ML समाधान लागू करते हैं, तो सही सवाल पूछना बहुत महत्वपूर्ण है ताकि आप अपने डेटा सेट की संभावनाओं को सही तरीके से समझ सकें।
+अब जब आप Scikit-learn के साथ मशीन लर्निंग मॉडल निर्माण शुरू करने के लिए आवश्यक टूल्स के साथ तैयार हैं, तो आप अपने डेटा से प्रश्न पूछना शुरू करने के लिए तैयार हैं। डेटा के साथ काम करते समय और एमएल समाधान लागू करते समय, यह बहुत महत्वपूर्ण है कि सही प्रश्न पूछें ताकि आप अपने डेटासेट की संभावनाओं को सही तरीके से खोल सकें।
इस पाठ में, आप सीखेंगे:
- मॉडल बनाने के लिए अपने डेटा को कैसे तैयार करें।
-- डेटा विज़ुअलाइज़ेशन के लिए Matplotlib का उपयोग कैसे करें।
+- डेटा विज़ुअलाईज़ेशन के लिए Matplotlib का उपयोग कैसे करें।
+- अधिक अभिव्यक्तिपूर्ण डेटा विज़ुअलाईज़ेशन के लिए Seaborn का उपयोग कैसे करें।
-## अपने डेटा से सही सवाल पूछना
+## अपने डेटा से सही प्रश्न पूछना
-आपके द्वारा पूछे जाने वाले सवाल यह तय करेंगे कि आप किस प्रकार के ML एल्गोरिदम का उपयोग करेंगे। और आपको मिलने वाले उत्तर की गुणवत्ता आपके डेटा की प्रकृति पर बहुत अधिक निर्भर करेगी।
+जिस प्रश्न का आपको उत्तर चाहिए वह निर्धारित करेगा कि आप कौन सा प्रकार का एमएल एल्गोरिदम उपयोग करेंगे। और आपको जो उत्तर मिलता है उसकी गुणवत्ता आपके डेटा के स्वभाव पर भारी निर्भर करेगी।
-इस पाठ के लिए दिए गए [डेटा](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) पर एक नज़र डालें। आप इस .csv फ़ाइल को VS Code में खोल सकते हैं। एक त्वरित स्कैन से तुरंत पता चलता है कि इसमें खाली स्थान हैं और स्ट्रिंग्स और संख्यात्मक डेटा का मिश्रण है। इसमें 'Package' नाम का एक अजीब कॉलम भी है, जिसमें डेटा 'sacks', 'bins' और अन्य मानों का मिश्रण है। वास्तव में, यह डेटा थोड़ा गड़बड़ है।
+इस पाठ के लिए प्रदान किए गए [डेटा](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) पर एक नजर डालें। आप इस .csv फ़ाइल को VS कोड में खोल सकते हैं। एक त्वरित अवलोकन से पता चलता है कि वहाँ रिक्त स्थान हैं और स्ट्रिंग्स और संख्यात्मक डेटा का मिश्रण है। एक अजीब कॉलम 'Package' भी है जहाँ डेटा 'sacks', 'bins' और अन्य मानों का मिश्रण है। वास्तव में, डेटा थोड़ा अस्त-व्यस्त है।
-[](https://youtu.be/5qGjczWTrDQ "शुरुआती के लिए ML - डेटा सेट का विश्लेषण और सफाई कैसे करें")
+[](https://youtu.be/5qGjczWTrDQ "शुरुआती लोगों के लिए एमएल - डेटा सेट को कैसे विश्लेषण और साफ़ करें")
-> 🎥 ऊपर दी गई छवि पर क्लिक करें इस पाठ के लिए डेटा तैयार करने पर एक छोटा वीडियो देखने के लिए।
+> 🎥 इस पाठ के लिए डेटा तैयार करने के काम को दर्शाते एक छोटे वीडियो के लिए ऊपर की छवि पर क्लिक करें।
-वास्तव में, ऐसा बहुत कम होता है कि आपको एक ऐसा डेटा सेट मिले जो पूरी तरह से तैयार हो और जिसे सीधे 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) से निकाला गया है, जिसे संयुक्त राज्य अमेरिका के कृषि विभाग द्वारा वितरित किया गया है।
+इस फ़ोल्डर में आपको रूट `data` फ़ोल्डर में [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) नाम की एक .csv फ़ाइल मिलेगी जिसमें कद्दुओं के बाजार के बारे में 1757 पंक्तियाँ हैं, जिन्हें शहरों द्वारा समूहित किया गया है। यह कच्चा डेटा संयुक्त राज्य कृषि विभाग द्वारा वितरित [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) से निकाला गया है।
-### डेटा तैयार करना
+### डेटा की तैयारी
-यह डेटा सार्वजनिक डोमेन में है। इसे USDA वेबसाइट से कई अलग-अलग फ़ाइलों में, प्रत्येक शहर के लिए, डाउनलोड किया जा सकता है। बहुत अधिक अलग-अलग फ़ाइलों से बचने के लिए, हमने सभी शहरों के डेटा को एक स्प्रेडशीट में जोड़ दिया है, इस प्रकार हमने पहले ही डेटा को थोड़ा _तैयार_ कर लिया है। अब, आइए डेटा को करीब से देखें।
+यह डेटा सार्वजनिक क्षेत्र में है। इसे USDA वेबसाइट से शहर के अनुसार कई अलग-अलग फ़ाइलों में डाउनलोड किया जा सकता है। बहुत सारी अलग-अलग फ़ाइलों से बचने के लिए, हमने सभी शहरों का डेटा एक स्प्रेडशीट में संयोजित किया है, इसलिए हमने डेटा को थोड़ा _तैयार_ किया हुआ है। अब, आइए डेटा को करीब से देखें।
-### कद्दू का डेटा - प्रारंभिक निष्कर्ष
+### कद्दू डेटा - प्रारंभिक निष्कर्ष
-आप इस डेटा के बारे में क्या नोटिस करते हैं? आपने पहले ही देखा है कि इसमें स्ट्रिंग्स, नंबर, खाली स्थान और अजीब मानों का मिश्रण है, जिसे आपको समझने की आवश्यकता है।
+आप इस डेटा के बारे में क्या नोटिस करते हैं? आपने पहले ही देखा है कि इसमें स्ट्रिंग्स, संख्याएँ, रिक्त स्थान और अजीब मानों का मिश्रण है जिन्हें आपको समझना है।
-आप इस डेटा से कौन सा सवाल पूछ सकते हैं, रिग्रेशन तकनीक का उपयोग करके? उदाहरण के लिए, "किसी दिए गए महीने में बिक्री के लिए कद्दू की कीमत का अनुमान लगाएं।" डेटा को फिर से देखते हुए, आपको डेटा संरचना बनाने के लिए कुछ बदलाव करने होंगे जो इस कार्य के लिए आवश्यक है।
+आप इस डेटा से रिग्रेशन तकनीक का उपयोग करते हुए क्या प्रश्न पूछ सकते हैं? जैसे कि "किसी दिए गए महीने में बिक्री के लिए कद्दू का मूल्य अनुमानित करें"। डेटा को पुनः देखने पर, कुछ बदलाव करने होंगे ताकि इस कार्य के लिए आवश्यक डेटा संरचना बन सके।
+## अभ्यास - कद्दू डेटा का विश्लेषण करें
-## अभ्यास - कद्दू के डेटा का विश्लेषण करें
+चलिए [Pandas](https://pandas.pydata.org/) का उपयोग करते हैं, (नाम का अर्थ है `Python Data Analysis`) जो डेटा को आकार देने के लिए बहुत उपयोगी टूल है, इस कद्दू डेटा का विश्लेषण और तैयारी करने के लिए।
-आइए [Pandas](https://pandas.pydata.org/) का उपयोग करें, (जिसका नाम `Python Data Analysis` के लिए है) जो डेटा को आकार देने के लिए बहुत उपयोगी टूल है, इस कद्दू के डेटा का विश्लेषण और तैयारी करने के लिए।
+### पहले, गायब तारीखें चेक करें
-### सबसे पहले, गायब तारीखों की जांच करें
+आपको सबसे पहले गायब तारीखों के लिए जांच करनी होगी:
-आपको सबसे पहले गायब तारीखों की जांच करने के लिए कदम उठाने होंगे:
-
-1. तारीखों को महीने के प्रारूप में बदलें (ये US तारीखें हैं, इसलिए प्रारूप `MM/DD/YYYY` है)।
+1. तारीखों को महीने के प्रारूप में बदलें (ये अमेरिकी तारीखें हैं, इसलिए प्रारूप है `MM/DD/YYYY`)।
2. महीने को एक नए कॉलम में निकालें।
-Visual Studio Code में _notebook.ipynb_ फ़ाइल खोलें और स्प्रेडशीट को एक नए Pandas डेटा फ्रेम में आयात करें।
+Visual Studio Code में _notebook.ipynb_ फ़ाइल खोलें और स्प्रेडशीट को नए Pandas dataframe में इंपोर्ट करें।
-1. पहले पांच पंक्तियों को देखने के लिए `head()` फ़ंक्शन का उपयोग करें।
+1. `head()` फ़ंक्शन का उपयोग करके पहले पाँच पंक्तियों को देखें।
```python
import pandas as pd
@@ -64,30 +64,30 @@ Visual Studio Code में _notebook.ipynb_ फ़ाइल खोलें
pumpkins.head()
```
- ✅ आप अंतिम पांच पंक्तियों को देखने के लिए कौन सा फ़ंक्शन उपयोग करेंगे?
+ ✅ अंतिम पाँच पंक्तियाँ देखने के लिए कौन सा फ़ंक्शन उपयोग करेंगे?
-1. वर्तमान डेटा फ्रेम में गायब डेटा की जांच करें:
+1. जांचें कि वर्तमान dataframe में कोई गायब डेटा है या नहीं:
```python
pumpkins.isnull().sum()
```
- डेटा गायब है, लेकिन शायद यह वर्तमान कार्य के लिए मायने नहीं रखता।
+ कुछ डेटा गायब है, लेकिन शायद यह कार्य के लिए मायने नहीं रखेगा।
-1. अपने डेटा फ्रेम को काम करने में आसान बनाने के लिए, केवल उन कॉलमों का चयन करें जिनकी आपको आवश्यकता है, `loc` फ़ंक्शन का उपयोग करके जो मूल डेटा फ्रेम से पंक्तियों (पहले पैरामीटर के रूप में पास की गई) और कॉलमों (दूसरे पैरामीटर के रूप में पास की गई) का एक समूह निकालता है। नीचे दिए गए मामले में अभिव्यक्ति `:` का अर्थ है "सभी पंक्तियाँ।"
+1. अपने dataframe के साथ काम करना आसान बनाने के लिए, केवल आवश्यक कॉलम चुनें, `loc` फ़ंक्शन का उपयोग करके जो मूल dataframe से पंक्तियों (पहला पैरामीटर) और कॉलमों (दूसरा पैरामीटर) का समूह निकालता है। नीचे के उदाहरण में `:` का अर्थ है "सभी पंक्तियाँ"।
```python
columns_to_select = ['Package', 'Low Price', 'High Price', 'Date']
pumpkins = pumpkins.loc[:, columns_to_select]
```
-### दूसरा, कद्दू की औसत कीमत निर्धारित करें
+### दूसरा, कद्दू का औसत मूल्य निर्धारित करें
-सोचें कि किसी दिए गए महीने में कद्दू की औसत कीमत कैसे निर्धारित करें। इस कार्य के लिए आप कौन से कॉलम चुनेंगे? संकेत: आपको 3 कॉलम की आवश्यकता होगी।
+सोचें कि किसी दिए गए महीने में कद्दू का औसत मूल्य कैसे पाएँ। इस कार्य के लिए आप कौन से कॉलम चुनेंगे? संकेत: आपको 3 कॉलम चाहिए होंगे।
-समाधान: `Low Price` और `High Price` कॉलम का औसत लें और नए Price कॉलम को भरें, और Date कॉलम को केवल महीने दिखाने के लिए बदलें। सौभाग्य से, ऊपर की जांच के अनुसार, तारीखों या कीमतों के लिए कोई गायब डेटा नहीं है।
+समाधान: `Low Price` और `High Price` कॉलमों का औसत लेकर नए Price कॉलम में भरें, और Date कॉलम को केवल महीने तक सीमित करें। सौभाग्य से ऊपर की जांच के अनुसार, तारीखों या कीमतों के लिए कोई गायब डेटा नहीं है।
-1. औसत की गणना करने के लिए, निम्नलिखित कोड जोड़ें:
+1. औसत निकालने के लिए निम्न कोड जोड़ें:
```python
price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2
@@ -96,37 +96,37 @@ Visual Studio Code में _notebook.ipynb_ फ़ाइल खोलें
```
- ✅ आप `print(month)` का उपयोग करके किसी भी डेटा को जांचने के लिए प्रिंट कर सकते हैं।
+ ✅ अपने डेटा को चेक करने के लिए `print(month)` से किसी भी डेटा को प्रिंट कर सकते हैं।
-2. अब, अपने परिवर्तित डेटा को एक नए Pandas डेटा फ्रेम में कॉपी करें:
+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 को प्रिंट करने पर आपको एक साफ, व्यवस्थित डेटासेट मिलेगा जिस पर आप अपना नया रिग्रेशन मॉडल बना सकते हैं।
### लेकिन रुको! यहाँ कुछ अजीब है
-यदि आप `Package` कॉलम को देखें, तो कद्दू कई अलग-अलग कॉन्फ़िगरेशन में बेचे जाते हैं। कुछ '1 1/9 bushel' माप में बेचे जाते हैं, और कुछ '1/2 bushel' माप में, कुछ प्रति कद्दू, कुछ प्रति पाउंड, और कुछ बड़े बक्सों में अलग-अलग चौड़ाई के साथ।
+यदि आप `Package` कॉलम देखें, तो कद्दू कई अलग-अलग आकारों में बेचे जाते हैं। कुछ '1 1/9 bushel' मापन में बेचे जाते हैं, कुछ '1/2 bushel' में, कुछ प्रति कद्दू, कुछ प्रति पाउंड, और कुछ बड़े डब्बों में जिनकी चौड़ाई भिन्न होती है।
-> कद्दू को लगातार तौलना बहुत कठिन लगता है
+> कद्दू को लगातार वजन करना बहुत कठिन लगता है
-मूल डेटा में गहराई से देखें, यह दिलचस्प है कि जिनका `Unit of Sale` 'EACH' या 'PER BIN' के बराबर है, उनके `Package` प्रकार प्रति इंच, प्रति बिन, या 'each' भी हैं। कद्दू को लगातार तौलना बहुत कठिन लगता है, इसलिए आइए उन्हें फ़िल्टर करें और केवल उन कद्दूओं का चयन करें जिनके `Package` कॉलम में 'bushel' शब्द है।
+मूल डेटा को देखकर दिलचस्प बात यह है कि जिनका `Unit of Sale` 'EACH' या 'PER BIN' है, उनके `Package` प्रकार में भी प्रति इंच, प्रति बिन या 'each' होता है। कद्दू का लगातार वजन करना कठिन लगता है, इसलिए चलिए केवल उन कद्दुओं को फ़िल्टर करते हैं जिनके `Package` कॉलम में 'bushel' स्ट्रिंग है।
-1. फ़ाइल के शीर्ष पर, प्रारंभिक .csv आयात के तहत एक फ़िल्टर जोड़ें:
+1. फ़ाइल की शुरुआत में, प्रारंभिक .csv इंपोर्ट के नीचे फ़िल्टर जोड़ें:
```python
pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]
```
- यदि आप अब डेटा प्रिंट करते हैं, तो आप देख सकते हैं कि आपको केवल लगभग 415 पंक्तियों का डेटा मिल रहा है जिसमें कद्दू बसल के अनुसार हैं।
+ यदि आप अब डेटा प्रिंट करते हैं, तो आप देखेंगे कि आप केवल लगभग 415 पंक्तियों को प्राप्त कर रहे हैं जिनमें bushel द्वारा कद्दू हैं।
-### लेकिन रुको! एक और काम करना बाकी है
+### लेकिन रुको! एक और काम करना है
-क्या आपने देखा कि बसल की मात्रा प्रति पंक्ति बदलती है? आपको मूल्य निर्धारण को सामान्य करना होगा ताकि आप बसल के अनुसार मूल्य दिखा सकें, इसलिए इसे मानकीकृत करने के लिए कुछ गणना करें।
+क्या आपने देखा कि bushel मात्रा प्रति पंक्ति भिन्न होती है? आपको मूल्य निर्धारण को सामान्यीकृत करना होगा ताकि आप मूल्य प्रति bushel दिखा सकें, इसलिए इसे मानकीकृत करने के लिए कुछ गणना करें।
-1. नए_pumpkins डेटा फ्रेम बनाने वाले ब्लॉक के बाद ये लाइनें जोड़ें:
+1. नई_pumpkins dataframe बनाने वाले ब्लॉक के बाद ये लाइनें जोड़ें:
```python
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9)
@@ -134,38 +134,38 @@ Visual Studio Code में _notebook.ipynb_ फ़ाइल खोलें
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2)
```
-✅ [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) के अनुसार, बसल का वजन उत्पाद के प्रकार पर निर्भर करता है, क्योंकि यह एक वॉल्यूम माप है। "उदाहरण के लिए, टमाटर का एक बसल 56 पाउंड वजन का होना चाहिए... पत्ते और साग अधिक जगह लेते हैं और कम वजन होता है, इसलिए पालक का एक बसल केवल 20 पाउंड होता है।" यह सब काफी जटिल है! आइए बसल-से-पाउंड रूपांतरण करने की बजाय बसल के अनुसार मूल्य निर्धारण करें। हालांकि, कद्दू के बसल का यह अध्ययन यह दिखाता है कि आपके डेटा की प्रकृति को समझना कितना महत्वपूर्ण है!
+✅ [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 - Matplotlib के साथ डेटा कैसे विज़ुअलाइज़ करें")
+[](https://youtu.be/SbUkxH6IJo0 "शुरुआती लोगों के लिए एमएल - Matplotlib के साथ डेटा विज़ुअलाईज़ करें")
-> 🎥 ऊपर दी गई छवि पर क्लिक करें इस पाठ के लिए डेटा को विज़ुअलाइज़ करने पर एक छोटा वीडियो देखने के लिए।
+> 🎥 इस पाठ के लिए डेटा विज़ुअलाईज़ेशन पर एक छोटा वीडियो देखने के लिए ऊपर की छवि पर क्लिक करें।
-विज़ुअलाइज़ेशन यह निर्धारित करने में भी मदद कर सकते हैं कि डेटा के लिए कौन सी मशीन लर्निंग तकनीक सबसे उपयुक्त है। उदाहरण के लिए, एक स्कैटरप्लॉट जो एक रेखा का अनुसरण करता हुआ प्रतीत होता है, यह संकेत देता है कि डेटा एक रेखीय रिग्रेशन अभ्यास के लिए एक अच्छा उम्मीदवार है।
+विज़ुअलाइजेशन यह भी तय करने में मदद कर सकता है कि डेटा के लिए कौन सी मशीन लर्निंग तकनीक सबसे उपयुक्त है। उदाहरण के लिए, एक स्कैटरप्लॉट जो एक रेखा का पालन करता प्रतीत होता है, यह दर्शाता है कि डेटा एक रैखिक रिग्रेशन अभ्यास के लिए उपयुक्त हो सकता है।
-एक डेटा विज़ुअलाइज़ेशन लाइब्रेरी जो Jupyter नोटबुक्स में अच्छी तरह काम करती है वह है [Matplotlib](https://matplotlib.org/) (जिसे आपने पिछले पाठ में भी देखा था)।
+एक डेटा विज़ुअलाईज़ेशन लाइब्रेरी जो Jupyter नोटबुक में अच्छी तरह काम करती है वह है [Matplotlib](https://matplotlib.org/) (जिसे आपने पिछले पाठ में भी देखा था)।
-> डेटा विज़ुअलाइज़ेशन के साथ अधिक अनुभव प्राप्त करें [इन ट्यूटोरियल्स](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott) में।
+> [इन ट्यूटोरियल्स](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott) में डेटा विज़ुअलाईज़ेशन के साथ अधिक अनुभव प्राप्त करें।
## अभ्यास - Matplotlib के साथ प्रयोग करें
-नए डेटा फ्रेम को प्रदर्शित करने के लिए कुछ बुनियादी प्लॉट्स बनाने का प्रयास करें। एक बुनियादी लाइन प्लॉट क्या दिखाएगा?
+अभी बनाए गए नए dataframe को प्रदर्शित करने के लिए कुछ बुनियादी प्लॉट बनाने की कोशिश करें। एक बुनियादी लाइन प्लॉट क्या दिखाएगा?
-1. फ़ाइल के शीर्ष पर Pandas आयात के तहत Matplotlib आयात करें:
+1. फ़ाइल के शीर्ष पर, Pandas इंपोर्ट के नीचे Matplotlib इंपोर्ट करें:
```python
import matplotlib.pyplot as plt
```
-1. पूरे नोटबुक को फिर से चलाएं ताकि यह ताज़ा हो जाए।
-1. नोटबुक के नीचे एक सेल जोड़ें ताकि डेटा को एक बॉक्स के रूप में प्लॉट किया जा सके:
+1. नोटबुक को संपूर्ण रूप से पुनः चलाएं।
+1. नोटबुक के नीचे एक सेल जोड़ें जो डेटा को बॉक्स प्लॉट के रूप में प्रस्तुत करे:
```python
price = new_pumpkins.Price
@@ -174,44 +174,121 @@ Visual Studio Code में _notebook.ipynb_ फ़ाइल खोलें
plt.show()
```
- 
+ 
- क्या यह एक उपयोगी प्लॉट है? क्या इसमें कुछ ऐसा है जो आपको आश्चर्यचकित करता है?
+ क्या यह एक उपयोगी प्लॉट है? क्या इसमें कुछ आपको आश्चर्यचकित करता है?
- यह विशेष रूप से उपयोगी नहीं है क्योंकि यह केवल आपके डेटा को एक दिए गए महीने में बिंदुओं के फैलाव के रूप में प्रदर्शित करता है।
+ यह खास उपयोगी नहीं है क्योंकि यह केवल आपके डेटा को एक विस्तृत बिंदुओं के रूप में एक दिए गए महीने में दिखाता है।
### इसे उपयोगी बनाएं
-उपयोगी डेटा प्रदर्शित करने के लिए, आपको आमतौर पर डेटा को किसी न किसी तरह से समूहित करना होता है। आइए एक प्लॉट बनाएं जहां y अक्ष महीने दिखाए और डेटा वितरण को प्रदर्शित करे।
+उपयोगी डेटा चार्ट्स प्रदर्शित करने के लिए, आपको आम तौर पर डेटा को किसी तरह समूहित करना पड़ता है। चलिए एक ऐसा प्लॉट बनाने की कोशिश करें जहाँ y अक्ष महीनों को दिखाता है और डेटा वितरण को दर्शाता है।
-1. एक सेल जोड़ें ताकि एक समूहित बार चार्ट बनाया जा सके:
+1. एक सेल जोड़ें जो एक समूहित बार चार्ट बनाए:
```python
new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar')
plt.ylabel("Pumpkin Price")
```
- 
+ 
+
+ यह एक अधिक उपयोगी डेटा विज़ुअलाईज़ेशन है! यह दर्शाता है कि कद्दू के लिए उच्चतम कीमत सितंबर और अक्टूबर में होती है। क्या यह आपकी उम्मीद से मेल खाता है? क्यों या क्यों नहीं?
+
+## अभ्यास - Seaborn के साथ प्रयोग करें
+
+Matplotlib शक्तिशाली है, लेकिन एक चिकना चार्ट बनाने में काफी कोड लग सकता है। [Seaborn](https://seaborn.pydata.org/) एक लाइब्रेरी है जो Matplotlib के ऊपर बनी है और सांख्यिकीय डेटा विज़ुअलाईज़ेशन के लिए डिज़ाइन की गई है। यह सीधे Pandas dataframes के साथ काम करती है, आकर्षक डिफ़ॉल्ट शैलियाँ लागू करती है, और बहुत कम कोड के साथ सूचनात्मक प्लॉट बनाती है। चूंकि Seaborn Matplotlib ऑब्जेक्ट्स लौटाता है, आप Matplotlib के बारे में पहले से जो कुछ जानते हैं उसे परिणामों को बेहतर बनाने के लिए उपयोग कर सकते हैं।
+
+> यदि आपके पास Seaborn पहले से इंस्टॉल नहीं है, तो इसे `pip install seaborn` से इंस्टॉल करें।
+
+1. नोटबुक के शीर्ष पर अन्य इंपोर्ट्स के नीचे Seaborn इंपोर्ट करें। इसे सामान्यतः `sns` के रूप में इंपोर्ट किया जाता है:
+
+ ```python
+ import seaborn as sns
+ ```
+
+### रिश्तों को दिखाने के लिए स्कैटर प्लॉट्स
+
+मॉडल बनाने से पहले डेटा का पता लगाने का एक बड़ा हिस्सा है चर के बीच _रिश्तों_ को देखना। [स्कैटर प्लॉट](https://en.wikipedia.org/wiki/Scatter_plot) इस उद्देश्य के लिए सबसे अच्छे उपकरणों में से एक है: यदि बिंदु किसी रेखा का अनुसरण करते हुए दिखें, तो दोनों चर सहसंबद्ध हो सकते हैं, जो कि एक संकेत है कि लाइनियर रिग्रेशन मॉडल काम कर सकता है।
+
+1. पहले के मूल्य-से-महीना स्कैटर प्लॉट को फिर से बनाएं, लेकिन इस बार Seaborn के [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) (संबंधित प्लॉट) का उपयोग करते हुए, जो सीधे आपके dataframe के कॉलम के साथ काम करता है:
+
+ ```python
+ sns.relplot(x="Price", y="Month", data=new_pumpkins)
+ ```
+
+ 
+
+ ध्यान दें कि आप _कॉलम नाम_ और डेटा फ्रेम पास करते हैं, और Seaborn आपके लिए अक्ष लेबलों का ध्यान रखता है।
+
+2. आप `kind="line"` पास करके इसे लाइन प्लॉट में बदल सकते हैं। Seaborn रेखा के चारों ओर विश्वास अंतराल दिखाने वाला एक छायांकित बैंड भी बनाता है:
+
+ ```python
+ sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins)
+ ```
+
+ 
+
+ यह विशेष डेटा काफी शोर युक्त है, इसलिए लाइन प्लॉट सबसे स्पष्ट विकल्प नहीं है - लेकिन यह दिखाता है कि आप आसानी से Seaborn में चार्ट प्रकार कैसे बदल सकते हैं।
+
+### वितरण दिखाने के लिए बार चार्ट्स
+
+
+पहले आपने Matplotlib के साथ बार चार्ट बनाने के लिए डेटा को हाथ से समूहित किया था। Seaborn का [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) (श्रेणीबद्ध प्लॉट) आपके लिए समूहण और एकत्रीकरण कर सकता है। डिफ़ॉल्ट रूप से `kind="bar"` प्रत्येक श्रेणी का औसत दिखाता है साथ ही एक काली रेखा जो विश्वास अंतराल को संकेत करती है।
+
+1. प्रति महीने औसत मूल्य का बार चार्ट बनाएं:
+
+ ```python
+ sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar")
+ ```
+
+ 
+
+ यह पुष्टि करता है जो आपने Matplotlib के साथ देखा था — कीमतें सितंबर और अक्टूबर के आसपास चरम पर होती हैं — लेकिन Seaborn यह भी दिखाता है कि प्रत्येक महीने के भीतर कीमत कितनी _वैरिएबल_ होती है।
+
+### सहसंबंध दिखाने वाले हीटमैप्स
+
+स्कैटर प्लॉट एक बार में दो चर की तुलना करते हैं। जब आपके पास कई संख्यात्मक कॉलम होते हैं, तब एक [हीटमैप](https://en.wikipedia.org/wiki/Heat_map) आपको एक साथ _हर_ कॉलम जोड़ी के बीच संबंध की ताकत देखने देता है। यह एक सामान्य तरीका है यह देखने का कि कौन से फीचर्स सबसे अधिक संबंधित हैं इससे पहले कि आप मॉडल में कौन से फीचर फीड करें (और समान प्रकार के चार्ट का उपयोग बाद में क्लासिफिकेशन में कॉन्फ्यूजन मैट्रिक्स दिखाने के लिए किया जाता है)।
+
+1. Pandas के साथ एक सहसंबंध मैट्रिक्स बनाएं, फिर Seaborn के [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html) के साथ इसे ड्रॉ करें। `annot=True` विकल्प प्रत्येक सेल पर सहसंबंध मान प्रिंट करता है:
+
+ ```python
+ correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()
+ sns.heatmap(correlations, annot=True, cmap="coolwarm")
+ ```
+
+ 
+
+ `1` (या `-1`) के करीब मान का अर्थ है कि कॉलम सशक्त रूप से _रेखीय_ संबंधित हैं। देखें कि कैसे `Low Price` और `High Price` लगभग पूरी तरह से संबंधित हैं। दूसरी ओर, `Month` केवल कमजोर रेखीय संबंध दिखाता है — भले ही उपर्युक्त बार चार्ट ने सितंबर और अक्टूबर में एक स्पष्ट मौसमी चरम को दिखाया हो। यह एक महत्वपूर्ण सबक है: सहसंबंध गुणांक केवल _सीधी_ रेखा वाले संबंधों को मापता है, इसलिए यह मौसमी या अन्यथा गैर-रेखीय पैटर्न को छिपा सकता है। ✅ यह उपयोगी क्यों है कि हीटमैप और बार चार्ट जैसे चार्ट दोनों को देखने के बाद यह तय करें कि कौन से कॉलम का उपयोग करना है?
+
+### Matplotlib या Seaborn?
+
+दोनों पुस्तकालय जानने योग्य हैं:
+
+- **Matplotlib** आपको चार्ट के प्रत्येक तत्व पर सूक्ष्म नियंत्रण देता है और यह लगभग हर अन्य पायथन प्लॉटिंग लाइब्रेरी की नींव है।
+- **Seaborn** उच्च-स्तरीय फ़ंक्शन और सांख्यिकीय चार्ट के लिए आकर्षक पूर्वनिर्धारित सेटिंग्स प्रदान करता है, सीधे डेटा फ्रेम के साथ काम करता है, और अन्वेषणात्मक डेटा विश्लेषण के लिए अक्सर तेज़ होता है।
- यह एक अधिक उपयोगी डेटा विज़ुअलाइज़ेशन है! ऐसा लगता है कि कद्दू की सबसे अधिक कीमत सितंबर और अक्टूबर में होती है। क्या यह आपकी अपेक्षा के अनुरूप है? क्यों या क्यों नहीं?
+एक सामान्य कार्यप्रवाह यह है कि आप जल्दी से अपने डेटा का पता लगाने के लिए Seaborn तक पहुंचें, फिर जब विवरण कस्टमाइज़ेशन की ज़रूरत हो तो Matplotlib का उपयोग करें।
---
## 🚀चुनौती
-Matplotlib द्वारा प्रदान किए गए विभिन्न प्रकार के विज़ुअलाइज़ेशन का अन्वेषण करें। कौन से प्रकार रिग्रेशन समस्याओं के लिए सबसे उपयुक्त हैं?
+Matplotlib और Seaborn जो विभिन्न प्रकार के विज़ुअलाइज़ेशन प्रदान करते हैं उन्हें एक्सप्लोर करें। कौन से प्रकार सबसे उपयुक्त हैं रिग्रेशन समस्याओं के लिए?
-## [पोस्ट-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
+## [पाठ-परिचय क्विज़](https://ff-quizzes.netlify.app/en/ml/)
## समीक्षा और स्व-अध्ययन
-डेटा को विज़ुअलाइज़ करने के कई तरीकों को देखें। उपलब्ध विभिन्न लाइब्रेरी की एक सूची बनाएं और नोट करें कि कौन सी लाइब्रेरी किस प्रकार के कार्यों के लिए सबसे अच्छी है, उदाहरण के लिए 2D विज़ुअलाइज़ेशन बनाम 3D विज़ुअलाइज़ेशन। आप क्या खोजते हैं?
+डेटा को विज़ुअलाइज़ करने के कई तरीकों को देखें। उपलब्ध विभिन्न लाइब्रेरी की सूची बनाएं और नोट करें कि कौन से कार्य के लिए सबसे उपयुक्त हैं, जैसे 2D विज़ुअलाइज़ेशन बनाम 3D विज़ुअलाइज़ेशन। आप क्या खोजते हैं?
## असाइनमेंट
-[विज़ुअलाइज़ेशन का अन्वेषण](assignment.md)
+[विज़ुअलाइज़ेशन की खोज](assignment.md)
---
-**अस्वीकरण**:
-यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को आधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।
\ No newline at end of file
+
+**अस्वीकरण**:
+इस दस्तावेज़ का अनुवाद AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या अशुद्धियाँ हो सकती हैं। मूल दस्तावेज़ अपनी मूल भाषा में ही प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।
+
\ No newline at end of file
diff --git a/translations/hi/2-Regression/2-Data/solution/notebook.ipynb b/translations/hi/2-Regression/2-Data/solution/notebook.ipynb
index 6df7d3bdd..250f0772a 100644
--- a/translations/hi/2-Regression/2-Data/solution/notebook.ipynb
+++ b/translations/hi/2-Regression/2-Data/solution/notebook.ipynb
@@ -3,7 +3,9 @@
{
"cell_type": "markdown",
"metadata": {},
- "source": []
+ "source": [
+ "## कद्दू के लिए रैखिक प्रतिगमन - पाठ 2\n"
+ ]
},
{
"cell_type": "code",
@@ -220,6 +222,7 @@
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
"pumpkins = pd.read_csv('../../data/US-pumpkins.csv')\n",
"\n",
"pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]\n",
@@ -383,18 +386,78 @@
"plt.ylabel(\"Pumpkin Price\")"
]
},
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Seaborn के साथ विज़ुअलाइज़ेशन\n",
+ "\n",
+ "[Seaborn](https://seaborn.pydata.org/) Matplotlib के ऊपर बनाया गया है और सीधे डेटा फ्रेम के साथ काम करता है, जिससे बहुत कम कोड के साथ आकर्षक सांख्यिकीय प्लॉट बनाना तेज़ हो जाता है।\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### संबंध दिखाने के लिए स्कैटर प्लॉट्स\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", kind=\"line\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### वितरण दिखाने के लिए बार चार्ट\n"
+ ]
+ },
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
- "source": []
+ "source": [
+ "sns.catplot(x=\"Month\", y=\"Price\", data=new_pumpkins, kind=\"bar\")"
+ ]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "\n---\n\n**अस्वीकरण**: \nयह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता सुनिश्चित करने का प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।\n"
+ "### सहसंबंध दिखाने के लिए हीटमैप्स\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()\n",
+ "sns.heatmap(correlations, annot=True, cmap=\"coolwarm\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "---\n\n\n**अस्वीकरण**:\nइस दस्तावेज़ का अनुवाद AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या अशुद्धियाँ हो सकती हैं। मूल दस्तावेज़ अपनी मूल भाषा में ही प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।\n\n"
]
}
],
@@ -424,13 +487,7 @@
"hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d"
}
},
- "orig_nbformat": 2,
- "coopTranslator": {
- "original_hash": "95726f0b8283628d5356a4f8eb8b4b76",
- "translation_date": "2025-09-04T01:36:57+00:00",
- "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
- "language_code": "hi"
- }
+ "orig_nbformat": 2
},
"nbformat": 4,
"nbformat_minor": 2
diff --git a/translations/hi/8-Reinforcement/1-QLearning/README.md b/translations/hi/8-Reinforcement/1-QLearning/README.md
index 6d7cfa9a7..bdffce9d3 100644
--- a/translations/hi/8-Reinforcement/1-QLearning/README.md
+++ b/translations/hi/8-Reinforcement/1-QLearning/README.md
@@ -1,47 +1,47 @@
-# परिचय: रिइंफोर्समेंट लर्निंग और Q-लर्निंग
+# सुदृढ़ीकरण शिक्षण और क्यू-लर्निंग का परिचय
-
-> स्केच नोट: [Tomomi Imura](https://www.twitter.com/girlie_mac)
+
+> स्केचनोट द्वारा [Tomomi Imura](https://www.twitter.com/girlie_mac)
-रिइंफोर्समेंट लर्निंग तीन महत्वपूर्ण अवधारणाओं पर आधारित है: एजेंट, कुछ स्टेट्स, और प्रत्येक स्टेट के लिए एक्शन का सेट। किसी निर्दिष्ट स्टेट में एक्शन को निष्पादित करके, एजेंट को एक इनाम दिया जाता है। फिर से सुपर मारियो गेम की कल्पना करें। आप मारियो हैं, आप एक गेम लेवल में हैं, और एक चट्टान के किनारे पर खड़े हैं। आपके ऊपर एक सिक्का है। आप मारियो हैं, एक गेम लेवल में, एक विशिष्ट स्थिति में ... यही आपका स्टेट है। दाईं ओर एक कदम बढ़ाना (एक्शन) आपको किनारे से नीचे गिरा देगा, और यह आपको कम अंक देगा। हालांकि, जंप बटन दबाने से आप एक पॉइंट स्कोर करेंगे और जीवित रहेंगे। यह एक सकारात्मक परिणाम है और आपको एक सकारात्मक अंक प्रदान करना चाहिए।
+सुदृढ़ीकरण शिक्षण में तीन महत्वपूर्ण अवधारणाएँ शामिल हैं: एजेंट, कुछ अवस्थाएं, और प्रत्येक अवस्था के लिए कुछ क्रियाएं। किसी विशिष्ट अवस्था में कोई क्रिया करके, एजेंट को पुरस्कार (रिवार्ड) दिया जाता है। फिर से सोचिए कंप्यूटर गेम सुपर मारियो के बारे में। आप मारियो हैं, आप एक गेम स्तर में हैं, एक चट्टान के किनारे खड़े हैं। आपके ऊपर एक सिक्का है। आप मारियो हैं, एक गेम स्तर में, एक विशिष्ट स्थान पर ... वह आपकी अवस्था है। दाईं ओर एक कदम बढ़ाना (एक क्रिया) आपको किनारे से नीचे गिरा देगा, और इसका आपको कम अंक मिलेगा। हालांकि, जंप बटन दबाने पर आप एक पॉइंट स्कोर करेंगे और ज़िंदा रहेंगे। यह एक सकारात्मक परिणाम है और इसके लिए आपको सकारात्मक अंक मिलना चाहिए।
-रिइंफोर्समेंट लर्निंग और एक सिम्युलेटर (गेम) का उपयोग करके, आप गेम खेलने का तरीका सीख सकते हैं ताकि आप जीवित रह सकें और अधिकतम पॉइंट्स स्कोर कर सकें।
+सुदृढ़ीकरण सीखने और एक सिम्युलेटर (गेम) का उपयोग करके, आप गेम को इस तरह खेलना सीख सकते हैं ताकि पुरस्कार को अधिकतम किया जा सके, अर्थात ज़िंदा रहना और अधिक से अधिक अंक जमा करना।
-[](https://www.youtube.com/watch?v=lDq_en8RNOo)
+[](https://www.youtube.com/watch?v=lDq_en8RNOo)
-> 🎥 ऊपर दी गई छवि पर क्लिक करें और Dmitry से रिइंफोर्समेंट लर्निंग के बारे में सुनें
+> 🎥 ऊपर चित्र पर क्लिक करें और Dmitry से सुदृढ़ीकरण शिक्षण पर चर्चा सुनें
## [प्री-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
-## आवश्यकताएँ और सेटअप
+## पूर्व आवश्यकताएँ और सेटअप
-इस पाठ में, हम Python में कुछ कोड के साथ प्रयोग करेंगे। आपको इस पाठ के Jupyter Notebook कोड को अपने कंप्यूटर पर या क्लाउड में कहीं भी चलाने में सक्षम होना चाहिए।
+इस पाठ में, हम Python में कुछ कोड के साथ प्रयोग करेंगे। आपको इस पाठ का Jupyter Notebook कोड अपने कंप्यूटर या क्लाउड में कहीं भी चला पाने में सक्षम होना चाहिए।
-आप [पाठ नोटबुक](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) खोल सकते हैं और इस पाठ को बनाने के लिए इसका अनुसरण कर सकते हैं।
+आप [पाठ नोटबुक](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) फ़ाइल भी प्राप्त करनी होगी, जो नोटबुक कोड में उपयोग की जाती है। इसे नोटबुक के समान डायरेक्टरी में जोड़ें।
+> **नोट:** यदि आप यह कोड क्लाउड से खोल रहे हैं, तो आपको [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) फाइल भी प्राप्त करनी होगी, जो नोटबुक के कोड में इस्तेमाल होती है। इसे नोटबुक के उसी डायरेक्टरी में जोड़ें।
## परिचय
-इस पाठ में, हम **[Peter and the Wolf](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)** की दुनिया का अन्वेषण करेंगे, जो एक रूसी संगीतकार [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev) की एक संगीत परी कथा से प्रेरित है। हम **रिइंफोर्समेंट लर्निंग** का उपयोग करेंगे ताकि पीटर अपने वातावरण का पता लगा सके, स्वादिष्ट सेब इकट्ठा कर सके और भेड़िये से बच सके।
+इस पाठ में, हम **[पीटर और वुल्फ](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)** की दुनिया का अन्वेषण करेंगे, जो रूसी संगीतकार, [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev) की एक संगीत परिकथा से प्रेरित है। हम **सुदृढ़ीकरण शिक्षण** का उपयोग करेंगे ताकि पीटर अपने पर्यावरण का अन्वेषण कर सके, स्वादिष्ट सेब इकट्ठा कर सके और भेड़िये से मिलना टाल सके।
-**रिइंफोर्समेंट लर्निंग** (RL) एक लर्निंग तकनीक है जो हमें कई प्रयोगों को चलाकर किसी **एजेंट** के **वातावरण** में इष्टतम व्यवहार सीखने की अनुमति देती है। इस वातावरण में एक एजेंट का कुछ **लक्ष्य** होना चाहिए, जिसे एक **इनाम फ़ंक्शन** द्वारा परिभाषित किया गया है।
+**सुदृढ़ीकरण शिक्षण** (RL) एक सीखने की तकनीक है जो हमें कई प्रयोग करके किसी **एजेंट** का किसी **पर्यावरण** में इष्टतम व्यवहार सीखने देती है। इस पर्यावरण में एजेंट का एक **लक्ष्य** होना चाहिए, जिसका निर्धारण एक **पुरस्कार फलन** द्वारा किया जाता है।
-## वातावरण
+## पर्यावरण
-सरलता के लिए, आइए पीटर की दुनिया को `width` x `height` आकार के एक वर्ग बोर्ड के रूप में मानें, जैसे:
+सरलता के लिए, आइए पीटर की दुनिया को `width` x `height` के एक वर्गाकार बोर्ड के रूप में मानते हैं, इस प्रकार:
-
+
-इस बोर्ड में प्रत्येक सेल निम्नलिखित में से एक हो सकता है:
+इस बोर्ड के प्रत्येक सेल में हो सकता है:
-* **जमीन**, जिस पर पीटर और अन्य जीव चल सकते हैं।
+* **भूमि**, जिस पर पीटर और अन्य जीव चल सकते हैं।
* **पानी**, जिस पर आप स्पष्ट रूप से नहीं चल सकते।
-* एक **पेड़** या **घास**, एक जगह जहां आप आराम कर सकते हैं।
-* एक **सेब**, जिसे पीटर खुशी से खोजेगा ताकि वह खुद को खिला सके।
-* एक **भेड़िया**, जो खतरनाक है और इससे बचा जाना चाहिए।
+* एक **पेड़** या **घास**, जहाँ आप आराम कर सकते हैं।
+* एक **सेब**, जो दर्शाता है कि पीटर अपने आप को खिलाने के लिए उसे पाकर खुश होगा।
+* एक **भेड़िया**, जो खतरनाक है और बचना चाहिए।
-एक अलग Python मॉड्यूल, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), इस वातावरण के साथ काम करने के लिए कोड को शामिल करता है। चूंकि यह कोड हमारे अवधारणाओं को समझने के लिए महत्वपूर्ण नहीं है, हम मॉड्यूल को आयात करेंगे और नमूना बोर्ड बनाने के लिए इसका उपयोग करेंगे (कोड ब्लॉक 1):
+एक अलग Python मॉड्यूल, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), इसमें इस पर्यावरण के साथ काम करने के लिए कोड है। क्योंकि यह कोड हमारे अवधारणाओं को समझने के लिए आवश्यक नहीं है, हम मॉड्यूल को इम्पोर्ट करेंगे और इसका उपयोग नमूना बोर्ड बनाने के लिए करेंगे (कोड ब्लॉक 1):
```python
from rlboard import *
@@ -52,63 +52,63 @@ m.randomize(seed=13)
m.plot()
```
-यह कोड ऊपर दिए गए चित्र के समान वातावरण का चित्र प्रिंट करेगा।
+यह कोड ऊपर के समान पर्यावरण की एक तस्वीर प्रिंट करेगा।
-## एक्शन और पॉलिसी
+## क्रियाएं और नीति
-हमारे उदाहरण में, पीटर का लक्ष्य सेब को खोजना होगा, जबकि भेड़िये और अन्य बाधाओं से बचना होगा। ऐसा करने के लिए, वह सेब को खोजने तक इधर-उधर चल सकता है।
+हमारे उदाहरण में, पीटर का लक्ष्य सेब ढूंढना होगा, जबकि भेड़िये और अन्य बाधाओं से बचना होगा। इसके लिए, वह मूल रूप से तब तक चल सकता है जब तक उसे सेब न मिल जाए।
-इसलिए, किसी भी स्थिति में, वह निम्नलिखित एक्शन में से एक चुन सकता है: ऊपर, नीचे, बाएं और दाएं।
+इसलिए, किसी भी स्थान पर, वह निम्नलिखित क्रियाओं में से एक चुन सकता है: ऊपर, नीचे, बाएँ और दाएँ।
-हम इन एक्शन को एक डिक्शनरी के रूप में परिभाषित करेंगे, और उन्हें संबंधित समन्वय परिवर्तनों के जोड़े से मैप करेंगे। उदाहरण के लिए, दाईं ओर बढ़ना (`R`) एक जोड़ी `(1,0)` के अनुरूप होगा। (कोड ब्लॉक 2):
+हम उन क्रियाओं को एक डिक्शनरी के रूप में परिभाषित करेंगे, और उन्हें संबंधित निर्देशांक परिवर्तनों के जोड़े से मैप करेंगे। उदाहरण के लिए, दाईं ओर जाना (`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()) }
```
-इस परिदृश्य की रणनीति और लक्ष्य को संक्षेप में कहें:
+संक्षेप में, इस परिदृश्य की रणनीति और लक्ष्य इस प्रकार हैं:
-- **रणनीति**, हमारे एजेंट (पीटर) की, एक तथाकथित **पॉलिसी** द्वारा परिभाषित की जाती है। पॉलिसी एक फ़ंक्शन है जो किसी भी दिए गए स्टेट पर एक्शन लौटाता है। हमारे मामले में, समस्या का स्टेट बोर्ड द्वारा दर्शाया गया है, जिसमें खिलाड़ी की वर्तमान स्थिति शामिल है।
+- **रणनीति**, हमारे एजेंट (पीटर) के लिए एक तथाकथित **नीति** द्वारा परिभाषित है। एक नीति एक फंक्शन है जो किसी भी ज्ञात अवस्था में क्रिया वापस करता है। हमारे मामले में, समस्या की स्थिति का प्रतिनिधित्व बोर्ड द्वारा किया जाता है, जिसमें खिलाड़ी का वर्तमान स्थान शामिल है।
-- **लक्ष्य**, रिइंफोर्समेंट लर्निंग का, अंततः एक अच्छी पॉलिसी सीखना है जो हमें समस्या को कुशलतापूर्वक हल करने की अनुमति देगा। हालांकि, एक आधार रेखा के रूप में, आइए सबसे सरल पॉलिसी पर विचार करें जिसे **रैंडम वॉक** कहा जाता है।
+- **लक्ष्य**, सुदृढ़ीकरण शिक्षण का उद्देश्य अंततः एक अच्छी नीति सीखना है जो हमें समस्या को कुशलतापूर्वक हल करने की अनुमति देगा। हालांकि, एक आधारभूत रूप में, चलिए सबसे सरल नीति जिसे हम कहते हैं **random walk** (यादृच्छिक चाल) को मानते हैं।
## रैंडम वॉक
-आइए पहले रैंडम वॉक रणनीति को लागू करके अपनी समस्या को हल करें। रैंडम वॉक के साथ, हम अनुमत एक्शन में से अगले एक्शन को यादृच्छिक रूप से चुनेंगे, जब तक कि हम सेब तक नहीं पहुंच जाते (कोड ब्लॉक 3)।
+पहले हम एक यादृच्छिक चाल रणनीति लागू करके हमारी समस्या को हल करेंगे। रैंडम वॉक के साथ, हम अनुमत क्रियाओं में से अगली क्रिया यादृच्छिक रूप से चुनेंगे, जब तक कि हम सेब तक न पहुँच जाएं (कोड ब्लॉक 3)।
-1. नीचे दिए गए कोड के साथ रैंडम वॉक लागू करें:
+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
+ n = 0 # कदमों की संख्या
+ # प्रारंभिक स्थिति सेट करें
if start_position:
m.human = start_position
else:
m.random_start()
while True:
if m.at() == Board.Cell.apple:
- return n # success!
+ return n # सफलता!
if m.at() in [Board.Cell.wolf, Board.Cell.water]:
- return -1 # eaten by wolf or drowned
+ return -1 # भेड़िये द्वारा खाया गया या डूबा हुआ
while True:
a = actions[policy(m)]
new_pos = m.move_pos(m.human,a)
if m.is_valid(new_pos) and m.at(new_pos)!=Board.Cell.water:
- m.move(a) # do the actual move
+ m.move(a) # वास्तविक चाल करें
break
n+=1
walk(m,random_policy)
```
- `walk` को कॉल करने से संबंधित पथ की लंबाई लौटनी चाहिए, जो एक रन से दूसरे रन में भिन्न हो सकती है।
+ `walk` कॉल संबंधित पथ की लंबाई लौटाएगी, जो रन के आधार पर भिन्न हो सकती है।
-1. वॉक प्रयोग को कई बार (कहें, 100) चलाएं, और परिणामी आँकड़े प्रिंट करें (कोड ब्लॉक 4):
+1. चल प्रयोग को कई बार (मान लें 100) चलाएं और परिणामी सांख्यिकी प्रिंट करें (कोड ब्लॉक 4):
```python
def print_statistics(policy):
@@ -125,17 +125,17 @@ action_idx = { a : i for i,a in enumerate(actions.keys()) }
print_statistics(random_policy)
```
- ध्यान दें कि पथ की औसत लंबाई लगभग 30-40 कदम है, जो काफी अधिक है, यह देखते हुए कि निकटतम सेब की औसत दूरी लगभग 5-6 कदम है।
+ ध्यान दें कि पथ की औसत लंबाई लगभग 30-40 कदम है, जो कि काफी अधिक है, जबकि निकटतम सेब की औसत दूरी लगभग 5-6 कदम है।
- आप यह भी देख सकते हैं कि रैंडम वॉक के दौरान पीटर की गति कैसी दिखती है:
+ आप यह भी देख सकते हैं कि रैंडम वॉक के दौरान पीटर की चाल कैसी दिखती है:
- 
+ 
-## इनाम फ़ंक्शन
+## पुरस्कार फ़ंक्शन
-हमारी पॉलिसी को अधिक बुद्धिमान बनाने के लिए, हमें यह समझने की आवश्यकता है कि कौन से कदम दूसरों की तुलना में "बेहतर" हैं। ऐसा करने के लिए, हमें अपना लक्ष्य परिभाषित करना होगा।
+हमारी नीति को अधिक बुद्धिमान बनाने के लिए, हमें समझना होगा कि कौन से कदम "बेहतर" हैं। इसके लिए, हमें अपना लक्ष्य परिभाषित करना होगा।
-लक्ष्य को एक **इनाम फ़ंक्शन** के संदर्भ में परिभाषित किया जा सकता है, जो प्रत्येक स्टेट के लिए कुछ स्कोर मान लौटाएगा। संख्या जितनी अधिक होगी, इनाम फ़ंक्शन उतना ही बेहतर होगा। (कोड ब्लॉक 5)
+लक्ष्य को एक **पुरस्कार फ़ंक्शन** के रूप में परिभाषित किया जा सकता है, जो प्रत्येक अवस्था के लिए कुछ स्कोर मूल्य लौटाएगा। मूल्य जितना अधिक होगा, पुरस्कार फ़ंक्शन उतना बेहतर होगा। (कोड ब्लॉक 5)
```python
move_reward = -0.1
@@ -154,39 +154,115 @@ def reward(m,pos=None):
return move_reward
```
-इनाम फ़ंक्शन के बारे में एक दिलचस्प बात यह है कि अधिकांश मामलों में, *हमें केवल खेल के अंत में एक महत्वपूर्ण इनाम दिया जाता है*। इसका मतलब है कि हमारे एल्गोरिदम को "अच्छे" कदमों को याद रखना चाहिए जो अंत में सकारात्मक इनाम की ओर ले जाते हैं, और उनकी महत्वता बढ़ानी चाहिए। इसी तरह, सभी कदम जो खराब परिणामों की ओर ले जाते हैं, उन्हें हतोत्साहित किया जाना चाहिए।
+पुरस्कार फ़ंक्शन के बारे में एक दिलचस्प बात यह है कि अधिकांश मामलों में, *हमें केवल खेल के अंत में महत्वपूर्ण पुरस्कार मिलता है*। इसका मतलब है कि हमारा एल्गोरिदम किसी तरह "अच्छे" कदमों को याद रखना चाहिए जो अंत में सकारात्मक पुरस्कार की ओर ले जाते हैं, और उनकी महत्ता बढ़ानी चाहिए। इसी तरह, सभी कदम जो बुरी परिणामों की ओर ले जाते हैं उन्हें हतोत्साहित किया जाना चाहिए।
-## Q-लर्निंग
+## क्यू-लर्निंग
-एक एल्गोरिदम जिसे हम यहां चर्चा करेंगे, उसे **Q-लर्निंग** कहा जाता है। इस एल्गोरिदम में, पॉलिसी को एक फ़ंक्शन (या डेटा संरचना) द्वारा परिभाषित किया जाता है जिसे **Q-टेबल** कहा जाता है। यह प्रत्येक स्टेट में दिए गए एक्शन की "अच्छाई" को रिकॉर्ड करता है।
+एक एल्गोरिदम जिसे हम यहाँ चर्चा करेंगे, उसे **क्यू-लर्निंग** कहा जाता है। इस एल्गोरिदम में, नीति एक फ़ंक्शन (या डेटा संरचना) द्वारा परिभाषित होती है जिसे **क्यू-टेबल** कहा जाता है। यह किसी निर्दिष्ट अवस्था में प्रत्येक क्रिया की "भलाइ" को रिकॉर्ड करता है।
-इसे Q-टेबल कहा जाता है क्योंकि इसे अक्सर एक टेबल या बहु-आयामी ऐरे के रूप में प्रस्तुत करना सुविधाजनक होता है। चूंकि हमारे बोर्ड का आयाम `width` x `height` है, हम Q-टेबल को `width` x `height` x `len(actions)` आकार के साथ एक numpy ऐरे का उपयोग करके प्रस्तुत कर सकते हैं: (कोड ब्लॉक 6)
+इसे क्यू-टेबल कहा जाता है क्योंकि इसे अक्सर एक तालिका या बहुआयामी सरणी के रूप में दर्शाना सुविधाजनक होता है। चूंकि हमारे बोर्ड के आकार `width` x `height` हैं, हम क्यू-टेबल को numpy सरणी के रूप में आकार `width` x `height` x `len(actions)` के साथ दर्शा सकते हैं: (कोड ब्लॉक 6)
```python
Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions)
```
-ध्यान दें कि हम Q-टेबल के सभी मानों को समान मान के साथ प्रारंभ करते हैं, हमारे मामले में - 0.25। यह "रैंडम वॉक" पॉलिसी के अनुरूप है, क्योंकि प्रत्येक स्टेट में सभी कदम समान रूप से अच्छे हैं। हम बोर्ड पर टेबल को विज़ुअलाइज़ करने के लिए Q-टेबल को `plot` फ़ंक्शन में पास कर सकते हैं: `m.plot(Q)`।
+ध्यान दें कि हम क्यू-टेबल के सभी मानों को समान मान के साथ प्रारंभ करते हैं, हमारे मामले में - 0.25। यह "यादृच्छिक चाल" नीति के अनुरूप है, क्योंकि प्रत्येक अवस्था में सभी चालें समान रूप से अच्छी हैं। हम इस क्यू-टेबल को `plot` फ़ंक्शन में पास कर सकते हैं ताकि बोर्ड पर इसे देखा जा सके: `m.plot(Q)`.
-
+
-प्रत्येक सेल के केंद्र में एक "तीर" होता है जो गति की पसंदीदा दिशा को इंगित करता है। चूंकि सभी दिशाएँ समान हैं, एक बिंदु प्रदर्शित होता है।
+प्रत्येक सेल के केंद्र में एक "तीर" होता है जो पसंदीदा आंदोलन दिशा को दर्शाता है। चूंकि सभी दिशाएँ समान हैं, इसलिए एक डॉट दिखाया जाता है।
-अब हमें सिमुलेशन चलाने, अपने वातावरण का पता लगाने, और Q-टेबल मानों के बेहतर वितरण को सीखने की आवश्यकता है, जो हमें सेब तक पहुंचने का रास्ता बहुत तेज़ी से खोजने की अनुमति देगा।
+अब हमें सिमुलेशन चलाना होगा, अपने पर्यावरण का अन्वेषण करना होगा, और क्यू-टेबल मानों का एक बेहतर वितरण सीखना होगा, जो हमें सेब तक तेजी से पहुंचने में मदद करेगा।
-## Q-लर्निंग का सार: बेलमैन समीकरण
+## क्यू-लर्निंग का सार: बेलमैन समीकरण
-एक बार जब हम चलना शुरू करते हैं, तो प्रत्येक एक्शन का एक संबंधित इनाम होगा, यानी हम सैद्धांतिक रूप से उच्चतम तत्काल इनाम के आधार पर अगले एक्शन का चयन कर सकते हैं। हालांकि, अधिकांश स्टेट्स में, यह कदम हमारे लक्ष्य को प्राप्त नहीं करेगा, और इसलिए हम तुरंत यह तय नहीं कर सकते कि कौन सी दिशा बेहतर है।
+जैसे ही हम चलना शुरू करेंगे, प्रत्येक क्रिया का एक संबंधित पुरस्कार होगा, अर्थात हम सैद्धांतिक रूप से सबसे उच्च तत्काल पुरस्कार के आधार पर अगली क्रिया चुन सकते हैं। लेकिन अधिकांश अवस्थाओं में, वह चाल हमारे लक्ष्य सेब तक पहुँचने को पूरा नहीं करेगी, इसलिए हम तुरंत नहीं तय कर सकते कि कौन सी दिशा बेहतर है।
-> याद रखें कि तत्काल परिणाम महत्वपूर्ण नहीं है, बल्कि अंतिम परिणाम है, जिसे हम सिमुलेशन के अंत में प्राप्त करेंगे।
+> याद रखें कि तत्काल परिणाम महत्वपूर्ण नहीं है, बल्कि अंतिम परिणाम महत्वपूर्ण है, जिसे हम सिमुलेशन के अंत में प्राप्त करेंगे।
-इस विलंबित इनाम को ध्यान में रखने के लिए, हमें **[डायनामिक प्रोग्रामिंग](https://en.wikipedia.org/wiki/Dynamic_programming)** के सिद्धांतों का उपयोग करने की आवश्यकता है, जो हमें अपनी समस्या के बारे में पुनरावर्ती रूप से सोचने की अनुमति देते हैं।
+इस विलंबित पुरस्कार को ध्यान में रखने के लिए, हमें **[डायनेमिक प्रोग्रामिंग](https://en.wikipedia.org/wiki/Dynamic_programming)** के सिद्धांतों का उपयोग करना होगा, जो हमें हमारी समस्या को पुनरावृत्तिमूलक रूप से सोचने की अनुमति देते हैं।
-मान लें कि हम अब स्टेट *s* पर हैं, और हम अगले स्टेट *s'* पर जाना चाहते हैं। ऐसा करने से, हमें तत्काल इनाम *r(s,a)* प्राप्त होगा, जिसे इनाम फ़ंक्शन द्वारा परिभाषित किया गया है, साथ ही कुछ भविष्य का इनाम भी। यदि हम मान लें कि हमारा Q-टेबल प्रत्येक एक्शन की "आकर्षकता" को सही ढंग से दर्शाता है, तो स्टेट *s'* पर हम एक्शन *a'* चुनेंगे जो *Q(s',a')* के अधिकतम मान के अनुरूप होगा। इस प्रकार, स्टेट *s* पर हमें मिलने वाला सबसे अच्छा संभावित भविष्य का इनाम `max`
+मान लीजिए हम अब अवस्था *s* में हैं, और हम अगली अवस्था *s'* में जाना चाहते हैं। ऐसा करने पर, हम तत्काल पुरस्कार *r(s,a)* प्राप्त करेंगे, जो पुरस्कार फ़ंक्शन द्वारा परिभाषित है, साथ ही कुछ भविष्य के पुरस्कार भी। यदि हम मान लें कि हमारा क्यू-टेबल प्रत्येक क्रिया की "आकर्षकता" को सही ढंग से दर्शाता है, तो अवस्था *s'* में हम ऐसी क्रिया *a* चुनेंगे जिसका मान अधिकतम होगा *Q(s',a')*। इस प्रकार, अवस्था *s* में हमारे लिए सबसे अच्छा संभव भविष्य का पुरस्कार `max`a'*Q(s',a')* होगा (यह अधिकतम सभी संभावित क्रियाओं *a'* पर अवस्था *s'* में लिया जाता है)।
-## नीति की जांच करना
+इससे क्यू-टेबल के मूल्य की गणना के लिए **बेलमैन सूत्र** मिलता है, जो अवस्था *s* में क्रिया *a* के लिए है:
-चूंकि Q-Table प्रत्येक स्थिति में प्रत्येक क्रिया की "आकर्षकता" को सूचीबद्ध करता है, इसे हमारे संसार में कुशल नेविगेशन को परिभाषित करने के लिए उपयोग करना काफी आसान है। सबसे सरल मामले में, हम उस क्रिया का चयन कर सकते हैं जो Q-Table में सबसे उच्च मान से मेल खाती है: (कोड ब्लॉक 9)
+
+
+यहाँ γ वह तथाकथित **छूट कारक** है जो यह निर्धारित करता है कि आपको वर्तमान पुरस्कार को भविष्य के पुरस्कार से कितनी प्राथमिकता देनी चाहिए।
+
+## सीखने का एल्गोरिदम
+
+उपरोक्त समीकरण के आधार पर, अब हम अपने सीखने वाले एल्गोरिदम के लिए छद्म-कोड लिख सकते हैं:
+
+* क्यू-टेबल Q को सभी अवस्थाओं और क्रियाओं के लिए समान मानों से आरंभ करें
+* सीखने की दर α ← 1 सेट करें
+* सिमुलेशन को कई बार दोहराएं
+ 1. यादृच्छिक स्थान से शुरू करें
+ 1. दोहराएं
+ 1. अवस्था *s* पर एक क्रिया *a* चुनें
+ 2. क्रिया निष्पादित करें, नई अवस्था *s'* में जाएं
+ 3. यदि हम खेल के अंत की स्थिति में पहुँच गए हैं, या कुल पुरस्कार बहुत कम है - सिमुलेशन बंद करें
+ 4. नई अवस्था पर पुरस्कार *r* गणना करें
+ 5. बेलमैन समीकरण के अनुसार क्यू-फ़ंक्शन अपडेट करें: *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ maxa'Q(s',a'))*
+ 6. *s* ← *s'*
+ 7. कुल पुरस्कार अपडेट करें और α घटाएं।
+
+## विवेचना बनाम अन्वेषण
+
+ऊपर के एल्गोरिदम में, हमने यह निर्दिष्ट नहीं किया कि हम चरण 2.1 में क्रिया कैसे चुनेंगे। यदि हम क्रियाओं को यादृच्छिक रूप से चुनते हैं, तो हम पर्यावरण का यादृच्छिक **अन्वेषण** करेंगे, और हमें अक्सर मरना पड़ सकता है, साथ ही हम उन क्षेत्रों की जांच भी करेंगे जहाँ हम आमतौर पर नहीं जाते। एक वैकल्पिक दृष्टिकोण यह होगा कि हम पहले से ज्ञात क्यू-टेबल मानों का **शोषण** करें, और इसलिए अवस्था *s* पर सबसे अच्छी क्रिया (जिसके क्यू-टेबल मान अधिक हैं) चुनें। हालांकि, यह हमें अन्य अवस्थाओं का अन्वेषण करने से रोकेगा, और संभवतः हम सर्वोत्कृष्ट समाधान नहीं पा सकेंगे।
+
+इसलिए, सबसे अच्छा तरीका यह है कि अन्वेषण और शोषण के बीच संतुलन बनाया जाए। इसे किया जा सकता है कि हम अवस्था *s* पर क्रिया को उन क्यू-टेबल मानों के अनुपात में चुनें। शुरुआत में, जब क्यू-टेबल के सभी मान समान होंगे, तो यह यादृच्छिक चयन के समान होगा, लेकिन जैसे-जैसे हम पर्यावरण के बारे में अधिक सीखेंगे, हम अधिक संभावना के साथ इष्टतम मार्ग का पालन करेंगे, जबकि एजेंट को कभी-कभी अनदेखे रास्ते चुनने की अनुमति भी देंगे।
+
+## Python कार्यान्वयन
+
+अब हम सीखने वाले एल्गोरिदम को लागू करने के लिए तैयार हैं। इसके पहले, हमें ऐसी फ़ंक्शन की भी आवश्यकता है जो क्यू-टेबल में मनमाने नंबरों को संबंधित क्रियाओं के लिए संभावनाओं के वेक्टर में बदल सके।
+
+1. `probs()` नामक फ़ंक्शन बनाएं:
+
+ ```python
+ def probs(v,eps=1e-4):
+ v = v-v.min()+eps
+ v = v/v.sum()
+ return v
+ ```
+
+ हम कुछ `eps` को मूल वेक्टर में जोड़ते हैं ताकि प्रारंभिक स्थिति में, जब वेक्टर के सभी घटक समान होते हैं, तो 0 से विभाजन से बचा जा सके।
+
+इसे 5000 प्रयोगों, जिन्हें **इपोक्स** भी कहा जाता है, के माध्यम से चलाएं: (कोड ब्लॉक 8)
+```python
+ for epoch in range(5000):
+
+ # प्रारंभिक बिंदु चुनें
+ m.random_start()
+
+ # यात्रा शुरू करें
+ n=0
+ cum_reward = 0
+ while True:
+ x,y = m.human
+ v = probs(Q[x,y])
+ a = random.choices(list(actions),weights=v)[0]
+ dpos = actions[a]
+ m.move(dpos,check_correctness=False) # हम खिलाड़ी को बोर्ड के बाहर जाने की अनुमति देते हैं, जो एपिसोड को समाप्त करता है
+ r = reward(m)
+ cum_reward += r
+ if r==end_reward or cum_reward < -1000:
+ lpath.append(n)
+ break
+ alpha = np.exp(-n / 10e5)
+ gamma = 0.5
+ ai = action_idx[a]
+ Q[x,y,ai] = (1 - alpha) * Q[x,y,ai] + alpha * (r + gamma * Q[x+dpos[0], y+dpos[1]].max())
+ n+=1
+```
+
+इस एल्गोरिदम को निष्पादित करने के बाद, क्यू-टेबल उन मानों के साथ अद्यतन हो जाएगा जो प्रत्येक चरण पर विभिन्न क्रियाओं की आकर्षकता को परिभाषित करते हैं। हम क्यू-टेबल को अपने बोर्ड पर चलने की इच्छित दिशा दिखाने वाले वेक्टर को प्रत्येक सेल पर प्लॉट करके विज़ुअलाइज़ कर सकते हैं। सरलता के लिए, हम तीर के सिर की जगह एक छोटा वृत्त बनाते हैं।
+
+
+
+## नीति की जांच
+
+चूंकि क्यू-टेबल प्रत्येक अवस्था में प्रत्येक क्रिया की "आकर्षकता" सूचिबद्ध करता है, इसका उपयोग हमारे विश्व में कुशल नेविगेशन को परिभाषित करने के लिए काफी सरल है। सबसे सरल मामले में, हम सबसे उच्च क्यू-टेबल मान वाले क्रिया का चयन कर सकते हैं: (कोड ब्लॉक 9)
```python
def qpolicy_strict(m):
@@ -198,17 +274,18 @@ def qpolicy_strict(m):
walk(m,qpolicy_strict)
```
-> यदि आप ऊपर दिए गए कोड को कई बार आज़माते हैं, तो आप देख सकते हैं कि कभी-कभी यह "अटक" जाता है, और आपको इसे रोकने के लिए नोटबुक में STOP बटन दबाना पड़ता है। ऐसा इसलिए होता है क्योंकि कुछ स्थितियों में दो अवस्थाएँ "एक-दूसरे की ओर इशारा करती हैं" इष्टतम Q-Value के संदर्भ में, जिससे एजेंट उन अवस्थाओं के बीच अनिश्चितकाल तक घूमता रहता है।
+
+> यदि आप ऊपर दिया गया कोड कई बार चलाते हैं, तो आप देख सकते हैं कि कभी-कभी यह "अटक" जाता है, और आपको इसे रोकने के लिए नोटबुक में STOP बटन दबाना पड़ता है। ऐसा इसलिए होता है क्योंकि ऐसी स्थितियां हो सकती हैं जब दो राज्य अनुकूल Q-मूल्य के संदर्भ में एक-दूसरे की "मुद्दा" करते हैं, जिस स्थिति में एजेंट अनंत काल तक उन राज्यों के बीच घूमता रहता है।
## 🚀चुनौती
-> **कार्य 1:** `walk` फ़ंक्शन को संशोधित करें ताकि पथ की अधिकतम लंबाई को एक निश्चित संख्या (जैसे, 100) तक सीमित किया जा सके, और ऊपर दिया गया कोड समय-समय पर इस मान को लौटाए।
+> **कार्य 1:** `walk` फ़ंक्शन को इस प्रकार संशोधित करें कि पथ की अधिकतम लंबाई एक निश्चित संख्या के चरणों (मान लीजिए, 100) तक सीमित हो, और ऊपर दिए गए कोड को समय-समय पर यह मान लौटाते हुए देखें।
-> **कार्य 2:** `walk` फ़ंक्शन को संशोधित करें ताकि वह उन स्थानों पर वापस न जाए जहाँ वह पहले ही जा चुका है। यह `walk` को लूपिंग से रोक देगा, लेकिन एजेंट अभी भी ऐसी जगह पर "फंस" सकता है जहाँ से वह बाहर नहीं निकल सकता।
+> **कार्य 2:** `walk` फ़ंक्शन को इस तरह बदलें कि यह उन स्थानों पर वापस न जाए जहां यह पहले ही जा चुका हो। इससे `walk` के लूप में फंसने से बचा जा सकेगा, हालांकि, एजेंट फिर भी एक ऐसे स्थान पर "फंस" सकता है जहाँ से वह निकल न सके।
## नेविगेशन
-एक बेहतर नेविगेशन नीति वह होगी जो हमने प्रशिक्षण के दौरान उपयोग की थी, जो शोषण और अन्वेषण को जोड़ती है। इस नीति में, हम प्रत्येक क्रिया को एक निश्चित संभावना के साथ चुनेंगे, जो Q-Table में मानों के अनुपात में होगी। यह रणनीति अभी भी एजेंट को पहले से खोजे गए स्थान पर वापस लौटने का कारण बन सकती है, लेकिन जैसा कि आप नीचे दिए गए कोड से देख सकते हैं, यह वांछित स्थान तक बहुत छोटे औसत पथ का परिणाम देती है (याद रखें कि `print_statistics` सिमुलेशन को 100 बार चलाता है): (कोड ब्लॉक 10)
+एक बेहतर नेविगेशन नीति वही होगी जिसका हमने प्रशिक्षण के दौरान उपयोग किया था, जो शोषण और अन्वेषण का संयोजन करती है। इस नीति में, हम प्रत्येक क्रिया को निश्चित संभावना के साथ चुनेंगे, जो Q-टेबल में मानों के अनुपात में होगी। यह रणनीति एजेंट को पहले से देखे गए स्थान पर वापस लौटने का कारण बन सकती है, लेकिन जैसा कि नीचे के कोड में देख सकते हैं, यह वांछित स्थान तक बहुत छोटा औसत पथ प्रदान करती है (ध्यान दें कि `print_statistics` सिमुलेशन को 100 बार चलाता है): (कोड ब्लॉक 10)
```python
def qpolicy(m):
@@ -220,28 +297,32 @@ def qpolicy(m):
print_statistics(qpolicy)
```
-इस कोड को चलाने के बाद, आपको पहले की तुलना में बहुत छोटा औसत पथ लंबाई प्राप्त करनी चाहिए, जो 3-6 की सीमा में होगी।
+इस कोड को चलाने के बाद, आपको पहले की तुलना में बहुत छोटा औसत पथ लंबाई प्राप्त होनी चाहिए, लगभग 3-6 के बीच।
## सीखने की प्रक्रिया की जांच
-जैसा कि हमने उल्लेख किया है, सीखने की प्रक्रिया समस्या स्थान की संरचना के बारे में प्राप्त ज्ञान के अन्वेषण और उपयोग के बीच संतुलन है। हमने देखा है कि सीखने के परिणाम (एजेंट को लक्ष्य तक पहुँचने के लिए छोटा पथ खोजने की क्षमता) में सुधार हुआ है, लेकिन यह देखना भी दिलचस्प है कि सीखने की प्रक्रिया के दौरान औसत पथ लंबाई कैसे व्यवहार करती है:
+जैसा कि हमने उल्लेख किया है, सीखने की प्रक्रिया समस्या स्थान की संरचना के बारे में प्राप्त ज्ञान के अन्वेषण और उपयोग के बीच संतुलन है। हमने देखा कि सीखने के परिणाम (एजेंट को लक्ष्य तक छोटा पथ खोजने में मदद करने की क्षमता) बेहतर हुए हैं, लेकिन यह देखना भी दिलचस्प है कि सीखने की प्रक्रिया के दौरान औसत पथ लंबाई कैसे व्यवहार करती है:
+
+
-## सीखने को निम्नलिखित रूप में संक्षेपित किया जा सकता है:
+सीखने को इस प्रकार संक्षेपित किया जा सकता है:
-- **औसत पथ लंबाई बढ़ती है**। यहाँ हम देखते हैं कि शुरुआत में औसत पथ लंबाई बढ़ती है। ऐसा संभवतः इसलिए होता है क्योंकि जब हमें पर्यावरण के बारे में कुछ भी पता नहीं होता, तो हम खराब अवस्थाओं, पानी या भेड़िये में फंसने की संभावना रखते हैं। जैसे-जैसे हम अधिक सीखते हैं और इस ज्ञान का उपयोग करना शुरू करते हैं, हम पर्यावरण का अधिक समय तक अन्वेषण कर सकते हैं, लेकिन हमें अभी भी सेबों के स्थान का सही पता नहीं होता।
+- **औसत पथ लंबाई बढ़ती है।** यहाँ हम देखते हैं कि पहले औसत पथ लंबाई बढ़ती है। यह संभवतः इसलिए होता है क्योंकि जब हमें पर्यावरण के बारे में कुछ पता नहीं होता, तो हम खराब राज्यों, पानी या भेड़िये में फंस सकते हैं। जैसे-जैसे हम अधिक सीखते हैं और इस ज्ञान का उपयोग करते हैं, हम पर्यावरण का अधिक अन्वेषण कर सकते हैं, लेकिन फिर भी हमें सेबों के स्थान के बारे में पूरी जानकारी नहीं होती।
-- **पथ लंबाई घटती है, जैसे-जैसे हम अधिक सीखते हैं**। एक बार जब हम पर्याप्त सीख लेते हैं, तो एजेंट के लिए लक्ष्य प्राप्त करना आसान हो जाता है, और पथ लंबाई घटने लगती है। हालांकि, हम अभी भी अन्वेषण के लिए खुले हैं, इसलिए हम अक्सर सबसे अच्छे पथ से दूर चले जाते हैं और नए विकल्पों का अन्वेषण करते हैं, जिससे पथ आदर्श से लंबा हो जाता है।
+- **जैसे-जैसे हम अधिक सीखते हैं, पथ लंबाई घटती है।** जब हम पर्याप्त सीख जाते हैं, तो एजेंट के लिए लक्ष्य प्राप्त करना आसान हो जाता है, और पथ लंबाई घटने लगती है। फिर भी, हम अन्वेषण के लिए खुले होते हैं, इसलिए हम अक्सर सर्वोत्तम पथ से भटक जाते हैं, और नए विकल्प खोजते हैं, जिससे पथ औप्टिमल से लंबा हो जाता है।
-- **लंबाई अचानक बढ़ जाती है**। जो हम इस ग्राफ पर भी देखते हैं वह यह है कि किसी बिंदु पर, लंबाई अचानक बढ़ जाती है। यह प्रक्रिया की अनिश्चित प्रकृति को इंगित करता है, और यह कि हम किसी बिंदु पर Q-Table गुणांक को नए मानों से अधिलेखित करके "खराब" कर सकते हैं। इसे आदर्श रूप से सीखने की दर को कम करके न्यूनतम किया जाना चाहिए (उदाहरण के लिए, प्रशिक्षण के अंत में, हम केवल Q-Table मानों को एक छोटे मान से समायोजित करते हैं)।
+- **लंबाई अचानक बढ़ जाती है।** इस ग्राफ़ पर हम यह भी देखते हैं कि कुछ बिंदु पर लंबाई अचानक बढ़ गई। यह प्रक्रिया की यादृच्छिक प्रकृति को दर्शाता है, और यह कि कभी-कभी हम Q-टेबल गुणांक को नए मानों से अधिलेखित करके "खराब" कर देते हैं। आदर्श रूप से, इसे सीखने की दर को घटाकर कम किया जाना चाहिए (उदाहरण के लिए, प्रशिक्षण के अंत में, हम केवल Q-टेबल मानों को थोड़े मान से समायोजित करते हैं)।
-कुल मिलाकर, यह याद रखना महत्वपूर्ण है कि सीखने की प्रक्रिया की सफलता और गुणवत्ता काफी हद तक पैरामीटर पर निर्भर करती है, जैसे सीखने की दर, सीखने की दर में कमी, और छूट कारक। इन्हें अक्सर **हाइपरपैरामीटर** कहा जाता है, ताकि उन्हें **पैरामीटर** से अलग किया जा सके, जिन्हें हम प्रशिक्षण के दौरान अनुकूलित करते हैं (उदाहरण के लिए, Q-Table गुणांक)। सबसे अच्छे हाइपरपैरामीटर मानों को खोजने की प्रक्रिया को **हाइपरपैरामीटर अनुकूलन** कहा जाता है, और यह एक अलग विषय के योग्य है।
+कुल मिलाकर, यह याद रखना महत्वपूर्ण है कि सीखने की प्रक्रिया की सफलता और गुणवत्ता काफी हद तक कुछ पैरामीटरों पर निर्भर करती है, जैसे कि सीखने की दर, सीखने की दर में कमी, और डिस्काउंट फैक्टर। इन्हें अक्सर **हाइपरपैरामीटर** कहा जाता है, ताकि उन्हें उन **पैरामीटरों** से अलग किया जा सके जिन्हें हम प्रशिक्षण के दौरान अनुकूलित करते हैं (उदाहरण के लिए, Q-टेबल गुणांक)। सबसे अच्छे हाइपरपैरामीटर मान खोजने की प्रक्रिया को **हाइपरपैरामीटर ऑप्टिमाइज़ेशन** कहा जाता है, और यह एक अलग विषय का हकदार है।
-## [पोस्ट-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
+## [प्रसारण के बाद क्विज़](https://ff-quizzes.netlify.app/en/ml/)
-## असाइनमेंट
-[एक अधिक यथार्थवादी संसार](assignment.md)
+## असाइनमेंट
+[एक अधिक यथार्थवादी दुनिया](assignment.md)
---
-**अस्वीकरण**:
-यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयासरत हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को आधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।
\ No newline at end of file
+
+**अस्वीकरण**:
+इस दस्तावेज़ का अनुवाद AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या अशुद्धियाँ हो सकती हैं। मूल दस्तावेज़ अपनी मूल भाषा में ही प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।
+
\ No newline at end of file
diff --git a/translations/hi/8-Reinforcement/2-Gym/README.md b/translations/hi/8-Reinforcement/2-Gym/README.md
index b5c4b3bb5..d935b8565 100644
--- a/translations/hi/8-Reinforcement/2-Gym/README.md
+++ b/translations/hi/8-Reinforcement/2-Gym/README.md
@@ -1,14 +1,34 @@
-## आवश्यकताएँ
+# कार्टपोल स्केटिंग
-इस पाठ में, हम **OpenAI Gym** नामक एक लाइब्रेरी का उपयोग करेंगे जो विभिन्न **पर्यावरणों** को सिमुलेट करती है। आप इस पाठ का कोड स्थानीय रूप से (जैसे Visual Studio Code से) चला सकते हैं, जिसमें सिमुलेशन एक नई विंडो में खुलेगा। ऑनलाइन कोड चलाते समय, आपको कोड में कुछ बदलाव करने की आवश्यकता हो सकती है, जैसा कि [यहां](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7) वर्णित है।
+पिछली पाठ में हमने जो समस्या हल की थी, वह एक खिलौना समस्या लग सकती है, जो वास्तविक जीवन के परिदृश्यों के लिए वास्तविक रूप से लागू नहीं होती। ऐसा नहीं है, क्योंकि कई वास्तविक दुनिया की समस्याएँ भी इस परिदृश्य को साझा करती हैं - जिसमें शतरंज या गो खेलना भी शामिल है। ये समान हैं, क्योंकि हमारे पास एक बोर्ड होता है जिसमें दिए गए नियम होते हैं और एक **अवकलित स्थिति** होती है।
+
+## [पूर्व-व्याख्यान क्विज़](https://ff-quizzes.netlify.app/en/ml/)
+
+## परिचय
+
+इस पाठ में हम Q-लर्निंग के समान सिद्धांतों को एक ऐसी समस्या पर लागू करेंगे जिसमें **सतत स्थिति** होती है, अर्थात ऐसी स्थिति जो एक या अधिक वास्तविक संख्याओं द्वारा दी जाती है। हम निम्नलिखित समस्या से निपटेंगे:
+
+> **समस्या**: यदि पीटर भालू से बचना चाहता है, तो उसे तेज़ चलना होगा। हम देखेंगे कि कैसे पीटर Q-लर्निंग का उपयोग करके स्केट करना सीख सकता है, खासकर संतुलन बनाए रखना।
+
+
+
+> पीटर और उसके दोस्त भालू से बचने के लिए रचनात्मक हो जाते हैं! छवि द्वारा [Jen Looper](https://twitter.com/jenlooper)
+
+हम संतुलन बनाए रखने के एक सरल संस्करण का उपयोग करेंगे जिसे **कार्टपोल** समस्या के रूप में जाना जाता है। कार्टपोल दुनिया में, हमारे पास एक क्षैतिज स्लाइडर होता है जो बाएं या दाएं स्थानांतरित हो सकता है, और लक्ष्य स्लाइडर के शीर्ष पर एक ऊर्ध्वाधर पोल का संतुलन बनाए रखना होता है।
+
+
+
+## पूर्वापेक्षाएं
+
+इस पाठ में, हम विभिन्न **परिसरों** का अनुकरण करने के लिए **OpenAI Gym** नामक पुस्तकालय का उपयोग करेंगे। आप इस पाठ के कोड को स्थानीय रूप से चला सकते हैं (उदा. Visual Studio Code से), उस स्थिति में अनुकरण एक नई विंडो में खुलेगा। ऑनलाइन कोड चलाते समय, आपको कोड में कुछ समायोजन करने पड़ सकते हैं, जैसा कि [यहाँ](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7) वर्णित है।
## OpenAI Gym
-पिछले पाठ में, खेल के नियम और स्थिति `Board` क्लास द्वारा दी गई थी जिसे हमने स्वयं परिभाषित किया था। यहां हम एक विशेष **सिमुलेशन पर्यावरण** का उपयोग करेंगे, जो बैलेंसिंग पोल के पीछे के भौतिकी को सिमुलेट करेगा। रिइंफोर्समेंट लर्निंग एल्गोरिदम को प्रशिक्षित करने के लिए सबसे लोकप्रिय सिमुलेशन पर्यावरणों में से एक [Gym](https://gym.openai.com/) है, जिसे [OpenAI](https://openai.com/) द्वारा बनाए रखा गया है। इस जिम का उपयोग करके हम विभिन्न **पर्यावरणों** को बना सकते हैं, जैसे कि कार्टपोल सिमुलेशन से लेकर Atari गेम्स तक।
+पिछली पाठ में, खेल के नियम और स्थिति `Board` वर्ग द्वारा दी गई थी जिसे हमने स्वयं परिभाषित किया था। यहाँ हम एक विशेष **अनुकरण पर्यावरण** का उपयोग करेंगे, जो संतुलन पोल के पीछे की भौतिकी का अनुकरण करेगा। प्रशिक्षण सुदृढीकरण लर्निंग एल्गोरिदम के लिए सबसे लोकप्रिय अनुकरण परिवेशों में से एक [Gym](https://gym.openai.com/) कहलाता है, जिसे [OpenAI](https://openai.com/) द्वारा रखरखाव किया जाता है। इस जिम का उपयोग करके हम विभिन्न **परिसर** बना सकते हैं, जैसे कार्टपोल अनुकरण से लेकर अटारी खेल तक।
-> **Note**: आप OpenAI Gym द्वारा उपलब्ध अन्य पर्यावरणों को [यहां](https://gym.openai.com/envs/#classic_control) देख सकते हैं।
+> **टिप्पणी**: आप OpenAI Gym के अन्य उपलब्ध परिसरों को [यहाँ](https://gym.openai.com/envs/#classic_control) देख सकते हैं।
-सबसे पहले, जिम को इंस्टॉल करें और आवश्यक लाइब्रेरी को इंपोर्ट करें (कोड ब्लॉक 1):
+पहले, चलिए जिम इंस्टॉल करें और आवश्यक पुस्तकालय आयात करें (कोड ब्लॉक 1):
```python
import sys
@@ -20,15 +40,15 @@ import numpy as np
import random
```
-## अभ्यास - कार्टपोल पर्यावरण को प्रारंभ करें
+## अभ्यास - कार्टपोल पर्यावरण आरंभ करें
-कार्टपोल बैलेंसिंग समस्या पर काम करने के लिए, हमें संबंधित पर्यावरण को प्रारंभ करना होगा। प्रत्येक पर्यावरण निम्नलिखित से जुड़ा होता है:
+कार्टपोल संतुलन समस्या पर काम करने के लिए, हमें संबंधित पर्यावरण आरंभ करना होगा। प्रत्येक पर्यावरण एक से जुड़ा होता है:
-- **Observation space** जो उस जानकारी की संरचना को परिभाषित करता है जो हमें पर्यावरण से प्राप्त होती है। कार्टपोल समस्या के लिए, हमें पोल की स्थिति, वेग और कुछ अन्य मान प्राप्त होते हैं।
+- **अवलोकन स्थान** जो उस जानकारी की संरचना को परिभाषित करता है जो हमें पर्यावरण से प्राप्त होती है। कार्टपोल समस्या में, हमें पोल की स्थिति, वेग और कुछ अन्य मान प्राप्त होते हैं।
-- **Action space** जो संभावित क्रियाओं को परिभाषित करता है। हमारे मामले में, एक्शन स्पेस डिस्क्रीट है और इसमें दो क्रियाएं शामिल हैं - **बाएं** और **दाएं**। (कोड ब्लॉक 2)
+- **कार्य स्थान** जो संभव क्रियाओं को परिभाषित करता है। हमारे मामले में, क्रिया स्थान अवकलित है, और इसमें दो क्रियाएं होती हैं - **बाएँ** और **दाएँ**। (कोड ब्लॉक 2)
-1. प्रारंभ करने के लिए, निम्नलिखित कोड टाइप करें:
+1. आरंभ करने के लिए, निम्नलिखित कोड टाइप करें:
```python
env = gym.make("CartPole-v1")
@@ -37,9 +57,9 @@ import random
print(env.action_space.sample())
```
-पर्यावरण कैसे काम करता है यह देखने के लिए, चलिए 100 चरणों के लिए एक छोटा सिमुलेशन चलाते हैं। प्रत्येक चरण में, हम एक क्रिया प्रदान करते हैं जिसे लिया जाना चाहिए - इस सिमुलेशन में हम बस `action_space` से एक क्रिया को रैंडमली चुनते हैं।
+पर्यावरण कैसे काम करता है यह देखने के लिए, चलिए 100 कदमों के लिए एक छोटा अनुकरण चलाते हैं। प्रत्येक कदम पर, हम एक क्रिया देते हैं जिसे लिया जाना है - इस अनुकरण में हम बस `action_space` से यादृच्छिक रूप से एक क्रिया चुनते हैं।
-1. नीचे दिए गए कोड को चलाएं और देखें कि इसका क्या परिणाम होता है।
+1. नीचे दिए गए कोड को चलाएँ और देखें कि इसका परिणाम क्या होता है।
✅ याद रखें कि इस कोड को स्थानीय Python इंस्टॉलेशन पर चलाना बेहतर है! (कोड ब्लॉक 3)
@@ -52,11 +72,11 @@ import random
env.close()
```
- आपको कुछ इस तरह की छवि दिखाई देनी चाहिए:
+ आपको कुछ ऐसा देखना चाहिए:
- 
+ 
-1. सिमुलेशन के दौरान, हमें यह तय करने के लिए ऑब्ज़र्वेशन प्राप्त करने की आवश्यकता होती है कि कैसे कार्य करना है। वास्तव में, स्टेप फंक्शन वर्तमान ऑब्ज़र्वेशन, एक रिवॉर्ड फंक्शन, और एक डन फ्लैग लौटाता है जो यह संकेत देता है कि सिमुलेशन जारी रखना समझदारी है या नहीं: (कोड ब्लॉक 4)
+1. अनुकरण के दौरान, हमें निर्णय लेने के लिए अवलोकन प्राप्त करना होता है। वास्तव में, step फ़ंक्शन वर्तमान अवलोकन, पुरस्कार फ़ंक्शन, और done फ़्लैग लौटाता है जो बताता है कि अनुकरण जारी रखना समझदारी है या नहीं: (कोड ब्लॉक 4)
```python
env.reset()
@@ -69,7 +89,7 @@ import random
env.close()
```
- आपको नोटबुक आउटपुट में कुछ इस तरह दिखाई देगा:
+ आपको नोटबुक आउटपुट में कुछ ऐसा दिखाई देगा:
```text
[ 0.03403272 -0.24301182 0.02669811 0.2895829 ] -> 1.0
@@ -82,11 +102,11 @@ import random
[ 0.17617249 0.35602306 -0.21873684 -0.90998894] -> 1.0
```
- सिमुलेशन के प्रत्येक चरण में लौटाए गए ऑब्ज़र्वेशन वेक्टर में निम्नलिखित मान होते हैं:
+ हर कदम पर लौटाए गए अवलोकन वेक्टर में निम्नलिखित मान शामिल हैं:
- कार्ट की स्थिति
- - कार्ट का वेग
+ - कार्ट की गति
- पोल का कोण
- - पोल का रोटेशन दर
+ - पोल की घूर्णन दर
1. उन संख्याओं के न्यूनतम और अधिकतम मान प्राप्त करें: (कोड ब्लॉक 5)
@@ -95,30 +115,30 @@ import random
print(env.observation_space.high)
```
- आप यह भी देख सकते हैं कि प्रत्येक सिमुलेशन चरण पर रिवॉर्ड मान हमेशा 1 होता है। ऐसा इसलिए है क्योंकि हमारा लक्ष्य जितना संभव हो उतना लंबे समय तक जीवित रहना है, यानी पोल को एक उचित वर्टिकल स्थिति में सबसे लंबे समय तक बनाए रखना।
+ आप यह भी नोटिस कर सकते हैं कि प्रत्येक अनुकरण कदम पर पुरस्कार मान हमेशा 1 होता है। ऐसा इसलिए है क्योंकि हमारा लक्ष्य यथासंभव लंबे समय तक जीवित रहना है, अर्थात पोल को यथासंभव लंबवत स्थिति में रखना।
- ✅ वास्तव में, यदि हम 100 लगातार प्रयासों में औसत रिवॉर्ड 195 प्राप्त करने में सफल होते हैं, तो कार्टपोल सिमुलेशन को हल किया हुआ माना जाता है।
+ ✅ वास्तव में, यदि हम 100 लगातार परीक्षणों में औसत पुरस्कार 195 प्राप्त करने में सक्षम हैं तो CartPole अनुकरण को हल माना जाता है।
-## स्थिति का डिस्क्रीटाइजेशन
+## स्थिति का वर्गीकरण
-Q-Learning में, हमें Q-Table बनानी होती है जो यह परिभाषित करती है कि प्रत्येक स्थिति में क्या करना है। ऐसा करने के लिए, हमें स्थिति को **डिस्क्रीट** बनाना होगा, अधिक सटीक रूप से, इसमें सीमित संख्या में डिस्क्रीट मान होने चाहिए। इसलिए, हमें किसी तरह से अपने ऑब्ज़र्वेशन को **डिस्क्रीटाइज** करना होगा, उन्हें सीमित सेट की स्थितियों में मैप करना होगा।
+Q-लर्निंग में, हमें Q-टेबल बनाना होता है जो प्रत्येक स्थिति में क्या करना है यह परिभाषित करता है। ऐसा करने के लिए, हमें स्थिति को **अवकलित** (Discreet) होना चाहिए, अर्थात इसे सीमित संख्या में वर्गीकृत मानों से बनाना होगा। इसलिए हमें किसी तरह हमारे अवलोकनों को **वर्गीकृत** करना होगा, जिससे वे सीमित राज्य सेट में मैप हो जाएं।
हम इसे करने के कुछ तरीके हैं:
-- **बिन्स में विभाजित करें**। यदि हमें किसी मान का अंतराल पता है, तो हम इस अंतराल को कई **बिन्स** में विभाजित कर सकते हैं, और फिर उस मान को उस बिन नंबर से बदल सकते हैं जिसमें वह आता है। इसे numpy के [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html) मेथड का उपयोग करके किया जा सकता है। इस मामले में, हम स्थिति का आकार सटीक रूप से जान पाएंगे, क्योंकि यह डिजिटलाइजेशन के लिए चुने गए बिन्स की संख्या पर निर्भर करेगा।
+- **बिन्स में विभाजित करें**। यदि हमें किसी मान के अंतराल का पता है, तो हम इस अंतराल को कई **बिन्स** में विभाजित कर सकते हैं, और फिर मान को उस बिन नंबर से बदल सकते हैं जिसमें वह आता है। यह numpy के [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html) मेथड का उपयोग करके किया जा सकता है। इस मामले में, हमें स्थिति का आकार ठीक से पता होगा, क्योंकि यह उन बिन्स की संख्या पर निर्भर करेगा जो हम डिजिटलीकरण के लिए चुनते हैं।
+
+✅ हम मानों को एक सीमित अंतराल (जैसे, -20 से 20) में लाने के लिए रैखिक इंटरपोलेशन कर सकते हैं, और फिर उन्हें गोल करके पूर्णांकों में बदल सकते हैं। इससे हमें स्थिति के आकार पर कम नियंत्रण मिलेगा, खासकर यदि हमें इनपुट मानों की सटीक रेंज ज्ञात न हो। उदाहरण के लिए, हमारे मामले में 4 में से 2 मानों के मूल्य सीमित नहीं हैं, जिसका अर्थ है कि स्थिति की अनंत संख्या हो सकती है।
-✅ हम लीनियर इंटरपोलेशन का उपयोग करके मानों को किसी सीमित अंतराल (जैसे, -20 से 20 तक) में ला सकते हैं, और फिर उन्हें राउंडिंग करके पूर्णांक में बदल सकते हैं। इससे स्थिति के आकार पर थोड़ा कम नियंत्रण मिलता है, खासकर यदि हमें इनपुट मानों की सटीक सीमाएं नहीं पता हों। उदाहरण के लिए, हमारे मामले में 4 में से 2 मानों की कोई ऊपरी/निचली सीमा नहीं है, जिससे असीमित संख्या में स्थितियां हो सकती हैं।
+हमारे उदाहरण में, हम दूसरे दृष्टिकोण के साथ जाएंगे। आप बाद में देखेंगे कि अपरिभाषित ऊपरी/नीचे की सीमाओं के बावजूद, ये मान बहुत कम ही किसी निश्चित सीमित अंतराल से बाहर जाते हैं, इसलिए अत्यधिक मानों वाली अवस्थाएँ बहुत दुर्लभ होंगी।
-हमारे उदाहरण में, हम दूसरे दृष्टिकोण का उपयोग करेंगे। जैसा कि आप बाद में देख सकते हैं, अपरिभाषित ऊपरी/निचली सीमाओं के बावजूद, वे मान शायद ही कभी कुछ सीमित अंतरालों के बाहर मान लेते हैं, इसलिए उन स्थितियों के साथ चरम मान बहुत दुर्लभ होंगे।
-
-1. यहां वह फंक्शन है जो हमारे मॉडल से ऑब्ज़र्वेशन लेगा और 4 पूर्णांक मानों के टपल को उत्पन्न करेगा: (कोड ब्लॉक 6)
+1. यहाँ वह फ़ंक्शन है जो हमारे मॉडल से अवलोकन लेकर 4 पूर्णांक मानों का एक टुपल बनाएगा: (कोड ब्लॉक 6)
```python
def discretize(x):
return tuple((x/np.array([0.25, 0.25, 0.01, 0.1])).astype(np.int))
```
-1. चलिए बिन्स का उपयोग करके डिस्क्रीटाइजेशन के दूसरे तरीके का भी पता लगाते हैं: (कोड ब्लॉक 7)
+1. चलिए बिन्स के उपयोग से एक और वर्गीकरण विधि का अन्वेषण करते हैं: (कोड ब्लॉक 7)
```python
def create_bins(i,num):
@@ -126,17 +146,17 @@ Q-Learning में, हमें Q-Table बनानी होती है
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
+ ints = [(-5,5),(-2,2),(-0.5,0.5),(-2,2)] # प्रत्येक पैरामीटर के लिए मानों के अंतराल
+ nbins = [20,20,10,10] # प्रत्येक पैरामीटर के लिए बिन की संख्या
bins = [create_bins(ints[i],nbins[i]) for i in range(4)]
def discretize_bins(x):
return tuple(np.digitize(x[i],bins[i]) for i in range(4))
```
-1. अब एक छोटा सिमुलेशन चलाएं और उन डिस्क्रीट पर्यावरण मानों का निरीक्षण करें। `discretize` और `discretize_bins` दोनों को आज़माने के लिए स्वतंत्र महसूस करें और देखें कि क्या कोई अंतर है।
+1. अब चलिए एक छोटा अनुकरण चलाते हैं और इन वर्गीकृत पर्यावरण मानों को देखें। आप `discretize` और `discretize_bins` दोनों को आज़मा सकते हैं और देख सकते हैं कि क्या कोई अंतर है।
- ✅ `discretize_bins` बिन नंबर लौटाता है, जो 0-आधारित होता है। इसलिए इनपुट वैरिएबल के मानों के आसपास 0 के लिए यह अंतराल के मध्य से संख्या (10) लौटाता है। `discretize` में, हमने आउटपुट मानों की रेंज की परवाह नहीं की, जिससे वे नकारात्मक हो सकते हैं, इसलिए स्थिति मान शिफ्ट नहीं होते हैं, और 0 का मतलब 0 होता है। (कोड ब्लॉक 8)
+ ✅ discretize_bins बिन नंबर लौटाता है, जो 0-आधारित है। इसलिए 0 के आसपास के इनपुट मानों के लिए यह मध्य अंतराल (10) का नंबर लौटाता है। वहीं discretize में हमने आउटपुट मानों की सीमा की परवाह नहीं की, जिससे मान नकारात्मक भी हो सकते हैं, इसलिए स्थिति मान विस्थापित नहीं होते और 0 का मतलब 0 होता है। (कोड ब्लॉक 8)
```python
env.reset()
@@ -150,15 +170,15 @@ Q-Learning में, हमें Q-Table बनानी होती है
env.close()
```
- ✅ यदि आप देखना चाहते हैं कि पर्यावरण कैसे निष्पादित होता है, तो env.render से शुरू होने वाली लाइन को अनकमेंट करें। अन्यथा आप इसे बैकग्राउंड में निष्पादित कर सकते हैं, जो तेज़ है। हम अपने Q-Learning प्रक्रिया के दौरान इस "अदृश्य" निष्पादन का उपयोग करेंगे।
+ ✅ यदि आप देखना चाहते हैं कि पर्यावरण कैसे चलता है, तो env.render से शुरू होने वाली लाइन की टिप्पणी हटा दें। अन्यथा आप इसे पृष्ठभूमि में चला सकते हैं, जो तेज होता है। Q-लर्निंग प्रक्रिया के दौरान हम इस "अदृश्य" निष्पादन का उपयोग करेंगे।
-## Q-Table की संरचना
+## Q-टेबल संरचना
-पिछले पाठ में, स्थिति 0 से 8 तक की संख्याओं की एक साधारण जोड़ी थी, और इसलिए Q-Table को numpy टेंसर द्वारा 8x8x2 के आकार के साथ प्रस्तुत करना सुविधाजनक था। यदि हम बिन्स डिस्क्रीटाइजेशन का उपयोग करते हैं, तो हमारे स्थिति वेक्टर का आकार भी ज्ञात है, इसलिए हम वही दृष्टिकोण अपना सकते हैं और स्थिति को 20x20x10x10x2 के आकार के ऐरे द्वारा प्रस्तुत कर सकते हैं (यहां 2 एक्शन स्पेस का आयाम है, और पहले आयाम ऑब्ज़र्वेशन स्पेस में प्रत्येक पैरामीटर के लिए उपयोग किए गए बिन्स की संख्या से संबंधित हैं)।
+पिछली पाठ में, स्थिति 0 से 8 की सरल जोड़ी थी, इसलिए Q-टेबल को 8x8x2 आकार के numpy टेन्सर द्वारा दर्शाना सुविधाजनक था। यदि हम बिन्स वर्गीकरण का उपयोग करें, तो हमारे स्थिति वेक्टर का आकार भी ज्ञात होगा, इसलिए हम इसी दृष्टिकोण का उपयोग कर सकते हैं और 20x20x10x10x2 आकार के एरे से स्थिति को दर्शा सकते हैं (यहाँ 2 क्रिया स्थान का आयाम है, और पहली आयाम पर्यवेक्षण स्थान के प्रत्येक पैरामीटर के लिए चुने गए बिन्स की संख्या के अनुरूप हैं)।
-हालांकि, कभी-कभी ऑब्ज़र्वेशन स्पेस के सटीक आयाम ज्ञात नहीं होते। `discretize` फंक्शन के मामले में, हम कभी भी यह सुनिश्चित नहीं कर सकते कि हमारी स्थिति निश्चित सीमाओं के भीतर रहती है, क्योंकि कुछ मूल मान बाउंड नहीं होते। इसलिए, हम थोड़ा अलग दृष्टिकोण अपनाएंगे और Q-Table को एक डिक्शनरी द्वारा प्रस्तुत करेंगे।
+हालाँकि, कई बार अवलोकन स्थान के सटीक आयाम ज्ञात नहीं होते। `discretize` फ़ंक्शन के मामले में, हम कभी सुनिश्चित नहीं हो सकते कि हमारी स्थिति निश्चित सीमाओं के भीतर रहती है या नहीं, क्योंकि कुछ मूल मानों पर कोई सीमा नहीं है। इसलिए, हम एक थोड़ा भिन्न दृष्टिकोण अपनाएंगे और Q-टेबल को एक शब्दकोश द्वारा दर्शाएंगे।
-1. *(state,action)* जोड़ी को डिक्शनरी की कुंजी के रूप में उपयोग करें, और मान Q-Table एंट्री मान से संबंधित होगा। (कोड ब्लॉक 9)
+1. * (स्थिति, क्रिया)* जोड़ी को शब्दकोश की कुंजी के रूप में उपयोग करें, और मान Q-टेबल प्रविष्टि मान के अनुरूप होगा। (कोड ब्लॉक 9)
```python
Q = {}
@@ -168,38 +188,38 @@ Q-Learning में, हमें Q-Table बनानी होती है
return [Q.get((state,a),0) for a in actions]
```
- यहां हमने एक फंक्शन `qvalues()` भी परिभाषित किया है, जो एक दिए गए स्थिति के लिए Q-Table मानों की सूची लौटाता है जो सभी संभावित क्रियाओं से संबंधित है। यदि Q-Table में एंट्री मौजूद नहीं है, तो हम डिफ़ॉल्ट रूप से 0 लौटाएंगे।
+ यहाँ हम `qvalues()` फ़ंक्शन भी परिभाषित करते हैं, जो दिए गए स्थिति के लिए सभी संभव क्रियाओं के Q-टेबल मानों की सूची लौटाता है। यदि प्रविष्टि Q-टेबल में मौजूद नहीं होती, तो हम डिफ़ॉल्ट रूप से 0 लौटाएंगे।
-## चलिए Q-Learning शुरू करें
+## चलिए Q-लर्निंग शुरू करें
-अब हम पीटर को बैलेंस करना सिखाने के लिए तैयार हैं!
+अब हम पीटर को संतुलन बनाए रखना सिखाने के लिए तैयार हैं!
1. सबसे पहले, कुछ हाइपरपैरामीटर सेट करें: (कोड ब्लॉक 10)
```python
- # hyperparameters
+ # हाइपरपैरामीटर
alpha = 0.3
gamma = 0.9
epsilon = 0.90
```
- यहां, `alpha` **लर्निंग रेट** है जो यह परिभाषित करता है कि हमें प्रत्येक चरण में Q-Table के वर्तमान मानों को किस हद तक समायोजित करना चाहिए। पिछले पाठ में हमने 1 से शुरुआत की थी, और फिर प्रशिक्षण के दौरान `alpha` को कम मानों में घटा दिया था। इस उदाहरण में हम इसे स्थिर रखेंगे केवल सादगी के लिए, और आप बाद में `alpha` मानों को समायोजित करने के साथ प्रयोग कर सकते हैं।
+ यहाँ, `alpha` **लर्निंग रेट** है जो यह परिभाषित करता है कि हमें प्रत्येक कदम पर Q-टेबल के वर्तमान मानों को कितना समायोजित करना चाहिए। पिछली पाठ में हमने इसे 1 से शुरू किया था, और प्रशिक्षण के दौरान `alpha` को कम किया था। इस उदाहरण में हम सरलता के लिए इसे स्थिर रखेंगे, और आप बाद में `alpha` मानों का समायोजन करके प्रयोग कर सकते हैं।
- `gamma` **डिस्काउंट फैक्टर** है जो यह दिखाता है कि हमें वर्तमान रिवॉर्ड की तुलना में भविष्य के रिवॉर्ड को किस हद तक प्राथमिकता देनी चाहिए।
+ `gamma` **डिस्काउंट फैक्टर** है जो यह दर्शाता है कि हमें वर्तमान पुरस्कार की तुलना में भविष्य के पुरस्कार को कितना प्राथमिकता देनी चाहिए।
- `epsilon` **एक्सप्लोरेशन/एक्सप्लॉइटेशन फैक्टर** है जो यह निर्धारित करता है कि हमें एक्सप्लोरेशन को एक्सप्लॉइटेशन पर या इसके विपरीत प्राथमिकता देनी चाहिए। हमारे एल्गोरिदम में, हम `epsilon` प्रतिशत मामलों में Q-Table मानों के अनुसार अगली क्रिया का चयन करेंगे, और शेष मामलों में हम एक रैंडम क्रिया निष्पादित करेंगे। यह हमें खोज स्थान के उन क्षेत्रों का पता लगाने की अनुमति देगा जिन्हें हमने पहले कभी नहीं देखा।
+ `epsilon` **अन्वेषण/शोषण फैक्टर** है जो निर्धारित करता है कि हमें अन्वेषण को शोषण की तुलना में प्राथमिकता देनी चाहिए या नहीं। हमारे एल्गोरिदम में, हम `epsilon` प्रतिशत मामलों में अगले क्रिया को Q-टेबल मानों के आधार पर चुनेंगे, और शेष मामलों में यादृच्छिक क्रिया निष्पादित करेंगे। यह हमें खोज स्थान के उन हिस्सों का अन्वेषण करने की अनुमति देता है जिन्हें हमने पहले कभी नहीं देखा।
- ✅ बैलेंसिंग के संदर्भ में - रैंडम क्रिया (एक्सप्लोरेशन) चुनना गलत दिशा में एक रैंडम पंच की तरह काम करेगा, और पोल को उन "गलतियों" से बैलेंस को पुनः प्राप्त करना सीखना होगा।
+ ✅ संतुलन के संदर्भ में - यादृच्छिक क्रिया चुनना (अन्वेषण) गलत दिशा में एक यादृच्छिक पंच की तरह होगा, और पोल को उन "गलतियों" से पुनः संतुलन सीखना होगा।
### एल्गोरिदम में सुधार करें
-हम पिछले पाठ से अपने एल्गोरिदम में दो सुधार कर सकते हैं:
-
-- **औसत संचयी रिवॉर्ड की गणना करें**, कई सिमुलेशन के दौरान। हम हर 5000 इटरेशन पर प्रगति को प्रिंट करेंगे, और उस समय अवधि के दौरान अपने संचयी रिवॉर्ड को औसत करेंगे। इसका मतलब है कि यदि हमें 195 से अधिक अंक मिलते हैं - तो हम समस्या को हल किया हुआ मान सकते हैं, और आवश्यक गुणवत्ता से भी बेहतर।
+हम पिछली पाठ के हमारे एल्गोरिदम में दो सुधार भी कर सकते हैं:
-- **अधिकतम औसत संचयी परिणाम की गणना करें**, `Qmax`, और हम उस परिणाम से संबंधित Q-Table को स्टोर करेंगे। जब आप प्रशिक्षण चलाते हैं तो आप देखेंगे कि कभी-कभी औसत संचयी परिणाम गिरने लगते हैं, और हम प्रशिक्षण के दौरान देखे गए सर्वश्रेष्ठ मॉडल से संबंधित Q-Table मानों को रखना चाहते हैं।
+- **औसत संचयी पुरस्कार की गणना करें**, कई अनुकरणों में। हम प्रत्येक 5000 पुनरावृत्ति पर प्रगति को प्रिंट करेंगे, और उस अवधि में हमारे संचयी पुरस्कार का औसत लेंगे। इसका अर्थ है कि यदि हमें 195 से अधिक अंक मिलते हैं - तो हम समस्या को हल माना सकते हैं, और वह भी अपेक्षित गुणवत्ता से बेहतर।
+
+- **अधिकतम औसत संचयी परिणाम** `Qmax` की गणना करें, और हम उस परिणाम से संबंधित Q-टेबल संग्रहीत करेंगे। जब आप प्रशिक्षण चलाएंगे तो आप नोटिस करेंगे कि कभी-कभी औसत संचयी परिणाम नीचे गिरना शुरू हो जाता है, और हम प्रशिक्षण के दौरान पाए गए सर्वोत्तम मॉडल से संबंधित Q-टेबल मान रखना चाहते हैं।
-1. प्रत्येक सिमुलेशन में सभी संचयी रिवॉर्ड को `rewards` वेक्टर में एकत्र करें ताकि आगे प्लॉटिंग की जा सके। (कोड ब्लॉक 11)
+1. आगे के प्लॉटिंग के लिए प्रत्येक अनुकरण में सभी संचयी पुरस्कार को `rewards` वेक्टर में संग्रहित करें। (कोड ब्लॉक 11)
```python
def probs(v,eps=1e-4):
@@ -214,15 +234,15 @@ Q-Learning में, हमें Q-Table बनानी होती है
obs = env.reset()
done = False
cum_reward=0
- # == do the simulation ==
+ # == सिमुलेशन करें ==
while not done:
s = discretize(obs)
if random.random() Qmax:
@@ -240,25 +260,25 @@ Q-Learning में, हमें Q-Table बनानी होती है
cum_rewards=[]
```
-आप इन परिणामों से क्या देख सकते हैं:
+आप इन परिणामों से क्या नोटिस कर सकते हैं:
-- **हमारे लक्ष्य के करीब**। हम 100+ लगातार सिमुलेशन रन में 195 संचयी रिवॉर्ड प्राप्त करने के लक्ष्य को प्राप्त करने के बहुत करीब हैं, या हमने वास्तव में इसे प्राप्त कर लिया है! भले ही हमें छोटे नंबर मिलें, हमें अभी भी पता नहीं है, क्योंकि हम 5000 रन पर औसत करते हैं, और औपचारिक मानदंड में केवल 100 रन की आवश्यकता होती है।
+- **हमारे लक्ष्य के करीब**। हम उन 100+ लगातार अनुकरणों में 195 संचयी पुरस्कार प्राप्त करने के लक्ष्य के बहुत करीब हैं, या हो सकता है कि वास्तव में इसे हासिल कर भी लिया हो! भले ही हमें छोटे अंक मिलें, हमें अभी नहीं पता क्योंकि हम 5000 रन के औसत ले रहे हैं, और केवल 100 रन की औपचारिक आवश्यकता है।
+
+- **पुरस्कार गिरना शुरू हो जाता है**। कभी-कभी पुरस्कार गिरना शुरू हो जाता है, जिसका अर्थ है कि हम पहले से सीखे गए मानों को Q-टेबल में खराब मानों से "बर्बाद" कर सकते हैं।
-- **रिवॉर्ड गिरने लगते हैं**। कभी-कभी रिवॉर्ड गिरने लगते हैं, जिसका मतलब है कि हम Q-Table में पहले से सीखे गए मानों को उन मानों से "नष्ट" कर सकते हैं जो स्थिति को खराब बनाते हैं।
+यह अवलोकन प्रशिक्षण प्रगति की प्लॉटिंग में अधिक स्पष्ट रूप से दिखाई देता है।
-यह अवलोकन अधिक स्पष्ट रूप से दिखाई देता है यदि हम प्रशिक्षण प्रगति को प्लॉट करें।
+## प्रशिक्षण प्रगति का प्लॉटिंग
-## प्रशिक्षण प्रगति का प्लॉट बनाना
-
-प्रशिक्षण के दौरान, हमने प्रत्येक इटरेशन में संचयी रिवॉर्ड मान को `rewards` वेक्टर में एकत्र किया। यहां यह कैसा दिखता है जब हम इसे इटरेशन नंबर के खिलाफ प्लॉट करते हैं:
+प्रशिक्षण के दौरान, हमने प्रत्येक पुनरावृत्ति पर संचयी पुरस्कार मान `rewards` वेक्टर में संग्रहित किया। जब हम इसे पुनरावृत्ति संख्या के विरुद्ध प्लॉट करते हैं तो यह इस प्रकार दिखता है:
```python
plt.plot(rewards)
```
-
+
-इस ग्राफ से कुछ भी बताना संभव नहीं है, क्योंकि स्टोकेस्टिक प्रशिक्षण प्रक्रिया की प्रकृति के कारण प्रशिक्षण सत्रों की लंबाई बहुत भिन्न होती है। इस ग्राफ को अधिक समझने योग्य बनाने के लिए, हम 100 के एक श्रृंखला पर **रनिंग एवरेज** की गणना कर सकते हैं। इसे `np.convolve` का उपयोग करके सुविधाजनक रूप से किया जा सकता है: (कोड ब्लॉक 12)
+इस ग्राफ से कुछ कहना संभव नहीं है, क्योंकि यादृच्छिक प्रशिक्षण प्रक्रिया की प्रकृति के कारण प्रशिक्षण सत्रों की लंबाई बहुत भिन्न होती है। इस ग्राफ को समझने के लिए, हम कई प्रयोगों पर चलती औसत (running average) निकाल सकते हैं, मान लें 100। यह `np.convolve` का उपयोग करके आसानी से किया जा सकता है: (कोड ब्लॉक 12)
```python
def running_average(x,window):
@@ -267,21 +287,24 @@ def running_average(x,window):
plt.plot(running_average(rewards,100))
```
-
+
+
+## हाइपरपैरामीटर में परिवर्तन
+
+सीखने को अधिक स्थिर बनाने के लिए, प्रशिक्षण के दौरान हमारे कुछ हाइपरपैरामीटर को समायोजित करना समझदारी होगी। विशेष रूप से:
+
+- **लर्निंग रेट** `alpha` के लिए, हम लगभग 1 के मान के साथ शुरू कर सकते हैं, और फिर इस पैरामीटर को निरंतर कम करते रह सकते हैं। समय के साथ, हम Q-टेबल में अच्छे प्रायिकता मान प्राप्त करेंगे, इसलिए हमें इन्हें थोड़ा समायोजित करना चाहिए, और पूरी तरह से नए मानों से अधिलेखित नहीं करना चाहिए।
-## हाइपरपैरामीटर बदलना
+- **epsilon बढ़ाएँ**। हम `epsilon` को धीरे-धीरे बढ़ा सकते हैं, ताकि कम अन्वेषण और अधिक शोषण हो सके। शायद यह समझदारी होगी कि हम `epsilon` को कम मान से शुरू करें, और लगभग 1 तक बढ़ाएँ।
-सीखने को अधिक स्थिर बनाने के लिए, प्रशिक्षण के दौरान हमारे कुछ हाइपरपैरामीटर को समायोजित करना समझ में आता है। विशेष रूप से:
+> **कार्य 1**: हाइपरपैरामीटर मानों के साथ प्रयोग करें और देखें कि क्या आप उच्च संचयी पुरस्कार प्राप्त कर सकते हैं। क्या आप 195 से ऊपर पहुँच रहे हैं?
-- **लर्निंग रेट** `alpha` के लिए, हम 1 के करीब मानों से शुरू कर सकते हैं, और फिर पैरामीटर को कम करते रह सकते हैं। समय के साथ, हमें Q-Table में अच्छे प्रायिकता मान मिलेंगे, और इसलिए हमें उन्हें थोड़ा समायोजित करना चाहिए, और नए मानों के साथ पूरी तरह से ओवरराइट नहीं करना चाहिए।
-- **epsilon बढ़ाएं**। हम `epsilon` को धीरे-धीरे बढ़ाना चाह सकते हैं, ताकि कम एक्सप्लोरेशन और अधिक एक्सप्लॉइटेशन करें। शायद कम `epsilon` मान से शुरू करना और इसे लगभग 1 तक बढ़ाना समझ में आता है।
-> **कार्य 1**: हाइपरपैरामीटर मानों के साथ प्रयोग करें और देखें कि क्या आप उच्च संचयी इनाम प्राप्त कर सकते हैं। क्या आप 195 से ऊपर प्राप्त कर रहे हैं?
-> **कार्य 2**: समस्या को औपचारिक रूप से हल करने के लिए, आपको 100 लगातार रन के दौरान 195 औसत इनाम प्राप्त करना होगा। प्रशिक्षण के दौरान इसे मापें और सुनिश्चित करें कि आपने समस्या को औपचारिक रूप से हल कर लिया है!
+> **कार्य 2**: समस्या को औपचारिक रूप से हल करने के लिए, आपको 100 लगातार प्रयासों में 195 औसत इनाम प्राप्त करना होगा। प्रशिक्षण के दौरान इसका मापन करें और सुनिश्चित करें कि आपने समस्या को औपचारिक रूप से हल कर लिया है!
-## परिणाम को क्रियान्वित होते हुए देखना
+## परिणाम को क्रियाशील रूप में देखना
-यह देखना दिलचस्प होगा कि प्रशिक्षित मॉडल कैसे व्यवहार करता है। चलिए सिमुलेशन चलाते हैं और प्रशिक्षण के दौरान उपयोग की गई वही एक्शन चयन रणनीति अपनाते हैं, Q-Table में प्रायिकता वितरण के अनुसार सैंपलिंग करते हुए: (कोड ब्लॉक 13)
+यह वास्तव में दिलचस्प होगा कि प्रशिक्षित मॉडल कैसे व्यवहार करता है। आइए सिमुलेशन चलाते हैं और प्रशिक्षण के दौरान इसी क्रिया चयन रणनीति का पालन करें, Q-टेबल में प्रायिकता वितरण के अनुसार सैंपलिंग करते हुए: (कोड ब्लॉक 13)
```python
obs = env.reset()
@@ -295,30 +318,32 @@ while not done:
env.close()
```
-आपको कुछ ऐसा दिखाई देना चाहिए:
+आपको कुछ इस तरह दिखाई देना चाहिए:
-
+
---
## 🚀चुनौती
-> **कार्य 3**: यहां, हम Q-Table की अंतिम प्रति का उपयोग कर रहे थे, जो शायद सबसे अच्छी न हो। याद रखें कि हमने सबसे अच्छा प्रदर्शन करने वाले Q-Table को `Qbest` वेरिएबल में संग्रहीत किया है! `Qbest` को `Q` पर कॉपी करके उसी उदाहरण को आज़माएं और देखें कि क्या आपको कोई अंतर दिखाई देता है।
+> **कार्य 3**: यहां, हम Q-टेबल की अंतिम प्रति का उपयोग कर रहे थे, जो संभवतः सबसे अच्छी प्रति नहीं हो सकती। याद रखें कि हमने सर्वश्रेष्ठ प्रदर्शन करने वाली Q-टेबल को `Qbest` नामक वेरिएबल में संग्रहीत किया है! `Qbest` को `Q` पर कॉपी करके उसी उदाहरण को सर्वश्रेष्ठ प्रदर्शन करने वाली Q-टेबल के साथ आजमाएं और देखें कि क्या आपको कोई अंतर महसूस होता है।
-> **कार्य 4**: यहां हम प्रत्येक चरण पर सबसे अच्छा एक्शन नहीं चुन रहे थे, बल्कि संबंधित प्रायिकता वितरण के साथ सैंपलिंग कर रहे थे। क्या हमेशा सबसे अच्छा एक्शन चुनना अधिक समझदारी होगी, जिसमें Q-Table का सबसे उच्च मान हो? यह `np.argmax` फ़ंक्शन का उपयोग करके किया जा सकता है, जो उच्चतम Q-Table मान के अनुरूप एक्शन नंबर का पता लगाता है। इस रणनीति को लागू करें और देखें कि क्या यह बैलेंसिंग में सुधार करता है।
+> **कार्य 4**: यहाँ हम प्रत्येक कदम पर हमेशा सबसे अच्छी क्रिया का चयन नहीं कर रहे थे, बल्कि संबंधित प्रायिकता वितरण के अनुसार सैंपलिंग कर रहे थे। क्या हमेशा सबसे अच्छी क्रिया का चयन करना, जिसमें सबसे उच्च Q-टेबल मान होता है, अधिक समझदारी होगी? इसे करने के लिए `np.argmax` फ़ंक्शन का उपयोग करें ताकि उच्चतम Q-टेबल मान के अनुरूप क्रिया संख्या पता चल सके। इस रणनीति को कार्यान्वित करें और देखें कि क्या इससे संतुलन में सुधार होता है।
-## [पोस्ट-लेक्चर क्विज़](https://ff-quizzes.netlify.app/en/ml/)
+## [पाठ के बाद क्विज़](https://ff-quizzes.netlify.app/en/ml/)
## असाइनमेंट
[माउंटेन कार को प्रशिक्षित करें](assignment.md)
## निष्कर्ष
-अब हमने यह सीख लिया है कि एजेंट्स को केवल एक इनाम फ़ंक्शन प्रदान करके, जो गेम की वांछित स्थिति को परिभाषित करता है, और उन्हें खोज स्थान को बुद्धिमानी से एक्सप्लोर करने का अवसर देकर अच्छे परिणाम प्राप्त करने के लिए प्रशिक्षित कैसे किया जाए। हमने Q-Learning एल्गोरिदम को डिस्क्रीट और कंटीन्यस एनवायरनमेंट्स के मामलों में सफलतापूर्वक लागू किया है, लेकिन डिस्क्रीट एक्शन्स के साथ।
+हमने अब यह सीख लिया है कि कैसे एजेंटों को एक ऐसा इनाम फंक्शन प्रदान करके जो खेल की इच्छित स्थिति को परिभाषित करता है, और उन्हें खोज क्षेत्र का बुद्धिमानी से अन्वेषण करने का अवसर देकर अच्छे परिणाम हासिल करने के लिए प्रशिक्षित किया जा सकता है। हमने Q-लर्निंग एल्गोरिदम को सफलतापूर्वक लागू किया है, जो डिसक्रेट और कंटीन्यूअस पर्यावरणों के मामलों में था, लेकिन डिसक्रेट क्रियाओं के साथ।
-यह भी अध्ययन करना महत्वपूर्ण है कि जब एक्शन स्टेट भी कंटीन्यस हो और जब ऑब्ज़र्वेशन स्पेस अधिक जटिल हो, जैसे कि एटारी गेम स्क्रीन की छवि। इन समस्याओं में अक्सर अच्छे परिणाम प्राप्त करने के लिए अधिक शक्तिशाली मशीन लर्निंग तकनीकों, जैसे कि न्यूरल नेटवर्क्स, का उपयोग करना आवश्यक होता है। ये अधिक उन्नत विषय हमारे आगामी उन्नत AI कोर्स का विषय हैं।
+यह भी महत्वपूर्ण है कि हम उन स्थितियों का अध्ययन करें जहां क्रिया स्थिति भी कंटीन्यूअस हो, और जब प्रेक्षण स्थान अधिक जटिल हो, जैसे कि अटारी गेम स्क्रीन की छवि। उन समस्याओं में हमें अक्सर बेहतर परिणाम प्राप्त करने के लिए अधिक शक्तिशाली मशीन लर्निंग तकनीकों, जैसे कि न्यूरल नेटवर्क्स का उपयोग करना पड़ता है। ये अधिक उन्नत विषय हमारे आगामी अधिक उन्नत AI पाठ्यक्रम का विषय हैं।
---
-**अस्वीकरण**:
-यह दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को आधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।
\ No newline at end of file
+
+**अस्वीकरण**:
+इस दस्तावेज़ का अनुवाद AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके किया गया है। जबकि हम सटीकता के लिए प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवादों में त्रुटियाँ या अशुद्धियाँ हो सकती हैं। मूल दस्तावेज़ अपनी मूल भाषा में ही प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम उत्तरदायी नहीं हैं।
+
\ No newline at end of file
diff --git a/translations/hr/.co-op-translator.json b/translations/hr/.co-op-translator.json
index f5a19d9b3..39da6f3cd 100644
--- a/translations/hr/.co-op-translator.json
+++ b/translations/hr/.co-op-translator.json
@@ -24,8 +24,8 @@
"language_code": "hr"
},
"1-Introduction/3-fairness/README.md": {
- "original_hash": "9a6b702d1437c0467e3c5c28d763dac2",
- "translation_date": "2025-09-05T12:37:22+00:00",
+ "original_hash": "0f00d72169a0d37eecfd16d71e01700a",
+ "translation_date": "2026-07-14T01:53:18+00:00",
"source_file": "1-Introduction/3-fairness/README.md",
"language_code": "hr"
},
@@ -54,8 +54,8 @@
"language_code": "hr"
},
"2-Regression/1-Tools/README.md": {
- "original_hash": "fa81d226c71d5af7a2cade31c1c92b88",
- "translation_date": "2025-09-05T11:40:33+00:00",
+ "original_hash": "0b8635427b582d03ea4ab7089b93e505",
+ "translation_date": "2026-07-14T01:50:51+00:00",
"source_file": "2-Regression/1-Tools/README.md",
"language_code": "hr"
},
@@ -72,8 +72,8 @@
"language_code": "hr"
},
"2-Regression/2-Data/README.md": {
- "original_hash": "7c077988328ebfe33b24d07945f16eca",
- "translation_date": "2025-09-05T11:45:44+00:00",
+ "original_hash": "a58b2c4d16c6b122643391745ac15af6",
+ "translation_date": "2026-07-14T01:51:39+00:00",
"source_file": "2-Regression/2-Data/README.md",
"language_code": "hr"
},
@@ -89,6 +89,12 @@
"source_file": "2-Regression/2-Data/solution/Julia/README.md",
"language_code": "hr"
},
+ "2-Regression/2-Data/solution/notebook.ipynb": {
+ "original_hash": "96b95f8cf473481f2f371de8156f1571",
+ "translation_date": "2026-07-14T01:38:03+00:00",
+ "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
+ "language_code": "hr"
+ },
"2-Regression/3-Linear/README.md": {
"original_hash": "8b776e731c35b171d316d01d0e7b1369",
"translation_date": "2026-04-26T18:47:29+00:00",
@@ -457,7 +463,7 @@
},
"8-Reinforcement/1-QLearning/README.md": {
"original_hash": "911efd5e595089000cb3c16fce1beab8",
- "translation_date": "2025-09-05T13:35:49+00:00",
+ "translation_date": "2026-07-14T01:52:29+00:00",
"source_file": "8-Reinforcement/1-QLearning/README.md",
"language_code": "hr"
},
@@ -581,6 +587,19 @@
"source_file": "TROUBLESHOOTING.md",
"language_code": "hr"
},
+ "__translation_failures__": {
+ "sketchnotes/LICENSE.md": {
+ "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f",
+ "source_file": "sketchnotes/LICENSE.md",
+ "language_code": "hr",
+ "failure_date": "2026-07-14T01:50:05+00:00",
+ "status": "failed",
+ "error_type": "TranslationIncompleteError",
+ "error_message": "Markdown translation remained incomplete for chunk 1.1.1 of 'LICENSE.md', and the chunk could not be split further.",
+ "translator_version": "0.20.0",
+ "failure_policy_version": 1
+ }
+ },
"docs/_sidebar.md": {
"original_hash": "68dd06c685f6ce840e0acfa313352e7c",
"translation_date": "2025-09-05T12:22:07+00:00",
diff --git a/translations/hr/1-Introduction/3-fairness/README.md b/translations/hr/1-Introduction/3-fairness/README.md
index 46665a834..25d90acaf 100644
--- a/translations/hr/1-Introduction/3-fairness/README.md
+++ b/translations/hr/1-Introduction/3-fairness/README.md
@@ -1,155 +1,167 @@
-# Izgradnja rješenja za strojno učenje s odgovornom umjetnom inteligencijom
-
-
+# Izgradnja rješenja strojnog učenja s odgovornim AI-jem
+
+
> Sketchnote autorice [Tomomi Imura](https://www.twitter.com/girlie_mac)
## [Kviz prije predavanja](https://ff-quizzes.netlify.app/en/ml/)
-
+
## Uvod
-U ovom kurikulumu počet ćete otkrivati kako strojno učenje može utjecati na naše svakodnevne živote. Već sada sustavi i modeli sudjeluju u svakodnevnim zadacima donošenja odluka, poput dijagnoza u zdravstvenoj skrbi, odobravanja kredita ili otkrivanja prijevara. Stoga je važno da ti modeli dobro funkcioniraju kako bi pružili pouzdane rezultate. Kao i svaka softverska aplikacija, sustavi umjetne inteligencije mogu podbaciti u ispunjavanju očekivanja ili imati neželjene ishode. Zato je ključno razumjeti i objasniti ponašanje AI modela.
+U ovom nastavnom programu počet ćete otkrivati kako strojno učenje može utjecati i utječe na naše svakodnevne živote. Čak i sada, sustavi i modeli sudjeluju u svakodnevnim odlukama, poput medicinskih dijagnoza, odobravanja kredita ili otkrivanja prijevara. Stoga je važno da ti modeli dobro funkcioniraju kako bi pružili rezultate koji su pouzdani. Baš kao i svaka softverska aplikacija, AI sustavi mogu razočarati ili imati neželjeni ishod. Zato je bitno razumjeti i objasniti ponašanje AI modela.
-Zamislite što se može dogoditi kada podaci koje koristite za izgradnju tih modela nedostaju određene demografske skupine, poput rase, spola, političkih stavova, religije, ili kada su te demografske skupine neproporcionalno zastupljene. Što ako se izlaz modela interpretira tako da favorizira određenu demografsku skupinu? Koje su posljedice za aplikaciju? Osim toga, što se događa kada model ima negativan ishod koji šteti ljudima? Tko je odgovoran za ponašanje AI sustava? Ovo su neka od pitanja koja ćemo istražiti u ovom kurikulumu.
+Zamislite što se može dogoditi kada podaci koje koristite za izradu tih modela nedostaju određenih demografskih skupina, poput rase, spola, političkog stava, religije, ili ako takve skupine neproporcionalno zastupaju. Što ako se izlaz modela tumaci u korist neke demografske skupine? Koja je posljedica za aplikaciju? Nadalje, što se događa kada model ima neželjeni ishod i štetan je za ljude? Tko je odgovoran za ponašanje AI sustava? To su neka od pitanja koja ćemo istražiti u ovom nastavnom programu.
-U ovoj lekciji ćete:
+U ovom ćete satu:
-- Povećati svijest o važnosti pravednosti u strojnome učenju i štetama povezanim s nepravednošću.
-- Upoznati se s praksom istraživanja odstupanja i neobičnih scenarija kako biste osigurali pouzdanost i sigurnost.
-- Steći razumijevanje o potrebi osnaživanja svih kroz dizajniranje inkluzivnih sustava.
-- Istražiti koliko je važno zaštititi privatnost i sigurnost podataka i ljudi.
-- Uvidjeti važnost pristupa "staklene kutije" za objašnjavanje ponašanja AI modela.
-- Biti svjesni kako je odgovornost ključna za izgradnju povjerenja u AI sustave.
+- Povećati svoju svijest o važnosti pravičnosti u strojnog učenja i štetama povezanim s pravičnošću.
+- Upoznati se s praksom istraživanja odstupanja i neuobičajenih scenarija kako bi se osigurala pouzdanost i sigurnost
+- Steći razumijevanje potrebe za osnaživanjem svih kroz dizajniranje inkluzivnih sustava
+- Istražiti koliko je vitalno zaštititi privatnost i sigurnost podataka i ljudi
+- Vidjeti važnost pristupa "staklene kutije" za objašnjavanje ponašanja AI modela
+- Biti svjestan kako je odgovornost ključna za izgradnju povjerenja u AI sustave
-## Preduvjeti
+## Preduvjet
-Kao preduvjet, molimo vas da završite "Principi odgovorne umjetne inteligencije" Learn Path i pogledate videozapis u nastavku na tu temu:
+Kao preduvjet, molimo da prođete "Principi odgovornog AI-ja" učenja i pogledate video u nastavku o toj temi:
-Saznajte više o odgovornoj umjetnoj inteligenciji prateći ovaj [Learning Path](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)
+Saznajte više o odgovornom AI-ju slijedeći ovaj [Učni put](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)
-[](https://youtu.be/dnC8-uUZXSc "Microsoftov pristup odgovornoj umjetnoj inteligenciji")
+[](https://youtu.be/dnC8-uUZXSc "Microsoftov pristup odgovornom AI-ju")
-> 🎥 Kliknite na sliku iznad za video: Microsoftov pristup odgovornoj umjetnoj inteligenciji
+> 🎥 Kliknite sliku gore za video: Microsoftov pristup odgovornom AI-ju
-## Pravednost
+## Pravičnost
-AI sustavi trebali bi tretirati sve ljude jednako i izbjegavati različito utjecanje na slične skupine ljudi. Na primjer, kada AI sustavi pružaju smjernice o medicinskom tretmanu, aplikacijama za kredite ili zapošljavanju, trebali bi davati iste preporuke svima sličnih simptoma, financijskih okolnosti ili profesionalnih kvalifikacija. Svaki od nas kao ljudi nosi naslijeđene pristranosti koje utječu na naše odluke i postupke. Te pristranosti mogu biti vidljive u podacima koje koristimo za treniranje AI sustava. Takva manipulacija ponekad se događa nenamjerno. Često je teško svjesno znati kada uvodite pristranost u podatke.
+AI sustavi trebaju prema svima postupati pravično i izbjegavati utjecaj na slične skupine ljudi na različite načine. Na primjer, kada AI sustavi daju smjernice o medicinskom liječenju, zahtjevima za kredit ili zaposlenje, trebaju davati iste preporuke svima sa sličnim simptomima, financijskim okolnostima ili stručnim kvalifikacijama. Svaki od nas kao ljudi nosi naslijeđene pristranosti koje utječu na naše odluke i postupke. Te se pristranosti mogu očitovati u podacima koje koristimo za školovanje AI sustava. Takva manipulacija ponekad se događa i nenamjerno. Često je teško svjesno znati kada uvodite pristranost u podatke.
-**"Nepravednost"** obuhvaća negativne utjecaje ili "štete" za skupinu ljudi, poput onih definiranih prema rasi, spolu, dobi ili statusu invaliditeta. Glavne štete povezane s pravednošću mogu se klasificirati kao:
+**"Nepravednost"** obuhvaća negativne utjecaje ili "štete" za skupinu ljudi, kao što su one definirane prema rasi, spolu, dobi ili statusu invalidnosti. Glavne štete povezane s pravičnošću mogu se klasificirati kao:
-- **Dodjela**, ako je, na primjer, spol ili etnička pripadnost favorizirana u odnosu na drugu.
-- **Kvaliteta usluge**. Ako trenirate podatke za jedan specifičan scenarij, ali stvarnost je mnogo složenija, to dovodi do loše izvedbe usluge. Na primjer, dozator sapuna koji ne može prepoznati ljude s tamnom kožom. [Referenca](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
-- **Omalovažavanje**. Nepravedno kritiziranje i označavanje nečega ili nekoga. Na primjer, tehnologija za označavanje slika neslavno je pogrešno označila slike tamnoputih ljudi kao gorile.
-- **Prekomjerna ili nedovoljna zastupljenost**. Ideja da određena skupina nije viđena u određenoj profesiji, a svaka usluga ili funkcija koja to nastavlja promovirati doprinosi šteti.
-- **Stereotipiziranje**. Povezivanje određene skupine s unaprijed dodijeljenim atributima. Na primjer, sustav za prevođenje između engleskog i turskog može imati netočnosti zbog riječi sa stereotipnim asocijacijama na spol.
+- **Dodjela**, ako se primjerice favorizira neki spol ili etnička skupina u odnosu na drugu.
+- **Kvaliteta usluge**. Ako ste obrađivali podatke za jedan određeni scenarij, ali je stvarnost puno složenija, to vodi do slabog kvalitativnog pružanja usluge. Na primjer, dozator sapuna koji nije mogao prepoznati ljude s tamnom puti. [Referenca](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
+- **Ocrnjivanje**. Nepravedno kritizirati i etiketirati nešto ili nekoga. Na primjer, tehnologija za označavanje slika zloglasno je pogrešno označila slike tamnoputih ljudi kao gorile.
+- **Prevelika ili premala zastupljenost**. Ideja je da neka skupina nije vidljiva u određenoj profesiji, i bilo koja usluga ili funkcija koja to nastavlja promovirati pridonosi šteti.
+- **Stereotipiziranje**. Povezivanje određene skupine s unaprijed dodijeljenim atributima. Na primjer, sustav za prevođenje između engleskog i turskog može imati netočnosti zbog riječi s stereotipnim povezivanjem s polom.
-
+
> prijevod na turski
-
+
> prijevod natrag na engleski
-Prilikom dizajniranja i testiranja AI sustava, moramo osigurati da AI bude pravedan i da nije programiran za donošenje pristranih ili diskriminatornih odluka, koje su zabranjene i ljudima. Osiguravanje pravednosti u AI i strojnome učenju ostaje složen sociotehnički izazov.
+Prilikom dizajniranja i testiranja AI sustava trebamo osigurati da AI bude pravičan i da nije programiran za donošenje pristranih ili diskriminirajućih odluka, što je ljudima također zabranjeno. Jamčenje pravičnosti u AI-ju i strojnog učenja i dalje je složen sociotehnički izazov.
### Pouzdanost i sigurnost
-Kako bismo izgradili povjerenje, AI sustavi moraju biti pouzdani, sigurni i dosljedni u normalnim i neočekivanim uvjetima. Važno je znati kako će se AI sustavi ponašati u raznim situacijama, posebno kada su u pitanju odstupanja. Prilikom izgradnje AI rješenja, potrebno je posvetiti značajnu pažnju tome kako se nositi s raznim okolnostima koje AI rješenja mogu susresti. Na primjer, samovozeći automobil mora staviti sigurnost ljudi kao glavni prioritet. Kao rezultat toga, AI koji pokreće automobil mora uzeti u obzir sve moguće scenarije s kojima se automobil može susresti, poput noći, oluja, snježnih mećava, djece koja trče preko ulice, kućnih ljubimaca, radova na cesti itd. Koliko dobro AI sustav može pouzdano i sigurno upravljati širokim rasponom uvjeta odražava razinu predviđanja koju je podatkovni znanstvenik ili AI programer uzeo u obzir tijekom dizajna ili testiranja sustava.
+Da bi izgradili povjerenje, AI sustavi trebaju biti pouzdani, sigurni i dosljedni u normalnim i neočekivanim uvjetima. Važno je znati kako će se AI sustavi ponašati u različitim situacijama, posebno u slučaju odstupanja. Prilikom izrade AI rješenja potrebno je posvetiti značajnu pažnju načinu rukovanja širokim spektrom okolnosti s kojima se AI rješenja mogu susresti. Na primjer, autonomni automobil mora sigurnost ljudi staviti na prvo mjesto. Kao rezultat, AI koji pokreće automobil mora uzeti u obzir sve moguće scenarije na koje bi automobil mogao naići, poput noći, oluja ili mećava, djece koja prelaze cestu, kućnih ljubimaca, cestovnih radova itd. Koliko dobro AI sustav može pouzdano i sigurno upravljati širokim rasponom uvjeta odražava razinu anticipacije koju je znanstvenik podataka ili AI programer imao tijekom dizajna ili testiranja sustava.
> [🎥 Kliknite ovdje za video: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
-### Inkluzivnost
+### Uključivost
-AI sustavi trebali bi biti dizajnirani tako da angažiraju i osnažuju sve ljude. Prilikom dizajniranja i implementacije AI sustava, podatkovni znanstvenici i AI programeri identificiraju i rješavaju potencijalne prepreke u sustavu koje bi mogle nenamjerno isključiti ljude. Na primjer, postoji 1 milijarda ljudi s invaliditetom diljem svijeta. S napretkom AI-a, oni mogu lakše pristupiti širokom rasponu informacija i prilika u svakodnevnom životu. Rješavanjem prepreka stvaraju se prilike za inovacije i razvoj AI proizvoda s boljim iskustvima koja koriste svima.
+AI sustavi trebaju biti dizajnirani tako da uključuju i osnažuju svakoga. Prilikom dizajniranja i implementacije AI sustava znanstvenici podataka i AI programeri prepoznaju i uklanjaju potencijalne prepreke u sustavu koje bi nenamjerno mogle isključiti ljude. Na primjer, oko milijardu ljudi u svijetu ima invaliditet. S napretkom AI-ja oni mogu lakše pristupiti širokom rasponu informacija i prilika u svakodnevnom životu. Uklanjanjem prepreka stvara se prilika za inovacije i razvoj AI proizvoda s boljim iskustvima od kojih svi imaju koristi.
-> [🎥 Kliknite ovdje za video: inkluzivnost u AI](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
+> [🎥 Kliknite ovdje za video: uključivost u AI](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
### Sigurnost i privatnost
-AI sustavi trebali bi biti sigurni i poštovati privatnost ljudi. Ljudi imaju manje povjerenja u sustave koji ugrožavaju njihovu privatnost, informacije ili živote. Prilikom treniranja modela strojnog učenja, oslanjamo se na podatke kako bismo postigli najbolje rezultate. Pritom se mora uzeti u obzir podrijetlo podataka i njihov integritet. Na primjer, jesu li podaci korisnički dostavljeni ili javno dostupni? Nadalje, dok radimo s podacima, ključno je razviti AI sustave koji mogu zaštititi povjerljive informacije i odoljeti napadima. Kako AI postaje sve prisutniji, zaštita privatnosti i osiguranje važnih osobnih i poslovnih informacija postaje sve kritičnija i složenija. Problemi privatnosti i sigurnosti podataka zahtijevaju posebnu pažnju za AI jer je pristup podacima ključan za to da AI sustavi donose točne i informirane predikcije i odluke o ljudima.
+AI sustavi trebaju biti sigurni i poštivati privatnost ljudi. Ljudi manje vjeruju sustavima koji ugrožavaju njihovu privatnost, informacije ili živote. Prilikom treniranja modela strojnog učenja oslanjamo se na podatke kako bismo proizveli najbolje rezultate. Pri tome treba uzeti u obzir porijeklo podataka i njihovu cjelovitost. Na primjer, jesu li podaci koje je korisnik dostavio ili su javno dostupni? Nadalje, tijekom rada s podacima bitno je razviti AI sustave koji mogu zaštititi povjerljive informacije i odoljeti napadima. Kako AI postaje sve češći, zaštita privatnosti i sigurnost važnih osobnih i poslovnih podataka postaju kritičniji i složeniji. Pitanja privatnosti i sigurnosti podataka zahtijevaju posebno pomnu pažnju u AI-ju jer je pristup podacima ključan za točno i informirano predviđanje i donošenje odluka o ljudima.
-> [🎥 Kliknite ovdje za video: sigurnost u AI](https://www.microsoft.com/videoplayer/embed/RE4voJF)
+> [🎥 Kliknite ovdje za video: sigurnost u AI-ju](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- Industrija je postigla značajan napredak u privatnosti i sigurnosti, potaknut značajno regulativama poput GDPR-a (Opća uredba o zaštiti podataka).
-- Ipak, s AI sustavima moramo priznati napetost između potrebe za više osobnih podataka kako bi sustavi bili osobniji i učinkovitiji – i privatnosti.
-- Kao i s pojavom povezanih računala putem interneta, također vidimo veliki porast broja sigurnosnih problema povezanih s AI-jem.
-- Istovremeno, vidimo da se AI koristi za poboljšanje sigurnosti. Na primjer, većina modernih antivirusnih skenera danas se pokreće AI heuristikom.
-- Moramo osigurati da naši procesi podatkovne znanosti skladno surađuju s najnovijim praksama privatnosti i sigurnosti.
+- Kao industrija postigli smo značajan napredak u privatnosti i sigurnosti, što je uvelike potaknuto regulativama poput GDPR-a (Opća uredba o zaštiti podataka).
+- Ipak, kod AI sustava moramo priznati napetost između potrebe za više osobnih podataka kako bi sustavi bili osobniji i učinkovitiji – i privatnosti.
+- Kao i kod pojave povezanih računala s internetom, vidimo i veliki porast sigurnosnih problema vezanih za AI.
+- Istodobno, vidi se da se AI koristi za poboljšanje sigurnosti. Na primjer, većina modernih antivirusnih skenera danas se temelji na AI heuristikama.
+- Trebamo osigurati da naši procesi znanosti o podacima skladno prate najnovije prakse privatnosti i sigurnosti.
-### Transparentnost
-AI sustavi trebali bi biti razumljivi. Ključni dio transparentnosti je objašnjavanje ponašanja AI sustava i njihovih komponenti. Poboljšanje razumijevanja AI sustava zahtijeva da dionici shvate kako i zašto funkcioniraju kako bi mogli identificirati potencijalne probleme s izvedbom, zabrinutosti za sigurnost i privatnost, pristranosti, isključujuće prakse ili neželjene ishode. Također vjerujemo da oni koji koriste AI sustave trebaju biti iskreni i otvoreni o tome kada, zašto i kako odlučuju implementirati te sustave, kao i o ograničenjima sustava koje koriste. Na primjer, ako banka koristi AI sustav za podršku svojim odlukama o kreditiranju potrošača, važno je ispitati ishode i razumjeti koji podaci utječu na preporuke sustava. Vlade počinju regulirati AI u različitim industrijama, pa podatkovni znanstvenici i organizacije moraju objasniti ispunjava li AI sustav regulatorne zahtjeve, posebno kada dođe do neželjenog ishoda.
+### Transparentnost
+AI sustavi trebaju biti razumljivi. Ključni dio transparentnosti je objašnjavanje ponašanja AI sustava i njihovih komponenti. Poboljšanje razumijevanja AI sustava zahtijeva da dionici shvate kako i zašto oni funkcioniraju kako bi mogli identificirati potencijalne probleme performansi, zabrinutosti oko sigurnosti i privatnosti, pristranosti, isključujuće prakse ili neželjene ishode. Također smatramo da oni koji koriste AI sustave trebaju biti iskreni i otvoreni o tome kada, zašto i kako odlučuju koristiti te sustave. Kao i o ograničenjima sustava koje koriste. Na primjer, ako banka koristi AI sustav za podršku odlukama o kreditiranju potrošača, važno je pregledati rezultate i razumjeti koji podaci utječu na preporuke sustava. Vlade počinju regulirati AI u svim industrijama, pa znanstvenici podataka i organizacije moraju objasniti zadovoljava li AI sustav regulatorne zahtjeve, posebno kada postoji neželjeni ishod.
-> [🎥 Kliknite ovdje za video: transparentnost u AI](https://www.microsoft.com/videoplayer/embed/RE4voJF)
+> [🎥 Kliknite ovdje za video: transparentnost u AI-ju](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- Budući da su AI sustavi toliko složeni, teško je razumjeti kako funkcioniraju i interpretirati rezultate.
+- Budući da su AI sustavi vrlo složeni, teško je razumjeti kako funkcioniraju i protumačiti rezultate.
- Taj nedostatak razumijevanja utječe na način na koji se ti sustavi upravljaju, operacionaliziraju i dokumentiraju.
-- Taj nedostatak razumijevanja još važnije utječe na odluke donesene na temelju rezultata koje ti sustavi proizvode.
+- Još važnije, taj nedostatak razumijevanja utječe na odluke koje se donose koristeći rezultate koje ti sustavi proizvode.
### Odgovornost
+
+Osobe koje dizajniraju i implementiraju AI sustave moraju biti odgovorne za njihovo funkcioniranje. Potreba za odgovornošću posebno je važna kod osjetljivih tehnologija poput prepoznavanja lica. Nedavno raste potražnja za tehnologijom prepoznavanja lica, osobito od strane policijskih organa koji uviđaju potencijal tehnologije u primjeni poput pronalaska nestale djece. Međutim, te se tehnologije potencijalno mogu koristiti od strane vlade da ugroze temeljna građanska prava, na primjer omogućavanjem kontinuiranog nadzora određenih osoba. Stoga znanstvenici podataka i organizacije moraju biti odgovorni za utjecaj svog AI sustava na pojedince ili društvo.
-Ljudi koji dizajniraju i implementiraju AI sustave moraju biti odgovorni za način na koji njihovi sustavi funkcioniraju. Potreba za odgovornošću posebno je važna kod osjetljivih tehnologija poput prepoznavanja lica. Nedavno je porasla potražnja za tehnologijom prepoznavanja lica, posebno od strane organizacija za provedbu zakona koje vide potencijal tehnologije u primjenama poput pronalaženja nestale djece. Međutim, te tehnologije potencijalno bi mogle biti korištene od strane vlada za ugrožavanje temeljnih sloboda građana, primjerice omogućavanjem kontinuiranog nadzora određenih pojedinaca. Stoga podatkovni znanstvenici i organizacije moraju biti odgovorni za način na koji njihov AI sustav utječe na pojedince ili društvo.
-
-[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoftov pristup odgovornoj umjetnoj inteligenciji")
+[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoftov pristup odgovornom AI-ju")
-> 🎥 Kliknite na sliku iznad za video: Upozorenja o masovnom nadzoru putem prepoznavanja lica
+> 🎥 Kliknite sliku gore za video: Upozorenja o masovnom nadzoru putem prepoznavanja lica
-Na kraju, jedno od najvećih pitanja za našu generaciju, kao prvu generaciju koja donosi AI u društvo, jest kako osigurati da računala ostanu odgovorna ljudima i kako osigurati da ljudi koji dizajniraju računala ostanu odgovorni svima ostalima.
+U konačnici, jedno od najvećih pitanja za naše generacije, kao prve generacije koje donose AI društvu, jest kako osigurati da računala ostanu odgovorna ljudima i kako osigurati da ljudi koji dizajniraju računala ostanu odgovorni svima ostalima.
## Procjena utjecaja
-Prije treniranja modela strojnog učenja, važno je provesti procjenu utjecaja kako biste razumjeli svrhu AI sustava; koja je namjeravana upotreba; gdje će biti implementiran; i tko će komunicirati sa sustavom. Ovo je korisno za recenzente ili testere koji procjenjuju sustav kako bi znali koje čimbenike uzeti u obzir prilikom identificiranja potencijalnih rizika i očekivanih posljedica.
+Prije treniranja modela strojnog učenja važno je provesti procjenu utjecaja kako bi se razumjela svrha AI sustava; čemu je namijenjen; gdje će se koristiti; i tko će komunicirati sa sustavom. To pomaže pregledavateljima ili testerima u procjeni na što treba obratiti pažnju pri identificiranju potencijalnih rizika i očekivanih posljedica.
-Sljedeća su područja fokusa prilikom provođenja procjene utjecaja:
+Sljedeća područja su fokus pri provođenju procjene utjecaja:
-* **Negativan utjecaj na pojedince**. Svijest o bilo kakvim ograničenjima ili zahtjevima, nepodržanoj upotrebi ili poznatim ograničenjima koja ometaju izvedbu sustava ključna je kako bi se osiguralo da sustav nije korišten na način koji bi mogao nanijeti štetu pojedincima.
-* **Zahtjevi za podatke**. Razumijevanje kako i gdje će sustav koristiti podatke omogućuje recenzentima da istraže sve zahtjeve za podatke na koje treba obratiti pažnju (npr. GDPR ili HIPPA regulative). Osim toga, provjerite je li izvor ili količina podataka dovoljna za treniranje.
-* **Sažetak utjecaja**. Prikupite popis potencijalnih šteta koje bi mogle nastati korištenjem sustava. Tijekom životnog ciklusa ML-a, provjerite jesu li identificirani problemi ublaženi ili riješeni.
-* **Primjenjivi ciljevi** za svaki od šest osnovnih principa. Procijenite jesu li ciljevi iz svakog principa ispunjeni i postoje li praznine.
+* **Neželjeni utjecaj na pojedince**. Svijest o bilo kakvim ograničenjima ili zahtjevima, nepodržanoj uporabi ili poznatim ograničenjima koja ometaju učinkovitost sustava ključna je da se sustav ne koristi na način koji bi mogao štetiti pojedincima.
+* **Zahtjevi za podatke**. Razumijevanje kako i gdje će sustav koristiti podatke omogućuje pregledavateljima da prouče moguće zahtjeve za podatke kojima treba obratiti pozornost (npr., GDPR ili HIPAA regulative o podacima). Također, treba razmotriti je li izvor ili količina podataka dovoljna za treniranje.
+* **Sažetak utjecaja**. Prikupiti popis potencijalnih šteta koje mogu proizaći iz korištenja sustava. Tijekom životnog ciklusa ML-a redovito se provjerava jesu li identificirani problemi ublaženi ili riješeni.
+* **Primjenjivi ciljevi** za svaki od šest osnovnih principa. Procijeniti zadovoljavaju li se ciljevi svakog principa i postoje li praznine.
-## Otklanjanje pogrešaka s odgovornom umjetnom inteligencijom
-Slično otklanjanju pogrešaka u softverskoj aplikaciji, otklanjanje pogrešaka u AI sustavu nužan je proces identificiranja i rješavanja problema u sustavu. Postoji mnogo čimbenika koji mogu utjecati na to da model ne funkcionira kako se očekuje ili odgovorno. Većina tradicionalnih metrika izvedbe modela su kvantitativni agregati izvedbe modela, što nije dovoljno za analizu kako model krši principe odgovorne umjetne inteligencije. Nadalje, model strojnog učenja je "crna kutija" koja otežava razumijevanje što pokreće njegov ishod ili pružanje objašnjenja kada pogriješi. Kasnije u ovom tečaju naučit ćemo kako koristiti nadzornu ploču odgovorne umjetne inteligencije za pomoć pri otklanjanju pogrešaka u AI sustavima. Nadzorna ploča pruža holistički alat za podatkovne znanstvenike i AI programere za obavljanje:
+## Debugging s odgovornim AI-jem
-* **Analize pogrešaka**. Identificiranje distribucije pogrešaka modela koje mogu utjecati na pravednost ili pouzdanost sustava.
-* **Pregleda modela**. Otkrivanje gdje postoje razlike u izvedbi modela među skupovima podataka.
-* **Analize podataka**. Razumijevanje distribucije podataka i identificiranje potencijalne pristranosti u podacima koja bi mogla dovesti do problema s pravednošću, inkluzivnošću i pouzdanošću.
-* **Interpretacije modela**. Razumijevanje što utječe ili utječe na predikcije modela. Ovo pomaže u objašnjavanju ponašanja modela, što je važno za transparentnost i odgovornost.
+Slično kao debugiranje softverske aplikacije, debugiranje AI sustava je potreban proces identificiranja i rješavanja problema u sustavu. Puno je čimbenika koji mogu utjecati na to da model ne radi prema očekivanjima ili nije odgovoran. Većina tradicionalnih metričkih pokazatelja performansi modela su kvantitativni zbrojevi učinkovitosti modela, koji nisu dovoljni za analizu kako model krši principe odgovornog AI-ja. Nadalje, model strojnog učenja je crna kutija što otežava razumijevanje što pokreće njegov ishod ili pruža objašnjenje kada pogriješi. Kasnije u ovom tečaju naučit ćemo kako koristiti Responsible AI nadzornu ploču za pomoć u debugiranju AI sustava. Nadzorna ploča pruža holistički alat za znanstvenike podataka i AI programere za izvođenje:
-## 🚀 Izazov
+* **Analize pogrešaka**. Za identifikaciju raspodjele pogrešaka modela koje mogu utjecati na pravičnost ili pouzdanost sustava.
+* **Pregled modela**. Za otkrivanje razlika u učinkovitosti modela među skupinama podataka.
+* **Analizu podataka**. Za razumijevanje raspodjele podataka i identifikaciju potencijalnih pristranosti u podacima koje bi mogle dovesti do problema pravičnosti, uključivosti i pouzdanosti.
+* **Interpretabilnost modela**. Za razumijevanje što utječe ili oblikuje predviđanja modela. Ovo pomaže pri objašnjavanju ponašanja modela što je važno za transparentnost i odgovornost.
-Kako bismo spriječili da se štete uopće uvedu, trebali bismo:
-- imati raznolikost pozadina i perspektiva među ljudima koji rade na sustavima
+## 🚀 Izazov
+
+Da bismo spriječili da se štete uopće jave, trebali bismo:
+
+- imati različita podrijetla i perspektive među ljudima koji rade na sustavima
- ulagati u skupove podataka koji odražavaju raznolikost našeg društva
-- razviti bolje metode tijekom životnog ciklusa strojnog učenja za otkrivanje i ispravljanje odgovorne umjetne inteligencije kada se pojavi
+- razvijati bolje metode kroz životni ciklus strojnog učenja za otkrivanje i ispravljanje odgovornog AI-ja kad se pojavi
+
+Razmislite o stvarnim scenarijima gdje nepouzdanost modela postaje očita u izgradnji i korištenju modela. Što još bismo trebali uzeti u obzir?
+
+## [Kviz nakon predavanja](https://ff-quizzes.netlify.app/en/ml/)
+
+## Pregled i samostalno učenje
+
-Razmislite o stvarnim scenarijima gdje je nepouzdanost modela očita u
-Pogledajte ovu radionicu za dublje razumijevanje tema:
+U ovoj lekciji naučili ste osnove pojmova pravednosti i nepravednosti u strojnome učenju.
+
+Pogledajte ovaj radionicu za dublje razumijevanje tema:
-- U potrazi za odgovornom umjetnom inteligencijom: Primjena principa u praksi od Besmire Nushi, Mehrnoosh Sameki i Amita Sharme
+- U potrazi za odgovornom umjetnom inteligencijom: Primjena principa u praksi by Besmira Nushi, Mehrnoosh Sameki i Amit Sharma
-[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: Otvoreni okvir za izgradnju odgovorne umjetne inteligencije")
+[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI")
-> 🎥 Kliknite na sliku iznad za video: RAI Toolbox: Otvoreni okvir za izgradnju odgovorne umjetne inteligencije od Besmire Nushi, Mehrnoosh Sameki i Amita Sharme
+> 🎥 Kliknite na gornju sliku za video: RAI Toolbox: Otvoreni okvir za izgradnju odgovorne umjetne inteligencije by Besmira Nushi, Mehrnoosh Sameki i Amit Sharma
-Također, pročitajte:
+Također, pročitajte:
-- Microsoftov centar resursa za odgovornu umjetnu inteligenciju: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
+- Microsoftov centar resursa za odgovornu umjetnu inteligenciju: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
-- Microsoftova FATE istraživačka grupa: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
+- Microsoftova istraživačka grupa FATE: [FATE: Poštenje, Odgovornost, Transparentnost i Etika u AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
-RAI Toolbox:
+RAI Toolbox:
- [Responsible AI Toolbox GitHub repozitorij](https://github.com/microsoft/responsible-ai-toolbox)
Pročitajte o alatima Azure Machine Learninga za osiguranje pravednosti:
-- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
+- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
## Zadatak
-[Istrazite RAI Toolbox](assignment.md)
+[Istražite RAI Toolbox](assignment.md)
---
-**Odricanje od odgovornosti**:
-Ovaj dokument je preveden korištenjem AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati mjerodavnim izvorom. Za ključne informacije preporučuje se profesionalni prijevod od strane stručnjaka. Ne preuzimamo odgovornost za bilo kakva nesporazuma ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda.
\ No newline at end of file
+
+**Napomena**:
+Ovaj dokument je preveden korištenjem AI prevoditeljskog servisa [Co-op Translator](https://github.com/Azure/co-op-translator). Iako težimo točnosti, imajte na umu da automatski prijevodi mogu sadržavati greške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za važne informacije preporuča se profesionalni ljudski prijevod. Nismo odgovorni za bilo kakva nesporazumevanja ili pogrešne interpretacije koje proizlaze iz korištenja ovog prijevoda.
+
\ No newline at end of file
diff --git a/translations/hr/2-Regression/1-Tools/README.md b/translations/hr/2-Regression/1-Tools/README.md
index 700be20d8..490e03e15 100644
--- a/translations/hr/2-Regression/1-Tools/README.md
+++ b/translations/hr/2-Regression/1-Tools/README.md
@@ -1,70 +1,70 @@
-# Početak rada s Pythonom i Scikit-learn za regresijske modele
+# Počnite s Pythonom i Scikit-learn za modele regresije
-
+
-> Sketchnote autorice [Tomomi Imura](https://www.twitter.com/girlie_mac)
+> Sketchnote autora [Tomomi Imura](https://www.twitter.com/girlie_mac)
-## [Kviz prije predavanja](https://ff-quizzes.netlify.app/en/ml/)
+## [Pre-lecture kviz](https://ff-quizzes.netlify.app/en/ml/)
-> ### [Ova lekcija je dostupna i na R jeziku!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
+> ### [Ova lekcija je dostupna na R!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
## Uvod
-U ove četiri lekcije otkrit ćete kako izgraditi regresijske modele. Uskoro ćemo razgovarati o tome za što se koriste. No prije nego što krenete, provjerite imate li sve potrebne alate za početak!
+U ove četiri lekcije otkrit ćete kako izgraditi regresijske modele. Uskoro ćemo razgovarati čemu oni služe. No prije nego što išta napravite, pobrinite se da imate odgovarajuće alate za početak procesa!
-U ovoj lekciji naučit ćete:
+U ovoj lekciji naučit ćete kako:
-- Kako konfigurirati svoje računalo za lokalne zadatke strojnog učenja.
-- Kako raditi s Jupyter bilježnicama.
-- Kako koristiti Scikit-learn, uključujući instalaciju.
-- Kako istražiti linearnu regresiju kroz praktičnu vježbu.
+- Konfigurirati svoje računalo za lokalne zadatke strojnog učenja.
+- Raditi s Jupyter Notebookovima.
+- Koristiti Scikit-learn, uključujući instalaciju.
+- Istražiti linearnu regresiju kroz praktičnu vježbu.
## Instalacije i konfiguracije
-[](https://youtu.be/-DfeD2k2Kj0 "ML za početnike - Pripremite alate za izgradnju modela strojnog učenja")
+[](https://youtu.be/-DfeD2k2Kj0 "ML za početnike - Postavite svoje alate spremne za izgradnju modela strojnog učenja")
-> 🎥 Kliknite na sliku iznad za kratki video o konfiguraciji vašeg računala za ML.
+> 🎥 Kliknite na gornju sliku za kratak video o konfiguriranju računala za ML.
-1. **Instalirajte Python**. Provjerite je li [Python](https://www.python.org/downloads/) instaliran na vašem računalu. Python ćete koristiti za mnoge zadatke vezane uz znanost o podacima i strojno učenje. Većina računalnih sustava već ima instaliran Python. Dostupni su i korisni [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) koji olakšavaju postavljanje za neke korisnike.
+1. **Instalirajte Python**. Provjerite je li [Python](https://www.python.org/downloads/) instaliran na vašem računalu. Python ćete koristiti za mnoge zadatke iz znanosti o podacima i strojnog učenja. Većina računarskih sustava već ima instaliran Python. Tu su i korisni [Python Coding Packovi](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) koji mogu olakšati postavljanje nekim korisnicima.
- Međutim, neka korištenja Pythona zahtijevaju jednu verziju softvera, dok druga zahtijevaju drugu verziju. Zbog toga je korisno raditi unutar [virtualnog okruženja](https://docs.python.org/3/library/venv.html).
+ Međutim, neke primjene Pythona zahtijevaju određenu verziju softvera, dok druge zahtijevaju drugu verziju. Zbog toga je korisno raditi unutar [virtualnog okruženja](https://docs.python.org/3/library/venv.html).
-2. **Instalirajte Visual Studio Code**. Provjerite imate li instaliran Visual Studio Code na svom računalu. Slijedite ove upute za [instalaciju Visual Studio Code-a](https://code.visualstudio.com/) za osnovnu instalaciju. U ovom ćete tečaju koristiti Python u Visual Studio Code-u, pa bi bilo korisno osvježiti znanje o tome kako [konfigurirati Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) za razvoj u Pythonu.
+2. **Instalirajte Visual Studio Code**. Pobrinite se da imate instaliran Visual Studio Code na računalu. Slijedite ove upute za [instalaciju Visual Studio Code](https://code.visualstudio.com/) za osnovnu instalaciju. U ovom ćete tečaju koristiti Python u Visual Studio Code-u, pa bi bilo korisno da se upoznate kako [konfigurirati Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) za razvoj u Pythonu.
- > Upoznajte se s Pythonom radeći kroz ovu kolekciju [Learn modula](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)
+ > Udobno se upoznajte s Pythonom radeći kroz ovu zbirku [Learn modula](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)
>
- > [](https://youtu.be/yyQM70vi7V8 "Postavljanje Pythona s Visual Studio Code-om")
+ > [](https://youtu.be/yyQM70vi7V8 "Postavljanje Pythona s Visual Studio Code")
>
- > 🎥 Kliknite na sliku iznad za video: korištenje Pythona unutar VS Code-a.
+ > 🎥 Kliknite na gornju sliku za video: korištenje Pythona unutar VS Code.
-3. **Instalirajte Scikit-learn**, slijedeći [ove upute](https://scikit-learn.org/stable/install.html). Budući da trebate osigurati korištenje Pythona 3, preporučuje se korištenje virtualnog okruženja. Napomena: ako ovu biblioteku instalirate na M1 Macu, na stranici iznad nalaze se posebne upute.
+3. **Instalirajte Scikit-learn** prema [ovim uputama](https://scikit-learn.org/stable/install.html). Budući da morate koristiti Python 3, preporučuje se rad u virtualnom okruženju. Ako instalirate ovu biblioteku na M1 Mac, postoje posebne upute na gore povezanom linku.
-4. **Instalirajte Jupyter Notebook**. Trebat ćete [instalirati Jupyter paket](https://pypi.org/project/jupyter/).
+1. **Instalirajte Jupyter Notebook**. Trebat ćete [instalirati Jupyter paket](https://pypi.org/project/jupyter/).
-## Vaše okruženje za autorstvo ML-a
+## Vaše razvojno okruženje za ML
-Koristit ćete **bilježnice** za razvoj svog Python koda i izradu modela strojnog učenja. Ova vrsta datoteke uobičajeni je alat za znanstvenike podataka, a prepoznat ćete ih po sufiksu ili ekstenziji `.ipynb`.
+Koristit ćete **notebookove** za razvoj vašeg Python koda i kreiranje modela strojnog učenja. Ova vrsta datoteke je uobičajeni alat za znanstvenike podataka, a može se prepoznati po nastavku `.ipynb`.
-Bilježnice su interaktivno okruženje koje omogućuje programeru da istovremeno piše kod i dodaje bilješke te dokumentaciju oko koda, što je vrlo korisno za eksperimentalne ili istraživačke projekte.
+Notebookovi su interaktivno okruženje koje omogućuje programeru da istovremeno piše kod i dodaje bilješke i dokumentaciju oko koda, što je vrlo korisno za eksperimentalne ili istraživačke projekte.
-[](https://youtu.be/7E-jC8FLA2E "ML za početnike - Postavljanje Jupyter bilježnica za početak izrade regresijskih modela")
+[](https://youtu.be/7E-jC8FLA2E "ML za početnike - Postavite Jupyter Notebookove za početak izgradnje regresijskih modela")
-> 🎥 Kliknite na sliku iznad za kratki video o ovoj vježbi.
+> 🎥 Kliknite na gornju sliku za kratak video vezano uz ovu vježbu.
-### Vježba - rad s bilježnicom
+### Vježba - rad s notebookom
U ovoj mapi pronaći ćete datoteku _notebook.ipynb_.
-1. Otvorite _notebook.ipynb_ u Visual Studio Code-u.
+1. Otvorite _notebook.ipynb_ u Visual Studio Code.
- Pokrenut će se Jupyter poslužitelj s Pythonom 3+. Pronaći ćete dijelove bilježnice koji se mogu `pokrenuti`, tj. dijelove koda. Možete pokrenuti blok koda odabirom ikone koja izgleda kao gumb za reprodukciju.
+ Pokrenut će se Jupyter server s Pythonom 3+. Naći ćete dijelove notebooka koje možete `pokrenuti`, odnosno zasebne dijelove koda. Kodni blok možete pokrenuti klikom na ikonu koja izgleda kao tipka play.
-2. Odaberite ikonu `md` i dodajte malo markdowna, te sljedeći tekst **# Dobrodošli u svoju bilježnicu**.
+1. Odaberite ikonu `md` i dodajte malo markdown teksta, a zatim unesite sljedeći tekst: **# Dobrodošli u svoj notebook**.
- Zatim dodajte malo Python koda.
+ Sljedeće, dodajte malo Python koda.
-3. Upišite **print('hello notebook')** u blok koda.
-4. Odaberite strelicu za pokretanje koda.
+1. Upišite **print('hello notebook')** u kodni blok.
+1. Kliknite strelicu za pokretanje koda.
Trebali biste vidjeti ispisanu izjavu:
@@ -72,49 +72,50 @@ U ovoj mapi pronaći ćete datoteku _notebook.ipynb_.
hello notebook
```
-
+
-Možete izmjenjivati svoj kod s komentarima kako biste sami dokumentirali bilježnicu.
+Kod možete isprekidati komentarima kako biste sami dokumentirali notebook.
-✅ Razmislite na trenutak koliko se radno okruženje web programera razlikuje od onog znanstvenika podataka.
+✅ Razmislite na trenutak koliko se radno okruženje web developera razlikuje od onog znanstvenika podataka.
-## Početak rada sa Scikit-learn
+## Pokretanje sa Scikit-learn
-Sada kada je Python postavljen u vašem lokalnom okruženju i osjećate se ugodno s Jupyter bilježnicama, upoznajmo se sa Scikit-learn (izgovara se `sci` kao u `science`). Scikit-learn pruža [opsežan API](https://scikit-learn.org/stable/modules/classes.html#api-ref) koji vam pomaže u obavljanju zadataka strojnog učenja.
+Sada kada je Python postavljen u vašem lokalnom okruženju i kada ste upoznati s Jupyter Notebookovima, upoznajmo se i sa Scikit-learnom (izgovara se `sci` kao u riječi `znanost`). Scikit-learn nudi [opširan API](https://scikit-learn.org/stable/modules/classes.html#api-ref) koji vam pomaže u izvođenju zadataka strojnog učenja.
-Prema njihovoj [web stranici](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn je biblioteka za strojno učenje otvorenog koda koja podržava nadzirano i nenadzirano učenje. Također pruža razne alate za prilagodbu modela, predobradu podataka, odabir modela i evaluaciju, te mnoge druge korisne funkcije."
+Prema njihovoj [web stranici](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn je biblioteka strojnog učenja otvorenog koda koja podržava nadzirano i nenadzirano učenje. Također pruža različite alate za prilagođavanje modela, prethodnu obradu podataka, izbor i evaluaciju modela te mnoge druge korisnosti."
-U ovom tečaju koristit ćete Scikit-learn i druge alate za izgradnju modela strojnog učenja za obavljanje onoga što nazivamo 'tradicionalnim zadacima strojnog učenja'. Namjerno smo izbjegli neuronske mreže i duboko učenje jer su bolje obrađeni u našem nadolazećem kurikulumu 'AI za početnike'.
+U ovom tečaju koristiti ćete Scikit-learn i druge alate za izgradnju modela strojnog učenja za ono što zovemo 'tradicionalni zadaci strojnog učenja'. Namjerno smo izbjegli neuronske mreže i duboko učenje jer su bolje obrađeni u našem nadolazećem kurikulumu 'AI za početnike'.
-Scikit-learn olakšava izgradnju modela i njihovu evaluaciju za upotrebu. Primarno je fokusiran na korištenje numeričkih podataka i sadrži nekoliko gotovih skupova podataka za učenje. Također uključuje unaprijed izgrađene modele koje studenti mogu isprobati. Istražimo proces učitavanja unaprijed pripremljenih podataka i korištenja ugrađenog procjenitelja za prvi ML model sa Scikit-learnom koristeći osnovne podatke.
+Scikit-learn olakšava izgradnju i evaluaciju modela za upotrebu. Primarno je fokusiran na numeričke podatke i sadrži nekoliko gotovih datasetova za učenje. Uključuje i unaprijed izgrađene modele koje studenti mogu isprobati. Istražimo proces učitavanja prethodno pripremljenih podataka i korištenje ugrađenog estimator - prvog ML modela sa Scikit-lernom s osnovnim podacima.
-## Vježba - vaša prva Scikit-learn bilježnica
+## Vježba - vaš prvi Scikit-learn notebook
+
+> Ovaj je vodič inspiriran [primjerom linearne regresije](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) na Scikit-learn web stranici.
-> Ovaj je vodič inspiriran [primjerom linearne regresije](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) na web stranici Scikit-learn.
[](https://youtu.be/2xkXL5EUpS0 "ML za početnike - Vaš prvi projekt linearne regresije u Pythonu")
-> 🎥 Kliknite na sliku iznad za kratki video o ovoj vježbi.
+> 🎥 Kliknite na gornju sliku za kratak video vezano uz ovu vježbu.
-U datoteci _notebook.ipynb_ povezanoj s ovom lekcijom, izbrišite sve ćelije pritiskom na ikonu 'kanta za smeće'.
+U datoteci _notebook.ipynb_ povezanoj s ovom lekcijom, očistite sve ćelije pritiskom na ikonu 'kanta za smeće'.
-U ovom ćete odjeljku raditi s malim skupom podataka o dijabetesu koji je ugrađen u Scikit-learn za potrebe učenja. Zamislite da želite testirati tretman za pacijente s dijabetesom. Modeli strojnog učenja mogli bi vam pomoći odrediti koji bi pacijenti bolje reagirali na tretman, na temelju kombinacija varijabli. Čak i vrlo osnovni regresijski model, kada se vizualizira, mogao bi pokazati informacije o varijablama koje bi vam pomogle organizirati teoretska klinička ispitivanja.
+U ovom dijelu ćete raditi s malim datasetom o dijabetesu koji je ugrađen u Scikit-learn za svrhe učenja. Zamislite da želite ispitati liječenje za dijabetičke pacijente. Modeli strojnog učenja mogli bi vam pomoći odrediti koji bi pacijenti bolje reagirali na liječenje, na temelju kombinacija varijabli. Čak i vrlo osnovni regresijski model, kada se vizualizira, može pokazati informacije o varijablama koje bi vam pomogle organizirati vaše teoretske kliničke studije.
-✅ Postoji mnogo vrsta metoda regresije, a koju ćete odabrati ovisi o odgovoru koji tražite. Ako želite predvidjeti vjerojatnu visinu osobe određene dobi, koristili biste linearnu regresiju jer tražite **numeričku vrijednost**. Ako vas zanima otkrivanje treba li određena kuhinja biti smatrana veganskom ili ne, tražite **kategorizaciju**, pa biste koristili logističku regresiju. Kasnije ćete naučiti više o logističkoj regresiji. Razmislite malo o pitanjima koja možete postaviti podacima i koja bi od ovih metoda bila prikladnija.
+✅ Postoji mnogo vrsta regresijskih metoda, a koju ćete odabrati ovisi o pitanju na koje želite odgovoriti. Ako želite predvidjeti vjerojatnu visinu za osobu određene dobi, koristili biste linearnu regresiju jer tražite **numeričku vrijednost**. Ako ste zainteresirani otkriti treba li neki tip kuhinje smatrati veganskim ili ne, tražite **kategorizaciju**, pa biste koristili logističku regresiju. O logističkoj regresiji ćete kasnije naučiti više. Razmislite malo o nekim pitanjima koja možete postaviti podacima i koja bi metoda od njih bila prikladnija.
Krenimo s ovim zadatkom.
-### Uvoz biblioteka
+### Uvezite biblioteke
Za ovaj zadatak uvest ćemo neke biblioteke:
-- **matplotlib**. Koristan [alat za grafički prikaz](https://matplotlib.org/) koji ćemo koristiti za stvaranje linijskog grafa.
-- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) je korisna biblioteka za rad s numeričkim podacima u Pythonu.
-- **sklearn**. Ovo je [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) biblioteka.
+- **matplotlib**. Koristan je [alat za grafove](https://matplotlib.org/) i koristit ćemo ga za crtanje linijskog grafikona.
+- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) je korisna biblioteka za rukovanje numeričkim podacima u Pythonu.
+- **sklearn**. Ovo je biblioteka [Scikit-learn](https://scikit-learn.org/stable/user_guide.html).
-Uvezite neke biblioteke za pomoć pri zadacima.
+Uvezite neke biblioteke koje će vam pomoći u zadacima.
-1. Dodajte uvoze upisivanjem sljedećeg koda:
+1. Dodajte uvoze upisujući sljedeći kod:
```python
import matplotlib.pyplot as plt
@@ -122,26 +123,26 @@ Uvezite neke biblioteke za pomoć pri zadacima.
from sklearn import datasets, linear_model, model_selection
```
- Ovdje uvozite `matplotlib`, `numpy` te `datasets`, `linear_model` i `model_selection` iz `sklearn`. `model_selection` se koristi za podjelu podataka na skupove za treniranje i testiranje.
+ Gore uvozite `matplotlib`, `numpy` te uvozite `datasets`, `linear_model` i `model_selection` iz `sklearn`. `model_selection` se koristi za dijeljenje podataka na trening i test skupove.
-### Skup podataka o dijabetesu
+### Dataset o dijabetesu
-Ugrađeni [skup podataka o dijabetesu](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) uključuje 442 uzorka podataka o dijabetesu s 10 značajki, od kojih neke uključuju:
+Ugrađeni [diabetes dataset](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) uključuje 442 uzorka podataka o dijabetesu, s 10 značajki, od kojih su neke:
-- age: dob u godinama
+- starost: starost u godinama
- bmi: indeks tjelesne mase
-- bp: prosječan krvni tlak
-- s1 tc: T-stanice (vrsta bijelih krvnih stanica)
+- bp: prosječni krvni tlak
+- s1 tc: T-ćelije (vrsta bijelih krvnih stanica)
-✅ Ovaj skup podataka uključuje koncept 'spola' kao varijable značajke važne za istraživanje dijabetesa. Mnogi medicinski skupovi podataka uključuju ovu vrstu binarne klasifikacije. Razmislite malo o tome kako takve kategorizacije mogu isključiti određene dijelove populacije iz tretmana.
+✅ Ovaj dataset uključuje koncept 'spola' kao važnu značajku za istraživanje dijabetesa. Mnogi medicinski datasetovi uključuju ovaj tip binarne klasifikacije. Razmislite malo o tome kako takve kategorizacije mogu isključiti određene dijelove populacije iz liječenja.
-Sada učitajte podatke X i y.
+Sada učitajte X i y podatke.
-> 🎓 Zapamtite, ovo je nadzirano učenje i trebamo imenovanu ciljnu varijablu 'y'.
+> 🎓 Zapamtite, ovo je nadzirano učenje i potreban nam je nazvani cilj 'y'.
-U novoj ćeliji koda učitajte skup podataka o dijabetesu pozivom `load_diabetes()`. Ulaz `return_X_y=True` signalizira da će `X` biti matrica podataka, a `y` ciljana varijabla regresije.
+U novoj ćeliji za kod učitajte dataset o dijabetesu pozivajući `load_diabetes()`. Ulaz `return_X_y=True` označava da će `X` biti matrica podataka, a `y` cilj regresije.
-1. Dodajte neke naredbe za ispis kako biste prikazali oblik matrice podataka i njezin prvi element:
+1. Dodajte naredbe za ispis da pokažete dimenzije matrice podataka i njen prvi element:
```python
X, y = datasets.load_diabetes(return_X_y=True)
@@ -149,9 +150,9 @@ U novoj ćeliji koda učitajte skup podataka o dijabetesu pozivom `load_diabetes
print(X[0])
```
- Ono što dobivate kao odgovor je tuple. Ono što radite je dodjeljivanje prva dva elementa tuplea varijablama `X` i `y`. Saznajte više [o tupleovima](https://wikipedia.org/wiki/Tuple).
+ Ono što dobivate kao odgovor je tuple. Ono što radite jest da prve dvije vrijednosti tupla dodjeljujete `X` i `y` redom. Saznajte više [o tupleima](https://wikipedia.org/wiki/Tuple).
- Možete vidjeti da ovi podaci imaju 442 stavke oblikovane u nizove od 10 elemenata:
+ Možete vidjeti da ovaj dataset ima 442 stavke oblikovane u nizove od 10 elemenata:
```text
(442, 10)
@@ -159,39 +160,39 @@ U novoj ćeliji koda učitajte skup podataka o dijabetesu pozivom `load_diabetes
-0.04340085 -0.00259226 0.01990842 -0.01764613]
```
- ✅ Razmislite malo o odnosu između podataka i ciljne varijable regresije. Linearna regresija predviđa odnose između značajke X i ciljne varijable y. Možete li pronaći [cilj](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) za skup podataka o dijabetesu u dokumentaciji? Što ovaj skup podataka pokazuje, s obzirom na cilj?
+ ✅ Razmislite malo o odnosu između podataka i cilja regresije. Linearna regresija predviđa odnose između značajke X i ciljane varijable y. Možete li pronaći [cilj](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) za diabetes dataset u dokumentaciji? Što ovaj dataset demonstrira, s obzirom na cilj?
-2. Zatim odaberite dio ovog skupa podataka za grafički prikaz odabirom 3. stupca skupa podataka. To možete učiniti korištenjem operatora `:` za odabir svih redaka, a zatim odabirom 3. stupca pomoću indeksa (2). Također možete preoblikovati podatke u 2D niz - kako je potrebno za grafički prikaz - korištenjem `reshape(n_rows, n_columns)`. Ako je jedan od parametara -1, odgovarajuća dimenzija se automatski izračunava.
+2. Zatim, odaberite dio ovog dataseta za iscrtavanje birajući 3. stupac dataseta. To možete napraviti korištenjem operatora `:` za odabir svih redaka, a zatim odabirom 3. stupca s indeksom (2). Također možete promijeniti oblik podataka u 2D niz - kako je potrebno za crtanje - korištenjem `reshape(broj_redaka, broj_stupaca)`. Ako je jedan od parametara -1, odgovarajuća dimenzija se automatski izračunava.
```python
X = X[:, 2]
X = X.reshape((-1,1))
```
- ✅ U bilo kojem trenutku ispišite podatke kako biste provjerili njihov oblik.
+ ✅ U bilo kojem trenutku, ispišite podatke da provjerite njihov oblik.
-3. Sada kada su podaci spremni za grafički prikaz, možete vidjeti može li stroj pomoći u određivanju logičke podjele između brojeva u ovom skupu podataka. Da biste to učinili, trebate podijeliti i podatke (X) i cilj (y) na skupove za testiranje i treniranje. Scikit-learn ima jednostavan način za to; možete podijeliti svoje testne podatke na određenoj točki.
+3. Sada kada imate podatke spremne za crtanje, možete vidjeti može li vam stroj pomoći da odredite logičku granicu između brojeva u ovom datasetu. Da biste to učinili, morate podijeliti i podatke (X) i ciljeve (y) u testne i trening skupove. Scikit-learn ima jednostavan način za to; možete podijeliti svoje testne podatke u određenoj točki.
```python
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33)
```
-4. Sada ste spremni trenirati svoj model! Učitajte model linearne regresije i trenirajte ga s vašim X i y skupovima za treniranje koristeći `model.fit()`:
+4. Sada ste spremni za treniranje modela! Učitajte model linearne regresije i trenirajte ga s vašim X i y trening skupovima korištenjem `model.fit()`:
```python
model = linear_model.LinearRegression()
model.fit(X_train, y_train)
```
- ✅ `model.fit()` je funkcija koju ćete vidjeti u mnogim ML bibliotekama poput TensorFlowa.
+ ✅ `model.fit()` je funkcija koju ćete vidjeti u mnogim ML bibliotekama poput TensorFlowa
-5. Zatim, stvorite predviđanje koristeći testne podatke, koristeći funkciju `predict()`. Ovo će se koristiti za crtanje linije između grupa podataka.
+5. Zatim, napravite predikciju koristeći test podatke, koristeći funkciju `predict()`. Ona će služiti za crtanje linije između skupina podataka
```python
y_pred = model.predict(X_test)
```
-6. Sada je vrijeme za prikaz podataka na grafu. Matplotlib je vrlo koristan alat za ovaj zadatak. Stvorite scatterplot svih X i y testnih podataka i koristite predviđanje za crtanje linije na najprikladnijem mjestu između grupiranja podataka modela.
+6. Sada je vrijeme prikazati podatke na grafikonu. Matplotlib je vrlo koristan alat za ovaj zadatak. Napravite scatterplot svih X i y test podataka i upotrijebite predikciju da nacrtate liniju na najprikladnijem mjestu između grupacija podataka modela.
```python
plt.scatter(X_test, y_test, color='black')
@@ -202,22 +203,24 @@ U novoj ćeliji koda učitajte skup podataka o dijabetesu pozivom `load_diabetes
plt.show()
```
- 
-✅ Razmislite malo o tome što se ovdje događa. Ravna linija prolazi kroz mnogo malih točaka podataka, ali što točno radi? Možete li vidjeti kako biste trebali moći koristiti ovu liniju za predviđanje gdje bi nova, neviđena točka podataka trebala pripadati u odnosu na y-os grafikona? Pokušajte riječima opisati praktičnu primjenu ovog modela.
+ 
+
+
+ ✅ Razmislite malo o tome što se ovdje događa. Prava linija prolazi kroz mnoge male točke podataka, ali što točno radi? Možete li vidjeti kako biste trebali moći koristiti ovu liniju za predviđanje gdje bi nova, neviđena točka podataka trebala stati u odnosu na y-osu na grafikonu? Pokušajte riječima objasniti praktičnu upotrebu ovog modela.
-Čestitamo, izradili ste svoj prvi model linearne regresije, napravili predviđanje s njim i prikazali ga na grafikonu!
+Čestitamo, izgradili ste svoj prvi model linearne regresije, stvorili predviđanje pomoću njega i prikazali ga na grafikonu!
---
## 🚀Izazov
-Prikažite drugu varijablu iz ovog skupa podataka. Savjet: uredite ovu liniju: `X = X[:,2]`. S obzirom na cilj ovog skupa podataka, što možete otkriti o napredovanju dijabetesa kao bolesti?
+Prikazujte drugu varijablu iz ovog skupa podataka. Nagovještaj: uredite ovaj redak: `X = X[:,2]`. S obzirom na cilj ovog skupa podataka, što možete otkriti o napredovanju dijabetesa kao bolesti?
## [Kviz nakon predavanja](https://ff-quizzes.netlify.app/en/ml/)
-## Pregled i samostalno učenje
+## Sažetak i samostalan rad
-U ovom ste vodiču radili s jednostavnom linearnom regresijom, a ne s univarijatnom ili višestrukom linearnom regresijom. Pročitajte malo o razlikama između ovih metoda ili pogledajte [ovaj video](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef).
+U ovom vodiču radili ste s jednostavnom linearnom regresijom, umjesto s univarijatnom ili višestrukom linearnom regresijom. Pročitajte malo o razlikama između ovih metoda ili pogledajte [ovaj video](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef)
-Pročitajte više o konceptu regresije i razmislite o vrstama pitanja na koja se može odgovoriti ovom tehnikom. Prođite kroz [ovaj vodič](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) kako biste produbili svoje razumijevanje.
+Pročitajte više o konceptu regresije i razmislite o vrstama pitanja na koja se ovom tehnikom može odgovoriti. Prođite ovaj [vodič](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) kako biste produbili svoje razumijevanje.
## Zadatak
@@ -225,5 +228,7 @@ Pročitajte više o konceptu regresije i razmislite o vrstama pitanja na koja se
---
-**Odricanje od odgovornosti**:
-Ovaj dokument je preveden korištenjem AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati mjerodavnim izvorom. Za ključne informacije preporučuje se profesionalni prijevod od strane stručnjaka. Ne preuzimamo odgovornost za bilo kakve nesporazume ili pogrešne interpretacije proizašle iz korištenja ovog prijevoda.
\ No newline at end of file
+
+**Napomena**:
+Ovaj dokument je preveden korištenjem AI prevoditeljskog servisa [Co-op Translator](https://github.com/Azure/co-op-translator). Iako težimo točnosti, imajte na umu da automatski prijevodi mogu sadržavati greške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za važne informacije preporuča se profesionalni ljudski prijevod. Nismo odgovorni za bilo kakva nesporazumevanja ili pogrešne interpretacije koje proizlaze iz korištenja ovog prijevoda.
+
\ No newline at end of file
diff --git a/translations/hr/2-Regression/2-Data/README.md b/translations/hr/2-Regression/2-Data/README.md
index 83084d4b7..2e0ef5b7b 100644
--- a/translations/hr/2-Regression/2-Data/README.md
+++ b/translations/hr/2-Regression/2-Data/README.md
@@ -1,62 +1,62 @@
-# Izgradnja regresijskog modela pomoću Scikit-learn: priprema i vizualizacija podataka
+# Izgradite regresijski model koristeći Scikit-learn: pripremite i vizualizirajte podatke
-
+
-Infografiku izradio [Dasani Madipalli](https://twitter.com/dasani_decoded)
+Infografika autora [Dasani Madipalli](https://twitter.com/dasani_decoded)
## [Kviz prije predavanja](https://ff-quizzes.netlify.app/en/ml/)
-> ### [Ova lekcija dostupna je u R-u!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
+> ### [Ova lekcija dostupna je i u R-u!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
## Uvod
-Sada kada imate alate potrebne za izgradnju modela strojnog učenja pomoću Scikit-learn, spremni ste početi postavljati pitanja o svojim podacima. Dok radite s podacima i primjenjujete rješenja strojnog učenja, vrlo je važno znati kako postaviti pravo pitanje kako biste pravilno iskoristili potencijale svog skupa podataka.
+Sada kada imate spremne alate koje trebate za početak izrade modela strojnog učenja sa Scikit-learn, spremni ste početi postavljati pitanja svojem skupu podataka. Dok radite s podacima i primjenjujete ML rješenja, vrlo je važno razumjeti kako postaviti pravo pitanje kako biste pravilno otključali potencijale svog skupa podataka.
U ovoj lekciji naučit ćete:
-- Kako pripremiti podatke za izgradnju modela.
+- Kako pripremiti svoje podatke za izradu modela.
- Kako koristiti Matplotlib za vizualizaciju podataka.
+- Kako koristiti Seaborn za izražajniju vizualizaciju podataka.
-## Postavljanje pravog pitanja o podacima
+## Postavljajte pravo pitanje svom skupu podataka
-Pitanje na koje trebate odgovoriti odredit će vrstu algoritama strojnog učenja koje ćete koristiti. Kvaliteta odgovora koji dobijete uvelike će ovisiti o prirodi vaših podataka.
+Pitanje na koje trebate odgovor odredit će koji tip ML algoritama ćete koristiti. A kvaliteta odgovora koji dobijete ovisit će u velikoj mjeri o prirodi vaših podataka.
-Pogledajte [podatke](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) koji su dostupni za ovu lekciju. Možete otvoriti ovu .csv datoteku u VS Codeu. Brzi pregled odmah pokazuje da postoje praznine i mješavina tekstualnih i numeričkih podataka. Tu je i neobičan stupac nazvan 'Package' gdje su podaci mješavina između 'sacks', 'bins' i drugih vrijednosti. Podaci su, zapravo, pomalo neuredni.
+Pogledajte [podatke](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) dostavljene za ovu lekciju. Možete otvoriti ovu .csv datoteku u VS Code-u. Brzi pregled odmah pokazuje da postoje praznine i mješavina nizova i numeričkih podataka. Također postoji neobičan stupac nazvan 'Package' u kojem su podaci mješavina između 'vreća', 'kutija' i drugih vrijednosti. Podaci su, zapravo, pomalo neuredni.
[](https://youtu.be/5qGjczWTrDQ "ML za početnike - Kako analizirati i očistiti skup podataka")
-> 🎥 Kliknite na sliku iznad za kratki video o pripremi podataka za ovu lekciju.
+> 🎥 Kliknite na gornju sliku za kratak video o pripremi podataka za ovu lekciju.
-Zapravo, nije uobičajeno dobiti skup podataka koji je potpuno spreman za korištenje u stvaranju modela strojnog učenja. U ovoj lekciji naučit ćete kako pripremiti sirove podatke koristeći standardne Python biblioteke. Također ćete naučiti različite tehnike za vizualizaciju podataka.
+Zapravo, nije vrlo često da dobijete skup podataka koji je potpuno spreman za korištenje izravno za stvaranje ML modela. U ovoj lekciji naučit ćete kako pripremiti neobrađeni skup podataka koristeći standardne Python biblioteke. Također ćete naučiti različite tehnike za vizualizaciju podataka.
## Studija slučaja: 'tržište bundeva'
-U ovom direktoriju pronaći ćete .csv datoteku u korijenskoj mapi `data` pod nazivom [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) koja uključuje 1757 redaka podataka o tržištu bundeva, grupiranih po gradovima. Ovo su sirovi podaci izvučeni iz [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) koje distribuira Ministarstvo poljoprivrede Sjedinjenih Američkih Država.
+U ovoj mapi naći ćete .csv datoteku u korijenskoj mapi `data` nazvanu [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) koja sadrži 1757 redaka podataka o tržištu bundeva, sortirano po grupama prema gradu. Ovo su neobrađeni podaci izvučeni iz [Specijalnih izvještaja o terminalnim tržištima usjeva](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) koje distribuira Ministarstvo poljoprivrede Sjedinjenih Američkih Država.
### Priprema podataka
-Ovi podaci su javno dostupni. Mogu se preuzeti u mnogo zasebnih datoteka, po gradovima, s web stranice USDA. Kako bismo izbjegli previše zasebnih datoteka, spojili smo sve podatke po gradovima u jednu tablicu, tako da smo već _pripremili_ podatke malo. Sada, pogledajmo podatke detaljnije.
+Ovi podaci su javno dostupni. Mogu se preuzeti u mnogim zasebnim datotekama, po gradovima, sa USDA web stranice. Kako bismo izbjegli previše zasebnih datoteka, spojili smo sve podatke po gradovima u jednu tablicu, tako da smo već malo _pripremili_ podatke. Sljedeće, pogledajmo podatke detaljnije.
-### Podaci o bundevama - prvi zaključci
+### Podaci o bundevama - rani zaključci
-Što primjećujete o ovim podacima? Već ste vidjeli da postoji mješavina tekstualnih podataka, brojeva, praznina i neobičnih vrijednosti koje trebate razumjeti.
-
-Koje pitanje možete postaviti o ovim podacima koristeći tehniku regresije? Što kažete na "Predvidjeti cijenu bundeve za prodaju tijekom određenog mjeseca". Ponovno pogledajući podatke, postoje neke promjene koje trebate napraviti kako biste stvorili strukturu podataka potrebnu za zadatak.
+Što primjećujete u vezi ovih podataka? Već ste vidjeli da postoji mješavina nizova, brojeva, praznina i neobičnih vrijednosti koje morate interpretirati.
+Koje pitanje možete postaviti ovim podacima koristeći regresijsku tehniku? Što mislite o "Predviđanju cijene bundeve za prodaju u određenom mjesecu"? Promatrajući podatke, postoje neke promjene koje trebate napraviti da biste stvorili strukturu podataka potrebnu za taj zadatak.
## Vježba - analizirajte podatke o bundevama
-Koristimo [Pandas](https://pandas.pydata.org/), (ime dolazi od `Python Data Analysis`) alat vrlo koristan za oblikovanje podataka, kako bismo analizirali i pripremili ove podatke o bundevama.
+Koristit ćemo [Pandas](https://pandas.pydata.org/), (ime znači `Python Data Analysis`) alat vrlo koristan za oblikovanje podataka, za analizu i pripremu ovih podataka o bundevama.
-### Prvo, provjerite nedostaju li datumi
+### Prvo, provjerite nedostajuće datume
-Prvo ćete morati poduzeti korake kako biste provjerili nedostaju li datumi:
+Prvo ćete morati poduzeti korake za provjeru nedostajućih datuma:
-1. Pretvorite datume u format mjeseca (ovo su američki datumi, pa je format `MM/DD/YYYY`).
+1. Pretvorite datume u format mjeseca (to su američki datumi, pa je format `MM/DD/YYYY`).
2. Izvucite mjesec u novi stupac.
-Otvorite datoteku _notebook.ipynb_ u Visual Studio Codeu i uvezite tablicu u novi Pandas dataframe.
+Otvorite datoteku _notebook.ipynb_ u Visual Studio Code i uvezite tablicu u novi Pandas dataframe.
-1. Koristite funkciju `head()` za pregled prvih pet redaka.
+1. Koristite funkciju `head()` da vidite prvih pet redaka.
```python
import pandas as pd
@@ -64,17 +64,17 @@ Otvorite datoteku _notebook.ipynb_ u Visual Studio Codeu i uvezite tablicu u nov
pumpkins.head()
```
- ✅ Koju biste funkciju koristili za pregled zadnjih pet redaka?
+ ✅ Koju biste funkciju upotrijebili da vidite zadnjih pet redaka?
-1. Provjerite ima li nedostajućih podataka u trenutnom dataframeu:
+1. Provjerite postoje li nedostajući podaci u trenutnom dataframe-u:
```python
pumpkins.isnull().sum()
```
- Postoje nedostajući podaci, ali možda neće biti važni za zadatak.
+ Nedostaju podaci, ali možda to neće biti problem za zadatak.
-1. Kako biste olakšali rad s dataframeom, odaberite samo stupce koji su vam potrebni koristeći funkciju `loc`, koja iz izvornog dataframea izvlači grupu redaka (proslijeđeno kao prvi parametar) i stupaca (proslijeđeno kao drugi parametar). Izraz `:` u slučaju ispod znači "svi redovi".
+1. Kako biste olakšali rad s dataframe-om, odaberite samo stupce koje trebate, koristeći funkciju `loc` koja iz originalnog dataframe-a izvlači skup redaka (proslijeđen kao prvi parametar) i stupaca (proslijeđen kao drugi parametar). Izraz `:` u ovom slučaju znači "svi redci".
```python
columns_to_select = ['Package', 'Low Price', 'High Price', 'Date']
@@ -83,11 +83,11 @@ Otvorite datoteku _notebook.ipynb_ u Visual Studio Codeu i uvezite tablicu u nov
### Drugo, odredite prosječnu cijenu bundeve
-Razmislite kako odrediti prosječnu cijenu bundeve u određenom mjesecu. Koje biste stupce odabrali za ovaj zadatak? Savjet: trebat će vam 3 stupca.
+Razmislite kako odrediti prosječnu cijenu bundeve u određenom mjesecu. Koje biste stupce odabrali za ovaj zadatak? Savjet: trebaju vam 3 stupca.
-Rješenje: uzmite prosjek stupaca `Low Price` i `High Price` kako biste popunili novi stupac Price, i pretvorite stupac Date da prikazuje samo mjesec. Srećom, prema provjeri iznad, nema nedostajućih podataka za datume ili cijene.
+Rješenje: uzmite prosjek stupaca `Low Price` i `High Price` za popunjavanje novog stupca Cijena, i pretvorite stupac Datum tako da pokazuje samo mjesec. Srećom, prema prethodnoj provjeri, nema nedostajućih podataka za datume ili cijene.
-1. Za izračunavanje prosjeka dodajte sljedeći kod:
+1. Za izračun prosjeka dodajte sljedeći kod:
```python
price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2
@@ -96,7 +96,7 @@ Rješenje: uzmite prosjek stupaca `Low Price` i `High Price` kako biste popunili
```
- ✅ Slobodno ispišite bilo koje podatke koje želite provjeriti koristeći `print(month)`.
+ ✅ Slobodno ispišite bilo koji podatak koji želite provjeriti korištenjem `print(month)`.
2. Sada kopirajte svoje konvertirane podatke u novi Pandas dataframe:
@@ -104,29 +104,29 @@ Rješenje: uzmite prosjek stupaca `Low Price` i `High Price` kako biste popunili
new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price})
```
- Ispisivanje vašeg dataframea pokazat će vam čist, uredan skup podataka na kojem možete izgraditi svoj novi regresijski model.
+ Ispis vašeg dataframe-a pokazat će vam čist i uredan skup podataka na kojem možete graditi svoj novi regresijski model.
-### Ali čekajte! Nešto ovdje izgleda čudno
+### Ali, pričekajte! Tu nešto nije u redu
-Ako pogledate stupac `Package`, bundeve se prodaju u mnogim različitim konfiguracijama. Neke se prodaju u mjerama '1 1/9 bushel', neke u '1/2 bushel', neke po bundevi, neke po funti, a neke u velikim kutijama različitih širina.
+Ako pogledate stupac `Package`, bundeve se prodaju u mnogim različitim konfiguracijama. Neke se prodaju u mjerama '1 1/9 bušl', neke u mjerama '1/2 bušl', neke po jednoj bundevi, neke po funti, a neke u velikim kutijama različitih širina.
-> Čini se da je bundeve vrlo teško dosljedno vagati
+> Čini se da je vrlo teško konzistentno mjeriti težinu bundeva
-Kopajući po izvornim podacima, zanimljivo je da sve što ima `Unit of Sale` jednako 'EACH' ili 'PER BIN' također ima tip `Package` po inču, po binu ili 'each'. Čini se da je bundeve vrlo teško dosljedno vagati, pa ih filtrirajmo odabirom samo bundeva s nizom 'bushel' u stupcu `Package`.
+Istražujući izvorne podatke, zanimljivo je da sve što ima `Unit of Sale` jednako 'EACH' ili 'PER BIN' također ima tip `Package` po inču, po binu ili 'svaki'. Bundeve se čine vrlo teškima za konzistentno vaganje, pa ih filtrirajmo tako da odaberemo samo one bundeve kojima je u stupcu `Package` niz 'bushel'.
-1. Dodajte filter na vrh datoteke, ispod početnog uvoza .csv datoteke:
+1. Dodajte filter na početak datoteke, ispod početnog uvoza .csv:
```python
pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]
```
- Ako sada ispišete podatke, možete vidjeti da dobivate samo oko 415 redaka podataka koji sadrže bundeve po bushelu.
+ Ako sada ispišete podatke, vidjet ćete da dobivate samo otprilike 415 redaka podataka koji sadrže bundeve po bušlu.
-### Ali čekajte! Još nešto treba napraviti
+### Ali, pričekajte! Još nešto treba napraviti
-Jeste li primijetili da se količina bushela razlikuje po retku? Trebate normalizirati cijene tako da prikazujete cijene po bushelu, pa napravite neke izračune kako biste ih standardizirali.
+Primijetili ste da se količina bušl po retku razlikuje? Trebate normalizirati cijene tako da prikažete cijene po bušlu, pa napravite kalkulacije za standardizaciju.
-1. Dodajte ove linije nakon bloka koji stvara dataframe new_pumpkins:
+1. Dodajte ove retke iza bloka koji stvara novi_pumpkins dataframe:
```python
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9)
@@ -134,29 +134,29 @@ Jeste li primijetili da se količina bushela razlikuje po retku? Trebate normali
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2)
```
-✅ Prema [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), težina bushela ovisi o vrsti proizvoda, jer je to mjera volumena. "Bushel rajčica, na primjer, trebao bi težiti 56 funti... Lišće i zelje zauzimaju više prostora s manje težine, pa bushel špinata teži samo 20 funti." Sve je to prilično komplicirano! Nećemo se zamarati konverzijom bushel-u-funtu, već ćemo cijene prikazivati po bushelu. Sva ova studija bushela bundeva, međutim, pokazuje koliko je važno razumjeti prirodu svojih podataka!
+✅ Prema [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), težina bušla ovisi o vrsti proizvoda, jer je mjera volumena. "Bušl rajčica, na primjer, treba težiti 56 funti... Listovi i zelje zauzimaju više prostora uz manje težine, pa bušl špinata teži samo 20 funti." Sve je to prilično komplicirano! Nemojmo se opterećivati pretvorbom bušl-u u funte, nego cijenu izrazimo po bušlu. Sva ova studija o bušlovima bundeva ipak pokazuje koliko je važno razumjeti prirodu svojih podataka!
-Sada možete analizirati cijene po jedinici na temelju njihove mjere bushela. Ako još jednom ispišete podatke, možete vidjeti kako su standardizirani.
+Sada možete analizirati cijene po jedinici na osnovi njihove mjere u bušlu. Ako ponovno ispišete podatke, vidjet ćete kako su standardizirani.
-✅ Jeste li primijetili da su bundeve prodane po pola bushela vrlo skupe? Možete li shvatiti zašto? Savjet: male bundeve su puno skuplje od velikih, vjerojatno zato što ih ima puno više po bushelu, s obzirom na neiskorišten prostor koji zauzima jedna velika šuplja bundeva za pitu.
+✅ Primijetili ste da su bundeve prodane po pola bušla vrlo skupe? Možete li pogoditi zašto? Savjet: male su bundeve znatno skuplje od velikih, vjerojatno zato što ih ima puno više po bušlu, s obzirom na neiskorišteni prostor koji zauzima jedna velika šuplja pita bundeva.
## Strategije vizualizacije
-Dio uloge znanstvenika za podatke je demonstrirati kvalitetu i prirodu podataka s kojima rade. Da bi to učinili, često stvaraju zanimljive vizualizacije, poput grafikona, dijagrama i tablica, koje prikazuju različite aspekte podataka. Na taj način mogu vizualno pokazati odnose i praznine koje je inače teško otkriti.
+Dio uloge data znanstvenika je demonstrirati kvalitetu i prirodu podataka s kojima rade. Da bi to učinili, često stvaraju zanimljive vizualizacije ili plotove, grafikone i dijagrame koji prikazuju različite aspekte podataka. Na taj način mogu vizualno pokazati odnose i praznine koje je inače teško otkriti.
-[](https://youtu.be/SbUkxH6IJo0 "ML za početnike - Kako vizualizirati podatke pomoću Matplotliba")
+[](https://youtu.be/SbUkxH6IJo0 "ML za početnike - Kako vizualizirati podatke pomoću Matplotlib")
-> 🎥 Kliknite na sliku iznad za kratki video o vizualizaciji podataka za ovu lekciju.
+> 🎥 Kliknite na gornju sliku za kratak video o vizualizaciji podataka za ovu lekciju.
-Vizualizacije također mogu pomoći u određivanju tehnike strojnog učenja koja je najprikladnija za podatke. Na primjer, scatterplot koji izgleda kao da slijedi liniju ukazuje na to da su podaci dobar kandidat za vježbu linearne regresije.
+Vizualizacije također mogu pomoći u određivanju tehnike strojnog učenja najprikladnije za podatke. Na primjer, scatterplot koji izgleda kao da prati liniju je pokazatelj da su podaci dobar kandidat za vježbu linearne regresije.
-Jedna biblioteka za vizualizaciju podataka koja dobro funkcionira u Jupyter notebookovima je [Matplotlib](https://matplotlib.org/) (koju ste također vidjeli u prethodnoj lekciji).
+Jedna biblioteka za vizualizaciju podataka koja dobro funkcionira u Jupyter bilježnicama je [Matplotlib](https://matplotlib.org/) (koju ste također vidjeli u prethodnoj lekciji).
-> Steknite više iskustva s vizualizacijom podataka u [ovim tutorijalima](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott).
+> Steknite više iskustva s vizualizacijom podataka u [ovim vodičima](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott).
## Vježba - eksperimentirajte s Matplotlibom
-Pokušajte stvoriti osnovne grafikone za prikaz novog dataframea koji ste upravo stvorili. Što bi pokazao osnovni linijski grafikon?
+Pokušajte stvoriti neke osnovne plottove za prikaz novog dataframe-a koji ste upravo stvorili. Što bi osnovni plot linije prikazao?
1. Uvezite Matplotlib na vrh datoteke, ispod uvoza Pandasa:
@@ -164,8 +164,8 @@ Pokušajte stvoriti osnovne grafikone za prikaz novog dataframea koji ste upravo
import matplotlib.pyplot as plt
```
-1. Ponovno pokrenite cijeli notebook za osvježavanje.
-1. Na dnu notebooka dodajte ćeliju za prikaz podataka kao kutiju:
+1. Ponovno pokrenite cijelu bilježnicu da biste osvježili.
+1. Na dnu bilježnice dodajte ćeliju za iscrtavanje podataka kao box plot:
```python
price = new_pumpkins.Price
@@ -174,44 +174,121 @@ Pokušajte stvoriti osnovne grafikone za prikaz novog dataframea koji ste upravo
plt.show()
```
- 
+ 
- Je li ovo koristan grafikon? Iznenađuje li vas nešto u vezi s njim?
+ Je li ovaj plot koristan? Iznenađuje li vas nešto u vezi njega?
- Nije osobito koristan jer samo prikazuje vaše podatke kao raspršene točke u određenom mjesecu.
+ Nije osobito koristan jer samo prikazuje vašu podatkovnu točku kao raspršene točke u određenom mjesecu.
### Učinite ga korisnim
-Da bi grafikoni prikazivali korisne podatke, obično trebate grupirati podatke na neki način. Pokušajmo stvoriti grafikon gdje y os prikazuje mjesece, a podaci pokazuju distribuciju podataka.
+Da bi grafikoni prikazali korisne podatke, obično trebate nekako grupirati podatke. Pokušajmo stvoriti plot gdje y-os prikazuje mjesece, a podaci pokazuju raspodjelu podataka.
-1. Dodajte ćeliju za stvaranje grupiranog stupčastog grafikona:
+1. Dodajte ćeliju koja će napraviti grupirani bar chart:
```python
new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar')
plt.ylabel("Pumpkin Price")
```
- 
+ 
+
+ Ovo je korisnija vizualizacija podataka! Čini se da najviša cijena bundeva nastupa u rujnu i listopadu. Očekujete li to? Zašto da ili zašto ne?
+
+## Vježba - eksperimentirajte sa Seaborn bibliotekom
+
+Matplotlib je moćan, ali može zahtijevati dosta koda za stvaranje dotjeranog grafikona. [Seaborn](https://seaborn.pydata.org/) je biblioteka izgrađena _na vrhu_ Matplotlib-a koja je dizajnirana za statističku vizualizaciju podataka. Radi izravno s Pandas dataframe-ima, primjenjuje privlačne zadane stilove i omogućuje vam stvaranje informativnih plottova uz znatno manje koda. Budući da Seaborn vraća Matplotlib objekte, još uvijek možete koristiti sve što već znate o Matplotlibu za fino podešavanje rezultata.
+
+> Ako već nemate instaliran Seaborn, instalirajte ga naredbom `pip install seaborn`.
+
+1. Uvezite Seaborn na vrh bilježnice, ispod ostalih uvoza. Konvencionalno se uvozi kao `sns`:
+
+ ```python
+ import seaborn as sns
+ ```
+
+### Scatter plotovi za prikaz odnosa
+
+Velik dio istraživanja podataka prije izrade modela je traženje _odnosa_ među varijablama. [Scatter plot](https://en.wikipedia.org/wiki/Scatter_plot) je jedan od najboljih alata za to: ako točke izgledaju kao da prate liniju, dvije varijable mogu biti povezane, što je dobar znak da linearni regresijski model može funkcionirati.
+
+1. Ponovno napravite scatter plot cijena po mjesecu, ali sada koristeći Seabornovu [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) (relacijski plot), koja radi izravno s vašim stupcima dataframe-a:
+
+ ```python
+ sns.relplot(x="Price", y="Month", data=new_pumpkins)
+ ```
+
+ 
+
+ Primijetite kako prosljeđujete _imena stupaca_ i dataframe, a Seaborn se brine o oznakama osi.
+
+2. Možete prebaciti na line plot dodavanjem `kind="line"`. Seaborn čak crta sjenčanu traku koja pokazuje interval pouzdanosti oko linije:
+
+ ```python
+ sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins)
+ ```
+
+ 
+
+ Ovi podaci su dosta bučni, pa line plot nije najočitiji izbor — ali pokazuje koliko je lako mijenjati vrste grafikona u Seabornu.
+
+### Bar chartovi za prikaz distribucija
+
+
+Ranije ste ručno grupirali podatke da biste stvorili stupčasti grafikon s Matplotlibom. Seabornova funkcija [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) (kategorijski grafikon) može za vas obaviti grupiranje i agregaciju. Zadano `kind="bar"` prikazuje srednju vrijednost svake kategorije zajedno s crnom linijom koja označava interval pouzdanosti.
+
+1. Napravite stupčasti grafikon prosječne cijene po mjesecu:
+
+ ```python
+ sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar")
+ ```
+
+ 
+
+ Ovo potvrđuje ono što ste vidjeli s Matplotlibom — cijene vrhunce imaju oko rujna i listopada — ali Seaborn također prikazuje koliko se cijena _varira_ unutar svakog mjeseca.
+
+### Toplinske mape za prikaz korelacija
+
+Scatter plotovi uspoređuju dvije varijable odjednom. Kad imate nekoliko numeričkih stupaca, [toplinska mapa](https://en.wikipedia.org/wiki/Heat_map) vam omogućuje da istovremeno vidite jačinu odnosa između _svakog_ para stupaca. Ovo je uobičajen način za uočiti koje su značajke najviše korelirane prije nego što odlučite što ćete koristiti u modelu (i isti tip grafikona kasnije se koristi za prikazivanje matrica zabune u klasifikaciji).
+
+1. Izgradite korelacijsku matrica s Pandasom, zatim je nacrtajte s Seabornovim [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html). Opcija `annot=True` ispisuje vrijednosti korelacije u svakoj ćeliji:
+
+ ```python
+ correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()
+ sns.heatmap(correlations, annot=True, cmap="coolwarm")
+ ```
+
+ 
+
+ Vrijednosti blizu `1` (ili `-1`) znače da su stupci snažno _linearno_ korelirani. Primijetite kako su `Low Price` i `High Price` gotovo savršeno korelirani. `Month`, s druge strane, pokazuje samo slabu linearnu korelaciju s cijenom — iako je stupčasti grafikon gore otkrio jasan sezonski vrhunac u rujnu i listopadu. To je važna lekcija: koeficijent korelacije mjeri samo _pravolinijske_ odnose, pa može propustiti sezonske ili inače nelinearne obrasce. ✅ Zašto je korisno pogledati i toplinsku mapu *i* grafikone poput stupčastog grafikona prije nego što odlučite koje stupce koristiti?
+
+### Matplotlib ili Seaborn?
+
+Obje biblioteke vrijedi poznavati:
+
+- **Matplotlib** vam pruža finu kontrolu nad svakim elementom grafikona i temelj je na kojem se gradi gotovo svaka druga Python biblioteka za crtanje.
+- **Seaborn** nudi funkcije viših razina i atraktivne zadane postavke za statističke grafikone, radi direktno s dataframeovima i često je brži za istraživačku analizu podataka.
- Ovo je korisnija vizualizacija podataka! Čini se da pokazuje da je najviša cijena bundeva u rujnu i listopadu. Odgovara li to vašim očekivanjima? Zašto ili zašto ne?
+Čest radni tijek je posegnuti za Seabornom za brzo istraživanje podataka, a zatim prijeći na Matplotlib kada trebate prilagoditi detalje.
---
## 🚀Izazov
-Istražite različite vrste vizualizacija koje Matplotlib nudi. Koje vrste su najprikladnije za regresijske probleme?
+Istražite različite vrste vizualizacija koje nude Matplotlib i Seaborn. Koje su vrste najprikladnije za probleme regresije?
## [Kviz nakon predavanja](https://ff-quizzes.netlify.app/en/ml/)
## Pregled i samostalno učenje
-Pogledajte mnoge načine vizualizacije podataka. Napravite popis raznih dostupnih biblioteka i zabilježite koje su najbolje za određene vrste zadataka, na primjer 2D vizualizacije naspram 3D vizualizacija. Što otkrivate?
+Pogledajte različite načine vizualizacije podataka. Napravite popis dostupnih biblioteka i zabilježite koje su najbolje za određene vrste zadataka, na primjer 2D vizualizacije nasuprot 3D vizualizacijama. Što otkrivate?
## Zadatak
-[Istrazivanje vizualizacije](assignment.md)
+[Istraživanje vizualizacije](assignment.md)
---
-**Odricanje od odgovornosti**:
-Ovaj dokument je preveden korištenjem AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati mjerodavnim izvorom. Za ključne informacije preporučuje se profesionalni prijevod od strane stručnjaka. Ne preuzimamo odgovornost za bilo kakve nesporazume ili pogrešne interpretacije proizašle iz korištenja ovog prijevoda.
\ No newline at end of file
+
+**Napomena**:
+Ovaj dokument je preveden korištenjem AI prevoditeljskog servisa [Co-op Translator](https://github.com/Azure/co-op-translator). Iako težimo točnosti, imajte na umu da automatski prijevodi mogu sadržavati greške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za važne informacije preporuča se profesionalni ljudski prijevod. Nismo odgovorni za bilo kakva nesporazumevanja ili pogrešne interpretacije koje proizlaze iz korištenja ovog prijevoda.
+
\ No newline at end of file
diff --git a/translations/hr/2-Regression/2-Data/solution/notebook.ipynb b/translations/hr/2-Regression/2-Data/solution/notebook.ipynb
index 7af47e73b..5ba082b35 100644
--- a/translations/hr/2-Regression/2-Data/solution/notebook.ipynb
+++ b/translations/hr/2-Regression/2-Data/solution/notebook.ipynb
@@ -3,7 +3,9 @@
{
"cell_type": "markdown",
"metadata": {},
- "source": []
+ "source": [
+ "## Linearna regresija za bundeve - Lekcija 2\n"
+ ]
},
{
"cell_type": "code",
@@ -220,6 +222,7 @@
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
"pumpkins = pd.read_csv('../../data/US-pumpkins.csv')\n",
"\n",
"pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]\n",
@@ -383,18 +386,78 @@
"plt.ylabel(\"Pumpkin Price\")"
]
},
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Vizualizacija s Seaborn\n",
+ "\n",
+ "[Seaborn](https://seaborn.pydata.org/) je izgrađen na vrhu Matplotliba i radi izravno s datafrejmima, što omogućuje brzo stvaranje atraktivnih statističkih grafova s vrlo malo koda.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Dijagrami raspršenja za prikaz odnosa\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", kind=\"line\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Stupčasti dijagrami za prikaz distribucija\n"
+ ]
+ },
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
- "source": []
+ "source": [
+ "sns.catplot(x=\"Month\", y=\"Price\", data=new_pumpkins, kind=\"bar\")"
+ ]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "\n---\n\n**Odricanje od odgovornosti**: \nOvaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za ključne informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za bilo kakve nesporazume ili pogrešne interpretacije koje proizlaze iz korištenja ovog prijevoda.\n"
+ "### Heatmap prikazi za pokazivanje korelacija\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()\n",
+ "sns.heatmap(correlations, annot=True, cmap=\"coolwarm\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "---\n\n\n**Napomena**:\nOvaj dokument je preveden korištenjem AI prevoditeljskog servisa [Co-op Translator](https://github.com/Azure/co-op-translator). Iako težimo točnosti, imajte na umu da automatski prijevodi mogu sadržavati greške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za važne informacije preporuča se profesionalni ljudski prijevod. Nismo odgovorni za bilo kakva nesporazumevanja ili pogrešne interpretacije koje proizlaze iz korištenja ovog prijevoda.\n\n"
]
}
],
@@ -424,13 +487,7 @@
"hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d"
}
},
- "orig_nbformat": 2,
- "coopTranslator": {
- "original_hash": "95726f0b8283628d5356a4f8eb8b4b76",
- "translation_date": "2025-09-04T07:11:35+00:00",
- "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
- "language_code": "hr"
- }
+ "orig_nbformat": 2
},
"nbformat": 4,
"nbformat_minor": 2
diff --git a/translations/hr/8-Reinforcement/1-QLearning/README.md b/translations/hr/8-Reinforcement/1-QLearning/README.md
index 6523ccf75..506dc6d23 100644
--- a/translations/hr/8-Reinforcement/1-QLearning/README.md
+++ b/translations/hr/8-Reinforcement/1-QLearning/README.md
@@ -1,47 +1,47 @@
-# Uvod u učenje pojačanjem i Q-učenje
+# Uvod u poučavanje potkrepljenjem i Q-učenje
-
+
> Sketchnote autorice [Tomomi Imura](https://www.twitter.com/girlie_mac)
-Učenje pojačanjem uključuje tri važna koncepta: agenta, određena stanja i skup akcija za svako stanje. Izvršavanjem akcije u određenom stanju, agent dobiva nagradu. Zamislite računalnu igru Super Mario. Vi ste Mario, nalazite se na razini igre, stojite pored ruba litice. Iznad vas je novčić. Vi, kao Mario, na razini igre, na određenoj poziciji... to je vaše stanje. Pomicanje korak udesno (akcija) odvest će vas preko ruba, što bi vam donijelo nisku numeričku ocjenu. Međutim, pritiskom na gumb za skok osvojili biste bod i ostali živi. To je pozitivan ishod i trebao bi vam donijeti pozitivnu numeričku ocjenu.
+Poučavanje potkrepljenjem uključuje tri važna pojma: agent, neka stanja i skup akcija po stanju. Izvršavanjem akcije u određenom stanju, agent dobiva nagradu. Ponovo zamislite računalnu igru Super Mario. Vi ste Mario, u razini igre stojite kraj ruba litice. Iznad vas je novčić. Vi, kao Mario, u razini igre, na određenoj poziciji ... to je vaše stanje. Pomicanje jedan korak udesno (akcija) odvelo bi vas preko ruba i zato biste dobili nizak broj bodova. Međutim, pritiskanjem tipke za skok dobivate bod i ostajete živi. To je pozitivan ishod i trebao bi vas nagraditi pozitivnim brojem bodova.
-Korištenjem učenja pojačanjem i simulatora (igre), možete naučiti kako igrati igru kako biste maksimizirali nagradu, što znači ostati živ i osvojiti što više bodova.
+Korištenjem učenja potkrepljenjem i simulatora (igre) možete naučiti kako igrati igru da bi maksimizirali nagradu, odnosno ostali živi i prikupili što više bodova.
-[](https://www.youtube.com/watch?v=lDq_en8RNOo)
+[](https://www.youtube.com/watch?v=lDq_en8RNOo)
-> 🎥 Kliknite na sliku iznad kako biste čuli Dmitryja kako govori o učenju pojačanjem
+> 🎥 Kliknite na sliku iznad da čujete Dmitryja kako govori o učenju potkrepljenjem
## [Kviz prije predavanja](https://ff-quizzes.netlify.app/en/ml/)
## Preduvjeti i postavljanje
-U ovoj lekciji eksperimentirat ćemo s nekim kodom u Pythonu. Trebali biste moći pokrenuti Jupyter Notebook kod iz ove lekcije, bilo na svom računalu ili negdje u oblaku.
+U ovom ćemo se poglavlju igrati s ponekim kodom u Pythonu. Trebali biste moći pokrenuti Jupyter Notebook kod iz ovog poglavlja, bilo na svom računalu ili negdje u oblaku.
-Možete otvoriti [bilježnicu lekcije](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) i proći kroz ovu lekciju kako biste je izgradili.
+Možete otvoriti [zapisnik lekcije](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) i proći ovaj lekciju za učenje.
-> **Napomena:** Ako otvarate ovaj kod iz oblaka, također trebate preuzeti datoteku [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), koja se koristi u kodu bilježnice. Dodajte je u isti direktorij kao i bilježnicu.
+> **Napomena:** Ako otvarate ovaj kod iz oblaka, također treba preuzeti datoteku [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), koja se koristi u kodu zapisnika. Dodajte ju u isti direktorij kao zapisnik.
## Uvod
-U ovoj lekciji istražit ćemo svijet **[Petra i vuka](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)**, inspiriran glazbenom bajkom ruskog skladatelja [Sergeja Prokofjeva](https://en.wikipedia.org/wiki/Sergei_Prokofiev). Koristit ćemo **učenje pojačanjem** kako bismo omogućili Petru da istraži svoje okruženje, prikupi ukusne jabuke i izbjegne susret s vukom.
+U ovom ćemo poglavlju istražiti svijet **[Petra i vuka](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)**, inspiriran glazbenom bajkom ruskog skladatelja, [Sergeja Prokofjeva](https://en.wikipedia.org/wiki/Sergei_Prokofiev). Koristit ćemo **poučavanje potkrepljenjem** da Petar istraži svoju okolinu, sakupi ukusne jabuke i izbjegne susret s vukom.
-**Učenje pojačanjem** (RL) je tehnika učenja koja nam omogućuje da naučimo optimalno ponašanje **agenta** u nekom **okruženju** izvođenjem mnogih eksperimenata. Agent u ovom okruženju treba imati neki **cilj**, definiran pomoću **funkcije nagrade**.
+**Poučavanje potkrepljenjem** (RL) je tehnika učenja koja nam omogućava da naučimo optimalno ponašanje **agenta** u nekom **okruženju** izvođenjem mnogo eksperimenata. Agent u ovom okruženju treba imati neki **cilj**, definiran **funkcijom nagrade**.
-## Okruženje
+## Okoliš
-Radi jednostavnosti, zamislimo Petrov svijet kao kvadratnu ploču veličine `širina` x `visina`, ovako:
+Radi jednostavnosti, zamislimo da je Petarov svijet kvadratna ploča dimenzija `width` x `height`, poput ove:
-
+
-Svaka ćelija na ovoj ploči može biti:
+Svaka ćelija na ploči može biti:
-* **tlo**, po kojem Peter i druga bića mogu hodati.
-* **voda**, po kojoj očito ne možete hodati.
-* **stablo** ili **trava**, mjesto gdje se možete odmoriti.
-* **jabuka**, što predstavlja nešto što bi Peter rado pronašao kako bi se nahranio.
+* **tlo**, po kojem Peter i druga stvorenja mogu hodati.
+* **voda**, po kojoj očito nema hodanja.
+* **stablo** ili **trava**, mjesto za odmor.
+* **jabuka**, što predstavlja nešto što bi Petar bio sretan pronaći da se nahrani.
* **vuk**, koji je opasan i treba ga izbjegavati.
-Postoji zaseban Python modul, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), koji sadrži kod za rad s ovim okruženjem. Budući da ovaj kod nije važan za razumijevanje naših koncepata, uvest ćemo modul i koristiti ga za stvaranje uzorka ploče (blok koda 1):
+Postoji poseban Python modul, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), koji sadrži kod za rad s ovim okruženjem. Budući da ovaj kod nije važan za razumijevanje naših koncepata, uvest ćemo modul i iskoristiti ga za stvaranje primjera ploče (blok koda 1):
```python
from rlboard import *
@@ -52,63 +52,63 @@ m.randomize(seed=13)
m.plot()
```
-Ovaj kod bi trebao ispisati sliku okruženja sličnu onoj gore.
+Ovaj kod bi trebao ispisati sliku okoline sličnu gore prikazanoj.
## Akcije i politika
-U našem primjeru, Petrov cilj bio bi pronaći jabuku, dok izbjegava vuka i druge prepreke. Da bi to učinio, može se kretati dok ne pronađe jabuku.
+U našem primjeru, Petrov cilj bio bi pronaći jabuku, pritom izbjegavajući vuka i prepreke. Da bi to učinio, može hodati dok ne pronađe jabuku.
-Dakle, na bilo kojoj poziciji, može birati između sljedećih akcija: gore, dolje, lijevo i desno.
+Dakle, na bilo kojoj poziciji može izabrati između sljedećih akcija: gore, dolje, lijevo i desno.
-Te ćemo akcije definirati kao rječnik i mapirati ih na parove odgovarajućih promjena koordinata. Na primjer, pomicanje udesno (`R`) odgovaralo bi paru `(1,0)`. (blok koda 2):
+Te ćemo akcije definirati kao rječnik, mapirajući ih na parove odgovarajućih promjena koordinata. Na primjer, pomak udesno (`R`) odgovara paru `(1,0)`. (blok koda 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()) }
```
-Da rezimiramo, strategija i cilj ovog scenarija su sljedeći:
+Ukratko, strategija i cilj ovog scenarija su sljedeći:
-- **Strategija** našeg agenta (Petra) definirana je tzv. **politikom**. Politika je funkcija koja vraća akciju u bilo kojem danom stanju. U našem slučaju, stanje problema predstavljeno je pločom, uključujući trenutnu poziciju igrača.
+- **Strategija** našeg agenta (Petra) definirana je tzv. **politikom**. Politika je funkcija koja vraća akciju u danom stanju. U našem slučaju, stanje problema predstavlja ploča uključujući trenutnu poziciju igrača.
-- **Cilj** učenja pojačanjem je na kraju naučiti dobru politiku koja će nam omogućiti učinkovito rješavanje problema. Međutim, kao osnovnu liniju, razmotrit ćemo najjednostavniju politiku zvanu **slučajna šetnja**.
+- **Cilj** učenja potkrepljenjem je naučiti dobru politiku koja će problem efikasno riješiti. Međutim, kao početnu točku promatrat ćemo najjednostavniju politiku nazvanu **nasumični hod**.
-## Slučajna šetnja
+## Nasumični hod
-Najprije ćemo riješiti naš problem implementacijom strategije slučajne šetnje. Kod slučajne šetnje, nasumično ćemo birati sljedeću akciju iz dopuštenih akcija, sve dok ne dođemo do jabuke (blok koda 3).
+Prvo ćemo riješiti problem implementirajući strategiju nasumičnog hoda. S njom ćemo nasumično birati sljedeću akciju iz dopuštenih, dok ne dođemo do jabuke (blok koda 3).
-1. Implementirajte slučajnu šetnju pomoću donjeg koda:
+1. Implementirajte nasumični hod sljedećim kodom:
```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
+ n = 0 # broj koraka
+ # postavi početnu poziciju
if start_position:
m.human = start_position
else:
m.random_start()
while True:
if m.at() == Board.Cell.apple:
- return n # success!
+ return n # uspjeh!
if m.at() in [Board.Cell.wolf, Board.Cell.water]:
- return -1 # eaten by wolf or drowned
+ return -1 # pojeden od vuka ili se utopio
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
+ m.move(a) # izvrši stvarni potez
break
n+=1
walk(m,random_policy)
```
- Poziv funkcije `walk` trebao bi vratiti duljinu odgovarajuće staze, koja može varirati od jednog pokretanja do drugog.
+ Poziv na `walk` treba vratiti duljinu odgovarajuće staze, što se može razlikovati od izvođenja do izvođenja.
-1. Pokrenite eksperiment šetnje nekoliko puta (recimo, 100) i ispišite dobivene statistike (blok koda 4):
+1. Pokrenite eksperiment hoda više puta (recimo 100) i ispišite statistiku (blok koda 4):
```python
def print_statistics(policy):
@@ -125,17 +125,17 @@ Najprije ćemo riješiti naš problem implementacijom strategije slučajne šetn
print_statistics(random_policy)
```
- Primijetite da je prosječna duljina staze oko 30-40 koraka, što je prilično puno, s obzirom na to da je prosječna udaljenost do najbliže jabuke oko 5-6 koraka.
+ Primijetite da je prosječna duljina puta oko 30-40 koraka, što je dosta, s obzirom da je prosječna udaljenost do najbliže jabuke oko 5-6 koraka.
- Također možete vidjeti kako izgleda Petrov pokret tijekom slučajne šetnje:
+ Također možete vidjeti kako izgleda Petrovo kretanje tijekom nasumičnog hoda:
- 
+ 
## Funkcija nagrade
-Kako bismo našu politiku učinili inteligentnijom, trebamo razumjeti koji su potezi "bolji" od drugih. Da bismo to učinili, trebamo definirati naš cilj.
+Da bismo našu politiku učinili inteligentnijom, moramo razumjeti koje su poteze "bolji" od drugih. Zato trebamo definirati cilj.
-Cilj se može definirati u smislu **funkcije nagrade**, koja će vraćati neku vrijednost ocjene za svako stanje. Što je broj veći, to je funkcija nagrade bolja. (blok koda 5)
+Cilj može biti definiran u obliku **funkcije nagrade**, koja za svako stanje vraća neku vrijednost bodova. Što je broj veći, funkcija nagrade je bolja. (blok koda 5)
```python
move_reward = -0.1
@@ -154,39 +154,115 @@ def reward(m,pos=None):
return move_reward
```
-Zanimljivo je da u većini slučajeva *značajnu nagradu dobivamo tek na kraju igre*. To znači da naš algoritam nekako treba zapamtiti "dobre" korake koji vode do pozitivne nagrade na kraju i povećati njihovu važnost. Slično tome, svi potezi koji vode do loših rezultata trebaju se obeshrabriti.
+Zanimljivo kod funkcija nagrade jest da nam se u većini slučajeva *značajna nagrada daje tek na kraju igre*. To znači da algoritam na neki način treba zapamtiti "dobre" korake koji vode do pozitivne nagrade na kraju i naglasiti njihovu važnost. Slično tome, svi loši potezi trebali bi biti obeshrabreni.
## Q-učenje
-Algoritam koji ćemo ovdje raspraviti zove se **Q-učenje**. U ovom algoritmu, politika je definirana funkcijom (ili strukturom podataka) zvanom **Q-Tablica**. Ona bilježi "dobrotu" svake od akcija u danom stanju.
+Algoritam o kojem ćemo govoriti naziva se **Q-učenje**. Kod njega politika je definirana funkcijom (ili podatkovnom strukturom) nazvanom **Q-tablica**. Ona bilježi "dobrotu" svake akcije u danom stanju.
-Zove se Q-Tablica jer je često zgodno predstavljati je kao tablicu ili višedimenzionalni niz. Budući da naša ploča ima dimenzije `širina` x `visina`, možemo predstaviti Q-Tablicu pomoću numpy niza s oblikom `širina` x `visina` x `len(actions)`: (blok koda 6)
+Zove se Q-tablica jer ju je često zgodno prikazati kao tablicu ili višedimenzionalni niz. Budući da ploča ima dimenzije `width` x `height`, možemo Q-tablicu predstaviti numpy nizom oblika `width` x `height` x `len(actions)`: (blok koda 6)
```python
Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions)
```
-Primijetite da inicijaliziramo sve vrijednosti Q-Tablice s jednakom vrijednošću, u našem slučaju - 0.25. Ovo odgovara politici "slučajne šetnje", jer su svi potezi u svakom stanju jednako dobri. Q-Tablicu možemo proslijediti funkciji `plot` kako bismo vizualizirali tablicu na ploči: `m.plot(Q)`.
+Primijetite da inicijaliziramo sve vrijednosti u Q-tablici s istom vrijednošću, u našem slučaju - 0.25. To odgovara politici "nasumičnog hoda", jer su svi potezi u svakom stanju jednako dobri. Q-tablicu možemo predati funkciji `plot` da vizualiziramo tablicu na ploči: `m.plot(Q)`.
-
+
-U središtu svake ćelije nalazi se "strelica" koja označava preferirani smjer kretanja. Budući da su svi smjerovi jednaki, prikazuje se točka.
+U središtu svake ćelije nalazi se "strelica" koja pokazuje preferirani smjer kretanja. Budući da su svi smjerovi jednaki, prikazuje se točka.
-Sada trebamo pokrenuti simulaciju, istražiti naše okruženje i naučiti bolju raspodjelu vrijednosti Q-Tablice, što će nam omogućiti da mnogo brže pronađemo put do jabuke.
+Sad trebamo pokrenuti simulaciju, istražiti okruženje i naučiti bolju distribuciju vrijednosti Q-tablice, što će nam omogućiti da brže pronađemo put do jabuke.
## Suština Q-učenja: Bellmanova jednadžba
-Jednom kada se počnemo kretati, svaka akcija imat će odgovarajuću nagradu, tj. teoretski možemo odabrati sljedeću akciju na temelju najveće neposredne nagrade. Međutim, u većini stanja potez neće postići naš cilj dolaska do jabuke, pa stoga ne možemo odmah odlučiti koji je smjer bolji.
+Kad počnemo kretati, svaka akcija imat će odgovarajuću nagradu, tj. teoretski možemo izabrati sljedeću akciju s najvećom neposrednom nagradom. No, u većini stanja taj potez neće dovesti do cilja – dohvaćanja jabuke – pa ne možemo odmah odrediti koji je smjer bolji.
-> Zapamtite da nije važan neposredni rezultat, već konačni rezultat, koji ćemo dobiti na kraju simulacije.
+> Zapamtite da nije trenutni rezultat važan, nego konačni rezultat koji ćemo dobiti na kraju simulacije.
-Kako bismo uzeli u obzir ovu odgođenu nagradu, trebamo koristiti principe **[dinamičkog programiranja](https://en.wikipedia.org/wiki/Dynamic_programming)**, koji nam omogućuju da o našem problemu razmišljamo rekurzivno.
+Da bismo to usporenu nagradu uzeli u obzir, upotrijebit ćemo principe **[dinamičkog programiranja](https://en.wikipedia.org/wiki/Dynamic_programming)**, koji nam omogućuju da promatramo problem rekurzivno.
-Pretpostavimo da se sada nalazimo u stanju *s* i želimo se pomaknuti u sljedeće stanje *s'*. Time ćemo dobiti neposrednu nagradu *r(s,a)*, definiranu funkcijom nagrade, plus neku buduću nagradu. Ako pretpostavimo da naša Q-Tablica točno odražava "privlačnost" svake akcije, tada ćemo u stanju *s'* odabrati akciju *a* koja odgovara maksimalnoj vrijednosti *Q(s',a')*. Tako će najbolja moguća buduća nagrada koju bismo mogli dobiti u stanju *s* biti definirana kao `max`
+Pretpostavimo da smo sada u stanju *s* i želimo se pomaknuti u sljedeće stanje *s'*\. Time ćemo dobiti neposrednu nagradu *r(s,a)*, definiranu funkcijom nagrade, plus neku buduću nagradu. Ako pretpostavimo da naša Q-tablica ispravno odražava "privlačnost" svake akcije, u stanju *s'* odabrat ćemo akciju *a* koja odgovara maksimalnoj vrijednosti *Q(s',a')*. Dakle, najbolja moguća buduća nagrada u stanju *s* definirat će se kao `max`a'*Q(s',a')* (maksimum je ovdje izračunat preko svih mogućih akcija *a'* u stanju *s'*).
+
+Ovo daje **Bellmanovu formulu** za izračun vrijednosti Q-tablice u stanju *s*, za akciju *a*:
+
+
+
+Ovdje je γ takozvani **faktor diskontiranja** koji određuje u kojoj mjeri treba zanemariti trenutnu nagradu u korist buduće ili obratno.
+
+## Algoritam učenja
+
+S obzirom na prethodnu jednadžbu, sada možemo napisati pseudo-kod algoritma učenja:
+
+* Inicijaliziraj Q-tablicu Q jednakim brojevima za sva stanja i akcije
+* Postavi stopu učenja α ← 1
+* Ponavljaj simulaciju mnogo puta
+ 1. Počni na nasumičnoj poziciji
+ 1. Ponavljaj
+ 1. Izaberi akciju *a* u stanju *s*
+ 2. Izvrši akciju pomicanjem u novo stanje *s'*
+ 3. Ako je ispunjen uvjet kraja igre ili je ukupna nagrada previše mala - izađi iz simulacije
+ 4. Izračunaj nagradu *r* u novom stanju
+ 5. Ažuriraj Q-funkciju prema Bellmanovoj formuli: *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ maxa'Q(s',a'))*
+ 6. *s* ← *s'*
+ 7. Ažuriraj ukupnu nagradu i smanji α.
+
+## Eksploatacija protiv istraživanja
+
+U prethodnom algoritmu nismo precizirali kako točno birati akciju u koraku 2.1. Ako akciju biramo nasumično, **istraživat ćemo** okruženje i vjerojatno ćemo često umirati i istraživati mjesta gdje inače ne bismo išli. Alternativni pristup je **iskoristiti** već poznate vrijednosti Q-tablice i tako izabrati najbolju akciju (onu s većom Q-vrijednošću) u stanju *s*. To nas međutim sprječava u istraživanju novih stanja i možda nećemo pronaći optimalno rješenje.
+
+Zbog toga je najbolji pristup postići ravnotežu između istraživanja i eksploatacije. To se može učiniti izborom akcije u stanju *s* s vjerojatnostima proporcionalnima vrijednostima u Q-tablici. Na početku, kada su sve vrijednosti u Q-tablici iste, to će biti nasumični izbor, ali kako učimo o okolišu, sve ćemo češće birati optimalnu putanju uz povremeni izbor neistraženih opcija.
+
+## Implementacija u Pythonu
+
+Spremni smo za implementaciju algoritma učenja. Prije toga trebamo još i funkciju koja će raznorazne vrijednosti u Q-tablici pretvoriti u vektor vjerojatnosti za odgovarajuće akcije.
+
+1. Kreirajte funkciju `probs()`:
+
+ ```python
+ def probs(v,eps=1e-4):
+ v = v-v.min()+eps
+ v = v/v.sum()
+ return v
+ ```
+
+ Dodajemo malo `eps` originalnom vektoru da izbjegnemo dijeljenje s 0 u početnom slučaju, kad su svi elementi vektora jednaki.
+
+Pokrenite algoritam učenja kroz 5000 eksperimenata, nazvanih i **epohama**: (blok koda 8)
+```python
+ for epoch in range(5000):
+
+ # Odaberi početnu točku
+ m.random_start()
+
+ # Započni putovanje
+ n=0
+ cum_reward = 0
+ while True:
+ x,y = m.human
+ v = probs(Q[x,y])
+ a = random.choices(list(actions),weights=v)[0]
+ dpos = actions[a]
+ m.move(dpos,check_correctness=False) # dopuštamo igraču da se pomakne izvan ploče, što završava epizodu
+ r = reward(m)
+ cum_reward += r
+ if r==end_reward or cum_reward < -1000:
+ lpath.append(n)
+ break
+ alpha = np.exp(-n / 10e5)
+ gamma = 0.5
+ ai = action_idx[a]
+ Q[x,y,ai] = (1 - alpha) * Q[x,y,ai] + alpha * (r + gamma * Q[x+dpos[0], y+dpos[1]].max())
+ n+=1
+```
+
+Nakon izvršavanja algoritma, Q-tablica trebala bi biti ažurirana vrijednostima koje definiraju privlačnost različitih akcija u svakom koraku. Možemo pokušati vizualizirati Q-tablicu tako da nacrtamo vektor u svakoj ćeliji koji pokazuje željeni smjer kretanja. Radi jednostavnosti, umjesto vrha strelice crtamo mali krug.
+
+
## Provjera politike
-Budući da Q-Tablica prikazuje "privlačnost" svake akcije u svakom stanju, vrlo je jednostavno koristiti je za definiranje učinkovitog kretanja u našem svijetu. U najjednostavnijem slučaju, možemo odabrati akciju koja odgovara najvećoj vrijednosti u Q-Tablici: (kodni blok 9)
+Kako Q-tablica prikazuje "privlačnost" svake akcije u svakom stanju, relativno je lako koristiti je za definiranje učinkovite navigacije u našem svijetu. U najjednostavnijem slučaju, možemo izabrati akciju s najvećom Q-vrijednošću: (blok koda 9)
```python
def qpolicy_strict(m):
@@ -198,17 +274,18 @@ def qpolicy_strict(m):
walk(m,qpolicy_strict)
```
-> Ako nekoliko puta isprobate gornji kod, možda ćete primijetiti da se ponekad "zaglavi" i morate pritisnuti gumb STOP u bilježnici kako biste ga prekinuli. To se događa jer mogu postojati situacije u kojima dva stanja "pokazuju" jedno na drugo u smislu optimalne Q-Vrijednosti, u kojem slučaju agent završava krećući se između tih stanja beskonačno.
+
+> Ako nekoliko puta pokušate gore navedeni kod, možda ćete primijetiti da se ponekad "zamrzne" i morate pritisnuti gumb STOP u bilježnici da ga prekinete. To se događa jer mogu postojati situacije kada se dva stanja "pokazuju" jedno na drugo u smislu optimalne Q-vrijednosti, u kojem slučaju agent na kraju naizmjence prelazi između tih stanja beskonačno.
## 🚀Izazov
-> **Zadatak 1:** Modificirajte funkciju `walk` kako biste ograničili maksimalnu duljinu puta na određeni broj koraka (recimo, 100) i promatrajte kako gornji kod povremeno vraća ovu vrijednost.
+> **Zadatak 1:** Izmijenite funkciju `walk` da ograniči maksimalnu duljinu puta na određeni broj koraka (recimo 100) i promatrajte kako gornji kod s vremena na vrijeme vraća tu vrijednost.
-> **Zadatak 2:** Modificirajte funkciju `walk` tako da se ne vraća na mjesta na kojima je već bio. Ovo će spriječiti da se `walk` ponavlja, no agent i dalje može završiti "zarobljen" na lokaciji s koje ne može pobjeći.
+> **Zadatak 2:** Izmijenite funkciju `walk` tako da se ne vraća na mjesta na kojima je već bio ranije. Time će se spriječiti petljanje `walk` funkcije, no agent se i dalje može "zaglavljivati" na mjestu iz kojeg ne može pobjeći.
## Navigacija
-Bolja navigacijska politika bila bi ona koju smo koristili tijekom treninga, a koja kombinira eksploataciju i istraživanje. U ovoj politici odabiremo svaku akciju s određenom vjerojatnošću, proporcionalno vrijednostima u Q-Tablici. Ova strategija može i dalje rezultirati time da se agent vraća na poziciju koju je već istražio, ali, kao što možete vidjeti iz koda dolje, rezultira vrlo kratkim prosječnim putem do željene lokacije (zapamtite da `print_statistics` pokreće simulaciju 100 puta): (kodni blok 10)
+Bolja navigacijska politika bila bi ona koju smo koristili tijekom učenja, koja kombinira eksploataciju i istraživanje. U ovoj politici ćemo odabrati svaku radnju s određenom vjerojatnošću, proporcionalnom vrijednostima u Q-tablici. Ova strategija i dalje može rezultirati time da se agent vrati na poziciju koju je već istražio, ali kao što možete vidjeti iz koda dolje, rezultat je vrlo kratak prosječni put do željene lokacije (zapamtite da `print_statistics` pokreće simulaciju 100 puta): (blok koda 10)
```python
def qpolicy(m):
@@ -220,28 +297,32 @@ def qpolicy(m):
print_statistics(qpolicy)
```
-Nakon pokretanja ovog koda, trebali biste dobiti znatno manju prosječnu duljinu puta nego prije, u rasponu od 3-6.
+Nakon pokretanja ovog koda, trebali biste dobiti znatno manju prosječnu duljinu puta nego prije, u rasponu od 3 do 6.
## Istraživanje procesa učenja
-Kao što smo spomenuli, proces učenja je ravnoteža između istraživanja i korištenja stečenog znanja o strukturi prostora problema. Vidjeli smo da su rezultati učenja (sposobnost pomaganja agentu da pronađe kratak put do cilja) poboljšani, ali također je zanimljivo promatrati kako se prosječna duljina puta ponaša tijekom procesa učenja:
+Kao što smo spomenuli, proces učenja je balans između istraživanja i eksploatacije stečenog znanja o strukturi problema. Vidjeli smo da su se rezultati učenja (sposobnost da agent nađe kratak put do cilja) poboljšali, ali također je zanimljivo promatrati kako se prosječna duljina puta ponaša tijekom procesa učenja:
+
+
-## Sažetak naučenog:
+Zaključci učenja mogu se sažeti kao:
-- **Prosječna duljina puta raste**. Ono što ovdje vidimo jest da na početku prosječna duljina puta raste. To je vjerojatno zbog činjenice da, kada ništa ne znamo o okolišu, vjerojatno ćemo se zaglaviti u lošim stanjima, poput vode ili vuka. Kako učimo više i počnemo koristiti to znanje, možemo dulje istraživati okoliš, ali još uvijek ne znamo dobro gdje se nalaze jabuke.
+- **Prosječna duljina puta se povećava**. Ono što vidimo ovdje je da se u početku prosječna duljina puta povećava. To je vjerojatno zbog toga što, kad ništa ne znamo o okolišu, vjerojatno ćemo se zaglaviti u lošim stanjima, vodi ili vuku. Kako učimo više i počinjemo koristiti to znanje, možemo duže istraživati okoliš, ali još uvijek ne znamo dobro gdje se nalaze jabuke.
-- **Duljina puta se smanjuje kako učimo više**. Kada dovoljno naučimo, agentu postaje lakše postići cilj, a duljina puta počinje se smanjivati. Međutim, još uvijek smo otvoreni za istraživanje, pa često skrećemo s najboljeg puta i istražujemo nove opcije, čime put postaje dulji od optimalnog.
+- **Duljina puta se smanjuje kako učimo**. Kada dovoljno naučimo, agentu je lakše postići cilj, pa duljina puta počinje opadati. Međutim, još uvijek smo otvoreni za istraživanje, pa se često udaljimo od najboljeg puta i isprobavamo nove opcije, čineći put duljim od optimalnog.
-- **Duljina naglo raste**. Ono što također primjećujemo na ovom grafu jest da u nekom trenutku duljina naglo raste. To ukazuje na stohastičku prirodu procesa i da u nekom trenutku možemo "pokvariti" koeficijente u Q-Tablici prepisivanjem novih vrijednosti. Ovo bi idealno trebalo minimizirati smanjenjem stope učenja (na primjer, prema kraju treninga, prilagođavamo vrijednosti u Q-Tablici samo malim iznosom).
+- **Duljina naglo raste**. Također primjećujemo na ovom grafikonu da je u nekom trenutku duljina naglo porasla. To upućuje na stohastičku prirodu procesa i da možemo u nekom trenutku "pokvariti" koeficijente Q-tablice prebrisavanjem novim vrijednostima. To bi idealno trebalo biti minimizirano smanjenjem stope učenja (na primjer, prema kraju treninga, vrijednosti Q-tablice se prilagođavaju samo za malu vrijednost).
-Sveukupno, važno je zapamtiti da uspjeh i kvaliteta procesa učenja značajno ovise o parametrima, poput stope učenja, smanjenja stope učenja i faktora diskonta. Ti se parametri često nazivaju **hiperparametri**, kako bi se razlikovali od **parametara**, koje optimiziramo tijekom treninga (na primjer, koeficijenti u Q-Tablici). Proces pronalaženja najboljih vrijednosti hiperparametara naziva se **optimizacija hiperparametara**, i zaslužuje zasebnu temu.
+Sveukupno, važno je zapamtiti da uspjeh i kvaliteta procesa učenja značajno ovise o parametrima, kao što su stopa učenja, opadanje stope učenja i faktor diskonta. Ti se često nazivaju **hiperparametri** kako bi ih se razlikovalo od **parametara**, koje optimiziramo tijekom treninga (na primjer, koeficijenti Q-tablice). Proces pronalaska najboljih vrijednosti hiperparametara naziva se **optimizacija hiperparametara** i zaslužuje zasebnu temu.
-## [Kviz nakon predavanja](https://ff-quizzes.netlify.app/en/ml/)
+## [Kviza nakon predavanja](https://ff-quizzes.netlify.app/en/ml/)
## Zadatak
[Realističniji svijet](assignment.md)
---
-**Odricanje od odgovornosti**:
-Ovaj dokument je preveden korištenjem AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati mjerodavnim izvorom. Za ključne informacije preporučuje se profesionalni prijevod od strane stručnjaka. Ne preuzimamo odgovornost za bilo kakva nesporazuma ili pogrešna tumačenja koja proizlaze iz korištenja ovog prijevoda.
\ No newline at end of file
+
+**Napomena**:
+Ovaj dokument je preveden korištenjem AI prevoditeljskog servisa [Co-op Translator](https://github.com/Azure/co-op-translator). Iako težimo točnosti, imajte na umu da automatski prijevodi mogu sadržavati greške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za važne informacije preporuča se profesionalni ljudski prijevod. Nismo odgovorni za bilo kakva nesporazumevanja ili pogrešne interpretacije koje proizlaze iz korištenja ovog prijevoda.
+
\ No newline at end of file
diff --git a/translations/hu/.co-op-translator.json b/translations/hu/.co-op-translator.json
index fac84676b..76823e35e 100644
--- a/translations/hu/.co-op-translator.json
+++ b/translations/hu/.co-op-translator.json
@@ -24,8 +24,8 @@
"language_code": "hu"
},
"1-Introduction/3-fairness/README.md": {
- "original_hash": "9a6b702d1437c0467e3c5c28d763dac2",
- "translation_date": "2025-09-05T15:59:53+00:00",
+ "original_hash": "0f00d72169a0d37eecfd16d71e01700a",
+ "translation_date": "2026-07-14T04:26:34+00:00",
"source_file": "1-Introduction/3-fairness/README.md",
"language_code": "hu"
},
@@ -54,8 +54,8 @@
"language_code": "hu"
},
"2-Regression/1-Tools/README.md": {
- "original_hash": "fa81d226c71d5af7a2cade31c1c92b88",
- "translation_date": "2025-09-05T15:21:00+00:00",
+ "original_hash": "0b8635427b582d03ea4ab7089b93e505",
+ "translation_date": "2026-07-14T04:23:00+00:00",
"source_file": "2-Regression/1-Tools/README.md",
"language_code": "hu"
},
@@ -72,8 +72,8 @@
"language_code": "hu"
},
"2-Regression/2-Data/README.md": {
- "original_hash": "7c077988328ebfe33b24d07945f16eca",
- "translation_date": "2025-09-05T15:24:45+00:00",
+ "original_hash": "a58b2c4d16c6b122643391745ac15af6",
+ "translation_date": "2026-07-14T04:24:13+00:00",
"source_file": "2-Regression/2-Data/README.md",
"language_code": "hu"
},
@@ -89,6 +89,12 @@
"source_file": "2-Regression/2-Data/solution/Julia/README.md",
"language_code": "hu"
},
+ "2-Regression/2-Data/solution/notebook.ipynb": {
+ "original_hash": "96b95f8cf473481f2f371de8156f1571",
+ "translation_date": "2026-07-14T04:07:56+00:00",
+ "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
+ "language_code": "hu"
+ },
"2-Regression/3-Linear/README.md": {
"original_hash": "8b776e731c35b171d316d01d0e7b1369",
"translation_date": "2026-04-26T19:02:03+00:00",
@@ -355,7 +361,7 @@
},
"6-NLP/5-Hotel-Reviews-2/README.md": {
"original_hash": "2c742993fe95d5bcbb2846eda3d442a1",
- "translation_date": "2025-09-05T17:07:14+00:00",
+ "translation_date": "2026-07-14T04:22:01+00:00",
"source_file": "6-NLP/5-Hotel-Reviews-2/README.md",
"language_code": "hu"
},
@@ -457,7 +463,7 @@
},
"8-Reinforcement/1-QLearning/README.md": {
"original_hash": "911efd5e595089000cb3c16fce1beab8",
- "translation_date": "2025-09-05T16:38:33+00:00",
+ "translation_date": "2026-07-14T04:25:27+00:00",
"source_file": "8-Reinforcement/1-QLearning/README.md",
"language_code": "hu"
},
@@ -523,7 +529,7 @@
},
"9-Real-World/2-Debugging-ML-Models/README.md": {
"original_hash": "df2b538e8fbb3e91cf0419ae2f858675",
- "translation_date": "2025-09-05T15:54:19+00:00",
+ "translation_date": "2026-07-14T04:27:49+00:00",
"source_file": "9-Real-World/2-Debugging-ML-Models/README.md",
"language_code": "hu"
},
@@ -581,6 +587,19 @@
"source_file": "TROUBLESHOOTING.md",
"language_code": "hu"
},
+ "__translation_failures__": {
+ "sketchnotes/LICENSE.md": {
+ "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f",
+ "source_file": "sketchnotes/LICENSE.md",
+ "language_code": "hu",
+ "failure_date": "2026-07-14T04:20:21+00:00",
+ "status": "failed",
+ "error_type": "TranslationIncompleteError",
+ "error_message": "Markdown translation remained incomplete for chunk 1.1.1 of 'LICENSE.md', and the chunk could not be split further.",
+ "translator_version": "0.20.0",
+ "failure_policy_version": 1
+ }
+ },
"docs/_sidebar.md": {
"original_hash": "68dd06c685f6ce840e0acfa313352e7c",
"translation_date": "2025-09-05T15:48:22+00:00",
diff --git a/translations/hu/1-Introduction/3-fairness/README.md b/translations/hu/1-Introduction/3-fairness/README.md
index 434f554bb..634e62920 100644
--- a/translations/hu/1-Introduction/3-fairness/README.md
+++ b/translations/hu/1-Introduction/3-fairness/README.md
@@ -1,134 +1,167 @@
-# Gépi tanulási megoldások építése felelős AI-val
-
-
-> Sketchnote készítette: [Tomomi Imura](https://www.twitter.com/girlie_mac)
+# Felelős MI alapú gépi tanulási megoldások építése
+
+
+> Vázlatrajz: [Tomomi Imura](https://www.twitter.com/girlie_mac)
## [Előadás előtti kvíz](https://ff-quizzes.netlify.app/en/ml/)
-
+
## Bevezetés
-Ebben a tananyagban elkezdjük felfedezni, hogyan hat a gépi tanulás a mindennapi életünkre. Már most is rendszerek és modellek vesznek részt napi döntéshozatali feladatokban, például egészségügyi diagnózisokban, hitelkérelmek jóváhagyásában vagy csalások észlelésében. Ezért fontos, hogy ezek a modellek megbízható eredményeket nyújtsanak. Ahogy bármely szoftveralkalmazás, az AI rendszerek is elmaradhatnak az elvárásoktól, vagy nemkívánatos eredményt hozhatnak. Ezért elengedhetetlen, hogy megértsük és magyarázni tudjuk egy AI modell viselkedését.
+Ebben a tananyagban elkezded felfedezni, hogyan befolyásolja a gépi tanulás a mindennapi életünket. Már most is rendszerek és modellek vesznek részt napi döntéshozatali folyamatokban, például egészségügyi diagnózisokban, kölcsönkérelmek elbírálásában vagy csalás felismerésében. Ezért fontos, hogy ezek a modellek jól működjenek, és megbízható eredményeket nyújtsanak. Ahogyan bármely szoftveralkalmazás, az MI rendszerek is elvárásokat nem teljesíthetnek vagy nem kívánt kimenetet produkálhatnak. Ezért elengedhetetlen megérteni és megmagyarázni egy MI modell viselkedését.
-Képzeljük el, mi történik, ha az adatok, amelyeket ezeknek a modelleknek az építéséhez használunk, bizonyos demográfiai csoportokat nem tartalmaznak, például faji, nemi, politikai nézetek, vallás, vagy aránytalanul képviselik ezeket. Mi történik, ha a modell kimenete egyes demográfiai csoportokat előnyben részesít? Mi a következmény az alkalmazásra nézve? Továbbá, mi történik, ha a modell káros hatást gyakorol, és árt az embereknek? Ki felelős az AI rendszerek viselkedéséért? Ezeket a kérdéseket fogjuk megvizsgálni ebben a tananyagban.
+Képzeld el, mi történhet, ha az általad használt adatok egyes demográfiai csoportokat, például fajt, nemeket, politikai nézeteket, vallást hiányosan vagy aránytalanul képviselnek a modellek építése során. Mi történik, ha a modell kimenetét úgy értelmezik, hogy egyes demográfiai csoportok javára torzít? Mi ennek a következménye az alkalmazásra nézve? Ráadásul mi történik, ha a modell káros végkimenetelt produkál és árt az embereknek? Ki felel az MI rendszer viselkedéséért? Ezek néhány kérdés, amelyeket ebben a tananyagban fogunk megvizsgálni.
-Ebben a leckében:
+Ebben az órában:
-- Felhívjuk a figyelmet a gépi tanulásban való méltányosság fontosságára és a méltányossággal kapcsolatos károkra.
-- Megismerkedünk azzal a gyakorlattal, hogy a szélsőséges eseteket és szokatlan forgatókönyveket vizsgáljuk a megbízhatóság és biztonság érdekében.
-- Megértjük, miért fontos mindenkit felhatalmazni inkluzív rendszerek tervezésével.
-- Felfedezzük, milyen létfontosságú a személyes adatok és az emberek biztonságának védelme.
-- Megértjük, miért fontos az "üvegdoboz" megközelítés az AI modellek viselkedésének magyarázatában.
-- Tudatosítjuk, hogy az elszámoltathatóság elengedhetetlen az AI rendszerekbe vetett bizalom kiépítéséhez.
+- Növelni fogod az igazságosság fontosságával kapcsolatos tudatosságodat a gépi tanulásban, valamint az igazságossággal kapcsolatos ártalmak terén.
+- Megismerkedsz a szokatlan esetek és kiugró értékek feltárásának gyakorlatával a megbízhatóság és biztonság érdekében.
+- Megérted, hogy miért fontos mindenkit képessé tenni a befogadó rendszerek megtervezésével.
+- Feltárjuk, milyen létfontosságú az adatok és emberek magánéletének és biztonságának védelme.
+- Meglátod, hogy miért fontos átlátható („üveg doboz”) megközelítés az MI modellek viselkedésének magyarázatához.
+- Tudatos leszel arról, hogy a felelősségvállalás mennyire elengedhetetlen a bizalom megteremtéséhez az MI rendszerekben.
## Előfeltétel
-Előfeltételként kérjük, végezze el a "Felelős AI alapelvei" tanulási útvonalat, és nézze meg az alábbi videót a témáról:
+Előfeltételként kérjük, vedd fel a "Felelős MI elvei" tanulási útvonalat, és nézd meg az alábbi videót a témában:
-Tudjon meg többet a felelős AI-ról ezen a [tanulási útvonalon](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)
+Tudj meg többet a Felelős MI-ről ezen a [Tanulási Útvonalon](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)
-[](https://youtu.be/dnC8-uUZXSc "Microsoft megközelítése a felelős AI-hoz")
+[](https://youtu.be/dnC8-uUZXSc "Microsoft megközelítése a Felelős MI-hez")
-> 🎥 Kattintson a fenti képre a videóért: Microsoft megközelítése a felelős AI-hoz
+> 🎥 Kattints a képre a videóért: Microsoft megközelítése a Felelős MI-hez
-## Méltányosság
+## Igazságosság
-Az AI rendszereknek mindenkit méltányosan kell kezelniük, és el kell kerülniük, hogy hasonló csoportokat különböző módon érintsenek. Például, amikor az AI rendszerek orvosi kezelési tanácsokat, hitelkérelmeket vagy foglalkoztatási ajánlásokat nyújtanak, ugyanazokat az ajánlásokat kell tenniük mindenki számára, akik hasonló tünetekkel, pénzügyi helyzettel vagy szakmai képesítéssel rendelkeznek. Mindannyian örökölt előítéleteket hordozunk magunkban, amelyek befolyásolják döntéseinket és cselekedeteinket. Ezek az előítéletek megjelenhetnek az adatokban, amelyeket az AI rendszerek képzéséhez használunk. Az ilyen manipuláció néha akaratlanul történik. Gyakran nehéz tudatosan felismerni, mikor vezetünk be előítéletet az adatokba.
+Az MI rendszereknek mindenkit igazságosan kell kezelniük, és kerülnie kell, hogy hasonló csoportokat eltérően érintsenek. Például amikor MI rendszerek orvosi kezelésben, kölcsönkérelmek elbírálásában vagy foglalkoztatásban adnak útmutatást, akkor hasonló tünetekkel, anyagi háttérrel vagy szakmai képesítéssel rendelkező embereknek ugyanazokat a javaslatokat kell adniuk. Mindannyiunkban öröklött elfogultságok vannak, amelyek döntéseinket és cselekedeteinket befolyásolják. Ezek az elfogultságok a gépi tanulási modellek képzéséhez használt adatokban is megjelenhetnek. Az ilyen torzítás néha akaratlanul is előfordulhat. Sokszor tudatosan nehéz megállapítani, mikor vezetünk be elfogultságot az adatba.
-**„Méltánytalanság”** olyan negatív hatásokat vagy „károkat” foglal magában, amelyek egy csoportot érintenek, például faji, nemi, életkori vagy fogyatékossági státusz alapján. A méltányossággal kapcsolatos főbb károk a következők:
+**„Igazságtalanság”** negatív hatásokat vagy „károkat” jelent egy adott csoport számára, például faji, nemi, életkori vagy fogyatékossági státusz alapján definiált embereket. Az igazságossággal kapcsolatos legfőbb károk az alábbi kategóriákba sorolhatók:
-- **Elosztás**, ha például egy nem vagy etnikum előnyben részesül egy másikkal szemben.
-- **Szolgáltatás minősége**. Ha az adatokat egy konkrét forgatókönyvre képezzük, de a valóság sokkal összetettebb, az gyenge teljesítményű szolgáltatáshoz vezet. Például egy kézmosó adagoló, amely nem érzékeli a sötét bőrű embereket. [Referencia](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
-- **Becsmérlés**. Valami vagy valaki igazságtalan kritizálása és címkézése. Például egy képfelismerő technológia hírhedten gorillának címkézte a sötét bőrű emberek képeit.
-- **Túl- vagy alulreprezentáció**. Az a gondolat, hogy egy bizonyos csoportot nem látunk egy bizonyos szakmában, és minden szolgáltatás vagy funkció, amely ezt tovább erősíti, hozzájárul a kárhoz.
-- **Sztereotipizálás**. Egy adott csoportot előre meghatározott attribútumokkal társítani. Például egy angol és török közötti nyelvi fordítórendszer pontatlanságokat mutathat a nemekhez kapcsolódó sztereotip asszociációk miatt.
+- **Elosztás**, ha például egy nem vagy etnikum előnyben részesül a másikkal szemben.
+- **Szolgáltatás minősége**. Ha egy specifikus szcenárióra tanítasz adatot, de a valóság sokkal összetettebb, az gyenge teljesítményű szolgáltatáshoz vezet. Például egy kézmosószappan adagoló látszólag nem érzékeli a sötét bőrű embereket. [Forrás](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
+- **Megvetés**. Valami vagy valaki igazságtalan kritikája és bántó címkézése. Például egy képosztályozó technológia hírhedten sötét bőrű emberek képeit majmokként címkézte.
+- **Túl- vagy alulreprezentálás**. Az az elképzelés, hogy egy adott csoport nem látható egy bizonyos szakmában, és minden olyan szolgáltatás vagy funkció, amely ezt fenntartja, káros hatással van.
+- **Sztenderdizálás**. Egy adott csoportot előre meghatározott tulajdonságokkal társítanak. Például egy angol és török nyelv közötti fordító rendszer pontatlanságokkal küzdhet a nemi sztereotípiák miatt.
-
-> Fordítás törökre
+
+> fordítás törökre
-
-> Fordítás vissza angolra
+
+> fordítás vissza angolra
-Az AI rendszerek tervezése és tesztelése során biztosítanunk kell, hogy az AI méltányos legyen, és ne legyen programozva előítéletes vagy diszkriminatív döntések meghozatalára, amelyeket az emberek számára is tiltanak. Az AI és gépi tanulás méltányosságának garantálása továbbra is összetett társadalmi-technikai kihívás.
+MI rendszerek tervezése és tesztelése során biztosítani kell, hogy az MI igazságos legyen, és ne programozzanak be elfogult vagy diszkriminatív döntéseket, amit az embereknek is tilos tenni. Az igazságosság garantálása MI-ben és gépi tanulásban összetett szociotechnikai kihívás marad.
### Megbízhatóság és biztonság
-Az AI rendszereknek megbízhatónak, biztonságosnak és következetesnek kell lenniük normál és váratlan körülmények között. Fontos tudni, hogyan viselkednek az AI rendszerek különböző helyzetekben, különösen szélsőséges esetekben. Az AI megoldások építésekor jelentős figyelmet kell fordítani arra, hogyan kezeljük az AI megoldások által tapasztalt különféle körülményeket. Például egy önvezető autónak az emberek biztonságát kell elsődleges prioritásként kezelnie. Ennek eredményeként az autót működtető AI-nak figyelembe kell vennie az összes lehetséges forgatókönyvet, amelyet az autó találhat, például éjszaka, viharok vagy hóviharok, gyerekek, akik átszaladnak az úton, háziállatok, útépítések stb. Az AI rendszer megbízható és biztonságos kezelése széles körülmények között tükrözi az adatkutató vagy AI fejlesztő által a rendszer tervezése vagy tesztelése során figyelembe vett előrelátás szintjét.
+A bizalom kiépítéséhez az MI rendszereknek megbízhatónak, biztonságosnak és következetesnek kell lenniük normál és váratlan körülmények között egyaránt. Fontos tudni, hogyan viselkednek az MI rendszerek különféle helyzetekben, különösen, ha kiugró esetekről van szó. MI megoldások építésekor nagy figyelmet kell fordítani arra, hogyan kezeljük azokat a sokféle helyzetet, amivel az MI találkozhat. Például az önvezető autónak mindenekelőtt az emberek biztonságát kell előtérbe helyeznie. Ezért az autót működtető MI-nek minden lehetséges helyzetet figyelembe kell vennie, például éjszaka, viharban vagy hóviharban, gyerekek átfutása az úton, háziállatok, útlezárások stb. Az, hogy egy MI rendszer mennyire képes megbízhatóan és biztonságosan kezelni szélsőséges helyzeteket, azt tükrözi, mennyire előrelátó volt az adatkutató vagy MI fejlesztő a rendszer tervezése vagy tesztelése során.
+
+> [🎥 Kattints ide a videóért: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
-> [🎥 Kattintson ide a videóért: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
+### Befogadás
-### Inkluzivitás
+Az MI rendszereket úgy kell tervezni, hogy mindenkit bevonjanak és képessé tegyenek. MI rendszerek tervezése és megvalósítása során az adatkutatók és MI fejlesztők azonosítják és kezelik az esetleges akadályokat, amelyek véletlenül kizárhatnak embereket. Például a világon 1 milliárd fogyatékkal élő ember él. Az MI előrehaladtával ezek az emberek könnyebben férhetnek hozzá széles körű információkhoz és lehetőségekhez mindennapi életük során. Az akadályok kezelése lehetőséget teremt innovációra és olyan MI termékek fejlesztésére, amelyek jobb élményt nyújtanak mindenki számára.
-Az AI rendszereket úgy kell megtervezni, hogy mindenkit bevonjanak és felhatalmazzanak. Az AI rendszerek tervezése és megvalósítása során az adatkutatók és AI fejlesztők azonosítják és kezelik a rendszerben lévő potenciális akadályokat, amelyek akaratlanul kizárhatnak embereket. Például világszerte 1 milliárd ember él fogyatékossággal. Az AI fejlődésével könnyebben hozzáférhetnek információkhoz és lehetőségekhez a mindennapi életükben. Az akadályok kezelésével lehetőséget teremtünk az innovációra és az AI termékek fejlesztésére, amelyek jobb élményeket nyújtanak mindenki számára.
+> [🎥 Kattints ide a videóért: befogadás az MI-ben](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
-> [🎥 Kattintson ide a videóért: inkluzivitás az AI-ban](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
+### Biztonság és adatvédelem
-### Biztonság és adatvédelem
+Az MI rendszereknek biztonságosnak kell lenniük, és tiszteletben kell tartaniuk az emberek magánéletét. Az emberek kevésbé bíznak meg olyan rendszerekben, amelyek veszélyeztetik magánéletüket, adataikat vagy életüket. Gépi tanulási modellek képzésekor jó eredmények eléréséhez adatokra támaszkodunk. Ennek során figyelembe kell venni az adatok származását és sértetlenségét. Például az adatokat a felhasználó szolgáltatta vagy nyilvánosan hozzáférhetőek? Ezután az adatfeldolgozás során létfontosságú olyan MI rendszereket fejleszteni, amelyek képesek védelmezni az érzékeny információkat és ellenállni a támadásoknak. Mivel az MI egyre elterjedtebb, a magánélet védelme és fontos személyes vagy üzleti információk védelme egyre kritikusabbá és összetettebbé válik. A magánélet és adatbiztonság különösen nagy figyelmet igényel az MI-nél, mert az adatokhoz való hozzáférés elengedhetetlen az MI rendszerek számára, hogy pontos és megalapozott előrejelzéseket és döntéseket hozzanak az emberekről.
-Az AI rendszereknek biztonságosnak kell lenniük, és tiszteletben kell tartaniuk az emberek magánéletét. Az emberek kevésbé bíznak azokban a rendszerekben, amelyek veszélyeztetik a magánéletüket, információikat vagy életüket. A gépi tanulási modellek képzésekor az adatokra támaszkodunk a legjobb eredmények elérése érdekében. Ennek során figyelembe kell venni az adatok eredetét és integritását. Például, az adatok felhasználói beküldésűek vagy nyilvánosan elérhetők voltak? Továbbá, az adatokkal való munka során elengedhetetlen olyan AI rendszerek fejlesztése, amelyek képesek megvédeni a bizalmas információkat és ellenállni a támadásoknak. Ahogy az AI egyre elterjedtebbé válik, a magánélet védelme és a fontos személyes és üzleti információk biztonságának megőrzése egyre kritikusabbá és összetettebbé válik. Az adatvédelem és adatbiztonság kérdései különösen nagy figyelmet igényelnek az AI esetében, mivel az adatokhoz való hozzáférés elengedhetetlen az AI rendszerek számára, hogy pontos és megalapozott előrejelzéseket és döntéseket hozzanak az emberekről.
+> [🎥 Kattints ide a videóért: biztonság az MI-ben](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-> [🎥 Kattintson ide a videóért: biztonság az AI-ban](https://www.microsoft.com/videoplayer/embed/RE4voJF)
+- Iparágként jelentős előrelépéseket értünk el az adatvédelem és biztonság terén, amit nagymértékben a GDPR (Általános Adatvédelmi Rendelet) szabályozásai ösztönöznek.
+- Azonban az MI rendszereknél el kell ismernünk a feszültséget a személyes adatok növekvő szükséglete és a magánélet védelme között.
+- Ahogy az internet megjelenésekor a hálózatba kötött számítógépek révén, úgy napjainkban is nagymértékben megnőtt az MI-hez kapcsolódó biztonsági problémák száma.
+- Ugyanakkor azt is láttuk, hogy az MI-t a biztonság javítására is használják. Például a legtöbb modern vírusirtó szoftvert ma MI heurisztikák vezérlik.
+- Biztosítani kell, hogy az adatkutatási folyamataink harmonikusan illeszkedjenek a legújabb adatvédelmi és biztonsági gyakorlatokhoz.
-- Az iparág jelentős előrelépéseket tett az adatvédelem és biztonság terén, amelyet jelentősen ösztönöztek olyan szabályozások, mint a GDPR (Általános Adatvédelmi Rendelet).
-- Az AI rendszerekkel azonban el kell ismernünk a feszültséget a személyes adatok szükségessége és a magánélet védelme között.
-- Ahogy az internethez kapcsolt számítógépek születésével, az AI-val kapcsolatos biztonsági problémák száma is jelentősen megnőtt.
-- Ugyanakkor az AI-t a biztonság javítására is használjuk. Például a legtöbb modern víruskereső szkennert AI-alapú heurisztikák vezérlik.
-- Biztosítanunk kell, hogy az adatkutatási folyamataink harmonikusan illeszkedjenek a legújabb adatvédelmi és biztonsági gyakorlatokhoz.
### Átláthatóság
+Az MI rendszereknek érthetőknek kell lenniük. Az átláthatóság fontos része az MI rendszerek és azok elemeinek viselkedésének magyarázata. Az MI rendszerek jobb megértése megköveteli, hogy az érintettek megértsék, hogyan és miért működnek, hogy felismerjék a potenciális teljesítményproblémákat, biztonsági és adatvédelmi aggályokat, elfogultságokat, kizáró gyakorlatokat vagy nem kívánt következményeket. Úgy véljük, hogy azoknak, akik MI rendszereket használnak, őszintén és nyíltan kell beszámolniuk arról, mikor, miért és hogyan döntöttek a bevetésükről, valamint a rendszerek korlátairól is. Például, ha egy bank egy MI rendszert használ fogyasztói hitel döntések támogatására, fontos megvizsgálni az eredményeket és megérteni, mely adatok befolyásolják a rendszer javaslatait. A kormányok elkezdték szabályozni az MI-t az iparágakban, ezért az adatkutatóknak és szervezeteknek meg kell tudniuk magyarázni, hogy egy MI rendszer megfelel-e a szabályozási előírásoknak, különösen, ha nem kívánt eredmény született.
+
+> [🎥 Kattints ide a videóért: átláthatóság az MI-ben](https://www.microsoft.com/videoplayer/embed/RE4voJF)
+
+- Mivel az MI rendszerek annyira összetettek, nehéz megérteni működésüket és értelmezni az eredményeket.
+- Ez a megértés hiánya befolyásolja, hogy hogyan kezelik, működtetik és dokumentálják ezeket a rendszereket.
+- Ennél is fontosabb, hogy ez a megértés hiánya befolyásolja az ezeket a rendszereket használó döntéseket.
+
+### Felelősségre vonhatóság
+
+Azoknak, akik MI rendszereket terveznek és alkalmaznak, felelősséget kell vállalniuk a rendszerek működéséért. A felelősség különösen fontos érzékeny technológiák, mint az arcfelismerés esetén. Az utóbbi időben nőtt az érdeklődés az arcfelismerő technológia iránt, különösen a rendvédelmi szervezetek részéről, akik ezt a technológiát olyan célokra látják hasznosnak, mint eltűnt gyermekek felkutatása. Ugyanakkor ezek a technológiák potenciálisan felhasználhatók a kormányok által az állampolgárok alapvető szabadságainak veszélyeztetésére, például az adott személyek folyamatos megfigyelésének engedélyezésére. Ezért az adatkutatóknak és szervezeteknek felelősséget kell vállalniuk az MI rendszerük hatásaiért az egyedekre vagy a társadalomra nézve.
+
+[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft megközelítése a Felelős MI-hez")
+
+> 🎥 Kattints a képre a videóért: Figyelmeztetések az arcfelismerés által okozott tömeges megfigyelésre
+
+Végső soron egyik legnagyobb kérdés a mi generációnknak, az elsőnek, amely az MI-t bevezeti a társadalomba, az, hogyan biztosítsuk, hogy a számítógépek felelősséggel tartozzanak az emberek felé, és hogyan biztosítsuk, hogy a számítógépeket tervező emberek mindenkihez felelősséggel tartozzanak.
+
+## Hatásértékelés
+
+Mielőtt gépi tanulási modellt képeznénk, fontos hatásértékelést végezni az MI rendszer céljának megértéséhez; annak tervezett használatához; hogy hol fogják alkalmazni; és kik fognak interakcióba lépni a rendszerrel. Ezek a jelöltek vagy tesztelők számára hasznosak a rendszer értékelésekor, hogy tudják, milyen tényezőket vegyenek figyelembe a potenciális kockázatok és várható következmények azonosításakor.
+
+Az alábbi területekre kell fókuszálni a hatásértékelés során:
-Az AI rendszereknek érthetőnek kell lenniük. Az átláthatóság kulcsfontosságú része az AI rendszerek és azok összetevőinek viselkedésének magyarázata. Az AI rendszerek megértésének javítása megköveteli, hogy az érintettek megértsék, hogyan és miért működnek, hogy azonosítani tudják a lehetséges teljesítményproblémákat, biztonsági és adatvédelmi aggályokat, előítéleteket, kizáró gyakorlatokat vagy nem szándékos eredményeket. Úgy gondoljuk, hogy azoknak, akik AI rendszereket használnak, őszintének és nyíltnak kell lenniük arról, hogy mikor, miért és hogyan döntenek azok alkalmazása mellett. Valamint a rendszerek korlátairól. Például, ha egy bank AI rendszert használ a fogyasztói hiteldöntések támogatására, fontos megvizsgálni az eredményeket, és megérteni, hogy mely adatok befolyásolják a rendszer ajánlásait. A kormányok elkezdték szabályozni az AI-t az iparágakban, így az adatkutatóknak és szervezeteknek magyarázatot kell adniuk arra, hogy az AI rendszer megfelel-e a szabályozási követelményeknek, különösen, ha nem kívánatos eredmény születik.
+* **Káros hatás az egyénekre**. Fontos tisztában lenni minden korlátozással vagy előírással, a támogatott használaton kívüli alkalmazással vagy ismert korlátozásokkal, amelyek akadályozhatják a rendszer működését annak érdekében, hogy ne használják olyan módon, amely ártalmat okozhat az egyéneknek.
+* **Adatigények**. Az, hogy megértsük, hogyan és hol használja a rendszer az adatokat, lehetővé teszi a felülvizsgálók számára, hogy felmérjék az esetleges adatvédelmi szabályozásokat, például GDPR vagy HIPAA előírásokat. Emellett vizsgálják meg, van-e elegendő adatforrás és mennyiség a képzéshez.
+* **Hatás összefoglalása**. Gyűjtsünk listát a potenciális károkról, amelyek a rendszer használatából eredhetnek. A gépi tanulás életciklusa során vizsgáljuk felül, hogy a felmerült problémákat kezelik vagy mérséklik-e.
+* **Alkalmazható célok** a hat fő elv mindegyikére. Értékeljük, hogy az egyes elvek céljai teljesülnek-e, és hogy vannak-e hiányosságok.
-> [🎥 Kattintson ide a videóért: átláthatóság az AI-ban](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- Mivel az AI rendszerek nagyon összetettek, nehéz megérteni, hogyan működnek és értelmezni az eredményeket.
-- Ez a megértés hiánya befolyásolja, hogyan kezelik, üzemeltetik és dokumentálják ezeket a rendszereket.
-- Ez a megértés hiánya még fontosabb módon befolyásolja azokat a döntéseket, amelyeket ezeknek a rendszereknek az eredményei alapján hoznak.
+## Hibakeresés felelős MI-vel
-### Elszámoltathatóság
+Hasonlóan a szoftveralkalmazások hibakereséséhez, az MI rendszer hibakeresése is szükséges a rendszerben lévő problémák azonosításához és megoldásához. Számos tényező befolyásolhatja, hogy egy modell nem teljesít elvárások szerint vagy nem felel meg a felelős MI elveknek. A hagyományos modell teljesítménymutatók többsége egy modell teljesítményének mennyiségi összegzése, amely nem elegendő annak elemzésére, hogyan sérti a modell a felelős MI elveit. Továbbá, a gépi tanulási modell egy fekete doboz, amely megnehezíti megérteni, mi befolyásolja a kimenetét, vagy magyarázatot adni, ha hibázik. A tanfolyam későbbi részében megmutatjuk, hogyan használható a Felelős MI műszerfal az MI rendszerek hibakeresésére. A műszerfal átfogó eszközt nyújt adatkutatóknak és MI fejlesztőknek az alábbiak elvégzéséhez:
-Azoknak, akik AI rendszereket terveznek és telepítenek, felelősséget kell vállalniuk rendszereik működéséért. Az elszámoltathatóság szükségessége különösen fontos az érzékeny technológiák, például az arcfelismerés esetében. Az utóbbi időben egyre nagyobb igény mutatkozik az arcfelismerő technológia iránt, különösen a bűnüldöző szervezetek részéről, akik látják a technológia lehetőségeit például eltűnt gyermekek megtalálásában. Azonban ezek a technológiák potenciálisan veszélyeztethetik az állampolgárok alapvető szabadságjogait, például az egyének folyamatos megfigyelésének lehetővé tételével. Ezért az adatkutatóknak és szervezeteknek felelősséget kell vállalniuk AI rendszerük egyénekre vagy társadalomra gyakorolt hatásáért.
+* **Hibaanalízis**. A modell hibák eloszlásának azonosítása, ami befolyásolhatja a rendszer igazságosságát vagy megbízhatóságát.
+* **Modelláttekintés**. Az eltérések felfedezése a modell teljesítményében az adatcsoportok között.
+* **Adatok elemzése**. Az adateloszlás megértése és bármilyen potenciális elfogultság azonosítása az adatokban, amely igazságossági, befogadási és megbízhatósági problémákat okozhat.
+* **Modell értelmezhetősége**. Megérteni, mi befolyásolja a modell előrejelzéseit, ami fontos az átláthatóság és felelősség szempontjából.
-[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft megközelítése a felelős AI-hoz")
-> 🎥 Kattintson a fenti képre a videóért: Figyelmeztetés a tömeges megfigyelés veszélyeire arcfelismeréssel
+## 🚀 Kihívás
+
+Az ártalmak kialakulásának megakadályozása érdekében:
-Végső soron az egyik legnagyobb kérdés generációnk számára, mint az első generáció, amely AI-t hoz a társadalomba, az, hogyan biztosíthatjuk, hogy a számítógépek továbbra is elszámoltathatók maradjanak az emberek számára, és hogyan biztosíthatjuk, hogy a számítógépeket tervező emberek elszámoltathatók maradjanak mindenki más számára.
+- változatos háttérrel és nézőpontokkal rendelkező emberek dolgozzanak a rendszereken
+- olyan adatállományokba fektessünk be, amelyek tükrözik társadalmunk sokszínűségét
+- jobb módszereket dolgozzunk ki a gépi tanulás életciklusa során a felelős MI hibák felismerésére és javítására
-## Hatásvizsgálat
+Gondolkodj el valós életbeli helyzeteken, ahol egy modell megbízhatatlansága egyértelműen megjelenik a modellépítés és felhasználás során. Mit kell még figyelembe vennünk?
-Mielőtt gépi tanulási modellt képeznénk, fontos hatásvizsgálatot végezni, hogy megértsük az AI rendszer célját; mi a tervezett felhasználás; hol lesz telepítve; és kik fognak interakcióba lépni a rendszerrel. Ezek segítenek a rendszer értékelését végzőknek vagy tesztelőknek, hogy tudják, milyen tényezőket kell figyelembe venniük a lehetséges kockázatok és várható következmények azonosításakor.
+## [Előadás utáni kvíz](https://ff-quizzes.netlify.app/en/ml/)
-A hatásvizsgálat során az alábbi területekre kell összpontosítani:
+## Összefoglaló & Önálló tanulás
+
-* **Kedvezőtlen hatás az egyénekre**. Fontos tudatában lenni minden korlátozásnak vagy követelménynek, nem támogatott használatnak vagy ismert korlátozásnak, amelyek akadályozhatják a rendszer teljesítményét, hogy biztosítsuk, hogy a rendszer ne okozzon kárt az egyéneknek.
-* **Adatigények**. Az adatok felhasználásának módj
-Nézd meg ezt a workshopot, hogy mélyebben elmerülj a témákban:
+Ebben a leckében megismerted a gépi tanulásban a méltányosság és igazságtalanság alapfogalmait.
+
+Nézd meg ezt a workshopot, hogy mélyebben elmerülj a témakörökben:
-- A felelős mesterséges intelligencia nyomában: Elvek gyakorlati alkalmazása Besmira Nushi, Mehrnoosh Sameki és Amit Sharma előadásában
+- Felelős MI nyomában: Elvek a gyakorlatban Besmira Nushi, Mehrnoosh Sameki és Amit Sharma előadásában
-[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: Nyílt forráskódú keretrendszer a felelős mesterséges intelligencia építéséhez")
+[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI")
-> 🎥 Kattints a fenti képre a videóért: RAI Toolbox: Nyílt forráskódú keretrendszer a felelős mesterséges intelligencia építéséhez Besmira Nushi, Mehrnoosh Sameki és Amit Sharma előadásában
+> 🎥 Kattints a fenti képre a videóhoz: RAI Toolbox: Nyílt forráskódú keretrendszer felelős MI építéséhez Besmira Nushi, Mehrnoosh Sameki és Amit Sharma előadásában
-Olvasd el továbbá:
+Olvasd el még:
-- Microsoft RAI erőforrásközpontja: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
+- A Microsoft RAI forrásközpontja: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
-- Microsoft FATE kutatócsoportja: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
+- A Microsoft FATE kutatócsoportja: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
-RAI Toolbox:
+RAI Eszköztár:
-- [Responsible AI Toolbox GitHub repository](https://github.com/microsoft/responsible-ai-toolbox)
+- [Responsible AI Toolbox GitHub tárhely](https://github.com/microsoft/responsible-ai-toolbox)
-Olvass az Azure Machine Learning eszközeiről, amelyek a méltányosság biztosítását szolgálják:
+Ismerd meg az Azure Machine Learning eszközeit a méltányosság biztosításához:
-- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
+- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
## Feladat
-[Ismerd meg a RAI Toolboxot](assignment.md)
+[Böngéssz a RAI Eszköztárban](assignment.md)
---
-**Felelősség kizárása**:
-Ez a dokumentum az AI fordítási szolgáltatás, a [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet.
\ No newline at end of file
+
+**Jogi nyilatkozat**:
+Ez a dokumentum az AI fordítási szolgáltatás, a [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével készült. Bár az pontosságra törekszünk, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az anyanyelvén tekintendő hiteles forrásnak. Fontos információk esetén professzionális emberi fordítást javasolunk. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely ebből a fordításból ered.
+
\ No newline at end of file
diff --git a/translations/hu/2-Regression/1-Tools/README.md b/translations/hu/2-Regression/1-Tools/README.md
index 9fbccba09..7ad840047 100644
--- a/translations/hu/2-Regression/1-Tools/README.md
+++ b/translations/hu/2-Regression/1-Tools/README.md
@@ -1,55 +1,55 @@
-# Kezdjük el a Python és a Scikit-learn használatát regressziós modellekhez
+# Kezdjünk neki a Python és a Scikit-learn használatának regressziós modellekhez
-
+
-> Vázlatrajz: [Tomomi Imura](https://www.twitter.com/girlie_mac)
+> Sketchnote készítette [Tomomi Imura](https://www.twitter.com/girlie_mac)
## [Előadás előtti kvíz](https://ff-quizzes.netlify.app/en/ml/)
-> ### [Ez a lecke R nyelven is elérhető!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
+> ### [Ez az óra elérhető R-ben is!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
## Bevezetés
-Ebben a négy leckében megtanulhatod, hogyan építs regressziós modelleket. Rövidesen megbeszéljük, hogy mire használhatók ezek. De mielőtt bármibe belekezdenél, győződj meg róla, hogy a megfelelő eszközök rendelkezésre állnak a folyamat elindításához!
+Ezekben a négy leckében megismered, hogyan kell regressziós modelleket építeni. Hamarosan megbeszéljük, mire valók ezek. De mielőtt bármit is tennél, győződj meg róla, hogy a megfelelő eszközök telepítve vannak a folyamat elindításához!
-Ebben a leckében megtanulod:
+Ebben a leckében megtanulod, hogyan kell:
-- Hogyan konfiguráld a számítógéped helyi gépi tanulási feladatokhoz.
-- Hogyan dolgozz Jupyter notebookokkal.
-- Hogyan használd a Scikit-learn könyvtárat, beleértve annak telepítését.
-- Hogyan fedezd fel a lineáris regressziót egy gyakorlati feladaton keresztül.
+- Konfigurálni a számítógépedet helyi gépi tanulási feladatokhoz.
+- Jupyter Notebookokkal dolgozni.
+- Használni a Scikit-learn könyvtárat, beleértve annak telepítését is.
+- Felfedezni a lineáris regressziót egy gyakorlati feladaton keresztül.
-## Telepítések és konfigurációk
+## Telepítések és beállítások
-[](https://youtu.be/-DfeD2k2Kj0 "ML kezdőknek - Eszközök beállítása gépi tanulási modellek építéséhez")
+[](https://youtu.be/-DfeD2k2Kj0 "Gépi tanulás kezdőknek - Állítsd be az eszközeidet a gépi tanulási modellek építéséhez")
-> 🎥 Kattints a fenti képre egy rövid videóért, amely bemutatja, hogyan konfiguráld a számítógéped a gépi tanuláshoz.
+> 🎥 Kattints a fenti képre egy rövid videó megtekintéséhez, amely végigvezet a számítógép gépi tanuláshoz való beállításán.
-1. **Telepítsd a Python-t**. Győződj meg róla, hogy a [Python](https://www.python.org/downloads/) telepítve van a számítógépeden. A Python-t számos adatfeldolgozási és gépi tanulási feladathoz fogod használni. A legtöbb számítógépes rendszer már tartalmaz Python telepítést. Hasznosak lehetnek a [Python Coding Pack-ek](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) is, amelyek megkönnyítik a beállítást néhány felhasználó számára.
+1. **Telepítsd a Pythont**. Ellenőrizd, hogy [Python](https://www.python.org/downloads/) telepítve van-e a számítógépeden. A Python sok adat tudományi és gépi tanulási feladathoz szükséges. A legtöbb rendszer már tartalmaz Python telepítést. Elérhetők hasznos [Python fejlesztőkészletek](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) is, melyek megkönnyítik a beállítást egyes felhasználók számára.
- A Python bizonyos használati módjai azonban eltérő verziókat igényelhetnek. Ezért hasznos lehet egy [virtuális környezetben](https://docs.python.org/3/library/venv.html) dolgozni.
+ A Python egyes felhasználási módjai egy adott verziót igényelnek, míg mások mást. Emiatt hasznos egy [virtuális környezetben](https://docs.python.org/3/library/venv.html) dolgozni.
-2. **Telepítsd a Visual Studio Code-ot**. Győződj meg róla, hogy a Visual Studio Code telepítve van a számítógépedre. Kövesd ezeket az utasításokat a [Visual Studio Code telepítéséhez](https://code.visualstudio.com/). Ebben a kurzusban a Python-t a Visual Studio Code-ban fogod használni, ezért érdemes lehet felfrissíteni a tudásodat arról, hogyan [konfiguráld a Visual Studio Code-ot](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) Python fejlesztéshez.
+2. **Telepítsd a Visual Studio Code-ot**. Győződj meg róla, hogy telepítve van a Visual Studio Code a számítógépeden. Kövesd az [Visual Studio Code telepítési útmutatóját](https://code.visualstudio.com/) az alap telepítéshez. A tanfolyamban Python kódot a Visual Studio Code-ban fogsz írni, ezért érdemes átnézni, hogyan kell [Visual Studio Code-ot beállítani Python fejlesztéshez](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott).
- > Ismerkedj meg a Python-nal ezeknek a [Learn moduloknak](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) a segítségével.
+ > Ismerkedj meg alaposan a Python használatával az alábbi [tanulási modulok](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) segítségével.
>
- > [](https://youtu.be/yyQM70vi7V8 "Python beállítása a Visual Studio Code-ban")
+ > [](https://youtu.be/yyQM70vi7V8 "Python beállítása Visual Studio Code-ban")
>
- > 🎥 Kattints a fenti képre egy videóért: Python használata a VS Code-ban.
+ > 🎥 Kattints a fenti képre egy videó megtekintéséhez: Python használata VS Code-ban.
-3. **Telepítsd a Scikit-learn-t**, a [következő utasítások](https://scikit-learn.org/stable/install.html) alapján. Mivel Python 3-at kell használnod, ajánlott egy virtuális környezet használata. Ha M1 Mac-en telepíted ezt a könyvtárat, különleges utasításokat találsz a fenti oldalon.
+3. **Telepítsd a Scikit-learn könyvtárat**, az [itt található utasítások](https://scikit-learn.org/stable/install.html) alapján. Mivel Python 3-at kell használnod, ajánlott virtuális környezetet használni. Megjegyzés: ha M1 Mac-en telepíted ezt a könyvtárat, külön utasítások vannak a fenti linken.
-4. **Telepítsd a Jupyter Notebook-ot**. Telepítsd a [Jupyter csomagot](https://pypi.org/project/jupyter/).
+1. **Telepítsd a Jupyter Notebookot**. Szükséged lesz a [Jupyter csomag telepítésére](https://pypi.org/project/jupyter/).
-## A gépi tanulási fejlesztési környezeted
+## A gépi tanulási fejlesztőkörnyezeted
-A Python kód fejlesztéséhez és gépi tanulási modellek létrehozásához **notebookokat** fogsz használni. Ez a fájltípus az adatkutatók körében gyakori eszköz, és `.ipynb` kiterjesztéssel azonosítható.
+A Python kód fejlesztéséhez és gépi tanulási modellek létrehozásához **notebookokat** fogsz használni. Ez a fájltípus gyakori eszköz az adattudósok között, jelölése a `.ipynb` kiterjesztés.
-A notebookok interaktív környezetet biztosítanak, amely lehetővé teszi a fejlesztő számára, hogy kódot írjon, jegyzeteket készítsen, és dokumentációt írjon a kód köré, ami különösen hasznos kísérleti vagy kutatási projektek esetén.
+A notebookok interaktív környezetet biztosítanak, ahol a fejlesztő egyszerre tud kódolni és jegyzeteket, dokumentációt írni a kód köré, ami különösen hasznos kísérleti vagy kutatási projektekben.
-[](https://youtu.be/7E-jC8FLA2E "ML kezdőknek - Jupyter Notebookok beállítása regressziós modellek építéséhez")
+[](https://youtu.be/7E-jC8FLA2E "Gépi tanulás kezdőknek - Jupyter Notebookok beállítása regressziós modellekhez")
-> 🎥 Kattints a fenti képre egy rövid videóért, amely bemutatja ezt a gyakorlatot.
+> 🎥 Kattints a fenti képre egy rövid videó megtekintéséhez, amely végigvezet ezen a gyakorlaton.
### Gyakorlat - dolgozz egy notebookkal
@@ -57,64 +57,65 @@ Ebben a mappában megtalálod a _notebook.ipynb_ fájlt.
1. Nyisd meg a _notebook.ipynb_ fájlt a Visual Studio Code-ban.
- Egy Jupyter szerver indul el Python 3+ környezettel. A notebookban olyan részeket találsz, amelyek `futtathatók`, azaz kódrészletek. Egy kódrészletet a lejátszás gombra hasonlító ikon kiválasztásával futtathatsz.
+ Egy Jupyter szerver elindul Python 3+ környezetben. Láthatsz majd notebook cellákat, amelyek kódblokkok, ezeket lehet `futtatni`. Egy kódblokk futtatásához válaszd a lejátszás gomb ikont.
-2. Válaszd ki az `md` ikont, és adj hozzá egy kis markdown szöveget, például a következőt: **# Üdvözöllek a notebookodban**.
+1. Válaszd ki az `md` ikont és adj hozzá egy kis markdown szöveget, például a következőt: **# Üdvözöl a notebookod**.
Ezután adj hozzá egy kis Python kódot.
-3. Írd be a következő kódot: **print('hello notebook')**.
-4. Kattints a nyílra a kód futtatásához.
+1. Gépeld be a **print('hello notebook')** parancsot a kódblokkba.
+1. Kattints a nyílra a kód futtatásához.
- A következő kimenetet kell látnod:
+ Látnod kell a kinyomtatott üzenetet:
```output
hello notebook
```
-
+
-A kódot megjegyzésekkel egészítheted ki, hogy önmagad számára dokumentáld a notebookot.
+Kódod kommentekkel gazdagíthatod, hogy a notebook dokumentált legyen.
-✅ Gondolkodj el egy percre azon, hogy mennyire különbözik egy webfejlesztő munkakörnyezete egy adatkutatóétól.
+✅ Gondolkodj el egy percre, mennyire más a webfejlesztő és az adattudós munkakörnyezete.
-## Scikit-learn használatának elsajátítása
+## Kész a Scikit-learn használatra
-Most, hogy a Python be van állítva a helyi környezetedben, és kényelmesen használod a Jupyter notebookokat, ismerkedj meg a Scikit-learn-nel (ejtsd: `száj` mint a `science`). A Scikit-learn egy [kiterjedt API-t](https://scikit-learn.org/stable/modules/classes.html#api-ref) biztosít, amely segít a gépi tanulási feladatok elvégzésében.
+Most, hogy a Python helyileg be van állítva és kényelmesen használod a Jupyter Notebookokat, ismerkedjünk meg a Scikit-learn könyvtárral is (kiejtve: "szájkit", mint a "science"). A Scikit-learn egy [kiterjedt API-t](https://scikit-learn.org/stable/modules/classes.html#api-ref) biztosít a gépi tanulási feladatok elvégzéséhez.
-A [weboldaluk](https://scikit-learn.org/stable/getting_started.html) szerint: "A Scikit-learn egy nyílt forráskódú gépi tanulási könyvtár, amely támogatja a felügyelt és felügyelet nélküli tanulást. Emellett különféle eszközöket biztosít a modellillesztéshez, adat-előfeldolgozáshoz, modellkiválasztáshoz és értékeléshez, valamint számos egyéb segédprogramhoz."
+A [honlapjuk](https://scikit-learn.org/stable/getting_started.html) szerint: "A Scikit-learn egy nyílt forráskódú gépi tanulási könyvtár, amely támogatja a felügyelt és felügyelet nélküli tanulást. Emellett különböző eszközöket kínál modellillesztéshez, adat-előkészítéshez, modellválasztáshoz és kiértékeléshez, valamint sok más hasznos funkciót."
-Ebben a kurzusban a Scikit-learn-t és más eszközöket fogsz használni gépi tanulási modellek építéséhez, hogy úgynevezett 'hagyományos gépi tanulási' feladatokat végezz. Szándékosan kerültük a neurális hálózatokat és a mélytanulást, mivel ezek jobban lefedhetők a hamarosan megjelenő 'AI kezdőknek' tananyagunkban.
+Ebben a tanfolyamban a Scikit-learn és egyéb eszközök segítségével gépi tanulási modelleket építünk, elsősorban a hagyományos gépi tanulásra fókuszálva. Szándékosan kerüljük a neurális hálózatokat és mélytanulást, mivel ezek egy külön 'Mesterséges intelligencia kezdőknek' tananyagban lesznek részletesebben tárgyalva.
-A Scikit-learn egyszerűvé teszi a modellek építését és értékelését. Elsősorban numerikus adatok használatára összpontosít, és számos előre elkészített adathalmazt tartalmaz tanulási célokra. Emellett előre elkészített modelleket is tartalmaz, amelyeket a diákok kipróbálhatnak. Fedezzük fel a folyamatot, amely során előre csomagolt adatokat töltünk be, és egy beépített becslőt használunk az első ML modellünkhöz a Scikit-learn segítségével.
+A Scikit-learn segítségével egyszerű modelleket építhetsz és kiértékelhetsz használatra. Elsősorban numerikus adatokat kezel és több beépített mintaadatot tartalmaz tanulási eszközként. Emellett van előre elkészített modellje is, amit a diákok kipróbálhatnak. Először nézzük meg, hogyan tölthetünk be beépített adatokat és használhatjuk beépített eldöntő modellt egy egyszerű gépi tanulási feladathoz.
## Gyakorlat - az első Scikit-learn notebookod
-> Ez az oktatóanyag a Scikit-learn weboldalán található [lineáris regressziós példa](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) alapján készült.
+> Ez az oktatóanyag a [lineáris regresszió példájából](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) származik a Scikit-learn honlapjáról.
-[](https://youtu.be/2xkXL5EUpS0 "ML kezdőknek - Az első lineáris regressziós projekted Python-ban")
-> 🎥 Kattints a fenti képre egy rövid videóért, amely bemutatja ezt a gyakorlatot.
+[](https://youtu.be/2xkXL5EUpS0 "Gépi tanulás kezdőknek - Az első lineáris regressziós projekted Pythonban")
-A leckéhez tartozó _notebook.ipynb_ fájlban töröld ki az összes cellát a 'szemetes' ikonra kattintva.
+> 🎥 Kattints a fenti képre az ehhez a feladathoz készült rövid videóért.
-Ebben a részben egy kis, a Scikit-learn-be beépített diabétesz adathalmazzal fogsz dolgozni tanulási célokra. Képzeld el, hogy egy kezelést szeretnél tesztelni cukorbetegek számára. A gépi tanulási modellek segíthetnek meghatározni, hogy mely betegek reagálnának jobban a kezelésre, a változók kombinációi alapján. Még egy nagyon alapvető regressziós modell is, ha vizualizáljuk, információt nyújthat a változókról, amelyek segíthetnek a klinikai vizsgálatok megszervezésében.
+A _notebook.ipynb_ fájlban, amely ehhez az órához tartozik, törölj minden cellát a 'kuka' ikon használatával.
-✅ Számos regressziós módszer létezik, és hogy melyiket választod, az attól függ, milyen kérdésre keresel választ. Ha például egy adott korú személy várható magasságát szeretnéd megjósolni, lineáris regressziót használnál, mivel egy **numerikus értéket** keresel. Ha viszont azt szeretnéd megtudni, hogy egy konyha típusa vegánnak tekinthető-e vagy sem, akkor egy **kategória-hozzárendelést** keresel, így logisztikus regressziót használnál. Később többet megtudhatsz a logisztikus regresszióról. Gondolkodj el azon, hogy milyen kérdéseket tehetsz fel az adatokkal kapcsolatban, és melyik módszer lenne megfelelőbb.
+Ebben a részben egy kis, a cukorbetegséggel kapcsolatos mintaadattal dolgozol majd, amely a Scikit-learnbe be van építve tanulási célokra. Képzeld el, hogy egy kezelési módszert szeretnél tesztelni cukorbetegeknél. A gépi tanulási modellek segíthetnek meghatározni, mely páciensek reagálnak jobban a kezelésre, az egyes változók kombinációi alapján. Egy nagyon egyszerű regressziós modell, ha vizualizálod, információt nyújthat azokról a változókról, amik segíthetnek a klinikai kísérletek elméleti tervezésében.
-Kezdjünk neki ennek a feladatnak.
+✅ Sokféle regressziós módszer létezik, és hogy melyiket választod, attól függ, milyen választ keresel. Ha például előre akarod jelezni egy adott korú személy várható magasságát, lineáris regressziót használsz, mert **numerikus értéket** keresel. Ha viszont azt akarod megtudni, hogy egy konyha vegan kategóriába esik-e vagy sem, **kategória-besorolásra** van szükséged, ezért logisztikus regressziót alkalmaznád. A logisztikus regressziót később részletesebben megismered. Gondolkodj el azon, milyen kérdéseket tehetsz fel az adatoknak, és melyik módszer lenne megfelelőbb.
+
+Kezdjünk neki a feladatnak.
### Könyvtárak importálása
-Ehhez a feladathoz néhány könyvtárat fogunk importálni:
+Ehhez a feladathoz néhány könyvtárat importálunk:
-- **matplotlib**. Ez egy hasznos [grafikonkészítő eszköz](https://matplotlib.org/), amelyet vonaldiagramok készítésére fogunk használni.
-- **numpy**. A [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) egy hasznos könyvtár numerikus adatok kezelésére Python-ban.
+- **matplotlib**. Egy hasznos [grafikus eszköz](https://matplotlib.org/), amit vonaldiagram készítéséhez fogunk használni.
+- **numpy**. A [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) egy hasznos könyvtár számadatok kezeléséhez Pythonban.
- **sklearn**. Ez a [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) könyvtár.
-Importálj néhány könyvtárat a feladatok elvégzéséhez.
+Importálj néhány könyvtárat a feladat elvégzéséhez.
-1. Add hozzá az importokat az alábbi kód beírásával:
+1. Add hozzá az importokat a következő kód beírásával:
```python
import matplotlib.pyplot as plt
@@ -122,26 +123,26 @@ Importálj néhány könyvtárat a feladatok elvégzéséhez.
from sklearn import datasets, linear_model, model_selection
```
- A fenti kódban importálod a `matplotlib`-et, a `numpy`-t, valamint a `datasets`, `linear_model` és `model_selection` modulokat a `sklearn`-ből. A `model_selection` a teszt- és tanulóhalmazok szétválasztására szolgál.
+ Fent a `matplotlib`, `numpy` könyvtárakat importálod, továbbá a `datasets`, `linear_model` és `model_selection` modulokat a `sklearn`-ből. A `model_selection` a tanító és teszt adathalmazok szétválasztására szolgál.
-### A diabétesz adathalmaz
+### A cukorbetegség adatállomány
-A beépített [diabétesz adathalmaz](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) 442 diabéteszhez kapcsolódó mintát tartalmaz, 10 jellemző változóval, amelyek közül néhány:
+A beépített [cukorbetegség adatállomány](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) 442 mintából áll, 10 jellemző változóval, amelyek közül néhány:
-- age: életkor években
-- bmi: testtömegindex
+- kor: életkor években
+- bmi: testtömeg-index
- bp: átlagos vérnyomás
-- s1 tc: T-sejtek (egy típusú fehérvérsejtek)
+- s1 tc: T-sejtek (egyféle fehérvérsejt)
-✅ Ez az adathalmaz tartalmazza a 'nem' fogalmát, mint a diabétesz kutatás szempontjából fontos jellemző változót. Számos orvosi adathalmaz tartalmaz ilyen típusú bináris osztályozást. Gondolkodj el azon, hogy az ilyen kategorizálások hogyan zárhatnak ki bizonyos népességcsoportokat a kezelésekből.
+✅ Ez az adathalmaz tartalmazza a 'nem' fogalmát is, mint fontos jellemzőt a cukorbetegséggel kapcsolatos kutatásokban. Sok orvosi adathalmaz tartalmaz ilyen bináris besorolásokat. Gondolkodj el, hogyan zárhatnak ki bizonyos kategóriák ilyen osztályozások miatt népességcsoportokat a kezelésekből.
-Most töltsd be az X és y adatokat.
+Most töltsd be az X és y adathalmazokat.
-> 🎓 Ne feledd, hogy ez felügyelt tanulás, és szükségünk van egy megnevezett 'y' célváltozóra.
+> 🎓 Ne feledd, ez felügyelt tanulás, nekünk egy nevesített, 'y' célváltozóra van szükségünk.
-Egy új kódcellában töltsd be a diabétesz adathalmazt a `load_diabetes()` hívásával. A `return_X_y=True` bemenet jelzi, hogy az `X` egy adatmátrix lesz, az `y` pedig a regressziós cél.
+Egy új kódcella segítségével töltsd be a cukorbetegség adatállományt `load_diabetes()` hívásával. A `return_X_y=True` paraméter jelzi, hogy `X` adatmátrix lesz, míg az `y` a regressziós célérték.
-1. Adj hozzá néhány print parancsot, hogy megjelenítsd az adatmátrix alakját és az első elemét:
+1. Adj néhány print parancsot az adatmátrix alakjának és első elemének megjelenítésére:
```python
X, y = datasets.load_diabetes(return_X_y=True)
@@ -149,9 +150,9 @@ Egy új kódcellában töltsd be a diabétesz adathalmazt a `load_diabetes()` h
print(X[0])
```
- Amit válaszként kapsz, az egy tuple. Amit csinálsz, az az, hogy a tuple első két értékét hozzárendeled az `X`-hez és az `y`-hoz. Tudj meg többet a [tuple-ökről](https://wikipedia.org/wiki/Tuple).
+ Amit visszakapsz válaszként, az egy tuple. Amit csinálsz, hogy a tuple első két elemét az `X` és `y` változókhoz rendeld. Tudj meg többet a [tuple-ökről](https://wikipedia.org/wiki/Tuple).
- Láthatod, hogy ezek az adatok 442 elemet tartalmaznak, amelyek 10 elemből álló tömbökbe vannak rendezve:
+ Láthatod, hogy ez az adatállomány 442 elemből áll, melyek 10 elemes tömbökbe vannak rendezve:
```text
(442, 10)
@@ -159,60 +160,75 @@ Egy új kódcellában töltsd be a diabétesz adathalmazt a `load_diabetes()` h
-0.04340085 -0.00259226 0.01990842 -0.01764613]
```
- ✅ Gondolkodj el az adatok és a regressziós cél közötti kapcsolaton. A lineáris regresszió az X jellemző és az y célváltozó közötti kapcsolatot jósolja meg. Megtalálod a [célváltozót](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) a diabétesz adathalmaz dokumentációjában? Mit mutat ez az adathalmaz a célváltozó alapján?
+ ✅ Gondolkodj el az adatok és a regressziós célérték kapcsolatán. A lineáris regresszió az X jellemző és y célváltozó közötti kapcsolatokat becsüli meg. Meg tudod találni a [célt](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) a cukorbetegség adatállomány dokumentációjában? Mit mutat be ez az adatállomány a cél alapján?
-2. Ezután válassz ki egy részt ebből az adathalmazból, hogy ábrázolhasd, például az adathalmaz 3. oszlopát. Ezt a `:` operátorral teheted meg, hogy kiválaszd az összes sort, majd az index (2) segítségével kiválaszd a 3. oszlopot. Az adatokat 2D tömbbé is átalakíthatod - ahogy az ábrázoláshoz szükséges - a `reshape(n_rows, n_columns)` használatával. Ha az egyik paraméter -1, a megfelelő dimenzió automatikusan kiszámításra kerül.
+2. Ezután válassz ki egy részt az adatállományból a 3. oszlop kiválasztásával. Ezt úgy teheted meg, hogy az összes sort kiválasztod a `:` operátorral, majd az index (2) segítségével a 3. oszlopot. Az adatot átalakíthatod 2D tömbbé, amire szükség van a megjelenítéshez, a `reshape(n_rows, n_columns)` függvénnyel. Ha egy paraméter értéke -1, annak megfelelő dimenziót automatikusan kiszámítja a rendszer.
```python
X = X[:, 2]
X = X.reshape((-1,1))
```
- ✅ Bármikor nyomtasd ki az adatokat, hogy ellenőrizd az alakjukat.
+ ✅ Bármikor nyomtasd ki az adatot, hogy ellenőrizd az alakját.
-3. Most, hogy az adatok készen állnak az ábrázolásra, megnézheted, hogy egy gép segíthet-e logikus határvonalat húzni az adathalmaz számai között. Ehhez szét kell választanod az adatokat (X) és a célváltozót (y) teszt- és tanulóhalmazokra. A Scikit-learn egyszerű módot kínál erre; az adataidat egy adott ponton oszthatod szét.
+3. Most, hogy készen áll az adat a megjelenítésre, nézd meg, segíthet-e egy gép logikus elválasztást találni az adatok között. Ehhez mind az X adatokat, mind az y célértékeket fel kell osztani teszt és tanító adathalmazokra. A Scikit-learn egyszerű megoldást kínál erre: a tesztadatokat egy adott pontnál szeletelheted.
```python
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33)
```
-4. Most készen állsz a modell betanítására! Töltsd be a lineáris regressziós modellt, és tanítsd be az X és y tanulóhalmazokkal a `model.fit()` használatával:
+4. Most már készen állsz a modell edzésére! Töltsd be a lineáris regressziós modellt és edzd az X és y tanító adatokkal a `model.fit()` segítségével:
```python
model = linear_model.LinearRegression()
model.fit(X_train, y_train)
```
- ✅ A `model.fit()` egy olyan függvény, amelyet sok ML könyvtárban, például a TensorFlow-ban is láthatsz.
+ ✅ A `model.fit()` olyan függvény, amely sok ML könyvtárban, például a TensorFlow-ban is megtalálható.
-5. Ezután hozz létre egy előrejelzést a tesztadatok alapján a `predict()` függvény használatával. Ezt fogod használni a vonal meghúzásához az adathalmaz csoportjai között.
+5. Ezután készíts előrejelzést a tesztadatok alapján a `predict()` függvénnyel. Ezt a modellt felhasználhatod, hogy a modell által képzett adatcsoportok közé a legmegfelelőbb helyre vonalat rajzolj.
```python
y_pred = model.predict(X_test)
```
-6. Most itt az ideje, hogy megjelenítsd az adatokat egy diagramon. A Matplotlib
-✅ Gondolkodj el egy kicsit azon, mi történik itt. Egy egyenes vonal halad át sok apró adatponton, de pontosan mit csinál? Látod, hogyan tudnád ezt a vonalat felhasználni arra, hogy megjósold, hol helyezkedne el egy új, még nem látott adatpont a grafikon y tengelyéhez viszonyítva? Próbáld meg szavakba önteni ennek a modellnek a gyakorlati hasznát.
+6. Most jelenítsd meg az adatokat egy ábrán. A Matplotlib nagyon hasznos eszköz erre. Készíts szórásdiagramot az összes X és y tesztadatról, és a predikció segítségével húzz vonalat a modell adatcsoportjai közé, ahol az a leglogikusabb.
+
+ ```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()
+ ```
+
+ 
+
+
+ ✅ Gondolkodj egy kicsit azon, mi is történik itt. Egy egyenes vonal halad keresztül sok kis adatponton, de pontosan mit is csinál? Látod, hogyan használhatod ezt a vonalat annak előrejelzésére, hogy egy új, még nem látott adatpont hol illeszkedjen az ábra y tengelyéhez képest? Próbáld meg szavakba önteni ennek a modellnek a gyakorlati hasznát.
-Gratulálok, elkészítetted az első lineáris regressziós modelledet, készítettél vele egy előrejelzést, és megjelenítetted egy grafikonon!
+Gratulálunk, elkészítetted az első lineáris regressziós modelledet, készítettél vele előrejelzést, és meg is jelenítettél egy ábrán!
---
## 🚀Kihívás
-Ábrázolj egy másik változót ebből az adatállományból. Tipp: szerkeszd ezt a sort: `X = X[:,2]`. Ennek az adatállománynak a célértéke alapján mit tudsz felfedezni a cukorbetegség betegségként való előrehaladásáról?
-## [Utólagos kvíz](https://ff-quizzes.netlify.app/en/ml/)
+Ábrázolj egy másik változót ebből az adathalmazból. Tipp: szerkeszd ezt a sort: `X = X[:,2]`. Tekintettel az adathalmaz célváltozójára, mit tudsz felfedezni a cukorbetegség betegségként való lefolyásáról?
+## [Előadás utáni kvíz](https://ff-quizzes.netlify.app/en/ml/)
## Áttekintés és önálló tanulás
-Ebben a bemutatóban egyszerű lineáris regresszióval dolgoztál, nem pedig univariáns vagy többszörös lineáris regresszióval. Olvass egy kicsit ezeknek a módszereknek a különbségeiről, vagy nézd meg [ezt a videót](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef).
+Ebben a bemutatóban egyszerű lineáris regresszióval dolgoztál, nem egyszereplős vagy többváltozós lineáris regresszióval. Olvass kicsit ezeknek a módszereknek a különbségeiről, vagy nézd meg ezt a [videót](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef)
-Olvass többet a regresszió fogalmáról, és gondolkodj el azon, milyen típusú kérdésekre lehet választ adni ezzel a technikával. Vegyél részt [ebben a bemutatóban](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott), hogy elmélyítsd a tudásodat.
+Olvass többet a regresszió fogalmáról, és gondolkodj el rajta, hogy milyen kérdésekre tud választ adni ez a technika. Végezd el ezt a [gyakorlati útmutatót](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott), hogy mélyebb ismeretekre tegyél szert.
## Feladat
-[Egy másik adatállomány](assignment.md)
+[Egy másik adathalmaz](assignment.md)
---
-**Felelősség kizárása**:
-Ez a dokumentum az AI fordítási szolgáltatás, a [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Fontos információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet.
\ No newline at end of file
+
+**Jogi nyilatkozat**:
+Ez a dokumentum az AI fordítási szolgáltatás, a [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével készült. Bár az pontosságra törekszünk, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az anyanyelvén tekintendő hiteles forrásnak. Fontos információk esetén professzionális emberi fordítást javasolunk. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely ebből a fordításból ered.
+
\ No newline at end of file
diff --git a/translations/hu/2-Regression/2-Data/README.md b/translations/hu/2-Regression/2-Data/README.md
index 1e43be1ba..d848b63aa 100644
--- a/translations/hu/2-Regression/2-Data/README.md
+++ b/translations/hu/2-Regression/2-Data/README.md
@@ -1,8 +1,8 @@
-# Készítsünk regressziós modellt Scikit-learn segítségével: adatok előkészítése és vizualizálása
+# Regressziós modell építése Scikit-learn segítségével: adatok előkészítése és vizualizálása
-
+
-Infografika: [Dasani Madipalli](https://twitter.com/dasani_decoded)
+Infografika készítője: [Dasani Madipalli](https://twitter.com/dasani_decoded)
## [Előadás előtti kvíz](https://ff-quizzes.netlify.app/en/ml/)
@@ -10,51 +10,51 @@ Infografika: [Dasani Madipalli](https://twitter.com/dasani_decoded)
## Bevezetés
-Most, hogy rendelkezésedre állnak azok az eszközök, amelyekkel elkezdheted a gépi tanulási modellek építését Scikit-learn segítségével, készen állsz arra, hogy kérdéseket tegyél fel az adataiddal kapcsolatban. Amikor adatokkal dolgozol és gépi tanulási megoldásokat alkalmazol, nagyon fontos, hogy megtanuld, hogyan tegyél fel megfelelő kérdéseket, hogy kiaknázhasd az adathalmazodban rejlő lehetőségeket.
+Most, hogy készen állsz a szükséges eszközökkel a gépi tanulási modellek építésének elkezdéséhez Scikit-learn segítségével, ideje elkezdeni kérdéseket feltenni az adataidnak. Amint dolgozol az adatokkal és alkalmazod az ML megoldásokat, nagyon fontos megérteni, hogyan kell megfelelő kérdést feltenni az adatbázisod potenciáljának felszabadításához.
Ebben a leckében megtanulod:
- Hogyan készítsd elő az adataidat a modellépítéshez.
-- Hogyan használd a Matplotlibet adatvizualizációhoz.
+- Hogyan használd a Matplotlib-et az adatok vizualizációjához.
+- Hogyan használd a Seaborn-t kifejezőbb adatvizualizációhoz.
-## Hogyan tegyél fel megfelelő kérdést az adataiddal kapcsolatban?
+## A helyes kérdés feltevése az adataiddal kapcsolatban
-Az a kérdés, amelyre választ szeretnél kapni, meghatározza, hogy milyen típusú gépi tanulási algoritmusokat fogsz használni. A kapott válasz minősége pedig nagymértékben függ az adataid természetétől.
+A megválaszolandó kérdés meghatározza, hogy milyen típusú ML algoritmusokat fogsz használni. És a válasz minősége jelentősen függ az adatok természetétől.
-Nézd meg a [leckéhez biztosított adatokat](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv). Ezt a .csv fájlt megnyithatod VS Code-ban. Egy gyors átnézés azonnal megmutatja, hogy vannak hiányzó értékek, valamint szöveges és numerikus adatok keveréke. Van egy furcsa oszlop is, amelyet "Package"-nek hívnak, ahol az adatok között szerepelnek például "sacks", "bins" és más értékek. Az adatok valójában elég zűrösek.
+Nézd meg a [leckéhez adott adatokat](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv). Megnyithatod ezt a .csv fájlt VS Code-ban. Egy gyors átfutás azonnal mutatja, hogy vannak üres mezők, és vegyesen szerepelnek sztring és numerikus adatok. Van egy furcsa oszlop is 'Package' néven, ahol az adatok között 'zsákok', 'ládák' és más értékek is szerepelnek. Az adatok valójában eléggé rendezetlenek.
-[](https://youtu.be/5qGjczWTrDQ "ML kezdőknek - Hogyan elemezzünk és tisztítsunk egy adathalmazt")
+[](https://youtu.be/5qGjczWTrDQ "ML kezdőknek - Hogyan elemezz és tisztíts egy adatbázist")
-> 🎥 Kattints a fenti képre egy rövid videóért, amely bemutatja az adatok előkészítését ehhez a leckéhez.
+> 🎥 Kattints a fenti képre egy rövid videóért, amely végigvezet az adatok előkészítésén ehhez a leckéhez.
-Valójában nem túl gyakori, hogy egy adathalmaz teljesen készen áll arra, hogy gépi tanulási modellt készítsünk belőle. Ebben a leckében megtanulod, hogyan készíts elő egy nyers adathalmazt standard Python könyvtárak segítségével. Emellett különböző technikákat is megismerhetsz az adatok vizualizálására.
+Valójában nem gyakori, hogy egy teljesen kész, azonnal használható adatbázist kapjunk egy ML modell létrehozásához. Ebben a leckében megtanulod, hogyan készíts elő egy nyers adatbázist szabványos Python könyvtárak használatával. Megtanulsz különféle technikákat is az adatok vizualizálására.
-## Esettanulmány: "a tökpiac"
+## Esettanulmány: 'a tökpiac'
-Ebben a mappában találsz egy .csv fájlt a gyökér `data` mappában, amelynek neve [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv). Ez a fájl 1757 sor adatot tartalmaz a tökpiacról, városok szerint csoportosítva. Ez nyers adat, amelyet az [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) oldalról származtatott az Egyesült Államok Mezőgazdasági Minisztériuma.
+Ebben a mappában található egy .csv fájl a gyökér `data` mappában, amelynek neve [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv), és tartalmaz 1757 sort a tökpiac adatairól, városonként csoportosítva. Ez nyers adat az Egyesült Államok Mezőgazdasági Minisztériuma által közzétett [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) adatforrásból.
-### Adatok előkészítése
+### Az adatok előkészítése
-Ezek az adatok közkincsnek számítanak. Az USDA weboldaláról külön fájlokban, városonként letölthetők. Az adatok túlzott szétaprózódásának elkerülése érdekében az összes városi adatot egy táblázatba fűztük össze, így már egy kicsit _előkészítettük_ az adatokat. Most nézzük meg közelebbről az adatokat.
+Ezek az adatok közkinccsé váltak. Sok különálló fájlban tölthetők le, városonként az USDA weboldaláról. Azért, hogy ne legyen túl sok külön fájl, az összes városi adatot egy táblázatba fűztük össze, tehát már részben _előkészítettük_ az adatokat. Ezután nézzük meg közelebbről az adatokat.
-### A tökadatok - korai következtetések
+### A tökadatok – első következtetések
-Mit veszel észre ezekkel az adatokkal kapcsolatban? Már láttad, hogy van szövegek, számok, hiányzó értékek és furcsa értékek keveréke, amelyeket értelmezni kell.
+Mit veszel észre ezekről az adatokról? Már láttad, hogy vegyesen vannak benne szöveges értékek, számok, üres cellák és furcsa értékek, amelyeket értelmezni kell.
-Milyen kérdést tehetsz fel ezekkel az adatokkal kapcsolatban regressziós technikát alkalmazva? Például: "Előrejelezni egy tök árát egy adott hónapban." Ha újra megnézed az adatokat, láthatod, hogy néhány változtatást kell végrehajtanod, hogy létrehozd a feladathoz szükséges adatstruktúrát.
+Milyen kérdést tehetnél fel ezeknek az adatoknak regressziós módszerrel? Például: "Milyen az adott hónapra vonatkozó tök ára?". Ha újra megnézed az adatokat, van néhány módosítás, amelyet el kell végezni, hogy létrehozd a feladathoz szükséges adatszerkezetet.
+## Gyakorlat – elemezd a tök adatokat
-## Gyakorlat - elemezd a tökadatokat
+Használjuk a [Pandas](https://pandas.pydata.org/)-t (a neve a `Python Data Analysis` szavakból ered), amely nagyon hasznos eszköz az adatok alakítására, hogy elemezzük és előkészítsük ezt a tök adatbázist.
-Használjuk a [Pandas](https://pandas.pydata.org/) könyvtárat (a név a `Python Data Analysis` rövidítése), amely nagyon hasznos az adatok formázásához, hogy elemezzük és előkészítsük a tökadatokat.
+### Először, ellenőrizd a hiányzó dátumokat
-### Először ellenőrizd a hiányzó dátumokat
+Először meg kell tenned a hiányzó dátumok ellenőrzésének lépéseit:
-Először lépéseket kell tenned a hiányzó dátumok ellenőrzésére:
+1. Alakítsd át a dátumokat hónap formátumra (az adatok amerikai dátumformátumúak, vagyis `HH/NN/ÉÉÉÉ`).
+2. Válogasd ki a hónapokat egy új oszlopba.
-1. Konvertáld a dátumokat hónap formátumba (ezek amerikai dátumok, tehát a formátum `MM/DD/YYYY`).
-2. Hozz létre egy új oszlopot, amely csak a hónapot tartalmazza.
-
-Nyisd meg a _notebook.ipynb_ fájlt a Visual Studio Code-ban, és importáld a táblázatot egy új Pandas dataframe-be.
+Nyisd meg a _notebook.ipynb_ fájlt a Visual Studio Code-ban, és importáld az adatokat egy új Pandas dataframe-be.
1. Használd a `head()` függvényt az első öt sor megtekintéséhez.
@@ -66,15 +66,15 @@ Nyisd meg a _notebook.ipynb_ fájlt a Visual Studio Code-ban, és importáld a t
✅ Milyen függvényt használnál az utolsó öt sor megtekintéséhez?
-1. Ellenőrizd, hogy van-e hiányzó adat az aktuális dataframe-ben:
+1. Ellenőrizd, hogy van-e hiányzó adat a jelenlegi dataframe-ben:
```python
pumpkins.isnull().sum()
```
- Van hiányzó adat, de lehet, hogy ez nem számít a feladat szempontjából.
+ Van hiányzó adat, de lehet, hogy nem számít a feladat szempontjából.
-1. Hogy könnyebben dolgozhass a dataframe-mel, válaszd ki csak azokat az oszlopokat, amelyekre szükséged van, a `loc` függvény segítségével, amely az eredeti dataframe-ből egy sorokból (első paraméter) és oszlopokból (második paraméter) álló csoportot von ki. Az alábbi esetben a `:` kifejezés azt jelenti, hogy "minden sor".
+1. Hogy könnyebb legyen a munkád a dataframe-vel, válaszd ki csak azokat az oszlopokat, amikre szükséged van, a `loc` függvény segítségével, amely az eredeti dataframe-ből kiválaszt egy csoport sort (az első paraméterként átadott) és oszlopot (a második paraméter). Az alábbi `:` kifejezés minden sort jelent.
```python
columns_to_select = ['Package', 'Low Price', 'High Price', 'Date']
@@ -83,9 +83,9 @@ Nyisd meg a _notebook.ipynb_ fájlt a Visual Studio Code-ban, és importáld a t
### Másodszor, határozd meg a tök átlagárát
-Gondold át, hogyan határozhatod meg egy tök átlagárát egy adott hónapban. Mely oszlopokat választanád ehhez a feladathoz? Tipp: három oszlopra lesz szükséged.
+Gondold át, hogyan lehet meghatározni a tök átlagárát adott hónapban. Milyen oszlopokat választanál ehhez? Tipp: 3 oszlopra lesz szükséged.
-Megoldás: vedd az `Low Price` és `High Price` oszlopok átlagát, hogy kitöltsd az új Price oszlopot, és konvertáld a Date oszlopot úgy, hogy csak a hónapot mutassa. Szerencsére az előző ellenőrzés szerint nincs hiányzó adat a dátumok vagy árak esetében.
+Megoldás: számítsd ki a `Low Price` és `High Price` oszlopok átlagát az új Price oszlop feltöltéséhez, és alakítsd a Date oszlopot úgy, hogy csak a hónapot mutassa. Szerencsére, az előbbi ellenőrzés szerint nincs hiányzó adat a dátumok vagy az árak esetében.
1. Az átlag kiszámításához add hozzá a következő kódot:
@@ -96,37 +96,37 @@ Megoldás: vedd az `Low Price` és `High Price` oszlopok átlagát, hogy kitölt
```
- ✅ Nyugodtan nyomtass ki bármilyen adatot, amit ellenőrizni szeretnél a `print(month)` segítségével.
+ ✅ Nyugodtan használd a `print(month)` parancsot, ha szeretnéd az adatokat ellenőrizni.
-2. Most másold át az átalakított adatokat egy új Pandas dataframe-be:
+2. Most másold át az átalakított adatot egy új Pandas dataframe-be:
```python
new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price})
```
- Ha kinyomtatod a dataframe-et, egy tiszta, rendezett adathalmazt fogsz látni, amelyre építheted az új regressziós modelledet.
+ Ha kinyomtatod a dataframe-ed, egy tiszta, rendezett adatbázist fogsz látni, amely alapján építheted a regressziós modelledet.
### De várj! Valami furcsa van itt
-Ha megnézed a `Package` oszlopot, a tökök sokféle konfigurációban kerülnek értékesítésre. Néhányat "1 1/9 bushel" mértékegységben, néhányat "1/2 bushel" mértékegységben, néhányat darabonként, néhányat fontonként, és néhányat nagy dobozokban, amelyek szélessége változó.
+Ha megnézed a `Package` oszlopot, a tökök sokféle formációban vannak eladva. Egyeseket '1 1/9 bushel' mértékben árulják, másokat '1/2 bushel' egységekben, egyeseket darabonként, másokat fontonként, és vannak nagy dobozok is különféle szélességekkel.
-> Úgy tűnik, hogy a tökök súlyának következetes mérése nagyon nehéz
+> A tökök súlyának következetes mérése elég nehéznek tűnik
-Ha beleásod magad az eredeti adatokba, érdekes, hogy bármi, aminek `Unit of Sale` értéke 'EACH' vagy 'PER BIN', szintén a `Package` típus szerint van megadva, például hüvelykben, binben vagy darabonként. Úgy tűnik, hogy a tökök súlyának következetes mérése nagyon nehéz, ezért szűrjük őket úgy, hogy csak azokat a tököket válasszuk ki, amelyek `Package` oszlopában szerepel a 'bushel' szó.
+Az eredeti adatokat vizsgálva érdekes, hogy ahol a `Unit of Sale` 'EACH' vagy 'PER BIN', ott a `Package` típus inch-ben, ládában vagy darabonként van megadva. Egyértelmű, hogy a tökök súlyának következetes mérése nehéz, ezért szűrjük az adatokat úgy, hogy csak azok a tökök legyenek benne, amelyek `Package` oszlopában szerepel a 'bushel'.
-1. Adj hozzá egy szűrőt a fájl tetejére, az eredeti .csv importálása alá:
+1. Adj hozzá egy szűrőt a fájl tetején, a kezdeti .csv import után:
```python
pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]
```
- Ha most kinyomtatod az adatokat, láthatod, hogy csak azokat a körülbelül 415 sort kapod, amelyek bushelben mért tököket tartalmaznak.
+ Ha most kinyomtatod az adatokat, láthatod, hogy csak körülbelül 415 sort kapsz, amelyek bushel-ben mért tököket tartalmaznak.
-### De várj! Még egy dolgot meg kell tenni
+### De várj még! Van még egy teendő
-Észrevetted, hogy a bushel mennyisége soronként változik? Normalizálnod kell az árképzést, hogy bushelre vetítve mutasd az árakat, tehát végezz némi matematikát az árak standardizálásához.
+Észrevetted, hogy a bushel mértéke soronként változik? Normalizálnod kell az árakat, hogy bushelre vonatkozó árat mutassanak, ezért végezz néhány számítást az egységesítéshez.
-1. Add hozzá ezeket a sorokat a new_pumpkins dataframe létrehozó blokk után:
+1. Add hozzá ezeket a sorokat az új_pumpkins dataframe létrehozása utáni blokkhoz:
```python
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9)
@@ -134,38 +134,38 @@ Ha beleásod magad az eredeti adatokba, érdekes, hogy bármi, aminek `Unit of S
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2)
```
-✅ A [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) szerint a bushel súlya a termék típusától függ, mivel ez egy térfogatmérés. "Egy bushel paradicsom például 56 fontot kell, hogy nyomjon... A levelek és zöldek több helyet foglalnak kevesebb súllyal, így egy bushel spenót csak 20 font." Ez mind elég bonyolult! Ne foglalkozzunk a bushel-font átváltással, hanem inkább bushelre vetítve árazzunk. Mindez a bushel tökök tanulmányozása azonban megmutatja, mennyire fontos megérteni az adatok természetét!
+✅ A [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) szerint egy bushel súlya a termény típusától függ, mivel ez térfogati mértékegység. "Egy bushel paradicsom például 56 fontot kell, hogy nyomjon... A levelek és zöldek nagyobb helyet foglalnak el, kevesebb súly mellett, így a spenót bushel-je csak 20 font." Mindez elég bonyolult! Ne foglalkozzunk bushel-ről fontra való átváltással, az árazást tegyük bushel alapján. Mindenesetre ez a tök bushel-ek vizsgálata is rámutat arra, mennyire fontos megérteni az adataid természetét!
-Most már elemezheted az árképzést egységenként a bushel mértékegység alapján. Ha még egyszer kinyomtatod az adatokat, láthatod, hogyan lett standardizálva.
+Most elemezheted az egységárakat a bushel mérték alapján. Ha még egyszer kiírod az adatokat, láthatod, hogyan szabványosítottuk őket.
-✅ Észrevetted, hogy a fél bushelben árult tökök nagyon drágák? Ki tudod találni, miért? Tipp: a kis tökök sokkal drágábbak, mint a nagyok, valószínűleg azért, mert sokkal több van belőlük bushelben, tekintve az egy nagy üreges tök által elfoglalt kihasználatlan helyet.
+✅ Észrevetted, hogy a fél bushel-ben árult tökök nagyon drágák? Meg tudod fejteni, miért? Tipp: a kicsi tökök sokkal drágábbak, valószínűleg azért, mert egy bushelben sokkal több van belőlük, szemben azzal, hogy egy nagy üreges sütőtök sok helyet foglal.
## Vizualizációs stratégiák
-Az adatelemzők egyik feladata, hogy bemutassák az adatok minőségét és természetét, amelyekkel dolgoznak. Ehhez gyakran készítenek érdekes vizualizációkat, például diagramokat, grafikonokat és táblázatokat, amelyek az adatok különböző aspektusait mutatják be. Ily módon vizuálisan képesek megmutatni az összefüggéseket és hiányosságokat, amelyeket egyébként nehéz lenne feltárni.
+Az adatkutatók szerepének része, hogy bemutassák a kezelt adatok minőségét és természetét. Ennek érdekében gyakran készítenek érdekes vizualizációkat, mint például diagramokat, grafikonokat vagy táblázatokat, amelyek különböző adat aspektusokat ábrázolnak. Ezzel vizuálisan mutathatnak be kapcsolatokat és hiányosságokat, amelyek egyébként nehezen lennének feltárhatók.
-[](https://youtu.be/SbUkxH6IJo0 "ML kezdőknek - Hogyan vizualizáljuk az adatokat Matplotlib segítségével")
+[](https://youtu.be/SbUkxH6IJo0 "ML kezdőknek - Hogyan vizualizálj adatokat Matplotlib-pel")
-> 🎥 Kattints a fenti képre egy rövid videóért, amely bemutatja az adatok vizualizálását ehhez a leckéhez.
+> 🎥 Kattints a fenti képre egy rövid videóért, amely az adatok vizualizálását mutatja be ehhez a leckéhez.
-A vizualizációk segíthetnek meghatározni, hogy mely gépi tanulási technika a legmegfelelőbb az adatokhoz. Például egy olyan szórásdiagram, amely látszólag egy vonalat követ, azt jelzi, hogy az adatok jó jelöltek lehetnek egy lineáris regressziós feladathoz.
+A vizualizációk segíthetnek meghatározni azt a gépi tanulási módszert is, amely a leginkább megfelelő az adatokhoz. Például egy pontfelhő, amely úgy tűnik, hogy egy egyenes vonalat követ, jelzi, hogy az adatok alkalmasak lineáris regressziós gyakorlatra.
-Egy adatvizualizációs könyvtár, amely jól működik Jupyter notebookokban, a [Matplotlib](https://matplotlib.org/) (amelyet az előző leckében is láttál).
+Egy adatvizualizációs könyvtár, ami jól működik Jupyter notebookokban, a [Matplotlib](https://matplotlib.org/) (amit az előző leckében is láthattál).
-> Szerezz több tapasztalatot az adatvizualizációval [ezekben az oktatóanyagokban](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott).
+> Szerezz több tapasztalatot adatvizualizációban [ezeken az oktatóanyagokon keresztül](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott).
-## Gyakorlat - kísérletezz a Matplotlibgel
+## Gyakorlat – kísérletezz a Matplotlib-pel
-Próbálj meg néhány alapvető diagramot készíteni, hogy megjelenítsd az új dataframe-et, amelyet éppen létrehoztál. Mit mutatna egy alapvető vonaldiagram?
+Próbálj meg néhány alap diagramot készíteni az újonnan létrehozott dataframe megjelenítésére. Mit mutatna egy egyszerű vonaldiagram?
-1. Importáld a Matplotlibet a fájl tetején, a Pandas importálása alatt:
+1. Importáld a Matplotlib-et a fájl tetején, a Pandas import alatt:
```python
import matplotlib.pyplot as plt
```
1. Futtasd újra az egész notebookot a frissítéshez.
-1. A notebook alján adj hozzá egy cellát, hogy dobozdiagramot készíts:
+1. A notebook alján adj hozzá egy cellát, hogy dobozdiaagramot (boxplot) készíts az adatokból:
```python
price = new_pumpkins.Price
@@ -174,44 +174,121 @@ Próbálj meg néhány alapvető diagramot készíteni, hogy megjelenítsd az ú
plt.show()
```
- 
+ 
- Hasznos ez a diagram? Meglepett valami vele kapcsolatban?
+ Hasznos ez a diagram? Meglep valami benne?
- Ez nem különösebben hasznos, mivel csak az adataidat mutatja pontok szórásaként egy adott hónapban.
+ Nem igazán hasznos, mivel mindössze azt mutatja meg, hogy az adatok pontjai egy adott hónapban hogyan oszlanak el.
### Tedd hasznossá
-Ahhoz, hogy a diagramok hasznos adatokat mutassanak, általában valahogyan csoportosítani kell az adatokat. Próbáljunk meg létrehozni egy diagramot, ahol az y tengely a hónapokat mutatja, és az adatok az eloszlást szemléltetik.
+Ahhoz, hogy a diagramok hasznos adatokat jelenítsenek meg, általában csoportosítanod kell az adatokat. Próbáljunk meg olyan diagramot készíteni, ahol az y tengely a hónapokat mutatja, az adat pedig a megoszlást szemlélteti.
-1. Adj hozzá egy cellát, hogy csoportosított oszlopdiagramot készíts:
+1. Adj hozzá egy cellát, hogy csoportosított oszlopdiagramot hozz létre:
```python
new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar')
plt.ylabel("Pumpkin Price")
```
- 
+ 
+
+ Ez már egy sokkal hasznosabb adatvizualizáció! Úgy tűnik, hogy a legmagasabb tökár szeptemberben és októberben van. Találkozik ez az elvárásoddal? Miért igen vagy miért nem?
+
+## Gyakorlat – kísérletezz a Seaborn-nal
+
+A Matplotlib hatékony, de sok kód kell a jól kidolgozott diagram elkészítéséhez. A [Seaborn](https://seaborn.pydata.org/) egy, a Matplotlib-re épülő könyvtár, amely statisztikai adatvizualizációra készült. Közvetlenül Pandas dataframe-ekkel dolgozik, vonzó alapstílusokat alkalmaz, és kevesebb kóddal lehet vele informatív diagramokat készíteni. Mivel a Seaborn Matplotlib objektumokat ad vissza, továbbra is használhatod mindazt, amit a Matplotlib-ről tudsz az eredmény finomhangolásához.
+
+> Ha nincs még telepítve a Seaborn, telepítsd a `pip install seaborn` paranccsal.
+
+1. Importáld a Seaborn-t a notebook tetején, más importok alatt. Szokásosan `sns` néven importáljuk:
+
+ ```python
+ import seaborn as sns
+ ```
+
+### Pontdiagramok a kapcsolatok bemutatására
+
+Az adatok előzetes feltárásának nagy része az _összefüggések_ kereséséről szól a változók között. Egy [pontdiagram](https://en.wikipedia.org/wiki/Scatter_plot) a legjobb eszközök egyike erre: ha a pontok vonalat követnek, akkor a két változó korrelálhat, ami jó jel arra, hogy a lineáris regressziós modell működhet.
+
+1. Készítsd újra a korábbi ár-hónap pontdiagramot, ezúttal a Seaborn [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) (relációs diagram) függvényével, amely közvetlenül a dataframe oszlopokkal működik:
+
+ ```python
+ sns.relplot(x="Price", y="Month", data=new_pumpkins)
+ ```
+
+ 
+
+ Figyeld meg, hogyan adod át az _oszlopneveket_ és a dataframe-et, a Seaborn pedig automatikusan kezeli az tengelycímkéket.
+
+2. Átválthatsz vonaldiagramra azzal, hogy `kind="line"` paramétert adsz. A Seaborn még egy árnyékolt sávot is rajzol, amely a vonal körüli konfidencia-intervallumot mutatja:
+
+ ```python
+ sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins)
+ ```
+
+ 
+
+ Ez a konkrét adat elég zajos, így a vonaldiagram nem a legjobb választás – de jól mutatja, milyen könnyen lehet típusokat váltani a Seaborn-ban.
+
+### Oszlopdiagramok az eloszlások bemutatására
+
+
+Korábban kézzel csoportosítottad az adatokat, hogy létrehozz egy oszlopdiagramot Matplotlib segítségével. A Seaborn [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) (kategóriák szerinti ábrázolás) képes elvégezni helyetted a csoportosítást és az aggregálást. Alapértelmezés szerint a `kind="bar"` a kategóriák átlagát mutatja fekete vonallal jelzett konfidencia intervallummal együtt.
+
+1. Készíts egy oszlopdiagramot a havi átlagárakról:
+
+ ```python
+ sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar")
+ ```
+
+ 
+
+ Ez megerősíti, amit Matplotlib-el láttál — az árak szeptember és október körül tetőznek — de a Seaborn azt is vizualizálja, mennyire _változnak_ az árak az egyes hónapokon belül.
+
+### Korrelációk megjelenítése hőtérképpel
+
+A szórásdiagramok két változót hasonlítanak össze egyszerre. Ha több numerikus oszlopod van, egy [hőtérkép](https://en.wikipedia.org/wiki/Heat_map) lehetővé teszi, hogy az _összes_ oszloppár közötti kapcsolat erősségét egyszerre lásd. Ez gyakori módszer arra, hogy felismerd, mely jellemzők vannak erősen korrelálva, mielőtt eldöntenéd, mit használj fel egy modell bemeneteként (és ugyanilyen típusú ábrázolást használnak később osztályozási zavarási mátrixok megjelenítéséhez).
+
+1. Készítsd el a korrelációs mátrixot Pandas segítségével, majd rajzold meg Seaborn [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html) függvényével. Az `annot=True` opció kiírja a korrelációs értékeket minden cellában:
+
+ ```python
+ correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()
+ sns.heatmap(correlations, annot=True, cmap="coolwarm")
+ ```
+
+ 
+
+ Az `1`-hez (vagy `-1`-hez) közeli értékek azt jelentik, hogy az oszlopok erősen _lineárisan_ korrelálnak. Figyeld meg, hogy a `Low Price` és `High Price` szinte tökéletesen korrelálnak. A `Month` viszont csak gyenge lineáris korrelációt mutat az árral — bár az oszlopdiagram egyértelmű szezonális csúcsot mutat szeptember és október körül. Ez egy fontos tanulság: a korrelációs együttható csak a _egyenes vonalú_ kapcsolatokat méri, így figyelmen kívül hagyhat szezonális vagy más nemlineáris mintákat. ✅ Miért hasznos mind a hőtérképet, mind az olyan diagramokat, mint az oszlopdiagram, megnézni mielőtt eldöntöd, mely oszlopokat használd?
+
+### Matplotlib vagy Seaborn?
+
+Mindkét könyvtár ismerete hasznos:
+
+- **Matplotlib** részletes kontrollt ad az ábra minden elemére, és szinte minden más Python-rajzoló könyvtár alapja.
+- **Seaborn** magasabb szintű függvényeket és vonzó alapbeállításokat nyújt statisztikai diagramokhoz, közvetlenül dolgozik dataframe-ekkel, és gyakran gyorsabb az adatelemzés felfedező fázisában.
- Ez egy hasznosabb adatvizualizáció! Úgy tűnik, hogy a tökök legmagasabb ára szeptemberben és októberben van. Ez megfelel az elvárásaidnak? Miért vagy miért nem?
+Egy gyakori munkafolyamat, hogy először Seaborn-t használsz az adatok gyors felfedezésére, majd Matplotlib-hez nyúlsz, ha a részleteket testreszabnád.
---
## 🚀Kihívás
-Fedezd fel a Matplotlib által kínált különböző vizualizációs típusokat. Mely típusok a legmegfelelőbbek regressziós problémákhoz?
+Fedezd fel a Matplotlib és a Seaborn által kínált különféle ábrázolási típusokat. Mely típusok a legmegfelelőbbek regressziós problémákhoz?
## [Előadás utáni kvíz](https://ff-quizzes.netlify.app/en/ml/)
-## Áttekintés és önálló tanulás
+## Áttekintés & Önálló tanulás
-Nézd meg az adatvizualizáció különböző módjait. Készíts listát a rendelkezésre álló könyvtárakról, és jegyezd fel, hogy melyek a legjobbak adott típusú feladatokhoz, például 2D vizualizációkhoz vagy 3D vizualizációkhoz. Mit fedezel fel?
+Nézd meg az adatvizualizálás számos módját. Készíts listát az elérhető különböző könyvtárakról és jegyezd fel, melyek a legjobbak adott feladattípusokhoz, például 2D vagy 3D ábrázoláshoz. Mit találsz?
## Feladat
-[Adatvizualizáció felfedezése](assignment.md)
+[Felfedező vizualizáció](assignment.md)
---
-**Felelősség kizárása**:
-Ez a dokumentum az AI fordítási szolgáltatás, a [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Fontos információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet.
\ No newline at end of file
+
+**Jogi nyilatkozat**:
+Ez a dokumentum az AI fordítási szolgáltatás, a [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével készült. Bár az pontosságra törekszünk, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az anyanyelvén tekintendő hiteles forrásnak. Fontos információk esetén professzionális emberi fordítást javasolunk. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely ebből a fordításból ered.
+
\ No newline at end of file
diff --git a/translations/hu/2-Regression/2-Data/solution/notebook.ipynb b/translations/hu/2-Regression/2-Data/solution/notebook.ipynb
index 630932625..c9ee45a54 100644
--- a/translations/hu/2-Regression/2-Data/solution/notebook.ipynb
+++ b/translations/hu/2-Regression/2-Data/solution/notebook.ipynb
@@ -3,7 +3,9 @@
{
"cell_type": "markdown",
"metadata": {},
- "source": []
+ "source": [
+ "## Lineáris regresszió tökök számára - 2. lecke\n"
+ ]
},
{
"cell_type": "code",
@@ -220,6 +222,7 @@
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
"pumpkins = pd.read_csv('../../data/US-pumpkins.csv')\n",
"\n",
"pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]\n",
@@ -383,18 +386,78 @@
"plt.ylabel(\"Pumpkin Price\")"
]
},
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Vizualizálás Seaborn-nal\n",
+ "\n",
+ "A [Seaborn](https://seaborn.pydata.org/) a Matplotlibre épül, és közvetlenül az adattáblákkal dolgozik, így nagyon kevés kóddal gyorsan készíthetők vonzó statisztikai ábrák.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Szórásdiagramok a kapcsolatok megjelenítésére\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", kind=\"line\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Oszlopdiagrammok az eloszlások bemutatásához\n"
+ ]
+ },
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
- "source": []
+ "source": [
+ "sns.catplot(x=\"Month\", y=\"Price\", data=new_pumpkins, kind=\"bar\")"
+ ]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "\n---\n\n**Felelősségkizárás**: \nEz a dokumentum az [Co-op Translator](https://github.com/Azure/co-op-translator) AI fordítási szolgáltatás segítségével készült. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt a professzionális, emberi fordítás igénybevétele. Nem vállalunk felelősséget a fordítás használatából eredő félreértésekért vagy téves értelmezésekért.\n"
+ "### Hőtérképek korrelációk megjelenítéséhez\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()\n",
+ "sns.heatmap(correlations, annot=True, cmap=\"coolwarm\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "---\n\n\n**Jogi nyilatkozat**:\nEz a dokumentum az AI fordítási szolgáltatás, a [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével készült. Bár az pontosságra törekszünk, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az anyanyelvén tekintendő hiteles forrásnak. Fontos információk esetén professzionális emberi fordítást javasolunk. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely ebből a fordításból ered.\n\n"
]
}
],
@@ -424,13 +487,7 @@
"hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d"
}
},
- "orig_nbformat": 2,
- "coopTranslator": {
- "original_hash": "95726f0b8283628d5356a4f8eb8b4b76",
- "translation_date": "2025-09-04T07:11:39+00:00",
- "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
- "language_code": "hu"
- }
+ "orig_nbformat": 2
},
"nbformat": 4,
"nbformat_minor": 2
diff --git a/translations/hu/6-NLP/5-Hotel-Reviews-2/README.md b/translations/hu/6-NLP/5-Hotel-Reviews-2/README.md
index 0f603ad09..e0facb5ce 100644
--- a/translations/hu/6-NLP/5-Hotel-Reviews-2/README.md
+++ b/translations/hu/6-NLP/5-Hotel-Reviews-2/README.md
@@ -1,24 +1,24 @@
-# Érzelemfelismerés szállodai vélemények alapján
+# Érzelemelemzés szállodai értékelésekkel
-Most, hogy részletesen megvizsgáltad az adatállományt, itt az ideje, hogy szűrd az oszlopokat, majd NLP technikákat alkalmazz az adatállományon, hogy új betekintést nyerj a szállodákról.
+Miután részletesen megvizsgáltad az adatkészletet, itt az ideje, hogy kiszűrd a megfelelő oszlopokat, majd NLP technikákat alkalmazz az adatkészleten, hogy új betekintést nyerhess a szállodákról.
## [Előadás előtti kvíz](https://ff-quizzes.netlify.app/en/ml/)
-### Szűrési és érzelemfelismerési műveletek
+### Szűrés és érzelemelemzési műveletek
-Ahogy valószínűleg észrevetted, az adatállományban van néhány probléma. Néhány oszlop haszontalan információval van tele, mások hibásnak tűnnek. Ha helyesek is, nem világos, hogyan számították ki őket, és az eredmények nem ellenőrizhetők független számításokkal.
+Valószínűleg észrevetted, hogy az adatkészletnek vannak problémái. Egyes oszlopok haszontalan információkat tartalmaznak, mások hibásnak tűnnek. Ha helyesek, akkor sem világos, hogyan számították ki őket, és az eredményeket nem lehet saját számításokkal függetlenül ellenőrizni.
-## Gyakorlat: további adatfeldolgozás
+## Gyakorlat: egy kicsit több adatfeldolgozás
-Tisztítsd meg az adatokat egy kicsit jobban. Adj hozzá oszlopokat, amelyek később hasznosak lesznek, módosítsd más oszlopok értékeit, és teljesen törölj bizonyos oszlopokat.
+Tiszítsd meg az adatokat még egy kicsit. Adj hozzá hasznos oszlopokat, módosítsd más oszlopok értékeit, és bizonyos oszlopokat teljesen távolíts el.
1. Kezdeti oszlopfeldolgozás
- 1. Töröld a `lat` és `lng` oszlopokat.
+ 1. Távolítsd el a `lat` és `lng` oszlopokat
- 2. Cseréld ki a `Hotel_Address` értékeit az alábbi értékekre (ha a cím tartalmazza a város és az ország nevét, változtasd meg csak a városra és az országra).
+ 2. Cseréld ki a `Hotel_Address` értékeket az alábbiakra (ha a cím tartalmazza a város és az ország nevét is, csak a várost és az országot hagyd meg).
- Ezek az adatállományban szereplő egyetlen városok és országok:
+ Ezek a városok és országok találhatók az adatkészletben:
Amszterdam, Hollandia
@@ -30,7 +30,7 @@ Tisztítsd meg az adatokat egy kicsit jobban. Adj hozzá oszlopokat, amelyek ké
Párizs, Franciaország
- Bécs, Ausztria
+ Bécs, Ausztria
```python
def replace_address(row):
@@ -47,171 +47,171 @@ Tisztítsd meg az adatokat egy kicsit jobban. Adj hozzá oszlopokat, amelyek ké
elif "Vienna" in row["Hotel_Address"]:
return "Vienna, Austria"
- # Replace all the addresses with a shortened, more useful form
+ # Cserélje le az összes címet egy rövidebb, hasznosabb formára
df["Hotel_Address"] = df.apply(replace_address, axis = 1)
- # The sum of the value_counts() should add up to the total number of reviews
+ # A value_counts() összege meg kell, hogy egyezzen a teljes értékelésszámmal
print(df["Hotel_Address"].value_counts())
```
- Most már lekérdezheted az ország szintű adatokat:
+ Most már lekérdezheted az adatokat ország szinten is:
```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 |
+ | Hotel_Cím | Szálloda_Neve |
+ | :--------------------- | :--------: |
+ | Amszterdam, Hollandia | 105 |
+ | Barcelona, Spanyolország | 211 |
+ | London, Egyesült Királyság | 400 |
+ | Milánó, Olaszország | 162 |
+ | Párizs, Franciaország | 458 |
+ | Bécs, Ausztria | 158 |
-2. Szállodai meta-vélemény oszlopok feldolgozása
+2. Szállodai meta-értékelési oszlopok feldolgozása
- 1. Töröld az `Additional_Number_of_Scoring` oszlopot.
+ 1. Távolítsd el az `Additional_Number_of_Scoring` oszlopot
- 1. Cseréld ki a `Total_Number_of_Reviews` értékét az adott szállodához tartozó vélemények tényleges számával az adatállományban.
+ 1. Cseréld le a `Total_Number_of_Reviews` értékét a valós, az adatkészletben szereplő értékre
- 1. Cseréld ki az `Average_Score` értékét a saját számított átlagos pontszámunkkal.
+ 1. Cseréld le az `Average_Score` értékét a saját, kiszámított pontra
```python
- # Drop `Additional_Number_of_Scoring`
+ # Töröld az `Additional_Number_of_Scoring` értéket
df.drop(["Additional_Number_of_Scoring"], axis = 1, inplace=True)
- # Replace `Total_Number_of_Reviews` and `Average_Score` with our own calculated values
+ # Cseréld le a `Total_Number_of_Reviews` és az `Average_Score` értékeket a saját számított értékeinkre
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. Vélemény oszlopok feldolgozása
+3. Értékelési oszlopok feldolgozása
- 1. Töröld a `Review_Total_Negative_Word_Counts`, `Review_Total_Positive_Word_Counts`, `Review_Date` és `days_since_review` oszlopokat.
+ 1. Távolítsd el a `Review_Total_Negative_Word_Counts`, `Review_Total_Positive_Word_Counts`, `Review_Date` és `days_since_review` oszlopokat
- 2. Hagyd meg a `Reviewer_Score`, `Negative_Review` és `Positive_Review` oszlopokat változatlanul.
+ 2. Hagyd meg változatlanul a `Reviewer_Score`, `Negative_Review` és `Positive_Review` oszlopokat,
- 3. Egyelőre hagyd meg a `Tags` oszlopot.
+ 3. Hagyd meg most a `Tags` oszlopot is
- - A következő szakaszban további szűrési műveleteket végzünk a címkéken, majd a címkék törlésre kerülnek.
+ - A következő szakaszban további szűrőműveleteket végzünk a címkéken, majd a címkék eltávolításra kerülnek
-4. Véleményező oszlopok feldolgozása
+4. Értékelői oszlopok feldolgozása
- 1. Töröld a `Total_Number_of_Reviews_Reviewer_Has_Given` oszlopot.
+ 1. Távolítsd el a `Total_Number_of_Reviews_Reviewer_Has_Given` oszlopot
- 2. Hagyd meg a `Reviewer_Nationality` oszlopot.
+ 2. Hagyd meg a `Reviewer_Nationality` oszlopot
### Címke oszlopok
-A `Tag` oszlop problémás, mivel egy lista (szöveg formájában) van tárolva az oszlopban. Sajnos az alrészek sorrendje és száma nem mindig ugyanaz. Nehéz az ember számára azonosítani a releváns kifejezéseket, mivel 515,000 sor és 1427 szálloda van, és mindegyiknek kissé eltérő lehetőségei vannak, amelyeket a véleményező választhatott. Itt jön képbe az NLP. A szöveget átvizsgálva megtalálhatod a leggyakoribb kifejezéseket, és megszámolhatod őket.
+A `Tag` oszlop problémás, mivel egy felsorolás (szöveges formában) van benne tárolva. Sajnos az alcímek száma és sorrendje nem mindig egyezik meg. Nehéz az embernek azonosítani a fontos kifejezéseket, mert 515 000 sor, és 1427 szálloda van, mindegyik egy kicsit eltérő lehetőségekkel, amiből a véleményező választhatott. Itt jön jól az NLP. Átvizsgálhatod a szöveget, megtalálhatod a leggyakoribb kifejezéseket, és megszámolhatod őket.
-Sajnos nem az egyes szavak érdekelnek minket, hanem több szóból álló kifejezések (pl. *Üzleti út*). Egy több szóból álló gyakorisági eloszlás algoritmus futtatása ekkora adatmennyiségen (6762646 szó) rendkívül sok időt vehet igénybe, de anélkül, hogy megnéznénk az adatokat, úgy tűnik, hogy ez szükséges költség. Itt jön jól az exploratív adatvizsgálat, mivel láttál egy mintát a címkékből, például `[' Üzleti út ', ' Egyedül utazó ', ' Egyágyas szoba ', ' 5 éjszakát maradt ', ' Mobil eszközről küldve ']`, elkezdheted megkérdezni, hogy lehetséges-e jelentősen csökkenteni a feldolgozást. Szerencsére lehetséges - de először néhány lépést kell követned, hogy meghatározd az érdekes címkéket.
+Sajnos nem egyszavas kifejezések érdekelnek, hanem több szóból álló kifejezések (pl. *Üzleti út*). Egy több szavas gyakorisági eloszlás végrehajtása ekkora adatmennyiségen (6 762 646 szó) rendkívül hosszú időt venne igénybe, de az adatok ismerete nélkül ez szükségesnek tűnik. Itt jön jól a felderítő adat elemzés, mert láttál már címkemintát, mint például `[' Business trip ', ' Solo traveler ', ' Single Room ', ' Stayed 5 nights ', ' Submitted from a mobile device ']`, így elkezdheted keresni a módját, hogyan csökkentsd jelentősen a feldolgozandó adatot. Szerencsére lehet – de először néhány lépést kell követni a fontos címkék meghatározásához.
### Címkék szűrése
-Ne feledd, hogy az adatállomány célja az érzelmek és oszlopok hozzáadása, amelyek segítenek kiválasztani a legjobb szállodát (számodra vagy esetleg egy ügyfél számára, aki szállodai ajánló botot szeretne készíteni). Fel kell tenned magadnak a kérdést, hogy a címkék hasznosak-e vagy sem a végső adatállományban. Íme egy értelmezés (ha más célból lenne szükséged az adatállományra, különböző címkék maradhatnak benne/kieshetnek):
+Ne feledd, hogy az adatkészlet célja érzelem hozzáadása és olyan oszlopok létrehozása, amelyek segítenek a legjobb szálloda kiválasztásában (saját magad vagy egy ügyfél számára, aki szállodai ajánló bot fejlesztését kéri). El kell döntened, hogy a címkék hasznosak-e vagy sem a végső adatkészletben. Íme egy értelmezés (más célra más címkék maradhatnak bent vagy kerülhetnek ki):
-1. Az utazás típusa releváns, ezt meg kell tartani.
-2. A vendégcsoport típusa fontos, ezt meg kell tartani.
-3. Az a szoba, lakosztály vagy stúdió típusa, amelyben a vendég tartózkodott, irreleváns (minden szállodában alapvetően ugyanazok a szobák vannak).
-4. Az eszköz, amelyről a véleményt beküldték, irreleváns.
-5. Az éjszakák száma, amelyet a véleményező ott töltött, *lehet*, hogy releváns, ha hosszabb tartózkodást a szálloda kedvelésével társítasz, de ez erőltetett, és valószínűleg irreleváns.
+1. Az utazás típusa releváns, ennek meg kell maradnia
+2. A vendégcsoport típusa fontos, ennek meg kell maradnia
+3. A vendég által használt szoba, lakosztály vagy stúdió típusa nem releváns (minden szállodában lényegében ugyanazok a szobák vannak)
+4. Az eszköz, amin az értékelést benyújtották, nem releváns
+5. Az eltöltött éjszakák száma *lehet* releváns, ha azt feltételezed, hogy a hosszabb tartózkodás a szálloda jobban tetszésével jár, de ez megkérdőjelezhető és valószínűleg nem számít
-Összefoglalva, **tarts meg 2 fajta címkét, és távolítsd el a többit**.
+Összefoglalva, **2 fajta címkét tarts meg, a többit távolítsd el**.
-Először nem akarod megszámolni a címkéket, amíg nem kerülnek jobb formátumba, tehát ez azt jelenti, hogy el kell távolítani a szögletes zárójeleket és az idézőjeleket. Ezt többféleképpen megteheted, de a leggyorsabbat szeretnéd, mivel sok adat feldolgozása hosszú időt vehet igénybe. Szerencsére a pandas egyszerű módot kínál mindegyik lépés elvégzésére.
+Először nem akarod megszámolni a címkéket, amíg nincsenek megfelelő formátumban, ezért el kell távolítani a szögletes zárójeleket és a idézőjeleket. Többféleképpen lehet ezt megtenni, de a leggyorsabbat érdemes választani, mert sok adat feldolgozása hosszú időt vehet igénybe. Szerencsére a pandas egyszerű eszközöket kínál ezekhez a lépésekhez.
```Python
-# Remove opening and closing brackets
+# Távolítsa el a nyitó és záró zárójeleket
df.Tags = df.Tags.str.strip("[']")
-# remove all quotes too
+# távolítsa el az összes idézőjelet is
df.Tags = df.Tags.str.replace(" ', '", ",", regex = False)
```
-Minden címke valami ilyesmivé válik: `Üzleti út, Egyedül utazó, Egyágyas szoba, 5 éjszakát maradt, Mobil eszközről küldve`.
-
-Ezután találunk egy problémát. Néhány vélemény vagy sor 5 oszlopot tartalmaz, néhány 3-at, néhány 6-ot. Ez az adatállomány létrehozásának eredménye, és nehéz javítani. Szeretnéd megszámolni az egyes kifejezések gyakoriságát, de ezek különböző sorrendben vannak minden véleményben, így a számolás hibás lehet, és egy szálloda nem kapja meg azt a címkét, amelyet megérdemelt volna.
-
-Ehelyett a különböző sorrendet az előnyünkre fordítjuk, mivel minden címke több szóból áll, de vesszővel is el van választva! A legegyszerűbb módja ennek az, hogy létrehozunk 6 ideiglenes oszlopot, amelyekbe minden címkét beillesztünk a címke sorrendjének megfelelő oszlopba. Ezután egyesítheted a 6 oszlopot egy nagy oszlopba, és futtathatod a `value_counts()` metódust az eredményoszlopon. Ha ezt kinyomtatod, látni fogod, hogy 2428 egyedi címke volt. Íme egy kis minta:
-
-| Címke | Szám |
-| ------------------------------ | ------ |
-| Szabadidős utazás | 417778 |
-| Mobil eszközről küldve | 307640 |
-| Pár | 252294 |
-| 1 éjszakát maradt | 193645 |
-| 2 éjszakát maradt | 133937 |
-| Egyedül utazó | 108545 |
-| 3 éjszakát maradt | 95821 |
-| Üzleti út | 82939 |
-| Csoport | 65392 |
-| Fiatal gyermekes család | 61015 |
-| 4 éjszakát maradt | 47817 |
-| Kétszemélyes szoba | 35207 |
-| Standard kétszemélyes szoba | 32248 |
-| Superior kétszemélyes szoba | 31393 |
-| Idősebb gyermekes család | 26349 |
-| Deluxe kétszemélyes szoba | 24823 |
-| Kétszemélyes vagy ikerszoba | 22393 |
-| 5 éjszakát maradt | 20845 |
-| Standard kétszemélyes vagy ikerszoba | 17483 |
-| Klasszikus kétszemélyes szoba | 16989 |
-| Superior kétszemélyes vagy ikerszoba | 13570 |
-| 2 szoba | 12393 |
-
-Néhány gyakori címke, mint például `Mobil eszközről küldve`, nem hasznos számunkra, így okos dolog lehet eltávolítani őket, mielőtt megszámolnánk a kifejezések előfordulását, de ez olyan gyors művelet, hogy benne hagyhatod őket, és figyelmen kívül hagyhatod.
-
-### Az éjszakák számát jelző címkék eltávolítása
-
-Ezeknek a címkéknek az eltávolítása az első lépés, amely kissé csökkenti a figyelembe veendő címkék számát. Ne feledd, hogy nem távolítod el őket az adatállományból, csak úgy döntesz, hogy nem veszed figyelembe őket értékként a vélemények adatállományában.
-
-| Tartózkodás hossza | Szám |
-| ------------------ | ------ |
-| 1 éjszakát maradt | 193645 |
-| 2 éjszakát maradt | 133937 |
-| 3 éjszakát maradt | 95821 |
-| 4 éjszakát maradt | 47817 |
-| 5 éjszakát maradt | 20845 |
-| 6 éjszakát maradt | 9776 |
-| 7 éjszakát maradt | 7399 |
-| 8 éjszakát maradt | 2502 |
-| 9 éjszakát maradt | 1293 |
-| ... | ... |
-
-Számos különféle szoba, lakosztály, stúdió, apartman stb. van. Mindegyik nagyjából ugyanazt jelenti, és nem releváns számodra, így távolítsd el őket a figyelembe vételből.
-
-| Szobatípus | Szám |
-| --------------------------- | ------ |
-| Kétszemélyes szoba | 35207 |
-| Standard kétszemélyes szoba | 32248 |
-| Superior kétszemélyes szoba | 31393 |
-| Deluxe kétszemélyes szoba | 24823 |
-| Kétszemélyes vagy ikerszoba | 22393 |
-| Standard kétszemélyes vagy ikerszoba | 17483 |
-| Klasszikus kétszemélyes szoba | 16989 |
-| Superior kétszemélyes vagy ikerszoba | 13570 |
-
-Végül, és ez örömteli (mivel nem igényelt sok feldolgozást), a következő *hasznos* címkék maradnak:
-
-| Címke | Szám |
-| --------------------------------------------- | ------ |
-| Szabadidős utazás | 417778 |
-| Pár | 252294 |
-| Egyedül utazó | 108545 |
-| Üzleti út | 82939 |
-| Csoport (összevonva Barátokkal utazók címkével) | 67535 |
-| Fiatal gyermekes család | 61015 |
-| Idősebb gyermekes család | 26349 |
-| Háziállattal | 1405 |
-
-Érvelhetsz azzal, hogy a `Barátokkal utazók` nagyjából ugyanaz, mint a `Csoport`, és ez igaz lenne, ha összevonnád őket, ahogy fentebb. A helyes címkék azonosításához szükséges kód megtalálható itt: [Tags notebook](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/1-notebook.ipynb).
-
-Az utolsó lépés az, hogy új oszlopokat hozz létre ezekhez a címkékhez. Ezután minden véleménysor esetében, ha a `Tag` oszlop megegyezik az egyik új oszloppal, adj hozzá egy 1-est, ha nem, adj hozzá egy 0-t. Az eredmény egy összesítés lesz arról, hogy hány véleményező választotta ezt a szállodát (összesítve) például üzleti vagy szabadidős célra, vagy hogy háziállattal érkezett-e, és ez hasznos információ lehet szálloda ajánlásakor.
+Minden címke olyanná válik, mint: `Business trip, Solo traveler, Single Room, Stayed 5 nights, Submitted from a mobile device`.
+
+Ezután egy problémát találunk. Néhány értékelés vagy sor 5 oszlopból áll, néhány 3-ból, mások 6-ból. Ez az adatkészlet létrehozásának módjából ered, és nehéz orvosolni. Meg akarod számolni az egyes kifejezéseket, de azok különböző sorrendben vannak az értékelésekben, így a megszámlálás hibázhat, és lehet, hogy egy szálloda nem kap megérdemelt címkét.
+
+Ehelyett a sorrendet a javunkra fordítjuk, mert mindegyik címke több szóból áll, de vesszővel van elválasztva! A legegyszerűbb megoldás 6 ideiglenes oszlop létrehozása, mindegyikbe a címke a maga sorrendjében kerül. Ezeket azután egy nagy oszlopba egyesítjük, és ráfuttatjuk a `value_counts()` metódust. Az eredmény 2428 egyedi címke volt. Íme egy kis minta:
+
+| Címke | Darabszám |
+| ------------------------------ | --------- |
+| Szabadidős utazás | 417778 |
+| Mobil eszközről benyújtva | 307640 |
+| Pár | 252294 |
+| 1 éjszakát eltöltött | 193645 |
+| 2 éjszakát eltöltött | 133937 |
+| Egyedül utazó | 108545 |
+| 3 éjszakát eltöltött | 95821 |
+| Üzleti út | 82939 |
+| Csoport | 65392 |
+| Fiatal gyerekes család | 61015 |
+| 4 éjszakát eltöltött | 47817 |
+| Kétszemélyes szoba | 35207 |
+| Standard kétszemélyes szoba | 32248 |
+| Superior kétszemélyes szoba | 31393 |
+| Nagyobb gyerekes család | 26349 |
+| Deluxe kétszemélyes szoba | 24823 |
+| Kétszemélyes vagy iker szoba| 22393 |
+| 5 éjszakát eltöltött | 20845 |
+| Standard kétszemélyes vagy iker szoba | 17483 |
+| Klasszikus kétszemélyes szoba | 16989 |
+| Superior kétszemélyes vagy iker szoba | 13570 |
+| 2 szoba | 12393 |
+
+Néhány gyakori címke, mint a `Mobil eszközről benyújtva` haszontalan számunkra, ezért okos dolog lehet eltávolítani őket a címke előfordulás megszámlálása előtt, de a művelet olyan gyors, hogy bent is hagyhatod és figyelmen kívül hagyhatod.
+
+### Az eltöltött éjszakák címkék eltávolítása
+
+Ezek eltávolítása az első lépés, enyhén csökkenti a figyelembe vett címkék számát. Megjegyzendő, hogy nem az adatkészletből távolítod el őket, csak a számlálás/megőrzés céljára nem veszed figyelembe.
+
+| Tartózkodás hossza | Darabszám |
+| ------------------ | --------- |
+| 1 éjszakát eltöltött | 193645 |
+| 2 éjszakát eltöltött | 133937 |
+| 3 éjszakát eltöltött | 95821 |
+| 4 éjszakát eltöltött | 47817 |
+| 5 éjszakát eltöltött | 20845 |
+| 6 éjszakát eltöltött | 9776 |
+| 7 éjszakát eltöltött | 7399 |
+| 8 éjszakát eltöltött | 2502 |
+| 9 éjszakát eltöltött | 1293 |
+| ... | ... |
+
+Rengeteg különböző szoba, lakosztály, stúdió, apartman stb. van. Ezek nagyjából ugyanazt jelentik és nem relevánsak számodra, ezért távolítsd el őket a figyelembevételből.
+
+| Szoba típusa | Darabszám |
+| ------------------------------- | --------- |
+| Kétszemélyes szoba | 35207 |
+| Standard kétszemélyes szoba | 32248 |
+| Superior kétszemélyes szoba | 31393 |
+| Deluxe kétszemélyes szoba | 24823 |
+| Kétszemélyes vagy iker szoba | 22393 |
+| Standard kétszemélyes vagy iker szoba | 17483 |
+| Klasszikus kétszemélyes szoba | 16989 |
+| Superior kétszemélyes vagy iker szoba | 13570 |
+
+Végül, és ez örömteli (mert alig volt feldolgozás), a következő *hasznos* címke marad meg:
+
+| Címke | Darabszám |
+| --------------------------------------------- | --------- |
+| Szabadidős utazás | 417778 |
+| Pár | 252294 |
+| Egyedül utazó | 108545 |
+| Üzleti út | 82939 |
+| Csoport (egybevonva a baráti utazókkal) | 67535 |
+| Fiatal gyerekes család | 61015 |
+| Nagyobb gyerekes család | 26349 |
+| Háziállattal | 1405 |
+
+Az is vitatható, hogy a `Travellers with friends` többé-kevésbé ugyanaz, mint a `Group`, és jogos őket összevonni a fentiek szerint. A helyes címkék azonosításának kódja a [Tags notebook](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/1-notebook.ipynb).
+
+Az utolsó lépés, hogy új oszlopokat hozz létre ezeknek a címkéknek. Minden értékelői sorban, ha a `Tag` oszlop megegyezik az új oszlop egyikével, akkor 1-et adj hozzá, ha nem, akkor 0-t. Az eredményként megkapod, hogy összesen hány értékelő választotta adott szállodát, például üzleti útra vagy szabadidős utazásra, vagy háziállat hozatalára, és ez hasznos információ a szállodai ajánláshoz.
```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
+# A címkék feldolgozása új oszlopokká
+# A Hotel_Reviews_Tags.py fájl azonosítja a legfontosabb címkéket
+# Szabadidős utazás, Pár, Egyéni utazó, Üzleti út, Csoport kombinálva Baráti utazókkal,
+# Család kisgyermekkel, Család nagyobb gyerekkel, Háziállattal
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)
@@ -223,25 +223,25 @@ df["With_a_pet"] = df.Tags.apply(lambda tag: 1 if "With a pet" in tag else 0)
```
-### Az adatállomány mentése
+### Mentés
-Végül mentsd el az adatállományt az aktuális állapotában egy új néven.
+Végül mentsd az adatkészletet az aktuális állapotában egy új néven.
```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
+# Új adatfájl mentése kiszámított oszlopokkal
print("Saving results to Hotel_Reviews_Filtered.csv")
df.to_csv(r'../data/Hotel_Reviews_Filtered.csv', index = False)
```
-## Érzelemfelismerési műveletek
+## Érzelemelemzés műveletek
-Ebben az utolsó szakaszban érzelemfelismerést alkalmazol a vélemény oszlopokra, és az eredményeket elmented egy adatállományban.
+Ebben a végső szakaszban végezd el az érzelemelemzést az értékelői oszlopokon, és mentsd az eredményt egy új adatkészletbe.
## Gyakorlat: a szűrt adatok betöltése és mentése
-Ne feledd, hogy most a korábban mentett szűrt adatállományt töltöd be, **nem** az eredeti adatállományt.
+Jegyezd meg, hogy most a szűrt adatkészletet töltöd be, amelyet a korábbi szakaszban mentettél, **nem** az eredetit.
```python
import time
@@ -251,53 +251,77 @@ from nltk.corpus import stopwords
from nltk.sentiment.vader import SentimentIntensityAnalyzer
nltk.download('vader_lexicon')
-# Load the filtered hotel reviews from CSV
+# Töltse be a szűrt szállodai véleményeket CSV-ből
df = pd.read_csv('../../data/Hotel_Reviews_Filtered.csv')
-# You code will be added here
+# Az Ön kódja ide kerül hozzáadásra
-# Finally remember to save the hotel reviews with new NLP data added
+# Végül ne felejtse el elmenteni a szállodai véleményeket az új NLP adatokkal együtt
print("Saving results to Hotel_Reviews_NLP.csv")
df.to_csv(r'../data/Hotel_Reviews_NLP.csv', index = False)
```
### Stop szavak eltávolítása
-Ha érzelemfelismerést futtatnál a negatív és pozitív vélemény oszlopokon, az hosszú időt vehet igénybe. Egy erős teszt laptopon, gyors CPU-val tesztelve 12-14 percet vett igénybe, attól függően, hogy melyik érzelemfelismerési könyvtárat használták. Ez viszonylag hosszú idő, így érdemes megvizsgálni, hogy lehet-e gyorsítani.
+Ha az érzelemelemzést futtatnád a negatív és pozitív értékelői oszlopokon, az hosszú időt venne igénybe. Egy erős tesztlaptopon, gyors CPU-val 12-14 percig tartott, attól függően mely érzelemelemző könyvtárat használták. Ez viszonylag hosszú idő, ezért érdemes megvizsgálni a gyorsítás lehetőségét.
-A stop szavak, vagyis olyan gyakori angol szavak eltávolítása, amelyek nem változtatják meg egy mondat érzelmi töltetét, az első lépés. Ezek eltávolításával az érzelemfelismerés gyorsabban fut, de nem lesz kevésbé pontos (mivel a stop szavak nem befolyásolják az érzelmi töltetet, de lassítják az elemzést).
+A stop szavak, azaz gyakori angol szavak, amelyek nem befolyásolják a mondat érzelmi töltetét, eltávolítása az első lépés. Eltávolításukkal gyorsabb lehet az érzelemelemzés, de nem lesz kevésbé pontos (mivel a stop szavak nem befolyásolják az érzelmet, csak lassítják az elemzést).
-A leghosszabb negatív vélemény 395 szóból állt, de a stop szavak eltávolítása után 195 szóból.
+A leghosszabb negatív értékelés 395 szóból állt, de a stop szavak eltávolítása után már csak 195 szóból.
-A stop szavak eltávolítása szintén gyors művelet, 515,000 sorból álló 2 vélemény oszlopból a stop szavak eltávolítása 3,3 másodpercet vett igénybe a teszt eszközön. Ez kissé több vagy kevesebb időt vehet igénybe nálad, attól függően, hogy milyen gyors a CPU-d, mennyi RAM-od van, van-e SSD-d, és néhány más tényezőtől. A művelet relatív rövidsége azt jelenti, hogy ha javítja az érzelemfelismerés idejét, akkor érdemes elvégezni.
+A stop szavak eltávolítása szintén gyors művelet volt: két értékelési oszlopból több mint 515 000 sorból 3,3 másodperc alatt megtörtént teszt környezetben. A tényleges idő kissé eltérhet a készülék CPU sebességétől, RAM-tól, SSD meglététől és egyéb tényezőktől függően. Az elég rövid végrehajtás miatt, ha ezzel csökkenthető az érzelemelemzés ideje, akkor megéri megtenni.
-@@CODE_BLOCK_
-Az NLTK különböző érzelemelemzőket kínál, amelyekkel tanulhatsz, és helyettesítheted őket, hogy megnézd, az érzelem mennyire pontos vagy kevésbé pontos. Itt a VADER érzelemelemzést használjuk.
+```python
+from nltk.corpus import stopwords
+
+# Töltse be a szállodai értékeléseket CSV-ből
+df = pd.read_csv("../../data/Hotel_Reviews_Filtered.csv")
+
+# Távolítsa el a stop szavakat - sok szöveg esetén lassú lehet!
+# Ryan Han (ryanxjhan a Kaggle-en) nagyszerű bejegyzést írt a különböző stop szavak eltávolítási módszerek teljesítményének méréséről
+# https://www.kaggle.com/ryanxjhan/fast-stop-words-removal # Ryan által ajánlott módszer használata
+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
+
+# Távolítsa el a stop szavakat mindkét oszlopból
+df.Negative_Review = df.Negative_Review.apply(remove_stopwords)
+df.Positive_Review = df.Positive_Review.apply(remove_stopwords)
+```
-> 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, 2014. június.
+### Érzelemelemzés végrehajtása
+
+Most kiszámolod az érzelemelemzést mind a negatív, mind a pozitív értékelésekhez, és az eredményt két új oszlopban tárolod. Az érzelem pontosságát az fogja mutatni, hogy összehasonlítod a véleményező pontszámával ugyanarra az értékelésre. Például, ha a negatív értékelés érzelmi töltete 1 (rendkívül pozitív), és a pozitív értékelés is 1, de a véleményező a legalacsonyabb pontszámot adta a szállodának, akkor vagy az értékelő szövege nem felel meg a pontszámnak, vagy az érzelemelemző nem ismerte fel helyesen az érzelmet. Várható, hogy az érzelem pontszámok néha teljesen hibásak lesznek, és ezt gyakran meg lehet magyarázni, pl. az értékelés lehet nagyon szarkasztikus: "Persze, nagyon élveztem, hogy fűtés nélküli szobában aludtam", és az érzelemelemző pozitívnak gondolja, míg egy ember tudja, hogy szarkazmus.
+
+Az NLTK többféle érzelemelemzőt is kínál, amiket kipróbálhatsz, hogy lássad, melyik mennyire pontos. Itt a VADER érzelemelemzést használjuk.
+
+
+> Hutto, C.J. & Gilbert, E.E. (2014). VADER: Egy takarékos, szabályalapú modell a közösségi média szövegeinek érzelemelemzésére. Nyolcadik Nemzetközi Konferencia a Webblogokról és a Közösségi Médiumokról (ICWSM-14). Ann Arbor, MI, 2014. június.
```python
from nltk.sentiment.vader import SentimentIntensityAnalyzer
-# Create the vader sentiment analyser (there are others in NLTK you can try too)
+# Hozd létre a vader érzelemelemzőt (az NLTK-ban vannak más lehetőségek is, amelyeket kipróbálhatsz)
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.
+# Hutto, C.J. & Gilbert, E.E. (2014). VADER: Egy takarékos, szabályalapú modell a közösségi média szövegének érzelemelemzéséhez. Nyolcadik Nemzetközi Weblogok és Közösségi Média Konferencia (ICWSM-14). Ann Arbor, MI, 2014 június.
-# 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
+# Egy véleményhez 3 bemeneti lehetőség van:
+# Lehet "Nincs negatív", ekkor térj vissza 0-val
+# Lehet "Nincs pozitív", ekkor térj vissza 0-val
+# Lehet egy vélemény, ekkor számold ki az érzelmet
def calc_sentiment(review):
if review == "No Negative" or review == "No Positive":
return 0
return vader_sentiment.polarity_scores(review)["compound"]
```
-Később, amikor a programodban készen állsz az érzelem kiszámítására, alkalmazhatod azt minden egyes értékelésre az alábbi módon:
+Később a programban, amikor készen állsz az érzelem kiszámítására, ezt alkalmazhatod minden értékelésre a következő módon:
```python
-# Add a negative sentiment and positive sentiment column
+# Adj hozzá egy negatív érzelmi töltetű és egy pozitív érzelmi töltetű oszlopot
print("Calculating sentiment columns for both positive and negative reviews")
start = time.time()
df["Negative_Sentiment"] = df.Negative_Review.apply(calc_sentiment)
@@ -306,7 +330,7 @@ end = time.time()
print("Calculating sentiment took " + str(round(end - start, 2)) + " seconds")
```
-Ez körülbelül 120 másodpercet vesz igénybe a számítógépemen, de ez minden gépen eltérő lehet. Ha ki szeretnéd nyomtatni az eredményeket, és megnézni, hogy az érzelem megfelel-e az értékelésnek:
+Ez körülbelül 120 másodpercet vesz igénybe a számítógépemen, de gépenként eltérő lehet. Ha ki akarod nyomtatni az eredményeket és megnézni, hogy az érzelem egyezik-e az értékeléssel:
```python
df = df.sort_values(by=["Negative_Sentiment"], ascending=True)
@@ -315,44 +339,45 @@ df = df.sort_values(by=["Positive_Sentiment"], ascending=True)
print(df[["Positive_Review", "Positive_Sentiment"]])
```
-Az utolsó dolog, amit a fájllal meg kell tenni, mielőtt a kihívásban használnád, az az, hogy elmented! Érdemes átrendezni az összes új oszlopot is, hogy könnyebb legyen velük dolgozni (emberi szempontból ez csak egy kozmetikai változtatás).
+A legutolsó teendő a fájllal a kihívás előtt, hogy elmentsd! Érdemes megfontolnod az új oszlopok átrendezését is, hogy könnyebben kezelhetők legyenek (egy ember számára ez csak esztétikai változtatás).
```python
-# Reorder the columns (This is cosmetic, but to make it easier to explore the data later)
+# Átrendezni az oszlopokat (Ez csak kozmetikai, de megkönnyíti a későbbi adatfelfedezést)
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)
```
-Az egész kódot futtatnod kell [az elemző jegyzetfüzethez](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/3-notebook.ipynb) (miután futtattad [a szűrő jegyzetfüzetet](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/1-notebook.ipynb), hogy létrehozd a Hotel_Reviews_Filtered.csv fájlt).
+Futtasd le az egész kódot a [elemzési jegyzetfüzethez](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/3-notebook.ipynb) (miután lefuttattad a [szűrő jegyzetfüzetet](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/1-notebook.ipynb) a Hotel_Reviews_Filtered.csv fájl előállításához).
-Összefoglalva, a lépések:
+Ismétlésképpen, a lépések a következők:
-1. Az eredeti adatállomány **Hotel_Reviews.csv** a korábbi leckében került feltárásra [az explorer jegyzetfüzettel](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/4-Hotel-Reviews-1/solution/notebook.ipynb)
-2. A Hotel_Reviews.csv fájlt [a szűrő jegyzetfüzet](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/1-notebook.ipynb) szűri, amelynek eredménye **Hotel_Reviews_Filtered.csv**
-3. A Hotel_Reviews_Filtered.csv fájlt [az érzelemelemző jegyzetfüzet](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/3-notebook.ipynb) dolgozza fel, amelynek eredménye **Hotel_Reviews_NLP.csv**
-4. Használd a Hotel_Reviews_NLP.csv fájlt az alábbi NLP kihívásban
+1. Az eredeti adathalmaz fájl, a **Hotel_Reviews.csv** az előző leckében került feltérképezésre a [feltérképező jegyzetfüzet](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/4-Hotel-Reviews-1/solution/notebook.ipynb) segítségével
+2. A Hotel_Reviews.csv a [szűrő jegyzetfüzet](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/1-notebook.ipynb) által szűrésre kerül, ami **Hotel_Reviews_Filtered.csv** fájlt eredményez
+3. A Hotel_Reviews_Filtered.csv a [érzelemelemző jegyzetfüzet](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/3-notebook.ipynb) által feldolgozásra kerül, amely **Hotel_Reviews_NLP.csv** fájlt eredményez
+4. Használd a Hotel_Reviews_NLP.csv-t az alábbi NLP kihívásban
### Következtetés
-Amikor elkezdted, volt egy adatállományod oszlopokkal és adatokkal, de nem mindegyik volt ellenőrizhető vagy használható. Feltártad az adatokat, kiszűrted, amire nincs szükséged, átalakítottad a címkéket valami hasznosabbá, kiszámítottad a saját átlagokat, hozzáadtál néhány érzelem oszlopot, és remélhetőleg érdekes dolgokat tanultál a természetes szöveg feldolgozásáról.
+Amikor elkezdted, volt egy adathalmazod oszlopokkal és adatokkal, de nem mindegyiket lehetett ellenőrizni vagy használni. Feltérképezted az adatokat, kiszűrted, amire nincs szükséged, címkéket hasznos információvá alakítottad, kiszámoltad a saját átlagaidat, hozzáadtál néhány érzelem oszlopot, és remélhetőleg érdekes dolgokat tanultál a természetes szöveg feldolgozásáról.
-## [Utólagos kvíz](https://ff-quizzes.netlify.app/en/ml/)
+## [Előadás utáni kvíz](https://ff-quizzes.netlify.app/en/ml/)
## Kihívás
-Most, hogy elemezted az adatállományt érzelem szempontjából, próbáld meg alkalmazni azokat a stratégiákat, amelyeket ebben a tananyagban tanultál (például klaszterezést), hogy mintákat találj az érzelmek körül.
+Most, hogy az adathalmazod elemzésre került érzelem szempontjából, nézd meg, hogy a tanult stratégiákat (pl. klaszterezés) alkalmazva meg tudod-e találni az érzelem körüli mintázatokat.
## Áttekintés és önálló tanulás
-Vedd fel [ezt a Learn modult](https://docs.microsoft.com/en-us/learn/modules/classify-user-feedback-with-the-text-analytics-api/?WT.mc_id=academic-77952-leestott), hogy többet tanulj, és különböző eszközöket használj az érzelmek feltárására a szövegben.
-
-## Feladat
+Vedd [ezt a Learn modult](https://docs.microsoft.com/en-us/learn/modules/classify-user-feedback-with-the-text-analytics-api/?WT.mc_id=academic-77952-leestott) hogy többet tanulj és különböző eszközöket használj a szöveg érzelemének feltérképezésére.
+## Feladat
-[Próbálj ki egy másik adatállományt](assignment.md)
+[Próbálj ki egy másik adathalmazt](assignment.md)
---
-**Felelősség kizárása**:
-Ez a dokumentum az AI fordítási szolgáltatás, a [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Fontos információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet.
\ No newline at end of file
+
+**Jogi nyilatkozat**:
+Ez a dokumentum az AI fordítási szolgáltatás, a [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével készült. Bár az pontosságra törekszünk, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az anyanyelvén tekintendő hiteles forrásnak. Fontos információk esetén professzionális emberi fordítást javasolunk. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely ebből a fordításból ered.
+
\ No newline at end of file
diff --git a/translations/hu/8-Reinforcement/1-QLearning/README.md b/translations/hu/8-Reinforcement/1-QLearning/README.md
index 3c62ffae1..685729eb8 100644
--- a/translations/hu/8-Reinforcement/1-QLearning/README.md
+++ b/translations/hu/8-Reinforcement/1-QLearning/README.md
@@ -1,47 +1,47 @@
# Bevezetés a megerősítéses tanulásba és a Q-tanulásba
-
-> Sketchnote: [Tomomi Imura](https://www.twitter.com/girlie_mac)
+
+> Vázlatjegyzet készítette: [Tomomi Imura](https://www.twitter.com/girlie_mac)
-A megerősítéses tanulás három fontos fogalmat foglal magában: az ügynököt, az állapotokat és az állapotonkénti cselekvések halmazát. Egy adott állapotban végrehajtott cselekvésért az ügynök jutalmat kap. Képzeljük el újra a Super Mario számítógépes játékot. Te vagy Mario, egy pályán állsz egy szakadék szélén. Fölötted egy érme van. Az, hogy te Mario vagy, egy adott pályán, egy adott pozícióban... ez az állapotod. Ha egy lépést jobbra lépsz (egy cselekvés), leesel a szakadékba, és alacsony pontszámot kapsz. Ha viszont megnyomod az ugrás gombot, pontot szerzel, és életben maradsz. Ez egy pozitív kimenetel, amiért pozitív pontszámot kell kapnod.
+A megerősítéses tanulás három fontos fogalmat foglal magában: az ágentet, néhány állapotot és állapotonként egy cselekvési halmazt. Egy adott állapotban végrehajtott cselekedetért az ágens jutalmat kap. Gondoljunk újra a Super Mario számítógépes játékra. Te vagy Mario, egy játék szinten, egy szikla szélén állsz. Fent feletted egy érme van. Te, mint Mario, egy játékszinten, egy adott pozícióban... ez az állapotod. Egy lépés jobbra (cselekvés) átesne a sziklaperemen, és ez alacsony numerikus pontszámot eredményezne. Azonban a ugrás gomb megnyomásával pontot szerezhetnél, és életben maradnál. Ez egy pozitív eredmény, ami pozitív numerikus pontszámot kell, hogy adjon.
-A megerősítéses tanulás és egy szimulátor (a játék) segítségével megtanulhatod, hogyan játszd a játékot úgy, hogy maximalizáld a jutalmat, vagyis életben maradj, és minél több pontot szerezz.
+Megerősítéses tanulás és egy szimulátor (a játék) használatával megtanulhatod, hogyan játszd a játékot úgy, hogy maximalizáld a jutalmat, ami az életben maradás és minél több pont szerzése.
[](https://www.youtube.com/watch?v=lDq_en8RNOo)
-> 🎥 Kattints a fenti képre, hogy meghallgasd Dmitry előadását a megerősítéses tanulásról.
+> 🎥 Kattints a fent látható képre, hogy meghallgasd Dmitry előadását a megerősítéses tanulásról
## [Előadás előtti kvíz](https://ff-quizzes.netlify.app/en/ml/)
## Előfeltételek és beállítás
-Ebben a leckében Pythonban fogunk kódot kipróbálni. Képesnek kell lenned futtatni a Jupyter Notebook kódját, akár a saját számítógépeden, akár a felhőben.
+Ebben az órában kódokat fogunk kipróbálni Pythonban. Képesnek kell lenned futtatni a Jupyter Notebook kódját ennek a leckének, akár a számítógépeden, akár a felhőben.
-Megnyithatod [a lecke notebookját](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb), és végigmehetsz a leckén, hogy felépítsd a példát.
+Megnyithatod [a lecke jegyzetfüzetét](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb), és végigkövetheted a leckét a felépítéshez.
-> **Megjegyzés:** Ha a kódot a felhőből nyitod meg, le kell töltened az [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) fájlt is, amelyet a notebook kód használ. Helyezd el ugyanabban a könyvtárban, ahol a notebook található.
+> **Megjegyzés:** Ha a kódot a felhőből nyitod meg, akkor le kell töltened a [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) fájlt is, amely a notebook kódban használatos. Tedd ezt a jegyzetfüzet könyvtárába.
## Bevezetés
-Ebben a leckében **[Péter és a farkas](https://hu.wikipedia.org/wiki/P%C3%A9ter_%C3%A9s_a_farkas)** világát fogjuk felfedezni, amelyet egy orosz zeneszerző, [Szergej Prokofjev](https://hu.wikipedia.org/wiki/Szergej_Prokofjev) zenés meséje ihletett. A **megerősítéses tanulás** segítségével Pétert irányítjuk, hogy felfedezze a környezetét, ízletes almákat gyűjtsön, és elkerülje a farkassal való találkozást.
+Ebben a leckében felfedezzük a **[Péter és a farkas](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)** világát, melyet egy orosz zeneszerző, [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev) zenés meséje ihletett. Megerősítéses tanulást fogunk alkalmazni, hogy Péter felfedezhesse a környezetét, gyűjtheesse az ízletes almákat, és elkerülhesse a farkast.
-A **megerősítéses tanulás** (RL) egy olyan tanulási technika, amely lehetővé teszi számunkra, hogy egy **ügynök** optimális viselkedését tanuljuk meg egy adott **környezetben**, számos kísérlet lefuttatásával. Az ügynöknek ebben a környezetben van egy **célja**, amelyet egy **jutalomfüggvény** határoz meg.
+A **Megerősítéses tanulás** (RL) egy olyan tanulási technika, amely lehetővé teszi számunkra, hogy egy **ágens** optimális viselkedését megtanuljuk egy adott **környezetben** sok kísérlet segítségével. Az ágensnek ebben a környezetben van egy **célja**, amelyet egy **jutalomfüggvény** határoz meg.
## A környezet
-Egyszerűség kedvéért tekintsük Péter világát egy `szélesség` x `magasság` méretű négyzet alakú táblának, például így:
+Az egyszerűség kedvéért tekintsük Péter világát egy `szélesség` x `magasság` méretű négyzetes táblának, így:
-
+
-A tábla minden cellája lehet:
+A táblán minden cella lehet:
-* **talaj**, amin Péter és más lények járhatnak.
-* **víz**, amin nyilvánvalóan nem lehet járni.
-* **fa** vagy **fű**, ahol pihenni lehet.
-* egy **alma**, amit Péter örömmel találna meg, hogy táplálkozzon.
-* egy **farkas**, ami veszélyes, és el kell kerülni.
+* **föld**, amelyen Péter és más lények járhatnak.
+* **víz**, amelyen természetesen nem lehet járni.
+* egy **fa** vagy **fű**, ahol meg lehet pihenni.
+* egy **alma**, ami valami olyasmit jelent, amit Péter örömmel találna meg, hogy táplálkozhasson.
+* egy **farkas**, amely veszélyes és kerülendő.
-Van egy külön Python modul, az [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), amely tartalmazza a kódot a környezettel való munkához. Mivel ez a kód nem fontos a fogalmak megértéséhez, importáljuk a modult, és használjuk a minta tábla létrehozásához (kódblokk 1):
+Van egy külön Python modul, a [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), amely tartalmazza a kódot a környezettel való munkához. Mivel ez a kód nem fontos a fogalmak megértéséhez, importáljuk a modult, és használjuk a minta tábla létrehozásához (kódblokk 1):
```python
from rlboard import *
@@ -52,63 +52,63 @@ m.randomize(seed=13)
m.plot()
```
-Ez a kód egy, a fentiekhez hasonló környezetet fog megjeleníteni.
+Ez a kód ki kell, hogy írjon egy képet a környezetről, amely hasonló a fentiekhez.
-## Cselekvések és stratégia
+## Cselekvések és szabályzat
-Példánkban Péter célja az alma megtalálása, miközben elkerüli a farkast és más akadályokat. Ehhez lényegében addig sétálhat, amíg meg nem találja az almát.
+Péter célja példánkban az volna, hogy megtaláljon egy almát, miközben elkerüli a farkast és egyéb akadályokat. Ehhez lényegében körbejárhat, amíg talál egy almát.
Ezért bármely pozícióban választhat a következő cselekvések közül: fel, le, balra és jobbra.
-Ezeket a cselekvéseket egy szótárként definiáljuk, és a megfelelő koordinátaváltozásokhoz rendeljük. Például a jobbra mozgás (`R`) egy `(1,0)` párnak felel meg. (kódblokk 2):
+Ezeket a cselekvéseket egy szótárként definiáljuk, és hozzárendeljük az adott koordinátaváltozásokat. Például a jobbra való mozgás (`R`) egy `(1,0)` párnak felel meg (kódblokk 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()) }
```
-Összefoglalva, a forgatókönyv stratégiája és célja a következő:
+Összefoglalva, a stratégia és a cél az alábbiak:
-- **A stratégia**, az ügynökünk (Péter) stratégiáját egy úgynevezett **politika** határozza meg. A politika egy olyan függvény, amely bármely adott állapotban visszaadja a cselekvést. Esetünkben a probléma állapotát a tábla és a játékos aktuális pozíciója képviseli.
+- **A stratégia** az ágensemnek (Péter) egy ún. **szabályzat** által van megadva. Egy szabályzat egy függvény, ami visszaadja az adott állapotban végrehajtandó cselekvést. A mi esetünkben a probléma állapota a tábla, beleértve a játékos pillanatnyi pozícióját.
-- **A cél**, a megerősítéses tanulás célja egy jó politika megtanulása, amely lehetővé teszi a probléma hatékony megoldását. Az alapként vegyük figyelembe a legegyszerűbb politikát, az úgynevezett **véletlenszerű sétát**.
+- **A cél**, a megerősítéses tanulásban, hogy végül megtanuljunk egy jó szabályzatot, amely hatékonyan megoldja a problémát. Mégis, kiindulásként vegyük a legegyszerűbb szabályzatot, az ún. **véletlenszerű sétát**.
## Véletlenszerű séta
-Először oldjuk meg a problémát egy véletlenszerű séta stratégiával. A véletlenszerű séta során véletlenszerűen választjuk ki a következő cselekvést az engedélyezett cselekvések közül, amíg el nem érjük az almát (kódblokk 3).
+Először oldjuk meg problémánkat a véletlenszerű séta stratégiával. Véletlenszerű sétával véletlenszerűen választjuk ki a következő cselekvést az engedélyezett cselekvések közül, amíg el nem érjük az almát (kódblokk 3).
-1. Valósítsd meg a véletlenszerű sétát az alábbi kóddal:
+1. Valósítsuk meg a véletlenszerű sétát az alábbi kóddal:
```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
+ n = 0 # lépések száma
+ # állítsa be a kezdő pozíciót
if start_position:
m.human = start_position
else:
m.random_start()
while True:
if m.at() == Board.Cell.apple:
- return n # success!
+ return n # siker!
if m.at() in [Board.Cell.wolf, Board.Cell.water]:
- return -1 # eaten by wolf or drowned
+ return -1 # farkas elnyelte vagy vízbe fulladt
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
+ m.move(a) # hajtsa végre a tényleges lépést
break
n+=1
walk(m,random_policy)
```
- A `walk` hívás visszaadja a megfelelő útvonal hosszát, amely futtatásonként változhat.
+ A `walk` hívás vissza kell, hogy adja az adott út hosszát, amely egyik futásról a másikra változhat.
-1. Futtasd le a séta kísérletet többször (például 100-szor), és nyomtasd ki az eredményeket (kódblokk 4):
+1. Futtasd a séta kísérletet több alkalommal (például 100), és írd ki az eredménystatisztikát (kódblokk 4):
```python
def print_statistics(policy):
@@ -125,17 +125,17 @@ Először oldjuk meg a problémát egy véletlenszerű séta stratégiával. A v
print_statistics(random_policy)
```
- Figyeld meg, hogy az útvonal átlagos hossza körülbelül 30-40 lépés, ami elég sok, tekintve, hogy az átlagos távolság a legközelebbi almáig körülbelül 5-6 lépés.
+ Megjegyzés: az átlagos út hossza kb. 30-40 lépés, ami elég sok, figyelembe véve, hogy az átlagos távolság a legközelebbi almához kb. 5-6 lépés.
- Azt is láthatod, hogyan mozog Péter a véletlenszerű séta során:
+ Megnézheted, hogyan néz ki Péter mozgása a véletlenszerű séta során:

## Jutalomfüggvény
-Ahhoz, hogy a politikánk intelligensebb legyen, meg kell értenünk, mely lépések "jobbak", mint mások. Ehhez meg kell határoznunk a célunkat.
+Ahhoz, hogy szabályzatunk okosabb legyen, meg kell értenünk, mely lépések "jobbak", mint mások. Ehhez definiálnunk kell a célunkat.
-A cél egy **jutalomfüggvény** segítségével határozható meg, amely minden állapothoz visszaad egy pontszámot. Minél magasabb a szám, annál jobb a jutalomfüggvény. (kódblokk 5)
+A célt egy **jutalomfüggvénnyel** határozhatjuk meg, amely minden állapothoz pontszámot rendel. Minél nagyobb a szám, annál jobb a jutalomfüggvény. (kódblokk 5)
```python
move_reward = -0.1
@@ -154,39 +154,115 @@ def reward(m,pos=None):
return move_reward
```
-A jutalomfüggvények érdekessége, hogy a legtöbb esetben *csak a játék végén kapunk jelentős jutalmat*. Ez azt jelenti, hogy az algoritmusunknak valahogy emlékeznie kell a "jó" lépésekre, amelyek pozitív jutalomhoz vezettek a végén, és növelnie kell azok fontosságát. Hasonlóképpen, minden olyan lépést, amely rossz eredményhez vezet, el kell kerülni.
+Érdekes, hogy a jutalomfüggvények többségében *a jelentős jutalmat csak a játék végén kapjuk meg*. Ez azt jelenti, hogy algoritmusunknak valahogy meg kell jegyeznie azokat a "jó" lépéseket, amelyek pozitív jutalomhoz vezetnek a végén, és azok fontosságát növelnie kell. Hasonlóképpen, minden rossz eredményhez vezető lépést ösztönözni kell, hogy elkerülje az algoritmus.
## Q-tanulás
-Az algoritmus, amelyet itt tárgyalunk, a **Q-tanulás**. Ebben az algoritmusban a politika egy **Q-tábla** nevű függvénnyel (vagy adatszerkezettel) van meghatározva. Ez rögzíti az egyes cselekvések "jóságát" egy adott állapotban.
+Egy algoritmus, amelyet itt megvitatunk, a **Q-tanulás**. Ebben az algoritmusban a szabályzat egy függvénnyel (vagy adatszerkezettel) van definiálva, amit **Q-táblának** nevezünk. Ez rögzíti az egyes állapotokban elérhető cselekvések "jósságát".
-Q-táblának hívják, mert gyakran kényelmes táblázatként vagy többdimenziós tömbként ábrázolni. Mivel a táblánk mérete `szélesség` x `magasság`, a Q-táblát egy numpy tömbként ábrázolhatjuk, amelynek alakja `szélesség` x `magasság` x `len(cselekvések)`: (kódblokk 6)
+Q-táblának hívjuk, mert gyakran kényelmes táblázatként vagy többdimenziós tömbként ábrázolni. Mivel a táblánk mérete `szélesség` x `magasság`, a Q-táblát egy numpy tömbbel ábrázolhatjuk, amelynek alakja `szélesség` x `magasság` x `len(cselekvések)`: (kódblokk 6)
```python
Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions)
```
-Figyeld meg, hogy a Q-tábla összes értékét egyenlő értékkel inicializáljuk, esetünkben 0,25-tel. Ez megfelel a "véletlenszerű séta" politikának, mert minden lépés minden állapotban egyformán jó. A Q-táblát átadhatjuk a `plot` függvénynek, hogy vizualizáljuk a táblát a táblán: `m.plot(Q)`.
+Vegyük észre, hogy a Q-tábla összes értékét egyenlőre inicializáljuk, nálunk ez 0.25. Ez megfelel a "véletlenszerű séta" szabályzatnak, mert minden lépés minden állapotban egyformán jó. A Q-táblát átadhatjuk a `plot` függvénynek, hogy megjelenítsük azt a táblán: `m.plot(Q)`.
-
+
-A cellák közepén egy "nyíl" látható, amely a mozgás preferált irányát jelzi. Mivel minden irány egyenlő, egy pont jelenik meg.
+Minden cella közepén egy "nyíl" jelzi az előnyben részesített mozgásirányt. Mivel minden irány egyenlő, egy pont van megjelenítve helyette.
-Most el kell indítanunk a szimulációt, felfedeznünk a környezetet, és meg kell tanulnunk a Q-tábla értékeinek jobb eloszlását, amely lehetővé teszi számunkra, hogy sokkal gyorsabban megtaláljuk az utat az almához.
+Most futtatnunk kell a szimulációt, felfedezni környezetünket, és megtanulni egy jobb Q-tábla értékeloszlást, amely gyorsabban megtalálja az almához vezető utat.
-## A Q-tanulás lényege: Bellman-egyenlet
+## Q-tanulás lényege: Bellman-egyenlet
-Amint elkezdünk mozogni, minden cselekvéshez tartozik egy megfelelő jutalom, azaz elméletileg kiválaszthatjuk a következő cselekvést a legmagasabb azonnali jutalom alapján. Azonban a legtöbb állapotban a lépés nem éri el a célunkat, hogy elérjük az almát, így nem tudjuk azonnal eldönteni, melyik irány a jobb.
+Amikor elindulunk, minden cselekvéshez tartozik egy jutalom, vagyis elméletileg kiválaszthatnánk a következő cselekvést a legmagasabb azonnali jutalom alapján. Azonban a legtöbb állapotban a lépés nem teljesíti célunkat, vagyis nem jutunk az almához, így nem dönthetünk azonnal, melyik irány a jobb.
-> Ne feledd, hogy nem az azonnali eredmény számít, hanem a végső eredmény, amelyet a szimuláció végén kapunk.
+> Ne feledd, hogy nem az azonnali eredmény számít, hanem a végső eredmény, amit a szimuláció végén kapunk meg.
-Ahhoz, hogy figyelembe vegyük ezt a késleltetett jutalmat, a **[dinamikus programozás](https://hu.wikipedia.org/wiki/Dinamikus_programoz%C3%A1s)** elveit kell alkalmaznunk, amelyek lehetővé teszik, hogy rekurzívan gondolkodjunk a problémánkról.
+A késleltetett jutalom figyelembe vételéhez a **[dinamikus programozás](https://en.wikipedia.org/wiki/Dynamic_programming)** elveit kell alkalmaznunk, amelyek lehetővé teszik a probléma rekurzív megfontolását.
-Tegyük fel, hogy most az *s* állapotban vagyunk, és a következő állapotba, *s'*-be akarunk lépni. Ezzel megkapjuk az azonnali jutalmat, *r(s,a)*, amelyet a jutalomfüggvény határoz meg, plusz némi jövőbeli jutalmat. Ha feltételezzük, hogy a Q-táblánk helyesen tükrözi az egyes cselekvések "vonzerejét", akkor az *s'* állapotban egy olyan *a* cselekvést választunk, amely a *Q(s',a')* maximális értékének felel meg. Így az *s* állapotban elérhető legjobb jövőbeli jutalom a következőképpen lesz meghatározva: `max`
+Tegyük fel, hogy most az *s* állapotban vagyunk, és a következő *s'* állapotba akarunk lépni. Ezzel kapjuk az azonnali jutalmat *r(s,a)* a jutalomfüggvényből, plusz egy jövőbeni jutalmat. Ha feltételezzük, hogy a Q-tábla helyesen tükrözi a cselekvések "vonzerejét", akkor az *s'* állapotban kiválasztjuk az *a* cselekvést, amely a *Q(s',a')* legmagasabb értékéhez tartozik. Így a legjobb jövőbeni jutalom az *s* állapotban legyen a `max`a'*Q(s',a')* (a maximum az összes lehetséges *a'* cselekvésen számított).
-## A szabály ellenőrzése
+Ez adja a **Bellman formula**-t a Q-tábla értékének kiszámításához az *s* állapotban, adott *a* cselekvésnél:
-Mivel a Q-tábla felsorolja az egyes állapotokban végrehajtható cselekvések "vonzerejét", könnyen használható hatékony navigáció meghatározására a világunkban. A legegyszerűbb esetben kiválaszthatjuk azt a cselekvést, amely a legmagasabb Q-tábla értékhez tartozik: (kód blokk 9)
+
+
+Itt γ az ún. **diszkont faktor**, amely meghatározza, milyen mértékben preferáljuk a jelenlegi jutalmat a jövőbelivel szemben és fordítva.
+
+## Tanulási algoritmus
+
+A fenti egyenlet alapján most megírhatjuk pszeudokódban a tanulási algoritmust:
+
+* Inicializáljuk a Q-táblát Q azonos számokkal minden állapothoz és cselekvéshez
+* Beállítjuk a tanulási rátát α ← 1
+* Ismételjük meg a szimulációt sokszor
+ 1. Induljunk véletlenszerű pozícióból
+ 1. Ismételjük
+ 1. Válasszuk ki a cselekvést *a* az állapot *s*-ben
+ 2. Hajtsuk végre a cselekvést, lépjünk az új *s'* állapotba
+ 3. Ha vége a játéknak, vagy a teljes jutalom túl kicsi - lépjünk ki a szimulációból
+ 4. Számítsuk ki a jutalmat *r* az új állapotban
+ 5. Frissítsük a Q-függvényt a Bellman-egyenlet szerint: *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ maxa'Q(s',a'))*
+ 6. *s* ← *s'*
+ 7. Frissítsük a teljes jutalmat és csökkentsük az α-t.
+
+## Kiaknázás vs. felfedezés
+
+A fenti algoritmusban nem részleteztük, pontosan hogyan válasszuk ki a cselekvést a 2.1 lépésben. Ha véletlenszerűen választunk, akkor véletlenszerűen felfedezzük a környezetet, és gyakran meghalhatunk, valamint bejárhatunk olyan területeket is, ahová egyébként nem mennénk. Alternatív megoldás, hogy kiaknázod a Q-tábla ismert értékeit, és így a legjobb cselekvést választod az adott állapotban (magasabb Q-értékű). Ez azonban megakadályozza a többi állapot felfedezését, és valószínűleg nem találjuk meg az optimális megoldást.
+
+Ezért a legjobb megközelítés egyensúlyt teremteni a felfedezés és a kiaknázás között. Ezt úgy érhetjük el, ha az állapotban lévő cselekvéseket a Q-tábla értékeinek arányában választjuk ki valószínűséggel. Eleinte, amikor minden Q-érték azonos, ez véletlenszerű választásnak felel meg, de ahogy többet tanulunk a környezetünkről, egyre valószínűbb, hogy követjük az optimális útvonalat, miközben az ágnes néha felfedező útra is mehet.
+
+## Python megvalósítás
+
+Most készen állunk a tanulási algoritmus megvalósítására. Mielőtt ezt megtennénk, szükségünk van egy függvényre, amely a Q-tábla tetszőleges számait átalakítja a megfelelő cselekvések valószínűségi vektorává.
+
+1. Hozd létre a `probs()` függvényt:
+
+ ```python
+ def probs(v,eps=1e-4):
+ v = v-v.min()+eps
+ v = v/v.sum()
+ return v
+ ```
+
+ Egy kis `eps` értéket adunk hozzá az eredeti vektorhoz, hogy elkerüljük a 0-val való osztást az induló esetben, amikor a vektor összetevői azonosak.
+
+Futtasd az algoritmust 5000 kísérlet, ún. **epocha** során: (kódblokk 8)
+```python
+ for epoch in range(5000):
+
+ # Válassz kezdeti pontot
+ m.random_start()
+
+ # Kezdd el az utazást
+ n=0
+ cum_reward = 0
+ while True:
+ x,y = m.human
+ v = probs(Q[x,y])
+ a = random.choices(list(actions),weights=v)[0]
+ dpos = actions[a]
+ m.move(dpos,check_correctness=False) # Megengedjük, hogy a játékos a táblán kívülre lépjen, ami az epizód végét jelenti
+ r = reward(m)
+ cum_reward += r
+ if r==end_reward or cum_reward < -1000:
+ lpath.append(n)
+ break
+ alpha = np.exp(-n / 10e5)
+ gamma = 0.5
+ ai = action_idx[a]
+ Q[x,y,ai] = (1 - alpha) * Q[x,y,ai] + alpha * (r + gamma * Q[x+dpos[0], y+dpos[1]].max())
+ n+=1
+```
+
+Az algoritmus futása után a Q-táblát frissíteni kell azzal az értékkel, amely meghatározza a különböző cselekvések vonzerejét minden lépésnél. Megpróbálhatjuk vizualizálni a Q-táblát azáltal, hogy minden cellában megjelenítünk egy vektort, ami a kívánt mozgás irányába mutat. Egyszerűség kedvéért egy kis kört rajzolunk nyílhegy helyett.
+
+
+
+## A szabályzat ellenőrzése
+
+Mivel a Q-tábla felsorolja az egyes cselekvések "vonzerősségét" minden állapotban, könnyű vele hatékony navigációt definiálni a világunkban. A legegyszerűbb esetben a legmagasabb Q-táblabeli értékhez tartozó cselekvést választjuk: (kódblokk 9)
```python
def qpolicy_strict(m):
@@ -198,17 +274,18 @@ def qpolicy_strict(m):
walk(m,qpolicy_strict)
```
-> Ha többször kipróbálod a fenti kódot, észreveheted, hogy néha "elakad", és a jegyzetfüzetben a STOP gombot kell megnyomnod a megszakításhoz. Ez azért történik, mert előfordulhatnak olyan helyzetek, amikor két állapot "mutat" egymásra az optimális Q-értékek alapján, ilyenkor az ügynök végtelenül mozoghat ezek között az állapotok között.
+
+> Ha többször is lefuttatod a fenti kódot, észreveheted, hogy néha "lefagy", és a megszakításhoz meg kell nyomnod a STOP gombot a jegyzetfüzetben. Ez azért fordul elő, mert előfordulhat olyan helyzet, amikor két állapot "mutat egymásra" az optimális Q-érték tekintetében, ilyenkor az ágensek végtelenül mozognak ezek között az állapotok között.
## 🚀Kihívás
-> **Feladat 1:** Módosítsd a `walk` függvényt úgy, hogy korlátozza az út maximális hosszát egy bizonyos lépésszámra (például 100), és figyeld meg, hogy a fenti kód időnként visszaadja ezt az értéket.
+> **1. feladat:** Módosítsd a `walk` függvényt, hogy korlátozd a maximális út hosszát egy bizonyos lépésszámra (például 100 lépés), és figyeld, hogy a fenti kód időről időre visszaadja ezt az értéket.
-> **Feladat 2:** Módosítsd a `walk` függvényt úgy, hogy ne térjen vissza olyan helyekre, ahol korábban már járt. Ez megakadályozza, hogy a `walk` ciklusba kerüljön, azonban az ügynök még mindig "csapdába" eshet egy olyan helyen, ahonnan nem tud kijutni.
+> **2. feladat:** Módosítsd a `walk` függvényt úgy, hogy ne térjen vissza azokhoz a helyekhez, ahol már járt korábban. Ez megakadályozza, hogy a `walk` ciklikusan mozogjon, azonban az ágensek még így is csapdába eshetnek egy olyan helyen, ahonnan nem tudnak elmenekülni.
## Navigáció
-Egy jobb navigációs szabály az lenne, amit a tanulás során használtunk, amely kombinálja a kihasználást és a felfedezést. Ebben a szabályban minden cselekvést egy bizonyos valószínűséggel választunk ki, amely arányos a Q-tábla értékeivel. Ez a stratégia még mindig eredményezheti, hogy az ügynök visszatér egy már felfedezett helyre, de ahogy az alábbi kódból látható, ez nagyon rövid átlagos útvonalat eredményez a kívánt helyre (ne feledd, hogy a `print_statistics` 100-szor futtatja a szimulációt): (kód blokk 10)
+Egy jobb navigációs politika az, amit a tanulás során használtunk, amely kombinálja a kihasználást és a felfedezést. Ebben a politikában minden egyes akciót bizonyos valószínűséggel választunk ki, arányosan a Q-tábla értékeivel. Ez a stratégia még mindig eredményezheti, hogy az ágensek visszatérjenek egy már felfedezett helyre, de, ahogy a lenti kódból látható, nagyon rövid átlagos utat eredményez a kívánt helyhez (emlékezz rá, hogy a `print_statistics` százszor futtatja a szimulációt): (kódblokk 10)
```python
def qpolicy(m):
@@ -220,28 +297,32 @@ def qpolicy(m):
print_statistics(qpolicy)
```
-A kód futtatása után sokkal rövidebb átlagos útvonalhosszt kell kapnod, 3-6 lépés körül.
+Ennek a kódnak a lefuttatása után sokkal kisebb átlagos út hosszt kell kapni, mint korábban, körülbelül 3-6 között.
## A tanulási folyamat vizsgálata
-Ahogy említettük, a tanulási folyamat egyensúlyozás a felfedezés és a problématér szerkezetéről szerzett tudás kihasználása között. Láttuk, hogy a tanulás eredményei (az ügynök képessége, hogy rövid utat találjon a célhoz) javultak, de az is érdekes, hogy megfigyeljük, hogyan viselkedik az átlagos útvonalhossz a tanulási folyamat során:
+Ahogy említettük, a tanulási folyamat az új ismeretek felfedezése és hasznosítása közötti egyensúly. Láttuk, hogy a tanulás eredménye (az ágensek segítségével a célhoz vezető rövid út megtalálásának képessége) javult, de érdekes megfigyelni, hogyan viselkedik az átlagos út hossz a tanulási folyamat során:
+
+
-## A tanulságok összefoglalása:
+A tanulságok összefoglalva:
-- **Az átlagos útvonalhossz növekszik**. Amit itt látunk, az az, hogy eleinte az átlagos útvonalhossz növekszik. Ez valószínűleg azért van, mert amikor semmit sem tudunk a környezetről, hajlamosak vagyunk rossz állapotokba, vízbe vagy farkasok közé kerülni. Ahogy többet tanulunk és elkezdjük használni ezt a tudást, hosszabb ideig tudjuk felfedezni a környezetet, de még mindig nem tudjuk pontosan, hol vannak az almák.
+- **Az átlagos út hossz nő**. Amit itt látunk, az az, hogy kezdetben az átlagos út hossz nő. Valószínűleg azért, mert amikor semmit sem tudunk a környezetről, akkor könnyen csapdába eshetünk rossz állapotokban, például vízben vagy a farkasnál. Ahogy többet tanulunk és használjuk ezt a tudást, hosszabb ideig tudjuk felfedezni a környezetet, de még mindig nem ismerjük jól, hol vannak az almák.
-- **Az útvonalhossz csökken, ahogy többet tanulunk**. Miután eleget tanultunk, az ügynök számára könnyebbé válik a cél elérése, és az útvonalhossz csökkenni kezd. Azonban még mindig nyitottak vagyunk a felfedezésre, így gyakran eltérünk az optimális úttól, és új lehetőségeket fedezünk fel, ami hosszabb utat eredményez.
+- **Az út hossz csökken, ahogy többet tanulunk**. Miután elég sokat megtanultunk, az ügynök számára könnyebb elérni a célt, és az út hossza elkezd csökkeni. Azonban még mindig nyitottak vagyunk a felfedezésre, így gyakran eltérünk a legjobb úttól, és új lehetőségeket fedezünk fel, ami az út hosszát az optimálisnál hosszabbá teszi.
-- **A hossz hirtelen megnő**. Amit ezen a grafikonon még megfigyelhetünk, az az, hogy egy ponton az útvonalhossz hirtelen megnőtt. Ez a folyamat sztochasztikus természetét jelzi, és azt, hogy bizonyos pontokon "elronthatjuk" a Q-tábla együtthatóit azzal, hogy új értékekkel felülírjuk őket. Ezt ideálisan minimalizálni kellene a tanulási ráta csökkentésével (például a tanulás végéhez közeledve csak kis értékkel módosítjuk a Q-tábla értékeit).
+- **A hossz hirtelen megnő**. A grafikonon azt is megfigyelhetjük, hogy egy ponton a hossz hirtelen megnőtt. Ez a folyamat sztochasztikus jellegére utal, és arra, hogy egy ponton "tönkretehetjük" a Q-tábla együtthatóit, ha új értékekkel felülírjuk azokat. Ezt ideális esetben csökkenteni kell a tanulási ráta visszaesésével (például a tanulás végén csak kis mértékben módosítjuk a Q-tábla értékeit).
-Összességében fontos megjegyezni, hogy a tanulási folyamat sikere és minősége jelentősen függ a paraméterektől, mint például a tanulási ráta, a tanulási ráta csökkenése és a diszkontfaktor. Ezeket gyakran **hiperparamétereknek** nevezik, hogy megkülönböztessék őket a **paraméterektől**, amelyeket a tanulás során optimalizálunk (például a Q-tábla együtthatói). A legjobb hiperparaméter értékek megtalálásának folyamatát **hiperparaméter optimalizációnak** nevezzük, és ez egy külön témát érdemel.
+Összességében fontos megjegyezni, hogy a tanulási folyamat sikere és minősége jelentősen függ a paraméterektől, mint például a tanulási ráta, a tanulási ráta csökkenése és a diszkont faktor. Ezeket gyakran **hiperparamétereknek** nevezzük, hogy elkülönítsük őket a **paraméterektől**, amelyeket a tanulás során optimalizálunk (például a Q-tábla együtthatóit). A legjobb hiperparaméter értékek megtalálásának folyamatát **hiperparaméter optimalizációnak** nevezzük, ami egy külön téma.
-## [Utó-előadás kvíz](https://ff-quizzes.netlify.app/en/ml/)
+## [Előadás utáni kvíz](https://ff-quizzes.netlify.app/en/ml/)
-## Feladat
-[Egy reálisabb világ](assignment.md)
+## Feladat
+[Egy valósághűbb világ](assignment.md)
---
-**Felelősség kizárása**:
-Ez a dokumentum az AI fordítási szolgáltatás, a [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet.
\ No newline at end of file
+
+**Jogi nyilatkozat**:
+Ez a dokumentum az AI fordítási szolgáltatás, a [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével készült. Bár az pontosságra törekszünk, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az anyanyelvén tekintendő hiteles forrásnak. Fontos információk esetén professzionális emberi fordítást javasolunk. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely ebből a fordításból ered.
+
\ No newline at end of file
diff --git a/translations/hu/9-Real-World/2-Debugging-ML-Models/README.md b/translations/hu/9-Real-World/2-Debugging-ML-Models/README.md
index 5ceec6d39..8f49de57c 100644
--- a/translations/hu/9-Real-World/2-Debugging-ML-Models/README.md
+++ b/translations/hu/9-Real-World/2-Debugging-ML-Models/README.md
@@ -1,150 +1,179 @@
-# Utószó: Modellhibakeresés gépi tanulásban a Responsible AI dashboard komponenseivel
+# Utószó: Modellhibakeresés gépi tanulásban a Felelős MI irányítópult elemeinek használatával
+
## [Előadás előtti kvíz](https://ff-quizzes.netlify.app/en/ml/)
-
+
## Bevezetés
-A gépi tanulás hatással van mindennapi életünkre. Az AI egyre inkább megjelenik olyan rendszerekben, amelyek alapvetően befolyásolják az egyéneket és a társadalmat, például az egészségügyben, pénzügyekben, oktatásban és foglalkoztatásban. Például rendszerek és modellek vesznek részt napi döntéshozatali feladatokban, mint például egészségügyi diagnózisok vagy csalások észlelése. Az AI fejlődése és gyors elterjedése azonban új társadalmi elvárásokkal és növekvő szabályozással találkozik. Gyakran látjuk, hogy az AI rendszerek nem felelnek meg az elvárásoknak, új kihívásokat vetnek fel, és a kormányok elkezdik szabályozni az AI megoldásokat. Ezért fontos, hogy ezeket a modelleket elemezzük, hogy mindenki számára igazságos, megbízható, befogadó, átlátható és felelősségteljes eredményeket biztosítsanak.
+A gépi tanulás hatással van mindennapi életünkre. A mesterséges intelligencia utat tör magának a legfontosabb rendszerekben, amelyek minket, egyéneket, valamint társadalmunkat érintenek, az egészségügytől, a pénzügyeken és az oktatáson át a foglalkoztatásig. Például rendszerek és modellek vesznek részt a napi döntéshozatali feladatokban, mint az egészségügyi diagnózisok vagy a csalás felismerése. Következésképpen az MI fejlődésével és az ütemezett elterjedéssel párhuzamosan folyamatosan változó társadalmi elvárásokkal és növekvő szabályozásokkal találkozunk válaszként. Állandóan tapasztaljuk, hogy az MI-rendszerek nem felelnek meg az elvárásoknak; új kihívásokat tárnak fel; és a kormányok elkezdik szabályozni az MI-megoldásokat. Ezért fontos, hogy ezeket a modelleket elemezzük annak érdekében, hogy mindenki számára igazságos, megbízható, befogadó, átlátható és elszámoltatható eredményeket szolgáltassanak.
-Ebben a tananyagban gyakorlati eszközöket mutatunk be, amelyekkel megvizsgálható, hogy egy modell rendelkezik-e felelősségteljes AI problémákkal. A hagyományos gépi tanulási hibakeresési technikák általában kvantitatív számításokon alapulnak, mint például az összesített pontosság vagy az átlagos hibaveszteség. Gondoljunk bele, mi történik, ha az adatok, amelyeket a modellek építéséhez használunk, bizonyos demográfiai csoportokat nem tartalmaznak, például faji, nemi, politikai nézetek vagy vallási csoportokat, vagy aránytalanul képviselik ezeket. Mi történik akkor, ha a modell kimenete egyes demográfiai csoportokat előnyben részesít? Ez túl- vagy alulképviseletet eredményezhet az érzékeny jellemzőcsoportokban, ami igazságossági, befogadási vagy megbízhatósági problémákat okozhat. Továbbá, a gépi tanulási modelleket gyakran "fekete dobozként" kezelik, ami megnehezíti annak megértését és magyarázatát, hogy mi vezérli a modell előrejelzéseit. Ezek mind olyan kihívások, amelyekkel az adatkutatók és AI fejlesztők szembesülnek, ha nincsenek megfelelő eszközeik a modellek igazságosságának vagy megbízhatóságának hibakeresésére és értékelésére.
+Ebben a tananyagban gyakorlati eszközöket vizsgálunk, amelyekkel felmérhető, ha egy modell felelős MI-problémákkal küzd. A hagyományos gépi tanulási hibakeresési technikák jellemzően kvantitatív számításokon alapulnak, például összesített pontosság vagy átlagos hibaveszteség. Képzeljük el, mi történik, ha az adat, amelyből a modelleket építjük, hiányos bizonyos demográfiai jellemzők tekintetében, például faj, nem, politikai nézet, vallás, vagy aránytalanul képviseli ezeket a csoportokat. Mi van akkor, ha a modell kimenetét úgy értelmezik, hogy egyes demográfiai csoportokat előnyben részesítsen? Ez felül- vagy alulreprezentáltságot okozhat ezekben az érzékeny jellemzőcsoportokban, ami igazságossági, befogadási vagy megbízhatósági problémákat eredményezhet a modellnél. Egy másik tényező, hogy a gépi tanulási modelleket fekete dobozoknak tekintjük, ami megnehezíti megérteni és magyarázni, mi befolyásolja egy modell előrejelzését. Ezek mind olyan kihívások, amelyekkel az adattudósok és MI-fejlesztők szembesülnek, amikor nem rendelkeznek megfelelő eszközökkel a modell igazságosságának vagy megbízhatóságának hibakeresésére és értékelésére.
-Ebben a leckében megtanulhatod, hogyan végezz hibakeresést a modelleken az alábbiak segítségével:
+Ebben a leckében a modellek hibakeresését tanulhatod meg az alábbi eszközök segítségével:
-- **Hibaelemzés**: azonosítsd, hogy az adateloszlás mely részeinél magas a modell hibaaránya.
-- **Modelláttekintés**: végezz összehasonlító elemzést különböző adatcsoportok között, hogy felfedezd a modell teljesítménymutatóiban lévő eltéréseket.
-- **Adatelemzés**: vizsgáld meg, hol lehet túl- vagy alulképviselet az adataidban, ami a modellt egy demográfiai csoport előnyben részesítésére késztetheti egy másikkal szemben.
-- **Jellemzők fontossága**: értsd meg, mely jellemzők befolyásolják a modell előrejelzéseit globális vagy lokális szinten.
+- **Hibaanalízis**: azonosítani, hogy az adateloszlás mely részein magas a modell hibaaránya.
+- **Modelláttekintés**: összehasonlító elemzés végzése különböző adatkohorszok között, hogy felfedezhessük a teljesítménymutatók eltéréseit.
+- **Adat elemzés**: vizsgálni, hol lehet túl- vagy alulreprezentált az adat, ami a modell torzulásához vezethet egyes demográfiai csoportok javára vagy hátrányára.
+- **Jellemző fontosság**: megérteni, hogy mely jellemzők befolyásolják globális vagy lokális szinten a modell előrejelzéseit.
## Előfeltétel
-Előfeltételként kérjük, tekintsd át a [Felelősségteljes AI eszközök fejlesztőknek](https://www.microsoft.com/ai/ai-lab-responsible-ai-dashboard) című anyagot.
+Előfeltételként kérjük, tekintsd át a [Fejlődőknek szánt felelős MI eszközök](https://www.microsoft.com/ai/ai-lab-responsible-ai-dashboard) anyagot
-> 
+> 
-## Hibaelemzés
+## Hibaanalízis
-A hagyományos modellteljesítmény-mutatók, amelyeket a pontosság mérésére használnak, többnyire helyes és helytelen előrejelzések alapján végzett számítások. Például egy modell, amely 89%-ban pontos, és 0,001 hibaveszteséggel rendelkezik, jó teljesítményűnek tekinthető. Azonban a hibák gyakran nem oszlanak el egyenletesen az alapul szolgáló adathalmazban. Lehet, hogy 89%-os pontossági eredményt kapsz, de felfedezed, hogy az adatok bizonyos régióiban a modell 42%-ban hibázik. Az ilyen hibaminták következményei bizonyos adatcsoportokkal igazságossági vagy megbízhatósági problémákhoz vezethetnek. Fontos megérteni, hogy a modell hol teljesít jól vagy rosszul. Azok az adatrégiók, ahol a modell pontatlanságai magasak, fontos demográfiai csoportok lehetnek.
+A hagyományos modell teljesítménymutatók, amelyek pontosságot mérnek, általában arra alapoznak, hogy az előrejelzés helyes vagy helytelen volt-e. Például egy modellről megállapítani, hogy 89%-ban pontos, 0,001 hibaveszteség mellett, jó teljesítménynek számíthat. A hibák sokszor nem egyenletesen oszlanak el az alapadat-készletben. Lehet, hogy egy 89%-os pontosságot mérsz, de észreveszed, hogy az adataid különböző régióiban a modell 42%-ban hibázik. Ezek a hibamintázatok bizonyos csoportoknál igazságossági vagy megbízhatósági problémákhoz vezethetnek. Lényeges megérteni, mely területeken teljesít jól vagy rosszul a modell. Az adatterületek, ahol sok pontatlanság jelenik meg, fontos demográfiai csoportot jelenthetnek.
-
+
-A RAI dashboard Hibaelemzés komponense megmutatja, hogyan oszlanak el a modellhibák különböző csoportok között egy fa vizualizáció segítségével. Ez hasznos annak azonosításában, hogy mely jellemzők vagy területek okoznak magas hibaarányt az adathalmazban. Azáltal, hogy látod, honnan származnak a modell pontatlanságai, elkezdheted vizsgálni a gyökérokokat. Adatcsoportokat is létrehozhatsz az elemzéshez. Ezek az adatcsoportok segítenek a hibakeresési folyamatban annak meghatározásában, hogy miért teljesít jól a modell az egyik csoportban, de hibázik a másikban.
+A Hibaanalízis komponens az RAI irányítópulton azt mutatja meg, hogyan oszlik el a modell hibája különböző kohorszok között egy fa vizualizáción keresztül. Ez segít azonosítani azokat a jellemzőket vagy területeket, ahol magas hibaarány van az adatbázisban. Ha látod, honnan származik a legtöbb pontatlanság, elkezdheted vizsgálni a gyökérokot. Létrehozhatsz adatkohorszokat is elemzés céljából. Ezek a kohorszok segítik a hibakeresést, hogy megértsd, miért teljesít jól egy kohorszban a modell, de hibázik egy másikban.
-
+
-A fa térkép vizuális jelzői segítenek gyorsabban megtalálni a problémás területeket. Például minél sötétebb piros színű egy fa csomópont, annál magasabb a hibaarány.
+A fa diagram vizuális jelzései gyorsabban segítenek megtalálni a problémás területeket. Például minél sötétebb piros színű egy fa csomópont, annál magasabb a hibaarány.
-A hőtérkép egy másik vizualizációs funkció, amelyet a felhasználók használhatnak a hibaarány vizsgálatára egy vagy két jellemző alapján, hogy megtalálják a modellhibák hozzájáruló tényezőit az egész adathalmazban vagy csoportokban.
+A hőtérképes megjelenítés egy másik vizualizációs funkció, amellyel egy vagy két jellemző alapján vizsgálhatók a hibaarányok, és az adatkészlet vagy kohorszok mentén is kereshetők a hiba hozzájárulói.
-
+
-Használj hibaelemzést, ha:
+Használd a hibaanalízist, amikor szükséged van:
-* Mélyebb megértést szeretnél szerezni arról, hogyan oszlanak el a modellhibák az adathalmazon és több bemeneti és jellemző dimenzión keresztül.
-* Fel szeretnéd bontani az összesített teljesítménymutatókat, hogy automatikusan felfedezd a hibás csoportokat, és célzott enyhítési lépéseket tegyél.
+* Mélyreható megértésre arról, hogyan oszlanak meg a modellhibák az adatokon és jellemző dimenziókon keresztül.
+* Az összesített teljesítménymutatók lebontására, hogy automatikusan felfedezd a hibás kohorszokat, és ennek alapján célzott javítási lépéseket tegyél.
## Modelláttekintés
-Egy gépi tanulási modell teljesítményének értékelése átfogó megértést igényel a viselkedéséről. Ez több mutató, például hibaarány, pontosság, visszahívás, precizitás vagy MAE (átlagos abszolút hiba) áttekintésével érhető el, hogy feltárjuk a teljesítménymutatók közötti eltéréseket. Egy mutató lehet, hogy kiválóan néz ki, de egy másik mutatóban pontatlanságok derülhetnek ki. Ezenkívül a mutatók összehasonlítása az egész adathalmazon vagy csoportokon belül segít rávilágítani arra, hogy a modell hol teljesít jól vagy rosszul. Ez különösen fontos annak megértésében, hogy a modell hogyan teljesít érzékeny és nem érzékeny jellemzők között (pl. beteg faja, neme vagy életkora), hogy feltárjuk a modell esetleges igazságtalanságait. Például, ha felfedezzük, hogy a modell hibásabb egy érzékeny jellemzőket tartalmazó csoportban, az igazságtalanságot jelezhet.
+Egy gépi tanulási modell értékeléséhez átfogó megértést kell szereznünk a viselkedéséről. Ezt különböző mutatók, például hibaarány, pontosság, visszahívás, precizitás vagy MAE (átlagos abszolút hiba) összevetésével lehet elérni, hogy eltéréseket fedezzünk fel a teljesítményben. Egy mutató kiemelkedő lehet, de más mutatóban pontatlanságok jelennek meg. Továbbá az egész adatkészleten vagy kohorszokon végzett összehasonlítás fényt derít arra, hol teljesít jól vagy nem a modell. Ez különösen fontos érzékeny és nem érzékeny jellemzők (például beteg bőrszíne, neme vagy kora) között, hogy felfedjük az esetleges igazságtalanságokat, amelyek a modellben lehetnek. Például ha egy érzékeny jellemzőkkel rendelkező kohorszban magasabb a hibaarány, az potenciális igazságtalanságot jelezhet.
-A RAI dashboard Modelláttekintés komponense nemcsak az adatreprezentáció teljesítménymutatóinak elemzésében segít egy csoportban, hanem lehetőséget ad a modell viselkedésének összehasonlítására különböző csoportok között.
+Az RAI irányítópult Modelláttekintő komponense nemcsak az adott kohorsz adatainak teljesítménymutatóit elemzi, hanem lehetőséget ad a modell viselkedésének összehasonlítására különböző kohorszok között.
-
+
-A komponens jellemző-alapú elemzési funkciója lehetővé teszi a felhasználók számára, hogy szűkítsék az adatcsoportokat egy adott jellemzőn belül, hogy anomáliákat azonosítsanak részletes szinten. Például a dashboard beépített intelligenciával automatikusan generál csoportokat egy felhasználó által kiválasztott jellemző alapján (pl. *"time_in_hospital < 3"* vagy *"time_in_hospital >= 7"*). Ez lehetővé teszi a felhasználó számára, hogy egy adott jellemzőt elkülönítsen egy nagyobb adatcsoportból, hogy lássa, ez-e a kulcsfontosságú tényező a modell hibás eredményeiben.
+A komponens jellemző-alapú elemző funkciója lehetővé teszi a felhasználók számára, hogy egy adott jellemzőn belül adat-alcsoportokra szűkítsenek, hogy finom szinten azonosítsák az anomáliákat. Például az irányítópult intelligenciája automatikusan létrehozza a kohorszokat a felhasználó által kiválasztott jellemző alapján (pl. *"time_in_hospital < 3"* vagy *"time_in_hospital >= 7"*). Ez lehetővé teszi az egyes jellemzők elkülönítését egy nagyobb adatcsoportból annak megállapítására, hogy kulcsfontosságú tényező-e a modell hibás eredményeiben.
-
+
-A Modelláttekintés komponens két osztályú eltérési mutatót támogat:
+A Modelláttekintés komponens két típusú különbségmérőt támogat:
-**Eltérés a modell teljesítményében**: Ezek a mutatók kiszámítják az eltérést (különbséget) a kiválasztott teljesítménymutató értékei között az adatcsoportokban. Néhány példa:
+**Teljesítménybeli különbség**: Ezek a mutatók a kiválasztott teljesítménymutató értékének különbségét számolják ki az adat alkohorszai között. Néhány példa:
-* Pontossági arány eltérése
-* Hibaarány eltérése
-* Precizitás eltérése
-* Visszahívás eltérése
-* Átlagos abszolút hiba (MAE) eltérése
+* Pontosságbeli különbség
+* Hibaaránybeli különbség
+* Precizitásbeli különbség
+* Visszahívásbeli különbség
+* Átlagos abszolút hiba (MAE) különbség
-**Eltérés a kiválasztási arányban**: Ez a mutató tartalmazza a kiválasztási arány (kedvező előrejelzés) különbségét az adatcsoportok között. Példa erre a hiteljóváhagyási arány eltérése. A kiválasztási arány azt jelenti, hogy az egyes osztályok adatpontjainak hány százalékát osztályozzák 1-nek (bináris osztályozásban) vagy az előrejelzési értékek eloszlását (regresszióban).
+**Kiválasztási aránybeli különbség**: Ez a mutató a kiválasztási arány (kedvező előrejelzés) különbségét tartalmazza az alkohorszok között. Példa erre a kölcsönjóváhagyási arány különbsége. A kiválasztási arány az egyes kategóriákban 1-nek osztályozott adatpontok aránya (bináris osztályozásban), vagy az előrejelzési értékek eloszlása (regresszióban).
-## Adatelemzés
+## Adat elemzés
-> "Ha elég sokáig kínozod az adatokat, bármit bevallanak" - Ronald Coase
+> „Ha elég sokáig kínozod az adatokat, bármit beismernek.” – Ronald Coase
-Ez az állítás szélsőségesen hangzik, de igaz, hogy az adatok manipulálhatók bármilyen következtetés támogatására. Az ilyen manipuláció néha akaratlanul történik. Emberek vagyunk, és mindannyian rendelkezünk előítéletekkel, amelyeket gyakran nehéz tudatosan felismerni, amikor adatokat torzítunk. Az igazságosság biztosítása az AI-ban és a gépi tanulásban továbbra is összetett kihívás.
+Ez a kijelentés talán túlzónak hangzik, de igaz, hogy az adatokat manipulálni lehet bármilyen következtetés támogatására. Néha ez akaratlan is megtörténhet. Emberként mindannyian hordozunk elfogultságot, és gyakran nehéz tudatosan észrevenni, mikor vezetünk be elfogultságot az adatokba. Az igazságosság garantálása az MI-ben és a gépi tanulásban összetett kihívás.
-Az adatok nagy vakfoltot jelentenek a hagyományos modellteljesítmény-mutatók számára. Lehet, hogy magas pontossági eredményeket kapsz, de ez nem mindig tükrözi az adathalmazban lévő alapvető adatelfogultságot. Például, ha egy vállalat alkalmazottainak adathalmazában az ügyvezető pozíciókban 27% nő és 73% férfi van, egy álláshirdetési AI modell, amelyet ezen adatok alapján képeztek, valószínűleg főként férfi közönséget céloz meg vezetői pozíciókra. Az adatokban lévő egyensúlyhiány a modell előrejelzését egy nem előnyben részesítésére késztette. Ez igazságossági problémát tár fel, ahol nemi elfogultság van az AI modellben.
+Az adat hatalmas vakfolt a hagyományos modell teljesítménymutatókban. Lehet, hogy magas pontosságod van, de ez nem tükrözi mindig az adatokban rejlő torzításokat. Például, ha egy cég alkalmazotti adatállományában 27% női és 73% férfi felsővezető van, akkor az ezen az adaton tanított álláshirdető MI valószínűleg férfi közönséget céloz meg felső szintű pozíciókra. Az adatok aránytalansága torzítja a modell előrejelzését, egy nemi előítéletet hoz létre az MI-ben.
-A RAI dashboard Adatelemzés komponense segít azonosítani azokat a területeket, ahol túl- vagy alulképviselet van az adathalmazban. Segít a felhasználóknak diagnosztizálni azokat a hibák és igazságossági problémák gyökérokait, amelyeket az adatok egyensúlyhiánya vagy egy adott adatcsoport hiánya okoz. Ez lehetőséget ad a felhasználóknak arra, hogy vizualizálják az adathalmazokat előrejelzett és valós eredmények, hibacsoportok és konkrét jellemzők alapján. Néha egy alulképviselt adatcsoport felfedezése azt is feltárhatja, hogy a modell nem tanul jól, ezért magas a pontatlanság. Egy adatelfogultsággal rendelkező modell nemcsak igazságossági problémát jelent, hanem azt is mutatja, hogy a modell nem befogadó vagy megbízható.
+Az Adat elemzés komponens az RAI irányítópulton segít azonosítani a túl- vagy alulreprezentált területeket az adattömegben. Segít feltárni a hibák és igazságossági problémák gyökerező okát, amelyeket az adatok kiegyensúlyozatlansága vagy egy adott csoport hiánya okoz. A felhasználók vizualizálhatják az adatokat valódi és előrejelzett eredmények, hibacsoportok és jellemzők szerint. Néha egy alulreprezentált csoport felfedezése kiderítheti, hogy a modell nem tanul jól, ezért magas az pontatlanság. Az adatokban meglévő torzítás nem csak igazságossági probléma, hanem azt is jelzi, hogy a modell nem befogadó vagy megbízható.
-
+
-Használj adatelemzést, ha:
-* Felfedezni szeretnéd az adathalmaz statisztikáit különböző szűrők kiválasztásával, hogy az adatokat különböző dimenziókra (más néven csoportokra) bontsd.
-* Megérteni szeretnéd az adathalmaz eloszlását különböző csoportok és jellemzőcsoportok között.
-* Meghatározni szeretnéd, hogy az igazságossággal, hibaelemzéssel és ok-okozati összefüggésekkel kapcsolatos megállapításaid (amelyeket más dashboard komponensekből származtattál) az adathalmaz eloszlásának eredményei-e.
-* Eldönteni, hogy mely területeken gyűjts több adatot, hogy enyhítsd azokat a hibákat, amelyek reprezentációs problémákból, címkezajból, jellemzőzajból, címkeelfogultságból és hasonló tényezőkből származnak.
+Használd az adat elemzést, amikor szükséged van:
-## Modellérthetőség
+* Az adatkészlet statisztikáinak felfedezésére különböző szűrők segítségével, hogy az adatokat különböző dimenziókra (kohorszokra) bontsd.
+* Megérteni az adatkészlet eloszlását különböző kohorszok és jellemzőcsoportok között.
+* Megállapítani, hogy az igazságossággal, hibaanalízissel és okozatisággal kapcsolatos megállapításaid (amelyek más irányítópult komponensekből származnak) az adateloszlás következményei-e.
+* Eldönteni, mely területeken kell több adatot gyűjteni a reprezentációs problémákból, osztálycímke zajból, jellemző zajból, címke torzításból és hasonló tényezőkből eredő hibák enyhítésére.
-A gépi tanulási modellek gyakran "fekete dobozként" működnek. Nehéz megérteni, hogy mely kulcsfontosságú adatjellemzők vezérlik a modell előrejelzéseit. Fontos, hogy átláthatóságot biztosítsunk arra vonatkozóan, hogy miért hoz egy modell bizonyos előrejelzést. Például, ha egy AI rendszer azt jósolja, hogy egy cukorbeteg páciensnél fennáll a kockázata annak, hogy 30 napon belül visszakerül a kórházba, akkor képesnek kell lennie arra, hogy támogató adatokat nyújtson, amelyek az előrejelzéséhez vezettek. A támogató adatjelzők átláthatóságot biztosítanak, hogy segítsenek az orvosoknak vagy kórházaknak jól informált döntéseket hozni. Ezenkívül az, hogy megmagyarázható, miért hozott egy modell előrejelzést egy adott páciens esetében, lehetővé teszi az egészségügyi szabályozásokkal való megfelelést. Amikor gépi tanulási modelleket használsz olyan módon, amely hatással van az emberek életére, elengedhetetlen megérteni és megmagyarázni, mi befolyásolja a modell viselkedését. A modell magyarázhatósága és érthetősége segít választ adni az alábbi helyzetekben:
+## Modell értelmezhetőség
-* Modellhibakeresés: Miért követte el a modell ezt a hibát? Hogyan javíthatom a modellemet?
-* Ember-AI együttműködés: Hogyan érthetem meg és bízhatok a modell döntéseiben?
-* Szabályozási megfelelés: Megfelel-e a modellem a jogi követelményeknek?
+A gépi tanulási modellek általában fekete dobozok. Nehéz megérteni, hogy mely kulcsfontosságú adatjellemzők befolyásolják egy modell előrejelzését. Fontos átláthatóságot biztosítani arról, miért adja a modell az adott előrejelzést. Például, ha egy MI-rendszer előrejelzi, hogy egy cukorbeteg beteg 30 napon belül kórházba kerül újra, akkor támogatást adó adatokat is kell szolgáltatnia, amelyek az előrejelzést vezérelték. A támogató adatindikátorok átláthatóságot hoznak, hogy az orvosok vagy kórházak megalapozott döntéseket hozhassanak. Emellett a modell előrejelzésének magyarázata az egyéni beteg esetében elszámoltathatóságot és egészségügyi szabályozási megfelelést tesz lehetővé. Amikor gépi tanulási modelleket használsz emberek életére kiható módon, alapvető, hogy megértsd és megmagyarázd, mi befolyásolja a modell viselkedését. A modellmagyarázhatóság és értelmezhetőség olyan kérdésekre ad választ, mint:
-A RAI dashboard Jellemzők fontossága komponense segít hibakeresésben és átfogó megértést nyújt arról, hogyan hoz egy modell előrejelzéseket. Ez egy hasznos eszköz gépi tanulási szakemberek és döntéshozók számára, hogy megmagyarázzák és bizonyítékot mutassanak arra, hogy mely jellemzők befolyásolják a modell viselkedését a szabályozási megfelelés érdekében. A felhasználók globális és lokális magyarázatokat is felfedezhetnek, hogy érvényesítsék, mely jellemzők vezérlik a modell előrejelzéseit. A globális magyarázatok felsorolják azokat a legfontosabb j
-- **Túl- vagy alulreprezentáció**. Az elképzelés az, hogy egy bizonyos csoport nem jelenik meg egy adott szakmában, és bármely szolgáltatás vagy funkció, amely ezt tovább erősíti, káros hatást gyakorol.
+* Modellhibakeresés: Miért hibázott a modellem? Hogyan javíthatom a modellem?
+* Ember-MI együttműködés: Hogyan érthetem meg, és bízhatok a modell döntéseiben?
+* Szabályozói megfelelés: Megfelel a modellem a jogi követelményeknek?
-### Azure RAI dashboard
+Az RAI irányítópult Jellemző fontosság komponense segít a modell hibakeresésében és átfogó megértésében, hogy miként készít előrejelzéseket. Ez egy hasznos eszköz a gépi tanulási szakemberek és döntéshozók számára is, hogy bizonyítékokat mutassanak be arra vonatkozóan, mely jellemzők befolyásolják a modell viselkedését a szabályozói megfelelés érdekében. A felhasználók felfedezhetik a globális és lokális magyarázatokat, amelyek megerősítik, hogy mely jellemzők befolyásolják egy modell előrejelzését. A globális magyarázatok a modell egész előrejelzésére ható legfontosabb jellemzőket sorolják fel. A helyi magyarázatok megmutatják, hogy egy konkrét esetben mely jellemzők vezettek az előrejelzéshez. A helyi magyarázatok értékelése segíthet egy adott eset hibakeresésében vagy auditálásában, hogy jobban megértsük, miért volt a modell előrejelzése helyes vagy helytelen.
-Az [Azure RAI dashboard](https://learn.microsoft.com/en-us/azure/machine-learning/concept-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) nyílt forráskódú eszközökre épül, amelyeket vezető akadémiai intézmények és szervezetek, köztük a Microsoft fejlesztettek ki. Ezek az eszközök segítik az adatkutatókat és AI fejlesztőket abban, hogy jobban megértsék a modellek viselkedését, és hogy felfedezzék és enyhítsék az AI modellek nem kívánt problémáit.
+
-- Ismerd meg, hogyan használhatod a különböző komponenseket az RAI dashboard [dokumentációjának](https://learn.microsoft.com/en-us/azure/machine-learning/how-to-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) átnézésével.
+* Globális magyarázatok: például mely jellemzők befolyásolják egy cukorbetegség újra-kórházi felvétel modell egész viselkedését?
+* Lokális magyarázatok: például miért jósolta a modell, hogy egy 60 évnél idősebb, korábbi kórházi felvételekkel rendelkező cukorbeteg beteg újrafelvételre kerül vagy nem kerül 30 napon belül?
-- Nézd meg néhány RAI dashboard [példa notebookot](https://github.com/Azure/RAI-vNext-Preview/tree/main/examples/notebooks), amelyek segítenek felelősségteljesebb AI forgatókönyvek hibakeresésében az Azure Machine Learning-ben.
+A modell teljesítményének vizsgálata során különböző kohorszokban a Jellemző fontosság megmutatja, hogy egy jellemző milyen hatással van az egyes kohorszokra. Segít felfedni anomáliákat, amikor egy jellemző befolyásának szintjét hasonlítjuk össze az egyes kohorszokon belül a modell hibás előrejelzéseiben. A komponens megmutatja, hogy egy jellemző mely értékei befolyásolták pozitívan vagy negatívan a modell eredményét. Például, ha a modell téves előrejelzést adott, a komponens segítségével mélyebben megnézheted, hogy mely jellemzők vagy jellemző értékek vezettek ehhez az előrejelzéshez. Ez a részletezettség nemcsak a hibakeresést segíti, hanem átláthatóságot és elszámoltathatóságot is biztosít auditálási helyzetekben. Végül a komponens segíthet az igazságossági problémák azonosításában is. Ha például egy érzékeny jellemző, mint az etnikum vagy a nem jelentős befolyással bír a modell előrejelzésére, az a modell rassz vagy nemi torzítását jelezheti.
----
+
-## 🚀 Kihívás
+Használd az értelmezhetőséget, amikor szükséged van:
-Annak érdekében, hogy statisztikai vagy adatbeli torzítások már eleve ne kerüljenek bevezetésre, a következőket kell tennünk:
+* Megítélni az MI rendszered előrejelzéseinek megbízhatóságát azáltal, hogy megérted, mely jellemzők a legfontosabbak az előrejelzésekhez.
+* Hibakeresési folyamatot megalapozni a modell megértésével, annak megállapítására, hogy egészséges jellemzők alapján működik-e vagy csak hamis korrelációkat használ.
+* Feltárni a potenciális igazságtalansági forrásokat azáltal, hogy megvizsgálod, vannak-e érzékeny jellemzők vagy azokkal erősen korreláló jellemzők az előrejelzés alapjaként.
+* Felhasználói bizalom építése a modell döntéseibe helyi magyarázatok generálásával a döntések bemutatásához.
+* Szabályozói audit elvégzése az MI rendszered modelljeinek ellenőrzésére és a hatás figyelésére az emberekre.
-- biztosítsuk, hogy a rendszereken dolgozó emberek különböző háttérrel és nézőpontokkal rendelkezzenek
-- fektessünk be olyan adathalmazokba, amelyek tükrözik társadalmunk sokszínűségét
-- fejlesszünk jobb módszereket a torzítások észlelésére és kijavítására, amikor azok előfordulnak
+## Összefoglalás
-Gondolj valós életbeli helyzetekre, ahol az igazságtalanság nyilvánvaló a modellek építése és használata során. Mit kellene még figyelembe vennünk?
+Az összes RAI irányítópult komponens gyakorlati eszköz a gépi tanulási modellek fejlesztéséhez, amelyek kevésbé károsak és megbízhatóbbak a társadalom számára. Javítja az emberi jogok védelmét, csökkenti a bizonyos csoportok igazságtalan megkülönböztetését vagy életlehetőségektől való kizárását; valamint a fizikai vagy lelki sérülések kockázatát. Segít emellett a modell döntéseibe vetett bizalom építésében helyi magyarázatok generálásával az eredmények szemléltetésére. Néhány potenciális kártípus a következőképpen sorolható be:
-## [Előadás utáni kvíz](https://ff-quizzes.netlify.app/en/ml/)
+- **Elosztás**, ha például egy nem vagy etnikum előnyben részesül a másikkal szemben.
+- **Szolgáltatás minősége**: Ha az adatokat egy adott helyzetre tanítják, de a valóság ennél jóval összetettebb, az gyenge szolgáltatási teljesítményhez vezet.
+- **Stereotipizálás**: Egy adott csoporthoz előre meghatározott tulajdonságok társítása.
-## Áttekintés és önálló tanulás
+- **Lerontás**. Valami vagy valaki igazságtalan bírálata és megbélyegzése.
+- **Túl- vagy alulreprezentáltság**. Az az ötlet, hogy egy bizonyos csoport nem jelenik meg egy adott szakmában, és bármely olyan szolgáltatás vagy funkció, amely ezt tovább erősíti, káros hatású.
-Ebben a leckében megismerkedtél néhány gyakorlati eszközzel, amelyek segítenek a felelősségteljes AI beépítésében a gépi tanulásba.
+### Azure RAI műszerfal
+
+Az [Azure RAI műszerfal](https://learn.microsoft.com/en-us/azure/machine-learning/concept-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) nyílt forráskódú eszközökön alapul, amelyeket vezető akadémiai intézmények és szervezetek, köztük a Microsoft fejlesztettek ki, és amelyek kulcsfontosságúak az adattudósok és az MI fejlesztők számára, hogy jobban megértsék a modell viselkedését, felfedezzék és enyhítsék az MI modellek nemkívánatos problémáit.
-Nézd meg ezt a workshopot, hogy mélyebben elmerülj a témákban:
+- Ismerd meg a különböző összetevők használatát a RAI műszerfal [dokumentációjában.](https://learn.microsoft.com/en-us/azure/machine-learning/how-to-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu)
+
+- Nézd meg néhány RAI műszerfal [mintanaplóját](https://github.com/Azure/RAI-vNext-Preview/tree/main/examples/notebooks) felelősebb MI forgatókönyvek hibakereséséhez az Azure Machine Learning-ben.
+
+---
+## 🚀 Kihívás
+
+Annak érdekében, hogy statisztikai vagy adatbeli elfogultság ne alakuljon ki az elején, a következőket kell tennünk:
+
+- különböző hátterű és nézőpontú emberek dolgozzanak a rendszereken
+- befektetni olyan adatkészletekbe, amelyek társadalmunk sokszínűségét tükrözik
+- jobb módszereket fejleszteni az elfogultság felismerésére és korrekciójára, amikor előfordul
+
+Gondolj olyan valós helyzetekre, ahol a méltánytalanság nyilvánvaló a modellépítés és -használat során. Mit kellene még figyelembe vennünk?
+
+## [Előadás utáni kvíz](https://ff-quizzes.netlify.app/en/ml/)
+## Áttekintés és önálló tanulás
+
+Ebben a leckében megismerted a felelős MI beépítésének néhány gyakorlati eszközét a gépi tanulásban.
-- Responsible AI Dashboard: Egyablakos megoldás a felelősségteljes AI gyakorlati alkalmazásához, előadók: Besmira Nushi és Mehrnoosh Sameki
+Nézd meg ezt a műhelyt, hogy mélyebben belemerülj a témákba:
-[](https://www.youtube.com/watch?v=f1oaDNl3djg "Responsible AI Dashboard: Egyablakos megoldás a felelősségteljes AI gyakorlati alkalmazásához")
+- Responsible AI Dashboard: Egyablakos megoldás a RAI gyakorlati működtetésére Besmira Nushi és Mehrnoosh Sameki előadásában
-> 🎥 Kattints a fenti képre a videóért: Responsible AI Dashboard: Egyablakos megoldás a felelősségteljes AI gyakorlati alkalmazásához, előadók: Besmira Nushi és Mehrnoosh Sameki
+[](https://www.youtube.com/watch?v=f1oaDNl3djg "Responsible AI Dashboard: One-stop shop for operationalizing RAI in practice")
-Használd az alábbi anyagokat, hogy többet megtudj a felelősségteljes AI-ról és arról, hogyan építhetsz megbízhatóbb modelleket:
+> 🎥 Kattints a fenti képre a videó megtekintéséhez: Responsible AI Dashboard: Egyablakos megoldás a RAI gyakorlati működtetésére Besmira Nushi és Mehrnoosh Sameki előadásában
+
+Tekintsd át a következő anyagokat, hogy többet megtudj a felelős MI-ről és hogy hogyan lehet megbízhatóbb modelleket építeni:
-- Microsoft RAI dashboard eszközei ML modellek hibakereséséhez: [Responsible AI tools resources](https://aka.ms/rai-dashboard)
+- A Microsoft RAI műszerfal eszközei az ML modellek hibakereséséhez: [Responsible AI tools resources](https://aka.ms/rai-dashboard)
- Fedezd fel a Responsible AI eszköztárat: [Github](https://github.com/microsoft/responsible-ai-toolbox)
-- Microsoft RAI erőforrásközpontja: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
+- A Microsoft RAI erőforrásközpontja: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
-- Microsoft FATE kutatócsoportja: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
+- A Microsoft FATE kutatócsoportja: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
## Feladat
-[Ismerd meg az RAI dashboardot](assignment.md)
+[Fedezd fel a RAI műszerfalat](assignment.md)
---
-**Felelősség kizárása**:
-Ez a dokumentum az AI fordítási szolgáltatás [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet.
\ No newline at end of file
+
+**Jogi nyilatkozat**:
+Ez a dokumentum az AI fordítási szolgáltatás, a [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével készült. Bár az pontosságra törekszünk, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az anyanyelvén tekintendő hiteles forrásnak. Fontos információk esetén professzionális emberi fordítást javasolunk. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely ebből a fordításból ered.
+
\ No newline at end of file
diff --git a/translations/id/.co-op-translator.json b/translations/id/.co-op-translator.json
index 656534f9f..373257b07 100644
--- a/translations/id/.co-op-translator.json
+++ b/translations/id/.co-op-translator.json
@@ -24,8 +24,8 @@
"language_code": "id"
},
"1-Introduction/3-fairness/README.md": {
- "original_hash": "9a6b702d1437c0467e3c5c28d763dac2",
- "translation_date": "2025-09-05T19:32:45+00:00",
+ "original_hash": "0f00d72169a0d37eecfd16d71e01700a",
+ "translation_date": "2026-07-14T06:38:25+00:00",
"source_file": "1-Introduction/3-fairness/README.md",
"language_code": "id"
},
@@ -54,8 +54,8 @@
"language_code": "id"
},
"2-Regression/1-Tools/README.md": {
- "original_hash": "fa81d226c71d5af7a2cade31c1c92b88",
- "translation_date": "2025-09-05T18:52:06+00:00",
+ "original_hash": "0b8635427b582d03ea4ab7089b93e505",
+ "translation_date": "2026-07-14T06:33:57+00:00",
"source_file": "2-Regression/1-Tools/README.md",
"language_code": "id"
},
@@ -72,8 +72,8 @@
"language_code": "id"
},
"2-Regression/2-Data/README.md": {
- "original_hash": "7c077988328ebfe33b24d07945f16eca",
- "translation_date": "2025-09-05T18:55:51+00:00",
+ "original_hash": "a58b2c4d16c6b122643391745ac15af6",
+ "translation_date": "2026-07-14T06:35:04+00:00",
"source_file": "2-Regression/2-Data/README.md",
"language_code": "id"
},
@@ -89,6 +89,12 @@
"source_file": "2-Regression/2-Data/solution/Julia/README.md",
"language_code": "id"
},
+ "2-Regression/2-Data/solution/notebook.ipynb": {
+ "original_hash": "96b95f8cf473481f2f371de8156f1571",
+ "translation_date": "2026-07-14T06:28:35+00:00",
+ "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
+ "language_code": "id"
+ },
"2-Regression/3-Linear/README.md": {
"original_hash": "8b776e731c35b171d316d01d0e7b1369",
"translation_date": "2026-04-26T19:42:37+00:00",
@@ -457,7 +463,7 @@
},
"8-Reinforcement/1-QLearning/README.md": {
"original_hash": "911efd5e595089000cb3c16fce1beab8",
- "translation_date": "2025-09-05T20:14:51+00:00",
+ "translation_date": "2026-07-14T06:36:15+00:00",
"source_file": "8-Reinforcement/1-QLearning/README.md",
"language_code": "id"
},
@@ -481,7 +487,7 @@
},
"8-Reinforcement/2-Gym/README.md": {
"original_hash": "107d5bb29da8a562e7ae72262d251a75",
- "translation_date": "2025-09-05T20:21:26+00:00",
+ "translation_date": "2026-07-14T06:37:26+00:00",
"source_file": "8-Reinforcement/2-Gym/README.md",
"language_code": "id"
},
@@ -581,6 +587,19 @@
"source_file": "TROUBLESHOOTING.md",
"language_code": "id"
},
+ "__translation_failures__": {
+ "sketchnotes/LICENSE.md": {
+ "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f",
+ "source_file": "sketchnotes/LICENSE.md",
+ "language_code": "id",
+ "failure_date": "2026-07-14T06:33:02+00:00",
+ "status": "failed",
+ "error_type": "TranslationIncompleteError",
+ "error_message": "Markdown translation remained incomplete for chunk 1.1.1 of 'LICENSE.md', and the chunk could not be split further.",
+ "translator_version": "0.20.0",
+ "failure_policy_version": 1
+ }
+ },
"docs/_sidebar.md": {
"original_hash": "68dd06c685f6ce840e0acfa313352e7c",
"translation_date": "2025-09-05T19:20:16+00:00",
diff --git a/translations/id/1-Introduction/3-fairness/README.md b/translations/id/1-Introduction/3-fairness/README.md
index 612225449..694166c71 100644
--- a/translations/id/1-Introduction/3-fairness/README.md
+++ b/translations/id/1-Introduction/3-fairness/README.md
@@ -1,30 +1,30 @@
-# Membangun Solusi Machine Learning dengan AI yang Bertanggung Jawab
-
-
+# Membangun solusi Machine Learning dengan AI yang bertanggung jawab
+
+
> Sketchnote oleh [Tomomi Imura](https://www.twitter.com/girlie_mac)
-## [Kuis Pra-Pelajaran](https://ff-quizzes.netlify.app/en/ml/)
-
+## [Kuis sebelum kuliah](https://ff-quizzes.netlify.app/en/ml/)
+
## Pendahuluan
-Dalam kurikulum ini, Anda akan mulai memahami bagaimana machine learning dapat dan sedang memengaruhi kehidupan kita sehari-hari. Bahkan saat ini, sistem dan model terlibat dalam tugas pengambilan keputusan harian, seperti diagnosis kesehatan, persetujuan pinjaman, atau mendeteksi penipuan. Oleh karena itu, penting bahwa model-model ini bekerja dengan baik untuk memberikan hasil yang dapat dipercaya. Sama seperti aplikasi perangkat lunak lainnya, sistem AI dapat meleset dari ekspektasi atau menghasilkan hasil yang tidak diinginkan. Itulah mengapa penting untuk memahami dan menjelaskan perilaku model AI.
+Dalam kurikulum ini, Anda akan mulai menemukan bagaimana machine learning dapat dan sedang memengaruhi kehidupan sehari-hari kita. Bahkan sekarang, sistem dan model terlibat dalam tugas pengambilan keputusan harian, seperti diagnosis perawatan kesehatan, persetujuan pinjaman, atau mendeteksi penipuan. Jadi, penting bahwa model-model ini bekerja dengan baik untuk memberikan hasil yang dapat dipercaya. Sama seperti aplikasi perangkat lunak lainnya, sistem AI kadang akan tidak memenuhi ekspektasi atau menghasilkan hasil yang tidak diinginkan. Itulah mengapa sangat penting untuk dapat memahami dan menjelaskan perilaku model AI.
-Bayangkan apa yang bisa terjadi ketika data yang Anda gunakan untuk membangun model ini tidak mencakup demografi tertentu, seperti ras, gender, pandangan politik, agama, atau secara tidak proporsional mewakili demografi tersebut. Bagaimana jika output model diinterpretasikan untuk menguntungkan beberapa demografi? Apa konsekuensinya bagi aplikasi tersebut? Selain itu, apa yang terjadi ketika model menghasilkan hasil yang merugikan dan membahayakan orang? Siapa yang bertanggung jawab atas perilaku sistem AI? Ini adalah beberapa pertanyaan yang akan kita eksplorasi dalam kurikulum ini.
+Bayangkan apa yang bisa terjadi ketika data yang Anda gunakan untuk membangun model ini kurang mencakup demografi tertentu, seperti ras, jenis kelamin, pandangan politik, agama, atau secara tidak proporsional mewakili demografi tersebut. Bagaimana jika output model diinterpretasikan untuk memihak demografi tertentu? Apa konsekuensinya bagi aplikasi tersebut? Selain itu, apa yang terjadi jika model menghasilkan hasil yang merugikan dan berbahaya bagi orang-orang? Siapa yang bertanggung jawab atas perilaku sistem AI? Ini adalah beberapa pertanyaan yang akan kita jelajahi dalam kurikulum ini.
Dalam pelajaran ini, Anda akan:
-- Meningkatkan kesadaran tentang pentingnya keadilan dalam machine learning dan dampak terkait keadilan.
-- Mengenal praktik eksplorasi outlier dan skenario tidak biasa untuk memastikan keandalan dan keamanan.
-- Memahami kebutuhan untuk memberdayakan semua orang dengan merancang sistem yang inklusif.
-- Mengeksplorasi betapa pentingnya melindungi privasi dan keamanan data serta individu.
-- Melihat pentingnya pendekatan transparan untuk menjelaskan perilaku model AI.
-- Menyadari bahwa akuntabilitas sangat penting untuk membangun kepercayaan pada sistem AI.
+- Meningkatkan kesadaran Anda tentang pentingnya keadilan dalam machine learning dan bahaya terkait ketidakadilan.
+- Mengenal praktik mengeksplorasi nilai ekstrim dan skenario tidak biasa untuk memastikan keandalan dan keselamatan.
+- Memperoleh pemahaman akan kebutuhan memberdayakan semua orang dengan merancang sistem yang inklusif.
+- Menyelami pentingnya melindungi privasi dan keamanan data serta orang.
+- Melihat pentingnya pendekatan kotak kaca untuk menjelaskan perilaku model AI.
+- Menjadi sadar akan bagaimana akuntabilitas penting untuk membangun kepercayaan dalam sistem AI.
## Prasyarat
-Sebagai prasyarat, silakan ikuti "Responsible AI Principles" Learn Path dan tonton video di bawah ini tentang topik tersebut:
+Sebagai prasyarat, silakan ikuti "Prinsip AI yang Bertanggung Jawab" dalam Jalur Pembelajaran dan tonton video di bawah ini tentang topik tersebut:
-Pelajari lebih lanjut tentang AI yang Bertanggung Jawab dengan mengikuti [Learning Path](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)
+Pelajari lebih lanjut tentang AI yang Bertanggung Jawab dengan mengikuti [Jalur Pembelajaran ini](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)
[](https://youtu.be/dnC8-uUZXSc "Pendekatan Microsoft terhadap AI yang Bertanggung Jawab")
@@ -32,130 +32,136 @@ Pelajari lebih lanjut tentang AI yang Bertanggung Jawab dengan mengikuti [Learni
## Keadilan
-Sistem AI harus memperlakukan semua orang secara adil dan menghindari memengaruhi kelompok orang yang serupa dengan cara yang berbeda. Misalnya, ketika sistem AI memberikan panduan tentang pengobatan medis, aplikasi pinjaman, atau pekerjaan, mereka harus memberikan rekomendasi yang sama kepada semua orang dengan gejala, keadaan finansial, atau kualifikasi profesional yang serupa. Setiap dari kita sebagai manusia membawa bias yang diwarisi yang memengaruhi keputusan dan tindakan kita. Bias ini dapat terlihat dalam data yang kita gunakan untuk melatih sistem AI. Manipulasi semacam itu terkadang terjadi secara tidak sengaja. Sering kali sulit untuk secara sadar mengetahui kapan Anda memperkenalkan bias dalam data.
+Sistem AI harus memperlakukan semua orang secara adil dan menghindari memberikan pengaruh berbeda pada kelompok orang yang serupa. Sebagai contoh, saat sistem AI memberikan panduan dalam perawatan medis, aplikasi pinjaman, atau pekerjaan, mereka harus memberikan rekomendasi yang sama kepada semua orang dengan gejala, kondisi keuangan, atau kualifikasi profesional yang serupa. Setiap dari kita sebagai manusia membawa bias yang diwariskan yang memengaruhi keputusan dan tindakan kita. Bias-bias ini bisa jelas dalam data yang kita gunakan untuk melatih sistem AI. Manipulasi semacam ini kadang terjadi tanpa disengaja. Seringkali sulit untuk sadar ketika Anda memperkenalkan bias dalam data.
-**“Ketidakadilan”** mencakup dampak negatif, atau “kerugian”, bagi sekelompok orang, seperti yang didefinisikan dalam hal ras, gender, usia, atau status disabilitas. Kerugian utama terkait keadilan dapat diklasifikasikan sebagai:
+**"Ketidakadilan"** mencakup dampak negatif, atau "kerugian", bagi kelompok orang tertentu, seperti yang didefinisikan berdasarkan ras, jenis kelamin, usia, atau status disabilitas. Bahaya utama terkait keadilan dapat diklasifikasikan sebagai:
-- **Distribusi**, jika gender atau etnis tertentu, misalnya, lebih diuntungkan dibandingkan yang lain.
-- **Kualitas layanan**. Jika Anda melatih data untuk satu skenario spesifik tetapi kenyataannya jauh lebih kompleks, ini menghasilkan layanan yang berkinerja buruk. Misalnya, dispenser sabun tangan yang tidak dapat mendeteksi orang dengan kulit gelap. [Referensi](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
-- **Pelecehan**. Mengkritik atau melabeli sesuatu atau seseorang secara tidak adil. Misalnya, teknologi pelabelan gambar yang secara keliru melabeli gambar orang berkulit gelap sebagai gorila.
-- **Representasi berlebihan atau kurang**. Ide bahwa kelompok tertentu tidak terlihat dalam profesi tertentu, dan layanan atau fungsi apa pun yang terus mempromosikan hal itu berkontribusi pada kerugian.
-- **Stereotip**. Mengaitkan atribut yang telah ditentukan sebelumnya dengan kelompok tertentu. Misalnya, sistem penerjemahan bahasa antara Inggris dan Turki mungkin memiliki ketidakakuratan karena kata-kata dengan asosiasi stereotip terhadap gender.
+- **Alokasi**, jika misalnya sebuah gender atau etnis lebih diutamakan dibanding yang lain.
+- **Kualitas layanan**. Jika Anda melatih data untuk satu skenario spesifik tapi kenyataannya jauh lebih kompleks, hal itu menghasilkan layanan dengan kinerja buruk. Misalnya, dispenser sabun tangan yang tampaknya tidak dapat mendeteksi orang dengan kulit gelap. [Referensi](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
+- **Penghinaan**. Mengkritik dan memberi label sesuatu atau seseorang secara tidak adil. Contohnya, teknologi pelabelan gambar yang secara terkenal salah memberi label gambar orang dengan kulit gelap sebagai gorila.
+- **Keterwakilan berlebihan atau kekurangan**. Gagasan bahwa kelompok tertentu tidak terlihat di profesi tertentu, dan layanan atau fungsi yang terus mempromosikannya berkontribusi pada kerugian.
+- **Stereotip**. Mengasosiasikan kelompok tertentu dengan atribut yang telah ditetapkan sebelumnya. Misalnya, sebuah sistem terjemahan bahasa antara Inggris dan Turki mungkin memiliki ketidakakuratan karena kata-kata yang terkait secara stereotip dengan gender.
-
-> terjemahan ke Turki
+
+> terjemahan ke bahasa Turki
-
-> terjemahan kembali ke Inggris
+
+> terjemahan kembali ke bahasa Inggris
-Saat merancang dan menguji sistem AI, kita perlu memastikan bahwa AI adil dan tidak diprogram untuk membuat keputusan yang bias atau diskriminatif, yang juga dilarang dilakukan oleh manusia. Menjamin keadilan dalam AI dan machine learning tetap menjadi tantangan sosial-teknis yang kompleks.
+Saat merancang dan menguji sistem AI, kita harus memastikan bahwa AI adil dan tidak diprogram untuk membuat keputusan yang bias atau diskriminatif, yang juga dilarang bagi manusia. Menjamin keadilan dalam AI dan machine learning tetap menjadi tantangan sosioteknis yang kompleks.
-### Keandalan dan keamanan
+### Keandalan dan keselamatan
-Untuk membangun kepercayaan, sistem AI perlu dapat diandalkan, aman, dan konsisten dalam kondisi normal maupun tak terduga. Penting untuk mengetahui bagaimana sistem AI akan berperilaku dalam berbagai situasi, terutama ketika mereka berada di luar batas normal. Saat membangun solusi AI, perlu ada fokus yang substansial pada bagaimana menangani berbagai keadaan yang mungkin dihadapi oleh solusi AI tersebut. Misalnya, mobil tanpa pengemudi harus mengutamakan keselamatan orang. Akibatnya, AI yang menggerakkan mobil harus mempertimbangkan semua kemungkinan skenario yang dapat dihadapi mobil, seperti malam hari, badai petir atau badai salju, anak-anak berlari di jalan, hewan peliharaan, konstruksi jalan, dll. Seberapa baik sistem AI dapat menangani berbagai kondisi secara andal dan aman mencerminkan tingkat antisipasi yang dipertimbangkan oleh ilmuwan data atau pengembang AI selama desain atau pengujian sistem.
+Untuk membangun kepercayaan, sistem AI harus andal, aman, dan konsisten dalam kondisi normal maupun tak terduga. Penting untuk mengetahui bagaimana sistem AI berperilaku dalam berbagai situasi, terutama saat terjadi nilai ekstrim. Saat membangun solusi AI, perlu adanya fokus besar pada cara menangani berbagai keadaan yang mungkin dihadapi solusi AI tersebut. Misalnya, mobil swakemudi harus mengutamakan keselamatan manusia. Oleh karena itu, AI yang menggerakkan mobil harus mempertimbangkan semua skenario yang mungkin dihadapi seperti malam hari, badai petir atau badai salju, anak-anak yang berlari menyeberang jalan, binatang peliharaan, konstruksi jalan, dan sebagainya. Seberapa baik sistem AI dapat menangani berbagai kondisi ekstrem dengan andal dan aman mencerminkan tingkat antisipasi yang dipertimbangkan oleh ilmuwan data atau pengembang AI selama perancangan atau pengujian sistem.
> [🎥 Klik di sini untuk video: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
### Inklusivitas
-Sistem AI harus dirancang untuk melibatkan dan memberdayakan semua orang. Saat merancang dan mengimplementasikan sistem AI, ilmuwan data dan pengembang AI mengidentifikasi dan mengatasi hambatan potensial dalam sistem yang dapat secara tidak sengaja mengecualikan orang. Misalnya, ada 1 miliar orang dengan disabilitas di seluruh dunia. Dengan kemajuan AI, mereka dapat mengakses berbagai informasi dan peluang dengan lebih mudah dalam kehidupan sehari-hari mereka. Dengan mengatasi hambatan tersebut, tercipta peluang untuk berinovasi dan mengembangkan produk AI dengan pengalaman yang lebih baik yang menguntungkan semua orang.
+Sistem AI harus dirancang untuk melibatkan dan memberdayakan semua orang. Saat merancang dan menerapkan sistem AI, ilmuwan data dan pengembang AI mengidentifikasi dan mengatasi potensi penghalang dalam sistem yang mungkin tanpa sengaja mengecualikan orang. Misalnya, ada 1 miliar orang dengan disabilitas di seluruh dunia. Dengan kemajuan AI, mereka dapat mengakses berbagai informasi dan peluang dengan lebih mudah dalam kehidupan sehari-hari mereka. Dengan mengatasi penghalang tersebut, tercipta peluang untuk berinovasi dan mengembangkan produk AI dengan pengalaman yang lebih baik yang menguntungkan semua orang.
> [🎥 Klik di sini untuk video: inklusivitas dalam AI](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
### Keamanan dan privasi
-Sistem AI harus aman dan menghormati privasi orang. Orang memiliki kepercayaan yang lebih rendah pada sistem yang membahayakan privasi, informasi, atau kehidupan mereka. Saat melatih model machine learning, kita mengandalkan data untuk menghasilkan hasil terbaik. Dalam melakukannya, asal dan integritas data harus dipertimbangkan. Misalnya, apakah data dikirimkan oleh pengguna atau tersedia secara publik? Selanjutnya, saat bekerja dengan data, sangat penting untuk mengembangkan sistem AI yang dapat melindungi informasi rahasia dan tahan terhadap serangan. Seiring dengan semakin meluasnya penggunaan AI, melindungi privasi dan mengamankan informasi pribadi serta bisnis yang penting menjadi semakin kritis dan kompleks. Masalah privasi dan keamanan data memerlukan perhatian khusus untuk AI karena akses ke data sangat penting bagi sistem AI untuk membuat prediksi dan keputusan yang akurat dan terinformasi tentang orang.
+Sistem AI harus aman dan menghormati privasi orang. Orang kurang percaya pada sistem yang membahayakan privasi, informasi, atau kehidupan mereka. Saat melatih model machine learning, kita mengandalkan data untuk menghasilkan hasil terbaik. Dalam melakukannya, asal dan integritas data harus dipertimbangkan. Misalnya, apakah data dikirimkan oleh pengguna atau tersedia secara publik? Selanjutnya, saat bekerja dengan data, sangat penting untuk mengembangkan sistem AI yang dapat melindungi informasi rahasia dan tahan terhadap serangan. Seiring AI semakin meluas, melindungi privasi dan mengamankan informasi pribadi serta bisnis menjadi semakin penting dan kompleks. Masalah privasi dan keamanan data memerlukan perhatian khusus untuk AI karena akses ke data sangat penting bagi sistem AI untuk membuat prediksi dan keputusan yang akurat dan tepat terkait orang.
> [🎥 Klik di sini untuk video: keamanan dalam AI](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- Sebagai industri, kita telah membuat kemajuan signifikan dalam privasi & keamanan, yang didorong secara signifikan oleh regulasi seperti GDPR (General Data Protection Regulation).
-- Namun, dengan sistem AI, kita harus mengakui adanya ketegangan antara kebutuhan akan data pribadi yang lebih banyak untuk membuat sistem lebih personal dan efektif – dan privasi.
+- Sebagai industri, kami telah membuat kemajuan signifikan dalam Privasi & keamanan, yang didorong secara signifikan oleh regulasi seperti GDPR (General Data Protection Regulation).
+- Namun dengan sistem AI kita harus mengakui adanya ketegangan antara kebutuhan akan lebih banyak data pribadi agar sistem lebih personal dan efektif – dengan privasi.
- Sama seperti dengan lahirnya komputer yang terhubung dengan internet, kita juga melihat peningkatan besar dalam jumlah masalah keamanan terkait AI.
-- Pada saat yang sama, kita telah melihat AI digunakan untuk meningkatkan keamanan. Sebagai contoh, sebagian besar pemindai antivirus modern didukung oleh heuristik AI saat ini.
-- Kita perlu memastikan bahwa proses Data Science kita berpadu harmonis dengan praktik privasi dan keamanan terbaru.
+- Pada saat yang sama, kita telah melihat AI digunakan untuk meningkatkan keamanan. Sebagai contoh, sebagian besar pemindai anti-virus modern saat ini didorong oleh heuristik AI.
+- Kita perlu memastikan bahwa proses Data Science kita selaras harmonis dengan praktik privasi dan keamanan terbaru.
-### Transparansi
-Sistem AI harus dapat dipahami. Bagian penting dari transparansi adalah menjelaskan perilaku sistem AI dan komponennya. Meningkatkan pemahaman tentang sistem AI membutuhkan para pemangku kepentingan untuk memahami bagaimana dan mengapa mereka berfungsi sehingga mereka dapat mengidentifikasi potensi masalah kinerja, kekhawatiran keamanan dan privasi, bias, praktik eksklusif, atau hasil yang tidak diinginkan. Kami juga percaya bahwa mereka yang menggunakan sistem AI harus jujur dan terbuka tentang kapan, mengapa, dan bagaimana mereka memilih untuk menerapkannya, serta keterbatasan sistem yang mereka gunakan. Misalnya, jika sebuah bank menggunakan sistem AI untuk mendukung keputusan pemberian pinjaman konsumen, penting untuk memeriksa hasilnya dan memahami data mana yang memengaruhi rekomendasi sistem. Pemerintah mulai mengatur AI di berbagai industri, sehingga ilmuwan data dan organisasi harus menjelaskan apakah sistem AI memenuhi persyaratan regulasi, terutama ketika ada hasil yang tidak diinginkan.
+### Transparansi
+Sistem AI harus dapat dipahami. Bagian penting dari transparansi adalah menjelaskan perilaku sistem AI dan komponennya. Meningkatkan pemahaman tentang sistem AI mengharuskan para pemangku kepentingan memahami bagaimana dan mengapa sistem berfungsi sehingga mereka dapat mengidentifikasi potensi masalah kinerja, kekhawatiran keselamatan dan privasi, bias, praktik pengecualian, atau hasil yang tidak diinginkan. Kami juga percaya bahwa mereka yang menggunakan sistem AI harus jujur dan terbuka tentang kapan, mengapa, dan bagaimana mereka memilih untuk menggunakannya. Serta keterbatasan sistem yang mereka gunakan. Misalnya, jika bank menggunakan sistem AI untuk mendukung keputusan pinjaman konsumen, penting untuk memeriksa hasil dan memahami data apa yang memengaruhi rekomendasi sistem. Pemerintah mulai mengatur AI di berbagai industri, sehingga ilmuwan data dan organisasi harus menjelaskan jika sistem AI memenuhi persyaratan regulasi, terutama saat terjadi hasil yang tidak diinginkan.
> [🎥 Klik di sini untuk video: transparansi dalam AI](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- Karena sistem AI sangat kompleks, sulit untuk memahami cara kerjanya dan menafsirkan hasilnya.
+- Karena sistem AI sangat kompleks, sulit untuk memahami cara kerja dan menginterpretasikan hasilnya.
- Kurangnya pemahaman ini memengaruhi cara sistem ini dikelola, dioperasikan, dan didokumentasikan.
-- Lebih penting lagi, kurangnya pemahaman ini memengaruhi keputusan yang dibuat menggunakan hasil yang dihasilkan oleh sistem ini.
+- Kurangnya pemahaman ini terutama memengaruhi keputusan yang dibuat menggunakan hasil yang dihasilkan sistem ini.
### Akuntabilitas
+
+Orang yang merancang dan meluncurkan sistem AI harus bertanggung jawab atas cara sistem mereka beroperasi. Kebutuhan akan akuntabilitas sangat krusial untuk teknologi penggunaan sensitif seperti pengenalan wajah. Baru-baru ini, permintaan terhadap teknologi pengenalan wajah semakin meningkat, terutama dari organisasi penegak hukum yang melihat potensi teknologi ini untuk menemukan anak hilang. Namun, teknologi ini bisa digunakan oleh pemerintah untuk mempertaruhkan kebebasan mendasar warganya dengan, misalnya, memungkinkan pengawasan terus-menerus terhadap individu tertentu. Oleh karena itu, ilmuwan data dan organisasi harus bertanggung jawab atas dampak sistem AI mereka terhadap individu atau masyarakat.
-Orang-orang yang merancang dan menerapkan sistem AI harus bertanggung jawab atas cara sistem mereka beroperasi. Kebutuhan akan akuntabilitas sangat penting dengan teknologi yang sensitif seperti pengenalan wajah. Baru-baru ini, ada permintaan yang meningkat untuk teknologi pengenalan wajah, terutama dari organisasi penegak hukum yang melihat potensi teknologi ini dalam penggunaan seperti menemukan anak-anak yang hilang. Namun, teknologi ini berpotensi digunakan oleh pemerintah untuk membahayakan kebebasan fundamental warganya, misalnya, dengan memungkinkan pengawasan terus-menerus terhadap individu tertentu. Oleh karena itu, ilmuwan data dan organisasi perlu bertanggung jawab atas bagaimana sistem AI mereka memengaruhi individu atau masyarakat.
+[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Pendekatan Microsoft terhadap AI yang Bertanggung Jawab")
-[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Pendekatan Microsoft terhadap AI yang Bertanggung Jawab")
+> 🎥 Klik gambar di atas untuk video: Peringatan tentang Pengawasan Massal melalui Pengenalan Wajah
-> 🎥 Klik gambar di atas untuk video: Peringatan Pengawasan Massal Melalui Pengenalan Wajah
-
-Pada akhirnya, salah satu pertanyaan terbesar untuk generasi kita, sebagai generasi pertama yang membawa AI ke masyarakat, adalah bagaimana memastikan bahwa komputer tetap bertanggung jawab kepada manusia dan bagaimana memastikan bahwa orang-orang yang merancang komputer tetap bertanggung jawab kepada semua orang.
+Pada akhirnya salah satu pertanyaan terbesar bagi generasi kita, sebagai generasi pertama yang membawa AI ke masyarakat, adalah bagaimana memastikan komputer tetap bertanggung jawab kepada manusia dan bagaimana memastikan orang yang merancang komputer tetap bertanggung jawab kepada semua orang.
## Penilaian Dampak
-Sebelum melatih model machine learning, penting untuk melakukan penilaian dampak untuk memahami tujuan sistem AI; apa penggunaan yang dimaksudkan; di mana sistem akan diterapkan; dan siapa yang akan berinteraksi dengan sistem tersebut. Hal ini membantu peninjau atau penguji mengevaluasi sistem untuk mengetahui faktor-faktor yang perlu dipertimbangkan saat mengidentifikasi risiko potensial dan konsekuensi yang diharapkan.
+Sebelum melatih model machine learning, penting untuk melakukan penilaian dampak untuk memahami tujuan sistem AI; apa penggunaan yang dimaksudkan; di mana sistem akan disebarkan; dan siapa yang akan berinteraksi dengan sistem. Ini berguna bagi peninjau atau penguji yang mengevaluasi sistem agar tahu faktor apa yang harus dipertimbangkan ketika mengidentifikasi potensi risiko dan konsekuensi yang diharapkan.
Berikut adalah area fokus saat melakukan penilaian dampak:
-* **Dampak buruk pada individu**. Menyadari adanya pembatasan atau persyaratan, penggunaan yang tidak didukung, atau keterbatasan yang diketahui yang menghambat kinerja sistem sangat penting untuk memastikan bahwa sistem tidak digunakan dengan cara yang dapat merugikan individu.
-* **Persyaratan data**. Memahami bagaimana dan di mana sistem akan menggunakan data memungkinkan peninjau untuk mengeksplorasi persyaratan data apa yang perlu diperhatikan (misalnya, regulasi data GDPR atau HIPPA). Selain itu, periksa apakah sumber atau jumlah data cukup untuk pelatihan.
-* **Ringkasan dampak**. Kumpulkan daftar potensi kerugian yang dapat timbul dari penggunaan sistem. Sepanjang siklus hidup ML, tinjau apakah masalah yang diidentifikasi telah diatasi atau diminimalkan.
-* **Tujuan yang berlaku** untuk masing-masing dari enam prinsip inti. Tinjau apakah tujuan dari setiap prinsip telah terpenuhi dan apakah ada celah.
+* **Dampak merugikan pada individu**. Menyadari adanya pembatasan atau persyaratan, penggunaan yang tidak didukung atau keterbatasan yang diketahui yang menghambat kinerja sistem sangat penting untuk memastikan sistem tidak digunakan dengan cara yang dapat membahayakan individu.
+* **Persyaratan data**. Memahami bagaimana dan di mana sistem akan menggunakan data memungkinkan peninjau mengeksplorasi persyaratan data yang harus diperhatikan (misal, regulasi data GDPR atau HIPAA). Selain itu, periksa apakah sumber atau jumlah data cukup untuk pelatihan.
+* **Ringkasan dampak**. Kumpulkan daftar potensi bahaya yang bisa muncul dari penggunaan sistem. Sepanjang siklus hidup ML, tinjau apakah masalah yang diidentifikasi telah dikurangi atau ditangani.
+* **Tujuan yang berlaku** untuk setiap dari enam prinsip inti. Nilai apakah tujuan dari masing-masing prinsip terpenuhi dan apakah ada celah.
-## Debugging dengan AI yang Bertanggung Jawab
-Seperti debugging aplikasi perangkat lunak, debugging sistem AI adalah proses yang diperlukan untuk mengidentifikasi dan menyelesaikan masalah dalam sistem. Ada banyak faktor yang dapat memengaruhi model tidak berkinerja seperti yang diharapkan atau secara bertanggung jawab. Sebagian besar metrik kinerja model tradisional adalah agregat kuantitatif dari kinerja model, yang tidak cukup untuk menganalisis bagaimana model melanggar prinsip AI yang bertanggung jawab. Selain itu, model machine learning adalah kotak hitam yang membuatnya sulit untuk memahami apa yang mendorong hasilnya atau memberikan penjelasan ketika terjadi kesalahan. Nanti dalam kursus ini, kita akan belajar bagaimana menggunakan dashboard AI yang Bertanggung Jawab untuk membantu debugging sistem AI. Dashboard ini menyediakan alat holistik bagi ilmuwan data dan pengembang AI untuk melakukan:
+## Debugging dengan AI yang bertanggung jawab
-* **Analisis kesalahan**. Untuk mengidentifikasi distribusi kesalahan model yang dapat memengaruhi keadilan atau keandalan sistem.
-* **Ikhtisar model**. Untuk menemukan di mana terdapat disparitas dalam kinerja model di berbagai kelompok data.
-* **Analisis data**. Untuk memahami distribusi data dan mengidentifikasi potensi bias dalam data yang dapat menyebabkan masalah keadilan, inklusivitas, dan keandalan.
-* **Interpretabilitas model**. Untuk memahami apa yang memengaruhi atau memengaruhi prediksi model. Ini membantu menjelaskan perilaku model, yang penting untuk transparansi dan akuntabilitas.
+Mirip dengan debugging aplikasi perangkat lunak, debugging sistem AI adalah proses yang diperlukan untuk mengidentifikasi dan menyelesaikan masalah dalam sistem. Ada banyak faktor yang dapat memengaruhi model tidak berperforma sesuai harapan atau dengan cara yang bertanggung jawab. Sebagian besar metrik kinerja model tradisional adalah agregat kuantitatif dari kinerja model, yang tidak cukup untuk menganalisa bagaimana model melanggar prinsip AI yang bertanggung jawab. Selain itu, model machine learning adalah kotak hitam yang menyulitkan untuk memahami apa yang menggerakkan hasilnya atau memberikan penjelasan saat membuat kesalahan. Nanti dalam kursus ini, kita akan belajar cara menggunakan dashboard Responsible AI untuk membantu debugging sistem AI. Dashboard ini menyediakan alat holistik bagi ilmuwan data dan pengembang AI untuk melakukan:
-## 🚀 Tantangan
+* **Analisis kesalahan**. Untuk mengidentifikasi distribusi kesalahan model yang dapat memengaruhi keadilan atau keandalannya.
+* **Ikhtisar model**. Untuk menemukan di mana ada kesenjangan dalam kinerja model di berbagai kohort data.
+* **Analisis data**. Untuk memahami distribusi data dan mengidentifikasi bias potensial dalam data yang dapat menyebabkan masalah keadilan, inklusivitas, dan keandalan.
+* **Interpretabilitas model**. Untuk memahami apa yang memengaruhi atau mempengaruhi prediksi model. Ini membantu menjelaskan perilaku model, yang penting untuk transparansi dan akuntabilitas.
-Untuk mencegah kerugian diperkenalkan sejak awal, kita harus:
+
+## 🚀 Tantangan
+
+Untuk mencegah bahaya diperkenalkan sejak awal, kita harus:
- memiliki keragaman latar belakang dan perspektif di antara orang-orang yang bekerja pada sistem
- berinvestasi dalam dataset yang mencerminkan keragaman masyarakat kita
-- mengembangkan metode yang lebih baik di seluruh siklus hidup machine learning untuk mendeteksi dan memperbaiki AI yang bertanggung jawab saat terjadi
+- mengembangkan metode yang lebih baik sepanjang siklus hidup machine learning untuk mendeteksi dan mengoreksi AI yang bertanggung jawab saat itu terjadi
-Pikirkan skenario kehidupan nyata di mana ketidakpercayaan model terlihat dalam pembangunan dan penggunaan model. Apa lagi yang harus kita pertimbangkan?
+Pikirkan tentang skenario kehidupan nyata di mana ketidakpercayaan model tampak jelas dalam pembangunan dan penggunaan model. Apa lagi yang harus kita pertimbangkan?
-## [Kuis Pasca-Pelajaran](https://ff-quizzes.netlify.app/en/ml/)
+## [Kuis setelah kuliah](https://ff-quizzes.netlify.app/en/ml/)
-## Tinjauan & Studi Mandiri
+## Ulasan & Studi Mandiri
+
-Dalam pelajaran ini, Anda telah mempelajari beberapa dasar konsep keadilan dan ketidakadilan dalam machine learning.
-Tonton lokakarya ini untuk mendalami topik berikut:
+Dalam pelajaran ini, Anda telah mempelajari beberapa dasar konsep keadilan dan ketidakadilan dalam pembelajaran mesin.
+
+Tonton lokakarya ini untuk menyelami lebih dalam topik-topik tersebut:
-- Mengejar AI yang bertanggung jawab: Menerapkan prinsip ke dalam praktik oleh Besmira Nushi, Mehrnoosh Sameki, dan Amit Sharma
+- Dalam upaya AI yang bertanggung jawab: Menerapkan prinsip ke praktik oleh Besmira Nushi, Mehrnoosh Sameki dan Amit Sharma
-[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: Kerangka kerja open-source untuk membangun AI yang bertanggung jawab")
+[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI")
-> 🎥 Klik gambar di atas untuk menonton video: RAI Toolbox: Kerangka kerja open-source untuk membangun AI yang bertanggung jawab oleh Besmira Nushi, Mehrnoosh Sameki, dan Amit Sharma
+> 🎥 Klik gambar di atas untuk video: RAI Toolbox: Kerangka kerja sumber terbuka untuk membangun AI yang bertanggung jawab oleh Besmira Nushi, Mehrnoosh Sameki, dan Amit Sharma
-Selain itu, baca:
+Juga, baca:
-- Pusat sumber daya RAI Microsoft: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
+- Pusat sumber daya RAI Microsoft: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
-- Kelompok penelitian FATE Microsoft: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
+- Kelompok riset FATE Microsoft: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
-RAI Toolbox:
+RAI Toolbox:
- [Repositori GitHub Responsible AI Toolbox](https://github.com/microsoft/responsible-ai-toolbox)
Baca tentang alat Azure Machine Learning untuk memastikan keadilan:
-- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
+- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
## Tugas
-[Eksplorasi RAI Toolbox](assignment.md)
+[Jelajahi RAI Toolbox](assignment.md)
---
-**Penafian**:
-Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berusaha untuk memberikan hasil yang akurat, harap diperhatikan bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang otoritatif. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini.
\ No newline at end of file
+
+**Penafian**:
+Dokumen ini telah diterjemahkan menggunakan layanan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk mencapai akurasi, harap diketahui bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang sah. Untuk informasi penting, disarankan menggunakan terjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini.
+
\ No newline at end of file
diff --git a/translations/id/2-Regression/1-Tools/README.md b/translations/id/2-Regression/1-Tools/README.md
index d34db8f5d..6146fa235 100644
--- a/translations/id/2-Regression/1-Tools/README.md
+++ b/translations/id/2-Regression/1-Tools/README.md
@@ -1,120 +1,121 @@
# Memulai dengan Python dan Scikit-learn untuk model regresi
-
+
> Sketchnote oleh [Tomomi Imura](https://www.twitter.com/girlie_mac)
-## [Kuis sebelum pelajaran](https://ff-quizzes.netlify.app/en/ml/)
+## [Kuis sebelum kuliah](https://ff-quizzes.netlify.app/en/ml/)
> ### [Pelajaran ini tersedia dalam R!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
## Pendahuluan
-Dalam empat pelajaran ini, Anda akan mempelajari cara membangun model regresi. Kita akan membahas kegunaannya sebentar lagi. Namun sebelum memulai, pastikan Anda memiliki alat yang tepat untuk memulai proses ini!
+Dalam empat pelajaran ini, Anda akan menemukan cara membangun model regresi. Kita akan membahas kegunaannya sebentar lagi. Tetapi sebelum Anda melakukan apa pun, pastikan Anda memiliki alat yang tepat untuk memulai prosesnya!
-Dalam pelajaran ini, Anda akan belajar:
+Dalam pelajaran ini, Anda akan belajar bagaimana:
- Mengonfigurasi komputer Anda untuk tugas pembelajaran mesin lokal.
-- Bekerja dengan Jupyter notebook.
+- Bekerja dengan Jupyter Notebooks.
- Menggunakan Scikit-learn, termasuk instalasi.
-- Mengeksplorasi regresi linier melalui latihan langsung.
+- Mengeksplorasi regresi linier dengan latihan langsung.
## Instalasi dan konfigurasi
-[](https://youtu.be/-DfeD2k2Kj0 "ML untuk pemula - Siapkan alat Anda untuk membangun model Pembelajaran Mesin")
+[](https://youtu.be/-DfeD2k2Kj0 "ML untuk pemula -Persiapkan alat Anda untuk membangun model Pembelajaran Mesin")
-> 🎥 Klik gambar di atas untuk video singkat tentang cara mengonfigurasi komputer Anda untuk ML.
+> 🎥 Klik gambar di atas untuk video singkat yang menjelaskan cara mengonfigurasi komputer Anda untuk ML.
-1. **Instal Python**. Pastikan [Python](https://www.python.org/downloads/) sudah terinstal di komputer Anda. Anda akan menggunakan Python untuk banyak tugas ilmu data dan pembelajaran mesin. Sebagian besar sistem komputer sudah memiliki instalasi Python. Ada juga [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) yang berguna untuk mempermudah pengaturan bagi beberapa pengguna.
+1. **Install Python**. Pastikan [Python](https://www.python.org/downloads/) terpasang di komputer Anda. Anda akan menggunakan Python untuk banyak tugas data science dan machine learning. Kebanyakan sistem komputer sudah menyertakan instalasi Python. Ada juga [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) yang berguna, untuk memudahkan pengaturan bagi beberapa pengguna.
- Namun, beberapa penggunaan Python memerlukan satu versi perangkat lunak, sementara yang lain memerlukan versi yang berbeda. Oleh karena itu, sangat berguna untuk bekerja dalam [lingkungan virtual](https://docs.python.org/3/library/venv.html).
+ Namun, beberapa penggunaan Python memerlukan satu versi perangkat lunak, sedangkan lainnya membutuhkan versi berbeda. Karena itu, berguna untuk bekerja dalam [virtual environment](https://docs.python.org/3/library/venv.html).
-2. **Instal Visual Studio Code**. Pastikan Anda memiliki Visual Studio Code yang terinstal di komputer Anda. Ikuti petunjuk ini untuk [menginstal Visual Studio Code](https://code.visualstudio.com/) untuk instalasi dasar. Anda akan menggunakan Python di Visual Studio Code dalam kursus ini, jadi Anda mungkin ingin mempelajari cara [mengonfigurasi Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) untuk pengembangan Python.
+2. **Install Visual Studio Code**. Pastikan Anda memiliki Visual Studio Code di komputer Anda. Ikuti petunjuk ini untuk [menginstal Visual Studio Code](https://code.visualstudio.com/) untuk instalasi dasar. Anda akan menggunakan Python di Visual Studio Code dalam kursus ini, jadi Anda mungkin ingin belajar cara [mengonfigurasi Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) untuk pengembangan Python.
- > Biasakan diri dengan Python dengan mempelajari koleksi [modul pembelajaran](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)
+ > Kenali Python dengan bekerja melalui kumpulan [modul Learn](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)
>
- > [](https://youtu.be/yyQM70vi7V8 "Siapkan Python dengan Visual Studio Code")
+ > [](https://youtu.be/yyQM70vi7V8 "Setup Python dengan Visual Studio Code")
>
> 🎥 Klik gambar di atas untuk video: menggunakan Python dalam VS Code.
-3. **Instal Scikit-learn**, dengan mengikuti [petunjuk ini](https://scikit-learn.org/stable/install.html). Karena Anda perlu memastikan bahwa Anda menggunakan Python 3, disarankan untuk menggunakan lingkungan virtual. Perhatikan, jika Anda menginstal pustaka ini di Mac M1, ada petunjuk khusus di halaman yang ditautkan di atas.
+3. **Install Scikit-learn**, dengan mengikuti [petunjuk ini](https://scikit-learn.org/stable/install.html). Karena Anda perlu memastikan menggunakan Python 3, disarankan menggunakan virtual environment. Catatan, jika Anda menginstal perpustakaan ini di Mac M1, ada petunjuk khusus di halaman yang ditautkan di atas.
-4. **Instal Jupyter Notebook**. Anda perlu [menginstal paket Jupyter](https://pypi.org/project/jupyter/).
+1. **Install Jupyter Notebook**. Anda perlu [menginstal paket Jupyter](https://pypi.org/project/jupyter/).
-## Lingkungan penulisan ML Anda
+## Lingkungan penyusunan ML Anda
-Anda akan menggunakan **notebook** untuk mengembangkan kode Python Anda dan membuat model pembelajaran mesin. Jenis file ini adalah alat umum bagi ilmuwan data, dan dapat diidentifikasi dengan akhiran atau ekstensi `.ipynb`.
+Anda akan menggunakan **notebook** untuk mengembangkan kode Python dan membuat model pembelajaran mesin. Jenis file ini adalah alat umum untuk ilmuwan data, dan dapat dikenali dari akhiran atau ekstensi `.ipynb`.
-Notebook adalah lingkungan interaktif yang memungkinkan pengembang untuk menulis kode sekaligus menambahkan catatan dan dokumentasi di sekitar kode, yang sangat membantu untuk proyek eksperimental atau berbasis penelitian.
+Notebook adalah lingkungan interaktif yang memungkinkan pengembang untuk menulis kode sekaligus menambahkan catatan dan dokumentasi di sekitar kode yang sangat membantu untuk proyek eksperimental atau riset.
-[](https://youtu.be/7E-jC8FLA2E "ML untuk pemula - Siapkan Jupyter Notebook untuk mulai membangun model regresi")
+[](https://youtu.be/7E-jC8FLA2E "ML untuk pemula - Siapkan Jupyter Notebooks untuk mulai membangun model regresi")
-> 🎥 Klik gambar di atas untuk video singkat tentang latihan ini.
+> 🎥 Klik gambar di atas untuk video singkat yang menjelaskan latihan ini.
### Latihan - bekerja dengan notebook
-Di folder ini, Anda akan menemukan file _notebook.ipynb_.
+Dalam folder ini, Anda akan menemukan file _notebook.ipynb_.
1. Buka _notebook.ipynb_ di Visual Studio Code.
- Server Jupyter akan dimulai dengan Python 3+. Anda akan menemukan area di notebook yang dapat `dijalankan`, yaitu potongan kode. Anda dapat menjalankan blok kode dengan memilih ikon yang terlihat seperti tombol putar.
+ Server Jupyter akan mulai dengan Python 3+ aktif. Anda akan menemukan area di notebook yang dapat `run`, potongan kode. Anda dapat menjalankan blok kode dengan memilih ikon yang mirip tombol play.
-2. Pilih ikon `md` dan tambahkan sedikit markdown, serta teks berikut **# Selamat datang di notebook Anda**.
+1. Pilih ikon `md` dan tambahkan sedikit markdown, serta teks berikut **# Selamat datang di notebook Anda**.
Selanjutnya, tambahkan beberapa kode Python.
-3. Ketik **print('hello notebook')** di blok kode.
-4. Pilih panah untuk menjalankan kode.
+1. Ketik **print('hello notebook')** dalam blok kode.
+1. Pilih panah untuk menjalankan kodenya.
- Anda akan melihat pernyataan yang dicetak:
+ Anda akan melihat pernyataan tercetak:
```output
hello notebook
```
-
+
-Anda dapat menyisipkan kode Anda dengan komentar untuk mendokumentasikan notebook secara mandiri.
+Anda dapat menyisipkan kode Anda dengan komentar untuk mendokumentasikan notebook sendiri.
-✅ Pikirkan sejenak tentang betapa berbedanya lingkungan kerja pengembang web dibandingkan dengan ilmuwan data.
+✅ Pikirkan sejenak bagaimana berbeda lingkungan kerja pengembang web dengan ilmuwan data.
-## Memulai dengan Scikit-learn
+## Jalankan Scikit-learn
-Sekarang Python telah diatur di lingkungan lokal Anda, dan Anda merasa nyaman dengan Jupyter notebook, mari kita sama-sama merasa nyaman dengan Scikit-learn (diucapkan `sci` seperti dalam `science`). Scikit-learn menyediakan [API yang luas](https://scikit-learn.org/stable/modules/classes.html#api-ref) untuk membantu Anda melakukan tugas ML.
+Sekarang Python sudah disiapkan di lingkungan lokal Anda, dan Anda sudah nyaman dengan Jupyter Notebooks, mari kita juga nyaman menggunakan Scikit-learn (baca `sci` seperti `science`). Scikit-learn menyediakan [API ekstensif](https://scikit-learn.org/stable/modules/classes.html#api-ref) untuk membantu Anda melakukan tugas ML.
-Menurut [situs web mereka](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn adalah pustaka pembelajaran mesin sumber terbuka yang mendukung pembelajaran terawasi dan tidak terawasi. Pustaka ini juga menyediakan berbagai alat untuk fitting model, praproses data, pemilihan model, evaluasi, dan banyak utilitas lainnya."
+Menurut [situs web mereka](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn adalah perpustakaan pembelajaran mesin sumber terbuka yang mendukung pembelajaran terawasi dan tak terawasi. Ia juga menyediakan berbagai alat untuk pemasangan model, prapengolahan data, pemilihan dan evaluasi model, dan banyak utilitas lainnya."
-Dalam kursus ini, Anda akan menggunakan Scikit-learn dan alat lainnya untuk membangun model pembelajaran mesin untuk melakukan apa yang kita sebut tugas 'pembelajaran mesin tradisional'. Kami sengaja menghindari jaringan saraf dan pembelajaran mendalam, karena topik tersebut lebih baik dibahas dalam kurikulum 'AI untuk Pemula' kami yang akan datang.
+Dalam kursus ini, Anda akan menggunakan Scikit-learn dan alat lain untuk membangun model pembelajaran mesin untuk melakukan apa yang kami sebut tugas 'pembelajaran mesin tradisional'. Kami sengaja menghindari neural network dan deep learning, karena itu dibahas lebih baik di kurikulum 'AI untuk Pemula' yang akan datang.
-Scikit-learn membuatnya mudah untuk membangun model dan mengevaluasinya untuk digunakan. Pustaka ini terutama berfokus pada penggunaan data numerik dan berisi beberapa dataset siap pakai untuk digunakan sebagai alat pembelajaran. Pustaka ini juga mencakup model yang sudah dibuat sebelumnya untuk dicoba oleh siswa. Mari kita eksplorasi proses memuat data yang sudah dikemas dan menggunakan estimator bawaan untuk model ML pertama dengan Scikit-learn menggunakan data dasar.
+Scikit-learn memudahkan membangun model dan mengevaluasinya untuk digunakan. Fokus utamanya menggunakan data numerik dan menyediakan beberapa dataset siap pakai sebagai alat pembelajaran. Ia juga termasuk model bawaan untuk dicoba oleh siswa. Mari jelajahi proses memuat data paket dan menggunakan estimator bawaan untuk model ML pertama dengan Scikit-learn menggunakan data dasar.
## Latihan - notebook Scikit-learn pertama Anda
-> Tutorial ini terinspirasi oleh [contoh regresi linier](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) di situs web Scikit-learn.
+> Tutorial ini terinspirasi oleh [contoh regresi linier](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) di situs Scikit-learn.
-[](https://youtu.be/2xkXL5EUpS0 "ML untuk pemula - Proyek Regresi Linier Pertama Anda dalam Python")
-> 🎥 Klik gambar di atas untuk video singkat tentang latihan ini.
+[](https://youtu.be/2xkXL5EUpS0 "ML untuk pemula - Proyek Regresi Linier Pertama Anda di Python")
-Di file _notebook.ipynb_ yang terkait dengan pelajaran ini, hapus semua sel dengan menekan ikon 'tempat sampah'.
+> 🎥 Klik gambar di atas untuk video singkat yang menjelaskan latihan ini.
-Di bagian ini, Anda akan bekerja dengan dataset kecil tentang diabetes yang sudah ada di Scikit-learn untuk tujuan pembelajaran. Bayangkan Anda ingin menguji pengobatan untuk pasien diabetes. Model Pembelajaran Mesin mungkin membantu Anda menentukan pasien mana yang akan merespons pengobatan dengan lebih baik, berdasarkan kombinasi variabel. Bahkan model regresi yang sangat dasar, ketika divisualisasikan, mungkin menunjukkan informasi tentang variabel yang dapat membantu Anda mengatur uji klinis teoritis Anda.
+Dalam file _notebook.ipynb_ yang terkait dengan pelajaran ini, kosongkan semua sel dengan menekan ikon 'tempat sampah'.
-✅ Ada banyak jenis metode regresi, dan pilihan metode tergantung pada jawaban yang Anda cari. Jika Anda ingin memprediksi tinggi badan yang mungkin untuk seseorang berdasarkan usia tertentu, Anda akan menggunakan regresi linier, karena Anda mencari **nilai numerik**. Jika Anda tertarik untuk mengetahui apakah jenis masakan tertentu harus dianggap vegan atau tidak, Anda mencari **penugasan kategori**, sehingga Anda akan menggunakan regresi logistik. Anda akan mempelajari lebih lanjut tentang regresi logistik nanti. Pikirkan sejenak tentang beberapa pertanyaan yang dapat Anda ajukan dari data, dan metode mana yang lebih sesuai.
+Dalam bagian ini, Anda akan bekerja dengan dataset kecil tentang diabetes yang sudah terintegrasi dalam Scikit-learn untuk tujuan pembelajaran. Bayangkan Anda ingin menguji pengobatan untuk pasien diabetes. Model Pembelajaran Mesin dapat membantu menentukan pasien mana yang akan merespon lebih baik berdasarkan kombinasi variabel. Bahkan model regresi dasar, jika divisualisasikan, dapat menunjukkan informasi variabel yang membantu mengatur uji klinis teoretis Anda.
+
+✅ Ada banyak jenis metode regresi, dan yang Anda pilih tergantung pada jawaban yang Anda cari. Jika ingin memprediksi tinggi badan yang mungkin untuk seseorang pada usia tertentu, gunakan regresi linier, karena Anda mencari **nilai numerik**. Jika ingin mengetahui apakah jenis masakan harus diklasifikasikan sebagai vegan atau tidak, Anda mencari **penugasan kategori**, sehingga Anda menggunakan regresi logistik. Anda akan belajar lebih tentang regresi logistik nanti. Pikirkan beberapa pertanyaan yang dapat diajukan pada data, dan metode mana yang lebih tepat digunakan.
Mari kita mulai tugas ini.
### Impor pustaka
-Untuk tugas ini, kita akan mengimpor beberapa pustaka:
+Untuk tugas ini kita akan mengimpor beberapa pustaka:
-- **matplotlib**. Ini adalah [alat grafik](https://matplotlib.org/) yang berguna dan akan kita gunakan untuk membuat plot garis.
-- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) adalah pustaka yang berguna untuk menangani data numerik dalam Python.
+- **matplotlib**. Ini alat [grafik](https://matplotlib.org/) yang berguna dan akan kita gunakan untuk membuat plot garis.
+- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) adalah pustaka berguna untuk menangani data numerik di Python.
- **sklearn**. Ini adalah pustaka [Scikit-learn](https://scikit-learn.org/stable/user_guide.html).
Impor beberapa pustaka untuk membantu tugas Anda.
-1. Tambahkan impor dengan mengetik kode berikut:
+1. Tambahkan import dengan mengetik kode berikut:
```python
import matplotlib.pyplot as plt
@@ -122,24 +123,24 @@ Impor beberapa pustaka untuk membantu tugas Anda.
from sklearn import datasets, linear_model, model_selection
```
- Di atas, Anda mengimpor `matplotlib`, `numpy`, dan Anda mengimpor `datasets`, `linear_model`, dan `model_selection` dari `sklearn`. `model_selection` digunakan untuk membagi data menjadi set pelatihan dan pengujian.
+ Di atas Anda mengimpor `matplotlib`, `numpy` dan mengimpor `datasets`, `linear_model` dan `model_selection` dari `sklearn`. `model_selection` digunakan untuk membagi data menjadi set pelatihan dan pengujian.
### Dataset diabetes
-Dataset [diabetes](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) bawaan mencakup 442 sampel data tentang diabetes, dengan 10 variabel fitur, beberapa di antaranya meliputi:
+Dataset bawaan [diabetes](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) berisi 442 sampel data diabetes, dengan 10 variabel fitur, beberapa di antaranya:
- age: usia dalam tahun
- bmi: indeks massa tubuh
- bp: tekanan darah rata-rata
-- s1 tc: T-Cells (jenis sel darah putih)
+- s1 tc: Sel-T (jenis sel darah putih)
-✅ Dataset ini mencakup konsep 'jenis kelamin' sebagai variabel fitur yang penting untuk penelitian tentang diabetes. Banyak dataset medis mencakup jenis klasifikasi biner seperti ini. Pikirkan sejenak tentang bagaimana kategorisasi seperti ini mungkin mengecualikan bagian tertentu dari populasi dari pengobatan.
+✅ Dataset ini menyertakan konsep 'jenis kelamin' sebagai variabel fitur penting untuk penelitian diabetes. Banyak dataset medis menyertakan klasifikasi biner seperti ini. Pikirkan bagaimana kategorisasi seperti ini dapat mengecualikan bagian populasi tertentu dari pengobatan.
Sekarang, muat data X dan y.
-> 🎓 Ingat, ini adalah pembelajaran terawasi, dan kita membutuhkan target 'y' yang bernama.
+> 🎓 Ingat, ini pembelajaran terawasi, dan kita membutuhkan target bernama 'y'.
-Di sel kode baru, muat dataset diabetes dengan memanggil `load_diabetes()`. Input `return_X_y=True` menandakan bahwa `X` akan menjadi matriks data, dan `y` akan menjadi target regresi.
+Di sel kode baru, muat dataset diabetes dengan memanggil `load_diabetes()`. Input `return_X_y=True` menandakan bahwa `X` akan menjadi matriks data, dan `y` target regresi.
1. Tambahkan beberapa perintah print untuk menunjukkan bentuk matriks data dan elemen pertamanya:
@@ -149,9 +150,9 @@ Di sel kode baru, muat dataset diabetes dengan memanggil `load_diabetes()`. Inpu
print(X[0])
```
- Apa yang Anda dapatkan sebagai respons adalah tuple. Anda menetapkan dua nilai pertama dari tuple ke `X` dan `y` masing-masing. Pelajari lebih lanjut [tentang tuple](https://wikipedia.org/wiki/Tuple).
+ Apa yang Anda dapatkan sebagai respons adalah tuple. Anda menetapkan dua nilai pertama tuple ke `X` dan `y` masing-masing. Pelajari lebih lanjut [tentang tuple](https://wikipedia.org/wiki/Tuple).
- Anda dapat melihat bahwa data ini memiliki 442 item yang berbentuk array dengan 10 elemen:
+ Anda dapat melihat data ini memiliki 442 item yang berbentuk array dengan 10 elemen:
```text
(442, 10)
@@ -159,9 +160,9 @@ Di sel kode baru, muat dataset diabetes dengan memanggil `load_diabetes()`. Inpu
-0.04340085 -0.00259226 0.01990842 -0.01764613]
```
- ✅ Pikirkan sejenak tentang hubungan antara data dan target regresi. Regresi linier memprediksi hubungan antara fitur X dan variabel target y. Bisakah Anda menemukan [target](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) untuk dataset diabetes dalam dokumentasi? Apa yang ditunjukkan oleh dataset ini, mengingat targetnya?
+ ✅ Pikirkan hubungan antara data dan target regresi. Regresi linier memprediksi hubungan antara fitur X dan variabel target y. Bisakah Anda menemukan [target](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) untuk dataset diabetes dalam dokumentasi? Apa yang ditunjukkan dataset ini, berdasarkan target tersebut?
-2. Selanjutnya, pilih bagian dari dataset ini untuk dipetakan dengan memilih kolom ke-3 dari dataset. Anda dapat melakukannya dengan menggunakan operator `:` untuk memilih semua baris, lalu memilih kolom ke-3 menggunakan indeks (2). Anda juga dapat mengubah bentuk data menjadi array 2D - seperti yang diperlukan untuk pemetaan - dengan menggunakan `reshape(n_rows, n_columns)`. Jika salah satu parameter adalah -1, dimensi yang sesuai dihitung secara otomatis.
+2. Selanjutnya, pilih sebagian dari dataset ini untuk dibuatkan plot dengan memilih kolom ke-3 dataset. Anda dapat melakukan ini dengan menggunakan operator `:` untuk memilih semua baris, lalu memilih kolom ke-3 dengan indeks (2). Anda juga dapat mengubah bentuk data menjadi array 2D - sesuai kebutuhan plotting - dengan menggunakan `reshape(n_rows, n_columns)`. Jika salah satu parameternya -1, dimensi yang sesuai dihitung secara otomatis.
```python
X = X[:, 2]
@@ -170,28 +171,28 @@ Di sel kode baru, muat dataset diabetes dengan memanggil `load_diabetes()`. Inpu
✅ Kapan saja, cetak data untuk memeriksa bentuknya.
-3. Sekarang setelah Anda memiliki data yang siap untuk dipetakan, Anda dapat melihat apakah mesin dapat membantu menentukan pembagian logis antara angka-angka dalam dataset ini. Untuk melakukan ini, Anda perlu membagi data (X) dan target (y) menjadi set pengujian dan pelatihan. Scikit-learn memiliki cara yang sederhana untuk melakukan ini; Anda dapat membagi data pengujian Anda pada titik tertentu.
+3. Sekarang data sudah siap untuk diplot, lihat apakah mesin dapat membantu menentukan pemisahan logis antara angka dalam dataset ini. Untuk melakukan ini, Anda perlu membagi data (X) dan target (y) ke dalam set pengujian dan pelatihan. Scikit-learn menyediakan cara mudah untuk melakukan ini; Anda dapat membagi data pengujian pada titik tertentu.
```python
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33)
```
-4. Sekarang Anda siap untuk melatih model Anda! Muat model regresi linier dan latih dengan set pelatihan X dan y Anda menggunakan `model.fit()`:
+4. Sekarang Anda siap melatih model! Muat model regresi linier dan latih dengan set pelatihan X dan y menggunakan `model.fit()`:
```python
model = linear_model.LinearRegression()
model.fit(X_train, y_train)
```
- ✅ `model.fit()` adalah fungsi yang akan sering Anda lihat di banyak pustaka ML seperti TensorFlow.
+ ✅ `model.fit()` adalah fungsi yang akan Anda temui di banyak perpustakaan ML seperti TensorFlow
-5. Kemudian, buat prediksi menggunakan data pengujian, dengan menggunakan fungsi `predict()`. Ini akan digunakan untuk menggambar garis antara kelompok data.
+5. Kemudian, buat prediksi menggunakan data uji, dengan fungsi `predict()`. Ini akan digunakan untuk menggambar garis di antara kelompok data
```python
y_pred = model.predict(X_test)
```
-6. Sekarang saatnya untuk menunjukkan data dalam plot. Matplotlib adalah alat yang sangat berguna untuk tugas ini. Buat scatterplot dari semua data pengujian X dan y, dan gunakan prediksi untuk menggambar garis di tempat yang paling sesuai, di antara pengelompokan data model.
+6. Sekarang saatnya menampilkan data dalam plot. Matplotlib adalah alat yang sangat berguna untuk tugas ini. Buat scatterplot dari semua data uji X dan y, dan gunakan prediksi untuk menggambar garis di tempat paling tepat, di antara pengelompokan data model.
```python
plt.scatter(X_test, y_test, color='black')
@@ -202,29 +203,32 @@ Di sel kode baru, muat dataset diabetes dengan memanggil `load_diabetes()`. Inpu
plt.show()
```
- 
-✅ Pikirkan sebentar tentang apa yang sedang terjadi di sini. Sebuah garis lurus melewati banyak titik data kecil, tetapi apa sebenarnya yang sedang dilakukan? Bisakah Anda melihat bagaimana Anda seharusnya dapat menggunakan garis ini untuk memprediksi di mana titik data baru yang belum terlihat seharusnya berada dalam hubungannya dengan sumbu y pada plot? Cobalah untuk menjelaskan penggunaan praktis dari model ini.
+ 
+
-Selamat, Anda telah membangun model regresi linear pertama Anda, membuat prediksi dengannya, dan menampilkannya dalam sebuah plot!
+ ✅ Pikirkan sejenak tentang apa yang sedang terjadi di sini. Sebuah garis lurus berjalan melalui banyak titik data kecil, tapi sebenarnya apa yang dilakukannya? Bisakah Anda melihat bagaimana seharusnya Anda bisa menggunakan garis ini untuk memprediksi di mana titik data baru yang belum terlihat harus ditempatkan relatif terhadap sumbu y pada plot? Cobalah untuk mengungkapkan dalam kata-kata kegunaan praktis dari model ini.
+
+Selamat, Anda telah membangun model regresi linier pertama Anda, membuat prediksi dengannya, dan menampilkannya dalam sebuah plot!
---
## 🚀Tantangan
-Plot variabel yang berbeda dari dataset ini. Petunjuk: edit baris ini: `X = X[:,2]`. Berdasarkan target dataset ini, apa yang dapat Anda temukan tentang perkembangan diabetes sebagai penyakit?
-
-## [Kuis setelah kuliah](https://ff-quizzes.netlify.app/en/ml/)
+Plot variabel yang berbeda dari dataset ini. Petunjuk: edit baris ini: `X = X[:,2]`. Mengingat target dari dataset ini, apa yang dapat Anda temukan tentang perkembangan diabetes sebagai penyakit?
+## [Kuis pasca kuliah](https://ff-quizzes.netlify.app/en/ml/)
-## Tinjauan & Studi Mandiri
+## Tinjauan & Belajar Mandiri
-Dalam tutorial ini, Anda bekerja dengan regresi linear sederhana, bukan regresi univariat atau regresi multivariat. Bacalah sedikit tentang perbedaan antara metode-metode ini, atau lihat [video ini](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef).
+Dalam tutorial ini, Anda bekerja dengan regresi linier sederhana, bukan regresi linier univariat atau multipel. Bacalah sedikit tentang perbedaan antara metode-metode ini, atau lihat [video ini](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef)
-Pelajari lebih lanjut tentang konsep regresi dan pikirkan tentang jenis pertanyaan apa yang dapat dijawab dengan teknik ini. Ikuti [tutorial ini](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) untuk memperdalam pemahaman Anda.
+Baca lebih lanjut tentang konsep regresi dan pikirkan jenis pertanyaan apa yang bisa dijawab dengan teknik ini. Ikuti [tutorial ini](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) untuk memperdalam pemahaman Anda.
## Tugas
-[Dataset yang berbeda](assignment.md)
+[Dataset berbeda](assignment.md)
---
-**Penafian**:
-Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berusaha untuk memberikan hasil yang akurat, harap diingat bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang otoritatif. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini.
\ No newline at end of file
+
+**Penafian**:
+Dokumen ini telah diterjemahkan menggunakan layanan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk mencapai akurasi, harap diketahui bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang sah. Untuk informasi penting, disarankan menggunakan terjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini.
+
\ No newline at end of file
diff --git a/translations/id/2-Regression/2-Data/README.md b/translations/id/2-Regression/2-Data/README.md
index eb5f027a1..473c8e203 100644
--- a/translations/id/2-Regression/2-Data/README.md
+++ b/translations/id/2-Regression/2-Data/README.md
@@ -1,58 +1,58 @@
-# Membangun Model Regresi Menggunakan Scikit-learn: Persiapkan dan Visualisasikan Data
+# Membangun model regresi menggunakan Scikit-learn: menyiapkan dan memvisualisasikan data
-
+
Infografis oleh [Dasani Madipalli](https://twitter.com/dasani_decoded)
-## [Kuis Pra-Pelajaran](https://ff-quizzes.netlify.app/en/ml/)
+## [Kuis sebelum kuliah](https://ff-quizzes.netlify.app/en/ml/)
> ### [Pelajaran ini tersedia dalam R!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
## Pendahuluan
-Setelah Anda memiliki alat yang diperlukan untuk mulai membangun model pembelajaran mesin dengan Scikit-learn, Anda siap untuk mulai mengajukan pertanyaan terhadap data Anda. Saat bekerja dengan data dan menerapkan solusi ML, sangat penting untuk memahami cara mengajukan pertanyaan yang tepat agar dapat memanfaatkan potensi dataset Anda dengan benar.
+Sekarang Anda sudah siap dengan alat yang Anda butuhkan untuk mulai menangani pembuatan model pembelajaran mesin dengan Scikit-learn, Anda siap untuk mulai mengajukan pertanyaan pada data Anda. Saat Anda bekerja dengan data dan menerapkan solusi ML, sangat penting untuk memahami cara mengajukan pertanyaan yang tepat agar dapat membuka potensi dataset Anda secara benar.
Dalam pelajaran ini, Anda akan belajar:
-- Cara mempersiapkan data Anda untuk membangun model.
+- Cara menyiapkan data Anda untuk pembangunan model.
- Cara menggunakan Matplotlib untuk visualisasi data.
+- Cara menggunakan Seaborn untuk visualisasi data yang lebih ekspresif.
-## Mengajukan Pertanyaan yang Tepat pada Data Anda
+## Mengajukan pertanyaan yang tepat dari data Anda
-Pertanyaan yang ingin Anda jawab akan menentukan jenis algoritma ML yang akan Anda gunakan. Kualitas jawaban yang Anda dapatkan sangat bergantung pada sifat data Anda.
+Pertanyaan yang perlu Anda jawab akan menentukan jenis algoritma ML yang akan Anda gunakan. Dan kualitas jawaban yang Anda dapatkan sangat bergantung pada sifat data Anda.
-Lihatlah [data](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) yang disediakan untuk pelajaran ini. Anda dapat membuka file .csv ini di VS Code. Sekilas, Anda akan segera melihat bahwa ada data kosong dan campuran antara string dan data numerik. Ada juga kolom aneh bernama 'Package' di mana datanya adalah campuran antara 'sacks', 'bins', dan nilai lainnya. Data ini, sebenarnya, cukup berantakan.
+Lihatlah [data](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) yang disediakan untuk pelajaran ini. Anda bisa membuka file .csv ini di VS Code. Sekilas menunjukkan ada kekosongan dan campuran data string dan numerik. Ada juga kolom aneh bernama 'Package' di mana data merupakan campuran antara 'sacks', 'bins' dan nilai lainnya. Data ini sebenarnya agak berantakan.
-[](https://youtu.be/5qGjczWTrDQ "ML untuk Pemula - Cara Menganalisis dan Membersihkan Dataset")
+[](https://youtu.be/5qGjczWTrDQ "ML untuk pemula - Cara Menganalisis dan Membersihkan Dataset")
-> 🎥 Klik gambar di atas untuk video singkat tentang persiapan data untuk pelajaran ini.
+> 🎥 Klik gambar di atas untuk video singkat yang membahas cara menyiapkan data untuk pelajaran ini.
-Faktanya, sangat jarang mendapatkan dataset yang sepenuhnya siap digunakan untuk membuat model ML langsung. Dalam pelajaran ini, Anda akan belajar cara mempersiapkan dataset mentah menggunakan pustaka Python standar. Anda juga akan mempelajari berbagai teknik untuk memvisualisasikan data.
+Sebenarnya, jarang sekali mendapatkan dataset yang benar-benar siap digunakan langsung untuk membuat model ML. Dalam pelajaran ini, Anda akan belajar cara menyiapkan dataset mentah menggunakan pustaka standar Python. Anda juga akan mempelajari berbagai teknik untuk memvisualisasikan data.
-## Studi Kasus: 'Pasar Labu'
+## Studi kasus: 'pasar labu'
-Dalam folder ini, Anda akan menemukan file .csv di folder root `data` bernama [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) yang mencakup 1757 baris data tentang pasar labu, yang dikelompokkan berdasarkan kota. Ini adalah data mentah yang diekstrak dari [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) yang didistribusikan oleh Departemen Pertanian Amerika Serikat.
+Dalam folder ini Anda akan menemukan file .csv di folder root `data` bernama [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) yang berisikan 1757 baris data tentang pasar labu, disortir berdasarkan kota. Ini adalah data mentah yang diambil dari [Laporan Standar Pasar Terminal Hasil Khusus](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) yang didistribusikan oleh Departemen Pertanian Amerika Serikat.
-### Mempersiapkan Data
+### Menyiapkan data
-Data ini berada di domain publik. Data ini dapat diunduh dalam banyak file terpisah, per kota, dari situs web USDA. Untuk menghindari terlalu banyak file terpisah, kami telah menggabungkan semua data kota ke dalam satu spreadsheet, sehingga kami telah _mempersiapkan_ data sedikit. Selanjutnya, mari kita lihat lebih dekat data tersebut.
+Data ini berada di domain publik. Bisa diunduh dalam banyak file terpisah per kota dari situs USDA. Untuk menghindari terlalu banyak file terpisah, kami telah menggabungkan semua data kota ke dalam satu spreadsheet, sehingga kami sudah _menyiapkan_ data tersebut sedikit. Selanjutnya, mari kita lihat lebih dekat data tersebut.
-### Data Labu - Kesimpulan Awal
+### Data labu - kesimpulan awal
-Apa yang Anda perhatikan tentang data ini? Anda sudah melihat bahwa ada campuran string, angka, data kosong, dan nilai aneh yang perlu Anda pahami.
+Apa yang Anda perhatikan dari data ini? Anda sudah melihat ada campuran string, angka, kekosongan, dan nilai aneh yang perlu Anda pahami.
-Pertanyaan apa yang dapat Anda ajukan pada data ini menggunakan teknik Regresi? Bagaimana dengan "Memprediksi harga labu yang dijual selama bulan tertentu". Melihat kembali data tersebut, ada beberapa perubahan yang perlu Anda lakukan untuk membuat struktur data yang diperlukan untuk tugas ini.
+Pertanyaan apa yang bisa Anda ajukan dari data ini, menggunakan teknik Regresi? Bagaimana dengan "Memprediksi harga labu yang dijual selama bulan tertentu". Melihat kembali data, ada beberapa perubahan yang perlu dilakukan untuk membuat struktur data yang diperlukan untuk tugas ini.
+## Latihan - menganalisis data labu
-## Latihan - Analisis Data Labu
+Mari gunakan [Pandas](https://pandas.pydata.org/), (nama ini berasal dari `Python Data Analysis`) alat yang sangat berguna untuk membentuk data, untuk menganalisis dan menyiapkan data labu ini.
-Mari gunakan [Pandas](https://pandas.pydata.org/), (nama ini berasal dari `Python Data Analysis`) alat yang sangat berguna untuk membentuk data, untuk menganalisis dan mempersiapkan data labu ini.
+### Pertama, periksa tanggal yang hilang
-### Pertama, Periksa Tanggal yang Hilang
+Pertama Anda perlu mengambil langkah untuk memeriksa tanggal yang hilang:
-Anda pertama-tama perlu mengambil langkah-langkah untuk memeriksa tanggal yang hilang:
-
-1. Konversikan tanggal ke format bulan (ini adalah tanggal AS, jadi formatnya adalah `MM/DD/YYYY`).
-2. Ekstrak bulan ke kolom baru.
+1. Ubah tanggal ke format bulan (ini adalah tanggal AS, jadi formatnya `MM/DD/YYYY`).
+2. Ekstrak bulan menjadi kolom baru.
Buka file _notebook.ipynb_ di Visual Studio Code dan impor spreadsheet ke dalam dataframe Pandas baru.
@@ -66,26 +66,26 @@ Buka file _notebook.ipynb_ di Visual Studio Code dan impor spreadsheet ke dalam
✅ Fungsi apa yang akan Anda gunakan untuk melihat lima baris terakhir?
-1. Periksa apakah ada data yang hilang dalam dataframe saat ini:
+1. Periksa apakah ada data yang hilang di dataframe saat ini:
```python
pumpkins.isnull().sum()
```
- Ada data yang hilang, tetapi mungkin tidak akan menjadi masalah untuk tugas ini.
+ Ada data yang hilang, tetapi mungkin tidak berpengaruh untuk tugas ini.
-1. Untuk membuat dataframe Anda lebih mudah digunakan, pilih hanya kolom yang Anda butuhkan, menggunakan fungsi `loc` yang mengekstrak dari dataframe asli sekelompok baris (diberikan sebagai parameter pertama) dan kolom (diberikan sebagai parameter kedua). Ekspresi `:` dalam kasus ini berarti "semua baris".
+1. Untuk memudahkan pengolahan dataframe Anda, pilih hanya kolom yang Anda butuhkan, menggunakan fungsi `loc` yang mengekstrak dari dataframe asli sekumpulan baris (dilewatkan sebagai parameter pertama) dan kolom (parameter kedua). Ekspresi `:` dalam contoh di bawah berarti "semua baris".
```python
columns_to_select = ['Package', 'Low Price', 'High Price', 'Date']
pumpkins = pumpkins.loc[:, columns_to_select]
```
-### Kedua, Tentukan Harga Rata-rata Labu
+### Kedua, tentukan harga rata-rata labu
-Pikirkan tentang cara menentukan harga rata-rata labu dalam bulan tertentu. Kolom apa yang akan Anda pilih untuk tugas ini? Petunjuk: Anda akan membutuhkan 3 kolom.
+Pikirkan cara menentukan harga rata-rata labu dalam bulan tertentu. Kolom apa yang akan Anda pilih untuk tugas ini? Petunjuk: Anda akan membutuhkan 3 kolom.
-Solusi: ambil rata-rata dari kolom `Low Price` dan `High Price` untuk mengisi kolom Harga baru, dan konversikan kolom Tanggal untuk hanya menampilkan bulan. Untungnya, menurut pemeriksaan di atas, tidak ada data yang hilang untuk tanggal atau harga.
+Solusi: ambil rata-rata dari kolom `Low Price` dan `High Price` untuk mengisi kolom Harga baru, dan ubah kolom Date hanya menampilkan bulan. Untungnya, menurut pemeriksaan di atas, tidak ada data yang hilang untuk tanggal atau harga.
1. Untuk menghitung rata-rata, tambahkan kode berikut:
@@ -96,23 +96,23 @@ Solusi: ambil rata-rata dari kolom `Low Price` dan `High Price` untuk mengisi ko
```
- ✅ Silakan cetak data apa pun yang ingin Anda periksa menggunakan `print(month)`.
+ ✅ Jangan ragu untuk mencetak data apa pun yang ingin Anda periksa menggunakan `print(month)`.
-2. Sekarang, salin data yang telah dikonversi ke dataframe Pandas baru:
+2. Sekarang, salin data yang sudah diubah ke dataframe Pandas baru:
```python
new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price})
```
- Mencetak dataframe Anda akan menunjukkan dataset yang bersih dan rapi yang dapat Anda gunakan untuk membangun model regresi baru Anda.
+ Mencetak dataframe Anda akan menunjukkan dataset bersih dan rapi yang bisa digunakan untuk membangun model regresi Anda.
-### Tapi Tunggu! Ada Sesuatu yang Aneh di Sini
+### Tapi tunggu! Ada yang ganjil di sini
-Jika Anda melihat kolom `Package`, labu dijual dalam banyak konfigurasi yang berbeda. Beberapa dijual dalam ukuran '1 1/9 bushel', beberapa dalam ukuran '1/2 bushel', beberapa per labu, beberapa per pon, dan beberapa dalam kotak besar dengan lebar yang bervariasi.
+Jika Anda lihat kolom `Package`, labu dijual dalam berbagai konfigurasi berbeda. Ada yang dijual dalam ukuran '1 1/9 bushel', ada yang '1/2 bushel', beberapa per labu, beberapa per pon, dan ada yang dalam kotak besar dengan lebar bervariasi.
> Labu tampaknya sangat sulit untuk ditimbang secara konsisten
-Menggali data asli, menarik bahwa apa pun dengan `Unit of Sale` yang sama dengan 'EACH' atau 'PER BIN' juga memiliki tipe `Package` per inci, per bin, atau 'each'. Labu tampaknya sangat sulit untuk ditimbang secara konsisten, jadi mari kita memfilter mereka dengan memilih hanya labu dengan string 'bushel' di kolom `Package`.
+Melihat data asli, menarik bahwa apa pun dengan `Unit of Sale` bernilai 'EACH' atau 'PER BIN' juga memiliki jenis `Package` per inci, per bin, atau 'each'. Labu memang sulit ditimbang secara konsisten, jadi mari kita saring dengan memilih hanya labu yang memiliki string 'bushel' di kolom `Package` mereka.
1. Tambahkan filter di bagian atas file, di bawah impor .csv awal:
@@ -120,11 +120,11 @@ Menggali data asli, menarik bahwa apa pun dengan `Unit of Sale` yang sama dengan
pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]
```
- Jika Anda mencetak data sekarang, Anda dapat melihat bahwa Anda hanya mendapatkan sekitar 415 baris data yang berisi labu berdasarkan bushel.
+ Jika Anda mencetak data sekarang, Anda akan melihat bahwa Anda hanya mendapatkan sekitar 415 baris data yang berisi labu per bushel.
-### Tapi Tunggu! Ada Satu Hal Lagi yang Harus Dilakukan
+### Tapi tunggu! Ada satu hal lagi yang harus dilakukan
-Apakah Anda memperhatikan bahwa jumlah bushel bervariasi per baris? Anda perlu menormalkan harga sehingga Anda menunjukkan harga per bushel, jadi lakukan beberapa perhitungan untuk standarisasi.
+Apakah Anda menyadari bahwa jumlah bushel bervariasi per baris? Anda perlu menormalkan harga sehingga menampilkan harga per bushel, jadi lakukan beberapa perhitungan untuk menstandarisasinya.
1. Tambahkan baris ini setelah blok yang membuat dataframe new_pumpkins:
@@ -134,29 +134,29 @@ Apakah Anda memperhatikan bahwa jumlah bushel bervariasi per baris? Anda perlu m
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2)
```
-✅ Menurut [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), berat bushel tergantung pada jenis hasil panen, karena ini adalah pengukuran volume. "Satu bushel tomat, misalnya, seharusnya memiliki berat 56 pon... Daun dan sayuran mengambil lebih banyak ruang dengan berat lebih sedikit, sehingga satu bushel bayam hanya memiliki berat 20 pon." Semuanya cukup rumit! Mari kita tidak repot-repot membuat konversi bushel-ke-pon, dan sebagai gantinya harga berdasarkan bushel. Semua studi tentang bushel labu ini, bagaimanapun, menunjukkan betapa pentingnya memahami sifat data Anda!
+✅ Menurut [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), berat bushel tergantung jenis produk, karena ini adalah ukuran volume. "Satu bushel tomat, misalnya, seharusnya beratnya 56 pon... Daun dan sayuran hijau mengisi lebih banyak ruang dengan berat lebih sedikit, jadi satu bushel bayam hanya sekitar 20 pon." Semuanya cukup rumit! Mari kita tidak repot membuat konversi bushel ke pon, dan harga berdasarkan bushel saja. Studi tentang bushel labu ini menunjukkan betapa pentingnya memahami sifat data Anda!
-Sekarang, Anda dapat menganalisis harga per unit berdasarkan pengukuran bushel mereka. Jika Anda mencetak data sekali lagi, Anda dapat melihat bagaimana data tersebut telah distandarisasi.
+Sekarang Anda bisa menganalisis harga per unit berdasarkan ukuran bushelnya. Jika Anda mencetak data sekali lagi, Anda bisa melihat bagaimana data tersebut sudah distandarisasi.
-✅ Apakah Anda memperhatikan bahwa labu yang dijual berdasarkan setengah bushel sangat mahal? Bisakah Anda mencari tahu alasannya? Petunjuk: labu kecil jauh lebih mahal daripada yang besar, mungkin karena ada lebih banyak labu kecil per bushel, mengingat ruang kosong yang tidak terpakai yang diambil oleh satu labu besar untuk pai.
+✅ Apakah Anda menyadari labu yang dijual per setengah bushel sangat mahal? Bisakah Anda mencari tahu mengapa? Petunjuk: labu kecil jauh lebih mahal daripada yang besar, mungkin karena ada lebih banyak jumlah labu kecil per bushel, mengingat ruang tidak terpakai yang diambil oleh satu labu pie besar berongga.
## Strategi Visualisasi
-Bagian dari peran ilmuwan data adalah menunjukkan kualitas dan sifat data yang mereka kerjakan. Untuk melakukan ini, mereka sering membuat visualisasi yang menarik, seperti plot, grafik, dan diagram, yang menunjukkan berbagai aspek data. Dengan cara ini, mereka dapat secara visual menunjukkan hubungan dan celah yang sulit ditemukan.
+Bagian dari peran ilmuwan data adalah untuk menunjukkan kualitas dan sifat data yang mereka gunakan. Untuk melakukan ini, mereka sering membuat visualisasi menarik, atau plot, grafik, dan diagram, yang menunjukkan berbagai aspek data. Dengan cara ini, mereka dapat secara visual menunjukkan hubungan dan celah yang sulit ditemukan dengan cara lain.
-[](https://youtu.be/SbUkxH6IJo0 "ML untuk Pemula - Cara Memvisualisasikan Data dengan Matplotlib")
+[](https://youtu.be/SbUkxH6IJo0 "ML untuk pemula - Cara Memvisualisasikan Data dengan Matplotlib")
-> 🎥 Klik gambar di atas untuk video singkat tentang memvisualisasikan data untuk pelajaran ini.
+> 🎥 Klik gambar di atas untuk video singkat yang membahas visualisasi data untuk pelajaran ini.
-Visualisasi juga dapat membantu menentukan teknik pembelajaran mesin yang paling sesuai untuk data. Sebuah scatterplot yang tampaknya mengikuti garis, misalnya, menunjukkan bahwa data tersebut adalah kandidat yang baik untuk latihan regresi linier.
+Visualisasi juga dapat membantu menentukan teknik pembelajaran mesin yang paling cocok untuk data. Sebuah scatterplot yang tampak mengikuti garis, misalnya, menunjukkan bahwa data tersebut adalah kandidat bagus untuk latihan regresi linier.
-Salah satu pustaka visualisasi data yang bekerja dengan baik di Jupyter notebook adalah [Matplotlib](https://matplotlib.org/) (yang juga Anda lihat dalam pelajaran sebelumnya).
+Salah satu pustaka visualisasi data yang bekerja baik di Jupyter notebook adalah [Matplotlib](https://matplotlib.org/) (yang juga Anda lihat di pelajaran sebelumnya).
-> Dapatkan lebih banyak pengalaman dengan visualisasi data dalam [tutorial ini](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott).
+> Dapatkan lebih banyak pengalaman dengan visualisasi data di [tutorial-tutorial ini](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott).
-## Latihan - Bereksperimen dengan Matplotlib
+## Latihan - bereksperimen dengan Matplotlib
-Cobalah membuat beberapa plot dasar untuk menampilkan dataframe baru yang baru saja Anda buat. Apa yang akan ditampilkan oleh plot garis dasar?
+Cobalah membuat beberapa plot dasar untuk menampilkan dataframe baru yang baru saja Anda buat. Apa yang akan ditampilkan plot garis dasar?
1. Impor Matplotlib di bagian atas file, di bawah impor Pandas:
@@ -165,7 +165,7 @@ Cobalah membuat beberapa plot dasar untuk menampilkan dataframe baru yang baru s
```
1. Jalankan ulang seluruh notebook untuk menyegarkan.
-1. Di bagian bawah notebook, tambahkan sel untuk memplot data sebagai kotak:
+1. Di bagian bawah notebook, tambahkan sel untuk membuat plot data sebagai box:
```python
price = new_pumpkins.Price
@@ -174,38 +174,113 @@ Cobalah membuat beberapa plot dasar untuk menampilkan dataframe baru yang baru s
plt.show()
```
- 
+ 
Apakah ini plot yang berguna? Apakah ada sesuatu yang mengejutkan Anda?
- Ini tidak terlalu berguna karena hanya menampilkan data Anda sebagai sebaran titik dalam bulan tertentu.
+ Ini tidak terlalu berguna karena hanya menampilkan data Anda sebagai titik-titik yang tersebar di bulan tertentu.
-### Buatlah Berguna
+### Membuatnya berguna
-Untuk mendapatkan grafik yang menampilkan data yang berguna, Anda biasanya perlu mengelompokkan data dengan cara tertentu. Mari coba membuat plot di mana sumbu y menunjukkan bulan dan data menunjukkan distribusi data.
+Untuk mendapatkan grafik yang menampilkan data berguna, biasanya Anda perlu mengelompokkan data. Mari coba buat plot di mana sumbu y menunjukkan bulan dan datanya menunjukkan distribusi data.
-1. Tambahkan sel untuk membuat grafik batang yang dikelompokkan:
+1. Tambahkan sel untuk membuat diagram batang kelompok:
```python
new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar')
plt.ylabel("Pumpkin Price")
```
- 
+ 
+
+ Ini adalah visualisasi data yang lebih berguna! Tampaknya menunjukkan bahwa harga tertinggi untuk labu terjadi pada bulan September dan Oktober. Apakah ini sesuai dengan harapan Anda? Mengapa atau mengapa tidak?
+
+## Latihan - bereksperimen dengan Seaborn
+
+Matplotlib sangat kuat, tetapi bisa membutuhkan banyak kode untuk menghasilkan grafik yang rapi. [Seaborn](https://seaborn.pydata.org/) adalah perpustakaan yang dibangun _di atas_ Matplotlib yang dirancang untuk visualisasi data statistik. Ia bekerja langsung dengan dataframe Pandas, menerapkan gaya default yang menarik, dan memungkinkan Anda membuat plot informatif dengan kode jauh lebih sedikit. Karena Seaborn mengembalikan objek Matplotlib, Anda masih bisa menggunakan semua yang sudah Anda ketahui tentang Matplotlib untuk menyempurnakan hasilnya.
+
+> Jika Anda belum memasang Seaborn, pasang dengan `pip install seaborn`.
+
+1. Impor Seaborn di bagian atas notebook, di bawah impor lainnya. Konvensinya diimpor sebagai `sns`:
+
+ ```python
+ import seaborn as sns
+ ```
+
+### Scatter plot untuk menampilkan hubungan
+
+Bagian besar dari eksplorasi data sebelum membangun model adalah mencari _hubungan_ antara variabel. [Scatter plot](https://en.wikipedia.org/wiki/Scatter_plot) adalah salah satu alat terbaik untuk ini: jika titik-titik tampak mengikuti garis, dua variabel tersebut mungkin berkorelasi, yang merupakan tanda baik bahwa model regresi linier bisa berhasil.
+
+1. Buat ulang scatter plot harga terhadap bulan dari sebelumnya, kali ini menggunakan [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) Seaborn (plot relasional), yang bekerja langsung dengan kolom dataframe Anda:
+
+ ```python
+ sns.relplot(x="Price", y="Month", data=new_pumpkins)
+ ```
+
+ 
+
+ Perhatikan bagaimana Anda melewatkan _nama kolom_ dan dataframe, dan Seaborn menangani label sumbu untuk Anda.
+
+2. Anda dapat beralih ke plot garis dengan melewatkan `kind="line"`. Seaborn bahkan menggambar pita bayangan yang menunjukkan interval kepercayaan di sekitar garis:
+
+ ```python
+ sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins)
+ ```
+
+ 
+
+ Data ini cukup berisik, jadi plot garis bukan pilihan paling jelas di sini — tetapi ini menunjukkan betapa mudahnya Anda mengubah jenis grafik di Seaborn.
+
+### Diagram batang untuk menunjukkan distribusi
+
+
+Sebelumnya Anda mengelompokkan data secara manual untuk membuat diagram batang dengan Matplotlib. Seaborn's [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) (plot kategorikal) dapat melakukan pengelompokan dan agregasi untuk Anda. Secara default `kind="bar"` menampilkan rata-rata dari setiap kategori bersama dengan garis hitam yang menunjukkan interval kepercayaan.
+
+1. Buat diagram batang harga rata-rata per bulan:
+
+ ```python
+ sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar")
+ ```
+
+ 
+
+ Ini mengonfirmasi apa yang Anda lihat dengan Matplotlib — harga mencapai puncak sekitar September dan Oktober — tetapi Seaborn juga memvisualisasikan seberapa banyak harga _bervariasi_ dalam setiap bulan.
+
+### Heatmap untuk menunjukkan korelasi
+
+Scatter plot membandingkan dua variabel sekaligus. Ketika Anda memiliki beberapa kolom numerik, sebuah [heatmap](https://en.wikipedia.org/wiki/Heat_map) memungkinkan Anda melihat kekuatan hubungan antar _setiap_ pasangan kolom sekaligus. Ini adalah cara umum untuk melihat fitur mana yang paling berkorelasi sebelum memilih yang akan digunakan dalam model (dan jenis grafik yang sama kemudian digunakan untuk menampilkan matriks kebingungan dalam klasifikasi).
+
+1. Bangun matriks korelasi dengan Pandas, lalu gambar menggunakan Seaborn's [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html). Opsi `annot=True` mencetak nilai korelasi pada setiap sel:
+
+ ```python
+ correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()
+ sns.heatmap(correlations, annot=True, cmap="coolwarm")
+ ```
+
+ 
+
+ Nilai yang mendekati `1` (atau `-1`) berarti kolom-kolom tersebut sangat berkorelasi secara _linear_. Perhatikan bagaimana `Low Price` dan `High Price` hampir berkorelasi sempurna. `Month`, di sisi lain, hanya menunjukkan korelasi linear yang lemah dengan harga — meskipun diagram batang di atas mengungkapkan puncak musiman yang jelas di September dan Oktober. Itu pelajaran penting: koefisien korelasi hanya mengukur hubungan _garis lurus_, jadi bisa melewatkan pola musiman atau pola non-linear lainnya. ✅ Mengapa berguna melihat baik heatmap *dan* grafik seperti diagram batang sebelum memutuskan kolom mana yang akan digunakan?
+
+### Matplotlib atau Seaborn?
+
+Kedua perpustakaan ini patut diketahui:
+
+- **Matplotlib** memberi Anda kontrol detail atas setiap elemen grafik dan merupakan dasar dari hampir semua perpustakaan plotting Python lainnya.
+- **Seaborn** menyediakan fungsi tingkat tinggi dan default menarik untuk grafik statistik, bekerja langsung dengan dataframe, dan seringkali lebih cepat untuk analisis data eksploratif.
- Ini adalah visualisasi data yang lebih berguna! Tampaknya menunjukkan bahwa harga tertinggi untuk labu terjadi pada bulan September dan Oktober. Apakah itu sesuai dengan ekspektasi Anda? Mengapa atau mengapa tidak?
+Alur kerja umum adalah menggunakan Seaborn untuk menjelajahi data dengan cepat, kemudian beralih ke Matplotlib ketika Anda perlu menyesuaikan detail.
---
## 🚀Tantangan
-Jelajahi berbagai jenis visualisasi yang ditawarkan oleh Matplotlib. Jenis mana yang paling sesuai untuk masalah regresi?
+Jelajahi berbagai jenis visualisasi yang ditawarkan Matplotlib dan Seaborn. Jenis mana yang paling tepat untuk masalah regresi?
-## [Kuis Pasca-Pelajaran](https://ff-quizzes.netlify.app/en/ml/)
+## [Kuis pasca kuliah](https://ff-quizzes.netlify.app/en/ml/)
## Tinjauan & Studi Mandiri
-Lihatlah berbagai cara untuk memvisualisasikan data. Buat daftar berbagai pustaka yang tersedia dan catat mana yang terbaik untuk jenis tugas tertentu, misalnya visualisasi 2D vs. visualisasi 3D. Apa yang Anda temukan?
+Lihat berbagai cara untuk memvisualisasikan data. Buatlah daftar berbagai perpustakaan yang tersedia dan catat mana yang terbaik untuk jenis tugas tertentu, misalnya visualisasi 2D vs. visualisasi 3D. Apa yang Anda temukan?
## Tugas
@@ -213,5 +288,7 @@ Lihatlah berbagai cara untuk memvisualisasikan data. Buat daftar berbagai pustak
---
-**Penafian**:
-Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk memberikan hasil yang akurat, harap diperhatikan bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang otoritatif. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini.
\ No newline at end of file
+
+**Penafian**:
+Dokumen ini telah diterjemahkan menggunakan layanan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk mencapai akurasi, harap diketahui bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang sah. Untuk informasi penting, disarankan menggunakan terjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini.
+
\ No newline at end of file
diff --git a/translations/id/2-Regression/2-Data/solution/notebook.ipynb b/translations/id/2-Regression/2-Data/solution/notebook.ipynb
index 70158c0e8..935f846b1 100644
--- a/translations/id/2-Regression/2-Data/solution/notebook.ipynb
+++ b/translations/id/2-Regression/2-Data/solution/notebook.ipynb
@@ -3,7 +3,9 @@
{
"cell_type": "markdown",
"metadata": {},
- "source": []
+ "source": [
+ "## Regresi Linear untuk Labu - Pelajaran 2\n"
+ ]
},
{
"cell_type": "code",
@@ -220,6 +222,7 @@
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
"pumpkins = pd.read_csv('../../data/US-pumpkins.csv')\n",
"\n",
"pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]\n",
@@ -383,18 +386,78 @@
"plt.ylabel(\"Pumpkin Price\")"
]
},
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Visualisasi dengan Seaborn\n",
+ "\n",
+ "[Seaborn](https://seaborn.pydata.org/) dibangun di atas Matplotlib dan bekerja langsung dengan dataframe, membuatnya cepat untuk membuat plot statistik yang menarik dengan sangat sedikit kode.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Diagram sebar untuk menunjukkan hubungan\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", kind=\"line\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Diagram batang untuk menunjukkan distribusi\n"
+ ]
+ },
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
- "source": []
+ "source": [
+ "sns.catplot(x=\"Month\", y=\"Price\", data=new_pumpkins, kind=\"bar\")"
+ ]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "\n---\n\n**Penafian**: \nDokumen ini telah diterjemahkan menggunakan layanan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk memberikan hasil yang akurat, harap diperhatikan bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang berwenang. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa terjemahan manusia profesional. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini.\n"
+ "### Heatmaps untuk menampilkan korelasi\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()\n",
+ "sns.heatmap(correlations, annot=True, cmap=\"coolwarm\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "---\n\n\n**Penafian**:\nDokumen ini telah diterjemahkan menggunakan layanan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk mencapai akurasi, harap diketahui bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang sah. Untuk informasi penting, disarankan menggunakan terjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini.\n\n"
]
}
],
@@ -424,13 +487,7 @@
"hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d"
}
},
- "orig_nbformat": 2,
- "coopTranslator": {
- "original_hash": "95726f0b8283628d5356a4f8eb8b4b76",
- "translation_date": "2025-09-04T07:11:42+00:00",
- "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
- "language_code": "id"
- }
+ "orig_nbformat": 2
},
"nbformat": 4,
"nbformat_minor": 2
diff --git a/translations/id/8-Reinforcement/1-QLearning/README.md b/translations/id/8-Reinforcement/1-QLearning/README.md
index d8133430f..b16634f9c 100644
--- a/translations/id/8-Reinforcement/1-QLearning/README.md
+++ b/translations/id/8-Reinforcement/1-QLearning/README.md
@@ -1,47 +1,47 @@
# Pengantar Pembelajaran Penguatan dan Q-Learning
-
+
> Sketchnote oleh [Tomomi Imura](https://www.twitter.com/girlie_mac)
-Pembelajaran penguatan melibatkan tiga konsep penting: agen, beberapa keadaan, dan satu set tindakan untuk setiap keadaan. Dengan melakukan suatu tindakan dalam keadaan tertentu, agen akan mendapatkan hadiah. Bayangkan permainan komputer Super Mario. Anda adalah Mario, berada di level permainan, berdiri di tepi jurang. Di atas Anda ada sebuah koin. Anda sebagai Mario, berada di level permainan, di posisi tertentu ... itulah keadaan Anda. Melangkah satu langkah ke kanan (tindakan) akan membuat Anda jatuh ke jurang, dan itu akan memberikan skor numerik rendah. Namun, menekan tombol lompat akan membuat Anda mendapatkan poin dan tetap hidup. Itu adalah hasil positif dan seharusnya memberikan skor numerik positif.
+Pembelajaran penguatan melibatkan tiga konsep penting: agen, beberapa keadaan, dan seperangkat tindakan per keadaan. Dengan mengeksekusi sebuah tindakan di keadaan tertentu, agen diberikan hadiah. Bayangkan lagi permainan komputer Super Mario. Anda adalah Mario, Anda berada di sebuah level permainan, berdiri di tepi jurang. Di atas Anda ada sebuah koin. Anda sebagai Mario, dalam level permainan, pada posisi tertentu ... itulah keadaan Anda. Melangkah satu langkah ke kanan (sebuah tindakan) akan membuat Anda jatuh dari tepi, dan itu akan memberikan skor numerik rendah. Namun, menekan tombol lompat akan membuat Anda mendapatkan satu poin dan Anda akan tetap hidup. Itu adalah hasil positif dan harus memberikan skor numerik positif.
-Dengan menggunakan pembelajaran penguatan dan simulator (permainan), Anda dapat belajar cara memainkan permainan untuk memaksimalkan hadiah, yaitu tetap hidup dan mendapatkan sebanyak mungkin poin.
+Dengan menggunakan pembelajaran penguatan dan sebuah simulator (permainan), Anda bisa belajar cara bermain permainan untuk memaksimalkan hadiah yaitu tetap hidup dan mengumpulkan poin sebanyak mungkin.
[](https://www.youtube.com/watch?v=lDq_en8RNOo)
-> 🎥 Klik gambar di atas untuk mendengar Dmitry membahas Pembelajaran Penguatan
+> 🎥 Klik gambar di atas untuk mendengarkan Dmitry membahas Pembelajaran Penguatan
-## [Kuis sebelum pelajaran](https://ff-quizzes.netlify.app/en/ml/)
+## [Kuis pra-perkuliahan](https://ff-quizzes.netlify.app/en/ml/)
## Prasyarat dan Pengaturan
-Dalam pelajaran ini, kita akan bereksperimen dengan beberapa kode dalam Python. Anda harus dapat menjalankan kode Jupyter Notebook dari pelajaran ini, baik di komputer Anda atau di cloud.
+Dalam pelajaran ini, kita akan bereksperimen dengan beberapa kode dalam Python. Anda harus bisa menjalankan kode Jupyter Notebook dari pelajaran ini, baik di komputer Anda atau di cloud.
Anda dapat membuka [notebook pelajaran](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) dan mengikuti pelajaran ini untuk membangun.
-> **Catatan:** Jika Anda membuka kode ini dari cloud, Anda juga perlu mengambil file [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), yang digunakan dalam kode notebook. Tambahkan file tersebut ke direktori yang sama dengan notebook.
+> **Catatan:** Jika Anda membuka kode ini dari cloud, Anda juga perlu mengambil file [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), yang digunakan dalam kode notebook. Tambahkan ke direktori yang sama dengan notebook.
## Pengantar
-Dalam pelajaran ini, kita akan menjelajahi dunia **[Peter dan Serigala](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)**, terinspirasi oleh dongeng musikal karya komposer Rusia, [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev). Kita akan menggunakan **Pembelajaran Penguatan** untuk membiarkan Peter menjelajahi lingkungannya, mengumpulkan apel yang lezat, dan menghindari bertemu dengan serigala.
+Dalam pelajaran ini, kita akan menjelajahi dunia **[Peter dan Serigala](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)**, terinspirasi oleh dongeng musikal dari komposer Rusia, [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev). Kita akan menggunakan **Pembelajaran Penguatan** untuk membiarkan Peter menjelajahi lingkungannya, mengumpulkan apel lezat dan menghindari bertemu dengan serigala.
-**Pembelajaran Penguatan** (RL) adalah teknik pembelajaran yang memungkinkan kita mempelajari perilaku optimal dari seorang **agen** dalam suatu **lingkungan** dengan menjalankan banyak eksperimen. Agen dalam lingkungan ini harus memiliki **tujuan**, yang didefinisikan oleh **fungsi hadiah**.
+**Pembelajaran Penguatan** (RL) adalah teknik pembelajaran yang memungkinkan kita belajar perilaku optimal dari sebuah **agen** dalam beberapa **lingkungan** dengan menjalankan banyak eksperimen. Agen dalam lingkungan ini harus memiliki beberapa **tujuan**, yang didefinisikan oleh **fungsi hadiah**.
## Lingkungan
-Untuk kesederhanaan, mari kita anggap dunia Peter sebagai papan persegi berukuran `lebar` x `tinggi`, seperti ini:
+Untuk kesederhanaan, mari kita anggap dunia Peter sebagai papan persegi berukuran `width` x `height`, seperti ini:
-
+
-Setiap sel di papan ini dapat berupa:
+Setiap sel di papan ini bisa berupa:
-* **tanah**, tempat Peter dan makhluk lain dapat berjalan.
-* **air**, tempat Anda jelas tidak bisa berjalan.
-* **pohon** atau **rumput**, tempat Anda bisa beristirahat.
-* **apel**, yang mewakili sesuatu yang Peter senang temukan untuk makanannya.
-* **serigala**, yang berbahaya dan harus dihindari.
+* **tanah**, tempat Peter dan makhluk lain bisa berjalan.
+* **air**, yang jelas Anda tidak bisa berjalan di atasnya.
+* sebuah **pohon** atau **rumput**, tempat Anda bisa beristirahat.
+* sebuah **apel**, yang mewakili sesuatu yang akan menyenangkan Peter untuk ditemukan agar bisa memberi makan dirinya.
+* sebuah **serigala**, yang berbahaya dan harus dihindari.
-Ada modul Python terpisah, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), yang berisi kode untuk bekerja dengan lingkungan ini. Karena kode ini tidak penting untuk memahami konsep kita, kita akan mengimpor modul tersebut dan menggunakannya untuk membuat papan contoh (kode blok 1):
+Ada modul Python terpisah, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), yang berisi kode untuk bekerja dengan lingkungan ini. Karena kode ini tidak penting untuk memahami konsep kita, kita akan mengimpor modul tersebut dan menggunakannya untuk membuat papan sampel (blok kode 1):
```python
from rlboard import *
@@ -56,59 +56,59 @@ Kode ini harus mencetak gambar lingkungan yang mirip dengan yang di atas.
## Tindakan dan kebijakan
-Dalam contoh kita, tujuan Peter adalah menemukan apel, sambil menghindari serigala dan rintangan lainnya. Untuk melakukan ini, dia pada dasarnya dapat berjalan-jalan sampai menemukan apel.
+Dalam contoh kita, tujuan Peter adalah bisa menemukan apel, sambil menghindari serigala dan rintangan lainnya. Untuk melakukan ini, dia pada dasarnya bisa berjalan sampai menemukan apel.
-Oleh karena itu, pada posisi mana pun, dia dapat memilih salah satu dari tindakan berikut: atas, bawah, kiri, dan kanan.
+Oleh karena itu, di posisi manapun, dia dapat memilih salah satu dari tindakan berikut: ke atas, ke bawah, ke kiri dan ke kanan.
-Kita akan mendefinisikan tindakan-tindakan tersebut sebagai kamus, dan memetakan mereka ke pasangan perubahan koordinat yang sesuai. Misalnya, bergerak ke kanan (`R`) akan sesuai dengan pasangan `(1,0)`. (kode blok 2):
+Kita akan mendefinisikan tindakan-tindakan tersebut sebagai sebuah kamus, dan memetakannya ke pasangan perubahan koordinat yang sesuai. Misalnya, bergerak ke kanan (`R`) akan sesuai dengan pasangan `(1,0)`. (blok kode 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()) }
```
-Secara keseluruhan, strategi dan tujuan dari skenario ini adalah sebagai berikut:
+Untuk menyimpulkan, strategi dan tujuan skenario ini adalah sebagai berikut:
-- **Strategi**, dari agen kita (Peter) didefinisikan oleh apa yang disebut **kebijakan**. Kebijakan adalah fungsi yang mengembalikan tindakan pada keadaan tertentu. Dalam kasus kita, keadaan masalah diwakili oleh papan, termasuk posisi pemain saat ini.
+- **Strategi**, agen kita (Peter) didefinisikan oleh yang disebut **kebijakan**. Kebijakan adalah fungsi yang mengembalikan tindakan pada keadaan tertentu. Dalam kasus kita, keadaan masalah direpresentasikan oleh papan, termasuk posisi pemain saat ini.
-- **Tujuan**, dari pembelajaran penguatan adalah akhirnya mempelajari kebijakan yang baik yang memungkinkan kita menyelesaikan masalah secara efisien. Namun, sebagai dasar, mari kita pertimbangkan kebijakan paling sederhana yang disebut **jalan acak**.
+- **Tujuan**, pembelajaran penguatan adalah pada akhirnya mempelajari kebijakan yang baik yang memungkinkan kita menyelesaikan masalah secara efisien. Namun, sebagai baseline, mari kita pertimbangkan kebijakan paling sederhana yang disebut **random walk**.
-## Jalan acak
+## Random walk
-Mari kita selesaikan masalah kita terlebih dahulu dengan menerapkan strategi jalan acak. Dengan jalan acak, kita akan secara acak memilih tindakan berikutnya dari tindakan yang diizinkan, sampai kita mencapai apel (kode blok 3).
+Mari kita selesaikan masalah kita dengan menerapkan strategi random walk. Dengan random walk, kita akan memilih tindakan berikutnya secara acak dari tindakan yang diperbolehkan, sampai kita mencapai apel (blok kode 3).
-1. Terapkan jalan acak dengan kode di bawah ini:
+1. Implementasikan random walk dengan kode berikut:
```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
+ n = 0 # jumlah langkah
+ # atur posisi awal
if start_position:
m.human = start_position
else:
m.random_start()
while True:
if m.at() == Board.Cell.apple:
- return n # success!
+ return n # berhasil!
if m.at() in [Board.Cell.wolf, Board.Cell.water]:
- return -1 # eaten by wolf or drowned
+ return -1 # dimakan serigala atau tenggelam
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
+ m.move(a) # lakukan perpindahan sebenarnya
break
n+=1
walk(m,random_policy)
```
- Panggilan ke `walk` harus mengembalikan panjang jalur yang sesuai, yang dapat bervariasi dari satu percobaan ke percobaan lainnya.
+ Panggilan ke `walk` harus mengembalikan panjang jalur yang sesuai, yang bisa berbeda dari satu percobaan ke percobaan lain.
-1. Jalankan eksperimen jalan beberapa kali (misalnya, 100 kali), dan cetak statistik yang dihasilkan (kode blok 4):
+1. Jalankan eksperimen walk beberapa kali (misalnya, 100), dan cetak statistik hasilnya (blok kode 4):
```python
def print_statistics(policy):
@@ -125,17 +125,17 @@ Mari kita selesaikan masalah kita terlebih dahulu dengan menerapkan strategi jal
print_statistics(random_policy)
```
- Perhatikan bahwa rata-rata panjang jalur adalah sekitar 30-40 langkah, yang cukup banyak, mengingat jarak rata-rata ke apel terdekat adalah sekitar 5-6 langkah.
+ Perhatikan bahwa panjang rata-rata jalur sekitar 30-40 langkah, yang cukup banyak, mengingat jarak rata-rata ke apel terdekat sekitar 5-6 langkah.
- Anda juga dapat melihat bagaimana gerakan Peter terlihat selama jalan acak:
+ Anda juga dapat melihat bagaimana gerakan Peter selama random walk:
- 
+ 
## Fungsi hadiah
-Untuk membuat kebijakan kita lebih cerdas, kita perlu memahami langkah mana yang "lebih baik" daripada yang lain. Untuk melakukan ini, kita perlu mendefinisikan tujuan kita.
+Untuk membuat kebijakan kita lebih cerdas, kita perlu memahami gerakan mana yang "lebih baik" daripada yang lain. Untuk melakukan ini, kita perlu mendefinisikan tujuan kita.
-Tujuan dapat didefinisikan dalam bentuk **fungsi hadiah**, yang akan mengembalikan nilai skor untuk setiap keadaan. Semakin tinggi angkanya, semakin baik fungsi hadiahnya. (kode blok 5)
+Tujuan dapat didefinisikan dalam bentuk **fungsi hadiah**, yang akan mengembalikan nilai skor untuk setiap keadaan. Semakin tinggi angkanya, semakin baik fungsi hadiah tersebut. (blok kode 5)
```python
move_reward = -0.1
@@ -154,52 +154,175 @@ def reward(m,pos=None):
return move_reward
```
-Hal menarik tentang fungsi hadiah adalah bahwa dalam banyak kasus, *kita hanya diberikan hadiah yang substansial di akhir permainan*. Ini berarti algoritma kita harus mengingat langkah-langkah "baik" yang mengarah pada hadiah positif di akhir, dan meningkatkan kepentingannya. Demikian pula, semua langkah yang mengarah pada hasil buruk harus dihindari.
+Hal menarik tentang fungsi hadiah adalah bahwa dalam kebanyakan kasus, *kita hanya diberikan hadiah substansial pada akhir permainan*. Ini berarti algoritma kita harus somehow mengingat langkah "baik" yang mengarah pada hadiah positif di akhir, dan meningkatkan pentingnya. Demikian pula, semua gerakan yang mengarah ke hasil buruk harus dihindari.
## Q-Learning
-Algoritma yang akan kita bahas di sini disebut **Q-Learning**. Dalam algoritma ini, kebijakan didefinisikan oleh fungsi (atau struktur data) yang disebut **Q-Table**. Q-Table mencatat "kebaikan" dari setiap tindakan dalam keadaan tertentu.
+Algoritma yang akan kita bahas di sini disebut **Q-Learning**. Dalam algoritma ini, kebijakan didefinisikan oleh fungsi (atau struktur data) yang disebut **Q-Table**. Ini merekam "kebaikan" dari masing-masing tindakan dalam suatu keadaan tertentu.
-Disebut Q-Table karena sering kali lebih nyaman untuk merepresentasikannya sebagai tabel, atau array multi-dimensi. Karena papan kita memiliki dimensi `lebar` x `tinggi`, kita dapat merepresentasikan Q-Table menggunakan array numpy dengan bentuk `lebar` x `tinggi` x `len(actions)`: (kode blok 6)
+Disebut Q-Table karena seringkali mudah merepresentasikannya sebagai tabel, atau array multi-dimensi. Karena papan kita memiliki dimensi `width` x `height`, kita dapat merepresentasikan Q-Table menggunakan array numpy dengan bentuk `width` x `height` x `len(actions)`: (blok kode 6)
```python
Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions)
```
-Perhatikan bahwa kita menginisialisasi semua nilai Q-Table dengan nilai yang sama, dalam kasus kita - 0.25. Ini sesuai dengan kebijakan "jalan acak", karena semua langkah dalam setiap keadaan sama baiknya. Kita dapat meneruskan Q-Table ke fungsi `plot` untuk memvisualisasikan tabel di papan: `m.plot(Q)`.
+Perhatikan bahwa kita menginisialisasi semua nilai Q-Table dengan nilai yang sama, dalam kasus kita - 0.25. Ini sesuai dengan kebijakan "random walk", karena semua gerakan pada setiap keadaan memiliki nilai sama. Kita dapat memberikan Q-Table ke fungsi `plot` untuk memvisualisasikan tabel di papan: `m.plot(Q)`.
-
+
-Di tengah setiap sel terdapat "panah" yang menunjukkan arah gerakan yang disukai. Karena semua arah sama, sebuah titik ditampilkan.
+Di tengah setiap sel terdapat "panah" yang menunjukkan arah gerak yang diinginkan. Karena semua arah sama, sebuah titik ditampilkan.
-Sekarang kita perlu menjalankan simulasi, menjelajahi lingkungan kita, dan mempelajari distribusi nilai Q-Table yang lebih baik, yang akan memungkinkan kita menemukan jalur ke apel jauh lebih cepat.
+Sekarang kita perlu menjalankan simulasi, menjelajahi lingkungan kita, dan mempelajari distribusi nilai Q-Table yang lebih baik, yang akan memungkinkan kita menemukan jalur ke apel lebih cepat.
-## Inti dari Q-Learning: Persamaan Bellman
+## Inti Q-Learning: Persamaan Bellman
-Setelah kita mulai bergerak, setiap tindakan akan memiliki hadiah yang sesuai, yaitu kita secara teoritis dapat memilih tindakan berikutnya berdasarkan hadiah langsung tertinggi. Namun, dalam sebagian besar keadaan, langkah tersebut tidak akan mencapai tujuan kita untuk mencapai apel, sehingga kita tidak dapat langsung memutuskan arah mana yang lebih baik.
+Setelah kita mulai bergerak, setiap aksi akan memiliki hadiah yang sesuai, yaitu secara teoritis kita dapat memilih aksi berikutnya berdasarkan hadiah langsung tertinggi. Namun, di kebanyakan keadaan, gerakan itu tidak akan mencapai tujuan kita untuk mendapatkan apel, sehingga kita tidak bisa segera memutuskan arah mana yang lebih baik.
-> Ingatlah bahwa bukan hasil langsung yang penting, melainkan hasil akhir, yang akan kita peroleh di akhir simulasi.
+> Ingatlah bahwa hasil langsung bukanlah yang penting, melainkan hasil akhir yang akan kita peroleh di akhir simulasi.
-Untuk memperhitungkan hadiah yang tertunda ini, kita perlu menggunakan prinsip **[pemrograman dinamis](https://en.wikipedia.org/wiki/Dynamic_programming)**, yang memungkinkan kita memikirkan masalah kita secara rekursif.
+Untuk memperhitungkan hadiah yang tertunda ini, kita perlu menggunakan prinsip **[pemrograman dinamis](https://en.wikipedia.org/wiki/Dynamic_programming)**, yang memungkinkan kita berpikir secara rekursif tentang masalah kita.
-Misalkan kita sekarang berada di keadaan *s*, dan kita ingin bergerak ke keadaan berikutnya *s'*. Dengan melakukan itu, kita akan menerima hadiah langsung *r(s,a)*, yang didefinisikan oleh fungsi hadiah, ditambah beberapa hadiah di masa depan. Jika kita menganggap bahwa Q-Table kita secara akurat mencerminkan "daya tarik" dari setiap tindakan, maka pada keadaan *s'* kita akan memilih tindakan *a* yang sesuai dengan nilai maksimum *Q(s',a')*. Dengan demikian, hadiah masa depan terbaik yang bisa kita dapatkan pada keadaan *s* akan didefinisikan sebagai `max`
+Misal kita sekarang berada di keadaan *s*, dan ingin pindah ke keadaan berikutnya *s'*. Dengan melakukan itu, kita akan menerima hadiah langsung *r(s,a)*, yang didefinisikan oleh fungsi hadiah, plus beberapa hadiah di masa depan. Jika kita menganggap Q-Table kita mencerminkan "daya tarik" dari setiap tindakan dengan benar, maka di keadaan *s'* kita akan memilih sebuah tindakan *a* yang sesuai dengan nilai maksimum dari *Q(s',a')*. Jadi, hadiah masa depan terbaik yang bisa kita dapatkan di keadaan *s* didefinisikan sebagai `max`a'*Q(s',a')* (maksimum di sini dihitung untuk semua tindakan *a'* yang mungkin di keadaan *s'*).
-Pembelajaran dapat dirangkum sebagai berikut:
+Ini memberikan **rumus Bellman** untuk menghitung nilai Q-Table di keadaan *s*, dengan tindakan *a*:
-- **Rata-rata panjang jalur meningkat**. Pada awalnya, rata-rata panjang jalur meningkat. Hal ini kemungkinan disebabkan oleh fakta bahwa ketika kita tidak tahu apa-apa tentang lingkungan, kita cenderung terjebak di keadaan buruk, seperti air atau serigala. Saat kita belajar lebih banyak dan mulai menggunakan pengetahuan ini, kita dapat menjelajahi lingkungan lebih lama, tetapi kita masih belum tahu dengan baik di mana apel berada.
+
-- **Panjang jalur menurun seiring dengan pembelajaran**. Setelah kita belajar cukup banyak, menjadi lebih mudah bagi agen untuk mencapai tujuan, dan panjang jalur mulai menurun. Namun, kita masih terbuka untuk eksplorasi, sehingga kita sering menyimpang dari jalur terbaik dan mencoba opsi baru, yang membuat jalur lebih panjang dari yang optimal.
+Di sini γ adalah yang disebut **faktor diskon** yang menentukan seberapa besar Anda harus lebih mengutamakan hadiah sekarang dibanding hadiah di masa depan dan sebaliknya.
-- **Panjang meningkat secara tiba-tiba**. Apa yang juga kita amati pada grafik ini adalah bahwa pada suatu titik, panjang jalur meningkat secara tiba-tiba. Hal ini menunjukkan sifat stokastik dari proses tersebut, dan bahwa kita dapat pada suatu saat "merusak" koefisien Q-Table dengan menimpanya dengan nilai-nilai baru. Idealnya, hal ini harus diminimalkan dengan menurunkan tingkat pembelajaran (misalnya, menjelang akhir pelatihan, kita hanya menyesuaikan nilai Q-Table dengan nilai kecil).
+## Algoritma Pembelajaran
-Secara keseluruhan, penting untuk diingat bahwa keberhasilan dan kualitas proses pembelajaran sangat bergantung pada parameter seperti tingkat pembelajaran, penurunan tingkat pembelajaran, dan faktor diskon. Parameter-parameter ini sering disebut sebagai **hiperparameter**, untuk membedakannya dari **parameter**, yang kita optimalkan selama pelatihan (misalnya, koefisien Q-Table). Proses menemukan nilai hiperparameter terbaik disebut **optimasi hiperparameter**, dan topik ini layak untuk dibahas secara terpisah.
+Berdasarkan persamaan di atas, kita sekarang bisa menulis pseudo-code untuk algoritma pembelajaran kita:
-## [Kuis setelah kuliah](https://ff-quizzes.netlify.app/en/ml/)
+* Inisialisasi Q-Table Q dengan angka sama untuk semua keadaan dan tindakan
+* Tetapkan laju pembelajaran α ← 1
+* Ulangi simulasi berkali-kali
+ 1. Mulai dari posisi acak
+ 1. Ulangi
+ 1. Pilih tindakan *a* di keadaan *s*
+ 2. Eksekusi tindakan dengan pindah ke keadaan baru *s'*
+ 3. Jika kita menemui kondisi akhir permainan, atau total hadiah terlalu kecil - keluar dari simulasi
+ 4. Hitung hadiah *r* di keadaan baru
+ 5. Update Fungsi Q sesuai persamaan Bellman: *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ maxa'Q(s',a'))*
+ 6. *s* ← *s'*
+ 7. Update total hadiah dan turunkan α.
+
+## Eksploitasi vs. eksplorasi
+
+Dalam algoritma di atas, kita tidak menentukan bagaimana tepatnya kita memilih tindakan pada langkah 2.1. Jika kita memilih tindakan secara acak, kita akan secara acak **mengeksplorasi** lingkungan, dan kita juga cukup mungkin mati sering serta menjelajahi area yang biasanya tidak kita kunjungi. Pendekatan alternatif adalah **mengeksploitasi** nilai-nilai Q-Table yang sudah kita ketahui, dan memilih tindakan terbaik (dengan nilai Q-Table lebih tinggi) di keadaan *s*. Namun, ini akan mencegah kita mengeksplorasi keadaan lain, dan kemungkinan kita tidak akan menemukan solusi optimal.
+
+Oleh karena itu, pendekatan terbaik adalah menyeimbangkan eksplorasi dan eksploitasi. Ini dapat dilakukan dengan memilih tindakan di keadaan *s* dengan probabilitas yang proporsional terhadap nilai-nilai di Q-Table. Pada awalnya, ketika nilai Q-Table semua sama, ini akan sama dengan pilihan acak, tapi seiring kita belajar lebih banyak tentang lingkungan, kita lebih cenderung mengikuti rute optimal sekaligus membiarkan agen memilih jalur yang belum dijelajahi sesekali.
+
+## Implementasi Python
+
+Sekarang kita siap mengimplementasikan algoritma pembelajaran. Sebelum itu, kita juga perlu fungsi yang akan mengubah angka-angka sembarang dalam Q-Table menjadi vektor probabilitas untuk tindakan yang sesuai.
+
+1. Buat fungsi `probs()`:
+
+ ```python
+ def probs(v,eps=1e-4):
+ v = v-v.min()+eps
+ v = v/v.sum()
+ return v
+ ```
+
+ Kita menambahkan beberapa `eps` ke vektor asli agar terhindar dari pembagian dengan 0 pada kasus awal, ketika semua komponen vektor identik.
+
+Jalankan algoritma pembelajaran melalui 5000 eksperimen, yang juga disebut **epoch**: (blok kode 8)
+```python
+ for epoch in range(5000):
+
+ # Pilih titik awal
+ m.random_start()
+
+ # Mulai perjalanan
+ n=0
+ cum_reward = 0
+ while True:
+ x,y = m.human
+ v = probs(Q[x,y])
+ a = random.choices(list(actions),weights=v)[0]
+ dpos = actions[a]
+ m.move(dpos,check_correctness=False) # kami mengizinkan pemain bergerak di luar papan, yang mengakhiri episode
+ r = reward(m)
+ cum_reward += r
+ if r==end_reward or cum_reward < -1000:
+ lpath.append(n)
+ break
+ alpha = np.exp(-n / 10e5)
+ gamma = 0.5
+ ai = action_idx[a]
+ Q[x,y,ai] = (1 - alpha) * Q[x,y,ai] + alpha * (r + gamma * Q[x+dpos[0], y+dpos[1]].max())
+ n+=1
+```
+
+Setelah menjalankan algoritma ini, Q-Table harus diperbarui dengan nilai yang mendefinisikan daya tarik tindakan berbeda di setiap langkah. Kita bisa mencoba memvisualisasikan Q-Table dengan menggambar vektor di setiap sel yang mengarah ke arah gerak yang diinginkan. Demi kesederhanaan, kita gambar lingkaran kecil sebagai pengganti ujung panah.
+
+
+
+## Memeriksa kebijakan
+
+Karena Q-Table mencantumkan "daya tarik" setiap tindakan di setiap keadaan, cukup mudah menggunakannya untuk mendefinisikan navigasi efisien di dunia kita. Dalam kasus paling sederhana, kita bisa memilih tindakan yang sesuai dengan nilai tertinggi di Q-Table: (blok kode 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)
+```
+
+
+> Jika Anda mencoba kode di atas beberapa kali, Anda mungkin memperhatikan bahwa terkadang kode tersebut "terhenti", dan Anda perlu menekan tombol STOP di notebook untuk menghentikannya. Ini terjadi karena mungkin ada situasi di mana dua status "mengarah" satu sama lain dalam hal nilai Q optimal, sehingga agen berakhir bergerak antara status tersebut tanpa henti.
+
+## 🚀Tantangan
+
+> **Tugas 1:** Modifikasi fungsi `walk` untuk membatasi panjang jalur maksimum dengan sejumlah langkah tertentu (misalnya, 100), dan perhatikan kode di atas mengembalikan nilai ini dari waktu ke waktu.
+
+> **Tugas 2:** Modifikasi fungsi `walk` sehingga tidak kembali ke tempat-tempat yang sudah pernah dikunjunginya sebelumnya. Ini akan mencegah `walk` berputar tanpa henti, namun, agen masih bisa terjebak di suatu lokasi yang tidak bisa ia tinggalkan.
+
+## Navigasi
+
+Kebijakan navigasi yang lebih baik adalah yang kita gunakan selama pelatihan, yaitu menggabungkan eksploitasi dan eksplorasi. Dalam kebijakan ini, kita akan memilih setiap tindakan dengan probabilitas tertentu, berbanding lurus dengan nilai-nilai dalam Q-Table. Strategi ini mungkin masih menyebabkan agen kembali ke posisi yang sudah dijelajahi, tetapi, seperti yang Anda lihat dari kode di bawah ini, hasilnya adalah jalur rata-rata yang sangat pendek ke lokasi yang diinginkan (ingat bahwa `print_statistics` menjalankan simulasi 100 kali): (blok kode 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)
+```
+
+Setelah menjalankan kode ini, Anda seharusnya mendapatkan panjang jalur rata-rata yang jauh lebih kecil dari sebelumnya, dalam rentang 3-6.
+
+## Menyelidiki proses pembelajaran
+
+Seperti yang telah kami sebutkan, proses pembelajaran adalah keseimbangan antara eksplorasi dan eksploitasi pengetahuan yang didapat tentang struktur ruang masalah. Kami telah melihat bahwa hasil pembelajaran (kemampuan untuk membantu agen menemukan jalur pendek ke tujuan) telah meningkat, tetapi juga menarik untuk mengamati bagaimana panjang jalur rata-rata berperilaku selama proses pembelajaran:
+
+
+
+Pembelajaran ini dapat dirangkum sebagai berikut:
+
+- **Panjang jalur rata-rata meningkat**. Apa yang kita lihat di sini adalah pertama-tama, panjang jalur rata-rata meningkat. Ini mungkin disebabkan oleh fakta bahwa ketika kita tidak tahu apa pun tentang lingkungan, kita cenderung terjebak di status buruk, air atau serigala. Saat kita belajar lebih banyak dan mulai menggunakan pengetahuan ini, kita dapat menjelajahi lingkungan lebih lama, tetapi kita masih belum tahu dengan baik di mana letak apel.
+
+- **Panjang jalur menurun, seiring kita mempelajari lebih banyak.** Setelah kita belajar cukup banyak, menjadi lebih mudah bagi agen mencapai tujuan, dan panjang jalur mulai menurun. Namun, kita masih terbuka untuk eksplorasi, jadi kita sering menyimpang dari jalur terbaik, dan menjelajahi opsi baru, membuat jalur lebih panjang dari yang optimal.
+
+- **Panjang meningkat secara tiba-tiba.** Yang juga kami amati pada grafik ini adalah bahwa pada titik tertentu, panjang tiba-tiba meningkat. Ini menunjukkan sifat stokastik dari proses tersebut, dan bahwa kita dapat pada suatu titik "merusak" koefisien dalam Q-Table dengan menimpanya dengan nilai baru. Hal ini idealnya harus diminimalkan dengan mengurangi laju pembelajaran (misalnya, menjelang akhir pelatihan, kita hanya menyesuaikan nilai Q-Table dengan nilai kecil).
+
+Secara keseluruhan, penting untuk diingat bahwa keberhasilan dan kualitas proses pembelajaran sangat bergantung pada parameter, seperti laju pembelajaran, penurunan laju pembelajaran, dan faktor diskonto. Parameter tersebut sering disebut **hiperparameter**, untuk membedakannya dari **parameter**, yang kita optimalkan selama pelatihan (misalnya, koefisien Q-Table). Proses menemukan nilai hiperparameter terbaik disebut **optimasi hiperparameter**, dan ini layak menjadi topik terpisah.
+
+## [Kuis pasca kuliah](https://ff-quizzes.netlify.app/en/ml/)
## Tugas
[Dunia yang Lebih Realistis](assignment.md)
---
-**Penafian**:
-Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berusaha untuk memberikan hasil yang akurat, harap diperhatikan bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang otoritatif. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan manusia profesional. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini.
\ No newline at end of file
+
+**Penafian**:
+Dokumen ini telah diterjemahkan menggunakan layanan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk mencapai akurasi, harap diketahui bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang sah. Untuk informasi penting, disarankan menggunakan terjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini.
+
\ No newline at end of file
diff --git a/translations/id/8-Reinforcement/2-Gym/README.md b/translations/id/8-Reinforcement/2-Gym/README.md
index 0760019b7..316e1cec3 100644
--- a/translations/id/8-Reinforcement/2-Gym/README.md
+++ b/translations/id/8-Reinforcement/2-Gym/README.md
@@ -1,14 +1,34 @@
+# CartPole Skating
+
+Masalah yang telah kita selesaikan dalam pelajaran sebelumnya mungkin tampak seperti masalah mainan, tidak benar-benar berlaku untuk skenario kehidupan nyata. Ini bukanlah kasusnya, karena banyak masalah dunia nyata juga berbagi skenario ini - termasuk bermain Catur atau Go. Mereka serupa, karena kita juga memiliki papan dengan aturan tertentu dan **state diskrit**.
+
+## [Kuis Pra-lecture](https://ff-quizzes.netlify.app/en/ml/)
+
+## Pendahuluan
+
+Dalam pelajaran ini kita akan menerapkan prinsip yang sama dari Q-Learning untuk sebuah masalah dengan **state kontinu**, yaitu state yang diberikan oleh satu atau lebih angka riil. Kita akan menangani masalah berikut:
+
+> **Masalah**: Jika Peter ingin melarikan diri dari serigala, ia harus bisa bergerak lebih cepat. Kita akan melihat bagaimana Peter dapat belajar bermain skating, khususnya, menjaga keseimbangan, menggunakan Q-Learning.
+
+
+
+> Peter dan teman-temannya menjadi kreatif untuk melarikan diri dari serigala! Gambar oleh [Jen Looper](https://twitter.com/jenlooper)
+
+Kita akan menggunakan versi sederhana dari keseimbangan yang dikenal sebagai masalah **CartPole**. Dalam dunia cartpole, kita memiliki sebuah slider horizontal yang dapat bergerak ke kiri atau kanan, dan tujuannya adalah menyeimbangkan tiang vertikal di atas slider.
+
+
+
## Prasyarat
-Dalam pelajaran ini, kita akan menggunakan pustaka bernama **OpenAI Gym** untuk mensimulasikan berbagai **lingkungan**. Anda dapat menjalankan kode pelajaran ini secara lokal (misalnya dari Visual Studio Code), di mana simulasi akan terbuka di jendela baru. Saat menjalankan kode secara online, Anda mungkin perlu melakukan beberapa penyesuaian pada kode, seperti yang dijelaskan [di sini](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7).
+Dalam pelajaran ini, kita akan menggunakan sebuah pustaka bernama **OpenAI Gym** untuk mensimulasikan berbagai **lingkungan**. Kamu dapat menjalankan kode pelajaran ini secara lokal (misalnya dari Visual Studio Code), dalam hal ini simulasi akan terbuka di jendela baru. Saat menjalankan kode secara online, kamu mungkin perlu melakukan beberapa penyesuaian pada kode, seperti yang dijelaskan [di sini](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7).
## OpenAI Gym
-Dalam pelajaran sebelumnya, aturan permainan dan keadaan diberikan oleh kelas `Board` yang kita definisikan sendiri. Di sini kita akan menggunakan **lingkungan simulasi** khusus, yang akan mensimulasikan fisika di balik tiang yang seimbang. Salah satu lingkungan simulasi paling populer untuk melatih algoritma pembelajaran penguatan disebut [Gym](https://gym.openai.com/), yang dikelola oleh [OpenAI](https://openai.com/). Dengan menggunakan gym ini, kita dapat membuat berbagai **lingkungan** mulai dari simulasi cartpole hingga permainan Atari.
+Dalam pelajaran sebelumnya, aturan permainan dan state diberikan oleh kelas `Board` yang kita definisikan sendiri. Di sini kita akan menggunakan **lingkungan simulasi** khusus, yang akan mensimulasikan fisika di balik tiang yang seimbang. Salah satu lingkungan simulasi paling populer untuk melatih algoritma reinforcement learning disebut [Gym](https://gym.openai.com/), yang dikelola oleh [OpenAI](https://openai.com/). Dengan menggunakan gym ini kita dapat membuat berbagai **lingkungan** mulai dari simulasi cartpole hingga permainan Atari.
-> **Catatan**: Anda dapat melihat lingkungan lain yang tersedia dari OpenAI Gym [di sini](https://gym.openai.com/envs/#classic_control).
+> **Catatan**: Kamu dapat melihat lingkungan lain yang tersedia dari OpenAI Gym [di sini](https://gym.openai.com/envs/#classic_control).
-Pertama, mari kita instal gym dan impor pustaka yang diperlukan (kode blok 1):
+Pertama, mari kita instal gym dan impor pustaka yang dibutuhkan (blok kode 1):
```python
import sys
@@ -24,9 +44,9 @@ import random
Untuk bekerja dengan masalah keseimbangan cartpole, kita perlu menginisialisasi lingkungan yang sesuai. Setiap lingkungan terkait dengan:
-- **Observation space** yang mendefinisikan struktur informasi yang kita terima dari lingkungan. Untuk masalah cartpole, kita menerima posisi tiang, kecepatan, dan beberapa nilai lainnya.
+- **Ruang observasi** yang mendefinisikan struktur informasi yang kita terima dari lingkungan. Untuk masalah cartpole, kita menerima posisi tiang, kecepatan dan beberapa nilai lainnya.
-- **Action space** yang mendefinisikan tindakan yang mungkin dilakukan. Dalam kasus kita, action space bersifat diskrit, dan terdiri dari dua tindakan - **kiri** dan **kanan**. (kode blok 2)
+- **Ruang aksi** yang mendefinisikan kemungkinan tindakan. Dalam kasus kita ruang aksi bersifat diskrit, dan terdiri dari dua tindakan - **kiri** dan **kanan**. (blok kode 2)
1. Untuk menginisialisasi, ketik kode berikut:
@@ -37,11 +57,11 @@ Untuk bekerja dengan masalah keseimbangan cartpole, kita perlu menginisialisasi
print(env.action_space.sample())
```
-Untuk melihat bagaimana lingkungan bekerja, mari kita jalankan simulasi singkat selama 100 langkah. Pada setiap langkah, kita memberikan salah satu tindakan yang akan dilakukan - dalam simulasi ini kita hanya memilih tindakan secara acak dari `action_space`.
+Untuk melihat bagaimana lingkungan bekerja, mari jalankan simulasi singkat selama 100 langkah. Pada setiap langkah, kita memberikan salah satu tindakan yang akan diambil - dalam simulasi ini kita hanya memilih tindakan secara acak dari `action_space`.
-1. Jalankan kode di bawah ini dan lihat hasilnya.
+1. Jalankan kode di bawah dan lihat hasilnya.
- ✅ Ingatlah bahwa lebih disarankan untuk menjalankan kode ini pada instalasi Python lokal! (kode blok 3)
+ ✅ Ingat, sebaiknya jalankan kode ini pada instalasi Python lokal! (blok kode 3)
```python
env.reset()
@@ -52,11 +72,11 @@ Untuk melihat bagaimana lingkungan bekerja, mari kita jalankan simulasi singkat
env.close()
```
- Anda seharusnya melihat sesuatu yang mirip dengan gambar ini:
+ Kamu akan melihat sesuatu yang mirip dengan gambar ini:
- 
+ 
-1. Selama simulasi, kita perlu mendapatkan observasi untuk memutuskan tindakan apa yang harus dilakukan. Faktanya, fungsi langkah mengembalikan observasi saat ini, fungsi reward, dan flag selesai yang menunjukkan apakah simulasi masih perlu dilanjutkan atau tidak: (kode blok 4)
+1. Selama simulasi, kita perlu mendapatkan observasi untuk memutuskan bagaimana bertindak. Faktanya, fungsi step mengembalikan observasi saat ini, fungsi reward, dan flag done yang menunjukkan apakah simulasi harus diteruskan atau tidak: (blok kode 4)
```python
env.reset()
@@ -69,7 +89,7 @@ Untuk melihat bagaimana lingkungan bekerja, mari kita jalankan simulasi singkat
env.close()
```
- Anda akan melihat sesuatu seperti ini di output notebook:
+ Kamu akan melihat sesuatu seperti ini di output notebook:
```text
[ 0.03403272 -0.24301182 0.02669811 0.2895829 ] -> 1.0
@@ -83,42 +103,42 @@ Untuk melihat bagaimana lingkungan bekerja, mari kita jalankan simulasi singkat
```
Vektor observasi yang dikembalikan pada setiap langkah simulasi berisi nilai-nilai berikut:
- - Posisi kereta
- - Kecepatan kereta
+ - Posisi cart
+ - Kecepatan cart
- Sudut tiang
- Laju rotasi tiang
-1. Dapatkan nilai minimum dan maksimum dari angka-angka tersebut: (kode blok 5)
+1. Dapatkan nilai minimum dan maksimum dari angka-angka tersebut: (blok kode 5)
```python
print(env.observation_space.low)
print(env.observation_space.high)
```
- Anda mungkin juga memperhatikan bahwa nilai reward pada setiap langkah simulasi selalu 1. Hal ini karena tujuan kita adalah bertahan selama mungkin, yaitu menjaga tiang tetap dalam posisi vertikal selama mungkin.
+ Kamu mungkin juga menyadari bahwa nilai reward pada setiap langkah simulasi selalu 1. Ini karena tujuan kita adalah bertahan selama mungkin, yaitu menjaga tiang dalam posisi yang relatif vertikal selama periode waktu terpanjang.
- ✅ Faktanya, simulasi CartPole dianggap berhasil jika kita berhasil mendapatkan rata-rata reward sebesar 195 selama 100 percobaan berturut-turut.
+ ✅ Faktanya, simulasi CartPole dianggap berhasil jika kita berhasil mendapatkan rata-rata reward 195 selama 100 percobaan berturut-turut.
## Diskretisasi State
-Dalam Q-Learning, kita perlu membangun Q-Table yang mendefinisikan tindakan apa yang harus dilakukan pada setiap state. Untuk dapat melakukan ini, kita memerlukan state yang **diskrit**, lebih tepatnya, state tersebut harus berisi sejumlah nilai diskrit yang terbatas. Oleh karena itu, kita perlu **mendiskretkan** observasi kita, memetakannya ke dalam kumpulan state yang terbatas.
+Dalam Q-Learning, kita perlu membangun Q-Table yang mendefinisikan apa yang harus dilakukan pada setiap state. Agar bisa melakukan ini, kita perlu agar state menjadi **diskrit**, lebih tepatnya, harus berisi jumlah nilai diskrit yang terbatas. Maka dari itu, kita perlu **mendiskretisasi** observasi kita, memetakan mereka ke sebuah himpunan nilai diskrit yang terbatas.
Ada beberapa cara untuk melakukan ini:
-- **Membagi menjadi beberapa bin**. Jika kita mengetahui interval dari suatu nilai tertentu, kita dapat membagi interval ini menjadi sejumlah **bin**, dan kemudian mengganti nilai dengan nomor bin tempat nilai tersebut berada. Hal ini dapat dilakukan menggunakan metode numpy [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html). Dalam kasus ini, kita akan mengetahui ukuran state secara tepat, karena ukuran tersebut akan bergantung pada jumlah bin yang kita pilih untuk digitalisasi.
+- **Membagi ke dalam bins**. Jika kita mengetahui interval dari nilai tertentu, kita dapat membagi interval ini menjadi sejumlah **bins**, dan kemudian mengganti nilai dengan nomor bin yang sesuai. Ini dapat dilakukan menggunakan metode numpy [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html). Dalam hal ini, kita akan tahu dengan tepat ukuran state karena tergantung pada jumlah bins yang kita pilih untuk digitalisasi.
+
+✅ Kita dapat menggunakan interpolasi linier untuk membawa nilai ke interval terbatas (misalnya, dari -20 sampai 20), kemudian mengubah angka menjadi bilangan bulat dengan pembulatan. Ini memberi kita kendali yang sedikit kurang pada ukuran state, terutama jika kita tidak mengetahui rentang pasti nilai input. Misalnya, dalam kasus kita 2 dari 4 nilai tidak memiliki batas atas/bawah yang pasti, yang dapat menghasilkan jumlah state yang tak hingga.
-✅ Kita dapat menggunakan interpolasi linier untuk membawa nilai ke beberapa interval terbatas (misalnya, dari -20 hingga 20), dan kemudian mengonversi angka menjadi bilangan bulat dengan membulatkannya. Ini memberikan kita sedikit kontrol pada ukuran state, terutama jika kita tidak mengetahui rentang nilai input secara pasti. Misalnya, dalam kasus kita, 2 dari 4 nilai tidak memiliki batas atas/bawah pada nilainya, yang dapat menghasilkan jumlah state yang tak terbatas.
+Dalam contoh kita, kita akan menggunakan pendekatan kedua. Seperti yang akan kamu lihat nanti, meskipun batas atas/bawah tidak terdefinisi, nilai-nilai tersebut jarang mengambil nilai di luar interval tertentu yang terbatas, sehingga state dengan nilai ekstrim akan sangat jarang.
-Dalam contoh kita, kita akan menggunakan pendekatan kedua. Seperti yang mungkin Anda perhatikan nanti, meskipun batas atas/bawah tidak terdefinisi, nilai-nilai tersebut jarang mengambil nilai di luar interval tertentu, sehingga state dengan nilai ekstrem akan sangat jarang.
-
-1. Berikut adalah fungsi yang akan mengambil observasi dari model kita dan menghasilkan tuple dari 4 nilai bilangan bulat: (kode blok 6)
+1. Berikut fungsi yang akan mengambil observasi dari model kita dan menghasilkan tuple dari 4 nilai bilangan bulat: (blok kode 6)
```python
def discretize(x):
return tuple((x/np.array([0.25, 0.25, 0.01, 0.1])).astype(np.int))
```
-1. Mari kita juga eksplorasi metode diskretisasi lain menggunakan bin: (kode blok 7)
+1. Mari kita juga jelajahi metode diskretisasi lain menggunakan bins: (blok kode 7)
```python
def create_bins(i,num):
@@ -126,17 +146,17 @@ Dalam contoh kita, kita akan menggunakan pendekatan kedua. Seperti yang mungkin
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
+ ints = [(-5,5),(-2,2),(-0.5,0.5),(-2,2)] # interval nilai untuk setiap parameter
+ nbins = [20,20,10,10] # jumlah bin untuk setiap 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. Sekarang mari kita jalankan simulasi singkat dan amati nilai-nilai lingkungan diskrit tersebut. Silakan coba `discretize` dan `discretize_bins` dan lihat apakah ada perbedaan.
+1. Sekarang mari jalankan simulasi singkat dan perhatikan nilai lingkungan diskrit tersebut. Silakan coba kedua `discretize` dan `discretize_bins` dan lihat apakah ada perbedaan.
- ✅ discretize_bins mengembalikan nomor bin, yang berbasis 0. Jadi untuk nilai variabel input di sekitar 0, ia mengembalikan nomor dari tengah interval (10). Dalam discretize, kita tidak peduli dengan rentang nilai output, memungkinkan mereka menjadi negatif, sehingga nilai state tidak bergeser, dan 0 sesuai dengan 0. (kode blok 8)
+ ✅ discretize_bins mengembalikan nomor bin yang berbasis 0. Jadi untuk nilai variabel input sekitar 0, ini mengembalikan nomor dari tengah interval (10). Dalam discretize, kita tidak memperhatikan rentang nilai output, mengizinkan nilai negatif, sehingga nilai state tidak bergeser, dan 0 sesuai dengan 0. (blok kode 8)
```python
env.reset()
@@ -150,15 +170,15 @@ Dalam contoh kita, kita akan menggunakan pendekatan kedua. Seperti yang mungkin
env.close()
```
- ✅ Hapus komentar pada baris yang dimulai dengan env.render jika Anda ingin melihat bagaimana lingkungan dieksekusi. Jika tidak, Anda dapat menjalankannya di latar belakang, yang lebih cepat. Kami akan menggunakan eksekusi "tak terlihat" ini selama proses Q-Learning kami.
+ ✅ Batalkan komentar baris yang diawali dengan env.render jika kamu ingin melihat bagaimana lingkungan mengeksekusi. Jika tidak, kamu dapat mengeksekusinya di latar belakang, yang lebih cepat. Kita akan menggunakan eksekusi "tidak terlihat" ini selama proses Q-Learning.
## Struktur Q-Table
-Dalam pelajaran sebelumnya, state adalah pasangan angka sederhana dari 0 hingga 8, sehingga nyaman untuk merepresentasikan Q-Table dengan tensor numpy dengan bentuk 8x8x2. Jika kita menggunakan diskretisasi bin, ukuran vektor state kita juga diketahui, sehingga kita dapat menggunakan pendekatan yang sama dan merepresentasikan state dengan array berbentuk 20x20x10x10x2 (di sini 2 adalah dimensi action space, dan dimensi pertama sesuai dengan jumlah bin yang kita pilih untuk setiap parameter dalam observation space).
+Dalam pelajaran sebelumnya, state adalah pasangan angka sederhana dari 0 sampai 8, sehingga mudah merepresentasikan Q-Table dengan tensor numpy berbentuk 8x8x2. Jika kita menggunakan diskretisasi bins, ukuran vektor state juga diketahui, sehingga kita dapat menggunakan pendekatan yang sama dan merepresentasikan state dengan array berbentuk 20x20x10x10x2 (di sini 2 adalah dimensi ruang aksi, dan dimensi pertama sesuai dengan jumlah bins yang kita pilih untuk masing-masing parameter dalam ruang observasi).
-Namun, terkadang dimensi observation space tidak diketahui secara pasti. Dalam kasus fungsi `discretize`, kita mungkin tidak pernah yakin bahwa state kita tetap berada dalam batas tertentu, karena beberapa nilai asli tidak memiliki batas. Oleh karena itu, kita akan menggunakan pendekatan yang sedikit berbeda dan merepresentasikan Q-Table dengan sebuah dictionary.
+Namun, terkadang dimensi tepat dari ruang observasi tidak diketahui. Dalam kasus fungsi `discretize`, kita mungkin tidak pernah yakin state kita tetap dalam batas tertentu, karena beberapa nilai asli tidak dibatasi. Oleh karena itu, kita akan menggunakan pendekatan yang sedikit berbeda dan merepresentasikan Q-Table dengan dictionary.
-1. Gunakan pasangan *(state,action)* sebagai kunci dictionary, dan nilainya akan sesuai dengan nilai entri Q-Table. (kode blok 9)
+1. Gunakan pasangan *(state, action)* sebagai kunci dictionary, dan nilainya akan sesuai dengan entri nilai Q-Table. (blok kode 9)
```python
Q = {}
@@ -168,38 +188,38 @@ Namun, terkadang dimensi observation space tidak diketahui secara pasti. Dalam k
return [Q.get((state,a),0) for a in actions]
```
- Di sini kita juga mendefinisikan fungsi `qvalues()`, yang mengembalikan daftar nilai Q-Table untuk state tertentu yang sesuai dengan semua tindakan yang mungkin. Jika entri tidak ada dalam Q-Table, kita akan mengembalikan 0 sebagai default.
+ Di sini kita juga mendefinisikan fungsi `qvalues()`, yang mengembalikan daftar nilai Q-Table untuk state tertentu yang sesuai dengan semua aksi yang mungkin. Jika entri tidak ada di Q-Table, kita akan mengembalikan 0 sebagai default.
-## Mari Mulai Q-Learning
+## Mari mulai Q-Learning
-Sekarang kita siap mengajari Peter untuk menjaga keseimbangan!
+Sekarang kita siap mengajarkan Peter untuk menjaga keseimbangan!
-1. Pertama, mari kita tetapkan beberapa hyperparameter: (kode blok 10)
+1. Pertama, mari kita tetapkan beberapa hyperparameter: (blok kode 10)
```python
- # hyperparameters
+ # hiperparameter
alpha = 0.3
gamma = 0.9
epsilon = 0.90
```
- Di sini, `alpha` adalah **learning rate** yang menentukan sejauh mana kita harus menyesuaikan nilai Q-Table saat ini pada setiap langkah. Dalam pelajaran sebelumnya, kita memulai dengan 1, dan kemudian menurunkan `alpha` ke nilai yang lebih rendah selama pelatihan. Dalam contoh ini, kita akan mempertahankannya tetap konstan demi kesederhanaan, dan Anda dapat bereksperimen dengan menyesuaikan nilai `alpha` nanti.
-
- `gamma` adalah **discount factor** yang menunjukkan sejauh mana kita harus memprioritaskan reward di masa depan dibandingkan reward saat ini.
+ Di sini, `alpha` adalah **laju pembelajaran** yang menentukan sejauh mana kita harus menyesuaikan nilai Q-Table saat ini di setiap langkah. Dalam pelajaran sebelumnya kita mulai dengan 1, kemudian menurunkan `alpha` ke nilai lebih rendah selama pelatihan. Dalam contoh ini kita akan mempertahankannya konstan untuk kesederhanaan, dan kamu bisa bereksperimen dengan mengubah nilai `alpha` nanti.
- `epsilon` adalah **exploration/exploitation factor** yang menentukan apakah kita harus lebih memilih eksplorasi daripada eksploitasi atau sebaliknya. Dalam algoritma kita, kita akan memilih tindakan berikutnya sesuai dengan nilai Q-Table dalam persentase `epsilon` dari kasus, dan dalam jumlah kasus yang tersisa kita akan melakukan tindakan acak. Ini memungkinkan kita untuk menjelajahi area ruang pencarian yang belum pernah kita lihat sebelumnya.
+ `gamma` adalah **faktor diskonto** yang menunjukkan sejauh mana kita harus memprioritaskan reward masa depan dibandingkan reward saat ini.
- ✅ Dalam hal keseimbangan - memilih tindakan acak (eksplorasi) akan bertindak sebagai dorongan acak ke arah yang salah, dan tiang harus belajar bagaimana memulihkan keseimbangan dari "kesalahan" tersebut.
+ `epsilon` adalah **faktor eksplorasi/eksploitasi** yang menentukan apakah kita harus lebih memilih eksplorasi daripada eksploitasi atau sebaliknya. Dalam algoritma kita, `epsilon` persen dari kasus akan memilih aksi berikutnya sesuai nilai Q-Table, dan sisanya akan menjalankan aksi acak. Ini memungkinkan kita menjelajahi area ruang pencarian yang belum pernah kita lihat sebelumnya.
-### Tingkatkan Algoritma
+ ✅ Dalam hal menjaga keseimbangan - memilih tindakan acak (eksplorasi) akan bertindak seperti pukulan acak ke arah yang salah, dan tiang harus belajar cara mengembalikan keseimbangan dari "kesalahan" tersebut.
-Kita juga dapat membuat dua peningkatan pada algoritma kita dari pelajaran sebelumnya:
+### Memperbaiki Algoritma
-- **Hitung rata-rata reward kumulatif**, selama sejumlah simulasi. Kita akan mencetak kemajuan setiap 5000 iterasi, dan kita akan merata-ratakan reward kumulatif kita selama periode waktu tersebut. Artinya, jika kita mendapatkan lebih dari 195 poin - kita dapat menganggap masalah telah terpecahkan, bahkan dengan kualitas yang lebih tinggi dari yang diperlukan.
+Kita juga dapat membuat dua perbaikan pada algoritma dari pelajaran sebelumnya:
-- **Hitung hasil kumulatif rata-rata maksimum**, `Qmax`, dan kita akan menyimpan Q-Table yang sesuai dengan hasil tersebut. Saat Anda menjalankan pelatihan, Anda akan melihat bahwa terkadang hasil kumulatif rata-rata mulai menurun, dan kita ingin menyimpan nilai Q-Table yang sesuai dengan model terbaik yang diamati selama pelatihan.
+- **Menghitung rata-rata reward kumulatif**, selama sejumlah simulasi. Kita akan mencetak kemajuan setiap 5000 iterasi, dan kita akan mengambil rata-rata reward kumulatif selama periode waktu tersebut. Ini berarti jika kita mendapatkan lebih dari 195 poin - kita dapat menganggap masalah berhasil diselesaikan, dengan kualitas lebih tinggi dari yang diperlukan.
+
+- **Menghitung maksimum rata-rata hasil kumulatif**, `Qmax`, dan kita akan menyimpan Q-Table yang sesuai dengan hasil tersebut. Saat kamu menjalankan pelatihan, kamu akan melihat terkadang hasil rata-ratanya mulai turun, dan kita ingin menyimpan nilai Q-Table yang sesuai dengan model terbaik yang diamati selama pelatihan.
-1. Kumpulkan semua reward kumulatif pada setiap simulasi di vektor `rewards` untuk plotting lebih lanjut. (kode blok 11)
+1. Kumpulkan semua reward kumulatif pada setiap simulasi dalam vektor `rewards` untuk plotting lebih lanjut. (blok kode 11)
```python
def probs(v,eps=1e-4):
@@ -214,15 +234,15 @@ Kita juga dapat membuat dua peningkatan pada algoritma kita dari pelajaran sebel
obs = env.reset()
done = False
cum_reward=0
- # == do the simulation ==
+ # == lakukan simulasi ==
while not done:
s = discretize(obs)
if random.random() Qmax:
@@ -240,25 +260,25 @@ Kita juga dapat membuat dua peningkatan pada algoritma kita dari pelajaran sebel
cum_rewards=[]
```
-Apa yang mungkin Anda perhatikan dari hasil tersebut:
+Apa yang mungkin kamu perhatikan dari hasil tersebut:
-- **Dekat dengan tujuan kita**. Kita sangat dekat dengan mencapai tujuan mendapatkan reward kumulatif sebesar 195 selama 100+ percobaan simulasi berturut-turut, atau kita mungkin telah benar-benar mencapainya! Bahkan jika kita mendapatkan angka yang lebih kecil, kita masih tidak tahu, karena kita merata-ratakan selama 5000 kali, dan hanya 100 kali yang diperlukan dalam kriteria formal.
+- **Dekat dengan tujuan kita**. Kita sangat dekat dengan mencapai tujuan mendapatkan 195 reward kumulatif selama 100+ percobaan berturut-turut, atau mungkin kita sudah mencapainya! Bahkan jika nilainya lebih kecil, kita belum tahu pasti, karena kita mengambil rata-rata selama 5000 percobaan, dan hanya 100 percobaan yang diperlukan dalam kriteria formal.
+
+- **Reward mulai turun**. Terkadang reward mulai turun, yang berarti kita dapat "menghancurkan" nilai yang telah dipelajari dalam Q-Table dengan nilai yang membuat situasi menjadi lebih buruk.
-- **Reward mulai menurun**. Terkadang reward mulai menurun, yang berarti kita dapat "merusak" nilai yang sudah dipelajari dalam Q-Table dengan nilai yang membuat situasi menjadi lebih buruk.
-
-Pengamatan ini lebih jelas terlihat jika kita memplot kemajuan pelatihan.
+Pengamatan ini lebih jelas jika kita plot kemajuan pelatihan.
## Memplot Kemajuan Pelatihan
-Selama pelatihan, kita telah mengumpulkan nilai reward kumulatif pada setiap iterasi ke dalam vektor `rewards`. Berikut adalah tampilannya saat kita plot terhadap nomor iterasi:
+Selama pelatihan, kita mengumpulkan nilai reward kumulatif pada setiap iterasi di vektor `rewards`. Berikut adalah bagaimana tampilannya saat kita plot terhadap nomor iterasi:
```python
plt.plot(rewards)
```
-
+
-Dari grafik ini, tidak mungkin untuk menyimpulkan apa pun, karena sifat proses pelatihan stokastik membuat panjang sesi pelatihan sangat bervariasi. Untuk membuat grafik ini lebih masuk akal, kita dapat menghitung **rata-rata berjalan** selama serangkaian eksperimen, misalnya 100. Hal ini dapat dilakukan dengan mudah menggunakan `np.convolve`: (kode blok 12)
+Dari grafik ini, tidak mungkin menyimpulkan apa pun, karena sifat proses pelatihan stokastik, durasi sesi pelatihan sangat bervariasi. Untuk lebih memahami grafik ini, kita dapat menghitung **rata-rata berjalan** selama serangkaian eksperimen, misalnya 100. Ini dapat dilakukan dengan mudah menggunakan `np.convolve`: (blok kode 12)
```python
def running_average(x,window):
@@ -267,21 +287,24 @@ def running_average(x,window):
plt.plot(running_average(rewards,100))
```
-
+
+
+## Mengubah Hyperparameter
+
+Untuk membuat pembelajaran lebih stabil, masuk akal mengubah beberapa hyperparameter selama pelatihan. Secara khusus:
+
+- **Untuk laju pembelajaran**, `alpha`, kita dapat mulai dengan nilai mendekati 1, lalu terus menurunkan parameter. Seiring waktu, kita akan mendapatkan nilai probabilitas bagus dalam Q-Table, sehingga harus menyesuaikannya sedikit, dan tidak menimpa sepenuhnya dengan nilai baru.
-## Memvariasikan Hyperparameter
+- **Meningkatkan epsilon**. Kita mungkin ingin meningkatkan `epsilon` secara perlahan, untuk mengurangi eksplorasi dan meningkatkan eksploitasi. Mungkin masuk akal mulai dengan nilai epsilon rendah, lalu naikkan mendekati 1.
-Untuk membuat pembelajaran lebih stabil, masuk akal untuk menyesuaikan beberapa hyperparameter kita selama pelatihan. Secara khusus:
+> **Tugas 1**: Bermain dengan nilai hyperparameter dan lihat apakah kamu bisa mencapai reward kumulatif lebih tinggi. Apakah kamu mendapat lebih dari 195?
-- **Untuk learning rate**, `alpha`, kita dapat memulai dengan nilai yang mendekati 1, dan kemudian terus menurunkan parameter tersebut. Seiring waktu, kita akan mendapatkan nilai probabilitas yang baik dalam Q-Table, sehingga kita harus menyesuaikannya sedikit, dan tidak menimpa sepenuhnya dengan nilai baru.
-- **Tingkatkan epsilon**. Kita mungkin ingin meningkatkan `epsilon` secara perlahan, agar lebih sedikit eksplorasi dan lebih banyak eksploitasi. Mungkin masuk akal untuk memulai dengan nilai `epsilon` yang lebih rendah, dan meningkatkannya hingga hampir 1.
-> **Tugas 1**: Coba ubah nilai hyperparameter dan lihat apakah Anda bisa mencapai total reward yang lebih tinggi. Apakah Anda mendapatkan di atas 195?
-> **Tugas 2**: Untuk secara formal menyelesaikan masalah ini, Anda perlu mencapai rata-rata reward sebesar 195 dalam 100 kali percobaan berturut-turut. Ukur itu selama pelatihan dan pastikan bahwa Anda telah secara formal menyelesaikan masalah ini!
+> **Tugas 2**: Untuk menyelesaikan masalah secara formal, Anda perlu mendapatkan rata-rata hadiah 195 selama 100 kali percobaan berturut-turut. Ukur itu selama pelatihan dan pastikan bahwa Anda benar-benar telah menyelesaikan masalah!
-## Melihat hasilnya secara langsung
+## Melihat hasil dalam aksi
-Akan menarik untuk melihat bagaimana model yang telah dilatih berperilaku. Mari kita jalankan simulasi dan gunakan strategi pemilihan aksi yang sama seperti saat pelatihan, yaitu sampling berdasarkan distribusi probabilitas di Q-Table: (blok kode 13)
+Akan menarik untuk benar-benar melihat bagaimana perilaku model yang sudah dilatih. Mari kita jalankan simulasi dan ikuti strategi pemilihan aksi yang sama seperti saat pelatihan, dengan sampling sesuai distribusi probabilitas di Q-Table: (blok kode 13)
```python
obs = env.reset()
@@ -295,7 +318,7 @@ while not done:
env.close()
```
-Anda seharusnya melihat sesuatu seperti ini:
+Anda harus melihat sesuatu seperti ini:

@@ -303,22 +326,24 @@ Anda seharusnya melihat sesuatu seperti ini:
## 🚀Tantangan
-> **Tugas 3**: Di sini, kita menggunakan salinan akhir dari Q-Table, yang mungkin bukan yang terbaik. Ingat bahwa kita telah menyimpan Q-Table dengan performa terbaik ke dalam variabel `Qbest`! Coba contoh yang sama dengan Q-Table terbaik dengan menyalin `Qbest` ke `Q` dan lihat apakah Anda melihat perbedaannya.
+> **Tugas 3**: Di sini, kami menggunakan salinan terakhir dari Q-Table, yang mungkin bukan yang terbaik. Ingat bahwa kami telah menyimpan Q-Table dengan performa terbaik ke dalam variabel `Qbest`! Cobalah contoh yang sama dengan Q-Table berperforma terbaik dengan menyalin `Qbest` ke `Q` dan lihat apakah Anda memperhatikan perbedaannya.
-> **Tugas 4**: Di sini kita tidak memilih aksi terbaik di setiap langkah, melainkan sampling berdasarkan distribusi probabilitas yang sesuai. Apakah lebih masuk akal untuk selalu memilih aksi terbaik, dengan nilai Q-Table tertinggi? Ini dapat dilakukan dengan menggunakan fungsi `np.argmax` untuk menemukan nomor aksi yang sesuai dengan nilai Q-Table tertinggi. Implementasikan strategi ini dan lihat apakah itu meningkatkan keseimbangan.
+> **Tugas 4**: Di sini kami tidak memilih aksi terbaik pada setiap langkah, tapi sampling sesuai distribusi probabilitas yang sesuai. Apakah lebih masuk akal untuk selalu memilih aksi terbaik, dengan nilai Q-Table tertinggi? Ini bisa dilakukan dengan menggunakan fungsi `np.argmax` untuk mencari nomor aksi yang sesuai dengan nilai Q-Table tertinggi. Implementasikan strategi ini dan lihat apakah itu meningkatkan keseimbangan.
-## [Kuis setelah kuliah](https://ff-quizzes.netlify.app/en/ml/)
+## [Kuis pasca kuliah](https://ff-quizzes.netlify.app/en/ml/)
## Tugas
-[Latih Mountain Car](assignment.md)
+[Latih sebuah Mountain Car](assignment.md)
## Kesimpulan
-Kita sekarang telah belajar bagaimana melatih agen untuk mencapai hasil yang baik hanya dengan memberikan mereka fungsi reward yang mendefinisikan keadaan yang diinginkan dalam permainan, dan dengan memberikan mereka kesempatan untuk secara cerdas menjelajahi ruang pencarian. Kita telah berhasil menerapkan algoritma Q-Learning dalam kasus lingkungan diskret dan kontinu, tetapi dengan aksi diskret.
+Sekarang kita telah belajar bagaimana melatih agen untuk mencapai hasil yang baik hanya dengan memberikan fungsi hadiah yang mendefinisikan keadaan permainan yang diinginkan, dan dengan memberi mereka kesempatan untuk menjelajahi ruang pencarian secara cerdas. Kita telah berhasil menerapkan algoritma Q-Learning dalam kasus lingkungan diskrit dan kontinu, tetapi dengan aksi diskrit.
-Penting juga untuk mempelajari situasi di mana keadaan aksi juga kontinu, dan ketika ruang observasi jauh lebih kompleks, seperti gambar dari layar permainan Atari. Dalam masalah-masalah tersebut, kita sering kali perlu menggunakan teknik pembelajaran mesin yang lebih kuat, seperti jaringan saraf, untuk mencapai hasil yang baik. Topik-topik yang lebih maju ini akan menjadi subjek dari kursus AI lanjutan kami yang akan datang.
+Penting juga mempelajari situasi dimana ruang aksi juga kontinu, dan ketika ruang observasi jauh lebih kompleks, seperti gambar dari layar permainan Atari. Dalam masalah tersebut kita sering perlu menggunakan teknik pembelajaran mesin yang lebih kuat, seperti jaringan saraf, untuk mencapai hasil yang baik. Topik yang lebih lanjut tersebut adalah subjek dari kursus AI lanjutan kami yang akan datang.
---
-**Penafian**:
-Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berusaha untuk memberikan hasil yang akurat, harap diingat bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang otoritatif. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini.
\ No newline at end of file
+
+**Penafian**:
+Dokumen ini telah diterjemahkan menggunakan layanan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk mencapai akurasi, harap diketahui bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang sah. Untuk informasi penting, disarankan menggunakan terjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini.
+
\ No newline at end of file
diff --git a/translations/it/.co-op-translator.json b/translations/it/.co-op-translator.json
index 358812f35..b3987a64f 100644
--- a/translations/it/.co-op-translator.json
+++ b/translations/it/.co-op-translator.json
@@ -24,8 +24,8 @@
"language_code": "it"
},
"1-Introduction/3-fairness/README.md": {
- "original_hash": "9a6b702d1437c0467e3c5c28d763dac2",
- "translation_date": "2025-09-06T07:32:45+00:00",
+ "original_hash": "0f00d72169a0d37eecfd16d71e01700a",
+ "translation_date": "2026-07-14T08:24:50+00:00",
"source_file": "1-Introduction/3-fairness/README.md",
"language_code": "it"
},
@@ -54,8 +54,8 @@
"language_code": "it"
},
"2-Regression/1-Tools/README.md": {
- "original_hash": "fa81d226c71d5af7a2cade31c1c92b88",
- "translation_date": "2025-09-06T07:26:59+00:00",
+ "original_hash": "0b8635427b582d03ea4ab7089b93e505",
+ "translation_date": "2026-07-14T08:19:02+00:00",
"source_file": "2-Regression/1-Tools/README.md",
"language_code": "it"
},
@@ -72,8 +72,8 @@
"language_code": "it"
},
"2-Regression/2-Data/README.md": {
- "original_hash": "7c077988328ebfe33b24d07945f16eca",
- "translation_date": "2025-09-06T07:27:38+00:00",
+ "original_hash": "a58b2c4d16c6b122643391745ac15af6",
+ "translation_date": "2026-07-14T08:20:16+00:00",
"source_file": "2-Regression/2-Data/README.md",
"language_code": "it"
},
@@ -89,6 +89,12 @@
"source_file": "2-Regression/2-Data/solution/Julia/README.md",
"language_code": "it"
},
+ "2-Regression/2-Data/solution/notebook.ipynb": {
+ "original_hash": "96b95f8cf473481f2f371de8156f1571",
+ "translation_date": "2026-07-14T08:13:26+00:00",
+ "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
+ "language_code": "it"
+ },
"2-Regression/3-Linear/README.md": {
"original_hash": "8b776e731c35b171d316d01d0e7b1369",
"translation_date": "2026-04-26T20:25:49+00:00",
@@ -457,7 +463,7 @@
},
"8-Reinforcement/1-QLearning/README.md": {
"original_hash": "911efd5e595089000cb3c16fce1beab8",
- "translation_date": "2025-09-06T07:37:49+00:00",
+ "translation_date": "2026-07-14T08:21:49+00:00",
"source_file": "8-Reinforcement/1-QLearning/README.md",
"language_code": "it"
},
@@ -481,7 +487,7 @@
},
"8-Reinforcement/2-Gym/README.md": {
"original_hash": "107d5bb29da8a562e7ae72262d251a75",
- "translation_date": "2025-09-06T07:38:26+00:00",
+ "translation_date": "2026-07-14T08:23:19+00:00",
"source_file": "8-Reinforcement/2-Gym/README.md",
"language_code": "it"
},
@@ -581,6 +587,19 @@
"source_file": "TROUBLESHOOTING.md",
"language_code": "it"
},
+ "__translation_failures__": {
+ "sketchnotes/LICENSE.md": {
+ "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f",
+ "source_file": "sketchnotes/LICENSE.md",
+ "language_code": "it",
+ "failure_date": "2026-07-14T08:17:59+00:00",
+ "status": "failed",
+ "error_type": "TranslationIncompleteError",
+ "error_message": "Markdown translation remained incomplete for chunk 1.1.1 of 'LICENSE.md', and the chunk could not be split further.",
+ "translator_version": "0.20.0",
+ "failure_policy_version": 1
+ }
+ },
"docs/_sidebar.md": {
"original_hash": "68dd06c685f6ce840e0acfa313352e7c",
"translation_date": "2025-08-29T21:08:54+00:00",
diff --git a/translations/it/1-Introduction/3-fairness/README.md b/translations/it/1-Introduction/3-fairness/README.md
index f07bafd24..90f11def9 100644
--- a/translations/it/1-Introduction/3-fairness/README.md
+++ b/translations/it/1-Introduction/3-fairness/README.md
@@ -1,28 +1,28 @@
# Costruire soluzioni di Machine Learning con AI responsabile
-
-
+
+
> Sketchnote di [Tomomi Imura](https://www.twitter.com/girlie_mac)
## [Quiz pre-lezione](https://ff-quizzes.netlify.app/en/ml/)
-
+
## Introduzione
-In questo curriculum, inizierai a scoprire come il machine learning può influenzare e sta influenzando la nostra vita quotidiana. Anche ora, sistemi e modelli sono coinvolti in attività decisionali quotidiane, come diagnosi sanitarie, approvazioni di prestiti o rilevamento di frodi. È quindi importante che questi modelli funzionino bene per fornire risultati affidabili. Come qualsiasi applicazione software, i sistemi di AI possono non soddisfare le aspettative o avere risultati indesiderati. Per questo motivo, è essenziale essere in grado di comprendere e spiegare il comportamento di un modello di AI.
+In questo corso inizierai a scoprire come il machine learning può e sta influenzando la nostra vita quotidiana. Anche adesso, sistemi e modelli sono coinvolti in attività decisionali quotidiane, come diagnosi mediche, approvazioni di prestiti o rilevamento di frodi. Quindi è importante che questi modelli funzionino bene per fornire risultati affidabili. Come per qualsiasi applicazione software, i sistemi di AI possono non soddisfare le aspettative o avere esiti indesiderati. Per questo motivo è essenziale essere in grado di comprendere e spiegare il comportamento di un modello AI.
-Immagina cosa può accadere quando i dati utilizzati per costruire questi modelli mancano di determinate demografie, come razza, genere, opinioni politiche, religione, o rappresentano in modo sproporzionato tali demografie. E se l'output del modello fosse interpretato in modo da favorire alcune demografie? Quali sarebbero le conseguenze per l'applicazione? Inoltre, cosa succede quando il modello ha un risultato negativo e danneggia le persone? Chi è responsabile del comportamento dei sistemi di AI? Queste sono alcune delle domande che esploreremo in questo curriculum.
+Immagina cosa può accadere quando i dati che usi per costruire questi modelli mancano di determinate demografie, come razza, genere, opinione politica, religione, o rappresentano in modo sproporzionato tali demografie. Cosa succede quando l’output del modello è interpretato per favorire una certa demografia? Qual è la conseguenza per l’applicazione? Inoltre, cosa accade quando il modello produce un risultato avverso dannoso per le persone? Chi è responsabile del comportamento del sistema AI? Queste sono alcune delle domande che esploreremo in questo corso.
-In questa lezione, imparerai a:
+In questa lezione imparerai a:
- Aumentare la consapevolezza sull'importanza dell'equità nel machine learning e sui danni correlati all'equità.
-- Familiarizzare con la pratica di esplorare outlier e scenari insoliti per garantire affidabilità e sicurezza.
-- Comprendere la necessità di progettare sistemi inclusivi per potenziare tutti.
+- Familiarizzare con la pratica di esplorare gli outlier e scenari insoliti per garantire affidabilità e sicurezza.
+- Acquisire comprensione della necessità di dare potere a tutti progettando sistemi inclusivi.
- Esplorare quanto sia vitale proteggere la privacy e la sicurezza dei dati e delle persone.
-- Riconoscere l'importanza di un approccio trasparente per spiegare il comportamento dei modelli di AI.
+- Vedere l'importanza di un approccio "scatola trasparente" per spiegare il comportamento dei modelli di AI.
- Essere consapevoli di come la responsabilità sia essenziale per costruire fiducia nei sistemi di AI.
-## Prerequisiti
+## Prerequisito
-Come prerequisito, segui il percorso di apprendimento "Principi di AI responsabile" e guarda il video qui sotto sull'argomento:
+Come prerequisito, svolgi il Percorso di apprendimento "Principi di AI responsabile" e guarda il video qui sotto sull'argomento:
Scopri di più sull'AI responsabile seguendo questo [Percorso di apprendimento](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)
@@ -32,124 +32,128 @@ Scopri di più sull'AI responsabile seguendo questo [Percorso di apprendimento](
## Equità
-I sistemi di AI dovrebbero trattare tutti equamente ed evitare di influenzare gruppi simili di persone in modi diversi. Ad esempio, quando i sistemi di AI forniscono indicazioni su trattamenti medici, richieste di prestiti o occupazione, dovrebbero fare le stesse raccomandazioni a tutti con sintomi, circostanze finanziarie o qualifiche professionali simili. Ognuno di noi, come esseri umani, porta con sé bias ereditati che influenzano le nostre decisioni e azioni. Questi bias possono essere evidenti nei dati che utilizziamo per addestrare i sistemi di AI. Tali manipolazioni possono talvolta accadere involontariamente. Spesso è difficile sapere consapevolmente quando si sta introducendo un bias nei dati.
+I sistemi AI dovrebbero trattare tutti in modo equo ed evitare di colpire gruppi simili di persone in modi diversi. Per esempio, quando i sistemi AI forniscono indicazioni su trattamenti medici, domande di prestito o impiego, dovrebbero fare le stesse raccomandazioni a tutti coloro che presentano sintomi simili, condizioni finanziarie o qualifiche professionali. Ognuno di noi come umano porta con sé bias ereditati che influenzano decisioni e azioni. Questi bias possono essere evidenti nei dati usati per addestrare i sistemi AI. Tale manipolazione può a volte avvenire involontariamente. È spesso difficile sapere consapevolmente quando si introduce un bias nei dati.
-**“Ingiustizia”** comprende impatti negativi, o “danni”, per un gruppo di persone, come quelli definiti in termini di razza, genere, età o stato di disabilità. I principali danni correlati all'equità possono essere classificati come:
+**"Disparità"** comprende impatti negativi, o "danni", per un gruppo di persone definito in termini di razza, genere, età o stato di disabilità. I principali danni legati all'equità possono essere classificati come:
-- **Allocazione**, se un genere o un'etnia, ad esempio, è favorito rispetto a un altro.
-- **Qualità del servizio**. Se i dati sono addestrati per uno scenario specifico ma la realtà è molto più complessa, si ottiene un servizio di scarsa qualità. Ad esempio, un dispenser di sapone che non riesce a rilevare persone con pelle scura. [Riferimento](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
-- **Denigrazione**. Criticare ingiustamente e etichettare qualcosa o qualcuno. Ad esempio, una tecnologia di etichettatura delle immagini ha etichettato erroneamente immagini di persone con pelle scura come gorilla.
-- **Sovra- o sotto-rappresentazione**. L'idea che un certo gruppo non sia visibile in una certa professione, e qualsiasi servizio o funzione che continui a promuovere ciò contribuisce al danno.
-- **Stereotipizzazione**. Associare un determinato gruppo a attributi preassegnati. Ad esempio, un sistema di traduzione tra inglese e turco potrebbe avere imprecisioni dovute a parole con associazioni stereotipate di genere.
+- **Allocazione**, se per esempio un genere o un'etnia viene favorito rispetto a un altro.
+- **Qualità del servizio**. Se addestri i dati per uno scenario specifico ma la realtà è più complessa, il servizio può risultare inefficace. Ad esempio, un distributore di sapone che sembra incapace di riconoscere persone con la pelle scura. [Riferimento](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
+- **Denigrazione**. Criticare etichettare ingiustamente qualcosa o qualcuno. Ad esempio, una tecnologia di etichettatura delle immagini ha etichettato infamemente le immagini di persone dalla pelle scura come gorilla.
+- **Sovra- o sotto-rappresentazione**. L'idea è che un certo gruppo non sia visto in una certa professione e qualsiasi servizio o funzione che continua a promuovere ciò contribuisce al danno.
+- **Stereotipizzazione**. Associare a un dato gruppo attributi preassegnati. Per esempio, un sistema di traduzione linguistica tra inglese e turco può avere imprecisioni dovute a parole con associazioni stereotipate di genere.
-
+
> traduzione in turco
-
-> traduzione di ritorno in inglese
+
+> traduzione di nuovo in inglese
-Quando progettiamo e testiamo sistemi di AI, dobbiamo garantire che l'AI sia equa e non programmata per prendere decisioni discriminatorie o di parte, che anche gli esseri umani sono proibiti dal prendere. Garantire l'equità nell'AI e nel machine learning rimane una sfida sociotecnica complessa.
+Quando progetti e testi sistemi AI, dobbiamo assicurarci che l'AI sia equa e non programmata per prendere decisioni di parte o discriminatorie, decisioni che anche gli esseri umani sono proibiti di prendere. Garantire l'equità nell'AI e nel machine learning rimane una sfida sociotecnica complessa.
### Affidabilità e sicurezza
-Per costruire fiducia, i sistemi di AI devono essere affidabili, sicuri e coerenti in condizioni normali e inattese. È importante sapere come i sistemi di AI si comporteranno in una varietà di situazioni, specialmente quando si tratta di outlier. Quando si costruiscono soluzioni di AI, è necessario concentrarsi in modo sostanziale su come gestire una vasta gamma di circostanze che le soluzioni di AI potrebbero incontrare. Ad esempio, un'auto a guida autonoma deve mettere la sicurezza delle persone come priorità assoluta. Di conseguenza, l'AI che alimenta l'auto deve considerare tutti gli scenari possibili che l'auto potrebbe incontrare, come notte, temporali o bufere di neve, bambini che attraversano la strada, animali domestici, lavori stradali, ecc. Quanto bene un sistema di AI può gestire una vasta gamma di condizioni in modo affidabile e sicuro riflette il livello di anticipazione che il data scientist o sviluppatore di AI ha considerato durante la progettazione o il test del sistema.
+Per costruire fiducia, i sistemi AI devono essere affidabili, sicuri e coerenti in condizioni normali e impreviste. È importante sapere come i sistemi AI si comporteranno in varie situazioni, specialmente quando sono outlier. Nel costruire soluzioni AI, occorre concentrarsi molto su come affrontare una vasta gamma di circostanze che le soluzioni AI potrebbero incontrare. Per esempio, un'auto a guida autonoma deve mettere la sicurezza delle persone come massima priorità. Di conseguenza, l'AI che alimenta l'auto deve considerare tutti gli scenari possibili, come notte, temporali o bufere di neve, bambini che attraversano la strada, animali domestici, cantieri stradali ecc. Quanto bene un sistema AI riesce a gestire una vasta gamma di condizioni in modo affidabile e sicuro riflette il livello di anticipazione preso in considerazione dal data scientist o sviluppatore AI durante la progettazione o i test del sistema.
> [🎥 Clicca qui per un video: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
### Inclusività
-I sistemi di AI dovrebbero essere progettati per coinvolgere e potenziare tutti. Quando progettano e implementano sistemi di AI, i data scientist e gli sviluppatori di AI identificano e affrontano potenziali barriere nel sistema che potrebbero escludere involontariamente le persone. Ad esempio, ci sono 1 miliardo di persone con disabilità in tutto il mondo. Con l'avanzamento dell'AI, possono accedere a una vasta gamma di informazioni e opportunità più facilmente nella loro vita quotidiana. Affrontando le barriere, si creano opportunità per innovare e sviluppare prodotti di AI con esperienze migliori che beneficiano tutti.
+I sistemi AI dovrebbero essere progettati per coinvolgere e responsabilizzare tutti. Quando progettano e implementano sistemi AI, data scientist e sviluppatori AI identificano e affrontano barriere potenziali nel sistema che potrebbero escludere involontariamente le persone. Per esempio, ci sono 1 miliardo di persone con disabilità nel mondo. Con l'avanzamento dell'AI, possono accedere più facilmente a una vasta gamma di informazioni e opportunità nella vita quotidiana. Affrontando le barriere si creano opportunità per innovare e sviluppare prodotti AI con esperienze migliori che avvantaggiano tutti.
> [🎥 Clicca qui per un video: inclusività nell'AI](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
### Sicurezza e privacy
-I sistemi di AI dovrebbero essere sicuri e rispettare la privacy delle persone. Le persone hanno meno fiducia nei sistemi che mettono a rischio la loro privacy, informazioni o vite. Quando si addestrano modelli di machine learning, ci affidiamo ai dati per ottenere i migliori risultati. Facendo ciò, l'origine dei dati e la loro integrità devono essere considerate. Ad esempio, i dati sono stati forniti dagli utenti o sono pubblicamente disponibili? Inoltre, mentre si lavora con i dati, è cruciale sviluppare sistemi di AI che possano proteggere informazioni riservate e resistere agli attacchi. Con l'aumento dell'uso dell'AI, proteggere la privacy e garantire la sicurezza delle informazioni personali e aziendali sta diventando sempre più critico e complesso. Le questioni di privacy e sicurezza dei dati richiedono particolare attenzione per l'AI, poiché l'accesso ai dati è essenziale affinché i sistemi di AI possano fare previsioni e decisioni accurate e informate sulle persone.
+I sistemi AI dovrebbero essere sicuri e rispettare la privacy delle persone. Le persone hanno meno fiducia in sistemi che mettono a rischio la loro privacy, informazioni o vite. Nel addestrare modelli di machine learning, ci si affida ai dati per produrre i migliori risultati. In questo processo, bisogna considerare l’origine dei dati e l'integrità. Per esempio, i dati sono stati inviati dagli utenti o sono pubblicamente disponibili? Inoltre, durante il lavoro con i dati è fondamentale sviluppare sistemi AI in grado di proteggere informazioni riservate e resistere ad attacchi. Con la diffusione crescente dell'AI, proteggere la privacy e mettere in sicurezza informazioni personali e aziendali importanti diventa sempre più critico e complesso. Questioni di privacy e sicurezza dei dati richiedono particolare attenzione per l’AI poiché l’accesso ai dati è essenziale per i sistemi AI per fare previsioni e decisioni accurate e informate sulle persone.
> [🎥 Clicca qui per un video: sicurezza nell'AI](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- Come industria, abbiamo fatto significativi progressi nella privacy e sicurezza, alimentati in modo significativo da regolamenti come il GDPR (Regolamento Generale sulla Protezione dei Dati).
-- Tuttavia, con i sistemi di AI dobbiamo riconoscere la tensione tra la necessità di più dati personali per rendere i sistemi più personali ed efficaci – e la privacy.
-- Proprio come con la nascita dei computer connessi a Internet, stiamo anche assistendo a un enorme aumento del numero di problemi di sicurezza legati all'AI.
-- Allo stesso tempo, abbiamo visto l'AI essere utilizzata per migliorare la sicurezza. Ad esempio, la maggior parte degli scanner antivirus moderni è guidata da euristiche di AI.
-- Dobbiamo garantire che i nostri processi di Data Science si armonizzino con le ultime pratiche di privacy e sicurezza.
+- Come settore abbiamo fatto progressi significativi in Privacy e sicurezza, alimentati in gran parte da regolamenti come il GDPR (Regolamento Generale sulla Protezione dei Dati).
+- Tuttavia, con i sistemi AI dobbiamo riconoscere la tensione tra la necessità di avere più dati personali per rendere i sistemi più personali ed efficaci – e la privacy.
+- Proprio come con la nascita dei computer connessi a internet, stiamo assistendo anche a un forte aumento delle problematiche di sicurezza legate all'AI.
+- Allo stesso tempo, abbiamo visto l’AI usata per migliorare la sicurezza. Ad esempio, la maggior parte degli scanner antivirus moderni oggi si basa su euristiche AI.
+- Dobbiamo garantire che i nostri processi di Data Science si integrino armoniosamente con le più recenti pratiche di privacy e sicurezza.
-### Trasparenza
-I sistemi di AI dovrebbero essere comprensibili. Una parte cruciale della trasparenza è spiegare il comportamento dei sistemi di AI e dei loro componenti. Migliorare la comprensione dei sistemi di AI richiede che gli stakeholder comprendano come e perché funzionano, in modo che possano identificare potenziali problemi di prestazioni, preoccupazioni sulla sicurezza e privacy, bias, pratiche esclusive o risultati non intenzionali. Crediamo anche che coloro che utilizzano sistemi di AI dovrebbero essere onesti e trasparenti su quando, perché e come scelgono di implementarli, così come sui limiti dei sistemi che utilizzano. Ad esempio, se una banca utilizza un sistema di AI per supportare le sue decisioni di prestito ai consumatori, è importante esaminare i risultati e comprendere quali dati influenzano le raccomandazioni del sistema. I governi stanno iniziando a regolamentare l'AI in vari settori, quindi i data scientist e le organizzazioni devono spiegare se un sistema di AI soddisfa i requisiti normativi, specialmente quando c'è un risultato indesiderato.
+### Trasparenza
+I sistemi AI dovrebbero essere comprensibili. Una parte cruciale della trasparenza è spiegare il comportamento dei sistemi AI e dei loro componenti. Migliorare la comprensione dei sistemi AI richiede che gli stakeholder capiscano come e perché funzionano, per poter individuare problemi di prestazione, sicurezza e privacy, bias, pratiche escludenti o esiti imprevisti. Crediamo inoltre che chi usa sistemi AI dovrebbe essere onesto e trasparente su quando, perché e come sceglie di implementarli, nonché sui limiti dei sistemi utilizzati. Per esempio, se una banca utilizza un sistema AI per supportare le decisioni di prestito ai consumatori, è importante esaminare i risultati e capire quali dati influenzano le raccomandazioni del sistema. I governi stanno iniziando a regolamentare l'AI in tutti i settori, quindi data scientist e organizzazioni devono spiegare se un sistema AI soddisfa i requisiti normativi, soprattutto se si verifica un esito indesiderato.
> [🎥 Clicca qui per un video: trasparenza nell'AI](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- Poiché i sistemi di AI sono così complessi, è difficile capire come funzionano e interpretare i risultati.
-- Questa mancanza di comprensione influisce sul modo in cui questi sistemi vengono gestiti, operativizzati e documentati.
-- Ancora più importante, questa mancanza di comprensione influisce sulle decisioni prese utilizzando i risultati prodotti da questi sistemi.
+- Poiché i sistemi AI sono così complessi, è difficile capire come funzionano e interpretare i risultati.
+- Questa mancanza di comprensione influisce sul modo in cui questi sistemi vengono gestiti, operazionalizzati e documentati.
+- E ancora più importante, questa mancanza di comprensione influisce sulle decisioni prese utilizzando i risultati prodotti da questi sistemi.
### Responsabilità
+
+Le persone che progettano e implementano sistemi AI devono essere responsabili di come i loro sistemi operano. La necessità di responsabilità è particolarmente cruciale con tecnologie sensibili come il riconoscimento facciale. Recentemente, c'è stata una crescente domanda di tecnologia di riconoscimento facciale, soprattutto da parte delle forze dell'ordine che vedono il potenziale della tecnologia per usi come il ritrovamento di bambini scomparsi. Tuttavia, queste tecnologie potrebbero potenzialmente essere usate da un governo per mettere a rischio le libertà fondamentali dei cittadini, per esempio consentendo la sorveglianza continua di individui specifici. Pertanto, data scientist e organizzazioni devono essere responsabili di come il loro sistema AI impatta individui o la società.
-Le persone che progettano e implementano sistemi di AI devono essere responsabili del modo in cui i loro sistemi operano. La necessità di responsabilità è particolarmente cruciale con tecnologie sensibili come il riconoscimento facciale. Recentemente, c'è stata una crescente domanda di tecnologia di riconoscimento facciale, soprattutto da parte delle organizzazioni di polizia che vedono il potenziale della tecnologia in usi come trovare bambini scomparsi. Tuttavia, queste tecnologie potrebbero essere utilizzate da un governo per mettere a rischio le libertà fondamentali dei cittadini, ad esempio, consentendo la sorveglianza continua di individui specifici. Pertanto, i data scientist e le organizzazioni devono essere responsabili dell'impatto dei loro sistemi di AI sugli individui o sulla società.
+[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Approccio di Microsoft all'AI responsabile")
-[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Approccio di Microsoft all'AI responsabile")
+> 🎥 Clicca l'immagine sopra per un video: Avvisi sulla sorveglianza di massa tramite riconoscimento facciale
-> 🎥 Clicca sull'immagine sopra per un video: Avvertimenti sulla sorveglianza di massa attraverso il riconoscimento facciale
+In definitiva, una delle grandi questioni per la nostra generazione, come prima generazione che porta l'AI alla società, è come garantire che i computer rimangano responsabili verso le persone e come assicurare che chi progetta i computer rimanga responsabile verso tutti gli altri.
-Alla fine, una delle domande più grandi per la nostra generazione, come la prima generazione che sta portando l'AI nella società, è come garantire che i computer rimangano responsabili verso le persone e come garantire che le persone che progettano i computer rimangano responsabili verso tutti gli altri.
+## Valutazione d'impatto
-## Valutazione dell'impatto
+Prima di addestrare un modello di machine learning, è importante condurre una valutazione d'impatto per comprendere lo scopo del sistema AI; qual è l'uso previsto; dove sarà distribuito; e chi interagirà con il sistema. Questi aspetti sono utili per i revisori o i tester che valutano il sistema per sapere quali fattori considerare quando identificano potenziali rischi e conseguenze attese.
-Prima di addestrare un modello di machine learning, è importante condurre una valutazione dell'impatto per comprendere lo scopo del sistema di AI; quale sarà l'uso previsto; dove sarà implementato; e chi interagirà con il sistema. Questi aspetti sono utili per i revisori o i tester che valutano il sistema per sapere quali fattori considerare quando si identificano potenziali rischi e conseguenze attese.
+Le seguenti sono aree di interesse quando si conduce una valutazione d'impatto:
-Le seguenti sono aree di interesse quando si conduce una valutazione dell'impatto:
+* **Impatto negativo sugli individui**. Essere consapevoli di qualsiasi restrizione o requisito, uso non supportato o limitazioni note che ostacolano la performance del sistema è vitale per assicurare che il sistema non venga usato in modo da causare danni agli individui.
+* **Requisiti dei dati**. Capire come e dove il sistema utilizzerà i dati consente ai revisori di esplorare eventuali requisiti di dati di cui occorre essere consapevoli (es. regolamentazioni GDPR o HIPAA). Inoltre, esaminare se la sorgente o la quantità di dati è adeguata per l'addestramento.
+* **Riepilogo dell'impatto**. Raccogliere una lista dei potenziali danni che potrebbero sorgere dall'uso del sistema. Durante il ciclo di vita del ML, verificare se le problematiche identificate sono mitigate o affrontate.
+* **Obiettivi applicabili** per ciascuno dei sei principi fondamentali. Valutare se gli obiettivi di ciascun principio sono raggiunti e se ci sono lacune.
-* **Impatto negativo sugli individui**. Essere consapevoli di eventuali restrizioni o requisiti, usi non supportati o limitazioni note che ostacolano le prestazioni del sistema è vitale per garantire che il sistema non venga utilizzato in modo da causare danni agli individui.
-* **Requisiti dei dati**. Comprendere come e dove il sistema utilizzerà i dati consente ai revisori di esplorare eventuali requisiti di dati di cui essere consapevoli (ad esempio, regolamenti GDPR o HIPPA). Inoltre, esaminare se la fonte o la quantità di dati è sufficiente per l'addestramento.
-* **Riepilogo dell'impatto**. Raccogliere un elenco di potenziali danni che potrebbero derivare dall'uso del sistema. Durante il ciclo di vita del ML, verificare se i problemi identificati sono mitigati o affrontati.
-* **Obiettivi applicabili** per ciascuno dei sei principi fondamentali. Valutare se gli obiettivi di ciascun principio sono soddisfatti e se ci sono lacune.
## Debugging con AI responsabile
-Simile al debugging di un'applicazione software, il debugging di un sistema di AI è un processo necessario per identificare e risolvere problemi nel sistema. Ci sono molti fattori che potrebbero influenzare un modello che non funziona come previsto o in modo responsabile. La maggior parte delle metriche tradizionali di prestazione del modello sono aggregati quantitativi delle prestazioni del modello, che non sono sufficienti per analizzare come un modello viola i principi di AI responsabile. Inoltre, un modello di machine learning è una scatola nera che rende difficile capire cosa guida il suo risultato o fornire spiegazioni quando commette un errore. Più avanti in questo corso, impareremo come utilizzare il dashboard di AI responsabile per aiutare a fare debugging dei sistemi di AI. Il dashboard fornisce uno strumento olistico per i data scientist e gli sviluppatori di AI per eseguire:
+Simile al debugging di un’applicazione software, il debugging di un sistema AI è un processo necessario per identificare e risolvere problemi nel sistema. Ci sono molti fattori che potrebbero influire sul fatto che un modello non si comporti come previsto o responsabilmente. La maggior parte delle metriche tradizionali delle prestazioni del modello sono aggregati quantitativi delle prestazioni, insufficienti per analizzare come un modello viola i principi di AI responsabile. Inoltre, un modello di machine learning è una scatola nera che rende difficile comprendere cosa determina il suo risultato o fornire spiegazioni quando commette un errore. Più avanti in questo corso, impareremo a usare la dashboard Responsible AI per aiutare nel debugging dei sistemi AI. La dashboard fornisce uno strumento olistico per data scientist e sviluppatori AI per:
-* **Analisi degli errori**. Per identificare la distribuzione degli errori del modello che può influenzare l'equità o l'affidabilità del sistema.
-* **Panoramica del modello**. Per scoprire dove ci sono disparità nelle prestazioni del modello tra i gruppi di dati.
-* **Analisi dei dati**. Per comprendere la distribuzione dei dati e identificare eventuali bias nei dati che potrebbero portare a problemi di equità, inclusività e affidabilità.
-* **Interpretabilità del modello**. Per comprendere cosa influenza o guida le previsioni del modello. Questo aiuta a spiegare il comportamento del modello, che è importante per la trasparenza e la responsabilità.
+* **Analisi degli errori**. Per identificare la distribuzione degli errori del modello che possono influenzare l’equità o l’affidabilità del sistema.
+* **Panoramica del modello**. Per scoprire dove ci sono disparità nelle prestazioni del modello tra i diversi gruppi di dati.
+* **Analisi dei dati**. Per comprendere la distribuzione dei dati e identificare eventuali bias potenziali nei dati che potrebbero causare problemi di equità, inclusività e affidabilità.
+* **Interpretabilità del modello**. Per capire cosa influisce o influenza le predizioni del modello. Questo aiuta a spiegare il comportamento del modello, importante per trasparenza e responsabilità.
-## 🚀 Sfida
-Per prevenire l'introduzione di danni fin dall'inizio, dovremmo:
+## 🚀 Sfida
+
+Per prevenire che i danni vengano introdotti fin dall'inizio, dovremmo:
- avere una diversità di background e prospettive tra le persone che lavorano sui sistemi
- investire in dataset che riflettano la diversità della nostra società
-- sviluppare metodi migliori durante il ciclo di vita del machine learning per rilevare e correggere l'AI responsabile quando si verifica
+- sviluppare metodi migliori durante tutto il ciclo di vita del machine learning per rilevare e correggere l'AI responsabile quando si verifica
-Pensa a scenari reali in cui l'inaffidabilità di un modello è evidente nella costruzione e nell'uso del modello. Cos'altro dovremmo considerare?
+Rifletti su scenari reali in cui l'affidabilità di un modello è evidente nella costruzione e nell'uso del modello. Cos'altro dovremmo considerare?
## [Quiz post-lezione](https://ff-quizzes.netlify.app/en/ml/)
## Revisione e studio autonomo
+
-In questa lezione, hai appreso alcune basi dei concetti di equità e ingiustizia nel machine learning.
-Guarda questo workshop per approfondire gli argomenti:
+In questa lezione, hai appreso alcune nozioni di base sui concetti di equità e ingiustizia nel machine learning.
+
+Guarda questo workshop per approfondire i temi:
-- Alla ricerca di un'IA responsabile: Portare i principi nella pratica con Besmira Nushi, Mehrnoosh Sameki e Amit Sharma
+- In the pursuit of responsible AI: Bringing principles to practice di Besmira Nushi, Mehrnoosh Sameki e Amit Sharma
-[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: Un framework open-source per costruire un'IA responsabile")
+[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI")
-> 🎥 Clicca sull'immagine sopra per un video: RAI Toolbox: Un framework open-source per costruire un'IA responsabile con Besmira Nushi, Mehrnoosh Sameki e Amit Sharma
+> 🎥 Clicca sull'immagine sopra per un video: RAI Toolbox: An open-source framework for building responsible AI di Besmira Nushi, Mehrnoosh Sameki e Amit Sharma
-Leggi anche:
+Inoltre, leggi:
-- Centro risorse RAI di Microsoft: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
+- Centro risorse RAI di Microsoft: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
-- Gruppo di ricerca FATE di Microsoft: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
+- Gruppo di ricerca FATE di Microsoft: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
-RAI Toolbox:
+RAI Toolbox:
- [Repository GitHub di Responsible AI Toolbox](https://github.com/microsoft/responsible-ai-toolbox)
-Leggi gli strumenti di Azure Machine Learning per garantire l'equità:
+Leggi degli strumenti di Azure Machine Learning per garantire l'equità:
-- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
+- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
## Compito
@@ -157,5 +161,7 @@ Leggi gli strumenti di Azure Machine Learning per garantire l'equità:
---
-**Disclaimer**:
-Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione.
\ No newline at end of file
+
+**Disclaimer**:
+Questo documento è stato tradotto utilizzando il servizio di traduzione AI [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire la precisione, si prega di notare che le traduzioni automatizzate possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa deve essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un essere umano. Non siamo responsabili per eventuali malintesi o interpretazioni errate derivanti dall’uso di questa traduzione.
+
\ No newline at end of file
diff --git a/translations/it/2-Regression/1-Tools/README.md b/translations/it/2-Regression/1-Tools/README.md
index e98c91160..98dab2e43 100644
--- a/translations/it/2-Regression/1-Tools/README.md
+++ b/translations/it/2-Regression/1-Tools/README.md
@@ -1,55 +1,55 @@
-# Introduzione a Python e Scikit-learn per modelli di regressione
+# Iniziare con Python e Scikit-learn per modelli di regressione
-
+
> Sketchnote di [Tomomi Imura](https://www.twitter.com/girlie_mac)
## [Quiz pre-lezione](https://ff-quizzes.netlify.app/en/ml/)
-> ### [Questa lezione è disponibile in R!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
+> ### [Questa lezione è disponibile anche in R!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
## Introduzione
-In queste quattro lezioni, scoprirai come costruire modelli di regressione. Discuteremo a breve a cosa servono. Ma prima di fare qualsiasi cosa, assicurati di avere gli strumenti giusti per iniziare il processo!
+In queste quattro lezioni scoprirai come costruire modelli di regressione. Discuteremo a breve a cosa servono. Ma prima di fare qualsiasi cosa, assicurati di avere gli strumenti giusti per iniziare il processo!
In questa lezione imparerai a:
-- Configurare il tuo computer per attività di machine learning locale.
-- Lavorare con i notebook Jupyter.
-- Utilizzare Scikit-learn, inclusa l'installazione.
+- Configurare il tuo computer per compiti di machine learning locale.
+- Lavorare con Jupyter Notebooks.
+- Usare Scikit-learn, incluso l’installazione.
- Esplorare la regressione lineare con un esercizio pratico.
## Installazioni e configurazioni
-[](https://youtu.be/-DfeD2k2Kj0 "ML per principianti - Configura i tuoi strumenti per costruire modelli di Machine Learning")
+[](https://youtu.be/-DfeD2k2Kj0 "ML per principianti -Configura i tuoi strumenti per costruire modelli di Machine Learning")
-> 🎥 Clicca sull'immagine sopra per un breve video su come configurare il tuo computer per il ML.
+> 🎥 Clicca sull’immagine sopra per un breve video che mostra come configurare il computer per ML.
-1. **Installa Python**. Assicurati che [Python](https://www.python.org/downloads/) sia installato sul tuo computer. Utilizzerai Python per molte attività di data science e machine learning. La maggior parte dei sistemi informatici include già un'installazione di Python. Sono disponibili utili [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) per semplificare la configurazione per alcuni utenti.
+1. **Installa Python**. Assicurati che [Python](https://www.python.org/downloads/) sia installato sul tuo computer. Userai Python per molti compiti di data science e machine learning. La maggior parte dei sistemi informatici include già un’installazione di Python. Sono disponibili anche utili [Pacchetti di Codifica Python](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) per semplificare l’installazione ad alcuni utenti.
- Alcuni utilizzi di Python richiedono una versione specifica del software, mentre altri ne richiedono una diversa. Per questo motivo, è utile lavorare all'interno di un [ambiente virtuale](https://docs.python.org/3/library/venv.html).
+ Alcuni usi di Python, tuttavia, richiedono una versione del software, mentre altri ne richiedono una diversa. Per questo motivo, è utile lavorare all’interno di un [ambiente virtuale](https://docs.python.org/3/library/venv.html).
-2. **Installa Visual Studio Code**. Assicurati di avere Visual Studio Code installato sul tuo computer. Segui queste istruzioni per [installare Visual Studio Code](https://code.visualstudio.com/) per l'installazione di base. Utilizzerai Python in Visual Studio Code in questo corso, quindi potrebbe essere utile ripassare come [configurare Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) per lo sviluppo in Python.
+2. **Installa Visual Studio Code**. Assicurati di aver installato Visual Studio Code sul tuo computer. Segui queste istruzioni per [installare Visual Studio Code](https://code.visualstudio.com/) per l’installazione di base. Userai Python in Visual Studio Code in questo corso, quindi potresti voler ripassare come [configurare Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) per lo sviluppo Python.
- > Familiarizza con Python lavorando attraverso questa raccolta di [moduli Learn](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)
+ > Abituati a Python lavorando con questa raccolta di [moduli di apprendimento](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)
>
> [](https://youtu.be/yyQM70vi7V8 "Configura Python con Visual Studio Code")
>
- > 🎥 Clicca sull'immagine sopra per un video: utilizzo di Python all'interno di VS Code.
+ > 🎥 Clicca sull’immagine sopra per un video: usare Python in VS Code.
-3. **Installa Scikit-learn**, seguendo [queste istruzioni](https://scikit-learn.org/stable/install.html). Poiché è necessario utilizzare Python 3, si consiglia di utilizzare un ambiente virtuale. Nota che, se stai installando questa libreria su un Mac M1, ci sono istruzioni speciali nella pagina collegata sopra.
+3. **Installa Scikit-learn**, seguendo [queste istruzioni](https://scikit-learn.org/stable/install.html). Dal momento che devi usare Python 3, è raccomandato lavorare in un ambiente virtuale. Nota che, se stai installando questa libreria su un Mac M1, ci sono istruzioni speciali sulla pagina collegata sopra.
-4. **Installa Jupyter Notebook**. Dovrai [installare il pacchetto Jupyter](https://pypi.org/project/jupyter/).
+1. **Installa Jupyter Notebook**. Dovrai [installare il pacchetto Jupyter](https://pypi.org/project/jupyter/).
-## Il tuo ambiente di sviluppo ML
+## Il tuo ambiente di lavoro ML
-Utilizzerai **notebook** per sviluppare il tuo codice Python e creare modelli di machine learning. Questo tipo di file è uno strumento comune per i data scientist e può essere identificato dal suffisso o estensione `.ipynb`.
+Userai **notebook** per sviluppare il tuo codice Python e creare modelli di machine learning. Questo tipo di file è uno strumento comune per i data scientist, e possono essere identificati dal loro suffisso o estensione `.ipynb`.
-I notebook sono un ambiente interattivo che consente al programmatore di scrivere codice e aggiungere note e documentazione intorno al codice, il che è molto utile per progetti sperimentali o orientati alla ricerca.
+I notebook sono un ambiente interattivo che permette allo sviluppatore sia di scrivere codice che di aggiungere note e documentazione attorno al codice, cosa molto utile per progetti sperimentali o orientati alla ricerca.
[](https://youtu.be/7E-jC8FLA2E "ML per principianti - Configura Jupyter Notebooks per iniziare a costruire modelli di regressione")
-> 🎥 Clicca sull'immagine sopra per un breve video su questo esercizio.
+> 🎥 Clicca sull’immagine sopra per un breve video che mostra questo esercizio.
### Esercizio - lavora con un notebook
@@ -57,64 +57,65 @@ In questa cartella troverai il file _notebook.ipynb_.
1. Apri _notebook.ipynb_ in Visual Studio Code.
- Un server Jupyter si avvierà con Python 3+. Troverai aree del notebook che possono essere `eseguite`, ovvero blocchi di codice. Puoi eseguire un blocco di codice selezionando l'icona che sembra un pulsante di riproduzione.
+ Partirà un server Jupyter con Python 3+ attivato. Troverai aree del notebook che possono essere `eseguite`, pezzi di codice. Puoi eseguire un blocco di codice selezionando l’icona che assomiglia a un pulsante di riproduzione.
-2. Seleziona l'icona `md` e aggiungi un po' di markdown, con il seguente testo **# Benvenuto nel tuo notebook**.
+1. Seleziona l’icona `md` e aggiungi un po’ di markdown, e il seguente testo **# Benvenuto nel tuo notebook**.
- Successivamente, aggiungi del codice Python.
+ Poi, aggiungi del codice Python.
-3. Scrivi **print('hello notebook')** nel blocco di codice.
-4. Seleziona la freccia per eseguire il codice.
+1. Digita **print('hello notebook')** nel blocco di codice.
+1. Seleziona la freccia per eseguire il codice.
- Dovresti vedere la dichiarazione stampata:
+ Vedrai la stampa della seguente dichiarazione:
```output
hello notebook
```
-
+
Puoi alternare il tuo codice con commenti per auto-documentare il notebook.
-✅ Pensa per un momento a quanto sia diverso l'ambiente di lavoro di uno sviluppatore web rispetto a quello di un data scientist.
+✅ Pensa per un minuto a quanto è diverso l’ambiente di lavoro di uno sviluppatore web rispetto a quello di un data scientist.
-## Iniziare con Scikit-learn
+## Partire con Scikit-learn
-Ora che Python è configurato nel tuo ambiente locale e ti senti a tuo agio con i notebook Jupyter, familiarizziamo con Scikit-learn (si pronuncia `sci` come in `science`). Scikit-learn fornisce un'[API estesa](https://scikit-learn.org/stable/modules/classes.html#api-ref) per aiutarti a svolgere attività di ML.
+Ora che Python è configurato nel tuo ambiente locale e hai confidenza con i Jupyter Notebooks, familiarizziamo con Scikit-learn (si pronuncia `sci` come `science`). Scikit-learn fornisce un [API estesa](https://scikit-learn.org/stable/modules/classes.html#api-ref) per aiutarti a svolgere compiti di ML.
-Secondo il loro [sito web](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn è una libreria open source di machine learning che supporta l'apprendimento supervisionato e non supervisionato. Fornisce anche vari strumenti per il fitting dei modelli, la pre-elaborazione dei dati, la selezione e la valutazione dei modelli, e molte altre utilità."
+Secondo il loro [sito web](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn è una libreria open source di machine learning che supporta l’apprendimento supervisionato e non supervisionato. Fornisce inoltre vari strumenti per il fitting dei modelli, preprocessing dei dati, selezione e valutazione dei modelli e molte altre utility."
-In questo corso utilizzerai Scikit-learn e altri strumenti per costruire modelli di machine learning per svolgere quelle che chiamiamo attività di 'machine learning tradizionale'. Abbiamo deliberatamente evitato reti neurali e deep learning, poiché sono meglio trattati nel nostro prossimo curriculum 'AI per principianti'.
+In questo corso, utilizzerai Scikit-learn ed altri strumenti per costruire modelli di machine learning per svolgere ciò che chiamiamo 'machine learning tradizionale'. Abbiamo volutamente evitato reti neurali e deep learning, che saranno meglio trattati nel nostro prossimo curriculum 'AI per Principianti'.
-Scikit-learn rende semplice costruire modelli e valutarli per l'uso. Si concentra principalmente sull'utilizzo di dati numerici e contiene diversi dataset pronti per l'uso come strumenti di apprendimento. Include anche modelli pre-costruiti per gli studenti da provare. Esploriamo il processo di caricamento di dati preconfezionati e utilizziamo un estimatore per il primo modello di ML con Scikit-learn con alcuni dati di base.
+Scikit-learn rende semplice costruire modelli e valutarli per l’uso. È principalmente incentrato sull’uso di dati numerici e contiene diversi dataset pronti all’uso come strumenti di apprendimento. Include anche modelli pre-costruiti per gli studenti da provare. Esploriamo il processo di caricamento di dati preconfezionati e l’uso di uno stimatore incorporato, il primo modello ML con Scikit-learn con dati di base.
-## Esercizio - il tuo primo notebook con Scikit-learn
+## Esercizio - il tuo primo notebook Scikit-learn
+
+> Questo tutorial è ispirato dall’[esempio di regressione lineare](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) sul sito di Scikit-learn.
-> Questo tutorial è stato ispirato dall'[esempio di regressione lineare](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) sul sito web di Scikit-learn.
[](https://youtu.be/2xkXL5EUpS0 "ML per principianti - Il tuo primo progetto di regressione lineare in Python")
-> 🎥 Clicca sull'immagine sopra per un breve video su questo esercizio.
+> 🎥 Clicca sull’immagine sopra per un breve video che mostra questo esercizio.
-Nel file _notebook.ipynb_ associato a questa lezione, svuota tutte le celle premendo l'icona del 'cestino'.
+Nel file _notebook.ipynb_ associato a questa lezione, cancella tutte le celle premendo l’icona del 'cestino'.
-In questa sezione lavorerai con un piccolo dataset sul diabete integrato in Scikit-learn per scopi di apprendimento. Immagina di voler testare un trattamento per pazienti diabetici. I modelli di Machine Learning potrebbero aiutarti a determinare quali pazienti risponderebbero meglio al trattamento, basandosi su combinazioni di variabili. Anche un modello di regressione molto semplice, quando visualizzato, potrebbe mostrare informazioni sulle variabili che ti aiuterebbero a organizzare i tuoi ipotetici studi clinici.
+In questa sezione lavorerai con un piccolo dataset sul diabete incluso in Scikit-learn per scopi didattici. Immagina di voler testare un trattamento per pazienti diabetici. I modelli di Machine Learning potrebbero aiutarti a determinare quali pazienti risponderebbero meglio al trattamento, basandosi su combinazioni di variabili. Anche un modello di regressione molto basilare, visualizzato, può mostrare informazioni sulle variabili che ti aiuterebbero a organizzare i tuoi ipotetici trial clinici.
-✅ Esistono molti tipi di metodi di regressione, e quale scegliere dipende dalla risposta che stai cercando. Se vuoi prevedere l'altezza probabile di una persona di una certa età, utilizzeresti la regressione lineare, poiché stai cercando un **valore numerico**. Se sei interessato a scoprire se un tipo di cucina dovrebbe essere considerato vegano o meno, stai cercando un **assegnamento di categoria**, quindi utilizzeresti la regressione logistica. Immagina alcune domande che puoi porre ai dati e quale di questi metodi sarebbe più appropriato.
+✅ Esistono molti tipi di metodi di regressione, e quale scegli dipende dalla risposta che cerchi. Se vuoi predire l’altezza probabile per una persona di una certa età, useresti la regressione lineare, poiché cerchi un **valore numerico**. Se invece sei interessato a scoprire se un tipo di cucina debba essere considerato vegano o meno, stai cercando un **assegnamento di categoria**, quindi useresti la regressione logistica. Imparerai di più sulla regressione logistica più avanti. Pensa un po’ ad alcune domande che puoi porre ai dati e quale di questi metodi sarebbe più appropriato.
-Iniziamo con questo compito.
+Iniziamo questo compito.
-### Importa librerie
+### Importa le librerie
Per questo compito importeremo alcune librerie:
-- **matplotlib**. È uno strumento utile per [grafici](https://matplotlib.org/) e lo utilizzeremo per creare un grafico a linee.
+- **matplotlib**. È un utile [strumento per grafici](https://matplotlib.org/) e lo useremo per creare un grafico a linee.
- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) è una libreria utile per gestire dati numerici in Python.
- **sklearn**. Questa è la libreria [Scikit-learn](https://scikit-learn.org/stable/user_guide.html).
Importa alcune librerie per aiutarti nei tuoi compiti.
-1. Aggiungi le importazioni scrivendo il seguente codice:
+1. Aggiungi gli import digitando il seguente codice:
```python
import matplotlib.pyplot as plt
@@ -122,26 +123,26 @@ Importa alcune librerie per aiutarti nei tuoi compiti.
from sklearn import datasets, linear_model, model_selection
```
- Sopra stai importando `matplotlib`, `numpy` e stai importando `datasets`, `linear_model` e `model_selection` da `sklearn`. `model_selection` viene utilizzato per suddividere i dati in set di addestramento e test.
+ Sopra stai importando `matplotlib`, `numpy` e stai importando `datasets`, `linear_model` e `model_selection` da `sklearn`. `model_selection` è usato per dividere i dati in set di addestramento e test.
### Il dataset sul diabete
-Il [dataset sul diabete](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) integrato include 442 campioni di dati sul diabete, con 10 variabili caratteristiche, alcune delle quali includono:
+Il built-in [dataset sul diabete](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) include 442 campioni di dati relativi al diabete, con 10 variabili caratteristiche, alcune delle quali includono:
- age: età in anni
- bmi: indice di massa corporea
- bp: pressione sanguigna media
-- s1 tc: T-Cells (un tipo di globuli bianchi)
+- s1 tc: cellule T (un tipo di globuli bianchi)
-✅ Questo dataset include il concetto di 'sesso' come variabile caratteristica importante per la ricerca sul diabete. Molti dataset medici includono questo tipo di classificazione binaria. Pensa un po' a come categorizzazioni come questa potrebbero escludere alcune parti della popolazione dai trattamenti.
+✅ Questo dataset include il concetto di 'sesso' come variabile importante per le ricerche sul diabete. Molti dataset medici includono questo tipo di classificazione binaria. Pensa un po’ a come categorie come questa possano escludere alcune parti della popolazione dai trattamenti.
-Ora, carica i dati X e y.
+Ora carichiamo i dati X e y.
-> 🎓 Ricorda, questo è apprendimento supervisionato, e abbiamo bisogno di un target 'y' nominato.
+> 🎓 Ricorda, questo è apprendimento supervisionato, e abbiamo bisogno di un target denominato 'y'.
-In una nuova cella di codice, carica il dataset sul diabete chiamando `load_diabetes()`. L'input `return_X_y=True` indica che `X` sarà una matrice di dati e `y` sarà il target di regressione.
+In una nuova cella di codice, carica il dataset sul diabete chiamando `load_diabetes()`. L’input `return_X_y=True` indica che `X` sarà una matrice di dati e `y` sarà il target di regressione.
-1. Aggiungi alcuni comandi di stampa per mostrare la forma della matrice di dati e il suo primo elemento:
+1. Aggiungi alcuni comandi print per mostrare la forma della matrice dati e il suo primo elemento:
```python
X, y = datasets.load_diabetes(return_X_y=True)
@@ -149,7 +150,7 @@ In una nuova cella di codice, carica il dataset sul diabete chiamando `load_diab
print(X[0])
```
- Quello che ottieni come risposta è una tupla. Quello che stai facendo è assegnare i primi due valori della tupla rispettivamente a `X` e `y`. Scopri di più [sulle tuple](https://wikipedia.org/wiki/Tuple).
+ Quello che ricevi come risposta è una tupla. Stai assegnando i primi due valori della tupla a `X` e `y` rispettivamente. Approfondisci le [tuple](https://wikipedia.org/wiki/Tuple).
Puoi vedere che questi dati hanno 442 elementi organizzati in array di 10 elementi:
@@ -159,39 +160,39 @@ In una nuova cella di codice, carica il dataset sul diabete chiamando `load_diab
-0.04340085 -0.00259226 0.01990842 -0.01764613]
```
- ✅ Pensa un po' alla relazione tra i dati e il target di regressione. La regressione lineare prevede relazioni tra la caratteristica X e la variabile target y. Riesci a trovare il [target](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) per il dataset sul diabete nella documentazione? Cosa sta dimostrando questo dataset, dato il target?
+ ✅ Pensa un po’ al rapporto tra i dati e il target di regressione. La regressione lineare predice le relazioni tra la caratteristica X e la variabile target y. Puoi trovare il [target](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) nel dataset sul diabete nella documentazione? Cosa dimostra questo dataset, dato quel target?
-2. Successivamente, seleziona una parte di questo dataset da tracciare selezionando la terza colonna del dataset. Puoi farlo utilizzando l'operatore `:` per selezionare tutte le righe e poi selezionando la terza colonna utilizzando l'indice (2). Puoi anche rimodellare i dati per essere un array 2D - come richiesto per il tracciamento - utilizzando `reshape(n_rows, n_columns)`. Se uno dei parametri è -1, la dimensione corrispondente viene calcolata automaticamente.
+2. Successivamente, seleziona una porzione di questo dataset da plottare scegliendo la terza colonna del dataset. Puoi farlo usando l’operatore `:` per selezionare tutte le righe, poi selezionando la terza colonna tramite l’indice (2). Puoi anche rimodellare i dati per avere un array 2D - come richiesto per il plot - usando `reshape(n_righe, n_colonne)`. Se uno dei parametri è -1, la dimensione corrispondente è calcolata automaticamente.
```python
X = X[:, 2]
X = X.reshape((-1,1))
```
- ✅ In qualsiasi momento, stampa i dati per verificarne la forma.
+ ✅ In ogni momento, stampa i dati per verificarne la forma.
-3. Ora che hai i dati pronti per essere tracciati, puoi vedere se una macchina può aiutarti a determinare una divisione logica tra i numeri in questo dataset. Per fare ciò, devi dividere sia i dati (X) che il target (y) in set di test e di addestramento. Scikit-learn ha un modo semplice per farlo; puoi dividere i tuoi dati di test in un punto specifico.
+3. Ora che hai dati pronti per il plot, puoi vedere se una macchina può aiutare a determinare una divisione logica tra i numeri in questo dataset. Per fare questo, devi suddividere sia i dati (X) che il target (y) in set di test e di addestramento. Scikit-learn ha un modo semplice per farlo; puoi dividere i tuoi dati di test in un punto dato.
```python
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33)
```
-4. Ora sei pronto per addestrare il tuo modello! Carica il modello di regressione lineare e addestralo con i tuoi set di addestramento X e y utilizzando `model.fit()`:
+4. Ora sei pronto per addestrare il modello! Carica il modello di regressione lineare e addestralo con i tuoi set di addestramento X e y usando `model.fit()`:
```python
model = linear_model.LinearRegression()
model.fit(X_train, y_train)
```
- ✅ `model.fit()` è una funzione che vedrai in molte librerie di ML come TensorFlow.
+ ✅ `model.fit()` è una funzione che vedrai in molte librerie ML come TensorFlow
-5. Successivamente, crea una previsione utilizzando i dati di test, utilizzando la funzione `predict()`. Questo sarà utilizzato per tracciare la linea tra i gruppi di dati.
+5. Poi, crea una predizione usando i dati di test, utilizzando la funzione `predict()`. Questa sarà usata per tracciare la linea tra i gruppi di dati
```python
y_pred = model.predict(X_test)
```
-6. Ora è il momento di mostrare i dati in un grafico. Matplotlib è uno strumento molto utile per questo compito. Crea un grafico a dispersione di tutti i dati di test X e y e utilizza la previsione per tracciare una linea nel punto più appropriato, tra i gruppi di dati del modello.
+6. Adesso è il momento di mostrare i dati in un grafico. Matplotlib è uno strumento molto utile per questo compito. Crea uno scatterplot di tutti i dati di test X e y, e usa la predizione per disegnare una linea nella posizione più appropriata, tra i raggruppamenti di dati del modello.
```python
plt.scatter(X_test, y_test, color='black')
@@ -202,22 +203,24 @@ In una nuova cella di codice, carica il dataset sul diabete chiamando `load_diab
plt.show()
```
- 
-✅ Pensa un po' a cosa sta succedendo qui. Una linea retta attraversa molti piccoli punti di dati, ma cosa sta facendo esattamente? Riesci a vedere come questa linea dovrebbe permetterti di prevedere dove un nuovo punto dati, mai visto prima, dovrebbe posizionarsi in relazione all'asse y del grafico? Prova a mettere in parole l'utilità pratica di questo modello.
+ 
+
+
+ ✅ Rifletti un po' su cosa sta succedendo qui. Una linea retta attraversa molti piccoli punti di dati, ma cosa sta facendo esattamente? Riesci a vedere come dovresti poter utilizzare questa linea per prevedere dove un nuovo punto dati mai visto dovrebbe collocarsi in relazione all'asse y del grafico? Prova a mettere in parole l'uso pratico di questo modello.
-Congratulazioni, hai costruito il tuo primo modello di regressione lineare, creato una previsione con esso e l'hai visualizzata in un grafico!
+Congratulazioni, hai costruito il tuo primo modello di regressione lineare, creato una previsione con esso e l'hai mostrato in un grafico!
---
## 🚀Sfida
-Traccia un'altra variabile da questo dataset. Suggerimento: modifica questa riga: `X = X[:,2]`. Considerando il target di questo dataset, cosa riesci a scoprire sulla progressione del diabete come malattia?
+Traccia una variabile diversa da questo dataset. Suggerimento: modifica questa linea: `X = X[:,2]`. Considerando il target di questo dataset, cosa riesci a scoprire sulla progressione del diabete come malattia?
## [Quiz post-lezione](https://ff-quizzes.netlify.app/en/ml/)
-## Revisione & Studio Autonomo
+## Revisione e Autoapprendimento
-In questo tutorial, hai lavorato con la regressione lineare semplice, piuttosto che con la regressione univariata o multipla. Leggi un po' sulle differenze tra questi metodi, oppure dai un'occhiata a [questo video](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef).
+In questo tutorial, hai lavorato con la regressione lineare semplice, piuttosto che con la regressione lineare univariata o multipla. Leggi un po' sulle differenze tra questi metodi, oppure guarda [questo video](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef)
-Leggi di più sul concetto di regressione e pensa a quali tipi di domande possono essere risposte con questa tecnica. Segui [questo tutorial](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) per approfondire la tua comprensione.
+Leggi di più sul concetto di regressione e rifletti su quali tipi di domande possono essere risposte con questa tecnica. Segui questo [tutorial](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) per approfondire la tua comprensione.
## Compito
@@ -225,5 +228,7 @@ Leggi di più sul concetto di regressione e pensa a quali tipi di domande posson
---
-**Disclaimer**:
-Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione.
\ No newline at end of file
+
+**Disclaimer**:
+Questo documento è stato tradotto utilizzando il servizio di traduzione AI [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire la precisione, si prega di notare che le traduzioni automatizzate possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa deve essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un essere umano. Non siamo responsabili per eventuali malintesi o interpretazioni errate derivanti dall’uso di questa traduzione.
+
\ No newline at end of file
diff --git a/translations/it/2-Regression/2-Data/README.md b/translations/it/2-Regression/2-Data/README.md
index d763c3e88..9d1a84373 100644
--- a/translations/it/2-Regression/2-Data/README.md
+++ b/translations/it/2-Regression/2-Data/README.md
@@ -1,62 +1,62 @@
-# Costruire un modello di regressione con Scikit-learn: preparare e visualizzare i dati
+# Costruire un modello di regressione usando Scikit-learn: preparare e visualizzare i dati
-
+
Infografica di [Dasani Madipalli](https://twitter.com/dasani_decoded)
-## [Quiz pre-lezione](https://ff-quizzes.netlify.app/en/ml/)
+## [Quiz prima della lezione](https://ff-quizzes.netlify.app/en/ml/)
> ### [Questa lezione è disponibile in R!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
## Introduzione
-Ora che hai configurato gli strumenti necessari per iniziare a costruire modelli di machine learning con Scikit-learn, sei pronto per iniziare a porre domande ai tuoi dati. Quando lavori con i dati e applichi soluzioni di ML, è molto importante sapere come formulare la domanda giusta per sfruttare al meglio il potenziale del tuo dataset.
+Ora che hai configurato gli strumenti necessari per iniziare a costruire modelli di machine learning con Scikit-learn, sei pronto per iniziare a fare domande ai tuoi dati. Mentre lavori con i dati e applichi soluzioni ML, è molto importante capire come porre la domanda giusta per sbloccare correttamente il potenziale del tuo dataset.
In questa lezione imparerai:
-- Come preparare i dati per la costruzione di modelli.
-- Come utilizzare Matplotlib per la visualizzazione dei dati.
+- Come preparare i tuoi dati per la costruzione del modello.
+- Come usare Matplotlib per la visualizzazione dei dati.
+- Come usare Seaborn per una visualizzazione dei dati più espressiva.
-## Formulare la domanda giusta sui tuoi dati
+## Porre la domanda giusta ai tuoi dati
-La domanda che vuoi rispondere determinerà il tipo di algoritmi di ML che utilizzerai. E la qualità della risposta che otterrai dipenderà fortemente dalla natura dei tuoi dati.
+La domanda a cui vuoi rispondere determinerà quale tipo di algoritmi di ML utilizzerai. E la qualità della risposta che otterrai dipenderà fortemente dalla natura dei tuoi dati.
-Dai un'occhiata ai [dati](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) forniti per questa lezione. Puoi aprire questo file .csv in VS Code. Una rapida occhiata mostra immediatamente che ci sono spazi vuoti e un mix di stringhe e dati numerici. C'è anche una colonna strana chiamata 'Package' dove i dati sono un mix tra 'sacks', 'bins' e altri valori. I dati, in effetti, sono un po' disordinati.
+Dai un'occhiata ai [dati](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) forniti per questa lezione. Puoi aprire questo file .csv in VS Code. Un'occhiata veloce mostra immediatamente che ci sono spazi vuoti e una mescolanza di stringhe e dati numerici. C'è anche una colonna strana chiamata 'Package' dove i dati sono un misto tra 'sacchi', 'cassette' e altri valori. I dati, in effetti, sono un po' disordinati.
-[](https://youtu.be/5qGjczWTrDQ "ML per principianti - Come analizzare e pulire un dataset")
+[](https://youtu.be/5qGjczWTrDQ "ML for beginners - Come analizzare e pulire un dataset")
> 🎥 Clicca sull'immagine sopra per un breve video che mostra come preparare i dati per questa lezione.
-In effetti, non è molto comune ricevere un dataset completamente pronto per creare un modello di ML direttamente. In questa lezione, imparerai come preparare un dataset grezzo utilizzando librerie standard di Python. Imparerai anche varie tecniche per visualizzare i dati.
+In realtà, non è molto comune ricevere un dataset completamente pronto all'uso per creare un modello ML già pronto. In questa lezione, imparerai come preparare un dataset grezzo usando le librerie standard di Python. Imparerai anche diverse tecniche per visualizzare i dati.
## Caso di studio: 'il mercato delle zucche'
-In questa cartella troverai un file .csv nella cartella principale `data` chiamato [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) che include 1757 righe di dati sul mercato delle zucche, suddivisi in gruppi per città. Questi sono dati grezzi estratti dai [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) distribuiti dal Dipartimento dell'Agricoltura degli Stati Uniti.
+In questa cartella troverai un file .csv nella cartella principale `data` chiamato [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) che include 1757 righe di dati sul mercato delle zucche, raggruppate per città. Questi sono dati grezzi estratti dai [Rapporti Standard dei Mercati Terminali delle Colture Speciali](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) distribuiti dal Dipartimento dell'Agricoltura degli Stati Uniti.
### Preparare i dati
-Questi dati sono di dominio pubblico. Possono essere scaricati in molti file separati, per città, dal sito web dell'USDA. Per evitare troppi file separati, abbiamo concatenato tutti i dati delle città in un unico foglio di calcolo, quindi abbiamo già _preparato_ un po' i dati. Ora, diamo un'occhiata più da vicino ai dati.
+Questi dati sono di dominio pubblico. Possono essere scaricati in molti file separati, per città, dal sito USDA. Per evitare troppi file separati, abbiamo concatenato tutti i dati delle città in un unico foglio di calcolo, quindi abbiamo già un po’ _preparato_ i dati. Ora, diamo un’occhiata più da vicino ai dati.
### I dati sulle zucche - prime conclusioni
-Cosa noti su questi dati? Hai già visto che c'è un mix di stringhe, numeri, spazi vuoti e valori strani che devi interpretare.
+Cosa noti di questi dati? Hai già visto che c’è una mescolanza di stringhe, numeri, spazi vuoti e valori strani che devi interpretare.
-Quale domanda puoi porre a questi dati, utilizzando una tecnica di regressione? Che ne dici di "Prevedere il prezzo di una zucca in vendita durante un determinato mese". Guardando di nuovo i dati, ci sono alcune modifiche che devi apportare per creare la struttura dei dati necessaria per il compito.
+Quale domanda puoi porre a questi dati, usando una tecnica di Regressione? Che ne dici di "Prevedere il prezzo di una zucca in vendita durante un dato mese". Guardando di nuovo i dati, ci sono alcune modifiche da fare per creare la struttura dati necessaria per questo compito.
+## Esercizio - analizza i dati delle zucche
-## Esercizio - analizzare i dati sulle zucche
+Usamo [Pandas](https://pandas.pydata.org/) (il nome sta per `Python Data Analysis`), uno strumento molto utile per modellare i dati, per analizzare e preparare questi dati sulle zucche.
-Utilizziamo [Pandas](https://pandas.pydata.org/), (il nome sta per `Python Data Analysis`) uno strumento molto utile per modellare i dati, per analizzare e preparare questi dati sulle zucche.
+### Prima, verifica la presenza di date mancanti
-### Primo, controlla le date mancanti
+Prima devi prendere provvedimenti per controllare la presenza di date mancanti:
-Per prima cosa, dovrai prendere provvedimenti per controllare le date mancanti:
-
-1. Converti le date in un formato mensile (queste sono date statunitensi, quindi il formato è `MM/DD/YYYY`).
+1. Converti le date in un formato mese (sono date USA, quindi il formato è `MM/DD/YYYY`).
2. Estrai il mese in una nuova colonna.
Apri il file _notebook.ipynb_ in Visual Studio Code e importa il foglio di calcolo in un nuovo dataframe Pandas.
-1. Usa la funzione `head()` per visualizzare le prime cinque righe.
+1. Usa la funzione `head()` per vedere le prime cinque righe.
```python
import pandas as pd
@@ -64,7 +64,7 @@ Apri il file _notebook.ipynb_ in Visual Studio Code e importa il foglio di calco
pumpkins.head()
```
- ✅ Quale funzione useresti per visualizzare le ultime cinque righe?
+ ✅ Quale funzione useresti per vedere le ultime cinque righe?
1. Controlla se ci sono dati mancanti nel dataframe corrente:
@@ -72,20 +72,20 @@ Apri il file _notebook.ipynb_ in Visual Studio Code e importa il foglio di calco
pumpkins.isnull().sum()
```
- Ci sono dati mancanti, ma forse non saranno rilevanti per il compito.
+ Ci sono dati mancanti, ma forse non influiranno sul compito assegnato.
-1. Per rendere il tuo dataframe più facile da gestire, seleziona solo le colonne necessarie, utilizzando la funzione `loc` che estrae dal dataframe originale un gruppo di righe (passate come primo parametro) e colonne (passate come secondo parametro). L'espressione `:` nel caso seguente significa "tutte le righe".
+1. Per rendere il dataframe più facile da gestire, seleziona solo le colonne necessarie, usando la funzione `loc` che estrae dal dataframe originale un gruppo di righe (passate come primo parametro) e colonne (passate come secondo parametro). L'espressione `:` nel caso sotto significa "tutte le righe".
```python
columns_to_select = ['Package', 'Low Price', 'High Price', 'Date']
pumpkins = pumpkins.loc[:, columns_to_select]
```
-### Secondo, determina il prezzo medio delle zucche
+### Secondo, determina il prezzo medio della zucca
-Pensa a come determinare il prezzo medio di una zucca in un determinato mese. Quali colonne sceglieresti per questo compito? Suggerimento: avrai bisogno di 3 colonne.
+Pensa a come determinare il prezzo medio di una zucca in un dato mese. Quali colonne sceglieresti per questo compito? Suggerimento: ti servono 3 colonne.
-Soluzione: calcola la media delle colonne `Low Price` e `High Price` per popolare la nuova colonna Price, e converti la colonna Date per mostrare solo il mese. Fortunatamente, secondo il controllo sopra, non ci sono dati mancanti per date o prezzi.
+Soluzione: prendi la media delle colonne `Low Price` e `High Price` per popolare la nuova colonna Price e converti la colonna Date per mostrare solo il mese. Fortunatamente, come risulta dal controllo sopra, non ci sono dati mancanti per date o prezzi.
1. Per calcolare la media, aggiungi il seguente codice:
@@ -96,35 +96,35 @@ Soluzione: calcola la media delle colonne `Low Price` e `High Price` per popolar
```
- ✅ Sentiti libero di stampare qualsiasi dato per verificarlo utilizzando `print(month)`.
+ ✅ Sentiti libero di stampare qualsiasi dato desideri controllare usando `print(month)`.
-2. Ora, copia i tuoi dati convertiti in un nuovo dataframe Pandas:
+2. Ora, copia i dati convertiti in un nuovo dataframe Pandas pulito:
```python
new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price})
```
- Stampando il tuo dataframe vedrai un dataset pulito e ordinato su cui puoi costruire il tuo nuovo modello di regressione.
+ Stampare il dataframe mostra un dataset pulito e ordinato su cui puoi costruire il tuo nuovo modello di regressione.
-### Ma aspetta! C'è qualcosa di strano qui
+### Ma aspetta! C’è qualcosa di strano qui
-Se guardi la colonna `Package`, le zucche vengono vendute in molte configurazioni diverse. Alcune sono vendute in misure di '1 1/9 bushel', altre in '1/2 bushel', alcune per zucca, alcune per libbra, e altre in grandi scatole di larghezze variabili.
+Se guardi la colonna `Package`, le zucche sono vendute in molte configurazioni diverse. Alcune sono vendute in misure '1 1/9 bushel', altre in '1/2 bushel', alcune per zucca, altre per libbra, e altre in grandi scatole di larghezze variabili.
> Le zucche sembrano molto difficili da pesare in modo coerente
-Esaminando i dati originali, è interessante notare che tutto ciò che ha `Unit of Sale` uguale a 'EACH' o 'PER BIN' ha anche il tipo `Package` per pollice, per bin, o 'each'. Le zucche sembrano essere molto difficili da pesare in modo coerente, quindi filtriamole selezionando solo le zucche con la stringa 'bushel' nella colonna `Package`.
+Analizzando i dati originali, è interessante notare che tutto ciò che ha `Unit of Sale` uguale a 'EACH' o 'PER BIN' ha anche il tipo di `Package` per pollice, per cassetta o 'per unità'. Le zucche sembrano molto difficili da pesare in modo coerente, quindi filtra selezionando solo le zucche con la stringa 'bushel' nella colonna `Package`.
-1. Aggiungi un filtro all'inizio del file, sotto l'importazione iniziale del .csv:
+1. Aggiungi un filtro in cima al file, sotto l'importazione iniziale del file .csv:
```python
pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]
```
- Se stampi i dati ora, puoi vedere che stai ottenendo solo le circa 415 righe di dati contenenti zucche per bushel.
+ Se stampi i dati ora, vedrai che stai ottenendo solo le circa 415 righe di dati che contengono zucche per bushel.
### Ma aspetta! C'è un'altra cosa da fare
-Hai notato che la quantità di bushel varia per riga? Devi normalizzare i prezzi in modo da mostrare il prezzo per bushel, quindi fai qualche calcolo per standardizzarlo.
+Hai notato che la quantità di bushel varia per riga? Devi normalizzare il prezzo perché venga mostrato il prezzo per bushel, quindi fai qualche calcolo per standardizzarlo.
1. Aggiungi queste righe dopo il blocco che crea il dataframe new_pumpkins:
@@ -134,38 +134,38 @@ Hai notato che la quantità di bushel varia per riga? Devi normalizzare i prezzi
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2)
```
-✅ Secondo [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), il peso di un bushel dipende dal tipo di prodotto, poiché è una misura di volume. "Un bushel di pomodori, ad esempio, dovrebbe pesare 56 libbre... Foglie e verdure occupano più spazio con meno peso, quindi un bushel di spinaci pesa solo 20 libbre." È tutto piuttosto complicato! Non preoccupiamoci di fare una conversione bushel-libbra, e invece calcoliamo il prezzo per bushel. Tutto questo studio sui bushel di zucche, tuttavia, dimostra quanto sia importante comprendere la natura dei tuoi dati!
+✅ Secondo [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), il peso di un bushel dipende dal tipo di prodotto, dato che è una misura di volume. "Un bushel di pomodori, per esempio, dovrebbe pesare 56 libbre... Le foglie e le verdure occupano più spazio con meno peso, quindi un bushel di spinaci pesa solo 20 libbre." È tutto piuttosto complicato! Non ci preoccuperemo di fare una conversione bushel-libbra, e invece prezzare per bushel. Tutto questo studio sui bushel di zucche, comunque, dimostra quanto sia molto importante capire la natura dei tuoi dati!
-Ora puoi analizzare i prezzi per unità in base alla loro misura di bushel. Se stampi i dati un'altra volta, puoi vedere come sono stati standardizzati.
+Ora, puoi analizzare il prezzo per unità basato sulla loro misura di bushel. Se stampi nuovamente i dati, puoi vedere come è standardizzato.
-✅ Hai notato che le zucche vendute per mezzo bushel sono molto costose? Riesci a capire perché? Suggerimento: le zucche piccole sono molto più costose di quelle grandi, probabilmente perché ce ne sono molte di più per bushel, dato lo spazio inutilizzato occupato da una grande zucca vuota per torta.
+✅ Hai notato che le zucche vendute a mezzo bushel sono molto costose? Riesci a capire perché? Suggerimento: le zucche piccole sono molto più costose di quelle grandi, probabilmente perché ce ne sono molte di più per bushel, considerando lo spazio inutilizzato occupato da una zucca cavo grande da torta.
## Strategie di visualizzazione
-Parte del ruolo del data scientist è dimostrare la qualità e la natura dei dati con cui sta lavorando. Per farlo, spesso creano visualizzazioni interessanti, come grafici, diagrammi e tabelle, che mostrano diversi aspetti dei dati. In questo modo, sono in grado di mostrare visivamente relazioni e lacune che altrimenti sarebbero difficili da individuare.
+Parte del ruolo dello scienziato dei dati è dimostrare la qualità e la natura dei dati con cui lavora. Per farlo, spesso crea visualizzazioni interessanti, come grafici, diagrammi e tabelle, che mostrano diversi aspetti dei dati. In questo modo, è possibile mostrare visivamente relazioni e lacune difficili da scoprire altrimenti.
-[](https://youtu.be/SbUkxH6IJo0 "ML per principianti - Come visualizzare i dati con Matplotlib")
+[](https://youtu.be/SbUkxH6IJo0 "ML for beginners - Come visualizzare i dati con Matplotlib")
> 🎥 Clicca sull'immagine sopra per un breve video che mostra come visualizzare i dati per questa lezione.
-Le visualizzazioni possono anche aiutare a determinare la tecnica di machine learning più appropriata per i dati. Un diagramma a dispersione che sembra seguire una linea, ad esempio, indica che i dati sono un buon candidato per un esercizio di regressione lineare.
+Le visualizzazioni possono anche aiutare a determinare la tecnica di machine learning più appropriata per i dati. Un grafico a dispersione che sembra seguire una linea, per esempio, indica che i dati sono un buon candidato per un esercizio di regressione lineare.
-Una libreria di visualizzazione dei dati che funziona bene nei notebook Jupyter è [Matplotlib](https://matplotlib.org/) (che hai visto anche nella lezione precedente).
+Una libreria di visualizzazione dei dati che funziona bene nei notebook Jupyter è [Matplotlib](https://matplotlib.org/) (che hai già visto nella lezione precedente).
-> Ottieni più esperienza con la visualizzazione dei dati in [questi tutorial](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott).
+> Acquisisci più esperienza con la visualizzazione dei dati in [questi tutorial](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott).
## Esercizio - sperimenta con Matplotlib
-Prova a creare alcuni grafici di base per visualizzare il nuovo dataframe che hai appena creato. Cosa mostrerebbe un grafico lineare di base?
+Prova a creare dei grafici base per visualizzare il nuovo dataframe che hai appena creato. Cosa mostrerà un grafico a linee base?
-1. Importa Matplotlib all'inizio del file, sotto l'importazione di Pandas:
+1. Importa Matplotlib in cima al file, sotto l'importazione di Pandas:
```python
import matplotlib.pyplot as plt
```
-1. Esegui nuovamente l'intero notebook per aggiornare.
-1. Alla fine del notebook, aggiungi una cella per tracciare i dati come un box:
+1. Esegui nuovamente tutto il notebook per aggiornarlo.
+1. In fondo al notebook, aggiungi una cella per tracciare i dati come boxplot:
```python
price = new_pumpkins.Price
@@ -174,15 +174,15 @@ Prova a creare alcuni grafici di base per visualizzare il nuovo dataframe che ha
plt.show()
```
- 
+ 
- Questo grafico è utile? C'è qualcosa che ti sorprende?
+ È un grafico utile? C'è qualcosa che ti sorprende?
- Non è particolarmente utile, poiché tutto ciò che fa è mostrare i tuoi dati come una distribuzione di punti in un determinato mese.
+ Non è particolarmente utile dato che mostra solo i tuoi dati come una dispersione di punti in un dato mese.
### Rendilo utile
-Per ottenere grafici che mostrino dati utili, di solito è necessario raggruppare i dati in qualche modo. Proviamo a creare un grafico in cui l'asse y mostra i mesi e i dati dimostrano la distribuzione dei dati.
+Per ottenere grafici che mostrino dati utili, di solito devi raggruppare i dati in qualche modo. Proviamo a creare un grafico dove l'asse y mostra i mesi e i dati dimostrano la distribuzione.
1. Aggiungi una cella per creare un grafico a barre raggruppato:
@@ -191,21 +191,96 @@ Per ottenere grafici che mostrino dati utili, di solito è necessario raggruppar
plt.ylabel("Pumpkin Price")
```
- 
+ 
+
+ Questa è una visualizzazione dei dati più utile! Sembra indicare che il prezzo più alto per le zucche si verifica a settembre e ottobre. Corrisponde alle tue aspettative? Perché sì o perché no?
+
+## Esercizio - sperimenta con Seaborn
+
+Matplotlib è potente, ma può richiedere molto codice per produrre un grafico rifinito. [Seaborn](https://seaborn.pydata.org/) è una libreria costruita _sopra_ Matplotlib progettata per la visualizzazione statistica dei dati. Lavora direttamente con i dataframe Pandas, applica stili predefiniti accattivanti e ti permette di creare grafici informativi con molto meno codice. Poiché Seaborn restituisce oggetti Matplotlib, puoi ancora usare tutto ciò che già sai su Matplotlib per perfezionare il risultato.
+
+> Se non hai ancora installato Seaborn, installalo con `pip install seaborn`.
+
+1. Importa Seaborn in cima al notebook, sotto gli altri import. Convenzionalmente è importato come `sns`:
+
+ ```python
+ import seaborn as sns
+ ```
+
+### Grafici a dispersione per mostrare relazioni
+
+Una parte importante dell’esplorazione dei dati prima di costruire un modello è cercare _relazioni_ tra variabili. Un [grafico a dispersione](https://en.wikipedia.org/wiki/Scatter_plot) è uno dei migliori strumenti per questo: se i punti sembrano seguire una linea, le due variabili potrebbero essere correlate, il che è un buon segno che un modello di regressione lineare potrebbe funzionare.
+
+1. Ricrea il grafico prezzo-mese a dispersione di prima, questa volta usando [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) di Seaborn (grafico relazionale), che lavora direttamente con le colonne del tuo dataframe:
+
+ ```python
+ sns.relplot(x="Price", y="Month", data=new_pumpkins)
+ ```
+
+ 
+
+ Nota come passi i _nomi delle colonne_ e il dataframe, e Seaborn si occupa delle etichette degli assi per te.
+
+2. Puoi passare a un grafico a linee passando `kind="line"`. Seaborn disegna anche una banda sfumata che mostra l'intervallo di confidenza attorno alla linea:
+
+ ```python
+ sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins)
+ ```
+
+ 
+
+ Questi dati sono abbastanza rumorosi, quindi un grafico a linee non è la scelta più chiara qui — ma mostra quanto facilmente puoi cambiare tipo di grafico in Seaborn.
+
+### Grafici a barre per mostrare distribuzioni
+
+
+In precedenza hai raggruppato manualmente i dati per creare un grafico a barre con Matplotlib. [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) di Seaborn (grafico categorico) può fare il raggruppamento e l'aggregazione per te. Per impostazione predefinita, `kind="bar"` mostra la media di ogni categoria insieme a una linea nera che indica l'intervallo di confidenza.
+
+1. Crea un grafico a barre del prezzo medio per mese:
+
+ ```python
+ sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar")
+ ```
+
+ 
+
+ Questo conferma ciò che hai visto con Matplotlib — i prezzi raggiungono il picco intorno a settembre e ottobre — ma Seaborn visualizza anche quanto il prezzo _varia_ all'interno di ogni mese.
+
+### Mappe di calore per mostrare le correlazioni
+
+I grafici a dispersione confrontano due variabili alla volta. Quando hai diverse colonne numeriche, una [heatmap](https://en.wikipedia.org/wiki/Heat_map) ti permette di visualizzare la forza della relazione tra _ogni_ coppia di colonne contemporaneamente. Questo è un modo comune per individuare quali caratteristiche sono più correlate prima di scegliere cosa inserire in un modello (e lo stesso tipo di grafico viene poi utilizzato per mostrare matrici di confusione nella classificazione).
+
+1. Costruisci una matrice di correlazione con Pandas, poi disegnala con [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html) di Seaborn. L'opzione `annot=True` stampa i valori di correlazione in ogni cella:
+
+ ```python
+ correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()
+ sns.heatmap(correlations, annot=True, cmap="coolwarm")
+ ```
+
+ 
+
+ Valori vicini a `1` (o `-1`) significano che le colonne sono fortemente correlate _linearmente_. Nota come `Low Price` e `High Price` siano quasi perfettamente correlate. `Month`, invece, mostra solo una debole correlazione lineare con il prezzo — anche se il grafico a barre sopra ha rivelato un chiaro picco stagionale a settembre e ottobre. Questa è una lezione importante: il coefficiente di correlazione misura solo relazioni _lineari_, quindi può perdere schemi stagionali o non lineari. ✅ Perché è utile guardare sia una heatmap *che* grafici come quello a barre prima di decidere quali colonne usare?
+
+### Matplotlib o Seaborn?
+
+Entrambe le librerie vale la pena conoscerle:
+
+- **Matplotlib** ti dà un controllo dettagliato su ogni elemento di un grafico ed è la base su cui si costruiscono quasi tutte le altre librerie di plotting Python.
+- **Seaborn** fornisce funzioni di livello superiore e impostazioni predefinite attraenti per grafici statistici, lavora direttamente con i dataframe ed è spesso più veloce per l'analisi esplorativa dei dati.
- Questo è una visualizzazione dei dati più utile! Sembra indicare che il prezzo più alto per le zucche si verifica a settembre e ottobre. Questo corrisponde alle tue aspettative? Perché o perché no?
+Un flusso di lavoro comune è usare Seaborn per esplorare rapidamente i dati, poi passare a Matplotlib quando è necessario personalizzare i dettagli.
---
## 🚀Sfida
-Esplora i diversi tipi di visualizzazione che Matplotlib offre. Quali tipi sono più appropriati per problemi di regressione?
+Esplora i diversi tipi di visualizzazioni offerte da Matplotlib e Seaborn. Quali tipi sono più appropriati per problemi di regressione?
## [Quiz post-lezione](https://ff-quizzes.netlify.app/en/ml/)
-## Revisione e studio autonomo
+## Revisione & Studio individuale
-Dai un'occhiata ai molti modi per visualizzare i dati. Fai un elenco delle varie librerie disponibili e annota quali sono migliori per determinati tipi di compiti, ad esempio visualizzazioni 2D rispetto a visualizzazioni 3D. Cosa scopri?
+Dai un'occhiata ai tanti modi per visualizzare i dati. Fai una lista delle varie librerie disponibili e annota quali sono le migliori per tipi di compiti specifici, per esempio visualizzazioni 2D vs. 3D. Cosa scopri?
## Compito
@@ -213,5 +288,7 @@ Dai un'occhiata ai molti modi per visualizzare i dati. Fai un elenco delle varie
---
-**Disclaimer**:
-Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione.
\ No newline at end of file
+
+**Disclaimer**:
+Questo documento è stato tradotto utilizzando il servizio di traduzione AI [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire la precisione, si prega di notare che le traduzioni automatizzate possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa deve essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un essere umano. Non siamo responsabili per eventuali malintesi o interpretazioni errate derivanti dall’uso di questa traduzione.
+
\ No newline at end of file
diff --git a/translations/it/2-Regression/2-Data/solution/notebook.ipynb b/translations/it/2-Regression/2-Data/solution/notebook.ipynb
index 8df8cc32d..68086e6f3 100644
--- a/translations/it/2-Regression/2-Data/solution/notebook.ipynb
+++ b/translations/it/2-Regression/2-Data/solution/notebook.ipynb
@@ -3,7 +3,9 @@
{
"cell_type": "markdown",
"metadata": {},
- "source": []
+ "source": [
+ "## Regressione Lineare per le Zucche - Lezione 2\n"
+ ]
},
{
"cell_type": "code",
@@ -220,6 +222,7 @@
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
"pumpkins = pd.read_csv('../../data/US-pumpkins.csv')\n",
"\n",
"pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]\n",
@@ -383,18 +386,78 @@
"plt.ylabel(\"Pumpkin Price\")"
]
},
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Visualizzare con Seaborn\n",
+ "\n",
+ "[Seaborn](https://seaborn.pydata.org/) è costruito sopra Matplotlib e funziona direttamente con i dataframe, rendendo veloce la creazione di grafici statistici attraenti con pochissimo codice.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Diagrammi a dispersione per mostrare relazioni\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", kind=\"line\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Grafici a barre per mostrare distribuzioni\n"
+ ]
+ },
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
- "source": []
+ "source": [
+ "sns.catplot(x=\"Month\", y=\"Price\", data=new_pumpkins, kind=\"bar\")"
+ ]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "\n---\n\n**Disclaimer**: \nQuesto documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione.\n"
+ "### Mappe di calore per mostrare le correlazioni\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()\n",
+ "sns.heatmap(correlations, annot=True, cmap=\"coolwarm\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "---\n\n\n**Disclaimer**:\nQuesto documento è stato tradotto utilizzando il servizio di traduzione AI [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire la precisione, si prega di notare che le traduzioni automatizzate possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa deve essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un essere umano. Non siamo responsabili per eventuali malintesi o interpretazioni errate derivanti dall’uso di questa traduzione.\n\n"
]
}
],
@@ -424,13 +487,7 @@
"hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d"
}
},
- "orig_nbformat": 2,
- "coopTranslator": {
- "original_hash": "95726f0b8283628d5356a4f8eb8b4b76",
- "translation_date": "2025-08-29T23:11:03+00:00",
- "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
- "language_code": "it"
- }
+ "orig_nbformat": 2
},
"nbformat": 4,
"nbformat_minor": 2
diff --git a/translations/it/8-Reinforcement/1-QLearning/README.md b/translations/it/8-Reinforcement/1-QLearning/README.md
index 971fc5b4c..40a2bc2a8 100644
--- a/translations/it/8-Reinforcement/1-QLearning/README.md
+++ b/translations/it/8-Reinforcement/1-QLearning/README.md
@@ -1,47 +1,47 @@
-# Introduzione al Reinforcement Learning e al Q-Learning
+# Introduzione all'Apprendimento per Rinforzo e Q-Learning
-
+
> Sketchnote di [Tomomi Imura](https://www.twitter.com/girlie_mac)
-Il reinforcement learning coinvolge tre concetti fondamentali: l'agente, alcuni stati e un insieme di azioni per stato. Eseguendo un'azione in uno stato specifico, l'agente riceve una ricompensa. Immagina di nuovo il videogioco Super Mario. Tu sei Mario, ti trovi in un livello di gioco, vicino al bordo di un precipizio. Sopra di te c'è una moneta. Essere Mario, in un livello di gioco, in una posizione specifica... quello è il tuo stato. Muoversi di un passo a destra (un'azione) ti farebbe cadere nel precipizio, e questo ti darebbe un punteggio numerico basso. Tuttavia, premendo il pulsante di salto, potresti ottenere un punto e rimanere vivo. Questo è un risultato positivo e dovrebbe assegnarti un punteggio numerico positivo.
+L'apprendimento per rinforzo coinvolge tre concetti importanti: l'agente, alcuni stati e un insieme di azioni per ciascuno stato. Eseguendo un'azione in uno stato specificato, l'agente riceve una ricompensa. Immagina di nuovo il gioco per computer Super Mario. Sei Mario, sei in un livello di gioco, in piedi vicino al bordo di una scogliera. Sopra di te c'è una moneta. Tu, essendo Mario, in un livello di gioco, in una posizione specifica ... quello è il tuo stato. Muoversi di un passo a destra (un'azione) ti farà cadere nel vuoto, e questo ti darebbe un punteggio numerico basso. Tuttavia, premere il pulsante di salto ti permetterebbe di segnare un punto e resteresti vivo. Questo è un risultato positivo e dovrebbe premiarti con un punteggio numerico positivo.
-Utilizzando il reinforcement learning e un simulatore (il gioco), puoi imparare a giocare per massimizzare la ricompensa, che consiste nel rimanere vivo e ottenere il maggior numero di punti possibile.
+Usando l'apprendimento per rinforzo e un simulatore (il gioco), puoi imparare come giocare per massimizzare la ricompensa, che è rimanere vivo e segnare il maggior numero possibile di punti.
-[](https://www.youtube.com/watch?v=lDq_en8RNOo)
+[](https://www.youtube.com/watch?v=lDq_en8RNOo)
-> 🎥 Clicca sull'immagine sopra per ascoltare Dmitry parlare del Reinforcement Learning
+> 🎥 Clicca sull'immagine sopra per ascoltare Dmitry parlare di Apprendimento per Rinforzo
## [Quiz pre-lezione](https://ff-quizzes.netlify.app/en/ml/)
## Prerequisiti e Configurazione
-In questa lezione, sperimenteremo con del codice in Python. Dovresti essere in grado di eseguire il codice del Jupyter Notebook di questa lezione, sia sul tuo computer che in cloud.
+In questa lezione, sperimenteremo con del codice in Python. Dovresti essere in grado di eseguire il codice del Jupyter Notebook di questa lezione, sia sul tuo computer che da qualche parte nel cloud.
Puoi aprire [il notebook della lezione](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) e seguire questa lezione per costruire.
-> **Nota:** Se stai aprendo questo codice dal cloud, devi anche recuperare il file [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), che viene utilizzato nel codice del notebook. Aggiungilo alla stessa directory del notebook.
+> **Nota:** Se stai aprendo questo codice dal cloud, devi anche recuperare il file [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), che è usato nel codice del notebook. Aggiungilo alla stessa directory del notebook.
## Introduzione
-In questa lezione, esploreremo il mondo di **[Pierino e il Lupo](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)**, ispirato a una fiaba musicale di un compositore russo, [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev). Utilizzeremo il **Reinforcement Learning** per permettere a Pierino di esplorare il suo ambiente, raccogliere mele gustose ed evitare di incontrare il lupo.
+In questa lezione esploreremo il mondo di **[Pietro e il Lupo](https://it.wikipedia.org/wiki/Pietro_e_il_lupo)**, ispirato a una fiaba musicale di un compositore russo, [Sergej Prokof'ev](https://it.wikipedia.org/wiki/Sergej_Prokof'ev). Useremo l'**Apprendimento per Rinforzo** per permettere a Pietro di esplorare il suo ambiente, raccogliere mele gustose ed evitare di incontrare il lupo.
-Il **Reinforcement Learning** (RL) è una tecnica di apprendimento che ci consente di apprendere un comportamento ottimale di un **agente** in un determinato **ambiente** eseguendo molti esperimenti. Un agente in questo ambiente dovrebbe avere un **obiettivo**, definito da una **funzione di ricompensa**.
+L'**Apprendimento per Rinforzo** (RL) è una tecnica di apprendimento che ci permette di apprendere un comportamento ottimale di un **agente** in un certo **ambiente** eseguendo molti esperimenti. Un agente in questo ambiente dovrebbe avere un **obiettivo**, definito da una **funzione di ricompensa**.
## L'ambiente
-Per semplicità, consideriamo il mondo di Pierino come una scacchiera di dimensioni `width` x `height`, come questa:
+Per semplicità, consideriamo il mondo di Pietro come una scacchiera quadrata di dimensioni `larghezza` x `altezza`, così:
-
+
Ogni cella di questa scacchiera può essere:
-* **terra**, su cui Pierino e altre creature possono camminare.
-* **acqua**, su cui ovviamente non si può camminare.
+* **terra**, sulla quale Pietro e altre creature possono camminare.
+* **acqua**, sulla quale ovviamente non si può camminare.
* un **albero** o **erba**, un luogo dove puoi riposarti.
-* una **mela**, che rappresenta qualcosa che Pierino sarebbe felice di trovare per nutrirsi.
-* un **lupo**, che è pericoloso e dovrebbe essere evitato.
+* una **mela**, che rappresenta qualcosa che a Pietro piacerebbe trovare per nutrirsi.
+* un **lupo**, che è pericoloso e va evitato.
-Esiste un modulo Python separato, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), che contiene il codice per lavorare con questo ambiente. Poiché questo codice non è importante per comprendere i nostri concetti, importeremo il modulo e lo utilizzeremo per creare la scacchiera di esempio (blocco di codice 1):
+Esiste un modulo Python separato, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), che contiene il codice per lavorare con questo ambiente. Poiché questo codice non è importante per comprendere i nostri concetti, importeremo il modulo e lo useremo per creare la scacchiera di esempio (blocco codice 1):
```python
from rlboard import *
@@ -56,50 +56,50 @@ Questo codice dovrebbe stampare un'immagine dell'ambiente simile a quella sopra.
## Azioni e politica
-Nel nostro esempio, l'obiettivo di Pierino sarebbe trovare una mela, evitando il lupo e altri ostacoli. Per fare ciò, può essenzialmente camminare fino a trovare una mela.
+Nel nostro esempio, l'obiettivo di Pietro sarebbe trovare una mela, evitando il lupo e altri ostacoli. Per farlo, può essenzialmente camminare finché non trova una mela.
-Pertanto, in qualsiasi posizione, può scegliere tra una delle seguenti azioni: su, giù, sinistra e destra.
+Pertanto, in ogni posizione, può scegliere tra una delle seguenti azioni: su, giù, sinistra e destra.
-Definiremo queste azioni come un dizionario e le mapperemo a coppie di modifiche coordinate corrispondenti. Ad esempio, muoversi a destra (`R`) corrisponderebbe a una coppia `(1,0)`. (blocco di codice 2):
+Definiremo queste azioni come un dizionario e le mapperemo a coppie di cambiamenti corrispondenti delle coordinate. Per esempio, muoversi a destra (`R`) corrisponderebbe alla coppia `(1,0)`. (blocco codice 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()) }
```
-Riassumendo, la strategia e l'obiettivo di questo scenario sono i seguenti:
+Per riassumere, la strategia e l'obiettivo di questo scenario sono i seguenti:
-- **La strategia**, del nostro agente (Pierino) è definita da una cosiddetta **politica**. Una politica è una funzione che restituisce l'azione in qualsiasi stato dato. Nel nostro caso, lo stato del problema è rappresentato dalla scacchiera, inclusa la posizione attuale del giocatore.
+- **La strategia**, del nostro agente (Pietro) è definita da una cosiddetta **politica**. Una politica è una funzione che restituisce l'azione in qualsiasi stato dato. Nel nostro caso, lo stato del problema è rappresentato dalla scacchiera, inclusa la posizione attuale del giocatore.
-- **L'obiettivo**, del reinforcement learning è imparare alla fine una buona politica che ci permetta di risolvere il problema in modo efficiente. Tuttavia, come base di partenza, consideriamo la politica più semplice chiamata **camminata casuale**.
+- **L'obiettivo**, dell'apprendimento per rinforzo è infine quello di apprendere una buona politica che ci permetta di risolvere il problema in modo efficiente. Tuttavia, come base, consideriamo la politica più semplice chiamata **camminata casuale**.
## Camminata casuale
-Per prima cosa risolviamo il nostro problema implementando una strategia di camminata casuale. Con la camminata casuale, sceglieremo casualmente la prossima azione tra quelle consentite, fino a raggiungere la mela (blocco di codice 3).
+Risolviamo prima il nostro problema implementando una strategia di camminata casuale. Con la camminata casuale, sceglieremo casualmente la prossima azione tra quelle consentite, finché non raggiungiamo la mela (blocco codice 3).
-1. Implementa la camminata casuale con il codice seguente:
+1. Implementa la camminata casuale con il codice sottostante:
```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
+ n = 0 # numero di passi
+ # imposta la posizione iniziale
if start_position:
m.human = start_position
else:
m.random_start()
while True:
if m.at() == Board.Cell.apple:
- return n # success!
+ return n # successo!
if m.at() in [Board.Cell.wolf, Board.Cell.water]:
- return -1 # eaten by wolf or drowned
+ return -1 # mangiato dal lupo o annegato
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
+ m.move(a) # esegui la mossa effettiva
break
n+=1
@@ -108,7 +108,7 @@ Per prima cosa risolviamo il nostro problema implementando una strategia di camm
La chiamata a `walk` dovrebbe restituire la lunghezza del percorso corrispondente, che può variare da un'esecuzione all'altra.
-1. Esegui l'esperimento di camminata un certo numero di volte (ad esempio, 100) e stampa le statistiche risultanti (blocco di codice 4):
+1. Esegui l'esperimento di camminata un numero di volte (ad esempio, 100), e stampa le statistiche risultanti (blocco codice 4):
```python
def print_statistics(policy):
@@ -125,17 +125,17 @@ Per prima cosa risolviamo il nostro problema implementando una strategia di camm
print_statistics(random_policy)
```
- Nota che la lunghezza media di un percorso è di circa 30-40 passi, che è piuttosto elevata, considerando che la distanza media dalla mela più vicina è di circa 5-6 passi.
+ Nota che la lunghezza media di un percorso è intorno a 30-40 passi, che è abbastanza, dato che la distanza media alla mela più vicina è intorno a 5-6 passi.
- Puoi anche vedere come si muove Pierino durante la camminata casuale:
+ Puoi anche vedere come si muove Pietro durante la camminata casuale:
- 
+ 
## Funzione di ricompensa
-Per rendere la nostra politica più intelligente, dobbiamo capire quali mosse sono "migliori" di altre. Per fare ciò, dobbiamo definire il nostro obiettivo.
+Per rendere la nostra politica più intelligente, dobbiamo capire quali mosse sono "migliori" di altre. Per fare questo, dobbiamo definire il nostro obiettivo.
-L'obiettivo può essere definito in termini di una **funzione di ricompensa**, che restituirà un valore di punteggio per ogni stato. Più alto è il numero, migliore è la funzione di ricompensa. (blocco di codice 5)
+L'obiettivo può essere definito in termini di una **funzione di ricompensa**, che restituirà un valore di punteggio per ogni stato. Più alto è il numero, migliore è la funzione di ricompensa. (blocco codice 5)
```python
move_reward = -0.1
@@ -154,39 +154,115 @@ def reward(m,pos=None):
return move_reward
```
-Una cosa interessante delle funzioni di ricompensa è che nella maggior parte dei casi, *riceviamo una ricompensa significativa solo alla fine del gioco*. Ciò significa che il nostro algoritmo dovrebbe in qualche modo ricordare i "passi buoni" che portano a una ricompensa positiva alla fine e aumentarne l'importanza. Allo stesso modo, tutte le mosse che portano a risultati negativi dovrebbero essere scoraggiate.
+Una cosa interessante delle funzioni di ricompensa è che nella maggior parte dei casi, *ci viene data una ricompensa sostanziale solo alla fine del gioco*. Ciò significa che il nostro algoritmo dovrebbe in qualche modo ricordare i passi "buoni" che portano a una ricompensa positiva alla fine, e aumentarne l'importanza. Allo stesso modo, tutte le mosse che portano a risultati negativi dovrebbero essere scoraggiate.
## Q-Learning
-Un algoritmo che discuteremo qui si chiama **Q-Learning**. In questo algoritmo, la politica è definita da una funzione (o una struttura dati) chiamata **Q-Table**. Registra la "bontà" di ciascuna delle azioni in uno stato dato.
+Un algoritmo di cui parleremo qui si chiama **Q-Learning**. In questo algoritmo, la politica è definita da una funzione (o da una struttura dati) chiamata **Tabella Q**. Essa registra la "bontà" di ognuna delle azioni in uno stato dato.
-Si chiama Q-Table perché spesso è conveniente rappresentarla come una tabella o un array multidimensionale. Poiché la nostra scacchiera ha dimensioni `width` x `height`, possiamo rappresentare la Q-Table utilizzando un array numpy con forma `width` x `height` x `len(actions)`: (blocco di codice 6)
+Si chiama Tabella Q perché spesso è comodo rappresentarla come una tabella, o array multidimensionale. Poiché la nostra scacchiera ha dimensioni `larghezza` x `altezza`, possiamo rappresentare la Tabella Q usando un array numpy con forma `larghezza` x `altezza` x `len(actions)`: (blocco codice 6)
```python
Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions)
```
-Nota che inizializziamo tutti i valori della Q-Table con un valore uguale, nel nostro caso - 0.25. Questo corrisponde alla politica di "camminata casuale", perché tutte le mosse in ogni stato sono ugualmente buone. Possiamo passare la Q-Table alla funzione `plot` per visualizzare la tabella sulla scacchiera: `m.plot(Q)`.
+Nota che inizializziamo tutti i valori della Tabella Q con un valore uguale, nel nostro caso - 0.25. Questo corrisponde alla politica di "camminata casuale", perché tutte le mosse in ogni stato sono ugualmente buone. Possiamo passare la Tabella Q alla funzione `plot` per visualizzare la tabella sulla scacchiera: `m.plot(Q)`.
-
+
-Al centro di ogni cella c'è una "freccia" che indica la direzione preferita di movimento. Poiché tutte le direzioni sono uguali, viene visualizzato un punto.
+Al centro di ogni cella c'è una "freccia" che indica la direzione preferita di movimento. Poiché tutte le direzioni sono uguali, viene mostrato un punto.
-Ora dobbiamo eseguire la simulazione, esplorare il nostro ambiente e apprendere una distribuzione migliore dei valori della Q-Table, che ci permetterà di trovare il percorso verso la mela molto più velocemente.
+Ora dobbiamo eseguire la simulazione, esplorare il nostro ambiente e apprendere una migliore distribuzione dei valori nella Tabella Q, che ci permetterà di trovare il percorso verso la mela molto più velocemente.
## Essenza del Q-Learning: Equazione di Bellman
-Una volta che iniziamo a muoverci, ogni azione avrà una ricompensa corrispondente, cioè teoricamente possiamo selezionare la prossima azione basandoci sulla ricompensa immediata più alta. Tuttavia, nella maggior parte degli stati, la mossa non raggiungerà il nostro obiettivo di trovare la mela, e quindi non possiamo decidere immediatamente quale direzione sia migliore.
+Una volta che iniziamo a muoverci, ogni azione avrà una ricompensa corrispondente, cioè possiamo teoricamente selezionare la prossima azione basandoci sulla ricompensa immediata più alta. Tuttavia, nella maggior parte degli stati, la mossa non porterà al nostro obiettivo di raggiungere la mela, e quindi non possiamo decidere immediatamente quale direzione sia migliore.
> Ricorda che non è il risultato immediato che conta, ma piuttosto il risultato finale, che otterremo alla fine della simulazione.
-Per tenere conto di questa ricompensa ritardata, dobbiamo utilizzare i principi della **[programmazione dinamica](https://en.wikipedia.org/wiki/Dynamic_programming)**, che ci permettono di pensare al nostro problema in modo ricorsivo.
+Per tenere conto di questa ricompensa ritardata, dobbiamo usare i principi della **[programmazione dinamica](https://it.wikipedia.org/wiki/Programmazione_dinamica)**, che ci permettono di pensare al nostro problema in modo ricorsivo.
-Supponiamo di trovarci ora nello stato *s* e vogliamo passare al prossimo stato *s'*. Facendo ciò, riceveremo la ricompensa immediata *r(s,a)*, definita dalla funzione di ricompensa, più una ricompensa futura. Se supponiamo che la nostra Q-Table rifletta correttamente l'"attrattività" di ciascuna azione, allora nello stato *s'* sceglieremo un'azione *a* che corrisponde al valore massimo di *Q(s',a')*. Pertanto, la migliore ricompensa futura possibile che potremmo ottenere nello stato *s* sarà definita come `max`
+Supponiamo di essere ora nello stato *s*, e di volerci muovere allo stato successivo *s'*. Facendo ciò, riceveremo la ricompensa immediata *r(s,a)*, definita dalla funzione di ricompensa, più qualche ricompensa futura. Se supponiamo che la nostra Tabella Q rifletta correttamente l'"attrattività" di ogni azione, allora nello stato *s'* sceglieremo un'azione *a* che corrisponde al valore massimo di *Q(s',a')*. Dunque, la migliore possibile ricompensa futura che potremmo ottenere nello stato *s* sarà definita come `max`a'*Q(s',a')* (il massimo qui è calcolato su tutte le possibili azioni *a'* nello stato *s'*).
+
+Questo dà la **formula di Bellman** per calcolare il valore della Tabella Q nello stato *s*, data l'azione *a*:
+
+
+
+Qui γ è il cosiddetto **fattore di sconto** che determina quanto dovresti preferire la ricompensa corrente rispetto a quella futura e viceversa.
+
+## Algoritmo di Apprendimento
+
+Data l'equazione sopra, ora possiamo scrivere il pseudo-codice per il nostro algoritmo di apprendimento:
+
+* Inizializza la Tabella Q con numeri uguali per tutti gli stati e azioni
+* Imposta il tasso di apprendimento α ← 1
+* Ripeti la simulazione molte volte
+ 1. Parti da una posizione casuale
+ 1. Ripeti
+ 1. Seleziona un'azione *a* nello stato *s*
+ 2. Esegui l'azione muovendoti in un nuovo stato *s'*
+ 3. Se incontriamo la condizione di fine gioco, o la ricompensa totale è troppo bassa - esci dalla simulazione
+ 4. Calcola la ricompensa *r* nel nuovo stato
+ 5. Aggiorna la funzione Q secondo l'equazione di Bellman: *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ maxa'Q(s',a'))*
+ 6. *s* ← *s'*
+ 7. Aggiorna la ricompensa totale e diminuisci α.
+
+## Sfruttare vs. esplorare
+
+Nell'algoritmo sopra, non abbiamo specificato esattamente come scegliere un'azione al passo 2.1. Se scegliamo l'azione casualmente, esploreremo casualmente l'ambiente, e molto probabilmente moriremo spesso e esploreremo aree dove normalmente non andremmo. Un approccio alternativo sarebbe **sfruttare** i valori della Tabella Q che già conosciamo, e quindi scegliere la migliore azione (con valore Tabella Q più alto) nello stato *s*. Tuttavia, questo ci impedirà di esplorare altri stati, e probabilmente non troveremo la soluzione ottimale.
+
+Dunque, il miglior approccio è trovare un equilibrio tra esplorazione e sfruttamento. Ciò può essere fatto scegliendo l'azione nello stato *s* con probabilità proporzionali ai valori nella Tabella Q. Inizialmente, quando i valori della Tabella Q sono tutti uguali, ciò corrisponderebbe a una selezione casuale, ma man mano che impariamo di più sul nostro ambiente, saremo più propensi a seguire la rotta ottimale consentendo però all'agente di scegliere di tanto in tanto un percorso inesplorato.
+
+## Implementazione in Python
+
+Ora siamo pronti per implementare l'algoritmo di apprendimento. Prima di farlo, ci serve anche una funzione che converta numeri arbitrari nella Tabella Q in un vettore di probabilità per le azioni corrispondenti.
+
+1. Crea una funzione `probs()`:
+
+ ```python
+ def probs(v,eps=1e-4):
+ v = v-v.min()+eps
+ v = v/v.sum()
+ return v
+ ```
+
+ Aggiungiamo un po' di `eps` al vettore originale per evitare divisioni per 0 nel caso iniziale, quando tutte le componenti del vettore sono identiche.
+
+Esegui l'algoritmo di apprendimento per 5000 esperimenti, chiamati anche **epoche**: (blocco codice 8)
+```python
+ for epoch in range(5000):
+
+ # Scegli il punto iniziale
+ m.random_start()
+
+ # Inizia il viaggio
+ n=0
+ cum_reward = 0
+ while True:
+ x,y = m.human
+ v = probs(Q[x,y])
+ a = random.choices(list(actions),weights=v)[0]
+ dpos = actions[a]
+ m.move(dpos,check_correctness=False) # permettiamo al giocatore di muoversi fuori dalla plancia, il che termina l'episodio
+ r = reward(m)
+ cum_reward += r
+ if r==end_reward or cum_reward < -1000:
+ lpath.append(n)
+ break
+ alpha = np.exp(-n / 10e5)
+ gamma = 0.5
+ ai = action_idx[a]
+ Q[x,y,ai] = (1 - alpha) * Q[x,y,ai] + alpha * (r + gamma * Q[x+dpos[0], y+dpos[1]].max())
+ n+=1
+```
+
+Dopo aver eseguito questo algoritmo, la Tabella Q dovrebbe essere aggiornata con valori che definiscono l'attrattività delle diverse azioni in ogni passo. Possiamo provare a visualizzare la Tabella Q disegnando un vettore in ogni cella che indichi nella direzione desiderata di movimento. Per semplicità, disegniamo un piccolo cerchio anziché una punta di freccia.
+
+
## Verifica della politica
-Poiché la Q-Table elenca l'"attrattività" di ogni azione in ciascuno stato, è piuttosto semplice utilizzarla per definire una navigazione efficiente nel nostro mondo. Nel caso più semplice, possiamo selezionare l'azione corrispondente al valore più alto nella Q-Table: (blocco di codice 9)
+Poiché la Tabella Q elenca l'"attrattività" di ogni azione in ogni stato, è abbastanza semplice usarla per definire una navigazione efficiente nel nostro mondo. Nel caso più semplice, possiamo selezionare l'azione corrispondente al valore massimo nella Tabella Q: (blocco codice 9)
```python
def qpolicy_strict(m):
@@ -198,17 +274,18 @@ def qpolicy_strict(m):
walk(m,qpolicy_strict)
```
-> Se provi il codice sopra più volte, potresti notare che a volte "si blocca" e devi premere il pulsante STOP nel notebook per interromperlo. Questo accade perché potrebbero verificarsi situazioni in cui due stati "puntano" l'uno verso l'altro in termini di Q-Value ottimale, nel qual caso l'agente finisce per muoversi tra quegli stati all'infinito.
+
+> Se provi il codice sopra diverse volte, potresti notare che a volte “si blocca” e devi premere il pulsante STOP nel notebook per interromperlo. Questo accade perché potrebbero esserci situazioni in cui due stati “si puntano” a vicenda in termini di Q-Value ottimale, nel qual caso l'agente finisce per muoversi indefinitamente tra quegli stati.
## 🚀Sfida
-> **Compito 1:** Modifica la funzione `walk` per limitare la lunghezza massima del percorso a un certo numero di passi (ad esempio, 100) e osserva il codice sopra restituire questo valore di tanto in tanto.
+> **Compito 1:** Modifica la funzione `walk` per limitare la lunghezza massima del percorso a un certo numero di passi (ad esempio 100), e osserva il codice sopra restituire questo valore di tanto in tanto.
-> **Compito 2:** Modifica la funzione `walk` in modo che non torni nei luoghi in cui è già stato in precedenza. Questo impedirà a `walk` di entrare in un ciclo, tuttavia, l'agente potrebbe comunque finire "intrappolato" in una posizione da cui non riesce a uscire.
+> **Compito 2:** Modifica la funzione `walk` in modo che non torni nei luoghi in cui è già stato in precedenza. Questo eviterà che `walk` entri in un ciclo, tuttavia, l'agente può ancora finire “intrappolato” in una posizione da cui non è in grado di uscire.
## Navigazione
-Una politica di navigazione migliore sarebbe quella che abbiamo utilizzato durante l'addestramento, che combina sfruttamento ed esplorazione. In questa politica, selezioneremo ogni azione con una certa probabilità, proporzionale ai valori nella Q-Table. Questa strategia potrebbe comunque portare l'agente a tornare in una posizione già esplorata, ma, come puoi vedere dal codice qui sotto, risulta in un percorso medio molto breve verso la posizione desiderata (ricorda che `print_statistics` esegue la simulazione 100 volte): (blocco di codice 10)
+Una politica di navigazione migliore sarebbe quella che abbiamo usato durante l'addestramento, che combina sfruttamento ed esplorazione. In questa politica, selezioneremo ogni azione con una certa probabilità, proporzionale ai valori nella Q-Table. Questa strategia può ancora far sì che l'agente torni in una posizione che ha già esplorato, ma, come puoi vedere dal codice qui sotto, risulta in un percorso medio molto breve fino alla posizione desiderata (ricorda che `print_statistics` esegue la simulazione 100 volte): (blocco di codice 10)
```python
def qpolicy(m):
@@ -220,28 +297,32 @@ def qpolicy(m):
print_statistics(qpolicy)
```
-Dopo aver eseguito questo codice, dovresti ottenere una lunghezza media del percorso molto più breve rispetto a prima, nell'intervallo di 3-6.
+Dopo aver eseguito questo codice, dovresti ottenere una lunghezza media del percorso molto più piccola rispetto a prima, nell'intervallo di 3-6.
+
+## Analisi del processo di apprendimento
-## Esaminare il processo di apprendimento
+Come abbiamo detto, il processo di apprendimento è un equilibrio tra esplorazione e sfruttamento della conoscenza acquisita sulla struttura dello spazio del problema. Abbiamo visto che i risultati dell'apprendimento (la capacità di aiutare un agente a trovare un percorso breve verso l'obiettivo) sono migliorati, ma è anche interessante osservare come si comporta la lunghezza media del percorso durante il processo di apprendimento:
-Come abbiamo accennato, il processo di apprendimento è un equilibrio tra esplorazione e sfruttamento delle conoscenze acquisite sulla struttura dello spazio del problema. Abbiamo visto che i risultati dell'apprendimento (la capacità di aiutare un agente a trovare un percorso breve verso l'obiettivo) sono migliorati, ma è anche interessante osservare come si comporta la lunghezza media del percorso durante il processo di apprendimento:
+
-Le lezioni apprese possono essere riassunte come segue:
+Le conclusioni possono essere riassunte come segue:
-- **La lunghezza media del percorso aumenta**. Quello che vediamo qui è che all'inizio la lunghezza media del percorso aumenta. Questo probabilmente è dovuto al fatto che, quando non sappiamo nulla dell'ambiente, è probabile che ci ritroviamo intrappolati in stati sfavorevoli, come acqua o lupi. Man mano che impariamo di più e iniziamo a utilizzare queste conoscenze, possiamo esplorare l'ambiente più a lungo, ma non sappiamo ancora bene dove si trovano le mele.
+- **La lunghezza media del percorso aumenta**. Qui vediamo che all'inizio la lunghezza media del percorso aumenta. Questo è probabilmente dovuto al fatto che quando non sappiamo nulla dell'ambiente, è probabile che rimaniamo intrappolati in stati sfavorevoli, acqua o lupo. Man mano che impariamo e iniziamo a usare questa conoscenza, possiamo esplorare più a lungo l'ambiente, ma ancora non sappiamo molto bene dove sono le mele.
-- **La lunghezza del percorso diminuisce man mano che impariamo di più**. Una volta che impariamo abbastanza, diventa più facile per l'agente raggiungere l'obiettivo, e la lunghezza del percorso inizia a diminuire. Tuttavia, siamo ancora aperti all'esplorazione, quindi spesso ci allontaniamo dal percorso migliore ed esploriamo nuove opzioni, rendendo il percorso più lungo del necessario.
+- **La lunghezza del percorso diminuisce man mano che impariamo**. Una volta appreso abbastanza, diventa più facile per l’agente raggiungere l'obiettivo, e la lunghezza del percorso inizia a diminuire. Tuttavia, siamo ancora aperti all’esplorazione, quindi spesso ci allontaniamo dal percorso migliore ed esploriamo nuove opzioni, rendendo il percorso più lungo di quello ottimale.
-- **La lunghezza aumenta improvvisamente**. Quello che osserviamo anche in questo grafico è che a un certo punto la lunghezza aumenta improvvisamente. Questo indica la natura stocastica del processo e che a un certo punto possiamo "rovinare" i coefficienti della Q-Table sovrascrivendoli con nuovi valori. Questo idealmente dovrebbe essere minimizzato riducendo il tasso di apprendimento (ad esempio, verso la fine dell'addestramento, regoliamo i valori della Q-Table solo di una piccola quantità).
+- **La lunghezza aumenta bruscamente**. Ciò che osserviamo anche in questo grafico è che ad un certo punto la lunghezza è aumentata bruscamente. Questo indica la natura stocastica del processo, e che possiamo a un certo punto “rovinare” i coefficienti della Q-Table sovrascrivendoli con nuovi valori. Idealmente questo dovrebbe essere ridotto diminuendo il tasso di apprendimento (per esempio, verso la fine dell’addestramento, modifichiamo i valori della Q-Table solo di una piccola quantità).
-In generale, è importante ricordare che il successo e la qualità del processo di apprendimento dipendono significativamente dai parametri, come il tasso di apprendimento, il decadimento del tasso di apprendimento e il fattore di sconto. Questi sono spesso chiamati **iperparametri**, per distinguerli dai **parametri**, che ottimizziamo durante l'addestramento (ad esempio, i coefficienti della Q-Table). Il processo di trovare i migliori valori per gli iperparametri si chiama **ottimizzazione degli iperparametri**, e merita un argomento a sé stante.
+In generale, è importante ricordare che il successo e la qualità del processo di apprendimento dipendono molto dai parametri, come il tasso di apprendimento, il decadimento del tasso di apprendimento e il fattore di sconto. Questi sono spesso chiamati **iperparametri**, per distinguerli dai **parametri**, che ottimizziamo durante l’addestramento (ad esempio, i coefficienti della Q-Table). Il processo di trovare i valori migliori degli iperparametri si chiama **ottimizzazione degli iperparametri**, e merita un argomento a parte.
## [Quiz post-lezione](https://ff-quizzes.netlify.app/en/ml/)
-## Compito
+## Compito
[Un mondo più realistico](assignment.md)
---
-**Disclaimer**:
-Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione.
\ No newline at end of file
+
+**Disclaimer**:
+Questo documento è stato tradotto utilizzando il servizio di traduzione AI [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire la precisione, si prega di notare che le traduzioni automatizzate possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa deve essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un essere umano. Non siamo responsabili per eventuali malintesi o interpretazioni errate derivanti dall’uso di questa traduzione.
+
\ No newline at end of file
diff --git a/translations/it/8-Reinforcement/2-Gym/README.md b/translations/it/8-Reinforcement/2-Gym/README.md
index e5adba15e..021b9baf9 100644
--- a/translations/it/8-Reinforcement/2-Gym/README.md
+++ b/translations/it/8-Reinforcement/2-Gym/README.md
@@ -1,14 +1,34 @@
+# CartPole Skating
+
+Il problema che abbiamo risolto nella lezione precedente potrebbe sembrare un problema giocattolo, non veramente applicabile a scenari della vita reale. Non è così, perché molti problemi del mondo reale condividono questo scenario - incluso giocare a Scacchi o Go. Sono simili perché abbiamo anche una scacchiera con regole date e uno **stato discreto**.
+
+## [Quiz pre-lezione](https://ff-quizzes.netlify.app/en/ml/)
+
+## Introduzione
+
+In questa lezione applicheremo gli stessi principi del Q-Learning a un problema con **stato continuo**, cioè uno stato dato da uno o più numeri reali. Affronteremo il seguente problema:
+
+> **Problema**: Se Peter vuole sfuggire al lupo, deve essere in grado di muoversi più velocemente. Vedremo come Peter può imparare a pattinare, in particolare a mantenere l'equilibrio, usando il Q-Learning.
+
+
+
+> Peter e i suoi amici diventano creativi per scappare dal lupo! Immagine di [Jen Looper](https://twitter.com/jenlooper)
+
+Useremo una versione semplificata dell'equilibrio nota come problema **CartPole**. Nel mondo del cartpole abbiamo uno slider orizzontale che può muoversi a sinistra o a destra, e l'obiettivo è bilanciare un palo verticale sopra lo slider.
+
+
+
## Prerequisiti
-In questa lezione utilizzeremo una libreria chiamata **OpenAI Gym** per simulare diversi **ambienti**. Puoi eseguire il codice di questa lezione localmente (ad esempio, da Visual Studio Code), nel qual caso la simulazione si aprirà in una nuova finestra. Quando esegui il codice online, potrebbe essere necessario apportare alcune modifiche al codice, come descritto [qui](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7).
+In questa lezione useremo una libreria chiamata **OpenAI Gym** per simulare diversi **ambienti**. Puoi eseguire il codice di questa lezione localmente (ad esempio da Visual Studio Code), nel qual caso la simulazione si aprirà in una nuova finestra. Quando esegui il codice online, potresti dover apportare alcune modifiche al codice, come descritto [qui](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7).
## OpenAI Gym
-Nella lezione precedente, le regole del gioco e lo stato erano definiti dalla classe `Board` che abbiamo creato noi stessi. Qui utilizzeremo un **ambiente di simulazione** speciale, che simulerà la fisica dietro il bilanciamento del palo. Uno degli ambienti di simulazione più popolari per l'addestramento di algoritmi di apprendimento per rinforzo è chiamato [Gym](https://gym.openai.com/), mantenuto da [OpenAI](https://openai.com/). Utilizzando questo Gym possiamo creare diversi **ambienti**, dalla simulazione del cartpole ai giochi Atari.
+Nella lezione precedente, le regole del gioco e lo stato erano definiti dalla classe `Board` che abbiamo definito noi stessi. Qui useremo un **ambiente di simulazione** speciale, che simula la fisica dietro il palo in equilibrio. Uno degli ambienti di simulazione più popolari per l'addestramento di algoritmi di apprendimento per rinforzo si chiama [Gym](https://gym.openai.com/), mantenuto da [OpenAI](https://openai.com/). Usando questo gym possiamo creare diversi **ambienti** da una simulazione di cartpole a giochi Atari.
-> **Nota**: Puoi vedere altri ambienti disponibili su OpenAI Gym [qui](https://gym.openai.com/envs/#classic_control).
+> **Nota**: Puoi vedere altri ambienti disponibili in OpenAI Gym [qui](https://gym.openai.com/envs/#classic_control).
-Per prima cosa, installiamo Gym e importiamo le librerie necessarie (blocco di codice 1):
+Per prima cosa, installiamo il gym e importiamo le librerie richieste (blocco di codice 1):
```python
import sys
@@ -22,11 +42,11 @@ import random
## Esercizio - inizializzare un ambiente cartpole
-Per lavorare con il problema del bilanciamento del cartpole, dobbiamo inizializzare l'ambiente corrispondente. Ogni ambiente è associato a:
+Per lavorare con un problema di bilanciamento cartpole, dobbiamo inizializzare l'ambiente corrispondente. Ogni ambiente è associato a:
-- **Observation space** che definisce la struttura delle informazioni che riceviamo dall'ambiente. Per il problema del cartpole, riceviamo la posizione del palo, la velocità e altri valori.
+- **Spazio di osservazione** che definisce la struttura dell'informazione che riceviamo dall'ambiente. Per il problema cartpole, riceviamo la posizione del palo, la velocità e alcuni altri valori.
-- **Action space** che definisce le azioni possibili. Nel nostro caso, lo spazio delle azioni è discreto e consiste in due azioni: **sinistra** e **destra**. (blocco di codice 2)
+- **Spazio di azione** che definisce le azioni possibili. Nel nostro caso, lo spazio delle azioni è discreto e consiste di due azioni - **sinistra** e **destra**. (blocco di codice 2)
1. Per inizializzare, digita il seguente codice:
@@ -37,11 +57,11 @@ Per lavorare con il problema del bilanciamento del cartpole, dobbiamo inizializz
print(env.action_space.sample())
```
-Per vedere come funziona l'ambiente, eseguiamo una breve simulazione per 100 passi. Ad ogni passo, forniamo una delle azioni da intraprendere: in questa simulazione selezioniamo casualmente un'azione da `action_space`.
+Per vedere come funziona l'ambiente, eseguiamo una breve simulazione di 100 passi. Ad ogni passo, forniamo una delle azioni da eseguire - in questa simulazione scegliamo casualmente un'azione da `action_space`.
-1. Esegui il codice qui sotto e osserva cosa succede.
+1. Esegui il codice qui sotto e guarda cosa succede.
- ✅ Ricorda che è preferibile eseguire questo codice su un'installazione locale di Python! (blocco di codice 3)
+ ✅ Ricorda che è preferibile eseguire questo codice su un'installazione Python locale! (blocco di codice 3)
```python
env.reset()
@@ -54,9 +74,9 @@ Per vedere come funziona l'ambiente, eseguiamo una breve simulazione per 100 pas
Dovresti vedere qualcosa di simile a questa immagine:
- 
+ 
-1. Durante la simulazione, dobbiamo ottenere osservazioni per decidere come agire. Infatti, la funzione step restituisce le osservazioni attuali, una funzione di ricompensa e il flag "done" che indica se ha senso continuare la simulazione o meno: (blocco di codice 4)
+1. Durante la simulazione, dobbiamo ottenere osservazioni per decidere come agire. Infatti, la funzione step restituisce osservazioni correnti, una funzione di ricompensa e il flag done che indica se ha senso continuare la simulazione o no: (blocco di codice 4)
```python
env.reset()
@@ -69,7 +89,7 @@ Per vedere come funziona l'ambiente, eseguiamo una breve simulazione per 100 pas
env.close()
```
- Vedrai qualcosa di simile a questo nell'output del notebook:
+ Vedrai qualcosa di simile nell'output del notebook:
```text
[ 0.03403272 -0.24301182 0.02669811 0.2895829 ] -> 1.0
@@ -82,7 +102,7 @@ Per vedere come funziona l'ambiente, eseguiamo una breve simulazione per 100 pas
[ 0.17617249 0.35602306 -0.21873684 -0.90998894] -> 1.0
```
- Il vettore di osservazione restituito ad ogni passo della simulazione contiene i seguenti valori:
+ Il vettore di osservazione restituito a ogni passo della simulazione contiene i seguenti valori:
- Posizione del carrello
- Velocità del carrello
- Angolo del palo
@@ -95,30 +115,30 @@ Per vedere come funziona l'ambiente, eseguiamo una breve simulazione per 100 pas
print(env.observation_space.high)
```
- Potresti anche notare che il valore della ricompensa ad ogni passo della simulazione è sempre 1. Questo perché il nostro obiettivo è sopravvivere il più a lungo possibile, ovvero mantenere il palo in una posizione ragionevolmente verticale per il periodo di tempo più lungo.
+ Potresti anche notare che il valore della ricompensa ad ogni passo della simulazione è sempre 1. Questo perché il nostro obiettivo è sopravvivere il più a lungo possibile, cioè mantenere il palo in posizione ragionevolmente verticale per il massimo tempo.
✅ Infatti, la simulazione CartPole è considerata risolta se riusciamo a ottenere una ricompensa media di 195 su 100 prove consecutive.
## Discretizzazione dello stato
-Nel Q-Learning, dobbiamo costruire una Q-Table che definisca cosa fare in ogni stato. Per poterlo fare, lo stato deve essere **discreto**, più precisamente, deve contenere un numero finito di valori discreti. Pertanto, dobbiamo in qualche modo **discretizzare** le nostre osservazioni, mappandole a un insieme finito di stati.
+Nel Q-Learning, dobbiamo costruire una Q-Table che definisca cosa fare in ogni stato. Per poterlo fare, lo stato deve essere **discreto**, più precisamente deve contenere un numero finito di valori discreti. Quindi, dobbiamo in qualche modo **discretizzare** le nostre osservazioni, mappandole a un insieme finito di stati.
-Ci sono alcuni modi per farlo:
+Ci sono diversi modi per farlo:
-- **Dividere in intervalli**. Se conosciamo l'intervallo di un certo valore, possiamo dividere questo intervallo in un numero di **intervalli**, e poi sostituire il valore con il numero dell'intervallo a cui appartiene. Questo può essere fatto utilizzando il metodo [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html) di numpy. In questo caso, conosceremo esattamente la dimensione dello stato, poiché dipenderà dal numero di intervalli che selezioniamo per la digitalizzazione.
+- **Dividere in bins**. Se conosciamo l'intervallo di un certo valore, possiamo dividere questo intervallo in un numero di **bins**, e poi sostituire il valore con il numero del bin a cui appartiene. Questo può essere fatto usando il metodo numpy [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html). In questo caso, conosceremo precisamente la dimensione dello stato, perché dipenderà dal numero di bins scelti per la digitalizzazione.
+
+✅ Possiamo usare l'interpolazione lineare per portare i valori in un intervallo finito (ad esempio da -20 a 20), e poi convertire i numeri in interi arrotondandoli. Questo ci dà un controllo un po' minore sulla dimensione dello stato, specialmente se non conosciamo gli intervalli esatti dei valori in input. Per esempio, nel nostro caso 2 su 4 valori non hanno limiti superiori o inferiori, il che può risultare in un numero infinito di stati.
-✅ Possiamo utilizzare l'interpolazione lineare per portare i valori a un intervallo finito (ad esempio, da -20 a 20), e poi convertire i numeri in interi arrotondandoli. Questo ci dà un po' meno controllo sulla dimensione dello stato, soprattutto se non conosciamo gli intervalli esatti dei valori di input. Ad esempio, nel nostro caso 2 dei 4 valori non hanno limiti superiori/inferiori, il che potrebbe portare a un numero infinito di stati.
+Nel nostro esempio, useremo il secondo approccio. Come noterai più avanti, nonostante i limiti superiori/inferiori indefiniti, questi valori raramente prendono valori al di fuori di certi intervalli finiti, quindi quegli stati con valori estremi saranno molto rari.
-Nel nostro esempio, utilizzeremo il secondo approccio. Come potrai notare in seguito, nonostante i limiti superiori/inferiori indefiniti, quei valori raramente assumono valori al di fuori di certi intervalli finiti, quindi quegli stati con valori estremi saranno molto rari.
-
-1. Ecco la funzione che prenderà l'osservazione dal nostro modello e produrrà una tupla di 4 valori interi: (blocco di codice 6)
+1. Ecco la funzione che prende l'osservazione dal nostro modello e produce una tupla di 4 valori interi: (blocco di codice 6)
```python
def discretize(x):
return tuple((x/np.array([0.25, 0.25, 0.01, 0.1])).astype(np.int))
```
-1. Esploriamo anche un altro metodo di discretizzazione utilizzando gli intervalli: (blocco di codice 7)
+1. Esploriamo anche un altro metodo di discretizzazione usando i bins: (blocco di codice 7)
```python
def create_bins(i,num):
@@ -126,17 +146,17 @@ Nel nostro esempio, utilizzeremo il secondo approccio. Come potrai notare in seg
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
+ ints = [(-5,5),(-2,2),(-0.5,0.5),(-2,2)] # intervalli di valori per ogni parametro
+ nbins = [20,20,10,10] # numero di intervalli per ogni parametro
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. Ora eseguiamo una breve simulazione e osserviamo quei valori discreti dell'ambiente. Sentiti libero di provare sia `discretize` che `discretize_bins` e vedere se c'è una differenza.
+1. Ora eseguiamo una breve simulazione e osserviamo quei valori discreti dell'ambiente. Sentiti libero di provare sia `discretize` che `discretize_bins` e vedere se c'è differenza.
- ✅ `discretize_bins` restituisce il numero dell'intervallo, che è basato su 0. Quindi, per valori della variabile di input intorno a 0, restituisce il numero dal centro dell'intervallo (10). In `discretize`, non ci siamo preoccupati dell'intervallo dei valori di output, permettendo loro di essere negativi, quindi i valori dello stato non sono spostati e 0 corrisponde a 0. (blocco di codice 8)
+ ✅ discretize_bins restituisce il numero del bin, che è basato su zero. Quindi per valori della variabile di input intorno a 0 restituisce il numero dal centro dell'intervallo (10). In discretize, non abbiamo considerato l'intervallo dei valori di output, permettendo che siano negativi, quindi i valori dello stato non sono spostati, e 0 corrisponde a 0. (blocco di codice 8)
```python
env.reset()
@@ -150,15 +170,15 @@ Nel nostro esempio, utilizzeremo il secondo approccio. Come potrai notare in seg
env.close()
```
- ✅ Decommenta la riga che inizia con `env.render` se vuoi vedere come l'ambiente viene eseguito. Altrimenti puoi eseguirlo in background, il che è più veloce. Utilizzeremo questa esecuzione "invisibile" durante il nostro processo di Q-Learning.
+ ✅ Decommenta la riga che inizia con env.render se vuoi vedere come l'ambiente esegue. Altrimenti puoi eseguirlo in background, che è più veloce. Useremo questa esecuzione "invisibile" durante il nostro processo di Q-Learning.
## La struttura della Q-Table
-Nella lezione precedente, lo stato era una semplice coppia di numeri da 0 a 8, e quindi era conveniente rappresentare la Q-Table con un tensore numpy con una forma di 8x8x2. Se utilizziamo la discretizzazione con intervalli, la dimensione del nostro vettore di stato è anche nota, quindi possiamo utilizzare lo stesso approccio e rappresentare lo stato con un array di forma 20x20x10x10x2 (qui 2 è la dimensione dello spazio delle azioni, e le prime dimensioni corrispondono al numero di intervalli che abbiamo selezionato per ciascuno dei parametri nello spazio di osservazione).
+Nella nostra lezione precedente, lo stato era una semplice coppia di numeri da 0 a 8, quindi era comodo rappresentare la Q-Table con un tensore numpy di forma 8x8x2. Se usiamo la discretizzazione a bins, la dimensione del nostro vettore stato è nota, quindi possiamo usare lo stesso approccio e rappresentare lo stato con un array di forma 20x20x10x10x2 (qui 2 è la dimensione dello spazio azioni, e le prime dimensioni corrispondono al numero di bins selezionati per ciascun parametro nello spazio di osservazione).
-Tuttavia, a volte le dimensioni precise dello spazio di osservazione non sono note. Nel caso della funzione `discretize`, non possiamo mai essere sicuri che il nostro stato rimanga entro certi limiti, poiché alcuni dei valori originali non sono limitati. Pertanto, utilizzeremo un approccio leggermente diverso e rappresenteremo la Q-Table con un dizionario.
+Tuttavia, a volte le dimensioni precise dello spazio di osservazione non sono note. Nel caso della funzione `discretize`, non possiamo mai essere sicuri che il nostro stato rimanga entro certi limiti, perché alcuni dei valori originali non sono vincolati. Quindi useremo un approccio leggermente diverso e rappresenteremo la Q-Table con un dizionario.
-1. Usa la coppia *(state,action)* come chiave del dizionario, e il valore corrisponderà al valore della Q-Table. (blocco di codice 9)
+1. Usa la coppia *(stato, azione)* come chiave del dizionario, e il valore corrisponderà a una voce della Q-Table. (blocco di codice 9)
```python
Q = {}
@@ -168,38 +188,38 @@ Tuttavia, a volte le dimensioni precise dello spazio di osservazione non sono no
return [Q.get((state,a),0) for a in actions]
```
- Qui definiamo anche una funzione `qvalues()`, che restituisce un elenco di valori della Q-Table per un dato stato che corrisponde a tutte le azioni possibili. Se la voce non è presente nella Q-Table, restituiremo 0 come valore predefinito.
+ Qui definiamo anche una funzione `qvalues()`, che restituisce una lista di valori della Q-Table per uno stato dato, corrispondenti a tutte le azioni possibili. Se la voce non è presente nella Q-Table, ritorneremo 0 come valore predefinito.
-## Iniziamo il Q-Learning
+## Iniziamo Q-Learning
-Ora siamo pronti per insegnare a Peter a bilanciarsi!
+Ora siamo pronti per insegnare a Peter a mantenere l'equilibrio!
-1. Per prima cosa, impostiamo alcuni iperparametri: (blocco di codice 10)
+1. Prima, impostiamo alcuni iperparametri: (blocco di codice 10)
```python
- # hyperparameters
+ # iperparametri
alpha = 0.3
gamma = 0.9
epsilon = 0.90
```
- Qui, `alpha` è il **learning rate** che definisce in che misura dovremmo regolare i valori attuali della Q-Table ad ogni passo. Nella lezione precedente abbiamo iniziato con 1, e poi abbiamo ridotto `alpha` a valori più bassi durante l'addestramento. In questo esempio lo manterremo costante per semplicità, e puoi sperimentare con l'aggiustamento dei valori di `alpha` più tardi.
+ Qui, `alpha` è il **tasso di apprendimento** che definisce in quale misura dobbiamo aggiornare i valori attuali della Q-Table a ogni passo. Nella lezione precedente abbiamo iniziato con 1 e poi diminuito `alpha` durante l'addestramento. In questo esempio lo manterremo costante per semplicità, e potrai sperimentare con la regolazione di `alpha` più tardi.
- `gamma` è il **discount factor** che mostra in che misura dovremmo dare priorità alla ricompensa futura rispetto a quella attuale.
+ `gamma` è il **fattore di sconto** che mostra in quale misura dobbiamo dare priorità alla ricompensa futura rispetto a quella attuale.
- `epsilon` è il **exploration/exploitation factor** che determina se dovremmo preferire l'esplorazione o lo sfruttamento. Nel nostro algoritmo, in una percentuale di casi determinata da `epsilon` selezioneremo la prossima azione in base ai valori della Q-Table, e nel restante numero di casi eseguiremo un'azione casuale. Questo ci permetterà di esplorare aree dello spazio di ricerca che non abbiamo mai visto prima.
+ `epsilon` è il **fattore esplorazione/sfruttamento** che determina se preferiamo l'esplorazione allo sfruttamento o viceversa. Nel nostro algoritmo, nel `epsilon` percento dei casi selezioneremo la prossima azione in base ai valori della Q-Table, e nel restante selezioneremo un'azione casuale. Questo ci permetterà di esplorare aree dello spazio di ricerca mai viste prima.
- ✅ In termini di bilanciamento - scegliere un'azione casuale (esplorazione) agirebbe come un colpo casuale nella direzione sbagliata, e il palo dovrebbe imparare a recuperare l'equilibrio da questi "errori".
+ ✅ In termini di bilanciamento - scegliere un'azione casuale (esplorazione) corrisponderebbe a un colpo casuale nella direzione sbagliata, e il palo dovrà imparare a recuperare l'equilibrio da quegli "errori".
### Migliorare l'algoritmo
-Possiamo anche apportare due miglioramenti al nostro algoritmo rispetto alla lezione precedente:
-
-- **Calcolare la ricompensa cumulativa media**, su un numero di simulazioni. Stampiamo i progressi ogni 5000 iterazioni e calcoliamo la media della ricompensa cumulativa su quel periodo di tempo. Significa che se otteniamo più di 195 punti, possiamo considerare il problema risolto, con una qualità anche superiore a quella richiesta.
+Possiamo anche fare due miglioramenti al nostro algoritmo dalla lezione precedente:
-- **Calcolare il massimo risultato cumulativo medio**, `Qmax`, e memorizzeremo la Q-Table corrispondente a quel risultato. Quando esegui l'addestramento noterai che a volte il risultato cumulativo medio inizia a diminuire, e vogliamo mantenere i valori della Q-Table che corrispondono al miglior modello osservato durante l'addestramento.
+- **Calcolare la ricompensa cumulativa media**, su un numero di simulazioni. Stamperemo i progressi ogni 5000 iterazioni, e faremo la media della ricompensa cumulativa in quel periodo. Significa che se otteniamo più di 195 punti possiamo considerare il problema risolto, con qualità anche superiore a quella richiesta.
+
+- **Calcolare il massimo risultato medio cumulativo**, `Qmax`, e memorizzeremo la Q-Table corrispondente a quel risultato. Quando alleniamo, noterai che a volte il risultato medio cumulativo inizia a diminuire, e vogliamo mantenere i valori della Q-Table corrispondenti al miglior modello osservato durante l'addestramento.
-1. Raccogli tutte le ricompense cumulative ad ogni simulazione nel vettore `rewards` per un successivo grafico. (blocco di codice 11)
+1. Raccogli tutte le ricompense cumulative a ogni simulazione nel vettore `rewards` per eventuali grafici futuri. (blocco di codice 11)
```python
def probs(v,eps=1e-4):
@@ -214,15 +234,15 @@ Possiamo anche apportare due miglioramenti al nostro algoritmo rispetto alla lez
obs = env.reset()
done = False
cum_reward=0
- # == do the simulation ==
+ # == esegui la simulazione ==
while not done:
s = discretize(obs)
if random.random() Qmax:
@@ -240,25 +260,25 @@ Possiamo anche apportare due miglioramenti al nostro algoritmo rispetto alla lez
cum_rewards=[]
```
-Cosa puoi notare da questi risultati:
-
-- **Vicini al nostro obiettivo**. Siamo molto vicini a raggiungere l'obiettivo di ottenere 195 ricompense cumulative su 100+ esecuzioni consecutive della simulazione, o potremmo averlo effettivamente raggiunto! Anche se otteniamo numeri più piccoli, non lo sappiamo con certezza, perché calcoliamo la media su 5000 esecuzioni, e solo 100 esecuzioni sono richieste nei criteri formali.
+Ciò che potresti notare da questi risultati:
+- **Vicino al nostro obiettivo**. Siamo molto vicini a raggiungere l'obiettivo di ottenere 195 ricompense cumulative su 100+ esecuzioni consecutive della simulazione, o potremmo averlo effettivamente raggiunto! Anche se otteniamo numeri più piccoli, non lo sappiamo ancora, perché facciamo la media su 5000 esecuzioni e solo 100 sono richieste nel criterio formale.
+
- **La ricompensa inizia a diminuire**. A volte la ricompensa inizia a diminuire, il che significa che possiamo "distruggere" i valori già appresi nella Q-Table con quelli che peggiorano la situazione.
-Questa osservazione è più chiaramente visibile se tracciamo i progressi dell'addestramento.
+Questa osservazione è più visibile se tracciamo i progressi dell'addestramento.
-## Tracciare i progressi dell'addestramento
+## Grafico del progresso nell'addestramento
-Durante l'addestramento, abbiamo raccolto il valore della ricompensa cumulativa ad ogni iterazione nel vettore `rewards`. Ecco come appare quando lo tracciamo rispetto al numero di iterazioni:
+Durante l'addestramento, abbiamo raccolto il valore della ricompensa cumulativa a ogni iterazione nel vettore `rewards`. Ecco come appare se lo tracciamo rispetto al numero iterazione:
```python
plt.plot(rewards)
```
-
+
-Da questo grafico, non è possibile dedurre nulla, perché a causa della natura del processo di addestramento stocastico la lunghezza delle sessioni di addestramento varia notevolmente. Per dare più senso a questo grafico, possiamo calcolare la **media mobile** su una serie di esperimenti, diciamo 100. Questo può essere fatto comodamente usando `np.convolve`: (blocco di codice 12)
+Da questo grafico non è possibile trarre conclusioni, perché a causa della natura stocastica del processo di addestramento la durata delle sessioni varia molto. Per dare più senso a questo grafico, possiamo calcolare la **media mobile** su una serie di esperimenti, diciamo 100. Questo può essere fatto comodamente usando `np.convolve`: (blocco di codice 12)
```python
def running_average(x,window):
@@ -267,21 +287,24 @@ def running_average(x,window):
plt.plot(running_average(rewards,100))
```
-
+
## Variazione degli iperparametri
Per rendere l'apprendimento più stabile, ha senso regolare alcuni dei nostri iperparametri durante l'addestramento. In particolare:
-- **Per il learning rate**, `alpha`, possiamo iniziare con valori vicini a 1 e poi continuare a diminuire il parametro. Con il tempo, otterremo buone probabilità nella Q-Table, e quindi dovremmo regolarle leggermente, senza sovrascrivere completamente con nuovi valori.
+- **Per il tasso di apprendimento**, `alpha`, possiamo iniziare con valori vicini a 1 e poi diminuire gradualmente il parametro. Con il tempo otterremo buone probabilità nella Q-Table, quindi dovremmo aggiustarle leggermente, non sovrascriverle completamente con nuovi valori.
+
+- **Aumentare epsilon**. Potremmo voler aumentare lentamente `epsilon`, per esplorare di meno e sfruttare di più. Probabilmente conviene partire da un valore basso di `epsilon` e salire quasi a 1.
+
+> **Compito 1**: Gioca con i valori degli iperparametri e vedi se riesci a ottenere una ricompensa cumulativa più alta. Riuscirai a superare 195?
+
-- **Aumentare epsilon**. Potremmo voler aumentare lentamente `epsilon`, per esplorare meno e sfruttare di più. Probabilmente ha senso iniziare con un valore più basso di `epsilon` e aumentarlo fino a quasi 1.
-> **Compito 1**: Prova a modificare i valori degli iperparametri e verifica se riesci a ottenere un premio cumulativo più alto. Riesci a superare 195?
-> **Task 2**: Per risolvere formalmente il problema, è necessario ottenere una ricompensa media di 195 su 100 esecuzioni consecutive. Misura questo durante l'addestramento e assicurati di aver risolto formalmente il problema!
+> **Compito 2**: Per risolvere formalmente il problema, devi ottenere una ricompensa media di 195 su 100 esecuzioni consecutive. Misura questo durante l’addestramento e assicurati di aver risolto formalmente il problema!
## Vedere il risultato in azione
-Sarebbe interessante vedere effettivamente come si comporta il modello addestrato. Eseguiamo la simulazione e seguiamo la stessa strategia di selezione delle azioni utilizzata durante l'addestramento, campionando secondo la distribuzione di probabilità nella Q-Table: (blocco di codice 13)
+Sarebbe interessante vedere effettivamente come si comporta il modello addestrato. Eseguiamo la simulazione e seguiamo la stessa strategia di selezione delle azioni usata durante l’addestramento, campionando secondo la distribuzione di probabilità nella Q-Table: (blocco codice 13)
```python
obs = env.reset()
@@ -295,30 +318,32 @@ while not done:
env.close()
```
-Dovresti vedere qualcosa di simile:
+Dovresti vedere qualcosa di simile a questo:
-
+
---
## 🚀Sfida
-> **Task 3**: Qui abbiamo utilizzato la copia finale della Q-Table, che potrebbe non essere la migliore. Ricorda che abbiamo salvato la Q-Table con le migliori prestazioni nella variabile `Qbest`! Prova lo stesso esempio con la Q-Table con le migliori prestazioni copiando `Qbest` su `Q` e verifica se noti la differenza.
+> **Compito 3**: Qui abbiamo usato la copia finale della Q-Table, che potrebbe non essere la migliore. Ricorda che abbiamo salvato la Q-Table con le migliori prestazioni nella variabile `Qbest`! Prova lo stesso esempio con la Q-Table con le migliori prestazioni copiando `Qbest` su `Q` e verifica se noti la differenza.
-> **Task 4**: Qui non stavamo selezionando l'azione migliore a ogni passo, ma piuttosto campionando con la corrispondente distribuzione di probabilità. Avrebbe più senso selezionare sempre l'azione migliore, con il valore più alto nella Q-Table? Questo può essere fatto utilizzando la funzione `np.argmax` per trovare il numero dell'azione corrispondente al valore più alto nella Q-Table. Implementa questa strategia e verifica se migliora l'equilibrio.
+> **Compito 4**: Qui non abbiamo selezionato l’azione migliore a ogni passo, ma abbiamo campionato secondo la corrispondente distribuzione di probabilità. Ha senso selezionare sempre l’azione migliore, con il valore più alto della Q-Table? Questo può essere fatto usando la funzione `np.argmax` per trovare il numero dell’azione corrispondente al valore più alto nella Q-Table. Implementa questa strategia e verifica se migliora l’equilibrio.
## [Quiz post-lezione](https://ff-quizzes.netlify.app/en/ml/)
-## Compito
+## Assegnazione
[Addestra una Mountain Car](assignment.md)
## Conclusione
-Abbiamo ora imparato come addestrare agenti per ottenere buoni risultati semplicemente fornendo loro una funzione di ricompensa che definisce lo stato desiderato del gioco e dando loro l'opportunità di esplorare in modo intelligente lo spazio di ricerca. Abbiamo applicato con successo l'algoritmo di Q-Learning nei casi di ambienti discreti e continui, ma con azioni discrete.
+Ora abbiamo imparato come addestrare agenti a ottenere buoni risultati fornendo loro una funzione di ricompensa che definisce lo stato desiderato del gioco, e dando loro l’opportunità di esplorare in modo intelligente lo spazio di ricerca. Abbiamo applicato con successo l’algoritmo Q-Learning in ambienti discreti e continui, ma con azioni discrete.
-È importante studiare anche situazioni in cui lo stato delle azioni è continuo e quando lo spazio di osservazione è molto più complesso, come l'immagine dello schermo di un gioco Atari. In questi problemi spesso è necessario utilizzare tecniche di machine learning più potenti, come le reti neurali, per ottenere buoni risultati. Questi argomenti più avanzati saranno trattati nel nostro prossimo corso avanzato di intelligenza artificiale.
+È importante studiare anche situazioni in cui lo stato dell’azione è continuo e quando lo spazio di osservazione è molto più complesso, come l’immagine dello schermo di un gioco Atari. In questi problemi spesso è necessario usare tecniche di apprendimento automatico più potenti, come le reti neurali, per ottenere buoni risultati. Questi argomenti più avanzati sono oggetto del nostro prossimo corso avanzato di AI.
---
-**Disclaimer**:
-Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione.
\ No newline at end of file
+
+**Disclaimer**:
+Questo documento è stato tradotto utilizzando il servizio di traduzione AI [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire la precisione, si prega di notare che le traduzioni automatizzate possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa deve essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un essere umano. Non siamo responsabili per eventuali malintesi o interpretazioni errate derivanti dall’uso di questa traduzione.
+
\ No newline at end of file
diff --git a/translations/ja/.co-op-translator.json b/translations/ja/.co-op-translator.json
index f650316a9..c8d01dde7 100644
--- a/translations/ja/.co-op-translator.json
+++ b/translations/ja/.co-op-translator.json
@@ -24,8 +24,8 @@
"language_code": "ja"
},
"1-Introduction/3-fairness/README.md": {
- "original_hash": "9a6b702d1437c0467e3c5c28d763dac2",
- "translation_date": "2025-09-06T09:33:20+00:00",
+ "original_hash": "0f00d72169a0d37eecfd16d71e01700a",
+ "translation_date": "2026-07-14T04:48:45+00:00",
"source_file": "1-Introduction/3-fairness/README.md",
"language_code": "ja"
},
@@ -54,8 +54,8 @@
"language_code": "ja"
},
"2-Regression/1-Tools/README.md": {
- "original_hash": "fa81d226c71d5af7a2cade31c1c92b88",
- "translation_date": "2025-09-06T09:27:16+00:00",
+ "original_hash": "0b8635427b582d03ea4ab7089b93e505",
+ "translation_date": "2026-07-14T04:43:07+00:00",
"source_file": "2-Regression/1-Tools/README.md",
"language_code": "ja"
},
@@ -72,8 +72,8 @@
"language_code": "ja"
},
"2-Regression/2-Data/README.md": {
- "original_hash": "7c077988328ebfe33b24d07945f16eca",
- "translation_date": "2025-09-06T09:27:59+00:00",
+ "original_hash": "a58b2c4d16c6b122643391745ac15af6",
+ "translation_date": "2026-07-14T04:45:26+00:00",
"source_file": "2-Regression/2-Data/README.md",
"language_code": "ja"
},
@@ -89,6 +89,12 @@
"source_file": "2-Regression/2-Data/solution/Julia/README.md",
"language_code": "ja"
},
+ "2-Regression/2-Data/solution/notebook.ipynb": {
+ "original_hash": "96b95f8cf473481f2f371de8156f1571",
+ "translation_date": "2026-07-14T04:38:04+00:00",
+ "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
+ "language_code": "ja"
+ },
"2-Regression/3-Linear/README.md": {
"original_hash": "8b776e731c35b171d316d01d0e7b1369",
"translation_date": "2026-04-26T20:39:34+00:00",
@@ -115,7 +121,7 @@
},
"2-Regression/4-Logistic/README.md": {
"original_hash": "abf86d845c84330bce205a46b382ec88",
- "translation_date": "2025-09-06T09:26:24+00:00",
+ "translation_date": "2026-07-14T04:44:13+00:00",
"source_file": "2-Regression/4-Logistic/README.md",
"language_code": "ja"
},
@@ -457,7 +463,7 @@
},
"8-Reinforcement/1-QLearning/README.md": {
"original_hash": "911efd5e595089000cb3c16fce1beab8",
- "translation_date": "2025-09-06T09:39:02+00:00",
+ "translation_date": "2026-07-14T04:46:35+00:00",
"source_file": "8-Reinforcement/1-QLearning/README.md",
"language_code": "ja"
},
@@ -481,7 +487,7 @@
},
"8-Reinforcement/2-Gym/README.md": {
"original_hash": "107d5bb29da8a562e7ae72262d251a75",
- "translation_date": "2025-09-06T09:39:42+00:00",
+ "translation_date": "2026-07-14T04:47:44+00:00",
"source_file": "8-Reinforcement/2-Gym/README.md",
"language_code": "ja"
},
@@ -581,6 +587,19 @@
"source_file": "TROUBLESHOOTING.md",
"language_code": "ja"
},
+ "__translation_failures__": {
+ "sketchnotes/LICENSE.md": {
+ "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f",
+ "source_file": "sketchnotes/LICENSE.md",
+ "language_code": "ja",
+ "failure_date": "2026-07-14T04:42:06+00:00",
+ "status": "failed",
+ "error_type": "TranslationIncompleteError",
+ "error_message": "Markdown translation remained incomplete for chunk 1.1.1 of 'LICENSE.md', and the chunk could not be split further.",
+ "translator_version": "0.20.0",
+ "failure_policy_version": 1
+ }
+ },
"docs/_sidebar.md": {
"original_hash": "68dd06c685f6ce840e0acfa313352e7c",
"translation_date": "2025-09-03T23:13:39+00:00",
diff --git a/translations/ja/1-Introduction/3-fairness/README.md b/translations/ja/1-Introduction/3-fairness/README.md
index 87b7db14b..bd6be3c9d 100644
--- a/translations/ja/1-Introduction/3-fairness/README.md
+++ b/translations/ja/1-Introduction/3-fairness/README.md
@@ -1,147 +1,167 @@
-# 責任あるAIを用いた機械学習ソリューションの構築
-
-
-> スケッチノート: [Tomomi Imura](https://www.twitter.com/girlie_mac)
-
-## [講義前のクイズ](https://ff-quizzes.netlify.app/en/ml/)
+# 責任あるAIによる機械学習ソリューションの構築
+
+
+> スケッチノート作成者:[Tomomi Imura](https://www.twitter.com/girlie_mac)
+## [事前クイズ](https://ff-quizzes.netlify.app/en/ml/)
+
## はじめに
-このカリキュラムでは、機械学習が私たちの日常生活にどのように影響を与えているかを学び始めます。現在でも、システムやモデルは医療診断、ローン承認、詐欺検出などの日常的な意思決定タスクに関与しています。そのため、これらのモデルが信頼できる結果を提供することが重要です。ソフトウェアアプリケーションと同様に、AIシステムは期待を外れたり、望ましくない結果を生むことがあります。そのため、AIモデルの挙動を理解し、説明できることが不可欠です。
+このカリキュラムでは、機械学習がどのように私たちの日常生活に影響を与えているのか、その発見を始めます。現在でも、システムやモデルは日常の意思決定タスクに関与しており、医療診断、ローンの承認、不正検出などの分野で活躍しています。そのため、これらのモデルが信頼できる結果を提供するために正しく機能することが重要です。あらゆるソフトウェアアプリケーションと同様に、AIシステムも期待に応えられなかったり、望ましくない結果をもたらすことがあります。だからこそ、AIモデルの動作を理解し説明できることが不可欠です。
-例えば、モデルを構築するために使用するデータが特定の人種、性別、政治的見解、宗教などの属性を欠いている場合や、これらの属性が不均衡に表現されている場合、何が起こるでしょうか。また、モデルの出力が特定の属性を優遇するように解釈された場合、そのアプリケーションにどのような影響があるでしょうか。さらに、モデルが有害な結果を生み出した場合、その責任は誰にあるのでしょうか。このカリキュラムでは、これらの問いを探求します。
+モデル構築に使用するデータが、人種、性別、政治的見解、宗教など、特定の属性が欠落していたり、特定の属性を不均衡に代表している場合に何が起こるでしょうか?モデルの出力がある属性に偏って解釈された場合はどうでしょうか?そのアプリケーションにはどんな影響がありますか?さらに、モデルが不利益な結果を招いて人々に害を及ぼした場合はどうでしょうか?AIシステムの挙動に対する責任は誰にあるのでしょうか?これらはこのカリキュラムで探求するいくつかの問いです。
このレッスンでは以下を学びます:
-- 機械学習における公平性の重要性と公平性に関連する問題への意識を高める
-- 外れ値や異常なシナリオを探求する実践を通じて信頼性と安全性を確保する方法を学ぶ
-- 包括的なシステムを設計することで、すべての人を支援する必要性を理解する
-- データや人々のプライバシーとセキュリティを保護する重要性を探る
-- AIモデルの挙動を説明するための透明性の重要性を理解する
-- AIシステムに対する信頼を構築するために責任が不可欠であることを意識する
+- 機械学習における公平性の重要性と公平性に関連する害についての意識を高める。
+- 信頼性と安全性を確保するために異常値や異例のシナリオを探る実践を学ぶ。
+- 包摂的なシステム設計によるすべての人のエンパワーメントの必要性を理解する。
+- データと人のプライバシーおよびセキュリティ保護の重要性を探る。
+- AIモデルの挙動を説明するための透明性(ガラス箱アプローチ)の重要性を理解する。
+- AIシステムに対する信頼構築に不可欠なアカウンタビリティ(説明責任)を意識する。
## 前提条件
-前提条件として、「責任あるAIの原則」学習パスを受講し、以下のトピックに関するビデオを視聴してください:
+前提条件として、「責任あるAIの原則」ラーニングパスを受講し、以下のビデオをご覧ください:
-[学習パス](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)を通じて責任あるAIについてさらに学びましょう。
+[このラーニングパス](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)で責任あるAIについて学ぶ
-[](https://youtu.be/dnC8-uUZXSc "Microsoftの責任あるAIへのアプローチ")
+[](https://youtu.be/dnC8-uUZXSc "Microsoft's Approach to Responsible AI")
-> 🎥 上の画像をクリックしてビデオを見る: Microsoftの責任あるAIへのアプローチ
+> 🎥 上の画像をクリックしてビデオ視聴:Microsoftの責任あるAIへの取り組み
## 公平性
-AIシステムはすべての人を公平に扱い、似たようなグループの人々に異なる影響を与えないようにするべきです。例えば、AIシステムが医療治療、ローン申請、雇用に関する助言を提供する場合、同じ症状、財務状況、または職業資格を持つすべての人に同じ推奨を行うべきです。私たち人間は、意思決定や行動に影響を与える先天的な偏見を持っています。この偏見は、AIシステムを訓練するために使用するデータにも現れることがあります。このような操作は時に意図せずに起こることがあります。データに偏りを導入していることを意識的に知るのは難しいことが多いです。
+AIシステムはすべての人を公平に扱い、同じグループの人々を異なる方法で不公平に扱ってはなりません。例えば、医療治療、ローン申請、雇用に関する助言をAIシステムが提供する場合、同様の症状や経済状況、資格を持つ全員に同じ勧告をする必要があります。私たちは皆、行動や判断に影響を与える先入観を持っています。これらのバイアスは、AIシステムを学習させるためのデータに明示的に現れることがあります。こうしたバイアスの混入は意図せずに起こることもあります。データにバイアスを導入していることを意識的に知るのはしばしば難しいです。
-**「不公平」**とは、人種、性別、年齢、障害の有無などで定義される人々のグループに対する否定的な影響、つまり「害」を指します。主な公平性に関連する害は以下のように分類されます:
+「不公平」とは、人種、性別、年齢、障害状況などの特性で定義される集団に対する否定的な影響や「害」を指します。公平性に関連する主な害は以下のように分類できます:
-- **割り当て**: 例えば、性別や民族が他の属性よりも優遇される場合。
-- **サービスの質**: 特定のシナリオに対してデータを訓練したが、現実ははるかに複雑である場合、サービスの性能が低下します。例えば、暗い肌の人々を感知できないハンドソープディスペンサー。[参考](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
-- **中傷**: 不公平に批判し、何かまたは誰かをラベル付けすること。例えば、画像ラベリング技術が暗い肌の人々の画像をゴリラとして誤認したケース。
-- **過剰または過少表現**: 特定のグループが特定の職業に見られないという考えであり、それを促進し続けるサービスや機能は害を助長します。
-- **ステレオタイプ化**: 特定のグループを事前に割り当てられた属性と関連付けること。例えば、英語とトルコ語間の言語翻訳システムが性別に関連するステレオタイプによる不正確さを持つ場合。
+- 割当。例えば、性別や民族性のいずれかが他より優遇される場合。
+- サービスの質。特定のシナリオでのみデータを学習させたが、現実はもっと複雑で、性能為のサービスが低下する場合。例えば、暗い肌の人を認識できないハンドソープディスペンサーなど。[参考](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
+- 誹謗。不公平に誰かや何かを批判し、ラベル付けすること。例えば、ある画像ラベリング技術が暗い肌の人を類人猿として誤分類した有名な事例。
+- 過剰または過少表現。特定の集団が特定の職業で見られない、またはサービスや機能がそれを助長している場合。
+- 固定観念。特定の集団に対して事前に割り当てられた属性を関連付けること。例えば、英語とトルコ語間の翻訳で、性別に関する固定観念による誤訳が生じることがある。
-
+
> トルコ語への翻訳
-
-> 英語への翻訳
+
+> 英語への再翻訳
-AIシステムを設計・テストする際には、AIが公平であり、偏ったり差別的な決定を下すようにプログラムされていないことを確認する必要があります。AIと機械学習における公平性を保証することは、依然として複雑な社会技術的課題です。
+AIシステムを設計・テストする際には、人間に禁止されているバイアスや差別的判断をAIにプログラミングしないように、公平性を確保する必要があります。AIと機械学習における公平性の保証は依然として複雑な社会技術的課題です。
### 信頼性と安全性
-信頼を構築するためには、AIシステムが通常の条件や予期しない条件下でも信頼性があり、安全で一貫性がある必要があります。AIシステムがさまざまな状況でどのように振る舞うかを知ることが重要です。特に外れ値の場合です。AIソリューションを構築する際には、AIソリューションが遭遇する可能性のあるさまざまな状況に対処する方法に十分な焦点を当てる必要があります。例えば、自動運転車は人々の安全を最優先にする必要があります。その結果、車を動かすAIは、夜間、雷雨、吹雪、道路を横切る子供、ペット、道路工事など、車が遭遇する可能性のあるすべてのシナリオを考慮する必要があります。AIシステムが幅広い条件を信頼性と安全性を持って処理できるかどうかは、データサイエンティストやAI開発者が設計やテスト中にどれだけ予測を考慮したかを反映しています。
+信頼構築のために、AIシステムは通常および予期しない状況で信頼でき、安全で、一貫している必要があります。特に異常値の場合に、AIシステムがどのように振る舞うかを知ることが重要です。AIソリューションを構築する上で、多様な状況にどう対処するかに注力する必要があります。例えば、自動運転車は人の安全を最優先しなければなりません。そのため、夜間、雷雨、吹雪、子どもが道路を横断する場合、ペット、工事現場など、車が遭遇する可能性のあるすべてのシナリオを考慮する必要があります。AIシステムが幅広い状況を信頼性と安全性をもって処理できるかは、データサイエンティストやAI開発者が設計・テスト段階でどれだけ予測していたかを反映します。
-> [🎥 ビデオを見る: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
+> [🎥 ビデオはこちらをクリック: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
-### 包括性
+### 包摂性
-AIシステムはすべての人を巻き込み、支援するように設計されるべきです。AIシステムを設計・実装する際、データサイエンティストやAI開発者は、意図せずに人々を排除する可能性のあるシステム内の障壁を特定し、対処します。例えば、世界には10億人の障害を持つ人々がいます。AIの進歩により、彼らは日常生活で情報や機会により簡単にアクセスできるようになります。障壁に対処することで、すべての人に利益をもたらすより良い体験を持つAI製品を革新し、開発する機会が生まれます。
+AIシステムは、すべての人が関与し、エンパワーメントされるよう設計されるべきです。AIシステムの設計・実装時には、データサイエンティストやAI開発者は意図せず人を排除する可能性のある障壁を特定し解決します。例えば、世界には10億人の障害者がおり、AIの進歩により日常生活で幅広い情報や機会により容易にアクセスできるようになっています。障壁を取り除くことで、より良い体験をもたらすAI製品の革新と開発が可能になります。
-> [🎥 ビデオを見る: AIにおける包括性](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
+> [🎥 ビデオはこちらをクリック: AIにおける包摂性](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
### セキュリティとプライバシー
-AIシステムは安全であり、人々のプライバシーを尊重するべきです。プライバシー、情報、または生命を危険にさらすシステムには、人々は信頼を置きません。機械学習モデルを訓練する際には、最良の結果を得るためにデータに依存します。その際、データの出所と整合性を考慮する必要があります。例えば、データがユーザーによって提供されたものか、公開されているものかを確認します。次に、データを扱う際には、機密情報を保護し、攻撃に耐えるAIシステムを開発することが重要です。AIが普及するにつれて、プライバシーを保護し、重要な個人情報やビジネス情報を安全に保つことがますます重要かつ複雑になっています。AIにおけるプライバシーとデータセキュリティの問題は特に注意が必要です。なぜなら、データへのアクセスは、AIシステムが人々について正確で情報に基づいた予測や決定を行うために不可欠だからです。
+AIシステムは安全であり、人々のプライバシーを尊重するべきです。人々はプライバシーや情報、生命を危険にさらすシステムに対して信頼を持ちません。機械学習モデルをトレーニングする際には、最良の結果を得るためにデータに依存します。その際、データの出所と完全性を考慮する必要があります。例えば、データはユーザーが提供したのか公開情報か。次に、データを扱う際は機密情報を保護し攻撃に耐えるAIシステムを開発することが重要です。AIの普及に伴い、プライバシー保護と重要な個人情報や企業情報のセキュリティ確保はより重要かつ複雑になっています。AIシステムが正確で情報に基づく予測や判断を行うにはデータへのアクセスが不可欠であるため、プライバシーとデータセキュリティには特に注意が必要です。
-> [🎥 ビデオを見る: AIにおけるセキュリティ](https://www.microsoft.com/videoplayer/embed/RE4voJF)
+> [🎥 ビデオはこちらをクリック: AIのセキュリティ](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- 業界として、GDPR(一般データ保護規則)などの規制によって大きく促進されたプライバシーとセキュリティの分野で大きな進歩を遂げました。
-- しかし、AIシステムでは、システムをより個人的で効果的にするためにより多くの個人データが必要であるというニーズとプライバシーの間の緊張を認識する必要があります。
-- インターネットによる接続されたコンピュータの誕生と同様に、AIに関連するセキュリティ問題の急増も見られています。
-- 同時に、AIがセキュリティを向上させるために使用されている例もあります。例えば、ほとんどの現代のウイルス対策スキャナーはAIのヒューリスティックによって駆動されています。
-- データサイエンスプロセスが最新のプライバシーとセキュリティの実践と調和して融合することを確保する必要があります。
+- 業界として、GDPR(一般データ保護規則)などの規制に後押しされ、プライバシーとセキュリティの分野で大きな進歩を遂げてきました。
+- しかし、AIシステムでは、個人化や効果的なシステムのためにより多くの個人データを必要とすることとプライバシーとの緊張関係を認める必要があります。
+- インターネットの登場で接続コンピュータが増えたように、AI関連のセキュリティ問題も急増しています。
+- 一方で、AIはセキュリティ向上にも活用されています。例えば、現在ほとんどの最新アンチウイルススキャナーはAIのヒューリスティックで駆動されています。
+- データサイエンスのプロセスが最新のプライバシーおよびセキュリティ慣行とうまく調和するようにする必要があります。
-### 透明性
-AIシステムは理解可能であるべきです。透明性の重要な部分は、AIシステムとその構成要素の挙動を説明することです。AIシステムの理解を向上させるには、利害関係者がその機能や理由を理解し、潜在的な性能問題、安全性やプライバシーの懸念、偏り、排除的な慣行、または意図しない結果を特定できるようにする必要があります。また、AIシステムを使用する人々が、いつ、なぜ、どのようにそれを展開することを選択するかについて正直で率直であるべきだと考えています。さらに、使用するシステムの限界についても説明する必要があります。例えば、銀行が消費者の融資決定を支援するためにAIシステムを使用する場合、結果を検討し、どのデータがシステムの推奨に影響を与えるかを理解することが重要です。政府は産業全体でAIを規制し始めているため、データサイエンティストや組織は、AIシステムが規制要件を満たしているかどうかを説明する必要があります。特に望ましくない結果が生じた場合には。
+### 透明性
+AIシステムは理解しやすくあるべきです。透明性の重要な要素は、AIシステムとそのコンポーネントの動作を説明することです。AIシステムをより理解するためには、関係者が動作の仕組みや理由を把握することで、性能問題、安全性・プライバシーの懸念、バイアス、排除的慣行、意図しない結果を特定できるようにする必要があります。また、AIシステムの利用者は、いつ、なぜ、どのようにAIを導入するのか、その制限も正直に開示すべきだと考えています。例えば銀行が消費者向けローン審査のためにAIシステムを用いる場合、結果を検証しどのデータが推薦に影響しているのか理解することが重要です。政府は産業全体でAIを規制し始めているため、データサイエンティストや組織は、望ましくない結果が出た場合を含め、AIシステムが規制要件を満たすか説明する必要があります。
-> [🎥 ビデオを見る: AIにおける透明性](https://www.microsoft.com/videoplayer/embed/RE4voJF)
+> [🎥 ビデオはこちらをクリック: AIの透明性](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- AIシステムは非常に複雑であるため、どのように機能し、結果を解釈するかを理解するのが難しいです。
-- この理解の欠如は、これらのシステムが管理、運用、文書化される方法に影響を与えます。
-- この理解の欠如はさらに重要なことに、これらのシステムが生成する結果を使用して行われる意思決定に影響を与えます。
+- AIシステムは非常に複雑であるため、動作の仕組みや結果の解釈が難しいです。
+- 理解不足は管理、運用、文書化のあり方に影響を及ぼします。
+- さらに重要なのは、理解不足がこれらのシステムが出す結果に基づく意思決定に影響を与えることです。
-### 責任
+### アカウンタビリティ
+
+AIシステムを設計・展開する人々は、そのシステムの動作に責任を持つ必要があります。特に顔認識のような敏感な技術ではアカウンタビリティが重要です。最近、行方不明の子どもを見つけるなどの用途で、法執行機関から顔認識技術の需要が高まっています。しかし、この技術は政府によって特定個人の継続的な監視など、国民の基本的自由を脅かす用途に使われる可能性もあります。そのため、データサイエンティストや組織はAIシステムが個人や社会に与える影響に責任を持つ必要があります。
-AIシステムを設計・展開する人々は、そのシステムの運用方法に対して責任を負うべきです。責任の必要性は、特に顔認識のような敏感な技術を使用する場合に重要です。最近、顔認識技術に対する需要が増加しており、特に法執行機関が行方不明の子供を見つけるなどの用途でその技術の可能性を見出しています。しかし、これらの技術は、特定の個人の継続的な監視を可能にするなど、政府が市民の基本的な自由を危険にさらす可能性があります。そのため、データサイエンティストや組織は、AIシステムが個人や社会に与える影響に対して責任を負う必要があります。
+[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft's Approach to Responsible AI")
-[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoftの責任あるAIへのアプローチ")
+> 🎥 上の画像をクリックしてビデオ視聴:顔認識による大規模監視の警告
-> 🎥 上の画像をクリックしてビデオを見る: 顔認識による大量監視の警告
+最終的に、私たちの時代における最大の課題の一つは、AIを社会に導入する最初の世代として、コンピュータを人々に説明責任を持たせ、またコンピュータ設計者自身が他のすべての人に対して説明責任を持ち続ける方法をどう確立するかです。
-最終的に、私たちの世代、つまりAIを社会にもたらす最初の世代にとって最大の問いの一つは、コンピュータが人々に対して責任を持ち続ける方法と、コンピュータを設計する人々が他のすべての人々に対して責任を持ち続ける方法を確保することです。
+## インパクトアセスメント(影響評価)
-## 影響評価
+機械学習モデルのトレーニング前に、AIシステムの目的、意図された使用法、展開場所、システムとの関わりを持つ人を理解するための影響評価を行うことが重要です。これらはシステムの評価者やテスターが潜在的リスクや期待される影響を識別する際に考慮すべき要素を知るのに役立ちます。
-機械学習モデルを訓練する前に、AIシステムの目的、意図された使用法、展開場所、システムと対話する人々を理解するために影響評価を実施することが重要です。これらは、システムを評価するレビュー担当者やテスターが、潜在的なリスクや予想される結果を特定する際に考慮すべき要因を知るのに役立ちます。
+影響評価で着目すべき領域は以下の通りです:
-影響評価を実施する際の重点領域は以下の通りです:
+* 個人への悪影響。利用制限や要求事項、対応していない使用法、既知の制限を意識し、システムが個人に害を及ぼす使われ方をしないことを保証することが重要です。
+* データ要件。システムのデータ使用方法と場所を理解すると、GDPRやHIPAAのデータ規制などに注意すべき点を検討できます。また、学習に必要なデータ量やデータソースの十分性も評価します。
+* 影響の概要。システム利用による潜在的な害のリストを作成し、機械学習ライフサイクル全体で問題が緩和または対処されているか確認します。
+* 6つの核心原則ごとの適用可能な目標。各原則の目標が達成されているか、ギャップがあるか評価します。
-* **個人への悪影響**: 制限や要件、サポートされていない使用法、またはシステムの性能を妨げる既知の制限を認識することで、システムが個人に害を与える方法で使用されないようにすることが重要です。
-* **データ要件**: システムがデータをどのように、どこで使用するかを理解することで、考慮すべきデータ要件(例:GDPRやHIPPAデータ規制)を探ることができます。また、データの出所や量が訓練に十分であるかどうかを検討します。
-* **影響の概要**: システムの使用から生じる可能性のある害のリストを収集します。MLライフサイクル全体を通じて、特定された問題が軽減または対処されているかどうかを確認します。
-* **6つのコア原則に基づく適用可能な目標**: 各原則の目標が達成されているか、ギャップがあるかどうかを評価します。
## 責任あるAIによるデバッグ
-ソフトウェアアプリケーションのデバッグと同様に、AIシステムのデバッグはシステムの問題を特定し解決する必要なプロセスです。モデルが期待通りに、または責任を持って動作しない理由に影響を与える要因は多くあります。ほとんどの従来のモデル性能指標は、モデルの性能の定量的な集計であり、責任あるAI原則に違反する方法を分析するには十分ではありません。さらに、機械学習モデルはブラックボックスであり、その結果を導く要因を理解したり、誤りを説明するのが難しいです。このコースの後半では、責任あるAIダッシュボードを使用してAIシステムをデバッグする方法を学びます。このダッシュボードは、データサイエンティストやAI開発者が以下を実行するための包括的なツールを提供します:
+ソフトウェアアプリケーションのデバッグと同様に、AIシステムのデバッグは問題を特定・解決する必要なプロセスです。モデルが期待通り、また責任ある振る舞いをしない原因は多岐にわたります。従来のモデル性能指標はモデルのパフォーマンスの定量的集約値であり、責任あるAI原則違反を分析するには不十分です。さらに、機械学習モデルはブラックボックスであり、結果に影響を与えている要因や誤った判断の理由を説明するのは難しいです。本コースでは後に、責任あるAIダッシュボードの使い方を学びます。このダッシュボードは、データサイエンティストやAI開発者が包括的に実施できるツールとして以下を提供します:
+
+* 誤差分析。システムの公平性や信頼性に影響する誤差分布を特定するため。
+* モデル概要。データコホート間のパフォーマンス格差を発見するため。
+* データ分析。データの分布を理解し、公平性、包摂性、信頼性に影響する可能性のあるバイアスを特定するため。
+* モデル解釈性。モデルの予測に影響を与える要因を理解し、モデルの挙動説明に役立てることで透明性とアカウンタビリティを高めるため。
+
+
+## 🚀 チャレンジ
+
+害をそもそも生じさせないために、私たちは以下を実践すべきです:
+
+- システムに関わる人々の多様な背景や視点を持つこと
+- 社会の多様性を反映したデータセットに投資すること
+- 機械学習のライフサイクル全体で責任あるAIの検出と修正の方法を改善すること
+
+モデル構築や使用において信頼できないことが明らかな実際のシナリオについて考えてみましょう。他に考慮すべきことはありますか?
+
+## [事後クイズ](https://ff-quizzes.netlify.app/en/ml/)
+
+## 復習&自主学習
+
-* **エラー分析**
-このワークショップを視聴して、トピックをさらに深く掘り下げましょう:
+このレッスンでは、機械学習における公平性と不公平性の概念の基本について学びました。
+
+これらのトピックをさらに深く掘り下げるには、このワークショップをご覧ください:
-- 責任あるAIの追求: 原則を実践に移す方法
- 講師: Besmira Nushi、Mehrnoosh Sameki、Amit Sharma
+- 責任あるAIの追求:Besmira Nushi、Mehrnoosh Sameki、Amit Sharmaによる原則を実践に移す
-[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: 責任あるAIを構築するためのオープンソースフレームワーク")
+[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI")
-> 🎥 上の画像をクリックして動画を視聴:
-RAI Toolbox: 責任あるAIを構築するためのオープンソースフレームワーク
-講師: Besmira Nushi、Mehrnoosh Sameki、Amit Sharma
+> 🎥 上記の画像をクリックすると、Besmira Nushi、Mehrnoosh Sameki、Amit Sharmaによる「RAI Toolbox: 責任あるAIを構築するためのオープンソースフレームワーク」のビデオが再生されます
-また、以下もご覧ください:
+また、以下もお読みください:
-- MicrosoftのRAIリソースセンター:
- [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
+- Microsoftの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/)
+- MicrosoftのFATE研究グループ:[FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
-RAI Toolbox:
+RAI Toolbox:
- [Responsible AI Toolbox GitHubリポジトリ](https://github.com/microsoft/responsible-ai-toolbox)
-Azure Machine Learningの公平性を確保するためのツールについて読む:
+Azure Machine Learningの公平性担保ツールについてはこちらをご覧ください:
-- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
+- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
## 課題
-[RAI Toolboxを探索する](assignment.md)
+[Explore RAI Toolbox](assignment.md)
---
-**免責事項**:
-この文書は、AI翻訳サービス [Co-op Translator](https://github.com/Azure/co-op-translator) を使用して翻訳されています。正確性を追求しておりますが、自動翻訳には誤りや不正確な表現が含まれる可能性があります。元の言語で記載された原文が正式な情報源と見なされるべきです。重要な情報については、専門の人間による翻訳を推奨します。この翻訳の利用に起因する誤解や誤認について、当社は一切の責任を負いません。
\ No newline at end of file
+
+**免責事項**:
+本書類は AI 翻訳サービス [Co-op Translator](https://github.com/Azure/co-op-translator) を使用して翻訳されています。正確性を期していますが、自動翻訳には誤りや不正確な部分が含まれる可能性があることをご承知おきください。原文の原語版が正式な情報源とみなされるべきです。重要な情報については、専門の人間による翻訳を推奨します。本翻訳の利用により生じたいかなる誤解や解釈違いについても、当方は責任を負いかねます。
+
\ No newline at end of file
diff --git a/translations/ja/2-Regression/1-Tools/README.md b/translations/ja/2-Regression/1-Tools/README.md
index ec311e18b..3c659d7b9 100644
--- a/translations/ja/2-Regression/1-Tools/README.md
+++ b/translations/ja/2-Regression/1-Tools/README.md
@@ -1,120 +1,121 @@
-# PythonとScikit-learnを使った回帰モデルの入門
+# PythonとScikit-learnで回帰モデルを始めよう
-
+
-> スケッチノート作成者: [Tomomi Imura](https://www.twitter.com/girlie_mac)
+> スケッチノート: [Tomomi Imura](https://www.twitter.com/girlie_mac)
-## [講義前のクイズ](https://ff-quizzes.netlify.app/en/ml/)
+## [事前講義クイズ](https://ff-quizzes.netlify.app/en/ml/)
> ### [このレッスンはRでも利用可能です!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
## はじめに
-この4つのレッスンでは、回帰モデルの構築方法を学びます。これらが何のために使われるのかについては後ほど説明します。しかし、その前に、プロセスを開始するための適切なツールを準備してください!
+この4つのレッスンで、回帰モデルの構築方法を学びます。これらが何のために使われるかをすぐに説明します。その前に、プロセスを始めるために適切なツールが揃っていることを確認しましょう!
-このレッスンで学ぶ内容:
+このレッスンでは、以下を学びます:
-- ローカルで機械学習タスクを実行するためのコンピュータの設定方法
-- Jupyter Notebookの使い方
-- Scikit-learnのインストールと使用方法
-- 線形回帰を実際に体験する演習
+- ローカルでの機械学習タスクのためにコンピューターの設定を行う方法。
+- Jupyterノートブックの使い方。
+- Scikit-learnの使用方法(インストールを含む)。
+- 実践演習で線形回帰を探究する。
## インストールと設定
-[](https://youtu.be/-DfeD2k2Kj0 "初心者向け機械学習 - 機械学習モデルを構築するためのツールのセットアップ")
+[](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)も利用可能です。
+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の使用方法によっては異なるバージョンが必要になる場合があります。そのため、[仮想環境](https://docs.python.org/3/library/venv.html)を使用することが便利です。
+ しかし、Pythonの用途によっては異なるバージョンが必要となる場合があり、そのために [仮想環境](https://docs.python.org/3/library/venv.html) を使うことが有効です。
-2. **Visual Studio Codeをインストール**。コンピュータにVisual Studio Codeがインストールされていることを確認してください。基本的なインストールについては、[Visual Studio Codeのインストール](https://code.visualstudio.com/)手順に従ってください。このコースではVisual Studio CodeでPythonを使用するため、[Visual Studio CodeのPython開発用設定](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott)について学んでおくと良いでしょう。
+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に慣れるために、この[学習モジュールのコレクション](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)を試してみてください。
+ > このコレクションの [学習モジュール](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) に取り組みながらPythonに慣れましょう。
>
> [](https://youtu.be/yyQM70vi7V8 "Visual Studio CodeでPythonをセットアップ")
>
- > 🎥 上の画像をクリックすると、VS Code内でPythonを使用する方法の動画が再生されます。
+ > 🎥 上の画像をクリックするとVS Code内でPythonを使う動画が視聴できます。
-3. **Scikit-learnをインストール**。[こちらの手順](https://scikit-learn.org/stable/install.html)に従ってインストールしてください。Python 3を使用する必要があるため、仮想環境を使用することをお勧めします。M1 Macにこのライブラリをインストールする場合、リンク先のページに特別な手順が記載されています。
+3. **Scikit-learnをインストール**。[こちらの手順](https://scikit-learn.org/stable/install.html)に従ってください。Python 3を使う必要があるため、仮想環境の利用をお勧めします。M1 Macでインストールする場合は、リンク先に特別な指示があります。
4. **Jupyter Notebookをインストール**。[Jupyterパッケージ](https://pypi.org/project/jupyter/)をインストールしてください。
-## ML作成環境
+## あなたのML開発環境
-**ノートブック**を使用してPythonコードを開発し、機械学習モデルを作成します。このタイプのファイルはデータサイエンティストにとって一般的なツールであり、拡張子`.ipynb`で識別されます。
+ノートブックを使ってPythonコードを書き、機械学習モデルを作成します。この種のファイルはデータサイエンティストに一般的で、拡張子 `.ipynb` で識別できます。
-ノートブックは、コードを記述するだけでなく、コードに関するメモやドキュメントを追加することができるインタラクティブな環境です。これは実験的または研究指向のプロジェクトに非常に役立ちます。
+ノートブックはインタラクティブな環境で、コードだけでなくメモやドキュメントを書くことができ、実験や研究志向のプロジェクトに非常に役立ちます。
-[](https://youtu.be/7E-jC8FLA2E "初心者向け機械学習 - 回帰モデルを構築するためのJupyter Notebookのセットアップ")
+[](https://youtu.be/7E-jC8FLA2E "初心者向け機械学習 - Jupyterノートブックのセットアップで回帰モデルを構築開始")
-> 🎥 上の画像をクリックすると、この演習を進める短い動画が再生されます。
+> 🎥 上の画像をクリックすると、この演習の解説動画が視聴できます。
-### 演習 - ノートブックを操作する
+### 演習 - ノートブックを使ってみる
-このフォルダには、_notebook.ipynb_ というファイルがあります。
+このフォルダーに _notebook.ipynb_ ファイルがあります。
1. Visual Studio Codeで _notebook.ipynb_ を開きます。
- JupyterサーバーがPython 3+で起動します。ノートブック内には`run`できるコード部分があります。コードブロックを実行するには、再生ボタンのようなアイコンを選択します。
+ JupyterサーバーがPython 3+で起動します。ノートブック内には `run` 可能なコードブロックがあります。再生ボタンのようなアイコンを選択してコードブロックを実行できます。
-2. `md`アイコンを選択し、以下のテキストを追加します: **# Welcome to your notebook**。
+2. `md` アイコンを選択し、少しマークダウンを書き、次のテキストを追加します:**# Welcome to your notebook**。
次に、Pythonコードを追加します。
3. コードブロックに **print('hello notebook')** と入力します。
-4. 矢印を選択してコードを実行します。
+4. 実行矢印を選択してコードを実行します。
- 以下の出力が表示されるはずです:
+ 出力は次のように表示されるはずです:
```output
hello notebook
```
-
+
-コードとコメントを交互に記述することで、ノートブックを自己文書化することができます。
+コードにコメントを挟みながらノートブックを自己文書化することもできます。
-✅ ウェブ開発者の作業環境とデータサイエンティストの作業環境がどれほど異なるか、少し考えてみてください。
+✅ ウェブ開発者の作業環境とデータサイエンティストの環境の違いについて少し考えてみましょう。
-## Scikit-learnの準備
+## Scikit-learnを使いこなそう
-Pythonがローカル環境にセットアップされ、Jupyter Notebookに慣れたら、次はScikit-learnに慣れる番です(`sci`は`science`のように発音します)。Scikit-learnは、MLタスクを実行するための[広範なAPI](https://scikit-learn.org/stable/modules/classes.html#api-ref)を提供します。
+Pythonがローカル環境に設定され、Jupyterノートブックに慣れたら、Scikit-learn(`sci`は「サイエンス」の発音に似ています)も同様に使いこなしましょう。Scikit-learnは機械学習タスクをサポートする[豊富なAPI](https://scikit-learn.org/stable/modules/classes.html#api-ref)を提供します。
-[公式サイト](https://scikit-learn.org/stable/getting_started.html)によると、「Scikit-learnは、教師あり学習と教師なし学習をサポートするオープンソースの機械学習ライブラリです。また、モデルのフィッティング、データの前処理、モデル選択と評価、その他多くのユーティリティを提供します。」
+[公式サイト](https://scikit-learn.org/stable/getting_started.html)によると、「Scikit-learnは、教師あり学習と教師なし学習をサポートするオープンソースの機械学習ライブラリです。また、モデルフィッティング、データ前処理、モデル選択と評価、その他多くのユーティリティも提供しています。」
-このコースでは、Scikit-learnやその他のツールを使用して、いわゆる「従来型の機械学習」タスクを実行するためのモデルを構築します。ニューラルネットワークや深層学習は、今後の「AI for Beginners」カリキュラムで詳しく扱う予定です。
+このコースでは、Scikit-learnなどのツールを使って、いわゆる「伝統的な機械学習」タスクを実行するモデルを構築します。ニューラルネットワークやディープラーニングは扱わず、後の「初心者向けAI」カリキュラムで詳しく扱います。
-Scikit-learnを使えば、モデルを簡単に構築し、それらを評価して使用することができます。主に数値データを使用することに焦点を当てており、学習ツールとして使用できるいくつかの既製データセットが含まれています。また、学生が試せる事前構築済みのモデルも含まれています。まずは、事前パッケージ化されたデータをロードし、Scikit-learnを使った最初のMLモデルを基本的なデータで試してみましょう。
+Scikit-learnはモデル構築と評価を簡単に行えるよう設計されており、主に数値データを扱い、学習用の既製データセットもいくつか備えています。学生が試せる事前構築モデルも含まれています。まずは、パッケージ済みデータの読み込みと組み込み推定器を使った初めてのMLモデルを基本データで試してみましょう。
-## 演習 - 初めてのScikit-learnノートブック
+## 演習 - Scikit-learnノートブックで最初のモデルを作る
-> このチュートリアルは、Scikit-learnのウェブサイトにある[線形回帰の例](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py)に触発されています。
+> このチュートリアルはScikit-learnのウェブサイトにある[線形回帰の例](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で初めての線形回帰プロジェクト")
-> 🎥 上の画像をクリックすると、この演習を進める短い動画が再生されます。
+[](https://youtu.be/2xkXL5EUpS0 "初心者向け機械学習 - Pythonで最初の線形回帰プロジェクト")
-このレッスンに関連する_notebook.ipynb_ファイル内のすべてのセルを、ゴミ箱アイコンを押してクリアしてください。
+> 🎥 上の画像をクリックすると、この演習を解説する短い動画が視聴できます。
-このセクションでは、学習目的でScikit-learnに組み込まれている糖尿病に関する小さなデータセットを使用します。糖尿病患者の治療をテストしたいと仮定します。機械学習モデルは、変数の組み合わせに基づいて、どの患者が治療により良い反応を示すかを判断するのに役立つかもしれません。非常に基本的な回帰モデルでも、視覚化することで、理論的な臨床試験を整理するのに役立つ変数に関する情報を示すことができます。
+_notebook.ipynb_ ファイルでは、すべてのセルを「ゴミ箱」アイコンを押してクリアしてください。
-✅ 回帰方法には多くの種類があり、どれを選ぶかは求めている答えによります。例えば、ある年齢の人の予測される身長を知りたい場合は、**数値値**を求めているため線形回帰を使用します。一方、ある料理がビーガン料理と見なされるべきかどうかを知りたい場合は、**カテゴリの割り当て**を求めているためロジスティック回帰を使用します。後ほどロジスティック回帰について詳しく学びます。データに対してどのような質問ができるか、そしてどの方法が適切か少し考えてみてください。
+このセクションでは、学習用にScikit-learnに組み込まれている糖尿病に関する小さなデータセットで作業します。糖尿病患者の治療法をテストする場合を想像してください。機械学習モデルは、複数の変数の組み合わせに基づいて、どの患者が治療により良い反応を示すかを判断するのに役立つかもしれません。とても基本的な回帰モデルでも視覚化することで、理論的な臨床試験のための変数に関する情報が得られるかもしれません。
-さっそくこのタスクを始めましょう。
+✅ 回帰方法には様々なタイプがあり、どれを選ぶかは答えたい質問によります。年齢に対する推定身長など、数値的な値を予測したい場合は線形回帰を使います。料理の種類がビーガンかどうかのカテゴリー割り当てを知りたい場合はロジスティック回帰を使います。ロジスティック回帰は後で詳しく学びます。データに対してどんな質問をできるか、どの方法が適切か少し考えてみてください。
+
+では、このタスクを始めましょう。
### ライブラリのインポート
-このタスクでは以下のライブラリをインポートします:
+このタスクのために次のライブラリをインポートします:
-- **matplotlib**。便利な[グラフ作成ツール](https://matplotlib.org/)で、線グラフを作成するために使用します。
-- **numpy**。[numpy](https://numpy.org/doc/stable/user/whatisnumpy.html)はPythonで数値データを扱うための便利なライブラリです。
+- **matplotlib**。便利な[グラフ作成ツール](https://matplotlib.org/)で、折れ線グラフを作るのに使います。
+- **numpy**。[numpy](https://numpy.org/doc/stable/user/whatisnumpy.html)はPythonで数値データを扱うライブラリです。
- **sklearn**。これは[Scikit-learn](https://scikit-learn.org/stable/user_guide.html)ライブラリです。
-タスクを助けるためにいくつかのライブラリをインポートします。
+作業に役立つライブラリをインポートします。
-1. 以下のコードを入力してインポートを追加します:
+1. 以下のコードを入力してインポートします:
```python
import matplotlib.pyplot as plt
@@ -122,26 +123,26 @@ Scikit-learnを使えば、モデルを簡単に構築し、それらを評価
from sklearn import datasets, linear_model, model_selection
```
- 上記では`matplotlib`、`numpy`をインポートし、`sklearn`から`datasets`、`linear_model`、`model_selection`をインポートしています。`model_selection`はデータをトレーニングセットとテストセットに分割するために使用されます。
+ ここでは `matplotlib` と `numpy` をインポートし、`sklearn` からは `datasets` 、 `linear_model` 、 `model_selection` をインポートしています。`model_selection` はデータを訓練用とテスト用に分割するのに使います。
### 糖尿病データセット
-組み込みの[糖尿病データセット](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset)には、糖尿病に関する442件のデータサンプルが含まれており、10個の特徴変数があります。その一部は以下の通りです:
+組み込みの [糖尿病データセット](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset)は、442のサンプルを含み、10の特徴変数があります。主なものは以下です:
-- age: 年齢(年単位)
-- bmi: ボディマス指数
+- age: 年齢(歳)
+- bmi: 体格指数
- bp: 平均血圧
- s1 tc: T細胞(白血球の一種)
-✅ このデータセットには、糖尿病に関する研究で重要な特徴変数として「性別」の概念が含まれています。多くの医療データセットにはこのような二分分類が含まれています。このような分類が治療から特定の人口を除外する可能性について少し考えてみてください。
+✅ このデータセットには糖尿病研究で重要な特徴変数として「性別」が含まれています。多くの医療データセットにはこの種の二値分類が含まれます。こうした分類が特定の集団を治療から排除する可能性について少し考えてみてください。
-次に、Xとyデータをロードします。
+では、Xとyのデータを読み込みます。
> 🎓 これは教師あり学習であり、名前付きの「y」ターゲットが必要です。
-新しいコードセルで、`load_diabetes()`を呼び出して糖尿病データセットをロードします。入力`return_X_y=True`は、`X`がデータマトリックスで、`y`が回帰ターゲットであることを示します。
+新しいコードセルで、`load_diabetes()` を使って糖尿病データセットを読み込みます。引数 `return_X_y=True` は `X` がデータ行列、`y` が回帰ターゲットであることを示します。
-1. データマトリックスの形状とその最初の要素を表示するためにいくつかのprintコマンドを追加します:
+1. データ行列の形状と最初の要素を表示するために、次のprint文を追加します:
```python
X, y = datasets.load_diabetes(return_X_y=True)
@@ -149,9 +150,9 @@ Scikit-learnを使えば、モデルを簡単に構築し、それらを評価
print(X[0])
```
- 返されるのはタプルです。タプルの最初の2つの値をそれぞれ`X`と`y`に割り当てています。[タプルについて詳しく学ぶ](https://wikipedia.org/wiki/Tuple)。
+ 返されるのはタプルです。最初の2つの値をそれぞれ `X` と `y` に割り当てています。[タプル](https://wikipedia.org/wiki/Tuple)について学びましょう。
- このデータには442件のアイテムがあり、10個の要素で構成される配列の形状を持つことがわかります:
+ このデータが442項目で、それぞれ10要素の配列で構成されていることがわかります:
```text
(442, 10)
@@ -159,39 +160,39 @@ Scikit-learnを使えば、モデルを簡単に構築し、それらを評価
-0.04340085 -0.00259226 0.01990842 -0.01764613]
```
- ✅ データと回帰ターゲットの関係について少し考えてみてください。線形回帰は特徴Xとターゲット変数yの間の関係を予測します。このデータセットの[ターゲット](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset)をドキュメントで見つけることができますか?このデータセットは何を示していますか?
+ ✅ データと回帰ターゲットの関係について少し考えてみましょう。線形回帰は特徴量Xとターゲット変数yの関係を予測します。糖尿病データセットの[ターゲット](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset)はドキュメントで何を示しているでしょうか?このデータセットが示す内容は何でしょう?
-2. 次に、このデータセットの一部をプロットするために選択します。データセットの3列目を選択します。これを行うには、`:`演算子を使用してすべての行を選択し、インデックス(2)を使用して3列目を選択します。また、`reshape(n_rows, n_columns)`を使用してデータを2D配列に再構成します。パラメータの1つが-1の場合、対応する次元が自動的に計算されます。
+2. 次に、データセットの3列目を選択してプロット用のデータを用意します。`:` 操作子で全行を選び、インデックス `2` で3列目を選択します。プロットに必要な2次元配列に変換するには `reshape(n_rows, n_columns)` を使います。 `-1` を指定すると、その次元は自動的に計算されます。
```python
X = X[:, 2]
X = X.reshape((-1,1))
```
- ✅ いつでもデータを印刷してその形状を確認できます。
+ ✅ 必要なら都度データの形状をプリントして確認しましょう。
-3. データをプロットする準備が整ったら、このデータセットの数値間に論理的な分割を決定するために機械を使用できるか確認します。これを行うには、データ(X)とターゲット(y)の両方をテストセットとトレーニングセットに分割する必要があります。Scikit-learnにはこれを簡単に行う方法があります。指定したポイントでテストデータを分割できます。
+3. プロット準備ができたら、データの論理的な分割を機械に判別させてみましょう。そのために、データ(X)とターゲット(y)を訓練用とテスト用に分割します。Scikit-learnはこれを簡単に行える方法があります。任意の点でデータを分割できます。
```python
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33)
```
-4. これでモデルをトレーニングする準備が整いました!線形回帰モデルをロードし、`model.fit()`を使用してXとyのトレーニングセットでトレーニングします:
+4. これでモデルの訓練準備ができました!線形回帰モデルをロードし、`model.fit()` を使ってXとyの訓練セットで学習させましょう:
```python
model = linear_model.LinearRegression()
model.fit(X_train, y_train)
```
- ✅ `model.fit()`はTensorFlowなどの多くのMLライブラリで見られる関数です。
+ ✅ `model.fit()` はTensorFlowなど多くのMLライブラリで使われる関数です。
-5. 次に、テストデータを使用して予測を作成します。これにより、モデルのデータグループ間に最適な線を描画できます。
+5. 次に `predict()` 関数を使ってテストデータから予測を作成します。これはデータグループの間に線を描くために使います。
```python
y_pred = model.predict(X_test)
```
-6. 次に、データをプロットで表示します。Matplotlibはこのタスクに非常に便利なツールです。すべてのXとyテストデータの散布図を作成し、予測を使用してデータグループ間の最適な位置に線を描画します。
+6. 最後にデータをプロットしてみましょう。Matplotlibはこの作業に非常に便利なツールです。テスト用のXとyの散布図を作成し、予測を使ってモデルのデータグループ間に最も適切な場所に線を引きます。
```python
plt.scatter(X_test, y_test, color='black')
@@ -202,23 +203,24 @@ Scikit-learnを使えば、モデルを簡単に構築し、それらを評価
plt.show()
```
- 
-✅ 少し考えてみましょう。たくさんの小さなデータ点を通る1本の直線がありますが、この直線は一体何をしているのでしょうか?この直線を使って、新しい未確認のデータポイントがプロットのy軸に対してどこに位置するべきかを予測できる方法が見えてきませんか?このモデルの実用的な使い方を言葉で説明してみてください。
+ 
+
-おめでとうございます!初めての線形回帰モデルを構築し、それを使って予測を行い、プロットに表示することができました!
+ ✅ ここで何が起こっているのか少し考えてみてください。直線が多くの小さなデータ点の間を通っていますが、それは正確には何をしているのでしょうか? この直線を使って、新しい、見たことのないデータ点がプロットのy軸に対してどこに位置するべきか予測できることがわかりますか? このモデルの実用的な使い道を言葉にしてみましょう。
+
+おめでとうございます、あなたは最初の線形回帰モデルを構築し、それを使って予測を作成し、それをプロットに表示しました!
---
## 🚀チャレンジ
-このデータセットから別の変数をプロットしてみましょう。ヒント: この行を編集してください: `X = X[:,2]`。このデータセットのターゲットを考慮すると、糖尿病という病気の進行についてどのようなことが発見できるでしょうか?
-
-## [講義後のクイズ](https://ff-quizzes.netlify.app/en/ml/)
+このデータセットの別の変数をプロットしてみましょう。ヒント:この行を編集してください:`X = X[:,2]`。このデータセットのターゲットを考慮して、糖尿病という病気の進行について何がわかりますか?
+## [講義後クイズ](https://ff-quizzes.netlify.app/en/ml/)
## 復習と自己学習
-このチュートリアルでは、単回帰分析を扱いましたが、多変量回帰や重回帰分析ではありませんでした。これらの手法の違いについて少し調べてみるか、[この動画](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef)を見てみてください。
+このチュートリアルでは、単回帰を使いましたが、多変量回帰や単変量回帰とは異なります。これらの方法の違いについて少し読んでみるか、[この動画](https://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)を受講して理解を深めてください。
+回帰という概念についてより深く理解し、この技術でどのような疑問に答えられるか考えてみましょう。理解を深めるためにこの[チュートリアル](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott)を受講してください。
## 課題
@@ -226,5 +228,7 @@ Scikit-learnを使えば、モデルを簡単に構築し、それらを評価
---
-**免責事項**:
-この文書は、AI翻訳サービス [Co-op Translator](https://github.com/Azure/co-op-translator) を使用して翻訳されています。正確性を期すよう努めておりますが、自動翻訳には誤りや不正確な表現が含まれる可能性があります。元の言語で記載された原文を公式な情報源としてご参照ください。重要な情報については、専門の人間による翻訳を推奨します。本翻訳の利用に起因する誤解や誤認について、当社は一切の責任を負いません。
+
+**免責事項**:
+本書類は AI 翻訳サービス [Co-op Translator](https://github.com/Azure/co-op-translator) を使用して翻訳されています。正確性を期していますが、自動翻訳には誤りや不正確な部分が含まれる可能性があることをご承知おきください。原文の原語版が正式な情報源とみなされるべきです。重要な情報については、専門の人間による翻訳を推奨します。本翻訳の利用により生じたいかなる誤解や解釈違いについても、当方は責任を負いかねます。
+
\ No newline at end of file
diff --git a/translations/ja/2-Regression/2-Data/README.md b/translations/ja/2-Regression/2-Data/README.md
index ce28bf1d6..cb1539dc8 100644
--- a/translations/ja/2-Regression/2-Data/README.md
+++ b/translations/ja/2-Regression/2-Data/README.md
@@ -1,62 +1,62 @@
-# Scikit-learnを使った回帰モデルの構築:データの準備と可視化
+# Scikit-learnを使って回帰モデルを構築する: データの準備と可視化
-
+
-インフォグラフィック作成者:[Dasani Madipalli](https://twitter.com/dasani_decoded)
+インフォグラフィック提供者: [Dasani Madipalli](https://twitter.com/dasani_decoded)
-## [講義前クイズ](https://ff-quizzes.netlify.app/en/ml/)
+## [事前講義クイズ](https://ff-quizzes.netlify.app/en/ml/)
> ### [このレッスンはRでも利用可能です!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
## はじめに
-Scikit-learnを使った機械学習モデル構築に必要なツールが整った今、データに対して質問を投げかける準備ができました。データを扱い、MLソリューションを適用する際には、データセットの可能性を最大限に引き出すために、適切な質問をする方法を理解することが非常に重要です。
+Scikit-learnを用いた機械学習モデル構築に必要なツールのセットアップが完了したので、いよいよデータに対して問いかけを始める準備ができました。データを扱いMLソリューションを適用する際には、データセットの可能性を正しく引き出すために適切な質問の仕方を理解することが非常に重要です。
-このレッスンでは以下を学びます:
+このレッスンでは、以下を学びます:
-- モデル構築のためのデータ準備方法
-- Matplotlibを使ったデータ可視化の方法
+- モデル構築のためのデータ準備方法。
+- Matplotlibを用いたデータの可視化方法。
+- より表現力のある可視化のためのSeabornの使い方。
## データに対して適切な質問をする
-解決したい質問によって、使用するMLアルゴリズムの種類が決まります。そして、得られる回答の質は、データの性質に大きく依存します。
+どんな質問をするかによって、使用する機械学習アルゴリズムの種類が決まります。また、返ってくる答えの質はデータの性質に大きく依存します。
-このレッスンで使用する[データ](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv)を見てみましょう。この.csvファイルをVS Codeで開くことができます。ざっと目を通すと、空白や文字列と数値データの混在が見られます。また、「Package」という奇妙な列があり、データが「sacks」や「bins」などの値で混在しています。実際、このデータは少し厄介です。
+このレッスンで提供されている [データ](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 - データセットの分析とクリーニング方法")
+[](https://youtu.be/5qGjczWTrDQ "初心者向けML - データセットの分析とクリーンアップ方法")
-> 🎥 上の画像をクリックすると、このレッスンのデータ準備を進める短い動画が視聴できます。
+> 🎥 画像をクリックすると、このレッスンのデータ準備の流れを解説した短い動画が見られます。
-実際、MLモデルをすぐに使える形で完全に整ったデータセットを手に入れることはあまりありません。このレッスンでは、標準的なPythonライブラリを使用して生データセットを準備する方法を学びます。また、データを可視化するさまざまな手法についても学びます。
+実際には、すぐに使える状態のデータセットが丸ごと与えられることはあまりありません。このレッスンでは、標準的な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)から抽出された生データです。
+このフォルダには、ルートの`data`フォルダに [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) というファイルがあり、これは都市ごとに分類されたカボチャ市場に関する1757行のデータが含まれています。この生データは、米国農務省が配布している [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) から抽出されたものです。
### データの準備
-このデータはパブリックドメインに属しています。USDAのウェブサイトから都市ごとに個別のファイルとしてダウンロードできますが、ファイルが多すぎるのを避けるため、すべての都市データを1つのスプレッドシートに結合しました。このようにして、すでにデータを少し「準備」しています。次に、このデータを詳しく見てみましょう。
+このデータはパブリックドメインです。米農務省のサイトでは、多くのファイルが都市別に分かれてダウンロード可能です。多数の分割ファイルを避けるために、すべての都市データを一つのスプレッドシートに結合しており、ある程度データの「準備」は済ませています。次にデータをより詳しく見ていきましょう。
-### かぼちゃデータ - 初期の結論
+### カボチャデータ - 初期の結論
-このデータについて何に気づきますか?すでに文字列、数値、空白、奇妙な値が混在していることがわかりました。
+このデータから何が気づきますか?すでに文字列、数値、空欄、変な値の混在があることが見えていますね。
-回帰手法を使ってこのデータにどのような質問をすることができますか?例えば、「特定の月に販売されるかぼちゃの価格を予測する」という質問はどうでしょうか。このデータを再度確認すると、このタスクに必要なデータ構造を作成するためにいくつかの変更が必要であることがわかります。
+回帰技術を使ってこのデータにどんな質問ができるでしょうか?「特定の月に販売されるカボチャの価格を予測する」というのはどうでしょう。再度データを見ると、その課題に必要なデータ構造にするためにいくつか変更する必要があることがわかります。
+## 演習 - カボチャデータ分析
-## 演習 - かぼちゃデータの分析
+データ整形に便利なツールである [Pandas](https://pandas.pydata.org/) (名前は`Python Data Analysis`の頭文字)を使って、このカボチャデータを分析し準備しましょう。
-[Python Data Analysis](https://pandas.pydata.org/)を意味するPandasを使用して、このかぼちゃデータを分析・準備しましょう。Pandasはデータの整形に非常に便利なツールです。
+### まずは欠損している日付をチェックする
-### まず、欠損している日付を確認する
+最初に以下の手順で、欠損している日付がないかどうか確認します:
-最初に、欠損している日付を確認する手順を実行します:
-
-1. 日付を月形式に変換します(これらは米国の日付形式なので、`MM/DD/YYYY`です)。
-2. 月を新しい列に抽出します。
+1. 日付を月の形式に変換する(米国の日付形式のため、フォーマットは`MM/DD/YYYY`です)。
+2. 月を新しい列に抽出する。
Visual Studio Codeで_notebook.ipynb_ファイルを開き、スプレッドシートを新しいPandasデータフレームにインポートします。
-1. `head()`関数を使用して最初の5行を表示します。
+1. `head()`関数を使って最初の5行を表示しましょう。
```python
import pandas as pd
@@ -64,30 +64,30 @@ Visual Studio Codeで_notebook.ipynb_ファイルを開き、スプレッドシ
pumpkins.head()
```
- ✅ 最後の5行を表示するにはどの関数を使用しますか?
+ ✅ 最後の5行を表示するにはどの関数を使いますか?
-1. 現在のデータフレームに欠損データがあるか確認します:
+1. 現在のデータフレームに欠損データがないかチェックします:
```python
pumpkins.isnull().sum()
```
- 欠損データがありますが、今回のタスクには影響がないかもしれません。
+ 欠損データはありますが、今回の課題には影響しないかもしれません。
-1. データフレームを扱いやすくするために、必要な列だけを選択します。`loc`関数を使用して、元のデータフレームから行(最初のパラメータ)と列(2番目のパラメータ)のグループを抽出します。以下の例では、`:`は「すべての行」を意味します。
+1. 作業を簡単にするために、`loc`関数を使って必要な列だけ選択しましょう。`loc`は元のデータフレームから特定の行(第1引数)と列(第2引数)を抽出します。下記の`:`は「すべての行」を意味します。
```python
columns_to_select = ['Package', 'Low Price', 'High Price', 'Date']
pumpkins = pumpkins.loc[:, columns_to_select]
```
-### 次に、かぼちゃの平均価格を算出する
+### 次に、カボチャの平均価格を算出する
-特定の月におけるかぼちゃの平均価格を算出する方法を考えてみましょう。このタスクにはどの列を選択しますか?ヒント:3つの列が必要です。
+特定月のカボチャの平均価格をどうやって求めるか考えてみてください。この課題に必要な列は何でしょう?ヒント: 3列必要です。
-解決策:`Low Price`列と`High Price`列の平均を取り、新しい`Price`列を作成します。また、`Date`列を月だけを表示する形式に変換します。上記の確認によると、日付や価格に欠損データはありません。
+解決策: `Low Price`列と`High Price`列の平均を新しいPrice列として作成し、Date列は月のみ表示に変換します。幸い上記チェックによると、日付や価格の欠損はありません。
-1. 平均を計算するには、以下のコードを追加します:
+1. 平均を計算するには、次のコードを追加します:
```python
price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2
@@ -96,37 +96,37 @@ Visual Studio Codeで_notebook.ipynb_ファイルを開き、スプレッドシ
```
- ✅ 必要に応じて、`print(month)`を使用してデータを確認してください。
+ ✅ チェックしたいデータは`print(month)`を使って自由に出力してみてください。
-2. 変換したデータを新しいPandasデータフレームにコピーします:
+2. 変換済みデータを新しいPandasデータフレームにコピーしましょう:
```python
new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price})
```
- データフレームを出力すると、きれいで整ったデータセットが表示され、これを基に新しい回帰モデルを構築できます。
+ データフレームを印刷すると、きれいで整理されたデータセットが表示され、新しい回帰モデルの構築に使えます。
-### しかし、ここで奇妙な点があります
+### しかし!ちょっと変な点があります
-`Package`列を見ると、かぼちゃはさまざまな形態で販売されていることがわかります。一部は「1 1/9 bushel」単位で、一部は「1/2 bushel」単位で、一部はかぼちゃ1個単位、またはポンド単位、さらには幅の異なる大きな箱単位で販売されています。
+`Package`列を見ると、カボチャが様々な形態で販売されていることがわかります。中には「1 1/9 ブッシェル」や「1/2 ブッシェル」といった単位もあれば、1個単位、1ポンド単位、大きな箱で幅の異なるものもあります。
-> かぼちゃを一貫して計量するのは非常に難しいようです
+> カボチャは一貫して重さを量るのが非常に難しいようです。
-元のデータを掘り下げると、`Unit of Sale`が「EACH」または「PER BIN」の場合、`Package`タイプもインチ単位、ビン単位、または「each」となっています。かぼちゃを一貫して計量するのは非常に難しいようです。そのため、`Package`列に「bushel」という文字列が含まれるかぼちゃだけを選択してフィルタリングしましょう。
+元データを詳しく見ると、`Unit of Sale`が 'EACH' または 'PER BIN' のものには、`Package`タイプがインチ単位、ビンごと、または 'each' となっていることがわかります。カボチャは非常に重量が一定ではないようなので、`Package`列に「bushel」という文字列が含まれるカボチャだけを選択してフィルタ処理しましょう。
-1. ファイルの冒頭、最初の.csvインポートの下にフィルタを追加します:
+1. 最初の.csvインポート下にフィルターを追加します:
```python
pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]
```
- データを出力すると、「bushel」を含む約415行のデータだけが取得されていることがわかります。
+ これで印刷すると、bushel単位のカボチャ約415行のみが抽出されているのがわかります。
-### しかし、もう1つやるべきことがあります
+### しかし!もう一つやることがあります
-行ごとにバスケットの量が異なることに気づきましたか?価格をバスケット単位で標準化する必要があります。そのため、価格を標準化するための計算を行います。
+bushelの量は行によって異なることに気づきましたか?価格をbushelあたりに正規化する必要があるので、標準化のための計算を行いましょう。
-1. 新しい`new_pumpkins`データフレームを作成するブロックの後に以下の行を追加します:
+1. new_pumpkinsデータフレームを作成するブロックの後に、次の行を追加します:
```python
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9)
@@ -134,38 +134,38 @@ Visual Studio Codeで_notebook.ipynb_ファイルを開き、スプレッドシ
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2)
```
-✅ [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308)によると、バスケットの重さは作物の種類によって異なります。バスケットは体積の測定単位であるためです。「例えば、トマトのバスケットは56ポンドとされています... 葉物野菜はスペースを多く取り、重さが少ないため、ほうれん草のバスケットはわずか20ポンドです。」これは非常に複雑です!バスケットからポンドへの変換は行わず、バスケット単位で価格を計算することにしましょう。しかし、このかぼちゃのバスケットに関する研究は、データの性質を理解することがいかに重要であるかを示しています!
+✅ [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) によれば、ブッシェルの重量は品目によって異なり、容積単位です。例えば「トマトの1ブッシェルは56ポンド」、「葉物や青菜は容積が大きくても重量は軽く、ほうれん草の1ブッシェルは20ポンド」。非常に複雑です!ポンド換算はせずにbushel単位で価格を扱いましょう。これらのカボチャのbushel調査は、データの性質を理解することの重要性を示しています!
-これで、バスケットの測定単位に基づいて価格を分析できます。データをもう一度出力すると、標準化されたことがわかります。
+これでbushel単位の価格を分析できます。もう一度データを印刷すると、標準化された様子が見えます。
-✅ 半バスケット単位で販売されるかぼちゃが非常に高価であることに気づきましたか?その理由を考えてみてください。ヒント:小さなかぼちゃは大きなかぼちゃよりもはるかに高価です。おそらく、大きな空洞のあるパイ用かぼちゃ1個に比べて、バスケットあたりの小さなかぼちゃの数が非常に多いためです。
+✅ 半ブッシェル単位で販売されているカボチャは非常に高価なのに気づきましたか?理由を考えられますか?ヒント: 小さなカボチャは大きいものよりもずっと高価です。おそらく大きな空洞のパイ用カボチャが一つ入るスペースに、小さなカボチャがたくさん入るためです。
## 可視化の戦略
-データサイエンティストの役割の一部は、扱っているデータの質や性質を示すことです。そのために、興味深い可視化、つまりプロット、グラフ、チャートを作成して、データのさまざまな側面を示します。この方法で、視覚的に関係性やギャップを示すことができ、そうでなければ見つけにくいものを明らかにします。
+データサイエンティストの役割の一部は、扱うデータの質や性質を示すことです。そのため、しばしば興味深い可視化(プロット、グラフ、チャート)を作成し、異なる側面を示します。こうすることで、目に見えて関係性やデータの穴を明らかにできます。
-[](https://youtu.be/SbUkxH6IJo0 "初心者向けML - Matplotlibを使ったデータの可視化方法")
+[](https://youtu.be/SbUkxH6IJo0 "初心者向けML - Matplotlibによるデータ可視化方法")
-> 🎥 上の画像をクリックすると、このレッスンのデータ可視化を進める短い動画が視聴できます。
+> 🎥 画像をクリックすると、このレッスンのデータ可視化を解説した短い動画が見られます。
-可視化は、データに最も適した機械学習手法を決定するのにも役立ちます。例えば、散布図が直線に沿っているように見える場合、そのデータは線形回帰の演習に適していることを示しています。
+可視化は、データに最も適した機械学習手法を決めるのにも役立ちます。例えば、散布図が直線に沿っているようであれば、そのデータは線形回帰に適していることを示唆します。
-Jupyter Notebookでよく使われるデータ可視化ライブラリの1つが[Matplotlib](https://matplotlib.org/)です(前のレッスンでも登場しました)。
+Jupyterノートブックでよく使われるデータ可視化ライブラリの一つに[Matplotlib](https://matplotlib.org/)(前のレッスンでも登場しました)があります。
-> データ可視化の経験をさらに積むには、[これらのチュートリアル](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott)を参照してください。
+> [これらのチュートリアル](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott)でデータ可視化の経験をさらに積みましょう。
-## 演習 - Matplotlibを使って実験する
+## 演習 - Matplotlibを試してみる
-作成した新しいデータフレームを表示するために、いくつかの基本的なプロットを作成してみましょう。基本的な折れ線グラフはどのように見えるでしょうか?
+新しく作成したデータフレームを表示する基本的なプロットを作成してみましょう。基本的な線グラフではどんな表示になるでしょうか?
-1. ファイルの冒頭、Pandasのインポートの下にMatplotlibをインポートします:
+1. ファイルの先頭、Pandasのインポートの下にMatplotlibをインポートします:
```python
import matplotlib.pyplot as plt
```
1. ノートブック全体を再実行して更新します。
-1. ノートブックの最後にセルを追加して、データをボックスプロットとしてプロットします:
+1. ノートブックの下部に、箱ひげ図を描くセルを追加します:
```python
price = new_pumpkins.Price
@@ -174,38 +174,113 @@ Jupyter Notebookでよく使われるデータ可視化ライブラリの1つが
plt.show()
```
- 
+ 
- このプロットは役に立ちますか?何か驚くことはありますか?
+ これは有用なグラフでしょうか?何か驚いた点はありますか?
- 特に役に立つわけではありません。単にデータを月ごとの点の広がりとして表示しているだけです。
+ 入力データの散布図としてポイントを散らしているだけなので、特に役に立つわけではありません。
-### 有用なプロットにする
+### もっと有用にするには
-有用なチャートを表示するには、通常、データを何らかの形でグループ化する必要があります。y軸に月を表示し、データが分布を示すプロットを作成してみましょう。
+有益なデータを示すには通常、何らかの方法でデータをグループ化する必要があります。月をy軸に取り、データの分布を示すグラフを作成してみましょう。
-1. グループ化された棒グラフを作成するセルを追加します:
+1. グループ化した棒グラフを作るセルを追加します:
```python
new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar')
plt.ylabel("Pumpkin Price")
```
- 
+ 
+
+ これの方が有用なデータ可視化です!カボチャの最高価格は9月と10月に見られるようです。これは予想通りでしょうか?なぜそう思いますか?
+
+## 演習 - Seabornを試してみる
+
+Matplotlibは強力ですが、完成度の高いグラフを作るには多くのコードが必要になることがあります。[Seaborn](https://seaborn.pydata.org/)はMatplotlibの「上に構築された」ライブラリで、統計的データ可視化に特化しています。Pandasデータフレームと直接連携し、魅力的なデフォルトスタイルを適用し、少ないコードで分かりやすいプロットが作成できます。SeabornはMatplotlibオブジェクトを返すため、既存のMatplotlibの知識もそのまま使って細かな調整が可能です。
+
+> まだSeabornをインストールしていない場合は、`pip install seaborn`でインストールしてください。
+
+1. ノートブックの先頭、他のインポートの下にSeabornをインポートします。通常`sns`の名前でインポートします:
+
+ ```python
+ import seaborn as sns
+ ```
+
+### 散布図で関係性を示す
+
+モデル構築前のデータ探索の大部分は、変数間の_関係_を探すことです。[散布図](https://en.wikipedia.org/wiki/Scatter_plot)はそのための最良のツールのひとつで、点が直線上に並ぶようなら、その2変数間に相関があり、線形回帰モデルの適用が期待できます。
+
+1. 先ほどの価格と月の散布図を、今回はSeabornの[`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html)(関係プロット)を使って再作成します。`relplot()`はデータフレームの列を直接扱えます:
+
+ ```python
+ sns.relplot(x="Price", y="Month", data=new_pumpkins)
+ ```
+
+ 
+
+ 列名とデータフレームを渡すだけで、軸ラベルはSeabornが自動で付けてくれるのがわかります。
+
+2. `kind="line"`を渡して線グラフに切り替えることもできます。Seabornは線のまわりに信頼区間の帯も描いてくれます:
+
+ ```python
+ sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins)
+ ```
+
+ 
+
+ この特定のデータはノイズが多いため線グラフは最適ではありませんが、Seabornでチャートタイプを簡単に変更できる様子が示されています。
+
+### 棒グラフで分布を示す
+
+
+前に手動でデータをグループ化してMatplotlibで棒グラフを作成しました。Seabornの[`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html)(カテゴリカルプロット)は、グループ化と集約を自動で行ってくれます。デフォルトで `kind="bar"` は各カテゴリの平均値を表示し、信頼区間を示す黒い線が付加されます。
+
+1. 月ごとの平均価格の棒グラフを作成します:
+
+ ```python
+ sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar")
+ ```
+
+ 
+
+ これはMatplotlibで見たものを確認するものです — 価格は9月と10月にピークを迎えます — しかしSeabornは各月の価格がどれほど_変動_するかも可視化しています。
+
+### 相関を示すヒートマップ
+
+散布図は2つの変数を比較しますが、複数の数値列がある場合は[ヒートマップ](https://en.wikipedia.org/wiki/Heat_map)を使うと、_すべての_列のペア間の関係の強さを一度に見ることができます。これは、モデルにどの特徴量を入力するかを選ぶ前に最も関連の強い特徴を見つける一般的な方法であり(また同じ種類のグラフは後に分類で混同行列を表示する際にも使われます)。
+
+1. Pandasで相関行列を作成し、Seabornの[`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html)で描画します。`annot=True`オプションは各セルに相関値を表示します:
+
+ ```python
+ correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()
+ sns.heatmap(correlations, annot=True, cmap="coolwarm")
+ ```
+
+ 
+
+ `1`(または `-1`)に近い値は列同士が強く_線形_に相関していることを意味します。`Low Price`と`High Price`がほぼ完全に相関しているのに注目してください。一方で`Month`は価格との線形相関が弱いことがわかります — たとえ上記の棒グラフで9月と10月に明確な季節的ピークが示されていてもです。これは重要な教訓です:相関係数は_直線的な_関係しか測定できないため、季節的あるいはその他非線形のパターンを見逃す可能性があります。 ✅ なぜヒートマップと棒グラフのようなチャートの両方を見て使う列を決定すると有効なのでしょうか?
+
+### MatplotlibとSeaborn、どちらがよい?
+
+両方のライブラリは知っておく価値があります:
+
+- **Matplotlib** はチャートのあらゆる要素を細かく制御でき、ほぼすべての他のPythonプロットライブラリが基盤にしているものです。
+- **Seaborn** は統計チャート用の高レベルな関数と魅力的なデフォルトを備え、データフレームと直接動作し、探索的データ解析により早く使えることが多いです。
- これはより有用なデータ可視化です!9月と10月にかぼちゃの最高価格が見られるようです。これは予想通りですか?なぜそう思いますか?
+一般的なワークフローは、まずSeabornで素早くデータを探査し、詳細をカスタマイズしたいときにMatplotlibに切り替えるというものです。
---
## 🚀チャレンジ
-Matplotlibが提供するさまざまな可視化タイプを探求してみましょう。回帰問題に最も適したタイプはどれですか?
+MatplotlibとSeabornが提供するさまざまな種類の可視化を調べてみましょう。どのタイプが回帰問題に最も適しているでしょうか?
## [講義後クイズ](https://ff-quizzes.netlify.app/en/ml/)
-## 復習と自己学習
+## 復習 & 自主学習
-データを可視化するさまざまな方法を調べてみましょう。利用可能なライブラリのリストを作成し、2D可視化と3D可視化など、特定のタスクに最適なライブラリをメモしてください。何を発見しましたか?
+多様なデータ可視化の方法に目を通しましょう。利用可能なさまざまなライブラリをリストアップし、2D可視化と3D可視化など、特定のタスクに最適なものを記録してみてください。何を発見しますか?
## 課題
@@ -213,5 +288,7 @@ Matplotlibが提供するさまざまな可視化タイプを探求してみま
---
-**免責事項**:
-この文書は、AI翻訳サービス [Co-op Translator](https://github.com/Azure/co-op-translator) を使用して翻訳されています。正確性を期すよう努めておりますが、自動翻訳には誤りや不正確な表現が含まれる可能性があります。元の言語で記載された原文を公式な情報源としてご参照ください。重要な情報については、専門の人間による翻訳を推奨します。本翻訳の利用に起因する誤解や誤認について、当社は一切の責任を負いません。
+
+**免責事項**:
+本書類は AI 翻訳サービス [Co-op Translator](https://github.com/Azure/co-op-translator) を使用して翻訳されています。正確性を期していますが、自動翻訳には誤りや不正確な部分が含まれる可能性があることをご承知おきください。原文の原語版が正式な情報源とみなされるべきです。重要な情報については、専門の人間による翻訳を推奨します。本翻訳の利用により生じたいかなる誤解や解釈違いについても、当方は責任を負いかねます。
+
\ No newline at end of file
diff --git a/translations/ja/2-Regression/2-Data/solution/notebook.ipynb b/translations/ja/2-Regression/2-Data/solution/notebook.ipynb
index 973fe1267..a2debd6dc 100644
--- a/translations/ja/2-Regression/2-Data/solution/notebook.ipynb
+++ b/translations/ja/2-Regression/2-Data/solution/notebook.ipynb
@@ -3,7 +3,9 @@
{
"cell_type": "markdown",
"metadata": {},
- "source": []
+ "source": [
+ "## カボチャの線形回帰 - レッスン2\n"
+ ]
},
{
"cell_type": "code",
@@ -220,6 +222,7 @@
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
"pumpkins = pd.read_csv('../../data/US-pumpkins.csv')\n",
"\n",
"pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]\n",
@@ -383,18 +386,78 @@
"plt.ylabel(\"Pumpkin Price\")"
]
},
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Seabornによる可視化\n",
+ "\n",
+ "[Seaborn](https://seaborn.pydata.org/) はMatplotlibの上に構築されており、データフレームと直接連携するため、ごく少ないコードで魅力的な統計プロットを素早く作成できます。\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### 散布図による関係の表示\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", kind=\"line\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### 分布を示す棒グラフ\n"
+ ]
+ },
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
- "source": []
+ "source": [
+ "sns.catplot(x=\"Month\", y=\"Price\", data=new_pumpkins, kind=\"bar\")"
+ ]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "\n---\n\n**免責事項**: \nこの文書は、AI翻訳サービス [Co-op Translator](https://github.com/Azure/co-op-translator) を使用して翻訳されています。正確性を追求しておりますが、自動翻訳には誤りや不正確さが含まれる可能性があります。元の言語で記載された原文が正式な情報源と見なされるべきです。重要な情報については、専門の人間による翻訳を推奨します。この翻訳の使用に起因する誤解や誤認について、当社は一切の責任を負いません。\n"
+ "### 相関を示すヒートマップ\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()\n",
+ "sns.heatmap(correlations, annot=True, cmap=\"coolwarm\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "---\n\n\n**免責事項**:\n本書類は AI 翻訳サービス [Co-op Translator](https://github.com/Azure/co-op-translator) を使用して翻訳されています。正確性を期していますが、自動翻訳には誤りや不正確な部分が含まれる可能性があることをご承知おきください。原文の原語版が正式な情報源とみなされるべきです。重要な情報については、専門の人間による翻訳を推奨します。本翻訳の利用により生じたいかなる誤解や解釈違いについても、当方は責任を負いかねます。\n\n"
]
}
],
@@ -424,13 +487,7 @@
"hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d"
}
},
- "orig_nbformat": 2,
- "coopTranslator": {
- "original_hash": "95726f0b8283628d5356a4f8eb8b4b76",
- "translation_date": "2025-09-04T01:36:34+00:00",
- "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
- "language_code": "ja"
- }
+ "orig_nbformat": 2
},
"nbformat": 4,
"nbformat_minor": 2
diff --git a/translations/ja/2-Regression/4-Logistic/README.md b/translations/ja/2-Regression/4-Logistic/README.md
index bbd7c86b7..7e89f404b 100644
--- a/translations/ja/2-Regression/4-Logistic/README.md
+++ b/translations/ja/2-Regression/4-Logistic/README.md
@@ -1,79 +1,79 @@
-# カテゴリー予測のためのロジスティック回帰
+# カテゴリを予測するためのロジスティック回帰
-
+
-## [講義前のクイズ](https://ff-quizzes.netlify.app/en/ml/)
+## [講義前クイズ](https://ff-quizzes.netlify.app/en/ml/)
> ### [このレッスンはRでも利用可能です!](../../../../2-Regression/4-Logistic/solution/R/lesson_4.html)
## はじめに
-回帰に関する最後のレッスンでは、基本的な「クラシック」な機械学習技術の一つであるロジスティック回帰について学びます。この技術を使用して、パターンを発見し、二値カテゴリーを予測することができます。このキャンディはチョコレートか否か?この病気は伝染性か否か?この顧客はこの商品を選ぶか否か?
+この回帰分析の最終レッスンでは、基本的な_古典的_機械学習技術の一つであるロジスティック回帰を見ていきます。この手法は、2値のカテゴリを予測するパターンを見つけるために使います。このキャンディはチョコレートか?この病気は伝染性か?この顧客はこの製品を選ぶか?というような予測です。
-このレッスンで学ぶ内容:
+このレッスンで学ぶこと:
-- データ可視化のための新しいライブラリ
-- ロジスティック回帰の技術
+- 新しいデータ可視化ライブラリー
+- ロジスティック回帰の技法
-✅ この[学習モジュール](https://docs.microsoft.com/learn/modules/train-evaluate-classification-models?WT.mc_id=academic-77952-leestott)で、このタイプの回帰についての理解を深めましょう。
+✅ このタイプの回帰を使う理解を深めるには、この [Learn モジュール](https://docs.microsoft.com/learn/modules/train-evaluate-classification-models?WT.mc_id=academic-77952-leestott) をご覧ください
## 前提条件
-かぼちゃデータを扱ったことで、このデータには扱える二値カテゴリーがあることがわかりました。それは `Color` です。
+かぼちゃのデータで作業したことで、`Color`という2値カテゴリがあることは十分に理解しています。
-いくつかの変数を基にして、_特定のかぼちゃの色がオレンジ 🎃 か白 👻 かを予測する_ ロジスティック回帰モデルを構築してみましょう。
+それを予測するロジスティック回帰モデルを構築しましょう。与えられた変数から、_かぼちゃがどの色である可能性が高いか_(オレンジ 🎃か白 👻か)を予測します。
-> なぜ回帰に関するレッスンで二値分類について話しているのでしょうか?それは言語的な便宜上の理由だけであり、ロジスティック回帰は[実際には分類方法](https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression)であり、線形ベースのものです。次のレッスンでは、データを分類する他の方法について学びます。
+> なぜ回帰のグループのレッスンで2値分類の話をするのか?それは言語的な便宜のためだけです。ロジスティック回帰は[実際には分類手法](https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression)であり、線形ベースの分類法だからです。次のレッスングループで他のデータ分類の方法を学びます。
-## 問題を定義する
+## 質問を定義する
-今回の目的では、これを二値として表現します:'白' または '白ではない'。データセットには '縞模様' というカテゴリーもありますが、インスタンスが少ないため使用しません。データセットから欠損値を削除すると、このカテゴリーは消えてしまいます。
+ここでは、2値として「白」か「白でない」かで表します。データセットには「縞模様」というカテゴリーもありますが、事例数が少ないため使用しません。欠損値を取り除くと消えてしまいます。
-> 🎃 面白い事実として、白いかぼちゃを時々「ゴーストかぼちゃ」と呼びます。彫刻するのは難しいため、オレンジのかぼちゃほど人気はありませんが、見た目はとてもクールです!したがって、質問を次のように再構成することもできます:'ゴースト' か 'ゴーストではない'。👻
+> 🎃 面白いことに、白かぼちゃは「ゴースト」かぼちゃと呼ぶことがあります。彫るのが難しいのでオレンジより人気はありませんが見た目はかっこいいです!質問を「ゴーストか否か」に変えることもできます。👻
## ロジスティック回帰について
-ロジスティック回帰は、以前学んだ線形回帰とはいくつかの重要な点で異なります。
+ロジスティック回帰は、前に学んだ線形回帰といくつか重要な点で異なります。
-[](https://youtu.be/KpeCT6nEpBY "初心者向け機械学習 - ロジスティック回帰の理解")
+[](https://youtu.be/KpeCT6nEpBY "初心者向けML - 機械学習の分類のためのロジスティック回帰の理解")
-> 🎥 上の画像をクリックすると、ロジスティック回帰の概要を説明する短い動画が視聴できます。
+> 🎥 上の画像をクリックするとロジスティック回帰の短いビデオ概要がご覧になれます。
-### 二値分類
+### 2値分類
-ロジスティック回帰は線形回帰と同じ機能を提供しません。前者は二値カテゴリー(「白か白ではない」)についての予測を提供しますが、後者は連続値を予測することができます。例えば、かぼちゃの産地と収穫時期を基にして、_価格がどれだけ上昇するか_ を予測することができます。
+ロジスティック回帰は線形回帰と同じ特徴を提供しません。前者は2値カテゴリ(「白か白でないか」)の予測を行うのに対し、後者は連続値、例えばかぼちゃの産地や収穫時期から「価格がどれだけ上がるか」を予測できます。
-
-> インフォグラフィック作成者:[Dasani Madipalli](https://twitter.com/dasani_decoded)
+
+> インフォグラフィック [Dasani Madipalli](https://twitter.com/dasani_decoded) 提供
### 他の分類
-ロジスティック回帰には、他にも多項式や順序型などの種類があります:
+ロジスティック回帰には、多項および順序分類もあります:
-- **多項式**: 複数のカテゴリーを持つ場合 - 「オレンジ、白、縞模様」。
-- **順序型**: 順序付けられたカテゴリーを持つ場合。例えば、かぼちゃのサイズ(mini, sm, med, lg, xl, xxl)を論理的に順序付ける場合に役立ちます。
+- 多項分類は複数のカテゴリを対象にします - 「オレンジ、白、縞模様」。
+- 順序分類は順序付けられたカテゴリに対応し、かぼちゃのサイズのように(mini, sm, med, lg, xl, xxl)順序がある場合に役立ちます。
-
+
-### 変数は相関している必要はない
+### 変数は必ずしも相関している必要はない
-線形回帰がより相関のある変数でうまく機能することを覚えていますか?ロジスティック回帰はその逆で、変数が一致している必要はありません。このデータには相関が弱い変数があるため、適しています。
+線形回帰はより相関の強い変数があるほど効果的でしたが、ロジスティック回帰は逆で、変数が一致している必要はありません。このデータは相関がやや弱いので適しています。
### 多くのクリーンなデータが必要
-ロジスティック回帰は、データが多いほど正確な結果を提供します。私たちの小さなデータセットはこのタスクには最適ではないため、その点を考慮してください。
+ロジスティック回帰は多くのデータを使うほど精度が上がります。私たちの小さなデータセットは最適ではないことを念頭に置いてください。
-[](https://youtu.be/B2X4H9vcXTs "初心者向け機械学習 - ロジスティック回帰のためのデータ分析と準備")
+[](https://youtu.be/B2X4H9vcXTs "初心者向けML - ロジスティック回帰のためのデータ分析と準備")
-> 🎥 上の画像をクリックすると、線形回帰のためのデータ準備についての短い動画が視聴できます。
+> 🎥 上の画像をクリックすると線形回帰のためのデータ準備の短いビデオ概要が見られます
-✅ ロジスティック回帰に適したデータの種類について考えてみましょう。
+✅ ロジスティック回帰に適したデータの種類を考えてみましょう
-## 演習 - データを整理する
+## 演習 - データを整える
-まず、データを少し整理し、欠損値を削除していくつかの列を選択します:
+まず、欠損値を削除し、一部の列だけ選択してデータを少し清掃しましょう:
-1. 次のコードを追加してください:
+1. 以下のコードを追加:
```python
@@ -83,7 +83,7 @@
pumpkins.dropna(inplace=True)
```
- 新しいデータフレームを確認することもできます:
+ 新しいデータフレームをのぞいてみましょう:
```python
pumpkins.info
@@ -91,11 +91,11 @@
### 可視化 - カテゴリカルプロット
-これまでに、かぼちゃデータを[スターターノートブック](../../../../2-Regression/4-Logistic/notebook.ipynb)に読み込み、いくつかの変数を含むデータセットを保持するように整理しました。ノートブックでデータフレームを可視化するために、以前使用したMatplotlibを基にした異なるライブラリ:[Seaborn](https://seaborn.pydata.org/index.html) を使用してみましょう。
+ここまでに、[スターターノートブック](./notebook.ipynb)を使って再びかぼちゃのデータを読み込み、`Color`を含む数個の変数を保持するデータセットに整形しました。異なるライブラリでデータフレームを可視化しましょう。[Seaborn](https://seaborn.pydata.org/index.html)はMatplotlibを基盤としており、以前使いました。
-Seabornはデータを可視化するための便利な方法を提供します。例えば、`Variety` と `Color` のデータ分布をカテゴリカルプロットで比較することができます。
+Seabornにはデータ可視化の便利な手法がいくつかあります。例えば、`Variety`と`Color`ごとの分布をカテゴリカルプロットで比較できます。
-1. `catplot` 関数を使用して、かぼちゃデータ `pumpkins` を指定し、各かぼちゃカテゴリー(オレンジまたは白)の色マッピングを指定してプロットを作成します:
+1. `catplot`関数で、このプロットを作ります。かぼちゃデータ`pumpkins`を使い、かぼちゃの各カテゴリ(オレンジか白か)の色指定もします:
```python
import seaborn as sns
@@ -111,19 +111,18 @@ Seabornはデータを可視化するための便利な方法を提供します
)
```
- 
+ 
- データを観察することで、`Color` データが `Variety` にどのように関連しているかを確認できます。
+ データを観察すると、ColorデータがVarietyとどう関係あるか見られます。
- ✅ このカテゴリカルプロットを基に、どのような興味深い探索が考えられますか?
+ ✅ このカテゴリカルプロットを見て、どんな興味深い探索ができそうですか?
### データ前処理:特徴量とラベルのエンコーディング
+かぼちゃのデータセットは全て文字列です。カテゴリデータは人間には直感的ですが、機械にはそうではありません。機械学習アルゴリズムは数字が得意です。だからエンコードはとても重要で、情報を失わずにカテゴリデータを数値データに変換します。良いエンコードは良いモデルを作ります。
-かぼちゃデータセットのすべての列には文字列値が含まれています。人間にとってカテゴリカルデータは直感的ですが、機械にとってはそうではありません。機械学習アルゴリズムは数値データでうまく機能します。そのため、エンコーディングはデータ前処理フェーズで非常に重要なステップです。これにより、カテゴリカルデータを数値データに変換し、情報を失うことなく処理できます。適切なエンコーディングは良いモデルの構築につながります。
+特徴量エンコードには主に2種類あります:
-特徴量エンコーディングには主に2つのタイプがあります:
-
-1. 順序型エンコーダー:順序型変数に適しており、カテゴリカル変数のデータが論理的な順序に従う場合に使用します。例えば、データセットの `Item Size` 列です。このエンコーダーは各カテゴリーを数値で表し、その数値は列内のカテゴリーの順序を示します。
+1. 順序エンコーダ:順序付き変数(例えばこのデータセットの`Item Size`列)に適し、各カテゴリを列内の順序に従い番号で表します。
```python
from sklearn.preprocessing import OrdinalEncoder
@@ -133,7 +132,7 @@ Seabornはデータを可視化するための便利な方法を提供します
ordinal_encoder = OrdinalEncoder(categories=item_size_categories)
```
-2. カテゴリカルエンコーダー:名義変数に適しており、カテゴリカル変数のデータが論理的な順序に従わない場合に使用します。例えば、データセットの `Item Size` 以外のすべての特徴量です。これはワンホットエンコーディングであり、各カテゴリーがバイナリ列で表されます。エンコードされた変数は、かぼちゃがその `Variety` に属している場合は1、そうでない場合は0になります。
+2. カテゴリエンコーダ:名義変数(`Item Size`以外の特徴量)に適し、ワンホットエンコードで各カテゴリを二進の列で表します。対象のかぼちゃがそのVarietyなら1、それ以外は0です。
```python
from sklearn.preprocessing import OneHotEncoder
@@ -141,8 +140,7 @@ Seabornはデータを可視化するための便利な方法を提供します
categorical_features = ['City Name', 'Package', 'Variety', 'Origin']
categorical_encoder = OneHotEncoder(sparse_output=False)
```
-
-次に、`ColumnTransformer` を使用して複数のエンコーダーを1つのステップにまとめ、適切な列に適用します。
+次に`ColumnTransformer`を使って複数のエンコーダを1ステップにまとめて適用します。
```python
from sklearn.compose import ColumnTransformer
@@ -155,8 +153,7 @@ Seabornはデータを可視化するための便利な方法を提供します
ct.set_output(transform='pandas')
encoded_features = ct.fit_transform(pumpkins)
```
-
-一方、ラベルをエンコードするためには、scikit-learnの `LabelEncoder` クラスを使用します。このクラスはラベルを正規化し、0から n_classes-1(ここでは0と1)の値のみを含むようにします。
+ラベルのエンコードにはscikit-learnの`LabelEncoder`クラスを使います。これはラベルを0からn_classes-1(ここでは0と1)の値に正規化するユーティリティクラスです。
```python
from sklearn.preprocessing import LabelEncoder
@@ -164,19 +161,17 @@ Seabornはデータを可視化するための便利な方法を提供します
label_encoder = LabelEncoder()
encoded_label = label_encoder.fit_transform(pumpkins['Color'])
```
-
-特徴量とラベルをエンコードしたら、それらを新しいデータフレーム `encoded_pumpkins` に統合できます。
+特徴量とラベルをエンコードしたら、新しいデータフレーム`encoded_pumpkins`に結合できます。
```python
encoded_pumpkins = encoded_features.assign(Color=encoded_label)
```
-
-✅ `Item Size` 列に順序型エンコーダーを使用する利点は何ですか?
+✅ `Item Size`列に順序エンコーダを使う利点は何ですか?
### 変数間の関係を分析する
-データを前処理した後、特徴量とラベルの関係を分析して、モデルが特徴量を基にラベルをどれだけうまく予測できるかのアイデアをつかむことができます。
-この種の分析を行う最良の方法はデータをプロットすることです。再びSeabornの `catplot` 関数を使用して、`Item Size`、`Variety`、`Color` の関係をカテゴリカルプロットで可視化します。データをより良くプロットするために、エンコードされた `Item Size` 列と未エンコードの `Variety` 列を使用します。
+データを前処理したので、特徴量とラベルの関係を分析しましょう。モデルが特徴量からラベルをどれだけ正確に予測できるか把握できます。
+分析の最良の方法はデータをプロットすることです。再びSeabornの`catplot`関数で、`Item Size`、`Variety`、`Color`の関係をカテゴリカルプロットで可視化します。ここではエンコードした`Item Size`列とエンコードしていない`Variety`列を使います。
```python
palette = {
@@ -195,16 +190,15 @@ Seabornはデータを可視化するための便利な方法を提供します
g.set(xlabel="Item Size", ylabel="").set(xlim=(0,6))
g.set_titles(row_template="{row_name}")
```
+
-
+### スウォームプロットを使う
-### スウォームプロットを使用する
+Colorは2値カテゴリ(白か否か)なので、「[専門的な手法](https://seaborn.pydata.org/tutorial/categorical.html?highlight=bar)」を使って可視化する必要があります。このカテゴリと他の変数の関係を表現する他の方法もあります。
-`Color` は二値カテゴリー(白または白ではない)であるため、可視化には「[特化したアプローチ](https://seaborn.pydata.org/tutorial/categorical.html?highlight=bar)」が必要です。このカテゴリーと他の変数との関係を可視化する他の方法もあります。
+Seabornプロットを使い変数を並べて可視化できます。
-Seabornプロットを使用して変数を並べて可視化できます。
-
-1. 値の分布を示す「スウォーム」プロットを試してみましょう:
+1. 「スウォーム」プロットを試して、値の分布を示しましょう:
```python
palette = {
@@ -214,27 +208,28 @@ Seabornプロットを使用して変数を並べて可視化できます。
sns.swarmplot(x="Color", y="ord__Item Size", data=encoded_pumpkins, palette=palette)
```
- 
+ 
+
+注意:上のコードはデータ数が多いため警告を出す場合があります。'size'パラメーターでマーカーのサイズを小さくすると解決しますが、読みやすさが下がることに注意してください。
-**注意**: 上記のコードは警告を生成する可能性があります。Seabornが大量のデータポイントをスウォームプロットに表現するのに失敗するためです。解決策として、マーカーのサイズを 'size' パラメータで減少させることができます。ただし、これによりプロットの読みやすさが影響を受ける可能性があります。
-> **🧮 数学を見てみよう**
+> **🧮 数学的な解説**
>
-> ロジスティック回帰は「最大尤度」の概念に基づいており、[シグモイド関数](https://wikipedia.org/wiki/Sigmoid_function)を使用します。プロット上の「シグモイド関数」は「S」字型の形状をしています。この関数は値を取り、それを0から1の間のどこかにマッピングします。その曲線は「ロジスティック曲線」とも呼ばれます。その公式は次のようになります:
+> ロジスティック回帰は[シグモイド関数](https://wikipedia.org/wiki/Sigmoid_function)を使った「最尤推定」の概念に基づいています。プロット上の「シグモイド関数」はS字型をしており、値を0から1の間に写像します。この曲線は「ロジスティック曲線」とも呼ばれます。数式は以下のようになります:
>
-> 
+> 
>
-> シグモイドの中点はxの0点に位置し、Lは曲線の最大値、kは曲線の急峻さを示します。この関数の結果が0.5以上の場合、そのラベルは二値選択の「1」として分類されます。それ以外の場合は「0」として分類されます。
+> シグモイドの中点はxの0点にあり、Lは曲線の最大値、kは傾きの急さを示します。関数の出力が0.5より大きければ、そのラベルはバイナリ選択の「1」クラスに分類されます。そうでなければ「0」となります。
## モデルを構築する
-Scikit-learnでこの二値分類を見つけるモデルを構築するのは驚くほど簡単です。
+2値分類を見つけるモデル構築はScikit-learnでは驚くほど簡単です。
-[](https://youtu.be/MmZS2otPrQ8 "初心者向け機械学習 - データ分類のためのロジスティック回帰")
+[](https://youtu.be/MmZS2otPrQ8 "初心者向けML - データの分類のためのロジスティック回帰")
-> 🎥 上の画像をクリックすると、線形回帰モデルの構築についての短い動画が視聴できます。
+> 🎥 上の画像をクリックすると線形回帰モデル構築の短いビデオ概要が見られます
-1. 分類モデルで使用したい変数を選択し、`train_test_split()` を呼び出してトレーニングセットとテストセットを分割します:
+1. 分類モデルに使いたい変数を選択し、`train_test_split()`で訓練・テストデータに分割します:
```python
from sklearn.model_selection import train_test_split
@@ -246,7 +241,7 @@ Scikit-learnでこの二値分類を見つけるモデルを構築するのは
```
-2. 次に、トレーニングデータを使用して `fit()` を呼び出し、モデルをトレーニングし、その結果を出力します:
+2. 訓練データに対して`fit()`を呼び出しモデルを訓練し、その結果を表示します:
```python
from sklearn.metrics import f1_score, classification_report
@@ -261,7 +256,7 @@ Scikit-learnでこの二値分類を見つけるモデルを構築するのは
print('F1-score: ', f1_score(y_test, predictions))
```
- モデルのスコアボードを確認してください。約1000行のデータしかないことを考えると、悪くありません:
+ モデルのスコアボードを確認しましょう。約1000行のデータしかない割には悪くありません:
```output
precision recall f1-score support
@@ -282,82 +277,76 @@ Scikit-learnでこの二値分類を見つけるモデルを構築するのは
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://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)」(または「エラーマトリックス」)は、モデルの真の陽性と偽の陽性、真の陰性と偽の陰性を表す表であり、予測の精度を評価します。
+> 🎓 '[混同行列](https://wikipedia.org/wiki/Confusion_matrix)'(あるいは「エラー行列」)とは、モデルの真陽性、偽陽性、真陰性、偽陰性を表す表で、予測精度を測るものです。
-1. 混同行列を使用するには、`confusion_matrix()` を呼び出します:
+1. 混同行列を使うには、`confusion_matrix()`を呼び出します:
```python
from sklearn.metrics import confusion_matrix
confusion_matrix(y_test, predictions)
```
- モデルの混同行列を確認してください:
+ モデルの混同行列を見てみましょう:
```output
array([[162, 4],
[ 11, 22]])
```
-Scikit-learnでは、混同行列の行(軸0)は実際のラベル、列(軸1)は予測されたラベルを表します。
+Scikit-learnの混同行列では行(軸0)が実際のラベル、列(軸1)が予測ラベルです。
| | 0 | 1 |
| :---: | :---: | :---: |
| 0 | TN | FP |
| 1 | FN | TP |
-ここで何が起こっているのでしょうか?モデルがかぼちゃを二値カテゴリー、つまり「白」と「白ではない」に分類するよう求められたとします。
+これはどういう意味でしょう?モデルに、かぼちゃの2つのカテゴリ「白」と「白でない」を分類するように依頼されたとします。
+
+- モデルがかぼちゃを白でないと予測し、実際も「白でない」なら真陰性で、左上の数字で示されます。
+- モデルがかぼちゃを白と予測し、実際は「白でない」なら偽陽性で、左下の数字で示されます。
+- モデルがかぼちゃを白でないと予測し、実際は「白」なら偽陰性で、右上の数字で示されます。
+- モデルがかぼちゃを白と予測し、実際も「白」なら真陽性で、右下の数字で示されます。
-- モデルがかぼちゃを「白ではない」と予測し、実際に「白ではない」カテゴリーに属している場合、それを真の陰性(TN)と呼びます。これは左上の数字で示されます。
-- モデルがかぼちゃを「白」と予測し、実際には「白ではない」カテゴリーに属している場合、それを偽の陰性(FN)と呼びます。これは左下の数字で示されます。
-- モデルがかぼちゃを「白ではない」と予測し、実際には「白」カテゴリーに属している場合、それを偽の陽性(FP)と呼びます。これは右上の数字で示されます。
-- モデルがかぼちゃを「白」と予測し、実際に「白」カテゴリーに属している場合、それを真の陽性(TP)と呼びます。これは右下の数字で示されます。
-予想される通り、真の陽性(TP)と真の陰性(TN)の数が多く、偽の陽性(FP)と偽の陰性(FN)の数が少ない方が、モデルの性能が良いことを意味します。
-混同行列は、精度と再現率とどのように関連しているのでしょうか?上記で印刷された分類レポートでは、精度(0.85)と再現率(0.67)が示されていました。
+ご想像の通り、真陽性と真陰性の数が多く、偽陽性と偽陰性の数が少ない方が望ましく、これはモデルの性能が良いことを意味します。
+
+混同行列は精度(Precision)と再現率(Recall)にどのように関連していますか?上で表示された分類レポートは、精度(0.85)と再現率(0.67)を示していましたね。
精度 = tp / (tp + fp) = 22 / (22 + 4) = 0.8461538461538461
再現率 = tp / (tp + fn) = 22 / (22 + 11) = 0.6666666666666666
-✅ Q: 混同行列によると、モデルの性能はどうでしたか?
-A: 悪くはありません。真のネガティブが多くありますが、いくつかの偽陰性も存在します。
+✅ 質問: 混同行列によるとモデルはどうでしたか? 答え: 悪くはありません。真陰性は十分にありますが、いくつか偽陰性もあります。
-混同行列のTP/TNとFP/FNのマッピングを使って、以前見た用語を再確認しましょう:
+混同行列のTP/TNとFP/FNの対応を使って、以前見た用語を再確認しましょう:
-🎓 精度: TP/(TP + FP)
-取得されたインスタンスの中で関連性のあるインスタンスの割合(例: ラベルが正しく付けられたもの)
+🎓 精度(Precision): TP/(TP + FP) 検索されたインスタンスのうち関連のあるものの割合(例:どのラベルが正しくラベル付けされたか)
-🎓 再現率: TP/(TP + FN)
-関連性のあるインスタンスのうち、取得されたインスタンスの割合(正しくラベル付けされているかどうかは問わない)
+🎓 再現率(Recall): TP/(TP + FN) 検索された関連インスタンスの割合(正しくラベル付けされているかどうかに関わらず)
-🎓 f1スコア: (2 * 精度 * 再現率)/(精度 + 再現率)
-精度と再現率の加重平均。最高値は1、最低値は0。
+🎓 f1スコア: (2 * precision * recall)/(precision + recall) 精度と再現率の加重平均であり、最高は1、最低は0
-🎓 サポート:
-取得された各ラベルの出現回数
+🎓 サポート(Support): 各ラベルの出現数
-🎓 正確度: (TP + TN)/(TP + TN + FP + FN)
-サンプルに対して正確に予測されたラベルの割合。
+🎓 精度(Accuracy): (TP + TN)/(TP + TN + FP + FN) サンプルに対して正確に予測されたラベルの割合。
-🎓 マクロ平均:
-各ラベルの重み付けされていない平均値を計算し、ラベルの不均衡を考慮しない。
+🎓 マクロ平均(Macro Avg): ラベルごとの重みなし平均メトリクスの計算。ラベルの不均衡は考慮しない。
-🎓 重み付き平均:
-各ラベルの平均値を計算し、サポート(各ラベルの真のインスタンス数)によって重み付けしてラベルの不均衡を考慮する。
+🎓 重み付き平均(Weighted Avg): ラベルごとにそのサポート(各ラベルの真のインスタンス数)で重み付けして、不均衡を考慮した平均メトリクスの計算。
-✅ 偽陰性の数を減らしたい場合、どの指標を注視すべきか考えられますか?
+✅ 偽陰性の数を減らしたい場合、どの指標に注目すべきだと思いますか?
-## このモデルのROC曲線を視覚化する
+## このモデルのROC曲線を可視化する
-[](https://youtu.be/GApO575jTA0 "初心者向け機械学習 - ROC曲線を使ったロジスティック回帰の性能分析")
+[](https://youtu.be/GApO575jTA0 "ML for beginners - Analyzing Logistic Regression Performance with ROC Curves")
-> 🎥 上の画像をクリックしてROC曲線の概要を短い動画で確認してください
+> 🎥 上の画像をクリックするとROC曲線の短い動画概要を見ることができます
-もう一つの視覚化を行い、いわゆる「ROC」曲線を見てみましょう:
+では、いわゆる「ROC」曲線をもう一つ可視化してみましょう:
```python
from sklearn.metrics import roc_curve, roc_auc_score
@@ -377,36 +366,38 @@ plt.title('ROC Curve')
plt.show()
```
-Matplotlibを使用して、モデルの[受信者動作特性(ROC)](https://scikit-learn.org/stable/auto_examples/model_selection/plot_roc.html?highlight=roc)をプロットします。ROC曲線は、分類器の出力を真陽性と偽陽性の観点から見るためによく使用されます。「ROC曲線は通常、Y軸に真陽性率、X軸に偽陽性率を特徴とします。」したがって、曲線の急峻さと中間線と曲線の間の空間が重要です。曲線が急速に上昇し、線を越えることが望ましいです。今回の場合、最初に偽陽性があり、その後線が適切に上昇して越えています:
+Matplotlibを使用して、モデルの[受信者操作特性](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)を使用して、実際の「曲線下面積(AUC)」を計算します:
+最後に、Scikit-learnの[`roc_auc_score` API](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_auc_score.html?highlight=roc_auc#sklearn.metrics.roc_auc_score)を使って実際の「曲線下面積」(AUC)を計算します:
```python
auc = roc_auc_score(y_test,y_scores[:,1])
print(auc)
-```
-結果は `0.9749908725812341` です。AUCは0から1の範囲であり、予測が100%正確なモデルはAUCが1になります。この場合、モデルは「かなり良い」と言えます。
+```
+結果は `0.9749908725812341` です。AUCは0から1の範囲で、大きなスコアが望ましく、予測が100%正確なモデルはAUCが1になります。この場合、モデルは_かなり良い_と言えます。
-今後の分類に関するレッスンでは、モデルのスコアを改善する方法を学びます。しかし、今のところおめでとうございます!これで回帰に関するレッスンを完了しました!
+今後の分類に関するレッスンで、モデルのスコアを改善するために反復する方法を学びますが、今回はおめでとうございます!これらの回帰のレッスンを修了しました!
---
## 🚀チャレンジ
-ロジスティック回帰にはまだまだ学ぶべきことがあります!しかし、最良の学習方法は実験です。このタイプの分析に適したデータセットを見つけて、モデルを構築してみましょう。何を学びますか?ヒント: [Kaggle](https://www.kaggle.com/search?q=logistic+regression+datasets)で興味深いデータセットを探してみてください。
+ロジスティック回帰についてはまだまだ解明することがたくさんあります!しかし学ぶ最良の方法は実験することです。このタイプの解析に適したデータセットを見つけてモデルを構築してみましょう。何を学びますか?ヒント: 興味深いデータセットは[ Kaggle](https://www.kaggle.com/search?q=logistic+regression+datasets)で探せます。
## [講義後のクイズ](https://ff-quizzes.netlify.app/en/ml/)
-## 復習と自己学習
+## 復習と自習
-[スタンフォードのこの論文](https://web.stanford.edu/~jurafsky/slp3/5.pdf)の最初の数ページを読んで、ロジスティック回帰の実用的な使用例について学びましょう。これまで学んだ回帰タスクの中で、どのタスクがどちらの回帰タイプに適しているかを考えてみてください。どちらが最適でしょうか?
+[Stanfordのこの論文](https://web.stanford.edu/~jurafsky/slp3/5.pdf)の最初の数ページを読んで、ロジスティック回帰の実用的な利用例を考えてみてください。これまでに学習したタイプの回帰タスクのどちらかにより適したタスクは何でしょうか?どれが最適に働くでしょうか?
## 課題
-[この回帰を再試行する](assignment.md)
+[この回帰を再挑戦する](assignment.md)
---
-**免責事項**:
-この文書は、AI翻訳サービス[Co-op Translator](https://github.com/Azure/co-op-translator)を使用して翻訳されています。正確性を追求しておりますが、自動翻訳には誤りや不正確な部分が含まれる可能性があることをご承知ください。元の言語で記載された文書が正式な情報源とみなされるべきです。重要な情報については、専門の人間による翻訳を推奨します。この翻訳の使用に起因する誤解や誤解釈について、当方は一切の責任を負いません。
\ No newline at end of file
+
+**免責事項**:
+本書類は AI 翻訳サービス [Co-op Translator](https://github.com/Azure/co-op-translator) を使用して翻訳されています。正確性を期していますが、自動翻訳には誤りや不正確な部分が含まれる可能性があることをご承知おきください。原文の原語版が正式な情報源とみなされるべきです。重要な情報については、専門の人間による翻訳を推奨します。本翻訳の利用により生じたいかなる誤解や解釈違いについても、当方は責任を負いかねます。
+
\ No newline at end of file
diff --git a/translations/ja/8-Reinforcement/1-QLearning/README.md b/translations/ja/8-Reinforcement/1-QLearning/README.md
index ec331534f..4721bcd48 100644
--- a/translations/ja/8-Reinforcement/1-QLearning/README.md
+++ b/translations/ja/8-Reinforcement/1-QLearning/README.md
@@ -1,47 +1,47 @@
-# 強化学習とQ学習の入門
+# 強化学習とQ学習の紹介
-
-> スケッチノート: [Tomomi Imura](https://www.twitter.com/girlie_mac)
+
+> [Tomomi Imura](https://www.twitter.com/girlie_mac)によるスケッチノート
-強化学習には、エージェント、状態、そして各状態における一連の行動という3つの重要な概念が含まれます。指定された状態で行動を実行することで、エージェントは報酬を得ます。例えば、コンピュータゲーム「スーパーマリオ」を想像してみてください。あなたはマリオであり、ゲームのレベルにいて、崖の端に立っています。上にはコインがあります。マリオとして、ゲームレベルの特定の位置にいる状態が「状態」です。右に一歩進む(行動)と崖から落ちてしまい、低い数値スコアが与えられます。しかし、ジャンプボタンを押すとポイントを獲得し、生き残ることができます。それはポジティブな結果であり、ポジティブな数値スコアが与えられるべきです。
+強化学習は、エージェント、いくつかの状態、および各状態ごとの行動のセットという3つの重要な概念を含みます。特定の状態で行動を実行すると、エージェントに報酬が与えられます。再びコンピューターゲームのスーパーマリオを想像してください。あなたはマリオで、ゲームのレベルにいて、崖の端に立っています。あなたの上にはコインがあります。マリオであり、ゲームのレベルの特定の位置にいる…それがあなたの状態です。右に一歩動く(行動すると)と崖から落ちてしまい、数値的に低いスコアが与えられます。しかし、ジャンプボタンを押すとポイントを獲得し、生き続けることができます。それは良い結果であり、正の数値スコアを与えられるべきです。
-強化学習とシミュレーター(ゲーム)を使用することで、生き残りながらできるだけ多くのポイントを獲得するためのゲームプレイ方法を学ぶことができます。
+強化学習とシミュレーター(ゲーム)を使うことで、生き残り、できるだけ多くのポイントを獲得することを最大化するためのゲームのプレイ方法を学習できます。
-[](https://www.youtube.com/watch?v=lDq_en8RNOo)
+[](https://www.youtube.com/watch?v=lDq_en8RNOo)
-> 🎥 上の画像をクリックして、Dmitryが強化学習について話す様子を聞いてみましょう
+> 🎥 上の画像をクリックして、Dmitryの強化学習についての解説を聞いてください
-## [講義前のクイズ](https://ff-quizzes.netlify.app/en/ml/)
+## [事前講義クイズ](https://ff-quizzes.netlify.app/en/ml/)
## 前提条件とセットアップ
-このレッスンでは、Pythonでいくつかのコードを試してみます。このレッスンのJupyter Notebookコードを、コンピュータ上またはクラウド上で実行できる必要があります。
+このレッスンでは、Pythonでいくつかのコードを実験します。あなたのコンピューターかクラウドのどこかで、このレッスンのJupyter Notebookコードを実行できる必要があります。
-[レッスンノートブック](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb)を開き、このレッスンを進めながら構築してください。
+[レッスンのノートブック](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb)を開いて、このレッスンを進めてください。
-> **Note:** クラウドからこのコードを開く場合、ノートブックコードで使用される[`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py)ファイルも取得する必要があります。このファイルをノートブックと同じディレクトリに追加してください。
+> **注意:** クラウドからこのコードを開く場合、ノートブックコードで使用されている[`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py)ファイルも取得する必要があります。ノートブックと同じディレクトリに追加してください。
-## はじめに
+## イントロダクション
-このレッスンでは、ロシアの作曲家[セルゲイ・プロコフィエフ](https://en.wikipedia.org/wiki/Sergei_Prokofiev)による音楽童話「[ピーターと狼](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)」にインスパイアされた世界を探求します。**強化学習**を使用して、ピーターが環境を探索し、美味しいリンゴを集め、狼に遭遇しないようにします。
+このレッスンでは、ロシアの作曲家[セルゲイ・プロコフィエフ](https://en.wikipedia.org/wiki/Sergei_Prokofiev)による音楽童話に触発された[ピーターと狼](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)の世界を探検します。強化学習を用いて、ピーターが環境を探検し、美味しいリンゴを集め、狼に会わないようにします。
-**強化学習**(RL)は、エージェントがある環境で最適な行動を学ぶために多くの実験を行う学習技術です。この環境内のエージェントには、**報酬関数**によって定義された**目標**が必要です。
+強化学習(RL)は、多くの実験を行うことで、ある環境におけるエージェントの最適な行動を学習する手法です。この環境のエージェントには、報酬関数によって定義される目標があります。
## 環境
-簡単のために、ピーターの世界を`幅` x `高さ`のサイズの正方形のボードと考えます。以下のようなものです:
+単純化のために、ピーターの世界を `幅` x `高さ` の正方形の盤として考えましょう。このような感じです:
-
+
-このボードの各セルは以下のいずれかになります:
+この盤上の各セルは以下のいずれかです:
-* **地面**: ピーターや他の生物が歩ける場所。
-* **水**: 明らかに歩けない場所。
-* **木**または**草**: 休むことができる場所。
-* **リンゴ**: ピーターが見つけて喜ぶ食べ物。
-* **狼**: 危険で避けるべき存在。
+* 地面、ピーターや他の生き物が歩ける場所。
+* 水、もちろん歩けない場所。
+* 木や草、休憩できる場所。
+* リンゴ、ピーターが自分を養うために見つけたいもの。
+* 狼、危険で避けるべきもの。
-この環境で作業するためのコードを含むPythonモジュール[`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py)があります。このコードは概念を理解する上で重要ではないため、モジュールをインポートしてサンプルボードを作成します(コードブロック1):
+この環境で作業するコードは別のPythonモジュール、[`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py)にあります。概念理解には重要ではないため、このモジュールをインポートしてサンプル盤を作成します(コードブロック1):
```python
from rlboard import *
@@ -52,63 +52,63 @@ m.randomize(seed=13)
m.plot()
```
-このコードは上記のような環境の画像を出力するはずです。
+このコードは上記の環境に似た絵を表示するはずです。
-## 行動とポリシー
+## 行動と方策
-この例では、ピーターの目標はリンゴを見つけることであり、狼やその他の障害物を避けることです。そのため、リンゴを見つけるまで歩き回ることができます。
+この例でのピーターの目標は、狼や障害物を避けながらリンゴを見つけることです。つまり、リンゴを見つけるまで歩き回ることができます。
-したがって、任意の位置で以下の行動のいずれかを選択できます: 上、下、左、右。
+したがって、どの位置でも次の4つの行動のうちの一つを選べます:上、下、左、右。
-これらの行動を辞書として定義し、対応する座標変化のペアにマッピングします。例えば、右に移動する(`R`)はペア`(1,0)`に対応します。(コードブロック2):
+これらの行動は辞書として定義し、対応する座標変化のペアにマッピングします。例えば右に移動(`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)。
+まずはランダムウォーク戦略を実装して問題を解きましょう。ランダムウォークでは、許可された行動の中から次の行動をランダムに選び、リンゴに到達するまで実行します(コードブロック3)。
-1. 以下のコードでランダムウォークを実装します:
+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
+ n = 0 # ステップ数
+ # 初期位置を設定
if start_position:
m.human = start_position
else:
m.random_start()
while True:
if m.at() == Board.Cell.apple:
- return n # success!
+ return n # 成功!
if m.at() in [Board.Cell.wolf, Board.Cell.water]:
- return -1 # eaten by wolf or drowned
+ return -1 # オオカミに食べられたか溺れた
while True:
a = actions[policy(m)]
new_pos = m.move_pos(m.human,a)
if m.is_valid(new_pos) and m.at(new_pos)!=Board.Cell.water:
- m.move(a) # do the actual move
+ m.move(a) # 実際の移動を行う
break
n+=1
walk(m,random_policy)
```
- `walk`の呼び出しは、対応する経路の長さを返すはずです。これは実行ごとに異なる場合があります。
+ `walk` の呼び出しは、実行ごとに異なる場合がある対応パスの長さを返すはずです。
-1. ウォーク実験を複数回(例えば100回)実行し、結果の統計を出力します(コードブロック4):
+1. ウォーク実験を複数回(例: 100回)実行し、その結果の統計を出力してください(コードブロック4):
```python
def print_statistics(policy):
@@ -125,17 +125,17 @@ action_idx = { a : i for i,a in enumerate(actions.keys()) }
print_statistics(random_policy)
```
- 経路の平均長さは約30〜40ステップであることに注意してください。これは、最寄りのリンゴまでの平均距離が約5〜6ステップであることを考えるとかなり多いです。
+ パスの平均長さは30〜40歩前後で、最寄りのリンゴまでの平均距離5〜6歩と比較してかなり長いことに注意してください。
- また、ランダムウォーク中のピーターの動きを確認することもできます:
+ また、ピーターの動きをランダムウォーク中に見ることもできます:

## 報酬関数
-ポリシーをより賢くするためには、どの動きが他より「良い」のかを理解する必要があります。そのためには、目標を定義する必要があります。
+方策をより賢くするために、どの動きが「より良い」かを理解する必要があります。そのためには目標を定義します。
-目標は、各状態に対してスコア値を返す**報酬関数**によって定義できます。数値が高いほど報酬関数が良いことを意味します。(コードブロック5)
+目標は報酬関数で定義され、各状態に対してスコア値を返します。数値が高いほどより良い報酬となります。(コードブロック5)
```python
move_reward = -0.1
@@ -154,39 +154,115 @@ def reward(m,pos=None):
return move_reward
```
-報酬関数の興味深い点は、ほとんどの場合、*ゲーム終了時にのみ実質的な報酬が与えられる*ことです。つまり、アルゴリズムは最終的なポジティブな報酬につながる「良い」ステップを覚えてその重要性を高める必要があります。同様に、悪い結果につながるすべての動きは抑制されるべきです。
+報酬関数で興味深いのは、多くの場合、ゲームの最後にしか十分な報酬が与えられないことです。つまりアルゴリズムは最終的に正の報酬を得る「良い」ステップを覚えて重視し、逆に悪い結果を招く動きを抑制しなければなりません。
## Q学習
-ここで説明するアルゴリズムは**Q学習**と呼ばれます。このアルゴリズムでは、ポリシーは**Qテーブル**と呼ばれる関数(またはデータ構造)によって定義されます。これは、特定の状態での各行動の「良さ」を記録します。
+ここで議論するアルゴリズムはQ-Learningと呼ばれます。このアルゴリズムでは、方策はQ-Tableと呼ばれる関数(またはデータ構造)で定義されます。これは与えられた状態での各行動の「良さ」を記録します。
-Qテーブルと呼ばれる理由は、テーブルや多次元配列として表現するのが便利だからです。ボードの寸法が`幅` x `高さ`であるため、Qテーブルを形状`幅` x `高さ` x `len(actions)`のnumpy配列として表現できます。(コードブロック6)
+Q-Tableはしばしば表や多次元配列として表現されるためその名前が付いています。盤のサイズが `width` x `height` であるため、Q-Tableは形状 `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-Tableのすべての値を等しい値(ここでは0.25)で初期化しています。これは「ランダムウォーク」方策に対応し、各状態でのすべての動きが均等に良いことを意味します。Q-Tableを `plot` 関数に渡して盤上に可視化できます: `m.plot(Q)`。
-
+
-各セルの中央には、移動の推奨方向を示す「矢印」があります。すべての方向が等しいため、点が表示されます。
+各セルの中央に「矢印」があり、好ましい移動方向を示します。すべての方向が等しい場合は点が表示されます。
-次にシミュレーションを実行し、環境を探索し、Qテーブル値のより良い分布を学習します。これにより、リンゴへの道をはるかに速く見つけることができます。
+次にシミュレーションを実行し、環境を探検してQ-Tableの値の分布を改善し、リンゴへの経路をより速く見つけられるようにします。
-## Q学習の本質: ベルマン方程式
+## Q学習の本質:ベルマン方程式
-移動を開始すると、各行動には対応する報酬があります。つまり、理論的には最も高い即時報酬に基づいて次の行動を選択できます。しかし、ほとんどの状態では、移動がリンゴに到達するという目標を達成するわけではないため、どの方向が良いかをすぐに決定することはできません。
+動き始めると、それぞれの行動には即時の報酬があり、理論的には最高の即時報酬に基づいて次の行動を選べます。しかしほとんどの状態では、この動きだけではリンゴに到達できず、どの方向が良いか即座に決められません。
-> 即時の結果ではなく、シミュレーションの最後に得られる最終結果が重要であることを忘れないでください。
+> 大事なのは即時の結果ではなく、シミュレーションの終了時に得られる最終結果であることを覚えておいてください。
-この遅延報酬を考慮するために、**[動的計画法](https://en.wikipedia.org/wiki/Dynamic_programming)**の原則を使用する必要があります。これにより、問題を再帰的に考えることができます。
+遅延した報酬を考慮するために、[動的計画法](https://en.wikipedia.org/wiki/Dynamic_programming)の原理を用います。これにより問題を再帰的に考えることができます。
-現在の状態を*s*とし、次の状態*s'*に移動したいとします。このようにして、報酬関数によって定義された即時報酬*r(s,a)*を受け取り、さらに将来の報酬を得ることができます。Qテーブルが各行動の「魅力」を正確に反映していると仮定すると、状態*s'*では*Q(s',a')*の最大値に対応する行動*a'*を選択します。したがって、状態*s*で得られる可能性のある最良の将来の報酬は`max`
+今、状態 *s* にいて、次に状態 *s'* に移動するとします。このとき、報酬関数で定義された即時報酬 *r(s,a)* と将来の報酬を受け取ります。もしQ-Tableが各行動の「魅力度」を正しく反映していると仮定すると、状態 *s'* では最大値の *Q(s',a')* を持つ行動 *a* を選びます。つまり、状態 *s* で得られる可能な最高の将来報酬は `max`a'*Q(s',a')* となります(ここで最大は状態 *s'* のすべての可能な行動 *a'* にわたって計算)。
-## ポリシーの確認
+これにより状態 *s*、行動 *a* におけるQ-Tableの値を計算するベルマン方程式が得られます:
-Q-Tableは各状態における各アクションの「魅力」を示しているため、これを使って効率的なナビゲーションを定義するのは非常に簡単です。最も単純な場合、Q-Tableの値が最も高いアクションを選択します。(コードブロック9)
+
+
+ここで γ は割引率と呼ばれ、将来の報酬に対して現在の報酬をどの程度重視するかを決定します。
+
+## 学習アルゴリズム
+
+上記の式に基づき、学習アルゴリズムの擬似コードは以下の通りです:
+
+* すべての状態と行動で等しい値でQ-Table Qを初期化する
+* 学習率 α ← 1 に設定する
+* シミュレーションを多数回繰り返す
+ 1. ランダムな位置から開始する
+ 1. 繰り返す
+ 1. 状態 *s* で行動 *a* を選択する
+ 2. 行動を実行し新しい状態 *s'* に移動する
+ 3. ゲーム終了条件に達したか報酬が小さすぎる場合はシミュレーションを終了する
+ 4. 新しい状態で報酬 *r* を計算する
+ 5. ベルマン方程式にしたがってQ関数を更新する: *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ maxa'Q(s',a'))*
+ 6. *s* ← *s'*
+ 7. 合計報酬を更新し、αを減少させる
+
+## 活用と探索
+
+上記のアルゴリズムでは、ステップ2.1でどのように行動を選ぶかは明記していません。もし行動をランダムに選ぶなら環境をランダムに探索し、頻繁に死ぬことや通常は行かない場所を探検することになります。別の方法は、既知のQ-Tableの値を活用(エクスプロイト)し、状態 *s* で最も高いQ-Table値の行動を選ぶことです。しかしこれでは他の状態を探索できず最適解に到達できない可能性があります。
+
+したがって、探索と活用のバランスが最善です。これはQ-Tableの値に比例した確率で行動を選択することで実現できます。はじめはQ-Tableの値がすべて同じなのでランダム選択となりますが、学習が進むにつれて最適経路を辿りつつもエージェントが時々未探索の経路を選べるようになります。
+
+## Python実装
+
+これで学習アルゴリズムの実装準備が整いました。まずQ-Tableの任意の数値を対応する行動の確率ベクトルに変換する関数が必要です。
+
+1. `probs()`関数を作成:
+
+ ```python
+ def probs(v,eps=1e-4):
+ v = v-v.min()+eps
+ v = v/v.sum()
+ return v
+ ```
+
+ 初期状態でベクトルの全成分が同じ場合に0除算を避けるために、元のベクトルにいくつかの `eps` を加えています。
+
+5000回の実験、すなわちエポックで学習アルゴリズムを実行してください:(コードブロック8)
+```python
+ for epoch in range(5000):
+
+ # 初期地点を選択する
+ m.random_start()
+
+ # 移動を開始する
+ n=0
+ cum_reward = 0
+ while True:
+ x,y = m.human
+ v = probs(Q[x,y])
+ a = random.choices(list(actions),weights=v)[0]
+ dpos = actions[a]
+ m.move(dpos,check_correctness=False) # プレイヤーがボードの外に移動することを許可し、それがエピソードの終了となる
+ r = reward(m)
+ cum_reward += r
+ if r==end_reward or cum_reward < -1000:
+ lpath.append(n)
+ break
+ alpha = np.exp(-n / 10e5)
+ gamma = 0.5
+ ai = action_idx[a]
+ Q[x,y,ai] = (1 - alpha) * Q[x,y,ai] + alpha * (r + gamma * Q[x+dpos[0], y+dpos[1]].max())
+ n+=1
+```
+
+このアルゴリズム実行後、Q-Tableは各ステップで異なる行動の魅力度を定義する値で更新されます。Q-Tableを視覚化するため、各セルに移動方向を示すベクトルをプロットできます。単純化のために矢印の代わりに小さな円を描きます。
+
+
+
+## 方策の検証
+
+Q-Tableは各状態での行動の「魅力度」を示すため、これを使って効率的なナビゲーションが簡単に定義できます。最も単純には、最も高いQ-Table値に対応する行動を選択します:(コードブロック9)
```python
def qpolicy_strict(m):
@@ -198,17 +274,18 @@ def qpolicy_strict(m):
walk(m,qpolicy_strict)
```
-> 上記のコードを何度か試してみると、時々「停止」してしまい、ノートブックのSTOPボタンを押して中断する必要があることに気付くかもしれません。これは、最適なQ-Valueの観点で2つの状態が互いに「指し示す」状況が発生する可能性があるためで、その場合、エージェントはその状態間を無限に移動し続けてしまいます。
+
+> 上記のコードを何度か試すと、時々「ハング」してしまい、ノートブックのSTOPボタンを押して中断しなければならないことに気づくかもしれません。これは、最適なQ値の観点で2つの状態がお互いを「指している」状況が起きる可能性があり、その場合エージェントがそれらの状態間を無限に行き来してしまうために起こります。
## 🚀チャレンジ
-> **タスク1:** `walk`関数を修正して、パスの最大長を特定のステップ数(例えば100)で制限し、上記のコードが時々この値を返す様子を観察してください。
+> **タスク1:** `walk`関数を修正して経路の最大長さを一定のステップ数(例えば100)に制限し、上記のコードが時々その値を返すのを確認してください。
-> **タスク2:** `walk`関数を修正して、以前に訪れた場所に戻らないようにしてください。これにより`walk`がループするのを防ぐことができますが、エージェントが脱出できない場所に「閉じ込められる」可能性は依然としてあります。
+> **タスク2:** `walk`関数を修正して、既に訪れた場所に戻らないようにしてください。これにより`walk`のループは防げますが、エージェントが脱出不能な場所に「閉じ込められる」可能性は依然として残ります。
## ナビゲーション
-より良いナビゲーションポリシーは、トレーニング中に使用したものです。これは、利用と探索を組み合わせたものです。このポリシーでは、Q-Tableの値に比例した確率で各アクションを選択します。この戦略では、エージェントがすでに探索した位置に戻る可能性はありますが、以下のコードからわかるように、目的地までの平均パスが非常に短くなります(`print_statistics`はシミュレーションを100回実行します):(コードブロック10)
+より良いナビゲーション方針は、トレーニング中に用いたものと同じで、活用と探索を組み合わせたものです。この方針では、Qテーブルの値に比例した確率で各アクションを選択します。この戦略でもエージェントがすでに探索した位置に戻ることがありますが、以下のコードのように、目的地への平均経路は非常に短くなります(`print_statistics`はシミュレーションを100回実行することに注意してください):(コードブロック 10)
```python
def qpolicy(m):
@@ -220,28 +297,32 @@ def qpolicy(m):
print_statistics(qpolicy)
```
-このコードを実行すると、以前よりもはるかに短い平均パス長が得られるはずです。3〜6の範囲内です。
+このコードを実行すると、平均経路長が以前よりかなり短くなり、3~6あたりの範囲になるはずです。
## 学習プロセスの調査
-前述の通り、学習プロセスは探索と問題空間の構造に関する知識の活用のバランスです。学習の結果(エージェントが目標への短いパスを見つける能力)が改善されたことがわかりますが、学習プロセス中の平均パス長の挙動を観察するのも興味深いです:
+述べたように、学習プロセスは探索と獲得した知識の活用のバランスです。学習の結果(エージェントが短い経路で目標に到達する能力)が向上したことが分かりましたが、学習過程で平均経路長がどのように変化するか観察するのも興味深いです:
+
+
-学習内容を以下のようにまとめることができます:
+学習内容は以下の通りまとめられます:
-- **平均パス長の増加**。最初は平均パス長が増加することが見られます。これは、環境について何も知らない場合、悪い状態(水や狼)に閉じ込められる可能性が高いためです。より多くを学び、この知識を使い始めると、環境をより長く探索できますが、まだリンゴの場所をよく知らない状態です。
+- 平均経路長の増加。最初は平均経路長が増えます。これは環境について何も知らない状態で、悪い状態(水やオオカミ)に捕まる可能性が高いためと考えられます。知識が増え使い始めると環境をより長く探索できますが、リンゴの場所はまだよく分かっていません。
-- **学習が進むにつれてパス長が減少**。十分に学習すると、エージェントが目標を達成するのが容易になり、パス長が減少し始めます。ただし、まだ探索を続けているため、最適なパスから外れて新しい選択肢を探索することがあり、パスが最適よりも長くなることがあります。
+- 学ぶにつれて経路長は短くなる。十分に学習できると、エージェントが目標を達成しやすくなり経路長が短くなります。ただし探索も続けるため、最適経路から外れて新しい選択肢を探しに行くことがあり、経路が最適より長くなってしまいます。
-- **突然のパス長の増加**。グラフで観察されるもう一つの特徴は、ある時点でパス長が突然増加することです。これはプロセスの確率的な性質を示しており、Q-Tableの係数が新しい値で上書きされることで「損なわれる」可能性があることを意味します。これを最小化するには、学習率を減少させる(例えば、トレーニングの終盤ではQ-Tableの値を小さな値でのみ調整する)ことが理想的です。
+- 経路長の突然の増加。このグラフではある時点で経路長が突然増えています。これはプロセスの確率的な性質を示しており、新しい値でQテーブルの係数を上書きして「壊してしまう」ことがあるためです。これを理想的には学習率を下げて抑えます(例えば、学習の最後の方ではQテーブルの値を少しずつしか調整しません)。
-全体として、学習プロセスの成功と質は、学習率、学習率の減衰、割引率などのパラメータに大きく依存することを覚えておくことが重要です。これらは**ハイパーパラメータ**と呼ばれ、トレーニング中に最適化する**パラメータ**(例えば、Q-Tableの係数)とは区別されます。最適なハイパーパラメータ値を見つけるプロセスは**ハイパーパラメータ最適化**と呼ばれ、別のトピックとして扱う価値があります。
+全体として、学習率、学習率減衰、割引率などのパラメータが学習の成功と品質に大きく影響することを忘れないでください。これらはトレーニング中に最適化するパラメータ(例えばQテーブルの係数)と区別するためにハイパーパラメータと呼ばれます。最適なハイパーパラメータを見つける過程はハイパーパラメータ最適化と呼ばれ、別のトピックに値します。
-## [講義後のクイズ](https://ff-quizzes.netlify.app/en/ml/)
+## [講義後クイズ](https://ff-quizzes.netlify.app/en/ml/)
## 課題
[より現実的な世界](assignment.md)
---
-**免責事項**:
-この文書はAI翻訳サービス[Co-op Translator](https://github.com/Azure/co-op-translator)を使用して翻訳されています。正確性を追求しておりますが、自動翻訳には誤りや不正確な部分が含まれる可能性があります。元の言語で記載された文書が正式な情報源とみなされるべきです。重要な情報については、専門の人間による翻訳を推奨します。この翻訳の使用に起因する誤解や誤解釈について、当社は責任を負いません。
\ No newline at end of file
+
+**免責事項**:
+本書類は AI 翻訳サービス [Co-op Translator](https://github.com/Azure/co-op-translator) を使用して翻訳されています。正確性を期していますが、自動翻訳には誤りや不正確な部分が含まれる可能性があることをご承知おきください。原文の原語版が正式な情報源とみなされるべきです。重要な情報については、専門の人間による翻訳を推奨します。本翻訳の利用により生じたいかなる誤解や解釈違いについても、当方は責任を負いかねます。
+
\ No newline at end of file
diff --git a/translations/ja/8-Reinforcement/2-Gym/README.md b/translations/ja/8-Reinforcement/2-Gym/README.md
index 6fac61c5b..4013e03df 100644
--- a/translations/ja/8-Reinforcement/2-Gym/README.md
+++ b/translations/ja/8-Reinforcement/2-Gym/README.md
@@ -1,14 +1,34 @@
+# CartPole スケーティング
+
+前回のレッスンで解いてきた問題は、おもちゃの問題のように見え、現実のシナリオにはあまり適用できないように思えるかもしれません。しかし、多くの実世界の問題もこのシナリオを共有しています。チェスや囲碁も含まれます。同様なのは、与えられたルールのあるボードと離散的な状態があるためです。
+
+## [プレ講義クイズ](https://ff-quizzes.netlify.app/en/ml/)
+
+## はじめに
+
+このレッスンでは、Qラーニングの同じ原則を連続状態、すなわち1つ以上の実数で表される状態に適用します。取り扱うのは以下の問題です:
+
+> 問題: ピーターがオオカミから逃げるには、より速く動ける必要があります。ピーターがQラーニングを使ってスケートの仕方、特にバランスを保つ方法を学ぶ様子を見ていきましょう。
+
+
+
+> ピーターと友達が創意工夫してオオカミから逃げる!画像提供:[Jen Looper](https://twitter.com/jenlooper)
+
+バランスを取る単純化されたバージョンとして、**CartPole** 問題を使います。カートポールの世界では、水平方向に左右に動けるスライダーがあり、その上に垂直な棒をバランスさせることがゴールです。
+
+
+
## 前提条件
-このレッスンでは、**OpenAI Gym**というライブラリを使用して、さまざまな**環境**をシミュレーションします。このレッスンのコードはローカル環境(例: Visual Studio Code)で実行することができ、その場合シミュレーションは新しいウィンドウで開きます。オンラインでコードを実行する場合は、[こちら](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7)に記載されているように、コードにいくつかの調整が必要になる場合があります。
+このレッスンでは、**OpenAI Gym** と呼ばれるライブラリを使い、異なる環境をシミュレートします。コードをローカル(例:Visual Studio Code)で実行する場合、シミュレーションは新しいウィンドウで開きます。オンラインで実行する場合は、[こちら](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7)の説明に従いコードを一部調整する必要があるかもしれません。
## OpenAI Gym
-前回のレッスンでは、ゲームのルールと状態が自分で定義した`Board`クラスによって提供されていました。今回は、バランスを取るポールの物理をシミュレーションする特別な**シミュレーション環境**を使用します。強化学習アルゴリズムをトレーニングするための最も人気のあるシミュレーション環境の1つが、[Gym](https://gym.openai.com/)と呼ばれるもので、[OpenAI](https://openai.com/)によって管理されています。このGymを使用することで、カートポールのシミュレーションからアタリゲームまで、さまざまな**環境**を作成できます。
+前回のレッスンでは、ゲームのルールと状態は自分で定義した `Board` クラスが担当していました。ここでは、バランス棒の物理をシミュレートする特別なシミュレーション環境を使います。強化学習アルゴリズムの訓練用シミュレーション環境で最も人気があるものの一つが[Gym](https://gym.openai.com/)で、[OpenAI](https://openai.com/)が管理しています。このGymを使うことで、カートポールシミュレーションからアタリのゲームまで様々な環境を作成できます。
-> **Note**: OpenAI Gymで利用可能な他の環境は[こちら](https://gym.openai.com/envs/#classic_control)で確認できます。
+> 注意: OpenAI Gymで利用可能な他の環境は[こちら](https://gym.openai.com/envs/#classic_control)で確認できます。
-まず、Gymをインストールし、必要なライブラリをインポートしましょう(コードブロック1):
+まず、gymをインストールし必要なライブラリをインポートしましょう(コードブロック1):
```python
import sys
@@ -20,15 +40,15 @@ import numpy as np
import random
```
-## 演習 - カートポール環境を初期化する
+## 演習 - カートポール環境の初期化
-カートポールのバランス問題に取り組むには、対応する環境を初期化する必要があります。各環境には以下が関連付けられています:
+カートポール問題に取り組むには、対応する環境を初期化する必要があります。各環境には以下が関連しています:
-- **観測空間**: 環境から受け取る情報の構造を定義します。カートポール問題では、ポールの位置、速度、その他の値を受け取ります。
+- 観測空間: 環境から受け取る情報の構造を定義します。カートポール問題では、棒の位置、速度などの値です。
-- **行動空間**: 可能な行動を定義します。この場合、行動空間は離散的で、**左**と**右**の2つの行動で構成されています。(コードブロック2)
+- 行動空間: 可能な行動を定義します。我々の場合、行動空間は離散的で、左か右の2つの行動からなります。(コードブロック2)
-1. 初期化するには、以下のコードを入力してください:
+1. 初期化するには、以下のコードを入力してください:
```python
env = gym.make("CartPole-v1")
@@ -37,11 +57,11 @@ import random
print(env.action_space.sample())
```
-環境がどのように動作するかを確認するために、100ステップの短いシミュレーションを実行してみましょう。各ステップで、`action_space`からランダムに選択した行動を提供します。
+環境がどう動くかを見るために、100ステップの短いシミュレーションをします。各ステップで実行する行動を1つ選択します。このシミュレーションでは `action_space` からランダムに選びます。
-1. 以下のコードを実行して、結果を確認してください。
+1. 下のコードを実行して結果を確認してください。
- ✅ このコードはローカルのPythonインストールで実行することを推奨します!(コードブロック3)
+ ✅ このコードはローカルのPython環境で実行するのが推奨です! (コードブロック3)
```python
env.reset()
@@ -52,11 +72,11 @@ import random
env.close()
```
- 以下のような画像が表示されるはずです:
+ 画面はこの画像に似たものが見えるはずです:
- 
+ 
-1. シミュレーション中に、行動を決定するために観測値を取得する必要があります。実際には、`step`関数は現在の観測値、報酬関数、およびシミュレーションを続行するかどうかを示す終了フラグを返します。(コードブロック4)
+1. シミュレーション中、どのように行動するか決めるため観測情報を得る必要があります。`step`関数は現在の観測値、報酬値、そして続けるべきか示す`done`フラグを返します:(コードブロック4)
```python
env.reset()
@@ -69,7 +89,7 @@ import random
env.close()
```
- ノートブックの出力で以下のような結果が表示されるはずです:
+ ノートブックの出力には以下のようなものが表示されるでしょう:
```text
[ 0.03403272 -0.24301182 0.02669811 0.2895829 ] -> 1.0
@@ -82,43 +102,43 @@ import random
[ 0.17617249 0.35602306 -0.21873684 -0.90998894] -> 1.0
```
- シミュレーションの各ステップで返される観測ベクトルには以下の値が含まれています:
+ シミュレーション各ステップで返される観測ベクトルには次の値が含まれます:
- カートの位置
- カートの速度
- - ポールの角度
- - ポールの回転速度
+ - 棒の角度
+ - 棒の回転速度
-1. これらの数値の最小値と最大値を取得してください。(コードブロック5)
+1. それらの値の最小・最大値を取得してみましょう:(コードブロック5)
```python
print(env.observation_space.low)
print(env.observation_space.high)
```
- また、各シミュレーションステップでの報酬値が常に1であることに気付くかもしれません。これは、目標ができるだけ長く生き残ること、つまりポールをできるだけ垂直に保つことだからです。
+ シミュレーション各ステップの報酬値は常に1であることに気づくでしょう。これは目標ができるだけ長く生存し、棒を垂直に近い状態で保ち続けることだからです。
- ✅ 実際、カートポールのシミュレーションは、100回連続の試行で平均報酬が195に達した場合に解決されたと見なされます。
+ ✅ 実際、CartPoleシミュレーションは連続して100回の試行で平均報酬が195以上になれば解決済みとされます。
## 状態の離散化
-Q-Learningでは、各状態で何をすべきかを定義するQ-テーブルを構築する必要があります。これを行うためには、状態を**離散的**にする必要があります。つまり、有限の離散値を含む必要があります。そのため、観測値を**離散化**し、有限の状態セットにマッピングする必要があります。
+Qラーニングでは、状態ごとに何をすべきかを定義したQテーブルを作る必要があります。そのためには、状態を離散的に、つまり有限の離散値の数を持つようにしなければなりません。そこで観測を有限の状態集合に離散化してマッピングします。
-これを行う方法はいくつかあります:
+いくつか方法があります:
-- **ビンに分割する**: 特定の値の範囲がわかっている場合、その範囲をいくつかの**ビン**に分割し、その値を属するビン番号に置き換えることができます。これはnumpyの[`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html)メソッドを使用して行うことができます。この場合、選択したビンの数に応じて状態サイズを正確に把握できます。
+- ビン分割:特定値の区間が分かっていれば、その区間をいくつかのビンに分割し、値を属するビン番号で置き換えます。これは numpy の [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html) メソッドを使って行うことができます。これにより状態サイズは正確にわかります。なぜなら選んだビンの数に依存するからです。
+
+✅ 線形補間を使って値をある有限区間(例えば -20 から 20)におさめ、その後整数に丸める方法もあります。これにより状態のサイズは少し制御しづらくなります。特に入力値の範囲が正確にわからない場合に顕著です。例として私たちの場合、4つの値のうち2つは上下限がなく、無限の状態数が生じる可能性があります。
-✅ 線形補間を使用して値を有限の範囲(例えば、-20から20)に持ってきて、丸めることで整数に変換することができます。この方法では、状態サイズを完全に制御することはできませんが、特に入力値の正確な範囲がわからない場合に便利です。例えば、この場合、4つの値のうち2つは値の上限/下限が定義されていないため、無限の状態数になる可能性があります。
+私たちの例では後者の方法を採用します。のちに気づくと思いますが、上限や下限が不定でも値はめったに一定の有限区間外に出ないため、極端な値の状態は稀です。
-この例では、2番目の方法を使用します。後で気付くかもしれませんが、上限/下限が定義されていないにもかかわらず、それらの値が特定の有限範囲外になることはめったにありません。そのため、極端な値を持つ状態は非常にまれです。
-
-1. 以下は、モデルからの観測値を受け取り、4つの整数値のタプルを生成する関数です。(コードブロック6)
+1. 観測から4つの整数値のタプルを返す関数はこちらです:(コードブロック6)
```python
def discretize(x):
return tuple((x/np.array([0.25, 0.25, 0.01, 0.1])).astype(np.int))
```
-1. ビンを使用した別の離散化方法も試してみましょう。(コードブロック7)
+1. もう一つビン分割を使った離散化方法も試してみましょう:(コードブロック7)
```python
def create_bins(i,num):
@@ -126,17 +146,17 @@ Q-Learningでは、各状態で何をすべきかを定義するQ-テーブル
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
+ ints = [(-5,5),(-2,2),(-0.5,0.5),(-2,2)] # 各パラメータの値の区間
+ nbins = [20,20,10,10] # 各パラメータのビンの数
bins = [create_bins(ints[i],nbins[i]) for i in range(4)]
def discretize_bins(x):
return tuple(np.digitize(x[i],bins[i]) for i in range(4))
```
-1. 短いシミュレーションを実行し、これらの離散化された環境値を観察してみましょう。`discretize`と`discretize_bins`の両方を試して、違いがあるかどうか確認してください。
+1. さて短いシミュレーションを実行し、この離散化された環境値を観察しましょう。`discretize` と `discretize_bins` の両方を試し、違いを見てみても構いません。
- ✅ `discretize_bins`はビン番号を返しますが、これは0ベースです。そのため、入力変数の値が0付近の場合、範囲の中央(10)の番号を返します。一方、`discretize`では出力値の範囲を気にせず、負の値を許容しているため、状態値はシフトされず、0は0に対応します。(コードブロック8)
+ ✅ discretize_bins はビン番号(0から始まる)を返します。0近辺の入力値には区間の中央付近の番号(10)を返します。discretizeは出力値の範囲を気にせず負の値も許すため状態値はシフトされておらず、0 は 0に対応します。(コードブロック8)
```python
env.reset()
@@ -150,15 +170,15 @@ Q-Learningでは、各状態で何をすべきかを定義するQ-テーブル
env.close()
```
- ✅ 環境の実行を確認したい場合は、`env.render`で始まる行のコメントを解除してください。そうでない場合は、バックグラウンドで実行することができ、これにより高速化されます。この「非表示」実行をQ-Learningプロセス中に使用します。
+ ✅ 環境の動作を見たい場合は env.render で始まる行のコメントを外してください。そうでなければ背景で実行すれば速いです。Qラーニング過程ではこの「非表示」実行を使います。
-## Q-テーブルの構造
+## Qテーブルの構造
-前回のレッスンでは、状態は0から8までの単純な数字のペアであり、そのためQ-テーブルを形状が8x8x2のnumpyテンソルで表現するのが便利でした。ビンによる離散化を使用する場合、状態ベクトルのサイズも既知であるため、同じアプローチを使用して状態を形状が20x20x10x10x2の配列で表現することができます(ここで2は行動空間の次元であり、最初の次元は観測空間内の各パラメータに使用するビンの数に対応します)。
+前回のレッスンでは状態が0〜8の単純な数字の組だったので、Qテーブルは8x8x2のnumpyテンソルで表せました。ビン分割離散化を使う場合も状態ベクトルのサイズは既知なので、同じやり方で状態を20x20x10x10x2の配列で表せます(ここで2は行動空間の次元、最初の4つは観測空間パラメータごとの選択したビンの数です)。
-ただし、観測空間の正確な次元がわからない場合があります。`discretize`関数の場合、元の値の一部が制限されていないため、状態が特定の制限内に留まることを保証することはできません。そのため、少し異なるアプローチを使用し、Q-テーブルを辞書で表現します。
+しかし観測空間の正確なサイズが不明なこともあります。`discretize` 関数の場合、状態が一定範囲に収まる保証はなく、元の値の一部に制約がありません。そこで少し違う方法として、Qテーブルを辞書で表現します。
-1. ペア*(state,action)*を辞書のキーとして使用し、その値がQ-テーブルのエントリ値に対応します。(コードブロック9)
+1. *(状態, 行動)* のペアを辞書のキーにし、値がQテーブルのエントリ値となるようにします。(コードブロック9)
```python
Q = {}
@@ -168,38 +188,38 @@ Q-Learningでは、各状態で何をすべきかを定義するQ-テーブル
return [Q.get((state,a),0) for a in actions]
```
- ここでは、`qvalues()`という関数も定義しており、指定された状態に対応するすべての可能な行動に対するQ-テーブル値のリストを返します。Q-テーブルにエントリが存在しない場合、デフォルト値として0を返します。
+ ここでは `qvalues()` 関数も定義しており、指定状態の全可能な行動に対応するQテーブルの値リストを返します。もしエントリがなければ0を返します。
-## Q-Learningを始めましょう
+## Qラーニングを始めよう
-さて、ピーターにバランスを取る方法を教える準備が整いました!
+さあ、ピーターにバランスを教えます!
-1. まず、いくつかのハイパーパラメータを設定しましょう。(コードブロック10)
+1. まずいくつかのハイパーパラメータを決めましょう:(コードブロック10)
```python
- # hyperparameters
+ # ハイパーパラメータ
alpha = 0.3
gamma = 0.9
epsilon = 0.90
```
- ここで、`alpha`は**学習率**であり、各ステップでQ-テーブルの現在の値をどの程度調整するべきかを定義します。前回のレッスンでは1から始め、トレーニング中に`alpha`を低い値に減少させました。この例では簡単のために一定に保ちますが、後で`alpha`値を調整して実験することができます。
-
- `gamma`は**割引率**であり、現在の報酬よりも将来の報酬をどの程度優先するべきかを示します。
+ ここで、`alpha` は学習率で、各ステップでQテーブルの値をどれだけ調整するかを決めます。前回は1から始め、訓練中に下げていきました。この例では単純さのために一定にしてありますが、後で調整してみてもいいです。
- `epsilon`は**探索/活用率**であり、探索を優先するか活用を優先するかを決定します。このアルゴリズムでは、`epsilon`の割合で次の行動をQ-テーブル値に従って選択し、残りの割合でランダムな行動を実行します。これにより、これまで見たことのない探索空間の領域を探索することができます。
+ `gamma` は割引率で、将来の報酬をどれだけ重視するかを示します。
- ✅ バランスを取るという観点では、ランダムな行動(探索)を選択することは、間違った方向へのランダムなパンチのようなものであり、ポールはその「ミス」からバランスを回復する方法を学ぶ必要があります。
+ `epsilon` は探索/活用の係数で、探索と活用のどちらを優先するか決めます。アルゴリズムでは `epsilon` の割合でQテーブルに基づく行動を選び、残りはランダム行動を実行します。これにより未探索の領域も探索できます。
-### アルゴリズムを改善する
+ ✅ バランスの観点ではランダム行動(探索)は不適切な方向への偶発的な衝撃であり、棒はこれらの「ミス」からバランスを取ることを学習します。
-前回のレッスンからアルゴリズムを2つ改善することができます:
+### アルゴリズムの改善
-- **平均累積報酬を計算する**: 複数のシミュレーションにわたって平均累積報酬を計算します。5000回のイテレーションごとに進捗を表示し、その期間の平均累積報酬を計算します。これにより、195ポイント以上を獲得した場合、問題が解決されたと見なすことができます。
+以前のレッスンから2つの改善が可能です:
-- **最大平均累積結果を計算する**: `Qmax`を計算し、その結果に対応するQ-テーブルを保存します。トレーニングを実行すると、平均累積結果が時々低下し始めることに気付くでしょう。この場合、状況を悪化させる値でQ-テーブルの既に学習済みの値を「破壊」する可能性があります。
+- 累積報酬の平均を計算し、複数のシミュレーションの間隔ごとに進捗を5000イテレーションごとに出力します。この期間の累積報酬の平均を出します。これにより195ポイント以上が得られれば問題解決と考えられます。
+
+- 最大平均累積結果 `Qmax` を計算し、その結果に対応するQテーブルを保存します。学習中に平均値が下がり始めることがありますが、最高モデルの値を保持しておきたいからです。
-1. 各シミュレーションで累積報酬を`rewards`ベクトルに収集し、後でプロットします。(コードブロック11)
+1. シミュレーションごとの累積報酬を `rewards` ベクターに集め、後でプロットします。(コードブロック11)
```python
def probs(v,eps=1e-4):
@@ -214,15 +234,15 @@ Q-Learningでは、各状態で何をすべきかを定義するQ-テーブル
obs = env.reset()
done = False
cum_reward=0
- # == do the simulation ==
+ # == シミュレーションを行う ==
while not done:
s = discretize(obs)
if random.random() Qmax:
@@ -240,25 +260,25 @@ Q-Learningでは、各状態で何をすべきかを定義するQ-テーブル
cum_rewards=[]
```
-これらの結果から以下のことがわかります:
+これら結果から得られること:
-- **目標に近い**: 100回以上の連続したシミュレーションで195の累積報酬を達成する目標に非常に近づいているか、実際に達成している可能性があります。たとえ小さい数値を得たとしても、5000回の実行で平均化しているため、正式な基準では100回の実行のみが必要です。
+- 目標に近づいている。連続100回以上の試行で195の累積報酬を達成しつつあるか、既に達成している可能性もあります。小さい値もありえますが、5000試行に対する平均なので、公的な基準の100回の意味はまだ完全には反映されていません。
+
+- 報酬が下がり始めることも。報酬が下がることは、既に学習したQテーブルの値を悪化させる値で上書きしてしまっている可能性を示します。
-- **報酬が低下し始める**: 時々報酬が低下し始めることがあります。これは、状況を悪化させる値でQ-テーブルの既に学習済みの値を「破壊」する可能性があることを意味します。
+この変化は学習の進行をグラフにするとより明確に分かります。
-この観察は、トレーニングの進捗をプロットするとより明確に見えます。
+## 学習進行のグラフ化
-## トレーニング進捗のプロット
-
-トレーニング中に、各イテレーションで累積報酬値を`rewards`ベクトルに収集しました。以下は、イテレーション番号に対してプロットした結果です:
+学習中、各イテレーションで累積報酬を `rewards` ベクターに記録しました。イテレーション番号に対してプロットするとこうなります:
```python
plt.plot(rewards)
```
-
+
-このグラフからは何も判断できません。これは、確率的なトレーニングプロセスの性質上、トレーニングセッションの長さが大きく異なるためです。このグラフをより理解しやすくするために、例えば100回の実験にわたって**移動平均**を計算します。これを`np.convolve`を使用して便利に行うことができます。(コードブロック12)
+このグラフからは何も読み取れません。学習の確率的な性質により学習セッションの長さが大きく変動するためです。そこで実験を連続100回分の移動平均をとると意味がわかりやすくなります。これは `np.convolve` を使うと便利です:(コードブロック12)
```python
def running_average(x,window):
@@ -267,21 +287,24 @@ def running_average(x,window):
plt.plot(running_average(rewards,100))
```
-
+
+
+## ハイパーパラメータの変化
+
+学習を安定させるためには、訓練中にハイパーパラメータを調整すると良いです。特に:
+
+- 学習率 `alpha` は初期に1に近い値を与え、その後徐々に減らしていきます。時間と共にQテーブル内には良い確率値が定まり、微調整をするべきであり、新しい値で完全に上書きすべきではありません。
-## ハイパーパラメータの調整
+- イプシロンを増加させる。初期は低い値で、徐々に1に近づけていくことで探索を減らし活用を増やすのが理にかなっています。
-学習をより安定させるために、トレーニング中にいくつかのハイパーパラメータを調整することが理にかなっています。特に:
+> **課題1**: ハイパーパラメータをいじって、より高い累積報酬を目指そう。195を超えられますか?
-- **学習率**`alpha`については、1に近い値から始め、その後パラメータを徐々に減少させることができます。時間が経つにつれて、Q-テーブルに良い確率値が得られるようになり、それらを完全に上書きするのではなく、わずかに調整するべきです。
-- **epsilonを増加させる**: `epsilon`を徐々に増加させ、探索を減らし、活用を増やすことができます。低い値の`epsilon`から始め、ほぼ1に近づけるのが理にかなっているでしょう。
-> **タスク 1**: ハイパーパラメータの値を調整して、より高い累積報酬を得られるか試してみましょう。195を超えていますか?
-> **タスク 2**: 問題を正式に解決するには、100回連続の実行で平均報酬195を達成する必要があります。トレーニング中にこれを測定し、問題を正式に解決したことを確認してください!
+> **タスク 2**: 問題を正式に解決するには、100回連続の実行で195の平均報酬を得る必要があります。トレーニング中にこれを測定し、問題が正式に解決されたことを確認してください!
-## 結果を実際に確認する
+## 結果を実際に見る
-トレーニングされたモデルがどのように動作するかを実際に見るのは興味深いでしょう。同じ行動選択戦略をトレーニング中と同様に使用し、Q-Tableの確率分布に従ってサンプリングしてシミュレーションを実行してみましょう: (コードブロック 13)
+トレーニングされたモデルがどのように動作するかを実際に見るのは興味深いでしょう。シミュレーションを実行し、トレーニング中と同じ行動選択戦略、つまりQテーブルの確率分布に従ってサンプリングする方法を試してみましょう:(コードブロック 13)
```python
obs = env.reset()
@@ -295,30 +318,32 @@ while not done:
env.close()
```
-以下のような結果が表示されるはずです:
+このような結果が得られるはずです:
-
+
---
## 🚀チャレンジ
-> **タスク 3**: ここでは、Q-Tableの最終版を使用していましたが、これが最良のものとは限りません。最もパフォーマンスの良いQ-Tableを`Qbest`変数に保存していることを思い出してください!`Qbest`を`Q`にコピーして、最良のQ-Tableを使用した場合の違いを確認してみてください。
+> **タスク 3**: ここでは最終版のQテーブルを使用しましたが、それが最良とは限りません。最も成績の良いQテーブルを `Qbest` 変数に保存していることを覚えておいてください! `Qbest` を `Q` にコピーして同じ例を試し、違いが分かるか確かめてみましょう。
-> **タスク 4**: ここでは各ステップで最良の行動を選択するのではなく、対応する確率分布に基づいてサンプリングしていました。Q-Tableの値が最も高い行動を常に選択する方が理にかなっているでしょうか?これは`np.argmax`関数を使用して、Q-Table値が最も高い行動番号を見つけることで実現できます。この戦略を実装して、バランスが改善されるかどうか確認してください。
+> **タスク 4**: ここでは各ステップで最良の行動を選択していませんでしたが、対応する確率分布でサンプリングしていました。常にQテーブルの値が最も高い最良の行動だけを選ぶ方が理にかなっているでしょうか? `np.argmax` 関数を使って最も高いQテーブルの値に対応する行動番号を見つけることでこれを実装できます。この戦略を実装し、バランスの改善が見られるか試してみてください。
-## [講義後のクイズ](https://ff-quizzes.netlify.app/en/ml/)
+## [講義後クイズ](https://ff-quizzes.netlify.app/en/ml/)
## 課題
-[マウンテンカーをトレーニングする](assignment.md)
+[マウンテンカーを訓練する](assignment.md)
## 結論
-私たちは、ゲームの望ましい状態を定義する報酬関数を提供し、探索空間を賢く探索する機会を与えることで、エージェントをトレーニングして良い結果を達成する方法を学びました。Q-Learningアルゴリズムを離散環境と連続環境のケースで適用し、離散的な行動を使用して成功を収めました。
+我々は、望ましいゲーム状態を定義する報酬関数を提供し、探索空間を知的に探査する機会を与えるだけで、エージェントをうまく訓練する方法を学びました。Qラーニングアルゴリズムを離散および連続環境のケースに成功裏に適用しましたが、行動は離散的でした。
-行動状態も連続的であり、観測空間がより複雑である場合、例えばAtariゲーム画面の画像のような状況を研究することも重要です。そのような問題では、良い結果を達成するためにニューラルネットワークのようなより強力な機械学習技術を使用する必要があることがよくあります。これらのより高度なトピックは、今後のより高度なAIコースのテーマとなります。
+行動状態も連続的で、観測空間がAtariゲーム画面の画像のようにずっと複雑な状況も学ぶことが重要です。そのような問題では、良好な結果を得るためにニューラルネットワークのようなより強力な機械学習技術を使う必要があることが多いです。これらのより高度なトピックは、今後のより高度なAIコースの主題です。
---
-**免責事項**:
-この文書は、AI翻訳サービス [Co-op Translator](https://github.com/Azure/co-op-translator) を使用して翻訳されています。正確性を期すよう努めておりますが、自動翻訳には誤りや不正確な表現が含まれる可能性があります。元の言語で記載された原文を公式な情報源としてご参照ください。重要な情報については、専門の人間による翻訳を推奨します。本翻訳の利用に起因する誤解や誤認について、当社は一切の責任を負いません。
\ No newline at end of file
+
+**免責事項**:
+本書類は AI 翻訳サービス [Co-op Translator](https://github.com/Azure/co-op-translator) を使用して翻訳されています。正確性を期していますが、自動翻訳には誤りや不正確な部分が含まれる可能性があることをご承知おきください。原文の原語版が正式な情報源とみなされるべきです。重要な情報については、専門の人間による翻訳を推奨します。本翻訳の利用により生じたいかなる誤解や解釈違いについても、当方は責任を負いかねます。
+
\ No newline at end of file
diff --git a/translations/km/.co-op-translator.json b/translations/km/.co-op-translator.json
index c45090b0c..b67e35f4f 100644
--- a/translations/km/.co-op-translator.json
+++ b/translations/km/.co-op-translator.json
@@ -24,8 +24,8 @@
"language_code": "km"
},
"1-Introduction/3-fairness/README.md": {
- "original_hash": "9a6b702d1437c0467e3c5c28d763dac2",
- "translation_date": "2026-04-06T18:18:39+00:00",
+ "original_hash": "0f00d72169a0d37eecfd16d71e01700a",
+ "translation_date": "2026-07-14T01:04:36+00:00",
"source_file": "1-Introduction/3-fairness/README.md",
"language_code": "km"
},
@@ -54,8 +54,8 @@
"language_code": "km"
},
"2-Regression/1-Tools/README.md": {
- "original_hash": "fa81d226c71d5af7a2cade31c1c92b88",
- "translation_date": "2026-04-06T18:23:23+00:00",
+ "original_hash": "0b8635427b582d03ea4ab7089b93e505",
+ "translation_date": "2026-07-14T01:01:56+00:00",
"source_file": "2-Regression/1-Tools/README.md",
"language_code": "km"
},
@@ -84,8 +84,8 @@
"language_code": "km"
},
"2-Regression/2-Data/README.md": {
- "original_hash": "7c077988328ebfe33b24d07945f16eca",
- "translation_date": "2026-04-06T18:24:53+00:00",
+ "original_hash": "a58b2c4d16c6b122643391745ac15af6",
+ "translation_date": "2026-07-14T01:03:12+00:00",
"source_file": "2-Regression/2-Data/README.md",
"language_code": "km"
},
@@ -114,8 +114,8 @@
"language_code": "km"
},
"2-Regression/2-Data/solution/notebook.ipynb": {
- "original_hash": "95726f0b8283628d5356a4f8eb8b4b76",
- "translation_date": "2026-04-06T19:12:07+00:00",
+ "original_hash": "96b95f8cf473481f2f371de8156f1571",
+ "translation_date": "2026-07-14T00:56:38+00:00",
"source_file": "2-Regression/2-Data/solution/notebook.ipynb",
"language_code": "km"
},
@@ -845,6 +845,19 @@
"source_file": "TROUBLESHOOTING.md",
"language_code": "km"
},
+ "__translation_failures__": {
+ "sketchnotes/LICENSE.md": {
+ "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f",
+ "source_file": "sketchnotes/LICENSE.md",
+ "language_code": "km",
+ "failure_date": "2026-07-14T01:00:53+00:00",
+ "status": "failed",
+ "error_type": "TranslationIncompleteError",
+ "error_message": "Markdown translation remained incomplete for chunk 1.1.1 of 'LICENSE.md', and the chunk could not be split further.",
+ "translator_version": "0.20.0",
+ "failure_policy_version": 1
+ }
+ },
"docs/_sidebar.md": {
"original_hash": "68dd06c685f6ce840e0acfa313352e7c",
"translation_date": "2026-04-06T18:07:09+00:00",
diff --git a/translations/km/1-Introduction/3-fairness/README.md b/translations/km/1-Introduction/3-fairness/README.md
index f7ce59e9d..1a5857203 100644
--- a/translations/km/1-Introduction/3-fairness/README.md
+++ b/translations/km/1-Introduction/3-fairness/README.md
@@ -1,163 +1,167 @@
-# ការបង្កើតដំណោះស្រាយម៉ាស៊ីនរៀនជាមួយ AI ដែលមានការទទួលខុសត្រូវ
-
-
-> សកេតណូតដោយ [Tomomi Imura](https://www.twitter.com/girlie_mac)
-
-## [គន្លឹះសំណួរមុនពេលសិក្សា](https://ff-quizzes.netlify.app/en/ml/)
+# ការសាងសង់ដំណោះស្រាយរបស់ការរៀនម៉ាស៊ីនជាមួយ AI ដែលមានការទទួលខុសត្រូវ
+
+
+> គំនូរសង្ខេបដោយ [Tomomi Imura](https://www.twitter.com/girlie_mac)
-## ជំហានបើក
+## [សំនួរជំនួញមុនមុខវិជ្ជា](https://ff-quizzes.netlify.app/en/ml/)
+
+## ការណែនាំ
-ក្នុងមេរៀននេះ អ្នកនឹងចាប់ផ្តើមស្វែងរកពីរបៀបដែលម៉ាស៊ីនរៀនអាចវាយបង្វិលនិងមានឥទ្ធិពលលើជីវិតប្រចាំថ្ងៃរបស់យើង។ ទាំងឥឡូវនេះ ប្រព័ន្ធនិងម៉ូដែលជាប់ពាក់ព័ន្ធក្នុងភារកិច្ចសម្រេចចិត្តប្រចាំថ្ងៃដូចជា ការបញ្ជាក់ជំងឺសុខាភិបាល ការអនុម័តឥណទាន ឬការរកឃើញការជ្រុលបំពាន។ ដូច្នេះ វាពិតជាសំខាន់ណាស់ដែលម៉ូដែលទាំងនេះធ្វើការល្អដើម្បីផ្តល់លទ្ធផលដែលអាចទុកចិត្តបាន។ ដូចជាកម្មវិធីទូទៅណាមួយប្រព័ន្ធ AI អាចខកចិត្តនឹងការរំពឹងទុក ឬមានលទ្ធផលដែលមិនចង់បាន។ នេះហើយហ្នឹងជាហេតុផលដែលយើងត្រូវតែបង្រៀនខ្លួនឯងអំពីរបៀបយល់ និងពន្យល់អំពីអាកប្បករណ៍នៃម៉ូដែល AI។
+នៅក្នុងវគ្គសិក្សានេះ អ្នកនឹងចាប់ផ្តើមរកឃើញថា តើការរៀនម៉ាស៊ីនអាចមានឥទ្ធិពល និងកំពុងប៉ះពាល់ដល់ជីវិតប្រចាំថ្ងៃរបស់យើងយ៉ាងដូចម្តេច។ ទោះបីជាឥលូវនេះ ការតំឡើងប្រព័ន្ធ និងគំរូបានស្ថិតក្នុងការអនុវត្តន៍ការផ្តល់សេចក្ដីសម្រេចក្នុងជីវិតប្រចាំថ្ងៃ ដូចជាការធ្វើវេជ្ជបញ្ជា ការអនុម័តបំណុល ឬការរកឃើញការលួចលើស។ ដូច្នេះ វាសំខាន់ណាស់ដែលគំរូទាំងនេះធ្វើការល្អដើម្បីផ្តល់លទ្ធផលដែលអាចទុកចិត្តបាន។ ដូចជាមុខងារសូម្បីតែកម្មវិធីទូទៅណាមួយ ប្រព័ន្ធ AI អាចនឹងខកខានរំពឹងទុក ឬមានលទ្ធផលមិនល្អ។ នេះហើយជាហេតុផលដែលវាសំខាន់ក្នុងការរួមរៀនយល់ និងពន្យល់អំពីអាកប្បកិរិយារបស់គំរូ AI។
-សន្ដិភាពនូវអ្វីដែលអាចកើតមានឡើងពេលដែលទិន្នន័យដែលអ្នកកំពុងប្រើសម្រាប់បង្កើតម៉ូដែលទាំងនេះខ្វះក្រុមហ៊ុនជនជាតិខុសៗគ្នា ដូចជា ជាតិកុលលក្ខណៈ ភេទ ទស្សនវិស័យនយោកយោបាយ សាសនា ឬតំណាងនយោបាយដែលមានការលើសលប់។ តើវាយយកម៉ូដែលបានបង្ហាញលទ្ធផលផ្សេងទេវាសម្រាប់ខ្លឹមសារគណៈជនជាតិកំណត់មួយ? តើផលប៉ះពាល់សម្រាប់កម្មវិធីនេះមានអ្វីខ្លះ? លើសពីនេះ តើពេលម៉ូដែលមានលទ្ធផលអាក្រក់ និងបង្កមិត្តវិបត្តិក្នុងមនុស្ស តើនរណាជាទីតាំងទទួលខុសត្រូវចំពោះអាកប្បករិតនៃប្រព័ន្ធ AI? នេះជាសំណួរមួយចំនួនដែលយើងនឹងស្វែងរកក្នុងមេរៀននេះ។
+សូមនឹកស្រមៃអ្វីអាចកើតឡើងពេលដែលទិន្នន័យដែលអ្នកប្រើក្នុងការសាងសង់គំរូទាំងនេះខ្វះខាតពូជភាគីមួយចំនួន ដូចជាជាតិសាសន៍ ភេទ មតិយោបល់នយោបាយ សាសនា ឬតំណាងមិនសមស្របចំពោះពូជភាគីនោះ។ តើមានអ្វីកើតឡើងនៅពេលលទ្ធផលគំរូត្រូវបានបកស្រាយក្នុងទិសដៅគាំទ្រដល់ពូជភាគីមួយចំនួន? ប្រសិនបើគំរូមានលទ្ធផលអវិជ្ជមាន ហើយបង្ករខូចខាតដល់មនុស្ស តើនរណាជាទទួលខុសត្រូវចំពោះអាកប្បកិរិយារបស់ប្រព័ន្ធ AI? នេះគឺជាសំណួរមួយចំនួនដែលយើងនឹងស្រាវជ្រាវក្នុងវគ្គសិក្សានេះ។
-ក្នុងមេរៀននេះ អ្នកនឹង៖
+នៅក្នុងមេរៀននេះ អ្នកនឹង:
-- បង្កើតការយល់ដឹងអំពីសារៈសំខាន់នៃភាពយុត្តិធម៌ក្នុងម៉ាស៊ីនរៀន និងគ្រោះថ្នាក់ដែលពាក់ព័ន្ធនឹងភាពយុត្តិធម៌។
-- មកស្គាល់នឹងការអនុវត្តន៍នៃការស្វែងរកចំពោះភាពខុសគ្នានិងលក្ខណៈពិសេសដើម្បីធានានូវភាពទុកចិត្ត និងសុវត្ថិភាព។
-- មានការយល់ដឹងពីតម្រូវការដើម្បីអោយគ្រប់គ្នាមានសិទ្ធិ និងរចនាប្រព័ន្ធរួមមួយ។
-- ស្វែងរកពីសារៈសំខាន់នៃការការពារឯកជនភាព និងសុវត្ថិភាពទិន្នន័យ និងមនុស្ស។
-- ឃើញសារៈសំខាន់នៃការយកវិធីជាកញ្ចក់ដើម្បីពន្យល់អាកប្បករិតនៃម៉ូដែល AI។
-- មានការត្រួតពិនិត្យចំពោះតួនាទីនៃការទទួលខុសត្រូវដើម្បីកសាងក្តីទុកចិត្តនៅក្នុងប្រព័ន្ធ AI។
+- ឡើងកម្រិតការយល់ដឹងអំពីសារៈសំខាន់នៃភាពត្រឹមត្រូវក្នុងការរៀនម៉ាស៊ីន និងការខូចខាតដែលទាក់ទងនឹងភាពត្រឹមត្រូវ។
+- ធ្លាប់ទទួលស្គាល់ពីការអនុវត្តន៍ស្វែងរកអត្តឃាត និងស្ថានភាពអវិជ្ជមាន ដើម្បីធានាសុវត្ថិភាព និងភាពជឿជាក់។
+- យល់ដឹងពីចាំបាច់ក្នុងការចែកអំណាចជូនមនុស្សគ្រប់រូប ដោយរចនាប្រព័ន្ធបញ្ចូលគ្នា។
+- ស្វែងយល់ពីសារៈសំខាន់នៃការការពារភាពឯកជន និងសុវត្ថិភាពនៃទិន្នន័យ និងមនុស្ស។
+- មើលថា មានសារៈសំខាន់ក្នុងការអនុវត្តវិធីសាស្រ្តកញ្ចក់បំបែក ដើម្បីពន្យល់អាកប្បកិរិយារបស់គំរូ AI។
+- ប្រុងប្រយ័ត្នពីភាពទទួលខុសត្រូវ ដែលមានសារៈសំខាន់សម្រាប់ការបង្កើតទំនុកចិត្តក្នុងប្រព័ន្ធ AI។
-## លក្ខខណ្ឌមុនពេលចូលរួម
+## លក្ខខណ្ឌមុន
-ជាលក្ខខណ្ឌមុនសូមចូលរួមវគ្គ "គោលនយោបាយ AI ដែលមានការទទួលខុសត្រូវ" និងមើលវីដេអូខាងក្រោម៖
+ជាលក្ខខណ្ឌមុន សូមអ្នកចូលរួមយល់ពីនីតិវិធី "គោលការណ៍ AI ដែលមានការទទួលខុសត្រូវ" ហើយមើលវីដេអូខាងក្រោមស្តីពីប្រធានបទនេះ។
-ស្វែងរកព័ត៌មានបន្ថែមអំពី AI ដែលមានការទទួលខុសត្រូវតាមរយៈការតាមដាន [Learning Path](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)
+រៀនបន្ថែមអំពី AI ដែលមានការទទួលខុសត្រូវ ដោយតាមដាន [Learning Path](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)
-[](https://youtu.be/dnC8-uUZXSc "Microsoft's Approach to Responsible AI")
+[](https://youtu.be/dnC8-uUZXSc "វិធីសាស្រ្តរបស់ Microsoft ទៅ AI ដែលមានការទទួលខុសត្រូវ")
-> 🎥 ចុចរូបភាពខាងលើសម្រាប់វីដេអូ៖ របៀប Microsoft ក្នុងការទទួលខុសត្រូវ AI
+> 🎥 ចុចរូបភាពខាងលើសម្រាប់វីដេអូ: វិធីសាស្រ្តរបស់ Microsoft ទៅ AI ដែលមានការទទួលខុសត្រូវ
-## ភាពយុត្តិធម៌
+## ភាពត្រឹមត្រូវ
-ប្រព័ន្ធ AI គួរតែប្រើប្រាស់យ៉ាងយុត្តិធម៌ និងជៀសវាងការប៉ះពាល់ដល់ក្រុមមនុស្សដូចគ្នានៅលើបែបផែនផ្សេងៗ។ ឧទាហរណ៍ នៅពេលប្រព័ន្ធ AI ផ្តល់យោបល់កំពុងការព្យាបាលផ្នែកសុខាភិបាល ការដាក់ពាក្យខ្ចីប្រាក់ ឬការជ្រើសរើសការងារ គួរតែផ្តល់ការផ្តល់យោបល់ដូចគ្នារបស់មនុស្សដែលមានរោគសញ្ញាស្រដៀងគ្នា ស្ថានភាពហិរញ្ញវត្ថុស្របគ្នា ឬគុណវប្បកម្មបុគ្គលរបស់ពួកគេ។ មនុស្សម្នាក់ទាំងអស់កាន់តាមដានលទ្ធផលនៃការប្រគល់វេនដែលមានឥទ្ធិពលលើសេចក្តីសម្រេចចិត្តនិងសកម្មភាពរបស់យើង។ ភាពលំអៀងនេះអាចមើលឃើញបានក្នុងទិន្នន័យដែលយើងប្រើសម្រាប់បណ្តុះបណ្តាលប្រព័ន្ធ AI។ ការតំលើងបែបនេះជាដំណើរទាក់ទងដែលអាចកើតឡើងដោយមិនចង់បាន។ វាពិបាកក្នុងការយល់ច្បាស់នៅពេលអ្នកជំពាក់ភាពលំអៀងក្នុងទិន្នន័យ។
+ប្រព័ន្ធ AI គួរតែដោះស្រាយមនុស្សគ្រប់រូបយ៉ាងត្រឹមត្រូវ និងជៀសវាងការប៉ះពាល់ដល់ក្រុមមនុស្សដូចគ្នាទៅក្នុងវិធីផ្សេងៗគ្នា។ ឧទាហរណ៍ ពេលប្រព័ន្ធ AI ផ្តល់នូវការណែនាំអំពីការព្យាបាលវេជ្ជសាស្រ្ត ការដាក់ពាក្យខ្ចីប្រាក់ ឬការងារ នេះគួរតែផ្តល់យោបល់ដូចគ្នា ទៅមនុស្សគ្រប់រូបដែលមានរលក្ខណៈពិបាក ស្ថានភាពហិរញ្ញវត្ថុ ឬគុណវុឌ្ឍិវិជ្ជាជីវៈដូចគ្នា។ មនុស្សម្នាក់ៗជាអ្នកមានអត្រាប្រជាជនដែលបានបណ្តាលឲ្យកើតមានការរំខាន ដល់ការសម្រេចចិត្ត និងសកម្មភាពរបស់ពួកគេ។ ការរំខានទាំងនេះអាចត្រូវបានចង្អុលបង្ហាញក្នុងទិន្នន័យដែលយើងប្រើសម្រាប់បណ្តុះបណ្តាលប្រព័ន្ធ AI ។ ការបំលែងនេះអាចកើតឡើងដោយមិនចៃដន្យ។ វាក៏ពិបាកក្នុងការយល់បានយ៉ាងយកចិត្តទុកដាក់ថា ពេលណាអ្នកបានបញ្ចូលអត្រាប្រជាជនក្នុងទិន្នន័យ។
-**“ភាពមិនយុត្តិធម៌”** មានន័យថាប្រសិនបើមានផលប៉ះពាល់អវិជ្ជមាន ឬ “គ្រោះថ្នាក់” សម្រាប់ក្រុមអ្នកមួយ ដូចជាការកំណត់ជាតិកុលភេទ អាយុ ឬស្ថានភាពអ្នកពិការភាព។ គ្រោះថ្នាក់ទាក់ទងនឹងភាពយុត្តិធម៌អាចចែងបានជា៖
+**“ភាពមិនត្រឹមត្រូវ”** គ្របដណ្តប់លើផលប៉ះពាល់អវិជ្ជមាន ឬ “ការខូចខាត” របស់ក្រុមមនុស្ស ដូចជាក្រុមដែលបានកំណត់ដោយជាតិភេទ អាយុ ឬស្ថានភាពពិការភាព។ ការខូចខាតដែលទាក់ទងនឹងភាពត្រឹមត្រូវអាចចែកចេញជា៖
-- **ការចែកចាយ** ជាដើមប្រភេទភេទ ឬជាតិកុលណាមួយត្រូវបានចូលចិត្តលើសពីមួយផ្សេងទៀត។
-- **គុណភាពសេវាកម្ម** ប្រសិនបើអ្នកបណ្តុះទិន្នន័យសម្រាប់ស្ថានการณ์មួយដែលមិនស្មុគស្មាញពេញលេញ នេះនាំឲ្យមានសេវាកម្មដែលឆ្លុះបញ្ចាំងមិនល្អ។ ឧទាហរណ៍ ម៉ាស៊ីនចាក់សាប៊ូដៃមួយមិនអាចដឹងបានពីមនុស្សដែលមានស្បែកស្រអាប់។ [យោង](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
-- **ការរិះគន់មិនយុត្តិធម៌** ការរិះគន់មិនយុត្តិធម៌ និងបង្វែរ ឧទាហរណ៍ បច្ចេកវិទ្យាការតំឡើងស្លាករូបភាពមួយបានចាក់ស្លាករូបភាពមនុស្សស្បែកស្រអាប់ជាក្រិកកណ្តោល។
-- **ការចំណេញឬការខ្វះតំណាង** គំនិតថាក្រុមណាមួយមិនបានមើលឃើញក្នុងវិជ្ជាជីវៈជាក់លាក់ណាមួយ ហើយសេវា ឬមុខងារណាមួយណាដែលបន្តផ្សព្វផ្សាយការខ្វះតំណាងនោះក៏បន្ថែមគ្រោះថ្នាក់។
-- **ស្ទេរ឵អាប់** ភ្ជាប់ក្រុមណាមួយជាមួយលក្ខណៈដែលបានកំណត់មិនជារួសរាយ។ ឧទាហរណ៍ ប្រព័ន្ធបកប្រែភាសារវាងភាសាអង់គ្លេសនិងទួរគីជាច្រើនបង្ហាញភាពមិនត្រឹមត្រូវដោយពាក្យដែលភ្ជាប់ទៅនិងភេទជាមួយនឹងស្ទេរព្រីប។
+- **ការចែកចាយ** ប្រសិនបើភេទ ឬជាតិសាសន៍មួយត្រូវបានលើកទឹកចិត្តយ៉ាងបំផុតជាងមួយផ្សេងទៀត។
+- **គុណភាពសេវាកម្ម** ប្រសិនបើអ្នកបណ្តុះបណ្តាលទិន្នន័យសម្រាប់ស្ថានភាពជាក់លាក់មួយ ប៉ុន្តែនៅពេលពិតវាមានភាពស្មុគស្មាញច្រើន វានាំឲ្យសេវាកម្មមានគុណភាពទាប។ ឧទាហរណ៍ ប្រដាប់ចាក់សាប៊ូដៃមួយដែលមិនអាចសម្គាល់មនុស្សដែលមានស្បែកខ្មៅបាន។ [ហេតុផល](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
+- **ការខិតខំដេទ** បង្ហាញជាអាក្រក់ និងដាក់ស្លាកអំពីអ្វីមួយ ឬនរណាមួយដោយមិនត្រឹមត្រូវ។ ឧទាហរណ៍ បច្ចេកវិទ្យាស្លាកបង្ហាញរូបភាពបានដាក់ស្លាករូបភាពនៃមនុស្សស្បែកងងឹតដូចជាគ្រូហុច។
+- **ការបង្ហាញពុម្ពលើឬក្រោម** គំនិតគឺថាក្រុមមួយមិនត្រូវបានឃើញក្នុងវិជ្ជាជីវៈមួយ និងសេវាកម្ម ឬមុខងារណាមួយដែលបន្តលើកតម្កើងករណីនេះកំពុងបង្កើតការខូចខាត។
+- **ការរំលេចពុម្ពគំរូ** ភ្ជាប់ក្រុមមួយជាមួយលក្ខណៈដែលបានកំណត់ជាមុន។ ឧទាហរណ៍ ប្រព័ន្ធបកប្រែភាសារវាងភាសាអង់គ្លេស និងភាសាទួរគីអាចមានការខុសប្លែកដោយសារពាក្យដែលមានការភ្ជាប់ពុម្ពលើភេទ។

> បកប្រែទៅភាសាទួរគី
-
-> បកប្រែត្រឡប់ទៅភាសាអង់គ្លេស
+
+> បកប្រែថយឡើងវិញទៅភាសាអង់គ្លេស
-ពេលរចនានិងសាកល្បងប្រព័ន្ធ AI យើងត្រូវធានាថា AI មានភាពយុត្តិធម៌ និងមិនត្រូវបានកំណត់ដើម្បីធ្វើការសម្រេចចិត្តមានការប្រហាក់ប្រហែល ឬការរើសអើងដែលមនុស្សក៏ត្រូវចាត់ទុកថាមិនត្រឹមត្រូវដែរ។ ការធានាអោយមានភាពយុត្តិធម៌ក្នុង AI និងម៉ាស៊ីនរៀននៅតែជាបញ្ហាសង្គមបច្ចេកទេសដ៏ស្មុគស្មាញ។
+នៅពេលរចនា និងសាកល្បងប្រព័ន្ធ AI យើងត្រូវធានាថា AI ត្រូវត្រូវបានបំពាក់ឲ្យមានភាពត្រឹមត្រូវ ហើយមិនទទួលប្រាក់ចំណេញដោយការអនុវត្តន៍ព្រហ្មទណ្ឌ ឬការលើកលែងទេ ដែលមនុស្សក៏ត្រូវបានហាមឃាត់ផងដែរ។ ការធានាថាភាពត្រឹមត្រូវក្នុង AI និងការរៀនម៉ាស៊ីននៅតែមួយជាបញ្ហាសង្គមបច្ចេកវិទ្យាដែលស្មុគស្មាញ។
-### ភាពទុកចិត្តនិងសុវត្ថិភាព
+### ភាពជឿជាក់ និងសុវត្ថិភាព
-ដើម្បីបង្កើតការទុកចិត្ត ប្រព័ន្ធ AI ត្រូវតែទុកចិត្តបាន, មានសុវត្ថិភាព និងមានស្ថិរភាពក្រោមលក្ខខណ្ឌធម្មតានិងមិនរំពឹងទុក។ វាពិតជាសំខាន់ក្នុងការយល់ពីរបៀបប្រព័ន្ធ AI នឹងមានអាកប្បករណ៍នៅក្នុងស្ថានភាពនានា ជាពិសេសនៅពេលវាជា outliers។ នៅពេលបង្កើតដំណោះស្រាយ AI ត្រូវផ្តោតខ្លាំងលើរបៀបដោះស្រាយស្ថានភាពផ្សេងៗដែលអាចមកជួបទៅនឹងដំណោះស្រាយ AI។ ឧទាហរណ៍ ឡានបើកប្រាណថ្មីគួរតែនាំខ្ពស់ការគ្រប់គ្រងសុវត្ថិភាពមនុស្ស។ ដូច្នេះ AI ដែលបើកឡានត្រូវតែពិចារណាស្ថានភាពជាច្រើនអាចកើតមានដូចជា ពេលกลางคืน ភ្លៀង បាញ់ស្រអប់ ក្មេងចូលរថយន្ត សត្វចិញ្ចឹម ការសាងសង់ផ្លូវ។ ប្រព័ន្ធ AI អាចគ្រប់គ្រងស្ថានភាពទាំងអស់យ៉ាងត្រឹមត្រូវនិងមានសុវត្ថិភាព បង្ហាញពីកម្រិតការព្យាបាលរបស់អ្នកវិទ្យាសាស្រ្តទិន្នន័យ ឬអ្នកអភិវឌ្ឍ AI មុនពេលរចនានិងសាកល្បងប្រព័ន្ធ។
+ដើម្បីកសាងទំនុកចិត្ត ប្រព័ន្ធ AI ត្រូវត្រូវបានមានភាពជឿជាក់ សុវត្ថិភាព និងឥរិយាបថថេរអ្នកនៅក្នុងលក្ខខណ្ឌធម្មតា និងលក្ខខណ្ឌមិនឆ្ងាញ់។ វាសំខាន់ក្នុងការដឹងថា ប្រព័ន្ធ AI នឹងមានឥរិយាបថយ៉ាងដូចម្តេច នៅក្នុងស្ថានភាពផ្សេងៗ ជាពិសេសពេលដែលពួកវាជាអត្តឃាត។ នៅពេលសាងសង់ដំណោះស្រាយ AI គួរត្រូវមានការផ្ដោតខ្លាំងលើរបៀបដោះស្រាយលក្ខខណ្ឌជាច្រើនដែលដំណោះស្រាយ AI នឹងប្រឈមមុខ។ ឧទាហរណ៍ រថយន្តបើកដោយខ្លួនឯងត្រូវដាក់សុវត្ថិភាពមនុស្សជាអាទិភាពខ្ពស់។ ដូច្នេះ AI ដែលបើកបររថយន្ត ត្រូវរៀបចំឲ្យពិចារណាលើលក្ខខណ្ឌដែលអាចនឹងកើតឡើង ដូចជាពេលយប់ ព្យុះខ្យល់ ឬព្យុះករណី កុមាររត់ឆ្លងផ្លូវ សត្វចិញ្ចឹម ការសាងសង់ផ្លូវ ល។ វិធីដែលប្រព័ន្ធ AI អាចដោះស្រាយបញ្ហានានាទាំងនេះយ៉ាងគ្រឹះត្រូវ និងសុវត្ថិភាព បង្ហាញពីកំរិតនៃការរំពឹងទុកដែលអ្នកវិទ្យាសាស្រ្តទិន្នន័យ ឬអ្នកអភិវឌ្ឍ AI បានគិតពេលរចនាឬសាកល្បងប្រព័ន្ធ។
> [🎥 ចុចទីនេះសម្រាប់វីដេអូ: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
-### ការរួមបញ្ចូល
+### ភាពរួមបញ្ចូល
-ប្រព័ន្ធ AI គួរតែរចនាឡើងដើម្បីពាក់ព័ន្ធ និងផ្តល់អំណាចដល់ទាំងអស់។ នៅពេលរចនា និងអនុវត្តប្រព័ន្ធ AI អ្នកវិទ្យាសាស្រ្តទិន្នន័យ និងអ្នកអភិវឌ្ឍ AI ត្រូវកំណត់និងដោះស្រាយអំពើការកំណត់គោលដៅដែលអាចច្រេីនមនុស្សដោយមិនចង់បាន។ ឧទាហរណ៍ មានមនុស្ស 1 ពាន់លាននាក់ដែលមានជំងឺពិការភាពនៅជុំវិញពិភពលោក។ ជាមួយនឹងការវិវឌ្ឍ AI ពួកគេអាចចូលដំណើរការព័ត៌មាន និងឱកាសជាច្រើនបានងាយស្រួលក្នុងជីវិតប្រចាំថ្ងៃរបស់ពួកគេ។ ដោយដោះស្រាយឧបសគ្គ ទំនិញសម្រាប់ច្នៃប្រឌិតនិងអភិវឌ្ឍផលិតផល AI ដែលមានបទពិសោធន៍ល្អប្រសើរដែលអាចផ្ដល់អត្ថប្រយោជន៍ដល់គ្រប់គ្នា។
+ប្រព័ន្ធ AI គួរត្រូវបានរចនាឲ្យផ្តល់នូវការចូលរួម និងអំណាចដល់មនុស្សគ្រប់រូប។ នៅពេលដែលអ្នកវិទ្យាសាស្រ្តទិន្នន័យ និងអ្នកអភិវឌ្ឍ AI រចនា និងអនុវត្តប្រព័ន្ធទាំងនេះ គេត្រូវកំណត់ និងដោះស្រាយឧបសគ្គដែលអាចលុបចោលមនុស្សមួយចំនួនដោយមិនចៃដន្យ។ ឧទាហរណ៍ មានមនុស្សជាង ១ ពាន់លាននៅជុំវិញពិភពលោកមានជម្ងឺលំបាក។ ជាមួយនឹងការរីកចម្រើននៃ AI ពួកគេអាចចូលដំណើរការព័ត៌មាន និងឱកាសជាច្រើនបានងាយស្រួលយ៉ាងខ្លាំង។ ដោយដោះស្រាយឧបសគ្គនេះវាបង្កើតឱកាសក្នុងការបង្កើត និងអភិវឌ្ឍផលិតផល AI ដែលមានបទពិសោធន៍ល្អប្រសើរដល់មនុស្សគ្រប់រូប។
-> [🎥 ចុចទីនេះសម្រាប់វីដេអូ: ការរួមបញ្ចូលក្នុង AI](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
+> [🎥 ចុចទីនេះសម្រាប់វីដេអូ: ភាពរួមបញ្ចូលក្នុង AI](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
-### សុវត្ថិភាព និងឯកជនភាព
+### សុវត្ថិភាព និងភាពឯកជន
-ប្រព័ន្ធ AI គួរតែមានសុវត្ថិភាព និងគោរពឯកជនភាពរបស់មនុស្ស។ មនុស្សមានកម្រិតការទុកចិត្តតិចទៅលើប្រព័ន្ធដែលបង្កការជ្រុលនូវឯកជនភាព ព័ត៌មាន ឬជីវិតរបស់ពួកគេ។ នៅពេលបណ្តុះម៉ូដែលម៉ាស៊ីនរៀន យើងពឹងផ្អែកលើទិន្នន័យដើម្បីផលិតលទ្ធផលល្អបំផុត។ ក្នុងការធ្វើដូចនេះ ប្រភពទិន្នន័យ និងភាពរឹងប៉ឹងគួរត្រូវបានគិតគូរ។ ឧទាហរណ៍ ទិន្នន័យមានប្រភពពីអ្នកប្រើប្រាស់ ឬទិន្នន័យសាធារណៈ? បន្ទាប់មក នៅពេលធ្វើការជាមួយទិន្នន័យ វានិងមានសារៈសំខាន់ក្នុងការអភិវឌ្ឍប្រព័ន្ធ AI ដែលអាចការពារព័ត៌មានសម្ងាត់ និងទប់ស្កាត់ការប្រហារ។ បើយោងតាមការរីកចម្រើនAI ការគោរពឯកជនភាព និងការការពារព័ត៌មានបុគ្គល និងអាជីវកម្មកាន់តែលំបាកនិងសំខាន់។ បញ្ហាអំពីឯកជនភាពនិងសុវត្ថិភាពទិន្នន័យត្រូវការយកចិត្តទុកដាក់យ៉ាងជិតស្និទ្ធសម្រាប់ AI ព្រោះការចូលដំណើរការទិន្នន័យមានសារៈសំខាន់សម្រាប់ប្រព័ន្ធ AI ក្នុងការធ្វើការទំាងអំពីព្យាករណ៍និងសម្រេចចិត្តបានត្រឹមត្រូវ។
+ប្រព័ន្ធ AI គួរតែមានសុវត្ថិភាព និងគោរពភាពឯកជនរបស់មនុស្ស។ មនុស្សមានទំនុកចិត្តតិចជាងក្នុងប្រព័ន្ធដែលបង្កការប្រកាសឲ្យធ្វើការប៉ះពាល់លើភាពឯកជន ព័ត៌មាន ឬជីវិតរបស់ពួកគេ។ នៅពេលបណ្តុះបណ្តាលគំរូរៀនម៉ាស៊ីន យើងពឹងផ្អែកលើទិន្នន័យដើម្បីបង្កើតលទ្ធផលល្អបំផុត។ ដូច្នេះ ប្រភពនៃទិន្នន័យ និងភាពស្មោះត្រង់ត្រូវត្រូវបានគិតទុកជាមុន។ ឧទាហរណ៍ តើទិន្នន័យមានប្រភពពីអ្នកប្រើប្រាស់ ឬមាននៅសាធារណៈ? បន្ទាប់មក នៅពេលធ្វើការជាមួយទិន្នន័យ វាសំខាន់ក្នុងការអភិវឌ្ឍប្រព័ន្ធ AI ដែលអាចការពារព័ត៌មានលម្អិត និងធន់ទ្រាំការវាយប្រហារ។ នៅពេល AI កាន់តែមានប្រជាប្រិយភាព ការការពារភាពឯកជន និងការការពារព័ត៌មានបុគ្គលនិងអាជីវកម្មសំខាន់ៗកាន់តែមានសារៈសំខាន់ និងស្មុគស្មាញ។ បញ្ហាភាពឯកជន និងសុវត្ថិភាពទិន្នន័យទាមទារការផ្តោតអារម្មណ៍ជាពិសេសសម្រាប់ AI ពីព្រោះការចូលប្រើទិន្នន័យជារឿងចាំបាច់ សម្រាប់ប្រព័ន្ធ AI ដើម្បីធ្វើការព្យាករ និងសម្រេចចិត្តត្រឹមត្រូវ និងមានព័ត៌មានគ្រប់គ្រាន់អំពីមនុស្ស។
> [🎥 ចុចទីនេះសម្រាប់វីដេអូ: សុវត្ថិភាពក្នុង AI](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- ក្នុងឧស្សាហកម្មយើងបានធ្វើការវិវឌ្ឍយ៉ាងច្រើននៅផ្នែកឯកជនភាព និងសុវត្ថិភាព ដោយពាក់ព័ន្ទយ៉ាងខ្លាំងជាមួយនឹងបទបញ្ជាដូចជា GDPR ។
-- ប៉ុន្តែសម្រាប់ប្រព័ន្ធ AI យើងត្រូវតែទទួលស្គាល់ការពាក់ព័ន្ធរវាងតម្រូវការ ទិន្នន័យផ្ទាល់ខ្លួនបន្ថែម ដើម្បីធ្វើឲ្យប្រព័ន្ធផ្នែកផ្ទាល់ខ្លួន និងប្រសើរឡើង — និងការគោរពឯកជនភាព។
-- ដូចជាការបង្កើតកុំព្យូទ័រចងក្រងនឹងអ៊ីនធឺណិត យើងក៏បានឃើញការកើនឡើងយ៉ាងខ្លាំងនៃបញ្ហាសុវត្ថិភាពដែលពាក់ព័ន្ធនឹង AI៕
-- ខណៈពេលដដែល ក៏ឃើញពីការប្រើប្រាស់ AI ដើម្បីធ្វើឱ្យសុវត្ថិភាពប្រសើរឡើង។ ឧទាហរណ៍ សាច់ញាតិការពារពីវីរុសភាគច្រើនដែលមាននៅសព្វថ្ងៃគឺដំណើរការដោយ AI heuristics ។
-- យើងត្រូវធានាថា បើកម្រិតវិទ្យាសាស្រ្តទិន្នន័យរបស់យើងបញ្ចូលការអនុវត្តៗថ្មីៗទាំងអស់ទាក់ទងនឹងឯកជនភាព និងសុវត្ថិភាព។
+- ជាឧស្សាហកម្ម យើងបានធ្វើការវិវឌ្ឍយ៉ាងខ្លាំងក្នុងការការពារ និងសុវត្ថិភាព ពីការប្រកាសដែលមានប្រតិបត្តិការដូច GDPR (បទបញ្ជានីតិវិធីការពារទិន្នន័យទូទៅ)។
+- ទោះជាយ៉ាងណា លើប្រព័ន្ធ AI យើងត្រូវទទួលស្គាល់មូលហេតុភាពតានតឹងចំពោះការត្រូវការទិន្នន័យបុគ្គលបន្ថែមសម្រាប់ធ្វើឲ្យប្រព័ន្ធមានលទ្ធផលឥទ្ធិពលនិងមានអានុភាព – ដល់ភាពឯកជន។
+- ដូចជាករណីកំណើតរបស់កុំព្យូទ័រតភ្ជាប់ជាមួយអ៊ីនធឺណិត យើងកំពុងឃើញក្របខ័ណ្ឌបញ្ហាសុវត្ថិភាពដែលទាក់ទងនឹង AI កើនឡើងយ៉ាងច្រើន។
+- ពេលតែមួយ យើងបានឃើញថា AI ត្រូវបានប្រើប្រាស់ដើម្បីបង្កើនសុវត្ថិភាព។ ឧទាហរណ៍ កម្មវិធីរោទិ៍មេរោគច្រើនគឺមានគោលការណ៍ AI ជាមូលដ្ឋាន។
+- យើងត្រូវធានាថា ដំណើរការវិទ្យាសាស្រ្តទិន្នន័យរបស់យើងត្រូវមានការចម្រុះយោគយល់ជាមួយការអនុវត្តលក្ខណៈថ្មីៗនៃភាពឯកជន និងសុវត្ថិភាព។
-### ភាពច្បាស់លាស់
-ប្រព័ន្ធ AI គួរតែដឹងច្បាស់។ ផ្នែកសំខាន់ពីភាពច្បាស់លាស់គឺការពន្យល់អាកប្បករណ៍នៃប្រព័ន្ធ AI និងធាតុផ្សំនៃវា។ ការកែលម្អការយល់ដឹងអំពីប្រព័ន្ធ AI ជំរុញឱ្យអ្នកពាក់ព័ន្ធយល់ថាតើវាដំណើរការយ៉ាងដូចម្តេចនិងហេតុផលដែលវាដំណើរការដូច្នោះ ដើម្បីជួយកំណត់បញ្ហាផ្នែកសមត្ថភាព ភាពសុវត្ថិភាព ផ្លូវការផ្សេងៗ ភាពលំអៀង ភាពមិនសុចរិត ឬលទ្ធផលមិនចង់បាន។ យើងក៏ជឿថា អ្នកប្រើប្រាស់ប្រព័ន្ធ AI គួរតែត្រួតពិនិត្យនិងរាយការណ៍ពេលណានិងហេតុផលដែលពួកគេប្រើប្រាស់វា និងកម្រិតកំណត់នៃប្រព័ន្ធដែលពួកគេចេញការប្រើប្រាស់។ ឧទាហរណ៍ ប្រសិនបើធនាគារប្រើប្រព័ន្ធ AI ជួយសម្រេចចិត្តឥណទាន វាពិតជាសំខាន់ក្នុងការត្រួតពិនិត្យលទ្ធផល និងយល់ថាតើទិន្នន័យណាដែលមានឥទ្ធិពលលើការផ្តល់ដំណឹងរបស់ប្រព័ន្ធ។ រដ្ឋាភិបាលកំពុងចាប់ផ្តើមគ្រប់គ្រង AI នៅក្នុងវិស័យផ្សេងៗ ដូច្នេះអ្នកវិទ្យាសាស្រ្តទិន្នន័យ និងអង្គការត្រូវតែពន្យល់ថាប្រព័ន្ធ AI នេះត្រូវគោរពតាមបទបញ្ជា ឬទេ ជាពិសេសនៅពេលមានលទ្ធផលមិនចង់បាន។
+### ភាពច្បាស់លាស់
+ប្រព័ន្ធ AI គួរត្រូវបានយល់ដឹងបានយ៉ាងច្បាស់។ ផ្នែកសំខាន់មួយនៃភាពច្បាស់លាស់គឺការពន្យល់អាកប្បកិរិយារបស់ប្រព័ន្ធ AI និងធាតុផ្សារបស់វា។ ការកែលម្អការយល់ដឹងអំពីប្រព័ន្ធ AI តម្រូវឱ្យអ្នកពាក់ព័ន្ធយល់ពីរបៀប និងមូលហេតុដែលវាធ្វើការ ដើម្បីពួកគេអាចកំណត់បញ្ហាអនុវត្ត ការព្រួយបារម្ភលើសុវត្ថិភាព និងភាពឯកជន ការចំណាយលើការខ្វះការចូលរួម ឬលទ្ធផលដែលមិនបានរំពឹង។ យើងក៏ជឿថា អ្នកប្រើប្រព័ន្ធ AI គួរតែសុចរិត និងត្រូវបង្ហាញពីពេលណា ហេតុអ្វី និងរបៀបដែលពួកគេច្រើនត្រូវប្រើប្រាស់វា។ ព្រមទាំងកំណត់លក្ខខណ្ឌនៃប្រព័ន្ធដែលពួកគេច្រើនប្រើប្រាស់។ ឧទាហរណ៍ ប្រសិនបើធនាគារ ប្រើប្រព័ន្ធ AI ដើម្បីគាំទ្រការសម្រេចចិត្តខ្ចីប្រាក់របស់អតិថិជន វាសំខាន់ក្នុងការពិនិត្យលទ្ធផលហើយយល់ថាទិន្នន័យណាដែលប៉ះពាល់លើការផ្តល់យោបល់របស់ប្រព័ន្ធ។ រាជរដ្ឋាភិបាលបានចាប់ផ្តើមគ្រប់គ្រង AI នៅឧស្សាហកម្ម ផ្ទាល់ខ្លួន អ្នកវិទ្យាសាស្រ្តទិន្នន័យ និងអង្គការត្រូវតែពន្យល់ថាប្រព័ន្ធ AI ណាដែលបំពេញតាមលក្ខខណ្ឌគ្រប់គ្រង យ៉ាងពិសេសនៅពេលដែលមានលទ្ធផលមិនចង់បាន។
> [🎥 ចុចទីនេះសម្រាប់វីដេអូ: ភាពច្បាស់លាស់ក្នុង AI](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- ពីព្រោះប្រព័ន្ធ AI មានភាពស្មុគស្មាញខ្លាំង បង្កឡើងការលំបាកក្នុងការយល់ពីរបៀបវាដំណើរការ និងបកស្រាយលទ្ធផល។
-- ការខ្វះការយល់ដឹងនេះប៉ះពាល់ដល់វិធីដែលប្រព័ន្ធទាំងនេះត្រូវបានគ្រប់គ្រង ប្រតិបត្តិ និងប្រភេទឯកសារ។
-- ការខ្វះការយល់ដឹងនេះប៉ះពាល់យ៉ាងចាំបាច់ទៅលើការសម្រេចចិត្ត ដែលធ្វើឡើងដោយប្រើលទ្ធផលដែលប្រព័ន្ធទាំងនេះផលិត។
+- ព្រោះប្រព័ន្ធ AI មានភាពស្មុគស្មាញខ្ពស់ វាពិបាកក្នុងការយល់ថាវាធ្វើការយ៉ាងដូចម្តេច និងបកស្រាយលទ្ធផល។
+- ការខ្វះការយល់ដឹងនេះប៉ះពាល់ទៅលើរបៀបដែលប្រព័ន្ធទាំងនេះត្រូវបានគ្រប់គ្រង អនុវត្ត និងចុះបញ្ជី។
+- ការ ខ្វះការយល់ដឹងនេះមានសារៈសំខាន់ជាងគេ ពេលធ្វើការសម្រេចចិត្តដោយប្រើលទ្ធផលដែលទទួលបានពីប្រព័ន្ធទាំងនេះ។
+
+### ភាពទទួលខុសត្រូវ
+
+មនុស្សដែលរចនា និងដាក់ប្រព័ន្ធ AI ត្រូវតែទទួលខុសត្រូវចំពោះរបៀបដែលប្រព័ន្ធរបស់ពួកគេដំណើរការ។ ភាពចាំបាច់សម្រាប់ភាពទទួលខុសត្រូវមានសារៈសំខាន់ជាពិសេសក្នុងបច្ចេកវិទ្យាប្រើសម្គាល់មុខមនុស្ស។ ពីព្រោះឥឡូវនេះ មានការទាមទារកើនឡើងសម្រាប់បច្ចេកវិទ្យាសម្គាល់មុខមនុស្ស ជាពិសេសពីស្ថាប័នច្បាប់ដែលឃើញថាបច្ចេកវិទ្យានេះអាចប្រើសម្រាប់ស្វែងរកកុមារបាត់ខ្លួន។ ទោះជាយ៉ាងណា បច្ចេកវិទ្យាណាខ្លះអាចត្រូវបានរដ្ឋាភិបាលប្រើសម្រាប់បង្កការជឿរដល់សេរីភាពមូលដ្ឋានរបស់ប្រជាពលរដ្ឋ ដូចជាការតាមដានបន្តបន្ទាប់លើមនុស្សជាក់លាក់។ ដូច្នេះ អ្នកវិទ្យាសាស្រ្តទិន្នន័យ និងអង្គការត្រូវរក្សាភាពទទួលខុសត្រូវចំពោះវិធានការរបស់ប្រព័ន្ធ AI របស់ពួកគេចំពោះមនុស្ស ឬសង្គម។
-### ការទទួលខុសត្រូវ
+[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "វិធីសាស្រ្តរបស់ Microsoft ទៅ AI ដែលមានការទទួលខុសត្រូវ")
-មនុស្សដែលរចនានិងចេញផ្សាយប្រព័ន្ធ AI ត្រូវទទួលខុសត្រូវចំពោះរបៀបដែលប្រព័ន្ធរបស់ពួកគេចាក់សោ។ តម្រូវការនេះមានសារៈសំខាន់បំផុត ជាពិសេសជាមួយបច្ចេកវិទ្យាទាក់ទងនឹងការបញ្ចាក់មុខមាត់។ នៅពេលថ្មីៗនេះ មានការទាមទារកើនឡើងសម្រាប់បច្ចេកវិទ្យាបញ្ចាក់មុខមាត់ ជាពិសេសពីអង្គការជំនួយច្បាប់ ដែលឃើញភាពមានសក្តានុពលនៃបច្ចេកវិទ្យានៅក្នុងការស្វែងរកកុមារកំពុងបាត់បង់។ ទោះជាយ៉ាងណា បច្ចេកវិទ្យាអាចត្រូវបានប្រើដោយរដ្ឋាភិបាលដើម្បីឲ្យមានការតាមដានជាប់លាប់លើមនុស្សជាក់លាក់។ ដូច្នេះ អ្នកវិទ្យាសាស្រ្តទិន្នន័យ និងអង្គការត្រូវតែទទួលខុសត្រូវចំពោះវិបត្តិនៃប្រព័ន្ធ AI កំពុងប៉ះពាល់មនុស្ស ឬសង្គម។
+> 🎥 ចុចរូបភាពខាងលើសម្រាប់វីដេអូ៖ ការព្រមានអំពីការតាមដានយ៉ាងទូលំទូលាយតាមរយៈបច្ចេកវិទ្យាសម្គាល់មុខមនុស្ស
-[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft's Approach to Responsible AI")
+ចុងក្រោយមួយចំនួននៃសំណួរធំសម្រាប់ជំនាន់យើង ពីព្រោះជាជំនាន់ដំបូងដែលនាំ AI ទៅឲ្យសង្គម គឺ តើធ្វើដូចម្តេចដើម្បីធានាថា កុំព្យូទ័រនឹងនៅតែទទួលខុសត្រូវចំពោះមនុស្ស ហើយធានាថាមនុស្សដែលរចនាកុំព្យូទ័រនឹងនៅតែទទួលខុសត្រូវចំពោះមនុស្សគ្រប់រូប។
-> 🎥 ចុចរូបភាពខាងលើសម្រាប់វីដេអូ: ការព្រមានអំពីការតាមដានទូទៅតាមបច្ចេកវិទ្យាបញ្ចាក់មុខមាត់
+## ការវាយតម្លៃឥទ្ធិពល
-ចុងក្រោយមួយក្នុងចំណោមសំណួរធំបំផុតសម្រាប់ជំនាន់យើង ជាជំនាន់ដំបូងដែលនាំ AI សម្រាប់សង្គម គឺរបៀបធានាឲ្យកុំព្យូទ័រនឹងនៅតែទទួលខុសត្រូវទៅមនុស្ស និងរបៀបធានាឲ្យអ្នកដែលរចនាកុំព្យូទ័រនេះនៅតែទទួលខុសត្រូវចំពោះគ្រប់លោកអ្នកផ្សេងទៀត។
+មុនពេលបណ្តុះបណ្តាលគំរូរៀនម៉ាស៊ីន វាសំខាន់ក្នុងការធ្វើការវាយតម្លៃឥទ្ធិពល ដើម្បីយល់ពីគោលបំណងនៃប្រព័ន្ធ AI; តើវាត្រូវប្រើសម្រាប់អ្វី; តើវាត្រូវប្រើនៅឯណា; និងតើនរណានឹងធ្វើប្រតិបត្តិការជាមួយប្រព័ន្ធ។ នេះជារឿងដែលពោរពេញទៅដោយប្រយោជន៍សម្រាប់អ្នកពិនិត្យ ឬអ្នកសាកល្បងប្រព័ន្ធ ដើម្បីដឹងថាត្រូវប្រាប់អ្វីខ្លះនៅពេលកំណត់ហានិភ័យអាចមាន និងផលវិបាកនឹងកើតមាន។
-## ការវាយតម្លៃផលប៉ះពាល់
+តំបន់ដែលត្រូវផ្ដោតពេលធ្វើការវាយតម្លៃឥទ្ធិពលមានដូចខាងក្រោម៖
-មុនពេលបណ្តុះម៉ូដែលម៉ាស៊ីនរៀន វាជាចាំបាច់ក្នុងការធ្វើការវាយតម្លៃផលប៉ះពាល់ ដើម្បីយល់ពីគោលបំណងនៃប្រព័ន្ធ AI; តើការប្រើប្រាស់នឹងយកទៅប្រើធ្វើអ្វី; កន្លែងនឹងធ្វើការចេញផ្សាយ; និងនរណានឹងធ្វើការប៉ះពាល់ប្រព័ន្ធ។ ព័ត៌មាននេះជួយឲ្យអ្នកវាយតម្លៃ ឬអ្នកសាកល្បងធ្វើការវាយតម្លៃប្រព័ន្ធដឹងថាត្រូវគិតចំពោះមូលហេតុណាខ្លះនៅពេលកំណត់ហានិភ័យ និងលទ្ធផលដែលរំពឹងទុក។
+* **ផលប៉ះពាល់អវិជ្ជមានលើមនុស្ស**។ ស្គាល់សំខាន់អំពីការកំណត់ ឬតម្រូវការ ការប្រើប្រាស់មិនគាំទ្រ ឬកំណត់ចំណុចខ្វះដែលបំពានសមត្ថភាពប្រព័ន្ធ ដើម្បីធានាថាបំណងប្រើប្រាស់ប្រព័ន្ធមិនបង្កការខូចខាតលើមនុស្ស។
+* **តម្រូវការទិន្នន័យ**។ យល់ដឹងពីរបៀប និងទីកន្លែងដែលប្រព័ន្ធនឹងប្រើទិន្នន័យ អ្នកពិនិត្យអាចស្វែងរកតម្រូវការណាមួយដែលអ្នកត្រូវប្រុងប្រយ័ត្ន (ឧ. របៀបគ្រប់គ្រងទិន្នន័យ GDPR ឬ HIPAA)។ ក៏ដូចជាពិនិត្យមើលថាប្រភពឬចំនួនទិន្នន័យគ្រប់គ្រាន់សម្រាប់ការបណ្តុះបណ្តាលឬអត់។
+* **សង្ខេបពីឥទ្ធិពល**។ ប្រមូលផ្តុំបញ្ជីនៃការខូចខាតអាចកើតមានពីការប្រើប្រាស់ប្រព័ន្ធ។ នៅកម្រិតវដ្តជីវិត ML ពិនិត្យមើលថាបញ្ហាដែលកំណត់បាន ត្រូវបានកាត់បន្ថយ ឬដោះស្រាយឲ្យស្រេច។
+* **គោលបំណង សមស្រប** សម្រាប់គោលការណ៍មូលដ្ឋានប្រាំមួយ។ វាយតម្លៃថាគោលបំណងនៃគោលការណ៍នីមួយៗត្រូវបានបំពេញល្អឬមិន និងតើមានចន្លោះណាមួយអត់។
-ដូចតទៅជាតំបន់ដែលត្រូវផ្តោតខ្លាំងពេលធ្វើការវាយតម្លៃផលប៉ះពាល់៖
-* **ផលប៉ះពាល់អវិជ្ជមានលើបុគ្គល**។ យល់ដឹងអំពីកំណត់ ឬតម្រូវការ ការប្រើប្រាស់មិនគាំទ្រ ឬកំណត់ខ្វះខាតណាមួយដែលអាចប៉ះពាល់ដល់សមត្ថភាពនៃប្រព័ន្ធមានសារៈសំខាន់ដើម្បីថែរក្សាឲ្យប្រព័ន្ធមិនត្រូវបានប្រើប្រាស់ដោយដូចជាការបង្កគ្រោះថ្នាក់លើបុគ្គល។
-* **តម្រូវការទិន្នន័យ**។ យល់ពីរបៀបនិងកន្លែងប្រព័ន្ធនឹងប្រើទិន្នន័យ អនុញ្ញាតឲ្យអ្នកវាយតម្លៃចែកចាយទិន្នន័យចំពោះតម្រូវការណាមួយដែលអ្នកត្រូវបានទុកចិត្ត (ឧ. បទបញ្ជា GDPR ឬ HIPPA)។ លើសពីនេះ ពិនិត្យមើលប្រភព ឬបរិមាណទិន្នន័យគ្រប់គ្រាន់សម្រាប់ការបណ្តុះបណ្តាល។
-* **សង្ខេបផលប៉ះពាល់**។ ប្រមូលបញ្ជីនៃគ្រោះថ្នាក់ដែលអាចកើតមានពីការប្រើប្រាស់ប្រព័ន្ធ។ តាមដានពេញលេញរយៈម៉ាស៊ីនរៀនប្រើប្រាស់ ដើម្បីពិនិត្យថាបញ្ហាដែលកំណត់បានត្រូវបានកាត់បន្ថយ ឬដោះស្រាយ។
-* **គោលបំណងដែលអាចប្រើប្រាស់បាន** សម្រាប់គោលការណ៍មូលដ្ឋានទាំងប្រាំមួយ។ វាយតម្លៃថាគោលបំណងនីមួយៗត្រូវបានបំពេញ និងមានចន្លោះខ្វះខាតទេ។
+## ការរកកំហុសជាមួយ AI ដែលមានការទទួលខុសត្រូវ
-## ការសំរាមជាមួយ AI ដែលមានការទទួលខុសត្រូវ
+ដូចជាការរកកំហុសកម្មវិធីទូទៅ ការរកកំហុសប្រព័ន្ធ AI គឺជាដំណើរការសំខាន់ក្នុងការកំណត់ និងដោះស្រាយបញ្ហាក្នុងប្រព័ន្ធ។ មានហេតុផលជាច្រើនដែលអាចប៉ះពាល់ឲ្យគំរូមិនអនុវត្តតាមការរំពឹងទុក ឬមិនទទួលខុសត្រូវ។ ប្រភេទតុល្យមាត្រអនុវត្តគំរូធម្មតាច្រើនជាតុល្យមាត្រប្រមូលទិន្នន័យកំណត់លទ្ធភាពនៃការអនុវត្តគំរូ ដែលមិនគ្រប់គ្រាន់សម្រាប់វិភាគថាគំរូរំលំលើគោលការណ៍ AI ទទួលខុសត្រូវបែបណា។ លើសពីនេះទៅទៀត គំរូរៀនម៉ាស៊ីនគឺជាប្រអប់ខ្មៅ ដែលកំចាត់ការយល់ដឹងឲ្យយល់ថាតើអ្វីបណ្តាលឲ្យមានលទ្ធផលឬពន្យល់ពេលវាមានកំហុស។ នៅពេលក្រោយក្នុងវគ្គសិក្សានេះ យើងនឹងសិក្សាលើរបៀបប្រើប្រាស់ផ្ទាំងគ្រប់គ្រង Responsible AI ដើម្បីជួយរកកំហុសប្រព័ន្ធ AI។ ផ្ទាំងគ្រប់គ្រងផ្តល់ឧបករណ៍សរុបសម្រាប់អ្នកវិទ្យាសាស្រ្តទិន្នន័យ និងអ្នកអភិវឌ្ឍ AI ដើម្បីអនុវត្តជាក្រោម៖
-ដូចជាការសំរាមកម្មវិធីទូទៅ ការសំរាមប្រព័ន្ធ AI គឺជាដំណើរការត្រូវតែធ្វើការកំណត់និងដោះស្រាយបញ្ហា។ មានកត្តាច្រើនដែលប៉ះពាល់ដល់ម៉ូដែលដែលមិនផ្ដល់លទ្ធផលដូចបានរំពឹង ឬជាមួយភាពទទួលខុសត្រូវ។ តុល្យភាពសមត្ថភាពម៉ូដែលបែបបុរីជាច្រើនគឺជាការបូកសរុបគុណភាពចំនួននៃសមត្ថភាពម៉ូដែល មិនគ្រប់គ្រាន់សម្រាប់វិភាគថាតើម៉ូដែលផ្ទុះខុសបំណងគោលការណ៍ AI ទេ។ លើសពីនេះ ម៉ូដែលម៉ាស៊ីនរៀនគឺជាប្រអប់ខ្មៅដែលពិបាកយល់ពីមូលហេតុនៃលទ្ធផលរបស់វា ឬផ្តល់ការពន្យល់នៅពេលវាធ្វើកំហុស។ នៅបន្ទាប់នៃវគ្គនេះ យើងនឹងរៀនការប្រើប្រព័ន្ធ Dashboard AI ដែលមានភាពទទួលខុសត្រូវ ដើម្បីជួយសំរុងសំរួលប្រព័ន្ធ AI ។ Dashboard នេះផ្តល់ឧបករណ៍ទូលំទូលាយសម្រាប់អ្នកវិទ្យាសាស្រ្តទិន្នន័យ និងអ្នកអភិវឌ្ឍ AI ដើម្បីធ្វើ៖
+* **វិភាគកំហុស**។ ដើម្បីកំណត់ការចែកចាយកំហុសរបស់គំរូដែលអាចប៉ះពាល់ទៅលើភាពត្រឹមត្រូវឬភាពជឿជាក់នៃប្រព័ន្ធ។
+* **ទិដ្ឋភាពទូទៅនៃគំរូ**។ ដើម្បីស្វែងរកកន្លែងដែលមានភាពខុសគ្នានៅក្នុងការអនុវត្តគំរូនៅលើក្រុមទិន្នន័យ។
+* **វិភាគទិន្នន័យ**។ ដើម្បីយល់ពីការចែកចាយទិន្នន័យ និងកំណត់សភាពប៉ះពាល់ទ្រព្យសម្បត្តិនៃទិន្នន័យដែលអាចនាំឲ្យមានបញ្ហាផ្សេងៗ ដូចជា ភាពត្រឹមត្រូវ ភាពរួមបញ្ចូល និងភាពជឿជាក់។
+* **ការពន្យល់គំរូ**។ ដើម្បីយល់ថាអ្វីប៉ះពាល់ ឬអ្វីបណ្តាលឲ្យការព្យាករណ៍របស់គំរូ។ វាជួយក្នុងការពន្យល់អាកប្បកិរិយារបស់គំរូ ដែលមានសារៈសំខាន់សម្រាប់ភាពច្បាស់លាស់ និងភាពទទួលខុសត្រូវ។
-* **វិភាគកំហុស**។ ដើម្បីកំណត់ចំនួនចែកថ្នាក់កំហុសរបស់ម៉ូដែលដែលអាចប៉ះពាល់ដល់ភាពយុត្តិធម៌ឬភាពទុកចិត្ត។
-* **ទិដ្ឋភាពម៉ូដែល**។ ដើម្បីរកឃើញកន្លែងមានភាពមិនស្មើគ្នានៃគុណភាពម៉ូដែលលើដុំទិន្នន័យផ្សេងៗ។
-* **វិភាគទិន្នន័យ**។ ដើម្បីយល់ពីចំណែកបែកផ្គរទិន្នន័យ និងកំណត់ភាពលំអៀងណាមួយក្នុងទិន្នន័យដែលអាចនាំឲ្យមានបញ្ហាផ្នែកភាពយុត្តិធម៌ ការរួមបញ្ចូល និងភាពទុកចិត្ត។
-* **ការសម្រួលម៉ូដែល**។ ដើម្បីយល់ថាគ្រឿងផ្សំណាដែលមានឥទ្ធិពលលើការព្យាករណ៍របស់ម៉ូដែល។ នេះជួយឲ្យពន្យល់អាកប្បករណ៍របស់ម៉ូដែល ដែលមានសារៈសំខាន់សម្រាប់ភាពច្បាស់លាស់ និងការទទួលខុសត្រូវ។
## 🚀 챌린지
+
+ដើម្បីទប់ស្កាត់ការខូចខាតពីការបញ្ចូលកើតឡើងសិន គួរតែ:
-ដើម្បីជៀសវាងការបង្កគ្រោះថ្នាក់ចូលឆាប់នៅដំបូង យើងគួរតែ៖
+- មានប្រភពខុសគ្នានិងទស្សនៈខុសគ្នារវាងមនុស្សដែលធ្វើការលើប្រព័ន្ធ
+- វិនិយោគលើឯកសារទិន្នន័យដែលបង្ហាញពីភាពចម្រុះនៃសហគមន៍យើង
+- អភិវឌ្ឍវិធីសាស្រ្តល្អប្រសើរពីវដ្តជីវិតរៀនម៉ាស៊ីនសម្រាប់រក និងដោះស្រាយ AI យ៉ាងទទួលខុសត្រូវ នៅពេលវាកើតឡើង
-- មានភាពចម្រុះនៃផ្ទៃខាងក្រោយ និងទស្សនៈរបស់មនុស្សដែលកំពុងធ្វើការលើប្រព័ន្ធ
-- វិនិយោគក្នុងសំណុំទិន្នន័យដែលបញ្ចាំងពីភាពចម្រុះក្នុងសង្គមយើង
-- អភិវឌ្ឍវិធីសាស្រ្តប្រសើរជាមធ្យោបាយខ្លះក្នុងរយៈពេលវែកំណត់ម៉ាស៊ីនរៀន សម្រាប់រកឃើញ និងកែប្រែ AI ដែលទទួលខុសត្រូវនៅពេលវាកើតឡើង
+សូមគិតអំពីស្ថានភាពជាក់លាក់ក្នុងជីវិត ប្រភេទមិនមានភាពទុកចិត្តបង្ហាញក្នុងការសាងសង់គំរូ និងការប្រើប្រាស់។ តើយើងគួរជួយគិតអ្វីបន្ថែមទៀត?
-គិតអំពីស្ថានភាពជាក់ស្តែងដោយមានភាពអត់ទុកចិត្តក្នុងការបង្កើតម៉ូដែល និងការប្រើប្រាស់។ តើមានអ្វីផ្សេងទៀតត្រូវគិតខ្លះ?
+## [សំនួរជំនួញបន្ទាប់មុខវិជ្ជា](https://ff-quizzes.netlify.app/en/ml/)
-## [គន្លឹះសំណួរបន្ទាប់សិក្សា](https://ff-quizzes.netlify.app/en/ml/)
+## ការពិនិត្យ និងរៀនដោយខ្លួនឯង
+
-## ការត្រួតពិនិត្យ និងការសិក្សាឯករាជ្យ
-នៅមេរៀននេះ អ្នកបានរៀនអំពីមូលដ្ឋានខ្លះៗនៃគំនិតភាពយុត្តិធម៌ និងការអត់យុត្តិធម៌នៅក្នុងការរៀនម៉ាស៊ីន។
+នៅមេរៀននេះ អ្នកបានរៀនពីមូលដ្ឋានខ្លះៗនៃគំនិតស្តីពីភាពយុត្តិធម៌ និងភាពមិនយុត្តិធម៌ក្នុងការរៀនម៉ាស៊ីន។
-មើលវគ្គបណ្ដុះបណ្ដាលនេះដើម្បីជ្រាបជ្រាលជ្រៅជាងនេះអំពីប្រធានបទ៖
+សូមមើលវគ្គបណ្តុះបណ្តាលនេះសម្រាប់ចូលជ្រាលជ្រៅជាងនេះទៅក្នុងប្រធានបទ៖
-- ក្នុងការតាមដាន AI មានទំនួលខុសត្រូវ៖ នាំយកគោលការណ៍ទៅអនុវត្តដោយ Besmira Nushi, Mehrnoosh Sameki និង Amit Sharma
+- ក្នុងការតាមរក AI ដែលមានការទទួលខុសត្រូវៈ នាំយកគោលការណ៍ទៅអនុវត្តដោយ Besmira Nushi, Mehrnoosh Sameki និង Amit Sharma
-[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI")
+[](https://www.youtube.com/watch?v=tGgJCrA-MZU "ប្រអប់ឧបករណ៍ RAI: ស៊ុមប្រភពបើកសម្រាប់កសាង AI ដែលមានការទទួលខុសត្រូវ")
-> 🎥 ចុចរូបភាពខាងលើសម្រាប់វីដេអូ៖ RAI Toolbox: ស៊ុមបើកម៉ូដែលសម្រាប់សាងសង់ AI មានទំនួលខុសត្រូវ ដោយ Besmira Nushi, Mehrnoosh Sameki, និង Amit Sharma
+> 🎥 ចុចរូបភាពខាងលើសម្រាប់វីដេអូ៖ ប្រអប់ឧបករណ៍ RAI: ស៊ុមប្រភពបើកសម្រាប់កសាង AI ដែលមានការទទួលខុសត្រូវដោយ Besmira Nushi, Mehrnoosh Sameki និង Amit Sharma
ផងដែរ សូមអាន៖
-- មជ្ឈមណ្ឌលធនធាន RAI របស់ Microsoft៖ [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
+- មជ្ឈមណ្ឌលធនធាន RAI របស់ Microsoft: [ធនធាន AI ដែលមានការទទួលខុសត្រូវ – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
-- ក្រុមស្រាវជ្រាវ FATE របស់ Microsoft៖ [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
+- ក្រុមស្រាវជ្រាវ FATE របស់ Microsoft: [FATE៖ ភាពយុត្តិធម៌ ការទទួលខុសត្រូវ ភាពត្រឹមត្រូវ និងទស្សនៈអំពី AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
-ស៊ុម RAI Toolbox៖
+ប្រអប់ឧបករណ៍ RAI៖
-- [ឃ្លាំង GitHub របស់ Responsible AI Toolbox](https://github.com/microsoft/responsible-ai-toolbox)
+- [ហាង GitHub ប្រអប់ឧបករណ៍ AI ដែលមានការទទួលខុសត្រូវ](https://github.com/microsoft/responsible-ai-toolbox)
-អានអំពីឧបករណ៍ Azure Machine Learning ដើម្បីធានាការយុត្តិធម៌៖
+អានអំពីឧបករណ៍ 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)
+[ស្វែងយល់ពីប្រអប់ឧបករណ៍ RAI](assignment.md)
---
-**ការបដិសេធ**៖
-ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator) ។ ខណៈពេលដែលយើងខិតខំប្រឹងប្រែងឱ្យបានត្រឹមត្រូវ សូមដឹងថាការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុស ឬភាពមិនត្រឹមត្រូវខ្លះ។ ឯកសារដើមជាភាសាដើមគួរត្រូវបានគេចាត់ទុកជាថ្នាក់ដឹកនាំសម្រាប់ព័ត៌មាន។ សម្រាប់ព័ត៌មានសំខាន់ៗ សូមណែនាំឱ្យប្រើការបកប្រែដោយមនុស្សជាជំនាញ។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការជំពាក់ចំពោះការបកប្រែនេះឡើយ។
+**ការបដិសេធ**:
+ឯកសារនេះត្រូវបានបម្លែងភាសា ដោយប្រើសេវាបម្លែងភាសា AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ទោះយើងខ្ញុំមានក្តីប្រាថ្នាឱ្យបានច្បាស់លាស់ តែសូមយល់ដឹងថាការបម្លែងដោយស្វ័យប្រវត្តិក៏អាចមានកំហុសឬភាពមិនត្រឹមត្រូវ។ ឯកសារដើមជាភាសាទីតាំងគួរត្រូវបានគេប្រើជាប្រភពច្បាស់លាស់។ សម្រាប់ព័ត៌មានសំខាន់ៗ សូមណែនាំឱ្យប្រើប្រាស់ការប្រែដោយមនុស្សជំនាញ។ យើងខ្ញុំមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកស្រាយខុសបន្ទាប់ពីការប្រើប្រាស់ការបម្លែងនេះនោះទេ។
\ No newline at end of file
diff --git a/translations/km/2-Regression/1-Tools/README.md b/translations/km/2-Regression/1-Tools/README.md
index 105ea5277..0b54862c0 100644
--- a/translations/km/2-Regression/1-Tools/README.md
+++ b/translations/km/2-Regression/1-Tools/README.md
@@ -1,120 +1,121 @@
-# ចាប់ផ្ដើមជាមួយ Python និង Scikit-learn សម្រាប់គំរូប្រូក្រេសស្យុង
+# ចាប់ផ្តើមជាមួយ Python និង Scikit-learn សម្រាប់ម៉ូដែលស្ទាតការវិលត្រឡប់
-
+
-> ស្គេតណូតដោយ [Tomomi Imura](https://www.twitter.com/girlie_mac)
+> សេខេណូតដោយ [Tomomi Imura](https://www.twitter.com/girlie_mac)
-## [សំណួរប្រលងមុនមេរៀន](https://ff-quizzes.netlify.app/en/ml/)
+## [កម្រងសំនួរមុនថ្នាក់រៀន](https://ff-quizzes.netlify.app/en/ml/)
-> ### [មេរៀននេះអាចប្រើបានក្នុង R!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
+> ### [មេរៀននេះមានសម្រាប់ R!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
## ការណែនាំ
-នៅក្នុងមេរៀនបួននេះ អ្នកនឹងស្វែងរកវិធីសម្រាប់បង្កើតគំរូប្រូក្រេសស្យុង។ យើងនឹងពិភាក្សាថាវាជាកម្មវិធីសម្រាប់អ្វីក្នុងពេលឆាប់ៗនេះ។ ប៉ុន្តែក្រោយពេលអ្នកមិនបានធ្វើអ្វីនោះទេ សូមប្រាកដថាអ្នកមានឧបករណ៍ត្រឹមត្រូវដើម្បីចាប់ផ្ដើមដំណើរការនេះ!
+ក្នុងមេរៀនបួននេះ អ្នកនឹងបានស្គាល់របៀបបង្កើតម៉ូដែលស្ទាតការវិលត្រឡប់។ យើងនឹងពិភាក្សាតើវាគ្រាន់តែជារឿងអ្វីក្នុងពេលឆាប់ៗនេះ។ ប៉ុន្ដែមុននឹងធ្វើអ្វីមួយ សូមប្រាកដថាអ្នកមានឧបករណ៍ត្រឹមត្រូវដើម្បីចាប់ផ្តើមដំណើរការនេះ!
-នៅក្នុងមេរៀននេះ អ្នកនឹងរៀនពី៖
+ក្នុងមេរៀននេះ អ្នកនឹងរៀនពីរបៀបៈ
-- ការកំណត់កុំព្យូទ័ររបស់អ្នកសម្រាប់បេសកកម្មម៉ាស៊ីនរៀនក្នុងផ្ទាំងក្នុង។
-- ការធ្វើការជាមួយសៀវភៅកំណត់សរសេរ Jupyter។
-- ការប្រើប្រាស់ Scikit-learn រួមទាំងការដំឡើង។
-- ស្វែងរកប្រូក្រេសស្យុងខ្សែបន្ទាត់ជាមួយហាត់ប្រាណអនុវត្តន៍ដោយដៃ។
+- កំណត់រចនាសម្ព័ន្ធកុំព្យូទ័ររបស់អ្នកសម្រាប់ភារកិច្ចម៉ាស៊ីនរៀនក្នុងមូលដ្ឋាន។
+- ធ្វើការងារជាមួយ Jupyter Notebooks។
+- ប្រើប្រាស់ Scikit-learn រួមទាំងការដំឡើង។
+- ស្វែងយល់អំពីស្ទាតការវិលត្រឡប់បន្ទាត់ជាមួយការ ហាត់បទដៃ។
-## ការដំឡើង និង ការកំណត់រចនា
+## ការដំឡើង និង ការកំណត់រចនាសម្ព័ន្ធ
-[](https://youtu.be/-DfeD2k2Kj0 "ម៉ាស៊ីនរៀនសម្រាប់អ្នកចាប់ផ្ដើម - រៀបចំឧបករណ៍របស់អ្នករួចរាល់សម្រាប់បង្កើតគំរូម៉ាស៊ីនរៀន")
+[](https://youtu.be/-DfeD2k2Kj0 "ML សម្រាប់ចាប់ផ្តើម - តំឡើងឧបករណ៍របស់អ្នកធ្វើការរៀបចំម៉ូដែលម៉ាស៊ីនរៀន")
-> 🎥 ចុចរូបភាពខាងលើសម្រាប់វីដេអូខ្លីដែលបង្កើតការកំណត់កុំព្យូទ័ររបស់អ្នកសម្រាប់ ML។
+> 🎥 ចុចរូបភាពខាងលើសម្រាប់វីដេអូចុងខ្លីដែលបង្ហាញពីរបៀបកំណត់រចនាសម្ព័ន្ធកុំព្យូទ័ររបស់អ្នកសម្រាប់ 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) ដែលមានប្រយោជន៍សម្រាប់កែលម្អការតំឡើងសម្រាប់អ្នកប្រើប្រាស់មួយចំនួន។
+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](https://docs.python.org/3/library/venv.html)។
+ ប៉ុន្មានការប្រើប្រាស់នៃ Python ត្រូវការពេញលេញនូវកំណែបញ្ជីនៃកម្មវិធី នៅពេលដែលអ្នកដទៃត្រូវការតែកំណែផ្សេងទៀត។ ដូច្នេះវាជារឿងមានប្រយោជន៍ក្នុងការប្រើប្រាស់ក្នុង [បរិស្ថានvirtuាl](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 ក្នុងមុខវិជ្ជានេះ ដូច្នេះ អ្នកអាចចង់រៀនបន្ថែមពីរបៀប [កំណត់ Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) សម្រាប់ការអភិវឌ្ឍ Python។
+2. **ដំឡើង Visual Studio Code**។ សូមប្រាកដថាអ្នកបានដំឡើង Visual Studio Code លើកុំព្យូទ័ររបស់អ្នក។ អ្នកអាចធ្វើតាមការណែនាំនេះដើម្បី [ដំឡើង Visual Studio Code](https://code.visualstudio.com/) សម្រាប់ការដំឡើងមូលដ្ឋាន។ អ្នកនឹងប្រើ Python ក្នុង Visual Studio Code ក្នុងវគ្គនេះ ដូច្នេះអ្នកអាចចង់រៀនវិធី [កំណត់រចនាសម្ព័ន្ធ Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) សម្រាប់ការអភិវឌ្ឍ Python។
- > ទទួលបានភាពស្រាលចិត្តជាមួយ Python ដោយធ្វើតាមបណ្ដុំ [Learn modules](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?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 "រៀបចំ Python ជាមួយ Visual Studio Code")
+ > [](https://youtu.be/yyQM70vi7V8 "តំឡើង Python ជាមួយ Visual Studio Code")
>
- > 🎥 ចុចរូបភាពខាងលើសម្រាប់វីដេអូ៖ ការប្រើ Python នៅក្នុង VS Code។
+ > 🎥 ចុចរូបភាពខាងលើសម្រាប់វីដេអូ៖ ការប្រើ Python ក្នុង VS Code។
-3. **ដំឡើង Scikit-learn** ដោយអនុវត្តតាម [ការណែនាំនេះ](https://scikit-learn.org/stable/install.html)។ ពីព្រោះអ្នកចាំបាច់ត្រូវប្រើ Python 3 អ្នកត្រូវបានផ្តល់អនុស្សាវរីយ៍ឲ្យប្រើបរិយាកាស virtual។ សូមចំណាំ ប្រសិនបើអ្នកកំពុងដំឡើងបណ្ណាល័យនេះលើម៉ាស៊ីន M1 Mac មានការណែនាំពិសេសនៅលើទំព័រដែលភ្ជាប់ខាងលើ។
+3. **ដំឡើង Scikit-learn**, ដោយធ្វើតាម [ការណែនាំទាំងនេះ](https://scikit-learn.org/stable/install.html)។ ពីព្រោះអ្នកត្រូវប្រាកដថាអ្នកប្រើ Python 3 អ្នកត្រូវបានផ្តល់អនុសាសន៍ឲ្យប្រើបរិស្ថាន virutual ។ គួរសម្គាល់ថាបើអ្នកដំឡើងបណ្ណាល័យនេះលើ M1 Mac មានការណែនាំពិសេសនៅលើទំព័រគេហទំព័រដែលបានភ្ជាប់ខាងលើ។
1. **ដំឡើង Jupyter Notebook**។ អ្នកត្រូវការដំឡើង [កញ្ចប់ Jupyter](https://pypi.org/project/jupyter/)។
## បរិយាកាសការសរសេរ ML របស់អ្នក
-អ្នកនឹងប្រើ **សៀវភៅកំណត់** ដើម្បីអភិវឌ្ឍកូដ Python របស់អ្នក និងបង្កើតគំរូម៉ាស៊ីនរៀន។ ប្រភេទឯកសារនេះគឺជាឧបករណ៍ធម្មតាសម្រាប់អ្នកវិទ្យាសាស្ត្រទិន្នន័យ ហើយវាត្រូវបានកំណត់ដោយបញ្ចំលើ ឬផ្នែកបន្ថែម `.ipynb` ។
+អ្នកនឹងប្រើ **notebooks** ដើម្បីអភិវឌ្ឍកូដ Python និងបង្កើតម៉ូដែលម៉ាស៊ីនរៀន។ ប្រភេទឯកសារនេះគឺជាឧបករណ៍ធម្មតាសម្រាប់អ្នកវិទ្យាសាស្ត្រ ទិន្នន័យ ហើយវាត្រូវបានកំណត់ដោយនាមគន្លង ឬផ្នែកបន្ថែម `.ipynb`។
-សៀវភៅកំណត់គឺជាបរិយាកាសអន្តរកម្មដែលអនុញ្ញាតឲ្យអ្នកអភិវឌ្ឍទាំងការសរសេរកូដ និងបន្ថែមកំណត់ចំណាំនិងសរសេរឯកសារជារង្វង់ខាងកូដ ដែលអាចមានប្រយោជន៍ចំពោះគម្រោងអត្រាឬស្រាវជ្រាវ។
+Notebooks គឺជាបរិយាកាសអន្តរកម្ម ដែលអនុញ្ញាតឲ្យអ្នកអភិវឌ្ឍការសរសេរកូដ និងបន្ថែមបញ្ញត្តិអត្ថាធិប្បាយ និងសរសេរឯកសារ ដើម្បីជួយសម្រាប់គម្រោងស្រាវជ្រាវឬសាកល្បង។
-[](https://youtu.be/7E-jC8FLA2E "ម៉ាស៊ីនរៀនសម្រាប់អ្នកចាប់ផ្ដើម - រៀបចំ Jupyter Notebooks ដើម្បីចាប់ផ្ដើមបង្កើតគំរូប្រូក្រេសស្យុង")
+[](https://youtu.be/7E-jC8FLA2E "ML សម្រាប់ចាប់ផ្តើម - ដំឡើង Jupyter Notebooks ដើម្បីចាប់ផ្តើមបង្កើតម៉ូដែលស្ទាតការវិលត្រឡប់")
-> 🎥 ចុចរូបភាពខាងលើសម្រាប់វីដេអូខ្លីដែលបង្កើតហាត់ប្រាណនេះ។
+> 🎥 ចុចរូបភាពខាងលើសម្រាប់វីដេអូចុងខ្លីដែលបង្ហាញពីលំហាត់នេះ។
-### ហាត់ប្រាណ - ធ្វើការជាមួយសៀវភៅកំណត់មួយ
+### លំហាត់ - ធ្វើការជាមួយ notebook
-នៅក្នុងថតនេះ អ្នកនឹងរកឃើញឯកសារ _notebook.ipynb_។
+នៅក្នុងថតនេះ អ្នកនឹងឃើញឯកសារ _notebook.ipynb_។
-1. បើក _notebook.ipynb_ នៅក្នុង Visual Studio Code។
+1. បើក _notebook.ipynb_ ក្នុង Visual Studio Code។
- ម៉ាស៊ីនបម្រើ Jupyter នឹងចាប់ផ្តើមជាមួយ Python 3+ បានចាប់ផ្តើម។ អ្នកនឹងរកឃើញតំបន់ឯកសារដែលអាច `run` បាន ដែលជាផ្នែកកូដ។ អ្នកអាចរត់កូដនេះដោយជ្រើសរើសរូបតំណាងបង្ហាញដូចប៊ូតុងចាក់ផ្ដើម។
+ ម៉ាស៊ីនបម្រើ Jupyter នឹងចាប់ផ្តើមជាមួយ Python 3+។ អ្នកនឹងឃើញតំបន់ក្នុង notebook ដែលអាច `run` ដែលជាផ្នែកនៃកូដ។ អ្នកអាចរត់កូដដោយជ្រើសរើសរូបតំណាងដែលមើលទៅដូចប៊ូតុងលេង។
-1. ជ្រើសរើសរូបតំណាង `md` ហើយបន្ថែម markdown តិចមួយ និងអត្ថបទខាងក្រោម **# Welcome to your notebook**។
+1. ជ្រើសរើសរូបតំណាង `md` ហើយបន្ថែម markdown ធ្វើការលើអត្ថបទខាងក្រោម **# សូមស្វាគមន៍ទៅកាន់ notebook របស់អ្នក**។
បន្ទាប់មក បន្ថែមកូដ Python មួយចំនួន។
-1. វាយ **print('hello notebook')** នៅក្នុងខ្លែងកូដ។
-1. ជ្រើសរើសអរម្មណ៍ដើម្បីរត់កូដ។
+1. វាយ **print('hello notebook')** នៅក្នុងប្លុកកូដ។
+1. ជ្រើសរើសស្នាម្រង់ដើម្បីរត់កូដ។
- អ្នកគួរតែឃើញប្រលោមបោះពុម្ព៖
+ អ្នកគួរតែឃើញកថាខណ្ឌទិន្នន័យដែលបានបោះពុម្ព៖
```output
hello notebook
```
-
+
-អ្នកអាចបញ្ចូលកូដរបស់អ្នកជាមួយមតិយោបល់ ដើម្បីចុះផ្សាយឯកសារសៀវភៅកំណត់។
+អ្នកអាចបញ្ចូលកូដរបស់អ្នកជាមួយការពិពណ៌នាដើម្បីឯកសារយោងខ្លួនចំពោះ notebook។
-✅ គិតមួយភ្លែតពីបរិយាកាសការងាររបស់អ្នកអភិវឌ្ឍគេហទំព័រនិងអ្នកវិទ្យាសាស្ត្រទិន្នន័យមានភាពខុសគ្នា ឬដូចគ្នានៅខាងណា។
+✅ សូមគិតមើលពេលខ្លីពីភាពខុសគ្នានៃបរិយាកាសការងាររបស់អ្នកអភិវឌ្ឍវេបសាយ ជាមួយនឹងអ្នកវិទ្យាសាស្ត្រទិន្នន័យ។
-## ចាប់ផ្ដើម និង រត់ជាមួយ Scikit-learn
+## ចាប់ផ្តើមបើកដំណើរការជាមួយ Scikit-learn
-ឥឡូវនេះ Python ត្រូវបានកំណត់នៅក្នុងបរិយាកាសក្នុងផ្ទាល់របស់អ្នកហើយ អ្នកក៏ស្រួលជាមួយ Jupyter notebooks សូមយើងស្រួលបង្រៀនអ្នកពី Scikit-learn ដដែល (សូមអានប្រាក់សំដៅការនិយាយ `sci` ដូចជា `science`)។ Scikit-learn ផ្តល់នូវ [API ឆ្លាតវៃ](https://scikit-learn.org/stable/modules/classes.html#api-ref) ដើម្បីជួយអ្នកធ្វើកិច្ចការ ML។
+ឥឡូវនេះ Python ត្រូវបានដំឡើងក្នុងបរិយាកាសមូលដ្ឋានរបស់អ្នក និងអ្នកស្រួលប្រើ Jupyter Notebooks តោះឲ្យស្រួលប្រើ Scikit-learn ផង (អានថា `sci` ដូចជា `science`)។ Scikit-learn ផ្តល់នូវ [API ទូលំទូលាយ](https://scikit-learn.org/stable/modules/classes.html#api-ref) ដើម្បីជួយអ្នកអនុវត្តភារកិច្ច ML។
-យោងទៅតាម [បណ្តាញរបស់ពួកគេ](https://scikit-learn.org/stable/getting_started.html) "Scikit-learn គឺជាបណ្ណាល័យម៉ាស៊ីនរៀនប្រភពបើកដែលគាំទ្រការរៀនតាមមគ្គុទេសក៍ និងមិនមានមគ្គុទេសក៍។ វាក៏ផ្តល់ឧបករណ៍ជាច្រើនសម្រាប់ការចងក្រងគំរូ ការរៀបចំទិន្នន័យ ជ្រើសរើសគំរូ និងការវាយតម្លៃ និងបណ្ណាល័យជំនួយផ្សេងទៀត។"
+យោងតាម [គេហទំព័រ](https://scikit-learn.org/stable/getting_started.html) របស់ពួកគេថា "Scikit-learn គឺជាបណ្ណាល័យម៉ាស៊ីនរៀនប្រភពបើក ដែលគាំទ្រការរៀនមានការត្រួតពិនិត្យ និងគ្មានការត្រួតពិនិត្យ។ វាក៏ផ្តល់សារពើភ័ណ្ឌឧបករណ៍នានាសម្រាប់ការតម្រូវម៉ូដែល ការរៀបចំទិន្នន័យជាមុន ការជ្រើសរើសម៉ូដែល និងការបាយតម្លៃ និងឧបករណ៍ជាច្រើនផ្សេងទៀត។"
-នៅក្នុងមុខវិជ្ជានេះ អ្នកនឹងប្រើ Scikit-learn និងឧបករណ៍ផ្សេងទៀតដើម្បីបង្កើតគំរូម៉ាស៊ីនរៀនក្នុងការអនុវត្តកិច្ចការម៉ាស៊ីនរៀនបែបប្រពៃណី។ យើងបានជៀសវាងបណ្តាញសរសៃប្រសាទ និងការរៀនជ្រៅដោយសារវាទទួលបានជម្រៅនៅក្នុងមេរៀនដ៏ខាងមុខនៅកម្មវិធីសិក្សា 'AI សម្រាប់អ្នកចាប់ផ្ដើម'។
+នៅក្នុងវគ្គនេះ អ្នកនឹងប្រើ Scikit-learn និងឧបករណ៍ផ្សេងទៀត ដើម្បីបង្កើតម៉ូដែលម៉ាស៊ីនរៀន ដើម្បីអនុវត្តអ្វីដែលយើងហៅថា 'ការរៀនម៉ាស៊ីនធម្មតា'។ យើងបានចៀសវាងបណ្តាញប្រព័ន្ធសរសៃប្រសាទ និងការរៀនជ្រៅ ពីព្រោះវាត្រូវបានគ្របដណ្តប់ល្អនៅក្នុងមុខវិជ្ជា 'AI សម្រាប់ចាប់ផ្តើម' ដែលនឹងមកដល់។
-Scikit-learn ធ្វើឲ្យការបង្កើតគំរូ និងវាយតម្លៃសម្រាប់ការប្រើប្រាស់កាន់តែរងាយស្រួល។ វាត្រូវបានផ្តោតសំខាន់លើការប្រើប្រាស់ទិន្នន័យលេខ និងមានសំណុំទិន្នន័យរួចជាស្រេចជាច្រើនសម្រាប់ការរៀន។ វាក៏មានគំរូស្រេចសម្រាប់សិស្សសាកល្បងផងដែរ។ យើងស្វែងរកដំណើរការចម្លងទិន្នន័យរួចហើយនិងប្រើប្រាស់កំណត់តម្លៃដែលស្ថិតក្នុងវាលដំបូងរបស់ក្រុមហ៊ុន Scikit-learn ជាគំរូ ML ដំបូងសម្រាប់ទិន្នន័យមូលដ្ឋាន។
+Scikit-learn ធ្វើឲ្យវាងាយស្រួលក្នុងការបង្កើតម៉ូដែល និងបាយតម្លៃវាសម្រាប់ប្រើ។ វាចំណាយផ្តោតលើការប្រើប្រាស់ទិន្នន័យចំនួន និងមានឧបករណ៍ទិន្នន័យរួចសម្រាប់ឲ្យជាគំរូរៀន។ វាក៏រួមមានម៉ូដែលដែលបានសាងសង់រួចសម្រាប់និស្សិតសាកល្បងផងដែរ។ តោះស្វែងយល់ពីដំណើរនៃការផ្ទុកទិន្នន័យដែលមានរួច និងប្រើប្រមាណករដែលមានក្នុង Scikit-learn ជាឆ្នាត់ម៉ូដែល ML ដំបូងជាមួយទិន្នន័យមូលដ្ឋាន។
-## ហាត់ប្រាណ - សៀវភៅកំណត់ Scikit-learn ដំបូងរបស់អ្នក
+## លំហាត់ - notebook Scikit-learn ដំបូងរបស់អ្នក
-> មេរៀននេះមានប្រភពពី [ឧទាហរណ៍ប្រូក្រេសស្យុងខ្សែបន្ទាត់](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) នៅលើគេហទំព័រ Scikit-learn។
+> មេរៀននេះទទួលចំណិតចេញពី [ឧទាហរណ៍ស្ទាតការវិលត្រឡប់បន្ទាត់](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) នៅលើគេហទំព័រ Scikit-learn។
-[](https://youtu.be/2xkXL5EUpS0 "ម៉ាស៊ីនរៀនសម្រាប់អ្នកចាប់ផ្ដើម - គំរោងប្រូក្រេសស្យុងខ្សែបន្ទាត់ដំបូងរបស់អ្នកនៅក្នុង Python")
-> 🎥 ចុចរូបភាពខាងលើសម្រាប់វីដេអូខ្លីដែលបង្កើតហាត់ប្រាណនេះ។
+[](https://youtu.be/2xkXL5EUpS0 "ML សម្រាប់ចាប់ផ្តើម - គម្រោងស្ទាតការវិលត្រឡប់បន្ទាត់ដំបូងរបស់អ្នកនៅក្នុង Python")
-នៅក្នុងឯកសារ _notebook.ipynb_ ដែលភ្ជាប់ជាមួយមេរៀននេះ សូមសម្អាតគ្រប់កោសិកាដោយចុចរូបតំណាង 'ប្រអប់សម្អាត'។
+> 🎥 ចុចរូបភាពខាងលើសម្រាប់វីដេអូចុងខ្លីដែលបង្ហាញពីលំហាត់នេះ។
-នៅក្នុងផ្នែកនេះ អ្នកនឹងធ្វើការជាមួយសំណុំទិន្នន័យតូចមួយអំពីជំងឺទឹកនោមផ្អាស់ ដែលបានបង្កើតចូលក្នុង Scikit-learn សម្រាប់គោលបំណងរៀន។ សូមចូរព្រមានថាអ្នកចង់សាកល្បងការព្យាបាលសម្រាប់អ្នកជំងឺទឹកនោមផ្អាស់។ គំរូម៉ាស៊ីនរៀនអាចជួយអ្នកកំណត់ថា តើអ្នកជំងឺណាម្នាក់អាចឆ្លើយតបកាន់តែល្អទៅនឹងការព្យាបាល ដែលមានមូលដ្ឋានលើការរួមបញ្ចូលអថេរជាច្រើន។ គំរូប្រូក្រេសស្យុងមូលដ្ឋានមួយ ទោះបីជាបរិយាកាសប្រើបានវិស្វកម្ម ក៏វានឹងបង្ហាញព័ត៌មានអំពីអថេរដែលអាចជួយអ្នករៀបចំការសាកល្បងគ្លីនិកទ្រឹស្តី។
+នៅក្នុងឯកសារ _notebook.ipynb_ ជាប់សម្រាប់មេរៀននេះ សូមសម្អាតក្រឡាចេញពីសែលទាំងអស់ដោយចុចសញ្ញាធុងសំរាម។
-✅ មានវិធីសាស្ត្រប្រូក្រេសស្យុងជាច្រើនប្រភេទ ហើយវាលែងឲ្យអ្នកជ្រើសរើសផ្អែកលើចម្លើយដែលអ្នកកំពុងស្វែងរក។ ប្រសិនបើអ្នកចង់ព្យាករណ៍កម្ពស់អាចមានសម្រាប់មនុស្សម្នាក់នៅវ័យណាមួយ អ្នកនឹងប្រើប្រូក្រេសស្យុងខ្សែបន្ទាត់ ដោយសារអ្នកកំពុងស្វែងរកតម្លៃ **លេខ**។ ប្រសិនបើអ្នកចង់រកឃើញថាប្រភេទម្ហូបមួយគួរត្រូវបានចាត់ទុកថាជារូបមន្តសត្វឬទេ អ្នកកំពុងស្វែងរក **ការចាត់ថ្នាក់** ដូច្នេះអ្នកនឹងប្រើប្រូក្រេសស្យុងលូស្តិច។ អ្នកនឹងរៀនបន្ថែមអំពីប្រូក្រេសស្យុងលូស្តិចនៅពេលក្រោយ។ សូមគិតបន្តិចអំពីសំណួរខ្លះៗដែលអ្នកអាចសួរចំពោះទិន្នន័យ ហើយវិធីសាស្ត្រណាមួយដែលសមសម្រាប់សំណួរទាំងនោះ។
+នៅក្នុងផ្នែកនេះ អ្នកនឹងធ្វើការជាមួយឌាតាប៊ីសតូចមួយអំពីជំងឺទឹកនោមផ្អែម ដែលបានបង្កើតស្រាប់ក្នុង Scikit-learn សម្រាប់គោលបំណងរៀន។ សូមស្រមៃថាអ្នកចង់សាកល្បងការព្យាបាលសម្រាប់អ្នកជំងឺទឹកនោមផ្អែម។ ម៉ូដែលម៉ាស៊ីនរៀនអាចជួយអ្នកកំណត់ថា អ្នកជំងឺណាដែលនឹងឆ្លើយតបទៅនឹងការព្យាបាលល្អបំផុត ដោយផ្អែកលើការប្រមូលមួយចំនួននៃអថេរផ្សេងៗ។ ទោះបីជាម៉ូដែលស្ទាតការវិលត្រឡប់មូលដ្ឋានត្រឹមតែបង្ហាញពណ៌នាក្នុងការបង្ហាញអំពីអថេរដែលជួយអ្នករៀបចំការសាកល្បងវេជ្ជសាស្រ្តរបស់អ្នក។
-ចាប់ផ្ដើមធ្វើការនៅលើបេសកកម្មនេះ។
+✅ មានវិធីសាស្ត្រស្ទាតការវិលត្រឡប់ជាច្រើនប្រភេទ ហើយជ្រើសរើសយ៉ាងណាស្ថិតលើចម្លើយដែលអ្នកកំពុងស្វែងរក។ ប្រសិនបើអ្នកចង់ទាយទម្លៃពីកម្ពស់ដែលអាចមានសម្រាប់មនុស្សម្នាក់ នៅវ័យកំណត់មួយ អ្នកនឹងប្រើស្ទាតការវិលត្រឡប់បន្ទាត់ ព្រោះអ្នកកំពុងស្វែងរក **តម្លៃចំនួន**។ ប្រសិនបើអ្នកចាប់អារម្មណ៍ថាតើប្រភេទម្ហូបអាហារមួយគួរត្រូវបានគេដាក់បញ្ចូលជាវេហ្សានឬអត់ អ្នកកំពុងស្វែងរក **ការចាត់ថ្នាក់ផ្នែក** ដូច្នេះអ្នកនឹងប្រើឡូជីស្ទិចស្ទាតការវិលត្រឡប់។ អ្នកនឹងរៀនបន្ថែមអំពីឡូជីស្ទិចស្ទាតការវិលត្រឡប់នៅពេលក្រោយ។ សូមគិតពីសំនួរខ្លះៗដែលអ្នកអាចសួរបានពីទិន្នន័យ ហើយវិធីសាស្រ្តណាមួយនៃវិធីសាស្ត្រខាងលើមានសមតុល្យជាង។
+
+តោះ ចាប់ផ្តើមលើភារកិច្ចនេះ។
### នាំចូលបណ្ណាល័យ
-សម្រាប់បេសកកម្មនេះ យើងនឹងនាំចូលបណ្ណាល័យខ្លះៗ៖
+សម្រាប់ភារកិច្ចនេះ យើងនឹងនាំចូលបណ្ណាល័យខ្លះៗ៖
-- **matplotlib** ។ វាជា [ឧបករណ៍គូរប្លង់](https://matplotlib.org/) មានប្រយោជន៍ ហើយយើងនឹងប្រើវាដើម្បីបង្កើតប្លង់បន្ទាត់មួយ។
-- **numpy** ។ [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) គឺជាបណ្ណាល័យមានប្រយោជន៍សម្រាប់ដំណើរការទិន្នន័យលេខក្នុង Python។
-- **sklearn** ។ នេះគឺជាបណ្ណាល័យ [Scikit-learn](https://scikit-learn.org/stable/user_guide.html)។
+- **matplotlib**។ វាជាឧបករណ៍ [គំនូសតាង](https://matplotlib.org/) ប្រើប្រាស់បានល្អ ហើយយើងនឹងប្រើវាសម្រាប់បង្កើតខ្សែបន្ទាត់គំនូស។
+- **numpy**។ [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) គឺជាបណ្ណាល័យមានប្រយោជន៍សម្រាប់គ្រប់គ្រងទិន្នន័យចំនួនក្នុង Python។
+- **sklearn**។ នេះគឺជាបណ្ណាល័យ [Scikit-learn](https://scikit-learn.org/stable/user_guide.html)។
-នាំចូលបណ្ណាល័យខ្លះៗ ដើម្បីជួយសម្រាប់បេសកកម្មរបស់អ្នក។
+នាំចូលបណ្ណាល័យមួយចំនួន ដើម្បីជួយអ្នកក្នុងភារកិច្ច។
-1. បន្ថែមការនាំចូល ដោយវាយកូដដូចខាងក្រោម៖
+1. បន្ថែមការimport ដោយវាយកូដខាងក្រោម៖
```python
import matplotlib.pyplot as plt
@@ -122,26 +123,26 @@ Scikit-learn ធ្វើឲ្យការបង្កើតគំរូ និ
from sklearn import datasets, linear_model, model_selection
```
- ខាងលើ អ្នកកំពុងនាំចូល `matplotlib`, `numpy` ហើយអ្នកកំពុងនាំចូល `datasets`, `linear_model` និង `model_selection` ពី `sklearn`។ `model_selection` ត្រូវបានប្រើសម្រាប់បំបែកទិន្នន័យជា សំណុំសាកល្បង និងសំណុំបណ្តុះបណ្តាល។
+ ខាងលើ អ្នកកំពុងនាំចូល `matplotlib`, `numpy` និងក៏នាំចូល `datasets`, `linear_model` និង `model_selection` ពី `sklearn`។ `model_selection` ត្រូវបានប្រើសម្រាប់បំបែកទិន្នន្យ័យជា ឈុតបណ្តុះបណ្តាល និង ឈុតសាកល្បង។
-### សំណុំទិន្នន័យជំងឺទឹកនោមផ្អាស់
+### ឌាតាប៊ីសជំងឺទឹកនោមផ្អែម
-សំណុំទិន្នន័យ built-in [ជំងឺទឹកនោមផ្អាស់](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) មាននូវគំរូទិន្នន័យ 442 ដែលជុំវិញជំងឺទឹកនោមផ្អាស់ មានអថេរមុខងារ 10 ប្រភេទខ្លះៗរួមមាន៖
+ឌាតាប៊ីសដែលបានបញ្ចូលក្នុង [diabetes dataset](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) មានគំរូទិន្នន័យចំនួន 442 អំពីជំងឺទឹកនោមផ្អែម ជាមួយអថេរគុណភាពចំនួន 10 ដែលមាន៖
-- អាយុកាល៖ អាយុជាឆ្នាំ
-- bmi៖ ម៉ាស៊ីនម៉ាស្សារបស់ខ្លួន
-- bp៖ សំពាធឈាមមធ្យម
-- s1 tc៖ T-Cells (ប្រភេទស៊ែលសព្វពណ៌ស)
+- អាយុ៖ អាយុជាឆ្នាំ
+- bmi: ដង់ស៊ីតេមាស៊ីនរាងកាយ
+- bp: សំពាធឈាមមធ្យម
+- s1 tc: T-Cells (ប្រភេទមួយនៃកោសិកាឈាមស)
-✅ សំណុំទិន្នន័យនេះមាន មុំនឹកនឹង "ភេទ" ជាអថេរមុខងារដែលមានសារៈសំខាន់សម្រាប់ការស្រាវជ្រាវជុំវិញជំងឺទឹកនោមផ្អាស់។ សំណុំទិន្នន័យវេជ្ជសាស្ត្រច្រើនមានការវាយតម្លៃកំណត់ប្រភេទពីរបែបនេះ។ សូមគិតបន្តិចអំពីតើការចាត់ថ្នាក់បែបនេះអាចដកចេញអ្នកជំនួសនៃមនុស្សជាតិពីការព្យាបាល។
+✅ ឌាតាប៊ីសនេះរួមមានមួយក្នុងចំណោមអថេរគុណភាព 'ភេទ' ដែលមានសារៈសំខាន់ក្នុងការស្រាវជ្រាវជំងឺទឹកនោមផ្អែម។ ឌាតាេប៊ីសវេជ្ជសាស្រ្តជាច្រើនរួមបញ្ចូលការចាត់ថ្នាក់ឯកសារជាគូ។ សូមគិតពីរបៀបដែលការចាត់ថ្នាក់ដូចនេះអាចដកបណ្តាផ្នែកមួយនៃប្រជាជនពីការព្យាបាល។
-ឥឡូវនេះ សូមបញ្ចូលទិន្នន័យ X និង y។
+ឥឡូវនេះ សូមផ្ទុកទិន្នន័យ X និង y។
-> 🎓 ចងចាំថា នេះគឺជាការរៀនដោយអនុក្រឹត្យ ហើយយើងត្រូវការទោកដាក់ឈ្មោះ 'y' ជាគោលដៅ។
+> 🎓 សូមចងចាំថា នេះគឺជាការរៀនដោយការត្រួតពិនិត្យ ហើយត្រូវការកំណត់គោលដៅភ្ជាប់នាម 'y'។
-នៅក្នុងកោសិកាកូដថ្មី សូមបញ្ចូលសំណុំទិន្នន័យជំងឺទឹកនោមផ្អាស់ ដោយហៅ `load_diabetes()`។ បារាជ័យ `return_X_y=True` សំដៅថា `X` នឹងជាតារាងទិន្នន័យ ហើយ `y` នឹងជាគោលដៅប្រូក្រេសស្យុង។
+ក្នុងសែលកូដថ្មី សូមផ្ទុកឌាតាប៊ីសជំងឺទឹកនោមផ្អែមដោយហៅ `load_diabetes()`។ បន្ទាត់បញ្ចូល `return_X_y=True` បញ្ជាក់ថា `X` នឹងជាមាត្រដ្ឋានទិន្នន័យ និង `y` នឹងជាគោលដៅស្ទាតការវិលត្រឡប់។
-1. បន្ថែមពាក្យបោះពុម្ព ដើម្បីបង្ហាញទម្រង់ទិន្នន័យ និងធាតុដំបូង៖
+1. បន្ថែមពាក្យបោះពុម្ពមួយចំនួន ដើម្បីបង្ហាញទំរង់មាត្រដ្ឋានទិន្នន័យ និងធាតុដំបូងរបស់វា៖
```python
X, y = datasets.load_diabetes(return_X_y=True)
@@ -149,9 +150,9 @@ Scikit-learn ធ្វើឲ្យការបង្កើតគំរូ និ
print(X[0])
```
- អ្វីដែលអ្នកទទួលបានជាចម្លើយ គឺជា tuple។ អ្វីដែលអ្នកបានធ្វើគឺផ្ដល់តម្លៃពីរដំបូងនៅក្នុង tuple ទៅ `X` និង `y` តាមលំដាប់។ ហ្វឹកហាត់បន្ថែមអំពី [tuples](https://wikipedia.org/wiki/Tuple)។
+ អ្វីដែលអ្នកទទួលបានវិញជាគូតម្លៃ។ អ្នកកំពុងផ្តល់តម្លៃពីរដែលស្ថិតក្នុងគូទៅកាន់ `X` និង `y` តាមលំដាប់។ សូមស្វែងយល់បន្ថែមអំពីគូ [tupples](https://wikipedia.org/wiki/Tuple)។
- អ្នកអាចមើលឃើញទិន្នន័យនេះមានធាតុ 442 ដែលរៀបជារាង arrays 10 ធាតុ៖
+ អ្នកអាចមើលឃើញថាទិន្នន័យនេះមាន 442 ធាតុដែលបានរៀបចំជាអារេនៃធាតុ 10៖
```text
(442, 10)
@@ -159,39 +160,39 @@ Scikit-learn ធ្វើឲ្យការបង្កើតគំរូ និ
-0.04340085 -0.00259226 0.01990842 -0.01764613]
```
- ✅ សូមគិតបន្តិចអំពីទំនាក់ទំនងរវាងទិន្នន័យ និងគោលដៅប្រូក្រេសស្យុង។ ប្រូក្រេសស្យុងខ្សែបន្ទាត់នាំមុខទស្សនៈទំនាក់ទំនងរវាងមុខងារ X និងអថេរកោល y។ តើអ្នកអាចរកឃើញ [គោលដៅ](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) សម្រាប់សំណុំទិន្នន័យជំងឺទឹកនោមផ្អាស់នៅក្នុងឯកសារណែនាំ? តើសំណុំទិន្នន័យនេះបង្ហាញអ្វី ជាមួយគោលដៅនោះ?
+ ✅ សូមគិតពីទំនាក់ទំនងរវាងទិន្នន័យ និងគោលដៅស្ទាតការវិលត្រឡប់។ ស្ទាតការវិលត្រឡប់បន្ទាត់គណនាទំនាក់ទំនងរវាងអថេរ X និងអថេរគោលដៅ y។ តើអ្នកអាចរក [គោលដៅ](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) របស់ឌាតាប៊ីសជំងឺទឹកនោមផ្អែម នៅឯកសារបញ្ជាក់មើល? ឌាតាប៊ីសនេះបង្ហាញអ្វី ជាមួយគោលដៅនោះ?
-2. បន្ទាប់មក ជ្រើសរើសផ្នែកមួយនៃសំណុំទិន្នន័យនេះសម្រាប់គូរប្លង់ ដោយជ្រើសជួរឈរ 3 នៃសំណុំទិន្នន័យ។ អ្នកអាចធ្វើបានដោយប្រើ `:` ដើម្បីជ្រើសរាល់ជួរ ហើយបន្ទាប់មកជ្រើសជួរឈរ 3 ដោយប្រើ index (2)។ អ្នកអាចប្តូរទម្រង់ទិន្នន័យឱ្យថ្លៃជារាង 2D ដូចដែលត្រូវការសម្រាប់គូរប្លង់ ដោយប្រើ `reshape(n_rows, n_columns)`។ ប្រសិនបើ parameters មួយគឺ -1 ភាគតំណាងនោះនឹងត្រូវគណនា secara automatique។
+2. បន្ទាប់មក ជ្រើសយកផ្នែកមួយនៃឌាតាប៊ីសនេះ ដើម្បីគូសតាងដោយជ្រើសរើសជួរដេកទី 3 (កូឡុំទី 3) នៃឌាតាប៊ីស។ អ្នកអាចធ្វើបានដោយប្រើអុបទភីរត័រ `:` ដើម្បីជ្រើសយកជួរដេកទាំងអស់ ហើយបន្ទាប់មកជ្រើសរើសជួរដេកទី 3 ដោយប្រើសន្ទស្សន៍ (2)។ អ្នកអាចផ្លាស់ប្ដូរទ្រង់ទ្រាយឌាតា ឲ្យក្លាយជាអារេ 2D ដែលត្រូវការសម្រាប់គូស តាមរយៈការប្រើ `reshape(n_rows, n_columns)`។ ប្រសិនបើប៉ារ៉ាម៉ែត្រមួយមានតម្លៃ -1 ទំហំខាងនោះត្រូវបានគណនាអតូម៉ាទិក។
```python
X = X[:, 2]
X = X.reshape((-1,1))
```
- ✅ នៅពេលណាមួយ សូមបោះពុម្ពទិន្នន័យ ដើម្បីពិនិត្យទម្រង់វា។
+ ✅ នៅពេលណាមួយ សូមបោះពុម្ពទិន្នន័យដើម្បីត្រួតពិនិត្យទ្រង់ទ្រាយ។
-3. ឥឡូវនេះដែលអ្នកមានទិន្នន័យសម្រាប់គូរប្លង់ អ្នកអាចមើលថាតើម៉ាស៊ីនអាចជួយកំណត់ចំណែកល្អលើចំនួននៅក្នុងសំណុំទិន្នន័យនេះបានទេ។ ដើម្បីធ្វើបានចាំបាច់ត្រូវបំបែកទាំងទិន្នន័យ (X) និងគោលដៅ (y) ទៅជាសំណុំសាកល្បង និងសំណុំបណ្តុះបណ្តាល។ Scikit-learn មានវិធីងាយស្រួលសម្រាប់ធ្វើនោះ អ្នកអាចបំបែកទិន្នន័យសាកល្បងនៅចំណុចណាមួយ។
+3. ឥឡូវនេះអ្នកមានទិន្នន័យរួចរាល់សម្រាប់គូស តើម៉ាស៊ីនអាចជួយកំណត់ការបំបែកត្រឹមត្រូវរវាងចំនួនក្នុងឌាតាប៊ីសនេះបានទេ? ដើម្បីធ្វើនេះ អ្នកត្រូវបំបែកទាំងទិន្នន័យ (X) និងគោលដៅ (y) ជាឈុតសាកល្បង និងឈុតបណ្តុះបណ្តាល។ Scikit-learn មានវិធីសាមញ្ញក្នុងការបំបែកទិន្នន័យនេះ។ អ្នកអាចបំបែកទិន្នន័យសាកល្បងនៅចំណុចណាមួយ។
```python
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33)
```
-4. ឥឡូវនេះ អ្នកត្រៀមខ្លួនបណ្តុះគំរូរបស់អ្នក! បញ្ចូលម៉ូឌែលប្រូក្រេសស្យុងខ្សែបន្ទាត់ ហើយបណ្តុះវាជាមួយសំណុំបណ្តុះបណ្តាល X និង y ដោយប្រើ `model.fit()`:
+4. ឥឡូវនេះអ្នកមានភាពរួចរាល់ក្នុងការបណ្តុះម៉ូដែលរបស់អ្នក! សូមផ្ទុកម៉ូដែលស្ទាតការវិលត្រឡប់បន្ទាត់ ហើយបណ្តុះវាជាមួយឈុតបណ្តុះបណ្តាល X និង y ដោយប្រើ `model.fit()`៖
```python
model = linear_model.LinearRegression()
model.fit(X_train, y_train)
```
- ✅ `model.fit()` គឺជា function ដែលអ្នកនឹងឃើញនៅក្នុងបណ្ណាល័យ ML ជាច្រើនដូចជា TensorFlow។
+ ✅ `model.fit()` គឺជាអនុគមន៍ដែលអ្នកនឹងបានឃើញនៅក្នុងបណ្ណាល័យ ML ច្រើនដូចជា TensorFlow
-5. បន្ទាប់មក បង្កើតការព្យាករណ៍ដោយប្រើទិន្នន័យសាកល្បង ដោយប្រើ function `predict()`។ នេះនឹងត្រូវប្រើសម្រាប់គូរបន្ទាត់ចល័តនៅចន្លោះក្រុមទិន្នន័យ។
+5. បន្ទាប់មក បង្កើតការទាយថ្លៃដោយប្រើទិន្នន័យសាកល្បង ដោយប្រើអនុគមន៍ `predict()`។ នេះនឹងត្រូវបានប្រើសម្រាប់គូរស៊តកន្លែងនៅចន្លោះក្រុមទិន្នន័យ។
```python
y_pred = model.predict(X_test)
```
-6. ឥឡូវនេះពេលដើម្បីបង្ហាញទិន្នន័យជាប្លង់។ Matplotlib គឺជាឧបករណ៍មានប្រយោជន៍ខ្លាំងសម្រាប់បេសកកម្មនេះ។ បង្កើត scatterplot សម្រាប់ទិន្នន័យ X និង y សំណុំសាកល្បងទាំងអស់ ហើយប្រើការព្យាករណ៍ក្នុងការគូរបន្ទាត់ជាកន្លែងសមរម្យបំផុត រវាងក្រុមទិន្នន័យរបស់ម៉ូឌែល។
+6. ឥឡូវនេះគឺពេលចាប់ផ្តើមបង្ហាញទិន្នន័យជាគំនូសតាង។ Matplotlib គឺជាឧបករណ៍មានប្រយោជន៍សម្រាប់ភារកិច្ចនេះ។ បង្កើត scatterplot នៃទិន្នន័យ X និង y សាកល្បងទាំងអស់ ហើយប្រើការទាយថ្លៃដើម្បីគូរសន្ទស្សន៍នៅកន្លែងសមរម្យបំផុត រវាងក្រុមទិន្នន័យម៉ូដែល។
```python
plt.scatter(X_test, y_test, color='black')
@@ -202,30 +203,32 @@ Scikit-learn ធ្វើឲ្យការបង្កើតគំរូ និ
plt.show()
```
- 
- ✅ សូមគិតកន្លែងអ្វីកំពុងកើតឡើងនៅទីនេះ។ ខ្សែត្រង់មួយកំពុងរត់កាត់តាមចំណុចតូចៗជាច្រើននៃទិន្នន័យ ប៉ុន្តែវាកំពុងធ្វើអ្វីពិតប្រាកដមែនទេ? តើអ្នកអាចឃើញយ៉ាងដូចម្តេចថា តើអ្នកគួរតែប្រើខ្សែនេះដើម្បីទាយថាតើចំណុចទិន្នន័យថ្មីមួយដែលមិនធ្លាប់ឃើញអាចផ្គូផ្គងនៅឯណាទៅទាក់ទងនឹងអ័ក្ស y នៃផ្លូតបានយ៉ាងដូចម្តេច? សូមព្យាយាមដាក់ជាពាក្យអំពីការប្រើប្រាស់ជាក់ស្តែងនៃម៉ូដែលនេះ។
+ 
+
+
+ ✅ សូមគិតបន្តិចពីអ្វីកំពុងកើតឡើងនៅទីនេះ។ បន្ទាត់បញ្ចេញត្រូវបានគូសឆ្លងកាត់ចំណុចទិន្នន័យតូចជាច្រើន ប៉ុន្តែកន្លែងណា ដែលវាកំពុងធ្វើមែន? តើអ្នកអាចមើលឃើញថា អ្នកគួរតែអាចប្រើបណ្ដាបន្ទាត់នេះដើម្បីទាយថាតើយ៉ាងដូចម្តេចឲ្យបានត្រឹមត្រូវដែលចំណុចទិន្នន័យថ្មីមិនបានឃើញបង្ហាញខ្លួនពាក់ព័ន្ធជាមួយអ័ក្ស y របស់ក្រាផាទេ? សូមព្យាយាមពណ៌នាផ្នែកប្រើប្រាស់ប្រសិនបើម៉ូដែលនេះ។
-អបអរសាទរ អ្នកបានបង្កើតម៉ូដែលការស្ងាត់ត្រង់លីនុយ (linear regression) ជាលើកដំបូងរបស់អ្នក សរសេរផ្នែកទាយទុកជាមួយវា ហើយបង្ហាញវានៅក្នុងផ្លូតមួយហើយ!
+សូមអបអរសាទរ អ្នកបានបង្កើតម៉ូដែលវាយតម្លៃបញ្ច្រាសត្រង់ដ៏ដំបូងរបស់អ្នកហើយបានបង្កើតការទាយដោយវា និងបង្ហាញវា នៅក្នុងក្រាផា!
---
-## 🚀បញ្ហា
+## 🚀ការប្រកួតប្រជែង
-បង្ហាញអថេរផ្សេងទៀតពីឃุ่มទិន្នន័យនេះ។ គំនិតបញ្ជាក់៖ កែសម្រួលបន្ទាត់នេះ `X = X[:,2]`។ ប្រសិនបើឃุ่มទិន្នន័យនេះមានគោលដៅ អ្នកអាចរកឃើញអ្វីខ្លះអំពីការរីកចំរូងនៃជំងឺទាំងនេះដូចជាជំងឺទឹកនោមផ្អែម?
-## [ស៊ែវសំណួរ បន្ទាប់ពីមេរៀន](https://ff-quizzes.netlify.app/en/ml/)
+គូសរាងឬធាតុផ្សេងពីសំណុំទិន្នន័យនេះ។ ការជំនួយ៖ កែប្រែបន្ទាត់នេះ៖ `X = X[:,2]`។ ដើម្បីផ្អែកលើគោលដៅនៃតារាងទិន្នន័យនេះ តើអ្នកអាចរកឃើញអ្វីខ្លះអំពីវឌ្ឍនភាពនៃជម្ងឺជាតិដ сладរ?
+## [សំនួរបន្ទាប់មកកាន់បន្ទះរៀន](https://ff-quizzes.netlify.app/en/ml/)
-## ការពិនិត្យឡើងវិញ និងសិក្សាផ្ទាល់ខ្លួន
+## ការត្រួតពិនិត្យ និងរៀនដោយខ្លួនឯង
-នៅក្នុងមេរៀននេះ អ្នកបានចាប់ផ្តើមជាមួយការស្ងាត់ត្រង់លីនុយធម្មតា មិនមែនការស្ងាត់ត្រង់លីនុយមួយអថេរ ឬច្រើនអថេរទេ។ សូមអានអំពីភាពខុសគ្នារវាងវិធីសាស្រ្តទាំងនេះ ឬមើលវីដេអូនេះ [វីដេអូ](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef)។
+នៅក្នុងមេរៀននេះ អ្នកបានប្រើម៉ូដែលវាយតម្លៃបញ្ច្រាសត្រង់សាមញ្ញជាង វាយតម្លៃបញ្ច្រាសតែមួយឬច្រើន។ សូមអានបន្ថែមអំពីភាពខុសគ្នារវាងវិធីទាំងនេះ ឬមើលវីដេអូនេះ [វីដេអូនេះ](https://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) ដើម្បីជ្រាបច្បាស់ជាងនេះ។
+អានបន្ថែមអំពីគំនិតនៃការវាយតម្លៃបញ្ច្រាស និងគិតពីប្រភេទសំណួរដែលអាចឆ្លើយបានដោយបច្ចេកទេសនេះ។ ទទូលបានមេរៀននេះ [មេរៀននេះ](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) ដើម្បីជម្រៅចំណេះដឹងរបស់អ្នក។
-## ការតែងការងារ
+## ភារកិច្ច
-[ឃุ่มទិន្នន័យផ្សេងទៀត](assignment.md)
+[សំណុំទិន្នន័យផ្សេងទៀត](assignment.md)
---
-**ការបដិសេធ**៖
-ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលដែលយើងខិតខំសម្លឹងរកភាពត្រឹមត្រូវ សូមចំណាំថាការបកប្រែដោយស្វ័យប្រវត្តិក៏អាចមានកំហុសឬភាពមិនត្រឹមត្រូវបាន។ ឯកសារដើមជាភាសាដើមគួរត្រូវបានគិតថាជាមូលដ្ឋានគោល។ សម្រាប់ព័ត៌មានសំខាន់ៗ ការបកប្រែដោយមនុស្សអ្នកជំនាញត្រូវបានផ្តល់អាណាព្យាបាល។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកស្រាយខុសៗណាមួយដែលកើតមានពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។
+**ការបដិសេធ**:
+ឯកសារនេះត្រូវបានបម្លែងភាសា ដោយប្រើសេវាបម្លែងភាសា AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ទោះយើងខ្ញុំមានក្តីប្រាថ្នាឱ្យបានច្បាស់លាស់ តែសូមយល់ដឹងថាការបម្លែងដោយស្វ័យប្រវត្តិក៏អាចមានកំហុសឬភាពមិនត្រឹមត្រូវ។ ឯកសារដើមជាភាសាទីតាំងគួរត្រូវបានគេប្រើជាប្រភពច្បាស់លាស់។ សម្រាប់ព័ត៌មានសំខាន់ៗ សូមណែនាំឱ្យប្រើប្រាស់ការប្រែដោយមនុស្សជំនាញ។ យើងខ្ញុំមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកស្រាយខុសបន្ទាប់ពីការប្រើប្រាស់ការបម្លែងនេះនោះទេ។
\ No newline at end of file
diff --git a/translations/km/2-Regression/2-Data/README.md b/translations/km/2-Regression/2-Data/README.md
index 44ecc3c36..61f11ad37 100644
--- a/translations/km/2-Regression/2-Data/README.md
+++ b/translations/km/2-Regression/2-Data/README.md
@@ -1,91 +1,91 @@
-# បង្កើតម៉ូដែលរេហ្គ្រេសស្យុងដោយប្រើ Scikit-learn៖ រៀបចំ និងវិចិត្រស័ក្តិទិន្នន័យ
+# សង់ម៉ូដែលការត្រួតពិនិត្យតម្លៃវិញដោយប្រើ Scikit-learn: រៀបចំនិងបង្ហាញទិន្នន័យ
-
+
-តារាងវិចិត្រស័ក្តិដោយ [Dasani Madipalli](https://twitter.com/dasani_decoded)
+រូបភាពបង្ហាញដោយ [Dasani Madipalli](https://twitter.com/dasani_decoded)
-## [តេស្តមុនម៉េរៀន](https://ff-quizzes.netlify.app/en/ml/)
+## [សំណួរពីមុនបោះពុម្ព](https://ff-quizzes.netlify.app/en/ml/)
-> ### [មេរៀននេះមានក្នុងភាសា R ផងដែរ!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
+> ### [មេរៀននេះមាននៅក្នុងភាសា R!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
-## ទីផ្សារណ៍
+## ការណែនាំ
-ឥឡូវនេះអ្នកបានរៀបចំឧបករណ៍ដែលត្រូវការសម្រាប់ការចាប់ផ្តើមបង្កើតម៉ូដែលម៉ាស៊ីនរៀនជាមួយ Scikit-learn ហើយ អ្នករួចរាល់ក្នុងការចាប់ផ្តើមសួរចម្លើយពីទិន្នន័យរបស់អ្នក។ ពេលអ្នកធ្វើការជាមួយទិន្នន័យ និងអនុវត្តន៍ដោះស្រាយ ML វាសំខាន់ណាស់ក្នុងការយល់ដឹងពីរបៀបសួរចម្លើយត្រឹមត្រូវ ដើម្បីអាចបើកសមត្ថភាពនៃទិន្នន័យរបស់អ្នកបានត្រឹមត្រូវ។
+ឥឡូវនេះដែលអ្នកបានរៀបចំឧបករណ៍ដែលត្រូវការដើម្បីចាប់ផ្តើមសាងម៉ូដែលបច្ចេកវិទ្យាសិក្សាម៉ាស៊ីនជាមួយ Scikit-learn អ្នករួចរាល់ដើម្បីចាប់ផ្តើមសួរបញ្ហានៅលើទិន្នន័យរបស់អ្នក។ នៅពេលដែលអ្នកប្រើទិន្នន័យនិងអនុវត្តដំណោះស្រាយ ML វាមានសារៈសំខាន់ណាស់ក្នុងការយល់ពីរបៀបសួរបញ្ហាដូចត្រូវដើម្បីដោះស្រាយសមត្ថភាពរបស់ទិន្នន័យរបស់អ្នកបានត្រឹមត្រូវ។
-ក្នុងមេរៀននេះ អ្នកនឹងរៀនពី៖
+ក្នុងមេរៀននេះ អ្នកនឹងសិក្សា:
-- របៀបរៀបចំព័ត៌មានរបស់អ្នកសម្រាប់ការបង្កើតម៉ូដែល។
-- របៀបប្រើ Matplotlib សម្រាប់វិចិត្រស័ក្តិនិន្នន័យ។
+- របៀបរៀបចំទិន្នន័យសម្រាប់ការសង់ម៉ូដែល។
+- របៀបប្រើ Matplotlib សម្រាប់បង្ហាញទិន្នន័យ។
+- របៀបប្រើ Seaborn សម្រាប់បង្ហាញទិន្នន័យយ៉ាងមានអារម្មណ៍ច្រើនជាងនេះ។
-## សួរចម្លើយត្រឹមត្រូវពីទិន្នន័យរបស់អ្នក
+## សួរបញ្ហាដូចត្រូវនៅលើទិន្នន័យរបស់អ្នក
-ចម្លើយដែលអ្នកត្រូវការបាននឹងកំណត់ប្រភេទអាល់ហ្គូរីធម៍ ML ដែលអ្នកនឹងប្រើ។ ហើយគុណភាពនៃចម្លើយដែលបានត្រឡប់មកវិញ គឺពឹងផ្អែកយ៉ាងខ្លាំងលើធម្មជាតិនៃទិន្នន័យរបស់អ្នក។
+បញ្ហាដែលអ្នកត្រូវការជួបចម្លើយនឹងកំណត់ប្រភេទអាល់ហ្គរីធម៍ ML ដែលអ្នកនឹងប្រើប្រាស់។ ហើយគុណភាពនៃចម្លើយដែលអ្នកទទួលបាននឹងសង្កត់សំខាន់ផ្អែកលើធម្មជាតិរបស់ទិន្នន័យរបស់អ្នក។
-ចូរមើល [ទិន្នន័យ](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) ដែលបានផ្តល់សម្រាប់មេរៀននេះ។ អ្នកអាចបើកឯកសារ .csv នេះនៅក្នុង VS Code។ ការមើលលឿនភ្លាមៗបង្ហាញថាមានចន្លោះទទេ និងការលាយបញ្ចូលរវាងខ្សែអក្សរ និងទិន្នន័យចំនួន។ ក៏មានជួរឈរមួយហៅថា 'Package' ដែលទិន្នន័យក្នុងនោះលាយគ្នារវាង 'sacks', 'bins' និងតម្លៃផ្សេងទៀត។ ទិន្នន័យនេះ ពិតជា មិនស្អាតត្រឹមត្រូវទេ។
+សូមមើលទិន្នន័យ [data](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 សម្រាប់អ្នកថ្មី - របៀបវិភាគ និងសម្អាតទិន្នន័យ")
+[](https://youtu.be/5qGjczWTrDQ "ML for beginners - របៀបវិភាគនិងសម្អាតទិន្នន័យ")
-> 🎥 ចុចរូបភាពខាងលើសម្រាប់វីដេអូខ្លីបង្ហាញពីការរៀបចំទិន្នន័យសម្រាប់មេរៀននេះ។
+> 🎥 ចុចលើរូបភាពខាងលើសម្រាប់វីដេអូចំណីទស្សនាខ្លីដែលបង្ហាញពីការត្រៀមទិន្នន័យសម្រាប់មេរៀននេះ។
-ពិតប្រាកដថា មិនប្រាកដល្អទេដែលទទួលបាន dataset ដែលរួចរាល់សម្រាប់ប្រើបង្កើតម៉ូដែល ML បានភ្លាមៗ។ ក្នុងមេរៀននេះ អ្នកនឹងរៀនរបៀបរៀបចំនូវ dataset ដើមដោយប្រើបណ្ណាល័យ Python ស្តង់ដា។ ក៏ដូចជារៀនបច្ចេកទេសខុសៗគ្នាសម្រាប់វិចិត្រស័ក្តិនៃទិន្នន័យផងដែរ។
+ពិតណាស់ វាមិនធម្មតាទេដែលទទួលបាន dataset ដែលរៀបចំរួចហើយសម្រាប់បង្កើតម៉ូដែល ML ចេញពីប្រអប់។ ក្នុងមេរៀននេះ អ្នកនឹងរៀនរបៀបរៀបចំ dataset ដើមដោយប្រើបណ្ណាល័យ Python ស្តង់ដារ។ អ្នកនឹងរៀនបច្ចេកទេសខុសៗគ្នាដើម្បីបង្ហាញទិន្នន័យ។
-## ករណីសិក្សា៖ 'ទីផ្សារមុខបឺ'
+## ករណីសិក្សា៖ 'ទីផ្សារផ្លែទុរក្រហម'
-ក្នុងថតនេះ អ្នកនឹងរកឃើញឯកសារ .csv មួយនៅក្នុងថតឫស `data` ហៅថា [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) ដែលមានជួរដេក ១៧៥៧ នៃទិន្នន័យអំពីទីផ្សារវាយផ្លែគោល ដែលត្រូវបានចែកជាក្រុមតាមក្រុង។ ទិន្នន័យដើមនេះបញ្ចេញពី [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) ដែលចែកចាយដោយក្រសួងកសិកម្មសហរដ្ឋអាមេរិក។
+នៅក្នុងថតនេះ អ្នកនឹងរកឃើញឯកសារ .csv ក្នុងថត `data` ដែលឈ្មោះ [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) ដែលមានបន្ទាត់ទិន្នន័យ ១៧៥៧ ស្តីពីទីផ្សារផ្លែទុរក្រហម ដែលត្រូវបានចាត់ថ្នាក់ជាក្រុមដោយទីក្រុង។ ទិន្នន័យដើមនេះបានកွត់ដោយរបាយការណ៍ស្តង់ដារជួរទីផ្សារផ្លុំផលផ្លែឈើ [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) ដែលចែកចាយដោយក្រសួងកសិកម្មសហរដ្ឋអាមេរិក។
### រៀបចំទិន្នន័យ
-ទិន្នន័យនេះមានលើសាធារណៈ។ អ្នកអាចទាញយកវាចេញជា ឯកសារច្រើនឯកសារផ្ទាល់ខ្លួនរៀងរាល់ក្រុង ពីគេហទំព័រ USDA។ ដើម្បីជៀសវាងឯកសារច្រើនពេក យើងបានបញ្ចូលទិន្នន័យក្រុងទាំងអស់ចូលក្នុងសៀវភៅ បច្ចុប្បន្ន យើងបាន _រៀបចំ_ ទិន្នន័យរួចមួយចំនួន។ បន្ទាប់មក មកមើលលម្អិតទិន្នន័យ។
+ទិន្នន័យនេះគឺជាទ្រព្យសាធារណៈ។ អ្នកអាចទាញយកវាជាជាច្រើនឯកសារផ្សេងៗ ដោយបញ្ជាក់មួយទីក្រុង ពីវែបសាយ USDA។ ដើម្បីជៀសវាងឯកសារច្រើនពេក យើងបានបញ្ចូលទិន្នន័យទីក្រុងទាំងអស់ចូលទៅក្នុងសៀវភៅកំណត់ត្រាមួយ ដូច្នេះហើយ យើងបានរៀបចំទិន្នន័យមានផាសុកភាពបន្តិច។ បន្ទាប់មក សូមមើលទិន្នន័យជិតស្និទ្ធ។
-### ទិន្នន័យវាយផ្លែគោល - សេចក្ដីសន្និដ្ឋានដំបូង
+### ទិន្នន័យផ្លែទុរក្រហម - សេចក្ដីសន្និដ្ឋានដើម
-តើអ្នកមើលឃើញអ្វីពីទិន្នន័យនេះ? អ្នកបានឃើញថាមានការលាយបញ្ចូលរវាងខ្សែអក្សរ លេខ ចន្លោះទទេ និងតម្លៃចម្លែក ដែលអ្នកត្រូវយល់។
+អ្វីដែលអ្នកគួររំខានអំពីទិន្នន័យនេះ? អ្នកបានឃើញហើយថាមានការភាន់ច្រឡំនៃខ្សែអក្សរ លេខ ទទេ និងតម្លៃដ៏អស្ចារ្យដែលអ្នកត្រូវស្វែងយល់។
-តើអ្នកអាចសួរចម្លើយអំពីទិន្នន័យនេះជាមួយបច្ចេកទេស Regression យ៉ាងដូចម្ដេច? តើអ្វីមួយដូចជា "ទស្សនាថ្លៃបាយផ្លែគោលលក់នៅខែណាមួយ"? មើលទិន្នន័យម្ដងទៀត មានកែប្រែខ្លះដែលត្រូវធ្វើដើម្បីបង្កើតរចនាសម្ព័ន្ធទិន្នន័យដែលត្រូវការសម្រាប់ភារកិច្ចនេះ។
+តើអ្នកអាចសួរបញ្ហាអ្វីពីទិន្នន័យនេះ ដោយប្រើប្រាស់បច្ចេកទេសការត្រួតពិនិត្យតម្លៃវិញ (Regression)? តើអ្វីអំពី "ទស្សនាវដ្តីតម្លៃផ្លែទុរក្រហមសម្រាប់លក់នៅខែណាមួយ"។ មើលឡើងវិញទិន្នន័យ មានការផ្លាស់ប្តូរខ្លះដែលអ្នកត្រូវធ្វើដើម្បីបង្កើតរចនាសម្ព័ន្ធទិន្នន័យចាំបាច់សម្រាប់ភារកិច្ចនេះ។
+## លំហាត់ - វិភាគទិន្នន័យផ្លែទុរក្រហម
-## លំហាត់ - វិភាគទិន្នន័យវាយផ្លែគោល
+យើងនឹងប្រើ [Pandas](https://pandas.pydata.org/), (ឈ្មោះមានន័យថា `Python Data Analysis`) គ្រឿងចក្រ ។ ។ ដែលមានប្រយោជន៍សម្រាប់រៀបចំទិន្នន័យ ដើម្បីវិភាគនិងរៀបចំទិន្នន័យផ្លែទុរក្រហមនេះ។
-ចាប់ផ្តើមប្រើ [Pandas](https://pandas.pydata.org/) (ឈ្មោះមានន័យថា `Python Data Analysis`) ដែលជាឧបករណ៍មានប្រយោជន៍សម្រាប់រៀបចំទិន្នន័យ ដើម្បីវិភាគ និងរៀបចំទិន្នន័យវាយផ្លែគោលនេះ។
+### ជំហ៊ានដំបូង ពិនិត្យកាលបរិច្ឆេទខ្វះ
-### ជំហានទីមួយ - ត្រួតពិនិត្យថ្ងៃខែខ្វះ
+អ្នកត្រូវចាប់ផ្តើមដោយចាត់វិធានការ ដូច្នេះពិនិត្យកាលបរិច្ឆេទដែលខ្វះ:
-អ្នកត្រូវខំធ្វើជំហានដើម្បីត្រួតពិនិត្យមើល ថ្ងៃខែខ្វះ៖
+1. បម្លែងកាលបរិច្ឆេទទៅទ្រង់ទ្រាយខែ (ជាកាលបរិច្ឆេទសហរដ្ឋអាមេរិក ហើយទ្រង់ទ្រាយគឺជា `MM/DD/YYYY`)។
+2. ទាញខែទៅជាជួរឈរថ្មីមួយ។
-1. បំលែងថ្ងៃខែទៅទ្រង់ទ្រាយខែ (វាជាថ្ងៃខែឆ្នាំរបស់ ស.រ.អ., ដូច្នេះទ្រង់ទ្រាយគឺ `MM/DD/YYYY`)។
-2. ដកខែចេញជាជួរឈរថ្មី។
+បើកឯកសារ _notebook.ipynb_ នៅក្នុង Visual Studio Code ហើយនាំចូលសៀវភៅកំណត់ត្រាទៅជាការដាក់កថាខណ្ឌថ្មីក្នុង Pandas dataframe។
-បើកឯកសារ _notebook.ipynb_ ក្នុង Visual Studio Code ហើយនាំចូលសៀវភៅផ្ទាំងទៅក្នុង dataframe ថ្មីរបស់ Pandas។
-
-1. ប្រើមុខងារ `head()` ដើម្បីមើលជួរដេកប្រាំដំបូង។
+1. ប្រើមុខងារ `head()` ដើម្បីមើលប្រាំជួរដំបូង។
```python
import pandas as pd
pumpkins = pd.read_csv('../data/US-pumpkins.csv')
pumpkins.head()
```
-
- ✅ តើមុខងារមួយដែលអ្នកនឹងប្រើសម្រាប់មើលជួរដេកចុងបំផុតប្រាំចុងក្រោយ?
-1. ត្រួតពិនិត្យមើលថាតើមានទិន្នន័យខ្វះក្នុង dataframe បច្ចុប្បន្នទេ៖
+ ✅ តើមុខងារអ្វីដែលអ្នកនឹងប្រើដើម្បីមើលប្រាំជួរចុងក្រោយ?
+
+1. ពិនិត្យមើលថាតើមានទិន្នន័យខ្វះក្នុង dataframe បច្ចុប្បន្នទេ:
```python
pumpkins.isnull().sum()
```
-
- មានទិន្នន័យខ្វះ ប៉ុន្តែប្រហែលជាមិនមានផលប៉ះពាល់ចំពោះភារកិច្ចនេះទេ។
-1. ដើម្បីឲ្យ dataframe របស់អ្នកងាយស្រួលក្នុងការងារ ជ្រើសយកតែជួរឈរដែលអ្នកត្រូវការ ជាមួយមុខងារ `loc` ដែលដកចេញពី dataframe ដើមជាក្រុមជួរដេក (ផ្ដល់ជាម៉ាស៊ីនជុំឡើង) និងជួរឈរ (ផ្ដល់ជាម៉ាស៊ីនទីពីរ)។ ប្រើ `:` ក្នុងករណីខាងក្រោមមានន័យថា "ទាំងអស់ជួរដេក"។
+ មានទិន្នន័យខ្វះ។ ប៉ុន្តែប្រហែលជានឹងមិនមានប្រសិទ្ធិភាពសម្រាប់ភារកិច្ចនេះទេ។
+
+1. ដើម្បីធ្វើឲ្យ dataframe របស់អ្នកងាយស្រួលក្នុងការងារ ជ្រើសយកតែជួរឈរដែលអ្នកត្រូវការ តាមរយៈមុខងារ `loc` ដែលទាញយកពី dataframe ដើមជាក្រុមជួរដេកមួយ (បញ្ជូនជาพ៉ារ៉ាម៉ែត្រដំបូង) និងជួរឈរ (បញ្ជូនជាជាម៉ារ៉ាម៉ែត្រទីពីរ)។ ប្រើសញ្ញា `:` ក្នុងករណីនេះមានន័យថា "ជួរដេកទាំងអស់"។
```python
columns_to_select = ['Package', 'Low Price', 'High Price', 'Date']
pumpkins = pumpkins.loc[:, columns_to_select]
```
-
-### ជំហានទីពីរ - កំណត់ថ្លៃមធ្យមនៃបាយផ្លែគោល
-គិតពីរបៀបកំណត់ថ្លៃមធ្យមនៃបាយផ្លែគោលក្នុងខែណាមួយ។ តើជួរឈរណាដែលអ្នកនឹងជ្រើសសម្រាប់ភារកិច្ចនេះ? គំនិត៖ អ្នកត្រូវការជួរឈរបី។
+### ជំហ៊ានទីពីរ កំណត់តម្លៃមធ្យមនៃផ្លែទុរក្រហម
+
+សូមគិតពីរបៀបកំណត់តម្លៃមធ្យមនៃផ្លែទុរក្រហមនៅក្នុងខែណាមួយ។ តើជួរឈរអ្វីដែលអ្នកនឹងជ្រើសសម្រាប់ភារកិច្ចនេះ? ការណែនាំ៖ អ្នកនឹងត្រូវការជួរឈរបី។
-ដំណោះស្រាយ៖ គណនាមធ្យមនៃជួរឈរ `Low Price` និង `High Price` ដើម្បីបង្កើតជួរឈរថ្លៃថ្មី ហើយបំលែងជួរឈរ Date ឲ្យបង្ហាញតែខែប៉ុណ្ណោះ។សំណាងល្អ គិតតាមការត្រួតពិនិត្យខាងលើ គ្មានទិន្នន័យខ្វះសម្រាប់ថ្ងៃខែឬថ្លៃទេ។
+ដំណោះស្រាយ៖ យកតម្លៃមធ្យមនៃជួរឈរ `Low Price` និង `High Price` ដើម្បីបញ្ចូលទៅក្នុងជួរឈរថ្មី Price ហើយបម្លែងជួរឈរ Date ដើម្បីបង្ហាញតែខែប៉ុណ្ណោះ។ មហាសំណាង តាមការត្រួតពិនិត្យខាងលើ គ្មានទិន្នន័យខ្វះសម្រាប់កាលបរិច្ឆេទឬតម្លៃឡើយ។
1. ដើម្បីគណនាមធ្យម បន្ថែមកូដដូចខាងក្រោម៖
@@ -95,77 +95,77 @@
month = pd.DatetimeIndex(pumpkins['Date']).month
```
-
- ✅ អ្នកអាចបោះពុម្ព `print(month)` ដើម្បីត្រួតពិនិត្យទិន្នន័យណាមួយបាន។
-2. ឥឡូវនេះ ចម្លងទិន្នន័យដែលបានបំលែងទៅក្នុង dataframe ថ្មីរបស់ Pandas៖
+ ✅ អ្នកអាចបោះពុម្ពទិន្នន័យណាមួយដែលចង់ពិនិត្យដោយប្រើ `print(month)`។
+
+2. ឥឡូវនេះ ចម្លងទិន្នន័យបម្លែងរបស់អ្នកទៅជា dataframe Pandas ថ្មីមួយ៖
```python
new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price})
```
-
- ការបោះពុម្ព dataframe នឹងបង្ហាញ dataset ស្អាតនិងមានរបៀប ដែលអ្នកអាចប្រើបង្កើតម៉ូដែល regression ថ្មីរបស់អ្នក។
-### តែរង់ចាំ! មានអ្វីមួយចម្លែកនៅទីនេះ
+ ការបោះពុម្ព dataframe របស់អ្នកនឹងបង្ហាញ dataset ដែលបានសម្អាត និងមានរបៀបល្អសម្រាប់បង្កើតម៉ូដែលត្រួតពិនិត្យតម្លៃវិញថ្មី។
+
+### ប៉ុន្ដែរង់ចាំ! មានអ្វីមួយចម្លែកនៅទីនេះ
-បើអ្នកមើលជួរឈរ `Package` សូមមើលថា វាយផ្លែគោលត្រូវបានលក់ក្នុងការរៀបចំផ្សេងៗគ្នាច្រើន។ មានករណីលក់ជា '1 1/9 bushel', '1/2 bushel', លក់ជា ខ្នាយ ផ្ទាល់, លក់ជា ផោន និងលក់ក្នុងប្រអប់ធំៗដែលមានទទឹងខុសៗគ្នា។
+ប្រសិនបើអ្នកមើលជួរឈរ `Package` ផ្លែទុរក្រហមត្រូវបានលក់ក្នុងការរៀបចំបួនពហុក្បាល។ មួយចំនួនត្រូវបានលក់ក្នុងវិមាត្រដូចជា '1 1/9 bushel' និង '1/2 bushel' មួយចំនួនតាមផ្លែ ទម្ងន់ និងខ្ទង់ធំៗ។
-> បាយផ្លែគោលហាក់ដូចជាពិបាកវាស់ទំងន់ដោយសរុបផ្នែកមួយទេ។
+> ផ្លែទុរក្រហមហាក់ដូចជាលំបាកក្នុងការវាស់ទម្ងន់យ៉ាងមានលក្ខណៈស្តង់ដារ។
-ស្វែងរកជាងទិន្នន័យដើម គួរឱ្យចាប់អារម្មណ៍ថា ទាំងអស់មាន `Unit of Sale` ស្មើជា 'EACH' ឬ 'PER BIN' ត្រូវបានប្រើ `Package` ប្រភេទ តាមអាំងឆ្វេង មិនដូចគ្នា ឬ 'each'។ បាយផ្លែគោលហាក់ដូចជាពិបាកវាស់ទំងន់ច្បាស់លាស់ ដូចនេះយើងត្រូវតែចម្រោះសម្រាប់បាយផ្លែគោលដែលមានខ្សែអក្សរ 'bushel' ក្នុងជួរឈរ `Package` របស់ពួកវា។
+ការវិភាគទិន្នន័យដើម គួរឱ្យចាប់អារម្មណ៍ថា ណាមួយដែលមាន `Unit of Sale` ស្មើនឹង 'EACH' ឬ 'PER BIN' ក៏មានប្រភេទ `Package` ជាម៉ែត្ររយៈ, ប្រអប់ ឬ 'មួយ'។ ផ្លែទុរក្រហមហាក់មិនងាយក្នុងការវាស់ទម្ងន់យ៉ាងមានលក្ខណៈស្តង់ដារ ដូច្នេះយើងចាប់ជម្រើសតែផ្លែទុរក្រហមដែលមានខ្សែអក្សរថា 'bushel' នៅក្នុងជួរឈរ `Package`។
-1. បន្ថែមហ្វីលទ័រមួយនៅផ្នែកលើឯកសារ ខាងក្រោមការនាំចូល .csv ដើម៖
+1. បន្ថែមស្ត្រង់កំណត់នៅលើទំព័រឯកសារ ខាងក្រោមការនាំចូល .csv ដំបូង៖
```python
pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]
```
-
- បើអ្នកបោះពុម្ពទិន្នន័យឥឡូវនេះ អ្នកនឹងឃើញថា តែជួរដេកប្រហែល ៤១៥ ដែលមានបាយផ្លែគោលតាម bushel ត្រូវបានយកតែប៉ុណ្ណោះ។
-### តែរង់ចាំ! មានទៀតអ្វីមួយត្រូវធ្វើបន្ថែម
+ ប្រសិនបើអ្នកបោះពុម្ពទិន្នន័យឥឡូវនេះ អ្នកនឹងមើលឃើញតែប្រហែល ៤១៥ ជួរដេកនៃទិន្នន័យដែលមានផ្លែទុរក្រហមដោយ bushel។
+
+### ប៉ុន្ដែរង់ចាំ! មានរឿងត្រូវធ្វើបន្ថែមទៀត
-តើអ្នកមើលឃើញថា បរិមាណ bushel ផ្លាស់ប្ដូរតាមជួរដេកមែនទេ? អ្នកត្រូវធ្វើការទម្រង់តម្លៃតាម bushel សម្រាប់បង្ហាញតម្លៃតាម bushel ដូច្នេះត្រូវធ្វើគណិតវិទ្យាដើម្បីធ្វើឲ្យវាមានភាពស្តង់ដារ។
+តើអ្នកបានយកចិត្តទុកដាក់ទេថាបរិមាណ bushel ផ្លែទុរក្រហមប្រែប្រួលទៅតាមជួរដេក? អ្នកត្រូវត្រួតត្រាតម្លៃឲ្យស្តង់ដារឡើង ដូច្នេះត្រូវធ្វើកិច្ចការ គណនា ដើម្បីធ្វើឲ្យវាដោយស្តង់ដារ។
-1. បន្ថែមជួរដេកខាងក្រោមប្លុកបង្កើត dataframe new_pumpkins៖
+1. បន្ថែមបន្ទាត់ទាំងនេះនៅបន្ទាប់ប្លុកបង្កើត dataframe new_pumpkins:
```python
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9)
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2)
```
-
-✅ ដោយយោងទៅតាម [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), ទំងន់នៃ bushel អាស្រ័យលើប្រភេទផលិតផល ដូចជា វាជាបរិមាណមួយ។ "Bushel ត្រសក់ គឺត្រូវមានទំងន់ ៥៦ ផោន... ដល់ស្លឹកបៃតង មានទំហំធំជាង និងទំងន់តិចជាង bushel ត្រសក់ spinach គឺមានតែ ២០ ផោន"។ វាមិនងាយស្រួលទេ! យើងមិនបានបំលែង bushel ទៅផោនឡើយ តែប្រើតម្លៃតាម bushel។ ការសិក្សានេះពោរពេញដោយសារៈសំខាន់ក្នុងការយល់ដឹងធម្មជាតិនៃទិន្នន័យរបស់អ្នក!
-ឥឡូវនេះ អ្នកអាចវិភាគតម្លៃរាប់តាមឯកតាជាផ្អែកលើការវាស់ bushel របស់ពួកវា។ ប្រសិនបើអ្នកបោះពុម្ពទិន្នន័យនេះម្តងទៀត អ្នកនឹងឃើញភាពស្តង់ដារ។
+✅ យោងទៅតាម [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) ទម្ងន់មួយ bushel អាស្រ័យទៅលើប្រភេទផលិតផល ដូចជាវាជាមាត្របម្រុងទំហំ។ "Bushel មួយនៃត្របែក ត្រូវវាស់ទម្ងន់បាន ៥៦ ផោន... ស្លឹកបន្លែ និងបន្លែមានទំហំធំ និងទម្ងន់តិច ដូច្នេះ bushel នៃសាឡាដត្រជាក់ គឺមានទម្ងន់ត្រឹម ២០ ផោន។" វាជារឿងស្មុគស្មាញណាស់! មិនត្រូវបំភាយការបម្លែងពី bushel ទៅផោន ទៅជាទម្ងន់ទេ ហើយត្រូវកំណត់តម្លៃដោយ bushel ពេញលេញ។ ការសិក្សាទាំងនេះអំពី bushel ផ្លែទុរក្រហមបង្ហាញថាសំខាន់ណាស់ក្នុងការយល់ដឹងពីធម្មជាតិទិន្នន័យរបស់អ្នក!
-✅ តើអ្នកមើលឃើញទេថា ផ្លែគោលដែលលក់ដោយ bushel ផ្នែកកន្លះមានតម្លៃថ្លៃជាង? តើអ្នកអាចសន្និដ្ឋានពីមូលហេតុបានទេ? គំនិត៖ បាយផ្លែគោលតូចៗ មានតំលៃថ្លៃជាងបាយធំៗ ព្រោះមានច្រើនជាងនៅក្នុង bushel មួយ ដោយផ្អែកលើកន្លែងទំនេរដែលមានរវាងវាយដ៏ធំនិងផ្លែគោល។
+ឥឡូវនេះ អ្នកអាចវិភាគតម្លៃក្នុងមួយឯកតា ដែលអាស្រ័យលើការវាស់វែង bushel។ ប្រសិនបើអ្នកបោះពុម្ពទិន្នន័យម្ដងទៀត អ្នកនឹងឃើញវាបានស្តង់ដាររួចហើយ។
-## វិធីសាស្រ្តវិចិត្រស័ក្តិ
+✅ តើអ្នកត្រូវដឹងទេថា ផ្លែទុរក្រហមដែលលក់ដោយមួយថូ bushel តម្លៃថ្លៃណាស់? តើអ្នកអាចកំណត់ហេតុផលបានទេ? ការណែនាំ៖ ផ្លែទុរក្រហមតូចៗថ្លៃជាងវាល្អ ព្រោះមានច្រើនជាងក្នុងមួយ bushel បើប្រៀបធៀបនឹងផ្លែធំមួយ សម្រាប់រាងខោអាវដូចជា pumpkin hollow pie ដែលមានកន្លែងទទេ។
-ផ្នែកមួយនៃភារកិច្ចរបស់វិទ្យាសាស្ដ្រ ទិន្នន័យគឺការបង្ហាញពីគុណភាព និងធម្មជាតិនៃទិន្នន័យដែលពួកគេទទួលបាន។ ដើម្បីធ្វើបែបនេះ មិនហ៊ានតែបង្កើតវិចិត្រស័ក្តិស្អាតៗជានិច្ច ឬ អត្រា គន្លង និងក្រាផបាន សម្រាប់បង្ហាញប្រភេទផ្សេងៗនៃទិន្នន័យ។ តាមរយៈនេះ ពួកគេអាចបង្ហាញទំនាក់ទំនង និងកន្លែងខ្វះខាតដែលពិបាកសំរេចដោយការមើលតាមផ្ទាល់។
+## វិធីសាស្រ្តបង្ហាញទិន្នន័យ
-[](https://youtu.be/SbUkxH6IJo0 "ML សម្រាប់អ្នកថ្មី - របៀបវិចិត្រស័ក្តិនិន្នន័យជាមួយ Matplotlib")
+ភាគមួយនៃតួអង្គរបស់អ្នកវិទ្យាសាស្ត្រទិន្នន័យគឺបង្ហាញគុណភាពនិងធម្មជាតិទិន្នន័យដែលពួកគេចង់ដំណើរការជាមួយ។ ដើម្បីធ្វើដូចនេះ ពួកគេជាញឹកញាប់បង្កើតការបង្ហាញទិន្នន័យគួរឱ្យចាប់អារម្មណ៍ ឬក្រាហ្វិក, គំនូស និងតារាង បង្ហាញបំណែកផ្សេងៗនៃទិន្នន័យ។ ដោយវិធីនេះ ពួកគេអាចបង្ហាញចំណងជើងនិងចន្លោះដែលលំបាកក្នុងការរកឃើញ។
-> 🎥 ចុចរូបភាពខាងលើសម្រាប់វីដេអូខ្លីបង្ហាញពីការវិចិត្រស័ក្តិនិន្នន័យសម្រាប់មេរៀននេះ។
+[](https://youtu.be/SbUkxH6IJo0 "ML for beginners - របៀបបង្ហាញទិន្នន័យជាមួយ Matplotlib")
-វិចិត្រស័ក្តិអាចជួយកំណត់បច្ចេកទេសម៉ាស៊ីនរៀនដែលសមស្របបំផុតសម្រាប់ទិន្នន័យបាន។ គំនូស scatterplot ដែលហាក់ដូចតាមបន្ទាត់ បានបង្ហាញថាទិន្នន័យល្អសម្រាប់ការប្រើ regression របៀបលីនេអ៊ែរ។
+> 🎥 ចុចលើរូបភាពខាងលើសម្រាប់វីដេអូចំណីទស្សនាខ្លីដែលបង្ហាញពីការបង្ហាញទិន្នន័យសម្រាប់មេរៀននេះ។
-បណ្ណាល័យវិចិត្រស័ក្តិទិន្នន័យមួយដែលដំណើរការល្អក្នុង Jupyter notebooks គឺ [Matplotlib](https://matplotlib.org/) (ដែលអ្នកបានឃើញមុននេះក្នុងមេរៀនមុន)។
+ការបង្ហាញទិន្នន័យអាចជួយកំណត់បច្ចេកទេសសិក្សាម៉ាស៊ីនដែលសមស្របជាងសម្រាប់ទិន្នន័យ។ គំនូស scatterplot ដែលហាក់ដូចតាមស្រឡាយបង្ហាញថាទិន្នន័យគឺជាក្រុមដែលសមស្របសម្រាប់តេស្តការត្រួតពិនិត្យតម្លៃវិញបច្ចេកទេសវិធីសាស្រ្តបន្ទាត់។
-> ទទួលបានបទពិសោធន៍បន្ថែមជាមួយវិចិត្រស័ក្តិនិន្នន័យក្នុង [មេរៀនទាំងនេះ](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott)។
+មួយក្នុងចំណោមបណ្ណាល័យបង្ហាញទិន្នន័យដែលដំណើរការល្អក្នុង 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 ថ្មីដែលអ្នកបានបង្កើត។ តើគំនូសបន្ទាត់មូលដ្ឋាននឹងបង្ហាញអ្វី?
+ព្យាយាមបង្កើតគំនូសមូលដ្ឋានខ្លះៗ ដើម្បីបង្ហាញ dataframe ថ្មីដែលអ្នកទើបបង្កើត។ គំនូសបន្ទាត់មូលដ្ឋាននឹងបង្ហាញអ្វី?
-1. នាំចូល Matplotlib នៅផ្នែកលើឯកសារ ក្រោមការនាំចូល Pandas៖
+1. នាំចូល Matplotlib នៅលើផ្ទៃឯកសារ ខាងក្រោមនាំចូល Pandas:
```python
import matplotlib.pyplot as plt
```
-
-1. ដំណើរការសៀវភៅគ្រាន់ចប់ម្តងទៀតសម្រាប់បន្ទាន់សម័យ។
-1. នៅខាងក្រោមនៃសៀវភៅបន្ថែមកោសិកាដើម្បីគូសទិន្នន័យជាប្រអប់៖
+
+1. រត់ម្តងទៀតនូវសៀវភៅកំណត់ត្រាទាំងមូល ដើម្បីធ្វើឱ្យទាន់សម័យ។
+1. នៅចុងសៀវភៅកំណត់ត្រា បន្ថែមកោសិកាមួយសម្រាប់គំនូសទិន្នន័យជាតារាងប្រអប់ (box):
```python
price = new_pumpkins.Price
@@ -173,47 +173,122 @@
plt.scatter(price, month)
plt.show()
```
-
- 
- តើនេះជាគំនូសមានប្រយោជន៍ទេ? តើមានអ្វីណាមួយដែលធ្វើឲ្យអ្នកភ្ញាក់ផ្អើលទេ?
+ 
- វាមិនមានប្រយោជន៍ពិសេសណាស់ទេ ពីព្រោះវាគ្រាន់តែបង្ហាញទិន្នន័យរបស់អ្នកជាចំនុចច散នៅក្នុងខែណាមួយ។
+ តើនេះជាគំនូសមានប្រយោជន៍ដែរឬទេ? តើមានអ្វីដែលធ្វើឲ្យអ្នកភ្ញាក់ផ្អើលទេ?
+
+ វាមិនមានប្រយោជន៍ពិសេស យ៉ាងហោចណាស់វាបង្ហាញតែចំណុចចែកចាយទិន្នន័យនៅខែមួយ។
### ធ្វើឲ្យវាមានប្រយោជន៍
-ដើម្បីទទួលបានតារាងបង្ហាញទិន្នន័យដែលមានប្រយោជន៍ អ្នកត្រូវតែផ្ដុំទិន្នន័យមួយរបៀបណាមួយ។ យើងសាកល្បងបង្កើតគំនូសដែលភាគល្អិត y បង្ហាញខែ និងទិន្នន័យបង្ហាញការបែងចែកទិន្នន័យ។
+ដើម្បីឲ្យតារាងបង្ហាញទិន្នន័យមានប្រយោជន៍ អ្នកភ្លឹតត្រូវតែក្រុមទិន្នន័យមួយរបៀបណាមួយ។ ព្យាយាមបង្កើតគំនូសដែលពីអ័ក្ស y បង្ហាញខែ ខណ:ដែលទិន្នន័យបង្ហាញពីចំណែកនៃទិន្នន័យ។
-1. បន្ថែមកោសិកាមួយសម្រាប់បង្កើតតារាងជាតារាងប៊ា៖
+1. បន្ថែមកោសិកាមួយសម្រាប់បង្កើតគំនូសតារាងបន្ទាត់ជាក្រុម (grouped bar chart):
```python
new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar')
plt.ylabel("Pumpkin Price")
```
-
- 
- នេះជាវិចិត្រស័ក្តិទិន្នន័យមានប្រយោជន៍ជាងមុនទេ! វាហាក់ដូចបង្ហាញថាតម្លៃខ្ពស់បំផុតសម្រាប់បាយផ្លែគោលមាននៅខែកញ្ញា និងតុលា។ តើវาตรงតាមការរំពឹងទុករបស់អ្នកទេ? ហេតុអ្វី?
+ 
+
+ នេះជាការបង្ហាញទិន្នន័យមានប្រយោជន៍ជាង! វាលើកឡើងថាតម្លៃផ្កាផ្លែទុរក្រហមខ្ពស់ក្នុងខែកញ្ញានិងតុលា។ តើវាដូចដែលអ្នករំពឹងទុករឺទេ? ហេតុអ្វីបានជាឬមិន?
+
+## លំហាត់ - សាកល្បងជាមួយ Seaborn
+
+Matplotlib មានអំណាច ប៉ុន្តែការបង្កើតគំនូសល្អៗទាមទារកូដច្រើន។ [Seaborn](https://seaborn.pydata.org/) ជាបណ្ណាល័យដែលសង់លើ Matplotlib ដែលមានគោលបំណងសម្រាប់ការបង្ហាញទិន្នន័យស្ថិតិ។ វាដំណើរការផ្ទាល់ជាមួយ Pandas dataframe អនុវត្តស្ទីលរចនាដ៏ទាក់ទាញដើម, ហើយអនុញ្ញាតឲ្យអ្នកបង្កើតគំនូសពត៌មានជាមួយកូដតិចជ្រុល។ ពីព្រោះ Seaborn បញ្ជូនតម្លៃវត្ថុ Matplotlib អ្នកនៅតែអាចប្រើប្រាស់អ្វីដែលអ្នកស្គាល់ពី Matplotlib ដើម្បីកែប្រែលទ្ធផលបាន។
+
+> ប្រសិនបើអ្នកមិនទាន់ដំឡើង Seaborn, ដំឡើងវា ដោយប្រើ `pip install seaborn`។
+
+1. នាំចូល Seaborn នៅលើផ្ទៃសៀវភៅកំណត់ត្រា តាមក្រោមនាំចូលផ្សេងទៀត។ វាត្រូវបាននាំចូលជាទូទៅជាមួយឈ្មោះ `sns`៖
+
+ ```python
+ import seaborn as sns
+ ```
+
+### គំនូស scatter ເພື່ອបង្ហាញទំនាក់ទំនង
+
+ភាគមួយធំនៃការស្វែងរកទិន្នន័យមុនការសាងម៉ូដែលគឺរកឲ្យឃើញ _ទំនាក់ទំនង_ រវាងអថេរ។ គំនូស [scatter plot](https://en.wikipedia.org/wiki/Scatter_plot) គឺជាឧបករណ៍ល្អបំផុតមួយ សម្រាប់នេះ៖ បើចំណុចហាក់ដូចតាមបន្ទាត់ អថេរពីរនេះអាចមានទំនាក់ទំនងគ្នា ដែលជាសញ្ញាល្អថាម៉ូដែលការត្រួតពិនិត្យតម្លៃវិញបន្ទាត់អាចដំណើរការ។
+
+1. បង្កើតឡើងវិញគំនូស scatter plot តម្លៃទៅខែពីមុន ពេលនេះប្រើ Seaborn's [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) (គំនូសទំនាក់ទំនង) ដែលដំណើរការផ្ទាល់ជាមួយជួរឈរ dataframe របស់អ្នក៖
+
+ ```python
+ sns.relplot(x="Price", y="Month", data=new_pumpkins)
+ ```
+
+ 
+
+ សូមចាប់អារម្មណ៍ថាអ្នកផ្ដល់ឈ្មោះជួរឈរ និង dataframe ហើយ Seaborn រក្សាថ្លាទម្រង់អ័ក្សសម្រាប់អ្នក។
+
+2. អ្នកអាចប្ដូរទៅគំនូសបន្ទាត់ដោយផ្ដល់ `kind="line"`។ Seaborn គូរពណ៌ស្រមោលបង្ហាញចន្លោះទំនុកចិត្តជុំវិញបន្ទាត់ៈ
+
+ ```python
+ sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins)
+ ```
+
+ 
+
+ ទិន្នន័យនេះស្ងើចស្ងាត់គ្នា ដោយហើយគំនូសបន្ទាត់មិនមែនជាជម្រើសច្បាស់លាស់បំផុត ទោះជាយ៉ាងណាក៏ដោយ វាបង្ហាញពីរបៀបដែលអ្នកអាចប្ដូរប្រភេទគំនូសក្នុង Seaborn បានយ៉ាងងាយស្រួល។
+
+### គំនូសតារាងបន្ទាត់បង្ហាញចំណែក
+
+
+មុននេះ អ្នកបានបំបែកទិន្នន័យដោយដៃ ដើម្បីបង្កើតតារាងស្រោមជាមួយ Matplotlib។ Seaborn's [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) (តារាងប្រភេទ) អាចធ្វើការបំបែក និងសរុបសម្រាប់អ្នកបាន។ ជាពីលំនាំដើម `kind="bar"` បង្ហាញមធ្យមភាគរបស់ក្រុមប្រភេទនីមួយៗជាមួយខ្សែខ្មៅដែលបង្ហាញពីមាឌកំណត់ទំនុកចិត្ត។
+
+1. បង្កើតតារាងស្រោមបង្ហាញតម្លៃមធ្យមក្នុងមួយខែ:
+
+ ```python
+ sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar")
+ ```
+
+ 
+
+ នេះបញ្ជាក់អ្វីដែលអ្នកបានឃើញជាមួយ Matplotlib — តម្លៃកើនឡើងជិតខែកញ្ញានឹងតុលា — ប៉ុន្តែ Seaborn ក៏បង្ហាញទ្រព្យសម្បត្តិយ៉ាងខ្លាំងថាតម្លៃ _ប្រែប្រួល_ នៅក្នុងមួយខែ។
+
+### តារាងកម្តៅដើម្បីបង្ហាញការភ្ជាប់ទាក់ទង
+
+តារាងចុចបញ្ចូលប្រៀបធៀបអថេរពីរពេលមួយ។ ពេលដែលអ្នកមានជួរឈរលេខច្រើន មួយ [heatmap](https://en.wikipedia.org/wiki/Heat_map) អនុញ្ញាតឱ្យអ្នកមើលកម្លាំងនៃទំនាក់ទំនងរវាង _គូ_ ជួរឈរទាំងអស់នៅពេលតែមួយ។ នេះជាវិធីទូទៅក្នុងការរកមើលលក្ខណៈដែលភ្ជាប់ទាក់ទងខ្លាំងជាងគេ មុននឹងជ្រើសរើសអ្វីដែលត្រូវបញ្ចូលទៅក្នុងម៉ូដែល (និងតារាងដូចគ្នានេះបង្ហាញពីក្រឡាចរណ៍ការភាន់ច្រឡំក្នុងការបែងចែកថ្នាក់នៅពេលក្រោយ)។
+
+1. បង្កើតម៉ាទ្រីសការភ្ជាប់ទាក់ទងជាមួយ Pandas បន្ទាប់មកគូរវាជាមួយ [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html) របស់ Seaborn។ ជម្រើស `annot=True` បង្ហាញតម្លៃការភ្ជាប់នៅលើក្រឡា និងជួរឈរ៖
+
+ ```python
+ correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()
+ sns.heatmap(correlations, annot=True, cmap="coolwarm")
+ ```
+
+ 
+
+ តម្លៃជិតនឹង `1` (ឬ `-1`) មានន័យថាជួរឈរនេះភ្ជាប់ _បន្ទាត់ស្រប_ យ៉ាងខ្លាំង។ សូមចំណាំថា `Low Price` និង `High Price` ត្រូវបានភ្ជាប់យ៉ាងពេញលេញ។ `Month` មួយទៀត បង្ហាញការភ្ជាប់បន្ទាត់ស្របខ្សែអតិផរណា នឹងតម្លៃ — ទោះបីជាតារាងស្រោមខាងលើបង្ហាញចំណាប់អារម្មណ៍រដូវកាលច្បាស់លាស់នៅខែកញ្ញានិងតុលា។ នេះគឺជមLesson មួយសំខាន់៖ សមាមាត្រ correlation គឺវាស់តែទំនាក់ទំនង _បន្ទាត់ស្រប_ ដែលឆ្លងកាត់ខ្សែ ហើយវាអាចខកចិត្តលើបំណះរដូវកាល ឬលំនាំដែលមិនមែនបន្ទាត់ស្របឡើយ។ ✅ ហេតុអ្វីដែរ គឺមានប្រយោជន៍ក្នុងការមើលទាំង heatmap *និង* តារាងដូចតារាងស្រោម មួយទៀតមុនពេលសម្រេចចិត្តជ្រើសរើសជួរឈរមួយ?
+
+### Matplotlib ឬ Seaborn?
+
+ទាំងពីររាយបញ្ជីនេះគួរតែស្គាល់៖
+
+- **Matplotlib** ផ្តល់ឱ្យអ្នកការគ្រប់គ្រងល្អមែនល្អលើធាតុរបស់តារាង និងជាផ្នែកមូលដ្ឋានសម្រាប់រោងចក្រ Python plotting ផ្សេងទៀតភាគច្រើន។
+- **Seaborn** ផ្តល់មុខងារលំដាប់ខ្ពស់ជាមួយលំនាំស្អាតសម្រាប់តារាងស្ថិតិ ដំណើរការយ៉ាងផ្ទាល់ជាមួយ DataFrame និងខ្លាំងធំក្នុងការវិភាគទិន្នន័យយ៉ាងឆាប់រហ័ស។
+
+វិធីធម្មតាមួយគឺប្រើការសំរាប់បំពេញ Seaborn ដើម្បីស្វែងរកទិន្នន័យយ៉ាងឆាប់រហ័ស បន្ទាប់មកចុះទៅ Matplotlib ក្រោមពេលដែលអ្នកត្រូវការប្ដូរតម្រង់លម្អិត។
---
-## 🚀 ការប្រកួតប្រជែង
+## 🚀ការប្រកួតប្រជែង
-ស្វែងយល់អំពីប្រភេទវិចិត្រស័ក្តិផ្សេងៗដែល Matplotlib ផ្តល់ជូន។ ប្រភេទណាដែលសមរម្យបំផុតសម្រាប់បញ្ហារេហ្គ្រេសស្យុង?
+ស្វែងយល់ពីប្រភេទនៃការមើលឃើញដែល Matplotlib និង Seaborn ផ្តល់ជូន។ តើប្រភេទណាខ្លះគួរឱ្យសមសម្រាប់បញ្ហាធ្វើបាត់បង់?
-## [តេស្តបន្ទាប់ម៉េរៀន](https://ff-quizzes.netlify.app/en/ml/)
+## [សំណួរប្រឡងបន្ទាប់មក](https://ff-quizzes.netlify.app/en/ml/)
-## សង្ខេប និងការសិក្សាឯកឯង
+## ការពិនិត្យឡើងវិញ និង ស្រាវជ្រាវផ្ទាល់ខ្លួន
-សូមមើលវិធីជាច្រើនក្នុងការវិចិត្រស័ក្តិនិន្នន័យ។ បង្កើតបញ្ជីបណ្ណាល័យផ្សេងៗ និងសម្គាល់ថាបណ្ណាល័យណាដែលល្អបំផុតសម្រាប់ភារកិច្ចបច្ចេកទេសផ្សេងៗ ដូចជាវិចិត្រស័ក្តិ 2D និង 3D។ តើអ្នកបានរកឃើញអ្វីខ្លះ?
+មើលមុខវិធីជាច្រើនក្នុងការមើលឃើញទិន្នន័យ។ បំបែកបញ្ជីបណ្ណាល័យនានាដែលមាន នៅតែមើលថាអ្វីខ្លះសមល្អសម្រាប់បេសកកម្មណាមួយដូចជា 2D និង 3D ទិដ្ឋភាព។ តើអ្នករកឃើញអ្វីខ្លះ?
-## កាតព្វកិច្ច
+## ភារកិច្ច
-[ការស្វែងរកវិចិត្រស័ក្តិ](assignment.md)
+[ស្វែងយល់ពីការមើលឃើញ](assignment.md)
---
-**ការបដិសេធ**៖
-ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលយើងខិតខំរកសុពលភាព យើងសូមអោយស្គាល់ថាការបកប្រែដោយស្វ័យប្រវត្តិកុំព្យូទ័រអាចមានកំហុសឬការខកខានខ្លះ។ ឯកសារដើមជាភាសាដើមគួរត្រូវបានចាត់ទុកជាមធ្យោបាយដែលមានសិទ្ធិពេញលេញ។ សម្រាប់ព័ត៌មានដែលសំខាន់ ការបកប្រែដោយអ្នកជំនាញវិជ្ជាជីវៈត្រូវបានផ្តល់អនុសាសន៍។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំឬការបកប្រែមិនត្រឹមត្រូវណាមួយដែលកើតឡើងពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។
+**ការបដិសេធ**:
+ឯកសារនេះត្រូវបានបម្លែងភាសា ដោយប្រើសេវាបម្លែងភាសា AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ទោះយើងខ្ញុំមានក្តីប្រាថ្នាឱ្យបានច្បាស់លាស់ តែសូមយល់ដឹងថាការបម្លែងដោយស្វ័យប្រវត្តិក៏អាចមានកំហុសឬភាពមិនត្រឹមត្រូវ។ ឯកសារដើមជាភាសាទីតាំងគួរត្រូវបានគេប្រើជាប្រភពច្បាស់លាស់។ សម្រាប់ព័ត៌មានសំខាន់ៗ សូមណែនាំឱ្យប្រើប្រាស់ការប្រែដោយមនុស្សជំនាញ។ យើងខ្ញុំមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកស្រាយខុសបន្ទាប់ពីការប្រើប្រាស់ការបម្លែងនេះនោះទេ។
\ No newline at end of file
diff --git a/translations/km/2-Regression/2-Data/solution/notebook.ipynb b/translations/km/2-Regression/2-Data/solution/notebook.ipynb
index 153fffe07..2f08e1720 100644
--- a/translations/km/2-Regression/2-Data/solution/notebook.ipynb
+++ b/translations/km/2-Regression/2-Data/solution/notebook.ipynb
@@ -4,7 +4,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## លីនអ៊ែរ រេក្រេសសិន សម្រាប់ផំពក់ទក - មេរៀនទី ២\n"
+ "## ការសម្រួលរាបស្មើសម្រាប់កំចាត់ទឹកក្រូចឆ្លុះ - មេរៀនទី 2\n"
]
},
{
@@ -222,6 +222,7 @@
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
"pumpkins = pd.read_csv('../../data/US-pumpkins.csv')\n",
"\n",
"pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]\n",
@@ -385,18 +386,78 @@
"plt.ylabel(\"Pumpkin Price\")"
]
},
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## ការចាក់បង្ហាញជាមួយ Seaborn\n",
+ "\n",
+ "[Seaborn](https://seaborn.pydata.org/) ត្រូវបានបង្កើតនៅលើ Matplotlib ហើយធ្វើការជាមួយ dataframes ដោយផ្ទាល់ ដែលធ្វើឱ្យវាបង្កើតគំនូសស្ថិតិដែលទាក់ទាញបានយ៉ាងលឿនជាមួយកូដតិចតួច។\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### គំនូសបែកបាក់ដើម្បីបង្ហាញទំនាក់ទំនង\n"
+ ]
+ },
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
- "source": []
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", kind=\"line\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### ស្លាបព្រិលតាងបាតដើម្បីបង្ហាញការបែងចែក\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.catplot(x=\"Month\", y=\"Price\", data=new_pumpkins, kind=\"bar\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### ផែនទីកម្តៅដើម្បីបង្ហាញទំនាក់ទំនងគ្នា\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()\n",
+ "sns.heatmap(correlations, annot=True, cmap=\"coolwarm\")"
+ ]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "---\n\n\n**ការបដិសេធ**៖ \nឯកសារនេះត្រូវបានបម្លែងភាសា ដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ទោះបីយើងខិតខំព្យាយាមសំរាប់ភាពត្រឹមត្រូវ ក៏ដោយ សូមជ្រាបថាការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុស ឬការជ្រៀតចូលខុសៗបាន។ ឯកសារដើមនៅក្នុងភាសាដែលវាត្រូវបានសរសេរជា ភាសាទូទៅគួរត្រូវបានគិតថាជា ប្រភពដែលមានសិទ្ធិខ្ពង់ខ្ពស់។ សម្រាប់ព័ត៌មានសំខាន់ៗ ការបកប្រែដោយអ្នកជំនាញមនុស្សត្រូវបានណែនាំ។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកស្រាយខុសៗណាមួយដែលកើតឡើងពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។\n\n"
+ "---\n\n\n**ការបដិសេធ**:\nឯកសារនេះត្រូវបានបម្លែងភាសា ដោយប្រើសេវាបម្លែងភាសា AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ទោះយើងខ្ញុំមានក្តីប្រាថ្នាឱ្យបានច្បាស់លាស់ តែសូមយល់ដឹងថាការបម្លែងដោយស្វ័យប្រវត្តិក៏អាចមានកំហុសឬភាពមិនត្រឹមត្រូវ។ ឯកសារដើមជាភាសាទីតាំងគួរត្រូវបានគេប្រើជាប្រភពច្បាស់លាស់។ សម្រាប់ព័ត៌មានសំខាន់ៗ សូមណែនាំឱ្យប្រើប្រាស់ការប្រែដោយមនុស្សជំនាញ។ យើងខ្ញុំមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកស្រាយខុសបន្ទាប់ពីការប្រើប្រាស់ការបម្លែងនេះនោះទេ។\n\n"
]
}
],
diff --git a/translations/kn/.co-op-translator.json b/translations/kn/.co-op-translator.json
index 1033c3f46..ac9f6dce5 100644
--- a/translations/kn/.co-op-translator.json
+++ b/translations/kn/.co-op-translator.json
@@ -24,8 +24,8 @@
"language_code": "kn"
},
"1-Introduction/3-fairness/README.md": {
- "original_hash": "9a6b702d1437c0467e3c5c28d763dac2",
- "translation_date": "2025-12-19T13:41:55+00:00",
+ "original_hash": "0f00d72169a0d37eecfd16d71e01700a",
+ "translation_date": "2026-07-14T00:54:07+00:00",
"source_file": "1-Introduction/3-fairness/README.md",
"language_code": "kn"
},
@@ -54,8 +54,8 @@
"language_code": "kn"
},
"2-Regression/1-Tools/README.md": {
- "original_hash": "fa81d226c71d5af7a2cade31c1c92b88",
- "translation_date": "2025-12-19T13:56:01+00:00",
+ "original_hash": "0b8635427b582d03ea4ab7089b93e505",
+ "translation_date": "2026-07-14T00:52:37+00:00",
"source_file": "2-Regression/1-Tools/README.md",
"language_code": "kn"
},
@@ -72,8 +72,8 @@
"language_code": "kn"
},
"2-Regression/2-Data/README.md": {
- "original_hash": "7c077988328ebfe33b24d07945f16eca",
- "translation_date": "2025-12-19T14:01:56+00:00",
+ "original_hash": "a58b2c4d16c6b122643391745ac15af6",
+ "translation_date": "2026-07-14T00:53:26+00:00",
"source_file": "2-Regression/2-Data/README.md",
"language_code": "kn"
},
@@ -89,6 +89,12 @@
"source_file": "2-Regression/2-Data/solution/Julia/README.md",
"language_code": "kn"
},
+ "2-Regression/2-Data/solution/notebook.ipynb": {
+ "original_hash": "96b95f8cf473481f2f371de8156f1571",
+ "translation_date": "2026-07-14T00:27:31+00:00",
+ "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
+ "language_code": "kn"
+ },
"2-Regression/3-Linear/README.md": {
"original_hash": "8b776e731c35b171d316d01d0e7b1369",
"translation_date": "2026-04-26T19:34:24+00:00",
@@ -581,6 +587,19 @@
"source_file": "TROUBLESHOOTING.md",
"language_code": "kn"
},
+ "__translation_failures__": {
+ "sketchnotes/LICENSE.md": {
+ "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f",
+ "source_file": "sketchnotes/LICENSE.md",
+ "language_code": "kn",
+ "failure_date": "2026-07-14T00:51:54+00:00",
+ "status": "failed",
+ "error_type": "TranslationIncompleteError",
+ "error_message": "Markdown translation remained incomplete for chunk 1.1.1 of 'LICENSE.md', and the chunk could not be split further.",
+ "translator_version": "0.20.0",
+ "failure_policy_version": 1
+ }
+ },
"docs/_sidebar.md": {
"original_hash": "68dd06c685f6ce840e0acfa313352e7c",
"translation_date": "2025-12-19T13:10:39+00:00",
diff --git a/translations/kn/1-Introduction/3-fairness/README.md b/translations/kn/1-Introduction/3-fairness/README.md
index 2f6969384..2821b11b6 100644
--- a/translations/kn/1-Introduction/3-fairness/README.md
+++ b/translations/kn/1-Introduction/3-fairness/README.md
@@ -1,163 +1,167 @@
-# ಜವಾಬ್ದಾರಿಯುತ AI ಜೊತೆಗೆ ಯಂತ್ರ ಅಧ್ಯಯನ ಪರಿಹಾರಗಳನ್ನು ನಿರ್ಮಿಸುವುದು
-
-
-> ಟೊಮೊಮಿ ಇಮುರಾ ಅವರಿಂದ ಸ್ಕೆಚ್ನೋಟ್ [Tomomi Imura](https://www.twitter.com/girlie_mac)
-
-## [ಪೂರ್ವ-ಪಾಠ ಪ್ರಶ್ನೋತ್ತರ](https://ff-quizzes.netlify.app/en/ml/)
+# ಜವಾಬ್ದಾರಿಯಾದ AI ಯೊಂದಿಗೆ ಯಂತ್ರ ಶಿಕ್ಷಣ ಪರಿಹಾರಗಳನ್ನು ನಿರ್ಮಿಸುವುದು
+
+
+> [Tomomi Imura](https://www.twitter.com/girlie_mac) ಅವರ ಸ್ಕೆಚ್ ನೋಟ್
+## [ಪೂರ್ವ-ನ್ಯಾಸ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/)
+
## ಪರಿಚಯ
-ಈ ಪಠ್ಯಕ್ರಮದಲ್ಲಿ, ನೀವು ಯಂತ್ರ ಅಧ್ಯಯನವು ನಮ್ಮ ದೈನಂದಿನ ಜೀವನವನ್ನು ಹೇಗೆ ಪ್ರಭಾವಿಸುತ್ತಿದೆ ಮತ್ತು ಮಾಡುತ್ತಿದೆ ಎಂಬುದನ್ನು ಅನ್ವೇಷಿಸಲು ಪ್ರಾರಂಭಿಸುವಿರಿ. ಈಗಾಗಲೇ, ವ್ಯವಸ್ಥೆಗಳು ಮತ್ತು ಮಾದರಿಗಳು ದೈನಂದಿನ ನಿರ್ಧಾರ-ಮಾಡುವ ಕಾರ್ಯಗಳಲ್ಲಿ ಭಾಗವಹಿಸುತ್ತಿವೆ, ಉದಾಹರಣೆಗೆ ಆರೋಗ್ಯ ನಿರ್ಣಯಗಳು, ಸಾಲ ಅನುಮೋದನೆಗಳು ಅಥವಾ ಮೋಸ ಪತ್ತೆ. ಆದ್ದರಿಂದ, ಈ ಮಾದರಿಗಳು ವಿಶ್ವಾಸಾರ್ಹ ಫಲಿತಾಂಶಗಳನ್ನು ಒದಗಿಸಲು ಚೆನ್ನಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುವುದು ಮುಖ್ಯ. ಯಾವುದೇ ಸಾಫ್ಟ್ವೇರ್ ಅಪ್ಲಿಕೇಶನ್ನಂತೆ, AI ವ್ಯವಸ್ಥೆಗಳು ನಿರೀಕ್ಷೆಗಳನ್ನು ತಪ್ಪಿಸಬಹುದು ಅಥವಾ ಇಚ್ಛಿತವಲ್ಲದ ಫಲಿತಾಂಶವನ್ನು ನೀಡಬಹುದು. ಅದಕ್ಕಾಗಿ AI ಮಾದರಿಯ ವರ್ತನೆಯನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಮತ್ತು ವಿವರಿಸುವುದು ಅತ್ಯಾವಶ್ಯಕ.
+ಈ ಪಾಠ್ಯಕ್ರಮದಲ್ಲಿ, ನೀವು ಯಂತ್ರ ಶಿಕ್ಷಣವು ನಮ್ಮ ದೈನಂದಿನ ಜೀವನವನ್ನು ಹೇಗೆ ಪರಿಣಾಮ ಬೀರುತ್ತಿದೆ ಮತ್ತು ಬದಲಾಯಿಸುತ್ತಿದೆ ಎಂಬುದನ್ನು ಅನಾವರಣ ಮಾಡಲಾಗುತ್ತದೆ. ಈಗಲೂ, ಆರೋಗ್ಯ ಪರೀಕ್ಷೆಗಳು, ಸಾಲ ಮಂಜೂರಾತಿ ಅಥವಾ ಹಿಮ್ಮೆಟ್ಟಿದವರ ಪತ್ತೆ ಇತ್ಯಾದಿ ದೈನಂದಿನ ನಿರ್ಣಯ ಕಾರ್ಯಗಳಲ್ಲಿ ವ್ಯವಸ್ಥೆಗಳು ಮತ್ತು ಮಾದರಿಗಳು ಪಾಲ್ಗೊಳ್ಳುತ್ತಿವೆ. ಆದ್ದರಿಂದ, ಈ ಮಾದರಿಗಳು ನಂಬಿಕೊಳ್ಳಬಹುದಾದ ಫಲಿತಾಂಶಗಳನ್ನು ಒದಗಿಸುವಂತೆ ಚೆನ್ನಾಗಿ ಕೆಲಸ ಮಾಡುತ್ತಿವೆ ಎಂಬುದು ಮಹತ್ವಪೂರ್ಣ. ಯಾವುದೇ ಸಾಫ್ಟ್ವೇರ್ ಅಪ್ಲಿಕೇಶನ್ ಹಾಗೆಯೇ, AI ವ್ಯವಸ್ಥೆಗಳು ನಿರೀಕ್ಷೆಗಳನ್ನು ತಪ್ಪಿಸಬಹುದು ಅಥವಾ ಅಯೋಗ್ಯ ಫಲಿತಾಂಶ ನೀಡಬಹುದು. ಆದ್ದರಿಂದ AI ಮಾದರಿಯ ವರ್ತನೆಯನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಮತ್ತು ವಿವರಿಸುವುದು ಅತ್ಯಗತ್ಯವಾಗಿದೆ.
-ನೀವು ಈ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸಲು ಬಳಸುತ್ತಿರುವ ಡೇಟಾ ಕೆಲವು ಜನಾಂಗ, ಲಿಂಗ, ರಾಜಕೀಯ ದೃಷ್ಟಿಕೋನ, ಧರ್ಮ ಅಥವಾ ಅಸಮಾನ ಪ್ರಮಾಣದಲ್ಲಿ ಪ್ರತಿನಿಧಿಸುವಂತಹ ಜನಸಂಖ್ಯಾ ಗುಂಪುಗಳನ್ನು ಹೊಂದಿಲ್ಲದಿದ್ದರೆ ಏನಾಗಬಹುದು ಎಂದು ಕಲ್ಪಿಸಿ ನೋಡಿ. ಮಾದರಿಯ ಫಲಿತಾಂಶವು ಕೆಲವು ಜನಾಂಗವನ್ನು ಪ್ರೋತ್ಸಾಹಿಸುವಂತೆ ವ್ಯಾಖ್ಯಾನಿಸಿದರೆ ಏನಾಗುತ್ತದೆ? ಅಪ್ಲಿಕೇಶನ್ಗೆ ಪರಿಣಾಮವೇನು? ಜೊತೆಗೆ, ಮಾದರಿಯು ಹಾನಿಕರ ಫಲಿತಾಂಶ ನೀಡಿದರೆ ಮತ್ತು ಜನರಿಗೆ ಹಾನಿ ಉಂಟುಮಾಡಿದರೆ ಏನಾಗುತ್ತದೆ? AI ವ್ಯವಸ್ಥೆಯ ವರ್ತನೆಗೆ ಯಾರು ಹೊಣೆಗಾರರು? ಈ ಪ್ರಶ್ನೆಗಳನ್ನು ನಾವು ಈ ಪಠ್ಯಕ್ರಮದಲ್ಲಿ ಅನ್ವೇಷಿಸುವೆವು.
+ನೀವು ನಿರ್ಮಿಸಬೇಕಾದ ಮಾದರಿಗಳಿಗೆ ಬಳಸುತ್ತಿರುವ ಡೇಟಾಗೆ ಕೆಲವು ಜನಸಾಂಖ್ಯಿಕ ವೈಶಿಷ್ಟ್ಯಗಳು, ಹಂತ, ಲಿಂಗ, ರಾಜಕೀಯ ನೋಟ, ಧರ್ಮ ಅಥವಾ ಅಶೋಚನೀಯವಾಗಿ ಇವುಗಳಿಗೆ ಸಂಬಂಧಿಸಿದ ಜನಸಂಖ್ಯಾತಿಗಳನ್ನು ಪ್ರತಿನಿಧಿಸುವಿಕೇ ಇಲ್ಲದಿದ್ದರೆ ಏನಾಗಬಹುದು ಎಂದು ಊಹಿಸಿ ನೋಡಿರಿ. ಮಾದರಿಯ ಉತ್ಪಾದನೆಯನ್ನು ಕೆಲವು ಜನಸಾಂಖ್ಯಿಕಗಳಿಗೆ ಅನುಕೂಲವಾಗುವಂತೆ ವ್ಯಾಖ್ಯಾನಿಸಲಾಗುವುದಾದರೆ? ಅಪ್ಲಿಕೇಶನ್ಗೆ ಅದರ ಪರಿಣಾಮವೇನು? ಜೊತೆಗೆ, ಮಾದರಿಯು ಹೀನ ಪರಿಣಾಮ ಅನುಭವಿಸಿ ಜನರಿಗೆ ಹಾನಿ ಮಾಡುವಾಗ ಏನಾಗುತ್ತದೆ? AI ವ್ಯವಸ್ಥೆಯ ವರ್ತನೆಯಲ್ಲಿ ಯಾರಿಗೆ ಹೊಣೆಗಾರಿಕೆ ಇದೆ? ಈ ಪ್ರಶ್ನೆಗಳು ನಾವು ಈ ಪಾಠ್ಯಕ್ರಮದಲ್ಲಿ ಅನ್ವೇಷಿಸುವ ಕೆಲವು ಪ್ರಶ್ನೆಗಳಾಗಿವೆ.
-ಈ ಪಾಠದಲ್ಲಿ ನೀವು:
+ಈ ಪಾಠದಲ್ಲಿ ನೀವು:
-- ಯಂತ್ರ ಅಧ್ಯಯನದಲ್ಲಿ ನ್ಯಾಯತೆಯ ಮಹತ್ವ ಮತ್ತು ನ್ಯಾಯತೆಯ ಸಂಬಂಧಿತ ಹಾನಿಗಳ ಬಗ್ಗೆ ಜಾಗೃತಿ ಹೆಚ್ಚಿಸುವಿರಿ.
-- ವಿಶ್ವಾಸಾರ್ಹತೆ ಮತ್ತು ಸುರಕ್ಷತೆ ಖಚಿತಪಡಿಸಲು ಅಸಾಮಾನ್ಯ ಮತ್ತು ವಿಚಿತ್ರ ಸಂದರ್ಭಗಳನ್ನು ಅನ್ವೇಷಿಸುವ ಅಭ್ಯಾಸಕ್ಕೆ ಪರಿಚಿತರಾಗುವಿರಿ.
-- ಎಲ್ಲರಿಗೂ ಸಬಲಗೊಳಿಸುವ ಸಮಾವೇಶಿ ವ್ಯವಸ್ಥೆಗಳನ್ನು ವಿನ್ಯಾಸಗೊಳಿಸುವ ಅಗತ್ಯವನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿರಿ.
-- ಡೇಟಾ ಮತ್ತು ಜನರ ಗೌಪ್ಯತೆ ಮತ್ತು ಭದ್ರತೆಯನ್ನು ರಕ್ಷಿಸುವ ಮಹತ್ವವನ್ನು ಅನ್ವೇಷಿಸುವಿರಿ.
-- AI ಮಾದರಿಗಳ ವರ್ತನೆಯನ್ನು ವಿವರಿಸಲು ಗ್ಲಾಸ್ ಬಾಕ್ಸ್ ವಿಧಾನದ ಮಹತ್ವವನ್ನು ನೋಡಿಕೊಳ್ಳುವಿರಿ.
-- AI ವ್ಯವಸ್ಥೆಗಳಲ್ಲಿ ವಿಶ್ವಾಸ ನಿರ್ಮಿಸಲು ಹೊಣೆಗಾರಿಕೆ ಅಗತ್ಯವಿರುವುದನ್ನು ಮನಗಂಡುಕೊಳ್ಳುವಿರಿ.
+- ಯಂತ್ರ ಶಿಕ್ಷಣದಲ್ಲಿ ನ್ಯಾಯತೀತೆ ಮತ್ತು ನ್ಯಾಯ ಸಂಬಂಧಿತ ಹಾನಿಗಳ ಮಹತ್ವದ ಬಗ್ಗೆ ನಿಮ್ಮ ಅರಿವನ್ನು ಹೆಚ್ಚಿಸಿಕೊಳ್ಳಿರಿ.
+- ವಿಶ್ವಾಸಾರ್ಹತೆ ಮತ್ತು ಸುರಕ್ಷತೆ ಖಚಿತಪಡಿಸಲು ಅಪರೂಪದ ಘಟನೆಗಳ ಮತ್ತು ಭಿನ್ನ ಸಂದರ್ಭಗಳನ್ನು ಪರಿಶೀಲಿಸುವ ಅಭ್ಯಾಸಕ್ಕೆ ಪರಿಚಿತವಾಗಿರಿ.
+- ಎಲ್ಲರಿಗೂ ಸಬಲೀಕರಣ ನೀಡಲು ಒಳಗೊಂಡ ವ್ಯವಸ್ಥೆಗಳನ್ನು ವಿನ್ಯಾಸಗೊಳಿಸುವ ಅಗತ್ಯವನ್ನು ಅರಿತುಕೊಳ್ಳಿ.
+- ಡೇಟಾ ಮತ್ತು ಜನರ ಗೌಪ್ಯತೆಗೆ ಮತ್ತು ಭದ್ರತೆಗೆ ಹೇಗೆ ರಕ್ಷಣೆ ನೀಡುವುದು ಎಂಬುದನ್ನು ಅನ್ವೇಷಿಸಿ.
+- AI ಮಾದರಿಯ ವರ್ತನೆಯನ್ನು ವಿವರಿಸಲು ಗ್ಲಾಸ್ ಬಾಕ್ಸ್ ದೃಷ್ಟಿಕೋನ ಹೊಂದಿರುವ ಮಹತ್ವವನ್ನು ನೋಡಿರಿ.
+- AI ವ್ಯವಸ್ಥೆಗಳಲ್ಲಿ ವಿಶ್ವಾಸ ನಿರ್ಮಿಸಲು ಹೊಣೆಗಾರಿಕೆ ಬಾಳಿಕೆ ಎಷ್ಟು ಅಗತ್ಯವೋ ಅದರ ಬಗ್ಗೆ ಜಾಗರೂಕರಾಗಿರಿ.
-## ಪೂರ್ವಾಪೇಕ್ಷಿತ
+## ಪೂರ್ವಾಪೇಕ್ಷೆ
-ಪೂರ್ವಾಪೇಕ್ಷಿತವಾಗಿ, ದಯವಿಟ್ಟು "ಜವಾಬ್ದಾರಿಯುತ AI ತತ್ವಗಳು" ಕಲಿಕೆ ಮಾರ್ಗವನ್ನು ತೆಗೆದುಕೊಳ್ಳಿ ಮತ್ತು ಕೆಳಗಿನ ವಿಷಯದ ವಿಡಿಯೋವನ್ನು ವೀಕ್ಷಿಸಿ:
+ಪೂರ್ವಾಪೇಕ್ಷೆಯಾಗಿ, ದಯವಿಟ್ಟು "ಜವಾಬ್ದಾರಿಯಾದ AI ಸಿದ್ಧಾಂತಗಳು" ಕಲಿಕೆ ಮಾರ್ಗವನ್ನು ತೆಗೆದುಕೊಳ್ಳಿ ಮತ್ತು ಕೆಳಗಿನ ವಿಷಯದ ವಿಡಿಯೋವನ್ನು ವೀಕ್ಷಿಸಿ:
-ಜವಾಬ್ದಾರಿಯುತ AI ಬಗ್ಗೆ ಇನ್ನಷ್ಟು ತಿಳಿಯಲು ಈ [ಕಲಿಕೆ ಮಾರ್ಗ](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) ಅನುಸರಿಸಿ
+ಈ [ಕಲಿಕೆ ಮಾರ್ಗ](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) ಮೂಲಕ ಜವಾಬ್ದಾರಿಯಾದ AI ಬಗ್ಗೆ ಹೆಚ್ಚು ತಿಳಿದುಕೊಳ್ಳಿ
[](https://youtu.be/dnC8-uUZXSc "Microsoft's Approach to Responsible AI")
-> 🎥 ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ ವಿಡಿಯೋ: Microsoft's Approach to Responsible AI
+> 🎥 ವೀಡಿಯೊ ಮಾಡಲು ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ: Microsoft's Approach to Responsible AI
-## ನ್ಯಾಯತೆ
+## ನ್ಯಾಯತೀತೆ
-AI ವ್ಯವಸ್ಥೆಗಳು ಎಲ್ಲರಿಗೂ ನ್ಯಾಯವಾಗಿ ವರ್ತಿಸಬೇಕು ಮತ್ತು ಸಮಾನ ಗುಂಪಿನ ಜನರನ್ನು ವಿಭಿನ್ನ ರೀತಿಯಲ್ಲಿ ಪ್ರಭಾವಿತಗೊಳಿಸಬಾರದು. ಉದಾಹರಣೆಗೆ, AI ವ್ಯವಸ್ಥೆಗಳು ವೈದ್ಯಕೀಯ ಚಿಕಿತ್ಸೆ, ಸಾಲ ಅರ್ಜಿಗಳು ಅಥವಾ ಉದ್ಯೋಗದ ಮಾರ್ಗದರ್ಶನ ನೀಡುವಾಗ, ಸಮಾನ ಲಕ್ಷಣಗಳು, ಆರ್ಥಿಕ ಪರಿಸ್ಥಿತಿಗಳು ಅಥವಾ ವೃತ್ತಿಪರ ಅರ್ಹತೆಗಳಿರುವ ಎಲ್ಲರಿಗೂ ಸಮಾನ ಶಿಫಾರಸುಗಳನ್ನು ನೀಡಬೇಕು. ನಾವು ಪ್ರತಿಯೊಬ್ಬರೂ ನಮ್ಮ ನಿರ್ಧಾರಗಳು ಮತ್ತು ಕ್ರಿಯೆಗಳನ್ನು ಪ್ರಭಾವಿಸುವ ವಂಶಪಾರಂಪರಿಕ ಪೂರ್ವಗ್ರಹಗಳನ್ನು ಹೊಂದುತ್ತೇವೆ. ಈ ಪೂರ್ವಗ್ರಹಗಳು AI ವ್ಯವಸ್ಥೆಗಳನ್ನು ತರಬೇತುಗೊಳಿಸಲು ಬಳಸುವ ಡೇಟಾದಲ್ಲಿ ಸ್ಪಷ್ಟವಾಗಿರಬಹುದು. ಕೆಲವೊಮ್ಮೆ ಈ ಪ್ರಭಾವವು ಅನೈಚ್ಛಿಕವಾಗಿ ಸಂಭವಿಸಬಹುದು. ಡೇಟಾದಲ್ಲಿ ಪೂರ್ವಗ್ರಹವನ್ನು ಪರಿಚಯಿಸುವಾಗ ಜಾಗೃತಿಯಿಂದ ತಿಳಿದುಕೊಳ್ಳುವುದು ಕಷ್ಟ.
+AI ವ್ಯವಸ್ಥೆಗಳು ಎಲ್ಲರಿಗೂ ನ್ಯಾಯವಾಗಿ ವರ್ತಿಸಬೇಕು ಮತ್ತು ಸಮಾನ ಗುಂಪುಗಳ ಜನರಿಗೆ ವಿಭಿನ್ನ ರೀತಿಯಲ್ಲಿ ಪ್ರಭಾವ ಬೀರುವುದನ್ನು ತಪ್ಪಿಸಬೇಕು. ಉದಾಹರಣೆಗೆ, ಆರೋಗ್ಯ ಚಿಕಿತ್ಸೆ, ಸಾಲ ಅರ್ಜಿಗಳು, ಅಥವಾ ಉದ್ಯೋಗದಲ್ಲಿ ಮಾರ್ಗದರ್ಶನ ನೀಡುವಾಗ, ಸಮಾನ ಲಕ್ಷಣಗಳು, ಆರ್ಥಿಕ ಪರಿಸ್ಥಿತಿಗಳು ಅಥವಾ ವೃತ್ತಿಪರ ಅರ್ಹತೆ ಇರುವ ಎಲ್ಲರಿಗೆ ಸಮಾನ ಸಲಹೆಗಳನ್ನು ನೀಡಬೇಕು. ಪ್ರತಿಯೊಬ್ಬರೂ ಮಾನವರಿಗೆ ನಮ್ಮ ನಿರ್ಧಾರಗಳನ್ನು ಮತ್ತು ಕ್ರಿಯೆಗಳನ್ನು ಪ್ರಭಾವಿತಗೊಳಿಸುವ ವಂಶಸಂಪದಿತ ಉಪನ್ಯಾಸಗಳನ್ನು ಹೊಂದಿದ್ದೇವೆ. ಈ ತೆಳುವಿನ ಉಪನ್ಯಾಸಗಳು ಯಂತ್ರ ಶಿಕ್ಷಣಕ್ಕಾಗಿ ಬಳಸಲಾಗುವ ಡೇಟಾದಲ್ಲೂ ಸ್ಪಷ್ಟವಾಗಬಹುದು. ಕೆಲವೊಮ್ಮೆ ಈ ಪ್ರಭಾವಗಳು ಆಸಕ್ತಿಯಿಂದಲೂ ಅಲ್ಲದೇ ಅನುಪಯುಕ್ತವಾಗಿ ಸಂಭವಿಸಬಹುದು. ಯಾವಾಗ ನೀವು ಡೇಟಾದಲ್ಲಿ ಆಯಾಮವನ್ನು ಪರಿಚಯಿಸುತ್ತಿದ್ದೀರಿ ಎಂಬುದನ್ನು ಪ್ರತೀಕ್ಷಿತವಾಗಿ ತಿಳಿಯುವುದು ಸಾಮಾನ್ಯವಾಗಿ ಕಷ್ಟ.
-**“ನ್ಯಾಯತೆಯ ಕೊರತೆ”** ಎಂದರೆ ಜನಾಂಗ, ಲಿಂಗ, ವಯಸ್ಸು ಅಥವಾ ಅಂಗವಿಕಲತೆ ಸ್ಥಿತಿಯಂತೆ ವ್ಯಾಖ್ಯಾನಿಸಲ್ಪಟ್ಟ ಗುಂಪಿನ ಮೇಲೆ ನಕಾರಾತ್ಮಕ ಪರಿಣಾಮಗಳು ಅಥವಾ “ಹಾನಿಗಳು”. ಮುಖ್ಯ ನ್ಯಾಯತೆಯ ಸಂಬಂಧಿತ ಹಾನಿಗಳನ್ನು ಹೀಗೆ ವರ್ಗೀಕರಿಸಬಹುದು:
+**“ನ್ಯಾಯತೀರದಿರದಿಕೆ”** ಎಂದರೆ ಜನಸಂಖ್ಯಾತಿಯನ್ನು ಆಧರಿಸಿ (ಹಾದಿ, ಲಿಂಗ, ವಯಸ್ಸು, ಅಂಗವೈಕಲ್ಯ ಸ್ಥಿತಿ ಇತ್ಯಾದಿಗಳಂತೆ) ಒಂದು ಗುಂಪಿಗೆ ಉಂಟಾಗುವ ಅಪಕಾರ ಅಥವಾ "ಹಾನಿ"ಗಳನ್ನು ಒಳಗೊಂಡಿದೆ. ಮುಖ್ಯ ನ್ಯಾಯತೀತೆ ಸಂಬಂಧಿತ ಹಾನಿಗಳನ್ನು ಈ ರೀತಿಯಾಗಿ ವರ್ಗೀಕರಿಸಬಹುದು:
-- **ಹಂಚಿಕೆ**, ಉದಾಹರಣೆಗೆ ಲಿಂಗ ಅಥವಾ ಜಾತಿ ಒಂದನ್ನು ಮತ್ತೊಂದಕ್ಕಿಂತ ಪ್ರೋತ್ಸಾಹಿಸುವುದು.
-- **ಸೇವೆಯ ಗುಣಮಟ್ಟ**. ನೀವು ಒಂದು ನಿರ್ದಿಷ್ಟ ಸಂದರ್ಭಕ್ಕಾಗಿ ಡೇಟಾವನ್ನು ತರಬೇತುಗೊಳಿಸಿದರೆ ಆದರೆ ವಾಸ್ತವಿಕತೆ ಹೆಚ್ಚು ಸಂಕೀರ್ಣವಾಗಿದ್ದರೆ, ಅದು ದೌರ್ಬಲ್ಯಪೂರ್ಣ ಸೇವೆಗೆ ಕಾರಣವಾಗುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ಕಪ್ಪು ಚರ್ಮದ ಜನರನ್ನು ಗುರುತಿಸಲು ಸಾಧ್ಯವಾಗದ ಕೈ ಸಾಬೂನು ಡಿಸ್ಪೆನ್ಸರ್. [ಉಲ್ಲೇಖ](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
-- **ಅವಮಾನ**. ಅನ್ಯಾಯವಾಗಿ ಯಾರನ್ನಾದರೂ ಅಥವಾ ಯಾವುದನ್ನಾದರೂ ಟೀಕಿಸುವುದು ಮತ್ತು ಲೇಬಲ್ ಮಾಡುವುದು. ಉದಾಹರಣೆಗೆ, ಚಿತ್ರ ಲೇಬಲಿಂಗ್ ತಂತ್ರಜ್ಞಾನ ಕಪ್ಪು ಚರ್ಮದ ಜನರನ್ನು ಗೋರಿಲ್ಲಾಗಳಾಗಿ ತಪ್ಪಾಗಿ ಗುರುತಿಸಿತು.
-- **ಅತಿವ್ಯಕ್ತ ಅಥವಾ ಅಲ್ಪಪ್ರತಿನಿಧಿತ್ವ**. ಒಂದು ನಿರ್ದಿಷ್ಟ ಗುಂಪು ನಿರ್ದಿಷ್ಟ ವೃತ್ತಿಯಲ್ಲಿ ಕಾಣಿಸದಿರುವುದು ಮತ್ತು ಯಾವುದೇ ಸೇವೆ ಅಥವಾ ಕಾರ್ಯವು ಅದನ್ನು ಮುಂದುವರಿಸುವುದು ಹಾನಿಗೆ ಕಾರಣವಾಗುತ್ತದೆ.
-- **ಸ್ಟೀರಿಯೋಟೈಪಿಂಗ್**. ಒಂದು ಗುಂಪನ್ನು ಪೂರ್ವನಿರ್ಧರಿತ ಗುಣಲಕ್ಷಣಗಳೊಂದಿಗೆ ಸಂಪರ್ಕಿಸುವುದು. ಉದಾಹರಣೆಗೆ, ಇಂಗ್ಲಿಷ್ ಮತ್ತು ಟರ್ಕಿಷ್ ಭಾಷಾಂತರ ವ್ಯವಸ್ಥೆಯಲ್ಲಿ ಲಿಂಗಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಸ್ಟೀರಿಯೋಟೈಪಿಕಲ್ ಪದಗಳ ಕಾರಣದಿಂದ ತಪ್ಪುಗಳು ಸಂಭವಿಸಬಹುದು.
+- **ಹಂಚಿಕೆ**, ಉದಾಹರಣೆಗೆ ಒಂದು ಲಿಂಗ ಅಥವಾ ಜಾತಿ ಇನ್ನೊಬ್ಬರಿಗಿಂತ ಮೆರೆದಾಗ.
+- **ಸೇವೆಯ ಗುಣಮಟ್ಟ**. ನೀವು ಒಂದು ನಿರ್ದಿಷ್ಟ ಪರಿಸ್ಥಿತಿಗಾಗಿ ಡೇಟಾವನ್ನು ತರಬೇತು ಮಾಡಿದ್ದರೂ, ವಾಸ್ತವಿಕತೆ ಹೆಚ್ಚು ಸಖತ್ ಇದ್ದರೆ ಸೇವೆಯ ಕಾರ್ಯಕ್ಷಮತೆ ಕುಂದಬಹುದು. ಉದಾಹರಣೆಗೆ, ನಗೆಂಗೆ ಕಾಲಿ ಚರ್ಮವನ್ನು ಗುರುತಿಸಲಾಗದ ಕೈ ಸಾಬೂನು ಹಂಚುವ ಯಂತ್ರ. [ಉಲ್ಲೇಖ](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
+- **ಅಪಚಾರ**. ಒಬ್ಬರ ಅಥವಾ ಯಾವುದನ್ನಾದರೂ ಅನ್ಯಾಯವಾಗಿ ಟೀಕಿಸುವುದು ಮತ್ತು ಲೇಬಲ್ ನೀಡುವುದು. ಉದಾಹರಣೆಗೆ, ಒಂದು ಚಿತ್ರ ಲೇಬಲಿಂಗ್ ತಂತ್ರಜ್ಞಾನ ಕಪ್ಪು ಚರ್ಮದ ಚಿತ್ರಗಳನ್ನು ಗೋರಿಲ್ಲಾಗಳಾಗಿ ತಪ್ಪಾಗಿ ಗುರುತಿಸಿದೆ.
+- **ಅತಿಹರಿವು ಅಥವಾ ಅಲ್ಪ ಪ್ರತಿನಿಧೀಕರಣ**. ಒಂದು ಗುಂಪು ತ้มಿಚಲುವ ಉದ್ಯೋಗದಲ್ಲಿ ಕಂಡುಬಾರದಿರುವುದು ಮತ್ತು ಯಾವುದೇ ಸೇವೆ ಅಥವಾ ಕಾರ್ಯವು ಅದನ್ನು ಪ್ರೋತ್ಸಾಹಿಸುವುದು ಹಾನಿ ಮೂಡಿಸುತ್ತದೆ.
+- ** stereotyping**. ಒಂದು ಗುಂಪನ್ನು ಪೂರ್ವನಿಗದಿತ ಲಕ್ಷಣಗಳಿಗೆ ಜೋಡಿಸುವುದು. ಉದಾಹರಣೆಗೆ, ಇಂಗ್ಲಿಷ್ ಮತ್ತು ಟರ್ಕಿಶ್ ಭಾಷಾಂತರ ವ್ಯವಸ್ಥೆಯಲ್ಲಿ ಲಿಂಗದ ಯಾವುದೇ stereotyping ಸಂಬಂಧಿತ ಪದಗಳ ಕಾರಣದಿಂದ ತಪ್ಪುಗಳು ಸಂಭವಿಸಬಹುದು.
-
-> ಟರ್ಕಿಷ್ಗೆ ಭಾಷಾಂತರ
+
+> ಟರ್ಕಿಶ್ಗೆ ಭಾಷಾಂತರ
-
-> ಇಂಗ್ಲಿಷ್ಗೆ ಹಿಂದಿರುಗಿ ಭಾಷಾಂತರ
+
+> ಇಂಗ್ಲಿಷ್ಗೆ ಹಿಂಬಾಲಿಸಿ ಭಾಷಾಂತರ
-AI ವ್ಯವಸ್ಥೆಗಳನ್ನು ವಿನ್ಯಾಸಗೊಳಿಸುವಾಗ ಮತ್ತು ಪರೀಕ್ಷಿಸುವಾಗ, AI ನ್ಯಾಯತೆಯುತವಾಗಿರಬೇಕು ಮತ್ತು ಪೂರ್ವಗ್ರಹಿತ ಅಥವಾ ಭೇದಭಾವಿ ನಿರ್ಧಾರಗಳನ್ನು ಮಾಡಲು ಪ್ರೋಗ್ರಾಮ್ ಮಾಡಬಾರದು, ಏಕೆಂದರೆ ಮಾನವರು ಕೂಡ ಇಂತಹ ನಿರ್ಧಾರಗಳನ್ನು ಮಾಡಬಾರದು. AI ಮತ್ತು ಯಂತ್ರ ಅಧ್ಯಯನದಲ್ಲಿ ನ್ಯಾಯತೆಯನ್ನು ಖಚಿತಪಡಿಸುವುದು ಸಂಕೀರ್ಣ ಸಾಮಾಜಿಕ-ತಾಂತ್ರಿಕ ಸವಾಲಾಗಿದೆ.
+AI ವ್ಯವಸ್ಥೆಗಳನ್ನು ವಿನ್ಯಾಸಗೊಳಿಸುವಾಗ ಮತ್ತು ಪರೀಕ್ಷಿಸುವಾಗ, AI ನ್ಯಾಯಕವಾಗಿರಬೇಕು ಮತ್ತು ಮಾನವರಂತೆಯೇ পক্ষಪಾತಪೂರ್ಣ ಅಥವಾ ವಿಭಜನಾ ನಿರ್ಧಾರಗಳನ್ನು ಮಾಡಬಾರದು. AI ಮತ್ತು ಯಂತ್ರ ಶಿಕ್ಷಣದಲ್ಲಿ ನ್ಯಾಯತೀರದಿರದಿಕೆಯನ್ನು ಖಚಿತಪಡಿಸುವುದು ಸಂಕೀರ್ಣ ಸಾಮಾಜಿಕ-ತಾಂತ್ರಿಕ ಮುಂದಿನ ಕೆಲಸವಾಗಿದೆ.
### ವಿಶ್ವಾಸಾರ್ಹತೆ ಮತ್ತು ಸುರಕ್ಷತೆ
-ವಿಶ್ವಾಸ ನಿರ್ಮಿಸಲು, AI ವ್ಯವಸ್ಥೆಗಳು ಸಾಮಾನ್ಯ ಮತ್ತು ಅಪ್ರತೀಕ್ಷಿತ ಪರಿಸ್ಥಿತಿಗಳಲ್ಲಿ ವಿಶ್ವಾಸಾರ್ಹ, ಸುರಕ್ಷಿತ ಮತ್ತು ಸತತವಾಗಿರಬೇಕು. AI ವ್ಯವಸ್ಥೆಗಳು ವಿಭಿನ್ನ ಪರಿಸ್ಥಿತಿಗಳಲ್ಲಿ ಹೇಗೆ ವರ್ತಿಸುವುದೆಂದು ತಿಳಿದುಕೊಳ್ಳುವುದು ಮುಖ್ಯ, ವಿಶೇಷವಾಗಿ ಅವು ಅಸಾಮಾನ್ಯವಾಗಿದ್ದಾಗ. AI ಪರಿಹಾರಗಳನ್ನು ನಿರ್ಮಿಸುವಾಗ, AI ಪರಿಹಾರಗಳು ಎದುರಿಸುವ ವಿವಿಧ ಪರಿಸ್ಥಿತಿಗಳನ್ನು ಹೇಗೆ ನಿರ್ವಹಿಸುವುದರ ಮೇಲೆ ಸಾಕಷ್ಟು ಗಮನ ನೀಡಬೇಕು. ಉದಾಹರಣೆಗೆ, ಸ್ವಯಂಚಾಲಿತ ಕಾರು ಜನರ ಸುರಕ್ಷತೆಯನ್ನು ಮೊದಲ ಆದ್ಯತೆಯಾಗಿ ಇರಿಸಿಕೊಳ್ಳಬೇಕು. ಆದ್ದರಿಂದ, ಕಾರು ಚಾಲನೆಗೆ ಶಕ್ತಿಯನ್ನು ನೀಡುವ AI ಎಲ್ಲಾ ಸಾಧ್ಯ ಪರಿಸ್ಥಿತಿಗಳನ್ನು ಪರಿಗಣಿಸಬೇಕು, ಉದಾಹರಣೆಗೆ ರಾತ್ರಿ, ಮಳೆ, ಹಿಮಪಾತ, ಮಕ್ಕಳ ರಸ್ತೆ ದಾಟುವುದು, ಪಶುಗಳು, ರಸ್ತೆ ನಿರ್ಮಾಣಗಳು ಇತ್ಯಾದಿ. AI ವ್ಯವಸ್ಥೆ ವಿವಿಧ ಪರಿಸ್ಥಿತಿಗಳನ್ನು ವಿಶ್ವಾಸಾರ್ಹವಾಗಿ ಮತ್ತು ಸುರಕ್ಷಿತವಾಗಿ ಹೇಗೆ ನಿರ್ವಹಿಸುತ್ತದೆ ಎಂಬುದು ಡೇಟಾ ವಿಜ್ಞಾನಿ ಅಥವಾ AI ಅಭಿವೃದ್ಧಿಪಡಿಸುವವರು ವಿನ್ಯಾಸ ಅಥವಾ ಪರೀಕ್ಷೆಯ ಸಮಯದಲ್ಲಿ ಎಷ್ಟು ಮುಂಚಿತವಾಗಿ ಪರಿಗಣಿಸಿದ್ದಾರೆ ಎಂಬುದನ್ನು ಪ್ರತಿಬಿಂಬಿಸುತ್ತದೆ.
+ವಿಶ್ವಾಸ ನಿರ್ಮಿಸಲು, AI ವ್ಯವಸ್ಥೆಗಳು ಸಾಮಾನ್ಯ ಮತ್ತು ಅಪ್ರತೀಕ್ಷಿತ ಪರಿಸ್ಥಿತಿಗಳಲ್ಲಿ ವಿಶ್ವಾಸಾರ್ಹ, ಸುರಕ್ಷಿತ ಮತ್ತು ಶಾಶ್ವತವಾಗಿರಬೇಕು. ಬಾಹ್ಯ ಘಟನೆಗಳಾದ ಸ್ಥಿತಿಗಳಲ್ಲಿನ AI системೆ ಗಳ ವರ್ತನೆ ಗೊತ್ತಾಗಬೇಕು. AI ಪರಿಹಾರಗಳನ್ನು ನಿರ್ಮಿಸುವಾಗ, ವೈವಿಧ್ಯಮಯ ಪರಿಸ್ಥಿತಿಗಳನ್ನು ಹೇಗೆ ಕೈಗೊಳ್ಳುವುದು ಎಂದು ಗಮನ ತುಂಬಾ ಮುಖ್ಯ. ಉದಾಹರಣೆಗೆ, ಸ್ವಯಂಚಾಲಿತ ಕಾರು ಜನರ ಸುರಕ್ಷತೆಯನ್ನು ಪ್ರಮುಖ ಪ್ರಾಧಾನ್ಯತೆ ನೀಡಬೇಕು. ಆದ್ದರಿಂದ, ಆ ಕಾರು ಎದುರಿಸುವ ಎಲ್ಲಾ ಸಾಧ್ಯ ಪರಿಸ್ಥಿತಿಗಳನ್ನು (ಅಂಧಕಾಲ, ಮಳೆ, ಹಿಮಪಾತ, ಮಕ್ಕಳ ರಸ್ತೆ ದಾಟುವಿಕೆ, ಪಾಳು ಪ್ರಾಣಿಗಳು, ರಸ್ತೆ ನಿರ್ಮಾಣ) ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬೇಕು. AI ವ್ಯವಸ್ಥೆಯು ಈ ವಿವಿಧ ಪರಿಸ್ಥಿತಿಗಳನ್ನು ಹೇಗೆ ನಿಭಾಯಿಸುತ್ತದೆ ಎಂಬುದು ಆ ಸಿಸ್ಟಮ್ ವಿನ್ಯಾಸ ಅಥವಾ ಪರೀಕ್ಷೆ ಸಮಯದಲ್ಲಿ ಡೇಟಾ ವಿಜ್ಞಾನಿ ಅಥವಾ AI ಅಭಿವೃದ್ಧಿಕರರು ಎಷ್ಟು ಮುನ್ಸೂಚನೆ ಮುಂದಿಟ್ಟಿದ್ದರು ಎಂಬುದನ್ನು ಪ್ರತಿಬಿಂಬಿಸುತ್ತದೆ.
-> [🎥 ವಿಡಿಯೋಗಾಗಿ ಇಲ್ಲಿ ಕ್ಲಿಕ್ ಮಾಡಿ: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
+> [🎥 ವೀಡಿಯೊಗೆ ಇಲ್ಲಿ ಕ್ಲಿಕ್ ಮಾಡಿ: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
-### ಸಮಾವೇಶ
+### ಒಳಗೊಂಡಿಕೆ
-AI ವ್ಯವಸ್ಥೆಗಳು ಎಲ್ಲರನ್ನೂ ತೊಡಗಿಸಿಕೊಳ್ಳಲು ಮತ್ತು ಸಬಲಗೊಳಿಸಲು ವಿನ್ಯಾಸಗೊಳಿಸಬೇಕು. AI ವ್ಯವಸ್ಥೆಗಳನ್ನು ವಿನ್ಯಾಸಗೊಳಿಸುವಾಗ ಮತ್ತು ಜಾರಿಗೆ ತರುವಾಗ, ಡೇಟಾ ವಿಜ್ಞಾನಿಗಳು ಮತ್ತು AI ಅಭಿವೃದ್ಧಿಪಡಿಸುವವರು ಅನೈಚ್ಛಿಕವಾಗಿ ಜನರನ್ನು ಹೊರಗೊಳ್ಳುವಂತೆ ಮಾಡುವ ಸಾಧ್ಯತೆಯಿರುವ ಅಡ್ಡಿ-ಬಾಧೆಗಳನ್ನು ಗುರುತಿಸಿ ಪರಿಹರಿಸುತ್ತಾರೆ. ಉದಾಹರಣೆಗೆ, ಜಗತ್ತಿನಲ್ಲಿ 1 ಬಿಲಿಯನ್ ಅಂಗವಿಕಲರು ಇದ್ದಾರೆ. AI ಪ್ರಗತಿಯೊಂದಿಗೆ, ಅವರು ತಮ್ಮ ದೈನಂದಿನ ಜೀವನದಲ್ಲಿ ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗೆ ಮತ್ತು ಅವಕಾಶಗಳಿಗೆ ಸುಲಭವಾಗಿ ಪ್ರವೇಶಿಸಬಹುದು. ಅಡ್ಡಿ-ಬಾಧೆಗಳನ್ನು ಪರಿಹರಿಸುವ ಮೂಲಕ, ಎಲ್ಲರಿಗೂ ಲಾಭದಾಯಕ ಉತ್ತಮ ಅನುಭವಗಳೊಂದಿಗೆ AI ಉತ್ಪನ್ನಗಳನ್ನು ಆವಿಷ್ಕರಿಸಲು ಮತ್ತು ಅಭಿವೃದ್ಧಿಪಡಿಸಲು ಅವಕಾಶ ಸೃಷ್ಟಿಯಾಗುತ್ತದೆ.
+AI ವ್ಯವಸ್ಥೆಗಳು ಎಲ್ಲರಿಗೂ ಭಾಗವಹಿಸುವಂತೆ ಮತ್ತು ಸಬಲೀಕರಣ ನೀಡುವಂತೆ ವಿನ್ಯಾಸಗೊಳಿಸಬೇಕಾಗುತ್ತದೆ. ಈ प्रणೇತಿಯಲ್ಲ, ಡೇಟಾ ವಿಜ್ಞಾನಿಗಳು ಮತ್ತು AI ಅಭಿವೃದ್ಧಿಕರರು ವ್ಯವಸ್ಥೆಯಲ್ಲಿ ಅಪರಿಚಿತವಾಗಿ ಜನರನ್ನು ಹೊರಗೂಡಿಸಬಲ್ಲ ತಡೆಗಳನ್ನು ಪತ್ತೆ ಮಾಡಿ ಪರಿಹರಿಸುತ್ತಾರೆ. ಉದಾಹರಣೆಗೆ, ప్రపంచದಲ್ಲಿ 1 ಬಿಲಿಯನ್ ಅಂಗವೈಕಲ್ಯ ಹೊಂದಿರುವ ಜನರು ಇರಬೇಕಾಗಿದ್ದಾರೆ. AI ಪ್ರಗತಿಯ ಮೂಲಕ, ಅವರ ಕೈಗೆ ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗಳು ಮತ್ತು ಅವಕಾಶಗಳು ಸುಲಭವಾಗಿ ಲಭಿಸುತ್ತವೆ. ಅಡ್ಡಿ ಸಮಾಧಾನಗೆದು, ಎಲ್ಲಾ ಜನರಿಗೆ ಒಳ್ಳೆಯ ಅನುಭವ ನೀಡುವ AI ಉತ್ಪನ್ನಗಳನ್ನು ಆವಿಷ್ಕರಿಸಲು ಮತ್ತು ಅಭಿವೃದ್ಧಿಪಡಿಸಲು ಅವಕಾಶ ಸೃಷ್ಟಿ ಮಾಡುತ್ತದೆ.
-> [🎥 AI ನಲ್ಲಿ ಸಮಾವೇಶಕ್ಕಾಗಿ ಇಲ್ಲಿ ಕ್ಲಿಕ್ ಮಾಡಿ](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
+> [🎥 AI ನ ಒಳಗೊಂಡಿಕೆ ವಿಷಯದಲ್ಲಿ here ಕ್ಲಿಕ್ ಮಾಡಿ](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
### ಭದ್ರತೆ ಮತ್ತು ಗೌಪ್ಯತೆ
-AI ವ್ಯವಸ್ಥೆಗಳು ಸುರಕ್ಷಿತವಾಗಿರಬೇಕು ಮತ್ತು ಜನರ ಗೌಪ್ಯತೆಯನ್ನು ಗೌರವಿಸಬೇಕು. ಜನರು ತಮ್ಮ ಗೌಪ್ಯತೆ, ಮಾಹಿತಿ ಅಥವಾ ಜೀವನವನ್ನು ಅಪಾಯಕ್ಕೆ ಹಾಕುವ ವ್ಯವಸ್ಥೆಗಳಲ್ಲಿ ಕಡಿಮೆ ವಿಶ್ವಾಸ ಹೊಂದಿರುತ್ತಾರೆ. ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿಗಳನ್ನು ತರಬೇತುಗೊಳಿಸುವಾಗ, ಉತ್ತಮ ಫಲಿತಾಂಶಗಳನ್ನು ನೀಡಲು ನಾವು ಡೇಟಾವನ್ನು ಅವಲಂಬಿಸುತ್ತೇವೆ. ಇದರಲ್ಲಿ, ಡೇಟಾದ ಮೂಲ ಮತ್ತು ಅಖಂಡತೆಯನ್ನು ಪರಿಗಣಿಸಬೇಕು. ಉದಾಹರಣೆಗೆ, ಡೇಟಾ ಬಳಕೆದಾರರಿಂದ ಸಲ್ಲಿಸಲ್ಪಟ್ಟದೋ ಅಥವಾ ಸಾರ್ವಜನಿಕವಾಗಿ ಲಭ್ಯವಿದೆಯೋ? ನಂತರ, ಡೇಟಾ ಜೊತೆಗೆ ಕೆಲಸ ಮಾಡುವಾಗ, ರಹಸ್ಯ ಮಾಹಿತಿಯನ್ನು ರಕ್ಷಿಸುವ ಮತ್ತು ದಾಳಿಗಳನ್ನು ತಡೆಯುವ AI ವ್ಯವಸ್ಥೆಗಳನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸುವುದು ಅತ್ಯಂತ ಮುಖ್ಯ. AI ಹೆಚ್ಚು ವ್ಯಾಪಕವಾಗುತ್ತಿರುವಂತೆ, ಗೌಪ್ಯತೆ ಮತ್ತು ಪ್ರಮುಖ ವೈಯಕ್ತಿಕ ಮತ್ತು ವ್ಯವಹಾರ ಮಾಹಿತಿಯನ್ನು ರಕ್ಷಿಸುವುದು ಹೆಚ್ಚು ಪ್ರಮುಖ ಮತ್ತು ಸಂಕೀರ್ಣವಾಗುತ್ತಿದೆ. AI ಗೆ ಸಂಬಂಧಿಸಿದಂತೆ ಗೌಪ್ಯತೆ ಮತ್ತು ಡೇಟಾ ಭದ್ರತೆ ಸಮಸ್ಯೆಗಳಿಗೆ ವಿಶೇಷ ಗಮನ ನೀಡಬೇಕು ಏಕೆಂದರೆ AI ವ್ಯವಸ್ಥೆಗಳು ಜನರ ಬಗ್ಗೆ ನಿಖರ ಮತ್ತು ತಿಳಿದ ನಿರ್ಧಾರಗಳನ್ನು ಮಾಡಲು ಡೇಟಾ ಪ್ರವೇಶ ಅಗತ್ಯವಿದೆ.
+AI ವ್ಯವಸ್ಥೆಗಳು ಸುರಕ್ಷಿತವಾಗಿರಬೇಕು ಮತ್ತು ಜನರ ಗೌಪ್ಯತೆಯನ್ನು ಗೌರವಿಸಬೇಕು. ಜನರು ತಮ್ಮ ಗೌಪ್ಯತೆ, ಮಾಹಿತಿ ಅಥವಾ ಜೀವನಕ್ಕೆ ಅಪಾಯವಿರುವ ವ್ಯವಸ್ಥೆಗಳಿಗೆ ಕಡಿಮೆ ನಂಬಿಕೆ ಇಟ್ಟುಕೊಳ್ಳುತ್ತಾರೆ. ಯಂತ್ರ ಶಿಕ್ಷಣ ಮಾದರಿಗಳನ್ನು ತರಬೇತುಗೊಳಿಸುವಾಗ, ಉತ್ತಮ ಫಲಿತಾಂಶಗಳನ್ನು ತರುವುದಕ್ಕಾಗಿ ನಾವು ಡೇಟಾದ ಮೇಲೆ ಅವಲಂಬಿಸುತ್ತೇವೆ. ಆದ್ದರಿಂದ, ಡೇಟಾದ ಮೂಲ ಮತ್ತು ವಿಶ್ವಾಸಾರ್ಹತೆ ಗಮನದಲ್ಲಿರಬೇಕಾಗುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ಡೇಟಾ ಬಳಕೆದಾರರಿಂದ ಬಂತು ಅಥವಾ ಸಾರ್ವಜನಿಕವಾಗಿ ಲಭ್ಯವಿದೆಯೇ? ನಂತರ, ಡೇಟಾ ಮೇಲೆ ಕೆಲಸ ಮಾಡುತ್ತಿರುವಾಗ, ಭದ್ರತೆಯನ್ನು ನೀಡುವ AI ವ್ಯವಸ್ಥೆಯನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸುವುದು ಮತ್ತು ದಾಳಿಗಳಿಗೆ ಪ್ರತಿರೋಧಿಸುವುದು ತುಂಬಾ ಅವಶ್ಯಕ. AI ಹೆಚ್ಚಿಸಿ ಬಳಕೆಯಾದಂತೆ, ಗೌಪ್ಯತೆ ಮತ್ತು ಮಹತ್ವದ ವೈಯಕ್ತಿಕ ಮತ್ತು ವ್ಯಾಪಾರ ಮಾಹಿತಿ ರಕ್ಷಣಾ ವಿಷಯಗಳು ಹೆಚ್ಚು ಜನ್ಡಾಗುತ್ತಿರುವ ಸಮಸ್ಯೆ ಹೀಗೆ ಇದ್ದಕ್ಕಿಂತ ಹೆಚ್ಚು ಸಂಕೀರ್ಣವಾಗುತ್ತವೆ. AI ಗೆ ಕುರಿತು ಗೌಪ್ಯತೆ ಮತ್ತು ಡೇಟಾ ಭದ್ರತೆ ವಿಷಯಗಳು ವಿಶೇಷ ಗಮನ ಅಗತ್ಯವಿದೆ ಏಕೆಂದರೆ AI ವ್ಯವಸ್ಥೆಗಳು ಜನರ ಬಗ್ಗೆ ನಿಖರ ಮತ್ತು ಮಾಹಿತಿ ಒಳಗೊಂಡ ಊಹಣೆ ಮತ್ತು ನಿರ್ಣಯಗಳನ್ನು ಮಾಡಲು ಡೇಟಾಗೆ ಪ್ರವೇಶ ಆಹಾರವಾಗಿದೆ.
+
+> [🎥 AI ಯಲ್ಲಿ ಭದ್ರತಾ ಬಗ್ಗೆ ವೀಡಿಯೋ ಎಲ್ಲಿಗೆ ಕ್ಲಿಕ್ ಮಾಡಿ](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-> [🎥 AI ನಲ್ಲಿ ಭದ್ರತೆಗಾಗಿ ಇಲ್ಲಿ ಕ್ಲಿಕ್ ಮಾಡಿ](https://www.microsoft.com/videoplayer/embed/RE4voJF)
+- ಕೈಗಾರಿಕಾ ಕ್ಷೇತ್ರವಾಗಿ ನಾವು ಗೌಪ್ಯತೆ ಮತ್ತು ಭದ್ರತೆಯಲ್ಲಿ ಪ್ರಮುಖ ಪ್ರಗತಿಯನ್ನು ಮಾಡಿದ್ದೇವೆ, ಅದರಲ್ಲೂ GDPR ನಿಯಮಗಳ ಮೂಲಕ ಬಹಳ ಪ್ರೇರಣೆ ಇದೆ.
+- AI ವ್ಯವಸ್ಥೆಗಳೊಂದಿಗೆ, ಹೆಚ್ಚು ವೈಯಕ್ತಿಕ ಮತ್ತು ಪರಿಣಾಮಕಾರಿ ಮಾಡಲು ಹೆಚ್ಚು ವೈಯಕ್ತಿಕ ಡೇಟಾ ಬೇಕಾದ ಅಗತ್ಯ ಮತ್ತು ಗೌಪ್ಯತೆ ನಡುವೆ ಘರ್ಷಣೆ ಇದೆ ಎಂದು ಒಪ್ಪಿಕೊಳ್ಳಬೇಕಾಗಿದೆ.
+- ಇಂಟರ್ನೆಟ್-ಸಂಬಂಧಿತ ಕಂಪ್ಯೂಟರ್ಗಳ ಹುಟ್ಟಿದಂತೆ, AI ಗೆ ಸಂಬಂಧಿಸಿದ ಭದ್ರತಾ ಸಮಸ್ಯೆಗಳ ಸಂಖ್ಯೆ ಪರಿಮಿತಿಯಿಂದ ಬಹಳ ಹೆಚ್ಚಾಗಿದೆ.
+- ಅದೇ ಸಮಯದಲ್ಲಿ, ಭದ್ರತೆಯನ್ನು ಸುಧಾರಿಸಲು AI ಉಪಯೋಗವಾಗುತ್ತಿದೆ. ಉದಾಹರಣೆಗೆ, ಕನ್ನಡಿಕ್ರಮದಲ್ಲಿ ಹೆಚ್ಚಿನ ಆಧುನಿಕ ಅನ್ಟಿ-ವೈರುಸ್ ಸ್ಕ್ಯಾನರ್ಗಳು ಇಂದು AI ತತ್ವಗಳ ಮೇಲೆ ಚಾಲನೆ ಮಾಡುತ್ತವೆ.
+- ನಮ್ಮ ಡೇಟಾ ವಿಜ್ಞಾನ ಪ್ರಕ್ರಿಯೆಗಳು ತಾಜಾ ಗೌಪ್ಯತೆ ಮತ್ತು ಭದ್ರತಾ ಕ್ರಮಗಳೊಂದಿಗೆ ಸರಾಗವಾಗಿ ಸೇರಿಕೊಳ್ಳುವಂತೆ ನೋಡಿಕೊಳ್ಳಬೇಕಾಗಿದೆ.
-- ಉದ್ಯಮವಾಗಿ ನಾವು GDPR (ಸಾಮಾನ್ಯ ಡೇಟಾ ರಕ್ಷಣಾ ನಿಯಮಾವಳಿ) ಮುಂತಾದ ನಿಯಮಾವಳಿಗಳಿಂದ ಪ್ರೇರಿತವಾಗಿ ಗೌಪ್ಯತೆ ಮತ್ತು ಭದ್ರತೆಯಲ್ಲಿ ಮಹತ್ವದ ಪ್ರಗತಿಯನ್ನು ಸಾಧಿಸಿದ್ದೇವೆ.
-- ಆದರೆ AI ವ್ಯವಸ್ಥೆಗಳಲ್ಲಿ, ವ್ಯವಸ್ಥೆಗಳನ್ನು ಹೆಚ್ಚು ವೈಯಕ್ತಿಕ ಮತ್ತು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಮಾಡಲು ಹೆಚ್ಚಿನ ವೈಯಕ್ತಿಕ ಡೇಟಾ ಅಗತ್ಯವಿರುವುದು ಮತ್ತು ಗೌಪ್ಯತೆ ನಡುವಿನ ಒತ್ತಡವನ್ನು ನಾವು ಒಪ್ಪಿಕೊಳ್ಳಬೇಕು.
-- ಇಂಟರ್ನೆಟ್ ಮೂಲಕ ಸಂಪರ್ಕಿತ ಕಂಪ್ಯೂಟರ್ಗಳ ಹುಟ್ಟುವಿಕೆಯಿಂದಾಗಿ, AI ಗೆ ಸಂಬಂಧಿಸಿದ ಭದ್ರತಾ ಸಮಸ್ಯೆಗಳ ಸಂಖ್ಯೆ ಹೆಚ್ಚಾಗುತ್ತಿದೆ.
-- ಅದೇ ಸಮಯದಲ್ಲಿ, ಭದ್ರತೆಯನ್ನು ಸುಧಾರಿಸಲು AI ಬಳಸಲಾಗುತ್ತಿದೆ. ಉದಾಹರಣೆಗೆ, ಇಂದಿನ ಬಹುತೇಕ ಆಧುನಿಕ ಆಂಟಿ-ವೈರಸ್ ಸ್ಕ್ಯಾನರ್ಗಳು AI ಹ್ಯೂರಿಸ್ಟಿಕ್ಸ್ ಮೂಲಕ ಚಾಲಿತವಾಗಿವೆ.
-- ನಮ್ಮ ಡೇಟಾ ವಿಜ್ಞಾನ ಪ್ರಕ್ರಿಯೆಗಳು ಇತ್ತೀಚಿನ ಗೌಪ್ಯತೆ ಮತ್ತು ಭದ್ರತಾ ಅಭ್ಯಾಸಗಳೊಂದಿಗೆ ಸಮ್ಮಿಲನವಾಗಿರಬೇಕು.
### ಪಾರದರ್ಶಕತೆ
+AI ವ್ಯವಸ್ಥೆಗಳು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬಹುದಾಗಿರಬೇಕು. ಪಾರದರ್ಶಕತೆಯ ಪ್ರಮುಖ ಭಾಗವೆಂದರೆ AI ವ್ಯವಸ್ಥೆಗಳ ಮತ್ತು ಅವುಗಳ ಘಟಕಗಳ ವರ್ತನೆಯನ್ನು ವಿವರಿಸುವುದು. AI ವ್ಯವಸ್ಥೆಗಳ ಅರ್ಥವನ್ನು ಸುಧಾರಿಸುವುದಕ್ಕೆ, ಹಿತರಕ್ಷಣಾಧಿಕಾರಿಗಳು ಅವು ಹೇಗೆ ಮತ್ತು ಏಕೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬೇಕು, ಇದರಿಂದಲೇ ಅವರು ಸಾಧ್ಯತೆಯ ಕಾರ್ಯಕ್ಷಮತೆ ಸಮಸ್ಯೆಗಳನ್ನು, ಸುರಕ್ಷತೆ ಮತ್ತು ಗೌಪ್ಯತೆ ಆಪತ್ನತೆಗಳನ್ನು, ಬದ್ಧತೆ, ಹೊರತಾದ ವ್ಯವಹಾರಗಳನ್ನು ಅಥವಾ ಅನಿರೀಕ್ಷಿತ ಫಲಿತಾಂಶಗಳನ್ನು ಗುರುತಿಸಬಹುದು. ನಾವು AI ವ್ಯವಸ್ಥೆಗಳನ್ನು ಬಳಸುವವರು ಎപ്പോൾ, ಏಕೆ ಮತ್ತು ಹೇಗೆ ಅವುಗಳನ್ನು ನಿಯೋಜಿಸುವನ್ನೂ ಮತ್ತು ಬಳಸುವ ನಿಯಮ ಮತ್ತು ಮಿತಿಗಳನ್ನು ಪ್ರಾಮಾಣಿಕವಾಗಿ ಮತ್ತು ಮುಕ್ತಿ ಮುಗ್ಧವಾಗಿ ತಿಳಿಸುವ ಅಗತ್ಯವಿದೆ ಎಂದು ನಂಬುತ್ತೇವೆ. ಉದಾಹರಣೆಗೆ, ಬ್ಯಾಂಕ್ ತನ್ನ ಗ್ರಾಹಕ ಸಾಲ ನಿರ್ಧಾರಗಳಿಗೆ AI ವ್ಯವಸ್ಥೆಯನ್ನು ಬಳಸಿದರೆ, ಫಲಿತಾಂಶಗಳನ್ನು ಪರಿಶೀಲಿಸಿ ಮತ್ತು ಯಾವುದೇ ಡೇಟಾ ವ್ಯವಸ್ಥೆಯ ಶಿಫಾರಸುಗಳನ್ನು ಪ್ರಭಾವಿಸುತ್ತದೆ ಎಂದು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಮುಖ್ಯ. ಸರ್ಕಾರಗಳು ಉದ್ಯಮಗಳಲ್ಲಿ AI ನಿಯಂತ್ರಣ ಶುರುವಾಯ್ತು, ಆದ್ದರಿಂದ ಡೇಟಾ ವಿಜ್ಞಾನಿಗಳು ಮತ್ತು ಸಂಸ್ಥೆಗಳು AI ವ್ಯವಸ್ಥೆ ನಿಯಮಾನುಸಾರವಾಗಿದೆಯೆ ಎಂದು, ವಿಶೇಷವಾಗಿ ಅಯೋಗ್ಯ ಫಲಿತಾಂಶ ಇದ್ದಾಗ, ವಿವರಿಸಲು ಬೇಕು.
-AI ವ್ಯವಸ್ಥೆಗಳು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬಹುದಾಗಿರಬೇಕು. ಪಾರದರ್ಶಕತೆಯ ಪ್ರಮುಖ ಭಾಗವೆಂದರೆ AI ವ್ಯವಸ್ಥೆಗಳ ಮತ್ತು ಅವುಗಳ ಘಟಕಗಳ ವರ್ತನೆಯನ್ನು ವಿವರಿಸುವುದು. AI ವ್ಯವಸ್ಥೆಗಳ ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆಯನ್ನು ಸುಧಾರಿಸಲು, ಹಿತಧಾರಕರು ಅವು ಹೇಗೆ ಮತ್ತು ಏಕೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬೇಕು, ಇದರಿಂದ ಅವರು ಕಾರ್ಯಕ್ಷಮತೆ ಸಮಸ್ಯೆಗಳು, ಸುರಕ್ಷತೆ ಮತ್ತು ಗೌಪ್ಯತೆ ಚಿಂತೆಗಳು, ಪೂರ್ವಗ್ರಹಗಳು, ಹೊರಗೊಳ್ಳುವ ಅಭ್ಯಾಸಗಳು ಅಥವಾ ಅನೈಚ್ಛಿತ ಫಲಿತಾಂಶಗಳನ್ನು ಗುರುತಿಸಬಹುದು. AI ವ್ಯವಸ್ಥೆಗಳನ್ನು ಬಳಸುವವರು ಅವುಗಳನ್ನು ಯಾವಾಗ, ಏಕೆ ಮತ್ತು ಹೇಗೆ ಜಾರಿಗೆ ತರುತ್ತಾರೆ ಎಂಬುದರ ಬಗ್ಗೆ ಸತ್ಯನಿಷ್ಠರಾಗಿರಬೇಕು ಮತ್ತು ಬಳಸುವ ವ್ಯವಸ್ಥೆಗಳ ಮಿತಿಗಳನ್ನು ತಿಳಿಸಬೇಕು. ಉದಾಹರಣೆಗೆ, ಬ್ಯಾಂಕ್ ತನ್ನ ಗ್ರಾಹಕ ಸಾಲ ನಿರ್ಧಾರಗಳಿಗೆ AI ವ್ಯವಸ್ಥೆಯನ್ನು ಬಳಸಿದರೆ, ಫಲಿತಾಂಶಗಳನ್ನು ಪರಿಶೀಲಿಸಿ ಯಾವ ಡೇಟಾ ವ್ಯವಸ್ಥೆಯ ಶಿಫಾರಸುಗಳನ್ನು ಪ್ರಭಾವಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಮುಖ್ಯ. ಸರ್ಕಾರಗಳು ಕೈಗಾರಿಕೆಗಳಲ್ಲಿ AI ನಿಯಂತ್ರಣ ಆರಂಭಿಸುತ್ತಿವೆ, ಆದ್ದರಿಂದ ಡೇಟಾ ವಿಜ್ಞಾನಿಗಳು ಮತ್ತು ಸಂಸ್ಥೆಗಳು AI ವ್ಯವಸ್ಥೆ ನಿಯಮಾವಳಿ ಅಗತ್ಯಗಳನ್ನು ಪೂರೈಸುತ್ತದೆಯೇ ಎಂದು ವಿವರಿಸಬೇಕು, ವಿಶೇಷವಾಗಿ ಇಚ್ಛಿತವಲ್ಲದ ಫಲಿತಾಂಶ ಇದ್ದಾಗ.
+> [🎥 AI ಯಲ್ಲಿ ಪಾರದರ್ಶಕತೆಗೆ ವೀಡಿಯೊ ಮಾಡಲು ಇಲ್ಲಿ ಕ್ಲಿಕ್ ಮಾಡಿ](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-> [🎥 AI ನಲ್ಲಿ ಪಾರದರ್ಶಕತೆಗಾಗಿ ಇಲ್ಲಿ ಕ್ಲಿಕ್ ಮಾಡಿ](https://www.microsoft.com/videoplayer/embed/RE4voJF)
+- AI ವ್ಯವಸ್ಥೆಗಳು ತುಂಬಾ ಸಂಕೀರ್ಣವಾಗಿರುವುದರಿಂದ ಅವು ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತವೆ ಮತ್ತು ಫಲಿತಾಂಶಗಳನ್ನು ವ್ಯಾಪ್ತಿಗೊಳಿಸುವುದು ಕಷ್ಟ.
+- ಈ ಅರ್ಥಕೊರುತ್ತದೆಂತಹ ಕೊರತೆ ಈ ವ್ಯವಸ್ಥೆಗಳ ನಿರ್ವಹಣೆ, ಕಾರ್ಯಗತೀಕರಣ ಮತ್ತು ದಾಖಲಾತಿಗಳನ್ನು ಪ್ರಭಾವಿಸುತ್ತದೆ.
+- ಪ್ರಮುಖವಾಗಿ ಇದರಿಂದ ಉತ್ಪನ್ನ ಫಲಿತಾಂಶವನ್ನು ಬಳಸಿ ಮಾಡಲಾದ ನಿರ್ಧಾರಗಳ ಮೇಲೆ ಪರಿಣಾಮ ಬೀರಬಹುದು.
-- AI ವ್ಯವಸ್ಥೆಗಳು ತುಂಬಾ ಸಂಕೀರ್ಣವಾಗಿರುವುದರಿಂದ ಅವು ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ ಮತ್ತು ಫಲಿತಾಂಶಗಳನ್ನು ಹೇಗೆ ವ್ಯಾಖ್ಯಾನಿಸಬೇಕು ಎಂಬುದು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಕಷ್ಟ.
-- ಈ ಅರ್ಥಮಾಡಿಕೊಳ್ಳದಿಕೆ ಈ ವ್ಯವಸ್ಥೆಗಳನ್ನು ನಿರ್ವಹಿಸುವ, ಕಾರ್ಯಗತಗೊಳಿಸುವ ಮತ್ತು ದಾಖಲೆ ಮಾಡಿಕೊಳ್ಳುವ ರೀತಿಯನ್ನು ಪ್ರಭಾವಿಸುತ್ತದೆ.
-- ಇದಕ್ಕಿಂತ ಮುಖ್ಯವಾಗಿ, ಈ ವ್ಯವಸ್ಥೆಗಳು ಉತ್ಪಾದಿಸುವ ಫಲಿತಾಂಶಗಳನ್ನು ಆಧರಿಸಿ ತೆಗೆದುಕೊಳ್ಳುವ ನಿರ್ಧಾರಗಳನ್ನು ಪ್ರಭಾವಿಸುತ್ತದೆ.
+### ಹೊಣೆಗಾರಿಕೆ
+
+AI ವ್ಯವಸ್ಥೆಗಳು ವಿನ್ಯಾಸ ಮತ್ತು ನಿಯೋಜಿಸುವ ಜನರು ತಮ್ಮ ವ್ಯವಸ್ಥೆಗಳ ಕಾರ್ಯಾಚರಣೆಗೆ ಹೊಣೆಗಾರರಾಗಿರಬೇಕು. ಮುಖಪಟ್ಟ ಗುರುತಿನಂತಹ حساس ತಂತ್ರಜ್ಞಾನಗಳ ಬಳಕೆಯ ಕಡೆಗೆ ಹೊಣೆಗಾರಿಕೆಯ ಅವಶ್ಯಕತೆ ವಿಶಿಷ್ಟವಾಗಿದೆ. ಇತ್ತೀಚಿಗೆ, ಕಾನೂನು ಅಳವಡಿಕೆ ಸಂಸ್ಥೆಗಳ ಕೈಯಲ್ಲಿ ಮುಖ್ಯವಾಗಿ ಮಾಯವಾದ ಮಕ್ಕಳನ್ನು ಹುಡುಕುವಂತಹ ಉಪಯೋಗಗಳಲ್ಲಿ ಮುಖ ಗುರುತಿನ ತಂತ್ರಜ್ಞಾನಗೆ ಹೆಚ್ಚಿದ ಬೇಡಿಕೆ ಇದೆ. ಆದರೆ ಈ ತಂತ್ರಜ್ಞಾನಗಳು ಸರ್ಕಾರದಿಂದ ಸಲ್ಲಿಸಿದ ನಾಗರಿಕರ ಹಕ್ಕುಗಳನ್ನು continuous ವಿಮರ್ಶೆಯಲ್ಲಿ ಮುಟ್ಟಿಸಲು ಉಪಯೋಗವಾಗಬಹುದಾಗಿದೆ. ಆದ್ದರಿಂದ, ಡೇಟಾ ವಿಜ್ಞಾನಿಗಳು ಮತ್ತು ಸಂಸ್ಥೆಗಳು AI ವ್ಯವಸ್ಥೆಯು ವ್ಯಕ್ತಿಗಳು ಅಥವಾ ಸಮುದಾಯದ ಮೇಲೆ ಹೇಗೆ ಪ್ರಭಾವ ಬೀರುತ್ತದೆ ಎಂಬದರಲ್ಲಿ ಹೊಣೆಗಾರರಾಗಿರಬೇಕು.
-### ಹೊಣೆಗಾರಿಕೆ
+[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft's Approach to Responsible AI")
-AI ವ್ಯವಸ್ಥೆಗಳನ್ನು ವಿನ್ಯಾಸಗೊಳಿಸುವ ಮತ್ತು ಜಾರಿಗೆ ತರುವವರು ತಮ್ಮ ವ್ಯವಸ್ಥೆಗಳು ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ ಎಂಬುದಕ್ಕೆ ಹೊಣೆಗಾರರಾಗಿರಬೇಕು. ಮುಖ ಗುರುತಿಸುವಂತಹ ಸಂವೇದನಾಶೀಲ ತಂತ್ರಜ್ಞಾನಗಳೊಂದಿಗೆ ಹೊಣೆಗಾರಿಕೆ ಅಗತ್ಯ ವಿಶೇಷವಾಗಿ ಮುಖ್ಯ. ಇತ್ತೀಚೆಗೆ, ಮುಖ ಗುರುತಿಸುವ ತಂತ್ರಜ್ಞಾನಕ್ಕೆ ಹೆಚ್ಚುತ್ತಿರುವ ಬೇಡಿಕೆ ಇದೆ, ವಿಶೇಷವಾಗಿ ಕಾನೂನು ಅನುಷ್ಠಾನ ಸಂಸ್ಥೆಗಳಿಂದ, ಅವರು ಈ ತಂತ್ರಜ್ಞಾನವನ್ನು ಕಳೆದುಹೋಗಿದ ಮಕ್ಕಳನ್ನು ಹುಡುಕಲು ಉಪಯೋಗಿಸುತ್ತಾರೆ. ಆದರೆ, ಈ ತಂತ್ರಜ್ಞಾನಗಳನ್ನು ಸರ್ಕಾರವು ತಮ್ಮ ನಾಗರಿಕರ ಮೂಲಭೂತ ಸ್ವಾತಂತ್ರ್ಯಗಳನ್ನು ಅಪಾಯಕ್ಕೆ ಹಾಕಲು ಬಳಸಬಹುದು, ಉದಾಹರಣೆಗೆ ನಿರ್ದಿಷ್ಟ ವ್ಯಕ್ತಿಗಳ ನಿರಂತರ ನಿಗಾವಳಿಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುವ ಮೂಲಕ. ಆದ್ದರಿಂದ, ಡೇಟಾ ವಿಜ್ಞಾನಿಗಳು ಮತ್ತು ಸಂಸ್ಥೆಗಳು ತಮ್ಮ AI ವ್ಯವಸ್ಥೆಯು ವ್ಯಕ್ತಿಗಳು ಅಥವಾ ಸಮಾಜದ ಮೇಲೆ ಹೇಗೆ ಪ್ರಭಾವ ಬೀರುತ್ತದೆ ಎಂಬುದಕ್ಕೆ ಜವಾಬ್ದಾರರಾಗಿರಬೇಕು.
+> 🎥 ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ: ಮುಖ ಗುರುತಿಸುವ ಮೂಲಕ ವಿಸ್ತೃತ ದೂರದರ್ಶನದ ಎಚ್ಚರಿಕೆಗಳು
-[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft's Approach to Responsible AI")
+ಅಂತಿಮವಾಗಿ, AI ಯನ್ನು ಸಮಾಜಕ್ಕೆ ತರಲು ಮೊದಲ ತಲೆಮಾರಿಗೆ gehörಿಸಿದಂತೆ, ಕಂಪ್ಯೂಟರ್ಗಳು ಜನರಿಗೆ ಯಾವಾಗಲೂ ಹೊಣೆಗಾರರಾಗಿರಲು ಮತ್ತು ಕಂಪ್ಯೂಟರ್ ವಿನ್ಯಾಸದ ಜನರು ಇತರ ಎಲ್ಲರಿಗೂ ಹೊಣೆಗಾರರಾಗಲು ಹೇಗೆ ಖಚಿತಪಡಿಸಿಕೊಳ್ಳುವುದು ಎಂಬುದು ನಮ್ಮ ತಲೆಮಾರಿಗೆ ದೊಡ್ಡ ಪ್ರಶ್ನೆ ಆಗಿದೆ.
-> 🎥 ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ ವಿಡಿಯೋ: ಮುಖ ಗುರುತಿಸುವ ಮೂಲಕ ಸಾಮೂಹಿಕ ನಿಗಾವಳಿಯ ಎಚ್ಚರಿಕೆಗಳು
+## ಪರಿಣಾಮ ಮೌಲ್ಯಮಾಪನ
-ಕೊನೆಗೆ, ನಮ್ಮ ತಲೆಮಾರಿಗೆ, AI ಅನ್ನು ಸಮಾಜಕ್ಕೆ ತರುವ ಮೊದಲ ತಲೆಮಾರಿಗೆ, ದೊಡ್ಡ ಪ್ರಶ್ನೆ ಏನೆಂದರೆ, ಕಂಪ್ಯೂಟರ್ಗಳು ಜನರಿಗೆ ಹೊಣೆಗಾರರಾಗಿರಲು ಹೇಗೆ ಖಚಿತಪಡಿಸಿಕೊಳ್ಳುವುದು ಮತ್ತು ಕಂಪ್ಯೂಟರ್ಗಳನ್ನು ವಿನ್ಯಾಸಗೊಳಿಸುವವರು ಎಲ್ಲರಿಗೂ ಹೊಣೆಗಾರರಾಗಿರಲು ಹೇಗೆ ಖಚಿತಪಡಿಸಿಕೊಳ್ಳುವುದು.
+ಯಂತ್ರ ಶಿಕ್ಷಣ ಮಾದರಿ ತರಬೇತುಗೊಳಿಸುವ ಮುಂಚೆ, AI ವ್ಯವಸ್ಥೆಯ ಉದ್ದೇಶ, ನಿರೀಕ್ಷಿತ ಬಳಕೆ, ಎಲ್ಲಿ ನಿಯೋಜನೆ ಮಾಡಲಾಗುತ್ತದೆ ಮತ್ತು ಯಾರು ವ್ಯವಸ್ಥೆಯೊಂದಿಗೆ ಒಡನಾಟ ಇರುತ್ತಾರೆಯೋ ಅವು ತಿಳಿದುಕೊಳ್ಳಲು ಪರಿಣಾಮ ಮೌಲ್ಯಮಾಪನ ಮಾಡುವುದು ಮಹತ್ವವಾಗಿದೆ. ಇದು ವ್ಯವಸ್ಥೆಯನ್ನು ವಿಮರ್ಶೆ ಮಾಡುವವರು ಅಥವಾ ಪರೀಕ್ಷಕರು ಸಾಧ್ಯತೆಯ ಅಪಾಯ ಮತ್ತು ನಿರೀಕ್ಷಿತ ಪರಿಣಾಮಗಳನ್ನು ಗುರುತಿಸುವಾಗ ಸಲಹೆಗೆ ಸಹಾಯವಾಗುತ್ತದೆ.
-## ಪರಿಣಾಮ ಮೌಲ್ಯಮಾಪನ
+ಪರಿಣಾಮ ಮೌಲ್ಯಮಾಪನ ಮಾಡುವಾಗ ಗಮನಿಸುವ ಕೆಲವು ಕ್ಷೇತ್ರಗಳು:
-ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿಯನ್ನು ತರಬೇತುಗೊಳಿಸುವ ಮೊದಲು, AI ವ್ಯವಸ್ಥೆಯ ಉದ್ದೇಶವನ್ನು, ನಿರೀಕ್ಷಿತ ಬಳಕೆಯನ್ನು, ಎಲ್ಲಿ ಜಾರಿಗೆ ತರುವುದನ್ನು ಮತ್ತು ಯಾರು ವ್ಯವಸ್ಥೆಯೊಂದಿಗೆ ಸಂವಹನ ಮಾಡಲಿದ್ದಾರೆ ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಪರಿಣಾಮ ಮೌಲ್ಯಮಾಪನ ಮಾಡುವುದು ಮುಖ್ಯ. ಇದು ವ್ಯವಸ್ಥೆಯನ್ನು ವಿಮರ್ಶಿಸುವವರು ಅಥವಾ ಪರೀಕ್ಷಕರು ಸಾಧ್ಯವಿರುವ ಅಪಾಯಗಳು ಮತ್ತು ನಿರೀಕ್ಷಿತ ಪರಿಣಾಮಗಳನ್ನು ಗುರುತಿಸುವಾಗ ಪರಿಗಣಿಸಬೇಕಾದ ಅಂಶಗಳನ್ನು ತಿಳಿದುಕೊಳ್ಳಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ.
+* **ವೈಯಕ್ತಿಕರ ಮೇಲೆ ಹಾನಿಕರ ಪರಿಣಾಮ**. ಯಾವುದೇ ಮಿತಿ ಅಥವಾ ಅಗತ್ಯತೆ, ಬೆಂಬಲಿಸದ ಬಳಕೆ ಅಥವಾ ಗುರುತಿಸಲ್ಪಟ್ಟ ನಿಯಮಿತತೆಯ ಕೊರತೆ ತಿಳಿದುಕೊಳ್ಳುವುದು ಮಹತ್ವ, ವ್ಯವಸ್ಥೆ ಜನರಿಗೆ ಹಾನಿಯಾಗದಂತೆ ಬಳಸಬೇಕು ಎಂದು ಖಚಿತಪಡಿಸಲು.
+* **ಡೇಟಾ ಅಗತ್ಯತೆ**. ವ್ಯವಸ್ಥೆ ಡೇಟಾವನ್ನು ಹೇಗೆ ಮತ್ತು ಎಲ್ಲಿಗೆ ಬಳಸುತ್ತದೆ ಎನ್ನುವುದನ್ನು ತಿಳಿದುಕೊಳ್ಳುವುದು ವಿಮರ್ಶಕರಿಗೆ ನಿಗದಿತ ನಿಯಮಗಳು (ಹೆಚ್ಚಾಗಿ GDPR ಅಥವಾ HIPAA ನಿಯಮಗಳು) ಪಾಲನೆಯ ಕುರಿತಾಗಿ ವಿಶೇಷ ಗಮನ ಇರಬೇಕಿರುವ ಅಂಶಗಳನ್ನು ಪರಿಚಯಿಸುತ್ತದೆ. ಜೊತೆಗೆ, ತರಬೇತಿಗಾಗಿ ಡೇಟಾದ ಮೂಲ ಅಥವಾ ಪ್ರಮಾಣ ಸೂಕ್ತವೇ ಎಂದು ಪರೀಕ್ಷಿಸಿ.
+* **ಪರಿಣಾಮದ ಸಾರಾಂಶ**. ವ್ಯವಸ್ಥೆ ಬಳಕೆಯಿಂದ ಏನು ಹಾನಿಗಳು ಸಂಭವಿಸಬಹುದು ಎಂಬ ಪಟ್ಟಿ ಸಂಗ್ರಹಿಸಿ. ಯಂತ್ರ ಶಿಕ್ಷಣ ಜೀವನಚರಿತ್ರೆಯಲ್ಲಿ ಗುರುತಿಸಿದ ಸಮಸ್ಯೆಗಳು ಪರಿಹರಿಸಲ್ಪಟ್ಟಿದ್ದೇ ಅಥವಾ ಸ್ಪಷ್ಟಪಡಿಸಲ್ಪಟ್ಟೇ ಎಂದು ಪರಿಶೀಲಿಸಿ.
+* ಆರು ಮೂಲ ಸಿದ್ಧಾಂತಗಳಿಗೆ ಸಂಬಂಧಿಸಿದ ಅನ್ವಯಿಸುವ ಗುರಿಗಳು. ಪ್ರತಿ ಸಿದ್ಧಾಂತದ ಗುರಿಗಳು ಪೂರೈಸಲ್ಪಟ್ಟಿದ್ದೇ ಮತ್ತು ಯಾವುದೇ ಶಿಥಿಲತೆಗಳಿದ್ದೇ ಎಂದು ಮೌಲ್ಯಮಾಪನ ಮಾಡಿ.
-ಪರಿಣಾಮ ಮೌಲ್ಯಮಾಪನ ನಡೆಸುವಾಗ ಗಮನಿಸುವ ಕ್ಷೇತ್ರಗಳು:
-* **ವ್ಯಕ್ತಿಗಳ ಮೇಲೆ ಹಾನಿಕರ ಪರಿಣಾಮ**. ಯಾವುದೇ ನಿರ್ಬಂಧಗಳು ಅಥವಾ ಅಗತ್ಯಗಳು, ಬೆಂಬಲಿಸದ ಬಳಕೆ ಅಥವಾ ವ್ಯವಸ್ಥೆಯ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ತಡೆಯುವ ಯಾವುದೇ ತಿಳಿದ ಮಿತಿಗಳನ್ನು ತಿಳಿದುಕೊಳ್ಳುವುದು, ವ್ಯವಸ್ಥೆಯನ್ನು ವ್ಯಕ್ತಿಗಳಿಗೆ ಹಾನಿ ಉಂಟುಮಾಡುವ ರೀತಿಯಲ್ಲಿ ಬಳಸದಂತೆ ಖಚಿತಪಡಿಸಲು ಅಗತ್ಯ.
-* **ಡೇಟಾ ಅಗತ್ಯಗಳು**. ವ್ಯವಸ್ಥೆ ಡೇಟಾವನ್ನು ಹೇಗೆ ಮತ್ತು ಎಲ್ಲಿ ಬಳಸುತ್ತದೆ ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ವಿಮರ್ಶಕರಿಗೆ GDPR ಅಥವಾ HIPPA ಡೇಟಾ ನಿಯಮಾವಳಿಗಳಂತಹ ಯಾವುದೇ ಡೇಟಾ ಅಗತ್ಯಗಳನ್ನು ಪರಿಶೀಲಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಜೊತೆಗೆ, ತರಬೇತಿಗೆ ಡೇಟಾದ ಮೂಲ ಅಥವಾ ಪ್ರಮಾಣ ಸಾಕಷ್ಟು ಇದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸಿ.
-* **ಪರಿಣಾಮದ ಸಾರಾಂಶ**. ವ್ಯವಸ್ಥೆಯನ್ನು ಬಳಸುವುದರಿಂದ ಸಂಭವಿಸಬಹುದಾದ ಹಾನಿಗಳ ಪಟ್ಟಿಯನ್ನು ಸಂಗ್ರಹಿಸಿ. ML ಜೀವನಚರ್ಯೆಯಲ್ಲಿ, ಗುರುತಿಸಲ್ಪಟ್ಟ ಸಮಸ್ಯೆಗಳು ಪರಿಹಾರಗೊಂಡಿವೆ ಅಥವಾ ಪರಿಹರಿಸಲ್ಪಟ್ಟಿವೆ ಎಂದು ಪರಿಶೀಲಿಸಿ.
-* **ಪ್ರತೀ ಆರು ಮೂಲ ತತ್ವಗಳಿಗೆ ಅನ್ವಯಿಸುವ ಗುರಿಗಳು**. ಪ್ರತೀ ತತ್ವದಿಂದ ಗುರಿಗಳು ಪೂರೈಸಲ್ಪಟ್ಟಿವೆ ಅಥವಾ ಯಾವುದೇ ಗ್ಯಾಪ್ಗಳಿವೆ ಎಂದು ಮೌಲ್ಯಮಾಪನ ಮಾಡಿ.
+## ಜವಾಬ್ದಾರಿಯಾದ AI ಸಹಿತ ಡಿಬಗ್ಗಿಂಗ್
-## ಜವಾಬ್ದಾರಿಯುತ AI ಜೊತೆಗೆ ಡಿಬಗ್ ಮಾಡುವುದು
+ಸಾಫ್ಟ್ವೇರ್ ಅಪ್ಲಿಕೇಶನ್ ಡಿಬಗ್ಗಿಂಗ್ಗಳಂತಹ, AI ವ್ಯವಸ್ಥೆಯ ಡಿಬಗ್ಗಿಂಗ್ ಸಂಭವಿಸಿರುವ ಸಮಸ್ಯೆಗಳನ್ನು ಗುರುತಿಸುವ ಹಾಗೂ ಪರಿಹರಿಸುವ ಅಗತ್ಯವಾದ ಪ್ರಕ್ರಿಯೆ. ಮಾದರಿ ನಿರೀಕ್ಷಿತಂತೆ ಕಾರ್ಯನಿರ್ವಹಿಸದ ಅಥವಾ ಜವಾಬ್ದಾರಿಯಾದ ರೀತಿಯಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸದ ಕಾರಣಗಳನ್ನು ಬಹುಪಾಲು ಪಡೆಯಲು ಸಾಧ್ಯ. ಹೆಚ್ಚಿನ ಫಂಕ್ಷನಲ್ ಮಾದರಿ ಕಾರ್ಯಕ್ಷಮತೆ ಅಂಕಿಅಂಶಗಳು ಸಂಖ್ಯಾತ್ಮಕ ಒಟ್ಟುಗಳಾಗಿವೆ ಮತ್ತು ಜವಾಬ್ದಾರಿಯಾದ AI ಸಿದ್ಧಾಂತಗಳನ್ನು ಈ ಮಾದರಿ ಉಲ್ಲಂಘಿಸುವ ಬಗ್ಗೆ ವಿಶ್ಲೇಷಿಸಲು ತೃಪ್ತಿಸಿರಲಾರವು. ಜೊತೆಗೆ, ಯಂತ್ರ ಶಿಕ್ಷಣ ಮಾದರಿ ಒಂದು ಕಪ್ಪು ಪೆಟ್ಟು (ಬ್ಲಾಕ್ ಬಾಕ್ಸ್) ಆಗಿದ್ದು ಅದರ ಫಲಿತಾಂಶವನ್ನು ಪ್ರೇರೇಪಿಸುವುದು ಅಥವಾ ತಪ್ಪು ಮಾಡಿದಾಗ ವಿವರಣೆ ನೀಡುವುದು ಬಿಕ್ಕಟವಾಗಿದೆ. ನಂತರ ಈ ಪಾಠದಲ್ಲಿ, ಜವಾಬ್ದಾರಿಯಾದ AI ಡ್ಯಾಶ್ಬೋರ್ಡ್ ಬಳಸುವುದನ್ನು ಕಲಿಯುತ್ತೇವೆ. ಈ ಡ್ಯಾಶ್ಬೋರ್ಡ್ ಡೇಟಾ ವಿಜ್ಞಾನಿಗಳು ಮತ್ತು AI ಅಭಿವೃದ್ಧಿಕರರಿಗೆ ಸಮಗ್ರ ಪ್ರಯೋಜನ ಒದಗಿಸುತ್ತದೆ:
-ಸಾಫ್ಟ್ವೇರ್ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಡಿಬಗ್ ಮಾಡುವಂತೆ, AI ವ್ಯವಸ್ಥೆಯನ್ನು ಡಿಬಗ್ ಮಾಡುವುದು ವ್ಯವಸ್ಥೆಯ ಸಮಸ್ಯೆಗಳನ್ನು ಗುರುತಿಸುವ ಮತ್ತು ಪರಿಹರಿಸುವ ಅಗತ್ಯ ಪ್ರಕ್ರಿಯೆ. ಮಾದರಿ ನಿರೀಕ್ಷೆಯಂತೆ ಕಾರ್ಯನಿರ್ವಹಿಸದ ಅಥವಾ ಜವಾಬ್ದಾರಿಯುತವಾಗದಿರುವುದಕ್ಕೆ ಹಲವಾರು ಕಾರಣಗಳಿರಬಹುದು. ಬಹುತೇಕ ಸಾಂಪ್ರದಾಯಿಕ ಮಾದರಿ ಕಾರ್ಯಕ್ಷಮತೆ ಮೌಲ್ಯಮಾಪನಗಳು ಮಾದರಿಯ ಕಾರ್ಯಕ್ಷಮತೆಯ ಪ್ರಮಾಣಾತ್ಮಕ ಸಮಗ್ರಗಳು, ಅವು ಜವಾಬ್ದಾರಿಯುತ AI ತತ್ವಗಳನ್ನು ಉಲ್ಲಂಘಿಸುವುದನ್ನು ವಿಶ್ಲೇಷಿಸಲು ಸಾಕಾಗುವುದಿಲ್ಲ. ಜೊತೆಗೆ, ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿ ಒಂದು ಕಪ್ಪು ಬಾಕ್ಸ್ ಆಗಿದ್ದು, ಅದರ ಫಲಿತಾಂಶವನ್ನು ಏನು ಚಾಲನೆ ಮಾಡುತ್ತದೆ ಅಥವಾ ತಪ್ಪು ಮಾಡಿದಾಗ ವಿವರಿಸುವುದು ಕಷ್ಟ. ಈ ಕೋರ್ಸ್ನ ನಂತರದ ಭಾಗದಲ್ಲಿ, ನಾವು ಜವಾಬ್ದಾರಿಯುತ AI ಡ್ಯಾಶ್ಬೋರ್ಡ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು AI ವ್ಯವಸ್ಥೆಗಳನ್ನು ಡಿಬಗ್ ಮಾಡುವುದನ್ನು ಕಲಿಯುತ್ತೇವೆ. ಡ್ಯಾಶ್ಬೋರ್ಡ್ ಡೇಟಾ ವಿಜ್ಞಾನಿಗಳು ಮತ್ತು AI ಅಭಿವೃದ್ಧಿಪಡಿಸುವವರಿಗೆ ಸಮಗ್ರ ಸಾಧನವನ್ನು ಒದಗಿಸುತ್ತದೆ:
+* **ತಪಾಸಣಾ ವಿಶ್ಲೇಷಣೆ**. ಪರಿಸ್ಥಿತಿಗೆ ಪ್ರಭಾವ ಬೀರುವ ತಪ್ಪು ವಿತರಣೆ ಗುರುತಿಸಲು.
+* **ಮಾದರಿ ಅವಲೋಕನ**. ಡೇಟಾ ಗುಂಪುಗಳಾದರಲ್ಲಿ ಕಾರ್ಯಕ್ಷಮತೆಯಲ್ಲಿ ವ್ಯತ್ಯಾಸಗಳಿರುವ ಸ್ಥಳಗಳನ್ನು ಕಂಡುಹಿಡಿಯಲು.
+* **ಡೇಟಾ ವಿಶ್ಲೇಷಣೆ**. ಡೇಟಾ ವಿತರಣೆಯನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಮತ್ತು ನ್ಯಾಯತೆ, ಒಳಗೊಂಡಿಕೆ ಮತ್ತು ವಿಶ್ವಾಸಾರ್ಹತೆ ಸಮಸ್ಯೆಗಳಿಗೆ ಕಾರಣವಾಗಬಹುದಾದ ಆಯಾಮಗಳನ್ನು ಗುರುತಿಸಲು.
+* **ಮಾದರಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ**. ಮಾದರಿಯ ನಿರ್ಧಾರಗಳನ್ನು ಏನು ಪ್ರಭಾವಿಸುತ್ತದೆ ಎಂದು ತಿಳಿದುಕೊಳ್ಳಲು. ಇದು ಪಾರದರ್ಶಕತೆ ಮತ್ತು ಹೊಣೆಗಾರಿಕೆಗೆ ಮಹತ್ವದ್ದಾಗಿದೆ.
-* **ದೋಷ ವಿಶ್ಲೇಷಣೆ**. ವ್ಯವಸ್ಥೆಯ ನ್ಯಾಯತೆ ಅಥವಾ ವಿಶ್ವಾಸಾರ್ಹತೆಯನ್ನು ಪ್ರಭಾವಿಸುವ ಮಾದರಿಯ ದೋಷ ವಿತರಣೆ ಗುರುತಿಸಲು.
-* **ಮಾದರಿ ಅವಲೋಕನ**. ಡೇಟಾ ಗುಂಪುಗಳ ನಡುವೆ ಮಾದರಿಯ ಕಾರ್ಯಕ್ಷಮತೆಯಲ್ಲಿ ಅಸಮಾನತೆಗಳಿರುವ ಸ್ಥಳಗಳನ್ನು ಕಂಡುಹಿಡಿಯಲು.
-* **ಡೇಟಾ ವಿಶ್ಲೇಷಣೆ**. ಡೇಟಾ ವಿತರಣೆ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಮತ್ತು ನ್ಯಾಯತೆ, ಸಮಾವೇಶ ಮತ್ತು ವಿಶ್ವಾಸಾರ್ಹತೆ ಸಮಸ್ಯೆಗಳಿಗೆ ಕಾರಣವಾಗಬಹುದಾದ ಯಾವುದೇ ಪೂರ್ವಗ್ರಹವನ್ನು ಗುರುತಿಸಲು.
-* **ಮಾದರಿ ವ್ಯಾಖ್ಯಾನಾತ್ಮಕತೆ**. ಮಾದರಿಯ ಭವಿಷ್ಯವಾಣಿಗಳನ್ನು ಏನು ಪ್ರಭಾವಿಸುತ್ತದೆ ಅಥವಾ ಪ್ರೇರೇಪಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು. ಇದು ಪಾರದರ್ಶಕತೆ ಮತ್ತು ಹೊಣೆಗಾರಿಕೆಗೆ ಮಹತ್ವಪೂರ್ಣವಾಗಿದೆ.
-## 🚀 ಸವಾಲು
+## 🚀 ಸವಾಲ್
+
+ಹಾನಿಗಳನ್ನು ಮೊದಲೇ ಪರಿಚಯಿಸುವುದನ್ನು ತಡೆಗಟ್ಟಲು, ನಾವು:
-ಹಾನಿಗಳನ್ನು ಮೊದಲಿನಿಂದಲೇ ಪರಿಚಯಿಸುವುದನ್ನು ತಡೆಯಲು, ನಾವು:
+- ವ್ಯವಸ್ಥೆಗಳಲ್ಲಿ ಕೆಲಸ ಮಾಡುವ ಜನರಲ್ಲಿ ಹಿನ್ನಡೆಯು ಹಾಗೂ ದೃಷ್ಟಿಕೋನಗಳಲ್ಲಿ ವೈವಿಧ್ಯತೆಯನ್ನು ಇರಿಸಬೇಕು
+- ನಮ್ಮ ಸಮಾಜದ ವೈವಿಧ್ಯತೆಯನ್ನು ಪ್ರತಿಬಿಂಬಿಸುವ ಡೇಟಾಸೆಟ್ಗಳಲ್ಲಿ ಹೂಡಿಕೆಮಾಡಬೇಕು
+- ಯಂತ್ರ ಶಿಕ್ಷಣ ಜೀವನಚರಿತ್ರೆಯಲ್ಲಿ ಜವಾಬ್ದಾರಿಯಾದ AI ಪತ್ತೆಮಾಡಲು ಮತ್ತು ಸರಿಪಡಿಸಲು ಉತ್ತಮ ವಿಧಾನಗಳನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸಬೇಕು
-- ವ್ಯವಸ್ಥೆಗಳಲ್ಲಿ ಕೆಲಸ ಮಾಡುವ ಜನರ ನಡುವೆ ವೈವಿಧ್ಯಮಯ ಹಿನ್ನೆಲೆ ಮತ್ತು ದೃಷ್ಟಿಕೋನಗಳನ್ನು ಹೊಂದಿರಬೇಕು
-- ನಮ್ಮ ಸಮಾಜದ ವೈವಿಧ್ಯತೆಯನ್ನು ಪ್ರತಿಬಿಂಬಿಸುವ ಡೇಟಾಸೆಟ್ಗಳಲ್ಲಿ ಹೂಡಿಕೆ ಮಾಡಬೇಕು
-- ಯಂತ್ರ ಅಧ್ಯಯನ ಜೀವನಚರ್ಯೆಯಲ್ಲಿ ಜವಾಬ್ದಾರಿಯುತ AI ಕಂಡುಹಿಡಿಯಲು ಮತ್ತು ಸರಿಪಡಿಸಲು ಉತ್ತಮ ವಿಧಾನಗಳನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸಬೇಕು
+ಮಾದರಿಯ ಅವಿಶ್ವಾಸಾರ್ಹತೆ ಮಾರಾಟದಲ್ಲಿ ಮತ್ತು ಉಪಯೋಗದಲ್ಲಿ ಸ್ಪಷ್ಟವಾಗುವ ನೈಸರ್ಗಿಕ ಸಂದರ್ಭಗಳನ್ನು ಯೋಚಿಸಿ. ಇನ್ನೇನು ಅನ್ವೇಷಿಸಬೇಕು?
-ಮಾದರಿಯ ಅಸ್ಥಿರತೆ ಮಾದರಿ ನಿರ್ಮಾಣ ಮತ್ತು ಬಳಕೆಯಲ್ಲಿ ಸ್ಪಷ್ಟವಾಗಿರುವ ನೈಜ ಜೀವನದ ಸಂದರ್ಭಗಳನ್ನು ಯೋಚಿಸಿ. ಇನ್ನೇನು ಪರಿಗಣಿಸಬೇಕು?
+## [ಪೋಸ್ಟ್-ನ್ಯಾಸ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/)
-## [ಪೋಸ್ಟ್-ಪಾಠ ಪ್ರಶ್ನೋತ್ತರ](https://ff-quizzes.netlify.app/en/ml/)
## ವಿಮರ್ಶೆ ಮತ್ತು ಸ್ವಯಂ ಅಧ್ಯಯನ
-ಈ ಪಾಠದಲ್ಲಿ, ನೀವು ಯಂತ್ರ ಅಧ್ಯಯನದಲ್ಲಿ ನ್ಯಾಯ ಮತ್ತು ಅನ್ಯಾಯದ ತತ್ವಗಳ ಕೆಲವು ಮೂಲಭೂತಗಳನ್ನು ಕಲಿತಿದ್ದೀರಿ.
+
+ಈ ಪಾಠದಲ್ಲಿ, ನೀವು ಯಂತ್ರಶಿಕ್ಷಣದಲ್ಲಿ ನ್ಯಾಯ ಮತ್ತು ಅನ್ಯಾಯದ ಪರಿಕಲ್ಪನೆಗಳ ಕೆಲವು ಮೂಲತತ್ವಗಳನ್ನು ಕಲಿತಿದ್ದೀರಿ.
-ಈ ವಿಷಯಗಳಲ್ಲಿ ಇನ್ನಷ್ಟು ಆಳವಾಗಿ ತಿಳಿಯಲು ಈ ಕಾರ್ಯಾಗಾರವನ್ನು ವೀಕ್ಷಿಸಿ:
+ಈ ಕಾರ್ಯಾಗಾರವನ್ನು ವೀಕ್ಷಿಸಿ ವಿಷಯಗಳ ಕುರಿತು ಹೆಚ್ಚಿನ ತಿಳಿವಳಿಕೆ ಪಡೆಯಲು:
-- ಜವಾಬ್ದಾರಿಯುತ AI ಗಾಗಿ ಪ್ರಯತ್ನ: Besmira Nushi, Mehrnoosh Sameki ಮತ್ತು Amit Sharma ಅವರಿಂದ ತತ್ವಗಳನ್ನು ಅಭ್ಯಾಸಕ್ಕೆ ತರುವಿಕೆ
+- ಜವಾಬ್ದಾರಿಯುತ AI ಗಳಿಗಾಗಿಸಿದ ಪ್ರಯತ್ನದಲ್ಲಿ: ನೈತಿಕತೆಯನ್ನು ಆಚರಣೆಗೆ ತರುವುದು - ಬೆಸ್ಮಿರಾ ನುವ್ಶಿ, ಮೆಹರ್ನೂಶ್ ಸಮೇಕಿ, ಮತ್ತು ಅಮಿತ್ ಶರ್ಮಾ
[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI")
-> 🎥 ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ ವೀಡಿಯೋ ವೀಕ್ಷಿಸಲು: Besmira Nushi, Mehrnoosh Sameki, ಮತ್ತು Amit Sharma ಅವರಿಂದ ಜವಾಬ್ದಾರಿಯುತ AI ನಿರ್ಮಿಸಲು RAI Toolbox: ಒಂದು ಓಪನ್-ಸೋರ್ಸ್ ಫ್ರೇಮ್ವರ್ಕ್
+> 🎥 ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ ವಿಡಿಯೋ ನೋಡಲು: ಜವಾಬ್ದಾರಿಯುತ AI ಕರ್ಮಗಳನ್ನು ರೂಪಿಸುವ ತೆರೆದ ಮೂಲಾಧಾರಿತ ವ್ಯವಸ್ಥೆ - ಬೆಸ್ಮಿರಾ ನುವ್ಶಿ, ಮೆಹರ್ನೂಶ್ ಸಮೇಕಿ, ಮತ್ತು ಅಮಿತ್ ಶರ್ಮಾ ಅವರುಗಳಾಜರಾದ
-ಇನ್ನೂ ಓದಿ:
+ಈ ಕೆಳಗಿನ ಸಹ ಓದಿ:
-- ಮೈಕ್ರೋಸಾಫ್ಟ್ನ RAI ಸಂಪನ್ಮೂಲ ಕೇಂದ್ರ: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
+- ಮೈಕ್ರೋಸಾಫ್ಟ್ ನ RAI ಸಂಪನ್ಮೂಲ ಕೇಂದ್ರ: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
-- ಮೈಕ್ರೋಸಾಫ್ಟ್ನ FATE ಸಂಶೋಧನಾ ಗುಂಪು: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
+- ಮೈಕ್ರೋಸಾಫ್ಟ್ ನ FATE ಸಂಶೋಧನಾ ತಂಡ: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
-RAI Toolbox:
+RAI ಟೂಲ್ಬಾಕ್ಸ್:
- [Responsible AI Toolbox GitHub repository](https://github.com/microsoft/responsible-ai-toolbox)
-ನ್ಯಾಯತೆಯ ಖಚಿತತೆಗಾಗಿ Azure ಯಂತ್ರ ಅಧ್ಯಯನದ ಸಾಧನಗಳ ಬಗ್ಗೆ ಓದಿ:
+ಅಜೂರ್ ಮೆಷಿನ್ ಲರ್ನಿಂಗ್ ಟೂಲ್ಸ್ ನಲ್ಲಿ ನ್ಯಾಯತೆಗೆ ಸಂಬಂಧಿಸಿದ ಮಾಹಿತಿಯನ್ನು ಓದಿ:
-- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
+- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
## ನಿಯೋಜನೆ
-[RAI Toolbox ಅನ್ವೇಷಿಸಿ](assignment.md)
+[RAI ಟೂಲ್ಬಾಕ್ಸ್ ಪರಿಶೀಲಿಸಿ](assignment.md)
---
-**ಅಸ್ವೀಕರಣ**:
-ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.
+**ಅಸ್ವೀಕಾರ**:
+ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯನ್ನು ಸಾಧಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ದಯವಿಟ್ಟು ಗಮನಿಸಿ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸಡ್ಡೆಗಳು ಇರಬಹುದು. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜು ಪ್ರಾಮಾಣಿಕ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಪ್ರಮುಖ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದವನ್ನು ಬಳಸುವ ಮೂಲಕ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಗಳ ಅಥವಾ ತಪ್ಪು ವ್ಯಾಖ್ಯಾನಗಳ ಬಗ್ಗೆ ನಾವು ಹೊಣೆಗಾರರಲ್ಲ.
\ No newline at end of file
diff --git a/translations/kn/2-Regression/1-Tools/README.md b/translations/kn/2-Regression/1-Tools/README.md
index 96d049d39..3e5d4ab57 100644
--- a/translations/kn/2-Regression/1-Tools/README.md
+++ b/translations/kn/2-Regression/1-Tools/README.md
@@ -1,72 +1,72 @@
-# ರಿಗ್ರೆಶನ್ ಮಾದರಿಗಳಿಗಾಗಿ ಪೈಥಾನ್ ಮತ್ತು ಸ್ಕಿಕಿಟ್-ಲರ್ನ್ನೊಂದಿಗೆ ಪ್ರಾರಂಭಿಸಿ
+# ರಿಗ್ರೆಶನ್ ಮಾದರಿಗಳಿಗಾಗಿ ಪೈಥಾನ್ ಮತ್ತು ಸ್ಕಿಕಿಟ್-ಲರ್ನ್ನೊಂದಿಗೆ ಪ್ರಾರಂಭಿಸಿ
-
+
-> ಸ್ಕೆಚ್ನೋಟ್ನು [ಟೊಮೊಮಿ ಇಮುರು](https://www.twitter.com/girlie_mac) ರಚಿಸಿದ್ದಾರೆ
+> ಸ್ಕೆಚ್ನೋಟ್ [ಟೊಮೊಮಿ ಇಮುರು](https://www.twitter.com/girlie_mac) ರವರಿಂದ
-## [ಪೂರ್ವ-ಪಾಠ ಪ್ರಶ್ನೋತ್ತರ](https://ff-quizzes.netlify.app/en/ml/)
+## [ಪ್ರೀ-ಲೆಕ್ಚರ್ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/)
> ### [ಈ ಪಾಠ R ನಲ್ಲಿ ಲಭ್ಯವಿದೆ!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
## ಪರಿಚಯ
-ಈ ನಾಲ್ಕು ಪಾಠಗಳಲ್ಲಿ, ನೀವು ರಿಗ್ರೆಶನ್ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸುವ ವಿಧಾನವನ್ನು ಕಂಡುಹಿಡಿಯುತ್ತೀರಿ. ನಾವು ಇವುಗಳ ಉದ್ದೇಶವನ್ನು ಶೀಘ್ರದಲ್ಲೇ ಚರ್ಚಿಸುವೆವು. ಆದರೆ ನೀವು ಏನನ್ನಾದರೂ ಮಾಡುವ ಮೊದಲು, ಪ್ರಕ್ರಿಯೆಯನ್ನು ಪ್ರಾರಂಭಿಸಲು ಸರಿಯಾದ ಸಾಧನಗಳನ್ನು ಹೊಂದಿರುವುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ!
+ಈ ನಾಲ್ಕು ಪಾಠಗಳಲ್ಲಿ, ನೀವು ರಿಗ್ರೆಶನ್ ಮಾದರಿಗಳನ್ನು ಹೇಗೆ ನಿರ್ಮಿಸುವುದು ಎಂಬುದನ್ನು ಕಂಡುಹಿಡಿಯುತ್ತೀರಿ. ಇದಕ್ಕಾಗಿ ಏನು ಅವಶ್ಯಕ ಎಂಬವುಗಳ ಬಗ್ಗೆ ತಕ್ಷಣ ಚರ್ಚಿಸುವೆವು. ಆದರೆ ನೀವು ಯಾವುದನ್ನೂ 하기 ಮೊದಲು, ಪ್ರಕ್ರಿಯೆಯನ್ನು ಪ್ರಾರಂಭಿಸಲು ಸೂಕ್ತ ಸಾಧನಗಳನ್ನು ಹೊಂದಿರುವಿರಿ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ!
-ಈ ಪಾಠದಲ್ಲಿ, ನೀವು ಕಲಿಯುವಿರಿ:
+ಈ ಪಾಠದಲ್ಲಿ, ನೀವು ಹೇಗೆ ಕಲಿಯುತ್ತೀರಿ:
-- ಸ್ಥಳೀಯ ಯಂತ್ರ ಅಧ್ಯಯನ ಕಾರ್ಯಗಳಿಗೆ ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್ ಅನ್ನು ಸಂರಚಿಸುವುದು.
-- ಜುಪೈಟರ್ ನೋಟ್ಬುಕ್ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವುದು.
-- ಸ್ಕಿಕಿಟ್-ಲರ್ನ್ ಬಳಕೆ, ಸ್ಥಾಪನೆ ಸೇರಿದಂತೆ.
-- ಕೈಯಿಂದ ಅನುಭವಿಸುವ ವ್ಯಾಯಾಮದೊಂದಿಗೆ ರೇಖೀಯ ರಿಗ್ರೆಶನ್ ಅನ್ವೇಷಣೆ.
+- ಸ್ಥಳೀಯ ಮೆಷಿನ್ ಲರ್ನಿಂಗ್ ಕಾರ್ಯಗಳಿಗಾಗಿ ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್ಕ್ಕೆ ಸಂರಚನೆ ಮಾಡುವುದು.
+- ಜ್ಯೂಪಿಟರ್ ನೋಟ್ಬುಕ್ಸ್ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವುದು.
+- ಸ್ಕಿಕಿಟ್-ಲರ್ನ್ ಅನ್ನು ಬಳಸುವುದು ಸೇರಿದಂತೆ ಸ್ಥಾಪನೆ.
+- ಅಭ್ಯಾಸದೊಂದಿಗೆ ರೇಖೀಯ ರಿಗ್ರೆಶನ್ ಅನ್ವೇಷಣೆ.
## ಸ್ಥಾಪನೆಗಳು ಮತ್ತು ಸಂರಚನೆಗಳು
-[](https://youtu.be/-DfeD2k2Kj0 "ಆರಂಭಿಕರಿಗಾಗಿ ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸಲು ನಿಮ್ಮ ಸಾಧನಗಳನ್ನು ಸಿದ್ಧಪಡಿಸಿ")
+[](https://youtu.be/-DfeD2k2Kj0 "ಆರಂಭಿಕರಿಗೆ ಎಂಎಲ್ - ಯಂತ್ರ학습 ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸಲು ನಿಮ್ಮ ಸಾಧನಗಳನ್ನು ಸಿದ್ಧಪಡಿಸಿ")
-> 🎥 ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ, ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್ ಅನ್ನು ಯಂತ್ರ ಅಧ್ಯಯನಕ್ಕೆ ಸಂರಚಿಸುವುದರ ಕುರಿತು ಚಿಕ್ಕ ವೀಡಿಯೋವನ್ನು ನೋಡಿ.
+> 🎥 ಮೆಷಿನ್ ಲರ್ನಿಂಗ್ಗಾಗಿ ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್ ಅನ್ನು ಹೇಗೆ ಸಂರಚಿಸುವುದೆಂಬುದನ್ನು ತೋರಿಸುವ ಸಂಕ್ಷಿಪ್ತ ವೀಡಿಯೊಗೆ ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ.
-1. **ಪೈಥಾನ್ ಅನ್ನು ಸ್ಥಾಪಿಸಿ**. ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್ನಲ್ಲಿ [ಪೈಥಾನ್](https://www.python.org/downloads/) ಸ್ಥಾಪಿತವಾಗಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ. ನೀವು ಅನೇಕ ಡೇಟಾ ವಿಜ್ಞಾನ ಮತ್ತು ಯಂತ್ರ ಅಧ್ಯಯನ ಕಾರ್ಯಗಳಿಗೆ ಪೈಥಾನ್ ಅನ್ನು ಬಳಸುತ್ತೀರಿ. ಬಹುತೇಕ ಕಂಪ್ಯೂಟರ್ ವ್ಯವಸ್ಥೆಗಳಲ್ಲಿ ಈಗಾಗಲೇ ಪೈಥಾನ್ ಸ್ಥಾಪನೆ ಇದೆ. ಕೆಲವು ಬಳಕೆದಾರರಿಗೆ ಸ್ಥಾಪನೆಯನ್ನು ಸುಲಭಗೊಳಿಸಲು ಉಪಯುಕ್ತವಾದ [ಪೈಥಾನ್ ಕೋಡಿಂಗ್ ಪ್ಯಾಕ್ಗಳು](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) ಕೂಡ ಲಭ್ಯವಿವೆ.
+1. **ಪೈಥಾನ್ ಸ್ಥಾಪಿಸಿ**. ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್ನಲ್ಲಿ [ಪೈಥಾನ್](https://www.python.org/downloads/) ಸ್ಥಾಪಿಸಲ್ಪಟ್ಟಿರುವುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ. ನಿಮಗೆ ಡೇಟಾ ಸಂಶೋಧನೆ ಮತ್ತು ಯಂತ್ರ학습 ಕಾರ್ಯಗಳಿಗೆ ಪೈಥಾನ್ ಬೇಕಾಗುತ್ತದೆ. ಬಹುತೇಕ ಕಂಪ್ಯೂಟರ್ ವ್ಯವಸ್ಥೆಗಳಲ್ಲೇ ಪೈಥಾನ್ ಸ್ಥಾಪನೆ ಏರ್ಪಡಿಸಿರುತ್ತದೆ. ಕೆಲವು ಬಳಕೆದಾರರಿಗಾಗಿ ಸ್ಥಾಪನೆಯನ್ನು ಸುಲಭಗೊಳಿಸುವ ಉಪಯುಕ್ತ [ಪೈಥಾನ್ ಕೋಡಿಂಗ್ ಪ್ಯాక್ಸ್](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) ಕೂಡ ಲಭ್ಯವಿವೆ.
- ಕೆಲವು ಪೈಥಾನ್ ಬಳಕೆಗಳಿಗೆ, ಒಂದು ಸಾಫ್ಟ್ವೇರ್ ಆವೃತ್ತಿಯ ಅಗತ್ಯವಿರಬಹುದು, ಇತರರಿಗೆ ಬೇರೆ ಆವೃತ್ತಿಯ ಅಗತ್ಯವಿರಬಹುದು. ಈ ಕಾರಣಕ್ಕಾಗಿ, [ವರ್ಚುವಲ್ ಪರಿಸರ](https://docs.python.org/3/library/venv.html) ಒಳಗೆ ಕೆಲಸ ಮಾಡುವುದು ಉಪಯುಕ್ತ.
+ ಆದರೆ ಪೈಥಾನ್ನ ಕೆಲವು ಉಪಯೋಗಗಳು ಒಂದು ಸಂಸ್ಕರಣೆಯ ಆವೃತ್ತಿಯನ್ನು ಬೇಕಾಗಿಸಬಹುದು, ಇತರವು ಬೇರೆ ಆವೃತ್ತಿಯನ್ನು. ಆದ್ದರಿಂದ, [ವರ್ಚುವಲ್ ಪರಿಸರ](https://docs.python.org/3/library/venv.html) ಒಳಗೆ ಕೆಲಸ ಮಾಡುವುದು ಉಪಯುಕ್ತವಾಗಿದೆ.
-2. **ವಿಜುವಲ್ ಸ್ಟುಡಿಯೋ ಕೋಡ್ ಅನ್ನು ಸ್ಥಾಪಿಸಿ**. ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್ನಲ್ಲಿ Visual Studio Code ಸ್ಥಾಪಿತವಾಗಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ. ಮೂಲ ಸ್ಥಾಪನೆಗಾಗಿ [Visual Studio Code ಅನ್ನು ಸ್ಥಾಪಿಸುವ](https://code.visualstudio.com/) ಸೂಚನೆಗಳನ್ನು ಅನುಸರಿಸಿ. ಈ ಕೋರ್ಸ್ನಲ್ಲಿ ನೀವು Visual Studio Code ನಲ್ಲಿ ಪೈಥಾನ್ ಬಳಸಲಿದ್ದೀರಿ, ಆದ್ದರಿಂದ ಪೈಥಾನ್ ಅಭಿವೃದ್ಧಿಗಾಗಿ [Visual Studio Code ಅನ್ನು ಸಂರಚಿಸುವ](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) ವಿಧಾನವನ್ನು ತಿಳಿದುಕೊಳ್ಳುವುದು ಉತ್ತಮ.
+2. **ವಿಜುವಲ್ ಸ್ಟುಡಿಯೋ ಕೋಡ್ ಸ್ಥಾಪಿಸಿ**. ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್ನಲ್ಲಿ Visual Studio Code ಇನ್ಸ್ಟಾಲ್ ಮಾಡಿಕೊಳ್ಳಿ. ಮೂಲಸ್ಥಾಪನೆಯಿಗಾಗಿ ಈ ಸೂಚನೆಗಳು [Visual Studio Code ಅನ್ನು ಸ್ಥಾಪಿಸುವುದು](https://code.visualstudio.com/) ಅನುಸರಿಸಿ. ನೀವು ಈ ಕೋರ್ಸ್ನಲ್ಲಿ Visual Studio Code ನಲ್ಲಿ ಪೈಥಾನ್ ಬಳಸಲಿದ್ದೀರಿ, ಆದ್ದರಿಂದ ಪೈಥಾನ್ ಅಭಿವೃದ್ಧಿಗಾಗಿ [Visual Studio Code ಅನ್ನು ಸಂರಚಿಸುವುದನ್ನು](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) ತಿಳಿದಿಡಬಹುದು.
- > ಈ [ಕಲಿಕೆ ಘಟಕಗಳ](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) ಸಂಗ್ರಹದ ಮೂಲಕ ಪೈಥಾನ್ನಲ್ಲಿ ಆರಾಮವಾಗಿ ಕೆಲಸ ಮಾಡಿ
+ > ಈ [ಲರ್ನ್ ಮಾಡ್ಯೂಲ್ಗಳ](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) ಸಂಗ್ರಹವನ್ನು ಕಾರ್ಯನಿರ್ವಹಿಸುವ ಮೂಲಕ ಪೈಥಾನ್ ಜೊತೆ ಸುಲಭವಾಗಿ ಪರಿಚಯವಾಗಿರಿ
>
- > [](https://youtu.be/yyQM70vi7V8 "Visual Studio Code ನಲ್ಲಿ ಪೈಥಾನ್ ಸ್ಥಾಪನೆ")
+ > [](https://youtu.be/yyQM70vi7V8 "Visual Studio Code ನೊಂದಿಗೆ ಪೈಥಾನ್ ಅನ್ನು ಸಿದ್ಧಗೊಳಿಸಿ")
>
- > 🎥 ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ ವೀಡಿಯೋ ನೋಡಿ: VS Code ಒಳಗೆ ಪೈಥಾನ್ ಬಳಕೆ.
+ > 🎥 VS Code ಒಳಗೆ ಪೈಥಾನ್ ಬಳಕೆಯ ಕುರಿತು ವೀಡಿಯೊ ನೋಡಲು ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ.
-3. **ಸ್ಕಿಕಿಟ್-ಲರ್ನ್ ಅನ್ನು ಸ್ಥಾಪಿಸಿ**, [ಈ ಸೂಚನೆಗಳನ್ನು](https://scikit-learn.org/stable/install.html) ಅನುಸರಿಸಿ. ನೀವು ಪೈಥಾನ್ 3 ಬಳಸುತ್ತಿರುವುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಬೇಕಾಗಿರುವುದರಿಂದ, ವರ್ಚುವಲ್ ಪರಿಸರವನ್ನು ಬಳಸುವುದು ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ. ಗಮನಿಸಿ, ನೀವು M1 ಮ್ಯಾಕ್ನಲ್ಲಿ ಈ ಗ್ರಂಥಾಲಯವನ್ನು ಸ್ಥಾಪಿಸುತ್ತಿದ್ದರೆ, ಮೇಲಿನ ಲಿಂಕ್ನಲ್ಲಿ ವಿಶೇಷ ಸೂಚನೆಗಳಿವೆ.
+3. **ಸ್ಕಿಕಿಟ್-ಲರ್ನ್ ಸ್ಥಾಪಿಸಿ**, [ಈ ಸೂಚನೆಗಳನ್ನು](https://scikit-learn.org/stable/install.html) ಅನುಸರಿಸಿ. ನೀವು ಪೈಥಾನ್ 3 ಬಳಸಬೇಕಿರುವುದರಿಂದ, ವರ್ಚುವಲ್ ಪರಿಸರ ಬಳಸದಂತೆ ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. M1 ಮ್ಯಾಕ್ನಲ್ಲಿ ಈ ಲೈಬ್ರರಿ ಸ್ಥಾಪನೆಗೆ ವಿಶೇಷ ಸೂಚನೆಗಳು ಮೇಲಿನ ಲಿಂಕ್ ನಲ್ಲಿ ಇವೆ.
-1. **ಜುಪೈಟರ್ ನೋಟ್ಬುಕ್ ಅನ್ನು ಸ್ಥಾಪಿಸಿ**. ನೀವು [ಜುಪೈಟರ್ ಪ್ಯಾಕೇಜ್ ಅನ್ನು ಸ್ಥಾಪಿಸಬೇಕಾಗುತ್ತದೆ](https://pypi.org/project/jupyter/)।
+1. **ಜ್ಯೂಪಿಟರ್ ನೋಟ್ಬುಕ್ ಸ್ಥಾಪಿಸಿ**. ನೀವು [ಜ್ಯೂಪಿಟರ್ ಪ್ಯಾಕೇಜ್ ಅನ್ನು ಸ್ಥಾಪಿಸಬೇಕಾಗುತ್ತದೆ](https://pypi.org/project/jupyter/).
-## ನಿಮ್ಮ ಯಂತ್ರ ಅಧ್ಯಯನ ಬರಹ ಪರಿಸರ
+## ನಿಮ್ಮ ಎಂಎಲ್ ರಚನಾ ಪರಿಸರ
-ನೀವು ನಿಮ್ಮ ಪೈಥಾನ್ ಕೋಡ್ ಅಭಿವೃದ್ಧಿಪಡಿಸಲು ಮತ್ತು ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿಗಳನ್ನು ರಚಿಸಲು **ನೋಟ್ಬುಕ್ಗಳನ್ನು** ಬಳಸಲಿದ್ದೀರಿ. ಈ ರೀತಿಯ ಫೈಲ್ ಡೇಟಾ ವಿಜ್ಞಾನಿಗಳ ಸಾಮಾನ್ಯ ಉಪಕರಣವಾಗಿದೆ ಮತ್ತು ಅವುಗಳ ಸಫಿಕ್ಸ್ ಅಥವಾ ವಿಸ್ತರಣೆ `.ipynb` ಮೂಲಕ ಗುರುತಿಸಲಾಗುತ್ತದೆ.
+ನೀವು ನಿಮ್ಮ ಪೈಥಾನ್ ಕೋಡ್ ಅಭಿವೃದ್ಧಿ ಮಾಡಲು ಮತ್ತು ಯಂತ್ರ學습 ಮಾದರಿಗಳನ್ನು ರಚಿಸಲು **ನೋಟ್ಬುಕ್ಸ್** ಅನ್ನು ಬಳಸಲಿದ್ದೀರಿ. ಈ ರೀತಿಯ ಫೈಲ್ ಡೇಟಾ ವಿಜ್ಞಾನಿಗಳಿಗೆ ಸಾಮಾನ್ಯ ಉಪಕರಣ ಮತ್ತು `.ipynb` ವಿಸ್ತರಣೆ ಇಲ್ಲಿದೆ.
-ನೋಟ್ಬುಕ್ಗಳು ಸಂವಹನಾತ್ಮಕ ಪರಿಸರವಾಗಿದ್ದು, ಅಭಿವೃದ್ಧಿಪಡಿಸುವವರು ಕೋಡ್ ಬರೆಯುವುದರ ಜೊತೆಗೆ ಟಿಪ್ಪಣಿಗಳನ್ನು ಸೇರಿಸಲು ಮತ್ತು ಕೋಡ್ ಸುತ್ತಲೂ ಡಾಕ್ಯುಮೆಂಟೇಶನ್ ಬರೆಯಲು ಸಹಾಯ ಮಾಡುತ್ತವೆ, ಇದು ಪ್ರಯೋಗಾತ್ಮಕ ಅಥವಾ ಸಂಶೋಧನಾ-ಕೇಂದ್ರೀಕೃತ ಯೋಜನೆಗಳಿಗೆ ಬಹಳ ಉಪಯುಕ್ತ.
+ನೋಟ್ಬುಕ್ಸ್ ಒಂದು ಇಂಟರ್ಯಾಕ್ಟಿವ್ ಪರಿಸರವಾಗಿದ್ದು, ಅಧ್ಯಯನಕಾರರಿಗೆ ಕೋಡ್ ಬರೆಯುವುದರ ಜೊತೆಗೆ ಟಿಪ್ಪಣಿಗಳು ಮತ್ತು ದಸ್ತಾವೇಜಿ ಬರೆಯಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ, ಇದು ಪ್ರಯೋಗಾತ್ಮಕ ಅಥವಾ ಸಂಶೋಧನಾ ಧ್ಯೇಯಗಳಿಗಾಗಿ ಬಹುಮುಖ್ಯವಾಗಿದೆ.
-[](https://youtu.be/7E-jC8FLA2E "ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸಲು ಜುಪೈಟರ್ ನೋಟ್ಬುಕ್ಗಳನ್ನು ಸಿದ್ಧಪಡಿಸಿ")
+[](https://youtu.be/7E-jC8FLA2E "ಆರಂಭಿಕರಿಗೆ ಎಂಎಲ್ - ರಿಗ್ರೆಶನ್ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸಲು ಜ್ಯೂಪಿಟರ್ ನೋಟ್ಬುಕ್ಸ್ ಸಿದ್ಧಪಡಿಸಿ")
-> 🎥 ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ ಈ ವ್ಯಾಯಾಮವನ್ನು ನಡೆಸುವ ಚಿಕ್ಕ ವೀಡಿಯೋ ನೋಡಿ.
+> 🎥 ಈ ಅಭ್ಯಾಸವನ್ನು ವಿವರಿಸುವ ಸಂಕ್ಷಿಪ್ತ ವೀಡಿಯೊಗೆ ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ.
-### ವ್ಯಾಯಾಮ - ನೋಟ್ಬುಕ್ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಿ
+### ಅಭ್ಯಾಸ - ನೋಟ್ಬುಕ್ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಿ
-ಈ ಫೋಲ್ಡರ್ನಲ್ಲಿ, ನೀವು _notebook.ipynb_ ಫೈಲ್ ಅನ್ನು ಕಾಣುತ್ತೀರಿ.
+ಈ ಫೋಲ್ಡರ್ನಲ್ಲಿ, ನೀವು _notebook.ipynb_ ಫೈಲ್ ಕಾಣಬಹುದು.
-1. Visual Studio Code ನಲ್ಲಿ _notebook.ipynb_ ಅನ್ನು ತೆರೆಯಿರಿ.
+1. _notebook.ipynb_ ಅನ್ನು Visual Studio Code ನಲ್ಲಿ ತೆರೆಯಿರಿ.
- ಪೈಥಾನ್ 3+ ಜೊತೆಗೆ ಜುಪೈಟರ್ ಸರ್ವರ್ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ. ನೀವು ನೋಟ್ಬುಕ್ನ ಭಾಗಗಳನ್ನು `run` ಮಾಡಬಹುದು, ಅಂದರೆ ಕೋಡ್ ತುಂಡುಗಳನ್ನು. ಪ್ಲೇ ಬಟನ್ ಹೋಲುವ ಐಕಾನ್ ಆಯ್ಕೆಮಾಡಿ ಕೋಡ್ ಬ್ಲಾಕ್ ಅನ್ನು ರನ್ ಮಾಡಬಹುದು.
+ ಜ್ಯೂಪಿಟರ್ ಸರ್ವರ್ Python 3+ ಜೊತೆಗೆ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ. ನೀವು ನೋಟ್ಬುಕ್ನ ಭಾಗಗಳನ್ನು `run` ಮಾಡಬಹುದು, ಅಂದರೆ ಕೆಲವು ಕೋಡ್ ತುಂಡುಗಳನ್ನು. ನೀವು ಕೋಡ್ ಬ್ಲಾಕ್ ಅನ್ನು `play` ಬಟನ್ ಆಯ್ಕೆಯಿಂದ ಹಗಲು ಮಾಡಬಹುದು.
-1. `md` ಐಕಾನ್ ಆಯ್ಕೆಮಾಡಿ ಸ್ವಲ್ಪ ಮಾರ್ಕ್ಡೌನ್ ಸೇರಿಸಿ, ಮತ್ತು ಕೆಳಗಿನ ಪಠ್ಯವನ್ನು **# ನಿಮ್ಮ ನೋಟ್ಬುಕ್ಗೆ ಸ್ವಾಗತ** ಎಂದು ಸೇರಿಸಿ.
+1. `md` ಐಕಾನ್ ಆಯ್ಕೆ ಮಾಡಿ ಸ್ವಲ್ಪ ಮಾರ್ಕ್ಡೌನ್ ಮತ್ತು ನಂತರ **# Welcome to your notebook** ಎಂಬ ಬರಹ ಸೇರಿಸಿ.
- ನಂತರ, ಕೆಲವು ಪೈಥಾನ್ ಕೋಡ್ ಸೇರಿಸಿ.
+ ನಂತರ ಕೆಲವು ಪೈಥಾನ್ ಕೋಡ್ ಸೇರಿಸಿ.
1. ಕೋಡ್ ಬ್ಲಾಕ್ನಲ್ಲಿ **print('hello notebook')** ಟೈಪ್ ಮಾಡಿ.
-1. ಕೋಡ್ ರನ್ ಮಾಡಲು ಅರೋಹಣ ಬಾಣವನ್ನು ಆಯ್ಕೆಮಾಡಿ.
+1. ಕೋಡ್ ಹಗಲು ಮಾಡಲು ತಿರುಗು ಅಂದಾಕಾರ ಆಯ್ಕೆಮಾಡಿ.
- ನೀವು ಮುದ್ರಿತ ಹೇಳಿಕೆಯನ್ನು ನೋಡಬೇಕು:
+ ನೀವು Printed ಸ್ಟೇಟ್ಮೆಂಟ್ ನೋಡಿ:
```output
hello notebook
@@ -74,47 +74,48 @@

-ನೀವು ನಿಮ್ಮ ಕೋಡ್ ಜೊತೆಗೆ ಟಿಪ್ಪಣಿಗಳನ್ನು ಸೇರಿಸಿ ನೋಟ್ಬುಕ್ ಅನ್ನು ಸ್ವಯಂ-ಡಾಕ್ಯುಮೆಂಟ್ ಮಾಡಬಹುದು.
+ನೀವು ನಿಮ್ಮ ಕೋಡ್ ಜೊತೆಗೆ ಸ್ವ-ಡಾಕ್ಯುಮೆಂಟೇಶನ್ ಟಿಪ್ಪಣಿಗಳನ್ನು ಒಂದಾಗಿಸಬಹುದು.
-✅ ವೆಬ್ ಡೆವಲಪರ್ನ ಕೆಲಸದ ಪರಿಸರ ಮತ್ತು ಡೇಟಾ ವಿಜ್ಞಾನಿಯ ಕೆಲಸದ ಪರಿಸರವು ಹೇಗೆ ವಿಭಿನ್ನವಾಗಿವೆ ಎಂದು ಒಂದು ನಿಮಿಷ ಯೋಚಿಸಿ.
+✅ ಹುಡುಕಿ ವೆಬ್ ಡೆವಲಪರ್ ಕೆಲಸದ ಪರಿಸರ ಮತ್ತು ಡೇಟಾ ವಿಜ್ಞಾನಿ ಕೆಲಸದ ಪರಿಸರದಲ್ಲಿ ವ್ಯತ್ಯಾಸವೇನು ಎಂಬುದನ್ನು.
-## ಸ್ಕಿಕಿಟ್-ಲರ್ನ್ನೊಂದಿಗೆ ಪ್ರಾರಂಭಿಸಿ
+## ಸ್ಕಿಕಿಟ್-ಲರ್ನ್ ಆಯ್ಕೆ ಮಾಡಿ ಪ್ರಾರಂಭಿಸೋಣ
-ಈಗ ಪೈಥಾನ್ ನಿಮ್ಮ ಸ್ಥಳೀಯ ಪರಿಸರದಲ್ಲಿ ಸಿದ್ಧವಾಗಿದೆ ಮತ್ತು ನೀವು ಜುಪೈಟರ್ ನೋಟ್ಬುಕ್ಗಳೊಂದಿಗೆ ಆರಾಮವಾಗಿ ಕೆಲಸ ಮಾಡುತ್ತಿದ್ದೀರಿ, ಸ್ಕಿಕಿಟ್-ಲರ್ನ್ (ಅದನ್ನು `sci` ಎಂದು ಉಚ್ಛರಿಸಿ, ಅಂದರೆ `ಸೈನ್ಸ್`) ಜೊತೆಗೆ ಸಮಾನವಾಗಿ ಆರಾಮವಾಗೋಣ. ಸ್ಕಿಕಿಟ್-ಲರ್ನ್ ನಿಮಗೆ ಯಂತ್ರ ಅಧ್ಯಯನ ಕಾರ್ಯಗಳನ್ನು ನೆರವೇರಿಸಲು ಸಹಾಯ ಮಾಡುವ [ವಿಸ್ತೃತ API](https://scikit-learn.org/stable/modules/classes.html#api-ref) ಒದಗಿಸುತ್ತದೆ.
+ಈಗ ಪೈಥಾನ್ ನಿಮ್ಮ ಸ್ಥಳೀಯ ಪರಿಸರದಲ್ಲಿ ಸಿದ್ಧವಾಗಿದೆ ಮತ್ತು ಜ್ಯೂಪಿಟರ್ ನೋಟ್ಬುಕ್ಸ್ನಲ್ಲಿ ನಿಮಗೆ ಆರಾಮವಾಗಿದೆ, ಸ್ಕಿಕಿಟ್-ಲರ್ನ್ನೊಂದಿಗೆ ಸಮಾನವಾಗಿ ಆರಾಮವಾಗೋಣ (`sci` ಅನ್ನು `ವಿಜ್ಞಾನ` ಎಂಬಂತ ಮಾಡಿ ಉಚ್ಚರಿಸಿ). ಸ್ಕಿಕಿಟ್-ಲರ್ನ್ ಎಂಎಲ್ ಕಾರ್ಯಗಳನ್ನು ನೆರವೇರಿಸಲು [ವಿಸ್ತೃತ API](https://scikit-learn.org/stable/modules/classes.html#api-ref) ಒದಗಿಸುತ್ತದೆ.
-ಅವರ [ವೆಬ್ಸೈಟ್](https://scikit-learn.org/stable/getting_started.html) ಪ್ರಕಾರ, "ಸ್ಕಿಕಿಟ್-ಲರ್ನ್ ಒಂದು ಮುಕ್ತ ಮೂಲ ಯಂತ್ರ ಅಧ್ಯಯನ ಗ್ರಂಥಾಲಯವಾಗಿದೆ, ಇದು ಮೇಲ್ವಿಚಾರಿತ ಮತ್ತು ಮೇಲ್ವಿಚಾರಣೆಯಿಲ್ಲದ ಅಧ್ಯಯನವನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ. ಇದು ಮಾದರಿ ಹೊಂದಿಸುವಿಕೆ, ಡೇಟಾ ಪೂರ್ವಸಿದ್ಧತೆ, ಮಾದರಿ ಆಯ್ಕೆ ಮತ್ತು ಮೌಲ್ಯಮಾಪನ, ಮತ್ತು ಅನೇಕ ಇತರೆ ಉಪಕರಣಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ."
+ಅವರ [ವೆಬ್ಸೈಟ್](https://scikit-learn.org/stable/getting_started.html) ಪ್ರಕಾರ, "ಸ್ಕಿಕಿಟ್-ಲರ್ನ್ ಒಂದು ಮುಕ್ತ ಮೂಲ ಯಂತ್ರ학습 ಲೈಬ್ರರಿ ಆಗಿದ್ದು, ನಿರೀಕ್ಷಿತ ಮತ್ತು ನಿರೀಕ್ಷೆ ಇಲ್ಲದ ಎರಡೂ ಕಲಿಕೆಯನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ. ಇದು ಮಾದರಿಯ ಫಿಟಿಂಗ್, ಡೇಟಾ ಪೂರ್ವಸಂಗ್ರಹಣೆ, ಮಾದರಿ ಆಯ್ಕೆ ಮತ್ತು ಮೌಲ್ಯಮಾಪನ ಸೇರಿದಂತೆ ವಿವಿಧ ಉಪಕರಣಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ."
-ಈ ಕೋರ್ಸ್ನಲ್ಲಿ, ನೀವು ಸ್ಕಿಕಿಟ್-ಲರ್ನ್ ಮತ್ತು ಇತರೆ ಉಪಕರಣಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸುವಿರಿ, ಇದನ್ನು ನಾವು 'ಪಾರಂಪರಿಕ ಯಂತ್ರ ಅಧ್ಯಯನ' ಕಾರ್ಯಗಳು ಎಂದು ಕರೆಯುತ್ತೇವೆ. ನಾವು ಜಾಲಕ ಜಾಲಗಳು ಮತ್ತು ಆಳವಾದ ಅಧ್ಯಯನವನ್ನು ಉಲ್ಲೇಖಿಸಿಲ್ಲ, ಏಕೆಂದರೆ ಅವು ನಮ್ಮ ಮುಂದಿನ 'ಆರಂಭಿಕರಿಗಾಗಿ AI' ಪಠ್ಯಕ್ರಮದಲ್ಲಿ ಉತ್ತಮವಾಗಿ ಒಳಗೊಂಡಿವೆ.
+ಈ ಕೋರ್ಸ್ನಲ್ಲಿ, ನೀವು ಸ್ಕಿಕಿಟ್-ಲರ್ನ್ ಮತ್ತು ಇತರ ಉಪಕರಣಗಳನ್ನು ಬಳಸಿಕೊಂಡು 'ಪಾರಂಪರಿಕ ಯಂತ್ರ學습' ಕಾರ್ಯಗಳನ್ನು ನಿರ್ವಹಿಸುವ ಯಂತ್ರ학습 ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸುತ್ತೀರಿ. ನಾವು ಉದ್ದೇಶಪೂರ್ವಕವಾಗಿ ನ್ಯೂರಲ್ ನೆಟ್ವರ್ಕ್ಗಳು ಮತ್ತು ಡೀಪ್ ಲರ್ನಿಂಗ್ ಹಾಗು ಮುಂದಿನ 'ಬಗೆಗೆ AI ಆರಂಭಿಕರು' ಪಠ್ಯಕ್ರಮದಲ್ಲಿ ಆವೃತ್ತಿಯಾಗಿವೆ ಅವುಗಳನ್ನು ಬಿಟ್ಟಿದ್ದೇವೆ.
-ಸ್ಕಿಕಿಟ್-ಲರ್ನ್ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸಲು ಮತ್ತು ಅವುಗಳನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡಲು ಸರಳ ವಿಧಾನ ಒದಗಿಸುತ್ತದೆ. ಇದು ಮುಖ್ಯವಾಗಿ ಸಂಖ್ಯಾತ್ಮಕ ಡೇಟಾ ಬಳಕೆಮೇಲೆ ಕೇಂದ್ರೀಕೃತವಾಗಿದೆ ಮತ್ತು ಕಲಿಕೆಯ ಉಪಕರಣಗಳಾಗಿ ಬಳಸಲು ಹಲವು ಸಿದ್ಧ ಡೇಟಾಸೆಟ್ಗಳನ್ನು ಒಳಗೊಂಡಿದೆ. ಇದು ವಿದ್ಯಾರ್ಥಿಗಳು ಪ್ರಯತ್ನಿಸಲು ಪೂರ್ವನಿರ್ಮಿತ ಮಾದರಿಗಳನ್ನು ಸಹ ಒಳಗೊಂಡಿದೆ. ಮೊದಲ ML ಮಾದರಿಗಾಗಿ ಸ್ಕಿಕಿಟ್-ಲರ್ನ್ನೊಂದಿಗೆ ಪೂರ್ವಪ್ಯಾಕೇಜ್ ಡೇಟಾ ಲೋಡ್ ಮಾಡುವ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಮತ್ತು ನಿರ್ಮಿತ ಅಂದಾಜಕವನ್ನು ಅನ್ವೇಷಿಸೋಣ.
+ಸ್ಕಿಸ್ಕಿಟ್-ಲರ್ನ್ ಮಾದರಿಗಳನ್ನು ಸುಲಭವಾಗಿ ನಿರ್ಮಿಸಲು ಮತ್ತು ಬಳಸಲು ಸಹಾಯಕವಾಗಿದೆ. ಇದು ಮುಖ್ಯವಾಗಿ ಸಂಖ್ಯಾತ್ಮಕ ಡೇಟಾ ಜೊತೆಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ ಮತ್ತು ಕಲಿಕೆಯ ಸರಳ ಉಪಕರಣವಾಗಿ ಹಲವಾರು ಮುಂಚಿತ ಡೇಟಾ ಸೆಟ್ಗಳನ್ನು ಹೊಂದಿದೆ. ಷಿಕ್ಷಾರ್ಥಿಗಳಿಗೆ ಪ್ರಯೋಗಿಸಬಹುದಾದ ಪೂರ್ವನಿರ್ಮಿತ ಮಾದರಿಗಳನ್ನು ಸಹ ಒಳಗೊಂಡಿದೆ. ಮೊದಲು, ಮುಂಚಿತ ಪ್ಯಾಕೇಜ್ ಡೇಟಾವನ್ನು ಲೋಡ್ ಮಾಡುವುದು ಮತ್ತು ಬಿಲ್ಟ್ ಇನ್ ಎಸ್ಟಿಮೇಟರ್ ಉಪಯೋಗಿಸಿ ನಿಮ್ಮ ಮೊದಲ ML ಮಾದರಿಯನ್ನು ಸ್ಕಿಕಿಟ್-ಲರ್ನ್ ಜೊತೆಗೆ ಪರಿಗಣಿಸೋಣ.
-## ವ್ಯಾಯಾಮ - ನಿಮ್ಮ ಮೊದಲ ಸ್ಕಿಕಿಟ್-ಲರ್ನ್ ನೋಟ್ಬುಕ್
+## ಅಭ್ಯಾಸ - ನಿಮ್ಮ ಮೊದಲ ಸ್ಕಿಕಿಟ್-ಲರ್ನ್ ನೋಟ್ಬುಕ್
-> ಈ ಪಾಠವು ಸ್ಕಿಕಿಟ್-ಲರ್ನ್ ವೆಬ್ಸೈಟ್ನ [ರೇಖೀಯ ರಿಗ್ರೆಶನ್ ಉದಾಹರಣೆ](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) ಪ್ರೇರಿತವಾಗಿದೆ.
+> ಈ ತರಬೇತಿಯನ್ನು ಸ್ಕಿಕಿಟ್-ಲರ್ನ್ ವೆಬ್ಸೈಟ್上的 [ರೇಖೀಯ ರಿಗ್ರೆಶನ್ ಉದಾಹರಣೆಯಿಂದ](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 "ಪೈಥಾನ್ನಲ್ಲಿ ನಿಮ್ಮ ಮೊದಲ ರೇಖೀಯ ರಿಗ್ರೆಶನ್ ಪ್ರಾಜೆಕ್ಟ್")
-> 🎥 ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ ಈ ವ್ಯಾಯಾಮವನ್ನು ನಡೆಸುವ ಚಿಕ್ಕ ವೀಡಿಯೋ ನೋಡಿ.
+[](https://youtu.be/2xkXL5EUpS0 "ಆರಂಭಿಕರಿಗೆ ಎಂಎಲ್ - ನಿಮ್ಮ ಮೊದಲ ರೇಖೀಯ ರಿಗ್ರೆಶನ್ ಪ್ರಾಜೆಕ್ಟ್")
-ಈ ಪಾಠಕ್ಕೆ ಸಂಬಂಧಿಸಿದ _notebook.ipynb_ ಫೈಲ್ನಲ್ಲಿ, 'ಟ್ರ್ಯಾಶ್ ಕ್ಯಾನ್' ಐಕಾನ್ ಒತ್ತಿ ಎಲ್ಲಾ ಸೆಲ್ಗಳನ್ನು ತೆರವುಗೊಳಿಸಿ.
+> 🎥 ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ ಈ ಅಭ್ಯಾಸದ ಸಂಕ್ಷಿಪ್ತ ವೀಡಿಯೊಗೆ ಹೋಗಿ.
-ಈ ವಿಭಾಗದಲ್ಲಿ, ನೀವು ಸ್ಕಿಕಿಟ್-ಲರ್ನ್ನಲ್ಲಿ ಕಲಿಕೆಯ ಉದ್ದೇಶಕ್ಕಾಗಿ ನಿರ್ಮಿಸಲಾದ ಸಣ್ಣ ಡಯಾಬಿಟಿಸ್ ಡೇಟಾಸೆಟ್ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುತ್ತೀರಿ. ನೀವು ಡಯಾಬಿಟಿಕ್ ರೋಗಿಗಳಿಗೆ ಚಿಕಿತ್ಸೆ ಪರೀಕ್ಷಿಸಲು ಬಯಸಿದರೆ ಎಂದು ಕಲ್ಪಿಸಿ. ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿಗಳು ಯಾವ ರೋಗಿಗಳು ಚಿಕಿತ್ಸೆಗಾಗಿ ಉತ್ತಮ ಪ್ರತಿಕ್ರಿಯಿಸುವರು ಎಂದು ನಿರ್ಧರಿಸಲು ಸಹಾಯ ಮಾಡಬಹುದು, ಬದಲಾವಣೆಗಳ ಸಂಯೋಜನೆಗಳ ಆಧಾರದ ಮೇಲೆ. ಬಹುಮೂಲ್ಯ ರಿಗ್ರೆಶನ್ ಮಾದರಿ, ದೃಶ್ಯೀಕರಿಸಿದಾಗ, ಬದಲಾವಣೆಗಳ ಬಗ್ಗೆ ಮಾಹಿತಿಯನ್ನು ತೋರಿಸಬಹುದು, ಇದು ನಿಮ್ಮ ಸೈದ್ಧಾಂತಿಕ ಕ್ಲಿನಿಕಲ್ ಪ್ರಯೋಗಗಳನ್ನು ಸಂಘಟಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ.
+_notebook.ipynb_ ಫೈಲ್ನಲ್ಲಿ, ಎಲ್ಲಾ ಸೆಲ್ಸ್ ಅನ್ನು 'ಟ್ರ್ಯಾಶ್ ಕ್ಯಾನ್' ಐಕಾನ್ ಒತ್ತಿ ತೆರವುಗೊಳಿಸಿ.
-✅ ರಿಗ್ರೆಶನ್ ವಿಧಾನಗಳ ಹಲವು ವಿಧಗಳಿವೆ, ಮತ್ತು ನೀವು ಯಾವದನ್ನು ಆರಿಸುವಿರಿ ಎಂಬುದು ನೀವು ಹುಡುಕುತ್ತಿರುವ ಉತ್ತರದ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿದೆ. ನೀವು ನಿರ್ದಿಷ್ಟ ವಯಸ್ಸಿನ ವ್ಯಕ್ತಿಯ ಸಾಧ್ಯತೆಯ ಎತ್ತರವನ್ನು ಊಹಿಸಲು ಬಯಸಿದರೆ, ನೀವು ರೇಖೀಯ ರಿಗ್ರೆಶನ್ ಬಳಸುತ್ತೀರಿ, ಏಕೆಂದರೆ ನೀವು **ಸಂಖ್ಯಾತ್ಮಕ ಮೌಲ್ಯ** ಹುಡುಕುತ್ತಿದ್ದೀರಿ. ನೀವು ಯಾವ ಆಹಾರ ಪ್ರಕಾರವನ್ನು ವೆಗನ್ ಎಂದು ಪರಿಗಣಿಸಬೇಕೆಂದು ತಿಳಿಯಲು ಬಯಸಿದರೆ, ನೀವು **ವರ್ಗ ವಿಂಗಡಣೆ** ಹುಡುಕುತ್ತಿದ್ದೀರಿ, ಆದ್ದರಿಂದ ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಬಳಸುತ್ತೀರಿ. ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಬಗ್ಗೆ ನೀವು ನಂತರ ಹೆಚ್ಚು ಕಲಿಯುತ್ತೀರಿ. ಡೇಟಾದಿಂದ ಕೇಳಬಹುದಾದ ಕೆಲವು ಪ್ರಶ್ನೆಗಳ ಬಗ್ಗೆ ಮತ್ತು ಯಾವ ವಿಧಾನಗಳು ಸೂಕ್ತವಾಗಿರುತ್ತವೆ ಎಂದು ಸ್ವಲ್ಪ ಯೋಚಿಸಿ.
+ಈ ಭಾಗದಲ್ಲಿ, ನೀವು ಸ್ಕಿಕಿಟ್-ಲರ್ನ್ ಒಳಗೊಂಡಿರುವ ಡಯಾಬಿಟೀಸ್ ಕುರಿತ ಸಣ್ಣ ಡೇಟಾಸೆಟ್ ಜೊತೆಗೆ ಕೆಲಸ ಮಾಡುತ್ತೀರಿ. ಇಲ್ಲಿಗೆ ನೀವು ಡಯಾಬಿಟಿಕ್ ರೋಗಿಗಳಿಗೆ ಚಿಕಿತ್ಸೆಯನ್ನು ಪರೀಕ್ಷಿಸುವುದಾಗಿ ಕಲ್ಪಿಸೋಣ. ಯಂತ್ರ學습 ಮಾದರಿಗಳು, ರೋಗಿಗಳಿಗೆ ಚಿಕಿತ್ಸೆへの ಪ್ರತಿಕ್ರಿಯೆ ಯಾವುದು ಉತ್ತಮವಾಗಿರಬಹುದು ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸಲು ಸಹಾಯ ಮಾಡಬಹುದು, ವಿವಿಧ ವ್ಯತ್ಯಾಸಗಳ ಸಂಯೋಜನೆಯ ಮೇಲೆ ಆಧಾರಿತ. ಸರಳ ರಿಗ್ರೆಶನ್ ಮಾದರಿಯು ಸಹ ದೃಶ್ಯರೂಪದಲ್ಲಿ, ಥಿಯರೇಟಿಕಲ್ ಕ್ಲಿನಿಕಲ್ ಪ್ರಯೋಗಗಳಿಗೆ ಸಹಾಯ ಮಾಡುವ ಡೇಟಾ ಬಗ್ಗೆ ಮಾಹಿತಿ ತೋರಿಸಬಹುದು.
-ಈ ಕಾರ್ಯವನ್ನು ಪ್ರಾರಂಭಿಸೋಣ.
+✅ ರಿಗ್ರೆಶನ್ ವಿಧಾನಗಳು ಹಲವಾರು ಪ್ರಕಾರಗಳಿವೆ, ಮತ್ತು ಯಾವುದು ಆಯ್ಕೆಮಾಡುವುದು ನೀವು ಹುಡುಕುತ್ತಿರುವ ಉತ್ತರದ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿದೆ. ಉದಾಹರಣೆಗೆ, ನೀವು ವ್ಯಕ್ತಿಯ ವಯಸ್ಸಿಗಾಗಿ ಸಾಧ್ಯವಿರುವ ಎತ್ತರವನ್ನೂ ಊಹಿಸಲು ಬಯಸಿದರೆ, ನೀವು ರೇಖೀಯ ರಿಗ್ರೆಶನ್ ಉಪಯೋಗಿಸುತ್ತೀರಿ, ಏಕೆಂದರೆ ನೀವು ಒಂದು **ಸಂಖ್ಯಾತ್ಮಕ ಮೌಲ್ಯ** ಹುಡುಕುತ್ತಿದ್ದೀರಿ. ನೀವು ಯಾವ ರೀತಿಯ ಆಹಾರವು ವೀಗನ್ ಆಗಿದೆ ಅಥವಾ ಅಲ್ಲ ಎಂದು ಪತ್ತೆ ಹಚ್ಚಬೇಕಾದರೆ, ನೀವು **ಪದವರ್ಗ ನಿಯೋಜನೆ** ಹುಡುಕುತ್ತಿದ್ದೀರಿ ಆದ್ದರಿಂದ ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಬಳಸುತ್ತಾರೆ. ಲಾಜಿಸ್ಟಿಕ್ ರಿಗ್ರೆಶನ್ ಕುರಿತಾಗಿ ನಂತರ ತಿಳಿದುಕೊಳ್ಳುತ್ತೀರಿ. ಕೆಲವು ಪ್ರಶ್ನೆಗಳನ್ನು ಡೇಟಾದಿಂದ ಕೇಳಬಹುದಾದುದಾಗಿ ಯೋಚಿಸಿ, ಮತ್ತು ಯಾವ ವಿಧಾನ ಹೆಚ್ಚು ಸೂಕ್ತವಾಗಿದೆ ಎಂದು ಪರಿಗಣಿಸಿ.
-### ಗ್ರಂಥಾಲಯಗಳನ್ನು ಆಮದುಮಾಡಿ
+ಇಗೋ, ಈ ಕಾರ್ಯವನ್ನು ಪ್ರಾರಂಭಿಸೋಣ.
-ಈ ಕಾರ್ಯಕ್ಕಾಗಿ ನಾವು ಕೆಲವು ಗ್ರಂಥಾಲಯಗಳನ್ನು ಆಮದುಮಾಡುತ್ತೇವೆ:
+### ಗ್ರಂಥಾಲಯಗಳನ್ನು ಆಮದು ಮಾಡಿಕೊಳ್ಳಿ
-- **ಮ್ಯಾಟ್ಪ್ಲಾಟ್ಲಿಬ್**. ಇದು ಉಪಯುಕ್ತ [ಗ್ರಾಫ್ ಸಾಧನ](https://matplotlib.org/) ಮತ್ತು ನಾವು ಲೈನ್ ಪ್ಲಾಟ್ ರಚಿಸಲು ಇದನ್ನು ಬಳಸುತ್ತೇವೆ.
-- **ನಂಪೈ**. [ನಂಪೈ](https://numpy.org/doc/stable/user/whatisnumpy.html) ಪೈಥಾನ್ನಲ್ಲಿ ಸಂಖ್ಯಾತ್ಮಕ ಡೇಟಾ ನಿರ್ವಹಣೆಗೆ ಉಪಯುಕ್ತ ಗ್ರಂಥಾಲಯ.
-- **ಸ್ಕ್ಲರ್ನ್**. ಇದು [ಸ್ಕಿಕಿಟ್-ಲರ್ನ್](https://scikit-learn.org/stable/user_guide.html) ಗ್ರಂಥಾಲಯ.
+ಈ ಕಾರ್ಯಕ್ಕಾಗಿ ಕೆಲವು ಗ್ರಂಥಾಲಯಗಳನ್ನು ಆಮದು ಮಾಡಿಕೊಳ್ಳುತ್ತೇವೆ:
-ನಿಮ್ಮ ಕಾರ್ಯಗಳಿಗೆ ಸಹಾಯ ಮಾಡಲು ಕೆಲವು ಗ್ರಂಥಾಲಯಗಳನ್ನು ಆಮದುಮಾಡಿ.
+- **matplotlib**. ಇದು ಉಪಯುಕ್ತ [ಗ್ರಾಫ್ ಸಾಧನ](https://matplotlib.org/) ಮತ್ತು ನಾವು ಲೈನ್ ಪ್ಲಾಟ್ ಸೃಷ್ಟಿಸಲು ಇದನ್ನು ಬಳಸುತ್ತೇವೆ.
+- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) ಪೈಥಾನ್ನಲ್ಲಿ ಸಂಖ್ಯಾತ್ಮಕ ಡೇಟಾಗಳನ್ನು ಕೈಗೊಳ್ಳಲು ಉಪಯುಕ್ತ ಗ್ರಂಥಾಲಯ.
+- **sklearn**. ಇದು [ಸ್ಕಿಕಿಟ್-ಲರ್ನ್](https://scikit-learn.org/stable/user_guide.html) ಗ್ರಂಥಾಲಯ.
-1. ಕೆಳಗಿನ ಕೋಡ್ ಟೈಪ್ ಮಾಡಿ ಆಮದುಮಾಡಿ:
+ನಿಮ್ಮ ಕಾರ್ಯಗಳಿಗೆ ಸಹಾಯ ಮಾಡಲು ಕೆಲವು ಗ್ರಂಥಾಲಯಗಳನ್ನು ಆಮದು ಮಾಡಿಕೊಳ್ಳಿ.
+
+1. ಕೆಳಗಿನ ಕೋಡ್ ಟೈಪ್ ಮಾಡಬಹುದು:
```python
import matplotlib.pyplot as plt
@@ -122,26 +123,26 @@
from sklearn import datasets, linear_model, model_selection
```
- ಮೇಲಿನ ಕೋಡ್ನಲ್ಲಿ ನೀವು `matplotlib`, `numpy` ಮತ್ತು `sklearn` ನಿಂದ `datasets`, `linear_model`, ಮತ್ತು `model_selection` ಅನ್ನು ಆಮದುಮಾಡುತ್ತಿದ್ದೀರಿ. `model_selection` ಅನ್ನು ತರಬೇತಿ ಮತ್ತು ಪರೀಕ್ಷಾ ಸೆಟ್ಗಳಿಗೆ ಡೇಟಾ ವಿಭಜಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ.
+ ಮೇಲಿನ ಭಾಗದಲ್ಲಿ ನೀವು `matplotlib`, `numpy` ಅನ್ನು ಆಮದು ಮಾಡಿಕೊಳ್ಳುತ್ತಿದ್ದೀರಿ ಮತ್ತು `sklearn` ಫ್ರೇಮ್ವರ್ಕ್ನ `datasets`, `linear_model` ಮತ್ತು `model_selection` ನಿಂದ ಆಮದು ಮಾಡಿಕೊಳ್ಳುತ್ತಿದ್ದೀರಿ. `model_selection` డೇಟಾ ತರಬೇತಿ ಹಾಗೂ ಪರೀಕ್ಷಾ ಸೆಟ್ಗಳಿಗೆ ವಿಭಜಿಸಲು ಉಪಯೋಗಿಸಲಾಗುತ್ತದೆ.
-### ಡಯಾಬಿಟಿಸ್ ಡೇಟಾಸೆಟ್
+### ಡಯಾಬಿಟೀಸ್ ಡೇಟಾಸೆಟ್
-ನಿರ್ಮಿತ [ಡಯಾಬಿಟಿಸ್ ಡೇಟಾಸೆಟ್](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) 442 ಡೇಟಾ ಮಾದರಿಗಳನ್ನು ಒಳಗೊಂಡಿದೆ, 10 ವೈಶಿಷ್ಟ್ಯ ಬದಲಾವಣೆಗಳೊಂದಿಗೆ, ಕೆಲವು:
+ಸ್ಥಾಪಿತ [ಡಯಾಬಿಟೀಸ್ ಡೇಟಾಸೆಟ್](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) 442 ಮಾದರಿಗಳನ್ನು ಹೊಂದಿದ್ದು, 10 ವೈಶಿಷ್ಟ್ಯಗಳುಳ್ಳ ವ್ಯತ್ಯಾಸಗಳಿವೆ, ಕೆಲವು ಈ ಕೆಳಗಿನಂತಿವೆ:
-- ವಯಸ್ಸು: ವರ್ಷಗಳಲ್ಲಿ ವಯಸ್ಸು
-- ಬಿಎಂಐ: ದೇಹದ ಮಾಸ್ ಸೂಚ್ಯಂಕ
+- ವಯಸ್ಸು: ವರ್ಷಗಳಲ್ಲಿನ ವಯಸ್ಸು
+- ಬಿಎಂಐ: ದೇಹದ ದ್ರವ್ಯಮಾನ ಸೂಚಕ
- ಬಿಪಿ: ಸರಾಸರಿ ರಕ್ತದ ಒತ್ತಡ
-- s1 tc: ಟಿ-ಸೆಲ್ಸ್ (ಒಂದು ಬಗೆಯ ಬಿಳಿ ರಕ್ತಕಣಗಳು)
+- s1 tc: ಟಿ-ಕೋಶಗಳು (ಒಂದು ರೀತಿಯ ಬಿಳಿ ರಕ್ತಕೋಶಗಳು)
-✅ ಈ ಡೇಟಾಸೆಟ್ 'ಲಿಂಗ' ಎಂಬ ವೈಶಿಷ್ಟ್ಯ ಬದಲಾವಣೆಯ ಕಲ್ಪನೆಯನ್ನು ಒಳಗೊಂಡಿದೆ, ಇದು ಡಯಾಬಿಟಿಸ್ ಸಂಶೋಧನೆಗೆ ಮಹತ್ವದಾಗಿದೆ. ಅನೇಕ ವೈದ್ಯಕೀಯ ಡೇಟಾಸೆಟ್ಗಳು ಈ ರೀತಿಯ ದ್ವಿಪದ ವರ್ಗೀಕರಣವನ್ನು ಒಳಗೊಂಡಿರುತ್ತವೆ. ಈ ರೀತಿಯ ವರ್ಗೀಕರಣಗಳು ಜನಸಂಖ್ಯೆಯ ಕೆಲವು ಭಾಗಗಳನ್ನು ಚಿಕಿತ್ಸೆಯಿಂದ ಹೊರಗೊಳ್ಳುವಂತೆ ಮಾಡಬಹುದು ಎಂದು ಸ್ವಲ್ಪ ಯೋಚಿಸಿ.
+✅ ಈ ಡೇಟಾಸೆಟ್ 'ಲಿಂಗ'ವೆಂಬ ವೈಶಿಷ್ಟ್ಯತ್ಯಾಂಶವನ್ನು ಒಳಗೊಂಡಿದೆ, ಇದು ಡಯಾಬಿಟೀಸ್ ಸಂಶೋಧನೆಗೆ ಮಹತ್ವವನ್ನು ಹೊಂದಿದೆ. ಬಹಳ ವೈದ್ಯಕೀಯ ಡೇಟಾಸೆಟ್ಗಳಲ್ಲಿ ಈ ರೀತಿಯ ದ್ವಿಪದ ವರ್ಗೀಕರಣ ಕಾಣಬಹುದು. ಈ ವರ್ಗೀಕರಣಗಳು ಕೆಲವು ಜನಸಂಖ್ಯೆಯ ಭಾಗಗಳನ್ನು ಚಿಕಿತ್ಸೆಗಳಿಂದ ಹೊರಗೊಳಿಸಬಹುದು ಎಂಬುದನ್ನು ತ್ವರಿತವಾಗಿ ಯೋಚಿಸಿ.
-ಈಗ, X ಮತ್ತು y ಡೇಟಾವನ್ನು ಲೋಡ್ ಮಾಡಿ.
+ಈಗ, `X` ಮತ್ತು `y` ಡೇಟಾವನ್ನು ಲೋಡ್ ಮಾಡೋಣ.
-> 🎓 ನೆನಪಿಡಿ, ಇದು ಮೇಲ್ವಿಚಾರಿತ ಅಧ್ಯಯನ, ಮತ್ತು ನಮಗೆ 'y' ಗುರಿ ಬೇಕು.
+> 🎓 ನೆನಪಿಡಿ, ಇದು ಮತ್ತು ನಿರೀಕ್ಷಿತ ಕಲಿಕೆ; ನಮಗೆ ಹೆಸರು ಹಚ್ಚಲಾದ 'y' ಗುರಿ ಬೇಕಾಗುತ್ತದೆ.
-ಹೊಸ ಕೋಡ್ ಸೆಲ್ನಲ್ಲಿ, `load_diabetes()` ಅನ್ನು ಕರೆಸಿ ಡಯಾಬಿಟಿಸ್ ಡೇಟಾಸೆಟ್ ಅನ್ನು ಲೋಡ್ ಮಾಡಿ. `return_X_y=True` ಎಂಬ ಇನ್ಪುಟ್ ಸೂಚಿಸುತ್ತದೆ `X` ಡೇಟಾ ಮ್ಯಾಟ್ರಿಕ್ಸ್ ಆಗಿದ್ದು, `y` ರಿಗ್ರೆಶನ್ ಗುರಿಯಾಗಿರುತ್ತದೆ.
+ಹೊಸ ಕೋಡ್ ಸೆಲ್ನಲ್ಲಿ `load_diabetes()` ಅನ್ನು ಕರೆಸಿಕೊಂಡು ಡಯಾಬಿಟೀಸ್ ಡೇಟಾಸೆಟ್ ಅನ್ನು ಲೋಡ್ ಮಾಡಿ. ಇನ്പುಟ್ `return_X_y=True` ಅಂದರೆ `X` ಡೇಟಾ ಮ್ಯಾಟ್ರಿಕ್ಸ್ ಆಗಿದ್ದು, `y` ಎಂದರೆ ರಿಗ್ರೆಶನ್ ಗುರಿಯಾಗಿದೆ.
-1. ಡೇಟಾ ಮ್ಯಾಟ್ರಿಕ್ಸ್ನ ಆಕಾರ ಮತ್ತು ಅದರ ಮೊದಲ ಅಂಶವನ್ನು ತೋರಿಸಲು ಕೆಲವು ಪ್ರಿಂಟ್ ಕಮಾಂಡ್ಗಳನ್ನು ಸೇರಿಸಿ:
+1. ಡೇಟಾ ಮ್ಯಾಟ್ರಿಕ್ಸ್ ನ ಆಕಾರ ಮತ್ತು ಮೊದಲ ಅಂಶಗಳನ್ನು ಪ್ರದರ್ಶಿಸುವ ಪೋಷಣಗಳನ್ನು ಸೇರಿಸಿ:
```python
X, y = datasets.load_diabetes(return_X_y=True)
@@ -149,9 +150,9 @@
print(X[0])
```
- ನೀವು ಪಡೆದಿರುವ ಪ್ರತಿಕ್ರಿಯೆ ಒಂದು ಟ್ಯೂಪಲ್ ಆಗಿದೆ. ನೀವು ಟ್ಯೂಪಲ್ನ ಮೊದಲ ಎರಡು ಮೌಲ್ಯಗಳನ್ನು ಕ್ರಮವಾಗಿ `X` ಮತ್ತು `y` ಗೆ ನಿಯೋಜಿಸುತ್ತಿದ್ದೀರಿ. [ಟ್ಯೂಪಲ್ಗಳ ಬಗ್ಗೆ](https://wikipedia.org/wiki/Tuple) ಹೆಚ್ಚು ತಿಳಿಯಿರಿ.
+ ನೀವು ಪಡೆಯುತ್ತಿರುವುದಾಗಿದೆ tuple. ನೀವು tuple ನ ಮೊದಲ ಎರಡು ಮೌಲ್ಯಗಳನ್ನು ಕ್ರಮವಾಗಿ `X` ಮತ್ತು `y` ಗೆ ನಿಯೋಜಿಸುತ್ತಿದ್ದೀರಿ. tuple ಬಗ್ಗೆ ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗಾಗಿ ಈ ಲಿಂಕ್ ನೋಡಿ: [tuple](https://wikipedia.org/wiki/Tuple).
- ಈ ಡೇಟಾ 442 ಐಟಂಗಳನ್ನು 10 ಅಂಶಗಳ ಅರೆಗಳಾಗಿ ಹೊಂದಿದೆ:
+ ನೀವು ನೋಡಬಹುದು ಈ ಡೇಟಾ 442 ಐಟಮ್ಗಳನ್ನು ಹೊಂದಿದ್ದು, ಪ್ರತಿ ಐಟಮ್ 10 ಅಂಶಗಳಿಂದ ರೂಪಗೊಳ್ಳುತ್ತದೆ:
```text
(442, 10)
@@ -159,39 +160,39 @@
-0.04340085 -0.00259226 0.01990842 -0.01764613]
```
- ✅ ಡೇಟಾ ಮತ್ತು ರಿಗ್ರೆಶನ್ ಗುರಿಯ ನಡುವಿನ ಸಂಬಂಧವನ್ನು ಸ್ವಲ್ಪ ಯೋಚಿಸಿ. ರೇಖೀಯ ರಿಗ್ರೆಶನ್ ವೈಶಿಷ್ಟ್ಯ X ಮತ್ತು ಗುರಿ y ನಡುವಿನ ಸಂಬಂಧಗಳನ್ನು ಊಹಿಸುತ್ತದೆ. ಡಯಾಬಿಟಿಸ್ ಡೇಟಾಸೆಟ್ ಗುರಿಯನ್ನು [ಡಾಕ್ಯುಮೆಂಟೇಶನ್ನಲ್ಲಿ](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) ನೀವು ಕಂಡುಹಿಡಿಯಬಹುದೇ? ಈ ಡೇಟಾಸೆಟ್ ಏನು ಪ್ರದರ್ಶಿಸುತ್ತಿದೆ, ಆ ಗುರಿಯನ್ನು ನೀಡಿದಾಗ?
+ ✅ ಡೇಟಾ ಮತ್ತು ರಿಗ್ರೆಶನ್ ಗುರಿ ನಡುವಿನ ಸಂಬಂಧದ ಬಗ್ಗೆ ಯೋಚಿಸಿ. ರೇಖೀಯ ರಿಗ್ರೆಶನ್ ವೈಶಿಷ್ಟ್ಯ X ಮತ್ತು ಗುರಿ `y` ನಡುವಿನ ಸಂಬಂಧವನ್ನು ಊಹಿಸುತ್ತದೆ. ನೀವು ಡಾಕ್ಯುಮೆಂಟೇಶನ್ನಲ್ಲಿನ ಡಯಾಬಿಟೀಸ್ ಡೇಟಾಸೆಟ್ ಗುರಿಯನ್ನು ಹುಡುಕಬಹುದೇ? ಈ ಗುರಿ ಆ ಡೇಟಾಸೆಟ್ ಯಾವ ಸಂಧರ್ಭವನ್ನು ತೋರಿಸುತ್ತಿದೆ?
-2. ನಂತರ, ಈ ಡೇಟಾಸೆಟ್ನ ಒಂದು ಭಾಗವನ್ನು ಪ್ಲಾಟ್ ಮಾಡಲು, ಡೇಟಾಸೆಟ್ನ 3ನೇ ಕಾಲಮ್ ಆಯ್ಕೆಮಾಡಿ. ಎಲ್ಲಾ ಸಾಲುಗಳನ್ನು ಆಯ್ಕೆ ಮಾಡಲು `:` ಆಪರೇಟರ್ ಬಳಸಿ, ನಂತರ ಸೂಚ್ಯಂಕ (2) ಬಳಸಿ 3ನೇ ಕಾಲಮ್ ಆಯ್ಕೆಮಾಡಿ. ಪ್ಲಾಟ್ ಮಾಡಲು ಅಗತ್ಯವಿರುವಂತೆ ಡೇಟಾವನ್ನು 2D ಅರೆ ಆಗಿ ಮರುರೂಪಿಸಬಹುದು - `reshape(n_rows, n_columns)` ಬಳಸಿ. ಒಂದು ಪ್ಯಾರಾಮೀಟರ್ -1 ಆಗಿದ್ದರೆ, ಆ ಆಯಾಮವನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಲೆಕ್ಕಹಾಕಲಾಗುತ್ತದೆ.
+2. ನಂತರ, ಈ ಡೇಟಾಸೆಟ್ನ 3ನೇ ಕಾಲಮ್ ಆಯ್ಕೆಮಾಡಿ ಪ್ಲಾಟ್ ಮಾಡಲು ಆಯ್ಕೆಮಾಡಿ. ಎಲ್ಲಾ ಸಾಲುಗಳನ್ನು `:` ಆಯ್ಕೆ ಮಾಡಿ, ನಂತರ 3ನೇ ಕಾಲಮ್ (ಸೂಚ್ಯಂಕ 2) ಆಯ್ಕೆಮಾಡಿ. ಡೇಟಾವನ್ನು 2D ಆರೆ ಆಗಿ ಆಕಾರ ಬದಲಾಯಿಸಲು ನೀವು `reshape(n_rows, n_columns)` ಉಪಯೋಗಿಸಬಹುದು. ಒಂದೊಂದು ಪ್ಯಾರಾಮೀಟರ್ -1 ಆಗಿದ್ದರೆ, ಆ ಆಯಾಮವನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಲೆಕ್ಕಿಸಲಾಗುತ್ತದೆ.
```python
X = X[:, 2]
X = X.reshape((-1,1))
```
- ✅ ಯಾವಾಗಲಾದರೂ ಡೇಟಾ ಮುದ್ರಿಸಿ ಅದರ ಆಕಾರವನ್ನು ಪರಿಶೀಲಿಸಿ.
+ ✅ ಯಾವಾಗಲಾದರೂ ಡೇಟಾ ಆಕಾರವನ್ನು ಪರಿಶೀಲಿಸಲು ಅದನ್ನು ಪ್ರಿಂಟ್ ಮಾಡಿ.
-3. ಈಗ ನೀವು ಪ್ಲಾಟ್ ಮಾಡಲು ಡೇಟಾ ಸಿದ್ಧವಾಗಿದೆ, ಈ ಡೇಟಾಸೆಟ್ನ ಸಂಖ್ಯೆಗಳ ನಡುವೆ ಯಂತ್ರವು ತಾರ್ಕಿಕ ವಿಭಜನೆ ನಿರ್ಧರಿಸಲು ಸಹಾಯ ಮಾಡಬಹುದೇ ಎಂದು ನೋಡಬಹುದು. ಇದಕ್ಕಾಗಿ, ನೀವು ಡೇಟಾ (X) ಮತ್ತು ಗುರಿ (y) ಎರಡನ್ನೂ ಪರೀಕ್ಷಾ ಮತ್ತು ತರಬೇತಿ ಸೆಟ್ಗಳಾಗಿ ವಿಭಜಿಸಬೇಕು. ಸ್ಕಿಕಿಟ್-ಲರ್ನ್ ಇದನ್ನು ಸರಳವಾಗಿ ಮಾಡಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ; ನೀವು ಪರೀಕ್ಷಾ ಡೇಟಾವನ್ನು ನಿರ್ದಿಷ್ಟ ಬಿಂದುವಿನಲ್ಲಿ ವಿಭಜಿಸಬಹುದು.
+3. ಈಗ ಡೇಟಾ ಚಿತ್ರಿಸಲು ಸಿದ್ಧವಾಗಿದೆ, ಮಷಿನ್ ಸಂಖ್ಯೆಗಳ ನಡುವಿನ ಲಾಜಿಕಲ್ ವಿಭಜನೆ ತಿಳಿಯಲು ಸಹಾಯ ಮಾಡುವುದೇ ಎಂದು ನೋಡೋಣ. ಇದಕ್ಕಾಗಿ, ನೀವು ಡೇಟಾ (X) ಮತ್ತು ಗುರಿ (y) ಇನ್ನು ನೀವು ತರಬೇತಿ ಹಾಗೂ ಪರೀಕ್ಷಾ ಸೆಟ್ಗಳಿಗೆ ವಿಭಜಿಸಬೇಕು. ಸ್ಕಿಕಿಟ್-ಲರ್ನ್ ಇದನ್ನು ಸುಲಭವಾಗಿ ಮಾಡುತ್ತದೆ; ನಿಮಗೆ ಬೇಕಾದ ಸ್ಥಳದಲ್ಲಿ ಪರೀಕ್ಷಾ ಡೇಟಾವನ್ನು ವಿಭಜಿಸಬಹುದು.
```python
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33)
```
-4. ಈಗ ನೀವು ನಿಮ್ಮ ಮಾದರಿಯನ್ನು ತರಬೇತಿಗೆ ಸಿದ್ಧರಾಗಿದ್ದೀರಿ! ರೇಖೀಯ ರಿಗ್ರೆಶನ್ ಮಾದರಿಯನ್ನು ಲೋಡ್ ಮಾಡಿ ಮತ್ತು `model.fit()` ಬಳಸಿ ನಿಮ್ಮ X ಮತ್ತು y ತರಬೇತಿ ಸೆಟ್ಗಳೊಂದಿಗೆ ತರಬೇತಿ ಮಾಡಿ:
+4. ಈಗ ನೀವು ನಿಮ್ಮ ಮಾದರಿಯನ್ನು ತರಬೇತಿಗೆ ಸಿದ್ಧವಾಗಿದೆ! ಲೀನಿಯರ್ ರಿಗ್ರೆಶನ್ ಮಾದರಿಯನ್ನು ಲೋಡ್ ಮಾಡಿ ಮತ್ತು ನಿಮ್ಮ X ಮತ್ತು y ತರಬೇತಿ ಸೆಟ್ಗಳಿಗೆ `model.fit()` ಉಪಯೋಗಿಸಿ ತರಬೇತಿಯನ್ನು ಮಾಡಿ:
```python
model = linear_model.LinearRegression()
model.fit(X_train, y_train)
```
- ✅ `model.fit()` ಅನ್ನು ನೀವು TensorFlow ಮುಂತಾದ ಅನೇಕ ML ಗ್ರಂಥಾಲಯಗಳಲ್ಲಿ ಕಾಣುತ್ತೀರಿ
+ ✅ `model.fit()` ಅನೇಕ ಯಂತ್ರ학습 ಗ್ರಂಥಾಲಯಗಳಲ್ಲಿ, ಉದಾ: ಟೆನ್ಸರ್ ಫ್ಲೋ ಇತ್ಯಾದಿಗಳಲ್ಲಿ ಕಾಣಸಿಗುವ ಕಾರ್ಯ.
-5. ನಂತರ, ಪರೀಕ್ಷಾ ಡೇಟಾ ಬಳಸಿ `predict()` ಫಂಕ್ಷನ್ ಮೂಲಕ ಅಂದಾಜು ರಚಿಸಿ. ಇದು ಡೇಟಾ ಗುಂಪುಗಳ ನಡುವೆ ರೇಖೆಯನ್ನು ಬಿಡಲು ಬಳಸಲಾಗುತ್ತದೆ
+5. ನಂತರ, `predict()` ಫಂಕ್ಷನ್ ಬಳಸಿ ಪರೀಕ್ಷಾ ಡೇಟಾವನ್ನು ಉಪಯೋಗಿಸಿ ಅನುಮಾನವನಾದಿಸು. ಇದು ಡೇಟಾ ಗುಂಪುಗಳ ನಡುವಿನ ರೇಖೆಯನ್ನು ಎಳೆಯಲು ಉಪಯೋಗಿಸಲಾಗುತ್ತದೆ.
```python
y_pred = model.predict(X_test)
```
-6. ಈಗ ಡೇಟಾವನ್ನು ಪ್ಲಾಟ್ನಲ್ಲಿ ತೋರಿಸುವ ಸಮಯ. ಮ್ಯಾಟ್ಪ್ಲಾಟ್ಲಿಬ್ ಈ ಕಾರ್ಯಕ್ಕೆ ಬಹಳ ಉಪಯುಕ್ತ ಸಾಧನ. ಎಲ್ಲಾ X ಮತ್ತು y ಪರೀಕ್ಷಾ ಡೇಟಾದ ಸ್ಕ್ಯಾಟರ್ಪ್ಲಾಟ್ ರಚಿಸಿ, ಮತ್ತು ಅಂದಾಜನ್ನು ಬಳಸಿ ಮಾದರಿಯ ಡೇಟಾ ಗುಂಪುಗಳ ನಡುವೆ ಸೂಕ್ತ ಸ್ಥಳದಲ್ಲಿ ರೇಖೆಯನ್ನು ಬಿಡಿ.
+6. ಈಗ ಡೇಟಾವನ್ನು ಚಿತ್ತರಿಸಲು ಸಮಯ. ಮ್ಯಾಟ್ಪ್ಲಾಟ್ಲಿಬ್ ಇದಕ್ಕೆ ಬಹುಮುಖ ಉಪಕರಣ. ಎಲ್ಲಾ X ಮತ್ತು y ಪರೀಕ್ಷಾ ಡೇಟಾ ಸ್ಪೋಟವನ್ನು ಸೃಷ್ಟಿಸಿ, ಮತ್ತು ಮಾದರಿ ವಿಶ್ಲೇಷಣೆಗಾಗಿ ರೇಖೆಯನ್ನು ಬಿಡಿ.
```python
plt.scatter(X_test, y_test, color='black')
@@ -202,30 +203,32 @@
plt.show()
```
- 
- ✅ ಇಲ್ಲಿ ಏನಾಗುತ್ತಿದೆ ಎಂಬುದನ್ನು ಸ್ವಲ್ಪ ಯೋಚಿಸಿ. ಒಂದು ಸರಳ ರೇಖೆ ಅನೇಕ ಸಣ್ಣ ಡೇಟಾ ಬಿಂದುಗಳ ಮೂಲಕ ಓಡುತ್ತಿದೆ, ಆದರೆ ಅದು ನಿಖರವಾಗಿ ಏನು ಮಾಡುತ್ತಿದೆ? ಈ ರೇಖೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಹೊಸ, ಕಾಣದ ಡೇಟಾ ಬಿಂದು ಪ್ಲಾಟ್ನ y ಅಕ್ಷದ ಸಂಬಂಧದಲ್ಲಿ ಎಲ್ಲಿ ಹೊಂದಿಕೊಳ್ಳಬೇಕು ಎಂದು ನೀವು ಹೇಗೆ ಊಹಿಸಬಹುದು ಎಂದು ನೋಡಬಹುದೇ? ಈ ಮಾದರಿಯ ಪ್ರಾಯೋಗಿಕ ಬಳಕೆಯನ್ನು ಪದಗಳಲ್ಲಿ ವಿವರಿಸಲು ಪ್ರಯತ್ನಿಸಿ.
+ 
+
+
+ ✅ ಇಲ್ಲಿ ಏನಾಗುತ್ತಿದೆ ಎಂದು ಸ್ವಲ್ಪ ಆಲೋಚಿಸಿ ನೋಡಿ. ಹಲವಾರು ಸಣ್ಣ ಡೇಟಾ ಬಿಂದುಗಳ ಮೂಲಕ ಒಂದು ಸರಳ ಇಲ್ಲು ಹರಡುತ್ತಿದೆ, ಆದರೆ ಅದು ನಿಖರವಾಗಿ ಏನು ಮಾಡುತ್ತಿದೆ? ನಿಮ್ಮ ಸ್ಟೋರಿಕೆಯಲ್ಲಿ ಹೊಸದಾಗಿ ಕಾಣದ ಡೇಟಾ ಪಾಯಿಂಟ್ ಯಾವ ಸ್ಥಾನದಲ್ಲಿ ಗುರುತಿಸಲು ನೀವು ಈ ರೇಖೆಯನ್ನು ಹೇಗೆ ಬಳಸಬಹುದು ಎಂದು ಕಾಣಬಹುದೇ? ಈ ಮಾದರಿಯ ಪ್ರಾಯೋಗಿಕ ಬಳಕೆಯನ್ನು ಪದಗಳಲ್ಲಿ ವಿವರಿಸಲು ಪ್ರಯತ್ನಿಸಿ.
-ಅಭಿನಂದನೆಗಳು, ನೀವು ನಿಮ್ಮ ಮೊದಲ ಲೀನಿಯರ್ ರಿಗ್ರೆಶನ್ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿದ್ದೀರಿ, ಅದರಿಂದ ಊಹೆ ಮಾಡಿದ್ದೀರಿ ಮತ್ತು ಅದನ್ನು ಪ್ಲಾಟ್ನಲ್ಲಿ ಪ್ರದರ್ಶಿಸಿದ್ದೀರಿ!
+ಅಭಿನಂದನೆಗಳು, ನೀವು ನಿಮ್ಮ ಮೊದಲ ಲೀನಿಯರ್ ರಿಗ್ರೆಶನ್ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿದ್ದೀರಿ, ಅದರೊಂದಿಗೆ ಭವಿಷ್ಯವಾಣಿಯನ್ನು ಮಾಡಿದ್ದೀರಿ ಮತ್ತು ಅದನ್ನು ಪ್ಲಾಟ್ನಲ್ಲಿ ಪ್ರದರ್ಶಿಸಿದ್ದೀರಿ!
---
## 🚀ಸವಾಲು
-ಈ ಡೇಟಾಸೆಟ್ನಿಂದ ಬೇರೆ ಚರವನ್ನು ಪ್ಲಾಟ್ ಮಾಡಿ. ಸೂಚನೆ: ಈ ಸಾಲನ್ನು ಸಂಪಾದಿಸಿ: `X = X[:,2]`. ಈ ಡೇಟಾಸೆಟ್ನ ಗುರಿಯನ್ನು ಗಮನಿಸಿದರೆ, ಡಯಾಬಿಟಿಸ್ ರೋಗದ ಪ್ರಗತಿಯನ್ನು ನೀವು ಏನು ಕಂಡುಹಿಡಿಯಬಹುದು?
-## [ಪೋಸ್ಟ್-ಲೆಕ್ಚರ್ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/)
+ಈ ಡೇಟಾಸೆಟ್ನಿಂದ ಬೇರೆ ಪರಿಮಾಣವನ್ನು ಪ್ಲಾಟ್ ಮಾಡಿರಿ. ಸೂಚನೆ: ಈ ಸಾಲನ್ನು ಸಂಪಾದನೆ ಮಾಡಿರಿ: `X = X[:,2]`. ಈ ಡೇಟಾಸೆಟ್ನ ಗುರಿಯೊಂದಿಗೆ, ರೋಗವಾಗಿ ಡಯಾಬಿಟೀಸ್ನ ಪ್ರಗತಿಯಿಂದ ನೀವು ಏನು ಪತ್ತೆಹಚ್ಚಬಹುದು?
+## [ಪಾಠದ ನಂತರದ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/)
## ವಿಮರ್ಶೆ ಮತ್ತು ಸ್ವಯಂ ಅಧ್ಯಯನ
-ಈ ಟ್ಯುಟೋರಿಯಲ್ನಲ್ಲಿ, ನೀವು ಸರಳ ಲೀನಿಯರ್ ರಿಗ್ರೆಶನ್ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಿದ್ದೀರಿ, ಏಕಚರ ಅಥವಾ ಬಹುಚರ ಲೀನಿಯರ್ ರಿಗ್ರೆಶನ್ ಅಲ್ಲ. ಈ ವಿಧಾನಗಳ ನಡುವಿನ ವ್ಯತ್ಯಾಸಗಳ ಬಗ್ಗೆ ಸ್ವಲ್ಪ ಓದಿ, ಅಥವಾ [ಈ ವೀಡಿಯೋ](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) ನೋಡಿ.
+ಈ ಪಾಠದಲ್ಲಿ, ನೀವು ಸರಳ ಲೀನಿಯರ್ ರಿಗ್ರೆಶನ್ ಜೊತೆಗೆ ಕೆಲಸ ಮಾಡಿದ್ದೀರಿ, ಒಂದೂವರೆ ಅಥವಾ ಬಹು ಪರಿಮಾಣ ಲೀನಿಯರ್ ರಿಗ್ರೆಶನ್ ಅಲ್ಲ. ಈ ವಿಧಾನಗಳ ನಡುವೆ ಇರುವ ವ್ಯತ್ಯಾಸಗಳು ಕುರಿತು ಸ್ವಲ್ಪ ಓದಿ, ಅಥವಾ [ಈ ವೀಡಿಯೋವನ್ನು](https://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) ಅನ್ನು ತೆಗೆದುಕೊಳ್ಳಿ.
+ರಿಗ್ರೆಶನ್ ಸಿದ್ಧಾಂತದ ಬಗ್ಗೆ ಹೆಚ್ಚಾಗಿ ಓದಿ ಮತ್ತು ಈ ತಂತ್ರದಿಂದ ಯಾವುದೇ ಪ್ರಶ್ನೆಗಳಿಗೆ ಉತ್ತರ ಸಾಧ್ಯವೆಂದು ಯೋಚಿಸಿ. ನಿಮ್ಮ ತಿಳಿವಳಿಕೆಯನ್ನು ಗಾಢಗೊಳಿಸಲು ಈ [ಪಾಠದ ಮಾರ್ಗದರ್ಶನವನ್ನು](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) ಅನುಸರಿಸಿ.
## ನಿಯೋಜನೆ
-[ಬೇರೆ ಡೇಟಾಸೆಟ್](assignment.md)
+[ಬೇರೊಂದು ಡೇಟಾಸೆಟ್](assignment.md)
---
-**ಅಸ್ವೀಕಾರ**:
-ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.
+**ಅಸ್ವೀಕಾರ**:
+ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯನ್ನು ಸಾಧಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ದಯವಿಟ್ಟು ಗಮನಿಸಿ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸಡ್ಡೆಗಳು ಇರಬಹುದು. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜು ಪ್ರಾಮಾಣಿಕ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಪ್ರಮುಖ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದವನ್ನು ಬಳಸುವ ಮೂಲಕ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಗಳ ಅಥವಾ ತಪ್ಪು ವ್ಯಾಖ್ಯಾನಗಳ ಬಗ್ಗೆ ನಾವು ಹೊಣೆಗಾರರಲ್ಲ.
\ No newline at end of file
diff --git a/translations/kn/2-Regression/2-Data/README.md b/translations/kn/2-Regression/2-Data/README.md
index 39c602680..897d8d68a 100644
--- a/translations/kn/2-Regression/2-Data/README.md
+++ b/translations/kn/2-Regression/2-Data/README.md
@@ -1,60 +1,60 @@
-# Scikit-learn ಬಳಸಿ ರೆಗ್ರೆಶನ್ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿ: ಡೇಟಾವನ್ನು ಸಿದ್ಧಪಡಿಸಿ ಮತ್ತು ದೃಶ್ಯೀಕರಿಸಿ
+# Scikit-learn ಬಳಸಿ ರೆಗ್ರೆಶನ್ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿ: ಡೇಟಾ ತಯಾರಿಕೆ ಮತ್ತು ದೃಶ್ಯೀಕರಣ
-
+
-ಇನ್ಫೋಗ್ರಾಫಿಕ್ [ದಾಸನಿ ಮಡಿಪಳ್ಳಿ](https://twitter.com/dasani_decoded) ಅವರಿಂದ
+ಮಾಹಿತಿ ಚಿತ್ರವನ್ನು [ದಾಸನಿ ಮಡಿಪಳ್ಳಿ](https://twitter.com/dasani_decoded) ಹಾಕಿದ್ದಾರೆ
-## [ಪೂರ್ವ-ಪಾಠ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/)
+## [ಪೂರ್ವ-ಪಾಠ ಪರೀಕ್ಷೆ](https://ff-quizzes.netlify.app/en/ml/)
> ### [ಈ ಪಾಠ R ನಲ್ಲಿ ಲಭ್ಯವಿದೆ!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
## ಪರಿಚಯ
-Scikit-learn ಬಳಸಿ ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿ ನಿರ್ಮಾಣವನ್ನು ಪ್ರಾರಂಭಿಸಲು ನೀವು ಅಗತ್ಯವಿರುವ ಸಾಧನಗಳೊಂದಿಗೆ ಸಿದ್ಧರಾಗಿರುವಾಗ, ನಿಮ್ಮ ಡೇಟಾದ ಬಗ್ಗೆ ಪ್ರಶ್ನೆಗಳನ್ನು ಕೇಳಲು ನೀವು ಸಿದ್ಧರಾಗಿದ್ದೀರಿ. ಡೇಟಾ ಜೊತೆಗೆ ಕೆಲಸ ಮಾಡುವಾಗ ಮತ್ತು ML ಪರಿಹಾರಗಳನ್ನು ಅನ್ವಯಿಸುವಾಗ, ನಿಮ್ಮ ಡೇಟಾಸೆಟ್ನ ಸಾಧ್ಯತೆಗಳನ್ನು ಸರಿಯಾಗಿ ಅನ್ಲಾಕ್ ಮಾಡಲು ಸರಿಯಾದ ಪ್ರಶ್ನೆಯನ್ನು ಕೇಳುವುದು ಬಹಳ ಮುಖ್ಯ.
+ಈಗ ನೀವು Scikit-learn ಬಳಸಿ ಮೆಷಿನ್ ಲರ್ನಿಂಗ್ ಮಾದರಿ ನಿರ್ಮಾಣ ಆರಂಭಿಸಲು ಬೇಕಾದ ಸಾಧನಗಳನ್ನು ಹೊಂದಿದ್ದೀರಿ, ನೀವು ನಿಮ್ಮ ಡೇಟಾ ಬಗ್ಗೆ ಪ್ರಶ್ನೆಗಳನ್ನು ಕೇಳಲು ಸಿದ್ಧರಾಗಿದ್ದೀರಿ. ಡೇಟಾ ಮೇಲೆ ಕೆಲಸ ಮಾಡುತ್ತಾ ಮತ್ತು ಯಂತ್ರ ಅಧ್ಯಯನ ಪರಿಹಾರಗಳನ್ನು ಅನ್ವಯಿಸುತ್ತಾ, ನಿಮ್ಮ ಡೇಟಾಸೆಟ್ ಶಕ್ತಿಗಳನ್ನು ಸರಿಯಾಗಿ ಅನಾವರಣ ಮಾಡುವ ಸರಿಯಾದ ಪ್ರಶ್ನೆಯನ್ನು ಕೇಳುವುದು ಬಹಳ ಮಹತ್ವಪೂರ್ಣವಾಗಿದೆ.
-ಈ ಪಾಠದಲ್ಲಿ, ನೀವು ಕಲಿಯುವಿರಿ:
+ಈ ಪಾಠದಲ್ಲಿ ನೀವು ಕಲಿಯುವವು:
-- ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಮಾದರಿ ನಿರ್ಮಾಣಕ್ಕೆ ಹೇಗೆ ಸಿದ್ಧಪಡಿಸುವುದು.
-- ಡೇಟಾ ದೃಶ್ಯೀಕರಣಕ್ಕಾಗಿ Matplotlib ಅನ್ನು ಹೇಗೆ ಬಳಸುವುದು.
+- ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಮಾದರಿ ನಿರ್ಮಾಣಕ್ಕೆ ಹೇಗೆ ತಯಾರಿಸುವುದು.
+- ಡೇಟಾ ದೃಶ್ಯೀಕರಣಕ್ಕೆ Matplotlib ಅನ್ನು ಹೇಗೆ ಬಳಸುವುದು.
+- ಹೆಚ್ಚು ಅಭಿವ್ಯಕ್ತಿಯುತ ಡೇಟಾ ದೃಶ್ಯೀಕರಣಕ್ಕೆ Seaborn ಅನ್ನು ಹೇಗೆ ಬಳಸುವುದು.
## ನಿಮ್ಮ ಡೇಟಾದ ಸರಿಯಾದ ಪ್ರಶ್ನೆಯನ್ನು ಕೇಳುವುದು
-ನೀವು ಉತ್ತರಿಸಬೇಕಾದ ಪ್ರಶ್ನೆ ಯಾವ ರೀತಿಯ ML ಆಲ್ಗಾರಿಥಮ್ಗಳನ್ನು ನೀವು ಬಳಸಬೇಕೆಂದು ನಿರ್ಧರಿಸುತ್ತದೆ. ಮತ್ತು ನೀವು ಪಡೆದ ಉತ್ತರದ ಗುಣಮಟ್ಟವು ನಿಮ್ಮ ಡೇಟಾದ ಸ್ವಭಾವದ ಮೇಲೆ ಬಹಳ ಅವಲಂಬಿತವಾಗಿರುತ್ತದೆ.
+ನೀವು ಉತ್ತರಿಸಬೇಕಾದ ಪ್ರಶ್ನೆ ಯಾವ ರೀತಿಯ ಯಂತ್ರ ಕಲಿಕಾ ಅಲ್ಗೆಬ್ರಾಂಗಳನ್ನೂ ನೀವು ಬಳಸಬೇಕೋ ಅದು ನಿಶ್ಚಿತಮಾಡುತ್ತದೆ. ಮತ್ತು ನೀವು ಪಡೆಯುವ ಉತ್ತರದ ಗುಣಮಟ್ಟವು ನಿಮ್ಮ ಡೇಟಾ ಸ್ವಭಾವಕ್ಕೆ ಬಹಳ ಅವಲಂಬಿತವಾಗುತ್ತದೆ.
-ಈ ಪಾಠಕ್ಕಾಗಿ ನೀಡಲಾದ [ಡೇಟಾ](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) ಅನ್ನು ನೋಡಿ. ನೀವು ಈ .csv ಫೈಲ್ ಅನ್ನು VS Code ನಲ್ಲಿ ತೆರೆಯಬಹುದು. ಒಂದು ತ್ವರಿತ ಪರಿಶೀಲನೆ ತಕ್ಷಣವೇ ಖಾಲಿ ಸ್ಥಳಗಳು ಮತ್ತು ಸ್ಟ್ರಿಂಗ್ಗಳು ಮತ್ತು ಸಂಖ್ಯಾತ್ಮಕ ಡೇಟಾದ ಮಿಶ್ರಣವಿದೆ ಎಂದು ತೋರಿಸುತ್ತದೆ. 'Package' ಎಂಬ ವಿಚಿತ್ರ ಕಾಲಮ್ ಕೂಡ ಇದೆ, ಅಲ್ಲಿ ಡೇಟಾ 'sacks', 'bins' ಮತ್ತು ಇತರ ಮೌಲ್ಯಗಳ ಮಿಶ್ರಣವಾಗಿದೆ. ಡೇಟಾ, ವಾಸ್ತವದಲ್ಲಿ, ಸ್ವಲ್ಪ ಗೊಂದಲವಾಗಿದೆ.
+ಈ ಪಾಠದಿಗಾಗಿ ನೀಡಲಾದ [ಡೇಟಾ](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) ನೋಡಿ. ನೀವು ಈ .csv ಫೈಲ್ ಅನ್ನು VS Code ನಲ್ಲಿ ತೆರೆಯಬಹುದು. ತ್ವರಿತ ಸಂಕ್ಷೇಪಣೆಯಿಂದ ತಕ್ಷಣವೇ ಖಾಲಿ ಸ್ಥಳಗಳು ಮತ್ತು ಸ್ಟ್ರಿಂಗ್ ಮತ್ತು ಸಂಖ್ಯೆಮೂಲಕ ಡೇಟಾದ ಮಿಶ್ರಣವಿದೆ ಎಂದು ಪ್ರತ್ಯಕ್ಷವಾಗುತ್ತದೆ. 'ಪ್ಯಾಕೇಜ್' ಎಂದು ಹೆಸರಿಸಿರುವ ವಿಚಿತ್ರ ಕಾಲಮ್ ಕೂಡ ಇದೆ, ಇದರಲ್ಲಿ ಡೇಟಾ 'ಸಾಕ್ಸ್', 'ಬಿನ್ಸ್' ಮತ್ತು ಇತರ ಮೌಲ್ಯಗಳ ಮಿಶ್ರಣವಾಗಿದೆ. ವಾಸ್ತವವಾಗಿ, ಡೇಟಾ ಸ್ವಲ್ಪ ಗೊಂದಲವಾಗಿವೆ.
-[](https://youtu.be/5qGjczWTrDQ "ML for beginners - How to Analyze and Clean a Dataset")
+[](https://youtu.be/5qGjczWTrDQ "ಯಾಂತ್ರಿಕ ಕಲಿಕೆಯ ಆರಂಭಿಕರಿಗಾಗಿ - ಡೇಟಾಸೆಟ್ ವಿಶ್ಲೇಷಣೆ ಮತ್ತು ಶುದ್ಧೀಕರಣವನ್ನು ಹೇಗೆ ಮಾಡಬೇಕು")
-> 🎥 ಈ ಪಾಠಕ್ಕಾಗಿ ಡೇಟಾ ಸಿದ್ಧಪಡಿಸುವುದನ್ನು ತೋರಿಸುವ ಚಿಕ್ಕ ವೀಡಿಯೋಗಾಗಿ ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ.
+> 🎥 ಈ ಪಾಠಕ್ಕಾಗಿ ಡೇಟಾ ತಯಾರಿಕೆಯ ಮೂಲಕ ಕಾರ್ಯಗತಗೊಳಿಸುವ ಸಂಕ್ಷಿಪ್ತ ವೀಡಿಯೋದಕ್ಕೆ ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ.
-ವಾಸ್ತವದಲ್ಲಿ, ಬಾಕ್ಸ್ನಿಂದಲೇ ML ಮಾದರಿಯನ್ನು ರಚಿಸಲು ಸಂಪೂರ್ಣ ಸಿದ್ಧವಾಗಿರುವ ಡೇಟಾಸೆಟ್ ಅನ್ನು ಪಡೆಯುವುದು ಸಾಮಾನ್ಯವಲ್ಲ. ಈ ಪಾಠದಲ್ಲಿ, ನೀವು ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಪೈಥಾನ್ ಲೈಬ್ರರಿಗಳನ್ನು ಬಳಸಿ ಕಚ್ಚಾ ಡೇಟಾಸೆಟ್ ಅನ್ನು ಹೇಗೆ ಸಿದ್ಧಪಡಿಸುವುದು ಎಂದು ಕಲಿಯುತ್ತೀರಿ. ನೀವು ಡೇಟಾವನ್ನು ದೃಶ್ಯೀಕರಿಸುವ ವಿವಿಧ ತಂತ್ರಗಳನ್ನು ಸಹ ಕಲಿಯುತ್ತೀರಿ.
+ವಾಸ್ತವವಾಗಿ, ಪೂರ್ತಿಯಾಗಿ ಸಿದ್ಧವಾದ ಡೇಟಾಸೆಟ್ ಅನ್ನು ಬಾಕ್ಸ್ನಿಂದ ಯಂತ್ರ ಕಲಿಕಾ ಮಾದರಿಗಾಗಿ ನೀಡುವುದು ಸಾಮಾನ್ಯವಲ್ಲ. ಈ ಪಾಠದಲ್ಲಿ, ನೀವು ಸ್ಟಾಂಡರ್ಡ್ ಪೈಥನ್ ಗ್ರಂಥಾಲಯಗಳನ್ನು ಬಳಸಿ ಕಚ್ಚಾ ಡೇಟಾಸೆಟ್ ತಯಾರಿಸುವುದನ್ನು ಕಲಿಯುತ್ತೀರಿ. ನೀವು ಡೇಟಾವನ್ನು ದೃಶ್ಯೀಕರಿಸಲು ವಿವಿಧ ತಂತ್ರಗಳನ್ನು ಕಲಿಯುವಿರಿ.
-## ಪ್ರಕರಣ ಅಧ್ಯಯನ: 'ಪಂಪ್ಕಿನ್ ಮಾರುಕಟ್ಟೆ'
+## ಪ್ರಕರಣ ಅಧ್ಯಯನ: 'ಕುಂಬಳಕಾಯಿ ಮಾರುಕಟ್ಟೆ'
-ಈ ಫೋಲ್ಡರ್ನಲ್ಲಿ ನೀವು ಮೂಲ `data` ಫೋಲ್ಡರ್ನಲ್ಲಿ [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) ಎಂಬ .csv ಫೈಲ್ ಅನ್ನು ಕಾಣಬಹುದು, ಇದರಲ್ಲಿ ನಗರಗಳ ಪ್ರಕಾರ ಗುಂಪುಮಾಡಲಾದ ಪಂಪ್ಕಿನ್ ಮಾರುಕಟ್ಟೆಯ ಬಗ್ಗೆ 1757 ಸಾಲುಗಳ ಡೇಟಾ ಇದೆ. ಇದು ಯುನೈಟೆಡ್ ಸ್ಟೇಟ್ಸ್ ಡಿಪಾರ್ಟ್ಮೆಂಟ್ ಆಫ್ ಅಗ್ರಿಕಲ್ಚರ್ ವಿತರಿಸುವ [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) ನಿಂದ ತೆಗೆದ ಕಚ್ಚಾ ಡೇಟಾ.
+ಈ ಫೋಲ್ಡರ್ನಲ್ಲಿ, ನೀವು ರೂಟ್ `data` ಫೋಲ್ಡರ್ನಲ್ಲಿ [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) ಎಂಬ .csv ಫೈಲ್ ಅನ್ನು ಕಾಣುತ್ತೀರಿ, ಇದು ಕುಮ্বলಕಾಯಿಗಳ ಮಾರುಕಟ್ಟೆಯ ಬಗ್ಗೆ 1757 ಸಾಲುಗಳಿಂದ ಕೂಡಿದ ಡೇಟಾವನ್ನು ಒಳಗೊಂಡಿದೆ, ನಗರಗಳ ಪ್ರಕಾರ ಗುಂಪು ಮಾಡಲಾಗಿದೆ. ಇದು ಯುನೈಟೆಡ್ ಸ್ಟೇಟ್ಸ್ ಡಿಪಾರ್ಟ್ಮೆಂಟ್ ಆಫ್ అಗ್ರಿಕಲ್ಚರ್ ಮುಖಾಂತರ ಹಂಚಲಾಗುವ [ಸ್ಪೆಷಲ್ಟಿ ಕ್ರಾಪ್ಸ್ ಟರ್ಮಿನಲ್ ಮಾರುಕಟ್ಟೆಗಳ ಸ್ಟ್ಯಾಂಡರ್ಡ್ ರಿಪೋರ್ಟ್](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) ನಿಂದ ತೆಗೆಯಲಾದ ಕಚ್ಚಾ ಡೇಟಾ.
-### ಡೇಟಾ ಸಿದ್ಧಪಡಿಸುವುದು
+### ಡೇಟಾ ತಯಾರಿಕೆ
-ಈ ಡೇಟಾ ಸಾರ್ವಜನಿಕ ಡೊಮೇನ್ನಲ್ಲಿ ಇದೆ. ಇದನ್ನು USDA ವೆಬ್ಸೈಟ್ನಿಂದ ಪ್ರತಿ ನಗರಕ್ಕೆ ಪ್ರತ್ಯೇಕ ಫೈಲ್ಗಳಾಗಿ ಡೌನ್ಲೋಡ್ ಮಾಡಬಹುದು. ಬಹಳಷ್ಟು ಪ್ರತ್ಯೇಕ ಫೈಲ್ಗಳನ್ನು ತಪ್ಪಿಸಲು, ನಾವು ಎಲ್ಲಾ ನಗರಗಳ ಡೇಟಾವನ್ನು ಒಂದೇ ಸ್ಪ್ರೆಡ್ಶೀಟ್ಗೆ ಸಂಯೋಜಿಸಿದ್ದೇವೆ, ಆದ್ದರಿಂದ ನಾವು ಡೇಟಾವನ್ನು ಸ್ವಲ್ಪ _ಸಿದ್ಧಪಡಿಸಿದ್ದೇವೆ_. ಮುಂದಿನದಾಗಿ, ಡೇಟಾವನ್ನು ನಿಕಟವಾಗಿ ನೋಡೋಣ.
+ಈ ಡೇಟಾ ಸಾರ್ವಜನಿಕ ಡೊಮೇನ್ನಲ್ಲಿ ಇದೆ. ಇದು USDA ವೆಬ್ ಸೈಟ್ನಿಂದ ಪ್ರತಿ ನಗರಕ್ಕೆ ಪ್ರತ್ಯೇಕ ಕಡತಗಳಲ್ಲಿ ದೊರೆಯಬಹುದು. ಹೆಚ್ಚು ಪ್ರತ್ಯೇಕ ಕಡತಗಳನ್ನು ತಡೆಯಲು, ನಾವು ಎಲ್ಲಾ ನಗರ ಡೇಟಾವನ್ನು ಒಂದೇ ಸ್ಪ್ರೆಡ್ಶೀಟ್ಗೆ ಏಕೀಕೃತಗೊಳಿಸಿದ್ದೇವೆ, ಹಾಗಾಗಿ ನಾವು ಡೇಟಾವನ್ನು ಸ್ವಲ್ಪ _ತಯಾರಿಸಿದ್ದು_ ಇದೆ. ಇನ್ನು ಮುಂದೆ, ಡೇಟಾವನ್ನು ನಿಕಟವಾಗಿ ನೋಡೋಣ.
-### ಪಂಪ್ಕಿನ್ ಡೇಟಾ - ಪ್ರಾಥಮಿಕ ನಿರ್ಣಯಗಳು
+### ಕುಮكبಳಾಯಿ ಡೇಟಾ - ಪ್ರಾಥಮಿಕ ತೀರ್ಪುಗಳು
-ನೀವು ಈ ಡೇಟಾದ ಬಗ್ಗೆ ಏನು ಗಮನಿಸುತ್ತೀರಿ? ನೀವು ಈಗಾಗಲೇ ಸ್ಟ್ರಿಂಗ್ಗಳು, ಸಂಖ್ಯೆಗಳು, ಖಾಲಿ ಸ್ಥಳಗಳು ಮತ್ತು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬೇಕಾದ ವಿಚಿತ್ರ ಮೌಲ್ಯಗಳ ಮಿಶ್ರಣವಿದೆ ಎಂದು ನೋಡಿದ್ದೀರಿ.
+ಈ ಡೇಟಾ ಬಗ್ಗೆ ನೀವು ಏನು ಗಮನಿಸುತ್ತೀರಿ? ನೀವು ಈಗಾಗಲೇ ಸ್ಟ್ರಿಂಗ್, ಸಂಖ್ಯೆ, ಖಾಲಿ ಪ್ರದೇಶಗಳು ಮತ್ತು ವಿಚಿತ್ರ ಮೌಲ್ಯಗಳ ಮಿಶ್ರಣ ಇದೆ ಎಂದು ನೋಡಿದ್ದೀರಿ, ಇದಕ್ಕೆ ಅರ್ಥವನ್ನು ಕೊಡುವ ಅಗತ್ಯವಿದೆ.
-ನೀವು Regression ತಂತ್ರವನ್ನು ಬಳಸಿ ಈ ಡೇಟಾದಿಂದ ಯಾವ ಪ್ರಶ್ನೆಯನ್ನು ಕೇಳಬಹುದು? "ನಿಗದಿತ ತಿಂಗಳಲ್ಲಿ ಮಾರಾಟಕ್ಕೆ ಇರುವ ಪಂಪ್ಕಿನ್ನ ಬೆಲೆಯನ್ನು ಭವಿಷ್ಯವಾಣಿ ಮಾಡು" ಎಂದು ಯೋಚಿಸಿ. ಡೇಟಾವನ್ನು ಮತ್ತೆ ನೋಡಿದಾಗ, ಈ ಕಾರ್ಯಕ್ಕೆ ಅಗತ್ಯವಿರುವ ಡೇಟಾ ರಚನೆಯನ್ನು ರಚಿಸಲು ನೀವು ಕೆಲವು ಬದಲಾವಣೆಗಳನ್ನು ಮಾಡಬೇಕಾಗುತ್ತದೆ.
+ಈ ಡೇಟಾದಲ್ಲಿ Regression ತಂತ್ರವನ್ನು ಬಳಸಿ ನೀವು ಯಾವ ಪ್ರಶ್ನೆ ಕೇಳಬಹುದು? "ನಿರ್ದಿಷ್ಟ ತಿಂಗಳು ವೇಳೆ ಮಾರಾಟವಾಗುವ ಒಂದು ಕುಮಂಬಳಕಾಯಿನ ಬೆಲೆಯನ್ನು ಮುಂಚಿತವಾಗಿ ಊಹಿಸಿ" ಎಂದು ಏನು? ಡೇಟಾವನ್ನು ಮತ್ತೆ ನೋಡಿ, ನೀವು ಕಾರ್ಯಕ್ಕಾಗಿ ಬೇಕಾದ ಡೇಟಾ ರಚನವನ್ನು ಸೃಷ್ಟಿಸಲು ಕೆಲವು ಬದಲಾವಣೆಗಳನ್ನು ಮಾಡಬೇಕಾಗಿದೆ.
+## ವ್ಯಾಯಾಮ - ಕುಮಕಳಾಯಿಗಳ ಡೇಟಾವನ್ನು ವಿಶ್ಲೇಷಣೆ ಮಾಡುವುದು
-## ಅಭ್ಯಾಸ - ಪಂಪ್ಕಿನ್ ಡೇಟಾವನ್ನು ವಿಶ್ಲೇಷಿಸಿ
+ಡೇಟಾವನ್ನು ರೂಪಿಸಲು ಬಹುಮುಖ ಉಪಕರಣವಾದ [Pandas](https://pandas.pydata.org/) (ಪೈಥಾನ್ ಡೇಟಾ ವಿಶ್ಲೇಷಣೆಯ ಸಂಕ್ಷಿಪ್ತ) ಬಳಸಿಕೊಂಡು ಈ ಕುಮಕಳಾಯಿಗಾಗಿ ಡೇಟಾವನ್ನು ವಿಶ್ಲೇಷಿಸಿ ಮತ್ತು ತಯಾರಿಸೋಣ.
-ನಾವು [Pandas](https://pandas.pydata.org/) (ಹೆಸರು `Python Data Analysis` ನ ಸಂಕ್ಷಿಪ್ತ) ಎಂಬ ಡೇಟಾ ರೂಪಿಸುವುದಕ್ಕೆ ಬಹಳ ಉಪಯುಕ್ತವಾದ ಸಾಧನವನ್ನು ಬಳಸಿ ಈ ಪಂಪ್ಕಿನ್ ಡೇಟಾವನ್ನು ವಿಶ್ಲೇಷಿಸಿ ಮತ್ತು ಸಿದ್ಧಪಡಿಸೋಣ.
+### ಮೊದಲು, ತಪ್ಪಿದ ದಿನಾಂಕಗಳು ಅವರನ್ನು ಪರಿಶೀಲಿಸಿ
-### ಮೊದಲು, ಕಳೆದುಹೋಗಿರುವ ದಿನಾಂಕಗಳನ್ನು ಪರಿಶೀಲಿಸಿ
+ನೀವು ಮೊದಲು ತಪ್ಪಿದ ದಿನಾಂಕಗಳಿಗಾಗಿ ಪರಿಶೀಲನೆಗೆ ಕ್ರಮಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳಬೇಕು:
-ನೀವು ಮೊದಲು ಕಳೆದುಹೋಗಿರುವ ದಿನಾಂಕಗಳಿಗಾಗಿ ಕ್ರಮಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳಬೇಕಾಗುತ್ತದೆ:
+1. ದಿನಾಂಕಗಳನ್ನು ತಿಂಗಳ ಸ್ವರೂಪಕ್ಕೆ ಪರಿವರ್ತಿಸಿ (ಇವು US ದಿನಾಂಕಗಳು, ಆದ್ದರಿಂದ ಸ್ವರೂಪ `MM/DD/YYYY` ಆಗಿದೆ).
+2. ತಿಂಗಳ ಮೌಲ್ಯವನ್ನು ಹೊಸ ಕಾಲಮ್ಗೆ ಪಡೆಯಿರಿ.
-1. ದಿನಾಂಕಗಳನ್ನು ತಿಂಗಳ ಫಾರ್ಮ್ಯಾಟ್ಗೆ ಪರಿವರ್ತಿಸಿ (ಇವು US ದಿನಾಂಕಗಳು, ಆದ್ದರಿಂದ ಫಾರ್ಮ್ಯಾಟ್ `MM/DD/YYYY` ಆಗಿದೆ).
-2. ತಿಂಗಳನ್ನೂ ಹೊಸ ಕಾಲಮ್ಗೆ ಹೊರತೆಗೆಯಿರಿ.
-
-Visual Studio Code ನಲ್ಲಿ _notebook.ipynb_ ಫೈಲ್ ತೆರೆಯಿರಿ ಮತ್ತು ಸ್ಪ್ರೆಡ್ಶೀಟ್ ಅನ್ನು ಹೊಸ Pandas ಡೇಟಾಫ್ರೇಮ್ಗೆ ಆಮದುಮಾಡಿ.
+Visual Studio Code ನಲ್ಲಿ _notebook.ipynb_ ಫೈಲ್ ತೆರೆಯಿರಿ ಮತ್ತು ಸ್ಪ್ರೆಡ್ಶೀಟ್ ಅನ್ನು ಹೊಸ Pandas ಡೇಟಾಫ್ರೇಮ್ಗೆ ಆಮದುಮಾಡಿ.
1. ಮೊದಲ ಐದು ಸಾಲುಗಳನ್ನು ನೋಡಲು `head()` ಫಂಕ್ಷನ್ ಅನ್ನು ಬಳಸಿ.
@@ -64,28 +64,28 @@ Visual Studio Code ನಲ್ಲಿ _notebook.ipynb_ ಫೈಲ್ ತೆರೆಯ
pumpkins.head()
```
- ✅ ಕೊನೆಯ ಐದು ಸಾಲುಗಳನ್ನು ನೋಡಲು ನೀವು ಯಾವ ಫಂಕ್ಷನ್ ಅನ್ನು ಬಳಸುತ್ತೀರಿ?
+ ✅ ಕೊನೆಯ ಐದು ಸಾಲುಗಳನ್ನು ನೋಡಲು ಯಾವ ಫಂಕ್ಷನ್ ಬಳಸುತ್ತೀರಾ?
-1. ಪ್ರಸ್ತುತ ಡೇಟಾಫ್ರೇಮ್ನಲ್ಲಿ ಕಳೆದುಹೋಗಿರುವ ಡೇಟಾ ಇದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸಿ:
+1. ಪ್ರಸ್ತುತ ಡೇಟಾಫ್ರೇಮ್ನಲ್ಲಿ ತಪ್ಪಿದ ಡೇಟಾ ಇದೆಯೆಂದು ಪರಿಶೀಲಿಸಿ:
```python
pumpkins.isnull().sum()
```
- ಕಳೆದುಹೋಗಿರುವ ಡೇಟಾ ಇದೆ, ಆದರೆ ಅದು ಈ ಕಾರ್ಯಕ್ಕೆ ಪ್ರಭಾವ ಬೀರುವುದಿಲ್ಲದಿರಬಹುದು.
+ ತಪ್ಪಿದ ಡೇಟಾ ಇದೆ, ಆದರೆ ಕೇಂದ್ರ ಕಾರ್ಯಕ್ಕೆ ಅದು ಬಹಳ ಪ್ರಭಾವ ಬೀರುವುದಿಲ್ಲ ಎಂದು ಅನಿಸಬಹುದು.
-1. ನಿಮ್ಮ ಡೇಟಾಫ್ರೇಮ್ ಅನ್ನು ಸುಲಭವಾಗಿ ಕೆಲಸ ಮಾಡಲು, ನೀವು ಬೇಕಾದ ಕಾಲಮ್ಗಳನ್ನು ಮಾತ್ರ ಆಯ್ಕೆಮಾಡಿ, `loc` ಫಂಕ್ಷನ್ ಬಳಸಿ, ಇದು ಮೂಲ ಡೇಟಾಫ್ರೇಮ್ನಿಂದ ಸಾಲುಗಳ ಗುಂಪು (ಮೊದಲ ಪ್ಯಾರಾಮೀಟರ್ ಆಗಿ) ಮತ್ತು ಕಾಲಮ್ಗಳನ್ನು (ಎರಡನೇ ಪ್ಯಾರಾಮೀಟರ್ ಆಗಿ) ಹೊರತೆಗೆಯುತ್ತದೆ. ಕೆಳಗಿನ ಉದಾಹರಣೆಯಲ್ಲಿ `:` ಅಂದರೆ "ಎಲ್ಲಾ ಸಾಲುಗಳು".
+1. ನಿಮ್ಮ ಡೇಟಾಫ್ರೇಮ್ ಅನ್ನು ಸುಲಭವಾಗಿ ಕೆಲಸ ಮಾಡಿಸಲು, ನೀವು ಬೇಕಾದ ಕಾಲಮ್ಗಳನ್ನು ಮಾತ್ರ ಆಯ್ಕೆಮಾಡಿ, `loc` ಫಂಕ್ಷನ್ ಉಪಯೋಗಿಸಿ ಅದು ಮೂಲ ಡೇಟಾಫ್ರೇಮ್ನಿಂದ ಸಾಲುಗಳ (ಮೊದಲ ಪರಿಮಾಣ) ಮತ್ತು ಕಾಲಮ್ಗಳ (ಎರಡನೇ ಪರಿಮಾಣ) ಗುಂಪನ್ನು ತೆಗೆಯುತ್ತದೆ. ಕೆಳಗಿನ ಉದಾಹರಣೆಯಲ್ಲಿ `:` ಅಂದ್ರೆ "ಎಲ್ಲಾ ಸಾಲುಗಳು".
```python
columns_to_select = ['Package', 'Low Price', 'High Price', 'Date']
pumpkins = pumpkins.loc[:, columns_to_select]
```
-### ಎರಡನೇದು, ಪಂಪ್ಕಿನ್ನ ಸರಾಸರಿ ಬೆಲೆಯನ್ನು ನಿರ್ಧರಿಸಿ
+### ಎರಡನೆದು, ಕುಮumbledಾಯಿಯ ಸರಾಸರಿ ಬೆಲೆಯನ್ನು ನಿರ್ಧರಿಸಿ
-ನಿಗದಿತ ತಿಂಗಳಲ್ಲಿ ಪಂಪ್ಕಿನ್ನ ಸರಾಸರಿ ಬೆಲೆಯನ್ನು ಹೇಗೆ ನಿರ್ಧರಿಸುವುದು ಎಂದು ಯೋಚಿಸಿ. ಈ ಕಾರ್ಯಕ್ಕೆ ನೀವು ಯಾವ ಕಾಲಮ್ಗಳನ್ನು ಆಯ್ಕೆಮಾಡುತ್ತೀರಿ? ಸೂಚನೆ: ನಿಮಗೆ 3 ಕಾಲಮ್ಗಳು ಬೇಕಾಗುತ್ತವೆ.
+ನಿರ್ದಿಷ್ಟ ತಿಂಗಳಲ್ಲಿ ಒಂದು ಕುಮumbledಾಯಿಯ ಸರಾಸರಿ ಬೆಲೆಯನ್ನು ಹೇಗೆ ನಿರ್ಧರಿಸುವುದು ಎಂದು ಯೋಚಿಸಿ. ಈ ಕಾರ್ಯಕ್ಕಾಗಿ ಯಾವ ಕಾಲಮ್ಗಳನ್ನು ನೀವು ಆಯ್ಕೆಮಾಡುತ್ತೀರಾ? ಸೂಚನೆ: ನಿಮಗೆ 3 ಕಾಲಮ್ಗಳು ಬೇಕಾಗಬಹುದು.
-ಉತ್ತರ: `Low Price` ಮತ್ತು `High Price` ಕಾಲಮ್ಗಳ ಸರಾಸರಿ ತೆಗೆದು ಹೊಸ `Price` ಕಾಲಮ್ ಅನ್ನು ತುಂಬಿಸಿ, ಮತ್ತು `Date` ಕಾಲಮ್ ಅನ್ನು ತಿಂಗಳಷ್ಟೇ ತೋರಿಸುವಂತೆ ಪರಿವರ್ತಿಸಿ. ಮೇಲಿನ ಪರಿಶೀಲನೆಯ ಪ್ರಕಾರ, ದಿನಾಂಕಗಳು ಅಥವಾ ಬೆಲೆಗಳಿಗೆ ಯಾವುದೇ ಕಳೆದುಹೋಗಿರುವ ಡೇಟಾ ಇಲ್ಲ.
+ಪರಿಹಾರ: ಹೊಸ Price ಕಾಲಮ್ ಭರ್ತಿಗೆ `Low Price` ಮತ್ತು `High Price` ಕಾಲಮ್ಗಳ ಸರಾಸರಿ ತೆಗೆದುಕೊಳ್ಳಿ, ಮತ್ತು Date ಕಾಲಮ್ ಕೇವಲ ತಿಂಗಳು ಮಾತ್ರ ತೋರಿಸ도록 ಪರಿವರ್ತಿಸಿ. ಮೇಲಿನ ಪರಿಶೀಲನೆಯ ಪ್ರಕಾರ, ದಿನಾಂಕಗಳು ಅಥವಾ ಬೆಲೆಗಳಿಗೆ ತಪ್ಪಿದ ಡೇಟಾ ಇಲ್ಲ.
1. ಸರಾಸರಿ ಲೆಕ್ಕಿಸಲು ಕೆಳಗಿನ ಕೋಡ್ ಸೇರಿಸಿ:
@@ -96,37 +96,37 @@ Visual Studio Code ನಲ್ಲಿ _notebook.ipynb_ ಫೈಲ್ ತೆರೆಯ
```
- ✅ ನೀವು `print(month)` ಬಳಸಿ ಯಾವುದೇ ಡೇಟಾವನ್ನು ಪರಿಶೀಲಿಸಲು ಮುಕ್ತವಾಗಿರಿ.
+ ✅ ನೀವು ಪರಿಶೀಲಿಸಲು ಬಯಸುವ ಯಾವುದೇ ಡೇಟಾವನ್ನು `print(month)` ಮೂಲಕ ಮುದ್ರಣ ಮಾಡಬಹುದು.
-2. ಈಗ, ನಿಮ್ಮ ಪರಿವರ್ತಿತ ಡೇಟಾವನ್ನು ಹೊಸ Pandas ಡೇಟಾಫ್ರೇಮ್ಗೆ ನಕಲಿಸಿ:
+2. ಈಗ, ನಿಮ್ಮ ಪರಿವರ್ತಿತ ಡೇಟಾವನ್ನು ಹೊಸ Pandas ಡೇಟಾಫ್ರೇಮ್ಗೆ ನಕಲಿಸಿ:
```python
new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price})
```
- ನಿಮ್ಮ ಡೇಟಾಫ್ರೇಮ್ ಅನ್ನು ಮುದ್ರಿಸಿದರೆ, ನೀವು ಹೊಸ ರೆಗ್ರೆಶನ್ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಲು ಶುದ್ಧ, ವ್ಯವಸ್ಥಿತ ಡೇಟಾಸೆಟ್ ಅನ್ನು ಕಾಣುತ್ತೀರಿ.
+ ನಿಮ್ಮ ಡೇಟಾಫ್ರೇಮ್ ಮುದ್ರಣ ಮಾಡಿದರೆ, ನೀವು ನಿರ್ಮಿಸಲು ಬಯಸುವ ಹೊಸ ರೆಗ್ರೆಶನ್ ಮಾದರಿಗಾಗಿ ಸ್ವಚ್ಛ ಮತ್ತು ನಿಖರವಾದ ಡೇಟಾ ಸೆಟ್ ಕಾಣಬಹುದು.
-### ಆದರೆ ಕಾಯಿರಿ! ಇಲ್ಲಿ ಒಂದು ವಿಚಿತ್ರ ವಿಷಯವಿದೆ
+### ಆದರೆ ಕಾಯಿರಿ! ಇಲ್ಲಿ ಒಂದು ವಿಚಿತ್ರ ಸಂಗತಿ ಇದೆ
-ನೀವು `Package` ಕಾಲಮ್ ನೋಡಿದರೆ, ಪಂಪ್ಕಿನ್ಗಳು ವಿವಿಧ ರೂಪಗಳಲ್ಲಿ ಮಾರಾಟವಾಗುತ್ತಿವೆ. ಕೆಲವು '1 1/9 bushel' ಅಳತೆಯಲ್ಲಿ, ಕೆಲವು '1/2 bushel' ಅಳತೆಯಲ್ಲಿ, ಕೆಲವು ಪ್ರತಿ ಪಂಪ್ಕಿನ್, ಕೆಲವು ಪ್ರತಿ ಪೌಂಡ್, ಮತ್ತು ಕೆಲವು ಬೃಹತ್ ಬಾಕ್ಸ್ಗಳಲ್ಲಿ ವಿವಿಧ ಅಗಲಗಳೊಂದಿಗೆ ಮಾರಾಟವಾಗುತ್ತವೆ.
+ನೀವು `Package` ಕಾಲಮ್ ನೋಡಿದರೆ, ಕುಮumbledಾಯಿಗಳನ್ನು ಹಲವಾರು ವಿಭಿನ್ನ ಸಂಯೋಜನೆಗಳಲ್ಲಿ ಮಾರಾಟ ಮಾಡಲಾಗುತ್ತದೆ. ಕೆಲವು '1 1/9 ಬಷೆಲ್' ಅಳತೆಗಳಲ್ಲಿ, ಕೆಲವು '1/2 ಬಷೆಲ್' ಅಳತೆಗಳಲ್ಲಿ, ಕೆಲವು ಪ್ರತಿ ಕುಮumbledಾಯಿ, ಕೆಲವು ಪ್ರತಿ ಪೌಂಡ್, ಮತ್ತು ಕೆಲವು ಬದಲಾಗುವ ಅಗಲದ ದೊಡ್ಡ ಬಾಕ್ಸ್ಗಳಲ್ಲಿ ಮಾರಲಾಗುತ್ತವೆ.
-> ಪಂಪ್ಕಿನ್ಗಳನ್ನು ಸತತವಾಗಿ ತೂಕಮಾಪನ ಮಾಡುವುದು ಬಹಳ ಕಷ್ಟ.
+> ಕುಮmbledಾಯಿಗಳನ್ನು ಸಮಾನವಾಗಿ ತೂಕ ಹಾಕುವುದು ಬಹಳ ಕಠಿಣವಾಗಿದೆ
-ಮೂಲ ಡೇಟಾವನ್ನು ಪರಿಶೀಲಿಸಿದಾಗ, `Unit of Sale` 'EACH' ಅಥವಾ 'PER BIN' ಆಗಿರುವ ಯಾವುದೇ ಐಟಂಗಳು `Package` ಪ್ರಕಾರ ಇಂಚು, ಬಿನ್ ಅಥವಾ 'each' ಆಗಿವೆ. ಪಂಪ್ಕಿನ್ಗಳನ್ನು ಸತತವಾಗಿ ತೂಕಮಾಪನ ಮಾಡುವುದು ಕಷ್ಟವಾಗುತ್ತದೆ, ಆದ್ದರಿಂದ ನಾವು `Package` ಕಾಲಮ್ನಲ್ಲಿ 'bushel' ಸ್ಟ್ರಿಂಗ್ ಇರುವ ಪಂಪ್ಕಿನ್ಗಳನ್ನು ಮಾತ್ರ ಆಯ್ಕೆಮಾಡಿ ಫಿಲ್ಟರ್ ಮಾಡೋಣ.
+ಮೂಲ ಡೇಟಾದಲ್ಲಿ, `Unit of Sale` 'EACH' ಅಥವಾ 'PER BIN' ಆಗಿದ್ದರೆ ಹಾಗೂ `Package` ಪ್ರಕಾರ ಇಂಚಿನ, ಬಿನ್ ಅಥವಾ 'ಪ್ರತಿ' ಎಂಬುದಾಗಿ ಇರುವುದು ಆಸಕ್ತಿದಾಯಕ. ಕುಮmbledಾಯಿಗಳನ್ನು ಸಮಾನವಾಗಿ ತೂಕ ಹಾಕುವುದು ಬಹಳ ಕಷ್ಟ, ಆದ್ದರಿಂದ `Package` ಕಾಲಮ್ನಲ್ಲಿ 'bushel' ಸ್ಟ್ರಿಂಗ್ ಇರುವ ಕುಮmbledಾಯಿಗಳನ್ನು ಮಾತ್ರ ಆಯ್ಕೆ ಮಾಡಿ ಫಿಲ್ಟರ್ ಮಾಡೋಣ.
-1. ಫೈಲ್ನ ಮೇಲ್ಭಾಗದಲ್ಲಿ, ಪ್ರಾಥಮಿಕ .csv ಆಮದುಮಾಡಿದ ನಂತರ ಫಿಲ್ಟರ್ ಸೇರಿಸಿ:
+1. ಪ್ರಾರಂಭದಲ್ಲಿ .csv ಆಮದುಮಾಡಿದ ಕೆಳಗೆ ಫೈಲ್ ಮೊದಲ ಭಾಗದಲ್ಲಿ ಫಿಲ್ಟರ್ ಸೇರಿಸಿ:
```python
pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]
```
- ನೀವು ಈಗ ಡೇಟಾವನ್ನು ಮುದ್ರಿಸಿದರೆ, ನೀವು ಬಸ್ಸೆಲ್ ಮೂಲಕ ಮಾರಾಟವಾಗುವ ಸುಮಾರು 415 ಸಾಲುಗಳ ಡೇಟಾವನ್ನು ಮಾತ್ರ ಪಡೆಯುತ್ತಿರುವಿರಿ ಎಂದು ಕಾಣಬಹುದು.
+ ಈಗ ನೀವು ಡೇಟಾ ಮುದ್ರಣ ಮಾಡಿದರೆ, ನೀವು ಫಿಲ್ಟರ್ ಮೂಲಕ ಸುಮಾರು 415 ಸಾಲುಗಳ ಕುಮumbledಾಯಿಗಳೇ ಕೇವಲ ಪಡೆಯುತ್ತೀರಿ.
-### ಆದರೆ ಕಾಯಿರಿ! ಇನ್ನೂ ಒಂದು ಕೆಲಸ ಮಾಡಬೇಕಿದೆ
+### ಆದರೆ ಕಾಯಿರಿ! ಇನ್ನೂ ಒಂದು ಕಾರ್ಯವಿದೆ
-ನೀವು ಗಮನಿಸಿದ್ದೀರಾ, ಬಸ್ಸೆಲ್ ಪ್ರಮಾಣವು ಪ್ರತಿ ಸಾಲಿಗೆ ಬದಲಾಗುತ್ತದೆ? ನೀವು ಬೆಲೆಯನ್ನು ಪ್ರತಿ ಬಸ್ಸೆಲ್ ಪ್ರಕಾರ ಸಾಮಾನ್ಯೀಕರಿಸಬೇಕಾಗುತ್ತದೆ, ಆದ್ದರಿಂದ ಅದನ್ನು ಮಾನಕೀಕರಿಸಲು ಕೆಲವು ಗಣಿತ ಮಾಡಿ.
+ನೀವು ಗಮನಿಸಿದ್ದೀರಾ ಬಷೆಲ್ ಪ್ರಮಾಣ ಪ್ರತಿ ಸಾಲಿನಲ್ಲಿ ಬದಲಾಗುತ್ತಿದೆ? ಬೆಲೆಗಳನ್ನು ಬಷೆಲ್ ಪ್ರತಿ ತೋರಿಸುವಂತೆ ಸಮಮಾರೀಕರಿಸಲು, ಅದರ ಪ್ರಕಾರ ಗಣಿತ ಮಾಡಿ ಸರಳಗೊಳಿಸಬೇಕು.
-1. ಹೊಸ `new_pumpkins` ಡೇಟಾಫ್ರೇಮ್ ರಚನೆಯ ನಂತರ ಈ ಸಾಲುಗಳನ್ನು ಸೇರಿಸಿ:
+1. ಹೊಸ `new_pumpkins` ಡೇಟಾಫ್ರೇಮ್ ನಿರ್ಮಾಣ ಭಾಗದ ನಂತರ ಈ ಸಾಲುಗಳನ್ನು ಸೇರಿಸಿ:
```python
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9)
@@ -134,38 +134,38 @@ Visual Studio Code ನಲ್ಲಿ _notebook.ipynb_ ಫೈಲ್ ತೆರೆಯ
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2)
```
-✅ [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) ಪ್ರಕಾರ, ಬಸ್ಸೆಲ್ ತೂಕವು ಉತ್ಪನ್ನದ ಪ್ರಕಾರ ಅವಲಂಬಿತವಾಗಿರುತ್ತದೆ, ಏಕೆಂದರೆ ಇದು ಪ್ರಮಾಣದ ಅಳತೆ. "ಉದಾಹರಣೆಗೆ, ಟೊಮೇಟೋಗಳ ಒಂದು ಬಸ್ಸೆಲ್ 56 ಪೌಂಡ್ ತೂಕವಾಗಿರಬೇಕು... ಎಲೆಗಳು ಮತ್ತು ಹಸಿರುಗಳು ಕಡಿಮೆ ತೂಕದೊಂದಿಗೆ ಹೆಚ್ಚು ಜಾಗವನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತವೆ, ಆದ್ದರಿಂದ ಸ್ಪಿನಾಚ್ನ ಒಂದು ಬಸ್ಸೆಲ್ ಕೇವಲ 20 ಪೌಂಡ್." ಇದು ಬಹಳ ಸಂಕೀರ್ಣವಾಗಿದೆ! ಬಸ್ಸೆಲ್-ನಿಂದ-ಪೌಂಡ್ ಪರಿವರ್ತನೆ ಮಾಡಲು ಪ್ರಯತ್ನಿಸದೆ, ಬಸ್ಸೆಲ್ ಪ್ರಕಾರ ಬೆಲೆಯನ್ನು ನಿರ್ಧರಿಸೋಣ. ಈ ಪಂಪ್ಕಿನ್ ಬಸ್ಸೆಲ್ ಅಧ್ಯಯನವು ನಿಮ್ಮ ಡೇಟಾದ ಸ್ವಭಾವವನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಎಷ್ಟು ಮುಖ್ಯವೋ ತೋರಿಸುತ್ತದೆ!
+✅ [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) ಪ್ರಕಾರ, ಬಷೆಲ್ ತೂಕವು ಉತ್ಪನ್ನ ಪ್ರಕಾರಕ್ಕೆ ಅನುಸಾರವಾಗಿದೆ ಏಕೆಂದರೆ ಅದು ಘನಮಾನ ಮಾಪನವಾಗಿದೆ. "ಉದಾಹರಣೆಗೆ, ಟೊಮೇಟೊ ಬಷೆಲ್ 56 ಪೌಂಡ್ ತೂಕ ಹೊಂದಿದೆ... ಅರಕಲೆ ಮತ್ತು ಹಸಿರುಗಳು ಕಡಿಮೆ ತೂಕದೊಂದಿಗೆ ಹೆಚ್ಚು ಸ್ಥಳವನ್ನು ಹಿಡಿದಿರುತ್ತವೆ, ಆದ್ದರಿಂದ ಸೊಪ್ಪಿನ ಬಷೆಲ್ ಕೇವಲ 20 ಪೌಂಡ್ ಇದೆ." ಇದು ಕೆಟ್ಟ ರೀತಿಯಲ್ಲಿ ಸಂಘಟಿತವಾಗಿದೆ! ಬಷೆಲ್ ನಿಂದ ಪೌಂಡ್ಸ್ ಗೆ ಪರಿವರ್ತನೆ ಮಾಡುವುದಕ್ಕೆ ಯತ್ನಿಸಬೇಡಿ, ಬದಲಾಗಿ ಬಷೆಲ್ ಪ್ರಕಾರ ಬೆಲೆ ನಿರ್ಧರಿಸಿ.ukumumbledಾಯಿಗಳ ಬಷೆಲ್ ಅಧ್ಯಯನವು ನಿಮ್ಮ ಡೇಟಾ ಸ್ವಭಾವವನ್ನು ತಿಳಿದುಕೊಂಡು ಹೆಚ್ಚಾಗಿ ಮಹತ್ವವನ್ನು ಪ್ರತಿಪಾದಿಸುತ್ತದೆ!
-ಈಗ, ನೀವು ಬಸ್ಸೆಲ್ ಅಳತೆಯ ಆಧಾರದ ಮೇಲೆ ಪ್ರತಿ ಘಟಕದ ಬೆಲೆಯನ್ನು ವಿಶ್ಲೇಷಿಸಬಹುದು. ನೀವು ಡೇಟಾವನ್ನು ಮತ್ತೊಮ್ಮೆ ಮುದ್ರಿಸಿದರೆ, ಅದು ಹೇಗೆ ಮಾನಕೀಕೃತವಾಗಿದೆ ಎಂದು ಕಾಣಬಹುದು.
+ಈಗ, ನಿಮ್ಮ ಸಮಾಜೀಕೃತ ಬಷೆಲ್ ಅಳತೆ ಆಧಾರದ ಮೇಲೆ ಪ್ರತಿ ಘಟಕದ ಬೆಲೆಯನ್ನು ವಿಶ್ಲೇಷಿಸಬಹುದು. ನೀವು ಡೇಟಾವನ್ನು ಮತ್ತೊಮ್ಮೆ ಮುದ್ರಣ ಮಾಡಿದರೆ, ಅವು ಹೇಗಿದ್ದಾಳೆ ಎಂಬುದನ್ನು ಚಿತ್ರಿಸಬಹುದು.
-✅ ನೀವು ಗಮನಿಸಿದ್ದೀರಾ, ಅರ್ಧ ಬಸ್ಸೆಲ್ ಮೂಲಕ ಮಾರಾಟವಾಗುವ ಪಂಪ್ಕಿನ್ಗಳು ಬಹಳ ದುಬಾರಿ? ನೀವು ಏಕೆ ಎಂದು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬಹುದೇ? ಸೂಚನೆ: ಸಣ್ಣ ಪಂಪ್ಕಿನ್ಗಳು ದೊಡ್ಡದಿಗಿಂತ ಬಹಳ ಹೆಚ್ಚು ಬೆಲೆಯಿವೆ, ಬಹುಶಃ ಒಂದು ದೊಡ್ಡ ಹೊಳೆಯುವ ಪೈ ಪಂಪ್ಕಿನ್ ತೆಗೆದುಕೊಳ್ಳುವ ಅನವಶ್ಯಕ ಜಾಗದಿಂದಾಗಿ ಪ್ರತಿ ಬಸ್ಸೆಲ್ನಲ್ಲಿ ಅವುಗಳ ಸಂಖ್ಯೆ ಹೆಚ್ಚು ಇರುವ ಕಾರಣ.
+✅ ನೀವು ಗಮನಿಸಿದ್ದೀರಾ ಅರ್ಧ-ಬಷೆಲ್ ಮೂಲಕ ಮಾರಾಟವಾಗುವ ಕುಮumbledಾಯಿಗಳು ಬಹಳ ದುಬಾರಿ? ಏಕೆಂದು ಕಾಣಿಸುತ್ತಿದೆ? ಸೂಚನೆ: ಸಣ್ಣ ಕುಮumbledಾಯಿಗಳು ದೊಡ್ಡವಕ್ಕಿಂತ ಹೆಚ್ಚು ಬೆಲೆಯಿದ್ದ್ದುವೇ, ಬಹುಶಃ ಒಂದು ದೊಡ್ಡ ಹೊಲುಗೆ ಕುಂಭಳಕಾಯಿಯ ತುಂಬಾ ಅನ್ವಯಿಸದ ಸ್ಥಾನದಿಂದಾಗಿ ಪ್ರತಿ ಬಷೆಲ್ ಹೆಚ್ಚು ಸಣ್ಣಗಳು ಇರುತ್ತವೆ.
## ದೃಶ್ಯೀಕರಣ ತಂತ್ರಗಳು
-ಡೇಟಾ ವಿಜ್ಞಾನಿಯ ಪಾತ್ರದ ಒಂದು ಭಾಗವೆಂದರೆ ಅವರು ಕೆಲಸ ಮಾಡುತ್ತಿರುವ ಡೇಟಾದ ಗುಣಮಟ್ಟ ಮತ್ತು ಸ್ವಭಾವವನ್ನು ಪ್ರದರ್ಶಿಸುವುದು. ಇದಕ್ಕಾಗಿ, ಅವರು ವಿವಿಧ ಅಂಶಗಳನ್ನು ತೋರಿಸುವ ಆಸಕ್ತಿದಾಯಕ ದೃಶ್ಯೀಕರಣಗಳು, ಪ್ಲಾಟ್ಗಳು, ಗ್ರಾಫ್ಗಳು ಮತ್ತು ಚಾರ್ಟ್ಗಳನ್ನು ಸೃಷ್ಟಿಸುತ್ತಾರೆ. ಈ ರೀತಿಯಲ್ಲಿ, ಅವರು ದೃಶ್ಯವಾಗಿ ಸಂಬಂಧಗಳು ಮತ್ತು ಗ್ಯಾಪ್ಗಳನ್ನು ತೋರಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ, ಅವುಗಳನ್ನು ಬೇರೆ ರೀತಿಯಲ್ಲಿ ಕಂಡುಹಿಡಿಯುವುದು ಕಷ್ಟ.
+ಡೇಟಾ ವಿಜ್ಞಾನಿಯ ಪಾತ್ರದ ಒಂದು ಭಾಗವು ಅವರು ಕೆಲಸ ಮಾಡುವ ಡೇಟಾದ ಗುಣಮಟ್ಟ ಮತ್ತು ಸ್ವಭಾವವನ್ನು ಪ್ರದರ್ಶಿಸುವದು. ಇದಕ್ಕಾಗಿ, ಅವರು ಬಗೆಬಗೆಯ ದೃಶ್ಯೀಕರಣಗಳನ್ನು, ಅಥವಾ ಪ್ಲಾಟ್, ಗ್ರಾಫ್ ಮತ್ತು ಚಾರ್ಟ್ಗಳನ್ನು ಸೃಷ್ಟಿಸುತ್ತಾರೆ, ಡೇಟಾದ ವಿವಿಧ ಮೂಲಭೂತ ಅಂಶಗಳನ್ನು ತೋರಿಸುವದು. ಈ ಮೂಲಕ ಅವರು ದೃಶ್ಯಾತ್ಮಕವಾಗಿ ಸಂಬಂಧಗಳು ಮತ್ತು ಲೋಪಗಳನ್ನು ತೋರಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ.
-[](https://youtu.be/SbUkxH6IJo0 "ML for beginners - How to Visualize Data with Matplotlib")
+[](https://youtu.be/SbUkxH6IJo0 "ಯಾಂತ್ರಿಕ ಕಲಿಕೆಯ ಆರಂಭಿಕರಿಗಾಗಿ - Matplotlib ಬಳಸಿ ಡೇಟಾ ದೃಶ್ಯೀಕರಣ")
-> 🎥 ಈ ಪಾಠಕ್ಕಾಗಿ ಡೇಟಾ ದೃಶ್ಯೀಕರಣವನ್ನು ತೋರಿಸುವ ಚಿಕ್ಕ ವೀಡಿಯೋಗಾಗಿ ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ.
+> 🎥 ಈ ಪಾಠದ ಡೇಟಾವನ್ನು ದೃಶ್ಯೀಕರಿಸುವ ಸಂಕ್ಷಿಪ್ತ ವೀಡಿಯೋದಕ್ಕೆ ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ.
-ದೃಶ್ಯೀಕರಣಗಳು ಡೇಟಾದಿಗೆ ಅತ್ಯಂತ ಸೂಕ್ತ ಯಂತ್ರ ಅಧ್ಯಯನ ತಂತ್ರವನ್ನು ನಿರ್ಧರಿಸಲು ಸಹಾಯ ಮಾಡಬಹುದು. ಉದಾಹರಣೆಗೆ, ಒಂದು ಸ್ಕ್ಯಾಟರ್ಪ್ಲಾಟ್ ಒಂದು ರೇಖೆಯನ್ನು ಅನುಸರಿಸುವಂತೆ ತೋರುತ್ತದೆ ಎಂದರೆ, ಡೇಟಾ ಲೀನಿಯರ್ ರೆಗ್ರೆಶನ್ ಅಭ್ಯಾಸಕ್ಕೆ ಉತ್ತಮ ಅಭ್ಯರ್ಥಿ ಎಂದು ಸೂಚಿಸುತ್ತದೆ.
+ದೃಶ್ಯೀಕರಣಗಳು ಡೇಟಾ ಪ್ರಕಾರಕ್ಕೆ ಅನುಗುಣವಾದ ಯಂತ್ರ ಕಲಿಕೆಯ ತಂತ್ರವನ್ನು ನಿರ್ಧರಿಸಲು ಸಹಾಯ ಮಾಡಬಹುದು. ಉದಾಹರಣೆಗೆ, ರೇಖೆಯನ್ನು ಅನುಸರಿಸುವಂತೆ Scatterplot ಇದ್ದರೆ, ಡೇಟಾ ಲೀನಿಯರ್ ರೆಗ್ರೆಶನ್ ಅಭ್ಯಾಸಕ್ಕೆ ಉತ್ತಮ ಅಭ್ಯರ್ಥಿ ಎಂದು ಸೂಚಿಸುತ್ತದೆ.
-Jupyter ನೋಟ್ಬುಕ್ಗಳಲ್ಲಿ ಚೆನ್ನಾಗಿ ಕೆಲಸ ಮಾಡುವ ಒಂದು ಡೇಟಾ ದೃಶ್ಯೀಕರಣ ಲೈಬ್ರರಿ [Matplotlib](https://matplotlib.org/) ಆಗಿದೆ (ನೀವು ಹಿಂದಿನ ಪಾಠದಲ್ಲಿಯೂ ಇದನ್ನು ನೋಡಿದ್ದೀರಿ).
+ಜ್ಯೂಪಿಟರ್ ನೋಟ್ಬುಕ್ಗಳಲ್ಲಿ ಉತ್ತಮವಾಗಿ ಕೆಲಸ ಮಾಡುವ ಒಂದು ಡೇಟಾ ದೃಶ್ಯೀಕರಣ ಗ್ರಂಥಾಲಯ [Matplotlib](https://matplotlib.org/) (ಹಿಂದಿನ ಪಾಠದಲ್ಲಿಯೂ ನೀವು ನೋಡಿ) ಆಗಿದೆ.
-> [ಈ ಟ್ಯುಟೋರಿಯಲ್ಗಳಲ್ಲಿ](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott) ಡೇಟಾ ದೃಶ್ಯೀಕರಣದ ಬಗ್ಗೆ ಹೆಚ್ಚಿನ ಅನುಭವ ಪಡೆಯಿರಿ.
+> ಡೇಟಾ ದೃಶ್ಯೀಕರಣದಲ್ಲಿ ಹೆಚ್ಚಿನ ಅನುಭವ ಪಡೆಯಲು [ಈ ತರಬೇತಿಭಾಗಗಳನ್ನು](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott) ನೋಡಿರಿ.
-## ಅಭ್ಯಾಸ - Matplotlib ಜೊತೆ ಪ್ರಯೋಗ ಮಾಡಿ
+## ವ್ಯಾಯಾಮ - Matplotlib ತಂಡದಲ್ಲಿ ಪ್ರಯೋಗ
-ನೀವು ಈಗ ರಚಿಸಿದ ಹೊಸ ಡೇಟಾಫ್ರೇಮ್ ಅನ್ನು ಪ್ರದರ್ಶಿಸಲು ಕೆಲವು ಮೂಲ ಪ್ಲಾಟ್ಗಳನ್ನು ರಚಿಸಲು ಪ್ರಯತ್ನಿಸಿ. ಮೂಲ ರೇಖಾ ಪ್ಲಾಟ್ ಏನು ತೋರಿಸುತ್ತದೆ?
+ನೀವುเพ ಉತ್ಪಾದಿಸಿದ ಹೊಸ ಡೇಟಾಫ್ರೇಮ್ ಪ್ರದರ್ಶಿಸಲು ಕೆಲವು ಮೂಲ ಪ್ಲಾಟ್ ರಚಿಸಲು ಪ್ರಯತ್ನಿಸಿ. ಮೂಲ ರೇಖಾ ಪ್ಲಾಟ್ ಯಾವುದನ್ನು ತೋರಿಸುತ್ತದೆ?
-1. ಫೈಲ್ನ ಮೇಲ್ಭಾಗದಲ್ಲಿ, Pandas ಆಮದುಮಾಡಿದ ನಂತರ Matplotlib ಅನ್ನು ಆಮದುಮಾಡಿ:
+1. ಫೈಲ್ ಮೇಲ್ಭಾಗದಲ್ಲಿ, Pandas ಆಮದುಮಾಡಿದ ತಲೆಯಡಿಯಲ್ಲಿ Matplotlib import ಮಾಡಿ:
```python
import matplotlib.pyplot as plt
```
-1. ಸಂಪೂರ್ಣ ನೋಟ್ಬುಕ್ ಅನ್ನು ಮರುನಡೆಸಿ.
-1. ನೋಟ್ಬುಕ್ನ ಕೆಳಭಾಗದಲ್ಲಿ, ಡೇಟಾವನ್ನು ಬಾಕ್ಸ್ ಆಗಿ ಪ್ಲಾಟ್ ಮಾಡಲು ಒಂದು ಸೆಲ್ ಸೇರಿಸಿ:
+1. ಸಂಪೂರ್ಣ ನೋಟ್ಬುಕ್ ಮರುಚಲಾಯಿಸಿ.
+1. ನೋಟ್ಬುಕ್ ಕೆಳಭಾಗದಲ್ಲಿ, ಡೇಟಾವನ್ನು ಬಾಕ್ಸ್ ಆಗಿ ಪ್ಲಾಟ್ ಮಾಡಲು ಸೆಲ್ ಸೇರಿಸಿ:
```python
price = new_pumpkins.Price
@@ -174,46 +174,121 @@ Jupyter ನೋಟ್ಬುಕ್ಗಳಲ್ಲಿ ಚೆನ್ನಾಗಿ
plt.show()
```
- 
+ 
- ಇದು ಉಪಯುಕ್ತವಾದ ಪ್ಲಾಟ್ ಆಗಿದೆಯೇ? ಇದರಲ್ಲಿ ಏನಾದರೂ ನಿಮಗೆ ಆಶ್ಚರ್ಯಕರವೇ?
+ ಇದು ಉಪಯುಕ್ತವಾದ ಪ್ಲಾಟ್ ಇದೆಯೆ? ಇದರಿಂದ ಏನಾದರೂ ಆಶ್ಚರ್ಯವಾಯಿತು?
- ಇದು ವಿಶೇಷವಾಗಿ ಉಪಯುಕ್ತವಲ್ಲ, ಏಕೆಂದರೆ ಇದು ನಿಮ್ಮ ಡೇಟಾವನ್ನು ನಿಗದಿತ ತಿಂಗಳಲ್ಲಿ ಬಿಂದುಗಳ ವಿಸ್ತಾರವಾಗಿ ಮಾತ್ರ ಪ್ರದರ್ಶಿಸುತ್ತದೆ.
+ ಇದು ವಿಶೇಷ ಉಪಯುಕ್ತವಲ್ಲ, ಏಕೆಂದರೆ ಇದು ನಿಮ್ಮ ಡೇಟಾವನ್ನು ತಿಂಗಳಿಗೆ ಬಿಂದುಗಳ ರೂಪದಲ್ಲಿ ತೋರಿಸುವಷ್ಟೇ ಮಾಡುತ್ತದೆ.
-### ಅದನ್ನು ಉಪಯುಕ್ತವಾಗಿಸೋಣ
+### ಉಪಯುಕ್ತವಾಗಿಸಿ
-ಉಪಯುಕ್ತ ಡೇಟಾ ಪ್ರದರ್ಶನಕ್ಕಾಗಿ, ನೀವು ಸಾಮಾನ್ಯವಾಗಿ ಡೇಟಾವನ್ನು ಗುಂಪುಮಾಡಬೇಕಾಗುತ್ತದೆ. ತಿಂಗಳುಗಳನ್ನು y ಅಕ್ಷದಲ್ಲಿ ತೋರಿಸುವ ಮತ್ತು ಡೇಟಾ ವಿತರಣೆ ತೋರಿಸುವ ಪ್ಲಾಟ್ ರಚಿಸಲು ಪ್ರಯತ್ನಿಸೋಣ.
+ಉಪಯುಕ್ತ ಡೇಟಾವನ್ನು ತೋರಿಸಲು, நீங்கள் ಸಾಮಾನ್ಯವಾಗಿ ಡೇಟಾವನ್ನು ಗುಂಪು ಮಾಡಬೇಕಾಗುತ್ತದೆ. ತಿಂಗಳುಗಳು y ಅಕ್ಷದಲ್ಲಿ ತೋರಿಸುವ ಮತ್ತು ಡೇಟಾ ವಿತರಣೆ ತೋರಿಸುವ ಗುಂಪುಮಾಡಲಾದ ಬಾರ್ ಚಾರ್ಟ್ ಸೃಷ್ಟಿಸಿ ಪ್ರಯತ್ನಿಸೋಣ.
-1. ಗುಂಪುಮಾಡಲಾದ ಬಾರ್ ಚಾರ್ಟ್ ರಚಿಸಲು ಒಂದು ಸೆಲ್ ಸೇರಿಸಿ:
+1. ಗುಂಪು ಮಾಡಿದ ಬಾರ್ ಚಾರ್ಟ್ ಸೃಷ್ಟಿಸಲು ಸೆಲ್ ಸೇರಿಸಿ:
```python
new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar')
plt.ylabel("Pumpkin Price")
```
- 
+ 
+
+ ಇದು ಹೆಚ್ಚು ಉಪಯುಕ್ತ ಡೇಟಾ ದೃಶ್ಯೀಕರಣವಾಗಿದೆ! ಇದು সেপ্টೆಂಬರ್ ಮತ್ತು ಅಕ್ಟೋಬರ್ ತಿಂಗಳಲ್ಲಿ ಕುಮumbledಾಯಿಗಳ ಗರಿಷ್ಠ ಬೆಲೆ ಇರುತ್ತದೆ ಎಂದು ಸೂಚಿಸುತ್ತದೆ. ಇದು ನಿಮ್ಮ ನಿರೀಕ್ಷೆಯನ್ನು ಪೂರೈಸುತ್ತದೆಯೆ? ಏಕೆ ಅಥವಾ ಪ್ರಯೋಜನವಿಲ್ಲವೇ?
+
+## ವ್ಯಾಯಾಮ - Seaborn ಬಳಸಿ ಪ್ರಯೋಗ
+
+Matplotlib ಶಕ್ತಿಯುತವಾಗಿದೆ, ಆದರೆ ಉತ್ತಮ ಸ್ವರೂಪದ ಚಾರ್ಟ್ ಉತ್ಪಾದಿಸಲು ನೂರಾರು ಸಾಲುಗಳ ಕೋಡ್ ಬೇಕಾಗಬಹುದು. [Seaborn](https://seaborn.pydata.org/) Matplotlib ಮٿ್ಭಾಗದಲ್ಲಿ ನಿರ್ಮಿಸಿರುವ ಗ್ರಂಥಾಲಯ, ಇದು ಸಾಂಖ್ಯಿಕ ಡೇಟಾ ದೃಶ್ಯೀಕರಣಕ್ಕಾಗಿ ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ. ಇದು ನೇರವಾಗಿ Pandas ಡೇಟಾಫ್ರೇಮ್ಗಳ ಜೊತೆಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ, ಆಕರ್ಷಕ ಡೀಫಾಲ್ಟ್ ಶೈಲಿಗಳನ್ನು ಅನ್ವಯಿಸುತ್ತದೆ ಮತ್ತು ಕಡಿಮೆ ಕೋಡ್ನಲ್ಲಿ ಮಾಹಿತಿ ಫಲಕಗಳನ್ನು ರಚಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. Seaborn Matplotlib ವಸ್ತುಗಳನ್ನು ಹಿಂತಿರುಗಿಸುವುದರಿಂದ, Matplotlib ಬಗ್ಗೆ ನೀವು ಈಗಾಗಲೇ ತಿಳಿದುಕೊಂಡಿರುವುದನ್ನು ಬಳಸಿ ಫಲಿತಾಂಶವನ್ನು ನಿರ್ವಹಿಸಬಹುದು.
+
+> ನೀವು ಇನ್ಸ್ಟಾಲ್ ಮಾಡದಿದ್ದರೆ, `pip install seaborn` ಬಳಸಿ Seaborn ಅನ್ನು ಸ್ಥಾಪಿಸಿರಿ.
+
+1. ನೋಟ್ಬುಕ್ ಮೇಲ್ಭಾಗದಲ್ಲಿ, ಇತರ ಆಮದುಗಳ ಕೆಳಗೆ Seaborn import ಮಾಡಿ. ಸಾಂಪ್ರದಾಯಿಕವಾಗಿ `sns` ಎಂದು import ಮಾಡಲಾಗುತ್ತದೆ:
+
+ ```python
+ import seaborn as sns
+ ```
+
+### ಸಂಬಂಧಗಳನ್ನು ತೋರಿಸಲು Scatter ಪ್ಲಾಟ್ಗಳು
+
+ಮಾದರಿ ನಿರ್ಮಿಸಲು ಡೇಟಾ ಅನ್ವೇಷಣೆಯ ದೊಡ್ಡ ಭಾಗವು ಚರಪರಿಮಾಣಗಳ ನಡುವಿನ _ಸಂಬಂಧಗಳನ್ನು_ ಹುಡುಕುವುದು. [Scatter ಪ್ಲಾಟ್](https://en.wikipedia.org/wiki/Scatter_plot) ಅತ್ಯುತ್ತಮ ಸಾಧನಗಳಲ್ಲಿ ಒಂದು: ಬಿಂದುಗಳು ಒಂದು ರೇಖೆಯನ್ನು ಅನುಸರಿಸಿದರೆ, ಎರಡು ಚರಪರಿಮಾಣಗಳ ನಡುವಿನ ಸಂಬಂಧವಿರಬಹುದು, ಇದು ಲೀನಿಯರ್ ರೆಗ್ರೆಶನ್ ಮಾದರಿಯನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಒಳ್ಳೆಯ ಸೂಚನೆ.
+
+1. ಹಿಂದಿನ ಬೆಲೆ-ಮಾಸ Scatter ಪ್ಲಾಟ್ ಅನ್ನು Seaborn's [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) ಬಳಸಿ ಮರುರಚಿಸಿ. ಇದು ನೇರವಾಗಿ ನಿಮ್ಮ ಡೇಟಾಫ್ರೇಮ್ ಕಾಲಮ್ಗಳ ಜೊತೆಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ:
+
+ ```python
+ sns.relplot(x="Price", y="Month", data=new_pumpkins)
+ ```
+
+ 
+
+ ನೀವು ಹೇಗೆ ಕಾಲಮ್ ಹೆಸರುಗಳನ್ನು ಮತ್ತು ಡೇಟಾಫ್ರೇಮ್ ಅನ್ನು ಪಾಸ್ ಮಾಡುತ್ತೀರಿ ಮತ್ತು Seaborn ಅಕ್ಷಲಾಕಾಂಶದ ಲೇಬಲ್ಗಳನ್ನು ಸಂಭಾಳಿಸುತ್ತದೆ ಎಂದು ಗಮನಿಸಿ.
+
+2. `kind="line"` ಪ್ಯಾರಾಮೀಟರ್ ಪಾಸ್ ಮಾಡುವ ಮೂಲಕ ನೀವು ಲೈನ್ ಪ್ಲಾಟ್ಗೆ ಬದಲಿಸಬಹುದು. Seaborn ರೇಖೆಯ ಸುತ್ತಲೂ ವಿಶ್ವಾಸ ಅಂತರವನ್ನು ತೋರಿಸುವ ಛಾಯಿತೆ Band ಅನ್ನು ಕೂಡ ರೇಖಿಸುತ್ತದೆ:
+
+ ```python
+ sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins)
+ ```
+
+ 
+
+ ಈ ವಿಶೇಷ ಡೇಟಾ ತುಂಬಾ ಗದ್ದಲವಾಗಿದೆ, ಆದ್ದರಿಂದ ಲೈನ್ ಪ್ಲಾಟ್ ಸ್ಪಷ್ಟವಾದ ಆಯ್ಕೆ ಅಲ್ಲ — ಆದರೆ ಇದರಿಂದ ನೀವು Seaborn ನಲ್ಲಿ ಚಾರ್ಟ್ ಗತಿಗಳನ್ನು ಎಷ್ಟು ಸುಲಭವಾಗಿ ಬದಲಾಯಿಸಬಹುದು ಎಂದು ತೋರಿಸುತ್ತದೆ.
+
+### ವಿತರಣೆ ತೋರಿಸಲು ಬಾರ್ ಚಾರ್ಟ್ಗಳು
+
+
+ಮೊದಲು ನೀವು ಮ್ಯಾಟ್ಪ್ಲಾಟ್ಲಿಬ್ ಬಳಸಿ ಕೈಯಿಂದ ಡೇಟಾವನ್ನು ಗುಂಪು ಮಾಡಿಕೊಂಡು ಬಾರ್ ಚಾರ್ಟ್ ಸೃಷ್ಠಿಸಿದ್ದಿರಿ. ಸೀಬೋನ್ನ [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) (ಶ್ರೇಣೀಬದ್ಧ ಚಾರ್ಟ್) ನಿಮಗಾಗಿ ಗುಂಪುಮಾಡುವ ಮತ್ತು ಸಂಗ್ರಹಿಸುವ ಕಾರ್ಯವನ್ನು ಮಾಡಬಲ್ಲದು. ಡೀಫಾಲ್ಟ್ ಆಗಿ `kind="bar"` ಪ್ರತಿ ವರ್ಗದ ಸರಾಸರಿ ಹಾಗೂ ನಂಬಿಕೆ ಅವಧಿಯನ್ನು ಸೂಚಿಸುವ ಕಪ್ಪು ಹಂತವನ್ನು ತೋರಿಸುತ್ತದೆ.
+
+1. ಪ್ರತಿ ತಿಂಗಳ ಸರಾಸರಿ ಬೆಲೆಯ ಬಾರ್ ಚಾರ್ಟ್ ಸೃಷ್ಟಿಸಿ:
+
+ ```python
+ sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar")
+ ```
+
+ 
+
+ ಇದರಿಂದ ನೀವು ಮ್ಯಾಟ್ಪ್ಲಾಟ್ಲಿಬ್ ನಲ್ಲಿ ನೋಡಿದದ್ದೇ ಖಚಿತವಾಗುತ್ತದೆ — ಬೆಲೆಗಳು ಸೆಪ್ಟೆಂಬರ್ ಮತ್ತು ಅಕ್ಟೋಬರ್ ನಲ್ಲಿ ಶಿಖರ ಪ್ರವೇಶಿಸುತ್ತವೆ — ಆದರೆ ಸೀಬೋನ್ ಪ್ರತಿ ತಿಂಗಳು ಒಳಗಿನ ಬೆಲೆ ಏನೆಷ್ಟಾಗಿ _ಬದಲಾಗುತ್ತದೆ_ ಎಂಬುದನ್ನೂ ದೃಶ್ಯಾವಧಾ ಮಾಡುತ್ತದೆ.
+
+### ಹೀಟ್ಮ್ಯಾಪ್ ಮೂಲಕ ವಿಷಯಗಳ ಸಂಬಂಧ ತೋರಿಸುವುದು
+
+ಸ್ಕ್ಯಾಟರ್ ಪ್ಲಾಟ್ಗಳು ಎರಡು ಚರಗಳನ್ನು ಹೊಂದುತ್ತವೆ. ನೀವು ಹಲವು ಸಂಖ್ಯಾತ್ಮಕ ಕಾಲಮ್ಗಳು ಇದ್ದಾಗ, [ಹೀಟ್ಮ್ಯಾಪ್](https://en.wikipedia.org/wiki/Heat_map) ಪ್ರತಿ ಕಾಲಮ್ ಜೋಡಿಗಳ ಸಂಬಂಧದ ಬಲವನ್ನು ಒಟ್ಟಿಗೆ ನೋಡುವುದಕ್ಕೆ ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಇದು ಯಾವುದೇ ಮಾದರಿಯಲ್ಲಿ ಯಾವ ಲಕ್ಷಣಗಳು ಹೆಚ್ಚು ಸಂಬಂಧಿತವೋ、それೆಯಾದ ಮೇಲೆ ಆಯ್ಕೆಮಾಡುವುದು ಎಂದು ಕಾಣಿಸಲು ಸಾಮಾನ್ಯ ವಿಧಾನವಾಗಿದೆ (ಮತ್ತು ಮುಂದಿನಂತ classification ನಲ್ಲಿ ಗೊಂದಲ ಮ್ಯಾಟ್ರಿಕ್ಸ್ ತೋರಿಸಲು ಇದೇ ರೀತಿಯ ಚಾರ್ಟ್ ಬಳಸಲಾಗುತ್ತದೆ).
+
+1. ಪಾಂಡಾಸ್ ಬಳಸಿ ಸಂಬಂಧ ಮ್ಯಾಟ್ರಿಕ್ಸ್ ರಚಿಸಿ, ನಂತರ ಸೀಬೋನ್ನ [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html) ಬಳಸಿ ಅದನ್ನು ಚಿತ್ರಿಸಿ. `annot=True` ಆಯ್ಕೆಯು ಪ್ರತಿ ಸೆಲ್ ಮೇಲೆ ಸಂಬಂಧ ಮೌಲ್ಯಗಳನ್ನು ಮುದ್ರಿಸುತ್ತದೆ:
+
+ ```python
+ correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()
+ sns.heatmap(correlations, annot=True, cmap="coolwarm")
+ ```
+
+ 
+
+ `1` (ಅಥವಾ `-1`) ಗೆ ತುಂಬಾ ಹತ್ತಿರದ ಮೌಲ್ಯಗಳು ಕಾಲಮ್ಗಳು ಬಲವಾಗಿ _ಸರಳರೇಖಿಕವಾಗಿ_ ಸಂಬಂಧಿತವಿರುವುದನ್ನು ಸೂಚಿಸುತ್ತವೆ. `Low Price` ಮತ್ತು `High Price` ಬಹಳಷ್ಟು ಸಮನಾಗಿ ಸಂಬಂಧಿತವೆಂದು ಗಮನಿಸಿ. ಇದಕ್ಕೆ ವಿರುದ್ಧವಾಗಿ, `Month` ಬೆಲೆಯೊಂದಿಗೆ ಬಹುಷ್ಟು ದುರ್ಬಲ ಸರಳರೆಖ್ಯಿಕ ಸಂಬಂಧ ತೋರಿಸುತ್ತದೆ — ಮೇಲಿನ ಬಾರ್ ಚಾರ್ಟ್ ಸೆಪ್ಟೆಂಬರ್ ಮತ್ತು ಅಕ್ಟೋಬರ್ನಲ್ಲಿ ಸ್ಪಷ್ಟ ಋತು ಸಂಕೇತ ತೋರಿಸಿದರೂ ಸಹ. ಇದು ಮುಖ್ಯ ಪಾಠ: ಸಂಬಂಧ коэффициಂಟ್ _ಸರಳರೇಖೆಯ_ ಸಂಬಂಧಗಳನ್ನು ಮಾತ್ರ ಅಳೆಯುತ್ತದೆ, ಆದ್ದರಿಂದ ಋತು ಅಥವಾ ಇತರ ಅಸರಳರೇಖೀಯ ಮಾದರಿಗಳನ್ನು ಕಡೆಗಣಿಸುವದು. ✅ ತೀರ್ಮಾನಿಸುವ ಮುಂಚೆಯೇ ಬಾರ್ ಚಾರ್ಟ್ ಹಾಗು ಹೀಟ್ಮ್ಯಾಪ್ ಎರಡನ್ನೂ ನೋಡಿಕೊಳ್ಳುವುದು ಯಾಕೆ ಉಪಯುಕ್ತ?
+
+### ಮ್ಯಾಟ್ಪ್ಲಾಟ್ಲಿಬ್ ಅಥವಾ ಸೀಬೋನ್?
+
+ಇಬ್ಬರೂ ಗ್ರಂಥಾಲಯಗಳನ್ನು ತಿಳಿದುಕೊಳ್ಳುವುದು ಉತ್ತಮ:
+
+- **ಮ್ಯಾಟ್ಪ್ಲಾಟ್ಲಿಬ್** ಪ್ರತಿ ಚಾರ್ಟ್ ಅಂಶದ ಮೇಲೆ ನಿಖರ ನಿಯಂತ್ರಣ ಒದಗಿಸುತ್ತದೆ ಮತ್ತು ಬಹುತೆಕ ಇತರ ಪೈಥಾನ್ ಪ್ಲಾಟ್ ಲೈಬ್ರರಿಗಳ ಮೂಲವಾಗಿದೆ.
+- **ಸೀಬೋನ್** ಸಾಂಖ್ಯಿಕ ಚಾರ್ಟ್ಗಾಗಿ ಮೇಲ್ಮಟ್ಟದ ಕಾರ್ಯಗಳು ಮತ್ತು ಆಕರ್ಷಕ ಮೂಲಭೂತಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ, ಡೇಟಾಫ್ರೇಮ್ಗಳೊಂದಿಗೆ ನೇರವಾಗಿ ಕೆಲಸ ಮಾಡುತ್ತದೆ ಮತ್ತು ಅನ್ವೇಷಣಾ ವಿಶ್ವಲೇಕ್ಷಣೆಗೆ ವೇಗವಾಗಿ ಒದಗುತ್ತದೆ.
- ಇದು ಹೆಚ್ಚು ಉಪಯುಕ್ತ ಡೇಟಾ ದೃಶ್ಯೀಕರಣ! ಇದು ಪಂಪ್ಕಿನ್ಗಳ ಅತ್ಯಧಿಕ ಬೆಲೆ ಸೆಪ್ಟೆಂಬರ್ ಮತ್ತು ಅಕ್ಟೋಬರ್ ತಿಂಗಳಲ್ಲಿ ಸಂಭವಿಸುತ್ತದೆ ಎಂದು ಸೂಚಿಸುತ್ತದೆ. ಇದು ನಿಮ್ಮ ನಿರೀಕ್ಷೆಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆಯೇ? ಏಕೆ ಅಥವಾ ಏಕೆ ಅಲ್ಲ?
+ಸಾಮಾನ್ಯವಾಗಿ ಸೀಬೋನ್ಗೆ ಸಹಾಯಕ್ಕಾಗಿ ದಾರಿ ಹಿಡಿದು ಡೇಟಾ ಅನ್ವೇಷಣೆ ಮಾಡುವುದಾದರೂ, ವಿವರಗಳನ್ನು ಕಸ್ಟಮೈಸ್ ಮಾಡಬೇಕಾದರೆ ನಂತರ ಮ್ಯಾಟ್ಪ್ಲಾಟ್ ಲಿಬ್ ಬಳಕೆ ಮಾಡಲಾಗುತ್ತದೆ.
---
## 🚀ಸವಾಲು
-Matplotlib ನೀಡುವ ವಿವಿಧ ದೃಶ್ಯೀಕರಣ ಪ್ರಕಾರಗಳನ್ನು ಅನ್ವೇಷಿಸಿ. ರೆಗ್ರೆಶನ್ ಸಮಸ್ಯೆಗಳಿಗೆ ಯಾವ ಪ್ರಕಾರಗಳು ಅತ್ಯಂತ ಸೂಕ್ತ?
+ಮ್ಯಾಟ್ಪ್ಲಾಟ್ ಲಿಬ್ ಮತ್ತು ಸೀಬೋನ್ ಒದಗಿಸುವ ವಿಭಿನ್ನ ದೃಶ್ಯೀಕರಣ ಮಾದರಿಗಳನ್ನು ಅನ್ವೇಷಿಸಿ. ಪ್ರತಿಗಮನ ಸಮಸ್ಯೆಗಳಿಗೆ ಯಾವ ಪ್ರಕಾರಗಳು ಅತರಿಸುತ್ತವೆ?
-## [ಪೋಸ್ಟ್-ಪಾಠ ಕ್ವಿಜ್](https://ff-quizzes.netlify.app/en/ml/)
+## [ಕಲಿಕೆಗೆ ನಂತರದ ಪ್ರಶ್ನೋತ್ತರ](https://ff-quizzes.netlify.app/en/ml/)
## ವಿಮರ್ಶೆ ಮತ್ತು ಸ್ವಯಂ ಅಧ್ಯಯನ
-ಡೇಟಾವನ್ನು ದೃಶ್ಯೀಕರಿಸುವ ಅನೇಕ ವಿಧಾನಗಳನ್ನು ನೋಡಿ. ಲಭ್ಯವಿರುವ ವಿವಿಧ ಲೈಬ್ರರಿಗಳ ಪಟ್ಟಿ ಮಾಡಿ ಮತ್ತು ಯಾವವು ಯಾವ ಕಾರ್ಯಗಳಿಗೆ ಉತ್ತಮ ಎಂದು ಗಮನಿಸಿ, ಉದಾಹರಣೆಗೆ 2D ದೃಶ್ಯೀಕರಣಗಳು ಮತ್ತು 3D ದೃಶ್ಯೀಕರಣಗಳು. ನೀವು ಏನು ಕಂಡುಹಿಡಿದಿರಿ?
+ಡೇಟಾ ದೃಶ್ಯೀಕರಣದ ಅನೇಕ ವಿಧಗಳನ್ನು ಗಮನಿಸಿ. ಲಭ್ಯವಿರುವ ವಿಭಿನ್ನ ಗ್ರಂಥಾಲಯಗಳ ಪಟ್ಟಿಯನ್ನು ತಯಾರಿಸಿ ಮತ್ತು ಯಾವ ಕಾರ್ಯಗಳಿಗೆ ಯಾವು ಉತ್ತಮವೆಂದು ನೋಟ್ ಮಾಡಿ, ಉದಾಹರಣೆಗೆ 2D ಮತ್ತು 3D ದೃಶ್ಯೀಕರಣಗಳಿಗೆ. ನೀವು ಏನು ಕಂಡುಹಿಡಿದಿರಿ?
-## ನಿಯೋಜನೆ
+## ಹಂದಿ
[ದೃಶ್ಯೀಕರಣ ಅನ್ವೇಷಣೆ](assignment.md)
---
-**ಅಸ್ವೀಕರಣ**:
-ಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಪ್ರಮುಖ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.
+**ಅಸ್ವೀಕಾರ**:
+ಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯನ್ನು ಸಾಧಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ದಯವಿಟ್ಟು ಗಮನಿಸಿ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸಡ್ಡೆಗಳು ಇರಬಹುದು. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜು ಪ್ರಾಮಾಣಿಕ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಪ್ರಮುಖ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದವನ್ನು ಬಳಸುವ ಮೂಲಕ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಗಳ ಅಥವಾ ತಪ್ಪು ವ್ಯಾಖ್ಯಾನಗಳ ಬಗ್ಗೆ ನಾವು ಹೊಣೆಗಾರರಲ್ಲ.
\ No newline at end of file
diff --git a/translations/kn/2-Regression/2-Data/solution/notebook.ipynb b/translations/kn/2-Regression/2-Data/solution/notebook.ipynb
index ce88393dc..7f8d76fd9 100644
--- a/translations/kn/2-Regression/2-Data/solution/notebook.ipynb
+++ b/translations/kn/2-Regression/2-Data/solution/notebook.ipynb
@@ -4,7 +4,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## ಕಂಬಳಕಾಯಿ ಗಾತ್ರದ ರೇಖೀಯ ರಿಗ್ರೆಷನ್ - ಪಾಠ 2\n"
+ "## ಕಂಬಳಿಗೆ ರೇಖೀಯ ನಿರRegression - পাঠ 2\n"
]
},
{
@@ -222,6 +222,7 @@
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
"pumpkins = pd.read_csv('../../data/US-pumpkins.csv')\n",
"\n",
"pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]\n",
@@ -385,18 +386,78 @@
"plt.ylabel(\"Pumpkin Price\")"
]
},
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## ಸೀಬ್ರನ್ನೊಂದಿಗೆ ದೃಶ್ಯೀಕರಣ\n",
+ "\n",
+ "[Seaborn](https://seaborn.pydata.org/) ಮೆಟ್ಪ್ಲಾಟ್ಲಿಬ್ ಮೇಲ್ಪಾಡಾಗಿ ನಿರ್ಮಿಸಲ್ಪಟ್ಟಿದೆ ಮತ್ತು ನೇರವಾಗಿ ಡೇಟಾಫ್ರೇಮ್ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ, ಕಡಿಮೆ ಕೋಡ್ನೊಂದಿಗೆ ಆಕರ್ಷಕ ಗಣಿತೀಯ ಪ್ಲಾಟ್ಗಳನ್ನು ತ್ವರಿತವಾಗಿ ರಚಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### ಸಂಬಂಧಗಳನ್ನು ತೋರಿಸಲು ಸ್ಕ್ಯಾಟರ್ ಪ್ಲೋಟ್ಗಳು\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", kind=\"line\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### ವಿತರಣೆಯನ್ನು ತೋರುವ ಬಾರ್ ಚಾರ್ಟ್ಗಳು\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.catplot(x=\"Month\", y=\"Price\", data=new_pumpkins, kind=\"bar\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### ಸಹಸಂಬಂಧಗಳನ್ನು ತೋರಿಸುವ ಹೀಟ್ಮ್ಯಾಪ್ಗಳು\n"
+ ]
+ },
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
- "source": []
+ "source": [
+ "correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()\n",
+ "sns.heatmap(correlations, annot=True, cmap=\"coolwarm\")"
+ ]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "---\n\n\n**ಅಸ್ವೀಕರಣ**: \nಈ ದಸ್ತಾವೇಜು [Co-op Translator](https://github.com/Azure/co-op-translator) ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.\n\n"
+ "---\n\n\n**ಅಸ್ವೀಕಾರ**:\nಈ ದಸ್ತಾವೇಜು AI ಅನುವಾದ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯನ್ನು ಸಾಧಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ದಯವಿಟ್ಟು ಗಮನಿಸಿ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ದೋಷಗಳು ಅಥವಾ ಅಸಡ್ಡೆಗಳು ಇರಬಹುದು. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜು ಪ್ರಾಮಾಣಿಕ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಪ್ರಮುಖ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದವನ್ನು ಬಳಸುವ ಮೂಲಕ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಗಳ ಅಥವಾ ತಪ್ಪು ವ್ಯಾಖ್ಯಾನಗಳ ಬಗ್ಗೆ ನಾವು ಹೊಣೆಗಾರರಲ್ಲ.\n\n"
]
}
],
@@ -426,13 +487,7 @@
"hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d"
}
},
- "orig_nbformat": 2,
- "coopTranslator": {
- "original_hash": "95726f0b8283628d5356a4f8eb8b4b76",
- "translation_date": "2025-12-19T16:31:54+00:00",
- "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
- "language_code": "kn"
- }
+ "orig_nbformat": 2
},
"nbformat": 4,
"nbformat_minor": 2
diff --git a/translations/ko/.co-op-translator.json b/translations/ko/.co-op-translator.json
index 13400f6c8..d268ebb75 100644
--- a/translations/ko/.co-op-translator.json
+++ b/translations/ko/.co-op-translator.json
@@ -24,8 +24,8 @@
"language_code": "ko"
},
"1-Introduction/3-fairness/README.md": {
- "original_hash": "9a6b702d1437c0467e3c5c28d763dac2",
- "translation_date": "2025-09-05T10:47:40+00:00",
+ "original_hash": "0f00d72169a0d37eecfd16d71e01700a",
+ "translation_date": "2026-07-14T04:57:14+00:00",
"source_file": "1-Introduction/3-fairness/README.md",
"language_code": "ko"
},
@@ -54,8 +54,8 @@
"language_code": "ko"
},
"2-Regression/1-Tools/README.md": {
- "original_hash": "fa81d226c71d5af7a2cade31c1c92b88",
- "translation_date": "2025-09-05T10:41:04+00:00",
+ "original_hash": "0b8635427b582d03ea4ab7089b93e505",
+ "translation_date": "2026-07-14T04:52:58+00:00",
"source_file": "2-Regression/1-Tools/README.md",
"language_code": "ko"
},
@@ -72,8 +72,8 @@
"language_code": "ko"
},
"2-Regression/2-Data/README.md": {
- "original_hash": "7c077988328ebfe33b24d07945f16eca",
- "translation_date": "2025-09-05T10:41:52+00:00",
+ "original_hash": "a58b2c4d16c6b122643391745ac15af6",
+ "translation_date": "2026-07-14T04:54:03+00:00",
"source_file": "2-Regression/2-Data/README.md",
"language_code": "ko"
},
@@ -89,6 +89,12 @@
"source_file": "2-Regression/2-Data/solution/Julia/README.md",
"language_code": "ko"
},
+ "2-Regression/2-Data/solution/notebook.ipynb": {
+ "original_hash": "96b95f8cf473481f2f371de8156f1571",
+ "translation_date": "2026-07-14T04:38:17+00:00",
+ "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
+ "language_code": "ko"
+ },
"2-Regression/3-Linear/README.md": {
"original_hash": "8b776e731c35b171d316d01d0e7b1369",
"translation_date": "2026-04-26T20:40:54+00:00",
@@ -457,7 +463,7 @@
},
"8-Reinforcement/1-QLearning/README.md": {
"original_hash": "911efd5e595089000cb3c16fce1beab8",
- "translation_date": "2025-09-05T10:53:41+00:00",
+ "translation_date": "2026-07-14T04:55:12+00:00",
"source_file": "8-Reinforcement/1-QLearning/README.md",
"language_code": "ko"
},
@@ -481,7 +487,7 @@
},
"8-Reinforcement/2-Gym/README.md": {
"original_hash": "107d5bb29da8a562e7ae72262d251a75",
- "translation_date": "2025-09-05T10:54:20+00:00",
+ "translation_date": "2026-07-14T04:56:18+00:00",
"source_file": "8-Reinforcement/2-Gym/README.md",
"language_code": "ko"
},
@@ -581,6 +587,19 @@
"source_file": "TROUBLESHOOTING.md",
"language_code": "ko"
},
+ "__translation_failures__": {
+ "sketchnotes/LICENSE.md": {
+ "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f",
+ "source_file": "sketchnotes/LICENSE.md",
+ "language_code": "ko",
+ "failure_date": "2026-07-14T04:52:02+00:00",
+ "status": "failed",
+ "error_type": "TranslationIncompleteError",
+ "error_message": "Markdown translation remained incomplete for chunk 1.1.1 of 'LICENSE.md', and the chunk could not be split further.",
+ "translator_version": "0.20.0",
+ "failure_policy_version": 1
+ }
+ },
"docs/_sidebar.md": {
"original_hash": "68dd06c685f6ce840e0acfa313352e7c",
"translation_date": "2025-09-03T23:13:49+00:00",
diff --git a/translations/ko/1-Introduction/3-fairness/README.md b/translations/ko/1-Introduction/3-fairness/README.md
index a677d6917..0e4be41ff 100644
--- a/translations/ko/1-Introduction/3-fairness/README.md
+++ b/translations/ko/1-Introduction/3-fairness/README.md
@@ -1,155 +1,159 @@
-# 책임 있는 AI를 활용한 머신 러닝 솔루션 구축
-
-
-> 스케치노트: [Tomomi Imura](https://www.twitter.com/girlie_mac)
+# 책임 있는 AI로 머신러닝 솔루션 구축하기
+
+
+> 스케치노트 작성자: [Tomomi Imura](https://www.twitter.com/girlie_mac)
## [강의 전 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
-
+
## 소개
-이 커리큘럼에서는 머신 러닝이 우리의 일상생활에 어떤 영향을 미치고 있는지 알아보기 시작합니다. 현재도 시스템과 모델은 의료 진단, 대출 승인, 사기 탐지와 같은 일상적인 의사 결정 작업에 관여하고 있습니다. 따라서 이러한 모델이 신뢰할 수 있는 결과를 제공하기 위해 잘 작동하는 것이 중요합니다. 모든 소프트웨어 애플리케이션과 마찬가지로, AI 시스템은 기대에 미치지 못하거나 바람직하지 않은 결과를 초래할 수 있습니다. 그렇기 때문에 AI 모델의 행동을 이해하고 설명할 수 있는 것이 필수적입니다.
+이 교육과정에서는 머신러닝이 우리 일상에 어떻게 영향을 미치고 있는지를 알아보기 시작할 것입니다. 이미 시스템과 모델은 의료 진단, 대출 승인, 사기 탐지 등의 일상적 의사결정 업무에 관여하고 있습니다. 따라서 이러한 모델들이 신뢰할 수 있는 결과를 제공할 수 있도록 잘 작동하는 것이 중요합니다. 모든 소프트웨어 애플리케이션과 마찬가지로, AI 시스템도 기대에 미치지 못하거나 원치 않는 결과를 만들 수 있습니다. 그러므로 AI 모델의 동작을 이해하고 설명할 수 있는 능력은 필수적입니다.
-모델을 구축하는 데 사용하는 데이터가 특정 인구 통계(예: 인종, 성별, 정치적 견해, 종교 등)를 포함하지 않거나 불균형적으로 대표하는 경우 어떤 일이 발생할 수 있을까요? 모델의 출력이 특정 인구 통계를 선호하도록 해석된다면 어떻게 될까요? 애플리케이션에 어떤 영향을 미칠까요? 또한 모델이 부정적인 결과를 초래하여 사람들에게 해를 끼친다면 어떻게 될까요? AI 시스템의 행동에 대한 책임은 누구에게 있을까요? 이러한 질문들은 이 커리큘럼에서 탐구할 내용입니다.
+모델을 만드는 데 사용하는 데이터가 인종, 성별, 정치적 견해, 종교 등 특정 인구 집단을 포함하지 않거나 한쪽에 치우쳐 있다면 어떤 일이 벌어질지 상상해 보십시오. 모델의 출력이 특정 인구 집단에 유리하게 해석된다면 어떻게 될까요? 그 결과는 해당 응용 프로그램에 어떤 영향을 미칠까요? 그리고 모델이 바람직하지 않은 결과를 내거나 사람들에게 해를 끼친다면 어떻게 될까요? AI 시스템의 행동에 누가 책임이 있을까요? 이러한 질문들을 이 교육과정에서 탐구할 것입니다.
-이 강의에서 여러분은 다음을 배우게 됩니다:
+이 수업에서는 다음을 배우게 됩니다:
-- 머신 러닝에서 공정성의 중요성과 공정성 관련 피해에 대한 인식을 높입니다.
-- 신뢰성과 안전성을 보장하기 위해 이상치와 비정상적인 시나리오를 탐구하는 실습에 익숙해집니다.
-- 포괄적인 시스템을 설계하여 모두를 지원해야 하는 필요성을 이해합니다.
-- 데이터와 사람들의 프라이버시와 보안을 보호하는 것이 얼마나 중요한지 탐구합니다.
-- AI 모델의 행동을 설명하기 위해 투명성을 유지하는 접근 방식의 중요성을 확인합니다.
-- AI 시스템에 대한 신뢰를 구축하기 위해 책임감이 얼마나 중요한지 인식합니다.
+- 머신러닝에서 공정성의 중요성과 공정성 관련 피해에 대한 인식을 높입니다.
+- 신뢰성과 안전성을 보장하기 위해 이상치와 특이한 상황을 탐색하는 실습에 익숙해집니다.
+- 모두를 포용하는 시스템 설계의 필요성을 이해합니다.
+- 데이터와 사람들의 프라이버시 및 보안 보호의 중요성을 탐구합니다.
+- AI 모델의 동작을 설명하기 위한 투명한 접근법(글라스 박스 방식)의 중요성을 확인합니다.
+- AI 시스템에 대한 신뢰를 구축하기 위해 책임성이 필수적임을 인지합니다.
-## 사전 요구사항
+## 전제 조건
-사전 요구사항으로 "책임 있는 AI 원칙" 학습 경로를 완료하고 아래의 주제에 대한 비디오를 시청하세요:
+전제 조건으로 "책임 있는 AI 원칙" 학습 경로를 수강하고 아래 주제에 대한 동영상을 시청하시기 바랍니다:
-[학습 경로](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)를 통해 책임 있는 AI에 대해 더 알아보세요.
+다음 [학습 경로](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)에서 책임 있는 AI에 대해 자세히 알아보세요.
-[](https://youtu.be/dnC8-uUZXSc "Microsoft의 책임 있는 AI 접근 방식")
+[](https://youtu.be/dnC8-uUZXSc "Microsoft의 책임 있는 AI 접근법")
-> 🎥 위 이미지를 클릭하여 비디오를 시청하세요: Microsoft의 책임 있는 AI 접근 방식
+> 🎥 위 이미지를 클릭하면 동영상 시청: Microsoft의 책임 있는 AI 접근법
## 공정성
-AI 시스템은 모든 사람을 공정하게 대하고 유사한 그룹의 사람들에게 다른 방식으로 영향을 미치지 않아야 합니다. 예를 들어, AI 시스템이 의료 치료, 대출 신청 또는 고용에 대한 지침을 제공할 때, 유사한 증상, 재정 상황 또는 전문 자격을 가진 모든 사람에게 동일한 권장 사항을 제공해야 합니다. 우리 각자는 인간으로서 우리의 결정과 행동에 영향을 미치는 내재된 편견을 가지고 있습니다. 이러한 편견은 우리가 AI 시스템을 훈련시키는 데 사용하는 데이터에서 드러날 수 있습니다. 이러한 조작은 때로는 의도치 않게 발생할 수 있습니다. 데이터를 다룰 때 편견을 도입하고 있는지 의식적으로 알기 어려운 경우가 많습니다.
+AI 시스템은 모든 사람을 공정하게 대우하고 유사한 그룹의 사람들에게 다르게 영향을 미치는 일을 피해야 합니다. 예를 들어, AI 시스템이 의료 치료, 대출 신청, 고용에 대한 조언을 제공할 때 유사한 증상, 재정 상황, 전문 자격을 가진 사람들에게 동일한 권고를 해야 합니다. 우리 각자는 결정과 행동에 영향을 미치는 선천적인 편견을 지니고 있으며, 이러한 편견은 AI 시스템 학습에 사용되는 데이터에도 나타날 수 있습니다. 이런 편향은 때때로 의도치 않게 발생할 수 있으며, 데이터를 통해 편향을 의식적으로 인지하는 것은 종종 어렵습니다.
-**“불공정성”**은 인종, 성별, 연령 또는 장애 상태와 같은 기준으로 정의된 사람들 그룹에 대한 부정적인 영향 또는 “피해”를 포함합니다. 주요 공정성 관련 피해는 다음과 같이 분류할 수 있습니다:
+“불공정함”은 인종, 성별, 연령, 장애 상태 등 특정 집단에 부정적 영향을 미치는 해악을 의미합니다. 주요 공정성 관련 피해 유형은 다음과 같이 분류됩니다:
-- **할당**: 예를 들어, 특정 성별이나 민족이 다른 성별이나 민족보다 선호되는 경우.
-- **서비스 품질**: 특정 시나리오에 맞춰 데이터를 훈련시키지만 현실은 훨씬 더 복잡한 경우, 서비스 성능이 저하됩니다. 예를 들어, 어두운 피부를 가진 사람을 감지하지 못하는 손 비누 디스펜서. [참조](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
-- **비난**: 부당하게 비판하거나 특정 대상이나 사람을 잘못 평가하는 경우. 예를 들어, 이미지 라벨링 기술이 어두운 피부를 가진 사람들의 이미지를 고릴라로 잘못 라벨링한 사례.
-- **과잉 또는 부족 대표**: 특정 그룹이 특정 직업에서 보이지 않는 경우, 이를 계속 촉진하는 서비스나 기능은 피해를 초래할 수 있습니다.
-- **고정관념**: 특정 그룹을 미리 할당된 속성과 연관시키는 경우. 예를 들어, 영어와 터키어 간의 언어 번역 시스템이 성별과 관련된 고정관념으로 인해 부정확성을 가질 수 있습니다.
+- 할당: 예를 들어, 한 성별이나 민족이 다른 집단보다 선호되는 경우.
+- **서비스 품질**: 특정 시나리오만 학습시켰으나 실제 상황은 더 복잡해 서비스 성능이 떨어질 때. 예로 어두운 피부색을 인식하지 못하는 손 세정제 디스펜서가 있습니다. [참고자료](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
+- 폄하: 부당하게 비판하거나 낙인을 찍는 행위. 예를 들어, 이미지 라벨링 기술이 어두운 피부색 사람들을 고릴라로 잘못 인식한 경우가 있습니다.
+- **과대 또는 과소 대표**: 특정 그룹이 특정 직종에서 보이지 않거나 서비스가 이를 계속 촉진할 때 발생하는 피해.
+- 고정관념: 특정 집단에 미리 할당된 속성을 연결하는 행위. 예를 들어, 영어와 터키어 간 번역 시스템이 성별 고정관념에 기반한 단어로 인해 부정확할 수 있습니다.
-
-> 터키어로 번역
+
+> 터키어 번역
-
-> 영어로 다시 번역
+
+> 영어로 재번역
-AI 시스템을 설계하고 테스트할 때, AI가 공정하며 인간이 금지된 편향적이거나 차별적인 결정을 내리지 않도록 해야 합니다. AI와 머신 러닝에서 공정성을 보장하는 것은 여전히 복잡한 사회기술적 과제입니다.
+AI 시스템을 설계하고 테스트할 때 AI가 공정하며 편향되거나 차별적인 결정을 내리지 않도록 해야 합니다. 이는 인간에게도 금지된 행위입니다. AI와 머신러닝에서 공정성을 보장하는 것은 복잡한 사회기술적 도전 과제입니다.
### 신뢰성과 안전성
-신뢰를 구축하려면 AI 시스템이 정상적이고 예상치 못한 조건에서도 신뢰할 수 있고 안전하며 일관성이 있어야 합니다. 특히 이상치 상황에서 AI 시스템이 다양한 상황에서 어떻게 행동할지 아는 것이 중요합니다. AI 솔루션을 구축할 때, AI 솔루션이 직면할 수 있는 다양한 상황을 처리하는 방법에 상당한 초점을 맞춰야 합니다. 예를 들어, 자율주행차는 사람들의 안전을 최우선으로 고려해야 합니다. 따라서 차량을 구동하는 AI는 밤, 폭풍우, 눈보라, 길을 건너는 아이들, 애완동물, 도로 공사 등 차량이 직면할 수 있는 모든 가능한 시나리오를 고려해야 합니다. AI 시스템이 다양한 조건을 신뢰할 수 있고 안전하게 처리할 수 있는 능력은 데이터 과학자나 AI 개발자가 시스템 설계 또는 테스트 중에 고려한 예상 수준을 반영합니다.
-
-> [🎥 여기를 클릭하여 비디오를 시청하세요: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
+신뢰를 구축하려면 AI 시스템이 정상 및 예기치 않은 상황 모두에서 신뢰할 수 있고 안전하며 일관되어야 합니다. AI 시스템이 다양한 상황, 특히 이상치에서 어떻게 동작하는지 아는 것이 중요합니다. AI 솔루션을 구축할 때는 AI가 마주치게 될 다양한 상황을 다루는 데 많은 초점을 둬야 합니다. 예를 들어, 자율주행차는 사람들의 안전을 최우선으로 해야 합니다. 따라서 차량을 작동하는 AI는 야간, 폭풍우, 눈보라, 길을 가로지르는 아이들, 애완동물, 도로 공사 등 다양한 시나리오를 고려해야 합니다. AI 시스템이 다양한 조건을 얼마나 신뢰성 있고 안전하게 처리하는지는 데이터 과학자 또는 AI 개발자가 설계 및 테스트 시 어느 정도 예상했는지를 반영합니다.
-### 포괄성
+> [🎥 영상 시청하려면 여기를 클릭하세요: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
-AI 시스템은 모든 사람을 참여시키고 지원할 수 있도록 설계되어야 합니다. AI 시스템을 설계하고 구현할 때 데이터 과학자와 AI 개발자는 시스템에서 사람들을 의도치 않게 배제할 수 있는 잠재적 장벽을 식별하고 해결합니다. 예를 들어, 전 세계적으로 10억 명의 장애인이 있습니다. AI의 발전으로 인해 이들은 일상생활에서 더 쉽게 다양한 정보와 기회를 접할 수 있습니다. 이러한 장벽을 해결함으로써 모든 사람에게 혜택을 주는 더 나은 경험을 제공하는 AI 제품을 혁신하고 개발할 기회를 창출합니다.
+### 포용성
-> [🎥 여기를 클릭하여 비디오를 시청하세요: AI에서의 포괄성](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
+AI 시스템은 모두가 참여하고 권한을 갖도록 설계되어야 합니다. AI 시스템 설계 및 구현 시 데이터 과학자와 AI 개발자들은 사람들을 의도치 않게 제외할 수 있는 장벽을 식별하고 해결합니다. 전 세계적으로 10억 명의 장애인이 있습니다. AI 기술이 발전함에 따라 이들은 일상생활에서 정보와 기회에 더욱 쉽게 접근할 수 있게 되었습니다. 장벽을 해결함으로써 모두에게 혜택이 되는 더 나은 경험을 제공하는 AI 제품을 혁신하고 개발할 수 있는 기회를 창출합니다.
-### 보안과 프라이버시
+> [🎥 영상 시청하려면 여기를 클릭하세요: AI에서의 포용성](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
-AI 시스템은 안전해야 하며 사람들의 프라이버시를 존중해야 합니다. 프라이버시, 정보 또는 생명을 위험에 빠뜨리는 시스템에 대한 신뢰는 낮아집니다. 머신 러닝 모델을 훈련할 때, 최상의 결과를 도출하기 위해 데이터를 활용합니다. 이 과정에서 데이터의 출처와 무결성을 고려해야 합니다. 예를 들어, 데이터가 사용자 제출 데이터인지 공개적으로 이용 가능한 데이터인지 확인해야 합니다. 다음으로 데이터를 다룰 때, 기밀 정보를 보호하고 공격에 저항할 수 있는 AI 시스템을 개발하는 것이 중요합니다. AI가 점점 더 널리 사용됨에 따라 프라이버시를 보호하고 중요한 개인 및 비즈니스 정보를 안전하게 유지하는 것이 점점 더 중요하고 복잡해지고 있습니다. AI는 데이터를 기반으로 사람들에 대한 정확하고 정보에 입각한 예측과 결정을 내리기 때문에 프라이버시와 데이터 보안 문제는 특히 주의가 필요합니다.
+### 보안 및 개인정보 보호
-> [🎥 여기를 클릭하여 비디오를 시청하세요: AI에서의 보안](https://www.microsoft.com/videoplayer/embed/RE4voJF)
+AI 시스템은 안전해야 하며 사람들의 프라이버시를 존중해야 합니다. 사람들은 개인정보, 정보 또는 생명이 위험에 처하는 시스템을 덜 신뢰합니다. 머신러닝 모델을 훈련할 때 최상의 결과를 내기 위해 데이터에 의존합니다. 이때 데이터 출처와 무결성을 고려해야 합니다. 예를 들어, 데이터가 사용자 제출 데이터인지 공개적으로 사용 가능한지 여부가 중요합니다. 또한, 데이터를 다룰 때 기밀 정보를 보호하고 공격에 저항하는 AI 시스템을 개발하는 것이 필수적입니다. AI가 보편화되면서 개인정보 보호와 중요한 개인 및 기업 정보 보안이 더욱 중요하고 복잡해졌습니다. AI의 정확한 예측과 결정을 위해 데이터 접근이 필수적이므로 프라이버시 및 데이터 보안 문제에 특별히 주의를 기울여야 합니다.
-- 업계는 GDPR(일반 데이터 보호 규정)과 같은 규정에 의해 크게 촉진된 프라이버시 및 보안에서 상당한 발전을 이루었습니다.
-- 그러나 AI 시스템에서는 시스템을 더 개인적이고 효과적으로 만들기 위해 더 많은 개인 데이터를 필요로 하는 것과 프라이버시 간의 긴장을 인정해야 합니다.
-- 인터넷으로 연결된 컴퓨터의 탄생과 마찬가지로 AI와 관련된 보안 문제의 급증을 목격하고 있습니다.
-- 동시에 AI가 보안을 개선하는 데 사용되는 사례도 있습니다. 예를 들어, 대부분의 현대적인 안티바이러스 스캐너는 오늘날 AI 휴리스틱에 의해 구동됩니다.
-- 데이터 과학 프로세스가 최신 프라이버시 및 보안 관행과 조화를 이루도록 해야 합니다.
+> [🎥 영상 시청하려면 여기를 클릭하세요: AI에서의 보안](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-### 투명성
+- 업계 전반에서 GDPR(일반 데이터 보호 규정) 같은 규제 덕분에 프라이버시와 보안 분야에서 크게 발전해 왔습니다.
+- 그러나 AI 시스템에서는 더 개인화되고 효율적인 시스템을 만들기 위해 더 많은 개인정보가 필요한 것과 프라이버시 사이의 긴장을 인식해야 합니다.
+- 인터넷과 연결된 컴퓨터가 처음 등장했을 때처럼 AI 관련 보안 이슈도 급증하고 있습니다.
+- 동시에 AI는 보안을 향상하는 데 사용되고 있습니다. 예를 들어, 오늘날 대부분의 최신 안티바이러스 스캐너는 AI 휴리스틱을 활용합니다.
+- 데이터 과학 프로세스가 최신 프라이버시 및 보안 관행과 조화롭게 융합되도록 해야 합니다.
-AI 시스템은 이해할 수 있어야 합니다. 투명성의 중요한 부분은 AI 시스템과 그 구성 요소의 행동을 설명하는 것입니다. AI 시스템에 대한 이해를 개선하려면 이해관계자가 시스템이 어떻게 작동하고 왜 작동하는지 이해하여 잠재적인 성능 문제, 안전 및 프라이버시 문제, 편향, 배제적 관행 또는 의도치 않은 결과를 식별할 수 있어야 합니다. 또한 AI 시스템을 사용하는 사람들은 시스템을 언제, 왜, 어떻게 배포하는지, 그리고 사용하는 시스템의 한계를 솔직하게 공개해야 한다고 믿습니다. 예를 들어, 은행이 소비자 대출 결정을 지원하기 위해 AI 시스템을 사용하는 경우, 결과를 검토하고 시스템의 권장 사항에 영향을 미치는 데이터를 이해하는 것이 중요합니다. 정부는 산업 전반에 걸쳐 AI를 규제하기 시작하고 있으므로 데이터 과학자와 조직은 AI 시스템이 규제 요구 사항을 충족하는지, 특히 바람직하지 않은 결과가 발생했을 때 이를 설명해야 합니다.
-> [🎥 여기를 클릭하여 비디오를 시청하세요: AI에서의 투명성](https://www.microsoft.com/videoplayer/embed/RE4voJF)
+### 투명성
+AI 시스템은 이해할 수 있어야 합니다. 투명성의 중요한 부분은 AI 시스템과 구성 요소의 동작을 설명하는 것입니다. AI 시스템의 이해도를 높이려면 이해관계자가 시스템이 어떻게 그리고 왜 동작하는지 파악하여 성능 문제, 안전 및 프라이버시 우려, 편향, 배제적 관행 또는 의도치 않은 결과를 식별할 수 있어야 합니다. 또한 AI 시스템을 사용하는 주체가 언제, 왜, 어떻게 AI를 배포하는지를 정직하고 솔직히 밝혀야 하며 사용 시스템의 한계도 알려야 한다고 믿습니다. 예를 들어, 은행이 소비자 대출 결정을 지원하기 위해 AI 시스템을 사용할 경우 결과를 검토하고 추천에 영향을 미치는 데이터가 무엇인지 이해하는 것이 중요합니다. 정부가 산업 전반에 AI 규제를 시작하고 있으므로 데이터 과학자와 조직은 AI 시스템이 규제 요구사항을 충족하는지, 특히 바람직하지 않은 결과가 발생했을 때 설명할 수 있어야 합니다.
-- AI 시스템이 매우 복잡하기 때문에 시스템이 어떻게 작동하고 결과를 해석하는지 이해하기 어렵습니다.
-- 이러한 이해 부족은 시스템이 관리, 운영 및 문서화되는 방식에 영향을 미칩니다.
-- 더 중요한 것은 이러한 이해 부족이 시스템이 생성하는 결과를 기반으로 내리는 결정에 영향을 미친다는 점입니다.
+> [🎥 영상 시청하려면 여기를 클릭하세요: AI에서의 투명성](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-### 책임감
+- AI 시스템이 매우 복잡하여 작동 방식을 이해하고 결과를 해석하기 어렵습니다.
+- 이러한 이해 부족은 시스템 관리, 운영 및 문서화 방식에 영향을 미칩니다.
+- 더욱 중요하게는, 시스템이 만든 결과를 사용한 의사결정에 영향을 줍니다.
-AI 시스템을 설계하고 배포하는 사람들은 시스템이 어떻게 작동하는지에 대해 책임을 져야 합니다. 책임감의 필요성은 특히 얼굴 인식과 같은 민감한 기술에서 중요합니다. 최근에는 실종 아동을 찾는 것과 같은 용도로 기술의 잠재력을 보는 법 집행 기관에서 얼굴 인식 기술에 대한 수요가 증가하고 있습니다. 그러나 이러한 기술은 특정 개인에 대한 지속적인 감시를 가능하게 함으로써 시민의 기본 자유를 위협할 수 있는 방식으로 정부에 의해 사용될 가능성이 있습니다. 따라서 데이터 과학자와 조직은 AI 시스템이 개인이나 사회에 미치는 영향에 대해 책임을 져야 합니다.
+### 책임성
+
+AI 시스템을 설계하고 배포하는 사람들은 그 시스템의 작동 방식에 책임을 져야 합니다. 특히 안면 인식 같은 민감한 기술을 사용할 때 책임성은 더욱 중요합니다. 최근 법 집행 기관들이 실종 아동 탐색 등에서 기술의 잠재력을 주목하며 안면 인식 기술에 대한 수요가 증가하고 있습니다. 그러나 정부가 특정 개인을 지속적으로 감시하는 등 시민의 기본 자유를 위협하는 데 사용할 수도 있습니다. 따라서 데이터 과학자와 조직은 AI 시스템이 개인 또는 사회에 미치는 영향에 책임을 져야 합니다.
-[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft의 책임 있는 AI 접근 방식")
+[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft의 책임 있는 AI 접근법")
-> 🎥 위 이미지를 클릭하여 비디오를 시청하세요: 얼굴 인식을 통한 대규모 감시에 대한 경고
+> 🎥 위 이미지를 클릭하면 동영상 시청: 안면 인식 통한 대규모 감시에 대한 경고
-결국, AI를 사회에 도입하는 첫 번째 세대로서 우리 세대가 직면한 가장 큰 질문 중 하나는 컴퓨터가 사람들에게 계속 책임을 질 수 있도록 하고 컴퓨터를 설계하는 사람들이 다른 모든 사람들에게 책임을 질 수 있도록 하는 방법입니다.
+결국 우리 세대, 즉 AI를 사회에 처음 도입하는 세대에게 가장 큰 질문 중 하나는 컴퓨터가 사람들에게 책임을 지도록 어떻게 보장할 것인가와 컴퓨터를 설계하는 사람들이 모두에게 책임을 지도록 어떻게 보장할 것인가입니다.
## 영향 평가
-머신 러닝 모델을 훈련하기 전에 AI 시스템의 목적, 의도된 사용, 배포 위치 및 시스템과 상호작용할 사람들을 이해하기 위해 영향 평가를 수행하는 것이 중요합니다. 이는 시스템을 평가하는 리뷰어 또는 테스터가 잠재적 위험과 예상 결과를 식별할 때 고려해야 할 요소를 아는 데 도움이 됩니다.
+머신러닝 모델을 훈련하기 전에 AI 시스템의 목적, 의도된 사용, 배포 장소, 상호 작용할 대상 등을 이해하기 위해 영향 평가를 수행하는 것이 중요합니다. 이는 시스템을 평가하는 검토자 또는 테스터가 잠재적 위험과 예상 결과를 판단할 때 고려해야 할 요소를 파악하는 데 도움을 줍니다.
+
+영향 평가 시 중점 영역은 다음과 같습니다:
-영향 평가를 수행할 때 집중해야 할 영역은 다음과 같습니다:
+* **개인에 대한 부정적 영향**: 제한이나 요구 사항, 지원되지 않는 사용, 알려진 제한 사항 등 시스템 성능을 저해하는 요소를 인지하여 개인에게 피해를 주는 방식으로 시스템이 사용되지 않도록 하는 것이 중요합니다.
+* **데이터 요구 사항**: 시스템이 데이터를 어떻게 어디에서 사용할지 이해하면 검토자가 GDPR 또는 HIPAA 같은 데이터 규정과 같은 데이터 요구 사항을 고려할 수 있습니다. 또한 데이터 소스와 양이 훈련에 충분한지 평가합니다.
+* **영향 요약**: 시스템 사용으로 발생할 수 있는 잠재적 피해 목록을 수집합니다. 머신러닝 라이프사이클 전반에 걸쳐 식별된 문제들이 경감되거나 해결되었는지 검토합니다.
+* **각 원칙별 적용 가능한 목표**: 6가지 핵심 원칙 각자의 목표가 충족되는지, 부족한 점이 있는지 평가합니다.
-* **개인에 대한 부정적 영향**: 시스템 성능을 저해할 수 있는 제한, 요구사항, 지원되지 않는 사용 또는 알려진 한계를 인식하는 것이 중요합니다.
-* **데이터 요구사항**: 시스템이 데이터를 사용하는 방법과 위치를 이해하면 GDPR 또는 HIPPA 데이터 규정과 같은 데이터 요구사항을 고려해야 할 사항을 탐구할 수 있습니다. 또한 데이터를 훈련시키기에 충분한 출처와 양을 검토합니다.
-* **영향 요약**: 시스템 사용으로 인해 발생할 수 있는 잠재적 피해 목록을 수집합니다. ML 라이프사이클 전반에 걸쳐 식별된 문제가 완화되었거나 해결되었는지 검토합니다.
-* **적용 가능한 목표**: 여섯 가지 핵심 원칙 각각에 대한 목표가 충족되었는지, 그리고 어떤 격차가 있는지 평가합니다.
## 책임 있는 AI로 디버깅하기
-소프트웨어 애플리케이션을 디버깅하는 것과 마찬가지로, AI 시스템을 디버깅하는 것은 시스템의 문제를 식별하고 해결하는 데 필요한 과정입니다. 모델이 예상대로 또는 책임감 있게 작동하지 않는 데 영향을 미치는 많은 요인이 있습니다. 대부분의 전통적인 모델 성능 지표는 모델 성능의 정량적 집계로, 책임 있는 AI 원칙을 위반하는 방법을 분석하기에는 충분하지 않습니다. 게다가 머신 러닝 모델은 결과를 유도하는 요인을 이해하거나 실수를 했을 때 설명을 제공하기 어려운 블랙박스입니다. 이 과정에서 우리는 책임 있는 AI 대시보드를 사용하여 AI 시스템을 디버깅하는 방법을 배우게 됩니다. 이 대시보드는 데이터 과학자와 AI 개발자가 다음을 수행할 수 있는 포괄적인 도구를 제공합니다:
+소프트웨어 애플리케이션을 디버깅하는 것과 마찬가지로 AI 시스템을 디버깅하는 것은 시스템 내 문제를 식별하고 해결하는 필수 과정입니다. 모델이 기대대로 또는 책임감 있게 작동하지 못하는 데 영향을 미치는 여러 요인이 있습니다. 대부분의 전통적인 모델 성능 지표는 모델 성능의 정량적 집계치에 불과하여 모델이 책임 있는 AI 원칙을 위반하는 방식을 분석하기에 충분하지 않습니다. 게다가 머신러닝 모델은 결과를 어떻게 도출하는지 이해하기 어려운 블랙박스이며, 오류가 발생할 때 설명하기 어렵습니다. 이 강의 후반부에서는 책임 있는 AI 대시보드를 사용하여 AI 시스템을 디버깅하는 방법을 배울 것입니다. 이 대시보드는 데이터 과학자와 AI 개발자가 다음과 같은 작업을 수행할 수 있는 전체적인 도구를 제공합니다:
-* **오류 분석**: 시스템의 공정성 또는 신뢰성에 영향을 미칠 수 있는 모델의 오류 분포를 식별합니다.
-* **모델 개요**: 데이터 코호트 간의 모델 성능에서 불균형이 있는 곳을 발견합니다.
-* **데이터 분석**: 데이터 분포를 이해하고 공정성, 포괄성 및 신뢰성 문제를 초래할 수 있는 데이터의 잠재적 편향을 식별합니다.
-* **모델 해석 가능성**: 모델의 예측에 영향을 미치거나 영향을 주는 요인을 이해합니다. 이는 모델의 행동을 설명하는 데 중요하며, 투명성과 책임감을 위해 필요합니다.
+* **오류 분석**: 시스템의 공정성 또는 신뢰성에 영향을 미칠 수 있는 모델 오류 분포를 식별합니다.
+* **모델 개요**: 데이터 집단별 모델 성능 격차를 발견합니다.
+* **데이터 분석**: 데이터 분포를 이해하고 공정성, 포용성, 신뢰성 문제를 일으킬 수 있는 편향을 식별합니다.
+* **모델 해석 가능성**: 모델 예측에 영향을 주는 요소를 파악합니다. 이는 투명성과 책임성에 중요한 모델 동작 설명에 도움을 줍니다.
-## 🚀 도전
-피해가 처음부터 도입되지 않도록 하기 위해 우리는 다음을 해야 합니다:
+## 🚀 도전 과제
+
+피해를 처음부터 예방하기 위해 우리는:
-- 시스템 작업에 참여하는 사람들 간에 다양한 배경과 관점을 확보합니다.
-- 우리 사회의 다양성을 반영하는 데이터 세트에 투자합니다.
-- 머신 러닝 라이프사이클 전반에 걸쳐 책임 있는 AI를 감지하고 수정하는 더 나은 방법을 개발합니다.
+- 시스템 작업에 참여하는 사람들의 배경과 관점의 다양성을 확보해야 합니다.
+- 사회의 다양성을 반영한 데이터셋에 투자해야 합니다.
+- 책임 있는 AI가 발생했을 때 이를 탐지하고 수정하는 머신러닝 라이프사이클 전반에 걸친 더 나은 방법을 개발해야 합니다.
-모델 구축 및 사용에서 모델의 신뢰할 수 없는 점이 드러나는 실제 시나리오를 생각해보세요. 우리는 무엇을 더 고려해야 할까요?
+모델 구축과 사용에서 신뢰를 잃는 현실 사례를 생각해 보십시오. 또 무엇을 고려해야 할까요?
## [강의 후 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
-## 복습 및 자기 학습
+## 복습 및 자기주도 학습
+
-이 강의에서는 머신 러닝에서 공정성과 불공정성의 개념에 대한 기본 사항을 배웠습니다.
-이 워크숍을 통해 주제에 대해 더 깊이 알아보세요:
+이 수업에서는 머신러닝에서 공정성과 불공정성 개념의 기본을 배웠습니다.
+
+이 워크숍을 시청하여 주제를 더 깊이 파고들어 보세요:
-- 책임 있는 AI를 추구하며: 원칙을 실천으로 옮기기 - Besmira Nushi, Mehrnoosh Sameki, Amit Sharma
+- 책임 있는 AI 추구: Besmira Nushi, Mehrnoosh Sameki, Amit Sharma가 전하는 원칙의 실천
-[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: 책임 있는 AI를 구축하기 위한 오픈소스 프레임워크")
+[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI")
-> 🎥 위 이미지를 클릭하면 비디오를 볼 수 있습니다: RAI Toolbox: 책임 있는 AI를 구축하기 위한 오픈소스 프레임워크 - Besmira Nushi, Mehrnoosh Sameki, Amit Sharma
+> 🎥 위 이미지를 클릭하여 영상 보기: Besmira Nushi, Mehrnoosh Sameki, Amit Sharma가 전하는 책임 있는 AI 구축을 위한 오픈 소스 프레임워크 RAI Toolbox
-또한 읽어보세요:
+또한, 다음을 읽어보세요:
-- Microsoft의 RAI 리소스 센터: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
+- Microsoft의 RAI 리소스 센터: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
-- Microsoft의 FATE 연구 그룹: [FATE: 공정성, 책임성, 투명성, 윤리성 - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
+- Microsoft의 FATE 연구 그룹: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
-RAI Toolbox:
+RAI Toolbox:
- [Responsible AI Toolbox GitHub 저장소](https://github.com/microsoft/responsible-ai-toolbox)
-Azure Machine Learning의 공정성을 보장하기 위한 도구에 대해 읽어보세요:
+Azure Machine Learning의 공정성 보장 도구에 대해 읽어보세요:
-- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
+- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
## 과제
@@ -157,5 +161,7 @@ Azure Machine Learning의 공정성을 보장하기 위한 도구에 대해 읽
---
-**면책 조항**:
-이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서를 해당 언어로 작성된 상태에서 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.
\ No newline at end of file
+
+**면책 조항**:
+이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 기하기 위해 노력하고 있으나, 자동 번역은 오류나 부정확한 부분이 있을 수 있음을 유의하시기 바랍니다. 원본 문서의 원어본이 권위 있는 자료로 간주되어야 합니다. 중요한 정보의 경우, 전문가의 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.
+
\ No newline at end of file
diff --git a/translations/ko/2-Regression/1-Tools/README.md b/translations/ko/2-Regression/1-Tools/README.md
index 859336ef6..bc4c1e39f 100644
--- a/translations/ko/2-Regression/1-Tools/README.md
+++ b/translations/ko/2-Regression/1-Tools/README.md
@@ -1,120 +1,121 @@
-# Python과 Scikit-learn으로 회귀 모델 시작하기
+# 회귀 모델을 위한 Python과 Scikit-learn 시작하기
-
+
-> 스케치노트: [Tomomi Imura](https://www.twitter.com/girlie_mac)
+> 스케치노트 작성자 [Tomomi Imura](https://www.twitter.com/girlie_mac)
-## [강의 전 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
+## [수업 전 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
-> ### [이 강의는 R에서도 제공됩니다!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
+> ### [이 수업은 R로도 제공됩니다!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
## 소개
-이 네 가지 강의에서는 회귀 모델을 구축하는 방법을 배웁니다. 회귀 모델이 무엇을 위한 것인지 곧 논의할 것입니다. 하지만 그 전에, 과정을 시작하기 위해 적절한 도구가 준비되어 있는지 확인하세요!
+이 네 개의 수업에서 회귀 모델을 어떻게 구축하는지 배우게 될 것입니다. 이것들이 무엇을 위한 것인지 곧 설명하겠습니다. 하지만 무엇을 하기에 앞서, 프로세스를 시작하기 위한 올바른 도구들이 갖추어져 있는지 확인하십시오!
-이 강의에서 배우게 될 내용:
+이 수업에서는 다음을 배우게 됩니다:
-- 로컬 머신 러닝 작업을 위한 컴퓨터 설정
-- Jupyter 노트북 사용법
-- Scikit-learn 설치 및 사용법
-- 실습을 통해 선형 회귀 탐구
+- 컴퓨터를 로컬 머신러닝 작업을 위해 구성하는 방법.
+- Jupyter 노트북 작업하기.
+- 설치를 포함한 Scikit-learn 사용법.
+- 실습을 통한 선형 회귀 탐색.
-## 설치 및 설정
+## 설치 및 구성
-[](https://youtu.be/-DfeD2k2Kj0 "초보자를 위한 머신 러닝 - 머신 러닝 모델 구축을 위한 도구 설정")
+[](https://youtu.be/-DfeD2k2Kj0 "초보자를 위한 ML - 머신러닝 모델 구축 준비를 위한 도구 설정")
-> 🎥 위 이미지를 클릭하면 머신 러닝을 위한 컴퓨터 설정 과정을 다룬 짧은 영상을 볼 수 있습니다.
+> 🎥 위 이미지를 클릭하면 컴퓨터를 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)도 유용할 수 있습니다.
+1. **Python 설치**. 컴퓨터에 [Python](https://www.python.org/downloads/)이 설치되어 있는지 확인하세요. 데이터 과학과 머신러닝 작업에 많이 사용됩니다. 대부분의 컴퓨터 시스템에는 이미 Python이 설치되어 있습니다. 일부 사용자들을 위해 설치를 쉽게 해주는 유용한 [Python 코딩 팩](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott)도 있습니다.
- 하지만 Python의 일부 사용 사례는 특정 버전을 요구할 수 있습니다. 따라서 [가상 환경](https://docs.python.org/3/library/venv.html)에서 작업하는 것이 유용합니다.
+ 하지만 Python 사용 용도에 따라 소프트웨어 버전이 다르게 요구될 수 있으므로, [가상 환경](https://docs.python.org/3/library/venv.html)에서 작업하는 것이 유용합니다.
-2. **Visual Studio Code 설치**. 컴퓨터에 Visual Studio Code가 설치되어 있는지 확인하세요. [Visual Studio Code 설치](https://code.visualstudio.com/)에 대한 지침을 따라 기본 설치를 완료하세요. 이 강의에서는 Visual Studio Code에서 Python을 사용할 예정이므로, [Visual Studio Code를 Python 개발에 맞게 설정](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott)하는 방법을 익혀두는 것이 좋습니다.
+2. **Visual Studio Code 설치**. 컴퓨터에 Visual Studio Code가 설치되어 있는지 확인하세요. 기본 설치를 위한 [Visual Studio Code 설치법](https://code.visualstudio.com/)을 따르세요. 이번 과정에서는 Visual Studio Code에서 Python을 사용할 것이므로, [Visual Studio Code에서 Python 개발 설정법](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott)을 익히는 것도 좋습니다.
- > Python에 익숙해지려면 이 [Learn 모듈 모음](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)을 살펴보세요.
+ > 이 [학습 모듈 모음](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)을 통해 Python에 익숙해지세요.
>
- > [](https://youtu.be/yyQM70vi7V8 "Visual Studio Code로 Python 설정")
+ > [](https://youtu.be/yyQM70vi7V8 "VS Code에서 Python 설정하기")
>
- > 🎥 위 이미지를 클릭하면 VS Code에서 Python을 사용하는 방법에 대한 영상을 볼 수 있습니다.
+ > 🎥 위 이미지를 클릭하면 VS Code 내에서 Python을 사용하는 영상이 나옵니다.
-3. **Scikit-learn 설치**. [이 지침](https://scikit-learn.org/stable/install.html)을 따라 Scikit-learn을 설치하세요. Python 3을 사용해야 하므로 가상 환경을 사용하는 것이 권장됩니다. M1 Mac에 이 라이브러리를 설치하는 경우, 위 링크에 특별 지침이 나와 있습니다.
+3. Scikit-learn 설치는 [이 안내](https://scikit-learn.org/stable/install.html)를 따르세요. Python 3를 사용해야 하므로 가상 환경 사용을 권장합니다. Mac M1에서 설치할 경우 위 링크 페이지에 특수 지침이 있습니다.
-4. **Jupyter Notebook 설치**. [Jupyter 패키지 설치](https://pypi.org/project/jupyter/)가 필요합니다.
+1. **Jupyter Notebook 설치**. [Jupyter 패키지](https://pypi.org/project/jupyter/)를 설치해야 합니다.
-## 머신 러닝 작성 환경
+## 머신러닝 개발 환경
-Python 코드 개발 및 머신 러닝 모델 생성을 위해 **노트북**을 사용할 것입니다. 이 파일 형식은 데이터 과학자들이 자주 사용하는 도구로, `.ipynb` 확장자로 식별됩니다.
+Python 코드 작성과 머신러닝 모델 생성에 노트북을 사용할 것입니다. 이 파일 유형은 데이터 과학자들이 흔히 쓰는 도구로 `.ipynb` 확장자를 가집니다.
-노트북은 개발자가 코드를 작성하고, 코드에 대한 주석을 추가하며, 문서를 작성할 수 있는 대화형 환경을 제공합니다. 이는 실험적이거나 연구 지향적인 프로젝트에 매우 유용합니다.
+노트북은 개발자가 코딩과 노트, 문서 작성을 같이 할 수 있는 대화형 환경으로, 실험적이거나 연구 중심 프로젝트에 매우 유용합니다.
-[](https://youtu.be/7E-jC8FLA2E "초보자를 위한 머신 러닝 - 회귀 모델 구축을 위한 Jupyter 노트북 설정")
+[](https://youtu.be/7E-jC8FLA2E "초보자를 위한 ML - Jupyter 노트북 설정하여 회귀 모델 시작")
-> 🎥 위 이미지를 클릭하면 이 연습 과정을 다룬 짧은 영상을 볼 수 있습니다.
+> 🎥 위 이미지를 클릭하면 이 실습 과정을 담은 짧은 영상이 나옵니다.
-### 연습 - 노트북 작업하기
+### 실습 - 노트북 작업
-이 폴더에서 _notebook.ipynb_ 파일을 찾을 수 있습니다.
+이 폴더에 _notebook.ipynb_ 파일이 있습니다.
1. Visual Studio Code에서 _notebook.ipynb_를 엽니다.
- Jupyter 서버가 Python 3+와 함께 시작됩니다. 노트북의 특정 영역에서 `실행(run)`할 수 있는 코드 블록을 찾을 수 있습니다. 코드 블록은 재생 버튼 모양의 아이콘을 선택하여 실행할 수 있습니다.
+ Python 3+와 함께 Jupyter 서버가 시작됩니다. 노트북 내에서 `실행(run)` 가능한 코드 조각들을 볼 수 있습니다. 재생 버튼 모양 아이콘을 클릭해 코드 블록을 실행할 수 있습니다.
-2. `md` 아이콘을 선택하고, 다음 텍스트를 추가하여 약간의 마크다운을 작성합니다: **# Welcome to your notebook**.
+1. `md` 아이콘을 선택하고 마크다운 문법으로 다음 텍스트를 입력하세요: **# Welcome to your notebook**.
- 다음으로, Python 코드를 추가합니다.
+ 이어서 Python 코드를 몇 줄 추가합니다.
-3. 코드 블록에 **print('hello notebook')**을 입력합니다.
-4. 화살표를 선택하여 코드를 실행합니다.
+1. 코드 블록에 **print('hello notebook')** 을 입력합니다.
+1. 실행 화살표를 선택하여 코드를 실행하세요.
- 출력 결과로 다음과 같은 문구가 표시됩니다:
+ 출력문이 나타나는 것을 볼 수 있을 것입니다:
```output
hello notebook
```
-
+
-코드와 함께 주석을 추가하여 노트북을 스스로 문서화할 수 있습니다.
+코드 사이에 주석을 넣어 노트북을 자가 문서화할 수 있습니다.
-✅ 웹 개발자의 작업 환경과 데이터 과학자의 작업 환경이 얼마나 다른지 잠시 생각해 보세요.
+✅ 웹 개발자 작업 환경과 데이터 과학자의 작업 환경이 얼마나 다른지 잠시 생각해 보세요.
## Scikit-learn 시작하기
-이제 로컬 환경에 Python이 설정되었고, Jupyter 노트북에 익숙해졌으니, Scikit-learn에도 익숙해져 봅시다. Scikit-learn은 머신 러닝 작업을 수행하는 데 도움을 주는 [광범위한 API](https://scikit-learn.org/stable/modules/classes.html#api-ref)를 제공합니다.
+로컬 환경에 Python을 설치하고 Jupyter 노트북을 익혔다면, 이제 Scikit-learn도 편안하게 사용해 봅시다 (`sci`는 `science`의 발음과 같습니다). Scikit-learn은 머신러닝 작업에 도움이 되는 [광범위한 API](https://scikit-learn.org/stable/modules/classes.html#api-ref)를 제공합니다.
-Scikit-learn의 [웹사이트](https://scikit-learn.org/stable/getting_started.html)에 따르면, "Scikit-learn은 지도 학습 및 비지도 학습을 지원하는 오픈 소스 머신 러닝 라이브러리입니다. 또한 모델 피팅, 데이터 전처리, 모델 선택 및 평가, 기타 다양한 유틸리티를 제공합니다."
+공식 [웹사이트](https://scikit-learn.org/stable/getting_started.html)에 따르면 "Scikit-learn은 감독 및 비감독 학습을 지원하는 오픈 소스 머신러닝 라이브러리입니다. 모델 적합, 데이터 전처리, 모델 선택 및 평가, 기타 다양한 유틸리티를 제공합니다."
-이 강의에서는 Scikit-learn 및 기타 도구를 사용하여 '전통적인 머신 러닝' 작업을 수행하는 머신 러닝 모델을 구축할 것입니다. 신경망과 딥러닝은 다루지 않으며, 이는 곧 제공될 'AI for Beginners' 커리큘럼에서 다룰 예정입니다.
+이 과정에서 Scikit-learn과 기타 도구를 사용해 전통적인 머신러닝 작업을 수행하는 모델을 구축할 것입니다. 신경망과 딥러닝은 의도적으로 제외했으며, 향후 'AI for Beginners' 커리큘럼에서 자세히 다룰 예정입니다.
-Scikit-learn은 모델을 구축하고 평가하는 과정을 간단하게 만들어 줍니다. 주로 숫자 데이터를 사용하는 데 초점이 맞춰져 있으며, 학습 도구로 사용할 수 있는 여러 가지 사전 제작된 데이터셋을 포함하고 있습니다. 또한 학생들이 시도해볼 수 있는 사전 제작된 모델도 포함되어 있습니다. 이제 사전 패키지 데이터와 기본 데이터를 사용하여 첫 번째 머신 러닝 모델을 구축하는 과정을 살펴봅시다.
+Scikit-learn은 모델을 쉽게 구축하고 평가할 수 있게 해 줍니다. 주로 수치 데이터를 사용하는 데 중점을 두며, 학습 도구로 사용할 몇 가지 준비된 데이터셋도 포함되어 있습니다. 학생들이 시도해볼 수 있는 사전 제작 모델도 있습니다. 먼저, 기본 데이터를 사용해 미리 포장된 데이터 로딩과 내장 추정기를 사용하는 기본 ML 모델 과정을 살펴봅시다.
-## 연습 - 첫 번째 Scikit-learn 노트북
+## 실습 - 첫 번째 Scikit-learn 노트북
> 이 튜토리얼은 Scikit-learn 웹사이트의 [선형 회귀 예제](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py)에서 영감을 받았습니다.
-[](https://youtu.be/2xkXL5EUpS0 "초보자를 위한 머신 러닝 - Python에서 첫 번째 선형 회귀 프로젝트")
-> 🎥 위 이미지를 클릭하면 이 연습 과정을 다룬 짧은 영상을 볼 수 있습니다.
+[](https://youtu.be/2xkXL5EUpS0 "초보자를 위한 ML - Python에서 첫 선형 회귀 프로젝트")
-이 강의와 관련된 _notebook.ipynb_ 파일에서 모든 셀을 '휴지통' 아이콘을 눌러 비웁니다.
+> 🎥 위 이미지를 클릭하면 이 실습에 관한 짧은 영상이 나옵니다.
-이 섹션에서는 학습 목적으로 Scikit-learn에 내장된 당뇨병 관련 소규모 데이터셋을 사용합니다. 당뇨병 환자에 대한 치료를 테스트하려 한다고 가정해 봅시다. 머신 러닝 모델은 변수 조합을 기반으로 어떤 환자가 치료에 더 잘 반응할지 결정하는 데 도움을 줄 수 있습니다. 시각화된 매우 기본적인 회귀 모델조차도 이론적 임상 시험을 조직하는 데 도움이 되는 변수에 대한 정보를 보여줄 수 있습니다.
+_notebook.ipynb_ 파일에서, 모든 셀을 '휴지통' 아이콘을 눌러 삭제하세요.
-✅ 회귀 방법에는 여러 가지가 있으며, 어떤 방법을 선택할지는 찾고자 하는 답에 따라 다릅니다. 예를 들어, 특정 나이에 대한 예상 키를 예측하려면 선형 회귀를 사용합니다. 이는 **숫자 값**을 찾고 있기 때문입니다. 반면, 특정 요리가 비건인지 아닌지를 알아내고 싶다면 **범주 할당**을 찾고 있는 것이므로 로지스틱 회귀를 사용합니다. 이후에 로지스틱 회귀에 대해 더 배우게 될 것입니다. 데이터를 통해 어떤 질문을 할 수 있을지, 그리고 어떤 방법이 더 적합할지 잠시 생각해 보세요.
+여기서는 학습 목적용으로 Scikit-learn에 내장된 당뇨병에 관한 작은 데이터셋을 사용합니다. 당뇨 환자 치료법을 평가해 보고자 한다고 가정해 보세요. 머신러닝 모델은 변수 조합에 근거해 어떤 환자가 치료에 더 잘 반응할지 예측하는 데 도움을 줄 수 있습니다. 시각화된 기본 회귀 모델조차, 이론적 임상시험 구성에 도움이 될 변수 정보를 보여줄 수 있습니다.
-이제 시작해 봅시다.
+✅ 회귀 방법에는 여러 유형이 있으며 선택하는 방법은 찾고자 하는 답변에 달려 있습니다. 특정 연령대 사람의 예상 키를 예측하고 싶다면 선형 회귀를 사용합니다. 이는 **수치 값을** 찾기 때문입니다. 어떤 요리가 비건으로 분류되어야 하는지 알고 싶다면, **범주 할당** 문제이므로 로지스틱 회귀를 사용합니다. 로지스틱 회귀는 나중에 더 배울 것입니다. 데이터에 대해 질문할 수 있는 것들과 어떤 방법이 적절할지 잠시 생각해 보세요.
+
+이제 이 작업을 시작해 봅시다.
### 라이브러리 가져오기
-이 작업을 위해 몇 가지 라이브러리를 가져옵니다:
+이 작업을 위해 일부 라이브러리를 불러오겠습니다:
-- **matplotlib**. [그래프 도구](https://matplotlib.org/)로 유용하며, 선 그래프를 생성하는 데 사용할 것입니다.
-- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html)는 Python에서 숫자 데이터를 처리하는 데 유용한 라이브러리입니다.
-- **sklearn**. 이는 [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) 라이브러리입니다.
+- **matplotlib**. 유용한 [그래프 도구](https://matplotlib.org/)이며 선 그래프를 만드는 데 사용할 것입니다.
+- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html)는 파이썬에서 수치 데이터를 다루는 데 유용한 라이브러리입니다.
+- **sklearn**. 이것은 [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) 라이브러리입니다.
-작업에 필요한 라이브러리를 가져옵니다.
+작업을 돕기 위해 라이브러리를 임포트하세요.
-1. 다음 코드를 입력하여 라이브러리를 가져옵니다:
+1. 다음 코드를 입력하여 임포트합니다:
```python
import matplotlib.pyplot as plt
@@ -122,26 +123,26 @@ Scikit-learn은 모델을 구축하고 평가하는 과정을 간단하게 만
from sklearn import datasets, linear_model, model_selection
```
- 위 코드에서는 `matplotlib`, `numpy`를 가져오고, `sklearn`에서 `datasets`, `linear_model`, `model_selection`을 가져옵니다. `model_selection`은 데이터를 학습 및 테스트 세트로 나누는 데 사용됩니다.
+ 위 코드는 `matplotlib`, `numpy`를 임포트하며, `sklearn`에서 `datasets`, `linear_model`, `model_selection`을 가져옵니다. `model_selection`은 데이터를 훈련 세트와 테스트 세트로 분할하는 데 사용됩니다.
### 당뇨병 데이터셋
-내장된 [당뇨병 데이터셋](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset)에는 당뇨병과 관련된 442개의 샘플 데이터와 10개의 특징 변수가 포함되어 있습니다. 일부 변수는 다음과 같습니다:
+내장된 [당뇨병 데이터셋](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset)은 당뇨병 관련 442개의 샘플과 10개의 특성 변수를 포함합니다. 일부 변수는 다음과 같습니다:
-- age: 나이 (연도 단위)
-- bmi: 체질량지수
+- age: 나이(년 단위)
+- bmi: 체질량 지수
- bp: 평균 혈압
-- s1 tc: T-세포 (백혈구의 한 종류)
+- s1 tc: T-세포(백혈구의 일종)
-✅ 이 데이터셋에는 당뇨병 연구에서 중요한 특징 변수로 '성별' 개념이 포함되어 있습니다. 많은 의료 데이터셋에는 이러한 이진 분류가 포함되어 있습니다. 이러한 분류가 인구의 특정 부분을 치료에서 배제할 가능성에 대해 잠시 생각해 보세요.
+✅ 이 데이터셋은 연구에 중요한 '성별'을 특성 변수로 포함합니다. 많은 의학 데이터셋에 이런 이진 분류가 포함되어 있습니다. 이런 분류 기준이 인구 일부를 치료 대상에서 제외할 수 있다는 점을 생각해보세요.
-이제 X와 y 데이터를 로드합니다.
+이제 X와 y 데이터를 불러옵니다.
-> 🎓 이는 지도 학습(supervised learning)이며, 명명된 'y' 타겟이 필요합니다.
+> 🎓 이 것은 감독 학습이므로 'y' 타겟이 필요하다는 점을 기억하세요.
-새로운 코드 셀에서 `load_diabetes()`를 호출하여 당뇨병 데이터셋을 로드합니다. 입력값 `return_X_y=True`는 `X`가 데이터 행렬이 되고, `y`가 회귀 타겟이 됨을 나타냅니다.
+새로운 코드 셀에서 `load_diabetes()`를 호출해 당뇨병 데이터셋을 불러오세요. 입력값 `return_X_y=True`는 `X`가 데이터 매트릭스, `y`가 회귀 타겟임을 나타냅니다.
-1. 데이터 행렬의 모양과 첫 번째 요소를 표시하는 몇 가지 print 명령을 추가합니다:
+1. 데이터 매트릭스의 형태와 첫 번째 요소를 출력하는 코드를 추가합니다:
```python
X, y = datasets.load_diabetes(return_X_y=True)
@@ -149,9 +150,9 @@ Scikit-learn은 모델을 구축하고 평가하는 과정을 간단하게 만
print(X[0])
```
- 반환값은 튜플입니다. 튜플의 첫 번째 두 값을 각각 `X`와 `y`에 할당합니다. [튜플에 대해 더 알아보기](https://wikipedia.org/wiki/Tuple).
+ 반환되는 값은 튜플입니다. 이 튜플의 처음 두 값을 각각 `X`와 `y`로 할당하는 것입니다. [튜플에 대해 더 알아보기](https://wikipedia.org/wiki/Tuple).
- 이 데이터는 442개의 항목으로 구성되어 있으며, 각 항목은 10개의 요소로 이루어진 배열로 되어 있음을 확인할 수 있습니다:
+ 이 데이터가 442 개의 항목으로 구성되며 각 항목은 10요소 배열임을 알 수 있습니다:
```text
(442, 10)
@@ -159,39 +160,39 @@ Scikit-learn은 모델을 구축하고 평가하는 과정을 간단하게 만
-0.04340085 -0.00259226 0.01990842 -0.01764613]
```
- ✅ 데이터와 회귀 타겟 간의 관계에 대해 잠시 생각해 보세요. 선형 회귀는 특징 X와 타겟 변수 y 간의 관계를 예측합니다. 당뇨병 데이터셋의 [타겟](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset)을 문서에서 찾을 수 있나요? 이 데이터셋은 무엇을 보여주고 있나요?
+ ✅ 데이터와 회귀 타겟 간의 관계를 잠시 생각해보세요. 선형 회귀는 특성 X와 타겟 변수 y 간 관계를 예측합니다. 문서에서 당뇨병 데이터셋의 [타겟](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset)을 찾을 수 있나요? 이 타겟을 고려할 때 이 데이터셋이 무엇을 보여주는지 생각해 보세요.
-2. 다음으로, 데이터셋의 3번째 열을 선택하여 플롯합니다. `:` 연산자를 사용하여 모든 행을 선택한 다음, 인덱스(2)를 사용하여 3번째 열을 선택할 수 있습니다. 또한 `reshape(n_rows, n_columns)`를 사용하여 데이터를 2D 배열로 재구성할 수 있습니다. 매개변수 중 하나가 -1이면 해당 차원이 자동으로 계산됩니다.
+2. 다음으로, 데이터셋의 일부를 선택해 플로팅합니다. 데이터셋의 3번째 열을 선택하세요. `:` 연산자로 모든 행을 선택하고 인덱스 2로 3번째 열을 선택할 수 있습니다. 플로팅에 필요한 2D 배열로 변경하려면 `reshape(n_rows, n_columns)`를 사용하세요. 매개변수 중 하나가 -1이면 해당 차원이 자동 계산됩니다.
```python
X = X[:, 2]
X = X.reshape((-1,1))
```
- ✅ 데이터의 모양을 확인하려면 언제든지 데이터를 출력하세요.
+ ✅ 데이터 모양을 확인하기 위해 언제든 출력해 보세요.
-3. 이제 데이터를 플롯할 준비가 되었으니, 머신이 이 데이터셋의 숫자 간 논리적 분리를 결정할 수 있는지 확인할 수 있습니다. 이를 위해 데이터(X)와 타겟(y)을 테스트 및 학습 세트로 나눌 필요가 있습니다. Scikit-learn은 이를 간단히 수행할 수 있는 방법을 제공합니다. 특정 지점에서 테스트 데이터를 나눌 수 있습니다.
+3. 이제 플로팅할 데이터가 준비되었으니, 머신이 이 데이터 숫자 사이에 논리적 구분을 짓도록 해봅니다. 이를 위해서는 데이터(X)와 타겟(y)을 테스트 세트와 학습 세트로 분할해야 합니다. Scikit-learn에는 이를 쉽게 하는 방법이 있습니다. 원하는 지점에서 테스트 데이터를 분할할 수 있습니다.
```python
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33)
```
-4. 이제 모델을 학습시킬 준비가 되었습니다! 선형 회귀 모델을 로드하고, `model.fit()`을 사용하여 X 및 y 학습 세트로 학습시킵니다:
+4. 이제 모델 학습 준비가 되었습니다! 선형 회귀 모델을 불러와 `model.fit()`으로 X와 y 학습 세트로 학습시킵니다:
```python
model = linear_model.LinearRegression()
model.fit(X_train, y_train)
```
- ✅ `model.fit()`은 TensorFlow와 같은 많은 머신 러닝 라이브러리에서 볼 수 있는 함수입니다.
+ ✅ `model.fit()` 함수는 TensorFlow 등 많은 ML 라이브러리에서 공통으로 사용됩니다.
-5. 그런 다음, `predict()` 함수를 사용하여 테스트 데이터를 기반으로 예측을 생성합니다. 이는 데이터 그룹 간의 선을 그리는 데 사용됩니다.
+5. 그런 다음, `predict()` 함수를 이용해 테스트 데이터를 기반으로 예측을 만듭니다. 이를 통해 데이터 그룹 사이에 선을 그릴 수 있습니다.
```python
y_pred = model.predict(X_test)
```
-6. 이제 데이터를 플롯에 표시할 시간입니다. Matplotlib은 이 작업에 매우 유용한 도구입니다. 모든 X 및 y 테스트 데이터의 산점도를 생성하고, 예측을 사용하여 데이터 그룹 간 가장 적절한 위치에 선을 그립니다.
+6. 이제 데이터를 그래프로 나타냅니다. Matplotlib은 이를 위해 매우 유용합니다. 모든 X와 y 테스트 데이터를 산점도로 나타내고, 모델의 데이터 그룹 간 가장 적절한 위치에 예측된 선을 그리세요.
```python
plt.scatter(X_test, y_test, color='black')
@@ -202,23 +203,24 @@ Scikit-learn은 모델을 구축하고 평가하는 과정을 간단하게 만
plt.show()
```
- 
-✅ 여기서 무슨 일이 일어나고 있는지 잠시 생각해 보세요. 많은 작은 데이터 점들을 관통하는 직선이 있습니다. 하지만 이 직선이 정확히 무엇을 하고 있는 걸까요? 이 직선을 사용하여 새로운, 보지 못한 데이터 포인트가 플롯의 y축과 어떤 관계를 맺어야 하는지 예측할 수 있다는 것을 이해할 수 있나요? 이 모델의 실질적인 사용 방법을 말로 표현해 보세요.
+ 
+
-축하합니다! 첫 번째 선형 회귀 모델을 구축하고, 이를 사용해 예측을 생성한 뒤 플롯에 표시했습니다!
+ ✅ 여기서 무슨 일이 일어나고 있는지 조금 생각해 보세요. 여러 개의 작은 데이터 점을 통과하는 직선이 있는데, 정확히 무엇을 하고 있는 걸까요? 이 직선을 사용하여 새로운, 본 적 없는 데이터 포인트가 플롯의 y축과 어떤 관계를 맺어야 하는지 예측할 수 있어야 한다는 점을 볼 수 있나요? 이 모델의 실질적인 용도를 말로 표현해 보세요.
+
+축하합니다, 첫 번째 선형 회귀 모델을 만들고, 이를 사용해 예측을 수행했으며, 플롯에 표시했습니다!
---
## 🚀도전 과제
-이 데이터셋에서 다른 변수를 플롯해 보세요. 힌트: 이 줄을 수정하세요: `X = X[:,2]`. 이 데이터셋의 목표를 고려했을 때, 당뇨병이 질병으로서 어떻게 진행되는지에 대해 무엇을 발견할 수 있나요?
-
+이 데이터셋에서 다른 변수를 플로팅해 보세요. 힌트: 이 줄을 수정하세요: `X = X[:,2]`. 이 데이터셋의 목표 값을 고려할 때, 당뇨병이라는 질병의 진행에 대해 무엇을 발견할 수 있나요?
## [강의 후 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
-## 복습 및 자기 학습
+## 복습 & 자기 주도 학습
-이 튜토리얼에서는 단변량 또는 다변량 선형 회귀가 아닌 간단한 선형 회귀를 사용했습니다. 이러한 방법들 간의 차이에 대해 조금 읽어보거나 [이 비디오](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef)를 확인해 보세요.
+이 튜토리얼에서는 단순 선형 회귀를 다뤘으며, 단변량 또는 다중 선형 회귀와는 다릅니다. 이 방법들 간의 차이점에 대해 조금 읽어 보거나, [이 영상](https://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)을 통해 이해를 심화해 보세요.
+회귀 개념에 대해 더 읽고, 이 기법으로 어떤 질문들에 답할 수 있는지 생각해 보세요. 이해를 깊게 하려면 이 [튜토리얼](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott)을 통해 학습해 보세요.
## 과제
@@ -226,5 +228,7 @@ Scikit-learn은 모델을 구축하고 평가하는 과정을 간단하게 만
---
-**면책 조항**:
-이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서를 해당 언어로 작성된 상태에서 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.
\ No newline at end of file
+
+**면책 조항**:
+이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 기하기 위해 노력하고 있으나, 자동 번역은 오류나 부정확한 부분이 있을 수 있음을 유의하시기 바랍니다. 원본 문서의 원어본이 권위 있는 자료로 간주되어야 합니다. 중요한 정보의 경우, 전문가의 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.
+
\ No newline at end of file
diff --git a/translations/ko/2-Regression/2-Data/README.md b/translations/ko/2-Regression/2-Data/README.md
index f8266cfd7..23bef9fbd 100644
--- a/translations/ko/2-Regression/2-Data/README.md
+++ b/translations/ko/2-Regression/2-Data/README.md
@@ -1,62 +1,62 @@
# Scikit-learn을 사용한 회귀 모델 구축: 데이터 준비 및 시각화
-
+
-인포그래픽 제작: [Dasani Madipalli](https://twitter.com/dasani_decoded)
+인포그래픽 제작자 [Dasani Madipalli](https://twitter.com/dasani_decoded)
## [강의 전 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
-> ### [이 강의는 R에서도 제공됩니다!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
+> ### [이 강의는 R 버전도 있습니다!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
## 소개
-Scikit-learn을 사용하여 머신러닝 모델을 구축하기 위한 도구를 준비했으니, 이제 데이터를 분석하고 질문을 던질 준비가 되었습니다. 데이터를 다루고 ML 솔루션을 적용할 때, 올바른 질문을 던지는 것이 데이터의 잠재력을 제대로 활용하는 데 매우 중요합니다.
+이제 Scikit-learn을 사용해 머신러닝 모델 구축을 시작할 준비가 되었으니 데이터에 질문을 던질 준비가 되었습니다. 데이터를 다루고 ML 솔루션을 적용할 때, 데이터셋의 잠재력을 제대로 활용하려면 올바른 질문을 하는 방법을 이해하는 것이 매우 중요합니다.
-이 강의에서 배우게 될 내용:
+이 강의에서 여러분은 다음을 배우게 됩니다:
- 모델 구축을 위한 데이터 준비 방법
- Matplotlib을 사용한 데이터 시각화 방법
+- 더 표현력 있는 데이터 시각화를 위한 Seaborn 활용법
-## 데이터에 올바른 질문 던지기
+## 데이터에 올바른 질문하기
-답을 얻고자 하는 질문은 어떤 유형의 ML 알고리즘을 사용할지 결정합니다. 그리고 얻는 답변의 품질은 데이터의 특성에 크게 좌우됩니다.
+어떤 질문을 하느냐에 따라 사용할 ML 알고리즘 종류가 결정됩니다. 그리고 돌아오는 답변의 품질은 데이터의 특성에 크게 좌우됩니다.
-이 강의에서 제공된 [데이터](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv)를 살펴보세요. 이 .csv 파일을 VS Code에서 열어보면, 빈칸과 문자열 및 숫자 데이터가 혼합되어 있음을 바로 확인할 수 있습니다. 또한 'Package'라는 이상한 열이 있는데, 데이터가 'sacks', 'bins' 등 다양한 값으로 구성되어 있습니다. 사실, 이 데이터는 약간 엉망입니다.
+이 강의에 제공된 [데이터](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv)를 살펴보세요. VS Code에서 이 .csv 파일을 열 수 있습니다. 빠르게 살펴봐도 빈칸과 문자열과 숫자 데이터가 혼합되어 있음을 알 수 있습니다. 'Package'라는 이상한 컬럼도 있는데, 여기 데이터는 'sacks', 'bins' 등 다양한 값이 혼합되어 있습니다. 실제로 데이터가 꽤 엉망입니다.
-[](https://youtu.be/5qGjczWTrDQ "ML 초보자를 위한 데이터셋 분석 및 정리 방법")
+[](https://youtu.be/5qGjczWTrDQ "초보자를 위한 ML - 데이터셋 분석 및 정리 방법")
-> 🎥 위 이미지를 클릭하면 이 강의를 위한 데이터를 준비하는 과정을 다룬 짧은 영상을 볼 수 있습니다.
+> 🎥 위 이미지 클릭 시 이 강의 데이터 준비 과정을 다룬 짧은 영상이 재생됩니다.
-사실, ML 모델을 바로 사용할 수 있도록 완벽히 준비된 데이터셋을 받는 경우는 드뭅니다. 이 강의에서는 표준 Python 라이브러리를 사용하여 원시 데이터를 준비하는 방법을 배우게 됩니다. 또한 데이터를 시각화하는 다양한 기술도 배울 것입니다.
+실제로 즉시 사용할 수 있는 완벽한 데이터셋을 제공받는 경우는 드뭅니다. 이 강의에서는 표준 Python 라이브러리를 사용해 원시 데이터셋을 준비하는 방법과 데이터를 시각화하는 다양한 기법을 배웁니다.
## 사례 연구: '호박 시장'
-이 폴더의 루트 `data` 폴더에는 [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv)라는 .csv 파일이 포함되어 있으며, 이는 도시별로 그룹화된 호박 시장에 대한 1757개의 데이터 라인을 포함하고 있습니다. 이 데이터는 미국 농무부(USDA)가 배포한 [특수 작물 터미널 시장 표준 보고서](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice)에서 추출한 원시 데이터입니다.
+이 폴더에는 루트 `data` 폴더 내 [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv)라는 1757행의 호박 시장 도시별 그룹화 데이터 CSV 파일이 있습니다. 이 데이터는 미국 농무부가 배포하는 [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice)에서 추출한 원시 데이터입니다.
### 데이터 준비
-이 데이터는 공공 도메인에 속합니다. USDA 웹사이트에서 도시별로 여러 개의 파일로 다운로드할 수 있습니다. 너무 많은 파일을 방지하기 위해 모든 도시 데이터를 하나의 스프레드시트로 결합했으므로, 이미 데이터를 약간 _준비_한 상태입니다. 이제 데이터를 좀 더 자세히 살펴보겠습니다.
+이 데이터는 퍼블릭 도메인 데이터입니다. USDA 웹사이트에서 도시별로 여러 개의 개별 파일로 다운로드 가능합니다. 파일 수가 너무 많지 않도록 모든 도시 데이터를 하나로 합쳐 _일부_ 데이터 준비를 이미 진행했습니다. 다음으로 데이터를 좀 더 자세히 살펴보겠습니다.
### 호박 데이터 - 초기 결론
-이 데이터에서 무엇을 발견할 수 있나요? 이미 문자열, 숫자, 빈칸 및 이상한 값이 혼합되어 있다는 것을 확인했습니다.
+데이터에서 무엇을 알아차렸나요? 문자열, 숫자, 빈칸 및 이상한 값들이 혼재되어 있음을 이미 보았습니다. 이를 이해해야 합니다.
-회귀 기법을 사용하여 이 데이터에 어떤 질문을 던질 수 있을까요? 예를 들어, "특정 월에 판매되는 호박의 가격을 예측하라"는 질문은 어떨까요? 데이터를 다시 살펴보면, 이 작업에 필요한 데이터 구조를 만들기 위해 몇 가지 변경이 필요하다는 것을 알 수 있습니다.
+회귀 분석 기법을 사용해 이 데이터에 어떤 질문을 던질 수 있을까요? 예를 들면 "특정 월에 판매되는 호박의 가격 예측하기" 같은 질문입니다. 데이터를 다시보면, 이 작업에 필요한 데이터 구조를 만들기 위해 수정해야 할 점들이 있습니다.
+## 연습 문제 - 호박 데이터 분석하기
-## 실습 - 호박 데이터 분석
+데이터를 다루기 위해 매우 유용한 도구인 [Pandas](https://pandas.pydata.org/) (`Python Data Analysis`의 약자)를 사용해 이 호박 데이터를 분석하고 준비해 봅시다.
-[판다스(Pandas)](https://pandas.pydata.org/)를 사용해 봅시다. 판다스는 데이터를 분석하고 준비하는 데 매우 유용한 도구입니다.
+### 먼저, 누락된 날짜 확인
-### 첫 번째 단계: 누락된 날짜 확인
+누락된 날짜가 있는지 확인하는 단계부터 시작하세요:
-먼저 누락된 날짜를 확인하기 위한 단계를 수행해야 합니다.
+1. 날짜를 월 포맷으로 변환 (미국식 날짜 `MM/DD/YYYY` 형식).
+2. 월 정보를 새 열로 추출.
-1. 날짜를 월 형식으로 변환합니다(미국 날짜 형식은 `MM/DD/YYYY`입니다).
-2. 월을 새 열로 추출합니다.
+Visual Studio Code에서 _notebook.ipynb_ 파일을 열고 스프레드시트를 새 Pandas 데이터프레임으로 임포트 하세요.
-Visual Studio Code에서 _notebook.ipynb_ 파일을 열고 스프레드시트를 새 판다스 데이터프레임으로 가져옵니다.
-
-1. `head()` 함수를 사용하여 처음 다섯 줄을 확인합니다.
+1. `head()` 함수를 사용해 처음 다섯 행을 봅니다.
```python
import pandas as pd
@@ -64,30 +64,30 @@ Visual Studio Code에서 _notebook.ipynb_ 파일을 열고 스프레드시트를
pumpkins.head()
```
- ✅ 마지막 다섯 줄을 확인하려면 어떤 함수를 사용해야 할까요?
+ ✅ 마지막 다섯 행을 보려면 어떤 함수를 사용하나요?
-1. 현재 데이터프레임에 누락된 데이터가 있는지 확인합니다.
+1. 현재 데이터프레임에 누락된 데이터가 있는지 확인:
```python
pumpkins.isnull().sum()
```
- 누락된 데이터가 있지만, 현재 작업에는 문제가 없을 수도 있습니다.
+ 누락된 데이터가 있지만, 당면한 작업에 크게 지장 없을 수도 있습니다.
-1. 데이터프레임을 더 쉽게 작업할 수 있도록 `loc` 함수를 사용하여 필요한 열만 선택합니다. `loc` 함수는 원래 데이터프레임에서 행(첫 번째 매개변수)과 열(두 번째 매개변수)을 추출합니다. 아래의 경우 `:`는 "모든 행"을 의미합니다.
+1. 작업하기 쉬운 데이터프레임을 만들기 위해 필요한 열만 선택하세요. `loc` 함수를 사용하면 원본 데이터프레임에서 행(첫 번째 매개변수)과 열(두 번째 매개변수)를 선택할 수 있습니다. 아래 `:` 는 "모든 행"을 의미합니다.
```python
columns_to_select = ['Package', 'Low Price', 'High Price', 'Date']
pumpkins = pumpkins.loc[:, columns_to_select]
```
-### 두 번째 단계: 호박의 평균 가격 결정
+### 두 번째로, 호박 평균 가격 결정
-특정 월에 호박의 평균 가격을 결정하는 방법을 생각해 보세요. 이 작업에 어떤 열이 필요할까요? 힌트: 3개의 열이 필요합니다.
+특정 월의 호박 평균 가격을 어떻게 구할지 생각해 봅시다. 어떤 열을 선택해야 할까요? 힌트: 3개의 열이 필요합니다.
-해결 방법: `Low Price`와 `High Price` 열의 평균을 계산하여 새 Price 열을 채우고, Date 열을 월만 표시하도록 변환합니다. 다행히 위의 확인에 따르면 날짜와 가격에 누락된 데이터는 없습니다.
+해결책: `Low Price`와 `High Price` 열의 평균 값을 새 `Price` 열에 넣고, `Date` 열을 월 정보만 보여주도록 변환합니다. 다행히 위 확인에서 날짜나 가격에 누락된 데이터가 없었습니다.
-1. 평균을 계산하려면 다음 코드를 추가하세요.
+1. 평균을 계산하는 코드를 추가하세요:
```python
price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2
@@ -96,37 +96,37 @@ Visual Studio Code에서 _notebook.ipynb_ 파일을 열고 스프레드시트를
```
- ✅ `print(month)`를 사용하여 데이터를 확인할 수 있습니다.
+ ✅ 확인용으로 `print(month)` 등을 사용해 데이터를 출력해도 좋습니다.
-2. 변환된 데이터를 새 판다스 데이터프레임에 복사합니다.
+2. 변환한 데이터를 새로운 Pandas 데이터프레임으로 복사하세요:
```python
new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price})
```
- 데이터프레임을 출력하면 새 회귀 모델을 구축할 수 있는 깨끗하고 정돈된 데이터셋을 확인할 수 있습니다.
+ 데이터프레임을 출력하면 깔끔하고 정돈된 새로운 데이터셋을 볼 수 있으며 이를 기반으로 회귀 모델을 구축할 수 있습니다.
-### 그런데! 이상한 점이 있습니다
+### 잠깐! 이상한 점이 있습니다
-`Package` 열을 보면, 호박은 다양한 구성으로 판매됩니다. 일부는 '1 1/9 bushel' 단위로, 일부는 '1/2 bushel' 단위로, 일부는 호박 개별 단위로, 일부는 파운드 단위로, 그리고 일부는 다양한 크기의 큰 상자로 판매됩니다.
+`Package` 열을 보면 호박이 여러 형태로 판매됩니다. '1 1/9 bushel', '1/2 bushel' 단위로 팔리기도 하고, 개별 호박 단위, 파운드 단위, 크기가 다른 큰 상자 단위 등 다양합니다.
-> 호박은 일관되게 무게를 측정하기가 매우 어렵습니다.
+> 호박은 일관되게 무게를 재기 매우 어려운 것 같습니다
-원래 데이터를 살펴보면, `Unit of Sale`이 'EACH' 또는 'PER BIN'인 경우 `Package` 유형이 인치 단위, 빈 단위 또는 'each'로 표시됩니다. 호박은 일관되게 무게를 측정하기가 매우 어려운 것 같습니다. 따라서 `Package` 열에 'bushel' 문자열이 포함된 호박만 선택하여 필터링해 봅시다.
+원본 데이터를 더 들여다보면 `Unit of Sale`이 'EACH' 또는 'PER BIN'인 항목은 `Package` 타입이 인치 단위, 빈 단위, 또는 'each'로 표시되어 있는 것을 알 수 있습니다. 호박은 정량적으로 무게 측정이 어렵기 때문에, `Package` 열에 'bushel' 문자열이 포함된 항목만 선택해 필터링해 보겠습니다.
-1. 초기 .csv 가져오기 아래에 필터를 추가하세요.
+1. 파일 상단, 초기 .csv 임포트 아래에 필터를 추가하세요:
```python
pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]
```
- 데이터를 출력하면 이제 'bushel'이 포함된 약 415개의 데이터 행만 가져오는 것을 확인할 수 있습니다.
+ 이제 데이터를 출력하면 약 415행 정도로 버쉘 단위 호박 데이터만 얻은 것을 볼 수 있습니다.
-### 그런데! 해야 할 일이 하나 더 있습니다
+### 잠깐! 한 가지 작업이 더 필요합니다
-버셸 양이 행마다 다르다는 것을 눈치챘나요? 가격을 표준화하여 버셸 단위로 가격을 표시하도록 수학적 계산을 수행해야 합니다.
+버쉘 단위가 행마다 다름을 알았나요? 가격을 버쉘 단위로 표준화해야 하니, 수학적 계산을 통해 정규화하세요.
-1. 새 데이터프레임을 생성하는 블록 아래에 다음 줄을 추가하세요.
+1. `new_pumpkins` 데이터프레임 생성 블록 다음에 아래 코드를 추가합니다:
```python
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9)
@@ -134,38 +134,38 @@ Visual Studio Code에서 _notebook.ipynb_ 파일을 열고 스프레드시트를
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2)
```
-✅ [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308)에 따르면, 버셸의 무게는 농산물의 종류에 따라 다릅니다. 이는 부피 측정 단위입니다. "예를 들어, 토마토 한 버셸은 56파운드로 간주됩니다... 잎과 채소는 더 많은 공간을 차지하지만 무게는 적기 때문에 시금치 한 버셸은 20파운드에 불과합니다." 이는 매우 복잡합니다! 버셸을 파운드로 변환하는 작업은 생략하고 대신 버셸 단위로 가격을 표시합시다. 그러나 호박의 버셸을 연구하면서 데이터의 특성을 이해하는 것이 얼마나 중요한지 알게 됩니다!
+✅ [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308)에 따르면 버쉘은 부피 단위이기 때문에 농산물 종류에 따라 무게가 다릅니다. "예를 들어 토마토 한 버쉘은 56파운드여야 합니다... 잎채소는 부피는 크지만 무게가 적어 시금치 한 버쉘은 20파운드에 불과합니다." 매우 복잡합니다! 버쉘-파운드 변환 대신 버쉘 단위로 가격을 책정합시다. 버쉘 단위 호박 연구는 데이터 특성을 이해하는 것이 얼마나 중요한지 보여줍니다!
-이제 버셸 측정 단위에 따라 가격을 분석할 수 있습니다. 데이터를 한 번 더 출력하면 표준화된 데이터를 확인할 수 있습니다.
+이제 버쉘 단위 가격을 분석할 수 있습니다. 데이터를 한 번 더 출력해 보면 표준화된 모습을 확인할 수 있습니다.
-✅ 반 버셸로 판매되는 호박이 매우 비싸다는 것을 눈치챘나요? 왜 그런지 알아낼 수 있나요? 힌트: 작은 호박은 큰 호박보다 훨씬 비쌉니다. 이는 큰 속이 빈 파이 호박 하나가 차지하는 공간 때문에 버셸당 훨씬 더 많은 작은 호박이 포함되기 때문입니다.
+✅ 반 버쉘 단위의 호박 가격이 매우 비싼 점 눈치 챘나요? 왜 그런지 이유를 생각해 보세요. 힌트: 작은 호박은 큰 호박보다 버쉘당 훨씬 비싸게 평가되며, 아마도 큰 빈 구멍이 있는 파이 호박으로 인해 버쉘당 개수가 훨씬 많기 때문입니다.
## 시각화 전략
-데이터 과학자의 역할 중 하나는 자신이 작업하는 데이터의 품질과 특성을 보여주는 것입니다. 이를 위해 데이터의 다양한 측면을 보여주는 흥미로운 시각화, 즉 플롯, 그래프, 차트를 생성합니다. 이를 통해 관계와 격차를 시각적으로 보여줄 수 있으며, 이는 그렇지 않으면 발견하기 어려운 경우가 많습니다.
+데이터 과학자의 역할 중 하나는 자신이 다루는 데이터의 품질과 특성을 보여주는 것입니다. 이를 위해 다양한 시각화, 플롯, 그래프, 차트 등을 만들어 데이터의 여러 측면을 시각적으로 표현합니다. 이를 통해 데이터 간 관계나 누락된 부분을 쉽게 발견할 수 있습니다.
-[](https://youtu.be/SbUkxH6IJo0 "ML 초보자를 위한 Matplotlib을 사용한 데이터 시각화 방법")
+[](https://youtu.be/SbUkxH6IJo0 "초보자를 위한 ML - Matplotlib으로 데이터 시각화하기")
-> 🎥 위 이미지를 클릭하면 이 강의를 위한 데이터를 시각화하는 과정을 다룬 짧은 영상을 볼 수 있습니다.
+> 🎥 위 이미지를 클릭하면 이 강의 데이터 시각화 과정의 짧은 영상이 재생됩니다.
-시각화는 데이터에 가장 적합한 머신러닝 기법을 결정하는 데도 도움이 됩니다. 예를 들어, 선을 따르는 것처럼 보이는 산점도는 데이터가 선형 회귀 연습에 적합하다는 것을 나타냅니다.
+시각화는 데이터에 가장 적합한 머신러닝 기법을 결정하는 데에도 도움이 됩니다. 예를 들어 점들이 선을 따르는 산점도는 데이터가 선형 회귀 연습에 적합하다는 신호입니다.
-Jupyter 노트북에서 잘 작동하는 데이터 시각화 라이브러리 중 하나는 [Matplotlib](https://matplotlib.org/)입니다(이전 강의에서도 보았습니다).
+Jupyter 노트북에서 잘 작동하는 데이터 시각화 라이브러리 중 하나가 [Matplotlib](https://matplotlib.org/)입니다 (이전 강의에서도 살펴봤습니다).
-> 데이터 시각화에 대한 경험을 더 쌓고 싶다면 [이 튜토리얼](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott)을 확인하세요.
+> 시각화 경험을 더 쌓으려면 [이 튜토리얼들](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott)을 참고하세요.
-## 실습 - Matplotlib 실험하기
+## 연습 문제 - Matplotlib 실험
-방금 생성한 새 데이터프레임을 표시하기 위해 기본 플롯을 만들어 보세요. 기본 선형 플롯은 무엇을 보여줄까요?
+방금 만든 새 데이터프레임을 보여주는 기본 플롯 몇 가지를 만들어 보세요. 기본 선형 플롯은 무엇을 보여줄까요?
-1. 파일 상단의 Pandas 가져오기 아래에 Matplotlib을 가져옵니다.
+1. 파일 상단, Pandas 임포트 아래에 Matplotlib을 임포트하세요:
```python
import matplotlib.pyplot as plt
```
-1. 노트북 전체를 다시 실행하여 새로 고칩니다.
-1. 노트북 하단에 데이터를 박스로 표시하는 셀을 추가합니다.
+1. 노트북 전체를 다시 실행해 새로 고침하세요.
+1. 노트북 하단에 셀을 추가해 다음과 같이 상자 그림을 그리세요:
```python
price = new_pumpkins.Price
@@ -174,44 +174,121 @@ Jupyter 노트북에서 잘 작동하는 데이터 시각화 라이브러리 중
plt.show()
```
- 
+ 
- 이 플롯이 유용한가요? 놀라운 점이 있나요?
+ 이 플롯이 유용할까요? 무엇인가 놀랍게 느껴지나요?
- 이 플롯은 특정 월에 데이터가 퍼져 있는 점으로만 표시되므로 특별히 유용하지 않습니다.
+ 별로 유용하지 않습니다. 그저 월별 데이터가 점들로 퍼져 있는 모습만 보여줍니다.
### 유용하게 만들기
-유용한 데이터를 표시하려면 데이터를 그룹화해야 합니다. y축에 월을 표시하고 데이터가 분포를 나타내는 플롯을 만들어 봅시다.
+차트가 유용한 데이터를 보여주려면 데이터를 어떤 식으로든 그룹화해야 합니다. 이번에는 y축에 월을 표시하고 데이터 분포를 시각화하는 플롯을 만들어 보겠습니다.
-1. 그룹화된 막대 차트를 생성하는 셀을 추가합니다.
+1. 그룹화된 막대 그래프를 생성하는 셀을 추가하세요:
```python
new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar')
plt.ylabel("Pumpkin Price")
```
- 
+ 
+
+ 더 유용한 시각화입니다! 9월과 10월에 호박 가격이 가장 높다는 점을 보여 줍니다. 예상과 부합하나요? 왜 그렇거나 왜 아닌가요?
+
+## 연습 문제 - Seaborn 실험
+
+Matplotlib은 강력하지만 세련된 차트를 만들려면 코드가 많을 수 있습니다. [Seaborn](https://seaborn.pydata.org/)은 Matplotlib 위에 구축된 통계적 데이터 시각화 라이브러리로, Pandas 데이터프레임과 바로 작동하고 매력적인 기본 스타일을 적용해 훨씬 적은 코드로 유용한 플롯을 만들 수 있습니다. Seaborn은 Matplotlib 객체를 반환하므로, 기존 Matplotlib 활용법을 그대로 이용해 결과를 세밀하게 조정할 수 있습니다.
+
+> 아직 Seaborn이 설치되어 있지 않다면 `pip install seaborn`으로 설치하세요.
+
+1. 노트북 상단, 다른 임포트 아래에 Seaborn을 임포트하세요. 보통 `sns` 별칭으로 임포트합니다:
+
+ ```python
+ import seaborn as sns
+ ```
+
+### 변수 관계를 보여주는 산점도
+
+모델 구축 전에 데이터를 탐색하는 중요한 부분은 변수들 간 _관계_를 찾는 것입니다. [산점도](https://en.wikipedia.org/wiki/Scatter_plot)는 이 작업에 가장 좋은 도구 중 하나입니다: 점들이 선을 따르거나 패턴이 있으면 두 변수 간 상관관계가 있다는 뜻이며, 선형 회귀 모델에 적합할 수 있다는 좋은 신호입니다.
+
+1. 이전에 만들었던 가격 대 월 산점도를, 이번에는 Seaborn의 [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) (관계형 플롯)을 사용해 데이터프레임 열을 바로 참조하여 다시 만드세요:
+
+ ```python
+ sns.relplot(x="Price", y="Month", data=new_pumpkins)
+ ```
+
+ 
+
+ 열 이름과 데이터프레임을 전달하는 방법을 주목하세요. Seaborn이 자동으로 축 레이블을 처리합니다.
+
+2. `kind="line"` 옵션을 전달하면 선형 플롯으로 전환할 수 있습니다. Seaborn은 선 주변에 신뢰 구간을 표시하는 음영 밴드도 그립니다:
+
+ ```python
+ sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins)
+ ```
+
+ 
+
+ 이 데이터는 꽤 잡음이 있어서 선형 플롯이 가장 명확하진 않지만, Seaborn에서 차트 유형을 쉽게 변경할 수 있음을 보여 줍니다.
+
+### 분포를 보여주는 막대 그래프
+
+
+앞서 Matplotlib을 사용해 데이터를 수작업으로 그룹화하여 막대 그래프를 만들었습니다. Seaborn의 [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html)(범주형 플롯)은 그룹화와 집계를 대신해 줄 수 있습니다. 기본값 `kind="bar"`는 각 범주의 평균과 신뢰 구간을 나타내는 검은 선을 함께 표시합니다.
+
+1. 월별 평균 가격 막대 그래프를 만드세요:
+
+ ```python
+ sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar")
+ ```
+
+ 
+
+ 이는 Matplotlib에서 본 것과 일치합니다 — 가격은 9월과 10월에 정점에 달합니다 — 그러나 Seaborn은 각 월 내 가격이 얼마나 _변동_하는지도 시각화합니다.
+
+### 상관관계를 보여주는 히트맵
+
+산점도는 한 번에 두 변수만 비교합니다. 여러 숫자형 열이 있을 때는 [히트맵](https://en.wikipedia.org/wiki/Heat_map)을 사용하면 모든 열 쌍간 관계 강도를 한눈에 볼 수 있습니다. 이는 모델에 어떤 특성을 넣을지 선택하기 전 가장 상관성이 큰 특성을 찾는 흔한 방법이며 (그리고 이후 분류에서 혼동 행렬을 표시할 때도 같은 유형의 차트를 사용합니다).
+
+1. Pandas로 상관 행렬을 만들고 Seaborn의 [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html)으로 그립니다. `annot=True` 옵션은 각 셀에 상관값을 출력합니다:
+
+ ```python
+ correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()
+ sns.heatmap(correlations, annot=True, cmap="coolwarm")
+ ```
+
+ 
+
+ `1` (또는 `-1`)에 가까운 값은 열들이 강하게 _선형적으로_ 상관됨을 의미합니다. `Low Price`와 `High Price`가 거의 완벽히 상관되어 있음을 확인하세요. 한편 `Month`는 가격과 약한 선형 상관만 보여줍니다 — 위의 막대 그래프가 9월과 10월의 뚜렷한 계절 피크를 나타냈음에도 말이죠. 이것은 중요한 교훈입니다: 상관계수는 _직선_ 관계만 측정하므로 계절성이나 다른 비선형 패턴을 놓칠 수 있습니다. ✅ 어떤 열을 사용할지 결정하기 전에 왜 히트맵과 막대 그래프 같은 차트를 함께 보는 것이 유용할까요?
+
+### Matplotlib 또는 Seaborn?
+
+두 라이브러리 모두 익혀둘 가치가 있습니다:
+
+- Matplotlib은 차트의 모든 요소를 정밀하게 제어할 수 있게 하며 거의 모든 다른 Python 그래프 라이브러리가 기반으로 삼고 있습니다.
+- Seaborn은 통계 차트를 위한 고수준 함수와 매력적인 기본값을 제공하며 데이터프레임과 직접 작동하고 탐색적 데이터 분석에 더 빠른 경우가 많습니다.
- 이 시각화는 더 유용합니다! 호박의 최고 가격이 9월과 10월에 발생한다는 것을 나타내는 것 같습니다. 이것이 예상과 일치하나요? 왜 그런지 생각해 보세요.
+일반적인 작업 흐름은 데이터를 빠르게 탐색할 때 Seaborn을 사용하고, 세부 사항을 조정해야 할 때 Matplotlib으로 내려가는 것입니다.
---
## 🚀도전 과제
-Matplotlib이 제공하는 다양한 시각화 유형을 탐색해 보세요. 회귀 문제에 가장 적합한 유형은 무엇인가요?
+Matplotlib과 Seaborn이 제공하는 다양한 시각화 유형을 탐색하세요. 어떤 유형이 회귀 문제에 가장 적합한가요?
## [강의 후 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
-## 복습 및 자기 학습
+## 복습 및 자기 공부
-데이터를 시각화하는 다양한 방법을 살펴보세요. 사용 가능한 라이브러리 목록을 작성하고, 2D 시각화와 3D 시각화와 같은 특정 작업에 가장 적합한 라이브러리를 기록하세요. 무엇을 발견했나요?
+데이터를 시각화하는 다양한 방법을 살펴보세요. 사용 가능한 여러 라이브러리를 나열하고 2D 시각화와 3D 시각화 같은 작업 유형별로 어떤 것이 가장 적합한지 기록해보세요. 무엇을 발견하나요?
## 과제
-[시각화 탐구](assignment.md)
+[시각화 탐색하기](assignment.md)
---
-**면책 조항**:
-이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서의 원어 버전을 권위 있는 출처로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 책임을 지지 않습니다.
\ No newline at end of file
+
+**면책 조항**:
+이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 기하기 위해 노력하고 있으나, 자동 번역은 오류나 부정확한 부분이 있을 수 있음을 유의하시기 바랍니다. 원본 문서의 원어본이 권위 있는 자료로 간주되어야 합니다. 중요한 정보의 경우, 전문가의 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.
+
\ No newline at end of file
diff --git a/translations/ko/2-Regression/2-Data/solution/notebook.ipynb b/translations/ko/2-Regression/2-Data/solution/notebook.ipynb
index ba857b49a..a28c4d72d 100644
--- a/translations/ko/2-Regression/2-Data/solution/notebook.ipynb
+++ b/translations/ko/2-Regression/2-Data/solution/notebook.ipynb
@@ -3,7 +3,9 @@
{
"cell_type": "markdown",
"metadata": {},
- "source": []
+ "source": [
+ "## 호박을 위한 선형 회귀 - 레슨 2\n"
+ ]
},
{
"cell_type": "code",
@@ -220,6 +222,7 @@
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
"pumpkins = pd.read_csv('../../data/US-pumpkins.csv')\n",
"\n",
"pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]\n",
@@ -383,18 +386,78 @@
"plt.ylabel(\"Pumpkin Price\")"
]
},
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Seaborn으로 시각화하기\n",
+ "\n",
+ "[Seaborn](https://seaborn.pydata.org/)은 Matplotlib 위에 구축되었으며 데이터프레임과 직접 작동하여 아주 적은 코드로도 매력적인 통계 그래프를 빠르게 만들 수 있습니다.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### 관계를 보여주는 산점도\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", kind=\"line\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### 분포를 보여주는 막대 차트\n"
+ ]
+ },
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
- "source": []
+ "source": [
+ "sns.catplot(x=\"Month\", y=\"Price\", data=new_pumpkins, kind=\"bar\")"
+ ]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "\n---\n\n**면책 조항**: \n이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서를 해당 언어로 작성된 상태에서 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다. \n"
+ "### 상관관계를 보여주는 히트맵\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()\n",
+ "sns.heatmap(correlations, annot=True, cmap=\"coolwarm\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "---\n\n\n**면책 조항**:\n이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 기하기 위해 노력하고 있으나, 자동 번역은 오류나 부정확한 부분이 있을 수 있음을 유의하시기 바랍니다. 원본 문서의 원어본이 권위 있는 자료로 간주되어야 합니다. 중요한 정보의 경우, 전문가의 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.\n\n"
]
}
],
@@ -424,13 +487,7 @@
"hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d"
}
},
- "orig_nbformat": 2,
- "coopTranslator": {
- "original_hash": "95726f0b8283628d5356a4f8eb8b4b76",
- "translation_date": "2025-09-04T01:36:37+00:00",
- "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
- "language_code": "ko"
- }
+ "orig_nbformat": 2
},
"nbformat": 4,
"nbformat_minor": 2
diff --git a/translations/ko/8-Reinforcement/1-QLearning/README.md b/translations/ko/8-Reinforcement/1-QLearning/README.md
index 0999b2aa2..6abb1d509 100644
--- a/translations/ko/8-Reinforcement/1-QLearning/README.md
+++ b/translations/ko/8-Reinforcement/1-QLearning/README.md
@@ -1,47 +1,47 @@
# 강화 학습과 Q-러닝 소개
-
-> 스케치노트 제공: [Tomomi Imura](https://www.twitter.com/girlie_mac)
+
+> 스케치노트 작성자 [Tomomi Imura](https://www.twitter.com/girlie_mac)
-강화 학습은 세 가지 중요한 개념을 포함합니다: 에이전트, 상태, 그리고 각 상태에서의 행동 집합. 특정 상태에서 행동을 실행하면 에이전트는 보상을 받습니다. 컴퓨터 게임 슈퍼 마리오를 다시 상상해 보세요. 당신은 마리오이고, 게임 레벨에서 절벽 가장자리 옆에 서 있습니다. 위에는 동전이 있습니다. 당신이 마리오로서 특정 위치에 있는 게임 레벨에 있다는 것이 바로 당신의 상태입니다. 오른쪽으로 한 걸음 이동하는 행동은 절벽 아래로 떨어지게 되어 낮은 점수를 받게 됩니다. 하지만 점프 버튼을 누르면 점수를 얻고 살아남을 수 있습니다. 이는 긍정적인 결과이며, 높은 점수를 받아야 합니다.
+강화 학습은 세 가지 중요한 개념을 포함합니다: 에이전트, 상태들, 그리고 각 상태별 행동 집합입니다. 지정된 상태에서 행동을 실행함으로써 에이전트는 보상을 받습니다. 다시 슈퍼 마리오 게임을 상상해 보십시오. 당신은 마리오이고, 게임 레벨 안에서 절벽 옆에 서 있습니다. 위에는 동전이 있습니다. 당신이 마리오이고, 게임 레벨에서 특정 위치에 있는 것이 ... 바로 당신의 상태입니다. 오른쪽으로 한 걸음 움직이는 것(행동)은 절벽 밖으로 떨어지게 하여 낮은 점수를 받을 것입니다. 하지만 점프 버튼을 누르면 점수를 얻고 살아남게 됩니다. 이것은 긍정적인 결과이며 긍정적인 숫자 점수를 부여해야 합니다.
-강화 학습과 시뮬레이터(게임)를 사용하면 살아남고 최대한 많은 점수를 얻는 보상을 극대화하기 위해 게임을 플레이하는 방법을 배울 수 있습니다.
+강화 학습과 시뮬레이터(게임)를 사용하여 보상을 극대화하는 방법, 즉 생존하고 많은 점수를 얻는 방법을 배울 수 있습니다.
[](https://www.youtube.com/watch?v=lDq_en8RNOo)
-> 🎥 위 이미지를 클릭하여 Dmitry가 강화 학습에 대해 설명하는 영상을 시청하세요.
+> 🎥 위 이미지를 클릭하여 Dmitry가 강화 학습에 대해 이야기하는 내용을 들어보세요
-## [강의 전 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
+## [수업 전 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
-## 사전 준비 및 설정
+## 전제 조건 및 설정
-이 강의에서는 Python으로 코드를 실험해 볼 것입니다. 이 강의의 Jupyter Notebook 코드를 컴퓨터 또는 클라우드에서 실행할 수 있어야 합니다.
+이 수업에서는 Python 코드를 실험해 볼 것입니다. 여러분은 이 수업의 Jupyter Notebook 코드를 컴퓨터나 클라우드 어디서든 실행할 수 있어야 합니다.
-[강의 노트북](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb)을 열어 이 강의를 따라가며 실습을 진행하세요.
+[수업 노트북](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) 파일도 가져와야 합니다. 이 파일을 노트북과 동일한 디렉토리에 추가하세요.
+> **참고:** 클라우드에서 이 코드를 여는 경우, 노트북 코드에서 사용되는 [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) 파일도 받아서 노트북과 같은 디렉터리에 두어야 합니다.
## 소개
-이 강의에서는 러시아 작곡가 [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev)의 음악 동화 **[피터와 늑대](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)**에서 영감을 받아 피터가 환경을 탐험하고 맛있는 사과를 모으며 늑대를 피하도록 하는 **강화 학습**을 탐구할 것입니다.
+이 수업에서는 러시아 작곡가 [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev)의 음악 동화에서 영감을 받은 **[피터와 늑대](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)** 세계를 탐험합니다. 강화 학습을 사용하여 피터가 환경을 탐험하고 맛있는 사과를 모으며 늑대를 피하도록 할 것입니다.
-**강화 학습**(RL)은 여러 실험을 실행하여 **에이전트**가 특정 **환경**에서 최적의 행동을 학습할 수 있도록 하는 학습 기법입니다. 이 환경에서 에이전트는 **보상 함수**로 정의된 **목표**를 가져야 합니다.
+**강화 학습**(Reinforcement Learning, RL)은 많은 실험을 통해 어떤 환경에서 에이전트의 최적 행동을 학습하는 기법입니다. 이 환경에서 에이전트는 일정한 보상 함수로 정의되는 목표를 가져야 합니다.
## 환경
-간단히 하기 위해, 피터의 세계를 `width` x `height` 크기의 정사각형 보드로 간주해 봅시다:
+간단히 하기 위해 피터의 세계를 `가로` x `세로` 크기의 정사각형 보드로 생각해 봅시다:
-
+
-이 보드의 각 셀은 다음 중 하나일 수 있습니다:
+이 보드의 각 칸(cell)은 다음 중 하나일 수 있습니다:
-* **땅**: 피터와 다른 생물들이 걸을 수 있는 곳.
-* **물**: 당연히 걸을 수 없는 곳.
-* **나무** 또는 **풀**: 쉴 수 있는 장소.
-* **사과**: 피터가 먹기 위해 찾고 싶어하는 것.
-* **늑대**: 위험하며 피해야 하는 존재.
+* **땅(ground)**, 피터와 다른 생물이 걸을 수 있는 곳.
+* **물(water)**, 당연히 걸을 수 없는 곳.
+* **나무(tree)** 또는 **풀(grass)**, 쉴 수 있는 장소.
+* **사과(apple)**, 피터가 자신을 먹일 수 있게 찾아 기뻐할 것.
+* **늑대(wolf)**, 위험하며 피해야 할 존재.
-이 환경을 다루는 코드는 별도의 Python 모듈 [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py)에 포함되어 있습니다. 이 코드는 개념을 이해하는 데 중요하지 않으므로 모듈을 가져와 샘플 보드를 생성하는 데 사용합니다(코드 블록 1):
+별도의 Python 모듈 [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py)가 이 환경을 다루는 코드를 포함합니다. 이 코드는 개념 이해에 중요하지 않으므로 모듈을 불러와 샘플 보드를 만드는 데 사용하겠습니다 (코드 블록 1):
```python
from rlboard import *
@@ -52,63 +52,63 @@ m.randomize(seed=13)
m.plot()
```
-이 코드는 위 그림과 유사한 환경을 출력해야 합니다.
+이 코드는 위와 유사한 환경 그림을 출력할 것입니다.
## 행동과 정책
-이 예제에서 피터의 목표는 늑대와 다른 장애물을 피하면서 사과를 찾는 것입니다. 이를 위해 그는 사과를 찾을 때까지 주변을 걸어다닐 수 있습니다.
+예제에서 피터의 목표는 늑대를 피하면서 사과를 찾는 것입니다. 이를 위해 피터는 사과를 찾을 때까지 걸어 다닐 수 있습니다.
-따라서 그는 어떤 위치에서든 다음 행동 중 하나를 선택할 수 있습니다: 위, 아래, 왼쪽, 오른쪽.
+따라서 어떤 위치에서도 위, 아래, 왼쪽, 오른쪽 중 하나의 행동을 선택할 수 있습니다.
-이 행동들을 사전으로 정의하고, 해당 좌표 변화에 매핑합니다. 예를 들어, 오른쪽으로 이동(`R`)은 `(1,0)`에 해당합니다(코드 블록 2):
+이 행동들을 사전(dictionary)으로 정의하고, 각각에 해당하는 좌표 변화 쌍에 매핑할 것입니다. 예를 들어, 오른쪽으로 이동하는 것(`R`)은 `(1,0)` 쌍에 해당합니다. (코드 블록 2):
```python
actions = { "U" : (0,-1), "D" : (0,1), "L" : (-1,0), "R" : (1,0) }
action_idx = { a : i for i,a in enumerate(actions.keys()) }
```
-이 시나리오의 전략과 목표를 요약하면 다음과 같습니다:
+요약하자면, 이 시나리오의 전략과 목표는 다음과 같습니다:
-- **전략**: 에이전트(피터)의 전략은 **정책**이라고 불리는 함수로 정의됩니다. 정책은 주어진 상태에서 행동을 반환합니다. 이 경우, 문제의 상태는 보드와 플레이어의 현재 위치로 표현됩니다.
+- 전략은 에이전트(피터)의 행동 방침인 정책(policy)으로 정의됩니다. 정책은 주어진 상태에서 취할 행동을 반환하는 함수입니다. 여기서 문제의 상태는 현재 플레이어 위치를 포함한 보드로 표현됩니다.
-- **목표**: 강화 학습의 목표는 문제를 효율적으로 해결할 수 있는 좋은 정책을 학습하는 것입니다. 하지만 기본적으로 가장 간단한 정책인 **랜덤 워크**를 고려해 봅시다.
+- 목표는 결국 강화 학습이 효과적으로 문제를 해결할 수 있는 좋은 정책을 배우는 것입니다. 그러나 기본적으로는 무작위 걷기(random walk)라는 가장 단순한 정책을 고려합니다.
-## 랜덤 워크
+## 무작위 걷기
-먼저 랜덤 워크 전략을 구현하여 문제를 해결해 봅시다. 랜덤 워크에서는 허용된 행동 중에서 다음 행동을 무작위로 선택하여 사과에 도달할 때까지 이동합니다(코드 블록 3).
+먼저 무작위 걷기 전략을 구현하여 문제를 해결해 봅시다. 무작위 걷기는 허용된 행동 중에서 무작위로 다음 행동을 선택하며 사과에 도달할 때까지 진행됩니다 (코드 블록 3).
-1. 아래 코드를 사용하여 랜덤 워크를 구현하세요:
+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
+ n = 0 # 단계 수
+ # 초기 위치 설정
if start_position:
m.human = start_position
else:
m.random_start()
while True:
if m.at() == Board.Cell.apple:
- return n # success!
+ return n # 성공!
if m.at() in [Board.Cell.wolf, Board.Cell.water]:
- return -1 # eaten by wolf or drowned
+ return -1 # 늑대에게 잡아먹히거나 익사함
while True:
a = actions[policy(m)]
new_pos = m.move_pos(m.human,a)
if m.is_valid(new_pos) and m.at(new_pos)!=Board.Cell.water:
- m.move(a) # do the actual move
+ m.move(a) # 실제 이동 수행
break
n+=1
walk(m,random_policy)
```
- `walk` 호출은 해당 경로의 길이를 반환해야 하며, 실행마다 결과가 달라질 수 있습니다.
+ `walk` 호출은 실행마다 다를 수 있는 경로 길이를 반환해야 합니다.
-1. 워크 실험을 여러 번(예: 100회) 실행하고 결과 통계를 출력하세요(코드 블록 4):
+1. 걷기 실험을 여러 번(예: 100회) 수행하고 결과 통계를 출력합니다 (코드 블록 4):
```python
def print_statistics(policy):
@@ -125,17 +125,17 @@ action_idx = { a : i for i,a in enumerate(actions.keys()) }
print_statistics(random_policy)
```
- 평균 경로 길이가 약 30-40 단계로 나타나는데, 이는 평균적으로 가장 가까운 사과까지의 거리가 약 5-6 단계인 점을 고려하면 꽤 많은 단계입니다.
+ 평균 경로 길이는 30-40걸음 정도로 상당히 긴 편이며, 가장 가까운 사과까지 평균 거리가 약 5-6걸음이라는 점을 고려하면 꽤 많습니다.
- 또한 랜덤 워크 동안 피터의 움직임을 확인할 수 있습니다:
+ 무작위 걷기 중 피터의 움직임도 볼 수 있습니다:
- 
+ 
## 보상 함수
-정책을 더 똑똑하게 만들기 위해 어떤 움직임이 다른 움직임보다 "더 나은지"를 이해해야 합니다. 이를 위해 목표를 정의해야 합니다.
+정책을 더 똑똑하게 만들기 위해서는 어떤 움직임이 다른 것보다 "더 좋다"는 것을 이해해야 합니다. 이를 위해 목표를 정의해야 합니다.
-목표는 **보상 함수**로 정의될 수 있으며, 각 상태에 대해 점수 값을 반환합니다. 숫자가 높을수록 보상이 더 좋습니다(코드 블록 5).
+목표는 각 상태에 대해 점수를 반환하는 보상 함수(reward function)로 정의할 수 있습니다. 숫자가 클수록 좋은 보상을 나타냅니다. (코드 블록 5)
```python
move_reward = -0.1
@@ -154,39 +154,115 @@ def reward(m,pos=None):
return move_reward
```
-보상 함수의 흥미로운 점은 대부분의 경우 *게임이 끝날 때만 실질적인 보상을 받는다는 것*입니다. 이는 알고리즘이 긍정적인 보상으로 이어지는 "좋은" 단계를 기억하고 그 중요성을 높여야 하며, 나쁜 결과로 이어지는 모든 움직임은 억제해야 한다는 것을 의미합니다.
+보상 함수에 대한 흥미로운 점은 대부분의 경우 게임 끝에서만 실질적인 보상을 받는다는 것입니다. 이는 알고리즘이 긍정적인 결과로 이어지는 “좋은” 단계를 기억하고 중요도를 높여야 하며, 반대로 나쁜 결과로 이어지는 모든 움직임을 억제해야 함을 의미합니다.
## Q-러닝
-여기서 논의할 알고리즘은 **Q-러닝**이라고 합니다. 이 알고리즘에서 정책은 **Q-테이블**이라는 함수(또는 데이터 구조)로 정의됩니다. 이는 주어진 상태에서 각 행동의 "좋음"을 기록합니다.
+여기서 논의할 알고리즘은 Q-러닝이라고 불립니다. 이 알고리즘에서 정책은 Q-테이블이라 불리는 함수(또는 데이터 구조)로 정의됩니다. 이는 주어진 상태에서 각 행동의 "좋음" 정도를 기록합니다.
-Q-테이블은 종종 테이블 또는 다차원 배열로 표현하기 편리하기 때문에 Q-테이블이라고 불립니다. 보드의 크기가 `width` x `height`인 경우, Q-테이블을 `width` x `height` x `len(actions)` 형태의 numpy 배열로 표현할 수 있습니다(코드 블록 6).
+Q-테이블이라고 하는 이유는 이를 표나 다차원 배열 형식으로 표현하는 것이 편리하기 때문입니다. 보드 크기가 `가로` x `세로`이므로, Q-테이블은 `가로` x `세로` x `동작 수` 모양의 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-테이블 값들을 동일한 값, 여기서는 0.25로 초기화한 것을 볼 수 있습니다. 이는 각 상태의 모든 동작이 동일하게 좋은 무작위 걷기 정책과 대응됩니다. Q-테이블을 `plot` 함수에 전달하여 보드에 시각화할 수 있습니다: `m.plot(Q)`.
-
+
-각 셀의 중앙에는 이동 방향을 나타내는 "화살표"가 있습니다. 모든 방향이 동일하기 때문에 점이 표시됩니다.
+각 칸 중앙에는 선호하는 이동 방향을 나타내는 "화살표"가 있습니다. 모든 방향이 같으므로 점(dot)으로 표시됩니다.
-이제 시뮬레이션을 실행하고 환경을 탐색하며 Q-테이블 값을 더 나은 분포로 학습해야 합니다. 이를 통해 사과로 가는 경로를 훨씬 더 빠르게 찾을 수 있습니다.
+이제 시뮬레이션을 실행하여 환경을 탐험하고 Q-테이블 값을 더 나은 분포로 학습하여 사과로 가는 경로를 훨씬 빠르게 찾을 수 있게 할 것입니다.
## Q-러닝의 핵심: 벨만 방정식
-움직이기 시작하면 각 행동은 해당 보상을 가지게 됩니다. 즉, 이론적으로 가장 높은 즉각적인 보상을 기반으로 다음 행동을 선택할 수 있습니다. 하지만 대부분의 상태에서는 움직임이 사과에 도달하는 목표를 달성하지 못하므로 어떤 방향이 더 나은지 즉시 결정할 수 없습니다.
+움직이기 시작하면 각 행동에는 즉각적인 보상이 따릅니다. 이론적으로는 가장 높은 즉각 보상에 따라 다음 행동을 선택할 수 있습니다. 그러나 대부분의 상태에서 이 움직임만으로는 사과에 도달할 수 없으므로 어떤 방향이 더 좋은지 즉시 결정할 수 없습니다.
-> 중요한 것은 즉각적인 결과가 아니라 시뮬레이션 끝에서 얻을 최종 결과입니다.
+> 즉각적인 결과가 중요한 것이 아니라, 시뮬레이션 끝에서 얻는 최종 결과가 중요하다는 점을 기억하세요.
-이 지연된 보상을 고려하기 위해 **[동적 프로그래밍](https://en.wikipedia.org/wiki/Dynamic_programming)** 원칙을 사용해야 합니다. 이는 문제를 재귀적으로 생각할 수 있도록 합니다.
+지연된 보상을 고려하기 위해서는 문제를 재귀적으로 생각할 수 있게 하는 **[동적 프로그래밍](https://en.wikipedia.org/wiki/Dynamic_programming)** 원리를 사용해야 합니다.
-현재 상태 *s*에 있다고 가정하고 다음 상태 *s'*로 이동하려고 합니다. 이렇게 하면 보상 함수로 정의된 즉각적인 보상 *r(s,a)*를 받게 되며, 추가로 미래 보상을 받게 됩니다. Q-테이블이 각 행동의 "매력"을 올바르게 반영한다고 가정하면, 상태 *s'*에서 *Q(s',a')* 값이 최대인 행동 *a'*를 선택할 것입니다. 따라서 상태 *s*에서 얻을 수 있는 최상의 미래 보상은 `max`
+현재 상태를 s라고 하고 다음 상태를 s'로 이동한다고 가정합시다. 이렇게 하면 보상 함수로 정의된 즉각 보상 r(s,a)와 일부 미래 보상을 받습니다. 만약 우리가 Q-테이블을 각 행동의 "매력도"를 정확히 반영한다고 가정하면, 상태 s'에서 우리는 최대 *Q(s',a')* 값을 갖는 행동 a를 선택할 것입니다. 따라서 상태 s에서 얻을 수 있는 최상의 미래 보상은 `max`a'Q(s',a')로 정의됩니다 (최대값은 상태 s'에서 가능한 모든 행동 a'에 대해 계산).
-## 정책 확인하기
+이것이 상태 s에서 행동 a에 대한 Q-테이블 값을 계산하는 **벨만 방정식(Bellman equation)** 입니다:
-Q-Table은 각 상태에서 각 행동의 "매력도"를 나열하고 있으므로, 이를 사용하여 우리 세계에서 효율적인 탐색을 정의하는 것은 비교적 간단합니다. 가장 간단한 경우, Q-Table 값이 가장 높은 행동을 선택하면 됩니다: (코드 블록 9)
+
+
+여기서 γ는 현재 보상과 미래 보상 중 어느 쪽을 더 선호할지 결정하는 이른바 **할인율(discount factor)** 입니다.
+
+## 학습 알고리즘
+
+위 방정식을 바탕으로 학습 알고리즘에 대한 의사 코드를 작성할 수 있습니다:
+
+* 모든 상태와 행동에 대해 동일한 값으로 Q-테이블 Q 초기화
+* 학습률 α ← 1로 설정
+* 시뮬레이션을 여러 번 반복 실행
+ 1. 임의 위치에서 시작
+ 1. 반복
+ 1. 상태 s에서 행동 *a* 선택
+ 2. 이동하여 새로운 상태 s'로 행동 실행
+ 3. 게임 종료 조건을 만나거나 총 보상이 너무 작으면 시뮬레이션 종료
+ 4. 새 상태에서 보상 *r* 계산
+ 5. 벨만 방정식에 따라 Q 함수 업데이트: *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ maxa'Q(s',a'))*
+ 6. *s* ← *s'*
+ 7. 총 보상 업데이트 및 α 감소
+
+## 탐험(Explore) 대 착취(Exploit)
+
+위 알고리즘에서 2.1 단계에서 행동을 어떻게 선택할지 명시하지 않았습니다. 만약 행동을 무작위로 선택한다면, 환경을 무작위로 탐험하여 자주 죽을 가능성이 있고 평소 가지 않을 곳도 탐험할 것입니다. 반면에 이미 알고 있는 Q-테이블 값을 착취하여 가장 좋은 행동(더 높은 Q-테이블 값)을 선택하면 다른 상태를 탐험하지 못하고 최적 해결책을 찾지 못할 수 있습니다.
+
+따라서 탐험과 착취 사이에 균형을 맞추는 것이 최선입니다. 이는 상태 s에서의 행동 선택을 Q-테이블 값에 비례하는 확률로 하여 구현할 수 있습니다. 처음에 Q-테이블 값이 모두 동일하면 무작위 선택과 같지만, 학습이 진행될수록 최적 경로를 따르면서도 가끔씩 미탐험 경로를 선택할 수 있습니다.
+
+## 파이썬 구현
+
+이제 학습 알고리즘을 구현할 준비가 되었습니다. 그 전에 Q-테이블의 임의 숫자를 해당 동작의 확률 벡터로 변환하는 함수가 필요합니다.
+
+1. 함수 `probs()`를 만듭니다:
+
+ ```python
+ def probs(v,eps=1e-4):
+ v = v-v.min()+eps
+ v = v/v.sum()
+ return v
+ ```
+
+ 초기 상태에서 벡터의 모든 성분이 동일하기 때문에 0으로 나누는 오류를 피하기 위해 원래 벡터에 몇 개의 `eps`를 더합니다.
+
+5000번의 실험, 즉 epoch을 통해 학습 알고리즘을 실행합니다: (코드 블록 8)
+```python
+ for epoch in range(5000):
+
+ # 초기 지점 선택
+ m.random_start()
+
+ # 이동 시작
+ n=0
+ cum_reward = 0
+ while True:
+ x,y = m.human
+ v = probs(Q[x,y])
+ a = random.choices(list(actions),weights=v)[0]
+ dpos = actions[a]
+ m.move(dpos,check_correctness=False) # 플레이어가 보드 밖으로 이동할 수 있도록 허용하며, 이 경우 에피소드가 종료됩니다
+ r = reward(m)
+ cum_reward += r
+ if r==end_reward or cum_reward < -1000:
+ lpath.append(n)
+ break
+ alpha = np.exp(-n / 10e5)
+ gamma = 0.5
+ ai = action_idx[a]
+ Q[x,y,ai] = (1 - alpha) * Q[x,y,ai] + alpha * (r + gamma * Q[x+dpos[0], y+dpos[1]].max())
+ n+=1
+```
+
+이 알고리즘 실행 후, Q-테이블은 각 단계에서 다양한 행동의 매력도를 정의하는 값들로 업데이트됩니다. Q-테이블을 시각화하여 각 칸에 원하는 이동 방향을 향하는 벡터를 그려볼 수 있습니다. 단순화를 위해 화살촉 대신 작은 원을 그립니다.
+
+
+
+## 정책 확인
+
+Q-테이블이 각 상태별로 행동의 "매력도"를 나열하므로, 이를 활용해 우리 세계에서 효율적인 길 찾기가 가능합니다. 가장 간단하게는 가장 높은 Q-테이블 값에 해당하는 행동을 선택할 수 있습니다: (코드 블록 9)
```python
def qpolicy_strict(m):
@@ -198,17 +274,18 @@ def qpolicy_strict(m):
walk(m,qpolicy_strict)
```
-> 위 코드를 여러 번 실행해보면 가끔 "멈추는" 현상이 발생할 수 있으며, 이 경우 노트북에서 STOP 버튼을 눌러 중단해야 할 수도 있습니다. 이는 두 상태가 최적 Q-Value 관점에서 서로를 "가리키는" 상황이 발생할 때, 에이전트가 두 상태 사이를 무한히 이동하게 되는 경우 때문입니다.
+
+> 위 코드를 여러 번 실행해 보면, 때때로 "멈추는" 현상이 발생하며, 이를 중단하려면 노트북에서 STOP 버튼을 눌러야 한다는 것을 알 수 있습니다. 이는 두 상태가 최적의 Q-Value 관점에서 서로 "가리키는" 상황이 있을 수 있기 때문이며, 이 경우 에이전트가 무한히 그 상태들 사이를 오가게 됩니다.
## 🚀도전 과제
-> **과제 1:** `walk` 함수를 수정하여 경로의 최대 길이를 특정 단계 수(예: 100)로 제한하고, 위 코드가 이 값을 반환하는지 확인하세요.
+> **과제 1:** `walk` 함수를 수정하여 경로의 최대 길이를 일정한 단계 수(예: 100단계)로 제한하고, 위 코드가 때때로 이 값을 반환하는 것을 확인하세요.
-> **과제 2:** `walk` 함수를 수정하여 이전에 방문했던 장소로 돌아가지 않도록 하세요. 이렇게 하면 `walk`가 루프에 빠지는 것을 방지할 수 있지만, 에이전트가 탈출할 수 없는 위치에 "갇히는" 상황은 여전히 발생할 수 있습니다.
+> **과제 2:** `walk` 함수를 수정하여 이전에 방문했던 장소로 다시 가지 않도록 하세요. 이렇게 하면 `walk`가 무한 루프에 빠지는 것을 방지할 수 있지만, 에이전트가 빠져나올 수 없는 위치에 "갇힐" 수 있습니다.
-## 탐색
+## 내비게이션
-더 나은 탐색 정책은 우리가 학습 중에 사용했던 정책으로, 탐색과 활용을 결합한 것입니다. 이 정책에서는 Q-Table 값에 비례하여 각 행동을 특정 확률로 선택합니다. 이 전략은 여전히 에이전트가 이미 탐색한 위치로 돌아가는 결과를 초래할 수 있지만, 아래 코드에서 볼 수 있듯이 목표 위치까지의 평균 경로가 매우 짧아지는 결과를 가져옵니다(참고로 `print_statistics`는 시뮬레이션을 100번 실행합니다): (코드 블록 10)
+더 나은 내비게이션 정책은 훈련 중에 사용한, 탐사와 활용을 결합한 방법입니다. 이 정책에서는 Q-테이블 값에 비례하는 확률로 각 행동을 선택합니다. 이 전략은 여전히 에이전트가 이미 탐험한 위치로 돌아올 수 있지만, 아래 코드에서 볼 수 있듯이 기대 위치까지의 평균 경로가 매우 짧아집니다(`print_statistics`가 시뮬레이션을 100번 실행함을 기억하세요): (code block 10)
```python
def qpolicy(m):
@@ -220,30 +297,32 @@ def qpolicy(m):
print_statistics(qpolicy)
```
-이 코드를 실행한 후에는 이전보다 훨씬 짧은 평균 경로 길이를 얻을 수 있으며, 이는 대략 3-6 범위에 해당합니다.
+이 코드를 실행하면 이전보다 훨씬 짧은 평균 경로 길이(3~6 범위)를 얻을 수 있습니다.
## 학습 과정 조사
-앞서 언급했듯이, 학습 과정은 문제 공간 구조에 대한 지식을 탐색하고 활용하는 균형입니다. 학습 결과(에이전트가 목표로 가는 짧은 경로를 찾는 능력)가 개선된 것을 확인했지만, 학습 과정 중 평균 경로 길이가 어떻게 변화하는지 관찰하는 것도 흥미롭습니다:
+앞서 언급했듯이 학습 과정은 탐색과 문제 공간 구조에 대한 습득 지식의 활용 사이의 균형입니다. 학습의 결과(에이전트가 목표까지 짧은 경로를 찾도록 돕는 능력)가 향상된 것을 보았는데, 학습 과정 동안 평균 경로 길이가 어떻게 변하는지 관찰하는 것도 흥미롭습니다:
----
+
학습 내용을 요약하면 다음과 같습니다:
-- **평균 경로 길이 증가**. 처음에는 평균 경로 길이가 증가하는 것을 볼 수 있습니다. 이는 환경에 대해 아무것도 모를 때, 나쁜 상태(물이나 늑대)에 갇히기 쉽기 때문입니다. 더 많은 것을 배우고 이 지식을 활용하기 시작하면 환경을 더 오래 탐색할 수 있지만, 여전히 사과가 어디에 있는지 잘 모르는 상태입니다.
+- **평균 경로 길이가 증가한다**. 처음에는 평균 경로 길이가 증가합니다. 이는 환경에 대해 아무것도 모를 때, 물 또는 늑대와 같은 나쁜 상태에 갇힐 가능성이 크기 때문입니다. 더 많이 학습하고 이 지식을 사용함에 따라 환경을 더 오래 탐색할 수 있지만, 사과 위치를 아직 잘 모릅니다.
-- **학습이 진행됨에 따라 경로 길이 감소**. 충분히 학습한 후에는 에이전트가 목표를 달성하기 쉬워지고, 경로 길이가 감소하기 시작합니다. 하지만 여전히 탐색을 열어두고 있기 때문에 최적 경로에서 벗어나 새로운 옵션을 탐색하며 경로가 최적보다 길어지는 경우도 있습니다.
+- **학습이 진행될수록 경로 길이가 감소한다**. 충분히 학습하면 에이전트가 목표에 도달하기 쉬워지고 경로 길이가 감소하기 시작합니다. 그러나 여전히 탐색 가능성이 열려 있어 종종 최적 경로에서 벗어나 새 경로를 탐색하며 경로가 최적보다 길어질 수 있습니다.
-- **경로 길이의 급격한 증가**. 그래프에서 관찰할 수 있는 또 다른 점은 어느 순간 경로 길이가 급격히 증가한다는 것입니다. 이는 과정의 확률적 특성을 나타내며, Q-Table 계수를 새로운 값으로 덮어쓰면서 "망치는" 경우가 발생할 수 있음을 의미합니다. 이를 최소화하려면 학습률을 줄이는 것이 이상적입니다(예: 학습 후반부에는 Q-Table 값을 소폭만 조정).
+- **길이가 갑자기 증가한다**. 그래프에서 볼 수 있듯이 어느 시점에서는 길이가 갑자기 증가합니다. 이는 과정의 확률적 특성을 나타내고, Q-테이블 계수를 새 값으로 덮어쓰며 "망칠" 수 있음을 의미합니다. 이상적으로는 학습률을 낮춰(예: 학습 후반부에서는 Q-테이블 값을 약간만 조정) 이를 최소화해야 합니다.
-전체적으로, 학습 과정의 성공과 품질은 학습률, 학습률 감소, 할인 계수와 같은 매개변수에 크게 의존한다는 점을 기억하는 것이 중요합니다. 이러한 매개변수는 **하이퍼파라미터**라고 불리며, 학습 중에 최적화하는 **파라미터**(예: Q-Table 계수)와 구분됩니다. 최적의 하이퍼파라미터 값을 찾는 과정을 **하이퍼파라미터 최적화**라고 하며, 이는 별도의 주제로 다룰 가치가 있습니다.
+전반적으로 학습 성공과 품질은 학습률, 학습률 감소, 할인율과 같은 매개변수에 크게 의존합니다. 이러한 매개변수는 훈련 중 최적화하는 매개변수(예: Q-테이블 계수)와 구분하기 위해 하이퍼파라미터라고 불리며, 최적의 하이퍼파라미터 값을 찾는 과정을 하이퍼파라미터 최적화라고 하며 별도의 주제를 필요로 합니다.
## [강의 후 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
-## 과제
+## 과제
[더 현실적인 세계](assignment.md)
---
-**면책 조항**:
-이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서(원어로 작성된 문서)를 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.
\ No newline at end of file
+
+**면책 조항**:
+이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 기하기 위해 노력하고 있으나, 자동 번역은 오류나 부정확한 부분이 있을 수 있음을 유의하시기 바랍니다. 원본 문서의 원어본이 권위 있는 자료로 간주되어야 합니다. 중요한 정보의 경우, 전문가의 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.
+
\ No newline at end of file
diff --git a/translations/ko/8-Reinforcement/2-Gym/README.md b/translations/ko/8-Reinforcement/2-Gym/README.md
index 644125a10..b5cd67c3e 100644
--- a/translations/ko/8-Reinforcement/2-Gym/README.md
+++ b/translations/ko/8-Reinforcement/2-Gym/README.md
@@ -1,14 +1,34 @@
-## 사전 준비
+# 카트폴 스케이팅
-이번 강의에서는 **OpenAI Gym**이라는 라이브러리를 사용하여 다양한 **환경**을 시뮬레이션할 것입니다. 이 강의의 코드는 로컬 환경(예: Visual Studio Code)에서 실행할 수 있으며, 이 경우 시뮬레이션이 새 창에서 열립니다. 온라인으로 코드를 실행할 경우, [여기](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7)에 설명된 대로 코드를 약간 수정해야 할 수도 있습니다.
+이전 강의에서 해결했던 문제는 장난감 문제처럼 보일 수 있으며, 실제 생활 시나리오에 적용하기 어렵다고 느껴질 수 있습니다. 그러나 실제 많은 문제들이 이와 비슷한 시나리오를 공유합니다 — 체스나 바둑 게임도 포함됩니다. 이들은 규칙이 정해진 보드와 이산 상태를 갖고 있다는 점에서 비슷합니다.
+
+## [사전 강의 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
+
+## 소개
+
+이번 강의에서는 Q-러닝의 동일한 원리를 **연속 상태** 문제에 적용할 것입니다. 연속 상태란 하나 이상의 실수로 주어지는 상태를 의미합니다. 아래 문제를 다룰 예정입니다:
+
+> 문제: 피터가 늑대에게서 도망치려면 더 빨리 움직여야 합니다. Q-러닝을 이용하여 피터가 스케이트를 배우고, 특히 균형을 잡는 법을 배우는 과정을 살펴봅니다.
+
+
+
+> 피터와 그의 친구들이 늑대에게서 도망치기 위해 창의력을 발휘하고 있습니다! 이미지 제공: [Jen Looper](https://twitter.com/jenlooper)
+
+우리는 **카트폴(CartPole)** 문제라 불리는 단순화된 균형 맞추기 문제를 사용할 것입니다. 카트폴 세계에서는 수평 슬라이더가 좌우로 움직일 수 있고, 목표는 슬라이더 위에 수직 막대를 균형 있게 세우는 것입니다.
+
+
+
+## 필수 사항
+
+이번 강의에서는 OpenAI Gym이라는 라이브러리를 사용하여 다양한 환경을 시뮬레이션할 것입니다. Visual Studio Code와 같이 로컬에서 강의 코드를 실행하면, 시뮬레이션이 새 창에서 열릴 것입니다. 온라인 실행 시에는 [여기](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7) 설명된 코드 조정이 필요할 수 있습니다.
## OpenAI Gym
-이전 강의에서는 게임의 규칙과 상태가 우리가 직접 정의한 `Board` 클래스에 의해 제공되었습니다. 이번에는 **시뮬레이션 환경**을 사용하여 균형 잡힌 막대의 물리학을 시뮬레이션할 것입니다. 강화 학습 알고리즘을 훈련하기 위한 가장 인기 있는 시뮬레이션 환경 중 하나는 [Gym](https://gym.openai.com/)이며, 이는 [OpenAI](https://openai.com/)에서 관리합니다. 이 Gym을 사용하면 카트폴 시뮬레이션부터 아타리 게임까지 다양한 **환경**을 생성할 수 있습니다.
+이전 강의에는 게임의 규칙과 상태를 우리가 정의한 `Board` 클래스로 표현했습니다. 이번에는 균형 잡기 물리학을 시뮬레이션하는 특수 환경을 이용합니다. 강화학습 알고리즘 훈련에 가장 널리 사용되는 시뮬레이션 환경 중 하나는 [Gym](https://gym.openai.com/)이라 불리며, [OpenAI](https://openai.com/)에서 유지 관리합니다. 이 Gym을 이용하여 카트폴 시뮬레이션부터 아타리 게임까지 다양한 환경을 만들 수 있습니다.
-> **참고**: OpenAI Gym에서 제공하는 다른 환경은 [여기](https://gym.openai.com/envs/#classic_control)에서 확인할 수 있습니다.
+> 참고: OpenAI Gym에서 사용할 수 있는 다른 환경들은 [여기](https://gym.openai.com/envs/#classic_control)에서 확인할 수 있습니다.
-먼저 Gym을 설치하고 필요한 라이브러리를 가져옵니다. (코드 블록 1):
+먼저 gym을 설치하고 필요한 라이브러리를 가져옵니다 (코드 블록 1):
```python
import sys
@@ -22,13 +42,13 @@ import random
## 연습 - 카트폴 환경 초기화하기
-카트폴 균형 문제를 다루기 위해서는 해당 환경을 초기화해야 합니다. 각 환경은 다음과 관련됩니다:
+카트폴 균형 문제를 다루려면 해당 환경을 초기화해야 합니다. 각 환경에는 다음이 연관되어 있습니다:
-- **관찰 공간**: 환경에서 얻는 정보의 구조를 정의합니다. 카트폴 문제에서는 막대의 위치, 속도 및 기타 값을 받습니다.
+- **관찰 공간**: 환경에서 받는 정보의 구조를 정의합니다. 카트폴 문제에서는 기둥의 위치, 속도 등 여러 값을 받습니다.
-- **행동 공간**: 가능한 행동을 정의합니다. 우리의 경우 행동 공간은 이산적이며, **왼쪽**과 **오른쪽** 두 가지 행동으로 구성됩니다. (코드 블록 2)
+- **행동 공간**: 가능한 행동을 정의합니다. 이 경우 행동 공간은 이산적이며, 두 가지 행동 - 왼쪽 과 오른쪽 으로 구성됩니다. (코드 블록 2)
-1. 초기화를 위해 다음 코드를 입력하세요:
+1. 초기화하려면 다음 코드를 입력하세요:
```python
env = gym.make("CartPole-v1")
@@ -37,11 +57,11 @@ import random
print(env.action_space.sample())
```
-환경이 어떻게 작동하는지 확인하려면 100단계 동안 짧은 시뮬레이션을 실행해 봅시다. 각 단계에서 `action_space`에서 무작위로 선택한 행동을 제공합니다.
+환경이 어떻게 작동하는지 보려면 100 스텝 동안 간단한 시뮬레이션을 실행해 보겠습니다. 각 스텝에서는 하나의 행동을 제공하는데, 여기서는 `action_space`에서 무작위로 행동을 선택합니다.
-1. 아래 코드를 실행하고 결과를 확인하세요.
+1. 아래 코드를 실행해 결과를 확인해 보세요.
- ✅ 이 코드는 로컬 Python 설치에서 실행하는 것이 좋습니다! (코드 블록 3)
+ ✅ 이 코드는 로컬 파이썬 설치 환경에서 실행하는 것이 좋습니다! (코드 블록 3)
```python
env.reset()
@@ -52,11 +72,11 @@ import random
env.close()
```
- 다음과 유사한 이미지를 볼 수 있어야 합니다:
+ 결과는 다음과 비슷한 이미지를 볼 수 있습니다:
- 
+ 
-1. 시뮬레이션 중에는 행동을 결정하기 위해 관찰값을 얻어야 합니다. 실제로 `step` 함수는 현재 관찰값, 보상 함수, 시뮬레이션을 계속할 가치가 있는지 여부를 나타내는 완료 플래그를 반환합니다: (코드 블록 4)
+1. 시뮬레이션 도중에는 어떻게 행동할지 결정하기 위해 관찰값을 받아야 합니다. 사실 `step` 함수는 현재 관찰값, 보상 값, 그리고 시뮬레이션을 계속할지 여부를 나타내는 완료 플래그를 반환합니다: (코드 블록 4)
```python
env.reset()
@@ -69,7 +89,7 @@ import random
env.close()
```
- 노트북 출력에서 다음과 같은 결과를 볼 수 있습니다:
+ 노트북 출력에서는 다음과 같은 결과를 볼 수 있습니다:
```text
[ 0.03403272 -0.24301182 0.02669811 0.2895829 ] -> 1.0
@@ -82,43 +102,43 @@ import random
[ 0.17617249 0.35602306 -0.21873684 -0.90998894] -> 1.0
```
- 시뮬레이션의 각 단계에서 반환되는 관찰 벡터는 다음 값을 포함합니다:
- - 카트의 위치
- - 카트의 속도
- - 막대의 각도
- - 막대의 회전 속도
+ 시뮬레이션 각 스텝에서 반환되는 관찰 벡터는 다음 값을 포함합니다:
+ - 카트 위치
+ - 카트 속도
+ - 막대 각도
+ - 막대 회전 속도
-1. 이러한 숫자의 최소값과 최대값을 확인하세요: (코드 블록 5)
+1. 이 값들의 최소 및 최대값을 구해 봅시다: (코드 블록 5)
```python
print(env.observation_space.low)
print(env.observation_space.high)
```
- 또한 각 시뮬레이션 단계에서 보상 값이 항상 1임을 알 수 있습니다. 이는 우리의 목표가 가능한 한 오랫동안 막대를 수직에 가깝게 유지하는 것이기 때문입니다.
+ 각 시뮬레이션 단계에서 보상 값이 항상 1인 것을 알 수 있습니다. 이는 목표가 가능한 오랫동안 막대를 수직으로 유지하여 최대한 오래 생존하는 것이기 때문입니다.
- ✅ 실제로, 카트폴 시뮬레이션은 100번의 연속적인 시도에서 평균 보상이 195에 도달하면 해결된 것으로 간주됩니다.
+ ✅ 사실 카트폴 시뮬레이션은 100번 연속 시도에서 평균 보상이 195 이상이면 문제를 해결한 것으로 간주됩니다.
## 상태 이산화
-Q-Learning에서는 각 상태에서 무엇을 해야 할지를 정의하는 Q-테이블을 구축해야 합니다. 이를 위해 상태는 **이산적**이어야 하며, 더 정확히는 유한한 수의 이산 값으로 구성되어야 합니다. 따라서 관찰값을 **이산화**하여 유한한 상태 집합으로 매핑해야 합니다.
+Q-러닝에서는 각 상태에서 무엇을 할지 정의하는 Q-테이블을 만들어야 합니다. 이를 위해 상태가 이산적이어야 하며, 더 정확히는 유한한 개수의 이산 값들을 포함해야 합니다. 따라서 관찰값을 이산화하여 유한 집합의 상태로 매핑할 필요가 있습니다.
-이를 수행하는 몇 가지 방법이 있습니다:
+이를 하는 몇 가지 방법은 다음과 같습니다:
-- **구간으로 나누기**: 특정 값의 범위를 알고 있다면 이 범위를 여러 **구간**으로 나누고, 해당 값이 속하는 구간 번호로 값을 대체할 수 있습니다. 이는 numpy의 [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html) 메서드를 사용하여 수행할 수 있습니다. 이 경우 디지털화에 선택한 구간 수에 따라 상태 크기를 정확히 알 수 있습니다.
+- **빈(bin)으로 나누기**: 특정 값의 구간을 알고 있으면 이 구간을 여러 빈으로 나누고, 값이 속한 빈 번호로 값을 대체할 수 있습니다. 이는 numpy의 [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html) 메서드를 사용해 가능합니다. 이 경우 선택한 빈 개수에 따라 상태 크기를 정확히 알 수 있습니다.
-✅ 값을 특정 유한 범위(예: -20에서 20)로 선형 보간한 다음, 반올림하여 정수로 변환할 수 있습니다. 이는 입력 값의 정확한 범위를 모를 경우 상태 크기에 대한 제어가 약간 줄어듭니다. 예를 들어, 우리의 경우 4개의 값 중 2개는 상한/하한이 정의되어 있지 않아 상태 수가 무한해질 수 있습니다.
+✅ 선형 보간법을 사용해 값을 어떤 유한한 구간(예: -20에서 20) 안으로 가져온 뒤, 반올림하여 정수로 변환하는 방법도 있습니다. 이 경우 입력 값의 정확한 범위를 모르면 상태 크기에 대한 제어가 다소 떨어집니다. 예를 들어 우리 문제에서는 4개의 값 중 2개가 상한/하한이 없기 때문에 상태의 개수가 무한대가 될 수 있습니다.
-우리의 예제에서는 두 번째 접근법을 사용할 것입니다. 나중에 알 수 있듯이 상한/하한이 정의되지 않았음에도 불구하고, 이러한 값들은 특정 유한 범위를 벗어나는 경우가 드뭅니다. 따라서 극단적인 값의 상태는 매우 드물게 나타납니다.
+이번 예제에서는 두 번째 방법으로 진행하겠습니다. 후에 알 수 있겠지만, 상한/하한이 불명확해도 그런 극단적인 값은 드물게 발생하므로 극값 상태들은 매우 희귀합니다.
-1. 모델에서 관찰값을 받아 4개의 정수 값 튜플을 생성하는 함수는 다음과 같습니다: (코드 블록 6)
+1. 관찰값을 받아서 4개의 정수 값을 가지는 튜플로 변환하는 함수는 다음과 같습니다: (코드 블록 6)
```python
def discretize(x):
return tuple((x/np.array([0.25, 0.25, 0.01, 0.1])).astype(np.int))
```
-1. 구간을 사용한 또 다른 이산화 방법을 탐색해 봅시다: (코드 블록 7)
+1. 빈을 활용한 다른 이산화 방법도 살펴봅시다: (코드 블록 7)
```python
def create_bins(i,num):
@@ -126,17 +146,17 @@ Q-Learning에서는 각 상태에서 무엇을 해야 할지를 정의하는 Q-
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
+ ints = [(-5,5),(-2,2),(-0.5,0.5),(-2,2)] # 각 매개변수에 대한 값의 구간
+ nbins = [20,20,10,10] # 각 매개변수에 대한 빈의 수
bins = [create_bins(ints[i],nbins[i]) for i in range(4)]
def discretize_bins(x):
return tuple(np.digitize(x[i],bins[i]) for i in range(4))
```
-1. 짧은 시뮬레이션을 실행하고 이산화된 환경 값을 관찰해 봅시다. `discretize`와 `discretize_bins`를 모두 시도해 보고 차이가 있는지 확인하세요.
+1. 이제 간단한 시뮬레이션을 실행하여 이산화된 환경 값을 관찰해 보세요. `discretize` 와 `discretize_bins` 양쪽 모두 시험해 보고 차이가 있는지 확인해 보세요.
- ✅ `discretize_bins`는 0부터 시작하는 구간 번호를 반환합니다. 따라서 입력 변수 값이 0 근처일 경우 구간의 중간 값(10)을 반환합니다. `discretize`에서는 출력 값의 범위에 대해 신경 쓰지 않았기 때문에 값이 음수가 될 수 있으며, 0은 0에 해당합니다. (코드 블록 8)
+ ✅ `discretize_bins`는 0부터 시작하는 빈 번호를 반환하므로 입력 값이 0 근처일 때는 구간 중간 번호(10)를 돌려줍니다. 반면 `discretize`는 출력 값 범위를 제한하지 않아 음수가 나올 수 있기 때문에 상태 값이 이동하지 않으며, 0은 0에 대응합니다. (코드 블록 8)
```python
env.reset()
@@ -150,15 +170,15 @@ Q-Learning에서는 각 상태에서 무엇을 해야 할지를 정의하는 Q-
env.close()
```
- ✅ 환경 실행을 보고 싶다면 `env.render`로 시작하는 줄의 주석을 제거하세요. 그렇지 않으면 백그라운드에서 실행할 수 있으며, 이 방식이 더 빠릅니다. Q-Learning 과정에서는 이 "보이지 않는" 실행을 사용할 것입니다.
+ ✅ `env.render`로 시작하는 줄의 주석을 해제하면 환경이 실제 어떻게 동작하는지 볼 수 있습니다. 주석 상태라면 백그라운드에서 실행하는 것이므로 더 빠릅니다. 이 "보이지 않는" 실행 방식을 Q-러닝 과정에서 사용할 것입니다.
## Q-테이블 구조
-이전 강의에서는 상태가 0에서 8까지의 숫자 쌍으로 간단했기 때문에 Q-테이블을 8x8x2 형태의 numpy 텐서로 표현하는 것이 편리했습니다. 구간 이산화를 사용하는 경우 상태 벡터의 크기도 알려져 있으므로 동일한 접근법을 사용하여 상태를 20x20x10x10x2 배열 형태로 표현할 수 있습니다(여기서 2는 행동 공간의 차원이며, 첫 번째 차원은 관찰 공간의 각 매개변수에 대해 선택한 구간 수에 해당합니다).
+이전 강의에선 상태가 0부터 8사이의 두 숫자였어서, Q-테이블을 크기 8x8x2인 numpy 텐서로 나타내기 편했습니다. 빈 이산화를 쓰면 상태 벡터 크기가 알려져서 같은 방식을 사용하여 관찰 공간 각 매개변수에 대해 선택한 빈 수만큼 20x20x10x10x2 (끝의 2는 행동 공간 차원) 배열로 상태를 표현할 수 있습니다.
-하지만 관찰 공간의 정확한 차원이 알려지지 않은 경우도 있습니다. `discretize` 함수의 경우, 일부 원래 값이 제한되지 않았기 때문에 상태가 특정 한계 내에 유지된다는 것을 확신할 수 없습니다. 따라서 약간 다른 접근법을 사용하여 Q-테이블을 딕셔너리로 표현할 것입니다.
+그러나 때때로 관찰 공간의 정확한 차원이 알려지지 않을 수 있습니다. `discretize` 함수처럼 상태가 일정 경계 내에 머무르는지 확실치 않은 경우도 있습니다. 그래서 우리는 약간 다른 방식을 사용하여 Q-테이블을 딕셔너리로 나타냅니다.
-1. *(state, action)* 쌍을 딕셔너리 키로 사용하고, 값은 Q-테이블 항목 값에 해당합니다. (코드 블록 9)
+1. *(state, action)* 쌍을 딕셔너리 키로 쓰고, 값은 Q-테이블 엔트리 값을 대응시킵니다. (코드 블록 9)
```python
Q = {}
@@ -168,38 +188,38 @@ Q-Learning에서는 각 상태에서 무엇을 해야 할지를 정의하는 Q-
return [Q.get((state,a),0) for a in actions]
```
- 여기서 `qvalues()`라는 함수를 정의하여 특정 상태에 대해 가능한 모든 행동에 해당하는 Q-테이블 값을 반환합니다. Q-테이블에 항목이 없으면 기본값으로 0을 반환합니다.
+ 여기서는 `qvalues()` 함수도 정의하여 주어진 상태에서 가능한 모든 행동에 대한 Q-테이블 값 리스트를 반환합니다. 만약 Q-테이블에 해당 엔트리가 없으면 기본값 0을 반환합니다.
-## Q-Learning 시작하기
+## Q-러닝 시작
-이제 피터에게 균형 잡는 법을 가르칠 준비가 되었습니다!
+이제 피터에게 균형 잡기 기술을 가르쳐 봅시다!
-1. 먼저 몇 가지 하이퍼파라미터를 설정합시다: (코드 블록 10)
+1. 먼저 하이퍼파라미터를 설정합니다: (코드 블록 10)
```python
- # hyperparameters
+ # 하이퍼파라미터
alpha = 0.3
gamma = 0.9
epsilon = 0.90
```
- 여기서 `alpha`는 **학습률**로, 각 단계에서 Q-테이블의 현재 값을 어느 정도 조정해야 할지를 정의합니다. 이전 강의에서는 1로 시작하여 훈련 중에 `alpha`를 낮은 값으로 줄였습니다. 이번 예제에서는 단순성을 위해 이를 일정하게 유지할 것이며, 나중에 `alpha` 값을 조정하는 실험을 할 수 있습니다.
+ 여기서 `alpha`는 학습률로 매 단계마다 Q-테이블 값을 얼마나 조정할지 정의합니다. 이전에는 1에서 출발해 훈련 중 점차 낮추었습니다. 이번 예제에서는 단순화를 위해 고정값으로 두고 나중에 값들을 조절해 볼 수 있습니다.
- `gamma`는 **할인 계수**로, 현재 보상보다 미래 보상을 얼마나 우선시해야 하는지를 나타냅니다.
+ `gamma`는 할인율로, 미래 보상을 현재 보상보다 얼마나 더 중요시할지 나타냅니다.
- `epsilon`은 **탐험/활용 계수**로, 탐험을 선호할지 활용을 선호할지를 결정합니다. 알고리즘에서는 `epsilon` 비율만큼 Q-테이블 값을 기준으로 다음 행동을 선택하고, 나머지 경우에는 무작위 행동을 실행합니다. 이를 통해 이전에 탐색하지 않은 검색 공간 영역을 탐험할 수 있습니다.
+ `epsilon`은 탐색/활용 비율로 탐색과 활용 중 어느 쪽을 더 선호할지 결정합니다. 알고리즘에서는 `epsilon` 확률로 Q-테이블의 값을 따라 행동하고, 나머지 경우에는 무작위 행동을 실행합니다. 이렇게 해야 전에 보지 못한 탐색 영역을 살필 수 있습니다.
- ✅ 균형을 잡는 관점에서 보면, 무작위 행동(탐험)은 잘못된 방향으로의 무작위 펀치처럼 작용하며, 막대는 이러한 "실수"에서 균형을 회복하는 방법을 배워야 합니다.
+ ✅ 균형 맞추기 관점에서 무작위 행동(탐색)은 잘못된 방향에 무작위 펀치를 가하는 것이며, 막대는 이런 "실수"에서 균형 회복법을 학습해야 합니다.
### 알고리즘 개선
-이전 강의의 알고리즘을 두 가지 방식으로 개선할 수 있습니다:
+이전 강의 알고리즘에 다음 두 가지 개선을 할 수 있습니다:
-- **평균 누적 보상 계산**: 여러 시뮬레이션에 걸쳐 평균 누적 보상을 계산합니다. 5000번의 반복마다 진행 상황을 출력하며, 해당 기간 동안 누적 보상의 평균을 계산합니다. 만약 195점 이상을 얻는다면 문제를 해결했다고 간주할 수 있으며, 요구된 품질보다 더 높은 품질로 해결한 것입니다.
+- **평균 누적 보상 계산**: 여러 시뮬레이션 동안 평균 누적 보상을 계산합니다. 각 5000 반복마다 진행 상황을 출력하고 이 기간의 누적 보상 평균을 냅니다. 만약 195점 이상 획득하면 문제를 해결했다고 간주할 수 있습니다.
-- **최대 평균 누적 결과 계산**: `Qmax`를 계산하고, 해당 결과에 해당하는 Q-테이블을 저장합니다. 훈련을 실행하면 평균 누적 결과가 때때로 감소하는 것을 알 수 있으며, 이는 상황을 악화시키는 값으로 이미 학습된 Q-테이블 값을 "파괴"할 수 있음을 의미합니다.
+- **최대 평균 누적 결과 계산**, `Qmax`, 그리고 이 결과에 대응하는 Q-테이블을 저장합니다. 훈련할 때 평균 누적 결과가 가끔 감소하는데, 이때는 Q-테이블 내에서 이전에 관찰된 최적 모델 값을 유지하려고 합니다.
-1. 각 시뮬레이션에서 누적 보상을 `rewards` 벡터에 수집하여 나중에 그래프를 그립니다. (코드 블록 11)
+1. 모든 시뮬레이션에서 누적 보상을 `rewards` 벡터에 수집하여 후속 시각화에 이용합니다. (코드 블록 11)
```python
def probs(v,eps=1e-4):
@@ -214,15 +234,15 @@ Q-Learning에서는 각 상태에서 무엇을 해야 할지를 정의하는 Q-
obs = env.reset()
done = False
cum_reward=0
- # == do the simulation ==
+ # == 시뮬레이션 실행 ==
while not done:
s = discretize(obs)
if random.random() Qmax:
@@ -240,25 +260,25 @@ Q-Learning에서는 각 상태에서 무엇을 해야 할지를 정의하는 Q-
cum_rewards=[]
```
-이 결과에서 다음을 알 수 있습니다:
+다음과 같은 결과를 관찰할 수 있습니다:
-- **목표에 근접**: 100번 이상의 연속 실행에서 195 누적 보상을 얻는 목표에 매우 근접하거나 실제로 달성했을 수 있습니다! 더 작은 숫자를 얻더라도, 우리는 5000번의 실행에서 평균을 내기 때문에 공식 기준에서는 100번의 실행만 필요합니다.
+- **목표에 근접**: 100번 이상의 연속 실행에서 평균 195 누적 보상 달성에 매우 근접했거나 이미 달성했을 수 있습니다! 결과가 작아도 5000번 평균이고 공식 기준은 100번이므로 확실치 않습니다.
-- **보상이 감소하기 시작**: 때때로 보상이 감소하기 시작하는데, 이는 상황을 악화시키는 값으로 이미 학습된 Q-테이블 값을 "파괴"할 수 있음을 의미합니다.
+- **보상이 감소하기 시작함**: 가끔 보상이 떨어지는데, 이는 Q-테이블의 이미 학습된 값을 더 나쁘게 만드는 값으로 덮어쓸 수 있음을 뜻합니다.
-이 관찰은 훈련 진행 상황을 그래프로 나타내면 더 명확하게 보입니다.
+이 현상은 훈련 진행 상황을 그래프로 그리면 더 뚜렷해집니다.
-## 훈련 진행 상황 그래프 그리기
+## 훈련 진행 상황 시각화
-훈련 중에 각 반복에서 누적 보상 값을 `rewards` 벡터에 수집했습니다. 이를 반복 번호에 대해 그래프로 나타내면 다음과 같습니다:
+훈련 동안, 각 반복에서 누적 보상 값을 `rewards` 벡터에 수집했습니다. 반복 횟수에 대응하여 이 값을 그래프로 나타낸 모습은 다음과 같습니다:
```python
plt.plot(rewards)
```
-
+
-이 그래프에서는 아무것도 알 수 없습니다. 이는 확률적 훈련 과정의 특성상 훈련 세션 길이가 크게 변하기 때문입니다. 이 그래프를 더 이해하기 쉽게 만들기 위해, 예를 들어 100번의 실험에 대해 **이동 평균**을 계산할 수 있습니다. 이는 `np.convolve`를 사용하여 편리하게 수행할 수 있습니다: (코드 블록 12)
+이 그래프는 말해주는 바가 거의 없습니다. 왜냐하면 확률적 훈련 프로세스 특성상 세션 길이가 크게 달라지기 때문입니다. 이 그래프를 좀 더 의미있게 만들기 위해, 100번 실험에 대한 이동 평균을 계산할 수 있습니다. `np.convolve`로 편리하게 계산 가능합니다: (코드 블록 12)
```python
def running_average(x,window):
@@ -267,21 +287,24 @@ def running_average(x,window):
plt.plot(running_average(rewards,100))
```
-
+
+
+## 하이퍼파라미터 조절
+
+학습을 더 안정적으로 만들려면 훈련 중에 하이퍼파라미터를 조절하는 것이 좋습니다. 특히:
+
+- **학습률(alpha)**: 1에 가까운 값에서 시작해 점차 감소시킵니다. 시간이 지날수록 Q-테이블 값의 확률이 좋아지고, 완전히 덮어쓰지 않고 조금씩 조정하게 됩니다.
-## 하이퍼파라미터 조정
+- **epsilon 증가**: 탐색을 줄이고 활용을 늘리기 위해 epsilon 값을 천천히 올릴 수 있습니다. 낮은 epsilon 값에서 시작하여 1에 가까워지는 방향이 적절할 것입니다.
-학습을 더 안정적으로 만들기 위해 훈련 중에 일부 하이퍼파라미터를 조정하는 것이 좋습니다. 특히:
+> **과제 1**: 하이퍼파라미터 값을 조절하며 더 높은 누적 보상을 달성할 수 있는지 시험해 보세요. 195 이상을 얻었나요?
-- **학습률** `alpha`의 경우, 1에 가까운 값으로 시작한 다음 점차적으로 이 값을 줄이는 것이 좋습니다. 시간이 지나면 Q-테이블에서 좋은 확률 값을 얻을 수 있으며, 이를 약간만 조정하고 새 값으로 완전히 덮어쓰지 않아야 합니다.
-- **epsilon 증가**: `epsilon`을 천천히 증가시켜 탐험을 줄이고 활용을 늘리는 것이 좋습니다. 낮은 `epsilon` 값으로 시작하여 거의 1에 가까운 값으로 이동하는 것이 합리적일 수 있습니다.
-> **작업 1**: 하이퍼파라미터 값을 조정해 보며 더 높은 누적 보상을 얻을 수 있는지 확인하세요. 195점을 넘기고 있나요?
-> **과제 2**: 문제를 공식적으로 해결하려면 100번의 연속 실행에서 평균 보상이 195에 도달해야 합니다. 훈련 중에 이를 측정하고 문제를 공식적으로 해결했는지 확인하세요!
+> **과제 2**: 문제를 정식으로 해결하려면 100번 연속 실행에서 평균 보상 195를 얻어야 합니다. 훈련 중에 이를 측정하고 문제를 정식으로 해결했는지 확인하세요!
-## 결과 확인하기
+## 결과를 실제로 보기
-훈련된 모델이 실제로 어떻게 작동하는지 보는 것은 흥미로울 것입니다. 시뮬레이션을 실행하고 훈련 중과 동일한 행동 선택 전략을 따라 Q-테이블의 확률 분포에 따라 샘플링해 봅시다: (코드 블록 13)
+훈련된 모델이 실제로 어떻게 동작하는지 보는 것이 흥미로울 것입니다. 시뮬레이션을 실행하고 훈련 중과 동일한 행동 선택 전략을 따르며 Q-Table의 확률 분포에 따라 샘플링 해봅시다: (코드 블록 13)
```python
obs = env.reset()
@@ -295,17 +318,17 @@ while not done:
env.close()
```
-다음과 같은 결과를 볼 수 있을 것입니다:
+다음과 같은 것을 볼 수 있을 것입니다:

---
-## 🚀도전
+## 🚀도전 과제
-> **과제 3**: 여기서는 최종 Q-테이블을 사용했지만, 이것이 최상의 결과를 제공하는 것은 아닐 수 있습니다. 우리가 가장 성능이 좋은 Q-테이블을 `Qbest` 변수에 저장했다는 것을 기억하세요! `Qbest`를 `Q`로 복사하여 최상의 Q-테이블을 사용해 동일한 예제를 실행하고 차이를 확인해 보세요.
+> **과제 3**: 여기서는 최종 Q-Table 사본을 사용했는데, 이것이 최선의 사본이 아닐 수도 있습니다. 최상의 성능을 낸 Q-Table을 `Qbest` 변수에 저장해두었음을 기억하세요! `Qbest`를 `Q`에 복사해서 최상의 Q-Table로 같은 예제를 시도해 보고 차이를 확인해 보세요.
-> **과제 4**: 여기서는 각 단계에서 최상의 행동을 선택하지 않고, 해당 확률 분포에 따라 샘플링했습니다. 항상 Q-테이블 값이 가장 높은 최상의 행동을 선택하는 것이 더 합리적일까요? 이를 위해 `np.argmax` 함수를 사용하여 Q-테이블 값이 가장 높은 행동 번호를 찾을 수 있습니다. 이 전략을 구현하여 균형 잡기에 개선이 있는지 확인해 보세요.
+> **과제 4**: 여기서는 각 단계마다 최선의 행동을 선택하지 않고, 해당 확률 분포에 따라 샘플링했습니다. 항상 Q-Table 값이 가장 높은 최선의 행동을 선택하는 것이 더 합리적일까요? 이는 `np.argmax` 함수를 사용해 가장 높은 Q-Table 값에 해당하는 행동 번호를 찾으면 됩니다. 이 전략을 구현하고 균형 유지가 개선되는지 확인해 보세요.
## [강의 후 퀴즈](https://ff-quizzes.netlify.app/en/ml/)
@@ -314,11 +337,13 @@ env.close()
## 결론
-우리는 이제 에이전트가 게임의 원하는 상태를 정의하는 보상 함수만 제공받고, 검색 공간을 지능적으로 탐색할 기회를 통해 좋은 결과를 얻는 방법을 배웠습니다. 우리는 Q-러닝 알고리즘을 이산적 환경과 연속적 환경에서 성공적으로 적용했으며, 이산적 행동을 사용했습니다.
+이제 원하는 게임 상태를 정의하는 보상 함수만 제공하고 탐색 공간을 지능적으로 탐험할 기회를 줌으로써 에이전트를 훈련해 좋은 결과를 얻는 방법을 배웠습니다. 이산 및 연속 환경의 경우에 Q-러닝 알고리즘을 성공적으로 적용했지만, 행동은 이산적이었습니다.
-행동 상태도 연속적이고 관찰 공간이 훨씬 더 복잡한 상황, 예를 들어 아타리 게임 화면의 이미지를 다루는 경우를 연구하는 것도 중요합니다. 이러한 문제에서는 종종 신경망과 같은 더 강력한 머신러닝 기술을 사용해야 좋은 결과를 얻을 수 있습니다. 이러한 더 고급 주제는 앞으로 진행될 고급 AI 과정에서 다룰 예정입니다.
+행동 상태도 연속적이고 관찰 공간이 Atari 게임 화면과 같이 훨씬 복잡한 상황을 연구하는 것도 중요합니다. 이러한 문제에서는 좋은 결과를 얻기 위해 신경망과 같은 더 강력한 머신러닝 기법을 사용해야 하는 경우가 많습니다. 이러한 고급 주제들은 우리가 곧 다룰 더 고급 AI 강의에서 다뤄질 내용입니다.
---
-**면책 조항**:
-이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서를 해당 언어로 작성된 상태에서 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.
\ No newline at end of file
+
+**면책 조항**:
+이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 기하기 위해 노력하고 있으나, 자동 번역은 오류나 부정확한 부분이 있을 수 있음을 유의하시기 바랍니다. 원본 문서의 원어본이 권위 있는 자료로 간주되어야 합니다. 중요한 정보의 경우, 전문가의 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.
+
\ No newline at end of file
diff --git a/translations/lt/.co-op-translator.json b/translations/lt/.co-op-translator.json
index 796740ece..883b39b0d 100644
--- a/translations/lt/.co-op-translator.json
+++ b/translations/lt/.co-op-translator.json
@@ -24,8 +24,8 @@
"language_code": "lt"
},
"1-Introduction/3-fairness/README.md": {
- "original_hash": "9a6b702d1437c0467e3c5c28d763dac2",
- "translation_date": "2025-09-05T07:55:02+00:00",
+ "original_hash": "0f00d72169a0d37eecfd16d71e01700a",
+ "translation_date": "2026-07-14T01:34:47+00:00",
"source_file": "1-Introduction/3-fairness/README.md",
"language_code": "lt"
},
@@ -54,8 +54,8 @@
"language_code": "lt"
},
"2-Regression/1-Tools/README.md": {
- "original_hash": "fa81d226c71d5af7a2cade31c1c92b88",
- "translation_date": "2025-09-05T07:46:22+00:00",
+ "original_hash": "0b8635427b582d03ea4ab7089b93e505",
+ "translation_date": "2026-07-14T01:31:41+00:00",
"source_file": "2-Regression/1-Tools/README.md",
"language_code": "lt"
},
@@ -72,8 +72,8 @@
"language_code": "lt"
},
"2-Regression/2-Data/README.md": {
- "original_hash": "7c077988328ebfe33b24d07945f16eca",
- "translation_date": "2025-09-05T07:47:19+00:00",
+ "original_hash": "a58b2c4d16c6b122643391745ac15af6",
+ "translation_date": "2026-07-14T01:32:30+00:00",
"source_file": "2-Regression/2-Data/README.md",
"language_code": "lt"
},
@@ -89,6 +89,12 @@
"source_file": "2-Regression/2-Data/solution/Julia/README.md",
"language_code": "lt"
},
+ "2-Regression/2-Data/solution/notebook.ipynb": {
+ "original_hash": "96b95f8cf473481f2f371de8156f1571",
+ "translation_date": "2026-07-14T01:06:47+00:00",
+ "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
+ "language_code": "lt"
+ },
"2-Regression/3-Linear/README.md": {
"original_hash": "8b776e731c35b171d316d01d0e7b1369",
"translation_date": "2026-04-26T19:19:25+00:00",
@@ -457,7 +463,7 @@
},
"8-Reinforcement/1-QLearning/README.md": {
"original_hash": "911efd5e595089000cb3c16fce1beab8",
- "translation_date": "2025-09-05T08:02:11+00:00",
+ "translation_date": "2026-07-14T01:34:00+00:00",
"source_file": "8-Reinforcement/1-QLearning/README.md",
"language_code": "lt"
},
@@ -523,7 +529,7 @@
},
"9-Real-World/2-Debugging-ML-Models/README.md": {
"original_hash": "df2b538e8fbb3e91cf0419ae2f858675",
- "translation_date": "2025-09-05T07:53:11+00:00",
+ "translation_date": "2026-07-14T01:35:40+00:00",
"source_file": "9-Real-World/2-Debugging-ML-Models/README.md",
"language_code": "lt"
},
@@ -581,6 +587,19 @@
"source_file": "TROUBLESHOOTING.md",
"language_code": "lt"
},
+ "__translation_failures__": {
+ "sketchnotes/LICENSE.md": {
+ "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f",
+ "source_file": "sketchnotes/LICENSE.md",
+ "language_code": "lt",
+ "failure_date": "2026-07-14T01:31:01+00:00",
+ "status": "failed",
+ "error_type": "TranslationIncompleteError",
+ "error_message": "Markdown translation remained incomplete for chunk 1.1.1 of 'LICENSE.md', and the chunk could not be split further.",
+ "translator_version": "0.20.0",
+ "failure_policy_version": 1
+ }
+ },
"docs/_sidebar.md": {
"original_hash": "68dd06c685f6ce840e0acfa313352e7c",
"translation_date": "2025-09-03T17:20:41+00:00",
diff --git a/translations/lt/1-Introduction/3-fairness/README.md b/translations/lt/1-Introduction/3-fairness/README.md
index 2356d66a0..ae672923c 100644
--- a/translations/lt/1-Introduction/3-fairness/README.md
+++ b/translations/lt/1-Introduction/3-fairness/README.md
@@ -1,133 +1,167 @@
-# Kuriant mašininio mokymosi sprendimus su atsakingu dirbtiniu intelektu
-
-
-> Sketchnote sukūrė [Tomomi Imura](https://www.twitter.com/girlie_mac)
-
-## [Prieš paskaitą atlikite testą](https://ff-quizzes.netlify.app/en/ml/)
+# Atsakingos dirbtinio intelekto mašininio mokymosi sprendimų kūrimas
+
+
+> Sketchnote pateikė [Tomomi Imura](https://www.twitter.com/girlie_mac)
+## [Išankstinis viktorinos testas](https://ff-quizzes.netlify.app/en/ml/)
+
## Įvadas
-Šioje mokymo programoje pradėsite suprasti, kaip mašininis mokymasis veikia mūsų kasdienį gyvenimą. Jau dabar sistemos ir modeliai dalyvauja kasdieniuose sprendimų priėmimo procesuose, tokiuose kaip sveikatos priežiūros diagnozės, paskolų patvirtinimai ar sukčiavimo aptikimas. Todėl svarbu, kad šie modeliai veiktų patikimai ir teiktų patikimus rezultatus. Kaip ir bet kuri programinė įranga, dirbtinio intelekto sistemos gali neatitikti lūkesčių arba turėti nepageidaujamų rezultatų. Todėl būtina suprasti ir paaiškinti dirbtinio intelekto modelio elgesį.
+Šiame kurse pradėsite atrasti, kaip mašininis mokymasis gali paveikti ir jau veikia mūsų kasdienį gyvenimą. Jau dabar sistemos ir modeliai dalyvauja kasdieniniame sprendimų priėmime, pavyzdžiui, sveikatos diagnozėse, paskolų patvirtinime ar sukčiavimo aptikime. Todėl svarbu, kad šie modeliai veiktų gerai ir suteiktų patikimus rezultatus. Kaip ir bet kuri programinė įranga, DI sistemos gali neišpildyti lūkesčių arba sukelti nepageidaujamą rezultatą. Todėl būtina sugebėti suprasti ir paaiškinti DI modelio elgseną.
-Įsivaizduokite, kas gali nutikti, kai duomenys, kuriuos naudojate modelių kūrimui, neturi tam tikrų demografinių duomenų, tokių kaip rasė, lytis, politinės pažiūros, religija, arba neproporcingai atspindi šiuos demografinius duomenis. O kas, jei modelio rezultatai yra interpretuojami taip, kad jie palankūs tam tikrai demografinei grupei? Kokios pasekmės tai gali turėti programai? Be to, kas nutinka, kai modelis sukelia neigiamą rezultatą ir yra žalingas žmonėms? Kas atsakingas už dirbtinio intelekto sistemos elgesį? Tai yra klausimai, kuriuos nagrinėsime šioje mokymo programoje.
+Įsivaizduokite, kas gali nutikti, kai duomenys, kuriais kūrėjate šiuos modelius, trūksta tam tikrų demografinių grupių, pavyzdžiui, pagal rasę, lytį, politinę nuostatą, religiją arba disproporcingai atstovauja tokias grupes. O kaip kai modelio rezultatai interpretuojami taip, tarsi jie palankiai vertintų tam tikrą demografinę grupę? Kokia to pasekmė programai? Be to, kas nutinka, kai modelis sukelia neigiamą poveikį ir yra kenksmingas žmonėms? Kas atsakingas už DI sistemos elgesį? Į šiuos klausimus atsakysime šiame kurse.
Šioje pamokoje jūs:
-- Suprasite, kodėl svarbu užtikrinti teisingumą mašininiame mokymesi ir išvengti su tuo susijusių žalingų pasekmių.
-- Susipažinsite su praktika, kaip analizuoti išskirtinius atvejus ir neįprastas situacijas, siekiant užtikrinti patikimumą ir saugumą.
-- Suprasite, kodėl būtina kurti įtraukias sistemas, kurios suteikia galimybes visiems.
-- Išnagrinėsite, kodėl svarbu apsaugoti duomenų ir žmonių privatumą bei saugumą.
-- Suprasite, kodėl būtina turėti „stiklinės dėžės“ požiūrį, kad būtų galima paaiškinti dirbtinio intelekto modelių elgesį.
-- Būsite sąmoningi, kodėl atsakomybė yra būtina, siekiant sukurti pasitikėjimą dirbtinio intelekto sistemomis.
+- Ugdysite suvokimą apie teisingumo svarbą mašininiame mokymesi ir su tuo susijusias žalas.
+- Susipažinsite su praktika tirti išskirtinius atvejus ir neįprastas situacijas, siekiant užtikrinti patikimumą ir saugumą.
+- Suprasite, kodėl svarbu įgalinti visus, kuriant įtraukiąsias sistemas.
+- Išnagrinėsite, kaip svarbu apsaugoti privatumo ir duomenų saugumą.
+- Sužinosite apie stiklinės dėžutės veikimo principą, paaiškinant DI modelių elgseną.
+- Suprasite, kaip atsakomybė yra būtina kuriant pasitikėjimą DI sistemomis.
-## Privalomos žinios
+## Reikalavimai iš anksto
-Prieš pradedant, rekomenduojame peržiūrėti „Atsakingo dirbtinio intelekto principų“ mokymo kelią ir pažiūrėti žemiau pateiktą vaizdo įrašą šia tema:
+Prieš pradedant rekomenduojame pereiti per "Atsakingo DI principus" mokymosi kelią ir peržiūrėti žemiau pateiktą vaizdo įrašą tema:
-Sužinokite daugiau apie atsakingą dirbtinį intelektą, sekdami šį [mokymo kelią](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)
+Sužinokite daugiau apie atsakingą DI naudodamiesi šiuo [Mokymosi keliu](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)
-[](https://youtu.be/dnC8-uUZXSc "Microsoft požiūris į atsakingą dirbtinį intelektą")
+[](https://youtu.be/dnC8-uUZXSc "Microsoft požiūris į atsakingą DI")
-> 🎥 Spustelėkite aukščiau esančią nuotrauką, kad peržiūrėtumėte vaizdo įrašą: Microsoft požiūris į atsakingą dirbtinį intelektą
+> 🎥 Spustelėkite aukščiau esančią nuotrauką, jei norite žiūrėti vaizdo įrašą: Microsoft požiūris į atsakingą DI
## Teisingumas
-Dirbtinio intelekto sistemos turėtų elgtis teisingai su visais ir vengti skirtingo poveikio panašioms žmonių grupėms. Pavyzdžiui, kai dirbtinio intelekto sistemos teikia rekomendacijas dėl medicininio gydymo, paskolų paraiškų ar įdarbinimo, jos turėtų pateikti tas pačias rekomendacijas visiems, turintiems panašius simptomus, finansines aplinkybes ar profesinę kvalifikaciją. Kiekvienas iš mūsų, kaip žmonės, turime paveldėtus šališkumus, kurie veikia mūsų sprendimus ir veiksmus. Šie šališkumai gali atsispindėti duomenyse, kuriuos naudojame dirbtinio intelekto sistemų mokymui. Tokia manipuliacija kartais gali įvykti netyčia. Dažnai sunku sąmoningai suvokti, kada į duomenis įvedate šališkumą.
+DI sistemos turėtų visus vertinti teisingai ir vengti paveikti panašias žmonių grupes skirtingai. Pavyzdžiui, kai DI sistemos pateikia rekomendacijas gydymo, paskolų ar įdarbinimo klausimais, jos turėtų daryti tokias pačias rekomendacijas visiems su panašiais simptomais, finansine padėtimi ar profesiniais kvalifikacijomis. Kiekvienas iš mūsų, kaip žmonių, turime paveldėtų šališkumų, kurie veikia mūsų sprendimus ir veiksmus. Šie šališkumai gali būti matomi duomenyse, kuriais mokosi DI sistemos. Tokia manipuliacija kartais įvyksta netyčia. Dažnai sunku sąmoningai suprasti, kada duomenyse įvedamas šališkumas.
-**„Netolygumas“** apima neigiamą poveikį arba „žalą“ žmonių grupei, pavyzdžiui, apibrėžtai pagal rasę, lytį, amžių ar negalios statusą. Pagrindinės su teisingumu susijusios žalos rūšys gali būti klasifikuojamos taip:
+**„Neteisingumas“** apima neigiamą poveikį arba „žalą“ žmonių grupėms, apibrėžtoms pagal rasę, lytį, amžių ar neįgalumo statusą. Pagrindinės žalos, susijusios su teisingumu, gali būti skirstomos į:
-- **Paskirstymas**, kai, pavyzdžiui, lytis ar etninė grupė yra palankesnė už kitą.
-- **Paslaugos kokybė**. Jei duomenys mokomi tik vienam konkrečiam scenarijui, tačiau realybė yra daug sudėtingesnė, tai lemia prastai veikiančią paslaugą. Pavyzdžiui, rankų muilo dozatorius, kuris negali aptikti žmonių su tamsia oda. [Nuoroda](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
-- **Menkinimas**. Nesąžiningai kritikuoti ir žymėti ką nors ar kažką. Pavyzdžiui, vaizdų žymėjimo technologija klaidingai pažymėjo tamsiaodžių žmonių nuotraukas kaip gorilas.
-- **Perteklinis arba nepakankamas atstovavimas**. Idėja, kad tam tikra grupė nėra matoma tam tikroje profesijoje, o bet kokia paslauga ar funkcija, kuri toliau tai skatina, prisideda prie žalos.
-- **Stereotipai**. Tam tikros grupės susiejimas su iš anksto priskirtais atributais. Pavyzdžiui, kalbos vertimo sistema tarp anglų ir turkų kalbų gali turėti netikslumų dėl žodžių, susijusių su stereotipiniais lyties ryšiais.
+- **Paskirstymas**, pvz., kai pirmenybė teikiama lyčiai ar etninei grupei.
+- **Paslaugos kokybė**. Jei duomenys yra mokomi tik vienam scenarijui, tačiau realybė yra daug sudėtingesnė, tai lemia prastai veikiančią paslaugą. Pavyzdžiui, muilo dozatorius, kuris neatskiria žmonių su tamsesne oda. [Šaltinis](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
+- **Gėdinimas**. Neteisingai kritikuoti ir etiketėmis apklijuoti kažką ar kažką. Pavyzdžiui, vaizdų žymėjimo technologija tapo žinoma dėl tamsios odos žmonių nuotraukų klaidingo žymėjimo kaip gorilų.
+- **Perdėta ar nepilna atstovybė**. Mintis, kad tam tikra grupė nėra matoma tam tikroje profesijoje, ir bet koks paslaugų ar funkcijų, kurios tai skatina, palaikymas prisideda prie žalos.
+- **Stereotipai**. Priskirti iš anksto apibrėžtoms grupėms tam tikras savybes. Pavyzdžiui, anglų ir turkų kalbų vertimo sistema gali netiksliai versti žodžius, turinčius lyčių stereotipų atspalvį.
-
+
> vertimas į turkų kalbą
-
+
> vertimas atgal į anglų kalbą
-Kuriant ir testuojant dirbtinio intelekto sistemas, turime užtikrinti, kad dirbtinis intelektas būtų teisingas ir neprogramuotas priimti šališkų ar diskriminuojančių sprendimų, kurių žmonėms taip pat draudžiama priimti. Teisingumo užtikrinimas dirbtiniame intelekte ir mašininiame mokymesi išlieka sudėtingu sociotechniniu iššūkiu.
+Kuriant ir testuojant DI sistemas, turime užtikrinti, kad DI būtų teisingas ir nesukurtų šališkų ar diskriminuojančių sprendimų, kurių taip pat neleidžiama priimti žmonėms. Užtikrinti teisingumą DI ir mašininiame mokymesi yra sudėtinga sociotechninė užduotis.
### Patikimumas ir saugumas
-Norint sukurti pasitikėjimą, dirbtinio intelekto sistemos turi būti patikimos, saugios ir nuoseklios tiek įprastomis, tiek netikėtomis sąlygomis. Svarbu žinoti, kaip dirbtinio intelekto sistemos elgsis įvairiose situacijose, ypač kai jos yra išskirtinės. Kuriant dirbtinio intelekto sprendimus, reikia skirti daug dėmesio tam, kaip spręsti įvairias aplinkybes, su kuriomis dirbtinio intelekto sprendimai gali susidurti. Pavyzdžiui, savarankiškai vairuojantis automobilis turi prioritetą teikti žmonių saugumui. Todėl dirbtinis intelektas, valdantis automobilį, turi atsižvelgti į visas galimas situacijas, su kuriomis automobilis gali susidurti, tokias kaip naktis, audros, pūgos, vaikai, bėgantys per gatvę, augintiniai, kelio darbai ir pan. Kaip gerai dirbtinio intelekto sistema gali patikimai ir saugiai spręsti įvairias sąlygas, atspindi duomenų mokslininko ar dirbtinio intelekto kūrėjo numatymo lygį projektavimo ar testavimo metu.
+Norint užmegzti pasitikėjimą, DI sistemos turi būti patikimos, saugios ir nuoseklios tiek įprastomis, tiek netikėtomis sąlygomis. Svarbu žinoti, kaip DI sistemos elgsis įvairiose situacijose, ypač kai tai išimtys. Kuriant DI sprendimus reikia skirti daug dėmesio įvairių galimų situacijų, su kuriomis DI sprendimai gali susidurti, valdymui. Pavyzdžiui, autonominis automobilis turi pirmiausia rūpintis žmonių saugumu. Todėl automobilį valdančiam DI reikia apsvarstyti visas galimas situacijas, su kuriomis automobilis gali susidurti, tokių kaip naktis, perkūnija ar pūgos, vaikai bėgantys per gatvę, gyvūnai, kelio darbai ir pan. Kaip gerai DI sistema gali patikimai ir saugiai susidoroti su skirtingomis sąlygomis, rodo duomenų mokslininko ar DI kūrėjo numatymo lygį projektuojant ar testuojant sistemą.
-> [🎥 Spustelėkite čia, kad peržiūrėtumėte vaizdo įrašą: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
+> [🎥 Spustelėkite čia, jei norite žiūrėti vaizdo įrašą: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
-### Įtrauktis
+### Įtraukumas
-Dirbtinio intelekto sistemos turėtų būti sukurtos taip, kad įtrauktų ir suteiktų galimybes visiems. Kuriant ir įgyvendinant dirbtinio intelekto sistemas, duomenų mokslininkai ir dirbtinio intelekto kūrėjai identifikuoja ir sprendžia galimas kliūtis sistemoje, kurios netyčia galėtų išskirti žmones. Pavyzdžiui, pasaulyje yra 1 milijardas žmonių su negalia. Su dirbtinio intelekto pažanga jie gali lengviau pasiekti įvairią informaciją ir galimybes savo kasdieniame gyvenime. Sprendžiant kliūtis, atsiranda galimybės inovuoti ir kurti dirbtinio intelekto produktus su geresnėmis patirtimis, kurios naudingos visiems.
+DI sistemas reikėtų kurti taip, kad jos įtrauktų ir įgalintų visus. Kuriant ir diegiant DI sistemas, duomenų mokslininkai ir DI kūrėjai identifikuoja ir šalina galimas kliūtis, kurios gali netyčia pašalinti žmones. Pavyzdžiui, pasaulyje yra 1 milijardas neįgaliųjų. Besivystantis DI jiems leidžia lengviau pasiekti daug informacijų ir galimybių kasdieniniame gyvenime. Pašalinus kliūtis, atsiveria galimybės inovuoti ir kurti geresnes DI produktų patirtis, naudingas visiems.
-> [🎥 Spustelėkite čia, kad peržiūrėtumėte vaizdo įrašą: įtrauktis dirbtiniame intelekte](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
+> [🎥 Spustelėkite čia, jei norite žiūrėti vaizdo įrašą: įtraukumas DI](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
### Saugumas ir privatumas
-Dirbtinio intelekto sistemos turėtų būti saugios ir gerbti žmonių privatumą. Žmonės mažiau pasitiki sistemomis, kurios kelia pavojų jų privatumui, informacijai ar gyvybei. Mokant mašininio mokymosi modelius, mes pasikliaujame duomenimis, kad gautume geriausius rezultatus. Tai darydami turime atsižvelgti į duomenų kilmę ir vientisumą. Pavyzdžiui, ar duomenys buvo pateikti vartotojų, ar viešai prieinami? Be to, dirbant su duomenimis, būtina kurti dirbtinio intelekto sistemas, kurios galėtų apsaugoti konfidencialią informaciją ir atsispirti atakoms. Kadangi dirbtinis intelektas tampa vis labiau paplitęs, privatumo apsauga ir svarbios asmeninės bei verslo informacijos saugumas tampa vis svarbesni ir sudėtingesni. Privatumo ir duomenų saugumo klausimai reikalauja ypatingo dėmesio dirbtiniam intelektui, nes duomenų prieiga yra būtina, kad dirbtinio intelekto sistemos galėtų tiksliai ir informuotai priimti sprendimus apie žmones.
+DI sistemos turėtų būti saugios ir gerbti žmonių privatumą. Žmonės mažiau pasitiki sistemomis, kurios kelia grėsmę jų privatumui, informacijai ar gyvybėms. Mokant mašininio mokymosi modelius, mes pasikliaujame duomenimis, kad gautume geriausius rezultatus. Svarbu atsižvelgti į duomenų kilmę ir vientisumą. Pavyzdžiui, ar duomenys buvo pateikti vartotojo, ar yra viešai prieinami? Toliau dirbant su duomenimis svarbu kurti DI sistemas, galinčias apsaugoti konfidencialią informaciją ir atsilaikyti prieš atakas. Su DI plėtra vis svarbiau ir sudėtingiau apsaugoti privatumą bei svarbią asmeninę ir verslo informaciją. Privatumo ir duomenų saugumo klausimai yra itin svarbūs DI, nes prieiga prie duomenų yra būtina DI sistemoms tiksliai ir pagrįstai prognozuoti bei priimti sprendimus apie žmones.
-> [🎥 Spustelėkite čia, kad peržiūrėtumėte vaizdo įrašą: saugumas dirbtiniame intelekte](https://www.microsoft.com/videoplayer/embed/RE4voJF)
+> [🎥 Spustelėkite čia, jei norite žiūrėti vaizdo įrašą: saugumas DI](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- Pramonėje pasiekėme reikšmingų privatumo ir saugumo pažangų, kurias labai paskatino tokie reglamentai kaip GDPR (Bendrasis duomenų apsaugos reglamentas).
-- Tačiau dirbtinio intelekto sistemose turime pripažinti įtampą tarp poreikio turėti daugiau asmeninių duomenų, kad sistemos būtų asmeniškesnės ir efektyvesnės, ir privatumo.
-- Kaip ir su interneto atsiradimu, matome didelį saugumo problemų, susijusių su dirbtiniu intelektu, augimą.
-- Tuo pačiu metu matome, kaip dirbtinis intelektas naudojamas saugumui gerinti. Pavyzdžiui, dauguma modernių antivirusinių skenerių šiandien yra pagrįsti dirbtinio intelekto heuristika.
-- Turime užtikrinti, kad mūsų duomenų mokslų procesai harmoningai derėtų su naujausiomis privatumo ir saugumo praktikomis.
+- Kaip industrija, padarėme didelę pažangą privatumo ir saugumo srityje, ypač reguliuojant tokias sritis kaip GDPR (Bendrasis duomenų apsaugos reglamentas).
+- Tačiau DI sistemose turime pripažinti įtampą tarp poreikio turėti daugiau asmens duomenų, kad sistemos būtų personalizuotos ir efektyvios, ir tarp privatumo reikalavimų.
+- Kaip ir interneto sukūrimo laikais, matome stiprų saugumo problemų augimą, susijusį su DI.
+- Tuo pačiu metu DI naudojamas saugumui gerinti. Pavyzdžiui, dauguma šiuolaikinių antivirusinių programų šiandien naudoja DI heuristikas.
+- Turime užtikrinti, kad mūsų duomenų mokslas harmoningai dera su pačiomis naujausiomis privatumo ir saugumo praktikomis.
-### Skaidrumas
-Dirbtinio intelekto sistemos turėtų būti suprantamos. Svarbi skaidrumo dalis yra paaiškinti dirbtinio intelekto sistemų ir jų komponentų elgesį. Gerinant dirbtinio intelekto sistemų supratimą, reikia, kad suinteresuotosios šalys suprastų, kaip ir kodėl jos veikia, kad galėtų identifikuoti galimas veikimo problemas, saugumo ir privatumo rūpesčius, šališkumus, išskirtines praktikas ar netikėtus rezultatus. Taip pat tikime, kad tie, kurie naudoja dirbtinio intelekto sistemas, turėtų būti sąžiningi ir atviri apie tai, kada, kodėl ir kaip jie nusprendžia jas naudoti. Taip pat apie naudojamų sistemų apribojimus. Pavyzdžiui, jei bankas naudoja dirbtinio intelekto sistemą, kad palaikytų vartotojų paskolų sprendimus, svarbu išnagrinėti rezultatus ir suprasti, kurie duomenys daro įtaką sistemos rekomendacijoms. Vyriausybės pradeda reguliuoti dirbtinį intelektą įvairiose pramonės šakose, todėl duomenų mokslininkai ir organizacijos turi paaiškinti, ar dirbtinio intelekto sistema atitinka reglamentavimo reikalavimus, ypač kai yra nepageidaujamas rezultatas.
+### Skaidrumas
+DI sistemos turėtų būti suprantamos. Svarbi skaidrumo dalis yra paaiškinti DI sistemų ir jų komponentų elgseną. Geresnis DI sistemų supratimas reikalauja, kad suinteresuotosios šalys suprastų, kaip ir kodėl jos veikia, kad galėtų atpažinti galimas našumo problemas, saugumo ir privatumo rizikas, šališkumus, pašalinimo praktikas ar nepageidaujamus rezultatus. Taip pat manome, kad tie, kurie naudoja DI sistemas, turėtų būti sąžiningi ir atviri apie tai, kada, kodėl ir kaip juos diegia. Taip pat apie sistemų, kurias jie naudoja, apribojimus. Pavyzdžiui, jei bankas naudoja DI sistemą, remiantį jo paskolų vartotojams sprendimus, svarbu peržiūrėti rezultatus ir suprasti, kurie duomenys daro įtaką sistemos rekomendacijoms. Vyriausybės jau pradeda reguliuoti DI įvairiose pramonės šakose, todėl duomenų mokslininkai ir organizacijos privalo paaiškinti, ar DI sistema atitinka reguliavimo reikalavimus, ypač jei rezultatai nepageidaujami.
-> [🎥 Spustelėkite čia, kad peržiūrėtumėte vaizdo įrašą: skaidrumas dirbtiniame intelekte](https://www.microsoft.com/videoplayer/embed/RE4voJF)
+> [🎥 Spustelėkite čia, jei norite žiūrėti vaizdo įrašą: skaidrumas DI](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- Kadangi dirbtinio intelekto sistemos yra tokios sudėtingos, sunku suprasti, kaip jos veikia ir interpretuoti rezultatus.
-- Šis supratimo trūkumas veikia tai, kaip šios sistemos yra valdomos, operatyviai naudojamos ir dokumentuojamos.
-- Šis supratimo trūkumas dar svarbiau veikia sprendimus, priimamus remiantis šių sistemų rezultatais.
+- Kadangi DI sistemos yra labai sudėtingos, sunku suprasti, kaip jos veikia, ir interpretuoti rezultatus.
+- Šis supratimo trūkumas veikia tai, kaip šios sistemos valdomos, įdiegiamos ir dokumentuojamos.
+- Dar svarbiau, šis supratimo trūkumas įtakoja sprendimus, priimamus remiantis šiomis sistemomis gautais rezultatais.
### Atsakomybė
+
+Žmonės, kurie kuria ir diegia DI sistemas, turi būti atsakingi už tai, kaip jų sistemos veikia. Atsakomybės poreikis ypač svarbus jautrių technologijų, tokių kaip veido atpažinimas, naudojimo atvejais. Pastaruoju metu veido atpažinimo technologijos paklausa auga, ypač teisėsaugos institucijų, kurios mato jos potencialą, pavyzdžiui, ieškant dingusių vaikų. Tačiau šios technologijos galėtų būti panaudotos vyriausybės, keliant pavojų piliečių pagrindinėms laisvėms, pavyzdžiui, nuolat stebint konkrečius asmenis. Todėl duomenų mokslininkai ir organizacijos turi prisiimti atsakomybę už tai, kaip jų DI sistema veikia individų arba visuomenės atžvilgiu.
-Žmonės, kurie kuria ir diegia dirbtinio intelekto sistemas, turi būti atsakingi už tai, kaip jų sistemos veikia. Atsakomybės poreikis yra ypač svarbus jautrių technologijų, tokių kaip veido atpažinimas, naudojimo atveju. Pastaruoju metu didėja veido atpažinimo technologijos paklausa, ypač iš teisėsaugos organizacijų, kurios mato technologijos potencialą, pavyzdžiui, ieškant dingusių vaikų. Tačiau šios technologijos galėtų būti naudojamos vyriausybių, kad būtų pažeistos piliečių pagrindinės laisvės, pavyzdžiui, leidžiant nuolatinę tam tikrų asmenų stebėseną. Todėl duomenų mokslininkai ir organizacijos turi būti atsakingi už tai, kaip jų dirbtinio intelekto sistema veikia žmones ar visuomenę.
+[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft požiūris į atsakingą DI")
-[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft požiūris į atsakingą dirbtinį intelektą")
+> 🎥 Spustelėkite aukščiau esančią nuotrauką, jei norite žiūrėti vaizdo įrašą: Perspėjimai dėl masinio stebėjimo per veidų atpažinimą
-> 🎥 Spustelėkite aukščiau esančią nuotrauką, kad peržiūrėtumėte vaizdo įrašą: Įspėjimai apie masinę stebėseną per veido atpažinimą
-
-Galų gale vienas didžiausių mūsų kartos klausimų, kaip pirmosios kartos, kuri įveda dirbtinį intelektą į visuomenę, yra tai, kaip užtikrinti, kad kompiuteriai išliktų atsakingi žmonėms ir kaip užtikrinti, kad žmonės, kurie kuria kompiuterius, išliktų atsakingi visiems kitiems.
+Galutinis vienas didžiausių klausimų mūsų kartai, kaip pirmai kartai, kuri diegia DI visuomenei, yra kaip užtikrinti, kad kompiuteriai liktų atsakingi žmonėms ir kaip užtikrinti, kad kompiuterius kuriantys žmonės liktų atsakingi visuomenei.
## Poveikio vertinimas
-Prieš mokant mašininio mokymosi modelį, svarbu atlikti poveikio vertinimą, kad suprastumėte dirbtinio intelekto sistemos tikslą; kokia yra numatyta paskirtis; kur ji bus naudojama; ir kas sąveikaus su sistema. Tai naudinga vertintojams ar testuotojams, kad jie žinotų, kokius veiksnius reikia apsvarstyti identifikuojant galimas rizikas ir numatomas pasekmes.
+Prieš mokant mašininio mokymosi modelį svarbu atlikti poveikio vertinimą, norint suprasti DI sistemos paskirtį; kokia yra numatyta paskirtis; kur ji bus diegiama; ir kas naudosis sistema. Tai padeda peržiūrėtojams ar testuotojams žinoti, kokius veiksnius reikia atsižvelgti, identifikuojant galimas rizikas ir numatomąsias pasekmes.
+
+Atlikdami poveikio vertinimą atkreipkite dėmesį į šias sritis:
+
+* **Neigiamas poveikis individams.** Svarbu žinoti apie bet kokius apribojimus ar reikalavimus, neleistiną naudojimą ar žinomas ribotumus, kurie gali paveikti sistemos veikimą, kad sistema nebūtų naudojama kenksmingai žmonėms.
+* **Duomenų reikalavimai.** Suprasti, kaip ir kur sistema naudos duomenis, leidžia peržiūrėtojams įvertinti visus duomenų reikalavimus, kurių reikia laikytis (pvz., GDPR ar HIPAA duomenų taisykles). Taip pat svarbu patikrinti, ar duomenų šaltinis ir kiekis yra pakankami mokymui.
+* **Poveikio santrauka.** Surinkite galimų žalos atvejų sąrašą, kurie gali kilti naudojant sistemą. Per visą ML gyvavimo ciklą patikrinkite, ar šios problemos buvo sumažintos ar pašalintos.
+* **Taikytini tikslai** kiekvienam iš šešių pagrindinių principų. Įvertinkite, ar kiekvieno principo tikslai buvo pasiekti ir ar yra kokių nors spragų.
+
+
+## Atsakingas DI derinimas
+
+Kaip ir derinant programinę įrangą, DI sistemos derinimas yra būtinas procesas, skirtas nustatyti ir išspręsti sistemas veikimo problemas. Daugelis veiksnių gali lemti, kad modelis neveikia taip, kaip tikėtasi ar neatsakingai. Tradiciniai modelio veikimo rodikliai yra kiekybiniai agregatai, nepakankami analizuoti, kaip modelis pažeidžia atsakingo DI principus. Be to, mašininio mokymosi modelis yra juodoji dėžė, kurios sunku suprasti, kas lemia rezultatą ar paaiškinti klaidą. Vėliau šiame kurse išmoksime naudoti Atsakingo DI skydelį, padedantį derinti DI sistemas. Šis skydelis suteikia holistinį įrankį duomenų mokslininkams ir DI kūrėjams atlikti:
+
+* **Klaidų analizę.** Nustatyti modelio klaidų pasiskirstymą, galintį paveikti sistemos teisingumą ar patikimumą.
+* **Modelio apžvalgą.** Atrasti, kur modelio veikime yra skirtumų duomenų grupėse.
+* **Duomenų analizę.** Suprasti duomenų pasiskirstymą ir nustatyti galimą šališkumą duomenyse, galintį sukelti problemas su teisingumu, įtraukumu ir patikimumu.
+* **Modelio interpretuojamumą.** Suprasti, kas veikia ar įtakoja modelio prognozes. Tai padeda paaiškinti modelio elgseną, kas svarbu skaidrumui ir atsakomybei.
+
+
+## 🚀 Iššūkis
+
+Siekiant išvengti žalos, turėtume:
+
+- turėti įvairių fonų ir požiūrių tarp sistemų kūrėjų
+- investuoti į duomenų rinkinius, atspindinčius mūsų visuomenės įvairovę
+- kurti geresnius metodus visame mašininio mokymosi gyvavimo cikle, skirtus atsakingo DI aptikimui ir taisymui
+
+Pagalvokite apie realias situacijas, kai modelio nepatikimumas akivaizdus modelio kūrime ir naudojime. Ką dar turėtume apsvarstyti?
+
+## [Viktorinos testas po paskaitos](https://ff-quizzes.netlify.app/en/ml/)
-Štai sritys, į kurias reikia atkreipti dėmesį atliekant poveikio vertinimą:
+## Apžvalga ir savarankiškas mokymasis
+
-* **Neigiamas poveikis asmenims**. Svarbu žinoti apie bet kokius apribojimus
-Žiūrėkite šį seminarą, kad giliau suprastumėte temas:
+Šioje pamokoje jūs sužinojote pagrindus apie teisingumo ir neteisingumo sąvokas mašininiame mokyme.
+
+Peržiūrėkite šį seminarą, kad giliau suprastumėte temas:
-- Atsakingo dirbtinio intelekto siekimas: principų įgyvendinimas praktikoje, pristato Besmira Nushi, Mehrnoosh Sameki ir Amit Sharma
+- Atsakingo DI siekis: Principų taikymas praktikoje, pristato Besmira Nushi, Mehrnoosh Sameki ir Amit Sharma
-[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: Atvirojo kodo sistema atsakingam DI kurti")
+[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI")
-> 🎥 Spustelėkite paveikslėlį aukščiau, kad peržiūrėtumėte vaizdo įrašą: RAI Toolbox: Atvirojo kodo sistema atsakingam DI kurti, pristato Besmira Nushi, Mehrnoosh Sameki ir Amit Sharma
+> 🎥 Spauskite aukščiau esantį paveikslėlį vaizdo įrašui: RAI Toolbox: Atvirojo kodo įrankių rinkinys atsakingam DI kūrimui, pristato Besmira Nushi, Mehrnoosh Sameki ir Amit Sharma
-Taip pat skaitykite:
+Taip pat skaitykite:
-- Microsoft atsakingo DI išteklių centras: [Atsakingo DI ištekliai – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
+- „Microsoft“ RAI išteklių centras: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
-- Microsoft FATE tyrimų grupė: [FATE: Sąžiningumas, Atsakomybė, Skaidrumas ir Etika DI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
+- „Microsoft“ FATE tyrimų grupė: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
-RAI įrankių rinkinys:
+RAI įrankių rinkinys:
-- [Atsakingo DI įrankių rinkinio GitHub saugykla](https://github.com/microsoft/responsible-ai-toolbox)
+- [Responsible AI Toolbox GitHub saugykla](https://github.com/microsoft/responsible-ai-toolbox)
-Skaitykite apie Azure Machine Learning įrankius, skirtus užtikrinti sąžiningumą:
+Skaitykite apie Azure Machine Learning įrankius siekiant užtikrinti teisingumą:
-- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
+- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
## Užduotis
-[Susipažinkite su RAI įrankių rinkiniu](assignment.md)
+[Tyrinėkite RAI įrankių rinkinį](assignment.md)
---
-**Atsakomybės apribojimas**:
-Šis dokumentas buvo išverstas naudojant AI vertimo paslaugą [Co-op Translator](https://github.com/Azure/co-op-translator). Nors siekiame tikslumo, prašome atkreipti dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba turėtų būti laikomas autoritetingu šaltiniu. Kritinei informacijai rekomenduojama profesionali žmogaus vertimo paslauga. Mes neprisiimame atsakomybės už nesusipratimus ar klaidingus interpretavimus, atsiradusius dėl šio vertimo naudojimo.
\ No newline at end of file
+
+**Atsakomybės apribojimas**:
+Šis dokumentas buvo išverstas naudojant dirbtinio intelekto vertimo paslaugą [Co-op Translator](https://github.com/Azure/co-op-translator). Nors siekiame tikslumo, prašome atkreipti dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba laikomas autoritetingu šaltiniu. Svarbiai informacijai rekomenduojama naudoti profesionalų žmogiškąjį vertimą. Mes neatsakome už jokius nesusipratimus ar neteisingą interpretaciją, kilusią naudojantis šiuo vertimu.
+
\ No newline at end of file
diff --git a/translations/lt/2-Regression/1-Tools/README.md b/translations/lt/2-Regression/1-Tools/README.md
index aed909553..bbfef736a 100644
--- a/translations/lt/2-Regression/1-Tools/README.md
+++ b/translations/lt/2-Regression/1-Tools/README.md
@@ -1,120 +1,121 @@
# Pradėkite dirbti su Python ir Scikit-learn regresijos modeliams
-
+
-> Sketchnote sukūrė [Tomomi Imura](https://www.twitter.com/girlie_mac)
+> Sketchnote autorius [Tomomi Imura](https://www.twitter.com/girlie_mac)
-## [Klausimynas prieš paskaitą](https://ff-quizzes.netlify.app/en/ml/)
+## [Priešpaskaitinis testas](https://ff-quizzes.netlify.app/en/ml/)
-> ### [Ši pamoka taip pat prieinama R kalba!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
+> ### [Ši pamoka prieinama R kalba!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
## Įvadas
-Šiose keturiose pamokose sužinosite, kaip kurti regresijos modelius. Netrukus aptarsime, kam jie skirti. Tačiau prieš pradėdami, įsitikinkite, kad turite tinkamus įrankius, kad galėtumėte pradėti procesą!
+Šiose keturiose pamokose jūs sužinosite, kaip kurti regresijos modelius. Apie ką jie trumpai bus paaiškinta netrukus. Tačiau prieš imdamiesi darbo įsitikinkite, kad turite tinkamus įrankius procesui pradėti!
Šioje pamokoje išmoksite:
-- Konfigūruoti savo kompiuterį vietinėms mašininio mokymosi užduotims.
-- Dirbti su Jupyter užrašinėmis.
-- Naudoti Scikit-learn, įskaitant diegimą.
-- Išbandyti linijinę regresiją praktiniame užsiėmime.
+- Konfigūruoti savo kompiuterį vietiniams mašininio mokymosi uždaviniams.
+- Dirbti su Jupyter Notebooks.
+- Naudoti Scikit-learn įskaitant įdiegimą.
+- Tyrinėti linijinę regresiją per praktinę užduotį.
-## Diegimai ir konfigūracijos
+## Įdiegimai ir konfigūravimas
-[](https://youtu.be/-DfeD2k2Kj0 "ML pradedantiesiems - Paruoškite įrankius mašininio mokymosi modelių kūrimui")
+[](https://youtu.be/-DfeD2k2Kj0 "Pradedantiesiems ML - Paruoškite savo įrankius mašininio mokymosi modelių kūrimui")
-> 🎥 Spustelėkite aukščiau esančią nuotrauką, kad peržiūrėtumėte trumpą vaizdo įrašą apie kompiuterio konfigūravimą ML užduotims.
+> 🎥 Paspauskite paveikslėlį aukščiau trumpam vaizdo įrašui, kaip konfigūruoti kompiuterį ML darbams.
-1. **Įdiekite Python**. Įsitikinkite, kad jūsų kompiuteryje įdiegta [Python](https://www.python.org/downloads/). Python bus naudojamas daugeliui duomenų mokslo ir mašininio mokymosi užduočių. Dauguma kompiuterių sistemų jau turi Python diegimą. Taip pat yra naudingų [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott), kurie palengvina nustatymą kai kuriems vartotojams.
+1. **Įdiekite Python**. Įsitikinkite, kad jūsų kompiuteryje įdiegtas [Python](https://www.python.org/downloads/). Python bus naudojamas daugelyje duomenų mokslo ir mašininio mokymosi uždavinių. Dauguma kompiuterių sistemų jau turi Python diegimą. Taip pat yra naudingų [Python kodo paketų](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott), kurie kai kuriems naudotojams palengvina diegimo procesą.
- Kai kurios Python naudojimo situacijos reikalauja vienos programinės įrangos versijos, o kitos - kitos. Dėl šios priežasties naudinga dirbti [virtualioje aplinkoje](https://docs.python.org/3/library/venv.html).
+ Kai kuriems Python naudojimams reikalingos skirtingos programinės įrangos versijos, todėl naudinga dirbti [virtualioje aplinkoje](https://docs.python.org/3/library/venv.html).
-2. **Įdiekite Visual Studio Code**. Įsitikinkite, kad jūsų kompiuteryje įdiegta Visual Studio Code. Sekite šias instrukcijas, kad atliktumėte [Visual Studio Code diegimą](https://code.visualstudio.com/). Šiame kurse naudosite Python Visual Studio Code aplinkoje, todėl galbūt norėsite pasipraktikuoti, kaip [konfigūruoti Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) Python kūrimui.
+2. **Įdiekite Visual Studio Code**. Įsitikinkite, kad jūsų kompiuteryje įdiegtas Visual Studio Code. Vadovaukitės instrukcijomis, kaip [įdiegti Visual Studio Code](https://code.visualstudio.com/) baziniam diegimui. Šiame kurse naudosite Python Visual Studio Code aplinkoje, taigi verta susipažinti, kaip [konfigūruoti Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) Python kūrimui.
- > Susipažinkite su Python, atlikdami šią [mokymosi modulių kolekciją](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)
+ > Prisijaukinkite Python per šį [Learn modulių](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) rinkinį.
>
- > [](https://youtu.be/yyQM70vi7V8 "Nustatykite Python su Visual Studio Code")
+ > [](https://youtu.be/yyQM70vi7V8 "Python konfigūravimas Visual Studio Code")
>
- > 🎥 Spustelėkite aukščiau esančią nuotrauką, kad peržiūrėtumėte vaizdo įrašą apie Python naudojimą VS Code aplinkoje.
+ > 🎥 Paspauskite paveikslėlį aukščiau video peržiūrai: Python naudojimas VS Code aplinkoje.
-3. **Įdiekite Scikit-learn**, sekdami [šias instrukcijas](https://scikit-learn.org/stable/install.html). Kadangi jums reikia užtikrinti, jog naudojate Python 3, rekomenduojama naudoti virtualią aplinką. Atkreipkite dėmesį, jei diegiate šią biblioteką M1 Mac kompiuteryje, yra specialios instrukcijos aukščiau pateiktame puslapyje.
+3. **Įdiekite Scikit-learn**, vadovaudamiesi [šiais nurodymais](https://scikit-learn.org/stable/install.html). Kadangi reikia naudoti Python 3 versiją, rekomenduojama naudoti virtualią aplinką. Jei diegiate biblioteką M1 Mac kompiuteryje, puslapyje pateikti specialūs nurodymai.
-4. **Įdiekite Jupyter Notebook**. Jums reikės [įdiegti Jupyter paketą](https://pypi.org/project/jupyter/).
+1. **Įdiekite Jupyter Notebook**. Jums reikės [įdiegti Jupyter paketą](https://pypi.org/project/jupyter/).
## Jūsų ML kūrimo aplinka
-Jūs naudosite **užrašines** (notebooks), kad sukurtumėte Python kodą ir kurtumėte mašininio mokymosi modelius. Šio tipo failai yra įprastas įrankis duomenų mokslininkams, ir juos galima atpažinti pagal jų priesagą arba plėtinį `.ipynb`.
+Jūs naudosite **užrašų knygutes** (notebooks) kurti Python kodui ir mašininio mokymosi modeliams. Tokio tipo failai yra įprasta priemonė duomenų mokslininkams, juos galima atpažinti pagal plėtinį `.ipynb`.
-Užrašinės yra interaktyvi aplinka, leidžianti kūrėjui tiek rašyti kodą, tiek pridėti pastabas ir dokumentaciją aplink kodą, kas yra labai naudinga eksperimentiniams ar moksliniams projektams.
+Užrašų knygutės yra interaktyvi aplinka, leidžianti programuotojui tiek rašyti kodą, tiek pridėti pastabas ir dokumentaciją aplink kodą, kas yra ypač naudinga eksperimentiniams ar moksliniams projektams.
-[](https://youtu.be/7E-jC8FLA2E "ML pradedantiesiems - Nustatykite Jupyter užrašines regresijos modelių kūrimui")
+[](https://youtu.be/7E-jC8FLA2E "Pradedantiesiems ML - Paruoškite Jupyter Notebooks pradėti kurti regresijos modelius")
-> 🎥 Spustelėkite aukščiau esančią nuotrauką, kad peržiūrėtumėte trumpą vaizdo įrašą apie šį pratimą.
+> 🎥 Paspauskite paveikslėlį aukščiau trumpam vaizdo įrašui dirbant su šia užduotimi.
-### Pratimas - darbas su užrašine
+### Užduotis - dirbti su užrašų knygute
Šiame aplanke rasite failą _notebook.ipynb_.
-1. Atidarykite _notebook.ipynb_ Visual Studio Code aplinkoje.
+1. Atidarykite _notebook.ipynb_ Visual Studio Code programoje.
- Jupyter serveris bus paleistas su Python 3+. Užrašinėje rasite vietas, kurias galima `paleisti`, t. y. kodo dalis. Galite paleisti kodo bloką, pasirinkdami piktogramą, kuri atrodo kaip grojimo mygtukas.
+ Jūsų darbui bus paleistas Jupyter serveris su Python 3+. Užrašų knygutėje rasite vietas, kurias galima `vykdyti` – kodų blokai. Galite vykdyti kodo bloką paspausdami mygtuką, kuris atrodo kaip paleidimo mygtukas (play).
-2. Pasirinkite `md` piktogramą ir pridėkite šiek tiek markdown teksto, pvz., **# Sveiki atvykę į savo užrašinę**.
+1. Paspauskite `md` ikoną ir pridėkite šiek tiek markdown: **# Sveiki atvykę į savo užrašų knygutę**.
- Tada pridėkite šiek tiek Python kodo.
+ Toliau įrašykite šiek tiek Python kodo.
-3. Įveskite **print('hello notebook')** kodo bloke.
-4. Paspauskite rodyklę, kad paleistumėte kodą.
+1. Įveskite kodą **print('hello notebook')** kodo bloke.
+1. Paspauskite rodyklę, kad paleistumėte kodą.
- Turėtumėte pamatyti atspausdintą sakinį:
+ Turėtumėte pamatyti išspausdintą eilutę:
```output
hello notebook
```
-
+
-Galite įterpti savo kodą su komentarais, kad savarankiškai dokumentuotumėte užrašinę.
+Galite tarp kodo įterpti komentarus, kad dokumentuotumėte savo užrašų knygutę.
-✅ Pagalvokite minutę, kaip skiriasi žiniatinklio kūrėjo darbo aplinka nuo duomenų mokslininko aplinkos.
+✅ Pagalvokite minutei, kaip skiriasi interneto programuotojo darbo aplinka nuo duomenų mokslininko.
-## Darbas su Scikit-learn
+## Pradėkime naudoti Scikit-learn
-Dabar, kai Python yra nustatytas jūsų vietinėje aplinkoje ir jūs jaučiatės patogiai dirbdami su Jupyter užrašinėmis, pasistenkime taip pat susipažinti su Scikit-learn (tariama `sci`, kaip `science`). Scikit-learn siūlo [platus API](https://scikit-learn.org/stable/modules/classes.html#api-ref), kuris padeda atlikti ML užduotis.
+Dabar, kai Python jau sukonfigūruotas jūsų vietinėje aplinkoje ir esate patogiai susipažinęs su Jupyter užrašų knygutėmis, pažinkime Scikit-learn (tai tariama `sci` kaip `science`). Scikit-learn suteikia [išsamų API](https://scikit-learn.org/stable/modules/classes.html#api-ref), kuris padės atlikti ML užduotis.
-Pagal jų [svetainę](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn yra atviro kodo mašininio mokymosi biblioteka, palaikanti prižiūrimą ir neprižiūrimą mokymąsi. Ji taip pat siūlo įvairius įrankius modelių pritaikymui, duomenų apdorojimui, modelių pasirinkimui ir vertinimui bei daugybę kitų naudingų funkcijų."
+Pagal jų [svetainę](https://scikit-learn.org/stable/getting_started.html), „Scikit-learn yra atvirojo kodo mašininio mokymosi biblioteka, kuri palaiko prižiūrimą ir neprižiūrimą mokymąsi. Taip pat ji teikia įvairius įrankius modeliui pritaikyti, duomenims apdoroti, modeliui pasirinkti ir įvertinti bei daug kitų priemonių.“
-Šiame kurse naudosite Scikit-learn ir kitus įrankius, kad sukurtumėte mašininio mokymosi modelius, skirtus vadinamoms 'tradicinio mašininio mokymosi' užduotims. Mes sąmoningai vengėme neuroninių tinklų ir giluminio mokymosi, nes jie geriau aptariami mūsų būsimoje 'AI pradedantiesiems' mokymo programoje.
+Šiame kurse naudosite Scikit-learn ir kitus įrankius kurtumėte mašininio mokymosi modelius tradicinėms mašininio mokymosi užduotims atlikti. Sąmoningai vengėme neurologinių tinklų ir giluminio mokymosi temų, nes jos geriau aptariamos mūsų būsimoje „AI pradedantiesiems“ programoje.
-Scikit-learn leidžia lengvai kurti modelius ir vertinti jų naudojimą. Ji daugiausia orientuota į skaitinių duomenų naudojimą ir turi keletą paruoštų duomenų rinkinių, skirtų mokymuisi. Ji taip pat apima iš anksto sukurtus modelius, kuriuos studentai gali išbandyti. Pažvelkime į procesą, kaip įkelti iš anksto paruoštus duomenis ir naudoti įmontuotą vertintoją pirmam ML modeliui su Scikit-learn, naudojant pagrindinius duomenis.
+Scikit-learn leidžia lengvai kurti ir vertinti modelius. Ji daugiausia orientuota į skaitmeninius duomenis ir turi kelis paruoštus naudoti rinkinius, skirtus mokymuisi. Taip pat siūlo iš anksto sukurtus modelius studentų praktikai. Pirmiausia pažvelkime, kaip įkelti iš anksto paruoštus duomenis ir naudoti integruotą estimator modelį su Scikit-learn paprastiems duomenims.
-## Pratimas - jūsų pirmoji Scikit-learn užrašinė
+## Užduotis - jūsų pirmoji Scikit-learn užrašų knygutė
-> Šis mokymas buvo įkvėptas [linijinės regresijos pavyzdžio](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) Scikit-learn svetainėje.
+> Ši pamoka įkvėpta [linijinės regresijos pavyzdžio](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) Scikit-learn svetainėje.
-[](https://youtu.be/2xkXL5EUpS0 "ML pradedantiesiems - Jūsų pirmasis linijinės regresijos projektas Python kalba")
-> 🎥 Spustelėkite aukščiau esančią nuotrauką, kad peržiūrėtumėte trumpą vaizdo įrašą apie šį pratimą.
+[](https://youtu.be/2xkXL5EUpS0 "Pradedantiesiems ML - Jūsų pirmasis linijinės regresijos projektas Python kalba")
-Failo _notebook.ipynb_ susijusio su šia pamoka, ištrinkite visas ląsteles paspausdami 'šiukšliadėžės' piktogramą.
+> 🎥 Paspauskite paveikslėlį aukščiau trumpam video, kaip atlikti šią užduotį.
-Šiame skyriuje dirbsite su nedideliu duomenų rinkiniu apie diabetą, kuris yra įtrauktas į Scikit-learn mokymosi tikslais. Įsivaizduokite, kad norite išbandyti gydymą diabetu sergantiems pacientams. Mašininio mokymosi modeliai gali padėti nustatyti, kurie pacientai geriau reaguotų į gydymą, remiantis kintamųjų deriniais. Net labai paprastas regresijos modelis, vizualizuotas, gali parodyti informaciją apie kintamuosius, kurie padėtų organizuoti teorinius klinikinius tyrimus.
+Failo _notebook.ipynb_ šioje pamokoje langelyje išvalykite visas ląsteles paspausdami šiukšliadėžės piktogramą.
-✅ Yra daug regresijos metodų tipų, ir kurį pasirinkti priklauso nuo klausimo, į kurį norite atsakyti. Jei norite prognozuoti tikėtiną žmogaus ūgį pagal jo amžių, naudotumėte linijinę regresiją, nes ieškote **skaitinės vertės**. Jei jus domina, ar tam tikra virtuvė turėtų būti laikoma veganiška, ieškote **kategorijos priskyrimo**, todėl naudotumėte logistinę regresiją. Vėliau sužinosite daugiau apie logistinę regresiją. Pagalvokite apie keletą klausimų, kuriuos galite užduoti duomenims, ir kuris iš šių metodų būtų tinkamesnis.
+Šioje dalyje naudosite nedidelį diabetui skirtų duomenų rinkinį, kuris įtrauktas į Scikit-learn mokymosi reikmėms. Įsivaizduokite, kad norite patikrinti gydymo poveikį diabetikams. Mašininio mokymosi modeliai galėtų padėti nustatyti, kurie pacientai geriau reaguos į gydymą, remiantis įvairių kintamųjų deriniais. Net ir paprastas regresijos modelis, vizualizuotas, gali parodyti informaciją apie kintamuosius, kurie padėtų organizuoti teorinius klinikinius tyrimus.
-Pradėkime šią užduotį.
+✅ Yra daug regresijos metodų, o kurį pasirinkti priklauso nuo ieškomo atsakymo. Jei norite numatyti galimą žmogaus ūgį pagal amžių, naudotumėte linijinę regresiją, nes ieškote **skaitmeninės reikšmės**. Jei domina, ar tam tikros virtuvės tipas yra veganiškas ar ne, ieškote **kategorijos priskyrimo**, tad naudotumėte logistinio regresijos metodą. Apie logistinę regresiją sužinosite vėliau. Pagalvokite apie klausimus, kuriuos galima užduoti duomenims, ir kuris metodas būtų tinkamesnis.
-### Bibliotekų importavimas
+Pradėkime šį darbą.
-Šiai užduočiai importuosime keletą bibliotekų:
+### Importuokite bibliotekas
-- **matplotlib**. Tai naudinga [grafikų kūrimo priemonė](https://matplotlib.org/), kurią naudosime linijiniam grafikui kurti.
-- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) yra naudinga biblioteka skaitinių duomenų tvarkymui Python kalboje.
+Šiai užduočiai importuosime kelias bibliotekas:
+
+- **matplotlib**. Tai naudingas [grafikų braižymo įrankis](https://matplotlib.org/), kurį naudosime linijinės diagramos braižymui.
+- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) yra naudinga biblioteka skaitmeninių duomenų tvarkymui Python kalboje.
- **sklearn**. Tai [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) biblioteka.
-Importuokite keletą bibliotekų, kurios padės atlikti užduotis.
+Importuokite šias bibliotekas, kad padėtų jums atlikti užduotis.
-1. Pridėkite importus, įvesdami šį kodą:
+1. Įrašykite šį importo kodą:
```python
import matplotlib.pyplot as plt
@@ -122,26 +123,26 @@ Importuokite keletą bibliotekų, kurios padės atlikti užduotis.
from sklearn import datasets, linear_model, model_selection
```
- Aukščiau importuojate `matplotlib`, `numpy` ir importuojate `datasets`, `linear_model` bei `model_selection` iš `sklearn`. `model_selection` naudojamas duomenų skirstymui į mokymo ir testavimo rinkinius.
+ Viršuje jūs importuojate `matplotlib`, `numpy` ir iš `sklearn` importuojate `datasets`, `linear_model` ir `model_selection`. `model_selection` naudojama duomenims skirstyti į treniruočių ir testavimo rinkinius.
### Diabeto duomenų rinkinys
-Įmontuotas [diabeto duomenų rinkinys](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) apima 442 duomenų pavyzdžius apie diabetą, su 10 kintamųjų, kai kurie iš jų yra:
+Integruotas [diabeto duomenų rinkinys](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) apima 442 mėginius apie diabetą su 10 požymių, iš kurių kai kurie yra:
-- amžius: amžius metais
-- kūno masės indeksas (BMI)
-- vidutinis kraujo spaudimas
-- s1 tc: T-ląstelės (tam tikros rūšies baltieji kraujo kūneliai)
+- amžius: metai
+- KMI: kūno masės indeksas
+- kraujospūdis: vidutinis kraujo spaudimas
+- s1 tc: T-ląstelės (tam tikros baltųjų kraujo ląstelių rūšys)
-✅ Šis duomenų rinkinys apima 'lyties' sąvoką kaip svarbų kintamąjį diabetui tirti. Daugelis medicininių duomenų rinkinių apima tokio tipo dvejetainę klasifikaciją. Pagalvokite, kaip tokios kategorijos gali išskirti tam tikras populiacijos dalis iš gydymo.
+✅ Šiame rinkinyje požymis „lytis“ yra svarbus diabetui tyrinėti. Daugelis medicininių duomenų rinkinių apima tokias dvejetaines klasifikacijas. Pagalvokite, kaip tokios kategorizacijos gali išskirti tam tikras gyventojų grupes iš gydymo galimybių.
Dabar įkelkite X ir y duomenis.
-> 🎓 Prisiminkite, tai yra prižiūrimas mokymasis, ir mums reikia pavadinto 'y' tikslo.
+> 🎓 Prisiminkite, kad tai yra prižiūrimas mokymasis, ir mums reikia pavadinto tikslo „y“.
-Naujoje kodo ląstelėje įkelkite diabeto duomenų rinkinį, naudodami `load_diabetes()`. Įvestis `return_X_y=True` nurodo, kad `X` bus duomenų matrica, o `y` bus regresijos tikslas.
+Naujoje kodo ląstelėje įkelkite diabeto duomenų rinkinį kviesdami `load_diabetes()`. Parametras `return_X_y=True` reiškia, kad `X` bus duomenų matrica, o `y` – regresijos tikslas.
-1. Pridėkite keletą spausdinimo komandų, kad parodytumėte duomenų matricos formą ir jos pirmąjį elementą:
+1. Įtraukite spausdinimo komandas, kad parodytumėte duomenų matricos formą ir pirmą elementą:
```python
X, y = datasets.load_diabetes(return_X_y=True)
@@ -149,9 +150,9 @@ Naujoje kodo ląstelėje įkelkite diabeto duomenų rinkinį, naudodami `load_di
print(X[0])
```
- Tai, ką gaunate kaip atsakymą, yra tuple. Jūs priskiriate pirmąsias dvi tuple reikšmes `X` ir `y` atitinkamai. Sužinokite daugiau [apie tuple](https://wikipedia.org/wiki/Tuple).
+ Gaunate tuple (kelių reikšmių krepšelį). Čia pirmos dvi tuple reikšmės priskiriamos atitinkamai `X` ir `y`. Daugiau apie [tuple](https://wikipedia.org/wiki/Tuple) sužinosite čia.
- Galite matyti, kad šie duomenys turi 442 elementus, suformuotus į 10 elementų masyvus:
+ Matyti, kad duomenų rinke yra 442 elementai, kiekvienas sudarytas iš 10 elementų masyvo:
```text
(442, 10)
@@ -159,62 +160,75 @@ Naujoje kodo ląstelėje įkelkite diabeto duomenų rinkinį, naudodami `load_di
-0.04340085 -0.00259226 0.01990842 -0.01764613]
```
- ✅ Pagalvokite apie ryšį tarp duomenų ir regresijos tikslo. Linijinė regresija prognozuoja ryšius tarp kintamojo X ir tikslo kintamojo y. Ar galite rasti [tikslą](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) diabeto duomenų rinkinyje dokumentacijoje? Ką šis duomenų rinkinys demonstruoja, atsižvelgiant į tikslą?
+ ✅ Pagalvokite apie ryšį tarp duomenų ir regresijos tikslo. Linijinė regresija prognozuoja ryšius tarp požymio X ir tikslo y. Ar rasite šiame dokumente [pasiekiamą tikslą](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) diabeto duomenų rinkiniui? Ką šis rinkinys demonstruoja su tuo tikslu?
-2. Tada pasirinkite dalį šio duomenų rinkinio, kurią norite pavaizduoti, pasirinkdami 3-ąją duomenų rinkinio stulpelį. Tai galite padaryti naudodami `:` operatorių, kad pasirinktumėte visas eilutes, ir tada pasirinkdami 3-ąjį stulpelį naudodami indeksą (2). Taip pat galite pertvarkyti duomenis į 2D masyvą - kaip reikalaujama grafiko kūrimui - naudodami `reshape(n_rows, n_columns)`. Jei vienas iš parametrų yra -1, atitinkama dimensija apskaičiuojama automatiškai.
+2. Toliau pasirinkite dalį duomenų piešimui – 3-ią stulpelį. Tai atliekama naudojant `:` visiems eilutėms ir stulpelio indeksą (2). Duomenis taip pat galima pertvarkyti į dvimatį masyvą, reikalingą braižymui, panaudojant `reshape(n_rows, n_columns)`. Jei vienas parametras yra -1, atitinkama dimensija apskaičiuojama automatiškai.
```python
X = X[:, 2]
X = X.reshape((-1,1))
```
- ✅ Bet kuriuo metu spausdinkite duomenis, kad patikrintumėte jų formą.
+ ✅ Bet kada spausdinkite duomenis, kad patikrintumėte jų formą.
-3. Dabar, kai turite duomenis, paruoštus grafiko kūrimui, galite patikrinti, ar mašina gali padėti nustatyti logišką skirstymą tarp skaičių šiame duomenų rinkinyje. Norėdami tai padaryti, turite padalyti tiek duomenis (X), tiek tikslą (y) į testavimo ir mokymo rinkinius. Scikit-learn turi paprastą būdą tai padaryti; galite padalyti savo testavimo duomenis tam tikru tašku.
+3. Kai duomenys paruošti piešimui, pažiūrėkime, ar mašina gali padėti nustatyti logišką ribą tarp skaičių šiame rinkinyje. Tam turite padalinti ir duomenis (X), ir tikslą (y) į testavimo ir treniruočių rinkinius. Scikit-learn leidžia paprastai tai atlikti; galite nurodyti, kur skirti testavimo duomenis.
```python
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33)
```
-4. Dabar esate pasiruošę treniruoti savo modelį! Įkelkite linijinės regresijos modelį ir treniruokite jį su savo X ir y mokymo rinkiniais, naudodami `model.fit()`:
+4. Dabar galite apmokyti savo modelį! Įkelkite linijinės regresijos modelį ir apmokykite naudodami `X` ir `y` treniruočių rinkinius per `model.fit()`:
```python
model = linear_model.LinearRegression()
model.fit(X_train, y_train)
```
- ✅ `model.fit()` yra funkcija, kurią pamatysite daugelyje ML bibliotekų, tokių kaip TensorFlow.
+ ✅ `model.fit()` yra funkcija, kurią rasite daugelyje ML bibliotekų, pavyzdžiui, TensorFlow.
-5. Tada sukurkite prognozę, naudodami testavimo duomenis, naudodami funkciją `predict()`. Tai bus naudojama linijai nubrėžti tarp duomenų grupių.
+5. Tuomet, sukūrę prognozę testavimo duomenims, naudokite funkciją `predict()`. Ji bus naudojama brėžti linijai tarp duomenų grupių.
```python
y_pred = model.predict(X_test)
```
-6. Dabar laikas parodyti duomenis grafike. Matplotlib yra labai naudinga priemonė šiai užduočiai. Sukurkite sklaidos grafiką visiems X ir y testavimo duomenims, o prognozę naudokite linijai nubrėžti tinkamiausioje vietoje tarp modelio duomenų grupių.
+6. Dabar laikas parodyti duomenis diagramoje. Matplotlib yra labai naudingas įrankis šiam tikslui. Sukurkite taškų diagramą (scatterplot) su visais X ir y testiniais duomenimis ir pagal prognozę nubrėžkite liniją tinkamiausioje vietoje tarp modelio duomenų grupių.
+
+ ```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()
+ ```
+
+ 
-✅ Pagalvokite, kas čia vyksta. Tiesi linija eina per daugybę mažų duomenų taškų, bet ką ji iš tikrųjų daro? Ar galite pastebėti, kaip ši linija gali padėti numatyti, kur naujas, dar nematytas duomenų taškas turėtų atsidurti santykyje su grafiko y ašimi? Pabandykite žodžiais apibūdinti praktinį šio modelio pritaikymą.
+ ✅ Šiek tiek pagalvokite, kas čia vyksta. Tiesė eina per daug mažų duomenų taškų, bet ką ji tiksliai daro? Ar galite matyti, kaip turėtumėte naudoti šią liniją, kad nuspėtumėte, kur naujas, nematytas duomenų taškas turėtų tilpti susiejant su grafiko y ašimi? Pabandykite žodžiais apibūdinti šio modelio praktinį naudojimą.
-Sveikiname, jūs sukūrėte savo pirmąjį linijinį regresijos modelį, atlikote prognozę su juo ir pavaizdavote ją grafike!
+Sveikiname, jūs sukūrėte savo pirmąjį tiesinės regresijos modelį, padarėte su juo prognozę ir pavaizdavote ją grafike!
---
## 🚀Iššūkis
-Pavaizduokite kitą šio duomenų rinkinio kintamąjį. Užuomina: redaguokite šią eilutę: `X = X[:,2]`. Atsižvelgiant į šio duomenų rinkinio tikslą, ką galite sužinoti apie diabeto progresavimą kaip ligą?
-## [Po paskaitos testas](https://ff-quizzes.netlify.app/en/ml/)
+Nubraižykite kitą kintamąjį iš šio duomenų rinkinio. Užuomina: redaguokite šią eilutę: `X = X[:,2]`. Atsižvelgiant į šio duomenų rinkinio tikslą, ką galite sužinoti apie diabeto ligos progresavimą?
+## [Paskaitos po testas](https://ff-quizzes.netlify.app/en/ml/)
-## Apžvalga ir savarankiškas mokymasis
+## Peržiūra ir savarankiškas mokymasis
-Šioje pamokoje dirbote su paprasta linijine regresija, o ne su univariante ar daugiavariante regresija. Pasidomėkite skirtumais tarp šių metodų arba peržiūrėkite [šį vaizdo įrašą](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef).
+Šiame vadove dirbote su paprasta tiesine regresija, o ne vienkryptia ar daugiakryptia tiesine regresija. Truputį paskaitykite apie skirtumus tarp šių metodų arba pažiūrėkite [šį vaizdo įrašą](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef)
-Plačiau pasiskaitykite apie regresijos sąvoką ir pagalvokite, kokius klausimus galima atsakyti naudojant šią techniką. Norėdami giliau suprasti, peržiūrėkite šį [vadovą](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott).
+Skaitykite daugiau apie regresijos sąvoką ir pagalvokite, kokius klausimus galima atsakyti naudojant šią techniką. Pasirinkite šį [vadovą](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott), kad gilintumėte supratimą.
-## Užduotis
+## Namų darbai
[Kitas duomenų rinkinys](assignment.md)
---
-**Atsakomybės apribojimas**:
-Šis dokumentas buvo išverstas naudojant AI vertimo paslaugą [Co-op Translator](https://github.com/Azure/co-op-translator). Nors siekiame tikslumo, prašome atkreipti dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba turėtų būti laikomas autoritetingu šaltiniu. Kritinei informacijai rekomenduojama profesionali žmogaus vertimo paslauga. Mes neprisiimame atsakomybės už nesusipratimus ar klaidingus interpretavimus, atsiradusius dėl šio vertimo naudojimo.
\ No newline at end of file
+
+**Atsakomybės apribojimas**:
+Šis dokumentas buvo išverstas naudojant dirbtinio intelekto vertimo paslaugą [Co-op Translator](https://github.com/Azure/co-op-translator). Nors siekiame tikslumo, prašome atkreipti dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba laikomas autoritetingu šaltiniu. Svarbiai informacijai rekomenduojama naudoti profesionalų žmogiškąjį vertimą. Mes neatsakome už jokius nesusipratimus ar neteisingą interpretaciją, kilusią naudojantis šiuo vertimu.
+
\ No newline at end of file
diff --git a/translations/lt/2-Regression/2-Data/README.md b/translations/lt/2-Regression/2-Data/README.md
index 30b3839b6..e106a0807 100644
--- a/translations/lt/2-Regression/2-Data/README.md
+++ b/translations/lt/2-Regression/2-Data/README.md
@@ -1,62 +1,62 @@
# Sukurkite regresijos modelį naudodami Scikit-learn: paruoškite ir vizualizuokite duomenis
-
+
-Infografiką sukūrė [Dasani Madipalli](https://twitter.com/dasani_decoded)
+Infografika parengė [Dasani Madipalli](https://twitter.com/dasani_decoded)
-## [Prieš paskaitos testas](https://ff-quizzes.netlify.app/en/ml/)
+## [Priešpaskaitos testas](https://ff-quizzes.netlify.app/en/ml/)
-> ### [Ši pamoka pasiekiama R kalba!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
+> ### [Šios pamokos versija yra R kalba!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
## Įvadas
-Dabar, kai turite visus įrankius, reikalingus pradėti kurti mašininio mokymosi modelius su Scikit-learn, esate pasiruošę pradėti užduoti klausimus savo duomenims. Dirbant su duomenimis ir taikant ML sprendimus, labai svarbu mokėti užduoti tinkamus klausimus, kad galėtumėte maksimaliai išnaudoti savo duomenų potencialą.
+Dabar, kai turite įrankius, reikalingus pradėti kurti mašininio mokymosi modelius su Scikit-learn, esate pasirengę pradėti kelti klausimus savo duomenims. Dirbant su duomenimis ir taikant ML sprendimus, labai svarbu suprasti, kaip užduoti tinkamą klausimą, kad tinkamai atskleistumėte savo duomenų rinkinio potencialą.
Šioje pamokoje sužinosite:
-- Kaip paruošti duomenis modelio kūrimui.
+- Kaip paruošti duomenis modeliui kurti.
- Kaip naudoti Matplotlib duomenų vizualizacijai.
+- Kaip naudoti Seaborn išraiškingesnei duomenų vizualizacijai.
-## Tinkamų klausimų uždavimas savo duomenims
+## Kaip tinkamai užduoti klausimą savo duomenims
-Klausimas, į kurį norite gauti atsakymą, nulems, kokio tipo ML algoritmus naudosite. Atsakymo kokybė labai priklausys nuo jūsų duomenų pobūdžio.
+Klausimas, į kurį norite gauti atsakymą, nulems, kokias ML algoritmų rūšis naudosite. O atsakymo kokybė labai priklausys nuo jūsų duomenų pobūdžio.
-Pažvelkite į [duomenis](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv), pateiktus šiai pamokai. Šį .csv failą galite atidaryti VS Code. Greitai peržvelgus matyti, kad yra tuščių langelių, mišrių tekstinių ir skaitinių duomenų. Taip pat yra keista stulpelis „Package“, kuriame duomenys yra maišyti tarp „sacks“, „bins“ ir kitų reikšmių. Duomenys, tiesą sakant, yra gana netvarkingi.
+Peržiūrėkite [duomenis](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv), pateiktus šiai pamokai. Galite atidaryti šį .csv failą VS Code. Greitas įvertinimas iškart rodo, kad yra tuščių reikšmių ir mišinių tarp tekstinių ir skaitinių duomenų. Taip pat yra keistas stulpelis „Package“, kuriame duomenys yra mišrūs: 'sacks', 'bins' ir kitos reikšmės. Iš tiesų šie duomenys yra šiek tiek chaotiški.
-[](https://youtu.be/5qGjczWTrDQ "ML pradedantiesiems - Kaip analizuoti ir valyti duomenų rinkinį")
+[](https://youtu.be/5qGjczWTrDQ "ML pradedantiesiems – kaip analizuoti ir valyti duomenų rinkinį")
-> 🎥 Spustelėkite aukščiau esančią nuotrauką, kad peržiūrėtumėte trumpą vaizdo įrašą apie duomenų paruošimą šiai pamokai.
+> 🎥 Spustelėkite aukščiau esantį paveikslėlį, kad peržiūrėtumėte trumpą vaizdo įrašą apie šios pamokos duomenų paruošimą.
-Iš tiesų, retai pasitaiko, kad duomenų rinkinys būtų visiškai paruoštas ML modelio kūrimui iš karto. Šioje pamokoje sužinosite, kaip paruošti neapdorotą duomenų rinkinį naudojant standartines Python bibliotekas. Taip pat išmoksite įvairių duomenų vizualizavimo technikų.
+Iš tiesų, nėra dažna, kad gautumėte duomenų rinkinį, kuris būtų visiškai paruoštas naudojimui ir mašininio mokymosi modeliui sukurti. Šioje pamokoje išmoksite, kaip paruošti žalius duomenis naudojant standartines Python bibliotekas. Taip pat išmoksite įvairias duomenų vizualizavimo technikas.
## Atvejo analizė: „moliūgų rinka“
-Šiame aplanke rasite .csv failą šakniniame `data` aplanke, pavadintą [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv), kuriame yra 1757 eilutės duomenų apie moliūgų rinką, suskirstytų pagal miestus. Tai yra neapdoroti duomenys, gauti iš [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice), kuriuos platina Jungtinių Valstijų Žemės ūkio departamentas.
+Šiame aplanke rasite .csv failą pagrindiniame `data` aplanke, vadinamą [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv), kuriame yra 1757 duomenų eilutės apie moliūgų rinką, suskirstytos pagal miestus. Tai žali duomenys, išgauti iš [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice), kuriuos platina Jungtinių Valstijų Žemės ūkio departamentas.
### Duomenų paruošimas
-Šie duomenys yra viešojoje erdvėje. Juos galima atsisiųsti iš USDA svetainės atskirais failais pagal miestus. Kad išvengtume per daug atskirų failų, sujungėme visus miestų duomenis į vieną skaičiuoklę, taigi jau šiek tiek _paruošėme_ duomenis. Dabar pažvelkime į duomenis atidžiau.
+Šie duomenys yra viešojo naudojimo. Juos galima atsisiųsti daugybėje atskirų failų, po vieną už miestą, iš USDA svetainės. Kad nesusidarytų per daug atskirų failų, mes sujungėme visų miestų duomenis į vieną lentelę, taigi šiek tiek jau _paruošėme_ duomenis. Dabar pažvelkime į duomenis iš arčiau.
-### Moliūgų duomenys - pirminės išvados
+### Moliūgų duomenys – pirminės išvados
-Ką pastebite apie šiuos duomenis? Jau matėte, kad yra mišrių tekstinių, skaitinių, tuščių ir keistų reikšmių, kurias reikia suprasti.
+Ką pastebite apie šiuos duomenis? Jau matėte, kad yra mišinių – tekstų, skaičių, trūkstamų reikšmių ir keistų duomenų, kuriuos reikia suprasti.
-Kokį klausimą galite užduoti šiems duomenims, naudodami regresijos techniką? Pavyzdžiui: „Prognozuoti moliūgo kainą pardavimui tam tikrą mėnesį“. Pažvelgus į duomenis dar kartą, reikia atlikti tam tikrus pakeitimus, kad sukurtumėte tinkamą duomenų struktūrą šiai užduočiai.
+Kokį klausimą galite užduoti šiems duomenims, naudodami regresijos techniką? Galbūt „Numatykite moliūgo kainą pardavimo mėnesį“. Vėl peržiūrint duomenis, reikia atlikti tam tikrus pakeitimus, kad sukurtumėte tinkamą duomenų struktūrą šiai užduočiai.
+## Pratimai – analizuokite moliūgų duomenis
-## Užduotis - analizuoti moliūgų duomenis
+Naudosime [Pandas](https://pandas.pydata.org/), (pavadinimas reiškia `Python Data Analysis`) – labai naudingą įrankį duomenų formavimui, kad analizuosime ir paruoštume šiuos moliūgų duomenis.
-Naudokime [Pandas](https://pandas.pydata.org/) (pavadinimas reiškia `Python Data Analysis`), labai naudingą įrankį duomenų formavimui, kad analizuotume ir paruoštume šiuos moliūgų duomenis.
+### Pirmiausia – patikrinkite, ar nėra trūkstamų datų
-### Pirma, patikrinkite, ar nėra trūkstamų datų
-
-Pirmiausia turėsite patikrinti, ar nėra trūkstamų datų:
+Pirma reikės patikrinti, ar nėra trūkstamų datų:
1. Konvertuokite datas į mėnesio formatą (tai yra JAV datos, todėl formatas yra `MM/DD/YYYY`).
2. Ištraukite mėnesį į naują stulpelį.
-Atidarykite _notebook.ipynb_ failą Visual Studio Code ir importuokite skaičiuoklę į naują Pandas dataframe.
+Atidarykite _notebook.ipynb_ failą Visual Studio Code ir importuokite lentelę į naują Pandas dataframe objektą.
-1. Naudokite `head()` funkciją, kad peržiūrėtumėte pirmas penkias eilutes.
+1. Naudokite funkciją `head()`, kad peržiūrėtumėte pirmas penkias eilutes.
```python
import pandas as pd
@@ -64,28 +64,28 @@ Atidarykite _notebook.ipynb_ failą Visual Studio Code ir importuokite skaičiuo
pumpkins.head()
```
- ✅ Kokią funkciją naudotumėte, kad peržiūrėtumėte paskutines penkias eilutes?
+ ✅ Kurią funkciją naudotumėte, norėdami peržiūrėti paskutines penkias eilutes?
-1. Patikrinkite, ar dabartiniame dataframe yra trūkstamų duomenų:
+1. Patikrinkite, ar dabartiniame dataframe nėra trūkstamų duomenų:
```python
pumpkins.isnull().sum()
```
- Yra trūkstamų duomenų, tačiau galbūt tai nesvarbu šiai užduočiai.
+ Yra trūkstamų duomenų, bet galbūt tai neturės didelės reikšmės atliekant užduotį.
-1. Kad jūsų dataframe būtų lengviau dirbti, pasirinkite tik reikalingus stulpelius, naudodami `loc` funkciją, kuri iš originalaus dataframe ištraukia eilutes (pateiktas kaip pirmas parametras) ir stulpelius (pateiktus kaip antras parametras). Ženklas `:` žemiau reiškia „visos eilutės“.
+1. Kad būtų patogiau dirbti su dataframe, pasirinkite tik reikalingus stulpelius naudodami `loc` funkciją, kuri iš originalaus dataframe išrenka grupę eilučių (pirmasis parametras) ir stulpelių (antrasis parametras). Žymėjimas `:` žemiau reiškia „visas eilutes“.
```python
columns_to_select = ['Package', 'Low Price', 'High Price', 'Date']
pumpkins = pumpkins.loc[:, columns_to_select]
```
-### Antra, nustatykite vidutinę moliūgo kainą
+### Antra – nustatykite vidutinę moliūgo kainą
-Pagalvokite, kaip nustatyti vidutinę moliūgo kainą tam tikrą mėnesį. Kokius stulpelius pasirinktumėte šiai užduočiai? Užuomina: jums reikės 3 stulpelių.
+Pagalvokite, kaip nustatyti vidutinę moliūgo kainą tam tikram mėnesiui. Kokius stulpelius pasirinktumėte šiai užduočiai? Patarimas: reikės 3 stulpelių.
-Sprendimas: paimkite vidurkį iš `Low Price` ir `High Price` stulpelių, kad užpildytumėte naują Price stulpelį, ir konvertuokite Date stulpelį, kad būtų rodomas tik mėnuo. Laimei, pagal aukščiau atliktą patikrinimą, nėra trūkstamų duomenų datoms ar kainoms.
+Sprendimas: imkite vidurkį iš `Low Price` ir `High Price` stulpelių, kad užpildytumėte naują stulpelį Price, o Date stulpelį konvertuokite taip, kad jis rodytų tik mėnesį. Laimei, pagal aukščiau atliktą patikrą, trūkstamų duomenų apie datas ir kainas nėra.
1. Norėdami apskaičiuoti vidurkį, pridėkite šį kodą:
@@ -96,7 +96,7 @@ Sprendimas: paimkite vidurkį iš `Low Price` ir `High Price` stulpelių, kad u
```
- ✅ Galite laisvai spausdinti bet kokius duomenis, kuriuos norite patikrinti, naudodami `print(month)`.
+ ✅ Drąsiai spausdinkite bet kokius duomenis su `print(month)`, jei norite patikrinti.
2. Dabar nukopijuokite konvertuotus duomenis į naują Pandas dataframe:
@@ -104,29 +104,29 @@ Sprendimas: paimkite vidurkį iš `Low Price` ir `High Price` stulpelių, kad u
new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price})
```
- Spausdindami savo dataframe pamatysite švarią, tvarkingą duomenų rinkinį, kuriame galėsite kurti naują regresijos modelį.
+ Spausdinant dataframe pamatysite švarų, tvarkingą duomenų rinkinį, ant kurio galėsite kurti naują regresijos modelį.
-### Bet palaukite! Čia kažkas keisto
+### Bet palaukite! Čia yra keletas keistenybių
-Jei pažvelgsite į `Package` stulpelį, moliūgai parduodami įvairiomis konfigūracijomis. Kai kurie parduodami „1 1/9 bushel“ matavimo vienetais, kai kurie „1/2 bushel“ matavimo vienetais, kai kurie pagal moliūgą, kai kurie pagal svorį, o kai kurie didelėse dėžėse su skirtingais pločiais.
+Pažvelgus į `Package` stulpelį matyti, kad moliūgai parduodami įvairiomis formomis. Kai kurie parduodami '1 1/9 bushel' matmenimis, kai kurie – '1/2 bushel', kai kurie – už vienetą, kai kurie – už svarą, o kai kurie – didelėse dėžėse, kurių plotis skirtingas.
-> Moliūgus atrodo labai sunku sverti nuosekliai
+> Moliūgų svoris atrodo sunkiai nuosekliai matuojamas
-Gilindamiesi į originalius duomenis, pastebėsite, kad viskas, kas turi `Unit of Sale` reikšmę „EACH“ arba „PER BIN“, taip pat turi `Package` tipą pagal colį, biną arba „each“. Moliūgus atrodo labai sunku sverti nuosekliai, todėl filtruokime juos, pasirinkdami tik tuos moliūgus, kurių `Package` stulpelyje yra žodis „bushel“.
+Iš pradinių duomenų matyti, kad viskas, kur `Unit of Sale` lygu 'EACH' arba 'PER BIN', taip pat turi `Package` tipą per colį, per dėžę arba „kiekvieną“. Moliūgus sunku nuosekliai pasverti, tad filtruokime juos pasirinkdami tik tuos moliūgus, kurių `Package` stulpelyje yra žodis 'bushel'.
-1. Pridėkite filtrą failo viršuje, po pradinio .csv importo:
+1. Pridėkite filtrą failo viršuje, po pradiniu .csv importu:
```python
pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]
```
- Jei dabar spausdinsite duomenis, pamatysite, kad gaunate tik apie 415 eilučių duomenų, kuriuose moliūgai pateikiami pagal bushel.
+ Jei dabar spausdinsite duomenis, matysite, kad gaunate tik apie 415 eilučių, kurių duomenys apie moliūgus pagal bushelį.
-### Bet palaukite! Dar vienas dalykas, kurį reikia padaryti
+### Bet palaukite! Dar reikia vieno žingsnio
-Ar pastebėjote, kad bushel kiekis skiriasi kiekvienoje eilutėje? Jums reikia normalizuoti kainas, kad būtų rodomos kainos pagal bushel, todėl atlikite keletą skaičiavimų, kad standartizuotumėte.
+Pastebėjote, kad kiekvienos eilutės bushelio kiekis skiriasi? Reikia normalizuoti kainas, kad jos būtų nurodytos už vieną bushelį, tad atlikite matematinius veiksmus, kad standartizuotumėte kainas.
-1. Pridėkite šias eilutes po bloko, kuris sukuria new_pumpkins dataframe:
+1. Pridėkite šias eilutes po bloko, kuris kuria new_pumpkins dataframe:
```python
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9)
@@ -134,29 +134,29 @@ Ar pastebėjote, kad bushel kiekis skiriasi kiekvienoje eilutėje? Jums reikia n
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2)
```
-✅ Pasak [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), bushel svoris priklauso nuo produkto tipo, nes tai yra tūrio matavimo vienetas. „Pavyzdžiui, pomidorų bushel turėtų sverti 56 svarus... Lapai ir žalumynai užima daugiau vietos su mažesniu svoriu, todėl špinatų bushel yra tik 20 svarų.“ Tai gana sudėtinga! Nesivarginkime su bushel į svarus konversija, o vietoj to kainą skaičiuokime pagal bushel. Visa ši moliūgų bushel analizė, tačiau, parodo, kaip svarbu suprasti savo duomenų pobūdį!
+✅ Pasak [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), bushelio svoris priklauso nuo produkto tipo, nes tai tūrio matas. „Pavyzdžiui, vienas bushelis pomidorų turėtų sverti 56 svarus... Lapai ir žalumynai užima daugiau vietos, bet sveria mažiau, todėl vienas špinatų bushelis sveria tik 20 svarų.“ Viskas gana sudėtinga! Neskaičiuokime konversijos iš bushelio į svarą, o vertinkime kainas pagal bushelį. Visa ši moliūgų bushelių analizė parodo, kaip svarbu suprasti savo duomenų prigimtį!
-Dabar galite analizuoti kainas pagal vienetą, remdamiesi jų bushel matavimu. Jei dar kartą spausdinsite duomenis, pamatysite, kaip jie yra standartizuoti.
+Dabar galite analizuoti vieneto kainą pagal jų bushelio matavimą. Jei dar kartą atspausdinsite duomenis, matysite, kaip jie yra standartizuoti.
-✅ Ar pastebėjote, kad moliūgai, parduodami pagal pusę bushel, yra labai brangūs? Ar galite suprasti, kodėl? Užuomina: maži moliūgai yra daug brangesni nei dideli, tikriausiai todėl, kad jų yra daug daugiau viename bushel, atsižvelgiant į nepanaudotą vietą, kurią užima vienas didelis tuščiaviduris pyrago moliūgas.
+✅ Ar pastebėjote, kad moliūgai, parduodami per pusę bushelio, yra labai brangūs? Ar galite suprasti, kodėl? Patarimas: mažieji moliūgai kainuoja gerokai daugiau nei didieji, tikriausiai todėl, kad jų bushelyje yra daug daugiau, atsižvelgiant į neišnaudotą vietą, kurią užima didelis didelis moliūgas.
-## Vizualizacijos strategijos
+## Vizualizavimo strategijos
-Duomenų mokslininko vaidmuo yra parodyti duomenų kokybę ir pobūdį, su kuriais jis dirba. Tam jie dažnai kuria įdomias vizualizacijas, tokias kaip sklaidos diagramos, grafikai ir lentelės, kurios parodo skirtingus duomenų aspektus. Tokiu būdu jie gali vizualiai parodyti ryšius ir spragas, kurių kitaip būtų sunku pastebėti.
+Duomenų mokslininko vaidmuo yra parodyti, kokie duomenys yra ir kokios jų savybės. Tam dažnai kuriami įdomūs vaizdai, diagramos ir grafikai, kurie atskleidžia santykius ir spragas, kurias kitaip sunku pastebėti.
-[](https://youtu.be/SbUkxH6IJo0 "ML pradedantiesiems - Kaip vizualizuoti duomenis naudojant Matplotlib")
+[](https://youtu.be/SbUkxH6IJo0 "ML pradedantiesiems – kaip vizualizuoti duomenis su Matplotlib")
-> 🎥 Spustelėkite aukščiau esančią nuotrauką, kad peržiūrėtumėte trumpą vaizdo įrašą apie duomenų vizualizaciją šiai pamokai.
+> 🎥 Spustelėkite paveikslėlį aukščiau, norėdami peržiūrėti trumpą vaizdo įrašą apie šios pamokos duomenų vizualizaciją.
-Vizualizacijos taip pat gali padėti nustatyti, kuris mašininio mokymosi metodas yra tinkamiausias duomenims. Pavyzdžiui, sklaidos diagrama, kuri atrodo kaip linija, rodo, kad duomenys yra tinkami linijinės regresijos užduočiai.
+Vizualizacijos taip pat padeda nustatyti, kokia mašininio mokymosi technika yra tinkamiausia duomenims. Pavyzdžiui, taškinė diagrama, kuri atrodo kaip sekanti liniją, rodo, kad duomenys gali būti tinkami linijinei regresijai.
-Viena duomenų vizualizacijos biblioteka, kuri gerai veikia Jupyter užrašuose, yra [Matplotlib](https://matplotlib.org/) (ją taip pat matėte ankstesnėje pamokoje).
+Viena iš bibliotekų duomenų vizualizacijai, kuri gerai veikia Jupyter užrašų knygelėse, yra [Matplotlib](https://matplotlib.org/) (kurią jau matėte ankstesnėje pamokoje).
-> Gaukite daugiau patirties su duomenų vizualizacija [šiame vadove](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott).
+> Gaukite daugiau patirties su duomenų vizualizacija šiuose [mokymuose](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott).
-## Užduotis - eksperimentuokite su Matplotlib
+## Pratimai – eksperimentuokite su Matplotlib
-Pabandykite sukurti keletą pagrindinių diagramų, kad parodytumėte naują dataframe, kurį ką tik sukūrėte. Ką parodytų pagrindinė linijinė diagrama?
+Pabandykite sukurti pagrindines diagramas, kad parodytumėte ką tik sukurtą dataframe. Ką rodo paprasta linijinė diagrama?
1. Importuokite Matplotlib failo viršuje, po Pandas importo:
@@ -164,8 +164,8 @@ Pabandykite sukurti keletą pagrindinių diagramų, kad parodytumėte naują dat
import matplotlib.pyplot as plt
```
-1. Paleiskite visą užrašų knygelę iš naujo, kad atnaujintumėte.
-1. Užrašų knygelės apačioje pridėkite langelį, kad duomenys būtų pateikti kaip dėžutė:
+1. Perpaleiskite visą užrašų knygelę.
+1. Apačioje pridėkite langelį, kad nupieštumėte duomenis kaip dėžutės diagramą:
```python
price = new_pumpkins.Price
@@ -174,44 +174,121 @@ Pabandykite sukurti keletą pagrindinių diagramų, kad parodytumėte naują dat
plt.show()
```
- 
+ 
- Ar tai naudinga diagrama? Ar kas nors joje jus nustebina?
+ Ar ši diagrama naudinga? Ar kažkas jus nustebino?
- Ji nėra ypač naudinga, nes tiesiog rodo jūsų duomenis kaip taškų sklaidą tam tikrame mėnesyje.
+ Ji nėra ypač naudinga, nes tik rodo jūsų duomenis kaip pasklidusius taškus tam tikrame mėnesyje.
### Padarykite ją naudingą
-Kad diagramos rodytų naudingus duomenis, paprastai reikia kažkaip grupuoti duomenis. Pabandykime sukurti diagramą, kur y ašis rodo mėnesius, o duomenys demonstruoja duomenų pasiskirstymą.
+Kad diagramos rodytų naudingus duomenis, dažnai reikia duomenis kažkaip sugrupuoti. Pabandykime sukurti diagramą, kur y ašis rodo mėnesius, o duomenys rodo jų pasiskirstymą.
-1. Pridėkite langelį, kad sukurtumėte grupuotą stulpelinę diagramą:
+1. Pridėkite langelį, kuris sukurs grupinę stulpelinę diagramą:
```python
new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar')
plt.ylabel("Pumpkin Price")
```
- 
+ 
+
+ Tai naudingesnė duomenų vizualizacija! Ji rodo, kad aukščiausia moliūgų kaina yra rugsėjį ir spalį. Ar tai atitinka jūsų lūkesčius? Kodėl ar kodėl ne?
+
+## Pratimai – eksperimentuokite su Seaborn
+
+Matplotlib yra galinga, bet sukurti paruoštą diagramą gali prireikti daug kodo. [Seaborn](https://seaborn.pydata.org/) yra biblioteka, sukurta _virš_ Matplotlib, skirta statistinei duomenų vizualizacijai. Ji tiesiogiai dirba su Pandas dataframe objektais, taiko patrauklius numatytuosius stilius ir leidžia kurti informatyvias diagramas su daug mažiau kodo. Kadangi Seaborn grąžina Matplotlib objektus, vis dar galite naudoti viską, ką jau žinote apie Matplotlib, rezultatui tikslinti.
+
+> Jei dar neturite įdiegę Seaborn, įdiekite jį su `pip install seaborn`.
+
+1. Importuokite Seaborn užrašų knygelės viršuje, po kitų importų. Paprastai jis importuojamas kaip `sns`:
+
+ ```python
+ import seaborn as sns
+ ```
+
+### Taškinės diagramos santykiams atskleisti
+
+Svarbi duomenų tyrimo dalis prieš kuriant modelį – ieškoti _santykių_ tarp kintamųjų. [Taškinė diagrama](https://en.wikipedia.org/wiki/Scatter_plot) yra vienas geriausių įrankių tokiam tikslui: jei taškai atrodo kertantys liniją, gali būti, kad du kintamieji yra susiję, o tai rodo, kad linijinės regresijos modelis gali veikti.
+
+1. Atkurkite ankstesnę kainos ir mėnesio taškinę diagramą, šį kartą naudodami Seaborn funkciją [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) (santykinė diagrama), kuri tiesiogiai dirba su jūsų dataframe stulpeliais:
+
+ ```python
+ sns.relplot(x="Price", y="Month", data=new_pumpkins)
+ ```
+
+ 
+
+ Atkreipkite dėmesį, kaip jūs perduodate _stulpelių pavadinimus_ ir dataframe, o Seaborn pats sukuria ašių etiketes.
+
+2. Galite pakeisti į linijinę diagramą, perduodami `kind="line"`. Seaborn net piešia šešėlinę juostą, rodančią pasitikėjimo intervalą aplink liniją:
+
+ ```python
+ sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins)
+ ```
+
+ 
+
+ Šie duomenys yra gana triukšmingi, todėl linijinė diagrama nėra aiškiausias pasirinkimas čia – bet tai rodo, kaip lengvai galite keisti diagramų tipus Seaborn.
+
+### Stulpelinės diagramos rodant pasiskirstymus
+
+
+Anksčiau jūs rankiniu būdu grupavote duomenis, kad sukurtumėte juostinę diagramą su Matplotlib. Seaborn funkcija [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) (kategorinė diagrama) gali atlikti grupavimą ir agregavimą už jus. Pagal numatytuosius nustatymus `kind="bar"` rodo kiekvienos kategorijos vidurkį su juoda linija, nurodančia pasitikėjimo intervalą.
+
+1. Sukurkite juostinę diagramą, rodančią vidutinę kainą per mėnesį:
+
+ ```python
+ sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar")
+ ```
+
+ 
+
+ Tai patvirtina, ką matėte su Matplotlib – kainos pasiekia piką apie rugsėjį ir spalių – tačiau Seaborn taip pat vizualizuoja, kiek kaina _svyruoja_ kiekvieno mėnesio viduje.
+
+### Karštųjų taškų žemėlapiai rodantys koreliacijas
+
+Sklaidos diagramos lygina po du kintamuosius. Turint kelias skaitines stulpelius, [karštųjų taškų žemėlapis](https://en.wikipedia.org/wiki/Heat_map) leidžia iš karto matyti ryšio stiprumą tarp _kiekvienos_ poros stulpelių. Tai įprastas būdas pastebėti, kurie bruožai yra labiausiai koreliuoti prieš pasirenkant, ką naudoti modeliui (ir vėliau tokio tipo diagrama naudojama rodyti painiavos matricas klasifikacijoje).
+
+1. Sukurkite koreliacijos matricą su Pandas, tada nupieškite ją naudodami Seaborn funkciją [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html). Parinktis `annot=True` išspausdina koreliacijos reikšmes kiekviename langelyje:
+
+ ```python
+ correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()
+ sns.heatmap(correlations, annot=True, cmap="coolwarm")
+ ```
+
+ 
+
+ Reikšmės, artimos `1` (arba `-1`), reiškia, kad stulpeliai yra stipriai _linijiškai_ koreliuoti. Pastebėkite, kaip `Low Price` ir `High Price` beveik idealiai koreliuojasi. O štai `Month` rodo tik silpną tiesinę koreliaciją su kaina – nors juostinė diagrama aukščiau atskleidė aiškų sezonišką piko laikotarpį rugsėjį ir spaly. Tai svarbi pamoka: koreliacijos koeficientas matuoja tik _tiesines_ priklausomybes, todėl gali nepastebėti sezoninių ar kitaip nelinijinių modelių. ✅ Kodėl naudinga pažvelgti tiek į karštųjų taškų žemėlapį, tiek į diagramas, kaip juostinė diagrama, prieš nusprendžiant, kuriuos stulpelius naudoti?
+
+### Matplotlib ar Seaborn?
+
+Abu bibliotekos verta žinoti:
+
+- **Matplotlib** suteikia smulkią kontrolę kiekvienam diagramos elementui ir yra pagrindas, ant kurio statomos beveik visos kitos Python braižymo bibliotekos.
+- **Seaborn** siūlo aukštesnio lygio funkcijas ir patrauklius numatytus nustatymus statistinėms diagramoms, tiesiogiai dirba su duomenų rėmeliais ir dažnai yra greitesnis atliekant tyrinėjamuosius duomenų analizės darbus.
- Tai yra naudingesnė duomenų vizualizacija! Atrodo, kad didžiausia moliūgų kaina yra rugsėjį ir spalį. Ar tai atitinka jūsų lūkesčius? Kodėl arba kodėl ne?
+Dažniausias darbo eiga – naudoti Seaborn greitam duomenų tyrinėjimui, o tada pereiti prie Matplotlib, kai reikia pritaikyti detales.
---
## 🚀Iššūkis
-Ištyrinėkite skirtingus vizualizacijos tipus, kuriuos siūlo Matplotlib. Kurie tipai yra tinkamiausi regresijos problemoms?
+Tyrinėkite skirtingus Matplotlib ir Seaborn siūlomus vizualizacijos tipus. Kokie tipai labiausiai tinka regresijos uždaviniams?
-## [Po paskaitos testas](https://ff-quizzes.netlify.app/en/ml/)
+## [Paskaitos pabaigos testas](https://ff-quizzes.netlify.app/en/ml/)
## Apžvalga ir savarankiškas mokymasis
-Pažvelkite į daugybę būdų vizualizuoti duomenis. Sudarykite sąrašą įvairių bibliotekų ir pažymėkite, kurios yra geriausios tam tikriems užduočių tipams, pavyzdžiui, 2D vizualizacijoms ir 3D vizualizacijoms. Ką atrandate?
+Pažiūrėkite į daugybę būdų vizualizuoti duomenis. Sudarykite įvairių turimų bibliotekų sąrašą ir pažymėkite, kurios geriausiai tinka tam tikroms užduotims, pavyzdžiui, 2D vizualizacijoms prieš 3D vizualizacijas. Ką atrandate?
-## Užduotis
+## Namų darbai
-[Duomenų vizualizacijos tyrinėjimas](assignment.md)
+[Vizualizacijos tyrinėjimas](assignment.md)
---
-**Atsakomybės apribojimas**:
-Šis dokumentas buvo išverstas naudojant dirbtinio intelekto vertimo paslaugą [Co-op Translator](https://github.com/Azure/co-op-translator). Nors siekiame tikslumo, atkreipiame dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba turėtų būti laikomas autoritetingu šaltiniu. Kritinei informacijai rekomenduojama naudotis profesionalių vertėjų paslaugomis. Mes neprisiimame atsakomybės už nesusipratimus ar klaidingus aiškinimus, kylančius dėl šio vertimo naudojimo.
\ No newline at end of file
+
+**Atsakomybės apribojimas**:
+Šis dokumentas buvo išverstas naudojant dirbtinio intelekto vertimo paslaugą [Co-op Translator](https://github.com/Azure/co-op-translator). Nors siekiame tikslumo, prašome atkreipti dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba laikomas autoritetingu šaltiniu. Svarbiai informacijai rekomenduojama naudoti profesionalų žmogiškąjį vertimą. Mes neatsakome už jokius nesusipratimus ar neteisingą interpretaciją, kilusią naudojantis šiuo vertimu.
+
\ No newline at end of file
diff --git a/translations/lt/2-Regression/2-Data/solution/notebook.ipynb b/translations/lt/2-Regression/2-Data/solution/notebook.ipynb
index affbef54f..0e6f5658c 100644
--- a/translations/lt/2-Regression/2-Data/solution/notebook.ipynb
+++ b/translations/lt/2-Regression/2-Data/solution/notebook.ipynb
@@ -3,7 +3,9 @@
{
"cell_type": "markdown",
"metadata": {},
- "source": []
+ "source": [
+ "## Linijinė regresija moliūgams - 2 pamoka\n"
+ ]
},
{
"cell_type": "code",
@@ -220,6 +222,7 @@
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
"pumpkins = pd.read_csv('../../data/US-pumpkins.csv')\n",
"\n",
"pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]\n",
@@ -383,18 +386,78 @@
"plt.ylabel(\"Pumpkin Price\")"
]
},
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Vizualizavimas naudojant Seaborn\n",
+ "\n",
+ "[Seaborn](https://seaborn.pydata.org/) yra sukurtas ant Matplotlib pagrindo ir tiesiogiai veikia su duomenų rėmeliais, todėl labai greitai galima sukurti patrauklias statistines diagramas, naudojant labai mažai kodo.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Sklaidos diagramos santykiams parodyti\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", kind=\"line\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Juostiniai diagramos parodyti pasiskirstymus\n"
+ ]
+ },
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
- "source": []
+ "source": [
+ "sns.catplot(x=\"Month\", y=\"Price\", data=new_pumpkins, kind=\"bar\")"
+ ]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "\n---\n\n**Atsakomybės apribojimas**: \nŠis dokumentas buvo išverstas naudojant AI vertimo paslaugą [Co-op Translator](https://github.com/Azure/co-op-translator). Nors siekiame tikslumo, prašome atkreipti dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba turėtų būti laikomas autoritetingu šaltiniu. Kritinei informacijai rekomenduojama naudoti profesionalų žmogaus vertimą. Mes neprisiimame atsakomybės už nesusipratimus ar klaidingus interpretavimus, atsiradusius dėl šio vertimo naudojimo.\n"
+ "### Šilumos žemėlapiai, rodantys koreliacijas\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()\n",
+ "sns.heatmap(correlations, annot=True, cmap=\"coolwarm\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "---\n\n\n**Atsakomybės apribojimas**:\nŠis dokumentas buvo išverstas naudojant dirbtinio intelekto vertimo paslaugą [Co-op Translator](https://github.com/Azure/co-op-translator). Nors siekiame tikslumo, prašome atkreipti dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba laikomas autoritetingu šaltiniu. Svarbiai informacijai rekomenduojama naudoti profesionalų žmogiškąjį vertimą. Mes neatsakome už jokius nesusipratimus ar neteisingą interpretaciją, kilusią naudojantis šiuo vertimu.\n\n"
]
}
],
@@ -424,13 +487,7 @@
"hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d"
}
},
- "orig_nbformat": 2,
- "coopTranslator": {
- "original_hash": "95726f0b8283628d5356a4f8eb8b4b76",
- "translation_date": "2025-09-03T19:44:53+00:00",
- "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
- "language_code": "lt"
- }
+ "orig_nbformat": 2
},
"nbformat": 4,
"nbformat_minor": 2
diff --git a/translations/lt/8-Reinforcement/1-QLearning/README.md b/translations/lt/8-Reinforcement/1-QLearning/README.md
index b192737a8..d8167e744 100644
--- a/translations/lt/8-Reinforcement/1-QLearning/README.md
+++ b/translations/lt/8-Reinforcement/1-QLearning/README.md
@@ -1,47 +1,47 @@
-# Įvadas į stiprinamąjį mokymą ir Q-mokymą
+# Įvadas į stiprinamąjį mokymąsi ir Q-mokymąsi
-
-> Sketchnote sukūrė [Tomomi Imura](https://www.twitter.com/girlie_mac)
+
+> Sketchnote autorius [Tomomi Imura](https://www.twitter.com/girlie_mac)
-Stiprinamasis mokymasis apima tris svarbias sąvokas: agentą, tam tikras būsenas ir veiksmų rinkinį kiekvienai būsenai. Atlikdamas veiksmą tam tikroje būsenoje, agentas gauna atlygį. Įsivaizduokite kompiuterinį žaidimą „Super Mario“. Jūs esate Mario, esate žaidimo lygyje, stovite šalia uolos krašto. Virš jūsų yra moneta. Jūs, būdamas Mario, tam tikroje žaidimo lygio pozicijoje... tai yra jūsų būsena. Žengus žingsnį į dešinę (veiksmas), nukristumėte nuo uolos, ir tai suteiktų jums mažą skaitinį rezultatą. Tačiau paspaudus šuolio mygtuką, pelnytumėte tašką ir išliktumėte gyvas. Tai yra teigiamas rezultatas, kuris turėtų suteikti jums teigiamą skaitinį rezultatą.
+Stiprinamasis mokymasis apima tris svarbias sąvokas: agentą, kai kurias būsenas ir kiekvienai būsenai priskirtą veiksmų rinkinį. Vykdydamas veiksmą tam tikroje būsenoje, agentas gauna apdovanojimą. Vėl įsivaizduokite kompiuterinį žaidimą Super Mario. Jūs esate Mario, esate žaidimo lygyje prie skardžio krašto. Virš jūsų yra moneta. Jūs, būdamas Mario, žaidimo lygyje tam tikroje vietoje ... tai yra jūsų būsena. Padaryti žingsnį į dešinę (veiksmas) reiškia, kad nukrisite nuo skardžio ir gausite mažą skaičių kaip rezultatą. Tačiau paspaudus šokinėjimo mygtuką, jūs pelnysite tašką ir liksite gyvas. Tai yra teigiamas rezultatas, už kurį turėtumėte gauti teigiamą skaitinį įvertinimą.
-Naudodami stiprinamąjį mokymą ir simuliatorių (žaidimą), galite išmokti žaisti žaidimą taip, kad maksimaliai padidintumėte atlygį, t. y. išliktumėte gyvas ir surinktumėte kuo daugiau taškų.
+Naudodami stiprinamąjį mokymąsi ir simuliatorių (žaidimą), galite išmokti žaisti žaidimą taip, kad maksimalizuotumėte apdovanojimą - išlikimą ir taškų skaičių.
-[](https://www.youtube.com/watch?v=lDq_en8RNOo)
+[](https://www.youtube.com/watch?v=lDq_en8RNOo)
-> 🎥 Spustelėkite aukščiau esančią nuotrauką, kad išgirstumėte Dmitrijų kalbant apie stiprinamąjį mokymą
+> 🎥 Spustelėkite paveikslėlį aukščiau, norėdami išgirsti Dmitrijų apie stiprinamąjį mokymąsi
-## [Prieš paskaitos testas](https://ff-quizzes.netlify.app/en/ml/)
+## [Priešpaskaitos testas](https://ff-quizzes.netlify.app/en/ml/)
-## Reikalavimai ir paruošimas
+## Reikalingos žinios ir nustatymai
-Šioje pamokoje eksperimentuosime su Python kodu. Turėtumėte sugebėti paleisti Jupyter Notebook kodą iš šios pamokos, arba savo kompiuteryje, arba debesyje.
+Šiame pamokoje eksperimentuosime su kai kuriu Python kodu. Jūs turėtumėte sugebėti paleisti Jupyter Notebook kodą iš šios pamokos savo kompiuteryje arba debesyje.
-Galite atidaryti [pamokos užrašų knygelę](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) ir peržiūrėti šią pamoką, kad ją sukurtumėte.
+Galite atidaryti [pamokos užrašų knygelę](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) ir pereiti šią pamoką, kad sukurtumėte projektą.
-> **Pastaba:** Jei atidarote šį kodą iš debesies, taip pat turite gauti [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) failą, kuris naudojamas užrašų knygelės kode. Įdėkite jį į tą patį katalogą kaip ir užrašų knygelę.
+> **Pastaba:** Jei atidarote šį kodą iš debesies, taip pat turite atsisiųsti [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) failą, kuris naudojamas užrašų knygelės kode. Įdėkite jį į tą patį katalogą kaip užrašų knygelę.
## Įvadas
-Šioje pamokoje tyrinėsime **[Petro ir vilko](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)** pasaulį, įkvėptą muzikinės pasakos, sukurtos rusų kompozitoriaus [Sergejaus Prokofjevo](https://en.wikipedia.org/wiki/Sergei_Prokofiev). Naudosime **stiprinamąjį mokymą**, kad Petras galėtų tyrinėti savo aplinką, rinkti skanius obuolius ir vengti susitikimo su vilku.
+Šioje pamokoje tyrinėsime **[Petras ir vilkas](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)** pasaulį, įkvėptą muzikos pasakos, kurį sukūrė rusų kompozitorius [Sergejus Prokofjevas](https://en.wikipedia.org/wiki/Sergei_Prokofiev). Naudosime **stiprinamąjį mokymąsi**, kad Petras tyrinėtų savo aplinką, rinktų skanius obuolius ir vengė susitikti su vilku.
-**Stiprinamasis mokymasis** (RL) yra mokymosi technika, leidžianti išmokti optimalaus **agento** elgesio tam tikroje **aplinkoje**, atliekant daugybę eksperimentų. Agentas šioje aplinkoje turėtų turėti tam tikrą **tikslą**, apibrėžtą **atlygio funkcija**.
+**Stiprinamasis mokymasis** (RL) yra mokymosi metodas, leidžiantis išmokti optimalią elgseną **agento** tam tikroje **aplinkoje** vykdant daugybę eksperimentų. Agentas šioje aplinkoje turi turėti tam tikrą **tikslą**, apibrėžtą **apdovanojimo funkcija**.
## Aplinka
-Paprasčiausiai, įsivaizduokime Petro pasaulį kaip kvadratinę lentą, kurios dydis yra `plotis` x `aukštis`, panašiai kaip ši:
+Paprastumui, Petras pasaulį laikysime kvadratine lenta, kurios dydis yra `width` x `height`, kaip parodyta žemiau:
-
+
-Kiekviena ląstelė šioje lentoje gali būti:
+Kiekviena lentoje esanti ląstelė gali būti vienas iš šių dalykų:
-* **žemė**, ant kurios Petras ir kiti padarai gali vaikščioti.
-* **vanduo**, ant kurio, akivaizdu, negalima vaikščioti.
-* **medis** arba **žolė**, vieta, kur galima pailsėti.
-* **obuolys**, kurį Petras norėtų rasti, kad pasimaitintų.
+* **žemė**, ant kurios gali vaikščioti Petras ir kitos būtybės.
+* **vanduo**, ant kurio žinoma negalima vaikščioti.
+* **medis** arba **žolė**, vieta, kur gali pailsėti.
+* **obuolys**, kuris reiškia tai, ko Petras džiaugtųsi radęs ir galėtų pavalgyti.
* **vilkas**, kuris yra pavojingas ir kurio reikėtų vengti.
-Yra atskiras Python modulis, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), kuriame yra kodas, skirtas dirbti su šia aplinka. Kadangi šis kodas nėra svarbus mūsų koncepcijoms suprasti, mes importuosime modulį ir naudosime jį, kad sukurtume pavyzdinę lentą (kodo blokas 1):
+Yra atskiras Python modulis, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), kuris turi kodą darbui su šia aplinka. Kadangi šis kodas nėra svarbus mūsų koncepcijų supratimui, importuosime modulį ir naudosime jį pavyzdinės lentos sukūrimui (kodo blokas 1):
```python
from rlboard import *
@@ -52,63 +52,63 @@ m.randomize(seed=13)
m.plot()
```
-Šis kodas turėtų atspausdinti aplinkos vaizdą, panašų į aukščiau pateiktą.
+Šis kodas turėtų atspausdinti aplinkos vaizdą panašų į aukščiau pateiktą.
## Veiksmai ir politika
-Mūsų pavyzdyje Petro tikslas būtų rasti obuolį, vengiant vilko ir kitų kliūčių. Tam jis iš esmės gali vaikščioti, kol suras obuolį.
+Mūsų pavyzdyje Petro tikslas būtų rasti obuolį, vengiant vilko ir kitų kliūčių. Tam jis pagal paskirtį gali vaikščioti, kol suras obuolį.
-Todėl bet kurioje pozicijoje jis gali pasirinkti vieną iš šių veiksmų: aukštyn, žemyn, kairėn ir dešinėn.
+Todėl bet kurioje pozicijoje jis gali pasirinkti vieną iš šių veiksmų: aukštyn, žemyn, į kairę ir į dešinę.
-Šiuos veiksmus apibrėšime kaip žodyną ir susiesime juos su atitinkamais koordinačių pokyčių poromis. Pavyzdžiui, judėjimas dešinėn (`R`) atitiktų porą `(1,0)`. (kodo blokas 2):
+Apibrėšime šiuos veiksmus kaip žodyną ir susiesime juos su atitinkamais koordinatų pokyčių pora. Pavyzdžiui, judėjimas į dešinę (`R`) atitinka porą `(1,0)`. (kodo blokas 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()) }
```
-Apibendrinant, šio scenarijaus strategija ir tikslas yra tokie:
+Apibendrinant, strategija ir šio scenarijaus tikslas yra tokie:
-- **Strategija**, mūsų agento (Petro) yra apibrėžta vadinamąja **politika**. Politika yra funkcija, kuri grąžina veiksmą bet kurioje būsenoje. Mūsų atveju problemos būsena yra lentos vaizdas, įskaitant žaidėjo dabartinę poziciją.
+- **Strategija**, mūsų agento (Petro) yra apibrėžta taip vadinama **politika**. Politika yra funkcija, kuri bet kurioje būsenoje grąžina veiksmą. Mūsų atveju problemos būsena yra atvaizduojama lenta, įskaitant dabartinę žaidėjo poziciją.
-- **Tikslas**, stiprinamojo mokymosi yra galiausiai išmokti gerą politiką, kuri leis efektyviai išspręsti problemą. Tačiau kaip pagrindą, apsvarstykime paprasčiausią politiką, vadinamą **atsitiktiniu vaikščiojimu**.
+- **Tikslas**, stiprinamojo mokymosi yra pagaliau išmokti gerą politiką, leidžiančią efektyviai spręsti problemą. Tačiau kaip pradinį tašką laikykime paprasčiausią politiką, vadinamą **atsitiktiniu ėjimu**.
-## Atsitiktinis vaikščiojimas
+## Atsitiktinis ėjimas
-Pirmiausia išspręskime mūsų problemą įgyvendindami atsitiktinio vaikščiojimo strategiją. Naudodami atsitiktinį vaikščiojimą, atsitiktinai pasirinksime kitą veiksmą iš leidžiamų veiksmų, kol pasieksime obuolį (kodo blokas 3).
+Pirmiausia išspręskime problemą įgyvendindami atsitiktinio ėjimo strategiją. Naudodamiesi atsitiktiniu ėjimu, mes atsitiktinai pasirinksime kitą veiksmą iš leidžiamų veiksmų, kol pasieksime obuolį (kodo blokas 3).
-1. Įgyvendinkite atsitiktinį vaikščiojimą naudodami žemiau pateiktą kodą:
+1. Įgyvendinkite atsitiktinį ėjimą su žemiau pateiktu kodu:
```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
+ n = 0 # žingsnių skaičius
+ # nustatyti pradinę poziciją
if start_position:
m.human = start_position
else:
m.random_start()
while True:
if m.at() == Board.Cell.apple:
- return n # success!
+ return n # sėkmė!
if m.at() in [Board.Cell.wolf, Board.Cell.water]:
- return -1 # eaten by wolf or drowned
+ return -1 # suėdė vilkas arba nuskendo
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
+ m.move(a) # atlikti tikrąjį judesį
break
n+=1
walk(m,random_policy)
```
- Funkcijos `walk` iškvietimas turėtų grąžinti atitinkamo kelio ilgį, kuris gali skirtis kiekvieno paleidimo metu.
+ Iškvietimas `walk` turėtų grąžinti atitinkamo kelio ilgį, kuris gali skirtis paleidžiamų kartų metu.
-1. Paleiskite vaikščiojimo eksperimentą kelis kartus (pvz., 100) ir atspausdinkite gautą statistiką (kodo blokas 4):
+1. Paleiskite ėjimo eksperimentą keletą kartų (pvz., 100) ir atspausdinkite rezultatais pagrįstas statistikas (kodo blokas 4):
```python
def print_statistics(policy):
@@ -125,17 +125,17 @@ Pirmiausia išspręskime mūsų problemą įgyvendindami atsitiktinio vaikščio
print_statistics(random_policy)
```
- Atkreipkite dėmesį, kad vidutinis kelio ilgis yra apie 30–40 žingsnių, o tai yra gana daug, atsižvelgiant į tai, kad vidutinis atstumas iki artimiausio obuolio yra apie 5–6 žingsnius.
+ Atkreipkite dėmesį, kad vidutinis kelio ilgis yra apie 30-40 žingsnių, kas yra gana daug, atsižvelgiant į tai, kad vidutinis atstumas iki artimiausio obuolio yra apie 5-6 žingsnius.
- Taip pat galite pamatyti, kaip atrodo Petro judėjimas atsitiktinio vaikščiojimo metu:
+ Taip pat galite pamatyti, kaip atrodo Petro judesys atsitiktinio ėjimo metu:
- 
+ 
-## Atlygio funkcija
+## Apdovanojimo funkcija
-Kad mūsų politika būtų protingesnė, turime suprasti, kurie judesiai yra „geresni“ už kitus. Tam reikia apibrėžti mūsų tikslą.
+Norėdami padaryti politiką protingesnę, turime suprasti, kurie veiksmai yra "geresni" už kitus. Tam reikia apibrėžti tikslą.
-Tikslas gali būti apibrėžtas **atlygio funkcijos** forma, kuri grąžins tam tikrą balo reikšmę kiekvienai būsenai. Kuo didesnis skaičius, tuo geresnė atlygio funkcija. (kodo blokas 5)
+Tikslas gali būti apibrėžtas per **apdovanojimo funkciją**, kuri kiekvienai būsenai suteikia tam tikrą įvertinimą. Kuo didesnis skaičius, tuo geresnė apdovanojimo funkcija. (kodo blokas 5)
```python
move_reward = -0.1
@@ -154,39 +154,115 @@ def reward(m,pos=None):
return move_reward
```
-Įdomus dalykas apie atlygio funkcijas yra tas, kad daugeliu atvejų *mes gauname reikšmingą atlygį tik žaidimo pabaigoje*. Tai reiškia, kad mūsų algoritmas turėtų kažkaip prisiminti „gerus“ žingsnius, kurie veda į teigiamą atlygį pabaigoje, ir padidinti jų svarbą. Panašiai visi judesiai, kurie veda į blogus rezultatus, turėtų būti atgrasomi.
+Įdomu tai, kad apdovanojimo funkcijose daugeliu atvejų *žymus apdovanojimas gaunamas tik žaidimo pabaigoje*. Tai reiškia, kad mūsų algoritmas turėtų kažkaip atsiminti "gerus" žingsnius, vedančius į teigiamą apdovanojimą pabaigoje, ir padidinti jų reikšmę. Panašiai visi veiksmai, vedantys į blogus rezultatus, turėtų būti nerekomenduojami.
## Q-mokymasis
-Algoritmas, kurį aptarsime čia, vadinamas **Q-mokymu**. Šiame algoritme politika apibrėžiama funkcija (arba duomenų struktūra), vadinama **Q-lentele**. Ji registruoja kiekvieno veiksmo „gerumą“ tam tikroje būsenoje.
+Algoritmas, kurį aptarsime, vadinamas **Q-mokymosi**. Šiame algoritme politika apibrėžiama funkcija (arba duomenų struktūra), vadinama **Q-lentele**. Ji įrašo kiekvieno veiksmo "gerumą" tam tikroje būsenoje.
-Ji vadinama Q-lentele, nes dažnai patogu ją vaizduoti kaip lentelę arba daugiamačio masyvo formą. Kadangi mūsų lenta turi matmenis `plotis` x `aukštis`, Q-lentelę galime vaizduoti naudodami numpy masyvą, kurio forma yra `plotis` x `aukštis` x `len(veiksmai)`: (kodo blokas 6)
+Jis vadinamas Q-lentele, nes dažnai patogu ją pateikti kaip lentelę arba daugiamačio masyvo formą. Kadangi mūsų lenta turi matmenis `width` x `height`, galime reprezentuoti Q-lentelę naudodami numpy masyvą su matmenimis `width` x `height` x `len(actions)`: (kodo blokas 6)
```python
Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions)
```
-Atkreipkite dėmesį, kad mes inicializuojame visas Q-lentelės reikšmes lygiomis reikšmėmis, mūsų atveju - 0.25. Tai atitinka „atsitiktinio vaikščiojimo“ politiką, nes visi judesiai kiekvienoje būsenoje yra vienodai geri. Q-lentelę galime perduoti funkcijai `plot`, kad vizualizuotume lentelę lentoje: `m.plot(Q)`.
+Pastebėkite, kad mes inicializuojame visus Q-lentelės reikšmes vienodai, mūsų atveju - 0.25. Tai atitinka "atsitiktinio ėjimo" politiką, nes visi ėjimai kiekvienoje būsenoje yra vienodai geri. Galime perduoti Q-lentelę funkcijai `plot`, kad vizualizuotume lentelę lentoje: `m.plot(Q)`.
-
+
-Kiekvienos ląstelės centre yra „rodyklė“, rodanti pageidaujamą judėjimo kryptį. Kadangi visos kryptys yra vienodos, rodomas taškas.
+Kiekvienos ląstelės centre yra "rodyklė", nurodanti pageidaujamą judėjimo kryptį. Kadangi visos kryptys yra vienodos, rodoma taškas.
-Dabar turime paleisti simuliaciją, tyrinėti savo aplinką ir išmokti geresnį Q-lentelės reikšmių pasiskirstymą, kuris leis mums daug greičiau rasti kelią iki obuolio.
+Dabar turime paleisti simuliaciją, tyrinėti aplinką ir išmokti geresnį Q-lentelės reikšmių pasiskirstymą, kuris leis mums greičiau rasti kelią iki obuolio.
-## Q-mokymosi esmė: Bellmano lygtis
+## Q-mokymosi esmė: Belmano lygtis
-Kai pradedame judėti, kiekvienas veiksmas turės atitinkamą atlygį, t. y. teoriškai galime pasirinkti kitą veiksmą pagal didžiausią tiesioginį atlygį. Tačiau daugumoje būsenų judesys nepasieks mūsų tikslo pasiekti obuolį, todėl negalime iš karto nuspręsti, kuri kryptis yra geresnė.
+Kai pradedame judėti, kiekvienas veiksmas turi atitinkamą apdovanojimą, t.y. teoriškai galime pasirinkti kitą veiksmą pagal didžiausią tiesioginį apdovanojimą. Tačiau daugelyje būsenų judesys nepasieks mūsų tikslo - rasti obuolį, ir todėl negalime iš karto nuspręsti, kuri kryptis geresnė.
-> Atminkite, kad svarbus ne tiesioginis rezultatas, o galutinis rezultatas, kurį gausime simuliacijos pabaigoje.
+> Atminkite, svarbu ne tiesioginis rezultatas, o galutinis rezultatas, kurį gausime simuliacijos pabaigoje.
-Kad atsižvelgtume į šį uždelstą atlygį, turime naudoti **[dinaminio programavimo](https://en.wikipedia.org/wiki/Dynamic_programming)** principus, kurie leidžia apie problemą galvoti rekursyviai.
+Norėdami atsižvelgti į šį atidėtą apdovanojimą, turime naudoti **[dinaminio programavimo](https://en.wikipedia.org/wiki/Dynamic_programming)** principus, leidžiančius spręsti problemą rekursyviai.
-Tarkime, kad dabar esame būsenoje *s*, ir norime pereiti į kitą būseną *s'*. Tai darydami gausime tiesioginį atlygį *r(s,a)*, apibrėžtą atlygio funkcija, plius tam tikrą būsimą atlygį. Jei manome, kad mūsų Q-lentelė teisingai atspindi kiekvieno veiksmo „patrauklumą“, tada būsenoje *s'* pasirinksime veiksmą *a*, kuris atitinka didžiausią *Q(s',a')* reikšmę. Taigi, geriausias galimas būsimas atlygis, kurį galėtume gauti būsenoje *s*, bus apibrėžtas kaip `max`
+Tarkime, kad dabar esame būsenoje *s* ir norime pereiti į kitą būseną *s'*. Tai atlikdami, gausime tiesioginį apdovanojimą *r(s,a)*, apibrėžtą apdovanojimo funkcijos, plius tam tikrą ateities apdovanojimą. Jei manytume, kad mūsų Q-lentelė tiksliai atspindi kiekvieno veiksmo "patrauklumą", tada būsenoje *s'* pasirinksime veiksmą *a*, atitinkantį maksimalų *Q(s',a')* vertę. Tokiu būdu geriausias galimas ateities apdovanojimas būsenoje *s* bus apibrėžtas kaip `max`a'*Q(s',a')* (maksimumas apskaičiuojamas per visus galimus veiksmus *a'* būsenoje *s'*).
-## Tikriname politiką
+Tai suteikia **Belmano formulę**, skaičiuojant Q-lentelės vertę būsenoje *s* atsižvelgiant į veiksmą *a*:
-Kadangi Q-lentelėje pateikiamas kiekvieno veiksmo "patrauklumas" kiekvienoje būsenoje, ją gana lengva naudoti efektyviam navigavimui mūsų pasaulyje apibrėžti. Paprasčiausiu atveju galime pasirinkti veiksmą, atitinkantį didžiausią Q-lentelės reikšmę: (kodo blokas 9)
+
+
+Čia γ yra vadinamasis **nuolaidos koeficientas**, nusakantis, kiek turėtumėte teikti pirmenybę dabartiniam apdovanojimui prieš ateities apdovanojimą ir atvirkščiai.
+
+## Mokymosi algoritmas
+
+Atsižvelgiant į aukščiau pateiktą lygtį, dabar galime parašyti pseudo kodą mūsų mokymosi algoritmui:
+
+* Inicializuokite Q-lentelę Q vienodais skaičiais visoms būsenoms ir veiksmams
+* Nustatykite mokymosi greitį α ← 1
+* Kartokite simuliaciją daug kartų
+ 1. Pradėkite atsitiktinėje pozicijoje
+ 1. Kartokite
+ 1. Pasirinkite veiksmą *a* būsenoje *s*
+ 2. Įvykdykite veiksmą pereidami į naują būseną *s'*
+ 3. Jei susiduriame su žaidimo pabaigos sąlyga arba bendras apdovanojimas per mažas - išeikite iš simuliacijos
+ 4. Apskaičiuokite apdovanojimą *r* naujoje būsenoje
+ 5. Atnaujinkite Q-funkciją pagal Belmano lygtį: *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ maxa'Q(s',a'))*
+ 6. *s* ← *s'*
+ 7. Atnaujinkite bendrą apdovanojimą ir sumažinkite α.
+
+## Eksploatacija prieš tyrinėjimą
+
+Aukščiau pateiktame algoritme nenurodėme, kaip tiksliai pasirinkti veiksmą 2.1 žingsnyje. Jei pasirenkame veiksmą atsitiktinai, mes atsitiktinai **tyrinėsime** aplinką, ir greičiausiai dažnai žusime bei aplankysime sritis, į kurias paprastai neeitume. Kitaip galima būtų **eksploatuoti** jau žinomas Q-lentelės reikšmes ir pasirinkti geriausią veiksmą (su didesne Q-lentelės verte) būsenoje *s*. Tačiau tai neleis mums tyrinėti kitų būsenų ir greičiausiai neatrastume optimalaus sprendimo.
+
+Todėl geriausias būdas yra rasti pusiausvyrą tarp tyrinėjimo ir eksploatacijos. Tai galima padaryti pasirinkus veiksmą būsenoje *s* pagal tikimybę, proporcingą reikšmėms Q-lentelėje. Pradžioje, kai Q-lentelės reikšmės visos vienodos, tai bus atsitiktinis pasirinkimas, tačiau mokantis daugiau apie aplinką, tikimybė sekti optimaliu maršrutu padidės, leidžiant agentui kartais rinktis netyrinėtą kelią.
+
+## Python įgyvendinimas
+
+Dabar esame pasirengę įgyvendinti mokymosi algoritmą. Prieš tai mums reikės funkcijos, kuri pavers atsitiktinius skaičius Q-lentelėje į tikimybių vektorių atitinkamiems veiksmams.
+
+1. Sukurkite funkciją `probs()`:
+
+ ```python
+ def probs(v,eps=1e-4):
+ v = v-v.min()+eps
+ v = v/v.sum()
+ return v
+ ```
+
+ Pridėjome kelis `eps` prie pradinio vektoriaus siekiant išvengti dalybos iš 0 pradžioje, kai visi komponentai yra vienodi.
+
+Paleiskite mokymo algoritmą per 5000 bandymų, vadinamų **epochomis**: (kodo blokas 8)
+```python
+ for epoch in range(5000):
+
+ # Pasirinkite pradinį tašką
+ m.random_start()
+
+ # Pradėkite kelionę
+ n=0
+ cum_reward = 0
+ while True:
+ x,y = m.human
+ v = probs(Q[x,y])
+ a = random.choices(list(actions),weights=v)[0]
+ dpos = actions[a]
+ m.move(dpos,check_correctness=False) # leidžiame žaidėjui judėti už lentos ribų, kas baigia epizodą
+ r = reward(m)
+ cum_reward += r
+ if r==end_reward or cum_reward < -1000:
+ lpath.append(n)
+ break
+ alpha = np.exp(-n / 10e5)
+ gamma = 0.5
+ ai = action_idx[a]
+ Q[x,y,ai] = (1 - alpha) * Q[x,y,ai] + alpha * (r + gamma * Q[x+dpos[0], y+dpos[1]].max())
+ n+=1
+```
+
+Po šio algoritmo įvykdymo Q-lentelė turėtų būti atnaujinta reikšmėmis, apibrėžiančiomis skirtingų veiksmų patrauklumą kiekviename žingsnyje. Galime bandyti vizualizuoti Q-lentelę nubrėždami vektorių kiekvienoje ląstelėje, kuris rodys pageidaujamą judėjimo kryptį. Paprastumui vietoj rodyklės galvos nubrėžiame mažą apskritimą.
+
+
+
+## Politikos tikrinimas
+
+Kadangi Q-lentelė pateikia kiekvieno veiksmo "patrauklumą" kiekvienoje būsenoje, gana paprasta ja naudotis efektyviai navigacijai mūsų pasaulyje. Paprasčiausiu atveju galime pasirinkti veiksmą, atitinkantį didžiausią Q-lentelės reikšmę: (kodo blokas 9)
```python
def qpolicy_strict(m):
@@ -198,17 +274,18 @@ def qpolicy_strict(m):
walk(m,qpolicy_strict)
```
-> Jei kelis kartus paleisite aukščiau pateiktą kodą, galite pastebėti, kad kartais jis "užstringa", ir jums reikia paspausti STOP mygtuką užrašinėje, kad jį nutrauktumėte. Taip nutinka, nes gali būti situacijų, kai dvi būsenos "rodo" viena į kitą pagal optimalią Q-reikšmę, tokiu atveju agentas nuolat juda tarp tų būsenų.
+
+> Jei aukščiau pateiktą kodą bandysite kelis kartus, galite pastebėti, kad kartais jis „užstringa“ ir jums tenka paspausti STABDYMO mygtuką užrašuose, kad jį nutrauktumėte. Taip nutinka todėl, kad gali būti situacijų, kai dvi būsenos „rodo“ viena į kitą pagal optimalų Q-reikšmę, ir tokiu atveju agentas be galo judės tarp tų būsenų.
## 🚀Iššūkis
-> **Užduotis 1:** Pakeiskite `walk` funkciją taip, kad kelio ilgis būtų apribotas tam tikru žingsnių skaičiumi (pvz., 100), ir stebėkite, kaip aukščiau pateiktas kodas kartais grąžina šią reikšmę.
+> **Užduotis 1:** Patobulinkite funkciją `walk`, kad apribotumėte maksimalią kelio ilgį tam tikru žingsnių skaičiumi (pavyzdžiui, 100), ir stebėkite, kaip aukščiau pateiktas kodas kartais grąžins šią reikšmę.
-> **Užduotis 2:** Pakeiskite `walk` funkciją taip, kad ji negrįžtų į vietas, kuriose jau buvo. Tai neleis `walk` funkcijai užstrigti cikle, tačiau agentas vis tiek gali "įstrigti" vietoje, iš kurios negali pabėgti.
+> **Užduotis 2:** Patobulinkite funkciją `walk`, kad ji negrįžtų į vietas, kuriose jau yra buvusi anksčiau. Tai apsaugos nuo ciklų `walk` funkcijoje, tačiau agentas vis tiek gali patekti į „įkalinimą“ vietoje, iš kurios negalės pabėgti.
## Navigacija
-Geresnė navigacijos politika būtų ta, kurią naudojome mokymo metu, derinant išnaudojimą ir tyrinėjimą. Pagal šią politiką kiekvienas veiksmas pasirenkamas su tam tikra tikimybe, proporcinga Q-lentelės reikšmėms. Ši strategija vis dar gali lemti, kad agentas grįš į jau ištirtą vietą, tačiau, kaip matote iš žemiau pateikto kodo, ji lemia labai trumpą vidutinį kelią iki norimos vietos (prisiminkite, kad `print_statistics` paleidžia simuliaciją 100 kartų): (kodo blokas 10)
+Geresnė navigacijos politika būtų ta, kurią naudojome mokymosi metu, apjungianti išnaudojimą ir tyrinėjimą. Šioje politikoje mes kiekvieną veiksmą renkamės tikimybiškai, proporcingai vertėms Q-lentelėje. Ši strategija vis tiek gali sukelti, kad agentas sugrįš į jau ištirtą poziciją, bet, kaip matote žemiau pateiktame kode, ji leidžia pasiekti labai trumpą vidutinį kelią iki norimos vietos (atminkite, kad `print_statistics` paleidžia simuliaciją 100 kartų): (kodo bloko 10)
```python
def qpolicy(m):
@@ -220,28 +297,32 @@ def qpolicy(m):
print_statistics(qpolicy)
```
-Paleidus šį kodą, turėtumėte gauti daug mažesnį vidutinį kelio ilgį nei anksčiau, maždaug 3-6 diapazone.
+Paleidus šį kodą, turėtumėte gauti daug mažesnį vidutinį kelio ilgį nei anksčiau, maždaug 3–6 intervale.
## Mokymosi proceso tyrinėjimas
-Kaip jau minėjome, mokymosi procesas yra pusiausvyra tarp tyrinėjimo ir sukauptų žinių apie problemos erdvės struktūrą išnaudojimo. Matėme, kad mokymosi rezultatai (gebėjimas padėti agentui rasti trumpą kelią iki tikslo) pagerėjo, tačiau taip pat įdomu stebėti, kaip vidutinis kelio ilgis keičiasi mokymosi proceso metu:
+Kaip jau minėjome, mokymosi procesas yra pusiausvyra tarp tyrinėjimo ir įgytos žinios panaudojimo apie problemos erdvės struktūrą. Matėme, kad mokymosi rezultatai (gebėjimas padėti agentui rasti trumpą kelią iki tikslo) pagerėjo, tačiau įdomu stebėti, kaip vidutinis kelio ilgis elgiasi mokymosi proceso metu:
+
+
-## Mokymosi apibendrinimas:
+Mokymai gali būti apibendrinti taip:
-- **Vidutinis kelio ilgis didėja.** Iš pradžių matome, kad vidutinis kelio ilgis didėja. Taip tikriausiai yra todėl, kad, kai nieko nežinome apie aplinką, esame linkę įstrigti blogose būsenose, tokiose kaip vanduo ar vilkas. Kai daugiau sužinome ir pradedame naudoti šias žinias, galime ilgiau tyrinėti aplinką, tačiau vis dar nelabai žinome, kur yra obuoliai.
+- **Vidutinis kelio ilgis didėja**. Matome, kad pradžioje vidutinis kelio ilgis didėja. Tai tikriausiai todėl, kad kai apie aplinką nieko nežinome, tikėtina, kad pateksime į blogas būsenas, pvz., vandenį ar vilką. Mokantis daugiau ir pradėjus naudoti šias žinias, galime ilgiau tyrinėti aplinką, tačiau vis dar nepakankamai gerai žinome, kur yra obuoliai.
-- **Kelio ilgis mažėja, kai daugiau išmokstame.** Kai pakankamai išmokstame, agentui tampa lengviau pasiekti tikslą, ir kelio ilgis pradeda mažėti. Tačiau mes vis dar atviri tyrinėjimui, todėl dažnai nukrypstame nuo geriausio kelio ir tyrinėjame naujas galimybes, dėl ko kelias tampa ilgesnis nei optimalus.
+- **Kelio ilgis mažėja, mokantis daugiau**. Kai pakankamai išmokstame, agentui lengviau pasiekti tikslą, ir kelio ilgis pradeda mažėti. Vis dėlto, mes vis dar atviri tyrinėjimui, tad dažnai nukrypstame nuo geriausio kelio ir ieškome naujų variantų, dėl ko kelias tampa ilgesnis nei optimalus.
-- **Ilgis staiga padidėja.** Grafike taip pat pastebime, kad tam tikru momentu ilgis staiga padidėja. Tai rodo proceso stochastiškumą ir tai, kad tam tikru momentu galime "sugadinti" Q-lentelės koeficientus, perrašydami juos naujomis reikšmėmis. Tai idealiai turėtų būti sumažinta mažinant mokymosi greitį (pavyzdžiui, mokymo pabaigoje Q-lentelės reikšmes koreguojame tik nedidele verte).
+- **Ilgis staigiai padidėja**. Šiame grafike taip pat matome, kad tam tikru momentu ilgis staigiai padidėjo. Tai rodo proceso stokastinę prigimtį ir tai, kad tam tikru momentu galime „sugadinti“ Q-lentelės koeficientus perrašydami juos naujomis reikšmėmis. Tai idealiai turėtų būti sumažinta mažinant mokymosi greitį (pavyzdžiui, mokymosi pabaigoje mes koreguojame Q-lentelės reikšmes tik nedideliu dydžiu).
-Apskritai svarbu prisiminti, kad mokymosi proceso sėkmė ir kokybė labai priklauso nuo parametrų, tokių kaip mokymosi greitis, mokymosi greičio mažėjimas ir diskonto faktorius. Šie parametrai dažnai vadinami **hiperparametrais**, kad būtų atskirti nuo **parametrų**, kuriuos optimizuojame mokymo metu (pavyzdžiui, Q-lentelės koeficientai). Geriausių hiperparametrų reikšmių paieškos procesas vadinamas **hiperparametrų optimizavimu**, ir tai yra atskira tema.
+Apskritai svarbu prisiminti, kad sėkmė ir mokymosi proceso kokybė labai priklauso nuo parametrų, tokių kaip mokymosi greitis, jo mažėjimas ir nuolaidos koeficientas. Jie dažnai vadinami **hiperparametrais**, kad būtų atskirti nuo **parametrų**, kuriuos optimizuojame mokymosi metu (pvz., Q-lentelės koeficientai). Geriausių hiperparametrų reikšmių paieškos procesas vadinamas **hiperparametrų optimizavimu** ir nusipelno atskiros temos.
## [Po paskaitos testas](https://ff-quizzes.netlify.app/en/ml/)
-## Užduotis
-[Daugiau realistiškas pasaulis](assignment.md)
+## Užduotis
+[Realiau pasaulyje](assignment.md)
---
-**Atsakomybės apribojimas**:
-Šis dokumentas buvo išverstas naudojant AI vertimo paslaugą [Co-op Translator](https://github.com/Azure/co-op-translator). Nors siekiame tikslumo, prašome atkreipti dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba turėtų būti laikomas autoritetingu šaltiniu. Kritinei informacijai rekomenduojama naudoti profesionalų žmogaus vertimą. Mes neprisiimame atsakomybės už nesusipratimus ar klaidingus interpretavimus, atsiradusius dėl šio vertimo naudojimo.
\ No newline at end of file
+
+**Atsakomybės apribojimas**:
+Šis dokumentas buvo išverstas naudojant dirbtinio intelekto vertimo paslaugą [Co-op Translator](https://github.com/Azure/co-op-translator). Nors siekiame tikslumo, prašome atkreipti dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba laikomas autoritetingu šaltiniu. Svarbiai informacijai rekomenduojama naudoti profesionalų žmogiškąjį vertimą. Mes neatsakome už jokius nesusipratimus ar neteisingą interpretaciją, kilusią naudojantis šiuo vertimu.
+
\ No newline at end of file
diff --git a/translations/lt/9-Real-World/2-Debugging-ML-Models/README.md b/translations/lt/9-Real-World/2-Debugging-ML-Models/README.md
index 53370a55a..39bdbff35 100644
--- a/translations/lt/9-Real-World/2-Debugging-ML-Models/README.md
+++ b/translations/lt/9-Real-World/2-Debugging-ML-Models/README.md
@@ -1,148 +1,179 @@
-# Postscriptas: Modelių derinimas mašininio mokymosi srityje naudojant atsakingos dirbtinio intelekto (AI) prietaisų skydelio komponentus
-
-## [Prieš paskaitą pateikiamas testas](https://ff-quizzes.netlify.app/en/ml/)
+# Priedas: Modelio derinimas mašininio mokymosi srityje naudojant Atsakingos AI skydelio komponentus
+
+## [Prieš paskaitą testas](https://ff-quizzes.netlify.app/en/ml/)
+
## Įvadas
-Mašininis mokymasis daro įtaką mūsų kasdieniam gyvenimui. Dirbtinis intelektas (AI) vis dažniau naudojamas svarbiose sistemose, kurios veikia tiek mus kaip individus, tiek mūsų visuomenę – nuo sveikatos priežiūros, finansų, švietimo iki įdarbinimo. Pavyzdžiui, sistemos ir modeliai dalyvauja kasdieniuose sprendimų priėmimo procesuose, tokiuose kaip sveikatos priežiūros diagnozės ar sukčiavimo aptikimas. Dėl to AI pažanga ir spartus jos pritaikymas susiduria su besikeičiančiais visuomenės lūkesčiais ir augančiu reguliavimu. Nuolat matome sritis, kuriose AI sistemos neatitinka lūkesčių, atskleidžia naujus iššūkius, o vyriausybės pradeda reguliuoti AI sprendimus. Todėl svarbu analizuoti šiuos modelius, kad jie užtikrintų teisingus, patikimus, įtraukius, skaidrius ir atsakingus rezultatus visiems.
+Mašininis mokymasis veikia mūsų kasdienį gyvenimą. Dirbtinis intelektas įsilieja į kai kurias svarbiausias sistemas, kurios veikia mus kaip individų ir kaip visuomenę, nuo sveikatos priežiūros, finansų, švietimo iki užimtumo. Pavyzdžiui, sistemos ir modeliai dalyvauja kasdieniniame sprendimų priėmime, tokiose užduotyse kaip sveikatos diagnostika ar sukčiavimo aptikimas. Todėl dirbtinio intelekto pažanga kartu su sparčiu jos diegimu susiduria su kintančiomis visuomenės lūkesčiais ir augančia reglamentacija. Nuolat matome sritis, kuriose AI sistemos nesugeba patenkinti lūkesčius; jos atskleidžia naujus iššūkius; o vyriausybės pradeda reglamentuoti AI sprendimus. Todėl svarbu, kad šie modeliai būtų analizuojami siekiant pateikti sąžiningus, patikimus, įtraukius, skaidrius ir atsakingus rezultatus visiems.
-Šioje mokymo programoje nagrinėsime praktinius įrankius, kurie gali būti naudojami siekiant įvertinti, ar modelis turi atsakingo AI problemų. Tradiciniai mašininio mokymosi derinimo metodai dažniausiai grindžiami kiekybiniais skaičiavimais, tokiais kaip apibendrintas tikslumas ar vidutinė klaidų nuostolių vertė. Įsivaizduokite, kas gali nutikti, jei duomenys, kuriuos naudojate šiems modeliams kurti, neturi tam tikrų demografinių duomenų, tokių kaip rasė, lytis, politinės pažiūros, religija, arba jei šie demografiniai duomenys yra neproporcingai atstovaujami. O kas, jei modelio rezultatai interpretuojami taip, kad būtų palankūs tam tikrai demografinei grupei? Tai gali sukelti per didelį arba nepakankamą jautrių savybių grupių atstovavimą, dėl kurio modelis gali tapti neteisingas, neįtraukus ar nepatikimas. Kitas veiksnys yra tas, kad mašininio mokymosi modeliai laikomi „juodosiomis dėžėmis“, todėl sunku suprasti ir paaiškinti, kas lemia modelio prognozes. Visa tai yra iššūkiai, su kuriais susiduria duomenų mokslininkai ir AI kūrėjai, kai jie neturi tinkamų įrankių modelio teisingumui ar patikimumui įvertinti ir derinti.
+Šiame mokymo plane apžvelgsime praktinius įrankius, kuriuos galima naudoti norint įvertinti, ar modelis turi atsakingo AI problemas. Tradicinės mašininio mokymosi derinimo technikos dažniausiai yra grindžiamos kiekybiniais skaičiavimais, tokiais kaip apibendrintas tikslumas arba vidutinė klaidos nuostolio reikšmė. Įsivaizduokite, kas gali nutikti, jei duomenys, kuriais naudojatės kurdami modelius, neapima tam tikrų demografinių grupių, pavyzdžiui, rasės, lyties, politinių pažiūrų ar religijos, arba neproporcingai atstovauja tokias grupes. O kas jei modelio rezultatai yra interpretuojami taip, kad būtų palankūs kai kuriai demografiniai grupei? Tai gali sukelti pernelyg didelį arba nepakankamą šių jautrių požymių grupių atstovavimą, dėl ko kyla sąžiningumo, įtraukimo ar patikimumo problemos. Kitas faktorius yra tas, kad mašininio mokymosi modeliai dažnai laikomi juodosiomis dėžėmis, dėl ko sunku suprasti ir paaiškinti, kas lemia modelio prognozę. Visos šios problemos kyla duomenų mokslininkams ir AI kūrėjams, kai jie neturi tinkamų įrankių modelio derinimui ir sąžiningumo ar patikimumo vertinimui.
-Šioje pamokoje sužinosite, kaip derinti savo modelius naudojant:
+Šioje pamokoje sužinosite apie modelių derinimą naudojant:
-- **Klaidų analizę**: nustatyti, kur jūsų duomenų pasiskirstyme modelis turi didelius klaidų rodiklius.
-- **Modelio apžvalgą**: atlikti lyginamąją analizę tarp skirtingų duomenų grupių, kad būtų galima aptikti modelio veikimo rodiklių skirtumus.
-- **Duomenų analizę**: ištirti, kur gali būti per didelis arba nepakankamas duomenų atstovavimas, kuris gali iškreipti modelį, kad jis būtų palankus vienai demografinei grupei, o ne kitai.
-- **Savybių svarbą**: suprasti, kurios savybės lemia modelio prognozes globaliu ar lokaliu lygmeniu.
+- **Klaidų analizę**: nustatyti, kur jūsų duomenų pasiskirstyme modelis turi didelį klaidų dažnį.
+- **Modelio apžvalgą**: atlikti palyginamąją analizę tarp skirtingų duomenų kohortų, kad būtų atrastos modelio našumo metrikų skirtumai.
+- **Duomenų analizę**: tirti, kur gali būti pernelyg daug arba per mažai tam tikrų duomenų, kas gali iškreipti modelį palankiai nuteikiant prieš vieną demografinę grupę kitos sąskaita.
+- **Požymių svarbą**: suprasti, kokie požymiai lemia modelio prognozes globaliu ar lokaliu lygiu.
-## Privalomos žinios
+## Reikalavimai
-Prieš pradedant, rekomenduojame peržiūrėti [Atsakingo AI įrankius kūrėjams](https://www.microsoft.com/ai/ai-lab-responsible-ai-dashboard).
+Prieš tęsiant, peržiūrėkite [Atsakingo AI įrankiai kūrėjams](https://www.microsoft.com/ai/ai-lab-responsible-ai-dashboard)
-> 
+> 
## Klaidų analizė
-Tradiciniai modelio veikimo rodikliai, naudojami tikslumui matuoti, dažniausiai grindžiami teisingų ir neteisingų prognozių skaičiavimais. Pavyzdžiui, nustatyti, kad modelis yra tikslus 89 % atvejų su klaidų nuostoliu 0,001, gali būti laikoma geru veikimu. Tačiau klaidos dažnai nėra tolygiai pasiskirsčiusios jūsų pagrindiniuose duomenyse. Galite gauti 89 % modelio tikslumo įvertinimą, tačiau pastebėti, kad tam tikrose duomenų srityse modelis nesėkmingas 42 % atvejų. Šių nesėkmių pasekmės tam tikrose duomenų grupėse gali sukelti teisingumo ar patikimumo problemų. Svarbu suprasti, kuriose srityse modelis veikia gerai, o kuriose – ne. Duomenų sritys, kuriose modelis turi daug netikslumų, gali būti svarbios demografinės grupės.
+Tradicinės modelio darbo rodiklių metrikos, matuojant tikslumą, dažniausiai grindžiamos teisingų ir neteisingų prognozių skaičiavimais. Pavyzdžiui, modelio tikslumas 89 % su klaidos nuostoliu 0,001 gali būti vertinamas kaip geras rezultatas. Klaidos dažnai nėra vienodai pasiskirsčiusios duomenų rinkinyje. Galite turėti 89 % tikslumą, bet sužinoti, kad tam tikrose duomenų srityse modelis nepavyksta net 42 % atvejų. Tokie klaidų pasiskirstymo modeliai tam tikrose duomenų grupėse gali sukelti sąžiningumo arba patikimumo problemas. Svarbu suprasti sritis, kuriose modelis veikia gerai arba blogai. Duomenų sritys, kur modelis turi daug netikslumų, gali būti reikšminga duomenų demografinė grupė.
-
+
-Klaidų analizės komponentas RAI prietaisų skydelyje iliustruoja, kaip modelio nesėkmės pasiskirsto įvairiose grupėse, naudodamas medžio vizualizaciją. Tai naudinga nustatant savybes ar sritis, kuriose jūsų duomenyse yra didelis klaidų rodiklis. Matydami, iš kur kyla dauguma modelio netikslumų, galite pradėti tirti pagrindinę priežastį. Taip pat galite kurti duomenų grupes analizei atlikti. Šios duomenų grupės padeda derinimo procese nustatyti, kodėl modelis veikia gerai vienoje grupėje, bet daro klaidas kitoje.
+Klaidų analizės komponentas Atsakingo AI skydelyje rodo, kaip modelio klaidos pasiskirsčiusios tarp įvairių kohortų medžio vizualizacijoje. Tai naudinga nustatant požymius ar sritis, kuriose duomenų rinkinyje yra didelis klaidų dažnis. Matydami, iš kur daugiausia kyla netikslumai, galite pradėti tirti pagrindines priežastis. Taip pat galite sukurti duomenų kohortas analizės atlikimui. Šios kohortos padeda derinimo procese suprasti, kodėl modelio našumas yra geras vienoje kohortoje, bet klaidingas kitoje.
-
+
-Medžio žemėlapio vizualiniai indikatoriai padeda greičiau nustatyti problemų sritis. Pavyzdžiui, kuo tamsesnė raudona spalva medžio mazge, tuo didesnis klaidų rodiklis.
+Vizualiniai indikatoriai medžio žemėlapyje padeda greičiau surasti problemines sritis. Pavyzdžiui, kuo tamsesnė raudonos spalvos atspalvio medžio šaka, tuo didesnis klaidų dažnumas.
-Šilumos žemėlapis yra dar viena vizualizacijos funkcija, kurią naudotojai gali naudoti klaidų rodikliui tirti, naudodami vieną ar dvi savybes, kad nustatytų modelio klaidų priežastis visame duomenų rinkinyje ar grupėse.
+Karštinių žemėlapis yra dar viena vizualizavimo galimybė, kuri leidžia vartotojams tirti klaidų dažnį, naudojant vieną arba du požymius ir taip rasti modelio klaidų priežastis visame duomenų rinkinyje ar kohortose.
-
+
-Naudokite klaidų analizę, kai reikia:
+Naudokite klaidų analizę, kai jums reikia:
-* Giliai suprasti, kaip modelio nesėkmės pasiskirsto duomenų rinkinyje ir keliose įvesties bei savybių dimensijose.
-* Išskaidyti apibendrintus veikimo rodiklius, kad automatiškai atrastumėte klaidingas grupes ir informuotumėte apie tikslines problemų sprendimo priemones.
+* Giliai suprasti, kaip modelio klaidos pasiskirsčiusios duomenų rinkinyje ir tarp kelių įvesties bei požymių dimensijų.
+* Išskaidyti bendrą našumo metriką, kad automatiškai būtų atrastos klaidų turinčios kohortos ir būtų galima planuoti tikslingas pataisymo priemones.
## Modelio apžvalga
-Mašininio mokymosi modelio veikimo vertinimas reikalauja holistinio jo elgsenos supratimo. Tai galima pasiekti peržiūrint daugiau nei vieną rodiklį, pvz., klaidų rodiklį, tikslumą, atšaukimą, tikslumą ar MAE (vidutinę absoliučią klaidą), kad būtų galima nustatyti veikimo rodiklių skirtumus. Vienas veikimo rodiklis gali atrodyti puikiai, tačiau netikslumai gali išryškėti kitame rodiklyje. Be to, rodiklių palyginimas visame duomenų rinkinyje ar grupėse padeda atskleisti, kur modelis veikia gerai, o kur – ne. Tai ypač svarbu norint pamatyti modelio veikimą tarp jautrių ir nejautrių savybių (pvz., paciento rasės, lyties ar amžiaus), kad būtų galima atskleisti galimą modelio neteisingumą. Pavyzdžiui, atradus, kad modelis yra klaidingesnis grupėje, kurioje yra jautrių savybių, galima atskleisti galimą modelio neteisingumą.
+Norint įvertinti mašininio mokymosi modelio našumą, reikia holistiškai suprasti jo elgseną. Tai galima pasiekti peržiūrint ne tik vieną metriką, pavyzdžiui, klaidų dažnį, tikslumą, atgaminimą, tikslumą ar vidutinę absoliučią klaidą (MAE), ir ieškant skirtumų tarp našumo metrikoje. Viena metrika gali atrodyti puikiai, bet klaidos gali būti atskleistos kitoje. Be to, lyginant šias metrikas tarp viso duomenų rinkinio ar kohortų, galima pamatyti, kur modelis veikia gerai, o kur ne. Tai ypač svarbu matant modelio našumą tarp jautrių ir nejautrių požymių (pvz., paciento rasės, lyties ar amžiaus), kad būtų atskleista galimai nelygi modelio veikla. Pavyzdžiui, jei modelis klaidingesnis kohortoje, kur yra jautrūs požymiai, tai gali atskleisti neteisingumą.
-Modelio apžvalgos komponentas RAI prietaisų skydelyje padeda ne tik analizuoti duomenų atstovavimo veikimo rodiklius grupėje, bet ir suteikia naudotojams galimybę palyginti modelio elgseną skirtingose grupėse.
+Atsakingo AI skydelio Modelio apžvalgos komponentas padeda ne tik analizuoti našumo metrikas pagal duomenų kohortas, bet ir suteikia vartotojams galimybę palyginti modelio elgseną tarp skirtingų kohortų.
-
+
-Komponento savybių pagrindu atliekama analizė leidžia naudotojams susiaurinti duomenų pogrupius tam tikroje savybėje, kad būtų galima nustatyti anomalijas detaliu lygmeniu. Pavyzdžiui, prietaisų skydelyje yra įmontuotas intelektas, kuris automatiškai generuoja grupes pagal naudotojo pasirinktą savybę (pvz., *"time_in_hospital < 3"* arba *"time_in_hospital >= 7"*). Tai leidžia naudotojui atskirti tam tikrą savybę nuo didesnės duomenų grupės, kad pamatytų, ar ji yra pagrindinis modelio klaidingų rezultatų veiksnys.
+Komponento funkcija, leidžianti analizuoti rūšiuojant pagal požymius, leidžia vartotojams susiaurinti duomenų pogrupius pagal tam tikrą požymį ir nustatyti anomalijas detaliau. Pavyzdžiui, skydelyje yra integruotas įdirbis, automatiškai generuojantis kohortas pagal vartotojo pasirinktą požymį (pvz., *"time_in_hospital < 3"* arba *"time_in_hospital >= 7"*). Tai leidžia atskirti tam tikrą požymį iš didesnės grupės ir pažiūrėti, ar jis yra lemiamas veiksnys modelio klaidų prognozėse.
-
+
-Modelio apžvalgos komponentas palaiko dviejų klasių skirtumų rodiklius:
+Modelio apžvalgos komponentas palaiko dvi skirtumų metrikų klases:
-**Skirtumai modelio veikime**: Šie rodikliai apskaičiuoja skirtumus (skirtumą) pasirinktų veikimo rodiklių reikšmėse tarp duomenų pogrupių. Štai keli pavyzdžiai:
+**Modelio našumo skirtumu**: Ši metrikų grupė apskaičiuoja skirtumus (nuokrypius) pasirinkto našumo rodiklio reikšmėse tarp duomenų pogrupių. Štai keletas pavyzdžių:
-* Tikslumo rodiklio skirtumas
-* Klaidų rodiklio skirtumas
* Tikslumo skirtumas
-* Atšaukimo skirtumas
+* Klaidos dažnio skirtumas
+* Tikslumo (precision) skirtumas
+* Atgaminimo (recall) skirtumas
* Vidutinės absoliučios klaidos (MAE) skirtumas
-**Skirtumai pasirinkimo rodiklyje**: Šis rodiklis apima skirtumą pasirinkimo rodiklyje (palankioje prognozėje) tarp pogrupių. Pavyzdžiui, tai gali būti paskolų patvirtinimo rodiklių skirtumas. Pasirinkimo rodiklis reiškia duomenų taškų dalį kiekvienoje klasėje, klasifikuotą kaip 1 (dvejetainėje klasifikacijoje), arba prognozių reikšmių pasiskirstymą (regresijoje).
+**Pasirinkimo dažnio skirtumas**: Ši metrika nurodo skirtumą pasirinkimo dažnyje (palankios prognozės) tarp pogrupių. Pavyzdys būtų skirtumas patvirtinant paskolas. Pasirinkimo dažnis reiškia duomenų taškų, priskirtų klasei 1 (dvigubos klasifikacijos atveju) arba paskirstytų pagal prognozes (regresijoje), dalį kiekvienoje klasėje.
## Duomenų analizė
-> „Jei pakankamai ilgai kankinsite duomenis, jie prisipažins bet ką“ – Ronald Coase
+> „Jei ilgai kankinsi duomenis, jie prisipažins bet kam“ – Ronaldas Coase
+
+Ši frazė skamba radikaliai, bet tiesa yra ta, kad duomenis galima manipuliuoti, siekiant paremti bet kokias išvadas. Kartais tokia manipuliacija gali būti netyčinė. Kaip žmonės, mes visi turime savo šališkumų, ir dažnai sunku sąmoningai pastebėti, kai įtraukiame šališkumą į duomenis. Užtikrinti sąžiningumą AI ir mašininio mokymosi srityse išlieka sudėtinga užduotis.
-Šis teiginys skamba ekstremaliai, tačiau tiesa, kad duomenis galima manipuliuoti, kad jie palaikytų bet kokią išvadą. Tokia manipuliacija kartais gali įvykti netyčia. Kaip žmonės, mes visi turime šališkumų, ir dažnai sunku sąmoningai suvokti, kada įvedate šališkumą į duomenis. Užtikrinti teisingumą AI ir mašininio mokymosi srityje išlieka sudėtingas iššūkis.
+Duomenys yra didelė aklavietė tradicinėms modelio darbo metrikoms. Galite turėti aukštus tikslumo rodiklius, bet tai ne visada atspindi gilesnį duomenų rinkinio šališkumą. Pavyzdžiui, jei darbuotojų duomenų rinkinyje 27 % vyrų užima vykdomąsias pareigas, o 73 % moterų yra toje pačioje pozicijoje, dirbtinio intelekto modelis, mokytas pagal šiuos duomenis, gali pagrinde taikyti savo skelbimus vyrams dėl aukštesnių pareigų. Ši duomenų disbalanso problema iškreipia modelio prognozes, leidžiant joms būti palankia vienam lyčiui. Tai atskleidžia sąžiningumo problemą, kai AI modelyje egzistuoja lyties šališkumas.
-Duomenys yra didelė akloji zona tradiciniams modelio veikimo rodikliams. Galite turėti aukštus tikslumo rodiklius, tačiau tai ne visada atspindi pagrindinį duomenų šališkumą, kuris gali būti jūsų duomenų rinkinyje. Pavyzdžiui, jei darbuotojų duomenų rinkinyje 27 % moterų užima vadovaujančias pareigas įmonėje, o 73 % vyrų yra tame pačiame lygyje, darbo skelbimų AI modelis, apmokytas pagal šiuos duomenis, gali daugiausia taikyti vyrų auditorijai aukšto lygio darbo pozicijoms. Šis duomenų disbalansas iškreipė modelio prognozę, kad ji būtų palanki vienai lyčiai. Tai atskleidžia teisingumo problemą, kai AI modelis turi lyčių šališkumą.
+Duomenų analizės komponentas Atsakingo AI skydelyje padeda identifikuoti sritis, kuriose duomenų rinkinyje yra per didelis arba per mažas tam tikrų grupių atstovavimas. Tai leidžia vartotojams diagnozuoti klaidų ir sąžiningumo problemas, kilusias dėl duomenų disbalanso arba tam tikrų grupių trūkumo. Komponentas suteikia galimybę vizualizuoti duomenų rinkinius pagal prognozuotus ir faktinius rezultatus, klaidų grupes ir konkrečius požymius. Kartais atradus nepakankamai atstovaujamą grupę, galima suprasti, kad modelis blogai mokosi, stebint didelį netikslumų kiekį. Modelis, turintis duomenų šališkumą, yra ne tik sąžiningumo problema, bet ir rodo, kad modelis nėra įtraukiantis ar patikimas.
-Duomenų analizės komponentas RAI prietaisų skydelyje padeda nustatyti sritis, kuriose duomenų rinkinyje yra per didelis arba nepakankamas atstovavimas. Jis padeda naudotojams diagnozuoti klaidų ir teisingumo problemų, atsirandančių dėl duomenų disbalanso ar tam tikros duomenų grupės atstovavimo trūkumo, pagrindines priežastis. Tai suteikia naudotojams galimybę vizualizuoti duomenų rinkinius pagal prognozuojamus ir faktinius rezultatus, klaidų grupes ir specifines savybes. Kartais atradus nepakankamai atstovaujamą duomenų grupę taip pat galima pastebėti, kad modelis nesimoko tinkamai, todėl yra didelis netikslumas. Modelis, turintis duomenų šališkumą, yra ne tik teisingumo problema, bet ir rodo, kad modelis nėra įtraukus ar patikimas.
+
-
Naudokite duomenų analizę, kai reikia:
-* Tyrinėti savo duomenų rinkinio statistiką, pasirenkant skirtingus filtrus, kad suskaidytumėte duomenis į skirtingas dimensijas (dar vadinamas grupėmis).
-* Suprasti savo duomenų rinkinio pasiskirstymą skirtingose grupėse ir savybių grupėse.
-* Nustatyti, ar jūsų išvados, susijusios su teisingumu, klaidų analize ir priežastingumu (gautos iš kitų prietaisų skydelio komponentų), yra jūsų duomenų rinkinio pasiskirstymo rezultatas.
-* Nuspręsti, kuriose srityse rinkti daugiau duomenų, kad būtų sumažintos klaidos, atsirandančios dėl atstovavimo problemų, žymų triukšmo, savybių triukšmo, žymų šališkumo ir panašių veiksnių.
+* Tirti duomenų rinkinio statistiką, pasirenkant skirtingus filtrus, kad jūsų duomenys būtų suskirstyti į skirtingas dimensijas (dar vadinamas kohortomis).
+* Suprasti duomenų paskirstymą skirtingose kohortose ir požymių grupėse.
+* Nustatyti, ar jūsų išvados apie sąžiningumą, klaidų analizę ir priežastingumą (gautos iš kitų skydelio komponentų) yra duomenų paskirstymo rezultatas.
+* Nuspręsti, kuriose srityse reikia rinkti daugiau duomenų, kad būtų sumažintos klaidos, kylančios dėl atstovavimo problemų, žymėjimo triukšmo, požymių triukšmo, žymėjimo šališkumo ir panašių veiksnių.
-## Modelio interpretacija
+## Modelio aiškinamumas
-Mašininio mokymosi modeliai dažnai laikomi „juodosiomis dėžėmis“. Suprasti, kurios pagrindinės duomenų savybės lemia modelio prognozę, gali būti sudėtinga. Svarbu užtikrinti skaidrumą, kodėl modelis priima tam tikrą prognozę. Pavyzdžiui, jei AI sistema prognozuoja, kad diabetu sergantis pacientas rizikuoja būti pakartotinai hospitalizuotas per mažiau nei 30 dienų, ji turėtų pateikti duomenis, kurie pagrindžia šią prognozę. Turint tokius duomenų rodiklius, atsiranda skaidrumas, kuris padeda gydytojams ar ligoninėms priimti gerai pagrįstus sprendimus. Be to, galimybė paaiškinti, kodėl modelis priėmė tam tikrą prognozę konkrečiam pacientui, leidžia užtikrinti atitiktį sveikatos reguliavimams. Kai naudojate mašininio mokymosi modelius, kurie daro įtaką žmonių gyvenimams, būtina suprasti ir paaiškinti, kas lemia modelio elgseną. Modelio paaiškinamumas ir interpretacija padeda atsakyti į klausimus tokiose situacijose kaip:
+Mašininio mokymosi modeliai dažnai laikomi juodosiomis dėžėmis. Sunku suprasti, kokie svarbiausi duomenų požymiai lemia modelio prognozę. Svarbu užtikrinti skaidrumą, kodėl modelis daro tam tikrą prognozę. Pvz., jei AI sistema prognozuoja, kad diabetu sergantis pacientas bus vėl priimtas į ligoninę per mažiau nei 30 dienų, ji turi pateikti palaikomus duomenis, kurie lėmė šią prognozę. Turint tokius duomenų indikatorius, skaidrumas padeda klinikams ar ligoninėms priimti gerai informuotus sprendimus. Be to, galimybė paaiškinti, kodėl modelis pateikė prognozę konkrečiam pacientui, užtikrina atsakomybę pagal sveikatos reguliavimą. Naudojant mašininio mokymosi modelius žmonių gyvenime, itin svarbu suprasti ir paaiškinti, kas įtakoja modelio elgseną. Modelio paaiškinamumas ir aiškinamumas padeda atsakyti į klausimus tokiose situacijose kaip:
-* Modelio derinimas: Kodėl mano modelis padarė šią klaidą? Kaip galiu pagerinti savo modelį?
-* Žmogaus ir AI bendradarbiavimas: Kaip galiu suprasti ir pasitikėti modelio sprendimais?
-* Reguliavimo atitiktis: Ar mano modelis atitinka teisės aktų reikalavimus?
+* Modelio derinimas: kodėl mano modelis padarė šią klaidą? Kaip galiu patobulinti modelį?
+* Žmogaus ir AI bendradarbiavimas: kaip galiu suprasti ir pasitikėti modelio sprendimais?
+* Reguliacinis atitikimas: ar modelis atitinka teisės reikalavimus?
-Savybių svarbos komponentas RAI prietaisų skydelyje padeda derinti ir gauti išsamų supratimą apie tai, kaip modelis priima prognozes. Tai taip pat naudingas įrankis mašininio mokymosi specialistams ir sprendimų priėmėjams, norint paaiškinti ir pateikti įrodymus apie savybes, kurios daro įtaką modelio elgsenai, siekiant užtikrinti reguliavimo atitiktį. Naudotojai gali tyrinėti tiek globalius, tiek lokalius paaiškinimus, kad patvirtintų, kurios savybės lemia modelio prognozę. Globalūs paaiškinimai pateikia pagrindines savybes, kurios paveikė bendrą modelio prognozę. Lokalieji paaiškinimai parodo, kurios savybės lėmė modelio prognozę konkrečiu atveju. Galimybė įvertinti lokalius paaiškinimus taip pat naudinga derinant ar audituojant konkretų atvejį, siekiant geriau suprasti ir interpretuoti, kodėl modelis priėmė tikslią ar
-- **Per didelė arba per maža reprezentacija**. Idėja yra ta, kad tam tikra grupė nėra matoma tam tikroje profesijoje, o bet kokia paslauga ar funkcija, kuri toliau skatina tokį reiškinį, prisideda prie žalos.
+Atsakingo AI skydelio Požymių svarbos komponentas padeda derinti ir išsamiai suprasti, kaip modelis priima sprendimus. Tai taip pat naudinga mašininio mokymosi specialistams ir sprendimų priėmėjams, siekiant paaiškinti ir pateikti įrodymus, kokie požymiai veikia modelio elgseną dėl reguliavimo atitikimo. Toliau vartotojai gali tirti tiek globalius, tiek lokalius paaiškinimus, kad patvirtintų, kokie požymiai lemia modelio prognozę. Globalūs paaiškinimai pateikia svarbiausių požymių, kurie turėjo poveikį modeliui apskritai, sąrašą. Lokalieji paaiškinimai rodo, kurie požymiai nulėmė modelio prognozę konkrečiam atvejui. Lokaliųjų paaiškinimų vertinimas taip pat naudingas derinant ar tikrinant specifinį atvejį, siekiant geriau suprasti ir paaiškinti, kodėl modelis padarė tikslią ar netikslią prognozę.
-### Azure RAI prietaisų skydelis
+
-[Azure RAI prietaisų skydelis](https://learn.microsoft.com/en-us/azure/machine-learning/concept-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) yra sukurtas remiantis atvirojo kodo įrankiais, kuriuos sukūrė pirmaujančios akademinės institucijos ir organizacijos, įskaitant Microsoft. Šie įrankiai yra labai naudingi duomenų mokslininkams ir AI kūrėjams, siekiant geriau suprasti modelio elgseną, aptikti ir sumažinti nepageidaujamus AI modelių aspektus.
+* Globalūs paaiškinimai: pavyzdžiui, kokie požymiai veikia bendrą diabeto ligoninės pakartotinio priėmimo modelio elgseną?
+* Lokalieji paaiškinimai: pavyzdžiui, kodėl diabetu sergantis pacientas, vyresnis nei 60 m., turintis ankstesnių hospitalizacijų, buvo prognozuotas būti arba nebūti priimtas vėl per 30 dienų?
-- Sužinokite, kaip naudoti skirtingus komponentus, peržiūrėdami RAI prietaisų skydelio [dokumentaciją.](https://learn.microsoft.com/en-us/azure/machine-learning/how-to-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu)
+Derinant modelio našumą skirtingose kohortose, Požymių svarbos komponentas rodo, kokį poveikį požymis turi tarp kohortų. Tai padeda atskleisti anomalijas, lyginant požymių įtaką modelio klaidingoms prognozėms. Komponentas gali parodyti, kurios požymių reikšmės teigiamai arba neigiamai paveikė modelio rezultatą. Pavyzdžiui, jei modelis padarė netikslią prognozę, komponentas leidžia gilintis ir nustatyti, kurie požymiai ar požymių reikšmės nulėmė prognozę. Toks detalus lygis naudingas ne tik derinimui, bet ir skaidrumui bei atsakomybės užtikrinimui auditavimo metu. Galiausiai, komponentas gali padėti atpažinti sąžiningumo problemas. Pvz., jei jautrus požymis, kaip etninė kilmė ar lytis, yra labai svarbus modelio prognozei, tai gali būti rasinės arba lyties šališkumo ženklas modelyje.
-- Peržiūrėkite keletą RAI prietaisų skydelio [pavyzdinių užrašų knygelių](https://github.com/Azure/RAI-vNext-Preview/tree/main/examples/notebooks), skirtų atsakingesnių AI scenarijų derinimui Azure Machine Learning aplinkoje.
+
----
-## 🚀 Iššūkis
+Naudokite aiškinamumą, kai jums reikia:
+
+* Nustatyti, kiek patikimos jūsų AI sistemos prognozės, suprantant, kurie požymiai yra svarbiausi prognozėms.
+* Pradėti modelio derinimą, pirmiausia jį suprantant ir nustatant, ar modelis naudoja sveikus požymius, ar tik klaidingus koreliacijų ryšius.
+* Atpažinti galimus neteisingumo šaltinius, suprantant, ar modelis savo prognozes grindžia jautriais požymiais ar tais, kurie labai susiję su jais.
+* Stiprinti vartotojų pasitikėjimą modelio sprendimais, generuojant lokalius paaiškinimus, kurie iliustruoja jų rezultatus.
+* Atlikti reguliavimo auditą AI sistemai, kad būtų patvirtinti modeliai ir stebimas modelio sprendimų poveikis žmonėms.
+
+## Išvados
-Kad statistiniai ar duomenų šališkumai nebūtų įtraukti nuo pat pradžių, turėtume:
+Visi Atsakingo AI skydelio komponentai yra praktiški įrankiai, padedantys kurti mašininio mokymosi modelius, kurie yra mažiau žalingi ir patikimesni visuomenei. Tai gerina žmogaus teisių apsaugą nuo grėsmių; diskriminacijos ar tam tikrų grupių pašalinimo iš gyvenimo galimybių; taip pat fizinės ar psichologinės žalos rizikos mažinimą. Tai taip pat leidžia kurti pasitikėjimą modelio sprendimais generuojant lokalius paaiškinimus, kurie iliustruoja jų rezultatus. Kai kurios galimos žalos gali būti klasifikuojamos kaip:
-- užtikrinti, kad sistemų kūrime dalyvautų žmonės iš įvairių aplinkybių ir perspektyvų
-- investuoti į duomenų rinkinius, kurie atspindi mūsų visuomenės įvairovę
-- kurti geresnius metodus šališkumui aptikti ir ištaisyti, kai jis pasireiškia
+- **Paskirstymas**, pavyzdžiui, kai viena lytis ar etninė grupė yra palankesnė už kitą.
+- **Paslaugos kokybė**. Jei mokote duomenis vienai konkrečiai situacijai, bet realybė yra kur kas sudėtingesnė, tai lemia prastą paslaugos kokybę.
+- **Stereotipizavimas**. Susiejiant tam tikrą grupę su iš anksto priskirtais atributais.
-Pagalvokite apie realaus gyvenimo scenarijus, kur modelių kūrime ir naudojime akivaizdus neteisingumas. Ką dar turėtume apsvarstyti?
+- **Niekolinimas**. Neteisingai kritikuoti ir pažymėti ką nors ar ką nors.
+- **Perdėta arba nepakankama atstovavimas**. Idėja yra ta, kad tam tikros grupės tam tikroje profesijoje nematoma, ir bet koks paslaugų ar funkcijų skatinimas, kuris tai palaiko, prisideda prie žalos.
+
+### Azure RAI informacijos suvestinė
+
+[Azure RAI informacijos suvestinė](https://learn.microsoft.com/en-us/azure/machine-learning/concept-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) sukurta naudojant atviro kodo įrankius, parengtus pirmaujančių akademinių institucijų ir organizacijų, įskaitant Microsoft, kurie yra svarbūs duomenų mokslininkams ir DI kūrėjams geriau suprasti modelio elgseną, atrasti ir sumažinti nepageidaujamas problemas DI modeliuose.
+
+- Sužinokite, kaip naudotis skirtingais komponentais, peržiūrėdami RAI informacijos suvestinės [dokumentaciją.](https://learn.microsoft.com/en-us/azure/machine-learning/how-to-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu)
+
+- Peržiūrėkite kai kuriuos RAI informacijos suvestinės [pavyzdinius užrašų knygeles](https://github.com/Azure/RAI-vNext-Preview/tree/main/examples/notebooks), skirtus atsakingesnio DI scenarijų derinimui Azure Machine Learning aplinkoje.
+
+---
+## 🚀 Iššūkis
+
+Kad būtų išvengta statistinių ar duomenų šališkumų atsiradimo iš esmės, turėtume:
-## [Po paskaitos testas](https://ff-quizzes.netlify.app/en/ml/)
-## Peržiūra ir savarankiškas mokymasis
+- turėti skirtingų patirčių ir požiūrių įvairovę sistemų kūrime dirbančių žmonių tarpe
+- investuoti į duomenų rinkinius, atspindinčius mūsų visuomenės įvairovę
+- tobulinti geresnius metodus, skirtus šališkumui aptikti ir taisyti, kai jis pasireiškia
-Šioje pamokoje sužinojote apie praktinius įrankius, kaip įtraukti atsakingą AI į mašininį mokymąsi.
+Pagalvokite apie realius scenarijus, kur neteisingumas yra akivaizdus modelių kūrime ir naudojime. Ką dar turėtume apsvarstyti?
-Peržiūrėkite šį seminarą, kad giliau pasinertumėte į temas:
+## [Po paskaitos viktorina](https://ff-quizzes.netlify.app/en/ml/)
+## Peržiūra ir savarankiškas mokymasis
+
+Šioje pamokoje išmokote kai kurių praktinių atsakingo DI įrankių taikymo mašininio mokymosi srityje.
-- Atsakingo AI prietaisų skydelis: Vieno langelio principas RAI praktiniam įgyvendinimui, Besmira Nushi ir Mehrnoosh Sameki
+Peržiūrėkite šį seminarą, kad giliau įsigilintumėte į temas:
-[](https://www.youtube.com/watch?v=f1oaDNl3djg "Atsakingo AI prietaisų skydelis: Vieno langelio principas RAI praktiniam įgyvendinimui")
+- Atsakingo DI informacijos suvestinė: Viena vieta, skirta atsakingo DI pritaikymui praktikoje, pristato Besmira Nushi ir Mehrnoosh Sameki
-> 🎥 Spustelėkite aukščiau esančią nuotrauką, kad peržiūrėtumėte vaizdo įrašą: Atsakingo AI prietaisų skydelis: Vieno langelio principas RAI praktiniam įgyvendinimui, Besmira Nushi ir Mehrnoosh Sameki
+[](https://www.youtube.com/watch?v=f1oaDNl3djg "Atsakingo DI informacijos suvestinė: Viena vieta, skirta atsakingo DI pritaikymui praktikoje")
-Naudokitės šiais šaltiniais, kad sužinotumėte daugiau apie atsakingą AI ir kaip kurti patikimesnius modelius:
+> 🎥 Spustelėkite paveikslėlį aukščiau, kad peržiūrėtumėte vaizdo įrašą: Atsakingo DI informacijos suvestinė: Viena vieta, skirta atsakingo DI pritaikymui praktikoje, pristato Besmira Nushi ir Mehrnoosh Sameki
+
+Naudokite šiuos šaltinius, kad sužinotumėte daugiau apie atsakingą DI ir kaip kurti patikimesnius modelius:
-- Microsoft RAI prietaisų skydelio įrankiai ML modelių derinimui: [Atsakingo AI įrankių šaltiniai](https://aka.ms/rai-dashboard)
+- Microsoft RAI informacijos suvestinės įrankiai mašininio mokymosi modelių derinimui: [Atsakingo DI įrankių ištekliai](https://aka.ms/rai-dashboard)
-- Susipažinkite su Atsakingo AI įrankių rinkiniu: [Github](https://github.com/microsoft/responsible-ai-toolbox)
+- Išnagrinėkite Atsakingo DI įrankių rinkinį: [Github](https://github.com/microsoft/responsible-ai-toolbox)
-- Microsoft RAI išteklių centras: [Atsakingo AI ištekliai – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
+- Microsoft RAI išteklių centras: [Atsakingo DI ištekliai – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
-- Microsoft FATE tyrimų grupė: [FATE: Sąžiningumas, Atsakomybė, Skaidrumas ir Etika AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
+- Microsoft FATE tyrimų grupė: [FATE: Sąžiningumas, Atsakomybė, Skaidrumas ir Etika DI srityje – Microsoft Research](https://www.microsoft.com/research/theme/fate/)
## Užduotis
-[Susipažinkite su RAI prietaisų skydeliu](assignment.md)
+[Išnagrinėkite RAI informacijos suvestinę](assignment.md)
---
-**Atsakomybės apribojimas**:
-Šis dokumentas buvo išverstas naudojant AI vertimo paslaugą [Co-op Translator](https://github.com/Azure/co-op-translator). Nors siekiame tikslumo, prašome atkreipti dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba turėtų būti laikomas autoritetingu šaltiniu. Dėl svarbios informacijos rekomenduojama profesionali žmogaus vertimo paslauga. Mes neprisiimame atsakomybės už nesusipratimus ar klaidingus interpretavimus, atsiradusius naudojant šį vertimą.
\ No newline at end of file
+
+**Atsakomybės apribojimas**:
+Šis dokumentas buvo išverstas naudojant dirbtinio intelekto vertimo paslaugą [Co-op Translator](https://github.com/Azure/co-op-translator). Nors siekiame tikslumo, prašome atkreipti dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba laikomas autoritetingu šaltiniu. Svarbiai informacijai rekomenduojama naudoti profesionalų žmogiškąjį vertimą. Mes neatsakome už jokius nesusipratimus ar neteisingą interpretaciją, kilusią naudojantis šiuo vertimu.
+
\ No newline at end of file
diff --git a/translations/ml/.co-op-translator.json b/translations/ml/.co-op-translator.json
index d5914336d..ecf15fa77 100644
--- a/translations/ml/.co-op-translator.json
+++ b/translations/ml/.co-op-translator.json
@@ -24,8 +24,8 @@
"language_code": "ml"
},
"1-Introduction/3-fairness/README.md": {
- "original_hash": "9a6b702d1437c0467e3c5c28d763dac2",
- "translation_date": "2025-12-19T13:40:51+00:00",
+ "original_hash": "0f00d72169a0d37eecfd16d71e01700a",
+ "translation_date": "2026-07-14T00:46:08+00:00",
"source_file": "1-Introduction/3-fairness/README.md",
"language_code": "ml"
},
@@ -54,8 +54,8 @@
"language_code": "ml"
},
"2-Regression/1-Tools/README.md": {
- "original_hash": "fa81d226c71d5af7a2cade31c1c92b88",
- "translation_date": "2025-12-19T13:55:07+00:00",
+ "original_hash": "0b8635427b582d03ea4ab7089b93e505",
+ "translation_date": "2026-07-14T00:41:55+00:00",
"source_file": "2-Regression/1-Tools/README.md",
"language_code": "ml"
},
@@ -72,8 +72,8 @@
"language_code": "ml"
},
"2-Regression/2-Data/README.md": {
- "original_hash": "7c077988328ebfe33b24d07945f16eca",
- "translation_date": "2025-12-19T14:00:13+00:00",
+ "original_hash": "a58b2c4d16c6b122643391745ac15af6",
+ "translation_date": "2026-07-14T00:45:11+00:00",
"source_file": "2-Regression/2-Data/README.md",
"language_code": "ml"
},
@@ -89,6 +89,12 @@
"source_file": "2-Regression/2-Data/solution/Julia/README.md",
"language_code": "ml"
},
+ "2-Regression/2-Data/solution/notebook.ipynb": {
+ "original_hash": "96b95f8cf473481f2f371de8156f1571",
+ "translation_date": "2026-07-14T00:27:20+00:00",
+ "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
+ "language_code": "ml"
+ },
"2-Regression/3-Linear/README.md": {
"original_hash": "8b776e731c35b171d316d01d0e7b1369",
"translation_date": "2026-04-26T19:32:48+00:00",
@@ -581,6 +587,19 @@
"source_file": "TROUBLESHOOTING.md",
"language_code": "ml"
},
+ "__translation_failures__": {
+ "sketchnotes/LICENSE.md": {
+ "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f",
+ "source_file": "sketchnotes/LICENSE.md",
+ "language_code": "ml",
+ "failure_date": "2026-07-14T00:40:56+00:00",
+ "status": "failed",
+ "error_type": "TranslationIncompleteError",
+ "error_message": "Markdown translation remained incomplete for chunk 1.1.1 of 'LICENSE.md', and the chunk could not be split further.",
+ "translator_version": "0.20.0",
+ "failure_policy_version": 1
+ }
+ },
"docs/_sidebar.md": {
"original_hash": "68dd06c685f6ce840e0acfa313352e7c",
"translation_date": "2025-12-19T13:10:14+00:00",
diff --git a/translations/ml/1-Introduction/3-fairness/README.md b/translations/ml/1-Introduction/3-fairness/README.md
index 0b00c14b5..32ec7811b 100644
--- a/translations/ml/1-Introduction/3-fairness/README.md
+++ b/translations/ml/1-Introduction/3-fairness/README.md
@@ -1,163 +1,167 @@
# ഉത്തരവാദിത്വമുള്ള AI ഉപയോഗിച്ച് മെഷീൻ ലേണിംഗ് പരിഹാരങ്ങൾ നിർമ്മിക്കൽ
-
-> സ്കെച്ച്നോട്ട്: [Tomomi Imura](https://www.twitter.com/girlie_mac)
+
+> സ്കെചനോട്ട് [Tomomi Imura](https://www.twitter.com/girlie_mac) tarafından
-## [പ്രീ-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/)
+## [മുൻപത്തെ ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/)
## പരിചയം
-ഈ പാഠ്യപദ്ധതിയിൽ, മെഷീൻ ലേണിംഗ് എങ്ങനെ നമ്മുടെ ദൈനംദിന ജീവിതത്തെ ബാധിക്കുന്നു എന്ന് നിങ്ങൾ കണ്ടെത്താൻ തുടങ്ങും. ഇപ്പോഴും, ആരോഗ്യപരിശോധനകൾ, വായ്പാ അംഗീകാരം, തട്ടിപ്പ് കണ്ടെത്തൽ തുടങ്ങിയ ദൈനംദിന തീരുമാനങ്ങളിൽ സിസ്റ്റങ്ങളും മോഡലുകളും പങ്കാളികളാണ്. അതിനാൽ, ഈ മോഡലുകൾ വിശ്വസനീയമായ ഫലങ്ങൾ നൽകാൻ നല്ല രീതിയിൽ പ്രവർത്തിക്കണം. ഏതൊരു സോഫ്റ്റ്വെയർ ആപ്ലിക്കേഷനുപോലെ, AI സിസ്റ്റങ്ങൾ പ്രതീക്ഷകൾ പാലിക്കാതിരിക്കുകയോ അനിഷ്ടഫലങ്ങൾ ഉണ്ടാകുകയോ ചെയ്യാം. അതുകൊണ്ടുതന്നെ AI മോഡലിന്റെ പെരുമാറ്റം മനസ്സിലാക്കാനും വിശദീകരിക്കാനും കഴിയുന്നത് അനിവാര്യമാണ്.
+ഈ കൊറിക്കുലത്തിൽ, മെഷീൻ ലേണിംഗ് നമ്മുടെ ദൈനംദിന ജീവിതത്തെ എങ്ങനെ സ്വാധീനിക്കുന്നുവെന്ന് നിങ്ങൾ കണ്ടെത്താൻ തുടങ്ങും. ഇന്നും, ആരോഗ്യപരിശോധനകൾ, വായ്പ അംഗീകാരം അല്ലെങ്കിൽ തട്ടിപ്പ് കണ്ടെത്തൽ പോലുള്ള ദിവസേനസ്ഥിരീകരണ päätöksiä tehdään järjestelmien ja mallien avulla. ആ വിരൽ വിശ്വസനീയ ഫലങ്ങൾ നൽകാൻ പ്രധാനമാണ്. ഏതൊരു സോഫ്റ്റ്വെയർ ആപ്ലിക്കേഷനും പോലെ, AI സംവിധാനങ്ങളും പ്രതീക്ഷകൾ പാലിക്കാതിരിക്കുക അല്ലെങ്കിൽ അഭിലാഷമില്ലാത്ത ഫലം ഉണ്ടാക്കുക സാധ്യമാണ്. അതുകൊണ്ട് AI മോഡലിന്റെ പെരുമാറ്റം മനസ്സിലാക്കുകയും വിശദീകരിക്കാനും അത്യാവശ്യമാണ്.
-നിങ്ങൾ ഈ മോഡലുകൾ നിർമ്മിക്കാൻ ഉപയോഗിക്കുന്ന ഡാറ്റയിൽ ജാതി, ലിംഗം, രാഷ്ട്രീയ കാഴ്ചപ്പാട്, മതം പോലുള്ള ചില ജനസംഖ്യാ വിഭാഗങ്ങൾ ഇല്ലാതിരുന്നാൽ എന്ത് സംഭവിക്കും എന്ന് കണക്കാക്കുക. മോഡലിന്റെ ഫലം ചില ജനസംഖ്യാ വിഭാഗങ്ങളെ അനുകൂലിക്കുന്നതായി വ്യാഖ്യാനിക്കപ്പെടുമ്പോൾ എന്ത് സംഭവിക്കും? ആപ്ലിക്കേഷനിൽ അതിന്റെ പ്രത്യാഘാതം എന്താകും? കൂടാതെ, മോഡലിന് അനിഷ്ടഫലം ഉണ്ടാകുകയും അത് ആളുകൾക്ക് ഹാനികരമായിരിക്കുകയുമെങ്കിൽ എന്ത് സംഭവിക്കും? AI സിസ്റ്റത്തിന്റെ പെരുമാറ്റത്തിന് ആരാണ് ഉത്തരവാദി? ഈ പാഠ്യപദ്ധതിയിൽ നാം ഈ ചോദ്യങ്ങൾ പരിശോധിക്കും.
+നിങ്ങൾ ഈ മോഡലുകൾ നിർമ്മിക്കുന്നതിനായി ഉപയോഗിക്കുന്ന ഡാറ്റയിൽ ഏത് ജനസംഖ്യ വിഭാഗങ്ങൾ, പോലുള്ള ജാതി, ലൈംഗികത, രാഷ്ട്രീയ കാഴ്ചപ്പാട്, മതം എന്നിവ അഭാവമുണ്ടെങ്കിൽ അല്ലെങ്കിൽ അപ്രമിതമായി പ്രതിനിധീകരിക്കുന്നുവെങ്കിൽ എന്തു സംഭവിക്കുമെന്ന് കണക്കുകൂട്ട്. മോഡലിന്റെ ഫലം ഏതെങ്കിലുമൊരു ജനസംഖ്യയെ അനുകൂലിക്കുന്നതായി വ്യാഖ്യാനിച്ചാൽ എന്താകും? ആപ്ലിക്കേഷനിനു ഉണ്ടാകാവുന്ന ഫലങ്ങൾ എന്തൊക്കെയാണ്? കൂടാതെ, മോഡലിന് ഒരു ദുഷ്പ്രഭാവം ഉണ്ടെങ്കിൽ അത് ജനങ്ങൾക്ക് ഹാനികരമാണെങ്കിൽ എന്താകും? AI സംവിധാനങ്ങളുടെ പെരുമാറ്റത്തിന് ഉത്തരവാദിത്വം ആരാണ് കൈകാര്യം ചെയ്യേണ്ടത്? ഈ ചോദ്യങ്ങൾ ഈ കൊറിക്കുലത്തിൽ നമ്മൾ പരിശോധിക്കും.
ഈ പാഠത്തിൽ നിങ്ങൾ:
-- മെഷീൻ ലേണിംഗിൽ നീതിയുടെ പ്രാധാന്യവും നീതിയുമായി ബന്ധപ്പെട്ട ഹാനികരമായ കാര്യങ്ങളും മനസ്സിലാക്കും.
-- വിശ്വാസ്യതയും സുരക്ഷയും ഉറപ്പാക്കാൻ അസാധാരണ സാഹചര്യങ്ങളും ഔട്ട്ലൈയർമാരും പരിശോധിക്കുന്ന പ്രക്രിയയെ പരിചയപ്പെടും.
-- ഉൾക്കൊള്ളുന്ന സിസ്റ്റങ്ങൾ രൂപകൽപ്പന ചെയ്ത് എല്ലാവരെയും ശക്തിപ്പെടുത്തേണ്ടതിന്റെ ആവശ്യകത മനസ്സിലാക്കും.
-- ഡാറ്റയുടെയും ആളുകളുടെയും സ്വകാര്യതയും സുരക്ഷയും സംരക്ഷിക്കുന്നതിന്റെ പ്രാധാന്യം അന്വേഷിക്കും.
-- AI മോഡലുകളുടെ പെരുമാറ്റം വിശദീകരിക്കാൻ ഗ്ലാസ് ബോക്സ് സമീപനത്തിന്റെ പ്രാധാന്യം കാണും.
-- AI സിസ്റ്റങ്ങളിൽ വിശ്വാസം സൃഷ്ടിക്കാൻ ഉത്തരവാദിത്വം അനിവാര്യമാണെന്ന് ശ്രദ്ധിക്കും.
+- മെഷീൻ ലേണിംഗ് ഫെയർനസിന്റെ പ്രാധാന്യവും ഫെയർനസ്സ്-സംബന്ധിച്ച ഹാനികളും ബോധവാന്മാർക്കുക.
+- വിശ്വാസ്യതയും സുരക്ഷയുമെത്തിക്കാൻ അസാധാരണ സംഭവങ്ങളും അസാധാരണ സാഹചര്യങ്ങളും പരിശോധിക്കുന്ന പ്രക്രിയ പരിചയപ്പെടുക.
+- എല്ലാരും ഉൾക്കൊള്ളുന്നതും സാധ്യമാക്കുന്നതും ആയ സംവിധാനങ്ങൾ രൂപകൽപ്പന ചെയ്യാനുള്ള ആവശ്യകത മനസിലാക്കുക.
+- ഡാറ്റയും ജനങ്ങളുടെയും സ്വകാര്യതയും സുരക്ഷയും സംരക്ഷിക്കേണ്ടതിന്റെ മുഖ്യമായ പ്രാധാന്യം വിശദീകരിക്കുക.
+- AI മോഡലുകളുടെ പെരുമാറ്റം വിശദീകരിക്കാൻ ഗ്ലാസ് ബോക്സ് സമീപനം എത്ര പ്രധാനമാണെന്ന് കാണുക.
+- AI സംവിധാനങ്ങളിൽ വിശ്വാസം നിർമ്മിക്കാൻ ഉത്തരവാദിത്വം എത്ര പ്രധാനമാണെന്ന് ശ്രദ്ധ നൽകുക.
-## മുൻകൂട്ടി അറിയേണ്ടത്
+## മുൻ നിബന്ധന
-മുൻകൂട്ടി, "ഉത്തരവാദിത്വമുള്ള AI സിദ്ധാന്തങ്ങൾ" എന്ന ലേണിംഗ് പാത പിന്തുടർന്ന് താഴെ കൊടുത്തിരിക്കുന്ന വീഡിയോ കാണുക:
+മുൻ നിബന്ധനയായി, "ഉത്തരവാദിത്വമുള്ള AI സിദ്ധാന്തങ്ങൾ" ലേൺ പാത്ത് സ്വീകരിച്ച് താഴെക്കൊടുത്തിരിക്കുന്ന വീഡിയോ കാണുക:
ഉത്തരവാദിത്വമുള്ള AIയെക്കുറിച്ച് കൂടുതൽ അറിയാൻ ഈ [Learning Path](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) പിന്തുടരുക
[](https://youtu.be/dnC8-uUZXSc "Microsoft's Approach to Responsible AI")
-> 🎥 മുകളിൽ കാണുന്ന ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക: Microsoft's Approach to Responsible AI
+> 🎥 മൈക്രോസോഫ്റ്റിന്റെ ഉത്തരവാദിത്വമുള്ള AI സമീപനത്തെക്കുറിച്ചുള്ള വീഡിയോയ്ക്ക് മേൽ ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക
-## നീതി
+## ഫെയർനസ്സ്
-AI സിസ്റ്റങ്ങൾ എല്ലാവരോടും നീതിപൂർവ്വം പെരുമാറണം, സമാനമായ ജനസംഖ്യാ വിഭാഗങ്ങളെ വ്യത്യസ്തമായി ബാധിക്കരുത്. ഉദാഹരണത്തിന്, മെഡിക്കൽ ചികിത്സ, വായ്പാ അപേക്ഷകൾ, തൊഴിൽ സംബന്ധിച്ച നിർദ്ദേശങ്ങൾ നൽകുമ്പോൾ, സമാന ലക്ഷണങ്ങൾ, സാമ്പത്തിക സാഹചര്യങ്ങൾ, പ്രൊഫഷണൽ യോഗ്യതകൾ ഉള്ള എല്ലാവർക്കും ഒരേ നിർദ്ദേശങ്ങൾ നൽകണം. ഓരോ മനുഷ്യനും അവന്റെ തീരുമാനങ്ങളിലും പ്രവർത്തനങ്ങളിലും സ്വാധീനം ചെലുത്തുന്ന പാരമ്പര്യ പൂർവ്വഗതമായ മുൻഗണനകൾ (ബയാസുകൾ) ഉണ്ട്. ഈ ബയാസുകൾ AI സിസ്റ്റങ്ങൾ പരിശീലിപ്പിക്കാൻ ഉപയോഗിക്കുന്ന ഡാറ്റയിൽ പ്രത്യക്ഷപ്പെടാം. ചിലപ്പോൾ ഇത് അനായാസം സംഭവിക്കാം. ഡാറ്റയിൽ ബയാസ് ചേർക്കുമ്പോൾ അത് മനസ്സിലാക്കുക പ്രയാസമാണ്.
+AI സംവിധാനങ്ങൾ എല്ലാവരോടും നീതിപൂർവം പെരുമാറണമെന്നും സമാന സംശയങ്ങളുള്ള, സാമ്പത്തിക സാഹചര്യങ്ങളുള്ള അല്ലെങ്കിൽ പ്രൊഫഷണൽ യോഗ്യതകളുള്ള എല്ലാവർക്കും സമാനം ശുപാർശകൾ നൽകണമെന്നും വേണം. ഓരോരുത്തരിലും അവകാശങ്ങള് സ്വാധീനിക്കുന്ന പാരമ്പര്യ ബയസുകള് ഉണ്ട്. ഈ ബയസുകൾ AI സംവിധാനം പരിശീലിപ്പിക്കാനായി ഉപയോഗിക്കുന്ന ഡാറ്റയിലും കാണപ്പെടാം, ചിലപ്പോൾ ഇത് അറിഞ്ഞുമില്ലാതെ സംഭവിക്കാം. ഡാറ്റയിൽ ബയസ് ഉൾപ്പെടുത്തുമ്പോൾ അവ വ്യക്തമാക്കുന്നത് വളരെയധികം പ്രയാസമാണ്.
-**“അനീതിയുള്ളത്”** എന്നത് ഒരു ജനസംഖ്യാ വിഭാഗത്തിന് (ജാതി, ലിംഗം, പ്രായം, അശക്തി നില തുടങ്ങിയ അടിസ്ഥാനത്തിൽ) ഉണ്ടാകുന്ന നെഗറ്റീവ് പ്രഭാവങ്ങളെയോ “ഹാനികളെയോ” ഉൾക്കൊള്ളുന്നു. പ്രധാന നീതി സംബന്ധമായ ഹാനികൾ താഴെപ്പറയുന്നവയായി വർഗ്ഗീകരിക്കാം:
+**“അനീതിപൂർവത”** ഒരു ജനസംഖ്യയിലേക്കുള്ള നിയമവിധേയമായ ദോഷപ്രദപ്രവർത്തനങ്ങൾ അർത്ഥമാക്കുന്നു, ജാതി, ലൈംഗികത, പ്രായം അല്ലെങ്കിൽ വിദഗ്ധാവസ്ഥ ഇല്ലാത്തവരെ ഉൾക്കൊള്ളുന്നു. ഫെയർനസിനൊപ്പം ബന്ധപ്പെട്ട പ്രധാന ഹാനികളെ ഈ വിധം വർഗ്ഗീകരിക്കാം:
-- **വിതരണം**: ഉദാഹരണത്തിന്, ഒരു ലിംഗം അല്ലെങ്കിൽ ജാതി മറ്റൊരാളേക്കാൾ മുൻഗണന ലഭിക്കുന്നത്.
-- **സേവന ഗുണമേന്മ**: ഒരു പ്രത്യേക സാഹചര്യത്തിനായി ഡാറ്റ പരിശീലിപ്പിച്ചാൽ, യാഥാർത്ഥ്യം കൂടുതൽ സങ്കീർണ്ണമായിരിക്കുമ്പോൾ, സേവനം മോശമായി പ്രവർത്തിക്കും. ഉദാഹരണത്തിന്, കറുത്ത ത്വക്കുള്ള ആളുകളെ തിരിച്ചറിയാൻ കഴിയാത്ത കൈ സോപ്പ് ഡിസ്പെൻസർ. [Reference](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
-- **അവമാനനം**: അനീതിയായി വിമർശിക്കുകയും ലേബൽ ചെയ്യുകയും ചെയ്യുക. ഉദാഹരണത്തിന്, കറുത്ത ത്വക്കുള്ള ആളുകളുടെ ചിത്രങ്ങളെ ഗൊറില്ലകളായി തെറ്റായി ലേബൽ ചെയ്ത ചിത്രം തിരിച്ചറിയൽ സാങ്കേതികവിദ്യ.
-- **അധികം അല്ലെങ്കിൽ കുറവ് പ്രതിനിധാനം**: ഒരു പ്രത്യേക വിഭാഗം ഒരു തൊഴിൽ മേഖലയിൽ കാണപ്പെടാത്തത്, അതുപോലെ സേവനങ്ങൾ അതിനെ പ്രോത്സാഹിപ്പിക്കുന്നത് ഹാനികരമാണ്.
-- **സ്റ്റീരിയോടൈപ്പിംഗ്**: ഒരു വിഭാഗത്തെ മുൻകൂട്ടി നിശ്ചയിച്ച ഗുണങ്ങളുമായി ബന്ധിപ്പിക്കൽ. ഉദാഹരണത്തിന്, ഇംഗ്ലീഷ്-ടർക്കിഷ് ഭാഷാ പരിഭാഷാ സിസ്റ്റത്തിൽ ലിംഗത്തോട് ബന്ധപ്പെട്ട സ്റ്റീരിയോടൈപ്പിക്കൽ വാക്കുകൾ മൂലം തെറ്റുകൾ ഉണ്ടാകാം.
+- **വിഭജനങ്ങൾ**, ഉദാഹരണത്തിന് ഒരു ലിംഗം അല്ലെങ്കിൽ ജാതി മറ്റേതേതിലേക്കും മുൻഗണന നൽകുമ്പോൾ.
+- **സേവനഗുണമേന്മ**. നിങ്ങൾ ഒരു പ്രത്യേക സാഹചര്യത്തിന് ഡാറ്റ ട്രെയിൻ ചെയ്താൽ എന്നാൽ യാഥാർത്ഥ്യമാകുന്നത് വളരെ കൂടുതലിലുള്ള സങ്കീർണ്ണതകൾ ഉള്ളതാണ്, സേവനം ദുർവ്വ്യാപകമായേക്കാം. ഉദാഹരണത്തിന്, കറുത്ത ത്വക്കുള്ള ആളുകളെ തിരിച്ചറിയാൻ കഴിയാത്ത ഒരു ഹാൻഡ് സോപ്പ് ഡിസ്പെൻസർ. [Reference](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
+- **അനാദരവു**. ഒരാളെ അല്ലെങ്കിൽ ഒരുഅടയാളമിടൽ തെറ്റായി കുറ്റം ചുമത്തൽ. ഉദാഹരണം, കറുത്ത ത്വക്കുള്ള ആളുകളുടെ ചിത്രങ്ങളെ ഗോരില്ല ആയി തെറ്റായി അടയാളപ്പെടുത്തുന്ന ചിത്രലേബലിംഗ് സാങ്കേതികവിദ്യ.
+- **അতিরക്തിയായ അല്ലെങ്കിൽ കുറവുള്ള പ്രതിനിധാനം**. ഒരുസമൂഹം ഒരു തൊഴിൽ മേഖലയിൽ കാണപ്പെടുന്നില്ലെന്നും ആ സേവനം ക്കുറിച്ചുള്ള മേഖല അതിനെ പ്രോത്സാഹിപ്പിക്കുന്നത് തന്നെയാണ് ഹാനി ഉണ്ടാക്കുന്നത്.
+- **സ്ടീരിയോടൈപ്പിംഗ്**. ഒരു ഗിവൻ ഗ്രൂപ്പിനെ മുൻകൂട്ടി നിശ്ചയിച്ച ഗുണലക്ഷണങ്ങളുമായി ബന്ധിപ്പിക്കുക. ഉദാഹരണത്തിന്, ഇംഗ്ലീഷിൽ നിന്ന് തുര്ക്കിഷിലേക്ക് ഭാഷാ വിവർത്തന സിസ്റ്റം ലൈംഗികതയെക്കുറിച്ചുള്ള മുൻകൂട്ടി നിശ്ചയിച്ച അനുബന്ധങ്ങളെ മൂലം പിഴവുകൾ ഉണ്ടാകാം.
-
-> ടർക്കിഷിലേക്ക് വിവർത്തനം
+
+> തുര്ക്കിഷിലേക്ക് വിവർത്തനം
-
-> ഇംഗ്ലീഷിലേക്ക് തിരിച്ചുവിവർത്തനം
+
+> അঙ্গലേഷിലേക്ക് തിരിച്ചുവെ്യൂ
-AI സിസ്റ്റങ്ങൾ രൂപകൽപ്പന ചെയ്യുമ്പോഴും പരീക്ഷിക്കുമ്പോഴും, AI നീതിപൂർവ്വം പ്രവർത്തിക്കുന്നതും ബയാസോ വിവേചനപരമായ തീരുമാനങ്ങൾ എടുക്കാതിരിക്കുകയുമാണ് ഉറപ്പാക്കേണ്ടത്, മനുഷ്യർക്കും ഇത് ചെയ്യാൻ അനുവദനീയമല്ല. AI-യിലും മെഷീൻ ലേണിംഗിലും നീതി ഉറപ്പാക്കൽ ഒരു സങ്കീർണ്ണമായ സാമൂഹ്യ സാങ്കേതിക വെല്ലുവിളിയാണ്.
+AI സംവിധാനങ്ങൾ ഫെയർ ആക്കുന്നതും നിർദേശങ്ങൾക്കും വിവേചനപരമായ തീരുമാനങ്ങൾ എടുക്കാതിരിക്കണമെന്നും ഉറപ്പാക്കേണ്ടതുണ്ട്, മനുഷ്യർക്ക് പോലും നൽകുവാൻ നിഷേധിയമുള്ള വിധികളാണിവ. AI ൽ ഫെയർനസ് ഉറപ്പാക്കൽ ഒരു സങ്കീർണ സാമൂഹിക സാങ്കേതിക വെല്ലുവിളിയാണ്.
### വിശ്വാസ്യതയും സുരക്ഷയും
-വിശ്വാസം സൃഷ്ടിക്കാൻ, AI സിസ്റ്റങ്ങൾ സാധാരണവും അപ്രതീക്ഷിതവുമായ സാഹചര്യങ്ങളിൽ വിശ്വസനീയവും സുരക്ഷിതവുമായിരിക്കണം. AI സിസ്റ്റുകൾ വ്യത്യസ്ത സാഹചര്യങ്ങളിൽ എങ്ങനെ പെരുമാറും എന്ന് അറിയുന്നത് പ്രധാനമാണ്, പ്രത്യേകിച്ച് അവ ഔട്ട്ലൈയർമാരായപ്പോൾ. AI പരിഹാരങ്ങൾ നിർമ്മിക്കുമ്പോൾ, AI പരിഹാരങ്ങൾ നേരിടുന്ന വ്യത്യസ്ത സാഹചര്യങ്ങളെ കൈകാര്യം ചെയ്യുന്നതിൽ വലിയ ശ്രദ്ധ വേണം. ഉദാഹരണത്തിന്, സ്വയം ഓടുന്ന കാറിന് ആളുകളുടെ സുരക്ഷ മുൻഗണനയായി വേണം. അതിനാൽ, കാറിന്റെ AI എല്ലാ സാധ്യതയുള്ള സാഹചര്യങ്ങളും പരിഗണിക്കണം: രാത്രി, മിന്നൽമേഘങ്ങൾ, മഞ്ഞുവീഴ്ച, കുട്ടികൾ റോഡിൽ ഓടുന്നത്, മൃഗങ്ങൾ, റോഡ് നിർമ്മാണം തുടങ്ങിയവ. ഒരു AI സിസ്റ്റം എത്രത്തോളം വിശ്വസനീയവും സുരക്ഷിതവുമായും വ്യത്യസ്ത സാഹചര്യങ്ങൾ കൈകാര്യം ചെയ്യുന്നു എന്നത് ഡാറ്റ സയന്റിസ്റ്റും AI ഡെവലപ്പറും ഡിസൈൻ അല്ലെങ്കിൽ ടെസ്റ്റിംഗിൽ എത്രത്തോളം മുൻകൂട്ടി കണക്കാക്കിയതിന്റെ സൂചകമാണ്.
+വിശ്വാസം നേടാൻ, AI സംവിധാനങ്ങൾ വിശ്വാസയോഗ്യവും സുരക്ഷിതവും സാധാരണ ഒപ്പം അപ്രതീക്ഷിത സാഹചര്യങ്ങളിലുമുണ്ടാകണം. വ്യത്യസ്ത സാഹചര്യങ്ങളിൽ AI യെന്തു രൂപത്തിൽ പെരുമാറും എന്നു അറിയുക പ്രധാനമാണ്, പ്രത്യേകിച്ചു അസാധാരണ സംഭവങ്ങളിൽ. AI പരിഹാരങ്ങൾ നിർമ്മിക്കുമ്പോൾ, ഉണ്ടാകാവുന്ന വിവിധ സാഹചര്യങ്ങളെ കൃത്യമായി പരിഗണിക്കേണ്ടതുണ്ട്. ഉദാഹരണത്തിന്, ഒരു സെൽഫ്-ഡ്രൈവിംഗ്ഗാൺ കാർ ജനങ്ങളുടെ സുരക്ഷ മുൻത്തെ പ്രാധാന്യമായി കരുതണം. അതിനായി കാർ എടുത്തുകൊണ്ടു പോകുന്ന എല്ലാ സാധ്യതകളും പരിഗണിക്കണം, രാത്രി, കടുത്ത മഴപ്പെയ്യൽ, കുട്ടികൾ വീഥി ഉപരിതല അടക്കൽ, മൃഗങ്ങൾ, റോഡ് നിർമ്മാണം എന്നിവ. എത്രത്തോളം വിശ്വാസ്യതയോടെ സുരക്ഷിതമായി നടപ്പിലാക്കാമെന്ന് AI സംവിധാനം നിർമ്മാതാക്കളും ഡാറ്റ സയന്റിസ്റ്റുകളും എത്രത്തോളം ആലോചിച്ചുവെന്ന് കാണിക്കുന്നു.
-> [🎥 വീഡിയോക്കായി ഇവിടെ ക്ലിക്ക് ചെയ്യുക: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
+> [🎥 ഇവിടെ ക്ലിക്ക് ചെയ്ത് വീഡിയോ കാണുക: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
### ഉൾക്കൊള്ളൽ
-AI സിസ്റ്റങ്ങൾ എല്ലാവരെയും ഉൾക്കൊള്ളുകയും ശക്തിപ്പെടുത്തുകയും ചെയ്യുന്നതായി രൂപകൽപ്പന ചെയ്യണം. AI സിസ്റ്റങ്ങൾ രൂപകൽപ്പന ചെയ്യുമ്പോൾ, ഡാറ്റ സയന്റിസ്റ്റുകളും AI ഡെവലപ്പർമാരും അനായാസം ആളുകളെ ഒഴിവാക്കാൻ ഇടയുണ്ടാകുന്ന തടസ്സങ്ങൾ കണ്ടെത്തി പരിഹരിക്കും. ഉദാഹരണത്തിന്, ലോകത്ത് 1 ബില്യൺ അശക്തരുണ്ട്. AI പുരോഗമനത്തോടെ, അവർക്ക് അവരുടെ ദൈനംദിന ജീവിതത്തിൽ കൂടുതൽ എളുപ്പത്തിൽ വിവരങ്ങളും അവസരങ്ങളും ലഭിക്കും. തടസ്സങ്ങൾ പരിഹരിക്കുന്നത് എല്ലാവർക്കും ഗുണകരമായ മികച്ച അനുഭവങ്ങളുള്ള AI ഉൽപ്പന്നങ്ങൾ വികസിപ്പിക്കാൻ അവസരം സൃഷ്ടിക്കുന്നു.
+AI സംവിധാനങ്ങൾ എല്ലാവരെയും ഉൾക്കൊള്ളുകയും ശക്തിപ്പെടുത്തുകയും ചെയ്യുന്നതായി രൂപകൽപ്പന ചെയ്യണം. AI നിർമ്മാതാക്കളും ഡാറ്റ സയന്റിസ്റ്റുകളും സിസ്റ്റത്തിൽ വീഴ്ച വരുത്താവുന്ന പ്രതിബന്ധങ്ങൾ കണ്ടെത്തി അവ നീക്കംചെയ്യേണ്ടതുണ്ട്. ഉദാഹരണത്തിന്, ലോകത്ത് ഏകകോടി ആളുകൾക്ക് പ്രാപ്യതാ ബുദ്ധിമുട്ടുകളുണ്ട്. AI മുന്നേറ്റത്തോടെ, അവർ തങ്ങളുടെ ദിനചര്യയിൽ കൂടുതല് വിവരങ്ങളും അവസരങ്ങളും ആക്സസ് ചെയ്യാൻ കഴിയുന്നു. പ്രതിബന്ധങ്ങൾ പരിഹരിക്കുന്നത് മികച്ച അനുഭവങ്ങളുള്ള AI ഉൽപ്പന്നങ്ങൾക്ക് വഴി തെളിക്കും.
-> [🎥 വീഡിയോക്കായി ഇവിടെ ക്ലിക്ക് ചെയ്യുക: inclusiveness in AI](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
+> [🎥 ഇവിടെ ക്ലിക്ക് ചെയ്ത് വീഡിയോ കാണുക: AIയിൽ ഉൾക്കൊള്ളൽ](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
### സുരക്ഷയും സ്വകാര്യതയും
-AI സിസ്റ്റങ്ങൾ സുരക്ഷിതവും ആളുകളുടെ സ്വകാര്യത മാനിക്കുന്നതുമായിരിക്കണം. ആളുകൾ അവരുടെ സ്വകാര്യത, വിവരങ്ങൾ, ജീവൻ അപകടത്തിലാക്കുന്ന സിസ്റ്റങ്ങളിൽ കുറവ് വിശ്വാസം കാണിക്കുന്നു. മെഷീൻ ലേണിംഗ് മോഡലുകൾ പരിശീലിപ്പിക്കുമ്പോൾ, മികച്ച ഫലങ്ങൾ ലഭിക്കാൻ ഡാറ്റയിൽ ആശ്രയിക്കുന്നു. അതിനാൽ, ഡാറ്റയുടെ ഉറവിടവും അഖണ്ഡതയും പരിഗണിക്കണം. ഉദാഹരണത്തിന്, ഡാറ്റ ഉപയോക്താവ് സമർപ്പിച്ചതാണോ പൊതുവായി ലഭ്യമായതാണോ? തുടർന്ന്, ഡാറ്റ ഉപയോഗിക്കുമ്പോൾ, രഹസ്യ വിവരങ്ങൾ സംരക്ഷിക്കുകയും ആക്രമണങ്ങൾ പ്രതിരോധിക്കുകയും ചെയ്യുന്ന AI സിസ്റ്റങ്ങൾ വികസിപ്പിക്കുന്നത് അനിവാര്യമാണ്. AI വ്യാപകമാകുമ്പോൾ, സ്വകാര്യത സംരക്ഷിക്കുകയും വ്യക്തിഗതവും ബിസിനസ്സ് വിവരങ്ങളും സുരക്ഷിതമാക്കുകയും ചെയ്യുന്നത് കൂടുതൽ പ്രധാനവും സങ്കീർണ്ണവുമാണ്. AI-യ്ക്ക് ഡാറ്റ ലഭ്യമാകുന്നത് കൃത്യമായ പ്രവചനങ്ങളും തീരുമാനങ്ങളും എടുക്കാൻ അനിവാര്യമായതിനാൽ, സ്വകാര്യതയും ഡാറ്റ സുരക്ഷയും പ്രത്യേക ശ്രദ്ധ ആവശ്യമാണ്.
+AI സംവിധാനങ്ങൾ സുരക്ഷിതവും ജനങ്ങളുടെ സ്വകാര്യത മാനിക്കുകയും വേണം. വ്യക്തികളുടെ സ്വകാര്യത, വിവരങ്ങൾ, ജീവിതം അപകടത്തിലാക്കിയുള്ള സംവിധാനങ്ങളിൽ ആളുകൾ വിശ്വാസം കുറവാണ്. മെഷീൻ ലേണിംഗ് മോഡലുകൾ പരിശീലിപ്പിക്കുമ്പോൾ മികച്ച ഫലങ്ങൾ നൽകാൻ ഡാറ്റയേക്ക് ആശ്രയിച്ചിരിക്കുന്നു. അതിനാൽ, ഡാറ്റയുടെ ഉറവിടം, അക്ഷത പരിഗണിക്കണം. ഉദാഹരണത്തിന്, ഡാറ്റ ഉപയോക്തൃ സമർപ്പിച്ചോ പൊതുജനങ്ങൾക്കായി ലഭ്യമാക്കിയതോ ആണ്? ആദ്യം, ഡാറ്റ കൈകാര്യം ചെയ്യുമ്പോൾ, രഹസ്യ വിവരങ്ങൾ സംരക്ഷിക്കുകയും ആക്രമണങ്ങളിൽ നിന്ന് തടയുകയും ചെയ്യുന്ന AI സംവിധാനം വികസിപ്പിക്കണം. AI പ്രചാരണം വർധിക്കുമ്പോൾ സ്വകാര്യതയും ഡാറ്റ സുരക്ഷയും കൂടുതൽ പ്രധാനവും സങ്കീർണവുമാണ്. AI യാഥാർത്ഥ്യങ്ങൾക്കു കൃത്യവും അറിവുള്ള പ്രവചനങ്ങളും തീരുമാനങ്ങളും കൈക്കൊള്ളാൻ ഡാറ്റ അനിവാര്യമാണ്, അതിനാൽ സ്വകാര്യതയും ഡാറ്റ സുരക്ഷയും ജാഗ്രതയോടെ പരിഗണനയിൽ പെടുത്തണം.
-> [🎥 വീഡിയോക്കായി ഇവിടെ ക്ലിക്ക് ചെയ്യുക: security in AI](https://www.microsoft.com/videoplayer/embed/RE4voJF)
+> [🎥 ഇവിടെ ക്ലിക്ക് ചെയ്ത് വീഡിയോ കാണുക: AIയിൽ സുരക്ഷ](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- വ്യവസായമായി, GDPR പോലുള്ള നിയമങ്ങൾ മൂലം സ്വകാര്യതയും സുരക്ഷയും മേഖലയിൽ വലിയ പുരോഗതി ഉണ്ടായി.
-- AI സിസ്റ്റങ്ങളിൽ, വ്യക്തിഗത ഡാറ്റ കൂടുതൽ ആവശ്യമായതിനും സ്വകാര്യതയ്ക്കും ഇടയിലുള്ള സംഘർഷം അംഗീകരിക്കണം.
-- ഇന്റർനെറ്റുമായി കണക്ടഡ് കമ്പ്യൂട്ടറുകളുടെ ഉദയം പോലെ, AI-യുമായി ബന്ധപ്പെട്ട സുരക്ഷാ പ്രശ്നങ്ങളും വർധിക്കുന്നു.
-- അതേസമയം, സുരക്ഷ മെച്ചപ്പെടുത്താൻ AI ഉപയോഗിക്കുന്നതും കാണുന്നു. ഉദാഹരണത്തിന്, ഇന്ന് മിക്ക ആധുനിക ആന്റി-വൈറസ് സ്കാനറുകളും AI ഹ്യൂറിസ്റ്റിക്സിൽ പ്രവർത്തിക്കുന്നു.
-- ഡാറ്റ സയൻസ് പ്രക്രിയകൾ ഏറ്റവും പുതിയ സ്വകാര്യതയും സുരക്ഷാ പ്രാക്ടീസുകളും ചേർന്ന് പ്രവർത്തിക്കണം.
+- അഭിഭാഗ്യമായി, GDPR (ജനറൽ ഡാറ്റാ പ്രൊട്ടക്ഷൻ റെഗുലേഷൻ) പോലുള്ള നിയമങ്ങളും നിബന്ധനകളും പ്രചോദനമായുണ്ടായിട്ടുള്ള സ്വകാര്യതയും സുരക്ഷയും മേഖലയിൽ വ്യവസായം വലിയ മുന്നേറ്റം നേടി.
+- എങ്കിലും AI സംവിധാനങ്ങളോടൊപ്പം വ്യക്തിജീവിത સંબંધമുള്ള കൂടുതൽ ഡേറ്റ ആവശ്യക്കളും സ്വകാര്യത ഇടപെടലും തമ്മിലുള്ള ഭിന്നത അറിയേണ്ടിവരും.
+- ഇന്റർനെറ്റിനെക്കുറിച്ചുള്ള കമ്പ്യൂട്ടർ കണക്ടിവിറ്റി തുടക്കം പോലെ, AI സ്ക്യൂരിറ്റി പ്രശ്നങ്ങളിൽ വൻ വർദ്ധനവുണ്ട്.
+- ഒരേസമയം, സുരക്ഷ മെച്ചപ്പെടുത്താൻ AI ഉപയോഗിക്കുന്നു. ഉദാഹരണത്തിന്, ഏറെക്കുറെ ആധുനിക ആന്റിവൈറസ് സ്കാനറുകൾ ഇന്ന് AI ഹ്യൂറിസ്റ്റിക്കുകളാലാണ് പ്രവർത്തിക്കുന്നത്.
+- ഡാറ്റ സയൻസ് പ്രക്രിയകൾ ഏറ്റവും പുതിയ സ്വകാര്യതയും സുരക്ഷാ പ്രക്രിയകളുമായി യോജിപ്പിച്ചിരിക്കണം.
-### പാരദർശിത്വം
-AI സിസ്റ്റങ്ങൾ മനസ്സിലാക്കാവുന്നതായിരിക്കണം. പാരദർശിത്വത്തിന്റെ പ്രധാന ഭാഗം AI സിസ്റ്റങ്ങളുടെ പെരുമാറ്റവും അവയുടെ ഘടകങ്ങളും വിശദീകരിക്കലാണ്. AI സിസ്റ്റങ്ങൾ എങ്ങനെ പ്രവർത്തിക്കുന്നു, എന്തുകൊണ്ട് പ്രവർത്തിക്കുന്നു എന്ന് പങ്കാളികൾ മനസ്സിലാക്കണം, അതിലൂടെ പ്രകടന പ്രശ്നങ്ങൾ, സുരക്ഷാ, സ്വകാര്യതാ ആശങ്കകൾ, ബയാസുകൾ, ഒഴിവാക്കൽ പ്രക്രിയകൾ, അനിഷ്ടഫലങ്ങൾ തിരിച്ചറിയാൻ കഴിയും. AI സിസ്റ്റങ്ങൾ ഉപയോഗിക്കുന്നവർ അവ എപ്പോൾ, എന്തുകൊണ്ട്, എങ്ങനെ ഉപയോഗിക്കുന്നു എന്ന് സത്യസന്ധമായി അറിയിക്കണം. ഉപയോഗിക്കുന്ന സിസ്റ്റങ്ങളുടെ പരിമിതികളും വ്യക്തമാക്കണം. ഉദാഹരണത്തിന്, ഒരു ബാങ്ക് ഉപഭോക്തൃ വായ്പാ തീരുമാനങ്ങൾക്ക് AI സിസ്റ്റം ഉപയോഗിക്കുമ്പോൾ, ഫലങ്ങൾ പരിശോധിച്ച് ഏത് ഡാറ്റ സിസ്റ്റത്തിന്റെ നിർദ്ദേശങ്ങളെ സ്വാധീനിക്കുന്നു എന്ന് മനസ്സിലാക്കണം. സർക്കാർ വ്യവസായങ്ങളിൽ AI നിയന്ത്രിക്കാൻ തുടങ്ങുന്നു, അതിനാൽ ഡാറ്റ സയന്റിസ്റ്റുകളും സംഘടനകളും AI സിസ്റ്റം നിയമാനുസൃതമാണോ എന്ന് വിശദീകരിക്കണം, പ്രത്യേകിച്ച് അനിഷ്ടഫലം ഉണ്ടാകുമ്പോൾ.
+### પારദർശകത
+AI സംവിധാനങ്ങൾ മനസ്സിലാക്കാവുന്നതായിരിക്കണം. AI പ്രവർത്തനത്തിന്റെ ഒരു പ്രധാന ഭാഗം മൂലമാക്കുന്നു. AI സംവിധാനങ്ങൾ എങ്ങനെ പ്രവർത്തിക്കുന്നുവെന്ന് തിരിച്ചറിയാനും നിർവചിക്കാനും ആവശ്യമാണ്, പ്രത്യേകിച്ച് പ്രകടനം, സുരക്ഷ, സ്വകാര്യത, ബയസ്, ഒഴിവാക്കലുകൾ, അപ്രതീക്ഷിത ഫലങ്ങൾ എന്നിവ പരിശോധിക്കുമ്പോൾ. AI ഉപയോക്താക്കളും എപ്പോൾ എങ്ങനെ എന്തിനായി AI എന്നത് പ്രയോജനപ്പെടുത്തുന്നു എന്നും സാക്ഷാമായി തുറന്നുപറയണം. ഉദാഹരണം, ഒരു ബാങ്ക് ഉപഭോക്തൃ വായ്പ തീരുമാനങ്ങൾക്ക് AI ഉപയോഗിച്ചാൽ ഫലങ്ങൾ പരിശോധിച്ച്, നിർദേശങ്ങളിൽ ഏത് ഡാറ്റ പ്രതിഫലിക്കുന്നു എന്ന് മനസ്സിലാക്കണം. സർക്കാർ വ്യവസായങ്ങളിൽ AI നിയന്ത്രിക്കുന്നത് ആരംഭിച്ചിരിക്കുമ്പോൾ, ഡാറ്റ സയന്റിസ്റ്റുകളും സ്ഥാപനങ്ങളും നിയമപരമായ ആവശ്യങ്ങൾ പാലിക്കുന്നതായിട്ടുണ്ടോ എന്നും നിർവചിക്കണം, പ്രത്യേകിച്ച് നിഷ്ഠൂരഫലങ്ങൾ ഉണ്ടാകുമ്പോൾ.
-> [🎥 വീഡിയോക്കായി ഇവിടെ ക്ലിക്ക് ചെയ്യുക: transparency in AI](https://www.microsoft.com/videoplayer/embed/RE4voJF)
+> [🎥 ഇവിടെ ക്ലിക്ക് ചെയ്ത് വീഡിയോ കാണുക: AIയിൽ पारदർശകത](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- AI സിസ്റ്റങ്ങൾ വളരെ സങ്കീർണ്ണമായതിനാൽ അവ എങ്ങനെ പ്രവർത്തിക്കുന്നു എന്ന് മനസ്സിലാക്കാനും ഫലങ്ങൾ വ്യാഖ്യാനിക്കാനും ബുദ്ധിമുട്ടാണ്.
-- ഈ മനസ്സിലാക്കൽക്കുറവ് സിസ്റ്റങ്ങൾ എങ്ങനെ നിയന്ത്രിക്കപ്പെടുന്നു, പ്രവർത്തിപ്പിക്കുന്നു, രേഖപ്പെടുത്തുന്നു എന്നതിനെ ബാധിക്കുന്നു.
-- ഏറ്റവും പ്രധാനമായി, ഈ മനസ്സിലാക്കൽക്കുറവ് സിസ്റ്റങ്ങൾ ഉൽപ്പാദിപ്പിക്കുന്ന ഫലങ്ങൾ ഉപയോഗിച്ച് എടുക്കുന്ന തീരുമാനങ്ങളെ ബാധിക്കുന്നു.
+- AI സംവിധാനങ്ങൾ സങ്കീർണമാണെന്നാൽ എങ്ങനെ പ്രവർത്തിക്കുന്നു എന്ന് മനസ്സിലാക്കാനും ഫലങ്ങൾ വ്യാഖ്യാനിക്കാനും ബുദ്ധിമുട്ടാണ്.
+- ഈ മനസ്സിലാക്കാത്തത് ഈ സംവിധാനങ്ങൾ എങ്ങനെ നിയന്ത്രിക്കപ്പെടുന്നു, പ്രവർത്തിപ്പിക്കുന്നു, രേഖപ്പെടുത്തുന്നു എന്നിവയെ ബാധിക്കുന്നു.
+- ഏറ്റവും പ്രധാനമായി ഇതു ഫലങ്ങൾ ഉപയോഗിച്ച് എടുക്കുന്ന തീരുമാനങ്ങളെ ബാധിക്കുന്നു.
### ഉത്തരവാദിത്വം
+
+AI സംവിധാനം രൂപകൽപ്പന ചെയ്ത് വിനിയോഗിക്കുന്നവർ അവരുടെ സംവിധാനം എങ്ങനെ പ്രവർത്തിക്കുന്നു എന്നതിന് ഉത്തരവാദിത്വം വേണം. മുഖമുദ്ര തിരിച്ചറിയൽ പോലുള്ള സംവേദനാത്മക സാങ്കേതികവിദ്യകളുമായി ബന്ധപ്പെട്ട് ഉത്തരവാദിത്വം അതിമഹത്താണ്. കുട്ടികളുടെ തിരച്ചിലിനായി പോലീസുകാർക്ക് കുതിരക്കുത്ത് പോലുള്ള അഭ്യർത്ഥനകൾ വരുമ്പോൾ, ഈ സാങ്കേതികവിദ്യയുടെ വളർച്ചയാണ്. എന്നാൽ, ഈ സാങ്കേതികവിദ്യകൾ സർക്കാർ രാഷ്ട്രീയസ്വാതന്ത്ര്യങ്ങളിൽ ബാധകമായ നിരന്തര നിരീക്ഷണത്തിന് ഉപയോഗിക്കു സാധ്യത ഉണ്ടെന്ന് ആശങ്കകളും ഉണ്ട്. അതിനാൽ, ഡാറ്റ സയന്റിസ്റ്റുകളും സ്ഥാപനങ്ങളും AI സംവിധാനങ്ങൾ വ്യക്തികൾക്കും സമൂഹത്തിനും എങ്ങനെ ബാധിക്കുന്നു എന്നതിൽ ഉത്തരവാദിത്വം കൈക്കൊളളണം.
-AI സിസ്റ്റങ്ങൾ രൂപകൽപ്പന ചെയ്ത് വിനിയോഗിക്കുന്നവർ അവരുടെ സിസ്റ്റങ്ങൾ എങ്ങനെ പ്രവർത്തിക്കുന്നു എന്നതിന് ഉത്തരവാദിത്വം വഹിക്കണം. മുഖം തിരിച്ചറിയൽ പോലുള്ള സങ്കീർണ്ണ സാങ്കേതികവിദ്യകളിൽ ഉത്തരവാദിത്വം പ്രത്യേകിച്ച് പ്രധാനമാണ്. അടുത്തിടെ, മുഖം തിരിച്ചറിയൽ സാങ്കേതികവിദ്യക്ക് വളരെയധികം ആവശ്യകതയുണ്ട്, പ്രത്യേകിച്ച് കാണാതായ കുട്ടികളെ കണ്ടെത്തുന്നതിൽ നിയമപ്രവർത്തക സംഘടനകൾക്ക് ഇത് സഹായകരമെന്ന് കാണുന്നു. എന്നാൽ, ഈ സാങ്കേതികവിദ്യകൾ സർക്കാർ അവരുടെ പൗരന്മാരുടെ അടിസ്ഥാന സ്വാതന്ത്ര്യങ്ങളെ അപകടത്തിലാക്കാൻ ഉപയോഗിക്കാമെന്ന ഭീഷണി ഉണ്ട്, ഉദാഹരണത്തിന്, ചില വ്യക്തികളുടെ നിരന്തര നിരീക്ഷണം സാധ്യമാക്കുക. അതിനാൽ, ഡാറ്റ സയന്റിസ്റ്റുകളും സംഘടനകളും അവരുടെ AI സിസ്റ്റം വ്യക്തികളെയും സമൂഹത്തെയും എങ്ങനെ ബാധിക്കുന്നു എന്നതിന് ഉത്തരവാദിത്വം വഹിക്കണം.
+[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft's Approach to Responsible AI")
-[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft's Approach to Responsible AI")
+> 🎥 മുഖം തിരിച്ചറിയൽ മുഖേന അസംഖ്യ നിരീക്ഷണത്തെ കുറിച്ചുള്ള മുന്നറിയിപ്പുകൾ എന്ന വീഡിയോയ്ക്ക് മേൽ ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക
-> 🎥 മുകളിൽ കാണുന്ന ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക: മുഖം തിരിച്ചറിയൽ വഴി വ്യാപക നിരീക്ഷണത്തിന്റെ മുന്നറിയിപ്പുകൾ
+ഞങ്ങളുടെ തലമുറയിൽ ഏറ്റവും വലിയ ചോദ്യങ്ങളിലൊന്ന്, AI സമൂഹത്തിൽ കൊണ്ടുവരുന്ന ആദ്യതലമുറ ആയി, കമ്പ്യൂട്ടറുകൾ മനുഷ്യരെക്കുറിച്ച് ഉത്തരവാദിത്വം പുലർത്തുമെന്ന് എങ്ങനെ ഉറപ്പാക്കാമെന്നും, കമ്പ്യൂട്ടറുകൾ രൂപകൽപ്പന ചെയ്യുന്നവർ മറിച്ച് എല്ലാവർക്കും ഉത്തരവാദികൾ ആണെന്നു എങ്ങനെ ഉറപ്പാക്കാമെന്നും ആണ്.
-അവസാനമായി, AI സമൂഹത്തിലേക്ക് കൊണ്ടുവരുന്ന ആദ്യ തലമുറയായ നമ്മുടെ തലമുറയ്ക്ക് ഏറ്റവും വലിയ ചോദ്യങ്ങളിൽ ഒന്നാണ്, കമ്പ്യൂട്ടറുകൾ ആളുകൾക്ക് ഉത്തരവാദിത്വം വഹിക്കുമോ, കമ്പ്യൂട്ടറുകൾ രൂപകൽപ്പന ചെയ്യുന്നവർ എല്ലാവർക്കും ഉത്തരവാദിത്വം വഹിക്കുമോ എന്നത് എങ്ങനെ ഉറപ്പാക്കാം എന്നത്.
+## പ്രഭാവ അവലോകനം
-## പ്രഭാവം വിലയിരുത്തൽ
+മെഷീൻ ലേണിംഗ് മോഡൽ പരിശീലിപ്പിക്കുന്നതിനുമുമ്പ് AI സംവിധാനത്തിന്റെ ഉദ്ദേശ്യം; ലക്ഷ്യം എന്തൊക്കെയാണ്; ഏത് സ്ഥലത്ത് ഉപയോഗിക്കപ്പെടും; ആരാണ് സംവിധാനവുമായി ഇടപഴകുന്നത് എന്നു മനസ്സിലാക്കുന്നതിനായി പ്രഭാവ അവലോകനം നിർബന്ധമാണ്. ഇത് നിരീക്ഷകർക്ക് സിസ്റ്റത്തിലെ സാധ്യതയുള്ള അപകടങ്ങൾ, പ്രതീക്ഷിക്കാവുന്ന ഫലങ്ങൾ വിലയിരുത്തുമ്പോൾ സഹായകമാണ്.
-മെഷീൻ ലേണിംഗ് മോഡൽ പരിശീലിപ്പിക്കുന്നതിന് മുമ്പ്, AI സിസ്റ്റത്തിന്റെ ഉദ്ദേശ്യം, ഉപയോഗം, വിനിയോഗ സ്ഥലം, സിസ്റ്റം ഉപയോഗിക്കുന്നവർ എന്നിവ മനസ്സിലാക്കാൻ പ്രഭാവം വിലയിരുത്തൽ നടത്തുന്നത് പ്രധാനമാണ്. ഇത് സിസ്റ്റം വിലയിരുത്തുന്നവർക്കും ടെസ്റ്റർമാർക്കും സാധ്യതയുള്ള അപകടങ്ങളും പ്രതീക്ഷിക്കുന്ന ഫലങ്ങളും തിരിച്ചറിയാൻ സഹായിക്കും.
+പ്രഭാവ അവലോകനം നടത്തുമ്പോൾ ശ്രദ്ധിക്കേണ്ട മേഖലകൾ:
-പ്രഭാവം വിലയിരുത്തുമ്പോൾ ശ്രദ്ധിക്കേണ്ട മേഖലകൾ:
+* **വ്യക്തികളുമായി ഉണ്ടായേക്കാവുന്ന ദുഷ്പ്രഭാവം**. ഏതെങ്കിലും നിയന്ത്രണങ്ങൾ, ആവശ്യങ്ങൾ, അനാവലി ഉപയോഗം അല്ലെങ്കിൽ പരിചിതമായ പരിധികളെന്ന് അറിയുക പ്രധാനമാണ്.
+* **ഡാറ്റ ആവശ്യകതകൾ**. സിസ്റ്റം എങ്ങിനെ, എവിടെ ഡാറ്റ ഉപയോഗിക്കുമെന്ന് മനസ്സിലാക്കുന്നത്, നിർദേശകരെയും നിരീക്ഷകരെയും GDPR അല്ലെങ്കിൽ HIPAA പോലുള്ള നിയമങ്ങൾക്കും പ്രത്യേക ശ്രദ്ധ നൽകാൻ സഹായിക്കുന്നു. കൂടാതെ, പരിശീലനത്തിനുള്ള ഡാറ്റയുടെ ഉറവിടം, തോത് മതിയായതാണോ എന്നത് പരിശോധിക്കുക.
+* **പ്രഭാവത്തിന്റെ സംഗ്രഹം**. സിസ്റ്റം ഉപയോഗിച്ചാൽ ഉണ്ടായേക്കാവുന്ന ഉപദ്രവങ്ങളുടെ പട്ടിക പറ്റുക. ML ജീവിതചക്രത്തിൽ, കണ്ടെത്തിയ പ്രശ്നങ്ങൾ പരിഹരിക്കുന്നുണ്ടോ എന്ന് പരിശോധിക്കുക.
+* ആറ് മേധാവി സിദ്ധാന്തങ്ങൾക്ക് അനുയോജ്യമായ **ലക്ഷ്യങ്ങൾ**. ഓരോ സിദ്ധാന്തത്തിന്റെ ലക്ഷ്യങ്ങൾ പാലിക്കപ്പെട്ടിട്ടുണ്ടോ എന്നത് വിലയിരുത്തുക, വീഴ്ചകളുണ്ടോ എന്ന് പരിശോധിക്കുക.
-* **വ്യക്തികൾക്ക് ഹാനികരമായ പ്രഭാവം**: സിസ്റ്റത്തിന്റെ പ്രകടനം തടയുന്ന നിയന്ത്രണങ്ങൾ, ആവശ്യങ്ങൾ, അനധികൃത ഉപയോഗം, പരിചിതമായ പരിമിതികൾ എന്നിവ അറിയുക, വ്യക്തികൾക്ക് ഹാനി ഉണ്ടാകാതിരിക്കാനുള്ള ഉറപ്പാക്കൽ.
-* **ഡാറ്റ ആവശ്യകതകൾ**: സിസ്റ്റം എങ്ങനെ എവിടെ ഡാറ്റ ഉപയോഗിക്കും എന്ന് മനസ്സിലാക്കുക, അവലോകനക്കാർക്ക് GDPR, HIPAA പോലുള്ള ഡാറ്റ നിയമങ്ങൾ പരിഗണിക്കാൻ സഹായിക്കും. കൂടാതെ, പരിശീലനത്തിന് ഡാറ്റയുടെ ഉറവിടം, അളവ് മതിയായതാണോ എന്ന് പരിശോധിക്കുക.
-* **പ്രഭാവത്തിന്റെ സംക്ഷേപം**: സിസ്റ്റം ഉപയോഗിച്ച് ഉണ്ടാകാവുന്ന ഹാനികളുടെ പട്ടിക ശേഖരിക്കുക. ML ജീവിതചക്രത്തിൽ കണ്ടെത്തിയ പ്രശ്നങ്ങൾ പരിഹരിക്കപ്പെട്ടിട്ടുണ്ടോ എന്ന് നിരീക്ഷിക്കുക.
-* **ആവശ്യമായ ലക്ഷ്യങ്ങൾ**: ആറ് പ്രധാന സിദ്ധാന്തങ്ങളിൽ ഓരോന്നിനും ലക്ഷ്യങ്ങൾ പാലിക്കപ്പെട്ടിട്ടുണ്ടോ, ഇടവേളകളുണ്ടോ എന്ന് വിലയിരുത്തുക.
## ഉത്തരവാദിത്വമുള്ള AI ഉപയോഗിച്ച് ഡീബഗ്ഗിംഗ്
-സോഫ്റ്റ്വെയർ ആപ്ലിക്കേഷൻ ഡീബഗ്ഗിംഗിനുപോലെ, AI സിസ്റ്റം ഡീബഗ്ഗിംഗ് സിസ്റ്റത്തിലെ പ്രശ്നങ്ങൾ കണ്ടെത്തി പരിഹരിക്കുന്ന അനിവാര്യ പ്രക്രിയയാണ്. മോഡൽ പ്രതീക്ഷിച്ചതുപോലെ പ്രവർത്തിക്കാത്തതിനു പല കാരണങ്ങൾ ഉണ്ടാകാം. പരമ്പരാഗത മോഡൽ പ്രകടന സൂചകങ്ങൾ ഒരു മോഡലിന്റെ പ്രകടനത്തിന്റെ കണക്കുകൂട്ടലുകളാണ്, എന്നാൽ അവ ഉത്തരവാദിത്വമുള്ള AI സിദ്ധാന്തങ്ങൾ ലംഘിക്കുന്ന വിധം വിശകലനം ചെയ്യാൻ പോരാ. കൂടാതെ, മെഷീൻ ലേണിംഗ് മോഡൽ ഒരു ബ്ലാക്ക് ബോക്സാണ്, അതിന്റെ ഫലം എന്തുകൊണ്ട് ഉണ്ടാകുന്നു എന്ന് മനസ്സിലാക്കാനും തെറ്റുകൾ സംഭവിച്ചപ്പോൾ വിശദീകരിക്കാനും ബുദ്ധിമുട്ടാണ്. ഈ കോഴ്സിന്റെ പിന്നീട് ഭാഗങ്ങളിൽ, AI സിസ്റ്റങ്ങൾ ഡീബഗ് ചെയ്യാൻ ഉത്തരവാദിത്വമുള്ള AI ഡാഷ്ബോർഡ് ഉപയോഗിക്കുന്നത് പഠിക്കും. ഡാഷ്ബോർഡ് ഡാറ്റ സയന്റിസ്റ്റുകൾക്കും AI ഡെവലപ്പർമാർക്കും താഴെപ്പറയുന്നവ ചെയ്യാൻ സഹായിക്കുന്ന സമഗ്ര ഉപകരണമാണ്:
+സോഫ്റ്റ്വെയർ ആപ്ലിക്കേഷൻ ഡീബഗ്ഗിങ്ങിനുപോലെ, AI സംവിധാനം വിവരണങ്ങൾ കണ്ടെത്തി പരിഹരിക്കുന്ന പ്രക്രിയ അനിവാര്യമാണ്. മോഡൽ പ്രതീക്ഷിച്ച പോലെ പ്രവർത്തിക്കാതിരിക്കാൻ പല ഘടകങ്ങളും കാരണമാകാം. പലപരമ്പരാഗത മോഡൽ പ്രകടന സൂചികകൾ കണക്കുകൾ മാത്രമാണ്; ഇത് ഉത്തരവാദിത്വമുള്ള AI സിദ്ധാന്തങ്ങൾ ലംഘിക്കുന്ന രീതികൾ വിശകലനം ചെയ്യാൻ പ്രയോജനപ്പെടുന്നില്ല. മെഷീൻ ലേണിംഗ് മോഡൽ ഒരു ബ്ലാക്ക്ബോക്സാണ്, അതിന്റെ ഫലം എന്തുകൊണ്ടാണെന്ന് കണക്കാക്കാനും തെറ്റ് സംഭവിച്ചാൽ വിശദീകരിക്കാനും ബുദ്ധിമുട്ട് ഉണ്ടാക്കുന്നു. ഈ കോഴ്സിൽ പിന്നീട് ഉത്തരവാദിത്വമുള്ള AI ഡാഷ്ബോർഡ് ഉപയോഗിച്ച് AI സംവിധാനം ഡീബഗ് ചെയ്യുന്നത് പഠിക്കും. ഡാഷ്ബോർഡ് ഡാറ്റ സയന്റിസ്റ്റുകളും AI വികസനകരും കോവിഡ് നടത്താൻ സഹായിക്കുന്ന സമഗ്ര ഉപകരണം ആണ്:
+
+* **പിശക് വിശകലനം**. സംവിധാനം ഫെയർനസ്സ് അല്ലെങ്കിൽ വിശ്വാസ്യതയെ ബാധിക്കുന്ന മോഡലിന്റെ പിശക് വിതരണ കണ്ടെത്താൻ.
+* **മോഡൽ അവലോകനം**. ഡാറ്റ കോഹോർട്ടുകളിലെ പ്രകടന വ്യത്യാസങ്ങൾ കണ്ടെത്താൻ.
+* **ഡാറ്റ വിശകലനം**. ഡാറ്റ വിതരണവും സമ്മതമാകാവുന്ന ബയസും മനസിലാക്കാൻ.
+* **മോഡൽ വ്യാഖ്യാനം**. മോഡലിന്റെ പ്രവചനങ്ങളെ സ്വാധീനിക്കുന്ന ഘടകങ്ങൾ മനസിലാക്കാൻ, ഇത് പാരദർശകതക്കും ഉത്തരവാദിത്വത്തിനും ആവശ്യമാണ്.
-* **പിശക് വിശകലനം**: സിസ്റ്റത്തിന്റെ നീതിയിലും വിശ്വാസ്യതയിലും ബാധിക്കുന്ന മോഡലിന്റെ പിശക് വിതരണങ്ങൾ തിരിച്ചറിയാൻ.
-* **മോഡൽ അവലോകനം**: ഡാറ്റ കോഹോർട്ടുകളിൽ മോഡലിന്റെ പ്രകടന വ്യത്യാസങ്ങൾ കണ്ടെത്താൻ.
-* **ഡാറ്റ വിശകലനം**: ഡാറ്റയുടെ വിതരണവും ബയാസുകൾ തിരിച്ചറിയാനും, നീതി, ഉൾക്കൊള്ളൽ, വിശ്വാസ്യത പ്രശ്നങ്ങൾ കണ്ടെത്താനും.
-* **മോഡൽ വ്യാഖ്യാനം**: മോഡലിന്റെ പ്രവചനങ്ങളെ സ്വാധീനിക്കുന്ന ഘടകങ്ങൾ മനസ്സിലാക്കാൻ. ഇത് പാരദർശിത്വത്തിനും ഉത്തരവാദിത്വത്തിനും പ്രധാനമാണ്.
-## 🚀 ചലഞ്ച്
+## 🚀 വെല്ലുവിളി
-ഹാനികൾ ആദ്യഘട്ടത്തിൽ തന്നെ ഉണ്ടാകാതിരിക്കാൻ, നാം:
+ഹാനികൾ ആദ്യത്തേതായി കുറച്ച് നടത്താനായി, നമ്മുക്ക് ചെയ്യേണ്ടത്:
-- സിസ്റ്റങ്ങളിൽ ജോലി ചെയ്യുന്നവരിൽ വ്യത്യസ്ത പശ്ചാത്തലങ്ങളും കാഴ്ചപ്പാടുകളും ഉണ്ടായിരിക്കണം
-- നമ്മുടെ സമൂഹത്തിന്റെ വൈവിധ്യം പ്രതിഫലിപ്പിക്കുന്ന ഡാറ്റാസെറ്റുകളിൽ നിക്ഷേപം നടത്തണം
-- ഉത്തരവാദിത്വമുള്ള AI കണ്ടെത്താനും ശരിയാക്കാനും മെഷീൻ ലേണിംഗ് ജീവിതചക്രത്തിൽ മികച്ച രീതികൾ വികസിപ്പിക്കണം
+- സിസ്റ്റങ്ങൾ വികസിപ്പിക്കുന്നവരിൽ വ്യത്യസ്ത പശ്ചാത്തലങ്ങളും കാഴ്ചപ്പാടുകളും ഉണ്ടായിരിക്കണം
+- നമ്മുടെ സമൂഹത്തിന്റെ വൈവിധ്യം പ്രതിഫലിക്കുന്ന ഡേറ്റാസെറ്റുകളിൽ നിക്ഷേപം നടത്തണം
+- ഉത്തരവാദിത്വമുള്ള AI കണ്ടെത്താനും ശരിയാക്കാനും മെഷീൻ ലേണിംഗ് ജീവിതചക്രത്തിലുടനീളം മെച്ചപ്പെട്ട മാർഗങ്ങൾ വികസിപ്പിക്കണം
-മോഡൽ നിർമ്മാണത്തിലും ഉപയോഗത്തിലും മോഡലിന്റെ വിശ്വസനീയത ഇല്ലായ്മ വ്യക്തമായ യാഥാർത്ഥ്യ സാഹചര്യങ്ങളെക്കുറിച്ച് ചിന്തിക്കുക. മറ്റെന്തെല്ലാം പരിഗണിക്കണം?
+മോഡലിന്റെ വിശ്വസനീയതയ്ക്ക് സംഭവത്തിന്റെ ജീവിതാവസ്ഥകളും ഉപയോഗവും എവിടെയെങ്കിലും തെളിവും ഉണ്ടാകേണ്ട ചില യഥാർത്ഥസംഭവങ്ങൾ ചിന്തിക്കുക. മറ്റെന്തെന്ത് പരിഗണിക്കേണ്ടതാണ്?
+
+## [പിന്നീട് ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/)
-## [പോസ്റ്റ്-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/)
## അവലോകനം & സ്വയം പഠനം
-ഈ പാഠത്തിൽ, മെഷീൻ ലേണിങ്ങിൽ നീതിയും അനീതിയും എന്ന ആശയങ്ങളുടെ ചില അടിസ്ഥാനങ്ങൾ നിങ്ങൾ പഠിച്ചു.
+
+ഈ പാഠത്തിൽ, മെഷീൻ ലേണിങ്ങിലെ നീതി ಮತ್ತು അനീതിയുടെ അടിസ്ഥാന തത്വങ്ങളെക്കുറിച്ച് നിങ്ങൾ പഠിച്ചിട്ടുണ്ട്.
-ഈ വിഷയങ്ങളിൽ കൂടുതൽ ആഴത്തിൽ പ്രവേശിക്കാൻ ഈ വർക്ക്ഷോപ്പ് കാണുക:
+ഈ വിഷയങ്ങളിൽ കൂടുതൽ ആഴത്തിൽയായ പഠനത്തിനായി ഈ വർക്ഷോപ്പ് കാണൂ:
-- ഉത്തരവാദിത്വമുള്ള AI ന്റെ പിന്തുടർച്ചയിൽ: Besmira Nushi, Mehrnoosh Sameki, Amit Sharma എന്നിവരാൽ സിദ്ധാന്തങ്ങളെ പ്രായോഗികതയിലേക്ക് കൊണ്ടുവരുന്നു
+- ഉത്തരവാദിത്തമുള്ള AI പിന്തുടരുന്നതിൽ: Besmira Nushi, Mehrnoosh Sameki, Amit Sharma എന്നിവരുടെ നയം പ്രായോഗികമാക്കുക
[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI")
-> 🎥 വീഡിയോക്കായി മുകളിൽ ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക: Besmira Nushi, Mehrnoosh Sameki, Amit Sharma എന്നിവരാൽ RAI Toolbox: An open-source framework for building responsible AI
+> 🎥 വിഡിയോക്കായി മുകളിലെ ചിത്രം ക്ലിക്ക് ചെയ്യുക: Besmira Nushi, Mehrnoosh Sameki, Amit Sharma എന്നിവരാൽilidad: ഉത്തരവാദിത്തമുള്ള AI നിർമ്മിക്കാൻ ഒരു തുറന്ന ഉറവിട ഘടന
-ഇതും വായിക്കുക:
+അതോടൊപ്പം, വായിക്കൂ:
-- Microsoft ന്റെ RAI റിസോഴ്സ് സെന്റർ: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
+- മൈക്രോസോഫ്റ്റിന്റെ 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/)
+- മൈക്രോസോഫ്റ്റിന്റെ FATE ഗവേഷണ സംഘം: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
-RAI Toolbox:
+RAI Toolbox:
- [Responsible AI Toolbox GitHub repository](https://github.com/microsoft/responsible-ai-toolbox)
-നീതിയുണ്ടാക്കാൻ Azure Machine Learning ന്റെ ഉപകരണങ്ങളെക്കുറിച്ച് വായിക്കുക:
+നീതി ഉറപ്പാക്കുന്നതിനുള്ള Azure മെഷീൻ ലേണിങ്ങിന്റെ ടൂളുകൾക്കുറിച്ച് വായിക്കൂ:
-- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
+- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
## അസൈൻമെന്റ്
-[RAI Toolbox പരിശോധിക്കുക](assignment.md)
+[RAI Toolbox പര്യവേക്ഷണം ചെയ്യുക](assignment.md)
---
-**അസൂയാ**:
-ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല.
+**അറിയിപ്പ്**:
+ഈ രേഖ AI പരിഭാഷാ സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് പരിഭാഷപ്പെടുത്തിയതാണ്. ഞങ്ങൾ കൃത്യതയ്ക്കായി ശ്രമിക്കുന്നുവെങ്കിലും, ഓട്ടോമേറ്റഡ് പരിഭാഷകളിൽ പിഴവുകൾ അല്ലെങ്കിൽ തെറ്റായ വിവരങ്ങൾ ഉണ്ടാകാൻ സാധ്യതയുണ്ട്. അതിന്റെ സ്വാഭാവിക ഭാഷയിലുള്ള അസൽ രേഖയാണ് പ്രാമാണികമായ ഉറവിടമായി പരിഗണിക്കേണ്ടത്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ പരിഭാഷ ശുപാർശ ചെയ്യുന്നു. ഈ പരിഭാഷ ഉപയോഗിച്ച് ഉണ്ടാകുന്ന തെറ്റിദ്ധാരണകൾ അല്ലെങ്കിൽ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കായി ഞങ്ങൾ ഉത്തരവാദികളല്ല.
\ No newline at end of file
diff --git a/translations/ml/2-Regression/1-Tools/README.md b/translations/ml/2-Regression/1-Tools/README.md
index 83e5196be..8a471a6a7 100644
--- a/translations/ml/2-Regression/1-Tools/README.md
+++ b/translations/ml/2-Regression/1-Tools/README.md
@@ -1,121 +1,121 @@
-# Python ഉം Scikit-learn ഉം ഉപയോഗിച്ച് regression മോഡലുകൾ ആരംഭിക്കുക
+# റിഗ്രഷൻ മോഡലുകൾക്കായി Python, Scikit-learn ഉപയോഗിച്ച് തുടങ്ങാം
-
+
-> Sketchnote by [Tomomi Imura](https://www.twitter.com/girlie_mac)
+> [Tomomi Imura](https://www.twitter.com/girlie_mac)എഴുതിയ സ്കെച്ചോടി
-## [Pre-lecture quiz](https://ff-quizzes.netlify.app/en/ml/)
+## [പ്രീ-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/)
-> ### [ഈ പാഠം R-ൽ ലഭ്യമാണ്!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
+> ### [ഈ പാഠം R-ലിലും ലഭ്യമാണ്!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
## പരിചയം
-ഈ നാല് പാഠങ്ങളിൽ, നിങ്ങൾ regression മോഡലുകൾ എങ്ങനെ നിർമ്മിക്കാമെന്ന് കണ്ടെത്തും. ഇവ എന്തിനാണെന്ന് നമുക്ക് ഉടൻ ചർച്ച ചെയ്യാം. എന്നാൽ എന്തെങ്കിലും ചെയ്യുന്നതിന് മുമ്പ്, പ്രക്രിയ ആരംഭിക്കാൻ ആവശ്യമായ ശരിയായ ഉപകരണങ്ങൾ നിങ്ങൾക്കുണ്ടെന്ന് ഉറപ്പാക്കുക!
+ഈ നാല് പಾಠങ്ങളിൽ, നിങ്ങൾ റിഗ്രഷൻ മോഡലുകൾ എങ്ങനെ നിർമ്മിക്കാമെന്ന് കണ്ടുപിടിക്കും. ഇവ എന്തിന് വേണ്ടിയാണെന്ന് കുറച്ചു സമയം മുന്നേ നിർവചിക്കും. എന്നാൽ എന്ത് ചെയ്യുകയുമുണ്ടാകുന്നതിന് മുമ്പ്, ആരംഭിക്കുന്നതിന് مناسبമായ ഉപകരണങ്ങൾ നിങ്ങളുടെ കിണറ്റിൽ ഉണ്ടെന്ന് ഉറപ്പാക്കുക!
-ഈ പാഠത്തിൽ, നിങ്ങൾ പഠിക്കാനിരിക്കുന്നതെന്തെന്നാൽ:
+ഈ പാഠത്തിൽ, നിങ്ങൾ പഠിക്കും:
-- ലൊക്കൽ മെഷീൻ ലേണിംഗ് ടാസ്കുകൾക്കായി നിങ്ങളുടെ കമ്പ്യൂട്ടർ ക്രമീകരിക്കുക.
-- Jupyter നോട്ട്ബുക്കുകളുമായി പ്രവർത്തിക്കുക.
-- Scikit-learn ഉപയോഗിക്കുക, ഇൻസ്റ്റാളേഷൻ ഉൾപ്പെടെ.
-- ലീനിയർ regression ഒരു ഹാൻഡ്സ്-ഓൺ വ്യായാമത്തോടെ പരിശോധിക്കുക.
+- നിങ്ങളുടെ കമ്പ്യൂട്ടർ ലോക്കൽ മെഷീൻ ലേണിങ് പ്രവർത്തനങ്ങൾക്ക് എങ്ങനെ ക്രമീകരിക്കാം.
+- Jupyter Notebooks-ഉം എങ്ങനെ ഉപയോഗിക്കാം.
+- Scikit-learn ഉപയോഗം, ഇൻസ്റ്റാളേഷൻ ഉൾപ്പെടെ.
+- കുറച്ച് പ്രായോഗിക അഭ്യാസത്തോടെ ലൈനിയർ റിഗ്രഷൻ പരിശോധിക്കുക.
## ഇൻസ്റ്റാളേഷനുകളും ക്രമീകരണങ്ങളും
[](https://youtu.be/-DfeD2k2Kj0 "ML for beginners -Setup your tools ready to build Machine Learning models")
-> 🎥 ML ക്രമീകരണത്തിനായി നിങ്ങളുടെ കമ്പ്യൂട്ടർ ക്രമീകരിക്കുന്നതിനുള്ള ഒരു ചെറിയ വീഡിയോക്കായി മുകളിൽ ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക.
+> 🎥 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) ലഭ്യമാണ്.
+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) ഉപയോഗിച്ച് പ്രവർത്തിക്കുന്നത് ഉപകാരപ്രദമാണ്.
+ Python-ന്റെ ചില ഉപയോഗങ്ങൾക്ക് ഒരേ സോഫ്റ്റ്വെയറിന്റെ ഒരു വേർഷൻ ആവശ്യമാണ്, മറ്റുചില സന്ദർഭങ്ങളിൽ മറ്റൊരു വേർഷൻ ആവശ്യമാണ്. അതിനാൽ, [വുർച്വൽ എൻവയോൺമെന്റ്](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) എന്നത് അറിയാൻ നിങ്ങൾ ആഗ്രഹിക്കാം.
+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) ശേഖരം വഴി പ്രവർത്തിക്കുക
+ > Python-നുമായി പരിചയപ്പെടാൻ ഈ [Learn modules](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) ശേഖരം ഉപയോഗിക്കുക
>
- > [](https://youtu.be/yyQM70vi7V8 "Setup Python with Visual Studio Code")
+ > [](https://youtu.be/yyQM70vi7V8 "Visual Studio Code-ൽ Python ക്രമീകരിക്കുക")
>
- > 🎥 VS Code-ൽ Python ഉപയോഗിക്കുന്നതിനുള്ള വീഡിയോക്കായി മുകളിൽ ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക.
+ > 🎥 VS Code-ൽ Python ഉപയോഗിച്ച് പ്രവർത്തിക്കുന്ന വീഡിയോയ്ക്ക് മുകളിൽ ചിത്രം ക്ലിക്കുചെയ്യുക.
-3. **Scikit-learn ഇൻസ്റ്റാൾ ചെയ്യുക**, [ഈ നിർദ്ദേശങ്ങൾ](https://scikit-learn.org/stable/install.html) പിന്തുടർന്ന്. Python 3 ഉപയോഗിക്കുന്നതെന്ന് ഉറപ്പാക്കേണ്ടതിനാൽ, virtual environment ഉപയോഗിക്കുന്നത് ശുപാർശ ചെയ്യുന്നു. M1 Mac-ൽ ഈ ലൈബ്രറി ഇൻസ്റ്റാൾ ചെയ്യുമ്പോൾ പ്രത്യേക നിർദ്ദേശങ്ങൾ ഉണ്ട്, മുകളിൽ നൽകിയ ലിങ്കിൽ കാണാം.
+3. **Scikit-learn ഇൻസ്റ്റാൾ ചെയ്യുക**. [ഈ നിർദ്ദേശങ്ങൾ](https://scikit-learn.org/stable/install.html) പിന്തുടരുക. Python 3 ഉപയോഗിക്കുന്നതായി ഉറപ്പാക്കേണ്ടതിനാൽ വർച്ച്വൽ എൻവയോൺമെന്റ് ഉപയോഗിക്കുന്നത് ശുപാർശ ചെയ്യുന്നു. M1 Mac-ൽ ഇൻസ്റ്റാൾ ചെയ്യുമ്പോഴുള്ള പ്രത്യേക നിർദ്ദേശങ്ങൾ പേജ് കൂടെ നൽകിയിട്ടുണ്ട്.
-1. **Jupyter Notebook ഇൻസ്റ്റാൾ ചെയ്യുക**. [Jupyter പാക്കേജ് ഇൻസ്റ്റാൾ ചെയ്യേണ്ടതുണ്ട്](https://pypi.org/project/jupyter/).
+1. **Jupyter Notebook ഇൻസ്റ്റാൾ ചെയ്യുക**. [Jupyter പാക്കേജ്](https://pypi.org/project/jupyter/) ഇൻസ്റ്റാൾ ചെയ്യേണ്ടതാണ്.
-## നിങ്ങളുടെ ML എഴുത്ത് പരിസ്ഥിതി
+## നിങ്ങളുടെ ML എഴുത്തു പരിസ്ഥിതി
-Python കോഡ് വികസിപ്പിക്കുകയും മെഷീൻ ലേണിംഗ് മോഡലുകൾ സൃഷ്ടിക്കുകയും ചെയ്യാൻ നിങ്ങൾ **നോട്ട്ബുക്കുകൾ** ഉപയോഗിക്കും. ഈ തരത്തിലുള്ള ഫയൽ ഡാറ്റാ സയന്റിസ്റ്റുകൾക്കുള്ള സാധാരണ ഉപകരണമാണ്, അവയുടെ സഫിക്സ് അല്ലെങ്കിൽ എക്സ്റ്റൻഷൻ `.ipynb` ആണ്.
+Python കോഡ് വികസിപ്പിക്കാനും മെഷീൻ ലേണിങ് മോഡലുകൾ സൃഷ്ടിക്കാനും നിങ്ങൾ **നോട്ട്ബുക്കുകൾ** ഉപയോഗിക്കുന്നു. ഈ തരത്തിലുള്ള ഫയലുകൾ ഡാറ്റാ സയന്റിസ്റ്റുകൾക്ക് സാധാരണ ഉപകരണമാണ്, ഇവ `.ipynb` എന്ന സഫ്ഫിക്സ് അല്ലെങ്കിൽ എക്സ്റ്റൻഷൻ വഴി തിരിച്ചറിയാം.
-നോട്ട്ബുക്കുകൾ ഒരു ഇന്ററാക്ടീവ് പരിസ്ഥിതിയാണ്, ഡെവലപ്പർക്ക് കോഡ് ചെയ്യാനും കുറിപ്പുകൾ ചേർക്കാനും, കോഡിന്റെ ചുറ്റുപാടിൽ ഡോക്യുമെന്റേഷൻ എഴുതാനും അനുവദിക്കുന്നു, ഇത് പരീക്ഷണാത്മക അല്ലെങ്കിൽ ഗവേഷണ-കേന്ദ്രിത പദ്ധതികൾക്ക് വളരെ സഹായകരമാണ്.
+നോട്ബുക്കുകൾ ഒരു ഇന്ററാക്ടീവ് പരിസ്ഥിതിയാണ്, കോഡ് എഴുതുന്നതിനോടൊപ്പം കുറിപ്പുകൾ ചേർക്കാനും ഡോക്യുമെന്റേഷൻ എഴുതാനുമുള്ള സൗകര്യമുള്ളത്, ഇത് പരീക്ഷണാത്മകമായോ ഗവേഷണ-ആധാരിതമായ പ്രോജക്റ്റുകൾക്കായി ഉപകാരപ്രദമാണ്.
-[](https://youtu.be/7E-jC8FLA2E "ML for beginners - Set up Jupyter Notebooks to start building regression models")
+[](https://youtu.be/7E-jC8FLA2E "ML for beginners - Jupyter Notebooks ക്രമീകരിച്ച് റിഗ്രഷൻ മോഡലുകൾ സൃഷ്ടിക്കാൻ തുടങ്ങുക")
-> 🎥 ഈ വ്യായാമം ചെയ്യുന്നതിനുള്ള ചെറിയ വീഡിയോക്കായി മുകളിൽ ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക.
+> 🎥 ഈ അഭ്യാസം നടത്തുന്നതിനുള്ള ചുരുക്ക വീഡിയോയ്ക്ക് മുകളിൽ ചിത്രം ക്ലിക്കുചെയ്യുക.
-### വ്യായാമം - ഒരു നോട്ട്ബുക്കുമായി പ്രവർത്തിക്കുക
+### അഭ્યાસം - ഒരു നോട്ട്ബുക്കുമായി പ്രവർത്തിക്കുക
-ഈ ഫോൾഡറിൽ, നിങ്ങൾക്ക് _notebook.ipynb_ ഫയൽ കാണാം.
+ഈ ഫോൾഡറിൽ _notebook.ipynb_ ഫയൽ കണ്ടെത്തും.
1. Visual Studio Code-ൽ _notebook.ipynb_ തുറക്കുക.
- Python 3+ ഉപയോഗിച്ച് Jupyter സെർവർ ആരംഭിക്കും. നോട്ട്ബുക്കിന്റെ ഭാഗങ്ങൾ `run` ചെയ്യാവുന്നതാണ്, കോഡ് ഭാഗങ്ങൾ. പ്ലേ ബട്ടൺ പോലുള്ള ഐക്കൺ തിരഞ്ഞെടുക്കുന്നതിലൂടെ കോഡ് ബ്ലോക്ക് റൺ ചെയ്യാം.
+ Jupyter സെർവർ Python 3+ കോഴ്ഡ് ആരംഭിക്കും. നോട്ട്ബുക്കിൽ `run` ചെയ്യാവുന്ന കോഡ് ഭാഗങ്ങൾ ഉണ്ടാകും. പ്ലേ ബട്ടൺ പോലുള്ള ഐകോൺ തിരഞ്ഞെടുക്കുമ്പോൾ കോഡ് ബ്ലോക്ക് പ്രവർത്തിപ്പിക്കാം.
-1. `md` ഐക്കൺ തിരഞ്ഞെടുക്കുക, കുറച്ച് markdown ചേർക്കുക, താഴെ കാണുന്ന വാചകം **# Welcome to your notebook** ചേർക്കുക.
+1. `md` ഐകോൺ തിരഞ്ഞെടുക്കുക, കുറച്ചു മാർക്ക്ഡൗൺ ചേർക്കുക, തുടർന്ന് **# Welcome to your notebook** എന്ന് ടൈപ്പു ചെയ്യുക.
- തുടർന്ന്, Python കോഡ് ചേർക്കുക.
+ തുടര്ന്ന് കുറച്ച് Python കോഡ് ചേർക്കുക.
1. കോഡ് ബ്ലോക്കിൽ **print('hello notebook')** ടൈപ്പ് ചെയ്യുക.
-1. കോഡ് റൺ ചെയ്യാൻ അമ്പ് ഐക്കൺ തിരഞ്ഞെടുക്കുക.
+1. കോഡ് ഓടിക്കാൻ ഐക്കൺ സെലക്ട് ചെയ്യുക.
- നിങ്ങൾക്ക് പ്രിന്റ് ചെയ്ത പ്രസ്താവന കാണാം:
+ നിങ്ങൾക്ക് അച്ചടിച്ച പ്രസ്താവന കാണാൻ സാധിക്കും:
```output
hello notebook
```
-
+
-നിങ്ങളുടെ കോഡിനൊപ്പം കുറിപ്പുകൾ ചേർത്ത് നോട്ട്ബുക്ക് സ്വയം ഡോക്യുമെന്റ് ചെയ്യാം.
+നിങ്ങൾക്ക് കോഡുമായി ചേർന്ന് അഭിപ്രായങ്ങളും, സ്വയം-ഡോക്യുമെന്റേഷൻ ചെയ്യുന്നതിനുള്ള കുറിപ്പുകളും ചേർക്കാം.
-✅ വെബ് ഡെവലപ്പറുടെ പ്രവർത്തന പരിസ്ഥിതിയും ഡാറ്റാ സയന്റിസ്റ്റിന്റെ പ്രവർത്തന പരിസ്ഥിതിയും എത്ര വ്യത്യസ്തമാണെന്ന് ഒരു നിമിഷം ചിന്തിക്കുക.
+✅ വെബ് ഡവലപ്പറുടെ പ്രവർത്തന പരിസ്ഥിതിയും ഡാറ്റാ സയന്റിസ്റ്റിന്റെ പരിസ്ഥിതിയും എത്ര വ്യത്യസ്തമാണെന്ന് കുറച്ച് ആലോചിക്കുക.
-## Scikit-learn ഉപയോഗിച്ച് പ്രവർത്തനം ആരംഭിക്കുക
+## Scikit-learn ഉപയോഗിക്കാൻ തയ്യാറാകാം
-ഇപ്പോൾ Python നിങ്ങളുടെ ലൊക്കൽ പരിസ്ഥിതിയിൽ ക്രമീകരിച്ചിരിക്കുന്നു, Jupyter നോട്ട്ബുക്കുകളുമായി നിങ്ങൾ പരിചിതരാണ്, Scikit-learn-നോടും സമാനമായി പരിചിതരാകാം (`sci` എന്ന് ഉച്ചരിക്കാം, `science` പോലെ). Scikit-learn ML ടാസ്കുകൾ ചെയ്യാൻ സഹായിക്കുന്ന [വ്യാപകമായ API](https://scikit-learn.org/stable/modules/classes.html#api-ref) നൽകുന്നു.
+Python നിങ്ങളുടെ ലോക്കൽ പരിസ്ഥിതിയിൽ ക്രമീകരിച്ചിരിക്കുന്നതിനാലും Jupyter Notebooks ഉപയോഗിക്കാൻ നിങ്ങൾക്കു പരിചയമുണ്ടെന്നതിനാലും ഇനി Scikit-learn-നുമായി സമാനം പരിചയപ്പെടാം (`sci` എന്നത് `science` എന്ന പോലെ ഉച്ചാരിക്കുക). Scikit-learn ഏറെ വിപുലമായ [API](https://scikit-learn.org/stable/modules/classes.html#api-ref) നൽകുന്നു, ML പ്രവർത്തനങ്ങൾക്കായി സഹായിക്കാൻ.
-അവരുടെ [വെബ്സൈറ്റ്](https://scikit-learn.org/stable/getting_started.html) പ്രകാരം, "Scikit-learn ഒരു ഓപ്പൺ സോഴ്സ് മെഷീൻ ലേണിംഗ് ലൈബ്രറിയാണ്, ഇത് supervised, unsupervised ലേണിംഗ് പിന്തുണയ്ക്കുന്നു. മോഡൽ ഫിറ്റിംഗ്, ഡാറ്റ പ്രീപ്രോസസ്സിംഗ്, മോഡൽ സെലക്ഷൻ, മൂല്യനിർണ്ണയം, മറ്റ് പല ഉപകരണങ്ങളും ഇത് നൽകുന്നു."
+അവരുടെ [വെബ്സൈറ്റ്](https://scikit-learn.org/stable/getting_started.html) പ്രകാരം, "Scikit-learn ഒരു ഓപ്പൺ സോഴ്സ് മെഷീൻ ലേണിങ് ലൈബ്രറിയാണ്, ഇതിൽ സർവൈസ്ഡ് ആൻഡ് അൺസർവൈസ്ഡ് ലേണിങ് പിന്തുണയ്ക്കുന്നുണ്ട്. മോഡൽ ഫിറ്റിംഗ്, ഡാറ്റാ പ്രീപ്രോസസ്സിംഗ്, മോഡൽ തിരഞ്ഞെടുപ്പ്, മൂല്യനിർണ്ണയം തുടങ്ങിയ പല ഉപകരണങ്ങളും നൽകുന്നു."
-ഈ കോഴ്സിൽ, നിങ്ങൾ Scikit-learn ഉൾപ്പെടെയുള്ള ഉപകരണങ്ങൾ ഉപയോഗിച്ച് 'പരമ്പരാഗത മെഷീൻ ലേണിംഗ്' ടാസ്കുകൾ നിർവഹിക്കുന്ന മോഡലുകൾ നിർമ്മിക്കും. നാം ന്യുറൽ നെറ്റ്വർക്കുകളും ഡീപ്പ് ലേണിംഗും ഒഴിവാക്കിയിട്ടുണ്ട്, കാരണം അവ 'AI for Beginners' പാഠ്യപദ്ധതിയിൽ കൂടുതൽ വിശദമായി ഉൾപ്പെടുത്തിയിട്ടുണ്ട്.
+ഈ കോഴ്സിൽ நீங்கள் Scikit-learnയും മറ്റ് ഉപകരണങ്ങളും ഉപയോഗിച്ച് മെഷീൻ ലേണിങ് മോഡലുകൾ നിർമ്മിച്ച് 'പരമ്പരാഗത മെഷീൻ ലേണിങ്' പ്രവർത്തനങ്ങൾ നടത്തും. നാം തദ്ദേശീയമായി നർവൽ നെറ്റ്വർക്ക്സും ഡീപ്പ് ലേണിങ്ങും ഒഴിവാക്കിയതാണ്, അവ 'AI for Beginners' കോഴ്സിൽ ഉൾപ്പെടുത്തി പഠിപ്പിക്കും.
-Scikit-learn മോഡലുകൾ നിർമ്മിക്കുകയും അവ വിലയിരുത്തുകയും ചെയ്യാൻ എളുപ്പമാണ്. ഇത് പ്രധാനമായും സംഖ്യാത്മക ഡാറ്റ ഉപയോഗിക്കുന്നതിനാണ്, പഠന ഉപകരണങ്ങളായി ഉപയോഗിക്കാൻ നിരവധി റെഡി-മെയ്ഡ് ഡാറ്റാസെറ്റുകൾ ഉൾക്കൊള്ളുന്നു. വിദ്യാർത്ഥികൾക്ക് പരീക്ഷിക്കാൻ മുൻകൂട്ടി നിർമ്മിച്ച മോഡലുകളും ഇതിൽ ഉൾപ്പെടുന്നു. ആദ്യം, പാക്കേജ് ചെയ്ത ഡാറ്റ ലോഡ് ചെയ്യുകയും Scikit-learn-ന്റെ ബിൽറ്റ്-ഇൻ എസ്റ്റിമേറ്റർ ഉപയോഗിച്ച് അടിസ്ഥാന ML മോഡൽ നിർമ്മിക്കലും പരിശോധിക്കാം.
+Scikit-learn മോഡലുകൾ നിർമ്മിക്കുക, അവ വിലയിരുത്തുക എന്ന കാര്യങ്ങൾ എളുപ്പമാക്കുന്നു. സംഖ്യാത്മക ഡാറ്റയ്ക്കു കേന്ദ്രീകരിച്ചിരിക്കുന്നു, പഠന സഹായിപ്പുകൾക്ക് നിരവധി റെഡി-മെയ്ഡ് ഡാറ്റാസെറ്റുകൾ ഉൾക്കൊള്ളുന്നു. വിദ്യാർത്ഥികൾക്ക് പരീക്ഷിക്കാൻ തയ്യാറാക്കിയ മോഡലുകളും ഉണ്ട്. വരെയ്ക്കും ഡാറ്റ ഉപയോഗിച്ച് നിര്മിച്ച Scikit-learn-ന്റെ നിർമ്മിതഘടകവും പ്രാഥമിക മോഡലും ഉപയോഗിച്ച് പ്രവർത്തന പ്രക്രിയ പരിശോധിക്കാം.
-## വ്യായാമം - നിങ്ങളുടെ ആദ്യ Scikit-learn നോട്ട്ബുക്ക്
+## അഭ്യാസം - നിങ്ങളുടെ ആദ്യ Scikit-learn നോട്ട്ബുക്ക്
-> ഈ ട്യൂട്ടോറിയൽ Scikit-learn വെബ്സൈറ്റിലെ [linear regression ഉദാഹരണത്തിൽ](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) നിന്നാണ് പ്രചോദനം ലഭിച്ചത്.
+> ഈ ട്യൂട്ടോറിയൽ 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 "ML for beginners - Your First Linear Regression Project in Python")
+[](https://youtu.be/2xkXL5EUpS0 "ML for beginners - Python-ൽ നിങ്ങളുടെ ആദ്യ ലൈനിയർ റിഗ്രഷൻ പ്രോജക്റ്റ്")
-> 🎥 ഈ വ്യായാമം ചെയ്യുന്നതിനുള്ള ചെറിയ വീഡിയോക്കായി മുകളിൽ ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക.
+> 🎥 ഈ അഭ്യാസം നടത്തുന്നതിനുള്ള ചുരുക്ക വീഡിയോയ്ക്ക് മുകളിൽ ചിത്രം ക്ലിക്കുചെയ്യുക.
-ഈ പാഠവുമായി ബന്ധപ്പെട്ട _notebook.ipynb_ ഫയലിൽ, എല്ലാ സെല്ലുകളും 'trash can' ഐക്കൺ അമർത്തി ക്ലിയർ ചെയ്യുക.
+ഈ പാഠത്തോട് ബന്ധപ്പെട്ട _notebook.ipynb_ ഫയലിൽ എല്ലാ സെല്ലുകളും 'trash can' ഐക്കൺ അമർത്തി നീക്കം ചെയ്യുക.
-ഈ വിഭാഗത്തിൽ, Scikit-learn-ൽ പഠനത്തിനായി ഉൾപ്പെടുത്തിയ ചെറിയ ഡയബറ്റീസ് ഡാറ്റാസെറ്റ് ഉപയോഗിച്ച് പ്രവർത്തിക്കും. ഡയബറ്റിക് രോഗികൾക്കായി ഒരു ചികിത്സ പരീക്ഷിക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നതായി കരുതുക. മെഷീൻ ലേണിംഗ് മോഡലുകൾ, വ്യത്യസ്ത വേരിയബിളുകളുടെ സംയോജനങ്ങളുടെ അടിസ്ഥാനത്തിൽ, ഏത് രോഗികൾ ചികിത്സയ്ക്ക് മികച്ച പ്രതികരണം നൽകുമെന്ന് നിർണ്ണയിക്കാൻ സഹായിക്കാം. വളരെ അടിസ്ഥാന regression മോഡൽ പോലും, ദൃശ്യവൽക്കരിച്ചാൽ, സിദ്ധാന്തപരമായ ക്ലിനിക്കൽ ട്രയലുകൾ ക്രമീകരിക്കാൻ സഹായിക്കുന്ന വേരിയബിളുകളെക്കുറിച്ച് വിവരങ്ങൾ കാണിക്കാം.
+ഈ ഭാഗത്ത്, പഠന ഉദ്ദേശ്യങ്ങൾക്ക് Scikit-learn-ൽ ഉൾപ്പെടുത്തിയ ചെറിയ ഡയബിറ്റീസ് ഡാറ്റാസെറ്റ് ഉപയോഗിക്കും. ഈ കുഞ്ഞ് ഡാറ്റaset ഉപയോഗിച്ച്, ഡയബറ്റിക് രോഗികൾക്കുള്ള ചികിത്സ പരീക്ഷിക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നു എന്ന് കരുതുക. മെഷീൻ ലേണിങ് മോഡലുകൾ ഏതൊക്കെ രോഗികൾ ചികിത്സക്ക് നല്ല പ്രതികരണം നൽകുമെന്ന് Variables കൂട്ടങ്ങൾ അടിസ്ഥാനമാക്കി പ്രവചനമുണ്ടാക്കാൻ സഹായിക്കും. വളരെ അടിസ്ഥാന റിഗ്രഷൻ മോഡൽ ഭാവിക്കുകയും കാണിക്കുകയും ചെയ്യുമ്പോൾ, നിങ്ങൾക്കു സൈദ്ധാന്തിക ക്ലിനിക്കൽ പരീക്ഷണങ്ങൾ സംഘടിപ്പിക്കാൻ സഹായിക്കുന്ന Variables സംബന്ധിച്ച വിവരങ്ങൾ കാണാൻ കഴിയും.
-✅ regression രീതികളുടെ പല തരങ്ങളും ഉണ്ട്, നിങ്ങൾ തിരഞ്ഞെടുക്കുന്നത് നിങ്ങൾ അന്വേഷിക്കുന്ന ഉത്തരത്തിന്റെ അടിസ്ഥാനത്തിലാണ്. ഒരു വ്യക്തിയുടെ പ്രായം നൽകിയാൽ അവന്റെ സാധ്യതയുള്ള ഉയരം പ്രവചിക്കാൻ linear regression ഉപയോഗിക്കും, കാരണം നിങ്ങൾ **സംഖ്യാത്മക മൂല്യം** തേടുകയാണ്. ഒരു ഭക്ഷണരീതിയെ വെഗൻ ആണോ അല്ലയോ എന്ന് കണ്ടെത്താൻ ആഗ്രഹിക്കുന്നുവെങ്കിൽ, നിങ്ങൾ **വർഗ്ഗം നിശ്ചയിക്കൽ** അന്വേഷിക്കുന്നതാണ്, അതിനാൽ logistic regression ഉപയോഗിക്കും. logistic regression പിന്നീട് പഠിക്കും. ഡാറ്റയിൽ നിന്ന് ചോദിക്കാവുന്ന ചില ചോദ്യങ്ങളെ കുറിച്ച് ചിന്തിക്കുക, ഏത് രീതികൾ കൂടുതൽ അനുയോജ്യമാണ് എന്ന്.
+✅ ഒരുപാട് തരത്തിലുള്ള റിഗ്രഷൻ രീതികൾ ഉണ്ട്, തിരഞ്ഞെടുക്കുക നിങ്ങൾ അന്വേഷിക്കുന്ന മറുപടിക്ക് അനുസരിച്ച്. ഒരു വ്യക്തിയുടെ കൊടുത്ത വയസ്സിനുള്ള സാധ്യതയുള്ള ഉയരം പ്രവചിക്കാൻ linear regression ആണ് ഉപയോഗിക്കേണ്ടത്; കാരണം നിങ്ങൾ **സംഖ്യാത്മക മൂല്യം** അന്വേഷിക്കുന്നു. നിങ്ങൾ ഒരു ഭക്ഷണ തരം വീഗൻ ആണോ എന്നത് കണ്ടെത്താൻ ആഗ്രഹിക്കുന്നുവെങ്കിൽ, നിങ്ങൾ **വർഗ്ഗ നിശ്ചയത്തിന്** വേണ്ടി logistic regression ഉപയോഗിക്കും. logistic regression പിന്നീട് പഠിക്കാം. ഡാറ്റയിൽ ചോദിക്കാവുന്ന ചില ചോദ്യങ്ങളും ഇത്തരത്തിലുള്ള രീതികളിൽ ഏത് ഉപയോഗിക്കുമെന്നതും കുറച്ച് വിചാരിക്കുക.
-ഈ ടാസ്ക് ആരംഭിക്കാം.
+ഈ ഏർപ്പെടുത്തലും തുടക്കം കുറിക്കാം.
### ലൈബ്രറികൾ ഇറക്കുമതി ചെയ്യുക
-ഈ ടാസ്കിനായി ചില ലൈബ്രറികൾ ഇറക്കുമതി ചെയ്യാം:
+ഈ പ്രവർത്തനത്തിനായി ചില ലൈബ്രറികൾ ഇറക്കുമതി ചെയ്യാം:
-- **matplotlib**. ഇത് ഒരു ഉപകാരപ്രദമായ [ഗ്രാഫിംഗ് ടൂൾ](https://matplotlib.org/) ആണ്, ലൈന്പ്ലോട്ട് സൃഷ്ടിക്കാൻ ഉപയോഗിക്കും.
-- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) Python-ൽ സംഖ്യാത്മക ഡാറ്റ കൈകാര്യം ചെയ്യാൻ സഹായിക്കുന്ന ലൈബ്രറിയാണ്.
+- **matplotlib**. ഇത് ഒരു ഉപകാരപ്രദമായ [ഗ്രാഫിക് ഉപകരണം](https://matplotlib.org/) ആണ്, നമുക്ക് ഒരു ലൈന്പ്ലോട്ട് സൃഷ്ടിക്കാൻ ഇത് ഉപയോഗിക്കുന്നതാണ്.
+- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) Python-ൽ സംഖ്യാത്മക ഡാറ്റ കൈകാര്യം ചെയ്യുന്നതിന് സഹായിക്കുന്ന ഒരു ഉപയോഗപ്രദ ലൈബ്രറി.
- **sklearn**. ഇത് [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) ലൈബ്രറിയാണ്.
-നിങ്ങളുടെ ടാസ്കുകൾക്ക് സഹായം നൽകാൻ ചില ലൈബ്രറികൾ ഇറക്കുമതി ചെയ്യുക.
+നിങ്ങളുടെ പ്രവർത്തനങ്ങൾക്ക് സഹായിക്കുന്നതിനായി ചില ലൈബ്രറികൾ ഇറക്കുമതി ചെയ്യുക.
-1. താഴെ കാണുന്ന കോഡ് ടൈപ്പ് ചെയ്ത് ഇറക്കുമതി ചേർക്കുക:
+1. ഇപ്രകാരം താഴെയുള്ള കോഡ് ടൈപ്പ് ചെയ്ത് ഇറക്കുമതി ചേർക്കുക:
```python
import matplotlib.pyplot as plt
@@ -123,26 +123,26 @@ Scikit-learn മോഡലുകൾ നിർമ്മിക്കുകയും
from sklearn import datasets, linear_model, model_selection
```
- മുകളിൽ നിങ്ങൾ `matplotlib`, `numpy` ഇറക്കുമതി ചെയ്യുന്നു, കൂടാതെ `sklearn`-ൽ നിന്ന് `datasets`, `linear_model`, `model_selection` ഇറക്കുമതി ചെയ്യുന്നു. `model_selection` ഡാറ്റ പരിശീലനവും ടെസ്റ്റ് സെറ്റുകളിലായി വിഭജിക്കാൻ ഉപയോഗിക്കുന്നു.
+ മുകളിൽ നിങ്ങൾ `matplotlib`, `numpy` ഇറക്കുമതി ചെയ്യുന്നു, കൂടാതെ `datasets`, `linear_model`, `model_selection` `sklearn`-ലിൽ നിന്ന് ഇറക്കുമതി ചെയ്യുന്നു. `model_selection` ഡാറ്റ പരിശീലനത്തിനും പരീക്ഷണത്തിനും വിഭജിക്കാനാണ് ഉപയോഗിക്കുന്നത്.
-### ഡയബറ്റീസ് ഡാറ്റാസെറ്റ്
+### ഡയബിറ്റീസ് ഡാറ്റാസെറ്റ്
-ഇൻബിൽറ്റ് [ഡയബറ്റീസ് ഡാറ്റാസെറ്റ്](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) 442 സാമ്പിളുകൾ ഉൾക്കൊള്ളുന്നു, 10 ഫീച്ചർ വേരിയബിളുകളോടെ, ചിലത്:
+ഇൻബിൽറ്റ് [ഡയബിറ്റീസ് ഡാറ്റാസെറ്റ്](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) 442 സാമ്പിളുകളടങ്ങിയിരിക്കുന്നു, 10 ഫീച്ചർ വേരിയബിൾസ് ഉൾപ്പെടെ ചിലത്:
-- പ്രായം: വയസ്സിൽ
+- വയസ്സ്: വയസ് വർഷങ്ങളിൽ
- bmi: ബോഡി മാസ്സ് ഇൻഡക്സ്
-- bp: ശരാശരി രക്തസമ്മർദ്ദം
-- s1 tc: ടി-സെല്ലുകൾ (വെളുത്ത രക്തകോശങ്ങളുടെ ഒരു തരം)
+- bp: ശരാശരി രക്തദബ്ബം
+- s1 tc: T-സെല്ലുകൾ (ഒരു സ്പെസിഫിക് വെളുത്ത രക്താശയം)
-✅ ഈ ഡാറ്റാസെറ്റിൽ 'sex' എന്ന binary ക്ലാസിഫിക്കേഷൻ ഫീച്ചർ വേരിയബിൾ ഉൾക്കൊള്ളുന്നു, ഡയബറ്റീസ് ഗവേഷണത്തിന് പ്രധാനമാണ്. പല മെഡിക്കൽ ഡാറ്റാസെറ്റുകളും ഇത്തരത്തിലുള്ള binary ക്ലാസിഫിക്കേഷൻ ഉൾക്കൊള്ളുന്നു. ഇത്തരത്തിലുള്ള വർഗ്ഗീകരണങ്ങൾ ജനസംഖ്യയുടെ ചില ഭാഗങ്ങളെ ചികിത്സകളിൽ നിന്ന് ഒഴിവാക്കാമെന്ന് ചിന്തിക്കുക.
+✅ ഈ ഡാറ്റാസെറ്റ് 'Sex' എന്ന ഘടകത്തെ ശ്രദ്ധേയമായി ഉൾക്കൊള്ളിക്കുന്നു, ഇത് ഡയബിറ്റീസ് ഗവേഷണത്ത് പ്രധാനമാണ്. ധാരാളം മെഡിക്കൽ ഡാറ്റാസെറ്റുകൾ ഇത്തരത്തിലുള്ള ബൈനറി വർഗ്ഗീകരണം ഉൾകൊള്ളിക്കുന്നു. ഈ തരത്തിലുള്ള വർഗ്ഗീകരണങ്ങൾ സമൂഹത്തിലെ ചില വിഭാഗങ്ങളെ ചികിത്സയിൽനിന്ന് ഒഴിവാക്കുന്നത് എങ്ങനെയാവാം എന്ന് കുറച്ച് ചിന്തിക്കുക.
-ഇപ്പോൾ, X, y ഡാറ്റ ലോഡ് ചെയ്യുക.
+ഇപ്പോൾ, X, y ഡാറ്റ ഡ്രൈവുചെയ്യുക.
-> 🎓 ഓർമ്മിക്കുക, ഇത് supervised learning ആണ്, അതിനാൽ 'y' എന്ന ലക്ഷ്യ വേരിയബിൾ ആവശ്യമാണ്.
+> 🎓 ഓർക്കുക, ഇത് supervised learning ആണ്, ഒരു നാമമായ 'y' ലക്ഷ്യം ആവശ്യമുണ്ട്.
-പുതിയ കോഡ് സെല്ലിൽ, `load_diabetes()` വിളിച്ച് ഡയബറ്റീസ് ഡാറ്റാസെറ്റ് ലോഡ് ചെയ്യുക. `return_X_y=True` നൽകുന്നത് `X` ഡാറ്റാ മാട്രിക്സ് ആകും, `y` regression ലക്ഷ്യം ആകും എന്ന് സൂചിപ്പിക്കുന്നു.
+പുതിയ കോഡ് സെല്ലിൽ, `load_diabetes()` വിളിച്ച് ഡാറ്റാസെറ്റ് ലോഡ് ചെയ്യുക. `return_X_y=True` എന്ന ഇൻപുട്ട് `X` ഡാറ്റാ മാട്രിക്സ് ആകും, `y` റിഗ്രഷൻ ലക്ഷ്യം ആകുമെന്നു സൂചിപ്പിക്കുന്നു.
-1. ഡാറ്റാ മാട്രിക്സിന്റെ ആകൃതി (shape)യും ആദ്യ ഘടകവും പ്രിന്റ് ചെയ്യാൻ ചില print കമാൻഡുകൾ ചേർക്കുക:
+1. ഡാറ്റാസെറ്റിന്റെ രൂപവും ആദ്യ ഘടകവും കാണിക്കാൻ ചില പ്രിന്റ് കമാൻഡുകൾ ചേർക്കുക:
```python
X, y = datasets.load_diabetes(return_X_y=True)
@@ -150,9 +150,9 @@ Scikit-learn മോഡലുകൾ നിർമ്മിക്കുകയും
print(X[0])
```
- നിങ്ങൾക്ക് ലഭിക്കുന്നത് ഒരു ട്യൂപ്പിൾ ആണ്. ട്യൂപ്പിളിന്റെ ആദ്യ രണ്ട് മൂല്യങ്ങൾ `X`ക്കും `y`ക്കും നിയോഗിക്കുന്നു. [ട്യൂപ്പിളുകൾക്കുറിച്ച് കൂടുതൽ](https://wikipedia.org/wiki/Tuple) പഠിക്കുക.
+ നിങ്ങൾ തിരികെ കിട്ടുന്നത് ഒരു tuple ആണ്. നിങ്ങൾ പ്രവർത്തിക്കുന്നത് tuple-ന്റെ ആദ്യ രണ്ട് മൂല്യങ്ങൾ `X`, `y` ആയി നിർവചിക്കുന്നതാണ്. കൂടുതൽ അറിയാൻ [tuples](https://wikipedia.org/wiki/Tuple) കുറിച്ച് വായിക്കുക.
- ഈ ഡാറ്റ 442 ഇനങ്ങൾ 10 ഘടകങ്ങളുള്ള അറേകളായി രൂപപ്പെടുത്തിയിട്ടുണ്ട്:
+ ഈ ഡാറ്റ 442 ഇനങ്ങളടങ്ങിയിരിക്കുന്നു, ഓരോന്നിലും 10 ഘടകങ്ങൾ അടങ്ങിയ ആറേകളാണ്:
```text
(442, 10)
@@ -160,39 +160,39 @@ Scikit-learn മോഡലുകൾ നിർമ്മിക്കുകയും
-0.04340085 -0.00259226 0.01990842 -0.01764613]
```
- ✅ ഡാറ്റയും regression ലക്ഷ്യവും തമ്മിലുള്ള ബന്ധത്തെ കുറിച്ച് ചിന്തിക്കുക. ലീനിയർ regression ഫീച്ചർ X-നും ലക്ഷ്യ വേരിയബിൾ y-നും ഇടയിലുള്ള ബന്ധം പ്രവചിക്കുന്നു. ഡയബറ്റീസ് ഡാറ്റാസെറ്റിന്റെ [ലക്ഷ്യം](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) ഡോക്യുമെന്റേഷനിൽ കണ്ടെത്താമോ? ഈ ഡാറ്റാസെറ്റ് എന്ത് പ്രദർശിപ്പിക്കുന്നു, ആ ലക്ഷ്യം പരിഗണിച്ച്?
+ ✅ ഡാറ്റയും റിഗ്രഷൻ ലക്ഷ്യവും തമ്മിലുള്ള ബന്ധം കുറച്ച് ആലോചിക്കുക. ലൈനിയർ റിഗ്രഷൻ ഫീച്ചർ Xനും ലക്ഷ്യം variable y-ഉം തമ്മിലുള്ള ബന്ധം പ്രവചിക്കുന്നു. ഡയബിറ്റീസ് ഡാറ്റാസെറ്റിന്റെ [ലക്ഷ്യം](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) ഡോക്യുമെന്റേഷനിൽ കണ്ടെത്താനാകും? ഈ ഡാറ്റാസെറ്റ് ആ ലക്ഷ്യം പ്രതിപാദിക്കുന്നതെന്താണെന്ന് ചിന്തിക്കൂ.
-2. ഡാറ്റാസെറ്റിന്റെ 3-ആം കോളം തിരഞ്ഞെടുക്കുക, പ്ലോട്ട് ചെയ്യാൻ. എല്ലാ വരികളും തിരഞ്ഞെടുക്കാൻ `:` ഓപ്പറേറ്റർ ഉപയോഗിച്ച്, പിന്നീട് 3-ആം കോളം (ഇൻഡക്സ് 2) തിരഞ്ഞെടുക്കുക. പ്ലോട്ടിംഗിന് ആവശ്യമായ 2D അറേ ആയി രൂപപ്പെടുത്താൻ `reshape(n_rows, n_columns)` ഉപയോഗിക്കാം. ഒരു പാരാമീറ്റർ -1 ആണെങ്കിൽ, ആ ഡൈമെൻഷൻ സ്വയം കണക്കാക്കും.
+2. ഈ ഡാറ്റാസെറ്റിന്റെ ഒരു ഭാഗം പ്ലോട്ട് ചെയ്യാൻ 3-ആം സ്തംഭം തെരഞ്ഞെടുക്കുക. എല്ലാ വരികളും തിരഞ്ഞെടുക്കാൻ `:` ഓപ്പറേറ്റർ ഉപയോഗിച്ച്, 3-ആം സ്തംഭം index (2) ഉപയോഗിച്ച് തിരഞ്ഞെടുക്കുക. പ്ലോട്ടിംഗിനായി 2D ആറെയായി രൂപം മാറ്റേണ്ടതുണ്ടെങ്കിൽ, `reshape(n_rows, n_columns)` ഉപയോഗിക്കാം. ഒരു പാരാമീറ്റർ -1 ആകുമ്പോൾ അദേഹത്തിന്റെ പരിധി ഓട്ടോമാറ്റിക്കായി കണക്കാക്കപ്പെടും.
```python
X = X[:, 2]
X = X.reshape((-1,1))
```
- ✅ ഏപ്പോൾ വേണമെങ്കിലും ഡാറ്റയുടെ ആകൃതി പരിശോധിക്കാൻ പ്രിന്റ് ചെയ്യുക.
+ ✅ ഏപ്പോൾ വേണമെങ്കിലും ഡാറ്റയുടെ രൂപമാറ്റം പരിശോധിക്കാൻ പ്രിന്റ് ചെയ്തേക്കാം.
-3. ഇപ്പോൾ ഡാറ്റ പ്ലോട്ട് ചെയ്യാൻ തയ്യാറാണ്, ഈ ഡാറ്റാസെറ്റിലെ സംഖ്യകളിൽ ലജിക്കൽ സ്പ്ലിറ്റ് കണ്ടെത്താൻ മെഷീൻ സഹായിക്കുമോ എന്ന് നോക്കാം. അതിനായി, ഡാറ്റ (X)യും ലക്ഷ്യം (y) ടെസ്റ്റ്, പരിശീലന സെറ്റുകളായി വിഭജിക്കണം. Scikit-learn ഇതിന് എളുപ്പമുള്ള മാർഗം നൽകുന്നു; നിങ്ങൾക്ക് ടെസ്റ്റ് ഡാറ്റ ഒരു നിശ്ചിത പോയിന്റിൽ വിഭജിക്കാം.
+3. ഇപ്പോൾ ഡാറ്റ പ്ലോട്ടിംഗിന് സജ്ജമാണെന്ന് തയ്ക്കാൻ, ഈ ഡാറ്റാസെറ്റിലെ സംഖ്യകൾക്കിടയിൽ ലാജിക്കൽ വിഭജനം ഒരു മെഷീൻ നിർദ്ദേശിക്കാൻ കഴിയും എന്ന് നോക്കൂ. ഇതിന്, ഡാറ്റ (X) മത്തും ലക്ഷ്യം (y) താരതമ്യമുള്ള പരിശീലനവും ടെസ്റ്റിംഗും സെറ്റുകളിൽ വിഭജണം ആവശ്യമാണ്. Scikit-learn ഇതിനെ എളുപ്പമാക്കുന്ന രീതിയാണ്; നിങ്ങൾക്ക് ടെസ്റ്റ് ഡാറ്റ ഒരു പ്രത്യേക പോയിന്റ് ഉപയോഗിച്ച് വിഭജിക്കാം.
```python
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33)
```
-4. ഇപ്പോൾ മോഡൽ പരിശീലിപ്പിക്കാൻ തയ്യാറാണ്! ലീനിയർ regression മോഡൽ ലോഡ് ചെയ്ത് `model.fit()` ഉപയോഗിച്ച് X, y പരിശീലന സെറ്റുകൾ ഉപയോഗിച്ച് പരിശീലിപ്പിക്കുക:
+4. ഇനി നിങ്ങൾ മോഡൽ പരിശീലിപ്പിക്കാം! ലൈനിയർ റിഗ്രഷൻ മോഡൽ ലോഡ് ചെയ്ത് `model.fit()` ഉപയോഗിച്ച് X, y പരിശീലന സെറ്റുകളിൽ പരിശീലിപ്പിക്കുക:
```python
model = linear_model.LinearRegression()
model.fit(X_train, y_train)
```
- ✅ `model.fit()` TensorFlow പോലുള്ള പല ML ലൈബ്രറികളിലും കാണുന്ന ഒരു ഫംഗ്ഷനാണ്
+ ✅ TensorFlow പോലുള്ള അനേകം ML ലൈബ്രറികളിൽ നിങ്ങൾ കാണുന്ന `model.fit()` ഒരു ഫംഗ്ഷനാണ്
-5. തുടർന്ന്, ടെസ്റ്റ് ഡാറ്റ ഉപയോഗിച്ച് പ്രവചനം സൃഷ്ടിക്കാൻ `predict()` ഫംഗ്ഷൻ ഉപയോഗിക്കുക. ഇത് ഡാറ്റ ഗ്രൂപ്പുകൾക്കിടയിലെ വര വരയ്ക്കാൻ ഉപയോഗിക്കും
+5. തുടർന്ന് ടെസ്റ്റ് ഡാറ്റ ഉപയോഗിച്ച് പ്രവചനമുണ്ടാക്കാൻ `predict()` ഫംഗ്ഷൻ ഉപയോഗിക്കുക. ഇത് ഡാറ്റാ ഗ്രൂപ്പുകൾക്കിടയിലെ രേഖ വരയ്ക്കാൻ ഉപകരിക്കും
```python
y_pred = model.predict(X_test)
```
-6. ഇപ്പോൾ matplotlib ഉപയോഗിച്ച് ഡാറ്റ പ്ലോട്ട് ചെയ്യാം. matplotlib ഈ ടാസ്കിന് വളരെ ഉപകാരപ്രദമാണ്. X, y ടെസ്റ്റ് ഡാറ്റയുടെ സ്കാറ്റർപ്ലോട്ട് സൃഷ്ടിച്ച്, മോഡലിന്റെ ഡാറ്റ ഗ്രൂപ്പിംഗുകൾക്കിടയിൽ ഏറ്റവും അനുയോജ്യമായ സ്ഥലത്ത് prediction ഉപയോഗിച്ച് ഒരു വര വരയ്ക്കുക.
+6. ഇപ്പോൾ matplotlib ഉപയോഗിച്ച് ഡാറ്റ ഒരു പ്ലോട്ടിൽ പ്രദർശിപ്പിക്കാൻ സമയമുണ്ട്. X, y ടെസ്റ്റ് ഡാറ്റ മുഴുവന് സ്കാറ്റർപ്ലോട്ട് ചെയ്യുക, മോഡലിന്റെ പ്രെഡിക്ഷൻ ഉപയോഗിച്ച് ഏറ്റവും അനുയോജ്യമായ ഇടത്ത് വര വരയ്ക്കുക.
```python
plt.scatter(X_test, y_test, color='black')
@@ -203,30 +203,32 @@ Scikit-learn മോഡലുകൾ നിർമ്മിക്കുകയും
plt.show()
```
- 
- ✅ ഇവിടെ എന്ത് നടക്കുകയാണ് എന്ന് കുറച്ച് ചിന്തിക്കുക. ഒരു നേരിയ രേഖ നിരവധി ചെറിയ ഡാറ്റാ പോയിന്റുകളിലൂടെ കടന്നുപോകുന്നു, പക്ഷേ അത് ശരിക്കും എന്ത് ചെയ്യുകയാണ്? ഈ രേഖ ഉപയോഗിച്ച് ഒരു പുതിയ, കാണാത്ത ഡാറ്റാ പോയിന്റ് പ്ലോട്ടിന്റെ y അക്ഷത്തോട് എങ്ങനെ പൊരുത്തപ്പെടണം എന്ന് പ്രവചിക്കാൻ കഴിയുമെന്ന് നിങ്ങൾക്ക് കാണാമോ? ഈ മോഡലിന്റെ പ്രായോഗിക ഉപയോഗം വാക്കുകളിൽ വെക്കാൻ ശ്രമിക്കുക.
+ 
-അഭിനന്ദനങ്ങൾ, നിങ്ങൾ നിങ്ങളുടെ ആദ്യ ലീനിയർ റെഗ്രഷൻ മോഡൽ നിർമ്മിച്ചു, അതുമായി ഒരു പ്രവചനം സൃഷ്ടിച്ചു, അത് ഒരു പ്ലോട്ടിൽ പ്രദർശിപ്പിച്ചു!
+
+ ✅ ഇവിടെ നടക്കുന്നത് എന്താണെന്ന് അല്പം ചിന്തിക്കുക. ഒരു നേരിയ রেখ ചെറുചെറിയ ഡാറ്റ പോയിന്റുകളുടെ ഒരുപാട് ദൃശ്യങ്ങളിലൂടെ കടന്നുപോകുന്നു, പക്ഷേ ഇത് ഏതാണ്ട് എന്ത് ചെയ്യുന്നു? ഈ രേഖ ഉപയോഗിച്ച് ഒരു പുതിയ, കാണാത്ത ഡാറ്റ പോയിന്റ് പ്ലോട്ടിന്റെ y അക്ഷത്തോടുള്ള ബന്ധത്തിൽ എവിടെയെന്ന് പ്രവചിക്കാനാകുമെന്ന് കാണാമോ? ഈ മോഡലിന്റെ പ്രായോഗിക ഉപയോഗം വാക്കുകളിൽ പങ്കുവെക്കാൻ ശ്രമിക്കുക.
+
+അഭിനന്ദനങ്ങള്! നിങ്ങൾ നിങ്ങളുടെ ആദ്യ ലീനിയർ റെഗ്രഷൻ മോഡൽ നിർമ്മിച്ചു, അതുമായി ഒരു പ്രവചനമുണ്ടാക്കി, അത് പ്ലോട്ടിൽ പ്രദർശിപ്പിച്ചു!
---
-## 🚀ചലഞ്ച്
+## 🚀പ്രതിസന്ധി
-ഈ ഡാറ്റാസെറ്റിൽ നിന്നുള്ള മറ്റൊരു വ്യത്യസ്ത വേരിയബിൾ പ്ലോട്ട് ചെയ്യുക. സൂചന: ഈ വരി എഡിറ്റ് ചെയ്യുക: `X = X[:,2]`. ഈ ഡാറ്റാസെറ്റിന്റെ ലക്ഷ്യം പരിഗണിച്ച്, ഡയബറ്റീസിന്റെ രോഗമായി പുരോഗതിയെക്കുറിച്ച് നിങ്ങൾ എന്ത് കണ്ടെത്താൻ കഴിയും?
+ഈ ഡാറ്റാസെറ്റ് നുള്ള മറ്റൊരു വേരി ഏറിയബിള് പ്ലോട്ട് ചെയ്യുക. ടിപ്പ്: ഈ ലൈനിൽ എഡിറ്റ് ചെയ്യുക: `X = X[:,2]`. ഈ ഡാറ്റാസെറ്റിന്റെ ലക്ഷ്യത്തെകുറിച്ച്, ഡയബറ്റീസിന്റെ ഒരു രോഗമായി പുരോഗതി സംബന്ധിച്ച് നിങ്ങൾക്ക് എന്ത് കണ്ടെത്താൻ കഴിയുന്നു?
## [പോസ്റ്റ്-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/)
-## അവലോകനം & സ്വയം പഠനം
+## സിംഹവീക്ഷണവും സ്വയം പഠനവും
-ഈ ട്യൂട്ടോറിയലിൽ, നിങ്ങൾ സിംപിൾ ലീനിയർ റെഗ്രഷനുമായി പ്രവർത്തിച്ചു, യൂണിവേറിയറ്റ് അല്ലെങ്കിൽ മൾട്ടിപ്പിൾ ലീനിയർ റെഗ്രഷൻ അല്ല. ഈ രീതികളുടെ വ്യത്യാസങ്ങളെ കുറിച്ച് കുറച്ച് വായിക്കുക, അല്ലെങ്കിൽ [ഈ വീഡിയോ](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) കാണുക.
+ഈ ട്യൂട്ടോറിയലിൽ, നിങ്ങൾ ലീനിയർ റെഗ്രഷനുമായി ജോലി ചെയ്തു, യുണിവാരിയറ്റ് അല്ലെങ്കിൽ മൾട്ടിപിൾ ലീനിയർ റെഗ്രഷൻ മോഡലുകളുടെ പകരം. ഈ രീതികളുടെ വ്യത്യാസങ്ങളെ കുറിച്ച് കുറച്ച് വായിക്കുക, അല്ലെങ്കിൽ [ഈ വീഡിയോ](https://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) സ്വീകരിക്കുക.
+റെഗ്രഷൻ എന്ന ധാരണയെ കുറിച്ച് കൂടുതൽ വായിക്കുക, ഈ സാങ്കേതികവുമായിക്കുള്ള സമാധാനിക്കാവുന്ന ചോദ്യങ്ങൾ എന്തൊക്കെയാണെന്ന് ചിന്തിക്കുക. നിങ്ങളുടെ അന്വേഷണം കൂടുതൽ ഊന്നാക്കാൻ ഈ [ട്യൂട്ടോറിയൽ](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) കൈകൊള്ളുക.
## അസൈൻമെന്റ്
-[മറ്റൊരു ഡാറ്റാസെറ്റ്](assignment.md)
+[മറ്റ് ഒരു ഡാറ്റാസെറ്റ്](assignment.md)
---
-**അസൂയാപത്രം**:
-ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, യന്ത്രം ചെയ്ത വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ വ്യാഖ്യാനക്കേടുകൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല.
+**അറിയിപ്പ്**:
+ഈ രേഖ AI പരിഭാഷാ സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് പരിഭാഷപ്പെടുത്തിയതാണ്. ഞങ്ങൾ കൃത്യതയ്ക്കായി ശ്രമിക്കുന്നുവെങ്കിലും, ഓട്ടോമേറ്റഡ് പരിഭാഷകളിൽ പിഴവുകൾ അല്ലെങ്കിൽ തെറ്റായ വിവരങ്ങൾ ഉണ്ടാകാൻ സാധ്യതയുണ്ട്. അതിന്റെ സ്വാഭാവിക ഭാഷയിലുള്ള അസൽ രേഖയാണ് പ്രാമാണികമായ ഉറവിടമായി പരിഗണിക്കേണ്ടത്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ പരിഭാഷ ശുപാർശ ചെയ്യുന്നു. ഈ പരിഭാഷ ഉപയോഗിച്ച് ഉണ്ടാകുന്ന തെറ്റിദ്ധാരണകൾ അല്ലെങ്കിൽ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കായി ഞങ്ങൾ ഉത്തരവാദികളല്ല.
\ No newline at end of file
diff --git a/translations/ml/2-Regression/2-Data/README.md b/translations/ml/2-Regression/2-Data/README.md
index 6cd77b971..78eb903d2 100644
--- a/translations/ml/2-Regression/2-Data/README.md
+++ b/translations/ml/2-Regression/2-Data/README.md
@@ -1,62 +1,62 @@
-# Scikit-learn ഉപയോഗിച്ച് ഒരു റെഗ്രഷൻ മോഡൽ നിർമ്മിക്കുക: ഡാറ്റ തയ്യാറാക്കൽ மற்றும் ദൃശ്യവൽക്കരണം
+# Scikit-learn ഉപയോഗിച്ച് ഒരു റെഗ്രഷൻ മോഡൽ നിർമ്മിക്കുക: ഡേറ്റா തയ്യാറാക്കുക, ദൃശ്യീകരിക്കുക
-
+
-ഇൻഫോഗ്രാഫിക് [ദസാനി മടിപള്ളി](https://twitter.com/dasani_decoded) tarafından
+ഇൻഫോഗ്രാഫിക് തയ്യാറാക്കിയത് [ദസനി മഡിപല്ലി](https://twitter.com/dasani_decoded)
-## [പ്രീ-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/)
+## [പൂർവ-ലക്ഷ്യപ്പെട്ട quizz](https://ff-quizzes.netlify.app/en/ml/)
-> ### [ഈ പാഠം R-ൽ ലഭ്യമാണ്!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
+> ### [ഈ പാഠം R-ലും ലഭ്യമാണ്!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
## പരിചയം
-Scikit-learn ഉപയോഗിച്ച് മെഷീൻ ലേണിംഗ് മോഡൽ നിർമ്മാണം ആരംഭിക്കാൻ ആവശ്യമായ ഉപകരണങ്ങൾ നിങ്ങൾക്കുണ്ടായതിനുശേഷം, നിങ്ങളുടെ ഡാറ്റയെക്കുറിച്ച് ചോദ്യങ്ങൾ ചോദിക്കാൻ നിങ്ങൾ തയ്യാറാണ്. ഡാറ്റയുമായി പ്രവർത്തിക്കുമ്പോഴും ML പരിഹാരങ്ങൾ പ്രയോഗിക്കുമ്പോഴും, നിങ്ങളുടെ ഡാറ്റാസെറ്റിന്റെ സാധ്യതകൾ ശരിയായി തുറക്കാൻ ശരിയായ ചോദ്യങ്ങൾ ചോദിക്കുന്നതിന്റെ പ്രാധാന്യം വളരെ കൂടുതലാണ്.
+Scikit-learn ഉപയോഗിച്ച് മെഷീൻ ലേണിംഗ് മോഡൽ നിർമ്മാണം ആരംഭിക്കാനായി ആവശ്യമായ ടൂളുകൾ നിങ്ങൾക്ക് സജ്ജമാണെങ്കിൽ, നിങ്ങളുടെ ഡേറ്റയിൽ നിന്നുള്ള ചോദ്യങ്ങൾ ചോദിക്കാൻ നിങ്ങൾ തയ്യാറാണ്. ഡേറ്റ ഉപയോഗിച്ച് പാലിച്ചു ML പരിഹാരങ്ങൾ പ്രയോഗിക്കുമ്പോൾ, നിങ്ങളുടെ ഡാറ്റാസെറ്റിന്റെ സാദ്ധ്യതകൾ ശരിയായി തുറക്കാൻ എങ്ങനെ ശരിയായ ചോദ്യമോ ചോദിക്കാമെന്ന് മനസ്സിലാക്കുന്നത് വളരെ പ്രധാനമാണ്.
-ഈ പാഠത്തിൽ, നിങ്ങൾ പഠിക്കും:
+ഈ പാഠത്തിൽ, നിങ്ങൾ പഠിക്കാൻ പോകുന്നത്:
-- മോഡൽ നിർമ്മാണത്തിനായി നിങ്ങളുടെ ഡാറ്റ എങ്ങനെ തയ്യാറാക്കാം.
-- ഡാറ്റ ദൃശ്യവൽക്കരണത്തിന് Matplotlib എങ്ങനെ ഉപയോഗിക്കാം.
+- മോഡൽ നിർമാണത്തിന് നിങ്ങളുടെ ഡേറ്റാ തയ്യാറാക്കുന്നത് എങ്ങനെ.
+- Matplotlib ഡേറ്റാ ദൃശ്യീകരണത്തിന് എങ്ങനെയാണ് ഉപയോഗിക്കുന്നത്.
+- കൂടുതൽ പ്രകടകതയുള്ള ഡേറ്റാ ദൃശ്യീകരണത്തിന് Seaborn ഉപയോഗിക്കുന്നത് എങ്ങനെയാണ്.
-## നിങ്ങളുടെ ഡാറ്റയിൽ നിന്ന് ശരിയായ ചോദ്യങ്ങൾ ചോദിക്കുക
+## നിങ്ങളുടെ ഡാറ്റയിൽ ശരിയായ ചോദ്യമൊ ചോദിക്കുക
-നിങ്ങൾക്ക് ഉത്തരം വേണമെന്ന ചോദ്യമാണ് നിങ്ങൾ ഉപയോഗിക്കേണ്ട ML ആൽഗോരിതങ്ങൾ നിർണ്ണയിക്കുന്നത്. നിങ്ങൾക്ക് ലഭിക്കുന്ന ഉത്തരം ലഭിക്കുന്നതിന്റെ ഗുണമേന്മ ഡാറ്റയുടെ സ്വഭാവത്തെ ആശ്രയിച്ചിരിക്കും.
+നിങ്ങൾക്കാവശ്യമായ ഉത്തരം ഏപ്രകാരമാണ് എന്ന് തീരുമാനിക്കുന്നത് നിങ്ങൾ ഉപയോഗിക്കുന്ന ML ആൽഗോരിതങ്ങൾ തിരഞ്ഞെടുക്കാനും സഹായിക്കും. നിങ്ങൾക്ക് ലഭിക്കുന്ന ഉത്തരം ആശ്രയിക്കുന്നത് നിങ്ങളുടെ ഡേറ്റയുടെ സ്വഭാവത്തെ ഏറെ ആശ്രയിച്ചിരിക്കും.
-ഈ പാഠത്തിനായി നൽകിയ [ഡാറ്റ](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) നോക്കുക. ഈ .csv ഫയൽ VS Code-ൽ തുറക്കാം. ഒരു വേഗത്തിലുള്ള നിരീക്ഷണം കാണിക്കുന്നു, ചില സ്ഥലങ്ങളിൽ ശൂന്യങ്ങൾ ഉണ്ട്, സ്ട്രിംഗുകളും സംഖ്യകളും മിശ്രിതമാണ്. 'Package' എന്ന ഒരു അസാധാരണ കോളം ഉണ്ട്, അതിൽ 'sacks', 'bins' എന്നിവയും മറ്റ് മൂല്യങ്ങളും മിശ്രിതമാണ്. ഡാറ്റ യഥാർത്ഥത്തിൽ അല്പം കലക്കമാണ്.
+ഈ പാഠത്തിനായി നൽകിയിരിക്കുന്ന [ഡേറ്റ](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) നോക്കൂ. നിങ്ങളുടെ VS കോഡിൽ ഈ .csv ഫയൽ തുറക്കാം. ഒരു ചെറിയ സ്കിം മുറിച്ചപ്പോൾ അപ്രത്യക്ഷമായ സ്ഥലങ്ങളും അതോടൊപ്പം സ്ട്രിങ്, അക്കങ്ങൾ മിക്സായി ഉള്ളതും കാണാം. 'Package' എന്ന് പേരുള്ള ഒരു വിചിത്രമായ കൾമുണ്ട്, ഇവിടെ ഡേറ്റ 'sacks', 'bins' തുടങ്ങിയ പല മൂല്യങ്ങളും ചേർന്നിരിക്കുന്നു. ഡേറ്റ യഥാർത്ഥത്തിൽ അല്പം സന്ധ്യത്രമാണ്.
[](https://youtu.be/5qGjczWTrDQ "ML for beginners - How to Analyze and Clean a Dataset")
-> 🎥 ഈ പാഠത്തിനായി ഡാറ്റ തയ്യാറാക്കുന്നതിനെക്കുറിച്ച് ഒരു ചെറിയ വീഡിയോ കാണാൻ മുകളിൽ ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക.
+> 🎥 ഈ പാഠത്തിനായി ഡേറ്റ തയ്യാറാക്കുന്നതിലെ ചുരുക്കം വീഡിയോയ്ക്കായി മുകളിലെ ചിത്രം ക്ലിക്ക് ചെയ്യുക.
-യഥാർത്ഥത്തിൽ, ഒരു ML മോഡൽ സൃഷ്ടിക്കാൻ പൂർണ്ണമായും ഉപയോഗിക്കാൻ തയ്യാറായ ഒരു ഡാറ്റാസെറ്റ് ലഭിക്കുന്നത് സാധാരണമല്ല. ഈ പാഠത്തിൽ, നിങ്ങൾ സ്റ്റാൻഡേർഡ് Python ലൈബ്രറികൾ ഉപയോഗിച്ച് ഒരു റോ ഡാറ്റാസെറ്റ് എങ്ങനെ തയ്യാറാക്കാമെന്ന് പഠിക്കും. കൂടാതെ, ഡാറ്റ ദൃശ്യവൽക്കരിക്കാൻ വിവിധ സാങ്കേതിക വിദ്യകളും പഠിക്കും.
+യഥാർഥത്തിൽ, പരിപൂർണമായും ഉപയോഗിക്കാൻ സജ്ജമായ ഡേറ്റാസെറ്റ് ലഭിക്കുന്നത് സാധാരണയല്ല. ഈ പാഠത്തിൽ, സ്റ്റാൻഡേർ 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) നിന്നുള്ള റോ ഡാറ്റയാണ്.
+ഈ ഫോൾഡറിൽ നിങ്ങൾക്ക് റൂട്ട് `data` ഫോൾഡറിൽ [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) എന്ന ഫയൽ കാണാം, ഇതിൽ 1757 വരികളുള്ള പംപ്കിൻ മാർക്കറ്റ് വിവരങ്ങൾ നഗര അനുസൃതമായി ഗ്രൂപ്പ് ചെയ്തു നൽകിയിട്ടുണ്ട്. ഇത് യുണൈറ്റഡ് സ്റ്റേറ്റ്സ് ഡിപ്പാർട്ട്മെന്റ് ഓഫ് അഗ്രിക്കൾച്ചർ വഴി വിതരണം ചെയ്യുന്ന [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) നിന്ന് എടുത്ത അടിസ്ഥാനം ഡേറ്റയാണ്.
-### ഡാറ്റ തയ്യാറാക്കൽ
+### ഡേറ്റാ തയ്യാറാക്കൽ
-ഈ ഡാറ്റ പബ്ലിക് ഡൊമെയ്നിലാണ്. ഇത് USDA വെബ്സൈറ്റിൽ നിന്ന് ഓരോ നഗരത്തിനും വേർതിരിച്ച ഫയലുകളായി ഡൗൺലോഡ് ചെയ്യാം. വളരെ അധികം വേർതിരിച്ച ഫയലുകൾ ഒഴിവാക്കാൻ, എല്ലാ നഗര ഡാറ്റയും ഒരു സ്പ്രെഡ്ഷീറ്റിൽ ചേർത്തിട്ടുണ്ട്, അതിനാൽ ഡാറ്റ കുറച്ച് _തയ്യാറാക്കിയതാണ്_. ഇനി, ഡാറ്റയെ കൂടുതൽ നന്നായി പരിശോധിക്കാം.
+ഈ ഡേറ്റ പബ്ലിക് ഡൊമെയ്നിലാണ്. USDA വെബ്സൈറ്റിൽ പല നഗരങ്ങളുടെയും വേർതിരിച്ച ഫയലുകളിൽ ഇതെല്ലാം ഡൗൺലോഡ് ചെയ്യാം. വളരെ പല ഫയലുകൾ ഒഴിവാക്കാൻ എല്ലാ നഗര ഡേറ്റയും ഒരു സ്പ്രെഡ്ഷീറ്റിൽ ക്ലിപ്പിച്ച് ഞങ്ങൾ വലിയ രീതിയിൽ ഒരു പരിധി വരെ ഡേറ്റ സംഭരിച്ചു മാറ്റം കാണിക്കുന്നു. ഇനി ഡേറ്റ കൂടാതെ ശ്രദ്ധിക്കാം.
-### പംപ്കിൻ ഡാറ്റ - പ്രാഥമിക നിഗമനങ്ങൾ
+### പംപ്കിൻ ഡേറ്റ - പ്രാഥമിക നിഗമനങ്ങൾ
-ഈ ഡാറ്റയിൽ നിങ്ങൾ എന്ത് ശ്രദ്ധിക്കുന്നു? നിങ്ങൾ ഇതിനകം കണ്ടിട്ടുണ്ട്, സ്ട്രിംഗുകളും സംഖ്യകളും, ശൂന്യങ്ങളും, അസാധാരണ മൂല്യങ്ങളും മിശ്രിതമാണ്.
+ഈ ഡേറ്റയ്ക്ക് നിങ്ങൾ എന്ത് ശ്രദ്ധിച്ചേ ആണെന്നാക്കാം? നിങ്ങൾ ഇതിനകം സ്ട്രിങ്ങുകൾ, അക്കങ്ങൾ, ഒഴിവുകൾ, വിചിത്ര മൂല്യങ്ങൾ എന്നിവ അടങ്ങിയ മിശ്രിതം കാണിച്ചിട്ടുണ്ട്.
-Regression സാങ്കേതിക വിദ്യ ഉപയോഗിച്ച് ഈ ഡാറ്റയിൽ നിങ്ങൾ എന്ത് ചോദ്യങ്ങൾ ചോദിക്കാം? "നൽകിയ മാസത്തിൽ വിൽപ്പനയ്ക്കുള്ള പംപ്കിന്റെ വില പ്രവചിക്കുക" എന്നത് എങ്ങനെയാണ്? ഡാറ്റ വീണ്ടും നോക്കുമ്പോൾ, ഈ ടാസ്കിനായി ആവശ്യമായ ഡാറ്റ ഘടന സൃഷ്ടിക്കാൻ ചില മാറ്റങ്ങൾ ചെയ്യേണ്ടതുണ്ട്.
+ഈ ഡേറ്റ ഉപയോഗിച്ച് ഒരു റെഗ്രഷൻ സാങ്കേതിക വിദ്യ ഉപയോഗിച്ച് നിങ്ങൾ എന്ത് ചോദിക്കാം? "നിർദ്ദിഷ്ട മാസത്തെ പംപ്കിന്റെ വില പ്രവചിക്കുക" എന്നൊന്നാണ്. ഡേറ്റ വീണ്ടും നോക്കുമ്പോൾ ഈ ടാസ്ക്കിനുള്ള ഡേറ്റ ഘടന ഒരുക്കുന്നതിന് ചില മാറ്റങ്ങൾ വേണം.
+## അഭ്യാസം - പംപ്കിൻ ഡേറ്റ വിശകലനം ചെയ്യുക
-## അഭ്യാസം - പംപ്കിൻ ഡാറ്റ വിശകലനം ചെയ്യുക
+ഡേറ്റ ആകൃതീകരിക്കുന്നതിനും വിശകലനത്തിനും വളരെയധികം ഉപകരിക്കുന്ന [Pandas](https://pandas.pydata.org/) (പൈതൺ ഡേറ്റ അനാലിസിസ്) ഉപകരണം ഉപയോഗിക്കാം.
-ഡാറ്റ രൂപപ്പെടുത്താനും വിശകലനം ചെയ്യാനും വളരെ ഉപകാരപ്രദമായ ഒരു ഉപകരണം ആയ [Pandas](https://pandas.pydata.org/) (Python Data Analysis എന്നതിന് ചുരുക്കം) ഉപയോഗിക്കാം.
+### ആദ്യം,欠തിയുള്ള തീയതികൾ കണ്ടെത്തുക
-### ആദ്യം, നഷ്ടപ്പെട്ട തീയതികൾ പരിശോധിക്കുക
+ആദ്യം നിങ്ങൾ欠തിയുള്ള തീയതികൾ ഉണ്ടോ എന്ന് പരിശോധിക്കണം:
-നഷ്ടപ്പെട്ട തീയതികൾ പരിശോധിക്കാൻ നിങ്ങൾ ആദ്യം ചില നടപടികൾ സ്വീകരിക്കണം:
+1. തീയതികളെ മാസം ഫോർമാറ്റിലേക്ക് പരിവർത്തനം ചെയ്യുക (ഇവ യു.എസ് തീയതികളാണ്, ഫോർമാറ്റ് `MM/DD/YYYY` ആണ്).
+2. മാസം പുതുതായി ഒരു കൾമാക്കി വേർതിരിക്കുക.
-1. തീയതികളെ മാസ ഫോർമാറ്റിലേക്ക് മാറ്റുക (ഇവ US തീയതികളാണ്, അതിനാൽ ഫോർമാറ്റ് `MM/DD/YYYY` ആണ്).
-2. മാസത്തെ പുതിയ ഒരു കോളമായി എടുക്കുക.
+_notebook.ipynb_ ഫയൽ വിസ്വൽ സ്റ്റുഡിയോ കോഡിൽ തുറന്ന്, സ്പ്രെഡ്ഷീറ്റ് പുതിയ Pandas ഡാറ്റാഫ്രെയിമിലേക്ക് ഇമ്പോർട്ട് ചെയ്യുക.
-Visual Studio Code-ൽ _notebook.ipynb_ ഫയൽ തുറന്ന് സ്പ്രെഡ്ഷീറ്റ് പുതിയ Pandas ഡാറ്റാഫ്രെയിമിലേക്ക് ഇറക്കുമതി ചെയ്യുക.
-
-1. ആദ്യ അഞ്ചു വരികൾ കാണാൻ `head()` ഫംഗ്ഷൻ ഉപയോഗിക്കുക.
+1. ആദ്യ അഞ്ച് നിരകൾ കാണാൻ `head()` ഫംഗ്ഷൻ ഉപയോഗിക്കുക.
```python
import pandas as pd
@@ -64,30 +64,30 @@ Visual Studio Code-ൽ _notebook.ipynb_ ഫയൽ തുറന്ന് സ്
pumpkins.head()
```
- ✅ അവസാന അഞ്ചു വരികൾ കാണാൻ നിങ്ങൾ ഏത് ഫംഗ്ഷൻ ഉപയോഗിക്കും?
+ ✅ അവസാന അഞ്ച് നിരകൾ കാണാൻ ഏതൊരു ഫംഗ്ഷൻ ഉപയോഗിക്കും?
-1. നിലവിലുള്ള ഡാറ്റാഫ്രെയിമിൽ നഷ്ടപ്പെട്ട ഡാറ്റയുണ്ടോ എന്ന് പരിശോധിക്കുക:
+1. നിലവിലെ ഡാറ്റാഫ്രെയിമിൽ欠തിയുള്ള ഡേറ്റ ഉണ്ടോ എന്ന് പരിശോധിക്കുക:
```python
pumpkins.isnull().sum()
```
- നഷ്ടപ്പെട്ട ഡാറ്റയുണ്ട്, പക്ഷേ ഈ ടാസ്കിനായി അത് പ്രശ്നമാകില്ല.
+ 欠തിയുള്ള ഡേറ്റ ഉണ്ടെങ്കിലും, കഴിഞ്ഞ ടാസ്ക്കിന് അതിന് പ്രശ്നമാകില്ല.
-1. നിങ്ങളുടെ ഡാറ്റാഫ്രെയിമിൽ പ്രവർത്തിക്കാൻ എളുപ്പമാക്കാൻ, നിങ്ങൾക്ക് ആവശ്യമായ കോളങ്ങൾ മാത്രം `loc` ഫംഗ്ഷൻ ഉപയോഗിച്ച് തിരഞ്ഞെടുക്കുക, ഇത് ആദ്യ പാരാമീറ്ററായി പാസ്സാക്കിയ വരികളും രണ്ടാം പാരാമീറ്ററായി പാസ്സാക്കിയ കോളങ്ങളും ഒറിജിനൽ ഡാറ്റാഫ്രെയിമിൽ നിന്ന് എടുക്കുന്നു. താഴെ കാണുന്ന `:` എന്നത് "എല്ലാ വരികളും" എന്നർത്ഥം.
+1. ഡാറ്റാഫ്രെയിമിലേക്ക് സംവിധാനമാണ് ചെയ്യാൻ നിങ്ങൾക്ക് ആവശ്യമായ കൾമുകൾ മാത്രം തിരഞ്ഞെടുക്കുക. `loc` ഫംഗ്ഷൻ ഉപയോഗിച്ച് അതിനെ് സൃഷ്ടിച്ചത്, ആദ്യം പാസ്സ് ചെയ്യുന്നത് നിരയും രണ്ടാം പാരാമീറ്ററായി കൾമുകളുമാണ്. താഴെ ഡാറ്റാഫ്രെയിമിൽ ഉപയോഗിച്ച `:` എല്ലാ നിരകളെയും സൂചിപ്പിക്കുന്നു.
```python
columns_to_select = ['Package', 'Low Price', 'High Price', 'Date']
pumpkins = pumpkins.loc[:, columns_to_select]
```
-### രണ്ടാംത്, പംപ്കിന്റെ ശരാശരി വില നിർണ്ണയിക്കുക
+### രണ്ടാമത്, പംപ്കിന്റെ ശരാശരി വില വിലയിരുത്തുക
-നൽകിയ മാസത്തിൽ പംപ്കിന്റെ ശരാശരി വില എങ്ങനെ നിർണ്ണയിക്കാമെന്ന് ചിന്തിക്കുക. ഈ ടാസ്കിനായി നിങ്ങൾ ഏത് കോളങ്ങൾ തിരഞ്ഞെടുക്കും? സൂചന: 3 കോളങ്ങൾ ആവശ്യമാണ്.
+ഒരു പ്രത്യേക മാസത്തിലെ പംപ്കിന്റെ ശരാശരി വില എങ്ങനെ കണ്ടെത്താമെന്ന് ആലോചിക്കുക. ഈ ടാസ്ക്കിന് നിങ്ങൾക്ക് ഏതു കൾമുകൾ തിരഞ്ഞെടുക്കണം? സൂചന: 3 കൾമുകൾ ആവശ്യമുണ്ട്.
-പരിഹാരം: `Low Price` ഉം `High Price` ഉം കോളങ്ങൾ ശരാശരി എടുത്ത് പുതിയ Price കോളം പൂരിപ്പിക്കുക, Date കോളം മാസമാത്രം കാണിക്കുന്ന വിധം മാറ്റുക. ഭാഗ്യവശാൽ, മുകളിൽ നടത്തിയ പരിശോധന പ്രകാരം, തീയതികൾക്കും വിലകൾക്കും നഷ്ടപ്പെട്ട ഡാറ്റ ഇല്ല.
+പരിഹാരം: `Low Price` ഒപ്പം `High Price` കൾമുകളുടെ ശരാശരികൾ എടുത്ത് പുതിയ 'Price' കോളത്തിൽ പൂരിപ്പിക്കുക, കൂടാതെ 'Date' കൾം മാസത്തെ മാത്രം കാണിക്കുക. പുറത്തു നോക്കിയപ്പോൾ欠തിയുള്ള ഡേറ്റ ഇല്ലാതിരുന്നുവെന്ന് കാണാം, അതുകൊണ്ട് റോഡ്മാപ്പ് സജ്ജമാണെന്ന്.
-1. ശരാശരി കണക്കാക്കാൻ താഴെ കൊടുത്ത കോഡ് ചേർക്കുക:
+1. ശരാശരി കണക്കാക്കാൻ താഴെക്കൊടുത്തിരിക്കുന്ന കോഡ് ചേർക്കുക:
```python
price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2
@@ -96,37 +96,37 @@ Visual Studio Code-ൽ _notebook.ipynb_ ഫയൽ തുറന്ന് സ്
```
- ✅ `print(month)` ഉപയോഗിച്ച് നിങ്ങൾക്ക് പരിശോധിക്കാൻ ആഗ്രഹിക്കുന്ന ഡാറ്റ പ്രിന്റ് ചെയ്യാം.
+ ✅ `print(month)` ഉപയോഗിച്ച് നിങ്ങൾ പരിശോധിക്കാൻ ആഗ്രഹിക്കുന്ന ഡേറ്റയും മടപനും ചെയ്യാൻ സ്വതന്ത്രനാകൂ.
-2. ഇപ്പോൾ, നിങ്ങളുടെ മാറ്റിയ ഡാറ്റ പുതിയ Pandas ഡാറ്റാഫ്രെയിമിലേക്ക് പകർത്തുക:
+2. ഇപ്പോൾ, മാറ്റിയ ഡേറ്റ പുതിയ Pandas ഡാറ്റാഫ്രെയിമിലേക്ക് പകർത്തുക:
```python
new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price})
```
- നിങ്ങളുടെ ഡാറ്റാഫ്രെയിം പ്രിന്റ് ചെയ്താൽ നിങ്ങൾക്ക് ഒരു ശുചിത്വമുള്ള, ക്രമീകരിച്ച ഡാറ്റാസെറ്റ് കാണാം, ഇതിൽ നിങ്ങൾ പുതിയ റെഗ്രഷൻ മോഡൽ നിർമ്മിക്കാം.
+ നിങ്ങളുടെ ഡാറ്റാഫ്രെയിം പ്രിന്റ് ചെയ്താൽ നിങ്ങള്ക്ക് പുത്തൻ, ശുദ്ധമായ ഡേറ്റാസെറ്റ് കാണിക്കപ്പെടും, ഈ ഡേറ്റ ഉപയോഗിച്ച് നിങ്ങൾറെ പുതിയ റെഗ്രഷൻ മോഡൽ നിർമ്മിക്കാം.
-### പക്ഷേ കാത്തിരിക്കുക! ഇവിടെ ഒരു അസാധാരണതയുണ്ട്
+### എന്നാൽ കാത്തിരി! ഇവിടെ എന്തോ അസാധാരണമുണ്ട്
-`Package` കോളം നോക്കിയാൽ, പംപ്കിനുകൾ പലവിധ കോൺഫിഗറേഷനുകളിൽ വിൽക്കുന്നു. ചിലത് '1 1/9 ബുഷെൽ' അളവിൽ, ചിലത് '1/2 ബുഷെൽ' അളവിൽ, ചിലത് ഓരോ പംപ്കിനായി, ചിലത് പൗണ്ടിന്, ചിലത് വ്യത്യസ്ത വീതികളുള്ള വലിയ ബോക്സുകളിൽ.
+`Package` കൾമനിൽ നോക്കിയാൽ, പംപ്കിനുകൾ പല വ്യത്യസ്ത ആകൃതികളിൽ വിൽക്കുന്നുണ്ട. ചിലത് '1 1/9 bushel' അളവിൽ, ചിലത് '1/2 bushel', ചിലത് പംപ്കിൻപ്രതി, ചിലത് പൗണ്ടിന് പ്രതിയും, കൂടാതെ വലിയ varying വീതിയായ ബോക്സുകളിലും.
-> പംപ്കിനുകൾ സ്ഥിരമായി തൂക്കാൻ വളരെ ബുദ്ധിമുട്ടാണ്
+> പംപ്കിനുകൾ സ്ഥിരതയോടെ ഭാരിക്കുക വളരെക്കുള്ളതാണെന്നു തോന്നുന്നു
-ഓറിജിനൽ ഡാറ്റയിൽ നോക്കുമ്പോൾ, `Unit of Sale` 'EACH' അല്ലെങ്കിൽ 'PER BIN' ആയവയ്ക്ക് `Package` തരം ഇഞ്ച്, ബിൻ, അല്ലെങ്കിൽ 'each' ആണ്. പംപ്കിനുകൾ സ്ഥിരമായി തൂക്കാൻ ബുദ്ധിമുട്ടാണ്, അതിനാൽ `Package` കോളത്തിൽ 'bushel' എന്ന സ്ട്രിംഗ് ഉള്ള പംപ്കിനുകൾ മാത്രം തിരഞ്ഞെടുക്കാം.
+ആരംഭ ഡേറ്റയിൽ 'Unit of Sale' 'EACH' അല്ലെങ്കിൽ 'PER BIN' ആണ് എന്നാൽ, ഇവക്ക് 'Package' തരം അനുസരിച്ച് ഇഞ്ച്, ബിൻ, അല്ലെങ്കിൽ 'each' ആണ്. പംപ്കിനുകൾ സ്ഥിരമായി ഭാരിക്കുംപോൾ ബുദ്ധിമുട്ടുള്ളതാണ്, അതുകൊണ്ട് 'bushel' എന്ന പദം ഉള്ള പംപ്കിനുകൾ മാത്രം തിരഞ്ഞെടുക്കി ഫിൽട്ടർ ചെയ്യാം.
-1. ഫയലിന്റെ മുകളിൽ, ആദ്യ .csv ഇറക്കുമതിക്ക് താഴെ ഒരു ഫിൽട്ടർ ചേർക്കുക:
+1. ഫയലിന്റെ മുകളിൽ .csv ഇമ്പോർട്ടിന്റെ കീഴിൽ ഫിൽട്ടർ ചേർക്കുക:
```python
pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]
```
- ഇപ്പോൾ ഡാറ്റ പ്രിന്റ് ചെയ്താൽ, ബുഷെൽ പ്രകാരം പംപ്കിനുകൾ ഉള്ള ഏകദേശം 415 വരികൾ മാത്രം കാണാം.
+ ഇപ്പോൾ ഡാറ്റ പ്രിന്റ് ചെയ്യുമ്പോൾ, മോട്ടൊപ്പം മുട്ടി bushel പംപ്കിനുകൾ ഉൾമുള്ള ഏകദേശം 415 വരികളുള്ള ഡേറ്റ മാത്രം നിങ്ങൾക്ക് കിട്ടും.
-### പക്ഷേ കാത്തിരിക്കുക! മറ്റൊരു കാര്യവും ചെയ്യണം
+### എന്നാൽ കാത്തിരി! മറ്റൊരു കാര്യം ചെയ്യണം
-ബുഷെൽ അളവ് ഓരോ വരിയിലും വ്യത്യസ്തമാണെന്ന് ശ്രദ്ധിച്ചോ? വില ബുഷെൽപ്രകാരം സാധാരണവത്കരിക്കണം, അതിനാൽ ചില ഗണിതം ചെയ്യണം.
+ബുഷേലുകളുടെ അളവ് നിരകൾക്ക് വ്യത്യസ്തമാണ്. നിങ്ങൾ വിലകൾ bushel അടിസ്ഥാനത്തിൽ സാധാരണമാക്കി കാണിച്ചിരിക്കണം, അതിനായി കുറച്ച് ഗണിതം ചെയ്യണം.
-1. പുതിയ_pumpkins ഡാറ്റാഫ്രെയിം സൃഷ്ടിക്കുന്ന ബ്ലോക്കിന് ശേഷം ഈ വരികൾ ചേർക്കുക:
+1. പുതിയ 'new_pumpkins' ഡാറ്റാഫ്രെയിം സൃഷ്ടിക്കുന്ന ബ്ലോക്ക് കഴിഞ്ഞ് താഴെ വരികൾ ചേർക്കുക:
```python
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9)
@@ -134,38 +134,38 @@ Visual Studio Code-ൽ _notebook.ipynb_ ഫയൽ തുറന്ന് സ്
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2)
```
-✅ [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) പ്രകാരം, ബുഷെലിന്റെ ഭാരം ഉത്പന്നത്തിന്റെ തരം അനുസരിച്ച് വ്യത്യാസപ്പെടുന്നു, കാരണം ഇത് വോളിയം അളവാണ്. "ഉദാഹരണത്തിന്, ടൊമാറ്റോയുടെ ഒരു ബുഷെൽ 56 പൗണ്ട് തൂക്കമുള്ളതാണ്... ഇലകളും പച്ചക്കറികളും കുറവ് ഭാരം ഉള്ളതിനാൽ, സ്പിനാച്ചിന്റെ ഒരു ബുഷെൽ 20 പൗണ്ട് മാത്രമാണ്." ഇത് വളരെ സങ്കീർണ്ണമാണ്! ബുഷെൽ-ടു-പൗണ്ട് പരിവർത്തനം ചെയ്യാതെ, ബുഷെൽപ്രകാരം വില നിശ്ചയിക്കാം. പംപ്കിനുകളുടെ ബുഷെൽ പഠനം, നിങ്ങളുടെ ഡാറ്റയുടെ സ്വഭാവം മനസ്സിലാക്കുന്നതിന്റെ പ്രാധാന്യം കാണിക്കുന്നു!
+✅ [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) അനുസരിച്ച്, ബഷെല്ലിന് ഭാരം ഉത്പന്നത്തിന്റെ തരം അനുസരിച്ച് വ്യത്യസ്തമാണ്, കാരണം ഇത് വോളിയം അളവാണ്. "ഉദാഹരണത്തിന്, ടൊമാറ്റോകളുടെ ഒരു ബഷെൽ ഭാരം 56 പൗണ്ടുകൾ ആണ്... ഇല, പച്ചക്കറികൾ കൂടുതൽ സ്ഥലം പറക്കുന്നുണ്ടെങ്കിലും ഭാരം കുറവാണ്, അതിനാൽ സ്പിനാച്ചിന്റെ ബഷെർ വെറും 20 പൗണ്ടുകൾ മാത്രമാണ്." ഇത് എല്ലാം ബുദ്ധിമുട്ടുള്ള വിഷയമാണ്! ബഷെൽ-പൗണ്ട് പരിവർത്തനം ഒഴിവാക്കി, ബഷെൽ അടിസ്ഥാനത്തിൽ വില കണക്കാക്കാം. ഈ ബഷലുകൾ പഠനത്തിൽ നിന്ന് കാണേണ്ടത് ഡേറ്റയുടെ സ്വഭാവം മനസ്സിലാക്കുന്നതിന് എത്ര പ്രധാനമാണെന്നും വ്യക്തമാക്കുന്നു!
-ഇപ്പോൾ, ബുഷെൽ അളവിന്റെ അടിസ്ഥാനത്തിൽ യൂണിറ്റ് വില വിശകലനം ചെയ്യാം. ഡാറ്റ വീണ്ടും പ്രിന്റ് ചെയ്താൽ ഇത് എങ്ങനെ സാധാരണവത്കരിച്ചിട്ടുള്ളതാണെന്ന് കാണാം.
+ഇപ്പോൾ, അവർക്ക് ബഷെൽ അളവിന്റെ അടിസ്ഥാനത്തിൽ യൂണിറ്റ് വില വിശകലനം ചെയ്യാം. ഒരു മുറി കൂടി ഡേറ്റ പ്രിന്റ് ചെയ്താൽ എങ്ങനെ സാധാരണമാക്കിയിട്ടുള്ളതുവെന്ന് കാണാം.
-✅ പംപ്കിനുകൾ അർദ്ധ-ബുഷെൽ പ്രകാരം വിൽക്കുമ്പോൾ വളരെ വിലകൂടിയാണെന്ന് ശ്രദ്ധിച്ചോ? എന്തുകൊണ്ടെന്ന് കണ്ടെത്താമോ? സൂചന: ചെറിയ പംപ്കിനുകൾ വലിയവയെക്കാൾ വിലകൂടിയതാണ്, കാരണം ഒരു വലിയ പൊള്ളയായ പൈ പംപ്കിൻ എടുത്തിടുന്ന ഉപയോഗിക്കാത്ത സ്ഥലത്തെ തുടർന്ന് ബുഷെലിൽ അവയുടെ എണ്ണം വളരെ കൂടുതലാണ്.
+✅ ബഷൽ-അർദ്ധം വിൽക്കുന്ന പംപ്കിനുകൾ വളരെ വില贵മായവ ആണെന്ന് ശ്രദ്ധിച്ചോ? എന്തുകൊണ്ട് എന്ന് മനസ്സിലാക്കാമോ? സൂചന: ചെറിയ പംപ്കിനുകൾ വലിയവയെക്കാളും വളരെ ഉയർന്ന വിലക്കൂടിയവ ആണ്, കാരണം ഒരറ്റുപാട് കൂട്ടം ഉള്ള വലിയ hollow പൈ പംപ്കിനിൽ വീതം ഉപയോഗിക്കാതിരിക്കുന്ന അവിടം കാരണം അഞ്ചിന്.
-## ദൃശ്യവൽക്കരണ തന്ത്രങ്ങൾ
+## ദൃശ്യീകരണ തന്ത്രങ്ങൾ
-ഡാറ്റ സയന്റിസ്റ്റിന്റെ ഒരു ഭാഗം, അവർ പ്രവർത്തിക്കുന്ന ഡാറ്റയുടെ ഗുണമേന്മയും സ്വഭാവവും പ്രദർശിപ്പിക്കുകയാണ്. ഇതിന്, അവർ പലപ്പോഴും രസകരമായ ദൃശ്യവൽക്കരണങ്ങൾ, പ്ലോട്ടുകൾ, ഗ്രാഫുകൾ, ചാർട്ടുകൾ സൃഷ്ടിക്കുന്നു, ഡാറ്റയുടെ വ്യത്യസ്ത വശങ്ങൾ കാണിക്കുന്നു. ഇതിലൂടെ, അവർ ദൃശ്യമായി ബന്ധങ്ങളും ഇടവേളകളും കാണിക്കാൻ കഴിയും, സാധാരണയായി കണ്ടെത്താൻ ബുദ്ധിമുട്ടുള്ളവ.
+ഡേറ്റ സയന്റിസ്റ്റിന്റെ പങ്കിൽ പ്രധാനമാണ് അവർ പ്രവർത്തിക്കുന്ന ഡേറ്റയുടെ ഗുണമേന്മയും സ്വഭാവവും തെളിയിക്കുകയാണ്. ഇതിന് അവർ സാധാരണയായി രസകരമായ ദൃശ്യങ്ങൾ, പ്ലോട്ടുകൾ, ഗ്രാഫുകൾ, ചാർട്ടുകൾ സൃഷ്ടിക്കുന്നു, ഡേറ്റയുടെ വ്യത്യസ്ത അംശങ്ങൾ കാണിക്കുന്നതോടെ. ഇതുവഴി, അപൂർവ്വമായി കണ്ടെത്താൻ പ്രയാസമായ ബന്ധങ്ങളും ദോഷങ്ങളും ദൃശ്യമായി കാണാമാകും.
[](https://youtu.be/SbUkxH6IJo0 "ML for beginners - How to Visualize Data with Matplotlib")
-> 🎥 ഈ പാഠത്തിനായി ഡാറ്റ ദൃശ്യവൽക്കരിക്കുന്നതിനെക്കുറിച്ച് ഒരു ചെറിയ വീഡിയോ കാണാൻ മുകളിൽ ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക.
+> 🎥 ഈ പാഠത്തിനായി ഡേറ്റ ദൃശ്യീകരണത്തിന് ദൃശ്യമായി സ്വയം പഠിക്കാൻ മുകളിലെ ചിത്രം ക്ലിക്ക് ചെയ്യുക.
-ദൃശ്യവൽക്കരണങ്ങൾ ഡാറ്റയ്ക്ക് ഏറ്റവും അനുയോജ്യമായ മെഷീൻ ലേണിംഗ് സാങ്കേതിക വിദ്യ നിർണ്ണയിക്കാനും സഹായിക്കുന്നു. ഒരു സ്കാറ്റർപ്ലോട്ട് ഒരു രേഖ പിന്തുടരുന്ന പോലെ തോന്നിയാൽ, ഡാറ്റ ലീനിയർ റെഗ്രഷൻ അഭ്യാസത്തിന് നല്ല സ്ഥാനാർത്ഥിയാണ്.
+ദൃശ്യീകരണങ്ങൾ ഡേറ്റയ്ക്ക് ഏറ്റവും അനുയോജ്യമായ മെഷീൻ ലേണിംഗ് സാങ്കേതിക വിദ്യ കണ്ടുപിടിക്കാനും സഹായിക്കുന്നു. ഒരു സ്കാറ്റർപ്ലോട്ട് ഒരു രേഖ അനുസരിക്കുന്നതായി തോന്നുന്നുവെങ്കിൽ, അത് ഒരു ലിനിയർ റെഗ്രഷൻ അവസാനിച്ചാൽ നല്ല മതിയായ സാധ്യതയ 있다는 സൂചനയാണ്.
-Jupyter നോട്ട്ബുക്കുകളിൽ നല്ല പ്രവർത്തനം കാണിക്കുന്ന ഒരു ഡാറ്റ ദൃശ്യവൽക്കരണ ലൈബ്രറി [Matplotlib](https://matplotlib.org/) ആണ് (മുൻപത്തെ പാഠത്തിലും നിങ്ങൾ കണ്ടതാണ്).
+Jupyter നോട്ട്ബുക്കുകളിൽ നന്നായി പ്രവർത്തിക്കുന്ന ഒരു ഡേറ്റാ ദൃശ്യീകരണ ലൈബ്രറി [Matplotlib](https://matplotlib.org/) ആണ് (മുന് പാഠത്തില് കാണിച്ചതുപോലെ).
-> [ഈ ട്യൂട്ടോറിയലുകളിൽ](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott) ഡാറ്റ ദൃശ്യവൽക്കരണത്തിൽ കൂടുതൽ പരിചയം നേടുക.
+> [ഈ ട്യൂട്ടോറിയലുകൾ](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott) ഞെക്കുക ഡേറ്റാ ദൃശ്യീകരണത്തിൽ കൂടുതൽ പരിചയം നേടാൻ.
-## അഭ്യാസം - Matplotlib ഉപയോഗിച്ച് പരീക്ഷണം നടത്തുക
+## അഭ്യാസം - Matplotlib പരീക്ഷിക്കുക
-നിങ്ങൾ ഇപ്പോൾ സൃഷ്ടിച്ച പുതിയ ഡാറ്റാഫ്രെയിം പ്രദർശിപ്പിക്കാൻ ചില അടിസ്ഥാന പ്ലോട്ടുകൾ സൃഷ്ടിക്കാൻ ശ്രമിക്കുക. ഒരു അടിസ്ഥാന ലൈൻ പ്ലോട്ട് എന്ത് കാണിക്കും?
+പുതിയ ഡാറ്റാഫ്രെയിം പൂർത്തിയായി അത് ദൃശ്യരൂപത്തിലാക്കാൻ അടിസ്ഥാന പ്ലോട്ടുകൾ സൃഷ്ടിക്കാൻ ശ്രമിക്കുക. ഒരു അടിസ്ഥാന ലൈന്പ്ലോട്ട് എന്താണു കാണിക്കുക?
-1. ഫയലിന്റെ മുകളിൽ, Pandas ഇറക്കുമതിക്ക് താഴെ Matplotlib ഇറക്കുമതി ചെയ്യുക:
+1. ഫയലിന്റെ മുകളിൽ, Pandas ഇമ്പോർട്ടിന് കീഴിൽ Matplotlib ഇമ്പോർട്ട് ചെയ്യുക:
```python
import matplotlib.pyplot as plt
```
-1. മുഴുവൻ നോട്ട്ബുക്ക് വീണ്ടും റൺ ചെയ്യുക.
-1. നോട്ട്ബുക്കിന്റെ താഴെ ഭാഗത്ത്, ഡാറ്റ ബോക്സ് ആയി പ്ലോട്ട് ചെയ്യാൻ ഒരു സെൽ ചേർക്കുക:
+1. നോട്ട്ബുക്ക് പുനഃസംവര്ത്തിച്ച് പുതുക്കുക.
+1. നോട്ട്ബുക്കിന്റെ താഴിലാണ് ഡാറ്റ ബോക്സ് രൂപത്തിൽ പ്ലോട്ട് ചെയ്യാൻ ഒരു സെൽ ചേർക്കുക:
```python
price = new_pumpkins.Price
@@ -174,46 +174,121 @@ Jupyter നോട്ട്ബുക്കുകളിൽ നല്ല പ്
plt.show()
```
- 
+ 
- ഇത് ഒരു ഉപകാരപ്രദമായ പ്ലോട്ട് ആണോ? ഇതിൽ എന്തെങ്കിലും നിങ്ങൾക്ക് അത്ഭുതം തോന്നുന്നുണ്ടോ?
+ ഇത് ഒരു ഉപയോഗപ്രദമായ പ്ലോട്ട് ആണോ? ഇതിൽ നിങ്ങൾക്ക് എന്തെങ്കിലും വിചിത്രമുണ്ടോ?
- ഇത് പ്രത്യേകിച്ച് ഉപകാരപ്രദമല്ല, കാരണം ഇത് നിങ്ങളുടെ ഡാറ്റ ഒരു മാസത്തിൽ പോയിന്റുകളുടെ വ്യാപ്തിയായി മാത്രം പ്രദർശിപ്പിക്കുന്നു.
+ ഇത് പ്രത്യേകിച്ച് ഉപകാരപ്രദം അല്ല, കാരണം ഇത് ഓരോ മാസത്തിലും നിങ്ങളുടെ ഡേറ്റ പോയിന്റുകളുടെ വ്യാപ്തി മാത്രമാണ് കാണിക്കുന്നത്.
-### ഇത് ഉപകാരപ്രദമാക്കുക
+### പ്രധാനമാക്കുക
-ചാർട്ടുകൾ ഉപകാരപ്രദമായ ഡാറ്റ പ്രദർശിപ്പിക്കാൻ, സാധാരണയായി ഡാറ്റയെ ഏതെങ്കിലും വിധത്തിൽ ഗ്രൂപ്പ് ചെയ്യേണ്ടതുണ്ട്. മാസങ്ങൾ y അക്ഷത്തിൽ കാണിക്കുന്ന, ഡാറ്റയുടെ വിതരണത്തെ പ്രദർശിപ്പിക്കുന്ന ഒരു പ്ലോട്ട് സൃഷ്ടിക്കാൻ ശ്രമിക്കാം.
+ചാർട്ടുകൾ ഉപകാരപ്രദമാക്കാൻ ഡേറ്റ ഗ്രൂപ്പുചെയ്യണം. y അക്സിസിൽ മാസം കാണിക്കുന്ന പ്ലോട്ടിൽ ഡേറ്റയുടെ വിതരണവും തെളിയിക്കുന്ന പ്ലോട്ട് സൃഷ്ടിക്കാൻ ശ്രമിക്കാം.
-1. ഗ്രൂപ്പുചെയ്ത ബാർ ചാർട്ട് സൃഷ്ടിക്കാൻ ഒരു സെൽ ചേർക്കുക:
+1. ഗ്രൂപ്പുചെയ്ത ബാർ ചാർട്ട് സൃഷ്ടിക്കാനുള്ള സെൽ ചേർക്കുക:
```python
new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar')
plt.ylabel("Pumpkin Price")
```
- 
+ 
+
+ ഇത് കൂടുതൽ ഉപകാരപ്രദമായ ഒരു ഡേറ്റാ ദൃശ്യീകരണമാണ്! ഇത് പംപ്കിനുകളുടെ ഏറ്റവും ഉയർന്ന വില സെപ്റ്റംബർ, ഒക്ടോബർ മാസങ്ങളിൽ ആയിരിക്കുമെന്ന് സൂചിപ്പിക്കുന്നു. ഇത് നിങ്ങൾ പ്രതീക്ഷിച്ചതേ? എന്തുകൊണ്ട് അല്ലെങ്കിൽ എന്തുകൊണ്ട് അല്ല?
+
+## അഭ്യാസം - Seaborn പരീക്ഷിക്കുക
+
+Matplotlib ശക്തമാണ്, എന്നാൽ ഒരു പരിപാവന ചാർട്ട് സൃഷ്ടിക്കാൻ സന്ദേഭവം കൂടുതൽ കോഡ് ആവശ്യമായിരിക്കും. [Seaborn](https://seaborn.pydata.org/) Matplotlibയുടെ മുകളിൽ നിർമ്മിച്ചതാണ്, ഇത് സാമ്പത്തിക ഡേറ്റാ ദൃശ്യീകരണത്തിനായി രൂപകൽപ്പന ചെയ്തതാണ്. ഇത് Pandas ഡാറ്റാഫ്രെയിമുകളുമായി നേരിട്ട് പ്രവർത്തിക്കാനും, ആകർഷകമായ നിർദ്ദേശശൈലികൾ പ്രയോഗിക്കാനും, കുറച്ചുകൂടി കോഡിൽ മനോഹരമായ പ്ലോട്ടുകൾ സൃഷ്ടിക്കാനും അനുവദിക്കുന്നു. Seaborn Matplotlib ആബ്രജക്റ്റുകൾ തിരികെ നൽകുന്നതുകൊണ്ട്, Matplotlib വേണ്ടി നിങ്ങൾക്ക് അറിയുന്ന ഏതു കാര്യവുമെല്ലാം കൃത്യമായി fine-tune ചെയ്യാൻ കഴിയും.
+
+> നിങ്ങൾക്ക് Seaborn ഇൻസ്റ്റാൾ ചെയ്തിട്ടില്ലെങ്കിൽ, `pip install seaborn` ഉപയോഗിച്ച് ഇൻസ്റ്റാൾ ചെയ്യുക.
+
+1. നോട്ട്ബുക്കിന്റെ മുകളിൽ, മറ്റ് ഇമ്പോർട്ടുകൾക്കു കീഴിൽ Seaborn ഇമ്പോർട്ട് ചെയ്യുക. സാധാരണ ഇത് `sns` എന്ന് ഇറക്കുമതി ചെയ്യപ്പെടുന്നു:
+
+ ```python
+ import seaborn as sns
+ ```
+
+### ബന്ധങ്ങൾ കാണിക്കാൻ സ്കാറ്റർ പ്ലോട്ടുകൾ
+
+ഒരു മോഡൽ നിർമ്മിക്കാനുള്ള മുമ്പിൽ ഡേറ്റ പര്യവേക്ഷണം ചെയ്യുമ്പോൾ, വേരിയബിളുകൾ തമ്മിലുള്ള _ബന്ധങ്ങൾ_ പരിശോധിക്കുന്നത് പ്രധാനമാണ്. [സ്കാറ്റർ പ്ലോട്ട്](https://en.wikipedia.org/wiki/Scatter_plot) ഇതിന് ഏറ്റവും നല്ല ഉപകരണങ്ങളിലൊന്നാണ്: പോയിന്റുകൾ ഒരു രേഖ പിന്തുടരുന്നതായി തോന്നിയാൽ, രണ്ട് വേരിയബിളുകൾ തമ്മിൽ ബന്ധമുണ്ടെന്ന് സൂചിപ്പിക്കുന്നതാണ്. ഇത് ലിനിയർ റെഗ്രഷൻ മോഡൽ പ്രവർത്തിക്കാനുള്ള നല്ല അടയാളമായാകാം.
+
+1. മുമ്പ് സൃഷ്ടിച്ച വില-മാസം സ്കാറ്റർ പ്ലോട്ടിനെ Seaborn-ന്റെ [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) (ബന്ധപ്പെട്ട പ്ലോട്ട്) ഉപയോഗിച്ച് പുനഃസൃഷ്ടിക്കുക, ഇത് നേരിട്ട് നിങ്ങളുടെ ഡാറ്റാഫ്രെയിം കൾമുകൾ ഉപയോഗിക്കുന്നു:
+
+ ```python
+ sns.relplot(x="Price", y="Month", data=new_pumpkins)
+ ```
+
+ 
+
+ ഇവിടെ നിങ്ങൾ ഡാറ്റാഫ്രെയിം, കോളം നാമങ്ങൾ പാസ്സ് ചെയ്യുന്നതായി കാണാം, Seaborn താൻ ആക്സിസ് ലൈബിൾ സ്വയം കൈകാര്യം ചെയ്യുന്നു.
+
+2. `kind="line"` പാസ്സ് ചെയ്ത് നിങ്ങൾ ലൈൻ പ്ലോട്ടിലേക്കു കടക്കാം. Seaborn ലൈൻ ചുറ്റും ആത്മവിശ്വാസ ഇന്റർവൽ കാണിക്കുന്ന ഒരു ശെയ്ഡഡ് ബാൻഡ് വരയ്ക്കും:
+
+ ```python
+ sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins)
+ ```
+
+ 
+
+ ഈ ഡേറ്റ ഏറെ ശബ്ദമുള്ളതാണ്, അതിനാൽ ലൈൻ പ്ലോട്ട് ഏറ്റവും വ്യക്തമായി തിരഞ്ഞെടുക്കാനാകാത്തതു പോലെയാണ് — എന്നാൽ Seaborn-ൽ എളുപ്പത്തിൽ ചാർട്ട് തരം മാറുന്നുവെന്നു കാണിക്കുന്നു.
+
+### വിതരണങ്ങൾ കാണിക്കാൻ ബാർ ചാർട്ടുകൾ
+
+
+മുമ്പ് നിങ്ങൾ Matplotlib ഉപയോഗിച്ച് ഒരു ബാർ ചാർട്ടുകൾ സൃഷ്ടിക്കാൻ ഡാറ്റയെ കൈയോടെ ഗ്രൂപ്പുചെയ്തു. Seaborn ന്റെ [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) (വർഗ്ഗീകരിച്ച പ്ലോട്ട്) നിങ്ങൾക്കായി ഗ്രൂപ്പിംഗ്, ആഗ്രെഗേഷൻ ചെയ്യാൻ കഴിയും. ഡിഫോൾട്ട് ആയി `kind="bar"` ഓരോ വർഗ്ഗത്തിന്റെയും ശരാശരി കാണിക്കുന്നു കൂടാതെ വിശ്വാസ интерവലിനെ സൂചിപ്പിക്കുന്ന കറുത്ത രേഖയിലുണ്ട്.
+
+1. മാസത്തിൽ ശരാശരി വിലയുടെ ബാർ ചാർട്ട് സൃഷ്ടിക്കുക:
+
+ ```python
+ sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar")
+ ```
+
+ 
+
+ ഇത് Matplotlib-ൽ നിങ്ങൾ കണ്ടതിനെ സ്ഥിരീകരിക്കുന്നു — വില സെപ്റ്റംബർ, ഒക്ടോബർ ഗണ്യമായി ഉയരുന്നു — പക്ഷേ Seaborn മാസങ്ങളിലെ വില എത്രത്തോളം _മാറ്റപ്പെടുന്നുണ്ടെന്ന്_ ദൃശ്യവൽക്കരിക്കുന്നു.
+
+### സഹബന്ധങ്ങള് കാണിക്കാന് ഹീറ്റ്മാപ്പുകള്
+
+സ്കാറ്റർ പ്ലോട്ടുകൾ ഒരുമിച്ച് രണ്ട് വ്യതിരിക്ത വേരിയബിൾസ് താരതമ്യം ചെയ്യുന്നു. ചില സംഖ്യാനുപാത കോളങ്ങളുള്ളപ്പോൾ, [ഹീറ്റ്മാപ്പ്](https://en.wikipedia.org/wiki/Heat_map) ഓരോ കോളം ജോഡിയുടെയും ബന്ധത്തിന്റെ ശക്തി ഒരുമിച്ച് കാണാൻ സഹായിക്കുന്നു. മോഡലിൽ എന്തൊക്കെ ഫീച്ചറുകൾ നൽകണമെന്ന് തീരുമാനിക്കുന്നതിന് മുമ്പ് ഇത് സാധാരണ ഉപയോഗിക്കുന്ന മാർഗമാണ് (ക്ലാസ്ഫിക്കേഷനിൽ കൺഫ്യൂഷൻ മാട്രിസുകൾ കാണിക്കുന്നതിനും ഇതുപോലെ ഒരു ചാർട്ട് ഉപയോഗിക്കുന്നു).
+
+1. Pandas ഉപയോഗിച്ച് സഹബന്ധ മാട്രിക്സ് നിർമ്മിക്കുക, ശേഷം Seaborn ന്റെ [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html) ഉപയോഗിച്ച് ഇത് വരയ്ക്കുക. `annot=True` ഓപ്ഷൻ ഓരോ സെല്ലിലും സഹബന്ധ മൂല്യങ്ങൾ അച്ചടിക്കാനുള്ളതാണ്:
+
+ ```python
+ correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()
+ sns.heatmap(correlations, annot=True, cmap="coolwarm")
+ ```
+
+ 
+
+ `1` (അഥവാ `-1`) സമീപമുള്ള മൂല്യങ്ങൾ കോളങ്ങൾ ശക്തമായി _രേഖാകൃതമായി_ ബന്ധപ്പെട്ടിരിക്കുന്നതിനെ സൂചിപ്പിക്കുന്നു. `Low Price`നും `High Price`നും ഏകദേശം പൂർണ്ണമായർത്ഥത്തിൽ ബന്ധപ്പെട്ടിരിക്കുന്നു. പക്ഷേ `Month` വിലയുമായി കുറച്ച് മാത്രമേ രേഖാകൃതമായി ബന്ധപ്പെടുന്നുള്ളൂ — മുകളിലത്തെ ബാർ ചാർട്ടിൽ സെപ്റ്റംബർ ഒക്ടോബറിൽ വ്യക്തമാക്കിയ സീസണൽ പീക്ക് ആയിട്ടും. ഇത് ഒരു പ്രധാന പാഠമാണ്: സഹബന്ധ ഗുണകം _നേരിൻറെ রেখാശൈലി_ ബന്ധങ്ങൾ മാത്രം അളക്കുന്നു, അതിനാൽ സീസണൽ അല്ലെങ്കിൽ മറ്റു അപ്രകാരമായ രേഖാകൃതമല്ലാത്ത രീതി കാണാനാകില്ല. ✅ ഒരേസമയം ഹീറ്റ്മാപ്പും ബാർ ചാർട്ടുപോയിലും കാണുന്നത് എന്തുകൊണ്ട് ഉപകാരപ്രദമാണ് എന്ന് ഭേദിച്ച് പറയുക?
+
+### Matplotlib ആണോ Seaborn ആണോ?
+
+രണ്ട് ലൈബ്രറികളും അറിഞ്ഞിരിക്കേണ്ടതാണ്:
+
+- **Matplotlib** ചാർട്ടിലെ ഓരോ ഘടകത്തിലും സൂക്ഷ്മ നിയന്ത്രണം നൽകുന്നു, കൂടാതെ മറ്റു പല Python പ്ലോട്ടിംഗ് ലൈബ്രറികളുടെ അടിസ്ഥാനമാണ്.
+- **Seaborn** സാങ്ക statistik ഗാനികൾക്കായുള്ള ഉയർന്ന നില ഫംഗ്ഷനുകളും ആകർഷകമടഡ് ഡിഫോൾട്ടുകളും നൽകുന്നു, ഡാറ്റാഫ്രെയിമുകളുമായി നേരിട്ട് പ്രവർത്തിക്കുന്നു, ആൻഡ് എക്സ്പ്ലോറേറ്ററി ഡാറ്റ അനാലിസിസിന് അധികമായി വേഗത്തിൽ ഫലം നൽകുന്നു.
- ഇത് കൂടുതൽ ഉപകാരപ്രദമായ ഡാറ്റ ദൃശ്യവൽക്കരണമാണ്! പംപ്കിനുകളുടെ ഏറ്റവും ഉയർന്ന വില സെപ്റ്റംബർ, ഒക്ടോബർ മാസങ്ങളിൽ സംഭവിക്കുന്നതായി ഇത് സൂചിപ്പിക്കുന്നു. ഇത് നിങ്ങളുടെ പ്രതീക്ഷയുമായി പൊരുത്തപ്പെടുന്നുണ്ടോ? എന്തുകൊണ്ടോ എന്തുകൊണ്ടല്ല?
+ഒരു സാധാരണ പ്രവൃത്തി രീതിയാണ് ആദ്യം Seaborn ഉപയോഗിച്ച് ഡാറ്റ എളുപ്പത്തിൽ അന്വേഷിക്കുക, പിന്നീട് വിശദീകരണങ്ങൾക്കായി Matplotlib-ലേക്ക് പോകുക.
---
-## 🚀ചലഞ്ച്
+## 🚀ചേതഞ്ച്
-Matplotlib നൽകുന്ന വിവിധ ദൃശ്യവൽക്കരണ തരം പരിശോധിക്കുക. റെഗ്രഷൻ പ്രശ്നങ്ങൾക്ക് ഏറ്റവും അനുയോജ്യമായ തരം ഏതാണ്?
+Matplotlib, Seaborn എന്നിവ നൽകിയിരിക്കുന്ന വ്യത്യസ്ത ദൃശ്യവൽക്കരണ തരം പരിശോധിക്കുക. റിഗ്രഷൻ പ്രശ്നങ്ങൾക്ക് അനുയോജ്യമായതേത് ഏതാണ്?
## [പോസ്റ്റ്-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ml/)
## അവലോകനം & സ്വയം പഠനം
-ഡാറ്റ ദൃശ്യവൽക്കരിക്കുന്ന നിരവധി മാർഗങ്ങൾ പരിശോധിക്കുക. ലഭ്യമായ വിവിധ ലൈബ്രറികളുടെ പട്ടിക തയ്യാറാക്കുക, പ്രത്യേകിച്ച് 2D ദൃശ്യവൽക്കരണങ്ങൾക്കും 3D ദൃശ്യവൽക്കരണങ്ങൾക്കും ഏത് ലൈബ്രറികൾ ഏറ്റവും അനുയോജ്യമാണ് എന്ന് കുറിക്കുക. നിങ്ങൾ എന്ത് കണ്ടെത്തുന്നു?
+ഡാറ്റ ദൃശ്യമാക്കാനുള്ള പല മാർഗങ്ങൾ പരിശോധിക്കുക. ലഭ്യമായ വിവിധ ലൈബ്രറികളുടെ പട്ടിക തയ്യാറാക്കുക, വേറിട്ട റൺ തരം ചുമതലയ്ക്ക് ഏറ്റവും അനുയോജ്യമാണെന്ന് ശ്രദ്ധിക്കുക, ഉദാഹരണത്തിന് 2D ദൃശ്യവൽക്കരണം എതിര് 3D ദൃശ്യവൽക്കരണം. നിങ്ങൾ എന്തെന്തു കണ്ടെത്തുന്നു?
## അസൈൻമെന്റ്
-[ദൃശ്യവൽക്കരണം അന്വേഷിക്കൽ](assignment.md)
+[ദൃശ്യവൽക്കരണങ്ങൾ അന്വേഷിക്കൽ](assignment.md)
---
-**അസൂയാ**:
-ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖയാണ് പ്രാമാണികമായ ഉറവിടം എന്ന് പരിഗണിക്കേണ്ടതാണ്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല.
+**അറിയിപ്പ്**:
+ഈ രേഖ AI പരിഭാഷാ സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് പരിഭാഷപ്പെടുത്തിയതാണ്. ഞങ്ങൾ കൃത്യതയ്ക്കായി ശ്രമിക്കുന്നുവെങ്കിലും, ഓട്ടോമേറ്റഡ് പരിഭാഷകളിൽ പിഴവുകൾ അല്ലെങ്കിൽ തെറ്റായ വിവരങ്ങൾ ഉണ്ടാകാൻ സാധ്യതയുണ്ട്. അതിന്റെ സ്വാഭാവിക ഭാഷയിലുള്ള അസൽ രേഖയാണ് പ്രാമാണികമായ ഉറവിടമായി പരിഗണിക്കേണ്ടത്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ പരിഭാഷ ശുപാർശ ചെയ്യുന്നു. ഈ പരിഭാഷ ഉപയോഗിച്ച് ഉണ്ടാകുന്ന തെറ്റിദ്ധാരണകൾ അല്ലെങ്കിൽ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കായി ഞങ്ങൾ ഉത്തരവാദികളല്ല.
\ No newline at end of file
diff --git a/translations/ml/2-Regression/2-Data/solution/notebook.ipynb b/translations/ml/2-Regression/2-Data/solution/notebook.ipynb
index 7b08e1273..11f37fdd8 100644
--- a/translations/ml/2-Regression/2-Data/solution/notebook.ipynb
+++ b/translations/ml/2-Regression/2-Data/solution/notebook.ipynb
@@ -4,7 +4,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## പമ്പ്കിനുകൾക്കുള്ള ലീനിയർ റെഗ്രഷൻ - പാഠം 2\n"
+ "## പം കടിനികൾക്കായുള്ള രേഖീയ പ്രത്യക്ഷപ്പെടുത്തൽ - പാഠം 2\n"
]
},
{
@@ -222,6 +222,7 @@
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
"pumpkins = pd.read_csv('../../data/US-pumpkins.csv')\n",
"\n",
"pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]\n",
@@ -385,18 +386,78 @@
"plt.ylabel(\"Pumpkin Price\")"
]
},
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## സീബോൺ ഉപയോഗിച്ച് ദൃശ്യരൂപീകരണം\n",
+ "\n",
+ "[Seaborn](https://seaborn.pydata.org/) Matplotlibന്റെ മുകളിൽ നിർമ്മിച്ചതാണ്, അത് ഡാറ്റാഫ്രെയിംസുമായി നേരിട്ട് പ്രവർത്തിക്കുകയും വളരെ കുറച്ചു കോഡിൽ ആകർഷകമായ പാങ്കണതിവഴി ബന്ധു വരക്കം നിർമിക്കാൻ സഹായിക്കുകയും ചെയ്യുന്നു.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### ബന്ധങ്ങൾ കാണിക്കാൻ സ്കാറ്റർ പ്ലോട്ടുകൾ\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", kind=\"line\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### വിതരണം കാണിക്കുന്ന ബാർ ചാർട്ടുകൾ\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.catplot(x=\"Month\", y=\"Price\", data=new_pumpkins, kind=\"bar\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### ആകർഷണങ്ങൾ കാണിക്കുന്ന ഹീറ്റ്മ്യാപുകൾ\n"
+ ]
+ },
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
- "source": []
+ "source": [
+ "correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()\n",
+ "sns.heatmap(correlations, annot=True, cmap=\"coolwarm\")"
+ ]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "---\n\n\n**അസൂയാപത്രം**: \nഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, യന്ത്രം ചെയ്ത വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ അധികാരപരമായ ഉറവിടമായി കണക്കാക്കപ്പെടണം. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല.\n\n"
+ "---\n\n\n**അറിയിപ്പ്**:\nഈ രേഖ AI പരിഭാഷാ സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് പരിഭാഷപ്പെടുത്തിയതാണ്. ഞങ്ങൾ കൃത്യതയ്ക്കായി ശ്രമിക്കുന്നുവെങ്കിലും, ഓട്ടോമേറ്റഡ് പരിഭാഷകളിൽ പിഴവുകൾ അല്ലെങ്കിൽ തെറ്റായ വിവരങ്ങൾ ഉണ്ടാകാൻ സാധ്യതയുണ്ട്. അതിന്റെ സ്വാഭാവിക ഭാഷയിലുള്ള അസൽ രേഖയാണ് പ്രാമാണികമായ ഉറവിടമായി പരിഗണിക്കേണ്ടത്. നിർണായകമായ വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ പരിഭാഷ ശുപാർശ ചെയ്യുന്നു. ഈ പരിഭാഷ ഉപയോഗിച്ച് ഉണ്ടാകുന്ന തെറ്റിദ്ധാരണകൾ അല്ലെങ്കിൽ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കായി ഞങ്ങൾ ഉത്തരവാദികളല്ല.\n\n"
]
}
],
@@ -426,13 +487,7 @@
"hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d"
}
},
- "orig_nbformat": 2,
- "coopTranslator": {
- "original_hash": "95726f0b8283628d5356a4f8eb8b4b76",
- "translation_date": "2025-12-19T16:31:48+00:00",
- "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
- "language_code": "ml"
- }
+ "orig_nbformat": 2
},
"nbformat": 4,
"nbformat_minor": 2
diff --git a/translations/mr/.co-op-translator.json b/translations/mr/.co-op-translator.json
index cb64b65bc..e8a5cb1ae 100644
--- a/translations/mr/.co-op-translator.json
+++ b/translations/mr/.co-op-translator.json
@@ -24,8 +24,8 @@
"language_code": "mr"
},
"1-Introduction/3-fairness/README.md": {
- "original_hash": "9a6b702d1437c0467e3c5c28d763dac2",
- "translation_date": "2025-09-06T06:12:57+00:00",
+ "original_hash": "0f00d72169a0d37eecfd16d71e01700a",
+ "translation_date": "2026-07-14T02:19:57+00:00",
"source_file": "1-Introduction/3-fairness/README.md",
"language_code": "mr"
},
@@ -54,8 +54,8 @@
"language_code": "mr"
},
"2-Regression/1-Tools/README.md": {
- "original_hash": "fa81d226c71d5af7a2cade31c1c92b88",
- "translation_date": "2025-09-06T06:06:21+00:00",
+ "original_hash": "0b8635427b582d03ea4ab7089b93e505",
+ "translation_date": "2026-07-14T02:14:05+00:00",
"source_file": "2-Regression/1-Tools/README.md",
"language_code": "mr"
},
@@ -72,8 +72,8 @@
"language_code": "mr"
},
"2-Regression/2-Data/README.md": {
- "original_hash": "7c077988328ebfe33b24d07945f16eca",
- "translation_date": "2025-09-06T06:07:10+00:00",
+ "original_hash": "a58b2c4d16c6b122643391745ac15af6",
+ "translation_date": "2026-07-14T02:16:28+00:00",
"source_file": "2-Regression/2-Data/README.md",
"language_code": "mr"
},
@@ -89,6 +89,12 @@
"source_file": "2-Regression/2-Data/solution/Julia/README.md",
"language_code": "mr"
},
+ "2-Regression/2-Data/solution/notebook.ipynb": {
+ "original_hash": "96b95f8cf473481f2f371de8156f1571",
+ "translation_date": "2026-07-14T02:02:25+00:00",
+ "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
+ "language_code": "mr"
+ },
"2-Regression/3-Linear/README.md": {
"original_hash": "8b776e731c35b171d316d01d0e7b1369",
"translation_date": "2026-04-26T19:58:22+00:00",
@@ -115,7 +121,7 @@
},
"2-Regression/4-Logistic/README.md": {
"original_hash": "abf86d845c84330bce205a46b382ec88",
- "translation_date": "2025-09-06T06:05:45+00:00",
+ "translation_date": "2026-07-14T02:15:15+00:00",
"source_file": "2-Regression/4-Logistic/README.md",
"language_code": "mr"
},
@@ -457,7 +463,7 @@
},
"8-Reinforcement/1-QLearning/README.md": {
"original_hash": "911efd5e595089000cb3c16fce1beab8",
- "translation_date": "2025-09-06T06:18:51+00:00",
+ "translation_date": "2026-07-14T02:17:48+00:00",
"source_file": "8-Reinforcement/1-QLearning/README.md",
"language_code": "mr"
},
@@ -481,7 +487,7 @@
},
"8-Reinforcement/2-Gym/README.md": {
"original_hash": "107d5bb29da8a562e7ae72262d251a75",
- "translation_date": "2025-09-06T06:19:34+00:00",
+ "translation_date": "2026-07-14T02:18:58+00:00",
"source_file": "8-Reinforcement/2-Gym/README.md",
"language_code": "mr"
},
@@ -523,7 +529,7 @@
},
"9-Real-World/2-Debugging-ML-Models/README.md": {
"original_hash": "df2b538e8fbb3e91cf0419ae2f858675",
- "translation_date": "2025-09-06T06:12:09+00:00",
+ "translation_date": "2026-07-14T02:21:00+00:00",
"source_file": "9-Real-World/2-Debugging-ML-Models/README.md",
"language_code": "mr"
},
@@ -581,6 +587,19 @@
"source_file": "TROUBLESHOOTING.md",
"language_code": "mr"
},
+ "__translation_failures__": {
+ "sketchnotes/LICENSE.md": {
+ "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f",
+ "source_file": "sketchnotes/LICENSE.md",
+ "language_code": "mr",
+ "failure_date": "2026-07-14T02:13:15+00:00",
+ "status": "failed",
+ "error_type": "TranslationIncompleteError",
+ "error_message": "Markdown translation remained incomplete for chunk 1.1.1 of 'LICENSE.md', and the chunk could not be split further.",
+ "translator_version": "0.20.0",
+ "failure_policy_version": 1
+ }
+ },
"docs/_sidebar.md": {
"original_hash": "68dd06c685f6ce840e0acfa313352e7c",
"translation_date": "2025-08-29T17:19:16+00:00",
diff --git a/translations/mr/1-Introduction/3-fairness/README.md b/translations/mr/1-Introduction/3-fairness/README.md
index 8186492e2..bfe6b444c 100644
--- a/translations/mr/1-Introduction/3-fairness/README.md
+++ b/translations/mr/1-Introduction/3-fairness/README.md
@@ -1,143 +1,167 @@
-# मशीन लर्निंगसह जबाबदार AI उपाय तयार करणे
-
-
-> स्केच नोट: [Tomomi Imura](https://www.twitter.com/girlie_mac)
-
-## [पूर्व-व्याख्यान प्रश्नमंजुषा](https://ff-quizzes.netlify.app/en/ml/)
+# जबाबदार AI सह मशीन लर्निंग सोल्यूशन्स तयार करणे
+
+
+> स्केचनोट [Tomomi Imura](https://www.twitter.com/girlie_mac) यांच्याकडून
+## [पूर्व-व्याख्यान क्विझ](https://ff-quizzes.netlify.app/en/ml/)
+
## परिचय
-या अभ्यासक्रमात, तुम्ही मशीन लर्निंग कसे आणि कशा प्रकारे आपल्या दैनंदिन जीवनावर परिणाम करत आहे हे शोधायला सुरुवात कराल. सध्या, आरोग्य सेवा निदान, कर्ज मंजुरी किंवा फसवणूक शोधणे यासारख्या दैनंदिन निर्णय घेण्याच्या कामांमध्ये प्रणाली आणि मॉडेल्स सहभागी आहेत. त्यामुळे हे मॉडेल्स विश्वासार्ह परिणाम देण्यासाठी चांगले कार्य करणे महत्त्वाचे आहे. कोणत्याही सॉफ्टवेअर अनुप्रयोगाप्रमाणेच, AI प्रणाली अपेक्षांमध्ये अपयशी ठरू शकतात किंवा अवांछित परिणाम देऊ शकतात. म्हणूनच AI मॉडेलच्या वर्तनाला समजून घेणे आणि स्पष्ट करणे आवश्यक आहे.
+या अभ्यासक्रमात, आपण शोधायला सुरुवात कराल की मशीन लर्निंग आपले दररोजचे जीवन कसे प्रभावित करत आहे आणि करीत आहे. अगोदरच, प्रणाली आणि मॉडेल दररोजच्या निर्णय घेण्यात सहभागी आहेत, जसे की आरोग्य देखभाल निदान, कर्ज मंजुरी किंवा फसवणूक शोधणे. त्यामुळे, हे मॉडेल विश्वसनीय निकाल देण्यासाठी चांगले काम करणे आवश्यक आहे. कोणत्याही सॉफ्टवेअर अनुप्रयोगाप्रमाणे, AI प्रणाली अपेक्षा पूर्ण करू शकत नाहीत किंवा अपेक्षित निकाल देऊ शकतात. त्यामुळे, AI मॉडेलच्या वर्तनाचे समजून घेणे आणि स्पष्ट करणे आवश्यक आहे.
-कल्पना करा की तुम्ही वापरत असलेल्या डेटामध्ये विशिष्ट लोकसंख्येचा अभाव आहे, जसे की वंश, लिंग, राजकीय दृष्टिकोन, धर्म, किंवा अशा लोकसंख्येचे असमान प्रतिनिधित्व आहे. मॉडेलचा आउटपुट काही लोकसंख्येला प्राधान्य देण्यासाठी व्याख्या केला जातो तेव्हा काय होते? अनुप्रयोगासाठी त्याचा परिणाम काय होतो? याशिवाय, जेव्हा मॉडेलचा प्रतिकूल परिणाम होतो आणि तो लोकांसाठी हानिकारक ठरतो तेव्हा काय होते? AI प्रणालीच्या वर्तनासाठी कोण जबाबदार आहे? हे काही प्रश्न आहेत जे आपण या अभ्यासक्रमात शोधू.
+विचार करा की जेव्हा आपण मॉडेल तयार करताना वापरत असलेला डेटा काही विशिष्ट लोकसंख्याशास्त्र जसे की जात, लिंग, राजकीय दृष्टीकोन, धर्म किंवा असममितपणे अशा लोकसंख्यांसाठी प्रतिनिधित्व करणारा नसेल तर काय होईल? जेव्हा मॉडेलचे परिणाम एखाद्या लोकसंख्यास प्राधान्य देण्यासाठी समजले जातात तेव्हा काय होते? अनुप्रयोगासाठी काय परिणाम होतो? शिवाय, जेव्हा मॉडेलचा परिणाम प्रतिकूल असेल आणि लोकांसाठी हानिकारक असेल तेव्हा काय होईल? AI प्रणालींच्या वर्तनासाठी कोण जबाबदार आहे? या काही प्रश्नांचा आपण या अभ्यासक्रमात शोध घेऊ.
-या धड्यात तुम्ही:
+या धडे दरम्यान, आपण:
-- मशीन लर्निंगमधील न्याय्यतेचे महत्त्व आणि न्याय्यतेशी संबंधित हानींबद्दल जागरूकता वाढवाल.
-- विश्वासार्हता आणि सुरक्षितता सुनिश्चित करण्यासाठी अपवाद आणि असामान्य परिस्थितींचा अभ्यास करण्याच्या पद्धतीशी परिचित व्हाल.
-- सर्वांना सक्षम करण्यासाठी समावेशक प्रणाली डिझाइन करण्याची गरज समजून घ्याल.
-- डेटा आणि लोकांच्या गोपनीयतेचे आणि सुरक्षिततेचे संरक्षण करणे किती महत्त्वाचे आहे हे शोधाल.
-- AI मॉडेल्सच्या वर्तनाचे स्पष्टीकरण देण्यासाठी पारदर्शक दृष्टिकोनाचे महत्त्व पाहाल.
-- AI प्रणालींमध्ये विश्वास निर्माण करण्यासाठी जबाबदारी किती आवश्यक आहे याची जाणीव ठेवाल.
+- मशीन लर्निंगमधील निष्पक्षतेचे आणि निष्पक्षतेशी संबंधित हानिकारक परिणाम यांचे महत्त्व जाणून घ्या.
+- विश्वासार्हता आणि सुरक्षिततेसाठी अपवादात्मक परिस्थिती आणि असामान्य परिस्थितींचे अन्वेषण करण्याच्या पद्धतीशी परिचित व्हा.
+- सर्वांना सशक्त करण्यासाठी समावेशक प्रणाली डिझाइन करण्याच्या गरजेचा समज प्राप्त करा.
+- डेटा आणि लोकांच्या गोपनीयता आणि सुरक्षिततेचे संरक्षण करणे किती महत्त्वाचे आहे, हे जाणून घ्या.
+- AI मॉडेलच्या वर्तनाचे स्पष्टीकरण देण्यासाठी ग्लास बॉक्स दृष्टिकोन असण्याचे महत्त्व बघा.
+- AI प्रणालींमध्ये विश्वास निर्माण करण्यासाठी जबाबदारी किती आवश्यक आहे, याची जाणीव ठेवा.
-## पूर्वतयारी
+## पूर्व-आवश्यकता
-पूर्वतयारी म्हणून, कृपया "Responsible AI Principles" शिकण्याचा मार्ग घ्या आणि खालील व्हिडिओ पहा:
+पूर्व-आवश्यकतेसाठी, कृपया "Responsible AI Principles" लर्न पाथ घ्या आणि खालील विषयावर व्हिडिओ पहा:
-[Responsible AI शिकण्याचा मार्ग](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)
+जबाबदार AI बद्दल अधिक जाणून घेण्यासाठी हा [लर्निंग पाथ](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) फॉलो करा
-[](https://youtu.be/dnC8-uUZXSc "Microsoft चा जबाबदार AI दृष्टिकोन")
+[](https://youtu.be/dnC8-uUZXSc "Microsoft's Approach to Responsible AI")
-> 🎥 वरील प्रतिमेवर क्लिक करा: Microsoft चा जबाबदार AI दृष्टिकोन
+> 🎥 व्हिडिओसाठी वरील प्रतिमा क्लिक करा: Microsoft's Approach to Responsible AI
-## न्याय्यता
+## निष्पक्षता
-AI प्रणालींनी प्रत्येकाशी न्याय्य वर्तन करावे आणि समान गटांवर वेगळ्या प्रकारे परिणाम होण्याचे टाळावे. उदाहरणार्थ, जेव्हा AI प्रणाली वैद्यकीय उपचार, कर्ज अर्ज किंवा रोजगाराबाबत मार्गदर्शन प्रदान करतात, तेव्हा त्यांना समान लक्षणे, आर्थिक परिस्थिती किंवा व्यावसायिक पात्रता असलेल्या प्रत्येकासाठी समान शिफारसी करणे आवश्यक आहे. आपल्यापैकी प्रत्येकजण मानवी म्हणून वारसा मिळालेल्या पूर्वग्रहांसह जगतो, जे आपल्या निर्णयांवर आणि कृतींवर परिणाम करतात. हे पूर्वग्रह आपण AI प्रणालींना प्रशिक्षण देण्यासाठी वापरत असलेल्या डेटामध्ये दिसून येऊ शकतात. अशा प्रकारचे फेरफार कधीकधी अनवधानाने होऊ शकते. डेटामध्ये पूर्वग्रह कधी सादर केला जातो हे जाणून घेणे अनेकदा कठीण असते.
+AI प्रणाली प्रत्येकाला निष्पक्ष वागवायला हवी आणि संबंधित लोकसमुहांना भिन्न प्रकारे परिणाम करण्यापासून टाळाव्या. उदाहरणार्थ, जेव्हा AI प्रणाली वैद्यकीय उपचार, कर्ज अर्ज, किंवा नोकरी संदर्भात मार्गदर्शन करतात, तेव्हा त्यांनी अशाच लक्षणे, आर्थिक परिस्थिती, किंवा व्यावसायिक पात्रता असलेल्या सर्व लोकांना समान शिफारशी कराव्यात. आपल्यापैकी प्रत्येकजण जन्मजात पूर्वग्रह घेऊन चालतो ज्यामुळे आपल्या निर्णयांमध्ये प्रभाव पडतो. ह्या पूर्वग्रहांना आम्ही AI प्रणालींसाठी प्रशिक्षण देण्यासाठी वापरलेल्या डेटामधूनही आढळून येते. असे मनुष्याने जाणूनबुजून न करता देखील होऊ शकते. डेटा मध्ये पूर्वग्रह घेत आहात की नाही हे जाणणे अनेकदा कठीण असते.
-**"अन्याय"** म्हणजे लोकांच्या गटासाठी नकारात्मक परिणाम किंवा "हानी", जसे की वंश, लिंग, वय किंवा अपंगत्व स्थितीच्या संदर्भात परिभाषित केलेले. न्याय्यतेशी संबंधित मुख्य हानी वर्गीकृत केल्या जाऊ शकतात:
+**“अनिष्पक्षता”** म्हणजे एखाद्या लोकसमूहावर नकारात्मक परिणाम किंवा “हानि” अशी जसे की जात, लिंग, वय, किंवा अपंगत्वाच्या आधारे ठरवल्या गेलेल्या लोकांवर होणारी हानी. मुख्य निष्पक्षतेशी संबंधित हानिकारक परिणाम खालीलप्रमाणे वर्गीकृत करता येतात:
-- **वाटप**, जसे की एखाद्या लिंगाला किंवा वंशाला दुसऱ्यापेक्षा प्राधान्य दिले जाते.
-- **सेवेची गुणवत्ता**. जर तुम्ही डेटा एका विशिष्ट परिस्थितीसाठी प्रशिक्षण दिला असेल परंतु वास्तव अधिक जटिल असेल, तर ते खराब कार्यक्षमतेच्या सेवेकडे नेते. उदाहरणार्थ, एक हात साबण डिस्पेंसर जो गडद त्वचेच्या लोकांना ओळखू शकत नाही. [संदर्भ](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
-- **निंदा**. एखाद्या गोष्टीची किंवा व्यक्तीची अन्यायकारक टीका करणे आणि लेबल लावणे. उदाहरणार्थ, एक प्रतिमा लेबलिंग तंत्रज्ञानाने गडद त्वचेच्या लोकांच्या प्रतिमांना गोरिला म्हणून चुकीचे लेबल दिले.
-- **अतिरिक्त किंवा अपुरे प्रतिनिधित्व**. एखाद्या विशिष्ट गटाला विशिष्ट व्यवसायात न पाहण्याची कल्पना, आणि कोणतीही सेवा किंवा कार्य जे ते सतत प्रोत्साहित करते ते हानीसाठी योगदान देते.
-- **स्टीरिओटायपिंग**. एखाद्या गटाशी पूर्वनिर्धारित गुणधर्म जोडणे. उदाहरणार्थ, इंग्रजी आणि तुर्की भाषांमधील भाषांतर प्रणालीमध्ये लिंगाशी संबंधित स्टीरिओटायपिकल शब्दांमुळे अचूकतेचा अभाव असू शकतो.
+- **विनियोजन**, उदाहरणार्थ, एखाद्या लिंग किंवा वंशाला इतरांवर प्राधान्य दिले गेले.
+- **सेवेची गुणवत्ता**. जर एक विशिष्ट परिस्थितीसाठी डेटा प्रशिक्षित केला पण वास्तव अधिक गुंतागुंतीचे असेल तर ते कमी गुणवत्ता असलेल्या सेवेकडे नेतं. उदाहरणार्थ, हात धुण्याचा साबण देणारी यंत्रणा काळा त्वचा असलेल्या लोकांना ओळखू शकत नसणे. [संदर्भ](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
+- **अपमान**. एखाद्या व्यक्ती किंवा वस्तूचे अन्यायकारकपणे टीका करणे किंवा लेबल करणे. उदाहरणार्थ, चित्र लेबेलिंग तंत्रज्ञानाने काळ्या त्वचेच्या लोकांची चित्रे गोरिल्ला म्हणून चुकीने ग्रुप केल्या होत्या.
+- **अधिक किंवा कमी प्रतिनिधित्व**. कल्पना अशी की एखादा समुह विशिष्ट व्यवसायात दिसत नाही, आणि कोणताही सेवा किंवा कार्य जे ते पुढे नेते तितका हानीकारक असतो.
+- **सामान्यीकरण**. दिलेल्या गटाशी पूर्व-निर्धारित वैशिष्ट्ये जोडणे. उदाहरणार्थ, इंग्रजी ते तुर्की भाषांतरण प्रणालीत लिंगाधारित सामान्यीकरणामुळे चूका होण्याची शक्यता.
-
-> तुर्की भाषेत भाषांतर
+
+> तुर्कीमध्ये भाषांतर
-
-> पुन्हा इंग्रजीत भाषांतर
+
+> परत इंग्रजीमध्ये भाषांतर
-AI प्रणाली डिझाइन करताना आणि चाचणी करताना, आपल्याला सुनिश्चित करणे आवश्यक आहे की AI न्याय्य आहे आणि पूर्वग्रह किंवा भेदभावपूर्ण निर्णय घेण्यासाठी प्रोग्राम केलेले नाही, जे मानवी देखील घेण्यास मनाई आहे. AI आणि मशीन लर्निंगमध्ये न्याय्यता सुनिश्चित करणे हे एक जटिल सामाजिक-तांत्रिक आव्हान आहे.
+AI प्रणाली डिझाइन करताना आणि चाचणी घेताना आपल्याला खात्री करावी लागेल की AI निष्पक्ष आहे आणि पूर्वग्रहित किंवा भेदभाव करणारे निर्णय घेण्यासाठी प्रोग्राम केलेले नाही, जे मानवी लोक देखील करू शकत नाहीत. AI आणि मशीन लर्निंग मधील निष्पक्षता सुनिश्चित करणे एक गुंतागुंतीची सामाजिक-तांत्रिक आव्हान आहे.
### विश्वासार्हता आणि सुरक्षितता
-विश्वास निर्माण करण्यासाठी, AI प्रणालींना सामान्य आणि अनपेक्षित परिस्थितीत विश्वासार्ह, सुरक्षित आणि सुसंगत असणे आवश्यक आहे. AI प्रणाली विविध परिस्थितीत कसे वागतील हे जाणून घेणे महत्त्वाचे आहे, विशेषतः जेव्हा ते अपवाद असतात. AI उपाय तयार करताना, AI उपायांना सामोरे जावे लागणाऱ्या विविध परिस्थिती हाताळण्यासाठी कसे लक्ष केंद्रित करावे यावर भर देणे आवश्यक आहे. उदाहरणार्थ, एक स्वयंचलित कार लोकांच्या सुरक्षिततेला सर्वोच्च प्राधान्य म्हणून ठेवणे आवश्यक आहे. परिणामी, कारला चालवणाऱ्या AI ने कारला रात्री, वादळ किंवा हिमवृष्टी, रस्त्यावर धावणारी मुले, पाळीव प्राणी, रस्त्याचे बांधकाम इत्यादीसारख्या सर्व संभाव्य परिस्थितींचा विचार करणे आवश्यक आहे. AI प्रणाली विविध परिस्थिती विश्वासार्हपणे आणि सुरक्षितपणे कशी हाताळते हे डेटा वैज्ञानिक किंवा AI विकसकाने प्रणालीच्या डिझाइन किंवा चाचणी दरम्यान विचारात घेतलेल्या अपेक्षेच्या पातळीचे प्रतिबिंब आहे.
+विश्वास निर्माण करण्यासाठी, AI प्रणाली विश्वासार्ह, सुरक्षित आणि सामान्य तसेच अनपेक्षित परिस्थितीत सुसंगत असणे आवश्यक आहे. AI प्रणाली कशा परिस्थितीत कशी वागतील हे जाणून घेणे महत्त्वाचे आहे, विशेषतः जेव्हा त्या अपवादात्मक असतात. AI सोल्यूशन्स तयार करताना विविध परिस्थितींशी कसे हाताळावे यावर भर देणे गरजेचे आहे. उदाहरणार्थ, स्वयंचलित कार लोकांच्या सुरक्षिततेला सर्वोच्च प्राधान्य देते. परिणामी, त्या कारला AI ने सर्व संभाव्य परिस्थितींचा विचार करावा लागतो जसे की रात्री, वादळी हवामान, अपघात, रस्त्यावरील कामे इत्यादी. AI प्रणाली विविध परिस्थितीला किती चांगल्या प्रकारे हाताळतात यावर तिच्या डिझाइनर किंवा डेव्हलपरच्या तयारीचे प्रतिबिंब दिसते.
-> [🎥 येथे व्हिडिओसाठी क्लिक करा: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
+> [🎥 व्हिडिओसाठी येथे क्लिक करा: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
### समावेशकता
-AI प्रणाली सर्वांना गुंतवून ठेवण्यासाठी आणि सक्षम करण्यासाठी डिझाइन केल्या पाहिजेत. AI प्रणाली डिझाइन करताना आणि अंमलात आणताना डेटा वैज्ञानिक आणि AI विकसक प्रणालीतील संभाव्य अडथळे ओळखतात आणि त्यांना दूर करतात जे अनवधानाने लोकांना वगळू शकतात. उदाहरणार्थ, जगभरात 1 अब्ज लोक अपंग आहेत. AI च्या प्रगतीमुळे, ते त्यांच्या दैनंदिन जीवनात अधिक सहजपणे माहिती आणि संधींचा मोठ्या प्रमाणावर प्रवेश करू शकतात. अडथळ्यांना दूर करून, ते सर्वांसाठी चांगल्या अनुभवांसह AI उत्पादने विकसित करण्याच्या संधी निर्माण करते.
+AI प्रणाली अशा प्रकारे डिझाइन कराव्यात की ते प्रत्येकाला सहभागी करून सशक्त करतील. AI प्रणाली डिझाइन आणि अंमलबजावणी करताना डेटा वैज्ञानिक आणि AI डेव्हलपर अनपेक्षित तह टाळण्यासाठी संभाव्य अडथळ्यांची ओळख करतात आणि त्यांचे निराकरण करतात. उदाहरणार्थ, जगभरात 1 अब्ज लोक अपंग आहेत. AI च्या प्रगतीमुळे ते त्यांच्या दैनंदिन आयुष्यात सुलभपणे माहिती आणि संधींपर्यंत पोहोचू शकतात. अडथळे ओलांडून AI उत्पादनांचे नवोन्मेष आणि विकास करण्याच्या संधी निर्माण होतात.
-> [🎥 येथे व्हिडिओसाठी क्लिक करा: AI मधील समावेशकता](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
+> [🎥 इथे क्लिक करा: AI मध्ये समावेशन](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
### सुरक्षा आणि गोपनीयता
-AI प्रणाली सुरक्षित असाव्यात आणि लोकांच्या गोपनीयतेचा आदर करावा. जेव्हा प्रणाली गोपनीयता, माहिती किंवा जीवन धोक्यात आणते तेव्हा लोकांना त्या प्रणालींवर कमी विश्वास असतो. मशीन लर्निंग मॉडेल्स प्रशिक्षण देताना, सर्वोत्तम परिणाम मिळवण्यासाठी डेटावर अवलंबून राहतो. असे करताना, डेटाचा उगम आणि अखंडता विचारात घेतली पाहिजे. उदाहरणार्थ, डेटा वापरकर्त्याने सबमिट केला होता का किंवा सार्वजनिकपणे उपलब्ध होता का? पुढे, डेटासह काम करताना, गोपनीय माहितीचे संरक्षण करू शकणाऱ्या आणि हल्ल्यांना प्रतिकार करू शकणाऱ्या AI प्रणाली विकसित करणे आवश्यक आहे. AI अधिक प्रचलित होत असताना, गोपनीयता आणि महत्त्वाची वैयक्तिक आणि व्यावसायिक माहिती सुरक्षित करणे अधिक महत्त्वाचे आणि जटिल होत आहे. AI साठी गोपनीयता आणि डेटा सुरक्षा समस्यांवर विशेष लक्ष देणे आवश्यक आहे कारण डेटाचा प्रवेश AI प्रणालींना लोकांबद्दल अचूक आणि माहितीपूर्ण अंदाज आणि निर्णय घेण्यासाठी आवश्यक आहे.
+AI प्रणाली सुरक्षित असावीत आणि लोकांच्या गोपनीयतेचा आदर करावा. लोक त्या प्रणालींवर कमी विश्वास ठेवतात ज्या त्यांच्या गोपनीयता, माहिती किंवा जीवन धोक्यात आणू शकतात. मशीन लर्निंग मॉडेल्स प्रशिक्षण देताना आम्ही उत्तम निकालांसाठी डेटावर अवलंबून असतो. त्यामुळे, डेटाचा स्रोत आणि अखंडता विचारात घेतली पाहिजे. उदाहरणार्थ, डेटा वापरकर्त्याने सबमिट केलेला आहे का सर्वसामान्यपणे उपलब्ध आहे? त्यानंतर, डेटा वापरून AI प्रणाली विकसित करताना गोपनीय माहितीचे संरक्षण करणे आणि हल्ल्यांशी लढणे आवश्यक आहे. AI अधिक प्रमाणात वापरात येत असल्याने गोपनीयता आणि महत्त्वपूर्ण वैयक्तिक व व्यावसायिक माहितीचे संरक्षण अधिक महत्त्वाचे आणि गुंतागुंतीचे होत आहे. गोपनीयता आणि डेटा सुरक्षा समस्यांवर विशेष लक्ष देणे आवश्यक आहे कारण AI प्रणाली अचूक आणि माहितीपूर्ण अंदाज व निर्णय घेण्यासाठी डेटावर अवलंबून असतात.
-> [🎥 येथे व्हिडिओसाठी क्लिक करा: AI मधील सुरक्षा](https://www.microsoft.com/videoplayer/embed/RE4voJF)
+> [🎥 येथे क्लिक करा: AI मध्ये सुरक्षा](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- उद्योग म्हणून, गोपनीयता आणि सुरक्षिततेमध्ये आम्ही महत्त्वपूर्ण प्रगती केली आहे, जी GDPR (General Data Protection Regulation) सारख्या नियमांमुळे मोठ्या प्रमाणात प्रेरित झाली आहे.
-- तरीही AI प्रणालींसह, अधिक वैयक्तिक डेटा आवश्यकतेची तणाव मान्य करणे आवश्यक आहे जे प्रणालींना अधिक वैयक्तिक आणि प्रभावी बनवते – आणि गोपनीयता.
-- इंटरनेटसह कनेक्टेड संगणकांच्या जन्माप्रमाणेच, आम्ही AI संबंधित सुरक्षा समस्यांमध्ये मोठी वाढ पाहत आहोत.
-- त्याच वेळी, आम्ही सुरक्षा सुधारण्यासाठी AI वापरले जात असल्याचे पाहिले आहे. उदाहरणार्थ, आज बहुतेक आधुनिक अँटी-व्हायरस स्कॅनर AI ह्युरिस्टिक्सद्वारे चालवले जातात.
-- आपली डेटा विज्ञान प्रक्रिया नवीनतम गोपनीयता आणि सुरक्षा पद्धतींसह सुसंवादीपणे मिसळली पाहिजे.
+- उद्योग म्हणून, आम्ही गोपनीयता आणि सुरक्षा क्षेत्रांत महत्त्वपूर्ण प्रगती केली आहे, जी विशेषतः GDPR (General Data Protection Regulation) सारख्या नियमांमुळे झाली आहे.
+- तरीही AI प्रणालींसाठी, अधिक वैयक्तिक डेटा आवश्यक असून सिस्टम अधिक वैयक्तिक आणि कार्यक्षम करण्याच्या गरजेमुळे गोपनीयतेत तणाव असतो.
+- इंटरनेटसह कनेक्टेड संगणकांच्या उदयाप्रमाणे, AI संबंधित सुरक्षा समस्यांतही मोठ्या प्रमाणात वाढ झाली आहे.
+- त्याच वेळी, AI चा वापर सुरक्षा सुधारण्यासाठीही होतो आहे. उदाहरणार्थ, आजकाल बहुतेक आधुनिक अँटी-व्हायरस स्कॅनर्स AI युक्ति वापरून चालतात.
+- आम्हाला आपले डेटा सायन्स प्रक्रिया नवीनतम गोपनीयता आणि सुरक्षा धोरणांसह सुसंगत ठेवावे लागतील.
-### पारदर्शकता
-AI प्रणाली समजण्यासारख्या असाव्यात. पारदर्शकतेचा एक महत्त्वाचा भाग म्हणजे AI प्रणाली आणि त्यांच्या घटकांच्या वर्तनाचे स्पष्टीकरण देणे. AI प्रणालींचे समज सुधारण्यासाठी भागधारकांना त्यांचे कार्य कसे आणि का कार्य करते हे समजणे आवश्यक आहे जेणेकरून ते संभाव्य कार्यप्रदर्शन समस्या, सुरक्षा आणि गोपनीयता चिंता, पूर्वग्रह, वगळण्याच्या पद्धती किंवा अनपेक्षित परिणाम ओळखू शकतील. आम्हाला असेही वाटते की जे AI प्रणाली वापरतात त्यांनी त्या कधी, का आणि कशा प्रकारे तैनात करायचे ते प्रामाणिक आणि स्पष्ट असावे. तसेच ते वापरत असलेल्या प्रणालींच्या मर्यादा. उदाहरणार्थ, जर एखाद्या बँकेने ग्राहक कर्ज निर्णयांना समर्थन देण्यासाठी AI प्रणालीचा वापर केला असेल, तर परिणाम तपासणे आणि कोणता डेटा प्रणालीच्या शिफारसींवर प्रभाव टाकतो हे समजून घेणे महत्त्वाचे आहे. सरकार विविध उद्योगांमध्ये AI नियमन करण्यास सुरुवात करत आहेत, त्यामुळे डेटा वैज्ञानिक आणि संस्थांनी AI प्रणाली नियामक आवश्यकता पूर्ण करते का हे स्पष्ट करणे आवश्यक आहे, विशेषतः जेव्हा अवांछित परिणाम होतो.
+### पारदर्शकता
+AI प्रणाली समजण्याजोगी असावीत. पारदर्शकतेचा महत्त्वाचा भाग म्हणजे AI प्रणाली आणि त्यांच्या घटकांचे वर्तन स्पष्ट करणे. AI प्रणालींचे समज वाढविण्यासाठी भागधारकांनी शोधून काढले पाहिजे की ते कसे आणि का कार्य करतात जेणेकरून ते संभाव्य कार्यक्षमता प्रश्न, सुरक्षा आणि गोपनीयता चिंता, पूर्वग्रह, वगळण्याच्या प्रथांविषयी, किंवा अनपेक्षित परिणाम ओळखू शकतील. आम्हाला असा विश्वास आहे की AI प्रणाली वापरणारे लोक ईमानदारीने आणि स्पष्टपणे सांगायला हवे की ते कधी, का आणि कसे वापरतात तसेच वापरत असलेल्या सिस्टमची मर्यादा काय आहेत. उदाहरणार्थ, जर एक बँक ग्राहक कर्ज निर्णयांसाठी AI प्रणाली वापरत असेल, तर परिणाम तपासणे आणि कोणता डेटा सिस्टमच्या शिफारशींवर प्रभाव टाकतो हे समजणे महत्त्वाचे आहे. सरकारे उद्योगांमध्ये AI ला नियमन करत आहेत, म्हणून डेटा वैज्ञानिक आणि संस्थांनी AI सिस्टम नियमांचे पालन करते का ते समजावून सांगणे आवश्यक आहे, विशेषतः जेव्हा अपेक्षित परिणामीत.
-> [🎥 येथे व्हिडिओसाठी क्लिक करा: AI मधील पारदर्शकता](https://www.microsoft.com/videoplayer/embed/RE4voJF)
+> [🎥 येथे क्लिक करा: AI मध्ये पारदर्शकता](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- AI प्रणाली इतक्या जटिल असल्यामुळे, त्यांचे कार्य कसे चालते आणि परिणामांची व्याख्या करणे कठीण आहे.
-- या समजण्याचा अभाव प्रणालींचे व्यवस्थापन, ऑपरेशनलायझेशन आणि दस्तऐवजीकरण यावर परिणाम करतो.
-- या समजण्याचा अभाव अधिक महत्त्वाचा म्हणजे या प्रणालींनी तयार केलेल्या परिणामांचा वापर करून घेतलेले निर्णय प्रभावित करतो.
+- AI प्रणाली इतक्या गुंतागुंतीच्या असल्यामुळे, त्यांचा कार्य कसे होते आणि निकालांचे अर्थ लावणे कठीण आहे.
+- अशा समजुतीच्या अभावामुळे हे सिस्टम कसे व्यवस्थापित, ऑपरेशनल आणि दस्तऐवजीकरण केले जातात यावर परिणाम होतो.
+- सर्वात महत्त्वाचे म्हणजे, परिणामांवर आधारित निर्णय घेण्यात हा अभाव परिणाम करतो.
### जबाबदारी
+
+जे लोक AI प्रणाली डिझाइन व वापरात आणतात त्यांना त्यांच्या प्रणाली कशा चालतात याची जबाबदारी घ्यावी लागते. विशेषतः चेहरा ओळखण्याच्या तंत्रज्ञानासारख्या संवेदनशील वापरासंबंधित तंत्रज्ञानात जबाबदारी महत्त्वाची आहे. अलीकडे, चेहरा ओळखण्याच्या तंत्रज्ञानाची मागणी वाढली आहे, विशेषतः कायदे अंमलबजावणी संघटनांकडून जे हरवलेली मुले शोधण्यात वापरतात. तरीही, ही तंत्रज्ञान सरकारकडून लोकांच्या मूलभूत स्वातंत्र्यांवर धोका आणण्यासाठीही वापरली जाऊ शकते, उदा. विशिष्ट व्यक्तींवर सातत्य surveillance करण्यासाठी. त्यामुळे, डेटा वैज्ञानिक आणि संस्था त्यांचे AI प्रणाली व्यक्तींवर किंवा समाजावर कसा परिणाम करतात यासाठी जबाबदार असायला हवे.
-AI प्रणाली डिझाइन करणारे आणि तैनात करणारे लोक त्यांच्या प्रणाली कशा प्रकारे कार्य करतात यासाठी जबाबदार असले पाहिजेत. चेहरा ओळखण्यासारख्या संवेदनशील तंत्रज्ञानासह जबाबदारीची गरज विशेषतः महत्त्वाची आहे. अलीकडे, चेहरा ओळखण्याच्या तंत्रज्ञानाची मागणी वाढत आहे, विशेषतः कायद्याची अंमलबजावणी करणाऱ्या संस्थांकडून ज्यांना हरवलेल्या मुलांना शोधण्यासारख्या वापरांमध्ये तंत्रज्ञानाची क्षमता दिसते. तथापि, या तंत्रज्ञानाचा वापर सरकारकडून त्यांच्या नागरिकांच्या मूलभूत स्वातंत्र्याला धोका निर्माण करण्यासाठी केला जाऊ शकतो, उदाहरणार्थ, विशिष्ट व्यक्तींच्या सतत देखरेख सक्षम करून. त्यामुळे डेटा वैज्ञानिक आणि संस्थांनी त्यांच्या AI प्रणालीचा व्यक्ती किंवा समाजावर होणाऱ्या परिणामासाठी जबाबदार असणे आवश्यक आहे.
+[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft's Approach to Responsible AI")
-[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft चा जबाबदार AI दृष्टिकोन")
+> 🎥 वरील प्रतिमा क्लिक करा: Mass Surveillance Through Facial Recognition चे इशारे
-> 🎥 वरील प्रतिमेवर क्लिक करा: चेहरा ओळखण्याद्वारे मोठ्या प्रमाणावर देखरेखीसाठी इशारा
-
-शेवटी, आमच्या पिढीसाठी सर्वात मोठा प्रश्न, AI समाजात आणणारी पहिली पिढी म्हणून, संगणक लोकांसाठी जबाबदार राहतील याची खात्री कशी करायची आणि संगणक डिझाइन करणारे लोक इतर सर्वांसाठी जबाबदार राहतील याची खात्री कशी करायची हा आहे.
+शेवटी, आपल्या पिढीसाठी, जी पहिली पिढी आहे जी AI समाजात आणत आहे, सर्वाधिक मोठा प्रश्न आहे की संगणक लोकांशी जबाबदार राहतील कसे आणि जे लोक संगणक डिझाइन करतात ते सर्वांसाठी जबाबदार राहतील कसे.
## परिणाम मूल्यांकन
-मशीन लर्निंग मॉडेल प्रशिक्षण देण्यापूर्वी, AI प्रणालीचा उद्देश समजून घेण्यासाठी परिणाम मूल्यांकन करणे महत्त्वाचे आहे; त्याचा हेतू काय आहे; ते कुठे तैनात केले जाईल; आणि कोण प्रणालीशी संवाद साधत आहे. हे पुनरावलोकन करणाऱ्यांसाठी किंवा प्रणालीचे परीक्षण करणाऱ्यांसाठी संभाव्य जोखीम आणि अपेक्षित परिणाम ओळखताना विचारात घेण्यासारख्या घटकांना जाणून घेण्यासाठी उपयुक्त आहेत.
+मशीन लर्निंग मॉडेल प्रशिक्षित करण्यापूर्वी, AI प्रणालीचा हेतू समजून घेण्यासाठी परिणाम मूल्यांकन करणे महत्त्वाचे आहे; उद्दिष्ट काय आहे; कुठे हे तैनात केले जाईल; आणि कोण प्रणालीशी संवाद साधेल. हे समीक्षा करणाऱ्या किंवा प्रणाली चाचणी करणाऱ्या लोकांना संभाव्य धोके आणि अपेक्षित परिणाम ओळखताना विचारात घेण्यास मदत करते.
+
+परिणाम मूल्यांकन करताना लक्ष द्यावयाच्या क्षेत्रांमध्ये समाविष्ट आहे:
-परिणाम मूल्यांकन करताना लक्ष केंद्रित करण्याचे क्षेत्र खालीलप्रमाणे आहेत:
+* **व्यक्तींवर प्रतिकूल परिणाम**. प्रणाली व न वापरले जाणारे प्रतिबंध, समर्थन नसलेली वापर किंवा ज्ञात मर्यादा याबद्दल जागरूक राहणे अत्यंत आवश्यक आहे जेणेकरून प्रणाली असा वापर होणार नाही ज्यामुळे व्यक्तींना हानी पोहोचेल.
+* **डेटा आवश्यकता**. प्रणाली डेटा कसा आणि कुठे वापरेल हे समजणे समीक्षकांना डेटा आवश्यकता (उदा., GDPR किंवा HIPAA नियमांचे) लक्षात ठेवण्यासाठी मदत करते. शिवाय, डेटा स्रोत आणि प्रमाण पुरेसे आहे का तपासले पाहिजे.
+* **परिणाम सारांश**. प्रणाली वापरल्यामुळे उद्भवू शकणाऱ्या संभाव्य हान्यांची यादी तयार करा. ML जीवनचक्रादरम्यान, ओळखलेल्या समस्यांचे निराकरण झाले आहे की नाही हे बघा.
+* सहा मुख्य तत्त्वांसाठी **लक्ष्ये**. प्रत्येक तत्त्वांमधील लक्ष्य पूर्ण झाले आहे का आणि काही त्रुटी आहेत का याचे मूल्यमापन करा.
-* **व्यक्तींवर प्रतिकूल परिणाम**. कोणत्याही निर्बंध किंवा आवश्यकता, असमर्थित वापर किंवा प्रणालीच्या कार्यक्षमतेस अडथळा आणणाऱ्या कोणत्याही ज्ञात मर्यादा याची जाणीव असणे महत्त्वाचे आहे जेणेकरून प्रणालीचा वापर व्यक्तींना हानी पोहोचविण्याच्या पद्धतीने होऊ नये.
-* **डेटा आवश्यकता**. प्रणाली डेटा कसा आणि कुठे वापरेल याची समज मिळवणे पुनरावलोकन करणाऱ्यांना कोणत्याही डेटा आवश्यकता (उदा., GDPR किंवा HIPPA डेटा नियम) विचारात घेणे आवश्यक आहे. याशिवाय, प्रशिक्षणासाठी स्रोत किंवा डेटाचे प्रमाण पुरेसे आहे का हे तपासा.
-* **परिणामाचा सारांश**. प्रणाली वापरण्यामुळे उद्भवू शकणाऱ्या संभाव्य हानींची यादी तयार करा. ML जीवनचक्रादरम्यान, ओळखलेल्या समस्यांचे निराकरण किंवा निराकरण केले आहे का ते पुनरावलोकन करा.
-* **सहा मुख्य तत्त्वांसाठी लागू उद्दिष्टे**. प्रत्येक तत्त्वांमधील उद्दिष्टे पूर्ण झाली आहेत का आणि काही अंतर आहेत का याचे मूल्यांकन करा.
## जबाबदार AI सह डीबगिंग
-सॉफ्टवेअर अनुप्रयोग डीबग करण्यासारखेच, AI प्रणाली डीबग करणे ही प्रणालीतील समस्या ओळखण्याची आणि सोडवण्याची आवश्यक प्रक्रिया आहे. मॉडेल अपेक्षेप्रमाणे किंवा जबाबदारीने कार्य करत नाही यावर परिणाम करणारे अनेक घटक आहेत. बहुतेक पारंपरिक मॉडेल कार्यप्रदर्शन मेट्रिक्स मॉडेलच्या कार्यप्रदर्शनाचे प्रमाणात्मक एकत्रीकरण आहेत, जे मॉडेल जबाबदार AI तत्त्वांचे उल्लंघन कसे करते हे विश्लेषण करण्यासाठी पुरेसे नाहीत. याव्यतिरिक्त, मशीन लर्निंग मॉडेल एक ब्लॅक बॉक्स आहे ज्यामुळे त्याच्या परिणामाचा काय परिणाम होतो हे समजणे कठीण होते किंवा जेव्हा ते चूक करते तेव्हा स्पष्टीकरण प्रदान करणे कठीण होते. या अभ्यासक्रमात नंतर, आम्ही जबाबदार AI डॅशबोर्ड वापरून AI प्रणाली डीबग कशी करावी हे शिकू. डॅशबोर्ड डेटा वैज्ञानिक आणि AI विकसकांना खालील कार्ये करण्यासाठी एक व्यापक साधन प्रदान करतो:
+सॉफ्टवेअर अनुप्रयोग डीबगिंग प्रमाणेच, AI प्रणाली डीबगिंग ही प्रणालीतील त्रुटी ओळखण्याची व सोडविण्याची आवश्यक प्रक्रिया आहे. अनेक कारणे असू शकतात ज्या एक मॉडेल अपेक्षेप्रमाणे किंवा जबाबदारीपूर्वक काम करत नाही. बहुतेक पारंपारिक मॉडेल कार्यप्रदर्शन मेट्रिक्स हे मॉडेलच्या एकत्रित कार्याचे मात्रात्मक मूल्यांकन करतात, ज्यामुळे जबाबदार AI तत्त्वांचे उल्लंघन कसे होत आहे हे विश्लेषित करता येत नाही. अजूनही, मशीन लर्निंग मॉडेल हे एक ब्लॅक बॉक्स आहे ज्यामुळे त्याचा निकाल काय प्रेरित करेल किंवा चुका झाल्यास स्पष्टकरण देणे कठीण होते. या कोर्समध्ये पुढे, आपण Responsible AI डॅशबोर्ड वापरून AI प्रणाली डीबग करणे शिकू. हा डॅशबोर्ड डेटा वैज्ञानिक आणि AI डेव्हलपरसाठी संपूर्ण साधन देतो:
+
+* **त्रुटी विश्लेषण**. प्रणालीच्या निष्पक्षता किंवा विश्वासार्हतेवर परिणाम करणाऱ्या त्रुटी वितरण ओळखण्यासाठी.
+* **मॉडेल पूर्वावलोकन**. डेटा समूहांमधील कार्यक्षमतेतील असमानता शोधण्यासाठी.
+* **डेटा विश्लेषण**. डेटा वितरण समजण्यासाठी आणि संभाव्य पूर्वग्रह ओळखण्यासाठी ज्यामुळे निष्पक्षता, समावेशन व विश्वासार्हतेचे प्रश्न उद्भवू शकतात.
+* **मॉडेल समज**. मॉडेलच्या भाकितांवर प्रभाव टाकणाऱ्या घटकांचा आढावा घ्या. हे मॉडेलच्या वर्तनाचे स्पष्टीकरण देण्यासाठी महत्त्वाचे आहे, जे पारदर्शकता आणि जबाबदारीसाठी आवश्यक आहे.
+
+
+## 🚀 आव्हान
+
+हानिकारक परिणाम प्रथमच उद्भवू नयेत यासाठी, आपल्याला:
+
+- प्रणालींवर काम करणाऱ्या लोकांमध्ये वैविध्यपूर्ण पार्श्वभूमी आणि दृष्टीकोन असावेत
+- आपल्या समाजातील विविधतेचे प्रतिबिंब दाखवणाऱ्या डेटासेटमध्ये गुंतवणूक करावी
+- मशीन लर्निंगच्या संपूर्ण जीवनचक्रात संभाव्य जबाबदार AI चे शोध घेणे आणि दुरुस्ती करण्याच्या अधिक चांगल्या पद्धती विकसित कराव्यात
+
+वास्तविक जीवनातील अशा परिस्थितींचा विचार करा जिथे मॉडेलचा अविश्वासार्हपणा मॉडेल तयार करणे आणि वापरण्यात स्पष्ट आहे. आणखी काय विचारले पाहिजे?
+
+## [पश्चात्ताप व्याख्यान क्विझ](https://ff-quizzes.netlify.app/en/ml/)
+
+## पुनरावलोकन व स्वअध्ययन
+
-* **त्रुटी विश्लेषण**. मॉडेलच्या त्रुटी वितरणाची ओळख करण्यासाठी जे प्रणालीच्या न्याय्यतेवर किंवा विश्वासार्हतेवर परिणाम करू शकते.
-* **मॉड
-या कार्यशाळेचा अभ्यास करून विषय अधिक सखोल समजून घ्या:
+या धड्यात, आपण मशीन लर्निंगमधील न्याय आणि अन्याय या संकल्पनांच्या काही मूलभूत गोष्टी शिकलात.
+
+या विषयांवर अधिक खोलवर जाण्यासाठी हा कार्यशाळा पहा:
-- जबाबदार AI च्या शोधात: तत्त्वांपासून प्रत्यक्षात आणण्यापर्यंत, Besmira Nushi, Mehrnoosh Sameki आणि Amit Sharma यांच्याकडून
+- जबाबदार AI च्या शोधासाठी: Besmira Nushi, Mehrnoosh Sameki आणि Amit Sharma यांचेद्वारे तत्त्वांना व्यवहारात आणणे
-[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: जबाबदार AI तयार करण्यासाठी एक ओपन-सोर्स फ्रेमवर्क")
+[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI")
-> 🎥 वरील प्रतिमेवर क्लिक करा व्हिडिओसाठी: RAI Toolbox: जबाबदार AI तयार करण्यासाठी एक ओपन-सोर्स फ्रेमवर्क, Besmira Nushi, Mehrnoosh Sameki आणि Amit Sharma यांच्याकडून
+> 🎥 वरील प्रतिमेवर क्लिक करा व्हिडिओसाठी: Besmira Nushi, Mehrnoosh Sameki आणि Amit Sharma यांचेद्वारे RAI Toolbox: जबाबदार AI तयार करण्यासाठी एक मुक्त स्रोत फ्रेमवर्क
-तसेच वाचा:
+तसेच, वाचा:
-- Microsoft चा RAI संसाधन केंद्र: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
+- Microsoft चे 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/)
+- Microsoft चे FATE संशोधन समूह: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
-RAI Toolbox:
+RAI Toolbox:
-- [Responsible AI Toolbox GitHub repository](https://github.com/microsoft/responsible-ai-toolbox)
+- [Responsible AI Toolbox GitHub संग्रहालय](https://github.com/microsoft/responsible-ai-toolbox)
-Azure Machine Learning च्या साधनांबद्दल वाचा जे न्याय सुनिश्चित करतात:
+Azure मशीन लर्निंगच्या न्याय सुनिश्चित करण्यासाठीच्या साधनांविषयी वाचा:
-- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
+- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
## असाइनमेंट
-[RAI Toolbox एक्सप्लोर करा](assignment.md)
+[RAI Toolbox अन्वेषण करा](assignment.md)
---
-**अस्वीकरण**:
-हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील मूळ दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवणाऱ्या कोणत्याही गैरसमजांकरिता किंवा चुकीच्या अर्थ लावण्याकरिता आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
+
+**अस्वीकरण**:
+हा दस्तऐवज 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
index a32ad7300..69cffa8c8 100644
--- a/translations/mr/2-Regression/1-Tools/README.md
+++ b/translations/mr/2-Regression/1-Tools/README.md
@@ -1,120 +1,121 @@
-# Python आणि Scikit-learn वापरून रिग्रेशन मॉडेल्ससाठी सुरुवात करा
+# पुनरावृत्ती मॉडेलसाठी Python आणि Scikit-learn सह सुरुवात करा
-
+
-> स्केच नोट [Tomomi Imura](https://www.twitter.com/girlie_mac) यांनी तयार केले आहे
+> स्केच नोट [Tomomi Imura](https://www.twitter.com/girlie_mac) यांचा
-## [पूर्व-व्याख्यान प्रश्नमंजुषा](https://ff-quizzes.netlify.app/en/ml/)
+## [पूर्व-पाठ प्रश्नोत्तरी](https://ff-quizzes.netlify.app/en/ml/)
> ### [हा धडा R मध्ये उपलब्ध आहे!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
## परिचय
-या चार धड्यांमध्ये, तुम्ही रिग्रेशन मॉडेल्स कसे तयार करायचे ते शिकाल. आम्ही लवकरच याचा उपयोग कशासाठी होतो ते चर्चा करू. पण काहीही करण्यापूर्वी, प्रक्रिया सुरू करण्यासाठी योग्य साधने तुमच्याकडे आहेत याची खात्री करा!
+या चार धड्यांमध्ये, आपण पुनरावृत्ती मॉडेल्स कसे तयार करायचे हे शोधणार आहात. आपण लवकरच या मॉडेल्ससाठी काय उपयोग होतो ते चर्चा करू. पण काहीही करण्यापूर्वी, खात्री करा की आपल्या जवळ योग्य साधने आहेत ज्यामुळे प्रक्रिया सुरू करता येईल!
-या धड्यात तुम्ही शिकाल:
+या धड्यात, आपण शिकाल कसे:
-- स्थानिक मशीन लर्निंग कार्यांसाठी तुमचा संगणक कॉन्फिगर करणे.
-- Jupyter नोटबुक्ससह काम करणे.
-- Scikit-learn वापरणे, त्यात स्थापना समाविष्ट आहे.
-- एक व्यावहारिक सराव करून रेखीय रिग्रेशन एक्सप्लोर करणे.
+- आपल्या संगणकाला स्थानिक मशीन लर्निंग कार्यांसाठी सेटअप करा.
+- Jupyter नोटबुक्ससह काम करा.
+- Scikit-learn वापरा, स्थापना समाविष्ट आहे.
+- एक प्रत्यक्ष हाताळणीसह रेषीय पुनरावृत्तीचा अभ्यास करा.
## स्थापना आणि कॉन्फिगरेशन
-[](https://youtu.be/-DfeD2k2Kj0 "मशीन लर्निंगसाठी सुरुवात - मशीन लर्निंग मॉडेल्स तयार करण्यासाठी तुमची साधने सेट करा")
+[](https://youtu.be/-DfeD2k2Kj0 "ML प्रारंभिकांसाठी - तुमची साधने तयार करा")
-> 🎥 वरील प्रतिमेवर क्लिक करा, तुमचा संगणक एमएलसाठी कॉन्फिगर करण्यासाठी एक लहान व्हिडिओ पाहण्यासाठी.
+> 🎥 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) उपलब्ध आहेत.
+1. **Python स्थापित करा**. खात्री करा की [Python](https://www.python.org/downloads/) आपल्याला संगणकावर स्थापित आहे. आपण Python अनेक डेटा सायन्स आणि मशीन लर्निंग कार्यांसाठी वापरणार आहात. अनेक संगणकांमध्ये Python आधीपासूनच स्थापित असलेला असतो. काही वापरकर्त्यांसाठी सेटअप सुलभ करण्यासाठी उपयोगी [Python कोडिंग पॅक्स](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) देखील उपलब्ध आहेत.
- Python चा काही उपयोग, तथापि, सॉफ्टवेअरच्या एका आवृत्तीची आवश्यकता असतो, तर इतरांना वेगळ्या आवृत्तीची आवश्यकता असते. यासाठी, [virtual environment](https://docs.python.org/3/library/venv.html) मध्ये काम करणे उपयुक्त ठरते.
+ काही Python चा वापर एका आवृत्तीमध्ये असतो, तर काही दुसऱ्या आवृत्तीची गरज असते. म्हणूनच, [वर्च्युअल एन्व्हायर्नमेंट](https://docs.python.org/3/library/venv.html) मध्ये काम करणे उपयोगी ठरते.
-2. **Visual Studio Code स्थापित करा**. खात्री करा की Visual Studio Code तुमच्या संगणकावर स्थापित आहे. [Visual Studio Code स्थापित करण्यासाठी](https://code.visualstudio.com/) या सूचनांचे अनुसरण करा. तुम्ही या कोर्समध्ये Visual Studio Code मध्ये Python वापरणार आहात, त्यामुळे Python विकासासाठी [Visual Studio Code कॉन्फिगर कसे करावे](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) याबद्दल माहिती मिळवा.
+2. **Visual Studio Code स्थापित करा**. खात्री करा की आपल्याकडे Visual Studio Code स्थापित आहे. मूलभूत स्थापना करण्यासाठी [Visual Studio Code कसे स्थापित करायचे](https://code.visualstudio.com/) याचे निर्देश पाळा. आपण या कोर्समध्ये Visual Studio Code मध्ये Python वापरणार आहात, त्यामुळे Python विकासासाठी Visual Studio Code कसे कॉन्फिगर करायचे याचा आढावा घेणे अनिवार्य आहे. [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) संग्रहातून काम करून.
+ > 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 वापरण्यासाठी व्हिडिओ पाहण्यासाठी.
+ > 🎥 VS Code मध्ये Python कसा वापरायचा याबाबत व्हिडिओ पाहण्यासाठी प्रतिमेवर क्लिक करा.
-3. **Scikit-learn स्थापित करा**, [या सूचनांचे अनुसरण करून](https://scikit-learn.org/stable/install.html). तुम्हाला Python 3 वापरण्याची खात्री करावी लागेल, त्यामुळे virtual environment वापरण्याची शिफारस केली जाते. लक्षात ठेवा, जर तुम्ही M1 Mac वर हे लायब्ररी स्थापित करत असाल, तर वरील लिंक केलेल्या पृष्ठावर विशेष सूचना आहेत.
+3. **Scikit-learn स्थापित करा**, [या सूचनांचे](https://scikit-learn.org/stable/install.html) पालन करून. आपण Python 3 वापरत असल्याची खात्री करावी लागते, म्हणून वर्च्युअल एन्व्हायर्नमेंट वापरण्याचा सल्ला दिला जातो. लक्षात घ्या की, आपल्याला हे M1 Mac वर स्थापित करायचे असल्यास, वर दिलेल्या लिंकवर खास सूचना उपलब्ध आहेत.
-4. **Jupyter Notebook स्थापित करा**. तुम्हाला [Jupyter package](https://pypi.org/project/jupyter/) स्थापित करावे लागेल.
+1. **Jupyter Notebook स्थापित करा**. आपण [Jupyter पॅकेज](https://pypi.org/project/jupyter/) स्थापित करणे आवश्यक आहे.
-## तुमचे एमएल लेखन वातावरण
+## आपले ML लेखन वातावरण
-तुम्ही **notebooks** वापरून तुमचा Python कोड विकसित कराल आणि मशीन लर्निंग मॉडेल्स तयार कराल. डेटा सायंटिस्ट्ससाठी ही फाइल प्रकार सामान्य साधन आहे आणि त्यांना त्यांच्या विस्तार `.ipynb` द्वारे ओळखले जाऊ शकते.
+आपण Python कोड विकसित करण्यासाठी आणि मशीन लर्निंग मॉडेल्स तयार करण्यासाठी **नोटबुक्स** वापरणार आहात. अशा प्रकारचे फायली डेटा सायंटिस्टसाठी सामान्य साधन असून त्यांचा प्रत्यय `.ipynb` या प्रत्ययाने ओळखला जातो.
-नोटबुक्स एक परस्परसंवादी वातावरण आहे जे विकसकाला कोड लिहिण्यास आणि कोडच्या आसपास टिपा आणि दस्तऐवज लिहिण्यास परवानगी देते, जे प्रायोगिक किंवा संशोधन-आधारित प्रकल्पांसाठी खूप उपयुक्त आहे.
+नोटबुक्स हे एक परस्परसंवादी वातावरण आहे जे विकासकाला कोड करण्यास आणि कोडबाबत नोट्स व दस्तऐवज लिहिण्यास अनुमती देते, जे अनुभवात्मक किंवा संशोधन-उन्मुख प्रकल्पांसाठी फारच उपयुक्त आहे.
-[](https://youtu.be/7E-jC8FLA2E "मशीन लर्निंगसाठी सुरुवात - रिग्रेशन मॉडेल्स तयार करण्यासाठी Jupyter Notebooks सेट करा")
+[](https://youtu.be/7E-jC8FLA2E "ML प्रारंभिकांसाठी - पुनरावृत्ती मॉडेल तयार करण्यासाठी Jupyter नोटबुक सेट करा")
-> 🎥 वरील प्रतिमेवर क्लिक करा, या सरावामध्ये काम करण्यासाठी एक लहान व्हिडिओ पाहण्यासाठी.
+> 🎥 या व्यायामाद्वारे कार्यरत व्हिडिओ पाहण्यासाठी वरील प्रतिमेवर क्लिक करा.
-### सराव - नोटबुकसह काम करा
+### व्यायाम - नोटबुकसोबत काम करा
-या फोल्डरमध्ये, तुम्हाला _notebook.ipynb_ नावाची फाइल सापडेल.
+या फोल्डरमध्ये, आपण _notebook.ipynb_ फाइल पाहू शकता.
-1. _notebook.ipynb_ Visual Studio Code मध्ये उघडा.
+1. Visual Studio Code मध्ये _notebook.ipynb_ उघडा.
- Jupyter सर्व्हर Python 3+ सह सुरू होईल. तुम्हाला नोटबुकच्या भागांमध्ये `run` करता येणारे कोडचे तुकडे सापडतील. तुम्ही प्ले बटणासारखे दिसणारे चिन्ह निवडून कोड ब्लॉक चालवू शकता.
+ Python 3+ सह Jupyter सर्व्हर सुरू होईल. नोटबुकमध्ये काही ठिकाणी कोड ब्लॉक्स `run` करता येतात. एखादा कोड ब्लॉक चालवायला, प्ले बटणासारखा असलेला आयकॉन निवडा.
-2. `md` चिन्ह निवडा आणि थोडेसे markdown आणि खालील मजकूर जोडा **# Welcome to your notebook**.
+1. `md` आयकॉन निवडा आणि थोडा Markdown आणि पुढील मजकूर **# Welcome to your notebook** जोडा.
- नंतर, काही Python कोड जोडा.
+ नंतर काही Python कोड जोडा.
-3. कोड ब्लॉकमध्ये **print('hello notebook')** टाइप करा.
-4. कोड चालवण्यासाठी बाण निवडा.
+1. कोड ब्लॉकमध्ये **print('hello notebook')** टाइप करा.
+1. कोड चालविण्यासाठी बाण आयकॉन निवडा.
- तुम्हाला मुद्रित विधान दिसले पाहिजे:
+ तुम्हाला मुद्रित विधान दिसेल:
```output
hello notebook
```
-
+
-तुम्ही तुमच्या कोडसह टिप्पण्या जोडून नोटबुक स्वतः दस्तऐवजीकरण करू शकता.
+तुम्ही तुमचा कोड टिप्पणींसह एका नोटबुकमध्ये दस्तऐवजीकरणासाठी मिसळू शकता.
-✅ एका मिनिटासाठी विचार करा की वेब विकसकाचे कार्य वातावरण डेटा सायंटिस्टच्या कार्य वातावरणापेक्षा किती वेगळे आहे.
+✅ एक मिनिट थांबा आणि विचार करा की वेब विकसकाचे कामाचे वातावरण आणि डेटा सायंटिस्टचे कामाचे वातावरण किती वेगळे आहे.
-## Scikit-learn सह सुरुवात
+## Scikit-learn सह सुरू करा
-आता Python तुमच्या स्थानिक वातावरणात सेट केले आहे आणि तुम्ही Jupyter नोटबुक्समध्ये आरामदायक आहात, चला Scikit-learn मध्ये तितकेच आरामदायक होऊया (`sci` म्हणजे `science` असे उच्चारले जाते). Scikit-learn तुम्हाला एमएल कार्ये करण्यास मदत करण्यासाठी [व्यापक API](https://scikit-learn.org/stable/modules/classes.html#api-ref) प्रदान करते.
+आता Python आपल्या स्थानिक वातावरणामध्ये सेट झाला आहे आणि आपण Jupyter नोटबुक्ससह परिचित आहात, चला Scikit-learn (हे `sci` म्हणजे `science` सारखे उच्चारले जाते) ज्यासह समान परिचित होऊया. Scikit-learn तुम्हाला ML कार्य करण्यासाठी मोठ्या प्रमाणात API देतो.
-त्यांच्या [वेबसाइट](https://scikit-learn.org/stable/getting_started.html) नुसार, "Scikit-learn एक ओपन सोर्स मशीन लर्निंग लायब्ररी आहे जी supervised आणि unsupervised learning ला समर्थन देते. हे मॉडेल फिटिंग, डेटा preprocessing, मॉडेल निवड आणि मूल्यांकन, आणि इतर अनेक उपयुक्तता साधनांसाठी विविध साधने प्रदान करते."
+त्यांच्या [वेबसाईट](https://scikit-learn.org/stable/getting_started.html) नुसार, "Scikit-learn हे एक मुक्त स्रोत मशीन लर्निंग लायब्ररी आहे जे सुपरवाइज्ड आणि अनसुपरवाइज्ड लर्निंग समर्थित करते. हे मॉडेल फिटिंग, डेटा पूर्वप्रक्रिया, मॉडेल निवड आणि मूल्यांकन यासाठी विविध साधने देते."
-या कोर्समध्ये, तुम्ही Scikit-learn आणि इतर साधने वापरून मशीन लर्निंग मॉडेल्स तयार कराल जे आम्ही 'पारंपरिक मशीन लर्निंग' कार्ये म्हणतो. आम्ही neural networks आणि deep learning टाळले आहे, कारण ते आमच्या आगामी 'AI for Beginners' अभ्यासक्रमात चांगले कव्हर केले जातील.
+या कोर्समध्ये, आपण Scikit-learn आणि इतर साधने वापरून पारंपरिक मशीन लर्निंग कार्ये पार पाडणारे मशीन लर्निंग मॉडेल्स तयार करणार आहोत. आम्ही नेहमीच्या न्यूरल नेटवर्क्स आणि डीप लर्निंग टाळले आहे, ते आमच्या येत्या 'AI for Beginners' अभ्यासक्रमात चांगल्या प्रकारे समजावले जातील.
-Scikit-learn मॉडेल्स तयार करणे आणि त्यांचे मूल्यांकन करणे सोपे करते. हे प्रामुख्याने संख्यात्मक डेटा वापरण्यावर लक्ष केंद्रित करते आणि शिकण्याच्या साधनांप्रमाणे वापरण्यासाठी अनेक तयार केलेले डेटासेट्स समाविष्ट करते. विद्यार्थ्यांना प्रयत्न करण्यासाठी पूर्व-निर्मित मॉडेल्स देखील समाविष्ट आहेत. चला Scikit-learn सह काही मूलभूत डेटासह पूर्व-पॅकेज केलेला डेटा लोड करण्याची प्रक्रिया आणि पहिला एमएल मॉडेल वापरणे एक्सप्लोर करूया.
+Scikit-learn मॉडेल तयार करणे आणि त्यांचे मूल्यांकन करणे सोपे करते. हा मुख्यतः संख्यात्मक डेटासाठी लक्ष केंद्रित करतो आणि शिकण्यासाठी अनेक तयार केलेले डेटासेट्स समाविष्ट करतो. यात पूर्व-निर्मित मॉडेल्सही आहेत, ज्याचा विद्यार्थी प्रयत्न करू शकतात. चला प्रीपॅकज्ड डेटा लोड करणे आणि स्थापत्याकार वापरून प्रथम ML मॉडेल तयार करण्याची प्रक्रिया पाहूया.
-## सराव - तुमचा पहिला Scikit-learn नोटबुक
+## व्यायाम - तुमचा पहिला Scikit-learn नोटबुक
-> हा ट्यूटोरियल Scikit-learn च्या वेबसाइटवरील [रेखीय रिग्रेशन उदाहरण](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) द्वारे प्रेरित आहे.
+> हा ट्युटोरियल Scikit-learn च्या [रेषीय पुनरावृत्ती उदाहरणावर](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 मध्ये तुमचा पहिला रेखीय रिग्रेशन प्रकल्प")
-> 🎥 वरील प्रतिमेवर क्लिक करा, या सरावामध्ये काम करण्यासाठी एक लहान व्हिडिओ पाहण्यासाठी.
+[](https://youtu.be/2xkXL5EUpS0 "ML प्रारंभिकांसाठी - तुमचा पहिला रेषीय पुनरावृत्ती प्रकल्प")
-_नोटबुक.ipynb_ फाइलमधील सर्व सेल्स 'trash can' चिन्हावर क्लिक करून साफ करा.
+> 🎥 या व्यायामामुळे कार्यरत व्हिडिओ पाहण्यासाठी प्रतिमेवर क्लिक करा.
-या विभागात, तुम्ही Scikit-learn मध्ये शिकण्यासाठी तयार केलेल्या मधुमेहाबद्दलच्या लहान डेटासेटसह काम कराल. कल्पना करा की तुम्हाला मधुमेहाच्या रुग्णांसाठी उपचाराची चाचणी करायची आहे. मशीन लर्निंग मॉडेल्स तुम्हाला व्हेरिएबल्सच्या संयोजनांवर आधारित कोणते रुग्ण उपचाराला चांगला प्रतिसाद देतील हे ठरविण्यात मदत करू शकतात. अगदी मूलभूत रिग्रेशन मॉडेल, जेव्हा व्हिज्युअलाइज केले जाते, तेव्हा व्हेरिएबल्सबद्दल माहिती दर्शवू शकते जी तुम्हाला तुमच्या सैद्धांतिक क्लिनिकल चाचण्या आयोजित करण्यात मदत करू शकते.
+_notebook.ipynb_ फायलीमध्ये, या धड्याशी संलग्न असलेल्या सर्व सेल काढा 'trash can' आयकॉनवर क्लिक करून.
-✅ रिग्रेशन पद्धतींच्या अनेक प्रकार आहेत, आणि तुम्ही कोणती निवडता ते तुम्हाला शोधायचे उत्तर कोणते आहे यावर अवलंबून असते. जर तुम्हाला दिलेल्या वयाच्या व्यक्तीसाठी संभाव्य उंचीचा अंदाज घ्यायचा असेल, तर तुम्ही रेखीय रिग्रेशन वापराल, कारण तुम्ही **संख्यात्मक मूल्य** शोधत आहात. जर तुम्हाला एखाद्या प्रकारच्या खाद्यपदार्थाला शाकाहारी मानावे की नाही हे शोधायचे असेल, तर तुम्ही **श्रेणी असाइनमेंट** शोधत आहात, त्यामुळे तुम्ही लॉजिस्टिक रिग्रेशन वापराल. तुम्ही नंतर लॉजिस्टिक रिग्रेशनबद्दल अधिक शिकाल. डेटामधून काही प्रश्न विचारण्याचा विचार करा आणि या पद्धतींपैकी कोणती अधिक योग्य असेल.
+या विभागात, आपण Scikit-learn मध्ये शिकण्यासाठी तयार केलेल्या मध्यम आकाराच्या डायबिटीज डेटासेटसह काम करणार आहात. समजा तुम्हाला डायबिटीक रुग्णांसाठी उपचाराची चाचणी करायची आहे. मशीन लर्निंग मॉडेल तुम्हाला ठरवण्यास मदत करू शकतात की कोणते रुग्ण उपचारावर चांगले प्रतिसाद देतील, भिन्न चलांच्या संयोजनावरून. अगदी प्राथमिक पुनरावृत्ती मॉडेल, जे दृश्यात आणले आहे, ते चलांबद्दल अशी माहिती दाखवू शकते जी तुमच्या तात्विक नैदानिक चाचण्यांचे आयोजन करण्यास मदत करू शकते.
+
+✅ पुनरावृत्तीच्या अनेक प्रकार आहेत, आणि आपल्याला कोणता वापरायचा हे तुम्ही शोधत असलेल्या उत्तरावर अवलंबून आहे. जर तुम्हाला एखाद्या वयाच्या व्यक्तीची संभाव्य उंची भविष्यवाणी करायची असेल, तर तुम्ही रेषीय पुनरावृत्ती वापराल कारण तुम्हाला **संख्यात्मक मूल्य** हवे आहे. जर तुम्हाला शोधायचे असेल की कुठल्या प्रकारच्या खाद्यपदार्थाचे वर्गीकरण व्हेगन म्हणून करायचे आहे का नाही, तर तुम्हाला **श्रेणी-नियुक्ती** पाहिजे असेल, म्हणून तुम्ही लॉजिस्टिक पुनरावृत्ती वापराल. लॉजिस्टिक पुनरावृत्तीबद्दल आपण पुढे शिकलो. डेटा विषयी तुम्ही विचार कराल असे काही प्रश्न आणि त्यासाठी कोणती पद्धत योग्य ठरेल हे थोडे विचार करा.
चला या कार्यावर सुरुवात करूया.
### लायब्ररी आयात करा
-या कार्यासाठी आम्ही काही लायब्ररी आयात करू:
+या कार्यासाठी आपण काही लायब्ररी आयात करू:
-- **matplotlib**. हे एक उपयुक्त [ग्राफिंग साधन](https://matplotlib.org/) आहे आणि आम्ही याचा वापर लाइन प्लॉट तयार करण्यासाठी करू.
-- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) ही Python मध्ये संख्यात्मक डेटा हाताळण्यासाठी उपयुक्त लायब्ररी आहे.
+- **matplotlib**. हे एक उपयुक्त [ग्राफिंग साधन](https://matplotlib.org/) आहे आणि आपण याचा वापर रेषा प्लॉटसाठी करू.
+- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) हा Python मध्ये संख्यात्मक डेटाचा हाताळणीसाठी उपयुक्त लायब्ररी आहे.
- **sklearn**. ही [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) लायब्ररी आहे.
-तुमच्या कार्यांसाठी मदत करण्यासाठी काही लायब्ररी आयात करा.
+तुमच्या कार्यांसाठी काही लायब्ररी आयात करा.
-1. खालील कोड टाइप करून आयात जोडा:
+1. पुढील कोड टाइप करून आयात जोडा:
```python
import matplotlib.pyplot as plt
@@ -122,26 +123,26 @@ _नोटबुक.ipynb_ फाइलमधील सर्व सेल्स
from sklearn import datasets, linear_model, model_selection
```
- वरील कोडमध्ये तुम्ही `matplotlib`, `numpy` आयात करत आहात आणि तुम्ही `sklearn` मधून `datasets`, `linear_model` आणि `model_selection` आयात करत आहात. `model_selection` डेटा प्रशिक्षण आणि चाचणी संचांमध्ये विभाजित करण्यासाठी वापरले जाते.
+ वरील कोडमध्ये आपण `matplotlib`, `numpy` आयात करत आहात आणि `sklearn` मधून `datasets`, `linear_model` आणि `model_selection` आयात करत आहात. `model_selection` डेटा प्रशिक्षण आणि चाचणी संचात विभागण्यासाठी वापरला जातो.
-### मधुमेह डेटासेट
+### डायबिटीज डेटासेट
-Scikit-learn मध्ये तयार केलेला [मधुमेह डेटासेट](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) मधुमेहाबद्दल 442 नमुन्यांचा डेटा समाविष्ट करतो, ज्यामध्ये 10 वैशिष्ट्य व्हेरिएबल्स आहेत, त्यापैकी काही:
+अंतर्भूत [diabetes dataset](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) मध्ये डायबिटीज संदर्भातील 442 नमुने आहेत, ज्यामध्ये 10 वैशिष्ट्य चल आहेत, ज्यात काही आहेत:
-- age: वय वर्षांमध्ये
-- bmi: बॉडी मास इंडेक्स
+- age: वय वर्षांत
+- bmi: शरीर द्रव्यमान निर्देशांक
- bp: सरासरी रक्तदाब
-- s1 tc: टी-सेल्स (पांढऱ्या रक्त पेशींचा एक प्रकार)
+- s1 tc: टी-सेल्स (पांढऱ्या रक्तकणांचा प्रकार)
-✅ या डेटासेटमध्ये मधुमेहाच्या संशोधनासाठी महत्त्वाचे वैशिष्ट्य व्हेरिएबल म्हणून 'sex' चा समावेश आहे. अनेक वैद्यकीय डेटासेट्समध्ये अशा प्रकारचे binary वर्गीकरण समाविष्ट असते. अशा वर्गीकरणांमुळे लोकसंख्येच्या काही भागांना उपचारांपासून वगळले जाऊ शकते याचा विचार करा.
+✅ या डेटासेटमध्ये 'sex' नावाचा एक वैशिष्ट्य चल आहे जो डायबिटीज संशोधनासाठी महत्त्वाचा आहे. अनेक वैद्यकीय डेटासेट्समध्ये अशा द्विअर्थ वर्गीकरणाचा समावेश असतो. असा विचार करा की अशा प्रकारच्या वर्गीकरणामुळे लोकसंख्येचा काही भाग उपचारापासून वगळला जाऊ शकतो.
आता X आणि y डेटा लोड करा.
-> 🎓 लक्षात ठेवा, हे supervised learning आहे, आणि आपल्याला नाव असलेला 'y' target आवश्यक आहे.
+> 🎓 लक्षात ठेवा, हे सुपरवाइज्ड लर्निंग आहे, आणि आम्हाला एका नाव असलेल्या 'y' टारगेटची गरज आहे.
-नवीन कोड सेलमध्ये, `load_diabetes()` कॉल करून मधुमेह डेटासेट लोड करा. इनपुट `return_X_y=True` संकेत देतो की `X` डेटा मॅट्रिक्स असेल, आणि `y` रिग्रेशन target असेल.
+एका नवीन कोड सेलमध्ये, `load_diabetes()` कॉल करून डायबिटीज डेटासेट लोड करा. इनपुट `return_X_y=True` सूचित करतो की `X` हा डेटाचा मॅट्रिक्स असेल आणि `y` पुर्नावृत्ती टारगेट असेल.
-1. डेटा मॅट्रिक्सचा आकार आणि त्याचा पहिला घटक दर्शविण्यासाठी काही print कमांड जोडा:
+1. काही प्रिंट कमांडसाठी डेटा मॅट्रिक्सचा आकार आणि त्याचा पहिला घटक दाखवा:
```python
X, y = datasets.load_diabetes(return_X_y=True)
@@ -149,9 +150,9 @@ Scikit-learn मध्ये तयार केलेला [मधुमेह
print(X[0])
```
- तुम्हाला प्रतिसाद म्हणून जे मिळत आहे ते tuple आहे. तुम्ही काय करत आहात ते म्हणजे tuple च्या दोन पहिल्या मूल्यांना अनुक्रमे `X` आणि `y` मध्ये असाइन करत आहात. [tuples बद्दल अधिक जाणून घ्या](https://wikipedia.org/wiki/Tuple).
+ तुमची मिळालेली प्रतिक्रिया एक ट्युपल आहे. तुम्ही ट्युपलच्या पहिल्या दोन मूल्यांना अनुक्रमे `X` आणि `y` शी जोडत आहात. अधिक जाणून घेण्यासाठी [ट्युपल बद्दल](https://wikipedia.org/wiki/Tuple) पहा.
- तुम्ही पाहू शकता की या डेटामध्ये 442 आयटम आहेत जे 10 घटकांच्या अॅरेमध्ये आकारलेले आहेत:
+ तुम्हाला दिसेल की या डेटामध्ये 442 नोंदी आहेत ज्या 10 घटकांच्या अॅरेमध्ये आहेत:
```text
(442, 10)
@@ -159,39 +160,39 @@ Scikit-learn मध्ये तयार केलेला [मधुमेह
-0.04340085 -0.00259226 0.01990842 -0.01764613]
```
- ✅ डेटा आणि रिग्रेशन target यांच्यातील संबंधाचा विचार करा. रेखीय रिग्रेशन वैशिष्ट्य X आणि target व्हेरिएबल y यांच्यातील संबंधांचा अंदाज लावतो. तुम्ही मधुमेह डेटासेटसाठी [target](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) दस्तऐवजामध्ये शोधू शकता का? target दिल्याने हा डेटासेट काय दर्शवित आहे?
+ ✅ डेटा आणि पुर्नावृत्ती टारगेट यामधील संबंधावर विचार करा. रेषीय पुनरावृत्ती वैशिष्ट्य X आणि टारगेट y यामधील संबंध भाकीत करते. डेटासेटच्या कागदपत्रीत [टारगेट](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) कोणता आहे ते पाहा? हा डेटासेट कोणत्या गोष्टीचे प्रदर्शन करतो?
-2. नंतर, या डेटासेटचा एक भाग प्लॉट करण्यासाठी निवडा, डेटासेटचा तिसरा कॉलम निवडून. तुम्ही `:` ऑपरेटर वापरून सर्व रांगा निवडू शकता आणि नंतर इंडेक्स (2) वापरून तिसरा कॉलम निवडू शकता. तुम्ही `reshape(n_rows, n_columns)` वापरून डेटा 2D अॅरेमध्ये आकार बदलू शकता - प्लॉटिंगसाठी आवश्यक आहे. जर एका पॅरामीटरला -1 असेल, तर संबंधित परिमाण आपोआप गणना केली जाते.
+2. नंतर, या डेटासेटचा एक भाग निवडा ज्यासाठी प्लॉट करायचा आहे, म्हणजे डेटासेटचा 3रा स्तंभ निवडा. तुम्ही `:` ऑपरेटर वापरून सर्व पंक्ती निवडू शकता, आणि नंतर 3रा स्तंभ (इंडेक्स 2) निवडू शकता. तुम्ही `reshape(n_rows, n_columns)` वापरून डेटा 2D अॅरेमध्ये देखील आणू शकता - प्लॉटिंगसाठी आवश्यक. जर एक पॅरामीटर -1 असेल, तर संबंधित परिमाण आपोआप गणना केले जाते.
```python
X = X[:, 2]
X = X.reshape((-1,1))
```
- ✅ कोणत्याही वेळी, डेटा त्याचा आकार तपासण्यासाठी प्रिंट करा.
+ ✅ कधीही डेटा तपासण्यासाठी त्याचा आकार प्रिंट करा.
-3. आता तुमच्याकडे प्लॉट करण्यासाठी डेटा तयार आहे, तुम्ही पाहू शकता की मशीन या डेटासेटमधील संख्यांमध्ये तर्कसंगत विभाजन ठरवू शकते का. हे करण्यासाठी, तुम्हाला डेटा (X) आणि target (y) दोन्ही चाचणी आणि प्रशिक्षण संचांमध्ये विभाजित करणे आवश्यक आहे. Scikit-learn मध्ये हे करण्याचा सोपा मार्ग आहे; तुम्ही तुमचा चाचणी डेटा दिलेल्या बिंदूवर विभाजित करू शकता.
+3. आता डेटा प्लॉट करण्यास तयार असल्याने, पाहू या की मशीन या डेटासेटमधील संख्यांमध्ये तर्कशीर विभागणी ठरवू शकते का. यासाठी, तुम्हाला डेटा (X) आणि टारगेट (y) हे दोन्ही प्रशिक्षण आणि चाचणी संचात विभाजित करावे लागतील. Scikit-learn मध्ये हे करणे सोपे आहे; तुम्ही दिलेल्या बिंदूवर तुमचा चाचणी डेटा विभाजित करू शकता.
```python
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33)
```
-4. आता तुम्ही तुमचे मॉडेल प्रशिक्षण देण्यासाठी तयार आहात! रेखीय रिग्रेशन मॉडेल लोड करा आणि `model.fit()` वापरून तुमच्या X आणि y प्रशिक्षण संचांसह ते प्रशिक्षण द्या:
+4. आता तुम्ही तुमचा मॉडेल प्रशिक्षित करण्यास तयार आहात! रेषीय पुनरावृत्ती मॉडेल लोड करा आणि `model.fit()` वापरून तुमचा X आणि y प्रशिक्षण संचाने प्रशिक्षित करा:
```python
model = linear_model.LinearRegression()
model.fit(X_train, y_train)
```
- ✅ `model.fit()` ही एक फंक्शन आहे जी तुम्हाला TensorFlow सारख्या अनेक एमएल लायब्ररींमध्ये दिसेल.
+ ✅ `model.fit()` हे अनेक ML लायब्ररींमध्ये वापरले जाणारे फंक्शन आहे जसे TensorFlow मध्ये.
-5. नंतर, चाचणी डेटा वापरून अंदाज तयार करा, `predict()` फंक्शन वापरून. हे डेटा गटांमधील रेषा काढण्यासाठी वापरले जाईल.
+5. नंतर, चाचणी डेटा वापरून `predict()` फंक्शनने भाकीत तयार करा. हे मॉडेलच्या डेटागटांदरम्यान रेषा काढण्यासाठी वापरले जाईल.
```python
y_pred = model.predict(X_test)
```
-6. आता डेटा प्लॉटमध्ये दर्शविण्याची वेळ आली आहे. Matplotlib हे या कार्यासाठी खूप उपयुक्त साधन आहे. सर्व X आणि y चाचणी डेटाचा scatterplot तयार करा आणि मॉडेलच्या डेटा गटांमधील सर्वात योग्य ठिकाणी रेषा काढण्यासाठी अंदाज वापरा.
+6. आता डेटा प्लॉटमध्ये दाखवण्याची वेळ आली आहे. matplotlib हे या कार्यासाठी फारच उपयुक्त साधन आहे. सर्व X आणि y चाचणी डेटाचा स्कॅटरप्लॉट तयार करा, आणि भाकीत वापरून मॉडेलच्या डेटागटांदरम्यान योग्य ठिकाणी रेषा काढा.
```python
plt.scatter(X_test, y_test, color='black')
@@ -202,29 +203,32 @@ Scikit-learn मध्ये तयार केलेला [मधुमेह
plt.show()
```
- 
-✅ विचार करा की येथे नेमके काय चालले आहे. अनेक छोटे डेटा बिंदूंच्या माध्यमातून एक सरळ रेषा जात आहे, पण ती नेमके काय करत आहे? तुम्हाला दिसते का की तुम्ही ही रेषा वापरून नवीन, न पाहिलेला डेटा बिंदू प्लॉटच्या y अक्षाशी कसा संबंधित आहे हे अंदाज करू शकता? या मॉडेलचा व्यावहारिक उपयोग शब्दांत मांडण्याचा प्रयत्न करा.
+ 
-अभिनंदन, तुम्ही तुमचे पहिले रेषीय प्रतिगमन मॉडेल तयार केले, त्याचा वापर करून अंदाज तयार केला आणि ते प्लॉटमध्ये प्रदर्शित केले!
----
-## 🚀चॅलेंज
+ ✅ येथे काय घडत आहे याबद्दल थोडं विचार करा. एक सरळ रेषा अनेक लहान डेटा बिंदूंमधून जात आहे, पण ती नेमकी काय करत आहे? तुम्हाला दिसतंय का की तुम्हाला या रेषेचा वापर करून नवीन, अद्याप न पाहिलेल्या डेटा पॉइंटला प्लॉटच्या y अक्षाच्या संदर्भात कुठे बसवायचं हे अंदाज लावता येईल? या मॉडेलच्या व्यावहारिक वापराबद्दल शब्दांमध्ये मांडण्याचा प्रयत्न करा.
-या डेटासेटमधून वेगळा व्हेरिएबल प्लॉट करा. सूचना: ही ओळ संपादित करा: `X = X[:,2]`. या डेटासेटच्या लक्ष्यानुसार, तुम्ही मधुमेह या आजाराच्या प्रगतीबद्दल काय शोधू शकता?
+अभिनंदन, तुम्ही तुमचा पहिला रेखीय प्रतिगमन मॉडेल तयार केला, त्याच्याशी भविष्यकाळी अंदाज लावला आणि तो प्लॉटमध्ये प्रदर्शित केला!
+
+---
+## 🚀आव्हान
-## [पाठानंतरचा क्विझ](https://ff-quizzes.netlify.app/en/ml/)
+या डेटासेटमधल्या वेगळ्या चलाचा प्लॉट करा. इशारा: हा ओळ संपादित करा: `X = X[:,2]`. या डेटासेटच्या लक्ष्याला पाहता, तुम्हाला मधुमेह या रोगाच्या प्रगतीबद्दल काय शोधायला मिळतं?
+## [व्याख्यानानंतरचे प्रश्नसंच](https://ff-quizzes.netlify.app/en/ml/)
-## पुनरावलोकन आणि स्व-अभ्यास
+## पुनरावलोकन आणि स्वअध्ययन
-या ट्युटोरियलमध्ये, तुम्ही साध्या रेषीय प्रतिगमनासोबत काम केले, न की एकच व्हेरिएबल असलेले किंवा अनेक व्हेरिएबल्स असलेले प्रतिगमन. या पद्धतींमधील फरकांबद्दल थोडे वाचा किंवा [या व्हिडिओ](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) कडे लक्ष द्या.
+या शिक्षणात, तुम्ही सोपा रेखीय प्रतिगमन वापरला आहे, एकक किंवा बहुविध रेखीय प्रतिगमन नव्हे. या पद्धतींच्या फरकांबद्दल थोडे वाचा, किंवा [हा व्हिडिओ](https://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) घ्या.
+प्रतिगमन या संकल्पनेबद्दल अधिक माहिती वाचा आणि कोणत्या प्रकारच्या प्रश्नांना या तंत्राने उत्तर दिलं जाऊ शकतं हे विचार करा. तुमचं ज्ञान खोल करण्यासाठी हा [ट्युटोरियल](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
+
+**अस्वीकरण**:
+हा दस्तऐवज 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/README.md b/translations/mr/2-Regression/2-Data/README.md
index d14434224..eb2b245b1 100644
--- a/translations/mr/2-Regression/2-Data/README.md
+++ b/translations/mr/2-Regression/2-Data/README.md
@@ -1,62 +1,62 @@
-# Scikit-learn वापरून एक रिग्रेशन मॉडेल तयार करा: डेटा तयार करा आणि व्हिज्युअलाइझ करा
+# Scikit-learn वापरून एक रिग्रेशन मॉडेल तयार करा: डेटा तयार करा आणि दृश्य रूपात सादर करा
-
+
-इन्फोग्राफिक: [दसानी मदीपल्ली](https://twitter.com/dasani_decoded)
+इन्फोग्राफिक [दसानी मादीपल्ली](https://twitter.com/dasani_decoded) यांच्याकडून
## [पूर्व-व्याख्यान प्रश्नमंजुषा](https://ff-quizzes.netlify.app/en/ml/)
-> ### [हे धडा R मध्ये उपलब्ध आहे!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
+> ### [हा धडा R मध्ये उपलब्ध आहे!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
-## परिचय
+## प्रस्तावना
-आता तुम्ही Scikit-learn चा वापर करून मशीन लर्निंग मॉडेल तयार करण्यासाठी आवश्यक असलेल्या साधनांसह तयार आहात, त्यामुळे तुम्ही तुमच्या डेटावर प्रश्न विचारायला सुरुवात करू शकता. डेटा हाताळताना आणि ML सोल्यूशन्स लागू करताना, योग्य प्रश्न विचारणे खूप महत्त्वाचे आहे, जेणेकरून तुमच्या डेटासेटची क्षमता योग्य प्रकारे उलगडता येईल.
+आता तुम्ही Scikit-learn सह मशीन लर्निंग मॉडेल बांधणीसाठी आवश्यक साधने सेटअप केलीत, त्यामुळे आता तुम्हाला तुमच्या डेटावर प्रश्न विचारण्यास तयार आहात. डेटा वापरताना आणि ML उपाय लागू करताना, योग्य प्रश्न कसे विचारायचे हे समजून घेणे फार आवश्यक आहे जेणेकरून तुमच्या डेटासेटच्या क्षमता योग्यरित्या उकलता येतील.
-या धड्यात, तुम्ही शिकाल:
+या धड्यामध्ये तुम्ही शिकाल:
-- मॉडेल तयार करण्यासाठी तुमचा डेटा कसा तयार करायचा.
-- डेटा व्हिज्युअलायझेशनसाठी Matplotlib कसा वापरायचा.
+- मॉडेल-बांधणीसाठी तुमचा डेटा कसा तयार करायचा.
+- डेटा दृश्य रूपात सादर करण्यासाठी Matplotlib कसा वापरायचा.
+- अधिक अभिव्यक्तीपूर्ण डेटा दृश्यासाठी Seaborn वापरण्यासाठी कसे.
## तुमच्या डेटावर योग्य प्रश्न विचारणे
-तुम्हाला उत्तर हवे असलेला प्रश्न ठरवतो की तुम्ही कोणत्या प्रकारच्या ML अल्गोरिदमचा वापर कराल. आणि तुम्हाला मिळणाऱ्या उत्तराची गुणवत्ता तुमच्या डेटाच्या स्वरूपावर खूप अवलंबून असते.
+जे प्रश्न तुम्हाला उत्तर हवे आहे ते ठरवेल तुम्ही कोणत्या प्रकारचे ML अल्गोरिदम वापराल. आणि मिळालेल्या उत्तराची गुणवत्ता तुमच्या डेटाच्या स्वरूपावर अवलंबून असेल.
-या धड्यासाठी दिलेल्या [डेटा](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) वर एक नजर टाका. तुम्ही हा .csv फाइल VS Code मध्ये उघडू शकता. पटकन पाहिल्यास लक्षात येते की काही जागा रिकाम्या आहेत आणि स्ट्रिंग्स व संख्यात्मक डेटाचा एकत्रित समावेश आहे. 'Package' नावाचा एक विचित्र कॉलम आहे, जिथे डेटा 'sacks', 'bins' आणि इतर मूल्यांचा मिश्रण आहे. खरं तर, हा डेटा थोडासा गोंधळलेला आहे.
+या धड्यासाठी दिलेला [डेटा](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 - डेटासेट कसा विश्लेषण आणि स्वच्छ करायचा")
+[](https://youtu.be/5qGjczWTrDQ "ML for beginners - How to Analyze and Clean a Dataset")
-> 🎥 वरील प्रतिमेवर क्लिक करा आणि या धड्यासाठी डेटा तयार करण्याची प्रक्रिया पाहा.
+> 🎥 या चित्रावर क्लिक करून या धड्यासाठी डेटा तयार करण्याचे एक लहान व्हिडिओ पाहा.
-खरं तर, पूर्णपणे तयार डेटासेट मिळणे, जे ML मॉडेल तयार करण्यासाठी तत्काळ वापरता येईल, हे फारसे सामान्य नाही. या धड्यात, तुम्ही स्टँडर्ड Python लायब्ररींचा वापर करून कच्चा डेटा कसा तयार करायचा ते शिकाल. तुम्ही डेटा व्हिज्युअलायझेशनसाठी विविध तंत्रे देखील शिकाल.
+प्रत्यक्षात, पूर्णपणे वापरण्यास तयार असा डेटा सेट देणे फारसा सामान्य नाही. या धड्यात, तुम्ही पारंपरिक 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 द्वारे वितरित केला जातो.
+या फोल्डरमध्ये 'data' रूट फोल्डरमध्ये [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) नावाची .csv फाइल आहे ज्यात शहरांनुसार गटबद्ध केलेल्या पंपकिन मार्केटचा 1757 ओळींचा डेटा आहे. हा डेटा संयुक्त राज्य कृषी विभागाद्वारे वितरित [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) मधून काढलेला कच्चा डेटा आहे.
### डेटा तयार करणे
-हा डेटा सार्वजनिक डोमेनमध्ये आहे. तो USDA वेबसाइटवरून वेगवेगळ्या शहरांनुसार अनेक स्वतंत्र फाइल्समध्ये डाउनलोड केला जाऊ शकतो. खूप जास्त स्वतंत्र फाइल्स टाळण्यासाठी, आम्ही सर्व शहरांचा डेटा एका स्प्रेडशीटमध्ये एकत्र केला आहे, त्यामुळे आम्ही आधीच डेटा थोडासा _तयार_ केला आहे. आता, या डेटावर बारकाईने नजर टाकूया.
+हा डेटा सार्वजनिक क्षेत्रातील आहे. तो USDA वेबसाईटवरून शहरानिहाय अनेक वेगळ्या फाइल्समध्ये डाउनलोड करता येऊ शकतो. जास्त फाइल टाळण्यासाठी, आम्ही सर्व शहरांचे डेटा एका स्प्रेडशीटमध्ये एकत्र केले आहेत, त्यामुळे डेटा थोडा तयार केलेला आहे. आता, डेटा आणखी जवळून पाहूया.
-### भोपळ्यांचा डेटा - प्राथमिक निरीक्षणे
+### पंपकिन डेटाबाबत प्राथमिक निष्कर्ष
-या डेटाबद्दल तुम्हाला काय जाणवते? तुम्ही आधीच पाहिले आहे की येथे स्ट्रिंग्स, संख्या, रिकाम्या जागा आणि विचित्र मूल्यांचा एकत्रित समावेश आहे, ज्याचा अर्थ लावणे आवश्यक आहे.
+या डेटाबद्दल तुम्हाला काय लक्षात येते? तुम्हाला आधीच दिसले की यात स्ट्रिंग्ज, संख्या, रिकाम्या जागा आणि विचित्र मूल्यांचा संगम आहे ज्यांना तुम्हाला अर्थ लावावा लागेल.
-Regression तंत्राचा वापर करून तुम्ही या डेटावर कोणता प्रश्न विचारू शकता? "एखाद्या महिन्यात विक्रीसाठी असलेल्या भोपळ्याची किंमत अंदाजे किती असेल?" हा प्रश्न विचारता येईल. पुन्हा डेटाकडे पाहिल्यास, तुम्हाला आवश्यक टास्कसाठी डेटा संरचना तयार करण्यासाठी काही बदल करावे लागतील.
+या डेटावर तुम्ही रिग्रेशन तंत्र वापरून कोणता प्रश्न विचारू शकता? "ठराविक महिन्यात विक्रीसाठी पंपकिनचा किंमत भाकीत करा" हा प्रश्न कसा राहील? पुन्हा डेटा पाहताना, या कामासाठी आवश्यक डेटा स्ट्रक्चर तयार करण्यासाठी काही बदल करावे लागतील.
+## सराव - पंपकिन डेटा विश्लेषण करा
-## व्यायाम - भोपळ्यांचा डेटा विश्लेषण करा
+चला [Pandas](https://pandas.pydata.org/) वापरूया, (नाम `Python Data Analysis` प्रतीक) जो डेटा तयार करण्यासाठी उपयुक्त साधन आहे, आणि या पंपकिन डेटाचा विश्लेषण आणि तयारी करूया.
-आता [Pandas](https://pandas.pydata.org/) वापरूया, (याचा अर्थ `Python Data Analysis`) जे डेटा आकार देण्यासाठी खूप उपयुक्त साधन आहे, भोपळ्यांचा डेटा विश्लेषण आणि तयार करण्यासाठी.
+### प्रथम, हरवलेले तारखे तपासा
-### प्रथम, हरवलेल्या तारखा तपासा
+तुम्हाला प्रथम हरवलेल्या तारखा तपासण्याने सुरुवात करायची आहे:
-तुम्हाला प्रथम हरवलेल्या तारखांसाठी तपासणी करावी लागेल:
+1. तारखा महिन्याच्या स्वरूपात रूपांतरित करा (ही तारीखा US स्वरूपात आहेत, म्हणजे `MM/DD/YYYY`).
+2. महिन्याला नवीन स्तंभात काढा.
-1. तारखांना महिन्याच्या स्वरूपात रूपांतरित करा (या US तारखा आहेत, त्यामुळे स्वरूप `MM/DD/YYYY` आहे).
-2. नवीन कॉलममध्ये महिना काढा.
+_notebook.ipynb_ फाइल Visual Studio Code मध्ये उघडा आणि नवीन Pandas डेटा फ्रेममध्ये स्प्रेडशीट आयात करा.
-_नोटबुक.ipynb_ फाइल Visual Studio Code मध्ये उघडा आणि स्प्रेडशीट नवीन Pandas dataframe मध्ये आयात करा.
-
-1. `head()` फंक्शन वापरून पहिल्या पाच ओळी पहा.
+1. `head()` फंक्शन वापरून सुरुवातीच्या पाच ओळी पहा.
```python
import pandas as pd
@@ -64,30 +64,30 @@ _नोटबुक.ipynb_ फाइल Visual Studio Code मध्ये उ
pumpkins.head()
```
- ✅ शेवटच्या पाच ओळी पाहण्यासाठी तुम्ही कोणते फंक्शन वापराल?
+ ✅ शेवटच्या पाच ओळी पाहण्यासाठी कोणता फंक्शन वापराल?
-1. सध्याच्या dataframe मध्ये हरवलेला डेटा आहे का ते तपासा:
+1. सध्या डेटाफ्रेममध्ये हरवलेला डेटा आहे का ते तपासा:
```python
pumpkins.isnull().sum()
```
- हरवलेला डेटा आहे, परंतु कदाचित तो सध्याच्या टास्कसाठी महत्त्वाचा नसेल.
+ हरवलेला डेटा आहे, पण कदाचित हा कार्यासाठी असा वाईट परिणाम होणार नाही.
-1. तुमचा dataframe अधिक सोयीस्कर बनवण्यासाठी, तुम्हाला आवश्यक असलेल्या कॉलम्स निवडा, `loc` फंक्शन वापरून, जे मूळ dataframe मधून ओळींचा गट (पहिला पॅरामीटर म्हणून पास केलेला) आणि कॉलम्स (दुसरा पॅरामीटर म्हणून पास केलेला) काढते. खालील प्रकरणात `:` चा अर्थ "सर्व ओळी" असा आहे.
+1. तुमचा डेटाफ्रेम सोपा करण्यासाठी, तुम्हाला आवश्यक स्तंभ निवडा, `loc` फंक्शन वापरून जो मूळ डेटा फ्रेममधून रो (पहिल्या पॅरामीटर) आणि स्तंभ (दुसऱ्या पॅरामीटर) निवडतो. खालील `:` म्हणजे "सर्व रो".
```python
columns_to_select = ['Package', 'Low Price', 'High Price', 'Date']
pumpkins = pumpkins.loc[:, columns_to_select]
```
-### दुसरे, भोपळ्याची सरासरी किंमत ठरवा
+### दुसरे, पंपकिनची सरासरी किमत ठरवा
-एखाद्या महिन्यात भोपळ्याची सरासरी किंमत कशी ठरवाल याचा विचार करा. या टास्कसाठी तुम्ही कोणते कॉलम निवडाल? हिंट: तुम्हाला 3 कॉलम्सची गरज आहे.
+एका निश्चित महिन्यातील पंपकिनची सरासरी किंमत कशी ठरवाल? या कामासाठी कोणती स्तंभ काढाल? संकेत: तुम्हाला 3 स्तंभांची गरज आहे.
-उत्तरे: `Low Price` आणि `High Price` कॉलम्सची सरासरी काढा आणि नवीन Price कॉलममध्ये भरा, तसेच Date कॉलमला फक्त महिना दाखवण्यासाठी रूपांतरित करा. वरच्या तपासणीनुसार, तारखा किंवा किंमतींसाठी हरवलेला डेटा नाही.
+उत्तर: `Low Price` आणि `High Price` स्तंभांची सरासरी काढून नवीन `Price` स्तंभ भरा, आणि `Date` स्तंभ फक्त महिन्यासाठी रूपांतरित करा. वर दिलेल्या तपासणीनुसार, तारीख किंवा किमतीसाठी हरवलेला डेटा नाही.
-1. सरासरी काढण्यासाठी, खालील कोड जोडा:
+1. सरासरी काढण्यासाठी पुढील कोड जोडा:
```python
price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2
@@ -96,37 +96,37 @@ _नोटबुक.ipynb_ फाइल Visual Studio Code मध्ये उ
```
- ✅ तुम्हाला हवे असल्यास, `print(month)` वापरून कोणताही डेटा तपासा.
+ ✅ `print(month)` वापरून तुम्हाला पाहिजे ते काहीही तपासण्यासाठी छापू शकता.
-2. आता, तुमचा रूपांतरित डेटा नवीन Pandas dataframe मध्ये कॉपी करा:
+2. आता, तुमचा रूपांतरित डेटा एका नवीन Pandas डेटा फ्रेममध्ये कॉपी करा:
```python
new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price})
```
- तुमचा dataframe प्रिंट केल्यास, तुम्हाला एक स्वच्छ, व्यवस्थित डेटासेट दिसेल, ज्यावर तुम्ही तुमचे नवीन रिग्रेशन मॉडेल तयार करू शकता.
+ तुमचा डेटाफ्रेम छापल्यावर तुम्हाला एक स्वच्छ, नीटनेटका डेटासेट दिसेल ज्यावर तुम्ही तुमचा रिग्रेशन मॉडेल तयार करू शकता.
-### पण थांबा! येथे काहीतरी विचित्र आहे
+### पण थांबा! इथे काहीतरी विचित्र आहे
-जर तुम्ही `Package` कॉलम पाहिला, तर भोपळे अनेक वेगवेगळ्या स्वरूपात विकले जातात. काही '1 1/9 bushel' मोजमापात विकले जातात, काही '1/2 bushel' मोजमापात, काही प्रति भोपळा, काही प्रति पाउंड, आणि काही मोठ्या बॉक्समध्ये विविध रुंदींसह विकले जातात.
+`Package` स्तंभ पहा, पंपकिन अनेक वेगवेगळ्या प्रकारांनी विकले जातात. काही '1 1/9 bushel' मोजमापात विकले जातात, काही '1/2 bushel' मध्ये, काही पंपकिनप्रमाणे, काही पाउंडप्रमाणे, आणि काही फरकलेल्या रुंदीच्या मोठ्या बॉक्समध्ये.
-> भोपळ्यांचे वजन सातत्याने मोजणे खूप कठीण आहे
+> पंपकिनचे वजन एकसारखे ठरवणे खूप कठीण वाटते
-मूळ डेटामध्ये डोकावल्यावर, असे दिसते की `Unit of Sale` 'EACH' किंवा 'PER BIN' असलेल्या कोणत्याही गोष्टींमध्ये `Package` प्रकार प्रति इंच, प्रति बिन, किंवा 'each' आहे. भोपळ्यांचे वजन सातत्याने मोजणे खूप कठीण आहे, त्यामुळे `Package` कॉलममध्ये 'bushel' असलेल्या भोपळ्यांनाच निवडूया.
+मूळ डेटामध्ये पाहिल्यास, 'Unit of Sale' जर 'EACH' किंवा 'PER BIN' असेल तर `Package` चा प्रकार प्रति इंच, प्रति बिन, किंवा 'each' असतो. पंपकिनचे वजन एका प्रकारे ठरवणे कठीण असल्याने, चल करा केवळ ज्या पंपकिनच्या `Package` स्तंभात 'bushel' आहे त्याचं फिल्टर करा.
-1. फाइलच्या सुरुवातीला, सुरुवातीच्या .csv आयातीनंतर एक फिल्टर जोडा:
+1. फाइलच्या सुरुवातीला, .csv आयाताखाली फिल्टर जोडा:
```python
pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]
```
- जर तुम्ही डेटा प्रिंट केला, तर तुम्हाला फक्त 'bushel' असलेल्या 415 ओळींचा डेटा दिसेल.
+ आता जर डेटा छापला तर एवढेच दिसेल की तुम्हाला 'bushel' च्या पंपकिनच्या अंदाजे 415 ओळींचा डेटा मिळतोय.
-### पण थांबा! अजून एक गोष्ट करायची आहे
+### पण थांबा! आणखी एक गोष्ट करायची आहे
-तुम्हाला लक्षात आले का की प्रत्येक ओळीत bushel प्रमाण वेगळे आहे? तुम्हाला किंमती सामान्य करायच्या आहेत, त्यामुळे तुम्ही bushel प्रमाणावर आधारित किंमती दाखवू शकता. त्यामुळे किंमतींचे प्रमाण समान करण्यासाठी गणित करा.
+लक्षात आलं का की bushel चे प्रमाण प्रत्येक रो वर वेगवेगळे आहे? तुम्हाला किमती बसलेली दाखवावी लागतील, म्हणून काही गणित करून त्यास मानकीकृत करा.
-1. नवीन_pumpkins dataframe तयार करण्याच्या ब्लॉकनंतर हे ओळी जोडा:
+1. `new_pumpkins` डेटा फ्रेम तयार केल्यानंतर ही ओळी जोडा:
```python
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9)
@@ -134,38 +134,38 @@ _नोटबुक.ipynb_ फाइल Visual Studio Code मध्ये उ
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 चा अभ्यास करताना, तुमच्या डेटाच्या स्वरूपाचे समजून घेणे किती महत्त्वाचे आहे हे लक्षात येते!
+✅ [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) नुसार, bushel चे वजन उत्पादनानुसार बदलते कारण ते प्रमाण मोजण्याचं एक वॉल्यूम मोजमाप आहे. "टमाटराचा बशेल साधारण 56 पौंडांचा असतो... परंतु पालेभाज्या जास्त जागा घ्यतात पण वजन कमी असल्यामुळे पालकाचा बशेल फक्त 20 पौंडांचा असतो." ही बाब सारखीच गुंतागुंतीची आहे! चल तर वजनाप्रमाणे रुपांतर करण्याची काळजी करू नका, फक्त बशेलमुळे किमती ठरवा. मात्र हे बशेलच्या पंपकिनचा अभ्यास दाखवतो की तुमच्या डेटाचा स्वभाव समजून घेणे किती आवश्यक आहे!
-आता, तुम्ही bushel मोजमापावर आधारित युनिटच्या किंमतींचे विश्लेषण करू शकता. जर तुम्ही डेटा पुन्हा प्रिंट केला, तर तुम्हाला तो कसा प्रमाणित झाला आहे ते दिसेल.
+आता तुम्ही त्यांच्या बशेल मोजमापावर आधारित किंमतींचे विश्लेषण करू शकता. जर तुम्ही डेटा पुन्हा छापलात तर कसा मानकीकृत आहे ते दिसेल.
-✅ तुम्हाला लक्षात आले का की अर्ध्या-bushel ने विकले जाणारे भोपळे खूप महाग आहेत? तुम्ही याचे कारण शोधू शकता का? हिंट: लहान भोपळे मोठ्या भोपळ्यांपेक्षा खूप महाग असतात, कदाचित कारण bushel मध्ये मोठ्या पोकळ पाई भोपळ्यामुळे अधिक जागा वाया जाते.
+✅ लक्षात आलं का पंपकिन जे अर्ध्या बशेलने विकले जातात ते फार महाग आहेत? का असेल याचा विचार करा? संकेत: लहान पंपकिन मोठ्यांच्या तुलनेने खूप जास्त महाग असू शकतात कारण एका मोठ्या खोबणीदार पाई पंपकिनमुळे रिकाम्या जागा जास्त असते, त्यामुळे प्रति बशेल त्यांची संख्या जास्त असते.
-## व्हिज्युअलायझेशन स्ट्रॅटेजीज
+## दृश्य रूपात सादरीकरणाच्या धोरणा
-डेटा सायंटिस्टची भूमिका म्हणजे ते ज्या डेटावर काम करत आहेत त्याची गुणवत्ता आणि स्वरूप प्रदर्शित करणे. हे करण्यासाठी, ते डेटा व्हिज्युअलायझेशन तयार करतात, जसे की प्लॉट्स, ग्राफ्स, आणि चार्ट्स, जे डेटाचे विविध पैलू दाखवतात. यामुळे, ते नातेसंबंध आणि अंतर दाखवू शकतात, जे अन्यथा शोधणे कठीण असते.
+डेटा सायंटिस्टच्या भूमिकेचा एक भाग म्हणजे ते काम करत असलेल्या डेटाच्या गुणवत्तेचा आणि स्वरूपाचा दाखला देणे. हे साध्य करण्यासाठी, ते अनेकदा मनोरंजक दृश्य रूपात सादरीकरण, प्लॉट्स, ग्राफ्स, आणि चार्ट तयार करतात जे डेटा चे वेगवेगळे पैलू दाखवतात. अशा प्रकारे, ते दृश्यमानपणे अशा नात्यां आणि रिकाम्या जागा दाखवू शकतात ज्या इतरथा शोधणे कठीण असते.
-[](https://youtu.be/SbUkxH6IJo0 "ML for beginners - Matplotlib वापरून डेटा कसा व्हिज्युअलायझ करायचा")
+[](https://youtu.be/SbUkxH6IJo0 "ML for beginners - How to Visualize Data with Matplotlib")
-> 🎥 वरील प्रतिमेवर क्लिक करा आणि या धड्यासाठी डेटा व्हिज्युअलायझेशन प्रक्रिया पाहा.
+> 🎥 या चित्रावर क्लिक करून या धड्यासाठी डेटा दृश्य रूपात दाखवण्याचे एक लहान व्हिडिओ पाहा.
-व्हिज्युअलायझेशन मशीन लर्निंग तंत्र ठरवण्यासाठी देखील मदत करू शकते. उदाहरणार्थ, जर एखादा scatterplot एका रेषेचे अनुसरण करत असल्याचे दिसत असेल, तर डेटा linear regression साठी योग्य उमेदवार असल्याचे सूचित करते.
+दृश्य रूपात सादरीकरणाने मशीन लर्निंग तंत्रासाठी योग्य पर्याय निश्चित करण्यासही मदत होते. जसे की, जर एक scatterplot रेषेला अनुसरते वाटत असेल तर डेटा linear regression करण्यासाठी योग्य असू शकतो.
-Jupyter notebooks मध्ये चांगले काम करणारे एक डेटा व्हिज्युअलायझेशन लायब्ररी म्हणजे [Matplotlib](https://matplotlib.org/) (जे तुम्ही मागील धड्यातही पाहिले).
+Jupyter नोटबुकमध्ये काम करणारी एक डेटा दृश्य रूपात सादरीकरण लायब्ररी म्हणजे [Matplotlib](https://matplotlib.org/) (ज्याला तुम्ही मागील धड्यांतही पाहिलं आहे).
-> डेटा व्हिज्युअलायझेशनचा अधिक अनुभव मिळवण्यासाठी [या ट्युटोरियल्स](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott) पहा.
+> डेटा दृश्य रूपात अधिक अनुभव मिळवण्यासाठी [हे ट्युटोरियल्स](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott) पाहा.
-## व्यायाम - Matplotlib सह प्रयोग करा
+## सराव - Matplotlib सह प्रयोग करा
-तुम्ही नुकत्याच तयार केलेल्या नवीन dataframe चे प्रदर्शन करण्यासाठी काही मूलभूत प्लॉट्स तयार करण्याचा प्रयत्न करा. मूलभूत line plot काय दाखवेल?
+तुम्ही तयार केलेल्या नवीन डेटा फ्रेमसाठी काही मूलभूत प्लॉट तयार करण्याचा प्रयत्न करा. मूलभूत रेषीय प्लॉट काय दर्शवेल?
-1. फाइलच्या सुरुवातीला Pandas आयातीनंतर Matplotlib आयात करा:
+1. फाइलच्या वर Pandas आयाताखाली Matplotlib आयात करा:
```python
import matplotlib.pyplot as plt
```
-1. संपूर्ण notebook पुन्हा चालवा.
-1. notebook च्या तळाशी, डेटा box म्हणून प्लॉट करण्यासाठी एक सेल जोडा:
+1. संपूर्ण नोटबुक पुन्हा चालवा.
+1. नोटबुकच्या शेवटी डेटा बॉक्स प्लॉट म्हणून दाखवण्यासाठी सेल जोडा:
```python
price = new_pumpkins.Price
@@ -174,38 +174,113 @@ Jupyter notebooks मध्ये चांगले काम करणार
plt.show()
```
- 
+ 
- हा प्लॉट उपयुक्त आहे का? याबद्दल तुम्हाला काही आश्चर्य वाटते का?
+ हा प्लॉट उपयुक्त आहे का? यात काही आश्चर्यकारक आहे का?
- हा फारसा उपयुक्त नाही, कारण तो फक्त तुमच्या डेटाला एका महिन्यातील पॉइंट्सच्या स्वरूपात दाखवतो.
+ हा फारसा उपयोगी नाही कारण तो केवळ तुमच्या डेटाला एका महिन्यात बिंदूंमध्ये दर्शवितो.
-### याला उपयुक्त बनवा
+### याला उपयोगी बनवा
-डेटा उपयुक्ततेने दाखवण्यासाठी, तुम्हाला सहसा डेटा कशात तरी गटबद्ध करावा लागतो. चला एक प्लॉट तयार करून पाहू, जिथे y अक्षावर महिने दाखवले जातील आणि डेटा वितरण दर्शवेल.
+डेटा वापरून उपयोगी चार्ट दर्शवण्यासाठी तुम्हाला सहजपणे डेटा कसा गटबद्ध करायचा हे करावे लागते. चला, एक प्लॉट तयार करू जिथे y-अक्षावर महिने असतील आणि डेटा विक्षेप दाखवेल.
-1. गटबद्ध बार चार्ट तयार करण्यासाठी एक सेल जोडा:
+1. गटबद्ध बार चार्ट तयार करण्यासाठी सेल जोडा:
```python
new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar')
plt.ylabel("Pumpkin Price")
```
- 
+ 
+
+ हा अधिक उपयुक्त डेटा दृश्य रूपात सादरीकरण आहे! असे दिसते की पंपकिनसाठी सर्वोच्च किंमत सप्टेंबर आणि ऑक्टोबरमध्ये आहे. हे तुमच्या अपेक्षेशी सुसंगत आहे का? का किंवा का नाही?
+
+## सराव - Seaborn सह प्रयोग करा
+
+Matplotlib शक्तिशाली आहे, पण त्यासाठी बराच कोड लिहावा लागतो एक आकर्षक चार्ट तयार करण्यासाठी. [Seaborn](https://seaborn.pydata.org/) ही Matplotlib वर आधारित लायब्ररी आहे जी सांख्यिक डेटा दृश्यासाठी डिझाइन केलेली आहे. ती थेट Pandas डेटा फ्रेमसह काम करते, आकर्षक डीफॉल्ट स्टाइल लागू करते, आणि खूप कमी कोड वापरून माहितीपूर्ण प्लॉट तयार करू देते. Seaborn Matplotlib ऑब्जेक्ट्स परत करते म्हणून तुम्ही Matplotlib विषयी आधीच जाणणं वापरून निकाल बरोबर करू शकता.
+
+> जर तुम्ही अजून Seaborn इंस्टॉल केला नसेल तर, `pip install seaborn` वापरून त्यास इंस्टॉल करा.
+
+1. नोटबुकच्या वर इतर आयाताखाली Seaborn आयात करा. पारंपारिकरित्या तो `sns` नावाने आयात केला जातो:
+
+ ```python
+ import seaborn as sns
+ ```
+
+### नातेसंबंध दाखवण्यासाठी scatter plot
+
+मॉडेल तयार करण्यापूर्वी डेटामध्ये नाते शोधणे महत्त्वाचे असते. [scatter plot](https://en.wikipedia.org/wiki/Scatter_plot) त्यासाठी उत्तम साधन आहे: जर बिंदू एखाद्या रेषेला अनुसरतात, तर दोन चल सहसंबंधित असू शकतात, जे linear regression साठी चांगली चिन्हे आहेत.
+
+1. आधीच्या किमत-ते-महिना scatter plot पुन्हा Seaborn च्या [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) वापरून करा, जे थेट तुमच्या डेटा फ्रेम स्तंभांसह काम करतो:
+
+ ```python
+ sns.relplot(x="Price", y="Month", data=new_pumpkins)
+ ```
+
+ 
+
+ लक्षात घ्या कसे तुम्ही स्तंभांची नावे आणि डेटा फ्रेम पास करता, आणि Seaborn तुम्हाला अक्षांच्या लेबलांची काळजी घेतो.
+
+2. तुम्ही `kind="line"` पास करून रेषीय प्लॉटमध्ये बदल करू शकता. Seaborn रेषेभोवती आत्मविश्वास अंतर दर्शवणारी सावलीपट्टी (shaded band) काढतो:
+
+ ```python
+ sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins)
+ ```
+
+ 
+
+ हा विशेष डेटा फार गोंधळलेला आहे, त्यामुळे रेषीय प्लॉट हा सर्वोत्तम पर्याय नाही — पण Seaborn मध्ये कसा सहज चार्ट प्रकार बदलायचा हे दाखवतो.
+
+### वितरण दर्शवण्यासाठी बार चार्ट
+
+
+पूर्वी तुम्ही मॅटप्लॉटलिबसह बार चार्ट तयार करण्यासाठी डेटा हाताने गटबद्ध केला होता. सिबॉर्नचा [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) (वर्गीकृत प्लॉट) तुमच्यासाठी गटबद्ध आणि एकत्रीकरण करू शकतो. डीफॉल्टने `kind="bar"` प्रत्येक श्रेणीचा सरासरी दर्शवतो आणि विश्वास अंतर दर्शविणारी काळी रेषाही दाखवतो.
+
+1. प्रति महिन्याच्या सरासरी किमतीचा बार चार्ट तयार करा:
+
+ ```python
+ sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar")
+ ```
+
+ 
+
+ हे मॅटप्लॉटलिबसह तुम्ही पाहिलेलं पुष्टी करतो — किमती सप्टेंबर आणि ऑक्टोबर मध्ये उच्च असतात — पण सिबॉर्न हे देखील दाखवतो की प्रत्येक महिन्यात किंमत किती _विविध_ असते.
+
+### सहसंबंध दाखविण्यासाठी हीटमॅप
+
+स्कॅटर प्लॉट एकावेळी दोन चलांची तुलना करतात. जेव्हा तुमच्याकडे अनेक संख्यात्मक स्तंभ असतात, तेव्हा [हीटमॅप](https://en.wikipedia.org/wiki/Heat_map) तुम्हाला एकाच वेळी _प्रत्येक_ स्तंभ जोड्यांमधील संबंधांची ताकद पाहायला देते. हा एक सामान्य मार्ग आहे ज्यामुळे तुम्ही एखाद्या मॉडेलमध्ये कोणती वैशिष्ट्ये वापरायची ते ठरवण्याआधी कोणती अधिक सहसंबंधीत आहेत हे शोधू शकता (आणि त्याच प्रकारचा चार्ट नंतर वर्गीकरणातील कॉन्फ्यूजन मॅट्रिसेस दाखविण्यासाठी वापरला जातो).
+
+1. पांडससह सहसंबंध मॅट्रिक्स तयार करा, नंतर सिबॉर्नच्या [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html) ने तो रेखाटाअ. `annot=True` पर्याय प्रत्येक सेलवर सहसंबंध मूल्ये छापतो:
+
+ ```python
+ correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()
+ sns.heatmap(correlations, annot=True, cmap="coolwarm")
+ ```
+
+ 
+
+ `1` (किंवा `-1`) जवळील मूल्ये दर्शवतात की स्तंभ _रेषीय_ प्रकारे मजबूत सहसंबंधीत आहेत. लक्षात घ्या की `Low Price` आणि `High Price` जवळजवळ पूर्णपणे सहसंबंधीत आहेत. दुसरीकडे, `Month` फक्त किंमतीशी एक कमकुवत रेषीय सहसंबंध दर्शवतो — जरी बार चार्टने सप्टेंबर आणि ऑक्टोबरमध्ये स्पष्ट हंगामी शिखर दाखवले असेल. हा एक महत्त्वाचा धडा आहे: सहसंबंध गुणांक केवळ _सरळ रेषेतील_ संबंध मोजतो, त्यामुळे तो हंगामी किंवा इतर प्रकारच्या अनरेषीय नमुन्यांना गमावू शकतो. ✅ स्तंभ निवडण्याआधी हीटमॅप *आणि* बार चार्टसारख्या चार्ट दोन्ही पाहणे का उपयुक्त आहे?
+
+### मॅटप्लॉटलिब की सिबॉर्न?
+
+दोन्ही लायब्ररी जाणून घेण्यासारख्या आहेत:
+
+- **मॅटप्लॉटलिब** तुम्हाला चार्टमधील प्रत्येक घटकावर सूक्ष्म नियंत्रण देते आणि जवळजवळ प्रत्येक इतर Python प्लॉटिंग लायब्ररीसाठी पाया आहे.
+- **सिबॉर्न** सांख्यिकीय चार्टसाठी उच्चस्तरीय फंक्शन्स आणि आकर्षक डीफॉल्ट्स देते, डायरेक्टली डेटाफ्रेम्ससोबत काम करते, आणि एक्सप्लोरेटरी डेटा अॅनालिसीसाठी अनेकदा वेगवान आहे.
- हा डेटा व्हिज्युअलायझेशन अधिक उपयुक्त आहे! असे दिसते की भोपळ्यांची सर्वाधिक किंमत सप्टेंबर आणि ऑक्टोबरमध्ये असते. हे तुमच्या अपेक्षांना पूर्ण करते का? का किंवा का नाही?
+सामान्य कामकाज म्हणजे जलद डेटा एक्सप्लोरेशनसाठी सिबॉर्न वापरणे, आणि नंतर तपशील सानुकूलित करण्यासाठी मॅटप्लॉटलिब वापरणे.
---
-## 🚀चॅलेंज
+## 🚀आव्हान
-Matplotlib विविध प्रकारच्या व्हिज्युअलायझेशन ऑफर करते. कोणते प्रकार रिग्रेशन समस्यांसाठी सर्वात योग्य आहेत?
+मॅटप्लॉटलिब आणि सिबॉर्न जे विविध प्रकारचे व्हिज्युअलायझेशन ऑफर करतात ते एक्सप्लोर करा. रिग्रेशन समस्यांसाठी कोणते प्रकार सर्वोत्तम आहेत?
-## [व्याख्यानानंतरची प्रश्नमंजुषा](https://ff-quizzes.netlify.app/en/ml/)
+## [पोस्ट-लेक्चर क्विझ](https://ff-quizzes.netlify.app/en/ml/)
-## पुनरावलोकन आणि स्व-अभ्यास
+## पुनरावलोकन आणि स्वअध्ययन
-डेटा व्हिज्युअलायझेशनचे विविध मार्ग पाहा. उपलब्ध विविध लायब्ररींची यादी तयार करा आणि कोणत्या प्रकारच्या टास्कसाठी कोणत्या लायब्ररी सर्वोत्तम आहेत ते नोंदवा, उदाहरणार्थ 2D व्हिज्युअलायझेशन विरुद्ध 3D व्हिज्युअलायझेशन. तुम्हाला काय सापडते?
+डेटा व्हिज्युअलायझ करण्याचे अनेक मार्ग पहा. उपलब्ध विविध लायब्ररींची यादी तयार करा आणि नमूद करा की कोणती विशिष्ट कार्यांसाठी सर्वोत्तम आहे, उदाहरणार्थ 2D व्हिज्युअलायझेशन विरुद्ध 3D व्हिज्युअलायझेशन. तुम्हाला काय आढळते?
## असाइनमेंट
@@ -213,5 +288,7 @@ Matplotlib विविध प्रकारच्या व्हिज्य
---
-**अस्वीकरण**:
-हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील मूळ दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
+
+**अस्वीकरण**:
+हा दस्तऐवज 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/notebook.ipynb b/translations/mr/2-Regression/2-Data/solution/notebook.ipynb
index 3bc91382e..40c14c61b 100644
--- a/translations/mr/2-Regression/2-Data/solution/notebook.ipynb
+++ b/translations/mr/2-Regression/2-Data/solution/notebook.ipynb
@@ -3,7 +3,9 @@
{
"cell_type": "markdown",
"metadata": {},
- "source": []
+ "source": [
+ "## भोपळ्यांसाठी रेषीय प्रतिगमन - धडा २\n"
+ ]
},
{
"cell_type": "code",
@@ -220,6 +222,7 @@
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
"pumpkins = pd.read_csv('../../data/US-pumpkins.csv')\n",
"\n",
"pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]\n",
@@ -383,18 +386,78 @@
"plt.ylabel(\"Pumpkin Price\")"
]
},
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## सीबॉर्नसह दृश्यरूप करणे\n",
+ "\n",
+ "[Seaborn](https://seaborn.pydata.org/) हे Matplotlib च्या वर तयार केले आहे आणि ते थेट डेटा फ्रेमसोबत काम करते, ज्यामुळे फार कमी कोडमध्ये आकर्षक सांख्यिकीय आकृत्या तयार करणे सोपे होते.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### नातेसंबंध दाखवण्यासाठी स्कॅटर प्लॉट्स\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", kind=\"line\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### वितरण दर्शविण्यासाठी बार चार्ट्स\n"
+ ]
+ },
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
- "source": []
+ "source": [
+ "sns.catplot(x=\"Month\", y=\"Price\", data=new_pumpkins, kind=\"bar\")"
+ ]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "\n---\n\n**अस्वीकरण**: \nहा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरे त्रुटी किंवा अचूकतेच्या अभावाने युक्त असू शकतात. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून निर्माण होणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार नाही.\n"
+ "### सहसंबंध दर्शविण्यासाठी हीटमॅप्स\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()\n",
+ "sns.heatmap(correlations, annot=True, cmap=\"coolwarm\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "---\n\n\n**अस्वीकरण**:\nहा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून अनुवादित केला आहे. जरी आम्ही अचूकतेसाठी प्रयत्न करतो, तरी कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेची कमतरता असू शकते. मूळ दस्तऐवज त्याच्या मूळ भाषेत अधिकृत स्रोत मानला पाहिजे. महत्त्वाची माहिती असल्यास, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराच्या वापरामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थलावणीसाठी आम्ही जबाबदार नाही.\n\n"
]
}
],
@@ -424,13 +487,7 @@
"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"
- }
+ "orig_nbformat": 2
},
"nbformat": 4,
"nbformat_minor": 2
diff --git a/translations/mr/2-Regression/4-Logistic/README.md b/translations/mr/2-Regression/4-Logistic/README.md
index 68d44f325..831ce6559 100644
--- a/translations/mr/2-Regression/4-Logistic/README.md
+++ b/translations/mr/2-Regression/4-Logistic/README.md
@@ -1,77 +1,77 @@
-# वर्गांचे अंदाज लावण्यासाठी लॉजिस्टिक रिग्रेशन
+# वर्गांमध्ये भाकीत करण्यासाठी लॉजिस्टिक रिग्रेशन
-
+
-## [पूर्व-व्याख्यान प्रश्नमंजुषा](https://ff-quizzes.netlify.app/en/ml/)
+## [प्री-लेक्चर क्विझ](https://ff-quizzes.netlify.app/en/ml/)
-> ### [हे धडा R मध्ये उपलब्ध आहे!](../../../../2-Regression/4-Logistic/solution/R/lesson_4.html)
+> ### [हा धडा 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) मध्ये अधिक सखोल करा.
+✅ या [Learn module](https://docs.microsoft.com/learn/modules/train-evaluate-classification-models?WT.mc_id=academic-77952-leestott) मध्ये या प्रकारच्या रिग्रेशनसह काम करण्याचे तुमचे समज वाढवा
-## पूर्वतयारी
+## पूर्वअट
-कद्दूच्या डेटावर काम केल्यानंतर, आपण आता याबाबत पुरेसे परिचित आहोत की आपल्याकडे काम करण्यासाठी एक बायनरी वर्ग आहे: `Color`.
+कद्दूच्या डेटावर काम केल्यानंतर, आता आपण इतके परिचित आहोत की आपल्याकडे एक बायनरी वर्ग आहे ज्यावर आपण काम करू शकतो: `Color`.
-चला लॉजिस्टिक रिग्रेशन मॉडेल तयार करूया जे काही व्हेरिएबल्स दिल्यास, _एखाद्या कद्दूचा रंग काय असेल याचा अंदाज लावेल_ (नारिंगी 🎃 किंवा पांढरा 👻).
+चला एक लॉजिस्टिक रिग्रेशन मॉडेल तयार करू ज्याद्वारे काही चलांच्या मदतीने, _ठरवायचे काढायचे आहे की दिलेला कद्दू कोणत्या रंगाचा असण्याची शक्यता आहे_ (केशरी 🎃 की पांढरा 👻).
-> आपण रिग्रेशनबद्दलच्या धड्यांमध्ये बायनरी वर्गीकरण का बोलतो आहोत? केवळ भाषिक सोयीसाठी, कारण लॉजिस्टिक रिग्रेशन [खरं तर एक वर्गीकरण पद्धत आहे](https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression), जरी ती लीनियर-आधारित आहे. डेटा वर्गीकृत करण्याच्या इतर पद्धतींबद्दल पुढील धड्यांमध्ये जाणून घ्या.
+> आपण रिग्रेशनबद्दल ग्रुप केलेल्या धडात बायनरी वर्गीकरणाबाबत का बोलत आहोत? फक्त भाषिक सुविधेसाठी, कारण लॉजिस्टिक रिग्रेशन ही [खरेतर वर्गीकरण पद्धत आहे](https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression), जरी ती एक रेषीय आधारित पद्धत आहे. पुढील धडगटात डेटा वर्गीकरणाच्या इतर मार्गांबद्दल जाणून घ्या.
-## प्रश्न परिभाषित करा
+## प्रश्न निश्चित करा
-आपल्या उद्देशांसाठी, आपण याला 'पांढरा' किंवा 'पांढरा नाही' असे बायनरी स्वरूपात व्यक्त करू. आपल्या डेटासेटमध्ये 'पट्टेदार' हा वर्ग देखील आहे, परंतु त्याचे उदाहरण कमी असल्याने आपण त्याचा वापर करणार नाही. डेटासेटमधून null मूल्ये काढून टाकल्यानंतर तो वर्ग आपोआप गाळला जातो.
+आपल्या उद्दिष्टांसाठी, आपण याला बायनरी स्वरूपात मांडणार आहोत: 'पांढरा' किंवा 'पांढरा नाही'. आमच्या डेटासेटमध्ये 'स्ट्राइप्ड' हा वर्ग देखील आहे पण त्याचे उदाहरण फारच कमी आहेत, म्हणून तो वापरणार नाही. त्याला डाटासेटमधून शून्य मूल्ये काढल्यानंतर तो नाहीसा होतो.
-> 🎃 मजेदार तथ्य: आम्ही कधी कधी पांढऱ्या कद्दूला 'भूत' कद्दू म्हणतो. त्यांना कोरणे सोपे नसते, त्यामुळे ते नारिंगी कद्दूइतके लोकप्रिय नाहीत, पण ते छान दिसतात! त्यामुळे आपण आपला प्रश्न 'भूत' किंवा 'भूत नाही' असा देखील मांडू शकतो. 👻
+> 🎃 मजेशीर गोष्ट, आपण कधी कधी पांढऱ्या कद्दूंना 'भुताच्या' कद्दू म्हणतो. ते फार सहज नक्की करता येत नाहीत, त्यामुळे ते केशरींपेक्षा फार फार लोकप्रिय नाहीत पण ते छान दिसतात! त्यामुळे आपण आपला प्रश्न असे देखील पुनर्बाधित करू शकतो: 'भुत' किंवा 'भुत नाही'. 👻
-## लॉजिस्टिक रिग्रेशनबद्दल
+## लॉजिस्टिक रिग्रेशनबाबत
-लॉजिस्टिक रिग्रेशन लीनियर रिग्रेशनपेक्षा काही महत्त्वाच्या बाबतीत वेगळे आहे, जे तुम्ही यापूर्वी शिकले होते.
+यापूर्वी तुम्ही शिकलेल्या लिनियर रिग्रेशनपासून लॉजिस्टिक रिग्रेशन काही महत्त्वाच्या बाबतीत वेगळे आहे.
-[](https://youtu.be/KpeCT6nEpBY "शिकण्यासाठी लॉजिस्टिक रिग्रेशन समजून घेणे")
+[](https://youtu.be/KpeCT6nEpBY "एमएल नवशिक्यांसाठी - मशीन लर्निंग वर्गीकरणासाठी लॉजिस्टिक रिग्रेशन समजून घेणे")
-> 🎥 वरील प्रतिमेवर क्लिक करा लॉजिस्टिक रिग्रेशनचा संक्षिप्त व्हिडिओ पाहण्यासाठी.
+> 🎥 लॉजिस्टिक रिग्रेशनचा संक्षिप्त विडिओ आढावा पाहण्यासाठी वरच्या चित्रावर क्लिक करा.
### बायनरी वर्गीकरण
-लॉजिस्टिक रिग्रेशन लीनियर रिग्रेशनसारखी वैशिष्ट्ये देत नाही. लॉजिस्टिक रिग्रेशन बायनरी वर्गाचा अंदाज लावते ("पांढरा किंवा पांढरा नाही") तर लीनियर रिग्रेशन सतत मूल्यांचा अंदाज लावू शकते, उदाहरणार्थ कद्दूच्या उत्पत्ती आणि कापणीच्या वेळेनुसार, _त्याच्या किमतीत किती वाढ होईल_.
+लॉजिस्टिक रिग्रेशन लिनियर रिग्रेशनसारख्या वैशिष्ट्ये देत नाही. पहिला बायनरी वर्गाविषयी भाकीत देतो ("पांढरा की नाही") तर दुसरा सलग मूल्ये भाकीत करू शकतो, उदा. कद्दूचा काटेकोर स्रोत आणि कापणीची वेळ दिल्यास, _त्याची किंमत किती वाढेल_.
-
-> माहितीपट: [दसानी मदीपल्ली](https://twitter.com/dasani_decoded)
+
+> माहितीचित्र [दसानी मदीपल्ली](https://twitter.com/dasani_decoded) यांच्या कडून
-### इतर वर्गीकरण
+### इतर वर्गीकरणे
-लॉजिस्टिक रिग्रेशनचे इतर प्रकार देखील आहेत, जसे की मल्टिनॉमियल आणि ऑर्डिनल:
+लॉजिस्टिक रिग्रेशनचे इतर प्रकार देखील असतात, ज्यात मल्टिनॉमियल आणि ऑर्डिनल समाविष्ट आहेत:
-- **मल्टिनॉमियल**, ज्यामध्ये एकापेक्षा जास्त वर्ग असतात - "नारिंगी, पांढरा, आणि पट्टेदार".
-- **ऑर्डिनल**, ज्यामध्ये क्रमबद्ध वर्ग असतात, जेव्हा आपण आपल्या परिणामांना तार्किकरित्या क्रमबद्ध करू इच्छितो, जसे की कद्दूंचे आकार (लहान, मध्यम, मोठा, इत्यादी).
+- **मल्टिनॉमियल**, ज्यामध्ये एकापेक्षा जास्त वर्ग असतात - "केशरी, पांढरा, आणि पट्टेदार".
+- **ऑर्डिनल**, ज्यामध्ये क्रमबद्ध वर्ग असतात, जर आपण आपल्या निकालांना लॉजिकल क्रमाने ठेवायचा असेल तर उपयोगात येते, जसे आपल्या कद्दू ज्यांना काही निश्चित आकारांच्या श्रेणीने (मिनी, स्मॉल, मीडियम, लार्ज, एक्सएल, एक्सएक्सएल) क्रमबद्ध केले आहे.
-
+
-### व्हेरिएबल्सला सहसंबंधित असण्याची गरज नाही
+### चल (variables) यांचे सहसंबंध आवश्यक नाहीत
-तुम्हाला आठवत असेल की लीनियर रिग्रेशन अधिक सहसंबंधित व्हेरिएबल्ससह चांगले कार्य करते? लॉजिस्टिक रिग्रेशन याच्या उलट आहे - व्हेरिएबल्सला सहसंबंधित असण्याची गरज नाही. हे या डेटासाठी योग्य आहे ज्यामध्ये सहसंबंध तुलनेने कमकुवत आहेत.
+लक्षात ठेवा लिनियर रिग्रेशनसाठी जास्त सहसंबंधित चल चांगले असतात? लॉजिस्टिक रिग्रेशन याउलट आहे - चलांना जुळण्याची गरज नाही. हे त्यासाठी उपयुक्त आहे ज्यात थोडा कमी सहसंबंध आहे.
-### तुम्हाला स्वच्छ डेटाची गरज आहे
+### तुलनेने मोठा स्वच्छ डेटाची गरज आहे
-लॉजिस्टिक रिग्रेशन अधिक डेटा वापरल्यास अधिक अचूक परिणाम देते; आपले छोटे डेटासेट या कार्यासाठी आदर्श नाही, त्यामुळे हे लक्षात ठेवा.
+लॉजिस्टिक रिग्रेशन अधिक डेटा वापरल्यास अचूक निकाल देते; आमचा छोटा डेटासेट या कामासाठी सर्वोत्तम नाही, त्यामुळे हे लक्षात ठेवा.
-[](https://youtu.be/B2X4H9vcXTs "डेटा विश्लेषण आणि तयारी")
+[](https://youtu.be/B2X4H9vcXTs "एमएल नवशिक्यांसाठी - लॉजिस्टिक रिग्रेशनसाठी डेटा विश्लेषण आणि तयारी")
-> 🎥 वरील प्रतिमेवर क्लिक करा लीनियर रिग्रेशनसाठी डेटा तयार करण्याचा व्हिडिओ पाहण्यासाठी.
+> 🎥 लिनियर रिग्रेशनसाठी डेटा तयार करण्याच्या आढाव्यासाठी वर दिलेल्या चित्रावर क्लिक करा
-✅ अशा प्रकारच्या डेटाचा विचार करा जो लॉजिस्टिक रिग्रेशनसाठी योग्य असेल.
+✅ अशा प्रकारच्या डेटाचा विचार करा जे लॉजिस्टिक रिग्रेशनसाठी चांगले असू शकतात
-## व्यायाम - डेटा स्वच्छ करा
+## सराव - डेटा टायडी करा
-सुरुवातीला, डेटा थोडा स्वच्छ करा, null मूल्ये काढून टाका आणि फक्त काही स्तंभ निवडा:
+प्रथम, डेटा थोडा स्वच्छ करा, शून्य मूल्ये काढून टाका आणि केवळ काही स्तंभ निवडा:
1. खालील कोड जोडा:
@@ -83,19 +83,19 @@
pumpkins.dropna(inplace=True)
```
- नेहमीप्रमाणे, तुमच्या नवीन डेटाफ्रेमवर एक नजर टाका:
+ तुम्ही नेहमी तुमच्या नवीन डेटा फ्रेमवर एक नजर टाकू शकता:
```python
pumpkins.info
```
-### व्हिज्युअलायझेशन - श्रेणीबद्ध प्लॉट
+### व्हिज्युअलायझेशन - श्रेणीकरणीय प्लॉट
-आता तुम्ही [स्टार्टर नोटबुक](../../../../2-Regression/4-Logistic/notebook.ipynb) पुन्हा लोड केले आहे आणि कद्दू डेटा स्वच्छ केला आहे, ज्यामुळे काही व्हेरिएबल्ससह डेटासेट जतन केले आहे, ज्यामध्ये `Color` समाविष्ट आहे. चला नोटबुकमध्ये डेटाफ्रेम व्हिज्युअलाइझ करूया, एका वेगळ्या लायब्ररीचा वापर करून: [Seaborn](https://seaborn.pydata.org/index.html), जी आपण यापूर्वी वापरलेल्या Matplotlib वर आधारित आहे.
+आतापर्यंत तुम्ही पुन्हा [स्टार्टर नोटबुक](./notebook.ipynb) मध्ये कद्दू डेटासेट लोड केला आहे आणि स्वच्छ केला आहे जेणेकरून काही चलांचा भाग राहील, ज्यात `Color` देखील आहे. चला नोटबुकमध्ये वेगळ्या लायब्ररीचा वापर करून डेटा फ्रेम व्हिज्युअलायझेशन करूया: [Seaborn](https://seaborn.pydata.org/index.html), जी Matplotlib वर आधारित आहे जी आपण आधी वापरली होती.
-Seaborn तुमचा डेटा व्हिज्युअलाइझ करण्याचे काही छान मार्ग ऑफर करते. उदाहरणार्थ, तुम्ही `Variety` आणि `Color` च्या डेटाचे वितरण श्रेणीबद्ध प्लॉटमध्ये तुलना करू शकता.
+Seaborn तुमच्या डेटाचे दृश्य सादर करण्याचे काही छान मार्ग देते. उदाहरणार्थ, तुम्ही प्रत्येक `Variety` आणि `Color` साठी डेटाचे वितरण श्रेणी प्लॉटमध्ये तुलना करू शकता.
-1. `catplot` फंक्शन वापरून असा प्लॉट तयार करा, आपल्या कद्दू डेटाचा (`pumpkins`) वापर करा आणि प्रत्येक कद्दू श्रेणीसाठी (नारिंगी किंवा पांढरा) रंग मॅपिंग निर्दिष्ट करा:
+1. `catplot` फंक्शन वापरून असा प्लॉट तयार करा, आपल्या कद्दू डेटासेट `pumpkins` वापरून, आणि प्रत्येक कद्दू वर्गासाठी रंग नकाशा निर्दिष्ट करा (केशरी किंवा पांढरा):
```python
import seaborn as sns
@@ -111,50 +111,242 @@ Seaborn तुमचा डेटा व्हिज्युअलाइझ क
)
```
- 
+ 
- डेटा पाहून, तुम्ही `Color` डेटा `Variety` शी कसा संबंधित आहे हे पाहू शकता.
+ डेटाकडे पाहून तुम्ही पाहू शकता की Color डेटा Variety शी कसा संबंधीत आहे.
- ✅ या श्रेणीबद्ध प्लॉटवरून, तुम्ही कोणत्या मनोरंजक अन्वेषणांची कल्पना करू शकता?
+ ✅ या श्रेणी प्लॉटवरून तुम्हाला कोणत्या काही मनोरंजक शोधांसाठी कल्पना येतात?
-### डेटा पूर्व-प्रक्रिया: फीचर आणि लेबल एन्कोडिंग
+### डेटा पूर्व प्रक्रियाकरण: फिचर आणि लेबल एनकोडिंग
+आमच्या कद्दूंना डेटासेटमधील सर्व स्तंभांमध्ये स्ट्रिंग मूल्ये आहेत. श्रेणीकरणीय डेटाबरोबर काम करणे माणसांसाठी सोपे आहे पण मशीनसाठी नाही. मशीन लर्निंग अल्गोरिदमसंख्यांसह चांगले काम करतात. म्हणून एनकोडिंग ही डेटा पूर्व-प्रक्रियाकरण मध्ये एक महत्त्वाची पायरी आहे, कारण ती आपल्याला श्रेणीकरणीय डेटा संख्यात्मक डेटामध्ये बदलण्याची परवानगी देते, कोणतीही माहिती गमावली न जाता. चांगले एनकोडिंग चांगले मॉडेल तयार करते.
-आमच्या कद्दू डेटासेटमध्ये सर्व स्तंभांसाठी स्ट्रिंग मूल्ये आहेत. श्रेणीबद्ध डेटासह काम करणे मानवांसाठी सोपे आहे, परंतु मशीनसाठी नाही. मशीन लर्निंग अल्गोरिदम्ससाठी संख्यात्मक डेटा चांगला कार्य करतो. म्हणूनच, एन्कोडिंग हा डेटा पूर्व-प्रक्रिया टप्प्यातील एक महत्त्वाचा टप्पा आहे, कारण तो श्रेणीबद्ध डेटाला संख्यात्मक डेटामध्ये रूपांतरित करण्यास सक्षम करतो, कोणतीही माहिती गमावल्याशिवाय. चांगले एन्कोडिंग चांगले मॉडेल तयार करण्यास मदत करते.
+फिचर एनकोडिंगसाठी दोन मुख्य प्रकार आहेत:
-...
-गोंधळ मॅट्रिक्सचा अचूकता आणि पुनर्प्राप्तीशी काय संबंध आहे? लक्षात ठेवा, वर प्रिंट केलेल्या वर्गीकरण अहवालाने अचूकता (0.85) आणि पुनर्प्राप्ती (0.67) दर्शवली होती.
+1. ऑर्डिनल एनकोडर: हा ऑर्डिनल चलांसाठी योग्य आहे, जे श्रेणी वर्ग आहेत ज्याचा डेटा तार्किक क्रमाने आहे, जसे आमच्या डेटासेटमधील `Item Size` स्तंभ. हा अशा प्रकारे मॅपिंग तयार करतो की प्रत्येक वर्ग क्रमाने एक संख्या दर्शवेल.
-अचूकता = tp / (tp + fp) = 22 / (22 + 4) = 0.8461538461538461
+ ```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)
+```
+ दुसरीकडे, लेबल एनकोड करण्यासाठी, आम्ही स्किकिट-लर्नच्या `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)
+ ```
+
+ 
+
+**जागरूक रहा**: वरील कोड स्वार्म प्लॉटमध्ये इतक्या डेटापॉइंटचे प्रतिनिधित्व न करू शकल्याने वारंवार वारंवार चेतावणी निर्माण करू शकतो. यासाठी शक्यतो 'size' पॅरामीटर वापरून मार्करचा आकार कमी करणे एक उपाय आहे. मात्र, यामुळे प्लॉट वाचायला त्रास होऊ शकतो.
+
+
+> **🧮 मला गणित दाखवा**
+>
+> लॉजिस्टिक रिग्रेशन 'मॅक्सिमम लाइकलिहूड' या संकल्पनेवर आधारित आहे ज्यात [सिग्मॉइड फंक्शन्स](https://wikipedia.org/wiki/Sigmoid_function) वापरल्या जातात. प्लॉटवर 'सिग्मॉइड फंक्शन' 'S' आकारात दिसते. ते एखादे मूल्य घेते आणि त्यास 0 आणि 1 मधील मध्यभागी नकाशित करते. त्याला 'लॉजिस्टिक वक्र' असेही म्हणतात. त्याचा सूत्र असे आहे:
+>
+> 
+>
+> जिथे सिग्मॉइडचा मध्यबिंदू x च्या शून्य बिंदूवर असतो, 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 मध्ये कनफ्युजन मॅट्रिक्सच्या रांगा (अक्ष 0) खरी लेबल आहेत आणि स्तंभ (अक्ष 1) भाकीत केलेली लेबल.
+
+| | 0 | 1 |
+| :---: | :---: | :---: |
+| 0 | TN | FP |
+| 1 | FN | TP |
+
+येथे काय घडत आहे? समजा आपला मॉडेल कद्दूंना दोन बायनरी वर्गांमध्ये वर्गीकृत करण्यास सांगितला आहे, 'पांढरा' आणि 'पांढरा नाही' या वर्गांमध्ये.
+
+- जर तुमचा मॉडेल एखादा कद्दू पांढऱ्यासाठी नाही असे भाकीत करतो आणि तो प्रत्यक्षात 'पांढरा नाही' वर्गाचा आहे, तर आपण त्याला खरा नकारात्मक (True Negative) म्हणतो, जो वर डाव्या बाजूच्या संख्येने दाखविला आहे.
+- जर तुमचा मॉडेल एखादा कद्दू पांढरा म्हणून भाकीत करतो पण तो प्रत्यक्षात 'पांढरा नाही' वर्गाचा असतो, तर आपण त्याला खोटा सकारात्मक (False Positive) म्हणतो, जो वर उजव्या बाजूच्या संख्येने दाखविला आहे.
+- जर तुमचा मॉडेल एखादा कद्दू पांढऱ्यासाठी नाही असे भाकीत करतो पण तो प्रत्यक्षात 'पांढरा' वर्गाचा असतो, तर आपण त्याला खोटा नकारात्मक (False Negative) म्हणतो, जो खाली डाव्या बाजूच्या संख्येने दाखविला आहे.
+- जर तुमचा मॉडेल एखादा कद्दू पांढरा म्हणून भाकीत करतो आणि तो प्रत्यक्षात 'पांढरा' वर्गाचा आहे, तर आपण त्याला खरा सकारात्मक (True Positive) म्हणतो, जो खाली उजव्या बाजूच्या संख्येने दाखविला आहे.
+
+
+तुम्हाला कदाचित अंदाज आला असेल की खरे पॉझिटिव्ह्स आणि खरे निगेटिव्ह्सची संख्या जास्त असावी आणि खोटे पॉझिटिव्ह्स आणि खोटे निगेटिव्ह्स कमी असावेत, ज्याचा अर्थ असा की मॉडेल चांगले काम करते.
+
+संदिग्ध मॅट्रिक्स म्हणजे प्रिसिजन आणि रीकॉलशी कसे संबंधित आहे? लक्षात ठेवा, वर छापलेल्या वर्गीकरण अहवालात प्रिसिजन (0.85) आणि रीकॉल (0.67) दाखवले आहे.
+
+प्रिसिजन = tp / (tp + fp) = 22 / (22 + 4) = 0.8461538461538461
-पुनर्प्राप्ती = tp / (tp + fn) = 22 / (22 + 11) = 0.6666666666666666
+रीकॉल = tp / (tp + fn) = 22 / (22 + 11) = 0.6666666666666666
-✅ प्रश्न: गोंधळ मॅट्रिक्सनुसार मॉडेलने कसे काम केले? उत्तर: वाईट नाही; बऱ्याच खऱ्या नकारात्मक आहेत पण काही खोट्या नकारात्मक देखील आहेत.
+✅ प्रश्न: संदिग्ध मॅट्रिक्सनुसार, मॉडेलने कसे काम केले? उत्तर: वाईट नाही; खरे निगेटिव्ह्स चांगल्या प्रमाणात आहेत पण काही खोटे निगेटिव्ह्स आहेत.
-चला गोंधळ मॅट्रिक्सच्या TP/TN आणि FP/FN मॅपिंगच्या मदतीने आपण पूर्वी पाहिलेल्या संज्ञा पुन्हा पाहूया:
+चला आधी पाहिलेल्या टर्म्सना संदिग्ध मॅट्रिक्सच्या TP/TN आणि FP/FN नकाशाच्या मदतीने पुन्हा पाहूया:
-🎓 अचूकता: TP/(TP + FP) पुनर्प्राप्त केलेल्या उदाहरणांमध्ये संबंधित उदाहरणांचे प्रमाण (उदा. कोणते लेबल योग्य प्रकारे लेबल केले गेले)
+🎓 प्रिसिजन: TP/(TP + FP) प्राप्त झालेल्या उदाहरणांमधील संबंधित उदाहरणांचा भाग (उदा. कोणते लेबल चांगले लेबल केले गेले)
-🎓 पुनर्प्राप्ती: TP/(TP + FN) पुनर्प्राप्त केलेल्या संबंधित उदाहरणांचे प्रमाण, योग्य प्रकारे लेबल केले गेले असो किंवा नसो
+🎓 रीकॉल: TP/(TP + FN) प्राप्त झालेल्या संबंधित उदाहरणांचा भाग, त्यांना चांगले लेबल केले गेले असो किंवा नाही
-🎓 f1-स्कोअर: (2 * अचूकता * पुनर्प्राप्ती)/(अचूकता + पुनर्प्राप्ती) अचूकता आणि पुनर्प्राप्तीचे वजनित सरासरी, सर्वोत्तम 1 आणि सर्वात वाईट 0
+🎓 f1-score: (2 * precision * recall)/(precision + recall) प्रिसिजन आणि रीकॉलचा वजनदार सरासरी, ज्यात 1 सर्वोत्तम आणि 0 सर्वात वाईट आहे
-🎓 समर्थन: पुनर्प्राप्त केलेल्या प्रत्येक लेबलच्या घटना संख्या
+🎓 सपोर्ट: प्रत्येक लेबलच्या प्राप्त घटनांची संख्या
-🎓 अचूकता: (TP + TN)/(TP + TN + FP + FN) नमुन्यासाठी अचूकपणे अंदाज केलेल्या लेबल्सचा टक्केवारी.
+🎓 अचूकता (Accuracy): (TP + TN)/(TP + TN + FP + FN) नमुन्यासाठी लेबल अचूकपणे भाकीत करण्याचा टक्केवारी.
-🎓 मॅक्रो सरासरी: प्रत्येक लेबलसाठी वजन न घेता मेट्रिक्सची सरासरी गणना, लेबल असमतोल विचारात न घेता.
+🎓 मॅक्रो सरासरी (Macro Avg): प्रत्येक लेबलसाठी असंवेदनशील सरासरी मेट्रिक्सची मोजणी, लेबल असंतुलन लक्षात न घेता.
-🎓 वजनित सरासरी: प्रत्येक लेबलसाठी मेट्रिक्सची सरासरी गणना, समर्थनाने (प्रत्येक लेबलसाठी खऱ्या उदाहरणांची संख्या) त्यांना वजन देऊन लेबल असमतोल विचारात घेणे.
+🎓 वजनदार सरासरी (Weighted Avg): प्रत्येक लेबलसाठी सरासरी मेट्रिक्सची मोजणी, त्याच्या सपोर्ट (प्रत्येक लेबलसाठी खरे उदाहरणांची संख्या) द्वारे वजन देऊन लेबल असंतुलन लक्षात घेऊन.
-✅ तुम्हाला वाटते का की तुम्हाला तुमच्या मॉडेलने खोट्या नकारात्मक संख्या कमी करायची असल्यास कोणते मेट्रिक पाहावे?
+✅ जर तुम्हाला तुमच्या मॉडेलच्या खोट्या निगेटिव्ह्सची संख्या कमी करायची असेल तर कोणती मेट्रिक पाहायला हवी असेल?
-## या मॉडेलचा ROC वक्र व्हिज्युअलाइझ करा
+## या मॉडेलचा ROC कर्व्ह व्हिज्युअलाइझ करा
[](https://youtu.be/GApO575jTA0 "ML for beginners - Analyzing Logistic Regression Performance with ROC Curves")
-> 🎥 ROC वक्रचे संक्षिप्त व्हिडिओ अवलोकन पाहण्यासाठी वरील प्रतिमेवर क्लिक करा
+> 🎥 ROC कर्व्हचा थोडकासा विडियो आढावा पाहण्यासाठी वरील प्रतिमा क्लिक करा
-चला आणखी एक व्हिज्युअलायझेशन करूया ज्यामध्ये तथाकथित 'ROC' वक्र पाहता येईल:
+चला आणखी एक व्हिज्युअलाइजेशन करूया ज्याला 'ROC' कर्व्ह म्हणतात:
```python
from sklearn.metrics import roc_curve, roc_auc_score
@@ -174,36 +366,38 @@ 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 अक्षावर खोट्या सकारात्मक दर असतो." त्यामुळे वक्राची तीव्रता आणि मध्यरेषा व वक्र यामधील जागा महत्त्वाची असते: तुम्हाला अशी वक्र हवी आहे जी लवकर वर आणि रेषेवर जाते. आमच्या बाबतीत, सुरुवातीला काही खोट्या सकारात्मक आहेत आणि नंतर रेषा योग्य प्रकारे वर जाते:
+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) गणना करा:
+अखेरीस, Scikit-learn ची [`roc_auc_score` API](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_auc_score.html?highlight=roc_auc#sklearn.metrics.roc_auc_score) वापरून वास्तविक 'कर्वखालील क्षेत्र' (AUC) मोजा:
```python
auc = roc_auc_score(y_test,y_scores[:,1])
print(auc)
```
-परिणाम `0.9749908725812341` आहे. AUC 0 ते 1 पर्यंत असते, त्यामुळे तुम्हाला मोठा स्कोअर हवा आहे, कारण 100% अचूक अंदाज करणारे मॉडेल 1 चा AUC असेल; या प्रकरणात, मॉडेल _खूप चांगले_ आहे.
+परिणाम आहे `0.9749908725812341`. AUC च्या मानाने जो 0 ते 1 पर्यंत असतो, तुम्हाला मोठा स्कोर हवा असतो, कारण 100% अचूक भाकित करणारा मॉडेलचा AUC 1 असेल; या बाबतीत, मॉडेल _खूप चांगले_ आहे.
-वर्गीकरणावरील भविष्यातील धड्यांमध्ये, तुम्ही तुमच्या मॉडेलचे स्कोअर सुधारण्यासाठी पुनरावृत्ती कशी करायची ते शिकाल. पण सध्या, अभिनंदन! तुम्ही हे पुनरावृत्ती धडे पूर्ण केले आहेत!
+भविष्यातील वर्गीकरणाच्या धडय़ांमध्ये तुम्हाला शिकायला मिळेल की तुमच्या मॉडेलच्या स्कोर्स सुधारण्यासाठी कसे पुनरावृत्ती करायची. पण सध्या, अभिनंदन! तुम्ही हे रिग्रेशनचे धडे पूर्ण केलेत!
---
-## 🚀चॅलेंज
+## 🚀आव्हान
-लॉजिस्टिक रिग्रेशनबद्दल अजून बरेच काही समजून घेण्यासारखे आहे! पण शिकण्याचा सर्वोत्तम मार्ग म्हणजे प्रयोग करणे. अशा प्रकारच्या विश्लेषणासाठी योग्य असलेला डेटासेट शोधा आणि त्यावर मॉडेल तयार करा. तुम्हाला काय शिकायला मिळते? टिप: [Kaggle](https://www.kaggle.com/search?q=logistic+regression+datasets) वर मनोरंजक डेटासेट्स शोधा.
+लॉजिस्टिक रिग्रेशनबद्दल आणखी बरेच काही आहे! पण शिकण्याचा सर्वोत्तम मार्ग म्हणजे प्रयोग करणे. अशा प्रकारच्या विश्लेषणासाठी योग्य डेटा संच शोधा आणि त्यावर मॉडेल तयार करा. तुम्ही काय शिकलात? टिप: [Kaggle](https://www.kaggle.com/search?q=logistic+regression+datasets) येथे मनोरंजक डेटा संच शोधा.
-## [पाठानंतरचा क्विझ](https://ff-quizzes.netlify.app/en/ml/)
+## [धडा संपल्यानंतरचे क्विझ](https://ff-quizzes.netlify.app/en/ml/)
-## पुनरावलोकन आणि स्व-अभ्यास
+## पुनरावलोकन व स्वअध्ययन
-[स्टॅनफोर्डच्या या पेपर](https://web.stanford.edu/~jurafsky/slp3/5.pdf) च्या पहिल्या काही पृष्ठे वाचा ज्यामध्ये लॉजिस्टिक रिग्रेशनसाठी काही व्यावहारिक उपयोग दिले आहेत. आपण आतापर्यंत अभ्यासलेल्या रिग्रेशन प्रकारांपैकी कोणत्या प्रकारासाठी कोणते कार्य अधिक योग्य आहे याचा विचार करा. काय सर्वोत्तम कार्य करेल?
+लॉजिस्टिक रिग्रेशनसाठी काही व्यावहारिक वापरांबाबत [स्टॅनफोर्डचा हा पेपर](https://web.stanford.edu/~jurafsky/slp3/5.pdf) वाचा. आपण आतापर्यंत शिकलेल्या वेगवेगळ्या प्रकारच्या रिग्रेशनच्या कामांमध्ये कोणती कार्ये कोणत्या प्रकाराशी अधिक सुसंगत आहेत याचा विचार करा. काय सर्वोत्तम काम करेल?
-## असाइनमेंट
+## गृहपाठ
-[पुनरावृत्ती रिग्रेशन पुन्हा प्रयत्न करा](assignment.md)
+[हा रिग्रेशन पुन्हा प्रयत्न करा](assignment.md)
---
-**अस्वीकरण**:
-हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील मूळ दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
+
+**अस्वीकरण**:
+हा दस्तऐवज 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
index 9605e5ba9..23eb5d37d 100644
--- a/translations/mr/8-Reinforcement/1-QLearning/README.md
+++ b/translations/mr/8-Reinforcement/1-QLearning/README.md
@@ -1,47 +1,47 @@
-# रिइन्फोर्समेंट लर्निंग आणि Q-लर्निंगची ओळख
+# बळकटीकरण शिक्षण आणि क्यू-लर्निंगची ओळख
-
-> स्केच नोट [Tomomi Imura](https://www.twitter.com/girlie_mac) यांच्याकडून
+
+> स्केच नोट [Tomomi Imura](https://www.twitter.com/girlie_mac) यांची
-रिइन्फोर्समेंट लर्निंगमध्ये तीन महत्त्वाचे संकल्पना असतात: एजंट, काही स्टेट्स, आणि प्रत्येक स्टेटसाठी अॅक्शनचा सेट. एका विशिष्ट स्टेटमध्ये अॅक्शन पार पाडून एजंटला एक रिवॉर्ड दिला जातो. पुन्हा सुपर मारिओ गेमची कल्पना करा. तुम्ही मारिओ आहात, तुम्ही गेमच्या एका लेव्हलमध्ये आहात, एका कड्याच्या जवळ उभे आहात. तुमच्या वर एक नाणे आहे. तुम्ही मारिओ आहात, एका गेम लेव्हलमध्ये, एका विशिष्ट ठिकाणी ... हे तुमचे स्टेट आहे. उजवीकडे एक पाऊल टाकणे (एक अॅक्शन) तुम्हाला कड्यावरून खाली नेईल, आणि त्यामुळे तुम्हाला कमी संख्यात्मक स्कोअर मिळेल. परंतु, जंप बटण दाबल्यास तुम्हाला एक पॉइंट मिळेल आणि तुम्ही जिवंत राहाल. हे एक सकारात्मक परिणाम आहे आणि त्यामुळे तुम्हाला सकारात्मक संख्यात्मक स्कोअर मिळायला हवा.
+बळकटीकरण शिक्षणामध्ये तीन महत्त्वाच्या संकल्पना असतात: एजंट, काही स्टेट्स, आणि प्रत्येक स्टेटसाठी क्रियांचा संच. एखाद्या विशिष्ट स्टेटमध्ये एखादे क्रिया केल्यावर एजंटला पारितोषिक मिळते. पुन्हा कल्पना करा संगणक खेळ सुपर मारियो. तुम्ही मारियो आहात, तुम्ही एका खेळाच्या स्तरावर आहात, एका दऱ्या कडेला उभे आहात. तुमच्या वर नाणे आहे. तुम्ही मारियो आहात, खेळाच्या एका विशिष्ट स्थितीवर... ही तुमची स्थिती आहे. उजवीकडे एक पाऊल चालण्याने (एक क्रिया) तुम्हाला दऱ्या पार नेईल आणि त्यास कमी संख्यात्मक गुण मिळतील. मात्र, उडी मारण्याचा बटण दाबल्यास तुम्हाला एक गुण मिळेल आणि तुम्ही जिवंत राहाल. हा सकारात्मक परिणाम आहे आणि त्याला सकारात्मक संख्यात्मक गुण मिळायला हवेत.
-रिइन्फोर्समेंट लर्निंग आणि सिम्युलेटर (गेम) वापरून, तुम्ही गेम खेळण्याची पद्धत शिकू शकता ज्यामुळे तुम्हाला जास्तीत जास्त रिवॉर्ड मिळेल, म्हणजे जिवंत राहणे आणि जास्तीत जास्त पॉइंट्स मिळवणे.
+बळकटीकरण शिक्षण आणि सिम्युलेटर (खेळ) वापरून, तुम्ही खेळ कसा खेळायचा हे शिकू शकता ज्यामुळे जिंकण्याचा उद्दिष्ट जास्तीत जास्त जिवंत राहणे आणि शक्य तितके गुण मिळवणे होय.
-[](https://www.youtube.com/watch?v=lDq_en8RNOo)
+[](https://www.youtube.com/watch?v=lDq_en8RNOo)
-> 🎥 वर दिलेल्या प्रतिमेवर क्लिक करा आणि Dmitry यांच्याकडून रिइन्फोर्समेंट लर्निंगबद्दल ऐका
+> 🎥 वरील प्रतिमेवर क्लिक करा Dmitry यांचे बळकटीकरण शिक्षणावरील चर्चा ऐकण्यासाठी
-## [पूर्व-व्याख्यान क्विझ](https://ff-quizzes.netlify.app/en/ml/)
+## [प्रास्ताविक क्विझ](https://ff-quizzes.netlify.app/en/ml/)
-## पूर्वतयारी आणि सेटअप
+## पूर्वअट व सेटअप
-या धड्यात, आपण Python मध्ये काही कोडसह प्रयोग करणार आहोत. तुम्ही तुमच्या संगणकावर किंवा क्लाउडमध्ये या धड्याचा Jupyter Notebook कोड चालवू शकता.
+या धड्यात, आपण पायथनमध्ये काही कोड वापरून प्रयोग करू. आपण या धड्याचा Jupyter Notebook कोड तुमच्या संगणकावर किंवा क्लाउडवर चालवू शकता.
-तुम्ही [धड्याचा नोटबुक](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) उघडू शकता आणि या धड्याचा अभ्यास करून तयार करू शकता.
+आपण [धड्याचा नोटबुक](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) फाईल देखील मिळवावी लागेल, जी नोटबुक कोडमध्ये वापरली जाते. ती नोटबुकसह त्याच डिरेक्टरीमध्ये जोडा.
+> **नोट:** जर आपण हा कोड क्लाउडमधून उघडत असाल, तर [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) फाईल देखील डाउनलोड करावी लागेल, जी नोटबुक कोडमध्ये वापरली जाते. ती नोटबुक साठी खात्री करा की त्याच फोल्डरमध्ये आहे.
## ओळख
-या धड्यात, आपण **[Peter and the Wolf](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)** च्या जगाचा अभ्यास करणार आहोत, जो एका रशियन संगीतकार [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev) यांच्या संगीत परीकथेतून प्रेरित आहे. आपण **रिइन्फोर्समेंट लर्निंग** वापरून पीटरला त्याचे वातावरण एक्सप्लोर करायला, स्वादिष्ट सफरचंद गोळा करायला आणि लांडग्याला टाळायला शिकवणार आहोत.
+या धड्यात, आपण **[Peter and the Wolf](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)** या जगाचा अभ्यास करणार आहोत, जो रशियन संगीतकार [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev) यांच्या संगीत फेयरी टेलवर आधारित आहे. आपण **बळकटीकरण शिक्षण** वापरून Peter ला त्याच्या आजूबाजूच्या परिसरात शोध घेऊ देऊ, स्वादिष्ट सफरचंद गोळा करू देऊ आणि लांडग्याशी होणारी भेट टाळू देऊ.
-**रिइन्फोर्समेंट लर्निंग** (RL) ही एक शिकण्याची तंत्र आहे जी आपल्याला अनेक प्रयोग चालवून **एजंट**च्या **वातावरणात** एक आदर्श वर्तन शिकण्याची परवानगी देते. या वातावरणातील एजंटकडे काही **उद्दिष्ट** असावे, जे **रिवॉर्ड फंक्शन**द्वारे परिभाषित केले जाते.
+**बळकटीकरण शिक्षण** (RL) ही एक शिकण्याची पद्धत आहे जी आपल्याला अनेक प्रयोग करून एखाद्या **एजंट** चा काही **परिसर** मध्ये सर्वोत्तम वागणूक शिकण्याची संधी देते. या पर्यावरणातील एजंटला एक **लक्ष्य** असावे, जे एका **पारितोषिक फंक्शन** द्वारा परिभाषित केले जाते.
-## वातावरण
+## परिसर
-सोप्या पद्धतीने, पीटरच्या जगाला `width` x `height` आकाराच्या चौकोनी बोर्ड मानूया, असे:
+सोपेपणासाठी, चला Peter चा जग हा `width` x `height` आकाराचा चौरस फळीचा बोर्ड मानूया, खालीलप्रमाणे:
-
+
-या बोर्डमधील प्रत्येक सेल खालीलपैकी एक असू शकतो:
+या बोर्डमधील प्रत्येक सेल्युलर किंवा कोष्टकापैकी एक:
-* **जमीन**, ज्यावर पीटर आणि इतर प्राणी चालू शकतात.
-* **पाणी**, ज्यावर चालणे शक्य नाही.
-* **झाड** किंवा **गवत**, जिथे तुम्ही विश्रांती घेऊ शकता.
-* **सफरचंद**, जे पीटरला स्वतःला खायला मिळाल्यास आनंद होईल.
-* **लांडगा**, जो धोकादायक आहे आणि टाळला पाहिजे.
+* **भूमी**, जिथे Peter आणि इतर प्राणी चालू शकतात.
+* **पाणी**, ज्यावर निश्चितच चालता येत नाही.
+* एक **झाड** किंवा **गवत**, जिथे आराम करता येतो.
+* एक **सफरचंद**, जे Peter ला अन्न मिळवण्यासाठी आनंददायक ठरते.
+* एक **लांडगा**, जो धोकादायक आहे आणि टाळावा लागतो.
-एक स्वतंत्र Python मॉड्यूल आहे, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), ज्यामध्ये या वातावरणाशी संबंधित कोड आहे. कारण हा कोड आपले संकल्पना समजून घेण्यासाठी महत्त्वाचा नाही, आपण मॉड्यूल आयात करू आणि नमुना बोर्ड तयार करण्यासाठी वापरू (कोड ब्लॉक 1):
+एक स्वतंत्र पायथन मॉड्यूल आहे, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), ज्यामध्ये या परिसराबरोबर काम करण्याचा कोड आहे. कारण हा कोड आपल्या संकल्पना समजण्यासाठी महत्त्वाचा नाही, आपण हा मॉड्यूल आयात करू आणि नमुना बोर्ड तयार करण्यासाठी वापरू (कोड ब्लॉक 1):
```python
from rlboard import *
@@ -52,63 +52,63 @@ m.randomize(seed=13)
m.plot()
```
-हा कोड वरील चित्रासारखे वातावरण प्रिंट करेल.
+हा कोड वरील आसपासच्या परिसराचा चित्रपट प्रिंट करेल असा अपेक्षित आहे.
-## अॅक्शन आणि पॉलिसी
+## क्रिया आणि धोरण
-आपल्या उदाहरणात, पीटरचे उद्दिष्ट सफरचंद शोधणे असेल, लांडगा आणि इतर अडथळ्यांना टाळून. हे करण्यासाठी, तो मूलतः चालत राहू शकतो जोपर्यंत त्याला सफरचंद सापडत नाही.
+आपल्या उदाहरणात, Peter चे लक्ष्य एक सफरचंद शोधणे आहे, तर लांडगा आणि इतर अडथळे टाळणे आहे. यासाठी, तो अगदी चालत फिरत सफरचंद शोधण्याचा प्रयत्न करेल.
-म्हणून, कोणत्याही स्थितीत, तो खालील अॅक्शनपैकी एक निवडू शकतो: वर, खाली, डावीकडे आणि उजवीकडे.
+त्यामुळे, कोणत्याही स्थितीत, तो खालीलपैकी एक क्रिया निवडू शकतो: वर, खालून, डावीकडे आणि उजवीकडे.
-आपण त्या अॅक्शनला डिक्शनरी म्हणून परिभाषित करू आणि त्यांना संबंधित समन्वय बदलांच्या जोड्यांशी नकाशा करू. उदाहरणार्थ, उजवीकडे जाणे (`R`) `(1,0)` जोड्याशी संबंधित असेल. (कोड ब्लॉक 2):
+आपण त्या क्रिया एक शब्दकोश (डिक्शनरी) म्हणून परिभाषित करू आणि त्यांना संदर्भित कोऑर्डिनेट बदलांच्या जोड्यांशी नकाशित करू. उदाहरणार्थ, उजवीकडे वळणे (`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()) }
```
-या परिस्थितीचा सारांश देण्यासाठी, रणनीती आणि उद्दिष्ट खालीलप्रमाणे आहेत:
+सारांश म्हणून, या परिस्थितीची धोरण आणि लक्ष्य अशी आहे:
-- **रणनीती**, आपल्या एजंटची (पीटरची) **पॉलिसी**द्वारे परिभाषित केली जाते. पॉलिसी ही एक फंक्शन आहे जी कोणत्याही दिलेल्या स्थितीत अॅक्शन परत करते. आपल्या प्रकरणात, समस्येची स्थिती बोर्डद्वारे दर्शविली जाते, ज्यामध्ये खेळाडूची वर्तमान स्थिती समाविष्ट आहे.
+- **धोरण**, आपल्या एजंटचे (Peter) एक तथाकथित **पॉलिसी** द्वारा परिभाषित केले जाते. पॉलिसी ही एक फंक्शन आहे जी कोणत्याही स्थितीत क्रिया परत करते. आपल्या प्रकरणात, समस्येची स्थिती बोर्डने प्रदर्शित केली जाते, ज्यामध्ये प्लेयरची सद्यस्थिती समाविष्ट आहे.
-- **उद्दिष्ट**, रिइन्फोर्समेंट लर्निंगचे अंतिम उद्दिष्ट म्हणजे एक चांगली पॉलिसी शिकणे जी आपल्याला समस्या कार्यक्षमतेने सोडवण्यास अनुमती देईल. तथापि, बेसलाइन म्हणून, आपण **रँडम वॉक** नावाची सर्वात सोपी पॉलिसी विचारात घेऊया.
+- **लक्ष्य**, बळकटीकरण शिक्षणाचे अंतिम उद्दिष्ट एक चांगले धोरण शिकणे आहे जे आपल्याला समस्या परिणामकारकपणे सोडवण्याची परवानगी देईल. परंतु तत्त्वतः, सर्वात सोपा धोरण जो **रँडम वॉक** म्हणतात तो मानूया.
## रँडम वॉक
-आपल्या समस्येचे निराकरण प्रथम रँडम वॉक रणनीती अंमलात आणून करूया. रँडम वॉकसह, आपण परवानगी दिलेल्या अॅक्शनमधून पुढील अॅक्शन निवडू, जोपर्यंत आपण सफरचंदापर्यंत पोहोचत नाही (कोड ब्लॉक 3).
+आपल्या समस्या प्रथम रँडम वॉक धोरण अंमलात आणून सोडवूया. रँडम वॉकमध्ये आपण पुढील क्रिया परवानगी दिलेल्या क्रियांमधून अनियमितपणे निवडू, जोपर्यंत सफरचंद दिसत नाही (कोड ब्लॉक 3).
-1. खालील कोडसह रँडम वॉक अंमलात आणा:
+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
+ n = 0 # पावलांची संख्या
+ # प्रारंभिक स्थान सेट करा
if start_position:
m.human = start_position
else:
m.random_start()
while True:
if m.at() == Board.Cell.apple:
- return n # success!
+ return n # यशस्वी!
if m.at() in [Board.Cell.wolf, Board.Cell.water]:
- return -1 # eaten by wolf or drowned
+ return -1 # लांडगाने खाल्लं किंवा बुडालं
while True:
a = actions[policy(m)]
new_pos = m.move_pos(m.human,a)
if m.is_valid(new_pos) and m.at(new_pos)!=Board.Cell.water:
- m.move(a) # do the actual move
+ m.move(a) # प्रत्यक्ष हालचाल करा
break
n+=1
walk(m,random_policy)
```
- `walk` कॉल संबंधित मार्गाची लांबी परत करेल, जी एका रनपासून दुसऱ्या रनपर्यंत बदलू शकते.
+ `walk` ची कॉल संबंधित मार्गाची लांबी परत करावी, जी एक धावणीतून दुसऱ्या धावणीत बदलू शकते.
-1. वॉक प्रयोग अनेक वेळा चालवा (म्हणजे, 100 वेळा), आणि परिणामी आकडेवारी प्रिंट करा (कोड ब्लॉक 4):
+1. चालण्याचा प्रयोग अनेक वेळा (उदा., 100 वेळा) चालवा आणि परिणामी आकडेवारी प्रिंट करा (कोड ब्लॉक 4):
```python
def print_statistics(policy):
@@ -125,17 +125,17 @@ action_idx = { a : i for i,a in enumerate(actions.keys()) }
print_statistics(random_policy)
```
- लक्षात घ्या की मार्गाची सरासरी लांबी सुमारे 30-40 पायऱ्या आहे, जी खूप जास्त आहे, दिलेल्या तथ्यामुळे की सरासरी अंतर जवळच्या सफरचंदापर्यंत सुमारे 5-6 पायऱ्या आहे.
+ लक्षात ठेवा की एका मार्गाची सरासरी लांबी सुमारे 30-40 पावले आहे, जे खूप आहे, कारण जवळपासच्या सफरचंदापर्यंतचा सरासरी अंतर सुमारे 5-6 पावले आहे.
- तुम्ही पीटरच्या रँडम वॉक दरम्यानच्या हालचाली कशा दिसतात हे देखील पाहू शकता:
+ आपण पाहू शकता की रँडम वॉक चालताना Peter ची हालचाल कशी दिसते:
- 
+ 
-## रिवॉर्ड फंक्शन
+## पारितोषिक फंक्शन
-आपली पॉलिसी अधिक बुद्धिमान बनवण्यासाठी, आपल्याला समजून घ्यावे लागेल की कोणते हालचाल "चांगले" आहेत. हे करण्यासाठी, आपल्याला आपले उद्दिष्ट परिभाषित करावे लागेल.
+आपली धोरण अधिक बुद्धिमान करण्यासाठी, आपल्याला हे समजून घ्यावे लागेल कोणती हालचाल इतरांपेक्षा "चांगली" आहे. यासाठी, आपल्याला आपले लक्ष्य परिभाषित करावे लागेल.
-उद्दिष्ट **रिवॉर्ड फंक्शन**च्या स्वरूपात परिभाषित केले जाऊ शकते, जे प्रत्येक स्थितीसाठी काही स्कोअर मूल्य परत करेल. संख्या जितकी जास्त असेल, तितके रिवॉर्ड फंक्शन चांगले. (कोड ब्लॉक 5)
+लक्ष्य एका **पारितोषिक फंक्शन**च्या संदर्भाने परिभाषित केले जाऊ शकते, जे प्रत्येक स्थितीसाठी काही गुण परत करते. संख्या जितकी जास्त तितकी पारितोषिक फंक्शन चांगले आहे. (कोड ब्लॉक 5)
```python
move_reward = -0.1
@@ -154,39 +154,115 @@ def reward(m,pos=None):
return move_reward
```
-रिवॉर्ड फंक्शनबद्दल एक मनोरंजक गोष्ट म्हणजे बहुतेक प्रकरणांमध्ये, *आपल्याला गेमच्या शेवटीच महत्त्वपूर्ण रिवॉर्ड दिला जातो*. याचा अर्थ असा की आपला अल्गोरिदम "चांगल्या" पायऱ्यांना लक्षात ठेवावा लागेल ज्यामुळे शेवटी सकारात्मक रिवॉर्ड मिळतो, आणि त्यांचे महत्त्व वाढवावे लागेल. त्याचप्रमाणे, सर्व हालचाली ज्यामुळे वाईट परिणाम होतात त्यांना हतोत्साहित केले पाहिजे.
+पारितोषिक फंक्शन्स बद्दल एक रसपूर्ण गोष्ट म्हणजे बहुतेक केसेस मध्ये, *आपल्याला गेमच्या शेवटीच मोठे पारितोषिक मिळते*. याचा अर्थ आपला अल्गोरिदम "चांगल्या" पावलांची आठवण ठेवायला पाहिजे जे शेवटी सकारात्मक पारितोषिकाकडे नेतात आणि त्यांचे महत्त्व वाढवायला पाहिजे. त्याचप्रमाणे, सर्व हालचाली ज्या वाईट परिणांमांकडे नेतात त्यांना टाळले पाहिजे.
-## Q-लर्निंग
+## क्यू-लर्निंग
-आपण येथे चर्चा करणार असलेला अल्गोरिदम **Q-लर्निंग** म्हणून ओळखला जातो. या अल्गोरिदममध्ये, पॉलिसी एका फंक्शन (किंवा डेटा स्ट्रक्चर)द्वारे परिभाषित केली जाते ज्याला **Q-टेबल** म्हणतात. ते दिलेल्या स्थितीत प्रत्येक अॅक्शनच्या "चांगुलपणाची" नोंद ठेवते.
+एक अल्गोरिदम जो आपण येथे चर्चा करू ते म्हणजे **क्यू-लर्निंग**. या अल्गोरिदममध्ये, धोरण एका फंक्शन (किंवा डेटा स्ट्रक्चर) द्वारे परिभाषित केले जाते ज्याला **Q-टेबल** म्हणतात. हे दिलेल्या स्थितीतील प्रत्येक क्रियेची "चांगलीपणा" नोंदवते.
-याला Q-टेबल म्हणतात कारण ते टेबल किंवा मल्टी-डायमेन्शनल अॅरे म्हणून सादर करणे सोयीचे असते. कारण आपला बोर्ड `width` x `height` परिमाणांचा आहे, आपण Q-टेबलला `width` x `height` x `len(actions)` आकाराच्या numpy अॅरेद्वारे सादर करू शकतो: (कोड ब्लॉक 6)
+ते Q-टेबल म्हणून ओळखले जाते कारण ते बहुतेकवेळी टेबल किंवा मल्टि-डायमेंशनल अरे म्हणून सादर करणे सोपे असते. आपला बोर्ड `width` x `height` परिमाणांचा आहे, त्यामुळे आपण Q-टेबल numpy अरेच्या रूपात `width` x `height` x `len(actions)` आकाराने सादर करू शकतो: (कोड ब्लॉक 6)
```python
Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions)
```
-लक्षात घ्या की आपण Q-टेबलच्या सर्व मूल्यांना समान मूल्याने प्रारंभ करतो, आपल्या प्रकरणात - 0.25. हे "रँडम वॉक" पॉलिसीशी संबंधित आहे, कारण प्रत्येक स्थितीत सर्व हालचाली समान चांगल्या आहेत. आपण Q-टेबल बोर्डवर व्हिज्युअलाइझ करण्यासाठी `plot` फंक्शनला पास करू शकतो: `m.plot(Q)`.
+आपण सर्व Q-टेबलचे मूल्ये सारखी ठेवलात, आमच्या बाबतीत - 0.25. हे "रँडम वॉक" धोरणाशी जुळते, कारण प्रत्येक स्थितीत सर्व हालचाल समान चांगल्या असतात. आपण Q-टेबलला `m.plot(Q)` वापरून बोर्डवर दिसवू शकतो.
-
+
-प्रत्येक सेलच्या मध्यभागी एक "बाण" आहे जो हालचालीच्या प्राधान्य दिलेल्या दिशेची सूचना करतो. कारण सर्व दिशे समान आहेत, एक बिंदू दर्शविला जातो.
+प्रत्येक सेल्युलरच्या मध्यभागी एक "बाण" आहे जो प्राधान्य दिलेल्या दिशेची सूचना करतो. सर्व दिशा समान असल्यामुळे, एक बिंदू दर्शविला जातो.
-आता आपल्याला सिम्युलेशन चालवावे लागेल, आपले वातावरण एक्सप्लोर करावे लागेल, आणि Q-टेबल मूल्यांचे चांगले वितरण शिकावे लागेल, ज्यामुळे आपल्याला सफरचंदापर्यंत पोहोचण्याचा मार्ग खूप वेगाने सापडेल.
+आता आपल्याला सिम्युलेशन चालवून आपला परिसर शोधून नवीन Q-टेबल मूल्ये शिकणे आवश्यक आहे, ज्यामुळे सफरचंद शोधण्याचा मार्ग वेगाने मिळेल.
-## Q-लर्निंगचा सार: बेलमन समीकरण
+## क्यू-लर्निंगचा सार: बेलमन समीकरण
-एकदा आपण हालचाल सुरू केली की प्रत्येक अॅक्शनला संबंधित रिवॉर्ड मिळेल, म्हणजे आपण सैद्धांतिकदृष्ट्या सर्वोच्च तात्काळ रिवॉर्डच्या आधारावर पुढील अॅक्शन निवडू शकतो. तथापि, बहुतेक स्थितीत, हालचाल आपले सफरचंद गाठण्याचे उद्दिष्ट साध्य करणार नाही, आणि त्यामुळे आपण तात्काळ निर्णय घेऊ शकत नाही की कोणती दिशा चांगली आहे.
+जेव्हा आपण हालचाल सुरू करतो, प्रत्येक क्रियेला संबंधित पारितोषिक मिळते, म्हणजे आपल्याला थेट सर्वात जास्त तत्काळ पारितोषिकानुसार पुढील क्रिया निवडता येईल. परंतु, बहुतेक स्थितीत ही हालचाल आपले लक्ष्य (सफरचंद गाठणे) साध्य करणार नाही, त्यामुळे सहज ठरवता येत नाही कोणती दिशा चांगली आहे.
-> लक्षात ठेवा की तात्काळ परिणाम महत्त्वाचा नाही, तर अंतिम परिणाम महत्त्वाचा आहे, जो आपल्याला सिम्युलेशनच्या शेवटी मिळेल.
+> लक्षात ठेवा की तत्काळ परिणाम महत्त्वाचा नाही, परंतु अंतिम परिणाम जो सिम्युलेशनच्या शेवटी मिळेल तो महत्त्वाचा आहे.
-या विलंबित रिवॉर्डचा विचार करण्यासाठी, आपल्याला **[डायनॅमिक प्रोग्रामिंग](https://en.wikipedia.org/wiki/Dynamic_programming)** च्या तत्त्वांचा वापर करावा लागेल, ज्यामुळे आपल्याला आपली समस्या पुनरावृत्तीने विचार करता येईल.
+या विलंबित पारितोषिकासाठी विचार करण्यासाठी, आपल्याला **[डायनॅमिक प्रोग्रॅमिंग](https://en.wikipedia.org/wiki/Dynamic_programming)** च्या तत्त्वांचा वापर करावा लागेल, जे आपल्याला पुनरावृत्तीचा वापर करून समस्या विचारण्याची परवानगी देतात.
-समजा आपण आता स्थिती *s* वर आहोत, आणि आपण पुढील स्थिती *s'* वर जाण्यास इच्छुक आहोत. असे केल्याने, आपल्याला तात्काळ रिवॉर्ड *r(s,a)* मिळेल, जो रिवॉर्ड फंक्शनद्वारे परिभाषित केला जातो, तसेच काही भविष्यातील रिवॉर्ड मिळेल. जर आपण मानले की आपला Q-टेबल प्रत्येक अॅक्शनची "आकर्षकता" योग्य प्रकारे प्रतिबिंबित करतो, तर स्थिती *s'* वर आपण *a'* अॅक्शन निवडू, जो *Q(s',a')* च्या जास्तीत जास्त मूल्याशी संबंधित आहे. त्यामुळे, स्थिती *s* वर आपल्याला मिळणारा सर्वोत्तम संभाव्य भविष्यातील रिवॉर्ड परिभाषित केला जाईल म्हणून `max`
+समजा आपण आताच्या स्थिती *s* वर आहोत, आणि पुढील स्थिती *s'* कडे चालायचे आहे. असे केल्यास, आपल्याला तत्काळ पारितोषिक *r(s,a)* मिळेल, जे पारितोषिक फंक्शनने व्याख्यित आहे, आणि भविष्यातील काही पारितोषिकही मिळेल. आपण समजून घेऊ की आपला Q-टेबल प्रत्येक क्रियेची "आकर्षकता" योग्य रीतीने दर्शवतो, तर स्थिती *s'* मध्ये आपण अशी क्रिया *a* निवडू ज्याची किंमत *Q(s',a')* सर्वाधिक असेल. त्यामुळे स्थिती *s* वर मिळणारे सर्वोत्तम भविष्यातील पारितोषिक `max`a'*Q(s',a')* (येथे सर्व शक्य क्रिया *a'* वरून सर्वाधिक मूल्य निवडले जाते) असेल.
-## धोरण तपासणे
+हे आपल्याला **बेलमन सूत्र** देते, जे स्थिती *s*, क्रिया *a* साठी Q-टेबलचे मूल्य कसे गणना करावे ते सांगते:
-Q-Table प्रत्येक स्थितीतील प्रत्येक क्रियेच्या "आकर्षकतेची" यादी देते, त्यामुळे आपल्या जगात कार्यक्षम नेव्हिगेशन परिभाषित करण्यासाठी ते वापरणे सोपे आहे. सर्वात सोप्या प्रकरणात, आपण Q-Table मधील सर्वाधिक मूल्याशी संबंधित क्रिया निवडू शकतो: (कोड ब्लॉक 9)
+
+
+इथे γ हे **डिस्काउंट फॅक्टर** आहे जे ठरवते की आपण वर्तमान पारितोषिक किती प्रमाणात भविष्याच्या पारितोषिकापेक्षा जास्त महत्व देऊ इच्छिता.
+
+## शिक्षण अल्गोरिदम
+
+मागील समीकरणानुसार, आपण आता आपला शिक्षण अल्गोरिदमचे छद्म-कोड लिहू शकतो:
+
+* सर्व स्थिती आणि क्रिया साठी Q-टेबल Q समान किमतीने आरंभ करा
+* शिक्षण गती α ← 1 सेट करा
+* अनेक वेळा सिम्युलेशन पुन्हा पुन्हा चालवा
+ 1. यादृच्छिक स्थितीत सुरू करा
+ 1. पुन्हा सांगा
+ 1. स्थिती *s* वरील क्रिया *a* निवडा
+ 2. क्रिया अंमलात आणा आणि नवीन स्थिती *s'* वर जा
+ 3. जर आपण गेम संपण्याच्या स्थितीवर पोहोचलो, किंवा एकूण पारितोषिक खूप कमी असेल - सिम्युलेशन थांबवा
+ 4. नवीन स्थितीत पारितोषिक *r* गणना करा
+ 5. बेलमन समीकरणानुसार Q-फंक्शन अद्ययावत करा: *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ maxa'Q(s',a'))*
+ 6. *s* ← *s'*
+ 7. एकूण पारितोषिक अद्ययावत करा आणि α कमी करा.
+
+## उपयोग vs. अन्वेषण
+
+वर दिलेल्या अल्गोरिदममध्ये, आपण तपशीलवार सांगितले नाही की टप्पा 2.1 मध्ये क्रिया कशी निवडायची. जर आपण यादृच्छिकपणे क्रिया निवडत असाल, तर आपण पर्यावरणाचा अनियमित **अन्वेषण** करणार आहोत, आणि बहुधा आपण वारंवार मरणार आहोत तसेच ज्या भागात आपण निघणार नाही, तिथे गुणांकन करू शकु. एक पर्यायी पद्धत म्हणजे आधीच ज्ञात असलेल्या Q-टेबल मूल्यांचा **उपयोग** करून सर्वोत्तम क्रिया (जिचे Q-मूल्य जास्त आहे) निवडणे. परंतु यामुळे आपण इतर स्थिती अन्वेषण करू शकणार नाही आणि कदाचित आपण सर्वोत्तम समाधान सापडणार नाही.
+
+त्यामुळे, सर्वोत्तम पद्धत म्हणजे अन्वेषण आणि उपयोग यांच्यात संतुलन साधणे. हे असे करता येते की स्थिती *s* वरील क्रिया Q-टेबलमधील मूल्यांची प्रमाणानुसार निवडली जाते. सुरुवातीला, जेव्हा Q-टेबल मुळे सर्व मूल्य समान असतात, तेव्हा ही निवड रँडम असेल, पण जसे आपण पर्यावरणाबद्दल अधिक शिकू, आपल्याला अधिक शक्यता असेल की आपण आदर्श मार्गाचा अवलंब करू, तसेच एजंटला थोड्या वेळा अन्वेषित मार्ग निवडण्याची संधी देऊ.
+
+## पायथन अंमलबजावणी
+
+आपण आता शिक्षण अल्गोरिदम अंमलात आणण्यास तयार आहोत. त्याआधी, आपल्याला एक फंक्शन हवे जे Q-टेबलमधील कोणत्याही संख्यांना संबंधित क्रियांसाठी संभाव्यता व्हेक्टरमध्ये रूपांतरित करेल.
+
+1. `probs()` नावाचे फंक्शन तयार करा:
+
+ ```python
+ def probs(v,eps=1e-4):
+ v = v-v.min()+eps
+ v = v/v.sum()
+ return v
+ ```
+
+ आपण मूळ व्हेक्टरमध्ये काही `eps` घालतो ज्यामुळे सुरुवातीला सर्व घटक समान असताना 0 ने भागाकार टाळता येते.
+
+5000 प्रयोगांद्वारे, ज्याला **epochs** म्हणतात, हा अल्गोरिदम चालवा: (कोड ब्लॉक 8)
+```python
+ for epoch in range(5000):
+
+ # प्रारंभिक बिंदू निवडा
+ m.random_start()
+
+ # सफर सुरु करा
+ n=0
+ cum_reward = 0
+ while True:
+ x,y = m.human
+ v = probs(Q[x,y])
+ a = random.choices(list(actions),weights=v)[0]
+ dpos = actions[a]
+ m.move(dpos,check_correctness=False) # आम्ही खेळाडूला बोर्डच्या बाहेर जाण्याची परवानगी देतो, ज्यामुळे एपिसोड समाप्त होतो
+ r = reward(m)
+ cum_reward += r
+ if r==end_reward or cum_reward < -1000:
+ lpath.append(n)
+ break
+ alpha = np.exp(-n / 10e5)
+ gamma = 0.5
+ ai = action_idx[a]
+ Q[x,y,ai] = (1 - alpha) * Q[x,y,ai] + alpha * (r + gamma * Q[x+dpos[0], y+dpos[1]].max())
+ n+=1
+```
+
+हा अल्गोरिदम चालवल्यानंतर, Q-टेबल अद्ययावत होईल ज्यामुळे प्रत्येक पावलाच्या वेगळ्या क्रियांना आकर्षकता स्पष्ट होईल. आपण Q-टेबलसाठी एका व्हेक्टरचे प्लॉट करून दाखवू शकतो जे प्रत्येक सेल्युलरवर इच्छित निर्देश दर्शवेल. सोपेसाठी, आम्ही बाणाच्या टोकाऐवजी एक लहान वर्तुळ रेखाटतो.
+
+
+
+## धोरण तपासणी
+
+Q-टेबलमध्ये प्रत्येक क्रियेची आकर्षकता सूचीबद्ध असल्यामुळे, याचा वापर करून आपल्याला आपल्या जगात प्रभावी मार्ग चालवता येतो. सर्वात सोप्या प्रकरणात, आपण सर्वाधिक Q-टेबल मूल्य असलेल्या क्रियेला निवडू शकतो: (कोड ब्लॉक 9)
```python
def qpolicy_strict(m):
@@ -198,17 +274,18 @@ def qpolicy_strict(m):
walk(m,qpolicy_strict)
```
-> वरील कोड काही वेळा चालवून पाहिल्यास, कधीकधी तो "अडकतो" असे तुम्हाला जाणवेल, आणि तुम्हाला नोटबुकमधील STOP बटण दाबून तो थांबवावा लागतो. असे होण्याचे कारण म्हणजे काहीवेळा दोन स्थिती "ऑप्टिमल Q-Value" च्या दृष्टीने एकमेकांकडे "दर्शवतात", अशा परिस्थितीत एजंट त्या स्थितींमध्ये सतत फिरत राहतो.
-## 🚀चॅलेंज
+> आपण वरील कोड काही वेळा चालवण्याचा प्रयत्न केला तर कधी कधी तो "थांबतो" असं तुम्हाला दिसू शकतं, आणि तुम्हाला त्याला थांबवण्यासाठी नोटबुकमध्ये STOP बटन दाबावं लागतं. हे असं होतं कारण असे परिस्थिती असू शकतात जिथे दोन अवस्था परस्परांच्या अनुकूल Q-मूल्याच्या संदर्भात "सूचित" करतात, अशा स्थितीत एजंट त्या अवस्थांमध्ये अनंतकाळ हालचाल करत राहतो.
+
+## 🚀आव्हान
-> **कार्य 1:** `walk` फंक्शनमध्ये बदल करून पथाची जास्तीत जास्त लांबी एका विशिष्ट टप्प्यांपर्यंत (उदा. 100) मर्यादित करा आणि वरील कोड कधीकधी ही मूल्ये परत करत असल्याचे पाहा.
+> **कार्य 1:** `walk` फंक्शनमध्ये मार्गाची कमाल लांबी काही निश्चित स्टेपपर्यंत (उदा., १००) मर्यादित करा, आणि वरील कोडमध्ये कधीकधी हा मूल्य परत येते ते पाहा.
-> **कार्य 2:** `walk` फंक्शनमध्ये बदल करून असे करा की ते आधीच भेट दिलेल्या ठिकाणी परत जाऊ शकणार नाही. यामुळे `walk` लूप होण्यापासून रोखले जाईल, परंतु एजंट अजूनही अशा ठिकाणी "अडकू" शकतो जिथून तो बाहेर पडू शकत नाही.
+> **कार्य 2:** `walk` फंक्शनमध्ये असे बदल करा की ते आधी जिथे गेले आहे तेथे परत जाऊ नये. यामुळे `walk` मध्ये लूप होण्यापासून टाळता येईल, परंतु एजंट काही ठिकाणी "अडकून" जाऊ शकतो ज्यापासून तो सुटू शकत नाही.
## नेव्हिगेशन
-प्रशिक्षणादरम्यान वापरलेले धोरण अधिक चांगले नेव्हिगेशन धोरण ठरेल, जे शोषण आणि अन्वेषण यांचे संयोजन करते. या धोरणात, आम्ही Q-Table मधील मूल्यांच्या प्रमाणात प्रत्येक क्रिया निवडू. ही रणनीती अजूनही एजंटला आधीच शोधलेल्या स्थानावर परत येण्याची शक्यता ठेवते, परंतु, खालील कोडमधून तुम्ही पाहू शकता की, ती इच्छित स्थानापर्यंत पोहोचण्यासाठी खूपच कमी सरासरी पथ लांबी देते (लक्षात ठेवा की `print_statistics` सिम्युलेशन 100 वेळा चालवते): (कोड ब्लॉक 10)
+चांगली नेव्हिगेशन धोरण म्हणजे जशी आपण प्रशिक्षणादरम्यान वापरली होती, ज्यामध्ये उपभोग आणि शोध दोन्हींचा समावेश आहे. या धोरणानुसार, आपण प्रत्येक क्रिया ठरलेल्या शक्यतेने निवडू, जी Q-टेबलमधील मूल्यांशी प्रमाणित आहे. या धोरणामुळेही एजंट कधी कधी आधीच शोधलेल्या स्थितीकडे परत येऊ शकतो, पण खालील कोडमधून दिसते की परिणामी इच्छित ठिकाणापर्यंतचा सरासरी मार्ग खूपच कमी होतो (लक्षात ठेवा `print_statistics` हे सिम्युलेशन १०० वेळा चालवते): (कोड ब्लॉक १०)
```python
def qpolicy(m):
@@ -220,28 +297,32 @@ def qpolicy(m):
print_statistics(qpolicy)
```
-हा कोड चालवल्यानंतर, तुम्हाला आधीच्या तुलनेत खूपच कमी सरासरी पथ लांबी मिळेल, साधारणतः 3-6 च्या दरम्यान.
+हा कोड चालवल्यानंतर, तुम्हाला पूर्वीपेक्षा खूपच कमी सरासरी मार्ग लांबी मिळेल, अंदाजे ३-६ च्या दरम्यान.
+
+## शिक्षण प्रक्रियेची तपासणी
-## शिकण्याच्या प्रक्रियेचा अभ्यास
+जसे आपण म्हणालो, शिक्षण प्रक्रिया म्हणजे समस्येच्या संरचनेबद्दल मिळालेल्या ज्ञानाचा शोध आणि उपभोग यांचा समतोल आहे. आपण पाहिले की शिकण्याचे निकाल (एजंटला उद्दिष्टाचा लहान मार्ग शोधण्यास मदत करण्याची क्षमता) सुधारली आहे, परंतु शिक्षण प्रक्रियेदरम्यान सरासरी मार्गाची लांबी कशी वागते हे पाहणे देखील मनोरंजक आहे:
-जसे आपण नमूद केले आहे, शिकण्याची प्रक्रिया ही अन्वेषण आणि समस्या जागेच्या संरचनेबद्दल मिळालेल्या ज्ञानाच्या अन्वेषण यामधील संतुलन आहे. आपण पाहिले आहे की शिकण्याचे परिणाम (एजंटला लक्ष्यापर्यंत पोहोचण्यासाठी लहान पथ शोधण्यात मदत करण्याची क्षमता) सुधारली आहे, परंतु शिकण्याच्या प्रक्रियेदरम्यान सरासरी पथ लांबी कशी वागते हे पाहणे देखील मनोरंजक आहे:
+
-## शिकवणुकीचा सारांश
+शिकण्याचा सारांश असा करता येईल:
-- **सरासरी पथ लांबी वाढते**. सुरुवातीला, सरासरी पथ लांबी वाढते असे दिसते. याचे कारण असे असू शकते की जेव्हा आपल्याला वातावरणाबद्दल काहीच माहिती नसते, तेव्हा आपण वाईट स्थितींमध्ये, जसे की पाणी किंवा लांडगा, अडकण्याची शक्यता असते. जसजसे आपण अधिक शिकतो आणि हे ज्ञान वापरतो, तसतसे आपण वातावरणाचा अधिक वेळ अन्वेषण करू शकतो, परंतु तरीही आपल्याला सफरचंद कुठे आहेत याची फारशी माहिती नसते.
+- **सरासरी मार्गाची लांबी वाढते**. येथे आपण पाहतो की सुरुवातीला सरासरी मार्ग लांबतो. कदाचित कारण असं की जेव्हा आपल्याला वातावरणाबद्दल काहीच माहिती नसते, तेव्हा आपण वाईट स्थितींमध्ये, जसे पाणी किंवा लांडगा, अडकू शकतो. जसे आपण अधिक शिकतो आणि हे ज्ञान वापरायला सुरुवात करतो, आपण वातावरण अधिक काळ तपासू शकतो, परंतु आपल्याला सफरचंदी कुठे आहेत हे चांगलं माहितच नसतं.
-- **पथ लांबी कमी होते, जसजसे आपण अधिक शिकतो**. एकदा आपण पुरेसे शिकलो की, एजंटसाठी लक्ष्य साध्य करणे सोपे होते, आणि पथ लांबी कमी होऊ लागते. परंतु, आपण अजूनही अन्वेषणासाठी खुले असतो, त्यामुळे आपण अनेकदा सर्वोत्तम पथापासून दूर जातो आणि नवीन पर्यायांचा शोध घेतो, ज्यामुळे पथ लांब होतो.
+- **जसे आपल्याला अधिक ज्ञान होते तसंच मार्गाचा लांबी कमी होते**. एकदा आपण भरपूर शिकल्यावर, एजंटसाठी उद्दिष्ट गाठणं सोपं होतं आणि मार्गाची लांबी कमी होऊ लागते. तरीही, आपण शोधासाठी उघडे आहोत, त्यामुळे आपण चांगल्या मार्गापासून कधी कधी विचलित होतो आणि नवीन पर्याय शोधतो, ज्यामुळे मार्ग अनुकूलतेपेक्षा थोडा लांब होतो.
-- **लांबी अचानक वाढते**. या ग्राफवर आपण हे देखील पाहतो की, एका टप्प्यावर लांबी अचानक वाढली. याचा अर्थ प्रक्रियेचा अनिश्चित स्वभाव आहे, आणि कधीकधी आपण Q-Table गुणांक नवीन मूल्यांसह अधिलेखित करून "बिघडवू" शकतो. हे आदर्शतः शिकण्याचा दर कमी करून (उदाहरणार्थ, प्रशिक्षणाच्या शेवटी, आपण Q-Table मूल्ये फक्त लहान मूल्याने समायोजित करतो) कमी केले पाहिजे.
+- **लांबी अचानक वाढते**. या ग्राफवर आणखी एक गोष्ट आपण पाहतो ती म्हणजे काही ठिकाणी लांबी अचानक वाढली. हे प्रक्रियेच्या संयोगात्मक स्वरूपाचे संकेत आहे, आणि आपण वाटतं काही वेळेस Q-टेबलचे गुणाकार नवीन मुल्यांनी बदलून त्याचे नुकसान करू शकतो. प्रशिक्षणाच्या शेवटी उदाहरणार्थ, आपण Q-टेबलचे मूल्य लहान प्रमाणातच सुधारतो, हे कमीत कमी करावे.
-एकूणच, हे लक्षात ठेवणे महत्त्वाचे आहे की शिकण्याच्या प्रक्रियेचे यश आणि गुणवत्ता शिकण्याचा दर, शिकण्याचा दर घट, आणि सवलत घटक यासारख्या पॅरामीटर्सवर मोठ्या प्रमाणात अवलंबून असते. यांना **हायपरपॅरामीटर्स** म्हणतात, जे **पॅरामीटर्स** पासून वेगळे आहेत, जे आपण प्रशिक्षणादरम्यान ऑप्टिमाइझ करतो (उदाहरणार्थ, Q-Table गुणांक). सर्वोत्तम हायपरपॅरामीटर मूल्ये शोधण्याच्या प्रक्रियेस **हायपरपॅरामीटर ऑप्टिमायझेशन** म्हणतात, आणि यासाठी स्वतंत्र विषय आवश्यक आहे.
+एकूणच, हे लक्षात ठेवणं महत्त्वाचं आहे की शिकण्याच्या प्रक्रियेचा यश आणि गुणवत्ता अनेक घटकांवर अवलंबून असते, जसे शिक्षण दर, शिक्षण दराचा घट, आणि सूट घटक. यांना अनेकदा **हायपरपॅरामीटर्स** म्हणतात, जे प्रशिक्षणादरम्यान ऑप्टिमाइझ होणाऱ्या **पॅरामीटर्स** (उदा. Q-टेबल गुणाकार) यांतून वेगळे आहेत. उत्तम हायपरपॅरामीटर मूल्य शोधण्याच्या प्रक्रियेला **हायपरपॅरामीटर ऑप्टिमायझेशन** म्हणतात, आणि हे स्वतंत्र विषय आहे.
-## [व्याख्यानानंतरचा क्विझ](https://ff-quizzes.netlify.app/en/ml/)
+## [व्याख्यानानंतरची क्विझ](https://ff-quizzes.netlify.app/en/ml/)
## असाइनमेंट
-[एक अधिक वास्तववादी जग](assignment.md)
+[अधिक वास्तववादी जग](assignment.md)
---
-**अस्वीकरण**:
-हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील मूळ दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
+
+**अस्वीकरण**:
+हा दस्तऐवज 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/README.md b/translations/mr/8-Reinforcement/2-Gym/README.md
index d6ff9d739..158f8d5a9 100644
--- a/translations/mr/8-Reinforcement/2-Gym/README.md
+++ b/translations/mr/8-Reinforcement/2-Gym/README.md
@@ -1,14 +1,34 @@
-## पूर्वअट
+# कार्टपोल स्केटिंग
-या धड्यात, आम्ही **OpenAI Gym** नावाच्या लायब्ररीचा वापर विविध **परिसरांचे** अनुकरण करण्यासाठी करणार आहोत. तुम्ही हा धडा स्थानिकरित्या (उदा. Visual Studio Code मधून) चालवू शकता, अशा वेळी अनुकरण एका नवीन विंडोमध्ये उघडेल. ऑनलाइन कोड चालवताना, तुम्हाला कोडमध्ये काही बदल करावे लागू शकतात, जसे की [येथे](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7) वर्णन केले आहे.
+मागील धड्यात आपण ज्या समस्येचे समाधान करत होतो ती एक खेळणी समस्या वाटू शकते, जी खरोखरच वास्तव जीवनातील परिस्थितीसाठी लागू नाही असे वाटू शकते. असे नाही, कारण अनेक वास्तविक जगातील समस्या देखील हीच परिस्थिती सामायिक करतात - ज्यामध्ये चेस किंवा गो खेळणे देखील आहे. त्या सारखा आहेत, कारण आपल्याकडे एक फळीपाटी असून विशिष्ट नियमांसह एका **विभाजित स्थिती** असते.
+
+## [पूर्व व्याख्यान क्विझ](https://ff-quizzes.netlify.app/en/ml/)
+
+## परिचय
+
+या धड्यात आपण Q-लर्निंगचे तुमचेच तत्त्वज्ञान सतत असलेल्या अवस्थेशी लागू करू, म्हणजे एक स्थिती जी एका किंवा अधिक वास्तविक संख्या द्वारे दिली जाते. आपण पुढील समस्येवर काम करू:
+
+> **समस्या**: जर पीटरला लांडग्यापासून दूर जायचे असेल, तर त्याला वेगाने हालचाल करता येणे आवश्यक आहे. आपण पाहू की पीटर कसे स्केट करू शकतो, विशेषत: संतुलन टिकवण्यासाठी Q-लर्निंग वापरून.
+
+
+
+> पीटर आणि त्याचे मित्र लांडग्यापासून दूर जाण्यासाठी सर्जनशील होतात! छायाचित्र [जेन लूपर](https://twitter.com/jenlooper) यांचे.
+
+आपण संतुलनाचे एक सोप्या रूप म्हणून **कार्टपोल** समस्या वापरणार आहोत. कार्टपोल जगात, आपल्याकडे एक आडवी स्लायडर आहे जी डावीकडे किंवा उजवीकडे हलू शकते, आणि उद्दिष्ट स्लायडरच्या वर एका उभ्या पोलला संतुलित ठेवणे आहे.
+
+
+
+## पूर्वअटी
+
+या धड्यात, आपण **OpenAI Gym** नावाची लायब्ररी वापरणार आहोत वेगवेगळ्या **परिस्थितींचा** अनुकरण करण्यासाठी. आपण हा धडा स्थानिकरित्या चालवू शकता (उदा. Visual Studio Code वरून), त्या स्थितीत अनुकरण नवीन विंडोमध्ये उघडेल. ऑनलाईन कोड चालवताना, कधीकधी आपल्याला कोडमध्ये काही बदल करावे लागू शकतात, जसे [येथे](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7) दिले आहे.
## OpenAI Gym
-मागील धड्यात, खेळाचे नियम आणि स्थिती आम्ही स्वतः परिभाषित केलेल्या `Board` वर्गाद्वारे दिले होते. येथे आम्ही एक विशेष **अनुकरण वातावरण** वापरणार आहोत, जे संतुलन राखणाऱ्या खांबाच्या भौतिकशास्त्राचे अनुकरण करेल. reinforcement learning अल्गोरिदम प्रशिक्षणासाठी सर्वात लोकप्रिय अनुकरण वातावरणांपैकी एक [Gym](https://gym.openai.com/) आहे, जे [OpenAI](https://openai.com/) द्वारे देखरेख केली जाते. या जिमचा वापर करून आपण विविध **परिसर** तयार करू शकतो, जसे की cartpole अनुकरण ते Atari गेम्स.
+मागील धड्यात, खेळाचे नियम आणि स्थिती आपण `Board` वर्गाच्या साहाय्याने निश्चित केले आहे. येथे आपण एक विशेष **सिम्युलेशन पर्यावरण** वापरणार आहोत, जे संतुलन पोलच्या भौतिकशास्त्राचे अनुकरण करेल. Q-लर्निंग अल्गोरिदमसाठी प्रशिक्षणासाठी सर्वात लोकप्रिय सिम्युलेशन पर्यावरणांपैकी एक म्हणजे [Gym](https://gym.openai.com/), जे [OpenAI](https://openai.com/) द्वारे राखले जाते. या जिमचा वापर करून आपण कार्टपोल सिम्युलेशनपासून अटारी गेम्सपर्यंतचे वेगळे **पर्यावरण** तयार करू शकतो.
-> **टीप**: OpenAI Gym मधील इतर उपलब्ध वातावरण तुम्ही [येथे](https://gym.openai.com/envs/#classic_control) पाहू शकता.
+> **टीप**: आपण OpenAI Gym कडून उपलब्ध असलेली इतर पर्यावरणे [येथे](https://gym.openai.com/envs/#classic_control) पाहू शकता.
-सुरुवातीला, जिम स्थापित करूया आणि आवश्यक लायब्ररी आयात करूया (कोड ब्लॉक 1):
+प्रथम, जिम स्थापित करू आणि आवश्यक लायब्ररी आयात करू (कोड ब्लॉक 1):
```python
import sys
@@ -20,13 +40,13 @@ import numpy as np
import random
```
-## व्यायाम - cartpole वातावरण प्रारंभ करा
+## सराव - कार्टपोल पर्यावरण प्रारंभ करा
-cartpole संतुलन समस्येसोबत काम करण्यासाठी, आपल्याला संबंधित वातावरण प्रारंभ करणे आवश्यक आहे. प्रत्येक वातावरणाशी संबंधित असते:
+कार्टपोल संतुलन समस्येसाठी काम करण्यासाठी, आपल्याला संबंधित पर्यावरण सुरू करणे आवश्यक आहे. प्रत्येक पर्यावरणाला जोडलेले असते:
-- **Observation space** जे आपल्याला वातावरणाकडून मिळणाऱ्या माहितीची रचना परिभाषित करते. cartpole समस्येसाठी, आपल्याला खांबाची स्थिती, वेग आणि इतर काही मूल्ये मिळतात.
+- **निरीक्षण अवकाश** जे पर्यावरणाकडून मिळालेल्या माहितीच्या रचनेची व्याख्या करते. कार्टपोल समस्येसाठी, आपल्याला पोलची स्थिती, वेग आणि काही अन्य मूल्ये मिळतात.
-- **Action space** जे संभाव्य क्रिया परिभाषित करते. आपल्या प्रकरणात action space discrete आहे आणि दोन क्रिया आहेत - **डावीकडे** आणि **उजवीकडे**. (कोड ब्लॉक 2)
+- **कार्यान्वयन अवकाश** जे शक्य त्या क्रियांची व्याख्या करते. आपल्या बाबतीत, कार्यान्वयन अवकाश विभाजित आहे, आणि दोन क्रियांचा समावेश आहे - **डावा** आणि **उजवा**. (कोड ब्लॉक 2)
1. प्रारंभ करण्यासाठी, खालील कोड टाइप करा:
@@ -37,11 +57,11 @@ cartpole संतुलन समस्येसोबत काम करण
print(env.action_space.sample())
```
-वातावरण कसे कार्य करते हे पाहण्यासाठी, 100 स्टेप्ससाठी एक लहान अनुकरण चालवूया. प्रत्येक स्टेपवर, आपण घेण्याची क्रिया प्रदान करतो - या अनुकरणात आम्ही फक्त `action_space` मधून एक क्रिया निवडतो.
+पर्यावरण कसे कार्य करते हे पाहण्यासाठी, आपण 100 चरणांसाठी एक छोटा सिम्युलेशन चालवू. प्रत्येक टप्प्यावर, आपण घ्यायची एक क्रिया प्रदान करतो - या सिम्युलेशनमध्ये आपण `action_space` मधून यादृच्छिक क्रिया निवडतो.
-1. खालील कोड चालवा आणि त्याचा परिणाम पहा.
+1. खालील कोड चालवा आणि त्याचे परिणाम पहा.
- ✅ लक्षात ठेवा की हा कोड स्थानिक Python इंस्टॉलेशनवर चालवणे अधिक चांगले आहे! (कोड ब्लॉक 3)
+ ✅ लक्षात ठेवा की हा कोड स्थानिक Python इंस्टॉलेशनवर चालवणे प्राधान्य दिले जाते! (कोड ब्लॉक 3)
```python
env.reset()
@@ -52,11 +72,11 @@ cartpole संतुलन समस्येसोबत काम करण
env.close()
```
- तुम्हाला खालील प्रतिमेसारखे काहीतरी दिसेल:
+ आपण या प्रतिमेसारखे काहीतरी पाहू शकता:
- 
+ 
-1. अनुकरणादरम्यान, आपल्याला निर्णय घेण्यासाठी निरीक्षणे मिळवणे आवश्यक आहे. प्रत्यक्षात, `step` फंक्शन वर्तमान निरीक्षणे, एक reward फंक्शन, आणि done फ्लॅग परत करते, जे अनुकरण सुरू ठेवण्यासारखे आहे की नाही हे सूचित करते: (कोड ब्लॉक 4)
+1. सिम्युलेशन दरम्यान, आपल्याला निरीक्षणे मिळवणे आवश्यक आहे ज्यावरून आपण निर्णय घेतो की कसे वागायचे. प्रत्यक्षात, step फंक्शन वर्तमान निरीक्षण, एक बक्षीस फंक्शन, आणि समाप्ती चिन्ह परत करते, जे सूचित करते की सिम्युलेशन चालू ठेवणे कारणीयर आहे की नाही: (कोड ब्लॉक 4)
```python
env.reset()
@@ -69,7 +89,7 @@ cartpole संतुलन समस्येसोबत काम करण
env.close()
```
- तुम्हाला नोटबुक आउटपुटमध्ये असे काहीतरी दिसेल:
+ आपण नोटबुक आउटपुटमध्ये अशा प्रकारचे काही पाहाल:
```text
[ 0.03403272 -0.24301182 0.02669811 0.2895829 ] -> 1.0
@@ -82,43 +102,43 @@ cartpole संतुलन समस्येसोबत काम करण
[ 0.17617249 0.35602306 -0.21873684 -0.90998894] -> 1.0
```
- अनुकरणाच्या प्रत्येक स्टेपवर परत येणारा observation व्हेक्टर खालील मूल्ये समाविष्ट करतो:
- - गाडीची स्थिती
- - गाडीचा वेग
- - खांबाचा कोन
- - खांबाचा फिरण्याचा दर
+ प्रत्येक सिम्युलेशन टप्प्यावर परत करण्यात येणारा निरीक्षण व्हेक्टर या मूल्यांचा समावेश करतो:
+ - कार्टची स्थिती
+ - कार्टचा वेग
+ - पोलचा कोन
+ - पोलचा फिरण्याचा दर
-1. त्या संख्यांचे किमान आणि जास्तीत जास्त मूल्य मिळवा: (कोड ब्लॉक 5)
+1. त्या संख्यांचे किमान व कमाल मूल्य मिळवा: (कोड ब्लॉक 5)
```python
print(env.observation_space.low)
print(env.observation_space.high)
```
- तुम्ही हे देखील लक्षात घेऊ शकता की प्रत्येक अनुकरण स्टेपवरील reward मूल्य नेहमी 1 असते. कारण आपले ध्येय जास्तीत जास्त वेळ टिकून राहणे आहे, म्हणजे खांबाला शक्य तितक्या उभ्या स्थितीत ठेवणे.
+ आपण हे देखील नोटिस करू शकता की प्रत्येक सिम्युलेशन टप्प्यावर बक्षीस मूल्य नेहमी 1 असते. कारण आपला उद्दिष्ट जितकं शक्य तितकं टिकून राहाणे आहे, म्हणजे पोलला दीर्घकाळ उभं ठेवणे.
- ✅ प्रत्यक्षात, CartPole अनुकरण सोडवले जाते जर आपण 100 सलग चाचण्यांमध्ये 195 च्या सरासरी reward मिळवू शकलो.
+ ✅ प्रत्यक्षात, कार्टपोल सिम्युलेशन 100 सलग चाचण्यांवर 195 ची सरासरी बक्षीस मिळाल्यास तो सोडवलेला समजला जातो.
-## स्थितीचे discretization
+## स्थितीचे विभाजन
-Q-Learning मध्ये, आपल्याला Q-Table तयार करणे आवश्यक आहे जे प्रत्येक स्थितीत काय करावे हे परिभाषित करते. हे करण्यासाठी, स्थिती **discreet** असणे आवश्यक आहे, अधिक स्पष्टपणे, त्यात मर्यादित संख्येने discrete मूल्ये असावीत. म्हणून, आपल्याला काहीतरी करून आपली निरीक्षणे **discretize** करणे आवश्यक आहे, त्यांना मर्यादित स्थितींच्या संचाशी नकाशा करणे.
+Q-लर्निंगमध्ये, आपल्याला Q-टेबल तयार करणे आवश्यक आहे जे प्रत्येक स्थितीवर काय करावे हे घोषित करते. हे करण्यासाठी, आपल्याला स्थिती **विभाजित** करणे आवश्यक आहे, म्हणजे ती एका समाप्त संख्या असलेल्या विभाजित मूल्यांचे संच असावी. त्यामुळे आपल्याला आपल्या निरीक्षणांचे कसे तरी विभाजन करावे लागेल, ज्यामुळे त्यांना स्थितींच्या समाप्त संचाशी नकाशा करता येईल.
-हे करण्याचे काही मार्ग आहेत:
+हे करण्यासाठी काही मार्ग आहेत:
-- **Bins मध्ये विभागणे**. जर आपल्याला एखाद्या मूल्याचा अंतराल माहित असेल, तर आपण या अंतरालाला काही **bins** मध्ये विभागू शकतो आणि नंतर त्या मूल्याला त्याच्या bin क्रमांकाने बदलू शकतो. हे numpy च्या [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html) पद्धतीचा वापर करून केले जाऊ शकते. या प्रकरणात, आपल्याला स्थितीचा आकार अचूकपणे माहित असेल, कारण तो डिजिटलायझेशनसाठी निवडलेल्या bins च्या संख्येवर अवलंबून असेल.
+- **बिन्समध्ये विभाजित करा**. जर आपल्याला एखाद्या मूल्याचा अंतर माहित असेल, तर आपण त्या अंतराला काही **बिन्स** मध्ये विभाजित करू शकतो, आणि नंतर मूल्याला त्या बिन क्रमांकाने बदलू शकतो. हे numpy च्या [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html) पद्धतीने केले जाऊ शकते. या प्रकरणी, आपण अचूकपणे स्थितीचा आकार जाणून घेऊ, कारण तो आपण निवडलेल्या बिन्सच्या संख्येवर अवलंबून असेल.
+
+✅ आपण linear interpolation वापरू शकतो ज्यामुळे मूल्ये काही समाप्त अंतरात (उदा. -20 ते 20) आणता येतात, आणि नंतर संख्या पूर्णांकांमध्ये वळवता येतात. हे आपल्याला स्थितीच्या आकारावर थोडेसेच नियंत्रण देते, विशेषतः जर आपण इनपुट मूल्यांची अचूक रेंज न जाणा तर. उदा. आपल्या प्रकरणी 4 पैकी 2 मूल्यांना वर/खाली मर्यादा नाही, ज्यामुळे अनंत स्थिती संभवतात.
-✅ आपण linear interpolation वापरून मूल्ये काही मर्यादित अंतरालात (उदा. -20 ते 20) आणू शकतो आणि नंतर rounding करून संख्यांना integers मध्ये रूपांतरित करू शकतो. यामुळे स्थितीच्या आकारावर थोडेसे नियंत्रण मिळते, विशेषतः जर आपल्याला इनपुट मूल्यांच्या अचूक श्रेणी माहित नसतील. उदाहरणार्थ, आपल्या प्रकरणात 4 पैकी 2 मूल्ये त्यांच्या वरच्या/खालच्या मर्यादांवर मर्यादित नाहीत, ज्यामुळे स्थितींची अमर्यादित संख्या होऊ शकते.
+आमच्या उदाहरणात, आपण दुसरा दृष्टिकोन वापरणार आहोत. तुम्हाला नंतर दिसेल की, अपरिभाषित वर/खाली मर्यादा असूनही, त्या मूल्ये क्वचितच निश्चित समाप्त अंतराच्या बाहेर जातात, त्यामुळे अत्यधिक मूल्यांच्या त्या स्थिती फार क्वचितच होतात.
-आपल्या उदाहरणात, आपण दुसऱ्या पद्धतीचा वापर करू. तुम्ही नंतर लक्षात घेऊ शकता की अपरिभाषित वरच्या/खालच्या मर्यादांनंतरही, ती मूल्ये क्वचितच काही मर्यादित अंतरालाच्या बाहेर जातात, त्यामुळे ती स्थिती ज्यामध्ये extreme मूल्ये असतात, फारच दुर्मिळ असतील.
-
-1. येथे एक फंक्शन आहे जे आपल्या मॉडेलमधून निरीक्षण घेईल आणि 4 integer मूल्यांच्या tuple तयार करेल: (कोड ब्लॉक 6)
+1. ही फंक्शन आहे जी आपल्या मॉडेलकडून निरीक्षण घेते आणि 4 पूर्णांकांच्या ट्युपलची निर्मिती करते: (कोड ब्लॉक 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)
+1. आणखी एक बिन्सचा वापर करून विभाजन पद्धत पाहूया: (कोड ब्लॉक 7)
```python
def create_bins(i,num):
@@ -126,17 +146,17 @@ Q-Learning मध्ये, आपल्याला Q-Table तयार कर
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
+ ints = [(-5,5),(-2,2),(-0.5,0.5),(-2,2)] # प्रत्येक पॅरामीटरसाठी मूल्यांच्या अंतराल
+ nbins = [20,20,10,10] # प्रत्येक पॅरामीटरसाठी बिनची संख्या
bins = [create_bins(ints[i],nbins[i]) for i in range(4)]
def discretize_bins(x):
return tuple(np.digitize(x[i],bins[i]) for i in range(4))
```
-1. आता एक लहान अनुकरण चालवूया आणि त्या discrete वातावरण मूल्यांचे निरीक्षण करूया. `discretize` आणि `discretize_bins` दोन्ही वापरून पहा आणि फरक आहे का ते पहा.
+1. आता एक छोटा सिम्युलेशन चालवू आणि त्या विभाजित पर्यावरण मूल्यानिरीक्षण करू. तुम्ही या दोन्ही `discretize` आणि `discretize_bins` वापरून पहा आणि फरक आहे का ते बघा.
- ✅ `discretize_bins` bin क्रमांक परत करते, जे 0-आधारित असते. त्यामुळे इनपुट व्हेरिएबलच्या 0 च्या आसपासच्या मूल्यांसाठी ते अंतरालाच्या मध्यभागी असलेले क्रमांक (10) परत करते. `discretize` मध्ये, आम्ही आउटपुट मूल्यांच्या श्रेणीची काळजी घेतली नाही, त्यांना नकारात्मक होऊ दिले, त्यामुळे स्थिती मूल्ये shift झाली नाहीत आणि 0 म्हणजे 0. (कोड ब्लॉक 8)
+ ✅ discretize_bins बिन क्रमांक परत करते, जो 0-आधारित आहे. म्हणून इनपुट चलाच्या जवळच्या मूल्यांसाठी तो मध्यभागी असलेल्या संख्या (10) परत करतो. discretize मध्ये, आपण output मूल्या-च्या श्रेणीकडे लक्ष दिले नाही, त्यामुळे ते नकारात्मक देखील असू शकतात, परिणामी स्थिती मूल्ये हलवलेली नाहीत, आणि 0 म्हणजे 0.
```python
env.reset()
@@ -150,15 +170,15 @@ Q-Learning मध्ये, आपल्याला Q-Table तयार कर
env.close()
```
- ✅ `env.render` सुरू असलेली ओळ uncomment करा जर तुम्हाला वातावरण कसे कार्य करते ते पाहायचे असेल. अन्यथा तुम्ही ते background मध्ये चालवू शकता, जे जलद आहे. आम्ही Q-Learning प्रक्रियेदरम्यान या "अदृश्य" अंमलबजावणीचा वापर करू.
+ ✅ env.render ने सुरू होणारी ओळ अनकमेंट करा जर तुम्हाला पर्यावरण कसे कार्य करते हे पाहायचे असेल. अन्यथा तुम्ही त्याला पार्श्वभूमीत चालवू शकता, जे जलद आहे. आपला Q-लर्निंग प्रक्रियेदरम्यान आपण या "अदृश्य" कार्यान्वयनाचा वापर करू.
-## Q-Table ची रचना
+## Q-टेबलची रचना
-मागील धड्यात, स्थिती 0 ते 8 पर्यंतच्या संख्यांच्या साध्या जोड्या होती, त्यामुळे Q-Table ला numpy tensor द्वारे 8x8x2 आकाराने दर्शवणे सोयीचे होते. जर आपण bins discretization वापरतो, तर आपल्या स्थिती व्हेक्टरचा आकार देखील माहित आहे, त्यामुळे आपण समान दृष्टिकोन वापरू शकतो आणि स्थितीला 20x20x10x10x2 आकाराच्या array ने दर्शवू शकतो (येथे 2 म्हणजे action space चे परिमाण आहे, आणि पहिली परिमाणे observation space मधील प्रत्येक पॅरामीटरसाठी निवडलेल्या bins च्या संख्येशी संबंधित आहेत).
+मागील धड्यात, स्थिती साधी 0 ते 8 मधील दोन संख्यांचा जोडी होती, त्यामुळे Q-टेबल numpy टेन्सर म्हणून 8x8x2 च्या आकारात सादर करणे सोयीचे होते. जर आपण बिन्स विभाजन वापरले, तर स्थिती व्हेक्टरचा आकार देखील ज्ञात असतो, त्यामुळे आपण त्याच पद्धतीने स्थिती 20x20x10x10x2 आकाराच्या अॅरेने सादर करू शकतो (इथे 2 म्हणजे क्रियाविशिष्ट अवकाशाचा आकार, आणि पहिल्या परिमाणे निरीक्षण अवकाशातील प्रत्येक पॅरामीटरसाठी निवडलेल्या बिन्सची संख्या).
-तथापि, कधीकधी observation space च्या अचूक परिमाणे माहित नसतात. `discretize` फंक्शनच्या बाबतीत, आपल्याला कधीही खात्री नसते की आपली स्थिती काही मर्यादांमध्ये राहते, कारण काही मूळ मूल्ये मर्यादित नाहीत. त्यामुळे, आम्ही थोडा वेगळा दृष्टिकोन वापरू आणि Q-Table ला dictionary द्वारे दर्शवू.
+परंतु, कधी कधी निरीक्षण अवकाशाच्या अचूक परिमाणांचा माहित नसतो. `discretize` फंक्शनच्या बाबतीत, आपल्याला कधीही खात्री नसू शकते की आपली स्थिती ठराविक मर्यादेत राहील, कारण काही मूळ मूल्ये मर्यादित नाहीत. म्हणून, आपण थोडे वेगळे दृष्टीकोन वापरू आणि Q-टेबल डिक्शनरीच्या स्वरूपात सादर करू.
-1. *(state,action)* जोड्याचा dictionary key म्हणून वापर करा, आणि मूल्य Q-Table entry value शी संबंधित असेल. (कोड ब्लॉक 9)
+1. *(state, action)* या जोडीला डिक्शनरी की म्हणून वापरा, आणि मूल्य Q-टेबलमधील नोंदाशी जुळत असेल. (कोड ब्लॉक 9)
```python
Q = {}
@@ -168,38 +188,38 @@ Q-Learning मध्ये, आपल्याला Q-Table तयार कर
return [Q.get((state,a),0) for a in actions]
```
- येथे आम्ही `qvalues()` नावाचे फंक्शन देखील परिभाषित करतो, जे दिलेल्या स्थितीसाठी Q-Table मूल्यांची यादी परत करते जी सर्व संभाव्य क्रियांशी संबंधित असते. जर entry Q-Table मध्ये उपस्थित नसेल, तर आम्ही default म्हणून 0 परत करू.
+ येथे आपल्याला `qvalues()` फंक्शन सुध्दा ठरवायचे आहे, जे दिलेल्या स्थितीसाठी शक्य क्रियांसाठी Q-टेबलमधील मूल्यांची यादी परत करते. जर की Q-टेबल मध्ये उपस्थित नसेल तर आपण 0 परत करू.
-## चला Q-Learning सुरू करूया
+## चला Q-लर्निंग सुरू करूया
-आता आपण पीटरला संतुलन शिकवण्यासाठी तयार आहोत!
+आता आपण पीटरला संतुलन शिकवायला तयार आहोत!
-1. प्रथम, काही hyperparameters सेट करूया: (कोड ब्लॉक 10)
+1. प्रथम, काही हायपरपॅरामीटर सेट करूया: (कोड ब्लॉक 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 वर किती प्रमाणात प्राधान्य द्यावे हे दर्शवते.
+ येथे, `alpha` म्हणजे **लर्निंग दर** जो ठरवतो की प्रत्येक टप्प्यावर Q-टेबलमधील विद्यमान मूल्ये कितपत बदलावीत. मागील धड्यात आपण १ ने सुरुवात केली आणि नंतर प्रशिक्षणादरम्यान `alpha` कमी केलं. या उदाहरणात आपण सोपेपणासाठी ते स्थिर ठेवणार आहोत, आणि तुम्ही नंतर `alpha` मूल्यांवर प्रयोग करू शकता.
- `epsilon` म्हणजे **exploration/exploitation factor** जे ठरवते की आपल्याला exploration ला प्राधान्य द्यावे की exploitation ला. आपल्या अल्गोरिदममध्ये, आम्ही `epsilon` टक्केवारीच्या प्रकरणांमध्ये Q-Table मूल्यांनुसार पुढील क्रिया निवडू, आणि उर्वरित प्रकरणांमध्ये आम्ही random क्रिया execute करू. यामुळे आपल्याला शोध स्थानाच्या अशा भागांचा शोध घेता येईल जे आपण कधीही पाहिले नाहीत.
+ `gamma` म्हणजे **डिस्काउंट घटक** जो दर्शवतो की भविष्यातील बक्षीसाला वर्तमान बक्षीसापेक्षा किती प्राधान्य द्यायचे.
- ✅ संतुलनाच्या बाबतीत - random क्रिया (exploration) निवडणे चुकीच्या दिशेने random धक्का देण्यासारखे असेल, आणि खांबाने त्या "चुका" मधून संतुलन कसे पुनर्प्राप्त करावे ते शिकले पाहिजे.
+ `epsilon` म्हणजे **अन्वेषण/उत्पादनाचा घटक** जो ठरवतो की आपल्याला अन्वेषण प्राधान्य द्यायचा की उत्पादन. आमच्या अल्गोरिदममध्ये, `epsilon` प्रमाणे आपण Q-टेबल घटकांनुसार क्रिया निवडू, आणि उर्वरित प्रसंगी यादृच्छिक क्रिया करतो. यामुळे आपण अशा शोध क्षेत्रांचा अन्वेषण करू शकू जे पूर्वी कधीच पाहिलेले नाहीत.
-### अल्गोरिदम सुधारित करा
+ ✅ संतुलनाच्या दृष्टीने - यादृच्छिक क्रिया निवडण्याने (अन्वेषण) चुकीच्या दिशेने एक पंच मारण्यासारखे होईल, आणि पोलला त्या "चुकांवरून" संतुलन पुन्हा कसे मिळवायचे ते शिकावे लागेल.
-आपल्या मागील धड्यातील अल्गोरिदममध्ये दोन सुधारणा करू शकतो:
+### अल्गोरिदम सुधारणा
-- **सरासरी cumulative reward** गणना करा, अनेक अनुकरणांवर. आम्ही प्रत्येक 5000 iterations वर प्रगती print करू आणि त्या कालावधीतील cumulative reward ची सरासरी काढू. याचा अर्थ असा की जर आपण 195 पेक्षा जास्त गुण मिळवले - तर आपण समस्या सोडवली असे मानू शकतो, आणि आवश्यकतेपेक्षा उच्च गुणवत्तेसह.
+आपण मागील धड्यातील आपल्या अल्गोरिदममध्ये दोन सुधारणा करू शकतो:
-- **जास्तीत जास्त सरासरी cumulative परिणाम** `Qmax` गणना करा, आणि आम्ही त्या परिणामाशी संबंधित Q-Table साठवू. जेव्हा तुम्ही प्रशिक्षण चालवता तेव्हा तुम्हाला लक्षात येईल की कधीकधी सरासरी cumulative परिणाम कमी होतो, आणि आम्हाला प्रशिक्षणादरम्यान पाहिलेल्या सर्वोत्तम मॉडेलशी संबंधित Q-Table च्या मूल्ये ठेवायची आहेत.
+- **सरासरी संचयी बक्षीस मोजा**, अनेक सिम्युलेशन्सवर. आपण प्रत्येक 5000 पुनरावृत्तीवर प्रगती छापू आणि त्या कालावधीत संचयी बक्षीसाचा सरासरी काढू. म्हणजे जर 195 पेक्षा अधिक गुण मिळाले तर आपण समस्या सोडवलेली मानू, अगदी अधिक गुणवत्ता प्राप्त केली तरी.
+
+- **कमाल सरासरी संचयी निकाल मोजा**, `Qmax`, आणि त्या निकालाशी संबंधित Q-टेबल जतन करा. जेव्हा आपण प्रशिक्षण चालवता, तेव्हा कधीकधी सरासरी संचयी निकाल कमी होऊ लागतो, आणि आपण सर्वोत्कृष्ट मॉडेलसाठी Q-टेबलची मूल्ये जपू इच्छितो.
-1. प्रत्येक अनुकरणाच्या cumulative rewards `rewards` व्हेक्टरमध्ये गोळा करा जेणेकरून नंतर plotting करता येईल. (कोड ब्लॉक 11)
+1. प्रत्येक सिम्युलेशनच्या संचयी बक्षीस `rewards` व्हेक्टरमध्ये एकत्र करा पुढील प्लॉटिंगसाठी. (कोड ब्लॉक 11)
```python
def probs(v,eps=1e-4):
@@ -214,15 +234,15 @@ Q-Learning मध्ये, आपल्याला Q-Table तयार कर
obs = env.reset()
done = False
cum_reward=0
- # == do the simulation ==
+ # == सिम्युलेशन करा ==
while not done:
s = discretize(obs)
if random.random() Qmax:
@@ -240,25 +260,25 @@ Q-Learning मध्ये, आपल्याला Q-Table तयार कर
cum_rewards=[]
```
-तुम्ही या परिणामांमधून काय लक्षात घेऊ शकता:
+तुम्हाला त्या निकालांमधून काय दिसू शकते:
-- **आपल्या ध्येयाच्या जवळ**. आम्ही 100+ सलग अनुकरणांच्या सरासरी 195 cumulative rewards मिळवण्याच्या ध्येयाच्या खूप जवळ आहोत, किंवा आम्ही प्रत्यक्षात ते साध्य केले असेल! जरी आम्हाला कमी संख्या मिळाल्या तरी, आम्हाला माहित नाही, कारण आम्ही 5000 runs वर सरासरी काढतो, आणि औपचारिक निकषांमध्ये फक्त 100 runs आवश्यक आहेत.
+- **आपल्या उद्दिष्टाजवळ**. आपण 195 संचयी बक्षीस 100+ सलग सिम्युलेशन्समध्ये मिळवण्याच्या उद्दिष्टाजवळ आहोत किंवा कदाचित मिळवले आहे! कमी नंबर आले तरी फरक पडत नाही कारण आपण 5000 रनवर सरासरी काढली आहे, आणि अधिकृत निकषांनुसार फक्त 100 रन आवश्यक आहेत.
+
+- **बक्षीस कमी होणे सुरू होते**. कधीकधी बक्षीस कमी होण्यासाठी सुरुवात होते, याचा अर्थ असा की आपण आधीच शिकलेल्या Q-टेबलच्या मूल्यांना तशाप्रकारे बदलू शकतो जे परिस्थिती वाईट करतात.
-- **Reward कमी होतो**. कधीकधी reward कमी होतो, याचा अर्थ असा की आपण Q-Table मध्ये आधी शिकलेल्या मूल्यांना "नष्ट" करू शकतो आणि परिस्थिती अधिक वाईट बनवणाऱ्या नवीन मूल्यांसह बदलू शकतो.
+या निरीक्षणांचे स्पष्ट दर्शन प्रशिक्षण प्रगतीचे प्लॉटिंग केल्यावर होते.
-हे निरीक्षण प्रशिक्षण प्रगती plot केल्यावर अधिक स्पष्टपणे दिसते.
+## प्रशिक्षण प्रगतीचे प्लॉटिंग
-## प्रशिक्षण प्रगतीचे plotting
-
-प्रशिक्षणादरम्यान, आम्ही प्रत्येक iteration वर cumulative reward मूल्य `rewards` व्हेक्टरमध्ये गोळा केले आहे. जेव्हा आपण ते iteration क्रमांकाच्या विरोधात plot करतो तेव्हा ते असे दिसते:
+प्रशिक्षणादरम्यान, आपल्याला प्रत्येक पुनरावृत्तीवरील संचयी बक्षीस मूल्य `rewards` व्हेक्टरमध्ये जमा केले आहे. येथे आपण ते पुनरावृत्ती क्रमांकाशी कसे प्लॉट करू:
```python
plt.plot(rewards)
```
-
+
-या graph वरून काहीही सांगणे शक्य नाही, कारण stochastic प्रशिक्षण प्रक्रियेच्या स्वरूपामुळे प्रशिक्षण सत्रांची लांबी खूप वेगळी असते. या graph ला अधिक अर्थपूर्ण बनवण्यासाठी, आपण 100 चाचण्यांवर **running average** गणना करू शकतो. हे `np.convolve` वापरून सोयीस्करपणे केले जाऊ शकते: (कोड ब्लॉक 12)
+या ग्राफमधून काहीही सांगणे शक्य नाही, कारण यादृच्छिक प्रशिक्षण प्रक्रियेच्या निसर्गामुळे प्रशिक्षण सत्रांच्या लांबीत मोठा बदल असतो. या ग्राफचा अधिक अर्थ लावण्यासाठी, आपण 100 प्रयोगांच्या मालिकेवरील **रेल चालणारी सरासरी** काढू शकतो. हे `np.convolve` वापरून सोप्या प्रकारे करता येते: (कोड ब्लॉक 12)
```python
def running_average(x,window):
@@ -267,21 +287,24 @@ def running_average(x,window):
plt.plot(running_average(rewards,100))
```
-
+
+
+## हायपरपॅरामिटर्सचा बदल
+
+शिक्षण अधिक स्थिर करण्यासाठी, आपल्याला प्रशिक्षणादरम्यान काही हायपरपॅरामिटर्स समायोजित करणे उचित वाटते. विशेषतः:
+
+- **लर्निंग दरासाठी**, `alpha`, आपल्याला 1 च्या जवळील मूल्यांपासून सुरुवात करावी आणि नंतर ते कमी करत रहावे. काळाच्या ओघात, आपण Q-टेबलमधील चांगले शक्यतामान मिळवू, आणि त्यानुसार आपण त्यांना थोड्या प्रमाणात सुधारणा करावी जेणेकरून ते नवीन मूल्यांनी पूर्णपणे पुनर्लेखन होणार नाहीत.
-## hyperparameters बदलणे
+- **epsilon वाढवा**. आपल्याला `epsilon` हळूहळू वाढवायचा असू शकतो, ज्यामुळे अन्वेषण कमी होईल आणि उत्पादन अधिक होईल. कदाचित कमी `epsilon` ने सुरुवात करून जवळपास 1 पर्यंत वाढवणे उचित आहे.
-शिकणे अधिक स्थिर बनवण्यासाठी, प्रशिक्षणादरम्यान काही hyperparameters adjust करणे योग्य ठरेल. विशेषतः:
+> **कार्य 1**: हायपरपॅरामिटर्समधील मूल्यांशी प्रयोग करा आणि पहा की तुम्ही जास्त संचयी बक्षीस मिळवू शकता काय. तुम्ही 195 पेक्षा जास्त मिळवत आहात का?
-- **Learning rate** `alpha` साठी, आपण 1 च्या जवळपासच्या मूल्यांपासून सुरुवात करू शकतो आणि नंतर हा parameter कमी करत राहू शकतो. कालांतराने, आपल्याला Q-Table मध्ये चांगले probability मूल्ये मिळतील, आणि त्यामुळे आपण त्यांना थोडे adjust करावे, आणि नवीन मूल्यांसह पूर्णपणे overwrite करू नये.
-- **epsilon वाढवा**. आपण `epsilon` हळूहळू वाढवू इच्छितो, जेणेकरून कमी शोध घेऊन अधिक exploitation करू शकतो. कदाचित कमी `epsilon` मूल्याने सुरुवात करणे आणि जवळजवळ 1 पर्यंत जाणे योग्य ठरेल.
-> **कार्य 1**: हायपरपॅरामिटरच्या मूल्यांशी प्रयोग करा आणि पाहा की तुम्ही जास्त एकत्रित बक्षीस मिळवू शकता का. तुम्हाला 195 पेक्षा जास्त मिळत आहे का?
-> **कार्य 2**: समस्या औपचारिकपणे सोडवण्यासाठी, तुम्हाला 100 सलग धावांमध्ये 195 सरासरी बक्षीस मिळवणे आवश्यक आहे. प्रशिक्षणादरम्यान ते मोजा आणि सुनिश्चित करा की तुम्ही समस्या औपचारिकपणे सोडवली आहे!
+> **कार्य २**: समस्येचे औपचारिकपणे निराकरण करण्यासाठी, तुम्हाला १०० सलग चाचण्यांमध्ये सरासरी १९५ बक्षीस मिळवणे आवश्यक आहे. प्रशिक्षणादरम्यान त्याचे मापन करा आणि खात्री करा की तुम्ही औपचारिकपणे समस्या सोडवली आहे!
-## परिणाम प्रत्यक्षात पाहणे
+## कृतीत निकाल पाहणे
-प्रशिक्षित मॉडेल कसे वागते हे प्रत्यक्षात पाहणे मनोरंजक ठरेल. चला सिम्युलेशन चालवूया आणि प्रशिक्षणादरम्यान वापरलेल्या समान कृती निवडण्याच्या रणनीतीचे अनुसरण करूया, Q-Table मधील संभाव्यता वितरणानुसार नमुना घेऊया: (कोड ब्लॉक 13)
+प्रशिक्षित मॉडेल कसे वागते हे प्रत्यक्ष पाहणे मनोरंजक ठरेल. चला सिम्युलेशन चालवूया आणि प्रशिक्षणादरम्यान वापरल्या गेलेल्या क्रिया निवड धोरणाचे पालन करूया, Q-टेबलमधील संभाव्यता वितरणानुसार नमुना घेऊन: (कोड ब्लॉक १३)
```python
obs = env.reset()
@@ -295,30 +318,32 @@ while not done:
env.close()
```
-तुम्हाला असे काहीतरी दिसेल:
+तुम्हाला असे काहीतरी दिसायला हवे:

---
-## 🚀चॅलेंज
+## 🚀आव्हान
-> **कार्य 3**: येथे, आम्ही Q-Table ची अंतिम प्रत वापरत होतो, जी कदाचित सर्वोत्तम नसावी. लक्षात ठेवा की आम्ही सर्वोत्तम कामगिरी करणारा Q-Table `Qbest` व्हेरिएबलमध्ये संग्रहित केला आहे! `Qbest` ला `Q` वर कॉपी करून सर्वोत्तम कामगिरी करणाऱ्या Q-Table सह समान उदाहरण वापरून पहा आणि तुम्हाला काही फरक जाणवतो का ते पहा.
+> **कार्य ३**: येथे आपण Q-टेबलची अंतिम प्रती वापरत होतो, जी कदाचित सर्वोत्तम नसावी. लक्षात ठेवा की आम्ही सर्वोत्तम कामगिरी करणारा Q-टेबल `Qbest` या चलमध्ये साठवला आहे! `Qbest` कॉपी करून `Q` मध्ये ठेवून त्याच उदाहरणाचा प्रयत्न करा आणि फरक लक्षात येतो का ते पहा.
-> **कार्य 4**: येथे आम्ही प्रत्येक चरणावर सर्वोत्तम कृती निवडत नव्हतो, तर संबंधित संभाव्यता वितरणासह नमुना घेत होतो. नेहमीच सर्वोत्तम कृती निवडणे अधिक अर्थपूर्ण ठरेल का, ज्यामध्ये Q-Table मूल्य सर्वाधिक आहे? हे `np.argmax` फंक्शन वापरून करता येते, जे उच्च Q-Table मूल्याशी संबंधित कृती क्रमांक शोधते. ही रणनीती अंमलात आणा आणि संतुलन सुधारते का ते पहा.
+> **कार्य ४**: येथे आम्ही प्रत्येक टप्प्यावर सर्वोत्तम क्रिया निवडत नव्हतो, पण संबंधित संभाव्यता वितरणानुसार नमुना घेत होतो. नेहमी सर्वोत्तम क्रिया, म्हणजे जास्तीत जास्त Q-टेबल मूल्य असलेली क्रिया, निवडल्यास अधिक अर्थ निर्माण होतो का? हे `np.argmax` फंक्शन वापरून जास्तीत जास्त Q-टेबल मूल्याशी संबंधित क्रियेचा क्रमांक शोधून करता येते. हे धोरण अंमलात आणा आणि ते संतुलन सुधारते का ते पाहा.
-## [व्याख्यानानंतरचा क्विझ](https://ff-quizzes.netlify.app/en/ml/)
+## [लक्ष्योपचारानंतरची चाचणी](https://ff-quizzes.netlify.app/en/ml/)
-## असाइनमेंट
-[माउंटन कार प्रशिक्षित करा](assignment.md)
+## घरकाम
+[माउंटन कारचे प्रशिक्षण](assignment.md)
## निष्कर्ष
-आता आपण एजंट्सना फक्त बक्षीस फंक्शन प्रदान करून चांगले परिणाम मिळवण्यासाठी प्रशिक्षण देणे शिकले आहे, जे खेळाच्या इच्छित स्थितीची व्याख्या करते, आणि त्यांना शोध जागा बुद्धिमत्तेने एक्सप्लोर करण्याची संधी देते. आम्ही Q-Learning अल्गोरिदम यशस्वीरित्या डिस्क्रीट आणि सतत वातावरणाच्या बाबतीत लागू केला आहे, परंतु डिस्क्रीट कृतींसह.
+आम्ही आता शिकले आहे की एजंट्सना केवळ त्यांना हवा असलेला गेम स्थिती निर्दिष्ट करणारी बक्षीस कार्ये प्रदान करून, आणि शोध जागा बुद्धिमत्तेने शोधण्यासाठी संधी देऊन चांगले निकाल मिळवण्यासाठी प्रशिक्षण देणे कसे असते. आम्ही यशस्वीरित्या Q-लर्निंग अल्गोरिदम डिस्क्रीट आणि सलग वातावरणांमध्ये, पण डिस्क्रीट क्रियांसह, लागू केले आहे.
-कृती स्थिती देखील सतत असते आणि निरीक्षण जागा खूपच जटिल असते अशा परिस्थितींचा अभ्यास करणे महत्त्वाचे आहे, जसे की अटारी गेम स्क्रीनवरील प्रतिमा. अशा समस्यांमध्ये चांगले परिणाम मिळवण्यासाठी आपल्याला neural networks सारख्या अधिक शक्तिशाली मशीन लर्निंग तंत्रांचा वापर करावा लागतो. हे अधिक प्रगत विषय आमच्या आगामी प्रगत AI कोर्सचा विषय आहेत.
+हे देखील महत्त्वाचे आहे की, क्रिया स्थिती सलग असलेल्या स्थितींचा अभ्यास करणे, आणि निरीक्षण जागा जास्त गुंतागुंतीची असलेली, जसे की अटारी गेम स्क्रीनमधील प्रतिमा. अशा समस्यांमध्ये चांगले निकाल मिळवण्यासाठी आपल्याला अधिक शक्तिशाली मशीन लर्निंग तंत्रे, जसे की न्यूरल नेटवर्क्स वापरणे आवश्यक असते. ही अधिक प्रगत विषय आपल्या आगामी अधिक प्रगत AI कोर्सची विषयं आहेत.
---
-**अस्वीकरण**:
-हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील मूळ दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
+
+**अस्वीकरण**:
+हा दस्तऐवज 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
index 4f26be59e..82cdc65dd 100644
--- a/translations/mr/9-Real-World/2-Debugging-ML-Models/README.md
+++ b/translations/mr/9-Real-World/2-Debugging-ML-Models/README.md
@@ -1,150 +1,179 @@
-# पोस्टस्क्रिप्ट: मशीन लर्निंगमध्ये जबाबदार AI डॅशबोर्ड घटकांचा वापर करून मॉडेल डीबगिंग
-
-## [पूर्व-व्याख्यान प्रश्नमंजूषा](https://ff-quizzes.netlify.app/en/ml/)
+# पोस्टस्क्रिप्ट: जबाबदार AI डॅशबोर्ड घटकांचा वापर करून मशीन लर्निंगमधील मॉडेल डीबगिंग
+
+## [पूर्व-व्याख्यान क्विझ](https://ff-quizzes.netlify.app/en/ml/)
+
## परिचय
-मशीन लर्निंग आपल्या दैनंदिन जीवनावर प्रभाव टाकते. AI आरोग्यसेवा, वित्त, शिक्षण आणि रोजगार यांसारख्या महत्त्वाच्या प्रणालींमध्ये प्रवेश करत आहे, ज्या आपल्याला व्यक्ती म्हणून तसेच समाज म्हणून प्रभावित करतात. उदाहरणार्थ, आरोग्यसेवा निदान किंवा फसवणूक शोधण्यासारख्या दैनंदिन निर्णय घेण्याच्या कार्यांमध्ये प्रणाली आणि मॉडेल्स सहभागी असतात. परिणामी, AI मधील प्रगती आणि वेगाने स्वीकारण्यासोबतच समाजाच्या अपेक्षा विकसित होत आहेत आणि त्याला प्रतिसाद म्हणून नियमन वाढत आहे. आपल्याला सतत असे क्षेत्र दिसतात जिथे AI प्रणाली अपेक्षांवर खरे उतरू शकत नाहीत; त्या नवीन आव्हाने उघड करतात; आणि सरकार AI उपाययोजनांचे नियमन करण्यास सुरुवात करत आहेत. त्यामुळे, या मॉडेल्सचे विश्लेषण करणे महत्त्वाचे आहे जेणेकरून सर्वांसाठी न्याय्य, विश्वासार्ह, समावेशक, पारदर्शक आणि जबाबदार परिणाम मिळतील.
+मशीन लर्निंग आमच्या दैनंदिन आयुष्यात प्रभाव पाडते. AI काही अत्यंत महत्त्वाच्या प्रणालींमध्ये आपलं स्थान निर्माण करत आहे ज्या व्यक्ती म्हणून आम्हाला तसेच समाजाला प्रभावित करतात, जसे की आरोग्यसेवा, वित्त, शिक्षण, आणि रोजगार. उदाहरणार्थ, सिस्टम आणि मॉडेल्स दैनंदिन निर्णय घेण्याच्या कार्यांमध्ये सामील आहेत, जसे की आरोग्य सेवा निदान किंवा फसवणूक शोधणे. परिणामी, AI मधील प्रगती आणि वेगवान स्वीकारासोबत सामाजिक अपेक्षा विकसित होत आहेत आणि वाढत्या नियमांशी प्रतिसाद दिला जात आहे. आम्ही सतत असे भाग पाहतो जिथे AI सिस्टम अपेक्षा पूर्ण करत नाहीत; ते नवीन आव्हाने उभे करतात; आणि सरकार AI सोल्यूशन्सवर नियम लावत आहे. म्हणून, या मॉडेल्सचे विश्लेषण करणे महत्त्वाचे आहे जेणेकरून ते प्रत्येकासाठी न्याय्य, विश्वासार्ह, समावेशक, पारदर्शक आणि जबाबदार निकाल देऊ शकतील.
-या अभ्यासक्रमात, आम्ही काही व्यावहारिक साधनांचा अभ्यास करू जे मॉडेलमध्ये जबाबदार AI संबंधित समस्या आहेत का हे तपासण्यासाठी वापरले जाऊ शकतात. पारंपरिक मशीन लर्निंग डीबगिंग तंत्रे प्रामुख्याने संख्यात्मक गणनांवर आधारित असतात, जसे की एकत्रित अचूकता किंवा सरासरी त्रुटी नुकसान. कल्पना करा की तुम्ही मॉडेल तयार करण्यासाठी वापरत असलेल्या डेटामध्ये विशिष्ट लोकसंख्येचा अभाव आहे, जसे की वंश, लिंग, राजकीय दृष्टिकोन, धर्म, किंवा अशा लोकसंख्येचे असमान प्रतिनिधित्व आहे. मॉडेलचा आउटपुट काही लोकसंख्येला प्राधान्य देण्यासाठी व्याख्या केला जातो तेव्हा काय होते? हे संवेदनशील वैशिष्ट्य गटांच्या अति किंवा कमी प्रतिनिधित्वाचा परिचय देऊ शकते, ज्यामुळे मॉडेलमधून न्याय, समावेश किंवा विश्वासार्हतेच्या समस्या निर्माण होतात. आणखी एक घटक म्हणजे, मशीन लर्निंग मॉडेल्स "ब्लॅक बॉक्स" मानले जातात, ज्यामुळे मॉडेलच्या अंदाजामागील कारणे समजणे आणि स्पष्ट करणे कठीण होते. डेटा वैज्ञानिक आणि AI विकसकांना मॉडेलच्या न्याय्यतेचे किंवा विश्वासार्हतेचे मूल्यांकन करण्यासाठी पुरेसे साधने नसल्यास हे सर्व आव्हाने निर्माण होतात.
+या अभ्यासक्रमात, आपण अशा प्रायोगिक साधनांकडे पाहणार आहोत जे वापरून मॉडेलमध्ये जबाबदार AI समस्या आहेत का याचे मूल्यांकन करता येते. पारंपरिक मशीन लर्निंग डीबगिंग तंत्रे मुख्यतः संख्यात्मक गणनांवर आधारित असतात जसे की एकत्रित अचूकता किंवा सरासरी त्रुटी तोटा. कल्पना करा जेव्हा तुम्ही वापरत असलेल्या डेटामध्ये काही लोकसंख्याशास्त्रीय घटक जसे की वंश, लिंग, राजकीय दृष्टीकोन, धर्म नसतील किंवा अशा घटकांचे असमतोल प्रतिनिधित्व असेल तर काय होईल? मॉडेलच्या आऊटपुटचे काही लोकसंख्याकीय गटांना प्राधान्य देणारे स्पष्टीकरण कसे मिळेल? हे संवेदनशील वैशिष्ट्य गटांचा अतिप्रतीन किंवा कमी प्रतिनिधित्व घडवू शकते ज्यामुळे मॉडेलमध्ये न्याय्यपणा, समावेशन किंवा विश्वासार्हतेच्या समस्या उद्भवू शकतात. आणखी एक बाब म्हणजे मशीन लर्निंग मॉडेल्स काळ्या पेट्या म्हणून गणले जातात, ज्यामुळे मॉडेलच्या भविष्यवाण्याचे काय कारण आहे हे समजणे आणि स्पष्ट करणे कठीण होते. हे सर्व डेटा सायंटिस्ट्स आणि AI विकसकांना भेडसावणारी आव्हाने आहेत जेव्हा त्यांच्याकडे योग्य साधने नसतात मॉडेलचे न्याय्यपणा किंवा विश्वासार्हता तपासण्यासाठी.
-या धड्यात, तुम्ही तुमचे मॉडेल डीबग करण्यासाठी खालील गोष्टी शिकाल:
+या धड्यामध्ये, तुम्हाला खालील गोष्टींबद्दल डीबगिंग शिकवले जाईल:
-- **त्रुटी विश्लेषण**: तुमच्या डेटाच्या वितरणामध्ये जिथे मॉडेलचे त्रुटी दर जास्त आहेत ते ओळखा.
-- **मॉडेल विहंगावलोकन**: विविध डेटा गटांमध्ये तुलना करून तुमच्या मॉडेलच्या कार्यप्रदर्शन मेट्रिक्समधील विसंगती शोधा.
-- **डेटा विश्लेषण**: तुमच्या डेटामध्ये अति किंवा कमी प्रतिनिधित्व असलेल्या ठिकाणी तपास करा, ज्यामुळे तुमचे मॉडेल एका डेटा लोकसंख्येला दुसऱ्याच्या तुलनेत प्राधान्य देऊ शकते.
-- **वैशिष्ट्य महत्त्व**: जागतिक स्तरावर किंवा स्थानिक स्तरावर तुमच्या मॉडेलच्या अंदाजांवर कोणती वैशिष्ट्ये प्रभाव टाकत आहेत ते समजून घ्या.
+- **त्रुटी विश्लेषण**: तुमच्या डेटाच्या वितरणात जिथे मॉडेलचे त्रुटी दर जास्त आहेत ते ओळखा.
+- **मॉडेल पुनरावलोकन**: वेगवेगळ्या डेटा गटांमध्ये तुलना करून तुमच्या मॉडेलच्या कामगिरीत असणाऱ्या फरकांचा शोध घ्या.
+- **डेटा विश्लेषण**: तुमच्या डेटामध्ये कोणत्या ठिकाणी काही डेटा लोकसंख्या गटांचे ओव्हर किंवा अंडर-प्रतिनिधित्व आहे का याचा तपास करा ज्यामुळे मॉडेल कोणत्याही एका डेटा लोकसंख्या गटाला प्राधान्य देण्याची शक्यता आहे.
+- **वैशिष्ट्य महत्त्व**: जागतिक किंवा स्थानिक पातळीवर कोणती वैशिष्ट्ये तुमच्या मॉडेलच्या भविष्यवाण्यांना प्रभावित करत आहेत हे समजून घ्या.
-## पूर्वतयारी
+## पूर्वापेक्षा
-पूर्वतयारी म्हणून, कृपया [विकसकांसाठी जबाबदार AI साधने](https://www.microsoft.com/ai/ai-lab-responsible-ai-dashboard) याचा आढावा घ्या.
+कृपया पूर्वापेक्षाप्रमाणे [Answer AI साधने विकसकांसाठी](https://www.microsoft.com/ai/ai-lab-responsible-ai-dashboard) या पुनरावलोकन घ्या
> 
## त्रुटी विश्लेषण
-पारंपरिक मॉडेल कार्यप्रदर्शन मेट्रिक्स अचूकता मोजण्यासाठी वापरले जातात आणि प्रामुख्याने योग्य विरुद्ध चुकीच्या अंदाजांवर आधारित गणना असतात. उदाहरणार्थ, एखाद्या मॉडेलने 89% वेळा अचूक अंदाज लावला आणि 0.001 चा त्रुटी नुकसान आहे असे ठरवणे चांगले कार्यप्रदर्शन मानले जाऊ शकते. त्रुटी तुमच्या अंतर्निहित डेटासेटमध्ये समान रीतीने वितरित केल्या जात नाहीत. तुम्हाला 89% मॉडेल अचूकता स्कोअर मिळू शकतो, परंतु असे आढळते की तुमच्या डेटाच्या वेगवेगळ्या भागांमध्ये मॉडेल 42% वेळा अयशस्वी होत आहे. विशिष्ट डेटा गटांसह या अपयशाच्या नमुन्यांचे परिणाम न्याय किंवा विश्वासार्हतेच्या समस्यांकडे नेऊ शकतात. मॉडेल चांगले कार्य करत आहे किंवा नाही अशा क्षेत्रांना समजून घेणे आवश्यक आहे. तुमच्या मॉडेलमध्ये जिथे अचूकतेचा अभाव आहे अशा डेटा क्षेत्रे महत्त्वपूर्ण डेटा लोकसंख्या ठरू शकतात.
+पारंपरिक मॉडेल कामगिरी मोजण्यासाठी वापरल्या जाणाऱ्या अचूकता मापन सरासरी चुकीच्या आणि योग्य अंदाजांवर आधारित गणना असतात. उदाहरणार्थ, 0.001 त्रुटी तोट्याने ८९% अचूक असल्याचे ठरवणे चांगली कामगिरी मानली जाऊ शकते. त्रुटी समस्थानिकरित्या तुमच्या मूळ डेटासेटमधून विभागल्या जात नाहीत. ८९% मॉडेल अचूकता प्राप्त होताना, काही डेटा भागांमध्ये ४२% वेळा मॉडेल अपयशी ठरू शकते. विशिष्ट डेटा गटांमधले अपयशाचे नमुने न्याय्यपणा किंवा विश्वासार्हतेच्या समस्यांना हाताळू शकतात. मॉडेल जिथे चांगली कामगिरी करत आहे आणि जिथे नाही, हे समजून घेणे गरजेचे आहे. जिथे मॉडेलमध्ये चुकांची संख्या जास्त आहे त्या डेटामध्ये महत्त्वाचा डेटा लोकसंख्या गट असू शकतो.
+
+
+
+RAI डॅशबोर्डवरील त्रुटी विश्लेषण घटक विविध गटांमध्ये मॉडेल अपयश कसे विभागले आहे हे वृक्ष दर्शनाद्वारे दर्शवितो. हे तुमच्या डेटासेटमध्ये जिथे त्रुटी दर जास्त असतो अशा वैशिष्ट्ये किंवा भाग ओळखण्यासाठी उपयुक्त आहे. जास्तीत जास्त मॉडेल चुका कुठून येत आहेत हे पाहून मूळ कारणाबद्दल तपासणी सुरू करू शकता. तुम्ही विश्लेषणासाठी डेटाचा गट तयार करू शकता. हे डेटा गट डीबगिंग प्रक्रियेत मदत करतात ज्यामुळे कळते का मॉडेल एका गटात चांगले काम करत आहे पण दुसर्यामध्ये चुकांसह आहे.
+
+
+
+वृक्ष नकाशावरील दृश्य निर्देशक समस्याग्रस्त भाग त्वरीत शोधायला मदत करतात. उदाहरणार्थ, ज्या वृक्ष नोडला जास्त गडद लाल रंग आहे, त्या ठिकाणी त्रुटी दर जास्त आहे.
+
+हीट मॅप अजून एक दृश्य फंक्शनॅलिटी आहे ज्याचा वापर वापरकर्ते एका किंवा दोन वैशिष्ट्यांचा वापर करून त्रुटी दर तपासण्यासाठी करू शकतात, ज्यामुळे तुमच्या डेटासेट किंवा गटांमध्ये मॉडेलच्या त्रुटींमध्ये योगदान देणारे भाग शोधता येतात.
+
+
+
+जेव्हा तुम्हाला:
+
+* डेटासेट आणि अनेक इनपुट व वैशिष्ट्य परिमाणांमध्ये मॉडेल अपयश कसे विभागले आहे हे सखोल समजून घ्यायचे आहे.
+* एकत्रित कामगिरी मेट्रिक्स विश्लेषण करून आपोआप चुकीचे गट शोधायचे आहेत जे उपचारात्मक कृतीसाठी मार्गदर्शक ठरतील.
+
+
+
+
-
-RAI डॅशबोर्डवरील त्रुटी विश्लेषण घटक विविध गटांमध्ये मॉडेल अपयश कसे वितरित केले जाते हे ट्री व्हिज्युअलायझेशनसह दर्शवितो. तुमच्या डेटासेटसह जिथे त्रुटी दर जास्त आहे अशा वैशिष्ट्ये किंवा क्षेत्रे ओळखण्यासाठी हे उपयुक्त आहे. मॉडेलच्या अचूकतेचा अभाव जिथून येत आहे ते पाहून तुम्ही मूळ कारण तपासण्यास सुरुवात करू शकता. तुम्ही विश्लेषण करण्यासाठी डेटा गट तयार करू शकता. हे डेटा गट डीबगिंग प्रक्रियेत मदत करतात, जिथे एक गट चांगले कार्य करत आहे, तर दुसऱ्या गटात त्रुटी आहेत.
-
-ट्री मॅपवरील व्हिज्युअल इंडिकेटर्स समस्या क्षेत्रे लवकर शोधण्यात मदत करतात. उदाहरणार्थ, ट्री नोडचा गडद लाल रंग जितका गडद असेल तितका त्रुटी दर जास्त.
-हीट मॅप हे आणखी एक व्हिज्युअलायझेशन कार्यक्षमता आहे ज्याचा वापर वापरकर्ते एक किंवा दोन वैशिष्ट्यांचा वापर करून त्रुटी दर तपासण्यासाठी करू शकतात, ज्यामुळे संपूर्ण डेटासेट किंवा गटांमध्ये मॉडेल त्रुटींचे योगदानकर्ता शोधता येते.
-
-त्रुटी विश्लेषण वापरा जेव्हा तुम्हाला:
-* मॉडेल अपयश तुमच्या डेटासेटमध्ये आणि अनेक इनपुट आणि वैशिष्ट्य परिमाणांमध्ये कसे वितरित केले जाते याची सखोल समज मिळवा.
-* एकत्रित कार्यप्रदर्शन मेट्रिक्सचे विघटन करा आणि लक्ष्यित सुधारणा पावले सूचित करण्यासाठी त्रुटी गट आपोआप शोधा.
-## मॉडेल विहंगावलोकन
-मशीन लर्निंग मॉडेलचे कार्यप्रदर्शन मूल्यांकन करण्यासाठी त्याच्या वर्तनाची समग्र समज मिळवणे आवश्यक आहे. हे त्रुटी दर, अचूकता, पुनर्प्राप्ती, अचूकता किंवा MAE (मीन अॅब्सोल्यूट एरर) यासारख्या एकापेक्षा जास्त मेट्रिक्सचे पुनरावलोकन करून साध्य केले जाऊ शकते, जेणेकरून कार्यप्रदर्शन मेट्रिक्समधील विसंगती शोधता येतील. एक कार्यप्रदर्शन मेट्रिक चांगले दिसू शकते, परंतु दुसऱ्या मेट्रिकमध्ये अचूकतेचा अभाव उघड होऊ शकतो. याशिवाय, संपूर्ण डेटासेट किंवा गटांमध्ये मेट्रिक्सची तुलना करणे मॉडेल चांगले कार्य करत आहे किंवा नाही हे स्पष्ट करण्यात मदत करते. हे विशेषतः संवेदनशील विरुद्ध असंवेदनशील वैशिष्ट्यांमध्ये (उदा., रुग्णाचा वंश, लिंग किंवा वय) मॉडेलचे कार्यप्रदर्शन पाहणे महत्त्वाचे आहे, जेणेकरून मॉडेलमध्ये संभाव्य अन्याय उघड होऊ शकतो. उदाहरणार्थ, संवेदनशील वैशिष्ट्य असलेल्या गटामध्ये मॉडेल अधिक त्रुटीपूर्ण असल्याचे आढळल्यास मॉडेलमध्ये संभाव्य अन्याय उघड होऊ शकतो.
-RAI डॅशबोर्डवरील मॉडेल विहंगावलोकन घटक केवळ डेटा गटांमधील कार्यप्रदर्शन मेट्रिक्सचे विश्लेषण करण्यात मदत करत नाही, तर ते वापरकर्त्यांना विविध गटांमध्ये मॉडेलच्या वर्तनाची तुलना करण्याची क्षमता देते.
-
-घटकाची वैशिष्ट्य-आधारित विश्लेषण कार्यक्षमता वापरकर्त्यांना विशिष्ट वैशिष्ट्यांमध्ये डेटा उपगट कमी करण्याची परवानगी देते, जेणेकरून सूक्ष्म स्तरावर विसंगती ओळखता येतील. उदाहरणार्थ, डॅशबोर्डमध्ये वापरकर्त्याने निवडलेल्या वैशिष्ट्यासाठी (उदा., *"time_in_hospital < 3"* किंवा *"time_in_hospital >= 7"*) स्वयंचलितपणे गट तयार करण्यासाठी अंतर्गत बुद्धिमत्ता आहे. यामुळे वापरकर्त्याला मोठ्या डेटा गटातून विशिष्ट वैशिष्ट्य वेगळे करण्यास सक्षम होते, जेणेकरून ते मॉडेलच्या त्रुटीपूर्ण परिणामांवर प्रभाव टाकणारे प्रमुख घटक आहे का हे पाहता येईल.
-
+* अचूकता दरातील भेद
+* त्रुटी दरातील भेद
+* तपशिलातील भेद
+* पुनर्प्राप्तीतील भेद
+
+
+
+
+
-मॉडेल विहंगावलोकन घटक दोन प्रकारच्या विसंगती मेट्रिक्सला समर्थन देतो:
-**मॉडेल कार्यप्रदर्शनातील विसंगती**: या मेट्रिक्सचा संच डेटा उपगटांमध्ये निवडलेल्या कार्यप्रदर्शन मेट्रिकच्या मूल्यांमधील विसंगती (फरक) मोजतो. काही उदाहरणे:
-* अचूकता दरातील विसंगती
-* त्रुटी दरातील विसंगती
-* अचूकतेतील विसंगती
-* पुनर्प्राप्तीतील विसंगती
-* मीन अॅब्सोल्यूट एरर (MAE) मधील विसंगती
-**निवड दरातील विसंगती**: हा मेट्रिक उपगटांमध्ये निवड दर (अनुकूल अंदाज) मधील फरक समाविष्ट करतो. याचे एक उदाहरण म्हणजे कर्ज मंजुरी दरातील विसंगती. निवड दर म्हणजे प्रत्येक वर्गातील डेटा पॉइंट्सचा अंश जो 1 म्हणून वर्गीकृत केला जातो (बायनरी वर्गीकरणामध्ये) किंवा अंदाज मूल्यांचे वितरण (प्रत्यावर्तनामध्ये).
-## डेटा विश्लेषण
-> "जर तुम्ही डेटा पुरेसा त्रास दिला, तर तो काहीही कबूल करेल" - रोनाल्ड कोस
-हे विधान अतिशयोक्तीपूर्ण वाटते, परंतु हे खरे आहे की डेटा कोणत्याही निष्कर्षाला समर्थन देण्यासाठी हेरफेर केला जाऊ शकतो. अशा प्रकारचे हेरफेर कधीकधी अनवधानाने होऊ शकते. मानव म्हणून, आपल्याला सर्वांनाच पूर्वग्रह असतो आणि डेटा तयार करताना आपण पूर्वग्रह कधी ओळखतो हे जाणून घेणे कठीण असते. AI आणि मशीन लर्निंगमध्ये न्याय्यतेची हमी देणे ही एक गुंतागुंतीची समस्या आहे.
-पारंपरिक मॉडेल कार्यप्रदर्शन मेट्रिक्ससाठी डेटा हा एक मोठा अंध भाग आहे. तुम्हाला उच्च अचूकता स्कोअर मिळू शकतो, परंतु याचा नेहमीच अर्थ असा नाही की तुमच्या डेटासेटमध्ये अंतर्निहित डेटा पूर्वग्रह आहे. उदाहरणार्थ, जर एखाद्या कंपनीतील कार्यकारी पदांवरील महिलांचे प्रमाण 27% आणि पुरुषांचे प्रमाण 73% असेल, तर या डेटावर प्रशिक्षित केलेला नोकरी जाहिरात AI मॉडेल वरिष्ठ स्तरावरील नोकरीसाठी प्रामुख्याने पुरुष प्रेक्षकांना लक्ष्य करू शकतो. डेटामध्ये असलेल्या या असंतुलनामुळे मॉडेलचा अंदाज एका लिंगाला प्राधान्य देण्यासाठी वाकवला गेला. यामुळे न्याय्यतेची समस्या उघड होते जिथे AI मॉडेलमध्ये लिंग पूर्वग्रह आहे.
-RAI डॅशबोर्डवरील डेटा विश्लेषण घटक डेटासेटमध्ये जिथे अति- आणि कमी-प्रतिनिधित्व आहे अशा क्षेत्रांची ओळख करण्यात मदत करतो. डेटा असंतुलन किंवा विशिष्ट डेटा गटाच्या प्रतिनिधित्वाच्या अभावामुळे त्रुटी आणि न्याय्यतेच्या समस्यांचे मूळ कारण शोधण्यात हे वापरकर्त्यांना मदत करते. हे वापरकर्त्यांना अंदाजित आणि वास्तविक परिणाम, त्रुटी गट आणि विशिष्ट वैशिष्ट्यांवर आधारित डेटासेट व्हिज्युअलाइझ करण्याची क्षमता देते. कधीकधी कमी प्रतिनिधित्व असलेल्या डेटा गटाचा शोध घेतल्याने मॉडेल चांगले शिकत नाही हे देखील उघड होऊ शकते, त्यामुळे अचूकतेचा अभाव असतो. डेटा पूर्वग्रह असलेला मॉडेल असणे ही केवळ न्याय्यतेची समस्या नाही तर मॉडेल समावेशक किंवा विश्वासार्ह नाही हे देखील दर्शवते.
-
डेटा विश्लेषण वापरा जेव्हा तुम्हाला:
-* तुमच्या डेटासेटच्या आकडेवारीचा शोध घ्या, विविध परिमाणांमध्ये (गटांमध्ये) तुमचा डेटा विभाजित करण्यासाठी विविध फिल्टर निवडा.
-* विविध गट आणि वैशिष्ट्य गटांमध्ये तुमच्या डेटासेटचे वितरण समजून घ्या.
-* न्याय्यतेशी संबंधित तुमच्या निष्कर्ष, त्रुटी विश्लेषण आणि कारणात्मकता (इतर डॅशबोर्ड घटकांमधून प्राप्त) तुमच्या डेटासेटच्या वितरणाचा परिणाम आहेत का हे ठरवा.
-* प्रतिनिधित्वाच्या समस्यांमुळे, लेबल आवाज, वैशिष्ट्य आवाज, लेबल पूर्वग्रह आणि अशा घटकांमुळे त्रुटी कमी करण्यासाठी कोणत्या क्षेत्रांमध्ये अधिक डेटा गोळा करायचा आहे हे ठरवा.
+* वेगवेगळ्या फिल्टर्स निवडून तुमचा डेटासेट वेगवेगळ्या मितींमध्ये (किंवा गटांमध्ये) विभाजित करून तपासायचा असेल.
+* विविध गट आणि वैशिष्ट्य गटांमध्ये तुमच्या डेटासेटचे वितरण समजून घ्यायचे असेल.
+* तुमच्या निष्कर्षांची (न्याय्यतेसंबंधित, त्रुटी विश्लेषण, आणि कारणात्मकता) मूलभूत कारणे डेटासेटच्या वितरणावर आधारित आहेत की नाही हे ठरवायचे असेल.
+* प्रतिनिधित्वाच्या समस्यांमुळे, एल्बल आवाज, वैशिष्ट्य आवाज, लेबल पूर्वग्रह यांसारख्या कारणांमुळे येणाऱ्या त्रुटी कमी करण्यासाठी कुठे अधिक डेटा गोळा करावा हे ठरवायचे असेल.
-## मॉडेल समज
+## मॉडेल समजावून सांगणे
-मशीन लर्निंग मॉडेल्स "ब्लॅक बॉक्स" असतात. मॉडेलचा अंदाज कोणत्या प्रमुख डेटा वैशिष्ट्यांवर आधारित आहे हे समजणे आव्हानात्मक असते. मॉडेलने विशिष्ट अंदाज का लावला याबद्दल पारदर्शकता प्रदान करणे महत्त्वाचे आहे. उदाहरणार्थ, जर एखाद्या AI प्रणालीने अंदाज लावला की मधुमेह असलेल्या रुग्णाला 30 दिवसांच्या आत पुन्हा रुग्णालयात दाखल होण्याचा धोका आहे, तर त्याच्या अंदाजामागील समर्थन डेटा प्रदान करणे आवश्यक आहे. समर्थन डेटा निर्देशक असणे पारदर्शकता आणते, ज्यामुळे क्लिनिशियन किंवा रुग्णालयांना चांगले निर्णय घेता येतात. याशिवाय, एखाद्या रुग्णासाठी मॉडेलने अंदाज का लावला हे स्पष्ट करण्याची क्षमता आरोग्य नियमांसह जबाबदारी सक्षम करते. जेव्हा तुम्ही मशीन लर्निंग मॉडेल्सचा वापर लोकांच्या जीवनावर परिणाम करणाऱ्या पद्धतींमध्ये करत असता, तेव्हा मॉडेलच्या वर्तनावर काय प्रभाव पडतो हे समजून घेणे आणि स्पष्ट करणे महत्त्वाचे आहे. मॉडेल स्पष्टता आणि समज खालील परिस्थितींमध्ये प्रश्नांची उत्तरे देण्यास मदत करते:
+मशीन लर्निंग मॉडेल्स बहुतेक काळा डबा असतात. कोणती मुख्य डेटा वैशिष्ट्ये मॉडेलचे भविष्यवाणी चालवतात हे समजून घेणे कठीण असते. एखाद्या मॉडेलने विशिष्ट भविष्यवाणी का केली हे स्पष्ट करणे महत्त्वाचे आहे. उदाहरणार्थ, जर एखाद्या AI प्रणालीने सूचित केले की डायबेटिक रुग्णाला ३० दिवसांच्या आत हॉस्पिटलमध्ये पुन्हा दाखल होण्याचा धोका आहे, तर त्याने त्याच्या भविष्यवाणीला काय समर्थन पुरवणारे डेटा आहे ते देखील देता यावे. समर्थन करणाऱ्या डेटा निर्देशकांनी पारदर्शकता आणते ज्यामुळे डॉक्टर किंवा रुग्णालय योग्य निर्णय घेऊ शकतात. तसेच एखाद्या रुग्णासाठी मॉडेलने भविष्यवाणी का केली आणि काय कारण होते हे स्पष्ट करण्यासशक्य असल्यास आरोग्य नियमांकडे जबाबदारीदेखील येते. लोकांच्या जीवनावर परिणाम करणाऱ्या मशीन लर्निंग मॉडेलसाठी मॉडेलचे वर्तन काय प्रभावित करते हे समजणे आणि स्पष्ट करणे अत्यंत आवश्यक आहे. मॉडेल स्पष्टता आणि समजणारी क्षमता खालील परिस्थितींसाठी उपयुक्त आहेत:
-* मॉडेल डीबगिंग: माझ्या मॉडेलने ही चूक का केली? मी माझे मॉडेल कसे सुधारू शकतो?
-* मानव-AI सहकार्य: मी मॉडेलच्या निर्णयांना कसे समजून घेऊ आणि विश्वास ठेवू शकतो?
-* नियामक अनुपालन: माझे मॉडेल कायदेशीर आवश्यकता पूर्ण करते का?
+* मॉडेल डीबगिंग: माझ्या मॉडेलने ही चूक का केली? मॉडेल मी कसे सुधारू?
+* मानवी - AI सहकार्य: मी कसे मॉडेलच्या निर्णयांवर विश्वास ठेवू शकतो आणि त्यांना समजू शकतो?
+* नियामक अनुपालन: माझे मॉडेल कायदेशीर आवश्यकतांची पूर्तता करते का?
-RAI डॅशबोर्डवरील वैशिष्ट्य महत्त्व घटक तुम्हाला डीबग करण्यासाठी आणि मॉडेल अंदाज कसे लावते याची व्यापक समज मिळविण्यास मदत करते. मशीन लर्निंग व्यावसायिक आणि निर्णय घेणाऱ्यांसाठी हे एक उपयुक्त साधन आहे, जे मॉडेलच्या वर्तनावर प्रभाव टाकणाऱ्या वैशिष्ट्यांचे पुरावे स्पष्ट करण्यासाठी आणि दाखवण्यासाठी नियामक अनुपालनासाठी उपयुक्त आहे. पुढे, वापरकर्ते जागतिक आणि स्थानिक स्पष्टीकरणे शोधू शकतात, जे वैशिष्ट्ये मॉडेलच्या अंदाजांवर प्रभाव टाकतात ते सत्यापित करण्यासाठी. जागतिक स्पष्टीकरणे मॉडेलच्या एकूण अंदाजावर परिणाम करणाऱ्या शीर्ष वैशिष्ट्यांची यादी करतात. स्थानिक स्पष्टीकरणे विशिष्ट प्रकरणासाठी मॉडेलच्या अंदाजामागील वैशिष्ट्ये दर्शवतात. स्थानिक स्पष्टीकरणे मूल्यांकन करण्याची क्षमता विशिष्ट प्रकरण डीबग किंवा ऑडिट करण्यासाठी उपयुक्त आहे, जेणेकरून मॉडेलने अचूक किंवा अचूक अंदाज का लावला हे चांगल्या प्रकारे समजून घेता येईल.
+RAI डॅशबोर्डचा वैशिष्ट्य महत्त्व घटक तुम्हाला डीबगिंग करण्यात आणि समस्यांची संपूर्ण समज प्राप्त करण्यात मदत करतो की मॉडेल कसे भविष्यवाणी करतो. हे मशीन लर्निंग व्यावसायिक आणि निर्णय घेणाऱ्यांसाठी देखील उपयुक्त साधन आहे जे मॉडेलच्या वर्तनावर परिणाम करणाऱ्या वैशिष्ट्यांचे पुरावे स्पष्ट करतात आणि कायदेशीर अनुपालनासाठी दाखवू शकतात. वापरकर्ते जागतिक आणि स्थानिक स्पष्टीकरणे तपासू शकतात ज्यात कोणती वैशिष्ट्ये मॉडेलची भविष्यवाणी चालवतात हे तपासले जाते. जागतिक स्पष्टीकरणांमध्ये मॉडेलच्या एकूण भविष्यवाणीवर परिणाम करणाऱ्या महत्त्वाच्या वैशिष्ट्यांची यादी असते. स्थानिक स्पष्टीकरणे दर्शवतात की एखाद्या विशिष्ट प्रकरणासाठी कोणती वैशिष्ट्ये मॉडेलने भविष्यवाणी करताना वापरली. स्थानिक स्पष्टीकरणांचे मूल्यांकन डीबगिंग किंवा विशिष्ट प्रकरणाच्या ऑडिटिंगसाठी उपयुक्त आहे, ज्यामुळे समजायला आणि समजावून सांगायला मदत होते की मॉडेलने अचूक किंवा चुकीचे भविष्यवाणी का केली.
-
-### 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) तपासा.
+समजावून सांगण्याचा वापर करा जेव्हा तुम्हाला:
----
-## 🚀 आव्हान
+* तुमच्या AI प्रणालीच्या भविष्यवाण्या किती विश्वासार्ह आहेत हे ठरवायचे असेल आणि काय वैशिष्ट्ये जास्त महत्त्वाची आहेत ते समजून घ्यायचे असेल.
+* प्रथम तुमचा मॉडेल समजून घेऊन डीबगिंग व त्यानंतर मॉडेल निरोगी वैशिष्ट्यांचा वापर करत आहे की खोटे संबंध ओळखत आहे हे शोधायचे असेल.
+* मॉडेल भविष्यवाणी संवेदनशील वैशिष्ट्यांवर करत आहे की त्याच्याशी उच्च संबंध असलेल्या वैशिष्ट्यांवर करत आहे हे समजून न्याय्यतेतील संभाव्य स्रोत शोधायचे असेल.
+* स्थानिक स्पष्टीकरणे तयार करून तुमच्या मॉडेलच्या निर्णयांवर वापरकर्त्यांचा विश्वास वाढवायचा असेल.
+* AI प्रणालीचा कायदेशीर ऑडिट पूर्ण करायचा असेल, ज्यामध्ये मॉडेलसची पडताळणी आणि मॉडेल निर्णयांचा माणसांवर होणारा परिणाम तपासायचा असेल.
-सांख्यिकीय किंवा डेटा पक्षपात टाळण्यासाठी, आपल्याला खालील गोष्टी कराव्या लागतील:
+## निष्कर्ष
-- प्रणालींवर काम करणाऱ्या लोकांमध्ये विविध पार्श्वभूमी आणि दृष्टिकोन असणे आवश्यक आहे.
-- आपल्या समाजातील विविधता प्रतिबिंबित करणाऱ्या डेटासेट्समध्ये गुंतवणूक करणे.
-- पक्षपात ओळखण्यासाठी आणि तो सुधारण्यासाठी चांगल्या पद्धती विकसित करणे.
+सर्व RAI डॅशबोर्ड घटक प्रायोगिक साधने आहेत ज्यामुळे तुम्ही अशा मशीन लर्निंग मॉडेल तयार करू शकता जे समाजासाठी कमी हानिकारक आणि अधिक विश्वासार्ह असतील. हे मानवी अधिकारांवर होणाऱ्या धोक्यांची, विशिष्ट गटांना जीवनाच्या संधींपासून वगळण्याच्या किंवा भेदभावाच्या धोरणांची आणि शारीरिक किंवा मानसोपचारिक आघाताच्या धोका टाळण्यास मदत करते. हे तुमच्या मॉडेलच्या निर्णयांमध्ये पारदर्शकता आणण्यासाठी स्थानिक स्पष्टीकरणे तयार करून विश्वास वाढविण्यास देखील मदत करते. संभाव्य धोके खालीलप्रमाणे वर्गीकृत करता येतात:
-मॉडेल तयार करणे आणि वापरण्यात अन्याय स्पष्टपणे दिसतो अशा वास्तविक जीवनातील परिस्थितींचा विचार करा. आणखी काय विचारात घ्यायला हवे?
+- **वाटप**: उदाहरणार्थ, जर एखाद्या लिंग किंवा वंशाला दुसर्याच्या तुलनेत प्राधान्य दिले जात असेल.
+- **सेवेची गुणवत्ता**: जर एका विशिष्ट परिस्थितीसाठी डेटा ट्रेन केला जात असे आणि वास्तविकता अधिक गुंतागुंतीची असे, तर ते कमी गुणवत्तेची सेवा देते.
+- **चित्रपटबद्धी**: एखाद्या गटाशी पूर्वनिर्धारित गुणधर्म जोडणे.
+
+- **निंदन**. कुणीतरी किंवा कोणत्यातरी गोष्टीवर अन्यायकारकपणे टीका करणे व लेबल लावणे.
+- **अतिवादी किंवा अल्पविस्तारित प्रतिनिधित्व**. ही कल्पना आहे की एक विशिष्ट गट एखाद्या विशिष्ट व्यवसायात दिसत नाही, आणि कोणतीही सेवा किंवा कार्य जे याला प्रोत्साहन देते ते नुकसान करण्यास कारणीभूत आहे.
+
+### Azure RAI डॅशबोर्ड
+
+[Azure RAI डॅशबोर्ड](https://learn.microsoft.com/en-us/azure/machine-learning/concept-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) हे आघाडीच्या अकादमिक संस्था आणि 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://ff-quizzes.netlify.app/en/ml/)
-## पुनरावलोकन आणि स्व-अभ्यास
+- सिस्टिम्सवर काम करणाऱ्या लोकांमध्ये विविध पार्श्वभूमी आणि दृष्टिकोन असावेत
+- आमच्या समाजाच्या विविधतेचे प्रतिबिंबित करणाऱ्या डेटासेटमध्ये गुंतवणूक करावी
+- पूर्वग्रह आढळल्यावर तो शोधून काढण्यासाठी आणि दुरुस्त करण्यासाठी चांगल्या पद्धती विकसित कराव्यात
-या धड्यात, तुम्ही मशीन लर्निंगमध्ये जबाबदार AI समाविष्ट करण्यासाठी काही व्यावहारिक साधने शिकली आहेत.
+वास्तविक आयुष्यातील अशा परिस्थितीबद्दल विचार करा जिथे मॉडेल तयार करणे आणि वापरण्यात अन्याय स्पष्ट दिसतो. आणखी काय विचारात घ्यावे?
-या कार्यशाळेचे निरीक्षण करा आणि विषयांमध्ये अधिक खोलवर जा:
+## [व्याख्यानानंतर क्विझ](https://ff-quizzes.netlify.app/en/ml/)
+## पुनरावलोकन & स्वअध्ययन
+
+या धड्यात तुम्ही जबाबदार AI मशीन लर्निंगमध्ये समाविष्ट करण्यासंबंधी काही व्यावहारिक साधने शिकली आहेत.
-- जबाबदार AI डॅशबोर्ड: Besmira Nushi आणि Mehrnoosh Sameki यांच्याकडून RAI प्रत्यक्षात कार्यान्वित करण्यासाठी एकाच ठिकाणी सुविधा.
+या विषयांवर सखोल जाणून घेण्यासाठी हा कार्यशाळा पहा:
-[](https://www.youtube.com/watch?v=f1oaDNl3djg "जबाबदार AI डॅशबोर्ड: प्रत्यक्षात RAI कार्यान्वित करण्यासाठी एकाच ठिकाणी सुविधा")
+- जबाबदार AI डॅशबोर्ड: व्यवहारात RAI कार्यान्वित करण्यासाठी एकाच ठिकाणी सुविधा, लेखक: Besmira Nushi आणि Mehrnoosh Sameki
-> 🎥 वरील प्रतिमेवर क्लिक करा: जबाबदार AI डॅशबोर्ड: प्रत्यक्षात RAI कार्यान्वित करण्यासाठी एकाच ठिकाणी सुविधा Besmira Nushi आणि Mehrnoosh Sameki यांच्याकडून.
+[](https://www.youtube.com/watch?v=f1oaDNl3djg "जबाबदार AI डॅशबोर्ड: व्यवहारात RAI कार्यान्वित करण्यासाठी एकाच ठिकाणी सुविधा")
-जबाबदार AI आणि अधिक विश्वासार्ह मॉडेल्स तयार करण्याबद्दल अधिक जाणून घेण्यासाठी खालील साहित्याचा संदर्भ घ्या:
+> 🎥 व्हिडिओसाठी वरिल प्रतिमा क्लिक करा: जबाबदार AI डॅशबोर्ड: व्यवहारात RAI कार्यान्वित करण्यासाठी एकाच ठिकाणी सुविधा, Besmira Nushi आणि Mehrnoosh Sameki यांसह
+
+जबाबदार AI आणि विश्वासार्ह मॉडेल कसे तयार करायचे याबद्दल अधिक जाणून घेण्यासाठी खालील स्रोतांचा वापर करा:
-- ML मॉडेल्स डीबग करण्यासाठी Microsoftचे RAI डॅशबोर्ड टूल्स: [जबाबदार AI टूल्स संसाधने](https://aka.ms/rai-dashboard)
+- Microsoft चे ML मॉडेल डिबग करण्यासाठी RAI डॅशबोर्ड साधने: [Responsible AI tools resources](https://aka.ms/rai-dashboard)
-- जबाबदार AI टूलकिट एक्सप्लोर करा: [Github](https://github.com/microsoft/responsible-ai-toolbox)
+- Responsible 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 चे RAI रिसोर्स सेंटर: [Responsible AI Resources – 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/)
+- Microsoft चा FATE संशोधन गट: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
-## असाइनमेंट
+## कार्यप्रणाली
[RAI डॅशबोर्ड एक्सप्लोर करा](assignment.md)
---
-**अस्वीकरण**:
-हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी, कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील मूळ दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर केल्यामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.
\ No newline at end of file
+
+**अस्वीकरण**:
+हा दस्तऐवज AI भाषांतर सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) चा वापर करून अनुवादित केला आहे. जरी आम्ही अचूकतेसाठी प्रयत्न करतो, तरी कृपया लक्षात घ्या की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेची कमतरता असू शकते. मूळ दस्तऐवज त्याच्या मूळ भाषेत अधिकृत स्रोत मानला पाहिजे. महत्त्वाची माहिती असल्यास, व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराच्या वापरामुळे उद्भवणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थलावणीसाठी आम्ही जबाबदार नाही.
+
\ No newline at end of file
diff --git a/translations/ms/.co-op-translator.json b/translations/ms/.co-op-translator.json
index 0ef711528..11d3eb4db 100644
--- a/translations/ms/.co-op-translator.json
+++ b/translations/ms/.co-op-translator.json
@@ -24,8 +24,8 @@
"language_code": "ms"
},
"1-Introduction/3-fairness/README.md": {
- "original_hash": "9a6b702d1437c0467e3c5c28d763dac2",
- "translation_date": "2025-09-05T19:33:25+00:00",
+ "original_hash": "0f00d72169a0d37eecfd16d71e01700a",
+ "translation_date": "2026-07-14T06:48:33+00:00",
"source_file": "1-Introduction/3-fairness/README.md",
"language_code": "ms"
},
@@ -54,8 +54,8 @@
"language_code": "ms"
},
"2-Regression/1-Tools/README.md": {
- "original_hash": "fa81d226c71d5af7a2cade31c1c92b88",
- "translation_date": "2025-09-05T18:52:44+00:00",
+ "original_hash": "0b8635427b582d03ea4ab7089b93e505",
+ "translation_date": "2026-07-14T06:43:33+00:00",
"source_file": "2-Regression/1-Tools/README.md",
"language_code": "ms"
},
@@ -72,8 +72,8 @@
"language_code": "ms"
},
"2-Regression/2-Data/README.md": {
- "original_hash": "7c077988328ebfe33b24d07945f16eca",
- "translation_date": "2025-09-05T18:56:22+00:00",
+ "original_hash": "a58b2c4d16c6b122643391745ac15af6",
+ "translation_date": "2026-07-14T06:44:47+00:00",
"source_file": "2-Regression/2-Data/README.md",
"language_code": "ms"
},
@@ -89,6 +89,12 @@
"source_file": "2-Regression/2-Data/solution/Julia/README.md",
"language_code": "ms"
},
+ "2-Regression/2-Data/solution/notebook.ipynb": {
+ "original_hash": "96b95f8cf473481f2f371de8156f1571",
+ "translation_date": "2026-07-14T06:28:46+00:00",
+ "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
+ "language_code": "ms"
+ },
"2-Regression/3-Linear/README.md": {
"original_hash": "8b776e731c35b171d316d01d0e7b1369",
"translation_date": "2026-04-26T19:43:58+00:00",
@@ -457,7 +463,7 @@
},
"8-Reinforcement/1-QLearning/README.md": {
"original_hash": "911efd5e595089000cb3c16fce1beab8",
- "translation_date": "2025-09-05T20:16:08+00:00",
+ "translation_date": "2026-07-14T06:46:07+00:00",
"source_file": "8-Reinforcement/1-QLearning/README.md",
"language_code": "ms"
},
@@ -481,7 +487,7 @@
},
"8-Reinforcement/2-Gym/README.md": {
"original_hash": "107d5bb29da8a562e7ae72262d251a75",
- "translation_date": "2025-09-05T20:22:05+00:00",
+ "translation_date": "2026-07-14T06:47:26+00:00",
"source_file": "8-Reinforcement/2-Gym/README.md",
"language_code": "ms"
},
@@ -581,6 +587,19 @@
"source_file": "TROUBLESHOOTING.md",
"language_code": "ms"
},
+ "__translation_failures__": {
+ "sketchnotes/LICENSE.md": {
+ "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f",
+ "source_file": "sketchnotes/LICENSE.md",
+ "language_code": "ms",
+ "failure_date": "2026-07-14T06:42:29+00:00",
+ "status": "failed",
+ "error_type": "TranslationIncompleteError",
+ "error_message": "Markdown translation remained incomplete for chunk 1.1.1 of 'LICENSE.md', and the chunk could not be split further.",
+ "translator_version": "0.20.0",
+ "failure_policy_version": 1
+ }
+ },
"docs/_sidebar.md": {
"original_hash": "68dd06c685f6ce840e0acfa313352e7c",
"translation_date": "2025-09-05T19:20:27+00:00",
diff --git a/translations/ms/1-Introduction/3-fairness/README.md b/translations/ms/1-Introduction/3-fairness/README.md
index 9e16d0341..14f3ceca4 100644
--- a/translations/ms/1-Introduction/3-fairness/README.md
+++ b/translations/ms/1-Introduction/3-fairness/README.md
@@ -1,161 +1,167 @@
-# Membina Penyelesaian Pembelajaran Mesin dengan AI yang Bertanggungjawab
-
-
+# Membina penyelesaian Pembelajaran Mesin dengan AI bertanggungjawab
+
+
> Sketchnote oleh [Tomomi Imura](https://www.twitter.com/girlie_mac)
-## [Kuiz Pra-Kuliah](https://ff-quizzes.netlify.app/en/ml/)
-
+## [Kuiz pra-ceramah](https://ff-quizzes.netlify.app/en/ml/)
+
## Pengenalan
-Dalam kurikulum ini, anda akan mula meneroka bagaimana pembelajaran mesin boleh dan sedang memberi kesan kepada kehidupan seharian kita. Pada masa kini, sistem dan model terlibat dalam tugas membuat keputusan harian seperti diagnosis kesihatan, kelulusan pinjaman, atau pengesanan penipuan. Oleh itu, adalah penting bahawa model ini berfungsi dengan baik untuk memberikan hasil yang boleh dipercayai. Sama seperti mana-mana aplikasi perisian, sistem AI mungkin tidak memenuhi jangkaan atau menghasilkan hasil yang tidak diingini. Itulah sebabnya penting untuk memahami dan menjelaskan tingkah laku model AI.
+Dalam kurikulum ini, anda akan mula menemui bagaimana pembelajaran mesin boleh dan sedang mempengaruhi kehidupan seharian kita. Malah sekarang, sistem dan model terlibat dalam tugasan membuat keputusan harian, seperti diagnosis penjagaan kesihatan, kelulusan pinjaman atau mengesan penipuan. Oleh itu, adalah penting bahawa model-model ini berfungsi dengan baik untuk menyediakan hasil yang boleh dipercayai. Sama seperti mana-mana aplikasi perisian, sistem AI akan gagal memenuhi jangkaan atau mempunyai hasil yang tidak diingini. Justeru itu, adalah penting untuk memahami dan menjelaskan tingkah laku model AI.
-Bayangkan apa yang boleh berlaku apabila data yang anda gunakan untuk membina model ini kekurangan demografi tertentu seperti bangsa, jantina, pandangan politik, agama, atau secara tidak seimbang mewakili demografi tersebut. Bagaimana pula apabila output model ditafsirkan untuk memihak kepada sesetengah demografi? Apakah akibatnya kepada aplikasi tersebut? Selain itu, apa yang berlaku apabila model menghasilkan hasil yang buruk dan membahayakan orang? Siapa yang bertanggungjawab terhadap tingkah laku sistem AI? Ini adalah beberapa soalan yang akan kita terokai dalam kurikulum ini.
+Bayangkan apa yang boleh berlaku apabila data yang anda gunakan untuk membina model ini kekurangan demografi tertentu, seperti bangsa, jantina, pandangan politik, agama, atau secara tidak seimbang mewakili demografi tersebut. Bagaimana pula apabila output model ditafsirkan untuk memihak kepada sesetengah demografi? Apakah akibatnya untuk aplikasi tersebut? Selain itu, apa yang berlaku apabila model mempunyai hasil yang buruk dan membahayakan orang? Siapakah yang bertanggungjawab terhadap tingkah laku sistem AI? Ini adalah beberapa soalan yang akan kita terokai dalam kurikulum ini.
-Dalam pelajaran ini, anda akan:
+Dalam pelajaran ini, anda akan:
-- Meningkatkan kesedaran tentang kepentingan keadilan dalam pembelajaran mesin dan bahaya berkaitan keadilan.
-- Mengenali amalan meneroka outlier dan senario luar biasa untuk memastikan kebolehpercayaan dan keselamatan.
-- Memahami keperluan untuk memperkasakan semua orang dengan mereka bentuk sistem yang inklusif.
-- Meneroka betapa pentingnya melindungi privasi dan keselamatan data serta individu.
-- Melihat kepentingan pendekatan kotak kaca untuk menjelaskan tingkah laku model AI.
-- Berhati-hati tentang bagaimana akauntabiliti adalah penting untuk membina kepercayaan dalam sistem AI.
+- Meningkatkan kesedaran anda tentang kepentingan keadilan dalam pembelajaran mesin dan kemudaratan berkaitan keadilan.
+- Membiasakan diri dengan amalan meneroka outlier dan senario luar biasa untuk memastikan kebolehpercayaan dan keselamatan
+- Memperoleh pemahaman tentang keperluan memberdayakan semua orang dengan mereka bentuk sistem inklusif
+- Meneroka betapa pentingnya melindungi privasi dan keselamatan data dan orang
+- Melihat kepentingan mempunyai pendekatan kotak kaca untuk menerangkan tingkah laku model AI
+- Berhati-hati bagaimana akauntabiliti adalah penting untuk membina kepercayaan dalam sistem AI
## Prasyarat
-Sebagai prasyarat, sila ambil Laluan Pembelajaran "Prinsip AI yang Bertanggungjawab" dan tonton video di bawah mengenai topik ini:
+Sebagai prasyarat, sila ambil Laluan Pembelajaran "Prinsip AI Bertanggungjawab" dan tonton video di bawah mengenai topik ini:
-Ketahui lebih lanjut tentang AI yang Bertanggungjawab dengan mengikuti [Laluan Pembelajaran](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)
+Ketahui lebih lanjut mengenai AI Bertanggungjawab dengan mengikuti [Laluan Pembelajaran ini](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)
-[](https://youtu.be/dnC8-uUZXSc "Pendekatan Microsoft terhadap AI yang Bertanggungjawab")
+[](https://youtu.be/dnC8-uUZXSc "Pendekatan Microsoft terhadap AI Bertanggungjawab")
-> 🎥 Klik imej di atas untuk video: Pendekatan Microsoft terhadap AI yang Bertanggungjawab
+> 🎥 Klik imej di atas untuk video: Pendekatan Microsoft terhadap AI Bertanggungjawab
## Keadilan
-Sistem AI harus melayan semua orang dengan adil dan mengelakkan memberi kesan yang berbeza kepada kumpulan orang yang serupa. Sebagai contoh, apabila sistem AI memberikan panduan tentang rawatan perubatan, permohonan pinjaman, atau pekerjaan, ia harus memberikan cadangan yang sama kepada semua orang dengan simptom, keadaan kewangan, atau kelayakan profesional yang serupa. Setiap daripada kita sebagai manusia membawa bias yang diwarisi yang mempengaruhi keputusan dan tindakan kita. Bias ini boleh kelihatan dalam data yang kita gunakan untuk melatih sistem AI. Manipulasi sedemikian kadang-kadang berlaku secara tidak sengaja. Selalunya sukar untuk secara sedar mengetahui bila anda memperkenalkan bias dalam data.
+Sistem AI harus melayan semua orang dengan adil dan mengelakkan daripada mempengaruhi kumpulan orang yang serupa dengan cara yang berbeza. Sebagai contoh, apabila sistem AI memberikan panduan mengenai rawatan perubatan, permohonan pinjaman, atau pekerjaan, mereka harus membuat cadangan yang sama kepada semua orang dengan simptom, keadaan kewangan, atau kelayakan profesional yang serupa. Setiap daripada kita sebagai manusia membawa bias yang diwarisi yang mempengaruhi keputusan dan tindakan kita. Bias ini boleh jelas dalam data yang kita gunakan untuk melatih sistem AI. Manipulasi sedemikian kadangkala berlaku tanpa disedari. Selalunya sukar untuk sedar apabila anda memperkenalkan bias dalam data.
-**“Ketidakadilan”** merangkumi kesan negatif, atau “bahaya”, kepada sekumpulan orang, seperti yang ditakrifkan dalam istilah bangsa, jantina, umur, atau status kecacatan. Bahaya berkaitan keadilan utama boleh diklasifikasikan sebagai:
+**“Ketidakadilan”** merangkumi impak negatif, atau “kemudaratan”, untuk kumpulan orang, seperti yang ditakrifkan berdasarkan bangsa, jantina, umur, atau status kecacatan. Kemudaratan berkaitan keadilan yang utama boleh diklasifikasikan sebagai:
-- **Peruntukan**, jika jantina atau etnik, sebagai contoh, lebih diutamakan berbanding yang lain.
-- **Kualiti perkhidmatan**. Jika anda melatih data untuk satu senario tertentu tetapi realiti jauh lebih kompleks, ia membawa kepada perkhidmatan yang kurang berprestasi. Sebagai contoh, dispenser sabun tangan yang tidak dapat mengesan orang dengan kulit gelap. [Rujukan](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
-- **Pencemaran nama baik**. Mengkritik dan melabel sesuatu atau seseorang secara tidak adil. Sebagai contoh, teknologi pelabelan imej secara terkenal melabelkan imej orang berkulit gelap sebagai gorila.
-- **Perwakilan berlebihan atau kurang**. Idea bahawa kumpulan tertentu tidak dilihat dalam profesion tertentu, dan mana-mana perkhidmatan atau fungsi yang terus mempromosikan itu menyumbang kepada bahaya.
-- **Stereotaip**. Mengaitkan kumpulan tertentu dengan atribut yang telah ditetapkan. Sebagai contoh, sistem terjemahan bahasa antara Bahasa Inggeris dan Bahasa Turki mungkin mempunyai ketidaktepatan disebabkan oleh perkataan dengan kaitan stereotaip kepada jantina.
+- **Peruntukan**, jika jantina atau etnik contohnya dipilih berbanding yang lain.
+- **Kualiti perkhidmatan**. Jika anda melatih data untuk satu senario tertentu tetapi realiti adalah lebih kompleks, ia menghasilkan perkhidmatan yang berprestasi rendah. Contohnya, pelepas sabun tangan yang seolah-olah tidak dapat mengesan orang dengan kulit gelap. [Rujukan](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
+- **Pencemaran nama baik**. Mengkritik dan melabel sesuatu atau seseorang dengan tidak adil. Contohnya, teknologi pelabelan imej telah terkenal kerana salah melabel imej orang berkulit gelap sebagai gorila.
+- **Over- atau under- representasi**. Idea ini adalah bahawa sesetengah kumpulan tidak dilihat dalam profesion tertentu, dan mana-mana perkhidmatan atau fungsi yang terus mempromosikannya menyumbang kepada kemudaratan.
+- **Stereotaip**. Mengaitkan kumpulan tertentu dengan atribut yang telah ditetapkan sebelumnya. Contohnya, sistem terjemahan bahasa antara Bahasa Inggeris dan Turki mungkin mempunyai ketidaktepatan disebabkan oleh kata-kata yang mempunyai kaitan stereotaip dengan jantina.
-
-> terjemahan ke Bahasa Turki
+
+> terjemahan ke Turki
-
+
> terjemahan kembali ke Bahasa Inggeris
-Apabila mereka bentuk dan menguji sistem AI, kita perlu memastikan bahawa AI adalah adil dan tidak diprogramkan untuk membuat keputusan yang berat sebelah atau diskriminasi, yang juga dilarang untuk dibuat oleh manusia. Menjamin keadilan dalam AI dan pembelajaran mesin kekal sebagai cabaran sosio-teknikal yang kompleks.
+Apabila mereka bentuk dan menguji sistem AI, kita perlu memastikan AI adalah adil dan tidak diprogram untuk membuat keputusan berat sebelah atau diskriminasi, yang juga dilarang dilakukan oleh manusia. Menjamin keadilan dalam AI dan pembelajaran mesin kekal sebagai cabaran sosial teknikal yang kompleks.
### Kebolehpercayaan dan keselamatan
-Untuk membina kepercayaan, sistem AI perlu boleh dipercayai, selamat, dan konsisten di bawah keadaan biasa dan luar jangka. Adalah penting untuk mengetahui bagaimana sistem AI akan berkelakuan dalam pelbagai situasi, terutamanya apabila ia adalah outlier. Apabila membina penyelesaian AI, perlu ada fokus yang besar pada cara menangani pelbagai keadaan yang mungkin dihadapi oleh penyelesaian AI. Sebagai contoh, kereta pandu sendiri perlu meletakkan keselamatan orang sebagai keutamaan utama. Akibatnya, AI yang menggerakkan kereta perlu mempertimbangkan semua senario yang mungkin dihadapi oleh kereta seperti waktu malam, ribut petir atau salji, kanak-kanak berlari melintasi jalan, haiwan peliharaan, pembinaan jalan, dan sebagainya. Sejauh mana sistem AI boleh menangani pelbagai keadaan dengan kebolehpercayaan dan keselamatan mencerminkan tahap jangkaan yang dipertimbangkan oleh saintis data atau pembangun AI semasa mereka bentuk atau menguji sistem.
+Untuk membina kepercayaan, sistem AI perlu boleh dipercayai, selamat, dan konsisten di bawah keadaan normal dan tidak dijangka. Penting untuk mengetahui bagaimana sistem AI akan berkelakuan dalam pelbagai situasi, terutamanya apabila mereka adalah outlier. Apabila membina penyelesaian AI, perlu ada tumpuan besar pada cara menangani pelbagai keadaan yang mungkin ditemui oleh penyelesaian AI. Contohnya, kereta pandu sendiri perlu meletakkan keselamatan orang sebagai keutamaan utama. Akibatnya, AI yang menggerakkan kereta perlu mengambil kira semua senario yang mungkin dihadapi kereta seperti malam, ribut petir atau ribut salji, kanak-kanak berlari melintasi jalan, haiwan peliharaan, pembinaan jalan, dan sebagainya. Sejauh mana sistem AI dapat menangani pelbagai keadaan dengan boleh dipercayai dan selamat mencerminkan tahap jangkaan yang dipertimbangkan oleh saintis data atau pembangun AI semasa mereka bentuk atau menguji sistem itu.
> [🎥 Klik di sini untuk video: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
### Inklusiviti
-Sistem AI harus direka untuk melibatkan dan memperkasakan semua orang. Apabila mereka bentuk dan melaksanakan sistem AI, saintis data dan pembangun AI mengenal pasti dan menangani halangan yang berpotensi dalam sistem yang boleh secara tidak sengaja mengecualikan orang. Sebagai contoh, terdapat 1 bilion orang kurang upaya di seluruh dunia. Dengan kemajuan AI, mereka boleh mengakses pelbagai maklumat dan peluang dengan lebih mudah dalam kehidupan seharian mereka. Dengan menangani halangan, ia mencipta peluang untuk berinovasi dan membangunkan produk AI dengan pengalaman yang lebih baik yang memberi manfaat kepada semua orang.
+Sistem AI perlu direka untuk melibatkan dan memberdayakan semua orang. Apabila mereka bentuk dan melaksanakan sistem AI, saintis data dan pembangun AI mengenal pasti dan menangani halangan yang mungkin ada dalam sistem yang boleh secara tidak sengaja mengecualikan orang. Contohnya, terdapat 1 bilion orang kurang upaya di seluruh dunia. Dengan kemajuan AI, mereka boleh mengakses pelbagai maklumat dan peluang dengan lebih mudah dalam kehidupan harian mereka. Dengan menangani halangan, ia mewujudkan peluang untuk berinovasi dan membangunkan produk AI dengan pengalaman yang lebih baik yang memberi manfaat kepada semua orang.
> [🎥 Klik di sini untuk video: inklusiviti dalam AI](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
-### Keselamatan dan privasi
+### Keselamatan dan privasi
-Sistem AI harus selamat dan menghormati privasi orang. Orang kurang percaya kepada sistem yang meletakkan privasi, maklumat, atau nyawa mereka dalam risiko. Apabila melatih model pembelajaran mesin, kita bergantung pada data untuk menghasilkan hasil terbaik. Dalam melakukannya, asal usul data dan integriti mesti dipertimbangkan. Sebagai contoh, adakah data dihantar oleh pengguna atau tersedia secara umum? Seterusnya, semasa bekerja dengan data, adalah penting untuk membangunkan sistem AI yang boleh melindungi maklumat sulit dan menahan serangan. Apabila AI menjadi lebih meluas, melindungi privasi dan mengamankan maklumat peribadi dan perniagaan yang penting menjadi semakin kritikal dan kompleks. Isu privasi dan keselamatan data memerlukan perhatian yang sangat teliti untuk AI kerana akses kepada data adalah penting untuk sistem AI membuat ramalan dan keputusan yang tepat dan bermaklumat tentang orang.
+Sistem AI perlu selamat dan menghormati privasi orang. Orang kurang mempercayai sistem yang meletakkan privasi, maklumat, atau nyawa mereka berisiko. Apabila melatih model pembelajaran mesin, kita bergantung pada data untuk menghasilkan hasil terbaik. Dalam melakukan itu, asal usul data dan integritinya mesti diambil kira. Contohnya, adakah data tersebut dihantar oleh pengguna atau tersedia secara awam? Seterusnya, semasa bekerja dengan data, adalah penting untuk membangunkan sistem AI yang dapat melindungi maklumat sulit dan menahan serangan. Dengan AI menjadi lebih meluas, melindungi privasi dan mengamankan maklumat peribadi dan perniagaan yang penting menjadi semakin kritikal dan kompleks. Isu privasi dan keselamatan data memerlukan perhatian khusus untuk AI kerana akses kepada data adalah penting untuk sistem AI membuat ramalan dan keputusan tepat dan berinformasi mengenai orang.
> [🎥 Klik di sini untuk video: keselamatan dalam AI](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- Sebagai industri, kita telah membuat kemajuan yang ketara dalam privasi & keselamatan, yang didorong secara signifikan oleh peraturan seperti GDPR (Peraturan Perlindungan Data Umum).
-- Namun dengan sistem AI, kita mesti mengakui ketegangan antara keperluan untuk lebih banyak data peribadi untuk menjadikan sistem lebih peribadi dan berkesan – dan privasi.
-- Sama seperti kelahiran komputer yang disambungkan dengan internet, kita juga melihat peningkatan besar dalam jumlah isu keselamatan yang berkaitan dengan AI.
-- Pada masa yang sama, kita telah melihat AI digunakan untuk meningkatkan keselamatan. Sebagai contoh, kebanyakan pengimbas anti-virus moden didorong oleh heuristik AI hari ini.
-- Kita perlu memastikan bahawa proses Sains Data kita bergabung secara harmoni dengan amalan privasi dan keselamatan terkini.
+- Sebagai industri, kita telah membuat kemajuan ketara dalam Privasi & keselamatan, didorong dengan ketara oleh peraturan seperti GDPR (Peraturan Perlindungan Data Umum).
+- Namun dengan sistem AI kita mesti mengakui ketegangan antara keperluan data peribadi yang lebih banyak untuk menjadikan sistem lebih peribadi dan berkesan – dan privasi.
+- Sama seperti dengan kelahiran komputer berhubung dengan internet, kita juga melihat peningkatan besar dalam jumlah isu keselamatan berkaitan AI.
+- Pada masa yang sama, kita telah melihat AI digunakan untuk meningkatkan keselamatan. Sebagai contoh, kebanyakan pengimbas anti-virus moden kini dipacu oleh heuristik AI.
+- Kita perlu memastikan bahawa proses Sains Data kita bergabung secara harmoni dengan amalan privasi dan keselamatan terkini.
-### Ketelusan
-Sistem AI harus dapat difahami. Bahagian penting ketelusan adalah menjelaskan tingkah laku sistem AI dan komponennya. Meningkatkan pemahaman tentang sistem AI memerlukan pihak berkepentingan memahami bagaimana dan mengapa ia berfungsi supaya mereka dapat mengenal pasti isu prestasi yang berpotensi, kebimbangan keselamatan dan privasi, bias, amalan pengecualian, atau hasil yang tidak diingini. Kami juga percaya bahawa mereka yang menggunakan sistem AI harus jujur dan terbuka tentang bila, mengapa, dan bagaimana mereka memilih untuk menggunakannya. Serta batasan sistem yang mereka gunakan. Sebagai contoh, jika sebuah bank menggunakan sistem AI untuk menyokong keputusan pemberian pinjaman kepada pengguna, adalah penting untuk memeriksa hasilnya dan memahami data mana yang mempengaruhi cadangan sistem. Kerajaan mula mengawal selia AI merentasi industri, jadi saintis data dan organisasi mesti menjelaskan jika sistem AI memenuhi keperluan peraturan, terutamanya apabila terdapat hasil yang tidak diingini.
+### Ketelusan
+Sistem AI harus difahami. Bahagian penting ketelusan adalah menerangkan tingkah laku sistem AI dan komponennya. Meningkatkan pemahaman tentang sistem AI memerlukan pihak berkepentingan memahami bagaimana dan mengapa ia berfungsi supaya mereka dapat mengenal pasti isu prestasi yang berpotensi, kebimbangan keselamatan dan privasi, bias, amalan pengecualian, atau hasil yang tidak dijangka. Kami juga percaya bahawa mereka yang menggunakan sistem AI harus jujur dan terbuka mengenai bila, mengapa, dan bagaimana mereka memilih untuk menggunakannya. Serta had sistem yang mereka gunakan. Contohnya, jika sebuah bank menggunakan sistem AI untuk menyokong keputusan pemberian pinjaman pengguna, adalah penting untuk meneliti hasil dan memahami data mana yang mempengaruhi cadangan sistem. Kerajaan mula mengawal AI dalam pelbagai industri, jadi saintis data dan organisasi mesti menerangkan jika sistem AI memenuhi keperluan pengawalseliaan, terutama apabila terdapat hasil yang tidak diingini.
> [🎥 Klik di sini untuk video: ketelusan dalam AI](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- Oleh kerana sistem AI sangat kompleks, sukar untuk memahami bagaimana ia berfungsi dan mentafsir hasilnya.
-- Kekurangan pemahaman ini mempengaruhi cara sistem ini diuruskan, dioperasikan, dan didokumentasikan.
-- Kekurangan pemahaman ini lebih penting lagi mempengaruhi keputusan yang dibuat menggunakan hasil yang dihasilkan oleh sistem ini.
+- Kerana sistem AI sangat kompleks, sukar untuk memahami bagaimana ia berfungsi dan mentafsir hasilnya.
+- Kekurangan pemahaman ini mempengaruhi cara sistem ini diurus, dioperasikan, dan didokumentasikan.
+- Kekurangan pemahaman ini lebih penting mempengaruhi keputusan yang dibuat menggunakan hasil yang dihasilkan oleh sistem ini.
-### Akauntabiliti
+### Akauntabiliti
+
+Orang yang mereka bentuk dan melaksanakan sistem AI mesti bertanggungjawab terhadap bagaimana sistem mereka beroperasi. Keperluan untuk akauntabiliti adalah sangat penting dengan teknologi penggunaan sensitif seperti pengecaman wajah. Baru-baru ini, terdapat permintaan yang semakin meningkat untuk teknologi pengecaman wajah, terutama dari organisasi penguatkuasaan undang-undang yang melihat potensi teknologi dalam penggunaan seperti mencari kanak-kanak hilang. Namun, teknologi ini berpotensi digunakan oleh kerajaan untuk meletakkan kebebasan asas warganya berisiko dengan, contohnya, membolehkan pengawasan berterusan terhadap individu tertentu. Oleh itu, saintis data dan organisasi perlu bertanggungjawab terhadap bagaimana sistem AI mereka memberi kesan kepada individu atau masyarakat.
-Orang yang mereka bentuk dan menggunakan sistem AI mesti bertanggungjawab terhadap cara sistem mereka beroperasi. Keperluan untuk akauntabiliti amat penting dengan teknologi penggunaan sensitif seperti pengecaman wajah. Baru-baru ini, terdapat permintaan yang semakin meningkat untuk teknologi pengecaman wajah, terutamanya daripada organisasi penguatkuasaan undang-undang yang melihat potensi teknologi dalam kegunaan seperti mencari kanak-kanak yang hilang. Walau bagaimanapun, teknologi ini berpotensi digunakan oleh kerajaan untuk meletakkan kebebasan asas rakyat mereka dalam risiko dengan, sebagai contoh, membolehkan pengawasan berterusan terhadap individu tertentu. Oleh itu, saintis data dan organisasi perlu bertanggungjawab terhadap bagaimana sistem AI mereka memberi kesan kepada individu atau masyarakat.
+[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Pendekatan Microsoft terhadap AI Bertanggungjawab")
-[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Pendekatan Microsoft terhadap AI yang Bertanggungjawab")
+> 🎥 Klik imej di atas untuk video: Amaran Pengawasan Massa Melalui Pengecaman Wajah
-> 🎥 Klik imej di atas untuk video: Amaran tentang Pengawasan Massa Melalui Pengecaman Wajah
+Akhirnya satu daripada soalan terbesar untuk generasi kita, sebagai generasi pertama yang membawa AI ke masyarakat, ialah bagaimana memastikan komputer kekal bertanggungjawab kepada orang dan bagaimana memastikan orang yang mereka bentuk komputer kekal bertanggungjawab kepada semua orang lain.
-Akhirnya, salah satu soalan terbesar untuk generasi kita, sebagai generasi pertama yang membawa AI kepada masyarakat, adalah bagaimana memastikan komputer akan kekal bertanggungjawab kepada manusia dan bagaimana memastikan orang yang mereka bentuk komputer kekal bertanggungjawab kepada semua orang.
+## Penilaian impak
-## Penilaian Impak
+Sebelum melatih model pembelajaran mesin, adalah penting untuk menjalankan penilaian impak untuk memahami tujuan sistem AI; apakah penggunaan yang dimaksudkan; di mana ia akan digunakan; dan siapa yang akan berinteraksi dengan sistem. Ini berguna untuk penilai atau penguji menilai sistem supaya tahu faktor apa yang perlu dipertimbangkan apabila mengenal pasti risiko berpotensi dan akibat yang dijangkakan.
-Sebelum melatih model pembelajaran mesin, adalah penting untuk menjalankan penilaian impak untuk memahami tujuan sistem AI; apa kegunaan yang dimaksudkan; di mana ia akan digunakan; dan siapa yang akan berinteraksi dengan sistem tersebut. Ini berguna untuk pengulas atau penguji yang menilai sistem untuk mengetahui faktor apa yang perlu dipertimbangkan semasa mengenal pasti risiko yang berpotensi dan akibat yang dijangkakan.
+Berikut adalah bidang tumpuan apabila menjalankan penilaian impak:
-Berikut adalah kawasan fokus semasa menjalankan penilaian impak:
+* **Impak buruk ke atas individu**. Sedar tentang sebarang had atau keperluan, penggunaan yang tidak disokong atau sebarang had yang diketahui yang menghalang prestasi sistem adalah penting untuk memastikan sistem tidak digunakan dengan cara yang boleh membahayakan individu.
+* **Keperluan data**. Memperoleh pemahaman tentang bagaimana dan di mana sistem akan menggunakan data membolehkan penilai meneroka sebarang keperluan data yang perlu diambil kira (contohnya, peraturan data GDPR atau HIPAA). Selain itu, periksa sama ada sumber atau kuantiti data mencukupi untuk latihan.
+* **Ringkasan impak**. Kumpul senarai kemudaratan berpotensi yang boleh timbul daripada menggunakan sistem. Sepanjang kitaran hayat ML, semak jika isu yang dikenal pasti telah dikurangkan atau ditangani.
+* **Matlamat yang boleh digunakan** untuk setiap prinsip teras yang enam. Nilai sama ada matlamat dari setiap prinsip telah dipenuhi dan jika terdapat sebarang jurang.
-* **Kesan buruk terhadap individu**. Menyedari sebarang sekatan atau keperluan, penggunaan yang tidak disokong atau sebarang batasan yang diketahui yang menghalang prestasi sistem adalah penting untuk memastikan sistem tidak digunakan dengan cara yang boleh menyebabkan bahaya kepada individu.
-* **Keperluan data**. Memahami bagaimana dan di mana sistem akan menggunakan data membolehkan pengulas meneroka sebarang keperluan data yang perlu anda perhatikan (contohnya, peraturan data GDPR atau HIPPA). Selain itu, periksa sama ada sumber atau kuantiti data adalah mencukupi untuk latihan.
-* **Ringkasan impak**. Kumpulkan senarai potensi bahaya yang boleh timbul daripada menggunakan sistem. Sepanjang kitaran hayat ML, semak sama ada isu yang dikenal pasti telah dikurangkan atau ditangani.
-* **Matlamat yang boleh digunakan** untuk setiap enam prinsip teras. Nilai sama ada matlamat daripada setiap prinsip telah dicapai dan jika terdapat sebarang jurang.
-## Debugging dengan AI yang Bertanggungjawab
+## Penyahpepijatan dengan AI bertanggungjawab
-Sama seperti debugging aplikasi perisian, debugging sistem AI adalah proses yang diperlukan untuk mengenal pasti dan menyelesaikan isu dalam sistem. Terdapat banyak faktor yang boleh mempengaruhi model tidak berprestasi seperti yang diharapkan atau bertanggungjawab. Kebanyakan metrik prestasi model tradisional adalah agregat kuantitatif prestasi model, yang tidak mencukupi untuk menganalisis bagaimana model melanggar prinsip AI yang bertanggungjawab. Tambahan pula, model pembelajaran mesin adalah kotak hitam yang menjadikannya sukar untuk memahami apa yang mendorong hasilnya atau memberikan penjelasan apabila ia membuat kesilapan. Kemudian dalam kursus ini, kita akan belajar bagaimana menggunakan papan pemuka AI yang Bertanggungjawab untuk membantu debugging sistem AI. Papan pemuka menyediakan alat holistik untuk saintis data dan pembangun AI untuk melaksanakan:
+Sama seperti menyahpepijat aplikasi perisian, penyahpepijatan sistem AI adalah proses yang perlu untuk mengenal pasti dan menyelesaikan isu dalam sistem. Terdapat banyak faktor yang boleh menyebabkan model tidak berprestasi seperti yang dijangka atau secara bertanggungjawab. Kebanyakan metrik prestasi model tradisional adalah agregat kuantitatif prestasi model, yang tidak mencukupi untuk menganalisis bagaimana model melanggar prinsip AI bertanggungjawab. Lebih-lebih lagi, model pembelajaran mesin adalah kotak hitam yang menyukarkan untuk memahami apa yang mendorong hasilnya atau memberikan penjelasan apabila ia melakukan kesilapan. Nanti dalam kursus ini, kita akan belajar bagaimana menggunakan papan pemuka AI bertanggungjawab untuk membantu menyahpepijat sistem AI. Papan pemuka menyediakan alat holistik untuk saintis data dan pembangun AI untuk melakukan:
-* **Analisis ralat**. Untuk mengenal pasti pengedaran ralat model yang boleh menjejaskan keadilan atau kebolehpercayaan sistem.
-* **Gambaran keseluruhan model**. Untuk menemui di mana terdapat perbezaan dalam prestasi model merentasi kohort data.
-* **Analisis data**. Untuk memahami pengedaran data dan mengenal pasti sebarang potensi bias dalam data yang boleh membawa kepada isu keadilan, inklusiviti, dan kebolehpercayaan.
-* **Kebolehinterpretasian model**. Untuk memahami apa yang mempengaruhi atau mempengaruhi ramalan model. Ini membantu dalam menjelaskan tingkah laku model, yang penting untuk ketelusan dan akauntabiliti.
+* **Analisis ralat**. Untuk mengenal pasti taburan ralat model yang boleh menjejaskan keadilan atau kebolehpercayaan sistem.
+* **Sorotan model**. Untuk menemui di mana terdapat ketidaksamaan dalam prestasi model merentasi kumpulan data.
+* **Analisis data**. Untuk memahami taburan data dan mengenal pasti sebarang bias berpotensi dalam data yang boleh menyebabkan isu keadilan, inklusiviti, dan kebolehpercayaan.
+* **Kebolehtafsiran model**. Untuk memahami apa yang mempengaruhi atau memberi kesan pada ramalan model. Ini membantu dalam menerangkan tingkah laku model, yang penting untuk ketelusan dan akauntabiliti.
-## 🚀 Cabaran
-Untuk mengelakkan bahaya daripada diperkenalkan sejak awal, kita harus:
+## 🚀 Cabaran
+
+Untuk mencegah kemudaratan diperkenalkan pada mulanya, kita harus:
-- mempunyai kepelbagaian latar belakang dan perspektif di kalangan orang yang bekerja pada sistem
-- melabur dalam set data yang mencerminkan kepelbagaian masyarakat kita
-- membangunkan kaedah yang lebih baik sepanjang kitaran hayat pembelajaran mesin untuk mengesan dan membetulkan AI yang bertanggungjawab apabila ia berlaku
+- mempunyai kepelbagaian latar belakang dan perspektif dalam kalangan orang yang bekerja pada sistem
+- melabur dalam set data yang mencerminkan kepelbagaian masyarakat kita
+- membangunkan kaedah yang lebih baik sepanjang kitaran hayat pembelajaran mesin untuk mengesan dan membetulkan AI bertanggungjawab apabila ia berlaku
-Fikirkan tentang senario kehidupan sebenar di mana ketidakpercayaan model jelas dalam pembinaan dan penggunaan model. Apa lagi yang perlu kita pertimbangkan?
+Fikirkan tentang senario dalam kehidupan sebenar di mana ketidakpercayaan model jelas dalam pembinaan dan penggunaan model. Apa lagi yang perlu kita pertimbangkan?
-## [Kuiz Pasca-Kuliah](https://ff-quizzes.netlify.app/en/ml/)
+## [Kuiz pasca-ceramah](https://ff-quizzes.netlify.app/en/ml/)
-## Ulasan & Kajian Kendiri
+## Ulasan & Kajian Kendiri
+
-Dalam pelajaran ini, anda telah mempelajari beberapa asas konsep keadilan dan ketidakadilan dalam pembelajaran mesin.
-Tonton bengkel ini untuk mendalami topik:
+Dalam pelajaran ini, anda telah mempelajari beberapa asas konsep keadilan dan ketidakadilan dalam pembelajaran mesin.
+
+Tonton bengkel ini untuk mendalami topik-topik berikut:
-- Dalam usaha AI yang bertanggungjawab: Membawa prinsip ke amalan oleh Besmira Nushi, Mehrnoosh Sameki dan Amit Sharma
+- Mengejar AI yang bertanggungjawab: Membawa prinsip ke amalan oleh Besmira Nushi, Mehrnoosh Sameki dan Amit Sharma
-[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: Kerangka sumber terbuka untuk membina AI yang bertanggungjawab")
+[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI")
-> 🎥 Klik imej di atas untuk video: RAI Toolbox: Kerangka sumber terbuka untuk membina AI yang bertanggungjawab oleh Besmira Nushi, Mehrnoosh Sameki, dan Amit Sharma
+> 🎥 Klik imej di atas untuk menonton video: RAI Toolbox: Rangka kerja sumber terbuka untuk membina AI yang bertanggungjawab oleh Besmira Nushi, Mehrnoosh Sameki, dan Amit Sharma
-Juga, baca:
+Juga, baca:
-- Pusat sumber RAI Microsoft: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
+- Pusat sumber RAI Microsoft: [Sumber AI Bertanggungjawab – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
-- Kumpulan penyelidikan FATE Microsoft: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
+- Kumpulan penyelidikan FATE Microsoft: [FATE: Keadilan, Akauntabiliti, Ketelusan, dan Etika dalam AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
-RAI Toolbox:
+Kotak Alat RAI:
-- [Repositori GitHub Responsible AI Toolbox](https://github.com/microsoft/responsible-ai-toolbox)
+- [Repositori GitHub Kotak Alat AI Bertanggungjawab](https://github.com/microsoft/responsible-ai-toolbox)
Baca tentang alat Azure Machine Learning untuk memastikan keadilan:
-- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
+- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
## Tugasan
-[Terokai RAI Toolbox](assignment.md)
+[Terokai Kotak Alat RAI](assignment.md)
---
-**Penafian**:
-Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini.
\ No newline at end of file
+
+**Penafian**:
+Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang sahih. Untuk maklumat penting, terjemahan oleh manusia profesional adalah disyorkan. Kami tidak bertanggungjawab terhadap sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini.
+
\ No newline at end of file
diff --git a/translations/ms/2-Regression/1-Tools/README.md b/translations/ms/2-Regression/1-Tools/README.md
index 9beb873c6..2e89e17e5 100644
--- a/translations/ms/2-Regression/1-Tools/README.md
+++ b/translations/ms/2-Regression/1-Tools/README.md
@@ -1,55 +1,55 @@
-# Bermula dengan Python dan Scikit-learn untuk model regresi
+# Mulakan dengan Python dan Scikit-learn untuk model regresi
-
+
-> Sketchnote oleh [Tomomi Imura](https://www.twitter.com/girlie_mac)
+> Nota lakaran oleh [Tomomi Imura](https://www.twitter.com/girlie_mac)
-## [Kuiz sebelum kuliah](https://ff-quizzes.netlify.app/en/ml/)
+## [Kuiz pra-ceramah](https://ff-quizzes.netlify.app/en/ml/)
> ### [Pelajaran ini tersedia dalam R!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
## Pengenalan
-Dalam empat pelajaran ini, anda akan belajar cara membina model regresi. Kita akan membincangkan kegunaannya sebentar lagi. Tetapi sebelum memulakan apa-apa, pastikan anda mempunyai alat yang betul untuk memulakan proses ini!
+Dalam empat pelajaran ini, anda akan menemui cara membina model regresi. Kami akan membincangkan kegunaannya sebentar lagi. Tetapi sebelum anda melakukan apa-apa, pastikan anda mempunyai alat yang betul untuk memulakan proses ini!
-Dalam pelajaran ini, anda akan belajar cara:
+Dalam pelajaran ini, anda akan belajar bagaimana:
-- Mengkonfigurasi komputer anda untuk tugas pembelajaran mesin secara tempatan.
-- Bekerja dengan Jupyter notebooks.
+- Mengkonfigurasi komputer anda untuk tugasan pembelajaran mesin tempatan.
+- Bekerja dengan Jupyter Notebooks.
- Menggunakan Scikit-learn, termasuk pemasangan.
-- Meneroka regresi linear melalui latihan praktikal.
+- Meneroka regresi linear dengan latihan praktikal.
## Pemasangan dan konfigurasi
[](https://youtu.be/-DfeD2k2Kj0 "ML untuk pemula - Sediakan alat anda untuk membina model Pembelajaran Mesin")
-> 🎥 Klik imej di atas untuk video pendek tentang cara mengkonfigurasi komputer anda untuk ML.
+> 🎥 Klik imej di atas untuk video pendek mengenai cara mengkonfigurasi komputer anda untuk ML.
-1. **Pasang Python**. Pastikan [Python](https://www.python.org/downloads/) dipasang pada komputer anda. Anda akan menggunakan Python untuk banyak tugas sains data dan pembelajaran mesin. Kebanyakan sistem komputer sudah mempunyai Python yang dipasang. Terdapat juga [Pakej Pengkodan Python](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) yang berguna untuk memudahkan pemasangan bagi sesetengah pengguna.
+1. **Pasang Python**. Pastikan [Python](https://www.python.org/downloads/) dipasang pada komputer anda. Anda akan menggunakan Python untuk banyak tugasan sains data dan pembelajaran mesin. Kebanyakan sistem komputer sudah termasuk pemasangan Python. Terdapat juga [Pakej Kod Python](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) yang berguna untuk memudahkan penyediaan bagi sesetengah pengguna.
- Walau bagaimanapun, beberapa penggunaan Python memerlukan satu versi perisian, manakala yang lain memerlukan versi yang berbeza. Oleh itu, adalah berguna untuk bekerja dalam [persekitaran maya](https://docs.python.org/3/library/venv.html).
+ Walau bagaimanapun, beberapa kegunaan Python memerlukan versi perisian yang berbeza. Oleh itu, adalah berguna untuk bekerja dalam [persekitaran maya](https://docs.python.org/3/library/venv.html).
-2. **Pasang Visual Studio Code**. Pastikan anda mempunyai Visual Studio Code yang dipasang pada komputer anda. Ikuti arahan ini untuk [memasang Visual Studio Code](https://code.visualstudio.com/) untuk pemasangan asas. Anda akan menggunakan Python dalam Visual Studio Code dalam kursus ini, jadi anda mungkin ingin menyegarkan pengetahuan anda tentang cara [mengkonfigurasi Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) untuk pembangunan Python.
+2. **Pasang Visual Studio Code**. Pastikan Visual Studio Code dipasang pada komputer anda. Ikuti arahan ini untuk [memasang Visual Studio Code](https://code.visualstudio.com/) bagi pemasangan asas. Anda akan menggunakan Python dalam Visual Studio Code dalam kursus ini, jadi anda mungkin mahu mengasah kemahiran bagaimana untuk [mengkonfigurasi Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) untuk pembangunan Python.
- > Biasakan diri dengan Python dengan melalui koleksi [modul pembelajaran ini](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)
+ > Biasakan diri dengan Python dengan melalui koleksi [modul Pembelajaran](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)
>
- > [](https://youtu.be/yyQM70vi7V8 "Sediakan Python dengan Visual Studio Code")
+ > [](https://youtu.be/yyQM70vi7V8 "Pasang Python dengan Visual Studio Code")
>
> 🎥 Klik imej di atas untuk video: menggunakan Python dalam VS Code.
-3. **Pasang Scikit-learn**, dengan mengikuti [arahan ini](https://scikit-learn.org/stable/install.html). Oleh kerana anda perlu memastikan bahawa anda menggunakan Python 3, disarankan agar anda menggunakan persekitaran maya. Perhatikan, jika anda memasang pustaka ini pada Mac M1, terdapat arahan khas pada halaman yang dipautkan di atas.
+3. **Pasang Scikit-learn**, dengan mengikuti [arahan ini](https://scikit-learn.org/stable/install.html). Oleh kerana anda perlu memastikan menggunakan Python 3, adalah disyorkan menggunakan persekitaran maya. Nota, jika anda memasang perpustakaan ini pada Mac M1, terdapat arahan khas di halaman pautan di atas.
-4. **Pasang Jupyter Notebook**. Anda perlu [memasang pakej Jupyter](https://pypi.org/project/jupyter/).
+1. **Pasang Jupyter Notebook**. Anda perlu [memasang pakej Jupyter](https://pypi.org/project/jupyter/).
-## Persekitaran pengarang ML anda
+## Persekitaran penulisan ML anda
-Anda akan menggunakan **notebooks** untuk membangunkan kod Python anda dan mencipta model pembelajaran mesin. Jenis fail ini adalah alat biasa untuk saintis data, dan ia boleh dikenalpasti melalui akhiran atau sambungan `.ipynb`.
+Anda akan menggunakan **notebook** untuk membangunkan kod Python dan mencipta model pembelajaran mesin. Jenis fail ini adalah alat biasa untuk saintis data, dan ia boleh dikenali melalui akhiran atau sambungan `.ipynb`.
-Notebooks adalah persekitaran interaktif yang membolehkan pembangun untuk menulis kod serta menambah nota dan dokumentasi di sekitar kod, yang sangat berguna untuk projek eksperimen atau berorientasikan penyelidikan.
+Notebook ialah persekitaran interaktif yang membolehkan pembangun menulis kod dan menambah nota serta dokumentasi di sekitar kod yang sangat membantu untuk projek eksperimen atau berorientasikan penyelidikan.
[](https://youtu.be/7E-jC8FLA2E "ML untuk pemula - Sediakan Jupyter Notebooks untuk mula membina model regresi")
-> 🎥 Klik imej di atas untuk video pendek melalui latihan ini.
+> 🎥 Klik imej di atas untuk video pendek yang menunjukkan latihan ini.
### Latihan - bekerja dengan notebook
@@ -57,62 +57,63 @@ Dalam folder ini, anda akan menemui fail _notebook.ipynb_.
1. Buka _notebook.ipynb_ dalam Visual Studio Code.
- Pelayan Jupyter akan bermula dengan Python 3+ dimulakan. Anda akan menemui kawasan dalam notebook yang boleh `dijalankan`, iaitu potongan kod. Anda boleh menjalankan blok kod dengan memilih ikon yang kelihatan seperti butang main.
+ Pelayan Jupyter akan bermula dengan Python 3+ dimulakan. Anda akan menjumpai bahagian notebook yang boleh `run`, potongan kod. Anda boleh menjalankan blok kod dengan memilih ikon yang kelihatan seperti butang main.
-2. Pilih ikon `md` dan tambahkan sedikit markdown, serta teks berikut **# Selamat datang ke notebook anda**.
+1. Pilih ikon `md` dan tambahkan sedikit markdown, serta teks berikut **# Selamat datang ke notebook anda**.
- Seterusnya, tambahkan beberapa kod Python.
+ Seterusnya, tambah sedikit kod Python.
-3. Taip **print('hello notebook')** dalam blok kod.
-4. Pilih anak panah untuk menjalankan kod.
+1. Taip **print('hello notebook')** dalam blok kod.
+1. Pilih anak panah untuk menjalankan kod.
- Anda sepatutnya melihat kenyataan yang dicetak:
+ Anda harus melihat pernyataan cetak:
```output
hello notebook
```
-
+
-Anda boleh menyelitkan kod anda dengan komen untuk mendokumentasikan notebook secara sendiri.
+Anda boleh menyelingi kod anda dengan komen untuk mendokumentasikan notebook secara sendiri.
-✅ Fikirkan sebentar tentang betapa berbezanya persekitaran kerja pembangun web berbanding dengan saintis data.
+✅ Fikirkan sekejap bagaimana persekitaran kerja pembangun web berbeza dengan persekitaran saintis data.
-## Memulakan dengan Scikit-learn
+## Bersedia dengan Scikit-learn
-Sekarang Python telah disediakan dalam persekitaran tempatan anda, dan anda sudah selesa dengan Jupyter notebooks, mari kita menjadi sama selesa dengan Scikit-learn (disebut `sci` seperti dalam `science`). Scikit-learn menyediakan [API yang luas](https://scikit-learn.org/stable/modules/classes.html#api-ref) untuk membantu anda melaksanakan tugas ML.
+Sekarang Python telah disediakan dalam persekitaran tempatan anda, dan anda sudah selesa dengan Jupyter Notebooks, mari kita juga biasa dengan Scikit-learn (sebut `sci` seperti dalam `science`). Scikit-learn menyediakan [API yang luas](https://scikit-learn.org/stable/modules/classes.html#api-ref) untuk membantu anda melaksanakan tugasan ML.
-Menurut [laman web mereka](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn adalah pustaka pembelajaran mesin sumber terbuka yang menyokong pembelajaran terarah dan tidak terarah. Ia juga menyediakan pelbagai alat untuk pemasangan model, prapemprosesan data, pemilihan model dan penilaian, serta banyak utiliti lain."
+Menurut [laman web mereka](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn adalah perpustakaan pembelajaran mesin sumber terbuka yang menyokong pembelajaran terpantau dan tidak terpantau. Ia juga menyediakan pelbagai alat untuk pemasangan model, prapengendalian data, pemilihan dan penilaian model, dan banyak utiliti lain."
-Dalam kursus ini, anda akan menggunakan Scikit-learn dan alat lain untuk membina model pembelajaran mesin untuk melaksanakan apa yang kita panggil tugas 'pembelajaran mesin tradisional'. Kami sengaja mengelakkan rangkaian neural dan pembelajaran mendalam, kerana ia lebih sesuai diliputi dalam kurikulum 'AI untuk Pemula' kami yang akan datang.
+Dalam kursus ini, anda akan menggunakan Scikit-learn dan alat lain untuk membina model pembelajaran mesin bagi melaksanakan apa yang kami panggil tugasan 'pembelajaran mesin tradisional'. Kami sengaja mengelakkan rangkaian neural dan pembelajaran mendalam kerana ia lebih sesuai dibincangkan dalam kurikulum 'AI untuk Pemula' yang akan datang.
-Scikit-learn memudahkan untuk membina model dan menilai mereka untuk digunakan. Ia terutamanya memberi tumpuan kepada penggunaan data berangka dan mengandungi beberapa dataset siap sedia untuk digunakan sebagai alat pembelajaran. Ia juga termasuk model pra-bina untuk pelajar mencuba. Mari kita terokai proses memuatkan data yang telah dipakejkan dan menggunakan estimator terbina untuk model ML pertama dengan Scikit-learn menggunakan data asas.
+Scikit-learn memudahkan pembangunan model dan penilaiannya untuk kegunaan. Ia terutamanya fokus pada penggunaan data berangka dan mengandungi beberapa set data siap guna sebagai alat pembelajaran. Ia juga termasuk model terbina khas untuk pelajar cuba. Mari kita teroka proses memuatkan data pra-pakej dan menggunakan penilai terbina dalam model ML pertama dengan Scikit-learn menggunakan data asas.
## Latihan - notebook Scikit-learn pertama anda
> Tutorial ini diilhamkan oleh [contoh regresi linear](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) di laman web Scikit-learn.
-[](https://youtu.be/2xkXL5EUpS0 "ML untuk pemula - Projek Regresi Linear Pertama Anda dalam Python")
-> 🎥 Klik imej di atas untuk video pendek melalui latihan ini.
+[](https://youtu.be/2xkXL5EUpS0 "ML untuk pemula - Projek Regresi Linear Pertama anda dalam Python")
-Dalam fail _notebook.ipynb_ yang berkaitan dengan pelajaran ini, kosongkan semua sel dengan menekan ikon 'tong sampah'.
+> 🎥 Klik imej di atas untuk video pendek yang menunjukkan latihan ini.
-Dalam bahagian ini, anda akan bekerja dengan dataset kecil tentang diabetes yang dibina dalam Scikit-learn untuk tujuan pembelajaran. Bayangkan anda ingin menguji rawatan untuk pesakit diabetes. Model Pembelajaran Mesin mungkin membantu anda menentukan pesakit mana yang akan memberi tindak balas lebih baik terhadap rawatan, berdasarkan gabungan pembolehubah. Malah model regresi yang sangat asas, apabila divisualisasikan, mungkin menunjukkan maklumat tentang pembolehubah yang akan membantu anda mengatur ujian klinikal teori anda.
+Dalam fail _notebook.ipynb_ yang berkaitan dengan pelajaran ini, bersihkan semua sel dengan menekan ikon 'tong sampah'.
-✅ Terdapat banyak jenis kaedah regresi, dan yang mana anda pilih bergantung pada jawapan yang anda cari. Jika anda ingin meramalkan ketinggian yang mungkin untuk seseorang berdasarkan umur tertentu, anda akan menggunakan regresi linear, kerana anda mencari **nilai berangka**. Jika anda berminat untuk mengetahui sama ada jenis masakan harus dianggap vegan atau tidak, anda mencari **penugasan kategori**, jadi anda akan menggunakan regresi logistik. Anda akan belajar lebih lanjut tentang regresi logistik kemudian. Fikirkan sedikit tentang beberapa soalan yang boleh anda tanyakan kepada data, dan kaedah mana yang lebih sesuai.
+Dalam seksyen ini, anda akan bekerja dengan set data kecil tentang diabetes yang dibina dalam Scikit-learn untuk tujuan pembelajaran. Bayangkan anda ingin menguji rawatan untuk pesakit diabetes. Model Pembelajaran Mesin mungkin membantu anda menentukan pesakit mana yang akan memberi tindak balas lebih baik kepada rawatan berdasarkan gabungan pembolehubah. Walaupun model regresi yang sangat asas, apabila divisualisasikan, mungkin menunjukkan maklumat tentang pembolehubah yang membantu anda mengatur ujian klinikal teori anda.
-Mari kita mulakan tugas ini.
+✅ Terdapat banyak jenis kaedah regresi, dan pilihan anda bergantung pada jawapan yang anda cari. Jika anda ingin meramalkan tinggi badan yang mungkin bagi seseorang pada umur tertentu, anda akan menggunakan regresi linear kerana anda mencari **nilai berangka**. Jika anda berminat untuk mengetahui sama ada jenis masakan dianggap vegan atau tidak, anda mencari **penentuan kategori**, jadi anda akan menggunakan regresi logistik. Anda akan belajar lebih lanjut tentang regresi logistik nanti. Fikirkan sedikit tentang beberapa soalan yang anda boleh ajukan kepada data, dan kaedah mana yang lebih sesuai.
-### Import pustaka
+Mari kita mula tugasan ini.
-Untuk tugas ini, kita akan mengimport beberapa pustaka:
+### Import perpustakaan
-- **matplotlib**. Ia adalah alat [grafik yang berguna](https://matplotlib.org/) dan kita akan menggunakannya untuk mencipta plot garis.
-- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) adalah pustaka berguna untuk mengendalikan data berangka dalam Python.
-- **sklearn**. Ini adalah pustaka [Scikit-learn](https://scikit-learn.org/stable/user_guide.html).
+Untuk tugasan ini kita akan import beberapa perpustakaan:
-Import beberapa pustaka untuk membantu tugas anda.
+- **matplotlib**. Ia ialah [alat graf](https://matplotlib.org/) yang berguna dan kami akan menggunakannya untuk membuat plot garis.
+- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) adalah perpustakaan berguna untuk mengendalikan data berangka dalam Python.
+- **sklearn**. Ini adalah perpustakaan [Scikit-learn](https://scikit-learn.org/stable/user_guide.html).
+
+Import beberapa perpustakaan untuk membantu anda dalam tugasan.
1. Tambahkan import dengan menaip kod berikut:
@@ -122,26 +123,26 @@ Import beberapa pustaka untuk membantu tugas anda.
from sklearn import datasets, linear_model, model_selection
```
- Di atas, anda mengimport `matplotlib`, `numpy` dan anda mengimport `datasets`, `linear_model` dan `model_selection` dari `sklearn`. `model_selection` digunakan untuk membahagikan data kepada set latihan dan ujian.
+ Di atas anda mengimport `matplotlib`, `numpy` dan anda mengimport `datasets`, `linear_model` dan `model_selection` dari `sklearn`. `model_selection` digunakan untuk membahagikan data kepada set latihan dan ujian.
-### Dataset diabetes
+### Set data diabetes
-Dataset [diabetes](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) yang dibina dalam Scikit-learn termasuk 442 sampel data tentang diabetes, dengan 10 pembolehubah ciri, beberapa daripadanya termasuk:
+Set data bawaan [diabetes](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) mengandungi 442 sampel data diabetes, dengan 10 pembolehubah ciri, beberapa daripadanya termasuk:
-- age: umur dalam tahun
+- umur: umur dalam tahun
- bmi: indeks jisim badan
- bp: tekanan darah purata
-- s1 tc: T-Cells (sejenis sel darah putih)
+- s1 tc: Sel T (sejenis sel darah putih)
-✅ Dataset ini termasuk konsep 'sex' sebagai pembolehubah ciri yang penting untuk penyelidikan tentang diabetes. Banyak dataset perubatan termasuk jenis klasifikasi binari ini. Fikirkan sedikit tentang bagaimana pengkategorian seperti ini mungkin mengecualikan bahagian tertentu populasi daripada rawatan.
+✅ Set data ini termasuk konsep 'jantina' sebagai pembolehubah ciri penting dalam penyelidikan diabetes. Banyak set data perubatan mengandungi klasifikasi binari seperti ini. Fikirkan sedikit bagaimana pengelasan seperti ini mungkin mengecualikan sebahagian populasi daripada rawatan.
-Sekarang, muatkan data X dan y.
+Sekarang, muat naik data X dan y.
-> 🎓 Ingat, ini adalah pembelajaran terarah, dan kita memerlukan sasaran 'y' yang bernama.
+> 🎓 Ingat, ini adalah pembelajaran terpantau, dan kita perlu ada sasaran 'y' yang dinamakan.
-Dalam sel kod baru, muatkan dataset diabetes dengan memanggil `load_diabetes()`. Input `return_X_y=True` menandakan bahawa `X` akan menjadi matriks data, dan `y` akan menjadi sasaran regresi.
+Dalam sel kod baru, muat set data diabetes dengan memanggil `load_diabetes()`. Input `return_X_y=True` memberitahu bahawa `X` akan menjadi matriks data, dan `y` akan menjadi sasaran regresi.
-1. Tambahkan beberapa arahan cetak untuk menunjukkan bentuk matriks data dan elemen pertamanya:
+1. Tambah beberapa perintah print untuk menunjukkan bentuk matriks data dan unsur pertamanya:
```python
X, y = datasets.load_diabetes(return_X_y=True)
@@ -149,9 +150,9 @@ Dalam sel kod baru, muatkan dataset diabetes dengan memanggil `load_diabetes()`.
print(X[0])
```
- Apa yang anda dapat sebagai respons adalah tuple. Apa yang anda lakukan adalah menetapkan dua nilai pertama tuple kepada `X` dan `y` masing-masing. Ketahui lebih lanjut [tentang tuple](https://wikipedia.org/wiki/Tuple).
+ Apa yang anda dapat balik sebagai respons, ialah tuple. Anda sedang memberikan dua nilai pertama tuple kepada `X` dan `y` secara berasingan. Ketahui lebih lanjut [ mengenai tuple](https://wikipedia.org/wiki/Tuple).
- Anda boleh melihat bahawa data ini mempunyai 442 item yang dibentuk dalam array 10 elemen:
+ Anda boleh lihat data ini ada 442 item yang dibentuk dalam array 10 elemen:
```text
(442, 10)
@@ -159,9 +160,9 @@ Dalam sel kod baru, muatkan dataset diabetes dengan memanggil `load_diabetes()`.
-0.04340085 -0.00259226 0.01990842 -0.01764613]
```
- ✅ Fikirkan sedikit tentang hubungan antara data dan sasaran regresi. Regresi linear meramalkan hubungan antara ciri X dan pembolehubah sasaran y. Bolehkah anda mencari [sasaran](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) untuk dataset diabetes dalam dokumentasi? Apa yang dataset ini tunjukkan, memandangkan sasaran?
+ ✅ Fikirkan sedikit tentang hubungan antara data dan sasaran regresi. Regresi linear meramalkan hubungan antara ciri X dan pembolehubah sasaran y. Bolehkah anda temukan [sasaran](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) untuk set data diabetes dalam dokumentasi? Apakah yang dataset ini demonstrasikan, memandangkan sasaran itu?
-2. Seterusnya, pilih sebahagian dataset ini untuk diplot dengan memilih lajur ke-3 dataset. Anda boleh melakukannya dengan menggunakan operator `:` untuk memilih semua baris, dan kemudian memilih lajur ke-3 menggunakan indeks (2). Anda juga boleh membentuk semula data menjadi array 2D - seperti yang diperlukan untuk plot - dengan menggunakan `reshape(n_rows, n_columns)`. Jika salah satu parameter adalah -1, dimensi yang sepadan dikira secara automatik.
+2. Seterusnya, pilih sebahagian set data ini untuk dilukis dengan memilih lajur ke-3 dataset. Anda boleh lakukan ini dengan menggunakan operator `:` untuk memilih semua baris, dan kemudian memilih lajur ke-3 menggunakan indeks (2). Anda juga boleh bentuk semula data menjadi array 2D - seperti yang diperlukan untuk plot - dengan menggunakan `reshape(n_rows, n_columns)`. Jika salah satu parameter adalah -1, dimensi yang bersesuaian dikira secara automatik.
```python
X = X[:, 2]
@@ -170,28 +171,28 @@ Dalam sel kod baru, muatkan dataset diabetes dengan memanggil `load_diabetes()`.
✅ Pada bila-bila masa, cetak data untuk memeriksa bentuknya.
-3. Sekarang setelah anda mempunyai data yang siap untuk diplot, anda boleh melihat sama ada mesin dapat membantu menentukan pemisahan logik antara nombor dalam dataset ini. Untuk melakukan ini, anda perlu membahagikan kedua-dua data (X) dan sasaran (y) kepada set ujian dan latihan. Scikit-learn mempunyai cara yang mudah untuk melakukan ini; anda boleh membahagikan data ujian anda pada titik tertentu.
+3. Sekarang data sudah sedia untuk dilukis, anda boleh lihat sama ada mesin boleh membantu menentukan pembahagian logik antara nombor dalam set data ini. Untuk ini, anda perlu membahagikan kedua-dua data (X) dan sasaran (y) kepada set ujian dan latihan. Scikit-learn ada cara mudah untuk melakukan ini; anda boleh membahagikan data ujian anda pada titik yang diberikan.
```python
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33)
```
-4. Sekarang anda bersedia untuk melatih model anda! Muatkan model regresi linear dan latih dengan set latihan X dan y anda menggunakan `model.fit()`:
+4. Sekarang anda bersedia untuk melatih model! Muat model regresi linear dan latih dengan set latihan X dan y menggunakan `model.fit()`:
```python
model = linear_model.LinearRegression()
model.fit(X_train, y_train)
```
- ✅ `model.fit()` adalah fungsi yang akan anda lihat dalam banyak pustaka ML seperti TensorFlow.
+ ✅ `model.fit()` adalah fungsi yang anda akan jumpa dalam banyak perpustakaan ML seperti TensorFlow
-5. Kemudian, buat ramalan menggunakan data ujian, dengan menggunakan fungsi `predict()`. Ini akan digunakan untuk melukis garis antara kumpulan data model.
+5. Kemudian, cipta ramalan menggunakan data ujian, dengan fungsi `predict()`. Ini akan digunakan untuk melukis garis antara kumpulan data
```python
y_pred = model.predict(X_test)
```
-6. Sekarang tiba masanya untuk menunjukkan data dalam plot. Matplotlib adalah alat yang sangat berguna untuk tugas ini. Buat scatterplot semua data ujian X dan y, dan gunakan ramalan untuk melukis garis di tempat yang paling sesuai, antara kumpulan data model.
+6. Kini tiba masa untuk memaparkan data dalam plot. Matplotlib adalah alat yang sangat berguna untuk tugasan ini. Buat scatterplot semua data X dan y ujian, dan gunakan ramalan untuk melukis garis di tempat yang paling sesuai, antara kelompok data model.
```python
plt.scatter(X_test, y_test, color='black')
@@ -202,23 +203,24 @@ Dalam sel kod baru, muatkan dataset diabetes dengan memanggil `load_diabetes()`.
plt.show()
```
- 
-✅ Fikirkan sedikit tentang apa yang sedang berlaku di sini. Garis lurus sedang melalui banyak titik kecil data, tetapi apa sebenarnya yang sedang dilakukan? Bolehkah anda melihat bagaimana anda sepatutnya dapat menggunakan garis ini untuk meramalkan di mana titik data baru yang belum dilihat sepatutnya sesuai dalam hubungan dengan paksi y plot? Cuba nyatakan dalam kata-kata kegunaan praktikal model ini.
+ 
+
-Tahniah, anda telah membina model regresi linear pertama anda, mencipta ramalan dengannya, dan memaparkannya dalam plot!
+ ✅ Fikirkan sedikit tentang apa yang sedang berlaku di sini. Garisan lurus sedang melintasi banyak titik data kecil, tetapi apa sebenarnya yang dilakukannya? Bolehkah anda lihat bagaimana anda sepatutnya dapat menggunakan garisan ini untuk meramalkan di mana titik data baru yang belum dilihat sepatutnya diletakkan berhubung dengan paksi y plot tersebut? Cuba nyatakan secara praktikal kegunaan model ini.
+
+Tahniah, anda telah membina model regresi linear pertama anda, membuat ramalan dengannya, dan memaparkannya dalam plot!
---
## 🚀Cabaran
-Plotkan pemboleh ubah yang berbeza daripada dataset ini. Petunjuk: edit baris ini: `X = X[:,2]`. Berdasarkan sasaran dataset ini, apakah yang anda dapat temui tentang perkembangan diabetes sebagai penyakit?
-
-## [Kuiz selepas kuliah](https://ff-quizzes.netlify.app/en/ml/)
+Plotkan pemboleh ubah yang berbeza dari dataset ini. Petunjuk: sunting baris ini: `X = X[:,2]`. Memandangkan sasaran dataset ini, apa yang anda dapat temui tentang perkembangan diabetes sebagai penyakit?
+## [Kuiz pasca kuliah](https://ff-quizzes.netlify.app/en/ml/)
-## Ulasan & Kajian Kendiri
+## Ulasan & Belajar Kendiri
-Dalam tutorial ini, anda bekerja dengan regresi linear mudah, bukannya regresi univariat atau regresi berganda. Baca sedikit tentang perbezaan antara kaedah-kaedah ini, atau lihat [video ini](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef).
+Dalam tutorial ini, anda bekerja dengan regresi linear mudah, bukan regresi linear univariat atau berganda. Baca sedikit tentang perbezaan antara kaedah-kaedah ini, atau lihat [video ini](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef)
-Baca lebih lanjut tentang konsep regresi dan fikirkan tentang jenis soalan yang boleh dijawab oleh teknik ini. Ambil [tutorial ini](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) untuk mendalami pemahaman anda.
+Baca lebih lanjut tentang konsep regresi dan fikirkan tentang jenis soalan apa yang boleh dijawab oleh teknik ini. Ikuti [tutorial ini](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) untuk mendalami pemahaman anda.
## Tugasan
@@ -226,5 +228,7 @@ Baca lebih lanjut tentang konsep regresi dan fikirkan tentang jenis soalan yang
---
-**Penafian**:
-Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini.
\ No newline at end of file
+
+**Penafian**:
+Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang sahih. Untuk maklumat penting, terjemahan oleh manusia profesional adalah disyorkan. Kami tidak bertanggungjawab terhadap sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini.
+
\ No newline at end of file
diff --git a/translations/ms/2-Regression/2-Data/README.md b/translations/ms/2-Regression/2-Data/README.md
index 178df9263..9593cff0e 100644
--- a/translations/ms/2-Regression/2-Data/README.md
+++ b/translations/ms/2-Regression/2-Data/README.md
@@ -1,60 +1,60 @@
-# Bina model regresi menggunakan Scikit-learn: sediakan dan visualisasikan data
+# Membina model regresi menggunakan Scikit-learn: menyediakan dan memvisualisasikan data
-
+
Infografik oleh [Dasani Madipalli](https://twitter.com/dasani_decoded)
-## [Kuiz sebelum kuliah](https://ff-quizzes.netlify.app/en/ml/)
+## [Kuiz pra-ceramah](https://ff-quizzes.netlify.app/en/ml/)
-> ### [Pelajaran ini tersedia dalam R!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
+> ### [Pengajaran ini tersedia dalam R!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
## Pengenalan
-Sekarang anda telah bersedia dengan alat yang diperlukan untuk mula membina model pembelajaran mesin menggunakan Scikit-learn, anda sudah bersedia untuk mula bertanya soalan kepada data anda. Semasa anda bekerja dengan data dan menerapkan penyelesaian ML, adalah sangat penting untuk memahami cara bertanya soalan yang betul untuk membuka potensi dataset anda dengan tepat.
+Sekarang bahawa anda telah menyediakan alat yang anda perlukan untuk mula menangani pembinaan model pembelajaran mesin dengan Scikit-learn, anda sudah bersedia untuk mula bertanya soalan tentang data anda. Semasa anda bekerja dengan data dan menggunakan penyelesaian ML, sangat penting untuk memahami cara bertanya soalan yang betul untuk membuka potensi dataset anda dengan betul.
-Dalam pelajaran ini, anda akan belajar:
+Dalam pengajaran ini, anda akan belajar:
- Cara menyediakan data anda untuk pembinaan model.
- Cara menggunakan Matplotlib untuk visualisasi data.
+- Cara menggunakan Seaborn untuk visualisasi data yang lebih ekspresif.
-## Bertanya soalan yang betul kepada data anda
+## Bertanya soalan yang betul mengenai data anda
-Soalan yang anda perlukan jawapannya akan menentukan jenis algoritma ML yang akan anda gunakan. Dan kualiti jawapan yang anda peroleh sangat bergantung pada sifat data anda.
+Soalan yang anda perlukan untuk dijawab akan menentukan jenis algoritma ML yang akan anda gunakan. Dan kualiti jawapan yang anda terima akan sangat bergantung pada sifat data anda.
-Lihat [data](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) yang disediakan untuk pelajaran ini. Anda boleh membuka fail .csv ini dalam VS Code. Sekilas pandang menunjukkan terdapat kekosongan dan campuran data string dan numerik. Terdapat juga kolum yang pelik dipanggil 'Package' di mana datanya adalah campuran antara 'sacks', 'bins' dan nilai lain. Data ini, sebenarnya, agak bersepah.
+Lihat [data](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) yang disediakan untuk pengajaran ini. Anda boleh membuka fail .csv ini dalam VS Code. Sekilas pandang segera menunjukkan terdapat ruang kosong dan campuran data rentetan dan berangka. Ada juga lajur aneh yang dipanggil 'Package' di mana datanya campuran antara 'sacks', 'bins' dan nilai lain. Malah, data itu agak berantakan.
[](https://youtu.be/5qGjczWTrDQ "ML untuk pemula - Cara Menganalisis dan Membersihkan Dataset")
-> 🎥 Klik imej di atas untuk video pendek yang menunjukkan cara menyediakan data untuk pelajaran ini.
+> 🎥 Klik imej di atas untuk video pendek yang menunjukkan cara menyediakan data untuk pengajaran ini.
-Sebenarnya, adalah tidak biasa untuk menerima dataset yang sepenuhnya siap digunakan untuk mencipta model ML secara langsung. Dalam pelajaran ini, anda akan belajar cara menyediakan dataset mentah menggunakan pustaka Python standard. Anda juga akan belajar pelbagai teknik untuk memvisualisasikan data.
+Hakikatnya, tidaklah biasa diberikan dataset yang sudah lengkap untuk terus digunakan membuat model ML dengan serta-merta. Dalam pengajaran ini, anda akan belajar cara menyediakan dataset mentah menggunakan perpustakaan Python standard. Anda juga akan belajar pelbagai teknik untuk memvisualisasikan data.
## Kajian kes: 'pasaran labu'
-Dalam folder ini, anda akan menemui fail .csv dalam folder root `data` yang dipanggil [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) yang mengandungi 1757 baris data tentang pasaran labu, disusun mengikut kumpulan berdasarkan bandar. Ini adalah data mentah yang diekstrak daripada [Laporan Standard Pasaran Terminal Tanaman Khas](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) yang diedarkan oleh Jabatan Pertanian Amerika Syarikat.
+Dalam folder ini anda akan dapati fail .csv dalam folder root `data` yang dipanggil [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) yang mengandungi 1757 baris data tentang pasaran labu, diatur mengikut kumpulan mengikut bandar. Ini adalah data mentah yang diekstrak dari [Laporan Piawai Pasaran Terminal Tanaman Khas](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) yang diedarkan oleh Jabatan Pertanian Amerika Syarikat.
### Menyediakan data
-Data ini adalah dalam domain awam. Ia boleh dimuat turun dalam banyak fail berasingan, mengikut bandar, dari laman web USDA. Untuk mengelakkan terlalu banyak fail berasingan, kami telah menggabungkan semua data bandar ke dalam satu spreadsheet, jadi kami telah _menyediakan_ data sedikit. Seterusnya, mari kita lihat lebih dekat data ini.
+Data ini adalah dalam domain awam. Ia boleh dimuat turun dalam banyak fail berasingan, mengikut bandar, dari laman web USDA. Untuk mengelakkan terlalu banyak fail berasingan, kami telah menggabungkan semua data bandar ke dalam satu helaian, jadi kami telah sedikit _menyediakan_ data itu. Seterusnya, mari kita lihat data dengan lebih dekat.
### Data labu - kesimpulan awal
-Apa yang anda perhatikan tentang data ini? Anda sudah melihat bahawa terdapat campuran string, nombor, kekosongan dan nilai pelik yang perlu anda fahami.
-
-Soalan apa yang boleh anda tanyakan kepada data ini, menggunakan teknik Regresi? Bagaimana dengan "Meramalkan harga labu yang dijual pada bulan tertentu". Melihat semula data, terdapat beberapa perubahan yang perlu anda lakukan untuk mencipta struktur data yang diperlukan untuk tugas ini.
+Apa yang anda perhatikan tentang data ini? Anda sudah lihat bahawa terdapat campuran rentetan, nombor, ruang kosong dan nilai aneh yang perlu anda fahami.
+Soalan apa yang boleh anda tanya mengenai data ini, menggunakan teknik Regresi? Bagaimana dengan "Ramalkan harga labu untuk dijual dalam bulan tertentu". Melihat semula data, ada beberapa perubahan yang anda perlu buat untuk mencipta struktur data yang diperlukan untuk tugasan ini.
## Latihan - analisis data labu
-Mari gunakan [Pandas](https://pandas.pydata.org/), (nama ini bermaksud `Python Data Analysis`) alat yang sangat berguna untuk membentuk data, untuk menganalisis dan menyediakan data labu ini.
+Mari gunakan [Pandas](https://pandas.pydata.org/), (nama bermaksud `Python Data Analysis`) alat yang sangat berguna untuk membentuk data, untuk menganalisis dan menyediakan data labu ini.
### Pertama, periksa tarikh yang hilang
Anda perlu mengambil langkah untuk memeriksa tarikh yang hilang:
-1. Tukarkan tarikh kepada format bulan (ini adalah tarikh AS, jadi formatnya adalah `MM/DD/YYYY`).
-2. Ekstrak bulan ke kolum baru.
+1. Tukar tarikh kepada format bulan (ini adalah tarikh AS, jadi formatnya ialah `MM/DD/YYYY`).
+2. Ekstrak bulan ke lajur baru.
-Buka fail _notebook.ipynb_ dalam Visual Studio Code dan import spreadsheet ke dalam dataframe Pandas yang baru.
+Buka fail _notebook.ipynb_ dalam Visual Studio Code dan import helaian ke dalam dataframe Pandas baru.
1. Gunakan fungsi `head()` untuk melihat lima baris pertama.
@@ -66,15 +66,15 @@ Buka fail _notebook.ipynb_ dalam Visual Studio Code dan import spreadsheet ke da
✅ Fungsi apa yang akan anda gunakan untuk melihat lima baris terakhir?
-1. Periksa jika terdapat data yang hilang dalam dataframe semasa:
+1. Periksa jika ada data yang hilang dalam dataframe semasa:
```python
pumpkins.isnull().sum()
```
- Terdapat data yang hilang, tetapi mungkin ia tidak akan menjadi masalah untuk tugas ini.
+ Ada data yang hilang, tetapi mungkin tidak menjadi masalah untuk tugasan ini.
-1. Untuk memudahkan dataframe anda bekerja, pilih hanya kolum yang anda perlukan, menggunakan fungsi `loc` yang mengekstrak dari dataframe asal sekumpulan baris (diberikan sebagai parameter pertama) dan kolum (diberikan sebagai parameter kedua). Ungkapan `:` dalam kes di bawah bermaksud "semua baris".
+1. Untuk memudahkan kerja dengan dataframe anda, pilih hanya lajur yang anda perlukan, menggunakan fungsi `loc` yang mengekstrak dari dataframe asal sekumpulan baris (parameter pertama) dan lajur (parameter kedua). Ungkapan `:` dalam kes ini bermaksud "semua baris".
```python
columns_to_select = ['Package', 'Low Price', 'High Price', 'Date']
@@ -83,11 +83,11 @@ Buka fail _notebook.ipynb_ dalam Visual Studio Code dan import spreadsheet ke da
### Kedua, tentukan harga purata labu
-Fikirkan cara menentukan harga purata labu dalam bulan tertentu. Kolum apa yang akan anda pilih untuk tugas ini? Petunjuk: anda memerlukan 3 kolum.
+Fikirkan bagaimana untuk menentukan harga purata labu dalam bulan tertentu. Lajur apa yang akan anda pilih untuk tugasan ini? Petunjuk: anda perlu 3 lajur.
-Penyelesaian: ambil purata kolum `Low Price` dan `High Price` untuk mengisi kolum Harga baru, dan tukarkan kolum Tarikh untuk hanya menunjukkan bulan. Nasib baik, menurut pemeriksaan di atas, tiada data yang hilang untuk tarikh atau harga.
+Penyelesaian: ambil purata lajur `Low Price` dan `High Price` untuk mengisi lajur Harga yang baru, dan tukar lajur Tarikh supaya hanya menunjukkan bulan. Mujurlah, menurut pemeriksaan di atas, tiada data yang hilang untuk tarikh atau harga.
-1. Untuk mengira purata, tambahkan kod berikut:
+1. Untuk mengira purata, tambah kod berikut:
```python
price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2
@@ -96,37 +96,37 @@ Penyelesaian: ambil purata kolum `Low Price` dan `High Price` untuk mengisi kolu
```
- ✅ Anda bebas untuk mencetak sebarang data yang anda ingin periksa menggunakan `print(month)`.
+ ✅ Sila cetak apa-apa data yang anda ingin semak menggunakan `print(month)`.
-2. Sekarang, salin data yang telah ditukar ke dalam dataframe Pandas yang baru:
+2. Sekarang, salin data yang telah ditukar ke dataframe Pandas yang baru:
```python
new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price})
```
- Mencetak dataframe anda akan menunjukkan dataset yang bersih dan kemas di mana anda boleh membina model regresi baru anda.
+ Mencetak dataframe anda akan menunjukkan dataset yang bersih dan kemas yang boleh anda bina model regresi baru.
-### Tetapi tunggu! Ada sesuatu yang pelik di sini
+### Tapi tunggu! Ada sesuatu yang pelik di sini
-Jika anda melihat kolum `Package`, labu dijual dalam pelbagai konfigurasi. Ada yang dijual dalam ukuran '1 1/9 bushel', ada yang dalam ukuran '1/2 bushel', ada yang per labu, ada yang per pound, dan ada yang dalam kotak besar dengan lebar yang berbeza.
+Jika anda lihat lajur `Package`, labu dijual dalam berbagai konfigurasi. Ada yang dijual dalam ukuran '1 1/9 bushel', ada yang '1/2 bushel', ada berdasarkan labu, ada pula berdasarkan paun, dan ada dalam kotak besar dengan lebar yang berbeza.
> Labu nampaknya sangat sukar untuk ditimbang secara konsisten
-Menggali data asal, menarik bahawa apa-apa dengan `Unit of Sale` yang sama dengan 'EACH' atau 'PER BIN' juga mempunyai jenis `Package` per inci, per bin, atau 'each'. Labu nampaknya sangat sukar untuk ditimbang secara konsisten, jadi mari kita tapis mereka dengan memilih hanya labu dengan string 'bushel' dalam kolum `Package`.
+Menggali ke dalam data asal, menarik bahawa apa-apa dengan `Unit of Sale` sama dengan 'EACH' atau 'PER BIN' juga mempunyai jenis `Package` per inci, per bin, atau 'each'. Labu nampaknya sangat sukar ditimbang secara konsisten, jadi mari tapis mereka dengan memilih hanya labu dengan rentetan 'bushel' dalam lajur `Package`.
-1. Tambahkan penapis di bahagian atas fail, di bawah import .csv awal:
+1. Tambah penapis di atas fail, di bawah import .csv yang awal:
```python
pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]
```
- Jika anda mencetak data sekarang, anda boleh melihat bahawa anda hanya mendapatkan sekitar 415 baris data yang mengandungi labu mengikut bushel.
+ Jika anda cetak data sekarang, anda boleh lihat bahawa anda hanya mendapat sekitar 415 baris data yang mengandungi labu mengikut bushel.
-### Tetapi tunggu! Ada satu lagi perkara yang perlu dilakukan
+### Tapi tunggu! Ada satu lagi perkara yang perlu dilakukan
-Adakah anda perasan bahawa jumlah bushel berbeza setiap baris? Anda perlu menormalkan harga supaya anda menunjukkan harga per bushel, jadi lakukan beberapa pengiraan untuk menyeragamkannya.
+Adakah anda perasan bahawa jumlah bushel berubah mengikut baris? Anda perlu menormalkan harga supaya anda menunjukkan harga per bushel, jadi buat sedikit pengiraan untuk menyesuaikan.
-1. Tambahkan baris ini selepas blok yang mencipta dataframe new_pumpkins:
+1. Tambah baris ini selepas blok yang mencipta dataframe new_pumpkins:
```python
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9)
@@ -134,29 +134,29 @@ Adakah anda perasan bahawa jumlah bushel berbeza setiap baris? Anda perlu menorm
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2)
```
-✅ Menurut [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), berat bushel bergantung pada jenis hasil, kerana ia adalah ukuran volum. "Bushel tomato, sebagai contoh, sepatutnya beratnya 56 paun... Daun dan sayur-sayuran mengambil lebih banyak ruang dengan berat yang lebih sedikit, jadi bushel bayam hanya 20 paun." Semuanya agak rumit! Mari kita tidak bersusah payah membuat penukaran bushel-ke-paun, dan sebaliknya harga mengikut bushel. Semua kajian tentang bushel labu ini, bagaimanapun, menunjukkan betapa pentingnya memahami sifat data anda!
+✅ Menurut [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), berat bushel bergantung pada jenis hasil, kerana ia adalah ukuran isipadu. "Satu bushel tomato, contohnya, sepatutnya seberat 56 paun... Daun dan sayur hijau mengambil ruang lebih banyak dengan berat kurang, jadi satu bushel bayam hanya 20 paun." Ia agak rumit! Mari kita tidak fikirkan penukaran bushel ke paun, dan sebaliknya harga ikut bushel. Semua kajian tentang bushel labu ini menunjukkan betapa pentingnya faham sifat data anda!
-Sekarang, anda boleh menganalisis harga per unit berdasarkan ukuran bushel mereka. Jika anda mencetak data sekali lagi, anda boleh melihat bagaimana ia telah diseragamkan.
+Kini, anda boleh menganalisis harga per unit berdasarkan pengukuran bushel mereka. Jika anda cetak data sekali lagi, anda boleh nampak bagaimana ia dinormalisasikan.
-✅ Adakah anda perasan bahawa labu yang dijual mengikut setengah bushel sangat mahal? Bolehkah anda mengetahui sebabnya? Petunjuk: labu kecil jauh lebih mahal daripada yang besar, mungkin kerana terdapat lebih banyak daripadanya per bushel, memandangkan ruang yang tidak digunakan yang diambil oleh satu labu pai besar yang berongga.
+✅ Adakah anda perhatikan bahawa labu yang dijual mengikut separuh bushel adalah sangat mahal? Bolehkah anda mengapa? Petunjuk: labu kecil jauh lebih mahal daripada yang besar, mungkin kerana ada lebih banyak bilangan labu kecil per bushel, memandangkan ruang yang tidak digunakan oleh satu labu pai berlubang yang besar.
## Strategi Visualisasi
-Sebahagian daripada peranan saintis data adalah untuk menunjukkan kualiti dan sifat data yang mereka kerjakan. Untuk melakukan ini, mereka sering mencipta visualisasi yang menarik, seperti plot, graf, dan carta, yang menunjukkan aspek data yang berbeza. Dengan cara ini, mereka dapat menunjukkan secara visual hubungan dan jurang yang sukar untuk ditemui.
+Sebahagian daripada peranan saintis data adalah untuk menunjukkan kualiti dan sifat data yang mereka gunakan. Untuk melakukan ini, mereka sering menghasilkan visualisasi yang menarik, atau plot, graf, dan carta, yang menunjukkan aspek data yang berbeza. Dengan cara ini, mereka dapat menunjukkan secara visual hubungan dan jurang yang sukar ditemui dengan cara lain.
-[](https://youtu.be/SbUkxH6IJo0 "ML untuk pemula - Cara Memvisualisasikan Data dengan Matplotlib")
+[](https://youtu.be/SbUkxH6IJo0 "ML untuk pemula - Cara Visualisasikan Data dengan Matplotlib")
-> 🎥 Klik imej di atas untuk video pendek yang menunjukkan cara memvisualisasikan data untuk pelajaran ini.
+> 🎥 Klik imej di atas untuk video pendek yang menunjukkan cara memvisualisasikan data untuk pengajaran ini.
-Visualisasi juga boleh membantu menentukan teknik pembelajaran mesin yang paling sesuai untuk data. Plot taburan yang kelihatan mengikuti garis, sebagai contoh, menunjukkan bahawa data adalah calon yang baik untuk latihan regresi linear.
+Visualisasi juga boleh membantu menentukan teknik pembelajaran mesin yang paling sesuai untuk data. Sebuah scatterplot yang nampaknya mengikut sebuah garis, contohnya, menunjukkan bahawa data itu calon baik untuk latihan regresi linear.
-Satu pustaka visualisasi data yang berfungsi dengan baik dalam Jupyter notebooks ialah [Matplotlib](https://matplotlib.org/) (yang juga anda lihat dalam pelajaran sebelumnya).
+Salah satu perpustakaan visualisasi data yang berfungsi baik dalam Jupyter notebooks adalah [Matplotlib](https://matplotlib.org/) (yang juga anda lihat dalam pengajaran sebelum ini).
> Dapatkan lebih banyak pengalaman dengan visualisasi data dalam [tutorial ini](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott).
-## Latihan - eksperimen dengan Matplotlib
+## Latihan - cuba dengan Matplotlib
-Cuba buat beberapa plot asas untuk memaparkan dataframe baru yang baru anda cipta. Apa yang akan ditunjukkan oleh plot garis asas?
+Cuba buat beberapa plot asas untuk memaparkan dataframe baru yang anda baru cipta. Apakah yang akan ditunjukkan oleh plot garis asas?
1. Import Matplotlib di bahagian atas fail, di bawah import Pandas:
@@ -164,8 +164,8 @@ Cuba buat beberapa plot asas untuk memaparkan dataframe baru yang baru anda cipt
import matplotlib.pyplot as plt
```
-1. Jalankan semula keseluruhan notebook untuk menyegarkan.
-1. Di bahagian bawah notebook, tambahkan sel untuk plot data sebagai kotak:
+1. Jalankan semula keseluruhan notebook untuk memuat semula.
+1. Di bawah notebook, tambah sel untuk plot data sebagai kotak:
```python
price = new_pumpkins.Price
@@ -174,44 +174,121 @@ Cuba buat beberapa plot asas untuk memaparkan dataframe baru yang baru anda cipt
plt.show()
```
- 
+ 
- Adakah ini plot yang berguna? Adakah sesuatu mengenainya mengejutkan anda?
+ Adakah ini plot yang berguna? Ada apa-apa yang mengejutkan anda?
Ia tidak begitu berguna kerana ia hanya memaparkan data anda sebagai taburan titik dalam bulan tertentu.
-### Jadikannya berguna
+### Jadikan ia berguna
-Untuk mendapatkan carta yang memaparkan data berguna, anda biasanya perlu mengelompokkan data dengan cara tertentu. Mari cuba buat plot di mana paksi y menunjukkan bulan dan data menunjukkan taburan data.
+Untuk mendapatkan carta yang memaparkan data berguna, anda biasanya perlu mengkelaskan data dengan cara tertentu. Mari cuba buat plot di mana paksi y menunjukkan bulan dan data menunjukkan taburan data.
-1. Tambahkan sel untuk mencipta carta bar yang dikelompokkan:
+1. Tambah sel untuk membuat carta bar berkumpulan:
```python
new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar')
plt.ylabel("Pumpkin Price")
```
- 
+ 
+
+ Ini adalah visualisasi data yang lebih berguna! Ia nampaknya menunjukkan harga tertinggi untuk labu berlaku pada bulan September dan Oktober. Adakah ini memenuhi jangkaan anda? Kenapa atau kenapa tidak?
+
+## Latihan - cuba dengan Seaborn
+
+Matplotlib amat berkuasa, tetapi ia boleh mengambil banyak kod untuk menghasilkan carta yang kemas. [Seaborn](https://seaborn.pydata.org/) adalah perpustakaan yang dibina _di atas_ Matplotlib dan direka untuk visualisasi data statistik. Ia berfungsi terus dengan dataframe Pandas, menggunakan gaya lalai yang menarik, dan membolehkan anda mencipta plot yang informatif dengan kod yang jauh lebih sedikit. Kerana Seaborn mengembalikan objek Matplotlib, anda masih boleh menggunakan segala yang anda sudah tahu tentang Matplotlib untuk melaras hasilnya.
+
+> Jika anda belum memasang Seaborn, pasang ia dengan `pip install seaborn`.
+
+1. Import Seaborn di atas notebook, di bawah import yang lain. Ia biasanya diimport sebagai `sns`:
+
+ ```python
+ import seaborn as sns
+ ```
+
+### Scatter plot untuk menunjukkan hubungan
+
+Sebahagian besar meneroka data sebelum membina model adalah mencari _hubungan_ antara pembolehubah. [Scatter plot](https://en.wikipedia.org/wiki/Scatter_plot) adalah salah satu alat terbaik untuk ini: jika titik nampak mengikut garis, dua pembolehubah mungkin berkorelasi, yang merupakan tanda baik bahawa model regresi linear boleh berfungsi.
+
+1. Buat semula scatter plot harga-ke-bulan tadi, kali ini menggunakan Seaborn [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) (plot hubungan), yang berfungsi terus dengan lajur dataframe anda:
+
+ ```python
+ sns.relplot(x="Price", y="Month", data=new_pumpkins)
+ ```
+
+ 
+
+ Perhatikan bagaimana anda serahkan _nama lajur_ dan dataframe, dan Seaborn menguruskan label paksi untuk anda.
+
+2. Anda boleh bertukar kepada plot garis dengan menghantar `kind="line"`. Seaborn malah menggambar jalur berteduh yang menunjukkan interval keyakinan di sekitar garis:
+
+ ```python
+ sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins)
+ ```
+
+ 
+
+ Data ini agak bising, jadi plot garis bukanlah pilihan paling jelas di sini — tetapi ia menunjukkan betapa mudahnya menukar jenis carta dalam Seaborn.
+
+### Carta bar untuk menunjukkan taburan
+
+
+Sebelum ini anda mengelompokkan data secara manual untuk membuat carta bar dengan Matplotlib. Seaborn's [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) (grafik kategori) boleh melakukan pengelompokan dan agregasi untuk anda. Secara lalai `kind="bar"` menunjukkan purata setiap kategori bersama garisan hitam yang menunjukkan selang keyakinan.
+
+1. Buat carta bar harga purata setiap bulan:
+
+ ```python
+ sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar")
+ ```
+
+ 
+
+ Ini mengesahkan apa yang anda lihat dengan Matplotlib — harga memuncak sekitar September dan Oktober — tetapi Seaborn juga memvisualisasikan betapa banyak harga _bervariasi_ dalam setiap bulan.
+
+### Heatmap untuk menunjukkan korelasi
+
+Carta sebar membandingkan dua pemboleh ubah pada satu masa. Apabila anda mempunyai beberapa lajur berangka, [heatmap](https://en.wikipedia.org/wiki/Heat_map) membolehkan anda melihat kekuatan hubungan antara _setiap_ pasangan lajur pada satu masa. Ini adalah cara biasa untuk mengenal pasti ciri mana yang paling berkorelasi sebelum memilih apa yang hendak dimasukkan dalam model (dan jenis carta yang sama kemudiannya digunakan untuk memaparkan matriks kekeliruan dalam klasifikasi).
+
+1. Bina matriks korelasi dengan Pandas, kemudian lukis dengan [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html) Seaborn. Pilihan `annot=True` mencetak nilai korelasi pada setiap sel:
+
+ ```python
+ correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()
+ sns.heatmap(correlations, annot=True, cmap="coolwarm")
+ ```
+
+ 
+
+ Nilai yang hampir dengan `1` (atau `-1`) bermaksud lajur-lajur itu sangat berkorelasi _linear_. Perhatikan bagaimana `Low Price` dan `High Price` hampir berkorelasi sempurna. `Month`, sebaliknya, hanya menunjukkan korelasi linear lemah dengan harga — walaupun carta bar di atas menunjukkan puncak bermusim yang jelas pada bulan September dan Oktober. Itu adalah pengajaran penting: pekali korelasi hanya mengukur hubungan _garis lurus_, jadi ia boleh terlepas pola bermusim atau bukan linear. ✅ Kenapa berguna untuk melihat kedua-dua heatmap *dan* carta seperti carta bar sebelum memutuskan lajur mana yang hendak digunakan?
+
+### Matplotlib atau Seaborn?
+
+Kedua-dua perpustakaan adalah berbaloi untuk diketahui:
+
+- **Matplotlib** memberi anda kawalan terperinci ke atas setiap elemen carta dan merupakan asas bagi hampir setiap perpustakaan plot Python lain.
+- **Seaborn** menyediakan fungsi tahap tinggi dan tetapan menarik untuk carta statistik, berfungsi terus dengan dataframe, dan sering lebih cepat untuk analisis data eksploratori.
- Ini adalah visualisasi data yang lebih berguna! Ia nampaknya menunjukkan bahawa harga tertinggi untuk labu berlaku pada bulan September dan Oktober. Adakah itu memenuhi jangkaan anda? Mengapa atau mengapa tidak?
+Aliran kerja biasa adalah menggunakan Seaborn untuk meneroka data dengan cepat, kemudian beralih ke Matplotlib apabila anda perlu mengubah suai butiran.
---
## 🚀Cabaran
-Terokai pelbagai jenis visualisasi yang ditawarkan oleh Matplotlib. Jenis mana yang paling sesuai untuk masalah regresi?
+Teroka pelbagai jenis visualisasi yang ditawarkan oleh Matplotlib dan Seaborn. Jenis manakah yang paling sesuai untuk masalah regresi?
-## [Kuiz selepas kuliah](https://ff-quizzes.netlify.app/en/ml/)
+## [Kuis pasca kuliah](https://ff-quizzes.netlify.app/en/ml/)
-## Ulasan & Kajian Kendiri
+## Ulasan & Belajar Kendiri
-Lihat pelbagai cara untuk memvisualisasikan data. Buat senarai pustaka yang tersedia dan catatkan mana yang terbaik untuk jenis tugas tertentu, contohnya visualisasi 2D vs. visualisasi 3D. Apa yang anda temui?
+Lihat pelbagai cara untuk memvisualisasikan data. Buat senarai perpustakaan yang ada dan catat yang mana paling sesuai untuk jenis tugas tertentu, contohnya visualisasi 2D berbanding visualisasi 3D. Apa yang anda temui?
## Tugasan
-[Menjelajahi visualisasi](assignment.md)
+[Meneroka visualisasi](assignment.md)
---
-**Penafian**:
-Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini.
\ No newline at end of file
+
+**Penafian**:
+Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang sahih. Untuk maklumat penting, terjemahan oleh manusia profesional adalah disyorkan. Kami tidak bertanggungjawab terhadap sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini.
+
\ No newline at end of file
diff --git a/translations/ms/2-Regression/2-Data/solution/notebook.ipynb b/translations/ms/2-Regression/2-Data/solution/notebook.ipynb
index 8130a4813..1450c75d3 100644
--- a/translations/ms/2-Regression/2-Data/solution/notebook.ipynb
+++ b/translations/ms/2-Regression/2-Data/solution/notebook.ipynb
@@ -222,6 +222,7 @@
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
"pumpkins = pd.read_csv('../../data/US-pumpkins.csv')\n",
"\n",
"pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]\n",
@@ -385,18 +386,78 @@
"plt.ylabel(\"Pumpkin Price\")"
]
},
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Memvisualisasikan dengan Seaborn\n",
+ "\n",
+ "[Seaborn](https://seaborn.pydata.org/) dibina di atas Matplotlib dan berfungsi terus dengan dataframe, menjadikannya cepat untuk membuat graf statistik yang menarik dengan sangat sedikit kod.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Plot sebar untuk menunjukkan hubungan\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", kind=\"line\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Carta bar untuk menunjukkan taburan\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.catplot(x=\"Month\", y=\"Price\", data=new_pumpkins, kind=\"bar\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Peta panas untuk menunjukkan korelasi\n"
+ ]
+ },
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
- "source": []
+ "source": [
+ "correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()\n",
+ "sns.heatmap(correlations, annot=True, cmap=\"coolwarm\")"
+ ]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "\n---\n\n**Penafian**: \nDokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini.\n"
+ "---\n\n\n**Penafian**:\nDokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang sahih. Untuk maklumat penting, terjemahan oleh manusia profesional adalah disyorkan. Kami tidak bertanggungjawab terhadap sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini.\n\n"
]
}
],
@@ -426,13 +487,7 @@
"hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d"
}
},
- "orig_nbformat": 2,
- "coopTranslator": {
- "original_hash": "95726f0b8283628d5356a4f8eb8b4b76",
- "translation_date": "2025-09-06T11:53:11+00:00",
- "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
- "language_code": "ms"
- }
+ "orig_nbformat": 2
},
"nbformat": 4,
"nbformat_minor": 2
diff --git a/translations/ms/8-Reinforcement/1-QLearning/README.md b/translations/ms/8-Reinforcement/1-QLearning/README.md
index 3ae432147..0416930dc 100644
--- a/translations/ms/8-Reinforcement/1-QLearning/README.md
+++ b/translations/ms/8-Reinforcement/1-QLearning/README.md
@@ -1,47 +1,47 @@
-# Pengenalan kepada Pembelajaran Pengukuhan dan Q-Learning
+# Pengenalan kepada Pembelajaran Pengukuhan dan Q-Pembelajaran
-
+
> Sketchnote oleh [Tomomi Imura](https://www.twitter.com/girlie_mac)
-Pembelajaran pengukuhan melibatkan tiga konsep penting: agen, beberapa keadaan, dan satu set tindakan bagi setiap keadaan. Dengan melaksanakan tindakan dalam keadaan tertentu, agen akan diberikan ganjaran. Bayangkan permainan komputer Super Mario. Anda adalah Mario, berada dalam tahap permainan, berdiri di tepi tebing. Di atas anda terdapat syiling. Anda sebagai Mario, dalam tahap permainan, di kedudukan tertentu ... itulah keadaan anda. Melangkah satu langkah ke kanan (tindakan) akan membawa anda ke tebing, dan itu akan memberikan skor numerik yang rendah. Namun, menekan butang lompat akan membolehkan anda mendapat mata dan terus hidup. Itu adalah hasil yang positif dan sepatutnya memberikan skor numerik yang positif.
+Pembelajaran pengukuhan melibatkan tiga konsep penting: ejen, beberapa keadaan, dan satu set tindakan bagi setiap keadaan. Dengan melaksanakan satu tindakan dalam keadaan tertentu, ejen diberi ganjaran. Bayangkan sekali lagi permainan komputer Super Mario. Anda adalah Mario, anda berada dalam satu tingkat permainan, berdiri di tepi tebing. Di atas anda terdapat sebuah syiling. Anda sebagai Mario, dalam satu tingkat permainan, pada kedudukan tertentu ... itu adalah keadaan anda. Bergerak satu langkah ke kanan (tindakan) akan membawa anda ke tepi tebing, dan itu akan memberikan skor nombor yang rendah. Namun, menekan butang lompat akan membolehkan anda mendapat mata dan anda akan terus hidup. Itu adalah hasil yang positif dan harus memberikannya skor nombor positif.
-Dengan menggunakan pembelajaran pengukuhan dan simulator (permainan), anda boleh belajar cara bermain permainan untuk memaksimumkan ganjaran iaitu terus hidup dan mengumpul sebanyak mungkin mata.
+Dengan menggunakan pembelajaran pengukuhan dan simulator (permainan), anda boleh belajar bagaimana untuk bermain permainan itu bagi memaksimumkan ganjaran iaitu terus hidup dan mendapatkan sebanyak mungkin mata.
[](https://www.youtube.com/watch?v=lDq_en8RNOo)
> 🎥 Klik imej di atas untuk mendengar Dmitry membincangkan Pembelajaran Pengukuhan
-## [Kuiz pra-kuliah](https://ff-quizzes.netlify.app/en/ml/)
+## [Kuis Pra-ceramah](https://ff-quizzes.netlify.app/en/ml/)
## Prasyarat dan Persediaan
-Dalam pelajaran ini, kita akan bereksperimen dengan beberapa kod dalam Python. Anda sepatutnya boleh menjalankan kod Jupyter Notebook daripada pelajaran ini, sama ada di komputer anda atau di awan.
+Dalam pelajaran ini, kita akan bereksperimen dengan beberapa kod dalam Python. Anda harus dapat menjalankan kod Jupyter Notebook dari pelajaran ini, sama ada di komputer anda atau di awan.
-Anda boleh membuka [notebook pelajaran](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) dan mengikuti pelajaran ini untuk membina.
+Anda boleh membuka [notebook pelajaran](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) dan melalui pelajaran ini untuk membina.
-> **Nota:** Jika anda membuka kod ini dari awan, anda juga perlu mendapatkan fail [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), yang digunakan dalam kod notebook. Tambahkan fail ini ke direktori yang sama dengan notebook.
+> **Nota:** Jika anda membuka kod ini dari awan, anda juga perlu memuat turun fail [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), yang digunakan dalam kod notebook. Letakkan di direktori yang sama dengan notebook.
## Pengenalan
-Dalam pelajaran ini, kita akan meneroka dunia **[Peter dan Serigala](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)**, yang diilhamkan oleh kisah dongeng muzik oleh komposer Rusia, [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev). Kita akan menggunakan **Pembelajaran Pengukuhan** untuk membolehkan Peter meneroka persekitarannya, mengumpul epal yang lazat dan mengelakkan bertemu dengan serigala.
+Dalam pelajaran ini, kita akan meneroka dunia **[Peter dan Serigala](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)**, diilhamkan oleh dongeng muzik oleh komposer Rusia, [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev). Kita akan menggunakan **Pembelajaran Pengukuhan** untuk membiarkan Peter meneroka persekitarannya, mengutip epal yang lazat dan mengelakkan bertemu serigala.
-**Pembelajaran Pengukuhan** (RL) adalah teknik pembelajaran yang membolehkan kita mempelajari tingkah laku optimum bagi **agen** dalam **persekitaran** tertentu dengan menjalankan banyak eksperimen. Agen dalam persekitaran ini sepatutnya mempunyai **matlamat**, yang ditakrifkan oleh **fungsi ganjaran**.
+**Pembelajaran Pengukuhan** (RL) adalah teknik pembelajaran yang membolehkan kita mempelajari kelakuan optimum seorang **ejen** dalam sesuatu **persekitaran** dengan menjalankan banyak eksperimen. Seorang ejen dalam persekitaran ini harus mempunyai **matlamat**, yang ditakrifkan oleh **fungsi ganjaran**.
## Persekitaran
-Untuk kesederhanaan, mari kita anggap dunia Peter sebagai papan segi empat dengan saiz `width` x `height`, seperti ini:
+Untuk kesederhanaan, mari anggap dunia Peter adalah papan segi empat berukuran `lebar` x `tinggi`, seperti ini:
-
+
-Setiap sel dalam papan ini boleh menjadi:
+Setiap sel di papan ini boleh menjadi:
-* **tanah**, di mana Peter dan makhluk lain boleh berjalan.
-* **air**, di mana anda jelas tidak boleh berjalan.
-* **pokok** atau **rumput**, tempat di mana anda boleh berehat.
-* **epal**, yang mewakili sesuatu yang Peter akan gembira untuk menemui untuk makan.
-* **serigala**, yang berbahaya dan harus dielakkan.
+* **tanah**, di atasnya Peter dan makhluk lain boleh berjalan.
+* **air**, di mana anda sudah tentu tidak boleh berjalan.
+* **pokok** atau **rumput**, tempat anda boleh berehat.
+* sebuah **epal**, yang mewakili sesuatu yang gembira Peter untuk menemukannya bagi memberikan makan pada dirinya.
+* sebuah **serigala**, yang berbahaya dan harus dielakkan.
-Terdapat modul Python berasingan, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), yang mengandungi kod untuk bekerja dengan persekitaran ini. Oleh kerana kod ini tidak penting untuk memahami konsep kita, kita akan mengimport modul dan menggunakannya untuk mencipta papan contoh (blok kod 1):
+Terdapat modul Python berasingan, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), yang mengandungi kod untuk bekerja dengan persekitaran ini. Oleh kerana kod ini tidak penting untuk memahami konsep kita, kita akan mengimport modul dan menggunakannya untuk membuat papan contoh (blok kod 1):
```python
from rlboard import *
@@ -52,30 +52,30 @@ m.randomize(seed=13)
m.plot()
```
-Kod ini sepatutnya mencetak gambar persekitaran yang serupa dengan yang di atas.
+Kod ini harus mencetak gambar persekitaran yang serupa dengan yang di atas.
## Tindakan dan polisi
-Dalam contoh kita, matlamat Peter adalah untuk mencari epal, sambil mengelakkan serigala dan halangan lain. Untuk melakukan ini, dia boleh berjalan-jalan sehingga dia menemui epal.
+Dalam contoh kita, matlamat Peter adalah untuk dapat mencari epal, sambil mengelakkan serigala dan halangan lain. Untuk melakukan ini, dia boleh berjalan di sekeliling sehingga dia menemui epal.
-Oleh itu, pada mana-mana kedudukan, dia boleh memilih antara salah satu tindakan berikut: atas, bawah, kiri dan kanan.
+Oleh itu, pada kedudukan mana-mana, dia boleh memilih antara salah satu tindakan berikut: atas, bawah, kiri dan kanan.
-Kita akan mentakrifkan tindakan tersebut sebagai kamus, dan memetakan mereka kepada pasangan perubahan koordinat yang sepadan. Sebagai contoh, bergerak ke kanan (`R`) akan sepadan dengan pasangan `(1,0)`. (blok kod 2):
+Kita akan mentakrifkan tindakan ini sebagai kamus, dan menghubungkannya dengan pasangan perubahan koordinat yang sepadan. Contohnya, bergerak ke kanan (`R`) akan bersamaan dengan pasangan `(1,0)`. (blok kod 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()) }
```
-Secara ringkas, strategi dan matlamat senario ini adalah seperti berikut:
+Ringkasnya, strategi dan matlamat senario ini adalah seperti berikut:
-- **Strategi**, agen kita (Peter) ditakrifkan oleh apa yang dipanggil **polisi**. Polisi adalah fungsi yang mengembalikan tindakan pada mana-mana keadaan tertentu. Dalam kes kita, keadaan masalah diwakili oleh papan, termasuk kedudukan semasa pemain.
+- **Strategi**, ejen kita (Peter) ditakrifkan oleh apa yang dinamakan **polisi**. Polisi adalah fungsi yang mengembalikan tindakan pada mana-mana keadaan tertentu. Dalam kes kita, keadaan masalah diwakili oleh papan, termasuk kedudukan pemain semasa.
-- **Matlamat**, pembelajaran pengukuhan adalah untuk akhirnya mempelajari polisi yang baik yang akan membolehkan kita menyelesaikan masalah dengan cekap. Walau bagaimanapun, sebagai asas, mari kita pertimbangkan polisi paling mudah yang dipanggil **jalan rawak**.
+- **Matlamat**, pembelajaran pengukuhan adalah untuk akhirnya mempelajari polisi yang baik yang membolehkan kita menyelesaikan masalah dengan cekap. Namun sebagai asas, mari kita anggap polisi paling mudah dipanggil **jalan rawak**.
-## Jalan rawak
+## Jalan Random
-Mari kita selesaikan masalah kita terlebih dahulu dengan melaksanakan strategi jalan rawak. Dengan jalan rawak, kita akan memilih tindakan seterusnya secara rawak daripada tindakan yang dibenarkan, sehingga kita mencapai epal (blok kod 3).
+Mari kita selesaikan masalah kita dengan melaksanakan strategi jalan rawak. Dengan jalan rawak, kita akan memilih tindakan seterusnya secara rawak dari tindakan yang dibenarkan, sehingga kita mencapai epal (blok kod 3).
1. Laksanakan jalan rawak dengan kod di bawah:
@@ -84,31 +84,31 @@ Mari kita selesaikan masalah kita terlebih dahulu dengan melaksanakan strategi j
return random.choice(list(actions))
def walk(m,policy,start_position=None):
- n = 0 # number of steps
- # set initial position
+ n = 0 # bilangan langkah
+ # tetapkan kedudukan awal
if start_position:
m.human = start_position
else:
m.random_start()
while True:
if m.at() == Board.Cell.apple:
- return n # success!
+ return n # berjaya!
if m.at() in [Board.Cell.wolf, Board.Cell.water]:
- return -1 # eaten by wolf or drowned
+ return -1 # dimakan oleh serigala atau lemas
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
+ m.move(a) # lakukan langkah sebenar
break
n+=1
walk(m,random_policy)
```
- Panggilan kepada `walk` sepatutnya mengembalikan panjang laluan yang sepadan, yang boleh berbeza dari satu larian ke larian lain.
+ Panggilan kepada `walk` harus mengembalikan panjang laluan yang sepadan, yang boleh berubah-ubah dari satu larian ke larian lain.
-1. Jalankan eksperimen jalan beberapa kali (katakan, 100), dan cetak statistik yang dihasilkan (blok kod 4):
+1. Jalankan eksperimen jalanan ini beberapa kali (katakan, 100), dan cetak statistik hasilnya (blok kod 4):
```python
def print_statistics(policy):
@@ -125,17 +125,17 @@ Mari kita selesaikan masalah kita terlebih dahulu dengan melaksanakan strategi j
print_statistics(random_policy)
```
- Perhatikan bahawa panjang purata laluan adalah sekitar 30-40 langkah, yang agak banyak, memandangkan jarak purata ke epal terdekat adalah sekitar 5-6 langkah.
+ Perhatikan bahawa panjang purata laluan adalah kira-kira 30-40 langkah, yang agak banyak, memandangkan jarak purata ke epal terdekat adalah kira-kira 5-6 langkah.
- Anda juga boleh melihat bagaimana pergerakan Peter kelihatan semasa jalan rawak:
+ Anda juga boleh lihat bagaimana pergerakan Peter semasa jalan rawak:

## Fungsi ganjaran
-Untuk menjadikan polisi kita lebih pintar, kita perlu memahami langkah mana yang "lebih baik" daripada yang lain. Untuk melakukan ini, kita perlu mentakrifkan matlamat kita.
+Untuk menjadikan polisi kita lebih bijak, kita perlu faham tindakan mana yang "lebih baik" daripada yang lain. Untuk ini, kita perlu mendefinisikan matlamat kita.
-Matlamat boleh ditakrifkan dalam bentuk **fungsi ganjaran**, yang akan mengembalikan beberapa nilai skor untuk setiap keadaan. Semakin tinggi nombor, semakin baik fungsi ganjaran. (blok kod 5)
+Matlamat boleh ditakrifkan dari segi **fungsi ganjaran**, yang akan mengembalikan nilai skor untuk setiap keadaan. Semakin tinggi nombor, semakin baik fungsi ganjaran itu. (blok kod 5)
```python
move_reward = -0.1
@@ -154,39 +154,115 @@ def reward(m,pos=None):
return move_reward
```
-Perkara menarik tentang fungsi ganjaran ialah dalam kebanyakan kes, *kita hanya diberikan ganjaran yang besar pada akhir permainan*. Ini bermakna algoritma kita sepatutnya mengingati langkah "baik" yang membawa kepada ganjaran positif pada akhirnya, dan meningkatkan kepentingannya. Begitu juga, semua langkah yang membawa kepada hasil buruk harus dielakkan.
+Perkara yang menarik mengenai fungsi ganjaran adalah bahawa dalam kebanyakan kes, *kita hanya diberikan ganjaran yang ketara pada akhir permainan*. Ini bermakna algoritma kita harus ingat langkah "baik" yang membawa kepada ganjaran positif pada akhirnya, dan meningkatkan kepentingannya. Begitu juga, semua tindakan yang membawa kepada keputusan buruk harus dielakkan.
-## Q-Learning
+## Q-Pembelajaran
-Algoritma yang akan kita bincangkan di sini dipanggil **Q-Learning**. Dalam algoritma ini, polisi ditakrifkan oleh fungsi (atau struktur data) yang dipanggil **Q-Table**. Ia merekodkan "kebaikan" setiap tindakan dalam keadaan tertentu.
+Algoritma yang akan kita bincangkan di sini dipanggil **Q-Pembelajaran**. Dalam algoritma ini, polisi ditakrifkan oleh fungsi (atau struktur data) yang dipanggil **Q-Jadual**. Ia merekodkan "kebaikan" setiap tindakan dalam keadaan tertentu.
-Ia dipanggil Q-Table kerana ia sering mudah untuk mewakilinya sebagai jadual, atau array multi-dimensi. Oleh kerana papan kita mempunyai dimensi `width` x `height`, kita boleh mewakili Q-Table menggunakan array numpy dengan bentuk `width` x `height` x `len(actions)`: (blok kod 6)
+Ia dinamakan Q-Jadual kerana sering mudah diwakili sebagai jadual, atau array berbilang dimensi. Oleh kerana papan kita mempunyai dimensi `lebar` x `tinggi`, kita boleh mewakilkan Q-Jadual menggunakan numpy array dengan bentuk `lebar` x `tinggi` x `len(actions)`: (blok kod 6)
```python
Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions)
```
-Perhatikan bahawa kita memulakan semua nilai Q-Table dengan nilai yang sama, dalam kes kita - 0.25. Ini sepadan dengan polisi "jalan rawak", kerana semua langkah dalam setiap keadaan adalah sama baik. Kita boleh menghantar Q-Table kepada fungsi `plot` untuk memvisualisasikan jadual pada papan: `m.plot(Q)`.
+Perhatikan bahawa kita memulakan semua nilai Q-Jadual dengan nilai yang sama, dalam kes kita - 0.25. Ini sepadan dengan polisi "jalan rawak", kerana semua tindakan dalam setiap keadaan adalah sama baiknya. Kita boleh menghantar Q-Jadual kepada fungsi `plot` untuk memvisualkan jadual pada papan: `m.plot(Q)`.
-
+
-Di tengah-tengah setiap sel terdapat "anak panah" yang menunjukkan arah pergerakan yang disukai. Oleh kerana semua arah adalah sama, titik ditunjukkan.
+Di tengah setiap sel terdapat "anak panah" yang menunjukkan arah pergerakan pilihan. Oleh kerana semua arah adalah sama, satu titik dipaparkan.
-Sekarang kita perlu menjalankan simulasi, meneroka persekitaran kita, dan mempelajari pengagihan nilai Q-Table yang lebih baik, yang akan membolehkan kita mencari laluan ke epal dengan lebih cepat.
+Sekarang kita perlu menjalankan simulasi, meneroka persekitaran kita, dan mempelajari taburan nilai Q-Jadual yang lebih baik, yang akan membolehkan kita mencari jalan ke epal lebih cepat.
-## Intipati Q-Learning: Persamaan Bellman
+## Inti pati Q-Pembelajaran: Persamaan Bellman
-Sebaik sahaja kita mula bergerak, setiap tindakan akan mempunyai ganjaran yang sepadan, iaitu kita secara teorinya boleh memilih tindakan seterusnya berdasarkan ganjaran segera yang tertinggi. Walau bagaimanapun, dalam kebanyakan keadaan, langkah tersebut tidak akan mencapai matlamat kita untuk mencapai epal, dan oleh itu kita tidak boleh segera memutuskan arah mana yang lebih baik.
+Setelah kita mula bergerak, setiap tindakan akan mempunyai ganjaran yang sepadan, iaitu secara teori kita boleh memilih tindakan seterusnya berdasarkan ganjaran segera tertinggi. Namun, dalam kebanyakan keadaan, tindakan itu tidak akan mencapai matlamat kita untuk sampai ke epal, dan oleh itu kita tidak boleh segera memutuskan arah mana yang lebih baik.
> Ingat bahawa bukan hasil segera yang penting, tetapi hasil akhir, yang akan kita peroleh pada akhir simulasi.
-Untuk mengambil kira ganjaran yang tertunda ini, kita perlu menggunakan prinsip **[pengaturcaraan dinamik](https://en.wikipedia.org/wiki/Dynamic_programming)**, yang membolehkan kita memikirkan masalah kita secara rekursif.
+Untuk mengambil kira ganjaran tertunda ini, kita perlu menggunakan prinsip **[pengaturcaraan dinamik](https://en.wikipedia.org/wiki/Dynamic_programming)**, yang membolehkan kita memikirkan masalah kita secara rekursif.
-Katakan kita kini berada di keadaan *s*, dan kita ingin bergerak ke keadaan seterusnya *s'*. Dengan berbuat demikian, kita akan menerima ganjaran segera *r(s,a)*, yang ditakrifkan oleh fungsi ganjaran, ditambah beberapa ganjaran masa depan. Jika kita mengandaikan bahawa Q-Table kita dengan betul mencerminkan "daya tarikan" setiap tindakan, maka di keadaan *s'* kita akan memilih tindakan *a* yang sepadan dengan nilai maksimum *Q(s',a')*. Oleh itu, ganjaran masa depan terbaik yang boleh kita peroleh di keadaan *s* akan ditakrifkan sebagai `max`
+Andaikan kita kini berada di keadaan *s*, dan kita ingin bergerak ke keadaan seterusnya *s'*. Dengan melakukan ini, kita akan menerima ganjaran segera *r(s,a)*, yang ditakrifkan oleh fungsi ganjaran, ditambah sedikit ganjaran masa depan. Jika kita andaikan Q-Jadual kita mencerminkan dengan betul "daya tarik" setiap tindakan, maka pada keadaan *s'* kita akan memilih tindakan *a* yang bersamaan dengan nilai maksimum *Q(s',a')*. Oleh itu, ganjaran masa depan terbaik yang boleh kita perolehi pada keadaan *s* akan ditakrifkan sebagai `max`a'*Q(s',a')* (maksimum di sini dikira atas semua tindakan yang mungkin *a'* pada keadaan *s'*).
+
+Ini memberikan **formula Bellman** untuk mengira nilai Q-Jadual pada keadaan *s*, bagi tindakan *a*:
+
+
+
+Di sini γ adalah apa yang dinamakan **faktor diskaun** yang menentukan sejauh mana anda harus mengutamakan ganjaran semasa dibandingkan dengan ganjaran masa depan dan sebaliknya.
+
+## Algoritma Pembelajaran
+
+Berdasarkan persamaan di atas, kita kini boleh menulis pseudo-kod untuk algoritma pembelajaran kita:
+
+* Inisialisasi Q-Jadual Q dengan nombor sama rata untuk semua keadaan dan tindakan
+* Tetapkan kadar pembelajaran α ← 1
+* Ulang simulasi banyak kali
+ 1. Mulakan di kedudukan rawak
+ 1. Ulang
+ 1. Pilih tindakan *a* pada keadaan *s*
+ 2. Laksanakan tindakan dengan bergerak ke keadaan baru *s'*
+ 3. Jika kita menemui kondisi tamat permainan, atau jumlah ganjaran terlalu kecil - keluar dari simulasi
+ 4. Kira ganjaran *r* pada keadaan baru
+ 5. Kemas kini Fungsi Q menurut persamaan Bellman: *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ maxa'Q(s',a'))*
+ 6. *s* ← *s'*
+ 7. Kemas kini jumlah ganjaran dan kurangkan α.
+
+## Eksploitasi vs. Eksplorasi
+
+Dalam algoritma di atas, kita tidak nyatakan bagaimana tepatnya kita harus memilih tindakan pada langkah 2.1. Jika kita memilih tindakan secara rawak, kita akan secara rawak **menjelajah** persekitaran, dan kita cukup mungkin untuk mati kerap serta menjelajah kawasan yang biasanya tidak kita lawati. Pendekatan alternatif adalah untuk **mengeksploitasi** nilai Q-Jadual yang sudah kita tahu, dan dengan itu memilih tindakan terbaik (dengan nilai Q-Jadual lebih tinggi) pada keadaan *s*. Namun, ini akan menghalang kita daripada meneroka keadaan lain, dan kemungkinan kita tidak akan menemui penyelesaian optimum.
+
+Oleh itu, pendekatan terbaik adalah untuk mencari keseimbangan antara eksplorasi dan eksploitasi. Ini boleh dilakukan dengan memilih tindakan pada keadaan *s* dengan kebarangkalian yang berkadar dengan nilai dalam Q-Jadual. Pada mulanya, apabila nilai Q-Jadual semuanya sama, ia bersamaan dengan pemilihan rawak, tetapi apabila kita belajar lebih banyak tentang persekitaran kita, kita akan lebih cenderung mengikuti laluan optimum sambil membenarkan ejen memilih laluan yang belum diterokai sekali-sekala.
+
+## Pelaksanaan dalam Python
+
+Kini kita sudah bersedia untuk melaksanakan algoritma pembelajaran. Sebelum kita lakukan itu, kita juga perlu fungsi yang menukar nombor sebarang dalam Q-Jadual kepada vektor kebarangkalian bagi tindakan yang sepadan.
+
+1. Buat fungsi `probs()`:
+
+ ```python
+ def probs(v,eps=1e-4):
+ v = v-v.min()+eps
+ v = v/v.sum()
+ return v
+ ```
+
+ Kita tambah sedikit `eps` ke vektor asal untuk mengelakkan pembahagian dengan 0 dalam kes permulaan, apabila semua komponen vektor adalah seragam.
+
+Jalankan algoritma pembelajaran melalui 5000 eksperimen, juga dipanggil **epok**: (blok kod 8)
+```python
+ for epoch in range(5000):
+
+ # Pilih titik awal
+ m.random_start()
+
+ # Mulakan perjalanan
+ n=0
+ cum_reward = 0
+ while True:
+ x,y = m.human
+ v = probs(Q[x,y])
+ a = random.choices(list(actions),weights=v)[0]
+ dpos = actions[a]
+ m.move(dpos,check_correctness=False) # kami membenarkan pemain bergerak di luar papan, yang menamatkan episod
+ r = reward(m)
+ cum_reward += r
+ if r==end_reward or cum_reward < -1000:
+ lpath.append(n)
+ break
+ alpha = np.exp(-n / 10e5)
+ gamma = 0.5
+ ai = action_idx[a]
+ Q[x,y,ai] = (1 - alpha) * Q[x,y,ai] + alpha * (r + gamma * Q[x+dpos[0], y+dpos[1]].max())
+ n+=1
+```
+
+Selepas melaksanakan algoritma ini, Q-Jadual harus dikemas kini dengan nilai yang menentukan daya tarik tindakan yang berbeza di setiap langkah. Kita boleh cuba memvisualkan Q-Jadual dengan melukis vektor pada setiap sel yang akan menunjuk ke arah pergerakan yang diinginkan. Untuk kesederhanaan, kita lukis bulatan kecil menggantikan kepala anak panah.
+
+
## Memeriksa polisi
-Oleh kerana Q-Table menyenaraikan "daya tarikan" setiap tindakan di setiap keadaan, ia agak mudah untuk menggunakannya bagi menentukan navigasi yang efisien dalam dunia kita. Dalam kes yang paling mudah, kita boleh memilih tindakan yang sepadan dengan nilai Q-Table tertinggi: (blok kod 9)
+Oleh kerana Q-Jadual menyenaraikan "daya tarik" setiap tindakan pada setiap keadaan, agak mudah untuk menggunakannya untuk mentakrifkan navigasi yang berkesan dalam dunia kita. Dalam kes paling mudah, kita boleh memilih tindakan yang sepadan dengan nilai Q-Jadual tertinggi: (blok kod 9)
```python
def qpolicy_strict(m):
@@ -198,17 +274,18 @@ def qpolicy_strict(m):
walk(m,qpolicy_strict)
```
-> Jika anda mencuba kod di atas beberapa kali, anda mungkin perasan bahawa kadangkala ia "tergantung", dan anda perlu menekan butang STOP dalam notebook untuk menghentikannya. Ini berlaku kerana mungkin terdapat situasi di mana dua keadaan "menunjuk" antara satu sama lain dari segi nilai Q yang optimum, menyebabkan agen bergerak antara keadaan tersebut tanpa henti.
+
+> Jika anda mencuba kod di atas beberapa kali, anda mungkin perasan bahawa kadangkala ia "terhenti", dan anda perlu menekan butang STOP dalam notebook untuk mengganggu ia. Ini berlaku kerana mungkin terdapat situasi di mana dua keadaan "menunjuk" antara satu sama lain dari segi nilai Q-Optimum, dalam kes ini agen berakhir bergerak antara keadaan tersebut tanpa henti.
## 🚀Cabaran
-> **Tugas 1:** Ubah fungsi `walk` untuk menghadkan panjang maksimum laluan kepada bilangan langkah tertentu (contohnya, 100), dan lihat kod di atas mengembalikan nilai ini dari semasa ke semasa.
+> **Tugas 1:** Ubah fungsi `walk` untuk mengehadkan panjang maksimum laluan dengan sejumlah langkah tertentu (katakan, 100), dan lihat kod di atas mengembalikan nilai ini dari semasa ke semasa.
-> **Tugas 2:** Ubah fungsi `walk` supaya ia tidak kembali ke tempat yang telah dilalui sebelumnya. Ini akan menghalang `walk` daripada berulang, namun, agen masih boleh terperangkap di lokasi yang tidak dapat dilepaskan.
+> **Tugas 2:** Ubah fungsi `walk` supaya ia tidak kembali ke tempat yang telah dikunjungi sebelum ini. Ini akan menghalang `walk` daripada berulang, namun, agen masih boleh terperangkap di lokasi yang tidak dapat ia lepaskan.
## Navigasi
-Polisi navigasi yang lebih baik adalah yang kita gunakan semasa latihan, yang menggabungkan eksploitasi dan eksplorasi. Dalam polisi ini, kita akan memilih setiap tindakan dengan kebarangkalian tertentu, berkadar dengan nilai dalam Q-Table. Strategi ini mungkin masih menyebabkan agen kembali ke posisi yang telah diterokai, tetapi, seperti yang anda lihat dari kod di bawah, ia menghasilkan laluan purata yang sangat pendek ke lokasi yang diinginkan (ingat bahawa `print_statistics` menjalankan simulasi sebanyak 100 kali): (blok kod 10)
+Polisi navigasi yang lebih baik adalah yang kami guna semasa latihan, yang menggabungkan eksploitasi dan penerokaan. Dalam polisi ini, kita akan memilih setiap tindakan dengan kebarangkalian tertentu, berkadar dengan nilai dalam Q-Table. Strategi ini masih boleh menyebabkan agen kembali ke posisi yang telah diterokai, tetapi, seperti yang anda lihat dari kod di bawah, ia menghasilkan laluan purata yang sangat pendek ke lokasi dikehendaki (ingat bahawa `print_statistics` menjalankan simulasi 100 kali): (blok kod 10)
```python
def qpolicy(m):
@@ -220,28 +297,32 @@ def qpolicy(m):
print_statistics(qpolicy)
```
-Selepas menjalankan kod ini, anda sepatutnya mendapat panjang laluan purata yang jauh lebih kecil daripada sebelumnya, dalam lingkungan 3-6.
+Selepas menjalankan kod ini, anda sepatutnya mendapat panjang laluan purata yang jauh lebih kecil daripada sebelumnya, dalam julat 3-6.
## Menyelidik proses pembelajaran
-Seperti yang telah disebutkan, proses pembelajaran adalah keseimbangan antara eksplorasi dan eksploitasi pengetahuan yang diperoleh tentang struktur ruang masalah. Kita telah melihat bahawa hasil pembelajaran (keupayaan untuk membantu agen mencari laluan pendek ke matlamat) telah bertambah baik, tetapi ia juga menarik untuk memerhatikan bagaimana panjang laluan purata berubah semasa proses pembelajaran:
+Seperti yang telah disebut, proses pembelajaran adalah keseimbangan antara penerokaan dan eksploitasi pengetahuan yang diperoleh tentang struktur ruang masalah. Kami telah melihat bahawa hasil pembelajaran (keupayaan untuk membantu agen mencari laluan pendek ke matlamat) telah bertambah baik, tetapi menarik juga untuk melihat bagaimana panjang laluan purata bertindak semasa proses pembelajaran:
+
+
Pembelajaran boleh diringkaskan seperti berikut:
-- **Panjang laluan purata meningkat**. Apa yang kita lihat di sini adalah pada mulanya, panjang laluan purata meningkat. Ini mungkin disebabkan oleh fakta bahawa apabila kita tidak tahu apa-apa tentang persekitaran, kita cenderung terperangkap dalam keadaan buruk, seperti air atau serigala. Apabila kita belajar lebih banyak dan mula menggunakan pengetahuan ini, kita boleh meneroka persekitaran lebih lama, tetapi kita masih tidak tahu di mana lokasi epal dengan baik.
+- **Panjang laluan purata meningkat**. Apa yang kita lihat di sini ialah pada mulanya, panjang laluan purata meningkat. Ini mungkin disebabkan fakta apabila kita tidak mengetahui apa-apa tentang persekitaran, kita cenderung terperangkap di keadaan buruk, air atau serigala. Apabila kita belajar lebih dan mula menggunakan pengetahuan ini, kita boleh meneroka persekitaran lebih lama, namun kita masih belum mengetahui lokasi epal dengan baik.
-- **Panjang laluan berkurang, apabila kita belajar lebih banyak**. Setelah kita belajar cukup, menjadi lebih mudah bagi agen untuk mencapai matlamat, dan panjang laluan mula berkurang. Walau bagaimanapun, kita masih terbuka kepada eksplorasi, jadi kita sering menyimpang dari laluan terbaik dan meneroka pilihan baru, menjadikan laluan lebih panjang daripada yang optimum.
+- **Panjang laluan berkurang, apabila kita belajar lebih banyak**. Setelah kita belajar cukup, menjadi lebih mudah untuk agen mencapai matlamat, dan panjang laluan mula berkurang. Namun, kita masih terbuka kepada penerokaan, jadi sering kali kita menyimpang daripada laluan terbaik, dan meneroka pilihan baru, menjadikan laluan lebih panjang daripada optimum.
-- **Panjang meningkat secara mendadak**. Apa yang kita juga perhatikan pada graf ini adalah pada satu ketika, panjang meningkat secara mendadak. Ini menunjukkan sifat stokastik proses tersebut, dan bahawa kita boleh pada satu ketika "merosakkan" koefisien Q-Table dengan menulis semula mereka dengan nilai baru. Ini sebaiknya diminimumkan dengan mengurangkan kadar pembelajaran (contohnya, menjelang akhir latihan, kita hanya menyesuaikan nilai Q-Table dengan nilai kecil).
+- **Panjang meningkat dengan mendadak**. Apa yang juga kita perhatikan dalam graf ini ialah pada suatu ketika, panjang meningkat secara mendadak. Ini menunjukkan sifat stokastik proses ini, dan bahawa pada suatu ketika kita boleh "merosakkan" pekali Q-Table dengan menimpanya dengan nilai baru. Ini seharusnya diminimumkan dengan mengurangkan kadar pembelajaran (contohnya, menjelang akhir latihan, kita hanya menyesuaikan nilai Q-Table dengan nilai kecil).
-Secara keseluruhan, adalah penting untuk diingat bahawa kejayaan dan kualiti proses pembelajaran sangat bergantung pada parameter seperti kadar pembelajaran, pengurangan kadar pembelajaran, dan faktor diskaun. Parameter-parameter ini sering dipanggil **hiperparameter**, untuk membezakannya daripada **parameter**, yang kita optimalkan semasa latihan (contohnya, koefisien Q-Table). Proses mencari nilai hiperparameter terbaik dipanggil **pengoptimuman hiperparameter**, dan ia layak menjadi topik tersendiri.
+Secara keseluruhan, penting untuk diingat bahawa kejayaan dan kualiti proses pembelajaran sangat bergantung pada parameter, seperti kadar pembelajaran, pengurangan kadar pembelajaran, dan faktor diskaun. Ini sering dipanggil **hyperparameter**, untuk membezakan mereka daripada **parameter**, yang kita optima semasa latihan (contohnya, pekali Q-Table). Proses mencari nilai hyperparameter terbaik dipanggil **pengoptimuman hyperparameter**, dan ia layak mendapat topik khas.
## [Kuiz selepas kuliah](https://ff-quizzes.netlify.app/en/ml/)
-## Tugasan
-[Dunia yang Lebih Realistik](assignment.md)
+## Tugasan
+[Dunia Lebih Realistik](assignment.md)
---
-**Penafian**:
-Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini.
\ No newline at end of file
+
+**Penafian**:
+Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang sahih. Untuk maklumat penting, terjemahan oleh manusia profesional adalah disyorkan. Kami tidak bertanggungjawab terhadap sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini.
+
\ No newline at end of file
diff --git a/translations/ms/8-Reinforcement/2-Gym/README.md b/translations/ms/8-Reinforcement/2-Gym/README.md
index b1707984b..78eabc6d2 100644
--- a/translations/ms/8-Reinforcement/2-Gym/README.md
+++ b/translations/ms/8-Reinforcement/2-Gym/README.md
@@ -1,12 +1,32 @@
+# Luncur CartPole
+
+Masalah yang telah kita selesaikan dalam pelajaran sebelumnya mungkin kelihatan seperti masalah mainan, tidak benar-benar sesuai untuk situasi kehidupan sebenar. Ini tidak benar, kerana banyak masalah dunia sebenar juga berkongsi senario ini - termasuk bermain Catur atau Go. Mereka serupa, kerana kita juga mempunyai papan dengan peraturan yang ditetapkan dan **keadaan diskret**.
+
+## [Kuiz pra-ceramah](https://ff-quizzes.netlify.app/en/ml/)
+
+## Pengenalan
+
+Dalam pelajaran ini kita akan menerapkan prinsip yang sama dari Q-Learning kepada masalah dengan **keadaan berterusan**, iaitu keadaan yang diberikan oleh satu atau lebih nombor nyata. Kita akan menangani masalah berikut:
+
+> **Masalah**: Jika Peter ingin melarikan diri dari serigala, dia perlu dapat bergerak lebih cepat. Kita akan lihat bagaimana Peter boleh belajar meluncur, khususnya, untuk mengekalkan keseimbangan, menggunakan Q-Learning.
+
+
+
+> Peter dan kawan-kawannya menjadi kreatif untuk melarikan diri dari serigala! Gambar oleh [Jen Looper](https://twitter.com/jenlooper)
+
+Kita akan menggunakan versi ringkas keseimbangan yang dikenali sebagai masalah **CartPole**. Dalam dunia cartpole, kita mempunyai peluncur mendatar yang boleh bergerak ke kiri atau kanan, dan tujuannya adalah untuk menyeimbangkan tiang menegak di atas peluncur.
+
+
+
## Prasyarat
-Dalam pelajaran ini, kita akan menggunakan perpustakaan bernama **OpenAI Gym** untuk mensimulasikan pelbagai **persekitaran**. Anda boleh menjalankan kod pelajaran ini secara tempatan (contohnya dari Visual Studio Code), di mana simulasi akan dibuka dalam tetingkap baru. Apabila menjalankan kod secara dalam talian, anda mungkin perlu membuat beberapa penyesuaian pada kod, seperti yang diterangkan [di sini](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7).
+Dalam pelajaran ini, kita akan menggunakan perpustakaan yang dipanggil **OpenAI Gym** untuk mensimulasikan pelbagai **persekitaran**. Anda boleh menjalankan kod pelajaran ini secara tempatan (contoh dari Visual Studio Code), dalam kes ini simulasi akan dibuka dalam tetingkap baru. Apabila menjalankan kod secara dalam talian, anda mungkin perlu membuat beberapa pengubahsuaian pada kod, seperti yang diterangkan [di sini](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7).
## OpenAI Gym
-Dalam pelajaran sebelumnya, peraturan permainan dan keadaan diberikan oleh kelas `Board` yang kita tentukan sendiri. Di sini kita akan menggunakan **persekitaran simulasi** khas, yang akan mensimulasikan fizik di sebalik tiang yang seimbang. Salah satu persekitaran simulasi yang paling popular untuk melatih algoritma pembelajaran pengukuhan dipanggil [Gym](https://gym.openai.com/), yang diselenggarakan oleh [OpenAI](https://openai.com/). Dengan menggunakan gym ini, kita boleh mencipta pelbagai **persekitaran** daripada simulasi cartpole hingga permainan Atari.
+Dalam pelajaran sebelumnya, peraturan permainan dan keadaan diberikan oleh kelas `Board` yang kita definisikan sendiri. Di sini kita akan menggunakan **persekitaran simulasi** khas, yang akan mensimulasikan fizik di sebalik tiang keseimbangan. Salah satu persekitaran simulasi yang paling popular untuk melatih algoritma pembelajaran penguatan dikenali sebagai [Gym](https://gym.openai.com/), yang dikendalikan oleh [OpenAI](https://openai.com/). Dengan menggunakan gym ini kita boleh mencipta pelbagai **persekitaran** dari simulasi cartpole hingga permainan Atari.
-> **Nota**: Anda boleh melihat persekitaran lain yang tersedia dari OpenAI Gym [di sini](https://gym.openai.com/envs/#classic_control).
+> **Nota**: Anda boleh melihat persekitaran lain yang tersedia di OpenAI Gym [di sini](https://gym.openai.com/envs/#classic_control).
Pertama, mari pasang gym dan import perpustakaan yang diperlukan (blok kod 1):
@@ -22,11 +42,11 @@ import random
## Latihan - inisialisasi persekitaran cartpole
-Untuk bekerja dengan masalah keseimbangan cartpole, kita perlu menginisialisasi persekitaran yang sesuai. Setiap persekitaran dikaitkan dengan:
+Untuk bekerja dengan masalah keseimbangan cartpole, kita perlu menginisialisasi persekitaran yang bersesuaian. Setiap persekitaran dikaitkan dengan:
-- **Ruang pemerhatian** yang menentukan struktur maklumat yang kita terima daripada persekitaran. Untuk masalah cartpole, kita menerima kedudukan tiang, kelajuan, dan beberapa nilai lain.
+- **Ruang pemerhatian** yang mentakrifkan struktur maklumat yang kita terima dari persekitaran. Untuk masalah cartpole, kita menerima posisi tiang, halaju dan beberapa nilai lain.
-- **Ruang tindakan** yang menentukan tindakan yang mungkin. Dalam kes kita, ruang tindakan adalah diskret, dan terdiri daripada dua tindakan - **kiri** dan **kanan**. (blok kod 2)
+- **Ruang tindakan** yang mentakrifkan tindakan yang mungkin. Dalam kes kita, ruang tindakan adalah diskret, dan terdiri daripada dua tindakan - **kiri** dan **kanan**. (blok kod 2)
1. Untuk menginisialisasi, taip kod berikut:
@@ -37,11 +57,11 @@ Untuk bekerja dengan masalah keseimbangan cartpole, kita perlu menginisialisasi
print(env.action_space.sample())
```
-Untuk melihat bagaimana persekitaran berfungsi, mari jalankan simulasi pendek selama 100 langkah. Pada setiap langkah, kita memberikan salah satu tindakan untuk diambil - dalam simulasi ini kita hanya memilih tindakan secara rawak daripada `action_space`.
+Untuk melihat bagaimana persekitaran berfungsi, mari jalankan simulasi pendek selama 100 langkah. Pada setiap langkah, kita menyediakan salah satu tindakan yang akan diambil - dalam simulasi ini kita hanya memilih tindakan secara rawak dari `action_space`.
-1. Jalankan kod di bawah dan lihat hasilnya.
+1. Jalankan kod di bawah dan lihat apa hasilnya.
- ✅ Ingat bahawa adalah lebih baik untuk menjalankan kod ini pada pemasangan Python tempatan! (blok kod 3)
+ ✅ Ingat bahawa lebih digalakkan untuk menjalankan kod ini pada pemasangan Python tempatan! (blok kod 3)
```python
env.reset()
@@ -56,7 +76,7 @@ Untuk melihat bagaimana persekitaran berfungsi, mari jalankan simulasi pendek se

-1. Semasa simulasi, kita perlu mendapatkan pemerhatian untuk menentukan cara bertindak. Sebenarnya, fungsi langkah mengembalikan pemerhatian semasa, fungsi ganjaran, dan bendera selesai yang menunjukkan sama ada masuk akal untuk meneruskan simulasi atau tidak: (blok kod 4)
+1. Semasa simulasi, kita perlu mendapatkan pemerhatian untuk menentukan bagaimana bertindak. Sebenarnya, fungsi step mengembalikan pemerhatian semasa, fungsi ganjaran, dan bendera done yang menunjukkan sama ada simulasi perlu diteruskan atau tidak: (blok kod 4)
```python
env.reset()
@@ -83,8 +103,8 @@ Untuk melihat bagaimana persekitaran berfungsi, mari jalankan simulasi pendek se
```
Vektor pemerhatian yang dikembalikan pada setiap langkah simulasi mengandungi nilai berikut:
- - Kedudukan kereta
- - Kelajuan kereta
+ - Posisi gerabak
+ - Halaju gerabak
- Sudut tiang
- Kadar putaran tiang
@@ -95,30 +115,30 @@ Untuk melihat bagaimana persekitaran berfungsi, mari jalankan simulasi pendek se
print(env.observation_space.high)
```
- Anda juga mungkin perasan bahawa nilai ganjaran pada setiap langkah simulasi sentiasa 1. Ini kerana matlamat kita adalah untuk bertahan selama mungkin, iaitu mengekalkan tiang pada kedudukan yang agak menegak untuk tempoh masa yang paling lama.
+ Anda juga mungkin perasan bahawa nilai ganjaran pada setiap langkah simulasi sentiasa 1. Ini kerana tujuan kita adalah untuk bertahan selama mungkin, iaitu mengekalkan tiang pada posisi hampir menegak untuk tempoh masa terpanjang.
- ✅ Sebenarnya, simulasi CartPole dianggap selesai jika kita berjaya mendapatkan ganjaran purata sebanyak 195 dalam 100 percubaan berturut-turut.
+ ✅ Sebenarnya, simulasi CartPole dianggap selesai jika kita berjaya mendapat purata ganjaran sebanyak 195 selama 100 ujian berturut-turut.
## Diskretisasi keadaan
-Dalam Q-Learning, kita perlu membina Q-Table yang menentukan apa yang perlu dilakukan pada setiap keadaan. Untuk dapat melakukan ini, kita memerlukan keadaan untuk menjadi **diskret**, lebih tepat lagi, ia harus mengandungi bilangan nilai diskret yang terhad. Oleh itu, kita perlu **mendiskretkan** pemerhatian kita, memetakan mereka kepada satu set keadaan yang terhad.
+Dalam Q-Learning, kita perlu membina Q-Table yang menetapkan apa yang perlu dilakukan pada setiap keadaan. Untuk melakukan ini, kita perlukan keadaan yang **diskret**, dengan lebih tepat, ia harus mengandungi bilangan nilai diskret yang terhingga. Oleh itu, kita perlu **diskretkan** pemerhatian kita, memetakannya ke set terhingga keadaan.
-Terdapat beberapa cara kita boleh melakukan ini:
+Terdapat beberapa cara yang kita boleh lakukan ini:
-- **Bahagikan kepada bin**. Jika kita tahu selang bagi nilai tertentu, kita boleh membahagikan selang ini kepada beberapa **bin**, dan kemudian menggantikan nilai dengan nombor bin yang ia tergolong. Ini boleh dilakukan menggunakan kaedah numpy [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html). Dalam kes ini, kita akan tahu dengan tepat saiz keadaan, kerana ia akan bergantung pada bilangan bin yang kita pilih untuk digitalisasi.
+- **Bahagikan kepada bin**. Jika kita tahu selang nilai tertentu, kita boleh bahagikan selang ini kepada beberapa **bin**, dan kemudian gantikan nilai tersebut dengan nombor bin yang dimilikinya. Ini boleh dilakukan menggunakan kaedah numpy [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html). Dalam kes ini, kita akan tahu dengan tepat saiz keadaan, kerana ia bergantung pada bilangan bin yang kita pilih untuk digitalisasi.
+
+✅ Kita boleh menggunakan interpolasi linear untuk membawa nilai ke dalam selang terhingga (kata, dari -20 hingga 20), kemudian menukar nombor kepada integer dengan pembulatan. Ini memberi kita kurang kawalan terhadap saiz keadaan, terutamanya jika kita tidak tahu jarak input sebenar. Sebagai contoh, dalam kes kita, 2 daripada 4 nilai tidak mempunyai batas atas/bawah yang ditetapkan, yang boleh menyebabkan bilangan keadaan tak terhingga.
-✅ Kita boleh menggunakan interpolasi linear untuk membawa nilai kepada beberapa selang terhad (contohnya, dari -20 hingga 20), dan kemudian menukar nombor kepada integer dengan membundarkan mereka. Ini memberikan kita kawalan yang kurang terhadap saiz keadaan, terutamanya jika kita tidak tahu julat tepat nilai input. Sebagai contoh, dalam kes kita, 2 daripada 4 nilai tidak mempunyai had atas/bawah pada nilai mereka, yang mungkin menghasilkan bilangan keadaan yang tidak terhingga.
+Dalam contoh kita, kita akan memilih pendekatan kedua. Seperti yang anda mungkin perasan kemudian, walaupun batas atas/bawah tidak ditentukan, nilai-nilai ini jarang mengambil nilai di luar selang terhingga tertentu, jadi keadaan dengan nilai ekstrim sangat jarang.
-Dalam contoh kita, kita akan menggunakan pendekatan kedua. Seperti yang anda mungkin perasan kemudian, walaupun had atas/bawah tidak ditentukan, nilai-nilai tersebut jarang mengambil nilai di luar selang terhad tertentu, jadi keadaan dengan nilai ekstrem akan sangat jarang berlaku.
-
-1. Berikut adalah fungsi yang akan mengambil pemerhatian daripada model kita dan menghasilkan tuple 4 nilai integer: (blok kod 6)
+1. Berikut adalah fungsi yang akan mengambil pemerhatian dari model kita dan menghasilkan tuple empat nilai integer: (blok kod 6)
```python
def discretize(x):
return tuple((x/np.array([0.25, 0.25, 0.01, 0.1])).astype(np.int))
```
-1. Mari kita juga terokai kaedah diskretisasi lain menggunakan bin: (blok kod 7)
+1. Mari juga terokai satu lagi kaedah diskretisasi menggunakan bin: (blok kod 7)
```python
def create_bins(i,num):
@@ -126,17 +146,17 @@ Dalam contoh kita, kita akan menggunakan pendekatan kedua. Seperti yang anda mun
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
+ ints = [(-5,5),(-2,2),(-0.5,0.5),(-2,2)] # selang nilai untuk setiap parameter
+ nbins = [20,20,10,10] # bilangan bin untuk setiap 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. Sekarang mari jalankan simulasi pendek dan perhatikan nilai persekitaran diskret tersebut. Jangan ragu untuk mencuba kedua-dua `discretize` dan `discretize_bins` dan lihat jika terdapat perbezaan.
+1. Sekarang jalankan simulasi pendek dan perhatikan nilai persekitaran diskret tersebut. Sila cuba kedua-dua `discretize` dan `discretize_bins` dan lihat jika ada perbezaan.
- ✅ discretize_bins mengembalikan nombor bin, yang berasaskan 0. Oleh itu, untuk nilai pemboleh ubah input sekitar 0, ia mengembalikan nombor dari tengah-tengah selang (10). Dalam discretize, kita tidak peduli tentang julat nilai output, membenarkan mereka menjadi negatif, jadi nilai keadaan tidak beralih, dan 0 sepadan dengan 0. (blok kod 8)
+ ✅ discretize_bins mengembalikan nombor bin, yang bermula dari 0. Jadi bagi nilai pemboleh ubah input sekitar 0 ia mengembalikan nombor dari tengah interval (10). Dalam discretize, kita tidak mengambil kira julat nilai keluaran, membenarkan nilai negatif, jadi nilai keadaan tidak berganjak, dan 0 merujuk kepada 0. (blok kod 8)
```python
env.reset()
@@ -145,20 +165,20 @@ Dalam contoh kita, kita akan menggunakan pendekatan kedua. Seperti yang anda mun
while not done:
#env.render()
obs, rew, done, info = env.step(env.action_space.sample())
- #print(discretize_bins(obs))
+ #print(diskretkan_bin(obs))
print(discretize(obs))
env.close()
```
- ✅ Nyahkomen baris yang bermula dengan env.render jika anda ingin melihat bagaimana persekitaran dilaksanakan. Jika tidak, anda boleh melaksanakannya di latar belakang, yang lebih cepat. Kita akan menggunakan pelaksanaan "tidak kelihatan" ini semasa proses Q-Learning kita.
+ ✅ Buka komen pada baris yang bermula dengan env.render jika anda mahu melihat bagaimana persekitaran berjalan. Jika tidak, anda boleh menjalankannya di latar belakang, yang lebih pantas. Kita akan menggunakan pelaksanaan "tidak nampak" ini sepanjang proses Q-Learning kita.
## Struktur Q-Table
-Dalam pelajaran sebelumnya, keadaan adalah pasangan nombor mudah dari 0 hingga 8, dan oleh itu ia mudah untuk mewakili Q-Table dengan tensor numpy dengan bentuk 8x8x2. Jika kita menggunakan diskretisasi bin, saiz vektor keadaan kita juga diketahui, jadi kita boleh menggunakan pendekatan yang sama dan mewakili keadaan dengan array bentuk 20x20x10x10x2 (di sini 2 adalah dimensi ruang tindakan, dan dimensi pertama sepadan dengan bilangan bin yang kita pilih untuk digunakan bagi setiap parameter dalam ruang pemerhatian).
+Dalam pelajaran sebelumnya, keadaan adalah sepasang nombor dari 0 hingga 8, dan oleh itu mudah untuk mewakili Q-Table dengan tensor numpy berbentuk 8x8x2. Jika kita menggunakan diskretisasi bin, saiz vektor keadaan juga diketahui, jadi kita boleh menggunakan pendekatan yang sama dan wakili keadaan dengan array berbentuk 20x20x10x10x2 (di sini 2 adalah dimensi ruang tindakan, dan dimensi pertama merujuk kepada bilangan bin yang kita pilih untuk setiap parameter dalam ruang pemerhatian).
-Walau bagaimanapun, kadangkala dimensi tepat ruang pemerhatian tidak diketahui. Dalam kes fungsi `discretize`, kita mungkin tidak pernah pasti bahawa keadaan kita kekal dalam had tertentu, kerana beberapa nilai asal tidak terikat. Oleh itu, kita akan menggunakan pendekatan yang sedikit berbeza dan mewakili Q-Table dengan kamus.
+Walau bagaimanapun, kadangkala dimensi tepat ruang pemerhatian tidak diketahui. Dalam kes fungsi `discretize`, kita mungkin tidak pasti sama ada keadaan kita kekal dalam had tertentu, kerana beberapa nilai asal tidak terbatas. Oleh itu, kita akan menggunakan pendekatan sedikit berbeza dan mewakili Q-Table dengan kamus.
-1. Gunakan pasangan *(state,action)* sebagai kunci kamus, dan nilai akan sepadan dengan nilai entri Q-Table. (blok kod 9)
+1. Gunakan pasangan *(state,action)* sebagai kekunci kamus, dan nilai akan merujuk kepada entri Q-Table. (blok kod 9)
```python
Q = {}
@@ -168,38 +188,38 @@ Walau bagaimanapun, kadangkala dimensi tepat ruang pemerhatian tidak diketahui.
return [Q.get((state,a),0) for a in actions]
```
- Di sini kita juga mentakrifkan fungsi `qvalues()`, yang mengembalikan senarai nilai Q-Table untuk keadaan tertentu yang sepadan dengan semua tindakan yang mungkin. Jika entri tidak hadir dalam Q-Table, kita akan mengembalikan 0 sebagai lalai.
+ Di sini kita juga mentakrifkan fungsi `qvalues()`, yang mengembalikan senarai nilai Q-Table untuk keadaan tertentu yang meliputi semua tindakan yang mungkin. Jika entri tidak ada dalam Q-Table, kita akan mengembalikan 0 sebagai nilai lalai.
## Mari mulakan Q-Learning
-Sekarang kita bersedia untuk mengajar Peter untuk menyeimbangkan!
+Sekarang kita bersedia untuk mengajar Peter cara mengekalkan keseimbangan!
1. Pertama, mari tetapkan beberapa hiperparameter: (blok kod 10)
```python
- # hyperparameters
+ # hiperparameter
alpha = 0.3
gamma = 0.9
epsilon = 0.90
```
- Di sini, `alpha` adalah **kadar pembelajaran** yang menentukan sejauh mana kita harus menyesuaikan nilai semasa Q-Table pada setiap langkah. Dalam pelajaran sebelumnya kita bermula dengan 1, dan kemudian menurunkan `alpha` kepada nilai yang lebih rendah semasa latihan. Dalam contoh ini kita akan mengekalkannya tetap untuk kesederhanaan, dan anda boleh bereksperimen dengan menyesuaikan nilai `alpha` kemudian.
+ Di sini, `alpha` adalah **kadar pembelajaran** yang mentakrifkan sejauh mana kita harus melaraskan nilai Q-Table pada setiap langkah. Dalam pelajaran sebelumnya kita bermula dengan 1, kemudian mengurangkan `alpha` kepada nilai lebih rendah semasa latihan. Dalam contoh ini kita akan mengekalkannya sebagai tetap untuk kesederhanaan, dan anda boleh bereksperimen dengan melaraskan nilai `alpha` kemudian.
`gamma` adalah **faktor diskaun** yang menunjukkan sejauh mana kita harus mengutamakan ganjaran masa depan berbanding ganjaran semasa.
- `epsilon` adalah **faktor penerokaan/eksploitasi** yang menentukan sama ada kita harus memilih penerokaan berbanding eksploitasi atau sebaliknya. Dalam algoritma kita, kita akan dalam peratusan `epsilon` kes memilih tindakan seterusnya mengikut nilai Q-Table, dan dalam baki kes kita akan melaksanakan tindakan secara rawak. Ini akan membolehkan kita meneroka kawasan ruang carian yang belum pernah kita lihat sebelum ini.
-
- ✅ Dalam konteks keseimbangan - memilih tindakan secara rawak (penerokaan) akan bertindak sebagai pukulan rawak ke arah yang salah, dan tiang perlu belajar bagaimana untuk memulihkan keseimbangan daripada "kesilapan" tersebut.
+ `epsilon` adalah **faktor eksplorasi/eksploitasi** yang menentukan sama ada kita harus mengutamakan eksplorasi berbanding eksploitasi atau sebaliknya. Dalam algoritma kita, dalam peratusan `epsilon` kes kita akan memilih tindakan seterusnya menurut nilai Q-Table, dan dalam baki kes kita akan melakukan tindakan rawak. Ini membolehkan kita meneroka kawasan ruang carian yang belum pernah dilihat sebelum ini.
-### Meningkatkan algoritma
+ ✅ Dalam konteks keseimbangan - memilih tindakan rawak (eksplorasi) bertindak seperti tumbukan rawak ke arah yang salah, dan tiang perlu belajar bagaimana memulihkan keseimbangan dari "kesilapan" tersebut.
-Kita juga boleh membuat dua penambahbaikan pada algoritma kita daripada pelajaran sebelumnya:
+### Memperbaiki algoritma
-- **Kira ganjaran kumulatif purata**, sepanjang beberapa simulasi. Kita akan mencetak kemajuan setiap 5000 iterasi, dan kita akan mengambil purata ganjaran kumulatif kita sepanjang tempoh masa tersebut. Ini bermakna jika kita mendapat lebih daripada 195 mata - kita boleh menganggap masalah itu selesai, dengan kualiti yang lebih tinggi daripada yang diperlukan.
+Kita juga boleh membuat dua penambahbaikan pada algoritma kita dari pelajaran sebelumnya:
-- **Kira hasil kumulatif purata maksimum**, `Qmax`, dan kita akan menyimpan Q-Table yang sepadan dengan hasil tersebut. Apabila anda menjalankan latihan, anda akan perasan bahawa kadangkala hasil kumulatif purata mula menurun, dan kita mahu menyimpan nilai Q-Table yang sepadan dengan model terbaik yang diperhatikan semasa latihan.
+- **Kira ganjaran kumulatif purata**, sepanjang beberapa simulasi. Kita akan mencetak kemajuan setiap 5000 iterasi, dan kita akan puratakan ganjaran kumulatif kita sepanjang tempoh masa tersebut. Ini bermakna jika kita mendapat lebih daripada 195 mata - kita boleh anggap masalah selesai, dengan kualiti lebih tinggi daripada yang diperlukan.
+
+- **Kira hasil kumulatif purata maksimum**, `Qmax`, dan kita akan simpan Q-Table yang sepadan dengan hasil itu. Apabila anda menjalankan latihan, anda akan perasan kadang-kadang hasil kumulatif purata mula menurun, dan kita mahu mengekalkan nilai Q-Table yang sepadan dengan model terbaik yang diperhatikan semasa latihan.
-1. Kumpulkan semua ganjaran kumulatif pada setiap simulasi dalam vektor `rewards` untuk plot kemudian. (blok kod 11)
+1. Kumpul semua ganjaran kumulatif setiap simulasi dalam vektor `rewards` untuk plot kemudian. (blok kod 11)
```python
def probs(v,eps=1e-4):
@@ -214,15 +234,15 @@ Kita juga boleh membuat dua penambahbaikan pada algoritma kita daripada pelajara
obs = env.reset()
done = False
cum_reward=0
- # == do the simulation ==
+ # == lakukan simulasi ==
while not done:
s = discretize(obs)
if random.random() Qmax:
@@ -240,25 +260,25 @@ Kita juga boleh membuat dua penambahbaikan pada algoritma kita daripada pelajara
cum_rewards=[]
```
-Apa yang anda mungkin perasan daripada hasil tersebut:
+Apa yang mungkin anda perhatikan dari keputusan itu:
-- **Hampir mencapai matlamat**. Kita sangat hampir mencapai matlamat mendapatkan 195 ganjaran kumulatif dalam lebih daripada 100 percubaan berturut-turut simulasi, atau kita mungkin telah mencapainya! Walaupun kita mendapat nombor yang lebih kecil, kita masih tidak tahu, kerana kita mengambil purata lebih daripada 5000 percubaan, dan hanya 100 percubaan diperlukan dalam kriteria formal.
+- **Hampir mencapai matlamat**. Kita sangat hampir dengan mencapai matlamat mendapat 195 ganjaran kumulatif selama lebih 100 larian berturut-turut simulasi, atau kita mungkin sudah mencapainya! Walaupun kita mendapat nombor lebih rendah, kita masih tidak pasti kerana kita mempuratakan atas 5000 larian, dan hanya 100 larian diperlukan dalam kriteria rasmi.
+
+- **Ganjaran mula menurun**. Kadang-kadang ganjaran mula menurun, yang bermaksud kita boleh "menghancurkan" nilai yang telah dipelajari dalam Q-Table dengan nilai yang membuat keadaan lebih buruk.
-- **Ganjaran mula menurun**. Kadangkala ganjaran mula menurun, yang bermaksud kita boleh "merosakkan" nilai yang telah dipelajari dalam Q-Table dengan nilai yang menjadikan keadaan lebih buruk.
+Pemerhatian ini lebih jelas jika kita plot kemajuan latihan.
-Pemerhatian ini lebih jelas kelihatan jika kita memplotkan kemajuan latihan.
+## Plot Kemajuan Latihan
-## Memplotkan Kemajuan Latihan
-
-Semasa latihan, kita telah mengumpulkan nilai ganjaran kumulatif pada setiap iterasi ke dalam vektor `rewards`. Berikut adalah bagaimana ia kelihatan apabila kita memplotkannya terhadap nombor iterasi:
+Semasa latihan, kita telah mengumpul nilai ganjaran kumulatif pada setiap iterasi ke dalam vektor `rewards`. Inilah bagaimana ia kelihatan apabila kita plot terhadap nombor iterasi:
```python
plt.plot(rewards)
```
-
+
-Daripada graf ini, tidak mungkin untuk memberitahu apa-apa, kerana disebabkan sifat proses latihan stokastik, panjang sesi latihan berbeza dengan ketara. Untuk membuat graf ini lebih bermakna, kita boleh mengira **purata berjalan** sepanjang siri eksperimen, katakan 100. Ini boleh dilakukan dengan mudah menggunakan `np.convolve`: (blok kod 12)
+Daripada graf ini, tidak mungkin untuk membuat kesimpulan, kerana sifat proses latihan stokastik menyebabkan panjang sesi latihan sangat berbeza-beza. Untuk membuatkan graf ini lebih bermakna, kita boleh kira **purata bergerak** sepanjang beberapa eksperimen, katakan 100. Ini boleh dilakukan dengan mudah menggunakan `np.convolve`: (blok kod 12)
```python
def running_average(x,window):
@@ -267,21 +287,24 @@ def running_average(x,window):
plt.plot(running_average(rewards,100))
```
-
+
+
+## Menukar hiperparameter
+
+Untuk menjadikan pembelajaran lebih stabil, masuk akal untuk melaraskan beberapa hiperparameter semasa latihan. Khususnya:
+
+- **Untuk kadar pembelajaran**, `alpha`, kita boleh mulakan dengan nilai hampir 1, kemudian kurangkan parameter ini. Dengan masa, kita akan mendapat nilai kebarangkalian yang baik dalam Q-Table, jadi kita perlu melaraskannya sedikit, dan bukan menimpa sepenuhnya dengan nilai baru.
-## Mengubah hiperparameter
+- **Tingkatkan epsilon**. Kita mungkin mahu tingkatkan `epsilon` perlahan-lahan, supaya kurang meneroka dan lebih mengeksploitasi. Mungkin masuk akal bermula dengan nilai `epsilon` rendah, dan naik ke hampir 1.
-Untuk membuat pembelajaran lebih stabil, masuk akal untuk menyesuaikan beberapa hiperparameter kita semasa latihan. Khususnya:
+> **Tugasan 1**: Cuba bermain dengan nilai hiperparameter dan lihat jika anda boleh mencapai ganjaran kumulatif yang lebih tinggi. Adakah anda mendapat lebih daripada 195?
-- **Untuk kadar pembelajaran**, `alpha`, kita boleh bermula dengan nilai yang hampir dengan 1, dan kemudian terus menurunkan parameter. Dengan masa, kita akan mendapat nilai kebarangkalian yang baik dalam Q-Table, dan oleh itu kita harus menyesuaikannya sedikit, dan tidak menulis semula sepenuhnya dengan nilai baru.
-- **Tingkatkan epsilon**. Kita mungkin mahu meningkatkan `epsilon` secara perlahan, untuk meneroka kurang dan mengeksploitasi lebih banyak. Mungkin masuk akal untuk bermula dengan nilai `epsilon` yang lebih rendah, dan meningkatkannya hampir kepada 1.
-> **Tugas 1**: Cuba ubah nilai hiperparameter dan lihat jika anda boleh mencapai ganjaran kumulatif yang lebih tinggi. Adakah anda mendapat lebih daripada 195?
-> **Tugas 2**: Untuk menyelesaikan masalah ini secara formal, anda perlu mencapai purata ganjaran sebanyak 195 dalam 100 larian berturut-turut. Ukur semasa latihan dan pastikan anda telah menyelesaikan masalah ini secara formal!
+> **Tugasan 2**: Untuk menyelesaikan masalah secara rasmi, anda perlu mendapatkan purata ganjaran sebanyak 195 sepanjang 100 larian berturut-turut. Ukur itu semasa latihan dan pastikan anda telah menyelesaikan masalah secara rasmi!
## Melihat hasil dalam tindakan
-Ia akan menarik untuk melihat bagaimana model yang telah dilatih berfungsi. Mari jalankan simulasi dan ikuti strategi pemilihan tindakan yang sama seperti semasa latihan, dengan pensampelan mengikut taburan kebarangkalian dalam Q-Table: (blok kod 13)
+Ia akan menjadi menarik untuk benar-benar melihat bagaimana model yang dilatih berkelakuan. Mari jalankan simulasi dan ikut strategi pemilihan tindakan yang sama seperti semasa latihan, sampel mengikut taburan kebarangkalian dalam Q-Table: (blok kod 13)
```python
obs = env.reset()
@@ -295,7 +318,7 @@ while not done:
env.close()
```
-Anda sepatutnya melihat sesuatu seperti ini:
+Anda harus melihat sesuatu seperti ini:

@@ -303,22 +326,24 @@ Anda sepatutnya melihat sesuatu seperti ini:
## 🚀Cabaran
-> **Tugas 3**: Di sini, kita menggunakan salinan akhir Q-Table, yang mungkin bukan yang terbaik. Ingat bahawa kita telah menyimpan Q-Table yang berprestasi terbaik ke dalam pemboleh ubah `Qbest`! Cuba contoh yang sama dengan Q-Table yang berprestasi terbaik dengan menyalin `Qbest` ke `Q` dan lihat jika anda perasan perbezaannya.
+> **Tugasan 3**: Di sini, kami menggunakan salinan terakhir Q-Table, yang mungkin bukan yang terbaik. Ingat bahawa kami telah menyimpan Q-Table dengan prestasi terbaik ke dalam pembolehubah `Qbest`! Cuba contoh yang sama dengan Q-Table prestasi terbaik dengan menyalin `Qbest` ke `Q` dan lihat jika anda perasan perbezaannya.
-> **Tugas 4**: Di sini kita tidak memilih tindakan terbaik pada setiap langkah, tetapi sebaliknya melakukan pensampelan dengan taburan kebarangkalian yang sepadan. Adakah lebih masuk akal untuk sentiasa memilih tindakan terbaik, dengan nilai Q-Table tertinggi? Ini boleh dilakukan dengan menggunakan fungsi `np.argmax` untuk mencari nombor tindakan yang sepadan dengan nilai Q-Table tertinggi. Laksanakan strategi ini dan lihat jika ia meningkatkan keseimbangan.
+> **Tugasan 4**: Di sini kami tidak memilih tindakan terbaik pada setiap langkah, tetapi sebaliknya menyampel dengan taburan kebarangkalian yang sepadan. Adakah lebih masuk akal untuk sentiasa memilih tindakan terbaik, dengan nilai Q-Table tertinggi? Ini boleh dilakukan dengan menggunakan fungsi `np.argmax` untuk mencari nombor tindakan yang sepadan dengan nilai Q-Table tertinggi. Laksanakan strategi ini dan lihat jika ia meningkatkan keseimbangan.
-## [Kuiz selepas kuliah](https://ff-quizzes.netlify.app/en/ml/)
+## [Kuiz pasca kuliah](https://ff-quizzes.netlify.app/en/ml/)
## Tugasan
-[Latih Mountain Car](assignment.md)
+[Latih Kereta Gunung](assignment.md)
## Kesimpulan
-Kita kini telah belajar bagaimana melatih agen untuk mencapai hasil yang baik hanya dengan menyediakan fungsi ganjaran yang menentukan keadaan permainan yang diinginkan, dan dengan memberi mereka peluang untuk meneroka ruang carian secara bijak. Kita telah berjaya menggunakan algoritma Q-Learning dalam kes persekitaran diskret dan berterusan, tetapi dengan tindakan diskret.
+Kami kini telah belajar bagaimana untuk melatih agen untuk mencapai keputusan yang baik hanya dengan memberikan mereka fungsi ganjaran yang mentakrifkan keadaan permainan yang dikehendaki, dan dengan memberi mereka peluang untuk menjelajah ruang carian secara bijak. Kami telah berjaya menggunakan algoritma Q-Learning dalam kes persekitaran diskret dan berterusan, tetapi dengan tindakan diskret.
-Adalah penting untuk juga mengkaji situasi di mana keadaan tindakan juga berterusan, dan apabila ruang pemerhatian jauh lebih kompleks, seperti imej dari skrin permainan Atari. Dalam masalah tersebut, kita sering perlu menggunakan teknik pembelajaran mesin yang lebih berkuasa, seperti rangkaian neural, untuk mencapai hasil yang baik. Topik yang lebih maju ini adalah subjek kursus AI lanjutan kita yang akan datang.
+Ia penting juga untuk mengkaji situasi di mana keadaan tindakan juga berterusan, dan apabila ruang pemerhatian jauh lebih kompleks, seperti imej daripada skrin permainan Atari. Dalam masalah tersebut, kami sering perlu menggunakan teknik pembelajaran mesin yang lebih berkuasa, seperti rangkaian neural, untuk mencapai keputusan yang baik. Topik yang lebih maju ini adalah subjek kursus AI lanjutan kami yang akan datang.
---
-**Penafian**:
-Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini.
\ No newline at end of file
+
+**Penafian**:
+Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang sahih. Untuk maklumat penting, terjemahan oleh manusia profesional adalah disyorkan. Kami tidak bertanggungjawab terhadap sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini.
+
\ No newline at end of file
diff --git a/translations/my/.co-op-translator.json b/translations/my/.co-op-translator.json
index e0485a7e3..44c238d2f 100644
--- a/translations/my/.co-op-translator.json
+++ b/translations/my/.co-op-translator.json
@@ -13,7 +13,7 @@
},
"1-Introduction/2-history-of-ML/README.md": {
"original_hash": "6a05fec147e734c3e6bfa54505648e2b",
- "translation_date": "2025-09-05T12:54:49+00:00",
+ "translation_date": "2026-07-14T01:17:00+00:00",
"source_file": "1-Introduction/2-history-of-ML/README.md",
"language_code": "my"
},
@@ -24,8 +24,8 @@
"language_code": "my"
},
"1-Introduction/3-fairness/README.md": {
- "original_hash": "9a6b702d1437c0467e3c5c28d763dac2",
- "translation_date": "2025-09-05T12:40:56+00:00",
+ "original_hash": "0f00d72169a0d37eecfd16d71e01700a",
+ "translation_date": "2026-07-14T01:18:14+00:00",
"source_file": "1-Introduction/3-fairness/README.md",
"language_code": "my"
},
@@ -54,8 +54,8 @@
"language_code": "my"
},
"2-Regression/1-Tools/README.md": {
- "original_hash": "fa81d226c71d5af7a2cade31c1c92b88",
- "translation_date": "2025-09-05T11:43:05+00:00",
+ "original_hash": "0b8635427b582d03ea4ab7089b93e505",
+ "translation_date": "2026-07-14T01:13:47+00:00",
"source_file": "2-Regression/1-Tools/README.md",
"language_code": "my"
},
@@ -72,8 +72,8 @@
"language_code": "my"
},
"2-Regression/2-Data/README.md": {
- "original_hash": "7c077988328ebfe33b24d07945f16eca",
- "translation_date": "2025-09-05T11:47:48+00:00",
+ "original_hash": "a58b2c4d16c6b122643391745ac15af6",
+ "translation_date": "2026-07-14T01:14:58+00:00",
"source_file": "2-Regression/2-Data/README.md",
"language_code": "my"
},
@@ -89,6 +89,12 @@
"source_file": "2-Regression/2-Data/solution/Julia/README.md",
"language_code": "my"
},
+ "2-Regression/2-Data/solution/notebook.ipynb": {
+ "original_hash": "96b95f8cf473481f2f371de8156f1571",
+ "translation_date": "2026-07-14T01:06:26+00:00",
+ "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
+ "language_code": "my"
+ },
"2-Regression/3-Linear/README.md": {
"original_hash": "8b776e731c35b171d316d01d0e7b1369",
"translation_date": "2026-04-26T19:16:22+00:00",
@@ -331,7 +337,7 @@
},
"6-NLP/4-Hotel-Reviews-1/README.md": {
"original_hash": "8d32dadeda93c6fb5c43619854882ab1",
- "translation_date": "2025-09-05T14:06:07+00:00",
+ "translation_date": "2026-07-14T01:12:04+00:00",
"source_file": "6-NLP/4-Hotel-Reviews-1/README.md",
"language_code": "my"
},
@@ -415,7 +421,7 @@
},
"7-TimeSeries/2-ARIMA/README.md": {
"original_hash": "917dbf890db71a322f306050cb284749",
- "translation_date": "2025-09-05T11:56:13+00:00",
+ "translation_date": "2026-07-14T01:21:20+00:00",
"source_file": "7-TimeSeries/2-ARIMA/README.md",
"language_code": "my"
},
@@ -457,7 +463,7 @@
},
"8-Reinforcement/1-QLearning/README.md": {
"original_hash": "911efd5e595089000cb3c16fce1beab8",
- "translation_date": "2025-09-05T13:40:42+00:00",
+ "translation_date": "2026-07-14T01:16:15+00:00",
"source_file": "8-Reinforcement/1-QLearning/README.md",
"language_code": "my"
},
@@ -511,7 +517,7 @@
},
"9-Real-World/1-Applications/README.md": {
"original_hash": "83320d6b6994909e35d830cebf214039",
- "translation_date": "2025-09-05T12:27:38+00:00",
+ "translation_date": "2026-07-14T01:19:25+00:00",
"source_file": "9-Real-World/1-Applications/README.md",
"language_code": "my"
},
@@ -581,6 +587,19 @@
"source_file": "TROUBLESHOOTING.md",
"language_code": "my"
},
+ "__translation_failures__": {
+ "sketchnotes/LICENSE.md": {
+ "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f",
+ "source_file": "sketchnotes/LICENSE.md",
+ "language_code": "my",
+ "failure_date": "2026-07-14T01:10:13+00:00",
+ "status": "failed",
+ "error_type": "TranslationIncompleteError",
+ "error_message": "Markdown translation remained incomplete for chunk 1.1.1 of 'LICENSE.md', and the chunk could not be split further.",
+ "translator_version": "0.20.0",
+ "failure_policy_version": 1
+ }
+ },
"docs/_sidebar.md": {
"original_hash": "68dd06c685f6ce840e0acfa313352e7c",
"translation_date": "2025-09-05T12:22:38+00:00",
diff --git a/translations/my/1-Introduction/2-history-of-ML/README.md b/translations/my/1-Introduction/2-history-of-ML/README.md
index 6b13b7828..64cc242b8 100644
--- a/translations/my/1-Introduction/2-history-of-ML/README.md
+++ b/translations/my/1-Introduction/2-history-of-ML/README.md
@@ -1,131 +1,157 @@
-# စက်ရုပ်သင်ယူမှု၏ သမိုင်းကြောင်း
+# စက်သင်ယူခြင်း၏ သမိုင်းကြောင်း
-
-> Sketchnote by [Tomomi Imura](https://www.twitter.com/girlie_mac)
+
+> စကက်ချန်နိုးကို [Tomomi Imura](https://www.twitter.com/girlie_mac) မှ ဖန်တီးသည်
-## [Pre-lecture quiz](https://ff-quizzes.netlify.app/en/ml/)
+## [မိတ်ဆက်ခန်းမမေးခွန်း](https://ff-quizzes.netlify.app/en/ml/)
---
-[](https://youtu.be/N6wxM4wZ7V0 "ML for beginners - History of Machine Learning")
+[](https://youtu.be/N6wxM4wZ7V0 "စက်သင်ယူခြင်းအတွက် မိတ်ဆက် - စက်သင်ယူခြင်း၏ သမိုင်းကြောင်း")
-> 🎥 အထက်ပါပုံကို နှိပ်ပြီး ဒီသင်ခန်းစာကို ရှင်းလင်းထားသော ဗီဒီယိုကို ကြည့်ပါ။
+> 🎥 ဒီသင်ခန်းစာကို လေ့လာရန် ဗီဒီယိုတိုကို အပေါ်ဓာတ်ပုံကို နှိပ်ပါ။
-ဒီသင်ခန်းစာမှာ စက်ရုပ်သင်ယူမှုနှင့် အတုအမြင့်တုအာရုံ၏ သမိုင်းကြောင်းတွင် အရေးပါသော အခန်းကဏ္ဍများကို လေ့လာသွားပါမည်။
+ဒီသင်ခန်းစာမှာ စက်သင်ယူခြင်းနဲ့ လူမှုပညာရပ်ဇာတိကျဇယားတစ်ခုဖြစ်တဲ့ အတုအယောင်ပါဝင်တဲ့ အတုအယောင်ဖြစ်မှုအရေးပါရာ ဖွံ့ဖြိုးမှုကို ဖြစ်ပေါ်လာသည့် အကြောင်းကြီးတစ်ခုချင်းစီကို လမ်းလျှောက်သွားမှာဖြစ်သည်။
-အတုအမြင့်တုအာရုံ (AI) ၏ သမိုင်းကြောင်းသည် စက်ရုပ်သင်ယူမှု၏ သမိုင်းကြောင်းနှင့် ဆက်စပ်နေပြီး ML ကို အခြေခံသော algorithm များနှင့် ကွန်ပျူတာတိုးတက်မှုများသည် AI ၏ ဖွံ့ဖြိုးတိုးတက်မှုကို အထောက်အကူပြုခဲ့သည်။ ဒီနယ်ပယ်များသည် 1950 ခုနှစ်များတွင် သီးခြားသော သုတေသနနယ်ပယ်များအဖြစ် ပုံသွင်းလာခဲ့သော်လည်း [algorithm, statistical, mathematical, computational နှင့် technical discoveries](https://wikipedia.org/wiki/Timeline_of_machine_learning) များသည် ဒီကာလမတိုင်မီ ရှိခဲ့ပြီး အချို့ overlap ဖြစ်ခဲ့သည်။ အမှန်တကယ်တော့ လူသားများသည် [ရာစုနှစ်များစွာ](https://wikipedia.org/wiki/History_of_artificial_intelligence) အတွင်း ဒီမေးခွန်းများကို စဉ်းစားခဲ့ကြသည်။ ဒီဆောင်းပါးသည် 'စဉ်းစားနိုင်သော စက်' ၏ အတွေးအမြင်၏ သမိုင်းဆိုင်ရာ အခြေခံအမြင်များကို ဆွေးနွေးထားသည်။
+လူမှုပညာရပ် (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) နှင့် ၎င်း၏ ရှေးဦးများ။ ဒီသီအိုရီသည် အကြိုသိရှိမှုအပေါ် အခြေခံပြီး ဖြစ်နိုင်ခြေကို ဖော်ပြသော inference ကို အခြေခံသည်။
-- 1805 [Least Square Theory](https://wikipedia.org/wiki/Least_squares) ကို ပြင်သစ်ဂဏန်းသိပ္ပံပညာရှင် Adrien-Marie Legendre မှ တီထွင်ခဲ့သည်။ ဒီသီအိုရီကို Regression unit တွင် လေ့လာရမည်ဖြစ်ပြီး ဒေတာ fitting ကို အထောက်အကူပြုသည်။
-- 1913 [Markov Chains](https://wikipedia.org/wiki/Markov_chain) ကို ရုရှားဂဏန်းသိပ္ပံပညာရှင် Andrey Markov မှ တီထွင်ခဲ့ပြီး အခြေခံအခြေအနေအပေါ် အခြေခံသော ဖြစ်နိုင်သော အဖြစ်အပျက်များ၏ အစဉ်အလာကို ဖော်ပြသည်။
-- 1957 [Perceptron](https://wikipedia.org/wiki/Perceptron) ကို အမေရိကန် စိတ်ပညာရှင် Frank Rosenblatt မှ တီထွင်ခဲ့ပြီး deep learning တိုးတက်မှုများ၏ အခြေခံဖြစ်သည်။
+- 1763, 1812 [Bayes သီအိုရီ](https://wikipedia.org/wiki/Bayes%27_theorem) နှင့် ၎င်း၏ ယခင်မျိုးဆက်များ။ ဤသီအိုရီနှင့် ၎င်း၏ အသုံးချမှုများသည် အခြေခံပြီး အဖြစ်တွေဖြစ်ပေါ်နိုင်မှုကို ရှာဖွေဖော်ပြသည်။
+- 1805 ပြင်သစ်သင်္ချာပညာရှင် Adrien-Marie Legendre ၏ [အနည္းဆုံးစတုရန်းသီအိုရီ](https://wikipedia.org/wiki/Least_squares)။ ဤသီအိုရီသည် ဒေတာကို ကိုက်ညီစေရန် အထောက်အကူပြုသည်။
+- 1913 ရုရှားသင်္ချာပညာရှင် Andrey Markov ၏ အမည်ပေါ်မူတည်၍ [Markov လမ်းကြောင်းများ](https://wikipedia.org/wiki/Markov_chain) သည် ယခင်အခြေအနေများပေါ်မူတည်၍ ဖြစ်နိုင်သောဖြစ်ရပ်များအဆက်အစပ်ကို ဖော်ပြရန်အသုံးပြုသည်။
+- 1957 အမေရိကန်စိတ်ပညာရှင် Frank Rosenblatt မှ ဖန်တီးသော [Perceptron](https://wikipedia.org/wiki/Perceptron) သည် အကြောင်းအရာလိုက်ခွဲခြားရေးနည်းပညာတစ်မျိုးဖြစ်ပြီး နက်ရှိုင်းစိတ်ကွဲနည်းပညာ တိုးတက်မှုများ၏ အခြေခံဖြစ်သည်။
---
-- 1967 [Nearest Neighbor](https://wikipedia.org/wiki/Nearest_neighbor) ကို route များကို map ပြုလုပ်ရန် အစတင်ဖန်တီးခဲ့သည်။ ML context တွင် pattern များကို ရှာဖွေဖော်ထုတ်ရန် အသုံးပြုသည်။
-- 1970 [Backpropagation](https://wikipedia.org/wiki/Backpropagation) ကို [feedforward neural networks](https://wikipedia.org/wiki/Feedforward_neural_network) များကို training ပြုလုပ်ရန် အသုံးပြုသည်။
-- 1982 [Recurrent Neural Networks](https://wikipedia.org/wiki/Recurrent_neural_network) ကို feedforward neural networks မှ ဆင်းသက်လာပြီး အချိန်ဇယားများကို ဖန်တီးသည်။
+- 1967 [အနီးဆုံးအိမ်နှင့်စာရင်းစစ်ခြင်း](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 ၏ သမိုင်းကြောင်းတွင် အရေးပါသော အခြားသော ရက်စွဲများကို ရှာဖွေပါ။
+✅ သုတေသန တစိတ်တပိုင်းလုပ်ပါ။ ML နဲ့ AI ရဲ့ သမိုင်းမှာ အရေးကြီးတဲ့ နေ့ရက်တစ်ချို့က ဘာတွေလဲဆိုတာ ရှာဖွေကြည့်ပါ။
---
-## 1950: စဉ်းစားနိုင်သော စက်များ
+## 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) ကို ဖန်တီးခြင်းဖြင့် ဒီအမြင်ကို အတည်ပြုရန် ကြိုးစားခဲ့သည်။ Turing Test ကို NLP သင်ခန်းစာများတွင် လေ့လာရမည်။
+Alan Turing, လူထုမှ 2019 ခုနှစ်တွင် [20 ရာစု၏ ထိပ်ဆုံး သိပ္ပံပညာရှင်ရင်း](https://wikipedia.org/wiki/Icons:_The_Greatest_Person_of_the_20th_Century) အဖြစ် မဲပေးထောက်ခံခဲ့သူ တစ်ဦးဖြစ်ပြီး၊ 'စဉ်းစားတတ်သောစက်' ဆိုသော အဓိပ္ပါယ် အခြေခံရန် အခြေခံထားသူတစ်ဦးအနေဖြင့် ကျွမ်းကျင်သူဖြစ်သည်။ သူသည် ယမကာများနှင့် မိမိအသက်သက်သေခံချက်ဖြစ်စေခြင်းလိုအပ်ချက်ကြားတွင် တစ်စိတ်တစ်ပိုင်းဖြစ်ပြီး [Turing စမ်းသပ်မှု](https://www.bbc.com/news/technology-18475646) ကို ဖန်တီးခဲ့သည်။ ၎င်းသည် ကျွန်တော်တို့ NLP သင်ခန်းစာများတွင် လေ့လာသွားမည်ဖြစ်သည်။
---
-## 1956: Dartmouth Summer Research Project
+## 1956: Dartmouth နွေရာသီ သုတေသန စီမံကိန်း
-"Dartmouth Summer Research Project on artificial intelligence သည် အတုအမြင့်တုအာရုံနယ်ပယ်အတွက် အရေးပါသော အခန်းကဏ္ဍတစ်ခုဖြစ်ပြီး ဒီနေရာတွင် 'artificial intelligence' ဆိုသော စကားလုံးကို ပထမဆုံး အသုံးပြုခဲ့သည်။" ([source](https://250.dartmouth.edu/highlights/artificial-intelligence-ai-coined-dartmouth))
+"Dartmouth နွေရာသီ သုတေသန စီမံကိန်းသည် လူမှုပညာရပ်တစ်ခုအနေဖြင့် အရေးကြီးသော ရက်ခွင်တစ်ခုဖြစ်ပြီး လူမှုပညာရပ် ဆိုသော စကားလုံးကို ပထမဆုံးဖန်တီးခဲ့သည်။" ([ရင်းမြစ်](https://250.dartmouth.edu/highlights/artificial-intelligence-ai-coined-dartmouth))
-> သင်ယူမှု၏ အပိုင်းအစများ သို့မဟုတ် ဉာဏ်ရည်၏ အခြားသော လက္ခဏာများကို စက်တစ်ခုမှ simulation ပြုလုပ်နိုင်ရန် အလွန်တိကျစွာ ဖော်ပြနိုင်သည်။
+> သင်ယူမှု၏ ဂဏန်းမတူသော အပါအဝင် လူမှုပညာရပ်၏ မည်သည့်အချက်အလက်တွင်မဆို တိကျစွာ ဖော်ပြနိုင်ပြီး၊ စက်တစ်စက်ဖြင့် အတုလုပ်နိုင်သည်။
---
-ဦးဆောင်သုတေသနပညာရှင်ဖြစ်သော ဂဏန်းသိပ္ပံပညာရှင် John McCarthy သည် "သင်ယူမှု၏ အပိုင်းအစများ သို့မဟုတ် ဉာဏ်ရည်၏ အခြားသော လက္ခဏာများကို စက်တစ်ခုမှ simulation ပြုလုပ်နိုင်ရန် အလွန်တိကျစွာ ဖော်ပြနိုင်သည်" ဆိုသော အယူအဆအပေါ် အခြေခံ၍ ဆက်လက်လုပ်ဆောင်ရန် မျှော်လင့်ခဲ့သည်။ ၎င်း၏ ပါဝင်သူများတွင် Marvin Minsky ကဲ့သို့သော နယ်ပယ်၏ ထူးချွန်သောပုဂ္ဂိုလ်တစ်ဦးလည်း ပါဝင်ခဲ့သည်။
+ဦးဆောင်သုတေသနဆရာ John McCarthy သည် "သင်ယူမှု၏ မည်သည့်အချက်ကိုမဆို တိကျစွာဖော်ပြနိုင်သောကြောင့် စက်ဖြင့် အတုလုပ်နိုင်သည်" ဟူသော သီအိုရီပေါ်မူတည်၍ ရှေ့ဆက်၍ အလုပ်လုပ်မည်ဟု မျှော်လင့်ခဲ့သည်။ ပါဝင်သူများထဲတွင် Marvin Minsky ဟူသော နယ်ပယ်ကျော်ကြားသူတစ်ဦးပါဝင်ခဲ့သည်။
-ဒီ workshop ကို "symbolic methods, limited domains (early expert systems), deductive systems နှင့် inductive systems" တိုးတက်မှုများကို စတင်ပြီး အားပေးခဲ့သည်ဟု သတ်မှတ်ထားသည်။ ([source](https://wikipedia.org/wiki/Dartmouth_workshop))
+ဤအစည်းအဝေးသည် "သင်္ကေတသုံးနည်းလမ်းများ မြင့်တက်လာခြင်း၊ အကန့်အသတ်ရှိသော နယ်ပယ်များအတွင်း ဦးတည်သော စနစ်များ (အစောပိုင်း ကျွမ်းကျင်သူစနစ်များ) နှင့် ကုသိုလ်ရှာဖွေရေးစနစ်များနှင့် အညီအစပ်စနစ်များ" စသည်တို့ ဆွေးနွေးမှုများကို ဖြေဠာက်လျက်ရှိသည်။ ([ရင်းမြစ်](https://wikipedia.org/wiki/Dartmouth_workshop))
---
-## 1956 - 1974: "ရွှေခေတ်"
+## 1956 - 1974: "ရွှေ့ရတီနှစ်များ"
-1950 ခုနှစ်များမှ 1970 ခုနှစ်ဝန်းကျင်အထိ AI သည် အများပြည်သူ၏ ပြဿနာများကို ဖြေရှင်းနိုင်မည်ဟု မျှော်လင့်မှုများ အလွန်မြင့်မားခဲ့သည်။ 1967 ခုနှစ်တွင် Marvin Minsky သည် "တစ်မျိုးဆက်အတွင်း ... 'artificial intelligence' ဖန်တီးခြင်း၏ ပြဿနာကို အများအားဖြင့် ဖြေရှင်းနိုင်မည်" ဟု ယုံကြည်စွာ ပြောကြားခဲ့သည်။ (Minsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall)
+1950 ခုနှစ်များမှ 1970s အလယ်အလတ်အထိ လူမှုပညာရပ်သည် ပြဿနာများကို ဖြေရှင်းနိုင်ကြောင်း မျှော်လင့်ချက်များ စိတ်ဓာတ်မြင့်မားခဲ့သည်။ 1967 ခုနှစ်တွင် Marvin Minsky က "တစ်မျိုးဆက်အတွင်း... 'လူမှုပညာရပ်' ဖန်တီးမှု ပြဿနာကို အဓိကအားဖြင့် ဖြေရှင်းလိမ့်မည်" ဟူ၍ ယုံကြည်စွာ ထုတ်ပြန်ခဲ့သည်။ (Minsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall)
-natural language processing သုတေသနများ တိုးတက်မှုရှိခဲ့ပြီး ရှာဖွေမှုများကို ပိုမိုစွမ်းဆောင်နိုင်စေခဲ့သည်။ 'micro-worlds' ဆိုသော အတွေးအမြင်ကို ဖန်တီးခဲ့ပြီး ရိုးရှင်းသော လုပ်ငန်းများကို ရိုးရှင်းသော စကားလုံးများဖြင့် ပြုလုပ်နိုင်ခဲ့သည်။
+သဘာဝဘာသာစကားကို သုတေသန ပြုလုပ်ခြင်း ပျံ့နှံ့ခဲ့ပြီး ရှာဖွေမှုနည်းလမ်းအသစ်များ သာမာန်ဘာသာစကားညွှန်ကြားချက်များဖြင့် အလွယ်တကူ ပြီးမြောက်စေရန် စီမံကိန်းများ ဖန်တီးခဲ့သည်။
---
-သုတေသနများကို အစိုးရအေဂျင်စီများမှ ရန်ပုံငွေထောက်ပံ့ခဲ့ပြီး ကွန်ပျူတာနှင့် algorithm များတွင် တိုးတက်မှုများ ရှိခဲ့သည်။ ဉာဏ်ရည်ရှိသော စက်များ၏ prototype များကို ဖန်တီးခဲ့သည်။ ၎င်းတို့ထဲတွင် ပါဝင်သော စက်များမှာ -
+အစိုးရအဖွဲ့အစည်းများမှ စုံစုံလင်လင် ရန်ပုံငွေဖြင့် ထောက်ပံ့ခဲ့ပြီး ကွန်ပျူတာနှင့် အယ်လ်ဂိုရစ်သမ်များ အောင်မြင်မှုများ ရှိခဲ့သည်။ ၎င်းတို့ထဲမှာ အနည်းငယ်သော စက်များမှာ:
-* [Shakey the robot](https://wikipedia.org/wiki/Shakey_the_robot) သည် လှုပ်ရှားနိုင်ပြီး 'ဉာဏ်ရည်ရှိ' လုပ်ငန်းများကို ဆုံးဖြတ်နိုင်သည်။
+* [Shakey the robot](https://wikipedia.org/wiki/Shakey_the_robot) သည် လမ်းညွှန်ခြင်းနှင့် အလုပ်များကို 'အသိပညာ' ဖြင့် ဆုံးဖြတ်နိုင်သည်။
- 
- > Shakey in 1972
+ 
+ > 1972 ခုနှစ်တွင် Shakey
---
-* Eliza သည် စောစောပိုင်း 'chatterbot' တစ်ခုဖြစ်ပြီး လူများနှင့် စကားပြောနိုင်သည်။ ၎င်းသည် primitive 'therapist' အဖြစ် လုပ်ဆောင်နိုင်သည်။ Eliza ကို NLP သင်ခန်းစာများတွင် ပိုမိုလေ့လာရမည်။
+* Eliza သည် ကျူးလွန်သူ 'စကားပြောစက်' တစ်ခုဖြစ်ပြီး လူများနှင့် စကားပြောဆက်ဆံခြင်းနှင့် အဓိက 'ကုထုံးပေးသူ' အဖြစ် ဆောင်ရွက်နိုင်သည်။ NLP သင်ခန်းစာများတွင် Eliza အကြောင်း များစွာ သိရှိသွားမည်။
- 
- > Eliza ၏ version တစ်ခု
+ 
+ > Eliza ၏ ဗားရှင်းတစ်ခု၊ စကားပြောစက်တစ်ခု
---
-* "Blocks world" သည် blocks များကို စုစည်းခြင်းနှင့် စီမံခြင်းကို ပြုလုပ်နိုင်သော micro-world တစ်ခုဖြစ်ပြီး စက်များကို ဆုံးဖြတ်ချက်ချရန် သင်ကြားမှုများကို စမ်းသပ်နိုင်သည်။ [SHRDLU](https://wikipedia.org/wiki/SHRDLU) ကဲ့သို့သော library များဖြင့် language processing ကို တိုးတက်စေခဲ့သည်။
+* "Blocks world" သည် စက်များစွမ်းဆောင်ဆရာပြုရန် စားပွဲပျော်မြောက်မှု နှင့် စီစစ်ပေးမှုများ လုပ်ဆောင်နိုင်သော micro-world တစ်ခုဖြစ်ပြီး [SHRDLU](https://wikipedia.org/wiki/SHRDLU) ကဲ့သို့သော စာကြောင်းဖြန့်ဖြူးမှု ကို တိုးတက်စေမည့် စာကြောင်းခွဲတမ်းများ ဖန်တီးရန် အသုံးပြုခဲ့သည်။
[](https://www.youtube.com/watch?v=QAJz4YKUwqw "blocks world with SHRDLU")
- > 🎥 အထက်ပါပုံကို နှိပ်ပြီး ဗီဒီယိုကြည့်ပါ: Blocks world with SHRDLU
+ > 🎥 ဓာတ်ပုံအပေါ်ကို နှိပ်ပြီး ဗီဒီယိုကြည့်ရှုပါ: Blocks world with SHRDLU
---
-## 1974 - 1980: "AI Winter"
-
-1970 ခုနှစ်ဝန်းကျင်တွင် 'ဉာဏ်ရည်ရှိသော စက်' ဖန်တီးခြင်း၏ အခက်အခဲများကို အလွန်နည်းနည်းသာ သတ်မှတ်ထားသည်ဟု သိရှိလာခဲ့ပြီး compute power ရှိမှုအပေါ် အလွန်မြှင့်တင်ထားသည်ဟု သိရှိလာခဲ့သည်။ ရန်ပုံငွေများ လျော့နည်းလာခဲ့ပြီး နယ်ပယ်အပေါ် ယုံကြည်မှုများ လျော့နည်းလာခဲ့သည်။ ယုံကြည်မှုကို ထိခိုက်စေသော အချက်များမှာ -
+## 1974 - 1980: "AI ဆောင်းရာသီ"
+1970s အလယ်အတွင်း 'အသိပညာရှိစက်များ' ဖန်တီးရခြင်း၏ ရှုပ်ထွေးမှုကို မျှော်လင့်ချက်ထက် ပိုမိုနည်းနေပြီး ရန်ပုံငွေ သက်သာလျော့နည်းလာပြီ သက်သေအားလုံး ရှငျဆီးကြောင့် ယုံကြည်မှု လျော့နည်းလာခဲ့သည်။ ယုံကြည်မှု လျော့နည်းစေသည့် ကိစ္စအချို့မှာ:
---
-- **ကန့်သတ်ချက်များ**။ Compute power သည် အလွန်နည်းပါးနေသည်။
-- **Combinatorial explosion**။ စက်များကို ပိုမိုတိုးတက်စွမ်းဆောင်စေရန် training လိုအပ်သော parameters များသည် exponential အတိုင်း တိုးလာခဲ့သည်။
-- **ဒေတာနည်းပါးမှု**။ ဒေတာနည်းပါးမှုသည် algorithm များကို စမ်းသပ်ခြင်း၊ ဖွံ့ဖြိုးတိုးတက်ခြင်းနှင့် ပြုပြင်ခြင်းကို အတားအဆီးဖြစ်စေခဲ့သည်။
-- **ကျွန်ုပ်တို့မှန်ကန်သောမေးခွန်းများကို မေးနေပါသလား?**။ မေးခွန်းများကို မေးနေသော နည်းလမ်းများကို ပြန်လည်စဉ်းစားခဲ့သည်။
- - Turing tests ကို 'chinese room theory' ကဲ့သို့သော အယူအဆများဖြင့် ပြန်လည်စဉ်းစားခဲ့သည်။ "digital computer ကို programming ပြုလုပ်ခြင်းသည် ဘာသာစကားကို နားလည်သည့်အတိုင်း ထင်ရစေသော်လည်း အမှန်တကယ် နားလည်မှုကို ဖန်တီးနိုင်မည်မဟုတ်ပါ။" ([source](https://plato.stanford.edu/entries/chinese-room/))
- - "therapist" ELIZA ကဲ့သို့သော artificial intelligences များကို လူ့အဖွဲ့အစည်းထဲသို့ ထည့်သွင်းခြင်း၏ ethics ကို စိစစ်ခဲ့သည်။
+- **ကန့်သတ်ချက်များ**။ ကွန်ပျူတာစွမ်းအား မလုံလောက်ခြင်း။
+- **Combinatorial ပွင့်ပွင့်လင်းလင်းကြီးထွားမှု**။ ပိုမိုမေးမြန်းရန်အတွက် စနစ်လက်ရှိ လေ့ကျင့်ဆောင်ရွက် သည် parameter ပမာဏ ပျမ်းမျှအတိုင်း တိုးတက်မှုမရှိခြင်း။
+- **ဒေတာမလုံလောက်ခြင်း**။ အယ်လ်ဂိုရစ်သမ်များ ကို စမ်းသပ်၊ ဖွံ့ဖြိုးမြှင့်တင်ခြင်းတွင် ဒေတာနည်းပါးမှုကြောင့် ချို့ယွင်းမှုဖြစ်ခဲ့သည်။
+- **ကျွန်တော်တို့ မေးခွန်းမြန်မာဖို့မှန်သလား?**. မေးခွန်းများကို ခွဲခြားစစ်ဆေးရန် စတင်ခဲ့သည်။ သုတေသနဆရာများသည် မိမိနည်းလမ်းများအပေါ် အပြစ်တင်ခံရခြင်းရှိသည်။
+ - Turing စမ်းသပ်မှုများသည် 'တရုတ်အခန်း သီအိုရီ' စနစ်ကဲ့သို့ အကြံပြုချက်တစ်ခုဖြင့် စိစစ်ခံရသည်၊ ဤအကြောင်းက "ဒစ်ဂျစ်တယ်ကွန်ပျူတာကို အစီအစဉ်ရေးခြင်းကဘာသာစကားကို နားလည်သဏ္ဍာန်လုပ်ပေးနိုင်သော်လည်း ကိုယ့်ခံနားလည်မှုကို မဖန်တီးနိုင်ပါ။" ([ရင်းမြစ်](https://plato.stanford.edu/entries/chinese-room/))
+ - လူမှုအသိုင်းအဝိုင်းထဲမှ “ကုထုံးပေးသူ” ELIZA အဖွဲ့အစည်းများကို မူဝါဒသတ်မှတ်ခြင်း အပေါ်စိစစ်တင်ပြခြင်းရှိနေသည်။
---
-AI သုတေသနနယ်ပယ်များတွင် အမျိုးအစားများ ပေါ်ပေါက်လာခဲ့သည်။ ["scruffy" vs. "neat AI"](https://wikipedia.org/wiki/Neats_and_scruffies) အယူအဆများကို ဖွဲ့စည်းခဲ့သည်။ _Scruffy_ labs များသည် ရလဒ်လိုက်ဖို့အတွက် program များကို အချိန်ကြာကြာ tweak ပြုလုပ်ခဲ့သည်။ _Neat_ labs များသည် "logic နှင့် formal problem solving" ကို အဓိကထားခဲ့သည်။ ELIZA နှင့် SHRDLU သည် _scruffy_ systems များဖြစ်သည်။ 1980 ခုနှစ်များတွင် ML systems များကို reproducible ဖြစ်စေရန် demand ပေါ်လာသည်နှင့်အမျှ _neat_ approach သည် gradually အရေးပါလာခဲ့သည်။
+တူတူအချိန်တွင် AI အတွေးအခေါ်အချို့ ဖွဲ့စည်းလာသည်။ ["ခွက်ဆွဲသော" နှင့် "စနစ်တကျ AI"] ပုံစံများကြား ရိုက်နှက်မှု ဖြစ်ပေါ်ခဲ့သည်။ _ခွက်ဆွဲသော_ လက်ရုံးနည်းစနစ်များသည် မိနစ်များစွာ ပြင်ဆင်ခဲ့သည်။ _စနစ်တကျ_ စက်ရုံများ သည်းခံစွာ သင်္ချာနှင့် အချက်ပြ ဟန်ချက်ညီကာ ပြဿနာများ ဖြေရှင်းရာတွင် ဦးတည်သည်။ ELIZA နဲ့ SHRDLU သည် _ခွက်ဆွဲသော_ စနစ်များ ဖြစ်သည်။ 1980s တွင် ML စနစ်များကို ထပ်မံထုတ်ပြန်နိုင်စေရန် လိုအပ်လာပြီး ယင်းအတွက် _စနစ်တကျ_ နည်းလမ်းများ အားသာမှု ရရှိလာသည်။
---
-## 1980s Expert systems
+## 1980s စွမ်းကျင်သူ စနစ်များ
-နယ်ပယ်သည် တိုးတက်လာသည်နှင့် ၎င်း၏ စီးပွားရေးအကျိုးကျေးဇူးများ ပိုမိုရှင်းလင်းလာခဲ့ပြီး 1980 ခုနှစ်များတွင် 'expert systems' များ ပေါ်ပေါက်လာခဲ့သည်။ "Expert systems သည် အတုအမြင့်တုအာရုံ (AI) software ၏ ပထမဆုံးအောင်မြင်သော အမျိုးအစားများအနက် တစ်ခုဖြစ်သည်။" ([source](https://wikipedia.org/wiki/Expert_system))
+နယ်ပယ်တိုးတက်လာသည်နှင့်အမျှ စီးပွားရေးတွင် အသုံးအဆောင်ဖြစ်လာပြီး 1980s တွင် 'စွမ်းကျင်သူစနစ်' များ တိုးချဲ့ခဲ့သည်။ "စွမ်းကျင်သူစနစ်များသည် လူမှုပညာရပ် (AI) ဆော့ဖ်ဝဲအမျိုးအစား အောင်မြင်ပြီးစတင်သော ပုံစံများဖြစ်သည်။" ([ရင်းမြစ်](https://wikipedia.org/wiki/Expert_system))
-ဒီအမျိုးအစားသည် _hybrid_ system တစ်ခုဖြစ်ပြီး rules engine တစ်ခုနှင့် inference engine တစ်ခုကို ပေါင်းစပ်ထားသည်။
+၎င်းစနစ်များသည် ဟိုက်ဘရစ်အမျိုးအစားဖြစ်ပြီး တစ်စိတ်တစ်ပိုင်းမှာ စီးပွားရေးလိုအပ်ချက်များကို သိမ်းဆည်းထားသော စည်းမျဉ်းစနစ်ဖြစ်ပြီး နောက်တစ်စိတ်မှာ စည်းမျဉ်းစနစ်ကို အသုံးပြု၍ အချက်အလက်သစ်များကို ထုတ်ယူခွင့်ရသော စနစ်ဖြစ်သည်။
-ဒီကာလတွင် neural networks အပေါ် အာရုံစိုက်မှုများလည်း တိုးလာခဲ့သည်။
+ဤအချိန်ကာလတွင် နယူးရယ်ကွန်ယက်များတွင် ပိုမိုစိတ်ဝင်စားလာသော အချိန်လည်းဖြစ်သည်။
---
-## 1987 - 1993: AI 'Chill'
+## 1987 - 1993: AI 'အေးခဲမှု'
-specialized expert systems hardware များ၏ ပေါ်ပေါက်မှုသည် အလွန် specialized ဖြစ်လာခဲ့သည်။ Personal computers များ၏ တိုးတက်မှုသည် ဒီအကြီးမားသော specialized systems များနှင့် ယှဉ်ပြိုင်ခဲ့သည်။ Computing ၏ democratization သည် စတင်ခဲ့ပြီး big data ၏ explosion ကို pave လုပ်ပေးခဲ့သည်။
+ကြီးမှုထူးခြားသည့် စွမ်းကျင်သူစနစ်များ ရုံးခွဲများ ဖြစ်လာသည်။ မိမိစီးပွားရေးကိုယ်ပိုင် ကွန်ပျူတာများ လည်း ဤကြီးမားပြီး အထူးပြုစနစ်များဖြင့် ယှဉ်ပြိုင်လာပါသည်။ ကွန်ပျူတာများကို လူသုံးများလာခြင်းက ကွန်ပျူတာဒေတာများ ပိုမိုကြီးပြင်းလာရန် များစွာ ခြေလှမ်းတိုးခဲ့သည်။
---
## 1993 - 2011
-ဒီကာလတွင် ML နှင့် AI သည် data နှင့် compute power နည်းပါးမှုကြောင့် ဖြစ်ပေါ်ခဲ့သော ပြဿနာများကို ဖြေရှင်းနိုင်စွမ်းရှိလာခဲ့သည်။ ဒေတာပမာဏသည် အလွန်မြန်ဆန်စွာ တိုးလာခဲ့ပြီး smartphone ၏ ပေါ်ပေါက်မှု (2007) ကြောင့် ပိုမိုရရှိနိုင်လာခဲ့သည်။ Compute power သည် exponential အတိုင်း တိုးလာခဲ့ပြီး algorithm များလည်း တိုးတက်လာခဲ့သည်။ နယ်ပယ်သည် အတိတ်ကာလ၏ freewheeling days များမှ အတည်ပြု discipline တစ်ခုအဖြစ် crystallize ဖြစ်လာခဲ့သည်။
+ဒီအချိန်ကာလတွင် ML နှင့် AI သည် ဒေတာနည်းပါးခြင်းနှင့် ကွန်ပျူတာစွမ်းအား ကန့်သတ်ချက်အရ ဖြစ်ပေါ်ခဲ့သော ပြဿနာများကို ဖြေရှင်းနိုင်ရန် အသစ်တစ်ခုချင်းစီ ကာလဖြစ်ခဲ့သည်။ ဒေတာ ပမာဏများမြန်ဆန်စွာတိုးပွားလာပြီး အသုံးပြုမှု ပိုမိုကျယ်ပြန့်လာခဲ့သည်။ အထူးသဖြင့် 2007 ခုနှစ်အနီးတွင် စမတ်ဖုန်းများပေါ်ပေါက်လာခဲ့သည်။ ကွန်ပျူတာစွမ်းအားသည် ပရိုက်မီတစ်သည့်ဖြစ်ပြီး အယ်လ်ဂိုရစ်သမ်များလည်း တိုးတက်ကောင်းမွန်လာသည်။ နယ်ပယ်သည် ကျွမ်းကျင်လာပြီး ယခင်自由自在သောကာလ သည် တကယ့်အတည်ပြုသော သင်တန်းရပ်ဖြစ်လာသည်။
---
## ယနေ့
-ယနေ့တွင် စက်ရုပ်သင်ယူမှုနှင့် AI သည် လူသားများ၏ ဘဝ၏ အစိတ်အပိုင်းများအားလုံးကို ထိခိုက်စေသည်။ ဒီကာလသည် algorithm များ၏ လူသားဘဝများအပေါ် ရှုထောင့်များနှင့် အကျိုးသက်ရောက်မှုများကို သေချာနားလည်ရန် လိုအပ်သည်။ Microsoft's Brad Smith က "သတင်းအချက်အလက်နည်းပညာသည် privacy နှင့် freedom of expression ကဲ့သို့သော အခြေခံလူ့အခွင့်အရေးများကို ထိခိုက်စေသော ပြဿနာများကို ရှုထောင့်ပေးသည်။ ဒီပြဿနာများသည် ဒီထုတ်ကုန်များကို ဖန်တီးသော နည်းပညာကုမ္ပဏီများအတွက် တာဝန်ရှိမှုကို မြှင့်တင်စေသည်။ ကျွန်ုပ်တို့၏အမြင်အရ၊ ၎င်းတို့သည် thoughtful government regulation နှင့် acceptable uses အပေါ် norms ဖွံ့ဖြိုးတိုးတက်မှုကို လိုအပ်သည်။" ([source](https://www.technologyreview.com/2019/12/18/102365/the-future-of-ais-impact-on-society/)) ဟု ပြောကြားခဲ့သည်။
+ယနေ့စက်သင်ယူခြင်း နဲ့ AI သည် ကျွန်တော်တို့ဘဝ၏ များသော ရာထူးကို ထိန်းသိမ်းထားသည်။ ဒီအချိန်ကာလမှာ သက်ဆိုင်ရာ နည်းလမ်းများ အန္တရာယ်များနှင့် အကျိုးဆက်များကို သေချာ သိရှိရန် လိုအပ်သည်။ Microsoft ၏ Brad Smith က ပြောကြားခဲ့သလို "သတင်းအချက်အလက်နည်းပညာသည် မူဝါဒဆိုင်ရာ အခြေခံ အခွင့်အရေးများဖြစ်သည့် ကိုယ်ရေးကိုယ်တာရေးနှင့် အသံလွှင့်ခွင့်ကဲ့သို့ ဂရုပြုမှုအရေးကြီးသောကိစ္စများကို ဖြစ်ပေါ်စေသည်။ ၎င်းအချက်များသည် ထုတ်ကုန်များဖန်တီးသော နည်းပညာကုမ္ပဏီများ၏ တာဝန်ကို တင်မြှောက်သည်။ ကျွန်တော်တို့၏ အမြင်အရ ထိုသူတို့သည် အတည်ပြုခွင့်ရှိသော စီမံခန့်ခွဲမှုနှင့် သုံးစွဲမှုနည်းစနစ်များဖန်တီးရန် အစိုးရစီမံကိန်းတစ်ခုလိုအပ်ကြောင်းဖြစ်သည်။" ([ရင်းမြစ်](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://ff-quizzes.netlify.app/en/ml/)
+
+---
+## ပြန်လည်ဆန်းစစ်ခြင်းနှင့် ကိုယ်တိုင်လေ့လာခြင်း
+
+ဒီ့အတွက် စုံစမ်းကြည့်ရန်နှင့် နားထောင်ရန် ရှိသည်။
+
+[Amy Boyd က လူမှုပညာ၏ ဖွံ့ဖြိုးတိုးတက်မှုကို ဆွေးနွေးသော ပေါ့ဒ်ကတ်](http://runasradio.com/Shows/Show/739)
+
+[](https://www.youtube.com/watch?v=EJt3_bFYKss "Amy Boyd မှ လူမှုပညာ၏ သမိုင်းကြောင်း")
+
+---
+
+## အလုပ်အမှု
-အနာဂတ်တွင် ဘာဖြစ်မည်ဆိုသည်ကို မသိရသေးပါသော်လည်း ဒီ computer systems များနှင့် ၎င်းတို့ run လုပ်သော software နှင့် algorithm
+[အချိန်ဇယားတစ်ခု ဖန်တီးပါ](assignment.md)
---
-**ဝက်ဘ်ဆိုက်မှတ်ချက်**:
-ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးစားနေပါသော်လည်း၊ အလိုအလျောက်ဘာသာပြန်မှုများတွင် အမှားများ သို့မဟုတ် မမှန်ကန်မှုများ ပါဝင်နိုင်သည်ကို ကျေးဇူးပြု၍ သတိပြုပါ။ မူရင်းစာရွက်စာတမ်းကို ၎င်း၏ မူလဘာသာစကားဖြင့် အာဏာတည်သောရင်းမြစ်အဖြစ် သတ်မှတ်ရန် လိုအပ်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူ့ဘာသာပြန်ပညာရှင်များ၏ ပရော်ဖက်ရှင်နယ်ဘာသာပြန်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်မှုကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော နားလည်မှုမှားများ သို့မဟုတ် အဓိပ္ပာယ်မှားများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။
\ No newline at end of file
+
+**ပြောကြားချက်**
+ဤစာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးပမ်းနေသော်လည်း၊ စက်ကိရိယာဘာသာပြန်ခြင်းများတွင် အမှားများ သို့မဟုတ် မှားယွင်းချက်များ ပါဝင်နိုင်ကြောင်း သတိပြုပါရန် လိုအပ်ပါသည်။ မူလစာတမ်းကို မူရင်းဘာသာဖြင့်သာ ယုံကြည်စိတ်ချရသော အချက်အလက်အဖြစ် သတ်မှတ်သင့်သည်။ အရေးကြီးသည့် သတင်းအချက်အလက်များအတွက် ပရော်ဖက်ရှင်နယ် လူသားဘာသာပြန်သူဝန်ဆောင်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်ချက်ကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော နားလည်မှုကွာခြားမှုများ သို့မဟုတ် မမှန်ကန်သော အသုံးပြုမှုများအတွက် ကျွန်ုပ်တို့ တာဝန်မခံပါ။
+
\ No newline at end of file
diff --git a/translations/my/1-Introduction/3-fairness/README.md b/translations/my/1-Introduction/3-fairness/README.md
index 43db521ae..5574343b8 100644
--- a/translations/my/1-Introduction/3-fairness/README.md
+++ b/translations/my/1-Introduction/3-fairness/README.md
@@ -1,135 +1,167 @@
-# တာဝန်ရှိသော AI ဖြင့် စက်မှုသင်ယူမှုဖြေရှင်းချက်များ တည်ဆောက်ခြင်း
+# တာဝန်ရှိသော AI ဖြင့် စက့်မှတ်လေ့လာမှု ဖြေရှင်းနည်းများ တည်ဆောက်ခြင်း
+
+
+> [Tomomi Imura](https://www.twitter.com/girlie_mac) မှ စက့်မှတ်နိုတ်
-
-> ပုံရေးဆွဲသူ - [Tomomi Imura](https://www.twitter.com/girlie_mac)
+## [သင်ခန်းစာမတိုင်မီ စစ်ဆေးမေးခွန်း](https://ff-quizzes.netlify.app/en/ml/)
+
+## နိဒါန်း
-## [မတိုင်မီ စစ်ဆေးမေးခွန်း](https://ff-quizzes.netlify.app/en/ml/)
+ဒီသင်ရိုးမှာ၊ စက့်မှတ်လေ့လာမှု (Machine Learning) သည် ကျွန်တော်တို့၏ နေ့စဥ်ဘဝများကို ဘယ်လို သက်ရောက်နိုင်ပြီး သက်ရောက်နေသည်ကို စတင်ရှာဖွေ သင်ကြားမည်။ ယနေ့ဟာတောင် ကုမ္ပဏီစနစ်များနှင့် မော်ဒယ်များသည် နေ့စဥ် ဆုံးဖြတ်ချက်များ တာဝန်ယူရာတွင် ပါဝင်နေကြပြီး ကျန်းမာရေးဌာန ရောဂါသိမြင်ခြင်းများ ၊ ကျပ်ငွေ ခွင့်ပြုချက်များ သို့မဟုတ် လိမ်လည်မှုတွေ ရှာဖွေရေး စသည်ဖြင့် ပါဝင်သည်။ ထို့ကြောင့် အဲဒီမော်ဒယ်တွေက ယုံကြည်စိတ်ချရတဲ့ ရလဒ်တွေ ရရှိစေရန် ကောင်းစွာ အသုံးပြုနိုင်ဖို့ အရေးကြီးပါပဲ။ ဆော့ဖ်ဝဲလ်လ်လ်မှာ ဖြစ်နိုင်သလို AI စနစ်များလည်း မျှော်လင့်ချက်များကို မဖြည့်ဆည်းနိုင် ရလဒ် မမှန်ကန်ခြင်းတွေ ဖြစ်တတ်ပါတယ်။ ဒါကြောင့် AI မော်ဒယ်တစ်ခု၏ လုပ်ဆောင်ချက်များကို နားလည်ရန် နှင့် ရှင်းပြနိုင်ရန် နှစ်ပါးရှိခြင်းသည် အရေးကြီးပါသည်။
-## အကျဉ်းချုပ်
+မော်ဒယ်ထားဆောက်ရာတွင် အသုံးပြုသော ဒေတာတွင် လူမျိုး၊ ကျားမ၊ နိုင်ငံရေး အမြင်၊ ဘာသာရေး သို့မဟုတ် အချို့ လူ့အုပ်စုများ ပြည့်စုံစွာ မပါဝင်ခြင်း သို့မဟုတ် မညီမျှစွာ ကိုယ်စားပြု ဖြစ်နေခြင်း ဖြစ်လာခဲ့ပါက ဘာတွေ ဖြစ်နိုင်မလဲဆိုတာ စဉ်းစားကြည့်ပါ။ မော်ဒယ်၏ ထွက်လာသော ရလဒ်သည် အချို့ လူမျိုးအုပ်စုများ အကျိုးပြုရန် အဓိပ္ပါယ် လျှင်ပါက အက်ပလီကေးရှင်းအတွက် ထိရောက်မှု ဘယ်လို ဖြစ်ကြမလဲ? ထို့ပြင် မော်ဒယ်တွင် မကောင်းစွာ ထွက်ရှိခြင်းများ ဖြစ်ပွားပြီး လူမှုကို ထိခိုက်စေပါက အဲဒီ AI စနစ်၏ လုပ်ဆောင်ချက်များအတွက် တာဝန်ရှိသူများမှာ ဘယ်သူများဖြစ်မလဲ? ဒီမေးခွန်းများကို ဒီသင်ရိုးမှာ ရှာဖွေပေးသွားမှာ ဖြစ်ပါတယ်။
-ဒီသင်ရိုးမှာ သင်သည် စက်မှုသင်ယူမှု (Machine Learning) က ဘယ်လိုနဲ့ ဘယ်လိုများ ကျွန်တော်တို့ရဲ့ နေ့စဉ်ဘဝတွေကို သက်ရောက်နေတယ်ဆိုတာကို စတင်လေ့လာသိရှိရမှာဖြစ်ပါတယ်။ ယနေ့တိုင် အချိန်မှာတောင် စနစ်များနဲ့ မော်ဒယ်များဟာ ကျွန်တော်တို့ရဲ့ နေ့စဉ်ဆုံးဖြတ်မှုလုပ်ငန်းစဉ်တွေမှာ ပါဝင်နေပါတယ်။ ဥပမာ - ကျန်းမာရေးစစ်ဆေးမှု၊ ချေးငွေခွင့်ပြုမှု သို့မဟုတ် လိမ်လည်မှုတွေကို ရှာဖွေခြင်းစသဖြင့်။ ဒါကြောင့် ဒီမော်ဒယ်တွေက ယုံကြည်စိတ်ချရတဲ့ ရလဒ်တွေကို ပေးနိုင်ဖို့ အရေးကြီးပါတယ်။ အခြားသော ဆော့ဖ်ဝဲလ်လျှောက်လွှာတစ်ခုလိုပဲ AI စနစ်တွေကလည်း မျှော်မှန်းချက်နဲ့ မကိုက်ညီတာတွေ သို့မဟုတ် မလိုလားအပ်တဲ့ ရလဒ်တွေကို ရရှိစေတတ်ပါတယ်။ ဒါကြောင့် AI မော်ဒယ်တစ်ခုရဲ့ အပြုအမူကို နားလည်နိုင်ဖို့နဲ့ ရှင်းပြနိုင်ဖို့ အရေးကြီးပါတယ်။
+ဒီသင်ခန်းစာမှာ မင်းတွေ လုပ်လို့ရမှာက
-သင်တစ်ခါမှ မော်ဒယ်တည်ဆောက်ဖို့ သုံးတဲ့ ဒေတာတွေမှာ လူမျိုး၊ လိင်၊ နိုင်ငံရေးအမြင်၊ ဘာသာရေး စသဖြင့် အချို့သော လူမှုအုပ်စုတွေ မပါဝင်ဘူးဆိုရင် ဘာတွေဖြစ်နိုင်မလဲ စဉ်းစားကြည့်ပါ။ ဒါမှမဟုတ် မော်ဒယ်ရဲ့ ရလဒ်တွေက အချို့သော လူမှုအုပ်စုတွေကို အားပေးတဲ့အနေနဲ့ အဓိပ္ပာယ်ဖွင့်ဆိုရင်လည်း ဘာတွေဖြစ်နိုင်မလဲ။ ထို့အပြင် မော်ဒယ်ရဲ့ ရလဒ်တွေက လူတွေကို နစ်နာစေတဲ့အခါမှာလည်း ဘယ်သူက AI စနစ်ရဲ့ အပြုအမူအတွက် တာဝန်ရှိမလဲ။ ဒီသင်ရိုးမှာ ဒီလိုမေးခွန်းတွေကို လေ့လာသွားမှာဖြစ်ပါတယ်။
+- စက့်မှတ်လေ့လာမှုတွင် တရားမျှတမှုပေါ် အာရုံစိုက်မှု မြှင့်တင်ခြင်းနှင့် တရားမျှတမှုဆိုင်ရာ ထိခိုက်မှုများကို နားလည်ခြင်း။
+- ရေတွက်နိုင်စရာ မဟုတ်သော အကြောင်းအရာများနှင့် မလွဲမှားသော အခြေအနေများကို စူးစမ်းလေ့လာခြင်းဖြင့် ယုံကြည်စိတ်ချရမှုနှင့် လုံခြုံမှုကို အာမခံခြင်း။
+- တစ်ဦးချင်းစီအားပါဝင်မှုရှိစေရန် စနစ်များကို ဒီဇိုင်းဆွဲခြင်းအားဖြင့် အားပေးပို့ဆောင် ဖွံ့ဖြိုးတိုးတက်မှု ရရှိစေရန် နားလည်မှု ရရှိခြင်း။
+- ဒေတာနှင့် လူများ၏ လျှို့ဝှက်ရေးနှင့် လုံခြုံရေးကို ကာကွယ်ရန် အရေးကြီးမှု စူးစမ်းလေ့လာခြင်း။
+- AI မော်ဒယ်၏ လုပ်ဆောင်ချက်များကို ရှင်းလင်း သော ကောင်တာ (glass box) နည်းလမ်းဖြင့် ရှင်းပြနိုင်သော အရေးပါမှုကို မြင်တွေ့ခြင်း။
+- AI စနစ်များ၏ ယုံကြည်မှုကို တည်ဆောက်ရန် တာဝန်ယူမှု အသိအမှတ်ပြုမှု အရေးကြီးမှုအပေါ် သတိပြုခြင်း။
-ဒီသင်ခန်းစာမှာ သင်သည် -
+## ကြိုတင် အရည်အချင်း
-- စက်မှုသင်ယူမှုမှာ တရားမျှတမှုရဲ့ အရေးပါမှုနဲ့ ဆက်စပ်သော နစ်နာမှုများကို နားလည်သိရှိလာမယ်။
-- ယုံကြည်စိတ်ချရမှုနဲ့ လုံခြုံမှုရှိစေရန် အထူးအခြေအနေတွေကို စူးစမ်းလေ့လာတဲ့ လေ့ကျင့်မှုနဲ့ ရင်းနှီးလာမယ်။
-- လူတိုင်းကို အခွင့်အရေးပေးနိုင်ဖို့ အပါဝင်စနစ်တွေကို ဒီဇိုင်းဆွဲဖို့ လိုအပ်ချက်ကို နားလည်လာမယ်။
-- ဒေတာနဲ့ လူတွေရဲ့ ကိုယ်ရေးအချက်အလက်ကို ကာကွယ်ဖို့ အရေးကြီးမှုကို လေ့လာမယ်။
-- AI မော်ဒယ်ရဲ့ အပြုအမူကို ရှင်းပြနိုင်ဖို့ "ဖန်သားပုံး" လိုက်နာမှုရဲ့ အရေးကြီးမှုကို မြင်တွေ့မယ်။
-- AI စနစ်တွေမှာ ယုံကြည်မှုတည်ဆောက်ဖို့ တာဝန်ရှိမှုရဲ့ အရေးကြီးမှုကို သတိပြုမယ်။
+ကြိုတင် အရည်အချင်းအနေနဲ့ "တာဝန်ရှိသော AI နိယာမများ" ရေးဖြေနက်ကို လေ့လာပြီး အောက်ဖော်ပြပါ ဗီဒီယိုကို ကြည့်ပါ။
-## ကြိုတင်လိုအပ်ချက်
+ဒီ [Learning Path](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) မှတဆင့် တာဝန်ရှိသော AI အကြောင်း ပိုမိုသိရှိနိုင်ပါသည်။
-ဒီသင်ခန်းစာကို စတင်မတိုင်မီ "တာဝန်ရှိသော AI မူဝါဒများ" သင်ခန်းစာကို လေ့လာပြီး အောက်ပါဗီဒီယိုကို ကြည့်ပါ။
+[](https://youtu.be/dnC8-uUZXSc "Microsoft's Approach to Responsible AI")
-[ဒီသင်ခန်းစာကို လေ့လာရန်](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)
+> 🎥 အထက်ဖော်ပြပါ ဓာတ်ပုံကို နှိပ်ကာ မိုက်ကရိုဆော့ဖ့စ်၏ တာဝန်ရှိသော AI နည်းလမ်း ဗီဒီယိုကို ကြည့်ရှုပါ
-[](https://youtu.be/dnC8-uUZXSc "Microsoft ရဲ့ တာဝန်ရှိသော AI မူဝါဒ")
+## တရားမျှတမှု
-> 🎥 အထက်ပါပုံကို နှိပ်ပြီး Microsoft ရဲ့ တာဝန်ရှိသော AI မူဝါဒကို ကြည့်ပါ။
+AI စနစ်များသည် လူတိုင်းအားတရားမျှတစွာ ကိုင်တွယ်ရမည် ဖြစ်ပြီး၊ လူအုပ်စုဆွဲတူညီသူများအား မတူကွဲပြားစေရန် မဖြစ်သင့်ပါ။ ဥပမာအားဖြင့် AI စနစ်များသည် ဆေးကုသမှု၊ ကျပ်ငွေနှင့် လျှောက်လွှာ၊ အလုပ်အကိုင်ဆိုင်ရာ ညွှန်ကြားမှုများ ပေးသောအခါ၊ တစ်ဦးချင်းစီ၏ ရောဂါ၊ ဘဏ္ဍာရေး အခြေအနေ သို့မဟုတ် အလုပ်အရည်အချင်း ပုံစံတူသူများအား တူညီသော အကြံပေးချက်များ ပေးရမည် ဖြစ်သည်။ လူတိုင်းတွင် မတူညီသော အမြင်များနှင့် ယဉ်ကျေးမှုလက္ခဏာများ ပါရှိပြီး သူတို့၏ ဆုံးဖြတ်ချက်များ၌ ထိခိုက်သက်ရောက်မှု ရှိသည်။ ဤနေရာတွင် ကျွန်ုပ်တို့ အသုံးပြု သော ဒေတာများ၌ ကြည့်ရှုရမည့် ကွဲပြားချက်များ ပါဝင်နိုင်ပြီး အကြောင်းတရားမရှိဘဲ ဖြစ်ပေါ်နိုင်သည့် အထင်အမြင်များ ဖြစ်နိုင်ပါသည်။ ဤအထင်အမြင်များကို သတိထားမိရလွယ်ခြင်း ခက်ခဲတတ်ပါသည်။
-## တရားမျှတမှု
+**"တရားမျှတမမှု"** ဟူသည် လူမျိုး၊ ကျားမ၊ အသက်အရွယ် သို့မဟုတ် မသန်စွမ်းမှုအခြေအနေ ကြောင့် ဖြစ်သည့် လူအုပ်စုအတွက် ဆိုးကျိုးများ သို့မှ "ထိခိုက်မှုများ" ကို ဆိုလိုသည်။ အဓိကတရားမျှတမှု ဆိုင်ရာ ထိခိုက်မှုများမှာ အောက်ပါအတိုင်း 分類 လုပ်နိုင်သည်။
+
+- **ခွဲဝေပေးမှု**၊ ဥပမာတစ်ခုတွင် ကျားမ သို့လူမျိုးတစ်ခုကို အခြားတစ်ခုထက် ဦးစားပေးခြင်း။
+- **ဝန်ဆောင်မှု အရည်အသွေး**။ အထူးအခြေအနေတစ်ခုအတွက် ဒေတာလေ့လာသော်လည်း အမှန်တကယ် ပိုမိုရှုပ်ထွေးမှုရှိသောကြောင့် ဝန်ဆောင်မှု ချို့ယွင်းမှု ဖြစ်ပေါ်ခြင်း။ ဥပမာအားဖြင့် အသားအရည် အနက်ရောင် လူများကို ခြေရာခံ၍ မရသော လက်ဆပ်မှုတူဆပ်ကပ်များ။ [Reference](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
+- **အသိအမှတ်ပြုချိန်၌ ရိုက်ခတ်ခြင်း**။ တရားမျှတမူ ခံစားရစေသော နှိုးစက်မှုအနေဖြင့် တစ်စုံတစ်ခု သို့မဟုတ် လူတစ်ဦးကို မမှန်ကန်သောနည်းဖြင့် သတ်မှတ်ခြင်း။ ဥပမာ၊ သရုပ်ပုံ မှတ်တမ်း စနစ်သည် အနက်ရောင် အရောင်ရှိ လူများ၏ ဓာတ်ပုံများကို မိမိမိ မေးကားလိုအာဏာရသည့် လူကြီးမင်းများအဖြစ် မှတ်သားခြင်း။
+- **မတူညီသော ကိုယ်စားပြုမှု**။ အသွင်အပြင် ဖြင့် တစ်စုတစ်စည်းကို အမြဲမမြင်ရခြင်း၊ အဲဒီဝန်ဆောင်မှု သို့မဟုတ် လုပ်ငန်းများသည် ထိုအကွာအဝေးကို ထိခိုက်စေခြင်း။
+- **ရိုးရိုး ဖော်ပြချက် သဘောထား**။ သတ်မှတ်ထားသော အုပ်စုတစ်စုအား အထူးသတ်မှတ်ထားသော အင်္ဂါရပ်များစွာနှင့် ဆက်နွယ်စေခြင်း။ ဥပမာ၊ အင်္ဂလိပ်နှင့် တူရကီ ဘာသာပြန်စနစ်တွင် ကျားမ နှင့် 女 性 အကြောင်း တရားမျှတ မလိုက်ဖက်မှု ရှိခြင်း။
+
+
+> တူရကီဘာသာသို့ ဘာသာပြန်ခြင်း
+
+
+> အင်္ဂလိပ်ဘာသာ ပြန်ခြင်း
+
+AI စနစ်များကို ဒီဇိုင်းဆွဲပြီး စမ်းသပ်ရာတွင် AI သည် တရားမျှတမှုရှိစေရန်၊ လူသားများကဲ့သို့ စွဲထောက်၍ ဆုံးဖြတ်ချက်ချမှုများ မပြုလုပ်ရန် အာမခံရမည်ဖြစ်သည်။ AI နှင့် စက့်မှတ်လေ့လာမှုတွင် တရားမျှတမှု အာမခံခြင်းသည် ရှုပ်ထွေးသော လူမှုနည်းပညာ အခက်အခဲတစ်ရပ် ဖြစ်နေဆဲဖြစ်သည်။
+
+### ယုံကြည်စိတ်ချရမှုနှင့် လုံခြုံမှု
-AI စနစ်တွေဟာ လူတိုင်းကို တရားမျှတစွာ ဆက်ဆံရမယ်။ နောက်ထပ် လူမှုအုပ်စုတွေကို မတူညီစွာ သက်ရောက်မှုမရှိစေရမယ်။ ဥပမာ - AI စနစ်တွေက ဆေးကုသမှုအကြံပြုမှု၊ ချေးငွေလျှောက်လွှာ သို့မဟုတ် အလုပ်ခန့်အပ်မှုအတွက် လမ်းညွှန်မှုပေးတဲ့အခါမှာ တူညီတဲ့ ရောဂါလက္ခဏာ၊ ငွေကြေးအခြေအနေ သို့မဟုတ် အလုပ်အတွေ့အကြုံရှိသူတိုင်းကို တူညီတဲ့ အကြံပြုချက်ပေးရမယ်။
+ယုံကြည်မှုတည်ဆောက်ရန် AI စနစ်များသည် ပုံမှန်နှင့် မမှန်းဆမိသော အခြေအနေများတွင် ယုံကြည်စိတ်ချရမည်၊ လုံခြုံရမည်၊ တပြိုင်နက် မပြောင်းလဲရပါ။ AI စနစ်များ စသည်ဖြင့် အမျိုးမျိုးသော အခြေအနေများတွင် မည်သို့ ပြုမူမည်ကို သိရှိထားရန် အရေးကြီးပါသည်၊ အထူးသဖြင့် အထူးသက်သက် အခြေအနေများဖြစ်သည်။ AI ဖြေရှင်းနည်းများ တည်ဆောက်စဉ်တွင်၊ AI ဖြေရှင်းနည်း ခံရသော အခြေအနေနွေများကို စိတ်အားထက်သန်စေသော အာရုံစိုက်မှု လိုအပ်ပါသည်။ ဥပမာအားဖြင့် မော်တော်ယာဉ် မောင်းသူ တစ်ယောက်သည် လူများ၏ လုံခြုံမှုကို ထိရောက်စွာ ထိန်းသိမ်းရမည်။ ထို့ကြောင့် မော်တော်ယာဉ်အတွင်း AI သွယ်ဝိုက်အရားများကို ညာညီသော ကာကွယ်မှုအတွက်၊ ညနေခင်း၊ မိုးရွာသည်၊ ကြမ်းတမ်းသောစက္ကူလျှပ်၊ ကလေးများလမ်းကို ဖြတ်သွားခြင်း၊ မိန်းမိသားစုများ၊ လမ်းတံတား ပြုပြင်မှု စသဖြင့် စနစ်အားလုံး အခြေအနေအမျိုးမျိုး ဖြတ်သန်းရမည့် အခြေအနေများအား ရေတွက်ဆင်ခြင်ရန်လိုအပ်သည်။ AI စနစ် တစ်ခုသည် အခြေအနေအမျိုးမျိုးကို ဘယ်လောက်တောင် ယုံကြည်စိတ်ချရစွာနှင့် လုံခြုံစွာ ကိုင်တွယ်နိုင်မည်ကို ဒေတာ သိပ္ပံပညာရှင် သို့ AI ဖွံ့ဖြိုးသူက စနစ် ဒီဇိုင်းဆွဲစဉ် သို့ စမ်းသပ်စဉ် တွက်ချက်ထားသည်ကို ပြသနိုင်သည်။
-လူတိုင်းမှာ မျိုးရိုးစဉ်ဆက်နဲ့ ရရှိလာတဲ့ အမြင်များရှိပြီး ဒါတွေက ကျွန်တော်တို့ရဲ့ဆုံးဖြတ်မှုနဲ့ လုပ်ဆောင်မှုတွေကို သက်ရောက်စေတတ်ပါတယ်။ ဒီလို အမြင်တွေဟာ AI စနစ်တွေကို သင်ကြားဖို့ သုံးတဲ့ ဒေတာထဲမှာပါဝင်လာတတ်ပါတယ်။ တစ်ခါတစ်ရံ ဒီလိုအခြေအနေတွေဟာ မတော်တဆ ဖြစ်တတ်ပါတယ်။ ဒေတာထဲမှာ ဘယ်အချိန်မှာ ဘာအမြင်တွေ ထည့်သွင်းနေတယ်ဆိုတာကို သိရှိဖို့ ခက်ခဲတတ်ပါတယ်။
+> [🎥 ဤနေရာ၌ ဗီဒီယိုကို နှိပ်ရန်: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
-**“မတရားမှု”** ဆိုတာ လူမျိုး၊ လိင်၊ အသက်အရွယ် သို့မဟုတ် မသန်စွမ်းမှုအခြေအနေ စသဖြင့် လူတစ်စုအပေါ် အနုတ်လက္ခဏာ သို့မဟုတ် “နစ်နာမှု” ဖြစ်စေတဲ့ သက်ရောက်မှုတွေကို ဆိုလိုပါတယ်။ မတရားမှုနဲ့ ဆက်စပ်တဲ့ နစ်နာမှုတွေကို အောက်ပါအတိုင်း ခွဲခြားနိုင်ပါတယ် -
+### ပါဝင်ဆောင်ရွက်ခြင်း
-- **ခွဲဝေမှု (Allocation)** - ဥပမာအားဖြင့် လိင် သို့မဟုတ် လူမျိုးတစ်ခုကို အခြားတစ်ခုထက် အားပေးခြင်း။
-- **ဝန်ဆောင်မှုအရည်အသွေး (Quality of service)** - ဒေတာကို တစ်ခုတည်းသော အခြေအနေအတွက် သင်ကြားပြီး အမှန်တရားမှာ ပိုမိုရှုပ်ထွေးတဲ့အခါ၊ ဝန်ဆောင်မှုအရည်အသွေးကျဆင်းတတ်ပါတယ်။ ဥပမာအားဖြင့် အမဲရောင်အသားရည်ရှိသူတွေကို မသိနိုင်တဲ့ လက်ဆေးဆပ်ပြာထည့်စက်။
-- **အပြစ်တင်မှု (Denigration)** - တစ်စုံတစ်ခု သို့မဟုတ် တစ်စုံတစ်ယောက်ကို မတရားစွာ အပြစ်တင်ခြင်း။
-- **အလွန်အကျွံ သို့မဟုတ် အနည်းငယ်သာ ပါဝင်မှု (Over- or under-representation)** - လူတစ်စုကို သက်ဆိုင်ရာ အလုပ်အကိုင်မှာ မမြင်ရခြင်း။
-- **စံနှုန်းသတ်မှတ်မှု (Stereotyping)** - လူတစ်စုကို သတ်မှတ်ထားတဲ့ အင်္ဂါရပ်တွေနဲ့ ဆက်စပ်ခြင်း။
+AI စနစ်များကို လူတိုင်း ပါဝင်ဆောင်ရွက်နိုင်စေရန် ဒီဇိုင်းဆွဲသင့်သည်။ AI စနစ်များကို ဒီဇိုင်းဆွဲခြင်းနှင့် ဖွံ့ဖြိုးမှုတွင် ဒေတာ သိပ္ပံပညာရှင်များနှင့် AI ဖွံ့ဖြိုးသူများသည် လူများအား မဖြစ်မနေ ပိတ်ဆို့မှုဖြစ်နိုင်သော အခက်အခဲများကို သိရှိပြီး ရုပ်သိမ်း ဖြေရှင်းရန် ကြိုးစားကြသည်။ ဥပမာအားဖြင့် ကမ္ဘာလုံးဆိုင်ရာ မသန်စွမ်းသူများ ၁ဘီလံကျော်ရှိကြသည်။ AI တိုးတက်မှုကြောင့် သူတို့အတွက် နေ့စဥ်ဘဝမှာ အချက်အလက်များနှင့် အခွင့်အရေးများကို လွယ်ကူချောမွေ့စွာ ရရှိနိုင်သည်။ ပိတ်ဆို့မှုများကို ဖြေရှင်းခြင်းအားဖြင့် အားလုံးအတွက် အကျိုးပြုသော AI ထုတ်ကုန်များကို ဖန်တီးပေးနိုင်သော မျိုးဆက်အသစ် ဖြစ်လာသည်။
-
-> အင်္ဂလိပ်မှ တူရကီဘာသာပြန်
+> [🎥 ဤနေရာ၌ ဗီဒီယိုကို နှိပ်ရန်: AI တွင် ပါဝင်ဆောင်ရွက်မှု](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
-
-> တူရကီမှ အင်္ဂလိပ်ပြန်
+### လုံခြုံမှုနှင့် လျှို့ဝှက်ရေး
-AI စနစ်တွေကို ဒီဇိုင်းဆွဲပြီး စမ်းသပ်တဲ့အခါမှာ AI ဟာ မတရား သို့မဟုတ် ခွဲခြားဆက်ဆံမှု ဆုံးဖြတ်ချက်တွေ မလုပ်ဖို့ သေချာစေရမယ်။ AI နဲ့ စက်မှုသင်ယူမှုမှာ တရားမျှတမှုကို အာမခံဖို့ဟာ လူမှုနဲ့ နည်းပညာဆိုင်ရာ စိန်ခေါ်မှုတစ်ခုဖြစ်နေဆဲပါ။
+AI စနစ်များသည် လုံခြုံစိတ်ချရပြီး လူများ၏ လျှို့ဝှက်ရေးကို လေးစားသင့်သည်။ လူများသည် ကိုယ်ပိုင်လျှို့ဝှက်ချက်များ၊ အချက်အလက်များ၊ သို့မဟုတ် ဘဝများ ပြဿနာဖြစ်စေရန် စနစ်များအား ယုံကြည်မှုနည်းသည်။ စက့်မှတ်လေ့လာမှု မော်ဒယ်များကို လေ့လာသင်ကြားစဉ်တွင် ဒေတာသည် အကောင်းဆုံးရလဒ် ရရှိစေရန် အခြေခံသည်။ အဲဒါ့ကြောင့် ဒေတာ၏ မူလကွဲပြားမှု နှင့် သမာဓိကို လေးစား စဉ်းစားရပါမည်။ ဥပမာအားဖြင့် ဒေတာသည် အသုံးပြုသူပေးသလား သို့မဟုတ် ပြည်သူလူထုဖွင့်ထားသလား? နောက်ထပ် အချက်မှာ ဒေတာကို ကိုင်တွယ်လုပ်ကိုင်ရာတွင် လျှို့ဝှက် သတင်းအချက်အလက်ကာကွယ်နိုင်ပြီး ထိခိုက်မှု ကာကွယ်နိုင်သော AI စနစ်များ ဖွံ့ဖြိုးရန် အရေးကြီးသည်။ AI တိုးတက်လာသည့် အချိန်တွင်၊ လျှို့ဝှက်ရေး ကာကွယ်မှုနှင့် လုပ်ငန်းအချက်အလက်အရေးကြီးသော ကိုယ်ပိုင် သတင်းအချက်အလက်များ ကာကွယ်မှုသည် ပိုမိုအရေးကြီးပြီး ရှုပ်ထွေးလာသည်။ ဒေတာ အကောက်ခွန်အသုံးပြုမှုများပြားသောကြောင့် AI တွင် လျှို့ဝှက်ရေးနှင့် ဒေတာလုံခြုံရေး ပြဿနာများကို အထူးသတိထား ရှိရမည်ဖြစ်သည်။
-### ယုံကြည်စိတ်ချမှုနှင့် လုံခြုံမှု
+> [🎥 ဤနေရာ၌ ဗီဒီယိုကို နှိပ်ရန်: AI တွင် လုံခြုံမှု](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-AI စနစ်တွေဟာ ယုံကြည်စိတ်ချရပြီး သာမန်အခြေအနေနဲ့ မထင်မှတ်ထားတဲ့ အခြေအနေတွေမှာ တိကျမှုရှိရမယ်။ AI စနစ်တွေဟာ အမျိုးမျိုးသော အခြေအနေတွေမှာ ဘယ်လို အပြုအမူပြုမယ်ဆိုတာ သိရှိထားဖို့ အရေးကြီးပါတယ်။ AI ဖြေရှင်းချက်တွေကို တည်ဆောက်တဲ့အခါမှာ AI ဖြေရှင်းချက်တွေ ကြုံတွေ့နိုင်တဲ့ အခြေအနေမျိုးစုံကို စဉ်းစားထားဖို့ အလေးပေးရမယ်။
+- စက်မှုလုပ်ငန်းအနေနှင့် Privacy နှင့် လုံခြုံမှုတွင် အရေးပါသော တိုးတက်မှုများ ပြုလုပ်ခဲ့ပြီး၊ GDPR (ယေဘုယျ ဒေတာ ကာကွယ်ရေး စည်းမျဉ်း) ကဲ့သို့သော စည်းကမ်းချက်များက အထူးအားထားသည်။
+- သို့သော် AI စနစ်များတွင် ပုဂ္ဂိုလ်ရေး ဒေတာများ ပိုမိုလိုအပ်သည့် တိုးလာမှုနှင့် Privacy တို့တွင် ဆန့်ကျင်မှု ရှိသည်ကို မှတ်သားထားရမည်။
+- အင်တာနက်နှင့် ဆက်သွယ်ထားသော ကွန်ပျူတာများ ပေါ်ပေါက်ခဲ့သည့် နေရာတွင်လည်း AI နှင့် ပြဿနာ ကာကွယ်ရေး ပြဿနာများ တိုးများလာသည်ကို တွေ့ရှိရသည်။
+- တစ်ပြိုင်နက် AI ကို ကာကွယ်ရေးတိုးတက်အောင် အသုံးပြုခြင်းလည်း ဖြစ်ပေါ်ပြီး၊ ယနေ့ခေတ် ယာယီဗီရပ်စ် စကင်နာများအများစုကို AI ရှာဖွေရေးနည်းပညာ မောင်းနှင်သည်။
+- ဒေတာ သိပ္ပံလုပ်ငန်းစဉ်များကို မျက်နှာသာသော လျှို့ဝှက်ရေးနှင့် လုံခြုံရေး အသုံးပြုပြီး မရောမလွှဲအောင် အာမခံရမည်။
-ဥပမာအားဖြင့် ကိုယ်တိုင်မောင်းနှင်တဲ့ ကားတစ်စီးဟာ လူတွေ့လုံခြုံမှုကို အဓိကထားရမယ်။ AI ကားမောင်းစနစ်ဟာ ည၊ မိုးသီး၊ မိုးနှင်း၊ လမ်းပေါ်မှာ ကလေးတွေ သို့မဟုတ် တိရစ္ဆာန်တွေ ရုတ်တရက်ပေါ်လာတာ စသဖြင့် အခြေအနေမျိုးစုံကို စဉ်းစားထားရမယ်။
-> [🎥 ဗီဒီယိုကြည့်ရန်](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
+### ထွက်ပေါ်မှုပွင့်လင်းမှု
+AI စနစ်များကို နားလည်နိုင်ရန် ဖြစ်ရမည်။ ထွက်ပေါ်မှုပွင့်လင်းမှု၏ အရေးကြီးသော အစိတ်အပိုင်းမှာ AI စနစ်နှင့် ၎င်း၏အစိတ်အပိုင်းများ၏ လုပ်ဆောင်ချက်ကို ရှင်းပြခြင်းဖြစ်သည်။ AI စနစ် နားလည်မှု မြှင့်တင်ရန် အကျိုးရှိကြောင်း သက်ဆိုင်သူများသည် ၎င်းတို့ ဘယ်လိုနှင့် ဘာကြောင့် လုပ်ဆောင်သည်ကို နားလည်ပြီး ဆောင်ရွက်မှု အရေးယူရာတွင် ဖြစ်ပေါ်နိုင်သော ထုတ်လုပ်မှု ပြဿနာများ၊ လုံခြုံရေးနှင့် လျှို့ဝှက်ရေး စိုးရိမ်ချက်များ၊ အကြွင်းမဲ့ခြင်း၊ ပိတ်ပင်ပစ်ခြင်းသို့မဟုတ် မမျှော်လင့်ထားသော ရလဒ်များကို ရှာဖွေနိုင်ရန်အတွက် ဖြစ်သည်။ AI စနစ်များကို အသုံးပြုသူများသည် AI စနစ် အသုံးပြုချိန်၊ ဘာကြောင့်၊ မည်သည့်နည်းဖြင့် အသုံးပြုကြောင်း နှင့် ၎င်းစနစ်၏ ကန့်သတ်ချက်များအကြောင်း သတင်းမှန် သက်သေပြရမည်ဟု ယုံကြည်ကြသည်။ ဥပမာအားဖြင့် ဘဏ်တစ်ခုသည် စားသုံးသူများ၏ ချေးငွေ ဆုံးဖြတ်ချက်များကို ထောက်ပံ့ရန် AI စနစ် အသုံးပြုပါက ရလဒ်များကို စစ်ဆေးပြီး မော်ဒယ်၏ အကြံပေးမှုများအပေါ် ဘယ်ဒေတာများ သက်ရောက်သည်ဆိုတာ နားလည်ရန် အရေးကြီးပါသည်။ အစိုးရများသည် စက်မှုလုပ်ငန်းအမျိုးမျိုးတွင် AI ကို စည်းကမ်းသည်မှာ စတင်ပြီး၊ ဒေတာ သိပ္ပံပညာရှင်များနှင့် အဖွဲ့အစည်းများသည် မလိုလားအပ်သော ရလဒ်ရှိသည်မှာ AI စနစ်သည် စည်းကမ်းချက်များနှင့် ကိုက်ညီနေခြင်းကို ရှင်းပြနိုင်ရမည်။
-### အပါဝင်မှု
+> [🎥 ဤနေရာ၌ ဗီဒီယိုကို နှိပ်ရန်: AI တွင် ထွက်ပေါ်မှုပြတ်သားမှု](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-AI စနစ်တွေဟာ လူတိုင်းကို ပါဝင်စေပြီး အခွင့်အရေးပေးနိုင်ဖို့ ဒီဇိုင်းဆွဲရမယ်။ AI စနစ်တွေကို ဒီဇိုင်းဆွဲပြီး အကောင်အထည်ဖော်တဲ့အခါ ဒေတာသိပ္ပံပညာရှင်တွေနဲ့ AI တီထွင်သူတွေဟာ စနစ်ထဲမှာ လူတွေကို မတော်တဆ ခွဲခြားမထားဖို့ အတားအဆီးတွေကို သတ်မှတ်ပြီး ဖြေရှင်းရမယ်။
+- AI စနစ်များသည် ရှုပ်ထွေးမှုကြောင့် ၎င်းတို့ ဘယ်လို လုပ်ဆောင်ကြသည်ကို နားလည်ရန် နှင့် ရလဒ်များ ငြိမ်းချမ်းစွာ ဖတ်ရှုရန် ခက်ခဲသည်။
+- ဒီ နားလည်မှုကမဲ့မှုသည် ဤစနစ်များကို မည်သို့ စီမံခန့်ခွဲ၊ လည်ပတ်၊ မှတ်တမ်းတင်သည်ကို သက်ရောက်စေသည်။
+- ပိုမိုအရေးကြီးသည်မှာ ထိုနားလည်မှုမရှိခြင်းသည် ဤစနစ်များမှ ထုတ်လွှင့် ရလဒ်များ အသုံးပြုခြင်းမှ ဆုံးဖြတ်ချက်များကို သက်ရောက်စေသည်။
-ဥပမာအားဖြင့် ကမ္ဘာပေါ်မှာ မသန်စွမ်းသူ ၁ ဘီလီယံရှိပါတယ်။ AI ရဲ့ တိုးတက်မှုကြောင့် သူတို့ဟာ နေ့စဉ်ဘဝမှာ အချက်အလက်နဲ့ အခွင့်အရေးတွေကို ပိုမိုလွယ်ကူစွာ ရရှိနိုင်ပါတယ်။
+### တာဝန်ခံမှု
+
+AI စနစ်များကို ဒီဇိုင်းဆွဲပြီး ဖြန့်ချိသည့် လူများသည် ၎င်းတို့သည် စနစ် မည်သည့်နည်းဖြင့် လည်ပတ်သည်ကို တာဝန်ယူရမည်။ မျက်နှာဖုံးစနစ်ကဲ့သို့ သံသရာများတွင် တာဝန်ယူမှုသည် အလွန်အရေးကြီးသည်။ မကြာသေးမီက မျက်နှာဖုံးစနစ် နည်းပညာအတွက် တိုးတက်လိုစိတ်ရှာဖွေရေး အပေါ် လုံခြုံမှု ဆရာများနှင့် တရားမျှတမှုကို တောင်းဆိုမှုများ မြင့်တက်လာသည်။ ဥပမာ၊ ဒဏ္ဍာရီဆုံးရှားနေသော ကလေးများရှာဖွေရေးတွင် ဥပေရာဏ်များ အကြီးစား အားထားသည့် နည်းပညာ ဖြစ်ပေမယ့် အစိုးရတချို့၌ မြို့ပြကြီးများကို ဆက်တိုက်ကြည့်ရှုမှု ခွင့်ပြု၍ နိုင်ငံသားများ၏ အခြေခံလွတ်လပ်ခွင့်များကို ထိခိုက်စေနိုင်သည်။ ဒါကြောင့် ဒေတာ သိပ္ပံပညာရှင်များနှင့် အဖွဲ့အစည်းများသည် ၎င်းတို့ AI စနစ်ရဲ့ လူမှု သို့ နယ်မြေ ပေါ်တွင် ထိရောက်မှုအတွက် တာဝန်ယူရပါမည်။
-> [🎥 ဗီဒီယိုကြည့်ရန်](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
+[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft's Approach to Responsible AI")
-### လုံခြုံမှုနှင့် ကိုယ်ရေးအချက်အလက်
+> 🎥 အထက်ပါ ဓာတ်ပုံကို နှိပ်ကာ မျက်နှာဖုံး စနစ်ကတဆင့် စ နေသည့် သတိပေးချက် ဗီဒီယိုကို ကြည့်ရှုပါ
-AI စနစ်တွေဟာ လုံခြုံပြီး လူတွေရဲ့ ကိုယ်ရေးအချက်အလက်ကို လေးစားရမယ်။ AI စနစ်တွေကို ယုံကြည်မှုရှိဖို့ လူတွေရဲ့ ကိုယ်ရေးအချက်အလက် သို့မဟုတ် ဘဝကို အန္တရာယ်မဖြစ်စေရမယ်။
+နောက်ဆုံးတွင် ကျွန်တော်တို့ မျိုးဆက်အတွက် အကြီးမားဆုံး မေးခွန်းများထဲမှာ၊ ကွန်ပျူတာများကို လူတများအား တာဝန်ရှိစွာပြီး မြင်သာစေရန် နည်းလမ်းကို ဘယ်လိုသေချာစေရန်နှင့် ကွန်ပျူတာ ဒီဇိုင်နာတွေကလူတိုင်းအား တာဝန်ရှိစွာ ကောင်းကင်ဆောင်ရွက်ခံရမည်ကို ဘယ်လို သေချာအောင် လုပ်မလဲ ဆိုတာ ဖြစ်ပါတယ်။
-> [🎥 ဗီဒီယိုကြည့်ရန်](https://www.microsoft.com/videoplayer/embed/RE4voJF)
+## သက်ရောက်မှု ချေးရန် လေ့လာခြင်း
-### တာဝန်ရှိမှု
+စက့်မှတ်လေ့လာမှု မော်ဒယ်ကို သင်ကြားခိုင်းရန် မပြုမီ AI စနစ်၏ ရည်ရွယ်ချက်၊ အသုံးချမည့် နေရာ၊ ၎င်းနှင့် ဆက်သွယ်မည့် လူများအား နားလည်ရန် သက်ရောက်မှု လေ့လာမှု ပြုလုပ်ခြင်း လိုအပ်သည်။ ဤအချက်များသည် စနစ်ကို စစ်ဆေးသူများ သို့မဟုတ် စမ်းသပ်သူများအား သတိထားရမည့် အချက်များနှင့် ဖြစ်ပေါ်နိုင်သော အန္တရာယ်များအပေါ် ဆုံးဖြတ်ချက်ပြုရမှုအတွက် အထောက်အကူဖြစ်သည်။
-AI စနစ်တွေကို ဒီဇိုင်းဆွဲပြီး တည်ဆောက်သူတွေဟာ သူတို့ရဲ့ စနစ်တွေ ဘယ်လိုအလုပ်လုပ်တယ်ဆိုတာအတွက် တာဝန်ရှိရမယ်။
+အောက်ပါအချက်များသည် သက်ရောက်မှု လေ့လာမှု ပြုလုပ်သည့်အခါ အာရုံစိုက်ရမည့် နေရာများ ဖြစ်သည်။
-[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "AI နဲ့ မျက်နှာသိရှိမှုနည်းပညာရဲ့ အန္တရာယ်")
+* **ပုဂ္ဂိုလ်ရေး ဆိုးကျိုး သက်ရောက်မှု**။ စနစ်၏ လုပ်ဆောင်မှုကို ထိခိုက်စေနိုင်သော ကန့်သတ်ချက်များ၊ လိုအပ်ချက်များ၊ မပံ့ပိုးသည့် အသုံးပြုမှုများ သို့မဟုတ် သတိထားရမည့် ကန့်သတ်ချက်များရှိရှိမရှိ လူများအတွက် ဆိုးကျိုးဖြစ်စေခြင်း ရှောင်ကြဉ်ရန် အရေးကြီးသည်။
+* **ဒေတာ လိုအပ်ချက်များ**။ စနစ်သည် ဒေတာကို မည်ကဲ့သို့၊ မည်နေရာတွင် အသုံးပြုမည်ကို နားလည်ခြင်းဖြင့် စနစ် စစ်ဆေးသူများသည် ဒေတာ အကောက်ချက်ထုတ်များ (ဥပမာ၊ GDPR သို့မဟုတ် HIPAA ဒေတာ စည်းမျဉ်းများ) ကို သတိပြုရန် ဝါသနာပါစေရန် အထောက်အကူပြုသည်။ ထို့အပြင် လေ့လာသင်ကြားရာတွင် ဒေတာ အရင်းအမြစ် သို့မဟုတ် ပမာဏ လိုအပ်ချက်များ တိတိကျကျ သေချာစေရန် စိစစ်နိုင်သည်။
+* **သက်ရောက်မှု အကျဉ်း**။ စနစ်အသုံးပြုမှုကြောင့် ဖြစ်ပေါ်နိုင်သော ဆိုးကျိုးများ စာရင်းစုဆောင်းခြင်း။ စက့်မှတ်လေ့လာမှု ဘဝစဉ်လေးတွင် ထို ဘေးအန္တရာယ်များကို လျှော့ချရန် သို့ရင်ဆိုင်ရန် စစ်တမ်းသုံးသပ်မှု ပြုလုပ်သည်။
+* **ဦးတည်ချက်များ** (principles) ခြောက်ချက် ပမာဏရောက်သည်ဖို့ တိုင်းတာခြင်း၊ နားလည်မှုရှိခြင်းနှင့် ပြဿနာများ အား စူးစမ်းစစ်ဆေးခြင်း။
-> 🎥 ဗီဒီယိုကြည့်ရန်: မျက်နှာသိရှိမှုနည်းပညာရဲ့ အန္တရာယ်
-## သက်ရောက်မှုအကဲဖြတ်မှု
+## တာဝန်ရှိသော AI ဖြင့် အမှားရှာဖွေရေး
-မော်ဒယ်တစ်ခုကို သင်ကြားမတိုင်မီ AI စနစ်ရဲ့ ရည်ရွယ်ချက်၊ သုံးစွဲမည့်နေရာ၊ သက်ဆိုင်သူတွေကို နားလည်ဖို့ အရေးကြီးပါတယ်။
+ဆော့ဖ်ဝဲလ် မှားယွင်းချက်များရှာဖွေရေးလိုသလို AI စနစ်မှားယွင်းချက်တွေ ရှာဖွေရေးလည်း လိုအပ်ပါတယ်။ မော်ဒယ်သည် မျှော်မှန်းထားသလို မလုပ်နိုင်ခြင်း ဆိုင်ရာ အကြောင်းအမျိုးမျိုး ရှိနိုင်ပြီး အများအားဖြင့် စံသတ်မှတ်ချက်များသာ အသုံးပြုထား သောကြောင့် တာဝန်ရှိသော AI နိယာမများ ကျော်လွှားမှုများကို ရှာဖွေရန် ခက်ခဲပါသည်။ ထို့ပြင် စက့်မှတ်လေ့လာမှု မော်ဒယ်သည် ရှင်းလင်းမှုမရှိသော Black Box ဖြစ်၍ ဤမော်ဒယ် ထွက်ရှိသော ရလဒ်၏ အကြောင်းရင်းကို နားလည်ရန် မလွယ်ကူ သာမန်အား AI စနစ် အမှား ပြုလွန်းသောအခါ ရှင်းပြရန် စိတ်ပူစရာ ဖြစ်တတ်သည်။ ဒီသင်ခန်းစာနောက်ပိုင်းတွင် တာဝန်ရှိသော AI dashboard ကို အသုံးပြုပြီး AI စနစ် မတော်တဆ ဖြစ်ပေါ်မှုများရှာဖွေနိုင်မည် ဖြစ်သည်။ Dashboard သည် ဒေတာ သိပ္ပံပညာရှင်များနှင့် AI ဖွံ့ဖြိုးသူများအတွက် အထွာကျယ်သောကိရိယာ ပေးစွမ်းသည်။
-## တာဝန်ရှိသော AI ဖြင့် Debugging
+* **အမှားခွဲခြမ်းစိတ်ဖြာခြင်း**။ စနစ်၏ တရားမျှတမှု သို့ ယုံကြည်စိတ်ချရမှုကို ထိခိုက်စေသော မော်ဒယ်၏ အမှားဖြန့်ဖြူးမှုကို ရှာဖွေရန်။
+* **မော်ဒယ် အကျဉ်းချုပ်**။ ဒေတာ အုပ်စုများပေါ် မော်ဒယ် ဆောင်ရွက်မှုအကြား ကွာခြားမှု ရှာဖွေရန်။
+* **ဒေတာ ခွဲခြမ်းစိတ်ဖြာခြင်း**။ ဒေတာ ဖော်ပြချက် နားလည်ပြီး ဒေတာအတွင်း တရားမျှတမှု၊ ပါဝင်မှုနှင့် ယုံကြည်စိတ်ချရမှု ပြဿနာများ ဖြစ်ပေါ်ခြင်း ရှိမရှိ စစ်ဆေးရန်။
+* **မော်ဒယ် ရှင်းလင်းနိုင်မှု**။ မော်ဒယ် ခန့်မှန်းချက်တို့ကို ဘယ်အရာများ ထိခိုက်သက်ရောက်စေသည်နားလည်ရန်။ ၎င်းသည် ထွက်ပေါ်မှုပြတ်သားမှုနှင့် တာဝန်ယူမှုအတွက် အရေးကြီးသည်။
-AI စနစ်တွေကို Debugging လုပ်တဲ့အခါမှာ တာဝန်ရှိသော AI မူဝါဒတွေကို ထည့်သွင်းစဉ်းစားရမယ်။
## 🚀 စိန်ခေါ်မှု
+
+ဆိုးကျိုးများ မဖြစ်ပေါ်စေရန် အောက်ပါအချက်များ ပြုလုပ်သင့်သည်။
-နစ်နာမှုတွေ မဖြစ်ပေါ်စေရန် -
+- စနစ်ဖန်တီးသူများအတွင်း သဘာဝပိုင်းနှင့် အမြင်ပိုင်း မျိုးစုံခွဲဝေပေးရန်
+- လူ့အသိုင်းအဝိုင်း မျိုးစုံ ကိုယ်စားပြုသော ဒေတာများတွင် ရင်းနှီးမြှုပ်နှံရန်
+- တာဝန်ရှိသော AI လုပ်ငန်းစဉ်တွင် ရှာဖွေရေးနှင့် ပြင်ဆင်ရေးနည်းလမ်းများကို တိုးတက်စေရန်
-- အလုပ်လုပ်သူတွေမှာ အမျိုးမျိုးသော နောက်ခံနဲ့ အမြင်တွေ ပါဝင်စေရမယ်။
-- လူမှုအဖွဲ့အစည်းရဲ့ အမျိုးမျိုးသော အချက်အလက်တွေကို အထောက်အပံ့ပေးမယ့် ဒေတာတွေကို ရင်းနှီးမြှုပ်နှံရမယ်။
-- စက်မှုသင်ယူမှု လုပ်ငန်းစဉ်တစ်လျှောက်မှာ တာဝန်ရှိသော AI ကို ရှာဖွေပြီး ပြင်ဆင်နိုင်တဲ့ နည်းလမ်းတွေ တိုးတက်အောင်လုပ်ရမယ်။
+မော်ဒယ် တည်ဆောက်ခြင်းနှင့် အသုံးပြုမှုများတွင် မယုံကြည်ခြင်း သက်သေပြသော ကိစ္စများကို စိတ်ထဲတွင် ထားပါ။ ဘယ်အရာတွေကို ထပ်မံစဉ်းစားသင့်မလဲ?
-## [သင်ခန်းစာပြီးနောက် စစ်ဆေးမေးခွန်း](https://ff-quizzes.netlify.app/en/ml/)
+## [သင်ခန်းစာပြီးသည့်အခါ စစ်ဆေးမေးခွန်း](https://ff-quizzes.netlify.app/en/ml/)
-## ပြန်လည်သုံးသပ်ခြင်းနှင့် ကိုယ်တိုင်လေ့လာခြင်း
+## ပြန်လည်သုံးသပ်မှုနှင့် ကိုယ်တိုင်လေ့လာမှု
+
-ဒီသင်ခန်းစာမှာ သင်သည် စက်မှုသင်ယူမှုမှာ တရားမျှတမှုနဲ့ မတရားမှုဆိုင်ရာ အခြေခံအယူအဆတွေကို လေ့လာသိရှိခဲ့ပါတယ်။
-ဒီ workshop ကို ကြည့်ပြီး အကြောင်းအရာများကို ပိုမိုနက်ရှိုင်းစွာ လေ့လာပါ:
+ဤသင်ခန်းစာ၌ သင်သည် စက်သင်ယူမှုတွင် မှန်ကန်မှုနှင့် မမှန်ကန်မှု အယူအဆတို့၏ အခြေခံအချက်များကို လေ့လာသင်ယူခဲ့ပါသည်။
+
+ဤအကြောင်းအရာများအား ပိုမိုနက်ရှိုင်းစွာ နားလည်ရန် မိမိဆွေးနွေးပွဲကို ကြည့်ရှုပါ။
-- တာဝန်ရှိသော AI ရှာဖွေမှု: အခြေခံသဘောတရားများကို လက်တွေ့ကျအောင် ပြုလုပ်ခြင်း - Besmira Nushi, Mehrnoosh Sameki နှင့် Amit Sharma
+- တာဝန်ထမ်းဆောင်နိုင်သော AI ရှာဖွေရေး: Besmira Nushi, Mehrnoosh Sameki နှင့် Amit Sharma တို့မှ မူဝါဒများကို လက်တွေ့အသုံးချခြင်း
-[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: တာဝန်ရှိသော AI ဖန်တီးရန်အတွက် အခမဲ့ framework")
+[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI")
-> 🎥 အထက်ပါပုံကို နှိပ်ပြီး ဗီဒီယိုကြည့်ပါ: RAI Toolbox: တာဝန်ရှိသော AI ဖန်တီးရန်အတွက် အခမဲ့ framework - Besmira Nushi, Mehrnoosh Sameki နှင့် Amit Sharma
+> 🎥 ဤရုပ်ပုံအား နှိပ်၍ ဗွီဒီယိုကို ကြည့်ရှုနိုင်ပါသည် - RAI Toolbox: Besmira Nushi၊ Mehrnoosh Sameki နှင့် Amit Sharma တို့က တာဝန်ရှိသော AI ဖန်တီးရေးအတွက် open-source ကန့်သတ်တမ်းများ၏ ဖွဲ့စည်းပုံ
-ထို့အပြင် ဖတ်ရှုရန်:
+ထပ်မံဖတ်ရှုရန် -
-- Microsoft ရဲ့ RAI အရင်းအမြစ်စင်တာ: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
+- 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/)
+- 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)
+- [Responsible AI Toolbox GitHub သိမ်းဆည်းတိုက်](https://github.com/microsoft/responsible-ai-toolbox)
-Azure Machine Learning ရဲ့ တရားမျှတမှုကို အာမခံရန် tools များအကြောင်း ဖတ်ရှုပါ:
+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)
+[RAI Toolbox စူးစမ်းလေ့လာရန်](assignment.md)
---
-**အကြောင်းကြားချက်**:
-ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှုအတွက် ကြိုးစားနေသော်လည်း၊ အလိုအလျောက် ဘာသာပြန်မှုများတွင် အမှားများ သို့မဟုတ် မတိကျမှုများ ပါဝင်နိုင်သည်ကို သတိပြုပါ။ မူရင်းစာရွက်စာတမ်းကို ၎င်း၏ မူရင်းဘာသာစကားဖြင့် အာဏာတရားရှိသော အရင်းအမြစ်အဖြစ် သတ်မှတ်သင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူ့ဘာသာပြန်ပညာရှင်များမှ ပရော်ဖက်ရှင်နယ် ဘာသာပြန်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်မှုကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော အလွဲအလွတ်များ သို့မဟုတ် အနားလွဲမှုများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။
\ No newline at end of file
+
+**ပြောကြားချက်**
+ဤစာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးပမ်းနေသော်လည်း၊ စက်ကိရိယာဘာသာပြန်ခြင်းများတွင် အမှားများ သို့မဟုတ် မှားယွင်းချက်များ ပါဝင်နိုင်ကြောင်း သတိပြုပါရန် လိုအပ်ပါသည်။ မူလစာတမ်းကို မူရင်းဘာသာဖြင့်သာ ယုံကြည်စိတ်ချရသော အချက်အလက်အဖြစ် သတ်မှတ်သင့်သည်။ အရေးကြီးသည့် သတင်းအချက်အလက်များအတွက် ပရော်ဖက်ရှင်နယ် လူသားဘာသာပြန်သူဝန်ဆောင်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်ချက်ကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော နားလည်မှုကွာခြားမှုများ သို့မဟုတ် မမှန်ကန်သော အသုံးပြုမှုများအတွက် ကျွန်ုပ်တို့ တာဝန်မခံပါ။
+
\ No newline at end of file
diff --git a/translations/my/2-Regression/1-Tools/README.md b/translations/my/2-Regression/1-Tools/README.md
index dabbb15ee..7a3c8c56e 100644
--- a/translations/my/2-Regression/1-Tools/README.md
+++ b/translations/my/2-Regression/1-Tools/README.md
@@ -1,120 +1,121 @@
-# Python နှင့် Scikit-learn ကို အသုံးပြု၍ Regression Models တည်ဆောက်ခြင်း
+# Python နှင့် Scikit-learn ဖြင့် regression မော်ဒယ်များ စတင်ခြင်း
-
+
-> Sketchnote by [Tomomi Imura](https://www.twitter.com/girlie_mac)
+> Sketchnote ကို [Tomomi Imura](https://www.twitter.com/girlie_mac) ရေးသားသည်
-## [Pre-lecture quiz](https://ff-quizzes.netlify.app/en/ml/)
+## [မဟာသင်ကြားမှု မတိုင်မီ စစ်တမ်း](https://ff-quizzes.netlify.app/en/ml/)
-> ### [ဒီသင်ခန်းစာကို R မှာလည်းရနိုင်ပါတယ်!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
+> ### [ဒီသင်ခန်းစာကို R မှာလည်း ရနိုင်ပါတယ်!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
-## အကျဉ်းချုပ်
+## ကိုယ်ပွားပြောကြားချက်
-ဒီသင်ခန်းစာလေးများမှာ Regression Models တည်ဆောက်ပုံကို လေ့လာနိုင်ပါမယ်။ Regression Models သည် ဘာအတွက်အသုံးဝင်သလဲဆိုတာကို မကြာမီဆွေးနွေးသွားပါမယ်။ သို့သော် စတင်လုပ်ဆောင်ရန်အတွက် သင့်စက်မှာ လိုအပ်သော Tools များကို အရင်ဆုံး ပြင်ဆင်ထားဖို့ လိုအပ်ပါတယ်။
+ဒီသင်ခန်းစာ ၄ ခုတွင် regression မော်ဒယ်များ ဖန်တီးနည်းကို ရှာဖွေနိုင်မည်။ ၎င်းတို့ ဘာကြောင့်သုံးသည့်အကြောင်းကို မကြာမီတင်ပြပါမည်။ သင် တစုံတရာမလုပ်မီ မိမိတွင် လိုအပ်သောကိရိယာများရှိပြီး စတင်နိုင်ကြောင်း သေချာပါစေ။
-ဒီသင်ခန်းစာမှာ သင်လေ့လာနိုင်မယ့်အရာများမှာ -
+ဒီသင်ခန်းစာတွင် သင် သင်ယူရမည့်အရာများမှာ -
-- သင့်ကွန်ပျူတာကို Local Machine Learning Tasks အတွက် ပြင်ဆင်ခြင်း။
-- Jupyter Notebooks ကို အသုံးပြုခြင်း။
-- Scikit-learn ကို အသုံးပြုခြင်း (installation အပါအဝင်)။
-- Linear Regression ကို လက်တွေ့လုပ်ဆောင်ခြင်း။
+- ဒေသိယ စက်ပညာဆိုင်ရာ တာဝန်များအတွက် သင့်ကွန်ပြူတာကို တပ်ဆင်ခြင်း။
+- Jupyter Notebook များနှင့် လုပ်ကိုင်ခြင်း။
+- Scikit-learn ကို သုံးခြင်း၊ ထည့်သွင်းတပ်ဆင်ခြင်းအပါအဝင်။
+- လက်တွေ့လေ့ကျင့်မှုဖြင့် လိုင်းနေရေး regression ကို လေ့လာခြင်း။
-## Installations နှင့် Configurations
+## ထည့်သွင်းခြင်းများ နှင့် ပျိုးထောင်မှုများ
-[](https://youtu.be/-DfeD2k2Kj0 "ML for beginners - Machine Learning Models တည်ဆောက်ရန် Tools များကို ပြင်ဆင်ခြင်း")
+[](https://youtu.be/-DfeD2k2Kj0 "ML စတင်သင်ယူသူများအတွက် - မောင်းနှင်ရန်အတွက် လိုအပ်သောကိရိယာများ စတင်တပ်ဆင်ခြင်း")
-> 🎥 အထက်ပါပုံကို Click လုပ်ပြီး ML အတွက် သင့်ကွန်ပျူတာကို Configure လုပ်ပုံကို ကြည့်ပါ။
+> 🎥 ML အတွက် ကွန်ပြူတာတပ်ဆင်ခြင်း လုပ်ငန်းစဉ်တစ်ခုကို အနည်းငယ် ဗီဒီယိုအဖြစ် မြင်လိုပါက ပုံကို နှိပ်ပါ။
-1. **Python ကို Install လုပ်ပါ**။ သင့်ကွန်ပျူတာမှာ [Python](https://www.python.org/downloads/) ကို Install လုပ်ထားရှိရပါမယ်။ Python ကို Data Science နှင့် Machine Learning Tasks များအတွက် အသုံးပြုပါမယ်။ အများစုသော ကွန်ပျူတာစနစ်များမှာ Python ကို အရင်ကတည်းက Install လုပ်ထားပြီးဖြစ်ပါတယ်။ [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) များလည်း ရနိုင်ပြီး၊ အချို့သောအသုံးပြုသူများအတွက် Setup ကို ပိုမိုလွယ်ကူစေပါတယ်။
+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 ကို အသုံးပြုခြင်းမှာ Version များကွဲပြားမှုရှိနိုင်ပါတယ်။ အချို့သော Tasks များအတွက် Version တစ်ခုလိုအပ်ပြီး၊ အခြား Tasks များအတွက် Version တစ်ခုလိုအပ်နိုင်ပါတယ်။ ဒီအကြောင်းကြောင့် [Virtual Environment](https://docs.python.org/3/library/venv.html) တွင် အလုပ်လုပ်ခြင်းသည် အကျိုးရှိပါတယ်။
+ သို့သော် Python အသုံးပြုမှုအချို့တွင် ဆော့ဖ်ဝဲ version တစ်ခုနဲ့အသုံးပြုရန်လိုအပ်ပြီး၊ အခြားအသုံးပြုမှုများတွင် အခြား version လိုအပ်နိုင်သဖြင့် [virtual environment](https://docs.python.org/3/library/venv.html) တစ်ခုအတွင်း၌ လုပ်ဆောင်ခြင်း အထောက်အကူဖြစ်သည်။
-2. **Visual Studio Code ကို Install လုပ်ပါ**။ သင့်ကွန်ပျူတာမှာ Visual Studio Code ကို Install လုပ်ထားရှိရပါမယ်။ [Visual Studio Code](https://code.visualstudio.com/) ကို Install လုပ်ပုံအဆင့်ဆင့်ကို လိုက်နာပါ။ ဒီသင်ခန်းစာမှာ Python ကို Visual Studio Code မှာ အသုံးပြုမယ်၊ [Visual Studio Code ကို Python Development အတွက် Configure လုပ်ပုံ](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) ကိုလည်း လေ့လာပါ။
+2. **Visual Studio Code ထည့်သွင်းပါ**။ သင့်တွင် Visual Studio Code ထည့်သွင်းထားမှသာ သေချာပါစေနိုင်သည်။ [Visual Studio Code ထည့်သွင်းခြင်း](https://code.visualstudio.com/) အတွက် သင့်ဝက်ဘ်ဆိုဒ်မှ လမ်းညွှန်ချက်များကို ကျင့်သုံးပါ။ ဒီသင်ခန်းစာတွင် Visual Studio Code ဖြင့် Python ကို အသုံးပြုမည် ဖြစ်သောကြောင့် [Visual Studio Code ကို Python ဖန်တီးမှုအတွက် ပုံစံချထားခြင်း](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) များကို လေ့လာပါ။
+ > [Learn modules များ](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) ကို တစ်ခုလုံး လေ့လာခြင်းဖြင့် Python ကို သက်သာစွာ သဘောပေါက်စေပါ။
>
- > [](https://youtu.be/yyQM70vi7V8 "Visual Studio Code မှာ Python ကို Setup လုပ်ခြင်း")
+ > [](https://youtu.be/yyQM70vi7V8 "Visual Studio Code ဖြင့် Python ပြင်ဆင်ခြင်း")
>
- > 🎥 အထက်ပါပုံကို Click လုပ်ပြီး VS Code မှာ Python ကို အသုံးပြုပုံကို ကြည့်ပါ။
+ > 🎥 VS Code အတွင်း Python အသုံးပြုနည်းကို ဗီဒီယိုအဖြစ် ကြည့်ရှုရန် ပုံကို နှိပ်ပါ။
-3. **Scikit-learn ကို Install လုပ်ပါ**။ [ဒီအညွှန်းများ](https://scikit-learn.org/stable/install.html) ကို လိုက်နာပြီး Install လုပ်ပါ။ Python 3 ကို အသုံးပြုရမယ်ဆိုတာ သေချာစေဖို့ Virtual Environment ကို အသုံးပြုရန် အကြံပြုပါတယ်။ M1 Mac မှာ Library ကို Install လုပ်ရင် အထူးအညွှန်းများရှိပါတယ်။
+3. **Scikit-learn ထည့်သွင်းပါ**။ ထည့်သွင်းနည်းကို [ဤနေရာတွင်](https://scikit-learn.org/stable/install.html) လိုက်နာပါ။ Python 3 ကို သုံးမည့်အတွက် virtual environment အသုံးပြုရန် အကြံပြုပါသည်။ M1 Mac တွင် ထည့်သွင်းရာတွင် အထူးနည်းလမ်းများ ရှိသည်ကို ဤစာမျက်နှာတွင် ဖော်ပြထားပါသည်။
-4. **Jupyter Notebook ကို Install လုပ်ပါ**။ [Jupyter package](https://pypi.org/project/jupyter/) ကို Install လုပ်ပါ။
+1. **Jupyter Notebook ထည့်သွင်းပါ**။ [Jupyter package ထည့်သွင်းရန်](https://pypi.org/project/jupyter/) လိုအပ်ပါသည်။
-## သင့် ML Authoring Environment
+## သင့် ML ဖန်တီးရေး ပတ်ဝန်းကျင်
-သင် **notebooks** ကို အသုံးပြုပြီး Python Code တွေကို Develop လုပ်ပြီး Machine Learning Models တွေကို တည်ဆောက်ပါမယ်။ ဒီအမျိုးအစားဖိုင်တွေဟာ Data Scientists တွေအတွက် အများဆုံးအသုံးပြုတဲ့ Tools ဖြစ်ပြီး `.ipynb` extension နဲ့ ဖိုင်တွေကို မှတ်သားနိုင်ပါတယ်။
+သင့် Python ကုဒ်ဖန်တီးရေးနှင့် စက်သင်ယူမော်ဒယ်များ ဖန်တီးရန် **notebooks** ကို သုံးမည်ဖြစ်သည်။ ဒီဖိုင် အမျိုးအစားသည် ဒေတာသိပ္ပံပညာရှင်များ အသုံးပြု့လေ့ရှိသော ကိရိယာဖြစ်ပြီး `.ipynb` ဆိုသည့် ထပ်ဆင့်သင်္ကေတဖြင့် သိရှိနိုင်သည်။
-Notebooks တွေဟာ Interactive Environment ဖြစ်ပြီး Developer တွေကို Code ရေးခြင်း၊ Notes ထည့်ခြင်း၊ Documentation ရေးခြင်း စတဲ့ အလုပ်တွေကို လုပ်နိုင်စေပါတယ်။ အထူးသဖြင့် Experimental သို့မဟုတ် Research-oriented Projects တွေအတွက် အထောက်အကူဖြစ်ပါတယ်။
+Notebooks သည် အပြန်အလှန်လုပ်ဆောင်နိုင်သည့် ပတ်ဝန်းကျင်တစ်ခုဖြစ်ပြီး၊ ဖန်တီးသူအနေဖြင့် ကုဒ်ရေးခြင်း၊ မှတ်ချက်ထည့်ခြင်းနှင့် ရေးသားမှုများ ဖော်ပြနိုင်ခြင်းကြောင့် သုတေသန သို့မဟုတ် စမ်းသပ်မှုအခြေပြု စီမံကိန်းများတွင် အထောက်အကူဖြစ်ပေးသည်။
-[](https://youtu.be/7E-jC8FLA2E "ML for beginners - Jupyter Notebooks ကို Setup လုပ်ပြီး Regression Models တည်ဆောက်ခြင်း")
+[](https://youtu.be/7E-jC8FLA2E "ML စတင်သင်ယူသူများ - Jupyter Notebooks တပ်ဆင်ပြီး regression မော်ဒယ်များ စတင်ဆောက်ရန်")
-> 🎥 အထက်ပါပုံကို Click လုပ်ပြီး ဒီအလုပ်ကို လုပ်ဆောင်ပုံကို ကြည့်ပါ။
+> 🎥 ဒီလေ့ကျင့်ခန်းကို ဗီဒီယိုအနုပညာပိုင်းဖြစ်စွာ လေ့လာရန် ပုံကို နှိပ်ပါ။
-### လက်တွေ့လုပ်ဆောင်မှု - Notebook ကို အသုံးပြုခြင်း
+### လေ့ကျင့်ခန်း - notebook တစ်ခုဖြင့် လုပ်ကိုင်ခြင်း
-ဒီ Folder မှာ _notebook.ipynb_ ဖိုင်ကို တွေ့နိုင်ပါမယ်။
+ဒီဖိုလ်ဒါတွင် _notebook.ipynb_ ဖိုင်ကို တွေ့ရှိမည်ဖြစ်သည်။
-1. _notebook.ipynb_ ကို Visual Studio Code မှာ ဖွင့်ပါ။
+1. Visual Studio Code ဖြင့် _notebook.ipynb_ ဖိုင်ကိုဖွင့်ပါ။
- Jupyter Server တစ်ခု Python 3+ နဲ့ စတင်ပါမယ်။ Notebook မှာ `run` လို့ရတဲ့ Code Block တွေကို တွေ့နိုင်ပါမယ်။ Code Block တစ်ခုကို Run လုပ်ဖို့ Play Button ပုံစံ Icon ကို ရွေးပါ။
+ Jupyter server နှင့် Python 3+ စတင်ပါမည်။ notebook တွင် `run` လို့ရစေရန် ကုဒ်အစိတ်အပိုင်းများ ရှိသည်။ ၎င်းများကို play ခလောက်ကဲ့သို့ မြင်သာသော အိုင်ကွန်ကို ရွေး၍ ဖျော်ဖြေနိုင်သည်။
-2. `md` icon ကို ရွေးပြီး Markdown အနည်းငယ်ထည့်ပါ၊ **# Welcome to your notebook** ဆိုတဲ့ စာသားကို ထည့်ပါ။
+1. `md` အိုင်ကွန်ကို ရွေးပြီး markdown တစ်ခုပြုလုပ်ပါ၊ အထက်ပါ စာသားတစ်ခု **# Welcome to your notebook** ကို ထည့်ပါ။
- နောက်တစ်ဆင့်မှာ Python Code ကို ထည့်ပါ။
+ ပို၍ Python ကုဒ်တစ်ခုထည့်ပါ။
-3. Code Block မှာ **print('hello notebook')** ကို ရိုက်ပါ။
-4. Arrow ကို ရွေးပြီး Code ကို Run လုပ်ပါ။
+1. ကုဒ်အပိုင်းတွင် **print('hello notebook')** ရိုက်ထည့်ပါ။
+1. ကုဒ်အား run ခလုတ်ကို နှိပ်ပါ။
- Printed Statement ကို တွေ့ရပါမယ် -
+ ထုတ်ပေးထားသော စကားစုကို မြင်ရမည်ဖြစ်သည်။
```output
hello notebook
```
-
+
-သင့် Code ကို Comments တွေနဲ့ ပေါင်းစပ်ပြီး Notebook ကို Self-document လုပ်နိုင်ပါတယ်။
+သင့်ကုဒ်နှင့် မှတ်ချက်များကို notebook တွင် ထည့်သွင်းရေးသားနိုင်သည်။
-✅ Web Developer ရဲ့ အလုပ်လုပ်ပုံနဲ့ Data Scientist ရဲ့ အလုပ်လုပ်ပုံက ဘယ်လိုကွာခြားနေလဲဆိုတာ အနည်းငယ်တွေးကြည့်ပါ။
+✅ ဝဘ်ဆာဗာဖန်တီးသူ တစ်ယောက်၏ လုပ်ငန်းပတ်ဝန်းကျင်နှင့် ဒေတာသိပ္ပံပညာရှင်တစ်ဦးရဲ့ လုပ်ငန်းပတ်ဝန်းကျင် ဘာကွာခြားမှုများရှိသည်ကို တစ်မိနစ်စဉ်းစားကြည့်ပါ။
-## Scikit-learn ကို အသုံးပြုခြင်း
+## Scikit-learn ဖြင့် အလုပ်လုပ်နိုင်ရန်
-Python ကို Local Environment မှာ Setup လုပ်ပြီး၊ Jupyter Notebooks ကို အသုံးပြုရင်း ကျွမ်းကျင်လာပြီးနောက်၊ Scikit-learn ကိုလည်း ကျွမ်းကျင်စေဖို့ လိုအပ်ပါတယ်။ Scikit-learn ကို `sci` (science) လို့ အသံထွက်ပါ။ Scikit-learn မှာ ML Tasks တွေကို လုပ်ဆောင်ဖို့ [အကျယ်အဝန်း API](https://scikit-learn.org/stable/modules/classes.html#api-ref) ရှိပါတယ်။
+Python ကို ဒေသိယပတ်ဝန်းကျင်တွင် စတင်တပ်ဆင်ပြီး Jupyter Notebooks နှင့် သဘောတူလာပါက Scikit-learn ကိုလည်း သဘောကျကျ သုံးစွဲနိုင်ရအောင် ကြိုးစားကြရအောင် (သတ်မှတ်ပုံ `sci` လိုဖတ်ပါ၊ `science` လိုသည်။) Scikit-learn တွင် [ကျယ်ပြန့်သော API](https://scikit-learn.org/stable/modules/classes.html#api-ref) ရှိ၍ ML လုပ်ဆောင်ချက်များ အကူအညီပေးသည်။
-သူတို့ရဲ့ [website](https://scikit-learn.org/stable/getting_started.html) အရ - "Scikit-learn သည် supervised learning နှင့် unsupervised learning ကို ပံ့ပိုးပေးတဲ့ open source machine learning library ဖြစ်ပါတယ်။ Model fitting, data preprocessing, model selection နှင့် evaluation အပါအဝင် အခြားသော Utilities များစွာကိုလည်း ပံ့ပိုးပေးပါတယ်။"
+သူတို့ရဲ့ [ဝက်ဘ်ဆိုဒ်](https://scikit-learn.org/stable/getting_started.html) အရ "Scikit-learn သည် supervised နှင့် unsupervised ပညာသင်ကြားမှုများကို ထောက်ပံ့ပေးသော အခမဲ့ စက်သင်ယူမှု စာကြည့်တိုက် ဖြစ်သည်။ မော်ဒယ်ကို ဆွဲဆိုင်းခြင်း၊ ဒေတာကြိုတင်ပြုပြင်ခြင်း၊ မော်ဒယ်ရွေးချယ်မှုနှင့် သုံးသပ်မှုများအတွက် ကိရိယာအခြားများလည်း ထည့်သွင်းပေးထားသည်။"
-ဒီသင်ခန်းစာမှာ Scikit-learn နှင့် အခြား Tools များကို အသုံးပြုပြီး 'traditional machine learning' tasks တွေကို လုပ်ဆောင်ပါမယ်။ Neural Networks နှင့် Deep Learning ကို မပါဝင်စေဖို့ ရည်ရွယ်ထားပြီး၊ အဲဒီအကြောင်းအရာတွေကို 'AI for Beginners' curriculum မှာ ပိုမိုလေ့လာနိုင်ပါမယ်။
+ဒီသင်တန်းမှာ Scikit-learn နှင့် ကိရိယာအခြားများကို သုံးပြီး ပုံမှန် စက်သင်ယူမှု လုပ်ငန်းရှင်လုပ်ကိုင်သည်။ neural network နှင့် deep learning များကို ကျွန်တော်တို့ 'AI for Beginners' သင်ခန်းစာတွင် လေ့လာရန်ထားကြသည်။
-Scikit-learn သည် Models တွေကို တည်ဆောက်ပြီး အသုံးပြုဖို့ အလွယ်ကူဆုံးဖြစ်စေပါတယ်။ Numeric Data ကို အဓိကထားပြီး Learning Tools အဖြစ် အသုံးပြုနိုင်တဲ့ Dataset များစွာပါဝင်ပါတယ်။ Pre-built Models တွေကိုလည်း Students တွေ စမ်းသပ်နိုင်ပါတယ်။ Prepackaged Data ကို Load လုပ်ပြီး Built-in Estimator ကို အသုံးပြုတဲ့ ပထမဆုံး ML Model ကို လေ့လာကြည့်ပါမယ်။
+Scikit-learn က မော်ဒယ်ဖန်တီးခြင်းနှင့် သုံးစွဲရန် စံထားသတ်မှတ်ခြင်းကို ရိုးရှင်းစွာ လုပ်ဆောင်နိုင်သည်။ ဥပမာနှင့် သင်ယူရန်အသင့်ရှိသော ဒေတာစုစည်းမှုများပါဝင်ပြီး သူတို့ အတွက်မော်ဒယ်များပါဝင်သည်။ ပထမဆံုး Scikit-learn မော်ဒယ်အတွက် ကြိုတင်ထားသော ဒေတာနှင့် estimator အသုံးပြုခြင်းကို စတင်ကြည့်ကြရအောင်။
-## လက်တွေ့လုပ်ဆောင်မှု - ပထမဆုံး Scikit-learn Notebook
+## လေ့ကျင့်ခန်း - သင့်ပထမဆုံး Scikit-learn notebook
-> ဒီ Tutorial ကို 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) မှာ အခြေခံပြီး ရေးသားထားပါတယ်။
+> ဒီ သင်ကြားမှုကို 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 "ML for beginners - Python မှာ ပထမဆုံး Linear Regression Project")
-> 🎥 အထက်ပါပုံကို Click လုပ်ပြီး ဒီအလုပ်ကို လုပ်ဆောင်ပုံကို ကြည့်ပါ။
+[](https://youtu.be/2xkXL5EUpS0 "ML စတင်သင်ယူသူ - Python ဖြင့် ပထမဆုံး လိုင်းနေရေး Regression စီမံကိန်း")
-_notebook.ipynb_ ဖိုင်မှာရှိတဲ့ Cell တွေကို 'trash can' icon ကို နှိပ်ပြီး ရှင်းလင်းပါ။
+> 🎥 ဤလေ့ကျင့်ခန်းကို ဗီဒီယိုနည်းဖြင့် လေ့လာရန် ပုံကို နှိပ်ပါ။
-ဒီအပိုင်းမှာ Scikit-learn မှာ Learning အတွက် Built-in ဖြစ်တဲ့ Diabetes Dataset ကို အသုံးပြုပါမယ်။ Diabetic Patients တွေအတွက် Treatment ကို စမ်းသပ်ချင်တယ်လို့ စဉ်းစားပါ။ Machine Learning Models တွေက Variables တွေကို အခြေခံပြီး ဘယ်သူတွေ Treatment ကို ပိုမိုတုံ့ပြန်နိုင်မလဲဆိုတာကို သတ်မှတ်ပေးနိုင်ပါတယ်။ Visualization လုပ်ထားတဲ့ Basic Regression Model တစ်ခုက Variables တွေကို သုံးပြီး Clinical Trials တွေကို စီမံခန့်ခွဲဖို့ အထောက်အကူဖြစ်စေမယ်။
+_notebook.ipynb_ ဖိုင်တွင် ရှိသော cells အားလုံးကို 'trash can' အိုင်ကွန်နှိပ်၍ ဖျက်ပစ်ပါ။
-✅ Regression Methods များစွာရှိပြီး၊ သင်ရွေးချယ်ရမယ့် Method က သင်လိုချင်တဲ့ အဖြေကို အခြေခံပါတယ်။ လူတစ်ဦးရဲ့ အသက်အရွယ်ကို အခြေခံပြီး အမြင့်ကို ခန့်မှန်းချင်တယ်ဆို Linear Regression ကို အသုံးပြုပါမယ်၊ အကြောင်းက Numeric Value ကို ရှာဖွေနေပါတယ်။ အစားအစာအမျိုးအစားတစ်ခုကို Vegan ဖြစ်/မဖြစ် သတ်မှတ်ချင်တယ်ဆို Logistic Regression ကို အသုံးပြုပါမယ်၊ အကြောင်းက Category Assignment ကို ရှာဖွေနေပါတယ်။ Logistic Regression ကို နောက်ပိုင်းမှာ ပိုမိုလေ့လာနိုင်ပါမယ်။ Data ကို အခြေခံပြီး မေးခွန်းများစွာကို တွေးကြည့်ပြီး၊ ဘယ် Method က ပိုသင့်တော်မလဲဆိုတာ တွေးကြည့်ပါ။
+ဤပိုင်းတွင် Scikit-learn တွင် သင်ယူမှုအတွက် ပါဝင်သော diabetes အချက်အလက်အစုလိုက် တစ်ခုဖြင့် လုပ်ဆောင်မည်ဖြစ်သည်။ လက်က်ကျင့်မှုအတွက် diabetic လူနာများကို ဆုတ်ကမ်းသည့်ကုထုံး စမ်းသပ်လိုသူဟု ရှုမြင်ပါက စက်သင်ယူမှု မော်ဒယ်တို့က မည်သူများအတွက် ကောင်းမွန်သော တုံ့ပြန်မှုရှိမည်ဆိုသည်ကို ဖော်ထုတ်နိုင်သည်။ အလွယ်တကူ regression မော်ဒယ်တစ်ခုကို ကြည့်ရှုချက်ဖြင့် ၎င်းသည် သင်၏ သတိပြုရမည့် အချက်အလက်များကို ပြသနိုင်သည်။
-အလုပ်ကို စတင်လိုက်ပါ။
+✅ regression နည်းလမ်းစုံရှိပြီး သင် ရရှိလိုသည့် ဖြေချက်ပုံစံပေါ်မူတည်သည်။ အသက်တစ်မျိုးနှင့် မျှော်မှန်းထားသော အမြင့်တန်ဖိုးခန့်မှန်းရန် linear regression ကိုသုံးမည်။ လူတစ်ဦးအရွယ်အရအမြင့်ကို ကြိုတင်တွက်ရန် numeric value လိုတွင် မျိုးဖြစ်သည်။ စားအစာတစ်မျိုးတစ်စုံက ဗီဂန် ဟုတ်မဟုတ် သတ်မှတ်ရန် logistic regression (category assignment) ကို အသုံးပြုမည်။ logistic regression ကို နောက်ပိုင်းတွင် သင်ယူမည်ဖြစ်သည်။ သင်ဖြစ်နိုင်သည့် ဒေတာမေးခွန်းများကို စဉ်းစားပြီး သင့်ရဲ့ မေးခွန်းနှင့် ကိုက်ညီသည့် regression နည်းလမ်းကို ရွေးချယ်ပါ။
-### Libraries များ Import လုပ်ခြင်း
+ဒီအလုပ်ကို စတင်လိုက်ကြရအောင်။
-ဒီအလုပ်အတွက် Libraries အချို့ကို Import လုပ်ပါမယ် -
+### စာကြည့်တိုက်များ ကိုသွင်းယူခြင်း
-- **matplotlib**. [Graphing Tool](https://matplotlib.org/) အဖြစ် အသုံးဝင်ပြီး Line Plot တစ်ခုကို ဖန်တီးဖို့ အသုံးပြုပါမယ်။
-- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) သည် Python မှာ Numeric Data ကို Handle လုပ်ဖို့ အသုံးဝင်တဲ့ Library ဖြစ်ပါတယ်။
-- **sklearn**. [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) Library ဖြစ်ပါတယ်။
+လုပ်ငန်းအတွက် စာကြည့်တိုက်များကို သုံးမည် -
-သင့် Tasks များအတွက် အထောက်အကူဖြစ်စေမယ့် Libraries များကို Import လုပ်ပါ။
+- **matplotlib**။ ဒါသည် အသုံးဝင်သော [ဂရပ်ဖ်ကိရိယာ](https://matplotlib.org/) ဖြစ်၍ လိုင်းပလော့ဖန်တီးရန်သုံးမည်။
+- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) သည် Python တွင် နံပါတ်များကိုဆောင်ရွက်ရာ အထောက်အကူဖြစ်သော စာကြည့်တိုက်ဖြစ်သည်။
+- **sklearn**. ၎င်းသည် [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) စာကြည့်တိုက်ဖြစ်သည်။
-1. အောက်ပါ Code ကို ရိုက်ပါ -
+လုပ်ငန်းများအတွက် ကူညီရန် စာကြည့်တိုက်များကို သွင်းယူပါ။
+
+1. အောက်ပါကုဒ်ဖြင့် import ပြုလုပ်ပါ -
```python
import matplotlib.pyplot as plt
@@ -122,26 +123,26 @@ _notebook.ipynb_ ဖိုင်မှာရှိတဲ့ Cell တွေကိ
from sklearn import datasets, linear_model, model_selection
```
- အထက်မှာ `matplotlib`, `numpy` ကို Import လုပ်ပြီး၊ `datasets`, `linear_model` နှင့် `model_selection` ကို `sklearn` မှ Import လုပ်ထားပါတယ်။ `model_selection` ကို Data ကို Training နှင့် Test Sets အဖြစ် ခွဲခြားဖို့ အသုံးပြုပါတယ်။
+ အထက်တွင် `matplotlib`, `numpy` နှင့် `sklearn` မှ `datasets`, `linear_model`, `model_selection` ကို import လုပ်ပါသည်။ `model_selection` သည် ဒေတာကို လေ့ကျင့်မှုနှင့် စမ်းသပ်မှု အစိတ်အပိုင်းများသို့ ခွဲခြားရန် သုံးသည်။
-### Diabetes Dataset
+### diabetes ဒေတာစုစည်းမှု
-Built-in [diabetes dataset](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) မှာ Diabetes နှင့် ပတ်သက်တဲ့ Data Samples 442 ခုပါဝင်ပြီး Feature Variables 10 ခုပါဝင်ပါတယ်၊ အချို့မှာ -
+ပြည့်စုံပြီး [diabetes dataset](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) တွင် ၄၄၂ နမူနာပါရှိပြီး diabetes နှင့်ဆက်စပ်သော အချက်အလက်များ ၁၀ ခုပါရှိသည်၊ အချို့မှာ -
-- age: အသက် (နှစ်)
-- bmi: Body Mass Index
-- bp: ပျမ်းမျှ သွေးပေါင်ချိန်
-- s1 tc: T-Cells (အဖြူရောင် သွေးဆဲလ်အမျိုးအစား)
+- age: အသက်နှစ်များ
+- bmi: ခန္ဓာကိုယ် အလေးချိန်ညွှန်းကိန်း
+- bp: သွေးတိုးပတ်ဝန်းကျင် စမ်းသပ်မှု အချက်အလက်
+- s1 tc: T-Cells (ဖြူသော သွေးအရိုးအမြစ်အမျိုးအစား)
-✅ ဒီ Dataset မှာ Diabetes နှင့် ပတ်သက်တဲ့ Research အတွက် Feature Variable အဖြစ် 'sex' ကိုပါဝင်ထားပါတယ်။ Medical Datasets များစွာမှာ ဒီလို Binary Classification ပါဝင်ပါတယ်။ Population တစ်ခုခုကို Treatment မရနိုင်စေတဲ့ Categorization များအကြောင်း အနည်းငယ်တွေးကြည့်ပါ။
+✅ ဒီ dataset တွင် 'sex' ဟူသော ယောကျ္ားမနှစ်မျိုးအုပ်စု ခြားနားမှုကို ပြသထားသည်။ ဆေးဘက်ဆိုင်ရာ ဒေတာစုစည်းမှုများစွာတွင် ယင်းအမျိုးအစား မျိုးခွဲခြားမှုပါဝင်သည်။ ထိုသို့မျိုးခွဲခြားခြင်းကြောင့် လူဦးရေတစ်စုချင်းခုခံကုထုံးမှ ထုတ်ပစ်ခြင်း ဖြစ်တက်သည်ကို စဉ်းစားကြည့်ပါ။
-အခု X နှင့် y Data ကို Load လုပ်ပါ။
+ယခု X နှင့် y ဒေတာများကို load လုပ်ပါ။
-> 🎓 ဒီဟာ supervised learning ဖြစ်ပြီး၊ Named 'y' Target လိုအပ်ပါတယ်။
+> 🎓 သတိပြုရန်- supervised learning ဖြစ်ပြီး 'y' target ဟုအမည်ပေးထားသည်။
-Code Cell အသစ်တစ်ခုမှာ `load_diabetes()` ကို ခေါ်ပြီး Diabetes Dataset ကို Load လုပ်ပါ။ Input `return_X_y=True` သည် `X` ကို Data Matrix အဖြစ်၊ `y` ကို Regression Target အဖြစ် Return ပြန်ပေးပါမယ်။
+နယူး code cell တစ်ခုတွင် `load_diabetes()` ဟူသော function ကို ခေါ်ပြီး diabetes ဒေတာစုစည်းမှုကို load ပါ။ input `return_X_y=True` သည် `X` ကို ဒေတာ matrix ျဖစ္စေ၊ `y` ကို regression target ဖြစ်စေ စေသည်။
-1. Data Matrix ရဲ့ Shape နဲ့ ပထမဆုံး Element ကို ပြသဖို့ Print Commands အချို့ကို ထည့်ပါ -
+1. ဒေတာ matrix ၏ အရွယ်အစားနှင့် ပထမဆုံး အရာကို ပြရန် print command များထည့်ပါ။
```python
X, y = datasets.load_diabetes(return_X_y=True)
@@ -149,9 +150,9 @@ Code Cell အသစ်တစ်ခုမှာ `load_diabetes()` ကို ခ
print(X[0])
```
- Response အနေနဲ့ Tuple တစ်ခုကို ပြန်ပေးပါမယ်။ Tuple ရဲ့ ပထမဆုံးနှင့် ဒုတိယတန်ဖိုးကို `X` နှင့် `y` အဖြစ် Assign လုပ်ထားပါတယ်။ [Tuples](https://wikipedia.org/wiki/Tuple) အကြောင်းပိုမိုလေ့လာပါ။
+ ပြန်လာသည့်တုန့်ပြန်ချက်မှာ tuple ဖြစ်ပြီး၊ tuple ၏ အစောဆုံး တန်ဖိုးနှစ်ခုကို `X` နှင့် `y` သတ်မှတ်ခြင်း ဖြစ်သည်။ tuple အကြောင်း ပို၍ လေ့လာနိုင်ရန် [tuples](https://wikipedia.org/wiki/Tuple) နှင့်ဆက်သွယ်ကြည့်ပါ။
- ဒီ Data မှာ 442 Items ရှိပြီး 10 Elements ပါဝင်တဲ့ Arrays အဖြစ် Shape ရှိပါတယ် -
+ ဒီဒေတာတွင် ၄၄၂ လုံးရှိပြီး အစီအစဉ်အလိုက် ၁၀ ခုထည့်ထားသော အက်၍ ray အဖြစ် ဖြစ်သည်။
```text
(442, 10)
@@ -159,55 +160,75 @@ Code Cell အသစ်တစ်ခုမှာ `load_diabetes()` ကို ခ
-0.04340085 -0.00259226 0.01990842 -0.01764613]
```
- ✅ Data နဲ့ Regression Target အကြား ဆက်နွယ်မှုကို အနည်းငယ်တွေးကြည့်ပါ။ Linear Regression သည် Feature X နှင့် Target Variable y အကြား ဆက်နွယ်မှုကို ခန့်မှန်းပေးပါတယ်။ Diabetes Dataset ရဲ့ [Target](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) ကို Documentation မှာ ရှာဖွေပါ။ ဒီ Dataset က ဘာကို ပြသနေသလဲ?
+ ✅ ဒေတာနှင့် regression target အကြား ဆက်စပ်မှုကို စဉ်းစားပါ။ Linear regression သည် feature X နှင့် target y အကြား ဆက်နွယ်မှုများ ခန့်မှန်းသည်။ diabetic dataset ၏ [target](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) ကို စာတမ်းထဲတွင် ရှာဖွေရန် ကြိုးစားပါ။ ၎င်း target သည် ဘာကိုပြသနေသနည်း?
-2. Dataset ရဲ့ တစ်စိတ်တစ်ပိုင်းကို Plot ဖို့ Dataset ရဲ့ 3rd Column ကို ရွေးပါ။ `:` Operator ကို အသုံးပြုပြီး Rows အားလုံးကို ရွေးပြီး၊ Index (2) ကို အသုံးပြုပြီး 3rd Column ကို ရွေးပါ။ Data ကို 2D Array အဖြစ် Reshape လုပ်ဖို့ `reshape(n_rows, n_columns)` ကို အသုံးပြုပါ။ Parameter တစ်ခုမှာ -1 ရှိရင်၊ Dimension ကို အလိုအလျောက်တွက်ချက်ပေးပါမယ်။
+2. dataset ၏ တခြားအပိုင်းတစ်ခုကို ရွေးချယ်ရန် dataset ၏ ၃ လုံးကော်လံကို ရွေးပါ။ `:` အကောင့်အားလုံးကို ရွေးပြီး၊ index (2) ဖြင့် ၃ လုံးကော်လံကို ရွေးပါ။ ဒေတာကို ပလော့ဖ်ဖို့အတွက် ၂ ဒီ array အဖြစ် `reshape(n_rows, n_columns)` ဖြင့် ပြင်ဆင်ရမည်။ parameter တန်ဖိုး -1 ဖြစ်လျှင် အတူတကွဖြတ်တောက်ချက်ကို အလိုလိုတွက်ချက်ပေးသည်။
```python
X = X[:, 2]
X = X.reshape((-1,1))
```
- ✅ Data ရဲ့ Shape ကို အချိန်မရွေး Print လုပ်ပြီး စစ်ဆေးပါ။
+ ✅ အချိန်တိုင်း ပြန်ကြည့်၍ ဒေတာ၏ အရွယ်အစားကို စစ်ဆေးပါ။
-3. Data ကို Plot လုပ်ဖို့ ပြင်ဆင်ပြီးနောက်၊ ဒီ Dataset မှာ Numbers တွေကို Logical Split လုပ်ဖို့ Machine ကို အသုံးပြုနိုင်ပါမယ်။ ဒီအလုပ်ကို လုပ်ဖို့ Data (X) နှင့် Target (y) ကို Test နှင့် Training Sets အဖြစ် ခွဲခြားဖို့ လိုအပ်ပါတယ်။ Scikit-learn မှာ ဒီအလုပ်ကို လုပ်ဖို့ လွယ်ကူတဲ့ နည်းလမ်းရှိပါတယ်၊ Test Data ကို တစ်ခုခု Point မှာ Split လုပ်နိုင်ပါတယ်။
+3. ဒေတာအား များတင်ပလော့ဖ်ရန် အသင့်ရှိသည့်အခြေအနေမှ စတင်ပြီး၊ အခြားသော မော်ဒယ်အလုပ်လုပ်စေဖို့အတွက် ဒေတာ (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. Model ကို Training လုပ်ဖို့ ပြင်ဆင်ပါ! Linear Regression Model ကို Load လုပ်ပြီး `model.fit()` ကို အသုံးပြုပြီး X နှင့် y Training Sets များကို Training လုပ်ပါ။
+4. ယခု မော်ဒယ်လေ့ကျင့်ရန် အသင့်ဖြစ်ပြီ။ linear regression မော်ဒယ်ကို ထည့်သွင်းပြီး `model.fit()` ဖြင့် X နှင့် y လေ့ကျင့်စရာ ဒေတာများဖြင့် သင်ကြားပါ။
```python
model = linear_model.LinearRegression()
model.fit(X_train, y_train)
```
- ✅ `model.fit()` သည် TensorFlow ကဲ့သို့သော ML Libraries များမှာ တွေ့ရနိုင်တဲ့ Function ဖြစ်ပါတယ်။
+ ✅ `model.fit()` သည် TensorFlow ကဲ့သို့သော ML စာကြည့်တိုက်များတွင် တွေ့ရသော function တစ်ခုဖြစ်သည်။
+
+5. ပြီးလျှင် စမ်းသပ်မှု ဒေတာဖြင့် မော်ဒယ် အနာဂတ်ခန့်မှန်းချက် ပြုလုပ်ရန် `predict()` function ကိုအသုံးပြုပါ။
-5. Test Data ကို အသုံးပြုပြီး Prediction တစ်ခုကို ဖန်တီးပါ၊ `predict()` Function ကို အသုံးပြုပါ။ ဒီဟာကို Model ရဲ့ Data Groupings အကြား Line ကို ရေးဆ
-✅ ဒီမှာဘာဖြစ်နေတာလဲဆိုတာကိုအနည်းငယ်တွေးကြည့်ပါ။ တစ်ခုတည်းသောတည့်တည့်လိုင်းတစ်ခုဟာ အချက်အလက်အနည်းငယ်များကိုဖြတ်သွားနေပါတယ်၊ ဒါပေမယ့် အတိအကျဘာလုပ်နေတာလဲ? မသိသေးတဲ့ အချက်အလက်တစ်ခုဟာ ဒီလိုင်းနဲ့ပတ်သက်ပြီး y axis ပေါ်မှာဘယ်နေရာမှာရှိမလဲဆိုတာကို သင်ခန့်မှန်းနိုင်ပုံကိုမြင်နိုင်ပါသလား? ဒီမော်ဒယ်ရဲ့ အကျိုးကျေးဇူးကို လက်တွေ့အသုံးချပုံအနေနဲ့ စကားလုံးတွေနဲ့ဖော်ပြကြည့်ပါ။
+ ```python
+ y_pred = model.predict(X_test)
+ ```
-အောင်မြင်ပါတယ်၊ သင့်ရဲ့ ပထမဆုံး linear regression မော်ဒယ်ကို တည်ဆောက်ပြီး၊ အဲဒီနဲ့ ခန့်မှန်းချက်တစ်ခုကိုဖန်တီးပြီး၊ plot ထဲမှာ ပြသနိုင်ခဲ့ပါပြီ!
+6. ယခု ဒေတာကို ပလော့ဖ်တွင် ပြရန်အချိန်။ 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()
+ ```
+
+ 
----
-## 🚀စိန်ခေါ်မှု
-ဒီ dataset ထဲက အခြား variable တစ်ခုကို plot လုပ်ပါ။ အကြံပြုချက်: ဒီလိုင်းကို ပြင်ဆင်ပါ `X = X[:,2]`။ ဒီ dataset ရဲ့ target ကိုအခြေခံပြီး၊ ဆီးချိုရောဂါရဲ့ တိုးတက်မှုအခြေအနေကို ဘာတွေရှာဖွေနိုင်မလဲ?
+ ✅ ဒီမှာဘာဖြစ်နေသလဲဆိုတာအနည်းငယ်စဉ်းစားကြည့်ပါ။ တစ်ကြောင်းချောင်းစိုး ကာလေးနဲ့ရှားပါးတဲ့ ဒေတာလေးတွေကြားဖြတ်သွားတဲ့ တည့်တည့်တဲ့ချောင်းတစ်ခုရှိတယ်၊ ဒါပေမဲ့ ဒါကဘာလုပ်နေသလဲ? ဒီချောင်းကို အသုံးပြုပြီး အသစ်မြင်ဖူးသေးတဲ့ ဒေတာပျိုတစ်ခုက ဒီပလော့့ရဲ့ y အလျား ညီအောင် ဘယ်နေရာမှာထားမလဲဆိုတာ တွက်ချက်ခန့်မှန်းနိုင်ဖို့ ဘယ်လိုမြင်နိုင်မလဲ? ဒီမော်ဒယ်ရဲ့ လက်တွေ့အသုံးချမှုကို စကားလုံးတွေဖြင့်ဖော်ပြပါ။
+
+ဂုဏ်ယူပါတယ်၊ သင်ဟာ သင်၏ ပထမဆုံး လိုင်းရေးဂရက်ရှင်းမော်ဒယ်ကို တည်ဆောက်ပြီး၊ ခန့်မှန်းခြေတစ်ခုကို ပြုလုပ်ပြီး၊ ပလော့တစ်ပေါ်မှာ ပြသခဲ့ပါပြီ!
+
+---
+## 🚀 စိန်ခေါ်မှု
-## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ml/)
+ဒီဒေတာစုံစုမှ ကွဲပြားသော အမျိုးအစားတစ်ခုကို ပလော့လုပ်ပါ။ အကြောင်းပြချက် - ဤလိုင်းကို တည်းဖြတ်ပါ: `X = X[:,2]`။ ဒီဒေတာစုံစုရဲ့ ရည်မှန်းချက်ကို သုံးပြီး ဆီးချိုရောဂါ ရောဂါအဖြစ် တိုးတက်မှုအပေါ် ဘာတွေ ရှာဖွေတွေ့ရှိနိုင်သလဲ?
+## [စာသင်ပြီးတော့ စစ်တမ်း](https://ff-quizzes.netlify.app/en/ml/)
-## ပြန်လည်သုံးသပ်ခြင်းနှင့် ကိုယ်တိုင်လေ့လာခြင်း
+## ပြန်လည်သုံးသပ်ခြင်းနှင့် ကိုယ်တိုင်လေ့လာရန်
-ဒီသင်ခန်းစာမှာ သင် simple linear regression ကို အသုံးပြုခဲ့ပြီး၊ univariate regression သို့မဟုတ် multiple linear regression မဟုတ်ပါဘူး။ ဒီနည်းလမ်းတွေကြားက ကွာခြားချက်တွေကို အနည်းငယ်ဖတ်ရှုပါ၊ ဒါမှမဟုတ် [ဒီဗီဒီယို](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) ကိုကြည့်ပါ။
+ဒီစာသင်ခြင်းတွင် သင်သည် တစ်မျိုးအပြင်ပြင်တိုင်းသို့ မဟုတ် များပြားသောလိုင်းရေးဂရက်ရှင်း မဟုတ်ဘဲ ရိုးရှင်းသောလိုင်းရေးဂရက်ရှင်းတစ်ခုနှင့် အလုပ်လုပ်ခဲ့သည်။ ဤနည်းလမ်းများ၏ ကွာခြားချက်များအကြောင်းအနည်းငယ်ဖတ်ပါ၊ ဒါမှမဟုတ် [ဒီဗီဒီယို](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) ကိုကြည့်ပါ။
-Regression ရဲ့ အယူအဆကို ပိုမိုနားလည်ရန် ဖတ်ရှုပါ၊ ဒီနည်းလမ်းနဲ့ ဖြေရှင်းနိုင်တဲ့ မေးခွန်းအမျိုးမျိုးကို တွေးကြည့်ပါ။ သင့်နားလည်မှုကို ပိုမိုတိုးတက်စေရန် [ဒီသင်ခန်းစာ](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) ကို လေ့လာပါ။
+Regression အယူအဆအကြောင်းပိုမိုဖတ်ရှုပြီး ဤနည်းလမ်းဖြင့် ဖြေရှင်းနိုင်သော မေးခွန်းအမျိုးအစားများအကြောင်း စဉ်းစားပါ။ နားလည်မှုကို တွေးတောရန် [ဒီစာသင်ခန်းမ](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) ကိုယူပါ။
-## အလုပ်ပေးစာ
+## တာဝန်ပေးချက်
-[A different dataset](assignment.md)
+[ကွဲပြားသော ဒေတာစုံစု](assignment.md)
---
-**ဝက်ဘ်ဆိုက်မှတ်ချက်**:
-ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးစားနေသော်လည်း၊ အလိုအလျောက်ဘာသာပြန်မှုများတွင် အမှားများ သို့မဟုတ် မမှန်ကန်မှုများ ပါဝင်နိုင်သည်ကို သတိပြုပါ။ မူရင်းစာရွက်စာတမ်းကို ၎င်း၏ မူလဘာသာစကားဖြင့် အာဏာတည်သောရင်းမြစ်အဖြစ် သတ်မှတ်သင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူ့ဘာသာပြန်ပညာရှင်များမှ အတည်ပြုထားသော ဘာသာပြန်မှုကို အသုံးပြုရန် အကြံပြုပါသည်။ ဤဘာသာပြန်မှုကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော နားလည်မှုမှားများ သို့မဟုတ် အဓိပ္ပာယ်မှားများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။
\ No newline at end of file
+
+**ပြောကြားချက်**
+ဤစာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးပမ်းနေသော်လည်း၊ စက်ကိရိယာဘာသာပြန်ခြင်းများတွင် အမှားများ သို့မဟုတ် မှားယွင်းချက်များ ပါဝင်နိုင်ကြောင်း သတိပြုပါရန် လိုအပ်ပါသည်။ မူလစာတမ်းကို မူရင်းဘာသာဖြင့်သာ ယုံကြည်စိတ်ချရသော အချက်အလက်အဖြစ် သတ်မှတ်သင့်သည်။ အရေးကြီးသည့် သတင်းအချက်အလက်များအတွက် ပရော်ဖက်ရှင်နယ် လူသားဘာသာပြန်သူဝန်ဆောင်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်ချက်ကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော နားလည်မှုကွာခြားမှုများ သို့မဟုတ် မမှန်ကန်သော အသုံးပြုမှုများအတွက် ကျွန်ုပ်တို့ တာဝန်မခံပါ။
+
\ No newline at end of file
diff --git a/translations/my/2-Regression/2-Data/README.md b/translations/my/2-Regression/2-Data/README.md
index 85dd9a826..e38640c06 100644
--- a/translations/my/2-Regression/2-Data/README.md
+++ b/translations/my/2-Regression/2-Data/README.md
@@ -1,62 +1,62 @@
-# Scikit-learn ကို အသုံးပြု၍ Regression Model တည်ဆောက်ခြင်း - ဒေတာကို ပြင်ဆင်ပြီး ရှင်းလင်းဖော်ပြခြင်း
+# Scikit-learn ကို အသုံးပြု၍ regression မော်ဒယ် တည်ဆောက်ခြင်း - ဒေတာ ပြင်ဆင်ခြင်းနှင့် မှတ်ပုံတင်ပြသခြင်း
-
+
-Infographic by [Dasani Madipalli](https://twitter.com/dasani_decoded)
+အချက်အလက်ပုံတင်ကို [Dasani Madipalli](https://twitter.com/dasani_decoded) မှဆွဲဆောင်ထားသည်
-## [Pre-lecture quiz](https://ff-quizzes.netlify.app/en/ml/)
+## [သင်ခန်းစာမတိုင်မီ စစ်တမ်း](https://ff-quizzes.netlify.app/en/ml/)
-> ### [ဒီသင်ခန်းစာကို R မှာလည်းရနိုင်ပါတယ်!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
+> ### [ဤသင်ခန်းစာကို R ဖြင့်လည်း ရရှိနိုင်ပါသည်!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
-## အကျဉ်းချုပ်
+## နိဒါန်း
-Scikit-learn ကို အသုံးပြု၍ Machine Learning Model တည်ဆောက်ရန် လိုအပ်သော tools များကို ပြင်ဆင်ပြီးနောက်၊ သင်၏ဒေတာကို မေးခွန်းထုတ်ရန် အဆင်သင့်ဖြစ်ပါပြီ။ ML ဖြေရှင်းချက်များကို အသုံးပြုပြီး ဒေတာနှင့်အလုပ်လုပ်သည့်အခါ၊ သင့်ဒေတာ၏ အခွင့်အလမ်းများကို အကောင်းဆုံးအသုံးချနိုင်ရန် မေးခွန်းကို မှန်ကန်စွာမေးနိုင်ဖို့ အရေးကြီးပါတယ်။
+Scikit-learn ဖြင့် ဂဏန်းသင်ယူမှုပုံစံ တည်ဆောက်ခြင်းလုပ်ငန်းစဉ်ကို စတင်ရန် လိုအပ်သော ကိရိယာများပေးပြီးဖြစ်သည့်အတွက် သင်၏ဒေတာကို မေးခွန်းမေးပြီးစတင်ကာ အကောင်အထည်ဖော်နိုင်ပါပြီ။ ဒေတာနှင့် အလုပ်လုပ်ရာတွင် ML ဖြေရှင်းနည်းများကို အသုံးပြုချိန်တွင် သင်၏datasets ၏ ထူးခြားချက်များကိုမှန်ကန်စွာဖော်ထုတ်ရန် တိကျသွားသောမေးခွန်းမေးခြင်း အရေးကြီးသည်။
-ဒီသင်ခန်းစာမှာ သင်လေ့လာရမည့်အရာများမှာ:
+ဤသင်ခန်းစာတွင် သင်လေ့လာမည့်အချက်များမှာ-
-- Model တည်ဆောက်ရန်အတွက် ဒေတာကို ပြင်ဆင်နည်း။
-- Matplotlib ကို အသုံးပြု၍ ဒေတာကို ရှင်းလင်းဖော်ပြနည်း။
+- မော်ဒယ် တည်ဆောက်ရန် သင်၏ဒေတာကို ပြင်ဆင်သမျှ။
+- Matplotlib ကို ဒေတာမှတ်ပုံတင်ပြသရန် အသုံးပြုခြင်း။
+- Seaborn ကို ပိုမိုစိတ်ဝင်စားဖွယ်ရာ ဒေတာမှတ်ပုံတင်ပြသမှုအတွက် အသုံးပြုခြင်း။
-## သင့်ဒေတာကို မှန်ကန်စွာမေးခွန်းထုတ်ခြင်း
+## သင်၏ဒေတာအတွက် မွန်မြတ်သည့်မေးခွန်းမေးခြင်း
-သင်လိုအပ်သော အဖြေကို သတ်မှတ်သည့် မေးခွန်းသည် သင်အသုံးပြုမည့် ML algorithm အမျိုးအစားကို ဆုံးဖြတ်ပေးပါမည်။ သင်ရရှိမည့် အဖြေ၏ အရည်အသွေးသည် သင့်ဒေတာ၏ သဘာဝပေါ်မူတည်ပါမည်။
+သင့်ရဲ့ မေးခွန်းသည် မည်မျှသာ ML အယ်လဂေါရစ်သမ်သုံးရမည်ကို သတ်မှတ်ပေးမည်ဖြစ်သည်။ ပြန်လည်ရရှိမည့်ဖြေကြားချက်၏ အရည်အသွေးသည် သင့်ဒေတာ၏ ထုတ်လွှင့်မှုအပေါ် မူတည်သည်။
-ဒီသင်ခန်းစာအတွက် [ဒေတာ](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) ကို ကြည့်ပါ။ ဒီ .csv ဖိုင်ကို VS Code မှာ ဖွင့်နိုင်ပါတယ်။ အမြန်ကြည့်လိုက်တာနဲ့ အလွတ်နေရာများ၊ စာသားနှင့် ကိန်းဂဏန်းများရောနှောနေမှုကို တွေ့နိုင်ပါတယ်။ 'Package' ဆိုတဲ့ ထူးဆန်းတဲ့ ကော်လံမှာ 'sacks', 'bins' စတဲ့ အမျိုးမျိုးသော အချက်အလက်တွေ ရှိပါတယ်။ ဒေတာက တကယ်တော့ အတော်လေး ရှုပ်ထွေးနေပါတယ်။
+ဤသင်ခန်းစာအတွက် ပံ့ပိုးထားသော [ဒေတာ](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) ကို ကြည့်ပါ။ VS Code တွင် .csv ဖိုင်ကိုဖွင့်နိုင်သည်။ ဗဟိုပြချက်တစ်ခုအနေနှင့် ရှင်းလင်းချက်များ၊ စာသားနှင့်ဂဏန်းဒေတာများ ဖြစ်ပေါ်နေကြောင်းမြင်ရမည်။ "Package" ဟုခေါ်သော မြင်ကွင်းထူးခြားသော ကော်လံတစ်ခု ရှိပြီး 'sacks', 'bins' နှင့် အခြားအဖြစ်များပေါင်းစပ်သည်။ ဒေတာသည် တကယ်လို့ စည်းမျဉ်းမရှိသော အခြေအနေတစ်ခုဖြစ်သည်။
[](https://youtu.be/5qGjczWTrDQ "ML for beginners - How to Analyze and Clean a Dataset")
-> 🎥 အထက်ပါပုံကို နှိပ်ပြီး ဒီသင်ခန်းစာအတွက် ဒေတာကို ပြင်ဆင်နည်းကို ကြည့်ပါ။
+> 🎥 ဤရုပ်ပုံကို နှိပ်ပြီး ဤသင်ခန်းစာအတွက် ဒေတာပြင်ဆင်ရေးလုပ်ငန်းစဉ်ကို ရှင်းလင်းတတ်၏ဗီဒီယိုတိုကိုကြည့်ပါ။
-တကယ်တော့ ML model တစ်ခုကို တည်ဆောက်ရန် အဆင်သင့်ဖြစ်နေသော ဒေတာကို ရရှိခြင်းသည် ရှားပါးသောအရာဖြစ်သည်။ ဒီသင်ခန်းစာမှာ သင် Python libraries များကို အသုံးပြု၍ raw dataset ကို ပြင်ဆင်နည်းကို လေ့လာပါမည်။ ဒါ့အပြင် ဒေတာကို ရှင်းလင်းဖော်ပြရန် နည်းလမ်းများကိုလည်း လေ့လာပါမည်။
+တကယ်လို့၊ အသုံးပြုနိုင်သော ML မော်ဒယ် တစ်ခုဖန်တီးရန် အထူပြင်ဆင်ထားပြီး ဒေတာကို ရရှိရခြင်း မရှိခြင်းသည် ရှားပါးသည်။ ဤသင်ခန်းစာတွင် Python စံထားသော ပိုင်ရာစာကြည့်တိုက်များ အသုံးပြု၍ သဘာဝဒေတာများကို ပြင်ဆင်ပုံကို သင်တတ်မြောက်ပါမည်။ ပိုပြီးမန်မာပြ ဒေတာမှတ်ပုံတင်ခြင်းနည်းလမ်းများကိုလည်း သင်ယူပါမည်။
-## Case study: 'ဖရုံသီးဈေးကွက်'
+## အမှုလေ့လာမှု - 'the pumpkin market'
-ဒီ folder မှာ [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) ဆိုတဲ့ .csv ဖိုင်ကို `data` folder ရဲ့ root မှာ တွေ့နိုင်ပါတယ်။ ဒီဖိုင်မှာ မြို့အလိုက် အုပ်စုဖွဲ့ထားတဲ့ ဖရုံသီးဈေးကွက်အကြောင်း 1757 လိုင်းရှိပါတယ်။ ဒါဟာ [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) မှ ထုတ်ယူထားတဲ့ raw data ဖြစ်ပြီး အမေရိကန် စိုက်ပျိုးရေးဌာနက ဖြန့်ဝေထားတာဖြစ်ပါတယ်။
+ဤဖိုင်ကို ရှိသော `data` ဖိုလ်ဒါ၏ အမြစ်တွင် [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) နာမည်ရှိ .csv ဖိုင်ရှိပြီး မြို့အလိုက် စုပေါင်းထားသော pumpkin စျေးကွက်ဆိုင်ရာ ဒေတာ 1757 အကြောင်း ပါဝင်သည်။ ဤတွေ့ရှိချက်သည် US Department of Agriculture မှ အထူးစိုက်ပျိုးရေးဈေးကွက် စံအစီရင်ခံစာများမှ မူတည်၍ ရယူထားသည်။
-### ဒေတာကို ပြင်ဆင်ခြင်း
+### ဒေတာ ပြင်ဆင်ခြင်း
-ဒီဒေတာဟာ public domain မှာ ရှိပါတယ်။ ဒေတာကို USDA website မှာ မြို့အလိုက် ဖိုင်များအနေနဲ့ ဒေါင်းလုဒ်လုပ်နိုင်ပါတယ်။ အလွဲလွဲအချော်ချော် ဖိုင်များကို ရှောင်ရှားရန် မြို့အလိုက် ဒေတာအားလုံးကို spreadsheet တစ်ခုအဖြစ် ပေါင်းစည်းထားပြီး ဒေတာကို အနည်းငယ် ပြင်ဆင်ထားပါတယ်။ အခုတော့ ဒေတာကို နီးကပ်စွာ ကြည့်လိုက်ရအောင်။
+ဤဒေတာသည် ပြည်သူ့ပိုင်ဆိုင်မှု ဖြစ်သည်။ USDA ဝက်ဘ်ဆိုက်မှမြို့တိုင်းအလိုက် ဖိုင်များစွာကို မျှဝေသည်။ ဖိုင်များ အများကြီး မဖြန့်ချိရန် အားလုံးကို တစ်ခုတည်း စာရွက်ထဲတွင် ပေါင်းစပ်ထားပြီး ဒေတာကိုအနည်းငယ် ပြင်ဆင်ထားသည်။ အောက်တွင် ဒေတာကို နက်ရှိုင်းစွာကြည့်ခြင်းပြုလုပ်မည်။
-### ဖရုံသီးဒေတာ - စောစောကနေ သုံးသပ်ချက်များ
+### pumpkin data - ပထမအကြမ်းဖျင်းအမြင်
-ဒီဒေတာအကြောင်း သင်ဘာတွေ သတိထားမိပါသလဲ? စာသား၊ ကိန်းဂဏန်း၊ အလွတ်နေရာများနှင့် ထူးဆန်းတဲ့ အချက်အလက်များ ရောနှောနေမှုကို သင်ကြည့်ပြီးသားဖြစ်ပါတယ်။
+ဤဒေတာကို ကြည့်ပါက၊ စာသား၊နံပါတ်၊အစွန်းအထင်း၊ ထူးခြားတန်ဖိုးများ စပ်လျဥ်သည့်အချက်များ ရှိသည်ကို သတိထားမိသည်။
-Regression နည်းလမ်းကို အသုံးပြု၍ ဒီဒေတာကို ဘယ်လိုမေးခွန်းထုတ်နိုင်မလဲ? "တစ်လအတွင်းရောင်းချသော ဖရုံသီးတစ်လုံး၏ဈေးနှုန်းကို ခန့်မှန်းပါ" ဆိုတဲ့ မေးခွန်းကို မေးနိုင်ပါတယ်။ ဒေတာကို ပြန်ကြည့်လိုက်ရင် ဒီ task အတွက် လိုအပ်သော data structure ကို ဖန်တီးရန် အချို့ပြောင်းလဲမှုများ လိုအပ်ပါသည်။
+ကိန်းဂဏန်းပြားနည်းဖြင့် "တစ်လအတွင်း ရောင်းမည့် pumpkin ၏ ဈေးနှုန်း ခန့်မှန်းခြင်း" ထုတ်ထားသောမေးခွန်းတစ်ခု မေးလို့ရမလား? ဒေတာကို ထပ်မံကြည့်မည်ဆိုပါက ဤတာဝန်လုပ်ရန် မလိုက်ဖက်သည့် ဒေတာဖွဲ့စည်းမှု တချို့ ပြင်ဆင်ရန် လိုအပ်သည်။
+## လေ့ကျင့်ခန်း - pumpkin data ကို စိစစ်ပါ
-## လေ့ကျင့်ခန်း - ဖရုံသီးဒေတာကို သုံးသပ်ခြင်း
+ဒေတာကို ပုံသဏ္ဍာန်ဖွဲ့ရာတွင် အထောက်အကူပြုသည့် [Pandas](https://pandas.pydata.org/) ကို အသုံးပြုကာ ဒီ pumpkin data ကို စိစစ်ပြီး ပြင်ဆင်ပါ။
-[Pandas](https://pandas.pydata.org/) ကို အသုံးပြုပါ။ (Pandas ဆိုတာ `Python Data Analysis` ကို ရည်ညွှန်းပါတယ်) ဒေတာကို အဆင်ပြေစွာ ပြင်ဆင်ရန် အထူးအသုံးဝင်တဲ့ tool ဖြစ်ပါတယ်။
+### ပထမဦးစွာ ရက်စွဲပျောက်ဆုံးမှု ရှာဖွေစစ်ဆေးခြင်း
-### ပထမဦးဆုံး၊ နေ့စွဲပျောက်နေမှုကို စစ်ဆေးပါ
+ပထမဦးစွာ ရက်စွဲများ ပျောက်သွားမှု ရှိမရှိ စစ်ဆေးရန် လိုအပ်သည်။
-သင်အရင်ဆုံး နေ့စွဲပျောက်နေမှုကို စစ်ဆေးရန် လိုအပ်ပါမည်:
+1. ရက်စွဲများကို လပိုင်းပုံစံအဖြစ် ပြောင်းရန် (အမေရိကန်ရက်စွဲ[MM/DD/YYYY])ဖြစ်သည်။
+2. လပိုင်းကို ကော်လံအသစ်တစ်ခုသို့ ဖြုတ်ယူရန်။
-1. နေ့စွဲများကို လအဖြစ် ပြောင်းပါ (ဒီဟာ US dates ဖြစ်တဲ့အတွက် format က `MM/DD/YYYY` ဖြစ်ပါတယ်)။
-2. လကို အသစ်သော ကော်လံတစ်ခုထဲမှာ ထုတ်ယူပါ။
+Visual Studio Code တွင် _notebook.ipynb_ ဖိုင်ကို ဖွင့်၍ စာရွက်ကို pandas dataframe အသစ်သို့ ထည့်ပါ။
-_notebook.ipynb_ ဖိုင်ကို Visual Studio Code မှာ ဖွင့်ပြီး spreadsheet ကို Pandas dataframe အသစ်တစ်ခုထဲ import လုပ်ပါ။
-
-1. `head()` function ကို အသုံးပြု၍ ပထမ ၅ ရွေ့ကို ကြည့်ပါ။
+1. `head()` function ကို အသုံးပြု၍ ပထမဆုံးငါးကြောင်းကို ကြည့်ရှုပါ။
```python
import pandas as pd
@@ -64,30 +64,30 @@ _notebook.ipynb_ ဖိုင်ကို Visual Studio Code မှာ ဖွင
pumpkins.head()
```
- ✅ နောက်ဆုံး ၅ ရွေ့ကို ကြည့်ရန် ဘယ် function ကို အသုံးပြုမလဲ?
+ ✅ နောက်ဆုံးငါးကြောင်းကို ကြည့်ရန် မည်သည့် function ကို အသုံးပြုမလဲ?
-1. လက်ရှိ dataframe မှာ ပျောက်နေသော ဒေတာရှိမရှိ စစ်ဆေးပါ:
+1. လက်ရှိ dataframe တွင် ဒေတာပျောက်ဆုံးမှုရှိမရှိစစ်ဆေးပါ-
```python
pumpkins.isnull().sum()
```
- ပျောက်နေသော ဒေတာရှိပါတယ်၊ ဒါပေမယ့် ဒီ task အတွက် အရေးမကြီးလို့ ဖြစ်နိုင်ပါတယ်။
+ ဒေတာပျောက်ဆုံးထားသည်။ သို့သော် အလုပ်မှာ မထိခိုက်နိုင်ပါ။
-1. သင့် dataframe ကို အလုပ်လုပ်ရန် ပိုမိုလွယ်ကူစေရန် `loc` function ကို အသုံးပြု၍ လိုအပ်သော ကော်လံများကိုသာ ရွေးပါ။ `:` ဆိုတဲ့ expression က "အလုံးစုံသော ရွေ့များ" ကို ရည်ညွှန်းပါတယ်။
+1. ရိုးရှင်းစေဖို့သင်၏ dataframe တွင် လိုအပ်သောကော်လံများဖြင့် `loc` function ကို သုံးပြီး ဂဏန်းများ နှင့် ကော်လံများကို ရွေးချယ်ပါ။ ဤနေရာ `.loc[:, ]` သည် "အားလုံးကို" ဆိုလိုသည်။
```python
columns_to_select = ['Package', 'Low Price', 'High Price', 'Date']
pumpkins = pumpkins.loc[:, columns_to_select]
```
-### ဒုတိယ၊ ဖရုံသီး၏ ပျမ်းမျှဈေးနှုန်းကို ဆုံးဖြတ်ပါ
+### ဒုတိယ - pumpkin ဈေးနှုန်းပျမ်းမျှတွက်ချက်ခြင်း
-ဖရုံသီးတစ်လုံး၏ ပျမ်းမျှဈေးနှုန်းကို ဆုံးဖြတ်ရန် ဘယ်ကော်လံများကို ရွေးမလဲ? အကြံပြုချက် - သင့်အတွက် ၃ ကော်လံလိုအပ်ပါမည်။
+တစ်လအတွင်း pumpkin ဈေးနှုန်းပျမ်းမျှကို သိရန် ဘယ်ကော်လံများကို ရွေးမလဲ? အကြံပြုချက် - ကော်လံ ၃ ခုလိုအပ်သည်။
-ဖြေရှင်းချက် - `Low Price` နှင့် `High Price` ကော်လံများ၏ ပျမ်းမျှကို ရယူပြီး Price column အသစ်ကို ဖြည့်ပါ၊ နေ့စွဲကော်လံကို လသာသာ ပြောင်းပါ။ အထက်ပါစစ်ဆေးမှုအရ၊ နေ့စွဲများနှင့်ဈေးနှုန်းများအတွက် ပျောက်နေသော ဒေတာမရှိပါ။
+ဖြေရှင်းနည်း - `Low Price` နှင့် `High Price` ကော်လံများ၏ ပျမ်းမျှတန်ဖိုးကို Price ကော်လံသစ်တွင် ထည့်သွင်းပြီး Date ကော်လံကို လပိုင်းအဖြစ်သတ်မှတ်ပါ။ ရှေ့ကစစ်ဆေးချက်အရ ရက်စွဲနှင့် ဈေးနှုန်းတို့တွင် ဒေတာပျောက်မှုမရှိပါ။
-1. ပျမ်းမျှကိုတွက်ရန် အောက်ပါ code ကို ထည့်ပါ:
+1. ပျမ်းမျှတွက်ချက်ရန် အောက်ပါကုဒ်ကို ထည့်ပါ။
```python
price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2
@@ -96,37 +96,37 @@ _notebook.ipynb_ ဖိုင်ကို Visual Studio Code မှာ ဖွင
```
- ✅ `print(month)` ကို အသုံးပြု၍ သင်စစ်ဆေးလိုသော ဒေတာကို print လုပ်နိုင်ပါတယ်။
+ ✅ လိုသမျှဒေတာကို `print(month)` ဖြင့် စစ်ဆေးနိုင်ပါသည်။
-2. ပြောင်းလဲထားသော ဒေတာကို Pandas dataframe အသစ်တစ်ခုထဲ copy လုပ်ပါ:
+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 ကို print လုပ်ပါက သင် regression model အသစ်တစ်ခုတည်ဆောက်ရန် သန့်ရှင်းပြီး tidy ဖြစ်သော dataset ကို တွေ့ပါမည်။
+ dataframe ကို print ပြုလုပ်သည်မှာ စက်တင် အဆင်ပြေပြီး ပျက်စီးကြောင်းမရှိသော ဒေတာများကို မြင်နိုင်ပါသည်။
-### ဒါပေမယ့်! ဒီမှာ ထူးဆန်းတဲ့အရာတစ်ခုရှိပါတယ်
+### သို့သော် အံ့အားသင့်စရာရှိသည်
-`Package` ကော်လံကို ကြည့်ပါက ဖရုံသီးများကို အမျိုးမျိုးသော configuration များဖြင့် ရောင်းချထားသည်ကို တွေ့နိုင်ပါတယ်။ တချို့ကို '1 1/9 bushel' အတိုင်းရောင်းပြီး တချို့ကို '1/2 bushel' အတိုင်းရောင်းထားပါတယ်၊ တချို့ကို တစ်လုံးချင်း၊ တချို့ကို ပေါင်ချင်း၊ တချို့ကို အကျယ်အဝန်းအမျိုးမျိုးရှိသော box ใหญ่များဖြင့် ရောင်းထားပါတယ်။
+`Package` ကော်လံကို ကြည့်ပါက pumpkins များသည် အမျိုးမျိုးသော ပုံစံများဖြင့် ရောင်းချသည်။ တချို့ '1 1/9 bushel' တိုင်းတာမှုဖြင့်၊ တချို့သည် '1/2 bushel', တစ်ခုချင်းစီနှင့် ပေါင်နှင့်၊ နောက်တစ်ချို့က ဂေဟာပြားများအမျိုးမျိုးဖြင့် ရောင်းချသည်။
-> ဖရုံသီးများကို တိကျစွာချိန်ဆမရလွယ်ကူပါ
+> ဖရဲသီးများကို တိတိကျကျ ဝန်ချတတ်ခြင်း မလွယ်ကူပါ။
-မူရင်းဒေတာကို စူးစမ်းကြည့်ပါက `Unit of Sale` က 'EACH' သို့မဟုတ် 'PER BIN' ဖြစ်သောအခါ `Package` အမျိုးအစားသည် inch, bin, သို့မဟုတ် 'each' ဖြစ်သည်ကို တွေ့နိုင်ပါတယ်။ ဖရုံသီးများကို တိကျစွာချိန်ဆမရလွယ်ကူသောကြောင့် `Package` ကော်လံတွင် 'bushel' စာသားပါသော ဖရုံသီးများကိုသာ ရွေးပါ။
+အစေခံဒေတာကို မြှောက် မြင်ပါက `Unit of Sale` သည် 'EACH' သို့မဟုတ် 'PER BIN' ဖြစ်သော နေရာများတွင် `Package` ပုံစံအဖြစ် ပေါင် အနည်းငယ်၊ တစ်ဦးချင်း သို့မဟုတ် 'each' ဖြစ်သည်။ ဖရဲသီးတွေကို တိတိကျကျ မလေးချိန်စစ်တာ ဖြစ်သောကြောင့် `Package` ကော်လမ်တွင် 'bushel' ဆိုသော စာကြောင်းပါဝင်သည့် ဖရဲသီးများကိုသာ ရွေးချယ် filter ထားမည်။
-1. .csv import အစပိုင်းတွင် filter တစ်ခု ထည့်ပါ:
+1. ဖိုင်၏ အပေါ်ဆုံးတွင် ထည့်သွင်းမှု filter ကို ထည့်ပါ။
```python
pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]
```
- ဒေတာကို print လုပ်ပါက သင် bushel ဖြင့် ရောင်းချသော ဖရုံသီး 415 ရွေ့ခန့်သာ ရရှိနေသည်ကို တွေ့နိုင်ပါမည်။
+ ယခုအခါ ဒေတာကို print ထုတ်မည်ဆိုသည့်အခါ bushel ဖြင့်ရောင်းချသော လူကြီး pumpkin များ ၄၁၅ ကြောင့်သောအတန်းများသာ ပြရန်ကြည့်ရမည်။
-### ဒါပေမယ့်! လုပ်စရာတစ်ခုကျန်နေပါတယ်
+### သို့သော် တစ်ခုခု အနက်တစ်ခု ဆက်လုပ်ရန်ရှိသည်
-Bushel အရေအတွက်သည် row တစ်ခုချင်းစီအလိုက် ကွဲပြားနေသည်ကို သတိထားမိပါသလား? သင် bushel တစ်ခုအတိုင်းဈေးနှုန်းကို ပြသရန် ဈေးနှုန်းကို normalize လုပ်ရန် လိုအပ်ပါသည်။
+bushel အရေအတွက်သည် ကွဲပြားခြားနားသည်။ ဈေးနှုန်းကို bushel တစ်ခုခြင်းဖြင့် ပေါင်းစပ် ပြန်တွက်သားရန် လိုအပ်သည်။
-1. new_pumpkins dataframe ဖန်တီးသော block အောက်တွင် အောက်ပါ code ကို ထည့်ပါ:
+1. new_pumpkins dataframe ဖန်တီးပြီးနောက် အောက်ပါကုဒ်များထည့်ပါ။
```python
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9)
@@ -134,38 +134,38 @@ Bushel အရေအတွက်သည် row တစ်ခုချင်းစ
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 ပေါင်အလေးချိန်ရှိသင့်သည်... အရွက်များနှင့် အပင်များသည် ပိုမိုနေရာယူပြီး အလေးချိန်နည်းပါသည်၊ ထို့ကြောင့် spinach bushel တစ်ခုသည် 20 ပေါင်သာရှိသည်။" ဒါဟာ အတော်ရှုပ်ထွေးပါတယ်! Bushel-to-pound conversion ကို မလုပ်တော့ပါ၊ bushel အတိုင်းဈေးနှုန်းကိုသာ ပြသပါ။ Bushel ၏ သဘာဝကို နားလည်ရန် အရေးကြီးကြောင်းကို ဒီဖရုံသီး bushel များကို လေ့လာခြင်းမှ သက်သေပြနိုင်ပါတယ်။
+✅ [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) အစီရင်ခံချက်အရ bushel အလေးချိန်သည် ရွေးချယ်ထားသည့် ထွက်ပေါက်အမျိုးအစားပေါ် မူတည်သည်။ ပမာဏတန်ဖိုးဖြစ်သည်။ "ပုလြီး bushel ပမာဏသည် ၅၆ ပေါင်ခန့်ရှိသည်။ .. အသေအချာစောင့်ကြည့်သော အရွက်ငွေနှင့် ဟင်းသီးဟင်းရွက်များသည် ပိုမိုနေရာကုန်လျက် အလေးချိန်နည်းစွာဖြစ်၍ spinach bushel သည် ၂၀ ပေါင်သာရှိသည်။" ဆက်လက်ရှင်းလင်းမှု များသည်ခက်ခဲသော်လည်း bushel ကို ပေါင်သို့ပြောင်းနှိပ်မထားဘဲ၊ bushel နဲ့ ဈေးတွက်ပါ။ pumpkin bushel များကို လေ့လာခြင်းက သင့်ဒေတာ၏ ယန္တရားနဲ့ သဘာဝကို နက်ရှိုင်းစွာ နားလည်ရန် အရေးကြီးမှုကို ပြသသည်။
-အခုတော့ bushel အတိုင်း standardized ဖြစ်သောဈေးနှုန်းကို သုံးသပ်နိုင်ပါပြီ။ ဒေတာကို print လုပ်ပါက သင် standardized ဖြစ်သော ဒေတာကို တွေ့နိုင်ပါမည်။
+ယခု ချိန်ဆပေးပုံသည် သူတို့၏ bushel သတ်မှတ်ချက်အခြေခံ၍ တစ်ခုချင်းစီ ဈေးနှုန်းကို သုံးသပ်နိုင်သည်။ ဒေတာကို တစ်ကြိမ်လောက် print ထုတ်ပါက အသားပေးထားသည့် ပုံစံကို မြင်နိုင်ပါသည်။
-✅ Half-bushel ဖြင့် ရောင်းချသော ဖရုံသီးများသည် အတော်လေးဈေးကြီးနေသည်ကို သတိထားမိပါသလား? ဘာကြောင့်ဖြစ်နိုင်မလဲ? အကြံပြုချက် - သေးငယ်သော ဖရုံသီးများသည် ကြီးမားသော ဖရုံသီးများထက် ပိုမိုဈေးကြီးပါသည်၊ အကြောင်းကတော့ တစ် bushel အတွင်း သေးငယ်သော ဖရုံသီးများသည် အလုံးအရေအတွက်ပိုများပြီး ကြီးမားသော ဖရုံသီးတစ်လုံး၏ အလွတ်နေရာများကို ယူထားသောကြောင့် ဖြစ်နိုင်ပါသည်။
+✅ ထူးခြားသောအချက်မှာ half-bushel ဖြင့်ရောင်းခြင်းသည် အလွန်ကြီးမားသော ဈေးနှုန်းရှိသည်။ အကြောင်းရင်းကို ထောက်လှမ်းကြည့်ပါ။ အကြွင်းမဲ့နေရာရှိသော pie pumpkin တစ်ခုကြောင့် နည်းငယ်များသော စိတ်ကြိုက်မီးဖို pumpkin များသည် bushel တစ်ခုလျှင် အရေအတွက်ပိုမိုများ၍ ဈေးနှုန်းမြင့်တက်ခြင်းဖြစ်သည်။
-## Visualization Strategies
+## မှတ်ပုံတင်ပြသမှု အကြံပေးနည်းများ
-Data Scientist တစ်ဦး၏ အလုပ်တစ်ခုမှာ သူတို့အလုပ်လုပ်နေသော ဒေတာ၏ အရည်အသွေးနှင့် သဘာဝကို ဖော်ပြရန် ဖြစ်သည်။ ဒေတာ၏ အမျိုးမျိုးသော aspect များကို ဖော်ပြသော interesting visualizations, plots, graphs, နှင့် charts များကို ဖန်တီးခြင်းဖြင့် ဒေတာ၏ ဆက်နွယ်မှုများနှင့် ရှာဖွေရန်ခက်ခဲသော အပိုင်းများကို ရှင်းလင်းဖော်ပြနိုင်သည်။
+ဒေတာ သိပ္ပံပညာရှင်၏ တာဝန်အချိုးအစားတစ်ခုမှာ အလုပ်လုပ်နေသည့် ဒေတာ၏ အရည်အသွေးနှင့် သဘာဝကို ပြသခြင်းဖြစ်ပြီး၊ ယင်းအတွက် ထူးခြားသောမှတ်ပုံတင်ပြသမှုများ၊ ဇယားများ၊ ဝိုင်းမြင်ကွင်းများ ဖန်တီးသည်။ ယင်းဖြင့် မျှမျှတတမရှာရသော ဆက်နွယ်မှု နှင့် အခွာအဝေးများကို ရုပ်မြင်ပြီး သတိမထားမိရသော တန်ဖိုးများကိုအလွယ်တကူ ဆွဲထုတ်နိုင်သည်။
[](https://youtu.be/SbUkxH6IJo0 "ML for beginners - How to Visualize Data with Matplotlib")
-> 🎥 အထက်ပါပုံကို နှိပ်ပြီး ဒီသင်ခန်းစာအတွက် ဒေတာကို ရှင်းလင်းဖော်ပြနည်းကို ကြည့်ပါ။
+> 🎥 ဤရုပ်ပုံကို နှိပ်ပြီး ဤသင်ခန်းစာအတွက် ဒေတာမှတ်ပုံတင်ပြသမှု ဗီဒီယိုတိုကို ကြည့်ပါ။
-Visualizations များသည် ML technique အတွက် သင့်လျော်သောနည်းလမ်းကို ဆုံးဖြတ်ရန်လည်း အထောက်အကူပြုနိုင်သည်။ Scatterplot တစ်ခုသည် လိုင်းတစ်ခုလိုမျိုးဖြစ်နေသည်ကို တွေ့ပါက ဒေတာသည် linear regression exercise အတွက် သင့်လျော်သည်ကို ပြသနိုင်သည်။
+မှတ်ပုံတင်ပြသမှုများသည် ဒေတာအတွက် ကိုက်ညီသော မက်ရှင်လေ့လာမှုနည်းလမ်းရွေးချယ်ရာ၌ အကူအညီဖြစ်စေနိုင်သည်။ ဥပမာ - scatterplot တစ်ခုသည် အတန်းလိုက်လိုက်ဟန်ချက်ကို သိလိုသော ရာဇဝင်သို့လိုက်လျောညီထွေရှိသည်ဆိုပါက linear regression လေ့လာမှုအတွက် ကောင်းမွန်သော ဒေတာဖြစ်ကြောင်း ပြသသည်။
-Jupyter notebooks တွင် အလုပ်လုပ်ရန် သင့်လျော်သော data visualization library တစ်ခုမှာ [Matplotlib](https://matplotlib.org/) ဖြစ်သည် (သင်မကြာသေးမီက သင်ခန်းစာတွင်လည်း Matplotlib ကို တွေ့ခဲ့ပါသည်)။
+Jupyter notebook များတွင် အသုံးပြုရန်သင့်တော်သော ဒေတာမှတ်ပုံတင်စာကြည့်တိုက်သည် [Matplotlib](https://matplotlib.org/) ဖြစ်သည် (ခန့်မှန်းချိန်တွင် မကြာခဏ တွေ့ရှိရမည့်အခြေအနေ)။
-> [ဒီ tutorials](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott) တွင် data visualization ကို ပိုမိုလေ့လာပါ။
+> စိတ်ဝင်စားသူများအတွက် [ဤသင်ခန်းစာများ](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott) တွင် ဒေတာမှတ်ပုံတင်ခြင်းနည်းပညာကို ပိုမိုတွေ့မြင်နိုင်သည်။
-## လေ့ကျင့်ခန်း - Matplotlib ကို စမ်းသပ်ခြင်း
+## လေ့ကျင့်ခန်း - Matplotlib ဖြင့် လေ့လာခြင်း
-သင်ဖန်တီးထားသော dataframe အသစ်ကို ပြသရန် အခြေခံ plot များကို ဖန်တီးကြည့်ပါ။ အခြေခံ line plot တစ်ခုက ဘာကို ပြသမလဲ?
+သင်สร้างထားသော များထဲတွင် ပုံစံပြုလုပ်မှု အခြေခံပုံများကို ဖန်တီးကြည့်ပါ။ လိုင်းပုံရိပ်အခြေခံထား၍ ဘာကို ပြသမည်လဲ?
-1. ဖိုင်၏ အပေါ်ပိုင်း Pandas import အောက်တွင် Matplotlib ကို import လုပ်ပါ:
+1. pandas import ရှိသည့်နောက် ကျောဆုံးတွင် Matplotlib ကို import ပြုလုပ်ပါ။
```python
import matplotlib.pyplot as plt
```
-1. notebook အားလုံးကို ပြန်လည် run လုပ်ပါ။
-1. notebook အောက်ဆုံးတွင် box အဖြစ် ဒေတာကို plot လုပ်ရန် cell တစ်ခု ထည့်ပါ:
+1. notebook အားလုံးကို ပြန်လည် အလုပ်လုပ်စေပါ။
+1. notebook အောက်ဆုံးတွင် data ကို box plot အဖြစ် ပုံဖော်ရန် စာသားထည့်ပါ။
```python
price = new_pumpkins.Price
@@ -174,36 +174,121 @@ Jupyter notebooks တွင် အလုပ်လုပ်ရန် သင့်
plt.show()
```
- 
+ 
- ဒီ plot သုံးစွဲရန် အသုံးဝင်ပါသလား? ဘာအကြောင်းကြောင့် အံ့ဩမိပါသလဲ?
+ ဤပုံရိပ်သည် အသုံးဝင်ပါသလား? ဘာသာတခုခု သင့်အား အံ့အားသင့်စေပါသလား?
- ဒါဟာ အသုံးဝင်တဲ့ plot မဟုတ်ပါဘူး၊ ဒါက သင့်ဒေတာကို တစ်လအတွင်း point များအဖြစ် ပြသထားတာသာ ဖြစ်ပါတယ်။
+ ဤသည်အတော် မအသုံးဝင်သေးပါဘူး၊ လပိုင်း အတွင်း မျှဝေထားသောတစ်ချက်စာနယ်ဇင်းအဖြစ် ဒေတာကိုပဲပြသည်။
-### အသုံးဝင်အောင်လုပ်ပါ
+### အသုံးဝင်စေပါ
-Charts များကို အသုံးဝင်အောင်လုပ်ရန် ဒေတာကို အုပ်စုဖွဲ့ရန် လိုအပ်ပါသည်။ ဒေတာကို အုပ်စုဖွဲ့ပြီး y axis တွင် လများကို ပြသပြီး ဒေတာသည် distribution ကို ပြသသော plot တစ်ခုကို ဖန်တီးကြည့်ပါ။
+အသုံးဝင်သော ဇယားဖန်တီးရန် ဒေတာကို အဖွဲ့ခွဲရန်လိုအပ်သည်။ y axis သည် လပိုင်းများကို ပြပါက ဒေတာ သိမျှဝေမှုရိုက်ချက်ကို ပြနိုင်ပါသည်။
-1. Grouped bar chart ဖန်တီးရန် cell တစ်ခု ထည့်ပါ:
+1. အဖွဲ့ခွဲထားသော ဘားဇယားရေးရန် စာသားထည့်ပါ။
```python
new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar')
plt.ylabel("Pumpkin Price")
```
- 
+ 
+
+ ဤသည်ဟာ ပိုအသုံးဝင်သော ဒေတာမှတ်ပုံတင်ပြသမှု တစ်ခုဖြစ်သည်။ pumpkin ဈေးနှုန်းအမြင့်ဆုံးသည် စက်တင်ဘာနှင့် အောက်တိုဘာတွင် ဖြစ်သည်ဟု ဆိုလိုသည်။ သင့်စိတ်ကူးနှင့် ကိုက်ညီပါသလား? ဘာကြောင့် ညီမညီပါသလဲ?
+
+## လေ့ကျင့်ခန်း - Seaborn ဖြင့် လေ့လာခြင်း
+
+Matplotlib သည် များစွာကိုင်တွယ်နိုင်သော်လည်း တောက်ပသောဇယားဖန်တီးရန် ကုဒ်များစွာလိုအပ်ပါသည်။ [Seaborn](https://seaborn.pydata.org/) သည် Matplotlib ပေါ်တွင် တည်ဆောက်ပြီး စာရင်းများနှင့် အချက်အလက်များကို စတိုင်လ် ဆွဲရန်၊ ဖန်တီးရန် လွယ်ကူစေသည်။ Seaborn သည် Matplotlib အ объက်များ ပြန်လည်ထုတ်ပေးသဖြင့် Matplotlib အသုံးပြုနည်းများကို ဆက်လက်အသုံးပြုနိုင်သည်။
+
+> Seaborn ဆော့ဖ်ဝဲ မရှိသေးရင် `pip install seaborn` ဖြင့် 설치ပါ။
+
+1. စာရွက်ပေါ်တွင် အချိတ်ဆက်များအောက် နေရာတွင် Seaborn ကို `sns` အဖြစ် import ပြုလုပ်ပါ။
+
+ ```python
+ import seaborn as sns
+ ```
+
+### ဆက်နွယ်မှုများ ပြသရန် scatter plot များ
+
+မော်ဒယ်တည်ဆောက်မှု မတိုင်မီ ဒေတာစူးစမ်းရာ၌ လက္ခဏာများအကြား _ဆက်နွယ်မှုများ_ ရှာဖွေရန်အရေးကြီးသည်။ [scatter plot](https://en.wikipedia.org/wiki/Scatter_plot) သည် ထိပ်တန်းကိရိယာတစ်ခုဖြစ်သည်။ ပြင်ပတွင် အချက်များသည် တန်းလိုက်လိုက်လံများခဲ့လျှင်, လက္ခဏာနှစ်ခုမှာဆက်နွယ်မှုရှိနိုင်၍ linear regression မော်ဒယ်လုပ်ငန်းအတွက် အခြေခံဖြစ်နိုင်ပါသည်။
+
+1. ယခင်စက်တင်ငွေမှတ်ပုံတင်အား Seaborn ၏ [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) ဖြင့် ပြန်ဖန်တီးပါ - dataframe ကော်လံများကို တိုက်ရိုက်အသုံးပြုသည်။
+
+ ```python
+ sns.relplot(x="Price", y="Month", data=new_pumpkins)
+ ```
+
+ 
+
+ ကော်လံအမည်များ နှင့် dataframe ကို ဖြတ်သွားပြီး Seaborn သည် axis အမည်များကို သင့်အတွက် ဖြည့်စည်းပေးသည်။
+
+2. `kind="line"` ကို ပေးလိုက်၍ လိုင်းပုံဖော်လည်းလုပ်နိုင်သည်။ Seaborn သည် လိုင်းပေါ်တွင် ယုံကြည်မှုအပိုင်းအခြားများကို ခြုံဆိုင်ခြားပေးသည်။
+
+ ```python
+ sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins)
+ ```
+
+ 
+
+ ဤဒေတာသည် ဆူညံမှုများပါဝင်သဖြင့် လိုင်းပုံရိပ်သည် ထိပ်တန်းရှင်းလင်းမှုမရှိသဘောဖြစ်သည် - သို့သော် Seaborn တွင် ဇယားအမျိုးအစား ပြောင်းလဲရန် အလွန်လွယ်ကူသည်ကို ပြသသည်။
+
+### အကြောင်းအမျိုးမျိုးကို ပြသရန် Bar chart များ
- ဒါဟာ ပိုမိုအသုံးဝင်သော data visualization ဖြစ်ပါတယ်! ဖရုံသီးများ၏ အမြင့်ဆုံးဈေးနှုန်းသည် စက်တင်ဘာနှင့် အောက်တိုဘာတွင် ဖြစ်သည်ကို ပြသနေသည်။ ဒါဟာ သင့်မျှော်လင့်ချက်နှင့် ကိုက်ညီပါသလား? ဘာကြောင့်/ဘာကြောင့်မဟုတ်ပါလဲ?
+
+မကြာသေးမီက မင်းဟာလက်ဆောင်အဖြစ် ဒေတာတွေကို စုပုံပြီး Matplotlib နဲ့ ဘားဇယားချတ် ဖြတ်ချက်တခု ပြုလုပ်ခဲ့တယ်။ Seaborn ရဲ့ [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) (categorical plot) က စုပေါင်းခြင်းနဲ့ စုပေါင်းမှုကို မင်းအတွက် လုပ်ပေးနိုင်ပါတယ်။ ပုံမှန်အားဖြင့် `kind="bar"` က အမျိုးအစားတိုင်းရဲ့ ပျမ်းမျှတန်ဖိုးကို ပြသပြီး ယုံကြည်စိတ်ချနိုင်မှု အစိတ်အပိုင်းကို အနက်ရောင်လိုင်းနဲ့ပြသော့ပါတယ်။
+
+1. လတိုင်း ပျမ်းမျှစျေးနှုန်းအတွက် ဘားချတ် တစ်ခု ဖန်တီးပါ။
+
+ ```python
+ sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar")
+ ```
+
+ 
+
+ ဒါက Matplotlib နဲ့ တွေ့ရသလို အတည်ပြုပြထားတာပါ — စျေးနှုန်းတွေ က စက်တင်ဘာနဲ့ အောက်တိုဘာ လအတွင်း ပိုမိုမြင့်တက်တယ် — ဒါပေမဲ့ Seaborn ကလည်း လတိုင်းအတွင်း စျေးနှုန်း _ရောနှောမှု_ ရှိတာကို မြင်သာစေပါတယ်။
+
+### အပူမြေပုံများဖြင့် သက်ဆိုင်မှုများကို ပြသောကြောင့်
+
+Scatter plot တွေက တစ်ခါ သုံးသော အနည်းဆုံး ကွဲပြားမှုနှစ်ခုကို နှိုင်းယှဉ်သည်။ အရေအတွက်စာရင်း အနည်းများရှိတဲ့အခါ [heatmap](https://en.wikipedia.org/wiki/Heat_map) က လုံး၀ ကော်လံအတွဲတိုင်းရဲ့ ဆက်စပ်မှုခွန်အားကို တစ်ပြိုင်နက်တည်း တွေ့မြင်ခွင့်ပြုသည်။ ဒါဟာ မော်ဒယ်ထဲမှာ ဘာများထည့်မလဲ သတ်မှတ်တဲ့အရင်က ဆက်စပ်မှုများကိုရှာဖွေရန် နည်းလမ်း တစ်ခုဖြစ်ပြီး (ပြီးတော့ classification ရဲ့ confusion matrix များကို ပြသရာမှာကလည်း ဒီလို chart က အလားတူသုံးပါတယ်)။
+
+1. Pandas နဲ့ correlation matrix တည်ဆောက်ပြီး Seaborn ရဲ့ [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html) နဲ့ ဆွဲပါ။ `annot=True` ရွေးချယ်မှုက ဆက်စပ်မှုတန်ဖိုးတွေကို တစ်စက်စက်ပေါ်မှာ ပုံနှိပ်ပေးပါသည်။
+
+ ```python
+ correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()
+ sns.heatmap(correlations, annot=True, cmap="coolwarm")
+ ```
+
+ 
+
+ `1` (သို့မဟုတ် `-1`) နားကပ်သောတန်ဖိုးများက ကော်လံများသည် အပြင်းအထန် _တန်းလိုက်_ ဆက်စပ်မှုရှိကြောင်း ဆိုလိုသည်။ `Low Price` နဲ့ `High Price` တို့သည် အလွန်နီးစပ် ပြေသောဆက်စပ်မှုရှိသည်ကို သတိပေးပါ။ `Month` ကတော့ စျေးနှုန်းနှင့် တစ်ဖက်ဖက်မှ တန်းလိုက်ဆက်စပ်မှု သာ့နည်းနည်းရှိနေသည် — ဘားချတ်ထက်ဘယ်လိုက စက်တင်ဘာနဲ့ အောက်တိုဘာ လအတွင်း အရောင်ပြတ်သားတဲ့ ရာသီဦးတန်းရှိစေသည်ကို ဖော်ပြခဲ့သည်။ ဒါက သင်ခန်းစာတစ်ခု ဖြစ်ပါတယ် - correlation coefficient က _တိုက်ရိုက် စာကြောင်း_ ဆက်စပ်မှုများကို တိုင်းတာသောကြောင့် ရာသီဥတု သို့မဟုတ် အခြားအမျိုးအစား မဟုတ်သော ရွေ့လျားမှုများအား မတွေ့နိုင်တာပါ။ ✅ ဘားချတ်စာရင်းနဲ့အတူ အပူမြေပုံ တို့ကို ကြည့်သည့်အခါ ဘယ်တော့မှ ဘယ်ကော်လံတွေကို အသုံးပြုမလဲ ဆုံးဖြတ်ဖို့ ဘာကြောင့် အသုံးဝင်သလဲ?
+
+### Matplotlib နဲ့ Seaborn?
+
+နှစ်ခုလုံးကို သိထားဖို့ တန်ဖိုးရှိပါတယ်။
+
+- **Matplotlib** က ချတ်တစ်ခု၏ အစိတ်အပိုင်း အားလုံးကို သေချာ ထိန်းချုပ်နိုင်စွမ်း ရှိပြီး အခြား Python ပုံဆွဲစာကြည့်တိုက်များအတွက် အခြေခံဖြစ်ပါသည်။
+- **Seaborn** က မြင့်မားသောအဆင့် လုပ်ဆောင်မှုများနဲ့ သတင်းအချက်အလက် ရေးဆွဲချက်များအတွက် ဆွဲဆောင်မှုရှိတဲ့ ပုံသဏ္ဍာန်များကို ပေးပြီး ဒေတာဖရိမ်များနဲ့ တိုက်ရိုက် ဝင်ရောက်လေ့လာနိုင်သောကြောင့် အမြန်ရွေးချယ်မှုအတွက် အသုံးဝင်သည်။
+
+ပုံမှန်လုပ်ငန်းစဉ်မှာ လျင်မြန်စွာ ဒေတာလေ့လာဖို့ Seaborn ကို အသုံးပြုပြီး အကြောင်းအရာ အသေးစိတ်ပြင်ဆင်ဖို့ Matplotlib ကို သုံးပါတယ်။
---
-## 🚀Challenge
+## 🚀စိန်ခေါ်မှု
+
+Matplotlib နဲ့ Seaborn မှ ပေးသည့် မတူညီသော ဗီဇွယ်ဖိတ်ရှင်းအမျိုးအစားများကို စူးစမ်းပါ။ regression ပြဿနာများအတွက် ဘယ်အမျိုးအစားတွေ အကောင်းဆုံးလဲ?
+
+## [စာသင်ခန်း ကြိုတင် စစ်ဆေးခြင်း](https://ff-quizzes.netlify.app/en/ml/)
+
+## ပြန်လည် သုံးသပ်ခြင်း & ကိုယ်တိုင်လေ့လာခြင်း
+
+ဒေတာဗီဇွယ်ဖိတ်ရှင်း များစွာကို ကြည့်ပြီး စာရင်းပြုလုပ်ပါ။ အသုံးဝင်တဲ့ စာကြည့်တိုက်အမျိုးအစားများနဲ့ မြင်သာဆုံးအလုပ်အမူများကို မှတ်သားပါ၊ ဥပမာ 2D ဗီဇွယ်ဖိတ်ရှင်း နှင့် 3D ဗီဇွယ်ဖိတ်ရှင်းအတွက် ဘယ်လိုမျိုးများကို တွေ့ရှိသလဲ?
-Matplotlib မှ ပေးသော visualization အမျိုးအစားများကို စူးစမ်းပါ။ Regression problems အတွက် သင့်လျော်သော အမျိုးအစားများက ဘာတွေလဲ?
+## သတ်မှတ်ချက်
-## [Post-lecture quiz](https://ff-quizzes.netlify
+[ဗီဇွယ်ဖိတ်ရှင်း စူးစမ်းခြင်း](assignment.md)
---
-**ဝက်ဘ်ဆိုက်မှတ်ချက်**:
-ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးစားနေသော်လည်း၊ အလိုအလျောက်ဘာသာပြန်ဆိုမှုများတွင် အမှားများ သို့မဟုတ် မတိကျမှုများ ပါဝင်နိုင်သည်ကို ကျေးဇူးပြု၍ သတိပြုပါ။ မူရင်းဘာသာစကားဖြင့် ရေးသားထားသော စာရွက်စာတမ်းကို အာဏာတည်သော ရင်းမြစ်အဖြစ် သတ်မှတ်သင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူကူးဘာသာပြန်ဝန်ဆောင်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်ကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော နားလည်မှုမှားများ သို့မဟုတ် အဓိပ္ပာယ်မှားများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။
\ No newline at end of file
+
+**ပြောကြားချက်**
+ဤစာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးပမ်းနေသော်လည်း၊ စက်ကိရိယာဘာသာပြန်ခြင်းများတွင် အမှားများ သို့မဟုတ် မှားယွင်းချက်များ ပါဝင်နိုင်ကြောင်း သတိပြုပါရန် လိုအပ်ပါသည်။ မူလစာတမ်းကို မူရင်းဘာသာဖြင့်သာ ယုံကြည်စိတ်ချရသော အချက်အလက်အဖြစ် သတ်မှတ်သင့်သည်။ အရေးကြီးသည့် သတင်းအချက်အလက်များအတွက် ပရော်ဖက်ရှင်နယ် လူသားဘာသာပြန်သူဝန်ဆောင်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်ချက်ကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော နားလည်မှုကွာခြားမှုများ သို့မဟုတ် မမှန်ကန်သော အသုံးပြုမှုများအတွက် ကျွန်ုပ်တို့ တာဝန်မခံပါ။
+
\ No newline at end of file
diff --git a/translations/my/2-Regression/2-Data/solution/notebook.ipynb b/translations/my/2-Regression/2-Data/solution/notebook.ipynb
index 0d01a744c..ecc1667d2 100644
--- a/translations/my/2-Regression/2-Data/solution/notebook.ipynb
+++ b/translations/my/2-Regression/2-Data/solution/notebook.ipynb
@@ -3,7 +3,9 @@
{
"cell_type": "markdown",
"metadata": {},
- "source": []
+ "source": [
+ "## ဖရုံကင်များအတွက် လိုင်းနာ နှုတ်ဆက်ရေး - သင်ခန်းစာ ၂\n"
+ ]
},
{
"cell_type": "code",
@@ -220,6 +222,7 @@
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
"pumpkins = pd.read_csv('../../data/US-pumpkins.csv')\n",
"\n",
"pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]\n",
@@ -383,18 +386,78 @@
"plt.ylabel(\"Pumpkin Price\")"
]
},
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Seaborn ဖြင့် မြင်ကွင်းပြခြင်း\n",
+ "\n",
+ "[Seaborn](https://seaborn.pydata.org/) သည် Matplotlib အပေါ်ယံတွင် တည်ဆောက်ထားပြီး dataframes နှင့် တိုက်ရိုက် ဆောင်ရွက်နိုင်သောကြောင့် အလွန်နည်းနည်းသော ကုဒ်ဖြင့် ဆွဲဆောင်မှုရှိသော စာရင်းအင်းဆိုင်ရာ ကွက်တိများကို မျက်နှာပြင်ပေါ် ပုံဖော်ပေးနိုင်သည်။\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### ဆက်စပ်မှုများကို ပြသရန် စက်တာပလော့များ \n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", kind=\"line\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### ဖြန့်ဖြူးမှုများပြသရန် ဘားဇယားများ \n"
+ ]
+ },
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
- "source": []
+ "source": [
+ "sns.catplot(x=\"Month\", y=\"Price\", data=new_pumpkins, kind=\"bar\")"
+ ]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "\n---\n\n**ဝက်ဘ်ဆိုက်မှတ်ချက်**: \nဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးစားနေပါသော်လည်း၊ အလိုအလျောက်ဘာသာပြန်မှုများတွင် အမှားများ သို့မဟုတ် မမှန်ကန်မှုများ ပါဝင်နိုင်သည်ကို ကျေးဇူးပြု၍ သတိပြုပါ။ မူရင်းစာရွက်စာတမ်းကို ၎င်း၏ မူလဘာသာစကားဖြင့် အာဏာတည်သောရင်းမြစ်အဖြစ် သတ်မှတ်ရန် လိုအပ်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူကောင်းမွန်သော ပရော်ဖက်ရှင်နယ်ဘာသာပြန်ဝန်ဆောင်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်မှုကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော နားလည်မှုမှားများ သို့မဟုတ် အဓိပ္ပါယ်မှားများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။\n"
+ "### ဆက်စပ်မှုများကို ပြသရန် အပူမြေပုံများ\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()\n",
+ "sns.heatmap(correlations, annot=True, cmap=\"coolwarm\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "---\n\n\n**ပြောကြားချက်**\nဤစာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးပမ်းနေသော်လည်း၊ စက်ကိရိယာဘာသာပြန်ခြင်းများတွင် အမှားများ သို့မဟုတ် မှားယွင်းချက်များ ပါဝင်နိုင်ကြောင်း သတိပြုပါရန် လိုအပ်ပါသည်။ မူလစာတမ်းကို မူရင်းဘာသာဖြင့်သာ ယုံကြည်စိတ်ချရသော အချက်အလက်အဖြစ် သတ်မှတ်သင့်သည်။ အရေးကြီးသည့် သတင်းအချက်အလက်များအတွက် ပရော်ဖက်ရှင်နယ် လူသားဘာသာပြန်သူဝန်ဆောင်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်ချက်ကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော နားလည်မှုကွာခြားမှုများ သို့မဟုတ် မမှန်ကန်သော အသုံးပြုမှုများအတွက် ကျွန်ုပ်တို့ တာဝန်မခံပါ။\n\n"
]
}
],
@@ -424,13 +487,7 @@
"hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d"
}
},
- "orig_nbformat": 2,
- "coopTranslator": {
- "original_hash": "95726f0b8283628d5356a4f8eb8b4b76",
- "translation_date": "2025-09-06T11:53:15+00:00",
- "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
- "language_code": "my"
- }
+ "orig_nbformat": 2
},
"nbformat": 4,
"nbformat_minor": 2
diff --git a/translations/my/6-NLP/4-Hotel-Reviews-1/README.md b/translations/my/6-NLP/4-Hotel-Reviews-1/README.md
index 6aa2a8b7f..0b1bafb13 100644
--- a/translations/my/6-NLP/4-Hotel-Reviews-1/README.md
+++ b/translations/my/6-NLP/4-Hotel-Reviews-1/README.md
@@ -1,141 +1,210 @@
-# ဟိုတယ်ပြန်လည်သုံးသပ်မှုများနှင့် စိတ်ခံစားမှုခွဲခြမ်းစိတ်ဖြာမှု - ဒေတာကို အလုပ်လုပ်စေခြင်း
+# ဟိုတယ် သုံးသပ်ချက်များဖြင့် စိတ်ခံစားချက် ခွဲခြမ်းစိတ်ဖြာခြင်း - ဒေတာကို ပြုပြင်ခြင်း
-ဤအပိုင်းတွင် သင်သည် ယခင်သင်ခန်းစာများတွင် သင်ယူခဲ့သော နည်းလမ်းများကို အသုံးပြု၍ ဒေတာအစုအဝေးကြီးတစ်ခုကို စူးစမ်းလေ့လာမှု ဒေတာခွဲခြမ်းစိတ်ဖြာမှု (EDA) ပြုလုပ်မည်ဖြစ်သည်။ အမျိုးမျိုးသော ကော်လံများ၏ အသုံးဝင်မှုကို နားလည်ပြီးနောက် သင်သည် အောက်ပါအရာများကို သင်ယူမည်ဖြစ်သည်-
+ဤအပိုင်းတွင် သင်သည် ယခင်သင်ခန်းစာများတွင် သင်ယူခဲ့သည့် နည်းပညာများကို အသုံးပြု၍ ကြီးမားသော ဒေတာစုစည်းမှုကို လေ့လာသုံးသပ်မည်ဖြစ်သည်။ ကော်လံအမျိုးမျိုး၏ အသုံးဝင်မှုကို သေချာစွာ နားလည်သည့်အခါ သင်သည် အောက်ဖော်ပြပါအချက်များကို သင်ယူမည်ဖြစ်သည်။
-- မလိုအပ်သော ကော်လံများကို ဖယ်ရှားနည်း
-- ရှိပြီးသား ကော်လံများအပေါ် အခြေခံပြီး ဒေတာအသစ်များကို တွက်ချက်နည်း
-- နောက်ဆုံး စိန်ခေါ်မှုတွင် အသုံးပြုရန်အတွက် ရလဒ်အဖြစ်ရသော ဒေတာအစုအဝေးကို သိမ်းဆည်းနည်း
+- မလိုအပ်သော ကော်လံများကို မည်သို့ ဖယ်ရှားရန်
+- ရှိပြီးသား ကော်လံများအပေါ် မူတည်၍ အချက်အလက်အသစ်များကို မည်သို့တွက်ချက်ရန်
+- နောက်ဆုံး စိန်ခေါ်မှုအတွက် အသုံးပြုနိုင်ရန် ရလဒ်အဖြစ်ကာလတစ်ခုကို မည်သို့ သိမ်းဆည်းရန်
-## [Pre-lecture quiz](https://ff-quizzes.netlify.app/en/ml/)
+## [အကြိုသင်ခန်းစာ စစ်တမ်း](https://ff-quizzes.netlify.app/en/ml/)
-### အကျဉ်းချုပ်
+### နိဒါန်း
-ယခုအချိန်ထိ သင်သည် စာသားဒေတာသည် ကိန်းဂဏန်းဒေတာများနှင့် မတူကြောင်း သင်ယူခဲ့ပြီဖြစ်သည်။ လူသားများရေးသားထားသည့် သို့မဟုတ် ပြောဆိုထားသည့် စာသားများကို ပုံစံများနှင့် မကြာခဏဖြစ်သော စကားလုံးများ၊ စိတ်ခံစားမှုများနှင့် အဓိပ္ပါယ်များကို ရှာဖွေခွဲခြမ်းနိုင်သည်။ ဤသင်ခန်းစာတွင် သင်သည် အမှန်တကယ်သော ဒေတာအစုအဝေးနှင့် အမှန်တကယ်သော စိန်ခေါ်မှုတစ်ခုကို ရင်ဆိုင်မည်ဖြစ်သည် - **[515K Hotel Reviews Data in Europe](https://www.kaggle.com/jiashenliu/515k-hotel-reviews-data-in-europe)** (ဤဒေတာသည် [CC0: Public Domain license](https://creativecommons.org/publicdomain/zero/1.0/) ဖြင့် ထုတ်ဝေထားသည်)။ ဒေတာကို Booking.com မှ ပြည်သူ့ရင်းမြစ်များမှ စုဆောင်းထားပြီး ဒေတာဖန်တီးသူမှာ Jiashen Liu ဖြစ်သည်။
+ယခုအထိ သင်သည် စာသား ဒေတာသည် ကိန်းဂဏန်း ဒေတာအမျိုးအစားများနှင့် မတူကြောင်း သင်ခဲ့ပါပြီ။ မည်သည့် စာသားကို လူသားရေးထား သို့မဟုတ် ပြောဆိုထားလည်း ပုံစံများနှင့် ဖြစ်ပေါ်မှုများ၊ စိတ်ခံစားချက်နှင့် အဓိပ္ပါယ် များကို ခွဲခြမ်းစိတ်ဖြာနိုင်ပါသည်။ ဤသင်ခန်းစာသည် သက်ဝင်နေသော ဒေတာစုစည်းမှုနှင့် စိန်ခေါ်မှုဖြစ်သော **[515K ဟိုတယ် သုံးသပ်ချက် ဒေတာများ ဥရောပတွင်](https://www.kaggle.com/jiashenliu/515k-hotel-reviews-data-in-europe)** ကို ခွဲခြမ်းစိတ်ဖြာပြီး [CC0: Public Domain လိုင်စင်](https://creativecommons.org/publicdomain/zero/1.0/) ပါဝင်သည်။ ၎င်းသည် Booking.com မှ စုပြီး လူသုံး ဝင်း_နိုင်သော လုပ်ဆောင်ချက်များမှ ရယူထားသည်။ ဒေတာစုစည်းမှုဖန်တီးသူမှာ Jiashen Liu ဖြစ်သည်။
### ပြင်ဆင်မှု
-သင်လိုအပ်မည့်အရာများ-
+သင်လိုအပ်သည်မှာ-
-* Python 3 ဖြင့် .ipynb notebooks များကို အလုပ်လုပ်စေနိုင်ရမည်
+* Python 3 ဖြင့် .ipynb notebook များကို လည်ပတ်နိုင်စွမ်း
* pandas
-* NLTK, [ဤနေရာတွင် ဒေသတွင်းတွင် ထည့်သွင်းပါ](https://www.nltk.org/install.html)
-* Kaggle တွင် ရရှိနိုင်သည့် ဒေတာအစုအဝေး [515K Hotel Reviews Data in Europe](https://www.kaggle.com/jiashenliu/515k-hotel-reviews-data-in-europe)။ ဒေတာကို ဖိုင်ဖွင့်ပြီးနောက် 230 MB ခန့်ရှိသည်။ ဒေတာကို ဤ NLP သင်ခန်းစာများနှင့် ဆက်စပ်သော `/data` ဖိုလ်ဒါတွင် ဒေါင်းလုပ်ဆွဲထားပါ။
+* NLTK၊ [သင်ရွေးချယ်၍ တင်သွင်းရမည့် အကြံပြုချက်](https://www.nltk.org/install.html)
+* Kaggle သာလျှင်ရရှိနိုင်သော ဒေတာစုစည်းမှု [515K ဟိုတယ် သုံးသပ်ချက် ဒေတာများ ဥရောပတွင်](https://www.kaggle.com/jiashenliu/515k-hotel-reviews-data-in-europe)။ ဖိုင်သည် ဘာမြားဖြစ်ပါသည် 230MB ခန့်ဖြစ်ပြီး unzip လုပ်လျှင် ရရှိသည်။ ဒီ NLP သင်ခန်းစာများနှင့် ဆက်စပ်သည့် /data ဖိုလ်ဒါအတွင်း သိမ်းဆည်းပါ။
-## စူးစမ်းလေ့လာမှု ဒေတာခွဲခြမ်းစိတ်ဖြာမှု
+## လေ့လာစူးစမ်းအချက်အလက် ခွဲခြမ်းစိတ်ဖြာခြင်း
-ဤစိန်ခေါ်မှုသည် စိတ်ခံစားမှုခွဲခြမ်းစိတ်ဖြာမှုနှင့် ဧည့်သည်ပြန်လည်သုံးသပ်မှုအမှတ်များကို အသုံးပြု၍ ဟိုတယ်အကြံပြုမှုဘော့တစ်ခုကို တည်ဆောက်နေသည်ဟု သင်ယူထားသည်။ သင်အသုံးပြုမည့် ဒေတာအစုအဝေးတွင် မြို့ကြီး ၆ ခုရှိ ဟိုတယ် ၁၄၉၃ ခုမှ ပြန်လည်သုံးသပ်မှုများ ပါဝင်သည်။
+ယခု စိန်ခေါ်မှုမှာ သင်သည် ဟိုတယ်အကြံပြု ဆော့ဖ်ဝဲ စနစ်တစ်ခုကို စိတ်ခံစားချက် ခွဲခြမ်းစိတ်ဖြာခြင်းနှင့် ဧည့်သည် သုံးသပ်ချက် အဆင့်များဖြင့် တည်ဆောက်နေောင်းသည်ဟု သတ်မှတ်ထားသည်။ သင်အသုံးပြုမည့် ဒေတာစုစည်းမှုတွင် ၆ မြို့ရှိ ဟိုတယ် ၁၄၉၃ ခု၏ သုံးသပ်ချက်များပါဝင်သည်။
-Python, ဟိုတယ်ပြန်လည်သုံးသပ်မှုဒေတာအစုအဝေးနှင့် NLTK ၏ စိတ်ခံစားမှုခွဲခြမ်းစိတ်ဖြာမှုကို အသုံးပြု၍ သင်သည် အောက်ပါအရာများကို ရှာဖွေနိုင်သည်-
+Python သုံး၍ ဟိုတယ် သုံးသပ်ချက်ဒေတာစုစည်းမှုနှင့် NLTK ၏ စိတ်ခံစားချက် ခွဲခြမ်းစိတ်ဖြာမှုကို အသုံးပြုပြီး မေးခွန်းအချို့ကို ရှာဖွေနိုင်ပါသည်-
-* ပြန်လည်သုံးသပ်မှုများတွင် အကြိမ်ရေအများဆုံးဖြစ်သော စကားလုံးများနှင့် စကားစုများက ဘာတွေလဲ။
-* ဟိုတယ်ကို ဖော်ပြသည့် *tags* များသည် ပြန်လည်သုံးသပ်မှုအမှတ်များနှင့် ဆက်စပ်နေပါသလား (ဥပမာ- *Family with young children* အတွက် အနုတ်လက္ခဏာပြန်လည်သုံးသပ်မှုများသည် *Solo traveller* ထက် ပိုများနေပါသလား၊ ဤဟိုတယ်သည် *Solo travellers* အတွက် ပိုသင့်တော်ကြောင်း ပြသနိုင်သည်)။
-* NLTK ၏ စိတ်ခံစားမှုအမှတ်များသည် ဟိုတယ်ပြန်လည်သုံးသပ်သူ၏ ကိန်းဂဏန်းအမှတ်နှင့် 'သဘောတူ' နေပါသလား။
+* သုံးသပ်ချက်တွင် အများဆုံး အသုံးပြုသော စကားလုံးနှင့် စကားစုများက ဘာတွေဖြစ်ကြသလဲ?
+* ဟိုတယ်ကို ဖော်ညွှန်သည့် တရားဝင် *tags* များသည် သုံးသပ်ချက်အဆင့်နှင့် ကိုက်ညီမှုရှိပါသလား (ဥပမာ- *ကလေးငယ် မိသားစု* အတွက် မကြာခဏ နောက်ဆုတ်သုံးသပ်ချက်များရှိပြီး *တစ်ဦးတည်း ခရီးသွား* များအတွက်ကောင်းမွန်မှုများ ပိုရှိသည်ဟု သုံးသပ်ကြသည်ဟု မျှောလင့်နိုင်သလား?)
+* NLTK စိတ်ခံစားချက် အဆင့်များသည် ဟိုတယ် သုံးသပ်သူ၏ ကိန်းဂဏန်း အဆင့်နှင့် ကိုက်ညီမှု ရှိပါသလား?
-#### ဒေတာအစုအဝေး
+#### ဒေတာစုစည်းမှု
-သင်ဒေါင်းလုပ်ဆွဲပြီး ဒေသတွင်းတွင် သိမ်းဆည်းထားသော ဒေတာအစုအဝေးကို စူးစမ်းကြည့်ပါ။ ဖိုင်ကို VS Code သို့မဟုတ် Excel ကဲ့သို့သော တည်းဖြတ်ရေးဆော့ဖ်ဝဲတစ်ခုဖြင့် ဖွင့်ပါ။
+သင်ဒေါင်းလုပ်ပြီး ပြီးနောက် ဒေတာစုစည်းမှုကို စူးစမ်းကြည့်မည်။ VS Code သို့မဟုတ် Excel ကဲ့သို့သော editor တွင် ဖိုင်ကို ဖွင့်ပါ။
-ဒေတာအစုအဝေးတွင် ပါဝင်သော ခေါင်းစဉ်များမှာ အောက်ပါအတိုင်းဖြစ်သည်-
+ဒေတာစုစည်းမှုတွင် ခေါင်းစဉ်များမှာ အောက်ပါအတိုင်းဖြစ်ပါသည်။
*Hotel_Address, Additional_Number_of_Scoring, Review_Date, Average_Score, Hotel_Name, Reviewer_Nationality, Negative_Review, Review_Total_Negative_Word_Counts, Total_Number_of_Reviews, Positive_Review, Review_Total_Positive_Word_Counts, Total_Number_of_Reviews_Reviewer_Has_Given, Reviewer_Score, Tags, days_since_review, lat, lng*
-ဤခေါင်းစဉ်များကို အောက်ပါအတိုင်း အုပ်စုဖွဲ့ထားသည်-
+၎င်းတို့ကို စူးစမ်းလေ့လာရ လွယ်ကူစေရန် အုပ်စုခွဲထားသည်။
+##### ဟိုတယ် ဆိုင်ရာ ကော်လံများ
-##### ဟိုတယ်ကော်လံများ
+* `Hotel_Name`, `Hotel_Address`, `lat` (အလျားလိုင်း), `lng` (အကြာလိုင်း)
+ * *lat* နှင့် *lng* ကို အသုံးပြုပြီး Python ဖြင့် ဟိုတယ် နေရာများကို မြေပုံပုံဆွဲ၍ ပြသနိုင်သည် (ဥပမာ- မကောင်းသော သုံးသပ်ချက်နှင့် ကောင်းသော သုံးသပ်ချက်များအတွက် အရောင် ဖြင့် ဖော်ပြနိုင်သည်)
+ * Hotel_Address သည် ကျွန်ုပ်တို့အတွက် အသုံးဝင်မှု ရှိမရှိ ထင်ရှားမဟုတ်ပေ။ နောက်ဆုံးတွင် မနိုင်ငံခြားပိုင်ဖြစ်လွယ်စေရန် နိုင်ငံတစ်ခု ဖြင့် အစားထိုးနိုင်သည်။
-* `Hotel_Name`, `Hotel_Address`, `lat` (latitude), `lng` (longitude)
- * *lat* နှင့် *lng* ကို အသုံးပြု၍ Python ဖြင့် ဟိုတယ်တည်နေရာများကို မြေပုံပေါ်တွင် ရှုထောင့်အရောင်သတ်မှတ်ထားပြီး ရေးဆွဲနိုင်သည်။
- * Hotel_Address သည် ကျွန်ုပ်တို့အတွက် ထင်ရှားစွာ အသုံးမဝင်သည့်အရာဖြစ်ပြီး၊ အလွယ်တကူ စီစစ်ခြင်းနှင့် ရှာဖွေမှုအတွက် နိုင်ငံတစ်ခုဖြင့် အစားထိုးမည်ဖြစ်သည်။
-
-**ဟိုတယ် Meta-review ကော်လံများ**
+**ဟိုတယ် မီတာ သုံးသပ်ချက် ကော်လံများ**
* `Average_Score`
- * ဒေတာဖန်တီးသူအဆိုအရ၊ ဤကော်လံသည် *နောက်ဆုံးနှစ်အတွင်းမှ နောက်ဆုံးမှတ်ချက်အပေါ် အခြေခံ၍ တွက်ချက်ထားသော ဟိုတယ်၏ ပျမ်းမျှအမှတ်* ဖြစ်သည်။ ၎င်းသည် အမှတ်ကို တွက်ချက်သည့် ပုံစံအနေနှင့် ထူးဆန်းသော်လည်း၊ ယခုအချိန်အတွက် ကျွန်ုပ်တို့သည် ၎င်းကို ယုံကြည်ရမည်ဖြစ်သည်။
+ * ဒေတာစုစည်းမှုဖန်တီးသူ၏ မှတ်ချက်အရ၊ ဤကော်လံသည် *လွန်ခဲ့သောနှစ်တစ်နှစ်တွင် နောက်ဆုံးမှတ်ချက်အပေါ်အခြေခံ၍ ဟိုတယ်၏ ပျမ်းမျှ အမှတ်* ဖြစ်သည်။ ၎င်းသည် ထူးခြားသော ထည့်သွင်းပုံဖြစ်သော်လည်း ဒေတာကို တရားဝင် သိမ်းဆည်းထားသဖြင့် ယခုအချိန်တွင် တင်စားနိုင်သည်။
- ✅ ဤဒေတာအတွင်းရှိ အခြားသော ကော်လံများအပေါ် အခြေခံ၍ ပျမ်းမျှအမှတ်ကို တွက်ချက်ရန် နည်းလမ်းတစ်ခုကို သင်စဉ်းစားနိုင်ပါသလား။
+ ✅ ဒီဒေတာတွင် ပါသော အခြားကော်လံများအရ မတူညီသော ပျမ်းမျှအမှတ်တွက်ချက်မှုနည်းဖော်ပြနိုင်ပါသလား?
* `Total_Number_of_Reviews`
- * ဤဟိုတယ်သည် ရရှိထားသော ပြန်လည်သုံးသပ်မှုအရေအတွက် - ၎င်းသည် (အချို့သော ကုဒ်ရေးသားမှုမပြုလုပ်မီ) ဒေတာအစုအဝေးတွင် ပါဝင်သော ပြန်လည်သုံးသပ်မှုများကို ဆိုလိုသည်ဟု မရှင်းလင်းပါ။
+ * ဤဟိုတယ်သို့ သုံးသပ်ချက်စုစုပေါင်း အရေအတွက်ဖြစ်ပြီး ဒေတာစုစည်းမှုရှိ သုံးသပ်ချက်များအား ရည်ညွှန်းသည်ဟုတ်မဟုတ် မသေချာပါ (ကုဒ်ရေးခြင်း မရှိခဲ့လျှင်)
* `Additional_Number_of_Scoring`
- * ၎င်းသည် ပြန်လည်သုံးသပ်မှုအမှတ်ကို ပေးခဲ့သော်လည်း ပြန်လည်သုံးသပ်မှုအနုတ်လက္ခဏာ သို့မဟုတ် အပေါင်းလက္ခဏာကို မရေးသားခဲ့သော အခြေအနေကို ဆိုလိုသည်။
+ * သုံးသပ်ချက် အမှတ်ပေးခဲ့သော်လည်း သုံးသပ်ချက်စာ မရေးသားသော ပြဿနာဖြစ်သည်။
-**ပြန်လည်သုံးသပ်မှုကော်လံများ**
+**သုံးသပ်ချက် ကော်လံများ**
- `Reviewer_Score`
- - ၎င်းသည် အနည်းဆုံးနှင့် အများဆုံးတန်ဖိုး 2.5 နှင့် 10 အကြားတွင် အများဆုံး ဒသမ ၁ ချက်ရှိသော ကိန်းဂဏန်းတန်ဖိုးဖြစ်သည်။
- - အနည်းဆုံးအမှတ်ဖြစ်နိုင်သော 2.5 သည် အနိမ့်ဆုံးအမှတ်ဖြစ်ရမည့်အကြောင်းကို မရှင်းလင်းထားပါ။
+ - အနိမ့်ဆုံး 2.5 မှ အမြင့်ဆုံး 10 အထိ ၁ ဒယ်သင်္ကေတဖြင့် ကိန်းဂဏန်းတန်ဖိုးဖြစ်သည်
+ - အိပ်မက်မှာ 2.5 သည် အနိမ့်ဆုံးဖြစ်သော ပြဿနာ မရှင်းလင်းပါ
- `Negative_Review`
- - ပြန်လည်သုံးသပ်သူသည် ဘာမှ မရေးသားပါက၊ ဤကွင်းသည် "**No Negative**" ဟု ရေးထားမည်။
- - ပြန်လည်သုံးသပ်သူသည် အနုတ်လက္ခဏာကွင်းတွင် အပေါင်းလက္ခဏာပြန်လည်သုံးသပ်မှုကို ရေးသားနိုင်သည် (ဥပမာ- "ဤဟိုတယ်တွင် မကောင်းသောအရာမရှိပါ")။
-- `Review_Total_Negative_W
-🚨 သတိပေးချက်
-ဒီ dataset ကို အသုံးပြုတဲ့အခါမှာ သင်ရေးတဲ့ code က text ကို ဖတ်စရာမလိုဘဲ text ထဲကနေ တစ်ခုခုကိုတွက်ချက်ပေးနိုင်ရမယ်။ ဒါဟာ NLP ရဲ့ အဓိကအချက်ဖြစ်ပြီး လူ့အဖွဲ့အစည်းမပါဘဲ အဓိပ္ပါယ်နဲ့ခံစားချက်ကို အနက်ဖွင့်ပေးနိုင်တာပဲဖြစ်ပါတယ်။ သို့သော် သင်အချို့သော အနုတ်လက္ခဏာရှိတဲ့ review တွေကို ဖတ်မိနိုင်ပါတယ်။ အဲ့ဒီ review တွေကို မဖတ်ဖို့ အကြံပေးချင်ပါတယ်၊ ဘာဖြစ်လို့လဲဆိုတော့ သင်ဖတ်စရာမလိုလို့ပါ။ အချို့ review တွေက အလွဲလွဲအချော်ချော်ဖြစ်ပြီး hotel နဲ့မသက်ဆိုင်တဲ့ အနုတ်လက္ခဏာရှိတဲ့ review တွေဖြစ်နိုင်ပါတယ်၊ ဥပမာ "ရာသီဥတုက မကောင်းဘူး" ဆိုတဲ့အရာတွေ၊ hotel ရဲ့ ထိန်းချုပ်မှုအောက်မှာမရှိတဲ့အရာတွေ၊ ဒါမှမဟုတ် ဘယ်သူ့အတွက်မှ ထိန်းချုပ်လို့မရတဲ့အရာတွေပါ။ ဒါပေမယ့် review တွေထဲမှာ အနောက်ဖက်မှောင်မိုက်တဲ့အပိုင်းလည်းရှိပါတယ်။ အချို့သော အနုတ်လက္ခဏာရှိတဲ့ review တွေက လူမျိုးရေး၊ လိင်ရေး၊ အသက်အရွယ်ရေး အနက်ဖွင့်မှုတွေပါဝင်နိုင်ပါတယ်။ ဒါဟာ စိတ်မကောင်းစရာကောင်းပေမယ့် public website မှာ scrape လုပ်ထားတဲ့ dataset မှာ ဖြစ်နိုင်တဲ့အရာပါ။ အချို့သော reviewer တွေက သင်မကြိုက်မယ်၊ သက်တောင့်သက်သာမရှိမယ်၊ ဒါမှမဟုတ် စိတ်မကောင်းစရာကောင်းမယ်လို့ ခံစားရမယ့် review တွေကို ရေးသားထားနိုင်ပါတယ်။ sentiment ကို code က တိုင်းတာပေးစေပြီး review တွေကို ကိုယ်တိုင်ဖတ်ပြီး စိတ်မကောင်းဖြစ်စေဖို့ မလုပ်ပါနဲ့။ ဒါဆိုလည်း အဲ့ဒီလိုအရာတွေကို ရေးသားတဲ့သူတွေက အနည်းငယ်ပဲရှိပေမယ့် သူတို့ရှိနေတယ်ဆိုတာတော့ အမှန်ပါပဲ။
-## လေ့ကျင့်မှု - ဒေတာစူးစမ်းခြင်း
-### ဒေတာကို တင်ပါ
+ - သုံးသပ်သူက စာမရေးသားခဲ့ပါက ဒီနေရာတွင် "**No Negative**" ပါလိမ့်မည်
+ - သတိထားပါ၊ သုံးသပ်သူသည် ဆန့်ကျင်ဘက် သုံးသပ်ချက်ကို [Negative review] ကော်လံတွင် ပေးနိုင်သည် (ဥပမာ- "ဤဟိုတယ်အပေါ် မကောင်းသော အကြောင်းမရှိပါ")
+- `Review_Total_Negative_Word_Counts`
+ - စကားလုံး အရေအတွက်များသည် နိမ့်သော အမှတ်နဲ့ ဆက်စပ်မှုရှိနိုင်သည် (စိတ်ခံစားချက်မစစ်ဆေးမီ)
+- `Positive_Review`
+ - သုံးသပ်သူက စာမရေးသားခဲ့ပါက ဒီနေရာတွင် "**No Positive**" ပါလိမ့်မည်
+ - သတိထားပါ၊ သုံးသပ်သူသည် ကောင်းသော သုံးသပ်ချက်ကို [Positive review] ကော်လံတွင် ပေးနိုင်သည် (ဥပမာ- "ဤဟိုတယ်အပေါ် ကောင်းသော အကြောင်းအရာ မရှိပါ")
+- `Review_Total_Positive_Word_Counts`
+ - စကားလုံးများပို များခြင်းသည် အကြောင်းပြချက် အဆင့်မြင့်ကြောင်း ဖော်ပြသည် (စိတ်ခံစားချက်မစစ်ဆေးမီ)
+- `Review_Date` နှင့် `days_since_review`
+ - သုံးသပ်ချက်သက်တမ်းသစ်သက်ဟောင်းကို တိုင်းတာနိုင်သည် (ဟိုတယ် စီမံခန့်ခွဲမှု ပြောင်းလဲမှု, ပြုပြင်မွမ်းမံမှုများ, ရေကူးကန် အသစ်ထည့်သွင်းမှု စသဖြင့် ကြောင်း)
+- `Tags`
+ - သုံးသပ်သူသည် သူတို့ဖြစ်သော ဧည့်သည် အမျိုးအစား (တစ်ဦးတည်း သို့မဟုတ် မိသားစု), အခန်းအမျိုးအစား, နေ့ရက်ပမာဏနှင့် သုံးသပ်ချက် ပေးပုံတို့ကို ဖော်ပြသော အကျဉ်းချုပ် သက်သေပြချက်များ ဖြစ်သည်။
+ - ဤ tag များကို အသုံးပြုခြင်းတွင် ပြဿနာရှိပါသည်၊ အောက်တွင် ထိုအသုံးဝင်မှုအကြောင်း ဆွေးနွေးထားသည်
+
+**သုံးသပ်သူ ကော်လံများ**
+
+- `Total_Number_of_Reviews_Reviewer_Has_Given`
+ - ဤသည်သည် အကြံပြုမှုမော်ဒယ်တွင် အရေးပါနိုင်သည်၊ ဥပမာ- သုံးသပ်ချက်များ စုစုပေါင်း ပြုလုပ်သူများသည် ပိုမို ဆန့်ကျင်ဘက် သုံးသပ်မှုများ ပေးနိုင်ကြောင်း တွေ့ရှိရပါက။ သို့သော် တစ်ဦးတည်း သုံးသပ်သူကို တစ်ကိုယ်တည်း အမှတ်တံဆိပ်နဲ့ တွဲဖက်၍ မရရှိနိုင်ပါ၊ အရေးပါသော သုံးသပ်ချက် မဟုတ်ပါ။ သုံးသပ်သူ ၁၀၀ ကျော် သုံးသပ်မှုရှိသူ ၃၀ ယောက်ရှိပြီး သို့သော် ၎င်းသည် အကြံပြုမှုမော်ဒယ်အတွက် အထောက်အကူဖြစ်မရေး။
+- `Reviewer_Nationality`
+ - အချို့သူများသည် နိုင်ငံသားများကို အကောင်း သို့မဟုတ် ဆိုးသော သုံးသပ်ချက် ပေးနိုင်မှု များသည် နိုင်ငံသားအရ တစ်စိတ်တစ်ပိုင်းက ဆုံးဖြတ်ချက်ကြောင်း ရှိနိုင်ကြောင်း ထင်မြင်နိုင်သည်။ ဤစိတ်ကူးများကို မော်ဒယ်တွင် ထည့်သွင်းမှုအသိရှိမှုများ အထောက်ကူမဖြစ်စေရေး ကြိုးစားပါ။ ဤသည်မှာ နိုင်ငံတော်အောက်ခြေ စိတ်ကူးထင်မြင်မှုများဖြစ်ပြီး တစ်ဦးချင်း သုံးသပ်သူသည် သူတို့အတွေ့အကြုံအပေါ် အခြေခံ၍ သုံးသပ်ချက်ရေးသားသူ ဖြစ်ပါသည်။ ပြီးခဲ့သော ဟိုတယ်များ၊ ခရီးသွားခရီးနံပါတ်၊ ကိုယ်ပိုင် ပြစ်ဒဏ်မူရင်းများကဲ့သို့သော အကြောင်းအရာများဖြင့် စစ်ထုတ်ကြည့်နိုင်သည်။ စေရန် ၎င်းတို့၏ နိုင်ငံသားဖြစ်ခြင်းသည် သုံးသပ်ချက် အဆင့်များ အကြောင်းရင်းဖြစ်သည်ဟု ဆိုပါက သက်ဆိုင်မှု မရှိပါ။
+
+##### နမူနာများ
+
+| ပျမ်းမျှ အဆင့် | စုစုပေါင်း သုံးသပ်ချက် အရေအတွက် | သုံးသပ်သူ အဆင့် | နောက်ဆုတ်
သုံးသပ်ချက် | ကောင်းမွန်သော သုံးသပ်ချက် | Tag များ |
+| -------------- | ---------------------- | ---------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------- | ----------------------------------------------------------------------------------------- |
+| 7.8 | 1945 | 2.5 | ဤနေရာမှာ ယခုအချိန်တွင် ဟိုတယ်မဟုတ်ဘဲ ဆောက်လုပ်ရေးလုပ်ငန်း ဆိုသည်သူ သက်တမ်းတစ်နေ့တာကြာ အဆူပူခံယူခဲ့ရပြီး ခရီးရှည်ပြီးနောက် အနားယူနေစဉ် မလွယ်ကူသော ဆူညံသံကြောင့် ရန်ပုန်းခဲ့ရသည်။ လူများသည် တစ်နေ့လုံးတစ်ခန်းစီ ပြန်လည်တည်ဆောက်နေကြသော ပြေးစက်များတို့ဖြင့် အဆင့်တင်ရောင်းချနေသည်။ အခန်းပြောင်းရန် တောင်းဆိုခဲ့ပေမယ့် ကျောင်းဆဲ အခန်းက အားလုံးလှုပ်မကြတတ်။ နောက်ပိုင်း၌ စျေးနီးနေသလို ထပ်မံလည်း ဈေးချိုင်းခံရသည်။ ညအချိန်တွင် လျော်ကြေးလက်ခံပြီးစေ၊ နောက်နေ့တွင် အကျွမ်းအမွတ်မရှိဘဲ စျေးနှင့်သာမန် ဈေးထက်ပို၍ လက်ခံထားသည်။ ဤနေရာသည် ဆိုးရွားသောနေရာပါ ။ ပစ္စည်းများမှာ အာမခံမရှိပါ။ | အရာရာ မကောင်းပါ။ နှောင့်နှေးသောနေရာ။ | စီးပွားရေးခရီး၊ စုံတွဲစတန်းဒါဒေါ်ဘယ် အခန်း နှစ်ည ဆင်းခဲ့သည် |
+
+သင်မြင်နိုင်သလို ဤဧည့်သည်သည် ဟိုတယ်တွင် ဝမ်းသာမှုမရှိပါ။ ဟိုတယ်သည် ပျမ်းမျှ အဆင့် 7.8 နှင့် သုံးသပ်ချက် 1945 ခုရှိသော်လည်း ဤသုံးသပ်သူက 2.5 အမှတ်ပေးပြီး မကောင်းသော အတွေ့အကြုံများကို 115 စကားလုံးဖြင့် ဖော်ပြထားသည်။ Positive_Review ကော်လံတွင် ဘာမှ မရေးသားခဲ့လျှင် မကောင်းသော အချက်မရှိကြောင်း ထင်မြင်နိုင်သော်လည်း ၎င်းသည် သတိပေးစကား 7 စကားလုံးရေးသားထားသည်။ စကားလုံးများကိုသာ ရေတွက်ခဲ့လျှင် သို့မဟုတ် စာသား၏ အဓိပ္ပါယ် သို့မဟုတ် စိတ်ခံစားချက်ကို မစစ်ဆေးဘဲ ရေတွက်ပါက ဤသုံးသပ်သူ၏ ရည်ရွယ်ချက်ကို မှားပုံဖော်နိုင်သည်။ ထူးဆန်းစရာမှာ ၎င်း၏ 2.5 အမှတ်သည် စိတ်အနှောင့်အယှက် ဖြစ်သည်။ ဟိုတယ်သို့ အလွန်ဆိုးသောအတွေ့အကြုံရှိခဲ့လျှင် ဘာကြောင့် စတင်ပေးသင့်သည့် အမှတ်ရှိသနည်း? ဒေတာကို နီးစပ်စွာ ကြည့်တာကြောင့် အနိမ့်ဆုံးအမှတ်မှာ 2.5 ဖြစ်ပြီး 0 မဟုတ်ပါ။ အမြင့်ဆုံး အမှတ်မှာ 10 ဖြစ်သည်။
+
+##### Tag များ
+
+အထက်တွင် ဖော်ပြသည့်အတိုင်း၊ `Tags` ကို သုံးပြီး ဒေတာကို အုပ်စုခွဲရန် စဉ်းစားမှုမှာ သာမန်အကြံဖြစ်သည်။ မဒါပေမယ့် ဤ tag များမှာ စံချိန်မရှိသောကြောင့် အချို့ဟိုတယ်တွင် *Single room*, *Twin room*, နှင့် *Double room* ကျင့်သုံးမည့်နေရာ၌ နောက်ထပ်ဟိုတယ်တစ်ခုတွင် *Deluxe Single Room*, *Classic Queen Room*, နှင့် *Executive King Room* ဖြစ်နိုင်သည်။ ၎င်းတို့သည် တူညီသော အရာများဖြစ်နိုင်သော်လည်း အမျိုးမျိုးရှိခဲ့၍ ရွေးချယ်ရန် အခက်အခဲဖြစ်ရသည်-
+
+၁။ စကားလုံးအားလုံးကို တစ်ခုတည်းသော စံချိန်သို့ ပြောင်းလဲရန် ကြိုးစားရန်၊ ဤအရာမှာ မူလ အခြေအနေများအား ကြည့်၍ (ဥပမာ- *Classic single room* သည် *Single room* သို့ ညွှန်ပြသနည်းရှိသော်လည်း *Superior Queen Room with Courtyard Garden or City View* သည် မလွယ်ကူပါ)
+
+၂။ NLP နည်းလမ်းကို အသုံးပြုပြီး *Solo*, *Business Traveller*, သို့မဟုတ် *Family with young kids* ကဲ့သို့သော စကားလုံးများ ထပ်တိုးရေတွက်ပြီး ဟိုတယ်တစ်ခုချင်းစီကို ညွှန်ပြ၍ အကြံပြုမှုတွင် ပါဝင်စေရန်
+
+Tag များသည် တစ်ခေါက်တည်း ၅ စကားလုံးမှ ၆ စကားလုံးအထိ ကွန်မာနှင့်ခွဲခြားထားသည့် ဘာသာပြန် အမျိုးအစား၊ ဧည့်သည်အမျိုးအစား၊ အခန်းအမျိုးအစား၊ နေ့ရက်ပမာဏ၊ သုံးသပ်ချက်တင်သွင်းခဲ့သော စက်ပစ္စည်း အမျိုးအစားအရ အုပ်စုတစ်ခု ဖြစ်သည်။ သို့သော် သုံးသပ်သူများသည် တစ်ချို့ အကွက်များအား ပြည့်စုံစွာ မဖြည့်ရန် ဖြစ်ပြုသောကြောင့် အနည်းငယ်သီးခြားနေပါသည်။
+
+ဥပမာအားဖြင့် *Type of group* ကိုပါဝင်ပါစေ။ `Tags` ကော်လံ၌ ယခုအခါ 1025 ကွဲပြားသည့် ဖြစ်နိုင်မှုရှိပြီး ချို့ယွင်းမှုမှာ အချို့ဟာ မိသားစုကို ရည်ညွှန်းထားသော်လည်း အချို့ဟာ အခန်းအမျိုးအစားဖြစ်သည်။ တစ်ခြားမှာ "family" ဆိုသော စကားလုံးပါသောအောက်တွင် များစွာ *Family room* အမျိုးအစားရလဒ်ပါဝင်သည်။ "with" ဟုပါဝင်သော စကားလုံးအတွက် (ဥပမာ "Family with young children" သို့ "Family with older children") သည် ၈၀,၀၀၀ ကျော်ဖြစ်ပြီး ၅၁၅,၀၀၀ ခန့်ရလဒ်၌ ပါဝင်သည်။
+
+ယင်းသည် tags ကော်လံအချို့ အကျိုးရှိကြောင်း ပြသသော်လည်း အသုံးဝင်စေရန် အလုပ်များသည့် ကိစ္စဖြစ်သည်။
+
+##### ဟိုတယ် ပျမ်းမျှ အမှတ်
+
+ဒေတာစုစည်းမှုပေါ်တွင် ထူးထူးခြားခြား ရှိသည့် အချက်အလက်များ တချို့ ရှိပြီး ဒီမှာ ဖော်ပြထားသည်။ မိမိ၏ မော်ဒယ်များ ဆောက်လုပ်ခြင်းအတွင်း ၎င်းတို့အကြောင်း အချက်အလက်ကို သိရှိရန် အရေးကြီးသည်။ မိတ်ဆွေရှာဖွေတွေ့ရှိပါက ဆွေးနွေးမှုပိုင်း၌ မျှဝေရန် လိုအပ်ပါသည်။
+
+ဒေတာစုစည်းမှုတွင် ပျမ်းမျှ အမှတ် နှင့် သုံးသပ်ချက် အရေအတွက်နှင့် ဆက်စပ်သော ကော်လံများမှာ :
+
+၁။ Hotel_Name
+၂။ Additional_Number_of_Scoring
+၃။ Average_Score
+၄။ Total_Number_of_Reviews
+၅။ Reviewer_Score
+
+ဤဒေတာစုစည်းမှုတွင် အများဆုံး သုံးသပ်ချက်ရရှိထားသော ဟိုတယ်တစ်ခုမှာ *Britannia International Hotel Canary Wharf* ဖြစ်ပြီး 4789 သုံးသပ်ချက် ရှိသည်။ သို့သော် `Total_Number_of_Reviews` အတွက် တန်ဖိုးသည် 9086 ဖြစ်ပါသည်။ သင်သည် သုံးသပ်ချက်မရှိပေမယ့် အမှတ်များပိုမိုရှိကြောင်း ထင်မြင်နိုင်သည်၊ ထို့ကြောင့် `Additional_Number_of_Scoring` ကော်လံတန်ဖိုးကို ထည့်သွင်းရန်လိုအပ်သည်။ ဤတန်ဖိုးမှာ 2682 ဖြစ်ပြီး 4789 နှင့် ပေါင်းလျှင် 7,471 ရှိသော်လည်း `Total_Number_of_Reviews` မှ 1615 ချို့ယွင်းနေသည်။
+
+`Average_Score` ကော်လံကို ကြည့်ပါက ဒေတာစုစည်းမှုအတွင်း သုံးသပ်ချက်ပေါင်းများ၏ ပျမ်းမျှဟု ထင်မြင်နိုင်သော်လည်း Kaggle မှ ဖေါ်ပြချက်မှာ "*လွန်ခဲ့သော နှစ်တစ်နှစ်အတွင်း နောက်ဆုံးမှတ်ချက်အပေါ် အခြေခံသော ဟိုတယ်၏ ပျမ်းမျှ အမှတ်*" ဟုဆိုသည်။ ၎င်းသည် အသုံးဝင်မှုနည်းသောဖြစ်နိုင်သော်လည်း၊ သင်အကြံပြု မော်ဒယ်အတွက် သုံးသပ်ချက် အမှတ်အရ ပျမ်းမျှစကားကို မတွက်ဘဲ ကိုယ်တိုင်တွက်ချက်နိုင်ပါသည်။ ဥပမာအနေဖြင့် အဆိုပါ ဟိုတယ်၏ ပျမ်းမျှ အမှတ်မှာ 7.1 ဖြစ်သော်လည်း ဒေတာတွင် ပါသော သုံးသပ်သူတို့၏ ပျမ်းမျှ အမှတ်က 6.8 ဖြစ်သည်။ ၎င်းသည် နီးကပ်သောတန်ဖိုးဖြစ်သော်လည်း မတူကြောင်း ဖြစ်ပြီး `Additional_Number_of_Scoring` အမှတ်များကြောင့် 7.1 အထိ တိုးတက်နိုင်သည့် အဆင့်ဖြစ်သည်ဟု ခန့်မှန်းနိုင်ပါသည်။ ဒါပေမယ့် စစ်ဆေးမရနိုင်သဖြင့် `Average_Score`, `Additional_Number_of_Scoring` နှင့် `Total_Number_of_Reviews` ကို 믿거나 사용하기 어렵다
+
+တောင့်တင်းမှုတစ်ခု ဖြစ်စေသည်မှာ၊ အမှတ် ပိုများသော ဒုတိယဟိုတယ်သည် 8.12 တန်ဖိုးအရွယ်ရှိပြီး Kaggle ၏ `Average_Score` သည် 8.1 ဖြစ်သည်။ ဤမှန်ကန်ခြင်းမှာ သန့်ရှင်းမှု မဟုတ်မည်သို့ သို့မဟုတ် ပထမ ဟိုတယ်၏ ခြားနားမှုဖြစ်ပါသလား?
+
+
+ဤဟိုတယ်များသည် အထူးသဖြင့် ထူးခြားချက်ပါတဲ့ဟိုတယ်များ ဖြစ်နိုင်ချေရှိပြီး အများအားဖြင့် တန်ဖိုးများသည် မလွဲမှားဘဲ တွက်ချက်ချက်မှုများ ဖြစ်သည်ဟု ယူဆရသည် (သို့သော် အချို့အကြောင်းကြောင့် မမှန်ကန်သလို ဖြစ်နေပေ) ဒေတာစုစည်းမှုရှိသည့် တန်ဖိုးများကို စူးစမ်းလေ့လာရန် နောက်တစ်ခုအနေဖြင့် ကိရိယာ အသေးစားရေးသားသွားမည်ဖြစ်သည်။
+
+> 🚨 သတိပေးချက်တစ်ခု
+>
+> ဤဒေတာစုစည်းမှုနှင့် လုပ်ငန်းဆောင်တာများကို လုပ်ဆောင်ရာတွင် မိမိကိုယ်တိုင်သောစာသားများကို ဖတ်ရန် သို့မဟုတ် သဒ္ဒါနက်ရှိုင်းစွာခြေရာခံရန် မလိုပါ၊ ဒီလုပ်ငန်းသည် NLP ၏ အဓိကအချက်ဖြစ်ပြီး လူ့အသက်မလိုဘဲ အဓိပ္ပါယ်သို့မဟုတ် စိတ်ခံစားမှုကို ဦးမြှောက်ဖော်ပြခြင်းဖြစ်သည်။ သို့ရာတွင် အနုတ်လက္ခဏာရှိသည့် သုံးသပ်ချက်များအား ဖတ်ရှုရသဖြင့် မဖတ်ရန် အကြံပြုပါသည်။ အချို့မှာ မလိုလားအပ်သော၊ သက်ဆိုင်မည့် အနုတ်လက္ခဏာမဟုတ်သော ဟိုတယ်ဆိုင်ရာ သုံးသပ်ချက်များဖြစ်ပြီး၊ ဥပမာ "ရာသီဥတုမကောင်းပါ" ဟု ဆိုသည့်အတိုင်း ဟိုတယ် ထိန်းချုပ်မှုအပြင် လူတိုင်းအတွက် ပြဿနာဖြစ်သည်။ သို့သော် တချို့သုံးသပ်ချက်များတွင် အနုတ်လက္ခဏာများဟာ အမျိုးသားဝါဒီ၊ လိင်လိုက်ဖက်မှု၊ သက်တမ်း၀ါဒီကဲ့သို့ ဆိုးရွားမှုရှိနိုင်သည်၊ ယင်းသည် အင်တာနက်မှ စုဆောင်းသည့် ဒေတာတွင် မျှော်လင့်ရသော ဆိုးရွားချက်တစ်ရပ် ဖြစ်သည်။ သုံးသပ်သူတချို့သည် သင် မနှစ်သက်မဖြစ်စရာ၊ မနည်းလြှံစရာ၊ စိတ်မကောင်းစေမည့် သုံးသပ်ချက်များမှာ တင်ပေးနိုင်သည်။ ထိုသို့ဖြစ်သော်လည်း ကိုက်ညီမှုကို ကုဒ်က စစ်ဆေးပေးခြင်းဖြစ်သည့်အတွက် ကိုယ်တိုင်ဖတ်ပြီး စိတ်ပျက်ဖွယ်ရာမဖြစ်စေပါနှင့်။ ဒါပေမယ့် အဲဒီလို အနုတ်လက္ခဏာ သုံးသပ်သူများက ညှစ်ညမ်းသောအခါ အနည်းငယ်ဘဲ ဖြစ်ပြီး ရှိနေပေမယ့် ရှိနေသည်။
-ဒေတာကို မျက်မြင်ဖြင့် စစ်ဆေးတာလုံလောက်ပြီဆိုရင်၊ အခုတော့ သင့်ရဲ့ ကုဒ်ကိုရေးပြီး အဖြေတွေကို ရယူကြည့်ပါ။ ဒီအပိုင်းမှာ pandas library ကို အသုံးပြုမှာဖြစ်ပါတယ်။ သင့်ရဲ့ ပထမဆုံးတာဝန်က CSV ဒေတာကို load လုပ်ပြီး ဖတ်နိုင်တာ သေချာစေဖို့ပါ။ pandas library မှာ CSV loader တစ်ခုရှိပြီး၊ ရလဒ်ကို dataframe အနေနဲ့ ထည့်သွင်းပေးပါတယ်၊ ယခင် သင်ခန်းစာတွေမှာလိုပဲ။ ကျွန်တော်တို့ load လုပ်မယ့် CSV ဖိုင်မှာ တန်းစီထားတဲ့ အတန်း ၅ သိန်းကျော်ရှိပေမယ့် ကော်လံ ၁၇ ခုသာ ပါဝင်ပါတယ်။ Pandas က dataframe နဲ့ အလုပ်လုပ်ဖို့ အစွမ်းထက်နည်းလမ်းတွေ အများကြီးပေးထားပြီး၊ တန်းစီထားတဲ့ အတန်းတိုင်းမှာ လုပ်ဆောင်ချက်တွေ ပြုလုပ်နိုင်ပါတယ်။
+## လေ့ကျင့်ခန်း - ဒေတာစူးစမ်းခြင်း
+### ဒီတစ်ကြိမ်မှာ ဒေတာထည့်သွင်းခြင်း
-ဒီသင်ခန်းစာမှာ ဒီနေရာကစပြီး ကုဒ် snippet တွေ၊ ကုဒ်ရဲ့ ရှင်းလင်းချက်တွေ၊ ရလဒ်တွေက ဘာကို ဆိုလိုတာလဲဆိုတာ ဆွေးနွေးချက်တွေ ပါဝင်မှာဖြစ်ပါတယ်။ သင့်ရဲ့ ကုဒ်အတွက် _notebook.ipynb_ ကို အသုံးပြုပါ။
+ဒေတာကို မျက်နှာပြင်ပေါ်တွင် ကြည့်ရှုဖို့လုံလောက်ပြီ၊ ယခု မှာ ကိုယ်တိုင် ကုဒ်ရေးပြီး အဖြေတစ်ချို့ရယူကြပါစို့! ဤတန်းတူက pandas စာကြည့်တိုက်ကို အသုံးပြုသည်။ သင့်၏ ပထမဆုံးတာဝန်မှာ CSV ဒေတာကို ထည့်သွင်းပြီး ဖတ်ရှုနိုင်ခြင်းဖြစ်သည်။ pandas သည် အမြန်ဆုံး CSV loader ရှိပြီး၊ ရလဒ်ကို တန်းကြပ်တည်းစီထားသော dataframe အဖြစ် ထည့်သွင်းပေးသည်၊ ယခင်သင်ခန်းစာများနှင့် ဆင်တူသည်။ သည့် CSV တွင် တန်းချက်စီ ၅သိန်းကျော်ရှိသော်လည်း ကော်လံ ၁၇ သာရှိသည်။ pandas သည် dataframe အသစ်နှင့် အလုပ်လုပ်ရန် အကြံပြုမှုအများကြီး ပံ့ပိုးပေးသည်၊ ပြီးတဲ့နောက် စဉ်ကြောင့် ထည့်သွင်းထားသော စိတ်ကြိုက်လုပ်ဆောင်ချက်များကို လုပ်ဆောင်နိုင်သည်။
-အရင်ဆုံး သင်အသုံးပြုမယ့် ဒေတာဖိုင်ကို load လုပ်တာကစပါမယ် -
+ယခု သင်ခန်းစာတွင် ကုဒ်ပိုင်းများနှင့် ကုဒ်ရဲ့ ရည်ညွှန်းချက်၊ ရလဒ်များ၏ အဓိပ္ပါယ်တို့ အကြောင်းအရာရှိတယ်။ သင်၏ကုဒ်အတွက် ထည့်သွင်းထားသည့် _notebook.ipynb_ ကို အသုံးပြုပါ။
+
+သင့် အသုံးပြုမည့် ဒေတာဖိုင်ကို load လုပ်ခြင်းဖြင့် စတင်ကြပါစို့။
```python
-# Load the hotel reviews from CSV
+# ဟိုတယ်မှ သုံးသပ်ချက်များကို CSV ဖိုင်မှ ထည့်သွင်းသည်
import pandas as pd
import time
-# importing time so the start and end time can be used to calculate file loading time
+# စတင်ချိန်နှင့် အဆုံးချိန်ကို ဖိုင်ဒေါင်းလုပ်ချိန်တွက်ရန်အတွက် 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 ဆိုသည်မှာ 'DataFrame' ဖြစ်ပြီး ဖိုင်ကို data ဖိုလ်ဒါအတွင်းဒေါင်းလုပ်လုပ်ထားသည်မှာ မှန်ကန်သေချာပါစေ
df = pd.read_csv('../../data/Hotel_Reviews.csv')
end = time.time()
print("Loading took " + str(round(end - start, 2)) + " seconds")
-```
+```
-ဒေတာကို load လုပ်ပြီးပြီဆိုရင်၊ အခုတော့ ဒေတာပေါ်မှာ လုပ်ဆောင်ချက်တွေ ပြုလုပ်နိုင်ပါပြီ။ ဒီကုဒ်ကို သင့်ရဲ့ အစီအစဉ်ရဲ့ အပေါ်ဆုံးမှာ ထည့်ထားပါ။
+ဒေတာအား ဖတ်ခြင်းပြီးလျှင် အလုပ်ထုတ်မှု အချို့လုပ်ဆောင်နိုင်ပါတယ်။ သင်၏ အစီအစဉ်၏ အတွင်းက မိမိရေးထားသည့် ကုဒ်အစ ထိန်းထားပါ။
-## ဒေတာကို စူးစမ်းပါ
+## ဒေတာကို စူးစမ်းရှာဖွေခြင်း
-ဒီအခါမှာတော့ ဒေတာဟာ *သန့်ရှင်း* ဖြစ်ပြီး၊ အလုပ်လုပ်ဖို့ အဆင်သင့်ဖြစ်နေပါပြီ။ ဒါက ဘာကိုဆိုလိုတာလဲဆိုရင်၊ အင်္ဂလိပ်စာလုံးတွေကိုသာ မျှော်လင့်နေတဲ့ အယ်လဂိုရီသမ်တွေကို အနှောက်အယှက်ဖြစ်စေမယ့် အခြားဘာသာစကားတွေရဲ့ စာလုံးတွေ မပါဝင်ဘူးဆိုတာပါ။
+ဤနည်းဖြင့် တင်ပြသည့် ဒေတာသည် *သန့်ရှင်းပြီး* ဖြစ်သည်၊ ဤသည်မှာ ပြန်လည်အသုံးပြုရန်အဆင်ပြေပြီး အခြားဘာသာစကားလက္ခဏာများနှင့် မရောမချုပ်ထားပါက Algorithm များကို တားဆီးမှုမဖြစ်စေပါ။
-✅ သင့်အနေနဲ့ NLP နည်းပညာတွေကို အသုံးချမယ့်အခါ၊ ဒေတာကို အစပိုင်းမှာ format ပြင်ဆင်ဖို့ လိုအပ်တတ်ပါတယ်၊ ဒါပေမယ့် ဒီအခါမှာတော့ မလိုအပ်ပါဘူး။ သင့်အနေနဲ့ အင်္ဂလိပ်မဟုတ်တဲ့ စာလုံးတွေကို ဘယ်လိုကိုင်တွယ်မလဲ?
+✅ သင်တစ်ခါတရံ အစ ပိုင်းတွင် လိုအပ်၍ ဒေတာကို စနစ်တကျ ပြင်ဆင်ရန် လိုအပ်နိုင်သည်၊ ဒါပေမယ့် ယခုအခါတော့ မလိုပါဘူး။ လုံလောက်ခဲ့လျှင် မသင်ယူနိုင်သော ဘာသာစကား လက္ခဏာများကို မည်သို့処理 မည်နည်း။
-ဒေတာကို load လုပ်ပြီးတာနဲ့၊ ကုဒ်နဲ့အတူ စူးစမ်းနိုင်တာ သေချာစေပါ။ `Negative_Review` နဲ့ `Positive_Review` ကော်လံတွေကို အလွယ်တကူ အာရုံစိုက်ချင်တတ်ပါတယ်။ ဒီကော်လံတွေမှာ သင့်ရဲ့ NLP အယ်လဂိုရီသမ်တွေ အလုပ်လုပ်ဖို့ သဘာဝစာသားတွေ ပါဝင်ပါတယ်။ ဒါပေမယ့် ခဏစောင့်ပါ! NLP နဲ့ စိတ်ခံစားမှုကို စတင်မလုပ်ခင်၊ pandas နဲ့ ရှာဖွေတွေ့ရှိထားတဲ့ တန်ဖိုးတွေဟာ ဒေတာစဉ်မှာပေးထားတဲ့ တန်ဖိုးတွေနဲ့ ကိုက်ညီမကိုက်ညီ စစ်ဆေးဖို့ အောက်ပါကုဒ်ကို လိုက်နာပါ။
+ဒေတာကို ထည့်သွင်းပြီးနောက် စူးစမ်းရှာဖွေရန် ကိုယ်တိုင် အချိန်ယူပါ။ သင်၏ NLP algorithm များအတွက်သော `Negative_Review` နှင့် `Positive_Review` ကော်လံများတွင် စိတ်ဝင်စားမှုရှိသည်။ သို့သော် NLP နှင့် စိတ်ခံစားမှုကို စတင်ရန်မပြုမီ pandas နှင့် တွက်ချက်ထားသော တန်ဖိုးများနှင့် Dataset တွင် တန်ဖိုးများကို ကိုက်ညီကြောင်း သေချာစေရန် အောက်ပါ ကုဒ်ကို လုပ်ဆောင်ပါ။
-## Dataframe လုပ်ဆောင်ချက်များ
+## Dataframe လုပ်ဆောင်ချက်များ
-ဒီသင်ခန်းစာရဲ့ ပထမဆုံးတာဝန်ကတော့ အောက်ပါ အတည်ပြုချက်တွေကို စစ်ဆေးဖို့ ကုဒ်ရေးပါ။ ဒေတာဖရိမ်ကို ပြောင်းလဲမလုပ်ဘဲ စစ်ဆေးပါ။
+ဤသင်ခန်းစာ၏ ပထမဆုံးတာဝန်မှာ ဒေတာဖရိမ့်ကို သုံးသပ်ရန် စစ်ဆေးခြင်းဖြစ်ပြီး (ပြောင်းလဲမှု မလုပ်ဘဲ) စာသားများကို အောက်ပါအတိုင်း ဖြေဆိုရန် ဖြစ်သည်။
-> Programming လုပ်ငန်းတာဝန်အများစုလိုပဲ၊ ဒီအလုပ်ကို ပြီးမြောက်ဖို့ နည်းလမ်းအများကြီး ရှိပါတယ်၊ ဒါပေမယ့် အကောင်းဆုံးအကြံပေးချက်ကတော့ သင်နောက်ပိုင်းမှာ ဒီကုဒ်ကို ပြန်ကြည့်တဲ့အခါ အလွယ်တကူ နားလည်နိုင်အောင် ရိုးရှင်းပြီး လွယ်ကူတဲ့ နည်းလမ်းနဲ့ လုပ်ပါ။ Dataframe တွေအတွက် Comprehensive API တစ်ခုရှိပြီး၊ သင်လိုချင်တာကို ထိရောက်စွာ ပြုလုပ်နိုင်မယ့် နည်းလမ်းတစ်ခု ရှိတတ်ပါတယ်။
+> အများသော programming လုပ်ငန်းများကဲ့သို့ ဖြေရှင်းနည်းအများကြီးရှိပြီး၊ အနာဂတ်တွင်ပြန်လည်ကြည့်ရှုလွယ်ကူရန် ကျယ်ပြန့်ပြီး လွယ်ကူသော နည်းလမ်းဖြင့် ဆောင်ရွက်ခြင်းသည် အကြံပြုချက်ကောင်းဖြစ်သည်။ dataframes တွင် လုပ်နိုင်သည့် ပရိုဂရမ်များကို အလွယ်တကူကျွမ်းကျင်စွာ အသုံးပြုနိုင်သည်။
-အောက်ပါမေးခွန်းတွေကို coding task အနေနဲ့ သတ်မှတ်ပြီး၊ ဖြေရှင်းချက်ကို မကြည့်ဘဲ ကြိုးစားဖြေပါ။
+အောက်ပါမေးခွန်းများကို ကုဒ်ရေးခြင်း အလုပ်အဖြစ် သတ်မှတ်ပြီး ဖြေဆိုရန် ကြိုးစားကြပါ။
-1. သင် load လုပ်ထားတဲ့ dataframe ရဲ့ *shape* ကို print ထုတ်ပါ (shape ဆိုတာက အတန်းနဲ့ ကော်လံအရေအတွက်ပါ)
-2. Reviewer နိုင်ငံသားများအတွက် frequency count ကိုတွက်ပါ -
- 1. `Reviewer_Nationality` ကော်လံမှာ ဘယ်လောက် distinct value တွေရှိပြီး၊ အဲဒီ value တွေက ဘာတွေလဲ?
- 2. Dataset မှာ အများဆုံးတွေ့ရတဲ့ reviewer နိုင်ငံသားက ဘယ်နိုင်ငံသားလဲ (နိုင်ငံနဲ့ review အရေအတွက်ကို print ထုတ်ပါ)
- 3. နောက်ထပ် အများဆုံးတွေ့ရတဲ့ နိုင်ငံသား ၁၀ ယောက်နဲ့ သူတို့ရဲ့ frequency count တွေက ဘယ်လောက်လဲ?
-3. အများဆုံး review ရရှိတဲ့ ဟိုတယ်ကို top 10 reviewer နိုင်ငံသားအလိုက် တွက်ပါ။
-4. Dataset မှာ ဟိုတယ်တစ်ခုစီအတွက် review အရေအတွက် (frequency count) ကို တွက်ပါ။
-5. Dataset မှာ ဟိုတယ်တစ်ခုစီအတွက် `Average_Score` ကော်လံတစ်ခုရှိပေမယ့်၊ reviewer score တွေကို အသုံးပြုပြီး သင့်ကိုယ်တိုင်လည်း အလယ်ပျမ်းမျှကို တွက်နိုင်ပါတယ်။ `Calc_Average_Score` ဆိုတဲ့ ကော်လံခေါင်းစဉ်နဲ့ အသစ်တစ်ခုထည့်ပါ။
-6. `Average_Score` နဲ့ `Calc_Average_Score` တန်ဖိုးတွေဟာ တူညီတဲ့ ဟိုတယ်တွေ ရှိပါသလား (တစ်ဆင့်တည်းအနက် rounded)?
- 1. Python function တစ်ခုရေးပါ၊ Series (row) တစ်ခုကို argument အနေနဲ့ ယူပြီး၊ တန်ဖိုးတွေ မတူညီတဲ့အခါ message တစ်ခု print ထုတ်ပါ။ `.apply()` method ကို အသုံးပြုပြီး row တစ်ခုစီကို process လုပ်ပါ။
-7. `Negative_Review` ကော်လံမှာ "No Negative" ဆိုတဲ့ တန်ဖိုးရှိတဲ့ row အရေအတွက်ကို တွက်ပြီး print ထုတ်ပါ။
-8. `Positive_Review` ကော်လံမှာ "No Positive" ဆိုတဲ့ တန်ဖိုးရှိတဲ့ row အရေအတွက်ကို တွက်ပြီး print ထုတ်ပါ။
-9. `Positive_Review` ကော်လံမှာ "No Positive" နဲ့ `Negative_Review` ကော်လံမှာ "No Negative" ဆိုတဲ့ တန်ဖိုးနှစ်ခုလုံးရှိတဲ့ row အရေအတွက်ကို တွက်ပြီး print ထုတ်ပါ။
+1. Load လုပ်ထားသော data frame ၏ *shape* ကိုပုံနှိပ်ပါ (shape သည် စားတန်းနှင့် ကော်လံ အရေအတွက်)
+2. Reviewer များ၏ နိုင်ငံလက္ခဏာများရေအတွက် တွက်ချက်ပါ -
+ 1. `Reviewer_Nationality` ကော်လမ်တွင် မတူညီသောတန်ဖိုးများ ဘယ်နှစ်ခုရှိပြီး ဘာလဲ။
+ 2. ဒေတာများတွင် အများဆုံး တွေ့ရှိရသော မည်သည့်နိုင်ငံသား မြို့တော်လဲ (နိုင်ငံနာမည်နှင့် မှတ်ချက်အရေအတွက် ကို ပုံနှိပ်ပါ)။
+ 3. နောက်တစ်ဆင့် အများဆုံး တွေ့ရှိရသော နိုင်ငံသား ၁၀ ခုနဲ့ တစ်ပါတည်းသော တွက်ချက်မှုရေအရေအတွက်။
+3. အများဆုံး ပြန်လည်သုံးသပ်ခဲ့သော ဟိုတယ်များသည် ထို ၁၀ နိုင်ငံသားအဖြစ် ကွဲပြားမှုရှိသည်။
+4. ဒေတာအရ ဟိုတယ်တစ်ခုစီတွင် Review များရေအတွက် ဘယ်လောက်ရှိသနည်း။
+5. အဆိုပါ `Average_Score` ကော်လံသည် ဟိုတယ်တစ်ခုစီအတွက် ရှိသော်လည်း pandas ကိုအသုံးပြုပြီး ဟိုတယ်တစ်ခုစီ၏ စုပေါင်း reviewer ရမှတ်အပေါ်မှ လက်တွေ့တွက်ချက်သော `Calc_Average_Score` လို့ နောက်ထပ်အကွာအဝေးကော်လံတစ်ခု ထည့်ပါ။
+6. တချို့ဟိုတယ်များသည် (၁ ဒသမချိုးမြှောက်မှုအတိုင်း) `Average_Score` နှင့် `Calc_Average_Score` တန်ဖိုးနှစ်ခုတူညီသလား။
+ 1. Series နှင့် ဆက်နွယ်သော function တစ်ခုကိုရေး၍ တန်ဖိုးမညီဘဲမူအခါပါ ပြောကြားပါ။ `.apply()` နည်းလမ်းဖြင့် လုပ်ဆောင်ပါ။
+7. `Negative_Review` ကော်လံတွင် "No Negative" တန်ဖိုးရှိသည့် စားတန်းရေအတွက်တွက်ချက်ပြီး ပုံနှိပ်ပါ။
+8. `Positive_Review` ကော်လံတွင် "No Positive" တန်ဖိုးရှိသည့် စားတန်းရေအတွက်တွက်ချက်ပြီး ပုံနှိပ်ပါ။
+9. `Positive_Review` ကော်လံတွင် "No Positive" နှင့် `Negative_Review` ကော်လံတွင် "No Negative" တန်ဖိုးများပါရှိသည့် စားတန်းရေအတွက်တွက်ချက်ပြီး ပုံနှိပ်ပါ။
+### ကုတ်ဖြေဆိုချက်များ
-### ကုဒ်ဖြေရှင်းချက်
+1. Load လုပ်ထားသော data frame ၏ *shape* ကိုပုံနှိပ်ပါ (shape သည် စားတန်းနှင့် ကော်လံ အရေအတွက်)
-1. ```python
+ ```python
print("The shape of the data (rows, cols) is " + str(df.shape))
> The shape of the data (rows, cols) is (515738, 17)
- ```
+ ```
+
+2. Reviewer များ၏ နိုင်ငံလက္ခဏာများရေအတွက် တွက်ချက်ပါ -
-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
+ 1. `Reviewer_Nationality` ကော်လမ်တွင် မတူညီသောတန်ဖိုးများ ဘယ်နှစ်ခုရှိပြီး ဘာလဲ။
+ 2. ဒေတာများတွင် အများဆုံး တွေ့ရှိရသော မည်သည့်နိုင်ငံသား မြို့တော်လဲ (နိုင်ငံနာမည်နှင့် မှတ်ချက်အရေအတွက် ကို ပုံနှိပ်ပါ)။
+
+ ```python
+ # value_counts() သည် Series object တစ်ခုကို ဖန်တီးပြီး၊ ဤအမှုအတွင်းမှာ index နှင့် values များရှိသည်၊ အဲဒါကတော့ နိုင်ငံနှင့် သူတို့၏ ရှိံ့ပြောသည့် frequency ဖြစ်သည်
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
+ # Series ၏ ပထမနှင့် နောက်ဆုံး စာသားများကို ပုံနှိပ်ပါ။ ဒေတာအားလုံးကို ပုံနှိပ်ရန် nationality_freq.to_string() ထဲသို့ ပြောင်းပါ။
print(nationality_freq)
There are 227 different nationalities
@@ -151,15 +220,40 @@ print("Loading took " + str(round(end - start, 2)) + " seconds")
Cape Verde 1
Guinea 1
Name: Reviewer_Nationality, Length: 227, dtype: int64
- ```
+ ```
+
+ 3. နောက်တစ်ဆင့် အများဆုံး တွေ့ရှိရသော နိုင်ငံသား ၁၀ ခုနဲ့ တစ်ပါတည်းသော တွက်ချက်မှုရေအရေအတွက်။
-3. ```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)
+ ```python
+ print("The highest frequency reviewer nationality is " + str(nationality_freq.index[0]).strip() + " with " + str(nationality_freq[0]) + " reviews.")
+ # တန်ဖိုးများအပေါ်တွင် ဦးစီးအထောင့်နေရာရှိပြီး strip() သည် ပုံနှိပ်ရန် အလင်းသတင်းများအား ဖယ်ရှားသည်
+ # ထိပ်ဆုံး ၁၀ ခုသော နိုင်ငံသားမှုများနှင့် ၎င်းတို့၏ ဖြစ်နိုင်ခြေအမြင့်များ ဘာတွေလဲ?
+ 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. အများဆုံး ပြန်လည်သုံးသပ်ခဲ့သော ဟိုတယ်များသည် ထို ၁၀ နိုင်ငံသားအဖြစ် ကွဲပြားမှုရှိသည်။
+
+ ```python
+ # ထိပ်ဆုံး ၁၀ အမျိုးအစားနှင့်အတူ အကြိမ်ရေများဆုံး ပြန်လည်သုံးသပ်ထားသော ဟိုတယ်သည် ဘယ်ဟိုတယ်လဲ
+ # သာမာန်အားဖြင့် pandas ဖြင့် ပတ်လည်ခြင်းကို ရှောင်ရှားပါမည်၊ သို့သော် ဖေါ်ပြထားသော ဒေတာအခြေအနေဖြင့် DataFrame အသစ် တည်ဆောက်ခြင်းကို ပြသလိုသည် ( ဒေတာအရေအတွက်ကြီးလျှင် မလုပ်သင့်ပါ၊ အလွန်ဆွဲချိတ်နိုင်ပါသည်)
for nat in nationality_freq[:10].index:
- # First, extract all the rows that match the criteria into a new dataframe
+ # ပထမဦးစွာ၊ စံညွှန်းနှင့် ကိုက်ညီသော အတိုင်း အသစ် 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.")
@@ -173,42 +267,81 @@ print("Loading took " + str(round(end - start, 2)) + " seconds")
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
+4. ဒေတာအရ ဟိုတယ်တစ်ခုစီတွင် Review များရေအတွက် ဘယ်လောက်ရှိသနည်း။
+
+ ```python
+ # ပထမဦးဆုံး အဟောင်း dataframe ကို အခြေခံပြီး အသစ်တစ်ခုကို ဖန်တီးပါ၊ မလိုအပ်သော ကော်လံများကို ဖယ်ရှားပါ
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_Name အလ်က ပြန်လည်စုစည်းပြီး အရေအတွက်ကိုတွက်ပါ၊ နောက်ထပ် ကော်လံအသစ် 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. ဒေတာအတွက် `Average_Score` column ရှိသော်လည်း pandas ရဲ့ မှတ်ချက်အားလုံးရမှတ်၏ အပျမ်းမျှကို ကိုယ်တိုင်တွက်ချက်ပြီး အသစ် `Calc_Average_Score` column ကို ထည့်သွင်းပါ။ `Hotel_Name`, `Average_Score`, `Calc_Average_Score` ကော်လံများကို ပုံနှိပ်ပေးပါ။
-5. ```python
- # define a function that takes a row and performs some calculation with it
+ ```python
+ # တစ်စောင်ကိုယူပြီး အဲ့ဒီဆိုဒ်နဲ့ တွက်ချက်မှုတစ်ခုခုလုပ်တဲ့ function ကို သတ်မှတ်ပါ
def get_difference_review_avg(row):
return row["Average_Score"] - row["Calc_Average_Score"]
- # 'mean' is mathematical word for 'average'
+ # 'mean' က သင်္ချာအတွက် 'ပျမ်းမျှ' ဆိုတဲ့စကားလုံးပါ
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)
+ # Hotel_Name ရဲ့တူညီချက်အားလုံးမပါသော df တစ်ခုဖန်တီးပါ (အဲဒါထဲမှာ ဟိုတယ်တစ်ခုလျှင် တစ်စောင်သာ)
review_scores_df = df.drop_duplicates(subset = ["Hotel_Name"])
- # Sort the dataframe to find the lowest and highest average score difference
+ # ပျမ်းမျှအချက်အလက်အနိမ့်ဆုံးနဲ့အမြင့်ဆုံး လွဲပြောင်းချက်ရှာဖွေအောင် dataframe ကို အစီအစဉ်ရေးပါ
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` နှင့် `Calc_Average_Score` တန်ဖိုးများ ပြောင်းလဲခြင်းများ ရှိသည့် အကြောင်းကို စူးစမ်းမေးမြန်းမှု ရှိနိုင်သည်။ ဘာကြောင့် တစ်ချို့ တန်ဖိုးများကိုက်ညီသော်လည်း တချို့ မတူညီကြောင်း သိရှိနိုင်ခြင်း မရှိပါ။ အကောင်းဆုံးလမ်းမှာ ကိုယ်တိုင်တွက်ချက်ထားသော review 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 |
+
+ ၁နာရီကျော်ကွာခြားမှုရှိသော ဟိုတယ်တစ်ခုသာရှိသောကြောင့် ကွာခြားမှုကို လက်မခံခြင်းနှင့် ကိုယ်တိုင်တွက်ချက်ထားသော အပျမ်းမျှမှတ်ချက်ကို အသုံးပြုနိုင်ပါသည်။
-6. ```python
- # with lambdas:
+6. `Negative_Review` ကော်လံတွင် "No Negative" အကြောင်းအရာရှိသည့် စားတန်းရေအတွက်တွက်ချက်ပြီး ပုံနှိပ်ပေးပါ။
+
+7. `Positive_Review` ကော်လံတွင် "No Positive" အကြောင်းအရာရှိသည့် စားတန်းရေအတွက်တွက်ချက်ပြီး ပုံနှိပ်ပေးပါ။
+
+8. `Positive_Review` ကော်လံတွင် "No Positive" နှင့် `Negative_Review` ကော်လံတွင် "No Negative" တန်ဖိုးရှိသော စားတန်းရေအတွက်တွက်ချက်ပြီး ပုံနှိပ်ပါ။
+
+ ```python
+ # lambda များဖြင့်:
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)))
@@ -225,14 +358,14 @@ print("Loading took " + str(round(end - start, 2)) + " seconds")
Number of No Positive reviews: 35946
Number of both No Negative and No Positive reviews: 127
Lambdas took 9.64 seconds
- ```
+ ```
-## အခြားနည်းလမ်း
+## နည်းလမ်းအခြား
-Lambda မသုံးဘဲ item တွေကို count လုပ်ပြီး၊ row တွေကို count လုပ်ဖို့ sum ကို အသုံးပြုပါ -
+Lambda မသုံးပဲ အရာဝတ္ထုရေတွက်ခြင်းဖြင့် တခြားနည်းလမ်းဖြင့် row ရေတွက်မှုကို 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))
@@ -250,28 +383,30 @@ Lambda မသုံးဘဲ item တွေကို count လုပ်ပြီ
Number of No Positive reviews: 35946
Number of both No Negative and No Positive reviews: 127
Sum took 0.19 seconds
- ```
+ ```
-127 rows မှာ `Negative_Review` နဲ့ `Positive_Review` ကော်လံတွေမှာ "No Negative" နဲ့ "No Positive" တန်ဖိုးတွေ ရှိနေတယ်ဆိုတာ သတိထားမိမှာပါ။ ဒါကဆိုရင် reviewer က ဟိုတယ်ကို နံပါတ်အဆင့်ပေးခဲ့ပေမယ့်၊ အပြုသဘော သို့မဟုတ် အနုတ်သဘော review မရေးခဲ့တာဖြစ်ပါတယ်။ ဒေတာစဉ်မှာ review မပါဝင်တဲ့ row တွေ ရှိတယ်ဆိုတာ မမျှော်လင့်ထားတာဖြစ်ပေမယ့်၊ ဒေတာကို စူးစမ်းတဲ့အခါ ဒီလို row တွေကို ရှာဖွေတွေ့ရှိရမှာပါ။
+ အကယ်၍ 127 စားတန်းတွင် `Negative_Review` နှင့် `Positive_Review` ကော်လံများတွင် "No Negative" နှင့် "No Positive" တန်ဖိုးရှိသည်ဟု တွေ့ရှိပါက ဤသည်မှာ ဝန်တော်သုံးသပ်သူသည် ဟိုတယ်ကို ဂဏန်းရမှတ် ပေးခဲ့သော်လည်း အနုတ်/အပါ အခြားသုံးသပ်ချက် မရေးချင်ခဲ့ခြင်း ဖြစ်သည်။ အံ့အားသင့်စရာကောင်းစွာ ဤသည်မှာ စားတန်း ၅၁၅၊၇၃၈ ထဲမှ ၁၂၇ များသာဖြစ်သဖြင့် (0.02%) မော်ဒယ် သို့မဟုတ် ရလဒ်အပေါ် မထိခိုက်မပျက်အကျိုးသက်ရောက်မှုမရှိသလောက် ဖြစ်ပါသည်၊ ဒါပေမယ့် မည်သည့် သုံးသပ်ချက်များတွင် သုံးသပ်ချက် မရှိသော စားတန်းများ ရှိနိုင်ခြင်းကို သိရှိရန် ဒေတာကို စူးစမ်းဖော်ထုတ်ရန် တန်ဖိုးရှိသည်။
-အခုတော့ dataset ကို စူးစမ်းပြီးဖြစ်တဲ့အတွက်၊ နောက်သင်ခန်းစာမှာ ဒေတာကို filter လုပ်ပြီး sentiment analysis တစ်ခု ထည့်သွင်းပါမယ်။
+သင်သည် ဒေတာစုစည်းမှုကို စူးစမ်းပြီးနောက်၊ နောက်တစ်ခုအတွဲတွင် ဒေတာကို စစ်ထုတ်ပြီး စိတ်ခံစားချက်သုံးသပ်မှုပေါင်းထည့်မည်။
----
-## 🚀 စိန်ခေါ်မှု
+---
+## 🚀စိန်ခေါ်မှု
-ဒီသင်ခန်းစာက ပြသသလို၊ သင့်ဒေတာနဲ့ ဒေတာရဲ့ အားနည်းချက်တွေကို နားလည်ဖို့ အရေးကြီးကြောင်း ပြသပါတယ်။ စာသားအခြေပြု ဒေတာတွေကို အထူးသဖြင့် သေချာစွာ စစ်ဆေးဖို့ လိုအပ်ပါတယ်။ စာသားအများကြီးပါတဲ့ dataset တွေကို စူးစမ်းပြီး၊ မော်ဒယ်မှာ bias သို့မဟုတ် skewed sentiment ဖြစ်စေနိုင်တဲ့ အပိုင်းတွေ ရှာဖွေကြည့်ပါ။
+ယခင်သင်ခန်းစာများတွင် ကြည့်ရှုသည့်အတိုင်း၊ သင့်ဒေတာနှင့် ၎င်း၏အထူးပြကုန်များကို နားလည်ခြင်းသည် လုပ်ဆောင်မှုများကို လုပ်မည်မတိုင်မီ အရေးကြီးမှုရှိသည်ကို ဖော်ပြသည်။ စာသားအခြေပြုဒေတာများကို စူးစမ်းလိုက်ပြီး မော်ဒယ်အတွက် မှတ်ချက် အနုတ်လက္ခဏာ သို့မဟုတ် အတော်လေး ထိုလောက်မဟုတ်သော စိတ်ခံစားမှု ဖြစ်ပေါ်စေနိုင်သော နေရာများ ရှာဖွေပါ။
-## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ml/)
+## [သင်ခန်းစာပြီးစီးမှု စစ်ဆေးမှု](https://ff-quizzes.netlify.app/en/ml/)
-## ပြန်လည်သုံးသပ်ခြင်းနှင့် ကိုယ်တိုင်လေ့လာခြင်း
+## ပြန်လည်ဆန်းစစ်ခြင်း နှင့် ကိုယ်တိုင်သင်ယူခြင်း
-[ဒီ Learning Path on NLP](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77952-leestott) ကို လေ့လာပြီး၊ စကားပြောနဲ့ စာသားအခြေပြု မော်ဒယ်တွေ တည်ဆောက်တဲ့အခါ အသုံးပြုနိုင်မယ့် ကိရိယာတွေကို ရှာဖွေပါ။
+[NLP ကို သင်ယူရန် Learning Path အကြောင်း](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77952-leestott) မှာ မဆို မော်ဒယ်ဖန်တီးရာတွင် အသုံးပြုနိုင်သည့် ကိရိယာများ ရှာဖွေပါ။
-## လုပ်ငန်းတာဝန်
+## အလုပ်အပ်ဒါ
-[NLTK](assignment.md)
+[NLTK](assignment.md)
---
-**ဝက်ဘ်ဆိုက်မှတ်ချက်**:
-ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးစားနေသော်လည်း၊ အလိုအလျောက်ဘာသာပြန်ခြင်းတွင် အမှားများ သို့မဟုတ် မမှန်ကန်မှုများ ပါဝင်နိုင်ကြောင်း သတိပြုပါ။ မူလဘာသာစကားဖြင့် ရေးသားထားသော စာရွက်စာတမ်းကို အာဏာတည်သော ရင်းမြစ်အဖြစ် သတ်မှတ်သင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူ့ဘာသာပြန်ပညာရှင်များကို အသုံးပြုရန် အကြံပြုပါသည်။ ဤဘာသာပြန်ကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော နားလည်မှုမှားများ သို့မဟုတ် အဓိပ္ပါယ်မှားများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။
\ No newline at end of file
+
+**ပြောကြားချက်**
+ဤစာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးပမ်းနေသော်လည်း၊ စက်ကိရိယာဘာသာပြန်ခြင်းများတွင် အမှားများ သို့မဟုတ် မှားယွင်းချက်များ ပါဝင်နိုင်ကြောင်း သတိပြုပါရန် လိုအပ်ပါသည်။ မူလစာတမ်းကို မူရင်းဘာသာဖြင့်သာ ယုံကြည်စိတ်ချရသော အချက်အလက်အဖြစ် သတ်မှတ်သင့်သည်။ အရေးကြီးသည့် သတင်းအချက်အလက်များအတွက် ပရော်ဖက်ရှင်နယ် လူသားဘာသာပြန်သူဝန်ဆောင်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်ချက်ကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော နားလည်မှုကွာခြားမှုများ သို့မဟုတ် မမှန်ကန်သော အသုံးပြုမှုများအတွက် ကျွန်ုပ်တို့ တာဝန်မခံပါ။
+
\ No newline at end of file
diff --git a/translations/my/7-TimeSeries/2-ARIMA/README.md b/translations/my/7-TimeSeries/2-ARIMA/README.md
index da721ff1d..ecab305be 100644
--- a/translations/my/7-TimeSeries/2-ARIMA/README.md
+++ b/translations/my/7-TimeSeries/2-ARIMA/README.md
@@ -1,53 +1,76 @@
-# ARIMA ဖြင့် အချိန်စီးရီးခန့်မှန်းခြေ
+# ARIMA ဖြင့် အချိန်တန်းစီးရီး ခန့်မှန်းခြေ
-ယခင်သင်ခန်းစာတွင်၊ အချိန်စီးရီးခန့်မှန်းခြေကို အနည်းငယ်လေ့လာပြီး အချိန်ကာလအတွင်း လျှပ်စစ်သုံးစွဲမှုအတက်အကျကို ဖော်ပြသည့် ဒေတာစဉ်ကို တင်သွင်းခဲ့ပါသည်။
+ယခင်သင်ခန်းစာတွင် သင်သည် အချိန်တန်းစီးရီး ခန့်မှန်းခြေ အကြောင်း နည်းနည်း သိရှိခဲ့ပြီး အချိန်တစ်ရက်အတွင်း လျှပ်စစ်ဝန်ဆောင်မှု အပြောင်းအလဲများ ဖော်ပြထားသော ဒေတာစနစ်ကို ဖတ်ယူခဲ့သည်။
-[](https://youtu.be/IUSk-YDau10 "ARIMA အကြောင်းမိတ်ဆက်")
+[](https://youtu.be/IUSk-YDau10 "ARIMA အကြောင်းအနိမ့်ဖော်ပြချက်")
-> 🎥 အထက်ပါပုံကို နှိပ်ပြီး ဗီဒီယိုကြည့်ပါ: ARIMA မော်ဒယ်များအကြောင်း အကျဉ်းချုပ်။ ဤနမူနာကို R တွင် ပြုလုပ်ထားသော်လည်း၊ အယူအဆများသည် အထွေထွေသဘောတူပါသည်။
+> 🎥 ဗီဒီယိုကို ကြည့်ရန် အပေါ်ကို ဓာတ်ပုံနှိပ်ပါ။ ARIMA မော်ဒယ်များ၏ အနိမ့်ဖော်ပြချက်တို။ ဥပမာအား R မှာ ပြုလုပ်ထားသော်လည်း အကြောင်းအရာများသည် အားလုံးအတွက် ကျင်းပအသုံးပြုနိုင်သည်။
-## [သင်ခန်းစာမတိုင်မီ မေးခွန်း](https://ff-quizzes.netlify.app/en/ml/)
+## [ဘာသာရပ်မတိုင်ခင် စစ်ဆေးရန်မေးခွန်း](https://ff-quizzes.netlify.app/en/ml/)
-## မိတ်ဆက်
+## အကိုယ်တိုင်မိတ်ဆက်ခြင်း
-ဤသင်ခန်းစာတွင်၊ [ARIMA: *A*uto*R*egressive *I*ntegrated *M*oving *A*verage](https://wikipedia.org/wiki/Autoregressive_integrated_moving_average) ဖြင့် မော်ဒယ်များတည်ဆောက်ရန် နည်းလမ်းတစ်ခုကို ရှာဖွေပါမည်။ ARIMA မော်ဒယ်များသည် [non-stationarity](https://wikipedia.org/wiki/Stationary_process) ပြသသည့် ဒေတာများကို အထူးသင့်လျော်သည်။
+ဒီသင်ခန်းစာတွင် သင်သည် [ARIMA: *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 ကို အသုံးပြုနိုင်ရန် အောက်ပါအယူအဆများကို သိရှိထားရန် လိုအပ်ပါသည်-
+ARIMA နှင့် အလုပ်လုပ်နိုင်ရန် သိရန်လိုသော အယူအဆအချို့ရှိသည်။
-- 🎓 **Stationarity**: စာရင်းဇယားအရ၊ stationarity သည် အချိန်အလိုက် ရွှေ့လျားသည့်အခါ မပြောင်းလဲသော ဒေတာဖြန့်ဖြူးမှုကို ဆိုလိုသည်။ Non-stationary ဒေတာသည် အဆင့်အတက်အကျကြောင့် အတက်အကျပြသပြီး၊ ခန့်မှန်းရန်အတွက် ပြောင်းလဲမှုများ လိုအပ်သည်။ ဥပမာအားဖြင့် ရာသီဥတုအခြေအနေသည် ဒေတာတွင် အတက်အကျများကို ဖြစ်ပေါ်စေပြီး 'seasonal-differencing' လုပ်ငန်းစဉ်ဖြင့် ဖယ်ရှားနိုင်သည်။
+- 🎓 **Stationarity**။ စာရင်းအင်းဆိုင်ရာအမြင်မှ ကြည့်လျှင်၊ stationarity သည် အချိန်အရိပ်အမြွက် ပြောင်းလဲမှုမရှိသော ဒေတာဖြစ်သည်။ non-stationary ဒေတာမှာ တိမ်ညိုမတ်မျိုးဖြစ်သော ပြောင်းလဲမှုများ ကြားသည်။ ဥပမာ တစ်ခုမှာ ရာသီဆိုင်ရာ ပြောင်းလဲမှု (seasonality) ပါဝင်ပြီး 'ရာသီပိုင်း ကွာခြားခြင်း' ဖြစ်စဉ်ဖြင့် ဖယ်ရှားနိုင်သည်။
-- 🎓 **[Differencing](https://wikipedia.org/wiki/Autoregressive_integrated_moving_average#Differencing)**: Differencing သည် non-stationary ဒေတာကို stationarity ဖြစ်စေရန် ပြောင်းလဲခြင်းဖြစ်ပြီး၊ non-constant trend ကို ဖယ်ရှားသည်။ "Differencing သည် အချိန်စီးရီး၏ အဆင့်အတက်အကျများကို ဖယ်ရှားပြီး၊ trend နှင့် seasonality ကို ဖယ်ရှားကာ အချိန်စီးရီး၏ mean ကို တည်ငြိမ်စေသည်။" [Shixiong et al မှ စာတမ်း](https://arxiv.org/abs/1904.07632)
+- 🎓 **[Differencing](https://wikipedia.org/wiki/Autoregressive_integrated_moving_average#Differencing)**။ ပြန်လည်ကွာခြားခြင်း (differencing) သည် non-stationary ဒေတာကို stationarity ဖြစ်စေရန် လှုပ်ရှားချက်များ ဖယ်ရှားကာ ပြောင်းလဲခြင်း ဖြစ်ပြီး "Differencing သည် အချိန်တန်းစီးရီး၏ အဆင့် ပြောင်းလဲမှုများကို ဖယ်ရှားကာ ထုံးစံနှင့် ရာသီဆိုင်ရာများကို ဖယ်ရှားပြီး အချိန်တန်းစီးရီး၏ ပျမ်းမျှတန်ဖိုးကို တည်မြဲစေသည်။" [Shixiong et al စာတမ်း](https://arxiv.org/abs/1904.07632)
-## အချိန်စီးရီးတွင် ARIMA ၏ အရေးပါမှု
+## အချိန်တန်းစီးရီးကိုင်တွယ်ရာ၌ ARIMA
-ARIMA ၏ အစိတ်အပိုင်းများကို ဖွင့်ရှင်းပြီး၊ အချိန်စီးရီးကို မော်ဒယ်တည်ဆောက်ရန်နှင့် ခန့်မှန်းရန် အကူအညီပေးပုံကို နားလည်ပါမည်။
+ARIMA ၏ အစိတ်အပိုင်းများကို ခွဲခြမ်းစိတ်ဖြာပြီး အချိန်တန်းစီးရီး မော်ဒယ်တည်ဆောက်ရာတွင် အထောက်အကူဖြစ်စေသည်ကို သိရှိကြရအောင်။
-- **AR - AutoRegressive**: Autoregressive မော်ဒယ်များသည် အတိတ်ဒေတာများကို 'နောက်' ပြန်ကြည့်ကာ ခန့်မှန်းချက်များ ပြုလုပ်သည်။ ဥပမာအားဖြင့် ခဲတံရောင်းအား၏ လစဉ်ဒေတာသည် 'evolving variable' အဖြစ် သတ်မှတ်နိုင်သည်။ [wikipedia](https://wikipedia.org/wiki/Autoregressive_integrated_moving_average)
+- **AR - AutoRegressive အတွက်**။ Autoregressive မော်ဒယ်များသည် အမည်အရ ယခင်အချိန်များကို ကြည့်၍ ဒေတာတွင် တွေ့ရသော တန်ဖိုးများကို စုဆောင်းကာ ခန့်မှန်းချက်များပြုစုသည်။ ယင်း ယခင်တန်ဖိုးများကို 'lags' ဟုခေါ်သည်။ ဥပမာအားဖြင့် သစ်သားပင်ဆွဲ စီးဝယ်ရောင်းအားအတွက် လစဉ်ရောင်းအား ဒေတာဟာ 'ဖွံ့ဖြိုးရွှင်လာသော အသေးစိတ်' များအနေနှင့် တွက်ချက်သည်။ ဤမော်ဒယ်သည် "အဓိကစိတ်ဝင်စားမှုရှိသော အသေးစိတ်သည် မိမိ၏ ယခင်တန်ဖိုးများပေါ် အခြေခံ၍ ပြန်လည်ခန့်မှန်းခြေခံရသည်။" [wikipedia](https://wikipedia.org/wiki/Autoregressive_integrated_moving_average)
-- **I - Integrated**: ARIMA ၏ 'I' သည် [integrated](https://wikipedia.org/wiki/Order_of_integration) aspect ကို ဆိုလိုသည်။ Differencing လုပ်ငန်းစဉ်များကို အသုံးပြုကာ non-stationarity ကို ဖယ်ရှားသည်။
+- **I - Integrated အတွက်**။ ARMA မော်ဒယ်များနှင့် ကွဲပြားပြီး 'I' ဆိုသည်မှာ *[integrated](https://wikipedia.org/wiki/Order_of_integration)* အချက်ဖြစ်သည်။ Differencing လုပ်ငန်းစဉ်များ ဖြင့် non-stationarity ဖယ်ရှားရာတွင် ဒေတာသည် 'integrated' ဖြစ်သည်။
-- **MA - Moving Average**: [Moving-average](https://wikipedia.org/wiki/Moving-average_model) aspect သည် lag များ၏ လက်ရှိနှင့် အတိတ်တန်ဖိုးများကို ကြည့်ကာ output variable ကို သတ်မှတ်သည်။
+- **MA - Moving Average အတွက်**။ ဤမော်ဒယ်၏ [moving-average](https://wikipedia.org/wiki/Moving-average_model) အစိတ်အပိုင်းသည် ယခုနှင့် ယခင် လက်တွေ့တန်ဖိုးများအား စစ်ဆေးသည့် output မဟာဗျူဟာဖြစ်သည်။
-အကျဉ်းချုပ်: ARIMA သည် အချိန်စီးရီးဒေတာ၏ အထူးပုံစံနှင့် အနီးစပ်ဆုံးဖြစ်စေရန် မော်ဒယ်တည်ဆောက်ရန် အသုံးပြုသည်။
+စာအုတ်တင်လိုက်ပါ။ ARIMA ကို အချိန်တန်းစီးရီး ဒေတာ အမျိုးအစားအတွက် အလွန်နီးကပ်စွာ မော်ဒယ် ပြုလုပ်ရန် အသုံးပြုသည်။
-## လေ့ကျင့်ခန်း - 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) ဖိုင်ကို ရှာပါ။
+ဒီသင်ခန်းစာမှ [_/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 library ကို notebook တွင် run လုပ်ပါ။ ARIMA မော်ဒယ်များအတွက် လိုအပ်ပါသည်။
+1. notebook များကို `statsmodels` Python စာကြည့်တိုက်ကို တင်ရန် လည်ပတ်ပါ။ ARIMA မော်ဒယ်များအတွက် လိုအပ်ပါသည်။
-1. လိုအပ်သော libraries များကို load လုပ်ပါ။
+1. လိုအပ်သော စာကြည့်တိုက်များကို တင်ပါ
-1. ဒေတာကို `/data/energy.csv` ဖိုင်မှ Pandas dataframe သို့ load လုပ်ပြီး ကြည့်ပါ:
+1. အခု အချက်အလက်တွေကို ကွက်ပန်းပြသရန် အသုံးဝင်သော စာကြည့်တိုက်များကို အပိုတင်ပါ။
+
+ ```python
+ import os
+ import warnings
+ import matplotlib.pyplot as plt
+ import numpy as np
+ import pandas as pd
+ import datetime as dt
+ import math
+
+ from pandas.plotting import autocorrelation_plot
+ from statsmodels.tsa.statespace.sarimax import SARIMAX
+ from sklearn.preprocessing import MinMaxScaler
+ from common.utils import load_data, mape
+ from IPython.display import Image
+
+ %matplotlib inline
+ pd.options.display.float_format = '{:,.2f}'.format
+ np.set_printoptions(precision=2)
+ warnings.filterwarnings("ignore") # သတိပေးချက်မက်ဆေ့မြေ့များကို မက်မရောက်စေရန် သတ်မှတ်ပါ
+ ```
+
+1. `/data/energy.csv` ဖိုင်ထဲမှ ဒေတာအား Pandas dataframe သို့ တင်ပြီး ကြည့်ရှုပါ။
```python
energy = load_data('./data')[['load']]
energy.head(10)
```
-1. 2012 ခုနှစ် ဇန်နဝါရီမှ 2014 ခုနှစ် ဒီဇင်ဘာအထိရှိသော လျှပ်စစ်သုံးစွဲမှုဒေတာအား plot လုပ်ပါ:
+1. ၂၀၁၂ ခုနှစ် ဇန်နဝါရီလမှ ၂၀၁၄ ခုနှစ် ဒီဇင်ဘာလ အထိ ပါဝင်သော စွမ်းအင်ဒေတာအား မျက်နှာပြင်တွင် ဖော်ပြပါ။ ယခင်သင်ခန်းစာတွင် တွေ့ခဲ့သောအတိုင်း မထင်မှတ်ထားသော အချက်မရှိပါ:
```python
energy.plot(y='load', subplots=True, figsize=(15, 8), fontsize=12)
@@ -56,22 +79,22 @@ ARIMA ၏ အစိတ်အပိုင်းများကို ဖွင့
plt.show()
```
- ယခု မော်ဒယ်တည်ဆောက်ရန် စတင်ပါ။
+ ယခု မော်ဒယ် တည်ဆောက်ကြရအောင်!
-### Training နှင့် Testing ဒေတာစဉ်များ ဖန်တီးခြင်း
+### လေ့ကျင့်ရန်နှင့် စမ်းသပ်ရန် ဒေတာများကို ဖန်တီးခြင်း
-ဒေတာကို load လုပ်ပြီးပါက၊ train နှင့် test sets သို့ ခွဲခြားပါ။ Train set တွင် မော်ဒယ်ကို လေ့ကျင့်ပြီး၊ test set တွင် accuracy ကို စစ်ဆေးပါမည်။
+ယခု ဒေတာတင်ပြီးဖြစ်သည်ဖြစ်၍ လေ့ကျင့်ရန် (train) နှင့် စမ်းသပ်ရန် (test) ဒေတာများအဖြစ် ခွဲနိုင်ပါသည်။ မော်ဒယ်ကို လေ့ကျင့်ရန် trainဒေတာမှာ အသုံးပြုပါမည်။ ထုံးစံအတိုင်း မော်ဒယ် လေ့ကျင့်ပြီးနောက် S test ဒေတာဖြင့် တိကျမှုအား စစ်ဆေးပါမည်။ စမ်းသပ်မှု ဒေတာက လေ့ကျင့်မှု ဒေတာထက်နောက်ပိုင်း အချိန်ကာလကို ဖုံးလွှမ်းထားသည့်အဆင့်ဖြစ်ရမည်။
-1. 2014 ခုနှစ် စက်တင်ဘာ 1 မှ အောက်တိုဘာ 31 အထိ train set အဖြစ် သတ်မှတ်ပါ။ Test set သည် 2014 ခုနှစ် နိုဝင်ဘာ 1 မှ ဒီဇင်ဘာ 31 အထိ ဖြစ်ပါမည်:
+1. ၂၀၁၄ ခုနှစ် စက်တင်ဘာ ၁ ရက်မှ အောက်တိုဘာ ၃၁ ရက် ပထမနှစ်လအထိ သင်တန်းဒေတာသာ ခွဲဝေပေးပါ။ စမ်းသပ် ဒေတာသည် ၂၀၁၄ ခုနှစ် နိုဝင်ဘာ ၁ ရက်မှ ဒီဇင်ဘာ ၃၁ ရက်အထိ ဖြစ်ပါသည်။
```python
train_start_dt = '2014-11-01 00:00:00'
test_start_dt = '2014-12-30 00:00:00'
```
- ဒေတာသည် ရာသီဥတုအတက်အကျများကို ပြသသော်လည်း၊ နောက်ဆုံးရက်များနှင့် ဆင်တူသည်။
+ ဒီဒေတာမှာ နေ့စဉ် စွမ်းအင်အသုံးအနှုန်းကို ပြသသည့်အတွက် ရာသီဆိုင်ရာ ဖွဲ့စည်းမှုရှိသော်လည်း နောက်ဆုံးနေ့များထက် ပိုမိုနီးစပ်သည့် အသုံးအနှုန်းများ ဖြစ်သည်။
-1. ခွဲခြားထားသော train နှင့် test sets ကို visualization ပြုလုပ်ပါ:
+1. ကွဲပြားချက်များကို ကိုင်တွယ် ကြည့်ပါ။
```python
energy[(energy.index < test_start_dt) & (energy.index >= train_start_dt)][['load']].rename(columns={'load':'train'}) \
@@ -82,15 +105,17 @@ ARIMA ၏ အစိတ်အပိုင်းများကို ဖွင့
plt.show()
```
- 
+ 
+
+ ထို့ကြောင့် training ဒေတာကို သာသာလေး ခြေနေချိန်တွင် သင်ယူခြင်း သင့်လျော်သည်။
- > မှတ်ချက်: ARIMA မော်ဒယ် fitting လုပ်စဉ်တွင် in-sample validation ကို အသုံးပြုသဖြင့် validation data ကို မထည့်ပါ။
+ > မှတ်ချက် - ARIMA မော်ဒယ် တည်ဆောက်ရာတွင် sample validation ကို အသုံးပြုသဖြင့် validation ဒေတာကို ထည့်မသုံးပါ။
-### Training အတွက် ဒေတာကို ပြင်ဆင်ခြင်း
+### လေ့ကျင့်ရန် အချက်အလက်များ ပြင်ဆင်ခြင်း
-Training အတွက် ဒေတာကို filter နှင့် scale ပြုလုပ်ပါ။
+ယခုသင်အချက်အလက်များကို စစ်ထုတ်ခြင်းနှင့် အတိုင်းအတာပြောင်းခြင်း ဖျော်ဖြေရန် လိုပါသည်။ သင့်လိုအပ်သည့် အချိန်ကာလနှင့် ကော်လံများ ကန့်သတ်ပြီး ဒေတာကို စစ်ထုတ်ပြီး၊ 0 နှင့် 1 ကြားသို့ အတိုင်းအတာပြောင်းပါ။
-1. Train နှင့် test sets အတွက် လိုအပ်သော column များကို filter လုပ်ပါ:
+1. အစောပိုင်းဒေတာတွင် ယင်းအချိန်ကာလများနှင့် 'load' ကော်လံနှင့် ရက်စွဲကော်လံ များသာ ပါဝင်အောင် စစ်ထုတ်ပါ။
```python
train = energy.copy()[(energy.index >= train_start_dt) & (energy.index < test_start_dt)][['load']]
@@ -100,7 +125,14 @@ Training အတွက် ဒေတာကို filter နှင့် scale ပ
print('Test data shape: ', test.shape)
```
-1. ဒေတာကို (0, 1) interval အတွင်း scale ပြုလုပ်ပါ:
+ ဒေတာ၏ အပုံစံကို ကြည့်ရှုနိုင်သည်။
+
+ ```output
+ Training data shape: (1416, 1)
+ Test data shape: (48, 1)
+ ```
+
+1. ဒေတာကို (0, 1) အတွင်း အတိုင်းအတာပြောင်းပါ။
```python
scaler = MinMaxScaler()
@@ -108,7 +140,7 @@ Training အတွက် ဒေတာကို filter နှင့် scale ပ
train.head(10)
```
-1. Original ဒေတာနှင့် scaled ဒေတာကို ကြည့်ပါ:
+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)
@@ -116,27 +148,50 @@ Training အတွက် ဒေတာကို filter နှင့် scale ပ
plt.show()
```
- 
+ 
- > Original ဒေတာ
+ > မူလ ဒေတာ
- 
+ 
- > Scaled ဒေတာ
+ > အတိုင်းအတာပြောင်းပြီး ဒေတာ
-### ARIMA ကို အကောင်အထည်ဖော်ခြင်း
+1. အဲဒီအတိုင်းအတာပြောင်းထားသော ဒေတာနဲ့ စမ်းသပ် ဒေတာကိုလည်း အတိုင်းအတာပြောင်းပါ။
-`statsmodels` library ကို အသုံးပြုကာ ARIMA ကို အကောင်အထည်ဖော်ပါ။
+ ```python
+ test['load'] = scaler.transform(test)
+ test.head()
+ ```
+
+### ARIMA ကို အသုံးပြုပါ
+
+ယခု ARIMA ကို အသုံးပြုရမှာ ဖြစ်ပြီး ယခင်တွင် တင်ထားသော `statsmodels` စာကြည့်တိုက်ကို အသုံးပြုပါမည်။
+
+ယခုအဆင့်တွင် အဆင့်အလိုက် လုပ်ဆောင်ရမည့် အဆင့်များမှာ
+
+ 1. `SARIMAX()` ကို ခေါ်ပြီး မော်ဒယ် ပါရာမီတာများ p, d, q နှင့် P, D, Q ကို ဖြည့်ပါ။
+ 2. လေ့ကျင့်မှု ဒေတာအတွက် `fit()` လုပ်ဆောင်ချက်ကို ခေါ်ကာ မော်ဒယ်ကို ပြင်ဆင်ပါ။
+ 3. ခန့်မှန်းရန် `forecast()` ကို ခေါ်ပြီး ခန့်မှန်းမည့် အဆင့်များ (horizon) အရေအတွက် သတ်မှတ်ပါ။
-1. Horizon value ကို သတ်မှတ်ပါ။ ဥပမာအားဖြင့် 3 နာရီ:
+> 🎓 ဒီ parameter တို့သည် ဘာအတွက်လဲ? ARIMA မော်ဒယ်တွင် ခန့်မှန်းရန် အဓိက အချက် ၃ ခု ရှိသည်။ ၎င်းမှာ ရာသီဆိုင်ရာ (seasonality), ချဲ့ထွင်မှု (trend), နှင့် အသံညှိ (noise) ဖြစ်သည်။ အကြောင်းအရာများမှာ:
+
+`p`: မော်ဒယ်တွင် auto-regressive အပိုင်းနှင့် ဆက်စပ်မှုရှိပြီး *အရင်*တန်ဖိုးများကိုယူပါသည်။
+`d`: မော်ဒယ်၏ integrated အပိုင်းနှင့် ဆက်စပ်မှုရှိပြီး *differencing* ထည့်သွင်းသည့်အတိုးအကျယ်ကို အကျိုးသက်ရောက်စေသည်။
+`q`: မော်ဒယ်တွင် moving-average အပိုင်းနှင့် ဆက်စပ်သည်။
+
+> မှတ်ချက်- သင့်ဒေတာတွင် ရာသီဆိုင်ရာအစိတ်အပိုင်းရှိပါက - ဒါမှမဟုတ် - ရာသီ ARIMA မော်ဒယ် (SARIMA) ကိုအသုံးပြုသည်။ ၎င်းအတွက် `P`, `D`, `Q` parameter များကိုအသုံးပြုရပြီး, p, d, q နှင့် တူညီသည်ဟုဆိုပါလျက် ရာသီဆိုင်ရာ component များအတွက် အသုံးပြုသည်။
+
+1. သင့်နှစ်သက်ရာ horizon ကို သတ်မှတ်ပါ။ ၃ နာရီ ကြိုးစားကြည့်ရအောင်။
```python
- # Specify the number of steps to forecast ahead
+ # ရှေ့ကြိုခန့်မှန်းရန်ခြေလှမ်းအရေအတွက်ကို ပြသပါ။
HORIZON = 3
print('Forecasting horizon:', HORIZON, 'hours')
```
-1. Parameters များကို manual ရွေးချယ်ပါ:
+ ARIMA မော်ဒယ် parameter များအတွက် အကောင်းဆုံးတန်ဖိုးရွေးချယ်ခြင်းသည် စိတ်ခံစားချက်နှင့် အချိန်ယူမှုကြောင့် အခက်အခဲရှိနိုင်သည်။ `auto_arima()` ကို [`pyramid` စာကြည့်တိုက်မှ](https://alkaline-ml.com/pmdarima/0.9.0/modules/generated/pyramid.arima.auto_arima.html) အသုံးပြုနိုင်သည်၊
+
+1. ယခုအချိန်တွင် လက်ဖြင့် ရွေးချယ်၍ မော်ဒယ်ကောင်းမလား ကြိုးစားကြည့်ပါ။
```python
order = (4, 1, 0)
@@ -148,13 +203,23 @@ Training အတွက် ဒေတာကို filter နှင့် scale ပ
print(results.summary())
```
- > 🎓 Parameters များသည် seasonality, trend, နှင့် noise ကို မော်ဒယ်တည်ဆောက်ရန် အရေးပါသည်။
+ အဖြေများ စာရင်းကို ပုံနှိပ်ပြပါမည်။
-### မော်ဒယ်ကို အကဲဖြတ်ခြင်း
+သင့်ပထမဆုံး မော်ဒယ်ကို တည်ဆောက်ပြီးပြီ! ယခု ဒီမော်ဒယ်ကို ရှာဖွေရန် လိုအပ်သည်။
-Walk-forward validation ကို အသုံးပြုကာ မော်ဒယ်ကို အကဲဖြတ်ပါ။
+### သင့် မော်ဒယ်ကို တိုင်းတာခြင်း
-1. Test data point များကို horizon step အလိုက် ဖန်တီးပါ:
+သင့်မော်ဒယ်အား `walk forward` စိစစ်မှုဖြင့် စမ်းသပ်နိုင်သည်။ လက်တွေ့တွင် အချိန်တန်းစီးရီး မော်ဒယ်များသည် ထပ်တလဲလဲ ပြန်လည်လေ့ကျင့်သည်။ ၎င်းအားဖြင့် မော်ဒယ်သည် အချိန်တိုင်းတွင် အကောင်းဆုံး ခန့်မှန်းချက်ဖော်ဆောင်နိုင်စေသည်။
+
+အချိန်တန်းစီးရီးအစပိုင်းမှ စ၍ ဒီနည်းလမ်းဖြင့် သင်ယူရန် ဒေတာပေါ် မော်ဒယ်ကို လေ့ကျင့်ပါ။ နောက်ထပ် အချိန်အပိုင်းတွင် ခန့်မှန်းချက်ပြုလုပ်ပါ။ ခန့်မှန်းချက်ကို သိရှိပြီးသားတန်ဖိုးနှင့် နှိုင်းယှဉ်၍ တန်ဖိုးတိုင်း သိရှိပြီးမှ ပြန်လည် လေ့ကျင့်မှုလက်စွဲမှာ ထပ်ခေါင်းထည့်ပါ။ ဒီလုပ်ငန်းစဉ်ကို ထပ်လည်ပြုလုပ်ပါ။
+
+> မှတ်ချက်- သင်ယူမှု data window ကို တည်တံ့စေဖို့ အဆင့်မြှင့်သင့်ပါသည်။ မည်သည့်ဖော်ပြချက်အသစ်ကို training set တွင် ထည့်သွင်းပါက အသစ်ထည့်သည့် အစိတ်အပိုင်းကို စတင်နေရာမှ ဖယ်ရှားရမည်။
+
+ဤလုပ်ငန်းစဉ်သည် မော်ဒယ်၏ လုပ်ဆောင်ချက်ကို ပိုမိုတိကျစွာ ခန့်မှန်းရန် အထောက်အကူပြုသည်။ သို့သော် မော်ဒယ်များ များစွာ ဖန်တီးရခြင်းကြောင့် ကြိုတင်တွက်ချက်မှုဝက်လက်များ ဖြစ်ပေါ်နိုင်သည်။ ဒေတာ သေးငယ်ပါက သို့မဟုတ် မော်ဒယ် လွယ်ကူပါက ခုံလုပ်နိုင်သည်၊ သို့မဟုတ် ပမာဏကြီးလျှင် ပြဿနာဖြစ်ပေါ်နိုင်သည်။
+
+Walk-forward စစ်ဆေးမှုသည် အချိန်တန်းစီးရီး မော်ဒယ် စစ်ဆေးမှု၏ ရွှေစံချိန်ဖြစ်ပြီး သင့်ပရောဂျက်များတွင် အကြံပြုသည်။
+
+1. ပထမဆုံး HORIZON အဆင့်အတွက် စမ်းသပ်ဒေတာ များကို ဖန်တီးပါ။
```python
test_shifted = test.copy()
@@ -166,11 +231,21 @@ Walk-forward validation ကို အသုံးပြုကာ မော်ဒ
test_shifted.head(5)
```
-1. Sliding window approach ဖြင့် prediction ပြုလုပ်ပါ:
+ | | | load | load+1 | load+2 |
+ | ---------- | -------- | ---- | ------ | ------ |
+ | 2014-12-30 | 00:00:00 | 0.33 | 0.29 | 0.27 |
+ | 2014-12-30 | 01:00:00 | 0.29 | 0.27 | 0.27 |
+ | 2014-12-30 | 02:00:00 | 0.27 | 0.27 | 0.30 |
+ | 2014-12-30 | 03:00:00 | 0.27 | 0.30 | 0.41 |
+ | 2014-12-30 | 04:00:00 | 0.30 | 0.41 | 0.57 |
+
+ ဒေတာသည် horizon point အတိုင်း အမြန်ကြောင့် ရွှေ့လျားထားသည်။
+
+1. စမ်းသပ် ဒေတာတွင် ဒီ sliding window နည်းကို အသုံးပြု၍ loop ဇယားအတိုင်း ခန့်မှန်းချက်များ ပြုလုပ်ပါ။
```python
%%time
- training_window = 720 # dedicate 30 days (720 hours) for training
+ training_window = 720 # လေ့ကျင့်မှုအတွက် ၃၀ ရက် (၇၂၀ နာရီ) သီးသန့် ပေးပါ
train_ts = train['load']
test_ts = test_shifted
@@ -189,14 +264,27 @@ Walk-forward validation ကို အသုံးပြုကာ မော်ဒ
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)
```
-1. Prediction နှင့် actual load ကို နှိုင်းယှဉ်ပါ:
+ သင်ယူမှုဖြစ်စဉ်ကို ကြည့်နေရနိုင်သည်။
+
+ ```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)])
@@ -207,19 +295,30 @@ Walk-forward validation ကို အသုံးပြုကာ မော်ဒ
eval_df.head()
```
- > Output: Prediction နှင့် actual load တို့၏ တိကျမှုကို စစ်ဆေးပါ။
+ ထွက်မည့်အချက်
+ | | | 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) ကို အသုံးပြုကာ မော်ဒယ်၏ တိကျမှုကို စစ်ဆေးပါ။
-> **🧮 သင်္ချာကို ပြပါ**
->
-> 
+ နာရီစဉ် ဒေတာများ၏ ခန့်မှန်းချက်များကို တကယ့် စွမ်းအင်အသုံးအနှုန်းနှင့် နှိုင်းယှဉ်ပါ။ ဘယ်လောက်တိကျသနည်း။
+
+### မော်ဒယ်တိကျမှု စစ်ဆေးခြင်း
+
+သင်၏ မော်ဒယ်၏ တိကျမှုကို ခန့်မှန်းချက် အားလုံးတွင် သူ့ရဲ့ 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. ကုဒ်ဖြင့် ဆွဲချက်ကို ဖော်ပြပါ။
+> [MAPE](https://www.linkedin.com/pulse/what-mape-mad-msd-time-series-allameh-statistics/) ကို ခန့်မှန်းချက်တိကျမှုအနေဖြင့် အထက်ဖော်ပြထားသော ဖော်မြူလာအား အသုံးပြုသည်။ actualt နှင့် predictedt ကြား ကွာခြားမှုကို actualt ဖြင့် 나누다။ "ဤ ဂဏန်းတွက်ချက်မှု များကို အချိန်တိုင်း မှတ်တမ်းပြီး နောက်ဆုံးတွင် ခန့်မှန်းချက်အရေအတွက် n ဖြင့် ညှိသည်။" [wikipedia](https://wikipedia.org/wiki/Mean_absolute_percentage_error)
+
+
+1. သင်္ချာညွှန်းချက်ကို ကုဒ်အနေဖြင့်ဖေါ်ပြပါ။
```python
if(HORIZON > 1):
@@ -233,9 +332,9 @@ Mean absolute percentage error (MAPE) ကို အသုံးပြုကာ
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 %
+ တစ်ဆင့် ကောက်ချက် MAPE: 0.5570581332313952 %
-1. အဆင့်များစွာခန့်မှန်းချက် MAPE ကို ပုံနှိပ်ပါ။
+1. မျိုးစုံတစ်ဆင့် ကောက်ချက် MAPE ကို ပုံနှိပ်ပါ။
```python
print('Multi-step forecast MAPE: ', mape(eval_df['prediction'], eval_df['actual'])*100, '%')
@@ -245,17 +344,17 @@ Mean absolute percentage error (MAPE) ကို အသုံးပြုကာ
Multi-step forecast MAPE: 1.1460048657704118 %
```
- နိမ့်သောနံပါတ်က အကောင်းဆုံးဖြစ်သည်။ MAPE 10 ရှိသောခန့်မှန်းချက်တစ်ခုသည် 10% မှားနေသည်ဟု ဆိုလိုသည်။
+ နည်းနည်းနိမ့်တဲ့ နံပါတ်က အကောင်းဆုံးပါ: MAPE 10 ရတဲ့ ကောက်ချက်ဟာ 10% အမှားရှိတယ်လို့ သတ်မှတ်နိုင်ပါတယ်။
-1. သို့သော် အမြဲတမ်းလိုလို၊ ဒီလိုတိကျမှုတိုင်းတာမှုကို မြင်ရလွယ်အောင် ပုံဆွဲကြည့်ရင် ပိုမိုကောင်းမွန်သည်။
+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
@@ -275,27 +374,29 @@ Mean absolute percentage error (MAPE) ကို အသုံးပြုကာ
plt.show()
```
- 
+ 
-🏆 တိကျမှုကောင်းမွန်သော မော်ဒယ်ကို ဖော်ပြထားသည့် အလွန်ကောင်းမွန်သော ပုံတစ်ပုံ။ အလုပ်ကောင်းပါတယ်!
+🏆 တိကျမှုကောင်းတဲ့ မော်ဒယ်ကို ဖော်ပြသည့် အလွန်လှပတဲ့ ပုံတစ်ပုံ ပါ။ ကောင်းစွာဆောင်ရွက်ပြီးပါပြီ။
---
-## 🚀စိန်ခေါ်မှု
+## 🚀 စိန်ခေါ်မှု
-အချိန်စီးရီးမော်ဒယ်တစ်ခု၏ တိကျမှုကို စမ်းသပ်နိုင်သော နည်းလမ်းများကို လေ့လာပါ။ ဒီသင်ခန်းစာတွင် MAPE ကိုသာ ထိတွေ့ခဲ့ကြပေမယ့် သင်အသုံးပြုနိုင်သည့် အခြားနည်းလမ်းများ ရှိပါသလား။ ၎င်းတို့ကို သုတေသနပြုပြီး မှတ်ချက်ထည့်ပါ။ အသုံးဝင်သော စာရွက်စာတမ်းကို [ဒီမှာ](https://otexts.com/fpp2/accuracy.html) တွေ့နိုင်ပါသည်။
+အချိန်အဆက်အတန်း မော်ဒယ် တိကျမှုကို စမ်းသပ်ရန် နည်းလမ်းများကို အပြည့်အဝ လေ့လာပါ။ ဤသင်ခန်းစာတွင် MAPE ကို အနည်းငယ် ပြောဆိုထားပြီး အခြားနည်းလမ်းများရှိပါသလား? သူတို့ကို ရှာဖွေပြီး မှတ်ချက်ထိုးပါ။ အကူအညီဖြစ်သည့် စာရွက်ကို [ဒီမှာ](https://otexts.com/fpp2/accuracy.html) ရရှိနိုင်သည်။
-## [သင်ခန်းစာပြီးနောက် မေးခွန်း](https://ff-quizzes.netlify.app/en/ml/)
+## [သင်ခန်းစာပြီးနောက် စစ်ဆေးမှု](https://ff-quizzes.netlify.app/en/ml/)
## ပြန်လည်သုံးသပ်ခြင်းနှင့် ကိုယ်တိုင်လေ့လာခြင်း
-ဒီသင်ခန်းစာသည် ARIMA ဖြင့် အချိန်စီးရီးခန့်မှန်းခြင်း၏ အခြေခံအချက်များကိုသာ ထိတွေ့သည်။ [ဒီ repository](https://microsoft.github.io/forecasting/) နှင့် ၎င်း၏ မော်ဒယ်အမျိုးအစားများကို လေ့လာခြင်းဖြင့် အချိန်စီးရီးမော်ဒယ်များ တည်ဆောက်ရန် အခြားနည်းလမ်းများကို သင်ယူရန် အချိန်ယူပါ။
+ဤသင်ခန်းစာသည် ARIMA ဖြင့် အချိန်စီးဆင်းမှု မော်ဒယ်တစ်ခု၏ အခြေခံအချက်များကိုသာ ဖြတ်သန်းသည်။ အချိန်စီးဆင်းမှု မော်ဒယ်များဖန်တီးခြင်းအတွက် မော်ဒယ်အမျိုးမျိုးနှင့်အတူ ဤ [repository](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
+
+**ပြောကြားချက်**
+ဤစာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးပမ်းနေသော်လည်း၊ စက်ကိရိယာဘာသာပြန်ခြင်းများတွင် အမှားများ သို့မဟုတ် မှားယွင်းချက်များ ပါဝင်နိုင်ကြောင်း သတိပြုပါရန် လိုအပ်ပါသည်။ မူလစာတမ်းကို မူရင်းဘာသာဖြင့်သာ ယုံကြည်စိတ်ချရသော အချက်အလက်အဖြစ် သတ်မှတ်သင့်သည်။ အရေးကြီးသည့် သတင်းအချက်အလက်များအတွက် ပရော်ဖက်ရှင်နယ် လူသားဘာသာပြန်သူဝန်ဆောင်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်ချက်ကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော နားလည်မှုကွာခြားမှုများ သို့မဟုတ် မမှန်ကန်သော အသုံးပြုမှုများအတွက် ကျွန်ုပ်တို့ တာဝန်မခံပါ။
+
\ No newline at end of file
diff --git a/translations/my/8-Reinforcement/1-QLearning/README.md b/translations/my/8-Reinforcement/1-QLearning/README.md
index 9a499c021..452e6edcb 100644
--- a/translations/my/8-Reinforcement/1-QLearning/README.md
+++ b/translations/my/8-Reinforcement/1-QLearning/README.md
@@ -1,47 +1,47 @@
-# Reinforcement Learning နှင့် Q-Learning အကြောင်းမိတ်ဆက်
+# ပြန်လည်မြှင့်တင်သင်ယူမှုပညာနှင့် Q-သင်ယူမှု မိတ်ဆက်ခြင်း
-
-> Sketchnote by [Tomomi Imura](https://www.twitter.com/girlie_mac)
+
+> Sketchnote ကို [Tomomi Imura](https://www.twitter.com/girlie_mac) မှ ဖန်တီးခဲ့သည်
-Reinforcement learning တွင် အရေးပါသော အချက် ၃ ခုရှိသည်။ အဲဒါတွေကတော့ agent, states တစ်ချို့, နှင့် state တစ်ခုစီအတွက် actions တွေဖြစ်သည်။ သတ်မှတ်ထားသော state မှာ action တစ်ခုကို လုပ်ဆောင်ခြင်းအားဖြင့် agent သည် reward ရရှိမည်။ Super Mario ကွန်ပျူတာဂိမ်းကို ထပ်မံစဉ်းစားပါ။ သင်သည် Mario ဖြစ်ပြီး၊ ဂိမ်းအဆင့်တစ်ခုတွင်၊ ချိုင့်စွန်းအနားမှာရပ်နေသည်။ သင့်အပေါ်မှာ coin တစ်ခုရှိသည်။ သင်သည် Mario ဖြစ်ပြီး၊ ဂိမ်းအဆင့်တစ်ခုတွင်၊ တိကျသောနေရာတွင် ရပ်နေသည်... ဒါက သင့် state ဖြစ်သည်။ ညာဘက်ကို တစ်ခြေလှမ်း (action) ရွှေ့ခြင်းသည် ချိုင့်စွန်းအောက်ကို ကျသွားစေပြီး၊ အနိမ့်သော ကိန်းဂဏန်း score ရရှိမည်။ သို့သော် jump ခလုတ်ကို နှိပ်ခြင်းဖြင့် သင် point ရရှိပြီး အသက်ရှင်နေမည်။ ဒါက အကောင်းဆုံးရလဒ်ဖြစ်ပြီး၊ သင့်ကို အကောင်းသော ကိန်းဂဏန်း score ပေးသင့်သည်။
+ပြန်လည်မြှင့်တင်သင်ယူမှုတွင် အရေးကြီးသော အကြောင်းအရာသုံးခု ပါဝင်သည်။ အAgent၊ အချို့သော အခြေအနေများနှင့် အခြေအနေတိုင်းအလိုက် ကြားခံ လုပ်ဆောင်ချက်များဖြစ်သည်။ အAgent သည် ရှိသော အခြေအနေကြောင်းတွင် လုပ်ဆောင်ချက်တစ်ခုကို ဆောင်ရွက်ခြင်းဖြင့် ဆုလာဘ်ရနိုင်သည်။ ပြန်လည်စဉ်းစားပါ Super Mario ကွန်ပျူတာဂိမ်းအား။ သင်သည် Mario ဖြစ်ပြီး ဂိမ်းအဆင့်တစ်ခုတွင် တောင်တန်းကျောနားတွင် ရပ်နေနေသည်။ သင့်အပေါ်တွင် ပိုက်ဆံတစ်စက်ရှိသည်။ သင် Mario နှင့်အတူ ဂိမ်းအဆင့်အတည်ပြုဆိုင်း ... ၎င်းသည် သင့်အခြေအနေဖြစ်သည်။ ညာဘက်သို့ တစ်ခြားခြေလှမ်းတက်ခြင်း (လုပ်ဆောင်ချက်မှ) သင့်အား ကျောနေရာထက် ကျရောက်စေပြီး ဂဏန်းအနည်းငယ်သော ရမှတ်ဖြစ်ပွားစေမည်။ သို့သော် ကွေ့လျှင်ခလုတ်ကို နှိပ်ခြင်းသည် သင့်အား ရမှတ်တစ်ခုရရှိစေပြီး ကယ်တင်မှုရှိစေမည်။ ၎င်းသည် ကောင်းသောရလဒ်ဖြစ်ပြီး ကောင်းသောဂဏန်းတန်ဖိုးဖြင့် ဆုလာဘ်ပေးသင့်သည်။
-Reinforcement learning နှင့် simulator (ဂိမ်း) ကို အသုံးပြုခြင်းအားဖြင့် သင်သည် အသက်ရှင်နေခြင်းနှင့် အများဆုံး point ရရှိရန် ဂိမ်းကို ကစားပုံကို သင်ယူနိုင်သည်။
+ပြန်လည်မြှင့်တင်သင်ယူမှုနှင့် စမ်းသပ်ကစားနည်း (ဂိမ်း) ကို အသုံးပြု၍ ဂိမ်းကို ကစားရန် သင်ယူနိုင်ကာ အသက်ကို ကယ်တင်ခြင်း၊ အများဆုံးဆုလာဘ်ရရှိစေရန် နည်းလမ်းရှာနိုင်သည်။
-[](https://www.youtube.com/watch?v=lDq_en8RNOo)
+[](https://www.youtube.com/watch?v=lDq_en8RNOo)
-> 🎥 အထက်ပါပုံကို နှိပ်ပြီး Dmitry ၏ Reinforcement Learning အကြောင်းဆွေးနွေးမှုကို ကြည့်ပါ
+> 🎥 Dmitry မှ ပြန်လည်မြှင့်တင်သင်ယူမှုအကြောင်း ဆွေးနွေးခြင်းကြားရှုရန် ဓာတ်ပုံကို နှိပ်ပါ
-## [Pre-lecture quiz](https://ff-quizzes.netlify.app/en/ml/)
+## [ကြိုတင်စာမေးပွဲ](https://ff-quizzes.netlify.app/en/ml/)
-## အကြိုလိုအပ်ချက်များနှင့် Setup
+## မတိုင်မီလိုအပ်ချက်များနှင့် တပ်ဆင်ခြင်း
-ဒီသင်ခန်းစာမှာ Python မှာ code တွေကို စမ်းသပ်မည်ဖြစ်သည်။ သင်သည် Jupyter Notebook code ကို သင်ခန်းစာမှ သင်၏ကွန်ပျူတာတွင် သို့မဟုတ် cloud တစ်ခုခုတွင် run လို့ရနိုင်ရမည်။
+ဤသင်ခန်းစာတွင် Python ကုဒ်အချို့ဖြင့် စမ်းသပ်လေ့လာမည်။ သင်သည် သင့်ကွန်ပျူတာတွင်သို့မဟုတ် ကောင်းလ်ၤ(Could) တစ်နေရာမှာ ဒီသင်ခန်းစာ၏ Jupyter Notebook ကုဒ်ကို ပတ်သတ်၍ ပြေးဆွဲနိုင်ပါသည်။
-[သင်ခန်းစာ notebook](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) ကို ဖွင့်ပြီး ဒီသင်ခန်းစာကို လိုက်လျောညီထွေဖြင့် တည်ဆောက်ပါ။
+သင်သည် [သင်ခန်းစာစာအုပ်](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) ကို ဖွင့်၍ သင်ခန်းစာကို လေ့လာနိုင်သည်။
-> **Note:** သင်သည် ဒီ code ကို cloud မှ ဖွင့်နေပါက၊ notebook code တွင် အသုံးပြုထားသော [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) ဖိုင်ကိုလည်း fetch လုပ်ရန်လိုအပ်သည်။ notebook နှင့် တူညီသော directory တွင် ထည့်ပါ။
+> **မှတ်ချက်။** သင်သည် ကောင်းလ်ၤမှ ကုဒ်ဖိုင်ဖွင့်နေသည်ဆိုလျှင် သင်သည် [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) ဖိုင်ကိုလည်း ယူဆောင်ရမည်ဖြစ်ပြီး ၎င်းသည် Notebook ကုဒ်တွင် အသုံးပြုသည်။ Notebook နဲ့တူညီသော ဖိုင်တည်နေရာတွင် ထည့်သွင်းထားပါ။
-## မိတ်ဆက်
+## မိတ်ဆက်ခြင်း
-ဒီသင်ခန်းစာမှာ **[Peter and the Wolf](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)** ၏ ကမ္ဘာကို ရုရှားတေးရေးဆရာ [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev) ၏ ဂီတပုံပြင်မှ အားပေးမှုဖြင့် ရှာဖွေမည်။ **Reinforcement Learning** ကို အသုံးပြုပြီး Peter ကို သူ့ပတ်ဝန်းကျင်ကို စူးစမ်းစေပြီး၊ အရသာရှိသောပန်းသီးများကို စုဆောင်းစေပြီး ဝံကို မတွေ့ရအောင်လုပ်မည်။
+ဤသင်ခန်းစာတွင် ကျွန်ုပ်တို့သည် ရုရှားဂီတရေးဆရာ [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev) ၏ဂီတဇာတ်လမ်းတစ်ပုဒ်ကို အတွေးပေး၍ **[Peter နှင့် Wolf](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)** ၏ကမ္ဘာကို ရှာဖွေမှာဖြစ်သည်။ ကျွန်ုပ်တို့ **ပြန်လည်မြှင့်တင်သင်ယူမှု** သုံးပြီး Peter ကို သူ့ပတ်ဝန်းကျင်ကို လေ့လာစေပြီး အပျော်စေသောပန်းသီးများ စုဆောင်းကာ ယုမ်သမားနှင့် တွေ့ဆုံခြင်းမှ ရှောင်ကြဉ်စေမည်။
-**Reinforcement Learning** (RL) သည် **agent** တစ်ခု၏ **environment** တစ်ခုတွင် အကောင်းဆုံးအပြုအမူကို သင်ယူရန် အတတ်ပညာဖြစ်သည်။ ဒီ environment တွင် agent တစ်ခုသည် **reward function** ဖြင့် သတ်မှတ်ထားသော **goal** တစ်ခုရှိရမည်။
+**ပြန်လည်မြှင့်တင်သင်ယူမှု** (RL) သည် စမ်းသပ်မှုများ ခန့်မှန်းပြုခြင်းဖြင့် အAgent ၏အကောင်းဆုံး အပြုအမူကို သင်ယူနိုင်စေသော သင်ယူနည်းပညာတစ်ခုဖြစ်သည်။ အAgent ၏ရည်မှန်းချက် သည် **ဆုလာဘ်လုပ်ဆောင်ချက်** နှင့် သတ်မှတ်ထားသည်။
-## Environment
+## ပတ်ဝန်းကျင်
-ရိုးရှင်းစွာပြောရမည်ဆိုပါက Peter ၏ ကမ္ဘာကို `width` x `height` အရွယ်ရှိသော စတုရန်း board အဖြစ် သတ်မှတ်ပါမည်၊ ဒီလိုပုံစံဖြစ်သည်။
+လွယ်ကူစွာ သတ်မှတ်ရအောင် Peter ၏ကမ္ဘာကို `အကျယ်` x `အမြင့်` အရွယ်အစား စတုရန်းဝင်းထားသော ဘားဒ်အဖြစ်ယူလိုက်ပါ။
-
+
-ဒီ board ရဲ့ cell တစ်ခုစီမှာ အောက်ပါအတိုင်းဖြစ်နိုင်သည်-
+ဤဘားဒ်၌ အစီအစဉ်တစ်ခုစီမှာ
-* **ground**, Peter နှင့် အခြားသော သတ္တဝါများ လမ်းလျှောက်နိုင်သောနေရာ။
-* **water**, လမ်းလျှောက်လို့မရသောနေရာ။
-* **tree** သို့မဟုတ် **grass**, အနားယူနိုင်သောနေရာ။
-* **apple**, Peter အတွက် အစားအသောက်အဖြစ် ရှာဖွေလိုသောနေရာ။
-* **wolf**, အန္တရာယ်ရှိပြီး ရှောင်ရှားသင့်သောနေရာ။
+* **မြေပြင်**, Peter နှင့် တခြားတိရစ္ဆာန်များလျှောက်နိုင်သောနေရာ။
+* **ရေ**, သင်မလျှောက်နိုင်သည့်နေရာ။
+* **သစ်ပင်** သို့မဟုတ် **ရွက်မြက်**, အနားယူနိုင်သောနေရာ။
+* **ပန်းသီး**, Peter ကို သူ့ကိုယ်သူ စားစရာရှာဖွေရေးအတွက် ဝမ်းသာစေသော အရာ။
+* **ယုမ်**, အန္တရာယ်ရှိပြီး ရှောင်ကြဉ်သင့်သည်။
-Python module တစ်ခုဖြစ်သော [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) တွင် ဒီ environment နှင့် အလုပ်လုပ်ရန် code ပါဝင်သည်။ ဒီ code သည် ကျွန်ုပ်တို့၏ concepts ကို နားလည်ရန်အရေးကြီးမဟုတ်သောကြောင့် module ကို import လုပ်ပြီး sample board ကို ဖန်တီးရန် အသုံးပြုမည် (code block 1):
+Python မော်ဂျူးလ်တစ်ခုဖြစ်သော [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) တွင် ဤပတ်ဝန်းကျင်နဲ့ပတ်သက်သော ကုဒ်များ ပါဝင်သည်။ ၎င်း ကုဒ်သည် သဘောတရားနားလည်ရန် မလိုအပ်သဖြင့် မော်ဂျူးလ်ကို ရှာဖွေပြီး နမူနာဘားဒ် ဖန်တီးရန် အသုံးပြုပါမည် (ကုဒ်ပိုင်း ၁)။
```python
from rlboard import *
@@ -52,63 +52,63 @@ m.randomize(seed=13)
m.plot()
```
-ဒီ code သည် အထက်ပါပုံနှင့် ဆင်တူသော environment ၏ ပုံကို print လုပ်သင့်သည်။
+ဤကုဒ်က ပတ်ဝန်းကျင်ဓာတ်ပုံကို အထက်ပါ သဘောတူညီမှုနှင့် တူညီစွာ ပုံနှိပ်ပြမည်။
-## Actions နှင့် Policy
+## လုပ်ဆောင်ချက်များနှင့် မူဝါဒ
-ဒီဥပမာမှာ Peter ၏ ရည်မှန်းချက်မှာ ဝံနှင့် အခြားသော အတားအဆီးများကို ရှောင်ရှားပြီး ပန်းသီးကို ရှာဖွေခြင်းဖြစ်သည်။ ဒီအတွက် သူသည် ပန်းသီးကို ရှာဖွေမရအောင် လမ်းလျှောက်နိုင်သည်။
+ဥပမာတွင် Peter ၏ ရည်မှန်းချက်မှာ ပန်းသီးကို ရှာဖွေရေးဖြစ်၊ ယုမ်နှင့် အခြားအတားအဆီးများရှောင်ကြဉ်ရန်ဖြစ်သည်။ ၎င်းအတွက် Peter သည် ပန်းသီးတစ်ခု တွေ့ရန်အထိ လမ်းလျှောက်ဝင်နိုင်သည်။
-ထို့ကြောင့်၊ တည်နေရာတစ်ခုစီတွင် သူသည် အောက်ပါ action များအနက် တစ်ခုကို ရွေးချယ်နိုင်သည်- up, down, left နှင့် right။
+ထို့ကြောင့် မည်သည့်အနေအထားတွင်မဆို တောင်ဘက်၊ လျှောက်ဘက်၊ ဘယ်နှင့် ညာဘက် တို့မှ လုပ်ဆောင်ချက်များကို ရွေးချယ်နိုင်သည်။
-action များကို dictionary အဖြစ် သတ်မှတ်ပြီး၊ coordinate changes နှင့် mapping လုပ်မည်။ ဥပမာအားဖြင့်, right (`R`) ကို `(1,0)` pair နှင့် ကိုက်ညီစေမည်။ (code block 2):
+ကုဒ်တွင် ၎င်းလုပ်ဆောင်ချက်များကို dictionary အဖြစ် သတ်မှတ်ကာ သက်ဆိုင်ရာ ဂဏန်းတစ်စုသို့ မျှဝေအပ်ပါမည်။ ဥပမာအားဖြင့် ညာဘက်သို့ ရွှေ့ခြင်း(`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()) }
```
-အကျဉ်းချုပ်အားဖြင့်၊ ဒီ scenario ၏ strategy နှင့် goal သည် အောက်ပါအတိုင်းဖြစ်သည်-
+နိဂုံးချုပ်အနေဖြင့်၊ ဒီအကြောင်းအရာ၏ မူဝါဒနှင့် ရည်ရွယ်ချက်မှာ အောက်ပါအတိုင်းဖြစ်သည်။
-- **Strategy**, agent (Peter) ၏ strategy ကို **policy** ဟုခေါ်သော function ဖြင့် သတ်မှတ်သည်။ Policy သည် တည်နေရာတစ်ခုစီတွင် action ကို ပြန်ပေးသည်။ ကျွန်ုပ်တို့၏ problem ၏ state သည် player ၏ လက်ရှိတည်နေရာအပါအဝင် board ကို ကိုယ်စားပြုသည်။
+- **မူဝါဒ** သည် ကျွန်ုပ်တို့၏အAgent (Peter) အတွက် သတ်မှတ်ထားသော **policy** အဓိပ္ပါယ်ရှိသည်။ မူဝါဒမှာ အခြေအနေတစ်ခုစီတွင် လုပ်ဆောင်ချက်ကို ပြန်လည်ပေးအပ်သော function ဖြစ်သည်။ ၎င်းတွင် ပြဿနာ၏ အခြေအနေသည် ဘားဒ်နှင့် လောလောဆယ်ကစားသမားအနေအထားဖြင့် ကိုယ်စားပြုသည်။
-- **Goal**, reinforcement learning ၏ ရည်မှန်းချက်မှာ problem ကို ထိရောက်စွာ ဖြေရှင်းနိုင်ရန် အကောင်းဆုံး policy ကို သင်ယူရန်ဖြစ်သည်။ သို့သော် baseline အနေဖြင့် **random walk** ဟုခေါ်သော ရိုးရှင်းသော policy ကို စဉ်းစားပါမည်။
+- **ရည်ရွယ်ချက်** သည် ပြန်လည်မြှင့်တင်သင်ယူမှု၏ နောက်ဆုံးရည်မှန်းချက်ဖြစ်ကာ ပြဿနာကို ထိရောက်စွာ ဖြေရှင်းနိုင်သော ကောင်းမွန်သော မူဝါဒတစ်ခု သင်ယူရန်ဖြစ်သည်။ သို့သော် အခြေခံအနေဖြင့် **random walk** မူဝါဒရိုးရိုးဆွဲကြည့်ရမည်။
## Random Walk
-အရင်ဆုံး random walk strategy ကို အသုံးပြု၍ ကျွန်ုပ်တို့၏ problem ကို ဖြေရှင်းပါမည်။ Random walk ဖြင့်၊ ကျွန်ုပ်တို့သည် ခွင့်ပြုထားသော actions များအနက်မှ နောက်တစ်ခုကို အလွတ်ရွေးချယ်ပြီး၊ ပန်းသီးကို ရောက်သည်အထိ ဆက်လုပ်မည် (code block 3)။
+ပထမဦးဆုံး random walk မူဝါဒဖြင့် ပြဿနာကို ဖြေရှင်းကြပါစို့။ random walk နှင့် အနာဂတ်လုပ်ဆောင်ချက်ကို ခွင့်ပြုသော လုပ်ဆောင်ချက်များထဲမှ သဘောတူညီမှုအတိုင်း ရွေးချယ်၍ ပန်းသီးကို ရောက်သည်အထိ လိုက်နာမည် (ကုဒ်ပိုင်း 3)။
-1. အောက်ပါ code ဖြင့် random walk ကို အကောင်အထည်ဖော်ပါ-
+1. အောက်ပါကုဒ်ဖြင့် random walk ကို အကောင်အထည်ဖော်ပါ။
```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
+ n = 0 # အဆင့်အရေအတွက်
+ # ပထမဆုံးနေရာသတ်မှတ်ပါ
if start_position:
m.human = start_position
else:
m.random_start()
while True:
if m.at() == Board.Cell.apple:
- return n # success!
+ return n # အောင်မြင်ပါပြီ!
if m.at() in [Board.Cell.wolf, Board.Cell.water]:
- return -1 # eaten by wolf or drowned
+ return -1 # ကျားကစားလိုက် သို့မဟုတ် ရေဦးပြုတ်သွားပြီ
while True:
a = actions[policy(m)]
new_pos = m.move_pos(m.human,a)
if m.is_valid(new_pos) and m.at(new_pos)!=Board.Cell.water:
- m.move(a) # do the actual move
+ m.move(a) # တကယ်တမ်း ရွှေ့ပြောင်းမှု လုပ်ဆောင်ပါ
break
n+=1
walk(m,random_policy)
```
- `walk` ကို ခေါ်ဆိုခြင်းသည် သက်ဆိုင်ရာ လမ်းကြောင်း၏ အရှည်ကို ပြန်ပေးသင့်ပြီး၊ run တစ်ခုစီတွင် ကွဲပြားနိုင်သည်။
+ `walk` ခေါ်သည့်အခါ တဆင့်လျှောက်လမ်းကြောင်း၏ အရှည် (run တစ်ခုနှင့် အခြားတစ်ခုကွဲပြားနိုင်သည်) ကို ပြန်လည်ပေးအပ်သည်။
-1. walk စမ်းသပ်မှုကို အကြိမ်ရေ (ဥပမာ 100) အများကြီး run လုပ်ပြီး၊ ရလဒ် statistics ကို print လုပ်ပါ (code block 4):
+1. လမ်းလျှောက် စမ်းသပ်မှုကို ၁၀၀ ကြိမ် ပြေးပြီး ရလဒ်စာရင်း ပုံနှိပ်ပါ(ကုဒ်ပိုင်း 4)။
```python
def print_statistics(policy):
@@ -125,17 +125,17 @@ action_idx = { a : i for i,a in enumerate(actions.keys()) }
print_statistics(random_policy)
```
- လမ်းကြောင်း၏ အရှည်ပျမ်းမျှသည် 30-40 ခြေလှမ်းအနီးအနားရှိသည်ကို သတိပြုပါ၊ ပန်းသီးအနီးဆုံးအကွာအဝေးပျမ်းမျှသည် 5-6 ခြေလှမ်းသာရှိသည်။
+ လမ်းကြောင်း၏ ပျမ်းမျှအရှည်မှာ ၃၀-၄၀ ခြေလှမ်းအတွင်းဖြစ်ကာ ပန်းသီးအဝေးကြည့်ရလို့၎င်း သာလွန်ရှည်လျားသည်။
- Random walk အတွင်း Peter ၏ လှုပ်ရှားမှုကိုလည်း ကြည့်နိုင်သည်-
+ Peter ၏ random walk အတွင်း လမ်းလျှောက်မှု အနေအထားကိုလည်း ကြည့်ရှုနိုင်သည်။

-## Reward Function
+## ဆုလာဘ်လုပ်ဆောင်ချက်
-Policy ကို ပိုပြီး ဉာဏ်ရည်ရှိအောင်လုပ်ရန်၊ ဘယ် moves တွေက "ပိုကောင်း" သောအရာများဖြစ်သည်ကို နားလည်ရန်လိုအပ်သည်။ ဒီအတွက် ကျွန်ုပ်တို့၏ ရည်မှန်းချက်ကို သတ်မှတ်ရန်လိုအပ်သည်။
+မူဝါဒကို ပိုမို ဉာဏ်မြင့်အောင် ပြင်ဆင်ရန် ရှေ့ဆက်လျှောက်လှမ်းမှုများထက် "ပိုကောင်း" ဟု သတ်မှတ်နိုင်သော လှုပ်ရှားမှုများကို နားလည်ရန် လိုအပ်သည်။
-ရည်မှန်းချက်ကို **reward function** ဖြင့် သတ်မှတ်နိုင်ပြီး၊ state တစ်ခုစီအတွက် score value တစ်ခုကို ပြန်ပေးမည်။ ကိန်းဂဏန်းမြင့်မည်လျှင် reward function ပိုကောင်းသည်။ (code block 5)
+ရည်မှန်းချက်သည် **ဆုလာဘ်လုပ်ဆောင်ချက်** အနေဖြင့် သတ်မှတ်နိုင်ပြီး အခြေအနေလတ်ဖြစ်စဉ်တိုင်းတွင် နံပါတ်တန်ဖိုးတစ်ခုကို ပြန်ထုတ်ပေးသည်။ နံပါတ်မြင့်မားမှုသာ ဆုလာဘ်တန်ဖိုးကောင်းချက် ဖြစ်သည်။ (ကုဒ်ပိုင်း 5)
```python
move_reward = -0.1
@@ -154,41 +154,115 @@ def reward(m,pos=None):
return move_reward
```
-Reward functions ၏ စိတ်ဝင်စားဖွယ်ကောင်းသောအချက်မှာ အများဆုံးအခြေအနေတွင် *ဂိမ်းအဆုံးတွင်သာ အရေးပါသော reward ရရှိသည်* ဖြစ်သည်။ ဒါကဆိုရင် ကျွန်ုပ်တို့၏ algorithm သည် positive reward ရရှိသောအခြေအနေများကို "မှတ်မိ" ရမည်။ ထို့နောက်၊ အကောင်းဆုံးရလဒ်ရရှိရန် "ကောင်းသော" လှုပ်ရှားမှုများ၏ အရေးပါမှုကို တိုးမြှင့်ရမည်။ ထို့နောက်၊ အဆိုးဆုံးရလဒ်ရရှိသော moves များကိုလည်း လျော့နည်းစေရမည်။
+ဆုလာဘ်လုပ်ဆောင်ချက်အကြောင်း စိတ်ဝင်စားဖွယ်ကောင်းတာက များသောအားဖြင့် *ဂိမ်းကုန်ဆုံးချိန်တွင်သာ ဆုလာဘ်တန်ဖိုးအရေးကြီးကြောင်း* ဖြစ်သည်။ ထို့ကြောင့် ကျွန်ုပ်တို့၏ အစီအစဉ်သည် ကောင်းမွန်သော ခြေလှမ်းများကို မှတ်မိကာ အဆုံးတွင် အကောင်းဆုံးဆုလာဘ် ရရှိစေဖို့ အလေးထားရမည်ဖြစ်သည်။ ဆိုးသောရလဒ်သို့ ခြေလှမ်းတွေကို ကန့်သတ်ပေးရမည်။
-## Q-Learning
+## Q-သင်ယူခြင်း
-ဒီမှာ ဆွေးနွေးမည့် algorithm ကို **Q-Learning** ဟုခေါ်သည်။ ဒီ algorithm တွင် policy ကို **Q-Table** ဟုခေါ်သော function (သို့မဟုတ် data structure) ဖြင့် သတ်မှတ်သည်။ Q-Table သည် တည်နေရာတစ်ခုစီတွင် action များ၏ "ကောင်းမှု" ကို မှတ်တမ်းတင်သည်။
+ကျူးလွန်မည့် အစီအစဉ်ကို **Q-သင်ယူခြင်း** ဟု ခေါ်သည်။ ၎င်းတွင် မူဝါဒကို **Q-ဇယား** ဟု ခေါ်သော function (သို့) ဒေတာဖွဲ့စည်းမှုမှ သတ်မှတ်သည်။ ၎င်းမှာ တစ်ခုချင်း လုပ်ဆောင်ချက်အား "ကောင်းမှု" အဆင့်တိုင်း ပြန်မှတ်တမ်းတင်သည်။
-Q-Table ဟုခေါ်ရသည်မှာ table သို့မဟုတ် multi-dimensional array အဖြစ် ကိုယ်စားပြုရန် အဆင်ပြေသောကြောင့်ဖြစ်သည်။ ကျွန်ုပ်တို့၏ board တွင် `width` x `height` အတိုင်းအတာရှိသည့်အတွက် Q-Table ကို numpy array ဖြင့် `width` x `height` x `len(actions)` အရွယ်အစားဖြင့် ကိုယ်စားပြုနိုင်သည်။ (code block 6)
+Q-ဇယားဟု ခေါ်ရသည့် အကြောင်းမှာ အားလုံးထိုင်ရာဇယားသို့မဟုတ် မျိုးစုံအတိုင်းအတာအဆင့် ရှိ multi-dimensional array အဖြစ် ကိုယ်စားပြုသည့်အတွက်ဖြစ်သည်။ ကျွန်ုပ်တို့ဘားဒ်မှာ `အကျယ်` x `အမြင့်` သတ်မှတ်ချက်ရှိသည့်အတွက် numpy array အဖြစ် သတ်မှတ်၍ `အကျယ်` x `အမြင့်` x `လုပ်ဆောင်ချက်အရေအတွက်` ကိုရှိစေသည်။ (ကုဒ်ပိုင်း 6)
```python
Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions)
```
-Q-Table ၏ value အားလုံးကို တူညီသောတန်ဖိုးဖြင့် initialize လုပ်သည်ကို သတိပြုပါ၊ ကျွန်ုပ်တို့၏အခြေအနေတွင် - 0.25 ဖြစ်သည်။ ဒါက "random walk" policy ကို ကိုယ်စားပြုသည်၊ အကြောင်းမူကား တစ်ခုစီတွင် moves အားလုံးသည် တူညီသောအကောင်းမှုရှိသည်။ Q-Table ကို board တွင် visualize လုပ်ရန် `plot` function ကို pass လုပ်နိုင်သည်- `m.plot(Q)`။
+Q-ဇယားမှ တန်ဖိုးအားလုံးကို 0.25 ဟူ၍ စတင်သတ်မှတ်ထားခြင်းမှာ "random walk" မူဝါဒနှင့် ကိုက်ညီပြီးထားသော လက်တွေ့လုပ်ဆောင်ချက်များအားလုံးမှာ မတူညီမှုမရှိခြင်းကို ဆိုလိုသည်။ ဤ Q-ဇယားကို `plot` function သို့ ဖြတ်သွားကာ ဘားဒ်ပေါ်တွင် မြင်ကွင်းပြရန် အသုံးပြုနိုင်သည်၊ `m.plot(Q)`။
-
+
-Cell တစ်ခုစီ၏ အလယ်တွင် "arrow" တစ်ခုရှိပြီး၊ လှုပ်ရှားမှု၏ အကြိုက်ဆုံး direction ကို ဖော်ပြသည်။ Direction အားလုံးတူညီသောကြောင့် dot တစ်ခုကို ဖော်ပြသည်။
+အစိတ်အပိုင်းများ အတွင်းနောက်ခံတွင် ကိုယ်တိုင်လှည့်ပတ်မှု ဦးတည်ရာပြတင်းများရှိသည်။ အ directional အားလုံးသည်မျှတခြင်းကြောင့် dot တစ်ခု မြင်ရသည်။
-အခု simulation ကို run လုပ်ပြီး၊ environment ကို စူးစမ်းပြီး၊ Q-Table values များ၏ distribution ကို ပိုကောင်းစေပြီး၊ ပန်းသီးကို ရှာဖွေရာတွင် ပိုမြန်စေမည်။
+ယခု simulation ကို စတင်ပြေး၍ ပတ်ဝန်းကျင်ကို ရှာဖွေပြီး Q-ဇယား၏ တန်ဖိုးများကို ပိုကောင်းအောင် သင်ယူခြင်းဖြင့် ပန်းသီးကို ရောက်ရှိရန် လမ်းကြောင်းကို အံ့သြဖွယ်မြန်ဆန်စေမည်။
-## Q-Learning ၏ အဓိကအချက်: Bellman Equation
+## Q-သင်ယူမှု၏ အဓိပ္ပါယ် - Bellman ဂဏန်းနိတိ
-လှုပ်ရှားမှုကို စတင်ပြီးနောက်၊ action တစ်ခုစီတွင် သက်ဆိုင်ရာ reward ရရှိမည်၊ ဉပမာ immediate reward အမြင့်ဆုံးဖြင့် နောက်တစ်ခုကို ရွေးချယ်နိုင်သည်။ သို့သော်၊ အများဆုံး states တွင် move သည် ပန်းသီးကို ရောက်ရန် ရည်မှန်းချက်ကို မရောက်စေပါ၊ ထို့ကြောင့် ဘယ် direction က ပိုကောင်းသည်ကို ချက်ချင်းဆုံးဖြတ်လို့မရပါ။
+လှည့်ပတ်ခြင်းစတင်သည်နှင့် လုပ်ဆောင်ချက်တိုင်းတွင် ဆုလာဘ်ရမည့် အခွင့်အရေးရှိသည်။ သိုသော် များသောအခြေအနေများတွင် လှည့်လည်းသည့် လမ်းကြောင်းသည် ပန်းသီးကို ရောက်ရှိစေမည်မဟုတ်သဖြင့် မည်သည့် ဦးတည်ရာကောင်းကြောင်း ချက်ချင်းဆုံးဖြတ်၍ မရနိုင်။
-> သတိပြုပါ၊ ချက်ချင်းရလဒ်သည် အရေးမကြီးပါ၊ အရေးကြီးသည် simulation ၏ အဆုံးတွင် ရရှိမည့် နောက်ဆုံးရလဒ်ဖြစ်သည်။
+> အမြန်ရလဒ်မဟုတ်ပဲ အဆုံးတွင်ရမည့် နောက်ဆုံးရလဒ်သာ အရေးကြီးသည်။
-ဒီ delayed reward ကို ထည့်သွင်းစဉ်းစားရန် **[dynamic programming](https://en.wikipedia.org/wiki/Dynamic_programming)** ၏ မူကွဲများကို အသုံးပြုရမည်၊ အဲဒါက ကျွန်ုပ်တို့၏ပြဿနာကို recursive အနေနှင့် စဉ်းစားရန် ခွင့်ပြုသည်။
+ဤနောက်ကျသော ဆုလာဘ်အတွက် **[ဒိုင်နမစ်ပရိုဂရမ်မင်း](https://en.wikipedia.org/wiki/Dynamic_programming)** ၏ စံနှုန်းများကို အသုံးပြုရန် လိုအပ်သည်။ ၎င်းတွင် ပြဿနာကို recursive အနေဖြင့် စဉ်းစားနိုင်သည်။
-ယခု state *s* တွင်ရှိပြီး၊ နောက် state *s'* သို့ ရွှေ့လိုသည်ဟု ယူဆပါ။ ဒီလိုလုပ်ခြင်းအားဖြင့် immediate reward *r(s,a)* ကို reward function ဖြင့် သတ်မှတ်ပြီး၊ အနာဂတ် reward တစ်ခုရရှိမည်။ ကျွန်ုပ်တို့၏ Q-Table သည် action တစ်ခုစီ၏ "attractiveness" ကို မှန်ကန်စွာ ဖော်ပြသည်ဟု ယူဆပါက၊ state *s'* တွင် *Q(s',a')* ၏ maximum value ကို ကိုက်ညီသော action *a'* ကို ရွေးချယ်မည်။ ထို့ကြောင့် state *s* တွင် ရရှိနိုင်သော အကောင်းဆုံး အနာဂတ် reward ကို `max` *Q(s',a')* (state *s'* တွင် action *a'* များအားလုံးအပေါ်မှာ maximum ကိုတွက်ချက်သည်) ဖြင့် သတ်မှတ်နိုင်သည်။
+ယခုအခါ ကျွန်ုပ်တို့သည် အခြေအနေ *s* တွင်ရှိပြီး နောက်ထပ်အခြေအနေ *s'* သို့ လှည့်သွားလိုပါက လက်ရှိ ဆုလာဘ် *r(s,a)* ကို ဆုလာဘ်လုပ်ဆောင်ချက်မှ ရရှိမည်ဖြစ်ပြီး နောက်အနာဂတ်ဆုလာဘ်ကိုလည်း ရရှိမည်။ ကျွန်ုပ်တို့ Q-ဇယားသည် လုပ်ဆောင်ချက်တိုင်း၏ "ကြည့်ရလှသော" တန်ဖိုးကို မှန်ကန်စွာ ကိုယ်စားပြုခဲ့သည်ဆိုရင် အခြေအနေ *s'* တွင် အကောင်းဆုံးတန်ဖိုးရှိသော လုပ်ဆောင်ချက် *a'* ကို ရွေးချယ်နိုင်မည်ဖြစ်သည်။ ထို့ကြောင့် အခြေအနေ *s* တွင် ရနိုင်သော အကောင်းဆုံး နောက်အနာဂတ်ဆုလာဘ်မှာ `max`a'*Q(s',a')* ဖြစ်မည် (ဖြစ်နိုင်သမျှ လုပ်ဆောင်ချက်အားလုံးပေါ်တွင် `max` ရရှိသည်)။
-ဒီအချက်သည် **Bellman formula** ကို ပေးသည်၊ action *a* ကို ရွေးချယ်သော state *s* တွင် Q-Table ၏ value ကိုတွက်ချက်ရန်:
+၎င်းသည် အခြေအနေ *s* တွင် လုပ်ဆောင်ချက် *a* အတွက် Q-ဇယားတန်ဖိုးတွက်ချက်ရာတွင် **Bellman ဂဏန်းနိတိ** ကို ပေးသည်။
-## မူဝါဒကို စစ်ဆေးခြင်း
+
-Q-Table သည် အခြေအနေတစ်ခုစီတွင် လုပ်ဆောင်မှုတစ်ခုစီ၏ "ဆွဲဆောင်မှု" ကို ဖော်ပြထားသောကြောင့် ကျွန်ုပ်တို့၏ကမ္ဘာတွင် ထိရောက်သော လမ်းကြောင်းရှာဖွေမှုကို သတ်မှတ်ရန် အလွယ်တကူ အသုံးပြုနိုင်သည်။ အလွယ်တကူဆုံးသောအခြေအနေတွင် Q-Table အတန်ဖိုးအမြင့်ဆုံးနှင့် ကိုက်ညီသော လုပ်ဆောင်မှုကို ရွေးချယ်နိုင်သည်။ (code block 9)
+ဒီမှာ γ ဆိုသည်မှာ **discount factor** ဖြစ်ပြီး လက်ရှိ ဆုလာဘ်ကို နောက်အနာဂတ်ဆုလာဘ်ထက် ဘယ်လောက်လောက် အရေးပေးရမည်ကို သတ်မှတ်ပေးသည်။
+
+## သင်ယူမှု 알고리즘
+
+အထက်ပါ ဂဏန်းနိတိအရ ကျွန်ုပ်တို့ သင်ယူမှု 알고리즘၏ စPseudoကုဒ်ကို ရေးနိုင်သည်။
+
+* Q-ဇယား Q ကို states နှင့် လုပ်ဆောင်ချက်အားလုံးအတွက် တူညီသော နံပါတ်ဖြင့် စတင်သတ်မှတ်ပါ။
+* သင်ယူနှုန်း α ← ၁ သတ်မှတ်ပါ။
+* simulation တစ်လျှောက် များစွာ လုပ်ဆောင်ပါ။
+ 1. ကျပ်တည်းသောနေရာမှ စတင်ပါ။
+ 1. ထပ်မံလုပ်ဆောင်ပါ
+ 1. အခြေအနေ *s* တွင် လုပ်ဆောင်ချက် *a* ကို ရွေးပါ။
+ 2. လုပ်ဆောင်ချက်ကို အခြေအနေအသစ် *s'* သို့ ရွှေ့ပါ။
+ 3. ဂိမ်းဆုံးခြင်းကိစ္စဖြစ်ပွားသော်လည်း ဒေါသဆုလာဘ်လွန်စွာနည်းပါက simulation ထွက်ပါ။
+ 4. အခြေအနေအသစ်တွင် ဆုလာဘ် *r* ကိုတွက်ချက်ပါ။
+ 5. Bellman ဂဏန်းနိတိ အတိုင်း Q-Function ကို အပ်ဒိတ်လုပ်ပါ: *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ maxa'Q(s',a'))*
+ 6. *s* ← *s'*
+ 7. စုစုပေါင်း ဆုလာဘ်ကို အပ်ဒိတ်လုပ်ပြီး α ကို လျော့ချပါ။
+
+## Exploit နှင့် explore
+
+အထက်ပါ 알고리즘တွင် 2.1 အဆင့်တွင် လုပ်ဆောင်ချက် ရွေးချယ်ပုံမသတ်မှတ်ထား။ အကယ်၍ လုပ်ဆောင်ချက်ကို ကျပ်တည်းစွာ ရွေးပါက ပတ်ဝန်းကျင်ကို မျှတစွာ စူးစမ်းပြီး မကြာခဏ သေဆုံးမှုများဖြစ်ပွားနိုင်သည်။ အခြားနည်းလမ်းမှာ ရှိပြီးသား Q-ဇယားတန်ဖိုးကို အသုံးချ၍ အခက်အခဲအတိုင်း အကောင်းဆုံး လုပ်ဆောင်ချက်ကို ရွေးချယ်ခြင်းဖြစ်သည်။ ၎င်းသည် အခြားအခြေအနေများကို စူးစမ်းရန် ကန့်သတ်သွားသည်၊ နှင့် အကောင်းဆုံးဖြေရှင်းချက် မရနိုင်နိုင်။
+
+ထို့ကြောင့် စူးစမ်းမှု (exploration) နှင့် အသုံးချမှု (exploitation) ၏ မျှတမှုကို ရှာဖွေရန် အကောင်းဆုံးဖြစ်သည်။ ၎င်းကို Q-ဇယားတန်ဖိုးအလိုက် အလားအလာနှင့် လုပ်ဆောင်ချက်ရွေးချယ်ခြင်းဖြင့် ပြုလုပ်နိုင်သည်။ ပထမအခါတွင် Q-ဇယားတန်ဖိုးအားလုံး တူညီလျှင် နောက်ဆုံးတွင် မျှတသော ရွေးချယ်မှုဖြစ်သည်။ လေ့လာပြီးတိုင်း အကောင်းဆုံးလမ်းကြောင်းကို လိုက်နာရန်နှင့် အAgent သည် တခါတစ်လေ မသက်ဆိုင်သောလမ်းကိုလည်း သွားနိုင်စေရန် ဖြစ်သည်။
+
+## Python အကောင်အထည်ဖော်မှု
+
+အခုတော့ သင်ယူမှု 알고리즘 ကို အကောင်အထည်ဖော်ရန် အသင့်ဖြစ်သည်။ ၎င်းတို့ဖြစ်ရန် Q-ဇယားအတွင်း ကန့်သတ်မရှိသော နံပါတ်များကို လုပ်ဆောင်ချက်နှင့် အတူ လုပ်ဆောင်ချက် Probability များသို့ ပြောင်းလဲရန် လုပ်ဆောင်ချက်တစ်ခု လိုအပ်မည်။
+
+1. `probs()` function ကို ဖန်တီးပါ။
+
+ ```python
+ def probs(v,eps=1e-4):
+ v = v-v.min()+eps
+ v = v/v.sum()
+ return v
+ ```
+
+ အစပိုင်းတွင် vector ၏ သိပ်သည်းမှု ညီထွေမှုအသုံးများအတွက် division by 0 ဖြစ်ခြင်းမှ ကာကွယ်ရန် `eps` တန်ဖိုးနည်းနည်း ပေါင်းထည့်ထားသည်။
+
+၅၀၀၀ ကြိမ် စမ်းသပ်မှု (epoch) ဖြင့် သင်ယူမှု 알고리즘 ကို ပြေးဆွဲပါ (ကုဒ်ပိုင်း 8)။
+```python
+ for epoch in range(5000):
+
+ # အစပိုင်းအမှတ်ရွေးပါ
+ m.random_start()
+
+ # ခရီးစရောက်ရန် စတင်ပါ
+ n=0
+ cum_reward = 0
+ while True:
+ x,y = m.human
+ v = probs(Q[x,y])
+ a = random.choices(list(actions),weights=v)[0]
+ dpos = actions[a]
+ m.move(dpos,check_correctness=False) # ကစားသူအား ဘုတ်ပေါ်အပြင်သို့ ရွေ့နိုင်ခွင့်ပြုသည်၊ ၎င်းသည် အပိုင်းဆုံးမသည်ကို ဖြစ်စေသည်
+ r = reward(m)
+ cum_reward += r
+ if r==end_reward or cum_reward < -1000:
+ lpath.append(n)
+ break
+ alpha = np.exp(-n / 10e5)
+ gamma = 0.5
+ ai = action_idx[a]
+ Q[x,y,ai] = (1 - alpha) * Q[x,y,ai] + alpha * (r + gamma * Q[x+dpos[0], y+dpos[1]].max())
+ n+=1
+```
+
+알고리즘 ဖြတ်ပြီးနောက် Q-ဇယားမှာ လုပ်ဆောင်ချက်များနှင့် ဆွဲငင်မှုအဆင့်ကို သတ်မှတ်ထားသည့် တန်ဖိုးများဖြင့် update လုပ်ထားသင့်သည်။ Q-ဇယားကို မျက်နှာပြင်ပေါ်တွင် လမ်းညွှန်အတိုင်း တည်နေရာစနစ်ကို ပြရန် ကြိုးစားနိုင်သည်။ လွယ်ကူအောင် သုံးသော ဒီဇိုင်းတွင် arrow မဟုတ်ဘဲ circle သေးသေး ချည်းရိုက်သည်။
+
+
+
+## မူဝါဒစစ်ဆေးခြင်း
+
+Q-ဇယားသည် အခြေအနေနှင့် လုပ်ဆောင်ချက်စုံ၏ ဆွဲငင်မှုကို စာရင်းပြုစုထားသဖြင့် ပိုမိုထိရောက်သော လမ်းညွှန်မှု ရှာဖွေရန် အလွယ်တကူ အသုံးပြုနိုင်သည်။ လွယ်ကူဆုံးအမှုအခြေအနေတွင် Q-ဇယားသည် တန်ဖိုးသည် အမြင့်ဆုံးဖြစ်သည့် လုပ်ဆောင်ချက်ကို ရွေးချယ်နိုင်သည်။ (ကုဒ်ပိုင်း 9)
```python
def qpolicy_strict(m):
@@ -200,17 +274,18 @@ def qpolicy_strict(m):
walk(m,qpolicy_strict)
```
-> အထက်ပါ code ကို အကြိမ်ကြိမ် စမ်းကြည့်ပါက တစ်ခါတစ်ရံ "hang" ဖြစ်ပြီး notebook တွင် STOP ခလုတ်ကို နှိပ်၍ ရပ်တန့်ရန်လိုအပ်သည်ကို သတိထားမိနိုင်သည်။ ၎င်းသည် အခြေအနေနှစ်ခုသည် အကောင်းဆုံး Q-Value အရ တစ်ခုနှင့်တစ်ခုကို "ညွှန်ပြ" သည့်အခြေအနေများရှိနိုင်သောကြောင့် ဖြစ်ပြီး agent သည် အခြေအနေများအကြား အဆုံးမရှိလှုပ်ရှားနေမိသည်။
-## 🚀စိန်ခေါ်မှု
+> အထက်ပါကုဒ်ကို အကြိမ်ကြိမ် စမ်းသပ်ကြည့်မယ်ဆိုရင် တစ်ခါတစ်ရံမှာ "ထောက်လှမ်းနေတယ်" လို့ ခံစားရနိုင်ပြီး၊ notebook ထဲက STOP ခလုတ်ကို နှိပ်ဖို့ လိုအပ်ပါတယ်။ ဒီဟာက အ optimal Q-Value အရ နှစ်ခု states က မျှဝေ 'ညှိနှိုင်း' လုပ်နေတဲ့ အခြေအနေတွေ ဖြစ်နိုင်တာကြောင့် ဖြစ်ပါတယ်၊ ဒီလိုဖြစ်ရင် agent တွေဟာ ထို states တွေကြား ကိုယ်တိုင်ကာလအတိုင်း လှည့်လည်နေတတ်ပါတယ်။
+
+## 🚀Challenge
-> **Task 1:** `walk` function ကို ပြင်ဆင်ပြီး လမ်းကြောင်း၏ အရှည်ကို အတိအကျ အဆင့်အတန်း (ဥပမာ 100) ဖြင့် ကန့်သတ်ပါ၊ အထက်ပါ code သည် အချိန်အခါမရွေး ဤတန်ဖိုးကို ပြန်ပေးသည်ကို ကြည့်ပါ။
+> **Task 1:** `walk` function ကို ပြင်ဆင်ပြီး လမ်းကြောင်း အရှည်အတွက် အများဆုံး အဆင့်နောက်ဆုံးတက်ထားပါ (ဥပမာ- 100 အဆင့်)၊ ထို့နောက် အထက်ဖေါ်ပြသောကုဒ်က အချိန်အားလုံး အဲဒီတန်ဖိုးကို ပြန်ခေါ်ပေးတာကို ကြည့်ပါ။
-> **Task 2:** `walk` function ကို ပြင်ဆင်ပြီး ယခင်က ရောက်ရှိခဲ့သောနေရာများကို ပြန်မသွားအောင်လုပ်ပါ။ ၎င်းသည် `walk` ကို loop ဖြစ်ခြင်းမှ ကာကွယ်ပေးနိုင်သော်လည်း agent သည် ထွက်မရနိုင်သောနေရာတွင် "ပိတ်မိ" ဖြစ်နိုင်သည်။
+> **Task 2:** `walk` function ကို ပြင်ဆင်ပြီး ယခင်အချိန်များတွင် သွားခဲ့သော နေရာများကို နောက်တစ်ခါ မသွားစေရန် ပြင်ဆင်ပါ။ ဒါကြောင့် `walk` function မှာ ဇယားပတ်မှု မဖြစ်ပေါ်ပါဘူး၊ သို့သော် agent သည် ထွက်ပြေးခက်ခဲသော နေရာတစ်ခုတွင် ပိတ်မိနိုင်သည်။
-## လမ်းကြောင်းရှာဖွေမှု
+## Navigation
-လမ်းကြောင်းရှာဖွေမှု မူဝါဒအကောင်းဆုံးသည် ကျွန်ုပ်တို့ သင်ကြားမှုအတွင်း အသုံးပြုခဲ့သော မူဝါဒဖြစ်ပြီး exploitation နှင့် exploration ကို ပေါင်းစပ်ထားသည်။ ဤမူဝါဒတွင် Q-Table တွင်ရှိသောတန်ဖိုးများနှင့် အချိုးကျသော probability ဖြင့် လုပ်ဆောင်မှုတစ်ခုစီကို ရွေးချယ်မည်ဖြစ်သည်။ ဤနည်းလမ်းသည် agent ကို ရှာဖွေပြီးသားနေရာသို့ ပြန်သွားစေမည့် အခွင့်အရေးရှိသော်လည်း အောက်ပါ code မှာ မြင်နိုင်သည့်အတိုင်း ရှိသည့်နေရာသို့ ရောက်ရန် အလွန်တိုသော လမ်းကြောင်းကို ရလဒ်ပေးသည်။ (သတိရပါ - `print_statistics` သည် simulation ကို 100 ကြိမ် ပြုလုပ်သည်): (code block 10)
+ပိုမိုကောင်းမွန်သော သယ်ယူပို့ဆောင်ရေးမူဝါဒမှာ သင်ကြားမှုအတွင်းအသုံးပြုခဲ့သည့် policy ဖြစ်ပြီး exploitation နဲ့ exploration များကို ပေါင်းစပ်ထားသည်။ ဒီမူဝါဒမှာ Q-Table မှတန်ဖိုးများကို အခြေခံပြီး အချိုးကျသော probability ဖြင့် action တစ်ခုချင်း ရွေးချယ်မည်။ ဒီနည်းလမ်းက agent သည် ရှေးရှုထားပြီးသော တည်နေရာကို ပြန်လည်သွားလာနိုင်သော်လည်း အောက်ပါကုဒ်မှ ကြည့်မယ်ဆိုရင် ပင်မ ရည်ရွယ်ရာနေရာထံ ဆန္ဒအတိုင်း အလျင်အမြန် လမ်းကြောင်းတိုကို ရှာဖွေတယ် (သတိပေးရန် `print_statistics` က simulation ကို 100 ဆ ပြေးဆွဲသည်):
```python
def qpolicy(m):
@@ -222,28 +297,32 @@ def qpolicy(m):
print_statistics(qpolicy)
```
-ဤ code ကို run ပြီးပါက အရင်ကထက် average path length အလွန်တိုသော 3-6 အတွင်း ရရှိသင့်သည်။
+ဒီကုဒ်ကို ပြေးပြီးပြီဆိုရင် ဖော်ပြထားသည့်အတိုင်း ၃ မှ ၆ အတွင်း အလယ်အလတ် လမ်းကြောင်း တလျှောက် အတိုင်းအတာကို မျှော်မှန်းရမယ်။
+
+## သင်ယူမှုဖြတ်သန်းမှု စူးစမ်းလေ့လာခြင်း
-## သင်ယူမှုလုပ်ငန်းစဉ်ကို စုံစမ်းခြင်း
+ကြော်ငြာထားသလို သင်ယူမှုဖြတ်သန်းမှုသည် problem space ၏ ဖွဲ့စည်းပုံအပေါ် ရရှိသော အသိပညာ စူးစမ်းခြင်းနှင့် စုဆောင်းမှုတို့၏ ထိန်းညှိမှုဖြစ်သည်။ သင်ယူမှုရလဒ်များမှာ (agent ကို ရည်ရွယ်ရာနေရာထိ လမ်းကြောင်းတိုရှာနိုင်စွမ်းမြှင့်တင်မှု) တိုးတက်လာသည်ကို မြင်တွေ့ပြီးပြီ၊ သို့သော် သင်ယူမှုဖြတ်သန်းမှုကာလအတွင်း လမ်းကြောင်းအလယ်အလတ် တာဝန်ခံမှု ကို စူးစမ်းလေ့လာတာကပါ စိတ်ဝင်စားဖွယ်ကောင်းသည်။
-ကျွန်ုပ်တို့ ပြောခဲ့သည့်အတိုင်း သင်ယူမှုလုပ်ငန်းစဉ်သည် problem space ၏ ဖွဲ့စည်းမှုအပေါ် ရရှိထားသော အသိပညာကို ရှာဖွေခြင်းနှင့် အသုံးချခြင်းအကြား တစ်ခုတည်းသော လိုက်လျောမှုဖြစ်သည်။ သင်ယူမှုရလဒ်များ (agent ကို ရည်မှန်းချက်သို့ ရောက်ရန် အတိုသော လမ်းကြောင်းကို ရှာဖွေနိုင်စွမ်း) ကောင်းမွန်လာသည်ကို မြင်ရသော်လည်း သင်ယူမှုလုပ်ငန်းစဉ်အတွင်း average path length ၏ အပြောင်းအလဲကို ကြည့်ရှုခြင်းလည်း စိတ်ဝင်စားဖွယ်ကောင်းသည်။
+
-## သင်ယူမှုများကို အကျဉ်းချုပ်နိုင်သည်။
+သင်ယူမှုကို အောက်ပါအတိုင်း အနှစ်ချုပ်နိုင်သည်-
-- **Average path length တိုးလာသည်**။ အစပိုင်းတွင် average path length တိုးလာသည်ကို မြင်ရသည်။ ၎င်းသည် ပတ်ဝန်းကျင်အကြောင်း မသိသေးသောအခါတွင် အဆိုးဆုံး state များ (ရေ၊ ဝက်ဝံ) တွင် ပိတ်မိနိုင်သောကြောင့် ဖြစ်နိုင်သည်။ ပတ်ဝန်းကျင်အကြောင်းပိုမိုသိလာပြီး ဤအသိပညာကို အသုံးပြု၍ ပတ်ဝန်းကျင်ကို ရှာဖွေနိုင်သော်လည်း ပန်းသီးများရှိရာကို မသိသေးသောကြောင့် ဖြစ်နိုင်သည်။
+- **လမ်းကြောင်း အလယ်အလတ် တိုးပွားတယ်**။ ဒီမှာ မြင်တွေ့ရတာက စတင်အချိန်မှာ လမ်းကြောင်း အလယ်အလတ် တိုးပွားတယ်ဆိုတာပါ။ ဒါက စတင်အချိန်မှာ ပတ်ဝန်းကျင်အကြောင်း မသိသောကြောင့် မကောင်းတဲ့ states (ရေ သို့မဟုတ် ကျွံ) တွင် ပိတ်မိနိုင်မှုကြောင့်ဖြစ်ပါတယ်။ ပိုမိုသိလာပြီး အသိပညာအသုံးချတယ်ဆိုရင် ပတ်ဝန်းကျင်ကို ပိုပြီး စူးစမ်းနိုင်ရင်လည်း ပန်းသီးများ ရှိနေရာကို မကောင်းစွာ သိရှိနိုင်ကြောင်းပါ။
-- **Path length လျော့ကျလာသည်**။ သင်ယူမှုများလုံလောက်စွာ ရရှိလာသည့်အခါ agent အတွက် ရည်မှန်းချက်ကို ရောက်ရန် ပိုမိုလွယ်ကူလာပြီး path length လျော့ကျလာသည်။ သို့သော်လည်း agent သည် အကောင်းဆုံးလမ်းကြောင်းမှ ချော်၍ အခြားရွေးချယ်မှုများကို ရှာဖွေသည့်အခါ path length သည် အကောင်းဆုံးထက် ပိုမိုရှည်လျားလာနိုင်သည်။
+- **သင်ယူသည့်အတိုင်း လမ်းကြောင်း လျော့နည်းလာတယ်**။ လုံလောက်စွာ သင်ယူပြီးရင် agent ရည်မှန်းရာကို အကောင်းဆုံး ရောက်နိုင်သလို လမ်းကြောင်းရည်ညွှန်းချက် လျော့နည်းလာတယ်။ သို့သော် exploration ကို ဆက်လက်ဖွင့်ထားတဲ့အတွက် ဆက်လက် အကောင်းဆုံး လမ်းကြောင်းမှ ပွားထွက်သွားပြီး နောက်ထပ်ရွေးချယ်မှုအသစ်များကို စူးစမ်းရာ အသွားအလာ ပြီးတော့ လမ်းကြောင်း ကြီးလာတတ်တယ်။
-- **Length တစ်ခါတစ်ရံ ရုတ်တရက် တိုးလာသည်**။ ဤ graph တွင် တစ်ချိန်ချိန်တွင် length ရုတ်တရက် တိုးလာသည်ကိုလည်း တွေ့ရသည်။ ၎င်းသည် လုပ်ငန်းစဉ်၏ stochastic nature ကို ဖော်ပြပြီး Q-Table coefficients များကို တန်ဖိုးအသစ်များဖြင့် ပြန်ရေးသားခြင်းကြောင့် ဖြစ်နိုင်သည်။ ၎င်းကို သင်ကြားမှုအဆုံးပိုင်းတွင် learning rate ကို လျော့ချခြင်းဖြင့် minimize လုပ်သင့်သည် (ဥပမာ Q-Table တန်ဖိုးများကို အနည်းငယ်သာ ပြင်ဆင်ခြင်း)။
+- **လမ်းကြောင်း တိုးကျယ်မှု ပြင်းထန်စွာ ဖြစ်တယ်**။ ဤ graph တွင် သိရှိထားတဲ့အတိုင်း တစ်ကြိမ်မှာ လမ်းကြောင်း တိုးကျယ်မှု ပြင်းထန်စွာ ဖြစ်ပေါ်ခဲ့တာကို တွေ့ရသည်။ ဒါက stochastic လုပ်ငန်းစဉ် အရ ဖြစ်ပြီး Q-Table ကုဒ်ဆိုဒ်များကို အသစ်တပ်ရိုက်တာကြောင့် ပြောင်းလဲမှု ဖြစ်တတ်သည်။ အထူးသဖြင့် သင်ကြားမှု၏ နောက်ဆုံးအဆင့်တွင် learning rate ကို နည်းစေပြီး Q-Table တန်ဖိုးများကို သေးငယ်စွာ ပြင်ဆင်သင့်သည်။
-စုစုပေါင်းအားဖြင့် သင်ယူမှုလုပ်ငန်းစဉ်၏ အောင်မြင်မှုနှင့် အရည်အသွေးသည် learning rate, learning rate decay, နှင့် discount factor ကဲ့သို့သော parameters များအပေါ် အလွန်အမင်း မှီခိုနေသည်ကို သတိထားရမည်။ ၎င်းတို့ကို **hyperparameters** ဟု ခေါ်ပြီး **parameters** (ဥပမာ Q-Table coefficients) နှင့် ခွဲခြားရန် သတ်မှတ်ထားသည်။ hyperparameter များ၏ အကောင်းဆုံးတန်ဖိုးများကို ရှာဖွေခြင်းလုပ်ငန်းစဉ်ကို **hyperparameter optimization** ဟု ခေါ်ပြီး ၎င်းသည် သီးခြားအကြောင်းအရာတစ်ခုအဖြစ် သတ်မှတ်ရန် တန်ဖိုးရှိသည်။
+ဒါ့အပြင် သင်ယူမှုဖြတ်သန်းမှု အောင်မြင်မှုနှင့် အရည်အသွေးမှာ learning rate, learning rate decay, discount factor တို့ကဲ့သို့သော parameters ပေါ်မူတည်သည်။ ဤ parameters များကို **hyperparameters** ဟု ခေါ်ကြပြီး သင်ကြားမှုကာလအတွင်း optimize ဖြစ်သော **parameters** (ဥပမာ Q-Table coefficient များ) ကွဲပြားသည်။ hyperparameter တန်ဖိုးများကို ရှာဖွေသည့် လုပ်ငန်းစဉ်ကို **hyperparameter optimization** ဟုဆိုပြီး သီးခြားခေါင်းစဉ်တစ်ခုလိုချင်သည်။
## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ml/)
-## အလုပ်ပေးစာ
+## Assignment
[A More Realistic World](assignment.md)
---
-**ဝက်ဘ်ဆိုက်မှတ်ချက်**:
-ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးစားနေပါသော်လည်း၊ အလိုအလျောက်ဘာသာပြန်ဆိုမှုများတွင် အမှားများ သို့မဟုတ် မတိကျမှုများ ပါဝင်နိုင်သည်ကို ကျေးဇူးပြု၍ သတိပြုပါ။ မူရင်းဘာသာစကားဖြင့် ရေးသားထားသော စာရွက်စာတမ်းကို အာဏာတည်သော ရင်းမြစ်အဖြစ် သတ်မှတ်သင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူက ဘာသာပြန်ဝန်ဆောင်မှုကို အသုံးပြုရန် အကြံပြုပါသည်။ ဤဘာသာပြန်ကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော နားလည်မှုမှားများ သို့မဟုတ် အဓိပ္ပာယ်မှားများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။
\ No newline at end of file
+
+**ပြောကြားချက်**
+ဤစာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးပမ်းနေသော်လည်း၊ စက်ကိရိယာဘာသာပြန်ခြင်းများတွင် အမှားများ သို့မဟုတ် မှားယွင်းချက်များ ပါဝင်နိုင်ကြောင်း သတိပြုပါရန် လိုအပ်ပါသည်။ မူလစာတမ်းကို မူရင်းဘာသာဖြင့်သာ ယုံကြည်စိတ်ချရသော အချက်အလက်အဖြစ် သတ်မှတ်သင့်သည်။ အရေးကြီးသည့် သတင်းအချက်အလက်များအတွက် ပရော်ဖက်ရှင်နယ် လူသားဘာသာပြန်သူဝန်ဆောင်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်ချက်ကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော နားလည်မှုကွာခြားမှုများ သို့မဟုတ် မမှန်ကန်သော အသုံးပြုမှုများအတွက် ကျွန်ုပ်တို့ တာဝန်မခံပါ။
+
\ No newline at end of file
diff --git a/translations/my/9-Real-World/1-Applications/README.md b/translations/my/9-Real-World/1-Applications/README.md
index 5a7510c62..f378ae78b 100644
--- a/translations/my/9-Real-World/1-Applications/README.md
+++ b/translations/my/9-Real-World/1-Applications/README.md
@@ -1,127 +1,155 @@
-# Postscript: အမှန်တကယ်သောကမ္ဘာတွင် Machine Learning
+# အပြီးအစီး မှတ်စု - အမှန်တကယ်ကမ္ဘာကို ရှု့ရာတွင် စက်နှင့် သင်ယူမှု
-
-> Sketchnote by [Tomomi Imura](https://www.twitter.com/girlie_mac)
-ဒီသင်ခန်းစာတွဲမှာ သင်သည် training အတွက် data ကိုပြင်ဆင်နည်းများနှင့် machine learning models ဖန်တီးနည်းများကိုလေ့လာခဲ့ပါသည်။ သင်သည် regression, clustering, classification, natural language processing, နှင့် time series models များကိုတစ်စဉ်တစ်စဉ်တည်ဆောက်ခဲ့ပါသည်။ ဂုဏ်ယူပါတယ်! အခုတော့ သင်သည် "ဒါတွေဘာအတွက်လဲ..." "ဒီ models တွေကို အမှန်တကယ်ဘယ်လိုအသုံးချနိုင်မလဲ" ဆိုပြီး စဉ်းစားနေရနိုင်ပါတယ်။
+
+> စကက်ချ်မှတ်သားချက်ကို [Tomomi Imura](https://www.twitter.com/girlie_mac) မှ ပြုစုသည်
-AI သည် deep learning ကိုအခြေခံပြီး စက်မှုလုပ်ငန်းများတွင် အလွန်စိတ်ဝင်စားမှုရရှိထားသော်လည်း classical machine learning models များအတွက်လည်း အရေးပါသောအသုံးချမှုများရှိနေဆဲဖြစ်သည်။ သင်သည် ယနေ့တိုင်အောင် ဒီအသုံးချမှုများကိုတချို့အသုံးပြုနေတတ်ပါသည်။ ဒီသင်ခန်းစာမှာ သင်သည် အခြားသောလုပ်ငန်းများနှင့် အထူးကျွမ်းကျင်မှုရှိသောနယ်ပယ် ၈ ခုက ဒီ models များကို application များကိုပိုမိုထိရောက်စေခြင်း၊ ယုံကြည်စိတ်ချစေခြင်း၊ ဉာဏ်ရည်ရှိစေခြင်း၊ နှင့် အသုံးပြုသူများအတွက်တန်ဖိုးရှိစေခြင်းအတွက် ဘယ်လိုအသုံးချကြောင်းကိုလေ့လာပါမည်။
+သင်သည် ၎င်းပညာရပ်တွင် သင်ကြားသည့်အခါ ချိန်ညှိရန် ဒေတာပြင်ဆင်ခြင်းနည်းလမ်းများနှင့် စက်သင်ယူမှု မော်ဒယ်များ ဖန်တီးခြင်းနည်းလမ်းများကို များစွာလေ့လာခဲ့ပါသည်။ တိုင်းထွာမှု၊ အစုအဝေးခွဲခြားမှု၊ အတန်းခွဲခြားမှု၊ သဘာဝဘာသာစကားကို ထောက်ပံ့ရေးခြင်းနှင့် အချိန်ဇယားနိယာမ မော်ဒယ်များကို တည်ဆောက်ခဲ့ပါသည်။ ဂုဏ်ယူပါတယ်! ယခု သင်စဉ်းစား နေမှာ ဖြစ်တယ်... ဒီ မော်ဒယ်တွေကို အမှန်တကယ် ဘယ်လို အသုံးပြုကြတာလဲ?
-## [Pre-lecture quiz](https://ff-quizzes.netlify.app/en/ml/)
+စက်မှုလုပ်ငန်းတွင် AI ကို တစ်ခါတရံ အသုံးပြု၍ အလွန်စိတ်ဝင်စားမှုရရှိခဲ့သော်လည်း စက်သင်ယူမှုမော်ဒယ်ရိုးရှင်းသောတို့တွင်လည်း သုံးစွဲမှုအသုံးချနိုင်မှု မြင့်မားသေးသည်။ ယနေ့တစ်နေ့မှာတောင် ဒီအသုံးချမှုများတချို့ကို သင် အသုံးပြုနေနိုင်ပါသည်! ဒီသင်ခန်းစာမှာ စက်မှုလုပ်ငန်းအမျိုးအစားရှစ်ခုနှင့် အထူးကဏ္ဍများတွင် ဤမျိုးစုံမော်ဒယ်များကို အသုံးပြု၍ ၎င်း၏ အသုံးပြုမှုများကို ပိုမိုထိရောက်၊ ယုံကြည်စိတ်ချစေရန်၊ တရားမြတ်သောနှင့် အသုံးဝင်မှုရှိသော အဖြစ်လုပ်ဆောင်နေကြသည်ကို ရှာဖွေရမှာ ဖြစ်သည်။
+
+## [သင်ခန်းစာမတိုင်ခင် စိစစ်မေးခွန်း](https://ff-quizzes.netlify.app/en/ml/)
## 💰 ဘဏ္ဍာရေး
-ဘဏ္ဍာရေးကဏ္ဍသည် machine learning အတွက် အခွင့်အလမ်းများစွာပေးနိုင်သည်။ ဒီကဏ္ဍရှိပြဿနာများစွာသည် ML ကိုအသုံးပြု၍ မော်ဒယ်တည်ဆောက်ခြင်းနှင့် ဖြေရှင်းခြင်းအတွက် သင့်လျော်သည်။
+ဘဏ္ဍာရေးကဏ္ဍမှာ စက်သင်ယူမှု အသုံးချရန် အခွင့်အလမ်းများစွာ ရှိသည်။ ဒီနယ်ပယ်ထဲရှိ ပြဿနာများ ဆက်စပ်ပြီး စက်သင်ယူမှုဖြင့် မော်ဒယ်ပြုလုပ်ကာ ဖြေရှင်းနိုင်ခြင်းများ ရှိပါသည်။
-### ခရက်ဒစ်ကတ်လိမ်လည်မှုရှာဖွေခြင်း
+### ခရက်ဒစ်ကတ်လိမ်လည်မှု ကာကွယ်စစ်ဆေးခြင်း
-ကျွန်ုပ်တို့သည် [k-means clustering](../../5-Clustering/2-K-Means/README.md) ကို သင်ခန်းစာတွင်လေ့လာခဲ့ပါသည်၊ ဒါပေမယ့် ဒါကို ခရက်ဒစ်ကတ်လိမ်လည်မှုဆိုင်ရာပြဿနာများကို ဘယ်လိုဖြေရှင်းနိုင်မလဲ?
+သင်သည် အစောပိုင်းတွင် [k-means အစုအဝေးခွဲခြားမှု](../../5-Clustering/2-K-Means/README.md) ပြုလုပ်မှုကို လေ့လာခဲ့သည်၊ သို့သော် ၎င်းကို ခရက်ဒစ်ကတ်လိမ်လည်မှုနှင့် ဆက်စပ်သော ပြဿနာများကို မည်ကဲ့သို့ ဖြေရှင်းနိုင်သနည်း?
-K-means clustering သည် **outlier detection** ဟုခေါ်သော ခရက်ဒစ်ကတ်လိမ်လည်မှုရှာဖွေခြင်းနည်းလမ်းတွင် အလွန်အသုံးဝင်သည်။ Outliers သည် data set တစ်ခုအပေါ်ရှိ observation များတွင် အထူးပြောင်းလဲမှုများဖြစ်ပြီး ခရက်ဒစ်ကတ်ကို သာမန်အသုံးပြုမှုဖြစ်မဖြစ်၊ သို့မဟုတ် ထူးခြားသောအရာတစ်ခုဖြစ်နေမဖြစ်ကို ပြောပြနိုင်သည်။ အောက်ပါစာတမ်းတွင် ဖော်ပြထားသည့်အတိုင်း သင်သည် k-means clustering algorithm ကိုအသုံးပြု၍ ခရက်ဒစ်ကတ် data ကို စီစစ်နိုင်ပြီး transaction တစ်ခုစီကို outlier ဖြစ်ပုံကိုအခြေခံ၍ cluster တစ်ခုသို့ သတ်မှတ်နိုင်သည်။ ထို့နောက် သင်သည် fraudulent versus legitimate transactions အတွက် အန္တရာယ်များသော clusters များကို အကဲဖြတ်နိုင်သည်။
+k-means အစုအဝေးခွဲခြားမှုသည် ခရက်ဒစ်ကတ်လိမ်လည်မှု ကာကွယ်စနစ်တွင် **အထူးထွက်များ (outlier detection)** အဖြစ် အသုံးပြုသည်။ အထူးထွက်များသည် ဒေတာအစုတစ်စုတွင် စောင့်ကြည့်ချက်များတွင် ကြာခြားမှုများဖြစ်ပြီး ခရက်ဒစ်ကတ်သည် ပုံမှန်အသုံးပြုမှုဖြစ်နေသည်ဟုတ်ဟု မဟုတ်ဟု ခွဲခြားပေးနိုင်သည်။ အောက်ပါ စာတမ်းတွင် ဖော်ပြထားသလို k-means မော်ဒယ်ဖြင့် ခရက်ဒစ်ကတ် ဒေတာများကို အစုအဝေးများအဖြစ် ကန့်သတ်ပြီး၊ လုပ်ငန်းဆောင်တာတိုင်းကို အထူးထွက်အသုံးပြုမှုအရ အစုတစ်ခုချင်းစီသို့ ခွဲခြားပေးနိုင်သည်။ ထို့နောက် အန္တရာယ်ဆုံး အစုများကို လိမ်လည်မှုနဲ့ တရားဝင်လုပ်ငန်းဆောင်တာများအနေဖြင့် သုံးသပ်နိုင်ပါသည်။
[Reference](https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.680.1195&rep=rep1&type=pdf)
-### Wealth management
+### ငွေကြေး စီမံခန့်ခွဲမှု
-Wealth management တွင် တစ်ဦးတစ်ယောက် သို့မဟုတ် ကုမ္ပဏီတစ်ခုသည် သူတို့၏ client များအတွက် ရင်းနှီးမြှုပ်နှံမှုများကို စီမံခန့်ခွဲသည်။ သူတို့၏အလုပ်သည် ရေရှည်တွင် ငွေကြေးကို ထိန်းသိမ်းပြီး တိုးတက်စေခြင်းဖြစ်သည်၊ ထို့ကြောင့် အကောင်းဆုံးလုပ်ဆောင်သော ရင်းနှီးမြှုပ်နှံမှုများကို ရွေးချယ်ရန် အရေးကြီးသည်။
+ငွေကြေး စီမံခန့်ခွဲမှုတွင် ကိုယ်ပိုင်သို့မဟုတ်ကုမ္ပဏီတစ်ခုသည် သုံးစွဲသူတစ်ဦး ဒါမှမဟုတ် အသင်းအတွက် ရင်းနှီးမြှုပ်နှံမှုများကို ကိုင်တွယ်သည်။ ၎င်း၏တာဝန်မှာ ရေရှည်အတွေ့အကြုံအတွက် ငွေကြေးကို ထိန်းသိမ်းပြီး တိုးတက်စေခြင်းဖြစ်သောကြောင့် ထိရောက်သော ရင်းနှီးမြှုပ်နှံမှုကိုေရြးချယ်ရပါမည်။
-ရင်းနှီးမြှုပ်နှံမှုတစ်ခုသည် ဘယ်လိုလုပ်ဆောင်သလဲဆိုတာကို အကဲဖြတ်ရန် statistical regression သည် အလွန်တန်ဖိုးရှိသော tools ဖြစ်သည်။ [Linear regression](../../2-Regression/1-Tools/README.md) သည် fund တစ်ခုသည် benchmark တစ်ခုနှင့် ဆက်စပ်မှုကို နားလည်ရန် အရေးပါသော tools ဖြစ်သည်။ Regression ရလဒ်များသည် statistically significant ဖြစ်မဖြစ်၊ သို့မဟုတ် client ၏ ရင်းနှီးမြှုပ်နှံမှုများကို ဘယ်လောက်ထိခိုက်စေမည်ကိုလည်း သုံးသပ်နိုင်သည်။ သင်သည် multiple regression ကို အသုံးပြု၍ အခြားသော risk factors များကိုပါ ထည့်သွင်းပြီး analysis ကို တိုးချဲ့နိုင်သည်။ Fund တစ်ခုအတွက် ဒီနည်းလမ်းက ဘယ်လိုအလုပ်လုပ်မည်ဆိုတာကို အောက်ပါစာတမ်းတွင် ကြည့်ရှုနိုင်ပါသည်။
+ရင်းနှီးမြှုပ်နှံမှုတစ်ခု၏ ဖောင်မော်ထိုးကို စစ်ဆေးမှုတစ်ခုက စာရင်းဇယား အနည်းငယ်မှတစ်ဆင့် ခုခံချက်တစ်ပါးသည် စတယ်လ့်ကတင်ခန့်မှန်းခြင်းဖြစ်ပါသည်။ [လင်းနီယာစတယ်လ့်](../../2-Regression/1-Tools/README.md) သည် ရင်းနှီးမြှုပ်နှံမှုတစ်ခု၏စတင်ယူဆချက်နှင့် ယှဉ်ပြိုင်သော အခြေခံခန့်မှန်းချက်များကို နားလည်ရန် အရေးပါတဲ့ကိရိယာတစ်ခု ဖြစ်သည်။ ထို့ပြင် စတယ်လ့်ရလဒ်များသည် စာရင်းဇယားအနေဖြင့် အရေးပါတော့မလား၊ ဒါမှမဟုတ် ရင်းနှီးမြှုပ်နှံသူ၏ ရင်းနှီးမြှုပ်နှံမှုကို မည်သို့ သက်ရောက်မှုရှိမည်ကို သုံးသပ်နိုင်ပါသည်။ လေ့လာမှုကို နည်းလမ်းပိုမိုကွဲပြားသော စတယ်လ့်များဖြင့် တိုးချဲ့နိုင်ပြီး အန္တရာယ်အချက်များကို ထည့်သွင်းစဉ်းစားနိုင်ပါသည်။ သတ်မှတ်ထားသော ငွေကြေးဖောင်တစ်ခုအတွက် စတယ်လ့်ဖြင့် အကဲဖြတ်ခြင်း စာတမ်းကို အောက်တွင် ကြည့်ရှုနိုင်သည်။
[Reference](http://www.brightwoodventures.com/evaluating-fund-performance-using-regression/)
## 🎓 ပညာရေး
-ပညာရေးကဏ္ဍသည် ML ကို အသုံးချနိုင်သော စိတ်ဝင်စားဖွယ်ရာနယ်ပယ်တစ်ခုဖြစ်သည်။ စမ်းသပ်မှုများ သို့မဟုတ် စာတမ်းများတွင် လိမ်လည်မှုကို ရှာဖွေခြင်း၊ correction process တွင် bias (မတူညီမှု) ကို စီမံခန့်ခွဲခြင်းစသည်တို့က စိတ်ဝင်စားဖွယ်ရာပြဿနာများဖြစ်သည်။
+ပညာရေးနယ်ပယ်များတွင်လည်း စက်သင်ယူမှုအသုံးပြုမှုများစွာ ရှိသည်။ စာမေးပွဲသို့မဟုတ် စာအဖွဲ့ရေးထဲ၌ လိမ်လည်မှုကို စစ်ဆေးခြင်း၊ မမြင်သာသော အမျိုးသမီးမဟုတ်သော အကြမ်းဖက်မှုများနှင့် ပြုပြင်ခြင်းလုပ်ငန်းစဉ်မှာ ရှုပ်ထွေးသော အကျိုးသက်ရောက်မှုများကို ကိုင်တွယ်နိုင်သော ခွင့်ရှိသည်။
-### ကျောင်းသားအပြုအမူကိုခန့်မှန်းခြင်း
+### ကျောင်းသား စိတ်ဓာတ်ခန့်မှန်းခြေ
-[Coursera](https://coursera.com) သည် online open course provider တစ်ခုဖြစ်ပြီး သူတို့ engineering ဆုံးဖြတ်ချက်များစွာကို ဆွေးနွေးသော tech blog တစ်ခုရှိသည်။ ဒီ case study တွင် သူတို့သည် regression line တစ်ခုကို plot လုပ်ပြီး low NPS (Net Promoter Score) rating နှင့် course retention သို့မဟုတ် drop-off အကြား correlation ရှိမရှိကို ရှာဖွေခဲ့သည်။
+[Coursera](https://coursera.com) သည် အွန်လိုင်းသင်တန်းပေးသူတစ်ခုဖြစ်ပြီး အင်ဂျင်နီယာလုပ်ငန်း ဆုံးဖြတ်ချက်များကို ဆွေးနွေးသော ထုတ်လွှင့်ထားသော နည်းပညာဘလော့ဂ်ရှိသည်။ ဤလေ့လာမှုတွင် သူတို့သည် သင်ခန်းစာအရည်အသွေးနိမ့်ခြင်း (NPS) နှင့် သင်ရိုးတန်းတွေ့ဆုံမှု သို့မဟုတ် မက်ကွာခြင်းအကြား တွဲထိန်းမှုရှိမရှိ စစ်ဆေးရန် စတယ်လ့်လိုင်းတစ်ခုကို အကြောင်းပြုခဲ့သည်။
[Reference](https://medium.com/coursera-engineering/controlled-regression-quantifying-the-impact-of-course-quality-on-learner-retention-31f956bd592a)
-### Bias ကိုလျှော့ချခြင်း
+### အမျိုးသမီး အလားအလာ လျော့ပါးခြင်း လုပ်ငန်းကိစ္စများ ကာကွယ်ခြင်း
-[Grammarly](https://grammarly.com) သည် spelling နှင့် grammar အမှားများကို စစ်ဆေးပေးသော writing assistant တစ်ခုဖြစ်ပြီး သူတို့၏ product များတွင် sophisticated [natural language processing systems](../../6-NLP/README.md) များကို အသုံးပြုသည်။ သူတို့ tech blog တွင် gender bias ကို machine learning တွင် ဘယ်လိုကိုင်တွယ်ခဲ့သည်ဆိုတာကို case study အနေနဲ့ ဖော်ပြထားသည်။ သင်သည် [introductory fairness lesson](../../1-Introduction/3-fairness/README.md) တွင်လည်း ဒီအကြောင်းကိုလေ့လာခဲ့ပါသည်။
+[Grammarly](https://grammarly.com) သည် စာရေးအကူအညီပေးသော ကိရိယာတစ်ခုဖြစ်ပြီး စာလုံးပုဒ်နှင့် စာပိုဒ်တစ်ခုလုံးမှားတွေကို စစ်ဆေးပေးသည်။ ၎င်း၏ ကုန်ပစ္စည်းများတွင် နိုင်ငံတကာ [သဘာဝဘာသာစကားကိရိယာများ](../../6-NLP/README.md) ကို တိုးတက်စွာအသုံးပြုသည်။ သူတို့ နည်းပညာဘလော့ဂ်တွင် စက်သင်ယူမှုအမျိုးအစားများအတွက် အမျိုးသမီးအလားအလာ ပြဿနာဖြေရှင်းခဲ့ပုံကို စိတ်ဝင်စားဖွယ် ရေးသားခဲ့သည်။ သင်သည် ကျွန်ုပ်တို့၏ [အတန်းအတွင်းတရားမျှတမှု နိယာမသင်ခန်းစာ](../../1-Introduction/3-fairness/README.md) မှ လေ့လာခဲ့ဖူးသည်။
[Reference](https://www.grammarly.com/blog/engineering/mitigating-gender-bias-in-autocorrect/)
-## 👜 လက်လီရောင်းဝယ်ရေး
+## 👜 လက်လီအရောင်း
-လက်လီရောင်းဝယ်ရေးကဏ္ဍသည် ML ကို အသုံးပြု၍ customer journey ကိုပိုမိုကောင်းမွန်စေခြင်း၊ inventory ကို အကောင်းဆုံးစီမံခန့်ခွဲခြင်းစသည်တို့တွင် အကျိုးရှိစေသည်။
+လက်လီအရောင်း ပြဿနာများတွင် ဖောက်သည် ခရီးစဉ်ကောင်းမွန်မှုဖန်တီးခြင်းမှ စတင်၍ အကောင်းဆုံး ထုတ်ကုန်အသွင်းသိုလှောင်မှုထိ စက်သင်ယူမှု အသုံးချမှု အကျိုးရှိသည်။
-### Customer journey ကို personalize လုပ်ခြင်း
+### ဖောက်သည် ခရီးစဉ်ကို ပုဂ္ဂိုလ်ရေးပြုလုပ်ခြင်း
-Wayfair သည် furniture ကဲ့သို့သော home goods များကိုရောင်းချသောကုမ္ပဏီတစ်ခုဖြစ်ပြီး customer များအတွက် taste နှင့်လိုအပ်ချက်များကိုဖြည့်ဆည်းပေးရန် အရေးကြီးသည်။ ဒီ article တွင် Wayfair ၏ engineers များက ML နှင့် NLP ကို "customer များအတွက် အမှန်တကယ်သောရလဒ်များကို surface လုပ်ရန်" ဘယ်လိုအသုံးပြုကြောင်းကို ဖော်ပြထားသည်။ အထူးသဖြင့် သူတို့၏ Query Intent Engine သည် entity extraction, classifier training, asset နှင့် opinion extraction, နှင့် sentiment tagging ကို customer reviews တွင် အသုံးပြုထားသည်။ ဒါဟာ online retail တွင် NLP ဘယ်လိုအလုပ်လုပ်တတ်သလဲဆိုတာကို classic use case တစ်ခုဖြစ်သည်။
+Wayfair ဆိုသည်မှာ ကုမ္ပဏီတစ်ခုဖြစ်ပြီး မီးပုံးစတိုင်ပစ္စည်းများကို ရောင်းချကာ ဖောက်သည်များ တိုင်းရင်းသား၏ အရသာနှင့် လိုအပ်ချက်များ အတွက် ထုတ်ကုန်မှန်များရှာဖွေရန်အရေးကြီးသည်။ ဒီဆောင်းပါးတွင် ကုမ္ပဏီမှ အင်ဂျင်နီယာများက စက်သင်ယူမှုနှင့် သဘာဝဘာသာစကားကို အသုံးပြု၍ "ဖောက်သည်များအတွက် မှန်ကန်သော ရလဒ်များကို ပြသရန်" ပြောကြားသည်။ အထူးသဖြင့် သူတို့၏ Query Intent Engine သည် ဖောက်သည် ပြန်လည်သုံးသပ်ချက်များပေါ်တွင် အရာဝတ္ထုထုတ်ယူခြင်း၊ အတန်းခွဲ လေ့ကျင့်မှု၊ ပစ္စည်းနှင့် အမြင်ထုတ်ယူခြင်း၊ခံစားချက် စာတန်းပေးခြင်းတို့ကို သုံးစွဲရန် တည်ဆောက်ထားသည်။ ၎င်းသည် အွန်လိုင်း လက်လီအရောင်းတွင် သဘာဝဘာသာစကားစနစ် အသုံးချမှု၏ ရိုးရာနမူနာတစ်ခုဖြစ်သည်။
[Reference](https://www.aboutwayfair.com/tech-innovation/how-we-use-machine-learning-and-natural-language-processing-to-empower-search)
-### Inventory management
+### ပစ္စည်း သိုလှောင်မှု စီမံခန့်ခွဲမှု
-[StitchFix](https://stitchfix.com) ကဲ့သို့သော innovative, nimble ကုမ္ပဏီများသည် ML ကို recommendation နှင့် inventory management အတွက် အလွန်အကျိုးရှိစွာအသုံးပြုသည်။ သူတို့၏ styling teams များသည် merchandising teams များနှင့်ပေါင်းစည်းလုပ်ဆောင်ကြသည်။ "ကျွန်ုပ်တို့၏ data scientist တစ်ဦးသည် genetic algorithm တစ်ခုကို apparel တွင် အသုံးပြု၍ ယနေ့မရှိသေးသော successful piece of clothing ကိုခန့်မှန်းခဲ့သည်။"
+[StitchFix](https://stitchfix.com) ဆိုသည်မှာ အသုံးပြုသူထံ အဝတ်အစားပို့ဆောင်ပေးသည့် ဘောက်စ်ဆိုင်တစ်ခုဖြစ်ပြီး အကြံပြုခြင်းနှင့် ပစ္စည်းသိုလှောင်မှု စီမံခန့်ခွဲမှုအတွက် စက်သင်ယူမှုကို အလွန်အကျွံ အားထားခြင်းဖြစ်သည်။ ၎င်းတို့၏ စတိုင်နည်းပညာအဖွဲ့များသည် ကုန်စာရင်းအဖွဲ့နှင့် ပူးပေါင်း၍ "တစ်ယောက်သော ဒေတာသိပ္ပံပညာရှင်တစ်ဦးက ဇီ၀ဗေဒနည်းပညာဂဏန်းရှင်ဓာတ်ခွဲခြင်းကို စမ်းသပ်၍ မယ့်အဝတ်အစားကို ခန့်မှန်းနိုင်သည့် ကိရိယာကို ဖန်တီးခဲ့သည်။ ၎င်းအရာကို ကုန်စာရင်းအဖွဲ့သို့ လာရောက်ခဲ့ပြီး ယခုအခါ ၎င်းတို့က သုံးစွဲသည့် ကိရိယာတစ်ခု ဖြစ်လာနိုင်သည်။"
[Reference](https://www.zdnet.com/article/how-stitch-fix-uses-machine-learning-to-master-the-science-of-styling/)
-## 🏥 ကျန်းမာရေး
+## 🏥 ကျန်းမာရေးစောင့်ရှောက်မှု
-ကျန်းမာရေးကဏ္ဍသည် ML ကို အသုံးပြု၍ သုတေသနလုပ်ငန်းများနှင့် logistic ပြဿနာများကို optimize လုပ်နိုင်သည်။ ဥပမာ - လူနာများကိုပြန်လည်လက်ခံခြင်း၊ သို့မဟုတ် ရောဂါများပျံ့နှံ့မှုကိုတားဆီးခြင်း။
+ကျန်းမာရေးစောင့်ရှောက်မှုနယ်ပယ်သည် သုတေသနတာဝန်များနှင့် လူနာများအား ပြန်လည်တက်ရောက်မှု သို့မဟုတ် ရောဂါ ကပ်လျက် ထိန်းချုပ်မှု တို့မှာ စက်သင်ယူမှုကို အကျိုးရှိစွာ အသုံးချနိုင်သည်။
-### Clinical trials စီမံခန့်ခွဲခြင်း
+### ဆေးစမ်းသပ်မှုစီမံခန့်ခွဲမှုပြဿနာ
-Clinical trials တွင် toxicity သည် drug makers များအတွက် အရေးကြီးသောပြဿနာတစ်ခုဖြစ်သည်။ Toxicity ဘယ်လောက်ထိခံနိုင်ရမလဲ? ဒီသုတေသနတွင် clinical trial methods များကို analysis လုပ်ပြီး clinical trial outcomes ကိုခန့်မှန်းရန်နည်းလမ်းအသစ်တစ်ခုကို ဖန်တီးခဲ့သည်။ အထူးသဖြင့် random forest ကိုအသုံးပြု၍ [classifier](../../4-Classification/README.md) တစ်ခုကို ဖန်တီးခဲ့သည်။
+ဆေးစမ်းသပ်မှုတွင် အဆိပ်အတောက်သည် ဆေးထုတ်လုပ်သူများအတွက် အဓိကပူပန်မှုပြဿနာဖြစ်သည်။ ဘယ်လောက်အဆိပ်ကို ချွတ်နိုင်သနည်း? ဤသုတေသနတွင် ဆေးစမ်းသပ်မှုနည်းပညာရှာဖွေရေးများနှင့်အတူ အခြေအနေများခန့်မှန်းခြင်းအသစ်တစ်ခုကို ဖန်တီးခဲ့သည်။ အထူးသဖြင့် random forest ကို အသုံးပြု၍ ဆေးအုပ်စုအသီးသီးကို ခွဲခြားနိုင်သော [အတန်းခွဲစနစ် (classifier)](../../4-Classification/README.md) ကို တည်ဆောက်နိုင်ခဲ့သည်။
[Reference](https://www.sciencedirect.com/science/article/pii/S2451945616302914)
-### လူနာပြန်လည်လက်ခံမှုစီမံခန့်ခွဲခြင်း
+### ဆေးရုံ ပြန်လည်တက်ရောက်မှု စီမံခန့်ခွဲမှု
-ဆေးရုံ care သည် အလွန်ကုန်ကျစရိတ်များရှိပြီး လူနာများကိုပြန်လည်လက်ခံရခြင်းသည် အထူးကုန်ကျစရိတ်များရှိသည်။ ဒီစာတမ်းတွင် ML ကို clustering algorithms အသုံးပြု၍ readmission potential ကိုခန့်မှန်းရန် ဘယ်လိုအသုံးပြုကြောင်းကို ဖော်ပြထားသည်။ ဒီ clusters များက "readmissions များတွင် common cause ရှိနိုင်သောအုပ်စုများကို ရှာဖွေရန်" analyst များကိုကူညီပေးသည်။
+ဆေးရုံစောင့်ရှောက်မှုသည်စျေးနှုန်းမြင့်သည်၊ အထူးသဖြင့် လူနာများ ပြန်လည်တက်ရောက်ရသည့်အခါ။ ဒီစာတမ်းတွင် ML ကို အသုံးပြု၍ [အစုအဝေးခွဲခြားမှု](../../5-Clustering/README.md) စနစ်ဖြင့် ပြန်လည်တက်ရောက်မှုရှိနိုင်ချေကို ခန့်မှန်းကြောင်းဖော်ပြသည်။ ဤအစုများက "မျိုးစုံသောပြန်လည်တက်ရောက်မှုပေးသောအုပ်စုများကို ရှာဖွေတွေ့ရှိရန်" ကူညီသည်။
[Reference](https://healthmanagement.org/c/healthmanagement/issuearticle/hospital-readmissions-and-machine-learning)
-### ရောဂါစီမံခန့်ခွဲခြင်း
+### ရောဂါစီမံခန့်ခွဲမှု
-နောက်ဆုံးကာလ pandemic သည် ML ကိုရောဂါပျံ့နှံ့မှုကိုတားဆီးရန် ဘယ်လိုအသုံးပြုနိုင်သည်ဆိုတာကို အလင်းရောင်ပေးခဲ့သည်။ ဒီ article တွင် ARIMA, logistic curves, linear regression, နှင့် SARIMA ကိုအသုံးပြုထားသည်။ "ဒီအလုပ်သည် virus ၏ပျံ့နှံ့နှုန်းကိုတွက်ချက်ရန်နှင့် သေဆုံးမှုများ၊ ပြန်လည်ကောင်းမွန်မှုများ၊ နှင့် အတည်ပြုမှုများကိုခန့်မှန်းရန် ကြိုးစားမှုတစ်ခုဖြစ်သည်။"
+ကိုဗစ်ကပ်ရောဂါကဲ့သို့ နောက်ဆုံးဗိသုကာကာလတွင် စက်သင်ယူမှုက ရောဂါပြန့်ပွားမှုကို တားဆီးရာတွင် အလင်းစိုက် ချထားသည်။ ဤဆောင်းပါးတွင် ARIMA, logistic curves, linear regression, SARIMA ဆိုင်ရာအသုံးပြုမှုများကို တွေ့မြင်ရမည်။ "ဤလေ့လာမှုသည် ဤဗိုင်းရပ်စ်တို့၏ ပြန်လည်ပြန့်ပွားမှုနှုန်းကို ခန့်မှန်မှန်းခြေခြင်းဖြစ်ပြီး အသေဆုံးမှု၊ ကုန်လွန်မှု၊ အတည်ပြု ရောဂါကြုံတွေ့မှုများကို ကြိုတင်ခန့်မှန်းရန် အကူအညီပေးမည်ဖြစ်သည်။"
[Reference](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7979218/)
-## 🌲 သဘာဝပတ်ဝန်းကျင်နှင့် Green Tech
+## 🌲 သဘာဝပတ်ဝန်းကျင် နှင့် အစိမ်းနှင့် နည်းပညာ
+
+သဘာဝနှင့် သုပ်တောဟူသည် သတ္တဝါနှင့် သဘာဝ၏ တုံ့ပြန်ဆက်ဆံမှုရှိသော ကြောင့် ပျက်စီးမှုများကို တိတိကျကျ တိုင်းတာနိုင်ပြီး တင်းကြပ်စွာ ကိုင်တွယ်ရန် အရေးကြီးသည်။ မျိုးစိုက်မှု သို့မဟုတ် သတ္တဝါများ ဇယားကျမည့် ဖြစ်ရပ်များတွင် သင့်တော်သော လှုပ်ရှားမှုများ ပြုလုပ်ပေးရပါမည်။
-သဘာဝနှင့်သဘာဝပတ်ဝန်းကျင်သည် အလွန်နူးညံ့သောစနစ်များဖြစ်ပြီး တိရစ္ဆာန်များနှင့်သဘာဝအကြားဆက်ဆံရေးကိုအဓိကထားသည်။ ဒီစနစ်များကိုတိကျစွာတိုင်းတာနိုင်ရန်နှင့် တစ်စုံတစ်ခုဖြစ်ပျက်ပါက သင့်တော်သောအရေးယူမှုများလုပ်ဆောင်ရန် အရေးကြီးသည်။
+### သစ်တော စီမံခန့်ခွဲမှု
-### သစ်တောစီမံခန့်ခွဲမှု
+သင်သည် ယခင်သင်ခန်းစာများတွင် [ထပ်မံလေ့လာမှု](../../8-Reinforcement/README.md) ကို လေ့လာခဲ့သည်။ သဘာဝအတွင်း နမူနာခန္ဓာ့လမ်းညွန်များ ခန့်မှန်းရာတွင် အထူးအသုံးဝင်သည်။ အထူးသဖြင့် သစ်တောမီးလောင်မှုများနှင့် အန္တရာယ်ရှိသော အသဉ်းဖွင့်ပိုးများ ပြန့်ပွားမှုတို့ကို စောင့်ကြည့်နိုင်သည်။ ကနေဒါတွင် သုတေသနဆိုင်ရာအဖွဲ့တစ်ခုက Reinforcement Learning ကို လေကြောင်းဓာတ်ပုံပေါ်မှ သစ်တောမီးလောင်မှုမော်ဒယ်များ ဖန်တီးရန် အသုံးပြုခဲ့သည်။ "spatially spreading process (SSP)" ဟု ခေါ်သော ပြုပြင်မှုတစ်ခုဖြင့် သစ်တောမီးလုံးကို သဘာဝအတိုင်း ဇယားတစ်ခု၏ ဆဲလ်တစ်ခုအတွက် ဆိုင်ရာ အေးဂျင့်အဖြစ် ဖော်ပြထားသည်။ "မီးလောင်မှုသည် အချိန်အမျိုးမျိုးတွင် မြောက်၊ တောင်၊ အရှေ့၊ အغربသို့ ပြန့်ပွားမှု သို့မဟုတ် မပြန့်ပွားမှု ပြုနိုင်ပါသည်။"
-သင်သည် [Reinforcement Learning](../../8-Reinforcement/README.md) ကို ယခင်သင်ခန်းစာများတွင်လေ့လာခဲ့ပါသည်။ သဘာဝတွင် pattern များကိုခန့်မှန်းရန် အလွန်အသုံးဝင်သည်။ အထူးသဖြင့် သစ်တောမီးလောင်မှုများနှင့် invasive species များပျံ့နှံ့မှုကဲ့သို့သော ecological ပြဿနာများကို tracking လုပ်ရန် အသုံးပြုနိုင်သည်။ ကနေဒါတွင် သုတေသနလုပ်ငန်းတစ်ခုသည် satellite images ကိုအသုံးပြု၍ forest wildfire dynamics models များကို reinforcement learning ဖြင့်တည်ဆောက်ခဲ့သည်။
+ဤနည်းလမ်းသည် ဓါတ်ပုံသွက်နယ်ပယ်၏ Markov Decision Process (MDP) တန်ဖိုးသိရှိမှုစနစ်အား လုံးဝ ပြောင်းလဲမည်ဖြစ်သည်။ ဤအဖွဲ့မော်ဒယ်များ၏ ရိုးရာအယ်လဂိုရီသည်မျှကို အောက်ပါ လင့်ခ်တွင် ဖတ်ရှုနိုင်သည်။
[Reference](https://www.frontiersin.org/articles/10.3389/fict.2018.00006/full)
-### တိရစ္ဆာန်များ၏လှုပ်ရှားမှုကိုစစ်ဆေးခြင်း
+### သတ္တဝါများ၏ လှုပ်ရှားမှု ချိတ်ဆက်မှု
-Deep learning သည် တိရစ္ဆာန်လှုပ်ရှားမှုများကို visually tracking လုပ်ရန် revolution တစ်ခုဖန်တီးခဲ့သော်လည်း classic ML သည် ဒီအလုပ်တွင် အရေးပါနေဆဲဖြစ်သည်။
+အမြင့်ပြင်းထန်သော နည်းပညာဖြစ်သည့် deep learning က သတ္တဝါလှုပ်ရှားမှုကို ထိရောက်စွာ စောင့်ကြည့်ခြင်း ရလဒ် ပြောင်းလဲမှု တစ်ခု ဖြစ်လာခဲ့သည် (သင့်ကိုယ်ပိုင် [polar bear tracker](https://docs.microsoft.com/learn/modules/build-ml-model-with-azure-stream-analytics/?WT.mc_id=academic-77952-leestott) တည်ဆောက်နိုင်သည်)။ သို့သော် ရိုးရိုးစက်သင်ယူမှုလည်း ဤလုပ်ငန်းတွင် အသုံးဖြစ်နေဆဲ ဖြစ်သည်။
-Farm animals များ၏လှုပ်ရှားမှုများကို tracking လုပ်ရန် sensor များနှင့် IoT ကိုအသုံးပြုသော်လည်း data ကို preprocess လုပ်ရန် basic ML techniques များကိုအသုံးပြုသည်။ ဥပမာ - ဒီစာတမ်းတွင် classifier algorithms များကိုအသုံးပြု၍ သိုးများ၏ posture များကိုစစ်ဆေးခဲ့သည်။
+မိုးမွှမ်းသတ္တဝါလှုပ်ရှားမှုများစောင့်ကြည့်ရန် ဆင်ဆာများနှင့် IoT မှာ ဤအမျိုးအစား တွေ့မြင်မှု ပြုလုပ်မှုကို အသုံးပြုကြပြီး ဒေတာ မတည့်မှုများကို အထူး ML နည်းပညာဖြင့် ကြိုတင် စစ်ဆေးကြသည်။ ဥပမာအားဖြင့်၊ ဤစာတမ်းတွင် ဆိတ်လေးများ၏ ခန္ဓာကိုယ်အနေအထားများကို အတန်းခွဲစနစ်များဖြင့် စောင့်ကြည့် စစ်ဆေးခဲ့သည်။ စာမျက်နှာ ၃၃၅ တွင် ROC ကွက်ကို သင် မှတ်မိနိုင်ပါသည်။
[Reference](https://druckhaus-hofmann.de/gallery/31-wj-feb-2020.pdf)
-### ⚡️ စွမ်းအင်စီမံခန့်ခွဲမှု
-
-[time series forecasting](../../7-TimeSeries/README.md) သင်ခန်းစာများတွင် supply နှင့် demand ကိုနားလည်ခြင်းအပေါ်အခြေခံပြီး smart parking meters ကို revenue ရရှိရန်အသုံးပြုခဲ့သည်။ ဒီ article တွင် clustering, regression နှင့် time series forecasting ကိုပေါင်းစပ်ပြီး smart metering အပေါ်အခြေခံ၍ အနာဂတ်စွမ်းအင်အသုံးပြုမှုကိုခန့်မှန်းခဲ့သည်။
+### ⚡️ စွမ်းအင် စီမံခန့်ခွဲမှု
+
+ကျွန်ုပ်တို့၏ [အချိန်စီးရီး ခန့်မှန်းချက်](../../7-TimeSeries/README.md) သင်ခန်းစာတွင် မြို့တော်အတွက် နေရပ်ဒေသများ စီမံခန့်ခွဲမှုအတွက် smart parking meters ကို အသုံးပြုပြီး ထွက်ကုန်နှင့် တောင်းဆိုမှုကို ပြန်လည်နားထောင်ခြင်းရေးထားသည်။ ဤဆောင်းပါးမှာ ไอร์แลนด์နိုင်ငံ၏ စမတ်မီတာအခြေပြု စွမ်းအင်သုံးစားမှု ခန့်မှန်းခြင်းအား အေစုအဝေးခွဲခြားမှု၊ စတယ်လ့်နှင့် အချိန်စီးရီးချိန်ခန့်မှန်းမှုတို့ပေါင်းစပ်သုံးစွဲမှုကို အသေးစိတ် ဆွေးနွေးထားသည်။
[Reference](https://www-cdn.knime.com/sites/default/files/inline-images/knime_bigdata_energy_timeseries_whitepaper.pdf)
## 💼 အာမခံ
-အာမခံကဏ္ဍသည် ML ကိုအသုံးပြု၍ financial နှင့် actuarial models များကိုတည်ဆောက်ခြင်းနှင့် optimize လုပ်ခြင်းအတွက် အသုံးပြုသည်။
+အာမခံကဏ္ဍသည် စီးပွားရေးနှင့် အာမခံဆိုင်ရာ မော်ဒယ်များကို တည်ဆောက်၍ အဆင်ပြေစွာ စီမံခန့်ခွဲရန် စက်သင်ယူမှုကို အသုံးပြုသည်။
-### Volatility Management
+### ကွာခြားမှု စီမံခန့်ခွဲမှု
-MetLife သည် life insurance provider တစ်ခုဖြစ်ပြီး သူတို့ financial models တွင် volatility ကိုဘယ်လိုခန့်မှန်းပြီး လျှော့ချကြောင်းကို ဖော်ပြထားသည်။ ဒီ article တွင် binary နှင့် ordinal classification visualizations များကိုတွေ့နိုင်သည်။
+MetLife အာမခံကုမ္ပဏီသည် ငွေကြေးမော်ဒယ်များတွင် ကွာခြားမှုများကို စိစစ်ပြီး လျှော့ချပေးမှု နည်းလမ်းများကို ဖော်ပြထားသည်။ ဤဆောင်းပါးတွင်ဒစ်ဂျစ်တယ်နှင့် စာရင်းဗေဒအတန်းခွဲရေး မျှဝေမှုများကို တွေ့မြင်ရမည်ဖြစ်ပြီး ခန့်မှန်းချက် ပြသမှုများပါရှိသည်။
[Reference](https://investments.metlife.com/content/dam/metlifecom/us/investments/insights/research-topics/macro-strategy/pdf/MetLifeInvestmentManagement_MachineLearnedRanking_070920.pdf)
-## 🎨 အနုပညာ၊ ယဉ်ကျေးမှုနှင့်စာပေ
+## 🎨 အနုပညာ၊ ယဉ်ကျေးမှုနှင့် စာပေ
+
+အနုပညာတွင် ဥပမာအားဖြင့် သတင်းစာထုတ်လုပ်ရေးကဲ့သို့ လိမ်လည်သတင္းတွေ့၇ၣ်ကိစ္စ làအဓိက ဖြစ်သည်၊ ၎င်းသည် လူ့မြတ်နိုးစိတ်ကို ထိခိုက်ပြီး ဒီမိုကရေစီ များစုစည်းနိုင။ ပြတိုက်များသည် မူရင်းပစ္စည်းများနှင့် ယှဉ်၍ အရင်းအမြစ်စီမံခန့်ခွဲမှုအထိ အဓိက အကျိုးရှိစေရန် အထောက်အကူပြုသည်။
+
+### လိမ်လည်သတင်းစစ်ဆေးခြင်း
+
+လိမ်လည်သတင်းစစ်ဆေးခြင်းသည် ယနေ့မီဒီယာ၌ ကြိုးစားလျက်ရှိသော အပြိုင်အဆိုင်ကစားခြင်း တစ်ခုဖြစ်လာသည်။ ဤဆောင်းပါးတွင် သုတေသနကျွမ်းကျင်သူများက ကျွန်ုပ်တို့ လေ့လာခဲ့သော စက်သင်ယူမှုနည်းပညာများစွာ ပေါင်းစပ်သုံးစွဲသော စနစ်တစ်ခုစမ်းသပ်ပြီး အကောင်းဆုံး မော်ဒယ်ကို စမ်းသပ်၍ တပ်ဆင်ကြောင်း ချဉ်းကပ်သည်။ "ဤစနစ်သည် သဘာဝဘာသာစကား ပြန်လည်သုံးသပ်မှု ရှိ၍ ဒေတာမှ လက္ခဏာများကိုထုတ်ယူပြီး၊ Naive Bayes, Support Vector Machine (SVM), Random Forest (RF), Stochastic Gradient Descent (SGD), Logistic Regression(LR) ကဲ့သို့ စက်သင်ယူမှု အတန်းခွဲစနစ်များ လေ့ကျင့်ရန် သုံးသည်။"
+[Reference](https://www.irjet.net/archives/V7/i6/IRJET-V7I6688.pdf)
+
+ဤဆောင်းပါးသည် စက်သင်ယူမှု နယ်ပယ်များစွာ ပေါင်းစပ်ခြင်းဖြင့် လက်တွေ့ကောင်းမွန်သည့် ရလဒ်များထုတ်ပေးနိုင်ပြီး လိမ်လည်သတင်းများ ပြန့်ပွားမှု နှင့် စိုးရိမ်ရသော ပျက်စီးမှုများ အောင်မလုပ်စေရန် ကူညီနိုင်ကြောင်းပြသည်။ ဤအမှုတွင် COVID ကုသမှုများအကြောင်း လျှို့ဝှက်ချက်များ ပြန့်ပွား၍ လူဦးရေ ဆူပူမှု ဖြစ်ခဲ့သည်။
+
+### ပြတိုက်တွင် စက်သင်ယူမှု
+
+ပြတိုက်များသည် AI တိုးတက်နေသည့်အချိန် လူ့ဒီဂျစ်တယ်များနှင့် စုပေါင်းရန်နှင့် မူရင်းသက်တမ်းစာရွက်စာတမ်းများမှ တွဲချိတ်မှုများ ရှာဖွေရန် လွယ်ကူပြီဖြစ်လာသည်။ [In Codice Ratio](https://www.sciencedirect.com/science/article/abs/pii/S0306457321001035#:~:text=1.,studies%20over%20large%20historical%20sources.) ကဲ့သို့သော ပရောဂျက်များသည် ဗာတီကန်စာရွက်စာတမ်းများ ပိတ်ထားခြင်းကို ဖြေရှင်းရာတွင် ကူညီနေသည်။ ပြတိုက်စီးပွားရေးအပိုင်းမှာလည်း စက်သင်ယူမှု မော်ဒယ်များက ကူညီနေသည်။
+
+ဥပမာအားဖြင့် Chicago အနုပညာအဖွဲ့အစည်းသည် ပရိသတ်တို့စိတ်ဝင်စားမှုများကို ခန့်မှန်းပြီး ပြပွဲများအတွက် ဘယ်တော့တက်ရောက်မည်ကို ခန့်မှန်းသည့် မော်ဒယ်တွေ ဖန်တီးခဲ့သည်။ ရည်ရွယ်ချက်မှာ သုံးစွဲသူတိုင်း ပြတိုက်သို့တက်ရောက်သည့်အခါ ပုဂ္ဂိုလ်ရေးနှင့် ထိရောက်သည့် ခရီးစဉ်ဖန်တီးခြင်းဖြစ်သည်။ "2017 ဘဏ္ဍာရေးနှစ်အတွင်း ထိုမော်ဒယ်သည် တက်ရောက်မှုနှင့် ဝင်ခွင့် ခန့်မှန်းချက်အား ၁ ရာခိုင်နှုန်း အစီအစဉ်အတိုင်း တိကျစွာ ခန့်မှန်းနိုင်ခဲ့ဟု Andrew Simnick၊ Art Institute ၏ ဒီဂရီအဆင့်မြင့် ဥက္ကဋ္ဌ ပြောသည်။"
+[Reference](https://www.chicagobusiness.com/article/20180518/ISSUE01/180519840/art-institute-of-chicago-uses-data-to-make-exhibit-choices)
+
+## 🏷 စျေးကွက်ရှာဖွေရေး
+
+### ဖောက်သည်အုပ်စု ခွဲခြားခြင်း
+
+အကောင်းဆုံးစျေးကွက်ရှာဖွေရေး သတ္တိစနစ်များသည် ဖောက်သည်များကို အုပ်စုအလိုက် မတူညီသည့် နည်းလမ်းဖြင့်ရည်ရွယ်သည်။ ဤဆောင်းပါးမှာ အစုအဝေးခွဲခြားမှုအယ်လဂိုရီသည်များကို အသုံးပြုကာ ခွဲခြားထားသောစျေးကွက်ရှာဖွေရေးကို ထောက်ပံ့သည်။ ခွဲခြားထားသော စျေးကွက်ရှာဖွေရေးသည် ကုမ္ပဏီများအား အမှတ်တံဆိပ် အသိအမှတ်ပြုမှုတိုးတက်ခြင်း၊ ဖောက်သည်များပိုမိုရောက်ရှိနိုင်ခြင်းနှင့် အမြတ်ပိုများစေရန် ကူညီပေးသည်။
+[Reference](https://ai.inqline.com/machine-learning-for-marketing-customer-segmentation/)
+
+## 🚀 စိန်ခေါ်မှု
-အနုပညာတွင် ဥပမာ - သတင်းစာပညာတွင် စိတ်ဝင်စားဖွယ်ရာပြဿနာများစွာရှိသည်။ Fake news ကိုရှာဖွေခြင်းသည် လူများ၏အမြင်ကိုသက်ရောက်စေခြင်းနှင့် ဒီမိုကရေစီများကိုတုန်လှုပ်စေခြင်းအထိ သက်ရောက်မှုရှိသည်ဟု သက်သေပြထားသည်။ ပြတိုက်များသည် artifacts များအကြားဆက်စပ်မှုများကိုရှာဖွေခြင်းမှစ၍ resource planning အထိ ML ကိုအသုံးပြုနိုင်သည်။
+ဤ သင်ခန်းစာတွင် သင်ယူခဲ့သော နည်းလမ်းများအချို့ကို အသုံးပြုသော နယ်ပယ်အသစ်တစ်ခုကို ရှာဖွေပြီး၊ စက်သင်ယူမှု မည်သို့ အသုံးချနေသည်ကို ရှာဖွေပါ။
-### Fake news detection
-Fake news ကိုရှာဖွေခြင်းသည် ယနေ့မီဒီယာတွင် ကြောင်နှင့်ကြွက်ကစားပွဲတစ်ခုဖြစ်လာသည်။ ဒီ article တွင် သုတေသနလုပ်ငန်းများက ML techniques များစွာကိုပေါင်းစပ်ပြီး အကောင်းဆုံးမော်ဒယ်ကို deploy လုပ်နိုင်ကြောင်းကိုဖော်ပြထားသည်။ "ဒီစနစ်သည် data မှ features များကို extract လုပ်ရန် natural language processing ကို
-## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ml/)
+## [စာသင်ပြီးနောက် စစ်တမ်း](https://ff-quizzes.netlify.app/en/ml/)
-## ပြန်လည်သုံးသပ်ခြင်းနှင့် ကိုယ်တိုင်လေ့လာခြင်း
+## ပြန်လည်စစ်ဆေးခြင်းနှင့် ကိုယ့်ကိုယ်ကိုလေ့လာမှု
-Wayfair ရဲ့ ဒေတာသိပ္ပံအဖွဲ့က ML ကို သူတို့ကုမ္ပဏီမှာ ဘယ်လိုအသုံးပြုတယ်ဆိုတာနဲ့ပတ်သက်ပြီး စိတ်ဝင်စားဖွယ်ဗီဒီယိုများစွာရှိပါတယ်။ [ကြည့်ရှုဖို့](https://www.youtube.com/channel/UCe2PjkQXqOuwkW1gw6Ameuw/videos) တန်ပါတယ်!
+Wayfair ဒေတာသိပ္ပံအဖွဲ့က သူတို့ကုမ္ပဏီမှာ ML ကို ဘယ်လိုအသုံးပြုနေတယ်ဆိုတာကို စိတ်ဝင်စားဖွယ် ရုပ်သံများ အများကြီးရှိပါတယ်။ [ကြည့်ရှုဖို့](https://www.youtube.com/channel/UCe2PjkQXqOuwkW1gw6Ameuw/videos) တစ်ကြိမ်လောက် သတိပြုဖို့တန်ပါပြီ!
-## လုပ်ငန်းတာဝန်
+## အလုပ်အမှု
-[A ML scavenger hunt](assignment.md)
+[ML ရှာဖွေခြင်း အားဖြည့်လုပ်ငန်း](assignment.md)
---
-**ဝက်ဘ်ဆိုက်မှတ်ချက်**:
-ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးစားနေပါသော်လည်း၊ အလိုအလျောက်ဘာသာပြန်ဆိုမှုများတွင် အမှားများ သို့မဟုတ် မတိကျမှုများ ပါဝင်နိုင်သည်ကို ကျေးဇူးပြု၍ သတိပြုပါ။ မူရင်းဘာသာစကားဖြင့် ရေးသားထားသော စာရွက်စာတမ်းကို အာဏာတည်သော ရင်းမြစ်အဖြစ် သတ်မှတ်သင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူပညာရှင်များမှ ဘာသာပြန်ဆိုမှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်ဆိုမှုကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော နားလည်မှုမှားမှုများ သို့မဟုတ် အဓိပ္ပာယ်မှားမှုများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။
\ No newline at end of file
+
+**ပြောကြားချက်**
+ဤစာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးပမ်းနေသော်လည်း၊ စက်ကိရိယာဘာသာပြန်ခြင်းများတွင် အမှားများ သို့မဟုတ် မှားယွင်းချက်များ ပါဝင်နိုင်ကြောင်း သတိပြုပါရန် လိုအပ်ပါသည်။ မူလစာတမ်းကို မူရင်းဘာသာဖြင့်သာ ယုံကြည်စိတ်ချရသော အချက်အလက်အဖြစ် သတ်မှတ်သင့်သည်။ အရေးကြီးသည့် သတင်းအချက်အလက်များအတွက် ပရော်ဖက်ရှင်နယ် လူသားဘာသာပြန်သူဝန်ဆောင်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်ချက်ကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော နားလည်မှုကွာခြားမှုများ သို့မဟုတ် မမှန်ကန်သော အသုံးပြုမှုများအတွက် ကျွန်ုပ်တို့ တာဝန်မခံပါ။
+
\ No newline at end of file
diff --git a/translations/ne/.co-op-translator.json b/translations/ne/.co-op-translator.json
index b6488f994..5cd38ec33 100644
--- a/translations/ne/.co-op-translator.json
+++ b/translations/ne/.co-op-translator.json
@@ -24,8 +24,8 @@
"language_code": "ne"
},
"1-Introduction/3-fairness/README.md": {
- "original_hash": "9a6b702d1437c0467e3c5c28d763dac2",
- "translation_date": "2025-09-06T06:33:11+00:00",
+ "original_hash": "0f00d72169a0d37eecfd16d71e01700a",
+ "translation_date": "2026-07-14T02:29:09+00:00",
"source_file": "1-Introduction/3-fairness/README.md",
"language_code": "ne"
},
@@ -54,8 +54,8 @@
"language_code": "ne"
},
"2-Regression/1-Tools/README.md": {
- "original_hash": "fa81d226c71d5af7a2cade31c1c92b88",
- "translation_date": "2025-09-06T06:26:57+00:00",
+ "original_hash": "0b8635427b582d03ea4ab7089b93e505",
+ "translation_date": "2026-07-14T02:25:00+00:00",
"source_file": "2-Regression/1-Tools/README.md",
"language_code": "ne"
},
@@ -72,8 +72,8 @@
"language_code": "ne"
},
"2-Regression/2-Data/README.md": {
- "original_hash": "7c077988328ebfe33b24d07945f16eca",
- "translation_date": "2025-09-06T06:27:36+00:00",
+ "original_hash": "a58b2c4d16c6b122643391745ac15af6",
+ "translation_date": "2026-07-14T02:26:00+00:00",
"source_file": "2-Regression/2-Data/README.md",
"language_code": "ne"
},
@@ -89,6 +89,12 @@
"source_file": "2-Regression/2-Data/solution/Julia/README.md",
"language_code": "ne"
},
+ "2-Regression/2-Data/solution/notebook.ipynb": {
+ "original_hash": "96b95f8cf473481f2f371de8156f1571",
+ "translation_date": "2026-07-14T02:02:38+00:00",
+ "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
+ "language_code": "ne"
+ },
"2-Regression/3-Linear/README.md": {
"original_hash": "8b776e731c35b171d316d01d0e7b1369",
"translation_date": "2026-04-26T19:59:44+00:00",
@@ -457,7 +463,7 @@
},
"8-Reinforcement/1-QLearning/README.md": {
"original_hash": "911efd5e595089000cb3c16fce1beab8",
- "translation_date": "2025-09-06T06:39:07+00:00",
+ "translation_date": "2026-07-14T02:27:05+00:00",
"source_file": "8-Reinforcement/1-QLearning/README.md",
"language_code": "ne"
},
@@ -481,7 +487,7 @@
},
"8-Reinforcement/2-Gym/README.md": {
"original_hash": "107d5bb29da8a562e7ae72262d251a75",
- "translation_date": "2025-09-06T06:39:45+00:00",
+ "translation_date": "2026-07-14T02:28:12+00:00",
"source_file": "8-Reinforcement/2-Gym/README.md",
"language_code": "ne"
},
@@ -523,7 +529,7 @@
},
"9-Real-World/2-Debugging-ML-Models/README.md": {
"original_hash": "df2b538e8fbb3e91cf0419ae2f858675",
- "translation_date": "2025-09-06T06:32:19+00:00",
+ "translation_date": "2026-07-14T02:30:12+00:00",
"source_file": "9-Real-World/2-Debugging-ML-Models/README.md",
"language_code": "ne"
},
@@ -581,6 +587,19 @@
"source_file": "TROUBLESHOOTING.md",
"language_code": "ne"
},
+ "__translation_failures__": {
+ "sketchnotes/LICENSE.md": {
+ "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f",
+ "source_file": "sketchnotes/LICENSE.md",
+ "language_code": "ne",
+ "failure_date": "2026-07-14T02:23:55+00:00",
+ "status": "failed",
+ "error_type": "TranslationIncompleteError",
+ "error_message": "Markdown translation remained incomplete for chunk 1.1.1 of 'LICENSE.md', and the chunk could not be split further.",
+ "translator_version": "0.20.0",
+ "failure_policy_version": 1
+ }
+ },
"docs/_sidebar.md": {
"original_hash": "68dd06c685f6ce840e0acfa313352e7c",
"translation_date": "2025-08-29T17:19:30+00:00",
diff --git a/translations/ne/1-Introduction/3-fairness/README.md b/translations/ne/1-Introduction/3-fairness/README.md
index 40d193ddf..80d0e0214 100644
--- a/translations/ne/1-Introduction/3-fairness/README.md
+++ b/translations/ne/1-Introduction/3-fairness/README.md
@@ -1,153 +1,167 @@
-# जिम्मेवार AI को साथमा मेसिन लर्निङ समाधान निर्माण गर्नुहोस्
-
-
-> स्केच नोट [Tomomi Imura](https://www.twitter.com/girlie_mac) द्वारा
+# जिम्मेवार AI सँग मेशिन लर्निङ समाधानहरू निर्माण गर्दै
+
+
+> स्केचनोट द्वारा [टोमोमी इमुरा](https://www.twitter.com/girlie_mac)
## [पाठ अघि क्विज](https://ff-quizzes.netlify.app/en/ml/)
-
+
## परिचय
-यस पाठ्यक्रममा, तपाईंले मेसिन लर्निङले कसरी हाम्रो दैनिक जीवनलाई प्रभाव पार्दैछ भन्ने कुरा पत्ता लगाउन सुरु गर्नुहुनेछ। अहिले पनि, प्रणालीहरू र मोडेलहरू स्वास्थ्य सेवा निदान, ऋण स्वीकृति, वा ठगी पत्ता लगाउने जस्ता दैनिक निर्णय गर्ने कार्यहरूमा संलग्न छन्। त्यसैले, यी मोडेलहरूले विश्वासयोग्य परिणामहरू प्रदान गर्न राम्रोसँग काम गर्नु महत्त्वपूर्ण छ। कुनै पनि सफ्टवेयर अनुप्रयोग जस्तै, AI प्रणालीहरूले अपेक्षाहरू पूरा गर्न नसक्न सक्छन् वा अवांछित परिणाम दिन सक्छन्। यही कारणले AI मोडेलको व्यवहारलाई बुझ्न र व्याख्या गर्न सक्षम हुनु आवश्यक छ।
+यस पाठ्यक्रममा, तपाईं मेशिन लर्निङले कसरी हाम्रो दैनिक जीवनलाई प्रभाव पारिरहेको छ र पार्नेछ भन्ने कुरा पत्ता लगाउन थाल्नुहुनेछ। अहिले पनि, प्रणालीहरू र मोडेलहरू दैनिक निर्णय-प्रक्रियामा संलग्न छन्, जस्तै स्वास्थ्य सेवाको रोग निदान, ऋण स्वीकृति वा ठगी पत्ता लगाउनु। त्यसैले, यी मोडेलहरूले भरपर्दो परिणाम प्रदान गर्न राम्रोसँग काम गर्नु आवश्यक छ। जस्तो कुनै सफ्टवेयर एप्लिकेशन, AI प्रणालीहरूले अपेक्षा पुरा गर्न नसक्न सक्छन् वा अवाञ्छित परिणाम दिन सक्छन्। त्यसैले AI मोडेलको व्यवहार बुझ्न र व्याख्या गर्न सक्षम हुनु आवश्यक छ।
-कल्पना गर्नुहोस् कि तपाईंले यी मोडेलहरू निर्माण गर्न प्रयोग गर्ने डाटामा जात, लिङ्ग, राजनीतिक दृष्टिकोण, धर्म जस्ता जनसांख्यिकीय तत्वहरू अभाव छन् वा ती जनसांख्यिकीय तत्वहरू असमान रूपमा प्रतिनिधित्व गरिएका छन् भने के हुन्छ। मोडेलको परिणामले कुनै जनसांख्यिकीयलाई प्राथमिकता दिएको रूपमा व्याख्या गरिन्छ भने के हुन्छ? अनुप्रयोगको लागि परिणाम के हो? साथै, मोडेलले हानिकारक परिणाम दिन्छ भने के हुन्छ? AI प्रणालीको व्यवहारको लागि को जिम्मेवार छ? यी केही प्रश्नहरू हामी यस पाठ्यक्रममा अन्वेषण गर्नेछौं।
+कल्पना गर्नुहोस् कि तपाईंले यी मोडेलहरू बनाउन प्रयोग गर्ने डेटा केही जनसांख्यिकी, जस्तै जाति, लिंग, राजनीतिक दृष्टिकोण, धर्म, वा यस्ता जनसांख्यिकीमा असमान प्रतिनिधित्व गरेको अवस्था कस्तो हुन्छ। जब मोडेलको नतिजा केही जनसांख्यिकीलाई पक्षपात गरेको व्याख्या गरिन्छ भने के हुन्छ? अनुप्रयोगका लागि यसको के परिणाम होला? थपमा, जब मोडेलले हानिकारक परिणाम दिन्छ र मानिसहरूलाई नोक्सान पुर्याउँछ भने के हुन्छ? AI प्रणालीको व्यवहारका लागि को जिम्मेवार हुन्छ? यी केही प्रश्नहरू हामी यस पाठ्यक्रममा अन्वेषण गर्नेछौं।
यस पाठमा, तपाईं:
-- मेसिन लर्निङमा निष्पक्षताको महत्त्व र निष्पक्षता सम्बन्धी हानिहरूको बारेमा सचेत हुनुहुनेछ।
-- असामान्य परिदृश्यहरू अन्वेषण गर्ने अभ्याससँग परिचित हुनुहुनेछ ताकि विश्वसनीयता र सुरक्षा सुनिश्चित गर्न सकियोस्।
-- समावेशी प्रणालीहरू डिजाइन गरेर सबैलाई सशक्त बनाउने आवश्यकता बुझ्नुहुनेछ।
-- डाटा र व्यक्तिहरूको गोपनीयता र सुरक्षाको रक्षा गर्न कति महत्त्वपूर्ण छ भन्ने कुरा अन्वेषण गर्नुहुनेछ।
-- AI मोडेलहरूको व्यवहार व्याख्या गर्न "ग्लास बक्स" दृष्टिकोणको महत्त्व देख्नुहुनेछ।
-- AI प्रणालीहरूमा विश्वास निर्माण गर्न जिम्मेवारी कति आवश्यक छ भन्ने कुरा ध्यान दिनुहुनेछ।
+- मेशिन लर्निङमा निष्पक्षताको महत्त्व र निष्पक्षता सम्बन्धी हानिहरूको बारेमा जागरुकता बढाउनुहोस्।
+- विश्वसनीयता र सुरक्षा सुनिश्चित गर्न आउट्लायर्स र अस्वाभाविक परिस्थितिहरू अन्वेषण गर्ने अभ्याससँग परिचित हुनुहोस्।
+- सबैलाई समावेशी प्रणालीहरू डिजाइन गरेर सशक्त पार्ने जरुरतमा बुझाइ हासिल गर्नुहोस्।
+- डेटा र मानिसहरूको गोप्यता र सुरक्षा संरक्षण गर्न कति महत्त्वपूर्ण छ अन्वेषण गर्नुहोस्।
+- AI मोडेलहरूको व्यवहार व्याख्या गर्न गिलास बक्स दृष्टिकोणको महत्त्व देख्नुहोस्।
+- AI प्रणालीहरूमा विश्वास निर्माण गर्न जिम्मेवारी हुनु आवश्यक कुरा मनन गर्नुहोस्।
-## पूर्वआवश्यकता
+## पूर्वापेक्षा
-पूर्वआवश्यकताका रूपमा, कृपया "जिम्मेवार AI सिद्धान्तहरू" सिक्ने मार्ग लिनुहोस् र तलको भिडियो हेर्नुहोस्:
+पूर्वापेक्षाका रूपमा कृपया "जिम्मेवार AI सिद्धान्तहरू" सिक्ने मार्ग लिनुहोस् र तलको भिडियो हेर्नुहोस्:
-जिम्मेवार AI को बारेमा थप जान्नका लागि यो [सिक्ने मार्ग](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) अनुसरण गर्नुहोस्।
+जिम्मेवार AI बारे थप जान्न यो [सिकाइ मार्ग](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) पछ्याउनुहोस्।
-[](https://youtu.be/dnC8-uUZXSc "Microsoft को जिम्मेवार AI को दृष्टिकोण")
+[](https://youtu.be/dnC8-uUZXSc "Microsoftको जिम्मेवार AI दृष्टिकोण")
-> 🎥 माथिको छवि क्लिक गर्नुहोस्: Microsoft को जिम्मेवार AI को दृष्टिकोण
+> 🎥 माथि तस्बिरमा क्लिक गर्नुहोस् भिडियोको लागि: Microsoftको जिम्मेवार AI दृष्टिकोण
## निष्पक्षता
-AI प्रणालीहरूले सबैलाई निष्पक्ष रूपमा व्यवहार गर्नुपर्छ र समान समूहका व्यक्तिहरूलाई फरक तरिकाले असर गर्नबाट बच्नुपर्छ। उदाहरणका लागि, जब AI प्रणालीहरूले चिकित्सा उपचार, ऋण आवेदन, वा रोजगारको सन्दर्भमा मार्गदर्शन प्रदान गर्छन्, तिनीहरूले समान लक्षण, वित्तीय अवस्था, वा व्यावसायिक योग्यता भएका सबैलाई समान सिफारिसहरू दिनुपर्छ। हामी प्रत्येक मानिसले हाम्रो निर्णय र कार्यहरूलाई प्रभावित गर्ने पूर्वाग्रहहरू बोक्छौं। यी पूर्वाग्रहहरू हामीले AI प्रणालीहरूलाई प्रशिक्षण दिन प्रयोग गर्ने डाटामा देखिन सक्छ। यस्तो हेरफेर कहिलेकाहीँ अनजानेमा हुन सक्छ। डाटामा पूर्वाग्रह परिचय गराउँदा तपाईं सचेत रूपमा थाहा पाउन कठिन हुन सक्छ।
+AI प्रणालीहरूले सबैलाई निष्पक्ष व्यवहार गर्नुपर्छ र समान समूहका मानिसहरूलाई फरक तरिकाले प्रभावित गर्नु हुँदैन। उदाहरणका लागि, जब AI प्रणालीहरूले चिकित्सा उपचार, ऋण आवेदन वा रोजगारमा मार्गनिर्देशन प्रदान गर्छन्, तिनीहरूले समान लक्षण, आर्थिक अवस्था वा व्यावसायिक योग्यताहरू भएका सबैलाई समान सिफारिश गर्नुपर्छ। हामी सबै मान्छेले आफ्नो निर्णय र कार्यहरूमा असर गर्ने पूर्वाग्रहहरू बोकेर हिँड्छौं। यी पूर्वाग्रहहरू कहिलेकाहीँ अनायासै डेटा मार्फत AI प्रणालीहरूलाई प्रभाव पार्न सक्छ। जब तपाई डेटा भित्र पूर्वाग्रह ल्याउँदै हुनुहुन्छ भन्ने कुरा सचेत रूपले जान्न गाह्रो हुन्छ।
-**"असमानता"**ले एक समूहका व्यक्तिहरूका लागि नकारात्मक प्रभावहरू वा "हानिहरू" समेट्छ, जस्तै जात, लिङ्ग, उमेर, वा अपाङ्गता स्थितिको सन्दर्भमा परिभाषित। मुख्य निष्पक्षता सम्बन्धी हानिहरूलाई निम्न प्रकारले वर्गीकृत गर्न सकिन्छ:
+**"अनिष्पक्षता"** भन्नाले कुनै समूह जस्तै जाति, लिंग, उमेर वा अपाङ्गताको आधारमा नकारात्मक प्रभाव वा "हानिहरू"लाई जनाउँछ। मुख्य निष्पक्षता सम्बन्धी हानिहरू यस प्रकार वर्गीकरण गर्न सकिन्छ:
-- **आवंटन**, यदि लिङ्ग वा जातीयता उदाहरणका लागि अर्कोको तुलनामा प्राथमिकता दिइन्छ।
-- **सेवाको गुणस्तर**। यदि तपाईंले एक विशिष्ट परिदृश्यको लागि डाटा प्रशिक्षण दिनुभयो तर वास्तविकता धेरै जटिल छ भने, यसले खराब प्रदर्शन गर्ने सेवामा परिणत हुन्छ। उदाहरणका लागि, एउटा हात साबुन डिस्पेन्सरले गाढा छालाका व्यक्तिहरूलाई पहिचान गर्न नसक्ने समस्या। [सन्दर्भ](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
-- **निन्दा**। कुनै कुरा वा कसैलाई अन्यायपूर्ण रूपमा आलोचना र लेबल लगाउनु। उदाहरणका लागि, छविलाई लेबल गर्ने प्रविधिले गाढा छालाका व्यक्तिहरूलाई गोरिल्ला भनेर गलत लेबल लगाएको थियो।
-- **अधिक वा कम प्रतिनिधित्व**। विचार यो हो कि कुनै समूहलाई कुनै पेशामा देखिँदैन, र कुनै पनि सेवा वा कार्यले त्यसलाई निरन्तर प्रवर्द्धन गरिरहन्छ भने त्यो हानिमा योगदान पुर्याउँछ।
-- **रूढिवादी सोच**। कुनै समूहलाई पूर्वनिर्धारित विशेषतासँग जोड्नु। उदाहरणका लागि, अंग्रेजी र टर्किश बीचको भाषा अनुवाद प्रणालीमा लिङ्गसँग रूढिवादी सम्बन्ध भएका शब्दहरूको कारण त्रुटिहरू हुन सक्छ।
+- **वितरण**, उदाहरणका लागि एउटा लिंग वा जाति अर्कोभन्दा बढी पक्षपाती भएमा।
+- **सेवाको गुणस्तर**। यदि तपाईंले एक विशिष्ट परिदृश्यको लागि डेटा प्रशिक्षण गर्नुभयो तर वास्तविकता बढी जटिल छ भने, यो खराब प्रदर्शन गर्ने सेवामा परिणत हुन्छ। उदाहरणका लागि, एउटा हात धुने साबुन डिस्पेन्सरले कालो छालाका मानिसहरूलाई चिन्ह्नेमा असमर्थ थियो। [स्रोत](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
+- **अपमान**। अन्यायपूर्ण रूपमा केही वा कसैलाई आलोचना र लेबल लगाउनु। उदाहरणका लागि, छवि लेबलिङ प्रविधिले कालो छालाका मानिसहरूलाई गोरिल्लाका रूपमा गलत लेबल गरेको थियो।
+- **अधिक वा कम प्रतिनिधित्व**। विचार यो हो कि कुनै समूह विशेष पेशामा देखिन्न, र जसले यस्तो प्रवर्द्धन गर्छ त्यसले हानि पुर्याउँछ।
+- **स्टिरियोटाइपिङ**। कुनै समूहलाई पूर्वनिर्धारित विशेषतासँग जोड्नु। उदाहरणका लागि, अंग्रेजी र टर्किश भाषाको अनुवाद प्रणालीले लिंगसँग सम्बन्धित स्टिरियोटाइपिकल शब्दहरूका कारण गलत अनुवाद गर्न सक्छ।
-
+
> टर्किशमा अनुवाद
-
-> अंग्रेजीमा पुन: अनुवाद
+
+> फेरि अंग्रेजीमा अनुवाद
-AI प्रणालीहरू डिजाइन र परीक्षण गर्दा, हामीले सुनिश्चित गर्नुपर्छ कि AI निष्पक्ष छ र पूर्वाग्रही वा भेदभावपूर्ण निर्णयहरू गर्न प्रोग्राम गरिएको छैन, जुन मानिसहरूलाई पनि गर्न निषेध गरिएको छ। AI र मेसिन लर्निङमा निष्पक्षता सुनिश्चित गर्नु एक जटिल सामाजिक-प्राविधिक चुनौती हो।
+AI प्रणालीहरू डिजाइन र परीक्षण गर्दा, हामीले AI निष्पक्ष हो र पूर्वाग्राही वा भेदभावपूर्ण निर्णयहरू नगर्ने सुनिश्चित गर्नुपर्छ, जुन मानवहरूलाई पनि गर्नु निषेध गरिएको छ। AI र मेशिन लर्निङमा निष्पक्षताको ग्यारेन्टी गर्नु एक जटिल सामाजिक-प्रविधिगत चुनौती हो।
### विश्वसनीयता र सुरक्षा
-विश्वास निर्माण गर्न, AI प्रणालीहरू विश्वसनीय, सुरक्षित, र सामान्य र अप्रत्याशित अवस्थाहरूमा स्थिर हुनुपर्छ। विभिन्न परिस्थितिहरूमा AI प्रणालीहरूको व्यवहार कस्तो हुन्छ भन्ने कुरा जान्न महत्त्वपूर्ण छ, विशेष गरी जब तिनीहरू असामान्य हुन्छन्। AI समाधानहरू निर्माण गर्दा, AI समाधानहरूले सामना गर्ने विभिन्न परिस्थितिहरूलाई कसरी व्यवस्थापन गर्ने भन्ने कुरामा पर्याप्त ध्यान दिन आवश्यक छ। उदाहरणका लागि, एक स्वचालित कारले मानिसहरूको सुरक्षालाई शीर्ष प्राथमिकतामा राख्नुपर्छ। नतिजा स्वरूप, कारलाई शक्ति दिने AI ले रात, आँधीबेहरी, वा हिउँको आँधी, सडकमा दौडिरहेका बच्चाहरू, घरपालुवा जनावरहरू, सडक निर्माणहरू जस्ता सबै सम्भावित परिदृश्यहरू विचार गर्नुपर्छ। AI प्रणालीले विभिन्न अवस्थाहरूलाई विश्वसनीय र सुरक्षित रूपमा कसरी व्यवस्थापन गर्न सक्छ भन्ने कुरा डाटा वैज्ञानिक वा AI विकासकर्ताले प्रणालीको डिजाइन वा परीक्षणको क्रममा कति अनुमान गरेको छ भन्ने स्तरलाई प्रतिबिम्बित गर्दछ।
+विश्वास निर्माण गर्न, AI प्रणालीहरू विश्वसनीय, सुरक्षित र सामान्य तथा अप्रत्याशित अवस्थाहरूमा स्थिर हुनुपर्छ। AI प्रणालीहरूले कसरी विभिन्न परिस्थितिहरूमा व्यवहार गर्ने जानकारी हुनु महत्त्वपूर्ण छ, विशेष गरी जब तिनीहरू आउट्लायर्स हुन्छन्। AI समाधान बनाउँदा, व्यापक प्रकारका अवस्थाहरूलाई कसरी व्यवस्थापन गर्ने भन्ने कुरामा पर्याप्त ध्यान दिनुपर्छ जुन AI समाधानहरू सामना गर्न सक्छन्। उदाहरणका लागि, सेल्फ ड्राइभिङ कारले मानिसहरूको सुरक्षा प्राथमिकता राख्नुपर्छ। जसको परिणामस्वरूप, कारलाई चलाउने AI ले रात, चर्को वर्षा वा हिमपहिरो, सडक पार गर्ने बच्चाहरू, गाई-बिरालो, सडक निर्माण आदि जस्ता सम्भावित अवस्थाहरू विचार गर्नुपर्छ। कसरी AI प्रणालीले विविध अवस्थाहरूलाई विश्वसनीय र सुरक्षित रूपमा व्यवस्थापन गर्न सक्छ भन्ने कुरा डिजाइन वा परीक्षण गर्दा डाटा वैज्ञानिक वा AI विकासकर्ताले कस्तो अपेक्षा गरेका थिए भन्ने देखाउँछ।
-> [🎥 यहाँ क्लिक गर्नुहोस्: भिडियो](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
+> [🎥 भिडियोको लागि यहाँ क्लिक गर्नुहोस्: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
### समावेशिता
-AI प्रणालीहरू सबैलाई संलग्न र सशक्त बनाउन डिजाइन गरिनुपर्छ। AI प्रणालीहरू डिजाइन र कार्यान्वयन गर्दा डाटा वैज्ञानिकहरू र AI विकासकर्ताहरूले प्रणालीमा सम्भावित बाधाहरू पहिचान र सम्बोधन गर्छन् जसले अनजानेमा व्यक्तिहरूलाई बहिष्कृत गर्न सक्छ। उदाहरणका लागि, विश्वभर १ अर्ब अपाङ्गता भएका व्यक्तिहरू छन्। AI को प्रगतिसँगै, उनीहरूले आफ्नो दैनिक जीवनमा जानकारी र अवसरहरूको विस्तृत दायरा सजिलैसँग पहुँच गर्न सक्छन्। बाधाहरूलाई सम्बोधन गरेर, यसले सबैलाई लाभ दिने राम्रो अनुभवहरू भएका AI उत्पादनहरू नवाचार र विकास गर्ने अवसर सिर्जना गर्दछ।
+AI प्रणालीहरूले सबैलाई संलग्न र सशक्त बनाउन डिजाइन गर्नुपर्छ। AI प्रणालीहरू डिजाइन र लागू गर्दा डेटा वैज्ञानिकहरू र AI विकासकर्ताहरूले प्रणालीमा सम्भावित बाधाहरू पत्ता लगाएर समाधान गर्छन् जुन अनायासै मानिसहरूलाई बहिष्कृत गर्न सक्छ। उदाहरणका लागि, विश्वभर एक अर्ब मानिसहरू अपाङ्गता भएका छन्। AI को प्रगतिको साथ, उनीहरूले दैनिक जीवनमा जानकारी र अवसरहरू सजिलै पहुँच गर्न सक्छन्। बाधाहरू समाधान गर्दा सबैका लागि लाभदायक अनुभवहरूसहित AI उत्पादनहरू नवप्रवर्तन गर्न र विकास गर्न अवसरहरू सिर्जना हुन्छन्।
-> [🎥 यहाँ क्लिक गर्नुहोस्: समावेशितामा AI](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
+> [🎥 AI मा समावेशिताको लागि यहाँ क्लिक गर्नुहोस्: ](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
-### सुरक्षा र गोपनीयता
+### सुरक्षा र गोप्यता
-AI प्रणालीहरू सुरक्षित हुनुपर्छ र व्यक्तिहरूको गोपनीयताको सम्मान गर्नुपर्छ। प्रणालीहरूले व्यक्तिको गोपनीयता, जानकारी, वा जीवनलाई जोखिममा राख्छन् भने मानिसहरूले प्रणालीप्रति कम विश्वास गर्छन्। मेसिन लर्निङ मोडेलहरू प्रशिक्षण गर्दा, हामीले उत्कृष्ट परिणामहरू उत्पादन गर्न डाटामा निर्भर गर्दछौं। यसो गर्दा, डाटाको उत्पत्ति र अखण्डता विचार गर्नुपर्छ। उदाहरणका लागि, डाटा प्रयोगकर्ताले प्रस्तुत गरेको हो वा सार्वजनिक रूपमा उपलब्ध छ? त्यसपछि, डाटासँग काम गर्दा, गोपनीय जानकारीको रक्षा गर्न र आक्रमणको प्रतिरोध गर्न सक्ने AI प्रणालीहरू विकास गर्नु महत्त्वपूर्ण छ। AI अधिक व्यापक हुँदै जाँदा, गोपनीयता संरक्षण र महत्त्वपूर्ण व्यक्तिगत र व्यावसायिक जानकारी सुरक्षित राख्न अझ महत्त्वपूर्ण र जटिल हुँदैछ। गोपनीयता र डाटा सुरक्षा मुद्दाहरूले AI को लागि विशेष ध्यान आवश्यक छ किनभने डाटामा पहुँचले AI प्रणालीहरूलाई व्यक्तिहरूको बारेमा सटीक र सूचित भविष्यवाणी र निर्णय गर्न सक्षम बनाउँछ।
+AI प्रणालीहरूले सुरक्षित हुनुपर्छ र मानिसहरूको गोप्यता सम्मान गर्नुपर्छ। मानिसहरूले आफ्ना गोप्यता, जानकारी वा जीवन खतरा पर्ने प्रणालीहरूमा कम विश्वास गर्छन्। मेशिन लर्निङ मोडेलहरू प्रशिक्षण गर्दा, राम्रो परिणाम निकाल्नको लागि डेटा आवश्यक पर्छ। यस क्रममा, डेटाको उत्पत्ति र अखण्डता विचार गर्नुपर्छ। उदाहरणका लागि, डेटा उपयोगकर्ता द्वारा प्रस्तुत गरिएको हो वा सार्वजनिक रूपमा उपलब्ध थियो? त्यसपछि, डेटा प्रयोग गर्दा, गोप्य जानकारीलाई सुरक्षा गर्न र आक्रमणबाट बचाउन सक्षम AI प्रणाली विकास गर्नु जरुरी छ। AI बढ्दै जाँदा, गोप्यता र महत्वपूर्ण व्यक्तिगत तथा व्यवसायिक जानकारीको सुरक्षा बढी महत्वपूर्ण र जटिल हुँदै गएको छ। गोप्यता र डेटा सुरक्षा मुद्दाहरू AI को लागि विशेष ध्यान आवश्यक पार्छन् किनकि AI प्रणालीहरूलाई सटीक र सूचित भविष्यवाणी र निर्णय गर्न डेटामा पहुँच आवश्यक हुन्छ।
-> [🎥 यहाँ क्लिक गर्नुहोस्: AI मा सुरक्षा](https://www.microsoft.com/videoplayer/embed/RE4voJF)
+> [🎥 AI मा सुरक्षा को भिडियोको लागि यहाँ क्लिक गर्नुहोस्: ](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- उद्योगका रूपमा हामीले गोपनीयता र सुरक्षामा महत्त्वपूर्ण प्रगति गरेका छौं, GDPR (General Data Protection Regulation) जस्ता नियमहरूले महत्त्वपूर्ण रूपमा प्रेरित।
-- तर AI प्रणालीहरूसँग हामीले स्वीकार गर्नुपर्छ कि प्रणालीलाई अधिक व्यक्तिगत र प्रभावकारी बनाउन थप व्यक्तिगत डाटाको आवश्यकता र गोपनीयताको बीचमा तनाव छ।
-- इन्टरनेटको साथमा जडित कम्प्युटरहरूको जन्मसँगै, हामी AI सम्बन्धित सुरक्षा मुद्दाहरूको संख्या बढेको देखिरहेका छौं।
-- त्यही समयमा, हामीले सुरक्षा सुधार गर्न AI प्रयोग भएको देखेका छौं। उदाहरणका लागि, अधिकांश आधुनिक एन्टी-भाइरस स्क्यानरहरू आज AI ह्युरिस्टिक्सद्वारा संचालित छन्।
-- हामीले सुनिश्चित गर्नुपर्छ कि हाम्रो डाटा विज्ञान प्रक्रिया नवीनतम गोपनीयता र सुरक्षा अभ्यासहरूसँग सुसंगत रूपमा मिश्रित छ।
+- उद्योगको रूपमा हामीले गोप्यता र सुरक्षा क्षेत्रमा महत्वपूर्ण प्रगति गरेका छौं, जुन GDPR जस्ता नियमहरूले पनि प्रेरित गरेको छ।
+- तर AI प्रणालीहरूको सन्दर्भमा, प्रणालीलाई व्यक्तिगत र प्रभावकारी बनाउनको लागि बढी व्यक्तिगत डेटा आवश्यक पर्दैछ र गोप्यताको बीच तनाव स्वीकार्नुपर्छ।
+- इन्टरनेटसहित जोडिएको कम्प्युटरहरूको जन्म जस्तो, AI सँग सम्बन्धित सुरक्षाका समस्याहरूमा पनि ठूलो वृद्धि हुँदैछ।
+- त्यस्तै, AI ले सुरक्षामा सुधार ल्याउनमा मद्दत गरेको छ। उदाहरणका लागि, अधिकांश आधुनिक एन्टी-भाइरस स्क्यानरहरू आज AI युक्त विधिहरूले चलाउँछन्।
+- हाम्रा डेटा विज्ञान प्रक्रिया नवीनतम गोप्यता र सुरक्षा अभ्यासहरूसँग सुमधुर रूपमा मेल खाने सुनिश्चित गर्न आवश्यक छ।
-### पारदर्शिता
-AI प्रणालीहरू बुझ्न सकिने हुनुपर्छ। पारदर्शिताको एक महत्त्वपूर्ण भाग AI प्रणालीहरूको व्यवहार र तिनीहरूको घटकहरूको व्याख्या गर्नु हो। AI प्रणालीहरूको बुझाइ सुधार गर्नको लागि सरोकारवालाहरूले तिनीहरू कसरी र किन काम गर्छन् भन्ने कुरा बुझ्न आवश्यक छ ताकि तिनीहरूले सम्भावित प्रदर्शन समस्याहरू, सुरक्षा र गोपनीयता चिन्ताहरू, पूर्वाग्रहहरू, बहिष्करण अभ्यासहरू, वा अनपेक्षित परिणामहरू पहिचान गर्न सकून्। हामी विश्वास गर्छौं कि AI प्रणालीहरू प्रयोग गर्नेहरूले तिनीहरूलाई कहिले, किन, र कसरी प्रयोग गर्ने निर्णय लिँदा इमानदार र स्पष्ट हुनुपर्छ। साथै तिनीहरूले प्रयोग गर्ने प्रणालीहरूको सीमाहरू। उदाहरणका लागि, यदि बैंकले उपभोक्ता ऋण निर्णयहरू समर्थन गर्न AI प्रणाली प्रयोग गर्छ भने, परिणामहरूको परीक्षण गर्नु र प्रणालीको सिफारिसहरूलाई प्रभावित गर्ने डाटालाई बुझ्नु महत्त्वपूर्ण छ। सरकारहरूले उद्योगहरूमा AI नियमन गर्न सुरु गरिरहेका छन्, त्यसैले डाटा वैज्ञानिकहरू र संगठनहरूले AI प्रणालीले नियामक आवश्यकताहरू पूरा गर्छ कि गर्दैन भन्ने कुरा व्याख्या गर्नुपर्छ, विशेष गरी जब अवांछित परिणाम हुन्छ।
+### पारदर्शিতা
+AI प्रणालीहरू बुझ्न मिल्ने हुनुपर्छ। पारदर्शिताको महत्त्वपूर्ण अंश भनेको AI प्रणालीहरू र तिनका कम्पोनेन्टहरूको व्यवहार व्याख्या गर्नु हो। AI प्रणालीहरूको बुझाइ सुधार्नको लागि सरोकारवालाहरूले तिनले कसरी र किन काम गर्छन् भन्ने बुझ्नुपर्छ ताकि सम्भावित प्रदर्शन समस्या, सुरक्षा र गोप्यता चिन्ताहरू, पूर्वाग्रह, बहिष्कृत अभ्यासहरू वा अनपेक्षित परिणामहरू पत्ता लगाउन सकून्। हामी विश्वास गर्छौं कि AI प्रणालीहरू प्रयोग गर्नेहरूले कहिले, किन, र कसरी तिनीहरूलाई तैनाथ गर्छन् त्यसबारे इमानदार र स्पष्ट हुनुपर्छ। प्रयोग गरिएका प्रणालीहरूको सीमाहरू समेत जानकारी गराउनु आवश्यक छ। उदाहरणका लागि, एउटा बैंकले आफ्नो उपभोक्ता ऋण निर्णय समर्थन गर्न AI प्रणाली प्रयोग गर्दा, परिणामहरू परीक्षण गरी कुन डेटा प्रणालीका सिफारिशहरू प्रभावित गर्छ भन्ने बुझ्नु महत्वपूर्ण हुन्छ। सरकारले उद्योगमा AI को नियमावली सुरु गरिरहेकाले डेटा वैज्ञानिकहरू र संस्थाहरूले AI प्रणालीले नियमावली पूरा गर्छ कि गर्दैन भनेर स्पष्ट गर्नुपर्छ, विशेष गरी जब अवाञ्छित परिणाम हुन्छ।
-> [🎥 यहाँ क्लिक गर्नुहोस्: AI मा पारदर्शिता](https://www.microsoft.com/videoplayer/embed/RE4voJF)
+> [🎥 AI मा पारदर्शिताको लागि यहाँ क्लिक गर्नुहोस्: ](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- AI प्रणालीहरू यति जटिल छन् कि तिनीहरू कसरी काम गर्छन् र परिणामहरूको व्याख्या गर्न गाह्रो छ।
-- यो बुझाइको अभावले यी प्रणालीहरू कसरी व्यवस्थापन गरिन्छ, सञ्चालन गरिन्छ, र कागजात गरिन्छ भन्ने कुरालाई असर गर्छ।
-- यो बुझाइको अभावले अझ महत्त्वपूर्ण रूपमा यी प्रणालीहरूले उत्पादन गर्ने परिणामहरू प्रयोग गरेर गरिएका निर्णयहरूलाई असर गर्छ।
+- AI प्रणालीहरू यति जटिल हुनुका कारण, तिनीहरूको कार्य प्रणाली र नतिजा व्याख्या गर्न कठिनाइ हुन्छ।
+- बुझाइको कमीले यी प्रणालीहरूलाई कसरी व्यवस्थापन, सञ्चालन र डकुमेन्ट गर्ने प्रभावित गर्दछ।
+- यस बुझाइको कमीले विशेषगरी यी प्रणालीहरूले उत्पादन गर्ने नतिजाको आधारमा गरिएका निर्णयहरूलाई प्रभाव गर्छ।
### जिम्मेवारी
+
+AI प्रणाली डिजाइन र तैनाथ गर्ने मानिसहरू आफ्नो प्रणाली कसरी संचालन हुन्छ त्यसको लागि जिम्मेवार हुनुपर्छ। जिम्मेवारी आवश्यकतालाई विशेष गरी अनुहार पहिचान जस्ता संवेदनशील प्रविधिहरूमा महत्त्व दिइन्छ। हालै, कानुन कार्यान्वयन संस्थाहरूले अनुहार पहिचान प्रविधिको माग बढेको छ, विशेष गरी हराएका बच्चा खोज्न प्रविधिको सम्भावना रूपमा। तर, यी प्रविधिहरू सरकारहरुले आफ्ना नागरिकहरूको आधारभूत स्वतन्त्रताहरूमाथि खतरा पुर्याउन प्रयोग गर्न सक्छन्, जस्तै विशिष्ट व्यक्तिहरूको निरन्तर अनुगमन गर्न सक्षम बनाएर। त्यसैले, डेटा वैज्ञानिकहरू र संस्थाहरूले आफ्नो AI प्रणालीले व्यक्तिहरू वा समाजमा पार्ने प्रभावका लागि जिम्मेवार हुनुपर्छ।
-AI प्रणालीहरू डिजाइन र तैनात गर्ने व्यक्तिहरूले तिनीहरूको प्रणालीहरू कसरी सञ्चालन गर्छन् भन्ने कुराको लागि जिम्मेवार हुनुपर्छ। जिम्मेवारीको आवश्यकता विशेष रूपमा संवेदनशील प्रयोग प्रविधिहरू जस्तै अनुहार पहिचानको साथमा महत्त्वपूर्ण छ। हालै, अनुहार पहिचान प्रविधिको माग बढ्दै गएको छ, विशेष गरी कानून प्रवर्तन संगठनहरूबाट जसले हराएका बच्चाहरूलाई फेला पार्न जस्ता प्रयोगहरूमा प्रविधिको सम्भावना देख्छन्। तर, यी प्रविधिहरूले सरकारलाई नागरिकहरूको मौलिक स्वतन्त्रतालाई जोखिममा राख्न सक्ने सम्भावना छ, उदाहरणका लागि, विशिष्ट व्यक्तिहरूको निरन्तर निगरानी सक्षम गरेर। त्यसैले, डाटा वैज्ञानिकहरू र संगठनहरूले तिनीहरूको AI प्रणालीले व्यक्तिहरू वा समाजलाई कसरी प्रभाव पार्छ भन्ने कुराको लागि जिम्मेवार हुनुपर्छ।
+[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoftको जिम्मेवार AI दृष्टिकोण")
-[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft को जिम्मेवार AI को दृष्टिकोण")
+> 🎥 माथि तस्बिरमा क्लिक गर्नुहोस् भिडियोको लागि: अनुहार पहिचानमार्फत द्रुत निगरानीको चेतावनीहरू
-> 🎥 माथिको छवि क्लिक गर्नुहोस्: अनुहार पहिचान मार्फत व्यापक निगरानीको चेतावनी
-
-अन्ततः हाम्रो पुस्ताका लागि सबैभन्दा ठूलो प्रश्न, AI लाई समाजमा ल्याउने पहिलो पुस्ताका रूपमा, कम्प्युटरहरू मानिसहरूलाई जिम्मेवार रहन कसरी सुनिश्चित गर्ने र कम्प्युटर डिजाइन गर्ने व्यक्तिहरू सबैलाई जिम्मेवार रहन कसरी सुनिश्चित गर्ने भन्ने हो।
+अन्ततः हाम्रो पुस्ताको सबैभन्दा ठूलो प्रश्नहरू मध्ये एक, जसले AI लाई समाजमा ल्याइरहेको पहिलो पुस्ता हो, के हो भने कम्प्युटरहरू मानिसहरूसँग जिम्मेवार रहिरहनेछन् र जसले कम्प्युटर डिजाइन गर्छन् तिनीहरू अरू सबैमै जिम्मेवार कसरी रहिरहनेछन्?
## प्रभाव मूल्याङ्कन
-मेसिन लर्निङ मोडेल प्रशिक्षण गर्नु अघि, AI प्रणालीको उद्देश्य बुझ्न, यसको इच्छित प्रयोग के हो, यो कहाँ तैनात हुनेछ, र प्रणालीसँग को अन्तर्क्रिया गर्नेछ भन्ने कुरा बुझ्न प्रभाव मूल्याङ्कन गर्नु महत्त्वपूर्ण छ। यी समीक्षक(हरू) वा प्रणालीको मूल्याङ्कन गर्ने परीक्षकहरूलाई सम्भावित जोखिमहरू र अपेक्षित परिणामहरू पहिचान गर्दा विचार गर्नुपर्ने कारकहरू थाहा पाउन उपयोगी हुन्छन्।
+मेशिन लर्निङ मोडेल प्रशिक्षित गर्नु अघि, AI प्रणालीको उद्देश्य के हो, यसको अपेक्षित प्रयोग के हो, कहाँ लागू गरिनेछ, र को प्रणालीसँग अन्तर्क्रिया गर्नेछ भन्ने बुझ्न प्रभाव मूल्याङ्कन गर्नु महत्त्वपूर्ण छ। यी कुरा समीक्षकहरू वा परीक्षण गर्नेहरूले प्रणालीको सम्भावित जोखिम र अपेक्षित परिणामहरूको मूल्याङ्कन गर्दा ध्यान दिनु पर्ने छन्।
+
+प्रभाव मूल्याङ्कन गर्दा ध्यान दिनु पर्ने क्षेत्रहरू:
+
+* **व्यक्तिगतमा प्रतिकूल प्रभाव**। कुनै प्रतिबन्ध वा आवश्यकता, समर्थन नगरेको प्रयोग वा प्रणालीको प्रदर्शनमा बाधा पुर्याउने ज्ञात सीमाहरूको बारेमा सचेत हुनु आवश्यक छ ताकि प्रणालीले मानिसहरूलाई हानि पुर्याउन नपाओस्।
+* **डेटा आवश्यकताहरू**। प्रणालीले डेटा कसरी र कहाँ प्रयोग गर्ने बुझ्नाले समीक्षकहरूलाई डेटा आवश्यकताहरू (जस्तै GDPR वा HIPAA नियमहरू) बारे विचार गर्न मद्दत गर्छ। साथै, डेटा स्रोत वा परिमाण प्रशिक्षणको लागि पर्याप्त छ कि छैन हेर्नुहोस्।
+* **प्रभावको सारांश**। प्रणाली प्रयोग गर्दा आउन सक्ने सम्भावित हानिहरूको सूची तयार गर्नुहोस्। ML जीवनचक्रभरि समस्याहरू देखिन्छन् भने तिनीहरूलाई समाधान वा सम्बोधन गरिन्छ कि छैन पुनरावलोकन गर्नुहोस्।
+* **छ मुख्य सिद्धान्तका लागि लागू हुने लक्ष्यहरू**। प्रत्येक सिद्धान्तका लक्ष्यहरू पुरा भए वा कुनै खाली ठाउँ छ कि छैन मूल्याङ्कन गर्नुहोस्।
+
+
+## जिम्मेवार AI सँग डिबगिङ
+
+सफ्टवेयर एप्लिकेशन डिबग गर्ने झै, AI प्रणाली डिबग गर्नु यसको समस्याहरू पहिचान र समाधान गर्ने जरूरी प्रक्रिया हो। मोडेलले अपेक्षा अनुसार वा जिम्मेवार रूपमा काम नगर्न धेरै कारकहरू हुन सक्छन्। अधिकांश परम्परागत मोडेल प्रदर्शन मेट्रिक्स मोडेलको प्रदर्शनको मात्रात्मक अभिव्यक्ति मात्र हो, तर तिनीहरूले जिम्मेवार AI सिद्धान्तहरूको उल्लंघन कसरी भयो भन्ने विश्लेषण गर्न पर्याप्त छैन। थपमा, मेशिन लर्निङ मोडेल एक कालो बाकस हो जसले आफ्नो नतिजाको कारण बुझ्न र गल्ती गर्दा व्याख्या दिन कठिन बनाउँछ। यस कोर्सको पछि भागमा, हामी जिम्मेवार AI ड्यासबोर्ड प्रयोग गर्न सिक्नेछौं जसले AI प्रणालीहरू डिबग गर्न मद्दत गर्छ। ड्यासबोर्डले डेटा वैज्ञानिकहरू र AI विकासकर्तालाई को समग्र उपकरण प्रदान गर्छ जसले:
-प्रभाव मूल्याङ्कन गर्दा ध्यान दिनुपर्ने क्षेत्रहरू निम्न छन्:
+* **त्रुटि विश्लेषण**। प्रणालीको निष्पक्षता वा विश्वसनीयतामा असर गर्ने मोडेलको त्रुटि वितरण पत्ता लगाउन।
+* **मोडेल अवलोकन**। डेटा समूहहरूमा मोडेल प्रदर्शनमा हुने असमानता पत्ता लगाउन।
+* **डेटा विश्लेषण**। डेटा वितरण बुझ्न र निष्पक्षता, समावेशिता, र विश्वसनीयता सम्बन्धी सम्भावित पूर्वाग्रह पत्ता लगाउन।
+* **मोडेल व्याख्यायोग्यता**। मोडेलका पूर्वानुमानमा के के असर गर्छ बुझ्न। यसले मोडेलको व्यवहार व्याख्या गर्न मद्दत गर्छ, जुन पारदर्शिता र जिम्मेवारीका लागि महत्त्वपूर्ण छ।
-* **व्यक्तिहरूमा प्रतिकूल प्रभाव**। प्रणालीको प्रदर्शनलाई बाधा पुर्याउने कुनै पनि प्रतिबन्ध वा आवश्यकताहरू, असमर्थित प्रयोग वा कुनै ज्ञात सीमाहरूको बारेमा सचेत हुनु प्रणालीलाई व्यक्तिहरूलाई हानि पुर्याउने तरिकामा प्रयोग नगरिने सुनिश्चित गर्न महत्त्वपूर्ण छ।
-* **डाटा आवश्यकताहरू**। प्रणालीले डाटालाई कसरी र कहाँ प्रयोग गर्नेछ भन्ने कुरा बुझ्दा समीक्षकहरूले तपाईंले ध्यान दिनुपर्ने कुनै पनि डाटा आवश्यकताहरू (जस्तै, GDPR वा HIPPA डाटा नियमहरू) अन्वेषण गर्न सक्षम बनाउँछ। साथै, प्रशिक्षणको लागि स्रोत वा डाटाको मात्रा पर्याप्त छ कि छैन भन्ने कुरा जाँच गर्नुहोस्।
-* **प्रभावको सारांश**। प्रणाली प्रयोग गर्दा उत्पन्न हुन सक्ने सम्भावित हानिहरूको सूची संकलन गर्नुहोस्। ML जीवनचक्रभरि, पहिचान गरिएका मुद्दाहरूलाई कम गरिएको छ वा सम्बोधन गरिएको छ कि छैन भन्ने कुरा समीक्षा गर्नुहोस्।
-* **छ वटा मुख्य सिद्धान्तहरूको लागि लागू हुने लक्ष्यहरू**। प्रत्येक सिद्धान्तबाट लक्ष्यहरू पूरा भएका छन् कि छैनन् र कुनै पनि अन्तराल छन् कि छैनन् भन्ने कुरा मूल्याङ्कन गर्नुहोस्।
-## जिम्मेवार AI को साथमा डिबगिङ
+## 🚀 चुनौती
+
+हानीहरू आरम्भमा नै रोक्न, हामीले:
-सफ्टवेयर अनुप्रयोग डिबगिङ जस्तै, AI प्रणाली डिबगिङ प्रणालीमा समस्या पहिचान र समाधान गर्ने आवश्यक प्रक्रिया हो। प्रणालीले अपेक्षित रूपमा वा जिम्मेवार रूपमा प्रदर्शन नगर्ने मोडेललाई असर गर्ने धेरै कारकहरू छन्। अधिकांश परम्परागत मोडेल प्रदर्शन मेट्रिक्स मोडेलको प्रदर्शनको मात्रात्मक समग्र हुन्, जसले जिम्मेवार AI सिद्धान्तहरू उल्लङ्घन गर्ने मोडेललाई विश्लेषण गर्न पर्याप्त छैन। थप रूपमा, मेसिन लर्निङ मोडेल एक ब्ल्याक बक्स हो जसले यसको परिणामलाई के चलाउँछ भन्ने कुरा बुझ्न वा गल्ती गर्दा व्याख्या प्रदान गर्न गाह्रो बनाउँछ। पछि यस पाठ्यक्रममा, हामी जिम्मेवार AI ड्यासबोर्ड प्रयोग गरेर AI प्रणालीहरू डिबग गर्ने तरिका सिक्नेछौं। ड्यासबोर्डले डाटा वैज्ञानिकहरू र AI विकासकर्ताहरूलाई निम्न कार्यहरू गर्न समग्र उपकरण प्रदान गर्दछ:
+- प्रणालीहरूमा काम गर्ने मानिसहरूमा फरक पृष्ठभूमि र दृष्टिकोणको विविधता हुनुपर्छ।
+- हाम्रो समाजको विविधता प्रतिबिम्बित गर्ने डाटासेटहरूमा लगानी गर्नुपर्छ।
+- मेशिन लर्निङ जीवनचक्रभर जिम्मेवार AI पत्ता लगाउन र सुधार गर्न राम्रो विधिहरू विकास गर्नुपर्छ।
-* **त्रुटि विश्लेषण**। प्रणालीको निष्पक्षता वा विश्वसनीयतालाई असर गर्न सक्ने मोडेलको त्रुटि वितरण पहिचान गर्न।
-* **मोडेल अवलोकन**। मोडेलको प्रदर्शनमा डाटा समूहहरूमा असमानता कहाँ छ भनेर पत्ता लगाउन।
-* **डाटा विश्लेषण**। डाटा वितरण बुझ्न र डाटामा सम्भावित पूर्वाग्रह पहिचान गर्न जसले निष्पक्षता, समावेशिता, र विश्वसनीयता समस्याहरू निम्त्याउन सक्छ।
-* **मोडेल व्याख्या**। मोडेलको भविष्यवाणीलाई के असर गर्छ वा प्रभाव पार्छ भन्ने कुरा बुझ्न। यसले मोडेलको व्यवहार व्याख्या गर्न मद्दत गर्दछ, जुन पारदर्शिता र जिम्मेवारीको लागि महत्त्वपूर्ण छ।
+मोडेलको अविश्वसनीयता मोडेल निर्माण र प्रयोगमा कसरी देखिन्छ भन्ने वास्तविक जीवनका परिदृश्यहरू बारे सोच्नुहोस्। के अरू कुरा विचार गर्नुपर्छ?
-## 🚀 चुनौती
+## [पाठ पछि क्विज](https://ff-quizzes.netlify.app/en/ml/)
-हानिहरूलाई सुरुमा नै परिचय गराउनबाट रोक्नका लागि, हामीले:
+## समीक्षा र आत्म-अध्ययन
+
-- प्रणालीमा काम गर्ने व्यक्तिहरूको पृष्ठभूमि र दृष्टिकोणको विविधता हुनुपर्छ।
-- हाम्रो समाजको विविधतालाई प्रतिबिम्बित गर्ने डाटासेटहरूमा लगानी गर्नुपर्छ।
-- मेसिन लर्निङ जीवनचक्रभरि जिम्मेवार AI पत्ता लगाउने र
-यो कार्यशाला हेरेर विषयवस्तुमा गहिरो जानकारी लिनुहोस्:
+यस पाठमा, तपाईंले मेसिन लर्निंगमा निष्पक्षता र अन्याय सम्बन्धी केहि आधारभूत अवधारणाहरू सिक्नुभएको छ।
+
+यी विषयहरूमा गहिराइमा जान यो कार्यशालामा हेर्नुहोस्:
-- जिम्मेवार AI को खोजमा: सिद्धान्तलाई व्यवहारमा ल्याउने Besmira Nushi, Mehrnoosh Sameki र Amit Sharma द्वारा
+- जिम्मेवार AI को खोजीमा: व्यवहारमा सिद्धान्त ल्याउने कुरामा Besmira Nushi, Mehrnoosh Sameki र Amit Sharma द्वारा
-[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: जिम्मेवार AI निर्माणका लागि खुला स्रोत फ्रेमवर्क")
+[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI")
-> 🎥 माथिको चित्रमा क्लिक गर्नुहोस् भिडियोका लागि: RAI Toolbox: जिम्मेवार AI निर्माणका लागि खुला स्रोत फ्रेमवर्क Besmira Nushi, Mehrnoosh Sameki, र Amit Sharma द्वारा
+> 🎥 भिडियोका लागि माथिको तस्वीरमा क्लिक गर्नुहोस्: RAI Toolbox: An open-source framework for building responsible 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)
+- माइक्रोसफ्टको 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/)
+- माइक्रोसफ्टको FATE अनुसन्धान समूह: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
-RAI Toolbox:
+RAI Toolbox:
- [Responsible AI Toolbox GitHub repository](https://github.com/microsoft/responsible-ai-toolbox)
-Azure Machine Learning को उपकरणहरूबारे पढ्नुहोस् जसले निष्पक्षता सुनिश्चित गर्छ:
+Azure Machine Learning का उपकरणहरू बारेमा जान्नुस् जसले निष्पक्षता सुनिश्चित गर्छ:
-- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
+- [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
+
+**अस्वीकरण**:
+यो दस्तावेज़ 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
index 3634890a5..6845b07bb 100644
--- a/translations/ne/2-Regression/1-Tools/README.md
+++ b/translations/ne/2-Regression/1-Tools/README.md
@@ -1,120 +1,121 @@
-# Python र Scikit-learn प्रयोग गरेर Regression Models सुरु गर्नुहोस्
+# रिग्रेसन मोडेलहरूका लागि पाइथन र स्कikit-लर्नसँग शुरू गर्नुहोस्
-
+
-> स्केच नोट [Tomomi Imura](https://www.twitter.com/girlie_mac) द्वारा
+> स्केचनोट लेखक [Tomomi Imura](https://www.twitter.com/girlie_mac)
-## [Pre-lecture quiz](https://ff-quizzes.netlify.app/en/ml/)
+## [पूर्व-व्याख्यान क्विज](https://ff-quizzes.netlify.app/en/ml/)
> ### [यो पाठ R मा उपलब्ध छ!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
## परिचय
-यी चार पाठहरूमा, तपाईंले regression models कसरी निर्माण गर्ने सिक्नुहुनेछ। हामी चाँडै यी मोडेलहरू केका लागि प्रयोग गरिन्छ भन्ने छलफल गर्नेछौं। तर कुनै पनि काम सुरु गर्नु अघि, सुनिश्चित गर्नुहोस् कि तपाईंले प्रक्रिया सुरु गर्न आवश्यक उपकरणहरू तयार गरेका छौं!
+यी चार पाठहरूमा, तपाईंले कसरी रिग्रेसन मोडेलहरू बनाउन सकिन्छ भन्ने पत्ता लगाउनुहुनेछ। हामी चाँडै यीको के लागि प्रयोग हुन्छ भन्ने कुरा छलफल गर्नेछौं। तर कुनै कुरा गर्नु अघि, प्रक्रिया सुरु गर्न सही उपकरणहरू हुनु आवश्यक छ!
यस पाठमा, तपाईंले सिक्नुहुनेछ:
-- आफ्नो कम्प्युटरलाई स्थानीय मशीन लर्निङ कार्यहरूको लागि कन्फिगर गर्नुहोस्।
-- Jupyter notebooks प्रयोग गर्नुहोस्।
-- Scikit-learn प्रयोग गर्नुहोस्, जसमा स्थापना समावेश छ।
-- Linear regression को अभ्यासद्वारा अन्वेषण गर्नुहोस्।
+- स्थानीय मेसिन लर्निङ कार्यहरूको लागि तपाईंको कम्प्युटर कन्फिगर गर्न।
+- ज्युपिटर नोटबुकहरूसँग काम गर्न।
+- स्कikit-लर्न प्रयोग गर्न, स्थापना सहित।
+- हात-ऑन अभ्याससहित रेखीय रिग्रेसन अन्वेषण गर्न।
## स्थापना र कन्फिगरेसनहरू
-[](https://youtu.be/-DfeD2k2Kj0 "मशीन लर्निङको लागि सुरुवात - मशीन लर्निङ मोडेल निर्माण गर्न उपकरण सेटअप गर्नुहोस्")
+[](https://youtu.be/-DfeD2k2Kj0 "शुरुआतीहरूका लागि ML - मेसिन लर्निङ मोडेलहरू बनाउनका लागि उपकरणहरू तयार पार्नुहोस्")
-> 🎥 माथिको छवि क्लिक गर्नुहोस्: 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) पनि उपलब्ध छन्, जसले केही प्रयोगकर्ताहरूको लागि सेटअप सजिलो बनाउँछ।
+1. **पाइथन स्थापना गर्नुहोस्**। सुनिश्चित गर्नुहोस् कि तपाईंको कम्प्युटरमा [Python](https://www.python.org/downloads/) स्थापना गरिएको छ। तपाईंले धेरै डेटा विज्ञान र मेसिन लर्निङ कार्यहरूका लागि पाइथन प्रयोग गर्नुहुनेछ। अधिकांश कम्प्युटर सिस्टममा पहिले नै पाइथन स्थापना हुन्छ। केही प्रयोगकर्ताका लागि सेटअप सजिलो बनाउन उपयोगी [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) मा काम गर्नु उपयोगी हुन्छ।
+ यद्यपि केही पाइथन प्रयोगहरूले फरक संस्करणको आवश्यकता पर्न सक्छ। त्यसैले, [वर्चुअल वातावरण](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) कसरी गर्ने भन्नेमा ध्यान दिनुहोस्।
+2. **भिजुअल स्टुडियो कोड स्थापना गर्नुहोस्**। सुनिश्चित गर्नुहोस् कि तपाईंको कम्प्युटरमा भिजुअल स्टुडियो कोड स्थापना गरिएको छ। सामान्य स्थापना गर्न यी निर्देशनहरू पछ्याउनुहोस्: [install Visual Studio Code](https://code.visualstudio.com/)। तपाईं यस कोर्समा भिजुअल स्टुडियो कोडमा पाइथन प्रयोग गर्न जाँदै हुनुहुन्छ, त्यसैले [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) को यो संग्रह मार्फत काम गरेर।
+ > यो [स्किक modules](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) को संग्रहमार्फत पाइथनसँग परिचित बन्नुहोस्।
>
- > [](https://youtu.be/yyQM70vi7V8 "Visual Studio Code को साथ Python सेटअप गर्नुहोस्")
+ > [](https://youtu.be/yyQM70vi7V8 "Visual Studio Code सँग पाइथन सेटअप गर्नुहोस्")
>
- > 🎥 माथिको छवि क्लिक गर्नुहोस्: VS Code मा Python प्रयोग गर्ने भिडियो।
+ > 🎥 माथिको तस्बिरमा क्लिक गरेर उपयुक्त भिडियो हेर्नुहोस्: VS Code भित्र पाइथन प्रयोग गर्ने तरिका।
-3. **Scikit-learn स्थापना गर्नुहोस्**, [यी निर्देशनहरू](https://scikit-learn.org/stable/install.html) पालना गरेर। तपाईंले Python 3 प्रयोग गर्न सुनिश्चित गर्नुपर्ने भएकाले, virtual environment प्रयोग गर्न सिफारिस गरिन्छ। यदि तपाईं M1 Mac मा यो लाइब्रेरी स्थापना गर्दै हुनुहुन्छ भने, माथि लिंक गरिएको पृष्ठमा विशेष निर्देशनहरू छन्।
+3. **स्कikit-लर्न स्थापना गर्नुहोस्**, यी निर्देशनहरू अनुसरण गरेर: [install instructions](https://scikit-learn.org/stable/install.html)। स्कikit-लर्न प्रयोग गर्न पाइथन 3 आवश्यक छ, त्यसैले वर्चुअल वातावरण प्रयोग गर्न सल्लाह दिइन्छ। यदि तपाईं M1 Mac मा यो पुस्तकालय स्थापना गर्दै हुनुहुन्छ भने, माथिको पृष्ठमा विशेष निर्देशनहरू छन्।
-4. **Jupyter Notebook स्थापना गर्नुहोस्**। तपाईंले [Jupyter package](https://pypi.org/project/jupyter/) स्थापना गर्नुपर्नेछ।
+1. **ज्युपिटर नोटबुक स्थापना गर्नुहोस्**। तपाईंले [जुपिटर प्याकेज](https://pypi.org/project/jupyter/) स्थापना गर्नु आवश्यक छ।
-## तपाईंको ML लेखन वातावरण
+## तपाईंको मेसिन लर्निङ लेखन वातावरण
-तपाईंले **notebooks** प्रयोग गरेर Python कोड विकास गर्नुहुनेछ र मशीन लर्निङ मोडेलहरू निर्माण गर्नुहुनेछ। यो प्रकारको फाइल डेटा वैज्ञानिकहरूको लागि सामान्य उपकरण हो, र तिनीहरूलाई `.ipynb` विस्तारले चिनिन्छ।
+तपाईंले आफ्नो पाइथन कोड विकास गर्न र मेसिन लर्निङ मोडेलहरू निर्माण गर्न **नोटबुकहरू** प्रयोग गर्नुहुनेछ। यस प्रकारको फाइल डेटा वैज्ञानिकहरूका लागि सामान्य उपकरण हो, र यसको पहिचान यसको suffix वा विस्तार `.ipynb` बाट हुन्छ।
-Notebooks एक अन्तरक्रियात्मक वातावरण हो जसले विकासकर्तालाई कोड लेख्न र कोडको वरिपरि नोटहरू र दस्तावेजहरू थप्न अनुमति दिन्छ, जुन प्रयोगात्मक वा अनुसन्धान-उन्मुख परियोजनाहरूको लागि धेरै उपयोगी हुन्छ।
+नोटबुकहरू अन्तरक्रियात्मक वातावरण हुन् जसले विकासकर्ता कोड लेख्न र नोटहरू, डकुमेन्टेशन थप्न मद्दत गर्छ जुन प्रयोगात्मक वा अनुसन्धान सम्बन्धी परियोजनाहरूको लागि धेरै उपयोगी हुन्छ।
-[](https://youtu.be/7E-jC8FLA2E "मशीन लर्निङको लागि सुरुवात - Regression मोडेल निर्माण गर्न Jupyter Notebooks सेटअप गर्नुहोस्")
+[](https://youtu.be/7E-jC8FLA2E "शुरुआतीहरूका लागि ML - रिग्रेसन मोडेलहरू बनाउन ज्युपिटर नोटबुकहरू सेटअप गर्नुहोस्")
-> 🎥 माथिको छवि क्लिक गर्नुहोस्: यो अभ्यासको लागि छोटो भिडियो।
+> 🎥 माथिको तस्बिरमा क्लिक गरेर यो अभ्यासको छोटो भिडियो हेर्नुहोस्।
-### अभ्यास - Notebook को साथ काम गर्नुहोस्
+### अभ्यास - नोटबुकसँग काम गर्नुहोस्
-यस फोल्डरमा, तपाईंले _notebook.ipynb_ फाइल पाउनुहुनेछ।
+यस फोल्डरमा, तपाईं _notebook.ipynb_ फाइल पाउनुहुनेछ।
-1. _notebook.ipynb_ Visual Studio Code मा खोल्नुहोस्।
+1. Visual Studio Code मा _notebook.ipynb_ खोल्नुहोस्।
- Jupyter server Python 3+ को साथ सुरु हुनेछ। तपाईंले notebook मा `run` गर्न सकिने कोडका टुक्राहरू पाउनुहुनेछ। तपाईंले प्ले बटन जस्तो देखिने आइकन चयन गरेर कोड ब्लक चलाउन सक्नुहुन्छ।
+ एउटा ज्युपिटर सर्भर Python 3+ सँग सुरु हुनेछ। नोटबुकका केही भागहरू `run` गर्न मिल्छन्, अर्थात् कोडका टुक्राहरू। आपले प्ले बटन जस्तो देखिने आइकन चयन गरेर कोड ब्लक चलाउन सक्नुहुन्छ।
-2. `md` आइकन चयन गर्नुहोस् र केही markdown थप्नुहोस्, र निम्न पाठ लेख्नुहोस् **# Welcome to your notebook**।
+1. `md` आइकन चयन गरेर मार्कडाउन थप्नुहोस्, र तलको पाठ **# Welcome to your notebook** लेख्नुहोस्।
- त्यसपछि, केही Python कोड थप्नुहोस्।
+ त्यसपछि केही पाइथन कोड थप्नुहोस्।
-3. कोड ब्लकमा **print('hello notebook')** टाइप गर्नुहोस्।
-4. कोड चलाउनको लागि तीर चयन गर्नुहोस्।
+1. कोड ब्लकमा **print('hello notebook')** टाइप गर्नुहोस्।
+1. कोड चलाउन तीर आइकन चयन गर्नुहोस्।
- तपाईंले प्रिन्ट गरिएको कथन देख्नुहुनेछ:
+ तपाईंले निम्न मुद्रित वाक्यांश देख्नु पर्नेछ:
```output
hello notebook
```
-
+
-तपाईं आफ्नो कोडलाई टिप्पणीहरूद्वारा स्व-डकुमेन्ट गर्न सक्नुहुन्छ।
+तपाईं आफ्नो कोडसँग टिप्पणीहरू मिसाएर नोटबुकलाई स्वयं-डकुमेन्ट गर्न सक्नुहुन्छ।
-✅ एक मिनेट सोच्नुहोस् कि वेब विकासकर्ताको काम गर्ने वातावरण डेटा वैज्ञानिकको वातावरणसँग कति फरक छ।
+✅ एक मिनेट सोच्नुहोस् कि वेब विकासकर्ताको कार्य वातावरण र डेटा वैज्ञानिकको कार्य वातावरण कत्तिको फरक हुन्छ।
-## Scikit-learn को साथ सुरु गर्नुहोस्
+## स्कikit-लर्नसँग सुरु हुँदै
-अब Python तपाईंको स्थानीय वातावरणमा सेटअप भएको छ, र तपाईं Jupyter notebooks को साथ सहज हुनुहुन्छ, अब Scikit-learn को साथ समान सहज हुनुहोस्। Scikit-learn ले [व्यापक API](https://scikit-learn.org/stable/modules/classes.html#api-ref) प्रदान गर्दछ जसले तपाईंलाई ML कार्यहरू गर्न मद्दत गर्दछ।
+अब पाइथन तपाईंको स्थानीय वातावरणमा सेटअप भइसकेको छ, र तपाईं ज्युपिटर नोटबुकसँग सहज हुनुहुन्छ, स्कikit-लर्नसँग पनि सहज हुन 시작 गरौं (`sci` लाई `science` जस्तै उच्चारण गर्नुहोस्)। स्कikit-लर्नले तपाईंलाई मेसिन लर्निङ कार्यहरू गर्न मद्दत पुर्याउने [विस्तृत API](https://scikit-learn.org/stable/modules/classes.html#api-ref) प्रदान गर्दछ।
-तिनीहरूको [वेबसाइट](https://scikit-learn.org/stable/getting_started.html) अनुसार, "Scikit-learn एक खुला स्रोत मशीन लर्निङ लाइब्रेरी हो जसले supervised र unsupervised learning समर्थन गर्दछ। यसले मोडेल फिटिंग, डेटा preprocessing, मोडेल चयन र मूल्यांकन, र अन्य धेरै उपयोगिताहरूका लागि विभिन्न उपकरणहरू प्रदान गर्दछ।"
+तिनीहरूको [वेबसाइट](https://scikit-learn.org/stable/getting_started.html) अनुसार, "Scikit-learn खुला स्रोत मेसिन लर्निङ पुस्तकालय हो जुन सुपरभाइज्ड र अनसुपरभाइज्ड लर्निङलाई समर्थन गर्छ। यसले मोडेल फिटिंग, डेटा प्रिप्रसेसिङ, मोडेल चयन र मूल्यांकन, तथा अन्य धेरै उपयोगिताहरूका लागि विभिन्न उपकरणहरू पनि प्रदान गर्दछ।"
-यस पाठ्यक्रममा, तपाईंले Scikit-learn र अन्य उपकरणहरू प्रयोग गरेर मशीन लर्निङ मोडेलहरू निर्माण गर्नुहुनेछ जसलाई 'पारम्परिक मशीन लर्निङ' कार्यहरू भनिन्छ। हामीले neural networks र deep learning जस्ता विषयहरूलाई जानबुझेर टाढा राखेका छौं, किनकि तिनीहरू हाम्रो आगामी 'AI for Beginners' पाठ्यक्रममा राम्रोसँग समेटिएका छन्।
+यस कोर्समा, तपाईंले स्कikit-लर्न र अन्य उपकरणहरू प्रयोग गरेर परम्परागत मेसिन लर्निङ कार्यहरू गर्ने मोडेलहरू निर्माण गर्नुहुनेछ। हामीले जानाजानी न्यूरल नेटवर्क र डीप लर्निङलाई समावेश गरेका छैनौं, ती हामीले आउने 'शुरुआतीहरूको लागि AI' पाठ्यक्रममा राम्रोसँग समेट्नेछौं।
-Scikit-learn ले मोडेलहरू निर्माण गर्न र तिनीहरूलाई मूल्यांकन गर्न सजिलो बनाउँछ। यो मुख्य रूपमा संख्यात्मक डेटा प्रयोगमा केन्द्रित छ र सिक्ने उपकरणको रूपमा प्रयोग गर्न तयार-निर्मित datasets समावेश गर्दछ। यसमा विद्यार्थीहरूले प्रयास गर्न सक्ने पूर्व-निर्मित मोडेलहरू पनि समावेश छन्। अब, prepackaged डेटा लोड गर्ने प्रक्रिया र Scikit-learn को साथ पहिलो ML मोडेलको लागि built-in estimator अन्वेषण गरौं।
+स्कikit-लर्नले मोडेलहरू बनाउन र तिनीहरूको मूल्याङ्कन गर्न सजिलो बनाउँछ। यो मुख्यतया संख्यात्मक डेटा प्रयोग गर्नेमा केन्द्रित छ र सिकाइ उपकरणका रूपमा प्रयोग गर्न तयार धेरै पूर्वप्याक गरिएको डेटा सेटहरू पनि समावेश गर्दछ। यसमा विद्यार्थीहरूका लागि पूर्वनिर्मित मोडेलहरू पनि हुन्छन्। पहिले हामी पूर्वप्याक गरिएको डेटा लोड गर्ने र स्कikit-लर्नको बिल्ट-इन इस्टिमेटर प्रयोग गरेर पहिलो ML मोडेल बनाउने प्रक्रिया अन्वेषण गरौं।
-## अभ्यास - तपाईंको पहिलो Scikit-learn notebook
+## अभ्यास - तपाईंको पहिलो स्कikit-लर्न नोटबुक
-> यो ट्यूटोरियल 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) बाट प्रेरित छ।
+> यो ट्यूटोरियल स्कikit-लर्नको वेबसाइटमा रहेको [रेखीय रिग्रेसन उदाहरण](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 परियोजना")
-> 🎥 माथिको छवि क्लिक गर्नुहोस्: यो अभ्यासको लागि छोटो भिडियो।
+[](https://youtu.be/2xkXL5EUpS0 "शुरुआतीहरूका लागि ML - पाइथनमा तपाईंको पहिलो रेखीय रिग्रेसन परियोजना")
-_नोटबुक.ipynb_ फाइलमा, सबै सेलहरू 'trash can' आइकन दबाएर खाली गर्नुहोस्।
+> 🎥 माथिको तस्बिरमा क्लिक गरेर यो अभ्यासको छोटो भिडियो हेर्नुहोस्।
-यस खण्डमा, तपाईं Scikit-learn मा सिक्ने उद्देश्यका लागि निर्माण गरिएको diabetes dataset को साथ काम गर्नुहुनेछ। कल्पना गर्नुहोस् कि तपाईंले मधुमेहका बिरामीहरूको उपचार परीक्षण गर्न चाहनुहुन्छ। मशीन लर्निङ मोडेलहरूले तपाईंलाई भिन्न चरहरूको संयोजनको आधारमा कुन बिरामीहरूले उपचारमा राम्रो प्रतिक्रिया दिनेछन् भनेर निर्धारण गर्न मद्दत गर्न सक्छ। जब visualization गरिएको एक धेरै आधारभूत regression मोडेलले चरहरूको बारेमा जानकारी देखाउन सक्छ जसले तपाईंलाई सैद्धान्तिक क्लिनिकल परीक्षणहरू व्यवस्थित गर्न मद्दत गर्दछ।
+_notebook.ipynb_ फाइलमा, यस पाठसंग सम्बन्धित सबै सेलहरू खाली गर्न 'ट्र्यास क्यान' आइकन थिच्नुहोस्।
-✅ धेरै प्रकारका regression विधिहरू छन्, र तपाईंले कुन विधि चयन गर्नुहुन्छ भन्ने कुरा तपाईंले खोजिरहेको उत्तरमा निर्भर गर्दछ। यदि तपाईंले कुनै व्यक्तिको उमेरको आधारमा सम्भावित उचाइको भविष्यवाणी गर्न चाहनुहुन्छ भने, तपाईंले linear regression प्रयोग गर्नुहुनेछ, किनकि तपाईं **संख्यात्मक मान** खोज्दै हुनुहुन्छ। यदि तपाईंले कुनै प्रकारको खाना vegan हो कि होइन भनेर पत्ता लगाउन चाहनुहुन्छ भने, तपाईं **श्रेणी असाइनमेन्ट** खोज्दै हुनुहुन्छ, त्यसैले तपाईंले logistic regression प्रयोग गर्नुहुनेछ। तपाईं logistic regression को बारेमा पछि थप जान्नुहुनेछ। डेटा सम्बन्धी केही प्रश्नहरू सोच्नुहोस्, र यी विधिहरू मध्ये कुन उपयुक्त हुनेछ भनेर विचार गर्नुहोस्।
+यस खण्डमा, तपाईंले डाइबिटीज सम्बन्धी सानो डेटासेट प्रयोग गर्नु हुनेछ जुन स्कikit-लर्नमा सिकाइको लागि बिल्ट-इन छ। कल्पना गर्नुहोस् तपाईंले डायबिटिक बिरामीहरूको उपचार परीक्षण गर्न चाहनुहुन्छ। मेसिन लर्निङ मोडेलहरूले ठम्याउन मद्दत गर्न सक्छन् कुन बिरामीले उपचार राम्रोसँग प्रतिक्रिया दिनेछन्, भेरिएबलहरूको संयोजनको आधारमा। धेरै आधारभूत रिग्रेसन मोडेलले पनि दृश्यात्मक रूपमा यस विषयमा जानकारी दिन सक्छ जुन तपाईंको सैद्धान्तिक क्लिनिकल ट्रायलहरूलाई व्यवस्थित गर्न मद्दत गर्नेछ।
+
+✅ रिग्रेसन विधिहरू धेरै प्रकारका हुन्छन्, र कुन विधि छनोट गर्ने भन्ने कुरा तपाईंले खोजिरहेको उत्तरमा निर्भर गर्दछ। यदि तपाईंको लक्ष्य केहि उमेरका व्यक्तिको सम्भावित उचाइ भविष्यवाणी गर्नु हो भने, तपाईंले रेखीय रिग्रेसन प्रयोग गर्नुहुनेछ किनकि तपाईं **संख्यात्मक मान** खोज्दै हुनुहुन्छ। यदि तपाईंलाई थाहा पाउनुछ कि खाद्यप्रकार शाकाहारी हो वा होइन, तपाईं **श्रेणी निर्धारण** खोज्दै हुनुहुन्छ र त्यसका लागि लोगिस्टिक रिग्रेसन उपयुक्त हुन्छ। तपाईंले पछि लोगिस्टिक रिग्रेसन सिक्नु हुनेछ। केहि प्रश्नहरूको बारेमा सोच्नुहोस् जुन तपाईं डेटा बाट सोध्न सक्नुहुन्छ, र ती प्रश्नहरूको लागि कुन विधि उचित हुन्छ।
अब यो कार्य सुरु गरौं।
-### लाइब्रेरीहरू आयात गर्नुहोस्
+### पुस्तकालयहरू आयात गर्नुहोस्
-यस कार्यको लागि, हामी केही लाइब्रेरीहरू आयात गर्नेछौं:
+यस कार्यका लागि हामी केही पुस्तकालयहरू आयात गर्नेछौं:
-- **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) लाइब्रेरी हो।
+- **matplotlib**। यो एक उपयोगी [ग्राफिङ टूल](https://matplotlib.org/) हो र हामी यसलाई लाइन प्लट बनाउन प्रयोग गर्नेछौं।
+- **numpy**। [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) पाइथनमा संख्यात्मक डेटा व्यवस्थापनका लागि उपयोगी लाइब्रेरी हो।
+- **sklearn**। यो [स्कikit-लर्न](https://scikit-learn.org/stable/user_guide.html) लाइब्रेरी हो।
-तपाईंको कार्यहरूमा मद्दत गर्न केही लाइब्रेरीहरू आयात गर्नुहोस्।
+तपाईंका कार्यहरूमा सहयोग गर्न केही पुस्तकालयहरू आयात गर्नुहोस्।
-1. निम्न कोड टाइप गरेर आयात थप्नुहोस्:
+1. तलको कोड टाइप गरेर आयातहरू थप्नुहोस्:
```python
import matplotlib.pyplot as plt
@@ -122,26 +123,26 @@ _नोटबुक.ipynb_ फाइलमा, सबै सेलहरू 'tra
from sklearn import datasets, linear_model, model_selection
```
- माथि, तपाईंले `matplotlib`, `numpy` आयात गर्दै हुनुहुन्छ, र `sklearn` बाट `datasets`, `linear_model` र `model_selection` आयात गर्दै हुनुहुन्छ। `model_selection` डेटा प्रशिक्षण र परीक्षण सेटहरूमा विभाजन गर्न प्रयोग गरिन्छ।
+ माथि तपाईंले `matplotlib`, `numpy` आयात गर्दै हुनुहुन्छ र `sklearn` बाट `datasets`, `linear_model`, `model_selection` आयात गर्दै हुनुहुन्छ। `model_selection` डेटा प्रशिक्षण र परीक्षण सेटमा विभाजन गर्न प्रयोग हुन्छ।
-### मधुमेह dataset
+### डायबिटीज डेटासेट
-Scikit-learn मा निर्मित [diabetes dataset](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) मधुमेह सम्बन्धी 442 नमूनाहरू समावेश गर्दछ, जसमा 10 feature variables छन्। केही समावेश छन्:
+बिल्ट-इन [डायबिटीज डेटासेट](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset)मा ४४२ नमुनाहरू छन्, जसमा १० विशेषताहरू समावेश छन्, जसमध्ये केही:
-- age: उमेर वर्षमा
+- उमेर: वर्षमा उमेर
- bmi: शरीरको मास सूचकांक
- bp: औसत रक्तचाप
-- s1 tc: T-Cells (सेतो रक्त कोशिकाको प्रकार)
+- s1 tc: T-सेलहरू (सेतो रक्तकोषिका प्रकार)
-✅ यो dataset मा मधुमेह सम्बन्धी अनुसन्धानको लागि महत्त्वपूर्ण feature variable को रूपमा 'sex' को अवधारणा समावेश छ। धेरै चिकित्सा datasets मा binary classification जस्ता प्रकारहरू समावेश हुन्छन्। सोच्नुहोस् कि यस्तो वर्गीकरणले जनसंख्याको केही भागलाई उपचारबाट कसरी बाहिर राख्न सक्छ।
+✅ यस डेटासेटमा 'लिङ्ग' एक महत्वपूर्ण विशेषता भेरिएबलको रूपमा समावेश गरिएको छ जुन डायबिटीज अनुसन्धानमा महत्त्वपूर्ण छ। धेरै चिकित्सा डेटासेटहरूमा यस्ता द्विक वर्गीकरणहरू हुन्छन्। सोच्नुहोस् यस्ता वर्गीकरणहरूले जनसंख्याबाट कतिपय भागहरू उपचारबाट बाहिर पार्न सक्छन्।
अब, X र y डेटा लोड गर्नुहोस्।
-> 🎓 सम्झनुहोस्, यो supervised learning हो, र हामीलाई नाम गरिएको 'y' target चाहिन्छ।
+> 🎓 याद गर्नुहोस्, यो सुपरभाइज्ड लर्निङ हो र हामीलाई 'y' नामक लक्ष्य चाहिन्छ।
-नयाँ कोड सेलमा, `load_diabetes()` कल गरेर मधुमेह dataset लोड गर्नुहोस्। इनपुट `return_X_y=True` ले संकेत गर्दछ कि `X` डेटा म्याट्रिक्स हुनेछ, र `y` regression target हुनेछ।
+नयाँ कोड सेलमा, `load_diabetes()` कल गरेर डायबिटीज डेटासेट लोड गर्नुहोस्। `return_X_y=True` इनपुटले संकेत गर्छ कि `X` डेटा म्याट्रिक्स हुनेछ र `y` रिग्रेसन लक्ष्य हुनेछ।
-1. डेटा म्याट्रिक्सको आकार र यसको पहिलो तत्व देखाउन केही print कमाण्डहरू थप्नुहोस्:
+1. डेटा म्याट्रिक्सको आकार र यसको पहिलो तत्त्वलाई देखाउन प्रिन्ट कमाण्डहरू थप्नुहोस्:
```python
X, y = datasets.load_diabetes(return_X_y=True)
@@ -149,9 +150,9 @@ Scikit-learn मा निर्मित [diabetes dataset](https://scikit-lear
print(X[0])
```
- तपाईंले प्रतिक्रिया स्वरूप पाउने कुरा tuple हो। तपाईंले tuple का दुई पहिलो मानहरू क्रमशः `X` र `y` मा असाइन गर्दै हुनुहुन्छ। [tuple](https://wikipedia.org/wiki/Tuple) को बारेमा थप जान्नुहोस्।
+ तपाईंले प्रतिक्रिया स्वरूप ट्युपल पाउनुहुनेछ। तपाईंले सो ट्युपलका पहिलो दुई मानहरू क्रमश: `X` र `y` मा असाइन गर्दै हुनुहुन्छ। [ट्युपलहरूको बारेमा थप जान्नुहोस्](https://wikipedia.org/wiki/Tuple)।
- तपाईं देख्न सक्नुहुन्छ कि यो डेटा 442 वस्तुहरू समावेश गर्दछ, जसको आकार 10 तत्वहरूको array मा छ:
+ यस डेटामा ४४२ वस्तुहरू छन् जुन १० तत्त्वहरू भएको एर्रेमा आकारमा छन्:
```text
(442, 10)
@@ -159,39 +160,39 @@ Scikit-learn मा निर्मित [diabetes dataset](https://scikit-lear
-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 के प्रदर्शन गर्दैछ, target दिइएको अवस्थामा?
+ ✅ डेटाको रिग्रेसन लक्ष्य बिचको सम्बन्धबारे सोच्नुहोस्। रेखीय रिग्रेसनले विशेषता X र लक्ष्य भेरिएबल y बिचको सम्बन्धहरू भविष्यवाणी गर्छ। के तपाईं [टार्गेट](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) डायबिटीज डेटासेटको दस्तावेजमा फेला पार्न सक्नुहुन्छ? यो डेटासेटले उक्त लक्ष्यसँग के देखाउँदैछ?
-2. अब, यो dataset को एक भाग चयन गरेर plot गर्नुहोस्। dataset को तेस्रो स्तम्भ चयन गर्न `:` अपरेटर प्रयोग गर्नुहोस् सबै पङ्क्तिहरू चयन गर्न, र त्यसपछि तेस्रो स्तम्भ चयन गर्न index (2) प्रयोग गर्नुहोस्। तपाईंले `reshape(n_rows, n_columns)` प्रयोग गरेर डेटा 2D array मा पुनःआकार दिन सक्नुहुन्छ - plot को लागि आवश्यक रूपमा। यदि कुनै parameter -1 हो भने, सम्बन्धित आयाम स्वतः गणना गरिन्छ।
+2. अब डेटासेटको एउटा भाग चयन गरेर प्लट गर्न ३rd स्तम्भ चयन गर्नुहोस्। यो गर्न सबै पङ्क्तिहरू `:` प्रयोग गरी छान्न सकिन्छ, र ३rd स्तम्भ इन्डेक्स (2) द्वारा चयन गर्न सकिन्छ। प्लटिङको लागि डेटा २D एर्रेमा `reshape(n_rows, n_columns)` प्रयोग गरी परिवर्तन गर्न सकिन्छ। यदि कुनै एक पैरामीटर -1 हो भने, त्यो आयाम स्वत: गणना हुन्छ।
```python
X = X[:, 2]
X = X.reshape((-1,1))
```
- ✅ कुनै पनि समयमा, डेटा प्रिन्ट गरेर यसको आकार जाँच गर्नुहोस्।
+ ✅ जुनसुकै समयमा डेटा प्रिन्ट गरेर यसको आकार जाँच्नुहोस्।
-3. अब तपाईंले plot गर्न तयार डेटा पाउनुभएको छ, तपाईं हेर्न सक्नुहुन्छ कि कुनै मेसिनले यस dataset मा संख्याहरूको बीचमा तार्किक विभाजन निर्धारण गर्न मद्दत गर्न सक्छ। यो गर्नको लागि, तपाईंले डेटा (X) र target (y) दुवैलाई परीक्षण र प्रशिक्षण सेटहरूमा विभाजन गर्न आवश्यक छ। Scikit-learn ले यो गर्नको लागि सरल तरिका प्रदान गर्दछ; तपाईंले आफ्नो परीक्षण डेटा निश्चित बिन्दुमा विभाजन गर्न सक्नुहुन्छ।
+3. अब तपाईंसँग प्लट गर्न डेटा तयार भएपछि, मेशिनलाई यो डेटासेटका संख्या बीच तार्किक विभाजन निर्धारण गर्न मद्दत गर्ने देख्नुहोस्। यसको लागि, तपाईंलाई डेटा (X) र लक्ष्य (y) दुवैलाई परीक्षण र प्रशिक्षण सेटहरूमा विभाजन गर्न आवश्यक छ। स्कikit-लर्नले यो सजिलै गर्ने तरिका छ; तपाईंले परीक्षण डेटा कुनै निश्चित स्थानमा विभाजन गर्न सक्नुहुन्छ।
```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 प्रशिक्षण सेटहरू प्रयोग गरेर प्रशिक्षण गर्नुहोस्:
+4. अब तपाईंको मोडेल प्रशिक्षणका लागि तयार हुनुहोस्! रेखीय रिग्रेसन मोडेल लोड गर्नुहोस् र आफ्नो X र y प्रशिक्षण सेटहरू प्रयोग गरी `model.fit()` प्रयोग गरेर प्रशिक्षण गर्नुहोस्:
```python
model = linear_model.LinearRegression()
model.fit(X_train, y_train)
```
- ✅ `model.fit()` एक function हो जुन तपाईं TensorFlow जस्ता धेरै ML लाइब्रेरीहरूमा देख्नुहुनेछ।
+ ✅ `model.fit()` एउटा यस्तो फङ्क्शन हो जुन तपाईं धेरै ML लाइब्रेरीहरूमा जस्तै TensorFlow मा पनि देख्नुहुनेछ।
-5. त्यसपछि, परीक्षण डेटा प्रयोग गरेर prediction सिर्जना गर्नुहोस्, `predict()` function प्रयोग गरेर। यो डेटा समूहहरू बीचको लाइन कोर्न प्रयोग गरिनेछ।
+5. त्यसपछि, परीक्षण डेटा प्रयोग गरेर भविष्यवाणी बनाउन `predict()` फङ्क्शन प्रयोग गर्नुहोस्। यसले मोडेलको डेटा समूहहरू बिच लाइन तान्न प्रयोग हुनेछ।
```python
y_pred = model.predict(X_test)
```
-6. अब डेटा plot मा देखाउने समय हो। Matplotlib यो कार्यको लागि धेरै उपयोगी उपकरण हो। सबै X र y परीक्षण डेटा को scatterplot सिर्जना गर्नुहोस्, र मोडेलको डेटा समूहहरूको बीचमा सबैभन्दा उपयुक्त स्थानमा लाइन कोर्न prediction प्रयोग गर्नुहोस्।
+6. अब डेटा प्लटमा देखाउन समय भयो। matplotlib यो कार्यका लागि धेरै उपयोगी उपकरण हो। सबै X र y परीक्षण डेटा स्क्याटरप्लट बनाएर, मोडेलका डेटा समूहहरू बिच सबैभन्दा उपयुक्त ठाउँमा भविष्यवाणीले अन्तरगत लाइन खिच्नुहोस्।
```python
plt.scatter(X_test, y_test, color='black')
@@ -202,29 +203,32 @@ Scikit-learn मा निर्मित [diabetes dataset](https://scikit-lear
plt.show()
```
- 
-✅ यहाँ के भइरहेको छ भनेर अलिकति सोच्नुहोस्। धेरै साना डाटाका बिन्दुहरूमा एउटा सीधा रेखा चलिरहेको छ, तर यो वास्तवमा के गरिरहेको छ? के तपाईं देख्न सक्नुहुन्छ कि नयाँ, नदेखिएको डाटा बिन्दु प्लटको y अक्षसँग सम्बन्धित कहाँ फिट हुनुपर्छ भनेर भविष्यवाणी गर्न यो रेखा कसरी प्रयोग गर्न सकिन्छ? यस मोडेलको व्यावहारिक उपयोगलाई शब्दमा व्यक्त गर्न प्रयास गर्नुहोस्।
+ 
+
-बधाई छ, तपाईंले आफ्नो पहिलो रेखीय प्रतिगमन मोडेल निर्माण गर्नुभयो, यसबाट भविष्यवाणी गर्नुभयो, र प्लटमा प्रदर्शन गर्नुभयो!
+ ✅ यहाँ के हुँदैछ भनेर अलिकति सोच्नुहोस्। सिधा रेखा धेरै साना डाटा पोइन्टहरूको माथि जान्छ, तर यो ठीक के गर्दैछ? तपाईले देख्न सक्नुहुन्छ कि यो रेखा प्रयोग गरेर नयाँ, नदेखिएको डाटा पोइन्ट प्लटको y अक्षसँग कसरी सम्बन्धित हुनुपर्छ भनेर पूर्वानुमान गर्न सकिन्छ? यस मोडेलको व्यावहारिक उपयोगलाई शब्दहरूमा व्यक्त गर्न प्रयास गर्नुहोस्।
+
+बधाई छ, तपाइँले आफ्नो पहिलो रेखीय प्रतिस्थापन मोडेल बनाउनु भयो, यससँग पूर्वानुमान गर्नुभयो, र प्लटमा प्रदर्शन गर्नुभयो!
---
## 🚀चुनौती
-यस डेटासेटबाट फरक भेरिएबल प्लट गर्नुहोस्। संकेत: यो लाइन सम्पादन गर्नुहोस्: `X = X[:,2]`। यस डेटासेटको लक्ष्यलाई ध्यानमा राख्दै, मधुमेह रोगको प्रगति बारे तपाईं के पत्ता लगाउन सक्षम हुनुहुन्छ?
-
-## [पोस्ट-व्याख्यान क्विज](https://ff-quizzes.netlify.app/en/ml/)
+यो डेटासेटबाट फरक चल (variable) प्लट गर्नुहोस्। संकेत: यो लाइन सम्पादन गर्नुहोस्: `X = X[:,2]`। यस डेटासेटको लक्ष्यको आधारमा, तपाई मधुमेह रोगको प्रगतिको बारेमा के पत्ता लगाउन सक्नुहुन्छ?
+## [पाठपश्चात क्विज](https://ff-quizzes.netlify.app/en/ml/)
-## समीक्षा र आत्म अध्ययन
+## समीक्षा र आत्म-अध्ययन
-यस ट्युटोरियलमा, तपाईंले साधारण रेखीय प्रतिगमनसँग काम गर्नुभयो, न कि एकविविध वा बहुविविध रेखीय प्रतिगमनसँग। यी विधिहरूको बीचको भिन्नताहरूको बारेमा अलिकति पढ्नुहोस्, वा [यो भिडियो](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) हेर्नुहोस्।
+यस ट्युटोरियलमा, तपाईले सरल रेखीय प्रतिस्थापनसँग काम गर्नुभयो, बहुविमीय वा बहुविध रेखीय प्रतिस्थापनमध्ये होइन। यी विधिहरूबीचको भिन्नता बारे अलिकति पढ्नुहोस्, वा यो [भिडियो](https://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) लिनुहोस्।
+प्रतिस्थापनको अवधारणा बारे थप पढ्नुहोस् र सोच्नुहोस् कि यस प्रविधिले कस्ता प्रकारका प्रश्नहरूको उत्तर दिन सक्छ। आफ्नो बुझाइ गाढा बनाउन यो [ट्युटोरियल](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
+
+**अस्वीकरण**:
+यो दस्तावेज़ 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/README.md b/translations/ne/2-Regression/2-Data/README.md
index 0dedaa9cf..6aa013f15 100644
--- a/translations/ne/2-Regression/2-Data/README.md
+++ b/translations/ne/2-Regression/2-Data/README.md
@@ -1,62 +1,62 @@
-# Scikit-learn प्रयोग गरेर Regression मोडेल बनाउने: डेटा तयार पार्ने र दृश्यात्मक बनाउने
+# Scikit-learn प्रयोग गरेर एउटा regression मोडेल बनाउने: डाटा तयार पार्नुहोस् र दृश्य बनाउनुहोस्
-
+
-इन्फोग्राफिक: [Dasani Madipalli](https://twitter.com/dasani_decoded)
+इन्फोग्राफिक द्वारा [दासानी मडिपल्ली](https://twitter.com/dasani_decoded)
-## [पाठ अघि क्विज](https://ff-quizzes.netlify.app/en/ml/)
+## [पूर्व-व्याख्यान क्विज](https://ff-quizzes.netlify.app/en/ml/)
-> ### [यो पाठ R मा पनि उपलब्ध छ!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
+> ### [यो पाठ R मा उपलब्ध छ!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
## परिचय
-अब तपाईं Scikit-learn प्रयोग गरेर मेसिन लर्निङ मोडेल निर्माण गर्न आवश्यक उपकरणहरूसँग तयार हुनुहुन्छ। तपाईं आफ्नो डेटासँग प्रश्न सोध्न र ML समाधानहरू लागू गर्न तयार हुनुहुन्छ। डेटा प्रयोग गर्दा र ML समाधानहरू लागू गर्दा, सही प्रश्न सोध्न जान्नु अत्यन्त महत्त्वपूर्ण छ ताकि तपाईं आफ्नो डेटासेटको सम्भावनाहरू सही रूपमा अनलक गर्न सक्नुहुन्छ।
+अब जब तपाईं Scikit-learn सँग मेसिन लर्निङ मोडेल बनाउने उपकरणहरू तयार पारिसक्नुभयो, तपाईं आफ्नो डाटाबाट प्रश्न सोध्न तयार हुनुहुन्छ। डाटासँग काम गर्दा र ML समाधानहरू लागू गर्दा, आफ्नो डेटासेटको सम्भावनाहरू सही तरिकाले अनलक गर्नका लागि सही प्रश्न कसरी सोध्ने भन्ने कुरा बुझ्नु अत्यन्त महत्वपूर्ण छ।
-यस पाठमा, तपाईं सिक्नुहुनेछ:
+यस पाठमा, तपाईंले सिक्नु हुने छ:
-- मोडेल निर्माणका लागि डेटा कसरी तयार गर्ने।
-- डेटा दृश्यात्मकताका लागि Matplotlib कसरी प्रयोग गर्ने।
+- मोडेल निर्माणको लागि आफ्नो डाटा कसरी तयार गर्ने।
+- डाटा दृश्याङ्कनका लागि Matplotlib कसरी प्रयोग गर्ने।
+- बढी ब्यक्तिगत डाटा दृश्याङ्कनका लागि Seaborn कसरी प्रयोग गर्ने।
-## आफ्नो डेटासँग सही प्रश्न सोध्ने
+## आफ्नो डाटा को सही प्रश्न सोध्नुहोस्
-तपाईंलाई चाहिएको उत्तरले तपाईंले कुन प्रकारको ML एल्गोरिदम प्रयोग गर्ने निर्धारण गर्दछ। र तपाईंले पाउने उत्तरको गुणस्तर तपाईंको डेटाको प्रकृतिमा धेरै निर्भर गर्दछ।
+तपाईँले जवाफ पाउन चाहनुभएको प्रश्नले तपाईँले कुन प्रकारको ML एल्गोरिदम प्रयोग गर्ने निर्धारण गर्नेछ। र तपाईँले फिर्ता पाएको जवाफको गुणस्तर तपाईँको डाटाको प्रकृतिमा धेरै निर्भर हुनेछ।
-यस पाठका लागि दिइएको [डेटा](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) हेर्नुहोस्। तपाईं यो .csv फाइललाई VS Code मा खोल्न सक्नुहुन्छ। छिटो हेर्दा नै देखिन्छ कि यसमा खाली ठाउँहरू छन्, स्ट्रिङ र संख्यात्मक डेटाको मिश्रण छ। त्यहाँ 'Package' नामको एउटा अचम्मको स्तम्भ पनि छ, जहाँ डेटा 'sacks', 'bins' र अन्य मानहरूको मिश्रण छ। वास्तवमा, यो डेटा अलि अस्तव्यस्त छ।
+यस पाठको लागि प्रदान गरिएको [डाटा](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 - डेटासेट विश्लेषण र सफा गर्ने")
+[](https://youtu.be/5qGjczWTrDQ "ML for beginners - How to Analyze and Clean a Dataset")
-> 🎥 माथिको छविमा क्लिक गरेर यस पाठका लागि डेटा तयार गर्ने छोटो भिडियो हेर्नुहोस्।
+> 🎥 यस पाठको लागि डाटा तयार गर्ने काम गरी रहेको छोटो भिडियो हेर्न माथिको तस्वीरमा क्लिक गर्नुहोस्।
-सामान्यतया, तपाईंलाई पूर्ण रूपमा तयार डेटासेट प्राप्त हुँदैन, जसलाई सीधा ML मोडेल बनाउन प्रयोग गर्न सकिन्छ। यस पाठमा, तपाईंले कच्चा डेटासेटलाई मानक Python पुस्तकालयहरू प्रयोग गरेर कसरी तयार गर्ने सिक्नुहुनेछ। साथै, डेटा दृश्यात्मक बनाउन विभिन्न प्रविधिहरू पनि सिक्नुहुनेछ।
+वास्तवमा, पूर्ण रूपमा प्रयोग गर्न तयार गरिएका डेटासेट कडाइले पाउनु सामान्य कुरा होइन। यस पाठमा, तपाईं सामान्य 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) बाट निकालिएको हो, जुन संयुक्त राज्यको कृषि विभागद्वारा वितरण गरिएको हो।
+यस फोल्डरमा तपाईँले `data` रुट फोल्डरमा रहेको [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) नामको .csv फाइल फेला पार्नेछ जुन कद्दुहरूको बजारका बारेमा शहर अनुसार वर्गीकृत गरी १७५७ पङ्क्तिहरू समावेश गर्दछ। यो कच्चा डाटा संयुक्त राज्य कृषि विभागबाट वितरण गरिएको [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) बाट निकालेको हो।
-### डेटा तयार पार्दै
+### डाटा तयार पार्दै
-यो डेटा सार्वजनिक डोमेनमा छ। यसलाई USDA वेबसाइटबाट प्रत्येक शहरका लागि छुट्टाछुट्टै फाइलहरूमा डाउनलोड गर्न सकिन्छ। धेरै छुट्टाछुट्टै फाइलहरूबाट बच्नका लागि, हामीले सबै शहरको डेटा एक स्प्रेडशीटमा जोड्यौं। यसरी, हामीले डेटा पहिले नै _थोरै तयार_ गरिसकेका छौं। अब, डेटा नजिकबाट हेरौं।
+यो डाटा सार्वजनिक डोमेनमा छ। यसलाई USDA वेबसाइटबाट प्रत्येक शहरका लागि धेरै अलग फाइलहरूमा डाउनलोड गर्न सकिन्छ। धेरै अलग फाइलहरूबाट बच्न हामीले सबै शहरको डेटा एक स्प्रेडशीटमा समेटेका छौं, त्यसैले डाटा पहिले नै अलिकति _तयार_ गरिएको छ। अब डाटा नजिकबाट हेर्नेछौं।
-### कद्दू डेटा - प्रारम्भिक निष्कर्ष
+### कद्दु डाटा - प्रारम्भिक निष्कर्षहरू
-तपाईंले यस डेटामा के देख्नुभयो? तपाईंले पहिले नै देख्नुभयो कि यसमा स्ट्रिङ, नम्बर, खाली ठाउँ र अचम्मका मानहरूको मिश्रण छ, जसलाई बुझ्न आवश्यक छ।
+यस डाटामा तपाईंले के देख्नुभयो? तपाईंले पहिले नै देख्नुभएको छ कि त्यहाँ स्ट्रिङहरू, अंकहरू, रिक्त स्थानहरू र अर्थ लगाउनुपर्ने अजीब मानहरू मिश्रित छन्।
-Regression प्रविधि प्रयोग गरेर तपाईं यस डेटाबाट कुन प्रश्न सोध्न सक्नुहुन्छ? "दिइएको महिनामा बिक्रीका लागि कद्दूको मूल्यको भविष्यवाणी गर्नुहोस्" भन्ने प्रश्न कस्तो होला? फेरि डेटालाई हेर्दा, तपाईंले यो कार्यका लागि आवश्यक डेटा संरचना बनाउन केही परिवर्तन गर्नुपर्नेछ।
+Regression प्रविधि प्रयोग गरेर यो डाटाबाट कुन प्रश्न सोध्न सकिन्छ? "दिइएको महिनामा बिक्रीको लागि कद्दुको मूल्य भविष्यवाणी गर्नुहोस्" कस्तो हुन्छ? डाटामा फेरि हेर्दा, कार्यका लागि आवश्यक डाटा संरचना बनाउन केही परिवर्तनहरू गर्नुपर्ने छ।
+## अभ्यास - कद्दु डाटा विश्लेषण गर्नुहोस्
-## अभ्यास - कद्दू डेटा विश्लेषण गर्नुहोस्
+हामी [Pandas](https://pandas.pydata.org/) (नाम `Python Data Analysis` को लागि हो) प्रयोग गर्नेछौं, जुन डेटा आकार दिने काममा धेरै उपयोगी उपकरण हो, यस कद्दु डाटालाई विश्लेषण र तयारी गर्नका लागि।
-आउनुहोस्, [Pandas](https://pandas.pydata.org/) प्रयोग गरौं, (यसको नाम `Python Data Analysis` बाट आएको हो) जुन डेटा आकार दिनका लागि धेरै उपयोगी उपकरण हो, र यस कद्दू डेटालाई विश्लेषण र तयार गरौं।
+### पहिले, हराएका मिति जाँच गर्नुहोस्
-### पहिलो, हराएका मितिहरू जाँच गर्नुहोस्
+तपाईंले पहिले हराएका मिति जाँच्न कदमहरू लिनु आवश्यक हुनेछ:
-तपाईंले पहिले हराएका मितिहरू जाँच गर्नका लागि केही कदम चाल्नुपर्नेछ:
+१. मितिहरूलाई महिना फाराम्याटमा रूपान्तरण गर्नुहोस् (यी अमेरिकी मितिहरू हुन्, त्यसैले फारम्याट `MM/DD/YYYY` हो)।
+२. नयाँ स्तम्भमा महिना निकाल्नुहोस्।
-1. मितिहरूलाई महिना ढाँचामा रूपान्तरण गर्नुहोस् (यी अमेरिकी मितिहरू हुन्, त्यसैले ढाँचा `MM/DD/YYYY` हो)।
-2. नयाँ स्तम्भमा महिना निकाल्नुहोस्।
+Visual Studio Code मा _notebook.ipynb_ फाइल खोल्नुहोस् र स्प्रेडशीट नयाँ Pandas डाटा फ्रेममा आयात गर्नुहोस्।
-_नोटबुक.ipynb_ फाइललाई Visual Studio Code मा खोल्नुहोस् र स्प्रेडशीटलाई नयाँ Pandas dataframe मा आयात गर्नुहोस्।
-
-1. `head()` फङ्क्सन प्रयोग गरेर पहिलो पाँच पङ्क्तिहरू हेर्नुहोस्।
+१. पहिलो पाँच पङ्क्तिहरू हेर्न `head()` फङ्सन प्रयोग गर्नुहोस्।
```python
import pandas as pd
@@ -64,30 +64,30 @@ _नोटबुक.ipynb_ फाइललाई Visual Studio Code मा ख
pumpkins.head()
```
- ✅ कुन फङ्क्सन प्रयोग गरेर अन्तिम पाँच पङ्क्तिहरू हेर्न सकिन्छ?
+ ✅ पछिल्ला पाँच पङ्क्तिहरू हेर्न कुन फङ्सन प्रयोग गर्नुहुन्छ?
-1. हालको dataframe मा हराएको डेटा छ कि छैन जाँच गर्नुहोस्:
+१. हालको डाटा फ्रेममा कुनै हराएको डेटा छ कि छैन जाँच गर्नुहोस्:
```python
pumpkins.isnull().sum()
```
- हराएको डेटा छ, तर यो कार्यका लागि सायद महत्त्वपूर्ण नहोला।
+ केही डेटा हराएको छ, तर सायद यो यहाँको कार्यका लागि मतलब राख्दैन।
-1. आफ्नो dataframe लाई सजिलो बनाउन, `loc` फङ्क्सन प्रयोग गरेर तपाईंलाई चाहिने स्तम्भहरू मात्र चयन गर्नुहोस्। `:` ले सबै पङ्क्तिहरूलाई जनाउँछ।
+१. तपाईँको डाटा फ्रेमसँग काम गर्न सजिलो बनाउनका लागि आवश्यक स्तम्भ मात्र चयन गर्नुहोस्, `loc` फङ्सन प्रयोग गरेर जसले मूल डाटा फ्रेमबाट पङ्क्तिहरू (पहिलो प्यारामिटर) र स्तम्भहरू (दोस्रो प्यारामिटर) निकाल्छ। तलको अभिव्यक्तिमा `:` को अर्थ "सबै पङ्क्तिहरू" हो।
```python
columns_to_select = ['Package', 'Low Price', 'High Price', 'Date']
pumpkins = pumpkins.loc[:, columns_to_select]
```
-### दोस्रो, कद्दूको औसत मूल्य निर्धारण गर्नुहोस्
+### दोस्रो, कद्दुको औसत मूल्य निर्धारण गर्नुहोस्
-दिइएको महिनामा कद्दूको औसत मूल्य निर्धारण गर्न सोच्नुहोस्। यस कार्यका लागि कुन स्तम्भहरू चयन गर्नुहुन्छ? संकेत: तपाईंलाई ३ स्तम्भहरू चाहिन्छ।
+दिइएको महिनामा कद्दुको औसत मूल्य कसरी निर्धारण गर्ने बारे सोच्नुहोस्। कुन स्तम्भहरू तपाईंले कार्यका लागि छनौट गर्नुहुन्छ? संकेत: तपाईंलाई ३ स्तम्भहरू चाहिन्छ।
-समाधान: `Low Price` र `High Price` स्तम्भहरूको औसत लिएर नयाँ Price स्तम्भमा राख्नुहोस्, र Date स्तम्भलाई मात्र महिना देखाउने गरी रूपान्तरण गर्नुहोस्। माथिको जाँच अनुसार, मिति वा मूल्यहरूको लागि हराएको डेटा छैन।
+समाधान: `Low Price` र `High Price` स्तम्भहरूको औसत लिएर नयाँ मूल्य स्तम्भ भर्नुहोस्, र मिति स्तम्भलाई केवल महिना देखाउने गरी रूपान्तरण गर्नुहोस्। सौभाग्यवश, माथिको जाँच अनुसार, मिति वा मूल्यहरूको लागि कुनै हराएको डेटा छैन।
-1. औसत गणना गर्न, निम्न कोड थप्नुहोस्:
+१. औसत गणना गर्न निम्न कोड थप्नुहोस्:
```python
price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2
@@ -96,37 +96,37 @@ _नोटबुक.ipynb_ फाइललाई Visual Studio Code मा ख
```
- ✅ कुनै पनि डेटा जाँच गर्न `print(month)` प्रयोग गर्न स्वतन्त्र महसुस गर्नुहोस्।
+ ✅ तपाईँ आफूले जाँच गर्न चाहनुभएको कुनैपनि डाटा `print(month)` प्रयोग गरेर प्रिन्ट गर्न सक्नुहुन्छ।
-2. अब, आफ्नो रूपान्तरण गरिएको डेटा नयाँ Pandas dataframe मा प्रतिलिपि गर्नुहोस्:
+२. अब, आफ्नो रूपान्तरित डाटा नयाँ Pandas डाटा फ्रेममा कपी गर्नुहोस्:
```python
new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price})
```
- आफ्नो dataframe प्रिन्ट गर्दा, तपाईंले सफा र व्यवस्थित डेटासेट देख्नुहुनेछ, जसमा तपाईं नयाँ regression मोडेल निर्माण गर्न सक्नुहुन्छ।
+ आफ्नो डाटा फ्रेम प्रिन्ट गर्दा तपाईंलाई सफा, व्यवस्थित डाटासेट देखिनेछ जसमा नयाँ regression मोडेल बनाउन सकिन्छ।
-### तर पर्खनुहोस्! यहाँ केही अचम्मको कुरा छ
+### तर पर्खनुहोस्! यहाँ केही अजीब छ
-यदि तपाईं `Package` स्तम्भलाई हेर्नुहुन्छ भने, कद्दूहरू धेरै फरक कन्फिगरेसनमा बेचिन्छन्। केही '1 1/9 bushel' मा, केही '1/2 bushel' मा, केही प्रति कद्दू, केही प्रति पाउन्ड, र केही ठूला बक्सहरूमा बेचिन्छन्।
+यदि तपाईंले `Package` स्तम्भ हेर्नुभयो भने, कद्दुहरू धेरै विभिन्न तरिकाले बेचिन्छन्। केही '1 1/9 bushel' मापनमा, केही '1/2 bushel' मापनमा, केही प्रति कद्दु, केही प्रति पाउण्ड, र केही फरक फरक चौडाइ भएका ठूलो बक्समा बेचिन्छन्।
-> कद्दूलाई स्थिर रूपमा तौल गर्न गाह्रो देखिन्छ
+> कद्दुहरूलाई स्थिर रूपमा तौल्न निकै गाह्रो देखिन्छ
-मूल डेटामा हेर्दा, `Unit of Sale` 'EACH' वा 'PER BIN' भएका वस्तुहरूमा `Package` प्रकार इन्च, बिन, वा 'each' हुन्छ। कद्दूलाई स्थिर रूपमा तौल गर्न गाह्रो देखिन्छ, त्यसैले `Package` स्तम्भमा 'bushel' स्ट्रिङ भएका कद्दूहरू मात्र चयन गरेर फिल्टर गरौं।
+मूल डेटामा हेर्दा, `Unit of Sale` 'EACH' वा 'PER BIN' बराबर भएका datाहरूमा `Package` प्रकार इन्च अनुसार, बिन अनुसार, वा 'each' रहेको देखिन्छ। कद्दुहरूलाई स्थिर रूपमा तौल्न निकै गाह्रो हुन्छ, त्यसैले हामी 'bushel' स्ट्रिङ भएका कद्दुहरू मात्र चयन गरेर फिल्टर गर्नेछौं।
-1. .csv आयातको सुरुमा फिल्टर थप्नुहोस्:
+१. फाइलको सुरूमा, प्रारम्भिक .csv आयात अन्तर्गत फिल्टर थप्नुहोस्:
```python
pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]
```
- अब डेटा प्रिन्ट गर्दा, तपाईंले 'bushel' भएका करिब 415 पङ्क्तिहरू मात्र देख्नुहुनेछ।
+ यदि तपाईं अहिले डाटा प्रिन्ट गर्नु हुन्छ भने, तपाईंले केवल बसल अनुसारका ४१५ भन्दा बढि पङ्क्तिहरू देख्नुहुनेछ।
-### तर पर्खनुहोस्! अझै केही गर्न बाँकी छ
+### तर पर्खनुहोस्! अर्को केहि गर्ने छ
-के तपाईंले देख्नुभयो कि प्रत्येक पङ्क्तिमा bushel को मात्रा फरक छ? तपाईंले मूल्यलाई प्रति bushel सामान्यीकृत गर्न आवश्यक छ, त्यसैले मूल्यलाई मानकीकरण गर्न केही गणना गर्नुहोस्।
+के तपाईंले नोट गर्नुभयो कि बसल मात्र पङ्क्तिअनुसार फरक हुन्छ? मूल्य निर्धारणलाई सामान्य बनाउनु आवश्यक छ ताकि तपाईं बसल प्रति मूल्य देखाउन सक्नुहोस्, त्यसैले केही गणना गरी मानकीकरण गर्नुहोस्।
-1. नयाँ_pumpkins dataframe बनाउने ब्लकपछि यी लाइनहरू थप्नुहोस्:
+१. नयाँ_pumpkins डाटा फ्रेम सिर्जना गर्ने ब्लक पछि यी पङ्क्तिहरू थप्नुहोस्:
```python
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9)
@@ -134,38 +134,38 @@ _नोटबुक.ipynb_ फाइललाई Visual Studio Code मा ख
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 मूल्य निर्धारण गरौं। कद्दूको bushel को अध्ययनले देखाउँछ कि तपाईंको डेटाको प्रकृति बुझ्न कति महत्त्वपूर्ण छ!
+✅ [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) अनुसार, बसलको तौल उत्पादनको प्रकारमा निर्भर हुन्छ, किनकि यो मात्रा मापन हो। "उदाहरणका लागि टमाटरको बसल supposed to weigh 56 pounds... पातहरू र हरियो पातले कम तौलमा अधिक ठाउँ ओगट्छन्, त्यसैले स्पिन्याचको बसल मात्र 20 पाउण्ड हुन्छ।" यो सबै अलि जटिल छ! बसल देखि पाउण्ड रूपान्तरण नगरी बसल अनुसार मूल्य निर्धारण गर्न छोडौं। यस कद्दु बसलहरूको अध्ययनले तपाईंको डाटाको प्रकृति बुझ्न कत्तिको महत्त्वपूर्ण छ भन्ने देखाउँछ!
-अब, तपाईं bushel मापनको आधारमा प्रति एकाइ मूल्य विश्लेषण गर्न सक्नुहुन्छ। डेटा फेरि प्रिन्ट गर्दा, तपाईंले यसलाई मानकीकृत देख्नुहुनेछ।
+अब तपाईं बसल मापनको आधारमा मूल्य निर्धारण विश्लेषण गर्न सक्नुहुन्छ। यदि तपाईं डाटा फेरि प्रिन्ट गर्नुहुन्छ, तपाईंले कसरि यो मानकीकृत भएको देख्न सक्नुहुन्छ।
-✅ के तपाईंले देख्नुभयो कि आधा-bushel मा बेचिएका कद्दूहरू धेरै महँगा छन्? किन यस्तो होला? संकेत: साना कद्दूहरू ठूला कद्दूहरूभन्दा धेरै महँगा हुन्छन्, सायद किनभने प्रति bushel धेरै साना कद्दूहरू हुन्छन्, जबकि ठूला कद्दूहरूले धेरै ठाउँ लिन्छन्।
+✅ के तपाईंले नोट गर्नुभयो कि आधा बसलमा बेचिएका कद्दुहरू धेरै महँगो छन्? के तपाईं कारण थाहा पाउन सक्नुहुन्छ? संकेत: सानो कद्दुहरू ठूलो भन्दा धेरै महँगो हुन सक्छ, सम्भवतः किनभने ठूलो खाली पाई कद्दुले एक बसलमा धेरै कम संख्यामा कद्दुहरू समेट्छ, सानो धेरै हुन्छ।
-## दृश्यात्मकता रणनीतिहरू
+## दृश्यांकन रणनीतिहरू
-डेटा वैज्ञानिकको भूमिकाको एक हिस्सा भनेको उनीहरूले काम गरिरहेको डेटाको गुणस्तर र प्रकृति प्रदर्शन गर्नु हो। यसका लागि, उनीहरूले प्रायः रोचक दृश्यात्मकता, जस्तै प्लट, ग्राफ, र चार्टहरू सिर्जना गर्छन्, जसले डेटाका विभिन्न पक्षहरू देखाउँछ। यसरी, उनीहरूले दृश्यात्मक रूपमा सम्बन्ध र खाडलहरू देखाउन सक्छन्, जुन अन्यथा पत्ता लगाउन गाह्रो हुन्छ।
+डाटा वैज्ञानिकको भूमिकाको एक भाग भनेको उनीहरूले काम गरिरहेका डाटाको गुणस्तर र प्रकृति प्रदर्शन गर्नु हो। यसका लागि, उनीहरूले प्रायः रोचक दृश्यांकनहरू, वा प्लट, ग्राफ, र चार्टहरू सिर्जना गर्छन्, जसले डाटाका विभिन्न पक्षहरू देखाउँछन्। यस तरिकाले, उनीहरूले दृश्यरूपमा सम्बन्धहरू र खाली ठाउँहरू देखाउन सक्षम हुन्छन् जुन अन्यथा भेट्न गाह्रो हुन्छ।
-[](https://youtu.be/SbUkxH6IJo0 "ML for beginners - Matplotlib प्रयोग गरेर डेटा दृश्यात्मकता")
+[](https://youtu.be/SbUkxH6IJo0 "ML for beginners - How to Visualize Data with Matplotlib")
-> 🎥 माथिको छविमा क्लिक गरेर यस पाठका लागि डेटा दृश्यात्मकता गर्ने छोटो भिडियो हेर्नुहोस्।
+> 🎥 यस पाठको लागि डाटा दृश्याङ्कन गर्दै गरेको छोटो भिडियो हेर्न माथिको तस्वीरमा क्लिक गर्नुहोस्।
-दृश्यात्मकताले मेसिन लर्निङ प्रविधि निर्धारण गर्न पनि मद्दत गर्न सक्छ। उदाहरणका लागि, यदि scatterplot ले रेखा पछ्याएजस्तो देखिन्छ भने, डेटा linear regression अभ्यासका लागि उपयुक्त छ।
+दृश्यांकनहरूले कुन मेसिन लर्निङ प्रविधि डाटाको लागि सबैभन्दा उपयुक्त छ निर्धारण गर्नमा मद्दत गर्न सक्छ। उदाहरणका लागि, कुनै स्क्याटरप्लटले लाइनको अनुसरण गर्दै देखियो भने, यो संकेत हो कि डाटा रेखीय regression अभ्यासको लागि राम्रो उम्मेदवार हुन सक्छ।
-Jupyter notebooks मा राम्रोसँग काम गर्ने डेटा दृश्यात्मकता पुस्तकालय [Matplotlib](https://matplotlib.org/) हो (जसलाई तपाईंले अघिल्लो पाठमा पनि देख्नुभयो)।
+Jupyter नोटबुकहरूमा राम्रोसँग काम गर्ने एउटा डाटा दृश्यांकन पुस्तकालय [Matplotlib](https://matplotlib.org/) हो (जुन तपाईंले अघिल्लो पाठमा पनि देख्नुभयो)।
-> डेटा दृश्यात्मकतामा थप अनुभव लिन [यी ट्युटोरियलहरू](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott) हेर्नुहोस्।
+> डाटा दृश्याङ्कनमा अझ अनुभव पाउन [यी ट्यूटोरियलहरू](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott) हेर्नुहोस्।
## अभ्यास - Matplotlib सँग प्रयोग गर्नुहोस्
-तपाईंले भर्खरै सिर्जना गर्नुभएको नयाँ dataframe प्रदर्शन गर्न केही आधारभूत प्लटहरू बनाउन प्रयास गर्नुहोस्। आधारभूत लाइन प्लटले के देखाउँछ?
+तपाईंले हालै सिर्जना गरेको नयाँ डाटा फ्रेम प्रदर्शन गर्न केहि आधारभूत प्लटहरू बनाउन प्रयास गर्नुहोस्। आधारभूत लाइन प्लटले के देखाउनेछ?
-1. फाइलको माथि, Pandas आयात अन्तर्गत Matplotlib आयात गर्नुहोस्:
+१. फाइलको माथि, Pandas आयात मुनि Matplotlib आयात गर्नुहोस्:
```python
import matplotlib.pyplot as plt
```
-1. सम्पूर्ण notebook पुन: चलाउनुहोस्।
-1. notebook को तल, डेटालाई बक्सको रूपमा प्लट गर्न एउटा सेल थप्नुहोस्:
+१. सम्पूर्ण नोटबुक फेरि चलाउनुहोस्।
+१. नोटबुकको तल, डाटालाई बक्सको रूपमा प्लट गर्ने एउटा सेल थप्नुहोस्:
```python
price = new_pumpkins.Price
@@ -174,44 +174,121 @@ Jupyter notebooks मा राम्रोसँग काम गर्ने
plt.show()
```
- 
+ 
- के यो उपयोगी प्लट हो? यसले तपाईंलाई के अचम्मित गराउँछ?
+ के यो उपयोगी प्लट हो? के यसमा केही तपाईंलाई अचम्म लाग्यो?
- यो विशेष रूपमा उपयोगी छैन, किनभने यसले तपाईंको डेटालाई महिनामा बिन्दुहरूको रूपमा मात्र देखाउँछ।
+ यो त्यति उपयोगी छैन किनकि यसले तपाईंको डाटालाई दिइएको महिनामा पोइन्टहरूको फैलावटमा मात्र देखाउँछ।
### यसलाई उपयोगी बनाउनुहोस्
-चार्टहरूले उपयोगी डेटा प्रदर्शन गर्न, तपाईंले प्रायः डेटालाई कुनै न कुनै रूपमा समूह गर्न आवश्यक पर्छ। y अक्षले महिनाहरू देखाउने र डेटा वितरण प्रदर्शन गर्ने प्लट सिर्जना गरौं।
+चार्टहरूलाई उपयोगी डाटा देखाउन, तपाईं प्रायः डाटालाई कसैले सँगठित गर्नुपर्छ। हामी यस्तो प्लट बनाउन प्रयास गरौं जहाँ y अक्षहरू महिना देखाउँछन् र डाटाले डाटा वितरण प्रदर्शन गर्दछ।
-1. समूहित बार चार्ट बनाउन एउटा सेल थप्नुहोस्:
+१. समूहित बार चार्ट बनाउन एउटा सेल थप्नुहोस्:
```python
new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar')
plt.ylabel("Pumpkin Price")
```
- 
+ 
+
+ यो बढी उपयोगी डाटा दृश्याङ्कन हो! यसले देखाउँछ कि कद्दुहरूको सबैभन्दा उच्च मूल्य सेप्टेम्बर र अक्टोबरमा हुन्छ। के यो तपाईंको अपेक्षामा मिल्छ? किन वा किन होइन?
+
+## अभ्यास - Seaborn सँग प्रयोग गर्नुहोस्
+
+Matplotlib शक्तिशाली छ, तर परिष्कृत चार्ट बनाउन धेरै कोड चाहिन्छ। [Seaborn](https://seaborn.pydata.org/) Matplotlib माथि बनेको लाइब्रेरी हो जुन सांख्यिकीय डाटा दृश्याङ्कनको लागि डिज़ाइन गरिएको हो। यसले Pandas डाटा फ्रेमसँग सिधै काम गर्छ, आकर्षक डिफल्ट शैलीहरू लागू गर्छ, र कम कोडमा सूचनात्मक प्लटहरू सिर्जना गर्न अनुमति दिन्छ। Seaborn ले Matplotlib वस्तुहरू फर्काउने भएकाले, तपाईंले पहिले सिकेका सबै Matplotlib उपकरणहरू नतिजा परिमार्जन गर्न सक्नुहुन्छ।
+
+> यदि तपाईंले Seaborn इन्स्टल गर्नुभएको छैन भने, `pip install seaborn` संग इन्स्टल गर्नुहोस्।
+
+१. नोटबुकको माथि, अन्य आयातहरू मुनि Seaborn आयात गर्नुहोस्। यसलाई सामान्यतः `sns` को रुपमा आयात गरिन्छ:
+
+ ```python
+ import seaborn as sns
+ ```
+
+### सम्बन्धहरू देखाउन स्क्याटर प्लटहरू
+
+मोडेल निर्माण अघि डेटा अन्वेषणको ठूलो भाग _सम्बन्धहरू_ खोज्नु हो। [स्क्याटर प्लट](https://en.wikipedia.org/wiki/Scatter_plot) यसका लागि उत्तम उपकरणहरूमध्ये एक हो: यदि पोइन्टहरूले लाइन पछ्याउँदै देखिए भने, दुई भेरिएबलहरू सम्वन्धित हुन सक्छन्, जसले रेखीय regression मोडेल सम्भव बनाउँछ।
+
+१. पहिले जस्तै मूल्य-देखि-महिना स्क्याटर प्लट पुनः सिर्जना गर्नुहोस्, यसपटक Seaborn को [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) (संबंधित प्लट) प्रयोग गरेर जुन तपाईंको डाटा फ्रेम स्तम्भहरूसँग सिधै काम गर्छ:
+
+ ```python
+ sns.relplot(x="Price", y="Month", data=new_pumpkins)
+ ```
+
+ 
+
+ देख्नुहोस् कसरी तपाईंले _स्तम्भ नामहरू_ र डाटा फ्रेम पास गर्नुहुन्छ, र Seaborn ले अक्ष लेबलहरू आफैं नियन्त्रित गर्छ।
+
+२. `kind="line"` पास गरेर लाइन प्लटमा पनि स्विच गर्न सक्नुहुन्छ। Seaborn ले लाइन वरिपरि विश्वास अन्तराल देखाउन छायांकन पनि बनाउँछ:
+
+ ```python
+ sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins)
+ ```
+
+ 
+
+ यो विशेष डाटा धेरै आवाजयुक्त छ, त्यसैले लाइन प्लट सबभन्दा स्पष्ट विकल्प होइन — तर यसले देखाउँछ कि Seaborn मा चार्ट प्रकारहरू सजिलै परिवर्तन गर्न सकिन्छ।
+
+### वितरण देखाउन बार चार्टहरू
+
+
+पहिले तपाईंले म्यानुअली डाटा समूह बनाउनु भएको थियो Matplotlib को साथ बार चार्ट बनाउन। Seaborn को [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) (श्रेणीगत प्लट) तपाईंको लागि समूह बनाउने र संग्रह गर्ने काम गर्न सक्छ। पूर्वनिर्धारित रूपमा `kind="bar"` प्रत्येक श्रेणीको औसत देखाउँछ साथै विश्वास अन्तराल संकेत गर्ने कालो रेखा देखाउँछ।
+
+1. एक महिनाको औसत मूल्यको बार चार्ट बनाउनुहोस्:
+
+ ```python
+ sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar")
+ ```
+
+ 
+
+ यसले Matplotlib सँग तपाईंले देख्नुभएको कुरा पुष्टि गर्छ — मूल्यहरू सेप्टेम्बर र अक्टोबरमा उच्च हुन्छन् — तर Seaborn ले प्रत्येक महिनाभित्र मूल्य कति _भिन्न_ हुन्छ भन्ने पनि देखाउँछ।
+
+### सहसम्बन्धहरू देखाउनका लागि हीटम्यापहरू
+
+स्क्याटर प्लटहरूले एक पटकमा दुई भेरिएबलहरूको तुलना गर्छ। जब तपाईंसँग धेरै संख्यात्मक स्तम्भहरू हुन्छन्, तब [हीटम्याप](https://en.wikipedia.org/wiki/Heat_map) ले तपाइँलाई एकैचोटी हरेक स्तम्भ जोडिएको सम्बन्धको शक्ति हेर्न अनुमति दिन्छ। यो मोडेलमा के खुवाउने चुनौति गर्नु अघि सबैभन्दा बढी सहसम्बन्ध भएका विशेषताहरू पत्ता लगाउने सामान्य तरिका हो (र यसै किसिमको चार्ट पछि वर्गीकरणमा भ्रम म्याट्रिक्स देखाउन प्रयोग गरिन्छ)।
+
+1. Pandas को साथ सहसम्बन्ध म्याट्रिक्स बनाउनुहोस्, त्यसपछि Seaborn को [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html) प्रयोग गरी यस्तो बनाउनुहोस्। `annot=True` विकल्पले प्रत्येक सेलमा सहसम्बन्ध मानहरू प्रिन्ट गर्छ:
+
+ ```python
+ correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()
+ sns.heatmap(correlations, annot=True, cmap="coolwarm")
+ ```
+
+ 
+
+ `1` (वा `-1`) नजिकका मूल्यहरूले स्तम्भहरूलाई बलियो _रेखीय_ रूपमा सहसम्बन्धित जनाउँछ। ध्यान दिनुहोस् कि `Low Price` र `High Price` लगभग पूर्ण रूपमा सहसम्बन्धित छन्। अर्कोतर्फ `Month` ले मूल्यसँग केवल कमजोर रेखीय सहसम्बन्ध देखाउँछ — यद्यपि माथिको बार चार्टले सेप्टेम्बर र अक्टोबरमा स्पष्ट मौसमी शिखर देखाएको छ। यो एक महत्त्वपूर्ण पाठ हो: सहसम्बन्ध गुणांकले केवल _सिधा रेखा_ सम्बन्ध मात्र मापन गर्दछ, त्यसैले यसले मौसमी वा अन्य गैर-रेखीय ढाँचाहरू छुटाउन सक्छ। ✅ किन त्यो उपयोगी हुन्छ कि तपाईंले प्रयोग गर्न कुन स्तम्भहरू छान्नु भन्दा पहिले हीटम्याप *र* बार जस्ता चार्टहरू दुवै हेर्नु आवश्यक छ?
+
+### Matplotlib वा Seaborn?
+
+दुवै पुस्तकालयहरू जान्न योग्य छन्:
+
+- **Matplotlib** ले चार्टका हरेक तत्वमा सूक्ष्म नियन्त्रण दिन्छ र लगभग सबै अन्य Python प्लटिङ पुस्तकालयहरूको आधार हो।
+- **Seaborn** उच्च स्तरीय कार्यहरू र आकर्षक पूर्वनिर्धारित सेटिङहरू प्रदान गर्छ, सिधै डेटा फ्रेमहरूसँग काम गर्छ, र एक्सप्लोरेटरी डेटा विश्लेषणका लागि प्रायः छिटो हुन्छ।
- यो उपयोगी डेटा दृश्यात्मकता हो! यसले संकेत गर्छ कि कद्दूको सबैभन्दा उच्च मूल्य सेप्टेम्बर र अक्टोबरमा हुन्छ। के यो तपाईंको अपेक्षासँग मेल खान्छ? किन वा किन होइन?
+एउटा सामान्य कार्यप्रवाह भनेको छिटो डाटा अन्वेषण गर्न Seaborn प्रयोग गर्नु र पछि विवरणहरू अनुकूलन गर्न Matplotlib मा जानु हो।
---
-## 🚀 चुनौती
+## 🚀चुनौती
-Matplotlib ले प्रदान गर्ने विभिन्न प्रकारका दृश्यात्मकता अन्वेषण गर्नुहोस्। Regression समस्याहरूका लागि कुन प्रकारका दृश्यात्मकता सबैभन्दा उपयुक्त छन्?
+Matplotlib र Seaborn ले प्रदान गर्ने विभिन्न प्रकारका भिजुअलाइजेशनहरू अन्वेषण गर्नुहोस्। कुन प्रकारहरू रिग्रेसन समस्याहरूका लागि सबैभन्दा उपयुक्त छन्?
-## [पाठपछि क्विज](https://ff-quizzes.netlify.app/en/ml/)
+## [पाठ पछि क्विज](https://ff-quizzes.netlify.app/en/ml/)
-## समीक्षा र आत्म-अध्ययन
+## समीक्षा र स्व-अध्ययन
-डेटा दृश्यात्मकताका विभिन्न तरिकाहरू हेर्नुहोस्। उपलब्ध विभिन्न पुस्तकालयहरूको सूची बनाउनुहोस् र कुन प्रकारका कार्यहरूको लागि कुन पुस्तकालय सबैभन्दा उपयुक्त छ भनेर नोट गर्नुहोस्, जस्तै 2D दृश्यात्मकता बनाम 3D दृश्यात्मकता। तपाईंले के पत्ता लगाउनुहुन्छ?
+डाटालाई दृश्यात्मक बनाउन विभिन्न तरिकाहरूलाई अवलोकन गर्नुहोस्। उपलब्ध विभिन्न पुस्तकालयहरूको सूची बनाउनुहोस् र कुन-कुन कार्यका लागि कुन सब भन्दा राम्रो हुन्छ खुलाउनुहोस्, जस्तै 2D भिजुअलाइजेशनहरू र 3D भिजुअलाइजेशनहरू। के पत्ता लगाउनु भयो?
-## असाइनमेन्ट
+## गृहकार्य
-[दृश्यात्मकता अन्वेषण गर्दै](assignment.md)
+[भिजुअलाइजेशन अन्वेषण](assignment.md)
---
-**अस्वीकरण**:
-यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरी अनुवाद गरिएको हो। हामी यथासम्भव सटीकता सुनिश्चित गर्न प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटि वा अशुद्धता हुन सक्छ। यसको मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्त्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याका लागि हामी जिम्मेवार हुने छैनौं।
\ No newline at end of file
+
+**अस्वीकरण**:
+यो दस्तावेज़ 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/notebook.ipynb b/translations/ne/2-Regression/2-Data/solution/notebook.ipynb
index eb60740c4..95bfa5a4f 100644
--- a/translations/ne/2-Regression/2-Data/solution/notebook.ipynb
+++ b/translations/ne/2-Regression/2-Data/solution/notebook.ipynb
@@ -3,7 +3,9 @@
{
"cell_type": "markdown",
"metadata": {},
- "source": []
+ "source": [
+ "## पम्पकिनको लागि रैखिक प्रतिगमन - पाठ २\n"
+ ]
},
{
"cell_type": "code",
@@ -220,6 +222,7 @@
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
"pumpkins = pd.read_csv('../../data/US-pumpkins.csv')\n",
"\n",
"pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]\n",
@@ -383,18 +386,78 @@
"plt.ylabel(\"Pumpkin Price\")"
]
},
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Seaborn सँग दृश्यावलोकन\n",
+ "\n",
+ "[Seaborn](https://seaborn.pydata.org/) Matplotlib माथि बनेको छ र डेटा फ्रेमहरूसँग सिधा काम गर्छ, जसले थोरै कोडमा आकर्षक सांख्यिकीय चित्रहरू छिटो तयार पार्न मद्दत गर्दछ।\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### सम्बन्धहरू देखाउनका लागि स्क्याटर प्लटहरू\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", kind=\"line\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### वितरण देखाउन बार चार्टहरू \n"
+ ]
+ },
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
- "source": []
+ "source": [
+ "sns.catplot(x=\"Month\", y=\"Price\", data=new_pumpkins, kind=\"bar\")"
+ ]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "\n---\n\n**अस्वीकरण**: \nयो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको छ। हामी शुद्धताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटि वा अशुद्धता हुन सक्छ। यसको मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं।\n"
+ "### सम्बन्धहरू देखाउनको लागि हीटम्यापहरू\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()\n",
+ "sns.heatmap(correlations, annot=True, cmap=\"coolwarm\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "---\n\n\n**अस्वीकरण**:\nयो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको हो। हामी सही हुन प्रयास गर्छौं, तर कृपया जानकार हुनुस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छन्। मूल दस्तावेज़ यसको मूल भाषामा आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीका लागि व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न कुनै पनि गलत बुझाइ वा त्रुटिको लागि हामी जिम्मेवार छैनौं।\n\n"
]
}
],
@@ -424,13 +487,7 @@
"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"
- }
+ "orig_nbformat": 2
},
"nbformat": 4,
"nbformat_minor": 2
diff --git a/translations/ne/8-Reinforcement/1-QLearning/README.md b/translations/ne/8-Reinforcement/1-QLearning/README.md
index bec19a070..a89b8b3ac 100644
--- a/translations/ne/8-Reinforcement/1-QLearning/README.md
+++ b/translations/ne/8-Reinforcement/1-QLearning/README.md
@@ -1,47 +1,47 @@
-# परिचय: रिइन्फोर्समेन्ट लर्निङ र Q-लर्निङ
+# सुदृढीकरण शिक्षण र Q-शिक्षणमा परिचय
-
-> स्केच नोट [Tomomi Imura](https://www.twitter.com/girlie_mac) द्वारा
+
+> स्केचनोट द्वारा [तोमоми इमुरा](https://www.twitter.com/girlie_mac)
-रिइन्फोर्समेन्ट लर्निङ तीन महत्त्वपूर्ण अवधारणाहरूमा आधारित छ: एजेन्ट, केही अवस्थाहरू, र प्रत्येक अवस्थाका लागि कार्यहरूको सेट। कुनै निर्दिष्ट अवस्थामा कार्य सम्पादन गर्दा, एजेन्टलाई पुरस्कार दिइन्छ। फेरि कम्प्युटर गेम सुपर मारियोको कल्पना गर्नुहोस्। तपाईं मारियो हुनुहुन्छ, तपाईं गेमको स्तरमा हुनुहुन्छ, चट्टानको छेउमा उभिएको। तपाईंको माथि एउटा सिक्का छ। तपाईं मारियो हुनुहुन्छ, गेमको स्तरमा, एक विशिष्ट स्थानमा ... यो तपाईंको अवस्था हो। दायाँतिर एक कदम चाल्नु (एक कार्य) तपाईंलाई चट्टानबाट तल लैजान्छ, र यसले तपाईंलाई कम संख्यात्मक स्कोर दिन्छ। तर, जम्प बटन थिच्दा तपाईंले एक अंक प्राप्त गर्नुहुनेछ र जीवित रहनुहुनेछ। यो सकारात्मक परिणाम हो र यसले तपाईंलाई सकारात्मक संख्यात्मक स्कोर दिनुपर्छ।
+सुदृढीकरण शिक्षणमा तीन महत्वपूर्ण अवधारणाहरू छन्: एजेन्ट, केही अवस्थाहरू, र प्रत्येक अवस्थाको लागि क्रियाहरूको सेट। निर्दिष्ट अवस्थामा कुनै क्रिया कार्यान्वयन गरेर, एजेन्टलाई इनाम दिन्छ। फेरि कल्पना गर्नुहोस् कम्प्युटर खेल सुपर मारियो। तपाईँ मारियो हुनुहुन्छ, खेलको स्तरमा, खाल्डो किनारामा उभिएको। माथि एउटा सिक्का छ। तपाईँ मारियो हुनु, खेलको स्तरमा, कुनै विशेष स्थितिमा ... त्यो तपाईंको अवस्था हो। दायाँतर्फ एक कदम चाल्नु (एक क्रिया) ले तपाईंलाई किनारामा पु-याउँछ, जसले तपाईंलाई न्यून अंक दिन्छ। यद्यपि, जम्प बटन थिच्दा तपाईंले अंक पाउनुहुन्छ र जीवित रहन सक्नुहुन्छ। त्यो सकारात्मक नतिजा हो र त्यसले तपाईंलाई सकारात्मक अंक पुरस्कार दिन्छ।
-रिइन्फोर्समेन्ट लर्निङ र सिमुलेटर (गेम) प्रयोग गरेर, तपाईंले जीवित रहनु र सकेसम्म धेरै अंक प्राप्त गर्न खेल खेल्न सिक्न सक्नुहुन्छ।
+सुदृढीकरण शिक्षण र एक सिमुलेटर (खेल) को प्रयोग गरेर, तपाईंले कसरी खेल खेल्ने सिक्न सक्नुहुन्छ ताकि जिवित रहन र सकेसम्म धेरै अंक प्राप्त गर्न सकियोस्।
-[](https://www.youtube.com/watch?v=lDq_en8RNOo)
+[](https://www.youtube.com/watch?v=lDq_en8RNOo)
-> 🎥 माथिको तस्बिरमा क्लिक गरेर Dmitry बाट रिइन्फोर्समेन्ट लर्निङको चर्चा सुन्नुहोस्
+> 🎥 माथिको तस्बिरमा क्लिक गरी दिमित्रे सुदृढीकरण शिक्षणमा छलफल सुन्नुहोस्
-## [पाठ अघि क्विज](https://ff-quizzes.netlify.app/en/ml/)
+## [पाठअघि प्रश्नोत्तरी](https://ff-quizzes.netlify.app/en/ml/)
-## पूर्वआवश्यकता र सेटअप
+## आवश्यकताहरू र सेटअप
-यस पाठमा, हामी Python मा केही कोडको प्रयोग गर्नेछौं। तपाईंले यो पाठको Jupyter Notebook कोड आफ्नो कम्प्युटरमा वा क्लाउडमा चलाउन सक्षम हुनुपर्छ।
+यस पाठमा, हामी पाइथनमा केही कोडसँग प्रयोग गर्नेछौं। तपाईंले यो पाठको जुपिटर नोटबुक कोड तपाईंको कम्प्युटरमा वा क्लाउडमा कुनै स्थानमा चलाउन सक्षम हुनु पर्नेछ।
-तपाईं [पाठ नोटबुक](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) खोल्न सक्नुहुन्छ र यस पाठलाई निर्माण गर्न सक्नुहुन्छ।
+तपाईं [पाठ नोटबुक](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) फाइल पनि ल्याउन आवश्यक छ, जुन नोटबुक कोडमा प्रयोग गरिएको छ। यसलाई नोटबुकको समान डाइरेक्टरीमा थप्नुहोस्।
+> **सूचना:** यदि तपाईं यो कोड क्लाउडबाट खोलिरहनुभएको छ भने, तपाईंले पनि [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) फाइल ल्याउनुपर्नेछ, जुन नोटबुक कोडमा प्रयोग हुन्छ। यसलाई नोटबुकसँगैको फोल्डरमा राख्नुहोस्।
## परिचय
-यस पाठमा, हामी **[Peter and the Wolf](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)** को संसार अन्वेषण गर्नेछौं, जुन रूसी संगीतकार [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev) द्वारा प्रेरित एक संगीत परी कथा हो। हामी **रिइन्फोर्समेन्ट लर्निङ** प्रयोग गरेर पिटरलाई उसको वातावरण अन्वेषण गर्न, स्वादिष्ट स्याउहरू संकलन गर्न र भेडियासँग भेट्नबाट बच्न दिनेछौं।
+यस पाठमा, हामी **[पिटर र भेड़िया](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)** को संसार खोज्नेछौं, जसलाई रूसी संग्राहक [सेर्गेइ प्रोकोफीभ](https://en.wikipedia.org/wiki/Sergei_Prokofiev) ले संगीतात्मक परी कथा बाट प्रेरणा लिएको हो। हामी **सुदृढीकरण शिक्षण** प्रयोग गर्नेछौं पिटरलाई आफ्नो वातावरण अन्वेषण गरी मिठा स्याउहरू सङ्कलन गर्ने र भेड़ियासँग टक्कर नलाग्ने बनाउन।
-**रिइन्फोर्समेन्ट लर्निङ** (RL) एक सिक्ने प्रविधि हो जसले हामीलाई **एजेन्ट** को कुनै **वातावरण** मा इष्टतम व्यवहार सिक्न अनुमति दिन्छ धेरै प्रयोगहरू चलाएर। यस वातावरणमा एजेन्टको केही **लक्ष्य** हुनुपर्छ, जुन **पुरस्कार कार्य** द्वारा परिभाषित हुन्छ।
+**सुदृढीकरण शिक्षण** (RL) एउटा सिकाइ प्रविधि हो जसले हामीलाई एउटा **एजेन्ट** को सर्वश्रेष्ठ व्यवहार सिक्न अनुमति दिन्छ, कुनै **पर्यावरण** मा धेरै प्रयोग गरेर। यस पर्यावरणमा एजेन्टको केही **लक्ष्य** हुनुपर्दछ, जुन **इनाम कार्य** द्वारा परिभाषित हुन्छ।
## वातावरण
-सरलताको लागि, पिटरको संसारलाई `width` x `height` आकारको वर्ग बोर्ड मानौं, यस प्रकार:
+सरलताका लागि, हामी पिटरको संसारलाई चौकोर बोर्डको `width` x `height` आकारमा मान्न सक्छौं, यसरी:
-
+
-यस बोर्डको प्रत्येक सेल निम्नमध्ये कुनै एक हुन सक्छ:
+यस बोर्डका प्रत्येक कोष्ठकले यस मध्ये कुनै पर्न सक्छ:
-* **जमिन**, जहाँ पिटर र अन्य प्राणीहरू हिँड्न सक्छन्।
-* **पानी**, जहाँ स्पष्ट रूपमा हिँड्न सकिँदैन।
-* **रुख** वा **घाँस**, जहाँ आराम गर्न सकिन्छ।
-* **स्याउ**, जुन पिटरले आफूलाई खुवाउन पाउँदा खुसी हुने कुरा हो।
-* **भेडिया**, जुन खतरनाक छ र बच्नुपर्छ।
+* **माटो**, जसमा पिटर र अन्य जीवहरु हिड्न सक्छन्।
+* **पानी**, जसमा तपाईं पक्कै हिड्न सक्नुहुन्न।
+* **रुख** वा **घाँस**, जहाँ तपाईं आराम गर्न सक्नुहुन्छ।
+* **स्याउ**, जुन पिटरले आफूलाई खान दिन खोज्ने वस्तु हो।
+* **भेड़िया**, जुन खतरनाक छ र जोगिनु पर्छ।
-एक अलग Python मोड्युल, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), यस वातावरणसँग काम गर्न कोड समावेश गर्दछ। किनकि यो कोड हाम्रो अवधारणाहरू बुझ्न महत्त्वपूर्ण छैन, हामी मोड्युल आयात गर्नेछौं र नमूना बोर्ड सिर्जना गर्न प्रयोग गर्नेछौं (कोड ब्लक 1):
+एउटा अलग पाइथन मोड्युल छ, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), जसमा यस वातावरणसँग काम गर्ने कोड छ। किनभने यस कोड बुझ्न हाम्रो अवधारणाका लागि आवश्यक छैन, हामी यस मोड्युललाई आयात गरी नमुना बोर्ड बनाउन प्रयोग गर्नेछौं (कोड ब्लक 1):
```python
from rlboard import *
@@ -52,63 +52,63 @@ m.randomize(seed=13)
m.plot()
```
-यस कोडले माथिको जस्तै वातावरणको चित्र प्रिन्ट गर्नुपर्छ।
+यो कोडले माथिको जस्तो वातावरणको चित्र प्रिन्ट गर्नेछ।
-## कार्यहरू र नीति
+## क्रियाहरू र नीति
-हाम्रो उदाहरणमा, पिटरको लक्ष्य स्याउ फेला पार्नु हो, भेडिया र अन्य बाधाहरूबाट बच्दै। यसका लागि, उसले स्याउ फेला पार्दासम्म वरिपरि हिँड्न सक्छ।
+हाम्रो उदाहरणमा, पिटरको लक्ष्य स्याउ भेट्नु हुनेछ, भेड़िया र अन्य बाधाहरूबाट बच्ने तरिकाले। त्यसका लागि, उनी बेसिक रूपमा घुम्दै हिँडिरहनेछन् जबसम्म स्याउ भेटिदैन।
-त्यसैले, कुनै पनि स्थानमा, उसले निम्न कार्यहरू मध्ये एक चयन गर्न सक्छ: माथि, तल, बायाँ र दायाँ।
+त्यसकारण, कुनै पनि स्थानमा, उनी तलका क्रियाहरू मध्ये एक छान्न सक्छन्: माथि, तल, बायाँ र दायाँ।
-हामी ती कार्यहरूलाई डिक्सनरीको रूपमा परिभाषित गर्नेछौं, र तिनीहरूलाई सम्बन्धित समन्वय परिवर्तनहरूको जोडीमा म्याप गर्नेछौं। उदाहरणका लागि, दायाँतिर सर्ने (`R`) जोडी `(1,0)` सँग मेल खानेछ। (कोड ब्लक 2):
+ती क्रियाहरूलाई हामी शब्दकोश स्वरूप परिभाषित गर्नेछौं र तिनीहरूलाई सम्बन्धित निर्देशाङ्क परिवर्तनका जोडीहरूसँग नक्साङ्कन गर्नेछौं। उदाहरणका लागि, दायाँ सर्नु (`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)।
+पहिले हामी हाम्रो समस्या र्याण्डम वाक रणनीतिलाई कार्यान्वयन गरेर समाधान गर्नेछौं। र्याण्डम वाकमा, हामी अनुमति पाएका क्रियाहरूबाट अर्को क्रिया यादृच्छिक रूपमा चयन गर्नेछौं, जबसम्म स्याउसम्म पुग्दैनौं (कोड ब्लक 3)।
-1. तलको कोड प्रयोग गरेर र्यान्डम वाक कार्यान्वयन गर्नुहोस्:
+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
+ n = 0 # कदमहरूको संख्या
+ # प्रारम्भिक स्थान सेट गर्नुहोस्
if start_position:
m.human = start_position
else:
m.random_start()
while True:
if m.at() == Board.Cell.apple:
- return n # success!
+ return n # सफलता!
if m.at() in [Board.Cell.wolf, Board.Cell.water]:
- return -1 # eaten by wolf or drowned
+ return -1 # ब्वाँसोले खाएको वा डुब्नु भएको
while True:
a = actions[policy(m)]
new_pos = m.move_pos(m.human,a)
if m.is_valid(new_pos) and m.at(new_pos)!=Board.Cell.water:
- m.move(a) # do the actual move
+ m.move(a) # वास्तविक आन्दोलन गर्नुहोस्
break
n+=1
walk(m,random_policy)
```
- `walk` को कलले सम्बन्धित पथको लम्बाइ फिर्ता गर्नुपर्छ, जुन एक रनबाट अर्कोमा फरक हुन सक्छ।
+ `walk` लाई कल गर्दा सम्बन्धित मार्गको लम्बाइ फर्किनुपर्छ, जुन एक पटकदेखि अर्को पटक फरक हुन सक्छ।
-1. वाक प्रयोग धेरै पटक चलाउनुहोस् (भनौं, 100 पटक), र परिणामी तथ्यांक प्रिन्ट गर्नुहोस् (कोड ब्लक 4):
+1. चलाओ तपाईँले walk प्रयोग गरेर धेरै पटक (जस्तै, 100 पटक), र प्राप्त तथ्यांकहरू प्रिन्ट गर्नुहोस् (कोड ब्लक 4):
```python
def print_statistics(policy):
@@ -125,17 +125,17 @@ action_idx = { a : i for i,a in enumerate(actions.keys()) }
print_statistics(random_policy)
```
- ध्यान दिनुहोस् कि पथको औसत लम्बाइ लगभग 30-40 चरण हो, जुन धेरै हो, किनकि नजिकको स्याउसम्मको औसत दूरी लगभग 5-6 चरण हो।
+ ध्यान दिनुहोस कि एउटा पथको औसत लम्बाइ करिब 30-40 चरण हुन्छ, जुन धेरै हो, ध्यानमा राखेर कि सबैभन्दा नजिकको स्याउसम्मको औसत दूरी करिब 5-6 कदम छ।
- तपाईंले पिटरको र्यान्डम वाकको क्रममा उसको चाल कस्तो देखिन्छ भनेर पनि हेर्न सक्नुहुन्छ:
+ तपाईं र्याण्डम वाक अवधिमा पिटरको चाल कस्तो छ देख्न सक्नुहुन्छ:
- 
+ 
## पुरस्कार कार्य
-हाम्रो नीति अझ बौद्धिक बनाउन, हामीले बुझ्नुपर्छ कि कुन चालहरू अरूभन्दा "राम्रो" छन्। यसका लागि, हामीले हाम्रो लक्ष्य परिभाषित गर्नुपर्छ।
+हाम्रो नीतिलाई अझ बुद्धिमानी बनाउन, हामी बुझ्नुपर्ने हुन्छ कि कुन चालहरू अरूको भन्दा "राम्रो" छन्। यसको लागि हामीले हाम्रो लक्ष्य परिभाषित गर्नुपर्ने हुन्छ।
-लक्ष्यलाई **पुरस्कार कार्य** को सन्दर्भमा परिभाषित गर्न सकिन्छ, जसले प्रत्येक अवस्थाको लागि केही स्कोर मान फिर्ता गर्दछ। संख्या जति उच्च छ, पुरस्कार कार्य त्यति राम्रो हुन्छ। (कोड ब्लक 5)
+लक्ष्यलाई एउटा **इनाम कार्य** मा परिभाषित गर्न सकिन्छ, जसले प्रत्येक अवस्थाको लागि केही स्कोर मान फर्काउँछ। संख्या जति ठूलो हुन्छ, त्यो इनाम कार्य उति राम्रो हो। (कोड ब्लक 5)
```python
move_reward = -0.1
@@ -154,39 +154,115 @@ def reward(m,pos=None):
return move_reward
```
-पुरस्कार कार्यहरूको बारेमा रोचक कुरा यो हो कि अधिकांश अवस्थामा, *हामीलाई खेलको अन्त्यमा मात्र महत्वपूर्ण पुरस्कार दिइन्छ।* यसको मतलब हाम्रो एल्गोरिदमले सकारात्मक पुरस्कारमा पुग्न "राम्रो" चरणहरू सम्झनुपर्छ र तिनीहरूको महत्त्व बढाउनुपर्छ। त्यस्तै, खराब परिणामहरूमा पुग्ने सबै चालहरूलाई निरुत्साहित गर्नुपर्छ।
+पुरस्कार कार्यहरूको रोचक कुरा भनेको अधिकांश अवस्थामा, *हामीलाई खेलको अन्त्यमा मात्र पर्याप्त पुरस्कार दिइन्छ*। यसको अर्थ हाम्रो एल्गोरिदमले कसरी पनि "राम्रो" कदमहरू सम्झनुपर्छ जुन अन्त्यमा सकारात्मक इनाम ल्याउँछन्, र ती महत्त्व बढाउनुपर्छ। त्यस्तै, सबै नतिजा नराम्रो पर्ने चालहरूलाई निरुत्साहित गर्नुपर्छ।
-## Q-लर्निङ
+## Q-शिक्षण
-हामी यहाँ छलफल गर्ने एल्गोरिदमलाई **Q-लर्निङ** भनिन्छ। यस एल्गोरिदममा, नीति एक कार्य (वा डेटा संरचना) द्वारा परिभाषित गरिएको छ जसलाई **Q-टेबल** भनिन्छ। यसले दिइएको अवस्थामा प्रत्येक कार्यको "राम्रोपन" रेकर्ड गर्दछ।
+यहाँ छलफल गरिने एल्गोरिथ्मलाई **Q-शिक्षण** भनिन्छ। यसमा, नीति एउटा कार्य (वा डेटा संरचना) द्वारा परिभाषित हुन्छ जसलाई **Q-टेबल** भनिन्छ। यसले प्रत्येक अवस्थाको प्रत्येक क्रियाको "राम्रोपना" रेकर्ड गर्छ।
-यसलाई Q-टेबल भनिन्छ किनभने यसलाई तालिका वा बहु-आयामिक एरेको रूपमा प्रतिनिधित्व गर्नु सुविधाजनक हुन्छ। किनभने हाम्रो बोर्डको आयाम `width` x `height` छ, हामी Q-टेबललाई `width` x `height` x `len(actions)` आकारको numpy एरे प्रयोग गरेर प्रतिनिधित्व गर्न सक्छौं: (कोड ब्लक 6)
+यसलाई Q-टेबल भनिन्छ किनभने प्रायः यसलाई एउटा तालिका वा बहु-आयामी एरेको रूपमा प्रतिनिधित्व गर्न सजिलो हुन्छ। हाम्रो बोर्ड `width` x `height` आकारको हुँदा हामी Q-टेबललाई numpy एरे प्रयोग गरेर `width` x `height` x `len(actions)` आकारमा प्रतिनिधित्व गर्न सक्छौं: (कोड ब्लक 6)
```python
Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions)
```
-ध्यान दिनुहोस् कि हामी Q-टेबलका सबै मानहरू समान मानले आरम्भ गर्छौं, हाम्रो मामलामा - 0.25। यसले "र्यान्डम वाक" नीतिलाई प्रतिनिधित्व गर्दछ, किनभने प्रत्येक अवस्थामा सबै चालहरू समान रूपमा राम्रो छन्। हामी बोर्डमा तालिका देखाउन `plot` कार्यमा Q-टेबल पास गर्न सक्छौं: `m.plot(Q)`।
+ध्यान दिनुहोस् कि हामीले सबै Q-टेबल मानहरूलाई समान मान दिइरहेका छौं, हाम्रो अवस्थामा - 0.25। यसले "र्याण्डम वाक" नीतिलाई जनाउँछ, किनभने हरेक अवस्थाका क्रियाहरू समान राम्रो हुन्छन्। हामी `plot` कार्यमा Q-टेबल पास गरेर बोर्डमा तालिका देखाउन सक्छौं: `m.plot(Q)`.
-
+
-प्रत्येक सेलको केन्द्रमा एउटा "तीर" छ जसले चालको प्राथमिक दिशा संकेत गर्दछ। किनभने सबै दिशाहरू समान छन्, एउटा बिन्दु देखाइएको छ।
+प्रत्येक कोष्ठकको केन्द्रमा एउटा "तीर" हुन्छ जुन सर्न मन लाग्ने दिशा देखाउँछ। सबै दिशा बराबर हुँदा, बिन्दु देखाइन्छ।
-अब हामीले सिमुलेशन चलाउन, हाम्रो वातावरण अन्वेषण गर्न, र Q-टेबल मानहरूको राम्रो वितरण सिक्न आवश्यक छ, जसले हामीलाई स्याउसम्मको बाटो धेरै छिटो फेला पार्न अनुमति दिनेछ।
+अब हामी सिमुलेशन चलाएर हाम्रो वातावरण अन्वेषण गर्नुपर्छ र Q-टेबल मानहरूको राम्रो वितरण सिक्नुपर्छ, जसले स्याउ पुग्ने बाटो छिटो फेला पार्न मद्दत गर्नेछ।
-## Q-लर्निङको सार: बेलम्यान समीकरण
+## Q-शिक्षणको सार: बेल्म्यान समीकरण
-एकपटक हामी चाल सुरु गरेपछि, प्रत्येक कार्यसँग सम्बन्धित पुरस्कार हुनेछ, अर्थात् हामी सैद्धान्तिक रूपमा उच्च तत्काल पुरस्कारको आधारमा अर्को कार्य चयन गर्न सक्छौं। तर, अधिकांश अवस्थाहरूमा, चालले हाम्रो लक्ष्य प्राप्त गर्दैन, र त्यसैले हामी तुरुन्तै निर्णय गर्न सक्दैनौं कि कुन दिशा राम्रो हो।
+सर्न थाल्दा, प्रत्येक क्रियाको सम्बन्धित पुरस्कार हुन्छ, अर्थात् हामी सैद्धान्तिक रूपमा सबैभन्दा बढी तत्काल पुरस्कारका आधारमा अर्को क्रिया चयन गर्न सक्छौं। तर धेरै अवस्थाहरूमा, चालले हाम्रो स्याउ पुग्ने लक्ष्य पूरा गर्दैन, त्यसैले हामी तुरुन्त निर्णय गर्न सक्दैनौं कुन दिशा राम्रो हो।
-> याद गर्नुहोस् कि तत्काल परिणाम महत्त्वपूर्ण छैन, बरु अन्तिम परिणाम महत्त्वपूर्ण छ, जुन हामीले सिमुलेशनको अन्त्यमा प्राप्त गर्नेछौं।
+> याद राख्नुहोस् कि तत्काल नतिजा महत्वपूर्ण छैन, तर अन्तिम नतिजा हो, जुन हामी सिमुलेशनको अन्त्यमा पाउनेछौं।
-यो विलम्बित पुरस्कारलाई ध्यानमा राख्न, हामीले **[डायनामिक प्रोग्रामिङ](https://en.wikipedia.org/wiki/Dynamic_programming)** को सिद्धान्तहरू प्रयोग गर्न आवश्यक छ, जसले हामीलाई हाम्रो समस्यालाई पुनरावृत्त रूपमा सोच्न अनुमति दिन्छ।
+ढिलाइ गरिएको पुरस्कारलाई ध्यानमा राख्न, हामीले **[डायनामिक प्रोग्रामिङ](https://en.wikipedia.org/wiki/Dynamic_programming)** सिद्धान्तहरू प्रयोग गर्नुपर्छ, जसले हाम्रो समस्यालाई पुनरावृत्तिमूलक रूपमा सोच्न अनुमति दिन्छ।
-मानौं हामी अहिले अवस्था *s* मा छौं, र हामी अर्को अवस्था *s'* मा जान चाहन्छौं। यसो गर्दा, हामीले तत्काल पुरस्कार *r(s,a)* प्राप्त गर्नेछौं, जुन पुरस्कार कार्यद्वारा परिभाषित गरिएको छ, साथै केही भविष्यको पुरस्कार। यदि हामी मानौं कि हाम्रो Q-टेबलले प्रत्येक कार्यको "आकर्षण" सही रूपमा प्रतिबिम्बित गर्दछ, भने अवस्था *s'* मा हामीले कार्य *a'* चयन गर्नेछौं, जुन *Q(s',a')* को अधिकतम मानसँग मेल खान्छ। यसरी, अवस्था *s* मा हामीले प्राप्त गर्न सक्ने सबैभन्दा राम्रो सम्भावित भविष्यको पुरस्कार `max` द्वारा परिभाषित हुनेछ।
+मानौं हामी अहिले अवस्था *s* मा छौं, र अर्को अवस्था *s'* मा सर्न चाहन्छौं। यसले हामीलाई तुरुन्तै पुरस्कार *r(s,a)* प्राप्त हुनेछ, जुन इनाम कार्यले परिभाषित गर्छ, साथै केही भविष्यको पुरस्कार पनि हुनेछ। यदि हाम्रो Q-टेबलले प्रत्येक क्रियाको "आकर्षकता" सही रूपमा देखाउँछ भने, अवस्था *s'* मा हामी त्यो क्रिया *a'* छान्नेछौं जसको *Q(s',a')* मान सबैभन्दा उच्च हुन्छ। त्यसैले, अवस्था *s* मा पाउन सकिने सबैभन्दा राम्रो सम्भावित भावी पुरस्कार `max`a'*Q(s',a')* हुनेछ (यहाँ अधिकतम सबै सम्भावित क्रियाहरू *a'* मा गणना हुन्छ)।
-## नीति जाँच गर्दै
+यसले Q-टेबलको मान गणना गर्नको लागि **बेल्म्यान सूत्र** दिन्छ, जुन अवस्था *s* र क्रिया *a* को लागि हो:
-Q-Table ले प्रत्येक अवस्थामा प्रत्येक क्रियाको "आकर्षण" सूचीबद्ध गर्ने भएकाले, हाम्रो संसारमा प्रभावकारी नेभिगेसन परिभाषित गर्न यसलाई प्रयोग गर्न सजिलो छ। सबैभन्दा साधारण अवस्थामा, हामी Q-Table मा सबैभन्दा उच्च मानसँग मेल खाने क्रिया चयन गर्न सक्छौं: (कोड ब्लक 9)
+
+
+यहाँ γ भनिने को छूट कारक हो जसले वर्तमान पुरस्कारलाई भविष्य पुरस्कारको तुलनामा कति प्राथमिकता दिने निर्धारण गर्छ।
+
+## सिकाइ एल्गोरिथ्म
+
+माथिको समीकरण अनुसार, हामी अब हाम्रो सिकाइ एल्गोरिथ्मको छद्म कोड लेख्न सक्छौं:
+
+* सबै अवस्थाहरू र क्रियाहरूका लागि योगात्मक संख्याहरूले Q-टेबल Q सुरु गर्नुहोस्
+* सिकाइ दर α ← 1 सेट गर्नुहोस्
+* धेरै पटक सिमुलेशन दोहोर्याउनुहोस्
+ 1. यादृच्छिक स्थानबाट सुरु गर्नुहोस्
+ 1. दोहोर्याउनुहोस्
+ 1. अवस्था *s* मा एउटा क्रिया *a* चयन गर्नुहोस्
+ 2. नयाँ अवस्था *s'* मा सर्ने क्रिया कार्यान्वयन गर्नुहोस्
+ 3. यदि खेलको अन्त्य अवस्था भेटियो वा कुल पुरस्कार धेरै थोरै छ भने - सिमुलेशनबाट बाहिर निस्कनुहोस्
+ 4. नयाँ अवस्थामा पुरस्कार *r* गणना गर्नुहोस्
+ 5. बेल्म्यान समीकरण अनुसार Q-कार्य अपडेट गर्नुहोस्: *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ maxa'Q(s',a'))*
+ 6. *s* ← *s'*
+ 7. कुल पुरस्कार अपडेट गर्नुहोस् र α घटाउनुहोस्।
+
+## उपयोग गर्ने बनाम अन्वेषण गर्ने
+
+माथिको एल्गोरिथ्ममा, हामीले २.१ मा क्रिया चयन कसरी गर्ने भनी निर्दिष्ट गरेका छैनौं। यदि हामी क्रियालाई यादृच्छिक रूपमा छान्छौं भने, हामी वातावरणलाई यादृच्छिक रूपमा अन्वेषण गर्नेछौं, र हामी प्रायः धेरै पटक मर्न सक्छौं साथै त्यस्ता क्षेत्रहरू पनि अन्वेषण गर्नेछौं जहाँ सामान्यतः जाँदैनौं। अर्को तरिका भनेको पहिले देखि थाहा भएका Q-टेबल मानहरूलाई **उपयोग** गरेर, सबैभन्दा उत्कृष्ट क्रिया (उच्च Q-टेबल मान भएको) चयन गर्नु हो। तर योले हामीलाई अन्य अवस्थाहरू अन्वेषणबाट रोक्छ, र सम्भावित समाधान नपाउनसक्ने सम्भावना बढ्छ।
+
+त्यसैले, सर्वोत्तम तरिका भनेको अन्वेषण र उपयोग बीच सन्तुलन कायम गर्नु हो। यो स्टेट *s* मा क्रिया चयन गर्न Q-टेबलका मानसँग अनुपातिक सम्भावनाहरू प्रयोग गरेर गर्न सकिन्छ। सुरुमै, जब Q-टेबलका सबै मान एकसमान हुन्छन्, यसले यादृच्छिक चयनको जस्तो हुन्छ, तर जति हामी हाम्रो वातावरण सिक्छौं, हामी उत्तम मार्ग पछ्याउने सम्भावना बढी हुन्छ र एजेन्टलाई कहिलेकाहीं अन्वेषण गर्ने बाटो अपनाउन अनुमति दिन्छौं।
+
+## पाइथन कार्यान्वयन
+
+हामी अब सिकाइ एल्गोरिथ्म कार्यान्वयन गर्न तयार छौं। त्यस अघि, हामीलाई एउटा यस्तो कार्य पनि चाहिन्छ जसले Q-टेबलमा भएका कुनै पनि संख्याहरूलाई सम्बन्धित क्रियाहरूको सम्भावनाहरूमा रूपान्तरण गर्नेछ।
+
+1. `probs()` नामको कार्य बनाउनुहोस्:
+
+ ```python
+ def probs(v,eps=1e-4):
+ v = v-v.min()+eps
+ v = v/v.sum()
+ return v
+ ```
+
+ शुरुवाती अवस्थामा सबै भेक्टर कम्पोनेन्टहरू समान हुँदा शून्यले भाग काटिन नदिन केही `eps` थपेका छौं।
+
+यो सिकाइ एल्गोरिथ्म ५००० प्रयोगहरू (epochs) को माध्यमबाट चलाउनुहोस्: (कोड ब्लक 8)
+```python
+ for epoch in range(5000):
+
+ # प्रारम्भिक बिन्दु छान्नुहोस्
+ m.random_start()
+
+ # यात्रा सुरु गर्नुहोस्
+ n=0
+ cum_reward = 0
+ while True:
+ x,y = m.human
+ v = probs(Q[x,y])
+ a = random.choices(list(actions),weights=v)[0]
+ dpos = actions[a]
+ m.move(dpos,check_correctness=False) # हामी खेलाडीलाई बोर्ड बाहिर जान अनुमति दिन्छौं, जसले एपिसोड समाप्त गर्दछ
+ r = reward(m)
+ cum_reward += r
+ if r==end_reward or cum_reward < -1000:
+ lpath.append(n)
+ break
+ alpha = np.exp(-n / 10e5)
+ gamma = 0.5
+ ai = action_idx[a]
+ Q[x,y,ai] = (1 - alpha) * Q[x,y,ai] + alpha * (r + gamma * Q[x+dpos[0], y+dpos[1]].max())
+ n+=1
+```
+
+एल्गोरिथ्म चलाएपछि, Q-टेबल भ्याक्टरहरूमा भएका मानहरू अपडेट हुनेछ जसले हरेक चरणमा फरक क्रियाहरूको आकर्षकता परिभाषित गर्नेछन्। हामी Q-टेबल हेर्न कोशिस गर्न सक्छौं, प्रत्येक कोष्ठकमा एउटा भेक्टर तयार पारेर जुन आन्दोलनको उचित दिशातर्फ संकेत गर्नेछ। सरलताका लागि, हामी साना वृत्तहरू चित्रित गर्छौं तीरको सट्टा।
+
+
+
+## नीतिको जाँच
+
+किनभने Q-टेबल प्रत्येक अवस्थाको प्रत्येक क्रियाको "आकर्षकता" सूचीबद्ध गर्छ, हामी यसलाई हाम्रो संसारमा कुशल नेभिगेशन परिभाषित गर्न सजिलै प्रयोग गर्न सक्छौं। सजिलो अवस्थामा, हामी सबैभन्दा उच्च Q-टेबल मान भएको क्रियालाई चयन गर्न सक्छौं: (कोड ब्लक 9)
```python
def qpolicy_strict(m):
@@ -198,17 +274,18 @@ def qpolicy_strict(m):
walk(m,qpolicy_strict)
```
-> माथिको कोडलाई धेरै पटक चलाउँदा, कहिलेकाहीँ यो "अड्किन्छ" भन्ने कुरा तपाईंले देख्न सक्नुहुन्छ, र यसलाई रोक्न नोटबुकमा STOP बटन थिच्नुपर्ने हुन्छ। यस्तो किन हुन्छ भने, कहिलेकाहीँ दुई अवस्थाले एकअर्कालाई "सर्वोत्तम Q-Value" को हिसाबले देखाउँछन्, जसले गर्दा एजेन्ट ती अवस्थाहरू बीच अनन्त रूपमा घुमिरहन्छ।
+
+> माथिको कोडलाई धेरै पटक प्रयास गर्दा, कहिलेकाहीं यसले "अटकिरहेको" देख्न सकिन्छ, र तपाईंलाई नोटबुकमा STOP बटन थिचेर यसलाई रोक्न आवश्यक पर्छ। यो त्यस्तो अवस्था हुन सक्छ जब दुईवटा अवस्था हरु आपसमा अप्टिमल Q-Value को सन्दर्भमा "सङ्केत" गर्छन्, जस अवस्थामा एजेन्टहरू ती अवस्थाहरू बीच अनन्तकाल सम्म घुमिरहन्छन्।
## 🚀चुनौती
-> **कार्य 1:** `walk` फङ्सनलाई परिमार्जन गरेर मार्गको अधिकतम लम्बाइलाई निश्चित चरणहरूको संख्याले (जस्तै, 100) सीमित गर्नुहोस्, र माथिको कोडले समय-समयमा यो मान फिर्ता ल्याएको हेर्नुहोस्।
+> **कार्य १:** `walk` फङ्क्शनलाई यसरी संशोधन गर्नुहोस् कि पथको अधिकतम लम्बाई निश्चित चरणहरूको सङ्ख्यामा (जस्तै, १००) सीमित होस्, र माथिको कोड कहिलेकाहीं यो मान फर्काउँदै गरेको देख्नुहोस्।
-> **कार्य 2:** `walk` फङ्सनलाई परिमार्जन गरेर यसले पहिले नै पुगेको स्थानमा पुन: नजाने बनाउनुहोस्। यसले `walk` लाई लूप हुनबाट रोक्नेछ, तर एजेन्ट अझै पनि यस्तो स्थानमा "फस्न" सक्नेछ जहाँबाट बाहिर निस्कन असमर्थ हुन्छ।
+> **कार्य २:** `walk` फङ्क्शनलाई यसरी संशोधन गर्नुहोस् कि यसले पहिले सम्म पुगेका स्थानमा फिर्ता नजाओस्। यसले `walk` लाई लूपिङ हुनबाट रोक्नेछ, तर एजेन्ट अझै त्यस्तो स्थानमा "फसेर" रहन सक्छ जहाँबाट बाटो छुट्न सक्दैन।
-## नेभिगेसन
+## मार्गनिर्देशन
-प्रशिक्षणको समयमा प्रयोग गरिएको नीति अझ राम्रो नेभिगेसन नीति हुनेछ, जसले शोषण र अन्वेषणलाई संयोजन गर्दछ। यस नीतिमा, हामी प्रत्येक क्रियालाई निश्चित सम्भावनाको साथ चयन गर्नेछौं, जुन Q-Table मा रहेका मानहरूको अनुपातमा आधारित हुनेछ। यो रणनीतिले अझै पनि एजेन्टलाई पहिले नै अन्वेषण गरिएको स्थानमा फर्कन सक्ने बनाउँछ, तर तलको कोडबाट देख्न सकिन्छ, यसले चाहिएको स्थानसम्म पुग्न औसत मार्गलाई धेरै छोटो बनाउँछ (याद गर्नुहोस् कि `print_statistics` ले 100 पटक सिमुलेशन चलाउँछ): (कोड ब्लक 10)
+एउटा राम्रो मार्गनिर्देशन नीति भनेको हामीले प्रशिक्षणको क्रममा प्रयोग गरेको नीति हो, जुन शोषण र अन्वेषण दुवैलाई संयोजन गर्छ। यस नीतिमा, हामी प्रत्येक क्रियालाई निश्चित सम्भावनासँग छनौट गर्नेछौं, जो Q-Table का मानहरू सँग अनुपातमा हुन्छ। यो रणनीतिले एजेन्टलाई पहिले नै अन्वेषण गरिसकेको स्थानमा फिर्ता जान लग्न सक्छ, तर, तलको कोडबाट देख्न सकिन्छ, यसले चाहिएको स्थानमा धेरै छोटो औसत पथ दिएको छ (याद गर्नुहोस् कि `print_statistics` सिमुलेशन १०० पटक चलाउँछ): (कोड ब्लक १०)
```python
def qpolicy(m):
@@ -220,30 +297,32 @@ def qpolicy(m):
print_statistics(qpolicy)
```
-यो कोड चलाएपछि, तपाईंले पहिलेको भन्दा धेरै सानो औसत मार्ग लम्बाइ प्राप्त गर्नुहुनेछ, जुन 3-6 को दायरामा हुनेछ।
+यस कोडलाई चलाएपछि, तपाईंले पहिले भन्दा धेरै सानो औसत पथ लम्बाइ प्राप्त गर्नु पर्नेछ, ३-६ को दायरा भित्र।
-## सिकाइ प्रक्रियाको अनुसन्धान गर्दै
+## सिकाइ प्रक्रिया अन्वेषण
-जसरी हामीले उल्लेख गर्यौं, सिकाइ प्रक्रिया अन्वेषण र समस्या क्षेत्रको संरचनाको बारेमा प्राप्त ज्ञानको अन्वेषणको बीचको सन्तुलन हो। हामीले देख्यौं कि सिकाइको परिणाम (एजेन्टलाई लक्ष्यसम्म छोटो मार्ग पत्ता लगाउन मद्दत गर्ने क्षमता) सुधार भएको छ, तर सिकाइ प्रक्रियाको क्रममा औसत मार्ग लम्बाइ कसरी व्यवहार गर्छ भन्ने कुरा पनि हेर्न रोचक छ:
+जस्तो हामीले भनेका छौं, सिकाइ प्रक्रिया समस्या क्षेत्रको संरचनाबारे प्राप्त ज्ञानको अन्वेषण र शोषण बीचको सन्तुलन हो। हामीले देखेका छौं कि सिकाइका परिणामहरू (एजेन्टलाई लक्ष्यसम्म छोटो पथ फेला पार्न मद्दत गर्ने क्षमता) सुधार भएका छन्, तर सिकाइ प्रक्रियाको क्रममा औसत पथ लम्बाइ कसरी व्यवहार गर्छ भन्ने अवलोकन गर्नु पनि रोचक छ:
-### सिकाइको सारांश:
+
-- **औसत मार्ग लम्बाइ बढ्छ**। सुरुमा औसत मार्ग लम्बाइ बढेको देखिन्छ। यसको कारण के हो भने जब हामी वातावरणको बारेमा केही पनि थाहा पाउँदैनौं, हामी खराब अवस्थाहरू, पानी वा भेडियामा फस्न सक्छौं। जब हामी थप सिक्छौं र यो ज्ञान प्रयोग गर्न थाल्छौं, हामी वातावरणलाई लामो समयसम्म अन्वेषण गर्न सक्छौं, तर अझै पनि स्याउहरू कहाँ छन् भन्ने कुरा राम्रोसँग थाहा छैन।
+सिकाइहरू यस प्रकार सारांशित गर्न सकिन्छ:
-- **मार्ग लम्बाइ घट्छ, जब हामी थप सिक्छौं**। पर्याप्त सिकेपछि, एजेन्टलाई लक्ष्य प्राप्त गर्न सजिलो हुन्छ, र मार्ग लम्बाइ घट्न थाल्छ। तर, हामी अझै पनि अन्वेषणका लागि खुला छौं, त्यसैले हामी प्रायः उत्तम मार्गबाट टाढा जान्छौं, र नयाँ विकल्पहरू अन्वेषण गर्छौं, जसले मार्गलाई आदर्शभन्दा लामो बनाउँछ।
+- **औसत पथ लम्बाइ बढ्छ**। यहाँ जुन हामी देख्छौं त्यो हो सुरुमा औसत पथ लम्बाइ बढ्छ। यो सम्भवतः त्यसैले हो कि हामीलाई वातावरणको बारेमा केही थाहा नभएको अवस्थामा हामी खराब अवस्थाहरू, जस्तै पानी वा ब्वाँसोमा फस्न सक्छौं। जति धेरै जानकार हुन्छौं र त्यो ज्ञान प्रयोग गर्न थाल्छौं, हामी वातावरणलाई लामो समयसम्म अन्वेषण गर्न सक्छौं, तर अझै हामीलाई स्याउ कहाँ छन् भनेर राम्ररी थाहा हुँदैन।
-- **लम्बाइ अचानक बढ्छ**। ग्राफमा देखिएको अर्को कुरा के हो भने कुनै बिन्दुमा लम्बाइ अचानक बढ्छ। यसले प्रक्रियाको स्टोकेस्टिक प्रकृति संकेत गर्दछ, र कुनै बिन्दुमा हामी Q-Table का मानहरू नयाँ मानहरूले ओभरराइट गरेर "बिगार्न" सक्छौं। यो आदर्श रूपमा सिकाइ दर घटाएर न्यूनतम गर्नुपर्छ (उदाहरणका लागि, प्रशिक्षणको अन्त्यतिर, हामी Q-Table का मानहरूलाई सानो मानले मात्र समायोजन गर्छौं)।
+- **अझ सिकेपछि पथ लम्बाइ घट्छ**। पर्याप्त सिकेपछि, एजेन्टका लागि लक्ष्य प्राप्ति सजिलो हुन्छ, र पथ लम्बाइ घट्न थाल्छ। यद्यपि, हामी अझै अन्वेषणका लागि खुला छौं, त्यसैले हामी प्रायः सबैभन्दा राम्रो बाटोबाट विचलित भई नयाँ विकल्पहरू अन्वेषण गर्छौं, जसले पथलाई ऑप्टिमलभन्दा लामो बनाउँछ।
-### महत्त्वपूर्ण कुरा:
+- **लम्बाइ आकस्मिक रूपमा बढ्छ**। यस ग्राफमा हामीले अर्को कुरा पनि देख्छौं कि कुनै समय लम्बाइ अचानक बढ्छ। यसले प्रक्रियाको यादृच्छिक स्वभावलाई जनाउँछ, र हामी कहिलेकाहीं Q-Table को गुणांकहरूलाई नयाँ मानहरूसँग पुनःलेखन गरी "खराब" बनाउन सक्छौं। यो आदर्श रूपमा सिकाइ दर घटाएर कम गर्नुपर्छ (उदाहरणका लागि, प्रशिक्षणको अन्त्यतिर हामी Q-Table मानहरूलाई सानो मानले मात्र समायोजन गर्छौं)।
-सिकाइ प्रक्रियाको सफलता र गुणस्तर सिकाइ दर, सिकाइ दरको कमी, र डिस्काउन्ट फ्याक्टर जस्ता प्यारामिटरहरूमा धेरै निर्भर गर्दछ। यीलाई प्रायः **हाइपरप्यारामिटरहरू** भनिन्छ, जसले **प्यारामिटरहरू** बाट फरक पार्छ, जुन हामी प्रशिक्षणको क्रममा अनुकूलित गर्छौं (जस्तै, Q-Table का मानहरू)। उत्तम हाइपरप्यारामिटर मानहरू पत्ता लगाउने प्रक्रिया **हाइपरप्यारामिटर अनुकूलन** भनिन्छ, र यसले छुट्टै विषयको योग्य छ।
+कुल मिलाएर, यो स्मरण राख्न महत्वपूर्ण छ कि सिकाइ प्रक्रियाको सफलता र गुणस्तर धेरै हदसम्म प्यारेमिटरहरूमा निर्भर गर्दछ, जस्तै सिकाइ दर, सिकाइ दरको ह्रास, र छुट कारक। ती प्रायः **हाइपरप्यारामिटरहरू** भनिन्छ, जसलाई प्रशिक्षण क्रममा अनुकूलित गरिएका **प्यारामिटरहरू** (जस्तै Q-Table का गुणांकहरू) बाट फरक पार्न। उत्कृष्ट हाइपरप्यारामिटर मूल्यहरू खोज्न सक्ने प्रक्रियालाई **हाइपरप्यारामिटर अप्टिमाइजेशन** भनिन्छ, र यो एउटा अलग विषय हो।
-## [पोस्ट-व्याख्यान क्विज](https://ff-quizzes.netlify.app/en/ml/)
+## [पोस्ट-लेक्चर क्विज](https://ff-quizzes.netlify.app/en/ml/)
## असाइनमेन्ट
-[अझ यथार्थपरक संसार](assignment.md)
+[अझ यथार्थपरक विश्व](assignment.md)
---
-**अस्वीकरण**:
-यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको छ। हामी शुद्धताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं।
\ No newline at end of file
+
+**अस्वीकरण**:
+यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको हो। हामी सही हुन प्रयास गर्छौं, तर कृपया जानकार हुनुस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छन्। मूल दस्तावेज़ यसको मूल भाषामा आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीका लागि व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न कुनै पनि गलत बुझाइ वा त्रुटिको लागि हामी जिम्मेवार छैनौं।
+
\ No newline at end of file
diff --git a/translations/ne/8-Reinforcement/2-Gym/README.md b/translations/ne/8-Reinforcement/2-Gym/README.md
index 30949ec60..59cbe7bf5 100644
--- a/translations/ne/8-Reinforcement/2-Gym/README.md
+++ b/translations/ne/8-Reinforcement/2-Gym/README.md
@@ -1,12 +1,32 @@
+# कार्टपोल स्केटिङ
+
+हामीले अघिल्लो पाठमा समाधान गरिरहेको समस्या खेलौना समस्या जस्तो देखिन सक्छ, जुन वास्तविक जीवनका परिस्थितिहरूमा प्रयोगयोग्य नहुन सक्छ। यस्तो होइन, किनकि धेरै वास्तविक विश्वका समस्याहरूले पनि यो परिदृश्य साझा गर्छन् - जस्तै चेस वा गो खेल्ने। तिनीहरू मिल्दोजुल्दो छन् किनकि हामीसँग बोर्ड छ र निश्चित नियमहरू छन् र एक **विविक्त अवस्था** छ।
+
+## [पाठ अघि क्विज](https://ff-quizzes.netlify.app/en/ml/)
+
+## परिचय
+
+यस पाठमा हामी Q-लर्निङका उहि सिद्धान्तहरूलाई **सतत अवस्था** भएको समस्यामा लागू गर्नेछौं, जसको मतलब एउटा वा बढी वास्तविक संख्याबाट दिइएको अवस्था हो। हामी तलको समस्यामा काम गर्नेछौं:
+
+> **समस्या**: यदि पिटर बँदेलबाट भाग्न चाहन्छ भने, उसको छिटो हिँड्न सक्नुपर्नेछ। हामी देख्नेछौं कि पिटर कसरी स्केट गर्न सिक्न सक्छ, विशेष गरी सन्तुलन कायम राख्न, Q-लर्निङ प्रयोग गरेर।
+
+
+
+> पिटर र उनका साथीहरूले बँदेलबाट भाग्न रचनात्मकता देखाउँछन्! तस्बिर: [जेन लूपर](https://twitter.com/jenlooper)
+
+हामी एक सरल संस्करणको सन्तुलनलाई कार्टपोल समस्या भनेर चिनिने समस्या प्रयोग गर्नेछौं। कार्टपोल दुनियाँमा, हामीसँग एक तेर्सो स्लाइडर हुन्छ जुन बायाँ वा दायाँ सर्न सक्छ, र लक्ष्य स्लाइडरको माथि एउटा ठाडो पोललाई सन्तुलनमा राख्नु हो।
+
+
+
## आवश्यकताहरू
-यस पाठमा, हामी **OpenAI Gym** नामक पुस्तकालय प्रयोग गर्नेछौं विभिन्न **पर्यावरणहरू** अनुकरण गर्न। तपाईं यो पाठको कोड स्थानीय रूपमा (जस्तै Visual Studio Code बाट) चलाउन सक्नुहुन्छ, जसमा अनुकरण नयाँ विन्डोमा खुल्छ। अनलाइन कोड चलाउँदा, तपाईंले कोडमा केही परिवर्तन गर्नुपर्ने हुन सक्छ, जस्तै [यहाँ](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7) वर्णन गरिएको छ।
+यस पाठमा, हामी **OpenAI Gym** नामक पुस्तकालय प्रयोग गर्नेछौं विभिन्न **परिवेश** अनुकरण गर्न। तपाईंले यो पाठको कोड स्थानीय रूपमा चलाउन सक्नुहुन्छ (जस्तै Visual Studio Code बाट), यस अवस्थामा अनुकरण नयाँ विन्डोमा खुल्नेछ। अनलाइन कोड चलाउँदा, तपाईंले केहि संशोधनहरू गर्नुपर्ने हुन सक्छ, जस्तै तपाईले [यहाँ](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7) वर्णन गरिएको छ।
## OpenAI Gym
-अघिल्लो पाठमा, खेलका नियमहरू र अवस्था `Board` वर्गद्वारा दिइएको थियो जुन हामीले आफैं परिभाषित गरेका थियौं। यहाँ हामी एक विशेष **अनुकरण वातावरण** प्रयोग गर्नेछौं, जसले सन्तुलन पोलको भौतिकी अनुकरण गर्नेछ। सुदृढीकरण सिकाइ एल्गोरिदमहरू प्रशिक्षणका लागि सबैभन्दा लोकप्रिय अनुकरण वातावरणहरू मध्ये एकलाई [Gym](https://gym.openai.com/) भनिन्छ, जुन [OpenAI](https://openai.com/) द्वारा व्यवस्थापन गरिन्छ। यस जिम प्रयोग गरेर हामी विभिन्न **पर्यावरणहरू** सिर्जना गर्न सक्छौं, जस्तै cartpole अनुकरणदेखि Atari खेलहरूसम्म।
+अघिल्लो पाठमा, खेलका नियम र अवस्था `Board` क्लासले दिइन्थ्यो जुन हामीले आफैं परिभाषित गर्यौं। यहाँ हामी विशेष **अनुकरण वातावरण** प्रयोग गर्नेछौं, जसले सन्तुलन पोलको पछाडि भएको भौतिक विज्ञान अनुकरण गर्नेछ। प्रशिक्षण सुदृढीकरण सिक्ने एल्गोरिदमका लागि सबैभन्दा लोकप्रिय अनुकरण वातावरणहरूमध्ये एक [Gym](https://gym.openai.com/) हो, जुन [OpenAI](https://openai.com/) द्वारा व्यवस्थापन गरिन्छ। यस जिम प्रयोग गरेर हामी कार्टपोल अनुकरणदेखि एटारी खेलसम्म फरक **परिवेश** बनाउन सक्छौं।
-> **Note**: तपाईं OpenAI Gym बाट उपलब्ध अन्य वातावरणहरू [यहाँ](https://gym.openai.com/envs/#classic_control) हेर्न सक्नुहुन्छ।
+> **टिप्पणी**: तपाईं OpenAI Gym द्वारा उपलब्ध अन्य वातावरणहरू [यहाँ](https://gym.openai.com/envs/#classic_control) हेर्न सक्नुहुन्छ।
पहिले, जिम स्थापना गरौं र आवश्यक पुस्तकालयहरू आयात गरौं (कोड ब्लक 1):
@@ -20,15 +40,15 @@ import numpy as np
import random
```
-## अभ्यास - cartpole वातावरण आरम्भ गर्नुहोस्
+## अभ्यास - कार्टपोल वातावरण प्रारम्भ गर्नुहोस्
-cartpole सन्तुलन समस्यामा काम गर्न, हामीले सम्बन्धित वातावरण आरम्भ गर्न आवश्यक छ। प्रत्येक वातावरणसँग निम्न कुरा सम्बन्धित हुन्छ:
+कार्टपोल सन्तुलन समस्यामा काम गर्न, हामीलाई सम्बन्धित वातावरण प्रारम्भ गर्नुपर्छ। प्रत्येक वातावरणसँग सम्बन्धित हुन्छ:
-- **Observation space** जसले वातावरणबाट प्राप्त हुने जानकारीको संरचना परिभाषित गर्दछ। cartpole समस्याको लागि, हामी पोलको स्थिति, वेग र केही अन्य मानहरू प्राप्त गर्छौं।
+- **अवलोकन स्थान** जसले वातावरणबाट प्राप्त गर्ने सूचना संरचना परिभाषित गर्दछ। कार्टपोल समस्याका लागि, हामी पोलको स्थिति, गति र केही अन्य मानहरू पाउँछौं।
-- **Action space** जसले सम्भावित कार्यहरू परिभाषित गर्दछ। हाम्रो केसमा, action space discrete छ, र दुई कार्यहरू समावेश गर्दछ - **बायाँ** र **दायाँ**। (कोड ब्लक 2)
+- **कार्य स्थान** जसले सम्भावित कार्यहरू परिभाषित गर्दछ। हाम्रो अवस्थामा, कार्य क्षेत्र विविक्त छ र दुई कार्यहरू समावेश गर्दछ - **बायाँ** र **दायाँ**। (कोड ब्लक 2)
-1. आरम्भ गर्न, निम्न कोड टाइप गर्नुहोस्:
+1. प्रारम्भ गर्न, तलको कोड टाइप गर्नुहोस्:
```python
env = gym.make("CartPole-v1")
@@ -37,11 +57,11 @@ cartpole सन्तुलन समस्यामा काम गर्न,
print(env.action_space.sample())
```
-वातावरण कसरी काम गर्छ हेर्न, 100 चरणहरूको लागि छोटो अनुकरण चलाऔं। प्रत्येक चरणमा, हामीले कार्यहरू प्रदान गर्नुपर्छ - यस अनुकरणमा हामी `action_space` बाट जस्तोसुकै कार्य चयन गर्छौं।
+वातावरण कसरी काम गर्छ हेर्न, १०० चरणको छोटो अनुकरण चलाऔं। प्रत्येक चरणमा, हामी लिने कार्य मध्ये एउटा दिन्छौं - यस अनुकरणमा हामी `action_space` बाट बेतरतीब रूपमा एउटा कार्य चयन गर्छौं।
-1. तलको कोड चलाउनुहोस् र यसले के परिणाम दिन्छ हेर्नुहोस्।
+1. तलको कोड चलाउनुहोस् र परिणाम के हुन्छ हेर्नुहोस्।
- ✅ यो कोड स्थानीय Python स्थापना मा चलाउनु राम्रो हुन्छ! (कोड ब्लक 3)
+ ✅ याद गर्नुहोस् कि यो कोड स्थानीय Python इन्स्टलेसनमा चलाउन सिफारिस गरिन्छ! (कोड ब्लक 3)
```python
env.reset()
@@ -52,11 +72,11 @@ cartpole सन्तुलन समस्यामा काम गर्न,
env.close()
```
- तपाईंले निम्न चित्र जस्तै केही देख्नुपर्छ:
+ तपाईंले यो तस्बिर जस्तो केही देख्नुपर्नेछ:
- 
+ 
-1. अनुकरणको क्रममा, हामीले निर्णय गर्नको लागि अवलोकनहरू प्राप्त गर्न आवश्यक छ। वास्तवमा, `step` कार्यले वर्तमान अवलोकनहरू, पुरस्कार कार्य, र `done` फ्ल्याग फर्काउँछ जसले संकेत गर्दछ कि अनुकरण जारी राख्न उपयुक्त छ कि छैन: (कोड ब्लक 4)
+1. अनुकरणको क्रममा, हामीले कस्तो कार्य गर्ने निर्णय गर्न अवलोकनहरू लिनुपर्छ। वास्तवमा, स्टेप फंक्शनले हालको अवलोकनहरू, पुरस्कार समारोह र `done` झण्डा फर्काउँछ जुन बताउँछ कि अनुकरण जारी राख्नु उपयुक्त छ कि छैन: (कोड ब्लक 4)
```python
env.reset()
@@ -69,7 +89,7 @@ cartpole सन्तुलन समस्यामा काम गर्न,
env.close()
```
- तपाईंले नोटबुकको आउटपुटमा निम्न जस्तै केही देख्नुहुनेछ:
+ तपाईं नोटबुकको आउटपुटमा यस्तै केही देख्नुहुनेछ:
```text
[ 0.03403272 -0.24301182 0.02669811 0.2895829 ] -> 1.0
@@ -82,43 +102,43 @@ cartpole सन्तुलन समस्यामा काम गर्न,
[ 0.17617249 0.35602306 -0.21873684 -0.90998894] -> 1.0
```
- अनुकरणको प्रत्येक चरणमा फर्काइएको अवलोकन भेक्टरले निम्न मानहरू समावेश गर्दछ:
+ प्रत्येक अनुकरण चरणमा फर्काइएको अवलोकन भेक्टरले यस्ता मानहरू समावेश गर्दछ:
- कार्टको स्थिति
- - कार्टको वेग
+ - कार्टको गति
- पोलको कोण
- - पोलको घुमाउने दर
+ - पोलको घुम्ने दर
-1. ती संख्याहरूको न्यूनतम र अधिकतम मान प्राप्त गर्नुहोस्: (कोड ब्लक 5)
+1. ती संख्याहरूको न्यूनतम र अधिकतम मान पाउँ: (कोड ब्लक 5)
```python
print(env.observation_space.low)
print(env.observation_space.high)
```
- तपाईंले यो पनि देख्न सक्नुहुन्छ कि प्रत्येक अनुकरण चरणमा पुरस्कार मान सधैं 1 हुन्छ। यसको कारण हाम्रो लक्ष्य यथासम्भव लामो समयसम्म जीवित रहनु हो, अर्थात पोललाई यथासम्भव ठाडो स्थितिमा राख्नु।
+ तपाईंले अवलोकन गर्नुहुनेछ कि प्रत्येक अनुकरण चरणमा पुरस्कार मान सधैं १ हुन्छ। यसको कारण यो हो कि हाम्रो लक्ष्य सकेसम्म लामो समय सम्म जीवित रहनु, अर्थात पोललाई उचित ठाडो अवस्थामै राख्नु हो।
- ✅ वास्तवमा, CartPole अनुकरणलाई समाधान गरिएको मानिन्छ यदि हामीले 100 लगातार प्रयासहरूमा 195 को औसत पुरस्कार प्राप्त गर्न सफल भयौं।
+ ✅ साँच्चिकै, कार्टपोल अनुकरणलाई परिमार्जन गरिएको मानिन्छ यदि हामीले १०० लगातार प्रयासमा औसत पुरस्कार १९५ प्राप्त गर्न सक्छौं भने।
-## अवस्था डिस्क्रिटाइजेसन
+## अवस्थाको विविक्तीकरण
-Q-Learning मा, हामीले Q-Table निर्माण गर्न आवश्यक छ जसले प्रत्येक अवस्थामा के गर्ने परिभाषित गर्दछ। यो गर्नको लागि, अवस्था **डिस्क्रिट** हुनुपर्छ, अधिक स्पष्ट रूपमा, यसले सीमित संख्याका डिस्क्रिट मानहरू समावेश गर्नुपर्छ। त्यसैले, हामीले कुनै प्रकारले हाम्रो अवलोकनहरू **डिस्क्रिटाइज** गर्न आवश्यक छ, तिनीहरूलाई सीमित सेटको अवस्थाहरूमा म्याप गर्दै।
+Q-लर्निङमा, हामीले Q-टेबल निर्माण गर्नुपर्छ जुन हरेक अवस्थामा के गर्ने भन्ने जनाउँछ। यसका लागि, हामीलाई अवस्था **विविक्त** हुनुपर्छ, अर्थात यसले सीमित संख्याका विविक्त मानहरू समावेश गर्नुपर्छ। त्यसैले, हामीले हाम्रो अवलोकनहरूलाई कतै न कतै **विविक्तीकरण** गर्न आवश्यक छ, तिनीहरूलाई सीमित अवस्थाहरूमा नक्साङ्कन गर्न।
-यसलाई गर्नका लागि केही तरिकाहरू छन्:
+यसका लागि केही तरिकाहरू छन्:
-- **बिनहरूमा विभाजन गर्नुहोस्**। यदि हामीलाई कुनै मानको अन्तराल थाहा छ भने, हामी यस अन्तराललाई केही **बिनहरू** मा विभाजन गर्न सक्छौं, र त्यसपछि मानलाई यो बिन नम्बरले प्रतिस्थापन गर्न सक्छौं। यो numpy [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html) विधि प्रयोग गरेर गर्न सकिन्छ। यस अवस्थामा, हामीलाई राज्यको आकार ठीकसँग थाहा हुनेछ, किनकि यो डिजिटलाइजेसनका लागि चयन गरिएको बिनहरूको संख्यामा निर्भर हुनेछ।
+- **बिनहरूमा विभाजन**। यदि हामीलाई कुनै मानको अन्तराल थाहा छ भने, हामी त्यो अन्तराललाई केही **बिनहरू**मा विभाजन गर्न सक्छौं, र त्यसपछि मानलाई त्यो बिन नम्बरले प्रतिस्थापन गर्न सक्छौं जसमा त्यो पर्छ। यो numpy को [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html) विधि प्रयोग गरेर गर्न सकिन्छ। यस अवस्थामा, हामी अवस्थाको आकारलाई ठ्याक्कै जान्नेछौं किनकि यो बिनहरूको संख्यामा निर्भर गर्दछ जुन हामीले डिजिटलाइजेसनका लागि चयन गरेका छौं।
+
+✅ हामी रैखिक अन्तर्वर्तीकरण (linear interpolation) प्रयोग गरेर मानहरूलाई केही सीमित अन्तराल (जस्तै -२० देखि २० सम्म) ल्याउन सक्छौं, त्यसपछि ती सङ्ख्याहरूलाई पूर्णाङ्कमा परिणत गर्न सक्छौं। यसले हाम्रो अवस्थामा अवस्थाको आकारमा अलि कम नियन्त्रण दिन्छ, विशेषगरी यदि हामीले इनपुट मानहरूको सही श्रेणी थाहा नपाएमा। उदाहरणका लागि, हाम्रो अवस्थामा ४ मध्ये २ मानहरूको माथिल्लो/तल्लो सीमा छैन, जसले अनन्त अवस्थाहरू उत्पादन गर्न सक्छ।
-✅ हामीले मानहरूलाई केही सीमित अन्तरालमा (जस्तै, -20 देखि 20 सम्म) ल्याउन र त्यसपछि ती संख्याहरूलाई गोल गरेर पूर्णांकमा रूपान्तरण गर्न रेखीय इन्टरपोलेशन प्रयोग गर्न सक्छौं। यसले राज्यको आकारमा थोरै कम नियन्त्रण दिन्छ, विशेष गरी यदि हामीलाई इनपुट मानहरूको सटीक दायरा थाहा छैन। उदाहरणका लागि, हाम्रो केसमा 4 मध्ये 2 मानहरूको माथिल्लो/तल्लो सीमा छैन, जसले असीमित संख्याका अवस्थाहरू परिणाम दिन सक्छ।
+हाम्रो उदाहरणमा, हामी दोस्रो तरिका अपनाउनेछौं। तपाईं पछि देख्नुहुनेछ कि अपरिभाषित माथिल्लो/तल्लो सीमा भए पनि, ती मानहरू प्रायः केही सीमित अन्तरालबाट बाहिर जान सक्दैनन्, त्यसैले ती चरम मानहरू भएका अवस्थाहरू दुर्लभ हुनेछन्।
-हाम्रो उदाहरणमा, हामी दोस्रो दृष्टिकोण अपनाउनेछौं। तपाईंले पछि देख्न सक्नुहुनेछ, अपरिभाषित माथिल्लो/तल्लो सीमाहरूको बाबजुद, ती मानहरू विरलै निश्चित सीमित अन्तराल बाहिर मानहरू लिन्छन्, त्यसैले ती चरम मानहरू भएका अवस्थाहरू धेरै दुर्लभ हुनेछन्।
-
-1. यहाँ एउटा कार्य छ जसले हाम्रो मोडेलबाट अवलोकन लिन्छ र 4 पूर्णांक मानहरूको टपल उत्पादन गर्दछ: (कोड ब्लक 6)
+1. यहाँ फङ्क्शन छ जुन हाम्रो मोडेलबाट अवलोकन लिन्छ र चार पूर्णाङ्क मानहरूको टुपल उत्पादन गर्छ: (कोड ब्लक 6)
```python
def discretize(x):
return tuple((x/np.array([0.25, 0.25, 0.01, 0.1])).astype(np.int))
```
-1. बिनहरू प्रयोग गरेर अर्को डिस्क्रिटाइजेसन विधि अन्वेषण गरौं: (कोड ब्लक 7)
+1. अर्को विविक्तीकरण विधि बिनहरू प्रयोग गरेर अन्वेषण गरौं: (कोड ब्लक 7)
```python
def create_bins(i,num):
@@ -126,17 +146,17 @@ Q-Learning मा, हामीले Q-Table निर्माण गर्न
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
+ ints = [(-5,5),(-2,2),(-0.5,0.5),(-2,2)] # प्रत्येक प्यारामिटरको लागि मानहरूको अन्तरालहरू
+ nbins = [20,20,10,10] # प्रत्येक प्यारामिटरको लागि बिनहरूको संख्या
bins = [create_bins(ints[i],nbins[i]) for i in range(4)]
def discretize_bins(x):
return tuple(np.digitize(x[i],bins[i]) for i in range(4))
```
-1. अब छोटो अनुकरण चलाऔं र ती डिस्क्रिट वातावरण मानहरू अवलोकन गरौं। `discretize` र `discretize_bins` दुवै प्रयास गर्न स्वतन्त्र महसुस गर्नुहोस् र कुनै भिन्नता छ कि छैन हेर्नुहोस्।
+1. अब छोटो अनुकरण चलाऔं र ती विविक्त वातावरणका मानहरू अवलोकन गरौँ। `discretize` र `discretize_bins` दुवै प्रयोग गरेर देख्न सक्नुहुन्छ फरक छ कि छैन।
- ✅ `discretize_bins` बिन नम्बर फर्काउँछ, जुन 0-आधारित हुन्छ। त्यसैले इनपुट चरको मानहरू 0 वरिपरि हुँदा यसले अन्तरालको बीचबाट नम्बर फर्काउँछ (10)। `discretize` मा, हामीले आउटपुट मानहरूको दायराको बारेमा ध्यान दिएनौं, तिनीहरूलाई नकारात्मक हुन अनुमति दिँदै, त्यसैले राज्य मानहरू सरेका छैनन्, र 0 0 सँग मेल खान्छ। (कोड ब्लक 8)
+ ✅ discretize_bins बिन नम्बर फर्काउँछ, जुन ०-आधारित हुन्छ। त्यसैले इनपुट चरको मानहरू 0 नजिकको लागि यसको मान अन्तरालको मध्य भाग (१०) हुन्छ। discretize मा हामीले आउटपुट मानको सीमा नहेर्ने गर्यौं, जसले नकारात्मक मान राख्न दिनेछ, त्यसैले अवस्थाका मानहरू न सर्ने गरी ० ले ० जनाउँछ। (कोड ब्लक 8)
```python
env.reset()
@@ -150,15 +170,15 @@ Q-Learning मा, हामीले Q-Table निर्माण गर्न
env.close()
```
- ✅ `env.render` बाट सुरु हुने लाइन अनकमेण्ट गर्नुहोस् यदि तपाईं वातावरण कसरी कार्यान्वयन हुन्छ हेर्न चाहनुहुन्छ। अन्यथा तपाईं यसलाई पृष्ठभूमिमा कार्यान्वयन गर्न सक्नुहुन्छ, जुन छिटो हुन्छ। हामी हाम्रो Q-Learning प्रक्रियाको क्रममा यो "अदृश्य" कार्यान्वयन प्रयोग गर्नेछौं।
+ ✅ यदि तपाईंले वातावरण सञ्चालन कसरी हुन्छ हेर्न चाहानुहुन्छ भने env.render को लाइन अनकमेन्ट गर्नुहोस्। नत्र यसलाई पृष्ठभूमिमा चलाउन सक्नुहुन्छ जुन छिटो हुन्छ। हामी हाम्रो Q-लर्निङ प्रक्रियामा यो "अदृश्य" सञ्चालन प्रयोग गर्नेछौं।
-## Q-Table संरचना
+## Q-टेबल संरचना
-अघिल्लो पाठमा, अवस्था 0 देखि 8 सम्मका संख्याहरूको साधारण जोडी थियो, र यसैले Q-Table लाई 8x8x2 आकारको numpy टेन्सरद्वारा प्रतिनिधित्व गर्न सुविधाजनक थियो। यदि हामी बिन डिस्क्रिटाइजेसन प्रयोग गर्छौं भने, हाम्रो राज्य भेक्टरको आकार पनि थाहा छ, त्यसैले हामी समान दृष्टिकोण प्रयोग गर्न सक्छौं र राज्यलाई 20x20x10x10x2 आकारको एरेद्वारा प्रतिनिधित्व गर्न सक्छौं (यहाँ 2 कार्य स्थानको आयाम हो, र पहिलो आयामहरू अवलोकन स्थानमा प्रत्येक प्यारामिटरको लागि चयन गरिएको बिनहरूको संख्यालाई प्रतिनिधित्व गर्दछ)।
+हाम्रो अघिल्लो पाठमा, अवस्था सजिलो जोडी ० देखि ८ सम्मका संख्याहरू थियो, त्यसैले numpy टेन्सर जसको आकार ८x८x२ थियो Q-टेबल प्रतिनिधित्व गर्न सहज थियो। यदि हामी बिन्स विविक्तीकरण प्रयोग गर्छौं भने, अवस्थाको आकार पनि ज्ञात हुन्छ, त्यसैले हामी उहि तरिका अपनाएर २०x२०x१०x१०x२ आकारको एरेले अवस्थालाई प्रतिनिधित्व गर्न सक्छौं (यहाँ २ कार्य स्थानको आयाम हो, र पहिलेका आयाम अवलोकन स्थानका हरेक प्यारामिटरहरूको लागि चयन गरिएका बिनहरूका सङ्ख्यालाई जनाउँछन्)।
-तर, कहिलेकाहीं अवलोकन स्थानको सटीक आयामहरू थाहा हुँदैन। `discretize` कार्यको मामलामा, हामी कहिल्यै निश्चित हुन सक्दैनौं कि हाम्रो अवस्था निश्चित सीमाहरू भित्र रहन्छ, किनकि केही मूल मानहरू बाधित छैनन्। त्यसैले, हामी अलि फरक दृष्टिकोण प्रयोग गर्नेछौं र Q-Table लाई शब्दकोशद्वारा प्रतिनिधित्व गर्नेछौं।
+यद्यपि कहिलेकाहीं अवलोकन स्थानका थोरै सही आयामहरू थाहा हुँदैनन्। `discretize` फङ्क्शनको अवस्थामा, हामीले कहिल्यै निश्चित हुन सक्दैनौं कि हाम्रो अवस्था कुनै सीमामा रहन्छ वा छैन, किनकि केहि मूल मानहरू निर्धारण छैनन्। त्यसैले, हामी अलि फरक तरिका अपनाउनेछौं र Q-टेबललाई शब्दकोश (डिक्शनरी) द्वारा प्रतिनिधित्व गर्नेछौं।
-1. जोडी *(state,action)* लाई शब्दकोश कुञ्जीको रूपमा प्रयोग गर्नुहोस्, र मान Q-Table प्रविष्टि मानसँग मेल खानेछ। (कोड ब्लक 9)
+1. जोडी *(state,action)* लाई डिक्शनरी कुञ्जीको रूपमा प्रयोग गर्नुहोस्, र मान Q-टेबल प्रविष्टि मान हुनेछ। (कोड ब्लक 9)
```python
Q = {}
@@ -168,38 +188,38 @@ Q-Learning मा, हामीले Q-Table निर्माण गर्न
return [Q.get((state,a),0) for a in actions]
```
- यहाँ हामीले `qvalues()` नामक कार्य पनि परिभाषित गरेका छौं, जसले Q-Table मानहरूको सूची फर्काउँछ जुन दिइएको अवस्थाका लागि सबै सम्भावित कार्यहरूसँग मेल खान्छ। यदि प्रविष्टि Q-Table मा उपस्थित छैन भने, हामी डिफल्टको रूपमा 0 फर्काउनेछौं।
+ यहाँ हामीले `qvalues()` फङ्क्शन पनि परिभाषित गरेका छौं, जसले दिइएको अवस्थाका लागि सबै सम्भावित कार्यका Q-टेबल मानहरूको सूची फर्काउँछ। यदि Q-टेबलमा प्रविष्टि छैन भने, हामीले पूर्वनिर्धारित रूपमा ० फर्काउनेछौं।
-## अब Q-Learning सुरु गरौं
+## Q-लर्निङ सुरु गरौँ
-अब हामी पिटरलाई सन्तुलन सिकाउन तयार छौं!
+अब हामी पिटरलाई सन्तुलन कायम गर्न सिकाउन तयार छौं!
-1. पहिले, केही हाइपरप्यारामिटरहरू सेट गरौं: (कोड ब्लक 10)
+1. पहिले, केहि हाइपरप्यारामिटरहरू सेट गरौं: (कोड ब्लक 10)
```python
- # hyperparameters
+ # हाइपरप्यारामिटरहरू
alpha = 0.3
gamma = 0.9
epsilon = 0.90
```
- यहाँ, `alpha` **सिकाइ दर** हो जसले प्रत्येक चरणमा Q-Table को वर्तमान मानहरू कति हदसम्म समायोजन गर्नुपर्छ भनेर परिभाषित गर्दछ। अघिल्लो पाठमा हामीले 1 बाट सुरु गरेका थियौं, र त्यसपछि प्रशिक्षणको क्रममा `alpha` लाई कम मानहरूमा घटाएका थियौं। यस उदाहरणमा हामी यसलाई स्थिर राख्नेछौं केवल सरलताको लागि, र तपाईं पछि `alpha` मानहरू समायोजन गरेर प्रयोग गर्न सक्नुहुन्छ।
-
- `gamma` **डिस्काउन्ट फ्याक्टर** हो जसले भविष्यको पुरस्कारलाई वर्तमान पुरस्कारभन्दा कति प्राथमिकता दिनुपर्छ भनेर देखाउँछ।
+ यहाँ, `alpha` **शिक्षण दर** हो जुन हरेक चरणमा Q-टेबलका हालको मानहरू कति समायोजन गर्ने भन्ने जनाउँछ। अघिल्लो पाठमा हामीले १ बाट सुरु गर्यौं, र त्यसपछि प्रशिक्षणमा `alpha` घटायौं। यहाँ उदाहरणका लागि हामी यसलाई स्थिर राख्छौं, तर तपाईं पछि `alpha` मानहरू समायोजन गरी प्रयोग गर्न सक्नुहुन्छ।
- `epsilon` **अन्वेषण/शोषण फ्याक्टर** हो जसले हामीले अन्वेषणलाई शोषणमा प्राथमिकता दिनुपर्छ कि उल्टो भनेर निर्धारण गर्दछ। हाम्रो एल्गोरिदममा, हामी `epsilon` प्रतिशत केसहरूमा Q-Table मानहरू अनुसार अर्को कार्य चयन गर्नेछौं, र बाँकी केसहरूमा हामी जस्तोसुकै कार्य कार्यान्वयन गर्नेछौं। यसले हामीलाई खोज स्थानका क्षेत्रहरू अन्वेषण गर्न अनुमति दिनेछ जुन हामीले पहिले कहिल्यै देखेका छैनौं।
+ `gamma` **छुटको कारक** हो जसले भविष्यको पुरस्कारलाई हालको पुरस्कार भन्दा कति प्राथमिकता दिने जनाउँछ।
- ✅ सन्तुलनको सन्दर्भमा - जस्तोसुकै कार्य चयन गर्नु (अन्वेषण) गलत दिशामा एक प्रकारको अनियमित धक्का जस्तै कार्य गर्नेछ, र पोलले ती "गल्तीहरू" बाट सन्तुलन पुन: प्राप्त गर्न सिक्नुपर्नेछ।
+ `epsilon` **पत्ता लगाउने/फाइदा उठाउने कारक** हो जुन पत्ता लगाउने वा फाइदा उठाउने पक्षलाई प्राथमिकता दिने जनाउँछ। हाम्रो एल्गोरिदममा, हामी `epsilon` प्रतिशत अवस्थामा Q-टेबल मान अनुसार अर्को कार्य चयन गर्नेछौं, बाँकी अवस्थामा बेतरतीब् कार्य गर्नेछौं। यसले हामीलाई पहिले कहिल्यै नदेखेका खोज क्षेत्रहरूको अन्वेषण गर्न मद्दत गर्नेछ।
-### एल्गोरिदम सुधार गर्नुहोस्
+ ✅ सन्तुलनका सन्दर्भमा - बेतरतीब् कार्य (अन्वेषण) गलत दिशामा एक बेतरतीब् प्रहार जस्तै हुनेछ, र पोलहरूले ती "गल्तीहरू" बाट सन्तुलन पुनःप्राप्ति सिक्नुपर्नेछ।
-हामी अघिल्लो पाठबाट हाम्रो एल्गोरिदममा दुई सुधारहरू गर्न सक्छौं:
+### एल्गोरिदम सुधार
-- **औसत संचयी पुरस्कार गणना गर्नुहोस्**, धेरै अनुकरणहरूमा। हामी प्रत्येक 5000 पुनरावृत्तिमा प्रगति प्रिन्ट गर्नेछौं, र हामी त्यस अवधिको समयको लागि हाम्रो संचयी पुरस्कारलाई औसत गर्नेछौं। यसको मतलब यदि हामीले 195 भन्दा बढी अंक प्राप्त गर्यौं भने - हामीले समस्या समाधान गरेको मान्न सक्छौं, आवश्यकताभन्दा उच्च गुणस्तरको साथ।
+हामीले अघिल्लो पाठबाट हाम्रो एल्गोरिदममा दुई सुधार पनि गर्न सक्छौं:
-- **अधिकतम औसत संचयी परिणाम गणना गर्नुहोस्**, `Qmax`, र हामीले प्रशिक्षणको क्रममा देखिएको सबैभन्दा राम्रो मोडेलसँग मेल खाने Q-Table भण्डारण गर्नेछौं। जब तपाईंले प्रशिक्षण चलाउनुहुन्छ, तपाईंले देख्नुहुनेछ कि कहिलेकाहीं औसत संचयी परिणाम घट्न थाल्छ, र हामीले Q-Table को मानहरू राख्न चाहन्छौं जुन खराब स्थिति बनाउने मानहरूसँग मेल खान्छ।
+- **औसत संचयी पुरस्कार गणना गर्नुहोस्**, धेरै अनुकरणहरूमा। हामी प्रत्येक ५००० पुनरावृत्तिमा प्रगति मुद्रित गर्नेछौं, र त्यो अवधिमा हुने संचयी पुरस्कारको औसत निकाल्नेछौं। यसको अर्थ यदि हामीले १९५ भन्दा बढी अंक पायौं भने - हामी समस्यालाई समाधान गरिएको मान्न सक्छौं, अझ राम्रो गुणस्तरसहित।
+
+- **अधिकतम औसत संचयी परिणाम गणना गर्नुहोस्**, `Qmax` भन्ने, र त्यो परिणामसँग मिल्ने Q-टेबल भण्डारण गर्नेछौं। प्रशिक्षण चलाउँदा कहिलेकाहीं औसत संचयी परिणाम घट्न सक्छ, र हामी प्रशिक्षणको क्रममा देखिएका उत्कृष्ट मोडेलसँग मेल खाने Q-टेबल मानहरू राख्न चाहन्छौं।
-1. प्रत्येक अनुकरणमा संचयी पुरस्कारहरू `rewards` भेक्टरमा संकलन गर्नुहोस् भविष्यमा प्लटिङको लागि। (कोड ब्लक 11)
+1. प्रत्येक अनुकरणमा सबै संचयी पुरस्कारहरू `rewards` भेक्टरमा सङ्कलन गर्नुहोस् ताकि पछि प्लटिङ गर्न सकियोस। (कोड ब्लक 11)
```python
def probs(v,eps=1e-4):
@@ -214,15 +234,15 @@ Q-Learning मा, हामीले Q-Table निर्माण गर्न
obs = env.reset()
done = False
cum_reward=0
- # == do the simulation ==
+ # == अनुकरण गर्नुहोस् ==
while not done:
s = discretize(obs)
if random.random() Qmax:
@@ -240,25 +260,25 @@ Q-Learning मा, हामीले Q-Table निर्माण गर्न
cum_rewards=[]
```
-तपाईंले ती परिणामहरूबाट निम्न कुरा देख्न सक्नुहुन्छ:
+तपाईंलाई ती परिणामहरूबाट देख्न सकिने कुराहरू:
-- **हाम्रो लक्ष्य नजिक**। हामी 100+ लगातार अनुकरणहरूको औसत पुरस्कार 195 प्राप्त गर्ने लक्ष्य प्राप्त गर्न धेरै नजिक छौं, वा हामीले वास्तवमा यसलाई प्राप्त गर्यौं! यदि हामीले साना संख्याहरू प्राप्त गर्यौं भने पनि, हामी अझै थाहा पाउँदैनौं, किनकि हामी 5000 रनहरूमा औसत गर्छौं, र औपचारिक मापदण्डमा केवल 100 रन आवश्यक छ।
+- **हाम्रो लक्ष्य नजिकै**। हामी १०० भन्दा बढी लगातार अनुकरण रनहरूमा १९५ संचयी पुरस्कार प्राप्त गर्ने लक्ष्य नजिक छौं, वा सायद प्राप्त गरिसकेका छौं! यदि सानो मानहरू प्राप्त भएपनि, हामीले ५००० रनको औसत लिइरहेका छौं र आधिकारिक मापदण्डमा कागजी रूपमा १०० रन पुग्न पुग्छ।
+
+- **पुरस्कार घट्न शुरु हुन्छ**। कहिलेकाहीं पुरस्कार घट्न थाल्छ, जसको अर्थ हामीले पहिले सिकेका Q-टेबल मूल्यहरू नोक्सान गर्न सकिरहेका छौं जुन स्थिति खराब पार्छ।
-- **पुरस्कार घट्न थाल्छ**। कहिलेकाहीं पुरस्कार घट्न थाल्छ, जसको मतलब हामीले Q-Table मा पहिले सिकेका मानहरूलाई "नष्ट" गर्न सक्छौं जसले स्थिति खराब बनाउने मानहरूसँग मेल खान्छ।
-
-यो अवलोकन अझ स्पष्ट रूपमा देखिन्छ यदि हामी प्रशिक्षण प्रगति प्लट गर्छौं।
+प्रशिक्षण प्रगतिको प्लट गरेपछि यो अवलोकन अझ प्रष्ट देखिन्छ।
## प्रशिक्षण प्रगति प्लटिङ
-प्रशिक्षणको क्रममा, हामीले प्रत्येक पुनरावृत्तिमा संचयी पुरस्कार मानलाई `rewards` भेक्टरमा संकलन गरेका छौं। यहाँ यो पुनरावृत्ति नम्बरको विरुद्धमा प्लट गर्दा कस्तो देखिन्छ:
+प्रशिक्षणका दौरान, हामी प्रत्येक पुनरावृत्तिमा संचयी पुरस्कार सङ्कलन गर्यौं `rewards` भेक्टरमा। तल यसलाई पुनरावृत्ति सङ्ख्याको विरुद्ध प्लट गर्नुको तरिका छ:
```python
plt.plot(rewards)
```
-
+
-यस ग्राफबाट केही भन्न सम्भव छैन, किनकि स्टोकेस्टिक प्रशिक्षण प्रक्रियाको प्रकृतिका कारण प्रशिक्षण सत्रहरूको लम्बाइ धेरै भिन्न हुन्छ। यस ग्राफलाई अझ अर्थपूर्ण बनाउन, हामी 100 जस्तै प्रयोगहरूको श्रृंखलामा **चलिरहेको औसत** गणना गर्न सक्छौं। यो `np.convolve` प्रयोग गरेर सुविधाजनक रूपमा गर्न सकिन्छ: (कोड ब्लक 12)
+यस ग्राफबाट केही भन्न सकिन्न किनकि संख्यात्मक प्रशिक्षण प्रक्रियाको स्वभावले प्रशिक्षण सत्रहरूको लम्बाइ धेरै फरक हुन्छ। यसको अर्थ बुझ्न, हामी श्रृंखलाबद्ध प्रयोगहरूको **चलिरहेको औसत** गणना गर्न सक्छौं, जस्तै १००। यो सजिलै `np.convolve` प्रयोग गरेर गर्न सकिन्छ: (कोड ब्लक 12)
```python
def running_average(x,window):
@@ -267,21 +287,24 @@ def running_average(x,window):
plt.plot(running_average(rewards,100))
```
-
+
+
+## हाइपरप्यारामिटरहरू परिवर्तन गर्दै
+
+सिकाइलाई स्थिर बनाउन, हामीले प्रशिक्षणका दौरान हाम्रा केहि हाइपरप्यारामिटरहरू समायोजन गर्न सक्छौं। विशेषतः:
+
+- **शिक्षण दर `alpha` को लागि**, हामी सुरुमा १ नजिकको मानबाट सुरु गर्न सक्छौं, त्यसपछि यो घटाउन सक्छौं। समयसँगै, हामीले Q-टेबलमा राम्रो सम्भाव्यता मानहरू पाइरहेका छौं, त्यसैले सानोतिनो समायोजन ठीक छ, पूर्ण नयाँ मानहरूले नबद्लिने।
-## हाइपरप्यारामिटरहरू फरक पार्दै
+- **`epsilon` बढाउनुहोस्**। हामी बिस्तारै `epsilon` बढाउन सक्छौं, यसरी अन्वेषण कम र फाइदा उठाउने बढी हुनेछ। सम्भावित रूपमा `epsilon` सानो मानले सुरु गर्नु र लगभग १ सम्म पुर्याउनु ठीक हुन्छ।
-सिकाइलाई अझ स्थिर बनाउन, प्रशिक्षणको क्रममा केही हाइपरप्यारामिटरहरू समायोजन गर्नु उपयुक्त हुन्छ। विशेष गरी:
+> **कार्य १**: हाइपरप्यारामिटर मानहरू मिलाएर हेर्नुहोस् र उच्च संचयी पुरस्कार प्राप्त गर्न सक्नुहुन्छ कि छैन। के तपाईं १९५ भन्दा माथि पुग्नुहुन्छ?
-- **सिकाइ दरको लागि**, `alpha`, हामी 1 नजिकको मानबाट सुरु गर्न सक्छौं, र त्यसपछि प्यारामिटर घटाउन जारी राख्न सक्छौं। समयसँगै, हामीले Q-Table मा राम्रो सम्भावना मानहरू प्राप्त गर्नेछौं, र त्यसैले हामीले तिनीहरूलाई थोरै समायोजन गर्नुपर्छ, र नयाँ मानहरूसँग पूर्ण रूपमा ओभरराइट गर्नु हुँदैन।
-- **epsilon बढाउनुहोस्**। हामीले `epsilon` लाई बिस्तारै बढाउन चाहन सक्छौं, कम अन्वेषण गर्न र बढी शोषण गर्न। सम्भवतः `epsilon` को कम मानबाट सुरु गर्नु र लगभग 1 सम्म बढाउनु उपयुक्त हुन्छ।
-> **कार्य १**: हाइपरप्यारामिटरका मानहरू परिवर्तन गरेर खेल्नुहोस् र उच्च क्युमुलेटिभ पुरस्कार प्राप्त गर्न सक्नुहुन्छ कि हेर्नुहोस्। के तपाईं १९५ भन्दा माथि प्राप्त गर्दै हुनुहुन्छ?
-> **कार्य २**: समस्यालाई औपचारिक रूपमा समाधान गर्न, तपाईंले १०० लगातार रनहरूमा १९५ औसत इनाम प्राप्त गर्नुपर्नेछ। प्रशिक्षणको क्रममा यो मापन गर्नुहोस् र सुनिश्चित गर्नुहोस् कि तपाईंले समस्यालाई औपचारिक रूपमा समाधान गर्नुभएको छ!
+> **कार्य २**: समस्यालाई औपचारिक रूपमा समाधान गर्नको लागि, तपाईले १०० लगातार रनहरूमा १९५ औसत पुरस्कार पाउनुपर्छ। तालिमको दौरान त्यसलाई मापन गर्नुहोस् र पक्का गर्नुहोस् कि तपाईले औपचारिक रूपमा समस्यालाई समाधान गर्नुभएको छ!
-## नतिजा कार्यान्वयनमा हेर्दै
+## परिणामलाई प्रत्यक्षमा हेर्नुहोस्
-यो हेर्न रोचक हुनेछ कि प्रशिक्षित मोडेल कसरी व्यवहार गर्छ। आउनुहोस्, सिमुलेशन चलाउँछौं र प्रशिक्षणको क्रममा जस्तै कार्य चयन रणनीति अनुसरण गरौं, Q-Table मा रहेको सम्भाव्यता वितरण अनुसार नमूना लिऔं: (कोड ब्लक १३)
+तालिम प्राप्त मोडेल कस्तो व्यवहार गर्छ भनेर वास्तविक रुपमा हेर्न रोचक हुने थियो। आउनुहोस् सिमुलेशन चलाउँ र तालिमको समयमा जस्तै कार्य चयन रणनीति पालन गरौं, Q-टेबलमा रहेको सम्भावनाको वितरण अनुसार नमूनाको चयन गरौं: (कोड ब्लक १३)
```python
obs = env.reset()
@@ -295,30 +318,32 @@ while not done:
env.close()
```
-तपाईंले केही यस प्रकारको देख्नुहुनेछ:
+तपाईलाई यस प्रकार केही देखिनु पर्छ:
-
+
---
## 🚀चुनौती
-> **कार्य ३**: यहाँ हामीले Q-Table को अन्तिम प्रतिलिपि प्रयोग गरिरहेका थियौं, जुन सधैं उत्तम नहुन सक्छ। सम्झनुहोस् कि हामीले सबैभन्दा राम्रो प्रदर्शन गर्ने Q-Table लाई `Qbest` भेरिएबलमा भण्डारण गरेका छौं! `Qbest` लाई `Q` मा प्रतिलिपि गरेर, उही उदाहरण प्रयास गर्नुहोस् र के तपाईंले कुनै फरक देख्नुहुन्छ कि हेर्नुहोस्।
+> **कार्य ३**: यहाँ, हामीले Q-टेबलको अन्तिम कपी प्रयोग गरिरहेका थियौं, जुन उत्तम छैन पनि सक्छ। याद गर्नुहोस् कि हामीले सबैभन्दा राम्रो प्रदर्शन गर्ने Q-टेबललाई `Qbest` परिवर्तनशीलमा भण्डारण गरेका छौं! `Qbest` लाई `Q` मा कपी गरेर उत्तम प्रदर्शन गर्ने Q-टेबलसँग उही उदाहरण प्रयास गर्नुहोस् र के फरक छ भनेर हेर्नुहोस्।
-> **कार्य ४**: यहाँ हामीले प्रत्येक चरणमा सबैभन्दा राम्रो कार्य चयन गरिरहेका थिएनौं, बरु सम्बन्धित सम्भाव्यता वितरणसँग नमूना लिइरहेका थियौं। के यो सधैं सबैभन्दा राम्रो कार्य चयन गर्न अधिक उपयुक्त हुनेछ, जसको Q-Table मान सबैभन्दा उच्च छ? यो `np.argmax` फंक्शन प्रयोग गरेर, सबैभन्दा उच्च Q-Table मानसँग सम्बन्धित कार्य नम्बर पत्ता लगाएर गर्न सकिन्छ। यो रणनीति कार्यान्वयन गर्नुहोस् र के यसले सन्तुलन सुधार गर्छ कि हेर्नुहोस्।
+> **कार्य ४**: यहाँ हामी प्रत्येक कदममा सबैभन्दा राम्रो कार्य चयन गरिरहेका थियैनौं, बरु सम्बद्ध सम्भावना वितरण अनुसार नमूना गर्दै थियौं। के सधैं सबैभन्दा राम्रो कार्य, जसको Q-टेबल मान सबैभन्दा बढी छ, चयन गर्दा बढी मतलब लाग्दछ? यो `np.argmax` फङ्सन प्रयोग गरेर सबैभन्दा बढी Q-टेबल मान भएको कार्य नम्बर थाहा पाउन सकिन्छ। यो रणनीति कार्यान्वयन गर्नुहोस् र हेर्नुहोस् के यसले सन्तुलन सुधार्छ कि होइन।
-## [पोस्ट-व्याख्यान क्विज](https://ff-quizzes.netlify.app/en/ml/)
+## [पाठ-पछि क्विज](https://ff-quizzes.netlify.app/en/ml/)
-## असाइनमेन्ट
-[माउन्टेन कारलाई प्रशिक्षण दिनुहोस्](assignment.md)
+## असाइन्मेन्ट
+[एउटा माउन्टेन कार तालिम गर्नुहोस्](assignment.md)
## निष्कर्ष
-हामीले अब एजेन्टहरूलाई राम्रो नतिजा प्राप्त गर्न कसरी प्रशिक्षण दिने भनेर सिकेका छौं, केवल तिनीहरूलाई खेलको इच्छित अवस्थालाई परिभाषित गर्ने इनाम फंक्शन प्रदान गरेर, र तिनीहरूलाई खोज स्थानलाई बुद्धिमानीपूर्वक अन्वेषण गर्ने अवसर दिएर। हामीले Q-Learning एल्गोरिदमलाई छुट्टै र निरन्तर वातावरणहरूको अवस्थामा सफलतापूर्वक लागू गरेका छौं, तर छुट्टै कार्यहरूसँग।
+हामीले अब सिक्यौं कसरी एजेन्टहरुलाई राम्रो नतिजा पाउनको लागि एउटा पुरस्कार कार्य प्रदान गरेर, जुन खेलको इच्छित अवस्थालाई परिभाषित गर्छ, र उनीहरुलाई बुद्धिमत्तापूर्वक खोज क्षेत्र अनुसन्धान गर्ने अवसर दिएर प्रशिक्षित गर्ने। हामीले Q-लर्निङ एल्गोरिदमलाई द्विसंख्य र निरन्तर वातावरणहरूमा सफलतापूर्वक लागू गरेका छौं, तर द्विसंख्य क्रियाहरुसँग।
-यो पनि अध्ययन गर्नु महत्त्वपूर्ण छ कि जहाँ कार्य अवस्था पनि निरन्तर हुन्छ, र अवलोकन स्थान धेरै जटिल हुन्छ, जस्तै Atari खेलको स्क्रिनबाट आएको छवि। यस्ता समस्याहरूमा हामीले प्रायः राम्रो नतिजा प्राप्त गर्न थप शक्तिशाली मेसिन लर्निङ प्रविधिहरू, जस्तै न्यूरल नेटवर्कहरू, प्रयोग गर्न आवश्यक पर्छ। ती थप उन्नत विषयवस्तुहरू हाम्रो आगामी उन्नत AI पाठ्यक्रमको विषयवस्तु हुन्।
+त्यस्तै, यस्तो अवस्था अध्ययन गर्नु पनि महत्त्वपूर्ण छ जहाँ क्रिया अवस्था पनि निरन्तर हुन्छ, र अवलोकन क्षेत्र धेरै जटिल हुन्छ, जस्तै एटारी गेम स्क्रिनबाट आएका छविहरू। ती समस्याहरुमा सामान्यतः प्रभावकारी नतिजा प्राप्त गर्न अधिक सक्षम मेसिन लर्निङ प्रविधिहरु, जस्तै न्यूरल नेटवर्कहरू प्रयोग गर्नुपर्ने हुन्छ। ती उन्नत विषयहरू हाम्रो आगामी उन्नत AI कोर्सको विषय हुन्।
---
-**अस्वीकरण**:
-यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको छ। हामी शुद्धताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं।
\ No newline at end of file
+
+**अस्वीकरण**:
+यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको हो। हामी सही हुन प्रयास गर्छौं, तर कृपया जानकार हुनुस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छन्। मूल दस्तावेज़ यसको मूल भाषामा आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीका लागि व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न कुनै पनि गलत बुझाइ वा त्रुटिको लागि हामी जिम्मेवार छैनौं।
+
\ No newline at end of file
diff --git a/translations/ne/9-Real-World/2-Debugging-ML-Models/README.md b/translations/ne/9-Real-World/2-Debugging-ML-Models/README.md
index 4f1c1b74e..c71b583d7 100644
--- a/translations/ne/9-Real-World/2-Debugging-ML-Models/README.md
+++ b/translations/ne/9-Real-World/2-Debugging-ML-Models/README.md
@@ -1,150 +1,171 @@
-# पोस्टस्क्रिप्ट: जिम्मेवार AI ड्यासबोर्ड कम्पोनेन्टहरू प्रयोग गरेर मेसिन लर्निङ मोडेल डिबगिङ
-
-## [प्री-लेक्चर क्विज](https://ff-quizzes.netlify.app/en/ml/)
+# पोष्टस्क्रिप्ट: जिम्मेवार AI ड्यासबोर्ड कम्पोनेन्टहरूको उपयोग गरी मेसिन लर्निङमा मोडल डिबगिङ
+
+## [पाठ अघि क्विज](https://ff-quizzes.netlify.app/en/ml/)
+
## परिचय
-मेसिन लर्निङले हाम्रो दैनिक जीवनलाई प्रभाव पार्छ। AI स्वास्थ्य सेवा, वित्त, शिक्षा, र रोजगारी जस्ता क्षेत्रहरूमा प्रवेश गर्दैछ, जसले व्यक्तिगत रूपमा हामीलाई र हाम्रो समाजलाई असर गर्ने महत्त्वपूर्ण प्रणालीहरूमा भूमिका खेल्छ। उदाहरणका लागि, स्वास्थ्य सेवा निदान वा ठगी पत्ता लगाउने जस्ता दैनिक निर्णय प्रक्रियाहरूमा प्रणालीहरू र मोडेलहरू संलग्न छन्। यसका परिणामस्वरूप, AI को प्रगतिहरू र यसको तीव्र अपनत्वसँगै समाजका अपेक्षाहरू विकसित हुँदैछन् र सरकारहरूले AI समाधानहरूलाई नियमन गर्न थालेका छन्। त्यसैले, यी मोडेलहरूलाई सबैका लागि निष्पक्ष, भरपर्दो, समावेशी, पारदर्शी, र उत्तरदायी परिणामहरू प्रदान गर्न विश्लेषण गर्नु महत्त्वपूर्ण छ।
+मेसिन लर्निङले हाम्रो दैनिक जीवनमा प्रभाव पार्दछ। AI हामीलाई व्यक्तिगत तथा समाजको रूपमा प्रभाव पार्ने सबैभन्दा महत्वपूर्ण प्रणालीहरूमा मार्ग बनाउँदैछ, स्वास्थ्य सेवा, वित्तीय सेवा, शिक्षा, र रोजगारदेखि। उदाहरणका लागि, प्रणाली र मोडेलहरू दैनिक निर्णय-निर्माण कार्यहरूमा संलग्न छन्, जस्तै स्वास्थ्य सेवा निदान वा धोखाधडी पत्ता लगाउने। नतिजाको रूपमा, AI मा प्रगति र यसको तिव्र अपनत्वले सामाजिक अपेक्षाहरू विकास भइरहेका छन् र यसको जवाफ स्वरूप नियमहरू बढिरहेका छन्। हामी निरन्तर यी क्षेत्रहरू देख्छौं जहाँ AI प्रणालीहरूले अपेक्षाहरू पूरा गर्न नसक्दछन्; तिनीहरूले नयाँ चुनौतीहरू उठाउँछन्; र सरकारले AI समाधानहरूलाई नियमन गर्न सुरु गरेको छ। त्यसैले, यी मोडेलहरूलाई सबैका लागि न्यायपूर्ण, भरपर्दो, समावेशी, पारदर्शी, र जवाफदेही परिणामहरू दिनका लागि विश्लेषण गर्नु महत्त्वपूर्ण छ।
-यस पाठ्यक्रममा, हामी व्यावहारिक उपकरणहरूको अध्ययन गर्नेछौं जसले मोडेलमा जिम्मेवार AI सम्बन्धी समस्या छ कि छैन भनेर मूल्याङ्कन गर्न मद्दत गर्दछ। परम्परागत मेसिन लर्निङ डिबगिङ प्रविधिहरू प्रायः मात्रात्मक गणनाहरूमा आधारित हुन्छन्, जस्तै समग्र सटीकता वा औसत त्रुटि हानि। कल्पना गर्नुहोस् कि तपाईंले मोडेल निर्माण गर्न प्रयोग गरेको डाटामा जाति, लिङ्ग, राजनीतिक विचार, धर्म जस्ता जनसांख्यिकीय समूहहरू अनुपस्थित छन् वा असमान रूपमा प्रतिनिधित्व गरिएको छ। यदि मोडेलको नतिजा कुनै जनसांख्यिकीय समूहलाई प्राथमिकता दिन व्याख्या गरिन्छ भने के हुन्छ? यसले संवेदनशील विशेषता समूहहरूको अत्यधिक वा न्यून प्रतिनिधित्वलाई परिचय गराउन सक्छ, जसले मोडेलमा निष्पक्षता, समावेशिता, वा भरपर्दो समस्याहरू उत्पन्न गर्न सक्छ। अर्को चुनौती भनेको मेसिन लर्निङ मोडेलहरू "ब्ल्याक बक्स" मानिन्छन्, जसले मोडेलको भविष्यवाणीलाई के चलाउँछ भन्ने कुरा बुझ्न र व्याख्या गर्न कठिन बनाउँछ। जब डाटा वैज्ञानिकहरू र AI विकासकर्ताहरूले मोडेलको निष्पक्षता वा विश्वासयोग्यता मूल्याङ्कन गर्न पर्याप्त उपकरणहरू नभएको अवस्थामा यी सबै चुनौतीहरू देखा पर्छन्।
+यस पाठ्यक्रममा, हामी व्यावहारिक उपकरणहरू हेर्नेछौं जसले मोडलमा जिम्मेवार AI का समस्याहरू छ कि छैन जाँच्न सक्छ। परम्परागत मेसिन लर्निङ डिबगिङ प्रविधिहरू सामान्यतया संख्यात्मक गणनाहरूमा आधारित हुन्छन् जस्तै समग्र सटीकता वा औसत त्रुटि हानि। कल्पना गर्नुहोस् जब तपाईं प्रयोग गरिरहेको डेटामा केही जातीयता, लिंग, राजनीतिक दृष्टिकोण, धर्म जस्ता जनसांख्यिकीयहरू अभाव छ वा असमान रूपमा प्रतिनिधित्व गरिएको छ भने के हुन सक्छ। के हुन्छ जब मोडलको आउटपुट केहि जनसांख्यिकीयलाई प्राथमिकता दिने गरी व्याख्या गरिन्छ? यसले संवेदनशील विशेषता समूहहरूको अत्यधिक वा कम प्रतिनिधित्वलाई जन्म दिन सक्छ जसले मोडेलबाट न्याय, समावेशीता, वा भरपर्दो समस्या निम्त्याउँछ। अर्को पक्ष, मेसिन लर्निङ मोडेलहरूलाई ब्ल्याक बक्स मानिन्छ, जसले मोडेलको भविष्यवाणी के द्वारा परिचालित छ बुझ्न र व्याख्या गर्न गाह्रो बनाउँछ। यी सबै चुनौतीहरू डाटा वैज्ञानिक र AI विकासकर्ताहरूले सामना गर्छन् जब उनीहरूसँग मोडलको न्याय वा विश्वसनीयता मूल्यांकन गर्न पर्याप्त उपकरण हुँदैन।
-यस पाठमा, तपाईं आफ्नो मोडेलहरू डिबग गर्न निम्न विधिहरू सिक्नुहुनेछ:
+यस पाठमा, तपाईंले तलका उपकरणहरूसँग आफ्नो मोडल डिबग गर्ने तरिका सिक्नु हुनेछ:
-- **त्रुटि विश्लेषण**: डाटा वितरणको कुन भागमा मोडेलको उच्च त्रुटि दर छ भनेर पहिचान गर्नुहोस्।
-- **मोडेल अवलोकन**: विभिन्न डाटा समूहहरूमा तुलनात्मक विश्लेषण गरेर मोडेलको प्रदर्शन मेट्रिक्समा असमानता पत्ता लगाउनुहोस्।
-- **डाटा विश्लेषण**: डाटाको अत्यधिक वा न्यून प्रतिनिधित्व कहाँ छ भनेर अनुसन्धान गर्नुहोस्, जसले मोडेललाई एक डाटा जनसांख्यिकीयलाई अर्कोभन्दा बढी प्राथमिकता दिन प्रेरित गर्न सक्छ।
-- **विशेषता महत्त्व**: मोडेलको भविष्यवाणीलाई विश्वव्यापी वा स्थानीय स्तरमा कुन विशेषताहरूले चलाइरहेका छन् भनेर बुझ्नुहोस्।
+- **त्रुटि विश्लेषण**: तपाईंको डेटा वितरणमा मोडललाई उच्च त्रुटि दर कहाँ छ पहिचान गर्नुहोस्।
+- **मोडेल अवलोकन**: विभिन्न डेटा समूहहरूमा तुलनात्मक विश्लेषण गरेर मोडेलको प्रदर्शन मेट्रिक्समा भिन्नता पत्ता लगाउनुहोस्।
+- **डेटा विश्लेषण**: तपाईंको डेटा कहाँ अत्यधिक वा कम प्रतिनिधित्व हुन सक्छ जाँच गरेर मोडेलले कुनै एक जनसांख्यिकीयलाई प्राथमिकता दिने तरिका पत्ता लगाउनुहोस्।
+- **विशेषता महत्व**: कुन विशेषताहरूले तपाईंको मोडलका भविष्यवाणिहरूलाई विश्वव्यापी वा स्थानीय स्तरमा संचालित गरिरहेका छन् बुझ्नुहोस्।
-## पूर्वशर्त
+## पूर्वाधार
-पूर्वशर्तको रूपमा, कृपया [जिम्मेवार AI उपकरणहरूका लागि समीक्षा](https://www.microsoft.com/ai/ai-lab-responsible-ai-dashboard) गर्नुहोस्।
+पूर्वाधारको रूपमा, कृपया समीक्षा गर्नुहोस् [जिम्मेवार AI विकासकर्ता उपकरणहरू](https://www.microsoft.com/ai/ai-lab-responsible-ai-dashboard)।
-> 
+> 
## त्रुटि विश्लेषण
-परम्परागत मोडेल प्रदर्शन मेट्रिक्स, जस्तै सटीकता मापन, प्रायः सही र गलत भविष्यवाणीहरूको गणनामा आधारित हुन्छ। उदाहरणका लागि, यदि मोडेल ८९% समय सटीक छ र त्रुटि हानि ०.००१ छ भने यो राम्रो प्रदर्शन मान्न सकिन्छ। तर त्रुटिहरू डाटाको आधारभूत सेटमा समान रूपमा वितरण भएका हुँदैनन्। तपाईंले ८९% सटीकता स्कोर प्राप्त गर्न सक्नुहुन्छ तर पत्ता लगाउन सक्नुहुन्छ कि डाटाको केही क्षेत्रहरूमा मोडेल ४२% समय असफल भइरहेको छ। यी असफलता ढाँचाहरूले निष्पक्षता वा भरपर्दो समस्याहरू उत्पन्न गर्न सक्छ। मोडेलले राम्रो प्रदर्शन गरिरहेको क्षेत्रहरू र खराब प्रदर्शन गरिरहेको क्षेत्रहरू बुझ्न महत्त्वपूर्ण छ। डाटाको ती क्षेत्रहरू जहाँ मोडेलको उच्च त्रुटि दर छ, महत्त्वपूर्ण जनसांख्यिकीय समूह हुन सक्छ।
+परम्परागत मोडल प्रदर्शन मेट्रिक्सहरू प्रायः सही र गलत भविष्यवाणीहरूको आधारमा गणना गरिन्छ। उदाहरणका लागि, मोडल ८९% समय सटीक छ र त्रुटि हानि ०.००१ छ भन्ने निर्धारण राम्रो प्रदर्शन मानिन्छ। त्रुटिहरू सामान्यतः तपाईंको आधारभूत डेटासेटमा समान रूपमा वितरित हुँदैनन्। तपाईंले ८९% मोडल सटीकता पाउनसक्नुहुन्छ तर पत्ता लगाउनसक्नुहुन्छ कि मोडल केही डेटा भूभागहरूमा ४२% समय असफल हुन्छ। यी असफलताको ढाँचाहरूले केही डेटा समूहमा न्याय वा भरपर्दो समस्या निम्त्याउन सक्छ। मोडलले राम्रो वा खराब प्रदर्शन गरिरहेको क्षेत्रहरू बुझ्नु आवश्यक छ। त्यस्ता डेटा क्षेत्रहरू जहाँ मोडलमा धेरै अशुद्धि हुन्छ, त्यहाँ महत्वपूर्ण डेटा जनसांख्यिकीय हुन सक्छ।
+
+
+
+RAI ड्यासबोर्डमा त्रुटि विश्लेषण कम्पोनेन्टले विभिन्न समूहहरूमा मोडेल असफलता कसरी वितरण गरिएको छ भनी वृक्ष दृश्यशैलीमा देखाउँछ। यसले तपाईंको डेटासेटमा ठूलो त्रुटि दर भएका विशेषता वा क्षेत्रहरू पहिचान गर्न मद्दत गर्छ। मोडेलका अधिकांश अशुद्धिहरू कहाँबाट आउँछन् हेरेर, तपाईँ जरा कारण अनुसन्धान गर्न सुरु गर्न सक्नुहुन्छ। तपाईं विश्लेषण गर्न डेटा समूहहरू पनि बनाउन सक्नुहुन्छ। यी डेटा समूहहरूले डिबगिङ प्रक्रियामा मद्दत गर्छन् किनभने मोडेलको प्रदर्शन एक समूहमा राम्रो छ तर अर्कोमा गलत छ भनेर बुझ्न।
+
+
-
+वृक्ष नक्सामा दृश्य संकेतहरूले समस्या क्षेत्र छिटो पत्ता लगाउन मद्दत गर्छ। उदाहरणका लागि, वृक्ष नोडको गाढा रातो छायाँले त्रुटि दर उच्च छ जनाउँछ।
-RAI ड्यासबोर्डको त्रुटि विश्लेषण कम्पोनेन्टले विभिन्न समूहहरूमा मोडेल असफलता कसरी वितरण भएको छ भनेर ट्री भिजुअलाइजेसनमार्फत देखाउँछ। यो डाटासेटमा उच्च त्रुटि दर भएका विशेषताहरू वा क्षेत्रहरू पहिचान गर्न उपयोगी छ। मोडेलको अधिकांश त्रुटिहरू कहाँबाट आइरहेका छन् भनेर हेरेर, तपाईंले समस्याको जड पत्ता लगाउन सुरु गर्न सक्नुहुन्छ। तपाईं डाटाको समूहहरू सिर्जना गरेर विश्लेषण गर्न सक्नुहुन्छ। यी समूहहरूले डिबगिङ प्रक्रियामा मद्दत गर्छन् कि किन मोडेलको प्रदर्शन एक समूहमा राम्रो छ तर अर्कोमा त्रुटिपूर्ण छ।
+हीट म्याप अर्को दृश्यता सुविधा हो जसले प्रयोगकर्ताहरूलाई एक वा दुई विशेषता प्रयोग गरी पूरा डेटासेट वा समूहहरूमा मोडेल त्रुटिहरूको कारण खोज्न मद्दत पुर्याउँछ।
-
+
-ट्री म्यापमा गाढा रातो रंगको छायाँले समस्या क्षेत्रहरू छिटो पत्ता लगाउन मद्दत गर्छ। उदाहरणका लागि, ट्री नोडमा गाढा रातो रंगको छायाँ छ भने, त्रुटि दर उच्च छ।
+त्रुटि विश्लेषण निम्न अवस्थामा प्रयोग गर्नुहोस्:
-हीट म्याप अर्को भिजुअलाइजेसन कार्यक्षमता हो, जसले प्रयोगकर्ताहरूलाई एक वा दुई विशेषताहरू प्रयोग गरेर त्रुटि दर अनुसन्धान गर्न मद्दत गर्छ, जसले सम्पूर्ण डाटासेट वा समूहहरूमा मोडेल त्रुटिहरूको योगदानकर्ता पत्ता लगाउन मद्दत गर्छ।
+* मोडेल असफलताहरू कसरी डेटासेट र विभिन्न इनपुट र विशेषता आयामहरूमा वितरण छन् गहिरो रूपमा बुझ्न।
+* समग्र प्रदर्शन मेट्रिक्सहरू तोड्नु र स्वतः गलत समूहहरू फेला पार्नु जसले लक्षित समाधान कदमहरूलाई जानकारी दिन्छ।
-
+## मोडल अवलोकन
-त्रुटि विश्लेषण प्रयोग गर्नुहोस् जब तपाईंलाई चाहिन्छ:
+मेसिन लर्निङ मोडलको प्रदर्शन मूल्यांकन गर्दा यसको व्यवहारको समग्र बुझाइ हुनु आवश्यक छ। यो त्रुटि दर, सटीकता, रिक्याल, प्रेसिजन, वा MAE (मिन एब्सोल्युट एरर) जस्ता एक भन्दा बढी मेट्रिक्स समीक्षा गरेर प्राप्त गर्न सकिन्छ जसले प्रदर्शन मेट्रिक्सहरू बीच भिन्नता पत्ता लगाउँछ। एक प्रदर्शन मेट्रिक राम्रो देखिए पनि अर्को मेट्रिकमा अशुद्धिहरू देख्न सकिन्छ। साथै, सम्पूर्ण डेटासेट वा समूहहरूमा भिन्नता तुलना गर्दा मोडेल कुन ठाउँमा राम्रो गरिरहेको छ वा छैन थाहा हुन्छ। यो विशेष गरी संवेदनशील बनाम असंवेदनशील विशेषताहरू (जस्तै, बिरामीको जात, लिंग, उमेर) बीच मोडेलको प्रदर्शन हेर्न महत्वपूर्ण छ जसले सम्भावित अन्याय पत्ता लगाउन मद्दत गर्दछ। उदाहरणका लागि, संवेदनशील विशेषता भएको समूहमा मोडेल बढी अशुद्ध छ भने सम्भावित अन्याय देखाउन सक्छ।
-* मोडेल असफलता कसरी डाटासेट र विभिन्न इनपुट तथा विशेषता आयामहरूमा वितरण भएको छ भनेर गहिरो समझ प्राप्त गर्नुहोस्।
-* समग्र प्रदर्शन मेट्रिक्सलाई तोडेर त्रुटिपूर्ण समूहहरू स्वतः पत्ता लगाउनुहोस् ताकि लक्षित समाधान कदमहरूलाई सूचित गर्न सकियोस्।
+RAI ड्यासबोर्डको मोडल अवलोकन कम्पोनेन्टले केवल समूहमा डेटा प्रतिनिधित्वको प्रदर्शन विश्लेषण गर्ने मात्र होइन, विभिन्न समूहहरूको बीचमा मोडेलको व्यवहार तुलना गर्ने क्षमता पनि दिन्छ।
-## मोडेल अवलोकन
+
-मेसिन लर्निङ मोडेलको प्रदर्शन मूल्याङ्कन गर्न यसको व्यवहारको समग्र समझ प्राप्त गर्नु आवश्यक छ। यो त्रुटि दर, सटीकता, रिकल, प्रिसिजन, वा MAE (मीन एब्सोल्युट एरर) जस्ता एकभन्दा बढी मेट्रिक्सको समीक्षा गरेर प्राप्त गर्न सकिन्छ। एक प्रदर्शन मेट्रिक राम्रो देखिन सक्छ, तर अर्को मेट्रिकमा असमानता देखिन सक्छ। साथै, सम्पूर्ण डाटासेट वा समूहहरूमा मेट्रिक्सको तुलनाले मोडेल कहाँ राम्रो प्रदर्शन गरिरहेको छ वा छैन भन्ने कुरा उजागर गर्न मद्दत गर्छ। यो विशेष गरी संवेदनशील र असंवेदनशील विशेषताहरू (जस्तै, बिरामीको जाति, लिङ्ग, वा उमेर) बीच मोडेलको प्रदर्शन हेर्न महत्त्वपूर्ण छ ताकि मोडेलले सम्भावित अन्याय गरेको छ कि छैन भनेर पत्ता लगाउन सकियोस्। उदाहरणका लागि, संवेदनशील विशेषताहरू भएको समूहमा मोडेल बढी त्रुटिपूर्ण छ भने, यसले मोडेलमा सम्भावित अन्याय देखाउन सक्छ।
+कम्पोनेन्टको विशेषता-आधारित विश्लेषणले प्रयोगकर्तालाई कुनै विशेष विशेषताभित्र डेटा उपसमूहहरूमा सङ्कुचित भएर ग्रानुलर स्तरमा विसंगतिहरू पहिचान गर्न सक्षम बनाउँछ। उदाहरणका लागि, ड्यासबोर्डमा प्रयोगकर्ताले छनोट गरेको विशेषता (जस्तै, *"time_in_hospital < 3"* या *"time_in_hospital >= 7"*) को लागि स्वतः समूहहरू सिर्जना गर्ने इन्टेलिजेन्स हुन्छ। यसले ठूलो डेटा समूहबाट कुनै विशेष विशेषतालाई अलग गर्ने र मोडेलका गलत परिणामहरू तर्फ के प्रभाव पारेको छ हेर्न मद्दत गर्दछ।
-RAI ड्यासबोर्डको मोडेल अवलोकन कम्पोनेन्टले न केवल समूहमा डाटा प्रतिनिधित्वको प्रदर्शन मेट्रिक्स विश्लेषण गर्न मद्दत गर्छ, तर यसले प्रयोगकर्ताहरूलाई विभिन्न समूहहरूमा मोडेलको व्यवहार तुलना गर्ने क्षमता प्रदान गर्दछ।
+
-
+मोडल अवलोकन कम्पोनेन्टले दुई प्रकारका भिन्नता मेट्रिक्स समर्थन गर्छ:
-कम्पोनेन्टको विशेषता-आधारित विश्लेषण कार्यक्षमताले प्रयोगकर्ताहरूलाई विशेषताहरूको विशिष्ट समूहहरूमा डाटा उपसमूहहरू संकुचित गर्न अनुमति दिन्छ ताकि सूक्ष्म स्तरमा असमानता पहिचान गर्न सकियोस्। उदाहरणका लागि, ड्यासबोर्डमा प्रयोगकर्ताले चयन गरेको विशेषताका लागि समूहहरू स्वतः उत्पन्न गर्न बौद्धिकता छ (जस्तै, *"time_in_hospital < 3"* वा *"time_in_hospital >= 7"*)। यसले प्रयोगकर्तालाई ठूलो डाटा समूहबाट विशेषताहरू अलग गर्न सक्षम बनाउँछ ताकि यो मोडेलको त्रुटिपूर्ण परिणामहरूको प्रमुख प्रभावकारक हो कि होइन भनेर हेर्न सकियोस्।
+**मोडेल प्रदर्शनमा भिन्नता**: यी मेट्रिक्सहरूले चयनित प्रदर्शन मेट्रिकको मानको भिन्नता (अन्तर) उपसमूहहरूमा गणना गर्छन्। केही उदाहरणहरू:
-
+* सटीकता दरमा भिन्नता
+* त्रुटि दरमा भिन्नता
+* प्रेसिजनमा भिन्नता
+* रिक्यालमा भिन्नता
+* औसत पूर्ण त्रुटि (MAE) मा भिन्नता
-मोडेल अवलोकन कम्पोनेन्टले दुई प्रकारका असमानता मेट्रिक्सलाई समर्थन गर्दछ:
+**चयन दरमा भिन्नता**: यो मेट्रिकले उपसमूहहरूमा चयन दर (सकारात्मक भविष्यवाणी) को भिन्नता समावेश गर्छ। एक उदाहरण हो ऋण अनुमोदन दरमा भिन्नता। चयन दर भनेको प्रत्येक वर्गमा १ (द्वैध वर्गीकरणमा) को रूपमा वर्गीकृत डेटा पोइन्टहरूको अंश वा भविष्यवाणी मानहरूको वितरण (रेग्रेशनमा) को सङ्ख्या हो।
-**मोडेल प्रदर्शनमा असमानता**: यी मेट्रिक्सले प्रदर्शन मेट्रिक्सको चयन गरिएको मानहरूमा डाटा उपसमूहहरूमा असमानता (अन्तर) गणना गर्छ। केही उदाहरणहरू:
+## डेटा विश्लेषण
-* सटीकता दरमा असमानता
-* त्रुटि दरमा असमानता
-* प्रिसिजनमा असमानता
-* रिकलमा असमानता
-* मीन एब्सोल्युट एरर (MAE) मा असमानता
+> "यदि तपाईं डेटा धेरै चोटि त्रास दिनुहुन्छ भने, यो जुनसुकै कुरा स्वीकार्छ" - Ronald Coase
-**चयन दरमा असमानता**: यो मेट्रिकले उपसमूहहरूमा चयन दर (अनुकूल भविष्यवाणी) को भिन्नता समावेश गर्दछ। यसको उदाहरण भनेको ऋण स्वीकृति दरमा असमानता हो। चयन दरले प्रत्येक वर्गमा डाटा बिन्दुहरूको अंशलाई १ (बाइनरी वर्गीकरणमा) वा भविष्यवाणी मानहरूको वितरण (रेग्रेशनमा) को रूपमा वर्गीकृत गरिएको अर्थ गर्दछ।
+यो कथन अतिनाटक जस्तो सुनिन्छ, तर यो सत्य छ कि डेटा कुनै पनि निष्कर्ष समर्थन गर्न हेरफेर गर्न सकिन्छ। यस्तो हेरफेर कहिलेकाहीं अनजानेमा हुन्छ। हामी सबैमा पक्षपात हुन्छ, र कहिले हामी डेटा मा पक्षपात परिचय गराइरहेका छौं भन्ने सजग रुपमा थाहा पाउन गाह्रो हुन्छ। AI र मेसिन लर्निङमा न्याय सुनिश्चित गर्नु चुनौतीपूर्ण कार्य हो।
-## डाटा विश्लेषण
+परम्परागत मोडल प्रदर्शन मेट्रिक्सका लागि डेटा ठूलो अन्धकार क्षेत्र हो। तपाईंसँग उच्च सटीकता हुन सक्छ, तर यो जहिल्यै तपाईंको डेटासेटको आधारभूत पक्षपातलाई प्रतिबिम्बित गर्दैन। उदाहरणको लागि, यदि कुनै कम्पनीमा कार्यरत कर्मचारीहरूमध्ये २७% महिला कार्यकारी स्तरमा छन् र ७३% पुरुष, तब यस्तो डेटामा प्रशिक्षित AI मोडेल वरिष्ठ स्तरको रोजगारका लागि मुख्यतया पुरुष लक्षित विज्ञापन गर्न सक्छ। डेटामा यो असन्तुलनले मोडेलको भविष्यवाणीलाई एक लिंगलाई प्राथमिकता दिन प्रवृत्त गराएको छ। यसले AI मोडेलमा लिंग पक्षपातको न्यायको समस्या उदांगो बनाउँछ।
-> "यदि तपाईंले डाटालाई पर्याप्त यातना दिनुभयो भने, यसले कुनै पनि कुरा स्वीकार गर्नेछ" - रोनाल्ड कोस
+RAI ड्यासबोर्डमा डेटा विश्लेषण कम्पोनेन्टले डेटासेटमा अत्यधिक वा कम प्रतिनिधित्व भएका क्षेत्रहरू पत्ता लगाउन मद्दत गर्छ। यसले प्रयोगकर्तालाई त्रुटि र न्यायसम्बन्धी समस्याहरू उत्पन्न गर्ने डेटा असन्तुलन वा विशिष्ट डेटा समूहको अभावको कारण निदान गर्न सक्षम बनाउँछ। यसले प्रयोगकर्तालाई भविष्यवाणी र वास्तविक परिणामहरू, त्रुटि समूहहरू, र विशेष विशेषताहरूको आधारमा डेटासेटहरू दृश्यात्मक रूपमा देखाउन अनुमति दिन्छ। कहिलेकाहीं कम प्रतिनिधित्व भएका डेटा समूह पत्ता लगाउँदा मोडेल राम्रो सिक्दै नसकेको पनि देखिन्छ, त्यसैले ती उच्च अशुद्धिहरू हुन्छन्। डेटा पक्षपात भएको मोडेल केवल न्यायसम्बन्धी समस्या मात्र होइन तर मोडेल समावेशी वा भरपर्दो छैन भन्ने संकेत हो।
-यो कथन अतिशयोक्तिपूर्ण लाग्न सक्छ, तर यो सत्य हो कि डाटालाई कुनै पनि निष्कर्ष समर्थन गर्न हेरफेर गर्न सकिन्छ। यस्तो हेरफेर कहिलेकाहीँ अनजानेमा पनि हुन सक्छ। हामी सबै मानिसहरूमा पूर्वाग्रह हुन्छ, र डाटामा पूर्वाग्रह परिचय गराउँदा हामीलाई सचेत रूपमा थाहा पाउन गाह्रो हुन्छ। AI र मेसिन लर्निङमा निष्पक्षता सुनिश्चित गर्नु जटिल चुनौती हो।
+
-डाटा परम्परागत मोडेल प्रदर्शन मेट्रिक्सको लागि ठूलो अन्धकार क्षेत्र हो। तपाईंले उच्च सटीकता स्कोर प्राप्त गर्न सक्नुहुन्छ, तर यसले डाटासेटमा अन्तर्निहित डाटा पूर्वाग्रहलाई प्रतिबिम्बित नगर्न सक्छ। उदाहरणका लागि, यदि कर्मचारीहरूको डाटासेटमा कम्पनीका कार्यकारी पदहरूमा महिलाहरूको २७% र पुरुषहरूको ७३% प्रतिनिधित्व छ भने, यस डाटामा प्रशिक्षित रोजगार विज्ञापन AI मोडेलले वरिष्ठ स्तरको रोजगार पदहरूको लागि प्रायः पुरुष दर्शकलाई लक्षित गर्न सक्छ। डाटामा यो असन्तुलनले मोडेलको भविष्यवाणीलाई एक लिङ्गलाई प्राथमिकता दिन प्रेरित गर्यो। यसले मोडेलमा लिङ्ग पूर्वाग्रह देखाउँछ, जसले निष्पक्षताको समस्या उजागर गर्छ।
-RAI ड्यासबोर्डको डाटा विश्लेषण कम्पोनेन्टले डाटासेटमा अत्यधिक र न्यून प्रतिनिधित्व भएका क्षेत्रहरू पहिचान गर्न मद्दत गर्छ। यसले प्रयोगकर्ताहरूलाई डाटा असन्तुलन वा विशिष्ट डाटा समूहको प्रतिनिधित्वको अभावबाट उत्पन्न त्रुटि र निष्पक्षता समस्याहरूको जड कारण पत्ता लगाउन मद्दत गर्छ। यसले प्रयोगकर्ताहरूलाई भविष्यवाणी र वास्तविक परिणामहरू, त्रुटि समूहहरू, र विशिष्ट विशेषताहरूको आधारमा डाटासेटहरू भिजुअलाइज गर्न सक्षम बनाउँछ। कहिलेकाहीँ न्यून प्रतिनिधित्व भएको डाटा समूह पत्ता लगाउँदा मोडेल राम्रोसँग सिकिरहेको छैन भन्ने कुरा पनि उजागर गर्न सक्छ, जसले उच्च त्रुटिहरू उत्पन्न गर्छ। डाटामा पूर्वाग्रह भएको मोडेल हुनु भनेको केवल निष्पक्षताको समस्या होइन, तर मोडेल समावेशी वा भरपर्दो छैन भन्ने कुरा पनि देखाउँछ।
+डेटा विश्लेषण तब प्रयोग गर्नुहोस् जब तपाईं:
-
+* विभिन्न फिल्टरहरू चयन गरेर आफ्नो डेटासेट तथ्यांकहरू अन्वेषण गर्न चाहनुहुन्छ जसले तपाईंको डेटा विभिन्न आयामहरूमा (समूहहरूमा) टुक्र्याउँछ।
+* आफ्नो डेटासेटको वितरण विभिन्न समूहहरू र विशेषता समूहहरूमा कसरी छ बुझ्न चाहनुहुन्छ।
+* आफ्नो समूह, त्रुटि विश्लेषण, र कारण-प्रभाव सम्बन्धी अनुसन्धान (अन्य ड्यासबोर्ड कम्पोनेन्टहरूबाट प्राप्त) तपाईँको डेटासेटको वितरणकै कारण हो कि होइन थाहा पाउन चाहनुहुन्छ।
+* प्रतिनिधित्व समस्याहरू, लेबल आवाज, विशेषता आवाज, लेबल पक्षपात, र यसका समान कारणले आएका त्रुटिहरू कम गर्न थप डेटा सङ्कलन कहाँ गर्नुपर्ने निर्णय गर्न चाहनुहुन्छ।
-डाटा विश्लेषण प्रयोग गर्नुहोस् जब तपाईंलाई चाहिन्छ:
+## मोडेल व्याख्याशीलता
-* विभिन्न फिल्टरहरू चयन गरेर आफ्नो डाटासेटको तथ्याङ्क अन्वेषण गर्नुहोस् ताकि तपाईं आफ्नो डाटालाई विभिन्न आयामहरू (समूहहरू) मा विभाजन गर्न सक्नुहुन्छ।
-* विभिन्न समूहहरू र विशेषता समूहहरूमा आफ्नो डाटासेटको वितरण बुझ्नुहोस्।
-* निष्पक्षता, त्रुटि विश्लेषण, र कारण सम्बन्धी निष्कर्षहरू (अन्य ड्यासबोर्ड कम्पोनेन्टहरूबाट प्राप्त) तपाईंको डाटासेटको वितरणको परिणाम हो कि होइन भनेर निर्धारण गर्नुहोस्।
-* प्रतिनिधित्व समस्याहरू, लेबल शोर, विशेषता शोर, लेबल पूर्वाग्रह, र यस्तै कारकहरूबाट उत्पन्न त्रुटिहरूलाई कम गर्न थप डाटा सङ्कलन गर्न कुन क्षेत्रहरूमा ध्यान दिनुपर्ने हो भनेर निर्णय गर्नुहोस्।
+मेसिन लर्निङ मोडेलहरू प्रायः ब्ल्याक बक्स जस्तै हुन्छन्। कुन मुख्य डेटा विशेषताहरूले मोडेलको भविष्यवाणी चलाउँछन् बुझ्न चुनौतीपूर्ण हुन्छ। मोडेलले किन निश्चित भविष्यवाणी गरेको छ भन्ने पारदर्शिता दिनु महत्त्वपूर्ण छ। उदाहरणका लागि, यदि AI प्रणालीले डायबिटिज भएका बिरामीलाई ३० दिनभित्र पुनः अस्पताल भर्ना हुनसक्ने जोखिम अनुमान गर्छ भने यसले आफ्नो भविष्यवाणीसम्म पुग्न प्रयोग गरिएको सहायक डाटा प्रदान गर्न सक्नुपर्छ। सहायक डेटा संकेतकहरूले चिकित्सक वा अस्पतालहरूलाई सूचित निर्णय लिन पारदर्शिता दिन्छ। साथै, मोडेलले किन भविष्यवाणी गरेको छ भनेर व्याख्या गर्न सक्नु स्वास्थ्य नियमहरूको आधिकारिक जवाफदेहितामा मद्दत गर्दछ। जब तपाईं मानिसहरूको जीवनमा प्रभाव पार्ने तरिकाले मेसिन लर्निङ मोडेलहरू प्रयोग गर्दै हुनुहुन्छ, मोडेलको व्यवहार केले प्रभावित गरिरहेको छ बुझ्न र व्याख्या गर्न आवश्यक छ। मोडेल व्याख्या र व्याख्याशीलता यस्ता प्रश्नहरूको जवाफ दिन्छ जस्तै:
-## मोडेल व्याख्यात्मकता
+* मोडेल डिबगिङ: मेरो मोडलले किन यो गल्ती गर्यो? मैले कसरी सुधार गर्ने?
+* मानव-AI सहकार्य: म कसरी मोडेलका निर्णयहरू बुझ्ने र विश्वास गर्ने?
+* नियम पालना: मेरो मोडलले कानुनी आवश्यकता पूरा गर्छ कि गर्दैन?
-मेसिन लर्निङ मोडेलहरू प्रायः "ब्ल्याक बक्स" मानिन्छन्। मोडेलको भविष्यवाणीलाई चलाउने प्रमुख डाटा विशेषताहरू बुझ्न चुनौतीपूर्ण हुन सक्छ। मोडेलले किन कुनै निश्चित भविष्यवाणी गर्यो भन्ने पारदर्शिता प्रदान गर्नु महत्त्वपूर्ण छ। उदाहरणका लागि, यदि AI प्रणालीले मधुमेह रोगीलाई ३० दिनभन्दा कम समयमा अस्पतालमा पुनः भर्ना हुने जोखिममा रहेको भविष्यवाणी गर्छ भने, यसले आफ्नो भविष्यवाणीमा आधारित समर्थन डाटा प्रदान गर्न सक्षम हुनुपर्छ। समर्थन डाटा सूचकहरूले पारदर्शिता ल्याउँछ, जसले चिकित्सकहरू वा अस्पतालहरूलाई राम्रो निर्णय लिन मद्दत गर्छ। साथै, व्यक्तिगत बिरामीको लागि मोडेलले भविष्यवाणी किन गर्यो भन्ने व्याख्या गर्न सक्षम हुनु स्वास्थ्य नियमहरूको साथ उत्तरदायित्व सक्षम बनाउँछ। जब मेसिन लर्निङ मोडेलहरू मानिसहरूको जीवनलाई असर गर्ने तरिकामा प्रयोग गरिन्छ, मोडेलको व्यवहारलाई के चलाउँछ भन्ने कुरा बुझ्न र व्याख्या गर्न महत्त्वपूर्ण छ। मोडेल व्याख्यात्मकता र व्याख्या गर्न सक्ने क्षमता निम्न परिदृश्यहरूमा प्रश्नहरूको उत्तर दिन मद्दत गर्छ:
+RAI ड्यासबोर्डको विशेषता महत्व कम्पोनेन्टले तपाईंलाई मोडलको डिबगिङ गर्ने र मोडलले कसरी भविष्यवाणी गर्छ comprehensive बुझ्न मद्दत गर्छ। यो मेसिन लर्निङ व्यवसायी तथा निर्णय-निर्माताहरूलाई पनि मोडल व्यवहारमा प्रभाव पार्ने विशेषताहरू स्पष्ट गर्न र प्रमाणित गर्न उपयोगी उपकरण हो जुन नियम पालना सुनिश्चित गर्न सहयोगी छ। प्रयोगकर्ताहरूले विश्वव्यापी र स्थानीय व्याख्याहरू खोज्न सक्छन् जसले कुन विशेषताले मोडलको भविष्यवाणी चलाएको हो पत्ता लगाउन मद्दत गर्छ। विश्वव्यापी व्याख्याहरूले मोडलको समग्र भविष्यवाणीलाई प्रभावित गर्ने शीर्ष विशेषताहरू सूचीबद्ध गर्छ। स्थानीय व्याख्याहरूले व्यक्तिगत केसका लागि मोडलले भविष्यवाणी किन गर्यो देखाउँछ। स्थानीय व्याख्याहरूको मूल्याङ्कन गरि एक विशिष्ट केस डिबग वा अडिट गर्न सकिन्छ जसले किन मोडलले सटीक वा अशुद्ध भविष्यवाणी गर्यो बुझ्न सजिलो बनाउँछ।
-* मोडेल डिबगिङ: मेरो मोडेलले यो गल्ती किन गर्यो? म आफ्नो मोडेललाई कसरी सुधार गर्न सक्छु?
-* मानव-AI सहयोग: म मोडेलको निर्णयलाई कसरी बुझ्न र विश्वास गर्न सक्छु?
-* नियामक अनुपालन: के मेरो मोडेलले कानुनी आवश्यकताहरू पूरा गर्छ?
+
-RAI ड्यासबोर्डको विशेषता महत्त्व कम्पोनेन्टले मोडेलले भविष्यवाणी कसरी गर्छ भन्ने व्यापक समझ प्राप्त गर्न र डिबग गर्न मद्दत गर्छ। यो मेसिन लर्निङ पेशेवरहरू र निर्णयकर्ताहरूका लागि उपयोगी उपकरण हो, जसले मोडेलको व्यवहारलाई चलाउने विशेषताहरूको प्रमाण देखाउन र व्याख्या गर्न नियामक अनुपालनका लागि मद्दत गर्छ। प्रयोगकर्ताहरूले विश्वव्यापी र स्थानीय व्याख्याहरू अन्वेषण गरेर मोडेलको भविष्यवाणीलाई चलाउने विशेषताहरूको मान्यता प्राप्त गर्न सक्छन्। विश्वव्यापी व्याख्याहरूले मोडेलको समग्र भविष्यवाणीलाई प्रभावित गर्ने शीर्ष विशेषताहरू सूचीबद्ध गर्छ। स्थानीय व्याख्याहरूले व्यक्तिगत केसको लागि मोडेलको भविष्यवाणीलाई चलाउने विशेषताहरू देखाउँछ। स्थानीय व्याख्याहरूको मूल्याङ्कन गर्ने क्षमता डिबगिङ वा अडिटिङको विशिष्ट केसमा पनि उपयोगी छ ताकि मोडेलले सटीक वा असटीक भविष्यवाणी किन गर्यो भन्ने कुरा राम्रोसँग बुझ्न र व्याख्या गर्न सकियोस्।
+* विश्वव्यापी व्याख्या: उदाहरणका लागि, डायबिटिज अस्पताल पुनः भर्ना मोडलको सामान्य व्यवहारलाई कुन विशेषताले असर गरिरहेको छ?
+* स्थानीय व्याख्या: उदाहरणका लागि, किन ६० वर्षभन्दा माथि डायबेटिक बिरामी जसलाई पहिले अस्पताल भर्ना गरिएको थियो ३० दिनभित्र पुनः अस्पतालमा भर्ना वा नतिको भविष्यवाणी गरिएको?
-
+विभिन्न समूहहरूमा मोडलको प्रदर्शन परीक्षण गर्ने डिबगिङ प्रक्रियामा, विशेषता महत्वले समूहहरूमा एउटा विशेषताले कस्तो प्रभाव पारिरहेको छ देखाउँछ। यो मोडलको गलत भविष्यवाणी गर्नमा विशेषताले कत्तिको प्रभावकारी छ पत्ता लगाउँदा विसंगति प्रकट गर्न मद्दत गर्छ। यदि कुनै मोडेलले गलत भविष्यवाणी गर्यो भने, यस कम्पोनेन्टले तपाईंलाई विशेषता वा विशेषता मानहरू चिन्न मद्दत गर्छ जुन भविष्यवाणीको कारण भए। यसले केवल डिबगिङमै होइन, auditing अवस्थामा पारदर्शिता र जवाफदेहिता पनि प्रदान गर्छ। अन्त्यमा, कम्पोनेन्टले तपाईंलाई न्यायसम्बन्धी समस्या पत्ता लगाउन मद्दत गर्छ। उदाहरणका लागि, यदि संवेदनशील विशेषता जस्तै जातीयता वा लिंगले मोडलको भविष्यवाणीमा धेरै प्रभाव पारिरहेको छ भने, यो जातीय वा लिंग पक्षपातको संकेत हुन सक्छ।
-* विश्वव्यापी व्याख्याहरू: उदाहरणका लागि, मधुमेह अस्पताल पुनः भर्ना मोडेलको समग्र व्यवहारलाई कुन विशेषताहरूले प्रभावित गर्छन्?
-* स्थानीय व्याख्याहरू: उदाहरणका लागि, किन ६० वर्षभन्दा माथिका मधुमेह रोगीलाई पुनः भर्ना हुने वा ३० दिनभित्र अस्पतालमा पुनः भर्ना नहुने भविष्यवाणी गरियो?
+
-मोडेलको प्रदर्शनलाई विभिन्न समूहहरूमा जाँच गर्ने डिबगिङ प्रक्रियामा, विशेषता महत्त्वले समूहहरूमा विशेषताको प्रभावको स्तर देखाउँछ। यो मोडेलको त्रुटिपूर्ण भविष्यवाणीलाई चलाउने विशेषताको प्रभावको स्तर तुलना गर्दा असमानता उजागर गर्न मद्दत गर्छ। विशेषता महत्त्व कम्पोनेन्टले विशेषतामा भएका मानहरूले मोडेलको परिणामलाई सकारात्मक वा नकारात्मक रूपमा कसरी प्रभावित गर्यो भन्ने देखाउन सक्छ। उदाहरणका लागि, यदि मोडेलले असटीक भविष्यवाणी गर्यो भने, कम्पोनेन्टले भविष्यवाणीलाई चलाउने विशेषता वा विशेषता मानहरू पत्ता लगाउन र विश्लेषण गर्न सक्षम बनाउँछ। यो स्तरको विवरणले न केवल डिबगिङमा मद्दत गर्छ, तर अडिटिङ परिदृश्यहरूमा पारदर्शिता र उत्तरदायित्व प्रदान गर्छ। अन्ततः, कम्पोनेन्टले निष्पक्षता समस्याहरू पहिचान गर्न मद्दत गर्न सक्छ। उदाहरणका लागि,
-- **अधिक वा कम प्रतिनिधित्व**। विचार यो हो कि कुनै निश्चित समूहलाई कुनै निश्चित पेशामा देखिँदैन, र कुनै पनि सेवा वा कार्य जसले यसलाई निरन्तर प्रवर्द्धन गरिरहन्छ, त्यो हानिकारक योगदान गरिरहेको छ।
+व्याख्याशीलता तब प्रयोग गर्नुहोस् जब तपाईं:
+
+* तपाईंको AI प्रणालीका भविष्यवाणीहरू कति भरपर्दो छन् बुझ्न चाहनुहुन्छ र कुन विशेषता भविष्यवाणीहरूका लागि सबैभन्दा महत्वपूर्ण छ जान्न चाहनुहुन्छ।
+* पहिले मोडललाई बुझेर डिबगिङ गर्ने तरिका अपनाउन चाहनुहुन्छ र मोडलले स्वस्थ विशेषता प्रयोग गरिरहेको छ वा केवल गलत सम्बन्धहरूमा निर्भर छ भनी पत्ता लगाउन चाहनुहुन्छ।
+* सम्भावित अन्यायका स्रोतहरू पत्ता लगाउन चाहनुहुन्छ कि मोडल संवेदनशील विशेषताहरूमा आधारित छ वा तीसँग धेरै सम्बन्धित अन्य विशेषतामा आधारित छ।
+* प्रयोगकर्ताको मोडल निर्णयहरूमा विश्वास बनाउन चाहनुहुन्छ भने स्थानीय व्याख्या उत्पादन गरेर उनीहरूको परिणाम देखाउन।
+* AI प्रणालीको नियम पालना अडिट पूरा गर्न चाहनुहुन्छ ताकि मोडेलहरूको मान्यता र मानवमा मोडेल निर्णयहरूको प्रभाव निगरानी गर्न सकियोस्।
+
+## निष्कर्ष
+
+सबै RAI ड्यासबोर्ड कम्पोनेन्टहरू व्यावहारिक उपकरणहरू हुन् जसले तपाईंलाई कम हानिकारक र सामाजिक रूपमा अधिक भरोसायोग्य मेसिन लर्निङ मोडेलहरू बनाउने मद्दत गर्छ। यसले मानव अधिकारमा खतरा रोकथाम सुधार्छ; जीवनका अवसरहरूमा केहि समूहहरूलाई भेदभाव वा बहिष्कार नगर्न मद्दत गर्छ; र भौतिक वा मानसिक चोटको जोखिम घटाउँछ। यसले मोडेलका निर्णयहरूमा विश्वास बनाउन पनि मद्दत गर्दछ स्थानीय व्याख्याहरू उत्पादन गरेर तिनीहरूको परिणाम देखाउने। सम्भावित हानिहरूलाई यसरी वर्गीकरण गर्न सकिन्छ:
+
+- **विनियोजन**, यदि कुनै लिंग वा जातीयता अर्कोसँग तुलना गर्दा प्राथमिकता दिइएको छ भने।
+- **सेवाको गुणस्तर**। तपाईंले कुनै विशेष परिप्रेक्ष्यमा डेटा तालिम दिनुभयो तर वास्तविकता धेरै जटिल छ भने, यसले कमजोर सेवा प्रदर्शन गराउँछ।
+- **रूपक लगाउने**। कुनै समूहलाई पूर्वनिर्धारित विशेषतासँग जोड्ने।
+
+- **अपमान**। कुनै वस्तु वा व्यक्तिलाई अन्यायपूर्ण रूपमा आलोचना गर्ने र लेबल लगाउने।
+- **अधिक वा कम प्रतिनिधित्व**। विचार भनेको कुनै निश्चित समूहलाई कुनै विशिष्ट पेशामा नदेखिने, र कुनै सेवा वा कार्य जसले यसलाई प्रवर्द्धन गरिरहन्छ त्यो हानिकारक हुन्छ।
### Azure RAI ड्यासबोर्ड
-[Azure RAI ड्यासबोर्ड](https://learn.microsoft.com/en-us/azure/machine-learning/concept-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) खुला स्रोत उपकरणहरूमा आधारित छ, जुन प्रमुख शैक्षिक संस्थाहरू र संगठनहरूले विकास गरेका छन्। यसले डेटा वैज्ञानिकहरू र AI विकासकर्ताहरूलाई मोडेलको व्यवहार राम्रोसँग बुझ्न, AI मोडेलहरूबाट उत्पन्न हुने अवांछनीय समस्याहरू पत्ता लगाउन र समाधान गर्न सहयोग पुर्याउँछ।
+[Azure RAI ड्यासबोर्ड](https://learn.microsoft.com/en-us/azure/machine-learning/concept-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) खुला स्रोत उपकरणहरूमा आधारित छ जुन अग्रणी शैक्षिक संस्था र संगठनहरूले विकास गरेका छन्, जसमा Microsoft पनि शामिल छ, जसले डाटा वैज्ञानिक र AI विकासकर्ताहरूलाई मोडेल व्यवहारलाई राम्रोसँग बुझेका छन्, अवाञ्छित समस्या पत्ता लगाउन र कम गर्न सहयोग पुर्याउँछन्।
-- RAI ड्यासबोर्डका विभिन्न कम्पोनेन्टहरू कसरी प्रयोग गर्ने भनेर जान्न [डक्स](https://learn.microsoft.com/en-us/azure/machine-learning/how-to-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) हेर्नुहोस्।
+- विभिन्न कम्पोनेन्टहरूको प्रयोग कसरी गर्ने भन्ने सिक्नको लागि 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) हेर्नुहोस्।
+- Azure Machine Learning मा जिम्मेवार AI परिदृश्यहरू डिबग गर्नका लागि RAI ड्यासबोर्डका केही [नमूना नोटबुकहरू](https://github.com/Azure/RAI-vNext-Preview/tree/main/examples/notebooks) हेर्नुहोस्।
---
## 🚀 चुनौती
-पहिले नै सांख्यिकीय वा डेटा पूर्वाग्रहहरू रोक्नका लागि हामीले निम्न गर्नुपर्छ:
+सांख्यिकीय वा डाटा पक्षपात पहिलो स्थानमा प्रवेश हुनबाट रोक्न हामीले:
-- प्रणालीमा काम गर्ने व्यक्तिहरूको पृष्ठभूमि र दृष्टिकोणमा विविधता सुनिश्चित गर्नु
-- हाम्रो समाजको विविधतालाई प्रतिबिम्बित गर्ने डेटासेटहरूमा लगानी गर्नु
-- पूर्वाग्रह देखा परेमा पत्ता लगाउने र सुधार गर्ने राम्रो विधिहरू विकास गर्नु
+- प्रणालीहरूमा काम गर्ने मानिसहरूबीच विविध पृष्ठभूमि र दृष्टिकोणहरू हुनुपर्छ
+- हाम्रो समाजको विविधतालाई प्रतिबिम्बित गर्ने डाटासेटहरूमा लगानी गर्नुपर्छ
+- पक्षपात देखापरेमा त्यसलाई पत्ता लगाउने र सुधार गर्ने बेहतर तरिकाहरू विकास गर्नुपर्छ
-मोडेल निर्माण र प्रयोगमा अन्याय देखिने वास्तविक जीवनका परिदृश्यहरूबारे सोच्नुहोस्। अरू के विचार गर्नुपर्छ?
+वास्तविक जीवनका अवस्थाहरू जहाँ मोडेल निर्माण र उपयोगमा अन्याय स्पष्ट हुन्छ सोच्नुहोस्। हामीले के थप ध्यान दिनुपर्छ?
-## [पोस्ट-व्याख्यान क्विज](https://ff-quizzes.netlify.app/en/ml/)
+## [पाठ पछि क्विज](https://ff-quizzes.netlify.app/en/ml/)
## समीक्षा र आत्म-अध्ययन
-यस पाठमा, तपाईंले मशीन लर्निङमा जिम्मेवार AI समावेश गर्ने केही व्यावहारिक उपकरणहरू सिक्नुभएको छ।
-
-यस कार्यशालालाई हेर्नुहोस् र विषयहरूमा अझ गहिरो जानकारी लिनुहोस्:
+यस पाठमा, तपाईंले जिम्मेवार AI लाई मेशिन लर्निङमा समावेश गर्ने केहि व्यावहारिक उपकरणहरू सिक्नुभएको छ।
-- जिम्मेवार AI ड्यासबोर्ड: व्यवहारमा RAI सञ्चालनका लागि एक-स्टप समाधान, Besmira Nushi र Mehrnoosh Sameki द्वारा
+विषयहरूमा अझ गहिराइमा जान यस कार्यशाला हेर्नुहोस्:
-[](https://www.youtube.com/watch?v=f1oaDNl3djg "जिम्मेवार AI ड्यासबोर्ड: व्यवहारमा RAI सञ्चालनका लागि एक-स्टप समाधान")
+- जिम्मेवार AI ड्यासबोर्ड: अभ्यासमा RAI सञ्चालन गर्न एक-स्टप पसल, प्रस्तुतकर्ता Besmira Nushi र Mehrnoosh Sameki
+[](https://www.youtube.com/watch?v=f1oaDNl3djg "Responsible AI Dashboard: One-stop shop for operationalizing RAI in practice")
-> 🎥 माथिको छवि क्लिक गर्नुहोस् भिडियोका लागि: जिम्मेवार AI ड्यासबोर्ड: व्यवहारमा RAI सञ्चालनका लागि एक-स्टप समाधान, Besmira Nushi र Mehrnoosh Sameki द्वारा
+> 🎥 माथिको चित्रमा क्लिक गर्नुहोस् भिडियोको लागि: जिम्मेवार AI ड्यासबोर्ड: अभ्यासमा RAI सञ्चालन गर्न एक-स्टप पसल, प्रस्तुतकर्ता Besmira Nushi र Mehrnoosh Sameki
-जिम्मेवार AI र विश्वसनीय मोडेल निर्माण गर्ने तरिकाहरू सिक्न निम्न सामग्रीहरू सन्दर्भ गर्नुहोस्:
+अझ बढी जिम्मेवार AI र कस्तो गरी विश्वसनीय मोडेलहरू बनाउने बारेमा जान्न निम्न सामग्रीहरू सन्दर्भ गर्नुहोस्:
-- ML मोडेलहरू डिबग गर्नका लागि Microsoft को RAI ड्यासबोर्ड उपकरणहरू: [जिम्मेवार AI उपकरण स्रोतहरू](https://aka.ms/rai-dashboard)
+- माइक्रोसफ्टको RAI ड्यासबोर्ड उपकरणहरू ML मोडेलहरू डिबग गर्न: [Responsible AI tools resources](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)
+- माइक्रोसफ्टको RAI स्रोत केन्द्र: [Responsible AI Resources – 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/)
+- माइक्रोसफ्टको FATE अनुसन्धान समूह: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
## असाइनमेन्ट
@@ -152,5 +173,7 @@ RAI ड्यासबोर्डको विशेषता महत्त
---
-**अस्वीकरण**:
-यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको छ। हामी शुद्धताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटि वा अशुद्धता हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं।
\ No newline at end of file
+
+**अस्वीकरण**:
+यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको हो। हामी सही हुन प्रयास गर्छौं, तर कृपया जानकार हुनुस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छन्। मूल दस्तावेज़ यसको मूल भाषामा आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीका लागि व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न कुनै पनि गलत बुझाइ वा त्रुटिको लागि हामी जिम्मेवार छैनौं।
+
\ No newline at end of file
diff --git a/translations/nl/.co-op-translator.json b/translations/nl/.co-op-translator.json
index 89f526555..dd78b6090 100644
--- a/translations/nl/.co-op-translator.json
+++ b/translations/nl/.co-op-translator.json
@@ -24,8 +24,8 @@
"language_code": "nl"
},
"1-Introduction/3-fairness/README.md": {
- "original_hash": "9a6b702d1437c0467e3c5c28d763dac2",
- "translation_date": "2025-09-05T19:30:29+00:00",
+ "original_hash": "0f00d72169a0d37eecfd16d71e01700a",
+ "translation_date": "2026-07-14T03:49:28+00:00",
"source_file": "1-Introduction/3-fairness/README.md",
"language_code": "nl"
},
@@ -54,8 +54,8 @@
"language_code": "nl"
},
"2-Regression/1-Tools/README.md": {
- "original_hash": "fa81d226c71d5af7a2cade31c1c92b88",
- "translation_date": "2025-09-05T18:50:01+00:00",
+ "original_hash": "0b8635427b582d03ea4ab7089b93e505",
+ "translation_date": "2026-07-14T03:46:49+00:00",
"source_file": "2-Regression/1-Tools/README.md",
"language_code": "nl"
},
@@ -72,8 +72,8 @@
"language_code": "nl"
},
"2-Regression/2-Data/README.md": {
- "original_hash": "7c077988328ebfe33b24d07945f16eca",
- "translation_date": "2025-09-05T18:54:08+00:00",
+ "original_hash": "a58b2c4d16c6b122643391745ac15af6",
+ "translation_date": "2026-07-14T03:47:44+00:00",
"source_file": "2-Regression/2-Data/README.md",
"language_code": "nl"
},
@@ -89,6 +89,12 @@
"source_file": "2-Regression/2-Data/solution/Julia/README.md",
"language_code": "nl"
},
+ "2-Regression/2-Data/solution/notebook.ipynb": {
+ "original_hash": "96b95f8cf473481f2f371de8156f1571",
+ "translation_date": "2026-07-14T03:42:35+00:00",
+ "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
+ "language_code": "nl"
+ },
"2-Regression/3-Linear/README.md": {
"original_hash": "8b776e731c35b171d316d01d0e7b1369",
"translation_date": "2026-04-26T20:04:09+00:00",
@@ -457,7 +463,7 @@
},
"8-Reinforcement/1-QLearning/README.md": {
"original_hash": "911efd5e595089000cb3c16fce1beab8",
- "translation_date": "2025-09-05T20:11:11+00:00",
+ "translation_date": "2026-07-14T03:48:40+00:00",
"source_file": "8-Reinforcement/1-QLearning/README.md",
"language_code": "nl"
},
@@ -581,6 +587,19 @@
"source_file": "TROUBLESHOOTING.md",
"language_code": "nl"
},
+ "__translation_failures__": {
+ "sketchnotes/LICENSE.md": {
+ "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f",
+ "source_file": "sketchnotes/LICENSE.md",
+ "language_code": "nl",
+ "failure_date": "2026-07-14T03:45:59+00:00",
+ "status": "failed",
+ "error_type": "TranslationIncompleteError",
+ "error_message": "Markdown translation remained incomplete for chunk 1.1.1 of 'LICENSE.md', and the chunk could not be split further.",
+ "translator_version": "0.20.0",
+ "failure_policy_version": 1
+ }
+ },
"docs/_sidebar.md": {
"original_hash": "68dd06c685f6ce840e0acfa313352e7c",
"translation_date": "2025-09-05T19:19:44+00:00",
diff --git a/translations/nl/1-Introduction/3-fairness/README.md b/translations/nl/1-Introduction/3-fairness/README.md
index 1f8cadd31..771a8ad55 100644
--- a/translations/nl/1-Introduction/3-fairness/README.md
+++ b/translations/nl/1-Introduction/3-fairness/README.md
@@ -1,155 +1,159 @@
-# Machine Learning-oplossingen bouwen met verantwoorde AI
-
-
-> Sketchnote door [Tomomi Imura](https://www.twitter.com/girlie_mac)
-
-## [Pre-lecture quiz](https://ff-quizzes.netlify.app/en/ml/)
+# Het bouwen van Machine Learning-oplossingen met verantwoordelijke AI
+
+
+> Schetsnotitie door [Tomomi Imura](https://www.twitter.com/girlie_mac)
+## [Voor-college quiz](https://ff-quizzes.netlify.app/en/ml/)
+
## Introductie
-In dit curriculum ontdek je hoe machine learning ons dagelijks leven beïnvloedt. Systemen en modellen spelen nu al een rol in dagelijkse besluitvormingsprocessen, zoals medische diagnoses, leninggoedkeuringen of het opsporen van fraude. Het is daarom belangrijk dat deze modellen goed functioneren en betrouwbare resultaten leveren. Net zoals bij elke softwaretoepassing kunnen AI-systemen niet aan verwachtingen voldoen of ongewenste uitkomsten hebben. Daarom is het essentieel om het gedrag van een AI-model te begrijpen en uit te leggen.
+In dit lesprogramma begin je te ontdekken hoe machine learning onze dagelijkse levens kan en doet beïnvloeden. Zelfs nu al zijn systemen en modellen betrokken bij dagelijkse besluitvormingstaken, zoals diagnoses in de gezondheidszorg, leninggoedkeuringen of het opsporen van fraude. Het is dus belangrijk dat deze modellen goed functioneren om uitkomsten te bereiken die betrouwbaar zijn. Net als bij elke softwaretoepassing zullen AI-systemen verwachtingen niet altijd waarmaken of een ongewenst resultaat geven. Daarom is het essentieel om het gedrag van een AI-model te kunnen begrijpen en uitleggen.
-Stel je voor wat er kan gebeuren als de gegevens die je gebruikt om deze modellen te bouwen bepaalde demografische gegevens missen, zoals ras, geslacht, politieke overtuiging, religie, of als ze deze disproportioneel vertegenwoordigen. Wat gebeurt er als de output van het model wordt geïnterpreteerd om een bepaalde demografische groep te bevoordelen? Wat zijn de gevolgen voor de toepassing? En wat gebeurt er als het model een nadelige uitkomst heeft en schadelijk is voor mensen? Wie is verantwoordelijk voor het gedrag van AI-systemen? Dit zijn enkele vragen die we in dit curriculum zullen verkennen.
+Stel je voor wat er kan gebeuren als de data die je gebruikt om deze modellen te bouwen bepaalde demografische groepen mist, zoals ras, geslacht, politieke opvatting, religie, of die dergelijke groepen onevenredig vertegenwoordigt. Wat als de output van het model zo wordt geïnterpreteerd dat deze sommige demografische groepen bevoordeelt? Wat zijn de gevolgen voor de toepassing? Bovendien, wat gebeurt er wanneer het model een nadelige uitkomst heeft en schadelijk is voor mensen? Wie is verantwoordelijk voor het gedrag van het AI-systeem? Dit zijn enkele vragen die we in dit lesprogramma zullen verkennen.
-In deze les leer je:
+In deze les zul je:
-- Het belang van eerlijkheid in machine learning en de schade die oneerlijkheid kan veroorzaken.
-- Het verkennen van uitschieters en ongebruikelijke scenario's om betrouwbaarheid en veiligheid te waarborgen.
-- Het belang van inclusieve systemen ontwerpen om iedereen te empoweren.
-- Hoe cruciaal het is om de privacy en veiligheid van gegevens en mensen te beschermen.
-- Het belang van een transparante aanpak om het gedrag van AI-modellen uit te leggen.
-- Hoe verantwoordelijkheid essentieel is om vertrouwen in AI-systemen op te bouwen.
+- Je bewust maken van het belang van eerlijkheid in machine learning en de aan eerlijkheid gerelateerde schaden.
+- Vertrouwd raken met de praktijk van het onderzoeken van outliers en ongebruikelijke scenario’s om betrouwbaarheid en veiligheid te waarborgen.
+- Inzicht krijgen in de noodzaak om iedereen te versterken door inclusieve systemen te ontwerpen.
+- Verkennen hoe belangrijk het is om de privacy en veiligheid van data en mensen te beschermen.
+- Het belang zien van een open aanpak om het gedrag van AI-modellen uit te leggen.
+- Bewust zijn van hoe verantwoordelijkheid essentieel is om vertrouwen in AI-systemen op te bouwen.
-## Vereisten
+## Vereiste voorkennis
-Als vereiste, volg het "Responsible AI Principles" leerpad en bekijk de onderstaande video over dit onderwerp:
+Als vereiste, doorloop je het Leertraject "Principes van Verantwoordelijke AI" en bekijk je de onderstaande video over dit onderwerp:
-Leer meer over verantwoorde AI via dit [leerpad](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)
+Leer meer over Verantwoordelijke AI door dit [Leertraject](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) te volgen.
-[](https://youtu.be/dnC8-uUZXSc "Microsoft's Approach to Responsible AI")
+[](https://youtu.be/dnC8-uUZXSc "Microsoft's Approach to Responsible AI")
-> 🎥 Klik op de afbeelding hierboven voor een video: Microsoft's Approach to Responsible AI
+> 🎥 Klik op de afbeelding hierboven voor een video: Microsofts Benadering van Verantwoordelijke AI
## Eerlijkheid
-AI-systemen moeten iedereen eerlijk behandelen en vermijden dat vergelijkbare groepen mensen verschillend worden beïnvloed. Bijvoorbeeld, wanneer AI-systemen advies geven over medische behandelingen, leningaanvragen of werkgelegenheid, moeten ze dezelfde aanbevelingen doen aan iedereen met vergelijkbare symptomen, financiële omstandigheden of professionele kwalificaties. Elk van ons draagt inherente vooroordelen met zich mee die onze beslissingen en acties beïnvloeden. Deze vooroordelen kunnen zichtbaar zijn in de gegevens die we gebruiken om AI-systemen te trainen. Dergelijke manipulatie kan soms onbedoeld gebeuren. Het is vaak moeilijk om bewust te weten wanneer je vooroordelen in gegevens introduceert.
+AI-systemen moeten iedereen eerlijk behandelen en voorkomen dat vergelijkbare groepen mensen op verschillende manieren worden beïnvloed. Bijvoorbeeld, wanneer AI-systemen richtlijnen geven over medische behandelingen, leningaanvragen of werkgelegenheid, moeten ze aan iedereen met vergelijkbare symptomen, financiële omstandigheden of professionele kwalificaties dezelfde aanbevelingen doen. Wij mensen dragen allen aangeboren vooroordelen mee die onze beslissingen en acties beïnvloeden. Deze vooroordelen kunnen zichtbaar zijn in de data die we gebruiken om AI-systemen te trainen. Dergelijke manipulatie kan soms onbedoeld gebeuren. Het is vaak moeilijk bewust te weten wanneer je vooringenomenheid in data introduceert.
-**"Oneerlijkheid"** omvat negatieve gevolgen, of "schade", voor een groep mensen, zoals die gedefinieerd in termen van ras, geslacht, leeftijd of handicapstatus. De belangrijkste vormen van schade gerelateerd aan eerlijkheid kunnen worden geclassificeerd als:
+**“Oneerlijkheid”** omvat negatieve effecten, of “schade”, voor een groep mensen, bijvoorbeeld gedefinieerd op basis van ras, geslacht, leeftijd of handicapstatus. De belangrijkste aan eerlijkheid gerelateerde schaden kunnen worden ingedeeld als:
-- **Toewijzing**, bijvoorbeeld als een geslacht of etniciteit wordt bevoordeeld boven een andere.
-- **Kwaliteit van dienstverlening**. Als je gegevens traint voor één specifiek scenario, maar de werkelijkheid veel complexer is, leidt dit tot een slecht presterende dienst. Bijvoorbeeld een handzeepdispenser die mensen met een donkere huid niet lijkt te kunnen detecteren. [Referentie](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
-- **Denigratie**. Het oneerlijk bekritiseren en labelen van iets of iemand. Bijvoorbeeld, een beeldlabeltechnologie die berucht is om het verkeerd labelen van afbeeldingen van mensen met een donkere huid als gorilla's.
-- **Over- of ondervertegenwoordiging**. Het idee dat een bepaalde groep niet wordt gezien in een bepaald beroep, en elke dienst of functie die dat blijft promoten, draagt bij aan schade.
-- **Stereotypering**. Het associëren van een bepaalde groep met vooraf toegewezen eigenschappen. Bijvoorbeeld, een taalvertalingssysteem tussen Engels en Turks kan onnauwkeurigheden hebben door woorden met stereotypische associaties met geslacht.
+- **Toewijzing**, als bijvoorbeeld een geslacht of etniciteit boven een ander wordt bevoordeeld.
+- **Kwaliteit van dienstverlening**. Als je data traint voor één specifiek scenario maar de werkelijkheid veel complexer is, leidt dat tot een slecht presterende dienst. Bijvoorbeeld een handzeepdispenser die mensen met een donkere huid niet lijkt te kunnen detecteren. [Referentie](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
+- **Beschimpen**. Onrechtvaardig iets of iemand bekritiseren en labelen. Bijvoorbeeld, een technologie voor beeldherkenning die berucht is omdat die beelden van mensen met een donkere huid als gorilla’s labelde.
+- **Over- of ondervertegenwoordiging**. Het idee is dat een bepaalde groep niet wordt gezien in een bepaald beroep, en elke dienst of functie die dat promoot draagt bij aan schade.
+- **Stereotypering**. Een bepaalde groep associëren met vooropgezette eigenschappen. Bijvoorbeeld, een vertaalsysteem tussen Engels en Turks kan onnauwkeurigheden bevatten door stereotypische associaties met geslacht.
-
+
> vertaling naar Turks
-
+
> vertaling terug naar Engels
-Bij het ontwerpen en testen van AI-systemen moeten we ervoor zorgen dat AI eerlijk is en niet geprogrammeerd is om bevooroordeelde of discriminerende beslissingen te nemen, die ook verboden zijn voor mensen. Eerlijkheid garanderen in AI en machine learning blijft een complexe sociaal-technische uitdaging.
+Bij het ontwerpen en testen van AI-systemen moeten we ervoor zorgen dat AI eerlijk is en niet geprogrammeerd is om bevooroordeelde of discriminerende beslissingen te nemen, iets wat mensen ook niet mogen doen. Het garanderen van eerlijkheid in AI en machine learning blijft een complexe sociotechnische uitdaging.
### Betrouwbaarheid en veiligheid
-Om vertrouwen op te bouwen, moeten AI-systemen betrouwbaar, veilig en consistent zijn onder normale en onverwachte omstandigheden. Het is belangrijk om te weten hoe AI-systemen zich gedragen in verschillende situaties, vooral wanneer ze uitschieters zijn. Bij het bouwen van AI-oplossingen moet er veel aandacht worden besteed aan hoe om te gaan met een breed scala aan omstandigheden waarmee de AI-oplossingen te maken kunnen krijgen. Bijvoorbeeld, een zelfrijdende auto moet de veiligheid van mensen als topprioriteit stellen. Als gevolg hiervan moet de AI die de auto aandrijft rekening houden met alle mogelijke scenario's waarmee de auto te maken kan krijgen, zoals nacht, onweer of sneeuwstormen, kinderen die de straat oversteken, huisdieren, wegwerkzaamheden, enzovoort. Hoe goed een AI-systeem een breed scala aan omstandigheden betrouwbaar en veilig kan verwerken, weerspiegelt het niveau van anticipatie dat de datawetenschapper of AI-ontwikkelaar heeft overwogen tijdens het ontwerp of de test van het systeem.
+Om vertrouwen op te bouwen, moeten AI-systemen betrouwbaar, veilig en consistent zijn onder normale en onvoorziene omstandigheden. Het is belangrijk om te weten hoe AI-systemen zich in verschillende situaties gedragen, vooral bij outliers. Bij het bouwen van AI-oplossingen moet er veel aandacht zijn voor het omgaan met een grote diversiteit aan omstandigheden die de AI-oplossingen kunnen tegenkomen. Bijvoorbeeld, een zelfrijdende auto moet de veiligheid van mensen als hoogste prioriteit hebben. Daardoor moet de AI van de auto alle mogelijke scenario’s overwegen, zoals nacht, onweersbuien of sneeuwstormen, kinderen die de straat oversteken, huisdieren, wegwerkzaamheden enzovoorts. Hoe goed een AI-systeem een breed scala aan omstandigheden op betrouwbare en veilige wijze kan behandelen, weerspiegelt het niveau van anticipatie van de data scientist of AI-ontwikkelaar tijdens het ontwerp en testen van het systeem.
> [🎥 Klik hier voor een video: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
### Inclusiviteit
-AI-systemen moeten worden ontworpen om iedereen te betrekken en te empoweren. Bij het ontwerpen en implementeren van AI-systemen identificeren en aanpakken datawetenschappers en AI-ontwikkelaars potentiële barrières in het systeem die mensen onbedoeld kunnen uitsluiten. Bijvoorbeeld, er zijn 1 miljard mensen met een handicap wereldwijd. Met de vooruitgang van AI kunnen zij gemakkelijker toegang krijgen tot een breed scala aan informatie en kansen in hun dagelijks leven. Door de barrières aan te pakken, ontstaan er mogelijkheden om te innoveren en AI-producten te ontwikkelen met betere ervaringen die iedereen ten goede komen.
+AI-systemen moeten zo worden ontworpen dat ze iedereen betrekken en versterken. Bij het ontwerpen en implementeren van AI-systemen identificeren en adresseren datawetenschappers en AI-ontwikkelaars potentiële barrières in het systeem die mensen onbedoeld kunnen uitsluiten. Er zijn bijvoorbeeld 1 miljard mensen met een handicap wereldwijd. Met de vooruitgang van AI kunnen ze gemakkelijker toegang krijgen tot een breed scala aan informatie en kansen in hun dagelijks leven. Door barrières weg te nemen, creëren we kansen om te innoveren en AI-producten te ontwikkelen met betere ervaringen die iedereen ten goede komen.
> [🎥 Klik hier voor een video: inclusiviteit in AI](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
-### Veiligheid en privacy
+### Beveiliging en privacy
-AI-systemen moeten veilig zijn en de privacy van mensen respecteren. Mensen hebben minder vertrouwen in systemen die hun privacy, informatie of leven in gevaar brengen. Bij het trainen van machine learning-modellen vertrouwen we op gegevens om de beste resultaten te produceren. Daarbij moet rekening worden gehouden met de herkomst en integriteit van de gegevens. Bijvoorbeeld, zijn de gegevens door gebruikers ingediend of openbaar beschikbaar? Vervolgens, bij het werken met de gegevens, is het cruciaal om AI-systemen te ontwikkelen die vertrouwelijke informatie kunnen beschermen en aanvallen kunnen weerstaan. Naarmate AI steeds vaker voorkomt, wordt het beschermen van privacy en het beveiligen van belangrijke persoonlijke en zakelijke informatie steeds belangrijker en complexer. Privacy- en gegevensbeveiligingskwesties vereisen speciale aandacht voor AI, omdat toegang tot gegevens essentieel is voor AI-systemen om nauwkeurige en geïnformeerde voorspellingen en beslissingen over mensen te maken.
+AI-systemen moeten veilig zijn en de privacy van mensen respecteren. Mensen hebben minder vertrouwen in systemen die hun privacy, informatie of leven in gevaar brengen. Bij het trainen van machine learning modellen vertrouwen we op data om de beste resultaten te leveren. Daarbij moet rekening worden gehouden met de herkomst van de data en de integriteit ervan. Bijvoorbeeld, is de data door gebruikers ingediend of is het openbaar beschikbaar? Vervolgens is het cruciaal om bij het werken met data AI-systemen te ontwikkelen die vertrouwelijke informatie kunnen beschermen en bestand zijn tegen aanvallen. Naarmate AI meer voorkomt, wordt het steeds belangrijker en complexer om privacy te beschermen en belangrijke persoonlijke en bedrijfsinformatie te beveiligen. Privacy- en dataveiligheidskwesties vergen speciale aandacht bij AI omdat toegang tot data essentieel is voor AI-systemen om nauwkeurige en geïnformeerde voorspellingen en beslissingen over mensen te maken.
-> [🎥 Klik hier voor een video: veiligheid in AI](https://www.microsoft.com/videoplayer/embed/RE4voJF)
+> [🎥 Klik hier voor een video: beveiliging in AI](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- Als industrie hebben we aanzienlijke vooruitgang geboekt op het gebied van privacy en veiligheid, grotendeels gestimuleerd door regelgeving zoals de GDPR (General Data Protection Regulation).
-- Toch moeten we bij AI-systemen de spanning erkennen tussen de behoefte aan meer persoonlijke gegevens om systemen persoonlijker en effectiever te maken – en privacy.
-- Net zoals bij de geboorte van verbonden computers met het internet, zien we ook een enorme toename van het aantal beveiligingsproblemen met betrekking tot AI.
-- Tegelijkertijd hebben we gezien dat AI wordt gebruikt om de beveiliging te verbeteren. Bijvoorbeeld, de meeste moderne antivirusprogramma's worden tegenwoordig aangedreven door AI-heuristieken.
-- We moeten ervoor zorgen dat onze data science-processen harmonieus samengaan met de nieuwste privacy- en beveiligingspraktijken.
+- Als industrie hebben we aanzienlijke vooruitgang geboekt op het gebied van privacy en beveiliging, mede aangedreven door regelgeving zoals de AVG (Algemene Verordening Gegevensbescherming).
+- Toch moeten we bij AI-systemen erkennen dat er een spanning bestaat tussen de behoefte aan meer persoonlijke data om systemen persoonlijker en effectiever te maken – en privacy.
+- Net als bij de komst van verbonden computers met het internet, zien we ook een grote toename van beveiligingsproblemen gerelateerd aan AI.
+- Tegelijkertijd wordt AI gebruikt om beveiliging te verbeteren. Bijvoorbeeld, de meeste moderne antivirus scanners worden tegenwoordig aangestuurd door AI-heuristieken.
+- We moeten ervoor zorgen dat onze Data Science-processen harmonieus samengaan met de nieuwste privacy- en beveiligingspraktijken.
-### Transparantie
-AI-systemen moeten begrijpelijk zijn. Een cruciaal onderdeel van transparantie is het uitleggen van het gedrag van AI-systemen en hun componenten. Het verbeteren van het begrip van AI-systemen vereist dat belanghebbenden begrijpen hoe en waarom ze functioneren, zodat ze potentiële prestatieproblemen, veiligheids- en privacykwesties, vooroordelen, uitsluitingspraktijken of onbedoelde uitkomsten kunnen identificeren. We geloven ook dat degenen die AI-systemen gebruiken eerlijk en open moeten zijn over wanneer, waarom en hoe ze ervoor kiezen om ze in te zetten. Evenals de beperkingen van de systemen die ze gebruiken. Bijvoorbeeld, als een bank een AI-systeem gebruikt om zijn beslissingen over consumentenkredieten te ondersteunen, is het belangrijk om de uitkomsten te onderzoeken en te begrijpen welke gegevens de aanbevelingen van het systeem beïnvloeden. Overheden beginnen AI in verschillende sectoren te reguleren, dus datawetenschappers en organisaties moeten uitleggen of een AI-systeem voldoet aan de regelgeving, vooral wanneer er een ongewenste uitkomst is.
+### Transparantie
+AI-systemen moeten begrijpelijk zijn. Een cruciaal onderdeel van transparantie is het uitleggen van het gedrag van AI-systemen en hun componenten. Het verbeteren van het begrip van AI-systemen vereist dat belanghebbenden begrijpen hoe en waarom ze functioneren, zodat ze potentiële prestatieproblemen, veiligheids- en privacyzorgen, vooroordelen, uitsluitingspraktijken of onbedoelde uitkomsten kunnen identificeren. Wij vinden ook dat degenen die AI-systemen gebruiken eerlijk en open moeten zijn over wanneer, waarom en hoe ze ervoor kiezen die te implementeren. En over de beperkingen van de systemen die ze gebruiken. Bijvoorbeeld, als een bank een AI-systeem gebruikt om zijn consumentenleningsbeslissingen te ondersteunen, is het belangrijk de uitkomsten te onderzoeken en te begrijpen welke data de aanbevelingen van het systeem beïnvloeden. Overheden beginnen AI industriebreed te reguleren, dus datawetenschappers en organisaties moeten uitleggen of een AI-systeem aan de regelgeving voldoet, vooral als er een ongewenste uitkomst is.
> [🎥 Klik hier voor een video: transparantie in AI](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- Omdat AI-systemen zo complex zijn, is het moeilijk te begrijpen hoe ze werken en de resultaten te interpreteren.
-- Dit gebrek aan begrip beïnvloedt de manier waarop deze systemen worden beheerd, operationeel worden gemaakt en gedocumenteerd.
-- Dit gebrek aan begrip beïnvloedt nog belangrijker de beslissingen die worden genomen op basis van de resultaten die deze systemen produceren.
+- Omdat AI-systemen zo complex zijn, is het moeilijk om te begrijpen hoe ze werken en de resultaten te interpreteren.
+- Dit gebrek aan begrip beïnvloedt de manier waarop deze systemen worden beheerd, in productie worden genomen en worden gedocumenteerd.
+- Dit gebrek aan begrip beïnvloedt vooral de beslissingen die worden genomen op basis van de uitkomsten van deze systemen.
-### Verantwoordelijkheid
+### Verantwoordingsplicht
+
+De mensen die AI-systemen ontwerpen en inzetten moeten verantwoordelijk zijn voor hoe hun systemen functioneren. De behoefte aan verantwoordelijkheid is vooral cruciaal bij gevoelige technologieën zoals gezichtsherkenning. Onlangs is er een groeiende vraag naar gezichtsherkenningstechnologie, vooral van wetshandhavingsorganisaties die de potentie van de technologie zien bij toepassingen als het vinden van vermiste kinderen. Deze technologieën zouden echter ook kunnen worden gebruikt door een overheid om fundamentele vrijheden van hun burgers in gevaar te brengen, bijvoorbeeld door voortdurende surveillance van specifieke personen mogelijk te maken. Daarom moeten datawetenschappers en organisaties verantwoordelijk zijn voor de impact van hun AI-systeem op individuen of de samenleving.
-De mensen die AI-systemen ontwerpen en implementeren moeten verantwoordelijk zijn voor hoe hun systemen functioneren. De behoefte aan verantwoordelijkheid is vooral cruciaal bij gevoelige technologieën zoals gezichtsherkenning. Recentelijk is er een groeiende vraag naar gezichtsherkenningstechnologie, vooral van wetshandhavingsorganisaties die het potentieel van de technologie zien in toepassingen zoals het vinden van vermiste kinderen. Deze technologieën kunnen echter mogelijk door een overheid worden gebruikt om de fundamentele vrijheden van haar burgers in gevaar te brengen, bijvoorbeeld door voortdurende surveillance van specifieke individuen mogelijk te maken. Daarom moeten datawetenschappers en organisaties verantwoordelijk zijn voor hoe hun AI-systeem individuen of de samenleving beïnvloedt.
+[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft's Approach to Responsible AI")
-[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft's Approach to Responsible AI")
+> 🎥 Klik op de afbeelding hierboven voor een video: Waarschuwingen voor massale surveillance via gezichtsherkenning
-> 🎥 Klik op de afbeelding hierboven voor een video: Waarschuwingen over massale surveillance door gezichtsherkenning
+Uiteindelijk is een van de grootste vragen voor onze generatie, als de eerste generatie die AI in de samenleving brengt, hoe we kunnen waarborgen dat computers verantwoordelijk blijven tegenover mensen en hoe we kunnen garanderen dat de mensen die computers ontwerpen verantwoordelijk blijven tegenover iedereen.
-Uiteindelijk is een van de grootste vragen voor onze generatie, als de eerste generatie die AI naar de samenleving brengt, hoe we ervoor kunnen zorgen dat computers verantwoordelijk blijven tegenover mensen en hoe we ervoor kunnen zorgen dat de mensen die computers ontwerpen verantwoordelijk blijven tegenover iedereen.
+## Impactbeoordeling
-## Impactanalyse
+Voor het trainen van een machine learning model is het belangrijk een impactbeoordeling uit te voeren om het doel van het AI-systeem te begrijpen; wat het beoogde gebruik is; waar het wordt ingezet; en wie er met het systeem zal communiceren. Dit is nuttig voor beoordelaars of testers die het systeem evalueren, zodat zij weten welke factoren in acht genomen moeten worden bij het identificeren van potentiële risico’s en verwachte gevolgen.
-Voordat je een machine learning-model traint, is het belangrijk om een impactanalyse uit te voeren om het doel van het AI-systeem te begrijpen; wat het beoogde gebruik is; waar het zal worden ingezet; en wie met het systeem zal omgaan. Dit is nuttig voor beoordelaars of testers die het systeem evalueren om te weten welke factoren ze in overweging moeten nemen bij het identificeren van potentiële risico's en verwachte gevolgen.
+De volgende aandachtsgebieden zijn belangrijk bij het uitvoeren van een impactbeoordeling:
-De volgende gebieden zijn van belang bij het uitvoeren van een impactanalyse:
+* **Nadelige impact op individuen**. Bewust zijn van beperkingen of vereisten, ongeoorloofd gebruik of bekende beperkingen die het systeem bij de prestaties belemmeren, is essentieel om te voorkomen dat het systeem op een manier wordt gebruikt die schade kan veroorzaken aan individuen.
+* **Data vereisten**. Begrijpen hoe en waar het systeem data zal gebruiken stelt beoordelaars in staat om op de hoogte te zijn van eventuele datavereisten waar je rekening mee moet houden (bijv. AVG of HIPAA regelgeving). Daarnaast moet worden onderzocht of de bron of hoeveelheid data voldoende is voor training.
+* **Samenvatting van impact**. Verzamel een lijst met mogelijke schaden die kunnen ontstaan door het gebruik van het systeem. Tijdens de gehele ML levenscyclus moet worden bekeken of de geïdentificeerde problemen worden gemitigeerd of aangepakt.
+* **Toepasselijke doelstellingen** voor elk van de zes kernprincipes. Beoordeel of de doelstellingen van elk principe worden gehaald en of er hiaten zijn.
-* **Nadelige impact op individuen**. Bewust zijn van eventuele beperkingen of vereisten, niet-ondersteund gebruik of bekende beperkingen die de prestaties van het systeem belemmeren, is essentieel om ervoor te zorgen dat het systeem niet op een manier wordt gebruikt die individuen kan schaden.
-* **Gegevensvereisten**. Begrijpen hoe en waar het systeem gegevens zal gebruiken stelt beoordelaars in staat om eventuele gegevensvereisten te onderzoeken waar je rekening mee moet houden (bijv. GDPR- of HIPPA-gegevensreguleringen). Daarnaast moet worden onderzocht of de bron of hoeveelheid gegevens voldoende is voor training.
-* **Samenvatting van impact**. Verzamel een lijst van potentiële schade die kan ontstaan door het gebruik van het systeem. Tijdens de ML-levenscyclus moet worden beoordeeld of de geïdentificeerde problemen worden aangepakt of opgelost.
-* **Toepasbare doelen** voor elk van de zes kernprincipes. Beoordeel of de doelen van elk van de principes worden gehaald en of er hiaten zijn.
-## Debuggen met verantwoorde AI
+## Debuggen met verantwoordelijke AI
-Net zoals bij het debuggen van een softwaretoepassing, is het debuggen van een AI-systeem een noodzakelijk proces om problemen in het systeem te identificeren en op te lossen. Er zijn veel factoren die ervoor kunnen zorgen dat een model niet presteert zoals verwacht of niet verantwoordelijk is. De meeste traditionele modelprestatiemetrics zijn kwantitatieve aggregaten van de prestaties van een model, die niet voldoende zijn om te analyseren hoe een model de principes van verantwoorde AI schendt. Bovendien is een machine learning-model een black box, wat het moeilijk maakt om te begrijpen wat de uitkomst beïnvloedt of uitleg te geven wanneer het een fout maakt. Later in deze cursus leren we hoe we het Responsible AI-dashboard kunnen gebruiken om AI-systemen te debuggen. Het dashboard biedt een holistisch hulpmiddel voor datawetenschappers en AI-ontwikkelaars om:
+Net als bij debuggen van een softwareapplicatie is het debuggen van een AI-systeem een noodzakelijk proces om problemen in het systeem te identificeren en op te lossen. Er zijn veel factoren die kunnen beïnvloeden dat een model niet presteert zoals verwacht of verantwoord. De meeste traditionele modelprestatiemaatstaven zijn kwantitatieve totalen van de prestatie van een model, die onvoldoende zijn om te analyseren hoe een model de principes van verantwoordelijke AI schendt. Bovendien is een machine learning model een black box, wat het moeilijk maakt te begrijpen wat het resultaat drijft of uitleg te geven wanneer het een fout maakt. Later in deze cursus leren we hoe de Responsible AI dashboard kan worden gebruikt om AI-systemen te debuggen. Het dashboard biedt een holistisch instrument voor datawetenschappers en AI-ontwikkelaars om:
* **Foutanalyse**. Om de foutverdeling van het model te identificeren die de eerlijkheid of betrouwbaarheid van het systeem kan beïnvloeden.
-* **Modeloverzicht**. Om te ontdekken waar er verschillen zijn in de prestaties van het model over verschillende datacohorten.
-* **Gegevensanalyse**. Om de gegevensverdeling te begrijpen en eventuele potentiële vooroordelen in de gegevens te identificeren die kunnen leiden tot problemen met eerlijkheid, inclusiviteit en betrouwbaarheid.
-* **Modelinterpretatie**. Om te begrijpen wat de voorspellingen van het model beïnvloedt. Dit helpt bij het uitleggen van het gedrag van het model, wat belangrijk is voor transparantie en verantwoordelijkheid.
+* **Model overzicht**. Om te ontdekken waar er verschillen zijn in de prestaties van het model over data cohorts.
+* **Data analyse**. Om de data distributie te begrijpen en mogelijke vooringenomenheid in de data te identificeren die kunnen leiden tot problemen met eerlijkheid, inclusiviteit en betrouwbaarheid.
+* **Model interpreteerbaarheid**. Om te begrijpen wat de voorspellingen van het model beïnvloedt of drijft. Dit helpt bij het uitleggen van het gedrag van het model, wat belangrijk is voor transparantie en verantwoordelijkheid.
-## 🚀 Uitdaging
-Om schade te voorkomen voordat deze wordt geïntroduceerd, moeten we:
+## 🚀 Uitdaging
+
+Om te voorkomen dat schade wordt veroorzaakt, zouden we:
-- een diversiteit aan achtergronden en perspectieven hebben onder de mensen die aan systemen werken
-- investeren in datasets die de diversiteit van onze samenleving weerspiegelen
-- betere methoden ontwikkelen gedurende de hele machine learning-levenscyclus om verantwoorde AI te detecteren en te corrigeren wanneer deze optreedt
+- een diversiteit aan achtergronden en perspectieven moeten hebben bij de mensen die aan systemen werken.
+- investeren in datasets die de diversiteit van onze samenleving weerspiegelen.
+- betere methoden moeten ontwikkelen gedurende de hele machine learning levenscyclus om verantwoordelijke AI te detecteren en te corrigeren wanneer het voorkomt.
-Denk na over real-life scenario's waarin de onbetrouwbaarheid van een model duidelijk is in modelbouw en gebruik. Wat moeten we nog meer overwegen?
+Denk na over scenario’s uit het echte leven waarin de onbetrouwbaarheid van een model duidelijk is tijdens het bouwen en gebruiken van modellen. Wat zouden we nog meer moeten overwegen?
-## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ml/)
+## [Na-college quiz](https://ff-quizzes.netlify.app/en/ml/)
## Review & Zelfstudie
+
-In deze les heb je enkele basisconcepten geleerd over eerlijkheid en oneerlijkheid in machine learning.
-Bekijk deze workshop om dieper in te gaan op de onderwerpen:
+In deze les heb je enkele basisprincipes geleerd van de concepten eerlijkheid en oneerlijkheid in machine learning.
+
+Bekijk deze workshop om dieper in de onderwerpen te duiken:
-- Op zoek naar verantwoorde AI: Principes in de praktijk brengen door Besmira Nushi, Mehrnoosh Sameki en Amit Sharma
+- In de zoektocht naar verantwoordelijke AI: Principes in praktijk brengen door Besmira Nushi, Mehrnoosh Sameki en Amit Sharma
-[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: Een open-source framework voor het bouwen van verantwoorde AI")
+[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI")
-> 🎥 Klik op de afbeelding hierboven voor een video: RAI Toolbox: Een open-source framework voor het bouwen van verantwoorde AI door Besmira Nushi, Mehrnoosh Sameki en Amit Sharma
+> 🎥 Klik op de afbeelding hierboven voor een video: RAI Toolbox: An open-source framework for building responsible AI door Besmira Nushi, Mehrnoosh Sameki, en Amit Sharma
-Lees ook:
+Lees ook:
-- Microsoft’s RAI resource center: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
+- Microsoft’s RAI resource center: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
-- Microsoft’s FATE onderzoeksgroep: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
+- Microsoft’s FATE research group: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
-RAI Toolbox:
+RAI Toolbox:
- [Responsible AI Toolbox GitHub repository](https://github.com/microsoft/responsible-ai-toolbox)
-Lees meer over de tools van Azure Machine Learning om eerlijkheid te waarborgen:
+Lees over Azure Machine Learning's tools om eerlijkheid te waarborgen:
-- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
+- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
## Opdracht
@@ -157,5 +161,7 @@ Lees meer over de tools van Azure Machine Learning om eerlijkheid te waarborgen:
---
-**Disclaimer**:
-Dit document is vertaald met behulp van de AI-vertalingsservice [Co-op Translator](https://github.com/Azure/co-op-translator). Hoewel we streven naar nauwkeurigheid, dient u zich ervan bewust te zijn dat geautomatiseerde vertalingen fouten of onnauwkeurigheden kunnen bevatten. Het originele document in zijn oorspronkelijke taal moet worden beschouwd als de gezaghebbende bron. Voor cruciale informatie wordt professionele menselijke vertaling aanbevolen. Wij zijn niet aansprakelijk voor eventuele misverstanden of verkeerde interpretaties die voortvloeien uit het gebruik van deze vertaling.
\ No newline at end of file
+
+**Disclaimer**:
+Dit document is vertaald met behulp van de AI vertaaldienst [Co-op Translator](https://github.com/Azure/co-op-translator). Hoewel we streven naar nauwkeurigheid, dient u er rekening mee te houden dat geautomatiseerde vertalingen fouten of onnauwkeurigheden kunnen bevatten. Het originele document in de oorspronkelijke taal moet worden beschouwd als de gezaghebbende bron. Voor kritieke informatie wordt professionele menselijke vertaling aanbevolen. Wij zijn niet aansprakelijk voor eventuele misverstanden of verkeerde interpretaties die voortvloeien uit het gebruik van deze vertaling.
+
\ No newline at end of file
diff --git a/translations/nl/2-Regression/1-Tools/README.md b/translations/nl/2-Regression/1-Tools/README.md
index 650da2132..baab4c243 100644
--- a/translations/nl/2-Regression/1-Tools/README.md
+++ b/translations/nl/2-Regression/1-Tools/README.md
@@ -1,120 +1,121 @@
# Aan de slag met Python en Scikit-learn voor regressiemodellen
-
+
> Sketchnote door [Tomomi Imura](https://www.twitter.com/girlie_mac)
-## [Pre-quiz voor de les](https://ff-quizzes.netlify.app/en/ml/)
+## [Pre-lezing quiz](https://ff-quizzes.netlify.app/en/ml/)
-> ### [Deze les is beschikbaar in R!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
+> ### [Deze les is ook beschikbaar in R!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
## Introductie
-In deze vier lessen ontdek je hoe je regressiemodellen kunt bouwen. We zullen binnenkort bespreken waarvoor deze modellen worden gebruikt. Maar voordat je iets doet, zorg ervoor dat je de juiste tools hebt om aan de slag te gaan!
+In deze vier lessen ontdek je hoe je regressiemodellen bouwt. We zullen binnenkort bespreken waar deze voor dienen. Maar voordat je iets doet, zorg ervoor dat je de juiste tools klaar hebt staan om aan het proces te beginnen!
-In deze les leer je:
+In deze les leer je hoe je:
-- Je computer configureren voor lokale machine learning-taken.
-- Werken met Jupyter-notebooks.
-- Scikit-learn gebruiken, inclusief installatie.
-- Lineaire regressie verkennen met een praktische oefening.
+- Je computer configureert voor lokale machine learning taken.
+- Werkt met Jupyter Notebooks.
+- Scikit-learn gebruikt, inclusief installatie.
+- Lineaire regressie onderzoekt via een praktische oefening.
## Installaties en configuraties
-[](https://youtu.be/-DfeD2k2Kj0 "ML voor beginners - Stel je tools in om Machine Learning-modellen te bouwen")
+[](https://youtu.be/-DfeD2k2Kj0 "ML voor beginners - Stel je tools klaar om Machine Learning modellen te bouwen")
-> 🎥 Klik op de afbeelding hierboven voor een korte video over het configureren van je computer voor ML.
+> 🎥 Klik op de afbeelding hierboven voor een korte video waarin wordt uitgelegd hoe je je computer configureert voor ML.
-1. **Installeer Python**. Zorg ervoor dat [Python](https://www.python.org/downloads/) op je computer is geïnstalleerd. Je zult Python gebruiken voor veel data science- en machine learning-taken. De meeste computersystemen hebben al een Python-installatie. Er zijn ook handige [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) beschikbaar om de installatie voor sommige gebruikers te vergemakkelijken.
+1. **Installeer Python**. Zorg ervoor dat [Python](https://www.python.org/downloads/) op je computer is geïnstalleerd. Je zult Python voor veel data science en machine learning taken gebruiken. De meeste computersystemen hebben al een Python-installatie. Er zijn ook handige [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) beschikbaar om de installatie voor sommige gebruikers te vergemakkelijken.
- Sommige toepassingen van Python vereisen echter een specifieke versie van de software, terwijl andere een andere versie vereisen. Om deze reden is het handig om te werken binnen een [virtuele omgeving](https://docs.python.org/3/library/venv.html).
+ Sommige toepassingen van Python vereisen echter een specifieke versie van de software, terwijl andere een andere versie nodig hebben. Daarom is het handig om binnen een [virtuele omgeving](https://docs.python.org/3/library/venv.html) te werken.
-2. **Installeer Visual Studio Code**. Zorg ervoor dat Visual Studio Code op je computer is geïnstalleerd. Volg deze instructies om [Visual Studio Code te installeren](https://code.visualstudio.com/) voor de basisinstallatie. Je gaat Python gebruiken in Visual Studio Code tijdens deze cursus, dus het kan handig zijn om je kennis op te frissen over hoe je [Visual Studio Code configureert](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) voor Python-ontwikkeling.
+2. **Installeer Visual Studio Code**. Zorg dat je Visual Studio Code op je computer hebt geïnstalleerd. Volg deze instructies om [Visual Studio Code te installeren](https://code.visualstudio.com/) voor de basisinstallatie. Je gaat in deze cursus Python gebruiken in Visual Studio Code, dus het is handig om te leren hoe je [Visual Studio Code configureert](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) voor Python-ontwikkeling.
- > Maak jezelf vertrouwd met Python door deze verzameling [Learn-modules](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) door te nemen.
+ > Maak je vertrouwd met Python door deze verzameling van [Learn modules](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) door te lopen
>
> [](https://youtu.be/yyQM70vi7V8 "Python instellen met Visual Studio Code")
>
> 🎥 Klik op de afbeelding hierboven voor een video: Python gebruiken binnen VS Code.
-3. **Installeer Scikit-learn** door de [instructies hier](https://scikit-learn.org/stable/install.html) te volgen. Omdat je Python 3 moet gebruiken, wordt aanbevolen om een virtuele omgeving te gebruiken. Let op, als je deze bibliotheek installeert op een M1 Mac, zijn er speciale instructies op de pagina hierboven.
+3. **Installeer Scikit-learn** door [deze instructies](https://scikit-learn.org/stable/install.html) te volgen. Omdat je moet zorgen dat je Python 3 gebruikt, wordt aanbevolen een virtuele omgeving te gebruiken. Let op, als je deze bibliotheek op een M1 Mac installeert, staan er speciale instructies op de gelinkte pagina.
-4. **Installeer Jupyter Notebook**. Je moet het [Jupyter-pakket installeren](https://pypi.org/project/jupyter/).
+1. **Installeer Jupyter Notebook**. Je moet het [Jupyter-pakket installeren](https://pypi.org/project/jupyter/).
## Je ML-ontwikkelomgeving
-Je gaat **notebooks** gebruiken om je Python-code te ontwikkelen en machine learning-modellen te maken. Dit type bestand is een veelgebruikt hulpmiddel voor datawetenschappers en kan worden herkend aan hun extensie `.ipynb`.
+Je gaat **notebooks** gebruiken om je Python-code te ontwikkelen en machine learning modellen te maken. Dit type bestand is een veelgebruikt hulpmiddel voor datawetenschappers en ze zijn te herkennen aan hun achtervoegsel of extensie `.ipynb`.
-Notebooks zijn een interactieve omgeving waarmee de ontwikkelaar zowel kan coderen als notities en documentatie rond de code kan toevoegen, wat erg handig is voor experimentele of onderzoeksgerichte projecten.
+Notebooks zijn een interactieve omgeving die de ontwikkelaar toestaat om zowel code te schrijven als aantekeningen te maken en documentatie rond de code te schrijven, wat erg handig is voor experimentele of onderzoeksgerichte projecten.
-[](https://youtu.be/7E-jC8FLA2E "ML voor beginners - Stel Jupyter Notebooks in om regressiemodellen te bouwen")
+[](https://youtu.be/7E-jC8FLA2E "ML voor beginners - Stel Jupyter Notebooks in om met regressiemodellen te beginnen")
-> 🎥 Klik op de afbeelding hierboven voor een korte video over deze oefening.
+> 🎥 Klik op de afbeelding hierboven voor een korte video waarin deze oefening wordt doorlopen.
-### Oefening - werken met een notebook
+### Oefening - werk met een notebook
In deze map vind je het bestand _notebook.ipynb_.
1. Open _notebook.ipynb_ in Visual Studio Code.
- Een Jupyter-server zal starten met Python 3+. Je zult gebieden in de notebook vinden die kunnen worden `uitgevoerd`, stukjes code. Je kunt een codeblok uitvoeren door het pictogram te selecteren dat eruitziet als een afspeelknop.
+ Een Jupyter-server zal starten met Python 3+ actief. Je vindt delen van de notebook die je kunt `runnen`, stukjes code. Je kunt een codeblok uitvoeren door te klikken op het icoon dat eruitziet als een play-knop.
-2. Selecteer het `md`-pictogram en voeg een beetje markdown toe, en de volgende tekst **# Welkom bij je notebook**.
+1. Selecteer het `md`-icoon en voeg wat markdown toe, en de volgende tekst **# Welkom in je notebook**.
Voeg vervolgens wat Python-code toe.
-3. Typ **print('hello notebook')** in het codeblok.
-4. Selecteer de pijl om de code uit te voeren.
+1. Typ **print('hello notebook')** in het codeblok.
+1. Selecteer de pijl om de code uit te voeren.
- Je zou de geprinte verklaring moeten zien:
+ Je zou het volgende geprinte statement moeten zien:
```output
hello notebook
```
-
+
-Je kunt je code afwisselen met opmerkingen om de notebook zelf te documenteren.
+Je kunt je code afwisselen met commentaar om zo de notebook zelf te documenteren.
-✅ Denk even na over hoe anders de werkomgeving van een webontwikkelaar is in vergelijking met die van een datawetenschapper.
+✅ Denk eens na over hoe verschillend de werkomgeving van een webontwikkelaar is ten opzichte van die van een datawetenschapper.
## Aan de slag met Scikit-learn
-Nu Python is ingesteld in je lokale omgeving en je vertrouwd bent met Jupyter-notebooks, laten we even vertrouwd raken met Scikit-learn (uitgesproken als `sci` zoals in `science`). Scikit-learn biedt een [uitgebreide API](https://scikit-learn.org/stable/modules/classes.html#api-ref) om je te helpen ML-taken uit te voeren.
+Nu Python is geïnstalleerd in je lokale omgeving en je comfortabel bent met Jupyter Notebooks, laten we ook vertrouwd raken met Scikit-learn (uitgesproken als `sci` zoals in `science`). Scikit-learn biedt een [uitgebreide API](https://scikit-learn.org/stable/modules/classes.html#api-ref) om je te helpen bij ML-taken.
-Volgens hun [website](https://scikit-learn.org/stable/getting_started.html): "Scikit-learn is een open source machine learning-bibliotheek die zowel supervised als unsupervised learning ondersteunt. Het biedt ook verschillende tools voor modelaanpassing, gegevensvoorverwerking, modelselectie en evaluatie, en vele andere hulpmiddelen."
+Volgens hun [website](https://scikit-learn.org/stable/getting_started.html) is "Scikit-learn een open source machine learning bibliotheek die zowel supervised als unsupervised learning ondersteunt. Het biedt ook diverse tools voor model fitting, datavoorbewerking, modelselectie en evaluatie, en vele andere hulpmiddelen."
-In deze cursus gebruik je Scikit-learn en andere tools om machine learning-modellen te bouwen voor wat we 'traditionele machine learning'-taken noemen. We hebben bewust neurale netwerken en deep learning vermeden, omdat deze beter worden behandeld in ons komende 'AI voor Beginners'-curriculum.
+In deze cursus gebruik je Scikit-learn en andere tools om machine learning modellen te bouwen voor wat wij 'traditionele machine learning' taken noemen. We hebben bewust neurale netwerken en deep learning buiten beschouwing gelaten, aangezien deze beter worden behandeld in onze komende 'AI voor Beginners' curriculum.
-Scikit-learn maakt het eenvoudig om modellen te bouwen en te evalueren voor gebruik. Het richt zich voornamelijk op het gebruik van numerieke gegevens en bevat verschillende kant-en-klare datasets die kunnen worden gebruikt als leermiddelen. Het bevat ook vooraf gebouwde modellen die studenten kunnen proberen. Laten we het proces verkennen van het laden van vooraf verpakte gegevens en het gebruik van een ingebouwde estimator om een eerste ML-model te maken met Scikit-learn met enkele basisgegevens.
+Scikit-learn maakt het eenvoudig om modellen te bouwen en te evalueren voor gebruik. Het richt zich voornamelijk op het werken met numerieke data en bevat verschillende kant-en-klare datasets als leermaterialen. Het bevat ook voorgebouwde modellen die studenten kunnen uitproberen. Laten we het proces verkennen van het laden van voorverpakte data en het gebruiken van een ingebouwde estimator om het eerste ML-model met Scikit-learn te maken met wat basisdata.
## Oefening - je eerste Scikit-learn notebook
-> Deze tutorial is geïnspireerd door het [lineaire regressievoorbeeld](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) op de website van Scikit-learn.
+> Deze tutorial is geïnspireerd op het [lineaire regressie voorbeeld](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) op de website van Scikit-learn.
+
[](https://youtu.be/2xkXL5EUpS0 "ML voor beginners - Je eerste lineaire regressieproject in Python")
-> 🎥 Klik op de afbeelding hierboven voor een korte video over deze oefening.
+> 🎥 Klik op de afbeelding hierboven voor een korte video waarin deze oefening wordt doorlopen.
-In het bestand _notebook.ipynb_ dat bij deze les hoort, verwijder je alle cellen door op het 'prullenbak'-pictogram te drukken.
+In het _notebook.ipynb_-bestand dat bij deze les hoort, maak je alle cellen leeg door op het 'prullenbak'-icoon te drukken.
-In deze sectie werk je met een kleine dataset over diabetes die is ingebouwd in Scikit-learn voor leermiddelen. Stel je voor dat je een behandeling voor diabetespatiënten wilde testen. Machine learning-modellen kunnen je helpen bepalen welke patiënten beter op de behandeling zouden reageren, op basis van combinaties van variabelen. Zelfs een heel eenvoudig regressiemodel, wanneer gevisualiseerd, kan informatie tonen over variabelen die je zouden helpen je theoretische klinische proeven te organiseren.
+In deze sectie werk je met een kleine dataset over diabetes, die ingebouwd is in Scikit-learn voor leerdoeleinden. Stel je voor dat je een behandeling voor diabetespatiënten wilt testen. Machine Learning modellen kunnen je helpen bepalen welke patiënten beter op de behandeling zouden reageren, op basis van combinaties van variabelen. Zelfs een heel eenvoudig regressiemodel kan, zodra het gevisualiseerd is, informatie tonen over variabelen die je kunnen helpen je theoretische klinische proeven te organiseren.
-✅ Er zijn veel soorten regressiemethoden, en welke je kiest hangt af van het antwoord dat je zoekt. Als je de waarschijnlijke lengte van een persoon van een bepaalde leeftijd wilt voorspellen, gebruik je lineaire regressie, omdat je op zoek bent naar een **numerieke waarde**. Als je wilt ontdekken of een type keuken als veganistisch moet worden beschouwd, zoek je naar een **categorie-indeling**, dus gebruik je logistische regressie. Je leert later meer over logistische regressie. Denk eens na over enkele vragen die je aan gegevens kunt stellen, en welke van deze methoden meer geschikt zou zijn.
+✅ Er zijn veel soorten regressiemethoden, en welke je kiest hangt af van het antwoord dat je zoekt. Wil je bijvoorbeeld de waarschijnlijke lengte voorspellen voor een persoon van een bepaalde leeftijd, dan gebruik je lineaire regressie, omdat je op zoek bent naar een **numerieke waarde**. Ben je geïnteresseerd in het ontdekken of een type keuken als veganistisch beschouwd moet worden, dan zoek je een **categorie-toewijzing** en gebruik je logistische regressie. Daar leer je later meer over. Denk eens na over vragen die je aan data kunt stellen en welke van deze methoden daar het meest geschikt voor zou zijn.
-Laten we aan de slag gaan met deze taak.
+Laten we aan deze taak beginnen.
### Bibliotheken importeren
Voor deze taak importeren we enkele bibliotheken:
-- **matplotlib**. Dit is een handige [grafiektool](https://matplotlib.org/) en we zullen het gebruiken om een lijnplot te maken.
-- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) is een handige bibliotheek voor het omgaan met numerieke gegevens in Python.
+- **matplotlib**. Het is een handig [grafiekhulpmiddel](https://matplotlib.org/) en we gebruiken het om een lijngrafiek te maken.
+- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) is een nuttige bibliotheek voor het omgaan met numerieke data in Python.
- **sklearn**. Dit is de [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) bibliotheek.
-Importeer enkele bibliotheken om je taken te ondersteunen.
+Importeer enkele bibliotheken om je taken te helpen uitvoeren.
-1. Voeg imports toe door de volgende code te typen:
+1. Voeg de imports toe door de volgende code te typen:
```python
import matplotlib.pyplot as plt
@@ -122,26 +123,26 @@ Importeer enkele bibliotheken om je taken te ondersteunen.
from sklearn import datasets, linear_model, model_selection
```
- Hierboven importeer je `matplotlib`, `numpy` en je importeert `datasets`, `linear_model` en `model_selection` van `sklearn`. `model_selection` wordt gebruikt voor het splitsen van gegevens in trainings- en testsets.
+ Boven importeer je `matplotlib`, `numpy` en je importeert `datasets`, `linear_model` en `model_selection` uit `sklearn`. `model_selection` wordt gebruikt om data te splitsen in trainings- en testsets.
-### De diabetes-dataset
+### De diabetes dataset
-De ingebouwde [diabetes-dataset](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) bevat 442 gegevensmonsters over diabetes, met 10 kenmerkvariabelen, waaronder:
+De ingebouwde [diabetes dataset](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) bevat 442 datapunten over diabetes, met 10 kenmerkenvariabelen, waarvan enkele zijn:
- leeftijd: leeftijd in jaren
- bmi: body mass index
- bp: gemiddelde bloeddruk
- s1 tc: T-cellen (een type witte bloedcellen)
-✅ Deze dataset bevat het concept 'geslacht' als een kenmerkvariabele die belangrijk is voor onderzoek naar diabetes. Veel medische datasets bevatten dit type binaire classificatie. Denk eens na over hoe categorisaties zoals deze bepaalde delen van de bevolking kunnen uitsluiten van behandelingen.
+✅ Deze dataset bevat het concept 'geslacht' als een kenmerkvariabele die belangrijk is voor onderzoek naar diabetes. Veel medische datasets bevatten dit soort binaire classificaties. Denk eens na over hoe dergelijke categorisaties sommige delen van een bevolking zouden kunnen uitsluiten van behandelingen.
-Laad nu de X- en y-gegevens.
+Laad nu de X- en y-data in.
-> 🎓 Onthoud, dit is supervised learning, en we hebben een benoemde 'y'-doelvariabele nodig.
+> 🎓 Onthoud, dit is supervised learning, en we hebben een benoemde 'y' target nodig.
-In een nieuwe codecel laad je de diabetes-dataset door `load_diabetes()` aan te roepen. De input `return_X_y=True` geeft aan dat `X` een gegevensmatrix zal zijn en `y` de regressiedoelvariabele.
+Laad in een nieuwe codecel de diabetes dataset door `load_diabetes()` aan te roepen. De invoer `return_X_y=True` geeft aan dat `X` een datamatrix zal zijn en `y` het regressiedoel.
-1. Voeg enkele printopdrachten toe om de vorm van de gegevensmatrix en het eerste element ervan te tonen:
+1. Voeg wat printcommando's toe om de vorm van de datamatrix en het eerste element te tonen:
```python
X, y = datasets.load_diabetes(return_X_y=True)
@@ -149,9 +150,9 @@ In een nieuwe codecel laad je de diabetes-dataset door `load_diabetes()` aan te
print(X[0])
```
- Wat je terugkrijgt als antwoord, is een tuple. Wat je doet, is de twee eerste waarden van de tuple toewijzen aan respectievelijk `X` en `y`. Leer meer [over tuples](https://wikipedia.org/wiki/Tuple).
+ Wat je terugkrijgt als antwoord is een tuple. Wat je doet is de twee eerste waarden van de tuple toewijzen aan respectievelijk `X` en `y`. Leer meer [over tuples](https://wikipedia.org/wiki/Tuple).
- Je kunt zien dat deze gegevens 442 items bevatten, gevormd in arrays van 10 elementen:
+ Je kunt zien dat deze data 442 items bevat die zijn gevormd als arrays van 10 elementen:
```text
(442, 10)
@@ -159,39 +160,39 @@ In een nieuwe codecel laad je de diabetes-dataset door `load_diabetes()` aan te
-0.04340085 -0.00259226 0.01990842 -0.01764613]
```
- ✅ Denk eens na over de relatie tussen de gegevens en de regressiedoelvariabele. Lineaire regressie voorspelt relaties tussen kenmerk X en doelvariabele y. Kun je de [doelvariabele](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) voor de diabetes-dataset vinden in de documentatie? Wat demonstreert deze dataset, gezien die doelvariabele?
+ ✅ Denk eens na over de relatie tussen de data en het regressiedoel. Lineaire regressie voorspelt relaties tussen kenmerk X en doelvariabele y. Kun je het [doel](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) voor de diabetes dataset in de documentatie vinden? Wat laat deze dataset zien, gezien dat doel?
-2. Selecteer vervolgens een deel van deze dataset om te plotten door de 3e kolom van de dataset te selecteren. Je kunt dit doen door de `:`-operator te gebruiken om alle rijen te selecteren en vervolgens de 3e kolom te selecteren met behulp van de index (2). Je kunt de gegevens ook opnieuw vormgeven tot een 2D-array - zoals vereist voor het plotten - door `reshape(n_rows, n_columns)` te gebruiken. Als een van de parameters -1 is, wordt de overeenkomstige dimensie automatisch berekend.
+2. Selecteer vervolgens een deel van deze dataset om te plotten door de 3e kolom van de dataset te kiezen. Je kunt dit doen door met het `:`-operator alle rijen te selecteren en dan de 3e kolom te selecteren met index (2). Je kunt de data ook herschikken naar een 2D-array, wat nodig is voor plotten, door `reshape(n_rows, n_columns)` te gebruiken. Als één van de parameters -1 is, wordt die dimensie automatisch berekend.
```python
X = X[:, 2]
X = X.reshape((-1,1))
```
- ✅ Print op elk moment de gegevens om de vorm ervan te controleren.
+ ✅ Print op elk moment de data om de vorm te controleren.
-3. Nu je gegevens klaar hebt om te plotten, kun je zien of een machine kan helpen een logische splitsing te bepalen tussen de cijfers in deze dataset. Om dit te doen, moet je zowel de gegevens (X) als de doelvariabele (y) splitsen in test- en trainingssets. Scikit-learn heeft een eenvoudige manier om dit te doen; je kunt je testgegevens op een bepaald punt splitsen.
+3. Nu je data klaar is om geplot te worden, kun je kijken of een machine kan helpen een logische scheiding te bepalen tussen de getallen in deze dataset. Om dit te doen, moet je zowel de data (X) als het doel (y) splitsen in test- en trainingsets. Scikit-learn heeft hier een eenvoudige manier voor; je kunt je testdata op een gegeven punt splitsen.
```python
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33)
```
-4. Nu ben je klaar om je model te trainen! Laad het lineaire regressiemodel en train het met je X- en y-trainingssets met behulp van `model.fit()`:
+4. Nu ben je klaar om je model te trainen! Laad het lineaire regressiemodel en train het met je X en y trainingssets via `model.fit()`:
```python
model = linear_model.LinearRegression()
model.fit(X_train, y_train)
```
- ✅ `model.fit()` is een functie die je vaak zult zien in ML-bibliotheken zoals TensorFlow.
+ ✅ `model.fit()` is een functie die je in veel ML-bibliotheken zoals TensorFlow zult zien
-5. Maak vervolgens een voorspelling met behulp van testgegevens, met behulp van de functie `predict()`. Dit zal worden gebruikt om de lijn te tekenen tussen de gegevensgroepen.
+5. Maak daarna een voorspelling met de testdata, met de functie `predict()`. Dit wordt gebruikt om de lijn te tekenen tussen de datagroepen
```python
y_pred = model.predict(X_test)
```
-6. Nu is het tijd om de gegevens in een plot te tonen. Matplotlib is een zeer handig hulpmiddel voor deze taak. Maak een scatterplot van alle X- en y-testgegevens en gebruik de voorspelling om een lijn te tekenen op de meest geschikte plaats, tussen de gegevensgroepen van het model.
+6. Nu is het tijd om de data te tonen in een grafiek. Matplotlib is een erg handig hulpmiddel hiervoor. Maak een spreidingsdiagram van alle X- en y-testdata, en gebruik de voorspelling om een lijn te tekenen op de meest geschikte plek, tussen de model-data-groepen.
```python
plt.scatter(X_test, y_test, color='black')
@@ -202,22 +203,24 @@ In een nieuwe codecel laad je de diabetes-dataset door `load_diabetes()` aan te
plt.show()
```
- 
-✅ Denk eens na over wat hier gebeurt. Een rechte lijn loopt door veel kleine datapunten, maar wat doet die precies? Kun je zien hoe je deze lijn zou moeten kunnen gebruiken om te voorspellen waar een nieuw, onbekend datapunt zou moeten passen in relatie tot de y-as van de plot? Probeer in woorden uit te leggen wat het praktische nut van dit model is.
+ 
+
+
+ ✅ Denk even na over wat hier gebeurt. Er loopt een rechte lijn door veel kleine datapunten, maar wat doet die lijn precies? Zie je hoe je deze lijn zou kunnen gebruiken om te voorspellen waar een nieuw, onbekend datapunt zou moeten passen in relatie tot de y-as van de plot? Probeer in woorden te vatten wat het praktische gebruik van dit model is.
-Gefeliciteerd, je hebt je eerste lineaire regressiemodel gebouwd, er een voorspelling mee gemaakt en deze weergegeven in een plot!
+Gefeliciteerd, je hebt je eerste lineaire regressiemodel gebouwd, een voorspelling ermee gemaakt, en deze weergegeven in een plot!
---
## 🚀Uitdaging
-Plot een andere variabele uit deze dataset. Tip: bewerk deze regel: `X = X[:,2]`. Gezien de target van deze dataset, wat kun je ontdekken over de progressie van diabetes als ziekte?
-## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ml/)
+Plot een andere variabele uit deze dataset. Tip: bewerk deze regel: `X = X[:,2]`. Gezien het doel van deze dataset, wat kun je ontdekken over de progressie van diabetes als ziekte?
+## [Quiz na de les](https://ff-quizzes.netlify.app/en/ml/)
## Review & Zelfstudie
-In deze tutorial heb je gewerkt met eenvoudige lineaire regressie, in plaats van univariate of multivariate lineaire regressie. Lees wat meer over de verschillen tussen deze methoden, of bekijk [deze video](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef).
+In deze tutorial werkte je met eenvoudige lineaire regressie, in plaats van univariate of meervoudige lineaire regressie. Lees wat over de verschillen tussen deze methoden, of bekijk [deze video](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef)
-Lees meer over het concept van regressie en denk na over wat voor soort vragen met deze techniek beantwoord kunnen worden. Volg [deze tutorial](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) om je begrip te verdiepen.
+Lees meer over het concept regressie en denk na over wat voor soort vragen met deze techniek beantwoord kunnen worden. Volg deze [tutorial](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) om je begrip te verdiepen.
## Opdracht
@@ -225,5 +228,7 @@ Lees meer over het concept van regressie en denk na over wat voor soort vragen m
---
-**Disclaimer**:
-Dit document is vertaald met behulp van de AI-vertalingsservice [Co-op Translator](https://github.com/Azure/co-op-translator). Hoewel we streven naar nauwkeurigheid, dient u zich ervan bewust te zijn dat geautomatiseerde vertalingen fouten of onnauwkeurigheden kunnen bevatten. Het originele document in zijn oorspronkelijke taal moet worden beschouwd als de gezaghebbende bron. Voor cruciale informatie wordt professionele menselijke vertaling aanbevolen. Wij zijn niet aansprakelijk voor eventuele misverstanden of verkeerde interpretaties die voortvloeien uit het gebruik van deze vertaling.
\ No newline at end of file
+
+**Disclaimer**:
+Dit document is vertaald met behulp van de AI vertaaldienst [Co-op Translator](https://github.com/Azure/co-op-translator). Hoewel we streven naar nauwkeurigheid, dient u er rekening mee te houden dat geautomatiseerde vertalingen fouten of onnauwkeurigheden kunnen bevatten. Het originele document in de oorspronkelijke taal moet worden beschouwd als de gezaghebbende bron. Voor kritieke informatie wordt professionele menselijke vertaling aanbevolen. Wij zijn niet aansprakelijk voor eventuele misverstanden of verkeerde interpretaties die voortvloeien uit het gebruik van deze vertaling.
+
\ No newline at end of file
diff --git a/translations/nl/2-Regression/2-Data/README.md b/translations/nl/2-Regression/2-Data/README.md
index be3391f49..66a8a0f20 100644
--- a/translations/nl/2-Regression/2-Data/README.md
+++ b/translations/nl/2-Regression/2-Data/README.md
@@ -1,62 +1,62 @@
# Bouw een regressiemodel met Scikit-learn: data voorbereiden en visualiseren
-
+
Infographic door [Dasani Madipalli](https://twitter.com/dasani_decoded)
-## [Quiz voorafgaand aan de les](https://ff-quizzes.netlify.app/en/ml/)
+## [Pre-college quiz](https://ff-quizzes.netlify.app/en/ml/)
-> ### [Deze les is beschikbaar in R!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
+> ### [Deze les is ook beschikbaar in R!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
-## Introductie
+## Inleiding
-Nu je beschikt over de tools die je nodig hebt om te beginnen met het bouwen van machine learning-modellen met Scikit-learn, ben je klaar om vragen te stellen over je data. Het is erg belangrijk om te leren hoe je de juiste vragen stelt om de mogelijkheden van je dataset optimaal te benutten.
+Nu je de tools hebt geïnstalleerd die je nodig hebt om te beginnen met machine learning modelbouw in Scikit-learn, ben je klaar om vragen te stellen aan je data. Terwijl je met data werkt en ML-oplossingen toepast, is het heel belangrijk om te weten hoe je de juiste vraag stelt om het potentieel van je dataset goed te benutten.
In deze les leer je:
-- Hoe je je data voorbereidt voor het bouwen van modellen.
+- Hoe je je data voorbereidt voor modelbouw.
- Hoe je Matplotlib gebruikt voor datavisualisatie.
+- Hoe je Seaborn gebruikt voor expressievere datavisualisatie.
-## De juiste vraag stellen over je data
+## Stel de juiste vraag aan je data
-De vraag die je wilt beantwoorden, bepaalt welk type ML-algoritme je zult gebruiken. De kwaliteit van het antwoord dat je terugkrijgt, hangt sterk af van de aard van je data.
+De vraag die je beantwoord wilt krijgen bepaalt welk type ML-algoritmen je zult gebruiken. En de kwaliteit van het antwoord dat je terugkrijgt hangt sterk af van de aard van je data.
-Bekijk de [data](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) die voor deze les is verstrekt. Je kunt dit .csv-bestand openen in VS Code. Een snelle blik laat meteen zien dat er lege velden zijn en een mix van tekst en numerieke data. Er is ook een vreemde kolom genaamd 'Package' waarin de data varieert tussen 'sacks', 'bins' en andere waarden. De data is eigenlijk een beetje rommelig.
+Bekijk eens de [data](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) die bij deze les hoort. Je kunt dit .csv-bestand openen in VS Code. Een snelle blik laat meteen zien dat er lege velden en een mix van tekst en numerieke gegevens zijn. Er is ook een vreemde kolom genaamd 'Package' waar de data een mix is van 'sacks', 'bins' en andere waarden. De data is eigenlijk een beetje rommelig.
-[](https://youtu.be/5qGjczWTrDQ "ML voor beginners - Hoe een dataset analyseren en opschonen")
+[](https://youtu.be/5qGjczWTrDQ "ML voor beginners - Hoe een dataset te analyseren en schoon te maken")
> 🎥 Klik op de afbeelding hierboven voor een korte video over het voorbereiden van de data voor deze les.
-Het is eigenlijk niet gebruikelijk om een dataset te krijgen die volledig klaar is om direct een ML-model mee te maken. In deze les leer je hoe je een ruwe dataset voorbereidt met standaard Python-bibliotheken. Je leert ook verschillende technieken om de data te visualiseren.
+Het is niet heel gebruikelijk dat je een dataset krijgt die direct klaar is voor gebruik om een ML-model van te maken. In deze les leer je hoe je een ruwe dataset kunt voorbereiden met standaard Python-bibliotheken. Je leert ook verschillende technieken om de data te visualiseren.
## Casestudy: 'de pompoenmarkt'
-In deze map vind je een .csv-bestand in de root `data`-map genaamd [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv), dat 1757 regels data bevat over de pompoenmarkt, gegroepeerd per stad. Dit is ruwe data afkomstig van de [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) van het Amerikaanse ministerie van Landbouw.
+In deze map vind je een .csv-bestand in de hoofdmap `data` genaamd [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) met 1757 regels data over de markt voor pompoenen, gegroepeerd per stad. Dit is ruwe data afkomstig van de [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) verspreid door het Amerikaanse Ministerie van Landbouw.
### Data voorbereiden
-Deze data is openbaar beschikbaar. Het kan worden gedownload in veel afzonderlijke bestanden, per stad, van de USDA-website. Om te voorkomen dat er te veel afzonderlijke bestanden zijn, hebben we alle stadsdata samengevoegd in één spreadsheet. We hebben de data dus al een beetje _voorbereid_. Laten we nu eens beter naar de data kijken.
+Deze data is publiek domein. Het kan per stad in veel losse bestanden van de USDA-website worden gedownload. Om niet te veel losse bestanden te hebben, hebben we alle staddata samengevoegd in één spreadsheet, daarmee hebben we de data dus al een beetje _voorbereid_. Laten we nu de data eens nader bekijken.
### De pompoendata - eerste conclusies
-Wat valt je op aan deze data? Je hebt al gezien dat er een mix is van tekst, cijfers, lege velden en vreemde waarden die je moet interpreteren.
-
-Welke vraag kun je stellen over deze data, met behulp van een regressietechniek? Wat dacht je van "Voorspel de prijs van een pompoen die te koop is in een bepaalde maand". Als je opnieuw naar de data kijkt, zijn er enkele wijzigingen die je moet aanbrengen om de datastructuur te creëren die nodig is voor deze taak.
+Wat valt je op aan deze data? Je hebt al gezien dat er een mix is van teksten, cijfers, lege plekken en vreemde waarden die je moet begrijpen.
+Welke vraag kun je aan deze data stellen met een regressietechniek? Wat dacht je van "Voorspel de prijs van een pompoen die te koop is in een bepaalde maand"? Als je nog eens naar de data kijkt, moet je enkele aanpassingen doen om de datastructuur geschikt te maken voor deze taak.
## Oefening - analyseer de pompoendata
-Laten we [Pandas](https://pandas.pydata.org/) gebruiken (de naam staat voor `Python Data Analysis`), een zeer handige tool voor het vormgeven van data, om deze pompoendata te analyseren en voor te bereiden.
+Laten we [Pandas](https://pandas.pydata.org/) gebruiken, (de naam staat voor `Python Data Analysis`), een handig hulpmiddel voor het vormgeven van data, om deze pompoendata te analyseren en voor te bereiden.
-### Eerst, controleer op ontbrekende datums
+### Controleer eerst op ontbrekende datums
-Je moet eerst stappen ondernemen om te controleren op ontbrekende datums:
+Je moet eerst stappen zetten om te controleren op ontbrekende datums:
-1. Converteer de datums naar een maandformaat (dit zijn Amerikaanse datums, dus het formaat is `MM/DD/YYYY`).
-2. Haal de maand uit de datum en plaats deze in een nieuwe kolom.
+1. Zet de datums om naar een maandformaat (dit zijn Amerikaanse datums, de notatie is `MM/DD/YYYY`).
+2. Haal de maand uit de datum en zet dit in een nieuwe kolom.
-Open het _notebook.ipynb_-bestand in Visual Studio Code en importeer de spreadsheet in een nieuwe Pandas-dataframe.
+Open het bestand _notebook.ipynb_ in Visual Studio Code en importeer de spreadsheet in een nieuwe Pandas dataframe.
-1. Gebruik de functie `head()` om de eerste vijf rijen te bekijken.
+1. Gebruik de `head()` functie om de eerste vijf rijen te bekijken.
```python
import pandas as pd
@@ -72,22 +72,22 @@ Open het _notebook.ipynb_-bestand in Visual Studio Code en importeer de spreadsh
pumpkins.isnull().sum()
```
- Er is ontbrekende data, maar misschien maakt dat niet uit voor de taak.
+ Er is data ontbreekt, maar misschien is dat niet erg voor de taak die je wilt doen.
-1. Om je dataframe gemakkelijker te maken om mee te werken, selecteer je alleen de kolommen die je nodig hebt, met behulp van de `loc`-functie. Deze functie haalt een groep rijen (eerste parameter) en kolommen (tweede parameter) uit de originele dataframe. De uitdrukking `:` hieronder betekent "alle rijen".
+1. Om het werken met je dataframe makkelijker te maken, selecteer alleen de kolommen die je nodig hebt, met de `loc` functie die uit de originele dataframe een groep rijen (als eerste parameter) en kolommen (als tweede parameter) haalt. In het voorbeeld hieronder betekent `:` "alle rijen".
```python
columns_to_select = ['Package', 'Low Price', 'High Price', 'Date']
pumpkins = pumpkins.loc[:, columns_to_select]
```
-### Vervolgens, bepaal de gemiddelde prijs van een pompoen
+### Bepaal vervolgens de gemiddelde prijs van een pompoen
-Denk na over hoe je de gemiddelde prijs van een pompoen in een bepaalde maand kunt bepalen. Welke kolommen zou je kiezen voor deze taak? Hint: je hebt 3 kolommen nodig.
+Denk na over hoe je de gemiddelde prijs van een pompoen in een bepaalde maand kunt bepalen. Welke kolommen heb je daarvoor nodig? Tip: je hebt er 3 nodig.
-Oplossing: neem het gemiddelde van de kolommen `Low Price` en `High Price` om de nieuwe kolom Price te vullen, en converteer de kolom Date zodat deze alleen de maand toont. Gelukkig is er volgens de bovenstaande controle geen ontbrekende data voor datums of prijzen.
+Oplossing: neem het gemiddelde van de kolommen `Low Price` en `High Price` om een nieuwe kolom Price te vullen, en zet de kolom Date om zodat alleen de maand staat. Gelukkig, zoals hierboven gecheckt, ontbreken er geen datums of prijzen.
-1. Om het gemiddelde te berekenen, voeg je de volgende code toe:
+1. Voeg deze code toe om het gemiddelde te berekenen:
```python
price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2
@@ -96,37 +96,37 @@ Oplossing: neem het gemiddelde van de kolommen `Low Price` en `High Price` om de
```
- ✅ Voel je vrij om data te printen die je wilt controleren met `print(month)`.
+ ✅ Voel je vrij om data te printen met `print(month)` om het te controleren.
-2. Kopieer nu je geconverteerde data naar een nieuwe Pandas-dataframe:
+2. Kopieer je geconverteerde data naar een nieuwe Pandas dataframe:
```python
new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price})
```
- Als je je dataframe print, zie je een schone, overzichtelijke dataset waarop je je nieuwe regressiemodel kunt bouwen.
+ Als je deze dataframe print, zie je een schone, nette dataset waarop je je regressiemodel kunt bouwen.
-### Maar wacht! Er is iets vreemds hier
+### Maar wacht! Hier is iets vreemds
-Als je naar de kolom `Package` kijkt, zie je dat pompoenen in veel verschillende configuraties worden verkocht. Sommige worden verkocht in '1 1/9 bushel'-maten, andere in '1/2 bushel'-maten, sommige per pompoen, sommige per pond, en sommige in grote dozen met verschillende breedtes.
+Als je kijkt naar de `Package` kolom, zie je dat pompoenen in allerlei soorten verpakkingen verkocht worden. Sommige worden verkocht in '1 1/9 bushel' maten, sommige in '1/2 bushel' maten, sommige per pompoen, sommige per pond, en sommige in grote dozen met verschillende breedtes.
-> Pompoenen lijken erg moeilijk consistent te wegen
+> Pompoenen lijken erg moeilijk consistent te wegen.
-Als je in de originele data duikt, is het interessant dat alles met `Unit of Sale` gelijk aan 'EACH' of 'PER BIN' ook een `Package`-type heeft per inch, per bin, of 'each'. Pompoenen lijken erg moeilijk consistent te wegen, dus laten we ze filteren door alleen pompoenen te selecteren met de string 'bushel' in hun `Package`-kolom.
+Als je dieper in de originele data duikt, is het interessant dat alles met `Unit of Sale` 'EACH' of 'PER BIN' ook het `Package` type per inch, per bin, of 'each' heeft. Pompoenen zijn kennelijk erg lastig om consistent te wegen, dus we gaan ze filteren door alleen pompoenen te selecteren met de string 'bushel' in de `Package` kolom.
-1. Voeg een filter toe bovenaan het bestand, onder de initiële .csv-import:
+1. Voeg bovenaan het bestand onder de CSV-import een filter toe:
```python
pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]
```
- Als je de data nu print, zie je dat je alleen de ongeveer 415 rijen data krijgt die pompoenen per bushel bevatten.
+ Als je nu de data print, zie je dat je nu ongeveer 415 regels met pompoenen per bushel krijgt.
-### Maar wacht! Er is nog iets dat je moet doen
+### Maar wacht! Er is nog iets te doen
-Heb je gemerkt dat de bushelhoeveelheid varieert per rij? Je moet de prijzen normaliseren zodat je de prijs per bushel toont. Doe wat wiskunde om dit te standaardiseren.
+Heb je gemerkt dat het aantal bushel per regel verschilt? Je moet de prijzen normaliseren zodat je de prijs per bushel laat zien; doe daarom wat rekenwerk om dit te standaardiseren.
-1. Voeg deze regels toe na het blok dat de nieuwe_pumpkins dataframe maakt:
+1. Voeg deze regels toe na de code die de new_pumpkins dataframe maakt:
```python
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9)
@@ -134,38 +134,38 @@ Heb je gemerkt dat de bushelhoeveelheid varieert per rij? Je moet de prijzen nor
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2)
```
-✅ Volgens [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) hangt het gewicht van een bushel af van het type product, omdat het een volumemeting is. "Een bushel tomaten, bijvoorbeeld, zou 56 pond moeten wegen... Bladeren en groenten nemen meer ruimte in met minder gewicht, dus een bushel spinazie weegt slechts 20 pond." Het is allemaal behoorlijk ingewikkeld! Laten we ons niet druk maken over het maken van een bushel-naar-pond-conversie, en in plaats daarvan prijzen per bushel. Al deze studie van bushels pompoenen laat echter zien hoe belangrijk het is om de aard van je data te begrijpen!
+✅ Volgens [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) hangt het gewicht van een bushel af van het soort product, want het is een volumemaat. "Een bushel tomaten weegt bijvoorbeeld 56 pond... Bladeren en groente nemen meer ruimte in, maar wegen minder, dus een bushel spinazie weegt slechts 20 pond." Het is allemaal vrij ingewikkeld! We doen geen poging een bushel naar pond conversie te maken, maar prijzen puur per bushel. Deze studie over bushels pompoenen toont wel aan hoe belangrijk het is om de aard van je data goed te begrijpen!
-Nu kun je de prijs per eenheid analyseren op basis van hun bushelmeting. Als je de data nog een keer print, zie je hoe het is gestandaardiseerd.
+Nu kun je de prijs per eenheid analyseren gebaseerd op hun bushel-maat. Als je de data nogmaals print, zie je dat het gestandaardiseerd is.
-✅ Heb je gemerkt dat pompoenen die per halve bushel worden verkocht erg duur zijn? Kun je achterhalen waarom? Hint: kleine pompoenen zijn veel duurder dan grote, waarschijnlijk omdat er veel meer van zijn per bushel, gezien de ongebruikte ruimte die wordt ingenomen door één grote holle taartpompoen.
+✅ Heb je gemerkt dat pompoenen per half bushel erg duur zijn? Kun je bedenken waarom? Tip: kleine pompoenen zijn veel prijziger dan grote, waarschijnlijk omdat er meer kleine pompoenen in een bushel passen, gezien de ongebruikte ruimte die één grote holle pompoen inneemt.
## Visualisatiestrategieën
-Een deel van de rol van een datawetenschapper is om de kwaliteit en aard van de data waarmee ze werken te demonstreren. Om dit te doen, maken ze vaak interessante visualisaties, zoals grafieken, diagrammen en plots, die verschillende aspecten van de data laten zien. Op deze manier kunnen ze visueel relaties en hiaten tonen die anders moeilijk te ontdekken zijn.
+Een deel van het werk van een data scientist is het aantonen van de kwaliteit en aard van de data waarmee ze werken. Daartoe maken ze vaak interessante visualisaties, ofwel grafieken, diagrammen en charts die verschillende aspecten van de data laten zien. Zo kunnen ze visueel relaties en gaten tonen die anders moeilijk te ontdekken zijn.
[](https://youtu.be/SbUkxH6IJo0 "ML voor beginners - Hoe data visualiseren met Matplotlib")
-> 🎥 Klik op de afbeelding hierboven voor een korte video over het visualiseren van de data voor deze les.
+> 🎥 Klik op de afbeelding hierboven voor een korte video over het visualiseren van data voor deze les.
-Visualisaties kunnen ook helpen bij het bepalen van de meest geschikte machine learning-techniek voor de data. Een scatterplot die een lijn lijkt te volgen, geeft bijvoorbeeld aan dat de data een goede kandidaat is voor een lineaire regressieoefening.
+Visualisaties kunnen ook helpen bepalen welke machine learning techniek het best bij de data past. Een scatterplot die een lijn volgt, bijvoorbeeld, geeft aan dat de data goed geschikt is voor een lineaire regressie.
-Een datavisualisatiebibliotheek die goed werkt in Jupyter-notebooks is [Matplotlib](https://matplotlib.org/) (die je ook in de vorige les hebt gezien).
+Een datavisualisatiebibliotheek die goed werkt in Jupyter notebooks is [Matplotlib](https://matplotlib.org/) (die je ook al in de vorige les zag).
-> Krijg meer ervaring met datavisualisatie in [deze tutorials](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott).
+> Verwerf meer ervaring met datavisualisatie via [deze tutorials](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott).
-## Oefening - experimenteren met Matplotlib
+## Oefening - experimenteer met Matplotlib
-Probeer enkele basisplots te maken om de nieuwe dataframe die je net hebt gemaakt weer te geven. Wat zou een eenvoudige lijnplot laten zien?
+Probeer eenvoudige grafieken te maken om de nieuwe dataframe die je zojuist hebt gemaakt weer te geven. Wat zou een basis lijngrafiek laten zien?
-1. Importeer Matplotlib bovenaan het bestand, onder de Pandas-import:
+1. Importeer Matplotlib bovenaan het bestand, onder de Pandas import:
```python
import matplotlib.pyplot as plt
```
1. Voer het hele notebook opnieuw uit om te verversen.
-1. Voeg onderaan het notebook een cel toe om de data als een boxplot weer te geven:
+1. Voeg onderaan het notebook een cel toe om de data als boxplot te maken:
```python
price = new_pumpkins.Price
@@ -174,44 +174,121 @@ Probeer enkele basisplots te maken om de nieuwe dataframe die je net hebt gemaak
plt.show()
```
- 
+ 
- Is dit een nuttige plot? Verrast iets je eraan?
+ Is dit een nuttige grafiek? Verrast je iets eraan?
- Het is niet bijzonder nuttig, omdat het alleen je data als een spreiding van punten in een bepaalde maand weergeeft.
+ Het is niet bijzonder nuttig, want het toont alleen je data verspreid in de maanden.
### Maak het nuttig
-Om grafieken nuttige data te laten weergeven, moet je de data meestal op een bepaalde manier groeperen. Laten we proberen een plot te maken waarbij de y-as de maanden toont en de data de verdeling van de data laat zien.
+Om inzichtelijke grafieken te krijgen, moet je meestal de gegevens groeperen. Laten we proberen een grafiek te maken waarbij de y-as de maanden laat zien, en de data de verdeling ervan toont.
-1. Voeg een cel toe om een gegroepeerde staafdiagram te maken:
+1. Voeg een cel toe om een gegroepeerde staafgrafiek te maken:
```python
new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar')
plt.ylabel("Pumpkin Price")
```
- 
+ 
+
+ Dit is een nuttigere datavisualisatie! Het lijkt erop dat de hoogste prijs voor pompoenen optreedt in september en oktober. Komt dit overeen met je verwachting? Waarom wel of niet?
+
+## Oefening - experimenteer met Seaborn
+
+Matplotlib is krachtig, maar het kan veel code vragen om een gepolijste grafiek te maken. [Seaborn](https://seaborn.pydata.org/) is een bibliotheek gebouwd _bovenop_ Matplotlib, ontworpen voor statistische datavisualisatie. Het werkt direct met Pandas dataframes, hanteert aantrekkelijke standaardstijlen en maakt het mogelijk informatieve grafieken met veel minder code te maken. Omdat Seaborn Matplotlib-objecten teruggeeft, kun je nog steeds alles wat je van Matplotlib weet gebruiken om het resultaat aan te passen.
+
+> Als je Seaborn nog niet geïnstalleerd hebt, installeer het dan met `pip install seaborn`.
+
+1. Importeer Seaborn bovenaan het notebook, onder de andere imports. Het wordt conventioneel geïmporteerd als `sns`:
+
+ ```python
+ import seaborn as sns
+ ```
+
+### Scatterplots om relaties te tonen
+
+Een groot deel van het verkennen van data vóór het bouwen van een model is het zoeken naar _relaties_ tussen variabelen. Een [scatterplot](https://nl.wikipedia.org/wiki/Scatterplot_(grafiek)) is daarvoor een van de beste hulpmiddelen: als de punten op een lijn lijken te vallen, zijn de twee variabelen mogelijk gecorreleerd, wat een goed teken is dat een lineair regressiemodel kan werken.
+
+1. Maak de prijs-tot-maand scatterplot opnieuw, dit keer met Seaborns [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) (relationele plot), die direct met je dataframekolommen werkt:
+
+ ```python
+ sns.relplot(x="Price", y="Month", data=new_pumpkins)
+ ```
+
+ 
+
+ Let op hoe je de _kolomnamen_ en de dataframe doorgeeft, en Seaborn regelt automatisch de aslabels.
+
+2. Je kunt overschakelen naar een lijngrafiek door `kind="line"` door te geven. Seaborn tekent zelfs een schaduwband die het betrouwbaarheidsinterval rond de lijn toont:
+
+ ```python
+ sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins)
+ ```
+
+ 
+
+ Deze data is vrij ruisend, dus een lijngrafiek is hier niet de duidelijkste keuze — maar het laat zien hoe makkelijk je in Seaborn van grafiektype kunt wisselen.
+
+### Staafgrafieken om verdelingen te tonen
+
+
+Eerder groepeerde je de gegevens handmatig om een staafdiagram te maken met Matplotlib. Seaborns [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) (categorische plot) kan de groepering en aggregatie voor je doen. Standaard toont `kind="bar"` het gemiddelde van elke categorie samen met een zwarte lijn die het betrouwbaarheidsinterval aangeeft.
+
+1. Maak een staafdiagram van de gemiddelde prijs per maand:
+
+ ```python
+ sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar")
+ ```
+
+ 
+
+ Dit bevestigt wat je al zag met Matplotlib — prijzen pieken rond september en oktober — maar Seaborn visualiseert ook hoeveel de prijs _varieert_ binnen elke maand.
+
+### Heatmaps om correlaties te tonen
+
+Scatterplots vergelijken telkens twee variabelen. Wanneer je meerdere numerieke kolommen hebt, laat een [heatmap](https://en.wikipedia.org/wiki/Heat_map) je de sterkte van de relatie tussen _elk_ paar kolommen tegelijk zien. Dit is een gebruikelijke manier om te zien welke kenmerken het meest gecorreleerd zijn voordat je kiest wat je in een model stopt (en hetzelfde soort grafiek wordt later gebruikt om verwarringsmatrices in classificatie weer te geven).
+
+1. Bouw een correlatiematrix met Pandas en teken deze daarna met Seaborns [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html). De optie `annot=True` toont de correlatiewaarden in elke cel:
+
+ ```python
+ correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()
+ sns.heatmap(correlations, annot=True, cmap="coolwarm")
+ ```
+
+ 
+
+ Waarden dichtbij `1` (of `-1`) betekenen dat de kolommen sterk _lineair_ gecorreleerd zijn. Merk op hoe `Low Price` en `High Price` bijna perfect gecorreleerd zijn. `Month` daarentegen toont slechts een zwakke lineaire correlatie met de prijs — ook al onthulde het staafdiagram hierboven een duidelijke seizoenspiek in september en oktober. Dat is een belangrijke les: de correlatiecoëfficiënt meet alleen _rechte-lijn_ relaties, dus kan seizoensgebonden of anderszins niet-lineaire patronen missen. ✅ Waarom is het nuttig om zowel een heatmap *als* grafieken zoals het staafdiagram te bekijken voordat je beslist welke kolommen je gebruikt?
+
+### Matplotlib of Seaborn?
+
+Beide bibliotheken zijn de moeite waard om te kennen:
+
+- **Matplotlib** geeft je fijne controle over elk element van een grafiek en is de basis waar bijna elke andere Python-plotbibliotheek op bouwt.
+- **Seaborn** biedt hoger-niveau functies en aantrekkelijke standaardinstellingen voor statistische grafieken, werkt rechtstreeks met dataframes, en is vaak sneller voor verkennende data-analyse.
- Dit is een nuttigere datavisualisatie! Het lijkt erop dat de hoogste prijs voor pompoenen in september en oktober voorkomt. Voldoet dat aan je verwachting? Waarom wel of niet?
+Een gangbare werkwijze is om Seaborn te gebruiken om snel je data te verkennen en daarna naar Matplotlib te schakelen als je de details moet aanpassen.
---
## 🚀Uitdaging
-Verken de verschillende soorten visualisaties die Matplotlib biedt. Welke soorten zijn het meest geschikt voor regressieproblemen?
+Verken de verschillende soorten visualisaties die Matplotlib en Seaborn bieden. Welke types zijn het meest geschikt voor regressieproblemen?
-## [Quiz na de les](https://ff-quizzes.netlify.app/en/ml/)
+## [Quiz na de lezing](https://ff-quizzes.netlify.app/en/ml/)
## Review & Zelfstudie
-Bekijk de vele manieren om data te visualiseren. Maak een lijst van de verschillende beschikbare bibliotheken en noteer welke het beste zijn voor bepaalde soorten taken, bijvoorbeeld 2D-visualisaties versus 3D-visualisaties. Wat ontdek je?
+Bekijk de vele manieren om data te visualiseren. Maak een lijst van de beschikbare bibliotheken en noteer welke het beste zijn voor bepaalde soorten taken, bijvoorbeeld 2D-visualisaties versus 3D-visualisaties. Wat ontdek je?
## Opdracht
-[Visualisatie verkennen](assignment.md)
+[Verkenning van visualisatie](assignment.md)
---
-**Disclaimer**:
-Dit document is vertaald met behulp van de AI-vertalingsservice [Co-op Translator](https://github.com/Azure/co-op-translator). Hoewel we streven naar nauwkeurigheid, dient u zich ervan bewust te zijn dat geautomatiseerde vertalingen fouten of onnauwkeurigheden kunnen bevatten. Het originele document in zijn oorspronkelijke taal moet worden beschouwd als de gezaghebbende bron. Voor cruciale informatie wordt professionele menselijke vertaling aanbevolen. Wij zijn niet aansprakelijk voor misverstanden of verkeerde interpretaties die voortvloeien uit het gebruik van deze vertaling.
\ No newline at end of file
+
+**Disclaimer**:
+Dit document is vertaald met behulp van de AI vertaaldienst [Co-op Translator](https://github.com/Azure/co-op-translator). Hoewel we streven naar nauwkeurigheid, dient u er rekening mee te houden dat geautomatiseerde vertalingen fouten of onnauwkeurigheden kunnen bevatten. Het originele document in de oorspronkelijke taal moet worden beschouwd als de gezaghebbende bron. Voor kritieke informatie wordt professionele menselijke vertaling aanbevolen. Wij zijn niet aansprakelijk voor eventuele misverstanden of verkeerde interpretaties die voortvloeien uit het gebruik van deze vertaling.
+
\ No newline at end of file
diff --git a/translations/nl/2-Regression/2-Data/solution/notebook.ipynb b/translations/nl/2-Regression/2-Data/solution/notebook.ipynb
index ab688c42d..e160f3221 100644
--- a/translations/nl/2-Regression/2-Data/solution/notebook.ipynb
+++ b/translations/nl/2-Regression/2-Data/solution/notebook.ipynb
@@ -3,7 +3,9 @@
{
"cell_type": "markdown",
"metadata": {},
- "source": []
+ "source": [
+ "## Lineaire regressie voor pompoenen - Les 2\n"
+ ]
},
{
"cell_type": "code",
@@ -220,6 +222,7 @@
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
"pumpkins = pd.read_csv('../../data/US-pumpkins.csv')\n",
"\n",
"pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]\n",
@@ -383,18 +386,78 @@
"plt.ylabel(\"Pumpkin Price\")"
]
},
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Visualiseren met Seaborn\n",
+ "\n",
+ "[Seaborn](https://seaborn.pydata.org/) is gebouwd bovenop Matplotlib en werkt direct met dataframes, wat het snel maakt om aantrekkelijke statistische grafieken te maken met zeer weinig code.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Spreidingsdiagrammen om relaties te tonen\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", kind=\"line\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Staafdiagrammen om verdelingen te tonen\n"
+ ]
+ },
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
- "source": []
+ "source": [
+ "sns.catplot(x=\"Month\", y=\"Price\", data=new_pumpkins, kind=\"bar\")"
+ ]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "\n---\n\n**Disclaimer**: \nDit document is vertaald met behulp van de AI-vertalingsservice [Co-op Translator](https://github.com/Azure/co-op-translator). Hoewel we streven naar nauwkeurigheid, willen we u erop wijzen dat geautomatiseerde vertalingen fouten of onnauwkeurigheden kunnen bevatten. Het originele document in de oorspronkelijke taal moet worden beschouwd als de gezaghebbende bron. Voor kritieke informatie wordt professionele menselijke vertaling aanbevolen. Wij zijn niet aansprakelijk voor misverstanden of verkeerde interpretaties die voortvloeien uit het gebruik van deze vertaling.\n"
+ "### Heatmaps om correlaties te tonen\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()\n",
+ "sns.heatmap(correlations, annot=True, cmap=\"coolwarm\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "---\n\n\n**Disclaimer**:\nDit document is vertaald met behulp van de AI vertaaldienst [Co-op Translator](https://github.com/Azure/co-op-translator). Hoewel we streven naar nauwkeurigheid, dient u er rekening mee te houden dat geautomatiseerde vertalingen fouten of onnauwkeurigheden kunnen bevatten. Het originele document in de oorspronkelijke taal moet worden beschouwd als de gezaghebbende bron. Voor kritieke informatie wordt professionele menselijke vertaling aanbevolen. Wij zijn niet aansprakelijk voor eventuele misverstanden of verkeerde interpretaties die voortvloeien uit het gebruik van deze vertaling.\n\n"
]
}
],
@@ -424,13 +487,7 @@
"hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d"
}
},
- "orig_nbformat": 2,
- "coopTranslator": {
- "original_hash": "95726f0b8283628d5356a4f8eb8b4b76",
- "translation_date": "2025-09-06T11:53:18+00:00",
- "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
- "language_code": "nl"
- }
+ "orig_nbformat": 2
},
"nbformat": 4,
"nbformat_minor": 2
diff --git a/translations/nl/8-Reinforcement/1-QLearning/README.md b/translations/nl/8-Reinforcement/1-QLearning/README.md
index 706089b4b..eb1dcb84e 100644
--- a/translations/nl/8-Reinforcement/1-QLearning/README.md
+++ b/translations/nl/8-Reinforcement/1-QLearning/README.md
@@ -1,47 +1,47 @@
# Introductie tot Reinforcement Learning en Q-Learning
-
+
> Sketchnote door [Tomomi Imura](https://www.twitter.com/girlie_mac)
-Reinforcement learning draait om drie belangrijke concepten: de agent, enkele toestanden, en een set acties per toestand. Door een actie uit te voeren in een bepaalde toestand, krijgt de agent een beloning. Stel je opnieuw het computerspel Super Mario voor. Jij bent Mario, je bevindt je in een level van het spel, naast een klifrand. Boven je hangt een munt. Jij als Mario, in een level, op een specifieke positie ... dat is jouw toestand. Eén stap naar rechts zetten (een actie) brengt je over de rand, wat je een lage numerieke score oplevert. Maar als je op de springknop drukt, scoor je een punt en blijf je in leven. Dat is een positieve uitkomst en zou je een positieve numerieke score moeten opleveren.
+Reinforcement learning omvat drie belangrijke concepten: de agent, enkele toestanden, en een set acties per toestand. Door een actie uit te voeren in een bepaalde toestand, krijgt de agent een beloning. Stel je opnieuw het computerspel Super Mario voor. Jij bent Mario, je bevindt je in een spellevel, staand naast een afgrond. Boven je is een munt. Jij bent Mario, in een spellevel, op een specifieke positie ... dat is jouw toestand. Een stap naar rechts zetten (een actie) zou je over de rand doen vallen, en dat zou je een lage numerieke score geven. Maar als je op de springknop drukt, scoor je een punt en blijf je in leven. Dat is een positieve uitkomst en zou je een positieve numerieke score moeten opleveren.
-Met behulp van reinforcement learning en een simulator (het spel) kun je leren hoe je het spel speelt om de beloning te maximaliseren, namelijk in leven blijven en zoveel mogelijk punten scoren.
+Door gebruik te maken van reinforcement learning en een simulator (het spel), kun je leren hoe je het spel speelt om de beloning te maximaliseren, namelijk in leven blijven en zoveel mogelijk punten scoren.
-[](https://www.youtube.com/watch?v=lDq_en8RNOo)
+[](https://www.youtube.com/watch?v=lDq_en8RNOo)
-> 🎥 Klik op de afbeelding hierboven om Dmitry te horen praten over Reinforcement Learning
+> 🎥 Klik op de afbeelding hierboven om Dmitry over Reinforcement Learning te horen praten
-## [Pre-lecture quiz](https://ff-quizzes.netlify.app/en/ml/)
+## [Pre-college quiz](https://ff-quizzes.netlify.app/en/ml/)
## Vereisten en Setup
-In deze les gaan we experimenteren met wat code in Python. Je moet in staat zijn om de Jupyter Notebook-code uit deze les uit te voeren, ofwel op je computer of ergens in de cloud.
+In deze les gaan we experimenteren met code in Python. Je zou in staat moeten zijn om de Jupyter Notebook-code van deze les uit te voeren, hetzij op je computer, hetzij ergens in de cloud.
-Je kunt [het lesnotebook](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) openen en door deze les lopen om het op te bouwen.
+Je kunt [de lesnotebook openen](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) en deze les doorlopen om te bouwen.
-> **Opmerking:** Als je deze code vanuit de cloud opent, moet je ook het bestand [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) ophalen, dat wordt gebruikt in de notebook-code. Voeg het toe aan dezelfde map als het notebook.
+> **Opmerking:** Als je deze code vanuit de cloud opent, moet je ook het bestand [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) ophalen, dat in de notebookcode wordt gebruikt. Voeg het toe aan dezelfde map als de notebook.
## Introductie
-In deze les verkennen we de wereld van **[Peter en de Wolf](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)**, geïnspireerd door een muzikaal sprookje van de Russische componist [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev). We gebruiken **Reinforcement Learning** om Peter zijn omgeving te laten verkennen, smakelijke appels te verzamelen en de wolf te vermijden.
+In deze les verkennen we de wereld van **[Peter en de Wolf](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)**, geïnspireerd door een muzikaal sprookje van een Russische componist, [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev). We zullen **Reinforcement Learning** gebruiken om Peter zijn omgeving te laten verkennen, smakelijke appels te verzamelen en de wolf te vermijden.
-**Reinforcement Learning** (RL) is een leertechniek waarmee we het optimale gedrag van een **agent** in een bepaalde **omgeving** kunnen leren door veel experimenten uit te voeren. Een agent in deze omgeving moet een **doel** hebben, gedefinieerd door een **beloningsfunctie**.
+**Reinforcement Learning** (RL) is een leertechniek die ons in staat stelt optimaal gedrag van een **agent** in een bepaalde **omgeving** te leren door veel experimenten uit te voeren. Een agent in deze omgeving zou een **doel** moeten hebben, gedefinieerd door een **beloningsfunctie**.
## De omgeving
-Voor de eenvoud beschouwen we Peters wereld als een vierkant bord van grootte `breedte` x `hoogte`, zoals dit:
+Voor de eenvoud nemen we aan dat de wereld van Peter een vierkant bord is van grootte `breedte` x `hoogte`, zoals dit:
-
+
-Elke cel op dit bord kan zijn:
+Elke cel in dit bord kan zijn:
* **grond**, waarop Peter en andere wezens kunnen lopen.
* **water**, waarop je uiteraard niet kunt lopen.
-* een **boom** of **gras**, een plek waar je kunt uitrusten.
-* een **appel**, iets wat Peter graag zou vinden om zichzelf te voeden.
+* een **boom** of **gras**, een plek waar je kunt rusten.
+* een **appel**, die iets vertegenwoordigt dat Peter graag vindt om zichzelf te voeden.
* een **wolf**, die gevaarlijk is en vermeden moet worden.
-Er is een apart Python-module, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), die de code bevat om met deze omgeving te werken. Omdat deze code niet belangrijk is voor het begrijpen van onze concepten, importeren we de module en gebruiken we deze om het voorbeeldbord te maken (codeblok 1):
+Er is een aparte Python-module, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), die de code bevat om met deze omgeving te werken. Omdat deze code niet belangrijk is voor het begrijpen van onze concepten, importeren we de module en gebruiken deze om het voorbeeldbord te maken (codeblok 1):
```python
from rlboard import *
@@ -52,63 +52,63 @@ m.randomize(seed=13)
m.plot()
```
-Deze code zou een afbeelding van de omgeving moeten afdrukken die lijkt op de bovenstaande.
+Deze code zou een afbeelding van de omgeving moeten printen die lijkt op de bovenstaande.
## Acties en beleid
-In ons voorbeeld is Peters doel om een appel te vinden, terwijl hij de wolf en andere obstakels vermijdt. Om dit te doen, kan hij in principe rondlopen totdat hij een appel vindt.
+In ons voorbeeld zou Peters doel zijn om een appel te vinden, terwijl hij de wolf en andere obstakels vermijdt. Hiervoor kan hij in principe rondlopen totdat hij een appel vindt.
-Daarom kan hij op elke positie kiezen uit een van de volgende acties: omhoog, omlaag, links en rechts.
+Daarom kan hij op elke positie kiezen tussen een van de volgende acties: omhoog, omlaag, links en rechts.
-We definiëren die acties als een dictionary en koppelen ze aan paren van bijbehorende coördinatenwijzigingen. Bijvoorbeeld, naar rechts bewegen (`R`) zou overeenkomen met een paar `(1,0)`. (codeblok 2):
+We definiëren deze acties als een woordenboek en koppelen ze aan paren van bijbehorende coördinatenveranderingen. Bijvoorbeeld, naar rechts bewegen (`R`) komt overeen met het paar `(1,0)`. (codeblok 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()) }
```
-Samenvattend zijn de strategie en het doel van dit scenario als volgt:
+Samengevat zijn de strategie en het doel van dit scenario als volgt:
-- **De strategie**, van onze agent (Peter) wordt gedefinieerd door een zogenaamde **policy**. Een policy is een functie die de actie retourneert in een bepaalde toestand. In ons geval wordt de toestand van het probleem weergegeven door het bord, inclusief de huidige positie van de speler.
+- **De strategie**, van onze agent (Peter) wordt gedefinieerd door een zogenaamde **policy**. Een policy is een functie die de actie retourneert bij een gegeven toestand. In ons geval wordt de toestand van het probleem gerepresenteerd door het bord, inclusief de huidige positie van de speler.
-- **Het doel**, van reinforcement learning is uiteindelijk een goed beleid te leren dat ons in staat stelt het probleem efficiënt op te lossen. Als basislijn beschouwen we echter het eenvoudigste beleid, genaamd **random walk**.
+- **Het doel** van reinforcement learning is uiteindelijk een goede policy te leren die ons in staat stelt het probleem efficiënt op te lossen. Als uitgangspunt nemen we de eenvoudigste policy, genaamd **random walk**.
## Random walk
-Laten we eerst ons probleem oplossen door een random walk-strategie te implementeren. Bij random walk kiezen we willekeurig de volgende actie uit de toegestane acties, totdat we de appel bereiken (codeblok 3).
+Laten we ons probleem eerst oplossen door een random walk strategie te implementeren. Bij random walk kiezen we willekeurig de volgende actie uit de toegestane acties, totdat we de appel bereiken (codeblok 3).
-1. Implementeer de random walk met de onderstaande code:
+1. Implementeer de random walk met onderstaande code:
```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
+ n = 0 # aantal stappen
+ # stel beginpositie in
if start_position:
m.human = start_position
else:
m.random_start()
while True:
if m.at() == Board.Cell.apple:
- return n # success!
+ return n # succes!
if m.at() in [Board.Cell.wolf, Board.Cell.water]:
- return -1 # eaten by wolf or drowned
+ return -1 # opgegeten door wolf of verdronken
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
+ m.move(a) # voer de daadwerkelijke beweging uit
break
n+=1
walk(m,random_policy)
```
- De oproep naar `walk` zou de lengte van het bijbehorende pad moeten retourneren, wat kan variëren van de ene run tot de andere.
+ De aanroep naar `walk` zou de lengte van het bijbehorende pad moeten teruggeven, wat per uitvoering kan variëren.
-1. Voer het walk-experiment een aantal keren uit (bijvoorbeeld 100) en druk de resulterende statistieken af (codeblok 4):
+1. Voer het loopexperiment een aantal keer uit (zeg 100), en print de resulterende statistieken (codeblok 4):
```python
def print_statistics(policy):
@@ -125,7 +125,7 @@ Laten we eerst ons probleem oplossen door een random walk-strategie te implement
print_statistics(random_policy)
```
- Merk op dat de gemiddelde lengte van een pad ongeveer 30-40 stappen is, wat behoorlijk veel is, gezien het feit dat de gemiddelde afstand tot de dichtstbijzijnde appel ongeveer 5-6 stappen is.
+ Merk op dat de gemiddelde lengte van een pad rond de 30-40 stappen ligt, wat vrij veel is, gezien het feit dat de gemiddelde afstand naar de dichtstbijzijnde appel ongeveer 5-6 stappen is.
Je kunt ook zien hoe Peters beweging eruitziet tijdens de random walk:
@@ -133,9 +133,9 @@ Laten we eerst ons probleem oplossen door een random walk-strategie te implement
## Beloningsfunctie
-Om ons beleid intelligenter te maken, moeten we begrijpen welke bewegingen "beter" zijn dan andere. Om dit te doen, moeten we ons doel definiëren.
+Om onze policy intelligenter te maken, moeten we begrijpen welke zetten "beter" zijn dan andere. Hiervoor moeten we ons doel definiëren.
-Het doel kan worden gedefinieerd in termen van een **beloningsfunctie**, die een scorewaarde retourneert voor elke toestand. Hoe hoger het getal, hoe beter de beloningsfunctie. (codeblok 5)
+Het doel kan worden gedefinieerd in termen van een **beloningsfunctie**, die voor elke toestand een scorewaarde teruggeeft. Hoe hoger het getal, hoe beter de beloningsfunctie. (codeblok 5)
```python
move_reward = -0.1
@@ -154,39 +154,115 @@ def reward(m,pos=None):
return move_reward
```
-Een interessant aspect van beloningsfuncties is dat in de meeste gevallen *we alleen een substantiële beloning krijgen aan het einde van het spel*. Dit betekent dat ons algoritme op de een of andere manier "goede" stappen moet onthouden die leiden tot een positieve beloning aan het einde, en hun belang moet vergroten. Evenzo moeten alle bewegingen die tot slechte resultaten leiden worden ontmoedigd.
+Een interessant aspect van beloningsfuncties is dat in de meeste gevallen *we slechts een substantiële beloning krijgen aan het einde van het spel*. Dit betekent dat ons algoritme op de een of andere manier "goede" stappen die leiden tot een positieve beloning aan het einde moet onthouden en hun belang moet vergroten. Op dezelfde manier moeten alle zetten die tot slechte resultaten leiden worden ontmoedigd.
## Q-Learning
-Een algoritme dat we hier zullen bespreken, heet **Q-Learning**. In dit algoritme wordt het beleid gedefinieerd door een functie (of een datastructuur) genaamd een **Q-Table**. Het registreert de "kwaliteit" van elke actie in een bepaalde toestand.
+Een algoritme dat we hier zullen bespreken heet **Q-Learning**. Hierbij wordt de policy gedefinieerd door een functie (of datastructuur) genaamd een **Q-Table**. Deze registreert de "goede" waarde van elke actie in een gegeven toestand.
-Het wordt een Q-Table genoemd omdat het vaak handig is om het weer te geven als een tabel of een multidimensionale array. Omdat ons bord afmetingen heeft van `breedte` x `hoogte`, kunnen we de Q-Table weergeven met behulp van een numpy-array met vorm `breedte` x `hoogte` x `len(actions)`: (codeblok 6)
+Het wordt Q-Table genoemd omdat het vaak handig is om het te representeren als een tabel, of een multidimensionale array. Omdat ons bord dimensies `breedte` x `hoogte` heeft, kunnen we de Q-Table representeren met een numpy array met vorm `breedte` x `hoogte` x `len(actions)`: (codeblok 6)
```python
Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions)
```
-Merk op dat we alle waarden van de Q-Table initialiseren met een gelijke waarde, in ons geval - 0.25. Dit komt overeen met het "random walk"-beleid, omdat alle bewegingen in elke toestand even goed zijn. We kunnen de Q-Table doorgeven aan de `plot`-functie om de tabel op het bord te visualiseren: `m.plot(Q)`.
+Merk op dat we alle waarden van de Q-Table initialiseren met een gelijke waarde, in ons geval - 0.25. Dit komt overeen met de "random walk" policy, omdat alle zetten in elke toestand even goed zijn. We kunnen de Q-Table doorgeven aan de functie `plot` om de tabel op het bord te visualiseren: `m.plot(Q)`.
-
+
-In het midden van elke cel staat een "pijl" die de voorkeursrichting van beweging aangeeft. Omdat alle richtingen gelijk zijn, wordt een stip weergegeven.
+In het midden van elke cel bevindt zich een "pijl" die de voorkeurrichting van beweging aangeeft. Omdat alle richtingen gelijk zijn, wordt er een stip getoond.
-Nu moeten we de simulatie uitvoeren, onze omgeving verkennen en een betere verdeling van Q-Table-waarden leren, waarmee we veel sneller het pad naar de appel kunnen vinden.
+Nu moeten we de simulatie uitvoeren, onze omgeving verkennen, en een betere verdeling van Q-Table waarden leren, die ons in staat stelt het pad naar de appel veel sneller te vinden.
-## Essentie van Q-Learning: Bellman-vergelijking
+## Essentie van Q-Learning: Bellman Vergelijking
-Zodra we beginnen te bewegen, heeft elke actie een bijbehorende beloning, d.w.z. we kunnen theoretisch de volgende actie selecteren op basis van de hoogste directe beloning. Echter, in de meeste toestanden zal de beweging ons doel om de appel te bereiken niet bereiken, en dus kunnen we niet onmiddellijk beslissen welke richting beter is.
+Zodra we beginnen te bewegen, zal elke actie een bijbehorende beloning hebben, d.w.z. we kunnen theoretisch de volgende actie selecteren op basis van de hoogste onmiddellijke beloning. Maar in de meeste toestanden zal de zet ons doel om de appel te bereiken niet behalen, en kunnen we niet direct beslissen welke richting beter is.
-> Onthoud dat het niet het directe resultaat is dat telt, maar eerder het uiteindelijke resultaat, dat we aan het einde van de simulatie zullen verkrijgen.
+> Onthoud dat het niet het onmiddellijke resultaat is dat telt, maar het uiteindelijke resultaat, dat we verkrijgen aan het einde van de simulatie.
-Om rekening te houden met deze vertraagde beloning, moeten we de principes van **[dynamisch programmeren](https://en.wikipedia.org/wiki/Dynamic_programming)** gebruiken, waarmee we ons probleem recursief kunnen benaderen.
+Om rekening te houden met deze vertraagde beloning, moeten we de principes van **[dynamische programmering](https://en.wikipedia.org/wiki/Dynamic_programming)** gebruiken, die ons in staat stellen om het probleem recursief te benaderen.
-Stel dat we nu in toestand *s* zijn en we willen naar de volgende toestand *s'* gaan. Door dit te doen, ontvangen we de directe beloning *r(s,a)*, gedefinieerd door de beloningsfunctie, plus een toekomstige beloning. Als we aannemen dat onze Q-Table correct de "aantrekkelijkheid" van elke actie weergeeft, dan zullen we in toestand *s'* een actie *a* kiezen die overeenkomt met de maximale waarde van *Q(s',a')*. Dus de best mogelijke toekomstige beloning die we in toestand *s* zouden kunnen krijgen, wordt gedefinieerd als `max`
+Stel dat we nu in toestand *s* zijn, en we willen naar de volgende toestand *s'* gaan. Door dit te doen ontvangen we de onmiddellijke beloning *r(s,a)*, gedefinieerd door de beloningsfunctie, plus een toekomstige beloning. Als we veronderstellen dat onze Q-Table correct de "aantrekkelijkheid" van elke actie weerspiegelt, dan kiezen we in toestand *s'* een actie *a* die overeenkomt met de maximale waarde van *Q(s',a')*. Zo wordt de beste mogelijke toekomstige beloning die we in toestand *s* kunnen krijgen gedefinieerd als `max`a'*Q(s',a')* (maximaal hier wordt berekend over alle mogelijke acties *a'* in toestand *s'*).
-## Controle van het beleid
+Dit geeft de **Bellman-formule** om de waarde van de Q-Table in toestand *s*, gegeven actie *a*, te berekenen:
-Aangezien de Q-Table de "aantrekkelijkheid" van elke actie in elke staat weergeeft, is het vrij eenvoudig om deze te gebruiken om efficiënte navigatie in onze wereld te definiëren. In het eenvoudigste geval kunnen we de actie selecteren die overeenkomt met de hoogste waarde in de Q-Table: (code block 9)
+
+
+Hier is γ de zogenaamde **discount factor** die bepaalt in welke mate je de huidige beloning moet prefereerden boven de toekomstige beloning en omgekeerd.
+
+## Leeralgoritme
+
+Gegeven bovenstaande vergelijking, kunnen we nu pseudocode schrijven voor ons leeralgoritme:
+
+* Initialiseer Q-Table Q met gelijke waarden voor alle toestanden en acties
+* Stel leersnelheid α ← 1 in
+* Herhaal simulatie vele keren
+ 1. Start op een willekeurige positie
+ 1. Herhaal
+ 1. Selecteer een actie *a* in toestand *s*
+ 2. Voer actie uit door naar nieuwe toestand *s'* te gaan
+ 3. Als het einde-van-spel conditie is bereikt, of totale beloning te klein is - verlaat simulatie
+ 4. Bereken beloning *r* in de nieuwe toestand
+ 5. Update Q-Functie volgens Bellman vergelijking: *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ maxa'Q(s',a'))*
+ 6. *s* ← *s'*
+ 7. Update de totale beloning en verlaag α.
+
+## Exploit vs. explore
+
+In bovenstaande algoritme hebben we niet gespecificeerd hoe we precies een actie moeten kiezen bij stap 2.1. Als we de actie willekeurig kiezen, zullen we de omgeving willekeurig **verkennen**, en is het vrij waarschijnlijk dat we vaak zullen sterven en gebieden ontdekken waar we normaal niet zouden komen. Een alternatief is om de Q-Table waarden al te **exploitën** die we al kennen, en daarom de beste actie (met hogere Q-Table waarde) te kiezen in toestand *s*. Dit voorkomt echter dat we andere toestanden verkennen, en het is waarschijnlijk dat we de optimale oplossing niet zullen vinden.
+
+Dus is de beste aanpak om een balans te vinden tussen exploratie en exploitatie. Dit kan gedaan worden door de actie in toestand *s* te kiezen met waarschijnlijkheden evenredig aan de waarden in de Q-Table. Aan het begin, wanneer alle Q-Table waarden gelijk zijn, komt dit overeen met een willekeurige selectie, maar naarmate we meer leren over onze omgeving, zullen we waarschijnlijk meer de optimale route volgen terwijl we de agent af en toe toestaan het onontdekte pad te kiezen.
+
+## Python implementatie
+
+We zijn nu klaar om het leeralgoritme te implementeren. Voordat we dat doen, hebben we ook een functie nodig die willekeurige getallen in de Q-Table omzet in een vector van waarschijnlijkheden voor de bijbehorende acties.
+
+1. Maak een functie `probs()`:
+
+ ```python
+ def probs(v,eps=1e-4):
+ v = v-v.min()+eps
+ v = v/v.sum()
+ return v
+ ```
+
+ We voegen een paar `eps` toe aan de oorspronkelijke vector om deling door 0 te voorkomen in het begin, wanneer alle componenten van de vector identiek zijn.
+
+Voer het leeralgoritme uit met 5000 experimenten, ook wel **epochs** genoemd: (codeblok 8)
+```python
+ for epoch in range(5000):
+
+ # Kies beginpunt
+ m.random_start()
+
+ # Begin met reizen
+ n=0
+ cum_reward = 0
+ while True:
+ x,y = m.human
+ v = probs(Q[x,y])
+ a = random.choices(list(actions),weights=v)[0]
+ dpos = actions[a]
+ m.move(dpos,check_correctness=False) # we staan de speler toe zich buiten het bord te verplaatsen, wat de aflevering beëindigt
+ r = reward(m)
+ cum_reward += r
+ if r==end_reward or cum_reward < -1000:
+ lpath.append(n)
+ break
+ alpha = np.exp(-n / 10e5)
+ gamma = 0.5
+ ai = action_idx[a]
+ Q[x,y,ai] = (1 - alpha) * Q[x,y,ai] + alpha * (r + gamma * Q[x+dpos[0], y+dpos[1]].max())
+ n+=1
+```
+
+Na het uitvoeren van dit algoritme zou de Q-Table geüpdatet moeten zijn met waarden die de aantrekkelijkheid van verschillende acties in elke stap definiëren. We kunnen proberen de Q-Table te visualiseren door een vector te tekenen in elke cel die in de gewenste bewegingsrichting wijst. Voor eenvoud tekenen we een kleine cirkel in plaats van een pijlpunt.
+
+
+
+## Het beleid controleren
+
+Omdat de Q-Table de "aantrekkelijkheid" van elke actie in elke toestand weergeeft, is het vrij eenvoudig om deze te gebruiken voor efficiënte navigatie in onze wereld. In het eenvoudigste geval kunnen we de actie kiezen die overeenkomt met de hoogste Q-Table waarde: (codeblok 9)
```python
def qpolicy_strict(m):
@@ -198,17 +274,18 @@ def qpolicy_strict(m):
walk(m,qpolicy_strict)
```
-> Als je de bovenstaande code meerdere keren probeert, merk je misschien dat deze soms "vastloopt" en dat je op de STOP-knop in het notebook moet drukken om het te onderbreken. Dit gebeurt omdat er situaties kunnen zijn waarin twee staten elkaar "aanwijzen" in termen van optimale Q-waarde, waardoor de agent eindeloos tussen die staten blijft bewegen.
+
+> Als je de bovenstaande code meerdere keren probeert, merk je misschien dat het soms "hangt" en dat je op de STOP-knop in het notebook moet drukken om het te onderbreken. Dit gebeurt omdat er situaties kunnen zijn waarin twee toestanden "naar elkaar wijzen" in termen van optimale Q-waarde, waardoor de agent uiteindelijk tussen die toestanden blijft bewegen zonder einde.
## 🚀Uitdaging
-> **Taak 1:** Pas de `walk`-functie aan om de maximale lengte van het pad te beperken tot een bepaald aantal stappen (bijvoorbeeld 100), en kijk hoe de bovenstaande code deze waarde van tijd tot tijd retourneert.
+> **Taak 1:** Pas de `walk`-functie aan om de maximale lengte van het pad te beperken tot een bepaald aantal stappen (zeg 100), en bekijk hoe de bovenstaande code deze waarde van tijd tot tijd retourneert.
-> **Taak 2:** Pas de `walk`-functie aan zodat deze niet terugkeert naar plaatsen waar hij eerder is geweest. Dit voorkomt dat `walk` in een lus terechtkomt, maar de agent kan nog steeds "vast" komen te zitten op een locatie waaruit hij niet kan ontsnappen.
+> **Taak 2:** Pas de `walk`-functie aan zodat deze niet teruggaat naar plaatsen waar hij al eerder is geweest. Dit voorkomt dat `walk` blijft rondlopen, maar de agent kan wel nog steeds "gevangen" raken op een plek waaruit hij niet kan ontsnappen.
## Navigatie
-Een betere navigatiebeleid zou het beleid zijn dat we tijdens de training hebben gebruikt, dat exploitatie en exploratie combineert. In dit beleid selecteren we elke actie met een bepaalde waarschijnlijkheid, evenredig aan de waarden in de Q-Table. Deze strategie kan er nog steeds toe leiden dat de agent terugkeert naar een positie die hij al heeft verkend, maar zoals je kunt zien in de onderstaande code, resulteert dit in een zeer kort gemiddeld pad naar de gewenste locatie (onthoud dat `print_statistics` de simulatie 100 keer uitvoert): (code block 10)
+Een beter navigatiebeleid zou het beleid zijn dat we tijdens training gebruikten, dat exploitatie en exploratie combineert. Bij dit beleid selecteren we elke actie met een bepaalde waarschijnlijkheid, evenredig aan de waarden in de Q-Table. Deze strategie kan er nog steeds toe leiden dat de agent terugkeert naar een positie die hij al onderzocht heeft, maar zoals je kunt zien in de onderstaande code, resulteert het in een erg korte gemiddelde route naar de gewenste locatie (onthoud dat `print_statistics` de simulatie 100 keer uitvoert): (code block 10)
```python
def qpolicy(m):
@@ -220,28 +297,32 @@ def qpolicy(m):
print_statistics(qpolicy)
```
-Na het uitvoeren van deze code zou je een veel kleinere gemiddelde padlengte moeten krijgen dan voorheen, in de orde van 3-6.
+Na het uitvoeren van deze code zou je een veel kortere gemiddelde padlengte moeten krijgen dan eerder, binnen het bereik van 3-6.
## Onderzoek naar het leerproces
-Zoals we hebben vermeld, is het leerproces een balans tussen exploratie en het benutten van opgedane kennis over de structuur van de probleemruimte. We hebben gezien dat de resultaten van het leren (het vermogen om een agent te helpen een kort pad naar het doel te vinden) zijn verbeterd, maar het is ook interessant om te observeren hoe de gemiddelde padlengte zich gedraagt tijdens het leerproces:
+Zoals we hebben genoemd, is het leerproces een balans tussen exploratie en exploitatie van opgedane kennis over de structuur van de probleemruimte. We hebben gezien dat de leerresultaten (het vermogen van een agent om een kort pad naar het doel te vinden) zijn verbeterd, maar het is ook interessant om te observeren hoe de gemiddelde padlengte zich gedraagt tijdens het leerproces:
+
+
-De leerresultaten kunnen als volgt worden samengevat:
+De leerpunten kunnen worden samengevat als:
-- **Gemiddelde padlengte neemt toe**. Wat we hier zien, is dat in het begin de gemiddelde padlengte toeneemt. Dit komt waarschijnlijk doordat we, wanneer we niets weten over de omgeving, geneigd zijn vast te lopen in slechte staten, zoals water of een wolf. Naarmate we meer leren en deze kennis beginnen te gebruiken, kunnen we de omgeving langer verkennen, maar we weten nog steeds niet goed waar de appels zijn.
+- **De gemiddelde padlengte neemt toe**. Wat we hier zien is dat in het begin de gemiddelde padlengte toeneemt. Dit komt waarschijnlijk doordat wanneer we niets weten van de omgeving, we gemakkelijk vast kunnen komen te zitten in slechte toestanden, zoals water of wolf. Naarmate we meer leren en deze kennis toepassen, kunnen we de omgeving langer verkennen, maar we weten nog niet goed waar de appels liggen.
-- **Padlengte neemt af naarmate we meer leren**. Zodra we genoeg leren, wordt het gemakkelijker voor de agent om het doel te bereiken, en de padlengte begint af te nemen. We staan echter nog steeds open voor exploratie, dus we wijken vaak af van het beste pad en verkennen nieuwe opties, waardoor het pad langer wordt dan optimaal.
+- **Padlengte neemt af naarmate we meer leren**. Zodra we genoeg geleerd hebben, wordt het voor de agent makkelijker om het doel te bereiken, en begint de padlengte te dalen. We staan echter nog open voor exploratie, dus we wijken vaak af van het beste pad en verkennen nieuwe opties, waardoor het pad langer wordt dan optimaal.
-- **Lengte neemt abrupt toe**. Wat we ook op deze grafiek zien, is dat op een bepaald moment de lengte abrupt toenam. Dit geeft de stochastische aard van het proces aan, en dat we op een bepaald moment de Q-Table-coëfficiënten kunnen "bederven" door ze te overschrijven met nieuwe waarden. Dit zou idealiter moeten worden geminimaliseerd door de leersnelheid te verlagen (bijvoorbeeld tegen het einde van de training passen we de Q-Table-waarden slechts met een kleine waarde aan).
+- **Lengte neemt plotseling toe**. Wat we ook in deze grafiek zien is dat de lengte op een gegeven moment abrupt toenam. Dit wijst op het stochastische karakter van het proces, en dat we op een gegeven moment de Q-Table-waarden kunnen "bederven" doordat we ze overschrijven met nieuwe waarden. Dit zou idealiter moeten worden beperkt door het verlagen van het leerpercentage (bijvoorbeeld, tegen het einde van de training passen we de Q-Table-waarden slechts licht aan).
-Over het algemeen is het belangrijk om te onthouden dat het succes en de kwaliteit van het leerproces sterk afhankelijk zijn van parameters, zoals leersnelheid, afname van de leersnelheid en de discontofactor. Deze worden vaak **hyperparameters** genoemd, om ze te onderscheiden van **parameters**, die we optimaliseren tijdens de training (bijvoorbeeld Q-Table-coëfficiënten). Het proces van het vinden van de beste hyperparameterwaarden wordt **hyperparameteroptimalisatie** genoemd, en dit verdient een apart onderwerp.
+Over het algemeen is het belangrijk te onthouden dat het succes en de kwaliteit van het leerproces sterk afhangen van parameters zoals het leerpercentage, afname van het leerpercentage, en de discontovoet. Deze worden vaak **hyperparameters** genoemd, ter onderscheid van **parameters**, die we optimaliseren tijdens het trainen (bijvoorbeeld de Q-Table-waarden). Het proces van het vinden van de beste hyperparameterwaarden heet **hyperparameteroptimalisatie**, en verdient een apart onderwerp.
-## [Quiz na de les](https://ff-quizzes.netlify.app/en/ml/)
+## [Quiz na de lezing](https://ff-quizzes.netlify.app/en/ml/)
-## Opdracht
-[Een Meer Realistische Wereld](assignment.md)
+## Opdracht
+[Een meer realistische wereld](assignment.md)
---
-**Disclaimer**:
-Dit document is vertaald met behulp van de AI-vertalingsservice [Co-op Translator](https://github.com/Azure/co-op-translator). Hoewel we ons best doen om nauwkeurigheid te garanderen, dient u zich ervan bewust te zijn dat geautomatiseerde vertalingen fouten of onnauwkeurigheden kunnen bevatten. Het originele document in zijn oorspronkelijke taal moet worden beschouwd als de gezaghebbende bron. Voor kritieke informatie wordt professionele menselijke vertaling aanbevolen. Wij zijn niet aansprakelijk voor misverstanden of verkeerde interpretaties die voortvloeien uit het gebruik van deze vertaling.
\ No newline at end of file
+
+**Disclaimer**:
+Dit document is vertaald met behulp van de AI vertaaldienst [Co-op Translator](https://github.com/Azure/co-op-translator). Hoewel we streven naar nauwkeurigheid, dient u er rekening mee te houden dat geautomatiseerde vertalingen fouten of onnauwkeurigheden kunnen bevatten. Het originele document in de oorspronkelijke taal moet worden beschouwd als de gezaghebbende bron. Voor kritieke informatie wordt professionele menselijke vertaling aanbevolen. Wij zijn niet aansprakelijk voor eventuele misverstanden of verkeerde interpretaties die voortvloeien uit het gebruik van deze vertaling.
+
\ No newline at end of file
diff --git a/translations/no/.co-op-translator.json b/translations/no/.co-op-translator.json
index 67138380e..d3b853b14 100644
--- a/translations/no/.co-op-translator.json
+++ b/translations/no/.co-op-translator.json
@@ -24,8 +24,8 @@
"language_code": "no"
},
"1-Introduction/3-fairness/README.md": {
- "original_hash": "9a6b702d1437c0467e3c5c28d763dac2",
- "translation_date": "2025-09-05T21:39:15+00:00",
+ "original_hash": "0f00d72169a0d37eecfd16d71e01700a",
+ "translation_date": "2026-07-14T07:24:55+00:00",
"source_file": "1-Introduction/3-fairness/README.md",
"language_code": "no"
},
@@ -54,8 +54,8 @@
"language_code": "no"
},
"2-Regression/1-Tools/README.md": {
- "original_hash": "fa81d226c71d5af7a2cade31c1c92b88",
- "translation_date": "2025-09-05T21:13:58+00:00",
+ "original_hash": "0b8635427b582d03ea4ab7089b93e505",
+ "translation_date": "2026-07-14T07:19:09+00:00",
"source_file": "2-Regression/1-Tools/README.md",
"language_code": "no"
},
@@ -72,8 +72,8 @@
"language_code": "no"
},
"2-Regression/2-Data/README.md": {
- "original_hash": "7c077988328ebfe33b24d07945f16eca",
- "translation_date": "2025-09-05T21:16:31+00:00",
+ "original_hash": "a58b2c4d16c6b122643391745ac15af6",
+ "translation_date": "2026-07-14T07:20:30+00:00",
"source_file": "2-Regression/2-Data/README.md",
"language_code": "no"
},
@@ -89,6 +89,12 @@
"source_file": "2-Regression/2-Data/solution/Julia/README.md",
"language_code": "no"
},
+ "2-Regression/2-Data/solution/notebook.ipynb": {
+ "original_hash": "96b95f8cf473481f2f371de8156f1571",
+ "translation_date": "2026-07-14T07:01:40+00:00",
+ "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
+ "language_code": "no"
+ },
"2-Regression/3-Linear/README.md": {
"original_hash": "8b776e731c35b171d316d01d0e7b1369",
"translation_date": "2026-04-26T18:54:47+00:00",
@@ -457,7 +463,7 @@
},
"8-Reinforcement/1-QLearning/README.md": {
"original_hash": "911efd5e595089000cb3c16fce1beab8",
- "translation_date": "2025-09-05T22:05:43+00:00",
+ "translation_date": "2026-07-14T07:22:06+00:00",
"source_file": "8-Reinforcement/1-QLearning/README.md",
"language_code": "no"
},
@@ -481,7 +487,7 @@
},
"8-Reinforcement/2-Gym/README.md": {
"original_hash": "107d5bb29da8a562e7ae72262d251a75",
- "translation_date": "2025-09-05T22:09:29+00:00",
+ "translation_date": "2026-07-14T07:23:42+00:00",
"source_file": "8-Reinforcement/2-Gym/README.md",
"language_code": "no"
},
@@ -581,6 +587,19 @@
"source_file": "TROUBLESHOOTING.md",
"language_code": "no"
},
+ "__translation_failures__": {
+ "sketchnotes/LICENSE.md": {
+ "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f",
+ "source_file": "sketchnotes/LICENSE.md",
+ "language_code": "no",
+ "failure_date": "2026-07-14T07:18:02+00:00",
+ "status": "failed",
+ "error_type": "TranslationIncompleteError",
+ "error_message": "Markdown translation remained incomplete for chunk 1.2.1 of 'LICENSE.md', and the chunk could not be split further.",
+ "translator_version": "0.20.0",
+ "failure_policy_version": 1
+ }
+ },
"docs/_sidebar.md": {
"original_hash": "68dd06c685f6ce840e0acfa313352e7c",
"translation_date": "2025-09-05T21:31:12+00:00",
diff --git a/translations/no/1-Introduction/3-fairness/README.md b/translations/no/1-Introduction/3-fairness/README.md
index 44590cef4..5a306fd3f 100644
--- a/translations/no/1-Introduction/3-fairness/README.md
+++ b/translations/no/1-Introduction/3-fairness/README.md
@@ -1,154 +1,157 @@
-# Bygge maskinlæringsløsninger med ansvarlig AI
-
-
+# Bygge maskinlæringsløsninger med ansvarlig KI
+
+
> Sketchnote av [Tomomi Imura](https://www.twitter.com/girlie_mac)
-## [Quiz før forelesning](https://ff-quizzes.netlify.app/en/ml/)
-
+## [Quiz før forelesningen](https://ff-quizzes.netlify.app/en/ml/)
+
## Introduksjon
-I dette kurset vil du begynne å utforske hvordan maskinlæring påvirker våre daglige liv. Allerede nå er systemer og modeller involvert i beslutningsprosesser som helsevesendiagnoser, lånesøknader eller oppdagelse av svindel. Derfor er det viktig at disse modellene fungerer godt og gir pålitelige resultater. Akkurat som med andre programvareapplikasjoner, kan AI-systemer feile eller gi uønskede utfall. Derfor er det avgjørende å kunne forstå og forklare oppførselen til en AI-modell.
+I dette pensumet vil du begynne å oppdage hvordan maskinlæring kan og påvirker vårt dagligliv. Allerede nå er systemer og modeller involvert i daglige beslutningsoppgaver, som helseforebyggende diagnoser, lånbehandling eller oppdagelse av svindel. Derfor er det viktig at disse modellene fungerer godt for å gi pålitelige resultater. Som med enhver programvareapplikasjon vil KI-systemer kunne skuffe eller gi uønskede resultater. Derfor er det essensielt å kunne forstå og forklare oppførselen til en KI-modell.
-Tenk på hva som kan skje hvis dataene du bruker til å bygge disse modellene mangler visse demografiske grupper, som rase, kjønn, politisk syn eller religion, eller hvis de overrepresenterer visse grupper. Hva skjer hvis modellens resultater tolkes til å favorisere en bestemt gruppe? Hva er konsekvensene for applikasjonen? Og hva skjer hvis modellen gir et skadelig utfall? Hvem er ansvarlig for oppførselen til AI-systemet? Dette er noen av spørsmålene vi vil utforske i dette kurset.
+Tenk på hva som kan skje når dataene du bruker til å bygge disse modellene mangler visse demografiske grupper, som rase, kjønn, politisk syn, religion, eller overrepresenterer slike grupper. Hva skjer når modellens output tolkes som favorisering av en demografisk gruppe? Hva er konsekvensen for applikasjonen? I tillegg, hva skjer når modellen gir et uheldig utfall og skader mennesker? Hvem har ansvaret for KI-systemenes oppførsel? Dette er noen av spørsmålene vi vil utforske i dette pensumet.
I denne leksjonen vil du:
-- Øke bevisstheten om viktigheten av rettferdighet i maskinlæring og skader relatert til urettferdighet.
-- Bli kjent med praksisen med å utforske avvik og uvanlige scenarier for å sikre pålitelighet og sikkerhet.
-- Forstå behovet for å styrke alle ved å designe inkluderende systemer.
+- Øke bevisstheten om viktigheten av rettferdighet i maskinlæring og skader knyttet til rettferdighet.
+- Bli kjent med praksisen med å utforske avvik og uvanlige scenarioer for å sikre pålitelighet og sikkerhet.
+- Få forståelse for behovet for å styrke alle ved å designe inkluderende systemer.
- Utforske hvor viktig det er å beskytte personvern og sikkerhet for data og mennesker.
-- Se viktigheten av en "glassboks"-tilnærming for å forklare oppførselen til AI-modeller.
-- Være oppmerksom på hvordan ansvarlighet er essensielt for å bygge tillit til AI-systemer.
+- Se viktigheten av en «glassboks»-tilnærming for å forklare oppførselen til KI-modeller.
+- Være bevisst på hvordan ansvarlighet er essensielt for å bygge tillit til KI-systemer.
## Forutsetninger
-Som en forutsetning, vennligst ta "Ansvarlige AI-prinsipper" læringsstien og se videoen nedenfor om emnet:
+Som en forutsetning, vennligst følg læringsstien "Ansvarlige prinsipper for KI" og se videoen nedenfor om temaet:
-Lær mer om ansvarlig AI ved å følge denne [læringsstien](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)
+Lær mer om ansvarlig KI ved å følge denne [Læringsstien](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott)
-[](https://youtu.be/dnC8-uUZXSc "Microsofts tilnærming til ansvarlig AI")
+[](https://youtu.be/dnC8-uUZXSc "Microsofts tilnærming til ansvarlig KI")
-> 🎥 Klikk på bildet over for en video: Microsofts tilnærming til ansvarlig AI
+> 🎥 Klikk på bildet over for en video: Microsofts tilnærming til ansvarlig KI
## Rettferdighet
-AI-systemer bør behandle alle rettferdig og unngå å påvirke lignende grupper på ulike måter. For eksempel, når AI-systemer gir veiledning om medisinsk behandling, lånesøknader eller ansettelser, bør de gi samme anbefalinger til alle med lignende symptomer, økonomiske forhold eller kvalifikasjoner. Vi mennesker bærer med oss arvede skjevheter som påvirker våre beslutninger og handlinger. Disse skjevhetene kan også være til stede i dataene vi bruker til å trene AI-systemer. Slike skjevheter kan noen ganger oppstå utilsiktet. Det er ofte vanskelig å være bevisst på når man introduserer skjevheter i data.
+KI-systemer bør behandle alle rettferdig og unngå å påvirke like grupper av mennesker på forskjellige måter. For eksempel, når KI-systemer gir veiledning om medisinsk behandling, lånesøknader eller ansettelse, bør de gi de samme anbefalingene til alle med lignende symptomer, økonomiske situasjon eller faglige kvalifikasjoner. Hver og en av oss bærer med oss arvede skjevheter som påvirker våre beslutninger og handlinger. Disse skjevhetene kan være synlige i dataene vi bruker til å trene KI-systemer. Slike skjevheter kan noen ganger oppstå utilsiktet. Det er ofte vanskelig bevisst å vite når man introduserer skjevhet i data.
-**"Urettferdighet"** omfatter negative konsekvenser, eller "skader", for en gruppe mennesker, som definert av rase, kjønn, alder eller funksjonshemming. De viktigste skadene relatert til rettferdighet kan klassifiseres som:
+**«Urettferdighet»** omfatter negative konsekvenser, eller «skader», for en gruppe mennesker, slik som de definert ut ifra rase, kjønn, alder eller funksjonshemming. Hovedtyper av skader knyttet til rettferdighet kan klassifiseres som:
-- **Allokering**, hvis for eksempel et kjønn eller en etnisitet favoriseres over en annen.
-- **Kvalitet på tjenesten**. Hvis du trener data for ett spesifikt scenario, men virkeligheten er mye mer kompleks, kan det føre til dårlig ytelse. For eksempel en såpedispenser som ikke klarte å registrere personer med mørk hud. [Referanse](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
-- **Nedvurdering**. Å urettferdig kritisere eller merke noe eller noen. For eksempel ble en bildemerkingsteknologi beryktet for å feilmerke bilder av mørkhudede mennesker som gorillaer.
-- **Over- eller underrepresentasjon**. Ideen om at en bestemt gruppe ikke er synlig i et bestemt yrke, og enhver tjeneste eller funksjon som fortsetter å fremme dette, bidrar til skade.
-- **Stereotypisering**. Å assosiere en gitt gruppe med forhåndsbestemte egenskaper. For eksempel kan et språkoversettingssystem mellom engelsk og tyrkisk ha unøyaktigheter på grunn av ord med stereotypiske kjønnsassosiasjoner.
+- **Fordeling**, hvis for eksempel kjønn eller etnisitet favoriseres fremfor en annen.
+- **Kvalitet på tjenesten**. Hvis dataene er trent for én spesifikk situasjon, men virkeligheten er mye mer kompleks, fører det til en dårlig tjeneste. For eksempel, en håndsåpedispenser som ikke kunne registrere personer med mørk hud. [Referanse](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
+- **Fordømmelse**. Å urettferdig kritisere og merke noe eller noen. For eksempel etiketterte en bildeteknologi beryktet bilder av mørkhudede personer som gorillaer.
+- **Over- eller underrepresentasjon**. Tanken er at en viss gruppe ikke sees i et yrke, og enhver tjeneste eller funksjon som opprettholder dette, bidrar til skade.
+- **Stereotypier**. Å knytte en gitt gruppe til forhåndstildelte kjennetegn. For eksempel kan en språköversettelsestjeneste mellom engelsk og tyrkisk ha unøyaktigheter på grunn av ord med stereotype kjønnsforeninger.
-
+
> oversettelse til tyrkisk
-
+
> oversettelse tilbake til engelsk
-Når vi designer og tester AI-systemer, må vi sørge for at AI er rettferdig og ikke programmert til å ta skjeve eller diskriminerende beslutninger, noe som også er forbudt for mennesker. Å garantere rettferdighet i AI og maskinlæring forblir en kompleks sosioteknisk utfordring.
+Når vi designer og tester KI-systemer, må vi sikre at KI er rettferdig og ikke programmert til å ta skjeve eller diskriminerende beslutninger, som også mennesker er forbudt å gjøre. Å garantere rettferdighet i KI og maskinlæring forblir en kompleks sosioteknisk utfordring.
### Pålitelighet og sikkerhet
-For å bygge tillit må AI-systemer være pålitelige, sikre og konsistente under normale og uventede forhold. Det er viktig å vite hvordan AI-systemer vil oppføre seg i ulike situasjoner, spesielt når det gjelder avvik. Når vi bygger AI-løsninger, må vi fokusere mye på hvordan vi håndterer et bredt spekter av omstendigheter som AI-løsningene kan møte. For eksempel må en selvkjørende bil prioritere menneskers sikkerhet. Derfor må AI som driver bilen, ta hensyn til alle mulige scenarier bilen kan møte, som natt, tordenvær eller snøstormer, barn som løper over gaten, kjæledyr, veiarbeid osv. Hvor godt et AI-system kan håndtere et bredt spekter av forhold pålitelig og sikkert, reflekterer nivået av forberedelse dataforskeren eller AI-utvikleren har vurdert under design eller testing av systemet.
+For å bygge tillit må KI-systemene være pålitelige, sikre og konsistente under normale og uventede forhold. Det er viktig å vite hvordan KI-systemer vil oppføre seg i ulike situasjoner, spesielt når det gjelder avvik. Når man bygger KI-løsninger, må det legges betydelig fokus på hvordan man håndterer et bredt spekter av omstendigheter som KI-løsningene kan møte. For eksempel må en selvkjørende bil sette menneskers sikkerhet som høyeste prioritet. Som et resultat må KI som driver bilen vurdere alle mulige scenarioer som bilen kan møte, som natt, tordenvær eller snøstormer, barn som løper over gaten, kjæledyr, veiarbeid osv. Hvor godt et KI-system kan håndtere et bredt spekter av forhold pålitelig og trygt reflekterer hvor godt datavitenskapsmannen eller utvikleren har forutsett dette under design eller testing av systemet.
> [🎥 Klikk her for en video: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
### Inkludering
-AI-systemer bør designes for å engasjere og styrke alle. Når dataforskere og AI-utviklere designer og implementerer AI-systemer, identifiserer og adresserer de potensielle barrierer i systemet som utilsiktet kan ekskludere mennesker. For eksempel finnes det 1 milliard mennesker med funksjonshemminger over hele verden. Med fremskritt innen AI kan de lettere få tilgang til et bredt spekter av informasjon og muligheter i hverdagen. Ved å adressere barrierene skapes det muligheter for å innovere og utvikle AI-produkter med bedre opplevelser som gagner alle.
+KI-systemer bør designes for å engasjere og styrke alle. Når datavitenskapsfolk og KI-utviklere designer og implementerer KI-systemer, identifiserer og adresserer de potensielle barrierer i systemet som utilsiktet kan utelukke mennesker. For eksempel er det 1 milliard mennesker med funksjonshemninger i verden. Med fremskritt innen KI kan de lettere få tilgang til et bredt spekter av informasjon og muligheter i hverdagen. Ved å adressere barrierene skapes muligheter for å innovere og utvikle KI-produkter med bedre opplevelser som gagner alle.
-> [🎥 Klikk her for en video: inkludering i AI](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
+> [🎥 Klikk her for en video: inkludering i KI](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
### Sikkerhet og personvern
-AI-systemer bør være trygge og respektere folks personvern. Folk har mindre tillit til systemer som setter deres personvern, informasjon eller liv i fare. Når vi trener maskinlæringsmodeller, er vi avhengige av data for å oppnå de beste resultatene. I denne prosessen må vi vurdere opprinnelsen til dataene og deres integritet. For eksempel, ble dataene sendt inn av brukere eller var de offentlig tilgjengelige? Videre, mens vi arbeider med dataene, er det avgjørende å utvikle AI-systemer som kan beskytte konfidensiell informasjon og motstå angrep. Etter hvert som AI blir mer utbredt, blir det stadig viktigere og mer komplekst å beskytte personvern og sikre viktig personlig og forretningsmessig informasjon. Personvern og datasikkerhet krever spesielt nøye oppmerksomhet for AI, fordi tilgang til data er essensielt for at AI-systemer skal kunne gi nøyaktige og informerte prediksjoner og beslutninger om mennesker.
+KI-systemer bør være trygge og respektere menneskers personvern. Folk har mindre tillit til systemer som setter deres personvern, informasjon eller liv i fare. Når vi trener maskinlæringsmodeller, er vi avhengige av data for å produsere de beste resultatene. I så måte må datakildens opprinnelse og integritet vurderes. For eksempel, var dataene brukersendte eller offentlig tilgjengelige? Videre, under arbeid med data, er det avgjørende å utvikle KI-systemer som kan beskytte konfidensiell informasjon og motstå angrep. Etter hvert som KI blir mer utbredt, blir det stadig viktigere og mer komplekst å beskytte personvern og sikre viktige personlige og forretningsmessige opplysninger. Personvern og datasikkerhet krever spesielt nøye oppmerksomhet for KI fordi tilgang til data er essensielt for at KI-systemer kan lage nøyaktige og informerte prediksjoner og beslutninger om mennesker.
-> [🎥 Klikk her for en video: sikkerhet i AI](https://www.microsoft.com/videoplayer/embed/RE4voJF)
+> [🎥 Klikk her for en video: sikkerhet i KI](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- Som bransje har vi gjort betydelige fremskritt innen personvern og sikkerhet, drevet i stor grad av reguleringer som GDPR (General Data Protection Regulation).
-- Likevel må vi med AI-systemer erkjenne spenningen mellom behovet for mer personlige data for å gjøre systemer mer personlige og effektive – og personvern.
-- Akkurat som med fremveksten av tilkoblede datamaskiner via internett, ser vi også en stor økning i antall sikkerhetsproblemer relatert til AI.
-- Samtidig har vi sett AI bli brukt til å forbedre sikkerhet. For eksempel drives de fleste moderne antivirusprogrammer i dag av AI-heuristikk.
-- Vi må sørge for at våre dataforskningsprosesser harmonerer med de nyeste praksisene for personvern og sikkerhet.
+- Som bransje har vi gjort betydelige fremskritt innen personvern og sikkerhet, drevet i stor grad av regelverk som GDPR (General Data Protection Regulation).
+- Likevel må vi med KI-systemer erkjenne spenningen mellom behovet for mer personlig data for å gjøre systemene mer personlige og effektive – og personvern.
+- Akkurat som med internettets fødsel og kobling av datamaskiner, ser vi en stor økning i sikkerhetsutfordringer knyttet til KI.
+- Samtidig har vi sett at KI brukes til å forbedre sikkerheten. For eksempel drives de fleste moderne antivirus-skannere i dag av KI-heuristikker.
+- Vi må sikre at våre datavitenskapsprosesser harmonerer med de nyeste praksisene for personvern og sikkerhet.
-### Åpenhet
-AI-systemer bør være forståelige. En viktig del av åpenhet er å forklare oppførselen til AI-systemer og deres komponenter. Forbedring av forståelsen av AI-systemer krever at interessenter forstår hvordan og hvorfor de fungerer, slik at de kan identifisere potensielle ytelsesproblemer, sikkerhets- og personvernhensyn, skjevheter, ekskluderende praksis eller utilsiktede utfall. Vi mener også at de som bruker AI-systemer, bør være ærlige og åpne om når, hvorfor og hvordan de velger å bruke dem, samt begrensningene til systemene de bruker. For eksempel, hvis en bank bruker et AI-system for å støtte sine utlånsbeslutninger, er det viktig å undersøke resultatene og forstå hvilke data som påvirker systemets anbefalinger. Regjeringer begynner å regulere AI på tvers av bransjer, så dataforskere og organisasjoner må forklare om et AI-system oppfyller regulatoriske krav, spesielt når det oppstår et uønsket utfall.
+### Åpenhet
+KI-systemer bør være forståelige. En avgjørende del av transparens er å forklare oppførselen til KI-systemer og deres komponenter. For å bedre forståelsen av KI-systemer må interessenter forstå hvordan og hvorfor de fungerer slik, slik at de kan identifisere potensielle ytelsesproblemer, sikkerhets- og personvernbekymringer, skjevheter, ekskluderende praksiser eller utilsiktede konsekvenser. Vi mener også at de som bruker KI-systemer bør være ærlige og åpne om når, hvorfor og hvordan de velger å sette dem i drift, samt systemenes begrensninger. For eksempel, hvis en bank bruker et KI-system for å støtte sine beslutninger om forbrukerlån, er det viktig å undersøke resultatene og forstå hvilke data som påvirker systemets anbefalinger. Regjeringer begynner å regulere KI på tvers av bransjer, så datavitenskapsfolk og organisasjoner må forklare om et KI-system oppfyller regulatoriske krav, spesielt ved uønskede utfall.
-> [🎥 Klikk her for en video: åpenhet i AI](https://www.microsoft.com/videoplayer/embed/RE4voJF)
+> [🎥 Klikk her for en video: åpenhet i KI](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-- Fordi AI-systemer er så komplekse, er det vanskelig å forstå hvordan de fungerer og tolke resultatene.
-- Denne mangelen på forståelse påvirker hvordan disse systemene administreres, operasjonaliseres og dokumenteres.
+- Fordi KI-systemer er så komplekse, er det vanskelig å forstå hvordan de fungerer og tolke resultatene.
+- Denne mangelen på forståelse påvirker hvordan disse systemene styres, operasjonaliseres og dokumenteres.
- Enda viktigere påvirker denne mangelen på forståelse beslutningene som tas basert på resultatene disse systemene produserer.
### Ansvarlighet
+
+Personene som designer og setter i drift KI-systemer må være ansvarlige for hvordan systemene opererer. Behovet for ansvarlighet er spesielt viktig ved sensitive teknologier som ansiktsgjenkjenning. Nylig har det vært økende etterspørsel etter ansiktsgjenkjenningsteknologi, spesielt fra politiorganisasjoner som ser teknologien som nyttig for å finne savnede barn. Men disse teknologiene kan potensielt brukes av en regjering til å sette innbyggernes grunnleggende friheter i fare, for eksempel ved å muliggjøre kontinuerlig overvåkning av spesifikke individer. Derfor må datavitenskapsfolk og organisasjoner ta ansvar for hvordan deres KI-system påvirker individer eller samfunnet.
-De som designer og implementerer AI-systemer, må være ansvarlige for hvordan systemene deres fungerer. Behovet for ansvarlighet er spesielt viktig for sensitive teknologier som ansiktsgjenkjenning. Nylig har det vært en økende etterspørsel etter ansiktsgjenkjenningsteknologi, spesielt fra rettshåndhevelsesorganisasjoner som ser potensialet i teknologien for bruk som å finne savnede barn. Imidlertid kan disse teknologiene potensielt brukes av en regjering til å sette borgernes grunnleggende friheter i fare, for eksempel ved å muliggjøre kontinuerlig overvåking av spesifikke individer. Derfor må dataforskere og organisasjoner være ansvarlige for hvordan deres AI-system påvirker enkeltpersoner eller samfunnet.
-
-[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsofts tilnærming til ansvarlig AI")
+[](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsofts tilnærming til ansvarlig KI")
-> 🎥 Klikk på bildet over for en video: Advarsler om masseovervåking gjennom ansiktsgjenkjenning
+> 🎥 Klikk på bildet over for en video: Advarsler om masseovervåkning gjennom ansiktsgjenkjenning
-Til syvende og sist er et av de største spørsmålene for vår generasjon, som den første generasjonen som bringer AI til samfunnet, hvordan vi kan sikre at datamaskiner forblir ansvarlige overfor mennesker, og hvordan vi kan sikre at de som designer datamaskiner, forblir ansvarlige overfor alle andre.
+Til syvende og sist er et av de største spørsmålene for vår generasjon, som den første generasjonen som bringer KI ut i samfunnet, hvordan sikre at datamaskiner forblir ansvarlige overfor mennesker og hvordan sikre at de som designer datamaskiner forblir ansvarlige overfor alle andre.
## Konsekvensvurdering
-Før du trener en maskinlæringsmodell, er det viktig å gjennomføre en konsekvensvurdering for å forstå formålet med AI-systemet; hva den tiltenkte bruken er; hvor det vil bli implementert; og hvem som vil samhandle med systemet. Dette er nyttig for vurderere eller testere som evaluerer systemet for å vite hvilke faktorer de skal ta hensyn til når de identifiserer potensielle risikoer og forventede konsekvenser.
+Før man trener en maskinlæringsmodell, er det viktig å utføre en konsekvensvurdering for å forstå formålet med KI-systemet; hva den tiltenkte bruken er; hvor det skal tas i bruk; og hvem som skal interagere med systemet. Dette er nyttig for evaluatorer eller testere som skal gjennomgå systemet for å vite hvilke faktorer de må ta hensyn til når de identifiserer potensielle risikoer og forventede konsekvenser.
-Følgende er fokusområder når du gjennomfører en konsekvensvurdering:
+Følgende områder bør fokuseres på ved gjennomføring av en konsekvensvurdering:
-* **Negative konsekvenser for enkeltpersoner**. Å være klar over eventuelle begrensninger eller krav, ikke-støttet bruk eller kjente begrensninger som hindrer systemets ytelse, er avgjørende for å sikre at systemet ikke brukes på en måte som kan skade enkeltpersoner.
-* **Datakrav**. Å forstå hvordan og hvor systemet vil bruke data, gjør det mulig for vurderere å utforske eventuelle datakrav du må være oppmerksom på (f.eks. GDPR eller HIPAA-reguleringer). I tillegg bør du undersøke om kilden eller mengden av data er tilstrekkelig for trening.
-* **Oppsummering av konsekvenser**. Samle en liste over potensielle skader som kan oppstå ved bruk av systemet. Gjennom hele ML-livssyklusen bør du vurdere om de identifiserte problemene er adressert eller redusert.
-* **Gjeldende mål** for hver av de seks kjerneprinsippene. Vurder om målene fra hvert prinsipp er oppfylt, og om det er noen mangler.
+* **Advers effekt på enkeltpersoner**. Å være bevisst eventuelle restriksjoner eller krav, uoffisiell bruk eller kjente begrensninger som hindrer systemets ytelse, er avgjørende for å sikre at systemet ikke brukes på en måte som kan skade personer.
+* **Datakrav**. Å forstå hvordan og hvor systemet vil bruke data gir evaluatorer mulighet til å utforske eventuelle datakrav du må være oppmerksom på (f.eks. GDPR eller HIPAA). Videre bør det undersøkes om datakilden eller mengden data er tilstrekkelig for trening.
+* **Sammendrag av konsekvenser**. Lag en liste over potensielle skader som kan oppstå ved bruk av systemet. Gjennom ML-livssyklusen bør det vurderes om de identifiserte problemene er mitigert eller adressert.
+* **Gjeldende mål** for hver av de seks kjerneprinsippene. Vurder om målene for hvert prinsipp er oppnådd og om det er eventuelle gap.
-## Feilsøking med ansvarlig AI
-Akkurat som med feilsøking av en programvareapplikasjon, er feilsøking av et AI-system en nødvendig prosess for å identifisere og løse problemer i systemet. Det er mange faktorer som kan påvirke at en modell ikke presterer som forventet eller ansvarlig. De fleste tradisjonelle modellytelsesmålinger er kvantitative aggregater av en modells ytelse, som ikke er tilstrekkelige for å analysere hvordan en modell bryter med prinsippene for ansvarlig AI. Videre er en maskinlæringsmodell en "svart boks" som gjør det vanskelig å forstå hva som driver dens utfall eller forklare hvorfor den gjør feil. Senere i dette kurset vil vi lære hvordan vi bruker Responsible AI-dashbordet for å hjelpe med feilsøking av AI-systemer. Dashbordet gir et helhetlig verktøy for dataforskere og AI-utviklere til å utføre:
+## Feilsøking med ansvarlig KI
-* **Feilanalyse**. For å identifisere feilfordelingen i modellen som kan påvirke systemets rettferdighet eller pålitelighet.
-* **Modelloversikt**. For å oppdage hvor det er ulikheter i modellens ytelse på tvers av datakohorter.
-* **Dataanalyse**. For å forstå datadistribusjonen og identifisere potensielle skjevheter i dataene som kan føre til problemer med rettferdighet, inkludering og pålitelighet.
-* **Modellfortolkning**. For å forstå hva som påvirker eller driver modellens prediksjoner. Dette hjelper med å forklare modellens oppførsel, som er viktig for åpenhet og ansvarlighet.
+På samme måte som ved feilsøking i en programvareapplikasjon, er feilsøking av et KI-system en nødvendig prosess for å identifisere og løse problemer i systemet. Mange faktorer kan påvirke at en modell ikke presterer som forventet eller ansvarlig. De fleste tradisjonelle modellprestasjon-målinger er kvantitative aggregater av modellens ytelse, noe som ikke er tilstrekkelig til å analysere hvordan en modell bryter de ansvarlige KI-prinsippene. Dessuten er en maskinlæringsmodell en svart boks som gjør det vanskelig å forstå hva som driver utfallet eller gi forklaring når den gjør en feil. Senere i dette kurset vil vi lære hvordan vi kan bruke Ansvarlig KI-dashbordet for å hjelpe med feilsøking av KI-systemer. Dashbordet gir et helhetlig verktøy for datavitenskapsfolk og KI-utviklere for å utføre:
-## 🚀 Utfordring
+* **Feilanalyse**. For å identifisere feildistribusjonen til modellen som kan påvirke systemets rettferdighet eller pålitelighet.
+* **Modelloversikt**. For å oppdage hvor det finnes forskjeller i modellens ytelse på tvers av datakohorter.
+* **Dataanalyse**. For å forstå datadistribusjonen og identifisere potensiell skjevhet i data som kan føre til problemer med rettferdighet, inkludering og pålitelighet.
+* **Modellforklarbarhet**. For å forstå hva som påvirker eller innvirker på modellens prediksjoner. Dette hjelper med å forklare modellens oppførsel, noe som er viktig for åpenhet og ansvarlighet.
-For å forhindre at skader introduseres i utgangspunktet, bør vi:
-- ha et mangfold av bakgrunner og perspektiver blant de som jobber med systemer
-- investere i datasett som reflekterer mangfoldet i samfunnet vårt
-- utvikle bedre metoder gjennom hele maskinlæringslivssyklusen for å oppdage og korrigere ansvarlig AI når det oppstår
+## 🚀 Utfordring
+
+For å forhindre at skader oppstår i utgangspunktet, bør vi:
-Tenk på virkelige scenarier der en modells upålitelighet er tydelig i modellbygging og bruk. Hva annet bør vi vurdere?
+- ha mangfold i bakgrunn og perspektiver blant de som jobber med systemer
+- investere i datasett som reflekterer mangfoldet i samfunnet vårt
+- utvikle bedre metoder gjennom hele maskinlæringslivssyklusen for å oppdage og rette opp i ansvarlig KI når det oppstår
-## [Quiz etter forelesning](https://ff-quizzes.netlify.app/en/ml/)
+Tenk på reelle scenarioer der en modells upålitelighet er tydelig i modellbygging og bruk. Hva mer bør vi vurdere?
-## Gjennomgang og selvstudium
+## [Quiz etter forelesningen](https://ff-quizzes.netlify.app/en/ml/)
-I denne leksjonen har du lært noen grunnleggende konsepter om rettferdighet og urettferdighet i maskinlæring.
-Se denne workshopen for å fordype deg i temaene:
+## Gjennomgang & Selvstudium
+
-- På jakt etter ansvarlig AI: Fra prinsipper til praksis av Besmira Nushi, Mehrnoosh Sameki og Amit Sharma
+I denne leksjonen har du lært noen grunnleggende begreper om rettferdighet og urettferdighet i maskinlæring.
+
+Se denne workshopen for å fordype deg i temaene:
-[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: En åpen kildekode-rammeverk for å bygge ansvarlig AI")
+- I jakten på ansvarlig AI: Å bringe prinsipper til praksis av Besmira Nushi, Mehrnoosh Sameki og Amit Sharma
+[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: Et åpen kildekode-rammeverk for bygging av ansvarlig AI")
-> 🎥 Klikk på bildet over for en video: RAI Toolbox: En åpen kildekode-rammeverk for å bygge ansvarlig AI av Besmira Nushi, Mehrnoosh Sameki og Amit Sharma
+> 🎥 Klikk på bildet over for en video: RAI Toolbox: Et åpen kildekode-rammeverk for bygging av ansvarlig AI av Besmira Nushi, Mehrnoosh Sameki og Amit Sharma
-Les også:
+Les også:
-- Microsofts RAI ressursenter: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
+- Microsofts RAI ressurs senter: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
- Microsofts FATE forskningsgruppe: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
-RAI Toolbox:
+RAI Toolbox:
-- [Responsible AI Toolbox GitHub repository](https://github.com/microsoft/responsible-ai-toolbox)
+- [Responsible AI Toolbox GitHub-repositorium](https://github.com/microsoft/responsible-ai-toolbox)
-Les om Azure Machine Learning sine verktøy for å sikre rettferdighet:
+Les om Azure Machine Learnings verktøy for å sikre rettferdighet:
- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott)
@@ -158,5 +161,7 @@ Les om Azure Machine Learning sine verktøy for å sikre rettferdighet:
---
-**Ansvarsfraskrivelse**:
-Dette dokumentet er oversatt ved hjelp av AI-oversettelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selv om vi tilstreber nøyaktighet, vennligst vær oppmerksom på at automatiske oversettelser kan inneholde feil eller unøyaktigheter. Det originale dokumentet på sitt opprinnelige språk bør anses som den autoritative kilden. For kritisk informasjon anbefales profesjonell menneskelig oversettelse. Vi er ikke ansvarlige for eventuelle misforståelser eller feiltolkninger som oppstår ved bruk av denne oversettelsen.
\ No newline at end of file
+
+**Ansvarsfraskrivelse**:
+Dette dokumentet er oversatt ved hjelp av AI-oversettelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selv om vi streber etter nøyaktighet, vær oppmerksom på at automatiske oversettelser kan inneholde feil eller unøyaktigheter. Det opprinnelige dokumentet på originalspråket skal betraktes som den autoritative kilden. For kritisk informasjon anbefales profesjonell menneskelig oversettelse. Vi er ikke ansvarlige for eventuelle misforståelser eller feiltolkninger som oppstår ved bruk av denne oversettelsen.
+
\ No newline at end of file
diff --git a/translations/no/2-Regression/1-Tools/README.md b/translations/no/2-Regression/1-Tools/README.md
index 3723aa741..4ab47ac99 100644
--- a/translations/no/2-Regression/1-Tools/README.md
+++ b/translations/no/2-Regression/1-Tools/README.md
@@ -1,120 +1,121 @@
# Kom i gang med Python og Scikit-learn for regresjonsmodeller
-
+
> Sketchnote av [Tomomi Imura](https://www.twitter.com/girlie_mac)
-## [Quiz før leksjonen](https://ff-quizzes.netlify.app/en/ml/)
+## [Quiz før forelesning](https://ff-quizzes.netlify.app/en/ml/)
-> ### [Denne leksjonen er også tilgjengelig i R!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
+> ### [Denne leksjonen finnes også i R!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
-## Introduksjon
+## Innledning
-I disse fire leksjonene vil du lære hvordan du bygger regresjonsmodeller. Vi skal snart diskutere hva disse brukes til. Men før du gjør noe som helst, sørg for at du har de riktige verktøyene på plass for å starte prosessen!
+I disse fire leksjonene vil du lære hvordan du bygger regresjonsmodeller. Vi vil snart diskutere hva disse brukes til. Men før du gjør noe som helst, sørg for at du har de riktige verktøyene på plass for å starte prosessen!
-I denne leksjonen vil du lære å:
+I denne leksjonen vil du lære hvordan du:
-- Konfigurere datamaskinen din for lokale maskinlæringsoppgaver.
-- Jobbe med Jupyter-notatbøker.
-- Bruke Scikit-learn, inkludert installasjon.
-- Utforske lineær regresjon gjennom en praktisk øvelse.
+- Konfigurerer datamaskinen din for lokale maskinlæringsoppgaver.
+- Arbeider med Jupyter Notebooks.
+- Bruker Scikit-learn, inkludert installasjon.
+- Utforsker lineær regresjon med en praktisk øvelse.
## Installasjoner og konfigurasjoner
-[](https://youtu.be/-DfeD2k2Kj0 "ML for nybegynnere - Sett opp verktøyene dine for å bygge maskinlæringsmodeller")
+[](https://youtu.be/-DfeD2k2Kj0 "ML for nybegynnere - Sett opp verktøyene dine klare til å bygge maskinlæringsmodeller")
-> 🎥 Klikk på bildet over for en kort video som viser hvordan du konfigurerer datamaskinen din for maskinlæring.
+> 🎥 Klikk på bildet over for en kort video som viser hvordan du konfigurerer datamaskinen for ML.
-1. **Installer Python**. Sørg for at [Python](https://www.python.org/downloads/) er installert på datamaskinen din. Du vil bruke Python til mange oppgaver innen datavitenskap og maskinlæring. De fleste datamaskiner har allerede en Python-installasjon. Det finnes også nyttige [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) som kan gjøre oppsettet enklere for noen brukere.
+1. **Installer Python**. Sørg for at [Python](https://www.python.org/downloads/) er installert på datamaskinen din. Du vil bruke Python til mange data science- og maskinlæringoppgaver. De fleste datasystemer har allerede Python installert. Det finnes nyttige [Python-kodepakker](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) tilgjengelig også, for å lette oppsettet for noen brukere.
- Noen bruksområder for Python krever én versjon av programvaren, mens andre krever en annen versjon. Derfor er det nyttig å jobbe i et [virtuelt miljø](https://docs.python.org/3/library/venv.html).
+ Noen bruksområder av Python krever imidlertid én versjon av programvaren, mens andre krever en annen versjon. Derfor er det nyttig å jobbe i et [virtuelt miljø](https://docs.python.org/3/library/venv.html).
-2. **Installer Visual Studio Code**. Sørg for at Visual Studio Code er installert på datamaskinen din. Følg disse instruksjonene for å [installere Visual Studio Code](https://code.visualstudio.com/) for grunnleggende installasjon. Du skal bruke Python i Visual Studio Code i dette kurset, så det kan være lurt å friske opp hvordan du [konfigurerer Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) for Python-utvikling.
+2. **Installer Visual Studio Code**. Pass på at du har Visual Studio Code installert på datamaskinen din. Følg disse instruksjonene for å [installere Visual Studio Code](https://code.visualstudio.com/) for en grunnleggende installasjon. Du kommer til å bruke Python i Visual Studio Code i dette kurset, så det kan være lurt å friske opp hvordan du [konfigurerer Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) for Python-utvikling.
- > Bli komfortabel med Python ved å jobbe gjennom denne samlingen av [Learn-moduler](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)
+ > Bli komfortabel med Python ved å gå gjennom denne samlingen av [Læringsmoduler](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)
>
> [](https://youtu.be/yyQM70vi7V8 "Sett opp Python med Visual Studio Code")
>
- > 🎥 Klikk på bildet over for en video: bruk Python i VS Code.
+ > 🎥 Klikk på bildet over for en video: bruk av Python i VS Code.
-3. **Installer Scikit-learn** ved å følge [disse instruksjonene](https://scikit-learn.org/stable/install.html). Siden du må sørge for at du bruker Python 3, anbefales det at du bruker et virtuelt miljø. Merk at hvis du installerer dette biblioteket på en M1 Mac, finnes det spesielle instruksjoner på siden som er lenket over.
+3. **Installer Scikit-learn**, ved å følge [disse instruksjonene](https://scikit-learn.org/stable/install.html). Siden du må sørge for at du bruker Python 3, anbefales det at du bruker et virtuelt miljø. Merk at hvis du installerer dette biblioteket på en M1 Mac, finnes det spesielle instruksjoner på den lenkede siden.
-4. **Installer Jupyter Notebook**. Du må [installere Jupyter-pakken](https://pypi.org/project/jupyter/).
+1. **Installer Jupyter Notebook**. Du må [installere Jupyter-pakken](https://pypi.org/project/jupyter/).
-## Ditt ML-utviklingsmiljø
+## Ditt ML-forfattermiljø
-Du skal bruke **notatbøker** for å utvikle Python-koden din og lage maskinlæringsmodeller. Denne typen filer er et vanlig verktøy for dataforskere, og de kan identifiseres ved suffikset eller filtypen `.ipynb`.
+Du skal bruke **notebooks** for å utvikle Python-koden din og lage maskinlæringsmodeller. Denne typen fil er et vanlig verktøy for dataforskere, og kan kjennes igjen på suffikset eller filendelsen `.ipynb`.
-Notatbøker er et interaktivt miljø som lar utvikleren både kode og legge til notater og skrive dokumentasjon rundt koden, noe som er ganske nyttig for eksperimentelle eller forskningsorienterte prosjekter.
+Notebooks er et interaktivt miljø som lar utvikleren både kode og legge til notater og skrive dokumentasjon rundt koden, noe som er svært nyttig for eksperimentelle- eller forskningsorienterte prosjekter.
-[](https://youtu.be/7E-jC8FLA2E "ML for nybegynnere - Sett opp Jupyter-notatbøker for å begynne å bygge regresjonsmodeller")
+[](https://youtu.be/7E-jC8FLA2E "ML for nybegynnere - Sett opp Jupyter Notebooks for å begynne å bygge regresjonsmodeller")
> 🎥 Klikk på bildet over for en kort video som viser denne øvelsen.
-### Øvelse - jobb med en notatbok
+### Øvelse - arbeid med en notebook
I denne mappen finner du filen _notebook.ipynb_.
1. Åpne _notebook.ipynb_ i Visual Studio Code.
- En Jupyter-server vil starte med Python 3+. Du vil finne områder i notatboken som kan `kjøres`, altså kodeblokker. Du kan kjøre en kodeblokk ved å velge ikonet som ser ut som en avspillingsknapp.
+ En Jupyter-server vil starte med Python 3+ aktivert. Du vil finne områder i notatboken som kan `kjøres`, kodesnutter. Du kan kjøre en kodeblokk ved å velge ikonet som ser ut som en avspillingsknapp.
-2. Velg `md`-ikonet og legg til litt markdown, og følgende tekst: **# Velkommen til din notatbok**.
+1. Velg `md`-ikonet og legg til litt markdown, og teksten **# Velkommen til din notebook**.
- Deretter legger du til litt Python-kode.
+ Deretter legger du til noe Python-kode.
-3. Skriv **print('hello notebook')** i kodeblokken.
-4. Velg pilen for å kjøre koden.
+1. Skriv **print('hello notebook')** i kodeblokken.
+1. Velg pilen for å kjøre koden.
- Du bør se den utskrevne meldingen:
+ Du skal nå se den utskrevne setningen:
```output
hello notebook
```
-
+
-Du kan blande koden din med kommentarer for å selv-dokumentere notatboken.
+Du kan veksle mellom kode og kommentarer for å dokumentere notatboken din.
-✅ Tenk et øyeblikk på hvor forskjellig arbeidsmiljøet til en webutvikler er sammenlignet med en dataforsker.
+✅ Tenk et øyeblikk over hvor forskjellig arbeidsmiljø en webutvikler har sammenlignet med en dataforsker.
-## Kom i gang med Scikit-learn
+## Komme i gang med Scikit-learn
-Nå som Python er satt opp i ditt lokale miljø, og du er komfortabel med Jupyter-notatbøker, la oss bli like komfortable med Scikit-learn (uttales `sci` som i `science`). Scikit-learn tilbyr en [omfattende API](https://scikit-learn.org/stable/modules/classes.html#api-ref) for å hjelpe deg med å utføre ML-oppgaver.
+Nå som Python er satt opp i ditt lokale miljø, og du er komfortabel med Jupyter Notebooks, la oss bli like komfortable med Scikit-learn (uttales `sci` som i `science`). Scikit-learn tilbyr et [utstrakt API](https://scikit-learn.org/stable/modules/classes.html#api-ref) som hjelper deg med å utføre ML-oppgaver.
-Ifølge deres [nettsted](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn er et åpen kildekode-bibliotek for maskinlæring som støtter både overvåket og ikke-overvåket læring. Det tilbyr også ulike verktøy for modelltilpasning, dataprosessering, modellvalg og evaluering, samt mange andre nyttige funksjoner."
+Ifølge deres [nettsted](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn er et open source maskinlæringsbibliotek som støtter veiledet og ikke-veiledet læring. Det tilbyr også verktøy for modellanpassning, databehandling, modellseleksjon og evaluering, og mange andre nyttige funksjoner."
-I dette kurset vil du bruke Scikit-learn og andre verktøy for å bygge maskinlæringsmodeller for å utføre det vi kaller 'tradisjonelle maskinlæringsoppgaver'. Vi har bevisst unngått nevrale nettverk og dyp læring, da disse dekkes bedre i vårt kommende 'AI for nybegynnere'-pensum.
+I dette kurset vil du bruke Scikit-learn og andre verktøy for å bygge maskinlæringsmodeller som utfører det vi kaller 'tradisjonelle maskinlærings'-oppgaver. Vi har med vilje unngått nevrale nettverk og dyp læring, da disse dekkes bedre i vårt kommende 'AI for nybegynnere'-kurs.
-Scikit-learn gjør det enkelt å bygge modeller og evaluere dem for bruk. Det fokuserer primært på bruk av numeriske data og inneholder flere ferdiglagde datasett som kan brukes som læringsverktøy. Det inkluderer også forhåndsbygde modeller som studenter kan prøve. La oss utforske prosessen med å laste inn forhåndspakkede data og bruke en innebygd estimator for å lage vår første ML-modell med Scikit-learn ved hjelp av noen grunnleggende data.
+Scikit-learn gjør det enkelt å bygge modeller og evaluere dem for bruk. Det fokuserer i hovedsak på numeriske data og inneholder flere ferdiglagde datasett som verktøy for læring. Det inkluderer også forhåndsbygde modeller for studenter å prøve. La oss utforske prosessen med å laste forhåndspakkede data og bruke en innebygd estimator — en første ML-modell med Scikit-learn med enkel data.
-## Øvelse - din første Scikit-learn-notatbok
+## Øvelse - din første Scikit-learn notebook
+
+> Denne veiledningen er inspirert av [lineær regresjons-eksempelet](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) på Scikit-learns nettsted.
-> Denne opplæringen er inspirert av [eksempelet på lineær regresjon](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) på Scikit-learns nettsted.
[](https://youtu.be/2xkXL5EUpS0 "ML for nybegynnere - Ditt første lineære regresjonsprosjekt i Python")
> 🎥 Klikk på bildet over for en kort video som viser denne øvelsen.
-I _notebook.ipynb_-filen som er tilknyttet denne leksjonen, tøm alle cellene ved å trykke på 'søppelbøtte'-ikonet.
+I filen _notebook.ipynb_ til denne leksjonen, tøm alle cellene ved å trykke på 'søppelbøtte'-ikonet.
-I denne delen skal du jobbe med et lite datasett om diabetes som er innebygd i Scikit-learn for læringsformål. Tenk deg at du ønsket å teste en behandling for diabetikere. Maskinlæringsmodeller kan hjelpe deg med å avgjøre hvilke pasienter som vil respondere bedre på behandlingen, basert på kombinasjoner av variabler. Selv en veldig grunnleggende regresjonsmodell, når den visualiseres, kan vise informasjon om variabler som kan hjelpe deg med å organisere dine teoretiske kliniske studier.
+I denne seksjonen vil du arbeide med et lite datasett om diabetes som er innebygd i Scikit-learn for læringsformål. Tenk deg at du ønsket å teste en behandling for diabetikere. Maskinlæringsmodeller kan hjelpe deg å finne ut hvilke pasienter som vil respondere best på behandlingen, basert på kombinasjoner av variabler. Selv en veldig enkel regresjonsmodell, når den visualiseres, kan gi informasjon om variabler som kan hjelpe deg å organisere dine teoretiske kliniske studier.
-✅ Det finnes mange typer regresjonsmetoder, og hvilken du velger avhenger av spørsmålet du ønsker å besvare. Hvis du vil forutsi sannsynlig høyde for en person med en gitt alder, vil du bruke lineær regresjon, siden du søker en **numerisk verdi**. Hvis du er interessert i å finne ut om en type mat skal anses som vegansk eller ikke, ser du etter en **kategoriinndeling**, og da vil du bruke logistisk regresjon. Du vil lære mer om logistisk regresjon senere. Tenk litt på noen spørsmål du kan stille til data, og hvilken av disse metodene som ville være mest passende.
+✅ Det finnes mange typer regresjonsmetoder, og hvilken du velger avhenger av hvilket svar du søker. Hvis du ønsker å forutsi sannsynlig høyde for en person i en bestemt alder, bruker du lineær regresjon, fordi du søker en **numerisk verdi**. Om du er interessert i å finne ut om en type matlaging skal regnes som vegansk eller ikke, søker du en **kategori-tilordning**, så du bruker logistisk regresjon. Du vil lære mer om logistisk regresjon senere. Tenk litt på spørsmål du kan stille til data, og hvilken av disse metodene som ville være mest passende.
-La oss komme i gang med denne oppgaven.
+La oss sette i gang med denne oppgaven.
-### Importer biblioteker
+### Importere biblioteker
-For denne oppgaven skal vi importere noen biblioteker:
+For denne oppgaven vil vi importere noen biblioteker:
-- **matplotlib**. Et nyttig [verktøy for grafer](https://matplotlib.org/) som vi skal bruke til å lage en linjediagram.
-- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) er et nyttig bibliotek for håndtering av numeriske data i Python.
+- **matplotlib**. Det er et nyttig [grafikkverktøy](https://matplotlib.org/) og vi vil bruke det til å lage en linjegraf.
+- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) er et nyttig bibliotek for å håndtere numeriske data i Python.
- **sklearn**. Dette er [Scikit-learn](https://scikit-learn.org/stable/user_guide.html)-biblioteket.
-Importer noen biblioteker for å hjelpe med oppgavene dine.
+Importer noen biblioteker som hjelper deg med oppgavene.
-1. Legg til imports ved å skrive følgende kode:
+1. Legg til importene ved å skrive følgende kode:
```python
import matplotlib.pyplot as plt
@@ -122,24 +123,24 @@ Importer noen biblioteker for å hjelpe med oppgavene dine.
from sklearn import datasets, linear_model, model_selection
```
- Over importerer du `matplotlib`, `numpy`, og du importerer `datasets`, `linear_model` og `model_selection` fra `sklearn`. `model_selection` brukes til å dele data i trenings- og testsett.
+ Ovenfor importerer du `matplotlib`, `numpy` og du importerer `datasets`, `linear_model` og `model_selection` fra `sklearn`. `model_selection` brukes for å dele data i trenings- og testsett.
### Diabetes-datasettet
-Det innebygde [diabetes-datasettet](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) inkluderer 442 datasettprøver om diabetes, med 10 funksjonsvariabler, inkludert:
+Det innebygde [diabetes-datasettet](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) inkluderer 442 datapunkter om diabetes, med 10 egenskapsvariabler, hvor noen inkluderer:
-- age: alder i år
+- alder: alder i år
- bmi: kroppsmasseindeks
- bp: gjennomsnittlig blodtrykk
- s1 tc: T-celler (en type hvite blodceller)
-✅ Dette datasettet inkluderer konseptet 'kjønn' som en funksjonsvariabel viktig for forskning på diabetes. Mange medisinske datasett inkluderer denne typen binær klassifisering. Tenk litt på hvordan slike kategoriseringer kan ekskludere visse deler av befolkningen fra behandlinger.
+✅ Dette datasettet inkluderer begrepet 'kjønn' som en egenskapsvariabel som er viktig i diabetesforskning. Mange medisinske datasett inkluderer denne typen binær klassifisering. Tenk litt på hvordan slike kategoriseringer kan ekskludere deler av befolkningen fra behandlinger.
-Nå, last inn X- og y-dataene.
+Nå laster vi inn X- og y-dataene.
-> 🎓 Husk, dette er overvåket læring, og vi trenger et navngitt 'y'-mål.
+> 🎓 Husk, dette er veiledet læring, og vi trenger et navngitt 'y'-mål.
-I en ny kodecelle, last inn diabetes-datasettet ved å kalle `load_diabetes()`. Inputen `return_X_y=True` signaliserer at `X` vil være en datamatrise, og `y` vil være regresjonsmålet.
+I en ny kodecelle, last diabetes-datasettet ved å kalle `load_diabetes()`. Inndataen `return_X_y=True` signaliserer at `X` vil være en datamatris, og `y` vil være regresjonsmålet.
1. Legg til noen print-kommandoer for å vise formen på datamatrisen og dens første element:
@@ -149,9 +150,9 @@ I en ny kodecelle, last inn diabetes-datasettet ved å kalle `load_diabetes()`.
print(X[0])
```
- Det du får tilbake som svar, er en tuple. Det du gjør, er å tilordne de to første verdiene i tuplen til henholdsvis `X` og `y`. Lær mer [om tupler](https://wikipedia.org/wiki/Tuple).
+ Det du får tilbake som svar, er en tuple. Det du gjør er å tildele de to første verdiene fra tuplen til henholdsvis `X` og `y`. Les mer [om tuples](https://wikipedia.org/wiki/Tuple).
- Du kan se at disse dataene har 442 elementer formet i matriser med 10 elementer:
+ Du kan se at dette datasettet har 442 elementer formet som arrays med 10 elementer:
```text
(442, 10)
@@ -159,39 +160,39 @@ I en ny kodecelle, last inn diabetes-datasettet ved å kalle `load_diabetes()`.
-0.04340085 -0.00259226 0.01990842 -0.01764613]
```
- ✅ Tenk litt på forholdet mellom dataene og regresjonsmålet. Lineær regresjon forutsier forholdet mellom funksjonen X og målvariabelen y. Kan du finne [målet](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) for diabetes-datasettet i dokumentasjonen? Hva demonstrerer dette datasettet, gitt målet?
+ ✅ Tenk litt over sammenhengen mellom dataene og regresjonsmålet. Lineær regresjon forutsier sammenhenger mellom egenskap X og målvariabel y. Kan du finne [målet](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) for diabetes-datasettet i dokumentasjonen? Hva demonstrerer dette datasettet, gitt målet?
-2. Velg deretter en del av dette datasettet for å plotte ved å velge den tredje kolonnen i datasettet. Du kan gjøre dette ved å bruke `:`-operatoren for å velge alle rader, og deretter velge den tredje kolonnen ved hjelp av indeksen (2). Du kan også omforme dataene til å være en 2D-matrise - som kreves for plotting - ved å bruke `reshape(n_rows, n_columns)`. Hvis en av parameterne er -1, beregnes den tilsvarende dimensjonen automatisk.
+2. Deretter velger du en del av dette datasettet å plotte ved å velge den 3. kolonnen av datasettet. Du kan gjøre dette ved å bruke `:`-operatoren for å velge alle rader, og deretter velge 3. kolonne med indeksen (2). Du kan også endre formen på dataene til å være en 2D-array - slik som kreves for plotting - ved hjelp av `reshape(n_rows, n_columns)`. Om en av parameterne er -1, regnes den tilsvarende dimensjonen automatisk ut.
```python
X = X[:, 2]
X = X.reshape((-1,1))
```
- ✅ Når som helst, skriv ut dataene for å sjekke formen.
+ ✅ Når som helst, print ut dataene for å sjekke formen.
-3. Nå som du har data klare til å bli plottet, kan du se om en maskin kan hjelpe med å bestemme en logisk inndeling mellom tallene i dette datasettet. For å gjøre dette, må du dele både dataene (X) og målet (y) i test- og treningssett. Scikit-learn har en enkel måte å gjøre dette på; du kan dele testdataene dine på et gitt punkt.
+3. Når du har data klare for plotting, kan du se om en maskin kan hjelpe til med å bestemme en logisk oppdeling mellom tallene i dette datasettet. For å gjøre dette må du splitte både data (X) og mål (y) i test- og treningssett. Scikit-learn har en enkel måte å gjøre dette på; du kan dele testdata på et gitt punkt.
```python
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33)
```
-4. Nå er du klar til å trene modellen din! Last inn den lineære regresjonsmodellen og tren den med X- og y-treningssettene dine ved å bruke `model.fit()`:
+4. Nå er du klar til å trene modellen din! Last inn lineær regresjonsmodell og tren den med dine X- og y-treningssett ved bruk av `model.fit()`:
```python
model = linear_model.LinearRegression()
model.fit(X_train, y_train)
```
- ✅ `model.fit()` er en funksjon du vil se i mange ML-biblioteker som TensorFlow.
+ ✅ `model.fit()` er en funksjon du vil se i mange ML-biblioteker som TensorFlow
-5. Deretter lager du en prediksjon ved hjelp av testdataene, ved å bruke funksjonen `predict()`. Dette vil brukes til å tegne linjen mellom datagruppene.
+5. Lag så en prediksjon ved bruk av testdata, med funksjonen `predict()`. Dette brukes for å tegne linjen mellom datagruppene.
```python
y_pred = model.predict(X_test)
```
-6. Nå er det på tide å vise dataene i et diagram. Matplotlib er et veldig nyttig verktøy for denne oppgaven. Lag et spredningsdiagram av alle X- og y-testdataene, og bruk prediksjonen til å tegne en linje på det mest passende stedet mellom modellens datagrupper.
+6. Nå er det tid til å vise dataene i et plott. Matplotlib er et svært nyttig verktøy for denne oppgaven. Lag et spredningsplott av alle X- og y-testdata, og bruk prediksjonen til å tegne en linje på det mest passende stedet, mellom modellens datagruppene.
```python
plt.scatter(X_test, y_test, color='black')
@@ -202,22 +203,24 @@ I en ny kodecelle, last inn diabetes-datasettet ved å kalle `load_diabetes()`.
plt.show()
```
- 
-✅ Tenk litt over hva som skjer her. En rett linje går gjennom mange små datapunkter, men hva gjør den egentlig? Kan du se hvordan du bør kunne bruke denne linjen til å forutsi hvor et nytt, ukjent datapunkt bør passe i forhold til y-aksen i plottet? Prøv å sette ord på den praktiske bruken av denne modellen.
+ 
+
+
+ ✅ Tenk litt på hva som skjer her. En rett linje går gjennom mange små datapunkter, men hva gjør den egentlig? Kan du se hvordan du skal kunne bruke denne linjen til å forutsi hvor et nytt, usett datapunkt bør passe i forhold til plottets y-akse? Prøv å sette ord på den praktiske bruken av denne modellen.
Gratulerer, du har bygget din første lineære regresjonsmodell, laget en prediksjon med den, og vist den i et plott!
---
## 🚀Utfordring
-Plott en annen variabel fra dette datasettet. Hint: rediger denne linjen: `X = X[:,2]`. Gitt målet for dette datasettet, hva kan du oppdage om utviklingen av diabetes som sykdom?
-## [Quiz etter forelesning](https://ff-quizzes.netlify.app/en/ml/)
+Plott en annen variabel fra dette datasettet. Tips: rediger denne linjen: `X = X[:,2]`. Gitt målet i dette datasettet, hva klarer du å oppdage om utviklingen av diabetes som sykdom?
+## [Quiz etter forelesningen](https://ff-quizzes.netlify.app/en/ml/)
## Gjennomgang & Selvstudium
-I denne opplæringen jobbet du med enkel lineær regresjon, i stedet for univariat eller multippel lineær regresjon. Les litt om forskjellene mellom disse metodene, eller ta en titt på [denne videoen](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef).
+I denne veiledningen jobbet du med enkel lineær regresjon, snarere enn univariat eller multippel lineær regresjon. Les litt om forskjellene mellom disse metodene, eller ta en titt på [denne videoen](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef)
-Les mer om konseptet regresjon og tenk over hvilke typer spørsmål som kan besvares med denne teknikken. Ta denne [opplæringen](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) for å utdype forståelsen din.
+Les mer om konseptet regresjon og tenk over hvilke typer spørsmål som kan besvares med denne teknikken. Ta denne [veiledningen](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) for å utdype forståelsen din.
## Oppgave
@@ -225,5 +228,7 @@ Les mer om konseptet regresjon og tenk over hvilke typer spørsmål som kan besv
---
-**Ansvarsfraskrivelse**:
-Dette dokumentet er oversatt ved hjelp av AI-oversettelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selv om vi tilstreber nøyaktighet, vennligst vær oppmerksom på at automatiske oversettelser kan inneholde feil eller unøyaktigheter. Det originale dokumentet på sitt opprinnelige språk bør anses som den autoritative kilden. For kritisk informasjon anbefales profesjonell menneskelig oversettelse. Vi er ikke ansvarlige for eventuelle misforståelser eller feiltolkninger som oppstår ved bruk av denne oversettelsen.
\ No newline at end of file
+
+**Ansvarsfraskrivelse**:
+Dette dokumentet er oversatt ved hjelp av AI-oversettelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selv om vi streber etter nøyaktighet, vær oppmerksom på at automatiske oversettelser kan inneholde feil eller unøyaktigheter. Det opprinnelige dokumentet på originalspråket skal betraktes som den autoritative kilden. For kritisk informasjon anbefales profesjonell menneskelig oversettelse. Vi er ikke ansvarlige for eventuelle misforståelser eller feiltolkninger som oppstår ved bruk av denne oversettelsen.
+
\ No newline at end of file
diff --git a/translations/no/2-Regression/2-Data/README.md b/translations/no/2-Regression/2-Data/README.md
index 4a9e96129..edcb2c8b4 100644
--- a/translations/no/2-Regression/2-Data/README.md
+++ b/translations/no/2-Regression/2-Data/README.md
@@ -1,62 +1,62 @@
# Bygg en regresjonsmodell med Scikit-learn: forbered og visualiser data
-
+
Infografikk av [Dasani Madipalli](https://twitter.com/dasani_decoded)
-## [Quiz før forelesning](https://ff-quizzes.netlify.app/en/ml/)
+## [Pre-forelesningsquiz](https://ff-quizzes.netlify.app/en/ml/)
-> ### [Denne leksjonen er tilgjengelig i R!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
+> ### [Denne leksjonen er tilgjengelig på R!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
## Introduksjon
-Nå som du har satt opp verktøyene du trenger for å begynne å bygge maskinlæringsmodeller med Scikit-learn, er du klar til å begynne å stille spørsmål til dataene dine. Når du jobber med data og bruker ML-løsninger, er det svært viktig å forstå hvordan du stiller de riktige spørsmålene for å utnytte potensialet i datasettet ditt.
+Nå som du er satt opp med verktøyene du trenger for å begynne med maskinlæringsmodellbygging med Scikit-learn, er du klar til å begynne å stille spørsmål til dataene dine. Når du jobber med data og anvender ML-løsninger, er det veldig viktig å forstå hvordan du stiller de riktige spørsmålene for å ordentlig låse opp potensialet i datasettet ditt.
I denne leksjonen vil du lære:
- Hvordan forberede dataene dine for modellbygging.
-- Hvordan bruke Matplotlib til datavisualisering.
+- Hvordan bruke Matplotlib for datavisualisering.
+- Hvordan bruke Seaborn for mer uttrykksfull datavisualisering.
-## Stille de riktige spørsmålene til dataene dine
+## Å stille det rette spørsmålet til dataene dine
-Spørsmålet du ønsker svar på vil avgjøre hvilken type ML-algoritmer du vil bruke. Og kvaliteten på svaret du får tilbake vil være sterkt avhengig av kvaliteten på dataene dine.
+Spørsmålet du trenger svar på vil avgjøre hvilken type ML-algoritmer du vil benytte. Og kvaliteten på svaret du får tilbake vil være sterkt avhengig av arten til dataene dine.
-Ta en titt på [dataene](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) som er gitt for denne leksjonen. Du kan åpne denne .csv-filen i VS Code. Et raskt blikk viser umiddelbart at det finnes tomme felter og en blanding av tekst og numeriske data. Det er også en merkelig kolonne kalt 'Package' hvor dataene er en blanding av 'sacks', 'bins' og andre verdier. Dataene er faktisk litt rotete.
+Ta en titt på [dataene](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) som er gitt til denne leksjonen. Du kan åpne denne .csv-filen i VS Code. En rask gjennomgang viser umiddelbart at det finnes tomme felt og en blanding av tekst og numeriske data. Det er også en merkelig kolonne kalt 'Package' der dataene er en blanding av 'sacks', 'bins' og andre verdier. Dataene er altså litt rotete.
-[](https://youtu.be/5qGjczWTrDQ "ML for nybegynnere - Hvordan analysere og rense et datasett")
+[](https://youtu.be/5qGjczWTrDQ "ML for nybegynnere - Hvordan analysere og rydde et datasett")
-> 🎥 Klikk på bildet over for en kort video som viser hvordan du forbereder dataene for denne leksjonen.
+> 🎥 Klikk på bildet over for en kort video som går gjennom forberedelse av dataene for denne leksjonen.
-Det er faktisk ikke veldig vanlig å få et datasett som er helt klart til bruk for å lage en ML-modell rett ut av boksen. I denne leksjonen vil du lære hvordan du forbereder et rådatasett ved hjelp av standard Python-biblioteker. Du vil også lære ulike teknikker for å visualisere dataene.
+Det er faktisk ikke veldig vanlig å få et datasett som er helt klart til bruk for å lage en ML-modell rett ut av boksen. I denne leksjonen vil du lære hvordan du forbereder et rått datasett ved å bruke standard Python-biblioteker. Du vil også lære forskjellige teknikker for å visualisere dataene.
-## Case-studie: 'gresskarmarkedet'
+## Casestudie: 'gresskarmarkedet'
-I denne mappen finner du en .csv-fil i rotmappen `data` kalt [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) som inneholder 1757 linjer med data om markedet for gresskar, sortert i grupper etter by. Dette er rådata hentet fra [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) distribuert av United States Department of Agriculture.
+I denne mappen finner du en .csv-fil i rotmappen `data` kalt [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) som inneholder 1757 linjer med data om markedet for gresskar, sortert etter by. Dette er rådata hentet fra [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) distribuert av United States Department of Agriculture.
-### Forberede data
+### Forberedelse av data
-Disse dataene er i det offentlige domene. De kan lastes ned i mange separate filer, per by, fra USDA-nettstedet. For å unngå for mange separate filer har vi slått sammen alle bydataene til ett regneark, så vi har allerede _forberedt_ dataene litt. La oss nå ta en nærmere titt på dataene.
+Disse dataene er i det offentlige domene. De kan lastes ned i mange separate filer, per by, fra USDA-nettsiden. For å unngå for mange separate filer har vi slått sammen all bydata til ett regneark, så vi har allerede _forberedt_ dataene litt. La oss nå se nærmere på dataene.
-### Gresskardata - tidlige konklusjoner
+### Gresskar-dataene - tidlige konklusjoner
-Hva legger du merke til med disse dataene? Du har allerede sett at det er en blanding av tekst, tall, tomme felter og merkelige verdier som du må forstå.
+Hva legger du merke til med disse dataene? Du har allerede sett at det er en blanding av tekst, tall, tomme felt og merkelige verdier som du må få mening i.
-Hvilket spørsmål kan du stille til disse dataene ved hjelp av en regresjonsteknikk? Hva med "Forutsi prisen på et gresskar som selges i løpet av en gitt måned". Når du ser på dataene igjen, er det noen endringer du må gjøre for å skape den datastrukturen som er nødvendig for oppgaven.
+Hvilket spørsmål kan du stille til disse dataene med en regresjonsteknikk? Hva med "Forutsi prisen på et gresskar for salg i en gitt måned". Ser man igjen på dataene, er det noen endringer du må gjøre for å skape datastrukturen som er nødvendig for oppgaven.
+## Øvelse - analyser gresskardata
-## Øvelse - analyser gresskardataene
-
-La oss bruke [Pandas](https://pandas.pydata.org/), (navnet står for `Python Data Analysis`) et verktøy som er svært nyttig for å forme data, til å analysere og forberede disse gresskardataene.
+La oss bruke [Pandas](https://pandas.pydata.org/), (navnet står for `Python Data Analysis`), et verktøy som er veldig nyttig for å forme data, for å analysere og forberede disse gresskardataene.
### Først, sjekk for manglende datoer
-Du må først ta steg for å sjekke for manglende datoer:
+Du må først ta grep for å sjekke om det mangler datoer:
-1. Konverter datoene til et månedsformat (disse er amerikanske datoer, så formatet er `MM/DD/YYYY`).
+1. Konverter datoene til måned-format (dette er amerikanske datoer, så formatet er `MM/DD/YYYY`).
2. Ekstraher måneden til en ny kolonne.
-Åpne _notebook.ipynb_-filen i Visual Studio Code og importer regnearket til en ny Pandas dataframe.
+Åpne filen _notebook.ipynb_ i Visual Studio Code og importer regnearket til en ny Pandas-dataframe.
-1. Bruk funksjonen `head()` for å se de første fem radene.
+1. Bruk `head()`-funksjonen for å se de første fem radene.
```python
import pandas as pd
@@ -64,28 +64,28 @@ Du må først ta steg for å sjekke for manglende datoer:
pumpkins.head()
```
- ✅ Hvilken funksjon ville du brukt for å se de siste fem radene?
+ ✅ Hvilken funksjon vil du bruke for å vise de siste fem radene?
-1. Sjekk om det er manglende data i den nåværende dataframen:
+1. Sjekk om det finnes manglende data i den nåværende dataframe:
```python
pumpkins.isnull().sum()
```
- Det er manglende data, men kanskje det ikke vil ha betydning for oppgaven.
+ Det finnes manglende data, men kanskje det ikke spiller noen rolle for oppgaven.
-1. For å gjøre dataframen din enklere å jobbe med, velg kun de kolonnene du trenger, ved å bruke funksjonen `loc` som henter ut en gruppe rader (gitt som første parameter) og kolonner (gitt som andre parameter) fra den originale dataframen. Uttrykket `:` i eksempelet nedenfor betyr "alle rader".
+1. For å gjøre dataframen lettere å jobbe med, velg kun kolonnene du trenger, ved å bruke `loc`-funksjonen som tar ut en gruppe rader (ført som første parameter) og kolonner (ført som andre parameter) fra den opprinnelige dataframen. Uttrykket `:` her betyr "alle rader".
```python
columns_to_select = ['Package', 'Low Price', 'High Price', 'Date']
pumpkins = pumpkins.loc[:, columns_to_select]
```
-### Deretter, bestem gjennomsnittsprisen på gresskar
+### For det andre, bestem gjennomsnittsprisen på gresskar
-Tenk på hvordan du kan bestemme gjennomsnittsprisen på et gresskar i en gitt måned. Hvilke kolonner ville du valgt for denne oppgaven? Hint: du trenger 3 kolonner.
+Tenk på hvordan du kan bestemme gjennomsnittsprisen på et gresskar i en gitt måned. Hvilke kolonner vil du velge for denne oppgaven? Hint: du vil trenge 3 kolonner.
-Løsning: ta gjennomsnittet av kolonnene `Low Price` og `High Price` for å fylle den nye kolonnen Price, og konverter Date-kolonnen til kun å vise måneden. Heldigvis, ifølge sjekken ovenfor, er det ingen manglende data for datoer eller priser.
+Løsning: ta gjennomsnittet av kolonnene `Low Price` og `High Price` for å fylle ut en ny Pris-kolonne, og konverter Dato-kolonnen slik at den kun viser måneden. Heldigvis, ifølge sjekken ovenfor, mangler det ikke data for datoer eller priser.
1. For å beregne gjennomsnittet, legg til følgende kode:
@@ -96,37 +96,37 @@ Løsning: ta gjennomsnittet av kolonnene `Low Price` og `High Price` for å fyll
```
- ✅ Du kan gjerne skrive ut data du ønsker å sjekke ved å bruke `print(month)`.
+ ✅ Føl deg fri til å printe data du vil sjekke med `print(month)`.
-2. Kopier deretter de konverterte dataene til en ny Pandas dataframe:
+2. Nå, kopier de konverterte dataene til en fersk Pandas-dataframe:
```python
new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price})
```
- Hvis du skriver ut dataframen din, vil du se et rent og ryddig datasett som du kan bruke til å bygge din nye regresjonsmodell.
+ Å printe ut dataframen vil vise deg et rent, ryddig datasett som du kan bygge din nye regresjonsmodell på.
### Men vent! Det er noe merkelig her
-Hvis du ser på kolonnen `Package`, blir gresskar solgt i mange forskjellige konfigurasjoner. Noen blir solgt i '1 1/9 bushel'-mål, og noen i '1/2 bushel'-mål, noen per gresskar, noen per pund, og noen i store bokser med varierende bredder.
+Hvis du ser på `Package`-kolonnen, selges gresskar i mange forskjellige konfigurasjoner. Noen selges i '1 1/9 bushel' mål, noen i '1/2 bushel' mål, noen per gresskar, noen per pund, og noen i store kasser med varierende bredder.
-> Gresskar virker veldig vanskelig å veie konsekvent
+> Gresskar virker veldig vanskelige å veie konsistent
-Når du graver i de originale dataene, er det interessant at alt med `Unit of Sale` lik 'EACH' eller 'PER BIN' også har `Package`-typen per tomme, per bin, eller 'each'. Gresskar virker veldig vanskelig å veie konsekvent, så la oss filtrere dem ved å velge kun gresskar med strengen 'bushel' i kolonnen `Package`.
+Ser man nærmere på originaldataene, er det interessant at alt med `Unit of Sale` lik 'EACH' eller 'PER BIN' også har `Package`-typen per tomme, per bin, eller 'each'. Gresskar virker veldig vanskelige å veie konsistent, så la oss filtrere de ved kun å velge gresskar med teksten 'bushel' i `Package`-kolonnen.
-1. Legg til et filter øverst i filen, under den opprinnelige .csv-importen:
+1. Legg til et filter øverst i filen, under den første .csv-importen:
```python
pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]
```
- Hvis du skriver ut dataene nå, kan du se at du kun får de 415 eller så radene med data som inneholder gresskar per bushel.
+ Hvis du printer dataene nå, ser du at du kun får ca 415 rader med data som inneholder gresskar målt i bushels.
-### Men vent! Det er én ting til å gjøre
+### Men vent! Det er en ting til å gjøre
-La du merke til at bushel-mengden varierer per rad? Du må normalisere prisingen slik at du viser prisen per bushel, så gjør litt matematikk for å standardisere det.
+Merket du at bushelfeltet varierer per rad? Du må normalisere prisene slik at de vises per bushel, så gjør litt matematikk for å standardisere dette.
-1. Legg til disse linjene etter blokken som oppretter new_pumpkins-dataframen:
+1. Legg til disse linjene etter blokken som lager new_pumpkins dataframen:
```python
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9)
@@ -134,38 +134,38 @@ La du merke til at bushel-mengden varierer per rad? Du må normalisere prisingen
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2)
```
-✅ Ifølge [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), avhenger vekten av en bushel av typen produkt, siden det er et volummål. "En bushel med tomater, for eksempel, skal veie 56 pund... Blader og grønnsaker tar opp mer plass med mindre vekt, så en bushel med spinat er bare 20 pund." Det er ganske komplisert! La oss ikke bry oss med å gjøre en bushel-til-pund-konvertering, og i stedet prise per bushel. All denne studien av bushels med gresskar viser imidlertid hvor viktig det er å forstå naturen til dataene dine!
+✅ Ifølge [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), avhenger vekten til en bushel av typen produkt, siden det er et volum-mål. "En bushel tomater, for eksempel, skal veie 56 pounds... Blader og grønnsaker tar opp mer plass med mindre vekt, så en bushel spinat veier kun 20 pounds." Det er ganske komplisert! La oss ikke bry oss med å konvertere fra bushel til pund, og i stedet prise per bushel. All denne studeringen av bushels med gresskar viser hvor viktig det er å forstå naturen til dataene dine!
-Nå kan du analysere prisingen per enhet basert på deres bushel-mål. Hvis du skriver ut dataene en gang til, kan du se hvordan det er standardisert.
+Nå kan du analysere prisingen per enhet basert på bushelmålingen. Hvis du printer ut dataene enda en gang, kan du se hvordan de er standardisert.
-✅ La du merke til at gresskar som selges per halv-bushel er veldig dyre? Kan du finne ut hvorfor? Hint: små gresskar er mye dyrere enn store, sannsynligvis fordi det er så mange flere av dem per bushel, gitt det ubrukte rommet som tas opp av ett stort hullete pai-gresskar.
+✅ La du merke til at gresskar solgt per halv bushel er veldig dyre? Kan du finne ut hvorfor? Hint: små gresskar er mye dyrere enn store, sannsynligvis fordi det er mange flere av dem per bushel, gitt plassen som er ubrukt av ett stort hulrommelig pai-gresskar.
## Visualiseringsstrategier
-En del av rollen til en dataforsker er å demonstrere kvaliteten og naturen til dataene de jobber med. For å gjøre dette lager de ofte interessante visualiseringer, eller diagrammer, grafer og tabeller, som viser ulike aspekter av dataene. På denne måten kan de visuelt vise relasjoner og mangler som ellers er vanskelig å avdekke.
+En del av rollen som dataforsker er å demonstrere kvaliteten og arten av dataene de jobber med. For å gjøre dette lager de ofte interessante visualiseringer, eller plott, grafer og diagrammer, som viser ulike aspekter ved dataene. På denne måten kan de visuelt vise forhold og hull som ellers er vanskelige å oppdage.
[](https://youtu.be/SbUkxH6IJo0 "ML for nybegynnere - Hvordan visualisere data med Matplotlib")
-> 🎥 Klikk på bildet over for en kort video som viser hvordan du visualiserer dataene for denne leksjonen.
+> 🎥 Klikk på bildet over for en kort video som går gjennom visualiseringen av dataene for denne leksjonen.
-Visualiseringer kan også hjelpe med å avgjøre hvilken maskinlæringsteknikk som er mest passende for dataene. Et spredningsdiagram som ser ut til å følge en linje, for eksempel, indikerer at dataene er en god kandidat for en lineær regresjonsøvelse.
+Visualiseringer kan også hjelpe til med å bestemme hvilken maskinlæringsteknikk som passer best for dataene. Et spredningsdiagram som ser ut til å følge en linje, indikerer for eksempel at dataene er en god kandidat for en lineær regresjonsøvelse.
-Et datavisualiseringsbibliotek som fungerer godt i Jupyter-notebooks er [Matplotlib](https://matplotlib.org/) (som du også så i forrige leksjon).
+Et datavisualiseringsbibliotek som fungerer bra i Jupyter-notebooks er [Matplotlib](https://matplotlib.org/) (som du også så i forrige leksjon).
-> Få mer erfaring med datavisualisering i [disse opplæringene](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott).
+> Få mer erfaring med datavisualisering i [disse veiledningene](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott).
-## Øvelse - eksperimenter med Matplotlib
+## Øvelse - prøv deg med Matplotlib
-Prøv å lage noen grunnleggende diagrammer for å vise den nye dataframen du nettopp opprettet. Hva ville et grunnleggende linjediagram vise?
+Prøv å lage noen grunnleggende plott for å vise den nye dataframen du nettopp opprettet. Hva ville et enkelt linjediagram vise?
-1. Importer Matplotlib øverst i filen, under Pandas-importen:
+1. Importer Matplotlib øverst i filen, under import av Pandas:
```python
import matplotlib.pyplot as plt
```
1. Kjør hele notebooken på nytt for å oppdatere.
-1. Nederst i notebooken, legg til en celle for å plotte dataene som en boks:
+1. Legg til en celle nederst i notebooken for å plotte dataene som en boks:
```python
price = new_pumpkins.Price
@@ -174,15 +174,15 @@ Prøv å lage noen grunnleggende diagrammer for å vise den nye dataframen du ne
plt.show()
```
- 
+ 
- Er dette et nyttig diagram? Overrasker noe ved det deg?
+ Er dette et nyttig diagram? Overrasker noe deg med det?
- Det er ikke spesielt nyttig, da alt det gjør er å vise dataene dine som en spredning av punkter i en gitt måned.
+ Det er ikke spesielt nyttig da alt det gjør er å vise dataene dine som en spredning av punkter i en gitt måned.
### Gjør det nyttig
-For å få diagrammer til å vise nyttige data, må du vanligvis gruppere dataene på en eller annen måte. La oss prøve å lage et diagram hvor y-aksen viser månedene og dataene demonstrerer distribusjonen av data.
+For å få diagrammer til å vise nyttig data må du vanligvis gruppere dataene på en eller annen måte. La oss prøve å lage et plott hvor y-aksen viser månedene og dataene viser fordelingen av data.
1. Legg til en celle for å lage et gruppert stolpediagram:
@@ -191,27 +191,104 @@ For å få diagrammer til å vise nyttige data, må du vanligvis gruppere dataen
plt.ylabel("Pumpkin Price")
```
- 
+ 
+
+ Dette er en mer nyttig datavisualisering! Det ser ut til å indikere at høyeste pris for gresskar skjer i september og oktober. Stemmer dette med dine forventninger? Hvorfor eller hvorfor ikke?
+
+## Øvelse - prøv deg med Seaborn
+
+Matplotlib er kraftig, men det kan kreve mye kode å produsere et polert diagram. [Seaborn](https://seaborn.pydata.org/) er et bibliotek bygget _oppe på_ Matplotlib som er designet for statistisk datavisualisering. Det fungerer direkte med Pandas-dataframes, bruker attraktive standardstiler, og lar deg lage informative plott med mye mindre kode. Fordi Seaborn returnerer Matplotlib-objekter, kan du fortsatt bruke alt du allerede vet om Matplotlib for å finjustere resultatet.
+
+> Hvis du ikke allerede har Seaborn installert, installer det med `pip install seaborn`.
+
+1. Importer Seaborn øverst i notebooken, under de andre importene. Det er vanlig å importere det som `sns`:
+
+ ```python
+ import seaborn as sns
+ ```
+
+### Spredningsplott for å vise sammenhenger
+
+En stor del av å utforske data før man bygger en modell, er å se etter _sammenhenger_ mellom variabler. Et [spredningsdiagram](https://en.wikipedia.org/wiki/Scatter_plot) er et av de beste verktøyene for dette: hvis punktene ser ut til å følge en linje, kan de to variablene være korrelert, noe som er et godt tegn på at en lineær regresjonsmodell kan fungere.
+
+1. Lag på nytt spredningsplottet fra før som viser pris til måned, denne gangen using Seaborns [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) (relasjonsplot), som jobber direkte med kolonnene i dataframen:
+
+ ```python
+ sns.relplot(x="Price", y="Month", data=new_pumpkins)
+ ```
+
+ 
+
+ Legg merke til hvordan du sender inn _kolonnenavnene_ og dataframen, og Seaborn ordner med akseetikettene for deg.
+
+2. Du kan bytte til et linjediagram ved å sende `kind="line"`. Seaborn tegner til og med et skyggebelte som viser konfidensintervallet rundt linjen:
+
+ ```python
+ sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins)
+ ```
+
+ 
+
+ Dette spesielle datasettet er ganske støyete, så et linjediagram er ikke det tydeligste valget her – men det viser hvor enkelt du kan bytte diagramtype i Seaborn.
+
+### Stolpediagrammer for å vise fordelinger
+
+
+Tidligere grupperte du dataene manuelt for å lage et stolpediagram med Matplotlib. Seaborns [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) (kategorisk diagram) kan gjøre gruppering og aggregering for deg. Som standard viser `kind="bar"` gjennomsnittet for hver kategori sammen med en svart linje som indikerer konfidensintervallet.
+
+1. Lag et stolpediagram av gjennomsnittspris per måned:
+
+ ```python
+ sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar")
+ ```
+
+ 
+
+ Dette bekrefter det du så med Matplotlib — prisene topper seg rundt september og oktober — men Seaborn visualiserer også hvor mye prisen _varierer_ innenfor hver måned.
+
+### Varmekart for å vise korrelasjoner
+
+Spredningsdiagrammer sammenligner to variabler om gangen. Når du har flere numeriske kolonner, lar et [varmekart](https://en.wikipedia.org/wiki/Heat_map) deg se styrken på sammenhengen mellom _hvert_ par av kolonner samtidig. Dette er en vanlig måte å oppdage hvilke funksjoner som er mest korrelert før du velger hva du skal bruke i en modell (og samme type diagram brukes senere til å vise forvirringsmatriser i klassifisering).
+
+1. Bygg en korrelasjonsmatrise med Pandas, og tegn den deretter med Seaborns [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html). `annot=True`-alternativet skriver ut korrelasjonsverdiene i hver celle:
+
+ ```python
+ correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()
+ sns.heatmap(correlations, annot=True, cmap="coolwarm")
+ ```
+
+ 
+
+ Verdier nær `1` (eller `-1`) betyr at kolonnene er sterkt _lineært_ korrelert. Legg merke til hvordan `Low Price` og `High Price` er nesten perfekt korrelert. `Month` viser derimot bare en svak lineær korrelasjon med pris — selv om stolpediagrammet over avslørte en tydelig sesongmessig topp i september og oktober. Det er en viktig lærdom: korrelasjonskoeffisienten måler kun _rettlinjede_ sammenhenger, så den kan overse sesongbaserte eller andre ikke-lineære mønstre. ✅ Hvorfor er det nyttig å se både et varmekart *og* diagrammer som stolpediagrammet før man bestemmer seg for hvilke kolonner man skal bruke?
+
+### Matplotlib eller Seaborn?
+
+Begge bibliotekene er verdt å kjenne til:
+
+- **Matplotlib** gir deg detaljert kontroll over hvert element i et diagram og er grunnlaget de fleste andre Python-plottebiblioteker bygger på.
+- **Seaborn** tilbyr funksjoner på høyere nivå og attraktive standardinnstillinger for statistiske diagrammer, fungerer direkte med dataframes, og er ofte raskere for utforskende dataanalyse.
- Dette er en mer nyttig datavisualisering! Det ser ut til å indikere at den høyeste prisen for gresskar forekommer i september og oktober. Stemmer det med forventningene dine? Hvorfor eller hvorfor ikke?
+En vanlig arbeidsflyt er å bruke Seaborn for raskt å utforske dataene dine, og deretter gå over til Matplotlib når du trenger å tilpasse detaljer.
---
## 🚀Utfordring
-Utforsk de forskjellige typene visualiseringer som Matplotlib tilbyr. Hvilke typer er mest passende for regresjonsproblemer?
+Utforsk de forskjellige typene visualisering som Matplotlib og Seaborn tilbyr. Hvilke typer passer best for regresjonsproblemer?
## [Quiz etter forelesning](https://ff-quizzes.netlify.app/en/ml/)
-## Gjennomgang & Selvstudium
+## Gjennomgang og selvstudium
-Ta en titt på de mange måtene å visualisere data på. Lag en liste over de ulike bibliotekene som er tilgjengelige og noter hvilke som er best for gitte typer oppgaver, for eksempel 2D-visualiseringer vs. 3D-visualiseringer. Hva oppdager du?
+Se på de mange måtene å visualisere data på. Lag en liste over de ulike bibliotekene som finnes, og noter hvilke som er best for gitte typer oppgaver, for eksempel 2D-visualiseringer vs. 3D-visualiseringer. Hva oppdager du?
## Oppgave
-[Utforsk visualisering](assignment.md)
+[Utforske visualisering](assignment.md)
---
-**Ansvarsfraskrivelse**:
-Dette dokumentet er oversatt ved hjelp av AI-oversettelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selv om vi tilstreber nøyaktighet, vennligst vær oppmerksom på at automatiske oversettelser kan inneholde feil eller unøyaktigheter. Det originale dokumentet på sitt opprinnelige språk bør anses som den autoritative kilden. For kritisk informasjon anbefales profesjonell menneskelig oversettelse. Vi er ikke ansvarlige for eventuelle misforståelser eller feiltolkninger som oppstår ved bruk av denne oversettelsen.
\ No newline at end of file
+
+**Ansvarsfraskrivelse**:
+Dette dokumentet er oversatt ved hjelp av AI-oversettelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selv om vi streber etter nøyaktighet, vær oppmerksom på at automatiske oversettelser kan inneholde feil eller unøyaktigheter. Det opprinnelige dokumentet på originalspråket skal betraktes som den autoritative kilden. For kritisk informasjon anbefales profesjonell menneskelig oversettelse. Vi er ikke ansvarlige for eventuelle misforståelser eller feiltolkninger som oppstår ved bruk av denne oversettelsen.
+
\ No newline at end of file
diff --git a/translations/no/2-Regression/2-Data/solution/notebook.ipynb b/translations/no/2-Regression/2-Data/solution/notebook.ipynb
index 037a43b56..a6256deb7 100644
--- a/translations/no/2-Regression/2-Data/solution/notebook.ipynb
+++ b/translations/no/2-Regression/2-Data/solution/notebook.ipynb
@@ -3,7 +3,9 @@
{
"cell_type": "markdown",
"metadata": {},
- "source": []
+ "source": [
+ "## Lineær regresjon for gresskar - Lekse 2\n"
+ ]
},
{
"cell_type": "code",
@@ -220,6 +222,7 @@
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
"pumpkins = pd.read_csv('../../data/US-pumpkins.csv')\n",
"\n",
"pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]\n",
@@ -383,18 +386,78 @@
"plt.ylabel(\"Pumpkin Price\")"
]
},
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Visualisering med Seaborn\n",
+ "\n",
+ "[Seaborn](https://seaborn.pydata.org/) er bygget på toppen av Matplotlib og fungerer direkte med datasett, noe som gjør det raskt å lage attraktive statistiske diagrammer med veldig lite kode.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Spredningsdiagrammer for å vise sammenhenger\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", kind=\"line\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Stolpediagrammer for å vise fordelinger\n"
+ ]
+ },
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
- "source": []
+ "source": [
+ "sns.catplot(x=\"Month\", y=\"Price\", data=new_pumpkins, kind=\"bar\")"
+ ]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "\n---\n\n**Ansvarsfraskrivelse**: \nDette dokumentet er oversatt ved hjelp av AI-oversettelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selv om vi streber etter nøyaktighet, vær oppmerksom på at automatiserte oversettelser kan inneholde feil eller unøyaktigheter. Det originale dokumentet på sitt opprinnelige språk bør anses som den autoritative kilden. For kritisk informasjon anbefales profesjonell menneskelig oversettelse. Vi er ikke ansvarlige for misforståelser eller feiltolkninger som oppstår ved bruk av denne oversettelsen.\n"
+ "### Varmekart for å vise korrelasjoner\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()\n",
+ "sns.heatmap(correlations, annot=True, cmap=\"coolwarm\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "---\n\n\n**Ansvarsfraskrivelse**:\nDette dokumentet er oversatt ved hjelp av AI-oversettelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selv om vi streber etter nøyaktighet, vær oppmerksom på at automatiske oversettelser kan inneholde feil eller unøyaktigheter. Det opprinnelige dokumentet på originalspråket skal betraktes som den autoritative kilden. For kritisk informasjon anbefales profesjonell menneskelig oversettelse. Vi er ikke ansvarlige for eventuelle misforståelser eller feiltolkninger som oppstår ved bruk av denne oversettelsen.\n\n"
]
}
],
@@ -424,13 +487,7 @@
"hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d"
}
},
- "orig_nbformat": 2,
- "coopTranslator": {
- "original_hash": "95726f0b8283628d5356a4f8eb8b4b76",
- "translation_date": "2025-09-06T11:53:21+00:00",
- "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
- "language_code": "no"
- }
+ "orig_nbformat": 2
},
"nbformat": 4,
"nbformat_minor": 2
diff --git a/translations/no/8-Reinforcement/1-QLearning/README.md b/translations/no/8-Reinforcement/1-QLearning/README.md
index 610d27242..bd86aeecc 100644
--- a/translations/no/8-Reinforcement/1-QLearning/README.md
+++ b/translations/no/8-Reinforcement/1-QLearning/README.md
@@ -1,47 +1,47 @@
-# Introduksjon til forsterkende læring og Q-Læring
+# Introduksjon til forsterkende læring og Q-læring
-
+
> Sketchnote av [Tomomi Imura](https://www.twitter.com/girlie_mac)
-Forsterkende læring involverer tre viktige konsepter: agenten, noen tilstander, og et sett med handlinger per tilstand. Ved å utføre en handling i en spesifisert tilstand, får agenten en belønning. Tenk igjen på dataspillet Super Mario. Du er Mario, du er i et spillnivå, stående ved kanten av en klippe. Over deg er det en mynt. Du som Mario, i et spillnivå, på en spesifikk posisjon ... det er din tilstand. Å ta et steg til høyre (en handling) vil føre deg over kanten, og det vil gi deg en lav numerisk score. Men å trykke på hopp-knappen vil gi deg et poeng og holde deg i live. Det er et positivt utfall og bør gi deg en positiv numerisk score.
+Forsterkende læring involverer tre viktige konsepter: agenten, noen tilstander, og et sett med handlinger per tilstand. Ved å utføre en handling i en spesifisert tilstand, gis agenten en belønning. Forestill deg igjen dataspillet Super Mario. Du er Mario, du er i et spillnivå, stående ved kanten av en klippe. Over deg er det en mynt. Du som Mario, i et spillnivå, på en spesifikk posisjon ... det er din tilstand. Å ta et steg til høyre (en handling) vil føre deg over kanten, og det vil gi deg en lav poengsum. Men, å trykke på hopp-knappen vil la deg score et poeng og du vil forbli i live. Det er et positivt utfall, og det burde gi deg en positiv numerisk poengsum.
-Ved å bruke forsterkende læring og en simulator (spillet), kan du lære hvordan du spiller spillet for å maksimere belønningen, som er å holde seg i live og score så mange poeng som mulig.
+Ved å bruke forsterkende læring og en simulator (spillet), kan du lære hvordan du spiller spillet for å maksimere belønningen, som er å holde deg i live og score så mange poeng som mulig.
[](https://www.youtube.com/watch?v=lDq_en8RNOo)
> 🎥 Klikk på bildet over for å høre Dmitry diskutere forsterkende læring
-## [Quiz før forelesning](https://ff-quizzes.netlify.app/en/ml/)
+## [Før-forelesningsquiz](https://ff-quizzes.netlify.app/en/ml/)
## Forutsetninger og oppsett
-I denne leksjonen skal vi eksperimentere med litt kode i Python. Du bør kunne kjøre Jupyter Notebook-koden fra denne leksjonen, enten på din egen datamaskin eller i skyen.
+I denne leksjonen skal vi eksperimentere med noe kode i Python. Du bør kunne kjøre Jupyter Notebook-koden fra denne leksjonen, enten på din egen datamaskin eller et sted i skyen.
-Du kan åpne [notatboken for leksjonen](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) og gå gjennom denne leksjonen for å bygge.
+Du kan åpne [leksjonsnotatboken](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) og gå gjennom denne leksjonen for å bygge.
-> **Merk:** Hvis du åpner denne koden fra skyen, må du også hente filen [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), som brukes i notatbok-koden. Legg den i samme katalog som notatboken.
+> **Merk:** Hvis du åpner denne koden fra skyen, må du også hente [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) filen, som brukes i notatbok-koden. Legg den i samme katalog som notatboken.
## Introduksjon
-I denne leksjonen skal vi utforske verdenen til **[Peter og ulven](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)**, inspirert av et musikalsk eventyr av den russiske komponisten [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev). Vi skal bruke **forsterkende læring** for å la Peter utforske sitt miljø, samle smakfulle epler og unngå å møte ulven.
+I denne leksjonen skal vi utforske verden av **[Peter og ulven](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)**, inspirert av et musikalsk eventyr av en russisk komponist, [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev). Vi skal bruke **forsterkende læring** for å la Peter utforske miljøet sitt, samle deilige epler og unngå å møte ulven.
-**Forsterkende læring** (RL) er en læringsteknikk som lar oss lære optimal oppførsel for en **agent** i et **miljø** ved å kjøre mange eksperimenter. En agent i dette miljøet bør ha et **mål**, definert av en **belønningsfunksjon**.
+**Forsterkende læring** (RL) er en læringsteknikk som gjør oss i stand til å lære optimal oppførsel av en **agent** i et **miljø** ved å kjøre mange eksperimenter. En agent i dette miljøet skal ha et **mål**, definert av en **belønningsfunksjon**.
## Miljøet
-For enkelhets skyld, la oss anta at Peters verden er et kvadratisk brett med størrelse `bredde` x `høyde`, som dette:
+For enkelhets skyld, la oss anta at Peters verden er et kvadratisk brett av størrelse `width` x `height`, som dette:
-
+
Hver celle i dette brettet kan enten være:
* **bakke**, som Peter og andre skapninger kan gå på.
-* **vann**, som man åpenbart ikke kan gå på.
-* et **tre** eller **gress**, et sted hvor man kan hvile.
-* et **eple**, som representerer noe Peter vil være glad for å finne for å mate seg selv.
+* **vann**, som du tydeligvis ikke kan gå på.
+* et **tre** eller **gress**, et sted hvor du kan hvile.
+* et **eple**, som representerer noe Peter ville bli glad for å finne for å mate seg selv.
* en **ulv**, som er farlig og bør unngås.
-Det finnes et eget Python-modul, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), som inneholder koden for å arbeide med dette miljøet. Fordi denne koden ikke er viktig for å forstå konseptene våre, vil vi importere modulen og bruke den til å lage brettet (kodeblokk 1):
+Det finnes en separat Python-modul, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), som inneholder koden for å jobbe med dette miljøet. Fordi denne koden ikke er viktig for å forstå konseptene våre, skal vi importere modulen og bruke den til å lage eksempelbrettet (kodeblokk 1):
```python
from rlboard import *
@@ -52,63 +52,63 @@ m.randomize(seed=13)
m.plot()
```
-Denne koden bør skrive ut et bilde av miljøet som ligner på det ovenfor.
+Denne koden skal skrive ut et bilde av miljøet som ligner på det ovenfor.
-## Handlinger og strategi
+## Handlinger og policy
-I vårt eksempel vil Peters mål være å finne et eple, mens han unngår ulven og andre hindringer. For å gjøre dette kan han i hovedsak gå rundt til han finner et eple.
+I vårt eksempel ville Peters mål være å finne et eple, samtidig som han unngår ulven og andre hindringer. For å gjøre dette kan han i det vesentlige gå rundt til han finner et eple.
-Derfor kan han på enhver posisjon velge mellom en av følgende handlinger: opp, ned, venstre og høyre.
+Derfor kan han på enhver posisjon velge mellom følgende handlinger: opp, ned, venstre og høyre.
-Vi vil definere disse handlingene som et ordbok, og knytte dem til par av tilsvarende koordinatendringer. For eksempel vil det å bevege seg til høyre (`R`) tilsvare paret `(1,0)`. (kodeblokk 2):
+Vi skal definere disse handlingene som en ordbok, og kartlegge dem til par av tilsvarende koordinatendringer. For eksempel vil det å bevege seg til høyre (`R`) tilsvare et par `(1,0)`. (kodeblokk 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()) }
```
-For å oppsummere, strategien og målet for dette scenariet er som følger:
+For å oppsummere, strategien og målet for dette scenarioet er som følger:
-- **Strategien**, for vår agent (Peter) er definert av en såkalt **policy**. En policy er en funksjon som returnerer handlingen i en gitt tilstand. I vårt tilfelle er tilstanden til problemet representert av brettet, inkludert spillerens nåværende posisjon.
+- **Strategien**, for vår agent (Peter) er definert av en såkalt **policy**. En policy er en funksjon som returnerer handlingen i enhver gitt tilstand. I vårt tilfelle representeres problemets tilstand av brettet, inkludert spillerens nåværende posisjon.
-- **Målet**, med forsterkende læring er å til slutt lære en god policy som lar oss løse problemet effektivt. Men som en baseline, la oss vurdere den enkleste policyen kalt **tilfeldig vandring**.
+- **Målet**, med forsterkende læring er å til slutt lære en god policy som lar oss løse problemet effektivt. Men som et utgangspunkt, la oss vurdere den enkleste policyen kalt **tilfeldig gange**.
-## Tilfeldig vandring
+## Tilfeldig gange
-La oss først løse problemet vårt ved å implementere en strategi for tilfeldig vandring. Med tilfeldig vandring vil vi tilfeldig velge neste handling fra de tillatte handlingene, til vi når eplet (kodeblokk 3).
+La oss først løse problemet vårt ved å implementere en strategi for tilfeldig gange. Med tilfeldig gange vil vi tilfeldig velge neste handling fra de tillatte handlingene, til vi når eplet (kodeblokk 3).
-1. Implementer den tilfeldige vandringen med koden nedenfor:
+1. Implementer tilfeldig gange med koden nedenfor:
```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
+ n = 0 # antall skritt
+ # sett startposisjon
if start_position:
m.human = start_position
else:
m.random_start()
while True:
if m.at() == Board.Cell.apple:
- return n # success!
+ return n # suksess!
if m.at() in [Board.Cell.wolf, Board.Cell.water]:
- return -1 # eaten by wolf or drowned
+ return -1 # spist av ulv eller druknet
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
+ m.move(a) # utfør selve flyttingen
break
n+=1
walk(m,random_policy)
```
- Kallet til `walk` bør returnere lengden på den tilsvarende stien, som kan variere fra en kjøring til en annen.
+ Kallet til `walk` skal returnere lengden på den tilsvarende veien, som kan variere fra en kjøring til en annen.
-1. Kjør vandringseksperimentet et antall ganger (si, 100), og skriv ut de resulterende statistikkene (kodeblokk 4):
+1. Kjør gang-eksperimentet flere ganger (for eksempel 100), og skriv ut de resulterende statistikkene (kodeblokk 4):
```python
def print_statistics(policy):
@@ -125,17 +125,17 @@ La oss først løse problemet vårt ved å implementere en strategi for tilfeldi
print_statistics(random_policy)
```
- Merk at gjennomsnittlig lengde på en sti er rundt 30-40 steg, noe som er ganske mye, gitt at gjennomsnittlig avstand til nærmeste eple er rundt 5-6 steg.
+ Merk at gjennomsnittlig lengde på en rute er rundt 30-40 steg, noe som er ganske mye, gitt at gjennomsnittsavstanden til nærmeste eple er rundt 5-6 steg.
- Du kan også se hvordan Peters bevegelser ser ut under den tilfeldige vandringen:
+ Du kan også se hvordan Peters bevegelser ser ut under den tilfeldige gangen:
- 
+ 
## Belønningsfunksjon
-For å gjøre vår policy mer intelligent, må vi forstå hvilke bevegelser som er "bedre" enn andre. For å gjøre dette må vi definere målet vårt.
+For å gjøre policyen vår mer intelligent, må vi forstå hvilke trekk som er "bedre" enn andre. For å gjøre dette må vi definere målet vårt.
-Målet kan defineres i form av en **belønningsfunksjon**, som vil returnere en scoreverdi for hver tilstand. Jo høyere tallet er, jo bedre er belønningsfunksjonen. (kodeblokk 5)
+Målet kan defineres i form av en **belønningsfunksjon**, som returnerer en poengsum for hver tilstand. Jo høyere tallet er, desto bedre er belønningsfunksjonen. (kodeblokk 5)
```python
move_reward = -0.1
@@ -154,39 +154,115 @@ def reward(m,pos=None):
return move_reward
```
-En interessant ting med belønningsfunksjoner er at i de fleste tilfeller *får vi bare en betydelig belønning på slutten av spillet*. Dette betyr at algoritmen vår på en eller annen måte må huske "gode" steg som fører til en positiv belønning til slutt, og øke deres betydning. På samme måte bør alle bevegelser som fører til dårlige resultater avskrekkes.
+En interessant ting med belønningsfunksjoner er at i de fleste tilfeller *får vi kun en betydelig belønning ved slutten av spillet*. Det betyr at algoritmen vår på en måte må huske "gode" steg som fører til positiv belønning til slutt, og øke viktigheten av dem. Tilsvarende bør alle trekk som leder til dårlige resultater frarådes.
-## Q-Læring
+## Q-læring
-En algoritme som vi skal diskutere her kalles **Q-Læring**. I denne algoritmen er policyen definert av en funksjon (eller en datastruktur) kalt en **Q-Tabell**. Den registrerer "godheten" til hver av handlingene i en gitt tilstand.
+En algoritme vi skal diskutere her kalles **Q-læring**. I denne algoritmen defineres policyen av en funksjon (eller en datastruktur) kalt en **Q-tabell**. Den registrerer "godheten" til hver handling i en gitt tilstand.
-Den kalles en Q-Tabell fordi det ofte er praktisk å representere den som en tabell, eller en flerdimensjonal matrise. Siden brettet vårt har dimensjonene `bredde` x `høyde`, kan vi representere Q-Tabellen ved hjelp av en numpy-matrise med formen `bredde` x `høyde` x `len(actions)`: (kodeblokk 6)
+Den kalles Q-tabell fordi det ofte er praktisk å representere den som en tabell, eller et multidimensjonalt matrise. Siden brettet vårt har dimensjoner `width` x `height`, kan vi representere Q-tabellen som et numpy-array med form `width` x `height` x `len(actions)`: (kodeblokk 6)
```python
Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions)
```
-Legg merke til at vi initialiserer alle verdiene i Q-Tabellen med en lik verdi, i vårt tilfelle - 0.25. Dette tilsvarer policyen "tilfeldig vandring", fordi alle bevegelser i hver tilstand er like gode. Vi kan sende Q-Tabellen til `plot`-funksjonen for å visualisere tabellen på brettet: `m.plot(Q)`.
+Merk at vi initialiserer alle verdiene i Q-tabellen med samme verdi, i vårt tilfelle - 0.25. Dette tilsvarer "tilfeldig gange"-policyen, fordi alle trekk i hver tilstand er like gode. Vi kan sende Q-tabellen til `plot` funksjonen for å visualisere tabellen på brettet: `m.plot(Q)`.
-
+
-I midten av hver celle er det en "pil" som indikerer den foretrukne retningen for bevegelse. Siden alle retninger er like, vises en prikk.
+I midten av hver celle er det en "pil" som indikerer den foretrukne bevegelsesretningen. Siden alle retninger er like, vises et punkt.
-Nå må vi kjøre simuleringen, utforske miljøet vårt, og lære en bedre fordeling av Q-Tabell-verdier, som vil tillate oss å finne veien til eplet mye raskere.
+Nå må vi kjøre simuleringen, utforske miljøet vårt og lære en bedre fordeling av Q-tabellverdier, som lar oss finne veien til eplet mye raskere.
-## Essensen av Q-Læring: Bellman-likningen
+## Kjernen i Q-læring: Bellman-ligning
-Når vi begynner å bevege oss, vil hver handling ha en tilsvarende belønning, dvs. vi kan teoretisk velge neste handling basert på den høyeste umiddelbare belønningen. Men i de fleste tilstander vil ikke bevegelsen oppnå målet vårt om å nå eplet, og dermed kan vi ikke umiddelbart avgjøre hvilken retning som er bedre.
+Når vi begynner å bevege oss, vil hver handling ha en tilsvarende belønning, dvs. vi kan teoretisk velge neste handling basert på høyest umiddelbar belønning. Men i de fleste tilstander vil ikke trekket oppnå vårt mål om å nå eplet, og derfor kan vi ikke umiddelbart avgjøre hvilken retning som er best.
-> Husk at det ikke er det umiddelbare resultatet som betyr noe, men heller det endelige resultatet, som vi vil oppnå på slutten av simuleringen.
+> Husk at det ikke er det umiddelbare resultatet som betyr noe, men heller det endelige resultatet, som vi får ved slutten av simuleringen.
-For å ta hensyn til denne forsinkede belønningen, må vi bruke prinsippene for **[dynamisk programmering](https://en.wikipedia.org/wiki/Dynamic_programming)**, som lar oss tenke på problemet vårt rekursivt.
+For å ta hensyn til denne forsinkede belønningen må vi bruke prinsippene i **[dynamisk programmering](https://en.wikipedia.org/wiki/Dynamic_programming)**, som lar oss tenke på problemet vårt rekursivt.
-Anta at vi nå er i tilstanden *s*, og vi ønsker å bevege oss til neste tilstand *s'*. Ved å gjøre det vil vi motta den umiddelbare belønningen *r(s,a)*, definert av belønningsfunksjonen, pluss en fremtidig belønning. Hvis vi antar at Q-Tabellen vår korrekt reflekterer "attraktiviteten" til hver handling, vil vi i tilstanden *s'* velge en handling *a* som tilsvarer maksimal verdi av *Q(s',a')*. Dermed vil den beste mulige fremtidige belønningen vi kunne få i tilstanden *s* bli definert som `max`
+La oss anta at vi nå er i tilstand *s*, og vi vil bevege oss til neste tilstand *s'*. Ved å gjøre dette vil vi motta den umiddelbare belønningen *r(s,a)*, definert av belønningsfunksjonen, pluss noe fremtidig belønning. Hvis vi antar at Q-tabellen vår korrekt reflekterer "attraktiviteten" til hver handling, vil vi i tilstand *s'* velge en handling *a* som tilsvarer maksimumsverdien av *Q(s',a')*. Dermed vil den beste mulige fremtidige belønningen vi kan få i tilstand *s* bli definert som `max`a'*Q(s',a')* (maksimum her beregnes over alle mulige handlinger *a'* i tilstand *s'*).
+
+Dette gir den **Bellman-formelen** for å beregne verdien i Q-tabellen i tilstand *s*, gitt handling *a*:
+
+
+
+Her er γ den såkalte **diskonteringsfaktoren** som bestemmer i hvilken grad du bør foretrekke nåværende belønning fremfor fremtidig belønning, og omvendt.
+
+## Læringsalgoritme
+
+Gitt ligningen over kan vi nå skrive pseudokode for læringsalgoritmen vår:
+
+* Initialiser Q-tabellen Q med like tall for alle tilstander og handlinger
+* Sett læringsrate α ← 1
+* Gjenta simuleringen mange ganger
+ 1. Start på en tilfeldig posisjon
+ 1. Gjenta
+ 1. Velg en handling *a* i tilstand *s*
+ 2. Utfør handling ved å gå til en ny tilstand *s'*
+ 3. Hvis vi møter slutten-av-spillet-betingelsen, eller total belønning er for lav - avslutt simuleringen
+ 4. Beregn belønningen *r* i den nye tilstanden
+ 5. Oppdater Q-funksjonen i henhold til Bellman-ligningen: *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ maxa'Q(s',a'))*
+ 6. *s* ← *s'*
+ 7. Oppdater total belønning og reduser α.
+
+## Utnytte vs utforske
+
+I algoritmen ovenfor spesifiserte vi ikke nøyaktig hvordan vi burde velge handlingen i steg 2.1. Hvis vi velger handlingen tilfeldig, vil vi tilfeldig **utforske** miljøet, og vi har ganske stor sannsynlighet for å dø ofte samt utforske områder hvor vi normalt ikke ville gått. Et alternativt tilnærming er å **utnytte** verdiene i Q-tabellen som vi allerede kjenner, og dermed velge den beste handlingen (med høyest Q-verdi) i tilstand *s*. Dette vil imidlertid forhindre oss fra å utforske andre tilstander, og det er sannsynlig at vi ikke finner den optimale løsningen.
+
+Derfor er den beste tilnærmingen å finne en balanse mellom utforskning og utnyttelse. Dette kan gjøres ved å velge en handling i tilstand *s* med sannsynlighet proporsjonal med verdiene i Q-tabellen. I begynnelsen, når alle Q-verdiene er like, vil dette tilsvare et tilfeldig valg, men etter hvert som vi lærer mer om miljøet vårt, vil vi sannsynligvis følge den optimale ruten samtidig som agenten av og til får velge en uutforsket vei.
+
+## Implementering i Python
+
+Vi er nå klare til å implementere læringsalgoritmen. Før vi gjør det, trenger vi også en funksjon som konverterer vilkårlige tall i Q-tabellen til en sannsynlighetsvektor for de tilsvarende handlingene.
+
+1. Lag en funksjon `probs()`:
+
+ ```python
+ def probs(v,eps=1e-4):
+ v = v-v.min()+eps
+ v = v/v.sum()
+ return v
+ ```
+
+ Vi legger til noen `eps` til den originale vektoren for å unngå divisjon med 0 i starten, når alle komponentene i vektoren er identiske.
+
+Kjør læringsalgoritmen gjennom 5000 eksperimenter, også kalt **epoker**: (kodeblokk 8)
+```python
+ for epoch in range(5000):
+
+ # Velg startpunkt
+ m.random_start()
+
+ # Begynn å reise
+ n=0
+ cum_reward = 0
+ while True:
+ x,y = m.human
+ v = probs(Q[x,y])
+ a = random.choices(list(actions),weights=v)[0]
+ dpos = actions[a]
+ m.move(dpos,check_correctness=False) # vi tillater spilleren å bevege seg utenfor brettet, noe som avslutter episoden
+ r = reward(m)
+ cum_reward += r
+ if r==end_reward or cum_reward < -1000:
+ lpath.append(n)
+ break
+ alpha = np.exp(-n / 10e5)
+ gamma = 0.5
+ ai = action_idx[a]
+ Q[x,y,ai] = (1 - alpha) * Q[x,y,ai] + alpha * (r + gamma * Q[x+dpos[0], y+dpos[1]].max())
+ n+=1
+```
+
+Etter at denne algoritmen er kjørt, skal Q-tabellen være oppdatert med verdier som definerer attraktiviteten til ulike handlinger på hvert steg. Vi kan prøve å visualisere Q-tabellen ved å tegne en vektor i hver celle som peker i ønsket bevegelsesretning. For enkelhetens skyld tegner vi en liten sirkel i stedet for en pilspiss.
+
+
## Sjekke policyen
-Siden Q-Tabellen viser "attraktiviteten" til hver handling i hver tilstand, er det ganske enkelt å bruke den til å definere effektiv navigering i vår verden. I det enkleste tilfellet kan vi velge handlingen som tilsvarer den høyeste verdien i Q-Tabellen: (kodeblokk 9)
+Siden Q-tabellen viser "attraktiviteten" til hver handling i hver tilstand, er det ganske enkelt å bruke den til effektiv navigasjon i vår verden. I den enkleste versjonen kan vi velge den handlingen som tilsvarer den høyeste Q-verdien: (kodeblokk 9)
```python
def qpolicy_strict(m):
@@ -198,17 +274,18 @@ def qpolicy_strict(m):
walk(m,qpolicy_strict)
```
-> Hvis du prøver koden ovenfor flere ganger, kan du legge merke til at den noen ganger "henger", og du må trykke på STOP-knappen i notatboken for å avbryte den. Dette skjer fordi det kan oppstå situasjoner der to tilstander "peker" på hverandre når det gjelder optimal Q-verdi, i så fall ender agenten opp med å bevege seg mellom disse tilstandene uendelig.
+
+> Hvis du prøver koden over flere ganger, kan du legge merke til at den noen ganger "henger", og du må trykke på STOPP-knappen i notatboken for å avbryte den. Dette skjer fordi det kan oppstå situasjoner der to tilstander "peker" på hverandre når det gjelder optimal Q-verdi, og i så fall ender agenten opp med å bevege seg mellom disse tilstandene på ubestemt tid.
## 🚀Utfordring
-> **Oppgave 1:** Endre `walk`-funksjonen slik at den begrenser maksimal lengde på stien til et visst antall steg (for eksempel 100), og se koden ovenfor returnere denne verdien fra tid til annen.
+> **Oppgave 1:** Endre `walk`-funksjonen slik at den begrenser maksimal lengde på stien til et visst antall steg (si 100), og se hvordan koden over returnerer denne verdien fra tid til annen.
-> **Oppgave 2:** Endre `walk`-funksjonen slik at den ikke går tilbake til steder den allerede har vært tidligere. Dette vil forhindre at `walk` går i loop, men agenten kan fortsatt ende opp med å bli "fanget" på et sted den ikke kan unnslippe fra.
+> **Oppgave 2:** Endre `walk`-funksjonen slik at den ikke går tilbake til steder den tidligere har vært. Dette vil forhindre at `walk` havner i en løkke, men agenten kan fortsatt ende opp "fanget" på et sted den ikke klarer å unnslippe fra.
-## Navigering
+## Navigasjon
-En bedre navigeringspolicy ville være den vi brukte under trening, som kombinerer utnyttelse og utforskning. I denne policyen vil vi velge hver handling med en viss sannsynlighet, proporsjonal med verdiene i Q-Tabellen. Denne strategien kan fortsatt føre til at agenten returnerer til en posisjon den allerede har utforsket, men som du kan se fra koden nedenfor, resulterer den i en veldig kort gjennomsnittlig sti til ønsket lokasjon (husk at `print_statistics` kjører simuleringen 100 ganger): (kodeblokk 10)
+En bedre navigasjonspolicy vil være den vi brukte under trening, som kombinerer utnyttelse og utforskning. I denne policyen velger vi hver handling med en viss sannsynlighet, proporsjonal med verdiene i Q-tabellen. Denne strategien kan fortsatt føre til at agenten returnerer til en posisjon den allerede har utforsket, men som du kan se fra koden nedenfor, resulterer det i en veldig kort gjennomsnittlig sti til ønsket lokasjon (husk at `print_statistics` kjører simuleringen 100 ganger): (kodeblokk 10)
```python
def qpolicy(m):
@@ -220,28 +297,32 @@ def qpolicy(m):
print_statistics(qpolicy)
```
-Etter å ha kjørt denne koden, bør du få en mye kortere gjennomsnittlig stilengde enn før, i området 3-6.
+Etter å ha kjørt denne koden, bør du få en mye mindre gjennomsnittlig stilengde enn før, i området 3-6.
## Undersøke læringsprosessen
-Som vi har nevnt, er læringsprosessen en balanse mellom utforskning og utnyttelse av opparbeidet kunnskap om problemrommets struktur. Vi har sett at resultatene av læringen (evnen til å hjelpe en agent med å finne en kort sti til målet) har forbedret seg, men det er også interessant å observere hvordan gjennomsnittlig stilengde oppfører seg under læringsprosessen:
+Som vi har nevnt, er læringsprosessen en balanse mellom utforskning og utnyttelse av oppnådd kunnskap om strukturen i problemrommet. Vi har sett at resultatene av læring (evnen til å hjelpe en agent med å finne en kort vei til målet) har blitt bedre, men det er også interessant å observere hvordan gjennomsnittlig stilengde utvikler seg under læringsprosessen:
+
+
-## Oppsummering av læringen:
+Lærdommene kan oppsummeres som:
-- **Gjennomsnittlig stilengde øker**. Det vi ser her er at i starten øker gjennomsnittlig stilengde. Dette skyldes sannsynligvis at når vi ikke vet noe om miljøet, er vi mer sannsynlig å bli fanget i dårlige tilstander, som vann eller ulv. Etter hvert som vi lærer mer og begynner å bruke denne kunnskapen, kan vi utforske miljøet lenger, men vi vet fortsatt ikke veldig godt hvor eplene er.
+- **Gjennomsnittlig stilengde øker**. Det vi ser her er at først øker gjennomsnittlig stilengde. Dette skyldes sannsynligvis at når vi ikke vet noe om miljøet, er det sannsynlig at vi blir fanget i dårlige tilstander, som vann eller ulv. Når vi lærer mer og begynner å bruke denne kunnskapen, kan vi utforske miljøet lenger, men vi vet fortsatt ikke godt hvor eplene er.
-- **Stilengden avtar etter hvert som vi lærer mer**. Når vi har lært nok, blir det lettere for agenten å nå målet, og stilengden begynner å avta. Vi er imidlertid fortsatt åpne for utforskning, så vi avviker ofte fra den beste stien og utforsker nye alternativer, noe som gjør stien lengre enn optimal.
+- **Stilengden avtar etter hvert som vi lærer mer**. Når vi har lært nok, blir det enklere for agenten å nå målet, og stilengden begynner å avta. Men vi er fortsatt åpne for utforskning, så vi avviker ofte fra den beste veien for å utforske nye muligheter, noe som gjør stien lengre enn optimal.
-- **Lengden øker brått**. Det vi også observerer på denne grafen er at på et tidspunkt økte lengden brått. Dette indikerer den stokastiske naturen til prosessen, og at vi på et tidspunkt kan "ødelegge" Q-Tabell-koeffisientene ved å overskrive dem med nye verdier. Dette bør ideelt sett minimeres ved å redusere læringsraten (for eksempel mot slutten av treningen justerer vi Q-Tabell-verdiene med en liten verdi).
+- **Lengden øker brått**. Det vi også ser på denne grafen, er at lengden på et tidspunkt økte brått. Dette indikerer prosessens stokastiske natur, og at vi på et tidspunkt kan "ødelegge" Q-tabellkoeffisientene ved å overskrive dem med nye verdier. Dette bør ideelt sett minimeres ved å redusere læringsraten (for eksempel mot slutten av treningen justerer vi kun Q-tabellverdiene med små verdier).
-Alt i alt er det viktig å huske at suksessen og kvaliteten på læringsprosessen avhenger betydelig av parametere, som læringsrate, læringsrate-avtakelse og diskonteringsfaktor. Disse kalles ofte **hyperparametere**, for å skille dem fra **parametere**, som vi optimaliserer under trening (for eksempel Q-Tabell-koeffisienter). Prosessen med å finne de beste verdiene for hyperparametere kalles **hyperparameteroptimalisering**, og det fortjener et eget tema.
+Generelt er det viktig å huske at suksess og kvalitet på læringsprosessen avhenger betydelig av parametere som læringsrate, nedgang i læringsrate og diskonteringsfaktor. Disse kalles ofte **hyperparametere** for å skille dem fra **parametere**, som vi optimerer under trening (for eksempel Q-tabellkoeffisienter). Prosessen med å finne de beste hyperparameterverdiene kalles **hyperparameteroptimalisering**, og det fortjener et eget tema.
-## [Quiz etter forelesning](https://ff-quizzes.netlify.app/en/ml/)
+## [Post-forelesningsquiz](https://ff-quizzes.netlify.app/en/ml/)
## Oppgave
[En mer realistisk verden](assignment.md)
---
-**Ansvarsfraskrivelse**:
-Dette dokumentet er oversatt ved hjelp av AI-oversettelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selv om vi streber etter nøyaktighet, vær oppmerksom på at automatiserte oversettelser kan inneholde feil eller unøyaktigheter. Det originale dokumentet på sitt opprinnelige språk bør anses som den autoritative kilden. For kritisk informasjon anbefales profesjonell menneskelig oversettelse. Vi er ikke ansvarlige for eventuelle misforståelser eller feiltolkninger som oppstår ved bruk av denne oversettelsen.
\ No newline at end of file
+
+**Ansvarsfraskrivelse**:
+Dette dokumentet er oversatt ved hjelp av AI-oversettelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selv om vi streber etter nøyaktighet, vær oppmerksom på at automatiske oversettelser kan inneholde feil eller unøyaktigheter. Det opprinnelige dokumentet på originalspråket skal betraktes som den autoritative kilden. For kritisk informasjon anbefales profesjonell menneskelig oversettelse. Vi er ikke ansvarlige for eventuelle misforståelser eller feiltolkninger som oppstår ved bruk av denne oversettelsen.
+
\ No newline at end of file
diff --git a/translations/no/8-Reinforcement/2-Gym/README.md b/translations/no/8-Reinforcement/2-Gym/README.md
index dacbb86de..889f69a7b 100644
--- a/translations/no/8-Reinforcement/2-Gym/README.md
+++ b/translations/no/8-Reinforcement/2-Gym/README.md
@@ -1,12 +1,32 @@
+# CartPole Skating
+
+Problemet vi har løst i forrige leksjon kan virke som et lekent problem, ikke virkelig anvendelig for virkelige scenarier. Dette er ikke tilfelle, fordi mange virkelige problemer også deler dette scenariet – inkludert å spille Sjakk eller Go. De er like fordi vi også har et brett med gitte regler og en **diskret tilstand**.
+
+## [Pre-forelesningsquiz](https://ff-quizzes.netlify.app/en/ml/)
+
+## Introduksjon
+
+I denne leksjonen vil vi anvende de samme prinsippene for Q-Learning på et problem med **kontinuerlig tilstand**, dvs. en tilstand som gis av ett eller flere reelle tall. Vi vil ta for oss følgende problem:
+
+> **Problem**: Hvis Peter vil komme seg bort fra ulven, må han kunne bevege seg raskere. Vi skal se hvordan Peter kan lære å skøyte, spesielt å holde balansen, ved bruk av Q-Learning.
+
+
+
+> Peter og vennene hans blir kreative for å slippe unna ulven! Bilde av [Jen Looper](https://twitter.com/jenlooper)
+
+Vi vil bruke en forenklet versjon av balansering kjent som et **CartPole**-problem. I cartpole-verden har vi en horisontal skyveplanke som kan beveges til venstre eller høyre, og målet er å balansere en vertikal stang på toppen av skyveplanken.
+
+
+
## Forutsetninger
-I denne leksjonen skal vi bruke et bibliotek kalt **OpenAI Gym** for å simulere ulike **miljøer**. Du kan kjøre koden fra denne leksjonen lokalt (f.eks. fra Visual Studio Code), i så fall vil simuleringen åpne seg i et nytt vindu. Når du kjører koden online, kan det være nødvendig å gjøre noen justeringer i koden, som beskrevet [her](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7).
+I denne leksjonen vil vi bruke et bibliotek kalt **OpenAI Gym** for å simulere ulike **miljøer**. Du kan kjøre koden for denne leksjonen lokalt (f.eks. fra Visual Studio Code), i så fall åpnes simulasjonen i et nytt vindu. Når du kjører koden online, kan det være nødvendig med noen justeringer, som beskrevet [her](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7).
## OpenAI Gym
-I den forrige leksjonen ble reglene for spillet og tilstanden definert av klassen `Board`, som vi laget selv. Her skal vi bruke et spesielt **simuleringsmiljø** som simulerer fysikken bak den balanserende stangen. Et av de mest populære simuleringsmiljøene for trening av forsterkningslæringsalgoritmer kalles [Gym](https://gym.openai.com/), som vedlikeholdes av [OpenAI](https://openai.com/). Ved å bruke dette gymmet kan vi lage ulike **miljøer**, fra en CartPole-simulering til Atari-spill.
+I forrige leksjon ble spillregler og tilstand gitt av `Board`-klassen som vi definerte selv. Her vil vi bruke et spesielt **simulert miljø**, som simulerer fysikken bak den balanserende stangen. Et av de mest populære simuleringsmiljøene for trening av forsterkende læringsalgoritmer kalles [Gym](https://gym.openai.com/), som vedlikeholdes av [OpenAI](https://openai.com/). Ved å bruke dette gymmet kan vi lage forskjellige **miljøer** fra cartpole-simulering til Atari-spill.
-> **Merk**: Du kan se andre tilgjengelige miljøer fra OpenAI Gym [her](https://gym.openai.com/envs/#classic_control).
+> **Merk**: Du kan se andre tilgjengelige miljøer i OpenAI Gym [her](https://gym.openai.com/envs/#classic_control).
Først, la oss installere gym og importere nødvendige biblioteker (kodeblokk 1):
@@ -20,13 +40,13 @@ import numpy as np
import random
```
-## Oppgave - initialiser et CartPole-miljø
+## Øvelse - initialiser et cartpole-miljø
-For å jobbe med et CartPole-balanseringsproblem må vi initialisere det tilsvarende miljøet. Hvert miljø er knyttet til:
+For å jobbe med et cartpole-balanseringsproblem, må vi initialisere tilsvarende miljø. Hvert miljø er tilknyttet en:
-- **Observasjonsrom** som definerer strukturen til informasjonen vi mottar fra miljøet. For CartPole-problemet mottar vi posisjonen til stangen, hastighet og noen andre verdier.
+- **Observasjonsrom** som definerer strukturen på informasjonen vi mottar fra miljøet. For cartpole-problemet mottar vi posisjonen til stangen, hastighet og noen andre verdier.
-- **Handlingsrom** som definerer mulige handlinger. I vårt tilfelle er handlingsrommet diskret og består av to handlinger - **venstre** og **høyre**. (kodeblokk 2)
+- **Handlingsrom** som definerer mulige handlinger. I vårt tilfelle er handlingsrommet diskret, og består av to handlinger - **venstre** og **høyre**. (kodeblokk 2)
1. For å initialisere, skriv følgende kode:
@@ -37,11 +57,11 @@ For å jobbe med et CartPole-balanseringsproblem må vi initialisere det tilsvar
print(env.action_space.sample())
```
-For å se hvordan miljøet fungerer, la oss kjøre en kort simulering i 100 steg. Ved hvert steg gir vi en av handlingene som skal utføres - i denne simuleringen velger vi bare tilfeldig en handling fra `action_space`.
+For å se hvordan miljøet fungerer, la oss kjøre en kort simulering på 100 steg. For hvert steg gir vi en av handlingene som skal utføres – i denne simuleringen velger vi tilfeldig en handling fra `action_space`.
1. Kjør koden nedenfor og se hva det fører til.
- ✅ Husk at det er foretrukket å kjøre denne koden på en lokal Python-installasjon! (kodeblokk 3)
+ ✅ Husk at det er anbefalt å kjøre denne koden på en lokal Python-installasjon! (kodeblokk 3)
```python
env.reset()
@@ -52,11 +72,11 @@ For å se hvordan miljøet fungerer, la oss kjøre en kort simulering i 100 steg
env.close()
```
- Du bør se noe som ligner på dette bildet:
+ Du bør se noe lignende dette bildet:
- 
+ 
-1. Under simuleringen må vi få observasjoner for å avgjøre hvordan vi skal handle. Faktisk returnerer step-funksjonen nåværende observasjoner, en belønningsfunksjon og en flagg som indikerer om det gir mening å fortsette simuleringen eller ikke: (kodeblokk 4)
+1. Under simuleringen må vi hente observasjoner for å bestemme hvordan vi skal handle. Faktisk returnerer steg-funksjonen nåværende observasjoner, en belønningsfunksjon og done-flagget som indikerer om det gir mening å fortsette simuleringen eller ikke: (kodeblokk 4)
```python
env.reset()
@@ -69,7 +89,7 @@ For å se hvordan miljøet fungerer, la oss kjøre en kort simulering i 100 steg
env.close()
```
- Du vil ende opp med å se noe som dette i notebook-utgangen:
+ Du vil ende opp med å se noe lignende dette i notatboken:
```text
[ 0.03403272 -0.24301182 0.02669811 0.2895829 ] -> 1.0
@@ -82,43 +102,43 @@ For å se hvordan miljøet fungerer, la oss kjøre en kort simulering i 100 steg
[ 0.17617249 0.35602306 -0.21873684 -0.90998894] -> 1.0
```
- Observasjonsvektoren som returneres ved hvert steg av simuleringen inneholder følgende verdier:
+ Observasjonsvektoren som returneres for hvert steg i simuleringen inneholder følgende verdier:
- Posisjon til vognen
- Hastighet til vognen
- - Vinkel til stangen
+ - Vinkel på stangen
- Rotasjonshastighet til stangen
-1. Finn minimums- og maksimumsverdien av disse tallene: (kodeblokk 5)
+1. Finn minste og største verdi av disse tallene: (kodeblokk 5)
```python
print(env.observation_space.low)
print(env.observation_space.high)
```
- Du vil også legge merke til at belønningsverdien ved hvert simuleringssteg alltid er 1. Dette er fordi målet vårt er å overleve så lenge som mulig, dvs. holde stangen i en rimelig vertikal posisjon i lengst mulig tid.
+ Du vil også legge merke til at belønningsverdien ved hvert simuleringssteg alltid er 1. Dette er fordi målet vårt er å overleve så lenge som mulig, altså holde stangen i en rimelig vertikal posisjon over lengst mulig tid.
- ✅ Faktisk anses CartPole-simuleringen som løst hvis vi klarer å oppnå en gjennomsnittlig belønning på 195 over 100 påfølgende forsøk.
+ ✅ Faktisk regnes CartPole-simuleringen som løst hvis vi klarer å få gjennomsnittlig belønning på 195 over 100 påfølgende forsøk.
-## Diskretisering av tilstand
+## Tilstandsdiskretisering
-I Q-Læring må vi bygge en Q-Tabell som definerer hva vi skal gjøre i hver tilstand. For å kunne gjøre dette må tilstanden være **diskret**, mer presist, den bør inneholde et begrenset antall diskrete verdier. Dermed må vi på en eller annen måte **diskretisere** observasjonene våre, og kartlegge dem til et begrenset sett med tilstander.
+I Q-Learning må vi bygge en Q-tabell som definerer hva som skal gjøres i hver tilstand. For å kunne gjøre dette, må tilstanden være **diskret**, nærmere bestemt bør den inneholde et endelig antall diskrete verdier. Dermed må vi på en eller annen måte **diskretisere** observasjonene våre, og mappe dem til et endelig sett av tilstander.
Det finnes noen måter vi kan gjøre dette på:
-- **Del inn i intervaller**. Hvis vi kjenner intervallet til en viss verdi, kan vi dele dette intervallet inn i et antall **intervaller**, og deretter erstatte verdien med nummeret på intervallet den tilhører. Dette kan gjøres ved hjelp av numpy-metoden [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html). I dette tilfellet vil vi nøyaktig vite størrelsen på tilstanden, fordi den vil avhenge av antall intervaller vi velger for digitalisering.
+- **Dele opp i biner**. Hvis vi kjenner intervallet til en viss verdi, kan vi dele dette intervallet inn i et antall **biner**, og deretter erstatte verdien med bin-nummeret den tilhører. Dette kan gjøres med numpy [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html)-metoden. I dette tilfellet vil vi nøyaktig vite størrelsen på tilstanden, fordi den vil avhenge av antallet biner vi velger for digitaliseringen.
+
+✅ Vi kan bruke lineær interpolasjon for å bringe verdiene til et endelig intervall (si fra -20 til 20), og deretter konvertere tallene til heltall ved å runde dem av. Dette gir oss litt mindre kontroll på størrelsen av tilstanden, spesielt hvis vi ikke kjenner de eksakte områdene for inputverdiene. For eksempel har 2 av de 4 verdiene i vårt tilfelle ikke øvre/nedre grenser på verdiene sine, noe som kan resultere i et uendelig antall tilstander.
-✅ Vi kan bruke lineær interpolasjon for å bringe verdier til et begrenset intervall (for eksempel fra -20 til 20), og deretter konvertere tallene til heltall ved å runde dem av. Dette gir oss litt mindre kontroll over størrelsen på tilstanden, spesielt hvis vi ikke kjenner de nøyaktige grensene for inngangsverdiene. For eksempel, i vårt tilfelle har 2 av 4 verdier ikke øvre/nedre grenser for verdiene sine, noe som kan resultere i et uendelig antall tilstander.
+I vårt eksempel vil vi gå for den andre tilnærmingen. Som du kanskje merker senere, til tross for udefinerte øvre/nedre grenser, er det sjeldent at disse verdiene tar verdier utenfor visse endelige intervaller, dermed vil tilstander med ekstreme verdier være svært sjeldne.
-I vårt eksempel vil vi gå for den andre tilnærmingen. Som du kanskje legger merke til senere, til tross for udefinerte øvre/nedre grenser, tar disse verdiene sjelden verdier utenfor visse begrensede intervaller, og dermed vil tilstander med ekstreme verdier være svært sjeldne.
-
-1. Her er funksjonen som vil ta observasjonen fra modellen vår og produsere en tuple med 4 heltallsverdier: (kodeblokk 6)
+1. Her er funksjonen som tar observasjonen fra modellen vår og produserer en tuple av 4 heltall: (kodeblokk 6)
```python
def discretize(x):
return tuple((x/np.array([0.25, 0.25, 0.01, 0.1])).astype(np.int))
```
-1. La oss også utforske en annen diskretiseringsmetode ved bruk av intervaller: (kodeblokk 7)
+1. La oss også utforske en annen diskretiseringsmetode ved bruk av biner: (kodeblokk 7)
```python
def create_bins(i,num):
@@ -126,17 +146,17 @@ I vårt eksempel vil vi gå for den andre tilnærmingen. Som du kanskje legger m
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
+ ints = [(-5,5),(-2,2),(-0.5,0.5),(-2,2)] # intervaller av verdier for hver parameter
+ nbins = [20,20,10,10] # antall bøtter for hver 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. La oss nå kjøre en kort simulering og observere disse diskrete miljøverdiene. Prøv gjerne både `discretize` og `discretize_bins` og se om det er noen forskjell.
+1. La oss nå kjøre en kort simulering og observere de diskrete miljøverdiene. Prøv gjerne både `discretize` og `discretize_bins` og se om det er noen forskjell.
- ✅ `discretize_bins` returnerer nummeret på intervallet, som er 0-basert. Dermed returnerer den for verdier av inngangsvariabelen rundt 0 nummeret fra midten av intervallet (10). I `discretize` brydde vi oss ikke om området for utgangsverdiene, og tillot dem å være negative, slik at tilstandsverdiene ikke er forskjøvet, og 0 tilsvarer 0. (kodeblokk 8)
+ ✅ discretize_bins returnerer bin nummeret, som er 0-basert. Dermed for verdier av inputvariabelen rundt 0 returnerer den tallet fra midten av intervallet (10). I discretize brydde vi oss ikke om utfallsområdet, slik at de kunne være negative, derfor er tilstandsverdiene ikke forskjøvet, og 0 tilsvarer 0. (kodeblokk 8)
```python
env.reset()
@@ -150,15 +170,15 @@ I vårt eksempel vil vi gå for den andre tilnærmingen. Som du kanskje legger m
env.close()
```
- ✅ Fjern kommentaren på linjen som starter med `env.render` hvis du vil se hvordan miljøet utføres. Ellers kan du utføre det i bakgrunnen, som er raskere. Vi vil bruke denne "usynlige" utførelsen under vår Q-Læringsprosess.
+ ✅ Fjern kommentaren på linjen som begynner med env.render hvis du vil se hvordan miljøet utføres. Ellers kan du kjøre det i bakgrunnen, som er raskere. Vi vil bruke denne "usynlige" utførelsen under Q-Learning-prosessen vår.
-## Strukturen til Q-Tabellen
+## Strukturen på Q-tabellen
-I vår forrige leksjon var tilstanden et enkelt par med tall fra 0 til 8, og dermed var det praktisk å representere Q-Tabellen med en numpy-tensor med formen 8x8x2. Hvis vi bruker intervall-diskretisering, er størrelsen på tilstandsvektoren vår også kjent, så vi kan bruke samme tilnærming og representere tilstanden med en array med formen 20x20x10x10x2 (her er 2 dimensjonen til handlingsrommet, og de første dimensjonene tilsvarer antall intervaller vi har valgt å bruke for hver av parameterne i observasjonsrommet).
+I vår forrige leksjon var tilstanden et enkelt par av tall fra 0 til 8, og det var derfor praktisk å representere Q-tabellen som et numpy-tensor med form 8x8x2. Hvis vi bruker binnediskretisering vet vi også størrelsen på tilstandsvektoren, så vi kan bruke samme tilnærming og representere tilstanden som et array med form 20x20x10x10x2 (her er 2 dimensjonen til handlingsrommet, og de første dimensjonene tilsvarer antallet biner vi har valgt for hver av parameterne i observasjonsrommet).
-Imidlertid er det noen ganger ikke kjent de nøyaktige dimensjonene til observasjonsrommet. I tilfelle av funksjonen `discretize`, kan vi aldri være sikre på at tilstanden vår holder seg innenfor visse grenser, fordi noen av de opprinnelige verdiene ikke er begrenset. Dermed vil vi bruke en litt annen tilnærming og representere Q-Tabellen med en ordbok.
+Men noen ganger kjenner vi ikke de presise dimensjonene til observasjonsrommet. I tilfellet med `discretize`-funksjonen vet vi kanskje aldri at tilstanden holder seg innen visse grenser, fordi noen av de opprinnelige verdiene ikke er begrenset. Derfor vil vi bruke en litt annerledes tilnærming og representere Q-tabellen som en ordbok (dictionary).
-1. Bruk paret *(state,action)* som nøkkelen i ordboken, og verdien vil tilsvare verdien i Q-Tabellen. (kodeblokk 9)
+1. Bruk paret *(state,action)* som nøkkel i ordboken, og verdien tilsvarer Q-tabellens oppføringsverdi. (kodeblokk 9)
```python
Q = {}
@@ -168,38 +188,38 @@ Imidlertid er det noen ganger ikke kjent de nøyaktige dimensjonene til observas
return [Q.get((state,a),0) for a in actions]
```
- Her definerer vi også en funksjon `qvalues()`, som returnerer en liste med verdier fra Q-Tabellen for en gitt tilstand som tilsvarer alle mulige handlinger. Hvis oppføringen ikke er til stede i Q-Tabellen, vil vi returnere 0 som standard.
+ Her definerer vi også en funksjon `qvalues()`, som returnerer en liste med Q-tabellverdier for en gitt tilstand som tilsvarer alle mulige handlinger. Hvis oppføringen ikke finnes i Q-tabellen, returnerer vi 0 som standard.
-## La oss starte Q-Læring
+## La oss starte med Q-Learning
Nå er vi klare til å lære Peter å balansere!
1. Først, la oss sette noen hyperparametere: (kodeblokk 10)
```python
- # hyperparameters
+ # hyperparametere
alpha = 0.3
gamma = 0.9
epsilon = 0.90
```
- Her er `alpha` **læringsraten** som definerer i hvilken grad vi skal justere de nåværende verdiene i Q-Tabellen ved hvert steg. I den forrige leksjonen startet vi med 1, og deretter reduserte vi `alpha` til lavere verdier under treningen. I dette eksemplet vil vi holde den konstant bare for enkelhets skyld, og du kan eksperimentere med å justere `alpha`-verdiene senere.
+ Her er `alpha` **læringsraten** som definerer i hvilken grad vi skal justere de nåværende verdiene i Q-tabellen ved hvert steg. I forrige leksjon startet vi med 1, og deretter reduserte vi `alpha` til lavere verdier under treningen. I dette eksempelet holder vi den konstant for enkelhets skyld, og du kan eksperimentere med å justere `alpha`-verdiene senere.
- `gamma` er **diskonteringsfaktoren** som viser i hvilken grad vi skal prioritere fremtidig belønning over nåværende belønning.
+ `gamma` er **diskonteringsfaktoren** som viser i hvilken grad vi bør prioritere fremtidig belønning over nåværende belønning.
- `epsilon` er **utforsknings-/utnyttelsesfaktoren** som avgjør om vi skal foretrekke utforskning fremfor utnyttelse eller omvendt. I algoritmen vår vil vi i `epsilon` prosent av tilfellene velge neste handling i henhold til verdiene i Q-Tabellen, og i de resterende tilfellene vil vi utføre en tilfeldig handling. Dette vil tillate oss å utforske områder av søkeområdet som vi aldri har sett før.
+ `epsilon` er **utforsknings-/utnyttelsesfaktor** som bestemmer om vi bør foretrekke utforsking framfor utnyttelse eller omvendt. I algoritmen vil vi i `epsilon` prosent av tilfellene velge neste handling ut ifra Q-tabellverdiene, og i resten av tilfellene vil vi utføre en tilfeldig handling. Dette lar oss utforske områder av søkeområdet vi ikke har sett før.
- ✅ Når det gjelder balansering - å velge en tilfeldig handling (utforskning) vil fungere som et tilfeldig dytt i feil retning, og stangen må lære seg å gjenopprette balansen fra disse "feilene".
+ ✅ Når det gjelder balansering – å velge en tilfeldig handling (utforsking) vil være som et tilfeldig slag i feil retning, og stangen må lære seg å gjenopprette balansen etter disse "feilene".
### Forbedre algoritmen
Vi kan også gjøre to forbedringer i algoritmen vår fra forrige leksjon:
-- **Beregn gjennomsnittlig kumulativ belønning** over et antall simuleringer. Vi vil skrive ut fremgangen hver 5000 iterasjoner, og vi vil beregne gjennomsnittet av vår kumulative belønning over den perioden. Det betyr at hvis vi får mer enn 195 poeng - kan vi anse problemet som løst, med enda høyere kvalitet enn nødvendig.
-
-- **Beregn maksimal gjennomsnittlig kumulativ belønning**, `Qmax`, og vi vil lagre Q-Tabellen som tilsvarer det resultatet. Når du kjører treningen, vil du legge merke til at noen ganger begynner den gjennomsnittlige kumulative belønningen å synke, og vi ønsker å beholde verdiene i Q-Tabellen som tilsvarer den beste modellen observert under treningen.
+- **Beregn gjennomsnittlig kumulativ belønning**, over et antall simuleringer. Vi vil skrive ut progresjonen hver 5000. iterasjon, og vi vil ta gjennomsnittet av kumulativ belønning over denne perioden. Det betyr at hvis vi oppnår mer enn 195 poeng – kan vi anse problemet som løst, og til og med med bedre kvalitet enn påkrevd.
+
+- **Beregn maksimal gjennomsnittlig kumulativ belønning**, `Qmax`, og vi vil lagre Q-tabellen som tilsvarer dette resultatet. Når du kjører treningen vil du merke at noen ganger begynner den gjennomsnittlige kumulative belønningen å falle, og vi ønsker å beholde verdiene i Q-tabellen som tilsvarer den beste modellen observert under treningen.
-1. Samle alle kumulative belønninger ved hver simulering i `rewards`-vektoren for videre plotting. (kodeblokk 11)
+1. Samle alle kumulative belønninger for hver simulering i vektoren `rewards` for videre plotting. (kodeblokk 11)
```python
def probs(v,eps=1e-4):
@@ -214,15 +234,15 @@ Vi kan også gjøre to forbedringer i algoritmen vår fra forrige leksjon:
obs = env.reset()
done = False
cum_reward=0
- # == do the simulation ==
+ # == kjør simuleringen ==
while not done:
s = discretize(obs)
if random.random() Qmax:
@@ -240,25 +260,25 @@ Vi kan også gjøre to forbedringer i algoritmen vår fra forrige leksjon:
cum_rewards=[]
```
-Hva du kan legge merke til fra disse resultatene:
+Hva du kan legge merke til ut ifra disse resultatene:
-- **Nær målet vårt**. Vi er veldig nær å oppnå målet om å få 195 kumulative belønninger over 100+ påfølgende simuleringer, eller vi kan faktisk ha oppnådd det! Selv om vi får mindre tall, vet vi fortsatt ikke, fordi vi beregner gjennomsnittet over 5000 kjøringer, og bare 100 kjøringer er nødvendig i de formelle kriteriene.
+- **Nær målet vårt**. Vi er veldig nær å oppnå målet om å få 195 kumulative belønninger i 100+ påfølgende simuleringer, eller vi har faktisk oppnådd det! Selv om vi får lavere tall, vet vi fortsatt ikke sikkert, fordi vi tar gjennomsnitt over 5000 kjøringer, mens bare 100 kjøringer kreves i det formelle kriteriet.
+
+- **Belønningen begynner å falle**. Noen ganger begynner belønningen å falle, noe som betyr at vi kan "ødelegge" allerede lærte verdier i Q-tabellen med nye verdier som gjør situasjonen verre.
-- **Belønningen begynner å synke**. Noen ganger begynner belønningen å synke, noe som betyr at vi kan "ødelegge" allerede lærte verdier i Q-Tabellen med de som gjør situasjonen verre.
+Denne observasjonen blir tydeligere hvis vi plotter treningsprogresjonen.
-Denne observasjonen er mer tydelig synlig hvis vi plotter treningsfremgangen.
+## Plotting av treningsprogresjon
-## Plotting av treningsfremgang
-
-Under treningen har vi samlet den kumulative belønningsverdien ved hver iterasjon i `rewards`-vektoren. Slik ser det ut når vi plotter det mot iterasjonsnummeret:
+Under treningen har vi samlet kumulativ belønningsverdi for hver iterasjon i vektoren `rewards`. Slik ser det ut når vi plottet det mot iterasjonsnummeret:
```python
plt.plot(rewards)
```
-
+
-Fra denne grafen er det ikke mulig å si noe, fordi på grunn av den stokastiske treningsprosessen varierer lengden på treningsøktene sterkt. For å gi mer mening til denne grafen kan vi beregne **glidende gjennomsnitt** over en serie eksperimenter, la oss si 100. Dette kan gjøres praktisk ved hjelp av `np.convolve`: (kodeblokk 12)
+Fra denne grafen er det ikke mulig å si noe, fordi på grunn av naturen til den stokastiske treningsprosessen varierer lengden på treningsøktene mye. For å gjøre denne grafen mer mening kan vi beregne **løpende gjennomsnitt** over en serie eksperimenter, for eksempel 100. Dette kan gjøres komfortabelt ved hjelp av `np.convolve`: (kodeblokk 12)
```python
def running_average(x,window):
@@ -267,21 +287,24 @@ def running_average(x,window):
plt.plot(running_average(rewards,100))
```
-
+
+
+## Varierende hyperparametere
+
+For å gjøre læringen mer stabil, gir det mening å justere noen av hyperparameterne våre under treningen. Spesielt:
+
+- **For læringsraten**, `alpha`, kan vi starte med verdier nær 1, og så gradvis redusere parameteren. Med tid vil vi få gode sannsynlighetsverdier i Q-tabellen, og vi bør dermed justere dem litt, og ikke overskrive fullstendig med nye verdier.
-## Variasjon av hyperparametere
+- **Øke epsilon**. Vi kan ønske å øke `epsilon` gradvis, for å utforske mindre og utnytte mer. Det gir nok mening å starte med en lavere verdi av `epsilon` og bevege seg opp til nesten 1.
-For å gjøre læringen mer stabil gir det mening å justere noen av hyperparameterne våre under treningen. Spesielt:
+> **Oppgave 1**: Lek med hyperparameterverdier og se om du kan oppnå høyere kumulativ belønning. Oppnår du mer enn 195?
-- **For læringsraten**, `alpha`, kan vi starte med verdier nær 1, og deretter fortsette å redusere parameteren. Med tiden vil vi få gode sannsynlighetsverdier i Q-Tabellen, og dermed bør vi justere dem litt, og ikke overskrive dem helt med nye verdier.
-- **Øk epsilon**. Vi kan ønske å øke `epsilon` sakte, for å utforske mindre og utnytte mer. Det gir sannsynligvis mening å starte med en lav verdi av `epsilon`, og bevege seg opp mot nesten 1.
-> **Oppgave 1**: Prøv deg frem med verdier for hyperparametere og se om du kan oppnå høyere kumulativ belønning. Får du over 195?
-> **Oppgave 2**: For å løse problemet formelt, må du oppnå en gjennomsnittlig belønning på 195 over 100 sammenhengende kjøringer. Mål dette under treningen og sørg for at du har løst problemet formelt!
+> **Oppgave 2**: For å formelt løse problemet, må du oppnå 195 i gjennomsnittlig belønning over 100 påfølgende runder. Mål dette under treningen og sørg for at du formelt har løst problemet!
-## Se resultatet i praksis
+## Se resultatet i aksjon
-Det kan være interessant å faktisk se hvordan den trente modellen oppfører seg. La oss kjøre simuleringen og følge samme strategi for valg av handlinger som under treningen, ved å prøve ut fra sannsynlighetsfordelingen i Q-Tabellen: (kodeblokk 13)
+Det ville vært interessant å faktisk se hvordan den trente modellen oppfører seg. La oss kjøre simuleringen og følge samme handlingsvalgstrategi som under treningen, sampling i henhold til sannsynlighetsfordelingen i Q-tabellen: (kodeblokk 13)
```python
obs = env.reset()
@@ -295,17 +318,17 @@ while not done:
env.close()
```
-Du bør se noe som dette:
+Du bør se noe slikt:
-
+
---
## 🚀Utfordring
-> **Oppgave 3**: Her brukte vi den endelige kopien av Q-Tabellen, som kanskje ikke er den beste. Husk at vi har lagret den best-presterende Q-Tabellen i variabelen `Qbest`! Prøv det samme eksempelet med den best-presterende Q-Tabellen ved å kopiere `Qbest` over til `Q` og se om du merker noen forskjell.
+> **Oppgave 3**: Her brukte vi den siste kopien av Q-tabellen, som kanskje ikke er den beste. Husk at vi har lagret den beste presterende Q-tabellen i variabelen `Qbest`! Prøv det samme eksempelet med den beste presterende Q-tabellen ved å kopiere `Qbest` over til `Q` og se om du merker forskjellen.
-> **Oppgave 4**: Her valgte vi ikke den beste handlingen på hvert steg, men prøvde heller ut fra den tilsvarende sannsynlighetsfordelingen. Ville det gi mer mening å alltid velge den beste handlingen, med den høyeste verdien i Q-Tabellen? Dette kan gjøres ved å bruke funksjonen `np.argmax` for å finne handlingsnummeret som tilsvarer den høyeste verdien i Q-Tabellen. Implementer denne strategien og se om det forbedrer balansen.
+> **Oppgave 4**: Her valgte vi ikke den beste handlingen i hvert steg, men i stedet sampling med tilhørende sannsynlighetsfordeling. Ville det vært mer fornuftig å alltid velge den beste handlingen, med høyest Q-tabellverdi? Dette kan gjøres ved å bruke `np.argmax`-funksjonen for å finne handlingsnummeret som tilsvarer høyest Q-tabellverdi. Implementer denne strategien og se om det forbedrer balanseringen.
## [Quiz etter forelesning](https://ff-quizzes.netlify.app/en/ml/)
@@ -314,11 +337,13 @@ Du bør se noe som dette:
## Konklusjon
-Vi har nå lært hvordan vi kan trene agenter til å oppnå gode resultater bare ved å gi dem en belønningsfunksjon som definerer ønsket tilstand i spillet, og ved å gi dem muligheten til å utforske søkeområdet intelligent. Vi har med suksess anvendt Q-Learning-algoritmen i tilfeller med diskrete og kontinuerlige miljøer, men med diskrete handlinger.
+Vi har nå lært hvordan vi trener agenter til å oppnå gode resultater bare ved å gi dem en belønningsfunksjon som definerer ønsket tilstand i spillet, og ved å gi dem mulighet til intelligent utforskning av søkeområdet. Vi har med suksess brukt Q-Learning-algoritmen i tilfeller med diskrete og kontinuerlige miljøer, men med diskrete handlinger.
-Det er også viktig å studere situasjoner der handlingsrommet også er kontinuerlig, og når observasjonsrommet er mye mer komplekst, som bildet fra skjermen i et Atari-spill. I slike problemer trenger vi ofte å bruke mer kraftige maskinlæringsteknikker, som nevrale nettverk, for å oppnå gode resultater. Disse mer avanserte temaene er emnet for vårt kommende mer avanserte AI-kurs.
+Det er viktig å også studere situasjoner der handlingsrommet også er kontinuerlig, og når observasjonsrommet er mye mer komplekst, som bildet fra Atari-spillskjermen. I slike problemer trenger vi ofte å bruke mer kraftfulle maskinlæringsteknikker, som nevrale nettverk, for å oppnå gode resultater. Disse mer avanserte temaene er gjenstand for vårt kommende mer avanserte AI-kurs.
---
-**Ansvarsfraskrivelse**:
-Dette dokumentet er oversatt ved hjelp av AI-oversettelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selv om vi streber etter nøyaktighet, vær oppmerksom på at automatiserte oversettelser kan inneholde feil eller unøyaktigheter. Det originale dokumentet på sitt opprinnelige språk bør anses som den autoritative kilden. For kritisk informasjon anbefales profesjonell menneskelig oversettelse. Vi er ikke ansvarlige for misforståelser eller feiltolkninger som oppstår ved bruk av denne oversettelsen.
\ No newline at end of file
+
+**Ansvarsfraskrivelse**:
+Dette dokumentet er oversatt ved hjelp av AI-oversettelsestjenesten [Co-op Translator](https://github.com/Azure/co-op-translator). Selv om vi streber etter nøyaktighet, vær oppmerksom på at automatiske oversettelser kan inneholde feil eller unøyaktigheter. Det opprinnelige dokumentet på originalspråket skal betraktes som den autoritative kilden. For kritisk informasjon anbefales profesjonell menneskelig oversettelse. Vi er ikke ansvarlige for eventuelle misforståelser eller feiltolkninger som oppstår ved bruk av denne oversettelsen.
+
\ No newline at end of file
diff --git a/translations/pa/.co-op-translator.json b/translations/pa/.co-op-translator.json
index 7271013c3..c4c5df83c 100644
--- a/translations/pa/.co-op-translator.json
+++ b/translations/pa/.co-op-translator.json
@@ -13,7 +13,7 @@
},
"1-Introduction/2-history-of-ML/README.md": {
"original_hash": "6a05fec147e734c3e6bfa54505648e2b",
- "translation_date": "2025-09-06T07:06:44+00:00",
+ "translation_date": "2026-07-14T02:55:51+00:00",
"source_file": "1-Introduction/2-history-of-ML/README.md",
"language_code": "pa"
},
@@ -24,8 +24,8 @@
"language_code": "pa"
},
"1-Introduction/3-fairness/README.md": {
- "original_hash": "9a6b702d1437c0467e3c5c28d763dac2",
- "translation_date": "2025-09-06T07:03:15+00:00",
+ "original_hash": "0f00d72169a0d37eecfd16d71e01700a",
+ "translation_date": "2026-07-14T02:57:24+00:00",
"source_file": "1-Introduction/3-fairness/README.md",
"language_code": "pa"
},
@@ -54,8 +54,8 @@
"language_code": "pa"
},
"2-Regression/1-Tools/README.md": {
- "original_hash": "fa81d226c71d5af7a2cade31c1c92b88",
- "translation_date": "2025-09-06T06:50:17+00:00",
+ "original_hash": "0b8635427b582d03ea4ab7089b93e505",
+ "translation_date": "2026-07-14T02:45:23+00:00",
"source_file": "2-Regression/1-Tools/README.md",
"language_code": "pa"
},
@@ -72,8 +72,8 @@
"language_code": "pa"
},
"2-Regression/2-Data/README.md": {
- "original_hash": "7c077988328ebfe33b24d07945f16eca",
- "translation_date": "2025-09-06T06:51:45+00:00",
+ "original_hash": "a58b2c4d16c6b122643391745ac15af6",
+ "translation_date": "2026-07-14T02:48:19+00:00",
"source_file": "2-Regression/2-Data/README.md",
"language_code": "pa"
},
@@ -89,6 +89,12 @@
"source_file": "2-Regression/2-Data/solution/Julia/README.md",
"language_code": "pa"
},
+ "2-Regression/2-Data/solution/notebook.ipynb": {
+ "original_hash": "96b95f8cf473481f2f371de8156f1571",
+ "translation_date": "2026-07-14T02:32:18+00:00",
+ "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
+ "language_code": "pa"
+ },
"2-Regression/3-Linear/README.md": {
"original_hash": "8b776e731c35b171d316d01d0e7b1369",
"translation_date": "2026-04-26T18:39:02+00:00",
@@ -115,7 +121,7 @@
},
"2-Regression/4-Logistic/README.md": {
"original_hash": "abf86d845c84330bce205a46b382ec88",
- "translation_date": "2025-09-06T06:48:36+00:00",
+ "translation_date": "2026-07-14T02:46:57+00:00",
"source_file": "2-Regression/4-Logistic/README.md",
"language_code": "pa"
},
@@ -139,7 +145,7 @@
},
"3-Web-App/1-Web-App/README.md": {
"original_hash": "e0b75f73e4a90d45181dc5581fe2ef5c",
- "translation_date": "2025-09-06T07:07:24+00:00",
+ "translation_date": "2026-07-14T02:54:59+00:00",
"source_file": "3-Web-App/1-Web-App/README.md",
"language_code": "pa"
},
@@ -157,7 +163,7 @@
},
"4-Classification/1-Introduction/README.md": {
"original_hash": "aaf391d922bd6de5efba871d514c6d47",
- "translation_date": "2025-09-06T07:10:09+00:00",
+ "translation_date": "2026-07-14T02:50:09+00:00",
"source_file": "4-Classification/1-Introduction/README.md",
"language_code": "pa"
},
@@ -223,7 +229,7 @@
},
"4-Classification/4-Applied/README.md": {
"original_hash": "61bdec27ed2da8b098cd9065405d9bb0",
- "translation_date": "2025-09-06T07:09:21+00:00",
+ "translation_date": "2026-07-14T02:49:09+00:00",
"source_file": "4-Classification/4-Applied/README.md",
"language_code": "pa"
},
@@ -283,7 +289,7 @@
},
"6-NLP/1-Introduction-to-NLP/README.md": {
"original_hash": "1c2ec40cf55c98a028a359c27ef7e45a",
- "translation_date": "2025-09-06T07:19:50+00:00",
+ "translation_date": "2026-07-14T02:39:50+00:00",
"source_file": "6-NLP/1-Introduction-to-NLP/README.md",
"language_code": "pa"
},
@@ -295,7 +301,7 @@
},
"6-NLP/2-Tasks/README.md": {
"original_hash": "5f3cb462e3122e1afe7ab0050ccf2bd3",
- "translation_date": "2025-09-06T07:15:46+00:00",
+ "translation_date": "2026-07-14T02:42:14+00:00",
"source_file": "6-NLP/2-Tasks/README.md",
"language_code": "pa"
},
@@ -307,7 +313,7 @@
},
"6-NLP/3-Translation-Sentiment/README.md": {
"original_hash": "be03c8182982b87ced155e4e9d1438e8",
- "translation_date": "2025-09-06T07:21:25+00:00",
+ "translation_date": "2026-07-14T02:41:13+00:00",
"source_file": "6-NLP/3-Translation-Sentiment/README.md",
"language_code": "pa"
},
@@ -331,7 +337,7 @@
},
"6-NLP/4-Hotel-Reviews-1/README.md": {
"original_hash": "8d32dadeda93c6fb5c43619854882ab1",
- "translation_date": "2025-09-06T07:17:55+00:00",
+ "translation_date": "2026-07-14T02:38:54+00:00",
"source_file": "6-NLP/4-Hotel-Reviews-1/README.md",
"language_code": "pa"
},
@@ -355,7 +361,7 @@
},
"6-NLP/5-Hotel-Reviews-2/README.md": {
"original_hash": "2c742993fe95d5bcbb2846eda3d442a1",
- "translation_date": "2025-09-06T07:22:48+00:00",
+ "translation_date": "2026-07-14T02:44:11+00:00",
"source_file": "6-NLP/5-Hotel-Reviews-2/README.md",
"language_code": "pa"
},
@@ -391,7 +397,7 @@
},
"7-TimeSeries/1-Introduction/README.md": {
"original_hash": "662b509c39eee205687726636d0a8455",
- "translation_date": "2025-09-06T06:54:47+00:00",
+ "translation_date": "2026-07-14T03:01:10+00:00",
"source_file": "7-TimeSeries/1-Introduction/README.md",
"language_code": "pa"
},
@@ -457,7 +463,7 @@
},
"8-Reinforcement/1-QLearning/README.md": {
"original_hash": "911efd5e595089000cb3c16fce1beab8",
- "translation_date": "2025-09-06T07:11:50+00:00",
+ "translation_date": "2026-07-14T02:51:58+00:00",
"source_file": "8-Reinforcement/1-QLearning/README.md",
"language_code": "pa"
},
@@ -481,7 +487,7 @@
},
"8-Reinforcement/2-Gym/README.md": {
"original_hash": "107d5bb29da8a562e7ae72262d251a75",
- "translation_date": "2025-09-06T07:14:05+00:00",
+ "translation_date": "2026-07-14T02:53:47+00:00",
"source_file": "8-Reinforcement/2-Gym/README.md",
"language_code": "pa"
},
@@ -511,7 +517,7 @@
},
"9-Real-World/1-Applications/README.md": {
"original_hash": "83320d6b6994909e35d830cebf214039",
- "translation_date": "2025-09-06T06:59:52+00:00",
+ "translation_date": "2026-07-14T03:00:11+00:00",
"source_file": "9-Real-World/1-Applications/README.md",
"language_code": "pa"
},
@@ -523,7 +529,7 @@
},
"9-Real-World/2-Debugging-ML-Models/README.md": {
"original_hash": "df2b538e8fbb3e91cf0419ae2f858675",
- "translation_date": "2025-09-06T07:01:30+00:00",
+ "translation_date": "2026-07-14T02:59:05+00:00",
"source_file": "9-Real-World/2-Debugging-ML-Models/README.md",
"language_code": "pa"
},
@@ -581,6 +587,19 @@
"source_file": "TROUBLESHOOTING.md",
"language_code": "pa"
},
+ "__translation_failures__": {
+ "sketchnotes/LICENSE.md": {
+ "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f",
+ "source_file": "sketchnotes/LICENSE.md",
+ "language_code": "pa",
+ "failure_date": "2026-07-14T02:36:41+00:00",
+ "status": "failed",
+ "error_type": "TranslationIncompleteError",
+ "error_message": "Markdown translation remained incomplete for chunk 1.1.1 of 'LICENSE.md', and the chunk could not be split further.",
+ "translator_version": "0.20.0",
+ "failure_policy_version": 1
+ }
+ },
"docs/_sidebar.md": {
"original_hash": "68dd06c685f6ce840e0acfa313352e7c",
"translation_date": "2025-08-29T17:19:42+00:00",
diff --git a/translations/pa/1-Introduction/2-history-of-ML/README.md b/translations/pa/1-Introduction/2-history-of-ML/README.md
index 6beedcfc0..fd0936dd7 100644
--- a/translations/pa/1-Introduction/2-history-of-ML/README.md
+++ b/translations/pa/1-Introduction/2-history-of-ML/README.md
@@ -1,127 +1,157 @@
-# ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਦਾ ਇਤਿਹਾਸ
+# ਮਸ਼ੀਨ ਲਰ್ನਿੰਗ ਦਾ ਇਤਿਹਾਸ
-
-> ਸਕੈਚਨੋਟ [Tomomi Imura](https://www.twitter.com/girlie_mac) ਦੁਆਰਾ
+
+> ਸਕેਟਨોટ [ਟੋਮੋਮੀ ਇਮੁਰਾ](https://www.twitter.com/girlie_mac) ਵਲੋਂ
-## [ਪ੍ਰੀ-ਲੈਕਚਰ ਕਵਿਜ਼](https://ff-quizzes.netlify.app/en/ml/)
+## [ਪੂਰਵ-ਲੇਕਚਰ ਕਵਿਜ਼](https://ff-quizzes.netlify.app/en/ml/)
---
-[](https://youtu.be/N6wxM4wZ7V0 "ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਲਈ ਸ਼ੁਰੂਆਤੀ - ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਦਾ ਇਤਿਹਾਸ")
+[](https://youtu.be/N6wxM4wZ7V0 "ਨਵਾਂ ਸਿਖਣ ਵਾਲਿਆਂ ਲਈ ML - ਮਸ਼ੀਨ ਲਰਣਿੰਗ ਦਾ ਇਤਿਹਾਸ")
-> 🎥 ਉਪਰੋਕਤ ਚਿੱਤਰ 'ਤੇ ਕਲਿੱਕ ਕਰੋ ਇਸ ਪਾਠ ਨੂੰ ਸਮਝਣ ਲਈ ਇੱਕ ਛੋਟਾ ਵੀਡੀਓ ਦੇਖਣ ਲਈ।
+> 🎥 ਇਸ ਪਾਠ ਭਰ ਵਿੱਚ ਛੋਟੀ ਵੀਡੀਓ ਦੇਖਣ ਲਈ ਉਪਰ ਦੀ ਚਿੱਤਰ 'ਤੇ ਕਲਿੱਕ ਕਰੋ।
-ਇਸ ਪਾਠ ਵਿੱਚ, ਅਸੀਂ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਅਤੇ ਕ੍ਰਿਤ੍ਰਿਮ ਬੁੱਧੀ ਦੇ ਇਤਿਹਾਸ ਵਿੱਚ ਮਹੱਤਵਪੂਰਨ ਮੋੜਾਂ ਦੀ ਚਰਚਾ ਕਰਾਂਗੇ।
+ਇਸ ਪਾਠ ਵਿੱਚ, ਅਸੀਂ ਮਸ਼ੀਨ ਲਰਣਿੰਗ ਅਤੇ ਕৃত੍ਰਿਮ ਬੁੱਧੀ ਦੇ ਇਤਿਹਾਸ ਵਿੱਚ ਮੁੱਖ ਮੀਲਾਂ ਪੱਥਰਾਂ ਨੂੰ ਵੇਖਾਂਗੇ।
-ਕ੍ਰਿਤ੍ਰਿਮ ਬੁੱਧੀ (AI) ਦੇ ਖੇਤਰ ਦਾ ਇਤਿਹਾਸ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਦੇ ਇਤਿਹਾਸ ਨਾਲ ਜੁੜਿਆ ਹੋਇਆ ਹੈ, ਕਿਉਂਕਿ ML ਦੇ ਅਲਗੋਰਿਦਮ ਅਤੇ ਗਣਨਾਤਮਕ ਤਰੱਕੀਆਂ ਨੇ AI ਦੇ ਵਿਕਾਸ ਵਿੱਚ ਯੋਗਦਾਨ ਪਾਇਆ। ਇਹ ਯਾਦ ਰੱਖਣਾ ਲਾਭਦਾਇਕ ਹੈ ਕਿ ਜਦੋਂ ਕਿ ਇਹ ਖੇਤਰ 1950 ਦੇ ਦਹਾਕੇ ਵਿੱਚ ਵੱਖਰੇ ਖੋਜ ਖੇਤਰਾਂ ਵਜੋਂ ਸਪਸ਼ਟ ਹੋਣ ਲੱਗੇ, ਮਹੱਤਵਪੂਰਨ [ਅਲਗੋਰਿਦਮਿਕ, ਸਾਂਖਿਕ, ਗਣਿਤੀ, ਗਣਨਾਤਮਕ ਅਤੇ ਤਕਨੀਕੀ ਖੋਜਾਂ](https://wikipedia.org/wiki/Timeline_of_machine_learning) ਇਸ ਯੁੱਗ ਤੋਂ ਪਹਿਲਾਂ ਅਤੇ ਇਸ ਨਾਲ ਓਵਰਲੈਪ ਕਰਦੀਆਂ ਸਨ। ਹਕੀਕਤ ਵਿੱਚ, ਲੋਕ [ਸੈਂਕੜੇ ਸਾਲਾਂ](https://wikipedia.org/wiki/History_of_artificial_intelligence) ਤੋਂ ਇਨ੍ਹਾਂ ਸਵਾਲਾਂ ਬਾਰੇ ਸੋਚ ਰਹੇ ਹਨ: ਇਹ ਲੇਖ 'ਸੋਚਣ ਵਾਲੀ ਮਸ਼ੀਨ' ਦੇ ਵਿਚਾਰ ਦੇ ਇਤਿਹਾਸਕ ਬੁੱਧੀਮਾਨ ਅਧਾਰਾਂ ਦੀ ਚਰਚਾ ਕਰਦਾ ਹੈ।
+ਕ੍ਰਿਤ੍ਰਿਮ ਬੁੱਧੀ (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 ਦੁਆਰਾ। ਇਹ ਥਿਊਰੀ, ਜਿਸ ਬਾਰੇ ਤੁਸੀਂ ਰਿਗ੍ਰੈਸ਼ਨ ਯੂਨਿਟ ਵਿੱਚ ਸਿੱਖੋਗੇ, ਡਾਟਾ ਫਿਟਿੰਗ ਵਿੱਚ ਮਦਦ ਕਰਦੀ ਹੈ।
-- 1913 [Markov Chains](https://wikipedia.org/wiki/Markov_chain), ਰੂਸੀ ਗਣਿਤਜਨ Andrey Markov ਦੇ ਨਾਮ 'ਤੇ, ਪਿਛਲੇ ਰਾਜ ਦੇ ਅਧਾਰ 'ਤੇ ਸੰਭਾਵਿਤ ਘਟਨਾਵਾਂ ਦੀ ਲੜੀ ਦਾ ਵਰਣਨ ਕਰਨ ਲਈ ਵਰਤੀ ਜਾਂਦੀ ਹੈ।
-- 1957 [Perceptron](https://wikipedia.org/wiki/Perceptron) ਇੱਕ ਕਿਸਮ ਦਾ ਲੀਨੀਅਰ ਕਲਾਸੀਫਾਇਰ ਹੈ ਜੋ ਅਮਰੀਕੀ ਮਨੋਵਿਗਿਆਨੀ Frank Rosenblatt ਦੁਆਰਾ ਇਜਾਦ ਕੀਤਾ ਗਿਆ ਸੀ, ਜੋ ਡੀਪ ਲਰਨਿੰਗ ਵਿੱਚ ਤਰੱਕੀਆਂ ਦਾ ਅਧਾਰ ਹੈ।
+- 1763, 1812 [ਬੇਜ਼ ਸਿਧਾਂਤ](https://wikipedia.org/wiki/Bayes%27_theorem) ਅਤੇ ਇਸਦੇ ਪਹਿਲਾਂ ਵਾਲੇ। ਇਹ ਸਿਧਾਂਤ ਅਤੇ ਇਸਦੀ ਵਿਵਹਾਰਿਕਤਾ ਤਿਆਰ ਕਰਦੀ ਹੈ ਕਿ ਪਿਛਲੇ ਗਿਆਨ ਦੇ ਆਧਾਰ 'ਤੇ ਕਿਸੇ ਘਟਨਾ ਦੇ ਹੋਣ ਦੀ ਸੰਭਾਵਨਾ ਕਿਵੇਂ ਨਿਕਾਲੀ ਜਾ ਸਕਦੀ ਹੈ।
+- 1805 ਫਰਾਂਸੀਸੀ ਗਣਿਤੀਜ್ಞಾನ ਐਡਰੀਅਨ-ਮੈਰੀ ਲੇਜੇੰਦਰ ਵੱਲੋਂ [ਲੀਸਟ ਸਕਵਾਯਰਥੀਅਰੀ](https://wikipedia.org/wiki/Least_squares)। ਇਸ ਸਿਧਾਂਤ ਨੂੰ ਤੁਸੀਂ ਸਾਡੇ ਰਿਗਰੇਸ਼ਨ ਯੂਨਿਟ ਵਿੱਚ ਸਿੱਖੋਗੇ, ਜੋ ਡੇਟਾ ਫਿਟਿੰਗ ਵਿੱਚ ਸਹਾਇਕ ਹੈ।
+- 1913 [ਮਾਰਕੋਵ ਚੇਨਸ](https://wikipedia.org/wiki/Markov_chain), ਜੋ ਰੂਸ ਦੇ ਗਣਿਤੀਗਿਆਨ ਅੰਦੇਰੀ ਮਾਰਕੋਵ ਦੇ ਨਾਮ 'ਤੇ ਹੈ, ਇਹ ਪਿਛਲੇ ਹਾਲਤ ਦੇ ਆਧਾਰ 'ਤੇ ਸੰਭਾਵਿਤ ਘਟਨਾਵਾਂ ਦੀ ਲੜੀ ਵੇਖਾਉਂਦਾ ਹੈ।
+- 1957 [ਪਰਸੈਪਟ੍ਰੌਨ](https://wikipedia.org/wiki/Perceptron) ਇੱਕ ਕਿਸਮ ਦਾ ਲੀਨੀਅਰ ਕਲਾਸੀਫਾਇਰ ਹੈ, ਜਿਸਨੂੰ ਅਮਰੀਕੀ ਮਨੋਵਿਗਿਆਨੀ ਫਰੈਂਕ ਰੋਜ਼ਨਬਲੈਟ ਨੇ ਬਣਾਇਆ, ਜੋ ਡੀਪ ਲਰਨਿੰਗ ਵਿੱਚ ਪ੍ਰਗਤੀ ਦਾ ਆਧਾਰ ਹੈ।
---
-- 1967 [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) ਫੀਡਫਾਰਵਰਡ ਨਿਊਰਲ ਨੈਟਵਰਕ ਤੋਂ ਲਿਆਏ artificial neural networks ਹਨ ਜੋ ਅਸਥਾਈ ਗ੍ਰਾਫ ਬਣਾਉਂਦੇ ਹਨ।
+- 1967 [ਨੀਅਰੈਸਟ ਨੇਬਰ](https://wikipedia.org/wiki/Nearest_neighbor) ਇੱਕ ਅਲਗੋਰਿਦਮ ਹੈ ਜੋ ਮੂਲ ਰੂਪ ਵਿੱਚ ਰੂਟ ਮੈਪ ਕਰਨ ਲਈ ਬਣਾਇਆ ਗਿਆ ਸੀ। ML ਸੰਦਰਭ ਵਿੱਚ ਇਹ ਪੈਟਰਨਸ ਦੀ ਪਛਾਣ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ।
+- 1970 [ਬੈਕਪ੍ਰੋਪਾਗੇਸ਼ਨ](https://wikipedia.org/wiki/Backpropagation) [ਫੀਡਫੋਰਵਰਡ ਨਿਊਰਲ ਨੈੱਟਵਰਕ](https://wikipedia.org/wiki/Feedforward_neural_network) ਨੂੰ ટ્રેન ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ।
+- 1982 [ਰੀਕਰੈਂਟ ਨਿਊਰਲ ਨੈੱਟਵਰਕਸ](https://wikipedia.org/wiki/Recurrent_neural_network) ਫੀਡਫੋਰਵਰਡ ਨਿਊਰਲ ਨੈੱਟਵਰਕ ਤੋਂ ਨਿਕਲੇ ਕ੍ਰਿਤ੍ਰਿਮ ਨਿਊਰਲ ਨੈੱਟਵਰਕ ਹਨ ਜੋ ਅਸਮਈ ਗਰਾਫ ਬਣਾਉਂਦੇ ਹਨ।
-✅ ਥੋੜੀ ਖੋਜ ਕਰੋ। ML ਅਤੇ AI ਦੇ ਇਤਿਹਾਸ ਵਿੱਚ ਹੋਰ ਕਿਹੜੀਆਂ ਤਾਰੀਖਾਂ ਮਹੱਤਵਪੂਰਨ ਹਨ?
+✅ ਥੋੜ੍ਹੀ ਖੋਜ ਕਰੋ। ਹੋਰ ਕਿਹੜੀਆਂ ਤਾਰੀਖਾਂ 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 ਪਾਠਾਂ ਵਿੱਚ ਸਿੱਖੋਗੇ।
+ਐਲਨ ਟਿuringਰ, ਇੱਕ ਬਹੁਤ ਹੀ ਅਦਭੁਤ ਵਿਅਕਤੀ ਜਿਸਨੂੰ [2019 'ਚ ਲੋਕਾਂ ਵਲੋਂ](https://wikipedia.org/wiki/Icons:_The_Greatest_Person_of_the_20th_Century) 20ਵੀਂ ਸਦੀ ਦਾ ਸਭ ਤੋਂ ਵੱਡਾ ਵਿਗਿਆਨੀ ਚੁਣਿਆ ਗਿਆ, ਉਸਨੂੰ 'ਸੋਚਣ ਵਾਲੀ ਮਸ਼ੀਨ' ਦੀ ਸੰਕਲਪਨਾ ਦਾ ਬੁਨਿਆਦ ਰੱਖਣ ਲਈ ਸਿਲਸਿਲੇਵਾਰ ਯੋਗਦਾਨ ਲਈ ਜਾਣਿਆ ਜਾਂਦਾ ਹੈ। ਉਸਨੇ ਨਕਾਰਾਤਮਕਾਂ ਨਾਲ ਜੂਝਣਾ ਪਿਆ ਅਤੇ ਇਸ ਸੰਕਲਪ ਦਾ ਪ੍ਰਮਾਣ ਲੱਭਣ ਲਈ ਆਪਣੇ ਤਰੀਕੇ, ਜਿਵੇਂ ਕਿ [ਟਿuringਰ ਟੈਸਟ](https://www.bbc.com/news/technology-18475646) ਬਣਾਇਆ, ਜਿਸਨੂੰ ਤੁਸੀਂ ਸਾਡੇ NLP ਪਾਠਾਂ ਵਿੱਚ ਵੇਖੋਗੇ।
---
-## 1956: ਡਾਰਟਮਥ ਸਮਰ ਰਿਸਰਚ ਪ੍ਰੋਜੈਕਟ
+## 1956: ਡਾਰਟਮਾਊਥ ਸਮਰ ਰਿਸਰਚ ਪ੍ਰਾਜੈਕਟ
-"ਡਾਰਟਮਥ ਸਮਰ ਰਿਸਰਚ ਪ੍ਰੋਜੈਕਟ ਕ੍ਰਿਤ੍ਰਿਮ ਬੁੱਧੀ ਦੇ ਖੇਤਰ ਲਈ ਇੱਕ ਮਹੱਤਵਪੂਰਨ ਘਟਨਾ ਸੀ," ਅਤੇ ਇੱਥੇ ਹੀ 'ਕ੍ਰਿਤ੍ਰਿਮ ਬੁੱਧੀ' ਸ਼ਬਦ ਦੀ ਰਚਨਾ ਕੀਤੀ ਗਈ ([source](https://250.dartmouth.edu/highlights/artificial-intelligence-ai-coined-dartmouth))।
+"ਕ੍ਰਿਤ੍ਰਿਮ ਬੁੱਧੀ ਦੇ ਖੇਤਰ ਵਜੋਂ ਡਾਰਟਮਾਊਥ ਸਮਰ ਰਿਸਰਚ ਪ੍ਰਾਜੈਕਟ ਇੱਕ ਮੈਰੋਕ olay ਸੀ," ਅਤੇ ਇੱਥੇ ਹੀ 'ਕ੍ਰਿਤ੍ਰਿਮ ਬੁੱਧੀ' ਸ਼ਬਦ ਦਾ ਉਤਪੱਤੀ ਹੋਈ ([ਸਰੋਤ](https://250.dartmouth.edu/highlights/artificial-intelligence-ai-coined-dartmouth))।
-> ਸਿੱਖਣ ਜਾਂ ਬੁੱਧੀ ਦੇ ਕਿਸੇ ਹੋਰ ਪੱਖ ਨੂੰ ਅਸੂਲ ਵਿੱਚ ਇੰਨਾ ਸਪਸ਼ਟ ਵਰਣਨ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ ਕਿ ਇੱਕ ਮਸ਼ੀਨ ਨੂੰ ਇਸਨੂੰ ਨਕਲ ਕਰਨ ਲਈ ਬਣਾਇਆ ਜਾ ਸਕੇ।
+> ਸਿੱਖਣ ਦਾ ਹਰ ਪਹਲੂ ਜਾਂ ਦੂਜੇ ਬੁੱਧੀ ਦੇ ਲੱਛਣ ਨੂੰ ਇਸ ਤਰ੍ਹਾਂ ਬਿਆਨ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ ਕਿ ਇੱਕ ਮਸ਼ੀਨ ਇਸ ਦੀ ਨਕਲ ਕਰ ਸਕੇ।
---
-ਮੁੱਖ ਖੋਜਕਰਤਾ, ਗਣਿਤ ਦੇ ਪ੍ਰੋਫੈਸਰ John McCarthy ਨੇ "ਇਸ ਅਨੁਮਾਨ ਦੇ ਅਧਾਰ 'ਤੇ ਅੱਗੇ ਵਧਣ ਦੀ ਉਮੀਦ ਕੀਤੀ ਕਿ ਸਿੱਖਣ ਜਾਂ ਬੁੱਧੀ ਦੇ ਕਿਸੇ ਹੋਰ ਪੱਖ ਨੂੰ ਅਸੂਲ ਵਿੱਚ ਇੰਨਾ ਸਪਸ਼ਟ ਵਰਣਨ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ ਕਿ ਇੱਕ ਮਸ਼ੀਨ ਨੂੰ ਇਸਨੂੰ ਨਕਲ ਕਰਨ ਲਈ ਬਣਾਇਆ ਜਾ ਸਕੇ।" ਭਾਗੀਦਾਰਾਂ ਵਿੱਚ ਖੇਤਰ ਦੇ ਹੋਰ ਪ੍ਰਮੁੱਖ ਵਿਅਕਤੀ Marvin Minsky ਸ਼ਾਮਲ ਸਨ।
+ਮੁੱਖ ਖੋਜਕਰਤਾ, ਗਣਿਤ ਪ੍ਰੋਫੈਸਰ ਜੌਨ ਮੱਕਾਰਥੀ, ਇਹ ਆਸਰਾ ਰੱਖਦੇ ਸਨ ਕਿ "ਸੀਖਣ ਦੇ ਹਰ ਪਹਲੂ ਜਾਂ ਕਿਸੇ ਹੋਰ ਬੁੱਧੀ ਲੱਛਣ ਨੂੰ ਇਸ ਜਰੂਰੀ ਸਿਧਾਂਤ ਦੇ ਆਧਾਰ 'ਤੇ ਇਸ ਤਰ੍ਹਾਂ ਸਹੀ ਤੌਰ 'ਤੇ ਵਰਣਿਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ ਕਿ ਇੱਕ ਮਸ਼ੀਨ ਇਸਦੀ ਤਕਰਾ ਕਰ ਸਕੇ।" ਇਸ ਵਿੱਚ ਫੀਲਡ ਦੀ ਇੱਕ ਹੋਰ ਪ੍ਰਸਿੱਧ ਸ਼ਖ਼ਸੀਅਤ ਮਾਰਵਿਨ ਮਿੰਸਕੀ ਵੀ ਸੀ।
-ਵਰਕਸ਼ਾਪ ਨੂੰ "ਪ੍ਰਤੀਕਾਤਮਕ ਵਿਧੀਆਂ ਦਾ ਉਭਾਰ, ਸੀਮਿਤ ਖੇਤਰਾਂ 'ਤੇ ਕੇਂਦਰਿਤ ਸਿਸਟਮ (ਸ਼ੁਰੂਆਤੀ ਵਿਸ਼ੇਸ਼ਗਿਆ ਸਿਸਟਮ), ਅਤੇ ਡਿਡਕਟਿਵ ਸਿਸਟਮ ਵਿਰੁੱਧ ਇੰਡਕਟਿਵ ਸਿਸਟਮ" ਸਮੇਤ ਕਈ ਚਰਚਾਵਾਂ ਨੂੰ ਸ਼ੁਰੂ ਕਰਨ ਅਤੇ ਉਤਸ਼ਾਹਿਤ ਕਰਨ ਦਾ ਸ਼੍ਰੇਯ਼ ਦਿੰਦਾ ਹੈ। ([source](https://wikipedia.org/wiki/Dartmouth_workshop))।
+ਇਹ ਵਰਕਸ਼ਾਪ ਕਈ ਚਰਚਾਵਾਂ ਦੀ ਸ਼ੁਰੂਆਤ ਅਤੇ ਪ੍ਰੇਰਣਾ ਲਈ ਜ਼ਿੰਮੇਵਾਰ ਮੰਨੀ ਜਾਂਦੀ ਹੈ, ਜਿਵੇਂ ਕਿ "ਚਿੰਨ੍ਹੀਤ ਤਰੀਕੇ, ਸੀਮਤ ਖੇਤਰਾਂ (ਪਹਿਲੇ ਐਕਸਪឺਰਟ ਸਿਸਟਮ), ਅਤੇ ਡਿਡਕਟਿਵ ਸਿਸਟਮ ਵਿਰੁੱਧ ਇੰਡਕਟਿਵ ਸਿਸਟਮ"। ([ਸਰੋਤ](https://wikipedia.org/wiki/Dartmouth_workshop))
---
-## 1956 - 1974: "ਸੁਨਹਿਰੀ ਸਾਲ"
+## 1956 - 1974: "ਸੋਨੇ ਦੇ ਸਾਲ"
-1950 ਦੇ ਦਹਾਕੇ ਤੋਂ ਲੈ ਕੇ 70 ਦੇ ਮੱਧ ਤੱਕ, ਇਹ ਆਸ ਸੀ ਕਿ AI ਕਈ ਸਮੱਸਿਆਵਾਂ ਦਾ ਹੱਲ ਕਰ ਸਕਦਾ ਹੈ। 1967 ਵਿੱਚ, Marvin Minsky ਨੇ ਵਿਸ਼ਵਾਸ ਨਾਲ ਕਿਹਾ ਕਿ "ਇੱਕ ਪੀੜ੍ਹੀ ਦੇ ਅੰਦਰ ... 'ਕ੍ਰਿਤ੍ਰਿਮ ਬੁੱਧੀ' ਬਣਾਉਣ ਦੀ ਸਮੱਸਿਆ ਬਹੁਤ ਹੱਦ ਤੱਕ ਹੱਲ ਹੋ ਜਾਵੇਗੀ।" (Minsky, Marvin (1967), Computation: Finite and Infinite Machines, Englewood Cliffs, N.J.: Prentice-Hall)
+1950 ਤੋਂ ਮੱਧ 1970 ਤਕ, AI ਨਾਲ ਬਹੁਤ ਉਮੀਦਾਂ ਜੁੜੀਆਂ ਹੋਈਆਂ ਸਨ ਕਿ ਇਹ ਕਈ ਸਮੱਸਿਆਵਾਂ ਹੱਲ ਕਰ ਸਕਦਾ ਹੈ। 1967ਚ, ਮਾਰਵਿਨ ਮਿੰਸਕੀ ਨੇ ਪੱਕੀ ਗੱਲ ਕਹੀ ਕਿ "ਇੱਕ ਪੀੜੀ ਦੇ ਅੰਦਰ ... ਕ੍ਰਿਤ੍ਰਿਮ ਬੁੱਧੀ ਬਣਾਉਣ ਦਾ ਸਮੱਸਿਆ ਮੁੱਖ ਰੂਪ ਵਿੱਚ ਹੱਲ ਹੋ ਜਾਵੇਗੀ।" (ਮਿੰਸਕੀ, ਮਾਰਵਿਨ (1967), ਕੰਪਿਊਟੇਸ਼ਨ: ਫਾਈਨਿਟ ਅਤੇ ਇਨਫਿਨਿਟ ਮਸ਼ੀਨਾਂ, ਏਂਗਲਵੁੱਡ ਕਲਿਫਸ, N.J.: ਪ੍ਰੈਂਟਿਸ-ਹਾਲ)
-ਕੁਦਰਤੀ ਭਾਸ਼ਾ ਪ੍ਰੋਸੈਸਿੰਗ ਖੋਜ ਫੁੱਲੀ, ਖੋਜ ਨੂੰ ਸੁਧਾਰਿਆ ਗਿਆ ਅਤੇ ਵਧੀਆ ਬਣਾਇਆ ਗਿਆ, ਅਤੇ 'ਮਾਈਕਰੋ-ਵਰਲਡਸ' ਦਾ ਸੰਕਲਪ ਬਣਾਇਆ ਗਿਆ, ਜਿੱਥੇ ਸਧਾਰਨ ਕੰਮ ਸਧਾਰਨ ਭਾਸ਼ਾ ਨਿਰਦੇਸ਼ਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਪੂਰੇ ਕੀਤੇ ਗਏ।
+ਕੁਦਰਤੀ ਭਾਸ਼ਾ ਪ੍ਰੋਸੈਸਿੰਗ ਖੋਜ ਚੜ੍ਹਾਈ 'ਤੇ ਸੀ, ਖੋਜ ਮੁਕੰਮਲ ਹੋਈ ਅਤੇ ਵਧੇਰੇ ਸਮਰੱਥ ਬਣੀ, ਅਤੇ 'ਮਾਈਕ੍ਰੋ-ਵਰਲਡ' ਦਾ ਸਿਧਾਂਤ ਬਣਾਇਆ ਗਿਆ ਜਿੱਥੇ ਸਾਦੇ ਕੰਮ ਸਧਾਰਣ ਭਾਸ਼ਾ ਹੁਕਮਾਂ ਨਾਲ ਕੀਤੇ ਗਏ।
---
-ਸਰਕਾਰੀ ਏਜੰਸੀਆਂ ਦੁਆਰਾ ਖੋਜ ਨੂੰ ਵਧੀਆ ਫੰਡ ਮਿਲੀ, ਗਣਨਾ ਅਤੇ ਅਲਗੋਰਿਦਮ ਵਿੱਚ ਤਰੱਕੀਆਂ ਹੋਈਆਂ, ਅਤੇ ਬੁੱਧੀਮਾਨ ਮਸ਼ੀਨਾਂ ਦੇ ਪ੍ਰੋਟੋਟਾਈਪ ਬਣਾਏ ਗਏ। ਇਨ੍ਹਾਂ ਮਸ਼ੀਨਾਂ ਵਿੱਚ ਸ਼ਾਮਲ ਹਨ:
+ਸਰਕਾਰ ਵੱਲੋਂ ਖੋਜ ਨੂੰ ਚੰਗੀ ਤਰ੍ਹਾਂ ਫੰਡ ਮਿਲਿਆ, ਕਮਪਿਊਟੇਸ਼ਨ ਅਤੇ ਅਲਗੋਰਿਦਮ ਵਿੱਚ ਤਰੱਕੀ ਹੋਈ, ਅਤੇ ਬੁੱਧੀਮਾਨ ਮਸ਼ੀਨ ਦੇ ਪ੍ਰੋਟੋਟਾਈਪ ਬਣਾਏ ਗਏ। ਕੁਝ ਮਸ਼ੀਨਾਂ ਹਨ:
-* [Shakey the robot](https://wikipedia.org/wiki/Shakey_the_robot), ਜੋ ਚਾਲ ਚਲ ਸਕਦਾ ਸੀ ਅਤੇ 'ਬੁੱਧੀਮਾਨ' ਤਰੀਕੇ ਨਾਲ ਕੰਮ ਕਰਨ ਦਾ ਫੈਸਲਾ ਕਰ ਸਕਦਾ ਸੀ।
+* [ਸ਼ੇਕੀ ਦ ਰੋਬੋਟ](https://wikipedia.org/wiki/Shakey_the_robot), ਜੋ ਸੁਚੇਤ ਨਾਲ ਮਊਵ ਕਰ ਸਕਦਾ ਸੀ ਅਤੇ ਕੰਮ ਕਿਵੇਂ ਕਰਨ ਦਾ ਫੈਸਲਾ ਕਰਦਾ ਸੀ।
- 
- > Shakey 1972 ਵਿੱਚ
+ 
+ > 1972 ਵਿੱਚ ਸ਼ੇਕੀ
---
-* Eliza, ਇੱਕ ਸ਼ੁਰੂਆਤੀ 'ਚੈਟਰਬੋਟ', ਲੋਕਾਂ ਨਾਲ ਗੱਲਬਾਤ ਕਰ ਸਕਦੀ ਸੀ ਅਤੇ ਇੱਕ ਆਦਿ 'ਥੈਰਾਪਿਸਟ' ਵਜੋਂ ਕੰਮ ਕਰ ਸਕਦੀ ਸੀ। ਤੁਸੀਂ NLP ਪਾਠਾਂ ਵਿੱਚ Eliza ਬਾਰੇ ਹੋਰ ਸਿੱਖੋਗੇ।
+* ਏਲਿਜ਼ਾ, ਇੱਕ ਸ਼ੁਰੂਆਤੀ 'ਚੈਟਰਬੋਟ', ਲੋਕਾਂ ਨਾਲ ਗੱਲਬਾਤ ਕਰ ਸਕਦਾ ਸੀ ਅਤੇ ਇੱਕ ਪ੍ਰਾਚੀਨ 'ਥੇਰਾਪਿਸਟ' ਵਜੋਂ ਕੰਮ ਕਰਦਾ ਸੀ। ਤੁਸੀਂ NLP ਪਾਠਾਂ ਵਿੱਚ ਏਲਿਜ਼ਾ ਬਾਰੇ ਹੋਰ ਜਾਣੋਗੇ।
- 
- > Eliza ਦਾ ਇੱਕ ਵਰਜਨ, ਇੱਕ ਚੈਟਬੋਟ
+ 
+ > ਏਲਿਜ਼ਾ ਦਾ ਇੱਕ ਸੰਸਕਰਣ, ਇੱਕ ਚੈਟਬੋਟ
---
-* "Blocks world" ਇੱਕ ਮਾਈਕਰੋ-ਵਰਲਡ ਦਾ ਉਦਾਹਰਨ ਸੀ ਜਿੱਥੇ ਬਲਾਕਾਂ ਨੂੰ ਢੇਰ ਅਤੇ ਵੱਖਰਾ ਕੀਤਾ ਜਾ ਸਕਦਾ ਸੀ, ਅਤੇ ਮਸ਼ੀਨਾਂ ਨੂੰ ਫੈਸਲੇ ਕਰਨ ਸਿਖਾਉਣ ਦੇ ਪ੍ਰਯੋਗ ਕੀਤੇ ਜਾ ਸਕਦੇ ਸਨ। SHRDLU ਵਰਗੀਆਂ ਲਾਇਬ੍ਰੇਰੀਆਂ ਨਾਲ ਬਣੇ ਤਰੱਕੀਆਂ ਨੇ ਭਾਸ਼ਾ ਪ੍ਰੋਸੈਸਿੰਗ ਨੂੰ ਅੱਗੇ ਵਧਾਇਆ।
+* "ਬਲਾਕਸ ਵਰਲਡ" ਇੱਕ ਮਾਈਕ੍ਰੋ-ਵਰਲਡ ਦਾ ਉਦਾਹਰਨ ਸੀ, ਜਿੱਥੇ ਬਲਾਕਸ ਨੂੰ ਸਟੈਕ ਅਤੇ ਸੌਰਟ ਕੀਤਾ ਜਾ ਸਕਦਾ ਸੀ, ਅਤੇ ਮਸ਼ੀਨਾਂ ਨੂੰ ਫੈਸਲੇ ਕਰਨ ਦੀ ਸਿੱਖਿਆ ਦੀਆਂ ਪ੍ਰਕਟਣਾਂ ਜਾਂਚੀਆਂ ਜਾ ਸكنਦੀਆਂ ਸਨ। [SHRDLU](https://wikipedia.org/wiki/SHRDLU) ਵਰਗੀਆਂ ਲਾਇਬਰੇਰੀਜ਼ ਨਾਲ ਬਣੀ ਤਰੱਕੀ ਨੇ ਭਾਸ਼ਾ ਪ੍ਰੋਸੈਸਿੰਗ ਨੂੰ ਅੱਗੇ ਵਧਾਈ।
- [](https://www.youtube.com/watch?v=QAJz4YKUwqw "SHRDLU ਨਾਲ blocks world")
+ [](https://www.youtube.com/watch?v=QAJz4YKUwqw "SHRDLU ਨਾਲ ਬਲਾਕਸ ਵਰਲਡ")
- > 🎥 ਉਪਰੋਕਤ ਚਿੱਤਰ 'ਤੇ ਕਲਿੱਕ ਕਰੋ: SHRDLU ਨਾਲ blocks world
+ > 🎥 ਉਪਰ ਦਿੱਤੀ ਚਿੱਤਰ ਨੂੰ ਕਲਿੱਕ ਕਰਕੇ ਵੀਡੀਓ ਦੇਖੋ: SHRDLU ਨਾਲ ਬਲਾਕਸ ਵਰਲਡ
---
-## 1974 - 1980: "AI Winter"
-
-1970 ਦੇ ਮੱਧ ਤੱਕ, ਇਹ ਸਪਸ਼ਟ ਹੋ ਗਿਆ ਕਿ 'ਬੁੱਧੀਮਾਨ ਮਸ਼ੀਨਾਂ' ਬਣਾਉਣ ਦੀ ਜਟਿਲਤਾ ਨੂੰ ਘਟਾ ਕੇ ਦਿਖਾਇਆ ਗਿਆ ਸੀ ਅਤੇ ਉਪਲਬਧ ਗਣਨਾ ਸ਼ਕਤੀ ਦੇ ਅਧਾਰ 'ਤੇ ਇਸਦੇ ਵਾਅਦੇ ਨੂੰ ਵਧਾ ਚੜ੍ਹਾ ਕੇ ਦਿਖਾਇਆ ਗਿਆ ਸੀ। ਫੰਡਿੰਗ ਘਟ ਗਈ ਅਤੇ ਖੇਤਰ ਵਿੱਚ ਵਿਸ਼ਵਾਸ ਹੌਲੀ ਹੋ ਗਿਆ। ਕੁਝ ਮੁੱਦੇ ਜੋ ਵਿਸ਼ਵਾਸ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰਦੇ ਸਨ:
+## 1974 - 1980: "AI ਸਰਦੀ"
+1970 ਦੇ ਮੱਧ ਤੱਕ, ਇਹ ਸਾਫ ਹੋ ਗਿਆ ਸੀ ਕਿ 'ਸੂਚੇਤ ਮਸ਼ੀਨਾਂ' ਬਣਾਉਣ ਦੀ ਜਟਿਲਤਾ ਅੰਦਾਜ਼ ਤੋਂ ਘੱਟ ਅੰਕਿਤ ਕੀਤੀ ਗਈ ਸੀ ਅਤੇ ਇਸਦੇ ਵਾਅਦੇ, ਮੌਜੂਦਾ ਕਮਪਿਊਟਿੰਗ ਸ਼ਕਤੀ ਦੇ ਅਧੀਨ, ਜ਼ਿਆਦਾ ਵਧਾ-ਚੜ੍ਹਾ ਕੇ ਦੱਸੇ ਗਏ ਸਨ। ਫੰਡ ਖ਼ਤਮ ਹੋ ਗਏ ਅਤੇ ਖੇਤਰ ਵਿੱਚ ਵਿਸ਼ਵਾਸ ਘੱਟ ਹੋ ਗਿਆ। ਕੁਝ ਮੁੱਦੇ ਜੋ ਵਿਸ਼ਵਾਸ 'ਤੇ ਪ੍ਰਭਾਵਿਤ ਹੋਏ:
---
-- **ਪਾਬੰਦੀਆਂ**। ਗਣਨਾ ਸ਼ਕਤੀ ਬਹੁਤ ਘੱਟ ਸੀ।
-- **ਕੰਬੀਨੇਟਰੀ ਧਮਾਕਾ**। ਪੈਰਾਮੀਟਰਾਂ ਦੀ ਗਿਣਤੀ exponentially ਵਧ ਗਈ ਜਿਵੇਂ ਕਿ ਕੰਪਿਊਟਰਾਂ ਤੋਂ ਹੋਰ ਮੰਗਿਆ ਗਿਆ, ਬਿਨਾਂ ਗਣਨਾ ਸ਼ਕਤੀ ਅਤੇ ਸਮਰੱਥਾ ਦੇ ਸਮਾਂਤਰ ਵਿਕਾਸ ਦੇ।
-- **ਡਾਟਾ ਦੀ ਘਾਟ**। ਡਾਟਾ ਦੀ ਘਾਟ ਸੀ ਜਿਸ ਨੇ ਅਲਗੋਰਿਦਮਾਂ ਦੀ ਜਾਂਚ, ਵਿਕਾਸ ਅਤੇ ਸੁਧਾਰ ਦੀ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਰੋਕਿਆ।
-- **ਕੀ ਅਸੀਂ ਸਹੀ ਸਵਾਲ ਪੁੱਛ ਰਹੇ ਹਾਂ?**। ਜੋ ਸਵਾਲ ਪੁੱਛੇ ਜਾ ਰਹੇ ਸਨ ਉਹਨਾਂ ਨੂੰ ਹੀ ਸਵਾਲ ਕੀਤਾ ਜਾਣ ਲੱਗਾ। ਖੋਜਕਰਤਾਵਾਂ ਨੇ ਆਪਣੇ ਦ੍ਰਿਸ਼ਕੋਣਾਂ ਬਾਰੇ ਆਲੋਚਨਾ ਦਾ ਸਾਹਮਣਾ ਕੀਤਾ:
- - Turing ਟੈਸਟਾਂ ਨੂੰ 'ਚਾਈਨੀਜ਼ ਰੂਮ ਥਿਊਰੀ' ਵਰਗੇ ਵਿਚਾਰਾਂ ਦੁਆਰਾ ਸਵਾਲ ਕੀਤਾ ਗਿਆ, ਜਿਸ ਨੇ ਇਹ ਦਲੀਲ ਦਿੱਤੀ ਕਿ "ਡਿਜੀਟਲ ਕੰਪਿਊਟਰ ਨੂੰ ਪ੍ਰੋਗਰਾਮ ਕਰਨਾ ਇਸਨੂੰ ਭਾਸ਼ਾ ਨੂੰ ਸਮਝਣ ਵਾਲਾ ਦਿਖਾ ਸਕਦਾ ਹੈ ਪਰ ਅਸਲ ਸਮਝ ਨਹੀਂ ਪੈਦਾ ਕਰ ਸਕਦਾ।" ([source](https://plato.stanford.edu/entries/chinese-room/))
- - "ਥੈਰਾਪਿਸਟ" ELIZA ਵਰਗੀਆਂ ਕ੍ਰਿਤ੍ਰਿਮ ਬੁੱਧੀਆਂ ਨੂੰ ਸਮਾਜ ਵਿੱਚ ਲਿਆਉਣ ਦੇ ਨੈਤਿਕਤਾ ਨੂੰ ਚੁਣੌਤੀ ਦਿੱਤੀ ਗਈ।
+- **ਸੀਮਾਵਾਂ**. ਕਮਪਿਊਟਿੰਗ ਸ਼ਕਤੀ ਬਹੁਤ ਸੀਮਿਤ ਸੀ।
+- **ਕੰਬੀਨੇਟੋਰੀਅਲ ਧਮਾਕਾ**. ਜਿੰਨੀ ਜਿਆਦਾ ਗਿਣਤੀਆਂ ਨੂੰ ਤਰਬੀਅਤ ਦੇਣ ਦੀ ਲੋੜ ਸੀ, ਉਨ੍ਹਾਂ ਦੀ ਗਿਣਤੀ ਗੁਣਾਤਮਕ ਤੌਰ 'ਤੇ ਵਧ ਰਹੀ ਸੀ, ਬਿਨਾਂ ਕਮਪਿਊਟਿੰਗ ਸ਼ਕਤੀ ਦੇ ਸਮਾਨ ਵਿਕਾਸ ਦੇ।
+- **ਡੇਟਾ ਦੀ ਘਾਟ**. ਟੈਸਟ, ਵਿਕਾਸ ਅਤੇ ਸੁਧਾਰ ਵਿੱਚ ਸਹਾਇਤਾ ਕਰਨ ਵਾਲਾ ਡੇਟਾ ਘਟ ਮਿਲਦਾ ਸੀ।
+- **ਕੀ ਅਸੀਂ ਸਹੀ ਸਵਾਲ ਪੁੱਛ ਰਹੇ ਹਾਂ?**. ਪੁੱਛੇ ਜਾ ਰਹੇ ਸਵਾਲਾਂ ਨੂੰ ਹੀ ਸਵਾਲ ਕਾਂ ਚੁੱਕਿਆ ਜਾਣ ਲੱਗਾ। ਖੋਜਕਰਤਿਆਂ ਨੂੰ ਆਪਣੀ ਪਹੁੰਚ 'ਤੇ ਆਲੋਚਨਾ ਵਰਨਦਾ ਹੋਇਆ:
+ - ਟਿuringਰ ਟੈਸਟਾਂ ਨੂੰ ਪ੍ਰਸ਼ਨ ਚਿੰਨ੍ਹਤ ਕਰਨ ਲਈ, 'ਚਾਇਨੀਜ਼ ਰੂਮ ਥਿਊਰੀ' ਵਰਗੀਆਂ ਵਿਚਾਰਾਂ ਰਾਹੀਂ ਕਿਹਾ ਗਿਆ ਕਿ, "ਡਿਜੀਟਲ ਕਮਪਿਊਟਰ ਨੂੰ ਪ੍ਰਭਾਸ਼ ਕਰਵਾਉਣਾ ਕਿ ਉਹ ਭਾਸ਼ਾ ਸਮਝਦਾ ਹੈ ਪਰ ਸੱਚੀ ਸਮਝ ਨਹੀਂ ਦੇ ਸਕਦਾ।" ([ਸਰੋਤ](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_ ਦ੍ਰਿਸ਼ਕੋਣ ਨੇ ਹੌਲੀ-ਹੌਲੀ ਅਗਵਾਈ ਕੀਤੀ ਕਿਉਂਕਿ ਇਸਦੇ ਨਤੀਜੇ ਵਧੇਰੇ ਸਮਝਣਯੋਗ ਹਨ।
+ਇਸ ਦੇ ਨਾਲ, ਵੱਖ-ਵੱਖ AI ਵਿਚਾਰਧਾਰਾਵਾਂ ਬਣਣ ਲੱਗੀਆਂ। ਇੱਕ ਦੋਹਾਂ 'ਸਕ੍ਰਫੀ' ਅਤੇ 'ਨੀਟ AI' ਅਭਿਆਸਾਂ ਵਿੱਚ ਵੰਡ ਬਣੀ। _ਸਕ੍ਰਫੀ_ ਲੈਬਰਟਰੀਆਂ ਪ੍ਰੋਗਰਾਮ ਨੂੰ ਘੰਟਿਆਂ ਤਕ ਟਵੀਕ ਕਰਦੀਆਂ ਰਹਿੰਦੀਆਂ ਤੱਕ ਕਿ ਚਾਹਵਾਂ ਨਤੀਜੇ ਮਿਲ ਜਾਣ। _ਨੀਟ_ ਲੈਬਰਟਰੀਆਂ ਨੇ "ਲਾਜਿਕ ਅਤੇ ਸੰਰਚਨਾਤਮਕ ਸਮੱਸਿਆ ਹੱਲ ਕਰਨ 'ਤੇ ਧਿਆਨ ਦਿੱਤਾ।" ELIZA ਅਤੇ SHRDLU ਭਲਕੇ _ਸਕ੍ਰਫੀ_ ਪ੍ਰਣਾਲੀਆਂ ਸਨ। 1980 ਦੇ ਦਹਾਕੇ ਵਿੱਚ ਜਦੋਂ ML ਪ੍ਰਣਾਲੀਆਂ ਨੂੰ ਲਾਗੂ ਕਰਨ ਯੋਗ ਬਣਾਉਣ ਦੀ ਲੋੜ ਵਧੀ, _ਨੀਟ_ ਤਰੀਕਾ ਅੱਗੇ ਆਇਆ ਕਿਉਂਕਿ ਇਸਦੇ ਨਤੀਜੇ ਵਧੀਆ ਵਿਆਖਿਆਯੋਗ ਹੁੰਦੇ ਸਨ।
---
-## 1980s ਵਿਸ਼ੇਸ਼ਗਿਆ ਸਿਸਟਮ
+## 1980 ਦੇ ਦਹਾਕੇ ਵਿੱਚ ਤਜਰਬੇਕਾਰ ਸਿਸਟਮ
-ਜਿਵੇਂ ਖੇਤਰ ਵਧਿਆ, ਇਸਦਾ ਕਾਰੋਬਾਰ ਲਈ ਲਾਭ ਸਪਸ਼ਟ ਹੋਇਆ, ਅਤੇ 1980 ਦੇ ਦਹਾਕੇ ਵਿੱਚ 'ਵਿਸ਼ੇਸ਼ਗਿਆ ਸਿਸਟਮਾਂ' ਦੀ ਵਾਧੂ ਹੋਈ। "ਵਿਸ਼ੇਸ਼ਗਿਆ ਸਿਸਟਮ ਕ੍ਰਿਤ੍ਰਿਮ ਬੁੱਧੀ (AI) ਸਾਫਟਵੇਅਰ ਦੇ ਪਹਿਲੇ ਸੱਚਮੁੱਚ ਸਫਲ ਰੂਪਾਂ ਵਿੱਚੋਂ ਸਨ।" ([source](https://wikipedia.org/wiki/Expert_system))।
+ਖੇਤਰ ਦੇ ਵਧਦੇ ਨਾਲ, ਇਹ ਵਪਾਰ ਲਈ ਲਾਭਦਾਇਕ ਹੋਣ ਲਈ ਸਾਫ ਹੋ ਗਿਆ ਅਤੇ 1980 ਦੇ ਦਹਾਕੇ ਵਿੱਚ 'ਐਕਸਪੇਰਟ ਸਿਸਟਮ' ਦਾ ਪ੍ਰਚਲਨ ਵਧਿਆ। "ਐਕਸਪੇਰਟ ਸਿਸਟਮ ਸੱਚ-ਮੁੱਚ ਕ੍ਰਿਤ੍ਰਿਮ ਬੁੱਧੀ (AI) ਸਾਫਟਵੇਅਰ ਦੇ ਪਹਿਲੇ ਸਫਲ ਰੂਪਾਂ ਵਿੱਚੋਂ ਹਨ।" ([ਸਰੋਤ](https://wikipedia.org/wiki/Expert_system))
-ਇਸ ਕਿਸਮ ਦਾ ਸਿਸਟਮ ਅਸਲ ਵਿੱਚ _hybrid_ ਹੈ, ਜਿਸ ਵਿੱਚ ਹਿੱਸਾ ਲਿਆਏ ਬਿਜ਼ਨਸ ਦੀਆਂ ਜ਼ਰੂਰਤਾਂ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਨ ਵਾਲਾ ਰੂਲਜ਼ ਇੰਜਨ ਅਤੇ ਇੱਕ ਇਨਫਰੈਂਸ ਇੰਜਨ ਸ਼ਾਮਲ ਹੈ ਜੋ ਨਵੇਂ ਤੱਥਾਂ ਨੂੰ ਨਿਰਧਾਰਤ ਕਰਨ ਲਈ ਰੂਲਜ਼ ਸਿਸਟਮ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ।
+ਇਹ ਪ੍ਰਕਾਰ ਦੀ ਪ੍ਰਣਾਲੀ ਅਸਲ ਵਿੱਚ _ਹਾਈਬ੍ਰਿਡ_ ਹੈ, ਜਿਸ ਵਿੱਚ ਹਿੱਸਾ ਹਿੱਸਾ ਰੂਲ ਇੰਜਣ ਹੁੰਦਾ ਹੈ ਜੋ ਕਾਰੋਬਾਰੀ ਜ਼ਰੂਰਤਾਂ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦਾ ਹੈ, ਅਤੇ ਇਕ ਇਨਫਰੈਂਸ ਇੰਜਣ ਜੋ ਨਵੇਂ ਤੱਥ ਨਿਕਾਲਣ ਲਈ ਰੂਲ ਸਿਸਟਮ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ।
-ਇਸ ਯੁੱਗ ਵਿੱਚ ਨਿਊਰਲ ਨੈਟਵਰਕਾਂ 'ਤੇ ਵੀ ਵਧੇਰੇ ਧਿਆਨ ਦਿੱਤਾ ਗਿਆ।
+ਇਸ ਦੌਰਾਨ ਨਿਊਰਲ ਨੈੱਟਵਰਕ ਉੱਤੇ ਧਿਆਨ ਵਧਿਆ।
---
-## 1987 - 1993: AI 'Chill'
+## 1987 - 1993: AI ਵਿੱਚ ਠੰਢ
-ਵਿਸ਼ੇਸ਼ਗਿਆ ਸਿਸਟਮਾਂ ਦੇ ਵਿਸ਼ੇਸ਼ ਹਾਰਡਵੇਅਰ ਦੀ ਵਾਧੂ ਹੋਣ ਦਾ ਅਫਸੋਸਜਨਕ ਪ੍ਰਭਾਵ ਇਹ ਸੀ ਕਿ ਇਹ ਬਹੁਤ ਜ਼ਿਆਦਾ ਵਿਸ਼ੇਸ਼ ਹੋ ਗਏ। ਪੈਰਸਨਲ ਕੰਪਿਊਟਰਾਂ ਦੇ ਉਭਾਰ ਨੇ ਵੀ ਇਨ੍ਹਾਂ ਵੱਡੇ, ਵਿਸ਼ੇਸ਼, ਕੇਂਦਰੀ ਸਿਸਟਮਾਂ ਨਾਲ ਮੁਕਾਬਲਾ ਕੀਤਾ। ਗਣਨਾ ਦੀ ਲੋਕਤੰਤਰਤਾ ਸ਼ੁਰੂ ਹੋ ਗਈ ਸੀ, ਅਤੇ ਇਸਨੇ ਆਖਿਰਕਾਰ ਵੱਡੇ ਡਾਟਾ ਦੇ ਆਧੁਨਿਕ ਵਿਸ਼ਫੋਟ ਦਾ ਰਾਹ ਖੋਲ੍ਹਿਆ।
+ਖਾਸ ਐਕਸਪੇਰਟ ਸਿਸਟਮ ਹਾਰਡਵੇਅਰ ਦੇ ਪ੍ਰਚਲਨ ਕਾਰਨ ਇਹ ਬਹੁਤ ਜ਼ਿਆਦਾ ਖਾਸ ਹੋ ਗਿਆ। ਨਿੱਜੀ ਕੰਪਿਊਟਰਾਂ ਦੇ ਉਭਾਰ ਨੇ ਵੀ ਇਹ ਵੱਡੀਆਂ, ਖਾਸ, ਕੇਂਦ੍ਰਿਤ ਪ੍ਰਣਾਲੀਆਂ ਨਾਲ ਮੁਕਾਬਲਾ ਕੀਤਾ। ਕਮਪਿਊਟਿੰਗ ਦੀ ਲੋਕ-ਪ੍ਰਧਾਨਤਾ ਸ਼ੁਰੂ ਹੋਈ ਅਤੇ ਇਹ ਆਖ਼ਿਰਕਾਰ ਵੱਡੇ ਡੇਟਾ ਦੇ ਆਧੁਨਿਕ ਵਿਸ਼ਫੋਟ ਲਈ ਰਸਤਾ ਬਣਾਇਆ।
---
## 1993 - 2011
-ਇਸ ਯੁੱਗ ਨੇ ML ਅਤੇ AI ਲਈ ਕੁਝ ਸਮੱਸਿਆਵਾਂ ਹੱਲ ਕਰਨ ਲਈ ਇੱਕ ਨਵਾਂ ਯੁੱਗ ਲਿਆਇਆ ਜੋ ਪਹਿਲਾਂ ਡਾਟਾ ਅਤੇ ਗਣਨਾ ਸ਼ਕਤੀ ਦੀ ਘਾਟ ਕਾਰਨ ਹੋਈਆਂ ਸਨ। ਡਾਟਾ ਦੀ ਮਾਤਰਾ ਤੇਜ਼ੀ ਨਾਲ ਵਧਣ ਅਤੇ ਵਧੇਰੇ ਉਪਲਬਧ ਹੋਣ ਲੱਗੀ, ਚੰਗੇ ਅਤੇ ਮੰਦੇ ਦੋਵੇਂ ਲਈ, ਖਾਸ ਕਰਕੇ 2007 ਦੇ ਆਸਪਾਸ ਸਮਾਰਟਫੋਨ ਦੇ ਆਗਮਨ ਨਾਲ। ਗਣਨਾ ਸ਼ਕਤੀ exponential ਤਰੀਕੇ ਨਾਲ ਵਧੀ, ਅਤੇ ਅਲਗੋਰਿਦਮ ਇਸਦੇ ਨਾਲ-ਨਾਲ ਵਿਕਸਿਤ ਹੋਏ। ਖੇਤਰ ਨੇ ਪਿਛਲੇ ਦਿਨਾਂ ਦੀ ਅਜ਼ਾਦੀ ਨੂੰ ਛੱਡ ਕੇ ਇੱਕ ਸੱਚੇ ਵਿਸ਼ੇਸ਼ ਖੇਤਰ ਵਜੋਂ ਪੱਕਾ ਹੋਣਾ ਸ਼ੁਰੂ ਕੀਤਾ।
+ਇਸ ਯੁੱਗ ਵਿੱਚ ML ਅਤੇ AI ਨਵੇਂ ਯੁੱਗ ਵਿੱਚ ਦਾਖਲ ਹੋਏ ਜੋ ਡੇਟਾ ਅਤੇ ਕਮਪਿਊਟਿੰਗ ਸ਼ਕਤੀ ਦੀ ਘਾਟ ਕਾਰਨ ਪਹਿਲਾਂ ਬਨਦਿਸ਼ਾਂ ਪੈਦਾ ਹੋਈਆਂ ਸਮੱਸਿਆਵਾਂ ਦਾ ਹੱਲ ਕਰ ਸਕਦੇ ਸਨ। ਡੇਟਾ ਦੀ ਮਾਤਰਾ ਤੇਜ਼ੀ ਨਾਲ ਵਧੀ ਅਤੇ ਜਿਆਦਾ ਉਪਲਬਧ ਹੋਈ, ਖਾਸ ਕਰਕੇ 2007 ਕੋਲ ਸਮਾਰਟਫੋਨ ਦੇ ਆਵਿਰਭਾਵ ਨਾਲ। ਕਮਪਿਊਟਿੰਗ ਸ਼ਕਤੀ ਗੁਣਾ ਵਧੀ ਅਤੇ ਅਲਗੋਰਿਦਮ ਉਹਨਾਂ ਦੇ ਨਾਲ ਵਿਕਸਿਤ ਹੋਏ। ਖੇਤਰ ਨੇ ਆਪਣੀ ਪੱਕੜ ਪਾਈ ਜਦ ਪਿਛਲੇ ਅਜ਼ਾਦ ਦਿਵਸ ਸੱਚਮੁੱਚ ਇੱਕ ਵਿਸ਼ੇਸ਼ਤਾ ਵਿੱਚ ਪਰਿਵਰਤਿਤ ਹੋ ਗਏ।
---
## ਹੁਣ
-ਅੱਜ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਅਤੇ AI ਸਾਡੇ ਜੀਵਨ ਦੇ ਲਗਭਗ ਹਰ ਹਿੱਸੇ ਨੂੰ ਛੂਹ ਰਹੇ ਹਨ। ਇਹ ਯੁੱਗ ਇਨ੍ਹਾਂ ਅਲਗੋਰਿਦਮਾਂ ਦੇ ਮਨੁੱਖੀ ਜੀਵਨ 'ਤੇ ਸੰਭਾਵਿਤ ਪ੍ਰਭਾਵਾਂ ਦੀ ਸਾਵਧਾਨੀ ਨਾਲ ਸਮਝ ਦੀ ਮੰਗ ਕਰਦਾ ਹੈ। ਜਿਵੇਂ Microsoft
+ਅੱਜ ਮਸ਼ੀਨ ਲਰਣਿੰਗ ਅਤੇ AI ਸਾਡੀ ਜ਼ਿੰਦਗੀ ਦੇ ਲਗਭਗ ਹਰੇਕ ਹਿੱਸੇ ਨੂੰ ਛੂਹਦੇ ਹਨ। ਇਹ ਯੁੱਗ ਇਹ ਤਰ੍ਹਾਂ ਦੇ ਅਲਗੋਰਿਦਮਾਂ ਦੇ ਖਤਰਿਆਂ ਅਤੇ ਸੰਭਾਵਤ ਪ੍ਰਭਾਵਾਂ ਦਾ ਧਿਆਨਪੂਰਵਕ ਸਹੀ ਸਮਝ ਮੰਗਦਾ ਹੈ। ਜਿਵੇਂ ਮਾਈਕ੍ਰੋਸਾਫਟ ਦੇ ਬ੍ਰੈਡ ਸਮਿਥ ਨੇ ਕਿਹਾ, "ਸੂਚਨਾ ਟੈਕਨੋਲੋਜੀ ਉਹ ਮੁੱਦੇ ਉਠਾਉਂਦੀ ਹੈ ਜੋ ਮੁਲਭੂਤ ਮਨੁੱਖੀ ਅਧਿਕਾਰਾਂ ਦੀ ਸੁਰੱਖਿਆ ਨਾਲ ਸਬੰਧਤ ਹਨ ਜਿਵੇਂ ਕਿ ਨਿੱਜਤਾ ਅਤੇ ਅਭਿਵ્યਕਤੀ ਦੀ ਆਜ਼ਾਦੀ। ਇਹ ਮੁੱਦੇ ਉਹਨਾਂ ਟੈਕ ਕੰਪਨੀਆਂ ਲਈ ਜ਼ਿੰਮੇਵਾਰੀ ਵਧਾਉਂਦੇ ਹਨ ਜੋ ਇਹ ਉਤਪਾਦ ਬਣਾਉਂਦੀਆਂ ਹਨ। ਸਾਡੇ ਵਿਚਾਰ ਵਿੱਚ, ਇਹ ਸੋਚ-ਵਿਚਾਰ ਵਾਲੀ ਸਰਕਾਰੀ ਨਿਯਮਬੰਦੀ ਅਤੇ ਕਿਸੇ ਸਰਯੋਗ ਖਪਤਾਂ ਲਈ ਨਿਯਮਾਂ ਦੀ ਵਿਕਾਸ ਮੰਗਦਾ ਹੈ" ([ਸਰੋਤ](https://www.technologyreview.com/2019/12/18/102365/the-future-of-ais-impact-on-society/)).
+
+---
+
+ਇਹ ਵੇਖਣਾ ਬਾਕੀ ਹੈ ਕਿ ਭਵਿੱਖ ਕੀ ਲੈ ਕੇ ਆਵੇਗਾ, ਪਰ ਇਹ ਜਰੂਰੀ ਹੈ ਕਿ ਅਸੀਂ ਇਹਨਾਂ ਕੰਪਿਊਟਰ ਸਿਸਟਮਾਂ ਅਤੇ ਉਹਨਾਂ ਉੱਤੇ ਚੱਲਣ ਵਾਲੇ ਸਾਫਟਵੇਅਰ ਅਤੇ ਅਲਗੋਰਿਦਮਾਂ ਨੂੰ ਸਮਝੀਏ। ਅਸੀਂ ਆਸ ਕਰਦੇ ਹਾਂ ਕਿ ਇਹ ਪਾਠਕ੍ਰਮ ਤੁਹਾਨੂੰ ਵਧੀਆ ਸਮਝ ਪ੍ਰਦਾਨ ਕਰੇ ਤਾਂ ਕਿ ਤੁਸੀਂ ਆਪਣੇ ਲਈ ਫੈਸਲਾ ਕਰ ਸਕੋ।
+
+[](https://www.youtube.com/watch?v=mTtDfKgLm54 "ਡੀਪ ਲਰਨਿੰਗ ਦਾ ਇਤਿਹਾਸ")
+> 🎥 ਉਪਰ ਦਿੱਤੀ ਚਿੱਤਰ ਕਲਿੱਕ ਕਰ ਕੇ ਵੀਡੀਓ: ਯਾਨ ਲੇਕਨ ਇਸ ਲੇਕਚਰ ਵਿੱਚ ਡੀਪ ਲਰਨਿੰਗ ਦੇ ਇਤਿਹਾਸ ਦੀ ਚਰਚਾ ਕਰਦੇ ਹਨ
+
+---
+## 🚀ਚੁਣੌਤੀ
+
+ਇਨ੍ਹਾਂ ਇਤਿਹਾਸਕ ਪਲਾਂ ਵਿੱਚੋਂ ਕਿਸੇ ਇੱਕ ਵਿੱਚ ਡੂੰਘਾਈ ਨਾਲ ਜਾਣ ਅਤੇ ਉਹਨਾਂ ਸ਼ਖਸੀਅਤਾਂ ਬਾਰੇ ਜ਼ਿਆਦਾ ਜਾਣੋ। ਇਥੇ ਦਿਲਚਸਪ ਵਿਅਕਤੀ ਹਨ, ਅਤੇ ਕੋਈ ਵੀ ਵਿਗਿਆਨਕ ਖੋਜ ਕਦੇ ਵੀ ਸਾਂਸਕ੍ਰਿਤਕ ਖਾਲੀ ਜਗ੍ਹਾ 'ਚ ਨਹੀਂ ਬਣੀ। ਤੁਸੀਂ ਕੀ ਖੋਜਦੇ ਹੋ?
+
+## [ਪੋਸਟ-ਲੇਕਚਰ ਕਵਿਜ਼](https://ff-quizzes.netlify.app/en/ml/)
+
+---
+## ਸਮੀਖਿਆ ਅਤੇ ਸਵਯੰ ਅਧਿਆਨ
+
+ਇੱਥੇ ਕੁਝ ਚੀਜ਼ਾਂ ਹਨ ਜੋ ਤੁਸੀਂ ਦੇਖ ਅਤੇ ਸੁਣ ਸਕਦੇ ਹੋ:
+
+[ਇਹ ਪਾਡਕਾਸਟ ਜਿਸ ਵਿੱਚ ਐਮੀ ਬੋਇਡ 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
+
+**ਅਸਵੀਕਾਰੋਪਣ**:
+ਇਸ ਦਸਤਾਵੇਜ਼ ਦਾ ਅਨੁਵਾਦ ਏਆਈ ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀਤਾਵਾਂ ਲਈ ਯਤਨਸ਼ੀਲ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਰੱਖੋ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸਮੱਤਿਆਵਾਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਆਪਣੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਕ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਜਰੂਰੀ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫ਼ਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਅਸੀਂ ਇਸ ਅਨੁਵਾਦ ਦੇ ਉਪਯੋਗ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੀਆਂ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀਆਂ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆਵਾਂ ਲਈ ਜਵਾਬਦੇਹ ਨਹੀਂ ਹਾਂ।
+
\ No newline at end of file
diff --git a/translations/pa/1-Introduction/3-fairness/README.md b/translations/pa/1-Introduction/3-fairness/README.md
index 59f44954e..7336d5a84 100644
--- a/translations/pa/1-Introduction/3-fairness/README.md
+++ b/translations/pa/1-Introduction/3-fairness/README.md
@@ -1,110 +1,167 @@
-# ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਹੱਲਾਂ ਨੂੰ ਜ਼ਿੰਮੇਵਾਰ AI ਨਾਲ ਬਣਾਉਣਾ
-
-
-> ਸਕੈਚਨੋਟ [ਟੋਮੋਮੀ ਇਮੁਰਾ](https://www.twitter.com/girlie_mac) ਦੁਆਰਾ
-
-## [ਪ੍ਰੀ-ਲੈਕਚਰ ਕਵਿਜ਼](https://ff-quizzes.netlify.app/en/ml/)
+# ਜ਼ਿੰਮੇਵਾਰ AI ਨਾਲ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਹੱਲ ਬਣਾਉਣਾ
+
+
+> ਸਕੈਚਨੋਟ ਲੇਖਕ [Tomomi Imura](https://www.twitter.com/girlie_mac)
+## [ਪ੍ਰੀ-ਲੇਕਚਰ ਕੁਇਜ਼](https://ff-quizzes.netlify.app/en/ml/)
+
## ਪਰਿਚਯ
-ਇਸ ਪਾਠਕ੍ਰਮ ਵਿੱਚ, ਤੁਸੀਂ ਇਹ ਪਤਾ ਲਗਾਉਣਾ ਸ਼ੁਰੂ ਕਰੋਗੇ ਕਿ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਕਿਵੇਂ ਅਤੇ ਕਿੰਨਾ ਸਾਡੇ ਰੋਜ਼ਾਨਾ ਜੀਵਨ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰ ਰਿਹਾ ਹੈ। ਅੱਜ ਵੀ, ਸਿਸਟਮ ਅਤੇ ਮਾਡਲ ਸਿਹਤ ਸੰਭਾਲ ਨਿਰਣਯ, ਲੋਨ ਅਪ੍ਰੂਵਲ ਜਾਂ ਧੋਖੇ ਦੀ ਪਛਾਣ ਵਰਗੇ ਦਿਨ-ਚਲਣ ਵਾਲੇ ਫੈਸਲੇ ਲੈਣ ਵਾਲੇ ਕੰਮਾਂ ਵਿੱਚ ਸ਼ਾਮਲ ਹਨ। ਇਸ ਲਈ ਇਹ ਜ਼ਰੂਰੀ ਹੈ ਕਿ ਇਹ ਮਾਡਲ ਭਰੋਸੇਯੋਗ ਨਤੀਜੇ ਦੇਣ ਲਈ ਚੰਗਾ ਕੰਮ ਕਰਨ। ਜਿਵੇਂ ਕਿ ਕੋਈ ਵੀ ਸਾਫਟਵੇਅਰ ਐਪਲੀਕੇਸ਼ਨ, AI ਸਿਸਟਮ ਉਮੀਦਾਂ 'ਤੇ ਖਰਾ ਨਹੀਂ ਉਤਰ ਸਕਦੇ ਜਾਂ ਅਣਚਾਹੇ ਨਤੀਜੇ ਦੇ ਸਕਦੇ ਹਨ। ਇਸੇ ਲਈ ਇਹ ਜ਼ਰੂਰੀ ਹੈ ਕਿ AI ਮਾਡਲ ਦੇ ਵਿਹਾਰ ਨੂੰ ਸਮਝਣ ਅਤੇ ਵਿਆਖਿਆ ਕਰਨ ਦੀ ਸਮਰੱਥਾ ਹੋਵੇ।
+ਇਸ ਪਾਠਕ੍ਰਮ ਵਿੱਚ, ਤੁਸੀਂ ਪਤਾ ਲਗਾਉਣਾ ਸ਼ੁਰੂ ਕਰੋਗੇ ਕਿ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਸਾਡੇ ਰੋਜ਼ਾਨਾ ਜੀਵਨ 'ਤੇ ਕਿਵੇਂ ਅਤੇ ਕਿਦਾਂ ਪ੍ਰਭਾਵ ਪਾ ਰਹੀ ਹੈ। ਅਜੇ ਵੀ, ਸਿਸਟਮ ਅਤੇ ਮਾਡਲ ਦੈਨੀਕ ਫੈਸਲੇ ਲੈਣ ਵਾਲੇ ਕੰਮਾਂ 'ਚ ਸ਼ਾਮਿਲ ਹਨ, ਜਿਵੇਂ ਕਿ ਸਿਹਤ ਸੰਭਾਲ ਦੀ ਨਿਧਾਨੀ, ਲੋਨ ਮਨਜ਼ੂਰੀ ਜਾਂ ਧੋਖਾਧੜੀ ਦੀ ਪਛਾਣ। ਇਸ ਲਈ ਇਹ ਜ਼ਰੂਰੀ ਹੈ ਕਿ ਇਹ ਮਾਡਲ ਵਧੀਆ ਕੰਮ ਕਰਨ ਤਾਂ ਜੋ ਨਤੀਜੇ ਭਰੋਸੇਯੋਗ ਹੋਣ। ਜਿਵੇਂ ਕਿਸੇ ਵੀ ਸਾਫਟਵੇਅਰ ਏਪਲੀਕੇਸ਼ਨ ਦੀ ਤਰ੍ਹਾਂ, AI ਸਿਸਟਮ ਉਮੀਦਾਂ 'ਤੇ ਖਰਾ ਨਹੀਂ ਉਤਰ ਸਕਦੇ ਜਾਂ ਨاپਸੰਦ ਨਤੀਜੇ ਦਿੰਦੇ ਹਨ। ਇਸ ਲਈ AI ਮਾਡਲ ਦੇ ਵਰਤਾਵ ਨੂੰ ਸਮਝਣਾ ਅਤੇ ਵਿਆਖਿਆ ਕਰਨਾ ਬਹੁਤ ਜ਼ਰੂਰੀ ਹੈ।
-ਸੋਚੋ ਕਿ ਕੀ ਹੋ ਸਕਦਾ ਹੈ ਜਦੋਂ ਤੁਸੀਂ ਇਹ ਮਾਡਲ ਬਣਾਉਣ ਲਈ ਵਰਤ ਰਹੇ ਡਾਟਾ ਵਿੱਚ ਕੁਝ ਜਾਤੀਆਂ, ਜੈਂਡਰ, ਰਾਜਨੀਤਿਕ ਦ੍ਰਿਸ਼ਟੀਕੋਣ, ਧਰਮ ਜਾਂ ਅਸਮਾਨ ਪ੍ਰਤੀਨਿਧਤਾ ਦੀ ਕਮੀ ਹੋਵੇ। ਜਦੋਂ ਮਾਡਲ ਦਾ ਨਤੀਜਾ ਕੁਝ ਜਾਤੀਆਂ ਨੂੰ ਵਧੇਰੇ ਤਰਜੀਹ ਦੇਣ ਵੱਲ ਵਿਆਖਿਆ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਐਪਲੀਕੇਸ਼ਨ ਲਈ ਕੀ ਨਤੀਜਾ ਹੋਵੇਗਾ? ਇਸ ਤੋਂ ਇਲਾਵਾ, ਜਦੋਂ ਮਾਡਲ ਦਾ ਨਤੀਜਾ ਨੁਕਸਾਨਦਾਇਕ ਹੋਵੇ ਅਤੇ ਲੋਕਾਂ ਲਈ ਹਾਨਿਕਾਰਕ ਹੋਵੇ, ਤਾਂ ਕੀ ਹੋਵੇਗਾ? AI ਸਿਸਟਮ ਦੇ ਵਿਹਾਰ ਲਈ ਕੌਣ ਜ਼ਿੰਮੇਵਾਰ ਹੈ? ਇਹ ਕੁਝ ਸਵਾਲ ਹਨ ਜੋ ਅਸੀਂ ਇਸ ਪਾਠਕ੍ਰਮ ਵਿੱਚ ਖੋਜਾਂਗੇ।
+ਸੋਚੋ ਜਦੋਂ ਤੁਸੀਂ ਮਾਡਲ ਬਣਾਉਣ ਲਈ ਜੋ ਡੇਟਾ ਵਰਤ ਰਹੇ ਹੋ ਉਹ ਕੁਝਲੋੜੀਂਦੇ ਲੋਕਸੰਖਿਆਵਾਂ, ਜਿਵੇਂ ਕਿ ਜਾਤੀ, ਲਿੰਗ, ਸਿਆਸੀ ਦ੍ਰਿਸ਼ਟੀਕੋਣ, ਧਰਮ ਦਾ ਘਾਟ ਹੈ ਜਾਂ ਦਰੁਸਤ ਤੌਰ 'ਤੇ ਨੁਮਾਇੰਦਗੀ ਨਹੀਂ ਕਰਦਾ। ਜਦ ਮਾਡਲ ਦਾ ਨਤੀਜਾ ਕਿਸੇ ਖਾਸ ਲੋਕਸੰਖਿਆਵਾਂ ਦੇ ਹੱਕ ਵਿੱਚ ਪਰਗਟ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਤਾਂ ਕੀ ਹੁੰਦਾ ਹੈ? ਐਪਲੀਕੇਸ਼ਨ ਲਈ ਨਤੀਜਾ ਕੀ ਹੈ? ਇਸ ਤੋਂ ਇਲਾਵਾ, ਜਦ ਮਾਡਲ ਦਾ ਨਤੀਜਾ ਵਿਰੋਧੀ ਹੁੰਦਾ ਹੈ ਅਤੇ ਲੋਕਾਂ ਨੂੰ ਨੁਕਸਾਨ ਪਹੁੰਚਾਉਂਦਾ ਹੈ ਤਾਂ ਕੀ ਹੁੰਦਾ ਹੈ? AI ਸਿਸਟਮ ਦੇ ਵਰਤਾਵ ਲਈ ਜਿੱਤੂ ਨੰਬਰ ਹੈ? ਇਹ ਕੁਝ ਪ੍ਰਸ਼ਨ ਹਨ ਜੋ ਅਸੀਂ ਇਸ ਪਾਠਕ੍ਰਮ ਵਿੱਚ ਖੋਜਾਂਗੇ।
ਇਸ ਪਾਠ ਵਿੱਚ, ਤੁਸੀਂ:
-- ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਵਿੱਚ ਨਿਰਪੱਖਤਾ ਅਤੇ ਇਸ ਨਾਲ ਜੁੜੇ ਨੁਕਸਾਨਾਂ ਦੀ ਮਹੱਤਤਾ ਬਾਰੇ ਜਾਗਰੂਕਤਾ ਵਧਾਉਣਗੇ।
-- ਵਿਸ਼ੇਸ਼ ਘਟਨਾਵਾਂ ਅਤੇ ਅਜੀਬ ਸਥਿਤੀਆਂ ਦੀ ਜਾਂਚ ਕਰਨ ਦੀ ਪ੍ਰਕਿਰਿਆ ਨਾਲ ਜਾਣੂ ਹੋਵੋਗੇ ਤਾਂ ਜੋ ਭਰੋਸੇਯੋਗਤਾ ਅਤੇ ਸੁਰੱਖਿਆ ਨੂੰ ਯਕੀਨੀ ਬਣਾਇਆ ਜਾ ਸਕੇ।
-- ਸਮਝ ਪ੍ਰਾਪਤ ਕਰੋਗੇ ਕਿ ਸਭ ਨੂੰ ਸ਼ਾਮਲ ਕਰਨ ਵਾਲੇ ਸਿਸਟਮ ਡਿਜ਼ਾਈਨ ਕਰਕੇ ਸਸ਼ਕਤ ਬਣਾਉਣਾ ਕਿੰਨਾ ਜ਼ਰੂਰੀ ਹੈ।
-- ਡਾਟਾ ਅਤੇ ਲੋਕਾਂ ਦੀ ਗੋਪਨੀਯਤਾ ਅਤੇ ਸੁਰੱਖਿਆ ਦੀ ਰੱਖਿਆ ਕਰਨ ਦੀ ਮਹੱਤਤਾ ਦੀ ਖੋਜ ਕਰੋਗੇ।
-- AI ਮਾਡਲਾਂ ਦੇ ਵਿਹਾਰ ਨੂੰ ਵਿਆਖਿਆ ਕਰਨ ਲਈ ਗਲਾਸ ਬਾਕਸ ਪਹੁੰਚ ਦੀ ਮਹੱਤਤਾ ਦੇਖੋਗੇ।
-- ਇਸ ਗੱਲ ਦਾ ਧਿਆਨ ਰੱਖੋਗੇ ਕਿ AI ਸਿਸਟਮ ਵਿੱਚ ਭਰੋਸਾ ਬਣਾਉਣ ਲਈ ਜ਼ਿੰਮੇਵਾਰੀ ਕਿੰਨੀ ਜ਼ਰੂਰੀ ਹੈ।
+- ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਵਿੱਚ ਨਿਆਂ ਦੀ ਮਹੱਤਤਾ ਅਤੇ ਨਿਆਂ ਨਾਲ ਜੁੜੇ ਨੁਕਸਾਨਾਂ ਦੀ ਜਾਗਰੂਕਤਾ ਵਧਾਓਗੇ।
+- ਭਰੋਸੇਯੋਗਤਾ ਅਤੇ ਸੁਰੱਖਿਆ ਨੂੰ ਯਕੀਨੀ ਬਨਾਉਣ ਲਈ ਅਸਧਾਰਣ ਹਾਲਤਾਂ ਅਤੇ ਦੁਸਪ੍ਰਵਿਰਤੀਆਂ ਦੀ ਖੋਜ ਕਰਨ ਦੀ ਅਭਿਆਸ ਨਾਲ ਜਾਣੂ ਹੋਵੋਗੇ।
+- ਸ਼ਾਮਲ ਸਿਸਟਮ ਡਿਜ਼ਾਈਨ ਕਰਕੇ ਸਾਰੇ ਨੂੰ ਸ਼ਕਤੀਸ਼ਾਲੀ ਬਣਾਉਣ ਦੀ ਲੋੜ ਨੂੰ ਸਮਝੋਗੇ।
+- ਡੇਟਾ ਅਤੇ ਲੋਕਾਂ ਦੀ ਗੋਪਨੀਯਤਾ ਅਤੇ ਸੁਰੱਖਿਆ ਦੀ ਰੱਖਿਆ ਕਿੰਨੀ ਜਰੂਰੀ ਹੈ ਇਸ ਨੂੰ ਵੇਖੋਂਗੇ।
+- AI ਮਾਡਲ ਦੀ ਵਰਤੋਂ ਨੂੰ ਸਮਝਾਉਣ ਲਈ ਕਾਂਚ ਦੀ ਡੱਬੀ (ਗਲਾਸ ਬਾਕਸ) ਪਹੁੰਚ ਦੀ ਮਹੱਤਤਾ ਨੂੰ ਸਮਝੋਂਗੇ।
+- AI ਸਿਸਟਮ ਵਿੱਚ ਭਰੋਸਾ ਬਣਾਉਣ ਲਈ ਲਾਗੂ ਜਾਣ ਦੀ ਜ਼ਰੂਰਤ ਦਾ ਧਿਆਨ ਰੱਖੋਗੇ।
## ਪੂਰਵ-ਸ਼ਰਤ
-ਪੂਰਵ-ਸ਼ਰਤ ਵਜੋਂ, ਕਿਰਪਾ ਕਰਕੇ "ਜ਼ਿੰਮੇਵਾਰ AI ਸਿਧਾਂਤ" ਲਰਨ ਪਾਠ ਲਓ ਅਤੇ ਹੇਠਾਂ ਦਿੱਤੇ ਵਿਡੀਓ ਨੂੰ ਦੇਖੋ:
+ਇੱਕ ਪੂਰਵ-ਸ਼ਰਤ ਵਜੋਂ, ਕਿਰਪਾ ਕਰਕੇ "ਜ਼ਿੰਮੇਵਾਰ AI ਸਿਧਾਂਤ" ਲਰਨ ਪਾਥ ਲਓ ਅਤੇ ਹੇਠਾਂ ਦਿੱਤੀ ਵੀਡੀਓ ਵੇਖੋ:
-ਜ਼ਿੰਮੇਵਾਰ AI ਬਾਰੇ ਹੋਰ ਜਾਣਕਾਰੀ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਇਸ [ਲਰਨਿੰਗ ਪਾਠ](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) ਨੂੰ ਫਾਲੋ ਕਰੋ।
+ਇਸ [ਲਰਨਿੰਗ ਪਾਥ](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) ਨੂੰ ਫੋਲੋ ਕਰਕੇ ਜ਼ਿੰਮੇਵਾਰ AI ਬਾਰੇ ਹੋਰ ਸਿੱਖੋ
-[](https://youtu.be/dnC8-uUZXSc "ਮਾਈਕਰੋਸਾਫਟ ਦਾ ਜ਼ਿੰਮੇਵਾਰ AI ਲਈ ਦ੍ਰਿਸ਼ਟੀਕੋਣ")
+[](https://youtu.be/dnC8-uUZXSc "Microsoft ਦੀ ਜ਼ਿੰਮੇਵਾਰ AI ਤਰੀਕਾ")
-> 🎥 ਉਪਰ ਦਿੱਤੀ ਤਸਵੀਰ 'ਤੇ ਕਲਿਕ ਕਰੋ: ਮਾਈਕਰੋਸਾਫਟ ਦਾ ਜ਼ਿੰਮੇਵਾਰ AI ਲਈ ਦ੍ਰਿਸ਼ਟੀਕੋਣ
+> 🎥 ਉੱਪਰ ਦੀ ਚਿੱਤਰ ਤੇ ਕਲਿੱਕ ਕਰੋ ਇੱਕ ਵੀਡੀਓ ਲਈ: Microsoft ਦੀ ਜ਼ਿੰਮੇਵਾਰ AI ਤਰੀਕਾ
-## ਨਿਰਪੱਖਤਾ
+## ਨਿਆਂ
-AI ਸਿਸਟਮ ਨੂੰ ਹਰ ਕਿਸੇ ਨਾਲ ਨਿਰਪੱਖ ਵਿਹਾਰ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ ਅਤੇ ਸਮਾਨ ਸਮੂਹਾਂ ਨੂੰ ਵੱਖ-ਵੱਖ ਤਰੀਕਿਆਂ ਨਾਲ ਪ੍ਰਭਾਵਿਤ ਕਰਨ ਤੋਂ ਬਚਣਾ ਚਾਹੀਦਾ ਹੈ। ਉਦਾਹਰਣ ਲਈ, ਜਦੋਂ AI ਸਿਸਟਮ ਸਿਹਤ ਇਲਾਜ, ਲੋਨ ਅਰਜ਼ੀਆਂ ਜਾਂ ਰੋਜ਼ਗਾਰ ਬਾਰੇ ਸਲਾਹ ਦਿੰਦੇ ਹਨ, ਤਾਂ ਉਹ ਸਮਾਨ ਲੱਛਣਾਂ, ਵਿੱਤੀ ਹਾਲਾਤਾਂ ਜਾਂ ਪੇਸ਼ੇਵਰ ਯੋਗਤਾਵਾਂ ਵਾਲੇ ਹਰ ਕਿਸੇ ਲਈ ਇੱਕੋ ਜਿਹੇ ਸਿਫਾਰਸ਼ਾਂ ਕਰਨ। ਸਾਡੇ ਵਿੱਚੋਂ ਹਰ ਇੱਕ ਮਨੁੱਖ ਵਿਰਾਸਤ ਵਿੱਚ ਮਿਲੇ ਪੱਖਪਾਤਾਂ ਨੂੰ ਆਪਣੇ ਨਾਲ ਲੈ ਕੇ ਚਲਦਾ ਹੈ ਜੋ ਸਾਡੇ ਫੈਸਲਿਆਂ ਅਤੇ ਕਾਰਵਾਈਆਂ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰਦੇ ਹਨ। ਇਹ ਪੱਖਪਾਤ ਉਹ ਡਾਟਾ ਵਿੱਚ ਵੀ ਦਿਖਾਈ ਦੇ ਸਕਦੇ ਹਨ ਜੋ ਅਸੀਂ AI ਸਿਸਟਮਾਂ ਨੂੰ ਸਿਖਾਉਣ ਲਈ ਵਰਤਦੇ ਹਾਂ। ਕਈ ਵਾਰ ਇਹ ਮੈਨਿਪੂਲੇਸ਼ਨ ਅਣਜਾਣੇ ਵਿੱਚ ਹੋ ਸਕਦਾ ਹੈ। ਅਕਸਰ ਇਹ ਜਾਣਨਾ ਮੁਸ਼ਕਲ ਹੁੰਦਾ ਹੈ ਕਿ ਤੁਸੀਂ ਡਾਟਾ ਵਿੱਚ ਪੱਖਪਾਤ ਕਦੋਂ ਸ਼ਾਮਲ ਕਰ ਰਹੇ ਹੋ।
+AI ਸਿਸਟਮ ਸਭ ਨੂੰ ਨਿਆਂਪੂਰਕਵਾਂ ਵਤੀਕਾ ਨਾਲ ਤਕ ਰਹਿਣਾ ਚਾਹੀਦਾ ਹੈ ਅਤੇ ਇੱਕੋ ਸਮੂਹ ਦੇ ਲੋਕਾਂ ਨੂੰ ਵੱਖ-ਵੱਖ ਤਰੀਕਿਆਂ ਨਾਲ ਪ੍ਰਭਾਵਿਤ ਕਰਨ ਤੋਂ ਬਚਣਾ ਚਾਹੀਦਾ ਹੈ। ਉਦਾਹਰਣ ਲਈ, ਜਦ AI ਸਿਸਟਮ ਮੈਡੀਕਲ ਇਲਾਜ, ਲੋਨ ਅਰਜ਼ੀਆਂ ਜਾਂ ਨੌਕਰੀ ਸਮੰਬੰਧੀ ਸਲਾਹ ਦਿੰਦੇ ਹਨ, ਤਾਂ ਉਹ ਇੱਕੋ ਲੱਛਣਾਂ, ਵਿੱਤੀ ਹਾਲਾਤਾਂ ਜਾਂ ਪੇਸ਼ੇਵਰ ਯੋਗਤਾਵਾਂ ਵਾਲੇ ਹਰ ਕਿਸੇ ਲਈ ਇੱਕੋ ਜਿਹੇ ਸਿਫਾਰਸ਼ਾਂ ਕਰਨ। ਹਰ ਇਕ ਇਨਸਾਨ ਦੇ ਅੰਦਰ ਵਿਰਾਸਤ ਵਾਲੇ ਭੇਦਭਾਵ ਹੁੰਦੇ ਹਨ ਜੋ ਸਾਡੇ ਫੈਸਲਿਆਂ ਅਤੇ ਕਾਰਵਾਈਆਂ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰਦੇ ਹਨ। ਇਹ ਭੇਦਭਾਵ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਸਿਸਟਮ ਟ੍ਰੇਨ ਕਰਨ ਵਾਲੇ ਡੇਟਾ ਵਿੱਚ ਵਿਖਾਈ ਦੇ ਸਕਦੇ ਹਨ। ਕਈ ਵਾਰ ਇਹ ਮਨਜ਼ੂਰੀ ਤੋਂ ਬਿਨਾਂ ਹੁੰਦਾ ਹੈ। ਜਾਣ-ਬੁਝ ਕੇ ਡੇਟਾ ਵਿੱਚ ਭੇਦਭਾਵ ਛੱਡਣੀ ਔਖਾ ਹੁੰਦਾ ਹੈ।
-**"ਅਨਨਿਰਪੱਖਤਾ"** ਵਿੱਚ ਨਕਾਰਾਤਮਕ ਪ੍ਰਭਾਵ ਜਾਂ "ਨੁਕਸਾਨ" ਸ਼ਾਮਲ ਹੁੰਦੇ ਹਨ, ਜੋ ਕਿਸੇ ਸਮੂਹ ਲਈ ਹੁੰਦੇ ਹਨ, ਜਿਵੇਂ ਕਿ ਜਾਤੀ, ਜੈਂਡਰ, ਉਮਰ ਜਾਂ ਅਪੰਗਤਾ ਸਥਿਤੀ ਦੇ ਅਧਾਰ 'ਤੇ ਪਰਿਭਾਸ਼ਿਤ। ਨਿਰਪੱਖਤਾ ਨਾਲ ਜੁੜੇ ਮੁੱਖ ਨੁਕਸਾਨਾਂ ਨੂੰ ਹੇਠਾਂ ਦਿੱਤੇ ਤਰੀਕਿਆਂ ਵਿੱਚ ਵਰਗਬੱਧ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ:
+**“ਨਿਆਂਪੂਰਕਤਾ ਦੀ ਘਾਟ”** ਦੇ ਅਰਥ ਹਨ ਨਕਾਰਾਤਮਕ ਪ੍ਰਭਾਵ ਜਾਂ “ਨੁਕਸਾਨ” ਜਿਸ ਦਾ ਪ੍ਰਭਾਵ ਕੁਝ ਲੋਕਸੰਖਿਆਵਾਂ ਉਤੇ ਪੈਂਦਾ ਹੈ ਜਿਵੇਂ ਕਿ ਜਾਤੀ, ਲਿੰਗ, ਉਮਰ ਜਾਂ ਅਪੰਗਤਾ ਦੀ ਸਥਿਤੀ। ਮੁੱਖ ਨਿਆਂ ਨਾਲ ਜੁੜੇ ਨੁਕਸਾਨ ਨੂੰ ਵੱਖ-ਵੱਖ ਤਰ੍ਹਾਂ ਵੰਡਿਆ ਜਾ ਸਕਦਾ ਹੈ:
-- **ਵੰਡ**, ਜੇਕਰ ਜੈਂਡਰ ਜਾਂ ਜਾਤੀ ਨੂੰ ਦੂਜੇ ਉੱਤੇ ਤਰਜੀਹ ਦਿੱਤੀ ਜਾਵੇ।
-- **ਸੇਵਾ ਦੀ ਗੁਣਵੱਤਾ**। ਜੇਕਰ ਤੁਸੀਂ ਡਾਟਾ ਨੂੰ ਇੱਕ ਖਾਸ ਸਥਿਤੀ ਲਈ ਸਿਖਾਉਂਦੇ ਹੋ ਪਰ ਹਕੀਕਤ ਕਾਫ਼ੀ ਜਟਿਲ ਹੈ, ਤਾਂ ਇਹ ਘੱਟ ਗੁਣਵੱਤਾ ਵਾਲੀ ਸੇਵਾ ਦੀ ਵਜ੍ਹਾ ਬਣਦਾ ਹੈ। ਉਦਾਹਰਣ ਲਈ, ਇੱਕ ਹੱਥ ਸਾਬਣ ਡਿਸਪੈਂਸਰ ਜੋ ਗੂੜ੍ਹੀ ਚਮੜੀ ਵਾਲੇ ਲੋਕਾਂ ਨੂੰ ਸੈਂਸ ਕਰਨ ਵਿੱਚ ਅਸਮਰੱਥ ਸੀ। [ਹਵਾਲਾ](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
-- **ਨਿੰਦਾ**। ਕੁਝ ਜਾਂ ਕਿਸੇ ਨੂੰ ਅਨਨਿਰਪੱਖ ਤਰੀਕੇ ਨਾਲ ਆਲੋਚਨਾ ਕਰਨਾ ਅਤੇ ਲੇਬਲ ਕਰਨਾ। ਉਦਾਹਰਣ ਲਈ, ਇੱਕ ਚਿੱਤਰ ਲੇਬਲਿੰਗ ਤਕਨਾਲੋਜੀ ਨੇ ਕਾਲੇ ਚਮੜੀ ਵਾਲੇ ਲੋਕਾਂ ਦੀਆਂ ਚਿੱਤਰਾਂ ਨੂੰ ਗੋਰਿਲਾ ਵਜੋਂ ਗਲਤ ਲੇਬਲ ਕੀਤਾ।
-- **ਵੱਧ ਜਾਂ ਘੱਟ ਪ੍ਰਤੀਨਿਧਤਾ**। ਇਹ ਵਿਚਾਰ ਕਿ ਇੱਕ ਖਾਸ ਸਮੂਹ ਨੂੰ ਇੱਕ ਖਾਸ ਪੇਸ਼ੇ ਵਿੱਚ ਨਹੀਂ ਦੇਖਿਆ ਜਾਂਦਾ, ਅਤੇ ਕੋਈ ਵੀ ਸੇਵਾ ਜਾਂ ਫੰਕਸ਼ਨ ਜੋ ਇਸ ਨੂੰ ਵਧਾਉਂਦਾ ਹੈ, ਨੁਕਸਾਨ ਪਹੁੰਚਾਉਣ ਵਿੱਚ ਯੋਗਦਾਨ ਪਾਉਂਦਾ ਹੈ।
-- **ਸਟਰਿਓਟਾਈਪਿੰਗ**। ਇੱਕ ਦਿੱਤੇ ਸਮੂਹ ਨੂੰ ਪਹਿਲਾਂ ਤੋਂ ਨਿਰਧਾਰਤ ਗੁਣਾਂ ਨਾਲ ਜੋੜਨਾ। ਉਦਾਹਰਣ ਲਈ, ਅੰਗਰੇਜ਼ੀ ਅਤੇ ਤੁਰਕੀ ਦੇ ਵਿਚਕਾਰ ਭਾਸ਼ਾ ਅਨੁਵਾਦ ਸਿਸਟਮ ਵਿੱਚ ਜੈਂਡਰ ਨਾਲ ਜੁੜੇ ਸਟਰਿਓਟਾਈਪਿਕਲ ਸ਼ਬਦਾਂ ਦੇ ਕਾਰਨ ਗਲਤੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ।
+- **ਵੰਡ**: ਉਦਾਹਰਣ ਵਜੋਂ ਕਿਸੇ ਲਿੰਗ ਜਾਂ ਜਨਸੰਖਿਆਵਾਂ ਨੂੰ ਦੂਜੇ ਨਾਲੋਂ ਪਸੰਦ ਕਰਨਾ।
+- **ਸੇਵਾ ਦੀ ਗੁਣਵੱਤਾ**: ਜੇ ਤੁਸੀਂ ਕਿਸੇ ਖਾਸ ਹਾਲਤ ਲਈ ਡੇਟਾ ਸਿਖਾਉਂਦੇ ਹੋ ਪਰ ਹਕੀਕਤ ਕਾਫੀ ਜ਼ਿਆਦਾ ਕੁੰਝਣੀ ਹੁੰਦੀ ਹੈ, ਤਾਂ ਇਹ ਖਰਾਬ ਕਾਰਗੁਜ਼ਾਰੀ ਵਾਲੀ ਸੇਵਾ ਦੇਵੇਗਾ। ਉਦਾਹਰਣ ਵਜੋਂ ਇੱਕ ਹੱਥ ਮੈਲੀ ਫੋਹਣ ਵਾਲਾ ਜਿਹੜਾ ਗੋਰੇ ਤੇ ਕਾਲੇ ਚਿੱਬੜ ਵਾਲੇ ਲੋਕਾਂ ਨੂੰ ਅੰਦਰ ਨਾ ਸੁੰਘ ਪਾਏ। [Reference](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773)
+- **ਧੋਖਾਧੜੀ**: ਕਿਸੇ ਚੀਜ਼ ਜਾਂ ਕਿਸੇ ਨੂੰ ਅਨਿਆਂਪੂਰਕ ਆਲੋਚਨਾ ਕਰਨੀ ਜਾਂ ਲੇਬਲ ਲਾਉਣਾ। ਉਦਾਹਰਣ ਵਜੋਂ, ਇੱਕ ਚਿੱਤਰ ਲੇਬਲਿੰਗ ਤਕਨੀਕ ਨੇ ਕਾਲੇ ਚਿੱਬੜ ਵਾਲੇ ਲੋਕਾਂ ਦੀਆਂ ਤਸਵੀਰਾਂ ਨੂੰ ਗੋਰਿਲਾ ਦੇ ਤੌਰ ਤੇ ਗਲਤ ਲੇਬਲ ਕੀਤਾ।
+- **ਅਧਿਕ ਜਾਂ ਘੱਟ ਪ੍ਰਤੀਨਿਧਿਤਾ**: ਵਿਚਾਰ ਇਹ ਹੈ ਕਿ ਇੱਕ ਸਮੂਹ ਕਿਸੇ ਖਾਸ ਪੇਸ਼ੇ ਵਿੱਚ ਨਹੀਂ ਦੇਖਿਆ ਜਾਂਦਾ ਅਤੇ ਕੋਈ ਵੀ ਸੇਵਾ ਜਾਂ ਕੰਮ ਜੋ ਇਸ ਸਮੂਹ ਨੂੰ ਅੱਗੇ ਵਧਾਉਂਦੀ ਹੈ, ਉਹ ਨੁਕਸਾਨ ਪਹੁੰਚਾ ਰਹੀ ਹੈ।
+- **ਸਟੇਰੀਓਟਾਈਪਿੰਗ**: ਕਿਸੇ ਸਮੂਹ ਨੂੰ ਪਹਿਲਾਂ ਤੋਂ ਦਿੱਤੇ ਗਏ ਗੁਣਾਂ ਨਾਲ ਜੋੜਨਾ। ਉਦਾਹਰਣ ਵਜੋਂ, ਇੱਕ ਭਾਸ਼ਾ ਅਨੁਵਾਦ ਪ੍ਰਣਾਲੀ ਜਿਹੜਾ ਅੰਗਰੇਜ਼ੀ ਅਤੇ ਤੁਰਕੀ ਭਾਸ਼ਾ ਵਿਚਕਾਰ ਅਕਸਰਲੜੀਆਂ ਨਾਲ ਲਿੰਗ ਨਾਲ ਸਬੰਧਿਤ ਵਿਚਾਰਾਂ ਦੀ ਵਜ੍ਹਾ ਨਾਲ ਗਲਤੀਆਂ ਕਰ ਸਕਦੀ ਹੈ।
-
-> ਤੁਰਕੀ ਵਿੱਚ ਅਨੁਵਾਦ
+
+> ਤੁਰਕੀ ਭਾਸ਼ਾ ਵਿੱਚ ਅਨੁਵਾਦ
-
-> ਵਾਪਸ ਅੰਗਰੇਜ਼ੀ ਵਿੱਚ ਅਨੁਵਾਦ
+
+> ਅੰਗਰੇਜ਼ੀ ਵਾਪਸ ਅਨੁਵਾਦ
-ਜਦੋਂ AI ਸਿਸਟਮਾਂ ਨੂੰ ਡਿਜ਼ਾਈਨ ਅਤੇ ਟੈਸਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ, ਤਾਂ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣਾ ਜ਼ਰੂਰੀ ਹੈ ਕਿ AI ਨਿਰਪੱਖ ਹੈ ਅਤੇ ਪੱਖਪਾਤੀ ਜਾਂ ਵਿਤਕਰਮਕ ਫੈਸਲੇ ਕਰਨ ਲਈ ਪ੍ਰੋਗਰਾਮ ਨਹੀਂ ਕੀਤਾ ਗਿਆ, ਜੋ ਮਨੁੱਖਾਂ ਲਈ ਵੀ ਮਨਾਹੀ ਹੈ। AI ਅਤੇ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਵਿੱਚ ਨਿਰਪੱਖਤਾ ਦੀ ਗਰੰਟੀ ਦੇਣਾ ਇੱਕ ਜਟਿਲ ਸਮਾਜ-ਤਕਨੀਕੀ ਚੁਣੌਤੀ ਬਣੀ ਰਹਿੰਦੀ ਹੈ।
+ਜਦ AI ਸਿਸਟਮ ਡਿਜ਼ਾਈਨ ਅਤੇ ਟੈਸਟ ਕੀਤੇ ਜਾਂਦੇ ਹਨ, ਸਾਨੂੰ ਯਕੀਨੀ ਬਣਾਉਣਾ ਚਾਹੀਦਾ ਹੈ ਕਿ AI ਨਿਆਂਪੂਰਕ ਹੈ ਅਤੇ ਪੱਖਪਾਤੀ ਜਾਂ ਵੱਖਰਾ ਦਿਲਚਸਪੀ ਵਾਲੇ ਫੈਸਲੇ ਨਹੀਂ ਲੈਂਦਾ, ਜਿਹੜੇ ਮਨੁੱਖਾਂ ਨੂੰ ਵੀ ਮਨਜ਼ੂਰ ਨਹੀਂ। AI ਅਤੇ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਵਿੱਚ ਨਿਆਂ ਦੀ ਗਾਰੰਟੀ ਦੇਣਾ ਇੱਕ ਜਟਿਲ ਸਮਾਜ-ਤਕਨਾਲੋਜੀ ਦੀ ਚੁਣੌਤੀ ਹੈ।
### ਭਰੋਸੇਯੋਗਤਾ ਅਤੇ ਸੁਰੱਖਿਆ
-ਭਰੋਸਾ ਬਣਾਉਣ ਲਈ, AI ਸਿਸਟਮਾਂ ਨੂੰ ਆਮ ਅਤੇ ਅਣਪ੍ਰਤੀਕਸ਼ਿਤ ਸਥਿਤੀਆਂ ਵਿੱਚ ਭਰੋਸੇਯੋਗ, ਸੁਰੱਖਿਅਤ ਅਤੇ ਸਥਿਰ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ। ਇਹ ਜਾਣਨਾ ਮਹੱਤਵਪੂਰਨ ਹੈ ਕਿ AI ਸਿਸਟਮ ਵੱਖ-ਵੱਖ ਸਥਿਤੀਆਂ ਵਿੱਚ ਕਿਵੇਂ ਵਿਹਾਰ ਕਰੇਗਾ, ਖਾਸ ਕਰਕੇ ਜਦੋਂ ਉਹ ਅਜੀਬ ਸਥਿਤੀਆਂ ਵਿੱਚ ਹੋਵੇ। AI ਹੱਲਾਂ ਬਣਾਉਣ ਸਮੇਂ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਕਾਫ਼ੀ ਧਿਆਨ ਦੇਣ ਦੀ ਲੋੜ ਹੈ ਕਿ AI ਹੱਲਾਂ ਵੱਖ-ਵੱਖ ਸਥਿਤੀਆਂ ਦਾ ਕਿਵੇਂ ਸਫਲਤਾਪੂਰਵਕ ਸਾਮਨਾ ਕਰਦੇ ਹਨ। ਉਦਾਹਰਣ ਲਈ, ਇੱਕ ਸਵੈ-ਚਲਾਉਣ ਵਾਲੀ ਕਾਰ ਨੂੰ ਲੋਕਾਂ ਦੀ ਸੁਰੱਖਿਆ ਨੂੰ ਸਿਖਰ ਤਰਜੀਹ ਦੇਣੀ ਚਾਹੀਦੀ ਹੈ। ਇਸ ਦੇ ਨਤੀਜੇ ਵਜੋਂ, ਕਾਰ ਨੂੰ ਚਲਾਉਣ ਵਾਲੇ AI ਨੂੰ ਉਹ ਸਾਰੇ ਸੰਭਾਵਿਤ ਦ੍ਰਿਸ਼ਾਂ ਨੂੰ ਧਿਆਨ ਵਿੱਚ ਰੱਖਣਾ ਚਾਹੀਦਾ ਹੈ ਜੋ ਕਾਰ ਨੂੰ ਮਿਲ ਸਕਦੇ ਹਨ, ਜਿਵੇਂ ਕਿ ਰਾਤ, ਬਿਜਲੀ ਦੀ ਗਰਜ, ਬਰਫ਼ੀਲੇ ਤੂਫ਼ਾਨ, ਸੜਕ 'ਤੇ ਦੌੜਦੇ ਬੱਚੇ, ਪਾਲਤੂ ਜਾਨਵਰ, ਸੜਕ ਦੇ ਕੰਮ ਆਦਿ। AI ਸਿਸਟਮ ਕਿਸ ਹੱਦ ਤੱਕ ਵੱਖ-ਵੱਖ ਸਥਿਤੀਆਂ ਨੂੰ ਭਰੋਸੇਯੋਗ ਅਤੇ ਸੁਰੱਖਿਅਤ ਤਰੀਕੇ ਨਾਲ ਸੰਭਾਲ ਸਕਦਾ ਹੈ, ਇਹ ਡਾਟਾ ਸਾਇੰਟਿਸਟ ਜਾਂ AI ਡਿਵੈਲਪਰ ਦੁਆਰਾ ਡਿਜ਼ਾਈਨ ਜਾਂ ਟੈਸਟਿੰਗ ਦੌਰਾਨ ਕੀਤੇ ਅਨੁਮਾਨਾਂ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ।
+ਭਰੋਸਾ ਬਣਾਉਣ ਲਈ, AI ਸਿਸਟਮ ਸਾਧਾਰਣ ਅਤੇ ਅਣਪੇਖੇ ਹਾਲਤਾਂ ਵਿੱਚ ਭਰੋਸੇਯੋਗ, ਸੁਰੱਖਿਅਤ ਅਤੇ ਲਗਾਤਾਰ ਹੋਣੇ ਚਾਹੀਦੇ ਹਨ। ਇਹ ਜਾਣਨਾ ਜਰੂਰੀ ਹੈ ਕਿ AI ਸਿਸਟਮ ਕਿਵੇਂ ਵੱਖ-ਵੱਖ ਸਥਿਤੀਆਂ ਵਿੱਚ ਵਰਤੋਂ ਕਰਨਗੇ, ਖ਼ਾਸ ਕਰ ਕੇ ਜਦ ਉਹ ਅਸਾਧਾਰਣ ਪੜਦੇ ਹਨ। AI ਹੱਲ ਬਣਾਉਂਦੇ ਸਮੇਂ, ਇਹ ਬਹੁਤ ਜਰੂਰੀ ਹੈ ਕਿ ਸਾਰੇ ਸੰਭਾਵਿਤ ਹਾਲਾਤਾਂ ਦੀ ਸੰਭਾਲ ਕਿਵੇਂ ਕਰਨੀ ਹੈ, ਜਿਸ ਨਾਲ AI ਹੋਰ ਸਵਾਲਾਂ ਦਾ ਸਾਹਮਣਾ ਕਰ ਸਕਦਾ ਹੈ। ਉਦਾਹਰਣ ਲਈ, ਇੱਕ ਸਵੈ-ਚਲਿਤ ਕਾਰ ਦੀ ਸਭ ਤੋਂ ਵੱਡੀ ਤਰਜੀਹ ਲੋਕਾਂ ਦੀ ਸੁਰੱਖਿਆ ਹੁੰਦੀ ਹੈ। ਇਸ ਲਈ, ਕਾਰ ਨੂੰ ਚਲਾਉਣ ਲਈ AI ਨੂੰ ਉਹ ਸਾਰੇ ਸੰਭਾਵਿਤ ਸਥਿਤੀਆਂ ਦਾ ਧਿਆਨ ਰੱਖਣਾ ਪੈਂਦਾ ਹੈ ਜਿਵੇਂ ਕਿ ਰਾਤ, ਤੂਫਾਨ, ਬਰਫ਼ਦਾਰ ਹਵਾ, ਬੱਚੇ ਸੜਕ ਪਾਰ ਕਰਦੇ ਹੋਏ, ਪਾਲਤੂ ਜਾਨਵਰ, ਸੜਕ ਦੀ ਮਰੰਮਤ ਆਦਿ। ਇੱਕ AI ਸਿਸਟਮ ਕਿਵੇਂ ਇਸ ਤਰ੍ਹਾਂ ਦੀਆਂ ਸਥਿਤੀਆਂ ਨੂੰ ਵਿਸ਼ਵਾਸਯੋਗ ਅਤੇ ਸੁਰੱਖਿਅਤ ਤਰੀਕੇ ਨਾਲ ਮੈਨੇਜ ਕਰਦਾ ਹੈ, ਇਹ ਸਿਫ਼ਤ ਦਾ ਪੱਧਰ ਦਰਸਾਉਂਦਾ ਹੈ ਜੋ ਡੇਟਾ ਵਿਗਿਆਨੀ ਜਾਂ AI ਵਿਕਾਸਕਰਤਾ ਨੇ ਡਿਜ਼ਾਈਨ ਜਾਂ ਟੈਸਟ ਦੇ ਦੌਰਾਨ ਵਿਚਾਰ ਕੀਤੇ ਹਨ।
+
+> [🎥 ਏਥੇ ਕਲਿੱਕ ਕਰੋ ਇੱਕ ਵੀਡੀਓ ਲਈ: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
-> [🎥 ਇੱਥੇ ਕਲਿਕ ਕਰੋ ਵਿਡੀਓ ਲਈ: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl)
+### ਸ਼ਾਮਿਲਤਾ
-### ਸ਼ਾਮਲਤਾ
+AI ਸਿਸਟਮ ਇਸ ਤਰ੍ਹਾਂ ਡਿਜ਼ਾਈਨ ਕਰਨੇ ਚਾਹੀਦੇ ਹਨ ਕਿ ਸਾਰੇ ਲੋਕ ਸ਼ਾਮਿਲ ਹੋਣ ਅਤੇ ਸ਼ਕਤੀਸ਼ਾਲੀ ਬਣਾਉਣ। ਜਦ AI ਸਿਸਟਮਾਂ ਦਾ ਡਿਜ਼ਾਈਨ ਅਤੇ ਅਮਲ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਡੇਟਾ ਵਿਗਿਆਨੀ ਅਤੇ AI ਵਿਕਾਸਕਰਤਾ ਉਨ੍ਹਾਂ ਅੜਚਣਾਂ ਦੀ ਪਹਚਾਣ ਕਰਦੇ ਹਨ ਅਤੇ ਹੱਲ ਕਰਦੇ ਹਨ ਜੋ ਬਿਨਾਂ ਇੱਛਤ ਲੋਕਾਂ ਨੂੰ ਬਾਹਰ ਰੱਖ ਸਕਦੀਆਂ ਹਨ। ਉਦਾਹਰਣ ਵਜੋਂ, ਦੁਨੀਆ ਭਰ ਵਿੱਚ 1 ਬਿਲੀਅਨ ਲੋਕ ਅਪੰਗਤਾ ਵਾਲੇ ਹਨ। AI ਦੇ ਵਿਕਾਸ ਨਾਲ ਉਹ ਹਰ ਰੋਜ਼ ਦੇ ਜੀਵਨ ਵਿੱਚ ਬਹੁਤ ਸਾਰੀ ਜਾਣਕਾਰੀ ਅਤੇ ਮੁਲਾਂਕਣਾਂ ਤੱਕ ਆਸਾਨੀ ਨਾਲ ਪਹੁੰਚ ਸਕਦੇ ਹਨ। ਅੜਚਣਾਂ ਦਾ ਹੱਲ ਕਰਕੇ, ਇਹ ਸਭ ਲਈ ਬਿਹਤਰ ਅਨੁਭਵ ਵਾਲੇ AI ਉਤਪਾਦ ਵਿਕਸਿਤ ਕਰਨ ਦੇ ਮੌਕੇ ਬਣਾਉਂਦਾ ਹੈ।
-AI ਸਿਸਟਮਾਂ ਨੂੰ ਹਰ ਕਿਸੇ ਨੂੰ ਸ਼ਾਮਲ ਕਰਨ ਅਤੇ ਸਸ਼ਕਤ ਬਣਾਉਣ ਲਈ ਡਿਜ਼ਾਈਨ ਕੀਤਾ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਜਦੋਂ AI ਸਿਸਟਮਾਂ ਨੂੰ ਡਿਜ਼ਾਈਨ ਅਤੇ ਲਾਗੂ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ, ਡਾਟਾ ਸਾਇੰਟਿਸਟ ਅਤੇ AI ਡਿਵੈਲਪਰ ਸਿਸਟਮ ਵਿੱਚ ਸੰਭਾਵਿਤ ਰੁਕਾਵਟਾਂ ਦੀ ਪਛਾਣ ਕਰਦੇ ਹਨ ਅਤੇ ਪਤਾ ਲਗਾਉਂਦੇ ਹਨ ਜੋ ਅਣਜਾਣੇ ਵਿੱਚ ਲੋਕਾਂ ਨੂੰ ਬਾਹਰ ਰੱਖ ਸਕਦੇ ਹਨ। ਉਦਾਹਰਣ ਲਈ, ਦੁਨੀਆ ਭਰ ਵਿੱਚ 1 ਬਿਲੀਅਨ ਲੋਕ ਅਪੰਗਤਾ ਨਾਲ ਜੀਵਨ ਬਿਤਾਉਂਦੇ ਹਨ। AI ਦੇ ਵਿਕਾਸ ਨਾਲ, ਉਹ ਆਪਣੇ ਰੋਜ਼ਾਨਾ ਜੀਵਨ ਵਿੱਚ ਵੱਖ-ਵੱਖ ਜਾਣਕਾਰੀ ਅਤੇ ਮੌਕਿਆਂ ਤੱਕ ਆਸਾਨੀ ਨਾਲ ਪਹੁੰਚ ਕਰ ਸਕਦੇ ਹਨ। ਰੁਕਾਵਟਾਂ ਨੂੰ ਦੂਰ ਕਰਕੇ, ਇਹ ਨਵੀਨਤਾ ਅਤੇ AI ਉਤਪਾਦਾਂ ਨੂੰ ਬਿਹਤਰ ਅਨੁਭਵਾਂ ਨਾਲ ਵਿਕਸਿਤ ਕਰਨ ਦੇ ਮੌਕੇ ਪੈਦਾ ਕਰਦਾ ਹੈ ਜੋ ਹਰ ਕਿਸੇ ਨੂੰ ਲਾਭ ਪਹੁੰਚਾਉਂਦੇ ਹਨ।
+> [🎥 ਏਥੇ ਕਲਿੱਕ ਕਰੋ ਇੱਕ ਵੀਡੀਓ ਲਈ: AI ਵਿੱਚ ਸ਼ਾਮਿਲਤਾ](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
-> [🎥 ਇੱਥੇ ਕਲਿਕ ਕਰੋ ਵਿਡੀਓ ਲਈ: AI ਵਿੱਚ ਸ਼ਾਮਲਤਾ](https://www.microsoft.com/videoplayer/embed/RE4vl9v)
+### ਸੁਰੱਖਿਆ ਅਤੇ ਗੋਪਨੀਯਤਾ
-### ਸੁਰੱਖਿਆ ਅਤੇ ਗੋਪਨੀਯਤਾ
+AI ਸਿਸਟਮ ਸੁਰੱਖਿਅਤ ਹੋਣ ਅਤੇ ਲੋਕਾਂ ਦੀ ਗੋਪਨੀਯਤਾ ਦਾ ਸਤਿਕਾਰ ਕਰਨੇ ਚਾਹੀਦੇ ਹਨ। ਲੋਕ ਉਹਨਾਂ ਸਿਸਟਮਾਂ ਤੇ ਘੱਟ ਭਰੋਸਾ ਕਰਦੇ ਹਨ ਜੋ ਉਨ੍ਹਾਂ ਦੀ ਗੋਪਨੀਯਤਾ, ਜਾਣਕਾਰੀ, ਜਾਂ ਜਿੰਦਗੀ ਨੂੰ ਖ਼ਤਰੇ ਵਿੱਚ ਪਾਉਂਦੇ ਹਨ। ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਮਾਡਲ ਟਰੇਨ ਕਰਦੇ ਸਮੇਂ, ਅਸੀਂ ਵਧੀਆ ਨਤੀਜੇ ਲੈਣ ਲਈ ਡੇਟਾ ਦੀ ਭਰੋਸਾ ਕਰਦੇ ਹਾਂ। ਇਸ ਕਾਰਜ ਵਿੱਚ, ਡੇਟਾ ਦਾ ਮੂਲ ਅਤੇ ਇਮਾਨਦਾਰੀ ਧਿਆਨ ਵਿੱਚ ਰੱਖਣੀਆਂ ਚਾਹੀਦੀਆਂ ਹਨ। ਉਦਾਹਰਣ ਲਈ, ਕੀ ਡੇਟਾ ਯੂਜ਼ਰ ਨੇ ਦਿੱਤਾ ਸੀ ਜਾਂ ਸਭ ਲੋਕਾਂ ਲਈ ਉਪਲਬਧ ਸੀ? ਅਗਲੇ, ਡੇਟਾ ਨਾਲ ਕੰਮ ਕਰਦੇ ਹੋਏ, AI ਸਿਸਟਮਾਂ ਨੂੰ ਰਾਜ਼ਦਾਰ ਜਾਣਕਾਰੀ ਦੀ ਰੱਖਿਆ ਅਤੇ ਹਮਲਿਆਂ ਤੋਂ ਬਚਾਅ ਕਰਨ ਨੂੰ ਵਿਕਸਤ ਕਰਨਾ ਜ਼ਰੂਰੀ ਹੈ। ਜਿਵੇਂ-ਜਿਵੇਂ AI ਵਿਆਪਕ ਹੁੰਦਾ ਜਾ ਰਿਹਾ ਹੈ, ਗੋਪਨੀਯਤਾ ਦੀ ਸੁਰੱਖਿਆ ਅਤੇ ਨਿੱਜੀ ਜਾਂ ਕਾਰੋਬਾਰੀ ਜਾਣਕਾਰੀ ਦੀ ਸੁਰੱਖਿਆ ਬਹੁਤ ਮਹੱਤਵਪੂਰਨ ਅਤੇ ਜਟਿਲ ਹੁੰਦੀ ਜਾ ਰਹੀ ਹੈ। AI ਲਈ ਗੋਪਨੀਯਤਾ ਅਤੇ ਡੇਟਾ ਸੁਰੱਖਿਆ ਮੁੱਦੇ ਖਾਸ ਧਿਆਨ ਦੀ ਮੰਗ ਕਰਦੇ ਹਨ ਕਿਉਂਕਿ ਡੇਟਾ ਤੱਕ ਪਹੁੰਚ AI ਸਿਸਟਮਾਂ ਲਈ ਅੰਦਾਜ਼ੇ ਅਤੇ ਫੈਸਲੇ ਕਰਨ ਲਈ ਅਸਲ ਅਤੇ ਜਾਣਕਾਰੀ ਵਾਲੇ ਬਣਾਉਂਦੇ ਹਨ।
-AI ਸਿਸਟਮਾਂ ਨੂੰ ਸੁਰੱਖਿਅਤ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ ਅਤੇ ਲੋਕਾਂ ਦੀ ਗੋਪਨੀਯਤਾ ਦਾ ਆਦਰ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ। ਲੋਕ ਉਹਨਾਂ ਸਿਸਟਮਾਂ 'ਤੇ ਘੱਟ ਭਰੋਸਾ ਕਰਦੇ ਹਨ ਜੋ ਉਨ੍ਹਾਂ ਦੀ ਗੋਪਨੀਯਤਾ, ਜਾਣਕਾਰੀ ਜਾਂ ਜੀਵਨ ਨੂੰ ਖਤਰੇ ਵਿੱਚ ਪਾਉਂਦੇ ਹਨ। ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਮਾਡਲਾਂ ਨੂੰ ਸਿਖਾਉਣ ਸਮੇਂ, ਅਸੀਂ ਸਭ ਤੋਂ ਵਧੀਆ ਨਤੀਜੇ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਡਾਟਾ 'ਤੇ ਨਿਰਭਰ ਕਰਦੇ ਹਾਂ। ਇਸ ਦੌਰਾਨ, ਡਾਟਾ ਦੀ ਮੂਲ ਸਥਿਤੀ ਅਤੇ ਅਖੰਡਤਾ ਨੂੰ ਧਿਆਨ ਵਿੱਚ ਰੱਖਣਾ ਜ਼ਰੂਰੀ ਹੈ। ਉਦਾਹਰਣ ਲਈ, ਕੀ ਡਾਟਾ ਉਪਭੋਗਤਾ ਦੁਆਰਾ ਸਪੁਰਦ ਕੀਤਾ ਗਿਆ ਸੀ ਜਾਂ ਜਨਤਕ ਤੌਰ 'ਤੇ ਉਪਲਬਧ ਸੀ? ਅਗਲੇ ਕਦਮ ਵਿੱਚ, ਡਾਟਾ ਨਾਲ ਕੰਮ ਕਰਦੇ ਸਮੇਂ, ਇਹ ਜ਼ਰੂਰੀ ਹੈ ਕਿ AI ਸਿਸਟਮਾਂ ਨੂੰ ਵਿਕਸਿਤ ਕੀਤਾ ਜਾਵੇ ਜੋ ਗੁਪਤ ਜਾਣਕਾਰੀ ਦੀ ਰੱਖਿਆ ਕਰ ਸਕਦੇ ਹਨ ਅਤੇ ਹਮਲਿਆਂ ਦਾ ਵਿਰੋਧ ਕਰ ਸਕਦੇ ਹਨ। ਜਿਵੇਂ ਕਿ AI ਵਧ ਰਿਹਾ ਹੈ, ਗੋਪਨੀਯਤਾ ਦੀ ਰੱਖਿਆ ਅਤੇ ਮਹੱਤਵਪੂਰਨ ਨਿੱਜੀ ਅਤੇ ਕਾਰੋਬਾਰੀ ਜਾਣਕਾਰੀ ਦੀ ਸੁਰੱਖਿਆ ਕਰਨਾ ਹੋਰ ਜ਼ਰੂਰੀ ਅਤੇ ਜਟਿਲ ਬਣ ਰਿਹਾ ਹੈ। AI ਲਈ ਗੋਪਨੀਯਤਾ ਅਤੇ ਡਾਟਾ ਸੁਰੱਖਿਆ ਦੇ ਮੁੱਦਿਆਂ ਨੂੰ ਖਾਸ ਧਿਆਨ ਦੀ ਲੋੜ ਹੈ ਕਿਉਂਕਿ ਡਾਟਾ ਤੱਕ ਪਹੁੰਚ AI ਸਿਸਟਮਾਂ ਨੂੰ ਲੋਕਾਂ ਬਾਰੇ ਸਹੀ ਅਤੇ ਜਾਣਕਾਰੀ ਵਾਲੇ ਅਨੁਮਾਨ ਅਤੇ ਫੈਸਲੇ ਕਰਨ ਲਈ ਜ਼ਰੂਰੀ ਹੈ।
+> [🎥 ਏਥੇ ਕਲਿੱਕ ਕਰੋ ਇੱਕ ਵੀਡੀਓ ਲਈ: AI ਵਿੱਚ ਸੁਰੱਖਿਆ](https://www.microsoft.com/videoplayer/embed/RE4voJF)
-> [🎥 ਇੱਥੇ ਕਲਿਕ ਕਰੋ ਵਿਡੀਓ ਲਈ: AI ਵਿੱਚ ਸੁਰੱਖਿਆ](https://www.microsoft.com/videoplayer/embed/RE4voJF)
+- ਇੰਡਸਟਰੀ ਵਜੋਂ ਅਸੀਂ ਗੋਪਨੀਯਤਾ ਅਤੇ ਸੁਰੱਖਿਆ ਵਿੱਚ ਮਹੱਤਵਪੂਰਨ ਤਰੱਕੀ ਕੀਤੀ ਹੈ, ਜਿਸਦਾ ਮੁੱਖ ਪ੍ਰੇਰਕ GDPR (ਸਧਾਰਨ ਡੇਟਾ ਸੁਰੱਖਿਆ ਨਿਯਮ) ਵਰਗੇ ਨਿਯਮ ਹਨ।
+- ਫਿਰ ਵੀ AI ਸਿਸਟਮਾਂ ਨਾਲ ਸਾਨੂੰ ਇੱਕ ਤਣਾਅ ਸਵੀਕਾਰਣਾ ਪੈਂਦਾ ਹੈ ਜੋ ਵੱਧ ਨਿੱਜੀ ਡੇਟਾ ਦੀ ਲੋੜ ਅਤੇ ਗੋਪਨੀਯਤਾ ਦਰਮਿਆਨ ਹੈ।
+- ਜਿਵੇਂ ਇੰਟਰਨੈੱਟ ਨਾਲ ਕੰਪਿਊਟਰਾਂ ਦੇ ਜਨਮ ਦੇ ਸਮੇਂ, ਹੁਣ ਅਸੀਂ AI ਨਾਲ ਸਬੰਧਤ ਸੁਰੱਖਿਆ ਮੁੱਦਿਆਂ ਵਿੱਚ ਵੱਡੀ ਵਾਧਾ ਦੇਖ ਰਹੇ ਹਾਂ।
+- ਉਸੇ ਸਮੇਂ, ਅਸੀਂ AI ਨੂੰ ਸੁਰੱਖਿਆ ਵਿੱਚ ਸੁਧਾਰ ਕਰਨ ਲਈ ਵੀ ਵਰਤਦੇ ਦੇਖਦੇ ਹਾਂ। ਉਦਾਹਰਣ ਲਈ, ਆਧੁਨਿਕ ਵਾਇਰਸ ਸਕੈਨਰ ਆਜ ਕਈ AI ਹੀਯੂਰਿਸਟਿਕਸ ਨਾਲ ਚੱਲਦੇ ਹਨ।
+- ਸਾਨੂੰ ਯਕੀਨੀ ਬਣਾਉਣਾ ਪਵੇਗਾ ਕਿ ਸਾਡੀਆਂ ਡੇਟਾ ਸਾਇੰਸ prakiriyā'an ਨਵੀਨਤਮ ਗੋਪਨੀਯਤਾ ਅਤੇ ਸੁਰੱਖਿਆ ਅਮਲਾਂ ਨਾਲ ਸੁੰਦਰਤਾ ਨਾਲ ਮਿਲ ਰਹੀਆਂ ਹਨ।
-- ਉਦਯੋਗ ਵਜੋਂ, ਅਸੀਂ ਗੋਪਨੀਯਤਾ ਅਤੇ ਸੁਰੱਖਿਆ ਵਿੱਚ ਮਹੱਤਵਪੂਰਨ ਤਰੱਕੀ ਕੀਤੀ ਹੈ, ਜੋ ਮੁੱਖ ਤੌਰ 'ਤੇ 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's Approach to Responsible AI")
+
+> 🎥 ਉੱਪਰ ਦਿੱਤੀ ਚਿੱਤਰ ਤੇ ਕਲਿੱਕ ਕਰੋ ਇੱਕ ਵੀਡੀਓ ਲਈ: ਚਿਹਰਾ ਪਛਾਣ ਰਾਹੀਂ ਜਨਤਕ ਨਿਗਰਾਨੀ ਦੀਆਂ ਚੇਤਾਵਨੀਆਂ
+
+ਆਖਰੀ ਤੌਰ 'ਤੇ, ਸਾਡੇ ਜਮਾਨੇ ਲਈ ਸਭ ਤੋਂ ਵੱਡਾ ਸਵਾਲ ਇੱਕ ਹੈ, ਕਿਵੇਂ ਯਕੀਨੀ ਬਣਾਈਏ ਕਿ ਕੰਪਿਊਟਰ ਲੋਕਾਂ ਲਈ ਜਵਾਬਦੇਹ ਰਹਿਣਗੇ ਅਤੇ ਜੋ ਉਹਨਾਂ ਕੰਪਿਊਟਰਾਂ ਨੂੰ ਡਿਜ਼ਾਈਨ ਕਰਦੇ ਹਨ, ਉਹ ਹਰ ਕਿਸੇ ਲਈ ਜਵਾਬਦੇਹ ਰਹਿਣਗੇ।
+
+## ਪ੍ਰਭਾਵ ਮੁਲਾਂਕਣ
+
+ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਮਾਡਲ ਟ੍ਰੇਨ ਕਰਨ ਤੋ ਪਹਿਲਾਂ, ਪ੍ਰਭਾਵ ਮੁਲਾਂਕਣ ਕਰਨਾ ਜ਼ਰੂਰੀ ਹੈ ਤਾਂ ਜੋ ਇਹ ਸਮਝਿਆ ਜਾਵੇ ਕਿ AI ਸਿਸਟਮ ਦਾ ਮਕਸਦ ਕੀ ਹੈ; ਇਸਦਾ ਇਛਿਤ ਉਪਯੋਗ ਕੀ ਹੈ; ਕਿੱਥੇ ਇਸਨੂੰ ਤਾਇਨਾਤ ਕੀਤਾ ਜਾਵੇਗਾ; ਅਤੇ ਕੌਣ ਇਸ ਸਿਸਟਮ ਨਾਲ ਸੰਪਰਕ ਕਰੇਗਾ। ਇਹ ਸੰਪਾਲਕਾਂ ਜਾਂ ਟੈਸਟ ਕਰਨ ਵਾਲਿਆਂ ਲਈ ਮਦਦਗਾਰ ਹੁੰਦਾ ਹੈ ਜੋ ਸਿਸਟਮ ਦਾ ਮੁਲਾਂਕਣ ਕਰਦੇ ਹਨ ਤਾਂ ਜੋ ਉਹ ਸੰਭਾਵਿਤ ਜੋਖਿਮ ਤੇ ਅਸਰਾਂ ਨੂੰ ਸਮਝ ਸਕਣ।
+
+ਪ੍ਰਭਾਵ ਮੁਲਾਂਕਣ ਦੌਰਾਨ ਧਿਆਨ ਕੇਂਦਰਿਤ ਕਰਨ ਵਾਲੀਆਂ ਚੀਜ਼ਾਂ:
+
+* **ਵਿਅਕਤੀਆਂ 'ਤੇ ਨਕਾਰਾਤਮਕ ਅਸਰ**। ਕਿਸੇ ਪਾਬੰਦੀ ਜਾਂ ਲੋੜਾਂ, ਅਣਸਮਰਥਿਤ ਉਪਯੋਗ ਜਾਂ ਕਿਸੇ ਵੀ ਜਾਣੀ-ਪਛਾਣੀ ਸੀਮਾਵਾਂ ਨੂੰ ਜਾਣਣਾ ਜਰੂਰੀ ਹੈ ਜੋ ਸਿਸਟਮ ਦੀ ਕਾਰਗੁਜ਼ਾਰੀ ਵਿਚ ਰੁਕਾਵਟ ਪਾ ਸਕਦੀਆਂ ਹਨ ਤਾਂ ਜੋ ਇਹ ਯਕੀਨੀ ਬਣਾਇਆ ਜਾਵੇ ਕਿ ਸਿਸਟਮ ਅਜਿਹੇ ਤਰੀਕੇ ਨਾਲ ਵਰਤਿਆ ਨਾ ਜਾਵੇ ਜੋ ਲੋਕਾਂ ਨੂੰ ਨੁਕਸਾਨ ਪਹੁੰਚਾਵੇ।
+* **ਡੇਟਾ ਲੋੜਾਂ**। ਇਹ ਸਮਝਣਾ ਕਿ ਸਿਸਟਮ ਡੇਟਾ ਨੂੰ ਕਿਵੇਂ ਅਤੇ ਕਿੱਥੇ ਵਰਤੇਗਾ, ਸਮੀਖਿਅਕਾਂ ਲਈ ਵਧੀਆ ਹੁੰਦਾ ਹੈ ਤਾਂ ਜੋ ਉਹ ਕਿਸੇ ਵੀ ਡੇਟਾ ਦੀ ਲੋੜਾਂ ਜਾਂ ਪਾਬੰਦੀਆਂ (ਜਿਵੇਂ GDPR ਜਾਂ HIPAA ਨਿਯਮ) ਦਾ ਧਿਆਨ ਰੱਖ ਸਕਣ। ਇਸਦੇ ਨਾਲ-ਨਾਲ ਇਹ ਦੇਖਣੀ ਵੀ ਜ਼ਰੂਰੀ ਹੈ ਕਿ ਡੇਟਾ ਦਾ ਮੂਲ ਜਾਂ ਮਾਤਰਾ ਟਰੇਨਿੰਗ ਲਈ ਪਰਯਾਪਤ ਹੈ ਜਾਂ ਨਹੀਂ।
+* **ਪ੍ਰਭਾਵ ਦਾ ਸੰਖੇਪ**। ਸਿਸਟਮ ਦੀ ਵਰਤੋਂ ਨਾਲ ਉੱਭਰ ਸਕਦੀਆਂ ਸੰਭਾਵਿਤ ਨੁਕਸਾਨਾਂ ਦੀ ਸੂਚੀ ਇਕੱਠੀ ਕਰੋ। ਪੂਰੇ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਜੀਵਨਚੱਕਰ ਵਿੱਚ, ਮੁਲਾਂਕਣ ਕਰੋ ਕਿ ਪਛਾਣੀਆਂ ਸਮੱਸਿਆਵਾਂ ਦੂਰ ਕੀਤੀਆਂ ਜਾਂ ਹੱਲ ਕੀਤੀਆਂ ਗਈਆਂ ਹਨ ਜਾਂ ਨਹੀਂ।
+* **ਲਾਗੂ ਉਦਦੇਸ਼** ਛੇ ਮੁੱਖ ਸਿਧਾਂਤਾਂ ਲਈ। ਜਾਂਚੋ ਕਿ ਹਰ ਸਿਧਾਂਤ ਦੇ ਉਦੇਸ਼ ਪੂਰੇ ਹੋ ਰਹੇ ਹਨ ਜਾਂ ਕੋਈ ਖਾਚਾਂ ਹਨ।
+
+
+## ਜ਼ਿੰਮੇਵਾਰ AI ਨਾਲ ਡਿਬੱਗਿੰਗ
+
+ਜਿਵੇਂ ਕਿਸੇ ਸਾਫਟਵੇਅਰ ਏਪਲੀਕੇਸ਼ਨ ਦਾ ਡਿਬੱਗ ਕਰਨਾ, AI ਸਿਸਟਮ ਦਾ ਡਿਬੱਗ ਕਰਨਾ ਵੀ ਇਸਦੀ ਸਮੱਸਿਆ ਦੀ ਪਹਚਾਣ ਅਤੇ ਉਸਦਾ ਹੱਲ ਲੱਭਣ ਦੀ ਜਰੂਰੀ ਪ੍ਰਕਿਰਿਆ ਹੈ। ਕਈ ਕਾਰਕ ਹਨ ਜੋ ਮਾਡਲ ਨੂੰ ਉਮੀਦਾਂ ਮੁਤਾਬਕ ਜਾਂ ਜ਼ਿੰਮੇਵਾਰ ਤਰੀਕੇ ਨਾਲ ਕੰਮ ਨਹੀਂ ਕਰਨ ਦਿੰਦੇ। ਜ਼ਿਆਦਾਤਰ ਰਵਾਇਤੀ ਮਾਡਲ ਕਾਰਗੁਜ਼ਾਰੀ ਮੈਟਰਿਕਸ ਮਾਡਲ ਦੇ ਕਾਰਗੁਜ਼ਾਰੀ ਦੇ ਮਾਤਰਾਤਮਕ ਸੰਗ੍ਰਹਿਣ ਹਨ, ਜੋ ਕਿ ਜ਼ਿੰਮੇਵਾਰ AI ਸਿਧਾਂਤਾਂ ਦਾ ਉਲੰਘਣ ਕਿਵੇਂ ਹੁੰਦਾ ਹੈ, ਇਹ ਜਾਣਚ ਕਰਨ ਲਈ ਕਾਫੀ ਨਹੀਂ। ਇਸ ਤੋਂ ਇਲਾਵਾ, ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਮਾਡਲ ਕਾਲੀ ਡੱਬੀ ਹੁੰਦੀ ਹੈ ਜੋ ਇਹ ਸਮਝਣਾ ਮੁਸ਼ਕਿਲ ਕਰ ਦਿੰਦੀ ਹੈ ਕਿ ਕਿਸ ਚੀਜ਼ ਨੇ ਇਸਦਾ ਨਤੀਜਾ ਪ੍ਰਭਾਵਿਤ ਕੀਤਾ ਜਾਂ ਜਦੋਂ ਗਲਤੀ ਹੁੰਦੀ ਹੈ ਤਦ ਉਸਦੀ ਵਿਆਖਿਆ ਦੇਣੀ ਜਰੂਰੀ ਹੈ। ਇਸ ਕੋਰਸ ਵਿੱਚ ਅੱਗੇ ਅਸੀਂ ਸਿੱਖਾਂਗੇ ਕਿ ਕਿਵੇਂ Responsible AI ਡੈਸ਼ਬੋਰਡ ਦੀ ਵਰਤੋਂ ਕਰਕੇ AI ਸਿਸਟਮਾਂ ਨੂੰ ਡਿਬੱਗ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਇਹ ਡੈਸ਼ਬੋਰਡ ਡੇਟਾ ਵਿਗਿਆਨੀਆਂ ਅਤੇ AI ਡਿਵੈਲਪਰਾਂ ਲਈ ਇੱਕ ਸਮੱਗੜੀ ਟੂਲ ਹੈ ਜੋ ਵਿੱਚ ਵੱਖ-ਵੱਖ ਗਤਿਵਿਧੀਆਂ ਹੈ:
+
+* **ਗਲਤੀ ਵਿਸ਼ਲੇਸ਼ਣ**: ਮਾਡਲ ਦੀ ਗਲਤੀ ਵੰਡ ਦੀ ਪਛਾਣ ਕਰਨ ਲਈ ਜੋ ਸਿਸਟਮ ਦੀ ਨਿਆਂਪੂਰਕਤਾ ਜਾਂ ਭਰੋਸੇਯੋਗਤਾ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰ ਸਕਦੀ ਹੈ।
+* **ਮਾਡਲ ਸੰਖੇਪ**: ਵੇਖੋ ਕਿ ਕਿਹੜੇ ਡੇਟਾ ਕੋਹੋਰਟਸ ਵਿੱਚ ਮਾਡਲ ਦੀ ਕਾਰਗੁਜ਼ਾਰੀ ਵਿੱਚ ਅੰਤਰ ਹਨ।
+* **ਡੇਟਾ ਵਿਸ਼ਲੇਸ਼ਣ**: ਡੇਟਾ ਦੀ ਵੰਡ ਨੂੰ ਸਮਝਣ ਅਤੇ ਕਿਸੇ ਵੀ ਸੰਭਾਵਿਤ ਭੇਦਭਾਵ ਦੀ ਪਹਚਾਣ ਕਰਨ ਲਈ ਜੋ ਨਿਆਂ, ਸ਼ਾਮਿਲਤਾ ਅਤੇ ਭਰੋਸੇਯੋਗਤਾ ਮੁੱਦਿਆਂ ਵੱਲ ਲੈ ਕਰ ਜਾਂਦਾ ਹੈ।
+* **ਮਾਡਲ ਵਿਆਖਿਆਯੋਗਤਾ**: ਸਮਝੋ ਕਿ ਮਾਡਲ ਦੀਆਂ ਭਵਿੱਖਵਾਣੀਆਂ ਨੂੰ ਕੀ ਪ੍ਰਭਾਵਿਤ ਕਰਦਾ ਹੈ। ਇਹ ਮਾਡਲ ਦੇ ਵਰਤਾਵ ਦੀ ਵਿਆਖਿਆ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ ਜੋ ਪਾਰਦਰਸ਼ਤਾ ਅਤੇ ਜਵਾਬਦੇਹੀ ਲਈ ਮਹੱਤਵਪੂਰਨ ਹੈ।
+
+
+## 🚀 ਚੁਣੌਤੀ
+
+ਨੁਕਸਾਨ ਪੈਦਾ ਹੋਣ ਤੋਂ ਪਹਿਲਾਂ ਰੋਕਣ ਲਈ ਸਾਨੂੰ:
+
+- ਉਹਨਾਂ ਲੋਕਾਂ ਵਿੱਚ ਵੱਖ-ਵੱਖ ਪਿਛੋਕੜਾਂ ਅਤੇ ਨਜ਼ਰੀਏ ਹੋਣੇ ਚਾਹੀਦੇ ਹਨ ਜੋ ਸਿਸਟਮ 'ਤੇ ਕੰਮ ਕਰ ਰਹੇ ਹਨ
+- ਸਮਾਜ ਦੀ ਵੱਖ-ਵੱਖਤਾ ਨੂੰ ਦਰਸਾਉਣ ਵਾਲੇ ਡੇਟਾਸੈੱਟਾਂ ਵਿੱਚ ਨਿਵੇਸ਼ ਕਰੋ
+- ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਦੇ ਜੀਵਨਚੱਕਰ ਵਿੱਚ ਜ਼ਿੰਮੇਵਾਰ AI ਦੇ ਖ਼ਿਲਾਫ ਗ਼ਲਤੀ ਜਾਂ ਪੱਖਪਾਤ ਤੜਫਣ ਅਤੇ ਸਹੀ ਕਰਨ ਦੇ ਬਿਹਤਰ ਤਰੀਕੇ ਵਿਕਸਤ ਕਰੋ
+
+ਅਸਲ ਜ਼ਿੰਦਗੀ ਦੀਆਂ ਸਥਿਤੀਆਂ ਬਾਰੇ ਸੋਚੋ ਜਿੱਥੇ ਮਾਡਲ ਦੀ ਅਣਭਰੋਸਾ ਮਾਫ਼ ਹੋ ਰਹੀ ਹੈ ਮਾਡਲ ਬਣਾਉਣ ਅਤੇ ਵਰਤੋਂ ਵਿੱਚ। ਹੋਰ ਕੀ ਧਿਆਨ ਵਿੱਚ ਲੈਣਾ ਚਾਹੀਦਾ ਹੈ?
+
+## [ਪੋਸਟ-ਲੇਕਚਰ ਕੁਇਜ਼](https://ff-quizzes.netlify.app/en/ml/)
-AI ਸਿਸਟਮਾਂ ਨੂੰ ਸਮਝਣਯੋਗ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ। ਪਾਰਦਰਸ਼ਤਾ ਦਾ ਇੱਕ ਮਹੱਤਵਪੂਰਨ ਹਿੱਸਾ AI ਸਿਸਟਮਾਂ ਅਤੇ ਉਨ੍ਹਾਂ ਦੇ ਘਟਕਾਂ ਦੇ ਵਿਹਾਰ ਦੀ ਵਿਆਖਿਆ ਕਰਨਾ ਹੈ। AI ਸਿਸਟਮਾਂ ਦੀ ਸਮਝ ਵਿੱਚ ਸੁਧਾਰ ਕਰਨ ਲਈ, ਇਹ ਜ਼ਰੂਰੀ ਹੈ ਕਿ ਸਟੇਕਹੋਲਡਰ ਇਹ ਸਮਝਣ ਕਿ ਉਹ ਕਿਵੇਂ ਅਤੇ ਕਿਉਂ ਕੰਮ ਕਰਦੇ ਹਨ ਤਾਂ ਜੋ ਉਹ ਸੰਭਾਵਿਤ ਪ੍ਰਦਰਸ਼ਨ ਮੁੱਦਿਆਂ, ਸੁਰੱਖਿਆ ਅਤੇ ਗੋਪਨੀਯਤਾ ਦੀ
-ਇਸ ਵਰਕਸ਼ਾਪ ਨੂੰ ਦੇਖੋ ਤਾਂ ਜੋ ਵਿਸ਼ਿਆਂ ਵਿੱਚ ਹੋਰ ਡੂੰਘਾਈ ਨਾਲ ਜਾ ਸਕੋ:
+## ਸਮੀਖਿਆ ਅਤੇ ਸਵੈ-ਅਧਿਐਨ
+
-- ਜ਼ਿੰਮੇਵਾਰ AI ਦੀ ਖੋਜ ਵਿੱਚ: ਸਿਧਾਂਤਾਂ ਨੂੰ ਅਮਲ ਵਿੱਚ ਲਿਆਉਣਾ, ਬੇਸਮੀਰਾ ਨੂਸ਼ੀ, ਮਹਰਨੂਸ਼ ਸਮੇਕੀ ਅਤੇ ਅਮਿਤ ਸ਼ਰਮਾ ਦੁਆਰਾ
+ਇਸ ਪਾਠ ਵਿੱਚ, ਤੁਸੀਂ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਵਿੱਚ ਨਿਆਂ ਅਤੇ ਅਨਿਆਂ ਦੇ ਕੁਝ ਬੁਨਿਆਦੀ ਸਿਧਾਂਤ ਸਿੱਖੇ ਹਨ।
+
+ਇਸ ਵਰਕਸ਼ਾਪ ਨੂੰ ਦੇਖੋ ਤਾਂ ਜੋ ਵਿਸ਼ਿਆਂ ਵਿੱਚ ਹੋਰ ਗਹਿਰਾਈ ਨਾਲ ਜਾ ਸਕੋ:
-[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: ਜ਼ਿੰਮੇਵਾਰ AI ਬਣਾਉਣ ਲਈ ਇੱਕ ਖੁੱਲ੍ਹਾ-ਸਰੋਤ ਫਰੇਮਵਰਕ")
+- ਜ਼ਿੰਮੇਵਾਰ ਏਆਈ ਦੀ ਖੋਜ ਵਿੱਚ: ਪ੍ਰਿੰਸੀਪਲ ਨੂੰ ਅਮਲ ਵਿੱਚ ਲਿਆਉਣਾ ਬੈਸਮੀਰਾ ਨੁਸ਼ੀ, ਮੇਹਰਨੂਸ਼ ਸਾਮੇਕੀ ਅਤੇ ਅਮਿਤ ਸ਼ਰਮਾ ਵੱਲੋਂ
+[](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI")
-> 🎥 ਉਪਰ ਦਿੱਤੀ ਤਸਵੀਰ 'ਤੇ ਕਲਿੱਕ ਕਰੋ ਇੱਕ ਵੀਡੀਓ ਲਈ: RAI Toolbox: ਜ਼ਿੰਮੇਵਾਰ AI ਬਣਾਉਣ ਲਈ ਇੱਕ ਖੁੱਲ੍ਹਾ-ਸਰੋਤ ਫਰੇਮਵਰਕ, ਬੇਸਮੀਰਾ ਨੂਸ਼ੀ, ਮਹਰਨੂਸ਼ ਸਮੇਕੀ ਅਤੇ ਅਮਿਤ ਸ਼ਰਮਾ ਦੁਆਰਾ
+> 🎥 ਵੀਡੀਓ ਲਈ ਉੱਪਰ ਦਿੱਤੀ ਜਾ ਤਸਵੀਰ 'ਤੇ ਕਲਿਕ ਕਰੋ: ਜ਼ਿੰਮੇਵਾਰ ਏਆਈ ਟੂਲਬਾਕਸ: ਜ਼ਿੰਮੇਵਾਰ ਏਆਈ ਬਣਾਉਣ ਲਈ ਇੱਕ ਓਪਨ-ਸੋਰਸ ਫਰੇਮਵਰਕ ਬੈਸਮੀਰਾ ਨੁਸ਼ੀ, ਮੇਹਰਨੂਸ਼ ਸਾਮੇਕੀ, ਅਤੇ ਅਮਿਤ ਸ਼ਰਮਾ ਵੱਲੋਂ
-ਇਹ ਵੀ ਪੜ੍ਹੋ:
+ਇਸਦੇ ਅਲਾਵਾ, ਪੜ੍ਹੋ:
-- ਮਾਈਕਰੋਸਾਫਟ ਦਾ RAI ਰਿਸੋਰਸ ਸੈਂਟਰ: [ਜ਼ਿੰਮੇਵਾਰ AI ਰਿਸੋਰਸ – ਮਾਈਕਰੋਸਾਫਟ AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
+- ਮਾਈਕਰੋਸੋਫ਼ਟ ਦਾ RAI ਸਰੋਤ ਕੇਂਦਰ: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4)
-- ਮਾਈਕਰੋਸਾਫਟ ਦਾ FATE ਰਿਸਰਚ ਗਰੁੱਪ: [FATE: AI ਵਿੱਚ ਨਿਰਪੱਖਤਾ, ਜਵਾਬਦੇਹੀ, ਪਾਰਦਰਸ਼ਤਾ ਅਤੇ ਨੈਤਿਕਤਾ - ਮਾਈਕਰੋਸਾਫਟ ਰਿਸਰਚ](https://www.microsoft.com/research/theme/fate/)
+- ਮਾਈਕਰੋਸੋਫ਼ਟ ਦਾ FATE ਰਿਸਰਚ ਗਰੁੱਪ: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/)
-RAI Toolbox:
+RAI ਟੂਲਬਾਕਸ:
-- [ਜ਼ਿੰਮੇਵਾਰ AI Toolbox GitHub ਰਿਪੋਜ਼ਟਰੀ](https://github.com/microsoft/responsible-ai-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)
+[RAI Toolbox ਦਾ ਅਨੁਸੰਧਾਨ ਕਰੋ](assignment.md)
---
-**ਅਸਵੀਕਤੀ**:
-ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀਤਾ ਲਈ ਯਤਨਸ਼ੀਲ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਚੀਤਤਾਵਾਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਇਸਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ।
\ No newline at end of file
+
+**ਅਸਵੀਕਾਰੋਪਣ**:
+ਇਸ ਦਸਤਾਵੇਜ਼ ਦਾ ਅਨੁਵਾਦ ਏਆਈ ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀਤਾਵਾਂ ਲਈ ਯਤਨਸ਼ੀਲ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਰੱਖੋ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸਮੱਤਿਆਵਾਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਆਪਣੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਕ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਜਰੂਰੀ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫ਼ਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਅਸੀਂ ਇਸ ਅਨੁਵਾਦ ਦੇ ਉਪਯੋਗ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੀਆਂ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀਆਂ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆਵਾਂ ਲਈ ਜਵਾਬਦੇਹ ਨਹੀਂ ਹਾਂ।
+
\ No newline at end of file
diff --git a/translations/pa/2-Regression/1-Tools/README.md b/translations/pa/2-Regression/1-Tools/README.md
index 89fc9d16e..822975c2a 100644
--- a/translations/pa/2-Regression/1-Tools/README.md
+++ b/translations/pa/2-Regression/1-Tools/README.md
@@ -1,120 +1,121 @@
-# ਪਾਇਥਨ ਅਤੇ Scikit-learn ਨਾਲ ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲਾਂ ਦੀ ਸ਼ੁਰੂਆਤ ਕਰੋ
+# ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲਾਂ ਲਈ Python ਅਤੇ Scikit-learn ਨਾਲ ਸ਼ੁਰੂਆਤ ਕਰੋ
-
+
-> ਸਕੈਚਨੋਟ [Tomomi Imura](https://www.twitter.com/girlie_mac) ਦੁਆਰਾ
+> ਸਕੈਚਨੋਟ ਲੇਖਕ [Tomomi Imura](https://www.twitter.com/girlie_mac)
-## [ਪ੍ਰੀ-ਲੈਕਚਰ ਕਵਿਜ਼](https://ff-quizzes.netlify.app/en/ml/)
+## [ਪ੍ਰੀ-ਲੈਕਚਰ ਕ੍ਵਿਜ਼](https://ff-quizzes.netlify.app/en/ml/)
-> ### [ਇਹ ਪਾਠ R ਵਿੱਚ ਉਪਲਬਧ ਹੈ!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
+> ### [ਇਹ ਲੈਸਨ R ਵਿੱਚ ਉਪਲਬਧ ਹੈ!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html)
## ਪਰਿਚਯ
-ਇਨ੍ਹਾਂ ਚਾਰ ਪਾਠਾਂ ਵਿੱਚ, ਤੁਸੀਂ ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲ ਬਣਾਉਣ ਦੇ ਤਰੀਕੇ ਸਿੱਖੋਗੇ। ਅਸੀਂ ਜਲਦੀ ਹੀ ਇਸ ਬਾਰੇ ਚਰਚਾ ਕਰਾਂਗੇ ਕਿ ਇਹ ਕਿਉਂ ਵਰਤੇ ਜਾਂਦੇ ਹਨ। ਪਰ ਕੁਝ ਵੀ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ, ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਤੁਹਾਡੇ ਕੋਲ ਸਹੀ ਟੂਲਸ ਹਨ ਤਾਂ ਜੋ ਪ੍ਰਕਿਰਿਆ ਸ਼ੁਰੂ ਕੀਤੀ ਜਾ ਸਕੇ!
+ਇਨ੍ਹਾਂ ਚਾਰ ਪਾਠਾਂ ਵਿੱਚ, ਤੁਸੀਂ ਸਿੱਖੋਗੇ ਕਿ ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲ ਕਿਵੇਂ ਬਣਾਏ ਜਾਣ। ਅਸੀਂ ਜਲਦੀ ਹੀ ਇਹ ਸੰਝਾਓਂਗੇ ਕਿ ਇਹ ਕਿਉਂ ਵਰਤੀਦੇ ਹਨ। ਪਰ ਕੁਝ ਵੀ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ, ਇਹ ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਤੁਹਾਡੇ ਕੋਲ ਸਹੀ ਟੂਲਜ਼ ਮੌਜੂਦ ਹਨ ਜਿਨ੍ਹਾਂ ਨਾਲ ਤੁਸੀਂ ਇਸ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਸ਼ੁਰੂ ਕਰ ਸਕੋ!
-ਇਸ ਪਾਠ ਵਿੱਚ, ਤੁਸੀਂ ਸਿੱਖੋਗੇ ਕਿ:
+ਇਸ ਪਾਠ ਵਿੱਚ, ਤੁਸੀਂ ਸਿੱਖੋਗੇ ਕਿ ਕਿਵੇਂ:
-- ਆਪਣੀ ਕੰਪਿਊਟਰ ਨੂੰ ਸਥਾਨਕ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਕਾਰਜਾਂ ਲਈ ਕਨਫਿਗਰ ਕਰਨਾ।
-- Jupyter ਨੋਟਬੁੱਕਸ ਨਾਲ ਕੰਮ ਕਰਨਾ।
-- Scikit-learn ਵਰਤਣਾ, ਜਿਸ ਵਿੱਚ ਇੰਸਟਾਲੇਸ਼ਨ ਸ਼ਾਮਲ ਹੈ।
-- ਲੀਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਦੀ ਪੜਚੋਲ ਕਰਨਾ ਇੱਕ ਹੱਥ-ਅਭਿਆਸ ਦੇ ਨਾਲ।
+- ਆਪਣਾ ਕੰਪਿਊਟਰ ਸਥਾਨਕ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਕੰਮਾਂ ਲਈ ਸੰਰਚਿਤ ਕਰੋ।
+- Jupyter Notebooks ਨਾਲ ਕੰਮ ਕਰੋ।
+- Scikit-learn ਵਰਤੋਂ ਕਰੋ, ਜਿਸ ਵਿੱਚ ਇੰਸਟਾਲੇਸ਼ਨ ਵੀ ਸ਼ਾਮਲ ਹੈ।
+- ਇੱਕ ਪ੍ਰਯੋਗਸ਼ੀਲ ਕਸਰਤ ਨਾਲ ਲੀਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਦੀ ਪੜਚੋਲ ਕਰੋ।
-## ਇੰਸਟਾਲੇਸ਼ਨ ਅਤੇ ਕਨਫਿਗਰੇਸ਼ਨ
+## ਇੰਸਟਾਲੇਸ਼ਨ ਅਤੇ ਸੰਰਚਨਾਵਾਂ
-[](https://youtu.be/-DfeD2k2Kj0 "ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਮਾਡਲ ਬਣਾਉਣ ਲਈ ਆਪਣੇ ਟੂਲਸ ਸੈਟਅਪ ਕਰੋ")
+[](https://youtu.be/-DfeD2k2Kj0 "ਨਵੀਂ ਸਿੱਖਿਆ ਲਈ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਮਾਡਲ ਬਣਾਉਣ ਲਈ ਆਪਣੇ ਟੂਲਜ਼ ਤਿਆਰ ਕਰੋ")
-> 🎥 ਉਪਰੋਕਤ ਚਿੱਤਰ 'ਤੇ ਕਲਿਕ ਕਰੋ ਇੱਕ ਛੋਟੀ ਵੀਡੀਓ ਦੇਖਣ ਲਈ ਜੋ ਤੁਹਾਡੇ ਕੰਪਿਊਟਰ ਨੂੰ ML ਲਈ ਕਨਫਿਗਰ ਕਰਨ ਦੀ ਪ੍ਰਕਿਰਿਆ ਦਿਖਾਉਂਦੀ ਹੈ।
+> 🎥 ML ਲਈ ਕੰਪਿਊਟਰ ਸੰਰਚਿਤ ਕਰਨ ਬਾਰੇ ਛੋਟਾ ਵੀਡੀਓ ਦੇਖਣ ਲਈ ਉਪਰ ਦਿੱਤੀ ਤਸਵੀਰ 'ਤੇ ਕਲਿੱਕ ਕਰੋ।
-1. **ਪਾਇਥਨ ਇੰਸਟਾਲ ਕਰੋ**। ਯਕੀਨੀ ਬਣਾਓ ਕਿ [Python](https://www.python.org/downloads/) ਤੁਹਾਡੇ ਕੰਪਿਊਟਰ 'ਤੇ ਇੰਸਟਾਲ ਹੈ। ਤੁਸੀਂ ਪਾਇਥਨ ਨੂੰ ਕਈ ਡਾਟਾ ਸਾਇੰਸ ਅਤੇ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਕਾਰਜਾਂ ਲਈ ਵਰਤੋਂਗੇ। ਜ਼ਿਆਦਾਤਰ ਕੰਪਿਊਟਰ ਸਿਸਟਮਾਂ ਵਿੱਚ ਪਹਿਲਾਂ ਹੀ ਪਾਇਥਨ ਇੰਸਟਾਲ ਹੁੰਦਾ ਹੈ। ਕੁਝ ਉਪਯੋਗ [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) ਵੀ ਉਪਲਬਧ ਹਨ, ਜੋ ਕੁਝ ਉਪਭੋਗਤਾਵਾਂ ਲਈ ਸੈਟਅਪ ਨੂੰ ਆਸਾਨ ਬਣਾਉਂਦੇ ਹਨ।
+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) ਵੀ ਹਨ।
- ਹਾਲਾਂਕਿ, ਪਾਇਥਨ ਦੇ ਕੁਝ ਉਪਯੋਗਤਾਵਾਂ ਨੂੰ ਸੌਫਟਵੇਅਰ ਦੇ ਇੱਕ ਵਰਜਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਜਦਕਿ ਹੋਰਾਂ ਨੂੰ ਵੱਖਰੇ ਵਰਜਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। ਇਸ ਕਾਰਨ, ਇੱਕ [ਵਰਚੁਅਲ ਵਾਤਾਵਰਣ](https://docs.python.org/3/library/venv.html) ਵਿੱਚ ਕੰਮ ਕਰਨਾ ਲਾਭਦਾਇਕ ਹੁੰਦਾ ਹੈ।
+ ਪਰ ਕੁਝ ਵਰਤੋਂ ਲਈ Python ਦੇ ਇੱਕ ਵਰਜਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਜਦਕਿ ਦੂਜੇ ਲਈ ਵੱਖਰਾ ਵਰਜਨ। ਇਸ ਲਈ ਇੱਕ [ਵਰਚੁਅਲ ਇੰਵਾਇਰਨਮੈਂਟ](https://docs.python.org/3/library/venv.html) ਵਿੱਚ ਕੰਮ ਕਰਨਾ ਫਾਇਦੇਮੰਦ ਹੁੰਦਾ ਹੈ।
-2. **Visual Studio Code ਇੰਸਟਾਲ ਕਰੋ**। ਯਕੀਨੀ ਬਣਾਓ ਕਿ Visual Studio Code ਤੁਹਾਡੇ ਕੰਪਿਊਟਰ 'ਤੇ ਇੰਸਟਾਲ ਹੈ। [Visual Studio Code](https://code.visualstudio.com/) ਨੂੰ ਬੇਸਿਕ ਇੰਸਟਾਲੇਸ਼ਨ ਲਈ ਇੰਸਟਾਲ ਕਰਨ ਦੇ ਨਿਰਦੇਸ਼ਾਂ ਦੀ ਪਾਲਣਾ ਕਰੋ। ਤੁਸੀਂ ਇਸ ਕੋਰਸ ਵਿੱਚ Visual Studio Code ਵਿੱਚ ਪਾਇਥਨ ਵਰਤੋਂਗੇ, ਇਸ ਲਈ ਤੁਸੀਂ [Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) ਨੂੰ ਪਾਇਥਨ ਵਿਕਾਸ ਲਈ ਕਨਫਿਗਰ ਕਰਨ ਦੇ ਤਰੀਕੇ 'ਤੇ ਧਿਆਨ ਦੇ ਸਕਦੇ ਹੋ।
+2. **Visual Studio Code ਇੰਸਟਾਲ ਕਰੋ**। ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਤੁਹਾਡੇ ਕੰਪਿਊਟਰ 'ਤੇ Visual Studio Code ਇੰਸਟਾਲ ਹੈ। ਮੁੱਢਲਾ ਇੰਸਟਾਲੇਸ਼ਨ ਕਰਨ ਲਈ ਇਹਹ ਨਿਰਦੇਸ਼ਾਂ ਦੀ ਪਾਲਣਾ ਕਰੋ [Visual Studio Code ਇੰਸਟਾਲ ਕਰੋ](https://code.visualstudio.com/)। ਇਸ ਕੋਰਸ ਵਿੱਚ ਤੁਸੀਂ Visual Studio Code ਵਿੱਚ Python ਵਰਤੋਂਗੇ, ਇਸ ਲਈ ਤੁਸੀਂ ਜਾ ਕੇ [Visual Studio Code ਦੀ ਸੰਰਚਨਾ](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) ਬਾਰੇ ਜਾਣ-ਪਛਾਣ ਕਰ ਸਕਦੇ ਹੋ।
- > ਪਾਇਥਨ ਨਾਲ ਆਰਾਮਦਾਇਕ ਹੋ ਜਾਓ ਇਸ ਸੰਗ੍ਰਹਿ ਦੇ ਨਾਲ ਕੰਮ ਕਰਕੇ [Learn modules](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)
+ > ਇਸ [Learn modules](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) ਦੇ ਜਮਾ ਕੀਤੇ ਸੰਗ੍ਰਹਿ ਦੁਆਰਾ Python ਨਾਲ ਪੱਕੀ ਪਹਿਚਾਣ ਬਣਾਓ।
>
- > [](https://youtu.be/yyQM70vi7V8 "Visual Studio Code ਨਾਲ ਪਾਇਥਨ ਸੈਟਅਪ ਕਰੋ")
+ > [](https://youtu.be/yyQM70vi7V8 "Visual Studio Code ਨਾਲ Python ਸੈਟਅਪ ਕਰੋ")
>
- > 🎥 ਉਪਰੋਕਤ ਚਿੱਤਰ 'ਤੇ ਕਲਿਕ ਕਰੋ ਇੱਕ ਵੀਡੀਓ ਦੇਖਣ ਲਈ: VS Code ਵਿੱਚ ਪਾਇਥਨ ਵਰਤਣਾ।
+ > 🎥 ਉਪਰ ਦਿੱਤੀ ਤਸਵੀਰ 'ਤੇ ਕਲਿੱਕ ਕਰਕੇ VS Code ਵਿੱਚ Python ਵਰਤੋਂ ਬਾਰੇ ਵੀਡੀਓ ਦੇਖੋ।
-3. **Scikit-learn ਇੰਸਟਾਲ ਕਰੋ**, [ਇਹ ਨਿਰਦੇਸ਼ਾਂ](https://scikit-learn.org/stable/install.html) ਦੀ ਪਾਲਣਾ ਕਰਕੇ। ਕਿਉਂਕਿ ਤੁਹਾਨੂੰ ਯਕੀਨੀ ਬਣਾਉਣਾ ਹੈ ਕਿ ਤੁਸੀਂ ਪਾਇਥਨ 3 ਵਰਤ ਰਹੇ ਹੋ, ਇਹ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ ਕਿ ਤੁਸੀਂ ਇੱਕ ਵਰਚੁਅਲ ਵਾਤਾਵਰਣ ਵਰਤੋਂ। ਨੋਟ ਕਰੋ, ਜੇ ਤੁਸੀਂ M1 Mac 'ਤੇ ਇਹ ਲਾਇਬ੍ਰੇਰੀ ਇੰਸਟਾਲ ਕਰ ਰਹੇ ਹੋ, ਤਾਂ ਉਪਰੋਕਤ ਲਿੰਕ ਕੀਤੇ ਪੰਨੇ 'ਤੇ ਵਿਸ਼ੇਸ਼ ਨਿਰਦੇਸ਼ ਹਨ।
+3. **Scikit-learn ਇੰਸਟਾਲ ਕਰੋ**, [ਇਹਹ ਨਿਰਦੇਸ਼ਾਂ](https://scikit-learn.org/stable/install.html) ਦੀ ਪਾਲਣਾ ਕਰਕੇ। ਕਿਉਂਕਿ ਤੁਹਾਨੂੰ ਯਕੀਨੀ ਬਣਾਣਾ ਹੈ ਕਿ ਤੁਸੀਂ Python 3 ਵਰਤ ਰਹੇ ਹੋ, ਇਸ ਲਈ ਵਰਚੁਅਲ ਇੰਵਾਇਰਨਮੈਂਟ ਵਰਤਣਾ ਸਧਾਰਨ ਹੈ। ਜੇ ਤੁਸੀਂ M1 Mac 'ਤੇ ਇਹ ਲਾਇਬਰੇਰੀ ਇੰਸਟਾਲ ਕਰ ਰਹੇ ਹੋ, ਤਾਂ ਉਪਰ ਦਿੱਤੇ ਲਿੰਕ ਤੇ ਖਾਸ ਨਿਰਦੇਸ਼ ਹਨ।
-4. **Jupyter Notebook ਇੰਸਟਾਲ ਕਰੋ**। ਤੁਹਾਨੂੰ [Jupyter ਪੈਕੇਜ](https://pypi.org/project/jupyter/) ਇੰਸਟਾਲ ਕਰਨ ਦੀ ਲੋੜ ਹੋਵੇਗੀ।
+1. **Jupyter Notebook ਇੰਸਟਾਲ ਕਰੋ**। ਤੁਹਾਨੂੰ [Jupyter ਪੈਕੇਜ ਇੰਸਟਾਲ ਕਰਨਾ ਹੋਵੇਗਾ](https://pypi.org/project/jupyter/)।
-## ਤੁਹਾਡਾ ML ਲੇਖਨ ਵਾਤਾਵਰਣ
+## ਤੁਹਾਡਾ ML ਲੇਖਨ ਵਾਤਾਵਰਨ
-ਤੁਸੀਂ **ਨੋਟਬੁੱਕਸ** ਵਰਤੋਂਗੇ ਆਪਣਾ ਪਾਇਥਨ ਕੋਡ ਵਿਕਸਿਤ ਕਰਨ ਅਤੇ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਮਾਡਲ ਬਣਾਉਣ ਲਈ। ਇਹ ਫਾਈਲ ਦੀ ਕਿਸਮ ਡਾਟਾ ਸਾਇੰਟਿਸਟਾਂ ਲਈ ਇੱਕ ਆਮ ਟੂਲ ਹੈ, ਅਤੇ ਇਹਨਾਂ ਨੂੰ ਉਨ੍ਹਾਂ ਦੇ ਸੁਫਿਕਸ ਜਾਂ ਐਕਸਟੈਂਸ਼ਨ `.ipynb` ਦੁਆਰਾ ਪਛਾਣਿਆ ਜਾ ਸਕਦਾ ਹੈ।
+ਤੁਸੀਂ ਆਪਣੇ Python ਕੋਡ ਨੂੰ ਵਿਕਸਤ ਕਰਨ ਅਤੇ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਮਾਡਲ ਬਨਾਉਣ ਲਈ **ਨੋਟਬੁੱਕ** ਵਰਤੋਂਗੇ। ਇਸ ਤਰ੍ਹਾਂ ਦੀ ਫਾਈਲ ਡਾਟਾ ਸਾਇੰਟਿਸਟਾਂ ਲਈ ਆਮ ਸੰਦ ਹੈ, ਅਤੇ ਇਹਨਾਂ ਨੂੰ ਉਨ੍ਹਾਂ ਦੇ ਫਾਇਲ ਸਫਿਕਸ ਜਾਂ ਐਕਸਟੈਨਸ਼ਨ `.ipynb` ਨਾਲ ਪਹਚਾਣਿਆ ਜਾਂਦਾ ਹੈ।
-ਨੋਟਬੁੱਕਸ ਇੱਕ ਇੰਟਰਐਕਟਿਵ ਵਾਤਾਵਰਣ ਹੈ ਜੋ ਵਿਕਸਿਤ ਕਰਨ ਵਾਲੇ ਨੂੰ ਕੋਡ ਲਿਖਣ ਅਤੇ ਕੋਡ ਦੇ ਆਲੇ-ਦੁਆਲੇ ਨੋਟਸ ਅਤੇ ਦਸਤਾਵੇਜ਼ ਲਿਖਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ, ਜੋ ਪ੍ਰਯੋਗਾਤਮਕ ਜਾਂ ਖੋਜ-ਅਧਾਰਿਤ ਪ੍ਰੋਜੈਕਟਾਂ ਲਈ ਕਾਫ਼ੀ ਮਦਦਗਾਰ ਹੁੰਦਾ ਹੈ।
+ਨੋਟਬੁੱਕ ਇੱਕ ਇੰਟਰਐਕਟਿਵ ਵਾਤਾਵਰਨ ਹੈ ਜੋ ਵਿਕਾਸਕਾਰ ਨੂੰ ਕੋਡਿੰਗ ਕਰਨ ਅਤੇ ਕੋਡ ਦੇ ਆਲੇ-ਦੁਆਲੇ ਟਿੱਪਣੀਆਂ ਅਤੇ ਦਸਤਾਵੇਜ਼ ਲਿਖਣ ਦੀ ਆਜ਼ਾਦੀ ਦਿੰਦਾ ਹੈ, ਜੋ ਪ੍ਰਯੋਗ ਜਾਂ ਖੋਜ-ਮੁਖੀ ਪਰਿਯੋਜਨਾਵਾਂ ਲਈ ਬਹੁਤ ਮਦਦਗਾਰ ਹੁੰਦਾ ਹੈ।
-[](https://youtu.be/7E-jC8FLA2E "ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਲਈ ਸ਼ੁਰੂਆਤ - Jupyter Notebooks ਸੈਟਅਪ ਕਰੋ")
+[](https://youtu.be/7E-jC8FLA2E "ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਨਵਾਂ ਸਿਖਣ ਵਾਲਿਆਂ ਲਈ - ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲ ਬਣਾਉਂਦੇ ਹੋਏ Jupyter Notebooks ਸੈੱਟ ਕਰੋ")
-> 🎥 ਉਪਰੋਕਤ ਚਿੱਤਰ 'ਤੇ ਕਲਿਕ ਕਰੋ ਇੱਕ ਛੋਟੀ ਵੀਡੀਓ ਦੇਖਣ ਲਈ ਜੋ ਇਸ ਅਭਿਆਸ ਨੂੰ ਦਿਖਾਉਂਦੀ ਹੈ।
+> 🎥 ਇਸ ਕਸਰਤ ਨੂੰ ਕਰਦਿਆਂ ਛੋਟਾ ਵੀਡੀਓ ਦੇਖਣ ਲਈ ਉਪਰ ਦਿੱਤੀ ਤਸਵੀਰ 'ਤੇ ਕਲਿੱਕ ਕਰੋ।
-### ਅਭਿਆਸ - ਨੋਟਬੁੱਕ ਨਾਲ ਕੰਮ ਕਰੋ
+### ਕਸਰਤ - ਨੋਟਬੁੱਕ ਨਾਲ ਕੰਮ ਕਰੋ
-ਇਸ ਫੋਲਡਰ ਵਿੱਚ, ਤੁਹਾਨੂੰ ਫਾਈਲ _notebook.ipynb_ ਮਿਲੇਗੀ।
+ਇਸ ਫੋਲਡਰ ਵਿੱਚ ਤੁਹਾਨੂੰ ਫਾਈਲ _notebook.ipynb_ ਮਿਲੇਗੀ।
-1. _notebook.ipynb_ ਨੂੰ Visual Studio Code ਵਿੱਚ ਖੋਲ੍ਹੋ।
+1. Visual Studio Code ਵਿੱਚ _notebook.ipynb_ ਖੋਲ੍ਹੋ।
- ਇੱਕ Jupyter ਸਰਵਰ ਸ਼ੁਰੂ ਹੋਵੇਗਾ ਜਿਸ ਵਿੱਚ ਪਾਇਥਨ 3+ ਸ਼ੁਰੂ ਕੀਤਾ ਗਿਆ ਹੈ। ਤੁਹਾਨੂੰ ਨੋਟਬੁੱਕ ਦੇ ਖੇਤਰ ਮਿਲਣਗੇ ਜੋ `ਚਲਾਏ` ਜਾ ਸਕਦੇ ਹਨ, ਕੋਡ ਦੇ ਟੁਕੜੇ। ਤੁਸੀਂ ਕੋਡ ਬਲਾਕ ਚਲਾ ਸਕਦੇ ਹੋ, ਆਈਕਨ ਨੂੰ ਚੁਣ ਕੇ ਜੋ ਇੱਕ ਪਲੇ ਬਟਨ ਵਰਗਾ ਲੱਗਦਾ ਹੈ।
+ ਇੱਕ Jupyter ਸਰਵਰ Python 3+ ਨਾਲ ਚਾਲੂ ਹੋ ਜਾਵੇਗਾ। ਤੁਸੀਂ ਨੋਟਬੁੱਕ ਵਿੱਚ ਉਹ ਹਿੱਸੇ ਮਿਲਣਗੇ ਜਿਹੜੇ ਤੂੰਹਾਨੂੰ `ਚਲਾਉਣਾ` ਹੈ, ਜੋ ਕੋਡ ਦੇ ਟੁਕੜੇ ਹਨ। ਤੁਸੀਂ ਇੱਕ ਕੋਡ ਬਲਾਕ ਚਲਾ ਸਕਦੇ ਹੋ, ਪਲੇ ਬਟਨ ਵਰਗੇ ਆਈਕਾਨ ਤੇ ਕੱਲੀਕ ਕਰਕੇ।
-1. `md` ਆਈਕਨ ਚੁਣੋ ਅਤੇ ਕੁਝ ਮਾਰਕਡਾਊਨ ਸ਼ਾਮਲ ਕਰੋ, ਅਤੇ ਹੇਠਾਂ ਦਿੱਤਾ ਟੈਕਸਟ **# ਤੁਹਾਡੇ ਨੋਟਬੁੱਕ ਵਿੱਚ ਸਵਾਗਤ ਹੈ**।
+1. `md` ਆਈਕਾਨ ਚੁਣੋ ਅਤੇ ਇਕ ਮਾਰਕਡਾਊਨ ਸ਼ਾਮਿਲ ਕਰੋ, ਅਤੇ ਹੇਠਾਂ ਦਿੱਤਾ ਲਿਖੋ **# ਤੁਹਾਡਾ ਨੋਟਬੁੱਕ ਵਿੱਚ ਸਵਾਗਤ ਹੈ**।
- ਅਗਲੇ, ਕੁਝ ਪਾਇਥਨ ਕੋਡ ਸ਼ਾਮਲ ਕਰੋ।
+ ਫਿਰ ਕੁਝ Python ਕੋਡ ਸ਼ਾਮਿਲ ਕਰੋ।
1. ਕੋਡ ਬਲਾਕ ਵਿੱਚ **print('hello notebook')** ਲਿਖੋ।
-1. ਕੋਡ ਚਲਾਉਣ ਲਈ ਤੀਰ ਚੁਣੋ।
+1. ਕੋਡ ਚਲਾਉਣ ਲਈ ਤੀਰ ਵਿੱਚ ਕਲਿੱਕ ਕਰੋ।
- ਤੁਹਾਨੂੰ ਪ੍ਰਿੰਟ ਕੀਤਾ ਬਿਆਨ ਦੇਖਣਾ ਚਾਹੀਦਾ ਹੈ:
+ ਤੁਸੀਂ ਪ੍ਰਿੰਟ ਕੀਤਾ ਟੈਕਸਟ ਦੇਖੋਗੇ:
```output
hello notebook
```
-
+
-ਤੁਸੀਂ ਆਪਣੇ ਕੋਡ ਨੂੰ ਟਿੱਪਣੀਆਂ ਨਾਲ ਆਪ-ਦਸਤਾਵੇਜ਼ ਕਰਨ ਲਈ ਆਪਣੇ ਕੋਡ ਦੇ ਨਾਲ-ਨਾਲ ਟਿੱਪਣੀਆਂ ਸ਼ਾਮਲ ਕਰ ਸਕਦੇ ਹੋ।
+ਤੁਸੀਂ ਆਪਣੇ ਕੋਡ ਵਿੱਚ ਟਿੱਪਣੀਆਂ ਦੋਹਰਾਉਂਦੇ ਹੋਏ ਨੋਟਬੁੱਕ ਨੂੰ ਆਪਣਾ ਦਸਤਾਵੇਜ਼ੀਕਰਨ ਦੇ ਸਕਦੇ ਹੋ।
-✅ ਇੱਕ ਮਿੰਟ ਲਈ ਸੋਚੋ ਕਿ ਇੱਕ ਵੈੱਬ ਡਿਵੈਲਪਰ ਦਾ ਕੰਮ ਕਰਨ ਦਾ ਵਾਤਾਵਰਣ ਡਾਟਾ ਸਾਇੰਟਿਸਟ ਦੇ ਵਾਤਾਵਰਣ ਤੋਂ ਕਿੰਨਾ ਵੱਖਰਾ ਹੈ।
+✅ ਇੱਕ ਮਿੰਟ ਲਈ ਸੋਚੋ ਕਿ ਵੈੱਬ ਡਿਵੈਲਪਰ ਦਾ ਕੰਮ ਕਰਨ ਵਾਲਾ ਵਾਤਾਵਰਨ ਡਾਟਾ ਵਿਗਿਆਨੀ ਦੇ ਵਾਤਾਵਰਨ ਨਾਲ ਕਿੰਨਾ ਵੱਖਰਾ ਹੁੰਦਾ ਹੈ।
-## Scikit-learn ਨਾਲ ਸ਼ੁਰੂਆਤ
+## Scikit-learn ਨਾਲ ਸ਼ੁਰੂ ਕਰੋ
-ਹੁਣ ਜਦੋਂ ਪਾਇਥਨ ਤੁਹਾਡੇ ਸਥਾਨਕ ਵਾਤਾਵਰਣ ਵਿੱਚ ਸੈਟਅਪ ਹੈ, ਅਤੇ ਤੁਸੀਂ Jupyter ਨੋਟਬੁੱਕਸ ਨਾਲ ਆਰਾਮਦਾਇਕ ਹੋ, ਆਓ Scikit-learn ਨਾਲ ਵੀ ਆਰਾਮਦਾਇਕ ਹੋ ਜਾਈਏ (ਇਸਨੂੰ `sci` ਵਾਂਗ ਉਚਾਰਨ ਕਰੋ ਜਿਵੇਂ `science`)। Scikit-learn ਤੁਹਾਨੂੰ ML ਕਾਰਜ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰਨ ਲਈ ਇੱਕ [ਵਿਆਪਕ API](https://scikit-learn.org/stable/modules/classes.html#api-ref) ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ।
+ਹੁਣ ਜਦੋਂ Python ਤੁਹਾਡੇ ਸਥਾਨਕ ਵਾਤਾਵਰਨ ਵਿੱਚ ਸੈੱਟ ਹੈ ਅਤੇ ਤੁਸੀਂ Jupyter Notebooks ਨਾਲ ਆਰਾਮਦਾਇਕ ਹੋ, ਆਓ Scikit-learn ਨਾਲ ਵੀ ਸਮਾਨ ਆਰਾਮ ਮਹਿਸੂਸ ਕਰੀਏ (ਇਸ ਨੂੰ `sci` ਅੱਖਰਾਂ ਵਾਂਗ ਉਚਾਰੋ, ਜਿਵੇਂ ਕਿ `science`). Scikit-learn ਤੁਹਾਡੇ ML ਕੰਮਾਂ ਲਈ ਇੱਕ [ਵਿਆਪਕ API](https://scikit-learn.org/stable/modules/classes.html#api-ref) ਮੁਹੱਈਆ ਕਰਦਾ ਹੈ।
-ਉਨ੍ਹਾਂ ਦੇ [ਵੈਬਸਾਈਟ](https://scikit-learn.org/stable/getting_started.html) ਦੇ ਅਨੁਸਾਰ, "Scikit-learn ਇੱਕ ਖੁੱਲ੍ਹੇ ਸਰੋਤ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਲਾਇਬ੍ਰੇਰੀ ਹੈ ਜੋ ਸਪਰਵਾਈਜ਼ਡ ਅਤੇ ਅਨਸਪਰਵਾਈਜ਼ਡ ਲਰਨਿੰਗ ਦਾ ਸਮਰਥਨ ਕਰਦੀ ਹੈ। ਇਹ ਮਾਡਲ ਫਿਟਿੰਗ, ਡਾਟਾ ਪ੍ਰੀ-ਪ੍ਰੋਸੈਸਿੰਗ, ਮਾਡਲ ਚੋਣ ਅਤੇ ਮੁਲਾਂਕਣ, ਅਤੇ ਹੋਰ ਕਈ ਯੂਟਿਲਿਟੀਜ਼ ਲਈ ਵੱਖ-ਵੱਖ ਟੂਲਸ ਪ੍ਰਦਾਨ ਕਰਦੀ ਹੈ।"
+ਉਨ੍ਹਾਂ ਦੀ [ਵੈੱਬਸਾਈਟ](https://scikit-learn.org/stable/getting_started.html) ਅਨੁਸਾਰ, "Scikit-learn ਇੱਕ ਖੁੱਲ੍ਹਾ ਸਰੋਤ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਲਾਇਬਰੇਰੀ ਹੈ ਜੋ ਨਿਗਰਾਨ ਅਤੇ ਬਿਨਾ-ਨਿਗਰਾਨ ਸਿਖਲਾਈ ਨੂੰ ਸਹਾਇਤਾ ਦਿੰਦੀ ਹੈ। ਇਹ ਮਾਡਲ ਫਿੱਟਿੰਗ, ਡੇਟਾ ਪ੍ਰੀ-ਪ੍ਰੋਸੈਸਿੰਗ, ਮਾਡਲ ਚੋਣ ਅਤੇ ਮੂਲਾਂਕਣ ਲਈ ਭਿੰਨ-ਭਿੰਨ ਟੂਲਜ਼ ਵੀਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ।"
-ਇਸ ਕੋਰਸ ਵਿੱਚ, ਤੁਸੀਂ Scikit-learn ਅਤੇ ਹੋਰ ਟੂਲਸ ਵਰਤੋਂਗੇ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਮਾਡਲ ਬਣਾਉਣ ਲਈ ਜੋ ਅਸੀਂ 'ਪ੍ਰੰਪਰਾਗਤ ਮਸ਼ੀਨ ਲਰਨਿੰਗ' ਕਾਰਜ ਕਹਿੰਦੇ ਹਾਂ। ਅਸੀਂ ਜਾਨਬੁੱਝ ਕੇ ਨਿਊਰਲ ਨੈਟਵਰਕਸ ਅਤੇ ਡੀਪ ਲਰਨਿੰਗ ਤੋਂ ਬਚੇ ਹਾਂ, ਕਿਉਂਕਿ ਇਹ ਸਾਡੇ ਆਉਣ ਵਾਲੇ 'AI for Beginners' ਕਰਿਕੁਲਮ ਵਿੱਚ ਵਧੀਆ ਢੰਗ ਨਾਲ ਕਵਰ ਕੀਤੇ ਗਏ ਹਨ।
+ਇਸ ਕੋਰਸ ਵਿੱਚ, ਤੁਸੀਂ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਮਾਡਲਾਂ ਬਣਾਉਣ ਲਈ Scikit-learn ਅਤੇ ਹੋਰ ਟੂਲਜ਼ ਵਰਤੋਂਗੇ ਜੋ ਅਸੀਂ 'ਪਾਰੰਪਰਿਕ ਮਸ਼ੀਨ ਲਰਨਿੰਗ' ਕਹਿੰਦੇ ਹਾਂ। ਅਸੀਂ ਇੱਥੇ ਜਾਲੀ ਨੈੱਟਵਰਕਾਂ ਅਤੇ ਡੀਪ ਲਰਨਿੰਗ ਵਿਚੋਂ ਜੁੜੇ ਵਿਸ਼ਿਆਂ ਤੋਂ ਸਚੇਤ ਰਿਹਾ ਹਾਂ, ਕਿਉਂਕਿ ਇਹ ਅਗਲੇ 'AI for Beginners' ਕਾਰਜਕ੍ਰਮ ਵਿੱਚ ਬਿਹਤਰ ਸਮਝਾਏ ਜਾਣਗੇ।
-Scikit-learn ਮਾਡਲ ਬਣਾਉਣ ਅਤੇ ਉਨ੍ਹਾਂ ਨੂੰ ਵਰਤਣ ਲਈ ਮੁਲਾਂਕਣ ਕਰਨਾ ਸੌਖਾ ਬਣਾਉਂਦਾ ਹੈ। ਇਹ ਮੁੱਖ ਤੌਰ 'ਤੇ ਸੰਖਿਆਤਮਕ ਡਾਟਾ ਵਰਤਣ 'ਤੇ ਧਿਆਨ ਕੇਂਦ੍ਰਿਤ ਕਰਦਾ ਹੈ ਅਤੇ ਸਿੱਖਣ ਦੇ ਟੂਲਸ ਵਜੋਂ ਵਰਤਣ ਲਈ ਕਈ ਤਿਆਰ-ਕੀਤੇ ਡਾਟਾਸੈਟਸ ਸ਼ਾਮਲ ਕਰਦਾ ਹੈ। ਇਹ ਵਿਦਿਆਰਥੀਆਂ ਲਈ ਅਗਲੇ ਤੋਂ ਤਿਆਰ ਮਾਡਲ ਵੀ ਸ਼ਾਮਲ ਕਰਦਾ ਹੈ। ਆਓ ਪਹਿਲਾਂ Scikit-learn ਦੇ ਨਾਲ ਕੁਝ ਬੁਨਿਆਦੀ ਡਾਟਾ ਵਰਤ ਕੇ ਪ੍ਰੀ-ਪੈਕਡ ਡਾਟਾ ਲੋਡ ਕਰਨ ਅਤੇ ਇੱਕ ਬਣਾਏ ਗਏ ਐਸਟੀਮੇਟਰ ਦੀ ਪ੍ਰਕਿਰਿਆ ਦੀ ਪੜਚੋਲ ਕਰੀਏ।
+Scikit-learn ਨਾਲ ਮਾਡਲਾਂ ਬਣਾਉਣਾ ਅਤੇ ਉਨ੍ਹਾਂ ਦੀ ਸਮੀਖਿਆ ਕਰਨਾ ਸੌਖਾ ਹੈ। ਇਹ ਮੁੱਖ ਤੌਰ 'ਤੇ ਸਾਖਿਆਂ ਵਾਲਾ ਡਾਟਾ ਵਰਤਦਾ ਹੈ ਅਤੇ ਸਿੱਖਾਈ ਲਈ ਕਈ ਤਿਆਰ ਡਾਟਾਸੈਟਾਂ ਵੀ ਸ਼ਾਮਿਲ ਕਰਦਾ ਹੈ। ਇਸ ਵਿੱਚ ਪਹਿਲਾਂ ਤੋਂ ਬਣੇ ਕਈ ਮਾਡਲ ਵੀ ਹੁੰਦੇ ਹਨ ਜਿਨ੍ਹਾਂ ਨੂੰ ਵਿਦਿਆਰਥੀ ਟ੍ਰਾਈ ਕਰ ਸਕਦੇ ਹਨ। ਆਓ ਪਹਿਲਾਂ ਇੱਕ ਤਿਆਰ ਡਾਟਾ ਲੋਡ ਕਰਨ ਅਤੇ Scikit-learn ਨਾਲ ਪਹਿਲਾ ML ਮਾਡਲ ਬਣਾਉਣ ਦੀ ਪ੍ਰਕਿਰਿਆ ਪੜਚੋਲ ਕਰੀਏ।
-## ਅਭਿਆਸ - ਤੁਹਾਡਾ ਪਹਿਲਾ Scikit-learn ਨੋਟਬੁੱਕ
+## ਕਸਰਤ - ਤੁਹਾਡਾ ਪਹਿਲਾ Scikit-learn ਨੋਟਬੁੱਕ
-> ਇਹ ਟਿਊਟੋਰਿਅਲ Scikit-learn ਦੀ ਵੈਬਸਾਈਟ 'ਤੇ [ਲੀਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਉਦਾਹਰਨ](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) ਤੋਂ ਪ੍ਰੇਰਿਤ ਸੀ।
+> ਇਹ ਟਿਊਟੋਰિયલ Scikit-learn ਦੀ ਵੈੱਬਸਾਈਟ 'ਤੇ [ਲੀਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਉਦਾਹਰਨ](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 "ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਲਈ ਸ਼ੁਰੂਆਤ - ਪਾਇਥਨ ਵਿੱਚ ਤੁਹਾਡਾ ਪਹਿਲਾ ਲੀਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਪ੍ਰੋਜੈਕਟ")
-> 🎥 ਉਪਰੋਕਤ ਚਿੱਤਰ 'ਤੇ ਕਲਿਕ ਕਰੋ ਇੱਕ ਛੋਟੀ ਵੀਡੀਓ ਦੇਖਣ ਲਈ ਜੋ ਇਸ ਅਭਿਆਸ ਨੂੰ ਦਿਖਾਉਂਦੀ ਹੈ।
+[](https://youtu.be/2xkXL5EUpS0 "Python ਵਿੱਚ ਤੁਹਾਡਾ ਪਹਿਲਾ ਲੀਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਪ੍ਰਾਜੈਕਟ - ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਨਵੇਂ ਸਿਖਣ ਵਾਲੇ")
-_ਨੋਟਬੁੱਕ.ipynb_ ਫਾਈਲ ਵਿੱਚ ਜੋ ਇਸ ਪਾਠ ਨਾਲ ਸੰਬੰਧਿਤ ਹੈ, ਸਾਰੇ ਸੈਲਜ਼ ਨੂੰ 'ਟ੍ਰੈਸ਼ ਕੈਨ' ਆਈਕਨ ਦਬਾ ਕੇ ਸਾਫ਼ ਕਰੋ।
+> 🎥 ਇਸ ਕਸਰਤ ਕਰਦਿਆਂ ਛੋਟਾ ਵੀਡੀਓ ਦੇਖਣ ਲਈ ਉਪਰ ਦਿੱਤੀ ਤਸਵੀਰ 'ਤੇ ਕਲਿੱਕ ਕਰੋ।
-ਇਸ ਭਾਗ ਵਿੱਚ, ਤੁਸੀਂ Scikit-learn ਵਿੱਚ ਸਿੱਖਣ ਦੇ ਉਦੇਸ਼ਾਂ ਲਈ ਬਣਾਏ ਗਏ ਡਾਇਬਟੀਜ਼ ਬਾਰੇ ਇੱਕ ਛੋਟੇ ਡਾਟਾਸੈਟ ਨਾਲ ਕੰਮ ਕਰੋਗੇ। ਕਲਪਨਾ ਕਰੋ ਕਿ ਤੁਸੀਂ ਡਾਇਬਟੀਜ਼ ਮਰੀਜ਼ਾਂ ਲਈ ਇੱਕ ਇਲਾਜ ਦੀ ਜਾਂਚ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ। ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਮਾਡਲ ਤੁਹਾਨੂੰ ਇਹ ਨਿਰਧਾਰਤ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰ ਸਕਦੇ ਹਨ ਕਿ ਕਿਹੜੇ ਮਰੀਜ਼ ਇਲਾਜ ਲਈ ਵਧੀਆ ਪ੍ਰਤੀਕ੍ਰਿਆ ਦੇਣਗੇ, ਚਰਾਂ ਦੇ ਸੰਯੋਜਨਾਂ ਦੇ ਆਧਾਰ 'ਤੇ। ਜਦੋਂ ਦ੍ਰਿਸ਼ਮਾਨ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਇੱਕ ਬਹੁਤ ਹੀ ਬੁਨਿਆਦੀ ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲ ਵੀ ਚਰਾਂ ਬਾਰੇ ਜਾਣਕਾਰੀ ਦਿਖਾ ਸਕਦਾ ਹੈ ਜੋ ਤੁਹਾਨੂੰ ਆਪਣੇ ਸਿਧਾਂਤਕ ਕਲੀਨਿਕਲ ਟ੍ਰਾਇਲਜ਼ ਨੂੰ ਸੰਗਠਿਤ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰੇਗਾ।
+ਇਸ ਪਾਠ ਨਾਲ ਜੁੜੀ _notebook.ipynb_ ਫਾਈਲ ਵਿੱਚ ਸਾਰੇ ਸੈਲ 'ਟ੍ਰੈਸ਼ ਕੈਨ' ਆਈਕਾਨ ਦਬਾ ਕੇ ਸਾਫ਼ ਕਰੋ।
-✅ ਰਿਗ੍ਰੈਸ਼ਨ ਦੇ ਕਈ ਤਰੀਕੇ ਹਨ, ਅਤੇ ਤੁਸੀਂ ਕਿਹੜਾ ਚੁਣਦੇ ਹੋ ਇਹ ਇਸ ਗੱਲ 'ਤੇ ਨਿਰਭਰ ਕਰਦਾ ਹੈ ਕਿ ਤੁਸੀਂ ਕਿਹੜਾ ਜਵਾਬ ਲੱਭ ਰਹੇ ਹੋ। ਜੇ ਤੁਸੀਂ ਕਿਸੇ ਦਿੱਤੇ ਉਮਰ ਦੇ ਵਿਅਕਤੀ ਲਈ ਸੰਭਾਵਿਤ ਉਚਾਈ ਦੀ ਭਵਿੱਖਵਾਣੀ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ ਤੁਸੀਂ ਲੀਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਵਰਤੋਂਗੇ, ਕਿਉਂਕਿ ਤੁਸੀਂ ਇੱਕ **ਸੰਖਿਆਤਮਕ ਮੁੱਲ** ਲੱਭ ਰਹੇ ਹੋ। ਜੇ ਤੁਸੀਂ ਇਹ ਪਤਾ ਲਗਾਉਣ ਵਿੱਚ ਦਿਲਚਸਪੀ ਰੱਖਦੇ ਹੋ ਕਿ ਕੀ ਕਿਸੇ ਕਿਸਮ ਦੇ ਖਾਣੇ ਨੂੰ ਸ਼ਾਕਾਹਾਰੀ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ ਜਾਂ ਨਹੀਂ, ਤਾਂ ਤੁਸੀਂ **ਸ਼੍ਰੇਣੀ ਅਸਾਈਨਮੈਂਟ** ਲੱਭ ਰਹੇ ਹੋ, ਇਸ ਲਈ ਤੁਸੀਂ ਲੌਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਵਰਤੋਂਗੇ। ਤੁਸੀਂ ਬਾਅਦ ਵਿੱਚ ਲੌਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਬਾਰੇ ਹੋਰ ਸਿੱਖੋਗੇ। ਡਾਟਾ ਤੋਂ ਕੁਝ ਸਵਾਲ ਪੁੱਛਣ ਬਾਰੇ ਸੋਚੋ, ਅਤੇ ਇਹਨਾਂ ਤਰੀਕਿਆਂ ਵਿੱਚੋਂ ਕਿਹੜਾ ਵਧੀਆ ਹੋਵੇਗਾ।
+ਇਸ ਭਾਗ ਵਿੱਚ, ਤੁਸੀਂ Scikit-learn ਵਿੱਚ ਸਿੱਖਣ ਲਈ ਬਣਾਏ ਇੱਕ ਛੋਟੇ ਡਾਟਾਸੈਟ 'ਡੀਬੇਟੀਜ਼' ਨਾਲ ਕੰਮ ਕਰੋਗੇ। ਸੋਚੋ ਕਿ ਤੁਸੀਂ ਮਧੁਮੇਹੀ ਮਰੀਜ਼ਾਂ ਲਈ ਇਲਾਜ ਦੀ ਟੈਸਟ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ। ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਮਾਡਲ ਤੁਹਾਨੂੰ ਇਹ ਸਹਾਇਤਾ ਕਰ ਸਕਦੇ ਹਨ ਕਿ ਕਿਹੜੇ ਮਰੀਜ਼ ਇਲਾਜ ਦਾ ਵਧੀਆ ਜਵਾਬ ਦੇਣਗੇ, ਵੱਖ-ਵੱਖ ਵੇਰੀਏਬਲਾਂ ਦੇ ਸੰਯੋਗ ਦੇ ਅਧਾਰ 'ਤੇ। ਇੱਕ ਬੁਨਿਆਦੀ ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲ ਵੀ, ਜਦੋਂ ਦ੍ਰਸ਼ਟੀਕ ਤੌਰ 'ਤੇ ਦੇਖਿਆ ਜਾਵੇ, ਤਦ ਉਹ ਤਥ्यों ਬਾਰੇ ਸੰਵੇਦਨਸ਼ੀਲ ਜਾਣਕਾਰੀ ਦਿਖਾ ਸਕਦਾ ਹੈ ਜੋ ਤੁਹਾਨੂੰ ਆਪਣੇ ਸਿਧਾਂਤਕ ਕਲੀਨੀਕੀ ਟ੍ਰਾਇਲਾਂ ਦਾ ਆਯੋਜਨ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰੇਗੀ।
-ਆਓ ਇਸ ਕਾਰਜ 'ਤੇ ਸ਼ੁਰੂਆਤ ਕਰੀਏ।
+✅ ਰਿਗ੍ਰੈਸ਼ਨ ਦੇ ਕਈ ਤਰੀਕੇ ਹੁੰਦੇ ਹਨ, ਅਤੇ ਤੁਸੀਂ ਜੋ ਕਿਸੇ ਪ੍ਰਸ਼ਨ ਦਾ ਜਵਾਬ ਲੱਭ ਰਹੇ ਹੋ, ਉਸਦੇ ਅਨੁਸਾਰ ਕਿਸ ਤਰੀਕੇ ਨੂੰ ਚੁਣਨਾ ਹੈ। ਜੇ ਤੁਸੀਂ ਕਿਸੇ ਵਿਅਕਤੀ ਦੀ ਉਮਰ ਦੇ ਅਧਾਰ 'ਤੇ ਸੰਭਾਵਿਤ ਉਚਾਈ ਅੰਦਾਜ਼ਾ ਲਗਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ ਤੁਸੀਂ ਲੀਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਵਰਤੋਂਗੇ, ਕਿਉਂਕਿ ਤੁਸੀਂ ਇੱਕ **ਸੰਖਿਆਤਮਕ ਮੁੱਲ** ਲੱਭ ਰਹੇ ਹੋ। ਜੇ ਤੁਸੀਂ ਕਿਸੇ ਵਿਧਾ ਦੇ ਖਾਣੇ ਨੂੰ ਸ਼ਾਕਾਹਾਰੀ ਜਾਂ ਨਾ, ਕੈਟੇਗਰੀ ਵਿੱਚ ਰੱਖਣਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ ਤੁਸੀਂ ਲੋਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਵਰਤੋਂਗੇ। ਲੋਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਬਾਰੇ ਹੋਰ ਬਾਅਦ ਵਿੱਚ ਸਿਖੋਗੇ। ਕੁਝ ਪ੍ਰਸ਼ਨ ਸੋਚੋ ਜਿਹੜੇ ਤੁਸੀਂ ਡਾਟਾ ਤੋਂ ਪੁੱਛ ਸਕਦੇ ਹੋ, ਅਤੇ ਇਹ ਸੋਚੋ ਕਿ ਕਿਹੜਾ ਤਰੀਕਾ ਸਭ ਤੋਂ ਯੋਗ ਹੈ।
-### ਲਾਇਬ੍ਰੇਰੀਜ਼ ਇੰਪੋਰਟ ਕਰੋ
+ਆਓ ਇਸ ਕੰਮ ਨੂੰ ਸ਼ੁਰੂ ਕਰੀਏ।
-ਇਸ ਕਾਰਜ ਲਈ ਅਸੀਂ ਕੁਝ ਲਾਇਬ੍ਰੇਰੀਜ਼ ਇੰਪੋਰਟ ਕਰਾਂਗੇ:
+### ਲਾਇਬ੍ਰੇਰੀਆਂ ਇੰਪੋਰਟ ਕਰੋ
-- **matplotlib**। ਇਹ ਇੱਕ ਉਪਯੋਗ [ਗ੍ਰਾਫਿੰਗ ਟੂਲ](https://matplotlib.org/) ਹੈ ਅਤੇ ਅਸੀਂ ਇਸਨੂੰ ਲਾਈਨ ਪਲਾਟ ਬਣਾਉਣ ਲਈ ਵਰਤੋਂਗੇ।
-- **numpy**। [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) ਪਾਇਥਨ ਵਿੱਚ ਸੰਖਿਆਤਮਕ ਡਾਟਾ ਨੂੰ ਸੰਭਾਲਣ ਲਈ ਇੱਕ ਉਪਯੋਗ ਲਾਇਬ੍ਰੇਰੀ ਹੈ।
+ਇਸ ਕੰਮ ਲਈ ਅਸੀਂ ਕੁਝ ਲਾਇਬ੍ਰੇਰੀਆਂ ਨੂੰ ਇੰਪੋਰਟ ਕਰਾਂਗੇ:
+
+- **matplotlib**। ਇਹ ਇੱਕ ਉਪਯੋਗੀ [ਗ੍ਰਾਫਿੰਗ ਟੂਲ](https://matplotlib.org/) ਹੈ ਅਤੇ ਅਸੀਂ ਇਸਦਾ ਵਰਤੋਂ ਲਾਈਨ ਪਲੌਟ ਬਣਾਉਣ ਲਈ ਕਰਾਂਗੇ।
+- **numpy**। [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) Python ਵਿੱਚ ਗਣਿਤੀ ਡਾਟਾ ਨੂੰ ਸੰਭਾਲਣ ਲਈ ਇੱਕ ਲਾਇਬ੍ਰੇਰੀ ਹੈ।
- **sklearn**। ਇਹ [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) ਲਾਇਬ੍ਰੇਰੀ ਹੈ।
-ਆਪਣੇ ਕਾਰਜਾਂ ਵਿੱਚ ਮਦਦ ਕਰਨ ਲਈ ਕੁਝ ਲਾਇਬ੍ਰੇਰੀਜ਼ ਇੰਪੋਰਟ ਕਰੋ।
+ਆਪਣੀਆਂ ਕਸਰਤਾਂ ਵਿੱਚ ਮਦਦ ਕਰਨ ਲਈ ਕੁਝ ਲਾਇਬ੍ਰੇਰੀਆਂ ਇੰਪੋਰਟ ਕਰੋ।
-1. ਹੇਠਾਂ ਦਿੱਤਾ ਕੋਡ ਲਿਖ ਕੇ ਇੰਪੋਰਟ ਸ਼ਾਮਲ ਕਰੋ:
+1. ਹੇਠਾਂ ਦਿੱਤਾ ਕੋਡ ਟਾਈਪ ਕਰਕੇ ਇੰਪੋਰਟ ਕਰੋ:
```python
import matplotlib.pyplot as plt
@@ -122,33 +123,112 @@ _ਨੋਟਬੁੱਕ.ipynb_ ਫਾਈਲ ਵਿੱਚ ਜੋ ਇਸ ਪਾਠ
from sklearn import datasets, linear_model, model_selection
```
- ਉਪਰੋਕਤ ਤੁਸੀਂ `matplotlib`, `numpy` ਇੰਪੋਰਟ ਕਰ ਰਹੇ ਹੋ ਅਤੇ ਤੁਸੀਂ `datasets`, `linear_model` ਅਤੇ `model_selection` ਨੂੰ `sklearn` ਤੋਂ ਇੰਪੋਰਟ ਕਰ ਰਹੇ ਹੋ। `model_selection` ਡਾਟਾ ਨੂੰ ਟ੍ਰੇਨਿੰਗ ਅਤੇ ਟੈਸਟ ਸੈਟ ਵਿੱਚ ਵੰਡਣ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ।
+ ਉਪਰ ਤੁਸੀਂ `matplotlib`, `numpy` ਨੂੰ ਇੰਪੋਰਟ ਕਰ ਰਹੇ ਹੋ ਅਤੇ `sklearn` ਵਲੋਂ `datasets`, `linear_model` ਅਤੇ `model_selection` ਲੈ ਰਹੇ ਹੋ। `model_selection` ਡਾਟਾ ਨੂੰ ਟ੍ਰੇਨਿੰਗ ਅਤੇ ਟੈਸਟ ਸੈੱਟ ਵਿੱਚ ਵੰਡਣ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ।
+
+### ਡੀਬੇਟੀਜ਼ ਡਾਟਾਸੈਟ
+
+ਬਿਲਟ-ਇਨ [ਡੀਬੇਟੀਜ਼ ਡਾਟਾਸੈਟ](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) ਵਿੱਚ ਮਧੁਮੇਹ ਦੇ ਬਾਰੇ 442 ਸੈਂਪਲ ਹਨ, ਜਿਨ੍ਹਾਂ ਵਿੱਚ 10 ਫੀਚਰ ਵੇਰੀਏਬਲ ਹਨ, ਜਿਨ੍ਹਾਂ ਵਿੱਚੋਂ ਕੁਝ ਹਨ:
+
+- ਉਮਰ: ਸਾਲਾਂ ਵਿੱਚ ਉਮਰ
+- bmi: ਬੋਡੀ ਮਾਸ ਇੰਡੈਕਸ
+- bp: ਔਸਤ ਬਲੱਡ ਪ੍ਰੈਸ਼ਰ
+- s1 tc: ਟੀ-ਸੈੱਲ (ਇੱਕ ਕਿਸਮ ਦੇ ਚਿੱਟੇ ਬਲੱਡ ਸੈੱਲ)
+
+✅ ਇਸ ਡਾਟਾਸੈਟ ਵਿੱਚ 'ਲਿੰਗ' ਦਾ ਸਿਧਾਂਤ ਵੀ ਸ਼ਾਮਿਲ ਹੈ ਜੋ ਮਧੁਮੇਹ ਖੋਜ ਲਈ ਮਹੱਤਵਪੂਰਨ ਫੀਚਰ ਹੈ। ਕਈ ਮੈਡੀਕਲ ਡਾਟਾਸੈਟਾਂ ਵਿੱਚ ਇਹ ਤਰੀਕਾ ਬਾਈਨਰੀ ਵਰਗੀਵਾਰਤਨ ਨੂੰ ਸ਼ਾਮਿਲ ਕਰਦਾ ਹੈ। ਸੋਚੋ ਕਿ ਇਸ ਤਰ੍ਹਾਂ ਦੀ ਵਰਗੀਕਰਨ ਕਿਵੇਂ ਕੁਝ ਆਬਾਦੀ ਦੇ ਹਿੱਸਿਆਂ ਨੂੰ ਇਲਾਜਾਂ ਤੋਂ ਵੱਖ ਕਰ ਸਕਦੀ ਹੈ।
-### ਡਾਇਬਟੀਜ਼ ਡਾਟਾਸੈਟ
+ਹੁਣ, X ਅਤੇ y ਡਾਟਾ ਲੋਡ ਕਰੋ।
+
+> 🎓 ਯਾਦ ਰੱਖੋ, ਇਹ ਨਿਗਰਾਨ ਸਿੱਖਣ ਹੈ, ਅਤੇ ਸਾਨੂੰ ਇੱਕ ਨਾਂ ਵਾਲਾ 'y' ਟਾਰਗਟ ਚਾਹੀਦਾ ਹੈ।
+
+ਇੱਕ ਨਵੇਂ ਕੋਡ ਸੈੱਲ ਵਿੱਚ, ਇਹ ਕਾਲ ਕਰਕੇ ਡਿਬੇਟੀਜ਼ ਡਾਟਾਸੈਟ ਲੋਡ ਕਰੋ `load_diabetes()`। ਇਨਪੁੱਟ `return_X_y=True` ਦੱਸਦਾ ਹੈ ਕਿ `X` ਡਾਟਾ ਮੈਟਰਿਕਸ ਹੋਵੇਗਾ, ਅਤੇ `y` ਰਿਗ੍ਰੈਸ਼ਨ ਟਾਰਗਟ ਹੋਵੇਗਾ।
+
+1. ਡਾਟਾ ਮੈਟਰਿਕਸ ਦੇ ਆਕਾਰ ਅਤੇ ਪਹਿਲੇ ਤੱਤ ਨੂੰ ਦਰਸਾਉਣ ਲਈ ਕੁਝ ਪ੍ਰਿੰਟ ਕਮਾਂਡ ਸ਼ਾਮਿਲ ਕਰੋ:
+
+ ```python
+ X, y = datasets.load_diabetes(return_X_y=True)
+ print(X.shape)
+ print(X[0])
+ ```
+
+ ਜੋ ਤੁਸੀਂ ਵਾਪਸ ਪ੍ਰਾਪਤ ਕਰ ਰਹੇ ਹੋ, ਉਹ ਇੱਕ ਟਿਊਪਲ ਹੈ। ਤੁਸੀਂ ਉਸ ਟਿਊਪਲ ਦੇ ਪਹਿਲੇ ਦੋ ਮੁੱਲ ਨੂੰ ਕ੍ਰਮਵਾਰ `X` ਅਤੇ `y` ਵਿੱਚ ਅਸਾਈਨ ਕਰ ਰਹੇ ਹੋ। ਹੋਰ ਜਾਣਕਾਰੀ ਲਈ [ਟਿਊਪਲਸ ਬਾਰੇ ਪੜ੍ਹੋ](https://wikipedia.org/wiki/Tuple)।
+
+ ਤੁਸੀਂ ਦੇਖ ਸਕਦੇ ਹੋ ਕਿ ਇਸ ਡਾਟਾ ਵਿੱਚ 442 ਆਈਟਮ ਹਨ ਜੋ 10 ਤੱਤਾਂ ਵਾਲੀਆਂ ਏਰੇਜ਼ ਵਿੱਚ ਸ਼ਕਲਬੱਧ ਹਨ:
+
+ ```text
+ (442, 10)
+ [ 0.03807591 0.05068012 0.06169621 0.02187235 -0.0442235 -0.03482076
+ -0.04340085 -0.00259226 0.01990842 -0.01764613]
+ ```
+
+ ✅ ਥੋੜ੍ਹਾ ਸੋਚੋ ਕਿ ਡਾਟਾ ਅਤੇ ਰਿਗ੍ਰੈਸ਼ਨ ਟਾਰਗਟ ਵਿਚਕਾਰ ਕਿਹੜਾ ਸਬੰਧ ਹੈ। ਲੀਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਫੀਚਰ X ਅਤੇ ਟਾਰਗਟ ਵੇਰੀਏਬਲ y ਵਿਚਕਾਰ ਰਿਸ਼ਤੇ ਭਵਿੱਖਬਾਣੀ ਕਰਦਾ ਹੈ। ਕੀ ਤੁਸੀਂ [ਟਾਰਗਟ](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) ਨੂੰ ਡੀਬੇਟੀਜ਼ ਡਾਟਾਸੈਟ ਦੀ ਦਸਤਾਵੇਜ਼ ਵਿੱਚ ਲੱਭ ਸਕਦੇ ਹੋ? ਇਸ ਟਾਰਗਟ ਨੂੰ ਦੇਖਦੇ ਹੋਏ ਇਹ ਡਾਟਾਸੈਟ ਕੀ ਦਰਸਾ ਰਿਹਾ ਹੈ?
+
+2. ਹੁਣ, ਡਾਟਾਸੈਟ ਦਾ ਇੱਕ ਹਿੱਸਾ ਚੁਣੋ ਜੋ ਪਲੌਟ ਕੀਤਾ ਜਾਵੇ, ਡਾਟਾ ਸੈੱਟ ਦੇ 3ਵੇਂ ਕਾਲਮ ਨੂੰ ਚੁਣੋ। ਤੁਸੀਂ ਦਾ ਸਾਰੇ ਕਤਾਰਾਂ ਨੂੰ ਚੁਣਨ ਲਈ `:` ਓਪਰੇਟਰ ਵਰਤ ਸਕਦੇ ਹੋ, ਫਿਰ ਇੰਡੈਕਸ (2) ਨਾਲ 3ਵਾ ਕਾਲਮ ਚੁਣ ਸਕਦੇ ਹੋ। ਤੁਸੀਂ ਡਾਟਾ ਨੂੰ ਇੱਕ 2D ਐਰੇ ਵਿੱਚ ਬਦਲ ਵੀ ਸਕਦੇ ਹੋ - ਜਿਵੇਂ ਕਿ ਪਲੌਟਿੰਗ ਲਈ ਲੋੜੀਂਦਾ ਹੋਵੇ - `reshape(n_rows, n_columns)` ਵਰਤ ਕੇ। ਜੇਕਰ ਕਿਸੇ ਪੈਰਾਮੀਟਰ ਨੂੰ -1 ਦਿੱਤਾ ਜਾਵੇ, ਤਾਂ ਉਸ ਅਨੁਸਾਰ ਮਾਪ ਆਪ- ਆਪ ਨਿਕੱਲ ਜਾਂਦਾ ਹੈ।
+
+ ```python
+ X = X[:, 2]
+ X = X.reshape((-1,1))
+ ```
-ਬਣਾਏ ਗਏ [ਡਾਇਬਟੀਜ਼ ਡਾਟਾਸੈਟ](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) ਵਿੱਚ ਡਾਇਬਟੀਜ਼ ਦੇ ਆਲੇ-ਦੁਆਲੇ 442 ਨਮੂਨੇ ਸ਼ਾਮਲ ਹਨ, 10 ਫੀਚਰ ਚ
-✅ ਸੋਚੋ ਕਿ ਇੱਥੇ ਕੀ ਹੋ ਰਿਹਾ ਹੈ। ਕਈ ਛੋਟੇ ਡਾਟਾ ਬਿੰਦੂਆਂ ਵਿੱਚੋਂ ਇੱਕ ਸਿੱਧੀ ਰੇਖਾ ਗੁਜ਼ਰ ਰਹੀ ਹੈ, ਪਰ ਇਹ ਅਸਲ ਵਿੱਚ ਕੀ ਕਰ ਰਹੀ ਹੈ? ਕੀ ਤੁਸੀਂ ਦੇਖ ਸਕਦੇ ਹੋ ਕਿ ਤੁਸੀਂ ਇਸ ਰੇਖਾ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਮਾਨ ਲਗਾ ਸਕਦੇ ਹੋ ਕਿ ਇੱਕ ਨਵਾਂ, ਅਣਜਾਣਿਆ ਡਾਟਾ ਬਿੰਦੂ ਪਲਾਟ ਦੇ y ਅਕਸ ਨਾਲ ਸਬੰਧ ਵਿੱਚ ਕਿੱਥੇ ਫਿੱਟ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ? ਇਸ ਮਾਡਲ ਦੇ ਵਿਆਹਾਰਕ ਉਪਯੋਗ ਨੂੰ ਸ਼ਬਦਾਂ ਵਿੱਚ ਵਿਆਖਿਆ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ।
+ ✅ ਕਿਸੇ ਵੀ ਸਮੇਂ ਡਾਟਾ ਦੇ ਆਕਾਰ ਨੂੰ ਪ੍ਰਿੰਟ ਕਰਕੇ ਜਾਂਚੋ।
-ਵਧਾਈ ਹੋਵੇ, ਤੁਸੀਂ ਆਪਣਾ ਪਹਿਲਾ ਲੀਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲ ਬਣਾਇਆ, ਇਸ ਨਾਲ ਇੱਕ ਅਨੁਮਾਨ ਬਣਾਇਆ, ਅਤੇ ਇਸਨੂੰ ਇੱਕ ਪਲਾਟ ਵਿੱਚ ਦਰਸਾਇਆ!
+3. ਹੁਣ ਜਦ ਕਿ ਤੁਹਾਡੇ ਕੋਲ ਪਲੌਟ ਕਰਨ ਲਈ ਡਾਟਾ ਤਤਿਆਰ ਹੈ, ਤੁਸੀਂ ਵੇਖ ਸਕਦੇ ਹੋ ਕਿ ਕੀ ਮਸ਼ੀਨ ਡਾਟਾ ਵਿੱਚ ਗਾਣਿਆਂ ਵਿਚਕਾਰ ਤਰਕਸੰਗਤ ਵੰਡ ਦੀ ਪਹਿਚਾਣ ਕਰ ਸਕਦੀ ਹੈ। ਇਸ ਲਈ, ਤੁਹਾਨੂੰ ਡਾਟਾ (X) ਅਤੇ ਟਾਰਗਟ (y) ਦੋਹਾਂ ਨੂੰ ਟੈਸਟ ਅਤੇ ਟ੍ਰੇਨਿੰਗ ਸੈੱਟਾਂ ਵਿੱਚ ਵੰਡਣਾ ਪਵੇਗਾ। Scikit-learn ਵਿੱਚ ਇਸਦਾ ਸਿੱਧਾ ਤਰੀਕਾ ਹੈ, ਤੁਸੀਂ ਕਿਸੇ ਵਿਸ਼ੇਸ਼ ਬਿੰਦੂ 'ਤੇ ਆਪਣੇ ਟੈਸਟ ਡਾਟਾ ਨੂੰ ਵੰਡ ਸਕਦੇ ਹੋ।
+
+ ```python
+ X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33)
+ ```
+
+4. ਹੁਣ ਤੁਸੀਂ ਆਪਣੇ ਮਾਡਲ ਨੂੰ ਟ੍ਰੇਨ ਕਰਨ ਲਈ ਤਿਆਰ ਹੋ! ਲੀਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲ ਲੋਡ ਕਰੋ ਅਤੇ ਆਪਣੇ X ਅਤੇ y ਟ੍ਰੇਨਿੰਗ ਸੈੱਟਾਂ ਨਾਲ `model.fit()` ਵਰਤੋਂ:
+
+ ```python
+ model = linear_model.LinearRegression()
+ model.fit(X_train, y_train)
+ ```
+
+ ✅ `model.fit()` ਉਹ ਫੰਕਸ਼ਨ ਹੈ ਜੋ ਤੁਸੀਂ ਬਹੁਤ ਸਾਰੀਆਂ ML ਲਾਇਬ੍ਰੇਰੀਆਂ ਜਿਵੇਂ TensorFlow ਵਿੱਚ ਦੇਖੋਗੇ
+
+5. ਫਿਰ, ਟੈਸਟ ਡਾਟਾ ਦਾ ਪ੍ਰਿਡਿਕਸ਼ਨ ਬਣਾਉਣ ਲਈ `predict()` ਫੰਕਸ਼ਨ ਵਰਤੋਂ। ਇਹ ਲਾਈਨ ਖਿੱਚਣ ਲਈ ਵਰਤੀ ਜਾਵੇਗੀ ਜੋ ਡਾਟਾ ਗਰੂਪਾਂ ਵਿੱਚ ਵੰਡ ਦਿਖਾਏਗੀ।
+
+ ```python
+ y_pred = model.predict(X_test)
+ ```
+
+6. ਹੁਣ ਡਾਟਾ ਨੂੰ ਪਲੌਟ ਵਿੱਚ ਵਿਖਾਉਣ ਦਾ ਸਮਾਂ ਹੈ। Matplotlib ਇਸ ਕਾਰਜ ਲਈ ਬਹੁਤ ਲਾਭਕਾਰੀ ਟੂਲ ਹੈ। X ਅਤੇ y ਟੈਸਟ ਡਾਟਾ ਦਾ ਸਾਰੇ ਡਾਟਾਪੁਆਇੰਟਾਂ ਦਾ ਸਕੈਟਰਪਲੌਟ ਬਣਾਓ, ਅਤੇ ਪ੍ਰਿਡਿਕਸ਼ਨ ਨਾਲ ਮਾਡਲ ਦੇ ਡਾਟਾ ਗਰੂਪਾਂ ਵਿਚਕਾਰ ਸਭ ਤੋਂ ਉਚਿਤ ਜਗ੍ਹਾ 'ਤੇ ਇੱਕ ਲਾਈਨ ਖਿੱਚੋ।
+
+ ```python
+ plt.scatter(X_test, y_test, color='black')
+ plt.plot(X_test, y_pred, color='blue', linewidth=3)
+ plt.xlabel('Scaled BMIs')
+ plt.ylabel('Disease Progression')
+ plt.title('A Graph Plot Showing Diabetes Progression Against BMI')
+ plt.show()
+ ```
+
+ 
+
+
+ ✅ ਇੱਥੇ ਕਿੰਝ ਚੱਲ ਰਿਹਾ ਹੈ ਬਾਰੇ ਕੁਝ ਸੋਚੋ। ਇੱਕ ਸਿੱਧੀ ਲਾਈਨ ਬਹੁਤ ਸਾਰੇ ਛੋਟੇ ਡਾਟਾ ਪੁਆਇੰਟਾਂ ਵਿੱਚੋਂ ਲੰਘ ਰਹੀ ਹੈ, ਪਰ ਇਹ ਸਹੀ-ਸਹੀ ਕੀ ਕਰ ਰਹੀ ਹੈ? ਕੀ ਤੁਸੀਂ ਵੇਖ ਸਕਦੇ ਹੋ ਕਿ ਤੁਸੀਂ ਇਸ ਲਾਈਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕਿਸੇ ਨਵੇਂ, ਅਣਦੇਖੇ ਡਾਟਾ ਪੁਆਇੰਟ ਦੀ ਪੋਜ਼ਿਸ਼ਨ ਪਲੌਟ ਦੇ y ਅਕਸੋਂ ਦੇ ਸਬੰਧ ਵਿੱਚ ਕਿਵੇਂ ਪਤਾ ਕਰ ਸਕਦੇ ਹੋ? ਇਸ ਮਾਡਲ ਦੇ ਵਿਆਵਹਾਰਿਕ ਉਪਯੋਗ ਨੂੰ ਸ਼ਬਦਾਂ ਵਿੱਚ ਵਿਆਖਿਆ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ।
+
+ਮੁਬਾਰਕਾਂ ਹੋ, ਤੁਸੀਂ ਆਪਣਾ ਪਹਿਲਾ ਲੀਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲ ਤਿਆਰ ਕੀਤਾ, ਇਸ ਨਾਲ ਇੱਕ ਪੂਰਵ ਆਨੁਮਾਨ ਬਣਾਇਆ, ਅਤੇ ਇਸਨੂੰ ਇੱਕ ਪਲੌਟ ਵਿੱਚ ਦਰਸਾਇਆ!
---
## 🚀ਚੁਣੌਤੀ
-ਇਸ ਡਾਟਾਸੈਟ ਵਿੱਚੋਂ ਇੱਕ ਵੱਖਰਾ ਵੈਰੀਏਬਲ ਪਲਾਟ ਕਰੋ। ਸੰਕੇਤ: ਇਸ ਲਾਈਨ ਨੂੰ ਸੋਧੋ: `X = X[:,2]`। ਇਸ ਡਾਟਾਸੈਟ ਦੇ ਟਾਰਗੇਟ ਨੂੰ ਦੇਖਦੇ ਹੋਏ, ਤੁਸੀਂ ਸ਼ੂਗਰ ਦੀ ਬਿਮਾਰੀ ਦੇ ਵਿਕਾਸ ਬਾਰੇ ਕੀ ਪਤਾ ਲਗਾ ਸਕਦੇ ਹੋ?
-
-## [ਪੋਸਟ-ਲੈਕਚਰ ਕਵਿਜ਼](https://ff-quizzes.netlify.app/en/ml/)
+ਇਸ ਡਾਟਾਸੇਟ ਤੋਂ ਇੱਕ ਵੱਖਰਾ ਵੇਰੀਏਬਲ ਪਲੌਟ ਕਰੋ। ਸੁਝਾਅ: ਇਸ ਲਾਈਨ ਨੂੰ ਸੋਧੋ: `X = X[:,2]`। ਇਸ ਡਾਟਾਸੇਟ ਦੇ ਟਾਰਗਟ ਨੂੰ ਦੇਖਦਿਆਂ, ਤੁਸੀਂ ਮਧੁਮੇਹ ਦੇ ਬਿਮਾਰੀ ਵਜੋਂ ਪ੍ਰਗਟਾਵੇ ਬਾਰੇ ਕੀ ਜਾਣ ਸਕਦੇ ਹੋ?
+## [ਪੋਸਟ-ਲੇਕਚਰ ਕੁਇਜ਼](https://ff-quizzes.netlify.app/en/ml/)
-## ਸਮੀਖਿਆ ਅਤੇ ਖੁਦ ਅਧਿਐਨ
+## ਸਮੀਖਿਆ ਅਤੇ ਸਵੈ-ਅਧਿਆਇ
-ਇਸ ਟਿਊਟੋਰੀਅਲ ਵਿੱਚ, ਤੁਸੀਂ ਸਧਾਰਨ ਲੀਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਨਾਲ ਕੰਮ ਕੀਤਾ, ਨਾ ਕਿ ਯੂਨੀਵੈਰੀਏਟ ਜਾਂ ਮਲਟੀਪਲ ਲੀਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਨਾਲ। ਇਹਨਾਂ ਤਰੀਕਿਆਂ ਦੇ ਵਿਚਕਾਰ ਅੰਤਰਾਂ ਬਾਰੇ ਕੁਝ ਪੜ੍ਹੋ, ਜਾਂ [ਇਹ ਵੀਡੀਓ](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) ਵੇਖੋ।
+ਇਸ ਟਿਊਟੋਰਿਯਲ ਵਿੱਚ, ਤੁਸੀਂ ਸਧਾਰਣ ਲੀਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਨਾਲ ਕੰਮ ਕੀਤਾ, ਦੇਸ਼ਵਾਰੀ ਜਾਂ ਬਹੁ-ਰੀਲੀਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਨਾਲ ਨਹੀਂ। ਇਨ੍ਹਾਂ ਤਰੀਕਿਆਂ ਵਿੱਚ ਫਰਕ ਬਾਰੇ ਥੋੜ੍ਹੀ ਗੱਲ ਪੜ੍ਹੋ, ਜਾਂ [ਇਸ ਵੀਡੀਓ](https://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) ਲਓ।
+ਰਿਗ੍ਰੈਸ਼ਨ ਧਾਰਨਾ ਬਾਰੇ ਹੋਰ ਪੜ੍ਹੋ ਅਤੇ ਸੋਚੋ ਕਿ ਇਸ ਤਕਨੀਕ ਨਾਲ ਕਿਸ ਕਿਸਮ ਦੇ ਪ੍ਰਸ਼ਨਾਂ ਦੇ ਜਵਾਬ ਦਿੱਤੇ ਜਾ ਸਕਦੇ ਹਨ। ਆਪਣੀ ਸਮਝ ਨੂੰ ਵਧਾਉਣ ਲਈ ਇਸ [ਟਿਊਟੋਰਿਯਲ](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) ਨੂੰ ਲੋ।
## ਅਸਾਈਨਮੈਂਟ
-[ਇੱਕ ਵੱਖਰਾ ਡਾਟਾਸੈਟ](assignment.md)
+[ਇੱਕ ਵੱਖਰਾ ਡਾਟਾਸੇਟ](assignment.md)
---
-**ਅਸਵੀਕਤੀ**:
-ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦੀ ਪੂਰੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਚੱਜੇਪਣ ਹੋ ਸਕਦੇ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਇਸਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ।
\ No newline at end of file
+
+**ਅਸਵੀਕਾਰੋਪਣ**:
+ਇਸ ਦਸਤਾਵੇਜ਼ ਦਾ ਅਨੁਵਾਦ ਏਆਈ ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀਤਾਵਾਂ ਲਈ ਯਤਨਸ਼ੀਲ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਰੱਖੋ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸਮੱਤਿਆਵਾਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਆਪਣੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਕ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਜਰੂਰੀ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫ਼ਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਅਸੀਂ ਇਸ ਅਨੁਵਾਦ ਦੇ ਉਪਯੋਗ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੀਆਂ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀਆਂ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆਵਾਂ ਲਈ ਜਵਾਬਦੇਹ ਨਹੀਂ ਹਾਂ।
+
\ No newline at end of file
diff --git a/translations/pa/2-Regression/2-Data/README.md b/translations/pa/2-Regression/2-Data/README.md
index d2d0ab403..70eead06e 100644
--- a/translations/pa/2-Regression/2-Data/README.md
+++ b/translations/pa/2-Regression/2-Data/README.md
@@ -1,62 +1,62 @@
-# ਸਕਾਈਟ-ਲਰਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲ ਬਣਾਉਣਾ: ਡਾਟਾ ਤਿਆਰ ਕਰਨਾ ਅਤੇ ਵਿਜੁਅਲਾਈਜ਼ ਕਰਨਾ
+# Scikit-learn ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇੱਕ ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲ ਬਣਾਓ: ਡਾਟਾ ਤਿਆਰ ਕਰੋ ਅਤੇ ਦ੍ਰਿਸ਼ਟੀਕਰਨ ਕਰੋ
-
+
-ਇਨਫੋਗ੍ਰਾਫਿਕ [ਦਸਾਨੀ ਮਾਡੀਪੱਲੀ](https://twitter.com/dasani_decoded) ਦੁਆਰਾ
+ਇਨਫੋਗ੍ਰਾਫਿਕ [Dasani Madipalli](https://twitter.com/dasani_decoded) ਦੁਆਰਾ
-## [ਪ੍ਰੀ-ਲੈਕਚਰ ਕਵਿਜ਼](https://ff-quizzes.netlify.app/en/ml/)
+## [ਪੂਰਵ-ਲੈਕਚਰ ਕਵੀਜ਼](https://ff-quizzes.netlify.app/en/ml/)
-> ### [ਇਹ ਪਾਠ ਰ ਵਿੱਚ ਉਪਲਬਧ ਹੈ!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
+> ### [ਇਹ ਪਾਠ R ਵਿੱਚ ਉਪਲਬਧ ਹੈ!](../../../../2-Regression/2-Data/solution/R/lesson_2.html)
-## ਤਾਰਫ਼
+## ਪਰਿਚਯ
-ਹੁਣ ਜਦੋਂ ਤੁਹਾਡੇ ਕੋਲ ਸਕਾਈਟ-ਲਰਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਮਾਡਲ ਬਣਾਉਣ ਲਈ ਜ਼ਰੂਰੀ ਸੰਦ ਹਨ, ਤੁਸੀਂ ਆਪਣੇ ਡਾਟਾ ਤੋਂ ਸਵਾਲ ਪੁੱਛਣ ਲਈ ਤਿਆਰ ਹੋ। ਜਦੋਂ ਤੁਸੀਂ ਡਾਟਾ ਨਾਲ ਕੰਮ ਕਰਦੇ ਹੋ ਅਤੇ ML ਹੱਲ ਲਾਗੂ ਕਰਦੇ ਹੋ, ਇਹ ਸਮਝਣਾ ਬਹੁਤ ਜ਼ਰੂਰੀ ਹੈ ਕਿ ਸਹੀ ਸਵਾਲ ਕਿਵੇਂ ਪੁੱਛਣਾ ਹੈ ਤਾਂ ਜੋ ਆਪਣੇ ਡਾਟਾਸੈੱਟ ਦੀ ਸੰਭਾਵਨਾਵਾਂ ਨੂੰ ਸਹੀ ਤਰੀਕੇ ਨਾਲ ਖੋਲ੍ਹਿਆ ਜਾ ਸਕੇ।
+ਹੁਣ ਜਦ ਤੁਸੀਂ Scikit-learn ਨਾਲ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਮਾਡਲ ਬਣਾਉਣ ਦੀ ਸ਼ੁਰੂਆਤ ਕਰਨ ਲਈ ਜ਼ਰੂਰੀ ਸਾਧਨਾਂ ਨਾਲ ਤਿਆਰ ਹੋ, ਤਾਂ ਤੁਸੀਂ ਆਪਣੇ ਡਾਟਾ ਨੂੰ ਲੈ ਕੇ ਸਵਾਲ ਪੁੱਛਣ ਲਈ ਤਿਆਰ ਹੋ। ਜਦ ਤੁਸੀਂ ਡਾਟਾ ਨਾਲ ਕੰਮ ਕਰਦੇ ਹੋ ਅਤੇ ML ਹੱਲ ਲੱਗਦੇ ਹੋ, ਤਾਂ ਇਹ ਬਹੁਤ ਜ਼ਰੂਰੀ ਹੈ ਕਿ ਤੁਸੀਂ ਆਪਣੇ ਡਾਟਾ ਸੈਟ ਦੀ ਸੰਭਾਵਨਾਵਾਂ ਨੂੰ ਠੀਕ ਤਰੀਕੇ ਨਾਲ ਖੋਲ੍ਹਣ ਲਈ ਸਹੀ ਸਵਾਲ ਕਿਵੇਂ ਪੁੱਛਣਾ ਹੈ ਸਮਝੋ।
ਇਸ ਪਾਠ ਵਿੱਚ, ਤੁਸੀਂ ਸਿੱਖੋਗੇ:
-- ਮਾਡਲ-ਬਿਲਡਿੰਗ ਲਈ ਆਪਣੇ ਡਾਟਾ ਨੂੰ ਕਿਵੇਂ ਤਿਆਰ ਕਰਨਾ ਹੈ।
-- ਡਾਟਾ ਵਿਜੁਅਲਾਈਜ਼ੇਸ਼ਨ ਲਈ ਮੈਟਪਲਾਟਲਿਬ ਦੀ ਵਰਤੋਂ ਕਿਵੇਂ ਕਰਨੀ ਹੈ।
+- ਮਾਡਲ ਬਣਾਉਣ ਲਈ ਆਪਣਾ ਡਾਟਾ ਕਿਵੇਂ ਤਿਆਰ ਕਰਨਾ ਹੈ।
+- ਡਾਟਾ ਦ੍ਰਿਸ਼ਟੀਕਰਨ ਲਈ Matplotlib ਦਾ ਵਰਤੋਂ ਕਿਵੇਂ ਕਰਨੀ ਹੈ।
+- ਹੋਰ ਪ੍ਰਗਟਵਾਦੀ ਡਾਟਾ ਦ੍ਰਿਸ਼ਟੀਕਰਨ ਲਈ Seaborn ਦੀ ਵਰਤੋਂ ਕਿਵੇਂ ਕਰਨੀ ਹੈ।
-## ਆਪਣੇ ਡਾਟਾ ਤੋਂ ਸਹੀ ਸਵਾਲ ਪੁੱਛਣਾ
+## ਆਪਣੇ ਡਾਟਾ ਤੋਂ ਸਹੀ ਸਵਾਲ ਪੁਛਣਾ
-ਜਿਸ ਸਵਾਲ ਦਾ ਤੁਹਾਨੂੰ ਜਵਾਬ ਚਾਹੀਦਾ ਹੈ, ਉਹ ਨਿਰਧਾਰਤ ਕਰੇਗਾ ਕਿ ਤੁਸੀਂ ਕਿਹੜੇ ਕਿਸਮ ਦੇ ML ਐਲਗੋਰਿਦਮ ਦੀ ਵਰਤੋਂ ਕਰੋਗੇ। ਅਤੇ ਤੁਹਾਨੂੰ ਵਾਪਸ ਮਿਲਣ ਵਾਲੇ ਜਵਾਬ ਦੀ ਗੁਣਵੱਤਾ ਤੁਹਾਡੇ ਡਾਟਾ ਦੀ ਪ੍ਰਕਿਰਤੀ 'ਤੇ ਬਹੁਤ ਨਿਰਭਰ ਕਰੇਗੀ।
+ਤੁਹਾਨੂੰ ਜਿਸ ਸਵਾਲ ਦਾ ਜਵਾਬ ਚਾਹੀਦਾ ਹੈ, ਉਹ ਇਸ ਗੱਲ ਦਾ ਨਿਰਣੇ ਕਰੇਗਾ ਕਿ ਤੁਸੀਂ ਕਿਸ ਕਿਸਮ ਦੇ ML ਅਲਗੋਰਿਥਮ ਵਰਤੋਂਗੇ। ਅਤੇ ਤੁਹਾਨੂੰ ਮਿਲਣ ਵਾਲੇ ਜਵਾਬ ਦੀ ਗੁਣਵੱਤਾ ਤੁਹਾਡੇ ਡਾਟਾ ਦੀ ਪ੍ਰਕਿਰਤੀ 'ਤੇ ਬਹੁਤ ਨਿਰਭਰ ਕਰੇਗੀ।
-ਇਸ ਪਾਠ ਲਈ ਦਿੱਤੇ [ਡਾਟਾ](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) ਨੂੰ ਵੇਖੋ। ਤੁਸੀਂ ਇਸ .csv ਫਾਈਲ ਨੂੰ VS ਕੋਡ ਵਿੱਚ ਖੋਲ੍ਹ ਸਕਦੇ ਹੋ। ਇੱਕ ਛੋਟਾ ਜਿਹਾ ਜਾਇਜ਼ਾ ਲੈਣ 'ਤੇ ਤੁਰੰਤ ਪਤਾ ਲੱਗਦਾ ਹੈ ਕਿ ਇਸ ਵਿੱਚ ਖਾਲੀ ਜਗ੍ਹਾ ਅਤੇ ਸਤਰਾਂ ਅਤੇ ਗਿਣਤੀ ਡਾਟਾ ਦਾ ਮਿਸ਼ਰਣ ਹੈ। ਇੱਥੇ ਇੱਕ ਅਜੀਬ ਕਾਲਮ 'ਪੈਕੇਜ' ਹੈ ਜਿੱਥੇ ਡਾਟਾ 'ਸੈਕਸ', 'ਬਿਨ' ਅਤੇ ਹੋਰ ਮੁੱਲਾਂ ਦੇ ਮਿਸ਼ਰਣ ਵਿੱਚ ਹੈ। ਡਾਟਾ, ਦਰਅਸਲ, ਕੁਝ ਗੜਬੜ ਹੈ।
+ਇਸ ਪਾਠ ਵਿੱਚ ਦਿੱਤਾ ਗਿਆ [ਡਾਟਾ](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) ਵੇਖੋ। ਤੁਸੀਂ ਇਹ .csv ਫਾਈਲ VS ਕੋਡ ਵਿੱਚ ਖੋਲ੍ਹ ਸਕਦੇ ਹੋ। ਇੱਕ ਛੇਤੀ ਜ਼ਾਚ ਵਿਚ ਤੁਰੰਤ ਦਿਖਾਈ देता ਹੈ ਕਿ ਕੁਝ ਖਾਲੀ ਥਾਂਵਾਂ ਹਨ ਅਤੇ ਸਤਰਾਂ ਅਤੇ ਅੰਕੜਿਆਂ ਦਾ ਮਿਲਾਪ ਹੈ। ਇਕ ਅਜੀਬ ਕਾਲਮ 'Package' ਵੀ ਹੈ ਜਿੱਥੇ ਡਾਟਾ 'sacks', 'bins' ਅਤੇ ਹੋਰ ਮੁੱਲਾਂ ਵਿੱਚ ਮਿਲਾ-ਜੁਲਾ ਹੈ। ਹਕੀਕਤ ਵਿੱਚ, ਇਹ ਡਾਟਾ ਕੁਝ ਵਿਗੜਿਆ ਹੋਇਆ ਹੈ।
-[](https://youtu.be/5qGjczWTrDQ "ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਲਈ ਸ਼ੁਰੂਆਤੀ - ਡਾਟਾਸੈੱਟ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਅਤੇ ਸਫਾਈ ਕਿਵੇਂ ਕਰਨੀ ਹੈ")
+[](https://youtu.be/5qGjczWTrDQ "ਆਰੰਭਕਾਂ ਲਈ ਐਮ ਐਲ - ਡਾਟਾ ਸਾਫ਼-ਸਫਾਈ ਅਤੇ ਵਿਸ਼ਲੇਸ਼ਣ ਕਿਵੇਂ ਕਰੀਏ")
-> 🎥 ਉੱਪਰ ਦਿੱਤੀ ਤਸਵੀਰ 'ਤੇ ਕਲਿਕ ਕਰੋ ਇਸ ਪਾਠ ਲਈ ਡਾਟਾ ਤਿਆਰ ਕਰਨ ਦੀ ਪ੍ਰਕਿਰਿਆ ਦੇਖਣ ਲਈ ਇੱਕ ਛੋਟਾ ਵੀਡੀਓ।
+> 🎥 ਇਸ ਪਾਠ ਲਈ ਡਾਟਾ ਤਿਆਰ ਕਰਨ ਲਈ ਇੱਕ ਛੋਟੀ ਵੀਡੀਓ ਦੇਖਣ ਲਈ ਉਪਰ ਦਿੱਤੀ ਚਿੱਤਰ 'ਤੇ ਕਲਿੱਕ ਕਰੋ।
-ਅਸਲ ਵਿੱਚ, ਇਹ ਬਹੁਤ ਆਮ ਨਹੀਂ ਹੈ ਕਿ ਤੁਹਾਨੂੰ ਇੱਕ ਡਾਟਾਸੈੱਟ ਮਿਲੇ ਜੋ ਬਾਕਸ ਤੋਂ ਬਾਹਰ ਇੱਕ ML ਮਾਡਲ ਬਣਾਉਣ ਲਈ ਪੂਰੀ ਤਰ੍ਹਾਂ ਤਿਆਰ ਹੋ। ਇਸ ਪਾਠ ਵਿੱਚ, ਤੁਸੀਂ ਸਿੱਖੋਗੇ ਕਿ ਮਿਆਰੀ ਪਾਈਥਨ ਲਾਇਬ੍ਰੇਰੀਆਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕੱਚੇ ਡਾਟਾ ਨੂੰ ਕਿਵੇਂ ਤਿਆਰ ਕਰਨਾ ਹੈ। ਤੁਸੀਂ ਡਾਟਾ ਨੂੰ ਵਿਜੁਅਲਾਈਜ਼ ਕਰਨ ਦੇ ਵੱਖ-ਵੱਖ ਤਰੀਕੇ ਵੀ ਸਿੱਖੋਗੇ।
+ਹਕੀਕਤ ਵਿੱਚ, ਇੱਕ ਡਾਟਾਸੈੱਟ ਜੋ ਬਿਨਾ ਕਿਸੇ ਤਿਆਰੀ ਦੇ ਸਿੱਧਾ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਮਾਡਲ ਬਣਾਉਣ ਲਈ ਤਿਆਰ ਦਿੱਤਾ ਜਾਵੇ, ਇਹ ਬਹੁਤ ਅਸਧਾਰਣ ਹੈ। ਇਸ ਪਾਠ ਵਿੱਚ, ਤੁਸੀਂ ਸਟੈਂਡਰਡ ਪਾਇਥਨ ਲਾਇਬ੍ਰੇਰੀਜ਼ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕੱਚੇ ਡਾਟਾ ਨੂੰ ਤਿਆਰ ਕਰਨਾ ਸਿੱਖੋਗੇ। ਤੁਸੀਂ ਡਾਟਾ ਨੂੰ ਦ੍ਰਿਸ਼ਟੀਗ੍ਰਹਣ ਕਰਨ ਲਈ ਵੱਖ-ਵੱਖ ਤਕਨੀਕਾਂ ਵੀ ਸਿੱਖੋਗੇ।
-## ਕੇਸ ਸਟਡੀ: 'ਕੱਦੂ ਦਾ ਬਾਜ਼ਾਰ'
+## ਕੇਸ ਅਧਿਐਨ: 'ਕੁੱਕੜੀ ਮੰਡੀ'
-ਇਸ ਫੋਲਡਰ ਵਿੱਚ ਤੁਹਾਨੂੰ ਰੂਟ `data` ਫੋਲਡਰ ਵਿੱਚ ਇੱਕ .csv ਫਾਈਲ ਮਿਲੇਗੀ ਜਿਸਦਾ ਨਾਮ [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) ਹੈ, ਜਿਸ ਵਿੱਚ ਕੱਦੂ ਦੇ ਬਾਜ਼ਾਰ ਬਾਰੇ 1757 ਲਾਈਨਾਂ ਦਾ ਡਾਟਾ ਸ਼ਾਮਲ ਹੈ, ਜੋ ਸ਼ਹਿਰਾਂ ਦੁਆਰਾ ਸਮੂਹਬੱਧ ਹੈ। ਇਹ ਕੱਚਾ ਡਾਟਾ [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) ਤੋਂ ਪ੍ਰਾਪਤ ਕੀਤਾ ਗਿਆ ਹੈ, ਜੋ ਸੰਯੁਕਤ ਰਾਜ ਦੇ ਖੇਤੀਬਾੜੀ ਵਿਭਾਗ ਦੁਆਰਾ ਵੰਡਿਆ ਜਾਂਦਾ ਹੈ।
+ਇਸ ਫੋਲਡਰ ਵਿੱਚ ਤੁਹਾਨੂੰ ਰੂਟ `data` ਫੋਲਡਰ ਵਿੱਚ ਸਥਿਤ [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) ਨਾਂ ਦੀ ਇੱਕ .csv ਫਾਈਲ ਮਿਲੇਗੀ ਜਿਸ ਵਿੱਚ 1757 ਲਾਈਨਾਂ ਪੰਪਕਿੰਨ ਮਾਰਕੀਟ ਬਾਰੇ ਡਾਟਾ ਹੈ, ਜੋ ਸ਼ਹਿਰਾਂ ਅਨੁਸਾਰ ਸਮੂਹਬੱਧ ਹੈ। ਇਹ ਇੱਕ ਕੱਚਾ ਡਾਟਾ ਹੈ ਜੋ [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) ਤੋਂ ਬਾਹਰ ਕੱਢਿਆ ਗਿਆ ਹੈ ਜੋ ਸੰਯੁਕਤ ਰਾਜ ਅਮਰੀਕਾ ਦੇ ਖੇਤੀਬਾੜੀ ਵਿਭਾਗ ਵੱਲੋਂ ਵੰਡਿਆ ਜਾਂਦਾ ਹੈ।
### ਡਾਟਾ ਤਿਆਰ ਕਰਨਾ
-ਇਹ ਡਾਟਾ ਪਬਲਿਕ ਡੋਮੇਨ ਵਿੱਚ ਹੈ। ਇਸਨੂੰ USDA ਵੈਬਸਾਈਟ ਤੋਂ ਵੱਖ-ਵੱਖ ਸ਼ਹਿਰਾਂ ਦੇ ਅਲੱਗ-ਅਲੱਗ ਫਾਈਲਾਂ ਵਿੱਚ ਡਾਊਨਲੋਡ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਬਹੁਤ ਸਾਰੀਆਂ ਵੱਖ-ਵੱਖ ਫਾਈਲਾਂ ਤੋਂ ਬਚਣ ਲਈ, ਅਸੀਂ ਸਾਰੇ ਸ਼ਹਿਰਾਂ ਦੇ ਡਾਟਾ ਨੂੰ ਇੱਕ ਸਪ੍ਰੈਡਸ਼ੀਟ ਵਿੱਚ ਜੋੜ ਦਿੱਤਾ ਹੈ, ਇਸ ਤਰ੍ਹਾਂ ਅਸੀਂ ਪਹਿਲਾਂ ਹੀ ਡਾਟਾ ਨੂੰ ਕੁਝ ਹੱਦ ਤੱਕ _ਤਿਆਰ_ ਕਰ ਦਿੱਤਾ ਹੈ। ਹੁਣ, ਆਓ ਡਾਟਾ ਨੂੰ ਧਿਆਨ ਨਾਲ ਵੇਖੀਏ।
+ਇਹ ਡਾਟਾ ਜਨਤਕ ਡੋਮੇਨ ਵਿੱਚ ਹੈ। ਇਹ USDA ਵੈੱਬਸਾਈਟ ਤੋਂ ਸ਼ਹਿਰ ਅਨੁਸਾਰ ਕਈ ਵੱਖਰੇ ਫਾਈਲਾਂ ਵਿੱਚ ਡਾਊਨਲੋਡ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਬਹੁਤ ਸਾਰੇ ਵੱਖਰੇ ਫਾਈਲਾਂ ਤੋਂ ਬਚਣ ਲਈ, ਅਸੀਂ ਸਾਰੇ ਸ਼ਹਿਰਾਂ ਦਾ ਡਾਟਾ ਇੱਕ ਸਪ੍ਰੈਡਸ਼ੀਟ ਵਿੱਚ ਜੋੜ ਦਿੱਤਾ ਹੈ, ਇਸ ਤਰ੍ਹਾਂ ਅਸੀਂ ਕੁਝ ਡਾਟਾ ਪਹਿਲਾਂ ਹੀ _ਤਿਆਰ_ ਕਰ ਦਿੱਤਾ ਹੈ। ਅਗਲੇ, ਡਾਟਾ 'ਤੇ ਹੋਰ ਧਿਆਨ ਨਾਲ ਨਜ਼ਰ ਮਾਰਦੇ ਹਾਂ।
-### ਕੱਦੂ ਦਾ ਡਾਟਾ - ਸ਼ੁਰੂਆਤੀ ਨਤੀਜੇ
+### ਕਦੂ ਦਾ ਡਾਟਾ - ਸ਼ੁਰੂਆਤੀ ਨਤੀਜੇ
-ਤੁਸੀਂ ਇਸ ਡਾਟਾ ਬਾਰੇ ਕੀ ਧਿਆਨ ਦਿੰਦੇ ਹੋ? ਤੁਸੀਂ ਪਹਿਲਾਂ ਹੀ ਦੇਖਿਆ ਕਿ ਸਤਰਾਂ, ਗਿਣਤੀ, ਖਾਲੀ ਜਗ੍ਹਾ ਅਤੇ ਅਜੀਬ ਮੁੱਲਾਂ ਦਾ ਮਿਸ਼ਰਣ ਹੈ ਜਿਸਨੂੰ ਤੁਹਾਨੂੰ ਸਮਝਣਾ ਪਵੇਗਾ।
+ਤੁਸੀਂ ਇਸ ਡਾਟੇ ਬਾਰੇ ਕੀ ਧਿਆਨ ਦਿੱਤਾ? ਤੁਸੀਂ ਪਹਿਲਾਂ ਹੀ ਵੇਖਿਆ ਕਿ ਇਹ ਵਿੱਚ ਸਤਰਾਂ, ਅੰਕੜੇ, ਖਾਲੀ ਥਾਂ ਅਤੇ ਅਜੀਬ ਮੁੱਲਾਂ ਦਾ ਮਿਲਾਪ ਹੈ ਜਿਨ੍ਹਾਂ ਨੂੰ ਤੁਸੀਂ ਸਮਝਣਾ ਹੈ।
-ਤੁਸੀਂ ਰਿਗ੍ਰੈਸ਼ਨ ਤਕਨੀਕ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇਸ ਡਾਟਾ ਤੋਂ ਕਿਹੜਾ ਸਵਾਲ ਪੁੱਛ ਸਕਦੇ ਹੋ? ਜਿਵੇਂ ਕਿ "ਕੱਦੂ ਦੀ ਕੀਮਤ ਦੀ ਪੇਸ਼ਗੋਈ ਕਰੋ ਜੋ ਕਿਸੇ ਦਿੱਤੇ ਮਹੀਨੇ ਦੌਰਾਨ ਵਿਕਰੀ ਲਈ ਉਪਲਬਧ ਹੈ।" ਡਾਟਾ ਨੂੰ ਦੁਬਾਰਾ ਵੇਖਦੇ ਹੋਏ, ਤੁਹਾਨੂੰ ਟਾਸਕ ਲਈ ਜ਼ਰੂਰੀ ਡਾਟਾ ਸਟ੍ਰਕਚਰ ਬਣਾਉਣ ਲਈ ਕੁਝ ਬਦਲਾਅ ਕਰਨੇ ਪੈਣਗੇ।
+ਤੁਸੀਂ ਇਸ ਡਾਟੇ ਤੋਂ Regression ਤਕਨੀਕ ਵਰਤ ਕੇ ਕਿਹੜਾ ਸਵਾਲ ਪੁੱਛ ਸਕਦੇ ਹੋ? ਕੀ "ਇੱਕ ਦਿੱਤੇ ਮਹੀਨੇ ਦੌਰਾਨ ਵਿਕਰੀ ਲਈ ਕਦੂ ਦੀ ਕੀਮਤ ਦੀ ਪੇਸ਼ਗੋਈ" ਬਾਰੇ ਸੋਚਿਆ ਜਾ ਸਕਦਾ ਹੈ? ਡਾਟੇ ਨੂੰ ਦੁਬਾਰਾ ਵੇਖਦੇ ਹੋਏ, ਕੁਝ ਬਦਲਾਅ ਕਰਨੇ ਪੈਣਗੇ ਤਾਂ ਜੋ ਕਾਰਜ ਲਈ ਡਾਟਾ ਢਾਂਚਾ ਬਣਾਇਆ ਜਾ ਸਕੇ।
+## ਅਭਿਆਸ - ਕਦੂ ਦੇ ਡਾਟੇ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰੋ
-## ਅਭਿਆਸ - ਕੱਦੂ ਦੇ ਡਾਟਾ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰੋ
+ਚਲੋ, [Pandas](https://pandas.pydata.org/) (ਜੋ `Python Data Analysis` ਦਾ ਸੰਕੇਤ ਹੈ) ਇਕ ਟੂਲ ਜੋ ਡਾਟੇ ਨੂੰ ਗਠਿਤ ਕਰਨ ਲਈ ਬਹੁਤ ਲਾਭਦਾਇਕ ਹੈ ਵਰਤ ਕੇ ਕਦੂ ਦੇ ਡਾਟੇ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਅਤੇ ਤਿਆਰੀ ਕਰੀਏ।
-ਆਓ [Pandas](https://pandas.pydata.org/) ਦੀ ਵਰਤੋਂ ਕਰੀਏ, (ਇਸਦਾ ਨਾਮ `Python Data Analysis` ਲਈ ਹੈ) ਜੋ ਡਾਟਾ ਨੂੰ ਸ਼ੇਪ ਕਰਨ ਲਈ ਬਹੁਤ ਹੀ ਲਾਭਦਾਇਕ ਸੰਦ ਹੈ, ਕੱਦੂ ਦੇ ਡਾਟਾ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਅਤੇ ਤਿਆਰੀ ਕਰਨ ਲਈ।
+### ਸਭ ਤੋਂ ਪਹਿਲਾਂ, ਗੁੰਮ ਸ਼ੁਦ dates ਦੀ ਜਾਂਚ ਕਰੋ
-### ਪਹਿਲਾਂ, ਗੁੰਮ ਹੋਈਆਂ ਤਾਰੀਖਾਂ ਦੀ ਜਾਂਚ ਕਰੋ
+ਤੁਹਾਨੂੰ ਸਭ ਤੋਂ ਪਹਿਲਾਂ ਗੁੰਮ ਸ਼ੁਦ dates ਨੂੰ ਜਾਂਚਣ ਲਈ ਕਦਮ ਚੁੱਕਣੇ ਹੋਣਗੇ:
-ਤੁਹਾਨੂੰ ਪਹਿਲਾਂ ਇਹ ਜਾਂਚਣ ਲਈ ਕਦਮ ਲੈਣੇ ਪੈਣਗੇ ਕਿ ਕੀ ਤਾਰੀਖਾਂ ਗੁੰਮ ਹਨ:
+1. ਤਾਰੀਖ਼ਾਂ ਨੂੰ ਮਹੀਨੇ ਦੇ ਫਾਰਮੈਟ ਵਿੱਚ ਬਦਲੋ (ਇਹ US ਦੀਆਂ ਤਾਰੀਖਾਂ ਹਨ, ਇਸ ਲਈ ਫਾਰਮੈਟ `MM/DD/YYYY` ਹੈ)।
+2. ਮਹੀਨਾ ਨਵੀਂ ਕਾਲਮ ਵਿੱਚ ਕੱਢੋ।
-1. ਤਾਰੀਖਾਂ ਨੂੰ ਮਹੀਨੇ ਦੇ ਫਾਰਮੈਟ ਵਿੱਚ ਬਦਲੋ (ਇਹ US ਤਾਰੀਖਾਂ ਹਨ, ਇਸ ਲਈ ਫਾਰਮੈਟ `MM/DD/YYYY` ਹੈ)।
-2. ਮਹੀਨੇ ਨੂੰ ਇੱਕ ਨਵੇਂ ਕਾਲਮ ਵਿੱਚ ਕੱਢੋ।
+_notebook.ipynb_ ਫਾਈਲ ਨੂੰ Visual Studio Code ਵਿੱਚ ਖੋਲ੍ਹੋ ਅਤੇ ਸਪ੍ਰੈਡਸ਼ੀਟ ਨੂੰ ਨਵੀਂ Pandas ਡਾਟਾਫਰੇਮ ਵਿੱਚ ਇੰਪੋਰਟ ਕਰੋ।
-_ਨੋਟਬੁੱਕ.ipynb_ ਫਾਈਲ ਨੂੰ Visual Studio Code ਵਿੱਚ ਖੋਲ੍ਹੋ ਅਤੇ ਸਪ੍ਰੈਡਸ਼ੀਟ ਨੂੰ ਇੱਕ ਨਵੇਂ Pandas ਡਾਟਾਫਰੇਮ ਵਿੱਚ ਇੰਪੋਰਟ ਕਰੋ।
-
-1. ਪਹਿਲੀਆਂ ਪੰਜ ਲਾਈਨਾਂ ਦੇਖਣ ਲਈ `head()` ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰੋ।
+1. ਪਹਿਲੇ ਪੰਜ ਕਤਾਰਾਂ ਦੇਖਣ ਲਈ `head()` ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰੋ।
```python
import pandas as pd
@@ -64,30 +64,30 @@ _ਨੋਟਬੁੱਕ.ipynb_ ਫਾਈਲ ਨੂੰ Visual Studio Code ਵਿ
pumpkins.head()
```
- ✅ ਤੁਸੀਂ ਪਿਛਲੀਆਂ ਪੰਜ ਲਾਈਨਾਂ ਦੇਖਣ ਲਈ ਕਿਹੜੇ ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰੋਗੇ?
+ ✅ ਪਿਛਲੇ ਪੰਜ ਕਤਾਰਾਂ ਦੇਖਣ ਲਈ ਤੁਸੀਂ ਕਿਹੜਾ ਫੰਕਸ਼ਨ ਵਰਤੋਂਗੇ?
-1. ਮੌਜੂਦਾ ਡਾਟਾਫਰੇਮ ਵਿੱਚ ਗੁੰਮ ਹੋਏ ਡਾਟਾ ਦੀ ਜਾਂਚ ਕਰੋ:
+1. ਇਹ ਵੀ ਜਾਂਚੋ ਕਿ ਮੌਜੂਦਾ ਡਾਟਾਫਰੇਮ ਵਿੱਚ ਕੋਈ ਗੁੰਮ ਡਾਟਾ ਹੈ ਜਾਂ ਨਹੀਂ:
```python
pumpkins.isnull().sum()
```
- ਗੁੰਮ ਹੋਇਆ ਡਾਟਾ ਹੈ, ਪਰ ਸ਼ਾਇਦ ਇਹ ਟਾਸਕ ਲਈ ਮਹੱਤਵਪੂਰਨ ਨਹੀਂ ਹੋਵੇਗਾ।
+ ਕੁਝ ਡਾਟਾ ਗੁੰਮ ਹੈ, ਪਰ ਸ਼ਾਇਦ ਇਹ ਕਾਰਜ ਲਈ ਮਹੱਤਵਪੂਰਨ ਨਾਹ ਹੋਵੇ।
-1. ਆਪਣੇ ਡਾਟਾਫਰੇਮ ਨੂੰ ਕੰਮ ਕਰਨ ਲਈ ਆਸਾਨ ਬਣਾਉਣ ਲਈ, ਸਿਰਫ਼ ਜ਼ਰੂਰੀ ਕਾਲਮ ਚੁਣੋ, `loc` ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਜੋ ਮੂਲ ਡਾਟਾਫਰੇਮ ਤੋਂ ਲਾਈਨਾਂ (ਪਹਿਲੇ ਪੈਰਾਮੀਟਰ ਵਜੋਂ ਪਾਸ ਕੀਤੀ ਗਈ) ਅਤੇ ਕਾਲਮ (ਦੂਜੇ ਪੈਰਾਮੀਟਰ ਵਜੋਂ ਪਾਸ ਕੀਤੀ ਗਈ) ਨੂੰ ਕੱਢਦਾ ਹੈ। ਹੇਠਾਂ ਦਿੱਤੇ ਕੇਸ ਵਿੱਚ `:` ਦਾ ਅਰਥ ਹੈ "ਸਭ ਲਾਈਨਾਂ"।
+1. ਆਪਣੇ ਡਾਟਾਫਰੇਮ ਨੂੰ ਆਸਾਨ ਬਣਾਉਣ ਲਈ, ਸਿਰਫ ਉਹ ਕਾਲਮ ਚੁਣੋ ਜੋ ਤੁਹਾਨੂੰ ਚਾਹੀਦੇ ਹਨ, `loc` ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਜੋ ਮੂਲ ਡਾਟਾਫਰੇਮ ਤੋਂ ਇੱਕ ਸਮੂਹ ਕਤਾਰਾਂ (ਜੋ ਪਹਿਲੇ ਪੈਰਾਮੀਟਰ ਵਜੋਂ ਦਿੱਤੀ ਗਈ ਹਨ) ਅਤੇ ਕਾਲਮ (ਦੂਜੇ ਪੈਰਾਮੀਟਰ ਵਜੋਂ) ਕੱਢਦਾ ਹੈ। ਹੇਠਾਂ ਦਿੱਤਾ ਗਿਆ `:` ਅਭਿਵਿਆਕਤੀ ਸਾਰੇ ਕਤਾਰਾਂ ਲਈ ਹੈ।
```python
columns_to_select = ['Package', 'Low Price', 'High Price', 'Date']
pumpkins = pumpkins.loc[:, columns_to_select]
```
-### ਦੂਜਾ, ਕੱਦੂ ਦੀ ਔਸਤ ਕੀਮਤ ਦਾ ਨਿਰਧਾਰਨ ਕਰੋ
+### ਦੂਜਾ, ਕਦੂ ਦੀ ਔਸਤ ਕੀਮਤ ਦਾ ਨਿਰਧਾਰਨ ਕਰੋ
-ਇਹ ਸੋਚੋ ਕਿ ਦਿੱਤੇ ਮਹੀਨੇ ਵਿੱਚ ਕੱਦੂ ਦੀ ਔਸਤ ਕੀਮਤ ਦਾ ਨਿਰਧਾਰਨ ਕਿਵੇਂ ਕਰਨਾ ਹੈ। ਇਸ ਟਾਸਕ ਲਈ ਤੁਸੀਂ ਕਿਹੜੇ ਕਾਲਮ ਚੁਣੋਗੇ? ਸੰਕੇਤ: ਤੁਹਾਨੂੰ 3 ਕਾਲਮਾਂ ਦੀ ਲੋੜ ਹੋਵੇਗੀ।
+ਸੋਚੋ ਕਿ ਕਿਸ ਤਰੀਕੇ ਨਾਲ ਇੱਕ ਦਿੱਤੇ ਮਹੀਨੇ ਵਿੱਚ ਕਦੂ ਦੀ ਔਸਤ ਕੀਮਤ ਨਿਰਧਾਰਤ ਕੀਤੀ ਜਾਵੇ। ਤੁਸੀਂ ਇਸ ਕਾਰਜ ਲਈ ਕਿਹੜੇ ਕਾਲਮ ਚੁਣੋਗੇ? ਸੁਝਾਅ: ਤਿੰਨ ਕਾਲਮ ਲੋੜੀਂਦੇ ਹਨ।
-ਹੱਲ: `Low Price` ਅਤੇ `High Price` ਕਾਲਮਾਂ ਦੀ ਔਸਤ ਲੈ ਕੇ ਨਵੇਂ Price ਕਾਲਮ ਨੂੰ ਭਰੋ, ਅਤੇ Date ਕਾਲਮ ਨੂੰ ਸਿਰਫ਼ ਮਹੀਨਾ ਦਿਖਾਉਣ ਲਈ ਬਦਲੋ। ਖੁਸ਼ਕਿਸਮਤੀ ਨਾਲ, ਉੱਪਰ ਦਿੱਤੀ ਜਾਂਚ ਦੇ ਅਨੁਸਾਰ, ਤਾਰੀਖਾਂ ਜਾਂ ਕੀਮਤਾਂ ਲਈ ਕੋਈ ਗੁੰਮ ਹੋਇਆ ਡਾਟਾ ਨਹੀਂ ਹੈ।
+ਹੱਲ: ਨਵੀਂ Price ਕਾਲਮ ਨੂੰ ਭਰਨ ਲਈ `Low Price` ਅਤੇ `High Price` ਕਾਲਮਾਂ ਦੀ ਔਸਤ ਲਓ, ਅਤੇ Date ਕਾਲਮ ਨੂੰ ਸਿਰਫ ਮਹੀਨਾ ਦਿਖਾਉਣ ਲਈ ਬਦਲੋ। ਖੁਸ਼ਕਿਸਮਤੀ ਨਾਲ, ਉਪਰ ਦਿੱਤੀ ਜਾਂਚ ਮੁਤਾਬਕ, dates ਜਾਂ ਕੀਮਤਾਂ ਲਈ ਕੋਈ ਗੁੰਮ ਡਾਟਾ ਨਹੀਂ ਹੈ।
-1. ਔਸਤ ਦੀ ਗਣਨਾ ਕਰਨ ਲਈ, ਹੇਠਾਂ ਦਿੱਤਾ ਕੋਡ ਸ਼ਾਮਲ ਕਰੋ:
+1. ਔਸਤ ਨਿਕਾਲਣ ਲਈ ਹੇਠ ਲਿਖਿਆ ਕੋਡ ਸ਼ਾਮਿਲ ਕਰੋ:
```python
price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2
@@ -96,37 +96,37 @@ _ਨੋਟਬੁੱਕ.ipynb_ ਫਾਈਲ ਨੂੰ Visual Studio Code ਵਿ
```
- ✅ `print(month)` ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਤੁਸੀਂ ਕੋਈ ਵੀ ਡਾਟਾ ਪ੍ਰਿੰਟ ਕਰ ਸਕਦੇ ਹੋ ਜਿਸਨੂੰ ਤੁਸੀਂ ਜਾਂਚਣਾ ਚਾਹੁੰਦੇ ਹੋ।
+ ✅ ਆਪਣੀ ਜਾਂਚ ਲਈ ਤੁਸੀਂ `print(month)` ਵਰਗੇ ਕਮਾਂਡ ਨਾਲ ਕੋਈ ਵੀ ਡਾਟਾ ਛਾਪ ਸਕਦੇ ਹੋ।
-2. ਹੁਣ, ਆਪਣੇ ਬਦਲੇ ਹੋਏ ਡਾਟਾ ਨੂੰ ਇੱਕ ਨਵੇਂ Pandas ਡਾਟਾਫਰੇਮ ਵਿੱਚ ਕਾਪੀ ਕਰੋ:
+2. ਹੁਣ, ਆਪਣਾ ਬਦਲਿਆ ਹੋਇਆ ਡਾਟਾ ਤਾਜ਼ਾ Pandas ਡਾਟਾਫਰੇਮ ਵਿੱਚ ਕਾਪੀ ਕਰੋ:
```python
new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price})
```
- ਆਪਣੇ ਡਾਟਾਫਰੇਮ ਨੂੰ ਪ੍ਰਿੰਟ ਕਰਨ ਨਾਲ ਤੁਹਾਨੂੰ ਇੱਕ ਸਾਫ਼, ਸਵੱਛ ਡਾਟਾਸੈੱਟ ਦਿਖਾਈ ਦੇਵੇਗਾ ਜਿਸ 'ਤੇ ਤੁਸੀਂ ਆਪਣਾ ਨਵਾਂ ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲ ਬਣਾਉਣ ਲਈ ਕੰਮ ਕਰ ਸਕਦੇ ਹੋ।
+ ਆਪਣੇ ਡਾਟਾਫਰੇਮ ਨੂੰ ਪ੍ਰਿੰਟ ਕਰਨ ਨਾਲ ਤੁਹਾਨੂੰ ਇੱਕ ਸਾਫ਼ ਅਤੇ ਵਿਵਸਥਿਤ ਡਾਟਾ ਮਿਲੇਗਾ ਜਿਸ 'ਤੇ ਤੁਸੀਂ ਆਪਣਾ ਨਵਾਂ ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲ ਬਣਾਉ ਸਕਦੇ ਹੋ।
-### ਪਰ ਰੁਕੋ! ਇੱਥੇ ਕੁਝ ਅਜੀਬ ਹੈ
+### ਪਰ ਰੁਕੋ! ਇੱਥੇ ਕੁਝ ਗੜਬੜ ਹੈ
-ਜੇ ਤੁਸੀਂ `Package` ਕਾਲਮ ਨੂੰ ਵੇਖੋ, ਤਾਂ ਕੱਦੂ ਵੱਖ-ਵੱਖ ਸੰਰਚਨਾਵਾਂ ਵਿੱਚ ਵੇਚੇ ਜਾਂਦੇ ਹਨ। ਕੁਝ '1 1/9 bushel' ਮਾਪ ਵਿੱਚ ਵੇਚੇ ਜਾਂਦੇ ਹਨ, ਕੁਝ '1/2 bushel' ਮਾਪ ਵਿੱਚ, ਕੁਝ ਪ੍ਰਤੀ ਕੱਦੂ, ਕੁਝ ਪ੍ਰਤੀ ਪੌਂਡ, ਅਤੇ ਕੁਝ ਵੱਡੇ ਬਾਕਸਾਂ ਵਿੱਚ ਵੱਖ-ਵੱਖ ਚੌੜਾਈਆਂ ਦੇ ਨਾਲ।
+ਜੇ ਤੁਸੀਂ `Package` ਕਾਲਮ ਵੇਖੋ, ਤਾਂ ਕਦੂ ਕਈ ਵੱਖ-ਵੱਖ ਰੂਪਾਂ ਵਿੱਚ ਵੇਚੇ ਜਾਂਦੇ ਹਨ। ਕੁਝ '1 1/9 ਬਸ਼ਲ' ਮਾਪ ਵਿੱਚ ਵੇਚੇ ਜਾਂਦੇ ਹਨ, ਕੁਝ '1/2 ਬਸ਼ਲ' ਮਾਪ ਵਿੱਚ, ਕੁਝ ਪ੍ਰਤੀ ਕਦੂ, ਕੁਝ ਪ੍ਰਤੀ ਪੌਂਡ ਅਤੇ ਕੁਝ ਵੱਡੇ ਬਕਸਿਆਂ ਵਿੱਚ ਜਿਨ੍ਹਾਂ ਦੀ ਵਿਆਪਕਤਾ ਵੱਖਰੀ ਹੁੰਦੀ ਹੈ।
-> ਕੱਦੂ ਨੂੰ ਸਥਿਰ ਤੌਰ 'ਤੇ ਤੋਲਣਾ ਬਹੁਤ ਮੁਸ਼ਕਲ ਹੈ
+> ਕਦੂਆਂ ਨੂੰ ਲਗਾਤਾਰ ਤੌਰ 'ਤੇ ਤੋਲਣਾ ਬਹੁਤ ਮੁਸ਼ਕਲ ਦਿੱਸਦਾ ਹੈ
-ਮੂਲ ਡਾਟਾ ਵਿੱਚ ਖੋਜ ਕਰਦੇ ਹੋਏ, ਇਹ ਦਿਲਚਸਪ ਹੈ ਕਿ ਜਿਹਨਾਂ ਦਾ `Unit of Sale` 'EACH' ਜਾਂ 'PER BIN' ਹੈ, ਉਹਨਾਂ ਦੇ `Package` ਕਿਸਮ ਪ੍ਰਤੀ ਇੰਚ, ਪ੍ਰਤੀ ਬਿਨ, ਜਾਂ 'each' ਹੈ। ਕੱਦੂ ਨੂੰ ਸਥਿਰ ਤੌਰ 'ਤੇ ਤੋਲਣਾ ਬਹੁਤ ਮੁਸ਼ਕਲ ਹੈ, ਇਸ ਲਈ ਆਓ `Package` ਕਾਲਮ ਵਿੱਚ ਸਿਰਫ਼ 'bushel' ਸ਼ਬਦ ਵਾਲੇ ਕੱਦੂ ਨੂੰ ਚੁਣ ਕੇ ਫਿਲਟਰ ਕਰੀਏ।
+ਮੂਲ ਡਾਟੇ ਦੀ ਖੋਜ ਕਰਨ 'ਤੇ, ਇਹ ਦਿਲਚਸਪ ਹੈ ਕਿ ਜਿਸ ਡਾਟੇ ਵਿੱਚ `Unit of Sale` 'EACH' ਜਾਂ 'PER BIN' ਦੇ ਬਰਾਬਰ ਹੈ, ਉਹਨਾਂ ਦਾ `Package` ਕਿਸਮ ਪ੍ਰਤੀ ਇੰਚ, ਪ੍ਰਤੀ ਬਿਨ ਜਾਂ 'each' ਹੁੰਦੀ ਹੈ। ਕਦੂਆਂ ਨੂੰ ਲਗਾਤਾਰ ਤੌਰ 'ਤੇ ਤੋਲਣਾ ਮੁਸ਼ਕਲ ਹੈ, ਇਸ ਲਈ ਆਓ ਸਿਰਫ ਉਹ ਕਦੂ ਚੁਣੀਏ ਜਿਨ੍ਹਾਂ ਦੇ `Package` ਕਾਲਮ ਵਿਚ ਸ਼ਬਦ 'bushel' ਹੈ।
-1. ਫਾਈਲ ਦੇ ਸ਼ੁਰੂ ਵਿੱਚ, ਸ਼ੁਰੂਆਤੀ .csv ਇੰਪੋਰਟ ਦੇ ਹੇਠਾਂ ਇੱਕ ਫਿਲਟਰ ਸ਼ਾਮਲ ਕਰੋ:
+1. ਫਾਈਲ ਦੇ ਸ਼ੁਰੂ ਵਿੱਚ, ਮੁਢਲੇ .csv ਇੰਪੋਰਟ ਦੇ ਥੱਲੇ ਇੱਕ ਫਿਲਟਰ ਸ਼ਾਮਿਲ ਕਰੋ:
```python
pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]
```
- ਜੇ ਤੁਸੀਂ ਹੁਣ ਡਾਟਾ ਪ੍ਰਿੰਟ ਕਰੋ, ਤਾਂ ਤੁਸੀਂ ਦੇਖ ਸਕਦੇ ਹੋ ਕਿ ਤੁਹਾਨੂੰ ਸਿਰਫ਼ 415 ਜਾਂ ਇਸ ਤੋਂ ਵੱਧ ਲਾਈਨਾਂ ਦਾ ਡਾਟਾ ਮਿਲ ਰਿਹਾ ਹੈ ਜਿਸ ਵਿੱਚ ਬਸੇਲ ਦੁਆਰਾ ਕੱਦੂ ਸ਼ਾਮਲ ਹਨ।
+ ਹੁਣ ਜੇ ਤੁਸੀਂ ਡਾਟਾ ਪ੍ਰਿੰਟ ਕਰੋਗੇ, ਤਾਂ ਤੁਹਾਨੂੰ ਸਿਰਫ਼ ਬਸ਼ਲ ਨਾਲ ਸੰਬੰਧਿਤ ਕਰੀਬ 415 ਲਾਈਨਾਂ ਮਿਲਣਗੀਆਂ।
-### ਪਰ ਰੁਕੋ! ਇੱਕ ਹੋਰ ਕੰਮ ਕਰਨ ਦੀ ਲੋੜ ਹੈ
+### ਪਰ ਰੁਕੋ! ਐਕ ਹੋਰ ਚੀਜ਼ ਕਰਨੀ ਹੈ
-ਕੀ ਤੁਸੀਂ ਧਿਆਨ ਦਿੱਤਾ ਕਿ ਬਸੇਲ ਦੀ ਮਾਤਰਾ ਹਰ ਲਾਈਨ ਵਿੱਚ ਵੱਖ-ਵੱਖ ਹੈ? ਤੁਹਾਨੂੰ ਕੀਮਤਾਂ ਨੂੰ ਨਾਰਮਲਾਈਜ਼ ਕਰਨ ਦੀ ਲੋੜ ਹੈ ਤਾਂ ਜੋ ਤੁਸੀਂ ਬਸੇਲ ਪ੍ਰਤੀ ਕੀਮਤ ਦਿਖਾ ਸਕੋ, ਇਸ ਲਈ ਕੀਮਤਾਂ ਨੂੰ ਸਥਿਰ ਕਰਨ ਲਈ ਕੁਝ ਗਣਿਤ ਕਰੋ।
+ਕੀ ਤੁਸੀਂ ਧਿਆਨ ਦਿੱਤਾ ਕਿ ਬਸ਼ਲ ਦੀ ਮਾਤਰਾ ਪ੍ਰਤੀ ਕਤਾਰ ਵੱਖਰੀ ਹੈ? ਤੁਹਾਨੂੰ ਕੀਮਤਨੂੰ ਪ੍ਰਤੀ ਬਸ਼ਲ ਨਾਰਮਲਾਈਜ਼ ਕਰਨੀ ਪਏਗੀ, ਇਸ ਲਈ ਇਸ ਨੂੰ ਮਾਪਦੰਡਿਤ ਕਰਨ ਲਈ ਕੁਝ ਗਣਿਤ ਕਰਨੀ ਹੋਵੇਗੀ।
-1. ਨਵੇਂ_pumpkins ਡਾਟਾਫਰੇਮ ਬਣਾਉਣ ਵਾਲੇ ਬਲਾਕ ਦੇ ਬਾਅਦ ਇਹ ਲਾਈਨਾਂ ਸ਼ਾਮਲ ਕਰੋ:
+1. ਨਵੇਂ new_pumpkins ਡਾਟਾਫਰੇਮ ਬਣਾਉਣ ਵਾਲੇ ਬਲਾਕ ਤੋਂ ਬਾਅਦ ਇਹ ਲਾਈਨਾਂ ਸ਼ਾਮਿਲ ਕਰੋ:
```python
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9)
@@ -134,23 +134,161 @@ _ਨੋਟਬੁੱਕ.ipynb_ ਫਾਈਲ ਨੂੰ Visual Studio Code ਵਿ
new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2)
```
-✅ [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) ਦੇ ਅਨੁਸਾਰ, ਬਸੇਲ ਦਾ ਵਜ਼ਨ ਉਤਪਾਦ ਦੇ ਕਿਸਮ 'ਤੇ ਨਿਰਭਰ ਕਰਦਾ ਹੈ, ਕਿਉਂਕਿ ਇਹ ਇੱਕ ਵਾਲੀਅਮ ਮਾਪ ਹੈ। "ਟਮਾਟਰਾਂ ਦਾ ਇੱਕ ਬਸੇਲ, ਉਦਾਹਰਣ ਲਈ, 56 ਪੌਂਡ ਦਾ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ... ਪੱਤੇ ਅਤੇ ਹਰੇ ਪੱਤੇ ਵਧੇਰੇ ਜਗ੍ਹਾ ਲੈਂਦੇ ਹਨ ਅਤੇ ਘੱਟ ਵਜ਼ਨ ਹੁੰਦੇ ਹਨ, ਇਸ ਲਈ ਸਪਿਨੇਚ ਦਾ ਇੱਕ ਬਸੇਲ ਸਿਰਫ਼ 20 ਪੌਂਡ ਹੈ।" ਇਹ ਸਭ ਕੁਝ ਕਾਫ਼ੀ ਜਟਿਲ ਹੈ! ਆਓ ਬਸੇਲ-ਤੋਂ-ਪੌਂਡ ਬਦਲਾਅ ਕਰਨ ਦੀ ਝੰਝਟ ਨਾ ਕਰੀਏ, ਅਤੇ ਬਸੇਲ ਦੁਆਰਾ ਕੀਮਤ ਲਗਾਈਏ। ਕੱਦੂ ਦੇ ਬਸੇਲਾਂ ਦਾ ਇਹ ਸਾਰਾ ਅਧਿਐਨ, ਹਾਲਾਂਕਿ, ਇਹ ਦਿਖਾਉਂਦਾ ਹੈ ਕਿ ਆਪਣੇ ਡਾਟਾ ਦੀ ਪ੍ਰਕਿਰਤੀ ਨੂੰ ਸਮਝਣਾ ਕਿੰਨਾ ਮਹੱਤਵਪੂਰਨ ਹੈ!
+✅ [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) ਅਨੁਸਾਰ, ਇੱਕ ਬਸ਼ਲ ਦਾ ਵਜ਼ਨ ਉਸ ਦੇ ਉਤਪਾਦ ਦੇ ਕਿਸਮ 'ਤੇ ਨਿਰਭਰ ਕਰਦਾ ਹੈ, ਕਿਉਂਕਿ ਇਹ ਇੱਕ ਆਕਾਰ ਮਾਪ ਹੈ। "ਟਮਾਟਰ ਦਾ ਇੱਕ ਬਸ਼ਲ, ਉਦਾਹਰਨ ਲਈ, 56 ਪੌਂਡ ਤੋਲਣਾ ਆਦਰਸ਼ ਹੈ... ਪੱਤੇ ਅਤੇ ਹਰੀਆ ਭਾਗ ਜਿਆਦਾ ਜਗ੍ਹਾ ਘੇਰਦੇ ਹਨ ਪਰ ਘੱਟ ਵਜ਼ਨ ਵਾਲੇ ਹੁੰਦੇ ਹਨ, ਇਸ ਲਈ ਸਪਿਨੇਚ ਦਾ ਬਸ਼ਲ ਸਿਰਫ 20 ਪੌਂਡ ਹੈ।" ਇਹ ਸਭ ਕੁਝ ਕਾਫ਼ੀ ਜਟਿਲ ਹੈ! ਆਓ ਬਸ਼ਲ ਤੋਂ ਪੌਂਡ ਤਬਦੀਲ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਨਾ ਕਰੀਏ, ਇਸ ਦੇ ਬਦਲੇ ਪ੍ਰਤੀ ਬਸ਼ਲ ਕੀਮਤ ਦਿਖਾਈਏ। ਪਰ ਇਹ ਪੰਪਕਿਨ ਬਸ਼ਲਾਂ ਦੀ ਅਧਿਐਨ ਇਹ ਦਿਖਾਉਂਦਾ ਹੈ ਕਿ ਆਪਣੇ ਡਾਟੇ ਦੀ ਪ੍ਰਕਿਰਤੀ ਨੂੰ ਸਮਝਣਾ ਕਿੰਨਾ ਜ਼ਰੂਰੀ ਹੈ!
+
+ਹੁਣ ਤੁਸੀਂ ਆਪਣੇ ਬਸ਼ਲ ਮਾਪ ਦੇ ਆਧਾਰ 'ਤੇ ਕੀਮਤਾਂ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰ ਸਕਦੇ ਹੋ। ਜੇ ਤੁਸੀਂ ਡਾਟਾ ਇੱਕ ਵਾਰੀ ਹੋਰ ਪ੍ਰਿੰਟ ਕਰੋ, ਤਾਂ ਤੁਹਾਨੂੰ ਮਿਆਰੀਕ੍ਰਿਤ ਕੀਮਤਾਂ ਦਿਖਾਈ ਦੇਣਗੀਆਂ।
+
+✅ ਕੀ ਤੁਸੀਂ ਦੇਖਿਆ ਕਿ ਅੱਧਾ ਬਸ਼ਲ ਵਿੱਚ ਵੇਚੇ ਜਾਣ ਵਾਲੇ ਕਦੂ ਬਹੁਤ ਮਹਿੰਗੇ ਹੁੰਦੇ ਹਨ? ਕੀ ਤੁਸੀਂ ਕਾਰਨ ਪਤਾ ਲਾ ਸਕਦੇ ਹੋ? ਸੁਝਾਅ: ਛੋਟੇ ਕਦੂ ਵੱਡੇ ਮੁਕਾਬਲੇ ਕਾਫੀ ਜ਼ਿਆਦਾ ਮਹਿੰਗੇ ਹੁੰਦੇ ਹਨ, ਸ਼ਾਇਦ ਇਸ ਕਰਕੇ ਕਿ ਬਸ਼ਲ ਵਿੱਚ ਬਹੁਤ ਜ਼ਿਆਦਾ ਛੋਟੇ ਕਦੂ ਆ ਜਾਂਦੇ ਹਨ, ਜਦਕਿ ਇਕ ਵੱਡਾ ਖਾਲੀ ਪਾਈ ਕਦੂ ਜਗ੍ਹਾ ਘੇਰਦਾ ਹੈ।
+
+## ਦ੍ਰਿਸ਼ਟੀਕਰਨ ਤਕਨੀਕਾਂ
+
+ਡਾਟਾ ਸਾਇੰਟਿਸਟ ਦਾ ਇੱਕ ਹਿੱਸਾ ਇਹ ਦਰਸਾਉਣਾ ਹੈ ਕਿ ਉਹ ਕਿਸ ਪ੍ਰਕਾਰ ਦਾ ਡਾਟਾ ਵਰਤ ਰਿਹਾ ਹੈ। ਇਸ ਲਈ ਉਹ ਅਕਸਰ ਦਿਲਚਸਪ ਦ੍ਰਿਸ਼ਟੀਕਰਨ (visualizations), ਗ੍ਰਾਫ, ਚਾਰਟ ਬਣਾਉਂਦੇ ਹਨ ਜੋ ਡਾਟੇ ਦੇ ਵੱਖ-ਵੱਖ ਪੱਖ ਦਿਖਾਉਂਦੇ ਹਨ। ਇਸ ਤਰੀਕੇ ਨਾਲ, ਉਹ ਸੰਬੰਧਾਂ ਅਤੇ ਖਾਮੀਆਂ ਜੋ ਆਮ ਤੌਰ 'ਤੇ ਪਤਾ ਲਗਾਉਣਾ ਮੁਸ਼ਕਲ ਹੁੰਦਾ ਹੈ, ਵਰਣਨ ਕਰ ਸਕਦੇ ਹਨ।
+
+[](https://youtu.be/SbUkxH6IJo0 "ਆਰੰਭਕਾਂ ਲਈ ਐਮ ਐਲ - Matplotlib ਨਾਲ ਡਾਟਾ ਦ੍ਰਿਸ਼ਟੀਗ੍ਰਹਣ ਕਿਵੇਂ ਕਰੀਏ")
+
+> 🎥 ਇਸ ਪਾਠ ਲਈ ਡਾਟਾ ਦ੍ਰਿਸ਼ਟੀਗ੍ਰਹਣ ਕਰਨ ਬਾਰੇ ਇੱਕ ਛੋਟੀ ਵੀਡੀਓ ਦੇਖਣ ਲਈ ਉਪਰ ਦਿੱਤੀ ਚਿੱਤਰ 'ਤੇ ਕਲਿੱਕ ਕਰੋ।
+
+ਦ੍ਰਿਸ਼ਟੀਗ੍ਰਹਣ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਤਕਨੀਕ ਪ੍ਰਾਪਤ ਕਰਨ ਵਿੱਚ ਵੀ ਮਦਦ ਕਰਦੇ ਹਨ ਜੋ ਡਾਟੇ ਲਈ ਸਭ ਤੋਂ ਜਚਦੀ ਹੈ। ਉਦਾਹਰਨ ਵਜੋਂ, ਇੱਕ scatterplot ਜੋ ਲਕੀਰ ਦੇ ਅਨੁਕੂਲ ਦਿੱਸ ਰਿਹਾ ਹੈ, ਓਹੁ ਡਾਟਾ ਲੀਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਅਭਿਆਸ ਲਈ ਮਾਣਤਾ ਦਿੰਦਾ ਹੈ।
+
+ਇੱਕ ਡਾਟਾ ਦ੍ਰਿਸ਼ਟੀਗ੍ਰਹਣ ਲਾਇਬ੍ਰੇਰੀ ਜੋ Jupyter ਨੋਟਬੁੱਕ ਵਿੱਚ ਚੰਗੀ ਤਰ੍ਹਾਂ ਕੰਮ ਕਰਦੀ ਹੈ ਉਹ ਹੈ [Matplotlib](https://matplotlib.org/) (ਜੋ ਤੁਸੀਂ ਪਹਿਲਾਂ ਦੇ ਪਾਠ ਵਿੱਚ ਵੀ ਦੇਖ ਚੁਕੇ ਹੋ)।
+
+> ਡਾਟਾ ਦ੍ਰਿਸ਼ਟੀਗ੍ਰਹਣ ਵਿੱਚ ਹੋਰ ਅਨੁਭਵ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ [ਇਸ ਟਿਊਟੋਰਿਯਲ](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott) ਨੂੰ ਦੇਖੋ।
+
+## ਅਭਿਆਸ - Matplotlib ਨਾਲ ਪ੍ਰਯੋਗ ਕਰੋ
+
+ਕੁਝ ਅਸਲ ਗ੍ਰਾਫ ਬਣਾਓ ਜੋ ਨਵਾਂ ਡਾਟਾਫਰੇਮ ਦਿਖਾਉਂਦੇ ਹਨ ਜੋ ਤੁਸੀਂ ਹੁਣੀ ਬਣਾਇਆ ਹੈ। ਇੱਕ ਸਧਾਰਣ ਲਾਈਨ ਗ੍ਰਾਫ ਕੀ ਦਿਖਾਵੇਗਾ?
+
+1. ਫਾਈਲ ਦੇ ਊਪਰ Pandas ਇੰਪੋਰਟ ਦੇ ਥੱਲੇ Matplotlib ਇੰਪੋਰਟ ਕਰੋ:
+
+ ```python
+ import matplotlib.pyplot as plt
+ ```
+
+1. ਪੂਰੀ ਨੋਟਬੁੱਕ ਨੂੰ ਦੁਬਾਰਾ ਚਲਾਓ ਤਾ ਜੋ ਨਵਾਂ ਡਾਟਾ ਲੋਡ ਹੋ ਜਾਵੇ।
+1. ਨੋਟਬੁੱਕ ਦੇ ਹੇਠਾਂ ਇੱਕ ਸੈੱਲ ਸ਼ਾਮਿਲ ਕਰੋ ਜੋ ਡਾਟਾ ਨੂੰ ਬਾਕਸ ਪਲਾਟ ਵਜੋਂ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰੇ:
+
+ ```python
+ price = new_pumpkins.Price
+ month = new_pumpkins.Month
+ plt.scatter(price, month)
+ plt.show()
+ ```
+
+ 
+
+ ਕੀ ਇਹ ਇੱਕ ਲਾਭਦਾਇਕ ਪਲਾਟ ਹੈ? ਕੀ ਤੁਹਾਨੂੰ ਇਸ ਵਿੱਚ ਕੋਈ ਹੈਰਾਨੀਜਨਕ ਗੱਲ ਮਿਲੀ?
+
+ ਇਹ ਖ਼ਾਸ ਤੌਰ 'ਤੇ ਲਾਭਦਾਇਕ ਨਹੀਂ ਹੈ ਕਿਉਂਕਿ ਇਹ ਸਿਰਫ਼ ਵੱਖ-ਵੱਖ ਮਹੀਨਿਆਂ ਵਿੱਚ ਤੁਹਾਡੇ ਡਾਟਾ ਨੂੰ ਬਿੰਦੂਆਂ ਵਜੋਂ ਦਿਖਾਉਂਦਾ ਹੈ।
+
+### ਇਸ ਨੂੰ ਲਾਭਦਾਇਕ ਬਣਾਓ
+
+ਲਾਭਦਾਇਕ ਡੇਟਾ ਦਿਖਾਉਣ ਲਈ, ਅਕਸਰ ਤੁਸੀਂ ਡਾਟਾ ਨੂੰ ਸਮੂਹ ਕਰਨਾ ਹੁੰਦਾ ਹੈ। ਚਲੋ ਇੱਕ ਅਜਿਹਾ ਗ੍ਰੁੱਪ ਕੀਤਾ ਗਿਆ ਬਾਰ ਚਾਰਟ ਬਣਾਈਏ ਜਿਸ ਵਿੱਚ y ਅਕਸ ਦਰਸਾਵੇ ਮਹੀਨੇ ਅਤੇ ਡਾਟਾ ਵੰਡ ਨੂੰ ਦਰਸਾਵੇ।
+
+1. ਇੱਕ ਸੈੱਲ ਸ਼ਾਮਿਲ ਕਰੋ ਜੋ ਇੱਕ ਗ੍ਰੁੱਪ ਕੀਤਾ ਗਿਆ ਬਾਰ ਚਾਰਟ ਬਣਾਵੇ:
+
+ ```python
+ new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar')
+ plt.ylabel("Pumpkin Price")
+ ```
+
+ 
+
+ ਇਹ ਡਾਟਾ ਦ੍ਰਿਸ਼ਟੀਗ੍ਰਹਣ ਜ਼ਿਆਦਾ ਲਾਭਦਾਇਕ ਹੈ! ਇਹ ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਕਦੂਆਂ ਦੀ ਸਭ ਤੋਂ ਵੱਧ ਕੀਮਤ ਸਤੰਬਰ ਅਤੇ ਅਕਤੂਬਰ ਵਿੱਚ ਹੁੰਦੀ ਹੈ। ਕੀ ਇਹ ਤੁਹਾਡੀ ਉਮੀਦ ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਹੈ? ਕਿਉਂ ਜਾਂ ਕਿਉਂ ਨਹੀਂ?
+
+## ਅਭਿਆਸ - Seaborn ਨਾਲ ਪ੍ਰਯੋਗ ਕਰੋ
+
+Matplotlib ਸ਼ਕਤੀਸ਼ਾਲੀ ਹੈ, ਪਰ ਇੱਕ ਚੰਗਾ ਚਾਰਟ ਬਣਾਉਣ ਲਈ ਇਹ ਬਹੁਤ ਕੋਡ ਲੱਗਦਾ ਹੈ। [Seaborn](https://seaborn.pydata.org/) Matplotlib ਦੇ ਉੱਤੇ ਬਣਾਈ ਗਈ ਇੱਕ ਲਾਇਬ੍ਰੇਰੀ ਹੈ ਜੋ ਅੰਕੜਿਆਂ ਦੇ ਅਧਾਰ 'ਤੇ ਡਾਟਾ ਦ੍ਰਿਸ਼ਟੀਗ੍ਰਹਣ ਲਈ ਡਿਜ਼ਾਇਨ ਕੀਤੀ ਗਈ ਹੈ। ਇਹ ਸਿੱਧਾ Pandas ਡਾਟਾਫਰੇਮ ਨਾਲ ਕੰਮ ਕਰਦੀ ਹੈ, ਖੂਬਸੂਰਤ ਡਿਫਾਲਟ ਸਟਾਈਲ ਲਗਾਉਂਦੀ ਹੈ ਅਤੇ ਘੱਟ ਕੋਡ ਨਾਲ ਜਾਣਕਾਰੀਪੂਰਣ ਪਲਾਟ ਬਣਾਉਂਦੀ ਹੈ। ਕਿਉਂਕਿ Seaborn Matplotlib ਦੇ ਆਬਜੈਕਟ ਰਿਟਰਨ ਕਰਦਾ ਹੈ, ਤੁਸੀਂ ਹਾਲੇ ਵੀ Matplotlib ਬਾਰੇ ਜੋ ਕੁਝ ਜਾਣਦੇ ਹੋ ਨਾਲ ਨਤੀਜਾ ਬਹਿਤਰੀਨ ਕਰ ਸਕਦੇ ਹੋ।
+
+> ਜੇ ਤੁਹਾਡੇ ਕੋਲ Seaborn ਇੰਸਟਾਲ ਨਹੀਂ ਹੈ, ਤਾਂ ਇਸਨੂੰ `pip install seaborn` ਨਾਲ ਇੰਸਟਾਲ ਕਰੋ।
+
+1. ਨੋਟਬੁੱਕ ਦੇ ਸ਼ੁਰੂ ਵਿੱਚ ਹੋਰ ਇੰਪੋਰਟਾਂ ਦੇ ਥੱਲੇ Seaborn ਨੂੰ ਇੰਪੋਰਟ ਕਰੋ। ਇਹ ਆਮ ਤੌਰ 'ਤੇ `sns` ਵਜੋਂ ਇੰਪੋਰਟ ਕੀਤਾ ਜਾਂਦਾ ਹੈ:
+
+ ```python
+ import seaborn as sns
+ ```
+
+### ਸੰਬੰਧ ਦਿਖਾਉਣ ਲਈ scatter plots
+
+ਮਾਡਲ ਬਣਾਉਣ ਤੋਂ ਪਹਿਲਾਂ ਡਾਟਾ ਖੋਜਨ ਦਾ ਵੱਡਾ ਹਿੱਸਾ ਹੈ ਵਰੀਏਬਲਾਂ ਵਿਚਕਾਰ ਦੇ _ਸੰਬੰਧਾਂ_ ਨੂੰ ਲੱਭਣ ਦਾ। ਇੱਕ [scatter plot](https://en.wikipedia.org/wiki/Scatter_plot) ਇਸ ਲਈ ਸਭ ਤੋਂ ਵਧੀਆ ਔਜ਼ਾਰਾਂ ਵਿੱਚੋਂ ਇੱਕ ਹੈ: ਜੇ ਬਿੰਦੂ ਇੱਕ ਲਕੀਰ ਦੀ ਪਾਲਣਾ ਕਰਦੇ ਦਿੱਸਦੇ ਹਨ, ਤਾਂ ਦੋਹਾਂ ਵਰੀਏਬਲਾਂ ਵਿੱਚ ਸਬੰਧ ਹੋ ਸਕਦਾ ਹੈ, ਜੋ ਕਿ ਲੀਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲ ਲਈ ਚੰਗੀ ਗੱਲ ਹੈ।
+
+1. ਪਹਿਲਾਂ ਬਣਾਏ ਗਏ ਕੀਮਤ-ਮਹੀਨਾ scatter plot ਨੂੰ ਫਿਰ ਬਣਾਓ, ਇਸ ਵਾਰੀ Seaborn ਦੇ [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) (ਰਿਲੇਸ਼ਨਲ ਪਲਾਟ) ਦੀ ਵਰਤੋਂ ਕਰਕੇ, ਜੋ ਸਿੱਧਾ ਤੁਹਾਡੇ ਡਾਟਾਫਰੇਮ ਕਾਲਮਾਂ ਨਾਲ ਕੰਮ ਕਰਦਾ ਹੈ:
+
+ ```python
+ sns.relplot(x="Price", y="Month", data=new_pumpkins)
+ ```
+
+ 
+
+ ਧਿਆਨ ਦਿਓ ਕਿ ਤੁਸੀਂ ਕਿਵੇਂ _ਕਾਲਮ ਨਾਮਾਂ_ ਅਤੇ ਡਾਟਾਫਰੇਮ ਦਿੰਦੇ ਹੋ, ਅਤੇ Seaborn ਤੁਹਾਡੇ ਲਈ ਅਕਸਾਂ ਦੇ ਲੇਬਲ ਸੁਚੱਜੇ ਤਰੀਕੇ ਨਾਲ ਬਣਾਉਂਦਾ ਹੈ।
+
+2. ਤੁਸੀਂ `kind="line"` ਪਾਸ ਕਰਕੇ ਲਾਈਨ ਪਲਾਟ 'ਤੇ ਬਦਲ ਸਕਦੇ ਹੋ। Seaborn ਲਾਈਨ ਦੇ ਆਲੇ-ਦੁਆਲੇ ਵਿਸ਼ਵਾਸ інтэрਵਾਲ ਦਿਖਾਉਂਦਾ ਹੈ:
+
+ ```python
+ sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins)
+ ```
+
+ 
+
+ ਇਹ ਵਿਸ਼ੇਸ਼ ਡਾਟਾ ਕਾਫੀ ਸ਼ੋਰ ਵਾਲਾ ਹੈ, ਇਸ ਲਈ ਲਾਈਨ ਪਲਾਟ ਸਭ ਤੋਂ ਸਾਫ਼ ਨਾਹ ਹੈ — ਪਰ ਇਸ ਨਾਲ ਦਿਖਾਇਆ ਗਿਆ ਹੈ ਕਿ ਤੁਸੀਂ ਕਿਵੇਂ ਅਸਾਨੀ ਨਾਲ Seaborn ਵਿੱਚ ਚਾਰਟ ਦਾ ਕਿਸਮ ਬਦਲ ਸਕਦੇ ਹੋ।
+
+### ਵੰਡਾਂ ਦਿਖਾਉਣ ਲਈ ਬਾਰ ਚਾਰਟ
+
+
+ਪਹਿਲਾਂ ਤੁਸੀਂ ਮੈਟਪਲੌਟਲਿਬ ਨਾਲ ਇੱਕ ਬਾਰ ਚਾਰਟ ਬਣਾਉਣ ਲਈ ਡਾਟਾ ਹੱਥੋਂ ਗਰੂਪ ਕੀਤਾ ਸੀ। ਸੀਬੋਰਨ ਦਾ [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) (ਵਰਗੀਕਰਿਤ ਪਲਾਟ) ਤੁਹਾਡੇ ਲਈ ਗਰੂਪਿੰਗ ਅਤੇ ਸਮੀਕਰਨ ਕਰ ਸਕਦਾ ਹੈ। ਡੀਫ਼ਾਲਟ ਵਜੋਂ `kind="bar"` ਹਰ ਵਰਗ ਦਾ ਔਸਤ ਦਿਖਾਉਂਦਾ ਹੈ, ਨਾਲ ਹੀ ਇੱਕ ਕਾਲੀ ਲਾਈਨ ਜੋ ਭਰੋਸੇਮੰਦ ਇੰਤਰਾਲ ਦਰਸਾਂਦੀ ਹੈ।
+
+1. ਹਰ ਮਹੀਨੇ ਦੀ ਔਸਤ ਕੀਮਤ ਦਾ ਬਾਰ ਚਾਰਟ ਬਣਾਓ:
+
+ ```python
+ sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar")
+ ```
+
+ 
+
+ ਇਹ ਮੈਟਪਲੌਟਲਿਬ ਨਾਲ ਜੋ ਤੁਸੀਂ ਦੇਖਿਆ ਉਸਦੀ ਪੁਸ਼ਟੀ ਕਰਦਾ ਹੈ — ਕੀਮਤਾਂ ਸਤੰਬਰ ਅਤੇ ਅਕਤੂਬਰ ਦੇ ਆਲੇ ਦੁਆਲੇ ਚੋਟੀ ਤੇ ਹਨ — ਪਰ ਸੀਬੋਰਨ ਇਹ ਵੀ ਦਿਖਾਉਂਦਾ ਹੈ ਕਿ ਹਰ ਮਹੀਨੇ ਅੰਦਰ ਕੀਮਤ ਕਿੰਨੀ ਵੱਧ/ਘੱਟ ਹੁੰਦੀ ਹੈ।
+
+### ਸਬੰਧ ਦਿਖਾਉਣ ਲਈ ਹੀਟਮੇਪਸ
+
+ਸਕੈਟਰ ਪਲਾਟ ਇੱਕ ਸਮੇਂ ਦੋ ਚਰ ਨੂੰ ਤੁਲਨਾ ਕਰਦੇ ਹਨ। ਜਦੋਂ ਤੁਹਾਡੇ ਕੋਲ ਕਈ ਗਿਣਤੀ ਵਾਲੇ ਕਾਲਮ ਹੁੰਦੇ ਹਨ, ਤਾਂ ਇੱਕ [ਹੀਟਮੇਪ](https://en.wikipedia.org/wiki/Heat_map) ਤੁਹਾਨੂੰ ਸਾਰੇ ਕਾਲਮਾਂ ਦੇ ਜੋੜਿਆਂ ਵਿਚਕਾਰ ਸਬੰਧ ਦੀ ਤਾਕਤ ਇੱਕ ਵਾਰੀ ਵੇਖਣ ਦਿੰਦਾ ਹੈ। ਇਹ ਇੱਕ ਆਮ ਤਰੀਕਾ ਹੈ ਇਹ ਪਤਾ ਕਰਨ ਲਈ ਕਿ ਕਿਹੜੇ ਫੀਚਰ ਸਭ ਤੋਂ ਵੱਧ ਸੰਬੰਧਤ ਹਨ ਇਸ ਤੋਂ ਪਹਿਲਾਂ ਕਿ ਤੁਸੀਂ ਮਾਡਲ ਵਿੱਚ ਕੀ ਸ਼ਾਮਲ ਕਰੋ (ਅਤੇ ਵੱਖ-ਵੱਖ ਕਿਸਮ ਦਾ ਚਾਰਟ ਬਾਅਦ ਵਿੱਚ ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਵਿੱਚ ਕਨਫਿਊਜ਼ਨ ਮੈਟ੍ਰਿਕਸ ਦਿਖਾਉਣ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ)।
+
+1. ਪੈਂਡਾਸ ਨਾਲ ਇੱਕ ਕੋਰੀਲੇਸ਼ਨ ਮੈਟ੍ਰਿਕਸ ਬਣਾਓ, ਫਿਰ ਸੀਬੋਰਨ ਦੇ [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html) ਨਾਲ ਤਸਵੀਰ ਕਾਢੋ। `annot=True` ਵਿਕਲਪ ਹਰ ਕੋਸ਼ਿਕਾ 'ਤੇ ਕੋਰੀਲੇਸ਼ਨ ਮੁੱਲ ਪ੍ਰਿੰਟ ਕਰਦਾ ਹੈ:
+
+ ```python
+ correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()
+ sns.heatmap(correlations, annot=True, cmap="coolwarm")
+ ```
+
+ 
+
+ ਮੁੱਲ ਜੋ `1` (ਜਾਂ `-1`) ਦੇ ਨੇੜੇ ਹਨ, ਦਾ ਮਤਲਬ ਹੈ ਕਿ ਕਾਲਮਾਂ ਵਿੱਚ ਤੀਬਰ _ਰੇਖੀਅਤਮਕ_ ਸੰਬੰਧ ਹੈ। ਧਿਆਨ ਦਿਓ ਕਿ `Low Price` ਅਤੇ `High Price` ਲਗਭਗ ਪੂਰੀ ਤਰ੍ਹਾਂ ਸੰਬੰਧਤ ਹਨ। ਦੂਜੇ ਪਾਸੇ, `Month` ਸਿਰਫ਼ ਕਮਜ਼ੋਰ ਰੇਖੀਅਤਮਕ ਸੰਬੰਧ ਦਿਖਾਉਂਦਾ ਹੈ — ਹਾਲਾਂਕਿ ਉੱਪਰ ਦਿੱਤੇ ਬਾਰ ਚਾਰਟ ਨੇ ਸਤੰਬਰ ਅਤੇ ਅਕਤੂਬਰ ਵਿੱਚ ਇੱਕ ਸਪਸ਼ਟ ਮੌਸਮੀ ਚੋਟੀ ਦਿਖਾਈ ਸੀ। ਇਹ ਇੱਕ ਮਹੱਤਵਪੂਰਨ ਸਿੱਖਿਆ ਹੈ: ਕੋਰੀਲੇਸ਼ਨ ਕੋਐਫ਼ੀਸ਼ੈਂਟ صرف _ਸਿੱਧਾ-ਰੇਖਾ_ ਦੇ ਸੰਬੰਧ ਮਾਪਦਾ ਹੈ, ਇਸ ਲਈ ਇਹ ਮੌਸਮੀ ਜਾਂ ਹੋਰ ਕਿਸਮ ਦੇ ਗੈਰ ਰੇਖੀਅਤਮਕ ਪੈਟਰਨਾਂ ਨੂੰ ਨਾ ਦਰਸਾ ਸਕਦਾ। ✅ ਕਿਉਂ ਇਹ ਫਾਇਦ੍ਹੇਮੰਦ ਹੈ ਕਿ ਸਿੱਧਾ ਹੀਟਮੇਪ ਅਤੇ ਬਾਰ ਚਾਰਟ ਵਰਗੇ ਚਾਰਟਾਂ ਨੂੰ ਦੇਖ ਕੇ ਇਹ ਫੈਸਲਾ ਕਰਨਾ ਕਿ ਕਿਹੜੇ ਕਾਲਮ ਵਰਤਣੇ ਹਨ?
+
+### ਮੈਟਪਲੌਟਲਿਬ ਜਾਂ ਸੀਬੋਰਨ?
+
+ਦੋਹਾਂ ਲਾਇਬ੍ਰੇਰੀਆਂ ਜਾਣਣ ਯੋਗ ਹਨ:
+
+- **ਮੈਟਪਲੌਟਲਿਬ** ਤੁਹਾਨੂੰ ਇੱਕ ਚਾਰਟ ਦੇ ਹਰ ਤੱਤ 'ਤੇ ਬਾਰੀਕੀ ਨਾਲ ਕੰਟਰੋਲ ਦਿੰਦੀ ਹੈ ਅਤੇ ਇਹ ਲਗਭਗ ਹਰ ਹੋਰ ਪਾਇਥਨ ਪਲਾਟਿੰਗ ਲਾਇਬ੍ਰੇਰੀ ਦੀ ਬੁਨਿਆਦ ਹੈ।
+- **ਸੀਬੋਰਨ** ਉੱਚ-ਪੱਧਰੀ ਫੰਕਸ਼ਨਾਂ ਅਤੇ ਆਕਰਸ਼ਕ ਡੀਫਾਲਟ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ ਸਾਂਖਿਆਕੀ ਚਾਰਟਾਂ ਲਈ, ਸਿੱਧਾ ਡਾਟਾ ਫਰੇਮਜ਼ ਨਾਲ ਕੰਮ ਕਰਦਾ ਹੈ, ਅਤੇ ਐਕਸਪਲੋਰੇਟਰੀ ਡੇਟਾ ਵਿਸ਼ਲੇਸ਼ਣ ਲਈ ਅਕਸਰ ਤੇਜ਼ ਹੁੰਦਾ ਹੈ।
+
+ਇੱਕ ਆਮ ਕਾਰਜ-ਪ੍ਰਵਾਹ ਹੈ ਕਿ ਬੜੀ ਤੇਜ਼ੀ ਨਾਲ ਡਾਟਾ ਬੁਝਣ ਲਈ ਸੀਬੋਰਨ ਨੂੰ ਵਰਤਨਾ, ਫਿਰ ਜਦੋਂ ਵਿਸਥਾਰ ਵਿੱਚ ਬਦਲਾਵਾਂ ਕਰਨੇ ਹੋਣ ਤਾਂ ਮੈਟਪਲੌਟਲਿਬ 'ਤੇ ਜਾਵੇ।
+
+---
-ਹੁਣ, ਤੁਸੀਂ ਬਸੇਲ ਮਾਪ ਦੇ ਅਧਾਰ 'ਤੇ ਯੂਨਿਟ ਪ੍ਰਤੀ ਕੀਮਤ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰ ਸਕਦੇ ਹੋ। ਜੇ ਤੁਸੀਂ ਡਾਟਾ ਨੂੰ ਇੱਕ ਵਾਰ ਫਿਰ ਪ੍ਰਿੰਟ ਕਰੋ, ਤਾਂ ਤੁਸੀਂ ਦੇਖ ਸਕਦੇ ਹੋ ਕਿ ਇਹ ਸਥਿਰ ਕੀਤਾ ਗਿਆ ਹੈ।
+## 🚀ਚੁਣੌਤੀ
-✅ ਕੀ ਤੁਸੀਂ ਧਿਆਨ ਦਿੱਤਾ ਕਿ ਅੱਧੇ-ਬਸੇਲ ਦੁਆਰਾ ਵੇਚੇ ਗਏ ਕੱਦੂ ਬਹੁਤ ਮਹਿੰਗੇ ਹਨ? ਕੀ ਤੁਸੀਂ ਪਤਾ ਲਗਾ ਸਕਦੇ ਹੋ ਕਿ ਕਿਉਂ? ਸੰਕੇਤ: ਛੋਟੇ ਕੱਦੂ ਵੱਡੇ ਕੱਦੂਆਂ ਨਾਲੋਂ ਕਾਫ਼ੀ ਮਹਿੰਗੇ ਹੁੰਦੇ ਹਨ, ਸ਼ਾਇਦ ਇਸ ਲਈ ਕਿ ਇੱਕ ਵੱਡੇ ਖਾਲੀ ਪਾਈ ਕੱਦੂ ਦੁਆਰਾ ਲਿਆ ਗਿਆ ਖਾਲੀ ਜਗ੍ਹਾ ਦੇ ਕਾਰਨ ਬਸੇਲ ਵਿੱਚ ਉਹਨਾਂ ਦੀ ਗਿਣਤੀ ਕਾਫ਼ੀ ਵੱਧ ਹੁੰਦੀ ਹੈ।
+ਮੈਟਪਲੌਟਲਿਬ ਅਤੇ ਸੀਬੋਰਨ ਜੋ ਵੱਖ-ਵੱਖ ਤਰ੍ਹਾਂ ਦੀਆਂ ਵਿਜ਼ੂਅਲਾਈਜ਼ੇਸ਼ਨ ਦਿੰਦੇ ਹਨ, ਉਹਨਾਂ ਦਾ ਪਤਾ ਲਗਾਓ। ਕਿਹੜੇ ਤਰ੍ਹਾਂ ਲੋਕ ਸਭ ਤੋਂ ਵੱਧ ਰਿਗਰੈਸ਼ਨ ਸਮੱਸਿਆਵਾਂ ਲਈ ਮੁਆਫਿਕ ਹਨ?
-## ਵਿਜੁਅਲਾਈਜ਼ੇਸ਼ਨ ਰਣਨੀਤੀਆਂ
+## [ਪੋਸਟ-ਲੇਕਚਰ ਕਵਿਜ਼](https://ff-quizzes.netlify.app/en/ml/)
-ਡਾਟਾ ਸਾਇੰਟਿਸਟ ਦੀ ਭੂਮਿਕਾ ਡਾਟਾ ਦੀ ਗੁਣਵੱਤਾ ਅਤੇ ਪ੍ਰਕਿਰਤੀ ਨੂੰ ਦਰਸਾਉਣਾ ਹੈ ਜਿਸ ਨਾਲ ਉਹ ਕੰਮ ਕਰ ਰਹੇ ਹਨ। ਇਸ ਲਈ, ਉਹ ਅਕਸਰ ਦਿਲਚਸਪ ਵਿਜੁਅਲਾਈਜ਼ੇਸ਼ਨ, ਜਾਂ ਪਲਾਟ, ਗ੍ਰਾਫ, ਅਤੇ ਚਾਰਟ ਬਣਾਉਂਦੇ ਹਨ, ਜੋ ਡਾਟਾ ਦੇ ਵੱਖ-ਵੱਖ ਪਹਲੂਆਂ ਨੂੰ ਦਿਖਾਉਂਦੇ ਹਨ। ਇਸ ਤਰੀਕੇ ਨਾਲ, ਉਹ ਦ੍ਰਿਸ਼ਟੀਗਤ ਤੌਰ 'ਤੇ ਸੰਬੰਧਾਂ ਅਤੇ ਖਾਲੀਆਂ ਜਗ੍ਹਾ ਦਿਖਾ ਸਕਦੇ ਹਨ ਜੋ ਹੋਰ ਤਰੀਕੇ ਨਾਲ ਖੋਜਣ ਲਈ ਮੁਸ਼ਕਲ ਹੁੰਦੀਆਂ ਹਨ।
+## ਸਮੀਖਿਆ ਅਤੇ ਸਵੈ ਅਧਿਐਨ
-[](https://youtu.be/SbUkxH6IJo0 "ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਲਈ ਸ਼ੁਰੂਆਤੀ - ਮੈਟਪਲਾਟਲਿਬ ਨਾਲ ਡਾਟਾ ਨੂੰ ਵਿਜੁਅਲਾਈਜ਼ ਕਰਨ ਦਾ ਤਰੀਕਾ")
+ਡਾਟਾ ਡਿੱਖਾਉਣ ਦੇ ਕਈ ਤਰੀਕਿਆਂ 'ਤੇ ਇੱਕ ਨਜ਼ਰ ਮਾਰੋ। ਵੱਖ-ਵੱਖ ਲਾਇਬ੍ਰੇਰੀਆਂ ਦੀ ਸੂਚੀ ਬਣਾਓ ਅਤੇ ਜਿਹੜੀਆਂ ਕਿਸ ਤਰ੍ਹਾਂ ਦੇ ਕੰਮਾਂ ਲਈ ਸਭ ਤੋਂ ਵਧੀਆ ਹਨ, ਵਾਂਗ 2D ਵਿਜ਼ੂਅਲਾਈਜ਼ੇਸ਼ਨ ਬਨਾਮ 3D ਵਿਜ਼ੂਅਲਾਈਜ਼ੇਸ਼ਨ, ਲੇਖ ਕਰੋ। ਤੁਸੀਂ ਕੀ ਖੋਜ ਕਰਦੇ ਹੋ?
-> 🎥 ਉੱਪਰ ਦਿੱਤੀ ਤਸਵੀਰ 'ਤੇ ਕਲਿਕ ਕਰੋ ਇਸ ਪਾਠ ਲਈ ਡਾਟਾ ਨੂੰ ਵਿਜੁਅਲਾਈਜ਼ ਕਰਨ ਦੀ ਪ੍ਰਕਿਰਿਆ ਦੇਖਣ ਲਈ ਇੱਕ ਛੋਟਾ ਵੀਡੀਓ।
+## ਅਸਾਈਨਮੈਂਟ
-ਵਿਜੁਅਲਾਈਜ਼ੇਸ਼ਨ ਇਹ ਵੀ ਨਿਰਧਾਰਤ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰ ਸਕਦੇ ਹਨ ਕਿ ਡਾਟਾ ਲਈ ਸਭ ਤੋਂ ਉਚਿਤ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਤਕਨੀਕ ਕਿਹੜੀ ਹੈ। ਇੱਕ ਸਕੈਟਰਪਲ
+[ਵਿਜ਼ੂਅਲਾਈਜ਼ੇਸ਼ਨ ਦੀ ਖੋਜ](assignment.md)
---
-**ਅਸਵੀਕਰਤੀ**:
-ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦਾ ਯਤਨ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁੱਤੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਇਸ ਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਮੌਜੂਦ ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਪ੍ਰਮਾਣਿਕ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੇ ਪ੍ਰਯੋਗ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ।
\ No newline at end of file
+
+**ਅਸਵੀਕਾਰੋਪਣ**:
+ਇਸ ਦਸਤਾਵੇਜ਼ ਦਾ ਅਨੁਵਾਦ ਏਆਈ ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀਤਾਵਾਂ ਲਈ ਯਤਨਸ਼ੀਲ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਰੱਖੋ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸਮੱਤਿਆਵਾਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਆਪਣੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਕ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਜਰੂਰੀ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫ਼ਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਅਸੀਂ ਇਸ ਅਨੁਵਾਦ ਦੇ ਉਪਯੋਗ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੀਆਂ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀਆਂ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆਵਾਂ ਲਈ ਜਵਾਬਦੇਹ ਨਹੀਂ ਹਾਂ।
+
\ No newline at end of file
diff --git a/translations/pa/2-Regression/2-Data/solution/notebook.ipynb b/translations/pa/2-Regression/2-Data/solution/notebook.ipynb
index c9c5602fb..b219ca03f 100644
--- a/translations/pa/2-Regression/2-Data/solution/notebook.ipynb
+++ b/translations/pa/2-Regression/2-Data/solution/notebook.ipynb
@@ -3,7 +3,9 @@
{
"cell_type": "markdown",
"metadata": {},
- "source": []
+ "source": [
+ "## ਕੱਦੂਆਂ ਲਈ ਰੈਖਿਕ ਰਿਗ੍ਰੈਸ਼ਨ - ਪਾਠ 2\n"
+ ]
},
{
"cell_type": "code",
@@ -220,6 +222,7 @@
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
"pumpkins = pd.read_csv('../../data/US-pumpkins.csv')\n",
"\n",
"pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]\n",
@@ -383,18 +386,78 @@
"plt.ylabel(\"Pumpkin Price\")"
]
},
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## ਸੀਬੌਰਨ ਨਾਲ ਵਿਜੁਅਲਾਈਜ਼ ਕਰਨਾ\n",
+ "\n",
+ "[Seaborn](https://seaborn.pydata.org/) ਮੈਟਪਲਾਟਲਿਬ ਦੇ ਉੱਤੇ ਬਣਾਇਆ ਗਿਆ ਹੈ ਅਤੇ ਸਿੱਧੇ ਹੀ ਡਾਟਾ ਫਰੇਮਜ਼ ਨਾਲ ਕੰਮ ਕਰਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਬਹੁਤ ਘੱਟ ਕੋਡ ਨਾਲ ਆਕਰਸ਼ਕ ਸਾਂਖਿਆਕੀ ਪਲਾਟ ਆਸਾਨੀ ਨਾਲ ਬਣਾਏ ਜਾ ਸਕਦੇ ਹਨ।\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### ਸੰਬੰਧ દર્શਾਉਣ ਲਈ ਵਿਖਰਾਵ ਵਾਲੇ ਚਿੱਤਰ \n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "sns.relplot(x=\"Price\", y=\"Month\", kind=\"line\", data=new_pumpkins)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### ਵੰਡਾਂ ਦਿਖਾਉਣ ਲਈ ਬਾਰ ਚਾਰਟ \n"
+ ]
+ },
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
- "source": []
+ "source": [
+ "sns.catplot(x=\"Month\", y=\"Price\", data=new_pumpkins, kind=\"bar\")"
+ ]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "\n---\n\n**ਅਸਵੀਕਰਤੀ**: \nਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁੱਤੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼, ਜੋ ਇਸਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਹੈ, ਨੂੰ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ।\n"
+ "### ਸਬੰਧਤਾਵਾਂ ਵੇਖਾਉਣ ਲਈ ਹੀਟਮੈਪ\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr()\n",
+ "sns.heatmap(correlations, annot=True, cmap=\"coolwarm\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "---\n\n\n**ਅਸਵੀਕਾਰੋਪਣ**:\nਇਸ ਦਸਤਾਵੇਜ਼ ਦਾ ਅਨੁਵਾਦ ਏਆਈ ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀਤਾਵਾਂ ਲਈ ਯਤਨਸ਼ੀਲ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਰੱਖੋ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸਮੱਤਿਆਵਾਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਆਪਣੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਕ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਜਰੂਰੀ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫ਼ਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਅਸੀਂ ਇਸ ਅਨੁਵਾਦ ਦੇ ਉਪਯੋਗ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੀਆਂ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀਆਂ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆਵਾਂ ਲਈ ਜਵਾਬਦੇਹ ਨਹੀਂ ਹਾਂ।\n\n"
]
}
],
@@ -424,13 +487,7 @@
"hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d"
}
},
- "orig_nbformat": 2,
- "coopTranslator": {
- "original_hash": "95726f0b8283628d5356a4f8eb8b4b76",
- "translation_date": "2025-08-29T19:02:56+00:00",
- "source_file": "2-Regression/2-Data/solution/notebook.ipynb",
- "language_code": "pa"
- }
+ "orig_nbformat": 2
},
"nbformat": 4,
"nbformat_minor": 2
diff --git a/translations/pa/2-Regression/4-Logistic/README.md b/translations/pa/2-Regression/4-Logistic/README.md
index 7fe4fcae3..bd048efd0 100644
--- a/translations/pa/2-Regression/4-Logistic/README.md
+++ b/translations/pa/2-Regression/4-Logistic/README.md
@@ -1,77 +1,77 @@
-# ਲਾਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਨਾਲ ਸ਼੍ਰੇਣੀਆਂ ਦੀ ਪੇਸ਼ਗੂਈ
+# ਸ਼੍ਰੇਣੀਆਂ ਦੀ ਭਵਿੱਖਬਾਣੀ ਲਈ ਲੋਜਿਸਟਿਕ ਰੈਗਰੈਸ਼ਨ
-
+
-## [ਪ੍ਰੀ-ਲੈਕਚਰ ਕਵਿਜ਼](https://ff-quizzes.netlify.app/en/ml/)
+## [ਪ੍ਰੀ-ਲੇਕਚਰ ਕਵਿਜ਼](https://ff-quizzes.netlify.app/en/ml/)
> ### [ਇਹ ਪਾਠ R ਵਿੱਚ ਉਪਲਬਧ ਹੈ!](../../../../2-Regression/4-Logistic/solution/R/lesson_4.html)
-## ਪਰਿਚਯ
+## ਜਾਣੁ-ਪਛਾਣ
-ਰਿਗ੍ਰੈਸ਼ਨ ਦੇ ਇਸ ਅੰਤਿਮ ਪਾਠ ਵਿੱਚ, ਜੋ ਕਿ ML ਦੀ ਇੱਕ ਬੁਨਿਆਦੀ _ਕਲਾਸਿਕ_ ਤਕਨੀਕ ਹੈ, ਅਸੀਂ ਲਾਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਦਾ ਅਧਿਐਨ ਕਰਾਂਗੇ। ਤੁਸੀਂ ਇਸ ਤਕਨੀਕ ਨੂੰ ਬਾਈਨਰੀ ਸ਼੍ਰੇਣੀਆਂ ਦੀ ਪੇਸ਼ਗੂਈ ਕਰਨ ਲਈ ਪੈਟਰਨ ਖੋਜਣ ਲਈ ਵਰਤ ਸਕਦੇ ਹੋ। ਕੀ ਇਹ ਕੈਂਡੀ ਚਾਕਲੇਟ ਹੈ ਜਾਂ ਨਹੀਂ? ਕੀ ਇਹ ਬਿਮਾਰੀ ਸੰਕਰਮਕ ਹੈ ਜਾਂ ਨਹੀਂ? ਕੀ ਇਹ ਗਾਹਕ ਇਸ ਉਤਪਾਦ ਨੂੰ ਚੁਣੇਗਾ ਜਾਂ ਨਹੀਂ?
+ਰੈਗਰੈਸ਼ਨ ਬਾਰੇ ਇਸ ਅਖੀਰਲੇ ਪਾਠ ਵਿੱਚ, ਜੋ ਕਿ ਇੱਕ ਮੂਲ _ਪੁਰਾਣੀ_ ਐਮਐਲ ਤਕਨੀਕ ਹੈ, ਅਸੀਂ ਲੋਜਿਸਟਿਕ ਰੈਗਰੈਸ਼ਨ ਉੱਤੇ ਨਜ਼ਰ ਮਾਰਾਂਗੇ। ਤੁਸੀਂ ਇਸ ਤਕਨੀਕ ਨੂੰ ਬਾਇਨਰੀ ਸ਼੍ਰੇਣੀਆਂ ਦੀ ਭਵਿੱਖਬਾਣੀ ਕਰਨ ਲਈ ਵਰਤੋਂਗੇ। ਕੀ ਇਹ ਮਿੱਠਾਈ ਚਾਕਲੇਟ ਹੈ ਜਾਂ ਨਹੀਂ? ਕੀ ਇਹ ਬਿਮਾਰੀ ਸੰਕਰਮਕ ਹੈ ਜਾਂ ਨਹੀਂ? ਕੀ ਇਹ ਗਾਹਕ ਇਸ ਉਤਪਾਦ ਨੂੰ ਚੁਣੇਗਾ ਜਾਂ ਨਹੀਂ?
ਇਸ ਪਾਠ ਵਿੱਚ, ਤੁਸੀਂ ਸਿੱਖੋਗੇ:
-- ਡਾਟਾ ਵਿਜ਼ੁਅਲਾਈਜ਼ੇਸ਼ਨ ਲਈ ਇੱਕ ਨਵੀਂ ਲਾਇਬ੍ਰੇਰੀ
-- ਲਾਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਲਈ ਤਕਨੀਕਾਂ
+- ਡੇਟਾ ਵਿਜ਼ੂਅਲਾਈਜ਼ੇਸ਼ਨ ਲਈ ਇੱਕ ਨਵਾਂ ਲਾਇਬ੍ਰੇਰੀ
+- ਲੋਜਿਸਟਿਕ ਰੈਗਰੈਸ਼ਨ ਦੀਆਂ ਤਕਨੀਕਾਂ
-✅ ਇਸ [Learn module](https://docs.microsoft.com/learn/modules/train-evaluate-classification-models?WT.mc_id=academic-77952-leestott) ਵਿੱਚ ਇਸ ਕਿਸਮ ਦੇ ਰਿਗ੍ਰੈਸ਼ਨ ਨਾਲ ਕੰਮ ਕਰਨ ਦੀ ਸਮਝ ਨੂੰ ਗਹਿਰਾ ਕਰੋ।
+✅ ਇਸ [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) ਹੈ, ਹਾਲਾਂਕਿ ਇਹ ਰੇਖੀ-ਅਧਾਰਿਤ ਹੈ। ਡਾਟਾ ਨੂੰ ਕਲਾਸੀਫਾਈ ਕਰਨ ਦੇ ਹੋਰ ਤਰੀਕਿਆਂ ਬਾਰੇ ਅਗਲੇ ਪਾਠ ਸਮੂਹ ਵਿੱਚ ਸਿੱਖੋ।
+> ਅਸੀਂ ਰੈਗਰੈਸ਼ਨ ਨਾਲ ਸੰਬੰਧਤ ਪਾਠ ਸਮੂਹ ਵਿੱਚ ਬਾਇਨਰੀ ਵਰਗੀਕਰਨ ਦੀ ਗੱਲ ਕਿਉਂ ਕਰ ਰਹੇ ਹਾਂ? ਸਿਰਫ਼ ਭਾਸ਼ਾਈ ਸਹੂਲਤ ਲਈ, ਕਿਉਂਕਿ ਲੋਜਿਸਟਿਕ ਰੈਗਰੈਸ਼ਨ [ਵਾਸਤਵ ਵਿੱਚ ਇੱਕ ਵਰਗੀਕਰਨ ਤਰੀਕਾ ਹੈ](https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression), ਹਾਲਾਂਕਿ ਇਹ ਇੱਕ ਲੀਨੀਅਰ-ਆਧਾਰਿਤ ਹੈ। ਅਗਲੇ ਪਾਠ ਸਮੂਹ ਵਿੱਚ ਡੇਟਾ ਦੀ ਹੋਰ ਕਿਸ ਤਰ੍ਹਾਂ ਵਰਗੀਕਰਨ ਕਰਨੀ ਹੈ, ਇਸ ਬਾਰੇ ਜਾਣੋ।
-## ਪ੍ਰਸ਼ਨ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰੋ
+## ਪ੍ਰਸ਼ਨ ਪਰਿਭਾਸ਼ਿਤ ਕਰੋ
-ਸਾਡੇ ਮਕਸਦ ਲਈ, ਅਸੀਂ ਇਸਨੂੰ ਇੱਕ ਬਾਈਨਰੀ ਵਜੋਂ ਪ੍ਰਗਟ ਕਰਾਂਗੇ: 'ਚਿੱਟਾ' ਜਾਂ 'ਚਿੱਟਾ ਨਹੀਂ'। ਸਾਡੇ ਡਾਟਾਸੈਟ ਵਿੱਚ ਇੱਕ 'ਧਾਰੀਦਾਰ' ਸ਼੍ਰੇਣੀ ਵੀ ਹੈ ਪਰ ਇਸਦੇ ਕੁਝ ਹੀ ਉਦਾਹਰਨ ਹਨ, ਇਸ ਲਈ ਅਸੀਂ ਇਸਨੂੰ ਵਰਤ ਨਹੀਂ ਰਹੇ। ਇਹ ਡਾਟਾਸੈਟ ਤੋਂ null ਮੁੱਲਾਂ ਨੂੰ ਹਟਾਉਣ ਤੋਂ ਬਾਅਦ ਖਤਮ ਹੋ ਜਾਂਦੀ ਹੈ।
+ਸਾਡੇ ਉਦੇਸ਼ ਲਈ, ਅਸੀਂ ਇਸਨੂੰ ਬਾਇਨਰੀ ਰੂਪ ਵਿੱਚ ਪ੍ਰਗਟਾਵਾਂਗੇ: 'ਸਫੈਦ' ਜਾਂ 'ਸਫੈਦ ਨਹੀਂ'। ਸਾਡੇ ਡੇਟਾਸੈੱਟ ਵਿੱਚ ਇੱਕ 'ਧਾਰੀਦਾਰ' ਸ਼੍ਰੇਣੀ ਵੀ ਹੈ ਪਰ ਇਸ ਵਿੱਚ ਕੁਝ ਘਟਨਾਵਾਂ ਹਨ, ਇਸ ਲਈ ਅਸੀਂ ਇਸਨੂੰ ਵਰਤੋਂਗੇ ਨਹੀਂ। ਜੇ ਅਸੀਂ ਡੇਟਾ ਵਿੱਚੋਂ ਨੱਲ ਮੁੱਲ ਹਟਾ ਦਿੰਦੇ ਹਾਂ ਤਾਂ ਇਹ ਗੁੰਮ ਹੋ ਜਾਂਦੀ ਹੈ।
-> 🎃 ਮਜ਼ੇਦਾਰ ਤੱਥ: ਅਸੀਂ ਕਈ ਵਾਰ ਚਿੱਟੇ ਕਦੂਆਂ ਨੂੰ 'ਭੂਤ' ਕਦੂ ਕਹਿੰਦੇ ਹਾਂ। ਇਹ ਕੱਟਣ ਲਈ ਬਹੁਤ ਆਸਾਨ ਨਹੀਂ ਹੁੰਦੇ, ਇਸ ਲਈ ਇਹ ਸੰਤਰੀ ਕਦੂਆਂ ਜਿੰਨੇ ਲੋਕਪ੍ਰਿਯ ਨਹੀਂ ਹਨ, ਪਰ ਇਹ ਦਿਖਣ ਵਿੱਚ ਬਹੁਤ ਕੂਲ ਹੁੰਦੇ ਹਨ! ਇਸ ਲਈ ਅਸੀਂ ਆਪਣੇ ਪ੍ਰਸ਼ਨ ਨੂੰ ਇਸ ਤਰੀਕੇ ਨਾਲ ਵੀ ਦੁਬਾਰਾ ਬਣਾਉਣ ਦੇ ਬਾਰੇ ਸੋਚ ਸਕਦੇ ਹਾਂ: 'ਭੂਤ' ਜਾਂ 'ਭੂਤ ਨਹੀਂ'। 👻
+> 🎃 ਮਜ਼ੇਦਾਰ ਤੱਥ, ਅਸੀਂ ਕਈ ਵਾਰੀ ਸਫੈਦ ਕੱਦੂਆਂ ਨੂੰ 'ਭੂਤ' ਕੱਦੂ ਕਹਿੰਦੇ ਹਾਂ। ਇਹਨਾਂ ਨੂੰ ਕੱਟਣਾ ਵੱਧ ਸੌਖਾ ਨਹੀਂ ਹੁੰਦਾ, ਇਸ ਲਈ ਇਹ ਸੰਤਰੀ ਵਾਲਿਆਂ ਵਾਂਗ ਪਾਪուլਰ ਨਹੀਂ ਹਨ ਪਰ ਇਹ ਦਿੱਖ ਵਿੱਚ ਸ਼ਾਨਦਾਰ ਹੁੰਦੇ ਹਨ! ਇਸ ਲਈ ਅਸੀਂ ਆਪਣਾ ਸਵਾਲ ਮੁੜ ਬਣਾ ਸਕਦੇ ਹਾਂ: 'ਭੂਤ' ਜਾਂ 'ਭੂਤ ਨਹੀਂ'. 👻
-## ਲਾਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਬਾਰੇ
+## ਲੋਜਿਸਟਿਕ ਰੈਗਰੈਸ਼ਨ ਬਾਰੇ
-ਲਾਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਕੁਝ ਮਹੱਤਵਪੂਰਨ ਤਰੀਕਿਆਂ ਵਿੱਚ ਰੇਖੀ ਰਿਗ੍ਰੈਸ਼ਨ ਤੋਂ ਵੱਖਰਾ ਹੈ, ਜਿਸ ਬਾਰੇ ਤੁਸੀਂ ਪਹਿਲਾਂ ਸਿੱਖਿਆ ਸੀ।
+ਲੋਜਿਸਟਿਕ ਰੈਗਰੈਸ਼ਨ ਕੁਝ ਅਹੰਕਾਰਪੂਰਕ ਤਰੀਕਿਆਂ ਵਿੱਚ ਲੀਨੀਅਰ ਰੈਗਰੈਸ਼ਨ ਤੋਂ ਵੱਖਰਾ ਹੈ, ਜਿਸ ਬਾਰੇ ਤੁਸੀਂ ਪਹਿਲਾਂ ਸਿੱਖਿਆ ਸੀ।
-[](https://youtu.be/KpeCT6nEpBY "ML ਸ਼ੁਰੂਆਤੀ ਲਈ - ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਲਈ ਲਾਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਨੂੰ ਸਮਝਣਾ")
+[](https://youtu.be/KpeCT6nEpBY "ਐਮਐਲ ਬੇਗਿਨਰਜ਼ ਲਈ - ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਵਰਗੀਕਰਨ ਲਈ ਲੋਜਿਸਟਿਕ ਰੈਗਰੈਸ਼ਨ ਦੀ ਸਮਝ")
-> 🎥 ਲਾਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਦੇ ਇੱਕ ਛੋਟੇ ਵੀਡੀਓ ਝਲਕ ਲਈ ਉਪਰੋਕਤ ਚਿੱਤਰ 'ਤੇ ਕਲਿਕ ਕਰੋ।
+> 🎥 ਲੋਜਿਸਟਿਕ ਰੈਗਰੈਸ਼ਨ ਦਾ ਇੱਕ ਛੋਟਾ ਵੀਡੀਓ ਵੇਰਵਾ ਦੇਖਣ ਲਈ ਉੱਪਰ ਦਰਸਾਈ ਚਿੱਤਰ 'ਤੇ ਕਲਿੱਕ ਕਰੋ।
-### ਬਾਈਨਰੀ ਕਲਾਸੀਫਿਕੇਸ਼ਨ
+### ਬਾਇਨਰੀ ਵਰਗੀਕਰਨ
-ਲਾਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਰੇਖੀ ਰਿਗ੍ਰੈਸ਼ਨ ਦੇ ਜਿਵੇਂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਨਹੀਂ ਦਿੰਦਾ। ਪਹਿਲਾ ਇੱਕ ਬਾਈਨਰੀ ਸ਼੍ਰੇਣੀ ('ਚਿੱਟਾ ਜਾਂ ਚਿੱਟਾ ਨਹੀਂ') ਬਾਰੇ ਪੇਸ਼ਗੂਈ ਦਿੰਦਾ ਹੈ ਜਦਕਿ ਦੂਜਾ ਲਗਾਤਾਰ ਮੁੱਲਾਂ ਦੀ ਪੇਸ਼ਗੂਈ ਕਰਨ ਦੇ ਯੋਗ ਹੈ, ਉਦਾਹਰਨ ਲਈ, ਕਦੂ ਦੇ ਮੂਲ ਅਤੇ ਫਸਲ ਦੇ ਸਮੇਂ ਦੇ ਆਧਾਰ 'ਇਸਦੀ ਕੀਮਤ ਕਿੰਨੀ ਵਧੇਗੀ'।
+ਲੋਜਿਸਟਿਕ ਰੈਗਰੈਸ਼ਨ ਲੀਨੀਅਰ ਰੈਗਰੈਸ਼ਨ ਵਾਂਗੇ ਫੀਚਰਾਂ ਦਾ ਉਪਲਬਧ ਕਰਵਾਉਂਦਾ ਨਹੀਂ। ਪਹਿਲਾ ਇੱਕ ਬਾਇਨਰੀ ਸ਼੍ਰੇਣੀ ਬਾਰੇ ਅਨੁਮਾਨ ਦਿੰਦਾ ਹੈ ("ਸਫੈਦ ਜਾਂ ਸਫੈਦ ਨਹੀਂ") ਜਦਕਿ ਦੂਜਾ ਲਗਾਤਾਰ ਮੁੱਲਾਂ ਦੀ ਭਵਿੱਖਬਾਣੀ ਕਰ ਸਕਦਾ ਹੈ, ਉਦਾਹਰਨ ਵਜੋਂ ਕਿਸੇ ਕੱਦੂ ਦੇ ਮੂਲ ਅਤੇ ਕਟਾਈ ਦੇ ਸਮੇਂ ਦੇ ਆਧਾਰ 'ਤੇ, _ਉਸ ਦੀ ਕੀਮਤ ਕਿੰਨੀ ਵੱਧੇਗੀ_।
-
-> ਇਨਫੋਗ੍ਰਾਫਿਕ [ਦਸਾਨੀ ਮਾਡੀਪੱਲੀ](https://twitter.com/dasani_decoded) ਦੁਆਰਾ
+
+> ਇਨਫੋਗ੍ਰਾਫਿਕ ਦੁਆਰਾ [ਦਸਾਨੀ ਮਾਡੀਪੱਲੀ](https://twitter.com/dasani_decoded)
-### ਹੋਰ ਕਲਾਸੀਫਿਕੇਸ਼ਨ
+### ਹੋਰ ਵਰਗੀਕਰਨ
-ਲਾਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਦੇ ਹੋਰ ਕਿਸਮਾਂ ਵੀ ਹਨ, ਜਿਵੇਂ ਕਿ ਮਲਟੀਨੋਮਿਅਲ ਅਤੇ ਆਰਡਿਨਲ:
+ਹੋਰ ਕਿਸਮਾਂ ਦੇ ਲੋਜਿਸਟਿਕ ਰੈਗਰੈਸ਼ਨ ਹਨ, ਜਿਵੇਂ ਕਿ ਮਲਟੀਨੋਮਿਯਲ ਅਤੇ ਓਰਡੀਨਲ:
-- **ਮਲਟੀਨੋਮਿਅਲ**, ਜਿਸ ਵਿੱਚ ਇੱਕ ਤੋਂ ਵੱਧ ਸ਼੍ਰੇਣੀਆਂ ਸ਼ਾਮਲ ਹੁੰਦੀਆਂ ਹਨ - "ਸੰਤਰੀ, ਚਿੱਟਾ, ਅਤੇ ਧਾਰੀਦਾਰ"।
-- **ਆਰਡਿਨਲ**, ਜਿਸ ਵਿੱਚ ਕ੍ਰਮਬੱਧ ਸ਼੍ਰੇਣੀਆਂ ਸ਼ਾਮਲ ਹੁੰਦੀਆਂ ਹਨ, ਜੇਕਰ ਅਸੀਂ ਆਪਣੇ ਨਤੀਜਿਆਂ ਨੂੰ ਤਰਕਸੰਗਤ ਤੌਰ 'ਤੇ ਕ੍ਰਮਬੱਧ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹਾਂ, ਜਿਵੇਂ ਕਿ ਸਾਡੇ ਕਦੂ ਜੋ ਇੱਕ ਨਿਰਧਾਰਿਤ ਗਿਣਤੀ ਦੇ ਆਕਾਰਾਂ (mini, sm, med, lg, xl, xxl) ਦੁਆਰਾ ਕ੍ਰਮਬੱਧ ਹਨ।
+- **ਮਲਟੀਨੋਮਿਯਲ**, ਜਿਸ ਵਿੱਚ ਇੱਕ ਤੋਂ ਵੱਧ ਸ਼੍ਰੇਣੀਆਂ ਹੁੰਦੀਆਂ ਹਨ - "ਸੰਤਰੀ, ਸਫੈਦ, ਅਤੇ ਧਾਰੀਦਾਰ"।
+- **ਓਰਡੀਨਲ**, ਜਿਸ ਵਿੱਚ ਆਰਡਰ ਵਾਲੀਆਂ ਸ਼੍ਰੇਣੀਆਂ ਹੁੰਦੀਆਂ ਹਨ, ਜਿਹੜੀਆਂ ਸਾਨੂੰ ਸਾਡੀਆਂ ਨਤੀਜਿਆਂ ਨੂੰ ਲਾਜ਼ਮੀ ਤੌਰ 'ਤੇ ਕ੍ਰਮਵਾਰ ਕਰਨ ਵਿੱਚ ਸਹਾਇਤਾ ਦਿੰਦਾ ਹੈ, ਜਿਵੇਂ ਸਾਡੇ ਕੱਦੂ, ਜੋ ਇੱਕ ਨਿਰਧਾਰਤ ਗਿਣਤੀ ਦੀਆਂ ਸਾਈਜ਼ਾਂ (ਮੀਨੀ, ਛੋਟਾ, ਦਰਮਿਆਨਾ, ਵੱਡਾ, ਐਕਸਐਲ, ਡਬਲ ਐਕਸਐਲ) ਨਾਲ ਕ੍ਰਮਵੱਧ ਹਨ।
-
+
-### ਵੈਰੀਏਬਲਾਂ ਨੂੰ ਸੰਬੰਧਿਤ ਹੋਣ ਦੀ ਲੋੜ ਨਹੀਂ
+### ਵੈਰੀਏਬਲਾਂ ਨੂੰ ਲਾਜ਼ਮੀ ਤੌਰ 'ਤੇ ਇਕ ਦੂਜੇ ਨਾਲ ਸੰਬੰਧਿਤ ਹੋਣਾ ਜ਼ਰੂਰੀ ਨਹੀਂ
-ਯਾਦ ਹੈ ਕਿ ਰੇਖੀ ਰਿਗ੍ਰੈਸ਼ਨ ਵਧੇਰੇ ਸੰਬੰਧਿਤ ਵੈਰੀਏਬਲਾਂ ਨਾਲ ਚੰਗਾ ਕੰਮ ਕਰਦਾ ਸੀ? ਲਾਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਇਸਦਾ ਉਲਟ ਹੈ - ਵੈਰੀਏਬਲਾਂ ਨੂੰ ਸੰਬੰਧਿਤ ਹੋਣ ਦੀ ਲੋੜ ਨਹੀਂ। ਇਹ ਇਸ ਡਾਟਾ ਲਈ ਕੰਮ ਕਰਦਾ ਹੈ ਜਿਸ ਵਿੱਚ ਕੁਝ ਕਮਜ਼ੋਰ ਸੰਬੰਧ ਹਨ।
+ਮਹਿਸੂਸ ਕਰੋ ਕਿ ਲੀਨੀਅਰ ਰੈਗਰੈਸ਼ਨ ਵੱਧ ਸਬੰਧਤ ਵੈਰੀਏਬਲਾਂ ਨਾਲ ਵਧੀਆ ਕੰਮ ਕਰਦਾ ਹੈ? ਲੋਜਿਸਟਿਕ ਰੈਗਰੈਸ਼ਨ ਇਸਦਾ ਉਲਟ ਹੈ - ਵੈਰੀਏਬਲਾਂ ਨੂੰ ਸਹਿਮਤ ਹੋਣ ਦੀ ਲੋੜ ਨਹੀਂ। ਇਹ ਇਸ ਡੇਟਾ ਲਈ ਚੰਗਾ ਹੈ ਜਿਸ ਵਿੱਚ ਛੋਟੀਆਂ ਕੋਰੀਲੇਸ਼ਨ ਹਨ।
-### ਤੁਹਾਨੂੰ ਬਹੁਤ ਸਾਰੇ ਸਾਫ਼ ਡਾਟਾ ਦੀ ਲੋੜ ਹੈ
+### ਤੁਹਾਨੂੰ ਬਹੁਤ ਸਾਫ ਸੂਥਰਾ ਡੇਟਾ ਚਾਹੀਦਾ ਹੈ
-ਲਾਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਜ਼ਿਆਦਾ ਸਹੀ ਨਤੀਜੇ ਦੇਵੇਗਾ ਜੇ ਤੁਸੀਂ ਜ਼ਿਆਦਾ ਡਾਟਾ ਵਰਤੋਂਗੇ; ਸਾਡਾ ਛੋਟਾ ਡਾਟਾਸੈਟ ਇਸ ਕੰਮ ਲਈ ਉਤਮ ਨਹੀਂ ਹੈ, ਇਸ ਲਈ ਇਸਨੂੰ ਯਾਦ ਰੱਖੋ।
+ਜੇ ਤੁਸੀਂ ਵੱਧ ਡੇਟਾ ਵਰਤੋਂਗੇ ਤਾਂ ਲੋਜਿਸਟਿਕ ਰੈਗਰੈਸ਼ਨ ਵਧੀਆ ਨਤੀਜੇ ਦੇਵੇਗਾ; ਸਾਡਾ ਛੋਟਾ ਡੇਟਾਸੈਟ ਇਸ ਕੰਮ ਲਈ ਠੀਕ ਨਹੀਂ ਹੈ, ਇਸ ਲਈ ਇਹ ਯਾਦ ਰੱਖੋ।
-[](https://youtu.be/B2X4H9vcXTs "ML ਸ਼ੁਰੂਆਤੀ ਲਈ - ਲਾਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਲਈ ਡਾਟਾ ਵਿਸ਼ਲੇਸ਼ਣ ਅਤੇ ਤਿਆਰੀ")
+[](https://youtu.be/B2X4H9vcXTs "ਐਮਐਲ ਬੇਗਿਨਰਜ਼ - ਲੋਜਿਸਟਿਕ ਰੈਗਰੈਸ਼ਨ ਲਈ ਡੇਟਾ ਵਿਸ਼ਲੇਸ਼ਣ ਅਤੇ ਤਿਆਰੀ")
-> 🎥 ਲਾਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਲਈ ਡਾਟਾ ਤਿਆਰੀ ਦੇ ਇੱਕ ਛੋਟੇ ਵੀਡੀਓ ਝਲਕ ਲਈ ਉਪਰੋਕਤ ਚਿੱਤਰ 'ਤੇ ਕਲਿਕ ਕਰੋ।
+> 🎥 ਲੀਨੀਅਰ ਰੈਗਰੈਸ਼ਨ ਲਈ ਡੇਟਾ ਤਿਆਰ ਕਰਨ ਬਾਰੇ ਛੋਟਾ ਵੀਡੀਓ ਵੇਖਣ ਲਈ ਉੱਪਰ ਹੇਠਾਂ ਚਿੱਤਰ 'ਤੇ ਕਲਿੱਕ ਕਰੋ
-✅ ਉਹ ਡਾਟਾ ਦੇ ਕਿਸਮਾਂ ਬਾਰੇ ਸੋਚੋ ਜੋ ਲਾਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਲਈ ਚੰਗੇ ਹੋ ਸਕਦੇ ਹਨ।
+✅ ਸੋਚੋ ਕਿ ਕਿਹੜੇ ਕਿਸਮ ਦੇ ਡੇਟਾ ਲੋਜਿਸਟਿਕ ਰੈਗਰੈਸ਼ਨ ਲਈ ਅਨੁਕੂਲ ਹੋਣਗੇ
-## ਅਭਿਆਸ - ਡਾਟਾ ਨੂੰ ਸਾਫ਼ ਕਰੋ
+## ਅਭਿਆਸ - ਡੇਟਾ ਸਾਫ਼ ਕਰੋ
-ਸਭ ਤੋਂ ਪਹਿਲਾਂ, ਡਾਟਾ ਨੂੰ ਕੁਝ ਸਾਫ਼ ਕਰੋ, null ਮੁੱਲਾਂ ਨੂੰ ਹਟਾਓ ਅਤੇ ਕੁਝ ਕਾਲਮਾਂ ਨੂੰ ਚੁਣੋ:
+ਸਭ ਤੋਂ ਪਹਿਲਾਂ, ਡੇਟਾ ਵੱਧ ਸਾਫ਼ ਕਰੋ, ਨੱਲ ਮੁੱਲਾਂ ਨੂੰ ਹਟਾਓ ਅਤੇ ਕਈ ਕਾਲਮਾਂ ਵਿੱਚੋਂ ਕੁਝ ਕਾਲਮਾਂ ਨੂੰ ਚੁਣੋ:
1. ਹੇਠਾਂ ਦਿੱਤਾ ਕੋਡ ਸ਼ਾਮਲ ਕਰੋ:
@@ -83,19 +83,19 @@
pumpkins.dropna(inplace=True)
```
- ਤੁਸੀਂ ਹਮੇਸ਼ਾ ਆਪਣੇ ਨਵੇਂ ਡਾਟਾਫਰੇਮ 'ਤੇ ਇੱਕ ਝਲਕ ਮਾਰ ਸਕਦੇ ਹੋ:
+ ਤੁਸੀਂ ਹਮੇਸ਼ਾ ਆਪਣੇ ਨਵੇਂ ਡਾਟਾ ਫਰੇਮ 'ਤੇ ਇੱਕ ਨਜ਼ਰ ਮਾਰ ਸਕਦੇ ਹੋ:
```python
pumpkins.info
```
-### ਵਿਜ਼ੁਅਲਾਈਜ਼ੇਸ਼ਨ - ਸ਼੍ਰੇਣੀਬੱਧ ਪਲਾਟ
+### ਵਿਜ਼ੂਅਲਾਈਜ਼ੇਸ਼ਨ - ਵਰਗੀਕਰਨ ਪਲੌਟ
-ਹੁਣ ਤੱਕ ਤੁਸੀਂ [ਸ਼ੁਰੂਆਤੀ ਨੋਟਬੁੱਕ](../../../../2-Regression/4-Logistic/notebook.ipynb) ਵਿੱਚ ਕਦੂ ਡਾਟਾ ਲੋਡ ਕਰ ਲਿਆ ਹੈ ਅਤੇ ਇਸਨੂੰ ਸਾਫ਼ ਕੀਤਾ ਹੈ ਤਾਂ ਜੋ ਕੁਝ ਵੈਰੀਏਬਲਾਂ ਸਮੇਤ `Color` ਵਾਲਾ ਡਾਟਾਸੈਟ ਬਚ ਸਕੇ। ਆਓ ਨੋਟਬੁੱਕ ਵਿੱਚ ਡਾਟਾਫਰੇਮ ਨੂੰ ਇੱਕ ਵੱਖਰੀ ਲਾਇਬ੍ਰੇਰੀ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਵਿਜ਼ੁਅਲਾਈਜ਼ ਕਰੀਏ: [Seaborn](https://seaborn.pydata.org/index.html), ਜੋ ਪਹਿਲਾਂ ਵਰਤੇ ਗਏ Matplotlib 'ਤੇ ਬਣਿਆ ਹੈ।
+ਹੁਣ ਤੱਕ ਤੁਸੀਂ [ਸਟਾਰਟਰ ਨੋਟਬੁੱਕ](./notebook.ipynb) ਵਿੱਚ ਕੱਦੂਆਂ ਦਾ ਡੇਟਾ ਮੁੜ ਲੋਡ ਕਰ ਚੁੱਕੇ ਹੋ ਅਤੇ ਸਫਾਈ ਕੀਤੀ ਹੈ ਤਾਂ ਜੋ `Color` ਸਮੇਤ ਕੁਝ ਵੈਰੀਏਬਲਾਂ ਵਾਲਾ ਡੇਟਾਸੈੱਟ ਬਚਾ ਰਹੇ। ਆਓ ਨੋਟਬੁੱਕ ਵਿੱਚ ਇੱਕ ਵੱਖਰੀ ਲਾਇਬ੍ਰੇਰੀ [Seaborn](https://seaborn.pydata.org/index.html) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਡਾਟਾ ਫਰੇਮ ਦਾ ਉਤਪਾਦਨ ਕਰੀਏ, ਜੋ Matplotlib 'ਤੇ ਆਧਾਰਤ ਹੈ ਜੋ ਅਸੀਂ ਪਹਿਲਾਂ ਵਰਤਿਆ ਸੀ।
-Seaborn ਤੁਹਾਡੇ ਡਾਟਾ ਨੂੰ ਵਿਜ਼ੁਅਲਾਈਜ਼ ਕਰਨ ਦੇ ਕੁਝ ਸ਼ਾਨਦਾਰ ਤਰੀਕੇ ਪੇਸ਼ ਕਰਦਾ ਹੈ। ਉਦਾਹਰਨ ਲਈ, ਤੁਸੀਂ ਇੱਕ ਸ਼੍ਰੇਣੀਬੱਧ ਪਲਾਟ ਵਿੱਚ `Variety` ਅਤੇ `Color` ਦੇ ਡਾਟਾ ਦੇ ਵੰਡ ਦੀ ਤੁਲਨਾ ਕਰ ਸਕਦੇ ਹੋ।
+Seaborn ਤੁਹਾਡੇ ਡੇਟਾ ਨੂੰ ਵਿਜ਼ੂਅਲਾਈਜ਼ ਕਰਨ ਦੇ ਕੁਝ ਸੁੰਦਰ ਤਰੀਕੇ ਦਿੰਦਾ ਹੈ। ਉਦਾਹਰਨ ਵਜੋਂ, ਤੁਸੀਂ `Variety` ਅਤੇ `Color` ਹਰ ਇੱਕ ਦੀ ਡੇਟਾ ਦੀਆਂ ਵੰਡਾਂ ਦੀ ਤੁਲਨਾ ਇੱਕ ਵਰਗੀਕਰਨ ਪਲੌਟ ਵਿੱਚ ਕਰ ਸਕਦੇ ਹੋ।
-1. `catplot` ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ, ਸਾਡੇ ਕਦੂ ਡਾਟਾ `pumpkins` ਦੀ ਵਰਤੋਂ ਕਰਕੇ, ਅਤੇ ਹਰ ਕਦੂ ਸ਼੍ਰੇਣੀ (ਸੰਤਰੀ ਜਾਂ ਚਿੱਟਾ) ਲਈ ਇੱਕ ਰੰਗ ਨਕਸ਼ਾ ਨਿਰਧਾਰਤ ਕਰਕੇ, ਇੱਕ ਪਲਾਟ ਬਣਾਓ:
+1. `catplot` ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇੱਕ ਐਸਾ ਪਲੌਟ ਬਣਾਓ, ਸਾਡੇ ਕੱਦੂ ਦੇ ਡੇਟਾ `pumpkins` ਨੂੰ ਵਰਤਦੇ ਹੋਏ, ਅਤੇ ਹਰ ਇੱਕ ਕੱਦੂ ਸ਼੍ਰੇਣੀ ਲਈ ਇੱਕ ਰੰਗ ਨਕਸ਼ਾ ਦਰਸਾਉਂਦੇ ਹੋਏ (ਸੰਤਰੀ ਜਾਂ ਸਫੈਦ):
```python
import seaborn as sns
@@ -111,19 +111,18 @@ Seaborn ਤੁਹਾਡੇ ਡਾਟਾ ਨੂੰ ਵਿਜ਼ੁਅਲਾਈਜ
)
```
- 
+ 
- ਡਾਟਾ ਨੂੰ ਦੇਖ ਕੇ, ਤੁਸੀਂ ਦੇਖ ਸਕਦੇ ਹੋ ਕਿ Color ਡਾਟਾ `Variety` ਨਾਲ ਕਿਵੇਂ ਸੰਬੰਧਿਤ ਹੈ।
+ ਡੇਟਾ ਦੇ ਨਿਰੀਖਣ ਨਾਲ, ਤੁਸੀਂ ਵੇਖ ਸਕਦੇ ਹੋ ਕਿ ਰੰਗ ਦਾ ਡੇਟਾ ਕਿਸ ਤਰ੍ਹਾਂ Variety ਨਾਲ ਸਬੰਧਿਤ ਹੈ।
- ✅ ਇਸ ਸ਼੍ਰੇਣੀਬੱਧ ਪਲਾਟ ਦੇ ਆਧਾਰ ਤੇ, ਤੁਹਾਡੇ ਮਨ ਵਿੱਚ ਕਿਹੜੀਆਂ ਦਿਲਚਸਪ ਖੋਜਾਂ ਆ ਸਕਦੀਆਂ ਹਨ?
+ ✅ ਇਸ ਵਰਗੀਕਰਨ ਪਲੌਟ ਨੂੰ ਦੇਖਦੇ ਹੋਏ, ਤੁਸੀਂ ਕਿਹੜੀਆਂ ਦਿਲਚਸਪ ਖੋਜਾਂ ਕਾ ਸੋਚ ਸਕਦੇ ਹੋ?
-### ਡਾਟਾ ਪ੍ਰੀ-ਪ੍ਰੋਸੈਸਿੰਗ: ਫੀਚਰ ਅਤੇ ਲੇਬਲ ਐਨਕੋਡਿੰਗ
+### ਡੇਟਾ ਪੂਰਵ-ਪ੍ਰਕਿਰਿਆ: ਫੀਚਰ ਅਤੇ ਲੇਬਲ ਇਨਕੋਡਿੰਗ
+ਸਾਡੇ ਕੱਦੂਆਂ ਦੇ ਡੇਟਾਸੈੱਟ ਵਿੱਚ ਸਾਰੇ ਕਾਲਮਾਂ ਲਈ ਸਤਰਾਂ ਦੇ ਮੁੱਲ ਹਨ। ਵਰਗੀਕਰਨ ਡੇਟਾ ਨਾਲ ਕੰਮ ਕਰਨਾ ਮਨੁੱਖਾਂ ਲਈ ਸੁਲਭ ਹੈ ਪਰ ਮਸ਼ੀਨਾਂ ਲਈ ਨਹੀਂ। ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਅਲਗੋਰਿਦਮ ਨੰਬਰਾਂ ਨਾਲ ਵਧੀਆ ਕੰਮ ਕਰਦੇ ਹਨ। ਇਸ ਲਈ ਇਨਕੋਡਿੰਗ ਡੇਟਾ ਦੀ ਪੂਰਵ-ਪ੍ਰਕਿਰਿਆ ਵਿੱਚ ਬਹੁਤ ਅਹੰਕਾਰਪੂਰਕ ਕਦਮ ਹੈ, ਕਿਉਂਕਿ ਇਹ ਸਾਡੇ ਲਈ ਵਰਗੀਕਰਨ ਡੇਟਾ ਨੂੰ ਗਿਣਤੀ ਵਾਲੇ ਡੇਟਾ ਵਿੱਚ ਬਦਲਣਾ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ, ਬਿਨਾਂ ਕਿਸੇ ਜਾਣਕਾਰੀ ਨੂੰ ਗੁਆਏ। ਚੰਗੀ ਇਨਕੋਡਿੰਗ ਇੱਕ ਚੰਗਾ ਮਾਡਲ ਬਨਾਉਂਦੀ ਹੈ।
-ਸਾਡੇ ਕਦੂ ਡਾਟਾਸੈਟ ਵਿੱਚ ਇਸਦੇ ਸਾਰੇ ਕਾਲਮਾਂ ਲਈ ਸਤਰ ਮੁੱਲ ਹਨ। ਸ਼੍ਰੇਣੀਬੱਧ ਡਾਟਾ ਨਾਲ ਕੰਮ ਕਰਨਾ ਮਨੁੱਖਾਂ ਲਈ ਬਹੁਤ ਸਹਜ ਹੈ ਪਰ ਮਸ਼ੀਨਾਂ ਲਈ ਨਹੀਂ। ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਐਲਗੋਰਿਥਮ ਨੰਬਰਾਂ ਨਾਲ ਚੰਗਾ ਕੰਮ ਕਰਦੇ ਹਨ। ਇਸੇ ਲਈ ਐਨਕੋਡਿੰਗ ਡਾਟਾ ਪ੍ਰੀ-ਪ੍ਰੋਸੈਸਿੰਗ ਦੇ ਚਰਨ ਵਿੱਚ ਇੱਕ ਬਹੁਤ ਮਹੱਤਵਪੂਰਨ ਕਦਮ ਹੈ, ਕਿਉਂਕਿ ਇਹ ਸਾਨੂੰ ਸ਼੍ਰੇਣੀਬੱਧ ਡਾਟਾ ਨੂੰ ਸੰਖਿਆਤਮਕ ਡਾਟਾ ਵਿੱਚ ਬਦਲਣ ਯੋਗ ਬਣਾਉਂਦਾ ਹੈ, ਬਿਨਾਂ ਕੋਈ ਜਾਣਕਾਰੀ ਗੁਆਏ। ਚੰਗੀ ਐਨਕੋਡਿੰਗ ਇੱਕ ਚੰਗਾ ਮਾਡਲ ਬਣਾਉਣ ਵਿੱਚ ਸਹਾਇਕ ਹੈ।
+ਫੀਚਰ ਇਨਕੋਡਿੰਗ ਲਈ ਮੁੱਖ ਤੌਰ ਤੇ ਦੋ ਕਿਸਮਾਂ ਦੀਆਂ ਇਨਕੋਡਰ ਹਨ:
-ਫੀਚਰ ਐਨਕੋਡਿੰਗ ਲਈ ਦੋ ਮੁੱਖ ਕਿਸਮ ਦੇ ਐਨਕੋਡਰ ਹਨ:
-
-1. ਆਰਡਿਨਲ ਐਨਕੋਡਰ: ਇਹ ਆਰਡਿਨਲ ਵੈਰੀਏਬਲਾਂ ਲਈ ਚੰਗਾ ਹੈ, ਜੋ ਸ਼੍ਰੇਣੀਬੱਧ ਵੈਰੀਏਬਲ ਹਨ ਜਿਨ੍ਹਾਂ ਦੇ ਡਾਟਾ ਦਾ ਲਾਜ਼ਮੀ ਕ੍ਰਮ ਹੁੰਦਾ ਹੈ, ਜਿਵੇਂ ਕਿ ਸਾਡੇ ਡਾਟਾਸੈਟ ਵਿੱਚ `Item Size` ਕਾਲਮ। ਇਹ ਇੱਕ ਨਕਸ਼ਾ ਬਣਾਉਂਦਾ ਹੈ ਜਿਸ ਵਿੱਚ ਹਰ ਸ਼੍ਰੇਣੀ ਨੂੰ ਇੱਕ ਨੰਬਰ ਦੁਆਰਾ ਦਰਸਾਇਆ ਜਾਂਦਾ ਹੈ, ਜੋ ਕਾਲਮ ਵਿੱਚ ਸ਼੍ਰੇਣੀ ਦਾ ਕ੍ਰਮ ਹੈ।
+1. ਓਰਡੀਨਲ ਇਨਕੋਡਰ: ਇਹ ਓਰਡੀਨਲ ਵੈਰੀਏਬਲਾਂ ਲਈ ਵਧੀਆ ਹੈ, ਜੋ ਵਰਗੀਕਰਨ ਵੈਰੀਏਬਲ ਹੁੰਦੇ ਹਨ ਜਿਥੇ ਡੇਟਾ ਲਾਜ਼ਮੀ ਤੌਰ 'ਤੇ ਇਕ ਤਰਤੀਬ ਵਿੱਚ ਹੁੰਦਾ ਹੈ, ਜਿਵੇਂ ਸਾਡੇ ਡੇਟਾਸੈੱਟ ਵਿੱਚ `Item Size` ਕਾਲਮ। ਇਹ ਐਸਾ ਮੈਪਿੰਗ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਹਰ ਸ਼੍ਰੇਣੀ ਨੂੰ ਇੱਕ ਨੰਬਰ ਨਾਲ ਦਰਸਾਇਆ ਜਾਵੇ, ਜੋ ਉਸ ਕਾਲਮ ਵਿੱਚ ਸ਼੍ਰੇਣੀ ਦੀ ਕ੍ਰਮਬੱਧਤਾ ਹੈ।
```python
from sklearn.preprocessing import OrdinalEncoder
@@ -133,7 +132,7 @@ Seaborn ਤੁਹਾਡੇ ਡਾਟਾ ਨੂੰ ਵਿਜ਼ੁਅਲਾਈਜ
ordinal_encoder = OrdinalEncoder(categories=item_size_categories)
```
-2. ਸ਼੍ਰੇਣੀਬੱਧ ਐਨਕੋਡਰ: ਇਹ ਨਾਮਵਾਚਕ ਵੈਰੀਏਬਲਾਂ ਲਈ ਚੰਗਾ ਹੈ, ਜੋ ਸ਼੍ਰੇਣੀਬੱਧ ਵੈਰੀਏਬਲ ਹਨ ਜਿਨ੍ਹਾਂ ਦੇ ਡਾਟਾ ਦਾ ਲਾਜ਼ਮੀ ਕ੍ਰਮ ਨਹੀਂ ਹੁੰਦਾ, ਜਿਵੇਂ ਕਿ ਸਾਡੇ ਡਾਟਾਸੈਟ ਵਿੱਚ `Item Size` ਤੋਂ ਵੱਖਰੇ ਸਾਰੇ ਫੀਚਰ। ਇਹ ਇੱਕ one-hot ਐਨਕੋਡਿੰਗ ਹੈ, ਜਿਸਦਾ ਅਰਥ ਹੈ ਕਿ ਹਰ ਸ਼੍ਰੇਣੀ ਨੂੰ ਇੱਕ ਬਾਈਨਰੀ ਕਾਲਮ ਦੁਆਰਾ ਦਰਸਾਇਆ ਜਾਂਦਾ ਹੈ: ਐਨਕੋਡ ਕੀਤੀ ਵੈਰੀਏਬਲ 1 ਦੇ ਬਰਾਬਰ ਹੈ ਜੇਕਰ ਕਦੂ ਉਸ Variety ਨਾਲ ਸਬੰਧਿਤ ਹੈ ਅਤੇ 0 ਹੋਰਥਾਂ।
+2. ਵਰਗੀਕਰਨ ਇਨਕੋਡਰ: ਇਹ ਨਾਮਮਾਤਰ ਵੈਰੀਏਬਲਾਂ ਲਈ ਵਧੀਆ ਹੈ, ਜੋ ਕੋਈ ਲਾਜ਼ਮੀ ਤਰਤੀਬ ਨਹੀਂ ਰੱਖਦੇ, ਜਿਵੇਂ ਸਾਡੇ ਡੇਟਾਸੈੱਟ ਵਿੱਚ `Item Size` ਤੋਂ ਵੱਖਰੇ ਫੀਚਰ। ਇਹ ਇੱਕ-ਹੌਟ ਇਨਕੋਡਿੰਗ ਹੈ, ਜਿਸਦਾ ਮਤਲਬ ਹੈ ਕਿ ਹਰ ਸ਼੍ਰੇਣੀ ਇੱਕ ਬਾਈਨਰੀ ਕਾਲਮ ਨਾਲ ਦਰਸਾਈ ਜਾਂਦੀ ਹੈ: ਇਨਕੋਡ ਕੀਤੀ ਵੈਰੀਏਬਲ 1 ਹੁੰਦੀ ਹੈ ਜੇ ਕੱਦੂ ਉਸ Variety ਨਾਲ ਸਬੰਧਤ ਹੈ ਅਤੇ 0 ਹੋਰਥੇ।
```python
from sklearn.preprocessing import OneHotEncoder
@@ -141,8 +140,7 @@ Seaborn ਤੁਹਾਡੇ ਡਾਟਾ ਨੂੰ ਵਿਜ਼ੁਅਲਾਈਜ
categorical_features = ['City Name', 'Package', 'Variety', 'Origin']
categorical_encoder = OneHotEncoder(sparse_output=False)
```
-
-ਫਿਰ, `ColumnTransformer` ਨੂੰ ਕਈ ਐਨਕੋਡਰਾਂ ਨੂੰ ਇੱਕ ਸਿੰਗਲ ਕਦਮ ਵਿੱਚ ਜੋੜਨ ਅਤੇ ਉਨ੍ਹਾਂ ਨੂੰ ਸਹੀ ਕਾਲਮਾਂ 'ਤੇ ਲਾਗੂ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ।
+ਫਿਰ, `ColumnTransformer` ਦਾ ਇਸਤੇਮਾਲ ਇੱਕ ਕਦਮ ਵਿੱਚ ਕਈ ਇਨਕੋਡਰਾਂ ਨੂੰ ਜੋੜਨ ਅਤੇ ਉਚਿਤ ਕਾਲਮਾਂ 'ਤੇ ਲਾਗੂ ਕਰਨ ਲਈ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।
```python
from sklearn.compose import ColumnTransformer
@@ -155,8 +153,7 @@ Seaborn ਤੁਹਾਡੇ ਡਾਟਾ ਨੂੰ ਵਿਜ਼ੁਅਲਾਈਜ
ct.set_output(transform='pandas')
encoded_features = ct.fit_transform(pumpkins)
```
-
-ਦੂਜੇ ਪਾਸੇ, ਲੇਬਲ ਨੂੰ ਐਨਕੋਡ ਕਰਨ ਲਈ, ਅਸੀਂ scikit-learn `LabelEncoder` ਕਲਾਸ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਾਂ, ਜੋ ਲੇਬਲਾਂ ਨੂੰ ਸਧਾਰਨ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰਨ ਲਈ ਇੱਕ ਯੂਟਿਲਿਟੀ ਕਲਾਸ ਹੈ ਤਾਂ ਜੋ ਉਹ ਸਿਰਫ਼ 0 ਤੋਂ n_classes-1 (ਇੱਥੇ, 0 ਅਤੇ 1) ਦੇ ਮੁੱਲਾਂ ਨੂੰ ਸ਼ਾਮਲ ਕਰੇ।
+ਦੂਜੇ ਪਾਸੇ, ਲੇਬਲ ਇਨਕੋਡ ਕਰਨ ਲਈ ਅਸੀਂ ਸਕਾਈਟ-ਲਰਨ ਦਾ `LabelEncoder` ਕਲਾਸ ਵਰਤਦੇ ਹਾਂ, ਜੋ ਕਿ ਇੱਕ ਸਹੂਲਤ ਕਲਾਸ ਹੈ ਜੋ ਲੇਬਲਾਂ ਨੂੰ ਇੱਕ-ਸਧਾਰਣ ਰੂਪ ਵਿੱਚ ਨਿੱਥਾਰਤ ਕਰ ਸਕਦਾ ਹੈ ਜਿਵੇਂ ਕਿ ਉਹ ਸਿਰਫ਼ 0 ਤੋਂ n_classes-1 (ਇੱਥੇ, 0 ਅਤੇ 1) ਦੇ ਦਰਮਿਆਨ ਮੁੱਲ ਰੱਖਦੇ ਹਨ।
```python
from sklearn.preprocessing import LabelEncoder
@@ -164,20 +161,17 @@ Seaborn ਤੁਹਾਡੇ ਡਾਟਾ ਨੂੰ ਵਿਜ਼ੁਅਲਾਈਜ
label_encoder = LabelEncoder()
encoded_label = label_encoder.fit_transform(pumpkins['Color'])
```
-
-ਜਦੋਂ ਸਾਨੂੰ ਫੀਚਰ ਅਤੇ ਲੇਬਲ ਐਨਕੋਡ ਕਰ ਲਏ, ਅਸੀਂ ਉਨ੍ਹਾਂ ਨੂੰ ਇੱਕ ਨਵੇਂ ਡਾਟਾਫਰੇਮ `encoded_pumpkins` ਵਿੱਚ ਮਿਲਾ ਸਕਦੇ ਹਾਂ।
+ਜਦੋਂ ਅਸੀਂ ਫੀਚਰ ਅਤੇ ਲੇਬਲ ਨੂੰ ਇਨਕੋਡ ਕਰ ਲੈਂਦੇ ਹਾਂ, ਅਸੀਂ ਉਨ੍ਹਾਂ ਨੂੰ ਇੱਕ ਨਵੇਂ ਡੇਟਾ ਫਰੇਮ `encoded_pumpkins` ਵਿਚ ਜੋੜ ਸਕਦੇ ਹਾਂ।
```python
encoded_pumpkins = encoded_features.assign(Color=encoded_label)
```
+✅ `Item Size` ਕਾਲਮ ਲਈ ਓਰਡੀਨਲ ਇਨਕੋਡਰ ਵਰਤਣ ਦੇ ਕੀ ਫਾਇਦੇ ਹਨ?
-✅ `Item Size` ਕਾਲਮ ਲਈ ਆਰਡਿਨਲ ਐਨਕੋਡਰ ਦੀ ਵਰਤੋਂ ਕਰਨ ਦੇ ਫਾਇਦੇ ਕੀ ਹਨ?
+### ਵੈਰੀਏਬਲਾਂ ਵਿਚਕਾਰ ਸੰਬੰਧਾਂ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰੋ
-### ਵੈਰੀਏਬਲਾਂ ਦੇ ਵਿਚਕਾਰ ਸੰਬੰਧਾਂ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰੋ
-
-ਹੁਣ ਜਦੋਂ ਅਸੀਂ ਆਪਣੇ ਡਾਟਾ ਨੂੰ ਪ੍ਰੀ-ਪ੍ਰੋਸੈਸ ਕਰ ਲਿਆ ਹੈ, ਅਸੀਂ ਫੀਚਰ ਅਤੇ ਲੇਬਲ ਦੇ ਵਿਚਕਾਰ ਸੰਬੰਧਾਂ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰ ਸਕਦੇ ਹਾਂ ਤਾਂ ਜੋ ਇਹ ਸਮਝ ਸਕੀਏ ਕਿ ਮਾਡਲ ਫੀਚਰ ਦੇ ਆਧਾਰ 'ਤੇ ਲੇਬਲ ਦੀ ਪੇਸ਼ਗੂਈ ਕਿੰਨਾ ਚੰਗਾ ਕਰੇਗਾ।
-
-ਇਸ ਕਿਸਮ ਦੇ ਵਿਸ਼ਲੇਸ਼ਣ ਨੂੰ ਕਰਨ ਦਾ ਸਭ ਤੋਂ ਵਧੀਆ ਤਰੀਕਾ ਡਾਟਾ ਨੂੰ ਪਲਾਟ ਕਰਨਾ ਹੈ। ਅਸੀਂ ਫਿਰ Seaborn `catplot` ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਾਂਗੇ, `Item Size`, `Variety` ਅਤੇ `Color` ਦੇ ਵਿਚਕਾਰ ਸੰਬੰਧਾਂ ਨੂੰ ਇੱਕ ਸ਼੍ਰੇਣੀਬੱਧ ਪਲਾਟ ਵਿੱਚ ਵਿਜ਼ੁਅਲਾਈਜ਼ ਕਰਨ ਲਈ। ਡਾਟਾ ਨੂੰ ਵਧੀਆ ਪਲਾਟ ਕਰਨ ਲਈ ਅਸੀਂ ਐਨਕੋਡ ਕੀਤੇ `Item Size` ਕਾਲਮ ਅਤੇ ਅਨਐਨਕੋਡ ਕੀਤੇ `Variety` ਕਾਲਮ ਦੀ ਵਰਤੋਂ ਕਰਾਂਗੇ।
+ਹੁਣ ਜਦੋਂ ਅਸੀਂ ਆਪਣੇ ਡੇਟਾ ਦੀ ਪੂਰਵ-ਪ੍ਰਕਿਰਿਆ ਕਰ ਲਈ ਹੈ, ਅਸੀਂ ਫੀਚਰਾਂ ਅਤੇ ਲੇਬਲ ਦੇ ਸੰਬੰਧਾਂ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰ ਸਕਦੇ ਹਾਂ ਤਾਂ ਜੋ ਇਹ ਸਮਝ ਬਣਾ ਸਕੀਏ ਕਿ ਮਾਡਲ ਫੀਚਰਾਂ ਦੇ ਆਧਾਰ 'ਤੇ ਲੇਬਲ ਦੀ ਭਵਿੱਖਬਾਣੀ ਕਿੰਨੀ ਵਧੀਆ ਕਰ ਸਕਦਾ ਹੈ।
+ਇਸ ਕਿਸਮ ਦੇ ਵਿਸ਼ਲੇਸ਼ਣ ਲਈ ਸਭ ਤੋਂ ਵਧੀਆ ਤਰੀਕਾ ਹੈ ਡੇਟਾ ਨੂੰ ਪਲੌਟ ਕਰਨਾ। ਅਸੀਂ ਫਿਰ ਤੋਂ Seaborn ਦਾ `catplot` ਫੰਕਸ਼ਨ ਵਰਤਾਂਗੇ, `Item Size`, `Variety` ਅਤੇ `Color` ਵਿਚਕਾਰ ਸੰਬੰਧਾਂ ਨੂੰ ਇੱਕ ਵਰਗੀਕਰਨ ਪਲੌਟ ਵਿੱਚ ਵੇਖਣ ਲਈ। ਡੇਟਾ ਨੂੰ ਬਿਹਤਰ ਪਲੌਟ ਕਰਨ ਲਈ ਅਸੀਂ ਇਨਕੋਡ ਕੀਤਾ ਹੋਇਆ `Item Size` ਕਾਲਮ ਅਤੇ ਅਣਇਨਕੋਡ ਕੀਤਾ ਹੋਇਆ `Variety` ਕਾਲਮ ਵਰਤਾਂਗੇ।
```python
palette = {
@@ -196,49 +190,163 @@ Seaborn ਤੁਹਾਡੇ ਡਾਟਾ ਨੂੰ ਵਿਜ਼ੁਅਲਾਈਜ
g.set(xlabel="Item Size", ylabel="").set(xlim=(0,6))
g.set_titles(row_template="{row_name}")
```
+
+
+### ਇੱਕ ਸਵਾਰਮ ਪਲੌਟ ਵਰਤੋਂ
+
+ਜਿਵੇਂ ਕਿ Color ਇੱਕ ਬਾਇਨਰੀ ਸ਼੍ਰੇਣੀ ਹੈ (ਸਫੈਦ ਜਾਂ ਨਹੀਂ), ਇਸਨੂੰ ਵਿਜ਼ੂਅਲਾਈਜ਼ ਕਰਨ ਲਈ 'ਵਿਸ਼ੇਸ਼ ਤਰੀਕੇ' ਦੀ ਜ਼ਰੂਰਤ ਹੁੰਦੀ ਹੈ। ਇਸ ਸ਼੍ਰੇਣੀ ਦੇ ਹੋਰ ਵੈਰੀਏਬਲਾਂ ਨਾਲ ਸੰਬੰਧਾਂ ਨੂੰ ਵੇਖਣ ਦੇ ਹੋਰ ਤਰੀਕਿਆਂ ਵੀ ਹਨ।
+
+ਤੁਸੀਂ 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' ਵਜੋਂ ਵਰਗੀਕ੍ਰਿਤ ਕੀਤਾ ਜਾਵੇਗਾ।
+
+## ਆਪਣਾ ਮਾਡਲ ਬਣਾਓ
+
+ਸਕਾਈਟ-ਲਰਨ ਵਿਚ ਇਹ ਬਾਇਨਰੀ ਵਰਗੀਕਰਨ ਲੱਭਣ ਲਈ ਮਾਡਲ ਬਣਾਉਣਾ ਹੈਰਾਨ ਕਰਨ ਵਾਲਾ ਤੌਰ 'ਤੇ ਸਿੱਧਾ ਹੈ।
+
+[](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
+ ```
+
+## ਇਕਨੁਭਵ ਮੈਟ੍ਰਿਕਸ ਰਾਹੀਂ ਬੇਹਤਰ ਸਮਝ
+
+ਜਦੋਂ ਤੁਸੀਂ [terms](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.classification_report.html?highlight=classification_report#sklearn.metrics.classification_report) ਪ੍ਰਿੰਟ ਕਰਕੇ ਸਕੋਰਬੋਰਡ ਰਿਪੋਰਟ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦੇ ਹੋ, ਤਾਂ ਤੁਸੀਂ ਆਪਣੇ ਮਾਡਲ ਦੀ ਕਾਰਗੁਜ਼ਾਰੀ ਨੂੰ ਬਿਹਤਰ ਸਮਝਣ ਲਈ ਇੱਕ [ਕਨਫਿਊਜ਼ਨ ਮੈਟ੍ਰਿਕਸ](https://scikit-learn.org/stable/modules/model_evaluation.html#confusion-matrix) ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹੋ।
+
+> 🎓 ਇੱਕ '[ਕਨਫਿਊਜ਼ਨ ਮੈਟ੍ਰਿਕਸ](https://wikipedia.org/wiki/Confusion_matrix)' (ਜਾਂ 'ਐਰਰ ਮੈਟ੍ਰਿਕਸ') ਇਕ ਸਾਰਣੀ ਹੁੰਦੀ ਹੈ ਜੋ ਤੁਹਾਡੇ ਮਾਡਲ ਦੇ ਸੱਚੇ ਅਤੇ ਗਲਤ ਪੋਜ਼ੀਟਿਵ ਅਤੇ ਨੇਗੇਟਿਵ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰਦੀ ਹੈ, ਇਸ ਤਰ੍ਹਾਂ ਭਵਿੱਖਬਾਣੀਆਂ ਦੀ ਯਥਾਰਥਤਾ ਨੂੰ ਅੰਕਿਤ ਕਰਦੀ ਹੈ।
+
+1. ਕਨਫਿਊਜ਼ਨ ਮੈਟ੍ਰਿਕਸ ਵਰਤਣ ਲਈ, `confusion_matrix()` ਕਾਲ ਕਰੋ:
+
+ ```python
+ from sklearn.metrics import confusion_matrix
+ confusion_matrix(y_test, predictions)
+ ```
+
+ ਆਪਣੇ ਮਾਡਲ ਦੀ ਕਨਫਿਊਜ਼ਨ ਮੈਟ੍ਰਿਕਸ ਦੇਖੋ:
+
+ ```output
+ array([[162, 4],
+ [ 11, 22]])
+ ```
+
+ਸਕਾਈਟ-ਲਰਨ ਵਿੱਚ, ਕਨਫਿਊਜ਼ਨ ਮੈਟ੍ਰਿਕਸ ਰੋਜ਼ (ਅਕਸ 0) ਅਸਲੀ ਲੇਬਲ ਹਨ ਅਤੇ ਕਾਲਮ (ਅਕਸ 1) ਅਨੁਮਾਨਿਤ ਲੇਬਲ ਹਨ।
+
+| | 0 | 1 |
+| :---: | :---: | :---: |
+| 0 | TN | FP |
+| 1 | FN | TP |
-
+ਇੱਥੇ ਕੀ ਹੋ ਰਿਹਾ ਹੈ? ਚਲੋ ਕਹੀਏ ਸਾਡਾ ਮਾਡਲ ਕੱਦੂਆਂ ਨੂੰ ਦੋ ਬਾਇਨਰੀ ਸ਼੍ਰੇਣੀਆਂ ਵਿੱਚ ਵੰਡਣ ਲਈ ਪੁੱਛਿਆ ਗਿਆ ਹੈ, ਸ਼੍ਰੇਣੀ 'ਸਫੈਦ' ਅਤੇ ਸ਼੍ਰੇਣੀ 'ਸਫੈਦ-ਨਹੀਂ'।
-### ਸਵਾਰਮ ਪਲਾਟ ਦੀ ਵਰਤੋਂ ਕਰੋ
+- ਜੇ ਤੁਹਾਡਾ ਮਾਡਲ ਕੱਦੂ ਨੂੰ ਸਫੈਦ ਨਾ ਕਹਿੰਦਾ ਹੈ ਅਤੇ ਉਹ ਅਸਲ ਵਿੱਚ 'ਸਫੈਦ-ਨਹੀਂ' ਸ਼੍ਰੇਣੀ ਵਿੱਚ ਆਉਂਦਾ ਹੈ ਤਾਂ ਅਸੀਂ ਇਸਨੂੰ ਸੱਚਾ ਨਕਾਰਾਤਮਕ ਕਹਿੰਦੇ ਹਾਂ, ਜੋ ਸਿਖਰਲੇ ਖੱਬੇ ਨੰਬਰ ਨਾਲ ਦਰਸਾਇਆ ਗਿਆ ਹੈ।
+- ਜੇ ਤੁਹਾਡਾ ਮਾਡਲ ਕੱਦੂ ਨੂੰ ਸਫੈਦ ਕਹਿੰਦਾ ਹੈ ਅਤੇ ਉਹ ਅਸਲ ਵਿੱਚ 'ਸਫੈਦ-ਨਹੀਂ' ਸ਼੍ਰੇਣੀ ਵਿੱਚ ਆਉਂਦਾ ਹੈ ਤਾਂ ਅਸੀਂ ਇਸਨੂੰ ਗਲਤ ਨਕਾਰਾਤਮਕ ਕਹਿੰਦੇ ਹਾਂ, ਜੋ ਹੇਠਲੇ ਖੱਬੇ ਨੰਬਰ ਨਾਲ ਦਰਸਾਇਆ ਗਿਆ ਹੈ।
+- ਜੇ ਤੁਹਾਡਾ ਮਾਡਲ ਕੱਦੂ ਨੂੰ ਸਫੈਦ ਨਾ ਕਹਿੰਦਾ ਹੈ ਅਤੇ ਉਹ ਅਸਲ ਵਿੱਚ 'ਸਫੈਦ' ਸ਼੍ਰੇਣੀ ਵਿੱਚ ਆਉਂਦਾ ਹੈ ਤਾਂ ਅਸੀਂ ਇਸਨੂੰ ਗਲਤ ਸਕਾਰਾਤਮਕ ਕਹਿੰਦੇ ਹਾਂ, ਜੋ ਸਿਖਰਲੇ ਸੱਜੇ ਨੰਬਰ ਨਾਲ ਦਰਸਾਇਆ ਗਿਆ ਹੈ।
+- ਜੇ ਤੁਹਾਡਾ ਮਾਡਲ ਕੱਦੂ ਨੂੰ ਸਫੈਦ ਕਹਿੰਦਾ ਹੈ ਅਤੇ ਉਹ ਅਸਲ ਵਿੱਚ 'ਸਫੈਦ' ਸ਼੍ਰੇਣੀ ਵਿੱਚ ਆਉਂਦਾ ਹੈ ਤਾਂ ਅਸੀਂ ਇਸਨੂੰ ਸੱਚਾ ਸਕਾਰਾਤਮਕ ਕਹਿੰਦੇ ਹਾਂ, ਜੋ ਹੇਠਲੇ ਸੱਜੇ ਨੰਬਰ ਨਾਲ ਦਰਸਾਇਆ ਗਿਆ ਹੈ।
-ਕਿਉਂਕਿ Color ਇੱਕ ਬਾਈਨਰੀ ਸ਼੍ਰੇਣੀ ਹੈ (ਚਿੱਟਾ ਜਾਂ ਚਿੱਟਾ ਨਹੀਂ), ਇਸਨੂੰ ਵਿਜ਼ੁਅਲਾਈਜ਼ ਕਰਨ ਲਈ 'ਇੱਕ [ਵਿਸ਼ੇਸ਼ ਤਰੀਕਾ](https://seaborn.pydata.org/tutorial/categorical.html?highlight=bar)' ਦੀ ਲੋੜ ਹੈ। ਇਸ ਸ਼੍ਰੇਣੀ ਦੇ ਹੋਰ ਵੈਰੀਏਬਲਾਂ ਨਾਲ ਸੰਬੰਧ ਨੂੰ ਵਿਜ਼ੁਅਲਾਈਜ਼ ਕਰਨ ਦੇ ਹੋਰ ਤਰੀਕੇ ਹਨ।
-ਤੁਸੀਂ Seaborn ਪਲਾਟਾਂ ਨਾਲ ਵੈਰੀਏਬਲਾਂ ਨੂੰ ਸਾਈਡ-ਬਾਈ-ਸਾਈਡ ਵਿਜ਼ੁਅਲਾਈਜ਼ ਕਰ ਸਕਦੇ ਹੋ।
+ਜਿਵੇਂ ਤੁਸੀਂ ਸ਼ਾਇਦ ਅਨੁਮਾਨ ਲਗਾਇਆ ਹੋਵੇਗਾ, ਇਹ ਚੰਗਾ ਹੈ ਕਿ ਸੱਚੇ ਸਕਾਰਾਤਮਕਾਂ ਅਤੇ ਸੱਚੇ ਨਕਾਰਾਤਮਕਾਂ ਦੀ ਗਿਣਤੀ ਵੱਧ ਹੋਵੇ ਅਤੇ ਗਲਤ ਸਕਾਰਾਤਮਕਾਂ ਅਤੇ ਗਲਤ ਨਕਾਰਾਤਮਕਾਂ ਦੀ ਗਿਣਤੀ ਘੱਟ ਹੋਵੇ, ਜਿਹੜਾ ਮਾਡਲ ਦੇ ਬਿਹਤਰ ਹੋਣ ਦਾ ਸੂਚਕ ਹੁੰਦਾ ਹੈ।
-1. ਮੁੱਲਾਂ
-ਕਨਫਿਊਜ਼ਨ ਮੈਟ੍ਰਿਕਸ ਪ੍ਰਿਸੀਜ਼ਨ ਅਤੇ ਰੀਕਾਲ ਨਾਲ ਕਿਵੇਂ ਸੰਬੰਧਿਤ ਹੈ? ਯਾਦ ਰੱਖੋ, ਉੱਪਰ ਪ੍ਰਿੰਟ ਕੀਤੀ ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਰਿਪੋਰਟ ਨੇ ਪ੍ਰਿਸੀਜ਼ਨ (0.85) ਅਤੇ ਰੀਕਾਲ (0.67) ਦਿਖਾਈ।
+ਗਲਤਫਹਮੀ ਮੈਟ੍ਰਿਕਸ PRECISION ਅਤੇ RECALL ਨਾਲ ਕਿਵੇਂ ਸੰਬੰਧਿਤ ਹੈ? ਯਾਦ ਰੱਖੋ, ਉਪਰ ਦਿੱਤੇ ਗਏ ਵਰਗੀਕਰਨ ਰਿਪੋਰਟ ਵਿੱਚ PRECISION (0.85) ਅਤੇ RECALL (0.67) ਦਰਸਾਇਆ ਗਿਆ ਸੀ।
-ਪ੍ਰਿਸੀਜ਼ਨ = tp / (tp + fp) = 22 / (22 + 4) = 0.8461538461538461
+Precision = tp / (tp + fp) = 22 / (22 + 4) = 0.8461538461538461
-ਰੀਕਾਲ = tp / (tp + fn) = 22 / (22 + 11) = 0.6666666666666666
+Recall = tp / (tp + fn) = 22 / (22 + 11) = 0.6666666666666666
-✅ ਪ੍ਰਸ਼ਨ: ਕਨਫਿਊਜ਼ਨ ਮੈਟ੍ਰਿਕਸ ਦੇ ਅਨੁਸਾਰ, ਮਾਡਲ ਕਿਵੇਂ ਕਰ ਰਿਹਾ ਹੈ? ਜਵਾਬ: ਬੁਰਾ ਨਹੀਂ; ਸਹੀ ਨੈਗੇਟਿਵਜ਼ ਦੀ ਚੰਗੀ ਗਿਣਤੀ ਹੈ ਪਰ ਕੁਝ ਗਲਤ ਨੈਗੇਟਿਵਜ਼ ਵੀ ਹਨ।
+✅ ਪ੍ਰਸ਼ਨ: ਗਲਤਫਹਮੀ ਮੈਟ੍ਰਿਕਸ ਮੁਤਾਬਕ, ਮਾਡਲ ਕਿਵੇਂ ਕੀਤਾ? ਜਵਾਬ: ਬੁਰਾ ਨਹੀਂ; ਸੱਚੇ ਨਕਾਰਾਤਮਕਾਂ ਦੀ ਵਧੀਆ ਗਿਣਤੀ ਹੈ ਪਰ ਕੁਝ ਗਲਤ ਨਕਾਰਾਤਮਕ ਵੀ ਹਨ।
-ਆਓ ਉਹ ਸ਼ਬਦਾਵਲੀ ਦੁਬਾਰਾ ਵੇਖੀਏ ਜੋ ਅਸੀਂ ਪਹਿਲਾਂ ਦੇਖੀ ਸੀ, TP/TN ਅਤੇ FP/FN ਦੇ ਕਨਫਿਊਜ਼ਨ ਮੈਟ੍ਰਿਕਸ ਦੇ ਮੈਪਿੰਗ ਦੀ ਮਦਦ ਨਾਲ:
+ਆਓ ਫਿਰ ਉਸ ਸ਼ਬਦਾਵਲੀ ਨੂੰ ਮੁੜ ਵੇਖੀਏ ਜੋ ਅਸੀਂ ਪਹਿਲਾਂ ਗਲਤਫਹਮੀ ਮੈਟ੍ਰਿਕਸ ਦੇ TP/TN ਅਤੇ FP/FN ਨਾਲ ਦੇਖੀ ਸੀ:
-🎓 ਪ੍ਰਿਸੀਜ਼ਨ: TP/(TP + FP) ਰਿਕਵਰ ਕੀਤੇ ਗਏ ਇੰਸਟੈਂਸ ਵਿੱਚੋਂ ਸਬੰਧਤ ਇੰਸਟੈਂਸ ਦਾ ਅੰਸ਼ (ਉਦਾਹਰਣ ਲਈ, ਕਿਹੜੇ ਲੇਬਲ ਚੰਗੀ ਤਰ੍ਹਾਂ ਲੇਬਲ ਕੀਤੇ ਗਏ)
+🎓 Precision: TP/(TP + FP) ਪ੍ਰਾਪਤ ਕੀਤੀਆਂ ਘਟਨਾਵਾਂ ਵਿੱਚੋਂ ਸੰਬੰਧਿਤ ਘਟਨਾਵਾਂ ਦਾ ਅਨੁਪਾਤ (ਉਦਾਹਰਨ ਵਜੋਂ, ਜਿਹੜੇ ਲੇਬਲ ਚੰਗੇ ਤਰੀਕੇ ਨਾਲ ਲੇਬਲ ਕੀਤੇ ਗਏ)
-🎓 ਰੀਕਾਲ: TP/(TP + FN) ਸਬੰਧਤ ਇੰਸਟੈਂਸ ਦਾ ਅੰਸ਼ ਜੋ ਰਿਕਵਰ ਕੀਤਾ ਗਿਆ, ਚਾਹੇ ਚੰਗੀ ਤਰ੍ਹਾਂ ਲੇਬਲ ਕੀਤਾ ਗਿਆ ਹੋ ਜਾਂ ਨਹੀਂ
+🎓 Recall: TP/(TP + FN) ਸੰਬੰਧਿਤ ਘਟਨਾਵਾਂ ਵਿੱਚੋਂ ਜਿਹੜੀਆਂ ਪ੍ਰਾਪਤ ਕੀਤੀਆਂ ਗਈਆਂ ਹਨ, ਚਾਹੇ ਚੰਗੇ ਤਰੀਕੇ ਨਾਲ ਲੇਬਲ ਕੀਤੀਆਂ ਹੋਣ ਜਾਂ ਨਾ ਹੋਣ
-🎓 f1-ਸਕੋਰ: (2 * ਪ੍ਰਿਸੀਜ਼ਨ * ਰੀਕਾਲ)/(ਪ੍ਰਿਸੀਜ਼ਨ + ਰੀਕਾਲ) ਪ੍ਰਿਸੀਜ਼ਨ ਅਤੇ ਰੀਕਾਲ ਦਾ ਵਜ਼ਨੀ ਔਸਤ, ਸਭ ਤੋਂ ਵਧੀਆ 1 ਅਤੇ ਸਭ ਤੋਂ ਖਰਾਬ 0
+🎓 f1-score: (2 * precision * recall)/(precision + recall) ਪ੍ਰਿਸਿਜ਼ਨ ਅਤੇ ਰੀਕਾਲ ਦਾ ਭਾਰਿਤ ਮਿਆਰੀਕਰਨ, 1 ਸਭ ਤੋਂ ਵਧੀਆ ਅਤੇ 0 ਸਭ ਤੋਂ ਠੀਕ ਨਹੀਂ
-🎓 ਸਪੋਰਟ: ਹਰ ਲੇਬਲ ਲਈ ਰਿਕਵਰ ਕੀਤੇ ਗਏ ਇੰਸਟੈਂਸ ਦੀ ਗਿਣਤੀ
+🎓 Support: ਪ੍ਰਾਪਤ ਕੀਤੇ ਗਏ ਹਰ ਲੇਬਲ ਦੀ ਘਟਨਾ ਦੀ ਗਿਣਤੀ
-🎓 ਐਕੁਰੇਸੀ: (TP + TN)/(TP + TN + FP + FN) ਨਮੂਨੇ ਲਈ ਸਹੀ ਤਰੀਕੇ ਨਾਲ ਅਨੁਮਾਨਿਤ ਲੇਬਲਾਂ ਦਾ ਪ੍ਰਤੀਸ਼ਤ।
+🎓 Accuracy: (TP + TN)/(TP + TN + FP + FN) ਨਮੂਨੇ ਲਈ ਸਹੀ ਤਰੀਕੇ ਨਾਲ ਭਵਿੱਖਵਾਣੀ ਕੀਤੇ ਗਏ ਲੇਬਲਾਂ ਦਾ ਪ੍ਰਤੀਸ਼ਤ।
-🎓 ਮੈਕਰੋ ਐਵਰੇਜ: ਹਰ ਲੇਬਲ ਲਈ ਅਣਵਜ਼ਨੀ ਮੀਨ ਮੈਟ੍ਰਿਕਸ ਦੀ ਗਣਨਾ, ਲੇਬਲ ਅਸਮਤਲਤਾ ਨੂੰ ਧਿਆਨ ਵਿੱਚ ਨਾ ਲਿਆਉਂਦੇ ਹੋਏ।
+🎓 Macro Avg: ਹਰ ਲੇਬਲ ਲਈ ਬਿਨਾ ਵਜ਼ਨ ਵਾਲੇ ਗਣਨਾ ਮਿਆਰ, ਲੇਬਲ ਅਸੰਤੁਲਨ ਨੂੰ ਧਿਆਨ ਵਿੱਚ ਨਾ ਲੈਂਦੇ ਹੋਏ।
-🎓 ਵਜ਼ਨੀ ਐਵਰੇਜ: ਹਰ ਲੇਬਲ ਲਈ ਮੀਨ ਮੈਟ੍ਰਿਕਸ ਦੀ ਗਣਨਾ, ਲੇਬਲ ਅਸਮਤਲਤਾ ਨੂੰ ਧਿਆਨ ਵਿੱਚ ਲਿਆਉਂਦੇ ਹੋਏ, ਉਨ੍ਹਾਂ ਦੇ ਸਪੋਰਟ (ਹਰ ਲੇਬਲ ਲਈ ਸਹੀ ਇੰਸਟੈਂਸ ਦੀ ਗਿਣਤੀ) ਦੁਆਰਾ ਵਜ਼ਨੀ।
+🎓 Weighted Avg: ਹਰ ਲੇਬਲ ਲਈ ਮਿਆਰ ਮਾਪਦਾ ਹੈ, ਜਿਸ ਵਿੱਚ ਲੇਬਲ ਅਸੰਤੁਲਨ ਨੂੰ ਧਿਆਨ ਵਿੱਚ ਰੱਖ ਕੇ ਤਿੰਨਦੇ ਸਹਾਇਤਾ (ਸੱਚੇ ਘਟਨਾਵਾਂ ਦੀ ਗਿਣਤੀ) ਨਾਲ ਭਾਰ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ।
-✅ ਕੀ ਤੁਸੀਂ ਸੋਚ ਸਕਦੇ ਹੋ ਕਿ ਕਿਹੜੀ ਮੈਟ੍ਰਿਕਸ ਨੂੰ ਦੇਖਣਾ ਚਾਹੀਦਾ ਹੈ ਜੇ ਤੁਸੀਂ ਆਪਣੇ ਮਾਡਲ ਵਿੱਚ ਗਲਤ ਨੈਗੇਟਿਵਜ਼ ਦੀ ਗਿਣਤੀ ਘਟਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ?
+✅ ਕੀ ਤੁਸੀਂ ਸੋਚ ਸਕਦੇ ਹੋ ਕਿ ਤੁਹਾਡੇ ਮਾਡਲ ਨੂੰ ਗਲਤ ਨਕਾਰਾਤਮਕਾਂ ਦੀ ਗਿਣਤੀ ਘਟਾਉਣ ਲਈ ਕਿਹੜਾ ਮਾਪ ਵਖੇੜਨਾ ਚਾਹੀਦਾ ਹੈ?
-## ਇਸ ਮਾਡਲ ਦੇ ROC ਕਰਵ ਨੂੰ ਵਿਜੁਅਲਾਈਜ਼ ਕਰੋ
+## ਇਸ ਮਾਡਲ ਦੀ ROC ਕਰਵ ਨੂੰ ਵੇਖੋ
[](https://youtu.be/GApO575jTA0 "ML for beginners - Analyzing Logistic Regression Performance with ROC Curves")
-> 🎥 ਉੱਪਰ ਦਿੱਤੀ ਤਸਵੀਰ 'ਤੇ ਕਲਿਕ ਕਰੋ ROC ਕਰਵਜ਼ ਦਾ ਛੋਟਾ ਵੀਡੀਓ ਝਲਕ ਦੇਖਣ ਲਈ
+> 🎥 ਉਪਰ ਦੀ ਤਸਵੀਰ 'ਤੇ ਕਲਿੱਕ ਕਰੋ ROC ਕਰਵਾਂ ਦੀ ਇੱਕ ਛੋਟੀ ਵੀਡੀਓ ਜਾਣਕਾਰੀ ਲਈ
-ਆਓ ਇੱਕ ਹੋਰ ਵਿਜੁਅਲਾਈਜ਼ੇਸ਼ਨ ਕਰੀਏ ਤਾਂ ਜੋ 'ROC' ਕਰਵ ਨੂੰ ਵੇਖ ਸਕੀਏ:
+ਆਓ ਅਸੀਂ ਇਕ ਹੋਰ ਵਿਜ਼ੂਅਲਾਈਜ਼ੇਸ਼ਨ ਕਰੀਏ ਜਿਸਨੂੰ 'ROC' ਕਰਵ ਕਹਿੰਦੇ ਹਨ:
```python
from sklearn.metrics import roc_curve, roc_auc_score
@@ -258,36 +366,38 @@ 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 ਅਕਸ 'ਤੇ ਗਲਤ ਪਾਜ਼ਿਟਿਵ ਦਰ ਦਿਖਾਉਂਦੇ ਹਨ।" ਇਸ ਲਈ, ਕਰਵ ਦੀ ਢਲਾਨ ਅਤੇ ਮਿਡਪੋਇੰਟ ਲਾਈਨ ਅਤੇ ਕਰਵ ਦੇ ਵਿਚਕਾਰ ਦੀ ਜਗ੍ਹਾ ਮਹੱਤਵਪੂਰਨ ਹੈ: ਤੁਸੀਂ ਇੱਕ ਕਰਵ ਚਾਹੁੰਦੇ ਹੋ ਜੋ ਜਲਦੀ ਉੱਪਰ ਅਤੇ ਲਾਈਨ ਤੋਂ ਪਰੇ ਜਾਵੇ। ਸਾਡੇ ਕੇਸ ਵਿੱਚ, ਸ਼ੁਰੂ ਵਿੱਚ ਕੁਝ ਗਲਤ ਪਾਜ਼ਿਟਿਵਜ਼ ਹਨ, ਅਤੇ ਫਿਰ ਲਾਈਨ ਠੀਕ ਢੰਗ ਨਾਲ ਉੱਪਰ ਅਤੇ ਪਰੇ ਚਲੀ ਜਾਂਦੀ ਹੈ:
+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) ਦੀ ਗਣਨਾ ਕਰੋ:
+ਆਖ਼ਰੀ ਤੌਰ 'ਤੇ, 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 ਹੋਵੇਗਾ; ਇਸ ਕੇਸ ਵਿੱਚ, ਮਾਡਲ _ਕਾਫ਼ੀ ਚੰਗਾ_ ਹੈ।
+ਨਤੀਜਾ ਹੈ `0.9749908725812341`। ਕਿਉਂਕਿ AUC ਦੀ ਰੇਂਜ 0 ਤੋਂ 1 ਹੈ, ਤੁਸੀਂ ਵੱਡਾ ਸਕੋਰ ਚਾਹੁੰਦੇ ਹੋ, ਕਿਉਂਕਿ ਇੱਕ ਮਾਡਲ ਜੋ ਆਪਣੀਆਂ ਭਵਿੱਖਵਾਣੀਆਂ ਵਿੱਚ 100% ਠੀਕ ਹੁੰਦਾ ਹੈ ਉਸਦਾ AUC 1 ਹੋਵੇਗਾ; ਇਸ ਮਾਮਲੇ ਵਿੱਚ, ਮਾਡਲ _ਕਾਫ਼ੀ ਵਧੀਆ_ ਹੈ।
-ਭਵਿੱਖ ਦੇ ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਪਾਠਾਂ ਵਿੱਚ, ਤੁਸੀਂ ਆਪਣੇ ਮਾਡਲ ਦੇ ਸਕੋਰਾਂ ਨੂੰ ਸੁਧਾਰਨ ਲਈ ਦੁਹਰਾਉਣ ਦੇ ਤਰੀਕੇ ਸਿੱਖੋਗੇ। ਪਰ ਇਸ ਸਮੇਂ ਲਈ, ਵਧਾਈ ਹੋਵੇ! ਤੁਸੀਂ ਇਹ ਰਿਗ੍ਰੈਸ਼ਨ ਪਾਠ ਪੂਰੇ ਕਰ ਲਏ ਹਨ!
+ਭਵਿੱਖ ਦੇ ਵਰਗਾਂ ਵਿੱਚ ਤੁਸੀਂ ਸਿੱਖੋਗੇ ਕਿ ਆਪਣੇ ਮਾਡਲ ਦੇ ਸਕੋਰ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਣ ਲਈ ਕਿਵੇਂ ਵਾਰੰ-ਵਾਰ ਬਦਲਾਅ ਕਰਨਾ ਹੈ। ਪਰ ਇਸ ਸਮੇਂ ਲਈ, ਵਧਾਈਆਂ! ਤੁਸੀਂ ਇਹ ਰਿਗ੍ਰੈਸ਼ਨ ਪਰਛੇ ਪੂਰੇ ਕਰ ਲਏ ਹਨ!
---
## 🚀ਚੈਲੈਂਜ
-ਲੌਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਬਾਰੇ ਬਹੁਤ ਕੁਝ ਸਿੱਖਣ ਲਈ ਹੈ! ਪਰ ਸਿੱਖਣ ਦਾ ਸਭ ਤੋਂ ਵਧੀਆ ਤਰੀਕਾ ਅਨੁਭਵ ਕਰਨਾ ਹੈ। ਇੱਕ ਡਾਟਾਸੈਟ ਲੱਭੋ ਜੋ ਇਸ ਕਿਸਮ ਦੇ ਵਿਸ਼ਲੇਸ਼ਣ ਲਈ ਉਚਿਤ ਹੋਵੇ ਅਤੇ ਇਸ ਨਾਲ ਇੱਕ ਮਾਡਲ ਬਣਾਓ। ਤੁਸੀਂ ਕੀ ਸਿੱਖਦੇ ਹੋ? ਸੁਝਾਅ: ਦਿਲਚਸਪ ਡਾਟਾਸੈਟ ਲਈ [Kaggle](https://www.kaggle.com/search?q=logistic+regression+datasets) ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ।
+ਲਾਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਬਾਰੇ ਹੋਰ ਵੀ ਕਾਫੀ ਕੁਝ ਹੈ ਜਾਣਨ ਲਈ! ਪਰ ਸਿਖਣ ਦਾ ਸਭ ਤੋਂ ਵਧੀਆ ਤਰੀਕਾ ਤਜਰਬਾ ਕਰਨਾ ਹੈ। ਕੋਈ ਐਸਾ ਡੇਟਾਸੇਟ ਲੱਭੋ ਜੋ ਇਸ ਪ੍ਰਕਾਰ ਦੀ ਵਿਸ਼ਲੇਸ਼ਣ ਲਈ ਢੁਕਵੀਂ ਹੋਵੇ ਅਤੇ ਇਸ ਨਾਲ ਇੱਕ ਮਾਡਲ ਬਣਾਓ। ਤੁਸੀਂ ਕੀ ਸਿੱਖਦੇ ਹੋ? ਸੁਝਾਅ: ਰੁਚਿਕਰ ਡੇਟਾਸੇਟਾਂ ਲਈ [Kaggle](https://www.kaggle.com/search?q=logistic+regression+datasets) ਨੂੰ ਕੋਸ਼ਿਸ਼ ਕਰੋ।
-## [ਪੋਸਟ-ਲੈਕਚਰ ਕਵਿਜ਼](https://ff-quizzes.netlify.app/en/ml/)
+## [ਪਾਠ-ਪੂਰਤੀ ਕਵਿਜ਼](https://ff-quizzes.netlify.app/en/ml/)
## ਸਮੀਖਿਆ ਅਤੇ ਸਵੈ ਅਧਿਐਨ
-[Stanford ਦੇ ਇਸ ਪੇਪਰ](https://web.stanford.edu/~jurafsky/slp3/5.pdf) ਦੇ ਪਹਿਲੇ ਕੁਝ ਪੰਨੇ ਪੜ੍ਹੋ ਜੋ ਲੌਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਦੇ ਕੁਝ ਵਿਹਾਰਕ ਉਪਯੋਗਾਂ ਬਾਰੇ ਹਨ। ਉਹ ਕੰਮਾਂ ਬਾਰੇ ਸੋਚੋ ਜੋ ਅਸੀਂ ਹੁਣ ਤੱਕ ਪੜ੍ਹੇ ਰਿਗ੍ਰੈਸ਼ਨ ਦੇ ਕਿਸੇ ਇੱਕ ਜਾਂ ਦੂਜੇ ਕਿਸਮ ਲਈ ਵਧੀਆ ਹੋ ਸਕਦੇ ਹਨ। ਕੀ ਸਭ ਤੋਂ ਵਧੀਆ ਕੰਮ ਕਰੇਗਾ?
+ਇਸ [ਸਟੈਨਫੋਰਡ ਪੇਪਰ](https://web.stanford.edu/~jurafsky/slp3/5.pdf) ਦਾ ਪਹਿਲਾ ਕੁਝ ਪੰਨੇ ਪੜ੍ਹੋ ਜੋ ਲਾਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਦੇ ਕੁਝ ਅਮਲੀ ਉਪਯੋਗਾਂ ਬਾਰੇ ਹੈ। ਕਿਸ ਕਿਸਮ ਦੇ ਕੰਮ ਉਨ੍ਹਾਂ ਵਿਚੋਂ ਕਿਹੜੇ ਲਾਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਕੰਮਾਂ ਲਈ ਜ਼ਿਆਦਾ ਉਚਿਤ ਹਨ, ਇਸ ਬਾਰੇ ਸੋਚੋ ਜੋ ਅਸੀਂ ਹੁਣ ਤੱਕ ਅਧਿਐਨ ਕੀਤੇ ਹਨ। ਸਭ ਤੋਂ ਵਧੀਆ ਕੀ ਕੰਮ ਕਰੇਗਾ?
## ਅਸਾਈਨਮੈਂਟ
-[ਇਸ ਰਿਗ੍ਰੈਸ਼ਨ ਨੂੰ ਦੁਬਾਰਾ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ](assignment.md)
+[ਇਸ ਰਿਗ੍ਰੈਸ਼ਨ ਨੂੰ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰਨਾ](assignment.md)
---
-**ਅਸਵੀਕਤੀ**:
-ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀਤਾ ਲਈ ਯਤਨਸ਼ੀਲ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਚਤਤਾਵਾਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਇਸਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ।
\ No newline at end of file
+
+**ਅਸਵੀਕਾਰੋਪਣ**:
+ਇਸ ਦਸਤਾਵੇਜ਼ ਦਾ ਅਨੁਵਾਦ ਏਆਈ ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀਤਾਵਾਂ ਲਈ ਯਤਨਸ਼ੀਲ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਰੱਖੋ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸਮੱਤਿਆਵਾਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਆਪਣੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਕ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਜਰੂਰੀ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫ਼ਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਅਸੀਂ ਇਸ ਅਨੁਵਾਦ ਦੇ ਉਪਯੋਗ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੀਆਂ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀਆਂ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆਵਾਂ ਲਈ ਜਵਾਬਦੇਹ ਨਹੀਂ ਹਾਂ।
+
\ No newline at end of file
diff --git a/translations/pa/3-Web-App/1-Web-App/README.md b/translations/pa/3-Web-App/1-Web-App/README.md
index a13767d8c..a06d880ac 100644
--- a/translations/pa/3-Web-App/1-Web-App/README.md
+++ b/translations/pa/3-Web-App/1-Web-App/README.md
@@ -1,58 +1,58 @@
-# ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਮਾਡਲ ਵਰਤਣ ਲਈ ਵੈੱਬ ਐਪ ਬਣਾਓ
+# ਇਕ ML ਮਾਡਲ ਦੀ ਵਰਤੋਂ ਕਰਨ ਲਈ ਵੈੱਬ ਐਪ ਬਣਾਓ
-ਇਸ ਪਾਠ ਵਿੱਚ, ਤੁਸੀਂ ਇੱਕ ਡਾਟਾ ਸੈੱਟ 'ਤੇ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਮਾਡਲ ਨੂੰ ਟ੍ਰੇਨ ਕਰੋਗੇ ਜੋ ਬਹੁਤ ਹੀ ਦਿਲਚਸਪ ਹੈ: _ਪਿਛਲੇ ਸਦੀ ਦੇ ਦੌਰਾਨ ਦੇਖੇ ਗਏ UFO_, ਜੋ ਕਿ NUFORC ਦੇ ਡਾਟਾਬੇਸ ਤੋਂ ਲਿਆ ਗਿਆ ਹੈ।
+ਇਸ ਪਾਠ ਵਿੱਚ, ਤੁਸੀਂ ਇੱਕ ਐਸਾ ਡਾਟਾ ਸੈੱਟ ਤੇ ML ਮਾਡਲ ਸ਼ਿਕਸ਼ਿਤ ਕਰੋਗੇ ਜੋ ਦੁਨੀਆ ਤੋਂ ਬਾਹਰ ਹੈ: _ਪਿਛਲੇ ਸਦੀ ਵਿੱਚ UFO ਦ੍ਰਿਸ਼ਟੀਗੋਚਰ_, ਜੋ NUFORC ਦੇ ਡੇਟਾਬੇਸ ਤੋਂ ਲਿਆ ਗਿਆ ਹੈ।
ਤੁਸੀਂ ਸਿੱਖੋਗੇ:
-- ਟ੍ਰੇਨ ਕੀਤੇ ਮਾਡਲ ਨੂੰ 'pickle' ਕਿਵੇਂ ਕਰਨਾ ਹੈ
-- ਉਸ ਮਾਡਲ ਨੂੰ Flask ਐਪ ਵਿੱਚ ਕਿਵੇਂ ਵਰਤਣਾ ਹੈ
+- ਇੱਕ ਤਿਆਰ ਕੀਤੇ ਮਾਡਲ ਨੂੰ 'ਪਿਕਲ' ਕਿਵੇਂ ਕਰਨਾ ਹੈ
+- ਉਸ ਮਾਡਲ ਨੂੰ ਇੱਕ Flask ਐਪ ਵਿੱਚ ਕਿਵੇਂ ਵਰਤਣਾ ਹੈ
-ਅਸੀਂ ਨੋਟਬੁੱਕਸ ਦੀ ਵਰਤੋਂ ਜਾਰੀ ਰੱਖਾਂਗੇ ਡਾਟਾ ਸਾਫ ਕਰਨ ਅਤੇ ਮਾਡਲ ਟ੍ਰੇਨ ਕਰਨ ਲਈ, ਪਰ ਤੁਸੀਂ ਇਸ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਇੱਕ ਕਦਮ ਅੱਗੇ ਲੈ ਜਾ ਸਕਦੇ ਹੋ ਅਤੇ ਮਾਡਲ ਨੂੰ 'ਜੰਗਲੀ' ਤੌਰ 'ਤੇ ਵਰਤਣ ਦੀ ਖੋਜ ਕਰ ਸਕਦੇ ਹੋ, ਜਿਵੇਂ ਕਿ ਇੱਕ ਵੈੱਬ ਐਪ ਵਿੱਚ।
+ਅਸੀਂ ਡੇਟਾ ਸਾਫ਼ ਕਰਨ ਅਤੇ ਮਾਡਲ ਟ੍ਰੇਨ ਕਰਨ ਲਈ ਨੋਟਬੁੱਕਸ ਦੀ ਵਰਤੋਂ ਜਾਰੀ ਰੱਖਾਂਗੇ, ਪਰ ਤੁਸੀਂ ਇਸ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਇੱਕ ਕਦਮ ਅੱਗੇ ਵਧਾ ਸਕਦੇ ਹੋ ਇਹ ਵੇਖ ਕੇ ਕਿ ਕਿਸ ਤਰ੍ਹਾਂ ਮਾਡਲ ਨੂੰ 'ਜੰਗਲ' ਵਿੱਚ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ: ਵੈੱਬ ਐਪ ਵਿੱਚ।
-ਇਹ ਕਰਨ ਲਈ, ਤੁਹਾਨੂੰ Flask ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇੱਕ ਵੈੱਬ ਐਪ ਬਣਾਉਣ ਦੀ ਲੋੜ ਹੈ।
+ਇਸ ਲਈ, ਤੁਹਾਨੂੰ Flask ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇੱਕ ਵੈੱਬ ਐਪ ਬਣਾਉਣੀ ਪਵੇਗੀ।
-## [ਪਾਠ-ਪਹਿਲਾਂ ਕਵੀਜ਼](https://ff-quizzes.netlify.app/en/ml/)
+## [ਪ੍ਰੀ-ਲੈਕਚਰ ਕਵਿਜ਼](https://ff-quizzes.netlify.app/en/ml/)
## ਐਪ ਬਣਾਉਣਾ
-ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਮਾਡਲਾਂ ਨੂੰ ਵਰਤਣ ਲਈ ਵੈੱਬ ਐਪ ਬਣਾਉਣ ਦੇ ਕਈ ਤਰੀਕੇ ਹਨ। ਤੁਹਾਡੀ ਵੈੱਬ ਆਰਕੀਟੈਕਚਰ ਇਸ ਗੱਲ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰ ਸਕਦੀ ਹੈ ਕਿ ਤੁਹਾਡਾ ਮਾਡਲ ਕਿਵੇਂ ਟ੍ਰੇਨ ਕੀਤਾ ਗਿਆ ਹੈ। ਕਲਪਨਾ ਕਰੋ ਕਿ ਤੁਸੀਂ ਇੱਕ ਕਾਰੋਬਾਰ ਵਿੱਚ ਕੰਮ ਕਰ ਰਹੇ ਹੋ ਜਿੱਥੇ ਡਾਟਾ ਸਾਇੰਸ ਗਰੁੱਪ ਨੇ ਇੱਕ ਮਾਡਲ ਟ੍ਰੇਨ ਕੀਤਾ ਹੈ ਜੋ ਉਹ ਚਾਹੁੰਦੇ ਹਨ ਕਿ ਤੁਸੀਂ ਇੱਕ ਐਪ ਵਿੱਚ ਵਰਤੋ।
+ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਮਾਡਲਾਂ ਦੀ ਖਪਤ ਲਈ ਵੈੱਬ ਐਪ ਬਣਾਉਣ ਦੇ ਕਈ ਤਰੀਕੇ ਹਨ। ਤੁਹਾਡੀ ਵੈੱਬ ਆਰਕੀਟੈਕਚਰ ਮਾਡਲ ਟ੍ਰੇਨ ਕਰਨ ਦੇ ਤਰੀਕੇ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰ ਸਕਦੀ ਹੈ। ਸੋਚੋ ਕਿ ਤੁਸੀਂ ਉਸ ਕਾਰੋਬਾਰ ਵਿੱਚ ਕੰਮ ਕਰ ਰਹੇ ਹੋ ਜਿਥੇ ਡੇਟਾ ਸਾਇੰਸ ਗਰੁੱਪ ਨੇ ਇੱਕ ਮਾਡਲ ਟ੍ਰੇਨ ਕੀਤਾ ਹੈ ਜਿਸਦਾ ਤੁਸੀਂ ਐਪ ਵਿੱਚ ਉਪਯੋਗ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ।
### ਵਿਚਾਰ
-ਤੁਹਾਨੂੰ ਕਈ ਸਵਾਲ ਪੁੱਛਣ ਦੀ ਲੋੜ ਹੈ:
+ਤੁਹਾਨੂੰ ਕਈ ਸਵਾਲ ਪੁੱਛਣੇ ਚਾਹੀਦੇ ਹਨ:
-- **ਕੀ ਇਹ ਵੈੱਬ ਐਪ ਹੈ ਜਾਂ ਮੋਬਾਈਲ ਐਪ?** ਜੇ ਤੁਸੀਂ ਮੋਬਾਈਲ ਐਪ ਬਣਾ ਰਹੇ ਹੋ ਜਾਂ 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/) ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ। ਇਸ ਵਿਕਲਪ ਦੀ ਖੋਜ ਅਗਲੇ ਪਾਠ ਵਿੱਚ ਕੀਤੀ ਜਾਵੇਗੀ ਜਿੱਥੇ 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 ਬਣਾਉਣਾ ਸ਼ਾਮਲ ਹੈ।
+- **ਕੀ ਇਹ ਵੈੱਬ ਐਪ ਹੈ ਜਾਂ ਮੋਬਾਈਲ ਐਪ?** ਜੇਕਰ ਤੁਸੀਂ ਮੋਬਾਈਲ ਐਪ ਬਣਾ ਰਹੇ ਹੋ ਜਾਂ ਮਾਡਲ ਨੂੰ IoT ਸੰਦਰਭ ਵਿੱਚ ਵਰਤਣਾ ਹੈ, ਤਾਂ ਤੁਸੀਂ [TensorFlow Lite](https://www.tensorflow.org/lite/) ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹੋ ਅਤੇ ਮਾਡਲ ਨੂੰ ਐਂਡਰਾਇਡ ਜਾਂ iOS ਐਪ ਵਿੱਚ ਵਰਤ ਸਕਦੇ ਹੋ।
+- **ਮਾਡਲ ਕਿੱਥੇ ਰਹੇਗਾ?** ਕਲਾਊਡ ਵਿੱਚ ਜਾਂ ਲੋਕਲ ਹੀ।
+- **ਆਫਲਾਇਨ ਸਹਿਯੋਗ।** ਕੀ ਐਪ ਨੂੰ ਆਫਲਾਇਨ ਕੰਮ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ?
+- **ਮਾਡਲ ਟ੍ਰੇਨ ਕਰਨ ਲਈ ਕਿਸ ਤਕਨਾਲੋਜੀ ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਗਈ ਸੀ?** ਚੁਣੀ ਹੋਈ ਤਕਨਾਲੋਜੀ ਤੁਹਾਨੂੰ ਲੋੜੀਂਦੇ ਟੂਲਾਂ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰ ਸਕਦੀ ਹੈ।
+ - **TensorFlow ਦੀ ਵਰਤੋਂ।** ਜੇ ਤੁਸੀਂ ਉਦਾਹਰਨ ਵਜੋਂ TensorFlow ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਮਾਡਲ ਟ੍ਰੇਨ ਕਰ ਰਹੇ ਹੋ, ਤਾਂ ਉਹ ਇੱਕ ਐਸਾ ਈਕੋਸਿਸਟਮ ਮੁਹੱਈਆ ਕਰਦਾ ਹੈ ਜੋ ਮਾਡਲ ਨੂੰ ਵੈੱਬ ਐਪ ਵਿੱਚ ਵਰਤਣ ਲਈ [TensorFlow.js](https://www.tensorflow.org/js/) ਵਿੱਚ ਹਵਾਲੇ ਨਾਲ ਬਦਲ ਸਕਦਾ ਹੈ।
+ - **PyTorch ਦੀ ਵਰਤੋਂ।** ਜੇ ਤੁਸੀਂ [PyTorch](https://pytorch.org/) ਵਰਗੇ ਲਾਇਬਰੇਰੀ ਨਾਲ ਮਾਡਲ ਬਣਾ ਰਹੇ ਹੋ, ਤਾਂ ਤੁਹਾਡੇ ਕੋਲ ਇਸਨੂੰ ਜਾਵਾਸਕ੍ਰਿਪਟ ਵੈੱਬ ਐਪਸ ਵਿੱਚ ਵਰਤਣ ਲਈ [ONNX](https://onnx.ai/) ਫਾਰਮੈਟ ਵਿੱਚ ਐਕਸਪੋਰਟ ਕਰਨ ਦਾ ਵਿਕਲਪ ਹੈ, ਜੋ [Onnx Runtime](https://www.onnxruntime.ai/) ਵਰਤ ਸਕਦਾ ਹੈ। ਇਹ ਵਿਕਲਪ ਭਵਿੱਖ ਦੇ ਪਾਠ ਵਿੱਚ Scikit-learn-ਟੀਟ ਮਾਡਲ ਲਈ ਖੋਜਿਆ ਜਾਵੇਗਾ।
+ - **Lobe.ai ਜਾਂ Azure Custom Vision ਦੀ ਵਰਤੋਂ।** ਜੇ ਤੁਸੀਂ [Lobe.ai](https://lobe.ai/) ਜਾਂ [Azure Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77952-leestott) ਵਰਗੇ ML SaaS (ਸਾਫਟਵੇਅਰ ਐਜ਼ ਏ ਸਰਵਿਸ) ਪ੍ਰਣਾਲੀ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਮਾਡਲ ਟ੍ਰੇਨ ਕਰ ਰਹੇ ਹੋ, ਤਾਂ ਇਹ ਸਾਫਟਵੇਅਰ ਬਹੁਤ ਸਾਰੀਆਂ ਪਲੇਟਫਾਰਮਾਂ ਲਈ ਮਾਡਲ ਐਕਸਪੋਰਟ ਕਰਨ ਦੇ ਤਰੀਕੇ ਮੁਹੱਈਆ ਕਰਵਾਉਂਦਾ ਹੈ, ਜਿਸ ਵਿੱਚ ਇੱਕ ਵਿਸ਼ੇਸ਼ API ਬਣਾਉਣਾ ਵੀ ਸ਼ਾਮਲ ਹੈ ਜੋ ਤੁਹਾਡੇ ਆਨਲਾਈਨ ਐਪਲੀਕੇਸ਼ਨ ਵੱਲੋਂ ਕਲਾਊਡ ਵਿੱਚ ਪੁੱਛੇ ਜਾ ਸਕਦਾ ਹੈ।
-ਤੁਹਾਡੇ ਕੋਲ ਪੂਰੇ Flask ਵੈੱਬ ਐਪ ਨੂੰ ਬਣਾਉਣ ਦਾ ਮੌਕਾ ਵੀ ਹੈ ਜੋ ਵੈੱਬ ਬ੍ਰਾਊਜ਼ਰ ਵਿੱਚ ਖੁਦ ਮਾਡਲ ਨੂੰ ਟ੍ਰੇਨ ਕਰ ਸਕਦਾ ਹੈ। ਇਹ ਕੰਮ ਜਾਵਾਸਕ੍ਰਿਪਟ ਸੰਦਰਭ ਵਿੱਚ TensorFlow.js ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਵੀ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।
+ਤੁਹਾਡੇ ਕੋਲ ਇੱਕ ਪੂਰੀ Flask ਵੈੱਬ ਐਪ ਬਣਾਉਣ ਦਾ ਵੀ ਮੌਕਾ ਹੈ ਜੋ ਖੁਦ ਬਰਾਊਜ਼ਰ ਵਿੱਚ ਮਾਡਲ ਨੂੰ ਟ੍ਰੇਨ ਕਰਨ ਯੋਗ ਹੋਵੇ। ਇਹ JavaScript ਸੰਦਰਭ ਵਿੱਚ TensorFlow.js ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਵੀ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।
-ਸਾਡੇ ਮਕਸਦ ਲਈ, ਕਿਉਂਕਿ ਅਸੀਂ Python-ਅਧਾਰਿਤ ਨੋਟਬੁੱਕਸ ਨਾਲ ਕੰਮ ਕਰ ਰਹੇ ਹਾਂ, ਆਓ ਉਹ ਕਦਮ ਖੋਜੀਏ ਜੋ ਤੁਹਾਨੂੰ ਇੱਕ ਟ੍ਰੇਨ ਕੀਤੇ ਮਾਡਲ ਨੂੰ ਨੋਟਬੁੱਕ ਤੋਂ Python-ਨਿਰਮਿਤ ਵੈੱਬ ਐਪ ਦੁਆਰਾ ਪੜ੍ਹਨਯੋਗ ਫਾਰਮੈਟ ਵਿੱਚ ਐਕਸਪੋਰਟ ਕਰਨ ਲਈ ਲੈਣ ਦੀ ਲੋੜ ਹੈ।
+ਸਾਡੇ ਮਕਸਦ ਲਈ, ਕਿਉਂਕਿ ਅਸੀਂ Python-ਅਧਾਰਿਤ ਨੋਟਬੁੱਕਸ ਨਾਲ ਕੰਮ ਕਰ ਰਹੇ ਹਾਂ, ਆਓ ਉਹ ਕਦਮ ਵੇਖੀਏ ਜੋ ਤੁਹਾਨੂੰ ਇੱਕ ਤਿਆਰ ਕੀਤੇ ਮਾਡਲ ਨੂੰ ਨੋਟਬੁੱਕ ਤੋਂ Python ਬਣੀ ਵੈੱਬ ਐਪ ਵਿੱਚ ਪੱਠਿਅੋਗ ਫਾਰਮੈਟ ਵਿੱਚ ਐਕਸਪੋਰਟ ਕਰਨ ਲਈ ਲੈਣਾ ਪਏਗਾ।
## ਟੂਲ
-ਇਸ ਕੰਮ ਲਈ, ਤੁਹਾਨੂੰ ਦੋ ਟੂਲਾਂ ਦੀ ਲੋੜ ਹੈ: Flask ਅਤੇ Pickle, ਜੋ ਦੋਵੇਂ Python 'ਤੇ ਚਲਦੇ ਹਨ।
+ਇਸ ਕਾਰਜ ਲਈ, ਤੁਹਾਨੂੰ ਦੋ ਟੂਲਾਂ ਦੀ ਲੋੜ ਹੈ: Flask ਅਤੇ Pickle, ਦੋਹਾਂ Python ਤੇ ਚਲਦੇ ਹਨ।
-✅ [Flask](https://palletsprojects.com/p/flask/) ਕੀ ਹੈ? ਇਸਦੇ ਨਿਰਮਾਤਾਵਾਂ ਦੁਆਰਾ 'ਮਾਈਕ੍ਰੋ-ਫ੍ਰੇਮਵਰਕ' ਵਜੋਂ ਪਰਿਭਾਸ਼ਿਤ, Flask ਵੈੱਬ ਫ੍ਰੇਮਵਰਕਸ ਦੀ ਮੁੱਢਲੀ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ ਜੋ Python ਅਤੇ ਇੱਕ ਟੈਂਪਲੇਟਿੰਗ ਇੰਜਣ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਵੈੱਬ ਪੰਨਿਆਂ ਨੂੰ ਬਣਾਉਂਦਾ ਹੈ। [ਇਸ ਲਰਨ ਮਾਡਿਊਲ](https://docs.microsoft.com/learn/modules/python-flask-build-ai-web-app?WT.mc_id=academic-77952-leestott) ਨੂੰ ਵੇਖੋ Flask ਨਾਲ ਬਣਾਉਣ ਦੀ ਅਭਿਆਸ ਕਰਨ ਲਈ।
+✅ [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` ਹੁੰਦਾ ਹੈ।
+✅ [Pickle](https://docs.python.org/3/library/pickle.html) ਕੀ ਹੈ? Pickle 🥒 ਇੱਕ Python ਮਾਡਿਊਲ ਹੈ ਜੋ Python ਓਬਜੈਕਟ ਸਟ੍ਰਕਚਰ ਨੂੰ ਸੀਰੀਅਲਾਈਜ਼ ਅਤੇ ਡੀ-ਸੀਰੀਅਲਾਈਜ਼ ਕਰਦਾ ਹੈ। ਜਦੋਂ ਤੁਸੀਂ ਮਾਡਲ ਨੂੰ 'ਪਿਕਲ' ਕਰਦੇ ਹੋ, ਤਾਂ ਤੁਸੀਂ ਇਸ ਦੀ ਬਣਤਰ ਨੂੰ ਸੀਰੀਅਲਾਈਜ਼ ਜਾਂ ਸਮਤਲ ਕਰਦੇ ਹੋ ਤਾਂ ਜੋ ਵੈੱਬ ਵਿੱਚ ਵਰਤਿਆ ਜਾ ਸਕੇ। ਧਿਆਨ ਰੱਖੋ: pickle ਸੁਰੱਖਿਅਤ ਨਹੀਂ ਹੈ, ਇਸ ਲਈ 'ਅਨਪਿਕਲ' ਫਾਇਲ ਕਰਦੇ ਸਮੇਂ ਸਾਵਧਾਨ ਰਹੋ। ਪਿਕਲ ਕੀਤੀ ਫਾਈਲ ਦਾ ਸਫਿਕਸ `.pkl` ਹੁੰਦਾ ਹੈ।
-## ਅਭਿਆਸ - ਆਪਣਾ ਡਾਟਾ ਸਾਫ ਕਰੋ
+## ਅਭਿਆਸ - ਆਪਣਾ ਡੇਟਾ ਸਾਫ਼ ਕਰੋ
-ਇਸ ਪਾਠ ਵਿੱਚ ਤੁਸੀਂ 80,000 UFO ਦੇਖਣਾਂ ਦੇ ਡਾਟਾ ਦੀ ਵਰਤੋਂ ਕਰੋਗੇ, ਜੋ ਕਿ [NUFORC](https://nuforc.org) (The National UFO Reporting Center) ਦੁਆਰਾ ਇਕੱਠਾ ਕੀਤਾ ਗਿਆ ਹੈ। ਇਸ ਡਾਟਾ ਵਿੱਚ UFO ਦੇਖਣਾਂ ਦੇ ਕੁਝ ਦਿਲਚਸਪ ਵਰਣਨ ਹਨ, ਉਦਾਹਰਣ ਲਈ:
+ਇਸ ਪਾਠ ਵਿੱਚ ਤੁਸੀਂ 80,000 UFO ਦ੍ਰਿਸ਼ਟੀਗੋਚਰਾਂ ਤੋਂ ਡੇਟਾ ਵਰਤੋਂਗੇ, ਜੋ [NUFORC](https://nuforc.org) (ਰਾਸ਼ਟਰੀ UFO ਰਿਪੋਰਟਿੰਗ ਸੈਂਟਰ) ਨੇ ਇਕੱਠਾ ਕੀਤਾ ਹੈ। ਇਸ ਡੇਟਾ ਵਿੱਚ UFO ਦੇ ਦ੍ਰਿਸ਼ਟੀਗੋਚਰਾਂ ਦੇ ਕੁਝ ਦਿਲਚਸਪ ਵਰਣਨਾਂ ਹਨ, ਉਦਾਹਰਨ ਵਜੋਂ:
-- **ਲੰਬਾ ਵਰਣਨ।** "ਇੱਕ ਆਦਮੀ ਰਾਤ ਨੂੰ ਇੱਕ ਘਾਸ ਵਾਲੇ ਖੇਤਰ 'ਤੇ ਚਮਕ ਰਹੀ ਰੌਸ਼ਨੀ ਦੀ ਕਿਰਣ ਤੋਂ ਬਾਹਰ ਆਉਂਦਾ ਹੈ ਅਤੇ ਉਹ Texas Instruments ਦੀ ਪਾਰਕਿੰਗ ਲਾਟ ਵੱਲ ਦੌੜਦਾ ਹੈ।"
-- **ਛੋਟਾ ਵਰਣਨ।** "ਰੌਸ਼ਨੀ ਸਾਡੇ ਪਿੱਛੇ ਆਈ।"
+- **ਲੰਬੀ ਉਦਾਹਰਨ ਦੀ ਵਰਣਨਾ।** "ਇੱਕ ਆਦਮੀ ਇੱਕ ਰੋਸ਼ਨੀ ਦੀ ਕਿਰਣ ਵਿੱਚੋਂ ਨਿਕਲਦਾ ਹੈ ਜੋ ਰਾਤ ਨੂੰ ਘਾਂਸ ਵਾਲੇ ਖੇਤ 'ਤੇ ਚਮਕਦੀ ਹੈ ਅਤੇ ਉਹ ਟੈਕਸਾਸ ਇੰਸਟਰੂਮੈਂਟਸ ਦੇ ਪਾਰਕਿੰਗ ਲਾਟ ਵੱਲ ਦੌੜਦਾ ਹੈ"।
+- **ਛੋਟੀ ਉਦਾਹਰਨ ਦੀ ਵਰਣਨਾ।** "ਲਾਈਟਸ ਸਾਡੇ ਪਿੱਛੇ ਦੌੜੀ।"
-[ufos.csv](../../../../3-Web-App/1-Web-App/data/ufos.csv) ਸਪ੍ਰੈਡਸ਼ੀਟ ਵਿੱਚ ਉਹ ਕਾਲਮ ਸ਼ਾਮਲ ਹਨ ਜਿੱਥੇ ਦੇਖਣ ਹੋਏ, ਜਿਵੇਂ `city`, `state`, ਅਤੇ `country`, ਆਬਜੈਕਟ ਦਾ `shape`, ਅਤੇ ਇਸਦਾ `latitude` ਅਤੇ `longitude`।
+[ufos.csv](../../../../3-Web-App/1-Web-App/data/ufos.csv) ਸਪਰੇਡਸ਼ੀਟ ਵਿੱਚ ਕਾਲਮ ਹਨ ਜਿਨ੍ਹਾਂ ਵਿੱਚ `city`, `state` ਅਤੇ `country` ਹਨ ਜਿੱਥੇ ਦ੍ਰਿਸ਼ਟੀਗੋਚਰ ਹੋਇਆ, ਵਸਤੂ ਦਾ `shape` ਅਤੇ ਇਸ ਦਾ `latitude` ਅਤੇ `longitude` ਵੀ ਸ਼ਾਮਲ ਹਨ।
-ਖਾਲੀ [notebook](../../../../3-Web-App/1-Web-App/notebook.ipynb) ਵਿੱਚ:
+ਇਸ ਪਾਠ ਵਿੱਚ ਸ਼ਾਮਲ ਸਾਫ਼ ਸੂਤਰ [notebook](notebook.ipynb) ਵਿੱਚ:
-1. ਪਿਛਲੇ ਪਾਠਾਂ ਵਿੱਚ ਵਰਤੇ ਗਏ ਤਰੀਕੇ ਨਾਲ `pandas`, `matplotlib`, ਅਤੇ `numpy` ਨੂੰ ਇੰਪੋਰਟ ਕਰੋ ਅਤੇ ufos ਸਪ੍ਰੈਡਸ਼ੀਟ ਨੂੰ ਇੰਪੋਰਟ ਕਰੋ। ਤੁਸੀਂ ਡਾਟਾ ਸੈੱਟ ਦਾ ਨਮੂਨਾ ਵੇਖ ਸਕਦੇ ਹੋ:
+1. ਪਹਿਲਾਂ ਹੀ ਕੀਤੇ ਗਏ ਪਾਠਾਂ ਵਾਂਗ `pandas`, `matplotlib`, ਅਤੇ `numpy` ਇੰਪੋਰਟ ਕਰੋ ਅਤੇ ufos ਸਪਰੇਡਸ਼ੀਟ ਨੂੰ ਇੰਪੋਰਟ ਕਰੋ। ਤੁਸੀਂ ਨਮੂਨਾ ਡੇਟਾਸੈਟ ਦੇਖ ਸਕਦੇ ਹੋ:
```python
import pandas as pd
@@ -62,7 +62,7 @@
ufos.head()
```
-1. ufos ਡਾਟਾ ਨੂੰ ਨਵੇਂ ਸਿਰਲੇਖਾਂ ਨਾਲ ਇੱਕ ਛੋਟੇ ਡਾਟਾ ਫ੍ਰੇਮ ਵਿੱਚ ਕਨਵਰਟ ਕਰੋ। `Country` ਫੀਲਡ ਵਿੱਚ ਵਿਲੱਖਣ ਮੁੱਲਾਂ ਦੀ ਜਾਂਚ ਕਰੋ।
+1. ufos ਡੇਟਾ ਨੂੰ ਇੱਕ ਛੋਟੇ ਡੇਟਾਫ਼ਰੇਮ ਵਿੱਚ ਬਦਲੋ ਜਿਨ੍ਹਾਂ ਟਾਈਟਲ ਤਾਜ਼ਾ ਹਨ। `Country` ਫੀਲਡ ਵਿੱਚ ਯੂਨੀਕ ਮੁੱਲ ਚੈੱਕ ਕਰੋ।
```python
ufos = pd.DataFrame({'Seconds': ufos['duration (seconds)'], 'Country': ufos['country'],'Latitude': ufos['latitude'],'Longitude': ufos['longitude']})
@@ -70,7 +70,7 @@
ufos.Country.unique()
```
-1. ਹੁਣ, ਤੁਸੀਂ ਸਾਡੇ ਲਈ ਲੋੜੀਂਦੇ ਡਾਟਾ ਦੀ ਮਾਤਰਾ ਨੂੰ ਘਟਾ ਸਕਦੇ ਹੋ, ਕਿਸੇ ਵੀ null ਮੁੱਲਾਂ ਨੂੰ ਹਟਾ ਕੇ ਅਤੇ ਸਿਰਫ 1-60 ਸਕਿੰਟ ਦੇ ਵਿਚਕਾਰ ਦੇਖਣਾਂ ਨੂੰ ਇੰਪੋਰਟ ਕਰਕੇ:
+1. ਹੁਣ, ਤੁਸੀਂ ਡੇਟਾ ਦੀ ਮਾਤਰਾ ਘਟਾ ਸਕਦੇ ਹੋ ਬੱਸਗੁੰਨੇ ਮੁੱਲਾਂ ਨੂੰ ਹਟਾ ਕੇ ਅਤੇ ਕੇਵਲ ਉਹ ਦ੍ਰਿਸ਼ਟੀਗੋਚਰ ਲੈ ਕੇ ਜੋ 1-60 ਸਕਿੰਟ ਵਿੱਚ ਆਉਂਦੇ ਹਨ:
```python
ufos.dropna(inplace=True)
@@ -80,9 +80,9 @@
ufos.info()
```
-1. Scikit-learn ਦੀ `LabelEncoder` ਲਾਇਬ੍ਰੇਰੀ ਨੂੰ ਇੰਪੋਰਟ ਕਰੋ ਤਾਂ ਜੋ ਦੇਸ਼ਾਂ ਲਈ ਟੈਕਸਟ ਮੁੱਲਾਂ ਨੂੰ ਨੰਬਰਾਂ ਵਿੱਚ ਕਨਵਰਟ ਕੀਤਾ ਜਾ ਸਕੇ:
+1. ਸਕਾਇਕੀਟ-ਲਰਨ ਦੇ `LabelEncoder` ਲਾਇਬਰੇਰੀ ਨੂੰ ਇੰਪੋਰਟ ਕਰੋ ताकि ਦੇਸ਼ਾਂ ਦੇ ਪਾਠ ਮੁੱਲਾਂ ਨੂੰ ਨੰਬਰਾਂ ਵਿੱਚ ਬਦਲਿਆ ਜਾ ਸਕੇ:
- ✅ LabelEncoder ਡਾਟਾ ਨੂੰ ਵਰਣਮਾਲਾ ਅਨੁਸਾਰ ਕੋਡ ਕਰਦਾ ਹੈ
+ ✅ LabelEncoder ਅੱਖਰਾਂ ਦੇ ਕ੍ਰਮ ਵਿੱਚ ਡੇਟਾ ਨੂੰ ਕੋਡ ਕਰਦਾ ਹੈ
```python
from sklearn.preprocessing import LabelEncoder
@@ -92,7 +92,7 @@
ufos.head()
```
- ਤੁਹਾਡਾ ਡਾਟਾ ਇਸ ਤਰ੍ਹਾਂ ਦਿਖਾਈ ਦੇਣਾ ਚਾਹੀਦਾ ਹੈ:
+ ਤੁਹਾਡਾ ਡੇਟਾ ਇਸ ਤਰ੍ਹਾਂ ਦਿੱਸਣਾ ਚਾਹੀਦਾ ਹੈ:
```output
Seconds Country Latitude Longitude
@@ -103,11 +103,11 @@
24 3.0 3 51.783333 -0.783333
```
-## ਅਭਿਆਸ - ਆਪਣਾ ਮਾਡਲ ਬਣਾਓ
+## ਅਭਿਆਸ - ਆਪਣੇ ਮਾਡਲ ਨੂੰ ਬਣਾਓ
-ਹੁਣ ਤੁਸੀਂ ਡਾਟਾ ਨੂੰ ਟ੍ਰੇਨਿੰਗ ਅਤੇ ਟੈਸਟਿੰਗ ਗਰੁੱਪ ਵਿੱਚ ਵੰਡ ਕੇ ਮਾਡਲ ਟ੍ਰੇਨ ਕਰਨ ਲਈ ਤਿਆਰ ਹੋ।
+ਹੁਣ ਤੁਸੀਂ ਮਾਡਲ ਨੂੰ ਚੰਗੀ ਤਰ੍ਹਾਂ ਟ੍ਰੇਨ ਕਰਨ ਲਈ ਡੇਟਾ ਨੂੰ ਟ੍ਰੇਨਿੰਗ ਅਤੇ ਟੈਸਟਿੰਗ ਗਰੁੱਪਾਂ ਵਿੱਚ ਵੰਡਣ ਲਈ ਤਿਆਰ ਹੋ।
-1. ਉਹ ਤਿੰਨ ਫੀਚਰ ਚੁਣੋ ਜਿਨ੍ਹਾਂ 'ਤੇ ਤੁਸੀਂ ਟ੍ਰੇਨ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ ਆਪਣੇ X ਵੇਕਟਰ ਵਜੋਂ, ਅਤੇ y ਵੇਕਟਰ `Country` ਹੋਵੇਗਾ। ਤੁਸੀਂ ਚਾਹੁੰਦੇ ਹੋ ਕਿ ਤੁਸੀਂ `Seconds`, `Latitude`, ਅਤੇ `Longitude` ਦਾਖਲ ਕਰੋ ਅਤੇ ਇੱਕ ਦੇਸ਼ ਦਾ ਕੋਡ ਪ੍ਰਾਪਤ ਕਰੋ।
+1. ਉਹ ਤਿੰਨ ਫੀਚਰ ਚੁਣੋ ਜਿਨ੍ਹਾਂ ਤੇ ਤੁਸੀਂ ਟ੍ਰੇਨ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ ਜਿਵੇਂ ਕਿ ਤੁਹਾਡੀ X ਵੇਕਟਰ ਹੋਏਗੀ, ਅਤੇ y ਵੇਕਟਰ `Country` ਹੋਵੇਗਾ। ਤੁਸੀਂ ਇੰਜਪੁਟ ਵਿੱਚ `Seconds`, `Latitude` ਅਤੇ `Longitude` ਦੇ ਕੇ ਇੱਕ ਦੇਸ਼ ਦੀ ਪਛਾਣ ਪ੍ਰਾਪਤ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ।
```python
from sklearn.model_selection import train_test_split
@@ -120,7 +120,7 @@
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
```
-1. ਲੌਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਆਪਣਾ ਮਾਡਲ ਟ੍ਰੇਨ ਕਰੋ:
+1. ਲੋਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਆਪਣੇ ਮਾਡਲ ਨੂੰ ਟ੍ਰੇਨ ਕਰੋ:
```python
from sklearn.metrics import accuracy_score, classification_report
@@ -134,13 +134,13 @@
print('Accuracy: ', accuracy_score(y_test, predictions))
```
-ਸਹੀਤਾ ਬੁਰੀ ਨਹੀਂ ਹੈ **(ਲਗਭਗ 95%)**, ਜੋ ਹੈਰਾਨੀਜਨਕ ਨਹੀਂ ਹੈ, ਕਿਉਂਕਿ `Country` ਅਤੇ `Latitude/Longitude` ਸੰਬੰਧਿਤ ਹਨ।
+ਇਹ ਸਹੀ ਹੈ **(ਲਗਭਗ 95%)**, ਬੇ-ਜੁੜੇ ਤੌਰ 'ਤੇ, ਕਿਉਂਕਿ `Country` ਅਤੇ `Latitude/Longitude` ਵਿੱਚ ਸੰਬੰਧ ਹੈ।
-ਤੁਹਾਡੇ ਦੁਆਰਾ ਬਣਾਇਆ ਗਿਆ ਮਾਡਲ ਬਹੁਤ ਵੱਖਰਾ ਨਹੀਂ ਹੈ ਕਿਉਂਕਿ ਤੁਸੀਂ `Latitude` ਅਤੇ `Longitude` ਤੋਂ ਇੱਕ `Country` ਦਾ ਅਨੁਮਾਨ ਲਗਾ ਸਕਦੇ ਹੋ, ਪਰ ਇਹ ਇੱਕ ਵਧੀਆ ਅਭਿਆਸ ਹੈ ਕੱਚੇ ਡਾਟਾ ਤੋਂ ਟ੍ਰੇਨ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਨ ਲਈ, ਜਿਸਨੂੰ ਤੁਸੀਂ ਸਾਫ ਕੀਤਾ, ਐਕਸਪੋਰਟ ਕੀਤਾ, ਅਤੇ ਫਿਰ ਇਸ ਮਾਡਲ ਨੂੰ ਇੱਕ ਵੈੱਬ ਐਪ ਵਿੱਚ ਵਰਤਿਆ।
+ਜੋ ਮਾਡਲ ਤੁਸੀਂ ਬਣਾਇਆ ਹੈ ਉਹ ਜ਼ਿਆਦਾ ਇਨਕਲਾਬੀ ਨਹੀਂ ਹੈ ਕਿਉਂਕਿ ਤੁਸੀਂ `Latitude` ਅਤੇ `Longitude` ਦੇ ਆਧਾਰ ਤੇ `Country` ਦਾ ਅੰਦਾਜ਼ਾ ਲਗਾ ਸਕਦੇ ਹੋ, ਪਰ ਇਹ ਕੱਚੇ ਡੇਟਾ ਤੋਂ ਸਾਫ, ਐਕਸਪੋਰਟ ਅਤੇ ਫਿਰ ਵੈੱਬ ਐਪ ਵਿੱਚ ਮਾਡਲ ਵਰਤਣ ਦਾ ਵਧੀਆ ਅਭਿਆਸ ਹੈ।
-## ਅਭਿਆਸ - ਆਪਣੇ ਮਾਡਲ ਨੂੰ 'pickle' ਕਰੋ
+## ਅਭਿਆਸ - ਆਪਣੇ ਮਾਡਲ ਨੂੰ 'ਪਿਕਲ' ਕਰੋ
-ਹੁਣ, ਸਮਾਂ ਆ ਗਿਆ ਹੈ ਕਿ ਤੁਸੀਂ ਆਪਣੇ ਮਾਡਲ ਨੂੰ _pickle_ ਕਰੋ! ਤੁਸੀਂ ਇਹ ਕੁਝ ਲਾਈਨਾਂ ਦੇ ਕੋਡ ਵਿੱਚ ਕਰ ਸਕਦੇ ਹੋ। ਜਦੋਂ ਇਹ _pickled_ ਹੋ ਜਾਵੇ, ਆਪਣੇ pickled ਮਾਡਲ ਨੂੰ ਲੋਡ ਕਰੋ ਅਤੇ ਇਸਨੂੰ ਸਕਿੰਟਾਂ, ਲੈਟੀਟਿਊਡ ਅਤੇ ਲੌਂਗਿਟਿਊਡ ਲਈ ਮੁੱਲਾਂ ਵਾਲੇ ਨਮੂਨਾ ਡਾਟਾ ਐਰੇ ਦੇ ਖਿਲਾਫ ਟੈਸਟ ਕਰੋ,
+ਹੁਣ ਸਮਾਂ ਆ ਗਿਆ ਹੈ ਕਿ ਤੁਸੀਂ ਆਪਣੇ ਮਾਡਲ ਨੂੰ _ਪਿਕਲ_ ਕਰੋ! ਤੁਸੀਂ ਇਹ ਕੁਝ ਕੋਡ ਲਾਈਨਾਂ ਵਿੱਚ ਕਰ ਸਕਦੇ ਹੋ। ਇਕ ਵਾਰ ਜਦੋਂ ਇਹ ਪਿਕਲ ਹੋ ਜਾਵੇ, ਆਪਣੇ ਪਿਕਲ ਕੀਤੇ ਮਾਡਲ ਨੂੰ ਲੋਡ ਕਰੋ ਅਤੇ ਉਸਨੂੰ ਸਕਿੰਟ, ਅੱਖਾਂ ਦੀ ਚੌੜਾਈ ਅਤੇ ਲਾਂਬਾਈ ਵਾਲੇ ਨਮੂਨਾ ਡੇਟਾ ਐਰੇ ਨਾਲ ਟੈਸਟ ਕਰੋ,
```python
import pickle
@@ -151,15 +151,15 @@ model = pickle.load(open('ufo-model.pkl','rb'))
print(model.predict([[50,44,-12]]))
```
-ਮਾਡਲ **'3'** ਵਾਪਸ ਕਰਦਾ ਹੈ, ਜੋ ਕਿ ਯੂਕੇ ਲਈ ਦੇਸ਼ ਕੋਡ ਹੈ। ਹੈਰਾਨੀਜਨਕ! 👽
+ਮਾਡਲ **'3'** ਵਾਪਿਸ ਕਰਦਾ ਹੈ, ਜੋ UK ਦਾ ਦੇਸ਼ ਕੋਡ ਹੈ। ਵਾਹ! 👽
-## ਅਭਿਆਸ - Flask ਐਪ ਬਣਾਓ
+## ਅਭਿਆਸ - ਇੱਕ Flask ਐਪ ਬਣਾਓ
-ਹੁਣ ਤੁਸੀਂ ਇੱਕ Flask ਐਪ ਬਣਾ ਸਕਦੇ ਹੋ ਜੋ ਤੁਹਾਡੇ ਮਾਡਲ ਨੂੰ ਕਾਲ ਕਰੇ ਅਤੇ ਇਸੇ ਤਰ੍ਹਾਂ ਦੇ ਨਤੀਜੇ ਵਾਪਸ ਕਰੇ, ਪਰ ਇੱਕ ਹੋਰ ਦ੍ਰਿਸ਼ਟੀਗੋਚੀ ਤਰੀਕੇ ਨਾਲ।
+ਹੁਣ ਤੁਸੀਂ ਆਪਣੇ ਮਾਡਲ ਨੂੰ ਕਾਲ ਕਰਨ ਅਤੇ ਇਸੇ ਤਰ੍ਹਾਂ ਦੇ ਨਤੀਜੇ ਵਾਪਸ ਕਰਨ ਲਈ Flask ਐਪ ਬਣਾ ਸਕਦੇ ਹੋ, ਪਰ ਇੱਕ ਜ਼ਿਆਦਾ ਦਿਖਾਈ ਦੇਣ ਵਾਲੇ ਢੰਗ ਨਾਲ।
-1. _notebook.ipynb_ ਫਾਈਲ ਦੇ ਕੋਲ ਇੱਕ ਫੋਲਡਰ **web-app** ਬਣਾਓ ਜਿੱਥੇ ਤੁਹਾਡੀ _ufo-model.pkl_ ਫਾਈਲ ਮੌਜੂਦ ਹੈ।
+1. _notebook.ipynb_ ਫਾਇਲ ਦੇ ਨਾਲ ਇੱਕ **web-app** ਨਾਂ ਦਾ ਫੋਲਡਰ ਬਣਾਓ ਜਿੱਥੇ ਤੁਹਾਡੀ _ufo-model.pkl_ ਫਾਇਲ ਹੈ।
-1. ਉਸ ਫੋਲਡਰ ਵਿੱਚ ਤਿੰਨ ਹੋਰ ਫੋਲਡਰ ਬਣਾਓ: **static**, ਜਿਸ ਵਿੱਚ ਇੱਕ ਫੋਲਡਰ **css** ਹੈ, ਅਤੇ **templates**। ਹੁਣ ਤੁਹਾਡੇ ਕੋਲ ਹੇਠਾਂ ਦਿੱਤੇ ਫਾਈਲਾਂ ਅਤੇ ਡਾਇਰੈਕਟਰੀਆਂ ਹੋਣੀਆਂ ਚਾਹੀਦੀਆਂ ਹਨ:
+1. ਉਸ ਫੋਲਡਰ ਵਿੱਚ ਤਿੰਨ ਹੋਰ ਫੋਲਡਰ ਬਣਾਓ: **static** ਜਿਸ ਦੇ ਅੰਦਰ **css** ਫੋਲਡਰ ਹੋਵੇ, ਅਤੇ **templates**। ਹੁਣ ਤੁਹਾਡੇ ਕੋਲ ਇਹ ਫਾਇਲਾਂ ਅਤੇ ਡਾਇਰੈਕਟਰੀਜ਼ ਹੋਣ:
```output
web-app/
@@ -170,9 +170,9 @@ print(model.predict([[50,44,-12]]))
ufo-model.pkl
```
- ✅ ਤਿਆਰ ਐਪ ਦੇ ਦ੍ਰਿਸ਼ਟੀਕੋਣ ਲਈ ਹੱਲ ਫੋਲਡਰ ਨੂੰ ਵੇਖੋ
+ ✅ ਬਣੇ ਹੋਏ ਐਪ ਦੀ ਨਜ਼ਰ ਲਈ ਹੱਲ ਫੋਲਡਰ ਨੂੰ ਵੇਖੋ
-1. _web-app_ ਫੋਲਡਰ ਵਿੱਚ ਬਣਾਉਣ ਲਈ ਪਹਿਲੀ ਫਾਈਲ **requirements.txt** ਹੈ। ਜਿਵੇਂ ਕਿ ਜਾਵਾਸਕ੍ਰਿਪਟ ਐਪ ਵਿੱਚ _package.json_, ਇਹ ਫਾਈਲ ਐਪ ਦੁਆਰਾ ਲੋੜੀਂਦੇ ਡਿਪੈਂਡੈਂਸੀਜ਼ ਦੀ ਸੂਚੀ ਦਿੰਦੀ ਹੈ। **requirements.txt** ਵਿੱਚ ਹੇਠਾਂ ਦਿੱਤੀਆਂ ਲਾਈਨਾਂ ਸ਼ਾਮਲ ਕਰੋ:
+1. _web-app_ ਫੋਲਡਰ ਵਿੱਚ ਬਣਾਉਣ ਵਾਲੀ ਪਹਿਲੀ ਫਾਈਲ **requirements.txt** ਹੈ। ਜਿਵੇਂ ਕਿ ਜਾਵਾਸਕ੍ਰਿਪਟ ਐਪ ਵਿੱਚ _package.json_ ਹੁੰਦਾ ਹੈ, ਇਹ ਫਾਇਲ ਐਪ ਲਈ ਲੋੜੀਂਦੇ ਡਿਪੈਂਡੇਨਸੀਜ਼ ਦੀ ਸੂਚੀ ਦਿੰਦੀ ਹੈ। **requirements.txt** ਵਿੱਚ ਇਹ ਲਾਈਨਾਂ ਸ਼ਾਮਲ ਕਰੋ:
```text
scikit-learn
@@ -181,25 +181,25 @@ print(model.predict([[50,44,-12]]))
flask
```
-1. ਹੁਣ, ਇਸ ਫਾਈਲ ਨੂੰ _web-app_ ਵਿੱਚ ਨੈਵੀਗੇਟ ਕਰਕੇ ਚਲਾਓ:
+1. ਹੁਣ, ਇਸ ਫਾਇਲ ਨੂੰ _web-app_ ਵਿੱਚ ਜਾਂਕੇ ਚਲਾਓ:
```bash
cd web-app
```
-1. ਆਪਣੇ ਟਰਮੀਨਲ ਵਿੱਚ `pip install` ਟਾਈਪ ਕਰੋ, ਤਾਂ ਜੋ _requirements.txt_ ਵਿੱਚ ਸੂਚੀਬੱਧ ਲਾਇਬ੍ਰੇਰੀਆਂ ਨੂੰ ਇੰਸਟਾਲ ਕੀਤਾ ਜਾ ਸਕੇ:
+1. ਆਪਣੇ ਟਰਮੀਨਲ ਵਿੱਚ `pip install` ਲਿਖੋ ਤਾਂ ਜੋ _requirements.txt_ ਵਿੱਚ ਦਿੱਤੀਆਂ ਲਾਇਬਰੇਰੀਆਂ ਇੰਸਟਾਲ ਹੋ ਜਾਣ:
```bash
pip install -r requirements.txt
```
-1. ਹੁਣ, ਤੁਸੀਂ ਐਪ ਨੂੰ ਪੂਰਾ ਕਰਨ ਲਈ ਤਿੰਨ ਹੋਰ ਫਾਈਲਾਂ ਬਣਾਉਣ ਲਈ ਤਿਆਰ ਹੋ:
+1. ਹੁਣ, ਆਪਣੇ ਐਪ ਨੂੰ ਖਤਮ ਕਰਨ ਲਈ ਤਿੰਨ ਹੋਰ ਫਾਇਲਾਂ ਬਣਾਉਣ ਲਈ ਤਿਆਰ ਹੋ:
- 1. **app.py** ਨੂੰ ਰੂਟ ਵਿੱਚ ਬਣਾਓ।
+ 1. ਰੂਟ ਵਿੱਚ **app.py** ਬਣਾਓ।
2. _templates_ ਡਾਇਰੈਕਟਰੀ ਵਿੱਚ **index.html** ਬਣਾਓ।
3. _static/css_ ਡਾਇਰੈਕਟਰੀ ਵਿੱਚ **styles.css** ਬਣਾਓ।
-1. _styles.css_ ਫਾਈਲ ਵਿੱਚ ਕੁਝ ਸਟਾਈਲਾਂ ਸ਼ਾਮਲ ਕਰੋ:
+1. _styles.css_ ਫਾਇਲ ਵਿੱਚ ਕੁਝ ਸਟਾਈਲਜ਼ ਬਣਾਓ:
```css
body {
@@ -233,7 +233,7 @@ print(model.predict([[50,44,-12]]))
}
```
-1. ਅਗਲੇ ਕਦਮ ਵਿੱਚ, _index.html_ ਫਾਈਲ ਬਣਾਓ:
+1. ਅਗਲੇ, _index.html_ ਫਾਇਲ ਬਣਾਓ:
```html
@@ -268,11 +268,11 @@ print(model.predict([[50,44,-12]]))