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 @@ -# بناء حلول التعلم الآلي باستخدام الذكاء الاصطناعي المسؤول - -![ملخص الذكاء الاصطناعي المسؤول في التعلم الآلي في رسم تخطيطي](../../../../sketchnotes/ml-fairness.png) +# بناء حلول التعلم الآلي مع الذكاء الاصطناعي المسؤول + +![ملخص الذكاء الاصطناعي المسؤول في التعلم الآلي في رسم تخطيطي](../../../../translated_images/ar/ml-fairness.ef296ebec6afc98a.webp) > رسم تخطيطي بواسطة [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://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "نهج مايكروسوفت تجاه الذكاء الاصطناعي المسؤول") +[![نهج مايكروسوفت للذكاء الاصطناعي المسؤول](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](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) +- **الشهرة السيئة**. انتقاد لامر أو شخص بشكل غير عادل ووضع ملصقات عليه. على سبيل المثال، تقنية تصنيف الصور بالخطأ صنفت صور الأشخاص ذوي البشرة الداكنة على أنهم غوريلا. +- **التمثيل الزائد أو الناقص**. الفكرة هي أن مجموعة معينة ليست مرئية في مهنة محددة، وأي خدمة أو وظيفة تستمر في تعزيز ذلك تسهم في الإضرار. +- **الصور النمطية**. ربط مجموعة معينة بصفات محددة مسبقًا. على سبيل المثال، نظام ترجمة بين الإنجليزية والتركية قد يحتوي على أخطاء بسبب كلمات مرتبطة بالصور النمطية للجنس. -![الترجمة إلى التركية](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) +![الترجمة إلى التركية](../../../../translated_images/ar/gender-bias-translate-en-tr.f185fd8822c2d437.webp) > الترجمة إلى التركية -![الترجمة إلى الإنجليزية](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) -> الترجمة إلى الإنجليزية +![الترجمة مرة أخرى إلى الإنجليزية](../../../../translated_images/ar/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) +> الترجمة مرة أخرى إلى الإنجليزية -عند تصميم واختبار أنظمة الذكاء الاصطناعي، يجب أن نضمن أن الذكاء الاصطناعي عادل وغير مبرمج لاتخاذ قرارات متحيزة أو تمييزية، وهي قرارات يُحظر على البشر اتخاذها أيضًا. ضمان الإنصاف في الذكاء الاصطناعي والتعلم الآلي يظل تحديًا اجتماعيًا تقنيًا معقدًا. +عند تصميم واختبار أنظمة الذكاء الاصطناعي، نحتاج إلى ضمان أن الذكاء الاصطناعي عادل وليس مبرمجًا لاتخاذ قرارات متحيزة أو تمييزية، والتي يُمنع البشر من اتخاذها أيضًا. ضمان العدالة في الذكاء الاصطناعي والتعلم الآلي لا يزال تحديًا اجتماعيًا تقنيًا معقدًا. ### الموثوقية والسلامة -لبناء الثقة، يجب أن تكون أنظمة الذكاء الاصطناعي موثوقة وآمنة ومتسقة في الظروف العادية وغير المتوقعة. من المهم معرفة كيف ستتصرف أنظمة الذكاء الاصطناعي في مجموعة متنوعة من المواقف، خاصة عندما تكون هناك حالات شاذة. عند بناء حلول الذكاء الاصطناعي، يجب التركيز بشكل كبير على كيفية التعامل مع مجموعة واسعة من الظروف التي قد تواجهها هذه الحلول. على سبيل المثال، يجب أن تكون السيارة ذاتية القيادة تضع سلامة الناس كأولوية قصوى. نتيجة لذلك، يجب أن يأخذ الذكاء الاصطناعي الذي يشغل السيارة في الاعتبار جميع السيناريوهات الممكنة التي قد تواجهها السيارة مثل الليل، العواصف الرعدية أو الثلوج، الأطفال الذين يركضون عبر الشارع، الحيوانات الأليفة، أعمال الطرق، إلخ. مدى قدرة نظام الذكاء الاصطناعي على التعامل مع مجموعة واسعة من الظروف بشكل موثوق وآمن يعكس مستوى التوقعات التي أخذها عالم البيانات أو مطور الذكاء الاصطناعي في الاعتبار أثناء تصميم أو اختبار النظام. +لبناء الثقة، يجب أن تكون أنظمة الذكاء الاصطناعي موثوقة، وآمنة، ومتسقة في الظروف العادية وغير المتوقعة. من المهم معرفة كيف ستتصرف أنظمة الذكاء الاصطناعي في مجموعة متنوعة من الحالات، خاصة عندما تكون حالات شاذة. عند بناء حلول الذكاء الاصطناعي، يجب أن يكون هناك تركيز كبير على كيفية التعامل مع مجموعة واسعة من الظروف التي قد تواجهها الحلول. على سبيل المثال، يجب على السيارة ذاتية القيادة أن تضع سلامة الناس كأولوية قصوى. ونتيجة لذلك، يحتاج الذكاء الاصطناعي المشغّل للسيارة إلى النظر في جميع السيناريوهات الممكنة التي قد تواجه السيارة مثل الليل، العواصف الرعدية أو العواصف الثلجية، الأطفال الذين يركضون عبر الشارع، الحيوانات الأليفة، أعمال الطرق، وما إلى ذلك. مدى جودة قدرة نظام الذكاء الاصطناعي على التعامل مع نطاق واسع من الظروف بشكل موثوق وآمن يعكس مستوى التوقع الذي اعتبره عالم البيانات أو مطور الذكاء الاصطناعي خلال تصميم أو اختبار النظام. -> [🎥 انقر هنا لمشاهدة الفيديو: ](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) -- نظرًا لأن أنظمة الذكاء الاصطناعي معقدة للغاية، من الصعب فهم كيفية عملها وتفسير النتائج. +- بسبب تعقيد أنظمة الذكاء الاصطناعي، يصعب فهم كيف تعمل وتفسير النتائج. - يؤثر هذا النقص في الفهم على طريقة إدارة هذه الأنظمة، تشغيلها، وتوثيقها. -- يؤثر هذا النقص في الفهم بشكل أكثر أهمية على القرارات التي تُتخذ باستخدام النتائج التي تنتجها هذه الأنظمة. +- والأهم من ذلك، يؤثر هذا النقص في الفهم على القرارات المتخذة باستخدام النتائج التي تنتجها هذه الأنظمة. ### المساءلة + +يجب أن يكون الأشخاص الذين يصممون وينشرون أنظمة الذكاء الاصطناعي مسؤولين عن كيفية عمل أنظمتهم. الحاجة إلى المساءلة تكون مهمة بشكل خاص مع التقنيات الحساسة مثل التعرف على الوجه. مؤخرًا، كان هناك طلب متزايد لتقنية التعرف على الوجه، خاصة من منظمات إنفاذ القانون التي ترى إمكانيات التقنية في استخدامات مثل العثور على الأطفال المفقودين. ومع ذلك، يمكن أن تستخدم هذه التكنولوجيا من قبل الحكومات لتعريض الحريات الأساسية لمواطنيها للخطر، مثل تمكين المراقبة المستمرة لأفراد محددين. لذا، يجب على علماء البيانات والمنظمات أن يكونوا مسؤولين عن كيفية تأثير نظام الذكاء الاصطناعي على الأفراد أو المجتمع. -يجب أن يكون الأشخاص الذين يصممون وينشرون أنظمة الذكاء الاصطناعي مسؤولين عن كيفية عمل أنظمتهم. الحاجة إلى المساءلة مهمة بشكل خاص مع التقنيات الحساسة مثل التعرف على الوجه. مؤخرًا، كان هناك طلب متزايد على تقنية التعرف على الوجه، خاصة من المنظمات القانونية التي ترى إمكانات التكنولوجيا في استخدامات مثل العثور على الأطفال المفقودين. ومع ذلك، يمكن أن تُستخدم هذه التقنيات من قبل الحكومات لتعريض الحريات الأساسية لمواطنيها للخطر، على سبيل المثال، من خلال تمكين المراقبة المستمرة لأفراد معينين. لذلك، يجب أن يكون علماء البيانات والمنظمات مسؤولين عن كيفية تأثير نظام الذكاء الاصطناعي على الأفراد أو المجتمع. - -[![باحث رائد في الذكاء الاصطناعي يحذر من المراقبة الجماعية عبر التعرف على الوجه](../../../../1-Introduction/3-fairness/images/accountability.png)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "نهج مايكروسوفت تجاه الذكاء الاصطناعي المسؤول") +[![باحث رائد في الذكاء الاصطناعي يحذر من المراقبة الجماعية عبر التعرف على الوجه](../../../../translated_images/ar/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "نهج مايكروسوفت للذكاء الاصطناعي المسؤول") -> 🎥 انقر على الصورة أعلاه لمشاهدة الفيديو: تحذيرات من المراقبة الجماعية عبر التعرف على الوجه +> 🎥 انقر على الصورة أعلاه لمشاهدة فيديو: تحذيرات من المراقبة الجماعية عبر التعرف على الوجه -في النهاية، أحد أكبر الأسئلة لجيلنا، كأول جيل يجلب الذكاء الاصطناعي إلى المجتمع، هو كيفية ضمان أن تظل أجهزة الكمبيوتر مسؤولة أمام الناس وكيفية ضمان أن يظل الأشخاص الذين يصممون أجهزة الكمبيوتر مسؤولين أمام الجميع. +في النهاية، أحد أكبر الأسئلة لأجيالنا، كجيل أول يجلب الذكاء الاصطناعي للمجتمع، هو كيفية ضمان بقاء الحواسيب مسؤولة أمام الناس وكيفية ضمان بقاء الأشخاص الذين يصممون الحواسيب مسؤولين أمام الجميع. ## تقييم التأثير -قبل تدريب نموذج التعلم الآلي، من المهم إجراء تقييم تأثير لفهم الغرض من نظام الذكاء الاصطناعي؛ ما هو الاستخدام المقصود؛ أين سيتم نشره؛ ومن سيتفاعل مع النظام. هذه التقييمات مفيدة للمراجعين أو المختبرين لتقييم النظام ومعرفة العوامل التي يجب أخذها في الاعتبار عند تحديد المخاطر المحتملة والعواقب المتوقعة. +قبل تدريب نموذج التعلم الآلي، من المهم إجراء تقييم تأثير لفهم هدف نظام الذكاء الاصطناعي؛ ما هو الاستخدام المقصود؛ أين سيتم نشره؛ ومن سيتفاعل مع النظام. هذه المعلومات تفيد المراجعين أو المختبرين الذين يقيمون النظام لمعرفة العوامل التي يجب مراعاتها عند تحديد المخاطر المحتملة والعواقب المتوقعة. + +المجالات التالية تعتبر محورية عند إجراء تقييم التأثير: -تشمل المجالات التي يجب التركيز عليها عند إجراء تقييم التأثير: +* **التأثير السلبي على الأفراد**. الوعي بأي قيود أو متطلبات، استخدام غير مدعوم أو أي قيود معروفة تعيق أداء النظام ضروري لضمان عدم استخدام النظام بطريقة قد تسبب ضررًا للأفراد. +* **متطلبات البيانات**. فهم كيف وأين سيستخدم النظام البيانات يمكن المراجعين من استكشاف متطلبات البيانات التي يجب الانتباه لها (مثل تنظيمات GDPR أو HIPAA). بالإضافة إلى ذلك، يجب فحص ما إذا كانت مصدر البيانات أو كميتها كافيين للتدريب. +* **ملخص التأثير**. جمع قائمة بالأضرار المحتملة التي قد تنشأ من استخدام النظام. خلال دورة حياة التعلم الآلي، مراجعة ما إذا تم التخفيف من المشكلات المحددة أو التعامل معها. +* **الأهداف التطبيقية** لكل من المبادئ الستة الأساسية. تقييم ما إذا تم تحقيق أهداف كل مبدأ وإذا كان هناك أي ثغرات. -* **التأثير السلبي على الأفراد**. إدراك أي قيود أو متطلبات، استخدام غير مدعوم أو أي قيود معروفة تعيق أداء النظام أمر ضروري لضمان عدم استخدام النظام بطريقة قد تسبب ضررًا للأفراد. -* **متطلبات البيانات**. فهم كيفية وأين سيستخدم النظام البيانات يمكّن المراجعين من استكشاف أي متطلبات بيانات يجب أن تكون على دراية بها (مثل لوائح GDPR أو HIPPA). بالإضافة إلى ذلك، فحص ما إذا كان مصدر أو كمية البيانات كافٍ للتدريب. -* **ملخص التأثير**. جمع قائمة بالأضرار المحتملة التي قد تنشأ عن استخدام النظام. خلال دورة حياة التعلم الآلي، مراجعة ما إذا كانت المشكلات المحددة قد تم تخفيفها أو معالجتها. -* **الأهداف القابلة للتطبيق** لكل من المبادئ الستة الأساسية. تقييم ما إذا كانت الأهداف من كل مبدأ قد تم تحقيقها وما إذا كانت هناك أي فجوات. -## تصحيح الأخطاء باستخدام الذكاء الاصطناعي المسؤول +## تصحيح الأخطاء مع الذكاء الاصطناعي المسؤول -مثل تصحيح الأخطاء في تطبيق برمجي، فإن تصحيح الأخطاء في نظام الذكاء الاصطناعي هو عملية ضرورية لتحديد وحل المشكلات في النظام. هناك العديد من العوامل التي قد تؤثر على أداء النموذج بشكل غير متوقع أو غير مسؤول. معظم مقاييس أداء النموذج التقليدية هي تجميعات كمية لأداء النموذج، والتي لا تكفي لتحليل كيفية انتهاك النموذج لمبادئ الذكاء الاصطناعي المسؤول. علاوة على ذلك، يعد نموذج التعلم الآلي صندوقًا أسودًا يجعل من الصعب فهم ما يدفع نتائجه أو تقديم تفسير عندما يرتكب خطأ. لاحقًا في هذه الدورة، سنتعلم كيفية استخدام لوحة معلومات الذكاء الاصطناعي المسؤول للمساعدة في تصحيح أخطاء أنظمة الذكاء الاصطناعي. توفر لوحة المعلومات أداة شاملة لعلماء البيانات ومطوري الذكاء الاصطناعي للقيام بما يلي: +مثل تصحيح الأخطاء في تطبيق برمجي، يعد تصحيح أخطاء نظام الذكاء الاصطناعي خطوة ضرورية لتحديد وحل المشكلات في النظام. هناك العديد من العوامل التي تؤثر على عدم أداء النموذج كما هو متوقع أو بشكل مسؤول. معظم مقاييس أداء النماذج التقليدية هي مقاييس كمية لأداء النموذج، والتي لا تكفي لتحليل كيف ينتهك نموذج مبادئ الذكاء الاصطناعي المسؤول. علاوة على ذلك، نموذج التعلم الآلي صندوق أسود يصعب فهم ما الذي يدفع ناتجه أو تقديم شرح عند حدوث خطأ. لاحقًا في هذا المقرر، سنتعلم كيفية استخدام لوحة تحكم الذكاء الاصطناعي المسؤول للمساعدة في تصحيح أنظمة الذكاء الاصطناعي. توفر اللوحة أداة شاملة لعلماء البيانات ومطوري الذكاء الاصطناعي لأداء: -* **تحليل الأخطاء**. لتحديد توزيع الأخطاء في النموذج الذي يمكن أن يؤثر على إنصاف النظام أو موثوقيته. -* **نظرة عامة على النموذج**. لاكتشاف أين توجد تفاوتات في أداء النموذج عبر مجموعات البيانات. -* **تحليل البيانات**. لفهم توزيع البيانات وتحديد أي تحيز محتمل في البيانات قد يؤدي إلى مشكلات في الإنصاف، الشمولية، والموثوقية. -* **تفسير النموذج**. لفهم ما يؤثر أو يؤثر على توقعات النموذج. يساعد ذلك في تفسير سلوك النموذج، وهو أمر مهم للشفافية والمساءلة. +* **تحليل الأخطاء**. لتحديد توزيع الخطأ للنموذج الذي يمكن أن يؤثر على عدالة النظام أو موثوقيته. +* **نظرة عامة على النموذج**. لاكتشاف أماكن التفاوت في أداء النموذج عبر مجموعات البيانات. +* **تحليل البيانات**. لفهم توزيع البيانات وتحديد أي تحيز محتمل في البيانات قد يؤدي إلى مشاكل في العدالة، الشمولية، والموثوقية. +* **قابلية تفسير النموذج**. لفهم ما يؤثر أو يؤثر في تنبؤات النموذج. هذا يساعد في شرح سلوك النموذج، وهو أمر مهم للشفافية والمساءلة. -## 🚀 التحدي -لمنع الأضرار من أن تُدخل في المقام الأول، يجب علينا: +## 🚀 تحدي + +لمنع إدخال الأضرار من البداية، يجب علينا: -- ضمان تنوع الخلفيات ووجهات النظر بين الأشخاص الذين يعملون على الأنظمة. -- الاستثمار في مجموعات بيانات تعكس تنوع مجتمعنا. -- تطوير طرق أفضل خلال دورة حياة التعلم الآلي للكشف عن الذكاء الاصطناعي المسؤول وتصحيحه عند حدوثه. +- وجود تنوع في الخلفيات ووجهات النظر بين الأشخاص العاملين على الأنظمة +- الاستثمار في مجموعات البيانات التي تعكس تنوع مجتمعنا +- تطوير طرق أفضل طوال دورة حياة التعلم الآلي لاكتشاف وتصحيح المسؤولية في الذكاء الاصطناعي عندما تحدث -فكر في سيناريوهات واقعية حيث يكون عدم موثوقية النموذج واضحًا في بناء النموذج واستخدامه. ما الذي يجب أن نأخذه في الاعتبار أيضًا؟ +فكر في سيناريوهات حياتية حقيقية يكون فيها عدم ثقة النموذج واضحًا في بناء النموذج واستخدامه. ماذا يجب أن نأخذ في الاعتبار أيضًا؟ ## [اختبار ما بعد المحاضرة](https://ff-quizzes.netlify.app/en/ml/) -## المراجعة والدراسة الذاتية +## مراجعة ودراسة ذاتية + -في هذا الدرس، تعلمت بعض أساسيات مفاهيم الإنصاف وعدم الإنصاف في التعلم الآلي. -شاهد هذه الورشة للتعمق أكثر في المواضيع: +في هذا الدرس، تعلمت بعض أساسيات مفاهيم العدالة وعدم العدالة في التعلم الآلي. + +شاهد هذه الورشة للتعمق أكثر في المواضيع: -- السعي نحو الذكاء الاصطناعي المسؤول: تحويل المبادئ إلى ممارسة بواسطة بسميرة نوشي، مهرنوش ساميكي وأميت شارما +- في السعي نحو الذكاء الاصطناعي المسؤول: تطبيق المبادئ عملياً بقلم بيسميرا نوشي، مهرنوش سامي وأميت شارما -[![Responsible AI Toolbox: إطار عمل مفتوح المصدر لبناء ذكاء اصطناعي مسؤول](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: إطار عمل مفتوح المصدر لبناء ذكاء اصطناعي مسؤول") +[![صندوق أدوات الذكاء الاصطناعي المسؤول: إطار عمل مفتوح المصدر لبناء ذكاء اصطناعي مسؤول](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") -> 🎥 اضغط على الصورة أعلاه لمشاهدة الفيديو: 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 لنماذج الانحدار -![ملخص الانحدارات في رسم توضيحي](../../../../sketchnotes/ml-regression.png) +![ملخص الانحدارات في ملاحظة مرسومة](../../../../translated_images/ar/ml-regression.4e4f70e3b3ed446e.webp) -> رسم توضيحي بواسطة [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://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "تعلم الآلة للمبتدئين - إعداد أدواتك لبناء نماذج تعلم الآلة") +[![التعلم الآلي للمبتدئين - جهز أدواتك لبناء نماذج التعلم الآلي](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](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) > - > [![إعداد Python مع Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "إعداد Python مع Visual Studio Code") + > [![إعداد بايثون مع Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](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`. -دفاتر الملاحظات هي بيئة تفاعلية تسمح للمطور بكتابة الكود وإضافة ملاحظات وكتابة توثيق حول الكود، وهو أمر مفيد جدًا للمشاريع التجريبية أو البحثية. +الدفاتر هي بيئة تفاعلية تسمح للمطور بكتابة الكود وإضافة ملاحظات وكتابة توثيق حول الكود، وهو أمر مفيد جدًا للمشاريع التجريبية أو البحثية. -[![تعلم الآلة للمبتدئين - إعداد دفاتر Jupyter للبدء في بناء نماذج الانحدار](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "تعلم الآلة للمبتدئين - إعداد دفاتر Jupyter للبدء في بناء نماذج الانحدار") +[![التعلم الآلي للمبتدئين - إعداد دفاتر Jupyter لبدء بناء نماذج الانحدار](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](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 ``` -![VS Code مع دفتر ملاحظات مفتوح](../../../../2-Regression/1-Tools/images/notebook.jpg) +![VS Code مع دفتر ملاحظات مفتوح](../../../../translated_images/ar/notebook.4a3ee31f396b8832.webp) -يمكنك دمج الكود مع التعليقات لتوثيق دفتر الملاحظات ذاتيًا. +يمكنك دمج كودك مع التعليقات لتوثيق الدفتر بنفسك. -✅ فكر للحظة في مدى اختلاف بيئة عمل مطور الويب عن بيئة عمل عالم البيانات. +✅ فكر للحظة كيف تختلف بيئة عمل مطور الويب مقارنةً ببيئة عالم البيانات. -## البدء مع 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. -[![تعلم الآلة للمبتدئين - مشروعك الأول للانحدار الخطي في Python](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "تعلم الآلة للمبتدئين - مشروعك الأول للانحدار الخطي في Python") -> 🎥 انقر على الصورة أعلاه لمشاهدة فيديو قصير حول هذا التمرين. +[![التعلم الآلي للمبتدئين - مشروعك الأول للانحدار الخطي في بايثون](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](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() ``` - ![مخطط نقاط يظهر نقاط البيانات حول مرض السكري](../../../../2-Regression/1-Tools/images/scatterplot.png) -✅ فكر قليلاً فيما يحدث هنا. هناك خط مستقيم يمر عبر العديد من النقاط الصغيرة من البيانات، ولكن ماذا يفعل بالضبط؟ هل يمكنك أن ترى كيف يمكن استخدام هذا الخط للتنبؤ بمكان نقطة بيانات جديدة وغير مرئية بالنسبة لمحور y في الرسم البياني؟ حاول أن تصف الاستخدام العملي لهذا النموذج بالكلمات. + ![مخطط نقاط يوضح نقاط بيانات حول السكري](../../../../translated_images/ar/scatterplot.ad8b356bcbb33be6.webp) -تهانينا، لقد قمت ببناء أول نموذج انحدار خطي، وأنشأت تنبؤًا باستخدامه، وعرضته في رسم بياني! ---- -## 🚀التحدي + ✅ فكر قليلاً في ما يحدث هنا. هناك خط مستقيم يمر عبر العديد من نقاط البيانات الصغيرة، ولكنه ماذا يفعل بالضبط؟ هل ترى كيف ينبغي أن تتمكن من استخدام هذا الخط للتنبؤ بمكان تناسب نقطة بيانات جديدة غير مرئية بالنسبة لمحور 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: تحضير البيانات وتصويرها -![مخطط تصوير البيانات](../../../../2-Regression/2-Data/images/data-visualization.png) +![مخطط بياني لتصور البيانات](../../../../translated_images/ar/data-visualization.54e56dded7c1a804.webp) -مخطط تصوير البيانات بواسطة [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://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "تعلم الآلة للمبتدئين - كيفية تحليل وتنظيف مجموعة بيانات") +[![تعلم الآلة للمبتدئين - كيف تحلل وتنظف مجموعة بيانات](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](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، بالنظر إلى المساحة غير المستخدمة التي يشغلها قرع كبير مجوف. -## استراتيجيات التصوير +## استراتيجيات التصور -جزء من دور عالم البيانات هو توضيح جودة وطبيعة البيانات التي يعمل معها. للقيام بذلك، غالبًا ما يقومون بإنشاء تصورات مثيرة للاهتمام، مثل المخططات، الرسوم البيانية، والخرائط، التي تظهر جوانب مختلفة من البيانات. بهذه الطريقة، يمكنهم عرض العلاقات والفجوات بصريًا التي يصعب اكتشافها بطريقة أخرى. +جزء من دور عالم البيانات هو إظهار جودة وطبيعة البيانات التي يعملون بها. لتحقيق ذلك، كثيرًا ما يقومون بإنشاء تصورات مثيرة للاهتمام، مثل المخططات والرسوم البيانية التي تظهر جوانب مختلفة من البيانات. بهذه الطريقة، يستطيعون بصريًا إظهار العلاقات والفجوات التي يصعُب اكتشافها بطرق أخرى. -[![تعلم الآلة للمبتدئين - كيفية تصوير البيانات باستخدام Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "تعلم الآلة للمبتدئين - كيفية تصوير البيانات باستخدام Matplotlib") +[![تعلم الآلة للمبتدئين - كيفية تصور البيانات باستخدام Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](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() ``` - ![مخطط انتشار يظهر العلاقة بين السعر والشهر](../../../../2-Regression/2-Data/images/scatterplot.png) + ![مخطط تبعثر يوضح العلاقة بين السعر والشهر](../../../../translated_images/ar/scatterplot.b6868f44cbd2051c.webp) - هل هذا مخطط مفيد؟ هل هناك شيء يفاجئك؟ + هل هذا مخطط مفيد؟ هل من شيء مفاجئ بشأنه؟ - إنه ليس مفيدًا بشكل خاص حيث إنه يعرض فقط بياناتك كنقاط منتشرة في شهر معين. + هو ليس مفيدًا للغاية كونه يعرض بياناتك كنقاط منتشرة في شهر معين. -### اجعلها مفيدة +### اجعله مفيدًا -لجعل المخططات تعرض بيانات مفيدة، عادةً ما تحتاج إلى تجميع البيانات بطريقة ما. دعونا نحاول إنشاء مخطط حيث يظهر المحور y الأشهر وتظهر البيانات توزيع البيانات. +لجعل المخططات تعرض بيانات مفيدة، عادةً تحتاج إلى تجميع البيانات بطريقة ما. لنحاول إنشاء مخطط يعرض المحور الرأسي فيه الشهور وتوضح البيانات التوزيع. -1. أضف خلية لإنشاء مخطط شريطي مجمع: +1. أضف خلية لإنشاء مخطط أعمدة مجمعة: ```python new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') plt.ylabel("Pumpkin Price") ``` - ![مخطط شريطي يظهر العلاقة بين السعر والشهر](../../../../2-Regression/2-Data/images/barchart.png) + ![مخطط أعمدة يوضح العلاقة بين السعر والشهر](../../../../translated_images/ar/barchart.a833ea9194346d76.webp) + + هذا تصور بيانات أكثر فائدة! يبدو أنه يشير إلى أن أعلى سعر للقرع يكون في سبتمبر وأكتوبر. هل يتوافق هذا مع توقعاتك؟ لماذا أو لماذا لا؟ + +## تمرين - تجربة 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 يظهر العلاقة بين السعر والشهر](../../../../translated_images/ar/relplot.a03837d8f0329cec.webp) + + لاحظ كيف تمرر _أسماء الأعمدة_ وإطار البيانات، ويتولى Seaborn تسمية المحاور لك. + +2. يمكنك التبديل إلى مخطط خطي بتمرير `kind="line"`. Seaborn يرسم حتى شريطًا مظللًا يظهر نطاق الثقة حول الخط: + + ```python + sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins) + ``` + + ![مخطط خطي Seaborn يظهر العلاقة بين السعر والشهر](../../../../translated_images/ar/lineplot.f9034ba47b1e30ee.webp) + + هذه البيانات معقدة إلى حد ما، لذلك مخطط الخط ليس الخيار الأكثر وضوحًا هنا — لكنه يظهر مدى سهولة تغيير أنواع المخططات في 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") + ``` + + ![مخطط أعمدة Seaborn يظهر توزيع السعر لكل شهر](../../../../translated_images/ar/catplot.e73fc35fdf96242b.webp) + + هذا يؤكد ما رأيته مع 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") + ``` + + ![مخطط حرارة من Seaborn يظهر الارتباطات بين الأعمدة الرقمية](../../../../translated_images/ar/heatmap.bd98dce43b404c57.webp) + + القيم القريبة من `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 +# مقدمة في التعلم المعزز وتعلم كيو -![ملخص التعلم التعزيزي في التعلم الآلي في رسم توضيحي](../../../../sketchnotes/ml-reinforcement.png) -> رسم توضيحي بواسطة [Tomomi Imura](https://www.twitter.com/girlie_mac) +![ملخص للتعزيز في تعليم الآلة في رسم تخطيطي](../../../../translated_images/ar/ml-reinforcement.94024374d63348db.webp) +> رسم تخطيطي بواسطة [تومومي إيمورا](https://www.twitter.com/girlie_mac) -يتضمن التعلم التعزيزي ثلاثة مفاهيم مهمة: الوكيل، بعض الحالات، ومجموعة من الإجراءات لكل حالة. من خلال تنفيذ إجراء في حالة معينة، يحصل الوكيل على مكافأة. تخيل مرة أخرى لعبة الكمبيوتر "سوبر ماريو". أنت ماريو، وأنت في مستوى من اللعبة، تقف بجانب حافة منحدر. فوقك توجد عملة معدنية. كونك ماريو، في مستوى معين من اللعبة، في موقع معين... هذه هي حالتك. التحرك خطوة إلى اليمين (إجراء) سيجعلك تسقط من الحافة، وهذا سيمنحك درجة رقمية منخفضة. ومع ذلك، فإن الضغط على زر القفز سيجعلك تحصل على نقطة وستبقى على قيد الحياة. هذا نتيجة إيجابية ويجب أن تمنحك درجة رقمية إيجابية. +يتضمن التعلم المعزز ثلاث مفاهيم مهمة: الوكيل، بعض الحالات، ومجموعة من الإجراءات لكل حالة. من خلال تنفيذ إجراء في حالة محددة، يحصل الوكيل على مكافأة. تخيل مجددًا لعبة الحاسوب سوبر ماريو. أنت ماريو، في مستوى لعبة، واقف بجانب حافة منحدر. فوقك عملة معدنية. أنت كماريو، في مستوى لعبة، في موقع معين ... هذا هو حالتك. التحرك خطوة واحدة إلى اليمين (إجراء) سيجعلك تسقط من الحافة، وهذا سيعطيك درجة رقمية منخفضة. ولكن، الضغط على زر القفز سيمكنك من تسجيل نقطة وستبقى على قيد الحياة. هذه نتيجة إيجابية ويجب أن تمنحك درجة رقمية إيجابية. -باستخدام التعلم التعزيزي والمحاكاة (اللعبة)، يمكنك تعلم كيفية لعب اللعبة لتحقيق أقصى قدر من المكافآت، وهي البقاء على قيد الحياة وتسجيل أكبر عدد ممكن من النقاط. +باستخدام التعلم المعزز ومحاكي (اللعبة)، يمكنك تعلم كيفية لعب اللعبة لتعظيم المكافأة وهي البقاء على قيد الحياة وتسجيل أكبر عدد ممكن من النقاط. -[![مقدمة إلى التعلم التعزيزي](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) +[![مقدمة في التعلم المعزز](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) -> 🎥 انقر على الصورة أعلاه للاستماع إلى ديمتري وهو يناقش التعلم التعزيزي +> 🎥 اضغط على الصورة أعلاه للاستماع إلى دميتري وهو يناقش التعلم المعزز -## [اختبار ما قبل المحاضرة](https://ff-quizzes.netlify.app/en/ml/) +## [اختبار قبلي للمحاضرة](https://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`، مثل هذه: +لتبسيط الأمر، دعونا نعتبر عالم بيتر لوحة مربعة بحجم `العرض` × `الارتفاع`، مثل هذه: -![بيئة بيتر](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![بيئة بيتر](../../../../translated_images/ar/environment.40ba3cb66256c93f.webp) -كل خلية في هذه اللوحة يمكن أن تكون: +كل خلية في هذه اللوحة يمكن أن تكون إما: -* **أرض**، يمكن لبيتر والمخلوقات الأخرى المشي عليها. -* **ماء**، لا يمكن المشي عليه بالطبع. -* **شجرة** أو **عشب**، مكان يمكن الراحة فيه. -* **تفاحة**، تمثل شيئًا يود بيتر العثور عليه لإطعام نفسه. -* **ذئب**، وهو خطير ويجب تجنبه. +* **أرضًا** يمكن لبيتر والكائنات الأخرى المشي عليها. +* **ماء** لا يمكنك بالطبع المشي عليه. +* **شجرة** أو **عشبًا**، مكان للاسترخاء. +* **تفاحة** تمثل شيئًا سيكون بيتر سعيدًا بالعثور عليه ليطعم نفسه. +* **ذئبًا**، يمثل خطرًا ويجب تجنبه. -يوجد وحدة 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 خطوات. - يمكنك أيضًا رؤية كيف يبدو تحرك بيتر أثناء المشي العشوائي: + يمكنك أيضًا رؤية كيف يبدو تحرك بيتر أثناء السير العشوائي: - ![مشي بيتر العشوائي](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) + ![السير العشوائي لبيتر](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) ## دالة المكافأة -لجعل سياستنا أكثر ذكاءً، نحتاج إلى فهم أي الحركات "أفضل" من غيرها. للقيام بذلك، نحتاج إلى تعريف هدفنا. +لجعل سياستنا أكثر ذكاءً، نحتاج إلى فهم أي الحركات "أفضل" من غيرها. لهذا، نحتاج إلى تعريف هدفنا. -يمكن تعريف الهدف من خلال **دالة المكافأة**، التي ستُرجع قيمة درجة لكل حالة. كلما زاد الرقم، كانت دالة المكافأة أفضل. (كتلة الكود 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)`. -![بيئة بيتر](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![بيئة بيتر](../../../../translated_images/ar/env_init.04e8f26d2d60089e.webp) -في مركز كل خلية يوجد "سهم" يشير إلى الاتجاه المفضل للحركة. نظرًا لأن جميع الاتجاهات متساوية، يتم عرض نقطة. +في وسط كل خلية هناك "سهم" يشير للاتجاه المفضل للحركة. بما أن كل الاتجاهات متساوية، يعرض نقطة. -الآن نحتاج إلى تشغيل المحاكاة، استكشاف بيئتنا، وتعلم توزيع أفضل لقيم جدول 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. +> **المشكلة**: إذا أراد بيتر الهروب من الذئب، يحتاج لأن يكون قادرًا على التحرك بسرعة أكبر. سنرى كيف يمكن لبيتر تعلم التزلج، خصوصًا الحفاظ على التوازن، باستخدام التعلم القيمي. -![الهروب الكبير!](../../../../8-Reinforcement/2-Gym/images/escape.png) +![الهروب العظيم!](../../../../translated_images/ar/escape.18862db9930337e3.webp) -> بيتر وأصدقاؤه يبدعون للهروب من الذئب! الصورة بواسطة [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() ``` - يجب أن ترى شيئًا مشابهًا لهذه الصورة: + يجب أن ترى شيئًا مماثلًا لهذه الصورة: - ![CartPole غير متوازن](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) + ![عربة القطب غير متوازنة](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) -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) +``` + +![تقدم الخام](../../../../translated_images/ar/train_progress_raw.2adfdf2daea09c59.webp) + +من هذا الرسم لا يمكننا استنتاج شيء، لأن طبيعة عملية التدريب العشوائية تجعل طول جلسات التدريب يختلف كثيرًا. لجعل هذا الرسم أكثر معنى، يمكننا حساب **المتوسط المتحرك** عبر سلسلة من التجارب، لنقل 100 تجربة. يمكن تنفيذ ذلك بسهولة باستخدام `np.convolve`: (كتلة الأكواد 12) + +```python +def running_average(x,window): + return np.convolve(x,np.ones(window)/window,mode='valid') + +plt.plot(running_average(rewards,100)) +``` + +![تقدم التدريب](../../../../translated_images/ar/train_progress_runav.c71694a8fa9ab359.webp) + +## تغيير المعاملات الفائقة + +لجعل التعلم أكثر استقرارًا، من المنطقي تعديل بعض معاملاتنا الفائقة أثناء التدريب. على وجه الخصوص: + +- **لمعدل التعلم** `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() ``` -يجب أن ترى شيئًا مثل هذا: +يجب أن ترى شيئاً مثل هذا: -![عربة متوازنة](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) +![a balancing cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) --- ## 🚀التحدي -> **المهمة 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 - -![Обобщение на отговорния AI в машинното обучение в скица](../../../../sketchnotes/ml-fairness.png) -> Скица от [Tomomi Imura](https://www.twitter.com/girlie_mac) - -## [Тест преди лекцията](https://ff-quizzes.netlify.app/en/ml/) +# Създаване на решения за машинно обучение с отговорен ИИ + +![Обобщение на отговорния ИИ в машинното обучение в скичнот](../../../../translated_images/bg/ml-fairness.ef296ebec6afc98a.webp) +> Скичнот от [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) -[![Подходът на Microsoft към отговорния AI](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Подходът на Microsoft към отговорния AI") +[![Подходът на Microsoft към отговорния ИИ](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](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) +- **Дениграция**. Несправедливо критикуване и етикетиране на нещо или някого. Например, технология за етикетиране на изображения с лоша слава, че е етикетирала изображения на хора с тъмна кожа като горили. +- **Прекомерно или недостатъчно представителство**. Идеята е, че дадена група не се вижда в определена професия, и всяка услуга или функция, която продължава да насърчава това, допринася за вредата. +- **Стереотипизиране**. Свързване на дадена група с предварително определени характеристики. Например, система за езиков превод между английски и турски може да има неточности поради думи с типични асоциации с пол. -![превод на турски](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) +![превод на турски](../../../../translated_images/bg/gender-bias-translate-en-tr.f185fd8822c2d437.webp) > превод на турски -![превод обратно на английски](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) +![превод обратно на английски](../../../../translated_images/bg/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) > превод обратно на английски -Когато проектираме и тестваме 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 система влияе на индивидите или обществото. +[![Водещ изследовател в ИИ предупреждава за масово наблюдение чрез лицево разпознаване](../../../../translated_images/bg/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Подходът на Microsoft към отговорния ИИ") -[![Водещ AI изследовател предупреждава за масово наблюдение чрез разпознаване на лица](../../../../1-Introduction/3-fairness/images/accountability.png)](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: Превръщане на принципите в практика от Бесмира Нуши, Мехрнуш Самеки и Амит Шарма +- В преследване на отговорния изкуствен интелект: Прилагането на принципите на практика от Бесмира Нуши, Мехрнуш Самеки и Амит Шарма -[![Responsible AI Toolbox: Отворена рамка за изграждане на отговорен AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: Отворена рамка за изграждане на отговорен AI") +[![Responsible AI Toolbox: An open-source framework for building responsible AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") -> 🎥 Кликнете върху изображението по-горе за видео: 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 за регресионни модели -![Обобщение на регресиите в скица](../../../../sketchnotes/ml-regression.png) +![Резюме на регресиите в скицник](../../../../translated_images/bg/ml-regression.4e4f70e3b3ed446e.webp) -> Скица от [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://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "Машинно обучение за начинаещи - Настройте инструментите си за изграждане на модели за машинно обучение") +[![ML за начинаещи - Настройте инструментите си готови за изграждане на модели за машинно обучение](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](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) > > [![Настройка на Python с Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](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 са интерактивна среда, която позволява на разработчика както да кодира, така и да добавя бележки и документация около кода, което е много полезно за експериментални или изследователски проекти. -[![Машинно обучение за начинаещи - Настройка на Jupyter Notebooks за започване на изграждане на регресионни модели](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "Машинно обучение за начинаещи - Настройка на Jupyter Notebooks за започване на изграждане на регресионни модели") +[![ML за начинаещи - Настройте Jupyter Notebooks, за да започнете изграждане на регресионни модели](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](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 ``` -![VS Code с отворен notebook](../../../../2-Regression/1-Tools/images/notebook.jpg) +![VS Code с отворен notebook](../../../../translated_images/bg/notebook.4a3ee31f396b8832.webp) -Можете да преплитате кода си с коментари, за да документирате сами 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. -[![Машинно обучение за начинаещи - Вашият първи проект за линейна регресия в Python](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "Машинно обучение за начинаещи - Вашият първи проект за линейна регресия в Python") -> 🎥 Кликнете върху изображението по-горе за кратко видео за това упражнение. +[![ML за начинаещи - Вашият първи проект за линейна регресия в Python](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](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() ``` - ![разпръсната графика, показваща точки от данни за диабет](../../../../2-Regression/1-Tools/images/scatterplot.png) -✅ Помислете малко какво се случва тук. Една права линия минава през множество малки точки от данни, но какво точно прави тя? Можете ли да видите как бихте могли да използвате тази линия, за да предскажете къде нова, невиждана точка от данни би трябвало да се намира спрямо y оста на графиката? Опитайте се да обясните с думи практическата употреба на този модел. + ![scatterplot, показващ точки на данни за диабет](../../../../translated_images/bg/scatterplot.ad8b356bcbb33be6.webp) + + + ✅ Помислете малко върху това, което се случва тук. Една права линия преминава през множество малки точки с данни, но какво точно прави тя? Виждате ли как трябва да можете да използвате тази линия, за да предскажете къде нова, ненаблюдавана точка данни би трябвало да се разположи спрямо оста 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: подготвяне и визуализация на данни -![Инфографика за визуализация на данни](../../../../2-Regression/2-Data/images/data-visualization.png) +![Инфографика за визуализация на данни](../../../../translated_images/bg/data-visualization.54e56dded7c1a804.webp) Инфографика от [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' и други стойности. Данните всъщност са малко объркани. -[![ML за начинаещи - Как да анализираме и почистим набор от данни](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML за начинаещи - Как да анализираме и почистим набор от данни") +[![ML за начинаещи - Как да анализирате и почистите набор от данни](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](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, като се вземе предвид неизползваното пространство, заето от една голяма куха тиква за пай. +✅ Забелязахте ли, че тиквите, продавани на половин бушел, са много скъпи? Можете ли да разберете защо? Подсказка: малките тикви са много по-скъпи от големите, вероятно защото има много повече от тях на бушел, като се има предвид неизползваното пространство, което заема една голяма куха тиква за пай. ## Стратегии за визуализация -Част от ролята на специалиста по данни е да демонстрира качеството и естеството на данните, с които работи. За да направят това, те често създават интересни визуализации, като графики, диаграми и таблици, показващи различни аспекти на данните. По този начин те могат визуално да покажат връзки и пропуски, които иначе са трудни за откриване. +Част от ролята на специалиста по данни е да демонстрира качеството и естеството на данните, с които работи. За това те често създават интересни визуализации, графики, диаграми и таблици, които показват различни аспекти на данните. По този начин те могат визуално да покажат зависимости и пропуски, които иначе е трудно да се открият. [![ML за начинаещи - Как да визуализираме данни с Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](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() ``` - ![Scatterplot, показващ връзката между цена и месец](../../../../2-Regression/2-Data/images/scatterplot.png) + ![Точкова диаграма, показваща връзката цена към месец](../../../../translated_images/bg/scatterplot.b6868f44cbd2051c.webp) - Полезна ли е тази графика? Има ли нещо, което ви изненадва? + Полезна ли е тази графика? Нещо ли ви изненадва в нея? - Тя не е особено полезна, тъй като просто показва разпределението на точките в даден месец. + Тя не е особено полезна, тъй като просто показва разпределението на данните Ви като точки в даден месец. ### Направете я полезна -За да направите графиките полезни, обикновено трябва да групирате данните по някакъв начин. Нека опитаме да създадем графика, където y оста показва месеците, а данните демонстрират разпределението. +За да получите графики, които показват полезни данни, обикновено трябва да групирате данните по някакъв начин. Нека опитаме да създадем графика, където y-оста показва месеците, а данните илюстрират разпределението на данните. -1. Добавете клетка, за да създадете групирана бар графика: +1. Добавете клетка, която да създаде групирана стълбова диаграма: ```python new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') plt.ylabel("Pumpkin Price") ``` - ![Бар графика, показваща връзката между цена и месец](../../../../2-Regression/2-Data/images/barchart.png) + ![Стълбова диаграма, показваща връзката цена към месец](../../../../translated_images/bg/barchart.a833ea9194346d76.webp) + + Това е по-полезна визуализация на данни! Изглежда показва, че най-високата цена на тиквите е през септември и октомври. Това отговаря ли на вашите очаквания? Защо или защо не? + +## Упражнение - експериментирайте със 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) + ``` + + ![Точкова графика със Seaborn, показваща връзката цена към месец](../../../../translated_images/bg/relplot.a03837d8f0329cec.webp) + + Забележете как подавате _имената на колоните_ и dataframe, а Seaborn се грижи за надписите на осите. + +2. Можете да превключите на линейна графика, като подадете `kind="line"`. Seaborn дори чертае засенчена лента, показваща доверителния интервал около линията: + + ```python + sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins) + ``` + + ![Линейна графика със Seaborn, показваща връзката цена към месец](../../../../translated_images/bg/lineplot.f9034ba47b1e30ee.webp) + + Тези конкретни данни са доста шумни, така че линейната графика не е най-ясният избор тук — но показва колко лесно можете да променяте типове графики в 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") + ``` + + ![Лентов диаграма на Seaborn, показваща разпределението на цените за месец](../../../../translated_images/bg/catplot.e73fc35fdf96242b.webp) + + Това потвърждава това, което видяхте с 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") + ``` + + ![Топлинна карта на Seaborn, показваща корелациите между числовите колони](../../../../translated_images/bg/heatmap.bd98dce43b404c57.webp) + + Стойности близки до `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-обучението -![Обобщение на укрепващото обучение в машинното обучение в скица](../../../../sketchnotes/ml-reinforcement.png) -> Скица от [Tomomi Imura](https://www.twitter.com/girlie_mac) +![Резюме на подсилващото обучение в машинното обучение в скично](../../../../translated_images/bg/ml-reinforcement.94024374d63348db.webp) +> Скично от [Tomomi Imura](https://www.twitter.com/girlie_mac) -Укрепващото обучение включва три важни концепции: агент, състояния и набор от действия за всяко състояние. Изпълнявайки действие в определено състояние, агентът получава награда. Представете си компютърната игра Super Mario. Вие сте Марио, намирате се на ниво в играта, стоите до ръба на скала. Над вас има монета. Вие, като Марио, на определено място в нивото на играта... това е вашето състояние. Ако направите крачка надясно (действие), ще паднете от скалата и ще получите ниска числена оценка. Но ако натиснете бутона за скок, ще спечелите точка и ще останете жив. Това е положителен резултат и трябва да ви донесе положителна числена оценка. +Подсилващото обучение включва три важни понятия: агент, няколко състояния и набор от действия за всяко състояние. Като изпълнява действие в определено състояние, агентът получава награда. Представете си отново компютърната игра Super Mario. Вие сте Марио, в ниво на игра, стоите до ръба на скала. Над вас има монета. Вие, като Марио, в ниво на игра, на конкретна позиция ... това е вашето състояние. Да направите една крачка вдясно (действие) ще ви изхвърли през ръба, и това ще ви даде нисък числов резултат. Обаче, като натиснете бутона за скок, ще спечелите точка и ще останете жив. Това е положителен резултат и трябва да ви награди с положителна числова оценка. -Използвайки укрепващо обучение и симулатор (играта), можете да научите как да играете играта, за да максимизирате наградата, която е да останете живи и да съберете възможно най-много точки. +Използвайки подсилващо обучение и симулатор (играта), можете да научите как да играете играта, за да максимизирате наградата, която е да останете живи и да съберете колкото се може повече точки. -[![Въведение в Укрепващото Обучение](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) +[![Въведение в подсилващото обучение](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) -> 🎥 Кликнете върху изображението по-горе, за да чуете Дмитрий да обсъжда Укрепващото Обучение +> 🎥 Кликнете върху изображението по-горе, за да чуете Дмитрий да обсъжда Подсилващото обучение -## [Тест преди лекцията](https://ff-quizzes.netlify.app/en/ml/) +## [Предварителен тест](https://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 `височина`, ето така: -![Средата на Петър](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![Средата на Питър](../../../../translated_images/bg/environment.40ba3cb66256c93f.webp) Всяка клетка на тази дъска може да бъде: -* **земя**, върху която Петър и други същества могат да ходят. -* **вода**, върху която очевидно не можете да ходите. -* **дърво** или **трева**, място, където можете да си починете. -* **ябълка**, която представлява нещо, което Петър би се радвал да намери, за да се нахрани. +* **земя**, по която Питър и други създания могат да ходят. +* **вода**, по която очевидно не може да се ходи. +* **дърво** или **тръстика**, място, където може да се почине. +* **ябълка**, която представлява нещо, което Питър би се радвал да намери, за да се нахрани. * **вълк**, който е опасен и трябва да се избягва. -Има отделен 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 стъпки. - Можете също така да видите как изглежда движението на Петър по време на случайната разходка: + Можете също така да видите как изглежда движението на Питър по време на случайната разходка: - ![Случайна разходка на Петър](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) + ![Случайна разходка на Питър](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) ## Функция за награда За да направим нашата политика по-интелигентна, трябва да разберем кои ходове са "по-добри" от други. За да направим това, трябва да дефинираме нашата цел. -Целта може да бъде дефинирана чрез **функция за награда**, която ще връща някаква стойност за всяко състояние. Колкото по-висока е стойността, толкова по-добра е наградата. (код блок 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)`. -![Средата на Петър](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![Средата на Питър](../../../../translated_images/bg/env_init.04e8f26d2d60089e.webp) -В центъра на всяка клетка има "стрелка", която показва предпочитаната посока на движение. Тъй като всички посоки са равни, се показва точка. +В центъра на всяка клетка има "стрелка", която указва предпочитаната посока на движение. Тъй като всички посоки са равни, се показва точка. -Сега трябва да изпълним симулацията, да изследваме нашата среда и да научим по-добро разпределение на стойностите в 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) -> ![Gif за инструменти за отговорен AI](../../../../9-Real-World/2-Debugging-ML-Models/images/rai-overview.gif) +> ![Gif за Инструменти за отговорен ИИ](../../../../9-Real-World/2-Debugging-ML-Models/images/rai-overview.gif) ## Анализ на грешки -Традиционните метрики за производителност на моделите, използвани за измерване на точността, обикновено са изчисления, базирани на правилни срещу неправилни прогнози. Например, определянето, че моделът е точен в 89% от случаите със загуба на грешка от 0.001, може да се счита за добро представяне. Грешките обаче често не са разпределени равномерно в основния набор от данни. Може да получите резултат за точност на модела от 89%, но да откриете, че има различни области в данните, за които моделът се проваля в 42% от случаите. Последиците от тези модели на провал с определени групи данни могат да доведат до проблеми със справедливостта или надеждността. Затова е важно да се разберат областите, в които моделът се представя добре или не. Областите в данните, където има голям брой неточности в модела, могат да се окажат важни демографски данни. +Традиционните метрики за представяне на модел, използвани за измерване на точност, са в по-голямата си част изчисления базирани на правилни срещу неправилни предсказания. Например, ако се определи, че моделът е точен 89% от времето с грешка от 0.001, това може да се счита за добро представяне. Грешките често не са равномерно разпределени в основния ви набор от данни. Може да получите резултат 89% точност на модела, но да откриете, че има различни региони от данните, в които моделът се проваля 42% от времето. Последствията от тези модели на провали с определени групи данни могат да доведат до проблеми със справедливостта или надеждността. Важно е да се разбере къде моделът се представя добре и къде не. Данните региони с висока неточност в модела може да се окажат важна демографска група. -![Анализ и дебъгване на грешки в модела](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-error-distribution.png) +![Анализ и отстраняване на грешки на модел](../../../../translated_images/bg/ea-error-distribution.117452e1177c1dd8.webp) -Компонентът за анализ на грешки в таблото за отговорен AI показва как провалите на модела са разпределени в различни групи с визуализация на дърво. Това е полезно за идентифициране на характеристики или области, където има висока степен на грешки в набора от данни. Като видите откъде идват повечето неточности на модела, можете да започнете да изследвате основната причина. Можете също така да създавате групи данни за анализ. Тези групи данни помагат в процеса на дебъгване, за да се определи защо представянето на модела е добро в една група, но грешно в друга. +Компонентът Анализ на грешки в таблото за отговорен ИИ илюстрира как грешките на модела се разпределят сред различните кохорти с визуализация на дървовидна структура. Това е полезно за идентифициране на признаци или области, където има висока степен на грешки с вашия набор от данни. Като виждате откъде идват повечето неточности на модела, можете да започнете да изследвате основната причина. Можете също така да създавате кохорти от данни за извършване на анализ. Тези кохорти от данни помагат в процеса на отстраняване на грешки, за да се определи защо представянето на модела е добро в една кохорта, но грешно в друга. -![Анализ на грешки](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-error-cohort.png) +![Анализ на грешки](../../../../translated_images/bg/ea-error-cohort.6886209ea5d438c4.webp) -Визуалните индикатори на картата на дървото помагат за по-бързо локализиране на проблемните области. Например, колкото по-тъмно червен е цветът на възел в дървото, толкова по-висока е степента на грешка. +Визуалните индикатори на дървовидната карта помагат за по-бързо локализиране на проблемните области. Например, колкото по-тъмен е червеният цвят на възела, толкова по-висока е степента на грешки. -Топлинната карта е друга функционалност за визуализация, която потребителите могат да използват за изследване на степента на грешка, използвайки една или две характеристики, за да намерят фактор, допринасящ за грешките на модела в целия набор от данни или групи. +Топлинната карта е друга визуална функционалност, която потребителите могат да използват за изследване на степента на грешки с помощта на един или два признака, за да открият фактор, допринасящ за грешките на модела в цял набор от данни или сред кохорти. -![Топлинна карта за анализ на грешки](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-heatmap.png) +![Топлинна карта за анализ на грешки](../../../../translated_images/bg/ea-heatmap.8d27185e28cee383.webp) -Използвайте анализ на грешки, когато трябва: +Използвайте анализа на грешки, когато трябва да: -* Да получите дълбоко разбиране за това как провалите на модела са разпределени в набора от данни и в няколко входни и характеристични измерения. -* Да разбиете агрегирани метрики за производителност, за да откриете автоматично грешни групи и да информирате за целенасочени стъпки за смекчаване. +* Получите дълбоко разбиране за начина, по който грешките на моделите се разпределят в набора от данни и в няколко измерения на вход и признаци. +* Разградите агрегирани метрики за представяне, за да откриете автоматично грешни кохорти и да информирате мерки за отстраняване. -## Общ преглед на модела +## Преглед на модела -Оценяването на производителността на модел за машинно обучение изисква цялостно разбиране на неговото поведение. Това може да се постигне чрез преглед на повече от една метрика, като степен на грешка, точност, припомняне, прецизност или MAE (средна абсолютна грешка), за да се открият несъответствия между метриките за производителност. Една метрика за производителност може да изглежда добре, но неточности могат да бъдат разкрити в друга метрика. Освен това, сравняването на метриките за несъответствия в целия набор от данни или групи помага да се осветят областите, в които моделът се представя добре или не. Това е особено важно за наблюдение на представянето на модела сред чувствителни срещу нечувствителни характеристики (например раса, пол или възраст на пациента), за да се разкрие потенциална несправедливост в модела. Например, откриването, че моделът е по-неточен в група, която има чувствителни характеристики, може да разкрие потенциална несправедливост. +Оценяването на представянето на модел за машинно обучение изисква цялостно разбиране на неговото поведение. Това може да се постигне чрез преглед на повече от една метрика като скорост на грешки, точност, възстановяване, прецизност или MAE (Средна абсолютна грешка), за да се открият различия в метриките за представяне. Една метрика може да изглежда добре, но неточности могат да се разкрият в друга метрика. Освен това сравнението на метриките за различия през целия набор от данни или кохорти помага да се види къде моделът се представя добре или не. Това е особено важно при разглеждане на представянето на модела между чувствителни и нечувствителни признаци (например раса, пол или възраст на пациента), за да се разкрие потенциална несправедливост. Например, откриването, че моделът е по-грешен в кохорта, която съдържа чувствителни признаци, може да разкрие потенциална несправедливост на модела. -Компонентът "Общ преглед на модела" в таблото за отговорен AI помага не само за анализиране на метриките за производителност на представянето на данните в група, но и дава на потребителите възможност да сравняват поведението на модела между различни групи. +Компонентът Преглед на модела в таблото за отговорен ИИ помага не само при анализа на метриките за представяне на представянето на данните в кохорта, но и дава възможност на потребителите да сравняват поведението на модела в различни кохорти. -![Групи от данни - общ преглед на модела в таблото за отговорен AI](../../../../9-Real-World/2-Debugging-ML-Models/images/model-overview-dataset-cohorts.png) +![Кохорти от данни - преглед на модел в таблото за отговорен ИИ](../../../../translated_images/bg/model-overview-dataset-cohorts.dfa463fb527a35a0.webp) -Функционалността за анализ, базирана на характеристики, позволява на потребителите да стеснят подгрупи от данни в рамките на определена характеристика, за да идентифицират аномалии на по-гранулирано ниво. Например, таблото има вградена интелигентност за автоматично генериране на групи за избрана от потребителя характеристика (например *"time_in_hospital < 3"* или *"time_in_hospital >= 7"*). Това позволява на потребителя да изолира определена характеристика от по-голяма група данни, за да види дали тя е ключов фактор за неточните резултати на модела. +Функционалността за анализ на признаци в компонента позволява на потребителите да стесняват подгрупи от данни в даден признак, за да идентифицират аномалии на по-фино ниво. Например, таблото има вградена интелигентност за автоматично генериране на кохорти за избран от потребителя признак (например *"time_in_hospital < 3"* или *"time_in_hospital >= 7"*). Това позволява на потребителя да изолира конкретен признак от по-голяма група данни, за да види дали той оказва съществено влияние върху грешните резултати на модела. -![Групи от характеристики - общ преглед на модела в таблото за отговорен AI](../../../../9-Real-World/2-Debugging-ML-Models/images/model-overview-feature-cohorts.png) +![Кохорти по признаци - преглед на модел в таблото за отговорен ИИ](../../../../translated_images/bg/model-overview-feature-cohorts.c5104d575ffd0c80.webp) -Компонентът "Общ преглед на модела" поддържа два класа метрики за несъответствия: +Компонентът Преглед на модела поддържа два класа метрики за различия: -**Несъответствие в производителността на модела**: Тези метрики изчисляват несъответствието (разликата) в стойностите на избраната метрика за производителност между подгрупи от данни. Ето няколко примера: +**Различия в представянето на модела**: Тези метрики изчисляват разликата (диспропорцията) в стойностите на избраната метрика за представяне сред подгрупи от данни. Ето няколко примера: -* Несъответствие в степента на точност -* Несъответствие в степента на грешка -* Несъответствие в прецизността -* Несъответствие в припомнянето -* Несъответствие в средната абсолютна грешка (MAE) +* Различия в скоростта на точност +* Различия в скоростта на грешка +* Различия в прецизността +* Различия във възстановяването +* Различия в средната абсолютна грешка (MAE) -**Несъответствие в степента на селекция**: Тази метрика съдържа разликата в степента на селекция (благоприятна прогноза) между подгрупи. Пример за това е несъответствието в степента на одобрение на заеми. Степента на селекция означава частта от точките от данни във всяка класа, класифицирани като 1 (в бинарна класификация) или разпределението на прогнозните стойности (в регресия). +**Различия в степента на селекция**: Тази метрика съдържа разликата в степента на селекция (благоприятно предсказание) между подгрупите. Един пример за това е различията в процентите на одобрение на заем. Степента на селекция означава частта от точките от данни в всяка класова категория, класифицирани като 1 (в двоична класификация) или разпределение на стойностите на предсказанията (в регресия). ## Анализ на данни -> "Ако измъчвате данните достатъчно дълго, те ще признаят всичко" - Роналд Коуз +> "Ако измъчваш данните достатъчно дълго, те ще признаят всичко" - Роналд Коуз + +Това изказване звучи крайно, но е вярно, че данните могат да бъдат манипулирани, за да подкрепят всяко заключение. Понякога такива манипулации се случват неволно. Като хора всички имаме предразсъдъци и често е трудно съзнателно да осъзнаем кога въвеждаме предразсъдъци в данните. Гарантирането на справедливост в ИИ и машинното обучение остава сложно предизвикателство. -Това изказване звучи крайно, но е вярно, че данните могат да бъдат манипулирани, за да подкрепят всяко заключение. Такава манипулация понякога може да се случи неволно. Като хора, всички имаме предразсъдъци и често е трудно да осъзнаем кога въвеждаме предразсъдъци в данните. Гарантирането на справедливост в AI и машинното обучение остава сложен предизвикателство. +Данните са голяма "слепа зона" за традиционните метрики за представяне на модел. Може да имате високи резултати за точност, но това не винаги отразява скритите пристрастия в набора ви от данни. Например, ако в набор данни за служители има 27% жени на ръководни позиции и 73% мъже на същото ниво, AI модел, обучен с тези данни за рекламиране на работни места, може да таргетира главно мъжка аудитория за високи позиции. Тази дисбалансирана представеност в данните наклонява предсказанията на модела да фаворизират един пол. Това разкрива проблем със справедливостта, при който има полова пристрастност в AI модела. -Данните са голямо сляпо петно за традиционните метрики за производителност на моделите. Може да имате високи резултати за точност, но това не винаги отразява основните предразсъдъци в набора от данни. Например, ако набор от данни за служители показва, че 27% от жените заемат изпълнителни позиции в компания, а 73% от мъжете са на същото ниво, AI модел за рекламиране на работни места, обучен на тези данни, може да насочи предимно мъжка аудитория за старши позиции. Този дисбаланс в данните накланя прогнозата на модела да благоприятства един пол. Това разкрива проблем със справедливостта, където има полова предразсъдък в AI модела. +Компонентът Анализ на данни в таблото за отговорен ИИ помага да се идентифицират области с пре- и недопредставеност в набора от данни. Той помага на потребителите да диагностицират основната причина за грешки и проблеми със справедливостта, породени от дисбаланси в данните или липса на представеност на конкретна група данни. Това дава възможност на потребителите да визуализират наборите от данни въз основа на предсказани и реални резултати, групи грешки и конкретни признаци. Понякога откриването на недопредставена група данни може също да разкрие, че моделът не се учи добре и затова има висока неточност. Модел, който има пристрастия в данните, не е само проблем със справедливостта, но и показва, че моделът не е приобщаващ или надежден. -Компонентът "Анализ на данни" в таблото за отговорен AI помага да се идентифицират области, където има свръх или недостатъчно представяне в набора от данни. Той помага на потребителите да диагностицират основната причина за грешки и проблеми със справедливостта, въведени от дисбаланси в данните или липса на представяне на определена група данни. Това дава на потребителите възможност да визуализират набори от данни въз основа на прогнозирани и действителни резултати, групи с грешки и специфични характеристики. Понякога откриването на недостатъчно представена група данни може също така да разкрие, че моделът не се учи добре, което води до високи неточности. Модел с предразсъдъци в данните не само е проблем със справедливостта, но показва, че моделът не е приобщаващ или надежден. +![Компонент Анализ на данни в таблото за отговорен ИИ](../../../../translated_images/bg/dataanalysis-cover.8d6d0683a70a5c1e.webp) -![Компонент за анализ на данни в таблото за отговорен AI](../../../../9-Real-World/2-Debugging-ML-Models/images/dataanalysis-cover.png) -Използвайте анализ на данни, когато трябва: +Използвайте анализа на данни, когато трябва да: -* Да изследвате статистиката на вашия набор от данни, като избирате различни филтри, за да разделите данните в различни измерения (известни също като групи). -* Да разберете разпределението на вашия набор от данни между различни групи и характеристики. -* Да определите дали вашите открития, свързани със справедливостта, анализа на грешки и причинността (получени от други компоненти на таблото), са резултат от разпределението на вашия набор от данни. -* Да решите в кои области да съберете повече данни, за да смекчите грешки, произтичащи от проблеми с представянето, шум в етикетите, шум в характеристиките, предразсъдъци в етикетите и подобни фактори. +* Изследвате статистиките на вашия набор от данни чрез избор на различни филтри, за да разделите данните си на различни измерения (наричани още кохорти). +* Разберете разпределението на данните ви между различни кохорти и групи признаци. +* Определите дали вашите наблюдения, свързани със справедливост, анализ на грешки и причинно-следствени връзки (произтичащи от други компоненти на таблото), са резултат от разпределението на набора ви от данни. +* Изберете в кои области да съберете повече данни, за да намалите грешките, произтичащи от проблеми с представеността, шум в етикетите, шум в признаците, предразсъдъци в етикетите и подобни фактори. ## Интерпретируемост на модела -Моделите за машинно обучение обикновено са "черни кутии". Разбирането кои ключови характеристики на данните движат прогнозата на модела може да бъде предизвикателство. Важно е да се осигури прозрачност относно причините, поради които моделът прави определена прогноза. Например, ако AI система прогнозира, че диабетен пациент е изложен на риск от повторно приемане в болница в рамките на по-малко от 30 дни, тя трябва да може да предостави подкрепящи данни, които са довели до тази прогноза. Наличието на подкрепящи данни носи прозрачност, която помага на клиницистите или болниците да вземат добре информирани решения. Освен това, възможността да се обясни защо моделът е направил прогноза за индивидуален пациент осигурява отговорност спрямо здравните регулации. Когато използвате модели за машинно обучение по начини, които засягат живота на хората, е от съществено значение да разберете и обясните какво влияе върху поведението на модела. Интерпретируемостта и обяснимостта на модела помагат да се отговори на въпроси в сценарии като: +Моделите за машинно обучение често са черни кутии. Разбирането кои ключови признаци водят до предсказанието на модела може да бъде предизвикателство. Важно е да се осигури прозрачност защо модел дава дадено предсказание. Например, ако AI система предскаже, че диабетен пациент има риск да бъде повторно приет в болница за по-малко от 30 дни, тя трябва да може да предостави подкрепящи данни, довели до това предсказание. Наличието на индикатори за подкрепа въвежда прозрачност и помага на клиницисти или болници да взимат информирани решения. Освен това, възможността да се обясни защо модел е дал предсказание за отделен пациент осигурява отчетност според здравните регулации. Когато използвате модели за машинно обучение по начини, които засягат живота на хората, е жизненоважно да разберете и обясните какво влияе върху поведението на модела. Обяснимостта и интерпретируемостта на моделите помагат да се отговори на въпроси в сценарии като: -* Дебъгване на модела: Защо моделът ми направи тази грешка? Как мога да го подобря? -* Сътрудничество между хора и AI: Как мога да разбера и да се доверя на решенията на модела? -* Регулаторно съответствие: Дали моделът ми отговаря на законовите изисквания? +* Отстраняване на грешки в модел: Защо моят модел направи тази грешка? Как мога да го подобря? +* Сътрудничество между човек и ИИ: Как мога да разбера и да се доверя на решенията на модела? +* Спазване на регулации: Удволетворява ли моят модел законовите изисквания? -Компонентът "Важност на характеристиките" в таблото за отговорен AI помага да се дебъгва и да се получи цялостно разбиране за това как моделът прави прогнози. Това е полезен инструмент за професионалисти в машинното обучение и вземащи решения, за да обяснят и покажат доказателства за характеристиките, които влияят върху поведението на модела за регулаторно съответствие. Потребителите могат да изследват както глобални, така и локални обяснения, за да валидират кои характеристики движат прогнозата на модела. Глобалните обяснения изброяват основните характеристики, които са повлияли на общата прогноза на модела. Локалните обяснения показват кои характеристики са довели до прогноза на модела за индивидуален случай. Възможността за оценка на локални обяснения също е полезна при дебъгване или одит на конкретен случай, за да се разбере и интерпретира защо моделът е направил точна или неточна прогноза. +Компонентът Значимост на признаците в таблото за отговорен ИИ ви помага да отстранявате грешки и да добивате цялостно разбиране как моделът прави предсказания. Той е полезен инструмент за професионалисти в машинното обучение и вземащи решения, за да обясняват и показват доказателства за признаците, които влияят върху поведението на модела за спазване на регулации. След това потребителите могат да разглеждат както глобални, така и локални обяснения, за да валидират кои признаци движат предсказанията на модела. Глобалните обяснения изброяват основните признаци, които оказват влияние върху общото предсказание на модела. Локалните обяснения показват кои признаци са довели до предсказанието на модела за отделен случай. Възможността да се оценяват локални обяснения е полезна и при отстраняване на грешки или одит на конкретен случай с цел по-добро разбиране и интерпретация защо моделът е направил точно или неточно предсказание. -![Компонент за важност на характеристиките в таблото за отговорен AI](../../../../9-Real-World/2-Debugging-ML-Models/images/9-feature-importance.png) +![Компонент Значимост на признаците в таблото за отговорен ИИ](../../../../translated_images/bg/9-feature-importance.cd3193b4bba3fd4b.webp) -* Глобални обяснения: Например, кои характеристики влияят върху общото поведение на модела за повторно приемане в болница на диабетни пациенти? -* Локални обяснения: Например, защо диаб -- **Прекомерно или недостатъчно представяне**. Идеята е, че определена група не е представена в дадена професия, и всяка услуга или функция, която продължава да насърчава това, допринася за вреда. +* Глобални обяснения: Например, кои признаци влияят на общото поведение на модел за повторно приемане на пациенти с диабет в болница? +* Локални обяснения: Например, защо диабетен пациент над 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 моделите. +![Значимост на признаците](../../../../translated_images/bg/9-features-influence.3ead3d3f68a84029.webp) -- Научете как да използвате различните компоненти, като разгледате [документацията за таблото за отговорен 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 на практика от Бесмира Нуши и Мехрнуш Самеки +Гледайте този уъркшоп, за да навлезете по-дълбоко в темите: -[![Табло за отговорен AI: Единно решение за оперативизиране на отговорен AI на практика](https://img.youtube.com/vi/f1oaDNl3djg/0.jpg)](https://www.youtube.com/watch?v=f1oaDNl3djg "Табло за отговорен AI: Единно решение за оперативизиране на отговорен AI на практика") +- Отговорно AI табло: Централно място за опериране с RAI на практика от Бесмира Нуши и Мехрнуш Самеки -> 🎥 Кликнете върху изображението по-горе за видео: Табло за отговорен AI: Единно решение за оперативизиране на отговорен AI на практика от Бесмира Нуши и Мехрнуш Самеки +[![Отговорно AI табло: Централно място за опериране с RAI на практика](https://img.youtube.com/vi/f1oaDNl3djg/0.jpg)](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 দিয়ে মেশিন লার্নিং সমাধান তৈরি + +![মেশিন লার্নিং-এ দায়িত্বশীল AI-এর সারাংশ একটি স্কেচনোটে](../../../../translated_images/bn/ml-fairness.ef296ebec6afc98a.webp) +> স্কেচনোট লিখেছেন [Tomomi Imura](https://www.twitter.com/girlie_mac) -![মেশিন লার্নিং-এ দায়িত্বশীল AI-এর সারাংশ একটি স্কেচনোটে](../../../../sketchnotes/ml-fairness.png) -> স্কেচনোট: [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) অনুসরণ করুন -[![Microsoft's Approach to Responsible AI](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoft's Approach to Responsible AI") +[![Microsoft-এর দায়িত্বশীল AI-এর পদ্ধতি](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoft's Approach to Responsible AI") -> 🎥 উপরের ছবিতে ক্লিক করুন: Microsoft's Approach to Responsible AI +> 🎥 ভিডিও দেখতে উপরের ছবিতে ক্লিক করুন: 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) +- **হেয় করা**। অন্যায়ভাবে কারো সমালোচনা বা খারাপ ট্যাগ দেয়া। উদাহরণস্বরূপ, একটি ছবি লেবেলিং প্রযুক্তি গাঢ় রঙের মানুষের ছবি গোড়িলাদের হিসেবে ভুল চিহ্নিত করেছিল। +- **অধিক বা কম প্রতিনিধিত্ব**। ধারণাটি হলো কোনো নির্দিষ্ট গোষ্ঠী কোনো পেশায় দেখা যায় না এবং যেকোনো পরিষেবা বা কাজ যা তা প্রাধান্য দেয়, তা ক্ষতিকর হতে পারে। +- **স্টেরিওটাইপিং**। কোনো গোষ্ঠীকে পূর্বনির্ধারিত বৈশিষ্ট্যের সাথে যুক্ত করা। উদাহরণস্বরূপ, ইংরেজি এবং তুর্কি ভাষার অনুবাদ ব্যবস্থায় লিঙ্গভিত্তিক স্টেরিওটাইপিক্যাল শব্দ থাকার কারণে ভুল হতে পারে। -![তুর্কিতে অনুবাদ](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) +![তুর্কিতে অনুবাদ](../../../../translated_images/bn/gender-bias-translate-en-tr.f185fd8822c2d437.webp) > তুর্কিতে অনুবাদ -![ইংরেজিতে ফিরে অনুবাদ](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) -> ইংরেজিতে ফিরে অনুবাদ +![আবার ইংরেজিতে অনুবাদ](../../../../translated_images/bn/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) +> আবার ইংরেজিতে অনুবাদ -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 সিস্টেম মানুষ অথবা সমাজে কী প্রভাব ফেলে তার জন্য। -[![AI গবেষকের সতর্কবার্তা: মুখের স্বীকৃতির মাধ্যমে ব্যাপক নজরদারি](../../../../1-Introduction/3-fairness/images/accountability.png)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft's Approach to Responsible AI") +[![ফেসিয়াল রিকগনিশন দ্বারা বৃহৎ পর্যবেক্ষণের বিষয়ে অগ্রগামী AI গবেষকের সতর্কতা](../../../../translated_images/bn/accountability.41d8c0f4b85b6231.webp)](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 দ্বারা -[![দায়িত্বশীল AI টুলবক্স: দায়িত্বশীল AI তৈরির জন্য একটি ওপেন-সোর্স ফ্রেমওয়ার্ক](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI টুলবক্স: দায়িত্বশীল AI তৈরির জন্য একটি ওপেন-সোর্স ফ্রেমওয়ার্ক") +[![Responsible AI Toolbox: An open-source framework for building responsible AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") -> 🎥 উপরের ছবিতে ক্লিক করুন একটি ভিডিওর জন্য: 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 @@ -# পাইথন এবং স্কিকিট-লার্ন দিয়ে রিগ্রেশন মডেল শুরু করা +# রিগ্রেশন মডেলগুলির জন্য পাইথন এবং স্কিকিট-লার্ন দিয়ে শুরু করুন -![স্কেচনোটে রিগ্রেশনের সারাংশ](../../../../sketchnotes/ml-regression.png) +![একটি স্কেচনোটে রিগ্রেশনগুলির সারসংক্ষেপ](../../../../translated_images/bn/ml-regression.4e4f70e3b3ed446e.webp) -> স্কেচনোট: [টোমোমি ইমুরা](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://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "শিক্ষার্থীদের জন্য মেশিন লার্নিং - মডেল তৈরির জন্য সরঞ্জাম প্রস্তুত করুন") +[![শুরুর জন্য এমএল - মেশিন লার্নিং মডেল তৈরির জন্য আপনার টুলস প্রস্তুত করুন](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "শুরুর জন্য এমএল - মেশিন লার্নিং মডেল তৈরির জন্য আপনার টুলস প্রস্তুত করুন") -> 🎥 উপরের ছবিতে ক্লিক করুন একটি সংক্ষিপ্ত ভিডিও দেখার জন্য যেখানে আপনার কম্পিউটারকে মেশিন লার্নিংয়ের জন্য কনফিগার করা দেখানো হয়েছে। +> 🎥 এমএল কনফিগার করার জন্য একটি সংক্ষিপ্ত ভিডিও দেখতে উপরের চিত্রে ক্লিক করুন। -1. **পাইথন ইনস্টল করুন**। নিশ্চিত করুন যে [পাইথন](https://www.python.org/downloads/) আপনার কম্পিউটারে ইনস্টল করা আছে। আপনি ডেটা সায়েন্স এবং মেশিন লার্নিংয়ের অনেক কাজের জন্য পাইথন ব্যবহার করবেন। বেশিরভাগ কম্পিউটার সিস্টেমে ইতোমধ্যেই পাইথন ইনস্টল করা থাকে। কিছু [পাইথন কোডিং প্যাক](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott)ও রয়েছে, যা কিছু ব্যবহারকারীর জন্য সেটআপ সহজ করে তোলে। +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://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "ভিজ্যুয়াল স্টুডিও কোডে পাইথন সেটআপ করুন") + > [![Visual Studio Code-এ Python সেটআপ করুন](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](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://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "শিক্ষার্থীদের জন্য মেশিন লার্নিং - রিগ্রেশন মডেল তৈরি করতে জুপিটার নোটবুক সেটআপ করুন") +[![শুরুর জন্য এমএল - রিগ্রেশন মডেল তৈরির জন্য জুপিটার নোটবুক সেটআপ করুন](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](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 ``` -![ভিএস কোডে একটি নোটবুক খোলা](../../../../2-Regression/1-Tools/images/notebook.jpg) +![ভিএস কোডে একটি নোটবুক খোলা](../../../../translated_images/bn/notebook.4a3ee31f396b8832.webp) -আপনার কোডের সাথে মন্তব্য যোগ করে নোটবুকটি স্ব-ডকুমেন্ট করতে পারেন। +আপনি নোটবুক নিজেই ডকুমেন্ট করার জন্য মন্তব্যসহ কোডের মধ্যে ইন্টারলিফ করতে পারেন। -✅ এক মিনিট চিন্তা করুন, একজন ওয়েব ডেভেলপারের কাজের পরিবেশ এবং একজন ডেটা সায়েন্টিস্টের কাজের পরিবেশ কতটা আলাদা। +✅ একটি ওয়েব ডেভেলপার এবং একটি ডেটা বিজ্ঞানীর কাজের পরিবেশ কতোটা ভিন্ন হতে পারে, একটু ভাবুন। -## স্কিকিট-লার্ন দিয়ে শুরু করা +## স্কিকিট-লার্ন দিয়ে কাজ শুরু করুন -এখন যেহেতু পাইথন আপনার লোকাল পরিবেশে সেটআপ করা হয়েছে এবং আপনি জুপিটার নোটবুক নিয়ে স্বাচ্ছন্দ্যবোধ করছেন, চলুন স্কিকিট-লার্ন নিয়ে সমানভাবে স্বাচ্ছন্দ্যবোধ করি। স্কিকিট-লার্ন একটি [ব্যাপক এপিআই](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://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "শিক্ষার্থীদের জন্য মেশিন লার্নিং - পাইথনে আপনার প্রথম লিনিয়ার রিগ্রেশন প্রকল্প") -> 🎥 উপরের ছবিতে ক্লিক করুন এই অনুশীলনটি কাজ করে দেখানোর একটি সংক্ষিপ্ত ভিডিও দেখার জন্য। +[![শুরুর জন্য এমএল - পাইথনে আপনার প্রথম লিনিয়ার রিগ্রেশন প্রকল্প](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](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() + ``` + + ![ডায়াবেটিসের চারপাশে ডেটাপয়েন্ট দেখাচ্ছে একটি scatterplot](../../../../translated_images/bn/scatterplot.ad8b356bcbb33be6.webp) -অভিনন্দন, আপনি আপনার প্রথম লিনিয়ার রিগ্রেশন মডেল তৈরি করেছেন, এর মাধ্যমে একটি পূর্বাভাস তৈরি করেছেন এবং এটি একটি প্লটে প্রদর্শন করেছেন! + + ✅ এখানে কী ঘটছে তা একটু ভাবুন। একটি সরলরেখা অনেক ছোট ডেটার বিন্দুর মধ্য দিয়ে যাচ্ছে, কিন্তু এটি ঠিক কী করছে? আপনি কি দেখতে পাচ্ছেন কীভাবে এই রেখাটিকে ব্যবহার করে কোনও নতুন, অদেখা ডেটা পয়েন্ট কোথায় প্লটের 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 ব্যবহার করে রিগ্রেশন মডেল তৈরি করুন: ডেটা প্রস্তুত করুন এবং ভিজ্যুয়ালাইজ করুন -![ডেটা ভিজ্যুয়ালাইজেশন ইনফোগ্রাফিক](../../../../2-Regression/2-Data/images/data-visualization.png) +![ডেটা ভিজ্যুয়ালাইজেশন ইনফোগ্রাফিক](../../../../translated_images/bn/data-visualization.54e56dded7c1a804.webp) -ইনফোগ্রাফিক: [দাসানি মাদিপল্লি](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' এবং অন্যান্য মানের মিশ্রণ। আসলেই, ডেটাটি কিছুটা এলোমেলো। -[![ML for beginners - কীভাবে একটি ডেটাসেট বিশ্লেষণ এবং পরিষ্কার করবেন](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML for beginners - কীভাবে একটি ডেটাসেট বিশ্লেষণ এবং পরিষ্কার করবেন") +[![ML for beginners - How to Analyze and Clean a Dataset](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML for beginners - How to Analyze and Clean a Dataset") -> 🎥 উপরের ছবিতে ক্লিক করুন এই পাঠের জন্য ডেটা প্রস্তুত করার একটি সংক্ষিপ্ত ভিডিও দেখতে। +> 🎥 উপরের ছবিতে ক্লিক করে এই পাঠের জন্য ডেটা প্রস্তুত করার একটি সংক্ষিপ্ত ভিডিও দেখুন। -আসলে, সম্পূর্ণ প্রস্তুত একটি ডেটাসেট পাওয়া খুবই বিরল যা সরাসরি ML মডেল তৈরির জন্য ব্যবহার করা যায়। এই পাঠে, আপনি স্ট্যান্ডার্ড Python লাইব্রেরি ব্যবহার করে একটি কাঁচা ডেটাসেট প্রস্তুত করার পদ্ধতি শিখবেন। এছাড়াও, আপনি ডেটা ভিজ্যুয়ালাইজ করার বিভিন্ন কৌশল শিখবেন। +আসলে, ডেটাসেট সরাসরি ব্যবহার করার জন্য সম্পূর্ণ প্রস্তুত পাওয়া খুবই অস্বাভাবিক। এই পাঠে, আপনি শিখবেন কিভাবে স্ট্যান্ডার্ড পাইথন লাইব্রেরি ব্যবহার করে র ডেটাসেট প্রস্তুত করতে হয়। এছাড়াও আপনি বিভিন্ন পদ্ধতি শিখবেন ডেটা ভিজ্যুয়ালাইজেশনের। -## কেস স্টাডি: 'কুমড়ার বাজার' +## কেস স্টাডি: 'পাম্পকিন (কুমড়া) বাজার' -এই ফোল্ডারে আপনি মূল `data` ফোল্ডারে [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) নামে একটি .csv ফাইল পাবেন, যেখানে 1757 লাইনের ডেটা রয়েছে যা শহর অনুযায়ী গোষ্ঠীবদ্ধ কুমড়ার বাজার সম্পর্কে তথ্য প্রদান করে। এটি [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) থেকে প্রাপ্ত কাঁচা ডেটা, যা মার্কিন যুক্তরাষ্ট্রের কৃষি বিভাগের দ্বারা বিতরণ করা হয়। +এই ফোল্ডারে আপনি রুট `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 এ অনেক বেশি ছোট পাম্পকিন থাকে, যেখানে একটি বড় গর্তযুক্ত পাই পাম্পকিনের কারণে অনেক স্পেস ফাঁকা থাকে। ## ভিজ্যুয়ালাইজেশন কৌশল -ডেটা বিজ্ঞানীর ভূমিকা হলো তারা যে ডেটার সাথে কাজ করছেন তার গুণমান এবং প্রকৃতি প্রদর্শন করা। এটি করতে তারা প্রায়ই আকর্ষণীয় ভিজ্যুয়ালাইজেশন তৈরি করেন, যেমন প্লট, গ্রাফ এবং চার্ট, যা ডেটার বিভিন্ন দিক দেখায়। এইভাবে, তারা সম্পর্ক এবং ফাঁকগুলো চাক্ষুষভাবে প্রদর্শন করতে সক্ষম হন যা অন্যথায় খুঁজে পাওয়া কঠিন। +ডেটা বিজ্ঞানীর একটি অংশ হল তারা যে ডেটার ওপর কাজ করছে তার গুণমান ও প্রকৃতি প্রদর্শন করা। এজন্য তারা সাধারণত আকর্ষণীয় ভিজ্যুয়ালাইজেশন, প্লট, গ্রাফ এবং চার্ট তৈরি করে, যা ডেটার বিভিন্ন দিক প্রদর্শন করে। এর মাধ্যমে তারা এমন সম্পর্ক এবং ফাঁক গুলো ভিজ্যুয়ালি দেখতে পান যা অন্যথায় খুঁজে বের করা কঠিন। -[![ML for beginners - কীভাবে Matplotlib দিয়ে ডেটা ভিজ্যুয়ালাইজ করবেন](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML for beginners - কীভাবে Matplotlib দিয়ে ডেটা ভিজ্যুয়ালাইজ করবেন") +[![ML for beginners - How to Visualize Data with Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML for beginners - How to Visualize Data with Matplotlib") -> 🎥 উপরের ছবিতে ক্লিক করুন এই পাঠের জন্য ডেটা ভিজ্যুয়ালাইজ করার একটি সংক্ষিপ্ত ভিডিও দেখতে। +> 🎥 উপরের ছবিতে ক্লিক করে এই পাঠের জন্য ডেটা ভিজ্যুয়ালাইজ করার একটি সংক্ষিপ্ত ভিডিও দেখুন। -ভিজ্যুয়ালাইজেশন ডেটার জন্য সবচেয়ে উপযুক্ত মেশিন লার্নিং কৌশল নির্ধারণ করতেও সাহায্য করতে পারে। একটি স্ক্যাটারপ্লট যা একটি রেখা অনুসরণ করে বলে মনে হয়, উদাহরণস্বরূপ, এটি নির্দেশ করে যে ডেটা একটি লিনিয়ার রিগ্রেশন অনুশীলনের জন্য উপযুক্ত। +ভিজ্যুয়ালাইজেশন ডেটার জন্য সবচেয়ে উপযুক্ত মেশিন লার্নিং কৌশল নির্ধারণেও সাহায্য করে। উদাহরণস্বরূপ, একটি স্ক্যাটারপ্লট যা একটি রেখা অনুসরণ করে মনে হয়, তা নির্দেশ করে যে ডেটা একটি লিনিয়ার রিগ্রেশন অনুশীলনের জন্য ভাল প্রার্থী। -একটি ডেটা ভিজ্যুয়ালাইজেশন লাইব্রেরি যা Jupyter নোটবুকে ভালো কাজ করে তা হলো [Matplotlib](https://matplotlib.org/) (যা আপনি আগের পাঠেও দেখেছেন)। +একটি ডেটা ভিজ্যুয়ালাইজেশন লাইব্রেরি যা 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() ``` - ![একটি স্ক্যাটারপ্লট যা দাম এবং মাসের সম্পর্ক দেখায়](../../../../2-Regression/2-Data/images/scatterplot.png) + ![মূল্য থেকে মাস সম্পর্ক প্রদর্শন করা একটি স্ক্যাটারপ্লট](../../../../translated_images/bn/scatterplot.b6868f44cbd2051c.webp) - এটি কি একটি কার্যকর প্লট? এটি সম্পর্কে কি কিছু আপনাকে অবাক করে? + এটা কি একটি ব্যবহারযোগ্য প্লট? এতে কি কিছু চমকপ্রদ আছে? - এটি বিশেষভাবে কার্যকর নয় কারণ এটি শুধুমাত্র একটি নির্দিষ্ট মাসে আপনার ডেটাকে পয়েন্টের একটি বিস্তৃতিতে প্রদর্শন করে। + এটা বিশেষত ব্যবহারযোগ্য নয় কারণ এটি কেবল আপনার ডেটা একটি নির্দিষ্ট মাসে বিন্দু হিসেবে দেখায়। -### এটি কার্যকর করুন +### এটাকে ব্যবহারযোগ্য করুন -চার্টগুলোকে কার্যকর ডেটা প্রদর্শন করতে, সাধারণত আপনাকে ডেটাকে কোনোভাবে গ্রুপ করতে হয়। চলুন একটি প্লট তৈরি করার চেষ্টা করি যেখানে y অক্ষটি মাস দেখায় এবং ডেটা ডেটার বিতরণ প্রদর্শন করে। +চার্টে ব্যবহারযোগ্য ডেটা প্রদর্শনের জন্য সাধারণত আপনাকে ডেটাকে কোন না কোনভাবে গোষ্ঠীবদ্ধ করতে হয়। আসুন একটি প্লট তৈরির চেষ্টা করি যেখানে y অক্ষ মাস দেখায় এবং ডেটা ডিস্ট্রিবিউশন প্রদর্শন করে। -1. একটি গ্রুপড বার চার্ট তৈরি করতে একটি সেল যোগ করুন: +১. একটি সেল যোগ করুন গ্রুপ করা বার চার্ট তৈরি করতে: ```python new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') plt.ylabel("Pumpkin Price") ``` - ![একটি বার চার্ট যা দাম এবং মাসের সম্পর্ক দেখায়](../../../../2-Regression/2-Data/images/barchart.png) + ![মূল্য থেকে মাস সম্পর্ক প্রদর্শন করা একটি বার চার্ট](../../../../translated_images/bn/barchart.a833ea9194346d76.webp) + + এটা একটি বেশি ব্যবহারযোগ্য ডেটা ভিজ্যুয়ালাইজেশন! এটা দেখাচ্ছে যে পাম্পকিনের সর্বোচ্চ মূল্য সেপ্টেম্বর ও অক্টোবর মাসে হয়। এটা আপনার প্রত্যাশার সাথে সঙ্গতিপূর্ণ? কেন বা কেন নয়? + +## অনুশীলন - 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 স্ক্যাটারপ্লট যা মূল্য থেকে মাসের সম্পর্ক দেখায়](../../../../translated_images/bn/relplot.a03837d8f0329cec.webp) + + লক্ষ্য করুন কিভাবে আপনি কলামের নাম এবং ডেটাফ্রেম পাঠান, আর Seaborn অক্ষের লেবেল দেখভাল করে। + +২. `kind="line"` পাস করে আপনি একটি লাইন প্লটে পরিবর্তন করতে পারেন। Seaborn রেখার আশপাশে কনফিডেন্স ইন্টারভ্যালও দেখায়: + + ```python + sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins) + ``` + + ![Seaborn লাইন প্লট যা মূল্য থেকে মাসের সম্পর্ক দেখায়](../../../../translated_images/bn/lineplot.f9034ba47b1e30ee.webp) + + এই ডেটাটি যথেষ্ট শব্দপূর্ণ, তাই লাইন প্লট সবচেয়ে স্পষ্ট নয় — তবে এটি দেখায় আপনি কিভাবে সহজেই 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") + ``` + + ![মাসিক দাম বিতরণ দেখানো একটি Seaborn বার চার্ট](../../../../translated_images/bn/catplot.e73fc35fdf96242b.webp) + + এটি 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") + ``` + + ![সংখ্যাসূচক কলামগুলোর মধ্যে সম্পর্ক দেখানো একটি Seaborn হিটম্যাপ](../../../../translated_images/bn/heatmap.bd98dce43b404c57.webp) + + মানগুলো `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 @@ # রিইনফোর্সমেন্ট লার্নিং এবং কিউ-লার্নিং এর পরিচিতি -![মেশিন লার্নিং-এ রিইনফোর্সমেন্টের সারাংশ একটি স্কেচনোটে](../../../../sketchnotes/ml-reinforcement.png) -> স্কেচনোট: [Tomomi Imura](https://www.twitter.com/girlie_mac) +![মেশিন লার্নিং এ রিইনফোর্সমেন্টের সারাংশ একটি স্কেচনোটে](../../../../translated_images/bn/ml-reinforcement.94024374d63348db.webp) +> স্কেচনোট করেছেন [Tomomi Imura](https://www.twitter.com/girlie_mac) -রিইনফোর্সমেন্ট লার্নিং তিনটি গুরুত্বপূর্ণ ধারণার উপর ভিত্তি করে: এজেন্ট, কিছু স্টেট এবং প্রতিটি স্টেটের জন্য একটি অ্যাকশনের সেট। নির্দিষ্ট স্টেটে একটি অ্যাকশন সম্পাদন করে এজেন্ট একটি পুরস্কার পায়। আবার সুপার মারিও কম্পিউটার গেমটি কল্পনা করুন। আপনি মারিও, আপনি একটি গেম লেভেলে আছেন, একটি ক্লিফের কিনারায় দাঁড়িয়ে। আপনার উপরে একটি কয়েন রয়েছে। আপনি মারিও, একটি গেম লেভেলে, একটি নির্দিষ্ট অবস্থানে ... এটি আপনার স্টেট। ডানদিকে এক ধাপ এগিয়ে যাওয়া (একটি অ্যাকশন) আপনাকে কিনারা থেকে ফেলে দেবে, এবং এটি আপনাকে একটি নিম্ন সংখ্যাসূচক স্কোর দেবে। তবে, জাম্প বাটন চাপলে আপনি একটি পয়েন্ট পাবেন এবং আপনি জীবিত থাকবেন। এটি একটি ইতিবাচক ফলাফল এবং এটি আপনাকে একটি ইতিবাচক সংখ্যাসূচক স্কোর প্রদান করবে। +রিইনফোর্সমেন্ট লার্নিং-এ তিনটি গুরুত্বপূর্ণ ধারণা রয়েছে: এজেন্ট, কিছু স্টেট, এবং প্রতি স্টেটে কিছু ক্রিয়া। নির্দিষ্ট স্টেটে একটি ক্রিয়া সম্পাদনের মাধ্যমে এজেন্টকে একটি পুরস্কার দেওয়া হয়। আবার কম্পিউটার গেম সুপার মারিও কল্পনা করুন। আপনি মারিও, আপনি একটি গেম লেভেলে, একটি ঝরনার পাশে দাঁড়িয়ে আছেন। আপনার উপর একটি কয়েন আছে। আপনি মারিও, একটি গেম লেভেলে, একটি নির্দিষ্ট স্থানে ... এটাই আপনার স্টেট। ডানদিকে এক ধাপ এগিয়ে যাওয়া (একটি ক্রিয়া) আপনাকে ঝরনার উপর দিয়ে নিয়ে যাবে, এবং আপনাকে একটি নিচু সংখ্যামূলক স্কোর দেবে। তবে, জাম্প বোতাম চাপলে আপনি একটি পয়েন্ট স্কোর করবেন এবং জীবিত থাকবেন। এটা একটি ইতিবাচক ফলাফল এবং এটা আপনাকে একটি ইতিবাচক সংখ্যাত্মক স্কোর প্রদান করবে। -রিইনফোর্সমেন্ট লার্নিং এবং একটি সিমুলেটর (গেম) ব্যবহার করে, আপনি গেমটি খেলার পদ্ধতি শিখতে পারেন যাতে আপনি জীবিত থাকতে পারেন এবং যত বেশি পয়েন্ট সম্ভব অর্জন করতে পারেন। +রিইনফোর্সমেন্ট লার্নিং এবং একটি সিমুলেটর (গেম) ব্যবহার করে, আপনি গেমটি কীভাবে খেলতে হয় তা শিখতে পারেন যাতে পুরস্কার সর্বাধিক হয়, যা হলো জীবিত থাকা এবং যতটা সম্ভব বেশি পয়েন্ট স্কোর করা। [![রিইনফোর্সমেন্ট লার্নিং এর পরিচিতি](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](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` মাপের স্কুয়ার বোর্ড, এভাবে: -![পিটারের পরিবেশ](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![পিটারের পরিবেশ](../../../../translated_images/bn/environment.40ba3cb66256c93f.webp) এই বোর্ডের প্রতিটি সেল হতে পারে: -* **মাটি**, যেখানে পিটার এবং অন্যান্য প্রাণীরা হাঁটতে পারে। -* **পানি**, যেখানে হাঁটা সম্ভব নয়। -* একটি **গাছ** বা **ঘাস**, যেখানে আপনি বিশ্রাম নিতে পারেন। -* একটি **আপেল**, যা পিটার খুঁজে পেতে পছন্দ করবে নিজেকে খাওয়ানোর জন্য। -* একটি **নেকড়ে**, যা বিপজ্জনক এবং এড়ানো উচিত। +* **মাটি**, যেখানে পিটার এবং অন্য প্রাণীরা হাঁটতে পারে। +* **পানি**, যেখানে আপনি অবশ্যই হাঁটতে পারবেন না। +* একটি **গাছ** অথবা **ঘাস**, যা বিশ্রামের স্থান। +* একটি **আপেল**, যা পিটার খুঁজে পেলে নিজেকে খাওয়াতে পছন্দ করবে। +* একটি **বাঘ**, যা বিপজ্জনক এবং এড়ানো উচিত। -একটি পৃথক পাইথন মডিউল, [`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 ধাপ। + লক্ষ্য করুন যে পথের গড় দৈর্ঘ্য প্রায় ৩০-৪০ ধাপ, যা বেশ বড়, কারণ নিকটস্থ আপেলের গড় দূরত্ব প্রায় ৫-৬ ধাপ। - আপনি পিটারের র‍্যান্ডম ওয়াক চলাকালীন গতিবিধি দেখতে পারেন: + আপনি পিটারের চলাফেরার র্যান্ডম ওয়াক চলাকালীন দেখতে পারেন: - ![পিটারের র‍্যান্ডম ওয়াক](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) + ![পিটারের র্যান্ডম ওয়াক](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) ## পুরস্কার ফাংশন -আমাদের পলিসিকে আরও বুদ্ধিমান করতে, আমাদের বুঝতে হবে কোন পদক্ষেপগুলি অন্যদের তুলনায় "ভালো"। এটি করতে, আমাদের লক্ষ্য সংজ্ঞায়িত করতে হবে। +আমাদের নীতিকে আরো বুদ্ধিমান করতে, আমাদের বুঝতে হবে কোন চলাচল "অন্যের চেয়ে ভালো"। এ জন্য, আমাদের লক্ষ্য সংজ্ঞায়িত করতে হবে। -লক্ষ্যটি একটি **পুরস্কার ফাংশন** এর মাধ্যমে সংজ্ঞায়িত করা যেতে পারে, যা প্রতিটি স্টেটের জন্য কিছু স্কোর মান ফেরত দেবে। সংখ্যাটি যত বেশি হবে, পুরস্কার ফাংশন তত ভালো। (কোড ব্লক 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)`. -![পিটারের পরিবেশ](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![পিটারের পরিবেশ](../../../../translated_images/bn/env_init.04e8f26d2d60089e.webp) -প্রতিটি সেলের কেন্দ্রে একটি "তীর" রয়েছে যা গতির পছন্দসই দিক নির্দেশ করে। যেহেতু সমস্ত দিক সমান, একটি বিন্দু প্রদর্শিত হয়। +প্রতিটি সেলের কেন্দ্রবিন্দুতে একটি "তীর" থাকে যা পছন্দসই চলাচলের দিক নির্দেশ করে। যেহেতু সব দিক সমান, একটি বিন্দু প্রদর্শিত হয়। -এখন আমাদের সিমুলেশন চালাতে হবে, আমাদের পরিবেশ অন্বেষণ করতে হবে এবং কিউ-টেবিল মানগুলির একটি ভালো বন্টন শিখতে হবে, যা আমাদের আপেলটি খুঁজে পেতে অনেক দ্রুত সাহায্য করবে। +এখন আমাদের সিমুলেশন চালাতে হবে, পরিবেশ অন্বেষণ করতে হবে, এবং কিউ-টেবিল মানের একটি উন্নত বন্টন শিখতে হবে, যা আপেলের পথে দ্রুত পৌঁছানোর সুযোগ দেবে। -## কিউ-লার্নিং এর মূল: বেলম্যান সমীকরণ +## কিউ-লার্নিং এর সারমর্ম: বেলম্যান সমীকরণ -একবার আমরা চলতে শুরু করলে, প্রতিটি অ্যাকশনের একটি সংশ্লিষ্ট পুরস্কার থাকবে, অর্থাৎ আমরা তাত্ত্বিকভাবে সর্বোচ্চ তাৎক্ষণিক পুরস্কারের উপর ভিত্তি করে পরবর্তী অ্যাকশনটি নির্বাচন করতে পারি। তবে, বেশিরভাগ স্টেটে, পদক্ষেপটি আমাদের আপেল খুঁজে পাওয়ার লক্ষ্য অর্জন করবে না, এবং তাই আমরা তাৎক্ষণিকভাবে সিদ্ধান্ত নিতে পারি না কোন দিকটি ভালো। +যখন আমরা চলতে শুরু করব, প্রতিটি ক্রিয়ার জন্য একটি সংশ্লিষ্ট পুরস্কার থাকবে, অর্থাৎ আমরা তাত্ক্ষণিক পুরস্কারের সর্বোচ্চ ভিত্তিতে পরবর্তী ক্রিয়া নির্বাচন করতে পারব। তবে বেশিরভাগ স্টেটে, চলাচল আমাদের লক্ষ্য — আপেল পৌঁছানো — অর্জন করবে না, তাই আমরা সাথে সাথেই সিদ্ধান্ত নিতে পারব না কোন দিক ভালো। -> মনে রাখবেন যে তাৎক্ষণিক ফলাফলটি গুরুত্বপূর্ণ নয়, বরং চূড়ান্ত ফলাফলটি গুরুত্বপূর্ণ, যা আমরা সিমুলেশনের শেষে অর্জন করব। +> মনে রাখবেন তাত্ক্ষণিক ফলাফল নয় যে গুরুত্বপূর্ণ, বরং চূড়ান্ত ফলাফল যা আমরা সিমুলেশন শেষে পাবো। -এই বিলম্বিত পুরস্কারটি বিবেচনা করার জন্য, আমাদের **[ডাইনামিক প্রোগ্রামিং](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-লার্নিং ব্যবহার করে। + +![দুর্দান্ত পালানো!](../../../../translated_images/bn/escape.18862db9930337e3.webp) + +> পিটার এবং তার বন্ধুরা নেকড়ে থেকে পালানোর জন্য সৃজনশীল হচ্ছে! ছবি: [জেন লুপার](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() ``` - আপনি এরকম একটি চিত্র দেখতে পাবেন: + আপনি কিছু এরকম ছবি দেখতে পাবেন: - ![non-balancing cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) + ![ভারসাম্যহীন কার্টপোল](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) -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) ``` -![raw progress](../../../../8-Reinforcement/2-Gym/images/train_progress_raw.png) +![কাঁচা অগ্রগতি](../../../../translated_images/bn/train_progress_raw.2adfdf2daea09c59.webp) -এই গ্রাফ থেকে কিছু বলা সম্ভব নয়, কারণ স্টোকাস্টিক প্রশিক্ষণ প্রক্রিয়ার প্রকৃতির কারণে প্রশিক্ষণ সেশনের দৈর্ঘ্য ব্যাপকভাবে পরিবর্তিত হয়। এই গ্রাফটি আরও অর্থবহ করতে, আমরা 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)) ``` -![training progress](../../../../8-Reinforcement/2-Gym/images/train_progress_runav.png) +![প্রশিক্ষণ অগ্রগতি](../../../../translated_images/bn/train_progress_runav.c71694a8fa9ab359.webp) + +## হাইপারপ্যারামিটার পরিবর্তন + +শেখাকে আরো স্থিতিশীল করতে, প্রশিক্ষণের সময় কিছু হাইপারপ্যারামিটার সামঞ্জস্য করা বুদ্ধিমানের কাজ। বিশেষ করে: + +- **লার্নিং রেট** `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() ``` -আপনার কিছুটা এরকম দেখতে পাওয়া উচিত: +আপনি এরকম কিছু দেখতে পাবেন: -![একটি ব্যালেন্সিং কার্টপোল](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) +![একটি ব্যালান্সিং কার্টপোল](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) --- ## 🚀চ্যালেঞ্জ -> **টাস্ক ৩**: এখানে আমরা 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) -> ![রেসপন্সিবল AI টুলের GIF](../../../../9-Real-World/2-Debugging-ML-Models/images/rai-overview.gif) +> ![রেস্পন্সিবল AI টুলের গিফ](../../../../9-Real-World/2-Debugging-ML-Models/images/rai-overview.gif) ## ত্রুটি বিশ্লেষণ -প্রচলিত মডেল পারফরম্যান্স মেট্রিক, যা সঠিকতা পরিমাপের জন্য ব্যবহৃত হয়, সাধারণত সঠিক বনাম ভুল পূর্বাভাসের উপর ভিত্তি করে গণনা করা হয়। উদাহরণস্বরূপ, একটি মডেল ৮৯% সময় সঠিক এবং ত্রুটি হার ০.০০১ হলে এটি ভালো পারফরম্যান্স হিসেবে বিবেচিত হতে পারে। তবে ত্রুটি আপনার ডেটাসেটে সমানভাবে বিতরণ নাও হতে পারে। আপনি ৮৯% মডেল সঠিকতার স্কোর পেতে পারেন, কিন্তু দেখতে পারেন যে আপনার ডেটার কিছু অঞ্চলে মডেল ৪২% সময় ব্যর্থ হচ্ছে। এই ব্যর্থতার প্যাটার্নের ফলে নির্দিষ্ট ডেটা গোষ্ঠীর ক্ষেত্রে ন্যায্যতা বা নির্ভরযোগ্যতার সমস্যা দেখা দিতে পারে। মডেল কোথায় ভালো করছে বা কোথায় ব্যর্থ হচ্ছে তা বোঝা অত্যন্ত গুরুত্বপূর্ণ। ডেটার সেই অঞ্চলগুলো যেখানে মডেলের ত্রুটি বেশি, তা গুরুত্বপূর্ণ ডেটা জনসংখ্যা হতে পারে। +মডেলের পারফরম্যান্স পরিমাপের জন্য ঐতিহ্যগত কর্মক্ষমতা সূচকগুলি সাধারণত সঠিক বনাম ভুল পূর্বাভাসের উপর ভিত্তি করে গণনা করা হয়। উদাহরণস্বরূপ, একটি মডেল ৮৯% সময় সঠিক বলে নির্ধারণ করা এবং ত্রুটি হার ০.০০১ হলে সেটিকে ভালো পারফরম্যান্স বলা যেতে পারে। কিন্তু ত্রুটিগুলি আপনার মূল ডেটাসেটে সমানভাবে বিতরণ হয় না। আপনি হয়তো ৮৯% সঠিকতা পাবেন কিন্তু দেখতে পাবেন এমন ডেটার বিভিন্ন অঞ্চল রয়েছে যেখানে মডেল ৪২% সময় ব্যর্থ হচ্ছে। এই ধরনের ব্যর্থতা নিদর্শন নির্দিষ্ট ডেটা গোষ্ঠীর জন্য ন্যায়সঙ্গতা বা বিশ্বাসযোগ্যতা সমস্যা তৈরি করতে পারে। মডেলটি কোথায় ভালো কাজ করছে বা করছে না তা বোঝা অত্যন্ত গুরুত্বপূর্ণ। যেখানে মডেলে ভুলের সংখ্যা বেশি সেখানে তথ্যটি একটি গুরুত্বপূর্ণ ডেটা জনসংখ্যা হতে পারে। -![মডেল ত্রুটি বিশ্লেষণ এবং ডিবাগ](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-error-distribution.png) +![মডেলের ত্রুটি বিশ্লেষণ ও ডিবাগ](../../../../translated_images/bn/ea-error-distribution.117452e1177c1dd8.webp) -RAI ড্যাশবোর্ডের ত্রুটি বিশ্লেষণ কম্পোনেন্ট একটি গাছের ভিজ্যুয়ালাইজেশনের মাধ্যমে মডেলের ব্যর্থতা বিভিন্ন কোহর্টে কীভাবে বিতরণ হয়েছে তা দেখায়। এটি আপনার ডেটাসেটে উচ্চ ত্রুটি হার রয়েছে এমন বৈশিষ্ট্য বা এলাকাগুলি চিহ্নিত করতে সহায়ক। মডেলের বেশিরভাগ ত্রুটি কোথা থেকে আসছে তা দেখে আপনি মূল কারণ তদন্ত শুরু করতে পারেন। আপনি ডেটা কোহর্ট তৈরি করে বিশ্লেষণ করতে পারেন। এই ডেটা কোহর্টগুলো ডিবাগিং প্রক্রিয়ায় সাহায্য করে, কেন মডেল একটি কোহর্টে ভালো পারফর্ম করছে কিন্তু অন্যটিতে ভুল করছে তা নির্ধারণ করতে। +RAI ড্যাশবোর্ডের ত্রুটি বিশ্লেষণ কম্পোনেন্টটি দেখায় কিভাবে মডেল ব্যর্থতা বিভিন্ন গোষ্ঠীর মধ্যে বিতরণ হয়েছে একটি ট্রি ভিজ্যুয়ালাইজেশনের মাধ্যমে। এটি বৈশিষ্ট্য বা এমন কোন এলাকাগুলো চিহ্নিত করতে সাহায্য করে যেখানে আপনার ডেটাসেটে উচ্চ ত্রুটির হার আছে। মডেলের ভুলের উৎস খুঁজে পেতে এটি সহায়ক। আপনি ডেটার গোষ্ঠীও তৈরি করতে পারেন বিশ্লেষণের জন্য। এই গোষ্ঠীগুলো ডিবাগিং প্রক্রিয়ায় সহায়তা করে বুঝতে কেন মডেলের পারফরম্যান্স এক গোষ্ঠীতে ভাল কিন্তু অন্যটিতে ত্রুটিপূর্ণ। -![ত্রুটি বিশ্লেষণ](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-error-cohort.png) +![ত্রুটি বিশ্লেষণ](../../../../translated_images/bn/ea-error-cohort.6886209ea5d438c4.webp) -গাছের মানচিত্রে গাঢ় লাল রঙের ছায়া দ্রুত সমস্যার এলাকাগুলি চিহ্নিত করতে সাহায্য করে। উদাহরণস্বরূপ, একটি গাছের নোড যত গাঢ় লাল, ত্রুটি হার তত বেশি। +ট্রি ম্যাপের ভিজ্যুয়াল নির্দেশকগুলি সমস্যা এলাকাগুলো দ্রুত সনাক্ত করতে সাহায্য করে। উদাহরণস্বরূপ, একটি ট্রি নোডের লাল রং যত গাঢ় হবে তত ত্রুটির হার বেশি থাকবে। -হিট ম্যাপ একটি অন্য ভিজ্যুয়ালাইজেশন কার্যকারিতা যা ব্যবহারকারীরা এক বা দুটি বৈশিষ্ট্য ব্যবহার করে ত্রুটি হার তদন্ত করতে ব্যবহার করতে পারেন, যা পুরো ডেটাসেট বা কোহর্টে মডেলের ত্রুটির কারণ খুঁজে বের করতে সাহায্য করে। +হিট ম্যাপ আরেকটি ভিজ্যুয়ালাইজেশন ফিচার যা ব্যবহারকারীরা একটি বা দুটি বৈশিষ্ট্যের মাধ্যমে ত্রুটির হার তদন্তে ব্যবহার করতে পারেন যা সম্পূর্ণ ডেটাসেট অথবা গোষ্ঠীর মধ্যে মডেল ত্রুটির কারণ খুঁজতে সাহায্য করে। -![ত্রুটি বিশ্লেষণ হিটম্যাপ](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-heatmap.png) +![ত্রুটি বিশ্লেষণ হিটম্যাপ](../../../../translated_images/bn/ea-heatmap.8d27185e28cee383.webp) -ত্রুটি বিশ্লেষণ ব্যবহার করুন যখন আপনি: +ত্রুটি বিশ্লেষণ ব্যবহার করুন যখন আপনাকে: -* মডেলের ব্যর্থতা কীভাবে ডেটাসেট এবং বিভিন্ন ইনপুট ও বৈশিষ্ট্য মাত্রায় বিতরণ হয়েছে তা গভীরভাবে বুঝতে চান। -* সামগ্রিক পারফরম্যান্স মেট্রিক ভেঙে ত্রুটিপূর্ণ কোহর্টগুলি স্বয়ংক্রিয়ভাবে আবিষ্কার করতে চান, যা আপনার লক্ষ্যযুক্ত সমাধান পদক্ষেপগুলিকে জানাতে সাহায্য করবে। +* গভীরভাবে বুঝতে হবে কিভাবে মডেল ব্যর্থতা ডেটাসেট এবং বিভিন্ন ইনপুট ও বৈশিষ্ট্য মাত্রায় বিতরণ হয়েছে। +* সম্মিলিত কর্মক্ষমতা সূচক ভাঙ্গা এবং স্বয়ংক্রিয়ভাবেই ভুল গোষ্ঠী আবিষ্কার করতে যা লক্ষ্যভিত্তিক সমাধান পদক্ষেপে সাহায্য করবে। ## মডেল ওভারভিউ -একটি মেশিন লার্নিং মডেলের পারফরম্যান্স মূল্যায়ন করতে হলে এর আচরণের একটি সামগ্রিক ধারণা পাওয়া প্রয়োজন। এটি একাধিক মেট্রিক পর্যালোচনা করে অর্জন করা যেতে পারে, যেমন ত্রুটি হার, সঠিকতা, রিকল, প্রিসিশন, বা MAE (Mean Absolute Error) এর মধ্যে বৈষম্য খুঁজে বের করা। একটি পারফরম্যান্স মেট্রিক ভালো দেখাতে পারে, কিন্তু অন্য মেট্রিকে ত্রুটি প্রকাশিত হতে পারে। এছাড়াও, পুরো ডেটাসেট বা কোহর্টের মধ্যে মেট্রিকগুলির তুলনা পারফরম্যান্সের বৈষম্য প্রকাশ করতে সাহায্য করে। এটি বিশেষভাবে গুরুত্বপূর্ণ যখন সংবেদনশীল বনাম অসংবেদনশীল বৈশিষ্ট্যের (যেমন রোগীর জাতি, লিঙ্গ, বা বয়স) মধ্যে মডেলের পারফরম্যান্স দেখা হয়, যাতে মডেলের সম্ভাব্য অন্যায়তা প্রকাশ করা যায়। উদাহরণস্বরূপ, যদি দেখা যায় যে মডেল একটি সংবেদনশীল বৈশিষ্ট্যযুক্ত কোহর্টে বেশি ত্রুটি করছে, তাহলে এটি মডেলের সম্ভাব্য অন্যায়তা প্রকাশ করতে পারে। +মেশিন লার্নিং মডেলের পারফরম্যান্স মূল্যায়নের জন্য এর আচরণের সম্পূর্ণ ধারণা প্রয়োজন। এটি একাধিক সূচক যেমন ত্রুটির হার, সঠিকতা, রিকল, প্রিসিশন, বা MAE (গড় আপেক্ষিক ত্রুটি) পর্যালোচনা করে প্রাপ্ত হতে পারে যা পারফরম্যান্স সূচকের মধ্যে বৈষম্য খুঁজে পেতে সাহায্য করে। একটি সূচক ভাল দেখলেও অন্য সূচকে ভুলসাধ্যতা প্রকাশ পেতে পারে। এছাড়া, সমগ্র ডেটাসেট বা গোষ্ঠীর মধ্যে সূচক তুলনা মডেল কোথায় ভাল কাজ করছে বা কাজ করছে না তা স্পষ্ট করে তোলে। এটি বিশেষ করে সংবেদনশীল বনাম অসংবেদনশীল বৈশিষ্ট্যের পারফরম্যান্স পর্যবেক্ষণে গুরুত্বপূর্ণ (যেমন রোগীর বর্ণ, লিঙ্গ বা বয়স) যা মডেলের সম্ভাব্য পক্ষপাত উন্মোচন করতে পারে। উদাহরণস্বরূপ, মডেল সংবেদনশীল বৈশিষ্ট্যযুক্ত গোষ্ঠীতে বেশি ভুল করলে এটি মডেলের সম্ভাব্য পক্ষপাত প্রকাশ করে। -RAI ড্যাশবোর্ডের মডেল ওভারভিউ কম্পোনেন্ট শুধুমাত্র ডেটা কোহর্টে পারফরম্যান্স মেট্রিক বিশ্লেষণ করতে সাহায্য করে না, এটি ব্যবহারকারীদের বিভিন্ন কোহর্টের মধ্যে মডেলের আচরণ তুলনা করার ক্ষমতা দেয়। +RAI ড্যাশবোর্ডের মডেল ওভারভিউ কম্পোনেন্টটি কেবল গোষ্ঠীর মধ্যে ডেটার কর্মক্ষমতা সূচক বিশ্লেষণই নয় বরং ভিন্ন গোষ্ঠীর মধ্যে মডেলের আচরণ তুলনা করার সুযোগ দেয়। -![ডেটাসেট কোহর্ট - RAI ড্যাশবোর্ডে মডেল ওভারভিউ](../../../../9-Real-World/2-Debugging-ML-Models/images/model-overview-dataset-cohorts.png) +![ডেটাসেট গোষ্ঠী - RAI ড্যাশবোর্ডে মডেল ওভারভিউ](../../../../translated_images/bn/model-overview-dataset-cohorts.dfa463fb527a35a0.webp) -কম্পোনেন্টের বৈশিষ্ট্য-ভিত্তিক বিশ্লেষণ কার্যকারিতা ব্যবহারকারীদের একটি নির্দিষ্ট বৈশিষ্ট্যের মধ্যে ডেটা উপগোষ্ঠী সংকুচিত করতে এবং একটি সূক্ষ্ম স্তরে অস্বাভাবিকতা চিহ্নিত করতে সাহায্য করে। উদাহরণস্বরূপ, ড্যাশবোর্ডে একটি ব্যবহারকারী-নির্বাচিত বৈশিষ্ট্যের জন্য স্বয়ংক্রিয়ভাবে কোহর্ট তৈরি করার বিল্ট-ইন বুদ্ধিমত্তা রয়েছে (যেমন *"time_in_hospital < 3"* বা *"time_in_hospital >= 7"*)। এটি ব্যবহারকারীকে একটি বড় ডেটা গোষ্ঠী থেকে একটি নির্দিষ্ট বৈশিষ্ট্য আলাদা করতে সক্ষম করে, যাতে দেখা যায় এটি মডেলের ত্রুটিপূর্ণ ফলাফলের একটি মূল প্রভাবক কিনা। +এই কম্পোনেন্টের বৈশিষ্ট্য-ভিত্তিক বিশ্লেষণ ফাংশনালিটি ব্যবহারকারীকে নির্দিষ্ট বৈশিষ্ট্যের মধ্যে ডেটার উপগোষ্ঠী সংকুচিত করতে সাহায্য করে যাতে সূক্ষ্ম স্তরে ব্যতিক্রম সনাক্ত করা যায়। উদাহরণস্বরূপ, ড্যাশবোর্ডে বিল্ট-ইন বুদ্ধিমত্তা আছে যা ব্যবহারকারীর নির্বাচিত বৈশিষ্ট্যের জন্য স্বয়ংক্রিয়ভাবে গোষ্ঠী তৈরি করে (যেমন, *"time_in_hospital < 3"* অথবা *"time_in_hospital >= 7"*)। এটি ব্যবহারকারীকে বড় ডেটা গোষ্ঠী থেকে একটি কিছু বৈশিষ্ট্য পৃথক করে দেখতে দেয় যে তা মডেলের ভুল ফলাফলে গুরুত্বপূর্ণ প্রভাব ফেলে কিনা। -![ফিচার কোহর্ট - RAI ড্যাশবোর্ডে মডেল ওভারভিউ](../../../../9-Real-World/2-Debugging-ML-Models/images/model-overview-feature-cohorts.png) +![বৈশিষ্ট্য গোষ্ঠী - RAI ড্যাশবোর্ডে মডেল ওভারভিউ](../../../../translated_images/bn/model-overview-feature-cohorts.c5104d575ffd0c80.webp) -মডেল ওভারভিউ কম্পোনেন্ট দুটি শ্রেণির বৈষম্য মেট্রিক সমর্থন করে: +মডেল ওভারভিউ কম্পোনেন্ট দুই ধরনের বৈষম্য সূচক সমর্থন করে: -**মডেল পারফরম্যান্সে বৈষম্য**: এই সেটের মেট্রিকগুলি ডেটার উপগোষ্ঠীগুলির মধ্যে নির্বাচিত পারফরম্যান্স মেট্রিকের মানগুলির বৈষম্য (পার্থক্য) গণনা করে। এখানে কয়েকটি উদাহরণ: +**মডেল কর্মক্ষমতায় বৈষম্য**: এই সূচকগুলি নির্বাচিত কর্মক্ষমতা সূচকের (metric) মানগুলোর মধ্যে উপগোষ্ঠীর মধ্যে পার্থক্য গণনা করে। কিছু উদাহরণ: * সঠিকতার হার বৈষম্য -* ত্রুটি হার বৈষম্য -* প্রিসিশন বৈষম্য -* রিকল বৈষম্য -* গড় পরম ত্রুটি (MAE) বৈষম্য +* ত্রুটি হারের বৈষম্য +* প্রিসিশনের বৈষম্য +* রিকলের বৈষম্য +* গড় আপেক্ষিক ত্রুটি (MAE) এর বৈষম্য -**নির্বাচনের হার বৈষম্য**: এই মেট্রিকটি উপগোষ্ঠীগুলির মধ্যে নির্বাচনের হার (অনুকূল পূর্বাভাস) এর পার্থক্য ধারণ করে। এর একটি উদাহরণ হলো ঋণ অনুমোদনের হার বৈষম্য। নির্বাচনের হার মানে প্রতিটি শ্রেণির ডেটা পয়েন্টের ভগ্নাংশ যা ১ হিসেবে শ্রেণীবদ্ধ (বাইনারি শ্রেণীবিভাজনে) বা পূর্বাভাসের মানগুলির বিতরণ (রিগ্রেশনে)। +**নির্বাচন হারে বৈষম্য**: এই সূচকে উপগোষ্ঠীর মধ্যে নির্বাচনের হার (পক্ষপাতমূলক পূর্বাভাস) এর পার্থক্য থাকে। যেমন ঋণ অনুমোদনের হারে বৈষম্য। নির্বাচনের হার মানে হলো প্রতিটি শ্রেণীতে ডেটা পয়েন্টগুলোর ভাগ যা ১ হিসাবে শ্রেণীবদ্ধ হয় (বাইনারি শ্রেণীবিভাগে) অথবা পূর্বাভাসের মানের বিতরণ (রিগ্রেশনে)। ## ডেটা বিশ্লেষণ -> "যদি আপনি ডেটাকে যথেষ্ট সময় ধরে চাপ দেন, এটি যেকোনো কিছু স্বীকার করবে" - রোনাল্ড কোস +> "যদি তুমি ডেটাকে যথেষ্ট লম্বা সময় ধরে শিকলবন্দী করো, তবে এটি যেকোন কিছু স্বীকার করবে" - রোনাল্ড কোস + +এই উক্তিটি অতিরঞ্জিত শোনায়, তবে সত্য হলো তথ্যকে যেকোন সিদ্ধান্তের পক্ষে প্রভাবিত করা যায়। এমন প্রভাব কখনো তাৎক্ষণিকভাবে ঘটতে পারে। আমরা সবাই পক্ষপাত ধারণ করি, এবং সচেতনভাবে কখন ডেটায় পক্ষপাত প্রবেশ করাচ্ছি তা বুঝতে কঠিন। AI এবং মেশিন লার্নিংয়ে ন্যায়সঙ্গতা নিশ্চিত করা একটি জটিল চ্যালেঞ্জ। + +ডেটা ঐতিহ্যগত মডেল কর্মক্ষমতা সূচকের জন্য একটি বড় অন্ধস্থান। আপনার উচ্চ সঠিকতা থাকতে পারে, তবে এটি সবসময় ডেটাসেটের মধ্যে থাকা পক্ষপাত প্রতিফলিত করে না। উদাহরণস্বরূপ, যদি কোনো প্রতিষ্ঠানের কর্মচারীদের ডেটাসেটে ২৭% মহিলা নির্বাহী পদে থাকে এবং ৭৩% পুরুষ একই স্তরে থাকে, তাহলে এ তথ্য ব্যবহার করে প্রশিক্ষিত একটি চাকরির বিজ্ঞাপন AI মডেল প্রধানত পুরুষ শ্রোতাদের লক্ষ্য করত; যা লিঙ্গ পক্ষপাত প্রকাশ করে। এই ধরনের ডেটা অসমতা মডেলের পূর্বাভাসকে একটি লিঙ্গের পক্ষে পক্ষপাতপ্রবণ করে। এটা ন্যায়সঙ্গতার ইস্যু নির্দেশ করে যেখানে AI মডেলে লিঙ্গ পক্ষপাত আছে। + +RAI ড্যাশবোর্ডের ডেটা বিশ্লেষণ কম্পোনেন্ট আস্তে সাহায্য করে সনাক্ত করতে কোথায় 과অঙ্গ বা কম প্রতিনিধিত্ব আছে। এটি ব্যবহারকারীদের নির্ণয় করতে সাহায্য করে ডেটার অসমতা বা নির্দিষ্ট গোষ্ঠীর প্রতিনিধিত্বের অভাব থেকে ত্রুটি এবং ন্যায়সঙ্গতার সমস্যা কোথা থেকে আসছে। এটি ব্যবহারকারীদের অনুমানকৃত এবং প্রকৃত ফলাফল, ত্রুটি গোষ্ঠী এবং নির্দিষ্ট বৈশিষ্ট্যের ভিত্তিতে ডেটাসেট ভিজ্যুয়ালাইজ করার অনুমতি দেয়। কখনো কখনো কম প্রতিনিধিত্বশীল ডেটা গোষ্ঠী আবিষ্কার কেবল তা নয় যে মডেল ভালো শিখছে না, ফলে ভুলের সংখ্যা বেশি। পক্ষপাতপূর্ণ মডেল হওয়া মানেই শুধু ন্যায়সঙ্গতার সমস্যা নয়, বরং মডেল অন্তর্ভুক্তিমূলক বা বিশ্বাসযোগ্য নয় তা নির্দেশ করে। + +![RAI ড্যাশবোর্ডের ডেটা বিশ্লেষণ কম্পোনেন্ট](../../../../translated_images/bn/dataanalysis-cover.8d6d0683a70a5c1e.webp) -এই বক্তব্যটি চরম শোনায়, কিন্তু এটি সত্য যে ডেটা যেকোনো সিদ্ধান্তকে সমর্থন করার জন্য প্রভাবিত করা যেতে পারে। এমন প্রভাব কখনও কখনও অনিচ্ছাকৃতভাবে ঘটতে পারে। আমরা সবাই মানুষ হিসেবে পক্ষপাতিত্ব করি, এবং ডেটায় পক্ষপাতিত্ব প্রবর্তন করছি কিনা তা সচেতনভাবে জানা প্রায়ই কঠিন। AI এবং মেশিন লার্নিং-এ ন্যায্যতা নিশ্চিত করা একটি জটিল চ্যালেঞ্জ। -ডেটা প্রচলিত মডেল পারফরম্যান্স মেট্রিকের জন্য একটি বড় অন্ধকার অঞ্চল। আপনার সঠিকতার স্কোর উচ্চ হতে পারে, কিন্তু এটি সবসময় আপনার ডেটাসেটে থাকা অন্তর্নিহিত ডেটা পক্ষপাতিত্ব প্রতিফলিত করে না। উদাহরণস্বরূপ, যদি একটি কোম্পানির নির্বাহী পদে কর্মীদের ডেটাসেটে ২৭% নারী এবং ৭৩% পুরুষ থাকে, তাহলে এই ডেটার উপর প্রশিক্ষিত একটি চাকরি বিজ্ঞাপন AI মডেল মূলত পুরুষদের লক্ষ্য করতে পারে। এই ডেটার ভারসাম্যহীনতা মডেলের পূর্বাভাসকে এক লিঙ্গের পক্ষে পক্ষপাতিত্ব করেছে। এটি একটি ন্যায্যতার সমস্যা প্রকাশ করে যেখানে AI মডেলে লিঙ্গ পক্ষপাতিত্ব রয়েছে। +ডেটা বিশ্লেষণ ব্যবহার করুন যখন আপনাকে: -RAI ড্যাশবোর্ডের ডেটা বিশ্লেষণ কম্পোনেন্ট ডেটাসেটে অতিরিক্ত এবং কম প্রতিনিধিত্বের এলাকাগুলি চিহ্নিত করতে সাহায্য করে। এটি ব্যবহারকারীদের ডেটা ভারসাম্যহীনতা বা একটি নির্দিষ্ট ডেটা গোষ্ঠীর প্রতিনিধিত্বের অভাব থেকে উদ্ভূত ত্রুটি এবং ন্যায্যতার সমস্যাগুলি নির্ণয় করতে সাহায্য করে। এটি ব্যবহারকারীদের পূর্বাভাস এবং প্রকৃত ফলাফল, ত্রুটি গোষ্ঠী এবং নির্দিষ্ট বৈশিষ্ট্যের উপর ভিত্তি করে ডেটাসেট ভিজ্যুয়ালাইজ করার ক্ষমতা দেয়। কখনও কখনও একটি কম প্রতিনিধিত্বকারী ডেটা গোষ্ঠী আবিষ্কার করা মডেলটি ভালোভাবে শিখছে না তা প্রকাশ করতে পারে, যার ফলে উচ্চ ত্রুটি দেখা দেয়। একটি মডেলে ডেটা পক্ষপাতিত্ব থাকা শুধুমাত্র একটি ন্যায্যতার সমস্যা নয়, এটি দেখায় যে মডেলটি অন্তর্ভুক্তিমূলক বা নির্ভরযোগ্য নয়। +* বিভিন্ন ফিল্টার নির্বাচন করে আপনার ডেটাসেট পরিসংখ্যান অনুসন্ধান করতে হবে (যাকে কোহর্টও বলা হয়)। +* বিভিন্ন গোষ্ঠী ও বৈশিষ্ট্য গোষ্ঠীগুলোর মধ্যে ডেটাসেটের বিতরণ বুঝতে হবে। +* জানতে হবে যে অন্য ড্যাশবোর্ড কম্পোনেন্ট থেকে প্রাপ্ত ন্যায়সঙ্গতা, ত্রুটি বিশ্লেষণ এবং কারণ-প্রমাণিত ফলাফল কি ডেটাসেটের বিতরণের কারণে হয়েছে কিনা। +* সিদ্ধান্ত নিতে হবে কোন এলাকায় আরও ডেটা সংগ্রহ করা দরকার যাতে প্রতিনিধিত্বের জনিত সমস্যা, লেবেল গোলমাল, বৈশিষ্ট্যের গোলমাল ইত্যাদি থেকে উদ্ভূত ত্রুটি দূর করা যায়। -![RAI ড্যাশবোর্ডে ডেটা বিশ্লেষণ কম্পোনেন্ট](../../../../9-Real-World/2-Debugging-ML-Models/images/dataanalysis-cover.png) +## মডেল ব্যাখ্যাত্মকতা -ডেটা বিশ্লেষণ ব্যবহার করুন যখন আপনি: +মেশিন লার্নিং মডেলগুলি সাধারণত কালো বাক্স হিসেবে বিবেচিত হয়। কোন প্রধান বৈশিষ্ট্য মডেলের পূর্বাভাস চালাচ্ছে তা বোঝা কঠিন। কোন মডেল কেন নির্দিষ্ট পূর্বাভাস দেয় তা স্পষ্টতা দেওয়া গুরুত্বপূর্ণ। উদাহরণস্বরূপ, যদি কোনো AI সিস্টেম পূর্বাভাস দেয় যে একজন ডায়াবেটিস রোগীর ৩০ দিনের কম সময়ের মধ্যে হাসপাতলে পুনরায় ভর্তি হওয়ার ঝুঁকি আছে, তবে এটি তার পূর্বাভাসের পেছনে থাকা সমর্থনকারী তথ্য দিতে পারা উচিত। এই সমর্থক তথ্য প্রদান স্বচ্ছতা আনে যা ক্লিনিশিয়ান বা হাসপাতালকে সুষ্ঠু সিদ্ধান্ত নিতে সাহায্য করে। এছাড়া, একজন নির্দিষ্ট রোগীর জন্য মডেল কেন পূর্বাভাস দিয়েছে তা ব্যাখ্যা করা স্বাস্থ্য নিয়মাবলীর সঙ্গে দায়বদ্ধতা জড়িত করে। যখন আপনি মেশিন লার্নিং মডেল মানুষের জীবনে প্রভাবিত করার জন্য ব্যবহার করছেন, তখন মডেলের আচরণ কী দ্বারা প্রভাবিত হচ্ছে তা বোঝা এবং ব্যাখ্যা করা অত্যন্ত গুরুত্বপূর্ণ। মডেল ব্যাখ্যাত্মকতা এবং বোধগম্যতা এই ধরনের প্রশ্নের উত্তর দেয় যেমন: -* আপনার ডেটাসেটের পরিসংখ্যান অন্বেষণ করতে চান, বিভিন্ন ফিল্টার নির্বাচন করে আপনার ডেটাকে বিভিন্ন মাত্রায় (কোহর্ট নামে পরিচিত) ভাগ করতে। -* বিভিন্ন কোহর্ট এবং বৈশিষ্ট্য গোষ্ঠীর মধ্যে আপনার ডেটাসেটের বিতরণ বুঝতে চান। -* ন্যায্যতা, ত্রুটি বিশ্লেষণ এবং কারণ সম্পর্কিত আপনার অনুসন্ধানগুলি (অন্যান্য ড্যাশবোর্ড কম্পোনেন্ট থেকে প্রাপ্ত) আপনার ডেটাসেটের বিতরণের ফলাফল কিনা তা নির্ধারণ করতে চান। -* প্রতিনিধিত্বের সমস্যাগুলি থেকে উদ্ভূত ত্রুটি কমানোর জন্য আরও ডেটা সংগ্রহের এলাকাগুলি সিদ্ধান্ত নিতে চান। +* মডেল ডিবাগিং: আমার মডেল কেন এই ভুল করল? কিভাবে আমি মডেল উন্নত করতে পারি? +* মানব-AI সমবায়: কিভাবে আমি মডেলের সিদ্ধান্ত বোঝব এবং বিশ্বাস করব? +* নিয়ন্ত্রক অনুপালন: আমার মডেল কি আইনি শর্ত পূরণ করে? -## মডেল ব্যাখ্যাযোগ্যতা +RAI ড্যাশবোর্ডের ফিচার ইম্পরটেন্স কম্পোনেন্ট আপনাকে ডিবাগ করতে এবং বুঝতে সাহায্য করে কিভাবে মডেল পূর্বাভাস দেয়। এটি মেশিন লার্নিং পেশাজীবী এবং সিদ্ধান্ত গ্রহণকারীদের জন্য গুরুত্বপূর্ণ যা একটি মডেলের আচরণে প্রভাব ফেলা বৈশিষ্ট্যগুলোর প্রমাণ দেখিয়ে আইনগত নিয়মাবলীর সঙ্গতি নিশ্চিত করে। পরবর্তীতে, ব্যবহারকারীরা গ্লোবাল এবং লোকাল ব্যাখ্যাত্মকতা দুটোই অন্বেষণ করতে পারেন যা যাচাই করে কোন বৈশিষ্ট্য মডেলের পূর্বাভাস চালায়। গ্লোবাল ব্যাখ্যাত্মকতায় মডেলের ওপর সর্বাধিক প্রভাব ফেলা শীর্ষ বৈশিষ্ট্য তালিকাভুক্ত হয়। লোকাল ব্যাখ্যাত্মকতায় একটি নির্দিষ্ট মামলার পূর্বাভাস চালানো বৈশিষ্ট্যগুলো প্রদর্শিত হয়। লোকাল ব্যাখ্যাত্মকতা নিরীক্ষণ বা ডিবাগিং এর জন্য সহায়ক, কারণ এতে একটি নির্দিষ্ট মামলার সঠিক বা ভুল পূর্বাভাস কেন হয় তা ব্যাখ্যা করা যায়। -মেশিন লার্নিং মডেলগুলো সাধারণত "ব্ল্যাক বক্স" হিসেবে বিবেচিত হয়। একটি মডেলের পূর্বাভাস চালানোর জন্য কোন মূল ডেটা বৈশিষ্ট্যগুলি গুরুত্বপূর্ণ তা বোঝা চ্যালেঞ্জিং হতে পারে। একটি মডেল কেন একটি নির্দিষ্ট পূর্বাভাস করেছে তা বোঝার জন্য স্বচ্ছতা প্রদান করা গুরুত্বপূর্ণ। উদাহরণস্বরূপ, যদি একটি AI সিস্টেম পূর্বাভাস দেয় যে একটি ডায়াবেটিক রোগী ৩০ দিনের মধ্যে হাসপাতালে পুনরায় ভর্তি হওয়ার ঝুঁকিতে রয়েছে, তাহলে এটি তার পূর্বাভাসের জন্য প্রাসঙ্গিক ডেটা প্রদান করতে সক্ষম হওয়া উচিত। এই ধরনের ডেটা সূচক স্বচ্ছতা নিয়ে আসে, যা চিকিৎসক বা হাসপাতালকে ভালোভাবে সিদ্ধান্ত নিতে সাহায্য করে। এছাড়াও, একটি নির্দিষ্ট রোগীর জন্য একটি মডেল কেন পূর্বাভাস দিয়েছে তা ব্যাখ্যা করতে সক্ষম হওয়া স্বাস্থ্য নিয়মাবলীর সঙ্গে দায়িত্বশীলতা নিশ্চিত করে। যখন আপনি মেশিন লার্নিং মডেল ব্যবহার করছেন যা মানুষের জীবনে প্রভাব ফেলে, তখন মডেলের আচরণ কী দ্বারা প্রভাবিত হয় তা বোঝা এবং ব্যাখ্যা করা অত্যন্ত গুরুত্বপূর্ণ। মডেল ব্যাখ্যাযোগ্যতা এবং ব্যাখ্যা করার ক্ষমতা নিম্নলিখিত পরিস্থিতিতে প্রশ্নের উত্তর দিতে সাহায্য করে: +![RAI ড্যাশবোর্ডের ফিচার ইম্পরটেন্স কম্পোনেন্ট](../../../../translated_images/bn/9-feature-importance.cd3193b4bba3fd4b.webp) -* মডেল ডিবাগিং: আমার মডেল কেন এই ভুল করেছে? আমি কীভাবে আমার মডেল উন্নত করতে পারি? -* মানব-AI সহযোগিতা: আমি কীভাবে মডেলের সিদ্ধান্ত বুঝতে এবং বিশ্বাস করতে পারি? -* নিয়ন্ত্রক সম্মতি: আমার মডেল কি আইনি প্রয়োজনীয়তা পূরণ করে? +* গ্লোবাল ব্যাখ্যাত্মকতা: উদাহরণস্বরূপ, কোন বৈশিষ্ট্য একটি ডায়াবেটিস হাসপাতালের পুনর্ভর্তি মডেলের সামগ্রিক আচরণে প্রভাব ফেলে? +* লোকাল ব্যাখ্যাত্মকতা: উদাহরণস্বরূপ, কেন এক রোগী, যাঁর বয়স ৬০ এর বেশি এবং আগের ভর্তি ইতিহাস আছে, তাকে পূর্বাভাস দেওয়া হয় যে সে ৩০ দিনের মধ্যে পুনরায় ভর্তি হবে বা হবে না? -RAI ড্যাশবোর্ডের ফিচার ইম্পরট্যান্স কম্পোনেন্ট আপনাকে ডিবাগ করতে এবং একটি মডেল কীভাবে পূর্বাভাস তৈরি করে তা ব্যাপকভাবে বুঝতে সাহায্য করে। এটি মেশিন লার্নিং পেশাদার এবং সিদ্ধান্ত গ্রহণকারীদের জন্য একটি দরকারী টুল, যা মডেলের আচরণ প্রভাবিতকারী বৈশিষ্ট্যগুলির প্রমাণ দেখাতে এবং নিয়ন্ত্রক সম্মতির জন্য ব্যাখ্যা করতে সাহায্য করে। ব্যবহারকারীরা বৈশ্বিক এবং স্থানীয় ব্যাখ্যা উভয়ই অন্বেষণ করতে পারেন, যা মডেলের পূর্বাভাস চালানোর বৈশিষ্ট্যগুলি যাচাই করতে সাহায্য করে। বৈশ্বিক ব্যাখ্যা মডেলের সামগ্রিক পূর্বাভাসকে প্রভাবিত করা শীর্ষ বৈশিষ্ট্যগুলির তালিকা দেয়। স্থানীয় ব্যাখ্যা দেখায় যে একটি নির্দিষ্ট ক্ষেত্রে মডেলের পূর্বাভাসের জন্য কোন বৈশিষ্ট্যগুলি ভূমিকা পালন করেছে। স্থানীয় ব্যাখ্যা মূল্যায়নের ক্ষমতা একটি নির্দিষ্ট ক্ষেত্রে ডিবাগিং বা অডিটিংয়ে সহায়ক, যাতে মডেল কেন সঠিক বা ভুল পূর্বাভাস দিয়েছে তা ভালোভাবে বোঝা এবং ব্যাখ্যা করা যায়। +মডেলের পারফরম্যান্স বিভিন্ন গোষ্ঠীতে বিশ্লেষণের সময়, ফিচার ইম্পরটেন্স দেখায় বৈশিষ্ট্যের প্রভাবের মাত্রা। এটি মডেলের ভুল পূর্বাভাসে বৈশিষ্ট্যের প্রভাবের পার্থক্য প্রকাশ করে। কম্পোনেন্টটি দেখাতে পারে কোন বৈশিষ্ট্যের কোন মান মডেলের ফলাফলে ইতিবাচক বা নেতিবাচক প্রভাব ফেলেছে। উদাহরণস্বরূপ, যদি মডেল ভুল পূর্বাভাস দেয়, এটি বিস্তারিত তথ্য দিয়ে বোঝায় কোন বৈশিষ্ট্য বা মান পূর্বাভাস চালায়। এই স্তরের তথ্য ডিবাগিং ছাড়াও স্বচ্ছতা এবং যাচাই প্রক্রিয়াতে দায়বদ্ধতা বাড়ায়। অবশেষে, এটি ন্যায়সঙ্গতার সমস্যা চিহ্নিত করতে সাহায্য করে। উদাহরণস্বরূপ, যদি এক সংবেদনশীল বৈশিষ্ট্য যেমন জাতিত্ব বা লিঙ্গ মডেলের পূর্বাভাসে অত্যন্ত প্রভাবশালী হয়, তবে এটি মডেলে জাতি বা লিঙ্গ পক্ষপাতের সংকেত হতে পারে। -![RAI ড্যাশবোর্ডের ফিচার ইম্পরট্যান্স কম্পোনেন্ট](../../../../9-Real-World/2-Debugging-ML-Models/images/9-feature-importance.png) +![ফিচার ইম্পরটেন্স](../../../../translated_images/bn/9-features-influence.3ead3d3f68a84029.webp) -* বৈশ্বিক ব্যাখ্যা: উদাহরণস্বরূপ, ডায়াবেটিস হাসপাতাল পুনরায় ভর্তি মডেলের সামগ্রিক আচরণে কোন বৈশিষ্ট্যগুলি প্রভাব ফেলে? -* স্থানীয় ব্যাখ্যা: উদাহরণস্বরূপ, কেন ৬০ বছরের বেশি বয়সী এবং পূর্ববর্তী হাসপাতালে ভর্তি থাকা একজন ডায়াবেটিক রোগীকে ৩০ দিনের মধ্যে পুনরায় ভর্তি বা পুনরায় ভর্তি না হওয়ার -- **অতিরিক্ত বা কম প্রতিনিধিত্ব**। ধারণাটি হলো একটি নির্দিষ্ট গোষ্ঠীকে একটি নির্দিষ্ট পেশায় দেখা যায় না, এবং যে কোনো সেবা বা কার্যক্রম যা এটি প্রচার করে তা ক্ষতির কারণ হতে পারে। +ব্যাখ্যাত্মকতা ব্যবহার করুন যখন আপনাকে: -### 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 দ্বারা +এই বিষয়গুলো আরও গভীরভাবে জানতে নিম্নলিখিত কর্মশালাটি দেখুন: -[![দায়িত্বশীল AI ড্যাশবোর্ড: বাস্তবে RAI পরিচালনার জন্য একক প্ল্যাটফর্ম](https://img.youtube.com/vi/f1oaDNl3djg/0.jpg)](https://www.youtube.com/watch?v=f1oaDNl3djg "দায়িত্বশীল AI ড্যাশবোর্ড: বাস্তবে RAI পরিচালনার জন্য একক প্ল্যাটফর্ম") +- দায়িত্বশীল AI ড্যাশবোর্ড: বাস্তবায়নে রাই-কে একত্রে সজ্জিত করার জন্য একটি এক-স্টপ শপ, বেসমিরা নুশি ও মেহরনূশ সামেকির দ্বারা +[![দায়িত্বশীল AI ড্যাশবোর্ড: বাস্তবায়নে রাই-কে একত্রে সজ্জিত করার জন্য একটি এক-স্টপ শপ](https://img.youtube.com/vi/f1oaDNl3djg/0.jpg)](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 - -![Shrnutí odpovědné AI ve strojovém učení ve sketchnote](../../../../sketchnotes/ml-fairness.png) -> 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í + +![Shrnutí odpovědné AI ve strojovém učení v náčrtu](../../../../translated_images/cs/ml-fairness.ef296ebec6afc98a.webp) +> 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) [![Přístup Microsoftu k odpovědné AI](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](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](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) +![překlad do turečtiny](../../../../translated_images/cs/gender-bias-translate-en-tr.f185fd8822c2d437.webp) > překlad do turečtiny -![překlad zpět do angličtiny](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) +![překlad zpět do angličtiny](../../../../translated_images/cs/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) > 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. +[![Přední výzkumník AI varuje před masovým sledováním pomocí rozpoznávání obličejů](../../../../translated_images/cs/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Přístup Microsoftu k odpovědné AI") -[![Přední výzkumník AI varuje před masovým sledováním prostřednictvím rozpoznávání obličeje](../../../../1-Introduction/3-fairness/images/accountability.png)](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 -[![Responsible AI Toolbox: Open-source rámec pro budování odpovědné AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: Open-source rámec pro budování odpovědné AI") +[![Responsible AI Toolbox: An open-source framework for building responsible AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") -> 🎥 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 -![Shrnutí regresí ve sketchnote](../../../../sketchnotes/ml-regression.png) +![Shrnutí regresí ve sketchnote](../../../../translated_images/cs/ml-regression.4e4f70e3b3ed446e.webp) > 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 -[![ML pro začátečníky - Nastavte si nástroje pro vytváření modelů strojového učení](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML pro začátečníky - Nastavte si nástroje pro vytváření modelů strojového učení") +[![ML pro začátečníky - Připravte své nástroje pro tvorbu modelů strojového učení](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](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) > > [![Nastavení Pythonu ve Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](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. -[![ML pro začátečníky - Nastavení Jupyter Notebooků pro začátek práce s regresními modely](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML pro začátečníky - Nastavení Jupyter Notebooků pro začátek práce s regresními modely") +[![ML pro začátečníky - Nastavte Jupyter Notebooky pro začátek tvorby regresních modelů](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](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 ``` -![VS Code s otevřeným notebookem](../../../../2-Regression/1-Tools/images/notebook.jpg) +![VS Code s otevřeným notebookem](../../../../translated_images/cs/notebook.4a3ee31f396b8832.webp) -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. + [![ML pro začátečníky - Váš první projekt lineární regrese v Pythonu](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](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() ``` - ![scatterplot zobrazující datové body kolem diabetu](../../../../2-Regression/1-Tools/images/scatterplot.png) -✅ 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. + ![rozptylový graf ukazující datové body o diabetu](../../../../translated_images/cs/scatterplot.ad8b356bcbb33be6.webp) + + + ✅ 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 vizualizace dat](../../../../2-Regression/2-Data/images/data-visualization.png) +![Infografika vizualizace dat](../../../../translated_images/cs/data-visualization.54e56dded7c1a804.webp) 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. -[![ML pro začátečníky - Jak analyzovat a čistit dataset](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML pro začátečníky - Jak analyzovat a čistit dataset") +[![ML pro začátečníky - Jak analyzovat a čistit datovou sadu](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](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é. -[![ML pro začátečníky - Jak vizualizovat data pomocí Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML pro začátečníky - Jak vizualizovat data pomocí Matplotlib") +[![ML pro začátečníky - Jak vizualizovat data s Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](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() ``` - ![Scatterplot ukazující vztah mezi cenou a měsícem](../../../../2-Regression/2-Data/images/scatterplot.png) + ![Rozptylový graf zobrazující vztah ceny k měsíci](../../../../translated_images/cs/scatterplot.b6868f44cbd2051c.webp) - 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") ``` - ![Sloupcový graf ukazující vztah mezi cenou a měsícem](../../../../2-Regression/2-Data/images/barchart.png) + ![Sloupcový graf zobrazující vztah ceny k měsíci](../../../../translated_images/cs/barchart.a833ea9194346d76.webp) + + 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) + ``` + + ![Rozptylový graf Seaborn zobrazující vztah ceny k měsíci](../../../../translated_images/cs/relplot.a03837d8f0329cec.webp) + + 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) + ``` + + ![Čárový graf Seaborn zobrazující vztah ceny k měsíci](../../../../translated_images/cs/lineplot.f9034ba47b1e30ee.webp) + + 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") + ``` + + ![Sloupcový graf v Seabornu zobrazující rozložení cen podle měsíců](../../../../translated_images/cs/catplot.e73fc35fdf96242b.webp) + + 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") + ``` + + ![Tepelná mapa v Seabornu zobrazující korelace mezi číselnými sloupci](../../../../translated_images/cs/heatmap.bd98dce43b404c57.webp) + + 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í -![Shrnutí posilovaného učení v oblasti strojového učení ve sketchnote](../../../../sketchnotes/ml-reinforcement.png) +![Shrnutí posilování v strojovém učení ve sketchnote](../../../../translated_images/cs/ml-reinforcement.94024374d63348db.webp) > 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ů. [![Úvod do posilovaného učení](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](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: -![Petrovo prostředí](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![Petrovo prostředí](../../../../translated_images/cs/environment.40ba3cb66256c93f.webp) -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: ![Petrova náhodná chůze](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) ## 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)`. -![Petrovo prostředí](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![Petrovo prostředí](../../../../translated_images/cs/env_init.04e8f26d2d60089e.webp) -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) -> ![Gif o nástrojích odpovědné AI](../../../../9-Real-World/2-Debugging-ML-Models/images/rai-overview.gif) +> ![Gif o nástrojích Responsible AI](../../../../9-Real-World/2-Debugging-ML-Models/images/rai-overview.gif) ## 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. -![Analyzujte a laděte chyby modelu](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-error-distribution.png) +![Analýza a ladění modelových chyb](../../../../translated_images/cs/ea-error-distribution.117452e1177c1dd8.webp) -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é. -![Analýza chyb](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-error-cohort.png) +![Analýza chyb](../../../../translated_images/cs/ea-error-cohort.6886209ea5d438c4.webp) -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. -![Heatmapa analýzy chyb](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-heatmap.png) +![Tepelná mapa analýzy chyb](../../../../translated_images/cs/ea-heatmap.8d27185e28cee383.webp) 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. -![Datové kohorty - přehled modelu na RAI dashboardu](../../../../9-Real-World/2-Debugging-ML-Models/images/model-overview-dataset-cohorts.png) +![Datové kohorty - přehled modelu v panelu RAI](../../../../translated_images/cs/model-overview-dataset-cohorts.dfa463fb527a35a0.webp) -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. -![Kohorty vlastností - přehled modelu na RAI dashboardu](../../../../9-Real-World/2-Debugging-ML-Models/images/model-overview-feature-cohorts.png) +![Funkční kohorty - přehled modelu v panelu RAI](../../../../translated_images/cs/model-overview-feature-cohorts.c5104d575ffd0c80.webp) 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ý. +![Komponenta Analýza dat na panelu RAI](../../../../translated_images/cs/dataanalysis-cover.8d6d0683a70a5c1e.webp) -![Komponenta Analýza dat na RAI dashboardu](../../../../9-Real-World/2-Debugging-ML-Models/images/dataanalysis-cover.png) 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ěď. -![Komponenta Důležitost vlastností na RAI dashboardu](../../../../9-Real-World/2-Debugging-ML-Models/images/9-feature-importance.png) +![Komponenta Důležitost funkcí panelu RAI](../../../../translated_images/cs/9-feature-importance.cd3193b4bba3fd4b.webp) -* 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 +![Důležitost funkcí](../../../../translated_images/cs/9-features-influence.3ead3d3f68a84029.webp) -[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: -[![Responsible AI Dashboard: Jednotné místo pro operacionalizaci RAI v praxi](https://img.youtube.com/vi/f1oaDNl3djg/0.jpg)](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 +[![Responsible AI Dashboard: One-stop shop for operationalizing RAI in practice](https://img.youtube.com/vi/f1oaDNl3djg/0.jpg)](https://www.youtube.com/watch?v=f1oaDNl3djg "Responsible AI Dashboard: One-stop shop for operationalizing RAI in practice") -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 - -![Oversigt over ansvarlig AI i maskinlæring i en sketchnote](../../../../sketchnotes/ml-fairness.png) -> 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 + +![Oversigt over ansvarlig AI i Maskinlæring i en skitsetegning](../../../../translated_images/da/ml-fairness.ef296ebec6afc98a.webp) +> 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) [![Microsofts tilgang til ansvarlig AI](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](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](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) +![oversættelse til tyrkisk](../../../../translated_images/da/gender-bias-translate-en-tr.f185fd8822c2d437.webp) > oversættelse til tyrkisk -![oversættelse tilbage til engelsk](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) +![oversættelse tilbage til engelsk](../../../../translated_images/da/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) > 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. +[![Ledende AI-forsker advarer om masseovervågning via ansigtsgenkendelse](../../../../translated_images/da/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsofts tilgang til ansvarlig AI") -[![Ledende AI-forsker advarer om masseovervågning gennem ansigtsgenkendelse](../../../../1-Introduction/3-fairness/images/accountability.png)](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 -[![Responsible AI Toolbox: En open-source ramme for at bygge ansvarlig AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: En open-source ramme for at bygge ansvarlig AI") +[![Responsible AI Toolbox: An open-source framework for building responsible AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") -> 🎥 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 -![Oversigt over regressioner i en sketchnote](../../../../sketchnotes/ml-regression.png) +![Oversigt over regressioner i en sketchnote](../../../../translated_images/da/ml-regression.4e4f70e3b3ed446e.webp) > 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 -[![ML for begyndere - Konfigurer dine værktøjer til at bygge Machine Learning-modeller](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML for begyndere - Konfigurer dine værktøjer til at bygge Machine Learning-modeller") +[![ML for begyndere - Opsæt dine værktøjer klar til at bygge maskinlæringsmodeller](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](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) > > [![Opsæt Python med Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](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. -[![ML for begyndere - Opsæt Jupyter Notebooks for at begynde at bygge regressionsmodeller](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML for begyndere - Opsæt Jupyter Notebooks for at begynde at bygge regressionsmodeller") +[![ML for begyndere - Opsæt Jupyter Notebooks for at starte med at bygge regressionsmodeller](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](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 ``` -![VS Code med en notebook åben](../../../../2-Regression/1-Tools/images/notebook.jpg) +![VS Code med en åben notebook](../../../../translated_images/da/notebook.4a3ee31f396b8832.webp) -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. -[![ML for begyndere - Dit første projekt med lineær regression i Python](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](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. +[![ML for begyndere - Dit første lineære regressionsprojekt i Python](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](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() ``` - ![et scatterplot, der viser datapunkter omkring diabetes](../../../../2-Regression/1-Tools/images/scatterplot.png) -✅ 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. + ![et scatterplot, der viser datapunkter omkring diabetes](../../../../translated_images/da/scatterplot.ad8b356bcbb33be6.webp) + + + ✅ 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 -![Data visualisering infographic](../../../../2-Regression/2-Data/images/data-visualization.png) +![Data visualiseringsinfografik](../../../../translated_images/da/data-visualization.54e56dded7c1a804.webp) -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. -[![ML for begyndere - Hvordan analyserer og renser man et datasæt](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML for begyndere - Hvordan analyserer og renser man et datasæt") +[![ML for begyndere - Hvordan man analyserer og rengør et datasæt](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](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. -[![ML for begyndere - Hvordan visualiserer man data med Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML for begyndere - Hvordan visualiserer man data med Matplotlib") +[![ML for begyndere - Hvordan man visualiserer data med Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](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() ``` - ![Et scatterplot, der viser forholdet mellem pris og måned](../../../../2-Regression/2-Data/images/scatterplot.png) + ![Et scatterplot der viser forholdet pris til måned](../../../../translated_images/da/scatterplot.b6868f44cbd2051c.webp) 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") ``` - ![Et søjlediagram, der viser forholdet mellem pris og måned](../../../../2-Regression/2-Data/images/barchart.png) + ![Et søjlediagram der viser forholdet pris til måned](../../../../translated_images/da/barchart.a833ea9194346d76.webp) + + 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) + ``` + + ![Et Seaborn scatterplot der viser pris til måned forhold](../../../../translated_images/da/relplot.a03837d8f0329cec.webp) + + 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) + ``` + + ![Et Seaborn linjediagram der viser pris til måned forhold](../../../../translated_images/da/lineplot.f9034ba47b1e30ee.webp) + + 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") + ``` + + ![Et Seaborn søjlediagram, der viser prisfordelingen pr. måned](../../../../translated_images/da/catplot.e73fc35fdf96242b.webp) + + 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") + ``` + + ![Et Seaborn heatmap, der viser korrelationer mellem de numeriske kolonner](../../../../translated_images/da/heatmap.bd98dce43b404c57.webp) + + 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 -![Oversigt over forstærkning i maskinlæring i en sketchnote](../../../../sketchnotes/ml-reinforcement.png) +![Oversigt over forstærkning i maskinlæring i en sketchnote](../../../../translated_images/da/ml-reinforcement.94024374d63348db.webp) > 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. -[![Introduktion til Forstærkningslæring](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) +[![Intro til Forstærkningslæring](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](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: -![Peters Miljø](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![Peters Miljø](../../../../translated_images/da/environment.40ba3cb66256c93f.webp) -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: ![Peters Tilfældige Gang](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) ## 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)`. -![Peters Miljø](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![Peters Miljø](../../../../translated_images/da/env_init.04e8f26d2d60089e.webp) -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 - -![Zusammenfassung von verantwortungsbewusster KI im Machine Learning in einer Sketchnote](../../../../sketchnotes/ml-fairness.png) +# Aufbau von Machine Learning-Lösungen mit verantwortungsvoller KI + +![Zusammenfassung von verantwortungsvoller KI im Machine Learning in einer Sketchnote](../../../../translated_images/de/ml-fairness.ef296ebec6afc98a.webp) > 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. -[![Microsofts Ansatz für verantwortungsbewusste KI](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsofts Ansatz für verantwortungsbewusste KI") +[![Microsofts Ansatz für verantwortungsvolle KI](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](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](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) +![Übersetzung ins Türkische](../../../../translated_images/de/gender-bias-translate-en-tr.f185fd8822c2d437.webp) > Übersetzung ins Türkische -![Übersetzung zurück ins Englische](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) -> Übersetzung zurück ins Englische +![Rückübersetzung ins Englische](../../../../translated_images/de/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) +> 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. - -[![Führender KI-Forscher warnt vor Massenüberwachung durch Gesichtserkennung](../../../../1-Introduction/3-fairness/images/accountability.png)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsofts Ansatz für verantwortungsbewusste KI") +[![Führender KI-Forscher warnt vor Massenüberwachung durch Gesichtserkennung](../../../../translated_images/de/accountability.41d8c0f4b85b6231.webp)](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 [![Responsible AI Toolbox: Ein Open-Source-Framework für den Aufbau verantwortungsvoller KI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](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 -![Zusammenfassung von Regressionen in einer Sketchnote](../../../../sketchnotes/ml-regression.png) +![Zusammenfassung von Regressionen in einer Sketchnote](../../../../translated_images/de/ml-regression.4e4f70e3b3ed446e.webp) > 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 -[![ML für Anfänger - Richten Sie Ihre Tools ein, um Machine-Learning-Modelle zu erstellen](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML für Anfänger - Richten Sie Ihre Tools ein, um Machine-Learning-Modelle zu erstellen") +[![ML für Anfänger - Richte deine Werkzeuge ein, um Machine-Learning-Modelle zu erstellen](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](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. - > - > [![Python mit Visual Studio Code einrichten](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](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. +> +> [![Setup Python mit Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](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. -[![ML für Anfänger - Jupyter-Notebooks einrichten, um Regressionsmodelle zu erstellen](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML für Anfänger - Jupyter-Notebooks einrichten, um Regressionsmodelle zu erstellen") +[![ML für Anfänger - Richte Jupyter Notebooks ein, um Regressionsmodelle zu erstellen](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](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 ``` -![VS Code mit einem geöffneten Notebook](../../../../2-Regression/1-Tools/images/notebook.jpg) +![VS Code mit geöffnetem Notebook](../../../../translated_images/de/notebook.4a3ee31f396b8832.webp) -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. -[![ML für Anfänger - Ihr erstes lineares Regressionsprojekt in Python](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](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. +[![ML für Anfänger - Dein erstes lineares Regressionsprojekt in Python](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](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() ``` - ![Ein Streudiagramm, das Datenpunkte zu Diabetes zeigt](../../../../2-Regression/1-Tools/images/scatterplot.png) -✅ Ü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. +![Ein Streudiagramm mit Datenpunkten rund um Diabetes](../../../../translated_images/de/scatterplot.ad8b356bcbb33be6.webp) -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 zur Datenvisualisierung](../../../../2-Regression/2-Data/images/data-visualization.png) +![Datenvisualisierungs-Infografik](../../../../translated_images/de/data-visualization.54e56dded7c1a804.webp) 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. [![ML für Anfänger - Wie man einen Datensatz analysiert und bereinigt](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](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. [![ML für Anfänger - Wie man Daten mit Matplotlib visualisiert](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](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() ``` - ![Ein Streudiagramm, das die Beziehung zwischen Preis und Monat zeigt](../../../../2-Regression/2-Data/images/scatterplot.png) + ![Ein Streudiagramm zeigt die Beziehung zwischen Preis und Monat](../../../../translated_images/de/scatterplot.b6868f44cbd2051c.webp) - 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") ``` - ![Ein Balkendiagramm, das die Beziehung zwischen Preis und Monat zeigt](../../../../2-Regression/2-Data/images/barchart.png) + ![Ein Balkendiagramm zeigt die Beziehung zwischen Preis und Monat](../../../../translated_images/de/barchart.a833ea9194346d76.webp) + + 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) + ``` + + ![Ein Seaborn-Streudiagramm zeigt die Beziehung zwischen Preis und Monat](../../../../translated_images/de/relplot.a03837d8f0329cec.webp) + + 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) + ``` + + ![Ein Seaborn-Liniendiagramm zeigt die Beziehung zwischen Preis und Monat](../../../../translated_images/de/lineplot.f9034ba47b1e30ee.webp) + + 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") + ``` + + ![Ein Seaborn-Balkendiagramm, das die Preisverteilung pro Monat zeigt](../../../../translated_images/de/catplot.e73fc35fdf96242b.webp) + + 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") + ``` + + ![Eine Seaborn-Heatmap, die Korrelationen zwischen den numerischen Spalten zeigt](../../../../translated_images/de/heatmap.bd98dce43b404c57.webp) + + 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 -![Zusammenfassung von Reinforcement Learning in einer Sketchnote](../../../../sketchnotes/ml-reinforcement.png) +![Zusammenfassung der Verstärkung im maschinellen Lernen in einem Sketchnote](../../../../translated_images/de/ml-reinforcement.94024374d63348db.webp) > 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. [![Einführung in Reinforcement Learning](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](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: -![Peters Umgebung](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![Peters Umgebung](../../../../translated_images/de/environment.40ba3cb66256c93f.webp) 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: - ![Peters Random Walk](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) + ![Peters zufälliger Spaziergang](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) ## 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)`. -![Peters Umgebung](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![Peters Umgebung](../../../../translated_images/de/env_init.04e8f26d2d60089e.webp) -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. + +![Die große Flucht!](../../../../translated_images/de/escape.18862db9930337e3.webp) + +> 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. + +ein Cartpole + ## 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: - ![nicht balancierendes CartPole](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) + ![nicht balancierender Cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) -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) ``` -![roher Fortschritt](../../../../8-Reinforcement/2-Gym/images/train_progress_raw.png) +![roher Fortschritt](../../../../translated_images/de/train_progress_raw.2adfdf2daea09c59.webp) -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)) ``` -![Trainingsfortschritt](../../../../8-Reinforcement/2-Gym/images/train_progress_runav.png) +![Trainingsfortschritt](../../../../translated_images/de/train_progress_runav.c71694a8fa9ab359.webp) -## 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: ![ein balancierender Cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) @@ -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 @@ # Ιστορία της μηχανικής μάθησης -![Περίληψη της Ιστορίας της μηχανικής μάθησης σε ένα σκίτσο](../../../../sketchnotes/ml-history.png) -> Σκίτσο από την [Tomomi Imura](https://www.twitter.com/girlie_mac) +![Περίληψη της Ιστορίας της μηχανικής μάθησης σε ένα σκίτσο](../../../../translated_images/el/ml-history.a1bdfd4ce1f464d9.webp) +> Σκίτσο από τη [Tomomi Imura](https://www.twitter.com/girlie_mac) ## [Προ-μάθημα κουίζ](https://ff-quizzes.netlify.app/en/ml/) --- -[![ML για αρχάριους - Ιστορία της Μηχανικής Μάθησης](https://img.youtube.com/vi/N6wxM4wZ7V0/0.jpg)](https://youtu.be/N6wxM4wZ7V0 "ML για αρχάριους - Ιστορία της Μηχανικής Μάθησης") +[![ML για αρχάριους - Ιστορία της μηχανικής μάθησης](https://img.youtube.com/vi/N6wxM4wZ7V0/0.jpg)](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, ένα ευφυές ρομπότ](../../../../1-Introduction/2-history-of-ML/images/shakey.jpg) + ![Shakey, ένα έξυπνο ρομπότ](../../../../translated_images/el/shakey.4dc17819c447c05b.webp) > Shakey το 1972 --- -* Η Eliza, ένα πρώιμο 'chatterbot', μπορούσε να συνομιλεί με ανθρώπους και να λειτουργεί ως πρωτόγονος 'θεραπευτής'. Θα μάθετε περισσότερα για την Eliza στα μαθήματα NLP. +* Η Eliza, ένας πρώιμος 'chatbot', μπορούσε να συνομιλήσει με ανθρώπους και να λειτουργεί ως πρωτόγονος 'θεραπευτής'. Θα μάθετε περισσότερα για την Eliza στα μαθήματα NLP. - ![Eliza, ένα bot](../../../../1-Introduction/2-history-of-ML/images/eliza.png) + ![Eliza, ένα bot](../../../../translated_images/el/eliza.84397454cda9559b.webp) > Μια έκδοση της Eliza, ενός chatbot --- -* Ο "κόσμος των μπλοκ" ήταν ένα παράδειγμα μικρόκοσμου όπου τα μπλοκ μπορούσαν να στοιβάζονται και να ταξινομούνται, και τα πειράματα για τη διδασκαλία μηχανών να λαμβάνουν αποφάσεις μπορούσαν να δοκιμαστούν. Οι εξελίξεις που κατασκευάστηκαν με βιβλιοθήκες όπως το [SHRDLU](https://wikipedia.org/wiki/SHRDLU) βοήθησαν να προωθηθεί η επεξεργασία γλώσσας. +* Το "Blocks world" ήταν ένα παράδειγμα μικρο-κόσμου όπου τα μπλοκ μπορούσαν να στοιβάζονται και να ταξινομούνται, και γίνονταν πειράματα στη διδασκαλία μηχανών να παίρνουν αποφάσεις. Οι εξελίξεις κατασκευασμένες με βιβλιοθήκες όπως η [SHRDLU](https://wikipedia.org/wiki/SHRDLU) βοήθησαν να προωθηθεί η επεξεργασία γλώσσας. - [![κόσμος των μπλοκ με το SHRDLU](https://img.youtube.com/vi/QAJz4YKUwqw/0.jpg)](https://www.youtube.com/watch?v=QAJz4YKUwqw "κόσμος των μπλοκ με το SHRDLU") + [![blocks world with SHRDLU](https://img.youtube.com/vi/QAJz4YKUwqw/0.jpg)](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://img.youtube.com/vi/mTtDfKgLm54/0 +[![Η ιστορία του βαθιού μάθησης](https://img.youtube.com/vi/mTtDfKgLm54/0.jpg)](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) + +[![Η ιστορία της ΤΝ από την Amy Boyd](https://img.youtube.com/vi/EJt3_bFYKss/0.jpg)](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 @@ -# Δημιουργία λύσεων Μηχανικής Μάθησης με υπεύθυνη Τεχνητή Νοημοσύνη - -![Περίληψη της υπεύθυνης Τεχνητής Νοημοσύνης στη Μηχανική Μάθηση σε ένα σκίτσο](../../../../sketchnotes/ml-fairness.png) -> Σκίτσο από την [Tomomi Imura](https://www.twitter.com/girlie_mac) - -## [Προ-μάθημα κουίζ](https://ff-quizzes.netlify.app/en/ml/) +# Κατασκευή λύσεων Μηχανικής Μάθησης με υπεύθυνη AI + +![Περίληψη της υπεύθυνης AI στη Μηχανική Μάθηση σε σκέτχνόουτ](../../../../translated_images/el/ml-fairness.ef296ebec6afc98a.webp) +> Σκέτχνόουτ από την [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) -[![Η προσέγγιση της Microsoft για την Υπεύθυνη Τεχνητή Νοημοσύνη](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Η προσέγγιση της Microsoft για την Υπεύθυνη Τεχνητή Νοημοσύνη") +[![Η προσέγγιση της Microsoft για την Υπεύθυνη AI](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](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) +- **Κακολογίας**. Να επικρίνετε άδικα και να χαρακτηρίζετε κάτι ή κάποιον. Για παράδειγμα, μια τεχνολογία σήμανσης εικόνων εσφαλμένα χαρακτήρισε εικόνες σκοτεινόχρωμων ανθρώπων ως γορίλλες. +- **Υπερεκπροσώπηση ή υποεκπροσώπηση**. Η ιδέα είναι ότι μια συγκεκριμένη ομάδα δεν εμφανίζεται σε ένα συγκεκριμένο επάγγελμα, και οποιαδήποτε υπηρεσία ή λειτουργία που το προωθεί συνεχώς συμβάλλει σε βλάβη. +- **Στερεοτυπία**. Συσχέτιση μιας δεδομένης ομάδας με προ-ανατεθειμένα χαρακτηριστικά. Για παράδειγμα, ένα σύστημα μετάφρασης γλώσσας μεταξύ Αγγλικών και Τουρκικών μπορεί να έχει ανακρίβειες λόγω λέξεων με στερεοτυπικές συσχετίσεις με το φύλο. -![μετάφραση στα Τουρκικά](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) +![μετάφραση στα Τουρκικά](../../../../translated_images/el/gender-bias-translate-en-tr.f185fd8822c2d437.webp) > μετάφραση στα Τουρκικά -![μετάφραση πίσω στα Αγγλικά](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) +![μετάφραση πίσω στα Αγγλικά](../../../../translated_images/el/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) > μετάφραση πίσω στα Αγγλικά -Όταν σχεδιάζουμε και δοκιμάζουμε συστήματα Τεχνητής Νοημοσύνης, πρέπει να διασφαλίσουμε ότι η Τεχνητή Νοημοσύνη είναι δίκαιη και δεν προγραμματίζεται να λαμβάνει προκατειλημμένες ή διακριτικές αποφάσεις, τις οποίες απαγορεύεται να λαμβάνουν και οι άνθρωποι. Η διασφάλιση της δικαιοσύνης στην Τεχνητή Νοημοσύνη και τη μηχανική μάθηση παραμένει μια σύνθετη κοινωνικοτεχνική πρόκληση. +Κατά το σχεδιασμό και τη δοκιμή συστημάτων 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 επηρεάζει τα άτομα ή την κοινωνία. + +[![Επικεφαλής ερευνητής AI προειδοποιεί για μαζική παρακολούθηση μέσω αναγνώρισης προσώπου](../../../../translated_images/el/accountability.41d8c0f4b85b6231.webp)](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 -[![Responsible AI Toolbox: Ένα ανοιχτού κώδικα πλαίσιο για την ανάπτυξη υπεύθυνης AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: Ένα ανοιχτού κώδικα πλαίσιο για την ανάπτυξη υπεύθυνης AI") +[![Responsible AI Toolbox: An open-source framework for building responsible AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") -> 🎥 Κάντε κλικ στην εικόνα παραπάνω για το βίντεο: 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 για μοντέλα παλινδρόμησης -![Περίληψη παλινδρομήσεων σε ένα σκίτσο](../../../../sketchnotes/ml-regression.png) +![Περίληψη παλινδρομήσεων σε ένα sketchnote](../../../../translated_images/el/ml-regression.4e4f70e3b3ed446e.webp) -> Σκίτσο από [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, συμπεριλαμβανομένης της εγκατάστασης. +- Εξερευνάτε τη γραμμική παλινδρόμηση με μια πρακτική άσκηση. ## Εγκαταστάσεις και ρυθμίσεις -[![ML για αρχάριους - Ρυθμίστε τα εργαλεία σας για να δημιουργήσετε μοντέλα μηχανικής μάθησης](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML για αρχάριους - Ρυθμίστε τα εργαλεία σας για να δημιουργήσετε μοντέλα μηχανικής μάθησης") +[![ML για αρχάριους - Ρύθμισε τα εργαλεία σου για την κατασκευή μοντέλων Μηχανικής Μάθησης](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](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) > > [![Ρύθμιση Python με Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](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 είναι ένα διαδραστικό περιβάλλον που επιτρέπει στον προγραμματιστή να γράφει κώδικα και να προσθέτει σημειώσεις και τεκμηρίωση γύρω από τον κώδικα, κάτι που είναι πολύ χρήσιμο για πειραματικά ή ερευνητικά έργα. -[![ML για αρχάριους - Ρύθμιση Jupyter Notebooks για να ξεκινήσετε τη δημιουργία μοντέλων παλινδρόμησης](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML για αρχάριους - Ρύθμιση Jupyter Notebooks για να ξεκινήσετε τη δημιουργία μοντέλων παλινδρόμησης") +[![ML για αρχάριους - Ρύθμισε τα Jupyter Notebooks για να ξεκινήσεις την κατασκευή μοντέλων παλινδρόμησης](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](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 ``` -![VS Code με ανοιχτό notebook](../../../../2-Regression/1-Tools/images/notebook.jpg) +![VS Code με ανοιχτό notebook](../../../../translated_images/el/notebook.4a3ee31f396b8832.webp) -Μπορείτε να ενσωματώσετε τον κώδικα σας με σχόλια για να τεκμηριώσετε το 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. -[![ML για αρχάριους - Το πρώτο σας έργο γραμμικής παλινδρόμησης σε Python](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "ML για αρχάριους - Το πρώτο σας έργο γραμμικής παλινδρόμησης σε Python") -> 🎥 Κάντε κλικ στην εικόνα παραπάνω για ένα σύντομο βίντεο σχετικά με αυτήν την άσκηση. +[![ML για αρχάριους - Το πρώτο σου έργο γραμμικής παλινδρόμησης σε Python](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](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() + ``` + + ![ένα διάγραμμα διασποράς που δείχνει σημεία δεδομένων σχετικά με τον διαβήτη](../../../../translated_images/el/scatterplot.ad8b356bcbb33be6.webp) + -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 @@ -# Λογιστική παλινδρόμηση για πρόβλεψη κατηγοριών +# Λογιστική παλινδρόμηση για την πρόβλεψη κατηγοριών -![Εικόνα σύγκρισης λογιστικής και γραμμικής παλινδρόμησης](../../../../2-Regression/4-Logistic/images/linear-vs-logistic.png) +![Λογιστική έναντι γραμμικής παλινδρόμησης infographic](../../../../translated_images/el/linear-vs-logistic.ba180bf95e7ee667.webp) -## [Προ-μάθημα κουίζ](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, ούτως ή άλλως. -> 🎃 Διασκεδαστικό γεγονός: Μερικές φορές αποκαλούμε τις λευκές κολοκύθες 'κολοκύθες-φαντάσματα'. Δεν είναι πολύ εύκολο να τις σκαλίσουμε, οπότε δεν είναι τόσο δημοφιλείς όσο οι πορτοκαλί, αλλά είναι εντυπωσιακές! Έτσι, θα μπορούσαμε επίσης να διατυπώσουμε την ερώτηση ως: 'Φάντασμα' ή 'Όχι Φάντασμα'. 👻 +> 🎃 Διασκεδαστικό γεγονός, μερικές φορές αποκαλούμε τις λευκές κολοκύθες 'φαντάσματα'. Δεν είναι πολύ εύκολο να τις χαράξεις, γι' αυτό δεν είναι τόσο δημοφιλείς όσο οι πορτοκαλί, αλλά έχουν ωραία εμφάνιση! Μπορούμε επίσης να αναδιατυπώσουμε την ερώτηση ως: 'Φάντασμα' ή 'Όχι Φάντασμα'. 👻 ## Σχετικά με τη λογιστική παλινδρόμηση -Η λογιστική παλινδρόμηση διαφέρει από τη γραμμική παλινδρόμηση, την οποία μάθατε προηγουμένως, σε μερικούς σημαντικούς τρόπους. +Η λογιστική παλινδρόμηση διαφέρει από τη γραμμική παλινδρόμηση, που μάθατε προηγουμένως, σε κάποιους σημαντικούς τρόπους. -[![ML για αρχάριους - Κατανόηση της Λογιστικής Παλινδρόμησης για Ταξινόμηση Δεδομένων](https://img.youtube.com/vi/KpeCT6nEpBY/0.jpg)](https://youtu.be/KpeCT6nEpBY "ML για αρχάριους - Κατανόηση της Λογιστικής Παλινδρόμησης για Ταξινόμηση Δεδομένων") +[![Μηχανική Μάθηση για αρχάριους - Κατανόηση της λογιστικής παλινδρόμησης για ταξινόμηση μηχανικής μάθησης](https://img.youtube.com/vi/KpeCT6nEpBY/0.jpg)](https://youtu.be/KpeCT6nEpBY "Μηχανική Μάθηση για αρχάριους - Κατανόηση της λογιστικής παλινδρόμησης για ταξινόμηση μηχανικής μάθησης") -> 🎥 Κάντε κλικ στην εικόνα παραπάνω για μια σύντομη επισκόπηση της λογιστικής παλινδρόμησης. +> 🎥 Κάντε κλικ στην εικόνα παραπάνω για μια σύντομη επισκόπηση βίντεο της λογιστικής παλινδρόμησης. ### Δυαδική ταξινόμηση -Η λογιστική παλινδρόμηση δεν προσφέρει τις ίδιες δυνατότητες με τη γραμμική παλινδρόμηση. Η πρώτη προσφέρει πρόβλεψη για μια δυαδική κατηγορία ("λευκό ή όχι λευκό"), ενώ η δεύτερη είναι ικανή να προβλέπει συνεχείς τιμές, για παράδειγμα, δεδομένης της προέλευσης μιας κολοκύθας και του χρόνου συγκομιδής, _πόσο θα αυξηθεί η τιμή της_. +Η λογιστική παλινδρόμηση δεν προσφέρει τις ίδιες λειτουργίες όπως η γραμμική παλινδρόμηση. Η πρώτη δίνει πρόβλεψη για μια δυαδική κατηγορία ("λευκό ή όχι λευκό") ενώ η δεύτερη μπορεί να προβλέψει συνεχή τιμές, για παράδειγμα δεδομένης της προέλευσης μιας κολοκύθας και της εποχής συγκομιδής, _πόσο θα ανέβει η τιμή της_. -![Μοντέλο ταξινόμησης κολοκύθας](../../../../2-Regression/4-Logistic/images/pumpkin-classifier.png) -> Εικόνα από [Dasani Madipalli](https://twitter.com/dasani_decoded) +![Μοντέλο ταξινόμησης κολοκύθας](../../../../translated_images/el/pumpkin-classifier.562771f104ad5436.webp) +> Infographic από [Dasani Madipalli](https://twitter.com/dasani_decoded) ### Άλλες ταξινομήσεις -Υπάρχουν άλλοι τύποι λογιστικής παλινδρόμησης, όπως πολυωνυμική και διατακτική: +Υπάρχουν και άλλοι τύποι λογιστικής παλινδρόμησης, όπως η πολυωνυμική και η διατακτική: -- **Πολυωνυμική**, που περιλαμβάνει περισσότερες από μία κατηγορίες - "Πορτοκαλί, Λευκό και Ριγέ". -- **Διατακτική**, που περιλαμβάνει διατεταγμένες κατηγορίες, χρήσιμη αν θέλαμε να ταξινομήσουμε τα αποτελέσματά μας λογικά, όπως οι κολοκύθες μας που ταξινομούνται με βάση έναν πεπερασμένο αριθμό μεγεθών (mini, sm, med, lg, xl, xxl). +- **Πολυωνυμική**, που αφορά περισσότερες από μία κατηγορίες - "Πορτοκαλί, Λευκό, και Ριγέ". +- **Διατακτική**, που αφορά κατηγορίες με σειρά, χρήσιμη αν θέλαμε να ταξινομήσουμε τα αποτελέσματα λογικά, όπως οι κολοκύθες μας που ταξινομούνται σε πεπερασμένο αριθμό μεγεθών (μίνι, μικρή, μέση, μεγάλη, πολύ μεγάλη, τεράστια). -![Πολυωνυμική vs διατακτική παλινδρόμηση](../../../../2-Regression/4-Logistic/images/multinomial-vs-ordinal.png) +![Πολυωνυμική έναντι διατακτικής παλινδρόμησης](../../../../translated_images/el/multinomial-vs-ordinal.36701b4850e37d86.webp) ### Οι μεταβλητές ΔΕΝ χρειάζεται να συσχετίζονται -Θυμάστε πώς η γραμμική παλινδρόμηση λειτουργούσε καλύτερα με πιο συσχετισμένες μεταβλητές; Η λογιστική παλινδρόμηση είναι το αντίθετο - οι μεταβλητές δεν χρειάζεται να ευθυγραμμίζονται. Αυτό λειτουργεί για αυτά τα δεδομένα που έχουν σχετικά αδύναμες συσχετίσεις. +Θυμάστε πώς η γραμμική παλινδρόμηση λειτουργούσε καλύτερα με πιο συσχετισμένες μεταβλητές; Η λογιστική παλινδρόμηση είναι το αντίθετο - οι μεταβλητές δεν χρειάζεται να ευθυγραμμίζονται. Αυτό λειτουργεί για αυτά τα δεδομένα που έχουν κάπως αδύναμους συσχετισμούς. ### Χρειάζεστε πολλά καθαρά δεδομένα -Η λογιστική παλινδρόμηση θα δώσει πιο ακριβή αποτελέσματα αν χρησιμοποιήσετε περισσότερα δεδομένα. Το μικρό μας σύνολο δεδομένων δεν είναι ιδανικό για αυτήν την εργασία, οπότε λάβετε το υπόψη σας. +Η λογιστική παλινδρόμηση δίνει πιο ακριβή αποτελέσματα αν χρησιμοποιήσετε περισσότερα δεδομένα· το μικρό μας σύνολο δεδομένων δεν είναι ιδανικό για αυτήν την εργασία, οπότε να το έχετε υπόψη. -[![ML για αρχάριους - Ανάλυση και Προετοιμασία Δεδομένων για Λογιστική Παλινδρόμηση](https://img.youtube.com/vi/B2X4H9vcXTs/0.jpg)](https://youtu.be/B2X4H9vcXTs "ML για αρχάριους - Ανάλυση και Προετοιμασία Δεδομένων για Λογιστική Παλινδρόμηση") +[![Μηχανική Μάθηση για αρχάριους - Ανάλυση και προετοιμασία δεδομένων για λογιστική παλινδρόμηση](https://img.youtube.com/vi/B2X4H9vcXTs/0.jpg)](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 @@ ) ``` - ![Ένα πλέγμα οπτικοποιημένων δεδομένων](../../../../2-Regression/4-Logistic/images/pumpkins_catplot_1.png) + ![Ένα πλέγμα οπτικοποιημένων δεδομένων](../../../../translated_images/el/pumpkins_catplot_1.c55c409b71fea2ec.webp) - Παρατηρώντας τα δεδομένα, μπορείτε να δείτε πώς τα δεδομένα Χρώματος σχετίζονται με την Ποικιλία. + Παρατηρώντας τα δεδομένα, μπορείτε να δείτε πώς τα δεδομένα Χρώματος σχετίζονται με τη Ποικιλία. - ✅ Δεδομένου αυτού του κατηγορικού διαγράμματος, ποιες ενδιαφέρουσες εξερευνήσεις μπορείτε να φανταστείτε; + ✅ Δεδομένου αυτού του κατηγορηματικού γραφήματος, ποιες είναι μερικές ενδιαφέρουσες εξερευνήσεις που μπορείτε να φανταστείτε; ### Προεπεξεργασία δεδομένων: κωδικοποίηση χαρακτηριστικών και ετικετών - -Το σύνολο δεδομένων κολοκύθας μας περιέχει τιμές κειμένου για όλες τις στήλες του. Η εργασία με κατηγορικά δεδομένα είναι διαισθητική για τους ανθρώπους αλλά όχι για τις μηχανές. Οι αλγόριθμοι μηχανικής μάθησης λειτουργούν καλά με αριθμούς. Γι' αυτό η κωδικοποίηση είναι ένα πολύ σημαντικό βήμα στη φάση προεπεξεργασίας δεδομένων, καθώς μας επιτρέπει να μετατρέψουμε τα κατηγορικά δεδομένα σε αριθμητικά δεδομένα, χωρίς να χάσουμε καμία πληροφορία. Καλή κωδικοποίηση οδηγεί στη δημιουργία ενός καλού μοντέλου. +Το 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}") ``` +![Ένα catplot οπτικοποιημένων δεδομένων](../../../../translated_images/el/pumpkins_catplot_2.87a354447880b388.webp) -![Ένα κατηγορικό διάγραμμα οπτικοποιημένων δεδομένων](../../../../2-Regression/4-Logistic/images/pumpkins_catplot_2.png) - -### Χρήση 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) ``` - ![Ένα swarm οπτικοποιημένων δεδομένων](../../../../2-Regression/4-Logistic/images/swarm_2.png) + ![Ένα σμήνος οπτικοποιημένων δεδομένων](../../../../translated_images/el/swarm_2.efeacfca536c2b57.webp) + +**Προσοχή**: ο παραπάνω κώδικας μπορεί να παράγει προειδοποίηση, καθώς το 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. Η καμπύλη της ονομάζεται και 'λογιστική καμπύλη'. Ο τύπος της φαίνεται ως εξής: > -> ![λογιστική συνάρτηση](../../../../2-Regression/4-Logistic/images/sigmoid.png) +> ![λογιστική συνάρτηση](../../../../translated_images/el/sigmoid.8b7ba9d095c789cf.webp) > -> όπου το μέσο της sigmoid βρίσκεται στο σημείο 0 του x, το L είναι η μέγιστη τιμή της καμπύλης και το k είναι η απότομη κλίση της καμπύλης. Αν το αποτέλεσμα της συνάρτησης είναι μεγαλύτερο από 0.5, η ετικέτα θα λάβει την κατηγορία '1' της δυαδικής επιλογής. Αν όχι, θα ταξινομηθεί ως '0'. +> όπου το μέσον της σιγμοειδούς βρίσκεται στο σημείο 0 του x, το L είναι η μέγιστη τιμή της καμπύλης και το k η κλίση της καμπύλης. Αν το αποτέλεσμα της συνάρτησης είναι πάνω από 0.5, η αντίστοιχη ετικέτα θα λάβει την κλάση '1' της δυαδικής επιλογής. Διαφορετικά, θα ταξινομηθεί ως '0'. -## Δημιουργία του μοντέλου σας +## Δημιουργήστε το μοντέλο σας -Η δημιουργία ενός μοντέλου για την εύρεση αυτών των δυαδικών ταξινομήσεων είναι εκπληκτικά απλή στο Scikit-learn. +Η δημιουργία ενός μοντέλου για αυτή τη δυαδική ταξινόμηση είναι εκπληκτικά απλή στο Scikit-learn. -[![ML για αρχάριους - Λογιστική Παλινδρόμηση για ταξινόμηση δεδομένων](https://img.youtube.com/vi/MmZS2otPrQ8/0.jpg)](https://youtu.be/MmZS2otPrQ8 "ML για αρχάριους - Λογιστική Παλινδρόμηση για ταξινόμηση δεδομένων") +[![Μηχανική Μάθηση για αρχάριους - Λογιστική Παλινδρόμηση για ταξινόμηση δεδομένων](https://img.youtube.com/vi/MmZS2otPrQ8/0.jpg)](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 αυτού του μοντέλου -[![ML για αρχάριους - Ανάλυση της Απόδοσης Logistic Regression με Καμπύλες ROC](https://img.youtube.com/vi/GApO575jTA0/0.jpg)](https://youtu.be/GApO575jTA0 "ML για αρχάριους - Ανάλυση της Απόδοσης Logistic Regression με Καμπύλες ROC") +[![ML for beginners - Analyzing Logistic Regression Performance with ROC Curves](https://img.youtube.com/vi/GApO575jTA0/0.jpg)](https://youtu.be/GApO575jTA0 "ML for beginners - Analyzing Logistic Regression Performance with ROC Curves") -> 🎥 Κάντε κλικ στην εικόνα παραπάνω για ένα σύντομο βίντεο επισκόπησης των καμπυλών ROC +> 🎥 Κάντε κλικ στην παραπάνω εικόνα για μια σύντομη επισκόπηση βίντεο των καμπυλών ROC -Ας κάνουμε μία ακόμη οπτικοποίηση για να δούμε τη λεγόμενη 'καμπύλη 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 συνήθως εμφανίζουν το ποσοστό αληθών θετικών στον άξονα Υ, και το ποσοστό ψευδών θετικών στον άξονα Χ." Επομένως, η κλίση της καμπύλης και ο χώρος μεταξύ της γραμμής μέσης τιμής και της καμπύλης έχουν σημασία: θέλετε μια καμπύλη που ανεβαίνει γρήγορα και πέρα από τη γραμμή. Στην περίπτωσή μας, υπάρχουν ψευδώς θετικά στην αρχή, και στη συνέχεια η γραμμή ανεβαίνει και περνά σωστά πάνω από: -![ROC](../../../../2-Regression/4-Logistic/images/ROC_2.png) +![ROC](../../../../translated_images/el/ROC_2.777f20cdfc4988ca.webp) -Τέλος, χρησιμοποιήστε το 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'). -![monnaie](../../../../6-NLP/3-Translation-Sentiment/images/monnaie.png) +![monnaie](../../../../translated_images/el/monnaie.606c5fa8369d5c3b.webp) > Εικόνα από [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-Μάθηση -![Περίληψη της μάθησης ενίσχυσης στη μηχανική μάθηση σε ένα σκίτσο](../../../../sketchnotes/ml-reinforcement.png) +![Περίληψη της ενίσχυσης στη μηχανική μάθηση σε ένα σκίτσο](../../../../translated_images/el/ml-reinforcement.94024374d63348db.webp) > Σκίτσο από [Tomomi Imura](https://www.twitter.com/girlie_mac) -Η μάθηση ενίσχυσης περιλαμβάνει τρεις σημαντικές έννοιες: τον πράκτορα, κάποιες καταστάσεις και ένα σύνολο ενεργειών ανά κατάσταση. Εκτελώντας μια ενέργεια σε μια συγκεκριμένη κατάσταση, ο πράκτορας λαμβάνει μια ανταμοιβή. Φανταστείτε ξανά το παιχνίδι στον υπολογιστή Super Mario. Είστε ο Mario, βρίσκεστε σε ένα επίπεδο του παιχνιδιού, δίπλα σε μια άκρη γκρεμού. Πάνω σας υπάρχει ένα νόμισμα. Εσείς, ως Mario, σε ένα επίπεδο του παιχνιδιού, σε μια συγκεκριμένη θέση... αυτή είναι η κατάστασή σας. Αν κάνετε ένα βήμα προς τα δεξιά (μια ενέργεια), θα πέσετε από την άκρη και θα λάβετε χαμηλή αριθμητική βαθμολογία. Ωστόσο, αν πατήσετε το κουμπί άλματος, θα κερδίσετε έναν πόντο και θα παραμείνετε ζωντανοί. Αυτό είναι ένα θετικό αποτέλεσμα και θα πρέπει να σας απονείμει μια θετική αριθμητική βαθμολογία. +Η εκμάθηση με ενίσχυση περιλαμβάνει τρεις σημαντικές έννοιες: τον πρακτορά (agent), κάποιες καταστάσεις, και ένα σύνολο ενεργειών ανά κατάσταση. Εκτελώντας μια ενέργεια σε μια συγκεκριμένη κατάσταση, ο πρακτοράς λαμβάνει μια ανταμοιβή. Φανταστείτε ξανά το ηλεκτρονικό παιχνίδι Super Mario. Εσείς είστε ο Μάριο, βρίσκεστε σε ένα επίπεδο του παιχνιδιού, όρθιος δίπλα σε μια άκρη γκρεμού. Πάνω σας υπάρχει ένα νόμισμα. Εσείς ως Μάριο, σε ένα επίπεδο του παιχνιδιού, σε μια συγκεκριμένη θέση... αυτή είναι η κατάσταση σας. Μετακίνηση ένα βήμα δεξιά (μια ενέργεια) θα σας έριχνε από την άκρη, και αυτό θα σας έδινε μια χαμηλή αριθμητική βαθμολογία. Ωστόσο, πατώντας το κουμπί άλματος, θα μπορούσατε να σκοράρετε ένα πόντο και να παραμείνετε ζωντανοί. Αυτό είναι ένα θετικό αποτέλεσμα και θα έπρεπε να σας αποδώσει μια θετική αριθμητική βαθμολογία. -Χρησιμοποιώντας τη μάθηση ενίσχυσης και έναν προσομοιωτή (το παιχνίδι), μπορείτε να μάθετε πώς να παίζετε το παιχνίδι για να μεγιστοποιήσετε την ανταμοιβή, δηλαδή να παραμείνετε ζωντανοί και να συγκεντρώσετε όσο το δυνατόν περισσότερους πόντους. +Με τη χρήση της εκμάθησης με ενίσχυση και ενός προσομοιωτή (του παιχνιδιού), μπορείτε να μάθετε πώς να παίζετε το παιχνίδι για να μεγιστοποιήσετε την ανταμοιβή, που είναι να παραμείνετε ζωντανοί και να σκοράρετε όσο το δυνατόν περισσότερους πόντους. -[![Εισαγωγή στη Μάθηση Ενίσχυσης](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) +[![Εισαγωγή στην Εκμάθηση με Ενίσχυση](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](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 `ύψος`, όπως αυτή: -![Περιβάλλον του Πέτρου](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![Περιβάλλον του Πέτρου](../../../../translated_images/el/environment.40ba3cb66256c93f.webp) -Κάθε κελί σε αυτόν τον πίνακα μπορεί να είναι: +Κάθε κελί αυτής της πίστα μπορεί είτε να είναι: -* **έδαφος**, πάνω στο οποίο ο Πέτρος και άλλα πλάσματα μπορούν να περπατήσουν. +* **έδαφος**, πάνω στο οποίο μπορεί να περπατήσει ο Πέτρος και άλλα πλάσματα. * **νερό**, πάνω στο οποίο προφανώς δεν μπορείτε να περπατήσετε. -* **δέντρο** ή **γρασίδι**, ένα μέρος όπου μπορείτε να ξεκουραστείτε. -* **μήλο**, που αντιπροσωπεύει κάτι που ο Πέτρος θα χαρεί να βρει για να τραφεί. -* **λύκος**, που είναι επικίνδυνος και πρέπει να αποφεύγεται. +* ένα **δέντρο** ή **χλόη**, ένα μέρος όπου μπορείτε να ξεκουραστείτε. +* ένα **μήλο**, που αντιπροσωπεύει κάτι που ο Πέτρος θα ήταν χαρούμενος να βρει για να τραφεί. +* έναν **λύκο**, που είναι επικίνδυνος και πρέπει να αποφευχθεί. -Υπάρχει ένα ξεχωριστό 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 βήματα. - Μπορείτε επίσης να δείτε πώς φαίνεται η κίνηση του Πέτρου κατά την τυχαία περιπλάνηση: + Μπορείτε επίσης να δείτε πώς μοιάζει η κίνηση του Πέτρου κατά το τυχαίο περπάτημα: - ![Τυχαία Περιπλάνηση του Πέτρου](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) + ![Τυχαίο Περπάτημα του Πέτρου](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) ## Συνάρτηση ανταμοιβής -Για να κάνουμε την πολιτική μας πιο έξυπνη, πρέπει να κατανοήσουμε ποιες κινήσεις είναι "καλύτερες" από άλλες. Για να το κάνουμε αυτό, πρέπει να ορίσουμε τον στόχο μας. +Για να κάνουμε την πολιτική μας πιο έξυπνη, πρέπει να καταλάβουμε ποιες κινήσεις είναι "καλύτερες" από άλλες. Για να το κάνουμε αυτό, πρέπει να ορίσουμε τον στόχο μας. -Ο στόχος μπορεί να οριστεί με όρους μιας **συνάρτησης ανταμοιβής**, η οποία θα επιστρέφει κάποια τιμή βαθμολογίας για κάθε κατάσταση. Όσο μεγαλύτερος ο αριθμός, τόσο καλύτερη η συνάρτηση ανταμοιβής. (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)`. -![Περιβάλλον του Πέτρου](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![Περιβάλλον του Πέτρου](../../../../translated_images/el/env_init.04e8f26d2d60089e.webp) -Στο κέντρο κάθε κελιού υπάρχει ένα "βέλος" που υποδεικνύει την προτιμώμενη κατεύθυνση κίνησης. Επειδή όλες οι κατευθύνσεις είναι ίσες, εμφανίζεται μια κουκκίδα. +Στο κέντρο κάθε κελιού υπάρχει ένα "βέλος" που δείχνει την προτιμώμενη κατεύθυνση κίνησης. Εφόσον όλες οι κατευθύνσεις είναι ίσες, εμφανίζεται μια τελεία. -Τώρα πρέπει να εκτελέσουμε την προσομοίωση, να εξερευνήσουμε το περιβάλλον μας και να μάθουμε μια καλύτερη κατανομή τιμών 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. + +![Η μεγάλη απόδραση!](../../../../translated_images/el/escape.18862db9930337e3.webp) + +> Ο Πέτρος και οι φίλοι του γίνονται δημιουργικοί για να ξεφύγουν από τον λύκο! Εικόνα από την [Jen Looper](https://twitter.com/jenlooper) + +Θα χρησιμοποιήσουμε μια απλοποιημένη εκδοχή της ισορροπίας γνωστή ως πρόβλημα **CartPole**. Στον κόσμο του cartpole, έχουμε ένα οριζόντιο ολισθητήρα που μπορεί να κινηθεί αριστερά ή δεξιά, και στόχος είναι να κρατήσουμε μια κατακόρυφη ράβδο στην κορυφή του ολισθητήρα. + +a 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() ``` - Θα πρέπει να βλέπετε κάτι παρόμοιο με αυτήν την εικόνα: + Θα πρέπει να βλέπετε κάτι σαν αυτήν την εικόνα: - ![μη ισορροπημένο cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) + ![cartpole που δεν ισορροπεί](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) -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) ``` -![ακατέργαστη πρόοδος](../../../../8-Reinforcement/2-Gym/images/train_progress_raw.png) +![ακατέργαστη πρόοδος](../../../../translated_images/el/train_progress_raw.2adfdf2daea09c59.webp) -Από αυτό το γράφημα, δεν είναι δυνατό να πούμε κάτι, επειδή λόγω της φύσης της στοχαστικής διαδικασίας εκπαίδευσης το μήκος των συνεδριών εκπαίδευσης ποικίλλει πολύ. Για να βγάλουμε περισσότερο νόημα από αυτό το γράφημα, μπορούμε να υπολογίσουμε τον **κινούμενο μέσο όρο** σε μια σειρά πειραμάτων, ας πούμε 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)) ``` -![πρόοδος εκπαίδευσης](../../../../8-Reinforcement/2-Gym/images/train_progress_runav.png) +![πρόοδος εκπαίδευσης](../../../../translated_images/el/train_progress_runav.c71694a8fa9ab359.webp) + +## Μεταβλητές υπερπαράμετροι + +Για να γίνει η μάθηση πιο σταθερή, έχει νόημα να προσαρμόσουμε κάποιες από τις υπερπαραμέτρους μας κατά τη διάρκεια της εκπαίδευσης. Συγκεκριμένα: + +- **Για τον ρυθμό μάθησης**, `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() Θα πρέπει να δείτε κάτι σαν αυτό: -![a balancing cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) +![ένα ισορροπημένο cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) --- ## 🚀Πρόκληση -> **Εργασία 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 @@ -# Υστερόγραφο: Μηχανική μάθηση στον πραγματικό κόσμο +# Επίμετρο: Η μηχανική μάθηση στον πραγματικό κόσμο -![Περίληψη της μηχανικής μάθησης στον πραγματικό κόσμο σε ένα σκίτσο](../../../../sketchnotes/ml-realworld.png) + +![Περίληψη της μηχανικής μάθησης στον πραγματικό κόσμο σε ένα σκίτσο](../../../../translated_images/el/ml-realworld.26ee274671615577.webp) > Σκίτσο από την [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) -> ![Gif για Υπεύθυνα Εργαλεία Τεχνητής Νοημοσύνης](../../../../9-Real-World/2-Debugging-ML-Models/images/rai-overview.gif) +> ![Gif on Responsible AI Tools](../../../../9-Real-World/2-Debugging-ML-Models/images/rai-overview.gif) ## Ανάλυση Σφαλμάτων -Οι παραδοσιακές μετρικές απόδοσης μοντέλων που χρησιμοποιούνται για τη μέτρηση της ακρίβειας είναι κυρίως υπολογισμοί που βασίζονται σε σωστές έναντι λανθασμένων προβλέψεων. Για παράδειγμα, ο προσδιορισμός ότι ένα μοντέλο είναι ακριβές κατά 89% με απώλεια σφάλματος 0.001 μπορεί να θεωρηθεί καλή απόδοση. Ωστόσο, τα σφάλματα δεν κατανέμονται πάντα ομοιόμορφα στο υποκείμενο σύνολο δεδομένων. Μπορεί να έχετε βαθμολογία ακρίβειας μοντέλου 89%, αλλά να ανακαλύψετε ότι υπάρχουν διαφορετικές περιοχές των δεδομένων σας στις οποίες το μοντέλο αποτυγχάνει κατά 42% του χρόνου. Οι συνέπειες αυτών των μοτίβων αποτυχίας με ορισμένες ομάδες δεδομένων μπορούν να οδηγήσουν σε ζητήματα δικαιοσύνης ή αξιοπιστίας. Είναι απαραίτητο να κατανοήσετε τις περιοχές όπου το μοντέλο αποδίδει καλά ή όχι. Οι περιοχές δεδομένων όπου υπάρχουν υψηλά ποσοστά ανακρίβειας στο μοντέλο σας μπορεί να αποδειχθούν σημαντικές δημογραφικές ομάδες δεδομένων. +Οι παραδοσιακές μετρικές απόδοσης μοντέλων που χρησιμοποιούνται για τη μέτρηση της ακρίβειας είναι κυρίως υπολογισμοί βασισμένοι σε σωστές έναντι λανθασμένων προβλέψεων. Για παράδειγμα, η διαπίστωση ότι ένα μοντέλο έχει ακρίβεια 89% με απώλεια σφάλματος 0,001 μπορεί να θεωρηθεί καλή απόδοση. Τα σφάλματα συχνά δεν κατανέμονται ομοιόμορφα στο υποκείμενο σύνολο δεδομένων σας. Μπορεί να έχετε σκορ ακρίβειας μοντέλου 89% αλλά να ανακαλύψετε ότι υπάρχουν διαφορετικές περιοχές των δεδομένων σας όπου το μοντέλο αποτυγχάνει στο 42% των φορών. Το αποτέλεσμα αυτών των προτύπων αποτυχίας με ορισμένες ομάδες δεδομένων μπορεί να οδηγήσει σε ζητήματα δικαιοσύνης ή αξιοπιστίας. Είναι απαραίτητο να κατανοήσουμε τις περιοχές όπου το μοντέλο αποδίδει καλά ή όχι. Οι περιοχές δεδομένων όπου υπάρχουν πολλά λάθη στο μοντέλο σας μπορεί να αποδειχθούν σημαντικό δημογραφικό δεδομένων. -![Ανάλυση και εντοπισμός σφαλμάτων μοντέλου](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-error-distribution.png) +![Analyze and debug model errors](../../../../translated_images/el/ea-error-distribution.117452e1177c1dd8.webp) -Η συνιστώσα Ανάλυσης Σφαλμάτων στον πίνακα ελέγχου Υπεύθυνης Τεχνητής Νοημοσύνης απεικονίζει πώς η αποτυχία του μοντέλου κατανέμεται σε διάφορες ομάδες με μια οπτικοποίηση δέντρου. Αυτό είναι χρήσιμο για τον εντοπισμό χαρακτηριστικών ή περιοχών όπου υπάρχει υψηλό ποσοστό σφαλμάτων στο σύνολο δεδομένων σας. Βλέποντας από πού προέρχονται οι περισσότερες ανακρίβειες του μοντέλου, μπορείτε να αρχίσετε να διερευνάτε τη βασική αιτία. Μπορείτε επίσης να δημιουργήσετε ομάδες δεδομένων για να πραγματοποιήσετε ανάλυση. Αυτές οι ομάδες δεδομένων βοηθούν στη διαδικασία εντοπισμού σφαλμάτων για να προσδιορίσετε γιατί η απόδοση του μοντέλου είναι καλή σε μια ομάδα, αλλά λανθασμένη σε μια άλλη. +Το συστατικό Ανάλυσης Σφαλμάτων στον πίνακα ελέγχου RAI απεικονίζει πώς η αποτυχία του μοντέλου κατανέμεται σε διάφορες υποομάδες με μια δεντρική απεικόνιση. Αυτό είναι χρήσιμο για τον εντοπισμό χαρακτηριστικών ή περιοχών όπου υπάρχει υψηλό ποσοστό σφαλμάτων στο σύνολο δεδομένων σας. Βλέποντας από πού προέρχονται οι περισσότερες ανακρίβειες του μοντέλου, μπορείτε να αρχίσετε να διερευνάτε την ρίζα του προβλήματος. Μπορείτε επίσης να δημιουργήσετε ομάδες δεδομένων για να εκτελέσετε ανάλυση. Αυτές οι υποομάδες δεδομένων βοηθούν στη διαδικασία αποσφαλμάτωσης για να διαπιστωθεί γιατί η απόδοση του μοντέλου είναι καλή σε μια υποομάδα, αλλά λανθασμένη σε άλλη. -![Ανάλυση Σφαλμάτων](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-error-cohort.png) +![Error Analysis](../../../../translated_images/el/ea-error-cohort.6886209ea5d438c4.webp) -Οι οπτικοί δείκτες στον χάρτη δέντρου βοηθούν στον εντοπισμό των προβληματικών περιοχών πιο γρήγορα. Για παράδειγμα, όσο πιο σκούρο κόκκινο είναι ένας κόμβος δέντρου, τόσο υψηλότερο είναι το ποσοστό σφάλματος. +Οι οπτικοί δείκτες στο δεντρικό χάρτη βοηθούν στον ταχύτερο εντοπισμό των προβληματικών περιοχών. Για παράδειγμα, όσο πιο σκούρο κόκκινο έχει ένας κόμβος στο δέντρο, τόσο υψηλότερο είναι το ποσοστό σφάλματος. -Ο θερμικός χάρτης είναι μια άλλη λειτουργία οπτικοποίησης που οι χρήστες μπορούν να χρησιμοποιήσουν για να διερευνήσουν το ποσοστό σφάλματος χρησιμοποιώντας ένα ή δύο χαρακτηριστικά για να βρουν έναν παράγοντα που συμβάλλει στα σφάλματα του μοντέλου σε ολόκληρο το σύνολο δεδομένων ή τις ομάδες. +Ο θερμικός χάρτης είναι μια άλλη οπτικοποιητική λειτουργία που οι χρήστες μπορούν να χρησιμοποιήσουν για να διερευνήσουν το ποσοστό σφάλματος χρησιμοποιώντας ένα ή δύο χαρακτηριστικά για να βρουν μια συνεισφορά στα σφάλματα του μοντέλου σε ολόκληρο το σύνολο δεδομένων ή τις υποομάδες. -![Θερμικός Χάρτης Ανάλυσης Σφαλμάτων](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-heatmap.png) +![Error Analysis Heatmap](../../../../translated_images/el/ea-heatmap.8d27185e28cee383.webp) -Χρησιμοποιήστε την ανάλυση σφαλμάτων όταν χρειάζεστε: +Χρησιμοποιήστε την ανάλυση σφαλμάτων όταν χρειάζεται να: -* Βαθιά κατανόηση του πώς οι αποτυχίες του μοντέλου κατανέμονται σε ένα σύνολο δεδομένων και σε διάφορες διαστάσεις εισόδου και χαρακτηριστικών. -* Ανάλυση των συνολικών μετρικών απόδοσης για την αυτόματη ανακάλυψη λανθασμένων ομάδων δεδομένων ώστε να ενημερώσετε τα στοχευμένα βήματα μετριασμού. +* Αποκτήσετε βαθιά κατανόηση του τρόπου με τον οποίο οι αποτυχίες μοντέλου κατανέμονται σε ένα σύνολο δεδομένων και μέσα από πολλές διαστάσεις εισόδου και χαρακτηριστικών. +* Χωρίσετε τις συνολικές μετρικές απόδοσης για να ανακαλύψετε αυτόματα λανθασμένες υποομάδες ώστε να ενημερώσετε τα στοχευμένα βήματα μετριασμού. ## Επισκόπηση Μοντέλου -Η αξιολόγηση της απόδοσης ενός μοντέλου μηχανικής μάθησης απαιτεί την απόκτηση μιας ολιστικής κατανόησης της συμπεριφοράς του. Αυτό μπορεί να επιτευχθεί με την ανασκόπηση περισσότερων από μία μετρικών, όπως το ποσοστό σφάλματος, η ακρίβεια, η ανάκληση, η ακρίβεια ή το MAE (Μέσο Απόλυτο Σφάλμα), για να βρεθούν διαφορές μεταξύ των μετρικών απόδοσης. Μια μετρική απόδοσης μπορεί να φαίνεται εξαιρετική, αλλά οι ανακρίβειες μπορούν να αποκαλυφθούν σε μια άλλη μετρική. Επιπλέον, η σύγκριση των μετρικών για διαφορές σε ολόκληρο το σύνολο δεδομένων ή τις ομάδες βοηθά να φωτιστούν περιοχές όπου το μοντέλο αποδίδει καλά ή όχι. Αυτό είναι ιδιαίτερα σημαντικό για να δούμε την απόδοση του μοντέλου μεταξύ ευαίσθητων και μη ευαίσθητων χαρακτηριστικών (π.χ., φυλή ασθενών, φύλο ή ηλικία) ώστε να αποκαλυφθεί πιθανή αδικία που μπορεί να έχει το μοντέλο. Για παράδειγμα, η ανακάλυψη ότι το μοντέλο είναι πιο λανθασμένο σε μια ομάδα που έχει ευαίσθητα χαρακτηριστικά μπορεί να αποκαλύψει πιθανή αδικία που μπορεί να έχει το μοντέλο. +Η αξιολόγηση της απόδοσης ενός μοντέλου μηχανικής μάθησης απαιτεί την απόκτηση μιας ολιστικής κατανόησης της συμπεριφοράς του. Αυτό μπορεί να επιτευχθεί εξετάζοντας περισσότερες από μία μετρικές όπως ποσοστό σφάλματος, ακρίβεια, ανάκληση, ακρίβεια (precision) ή MAE (Μέσο Απόλυτο Σφάλμα) για να βρεθούν ανισότητες μεταξύ των μετρικών απόδοσης. Μια μετρική απόδοσης μπορεί να φαίνεται εξαιρετική, αλλά ανακρίβειες μπορεί να αποκαλυφθούν σε άλλη μετρική. Επιπλέον, η σύγκριση των μετρικών ως προς τις ανισότητες σε ολόκληρο το σύνολο δεδομένων ή υποομάδες βοηθά στο να φωτιστούν οι περιοχές όπου το μοντέλο αποδίδει καλά ή όχι. Αυτό είναι ιδιαίτερα σημαντικό για να δούμε την απόδοση του μοντέλου ανάμεσα σε ευαίσθητα έναντι μη ευαίσθητων χαρακτηριστικών (π.χ. φυλή ασθενούς, φύλο ή ηλικία) για την αποκάλυψη πιθανής αδικίας που μπορεί να έχει το μοντέλο. Για παράδειγμα, η ανακάλυψη ότι το μοντέλο είναι πιο ανακριβές σε μια υποομάδα που περιέχει ευαίσθητα χαρακτηριστικά μπορεί να αποκαλύψει πιθανή αδικία που υπάρχει στο μοντέλο. -Η συνιστώσα Επισκόπησης Μοντέλου του πίνακα ελέγχου Υπεύθυνης Τεχνητής Νοημοσύνης βοηθά όχι μόνο στην ανάλυση των μετρικών απόδοσης της εκπροσώπησης δεδομένων σε μια ομάδα, αλλά δίνει στους χρήστες τη δυνατότητα να συγκρίνουν τη συμπεριφορά του μοντέλου μεταξύ διαφορετικών ομάδων. +Το συστατικό Επισκόπηση Μοντέλου στον πίνακα ελέγχου RAI βοηθά όχι μόνο στην ανάλυση των μετρικών απόδοσης της αναπαράστασης δεδομένων σε μια υποομάδα, αλλά παρέχει στους χρήστες τη δυνατότητα να συγκρίνουν τη συμπεριφορά του μοντέλου σε διαφορετικές υποομάδες. -![Ομάδες δεδομένων - επισκόπηση μοντέλου στον πίνακα ελέγχου Υπεύθυνης Τεχνητής Νοημοσύνης](../../../../9-Real-World/2-Debugging-ML-Models/images/model-overview-dataset-cohorts.png) +![Dataset cohorts - model overview in RAI dashboard](../../../../translated_images/el/model-overview-dataset-cohorts.dfa463fb527a35a0.webp) -Η λειτουργία ανάλυσης βάσει χαρακτηριστικών της συνιστώσας επιτρέπει στους χρήστες να περιορίσουν υποομάδες δεδομένων μέσα σε ένα συγκεκριμένο χαρακτηριστικό για να εντοπίσουν ανωμαλίες σε λεπτομερές επίπεδο. Για παράδειγμα, ο πίνακας ελέγχου διαθέτει ενσωματωμένη νοημοσύνη για να δημιουργεί αυτόματα ομάδες για ένα χαρακτηριστικό που επιλέγει ο χρήστης (π.χ., *"time_in_hospital < 3"* ή *"time_in_hospital >= 7"*). Αυτό επιτρέπει στον χρήστη να απομονώσει ένα συγκεκριμένο χαρακτηριστικό από μια μεγαλύτερη ομάδα δεδομένων για να δει αν είναι βασικός παράγοντας των λανθασμένων αποτελεσμάτων του μοντέλου. +Η λειτουργία ανάλυσης βάσει χαρακτηριστικών του συστατικού επιτρέπει στους χρήστες να περιορίσουν υποομάδες δεδομένων εντός ενός συγκεκριμένου χαρακτηριστικού για να εντοπίσουν ανωμαλίες σε λεπτομερές επίπεδο. Για παράδειγμα, ο πίνακας ελέγχου έχει ενσωματωμένη νοημοσύνη για αυτόματη δημιουργία υποομάδων για ένα χαρακτηριστικό που επιλέγει ο χρήστης (π.χ., *"time_in_hospital < 3"* ή *"time_in_hospital >= 7"*). Αυτό επιτρέπει σε έναν χρήστη να απομονώσει ένα συγκεκριμένο χαρακτηριστικό από μια μεγαλύτερη ομάδα δεδομένων για να δει εάν είναι σημαντικός παράγοντας που επηρεάζει τα λανθασμένα αποτελέσματα του μοντέλου. -![Ομάδες χαρακτηριστικών - επισκόπηση μοντέλου στον πίνακα ελέγχου Υπεύθυνης Τεχνητής Νοημοσύνης](../../../../9-Real-World/2-Debugging-ML-Models/images/model-overview-feature-cohorts.png) +![Feature cohorts - model overview in RAI dashboard](../../../../translated_images/el/model-overview-feature-cohorts.c5104d575ffd0c80.webp) -Η συνιστώσα Επισκόπησης Μοντέλου υποστηρίζει δύο κατηγορίες μετρικών διαφορών: +Το συστατικό Επισκόπηση Μοντέλου υποστηρίζει δύο κατηγορίες μετρικών ανισότητας: -**Διαφορά στην απόδοση του μοντέλου**: Αυτά τα σύνολα μετρικών υπολογίζουν τη διαφορά στις τιμές της επιλεγμένης μετρικής απόδοσης μεταξύ υποομάδων δεδομένων. Εδώ είναι μερικά παραδείγματα: +**Ανισότητα στην απόδοση του μοντέλου**: Αυτά τα σύνολα μετρικών υπολογίζουν την ανισότητα (διαφορά) στις τιμές της επιλεγμένης μετρικής απόδοσης μεταξύ υποομάδων δεδομένων. Εδώ είναι μερικά παραδείγματα: -* Διαφορά στο ποσοστό ακρίβειας -* Διαφορά στο ποσοστό σφάλματος -* Διαφορά στην ακρίβεια -* Διαφορά στην ανάκληση -* Διαφορά στο μέσο απόλυτο σφάλμα (MAE) +* Ανισότητα στο ποσοστό ακρίβειας +* Ανισότητα στο ποσοστό σφάλματος +* Ανισότητα στην ακρίβεια (precision) +* Ανισότητα στην ανάκληση (recall) +* Ανισότητα στο μέσο απόλυτο σφάλμα (MAE) -**Διαφορά στο ποσοστό επιλογής**: Αυτή η μετρική περιέχει τη διαφορά στο ποσοστό επιλογής (ευνοϊκή πρόβλεψη) μεταξύ υποομάδων. Ένα παράδειγμα αυτού είναι η διαφορά στα ποσοστά έγκρισης δανείων. Το ποσοστό επιλογής σημαίνει το κλάσμα των σημείων δεδομένων σε κάθε κατηγορία που ταξινομούνται ως 1 (σε δυαδική ταξινόμηση) ή η κατανομή των τιμών πρόβλεψης (σε παλινδρόμηση). +**Ανισότητα στο ποσοστό επιλογής**: Αυτή η μετρική περιλαμβάνει τη διαφορά στο ποσοστό επιλογής (ευνοϊκή πρόβλεψη) ανάμεσα σε υποομάδες. Ένα παράδειγμα είναι η ανισότητα στα ποσοστά έγκρισης δανείων. Ο ρυθμός επιλογής σημαίνει το κλάσμα των σημείων δεδομένων σε κάθε κατηγορία που ταξινομούνται ως 1 (στη δυαδική ταξινόμηση) ή η κατανομή των τιμών πρόβλεψης (στην παλινδρόμηση). ## Ανάλυση Δεδομένων > "Αν βασανίσεις τα δεδομένα αρκετά, θα ομολογήσουν οτιδήποτε" - Ronald Coase -Αυτή η δήλωση ακούγεται υπερβολική, αλλά είναι αλήθεια ότι τα δεδομένα μπορούν να χειραγωγηθούν για να υποστηρίξουν οποιοδήποτε συμπέρασμα. Μια τέτοια χειραγώγηση μπορεί μερικές φορές να συμβεί ακούσια. Ως άνθρωποι, όλοι έχουμε προκαταλήψεις, και είναι συχνά δύσκολο να γνωρίζουμε συνειδητά πότε εισάγουμε προκατάληψη στα δεδομένα. Η διασφάλιση της δικαιοσύνης στην τεχνητή νοημοσύνη και τη μηχανική μάθηση παραμένει μια σύνθετη πρόκληση. +Αυτή η δήλωση ακούγεται ακραία, αλλά είναι αλήθεια ότι τα δεδομένα μπορούν να χειραγωγηθούν για να υποστηρίξουν οποιοδήποτε συμπέρασμα. Τέτοια χειραγώγηση μπορεί μερικές φορές να συμβεί ακούσια. Ως άνθρωποι, όλοι έχουμε προκαταλήψεις, και συχνά είναι δύσκολο να γνωρίζουμε συνειδητά πότε εισάγουμε προκατάληψη στα δεδομένα. Η διασφάλιση της δικαιοσύνης στην AI και τη μηχανική μάθηση παραμένει μια πολύπλοκη πρόκληση. + +Τα δεδομένα είναι ένα μεγάλο τυφλό σημείο για τις παραδοσιακές μετρικές απόδοσης μοντέλων. Μπορεί να έχετε υψηλές βαθμολογίες ακρίβειας, αλλά αυτό δεν αντικατοπτρίζει πάντα την υποκείμενη προκατάληψη στα δεδομένα που μπορεί να υπάρχει στο σύνολο δεδομένων σας. Για παράδειγμα, αν ένα σύνολο δεδομένων εργαζομένων έχει 27% γυναίκες σε εκτελεστικές θέσεις σε μια εταιρεία και 73% άνδρες στο ίδιο επίπεδο, ένα AI μοντέλο που εκπαιδεύτηκε για διαφήμιση εργασίας σε αυτά τα δεδομένα μπορεί να στοχεύει κυρίως ανδρικό κοινό για θέσεις ανώτερου επιπέδου. Έχοντας αυτή την ανισορροπία στα δεδομένα, το μοντέλο προσανατολίστηκε να ευνοεί ένα φύλο. Αυτό αποκαλύπτει ένα ζήτημα δικαιοσύνης όπου υπάρχει μεροληψία φύλου στο μοντέλο AI. -Τα δεδομένα αποτελούν ένα μεγάλο τυφλό σημείο για τις παραδοσιακές μετρικές απόδοσης μοντέλων. Μπορεί να έχετε υψηλές βαθμολογίες ακρίβειας, αλλά αυτό δεν αντικατοπτρίζει πάντα την υποκείμενη προκατάληψη δεδομένων που μπορεί να υπάρχει στο σύνολο δεδομένων σας. Για παράδειγμα, αν ένα σύνολο δεδομένων εργαζομένων έχει 27% γυναίκες σε εκτελεστικές θέσεις σε μια εταιρεία και 73% άνδρες στο ίδιο επίπεδο, ένα μοντέλο διαφήμισης θέσεων εργασίας που εκπαιδεύεται σε αυτά τα δεδομένα μπορεί να στοχεύει κυρίως ανδρικό κοινό για θέσεις ανώτερου επιπέδου. Αυτή η ανισορροπία στα δεδομένα επηρέασε την πρόβλεψη του μοντέλου ώστε να ευνοεί ένα φύλο. Αυτό αποκαλύπτει ένα ζήτημα δικαιοσύνης όπου υπάρχει προκατάληψη φύλου στο μοντέλο τεχνητής νοημοσύνης. +Το συστατικό Ανάλυσης Δεδομένων στον πίνακα ελέγχου RAI βοηθά στον εντοπισμό περιοχών όπου υπάρχει υπερεκπροσώπηση και υποεκπροσώπηση στο σύνολο δεδομένων. Βοηθά τους χρήστες να διαγνώσουν την ρίζα των σφαλμάτων και των ζητημάτων δικαιοσύνης που εισάγονται από ανισορροπίες δεδομένων ή έλλειψη εκπροσώπησης μιας συγκεκριμένης ομάδας δεδομένων. Αυτό δίνει στους χρήστες τη δυνατότητα να οπτικοποιήσουν σύνολα δεδομένων βάσει προβλεφθέντων και πραγματικών αποτελεσμάτων, ομάδων σφαλμάτων και συγκεκριμένων χαρακτηριστικών. Μερικές φορές η ανακάλυψη μιας υποεκπροσωπούμενης ομάδας δεδομένων μπορεί επίσης να αποκαλύψει ότι το μοντέλο δεν μαθαίνει καλά, εξ ου και οι υψηλές ανακρίβειες. Η ύπαρξη ενός μοντέλου με προκατάληψη στα δεδομένα δεν είναι μόνο θέμα δικαιοσύνης αλλά δείχνει ότι το μοντέλο δεν είναι συμπεριληπτικό ή αξιόπιστο. -Η συνιστώσα Ανάλυσης Δεδομένων στον πίνακα ελέγχου Υπεύθυνης Τεχνητής Νοημοσύνης βοηθά στον εντοπισμό περιοχών όπου υπάρχει υπερβολική ή ανεπαρκής εκπροσώπηση στο σύνολο δεδομένων. Βοηθά τους χρήστες να διαγνώσουν τη βασική αιτία σφαλμάτων και ζητημάτων δικαιοσύνης που εισάγονται από ανισορροπίες δεδομένων ή έλλειψη εκπροσώπησης μιας συγκεκριμένης ομάδας δεδομένων. Αυτό δίνει στους χρήστες τη δυνατότητα να οπτικοποιούν σύνολα δεδομένων βάσει προβλεπόμενων και πραγματικών αποτελεσμάτων, ομάδων σφαλμάτων και συγκεκριμένων χαρακτηριστικών. Μερικές φορές η ανακάλυψη μιας υποεκπροσωπούμενης ομάδας δεδομένων μπορεί επίσης να αποκαλύψει ότι το μοντέλο δεν μαθαίνει καλά, εξ ου και οι υψηλές ανακρίβειες. Ένα μοντέλο που έχει προκατάληψη δεδομένων δεν είναι μόνο ζήτημα δικαιοσύνης αλλά δείχνει ότι το μοντέλο δεν είναι συμπεριληπτικό ή αξιόπιστο. +![Data Analysis component on RAI Dashboard](../../../../translated_images/el/dataanalysis-cover.8d6d0683a70a5c1e.webp) -![Συνιστώσα Ανάλυσης Δεδομένων στον Πίνακα Ελέγχου Υπεύθυνης Τεχνητής Νοημοσύνης](../../../../9-Real-World/2-Debugging-ML-Models/images/dataanalysis-cover.png) -Χρησιμοποιήστε την ανάλυση δεδομένων όταν χρειάζεστε: +Χρησιμοποιήστε την ανάλυση δεδομένων όταν χρειάζεται να: -* Εξερεύνηση στατιστικών του συνόλου δεδομένων σας επιλέγοντας διαφορετικά φίλτρα για να διαχωρίσετε τα δεδομένα σας σε διαφορετικές διαστάσεις (γνωστές και ως ομάδες). -* Κατανόηση της κατανομής του συνόλου δεδομένων σας σε διαφορετικές ομάδες και χαρακτηριστικά. -* Προσδιορισμός αν τα ευρήματά σας σχετικά με τη δικαιοσύνη, την ανάλυση σφαλμάτων και την αιτιότητα (που προέρχονται από άλλες συνιστώσες του πίνακα ελέγχου) είναι αποτέλεσμα της κατανομής του συνόλου δεδομένων σας. -* Απόφαση για το πού να συλλέξετε περισσότερα δεδομένα για να μετριάσετε σφάλματα που προέρχονται από ζητήματα εκπροσώπησης, θόρυβο ετικετών, θόρυβο χαρακτηριστικών, προκατάληψη ετικετών και παρόμοιους παράγοντες. +* Εξερευνήσετε τα στατιστικά του συνόλου δεδομένων σας επιλέγοντας διαφορετικά φίλτρα για να χωρίσετε τα δεδομένα σας σε διαφορετικές διαστάσεις (γνωστές και ως υποομάδες). +* Κατανοήσετε την κατανομή του συνόλου δεδομένων σας σε διάφορες υποομάδες και ομάδες χαρακτηριστικών. +* Καθορίσετε αν τα ευρήματά σας σχετικά με τη δικαιοσύνη, την ανάλυση σφαλμάτων και την αιτιότητα (που προέρχονται από άλλα συστατικά του πίνακα ελέγχου) είναι αποτέλεσμα της κατανομής του συνόλου δεδομένων σας. +* Αποφασίσετε σε ποιες περιοχές να συλλέξετε περισσότερα δεδομένα για να μετριάσετε σφάλματα που προέρχονται από προβλήματα εκπροσώπησης, θόρυβο ετικετών, θόρυβο χαρακτηριστικών, μεροληψία ετικετών και παρόμοιους παράγοντες. ## Ερμηνευσιμότητα Μοντέλου -Τα μοντέλα μηχανικής μάθησης τείνουν να είναι "μαύρα κουτιά". Η κατανόηση των βασικών -- **Υπερβολική ή ανεπαρκής εκπροσώπηση**. Η ιδέα είναι ότι μια συγκεκριμένη ομάδα δεν εμφανίζεται σε ένα συγκεκριμένο επάγγελμα, και οποιαδήποτε υπηρεσία ή λειτουργία που συνεχίζει να προωθεί αυτό συμβάλλει στη βλάβη. +Τα μοντέλα μηχανικής μάθησης τείνουν να είναι μαύρα κουτιά. Η κατανόηση των βασικών χαρακτηριστικών δεδομένων που καθοδηγούν την πρόβλεψη ενός μοντέλου μπορεί να είναι πρόκληση. Είναι σημαντικό να παρέχεται διαφάνεια στο γιατί ένα μοντέλο κάνει μια συγκεκριμένη πρόβλεψη. Για παράδειγμα, αν ένα σύστημα 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) +![Feature Importance component of the RAI dashboard](../../../../translated_images/el/9-feature-importance.cd3193b4bba3fd4b.webp) -- Δείτε μερικά δείγματα σημειωματάριων του πίνακα ελέγχου RAI [sample notebooks](https://github.com/Azure/RAI-vNext-Preview/tree/main/examples/notebooks) για την αποσφαλμάτωση πιο υπεύθυνων σεναρίων AI στο Azure Machine Learning. +* Παγκόσμιες εξηγήσεις: Για παράδειγμα, ποια χαρακτηριστικά επηρεάζουν τη συνολική συμπεριφορά ενός μοντέλου επανεισαγωγής σε νοσοκομείο διαβητικών; +* Τοπικές εξηγήσεις: Για παράδειγμα, γιατί ένας διαβητικός ασθενής άνω των 60 ετών με προηγούμενες νοσηλείες προβλέφθηκε να επανεισαχθεί ή όχι εντός 30 ημερών σε νοσοκομείο; ---- -## 🚀 Πρόκληση +Στη διαδικασία αποσφαλμάτωσης εξετάζοντας την απόδοση ενός μοντέλου σε διάφορες υποομάδες, η Σημαντικότητα Χαρακτηριστικών δείχνει το επίπεδο επιρροής που έχει ένα χαρακτηριστικό σε όλες τις υποομάδες. Βοηθά να αποκαλυφθούν ανωμαλίες όταν συγκρίνεται το επίπεδο επίδρασης του χαρακτηριστικού στην πρόκληση λανθασμένων προβλέψεων ενός μοντέλου. Το συστατικό Σημαντικότητας Χαρακτηριστικών μπορεί να δείξει ποιες τιμές ενός χαρακτηριστικού επηρέασαν θετικά ή αρνητικά το αποτέλεσμα του μοντέλου. Για παράδειγμα, εάν ένα μοντέλο έκανε μια ανακριβή πρόβλεψη, το συστατικό σας δίνει τη δυνατότητα να ερευνήσετε και να εντοπίσετε ποια χαρακτηριστικά ή τιμές χαρακτηριστικών οδήγησαν στην πρόβλεψη. Αυτό το επίπεδο λεπτομέρειας βοηθά όχι μόνο στην αποσφαλμάτωση αλλά παρέχει διαφάνεια και υπευθυνότητα σε καταστάσεις ελέγχου. Τέλος, το συστατικό μπορεί να σας βοηθήσει να εντοπίσετε ζητήματα δικαιοσύνης. Για να το δείξουμε, εάν ένα ευαίσθητο χαρακτηριστικό όπως η εθνικότητα ή το φύλο έχει μεγάλη επιρροή στην πρόβλεψη ενός μοντέλου, αυτό θα μπορούσε να είναι ένδειξη μεροληψίας λόγω φυλής ή φύλου στο μοντέλο. + +![Feature importance](../../../../translated_images/el/9-features-influence.3ead3d3f68a84029.webp) + +Χρησιμοποιήστε την ερμηνευσιμότητα όταν χρειάζεται να: + +* Καθορίσετε πόσο αξιόπιστες είναι οι προβλέψεις του συστήματος 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 +Παρακολουθήστε αυτό το εργαστήριο για να εμβαθύνετε στα θέματα: -[![Πίνακας ελέγχου Υπεύθυνης AI: Μια ολοκληρωμένη λύση για την επιχειρησιακή εφαρμογή της RAI στην πράξη](https://img.youtube.com/vi/f1oaDNl3djg/0.jpg)](https://www.youtube.com/watch?v=f1oaDNl3djg "Πίνακας ελέγχου Υπεύθυνης AI: Μια ολοκληρωμένη λύση για την επιχειρησιακή εφαρμογή της RAI στην πράξη") +- Responsible AI Dashboard: Ένα μέρος για την υλοποίηση του RAI στην πράξη από τους Besmira Nushi και Mehrnoosh Sameki -> 🎥 Κάντε κλικ στην εικόνα παραπάνω για το βίντεο: Πίνακας ελέγχου Υπεύθυνης AI: Μια ολοκληρωμένη λύση για την επιχειρησιακή εφαρμογή της RAI στην πράξη από τις Besmira Nushi και Mehrnoosh Sameki +[![Responsible AI Dashboard: One-stop shop for operationalizing RAI in practice](https://img.youtube.com/vi/f1oaDNl3djg/0.jpg)](https://www.youtube.com/watch?v=f1oaDNl3djg "Responsible AI Dashboard: One-stop shop for operationalizing RAI in practice") -Ανατρέξτε στα παρακάτω υλικά για να μάθετε περισσότερα σχετικά με την υπεύθυνη 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 - -![Summary of responsible AI in Machine Learning in a sketchnote](../../../../sketchnotes/ml-fairness.png) + +![Summary of responsible AI in Machine Learning in a sketchnote](../../../../translated_images/en/ml-fairness.ef296ebec6afc98a.webp) > 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](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) +![translation to Turkish](../../../../translated_images/en/gender-bias-translate-en-tr.f185fd8822c2d437.webp) > translation to Turkish -![translation back to English](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) +![translation back to English](../../../../translated_images/en/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) > 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. +[![Leading AI Researcher Warns of Mass Surveillance Through Facial Recognition](../../../../translated_images/en/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft's Approach to Responsible AI") -[![Leading AI Researcher Warns of Mass Surveillance Through Facial Recognition](../../../../1-Introduction/3-fairness/images/accountability.png)](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 [![Responsible AI Toolbox: An open-source framework for building responsible AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") -> 🎥 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 -![Summary of regressions in a sketchnote](../../../../sketchnotes/ml-regression.png) +![Summary of regressions in a sketchnote](../../../../translated_images/en/ml-regression.4e4f70e3b3ed446e.webp) > 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 [![ML for beginners - Setup your tools ready to build Machine Learning models](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML for beginners -Setup your tools ready to build Machine Learning models") -> 🎥 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) > > [![Setup Python with Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](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. [![ML for beginners - Set up Jupyter Notebooks to start building regression models](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML for beginners - Set up Jupyter Notebooks to start building regression models") -> 🎥 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 ``` -![VS Code with a notebook open](../../../../2-Regression/1-Tools/images/notebook.jpg) +![VS Code with a notebook open](../../../../translated_images/en/notebook.4a3ee31f396b8832.webp) -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. + [![ML for beginners - Your First Linear Regression Project in Python](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "ML for beginners - Your First Linear Regression Project in Python") -> 🎥 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() ``` - ![a scatterplot showing datapoints around diabetes](../../../../2-Regression/1-Tools/images/scatterplot.png) -✅ 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. + ![a scatterplot showing datapoints around diabetes](../../../../translated_images/en/scatterplot.ad8b356bcbb33be6.webp) + -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 -![Data visualization infographic](../../../../2-Regression/2-Data/images/data-visualization.png) +![Data visualization infographic](../../../../translated_images/en/data-visualization.54e56dded7c1a804.webp) 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. [![ML for beginners - How to Analyze and Clean a Dataset](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML for beginners - How to Analyze and Clean a Dataset") -> 🎥 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. [![ML for beginners - How to Visualize Data with Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML for beginners - How to Visualize Data with Matplotlib") -> 🎥 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() ``` - ![A scatterplot showing price to month relationship](../../../../2-Regression/2-Data/images/scatterplot.png) + ![A scatterplot showing price to month relationship](../../../../translated_images/en/scatterplot.b6868f44cbd2051c.webp) - 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") ``` - ![A bar chart showing price to month relationship](../../../../2-Regression/2-Data/images/barchart.png) + ![A bar chart showing price to month relationship](../../../../translated_images/en/barchart.a833ea9194346d76.webp) + + 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) + ``` + + ![A Seaborn scatterplot showing price to month relationship](../../../../translated_images/en/relplot.a03837d8f0329cec.webp) + + 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) + ``` + + ![A Seaborn line plot showing price to month relationship](../../../../translated_images/en/lineplot.f9034ba47b1e30ee.webp) + + 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") + ``` + + ![A Seaborn bar chart showing the price distribution per month](../../../../translated_images/en/catplot.e73fc35fdf96242b.webp) + + 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") + ``` + + ![A Seaborn heatmap showing correlations between the numeric columns](../../../../translated_images/en/heatmap.bd98dce43b404c57.webp) + + 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. +![Summary of reinforcement in machine learning in a sketchnote](../../../../translated_images/en/ml-reinforcement.94024374d63348db.webp) +> 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. -![Peter's Learned Policy](../../../../8-Reinforcement/1-QLearning/images/learned_policy.png) +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. +[![Intro to Reinforcement Learning](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](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: + +![Peter's Environment](../../../../translated_images/en/environment.40ba3cb66256c93f.webp) + +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: + + ![Peter's Random Walk](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) + +## 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)`. + +![Peter's Environment](../../../../translated_images/en/env_init.04e8f26d2d60089e.webp) + +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. -![Peter's Learned Movement](../../../../8-Reinforcement/1-QLearning/images/learned_movement.gif) +> **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. + +![The great escape!](../../../../translated_images/en/escape.18862db9930337e3.webp) + +> 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. + +a cartpole + ## 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: ![non-balancing cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) -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: ![a balancing cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) @@ -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 - -![Resumen de IA responsable en aprendizaje automático en un sketchnote](../../../../sketchnotes/ml-fairness.png) +# Construyendo soluciones de Machine Learning con IA responsable + +![Resumen de IA responsable en Machine Learning en un sketchnote](../../../../translated_images/es/ml-fairness.ef296ebec6afc98a.webp) > 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) -[![Enfoque de Microsoft hacia la IA Responsable](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Enfoque de Microsoft hacia la IA Responsable") +[![Enfoque de Microsoft sobre IA Responsable](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](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](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) +![traducción al turco](../../../../translated_images/es/gender-bias-translate-en-tr.f185fd8822c2d437.webp) > traducción al turco -![traducción de vuelta al inglés](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) +![traducción de vuelta al inglés](../../../../translated_images/es/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) > 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. +[![Investigador líder en IA advierte sobre vigilancia masiva mediante reconocimiento facial](../../../../translated_images/es/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Enfoque de Microsoft sobre IA Responsable") -[![Investigador líder en IA advierte sobre vigilancia masiva a través del reconocimiento facial](../../../../1-Introduction/3-fairness/images/accountability.png)](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 -[![Responsible AI Toolbox: Un marco de código abierto para construir IA responsable](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: Un marco de código abierto para construir IA responsable") +[![Caja de herramientas de IA Responsable: Un marco de código abierto para construir IA responsable](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](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 -![Resumen de regresiones en un sketchnote](../../../../sketchnotes/ml-regression.png) +![Resumen de regresiones en una sketchnote](../../../../translated_images/es/ml-regression.4e4f70e3b3ed446e.webp) -> 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 -[![ML para principiantes - Configura tus herramientas para construir modelos de aprendizaje automático](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML para principiantes - Configura tus herramientas para construir modelos de aprendizaje automático") +[![ML para principiantes - Prepara tus herramientas listas para construir modelos de Machine Learning](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](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) > > [![Configura Python con Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](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. [![ML para principiantes - Configura Jupyter Notebooks para comenzar a construir modelos de regresión](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](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 ``` -![VS Code con un notebook abierto](../../../../2-Regression/1-Tools/images/notebook.jpg) +![VS Code con un notebook abierto](../../../../translated_images/es/notebook.4a3ee31f396b8832.webp) 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. -[![ML para principiantes - Tu primer proyecto de regresión lineal en Python](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](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. +[![ML para principiantes - Tu Primer Proyecto de Regresión Lineal en Python](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](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() ``` - ![un gráfico de dispersión mostrando puntos de datos sobre diabetes](../../../../2-Regression/1-Tools/images/scatterplot.png) -✅ 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. + ![un diagrama de dispersión mostrando puntos de datos sobre diabetes](../../../../translated_images/es/scatterplot.ad8b356bcbb33be6.webp) + -¡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 de visualización de datos](../../../../2-Regression/2-Data/images/data-visualization.png) +![Infografía de visualización de datos](../../../../translated_images/es/data-visualization.54e56dded7c1a804.webp) 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. [![ML para principiantes - Cómo analizar y limpiar un conjunto de datos](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](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. [![ML para principiantes - Cómo visualizar datos con Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](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() ``` - ![Un gráfico de dispersión que muestra la relación entre precio y mes](../../../../2-Regression/2-Data/images/scatterplot.png) + ![Un diagrama de dispersión que muestra la relación precio a mes](../../../../translated_images/es/scatterplot.b6868f44cbd2051c.webp) - ¿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") ``` - ![Un gráfico de barras que muestra la relación entre precio y mes](../../../../2-Regression/2-Data/images/barchart.png) + ![Un gráfico de barras mostrando la relación precio a mes](../../../../translated_images/es/barchart.a833ea9194346d76.webp) + + ¡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) + ``` + + ![Un diagrama de dispersión de Seaborn mostrando la relación precio a mes](../../../../translated_images/es/relplot.a03837d8f0329cec.webp) + + 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) + ``` + + ![Un gráfico de líneas de Seaborn mostrando la relación precio a mes](../../../../translated_images/es/lineplot.f9034ba47b1e30ee.webp) + + 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") + ``` + + ![Un gráfico de barras de Seaborn que muestra la distribución de precios por mes](../../../../translated_images/es/catplot.e73fc35fdf96242b.webp) + + 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") + ``` + + ![Un mapa de calor de Seaborn mostrando correlaciones entre las columnas numéricas](../../../../translated_images/es/heatmap.bd98dce43b404c57.webp) + + 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 -![Resumen del refuerzo en el aprendizaje automático en un sketchnote](../../../../sketchnotes/ml-reinforcement.png) +![Resumen del refuerzo en el aprendizaje automático en una sketchnote](../../../../translated_images/es/ml-reinforcement.94024374d63348db.webp) > 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. [![Introducción al Aprendizaje por Refuerzo](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](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í: -![Entorno de Pedro](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![Entorno de Pedro](../../../../translated_images/es/environment.40ba3cb66256c93f.webp) -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: - ![Camino aleatorio de Pedro](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) + ![Camino Aleatorio de Pedro](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) ## 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)`. -![Entorno de Pedro](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![Entorno de Pedro](../../../../translated_images/es/env_init.04e8f26d2d60089e.webp) -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 - -![Vastutustundliku tehisintellekti kokkuvõte masinõppes sketšimärkmetes](../../../../translated_images/et/ml-fairness.ef296ebec6afc98a.webp) -> 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 + +![Vastutustundliku tehisintellekti kokkuvõte masinõppes joonistatud märkmetena](../../../../translated_images/et/ml-fairness.ef296ebec6afc98a.webp) +> 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) -[![Microsofti lähenemine vastutustundlikule tehisintellektile](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsofti lähenemine vastutustundlikule tehisintellektile") +[![Microsofti lähenemine vastutustundlikule tehisintellektile](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](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](../../../../translated_images/et/gender-bias-translate-en-tr.f185fd8822c2d437.webp) -> Tõlge türgi keelde +![tõlge türgi keelde](../../../../translated_images/et/gender-bias-translate-en-tr.f185fd8822c2d437.webp) +> tõlge türgi keelde -![Tõlge tagasi inglise keelde](../../../../translated_images/et/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) -> Tõlge tagasi inglise keelde +![tõlge tagasi inglise keelde](../../../../translated_images/et/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) +> 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. +[![Juhtiv tehisintellekti teadlane hoiatab näotuvastuse massilise järelvalve eest](../../../../translated_images/et/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsofti lähenemine vastutustundlikule AI-le") -[![Juhtiv tehisintellekti teadlane hoiatab massilise jälgimise eest näotuvastuse kaudu](../../../../translated_images/et/accountability.41d8c0f4b85b6231.webp)](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 -[![Vastutustundliku tehisintellekti tööriistakast: avatud lähtekoodiga raamistik vastutustundliku tehisintellekti loomiseks](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: Avatud lähtekoodiga raamistik vastutustundliku tehisintellekti loomiseks") +[![Vastutustundliku tehisintellekti tööriistakomplekt: avatud lähtekoodiga raamistik vastutustundliku tehisintellekti loomiseks](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") -> 🎥 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 -![Regressioonide kokkuvõte visuaalses märkmes](../../../../translated_images/et/ml-regression.4e4f70e3b3ed446e.webp) +![Regressioonide kokkuvõte visandina](../../../../translated_images/et/ml-regression.4e4f70e3b3ed446e.webp) -> 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 -[![ML algajatele - Seadista oma tööriistad masinõppemudelite loomiseks](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML algajatele - Seadista oma tööriistad masinõppemudelite loomiseks") +[![Masinõpe algajatele - Seadista oma tööriistad masinõppemudelite ehitamiseks](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](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) > - > [![Seadista Python Visual Studio Code'iga](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Seadista Python Visual Studio Code'iga") + > [![Seadista Python Visual Studio Code’iga](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](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. -[![ML algajatele - Seadista Jupyter märkmikud regressioonimudelite loomiseks](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML algajatele - Seadista Jupyter märkmikud regressioonimudelite loomiseks") +[![Masinõpe algajatele - Seadista Jupyter Notebookid regressioonimudelite ehituse alustamiseks](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](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 ``` -![VS Code avatud märkmikuga](../../../../translated_images/et/notebook.4a3ee31f396b8832.webp) +![VS Code koos avatuna oleva notebookiga](../../../../translated_images/et/notebook.4a3ee31f396b8832.webp) -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). -[![ML algajatele - Sinu esimene lineaarse regressiooni projekt Pythonis](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](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. +[![Masinõpe algajatele - sinu esimene lineaarse regressiooni projekt Pythonis](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](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() ``` - ![hajusdiagramm, mis näitab diabeediga seotud andmepunkte](../../../../translated_images/et/scatterplot.ad8b356bcbb33be6.webp) -✅ 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. + ![hajuvusdiagramm, mis näitab diabeedi andmepunkte](../../../../translated_images/et/scatterplot.ad8b356bcbb33be6.webp) + -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 -![Andmete visualiseerimise infograafika](../../../../translated_images/et/data-visualization.54e56dded7c1a804.webp) +![Andmete visualiseerimise infograafik](../../../../translated_images/et/data-visualization.54e56dded7c1a804.webp) -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. -[![ML algajatele - Kuidas analüüsida ja puhastada andmekogumit](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML algajatele - Kuidas analüüsida ja puhastada andmekogumit") +[![Masinõpe algajatele - Kuidas analüüsida ja puhastada andmestikku](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](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. -[![ML algajatele - Kuidas visualiseerida andmeid Matplotlibiga](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML algajatele - Kuidas visualiseerida andmeid Matplotlibiga") +[![Masinõpe algajatele - Kuidas visualiseerida andmeid Matplotlibiga](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](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() ``` - ![Hajuvusdiagramm, mis näitab hinna ja kuu suhet](../../../../translated_images/et/scatterplot.b6868f44cbd2051c.webp) + ![Hajuvusdiagramm, mis näitab hinna ja kuu seost](../../../../translated_images/et/scatterplot.b6868f44cbd2051c.webp) - 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 ![Tulpdiagramm, mis näitab hinna ja kuu suhet](../../../../translated_images/et/barchart.a833ea9194346d76.webp) - 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) + ``` + + ![Seaborni hajuvusdiagramm, mis näitab hinna ja kuu suhet](../../../../translated_images/et/relplot.a03837d8f0329cec.webp) + + 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) + ``` + + ![Seaborni joondiagramm, mis näitab hinna ja kuu suhet](../../../../translated_images/et/lineplot.f9034ba47b1e30ee.webp) + + 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") + ``` + + ![Seaborn tulpdiagramm, mis näitab hinna jaotust kuude lõikes](../../../../translated_images/et/catplot.e73fc35fdf96242b.webp) + + 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") + ``` + + ![Seaborni soojuskaart, mis näitab korrelatsioone numbriliste veergude vahel](../../../../translated_images/et/heatmap.bd98dce43b404c57.webp) + + 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 @@ # ساخت راه‌حل‌های یادگیری ماشین با هوش مصنوعی مسئولانه + +![خلاصه‌ای از هوش مصنوعی مسئولانه در یادگیری ماشین در یک اسکچ نوت](../../../../translated_images/fa/ml-fairness.ef296ebec6afc98a.webp) +> اسکچ نوت از [Tomomi Imura](https://www.twitter.com/girlie_mac) -![خلاصه‌ای از هوش مصنوعی مسئولانه در یادگیری ماشین در یک طرح](../../../../sketchnotes/ml-fairness.png) -> طرح توسط [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://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](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) +- **نقد ناعادلانه**. به ناحق چیزی یا کسی را نقد و برچسب زدن. به عنوان مثال، تکنولوژی برچسب‌گذاری تصاویر بدنام، تصاویر افراد با پوست تیره را به اشتباه به عنوان گوریل برچسب زد. +- **نمایندگی بیش از حد یا کمتر از حد**. ایده این است که گروه خاصی در حرفه‌ای دیده نمی‌شود و هر خدمتی یا عملکردی که این وضعیت را تداوم می‌بخشد، به آسیب کمک می‌کند. +- **کلیشه‌سازی**. نسبت دادن ویژگی‌های پیش‌فرض به یک گروه مشخص. به عنوان مثال، سیستم ترجمه زبانی بین انگلیسی و ترکی ممکن است به دلیل کلمات با ارتباطات کلیشه‌ای جنسیتی دچار اشتباه شود. -![ترجمه به ترکی](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) +![ترجمه به ترکی](../../../../translated_images/fa/gender-bias-translate-en-tr.f185fd8822c2d437.webp) > ترجمه به ترکی -![ترجمه به انگلیسی](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) -> ترجمه به انگلیسی +![ترجمه بازگشت به انگلیسی](../../../../translated_images/fa/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) +> ترجمه بازگشت به انگلیسی -هنگام طراحی و آزمایش سیستم‌های هوش مصنوعی، باید اطمینان حاصل کنیم که هوش مصنوعی عادلانه است و به گونه‌ای برنامه‌ریزی نشده است که تصمیمات متعصبانه یا تبعیض‌آمیز بگیرد، تصمیماتی که انسان‌ها نیز از گرفتن آن‌ها منع شده‌اند. تضمین عدالت در هوش مصنوعی و یادگیری ماشین همچنان یک چالش پیچیده اجتماعی-فنی است. +هنگام طراحی و آزمایش سیستم‌های هوش مصنوعی، باید اطمینان حاصل کنیم که هوش مصنوعی عادلانه است و برنامه‌ای برای اتخاذ تصمیمات مغرضانه یا تبعیض‌آمیز ندارد، که انسان‌ها نیز از انجام آن منع شده‌اند. تضمین عدالت در هوش مصنوعی و یادگیری ماشین همچنان یک چالش پیچیده اجتماعی-فنی است. ### قابلیت اطمینان و ایمنی -برای ایجاد اعتماد، سیستم‌های هوش مصنوعی باید قابل اعتماد، ایمن و سازگار در شرایط عادی و غیرمنتظره باشند. مهم است بدانیم که سیستم‌های هوش مصنوعی در انواع مختلف شرایط چگونه رفتار خواهند کرد، به ویژه زمانی که موارد استثنایی هستند. هنگام ساخت راه‌حل‌های هوش مصنوعی، باید تمرکز قابل توجهی بر نحوه مدیریت انواع مختلف شرایطی که راه‌حل‌های هوش مصنوعی با آن‌ها مواجه می‌شوند، وجود داشته باشد. برای مثال، یک ماشین خودران باید ایمنی افراد را به عنوان اولویت اصلی قرار دهد. در نتیجه، هوش مصنوعی که ماشین را قدرت می‌بخشد باید تمام سناریوهای ممکن را که ماشین ممکن است با آن‌ها روبرو شود، مانند شب، طوفان‌های رعد و برق یا کولاک، کودکان در حال دویدن در خیابان، حیوانات خانگی، ساخت‌وسازهای جاده‌ای و غیره در نظر بگیرد. اینکه یک سیستم هوش مصنوعی چقدر می‌تواند طیف گسترده‌ای از شرایط را به طور قابل اعتماد و ایمن مدیریت کند، سطح پیش‌بینی‌پذیری را که دانشمند داده یا توسعه‌دهنده هوش مصنوعی در طراحی یا آزمایش سیستم در نظر گرفته است، منعکس می‌کند. +برای ایجاد اعتماد، سیستم‌های هوش مصنوعی باید قابل اطمینان، ایمن و ثابت در شرایط عادی و غیرمنتظره باشند. مهم است بدانیم سیستم‌های هوش مصنوعی چگونه در شرایط مختلف، به ویژه موارد پرت، رفتار خواهند کرد. هنگام ساخت راه‌حل‌های هوش مصنوعی باید تمرکز زیادی بر نحوه برخورد با شرایط متنوعی که سیستم ممکن است با آن روبرو شود، گذاشته شود. برای مثال، یک خودرو خودران باید ایمنی مردم را در اولویت قرار دهد. در نتیجه، هوش مصنوعی که خودرو را هدایت می‌کند باید همه سناریوهای ممکن مانند شب، رعد و برق یا بوران، کودکانی که از خیابان عبور می‌کنند، حیوانات خانگی، ساخت‌وسازهای جاده‌ای و غیره را مدنظر داشته باشد. اینکه یک سیستم هوش مصنوعی چگونه می‌تواند طیف وسیعی از شرایط را به‌طور قابل اعتماد و ایمن مدیریت کند، بازتابی از میزان پیش‌بینی دانشمند داده یا توسعه‌دهنده هوش مصنوعی در طراحی یا آزمایش سیستم است. -> [🎥 روی اینجا کلیک کنید برای ویدئو: ](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) -- از آنجا که سیستم‌های هوش مصنوعی بسیار پیچیده هستند، درک نحوه عملکرد آن‌ها و تفسیر نتایج دشوار است. -- این عدم درک بر نحوه مدیریت، عملیاتی شدن و مستندسازی این سیستم‌ها تأثیر می‌گذارد. -- این عدم درک مهم‌تر از همه بر تصمیماتی که با استفاده از نتایج تولید شده توسط این سیستم‌ها گرفته می‌شود، تأثیر می‌گذارد. +- به دلیل پیچیدگی سیستم‌های هوش مصنوعی، درک چگونگی کار آن‌ها و تفسیر نتایج دشوار است. +- این کمبود درک بر نحوه مدیریت، عملیاتی شدن و مستندسازی این سیستم‌ها تأثیر می‌گذارد. +- این کمبود درک بخصوص روی تصمیماتی که بر اساس نتایج این سیستم‌ها گرفته می‌شود، تأثیرگذار است. ### مسئولیت‌پذیری + +افرادی که سیستم‌های هوش مصنوعی را طراحی و پیاده‌سازی می‌کنند باید مسئول چگونگی عملکرد سیستم‌هایشان باشند. نیاز به مسئولیت‌پذیری به ویژه برای فناوری‌های حساس مانند تشخیص چهره حیاتی است. اخیراً تقاضا برای فناوری تشخیص چهره رو به افزایش است، به خصوص از طرف سازمان‌های اجرای قانون که پتانسیل این فناوری را در مواردی مانند یافتن کودکان گمشده می‌بینند. با این حال، این فناوری‌ها می‌توانند توسط دولت‌ها برای تهدید آزادی‌های اساسی شهروندان استفاده شوند، به عنوان مثال با نظارت مداوم بر افراد خاص. بنابراین، دانشمندان داده و سازمان‌ها باید مسئول باشند که سیستم هوش مصنوعی‌شان چگونه بر افراد یا جامعه تأثیر می‌گذارد. -افرادی که سیستم‌های هوش مصنوعی را طراحی و اجرا می‌کنند باید مسئول نحوه عملکرد سیستم‌های خود باشند. نیاز به مسئولیت‌پذیری به ویژه در فناوری‌های حساس مانند تشخیص چهره بسیار مهم است. اخیراً، تقاضا برای فناوری تشخیص چهره افزایش یافته است، به ویژه از سوی سازمان‌های اجرای قانون که پتانسیل این فناوری را در استفاده‌هایی مانند یافتن کودکان گمشده می‌بینند. با این حال، این فناوری‌ها می‌توانند به طور بالقوه توسط یک دولت برای به خطر انداختن آزادی‌های اساسی شهروندان خود استفاده شوند، به عنوان مثال، با امکان نظارت مداوم بر افراد خاص. بنابراین، دانشمندان داده و سازمان‌ها باید مسئول تأثیر سیستم هوش مصنوعی خود بر افراد یا جامعه باشند. +[![هشدار محقق برجسته هوش مصنوعی درباره نظارت گسترده از طریق تشخیص چهره](../../../../translated_images/fa/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "رویکرد مایکروسافت به هوش مصنوعی مسئولانه") -[![هشدار محقق برجسته هوش مصنوعی درباره نظارت گسترده از طریق تشخیص چهره](../../../../1-Introduction/3-fairness/images/accountability.png)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "رویکرد مایکروسافت به هوش مصنوعی مسئولانه") +> 🎥 برای ویدیو: هشدارهای نظارت گسترده از طریق تشخیص چهره، روی تصویر بالا کلیک کنید -> 🎥 روی تصویر بالا کلیک کنید برای ویدئو: هشدار درباره نظارت گسترده از طریق تشخیص چهره +در نهایت یکی از بزرگ‌ترین سوالات نسل ما، به عنوان نسل اولی که هوش مصنوعی را به جامعه وارد می‌کند، این است که چگونه اطمینان حاصل کنیم که کامپیوترها همچنان نسبت به مردم پاسخگو باقی بمانند و چگونه اطمینان حاصل کنیم کسانی که کامپیوترها را طراحی می‌کنند نسبت به همه باقی مردم پاسخگو باشند. -در نهایت یکی از بزرگ‌ترین سوالات برای نسل ما، به عنوان اولین نسلی که هوش مصنوعی را به جامعه می‌آورد، این است که چگونه می‌توان اطمینان حاصل کرد که کامپیوترها همچنان مسئولیت‌پذیر باقی می‌مانند و چگونه می‌توان اطمینان حاصل کرد که افرادی که کامپیوترها را طراحی می‌کنند مسئولیت‌پذیر باقی می‌مانند. +## ارزیابی تاثیر -## ارزیابی تأثیر +قبل از آموزش یک مدل یادگیری ماشین، مهم است که ارزیابی تأثیر انجام شود تا هدف از سیستم هوش مصنوعی، نحوه استفاده مورد نظر، محل استقرار و افرادی که با سیستم تعامل دارند، درک شود. این موارد برای ارزیابان یا تست‌کنندگان سیستم مفید است تا عوامل مورد توجه هنگام شناسایی خطرات احتمالی و پیامدهای پیش‌بینی شده را بدانند. -قبل از آموزش یک مدل یادگیری ماشین، مهم است که یک ارزیابی تأثیر انجام شود تا هدف سیستم هوش مصنوعی، استفاده مورد نظر، محل اجرا و افرادی که با سیستم تعامل خواهند داشت، درک شود. این موارد برای بازبین‌ها یا آزمایش‌کنندگان سیستم مفید هستند تا بدانند چه عواملی را باید هنگام شناسایی خطرات بالقوه و پیامدهای مورد انتظار در نظر بگیرند. +حوزه‌های اصلی هنگام انجام ارزیابی تأثیر عبارتند از: -موارد زیر حوزه‌های تمرکز هنگام انجام ارزیابی تأثیر هستند: +* **تأثیر منفی بر افراد**. آگاهی از هرگونه محدودیت یا نیازمندی، استفاده غیرمجاز یا هر محدودیت شناخته شده که کارایی سیستم را مختل کند، برای اطمینان از عدم استفاده سیستم به روش مضر برای افراد حیاتی است. +* **نیازهای داده‌ای**. درک این که سیستم چگونه و کجا از داده استفاده می‌کند، به ارزیابان این امکان را می‌دهد که هر نیاز داده‌ای که باید رعایت شود (مانند مقررات GDPR یا HIPAA) را بررسی کنند. علاوه بر این، منبع یا مقدار داده برای آموزش کافی بودن را ارزیابی کنند. +* **خلاصه تأثیر**. فهرستی از آسیب‌های احتمالی ناشی از استفاده از سیستم جمع‌آوری کنید. در طول چرخه عمر یادگیری ماشین، بررسی کنید که آیا مسائل شناسایی شده کاهش یافته یا برطرف شده‌اند. +* **اهداف قابل اعمال** برای هر یک از شش اصل اصلی. ارزیابی کنید که آیا اهداف هر اصل برآورده شده‌اند و آیا شکاف‌هایی وجود دارد یا خیر. -* **تأثیر نامطلوب بر افراد**. آگاهی از هرگونه محدودیت یا الزامات، استفاده غیرپشتیبانی شده یا هر محدودیت شناخته شده‌ای که عملکرد سیستم را مختل می‌کند، برای اطمینان از اینکه سیستم به گونه‌ای استفاده نمی‌شود که به افراد آسیب برساند، حیاتی است. -* **نیازهای داده**. درک نحوه و محل استفاده سیستم از داده‌ها به بازبین‌ها امکان می‌دهد تا هرگونه نیاز داده‌ای را که باید به آن توجه شود (مانند مقررات داده GDPR یا HIPPA) بررسی کنند. علاوه بر این، بررسی کنید که آیا منبع یا مقدار داده برای آموزش کافی است. -* **خلاصه تأثیر**. فهرستی از آسیب‌های بالقوه‌ای که ممکن است از استفاده از سیستم ایجاد شود، جمع‌آوری کنید. در طول چرخه عمر یادگیری ماشین، بررسی کنید که آیا مسائل شناسایی شده کاهش یافته یا برطرف شده‌اند. -* **اهداف قابل اجرا** برای هر یک از شش اصل اصلی. ارزیابی کنید که آیا اهداف هر یک از اصول برآورده شده‌اند و آیا شکاف‌هایی وجود دارد. ## اشکال‌زدایی با هوش مصنوعی مسئولانه -مشابه اشکال‌زدایی یک برنامه نرم‌افزاری، اشکال‌زدایی یک سیستم هوش مصنوعی فرآیند ضروری شناسایی و حل مشکلات در سیستم است. عوامل زیادی وجود دارند که می‌توانند باعث شوند یک مدل به طور مورد انتظار یا مسئولانه عمل نکند. اکثر معیارهای عملکرد مدل‌های سنتی، تجمعات کمی از عملکرد مدل هستند که برای تحلیل نحوه نقض اصول هوش مصنوعی مسئولانه کافی نیستند. علاوه بر این، یک مدل یادگیری ماشین یک جعبه سیاه است که درک آنچه باعث نتیجه آن می‌شود یا ارائه توضیح زمانی که اشتباه می‌کند، دشوار است. در ادامه این دوره، یاد خواهیم گرفت که چگونه از داشبورد هوش مصنوعی مسئولانه برای کمک به اشکال‌زدایی سیستم‌های هوش مصنوعی استفاده کنیم. این داشبورد ابزار جامعی برای دانشمندان داده و توسعه‌دهندگان هوش مصنوعی فراهم می‌کند تا انجام دهند: +مشابه اشکال‌زدایی برنامه نرم‌افزاری، اشکال‌زدایی سیستم هوش مصنوعی فرآیندی ضروری برای شناسایی و حل مشکلات در سیستم است. عوامل زیادی می‌توانند باعث شوند مدل مطابق انتظار یا به صورت مسئولانه عمل نکند. اکثر معیارهای عملکرد مدل سنتی، مقادیر عددی کلی عملکرد مدل هستند که برای تحلیل نقض اصول هوش مصنوعی مسئولانه کافی نیستند. علاوه بر این، مدل یادگیری ماشین جعبه سیاهی است که درک محرک‌های خروجی آن یا ارائه توضیح در هنگام خطا را دشوار می‌کند. در ادامه این دوره، یاد می‌گیریم چگونه از داشبورد هوش مصنوعی مسئولانه برای کمک به اشکال‌زدایی سیستم‌های هوش مصنوعی استفاده کنیم. این داشبورد ابزار جامع برای دانشمندان داده و توسعه‌دهندگان هوش مصنوعی فراهم می‌کند تا: + +* **تحلیل خطا**. شناسایی توزیع خطاهای مدل که می‌تواند بر عدالت یا قابلیت اطمینان سیستم تأثیر بگذارد. +* **نمای کلی مدل**. کشف نقاط اختلاف عملکرد مدل در داده‌های گروه‌های مختلف. +* **تحلیل داده**. فهم توزیع داده‌ها و شناسایی هر گونه تعصب احتمالی که ممکن است به مشکلات عدالت، جامعیت یا قابلیت اطمینان منجر شود. +* **تفسیری بودن مدل**. درک عوامل مؤثر بر پیش‌بینی‌های مدل که به توضیح رفتار مدل، مهم برای شفافیت و مسئولیت‌پذیری کمک می‌کند. -* **تحلیل خطا**. برای شناسایی توزیع خطاهای مدل که می‌تواند بر عدالت یا قابلیت اطمینان سیستم تأثیر بگذارد. -* **نمای کلی مدل**. برای کشف اینکه کجا در عملکرد مدل در میان گروه‌های داده تفاوت وجود دارد. -* **تحلیل داده‌ها**. برای درک توزیع داده‌ها و شناسایی هرگونه تعصب بالقوه در داده‌ها که می‌تواند منجر به مسائل عدالت، فراگیری و قابلیت اطمینان شود. -* **قابلیت تفسیر مدل**. برای درک اینکه چه چیزی بر پیش‌بینی‌های مدل تأثیر می‌گذارد یا آن‌ها را تحت تأثیر قرار می‌دهد. این امر به توضیح رفتار مدل کمک می‌کند که برای شفافیت و مسئولیت‌پذیری مهم است. ## 🚀 چالش + +برای جلوگیری از وارد شدن آسیب‌ها از ابتدا، باید: + +- تنوعی از پیش‌زمینه‌ها و دیدگاه‌ها را در میان افرادی که روی سیستم‌ها کار می‌کنند داشته باشیم. +- در مجموعه داده‌هایی سرمایه‌گذاری کنیم که تنوع جامعه ما را منعکس کنند. +- روش‌های بهتری در طول چرخه عمر یادگیری ماشین برای شناسایی و اصلاح هوش مصنوعی مسئولانه هنگام وقوع آن توسعه دهیم. + +درباره سناریوهای واقعی فکر کنید که در آن عدم اطمینان مدل در ساخت و استفاده از مدل مشخص است. چه موارد دیگری باید در نظر بگیریم؟ + +## [آزمون پس از درس](https://ff-quizzes.netlify.app/en/ml/) -برای جلوگیری از معرفی آسیب‌ها در وهله اول، باید: +## مرور و خودآموزی + -- تنوع در پیشینه‌ها و دیدگاه‌ها در میان افرادی که روی سیستم‌ها کار می‌کنند داشته باشیم. -- در مجموعه داده‌هایی که تنوع جامعه ما را منعکس می‌کنند سرمایه‌گذاری کنیم. -- روش‌های بهتری در طول چرخه -تماشای این کارگاه برای بررسی عمیق‌تر موضوعات: +در این درس، شما برخی اصول اولیه مفاهیم عدالت و بی‌عدالتی در یادگیری ماشین را یاد گرفته‌اید. + +برای بررسی عمیق‌تر موضوعات، این کارگاه را تماشا کنید: -- در جستجوی هوش مصنوعی مسئولانه: تبدیل اصول به عمل توسط بسیمرا نوشی، مهرنوش سامکی و آمیت شارما +- در جستجوی هوش مصنوعی مسئولانه: به‌کارگیری اصول در عمل توسط بِسمیرا نوشی، مهرنوش سامکی و آمیـت شارما -[![جعبه‌ابزار هوش مصنوعی مسئولانه: یک چارچوب متن‌باز برای ساخت هوش مصنوعی مسئولانه](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: یک چارچوب متن‌باز برای ساخت هوش مصنوعی مسئولانه") +[![جعبه‌ابزار هوش مصنوعی مسئولانه: چارچوب متن‌باز برای ساخت هوش مصنوعی مسئول](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](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 برای مدل‌های رگرسیون -![خلاصه‌ای از رگرسیون‌ها در یک اسکچ‌نوت](../../../../sketchnotes/ml-regression.png) +![خلاصه‌ای از رگرسیون‌ها در یک اسکچ‌نوت](../../../../translated_images/fa/ml-regression.4e4f70e3b3ed446e.webp) > اسکچ‌نوت توسط [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://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "یادگیری ماشین برای مبتدیان - تنظیم ابزارها برای ساخت مدل‌های یادگیری ماشین") +[![یادگیری ماشین برای مبتدیان - آماده‌سازی ابزارها برای ساخت مدل‌های یادگیری ماشین](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](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)، با پایتون راحت شوید. > - > [![تنظیم پایتون با Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "تنظیم پایتون با Visual Studio Code") + > [![راه‌اندازی پایتون با Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](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` شناسایی می‌شود. -نوت‌بوک‌ها یک محیط تعاملی هستند که به توسعه‌دهنده اجازه می‌دهند هم کدنویسی کنند و هم یادداشت‌ها و مستندات پیرامون کد بنویسند، که برای پروژه‌های آزمایشی یا تحقیقاتی بسیار مفید است. +دفترچه‌ها محیطی تعاملی هستند که به توسعه‌دهنده اجازه می‌دهد هم کد بنویسد و هم یادداشت‌ها و مستندات پیرامون کد را اضافه کند که برای پروژه‌های تجربی یا پژوهشی بسیار مفید است. -[![یادگیری ماشین برای مبتدیان - تنظیم Jupyter Notebooks برای شروع ساخت مدل‌های رگرسیون](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "یادگیری ماشین برای مبتدیان - تنظیم Jupyter Notebooks برای شروع ساخت مدل‌های رگرسیون") +[![یادگیری ماشین برای مبتدیان - راه‌اندازی Jupyter Notebooks برای شروع ساخت مدل‌های رگرسیون](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](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 ``` -![VS Code با یک نوت‌بوک باز](../../../../2-Regression/1-Tools/images/notebook.jpg) +![نمای VS Code با یک دفترچه باز](../../../../translated_images/fa/notebook.4a3ee31f396b8832.webp) -شما می‌توانید کد خود را با نظرات ترکیب کنید تا نوت‌بوک را خود-مستند کنید. +می‌توانید کد خود را با کامنت‌هایی برای خودتان همراه کنید تا دفترچه مستند شود. -✅ برای یک دقیقه فکر کنید که محیط کاری یک توسعه‌دهنده وب چقدر با محیط کاری یک دانشمند داده متفاوت است. +✅ کمی فکر کنید که محیط کاری یک توسعه‌دهنده وب چقدر با محیط کاری یک دانشمند داده متفاوت است. -## شروع کار با 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://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](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() ``` - ![یک نمودار پراکندگی که نقاط داده درباره دیابت را نشان می‌دهد](../../../../2-Regression/1-Tools/images/scatterplot.png) -✅ کمی فکر کنید که اینجا چه اتفاقی می‌افتد. یک خط مستقیم از میان نقاط کوچک زیادی از داده عبور می‌کند، اما دقیقاً چه کاری انجام می‌دهد؟ آیا می‌توانید ببینید که چگونه باید بتوانید از این خط برای پیش‌بینی محل قرارگیری یک نقطه داده جدید و دیده‌نشده نسبت به محور y نمودار استفاده کنید؟ سعی کنید کاربرد عملی این مدل را به زبان بیاورید. + ![یک نمودار پراکندگی که نقاط داده مرتبط با دیابت را نشان می‌دهد](../../../../translated_images/fa/scatterplot.ad8b356bcbb33be6.webp) + -تبریک می‌گویم، شما اولین مدل رگرسیون خطی خود را ساختید، با آن یک پیش‌بینی انجام دادید و آن را در یک نمودار نمایش دادید! + ✅ کمی فکر کنید درباره‌ی آنچه اینجا اتفاق می‌افتد. یک خط مستقیم از میان بسیاری نقاط کوچک داده عبور می‌کند، اما دقیقاً چه کاری انجام می‌دهد؟ آیا می‌توانید ببینید چگونه باید بتوانید از این خط استفاده کنید تا پیش‌بینی کنید یک نقطه داده جدید و دیده نشده باید نسبت به محور 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: آماده‌سازی و تجسم داده‌ها -![اینفوگرافیک مصورسازی داده‌ها](../../../../2-Regression/2-Data/images/data-visualization.png) +![تصویر اینفوگرافیک تجسم داده‌ها](../../../../translated_images/fa/data-visualization.54e56dded7c1a804.webp) اینفوگرافیک توسط [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://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "یادگیری ماشین برای مبتدیان - چگونه یک مجموعه داده را تحلیل و پاکسازی کنیم") +[![ML برای مبتدیان - چگونه یک مجموعه داده را تحلیل و پاکسازی کنیم](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](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 پوند است." همه این‌ها کمی پیچیده است! بیا تبدیل بوشل به پوند را کنار بگذاریم و قیمت را بر اساس بوشل در نظر بگیریم. با این حال، این مطالعه در مورد بوشل‌های کدو تنبل نشان می‌دهد چقدر مهم است که ماهیت داده‌ها را درک کنیم! -حالا می‌توانید قیمت‌گذاری به ازای واحد را بر اساس اندازه‌گیری بوشل تحلیل کنید. اگر داده‌ها را یک بار دیگر چاپ کنید، می‌توانید ببینید که چگونه استاندارد شده‌اند. +اکنون می‌توانید قیمت‌گذاری بر اساس واحد بر اساس اندازه‌گیری بوشل آن‌ها را تحلیل کنید. اگر یک بار دیگر داده‌ها را چاپ کنید، خواهید دید که چگونه استاندارد شده است. -✅ آیا متوجه شدید که کدو تنبل‌هایی که به ازای نیم‌بوشل فروخته می‌شوند بسیار گران هستند؟ آیا می‌توانید دلیل آن را پیدا کنید؟ نکته: کدو تنبل‌های کوچک بسیار گران‌تر از کدو تنبل‌های بزرگ هستند، احتمالاً به این دلیل که تعداد بیشتری از آن‌ها در هر بوشل وجود دارد، با توجه به فضای خالی که توسط یک کدو تنبل بزرگ توخالی اشغال می‌شود. +✅ متوجه شده‌اید کدو تنبل‌هایی که نصف بوشل فروخته می‌شوند بسیار گران‌ترند؟ می‌توانید دلیل آن را حدس بزنید؟ نکته: کدو تنبل‌های کوچک احتمالاً خیلی گران‌ترند چون تعدادشان در هر بوشل خیلی بیشتر است، به دلیل فضای بلااستفاده‌ای که یک کدو تنبل بزرگ توخالی اشغال می‌کند. -## استراتژی‌های مصورسازی +## استراتژی‌های تجسم داده‌ها -بخشی از نقش دانشمند داده این است که کیفیت و ماهیت داده‌هایی که با آن‌ها کار می‌کند را نشان دهد. برای این کار، آن‌ها اغلب مصورسازی‌های جالبی، مانند نمودارها، گراف‌ها و چارت‌ها، ایجاد می‌کنند که جنبه‌های مختلف داده‌ها را نشان می‌دهند. به این ترتیب، آن‌ها می‌توانند روابط و شکاف‌هایی را که در غیر این صورت سخت است کشف شوند، به صورت بصری نشان دهند. +بخشی از نقش دانشمند داده این است که کیفیت و ماهیت داده‌هایی را که با آن‌ها کار می‌کند نشان دهد. برای این منظور، اغلب تجسم‌های جالب، یا نمودارها، گراف‌ها و چارت‌های مختلفی ایجاد می‌کنند که جنبه‌های متفاوت داده را نمایش می‌دهد. به این ترتیب، آن‌ها می‌توانند روابط و شکاف‌هایی که سخت قابل کشف هستند را به‌صورت بصری نشان دهند. -[![یادگیری ماشین برای مبتدیان - چگونه داده‌ها را با Matplotlib مصورسازی کنیم](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "یادگیری ماشین برای مبتدیان - چگونه داده‌ها را با Matplotlib مصورسازی کنیم") +[![ML برای مبتدیان - چگونه با Matplotlib داده‌ها را تجسم کنیم](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](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() ``` - ![یک نمودار پراکندگی که رابطه قیمت با ماه را نشان می‌دهد](../../../../2-Regression/2-Data/images/scatterplot.png) + ![یک نمودار پراکندگی که رابطه قیمت و ماه را نشان می‌دهد](../../../../translated_images/fa/scatterplot.b6868f44cbd2051c.webp) - آیا این نمودار مفید است؟ آیا چیزی در مورد آن شما را شگفت‌زده می‌کند؟ + آیا این نمودار مفید است؟ آیا چیزی درباره آن شما را متعجب می‌کند؟ - این نمودار چندان مفید نیست زیرا فقط داده‌های شما را به صورت پراکندگی نقاط در یک ماه خاص نمایش می‌دهد. + این نمودار چندان مفید نیست چون فقط داده‌های شما را به صورت پراکندگی نقاط در ماه نمایش می‌دهد. ### آن را مفید کنید -برای اینکه نمودارها داده‌های مفید را نمایش دهند، معمولاً باید داده‌ها را به نوعی گروه‌بندی کنید. بیایید سعی کنیم نموداری ایجاد کنیم که محور y ماه‌ها را نشان دهد و داده‌ها توزیع داده‌ها را نشان دهند. +برای اینکه نمودارها داده‌های مفید نشان دهند، معمولاً باید داده‌ها را به نوعی گروه‌بندی کنید. بیایید امتحان کنیم نموداری بسازیم که محور y ماه‌ها را نشان دهد و داده توزیع داده‌ها را نمایش دهد. -1. یک سلول برای ایجاد نمودار میله‌ای گروه‌بندی‌شده اضافه کنید: +1. یک سلول اضافه کنید تا نمودار میله‌ای گروه‌بندی شده بسازد: ```python new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') plt.ylabel("Pumpkin Price") ``` - ![یک نمودار میله‌ای که رابطه قیمت با ماه را نشان می‌دهد](../../../../2-Regression/2-Data/images/barchart.png) + ![یک نمودار میله‌ای که رابطه قیمت و ماه را نشان می‌دهد](../../../../translated_images/fa/barchart.a833ea9194346d76.webp) + + این تجسم داده مفیدتری است! به نظر می‌رسد بالاترین قیمت کدو تنبل در سپتامبر و اکتبر رخ می‌دهد. آیا این با انتظار شما مطابقت دارد؟ چرا یا چرا نه؟ + +## تمرین - آزمایش با 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) + ``` + + ![یک نمودار پراکندگی Seaborn که رابطه قیمت به ماه را نشان می‌دهد](../../../../translated_images/fa/relplot.a03837d8f0329cec.webp) + + توجه کنید چگونه نام‌ ستون‌ها و dataframe را می‌دهید و Seaborn برچسب‌های محورها را برای شما تعیین می‌کند. + +2. می‌توانید با دادن `kind="line"` به یک نمودار خطی تغییر دهید. Seaborn حتی نوار سایه‌داری برای نشان دادن بازه اطمینان در اطراف خط رسم می‌کند: + + ```python + sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins) + ``` + + ![یک نمودار خطی Seaborn که رابطه قیمت به ماه را نشان می‌دهد](../../../../translated_images/fa/lineplot.f9034ba47b1e30ee.webp) + + این داده خاص نویزی است پس نمودار خطی بهترین انتخاب نیست — اما نشان می‌دهد چقدر راحت می‌توانید نوع نمودار را در 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") + ``` + + ![یک نمودار میله‌ای Seaborn که توزیع قیمت در هر ماه را نشان می‌دهد](../../../../translated_images/fa/catplot.e73fc35fdf96242b.webp) + + این تایید می‌کند آنچه با 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") + ``` + + ![یک نقشه حرارتی Seaborn که همبستگی بین ستون‌های عددی را نشان می‌دهد](../../../../translated_images/fa/heatmap.bd98dce43b404c57.webp) + + مقادیری نزدیک به `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-یادگیری -![خلاصه‌ای از یادگیری تقویتی در یادگیری ماشین در یک اسکچ‌نوت](../../../../sketchnotes/ml-reinforcement.png) -> اسکچ‌نوت توسط [Tomomi Imura](https://www.twitter.com/girlie_mac) +![خلاصه‌ای از یادگیری تقویتی در یادگیری ماشین در یک اسکچ نوت](../../../../translated_images/fa/ml-reinforcement.94024374d63348db.webp) +> اسکچ‌نوت توسط [تامومی ایمورا](https://www.twitter.com/girlie_mac) -یادگیری تقویتی شامل سه مفهوم مهم است: عامل، حالت‌ها، و مجموعه‌ای از اقدامات برای هر حالت. با انجام یک اقدام در یک حالت مشخص، عامل یک پاداش دریافت می‌کند. دوباره بازی کامپیوتری سوپر ماریو را تصور کنید. شما ماریو هستید، در یک مرحله بازی، کنار لبه یک پرتگاه ایستاده‌اید. بالای شما یک سکه قرار دارد. شما که ماریو هستید، در یک مرحله بازی، در یک موقعیت خاص... این حالت شماست. حرکت یک قدم به سمت راست (یک اقدام) شما را به پایین پرتگاه می‌برد و این به شما امتیاز عددی پایینی می‌دهد. اما فشار دادن دکمه پرش به شما اجازه می‌دهد امتیاز کسب کنید و زنده بمانید. این یک نتیجه مثبت است و باید به شما امتیاز عددی مثبت بدهد. +یادگیری تقویتی شامل سه مفهوم مهم است: عامل، چند حالت و مجموعه‌ای از اقدامات برای هر حالت. با اجرای یک اقدام در حالت مشخص، به عامل پاداش داده می‌شود. دوباره بازی کامپیوتری سوپر ماریو را تصور کنید. شما ماریو هستید، در یک سطح بازی، کنار لبه پرتگاه ایستاده‌اید. بالای شما یک سکه است. شما به‌عنوان ماریو، در یک سطح بازی، در موقعیت خاص ... این حالت شماست. رفتن یک قدم به سمت راست (یک اقدام) شما را از لبه پرتگاه می‌اندازد و این نمره عددی کمی به شما خواهد داد. اما فشردن دکمه پرش به شما امکان می‌دهد یک امتیاز کسب کنید و زنده بمانید. این یک نتیجه مثبت است و باید به شما نمره عددی مثبت بدهد. -با استفاده از یادگیری تقویتی و یک شبیه‌ساز (بازی)، می‌توانید یاد بگیرید چگونه بازی کنید تا پاداش را به حداکثر برسانید، که شامل زنده ماندن و کسب بیشترین امتیاز ممکن است. +با استفاده از یادگیری تقویتی و شبیه‌ساز (بازی)، می‌توانید یاد بگیرید چگونه بازی کنید تا پاداش را که زنده ماندن و کسب بیشترین امتیاز است، به حداکثر برسانید. -[![مقدمه‌ای بر یادگیری تقویتی](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) +[![معرفی یادگیری تقویتی](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) -> 🎥 روی تصویر بالا کلیک کنید تا صحبت‌های دیمیتری درباره یادگیری تقویتی را بشنوید +> 🎥 برای شنیدن توضیحات دیمیتری درباره یادگیری تقویتی، روی تصویر بالا کلیک کنید -## [پیش‌آزمون درس](https://ff-quizzes.netlify.app/en/ml/) +## [آزمون قبل از درس](https://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` در نظر بگیریم، مانند این: -![محیط پیتر](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![محیط پیتر](../../../../translated_images/fa/environment.40ba3cb66256c93f.webp) -هر سلول در این تخته می‌تواند یکی از موارد زیر باشد: +هر خانه در این صفحه می‌تواند یکی از موارد زیر باشد: -* **زمین**، که پیتر و موجودات دیگر می‌توانند روی آن راه بروند. -* **آب**، که به وضوح نمی‌توانید روی آن راه بروید. -* یک **درخت** یا **چمن**، جایی که می‌توانید استراحت کنید. -* یک **سیب**، که چیزی است که پیتر خوشحال می‌شود پیدا کند تا خودش را تغذیه کند. -* یک **گرگ**، که خطرناک است و باید از آن اجتناب کرد. +* **زمین**، که پیتر و دیگر موجودات می‌توانند روی آن راه بروند. +* **آب**، که البته نمی‌توانید روی آن راه بروید. +* یک **درخت** یا **چمن**، مکانی برای استراحت. +* یک **سیب**، که نمایانگر چیزی است که پیتر خوشحال می‌شود آن را پیدا کند و خودش را تغذیه کند. +* یک **گرگ**، که خطرناک است و باید از آن اجتناب شود. -یک ماژول جداگانه پایتون، [`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 قدم است. + توجه داشته باشید که طول متوسط مسیر حدود ۳۰ تا ۴۰ قدم است که نسبتاً زیاد است، با توجه به اینکه فاصله متوسط تا نزدیک‌ترین سیب حدود ۵ تا ۶ قدم است. - همچنین می‌توانید ببینید حرکت پیتر در طول قدم زدن تصادفی چگونه به نظر می‌رسد: + همچنین می‌توانید ببینید حرکت پیتر در طی گام تصادفی چگونه است: - ![قدم زدن تصادفی پیتر](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) + ![گام تصادفی پیتر](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) ## تابع پاداش -برای هوشمندتر کردن سیاست خود، باید بفهمیم کدام حرکت‌ها "بهتر" از دیگران هستند. برای این کار، باید هدف خود را تعریف کنیم. +برای هوشمندتر کردن سیاست ما، باید بفهمیم کدام حرکات «بهتر» از بقیه هستند. برای این کار، باید هدف خود را تعریف کنیم. -هدف می‌تواند به صورت یک **تابع پاداش** تعریف شود، که برای هر حالت یک مقدار امتیاز بازمی‌گرداند. هرچه عدد بالاتر باشد، تابع پاداش بهتر است. (بلوک کد 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)`. -![محیط پیتر](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![محیط پیتر](../../../../translated_images/fa/env_init.04e8f26d2d60089e.webp) -در مرکز هر سلول یک "فلش" وجود دارد که جهت ترجیحی حرکت را نشان می‌دهد. از آنجا که همه جهت‌ها برابر هستند، یک نقطه نمایش داده می‌شود. +در مرکز هر خانه یک «فلش» وجود دارد که جهت اولویت حرکت را نشان می‌دهد. از آنجایی که همه جهت‌ها برابر هستند، یک نقطه نمایش داده می‌شود. -اکنون باید شبیه‌سازی را اجرا کنیم، محیط خود را کشف کنیم، و یک توزیع بهتر از مقادیر جدول 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. + +![فرار بزرگ!](../../../../translated_images/fa/escape.18862db9930337e3.webp) + +> پیتر و دوستانش برای فرار از گرگ خلاقیت به خرج می‌دهند! تصویر از [Jen Looper](https://twitter.com/jenlooper) + +ما از نسخه ساده‌شده‌ای از تعادل استفاده خواهیم کرد که به عنوان مسئله **CartPole** شناخته می‌شود. در دنیای CartPole، ما یک لغزنده افقی داریم که می‌تواند به چپ یا راست حرکت کند و هدف این است که یک قطب عمودی را روی لغزنده تعادل دهیم. + +a cartpole + +## پیش‌نیازها + +در این درس از کتابخانه‌ای به نام **OpenAI Gym** برای شبیه‌سازی **محیط‌های** مختلف استفاده خواهیم کرد. می‌توانید کد این درس را به صورت محلی (مثلاً در Visual Studio Code) اجرا کنید که در این صورت شبیه‌سازی در پنجره‌ای جدید باز می‌شود. هنگام اجرای کد به صورت آنلاین، ممکن است به تنظیماتی در کد نیاز داشته باشید، همانطور که [اینجا](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7) توضیح داده شده است. + +## OpenAI Gym + +در درس قبلی قوانین بازی و حالت توسط کلاس `Board` که خودمان تعریف کردیم ارائه شد. اینجا از یک **محیط شبیه‌سازی خاص** استفاده خواهیم کرد که فیزیک پشت قطب تعادلی را شبیه‌سازی می‌کند. یکی از محبوب‌ترین محیط‌های شبیه‌سازی برای آموزش الگوریتم‌های تقویت یادگیری، [Gym](https://gym.openai.com/) است که توسط [OpenAI](https://openai.com/) نگهداری می‌شود. با استفاده از این 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() ``` - باید چیزی مشابه این تصویر مشاهده کنید: +    شما باید چیزی شبیه به این تصویر ببینید: - ![CartPole بدون تعادل](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) +    ![cartpole بدون تعادل](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) -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) ``` -![پیشرفت خام](../../../../8-Reinforcement/2-Gym/images/train_progress_raw.png) +![پیشرفت خام](../../../../translated_images/fa/train_progress_raw.2adfdf2daea09c59.webp) -از این نمودار نمی‌توان چیزی گفت، زیرا به دلیل ماهیت فرآیند آموزش تصادفی، طول جلسات آموزشی بسیار متفاوت است. برای درک بهتر این نمودار، می‌توان میانگین متحرک را در طول یک سری آزمایش‌ها، مثلاً 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)) ``` -![پیشرفت آموزش](../../../../8-Reinforcement/2-Gym/images/train_progress_runav.png) +![پیشرفت آموزش](../../../../translated_images/fa/train_progress_runav.c71694a8fa9ab359.webp) + +## تغییر ابرپارامترها + +برای پایدارتر کردن یادگیری، منطقی است که برخی از ابرپارامترها را در طول آموزش تنظیم کنیم. به خصوص: + +- **برای نرخ یادگیری**، `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() شما باید چیزی شبیه به این ببینید: -![یک چرخ دستی متعادل](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) +![یک میله تعادلی روی چرخ‌دستی](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) --- ## 🚀چالش -> **وظیفه ۳**: در اینجا، ما از نسخه نهایی 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 - -![Yhteenveto vastuullisesta tekoälystä koneoppimisessa sketchnotessa](../../../../sketchnotes/ml-fairness.png) -> Sketchnote: [Tomomi Imura](https://www.twitter.com/girlie_mac) - -## [Ennakkotesti](https://ff-quizzes.netlify.app/en/ml/) +# Koneoppimissovellusten rakentaminen vastuullisella tekoälyllä + +![Yhteenveto vastuullisesta tekoälystä koneoppimisessa sketchnotena](../../../../translated_images/fi/ml-fairness.ef296ebec6afc98a.webp) +> 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) [![Microsoftin lähestymistapa vastuulliseen tekoälyyn](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](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](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) +![käännös turkiksi](../../../../translated_images/fi/gender-bias-translate-en-tr.f185fd8822c2d437.webp) > käännös turkiksi -![käännös takaisin englanniksi](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) +![käännös takaisin englanniksi](../../../../translated_images/fi/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) > 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. -[![Johtava tekoälytutkija varoittaa kasvojentunnistuksen massavalvonnasta](../../../../1-Introduction/3-fairness/images/accountability.png)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoftin lähestymistapa vastuulliseen tekoälyyn") +[![Huippuluokan tekoälytutkija varoittaa massavalvonnasta kasvojentunnistuksen avulla](../../../../translated_images/fi/accountability.41d8c0f4b85b6231.webp)](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: -[![Responsible AI Toolbox: Avoimen lähdekoodin kehys vastuullisen tekoälyn rakentamiseen](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](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 +[![Vastuullisen tekoälyn työkalupakki: Avoimen lähdekoodin kehys vastuullisen tekoälyn rakentamiseen](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") -> 🎥 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 -![Yhteenveto regressioista luonnosmuistiinpanossa](../../../../sketchnotes/ml-regression.png) +![Yhteenveto regressioista sketchnote-kuvana](../../../../translated_images/fi/ml-regression.4e4f70e3b3ed446e.webp) -> 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 -[![ML aloittelijoille - Valmista työkalusi koneoppimismallien rakentamiseen](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML aloittelijoille - Valmista työkalusi koneoppimismallien rakentamiseen") +[![Aloittelijoille ML - Valmistele työkalut koneoppimismallien rakentamista varten](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](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 > - > [![Pythonin konfigurointi Visual Studio Codessa](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Pythonin konfigurointi Visual Studio Codessa") + > [![Pythonin asennus Visual Studio Codeen](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](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. -[![ML aloittelijoille - Jupyter Notebookien asennus regressiomallien rakentamisen aloittamiseksi](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML aloittelijoille - Jupyter Notebookien asennus regressiomallien rakentamisen aloittamiseksi") +[![Aloittelijoille ML - Jupyter Notebookien asennus regressiomallien rakentamisen aloittamiseksi](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](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 ``` -![VS Code avoinna notebookin kanssa](../../../../2-Regression/1-Tools/images/notebook.jpg) +![VS Code, jossa notebook avoinna](../../../../translated_images/fi/notebook.4a3ee31f396b8832.webp) -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). -[![ML aloittelijoille - Ensimmäinen lineaarisen regression projekti Pythonilla](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "ML aloittelijoille - Ensimmäinen lineaarisen regression projekti Pythonilla") + +[![Aloittelijoille ML - Ensimmäinen projektisi lineaarisessa regressiossa Pythonilla](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](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() ``` - ![scatterplot, joka näyttää datapisteet diabetekseen liittyen](../../../../2-Regression/1-Tools/images/scatterplot.png) -✅ 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. + ![hajontakuvio, joka näyttää datapisteitä diabetestä koskien](../../../../translated_images/fi/scatterplot.ad8b356bcbb33be6.webp) + -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 -![Datavisualisoinnin infografiikka](../../../../2-Regression/2-Data/images/data-visualization.png) +![Datan visualisointiin liittyvä infografiikka](../../../../translated_images/fi/data-visualization.54e56dded7c1a804.webp) -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. -[![ML aloittelijoille - Kuinka analysoida ja siivota datasetti](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML aloittelijoille - Kuinka analysoida ja siivota datasetti") +[![ML aloittelijoille - Kuinka analysoida ja puhdistaa datasetti](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](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. -[![ML aloittelijoille - Kuinka visualisoida dataa Matplotlibilla](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML aloittelijoille - Kuinka visualisoida dataa Matplotlibilla") +[![ML aloittelijoille - Kuinka visualisoida dataa Matplotlibillä](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](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() ``` - ![Hajontakaavio, joka näyttää hinnan ja kuukauden välisen suhteen](../../../../2-Regression/2-Data/images/scatterplot.png) + ![Hajontakuvio, joka näyttää hinnan ja kuukauden välisen suhteet](../../../../translated_images/fi/scatterplot.b6868f44cbd2051c.webp) - 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") ``` - ![Pylväskaavio, joka näyttää hinnan ja kuukauden välisen suhteen](../../../../2-Regression/2-Data/images/barchart.png) + ![Pylväskaavio, joka näyttää hinnan ja kuukauden välisen suhteet](../../../../translated_images/fi/barchart.a833ea9194346d76.webp) + + 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) + ``` + + ![Seabornin hajontakuvaaja, joka näyttää hinnan ja kuukauden välisen suhteen](../../../../translated_images/fi/relplot.a03837d8f0329cec.webp) + + 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) + ``` + + ![Seabornin viivakuvaaja, joka näyttää hinnan ja kuukauden välisen suhteen](../../../../translated_images/fi/lineplot.f9034ba47b1e30ee.webp) + + 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") + ``` + + ![Seaborn-pylväskaavio, joka näyttää hinnan jakauman kuukausittain](../../../../translated_images/fi/catplot.e73fc35fdf96242b.webp) + + 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") + ``` + + ![Seaborn-lämmityskartta, joka näyttää korrelaatiot numeeristen sarakkeiden välillä](../../../../translated_images/fi/heatmap.bd98dce43b404c57.webp) + + 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 -![Yhteenveto vahvistusoppimisesta koneoppimisessa sketchnotena](../../../../sketchnotes/ml-reinforcement.png) -> Sketchnote by [Tomomi Imura](https://www.twitter.com/girlie_mac) +![Vahvistusoppimisen yhteenveto koneoppimisessa sketchnotessa](../../../../translated_images/fi/ml-reinforcement.94024374d63348db.webp) +> 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ä. [![Johdanto vahvistusoppimiseen](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](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: -![Pekan ympäristö](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![Petterin Ympäristö](../../../../translated_images/fi/environment.40ba3cb66256c93f.webp) -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: - ![Pekan satunnainen kävely](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) + ![Petterin satunnaiskävely](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) -## 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)`. -![Pekan ympäristö](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![Petterin Ympäristö](../../../../translated_images/fi/env_init.04e8f26d2d60089e.webp) -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. + +![Suuri pako!](../../../../translated_images/fi/escape.18862db9930337e3.webp) + +> 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ä. + +cartpole + ## 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: - ![ei tasapainottava cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) + ![tasapainottamaton cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) -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) ``` -![raaka edistyminen](../../../../8-Reinforcement/2-Gym/images/train_progress_raw.png) +![raakakuva](../../../../translated_images/fi/train_progress_raw.2adfdf2daea09c59.webp) -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)) ``` -![koulutuksen edistyminen](../../../../8-Reinforcement/2-Gym/images/train_progress_runav.png) +![koulutuksen edistyminen](../../../../translated_images/fi/train_progress_runav.c71694a8fa9ab359.webp) + +## 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: ![tasapainottava cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) @@ -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 - -![Résumé de l'IA responsable dans le Machine Learning sous forme de sketchnote](../../../../sketchnotes/ml-fairness.png) +# Construire des solutions d’apprentissage automatique avec une IA responsable + +![Résumé de l'IA responsable dans l'apprentissage automatique sous forme de sketchnote](../../../../translated_images/fr/ml-fairness.ef296ebec6afc98a.webp) > 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) -[![Approche de Microsoft sur l'IA responsable](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Approche de Microsoft sur l'IA responsable") +[![Approche de Microsoft pour une IA responsable](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](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](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) -> traduction en turc +![traduction vers le turc](../../../../translated_images/fr/gender-bias-translate-en-tr.f185fd8822c2d437.webp) +> traduction vers le turc -![traduction en anglais](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) -> traduction en anglais +![traduction retour en anglais](../../../../translated_images/fr/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) +> 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é. +[![Chercheur principal en IA met en garde contre la surveillance de masse via la reconnaissance faciale](../../../../translated_images/fr/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Approche de Microsoft pour une IA responsable") -[![Un chercheur en IA met en garde contre la surveillance de masse via la reconnaissance faciale](../../../../1-Introduction/3-fairness/images/accountability.png)](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 -[![Responsible AI Toolbox : Un cadre open-source pour construire une IA responsable](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox : Un cadre open-source pour construire une IA responsable") +[![Responsible AI Toolbox: An open-source framework for building responsible AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") -> 🎥 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 -![Résumé des régressions dans une sketchnote](../../../../sketchnotes/ml-regression.png) +![Résumé des régressions dans un sketchnote](../../../../translated_images/fr/ml-regression.4e4f70e3b3ed446e.webp) > 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 -[![ML pour débutants - Configurez vos outils pour créer des modèles d'apprentissage automatique](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML pour débutants - Configurez vos outils pour créer des modèles d'apprentissage automatique") +[![ML pour débutants - Préparez vos outils pour construire des modèles d'apprentissage automatique](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](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) > - > [![Configurer Python avec Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Configurer Python avec Visual Studio Code") + > [![Configurez Python avec Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](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. -[![ML pour débutants - Configurez Jupyter Notebooks pour commencer à créer des modèles de régression](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML pour débutants - Configurez Jupyter Notebooks pour commencer à créer des modèles de régression") +[![ML pour débutants - Configurez Jupyter Notebooks pour commencer à construire des modèles de régression](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](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 ``` -![VS Code avec un notebook ouvert](../../../../2-Regression/1-Tools/images/notebook.jpg) +![VS Code avec un notebook ouvert](../../../../translated_images/fr/notebook.4a3ee31f396b8832.webp) -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. + [![ML pour débutants - Votre premier projet de régression linéaire en Python](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](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() ``` - ![un nuage de points montrant des données sur le diabète](../../../../2-Regression/1-Tools/images/scatterplot.png) -✅ 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. + ![Un nuage de points montrant des données autour du diabète](../../../../translated_images/fr/scatterplot.ad8b356bcbb33be6.webp) + + + ✅ 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 sur la visualisation des données](../../../../2-Regression/2-Data/images/data-visualization.png) +![Infographie de visualisation des données](../../../../translated_images/fr/data-visualization.54e56dded7c1a804.webp) 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. -[![ML pour débutants - Comment analyser et nettoyer un ensemble de données](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML pour débutants - Comment analyser et nettoyer un ensemble de données") +[![ML pour débutants - Comment analyser et nettoyer un jeu de données](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](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. [![ML pour débutants - Comment visualiser les données avec Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](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() ``` - ![Un nuage de points montrant la relation entre le prix et le mois](../../../../2-Regression/2-Data/images/scatterplot.png) + ![Un graphique de dispersion montrant la relation prix-mois](../../../../translated_images/fr/scatterplot.b6868f44cbd2051c.webp) - 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") ``` - ![Un graphique en barres montrant la relation entre le prix et le mois](../../../../2-Regression/2-Data/images/barchart.png) + ![Un histogramme montrant la relation prix-mois](../../../../translated_images/fr/barchart.a833ea9194346d76.webp) + + 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) + ``` + + ![Un nuage de points Seaborn montrant la relation prix-mois](../../../../translated_images/fr/relplot.a03837d8f0329cec.webp) + + 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) + ``` + + ![Un graphique linéaire Seaborn montrant la relation prix-mois](../../../../translated_images/fr/lineplot.f9034ba47b1e30ee.webp) + + 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") + ``` + + ![Un graphique à barres Seaborn montrant la distribution des prix par mois](../../../../translated_images/fr/catplot.e73fc35fdf96242b.webp) + + 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") + ``` + + ![Une carte thermique Seaborn montrant les corrélations entre les colonnes numériques](../../../../translated_images/fr/heatmap.bd98dce43b404c57.webp) + + 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 -![Résumé du renforcement dans l'apprentissage automatique sous forme de sketchnote](../../../../sketchnotes/ml-reinforcement.png) +![Résumé de l'apprentissage par renforcement en apprentissage automatique dans un sketchnote](../../../../translated_images/fr/ml-reinforcement.94024374d63348db.webp) > 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. [![Introduction à l'apprentissage par renforcement](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](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 : -![Environnement de Pierre](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![Environnement de Pierre](../../../../translated_images/fr/environment.40ba3cb66256c93f.webp) -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 : ![Marche aléatoire de Pierre](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) ## 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)`. -![Environnement de Pierre](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![Environnement de Pierre](../../../../translated_images/fr/env_init.04e8f26d2d60089e.webp) -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. + +![La grande évasion !](../../../../translated_images/fr/escape.18862db9930337e3.webp) + +> 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. + +un cartpole + ## 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 : - ![CartPole sans équilibre](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) + ![cartpole sans équilibre](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) -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) ``` -![progrès brut](../../../../8-Reinforcement/2-Gym/images/train_progress_raw.png) +![progression brute](../../../../translated_images/fr/train_progress_raw.2adfdf2daea09c59.webp) -À 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)) ``` -![progrès de l'entraînement](../../../../8-Reinforcement/2-Gym/images/train_progress_runav.png) +![progression de l’entraînement](../../../../translated_images/fr/train_progress_runav.c71694a8fa9ab359.webp) ## 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 : -![un chariot en équilibre](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) +![un pendule inversé en équilibre](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) --- ## 🚀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 אחראי - -![סיכום של AI אחראי בלמידת מכונה בסקיצה](../../../../sketchnotes/ml-fairness.png) -> סקיצה מאת [Tomomi Imura](https://www.twitter.com/girlie_mac) - -## [שאלון לפני ההרצאה](https://ff-quizzes.netlify.app/en/ml/) +# בניית פתרונות למידת מכונה עם בינה מלאכותית אחראית + +![סיכום של בינה מלאכותית אחראית בלמידת מכונה בשרטוט](../../../../translated_images/he/ml-fairness.ef296ebec6afc98a.webp) +> שרטוט מאת [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) -[![הגישה של Microsoft ל-AI אחראי](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "הגישה של Microsoft ל-AI אחראי") +[![הגישה של מיקרוסופט לבינה מלאכותית אחראית](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](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) +- **השמצה**. לבקר ולהתייג משהו או מישהו בצורה בלתי הוגנת. לדוגמה, טכנולוגיית סימון תמונות תויגה לשמצה כאשר סימנה בטעות תמונות של אנשים עם עור כהה ככלבים. +- **ייצוג מופרז או חסר**. הרעיון הוא שקבוצה מסוימת לא נראית במקצוע מסוים, וכל שירות או פונקציה שמקדם זאת תורם לנזק. +- **סטריאוטיפים**. לקשר קבוצה מסוימת עם תכונות מוקצות מראש. לדוגמה, מערכת תרגום שפות בין אנגלית לטורקית עלולה להכיל אי דיוקים בגלל מילים של סטריאוטיפים מגדריים. -![תרגום לטורקית](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) +![תרגום לטורקית](../../../../translated_images/he/gender-bias-translate-en-tr.f185fd8822c2d437.webp) > תרגום לטורקית -![תרגום חזרה לאנגלית](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) +![תרגום חזרה לאנגלית](../../../../translated_images/he/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) > תרגום חזרה לאנגלית -בעת עיצוב ובדיקת מערכות 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 שלהם משפיעה על אנשים או על החברה. +[![חוקר בינה מוביל מזהיר מפני מעקב המוני באמצעות זיהוי פנים](../../../../translated_images/he/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "הגישה של מיקרוסופט לבינה מלאכותית אחראית") -[![חוקר AI מוביל מזהיר מפני מעקב המוני באמצעות זיהוי פנים](../../../../1-Introduction/3-fairness/images/accountability.png)](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/) -## סקירה ולימוד עצמי +## סקירה ולמידה עצמית + -בשיעור זה, למדתם כמה יסודות של מושגי הוגנות וחוסר הוגנות בלמידת מכונה. -צפו בסדנה זו כדי להעמיק בנושאים: +בשיעור זה, למדתם כמה יסודות של מושגי הוגנות ואי-הוגנות בלמידת מכונה. + +צפו בסדנה זו כדי להעמיק בנושאים: -- במרדף אחר בינה מלאכותית אחראית: יישום עקרונות בפועל מאת בסמירה נושי, מהרנוש סמקי ואמיט שארמה +- במרדף אחרי בינה מלאכותית אחראית: הבאת עקרונות אל הפרקטיקה מאת בסמירה נושי, מהרנווש סמאקי ואמיט שרמה -[![Responsible AI Toolbox: מסגרת קוד פתוח לבניית בינה מלאכותית אחראית](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: מסגרת קוד פתוח לבניית בינה מלאכותית אחראית") +[![ערכת כלים לבינה מלאכותית אחראית: מסגרת קוד פתוח לבניית בינה מלאכותית אחראית](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](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 למודלי רגרסיה -![סיכום של רגרסיות בסקצ'נוט](../../../../sketchnotes/ml-regression.png) +![סיכום של רגרסיות בסקצ'נוט](../../../../translated_images/he/ml-regression.4e4f70e3b3ed446e.webp) -> סקצ'נוט מאת [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, כולל התקנה. -- לחקור רגרסיה ליניארית באמצעות תרגיל מעשי. +- לחקור את הרגרסיה הליניארית באמצעות תרגיל מעשי. ## התקנות והגדרות -[![ML למתחילים - הגדרת הכלים שלכם לבניית מודלים של למידת מכונה](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML למתחילים - הגדרת הכלים שלכם לבניית מודלים של למידת מכונה") +[![ML למתחילים - התקן את הכלים שלך כדי לבנות מודלי למידת מכונה](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](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) > - > [![הגדרת Python עם Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "הגדרת Python עם Visual Studio Code") + > [![הגדר Python עם Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](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`. -מחברות הן סביבה אינטראקטיבית שמאפשרת למפתח גם לקודד וגם להוסיף הערות ולכתוב תיעוד סביב הקוד, מה שמאוד מועיל עבור פרויקטים ניסיוניים או מחקריים. +פנקסים הם סביבה אינטראקטיבית שמאפשרת למפתח גם לקודד וגם להוסיף הערות ולכתוב תיעוד סביב הקוד, דבר שעוזר מאוד בפרויקטים ניסיוניים או מחקריים. -[![ML למתחילים - הגדרת מחברות Jupyter כדי להתחיל לבנות מודלים של רגרסיה](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML למתחילים - הגדרת מחברות Jupyter כדי להתחיל לבנות מודלים של רגרסיה") +[![ML למתחילים - התקן פנקסי Jupyter כדי להתחיל לבנות מודלי רגרסיה](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](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 ``` -![VS Code עם מחברת פתוחה](../../../../2-Regression/1-Tools/images/notebook.jpg) +![VS Code עם פנקס פתוח](../../../../translated_images/he/notebook.4a3ee31f396b8832.webp) -אתם יכולים לשלב את הקוד שלכם עם הערות כדי לתעד את המחברת בעצמכם. +אתה יכול לסרוג את הקוד שלך עם הערות לתיעוד פנקס עצמאי. -✅ חשבו לרגע כמה שונה סביבת העבודה של מפתחי אתרים מזו של מדעני נתונים. +✅ חשוב לרגע איך הסביבה של מפתח ווב שונה מאוד מזו של מדען נתונים. -## התחלה עם 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. -[![ML למתחילים - פרויקט הרגרסיה הליניארית הראשון שלכם ב-Python](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "ML למתחילים - פרויקט הרגרסיה הליניארית הראשון שלכם ב-Python") -> 🎥 לחצו על התמונה למעלה לצפייה בסרטון קצר על ביצוע התרגיל הזה. +[![ML למתחילים - פרויקט הרגרסיה הליניארית הראשון שלך בפייתון](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](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() ``` - ![גרף פיזור שמציג נקודות נתונים סביב סוכרת](../../../../2-Regression/1-Tools/images/scatterplot.png) -✅ תחשבו קצת על מה שקורה כאן. קו ישר עובר דרך הרבה נקודות קטנות של נתונים, אבל מה הוא עושה בדיוק? האם אתם יכולים לראות איך אפשר להשתמש בקו הזה כדי לחזות איפה נקודת נתונים חדשה ולא מוכרת צריכה להתאים ביחס לציר ה-y של הגרף? נסו לנסח במילים את השימוש המעשי של המודל הזה. + ![גרף פיזור המציג נקודות מידע סביב סוכרת](../../../../translated_images/he/scatterplot.ad8b356bcbb33be6.webp) + -מזל טוב, יצרתם את מודל הרגרסיה הליניארית הראשון שלכם, ביצעתם תחזית באמצעותו, והצגתם אותה בגרף! + ✅ חשוב קצת על מה שקורה כאן. קו ישר עובר דרך נקודות נתונים קטנות רבות, אבל מה הוא בעצם עושה? האם אתה רואה כיצד אתה אמור להיות מסוגל להשתמש בקו הזה כדי לחזות היכן נקודת נתונים חדשה ובלתי נראית צריכה להתאים ביחס לציר ה- 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: להכין ול визуализировать נתונים -![אינפוגרפיקה של ויזואליזציה של נתונים](../../../../2-Regression/2-Data/images/data-visualization.png) +![אינפוגרפיקה של ויזואליזציית נתונים](../../../../translated_images/he/data-visualization.54e56dded7c1a804.webp) -אינפוגרפיקה מאת [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' שבה הנתונים הם תערובת בין 'שקים', 'מכלים' וערכים אחרים. הנתונים, למעשה, מעט מבולגנים. -[![ML למתחילים - איך לנתח ולנקות מערך נתונים](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML למתחילים - איך לנתח ולנקות מערך נתונים") +[![למידת מכונה למתחילים - איך לנתח ולנקות קבוצת נתונים](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](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, בהתחשב במקום הלא מנוצל שנלקח על ידי דלעת פאי גדולה וחלולה אחת. +✅ האם שמת לב שדלעות שנמכרות בחצי בושהל יקרות מאוד? תוכל להבין למה? רמז: דלעות קטנות הרבה יותר יקרות מדלעות גדולות, כנראה בגלל שיש הרבה יותר מהן בבושהל, בהתחשב במקום הלא מנוצל שמכילה דלעת עוגה גדולה ומחוררת אחת. ## אסטרטגיות ויזואליזציה -חלק מתפקידו של מדען הנתונים הוא להציג את האיכות והאופי של הנתונים שהוא עובד איתם. לשם כך, הם לעיתים קרובות יוצרים ויזואליזציות מעניינות, כמו גרפים, תרשימים ומפות, שמציגים היבטים שונים של הנתונים. בדרך זו, הם יכולים להראות באופן חזותי קשרים ופערים שקשה לחשוף בדרך אחרת. +חלק מתפקיד מדען הנתונים הוא להמחיש את איכות וטבע הנתונים שהם עובדים איתם. לשם כך, הם לעיתים יוצרים ויזואליזציות מעניינות, תרשימים, גרפים וטבלאות, המראים היבטים שונים של הנתונים. כך הם יכולים להראות בצורה ויזואלית קשרים ופערים שקשה לגלות בדרך אחרת. -[![ML למתחילים - איך לויזואליזציה של נתונים עם Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML למתחילים - איך לויזואליזציה של נתונים עם Matplotlib") +[![למידת מכונה למתחילים - איך להמחיש נתונים עם Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](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() ``` - ![תרשים פיזור שמראה את הקשר בין מחיר לחודש](../../../../2-Regression/2-Data/images/scatterplot.png) + ![תרשים פיזור המציג קשר בין מחיר לחודש](../../../../translated_images/he/scatterplot.b6868f44cbd2051c.webp) - האם זה גרף שימושי? האם משהו בו מפתיע אותך? + האם תרשים זה שימושי? האם משהו בו מפתיע אותך? - זה לא מאוד שימושי מכיוון שכל מה שהוא עושה זה להציג את הנתונים שלך כפריסה של נקודות בחודש נתון. + זה אינו שימושי במיוחד כי כל מה שהוא עושה הוא להציג את הנתונים שלך כהתפרסות נקודות בחודש נתון. -### להפוך את זה לשימושי +### להפוך אותו לשימושי -כדי לקבל גרפים שמציגים נתונים שימושיים, בדרך כלל צריך לקבץ את הנתונים בצורה כלשהי. בואו ננסה ליצור גרף שבו ציר ה-y מציג את החודשים והנתונים מדגימים את התפלגות הנתונים. +כדי שתרשימים יציגו נתונים שימושיים, בדרך כלל צריך לקבץ את הנתונים בצורה מסוימת. בוא ננסה ליצור תרשים שבו ציר ה-y מראה את החודשים והנתונים מראים את התפלגות הנתונים. 1. הוסף תא ליצירת תרשים עמודות מקובץ: @@ -191,21 +191,96 @@ plt.ylabel("Pumpkin Price") ``` - ![תרשים עמודות שמראה את הקשר בין מחיר לחודש](../../../../2-Regression/2-Data/images/barchart.png) + ![תרשים עמודות המראה קשר בין מחיר לחודש](../../../../translated_images/he/barchart.a833ea9194346d76.webp) + + זו ויזואליזציית נתונים שימושית יותר! נראה שהיא מצביעה שהמחיר הכי גבוה לדלעות הוא בספטמבר ואוקטובר. האם זה עונה על הציפייה שלך? למה או למה לא? + +## תרגיל - התנסה ב-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 המראה קשר בין מחיר לחודש](../../../../translated_images/he/relplot.a03837d8f0329cec.webp) + + שים לב כיצד מעבירים את _שמות העמודות_ ואת מערך הנתונים, ו-Seaborn מטפל בתוויות הצירים בשבילך. + +2. אפשר לעבור לתרשים קו על ידי העברת `kind="line"`. Seaborn אפילו מציירת רצועה מוצללת שמציגה את תחום האמון סביב הקו: + + ```python + sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins) + ``` + + ![תרשים קו Seaborn המראה קשר בין מחיר לחודש](../../../../translated_images/he/lineplot.f9034ba47b1e30ee.webp) + + הנתונים הספציפיים האלה די רעשניים, אז תרשים קו לא הבחירה הברורה ביותר כאן — אבל הוא מראה כמה קל לשנות סוגי תרשימים ב-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") + ``` + + ![תרשים עמודות של Seaborn המציג את התפלגות המחירים לפי חודש](../../../../translated_images/he/catplot.e73fc35fdf96242b.webp) + + זה מאשר את מה שראית עם 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") + ``` + + ![מפת חום של Seaborn המציגה קורלציות בין העמודות המספריות](../../../../translated_images/he/heatmap.bd98dce43b404c57.webp) + + ערכים הקרובים ל-`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 -![סיכום למידת חיזוק בלמידת מכונה בסקצ'נוט](../../../../sketchnotes/ml-reinforcement.png) -> סקצ'נוט מאת [Tomomi Imura](https://www.twitter.com/girlie_mac) +![סיכום של למידת חיזוק בלמידת מכונה בבישול](../../../../translated_images/he/ml-reinforcement.94024374d63348db.webp) +> בישול של [Tomomi Imura](https://www.twitter.com/girlie_mac) -למידת חיזוק כוללת שלושה מושגים חשובים: הסוכן, מצבים מסוימים, ומערך פעולות לכל מצב. על ידי ביצוע פעולה במצב מסוים, הסוכן מקבל תגמול. דמיינו שוב את משחק המחשב סופר מריו. אתם מריו, נמצאים ברמת משחק, עומדים ליד קצה צוק. מעליכם יש מטבע. אתם, בתור מריו, ברמת משחק, במיקום ספציפי... זהו המצב שלכם. צעד אחד ימינה (פעולה) יוביל אתכם מעבר לקצה, וזה יעניק לכם ניקוד נמוך. לעומת זאת, לחיצה על כפתור הקפיצה תאפשר לכם לצבור נקודה ולהישאר בחיים. זהו תוצאה חיובית שצריכה להעניק לכם ניקוד חיובי. +למידת חיזוק כוללת שלושה מושגים חשובים: הסוכן, כמה מצבים, וקבוצת פעולות לכל מצב. על ידי ביצוע פעולה במצב מסוים, מוענק לסוכן תגמול. שוב דמיינו את משחק המחשב סופר מריו. אתה מריו, אתה ברמת משחק, עומד ליד קצה צוק. מעליך יש מטבע. אתה בתור מריו, ברמת משחק, במיקום מסוים ... זה המצב שלך. הזזה צעד אחד ימינה (פעולה) תגרום לך ליפול מהקצה, וזו תיתן לך ציון מספרי נמוך. עם זאת, לחיצה על כפתור הקפיצה תאפשר לך לצבור נקודה ותישאר בחיים. זו תוצאה חיובית והיא צריכה להעניק ציון מספרי חיובי. -באמצעות למידת חיזוק וסימולטור (המשחק), ניתן ללמוד כיצד לשחק את המשחק כדי למקסם את התגמול, כלומר להישאר בחיים ולצבור כמה שיותר נקודות. +באמצעות למידת חיזוק וסימולטור (המשחק), ניתן ללמוד כיצד לשחק במשחק בכדי למקסם את התגמול שהוא הישרדות וצבירת נקודות מרביות. [![מבוא ללמידת חיזוק](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) -> 🎥 לחצו על התמונה למעלה כדי לשמוע את דמיטרי מדבר על למידת חיזוק +> 🎥 לחצו על התמונה למעלה כדי לשמוע את דימיטרי מדבר על למידת חיזוק -## [שאלון לפני השיעור](https://ff-quizzes.netlify.app/en/ml/) +## [בחן טרם ההרצאה](https://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`, כך: -![הסביבה של פטר](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![סביבתו של פיטר](../../../../translated_images/he/environment.40ba3cb66256c93f.webp) -כל תא בלוח הזה יכול להיות: +כל תא בלוח זה יכול להיות: -* **קרקע**, שעליה פטר ויצורים אחרים יכולים ללכת. +* **קרקע**, שעליה פיטר ויצורים אחרים יכולים ללכת. * **מים**, שעליהם כמובן אי אפשר ללכת. -* **עץ** או **דשא**, מקום שבו אפשר לנוח. -* **תפוח**, שמייצג משהו שפטר ישמח למצוא כדי להאכיל את עצמו. +* **עץ** או **דשא**, מקום למנוחה. +* **תפוח**, המייצג משהו שפיטר ישמח למצוא כדי להאכיל את עצמו. * **זאב**, שהוא מסוכן ויש להימנע ממנו. -ישנו מודול פייתון נפרד, [`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 צעדים. - תוכלו גם לראות כיצד נראית תנועתו של פטר במהלך ההליכה האקראית: + ניתן גם לראות כיצד נראית התנועה של פיטר במהלך ההליכה האקראית: - ![הליכה אקראית של פטר](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) + ![הליכה אקראית של פיטר](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) ## פונקציית תגמול -כדי להפוך את המדיניות שלנו לאינטליגנטית יותר, עלינו להבין אילו מהלכים הם "טובים" יותר מאחרים. לשם כך, עלינו להגדיר את המטרה שלנו. +כדי להפוך את המדיניות שלנו לחכמה יותר, עלינו להבין אילו מהלכים "טובים יותר" מאחרים. לשם כך, עלינו להגדיר את המטרה שלנו. -המטרה יכולה להיות מוגדרת במונחים של **פונקציית תגמול**, שתחזיר ערך ניקוד עבור כל מצב. ככל שהמספר גבוה יותר, כך פונקציית התגמול טובה יותר. (בלוק קוד 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)`. -![הסביבה של פטר](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![סביבתו של פיטר](../../../../translated_images/he/env_init.04e8f26d2d60089e.webp) -במרכז כל תא יש "חץ" שמצביע על כיוון התנועה המועדף. מכיוון שכל הכיוונים שווים, מוצגת נקודה. +במרכז כל תא יש "חץ" שמצביע על הכיוון המועדף לתנועה. כיוון שכל הכיוונים שווים, מוצג נקודה. -כעת עלינו להריץ את הסימולציה, לחקור את הסביבה שלנו, וללמוד חלוקה טובה יותר של ערכי טבלת 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. + +![הבריחה הגדולה!](../../../../translated_images/he/escape.18862db9930337e3.webp) + +> פיטר וחבריו מגלים יצירתיות כדי להימלט מהזאב! תמונה מאת [Jen Looper](https://twitter.com/jenlooper) + +נשתמש בגרסה מפושטת של שמירת איזון הידועה כבעיית **CartPole**. בעולם ה-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() ``` - אתם אמורים לראות משהו דומה לתמונה הזו: + תראה משהו דומה לתמונה הזו: - ![CartPole ללא איזון](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) + ![cartpole לא מאזין](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) -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) ``` -![התקדמות גולמית](../../../../8-Reinforcement/2-Gym/images/train_progress_raw.png) +![התקדמות גולמית](../../../../translated_images/he/train_progress_raw.2adfdf2daea09c59.webp) -מהגרף הזה, לא ניתן להסיק דבר, מכיוון שבשל טבעו של תהליך האימון הסטוכסטי, אורך הסשנים משתנה מאוד. כדי להבין יותר את הגרף הזה, נוכל לחשב את **הממוצע הרץ** לאורך סדרת ניסויים, נאמר 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)) ``` -![התקדמות האימון](../../../../8-Reinforcement/2-Gym/images/train_progress_runav.png) +![התקדמות האימון](../../../../translated_images/he/train_progress_runav.c71694a8fa9ab359.webp) + +## שינוי היפר-פרמטרים + +כדי להפוך את הלמידה ליציבה יותר, כדאי להתאים חלק מההיפר-פרמטרים במהלך האימון. במיוחד: + +- **לקצב הלמידה**, `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() ``` -אתם אמורים לראות משהו כזה: +אמור לראות משהו כזה: -![a balancing cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) +![עגלת איזון פנדולום](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) --- ## 🚀אתגר -> **משימה 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 के साथ मशीन लर्निंग समाधान बनाना - -![मशीन लर्निंग में जिम्मेदार AI का सारांश एक स्केच नोट में](../../../../sketchnotes/ml-fairness.png) -> स्केच नोट: [Tomomi Imura](https://www.twitter.com/girlie_mac) - -## [पाठ से पहले का क्विज़](https://ff-quizzes.netlify.app/en/ml/) +# जिम्मेदार AI के साथ मशीन लर्निंग समाधानों का निर्माण + +![मशीन लर्निंग में जिम्मेदार AI का सारांश एक स्केचनोट में](../../../../translated_images/hi/ml-fairness.ef296ebec6afc98a.webp) +> स्केचनोट द्वारा [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) का अनुसरण करें -[![Microsoft का जिम्मेदार AI के प्रति दृष्टिकोण](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoft का जिम्मेदार AI के प्रति दृष्टिकोण") +[![Microsoft का Responsible AI के प्रति दृष्टिकोण](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](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) +- **अपमानजनक टिप्पणी**। किसी चीज़ या किसी के प्रति अन्यायपूर्ण आलोचना और लेबल लगाना। उदाहरण के लिए, एक इमेज लेबलिंग तकनीक ने कुख्यात रूप से गहरे रंग की त्वचा वाले लोगों की तस्वीरों को गोरिल्ला के रूप में गलत लेबल किया। +- **अधिप्रतिनिधित्व या अतिप्रतिनिधित्व**। धारणा यह है कि किसी निश्चित समूह को किसी पेशे में नहीं देखा जाता, और कोई भी सेवा या फ़ंक्शन जो इसे बढ़ावा देता है वह हानि का योगदान देता है। +- **स्टीरियोटाइपिंग**। किसी निर्दिष्ट समूह का पूर्व निर्धारित विशेषताओं के साथ जुड़ाव। उदाहरण के लिए, अंग्रेज़ी और तुर्की भाषा के बीच अनुवाद प्रणाली में ऐसे शब्दों के कारण गलतियां हो सकती हैं, जिनके लिंग से जुड़े पूर्वाग्रह होते हैं। -![तुर्की में अनुवाद](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) +![तुर्की में अनुवाद](../../../../translated_images/hi/gender-bias-translate-en-tr.f185fd8822c2d437.webp) > तुर्की में अनुवाद -![फिर से अंग्रेजी में अनुवाद](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) -> फिर से अंग्रेजी में अनुवाद +![अंग्रेज़ी में वापस अनुवाद](../../../../translated_images/hi/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) +> अंग्रेज़ी में वापस अनुवाद -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 सिस्टम का प्रभाव व्यक्तियों या समाज पर जिम्मेदार हो। +[![मुख्य AI शोधकर्ता चेहरा पहचान के जरिए व्यापक निगरानी के लिए चेतावनी देते हुए](../../../../translated_images/hi/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft का Responsible AI के प्रति दृष्टिकोण") -[![AI शोधकर्ता ने चेहरे की पहचान के माध्यम से बड़े पैमाने पर निगरानी की चेतावनी दी](../../../../1-Introduction/3-fairness/images/accountability.png)](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 द्वारा प्रस्तुति +- जिम्मेदार एआई के प्रयास में: सिद्धांतों को अभ्यास में लाना, लेखक: बेस्मिरा नूशी, मेहरनूश सामेकी और अमित शर्मा -[![Responsible AI Toolbox: जिम्मेदार AI बनाने के लिए एक ओपन-सोर्स फ्रेमवर्क](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: जिम्मेदार AI बनाने के लिए एक ओपन-सोर्स फ्रेमवर्क") +[![Responsible AI Toolbox: An open-source framework for building responsible AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") -> 🎥 ऊपर दी गई छवि पर क्लिक करें वीडियो के लिए: 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 के साथ रिग्रेशन मॉडल्स शुरू करें +# रिग्रेशन मॉडल्स के लिए पाइथन और साइकीट-लर्न के साथ शुरुआत करें -![रिग्रेशन का स्केच नोट में सारांश](../../../../sketchnotes/ml-regression.png) +![स्केचनोट में रिग्रेशन का सारांश](../../../../translated_images/hi/ml-regression.4e4f70e3b3ed446e.webp) -> स्केच नोट [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://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "मशीन लर्निंग के लिए शुरुआती - अपने उपकरण सेटअप करें") +[![शुरुआती के लिए एमएल - मशीन लर्निंग मॉडल बनाने के लिए अपने उपकरण तैयार करें](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](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) > - > [![Python को Visual Studio Code के साथ सेटअप करें](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Python को Visual Studio Code के साथ सेटअप करें") + > [![विज़ुअल स्टूडियो कोड के साथ पायथन सेटअप करें](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](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` से पहचाना जा सकता है। -नोटबुक्स एक इंटरैक्टिव वातावरण हैं जो डेवलपर को कोड लिखने और उसके आसपास नोट्स और दस्तावेज़ जोड़ने की अनुमति देते हैं, जो शोध-उन्मुख परियोजनाओं के लिए काफी उपयोगी है। +नोटबुक्स एक इंटरैक्टिव वातावरण हैं जो डेवलपर को कोड लिखने के साथ ही उसके आसपास नोट्स और दस्तावेज़ भी जोड़ने की अनुमति देते हैं, जो प्रयोगात्मक या शोध-उन्मुख परियोजनाओं के लिए बहुत सहायक होता है। -[![मशीन लर्निंग के लिए शुरुआती - Jupyter नोटबुक्स सेटअप करें](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "मशीन लर्निंग के लिए शुरुआती - Jupyter नोटबुक्स सेटअप करें") +[![शुरुआती के लिए एमएल - रिग्रेशन मॉडल बनाने के लिए जुपिटर नोटबुक सेटअप करें](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](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 ``` -![VS Code में एक नोटबुक खुला हुआ](../../../../2-Regression/1-Tools/images/notebook.jpg) +![नोटबुक खुला हुआ VS कोड](../../../../translated_images/hi/notebook.4a3ee31f396b8832.webp) -आप अपने कोड के साथ टिप्पणियां जोड़ सकते हैं ताकि नोटबुक को स्वयं दस्तावेज़ित किया जा सके। +आप अपने कोड के बीच टिप्पणियां (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) से प्रेरित है। -[![मशीन लर्निंग के लिए शुरुआती - Python में आपका पहला लीनियर रिग्रेशन प्रोजेक्ट](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "मशीन लर्निंग के लिए शुरुआती - Python में आपका पहला लीनियर रिग्रेशन प्रोजेक्ट") -> 🎥 ऊपर दी गई छवि पर क्लिक करें ताकि आप इस अभ्यास की प्रक्रिया देख सकें। +[![शुरुआती के लिए एमएल - पाइथन में आपका पहला लीनियर रिग्रेशन प्रोजेक्ट](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](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() ``` - ![डायबिटीज के आसपास डेटा पॉइंट्स दिखाने वाला एक स्कैटरप्लॉट](../../../../2-Regression/1-Tools/images/scatterplot.png) -✅ यहां क्या हो रहा है, इस पर थोड़ा विचार करें। एक सीधी रेखा कई छोटे डेटा बिंदुओं के बीच से गुजर रही है, लेकिन यह वास्तव में क्या कर रही है? क्या आप देख सकते हैं कि इस रेखा का उपयोग करके आप यह अनुमान कैसे लगा सकते हैं कि एक नया, अनदेखा डेटा बिंदु प्लॉट के y अक्ष के संबंध में कहां फिट होगा? इस मॉडल के व्यावहारिक उपयोग को शब्दों में व्यक्त करने की कोशिश करें। + ![मधुमेह के आसपास डेटा पॉइंट्स वाला एक स्कैटरप्लॉट](../../../../translated_images/hi/scatterplot.ad8b356bcbb33be6.webp) + -बधाई हो, आपने अपना पहला लीनियर रिग्रेशन मॉडल बनाया, इसके साथ एक भविष्यवाणी की, और इसे एक प्लॉट में प्रदर्शित किया! + ✅ यहाँ जो हो रहा है उसके बारे में थोड़ा सोचें। एक सीधी रेखा कई छोटे डेटा बिंदुओं से होकर गुजर रही है, लेकिन यह वास्तव में क्या कर रही है? क्या आप देख सकते हैं कि आपको इस रेखा का उपयोग कैसे करना चाहिए ताकि यह अनुमान लगाया जा सके कि एक नया, अब तक न देखा गया डेटा पॉइंट प्लॉट के 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 का उपयोग करके एक रिग्रेशन मॉडल बनाएं: डेटा तैयार करें और विज़ुअलाईज़ करें -![डेटा विज़ुअलाइज़ेशन इन्फोग्राफिक](../../../../2-Regression/2-Data/images/data-visualization.png) +![डेटा विज़ुअलाईज़ेशन इन्फोग्राफिक](../../../../translated_images/hi/data-visualization.54e56dded7c1a804.webp) -इन्फोग्राफिक: [दसानी मडिपल्ली](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' और अन्य मानों का मिश्रण है। वास्तव में, डेटा थोड़ा अस्त-व्यस्त है। -[![शुरुआती के लिए ML - डेटा सेट का विश्लेषण और सफाई कैसे करें](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "शुरुआती के लिए ML - डेटा सेट का विश्लेषण और सफाई कैसे करें") +[![शुरुआती लोगों के लिए एमएल - डेटा सेट को कैसे विश्लेषण और साफ़ करें](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](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 उनमें कई अधिक होते हैं, जबकि एक बड़ा खोखला पाई कद्दू अधिक खाली जगह लेता है। -## विज़ुअलाइज़ेशन रणनीतियाँ +## विज़ुअलाइजेशन रणनीतियाँ -डेटा वैज्ञानिक का एक हिस्सा यह प्रदर्शित करना है कि वे जिस डेटा के साथ काम कर रहे हैं उसकी गुणवत्ता और प्रकृति क्या है। ऐसा करने के लिए, वे अक्सर दिलचस्प विज़ुअलाइज़ेशन, जैसे प्लॉट्स, ग्राफ़्स, और चार्ट्स बनाते हैं, जो डेटा के विभिन्न पहलुओं को दिखाते हैं। इस तरह, वे दृश्य रूप से उन संबंधों और अंतरालों को दिखा सकते हैं जिन्हें अन्यथा समझना कठिन होता है। +डेटा वैज्ञानिक की भूमिका का एक भाग यह दिखाना है कि वे जिस डेटा के साथ काम कर रहे हैं उसकी गुणवत्ता और प्रकृति कैसी है। इसके लिए, वे अक्सर रोचक विज़ुअलाइजेशन बनाते हैं, जैसे प्लॉट, ग्राफ़, और चार्ट, जो डेटा के विभिन्न पहलुओं को दिखाते हैं। इस तरह वे بصری रूप से रिश्तों और अंतर को दिखा पाते हैं जो अन्यथा पता लगाना कठिन होता है। -[![शुरुआती के लिए ML - Matplotlib के साथ डेटा कैसे विज़ुअलाइज़ करें](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "शुरुआती के लिए ML - Matplotlib के साथ डेटा कैसे विज़ुअलाइज़ करें") +[![शुरुआती लोगों के लिए एमएल - Matplotlib के साथ डेटा विज़ुअलाईज़ करें](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](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() ``` - ![एक स्कैटरप्लॉट जो महीने और कीमत के संबंध को दिखाता है](../../../../2-Regression/2-Data/images/scatterplot.png) + ![मूल्य और महीने के बीच संबंध दिखाने वाला स्कैटरप्लॉट](../../../../translated_images/hi/scatterplot.b6868f44cbd2051c.webp) - क्या यह एक उपयोगी प्लॉट है? क्या इसमें कुछ ऐसा है जो आपको आश्चर्यचकित करता है? + क्या यह एक उपयोगी प्लॉट है? क्या इसमें कुछ आपको आश्चर्यचकित करता है? - यह विशेष रूप से उपयोगी नहीं है क्योंकि यह केवल आपके डेटा को एक दिए गए महीने में बिंदुओं के फैलाव के रूप में प्रदर्शित करता है। + यह खास उपयोगी नहीं है क्योंकि यह केवल आपके डेटा को एक विस्तृत बिंदुओं के रूप में एक दिए गए महीने में दिखाता है। ### इसे उपयोगी बनाएं -उपयोगी डेटा प्रदर्शित करने के लिए, आपको आमतौर पर डेटा को किसी न किसी तरह से समूहित करना होता है। आइए एक प्लॉट बनाएं जहां y अक्ष महीने दिखाए और डेटा वितरण को प्रदर्शित करे। +उपयोगी डेटा चार्ट्स प्रदर्शित करने के लिए, आपको आम तौर पर डेटा को किसी तरह समूहित करना पड़ता है। चलिए एक ऐसा प्लॉट बनाने की कोशिश करें जहाँ y अक्ष महीनों को दिखाता है और डेटा वितरण को दर्शाता है। -1. एक सेल जोड़ें ताकि एक समूहित बार चार्ट बनाया जा सके: +1. एक सेल जोड़ें जो एक समूहित बार चार्ट बनाए: ```python new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') plt.ylabel("Pumpkin Price") ``` - ![एक बार चार्ट जो महीने और कीमत के संबंध को दिखाता है](../../../../2-Regression/2-Data/images/barchart.png) + ![मूल्य और महीने के बीच संबंध दिखाने वाला बार चार्ट](../../../../translated_images/hi/barchart.a833ea9194346d76.webp) + + यह एक अधिक उपयोगी डेटा विज़ुअलाईज़ेशन है! यह दर्शाता है कि कद्दू के लिए उच्चतम कीमत सितंबर और अक्टूबर में होती है। क्या यह आपकी उम्मीद से मेल खाता है? क्यों या क्यों नहीं? + +## अभ्यास - 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 स्कैटरप्लॉट](../../../../translated_images/hi/relplot.a03837d8f0329cec.webp) + + ध्यान दें कि आप _कॉलम नाम_ और डेटा फ्रेम पास करते हैं, और Seaborn आपके लिए अक्ष लेबलों का ध्यान रखता है। + +2. आप `kind="line"` पास करके इसे लाइन प्लॉट में बदल सकते हैं। Seaborn रेखा के चारों ओर विश्वास अंतराल दिखाने वाला एक छायांकित बैंड भी बनाता है: + + ```python + sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins) + ``` + + ![मूल्य और महीने के बीच संबंध दिखाने वाला Seaborn लाइन प्लॉट](../../../../translated_images/hi/lineplot.f9034ba47b1e30ee.webp) + + यह विशेष डेटा काफी शोर युक्त है, इसलिए लाइन प्लॉट सबसे स्पष्ट विकल्प नहीं है - लेकिन यह दिखाता है कि आप आसानी से 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") + ``` + + ![A Seaborn bar chart showing the price distribution per month](../../../../translated_images/hi/catplot.e73fc35fdf96242b.webp) + + यह पुष्टि करता है जो आपने 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") + ``` + + ![A Seaborn heatmap showing correlations between the numeric columns](../../../../translated_images/hi/heatmap.bd98dce43b404c57.webp) + + `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-लर्निंग +# सुदृढ़ीकरण शिक्षण और क्यू-लर्निंग का परिचय -![मशीन लर्निंग में रिइंफोर्समेंट का सारांश एक स्केच नोट में](../../../../sketchnotes/ml-reinforcement.png) -> स्केच नोट: [Tomomi Imura](https://www.twitter.com/girlie_mac) +![मशीन लर्निंग में सुदृढीकरण का संक्षिप्त नोट](../../../../translated_images/hi/ml-reinforcement.94024374d63348db.webp) +> स्केचनोट द्वारा [Tomomi Imura](https://www.twitter.com/girlie_mac) -रिइंफोर्समेंट लर्निंग तीन महत्वपूर्ण अवधारणाओं पर आधारित है: एजेंट, कुछ स्टेट्स, और प्रत्येक स्टेट के लिए एक्शन का सेट। किसी निर्दिष्ट स्टेट में एक्शन को निष्पादित करके, एजेंट को एक इनाम दिया जाता है। फिर से सुपर मारियो गेम की कल्पना करें। आप मारियो हैं, आप एक गेम लेवल में हैं, और एक चट्टान के किनारे पर खड़े हैं। आपके ऊपर एक सिक्का है। आप मारियो हैं, एक गेम लेवल में, एक विशिष्ट स्थिति में ... यही आपका स्टेट है। दाईं ओर एक कदम बढ़ाना (एक्शन) आपको किनारे से नीचे गिरा देगा, और यह आपको कम अंक देगा। हालांकि, जंप बटन दबाने से आप एक पॉइंट स्कोर करेंगे और जीवित रहेंगे। यह एक सकारात्मक परिणाम है और आपको एक सकारात्मक अंक प्रदान करना चाहिए। +सुदृढ़ीकरण शिक्षण में तीन महत्वपूर्ण अवधारणाएँ शामिल हैं: एजेंट, कुछ अवस्थाएं, और प्रत्येक अवस्था के लिए कुछ क्रियाएं। किसी विशिष्ट अवस्था में कोई क्रिया करके, एजेंट को पुरस्कार (रिवार्ड) दिया जाता है। फिर से सोचिए कंप्यूटर गेम सुपर मारियो के बारे में। आप मारियो हैं, आप एक गेम स्तर में हैं, एक चट्टान के किनारे खड़े हैं। आपके ऊपर एक सिक्का है। आप मारियो हैं, एक गेम स्तर में, एक विशिष्ट स्थान पर ... वह आपकी अवस्था है। दाईं ओर एक कदम बढ़ाना (एक क्रिया) आपको किनारे से नीचे गिरा देगा, और इसका आपको कम अंक मिलेगा। हालांकि, जंप बटन दबाने पर आप एक पॉइंट स्कोर करेंगे और ज़िंदा रहेंगे। यह एक सकारात्मक परिणाम है और इसके लिए आपको सकारात्मक अंक मिलना चाहिए। -रिइंफोर्समेंट लर्निंग और एक सिम्युलेटर (गेम) का उपयोग करके, आप गेम खेलने का तरीका सीख सकते हैं ताकि आप जीवित रह सकें और अधिकतम पॉइंट्स स्कोर कर सकें। +सुदृढ़ीकरण सीखने और एक सिम्युलेटर (गेम) का उपयोग करके, आप गेम को इस तरह खेलना सीख सकते हैं ताकि पुरस्कार को अधिकतम किया जा सके, अर्थात ज़िंदा रहना और अधिक से अधिक अंक जमा करना। -[![रिइंफोर्समेंट लर्निंग का परिचय](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) +[![सुदृढ़ीकरण शिक्षण का परिचय](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](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` के एक वर्गाकार बोर्ड के रूप में मानते हैं, इस प्रकार: -![पीटर का वातावरण](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![पीटर का पर्यावरण](../../../../translated_images/hi/environment.40ba3cb66256c93f.webp) -इस बोर्ड में प्रत्येक सेल निम्नलिखित में से एक हो सकता है: +इस बोर्ड के प्रत्येक सेल में हो सकता है: -* **जमीन**, जिस पर पीटर और अन्य जीव चल सकते हैं। +* **भूमि**, जिस पर पीटर और अन्य जीव चल सकते हैं। * **पानी**, जिस पर आप स्पष्ट रूप से नहीं चल सकते। -* एक **पेड़** या **घास**, एक जगह जहां आप आराम कर सकते हैं। -* एक **सेब**, जिसे पीटर खुशी से खोजेगा ताकि वह खुद को खिला सके। -* एक **भेड़िया**, जो खतरनाक है और इससे बचा जाना चाहिए। +* एक **पेड़** या **घास**, जहाँ आप आराम कर सकते हैं। +* एक **सेब**, जो दर्शाता है कि पीटर अपने आप को खिलाने के लिए उसे पाकर खुश होगा। +* एक **भेड़िया**, जो खतरनाक है और बचना चाहिए। -एक अलग 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 कदम है। - आप यह भी देख सकते हैं कि रैंडम वॉक के दौरान पीटर की गति कैसी दिखती है: + आप यह भी देख सकते हैं कि रैंडम वॉक के दौरान पीटर की चाल कैसी दिखती है: - ![पीटर का रैंडम वॉक](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) + ![पीटर की यादृच्छिक चाल](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) -## इनाम फ़ंक्शन +## पुरस्कार फ़ंक्शन -हमारी पॉलिसी को अधिक बुद्धिमान बनाने के लिए, हमें यह समझने की आवश्यकता है कि कौन से कदम दूसरों की तुलना में "बेहतर" हैं। ऐसा करने के लिए, हमें अपना लक्ष्य परिभाषित करना होगा। +हमारी नीति को अधिक बुद्धिमान बनाने के लिए, हमें समझना होगा कि कौन से कदम "बेहतर" हैं। इसके लिए, हमें अपना लक्ष्य परिभाषित करना होगा। -लक्ष्य को एक **इनाम फ़ंक्शन** के संदर्भ में परिभाषित किया जा सकता है, जो प्रत्येक स्टेट के लिए कुछ स्कोर मान लौटाएगा। संख्या जितनी अधिक होगी, इनाम फ़ंक्शन उतना ही बेहतर होगा। (कोड ब्लॉक 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)`. -![पीटर का वातावरण](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![पीटर का पर्यावरण](../../../../translated_images/hi/env_init.04e8f26d2d60089e.webp) -प्रत्येक सेल के केंद्र में एक "तीर" होता है जो गति की पसंदीदा दिशा को इंगित करता है। चूंकि सभी दिशाएँ समान हैं, एक बिंदु प्रदर्शित होता है। +प्रत्येक सेल के केंद्र में एक "तीर" होता है जो पसंदीदा आंदोलन दिशा को दर्शाता है। चूंकि सभी दिशाएँ समान हैं, इसलिए एक डॉट दिखाया जाता है। -अब हमें सिमुलेशन चलाने, अपने वातावरण का पता लगाने, और 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-लर्निंग का उपयोग करके स्केट करना सीख सकता है, खासकर संतुलन बनाए रखना। + +![महान पलायन!](../../../../translated_images/hi/escape.18862db9930337e3.webp) + +> पीटर और उसके दोस्त भालू से बचने के लिए रचनात्मक हो जाते हैं! छवि द्वारा [Jen Looper](https://twitter.com/jenlooper) + +हम संतुलन बनाए रखने के एक सरल संस्करण का उपयोग करेंगे जिसे **कार्टपोल** समस्या के रूप में जाना जाता है। कार्टपोल दुनिया में, हमारे पास एक क्षैतिज स्लाइडर होता है जो बाएं या दाएं स्थानांतरित हो सकता है, और लक्ष्य स्लाइडर के शीर्ष पर एक ऊर्ध्वाधर पोल का संतुलन बनाए रखना होता है। + +a cartpole + +## पूर्वापेक्षाएं + +इस पाठ में, हम विभिन्न **परिसरों** का अनुकरण करने के लिए **OpenAI Gym** नामक पुस्तकालय का उपयोग करेंगे। आप इस पाठ के कोड को स्थानीय रूप से चला सकते हैं (उदा. Visual Studio Code से), उस स्थिति में अनुकरण एक नई विंडो में खुलेगा। ऑनलाइन कोड चलाते समय, आपको कोड में कुछ समायोजन करने पड़ सकते हैं, जैसा कि [यहाँ](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7) वर्णित है। ## OpenAI Gym -पिछले पाठ में, खेल के नियम और स्थिति `Board` क्लास द्वारा दी गई थी जिसे हमने स्वयं परिभाषित किया था। यहां हम एक विशेष **सिमुलेशन पर्यावरण** का उपयोग करेंगे, जो बैलेंसिंग पोल के पीछे के भौतिकी को सिमुलेट करेगा। रिइंफोर्समेंट लर्निंग एल्गोरिदम को प्रशिक्षित करने के लिए सबसे लोकप्रिय सिमुलेशन पर्यावरणों में से एक [Gym](https://gym.openai.com/) है, जिसे [OpenAI](https://openai.com/) द्वारा बनाए रखा गया है। इस जिम का उपयोग करके हम विभिन्न **पर्यावरणों** को बना सकते हैं, जैसे कि कार्टपोल सिमुलेशन से लेकर 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() ``` - आपको कुछ इस तरह की छवि दिखाई देनी चाहिए: + आपको कुछ ऐसा देखना चाहिए: - ![non-balancing cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) + ![संतुलनहीन कार्टपोल](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) -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) ``` -![raw progress](../../../../8-Reinforcement/2-Gym/images/train_progress_raw.png) +![कच्चे प्रगति](../../../../translated_images/hi/train_progress_raw.2adfdf2daea09c59.webp) -इस ग्राफ से कुछ भी बताना संभव नहीं है, क्योंकि स्टोकेस्टिक प्रशिक्षण प्रक्रिया की प्रकृति के कारण प्रशिक्षण सत्रों की लंबाई बहुत भिन्न होती है। इस ग्राफ को अधिक समझने योग्य बनाने के लिए, हम 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)) ``` -![training progress](../../../../8-Reinforcement/2-Gym/images/train_progress_runav.png) +![प्रशिक्षण प्रगति](../../../../translated_images/hi/train_progress_runav.c71694a8fa9ab359.webp) + +## हाइपरपैरामीटर में परिवर्तन + +सीखने को अधिक स्थिर बनाने के लिए, प्रशिक्षण के दौरान हमारे कुछ हाइपरपैरामीटर को समायोजित करना समझदारी होगी। विशेष रूप से: + +- **लर्निंग रेट** `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() ``` -आपको कुछ ऐसा दिखाई देना चाहिए: +आपको कुछ इस तरह दिखाई देना चाहिए: -![एक बैलेंसिंग कार्टपोल](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) +![एक संतुलन बनाती हुई कार्टपोल](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) --- ## 🚀चुनौती -> **कार्य 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 - -![Sažetak odgovorne umjetne inteligencije u strojnome učenju u obliku sketchnotea](../../../../sketchnotes/ml-fairness.png) +# Izgradnja rješenja strojnog učenja s odgovornim AI-jem + +![Sažetak odgovornog AI-ja u strojnog učenja u sketchnote-u](../../../../translated_images/hr/ml-fairness.ef296ebec6afc98a.webp) > 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) -[![Microsoftov pristup odgovornoj umjetnoj inteligenciji](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoftov pristup odgovornoj umjetnoj inteligenciji") +[![Microsoftov pristup odgovornom AI-ju](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](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](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) +![prijevod na turski](../../../../translated_images/hr/gender-bias-translate-en-tr.f185fd8822c2d437.webp) > prijevod na turski -![prijevod natrag na engleski](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) +![prijevod natrag na engleski](../../../../translated_images/hr/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) > 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. - -[![Vodeći istraživač AI-a upozorava na masovni nadzor putem prepoznavanja lica](../../../../1-Introduction/3-fairness/images/accountability.png)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoftov pristup odgovornoj umjetnoj inteligenciji") +[![Vodeći istraživač AI-ja upozorava na masovni nadzor putem prepoznavanja lica](../../../../translated_images/hr/accountability.41d8c0f4b85b6231.webp)](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 -[![Responsible AI Toolbox: Otvoreni okvir za izgradnju odgovorne umjetne inteligencije](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: Otvoreni okvir za izgradnju odgovorne umjetne inteligencije") +[![Responsible AI Toolbox: An open-source framework for building responsible AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") -> 🎥 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 -![Sažetak regresija u obliku sketchnotea](../../../../sketchnotes/ml-regression.png) +![Sažetak regresija u sketchnote](../../../../translated_images/hr/ml-regression.4e4f70e3b3ed446e.webp) -> 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 -[![ML za početnike - Pripremite alate za izgradnju modela strojnog učenja](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML za početnike - Pripremite alate za izgradnju modela strojnog učenja") +[![ML za početnike - Postavite svoje alate spremne za izgradnju modela strojnog učenja](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](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) > - > [![Postavljanje Pythona s Visual Studio Code-om](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Postavljanje Pythona s Visual Studio Code-om") + > [![Postavljanje Pythona s Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](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. -[![ML za početnike - Postavljanje Jupyter bilježnica za početak izrade regresijskih modela](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML za početnike - Postavljanje Jupyter bilježnica za početak izrade regresijskih modela") +[![ML za početnike - Postavite Jupyter Notebookove za početak izgradnje regresijskih modela](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](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 ``` -![VS Code s otvorenom bilježnicom](../../../../2-Regression/1-Tools/images/notebook.jpg) +![VS Code sa otvorenim notebookom](../../../../translated_images/hr/notebook.4a3ee31f396b8832.webp) -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. [![ML za početnike - Vaš prvi projekt linearne regresije u Pythonu](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](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() ``` - ![scatterplot koji prikazuje podatke o dijabetesu](../../../../2-Regression/1-Tools/images/scatterplot.png) -✅ 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. + ![scatterplot koji prikazuje točke podataka o dijabetesu](../../../../translated_images/hr/scatterplot.ad8b356bcbb33be6.webp) + + + ✅ 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 -![Infografika o vizualizaciji podataka](../../../../2-Regression/2-Data/images/data-visualization.png) +![Infografika vizualizacije podataka](../../../../translated_images/hr/data-visualization.54e56dded7c1a804.webp) -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. [![ML za početnike - Kako analizirati i očistiti skup podataka](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](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. -[![ML za početnike - Kako vizualizirati podatke pomoću Matplotliba](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML za početnike - Kako vizualizirati podatke pomoću Matplotliba") +[![ML za početnike - Kako vizualizirati podatke pomoću Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](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() ``` - ![Scatterplot koji prikazuje odnos cijene i mjeseca](../../../../2-Regression/2-Data/images/scatterplot.png) + ![Scatterplot prikazuje odnos cijene i mjeseca](../../../../translated_images/hr/scatterplot.b6868f44cbd2051c.webp) - 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") ``` - ![Stupčasti grafikon koji prikazuje odnos cijene i mjeseca](../../../../2-Regression/2-Data/images/barchart.png) + ![Bar chart prikazuje odnos cijene i mjeseca](../../../../translated_images/hr/barchart.a833ea9194346d76.webp) + + 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) + ``` + + ![Seaborn scatterplot prikazuje odnos cijene i mjeseca](../../../../translated_images/hr/relplot.a03837d8f0329cec.webp) + + 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) + ``` + + ![Seaborn line plot prikazuje odnos cijene i mjeseca](../../../../translated_images/hr/lineplot.f9034ba47b1e30ee.webp) + + 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") + ``` + + ![Stupčasti grafikon Seaborn prikazuje raspodjelu cijena po mjesecima](../../../../translated_images/hr/catplot.e73fc35fdf96242b.webp) + + 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") + ``` + + ![Seaborn toplinska mapa pokazuje korelacije između numeričkih stupaca](../../../../translated_images/hr/heatmap.bd98dce43b404c57.webp) + + 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 -![Sažetak učenja pojačanjem u strojnom učenju u obliku sketchnotea](../../../../sketchnotes/ml-reinforcement.png) +![Sažetak potkrepljenja u strojnome učenju u sketchnoteu](../../../../translated_images/hr/ml-reinforcement.94024374d63348db.webp) > 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. -[![Uvod u učenje pojačanjem](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) +[![Uvod u poučavanje potkrepljenjem](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](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: -![Petrovo okruženje](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![Petarovo okruženje](../../../../translated_images/hr/environment.40ba3cb66256c93f.webp) -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: - ![Petrova slučajna šetnja](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) + ![Petrov nasumični hod](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) ## 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)`. -![Petrovo okruženje](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![Petarovo okruženje](../../../../translated_images/hr/env_init.04e8f26d2d60089e.webp) -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 - -![A felelős AI összefoglalása a gépi tanulásban egy sketchnote-ban](../../../../sketchnotes/ml-fairness.png) -> 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 + +![Összefoglaló a felelős MI-ről a gépi tanulásban egy vázlatrajzon](../../../../translated_images/hu/ml-fairness.ef296ebec6afc98a.webp) +> 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) -[![Microsoft megközelítése a felelős AI-hoz](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoft megközelítése a felelős AI-hoz") +[![Microsoft megközelítése a Felelős MI-hez](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](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](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) -> Fordítás törökre +![fordítás törökre](../../../../translated_images/hu/gender-bias-translate-en-tr.f185fd8822c2d437.webp) +> fordítás törökre -![Fordítás vissza angolra](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) -> Fordítás vissza angolra +![fordítás vissza angolra](../../../../translated_images/hu/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) +> 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. + +[![Vezető MI kutató figyelmeztet az arcfelismerés által okozott tömeges megfigyelésre](../../../../translated_images/hu/accountability.41d8c0f4b85b6231.webp)](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. -[![Vezető AI kutató figyelmeztet a tömeges megfigyelés veszélyeire arcfelismeréssel](../../../../1-Introduction/3-fairness/images/accountability.png)](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 -[![Responsible AI Toolbox: Nyílt forráskódú keretrendszer a felelős mesterséges intelligencia építéséhez](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](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") +[![Felelős MI Eszköztár: Nyílt forráskódú keretrendszer felelős MI építéséhez](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") -> 🎥 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ázlat a regressziókról](../../../../sketchnotes/ml-regression.png) +![Összegzés a regressziókról egy sketchnote-ban](../../../../translated_images/hu/ml-regression.4e4f70e3b3ed446e.webp) -> 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 -[![ML kezdőknek - Eszközök beállítása gépi tanulási modellek építéséhez](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML kezdőknek - Eszközök beállítása gépi tanulási modellek építéséhez") +[![Gépi tanulás kezdőknek - Állítsd be az eszközeidet a gépi tanulási modellek építéséhez](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](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. > - > [![Python beállítása a Visual Studio Code-ban](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Python beállítása a Visual Studio Code-ban") + > [![Python beállítása Visual Studio Code-ban](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](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. -[![ML kezdőknek - Jupyter Notebookok beállítása regressziós modellek építéséhez](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML kezdőknek - Jupyter Notebookok beállítása regressziós modellek építéséhez") +[![Gépi tanulás kezdőknek - Jupyter Notebookok beállítása regressziós modellekhez](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](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 ``` -![VS Code egy megnyitott notebookkal](../../../../2-Regression/1-Tools/images/notebook.jpg) +![VS Code egy megnyitott notebookkal](../../../../translated_images/hu/notebook.4a3ee31f396b8832.webp) -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. -[![ML kezdőknek - Az első lineáris regressziós projekted Python-ban](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](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. +[![Gépi tanulás kezdőknek - Az első lineáris regressziós projekted Pythonban](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](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() + ``` + + ![szórásdiagram cukorbetegség adatpontokról](../../../../translated_images/hu/scatterplot.ad8b356bcbb33be6.webp) + + + ✅ 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 -![Adatvizualizációs infografika](../../../../2-Regression/2-Data/images/data-visualization.png) +![Adatvizualizációs infografika](../../../../translated_images/hu/data-visualization.54e56dded7c1a804.webp) -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. -[![ML kezdőknek - Hogyan elemezzünk és tisztítsunk egy adathalmazt](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML kezdőknek - Hogyan elemezzünk és tisztítsunk egy adathalmazt") +[![ML kezdőknek - Hogyan elemezz és tisztíts egy adatbázist](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](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. -[![ML kezdőknek - Hogyan vizualizáljuk az adatokat Matplotlib segítségével](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML kezdőknek - Hogyan vizualizáljuk az adatokat Matplotlib segítségével") +[![ML kezdőknek - Hogyan vizualizálj adatokat Matplotlib-pel](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](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() ``` - ![Egy szórásdiagram, amely az ár és hónap közötti kapcsolatot mutatja](../../../../2-Regression/2-Data/images/scatterplot.png) + ![Hatásmutató pontfelhő a hónap és az ár kapcsolatáról](../../../../translated_images/hu/scatterplot.b6868f44cbd2051c.webp) - 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") ``` - ![Egy oszlopdiagram, amely az ár és hónap közötti kapcsolatot mutatja](../../../../2-Regression/2-Data/images/barchart.png) + ![Oszlopdiagram az árak és a hónapok kapcsolatáról](../../../../translated_images/hu/barchart.a833ea9194346d76.webp) + + 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) + ``` + + ![Seaborn pontdiagram az ár-hónap kapcsolatról](../../../../translated_images/hu/relplot.a03837d8f0329cec.webp) + + 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) + ``` + + ![Seaborn vonaldiagram az ár-hónap kapcsolatról](../../../../translated_images/hu/lineplot.f9034ba47b1e30ee.webp) + + 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") + ``` + + ![Egy Seaborn oszlopdiagram, amely a havi árak eloszlását mutatja](../../../../translated_images/hu/catplot.e73fc35fdf96242b.webp) + + 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") + ``` + + ![Egy Seaborn hőtérkép, amely a numerikus oszlopok közötti korrelációkat mutatja](../../../../translated_images/hu/heatmap.bd98dce43b404c57.webp) + + 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 -![A gépi tanulás megerősítésének összefoglalása egy sketchnote-ban](../../../../sketchnotes/ml-reinforcement.png) -> Sketchnote: [Tomomi Imura](https://www.twitter.com/girlie_mac) +![Összegzés a megerősítéses tanulásról gépi tanulásban egy vázlatjegyzetben](../../../../translated_images/hu/ml-reinforcement.94024374d63348db.webp) +> 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. [![Bevezetés a megerősítéses tanulásba](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](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: -![Péter környezete](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![Péter környezete](../../../../translated_images/hu/environment.40ba3cb66256c93f.webp) -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: ![Péter véletlenszerű sétája](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) ## 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)`. -![Péter környezete](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![Péter környezete](../../../../translated_images/hu/env_init.04e8f26d2d60089e.webp) -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 -> ![Gif a felelősségteljes AI eszközökről](../../../../9-Real-World/2-Debugging-ML-Models/images/rai-overview.gif) +> ![Gif a felelős MI eszközökről](../../../../9-Real-World/2-Debugging-ML-Models/images/rai-overview.gif) -## 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. -![Modellek hibáinak elemzése és hibakeresése](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-error-distribution.png) +![A modell hibáinak elemzése és hibakeresése](../../../../translated_images/hu/ea-error-distribution.117452e1177c1dd8.webp) -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. -![Hibaelemzés](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-error-cohort.png) +![Hibaanalízis](../../../../translated_images/hu/ea-error-cohort.6886209ea5d438c4.webp) -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. -![Hibaelemzés hőtérkép](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-heatmap.png) +![Hibaanalízis hőtérkép](../../../../translated_images/hu/ea-heatmap.8d27185e28cee383.webp) -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. -![Adathalmaz csoportok - modelláttekintés a RAI dashboardon](../../../../9-Real-World/2-Debugging-ML-Models/images/model-overview-dataset-cohorts.png) +![Adatkohorszok - modelláttekintés az RAI irányítópulton](../../../../translated_images/hu/model-overview-dataset-cohorts.dfa463fb527a35a0.webp) -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. -![Jellemző csoportok - modelláttekintés a RAI dashboardon](../../../../9-Real-World/2-Debugging-ML-Models/images/model-overview-feature-cohorts.png) +![Jellemző kohorszok - modelláttekintés az RAI irányítópulton](../../../../translated_images/hu/model-overview-feature-cohorts.c5104d575ffd0c80.webp) -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ó. -![Adatelemzés komponens a RAI dashboardon](../../../../9-Real-World/2-Debugging-ML-Models/images/dataanalysis-cover.png) +![Adat elemzés komponens az RAI irányítópulton](../../../../translated_images/hu/dataanalysis-cover.8d6d0683a70a5c1e.webp) -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. +![RAI irányítópult Jellemző fontosság komponense](../../../../translated_images/hu/9-feature-importance.cd3193b4bba3fd4b.webp) -- 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. ---- +![Jellemzők befolyása](../../../../translated_images/hu/9-features-influence.3ead3d3f68a84029.webp) -## 🚀 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: -[![Responsible AI Dashboard: Egyablakos megoldás a felelősségteljes AI gyakorlati alkalmazásához](https://img.youtube.com/vi/f1oaDNl3djg/0.jpg)](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 +[![Responsible AI Dashboard: One-stop shop for operationalizing RAI in practice](https://img.youtube.com/vi/f1oaDNl3djg/0.jpg)](https://www.youtube.com/watch?v=f1oaDNl3djg "Responsible AI Dashboard: One-stop shop for operationalizing RAI in practice") -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 - -![Ringkasan AI yang bertanggung jawab dalam Machine Learning dalam bentuk sketchnote](../../../../sketchnotes/ml-fairness.png) +# Membangun solusi Machine Learning dengan AI yang bertanggung jawab + +![Ringkasan AI yang bertanggung jawab dalam Machine Learning dalam bentuk sketchnote](../../../../translated_images/id/ml-fairness.ef296ebec6afc98a.webp) > 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) [![Pendekatan Microsoft terhadap AI yang Bertanggung Jawab](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](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](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) -> terjemahan ke Turki +![terjemahan ke bahasa Turki](../../../../translated_images/id/gender-bias-translate-en-tr.f185fd8822c2d437.webp) +> terjemahan ke bahasa Turki -![terjemahan kembali ke Inggris](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) -> terjemahan kembali ke Inggris +![terjemahan kembali ke bahasa Inggris](../../../../translated_images/id/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) +> 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. +[![Peneliti AI terkemuka memperingatkan Pengawasan Massal melalui Pengenalan Wajah](../../../../translated_images/id/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Pendekatan Microsoft terhadap AI yang Bertanggung Jawab") -[![Peneliti AI Terkemuka Memperingatkan Pengawasan Massal Melalui Pengenalan Wajah](../../../../1-Introduction/3-fairness/images/accountability.png)](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 -[![Responsible AI Toolbox: Kerangka kerja open-source untuk membangun AI yang bertanggung jawab](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: Kerangka kerja open-source untuk membangun AI yang bertanggung jawab") +[![Responsible AI Toolbox: An open-source framework for building responsible AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") -> 🎥 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 -![Ringkasan regresi dalam sketchnote](../../../../sketchnotes/ml-regression.png) +![Ringkasan regresi dalam sketchnote](../../../../translated_images/id/ml-regression.4e4f70e3b3ed446e.webp) > 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 -[![ML untuk pemula - Siapkan alat Anda untuk membangun model Pembelajaran Mesin](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML untuk pemula - Siapkan alat Anda untuk membangun model Pembelajaran Mesin") +[![ML untuk pemula - Persiapkan alat Anda untuk membangun model Pembelajaran Mesin](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](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) > - > [![Siapkan Python dengan Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Siapkan Python dengan Visual Studio Code") + > [![Setup Python dengan Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](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. -[![ML untuk pemula - Siapkan Jupyter Notebook untuk mulai membangun model regresi](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML untuk pemula - Siapkan Jupyter Notebook untuk mulai membangun model regresi") +[![ML untuk pemula - Siapkan Jupyter Notebooks untuk mulai membangun model regresi](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](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 ``` -![VS Code dengan notebook terbuka](../../../../2-Regression/1-Tools/images/notebook.jpg) +![VS Code dengan notebook terbuka](../../../../translated_images/id/notebook.4a3ee31f396b8832.webp) -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. -[![ML untuk pemula - Proyek Regresi Linier Pertama Anda dalam Python](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "ML untuk pemula - Proyek Regresi Linier Pertama Anda dalam Python") -> 🎥 Klik gambar di atas untuk video singkat tentang latihan ini. +[![ML untuk pemula - Proyek Regresi Linier Pertama Anda di Python](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](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() ``` - ![scatterplot yang menunjukkan titik data tentang diabetes](../../../../2-Regression/1-Tools/images/scatterplot.png) -✅ 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. + ![scatterplot yang menunjukkan titik data tentang diabetes](../../../../translated_images/id/scatterplot.ad8b356bcbb33be6.webp) + -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 visualisasi data](../../../../2-Regression/2-Data/images/data-visualization.png) +![Infografis visualisasi data](../../../../translated_images/id/data-visualization.54e56dded7c1a804.webp) 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. -[![ML untuk Pemula - Cara Menganalisis dan Membersihkan Dataset](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML untuk Pemula - Cara Menganalisis dan Membersihkan Dataset") +[![ML untuk pemula - Cara Menganalisis dan Membersihkan Dataset](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](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. -[![ML untuk Pemula - Cara Memvisualisasikan Data dengan Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML untuk Pemula - Cara Memvisualisasikan Data dengan Matplotlib") +[![ML untuk pemula - Cara Memvisualisasikan Data dengan Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](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() ``` - ![Scatterplot yang menunjukkan hubungan harga dengan bulan](../../../../2-Regression/2-Data/images/scatterplot.png) + ![Sebuah scatterplot yang menunjukkan hubungan harga dengan bulan](../../../../translated_images/id/scatterplot.b6868f44cbd2051c.webp) 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") ``` - ![Grafik batang yang menunjukkan hubungan harga dengan bulan](../../../../2-Regression/2-Data/images/barchart.png) + ![Diagram batang yang menunjukkan hubungan harga dengan bulan](../../../../translated_images/id/barchart.a833ea9194346d76.webp) + + 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) + ``` + + ![Scatterplot Seaborn yang menunjukkan hubungan harga dengan bulan](../../../../translated_images/id/relplot.a03837d8f0329cec.webp) + + 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) + ``` + + ![Plot garis Seaborn yang menunjukkan hubungan harga dengan bulan](../../../../translated_images/id/lineplot.f9034ba47b1e30ee.webp) + + 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") + ``` + + ![A Seaborn bar chart showing the price distribution per month](../../../../translated_images/id/catplot.e73fc35fdf96242b.webp) + + 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") + ``` + + ![A Seaborn heatmap showing correlations between the numeric columns](../../../../translated_images/id/heatmap.bd98dce43b404c57.webp) + + 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 -![Ringkasan pembelajaran penguatan dalam pembelajaran mesin dalam bentuk sketchnote](../../../../sketchnotes/ml-reinforcement.png) +![Ringkasan reinforcement dalam pembelajaran mesin dalam bentuk sketchnote](../../../../translated_images/id/ml-reinforcement.94024374d63348db.webp) > 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. [![Pengantar Pembelajaran Penguatan](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](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: -![Lingkungan Peter](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![Lingkungan Peter](../../../../translated_images/id/environment.40ba3cb66256c93f.webp) -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: - ![Jalan Acak Peter](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) + ![Random Walk Peter](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) ## 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)`. -![Lingkungan Peter](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![Lingkungan Peter](../../../../translated_images/id/env_init.04e8f26d2d60089e.webp) -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. + +![The great escape!](../../../../translated_images/id/escape.18862db9930337e3.webp) + +> 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. + +a cartpole + ## 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: - ![cartpole tanpa keseimbangan](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) + ![non-balancing cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) -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) ``` -![kemajuan mentah](../../../../8-Reinforcement/2-Gym/images/train_progress_raw.png) +![raw progress](../../../../translated_images/id/train_progress_raw.2adfdf2daea09c59.webp) -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)) ``` -![kemajuan pelatihan](../../../../8-Reinforcement/2-Gym/images/train_progress_runav.png) +![training progress](../../../../translated_images/id/train_progress_runav.c71694a8fa9ab359.webp) + +## 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: ![a balancing cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) @@ -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 - -![Riepilogo dell'AI responsabile nel Machine Learning in uno sketchnote](../../../../sketchnotes/ml-fairness.png) + +![Riepilogo dell'AI responsabile nel Machine Learning in uno sketchnote](../../../../translated_images/it/ml-fairness.ef296ebec6afc98a.webp) > 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](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) +![traduzione in turco](../../../../translated_images/it/gender-bias-translate-en-tr.f185fd8822c2d437.webp) > traduzione in turco -![traduzione di ritorno in inglese](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) -> traduzione di ritorno in inglese +![traduzione di nuovo in inglese](../../../../translated_images/it/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) +> 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à. +[![Ricercatore AI di primo piano avvisa sulla sorveglianza di massa tramite riconoscimento facciale](../../../../translated_images/it/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Approccio di Microsoft all'AI responsabile") -[![Ricercatore di AI avverte dei rischi di sorveglianza di massa attraverso il riconoscimento facciale](../../../../1-Introduction/3-fairness/images/accountability.png)](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 -[![Responsible AI Toolbox: Un framework open-source per costruire un'IA responsabile](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: Un framework open-source per costruire un'IA responsabile") +[![Responsible AI Toolbox: An open-source framework for building responsible AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") -> 🎥 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 -![Riepilogo delle regressioni in uno sketchnote](../../../../sketchnotes/ml-regression.png) +![Sommario delle regressioni in uno sketchnote](../../../../translated_images/it/ml-regression.4e4f70e3b3ed446e.webp) > 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 -[![ML per principianti - Configura i tuoi strumenti per costruire modelli di Machine Learning](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML per principianti - Configura i tuoi strumenti per costruire modelli di Machine Learning") +[![ML per principianti - Configura i tuoi strumenti per costruire modelli di Machine Learning](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](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) > > [![Configura Python con Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](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. [![ML per principianti - Configura Jupyter Notebooks per iniziare a costruire modelli di regressione](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](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 ``` -![VS Code con un notebook aperto](../../../../2-Regression/1-Tools/images/notebook.jpg) +![VS Code con un notebook aperto](../../../../translated_images/it/notebook.4a3ee31f396b8832.webp) 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. [![ML per principianti - Il tuo primo progetto di regressione lineare in Python](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](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() ``` - ![un grafico a dispersione che mostra punti dati sul diabete](../../../../2-Regression/1-Tools/images/scatterplot.png) -✅ 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. + ![uno scatterplot che mostra punti dati sul diabete](../../../../translated_images/it/scatterplot.ad8b356bcbb33be6.webp) + + + ✅ 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 sulla visualizzazione dei dati](../../../../2-Regression/2-Data/images/data-visualization.png) +![Infografica sulla visualizzazione dei dati](../../../../translated_images/it/data-visualization.54e56dded7c1a804.webp) 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. -[![ML per principianti - Come analizzare e pulire un dataset](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML per principianti - Come analizzare e pulire un dataset") +[![ML for beginners - Come analizzare e pulire un dataset](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](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. -[![ML per principianti - Come visualizzare i dati con Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML per principianti - Come visualizzare i dati con Matplotlib") +[![ML for beginners - Come visualizzare i dati con Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](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() ``` - ![Un diagramma a dispersione che mostra la relazione tra prezzo e mese](../../../../2-Regression/2-Data/images/scatterplot.png) + ![Un grafico a dispersione che mostra la relazione prezzo-mese](../../../../translated_images/it/scatterplot.b6868f44cbd2051c.webp) - 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") ``` - ![Un grafico a barre che mostra la relazione tra prezzo e mese](../../../../2-Regression/2-Data/images/barchart.png) + ![Un grafico a barre che mostra la relazione prezzo-mese](../../../../translated_images/it/barchart.a833ea9194346d76.webp) + + 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) + ``` + + ![Un grafico a dispersione Seaborn che mostra la relazione prezzo-mese](../../../../translated_images/it/relplot.a03837d8f0329cec.webp) + + 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) + ``` + + ![Un grafico a linee Seaborn che mostra la relazione prezzo-mese](../../../../translated_images/it/lineplot.f9034ba47b1e30ee.webp) + + 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") + ``` + + ![Un grafico a barre di Seaborn che mostra la distribuzione dei prezzi per mese](../../../../translated_images/it/catplot.e73fc35fdf96242b.webp) + + 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") + ``` + + ![Una heatmap di Seaborn che mostra le correlazioni tra le colonne numeriche](../../../../translated_images/it/heatmap.bd98dce43b404c57.webp) + + 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 -![Riassunto del reinforcement learning in machine learning in uno sketchnote](../../../../sketchnotes/ml-reinforcement.png) +![Sommario del rinforzo nell'apprendimento automatico in uno sketchnote](../../../../translated_images/it/ml-reinforcement.94024374d63348db.webp) > 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. -[![Introduzione al Reinforcement Learning](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) +[![Introduzione all'Apprendimento per Rinforzo](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](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ì: -![Ambiente di Pierino](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![Ambiente di Pietro](../../../../translated_images/it/environment.40ba3cb66256c93f.webp) 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: - ![Camminata casuale di Pierino](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) + ![Camminata Casuale di Pietro](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) ## 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)`. -![Ambiente di Pierino](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![Ambiente di Pietro](../../../../translated_images/it/env_init.04e8f26d2d60089e.webp) -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. + +![La grande fuga!](../../../../translated_images/it/escape.18862db9930337e3.webp) + +> 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. + +un cartpole + ## 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: - ![cartpole senza bilanciamento](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) + ![cartpole non bilanciato](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) -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) ``` -![progressi grezzi](../../../../8-Reinforcement/2-Gym/images/train_progress_raw.png) +![progresso grezzo](../../../../translated_images/it/train_progress_raw.2adfdf2daea09c59.webp) -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)) ``` -![progressi dell'addestramento](../../../../8-Reinforcement/2-Gym/images/train_progress_runav.png) +![progresso nell'addestramento](../../../../translated_images/it/train_progress_runav.c71694a8fa9ab359.webp) ## 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: -![un cartpole in equilibrio](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) +![un carrello in equilibrio su un palo](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) --- ## 🚀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を用いた機械学習ソリューションの構築 - -![機械学習における責任あるAIの概要を示すスケッチノート](../../../../sketchnotes/ml-fairness.png) -> スケッチノート: [Tomomi Imura](https://www.twitter.com/girlie_mac) - -## [講義前のクイズ](https://ff-quizzes.netlify.app/en/ml/) +# 責任あるAIによる機械学習ソリューションの構築 + +![機械学習における責任あるAIの概要を示したスケッチノート](../../../../translated_images/ja/ml-fairness.ef296ebec6afc98a.webp) +> スケッチノート作成者:[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について学ぶ -[![Microsoftの責任あるAIへのアプローチ](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoftの責任あるAIへのアプローチ") +[![Microsoftの責任あるAIへの取り組み](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](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) +- 誹謗。不公平に誰かや何かを批判し、ラベル付けすること。例えば、ある画像ラベリング技術が暗い肌の人を類人猿として誤分類した有名な事例。 +- 過剰または過少表現。特定の集団が特定の職業で見られない、またはサービスや機能がそれを助長している場合。 +- 固定観念。特定の集団に対して事前に割り当てられた属性を関連付けること。例えば、英語とトルコ語間の翻訳で、性別に関する固定観念による誤訳が生じることがある。 -![トルコ語への翻訳](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) +![トルコ語への翻訳](../../../../translated_images/ja/gender-bias-translate-en-tr.f185fd8822c2d437.webp) > トルコ語への翻訳 -![英語への翻訳](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) -> 英語への翻訳 +![英語への再翻訳](../../../../translated_images/ja/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) +> 英語への再翻訳 -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システムが個人や社会に与える影響に対して責任を負う必要があります。 +[![顔認識による大規模監視の警告を行うAI研究者](../../../../translated_images/ja/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft's Approach to Responsible AI") -[![主要なAI研究者が顔認識による大量監視の警告](../../../../1-Introduction/3-fairness/images/accountability.png)](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による原則を実践に移す -[![Responsible AI Toolbox: 責任あるAIを構築するためのオープンソースフレームワーク](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: 責任あるAIを構築するためのオープンソースフレームワーク") +[![Responsible AI Toolbox: An open-source framework for building responsible AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") -> 🎥 上の画像をクリックして動画を視聴: -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で回帰モデルを始めよう -![回帰の概要をスケッチノートで表現](../../../../sketchnotes/ml-regression.png) +![回帰の概要を示したスケッチノート](../../../../translated_images/ja/ml-regression.4e4f70e3b3ed446e.webp) -> スケッチノート作成者: [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://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "初心者向け機械学習 - 機械学習モデルを構築するためのツールのセットアップ") +[![初心者向け機械学習 - 機械学習モデル構築準備のためのツールセットアップ](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](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に慣れましょう。 > > [![Visual Studio CodeでPythonをセットアップ](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](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` で識別できます。 -ノートブックは、コードを記述するだけでなく、コードに関するメモやドキュメントを追加することができるインタラクティブな環境です。これは実験的または研究指向のプロジェクトに非常に役立ちます。 +ノートブックはインタラクティブな環境で、コードだけでなくメモやドキュメントを書くことができ、実験や研究志向のプロジェクトに非常に役立ちます。 -[![初心者向け機械学習 - 回帰モデルを構築するためのJupyter Notebookのセットアップ](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "初心者向け機械学習 - 回帰モデルを構築するためのJupyter Notebookのセットアップ") +[![初心者向け機械学習 - Jupyterノートブックのセットアップで回帰モデルを構築開始](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](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 ``` -![ノートブックを開いた状態のVS Code](../../../../2-Regression/1-Tools/images/notebook.jpg) +![ノートブックが開かれたVS Code](../../../../translated_images/ja/notebook.4a3ee31f396b8832.webp) -コードとコメントを交互に記述することで、ノートブックを自己文書化することができます。 +コードにコメントを挟みながらノートブックを自己文書化することもできます。 -✅ ウェブ開発者の作業環境とデータサイエンティストの作業環境がどれほど異なるか、少し考えてみてください。 +✅ ウェブ開発者の作業環境とデータサイエンティストの環境の違いについて少し考えてみましょう。 -## 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)を参考にしています。 -[![初心者向け機械学習 - Pythonで初めての線形回帰プロジェクト](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "初心者向け機械学習 - Pythonで初めての線形回帰プロジェクト") -> 🎥 上の画像をクリックすると、この演習を進める短い動画が再生されます。 +[![初心者向け機械学習 - Pythonで最初の線形回帰プロジェクト](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](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() ``` - ![糖尿病に関するデータポイントを示す散布図](../../../../2-Regression/1-Tools/images/scatterplot.png) -✅ 少し考えてみましょう。たくさんの小さなデータ点を通る1本の直線がありますが、この直線は一体何をしているのでしょうか?この直線を使って、新しい未確認のデータポイントがプロットのy軸に対してどこに位置するべきかを予測できる方法が見えてきませんか?このモデルの実用的な使い方を言葉で説明してみてください。 + ![糖尿病に関するデータ点の散布図](../../../../translated_images/ja/scatterplot.ad8b356bcbb33be6.webp) + -おめでとうございます!初めての線形回帰モデルを構築し、それを使って予測を行い、プロットに表示することができました! + ✅ ここで何が起こっているのか少し考えてみてください。直線が多くの小さなデータ点の間を通っていますが、それは正確には何をしているのでしょうか? この直線を使って、新しい、見たことのないデータ点がプロットの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を使って回帰モデルを構築する: データの準備と可視化 -![データ可視化のインフォグラフィック](../../../../2-Regression/2-Data/images/data-visualization.png) +![データ可視化のインフォグラフィック](../../../../translated_images/ja/data-visualization.54e56dded7c1a804.webp) -インフォグラフィック作成者:[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」などの混在した値が含まれています。実際、このデータは少しばかり乱雑です。 -[![初心者向けML - データセットの分析とクリーニング方法](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "初心者向けML - データセットの分析とクリーニング方法") +[![初心者向けML - データセットの分析とクリーンアップ方法](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](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個に比べて、バスケットあたりの小さなかぼちゃの数が非常に多いためです。 +✅ 半ブッシェル単位で販売されているカボチャは非常に高価なのに気づきましたか?理由を考えられますか?ヒント: 小さなカボチャは大きいものよりもずっと高価です。おそらく大きな空洞のパイ用カボチャが一つ入るスペースに、小さなカボチャがたくさん入るためです。 ## 可視化の戦略 -データサイエンティストの役割の一部は、扱っているデータの質や性質を示すことです。そのために、興味深い可視化、つまりプロット、グラフ、チャートを作成して、データのさまざまな側面を示します。この方法で、視覚的に関係性やギャップを示すことができ、そうでなければ見つけにくいものを明らかにします。 +データサイエンティストの役割の一部は、扱うデータの質や性質を示すことです。そのため、しばしば興味深い可視化(プロット、グラフ、チャート)を作成し、異なる側面を示します。こうすることで、目に見えて関係性やデータの穴を明らかにできます。 -[![初心者向けML - Matplotlibを使ったデータの可視化方法](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "初心者向けML - Matplotlibを使ったデータの可視化方法") +[![初心者向けML - Matplotlibによるデータ可視化方法](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](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() ``` - ![月ごとの価格関係を示す散布図](../../../../2-Regression/2-Data/images/scatterplot.png) + ![価格と月の関係を示す散布図](../../../../translated_images/ja/scatterplot.b6868f44cbd2051c.webp) - このプロットは役に立ちますか?何か驚くことはありますか? + これは有用なグラフでしょうか?何か驚いた点はありますか? - 特に役に立つわけではありません。単にデータを月ごとの点の広がりとして表示しているだけです。 + 入力データの散布図としてポイントを散らしているだけなので、特に役に立つわけではありません。 -### 有用なプロットにする +### もっと有用にするには -有用なチャートを表示するには、通常、データを何らかの形でグループ化する必要があります。y軸に月を表示し、データが分布を示すプロットを作成してみましょう。 +有益なデータを示すには通常、何らかの方法でデータをグループ化する必要があります。月をy軸に取り、データの分布を示すグラフを作成してみましょう。 -1. グループ化された棒グラフを作成するセルを追加します: +1. グループ化した棒グラフを作るセルを追加します: ```python new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') plt.ylabel("Pumpkin Price") ``` - ![月ごとの価格関係を示す棒グラフ](../../../../2-Regression/2-Data/images/barchart.png) + ![価格と月の関係を示す棒グラフ](../../../../translated_images/ja/barchart.a833ea9194346d76.webp) + + これの方が有用なデータ可視化です!カボチャの最高価格は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で作成した価格と月の散布図](../../../../translated_images/ja/relplot.a03837d8f0329cec.webp) + + 列名とデータフレームを渡すだけで、軸ラベルはSeabornが自動で付けてくれるのがわかります。 + +2. `kind="line"`を渡して線グラフに切り替えることもできます。Seabornは線のまわりに信頼区間の帯も描いてくれます: + + ```python + sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins) + ``` + + ![Seabornの線グラフで示した価格と月の関係](../../../../translated_images/ja/lineplot.f9034ba47b1e30ee.webp) + + この特定のデータはノイズが多いため線グラフは最適ではありませんが、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") + ``` + + ![月ごとの価格分布を示すSeabornの棒グラフ](../../../../translated_images/ja/catplot.e73fc35fdf96242b.webp) + + これは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") + ``` + + ![数値列間の相関を示すSeabornのヒートマップ](../../../../translated_images/ja/heatmap.bd98dce43b404c57.webp) + + `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 @@ -# カテゴリー予測のためのロジスティック回帰 +# カテゴリを予測するためのロジスティック回帰 -![ロジスティック回帰と線形回帰のインフォグラフィック](../../../../2-Regression/4-Logistic/images/linear-vs-logistic.png) +![ロジスティック回帰と線形回帰のインフォグラフィック](../../../../translated_images/ja/linear-vs-logistic.ba180bf95e7ee667.webp) -## [講義前のクイズ](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://img.youtube.com/vi/KpeCT6nEpBY/0.jpg)](https://youtu.be/KpeCT6nEpBY "初心者向け機械学習 - ロジスティック回帰の理解") +[![初心者向けML - 機械学習の分類のためのロジスティック回帰の理解](https://img.youtube.com/vi/KpeCT6nEpBY/0.jpg)](https://youtu.be/KpeCT6nEpBY "初心者向けML - 機械学習の分類のためのロジスティック回帰の理解") -> 🎥 上の画像をクリックすると、ロジスティック回帰の概要を説明する短い動画が視聴できます。 +> 🎥 上の画像をクリックするとロジスティック回帰の短いビデオ概要がご覧になれます。 -### 二値分類 +### 2値分類 -ロジスティック回帰は線形回帰と同じ機能を提供しません。前者は二値カテゴリー(「白か白ではない」)についての予測を提供しますが、後者は連続値を予測することができます。例えば、かぼちゃの産地と収穫時期を基にして、_価格がどれだけ上昇するか_ を予測することができます。 +ロジスティック回帰は線形回帰と同じ特徴を提供しません。前者は2値カテゴリ(「白か白でないか」)の予測を行うのに対し、後者は連続値、例えばかぼちゃの産地や収穫時期から「価格がどれだけ上がるか」を予測できます。 -![かぼちゃ分類モデル](../../../../2-Regression/4-Logistic/images/pumpkin-classifier.png) -> インフォグラフィック作成者:[Dasani Madipalli](https://twitter.com/dasani_decoded) +![かぼちゃ分類モデル](../../../../translated_images/ja/pumpkin-classifier.562771f104ad5436.webp) +> インフォグラフィック [Dasani Madipalli](https://twitter.com/dasani_decoded) 提供 ### 他の分類 -ロジスティック回帰には、他にも多項式や順序型などの種類があります: +ロジスティック回帰には、多項および順序分類もあります: -- **多項式**: 複数のカテゴリーを持つ場合 - 「オレンジ、白、縞模様」。 -- **順序型**: 順序付けられたカテゴリーを持つ場合。例えば、かぼちゃのサイズ(mini, sm, med, lg, xl, xxl)を論理的に順序付ける場合に役立ちます。 +- 多項分類は複数のカテゴリを対象にします - 「オレンジ、白、縞模様」。 +- 順序分類は順序付けられたカテゴリに対応し、かぼちゃのサイズのように(mini, sm, med, lg, xl, xxl)順序がある場合に役立ちます。 -![多項式回帰 vs 順序型回帰](../../../../2-Regression/4-Logistic/images/multinomial-vs-ordinal.png) +![多項分類と順序分類の比較](../../../../translated_images/ja/multinomial-vs-ordinal.36701b4850e37d86.webp) -### 変数は相関している必要はない +### 変数は必ずしも相関している必要はない -線形回帰がより相関のある変数でうまく機能することを覚えていますか?ロジスティック回帰はその逆で、変数が一致している必要はありません。このデータには相関が弱い変数があるため、適しています。 +線形回帰はより相関の強い変数があるほど効果的でしたが、ロジスティック回帰は逆で、変数が一致している必要はありません。このデータは相関がやや弱いので適しています。 ### 多くのクリーンなデータが必要 -ロジスティック回帰は、データが多いほど正確な結果を提供します。私たちの小さなデータセットはこのタスクには最適ではないため、その点を考慮してください。 +ロジスティック回帰は多くのデータを使うほど精度が上がります。私たちの小さなデータセットは最適ではないことを念頭に置いてください。 -[![初心者向け機械学習 - ロジスティック回帰のためのデータ分析と準備](https://img.youtube.com/vi/B2X4H9vcXTs/0.jpg)](https://youtu.be/B2X4H9vcXTs "初心者向け機械学習 - ロジスティック回帰のためのデータ分析と準備") +[![初心者向けML - ロジスティック回帰のためのデータ分析と準備](https://img.youtube.com/vi/B2X4H9vcXTs/0.jpg)](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はデータを可視化するための便利な方法を提供します ) ``` - ![データのグリッド表示](../../../../2-Regression/4-Logistic/images/pumpkins_catplot_1.png) + ![可視化されたデータのグリッド](../../../../translated_images/ja/pumpkins_catplot_1.c55c409b71fea2ec.webp) - データを観察することで、`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}") ``` +![可視化されたcatplot](../../../../translated_images/ja/pumpkins_catplot_2.87a354447880b388.webp) -![データのカテゴリカルプロット](../../../../2-Regression/4-Logistic/images/pumpkins_catplot_2.png) +### スウォームプロットを使う -### スウォームプロットを使用する +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) ``` - ![データのスウォームプロット](../../../../2-Regression/4-Logistic/images/swarm_2.png) + ![可視化されたデータのスウォーム](../../../../translated_images/ja/swarm_2.efeacfca536c2b57.webp) + +注意:上のコードはデータ数が多いため警告を出す場合があります。'size'パラメーターでマーカーのサイズを小さくすると解決しますが、読みやすさが下がることに注意してください。 -**注意**: 上記のコードは警告を生成する可能性があります。Seabornが大量のデータポイントをスウォームプロットに表現するのに失敗するためです。解決策として、マーカーのサイズを 'size' パラメータで減少させることができます。ただし、これによりプロットの読みやすさが影響を受ける可能性があります。 -> **🧮 数学を見てみよう** +> **🧮 数学的な解説** > -> ロジスティック回帰は「最大尤度」の概念に基づいており、[シグモイド関数](https://wikipedia.org/wiki/Sigmoid_function)を使用します。プロット上の「シグモイド関数」は「S」字型の形状をしています。この関数は値を取り、それを0から1の間のどこかにマッピングします。その曲線は「ロジスティック曲線」とも呼ばれます。その公式は次のようになります: +> ロジスティック回帰は[シグモイド関数](https://wikipedia.org/wiki/Sigmoid_function)を使った「最尤推定」の概念に基づいています。プロット上の「シグモイド関数」はS字型をしており、値を0から1の間に写像します。この曲線は「ロジスティック曲線」とも呼ばれます。数式は以下のようになります: > -> ![ロジスティック関数](../../../../2-Regression/4-Logistic/images/sigmoid.png) +> ![ロジスティック関数](../../../../translated_images/ja/sigmoid.8b7ba9d095c789cf.webp) > -> シグモイドの中点はxの0点に位置し、Lは曲線の最大値、kは曲線の急峻さを示します。この関数の結果が0.5以上の場合、そのラベルは二値選択の「1」として分類されます。それ以外の場合は「0」として分類されます。 +> シグモイドの中点はxの0点にあり、Lは曲線の最大値、kは傾きの急さを示します。関数の出力が0.5より大きければ、そのラベルはバイナリ選択の「1」クラスに分類されます。そうでなければ「0」となります。 ## モデルを構築する -Scikit-learnでこの二値分類を見つけるモデルを構築するのは驚くほど簡単です。 +2値分類を見つけるモデル構築はScikit-learnでは驚くほど簡単です。 -[![初心者向け機械学習 - データ分類のためのロジスティック回帰](https://img.youtube.com/vi/MmZS2otPrQ8/0.jpg)](https://youtu.be/MmZS2otPrQ8 "初心者向け機械学習 - データ分類のためのロジスティック回帰") +[![初心者向けML - データの分類のためのロジスティック回帰](https://img.youtube.com/vi/MmZS2otPrQ8/0.jpg)](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曲線を可視化する -[![初心者向け機械学習 - ROC曲線を使ったロジスティック回帰の性能分析](https://img.youtube.com/vi/GApO575jTA0/0.jpg)](https://youtu.be/GApO575jTA0 "初心者向け機械学習 - ROC曲線を使ったロジスティック回帰の性能分析") +[![ML for beginners - Analyzing Logistic Regression Performance with ROC Curves](https://img.youtube.com/vi/GApO575jTA0/0.jpg)](https://youtu.be/GApO575jTA0 "ML for beginners - Analyzing Logistic Regression Performance with ROC Curves") -> 🎥 上の画像をクリックしてROC曲線の概要を短い動画で確認してください +> 🎥 上の画像をクリックするとROC曲線の短い動画概要を見ることができます -もう一つの視覚化を行い、いわゆる「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軸に偽陽性率を示します。」したがって、曲線の急勾配と中間線と曲線との間の空間が重要であり、急速に上昇して中間線を超える曲線を望みます。今回の場合、最初に偽陽性があり、その後きちんと上昇してラインを超えています: -![ROC](../../../../2-Regression/4-Logistic/images/ROC_2.png) +![ROC](../../../../translated_images/ja/ROC_2.777f20cdfc4988ca.webp) -最後に、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学習の紹介 -![機械学習における強化学習の概要をスケッチノートで表現](../../../../sketchnotes/ml-reinforcement.png) -> スケッチノート: [Tomomi Imura](https://www.twitter.com/girlie_mac) +![スケッチノートによる機械学習における強化の要約](../../../../translated_images/ja/ml-reinforcement.94024374d63348db.webp) +> [Tomomi Imura](https://www.twitter.com/girlie_mac)によるスケッチノート -強化学習には、エージェント、状態、そして各状態における一連の行動という3つの重要な概念が含まれます。指定された状態で行動を実行することで、エージェントは報酬を得ます。例えば、コンピュータゲーム「スーパーマリオ」を想像してみてください。あなたはマリオであり、ゲームのレベルにいて、崖の端に立っています。上にはコインがあります。マリオとして、ゲームレベルの特定の位置にいる状態が「状態」です。右に一歩進む(行動)と崖から落ちてしまい、低い数値スコアが与えられます。しかし、ジャンプボタンを押すとポイントを獲得し、生き残ることができます。それはポジティブな結果であり、ポジティブな数値スコアが与えられるべきです。 +強化学習は、エージェント、いくつかの状態、および各状態ごとの行動のセットという3つの重要な概念を含みます。特定の状態で行動を実行すると、エージェントに報酬が与えられます。再びコンピューターゲームのスーパーマリオを想像してください。あなたはマリオで、ゲームのレベルにいて、崖の端に立っています。あなたの上にはコインがあります。マリオであり、ゲームのレベルの特定の位置にいる…それがあなたの状態です。右に一歩動く(行動すると)と崖から落ちてしまい、数値的に低いスコアが与えられます。しかし、ジャンプボタンを押すとポイントを獲得し、生き続けることができます。それは良い結果であり、正の数値スコアを与えられるべきです。 -強化学習とシミュレーター(ゲーム)を使用することで、生き残りながらできるだけ多くのポイントを獲得するためのゲームプレイ方法を学ぶことができます。 +強化学習とシミュレーター(ゲーム)を使うことで、生き残り、できるだけ多くのポイントを獲得することを最大化するためのゲームのプレイ方法を学習できます。 -[![強化学習の紹介](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) +[![強化学習入門](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](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 `高さ` の正方形の盤として考えましょう。このような感じです: -![ピーターの環境](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![ピーターの環境](../../../../translated_images/ja/environment.40ba3cb66256c93f.webp) -このボードの各セルは以下のいずれかになります: +この盤上の各セルは以下のいずれかです: -* **地面**: ピーターや他の生物が歩ける場所。 -* **水**: 明らかに歩けない場所。 -* **木**または**草**: 休むことができる場所。 -* **リンゴ**: ピーターが見つけて喜ぶ食べ物。 -* **狼**: 危険で避けるべき存在。 +* 地面、ピーターや他の生き物が歩ける場所。 +* 、もちろん歩けない場所。 +* 、休憩できる場所。 +* リンゴ、ピーターが自分を養うために見つけたいもの。 +* 、危険で避けるべきもの。 -この環境で作業するためのコードを含む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歩と比較してかなり長いことに注意してください。 - また、ランダムウォーク中のピーターの動きを確認することもできます: + また、ピーターの動きをランダムウォーク中に見ることもできます: ![ピーターのランダムウォーク](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) ## 報酬関数 -ポリシーをより賢くするためには、どの動きが他より「良い」のかを理解する必要があります。そのためには、目標を定義する必要があります。 +方策をより賢くするために、どの動きが「より良い」かを理解する必要があります。そのためには目標を定義します。 -目標は、各状態に対してスコア値を返す**報酬関数**によって定義できます。数値が高いほど報酬関数が良いことを意味します。(コードブロック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)`。 -![ピーターの環境](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![ピーターの環境](../../../../translated_images/ja/env_init.04e8f26d2d60089e.webp) -各セルの中央には、移動の推奨方向を示す「矢印」があります。すべての方向が等しいため、点が表示されます。 +各セルの中央に「矢印」があり、好ましい移動方向を示します。すべての方向が等しい場合は点が表示されます。 -次にシミュレーションを実行し、環境を探索し、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ラーニングを使ってスケートの仕方、特にバランスを保つ方法を学ぶ様子を見ていきましょう。 + +![華麗なる脱出!](../../../../translated_images/ja/escape.18862db9930337e3.webp) + +> ピーターと友達が創意工夫してオオカミから逃げる!画像提供:[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() ``` - 以下のような画像が表示されるはずです: + 画面はこの画像に似たものが見えるはずです: - ![バランスを取らないカートポール](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) + ![バランスを取っていないカートポール](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) -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) ``` -![生の進捗](../../../../8-Reinforcement/2-Gym/images/train_progress_raw.png) +![生の進捗](../../../../translated_images/ja/train_progress_raw.2adfdf2daea09c59.webp) -このグラフからは何も判断できません。これは、確率的なトレーニングプロセスの性質上、トレーニングセッションの長さが大きく異なるためです。このグラフをより理解しやすくするために、例えば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)) ``` -![トレーニング進捗](../../../../8-Reinforcement/2-Gym/images/train_progress_runav.png) +![学習進行](../../../../translated_images/ja/train_progress_runav.c71694a8fa9ab359.webp) + +## ハイパーパラメータの変化 + +学習を安定させるためには、訓練中にハイパーパラメータを調整すると良いです。特に: + +- 学習率 `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() ``` -以下のような結果が表示されるはずです: +このような結果が得られるはずです: -![バランスを取るカートポール](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) +![a balancing cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) --- ## 🚀チャレンジ -> **タスク 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 ដែលមានការទទួលខុសត្រូវ - -![សង្ខេបអំពី AI ដែលមានការទទួលខុសត្រូវក្នុងម៉ាស៊ីនរៀនក្នុងសកេតណូត](../../../../translated_images/km/ml-fairness.ef296ebec6afc98a.webp) -> សកេតណូតដោយ [Tomomi Imura](https://www.twitter.com/girlie_mac) - -## [គន្លឹះសំណួរមុនពេលសិក្សា](https://ff-quizzes.netlify.app/en/ml/) +# ការសាងសង់ដំណោះស្រាយរបស់ការរៀនម៉ាស៊ីនជាមួយ AI ដែលមានការទទួលខុសត្រូវ + +![សង្ខេបអំពី AI ដែលមានការទទួលខុសត្រូវក្នុងការរៀនម៉ាស៊ីនជាមួយនូវគំនូរសង្ខេប](../../../../translated_images/km/ml-fairness.ef296ebec6afc98a.webp) +> គំនូរសង្ខេបដោយ [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) -[![Microsoft's Approach to Responsible AI](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoft's Approach to Responsible AI") +[![វិធីសាស្រ្តរបស់ Microsoft ទៅ AI ដែលមានការទទួលខុសត្រូវ](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](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) +- **ការខិតខំដេទ** បង្ហាញជាអាក្រក់ និងដាក់ស្លាកអំពីអ្វីមួយ ឬនរណាមួយដោយមិនត្រឹមត្រូវ។ ឧទាហរណ៍ បច្ចេកវិទ្យាស្លាកបង្ហាញរូបភាពបានដាក់ស្លាករូបភាពនៃមនុស្សស្បែកងងឹតដូចជាគ្រូហុច។ +- **ការបង្ហាញពុម្ពលើឬក្រោម** គំនិតគឺថាក្រុមមួយមិនត្រូវបានឃើញក្នុងវិជ្ជាជីវៈមួយ និងសេវាកម្ម ឬមុខងារណាមួយដែលបន្តលើកតម្កើងករណីនេះកំពុងបង្កើតការខូចខាត។ +- **ការរំលេចពុម្ពគំរូ** ភ្ជាប់ក្រុមមួយជាមួយលក្ខណៈដែលបានកំណត់ជាមុន។ ឧទាហរណ៍ ប្រព័ន្ធបកប្រែភាសារវាងភាសាអង់គ្លេស និងភាសាទួរគីអាចមានការខុសប្លែកដោយសារពាក្យដែលមានការភ្ជាប់ពុម្ពលើភេទ។ ![បកប្រែទៅភាសាទួរគី](../../../../translated_images/km/gender-bias-translate-en-tr.f185fd8822c2d437.webp) > បកប្រែទៅភាសាទួរគី -![បកប្រែត្រឡប់ទៅភាសាអង់គ្លេស](../../../../translated_images/km/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) -> បកប្រែត្រឡប់ទៅភាសាអង់គ្លេស +![បកប្រែថយឡើងវិញទៅភាសាអង់គ្លេស](../../../../translated_images/km/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) +> បកប្រែថយឡើងវិញទៅភាសាអង់គ្លេស -ពេលរចនានិងសាកល្បងប្រព័ន្ធ 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 របស់ពួកគេចំពោះមនុស្ស ឬសង្គម។ -### ការទទួលខុសត្រូវ +[![អ្នកស្រាវជ្រាវ AI ផ្តល់ការព្រមានអំពីការតាមដានយ៉ាងទូលំទូលាយតាមរយៈបច្ចេកវិទ្យាសម្គាល់មុខមនុស្ស](../../../../translated_images/km/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "វិធីសាស្រ្តរបស់ Microsoft ទៅ AI ដែលមានការទទួលខុសត្រូវ") -មនុស្សដែលរចនានិងចេញផ្សាយប្រព័ន្ធ AI ត្រូវទទួលខុសត្រូវចំពោះរបៀបដែលប្រព័ន្ធរបស់ពួកគេចាក់សោ។ តម្រូវការនេះមានសារៈសំខាន់បំផុត ជាពិសេសជាមួយបច្ចេកវិទ្យាទាក់ទងនឹងការបញ្ចាក់មុខមាត់។ នៅពេលថ្មីៗនេះ មានការទាមទារកើនឡើងសម្រាប់បច្ចេកវិទ្យាបញ្ចាក់មុខមាត់ ជាពិសេសពីអង្គការជំនួយច្បាប់ ដែលឃើញភាពមានសក្តានុពលនៃបច្ចេកវិទ្យានៅក្នុងការស្វែងរកកុមារកំពុងបាត់បង់។ ទោះជាយ៉ាងណា បច្ចេកវិទ្យាអាចត្រូវបានប្រើដោយរដ្ឋាភិបាលដើម្បីឲ្យមានការតាមដានជាប់លាប់លើមនុស្សជាក់លាក់។ ដូច្នេះ អ្នកវិទ្យាសាស្រ្តទិន្នន័យ និងអង្គការត្រូវតែទទួលខុសត្រូវចំពោះវិបត្តិនៃប្រព័ន្ធ AI កំពុងប៉ះពាល់មនុស្ស ឬសង្គម។ +> 🎥 ចុចរូបភាពខាងលើសម្រាប់វីដេអូ៖ ការព្រមានអំពីការតាមដានយ៉ាងទូលំទូលាយតាមរយៈបច្ចេកវិទ្យាសម្គាល់មុខមនុស្ស -[![អ្នកស្រាវជ្រាវ AI ដឹកនាំផ្សព្វផ្សាយអំពីការតាមដានទូទៅតាមបច្ចេកវិទ្យាបញ្ចាក់មុខមាត់](../../../../translated_images/km/accountability.41d8c0f4b85b6231.webp)](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 -[![Responsible AI Toolbox: An open-source framework for building responsible AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") +[![ប្រអប់ឧបករណ៍ AI ដែលមានការទទួលខុសត្រូវ: ស៊ុមប្រភពបើកសម្រាប់កសាង AI ដែលមានការទទួលខុសត្រូវ](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](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 សម្រាប់ម៉ូដែលស្ទាតការវិលត្រឡប់ -![សង្ខេបអំពីប្រូក្រេសស្យុងនៅក្នុងស្គេតណូត](../../../../translated_images/km/ml-regression.4e4f70e3b3ed446e.webp) +![សង្ខេបនៃការវិលត្រឡប់ក្នុងសេខេណូត](../../../../translated_images/km/ml-regression.4e4f70e3b3ed446e.webp) -> ស្គេតណូតដោយ [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://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ម៉ាស៊ីនរៀនសម្រាប់អ្នកចាប់ផ្ដើម - រៀបចំឧបករណ៍របស់អ្នករួចរាល់សម្រាប់បង្កើតគំរូម៉ាស៊ីនរៀន") +[![ML សម្រាប់ចាប់ផ្តើម - តំឡើងឧបករណ៍របស់អ្នកធ្វើការរៀបចំម៉ូដែលម៉ាស៊ីនរៀន](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](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) > - > [![រៀបចំ Python ជាមួយ Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "រៀបចំ Python ជាមួយ Visual Studio Code") + > [![តំឡើង Python ជាមួយ Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](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 គឺជាបរិយាកាសអន្តរកម្ម ដែលអនុញ្ញាតឲ្យអ្នកអភិវឌ្ឍការសរសេរកូដ និងបន្ថែមបញ្ញត្តិអត្ថាធិប្បាយ និងសរសេរឯកសារ ដើម្បីជួយសម្រាប់គម្រោងស្រាវជ្រាវឬសាកល្បង។ -[![ម៉ាស៊ីនរៀនសម្រាប់អ្នកចាប់ផ្ដើម - រៀបចំ Jupyter Notebooks ដើម្បីចាប់ផ្ដើមបង្កើតគំរូប្រូក្រេសស្យុង](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ម៉ាស៊ីនរៀនសម្រាប់អ្នកចាប់ផ្ដើម - រៀបចំ Jupyter Notebooks ដើម្បីចាប់ផ្ដើមបង្កើតគំរូប្រូក្រេសស្យុង") +[![ML សម្រាប់ចាប់ផ្តើម - ដំឡើង Jupyter Notebooks ដើម្បីចាប់ផ្តើមបង្កើតម៉ូដែលស្ទាតការវិលត្រឡប់](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](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 ``` -![VS Code ជាមួយសៀវភៅកំណត់បើក](../../../../translated_images/km/notebook.4a3ee31f396b8832.webp) +![VS Code ជាមួយ notebook បើក](../../../../translated_images/km/notebook.4a3ee31f396b8832.webp) -អ្នកអាចបញ្ចូលកូដរបស់អ្នកជាមួយមតិយោបល់ ដើម្បីចុះផ្សាយឯកសារសៀវភៅកំណត់។ +អ្នកអាចបញ្ចូលកូដរបស់អ្នកជាមួយការពិពណ៌នាដើម្បីឯកសារយោងខ្លួនចំពោះ 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។ -[![ម៉ាស៊ីនរៀនសម្រាប់អ្នកចាប់ផ្ដើម - គម្រោងប្រូក្រេសស្យុងខ្សែបន្ទាត់ដំបូងរបស់អ្នកនៅក្នុង Python](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "ម៉ាស៊ីនរៀនសម្រាប់អ្នកចាប់ផ្ដើម - គំរោងប្រូក្រេសស្យុងខ្សែបន្ទាត់ដំបូងរបស់អ្នកនៅក្នុង Python") -> 🎥 ចុចរូបភាពខាងលើសម្រាប់វីដេអូខ្លីដែលបង្កើតហាត់ប្រាណនេះ។ +[![ML សម្រាប់ចាប់ផ្តើម - គម្រោងស្ទាតការវិលត្រឡប់បន្ទាត់ដំបូងរបស់អ្នកនៅក្នុង Python](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](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() ``` - ![scatterplot បង្ហាញចំណុចទិន្នន័យជុំវិញជំងឺទឹកនោមផ្អាស់](../../../../translated_images/km/scatterplot.ad8b356bcbb33be6.webp) - ✅ សូមគិតកន្លែងអ្វីកំពុងកើតឡើងនៅទីនេះ។ ខ្សែ​ត្រង់មួយកំពុងរត់កាត់តាមចំណុចតូចៗជាច្រើននៃទិន្នន័យ ប៉ុន្តែវាកំពុងធ្វើអ្វីពិតប្រាកដមែនទេ? តើអ្នកអាចឃើញយ៉ាងដូចម្តេចថា តើអ្នកគួរតែប្រើខ្សែនេះដើម្បីទាយថាតើចំណុចទិន្នន័យថ្មីមួយដែលមិនធ្លាប់ឃើញអាចផ្គូផ្គងនៅឯណាទៅទាក់ទងនឹងអ័ក្ស y នៃផ្លូតបានយ៉ាងដូចម្តេច? សូមព្យាយាមដាក់ជាពាក្យអំពីការប្រើប្រាស់ជាក់ស្តែងនៃម៉ូដែលនេះ។ + ![scatterplot បង្ហាញនូវចំណុចទិន្នន័យជុំវិញជំងឺទឹកនោមផ្អែម](../../../../translated_images/km/scatterplot.ad8b356bcbb33be6.webp) + + + ✅ សូមគិតបន្តិចពីអ្វីកំពុងកើតឡើងនៅទីនេះ។ បន្ទាត់បញ្ចេញត្រូវបានគូសឆ្លងកាត់ចំណុចទិន្នន័យតូចជាច្រើន ប៉ុន្តែកន្លែងណា ដែលវាកំពុងធ្វើមែន? តើអ្នកអាចមើលឃើញថា អ្នកគួរតែអាចប្រើបណ្ដាបន្ទាត់នេះដើម្បីទាយថាតើយ៉ាងដូចម្តេចឲ្យបានត្រឹមត្រូវដែលចំណុចទិន្នន័យថ្មីមិនបានឃើញបង្ហាញខ្លួនពាក់ព័ន្ធជាមួយអ័ក្ស 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: រៀបចំនិងបង្ហាញទិន្នន័យ -![តារាងវិចិត្រស័ក្តិទិន្នន័យ](../../../../translated_images/km/data-visualization.54e56dded7c1a804.webp) +![រូបភាពបង្ហាញទិន្នន័យ](../../../../translated_images/km/data-visualization.54e56dded7c1a804.webp) -តារាងវិចិត្រស័ក្តិដោយ [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' និងតម្លៃផ្សេងទៀត។ ទិន្នន័យពិតជារំខានបន្តិច។ -[![ML សម្រាប់អ្នកថ្មី - របៀបវិភាគ និងសម្អាតទិន្នន័យ](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML សម្រាប់អ្នកថ្មី - របៀបវិភាគ និងសម្អាតទិន្នន័យ") +[![ML for beginners - របៀបវិភាគនិងសម្អាតទិន្នន័យ](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](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 ដែលមានកន្លែងទទេ។ -ផ្នែកមួយនៃភារកិច្ចរបស់វិទ្យាសាស្ដ្រ ទិន្នន័យគឺការបង្ហាញពីគុណភាព និងធម្មជាតិនៃទិន្នន័យដែលពួកគេទទួលបាន។ ដើម្បីធ្វើបែបនេះ មិនហ៊ានតែបង្កើតវិចិត្រស័ក្តិស្អាតៗជានិច្ច ឬ អត្រា គន្លង និងក្រាផបាន សម្រាប់បង្ហាញប្រភេទផ្សេងៗនៃទិន្នន័យ។ តាមរយៈនេះ ពួកគេអាចបង្ហាញទំនាក់ទំនង និងកន្លែងខ្វះខាតដែលពិបាកសំរេចដោយការមើលតាមផ្ទាល់។ +## វិធីសាស្រ្តបង្ហាញទិន្នន័យ -[![ML សម្រាប់អ្នកថ្មី - របៀបវិចិត្រស័ក្តិនិន្នន័យជាមួយ Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML សម្រាប់អ្នកថ្មី - របៀបវិចិត្រស័ក្តិនិន្នន័យជាមួយ Matplotlib") +ភាគមួយនៃតួអង្គរបស់អ្នកវិទ្យាសាស្ត្រទិន្នន័យគឺបង្ហាញគុណភាពនិងធម្មជាតិទិន្នន័យដែលពួកគេចង់ដំណើរការជាមួយ។ ដើម្បីធ្វើដូចនេះ ពួកគេជាញឹកញាប់បង្កើតការបង្ហាញទិន្នន័យគួរឱ្យចាប់អារម្មណ៍ ឬក្រាហ្វិក, គំនូស និងតារាង បង្ហាញបំណែកផ្សេងៗនៃទិន្នន័យ។ ដោយវិធីនេះ ពួកគេអាចបង្ហាញចំណងជើងនិងចន្លោះដែលលំបាកក្នុងការរកឃើញ។ -> 🎥 ចុចរូបភាពខាងលើសម្រាប់វីដេអូខ្លីបង្ហាញពីការវិចិត្រស័ក្តិនិន្នន័យសម្រាប់មេរៀននេះ។ +[![ML for beginners - របៀបបង្ហាញទិន្នន័យជាមួយ Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](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() ``` - - ![គំនូស scatterplot បង្ហាញទំនាក់ទំនងតម្លៃទៅខែ](../../../../translated_images/km/scatterplot.b6868f44cbd2051c.webp) - តើនេះជាគំនូសមានប្រយោជន៍ទេ? តើមានអ្វីណាមួយដែលធ្វើឲ្យអ្នកភ្ញាក់ផ្អើលទេ? + ![គំនូស scatterplot បង្ហាញទំនាក់ទំនងតម្លៃនឹងខែ](../../../../translated_images/km/scatterplot.b6868f44cbd2051c.webp) - វាមិនមានប្រយោជន៍ពិសេសណាស់ទេ ពីព្រោះវា​គ្រាន់តែបង្ហាញទិន្នន័យរបស់អ្នកជាចំនុចច散នៅក្នុងខែណាមួយ។ + តើនេះជាគំនូសមានប្រយោជន៍ដែរឬទេ? តើមានអ្វីដែលធ្វើឲ្យអ្នកភ្ញាក់ផ្អើលទេ? + + វាមិនមានប្រយោជន៍ពិសេស យ៉ាងហោចណាស់វាបង្ហាញតែចំណុចចែកចាយទិន្នន័យនៅខែមួយ។ ### ធ្វើឲ្យវាមានប្រយោជន៍ -ដើម្បីទទួលបានតារាងបង្ហាញទិន្នន័យដែលមានប្រយោជន៍ អ្នកត្រូវតែផ្ដុំទិន្នន័យមួយរបៀបណាមួយ។ យើងសាកល្បងបង្កើតគំនូសដែលភាគល្អិត y បង្ហាញខែ និងទិន្នន័យបង្ហាញការបែងចែកទិន្នន័យ។ +ដើម្បីឲ្យតារាងបង្ហាញទិន្នន័យមានប្រយោជន៍ អ្នកភ្លឹតត្រូវតែក្រុមទិន្នន័យមួយរបៀបណាមួយ។ ព្យាយាមបង្កើតគំនូសដែលពីអ័ក្ស y បង្ហាញខែ ខណ:ដែលទិន្នន័យបង្ហាញពីចំណែកនៃទិន្នន័យ។ -1. បន្ថែមកោសិកាមួយសម្រាប់បង្កើតតារាងជាតារាងប៊ា៖ +1. បន្ថែមកោសិកាមួយសម្រាប់បង្កើតគំនូសតារាងបន្ទាត់ជាក្រុម (grouped bar chart): ```python new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') plt.ylabel("Pumpkin Price") ``` - - ![តារាងប៊ាបង្ហាញទំនាក់ទំនងតម្លៃទៅខែ](../../../../translated_images/km/barchart.a833ea9194346d76.webp) - នេះជាវិចិត្រស័ក្តិទិន្នន័យមានប្រយោជន៍ជាងមុនទេ! វាហាក់ដូចបង្ហាញថាតម្លៃខ្ពស់បំផុតសម្រាប់បាយផ្លែគោលមាននៅខែកញ្ញា និងតុលា។ តើវาตรงតាមការរំពឹងទុករបស់អ្នកទេ? ហេតុអ្វី? + ![គំនូសតារាងបន្ទាត់បង្ហាញទំនាក់ទំនងតម្លៃនឹងខែ](../../../../translated_images/km/barchart.a833ea9194346d76.webp) + + នេះជាការបង្ហាញទិន្នន័យមានប្រយោជន៍ជាង! វាលើកឡើងថាតម្លៃផ្កាផ្លែទុរក្រហមខ្ពស់ក្នុងខែកញ្ញានិងតុលា។ តើវាដូចដែលអ្នករំពឹងទុករឺទេ? ហេតុអ្វីបានជាឬមិន? + +## លំហាត់ - សាកល្បងជាមួយ 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) + ``` + + ![គំនូស scatterplot Seaborn បង្ហាញទំនាក់ទំនងតម្លៃនឹងខែ](../../../../translated_images/km/relplot.a03837d8f0329cec.webp) + + សូមចាប់អារម្មណ៍ថាអ្នកផ្ដល់​ឈ្មោះជួរឈរ និង dataframe ហើយ Seaborn រក្សាថ្លា​ទម្រង់អ័ក្សសម្រាប់អ្នក។ + +2. អ្នកអាចប្ដូរទៅគំនូសបន្ទាត់ដោយផ្ដល់ `kind="line"`។ Seaborn គូរពណ៌ស្រមោលបង្ហាញចន្លោះទំនុកចិត្តជុំវិញបន្ទាត់ៈ + + ```python + sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins) + ``` + + ![គំនូសបន្ទាត់ Seaborn បង្ហាញទំនាក់ទំនងតម្លៃនឹងខែ](../../../../translated_images/km/lineplot.f9034ba47b1e30ee.webp) + + ទិន្នន័យនេះស្ងើចស្ងាត់គ្នា ដោយហើយគំនូសបន្ទាត់មិនមែនជាជម្រើសច្បាស់លាស់បំផុត ទោះជាយ៉ាងណាក៏ដោយ វាបង្ហាញពីរបៀបដែលអ្នកអាចប្ដូរប្រភេទគំនូសក្នុង 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") + ``` + + ![តារាងស្រោម Seaborn បង្ហាញពីចំនួនតម្លៃក្នុងមួយខែ](../../../../translated_images/km/catplot.e73fc35fdf96242b.webp) + + នេះបញ្ជាក់អ្វីដែលអ្នកបានឃើញជាមួយ 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") + ``` + + ![តារាងកម្តៅ Seaborn បង្ហាញការភ្ជាប់រវាងជួរឈរលេខ](../../../../translated_images/km/heatmap.bd98dce43b404c57.webp) + + តម្លៃជិតនឹង `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 ಜೊತೆಗೆ ಯಂತ್ರ ಅಧ್ಯಯನ ಪರಿಹಾರಗಳನ್ನು ನಿರ್ಮಿಸುವುದು - -![ಯಂತ್ರ ಅಧ್ಯಯನದಲ್ಲಿ ಜವಾಬ್ದಾರಿಯುತ AI ಸಂಕ್ಷಿಪ್ತ ಟಿಪ್ಪಣಿ](../../../../translated_images/kn/ml-fairness.ef296ebec6afc98a.webp) -> ಟೊಮೊಮಿ ಇಮುರಾ ಅವರಿಂದ ಸ್ಕೆಚ್‌ನೋಟ್ [Tomomi Imura](https://www.twitter.com/girlie_mac) - -## [ಪೂರ್ವ-ಪಾಠ ಪ್ರಶ್ನೋತ್ತರ](https://ff-quizzes.netlify.app/en/ml/) +# ಜವಾಬ್ದಾರಿಯಾದ AI ಯೊಂದಿಗೆ ಯಂತ್ರ ಶಿಕ್ಷಣ ಪರಿಹಾರಗಳನ್ನು ನಿರ್ಮಿಸುವುದು + +![машиник-ಶಿಕ್ಷಣದಲ್ಲಿ ಜವಾಬ್ದಾರಿಯಾದ AI ಯ ಸಾರಾಂಶವನ್ನು ಸ್ಕೆಚ್ ನೋಟ್ ನಲ್ಲಿ](../../../../translated_images/kn/ml-fairness.ef296ebec6afc98a.webp) +> [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 ಬಗ್ಗೆ ಹೆಚ್ಚು ತಿಳಿದುಕೊಳ್ಳಿ [![Microsoft's Approach to Responsible AI](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoft's Approach to Responsible AI") -> 🎥 ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ ವಿಡಿಯೋ: Microsoft's Approach to Responsible AI +> 🎥 ವೀಡಿಯೊ ಮಾಡಲು ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ: 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 ಸಂಬಂಧಿತ ಪದಗಳ ಕಾರಣದಿಂದ ತಪ್ಪುಗಳು ಸಂಭವಿಸಬಹುದು. -![ಟರ್ಕಿಷ್‌ಗೆ ಭಾಷಾಂತರ](../../../../translated_images/kn/gender-bias-translate-en-tr.f185fd8822c2d437.webp) -> ಟರ್ಕಿಷ್‌ಗೆ ಭಾಷಾಂತರ +![ಟರ್ಕಿಶ್‌ಗೆ ಭಾಷಾಂತರ](../../../../translated_images/kn/gender-bias-translate-en-tr.f185fd8822c2d437.webp) +> ಟರ್ಕಿಶ್‌ಗೆ ಭಾಷಾಂತರ -![ಇಂಗ್ಲಿಷ್‌ಗೆ ಹಿಂದಿರುಗಿ ಭಾಷಾಂತರ](../../../../translated_images/kn/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) -> ಇಂಗ್ಲಿಷ್‌ಗೆ ಹಿಂದಿರುಗಿ ಭಾಷಾಂತರ +![ಇಂಗ್ಲಿಷ್‌ಗೆ ಹಿಂಬಾಲಿಸಿ ಭಾಷಾಂತರ](../../../../translated_images/kn/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) +> ಇಂಗ್ಲಿಷ್‌ಗೆ ಹಿಂಬಾಲಿಸಿ ಭಾಷಾಂತರ -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 ವ್ಯವಸ್ಥೆಯು ವ್ಯಕ್ತಿಗಳು ಅಥವಾ ಸಮುದಾಯದ ಮೇಲೆ ಹೇಗೆ ಪ್ರಭಾವ ಬೀರುತ್ತದೆ ಎಂಬದರಲ್ಲಿ ಹೊಣೆಗಾರರಾಗಿರಬೇಕು. -### ಹೊಣೆಗಾರಿಕೆ +[![ಮುಖ ಗುರುತಿಸುವ ಮೂಲಕ ವಿಸ್ತೃತ ದೂರದರ್ಶನದ ಎಚ್ಚರಿಕೆ ನೀಡುವ ಪ್ರಮುಖ AI ಸಂಶೋಧಕ](../../../../translated_images/kn/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft's Approach to Responsible AI") -AI ವ್ಯವಸ್ಥೆಗಳನ್ನು ವಿನ್ಯಾಸಗೊಳಿಸುವ ಮತ್ತು ಜಾರಿಗೆ ತರುವವರು ತಮ್ಮ ವ್ಯವಸ್ಥೆಗಳು ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ ಎಂಬುದಕ್ಕೆ ಹೊಣೆಗಾರರಾಗಿರಬೇಕು. ಮುಖ ಗುರುತಿಸುವಂತಹ ಸಂವೇದನಾಶೀಲ ತಂತ್ರಜ್ಞಾನಗಳೊಂದಿಗೆ ಹೊಣೆಗಾರಿಕೆ ಅಗತ್ಯ ವಿಶೇಷವಾಗಿ ಮುಖ್ಯ. ಇತ್ತೀಚೆಗೆ, ಮುಖ ಗುರುತಿಸುವ ತಂತ್ರಜ್ಞಾನಕ್ಕೆ ಹೆಚ್ಚುತ್ತಿರುವ ಬೇಡಿಕೆ ಇದೆ, ವಿಶೇಷವಾಗಿ ಕಾನೂನು ಅನುಷ್ಠಾನ ಸಂಸ್ಥೆಗಳಿಂದ, ಅವರು ಈ ತಂತ್ರಜ್ಞಾನವನ್ನು ಕಳೆದುಹೋಗಿದ ಮಕ್ಕಳನ್ನು ಹುಡುಕಲು ಉಪಯೋಗಿಸುತ್ತಾರೆ. ಆದರೆ, ಈ ತಂತ್ರಜ್ಞಾನಗಳನ್ನು ಸರ್ಕಾರವು ತಮ್ಮ ನಾಗರಿಕರ ಮೂಲಭೂತ ಸ್ವಾತಂತ್ರ್ಯಗಳನ್ನು ಅಪಾಯಕ್ಕೆ ಹಾಕಲು ಬಳಸಬಹುದು, ಉದಾಹರಣೆಗೆ ನಿರ್ದಿಷ್ಟ ವ್ಯಕ್ತಿಗಳ ನಿರಂತರ ನಿಗಾವಳಿಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುವ ಮೂಲಕ. ಆದ್ದರಿಂದ, ಡೇಟಾ ವಿಜ್ಞಾನಿಗಳು ಮತ್ತು ಸಂಸ್ಥೆಗಳು ತಮ್ಮ AI ವ್ಯವಸ್ಥೆಯು ವ್ಯಕ್ತಿಗಳು ಅಥವಾ ಸಮಾಜದ ಮೇಲೆ ಹೇಗೆ ಪ್ರಭಾವ ಬೀರುತ್ತದೆ ಎಂಬುದಕ್ಕೆ ಜವಾಬ್ದಾರರಾಗಿರಬೇಕು. +> 🎥 ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ: ಮುಖ ಗುರುತಿಸುವ ಮೂಲಕ ವಿಸ್ತೃತ ದೂರದರ್ಶನದ ಎಚ್ಚರಿಕೆಗಳು -[![ಮುಖ್ಯ AI ಸಂಶೋಧಕ ಮುಖ ಗುರುತಿಸುವ ಮೂಲಕ ಸಾಮೂಹಿಕ ನಿಗಾವಳಿಯ ಬಗ್ಗೆ ಎಚ್ಚರಿಕೆ ನೀಡುತ್ತಾರೆ](../../../../translated_images/kn/accountability.41d8c0f4b85b6231.webp)](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 ಗಳಿಗಾಗಿಸಿದ ಪ್ರಯತ್ನದಲ್ಲಿ: ನೈತಿಕತೆಯನ್ನು ಆಚರಣೆಗೆ ತರುವುದು - ಬೆಸ್ಮಿರಾ ನುವ್ಶಿ, ಮೆಹರ್ನೂಶ್ ಸಮೇಕಿ, ಮತ್ತು ಅಮಿತ್ ಶರ್ಮಾ [![Responsible AI Toolbox: An open-source framework for building responsible AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") -> 🎥 ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ ವೀಡಿಯೋ ವೀಕ್ಷಿಸಲು: Besmira Nushi, Mehrnoosh Sameki, ಮತ್ತು Amit Sharma ಅವರಿಂದ ಜವಾಬ್ದಾರಿಯುತ AI ನಿರ್ಮಿಸಲು RAI Toolbox: ಒಂದು ಓಪನ್-ಸೋರ್ಸ್ ಫ್ರೇಮ್ವರ್ಕ್ +> 🎥 ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ ವಿಡಿಯೋ ನೋಡಲು: ಜವಾಬ್ದಾರಿಯುತ 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 @@ -# ರಿಗ್ರೆಶನ್ ಮಾದರಿಗಳಿಗಾಗಿ ಪೈಥಾನ್ ಮತ್ತು ಸ್ಕಿಕಿಟ್-ಲರ್ನ್‌ನೊಂದಿಗೆ ಪ್ರಾರಂಭಿಸಿ +# ರಿಗ್ರೆಶನ್ ಮಾದರಿಗಳಿಗಾಗಿ ಪೈಥಾನ್ ಮತ್ತು ಸ್ಕಿಕಿಟ್-ಲರ್ನ್ನೊಂದಿಗೆ ಪ್ರಾರಂಭಿಸಿ -![ಸ್ಕೆಚ್‌ನೋಟ್ನಲ್ಲಿ ರಿಗ್ರೆಶನ್‌ಗಳ ಸಾರಾಂಶ](../../../../translated_images/kn/ml-regression.4e4f70e3b3ed446e.webp) +![ಸ್ಕೆಚ್ನೋಟ್‌ನಲ್ಲಿ ರಿಗ್ರೆಶನ್‌ಗಳ ಸಾರಾಂಶ](../../../../translated_images/kn/ml-regression.4e4f70e3b3ed446e.webp) -> ಸ್ಕೆಚ್‌ನೋಟ್ನು [ಟೊಮೊಮಿ ಇಮುರು](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://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ಆರಂಭಿಕರಿಗಾಗಿ ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸಲು ನಿಮ್ಮ ಸಾಧನಗಳನ್ನು ಸಿದ್ಧಪಡಿಸಿ") +[![ಆರಂಭಿಕರಿಗೆ ಎಂಎಲ್ - ಯಂತ್ರ학습 ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸಲು ನಿಮ್ಮ ಸಾಧನಗಳನ್ನು ಸಿದ್ಧಪಡಿಸಿ](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ಆರಂಭಿಕರಿಗೆ ಎಂಎಲ್ - ಯಂತ್ರ학습 ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸಲು ನಿಮ್ಮ ಸಾಧನಗಳನ್ನು ಸಿದ್ಧಪಡಿಸಿ") -> 🎥 ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ, ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್ ಅನ್ನು ಯಂತ್ರ ಅಧ್ಯಯನಕ್ಕೆ ಸಂರಚಿಸುವುದರ ಕುರಿತು ಚಿಕ್ಕ ವೀಡಿಯೋವನ್ನು ನೋಡಿ. +> 🎥 ಮೆಷಿನ್ ಲರ್ನಿಂಗ್‌ಗಾಗಿ ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್ ಅನ್ನು ಹೇಗೆ ಸಂರಚಿಸುವುದೆಂಬುದನ್ನು ತೋರಿಸುವ ಸಂಕ್ಷಿಪ್ತ ವೀಡಿಯೊಗೆ ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ. -1. **ಪೈಥಾನ್ ಅನ್ನು ಸ್ಥಾಪಿಸಿ**. ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್‌ನಲ್ಲಿ [ಪೈಥಾನ್](https://www.python.org/downloads/) ಸ್ಥಾಪಿತವಾಗಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ. ನೀವು ಅನೇಕ ಡೇಟಾ ವಿಜ್ಞಾನ ಮತ್ತು ಯಂತ್ರ ಅಧ್ಯಯನ ಕಾರ್ಯಗಳಿಗೆ ಪೈಥಾನ್ ಅನ್ನು ಬಳಸುತ್ತೀರಿ. ಬಹುತೇಕ ಕಂಪ್ಯೂಟರ್ ವ್ಯವಸ್ಥೆಗಳಲ್ಲಿ ಈಗಾಗಲೇ ಪೈಥಾನ್ ಸ್ಥಾಪನೆ ಇದೆ. ಕೆಲವು ಬಳಕೆದಾರರಿಗೆ ಸ್ಥಾಪನೆಯನ್ನು ಸುಲಭಗೊಳಿಸಲು ಉಪಯುಕ್ತವಾದ [ಪೈಥಾನ್ ಕೋಡಿಂಗ್ ಪ್ಯಾಕ್ಗಳು](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) ಕೂಡ ಲಭ್ಯವಿವೆ. +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) ಸಂಗ್ರಹವನ್ನು ಕಾರ್ಯನಿರ್ವಹಿಸುವ ಮೂಲಕ ಪೈಥಾನ್ ಜೊತೆ ಸುಲಭವಾಗಿ ಪರಿಚಯವಾಗಿರಿ > - > [![Visual Studio Code ನಲ್ಲಿ ಪೈಥಾನ್ ಸ್ಥಾಪನೆ](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Visual Studio Code ನಲ್ಲಿ ಪೈಥಾನ್ ಸ್ಥಾಪನೆ") + > [![Visual Studio Code ನೊಂದಿಗೆ ಪೈಥಾನ್ ಅನ್ನು ಸಿದ್ಧಗೊಳಿಸಿ](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](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://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ಯಂತ್ರ ಅಧ್ಯಯನ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸಲು ಜುಪೈಟರ್ ನೋಟ್ಬುಕ್‌ಗಳನ್ನು ಸಿದ್ಧಪಡಿಸಿ") +[![ಆರಂಭಿಕರಿಗೆ ಎಂಎಲ್ - ರಿಗ್ರೆಶನ್ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸಲು ಜ್ಯೂಪಿಟರ್ ನೋಟ್ಬುಕ್ಸ್ ಸಿದ್ಧಪಡಿಸಿ](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](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 @@ ![ನೋಟ್ಬುಕ್ ತೆರೆಯಲಾದ VS ಕೋಡ್](../../../../translated_images/kn/notebook.4a3ee31f396b8832.webp) -ನೀವು ನಿಮ್ಮ ಕೋಡ್ ಜೊತೆಗೆ ಟಿಪ್ಪಣಿಗಳನ್ನು ಸೇರಿಸಿ ನೋಟ್ಬುಕ್ ಅನ್ನು ಸ್ವಯಂ-ಡಾಕ್ಯುಮೆಂಟ್ ಮಾಡಬಹುದು. +ನೀವು ನಿಮ್ಮ ಕೋಡ್ ಜೊತೆಗೆ ಸ್ವ-ಡಾಕ್ಯುಮೆಂಟೇಶನ್ ಟಿಪ್ಪಣಿಗಳನ್ನು ಒಂದಾಗಿಸಬಹುದು. -✅ ವೆಬ್ ಡೆವಲಪರ್‌ನ ಕೆಲಸದ ಪರಿಸರ ಮತ್ತು ಡೇಟಾ ವಿಜ್ಞಾನಿಯ ಕೆಲಸದ ಪರಿಸರವು ಹೇಗೆ ವಿಭಿನ್ನವಾಗಿವೆ ಎಂದು ಒಂದು ನಿಮಿಷ ಯೋಚಿಸಿ. +✅ ಹುಡುಕಿ ವೆಬ್ ಡೆವಲಪರ್ ಕೆಲಸದ ಪರಿಸರ ಮತ್ತು ಡೇಟಾ ವಿಜ್ಞಾನಿ ಕೆಲಸದ ಪರಿಸರದಲ್ಲಿ ವ್ಯತ್ಯಾಸವೇನು ಎಂಬುದನ್ನು. -## ಸ್ಕಿಕಿಟ್-ಲರ್ನ್‌ನೊಂದಿಗೆ ಪ್ರಾರಂಭಿಸಿ +## ಸ್ಕಿಕಿಟ್-ಲರ್ನ್ ಆಯ್ಕೆ ಮಾಡಿ ಪ್ರಾರಂಭಿಸೋಣ -ಈಗ ಪೈಥಾನ್ ನಿಮ್ಮ ಸ್ಥಳೀಯ ಪರಿಸರದಲ್ಲಿ ಸಿದ್ಧವಾಗಿದೆ ಮತ್ತು ನೀವು ಜುಪೈಟರ್ ನೋಟ್ಬುಕ್‌ಗಳೊಂದಿಗೆ ಆರಾಮವಾಗಿ ಕೆಲಸ ಮಾಡುತ್ತಿದ್ದೀರಿ, ಸ್ಕಿಕಿಟ್-ಲರ್ನ್ (ಅದನ್ನು `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://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "ಪೈಥಾನ್‌ನಲ್ಲಿ ನಿಮ್ಮ ಮೊದಲ ರೇಖೀಯ ರಿಗ್ರೆಶನ್ ಪ್ರಾಜೆಕ್ಟ್") -> 🎥 ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ ಈ ವ್ಯಾಯಾಮವನ್ನು ನಡೆಸುವ ಚಿಕ್ಕ ವೀಡಿಯೋ ನೋಡಿ. +[![ಆರಂಭಿಕರಿಗೆ ಎಂಎಲ್ - ಪೈಥಾನ್‌ನಲ್ಲಿ ನಿಮ್ಮ ಮೊದಲ ರೇಖೀಯ ರಿಗ್ರೆಶನ್ ಪ್ರಾಜೆಕ್ಟ್](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](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() ``` - ![ಡಯಾಬಿಟಿಸ್ ಸುತ್ತಲೂ ಡೇಟಾಪಾಯಿಂಟ್‌ಗಳನ್ನು ತೋರಿಸುವ ಸ್ಕ್ಯಾಟರ್‌ಪ್ಲಾಟ್](../../../../translated_images/kn/scatterplot.ad8b356bcbb33be6.webp) - ✅ ಇಲ್ಲಿ ಏನಾಗುತ್ತಿದೆ ಎಂಬುದನ್ನು ಸ್ವಲ್ಪ ಯೋಚಿಸಿ. ಒಂದು ಸರಳ ರೇಖೆ ಅನೇಕ ಸಣ್ಣ ಡೇಟಾ ಬಿಂದುಗಳ ಮೂಲಕ ಓಡುತ್ತಿದೆ, ಆದರೆ ಅದು ನಿಖರವಾಗಿ ಏನು ಮಾಡುತ್ತಿದೆ? ಈ ರೇಖೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಹೊಸ, ಕಾಣದ ಡೇಟಾ ಬಿಂದು ಪ್ಲಾಟ್‌ನ y ಅಕ್ಷದ ಸಂಬಂಧದಲ್ಲಿ ಎಲ್ಲಿ ಹೊಂದಿಕೊಳ್ಳಬೇಕು ಎಂದು ನೀವು ಹೇಗೆ ಊಹಿಸಬಹುದು ಎಂದು ನೋಡಬಹುದೇ? ಈ ಮಾದರಿಯ ಪ್ರಾಯೋಗಿಕ ಬಳಕೆಯನ್ನು ಪದಗಳಲ್ಲಿ ವಿವರಿಸಲು ಪ್ರಯತ್ನಿಸಿ. + ![ಡಯಾಬಿಟೀಸ್ ಸುತ್ತಲೂ ಡೇಟಾಪಾಯಿಂಟ್ಗಳನ್ನು ತೋರಿಸುವ ಸ್ಪೋಟಚಿತ್ರ](../../../../translated_images/kn/scatterplot.ad8b356bcbb33be6.webp) + + + ✅ ಇಲ್ಲಿ ಏನಾಗುತ್ತಿದೆ ಎಂದು ಸ್ವಲ್ಪ ಆಲೋಚಿಸಿ ನೋಡಿ. ಹಲವಾರು ಸಣ್ಣ ಡೇಟಾ ಬಿಂದುಗಳ ಮೂಲಕ ಒಂದು ಸರಳ ಇಲ್ಲು ಹರಡುತ್ತಿದೆ, ಆದರೆ ಅದು ನಿಖರವಾಗಿ ಏನು ಮಾಡುತ್ತಿದೆ? ನಿಮ್ಮ ಸ್ಟೋರಿಕೆಯಲ್ಲಿ ಹೊಸದಾಗಿ ಕಾಣದ ಡೇಟಾ ಪಾಯಿಂಟ್ ಯಾವ ಸ್ಥಾನದಲ್ಲಿ ಗುರುತಿಸಲು ನೀವು ಈ ರೇಖೆಯನ್ನು ಹೇಗೆ ಬಳಸಬಹುದು ಎಂದು ಕಾಣಬಹುದೇ? ಈ ಮಾದರಿಯ ಪ್ರಾಯೋಗಿಕ ಬಳಕೆಯನ್ನು ಪದಗಳಲ್ಲಿ ವಿವರಿಸಲು ಪ್ರಯತ್ನಿಸಿ. -ಅಭಿನಂದನೆಗಳು, ನೀವು ನಿಮ್ಮ ಮೊದಲ ಲೀನಿಯರ್ ರಿಗ್ರೆಶನ್ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿದ್ದೀರಿ, ಅದರಿಂದ ಊಹೆ ಮಾಡಿದ್ದೀರಿ ಮತ್ತು ಅದನ್ನು ಪ್ಲಾಟ್‌ನಲ್ಲಿ ಪ್ರದರ್ಶಿಸಿದ್ದೀರಿ! +ಅಭಿನಂದನೆಗಳು, ನೀವು ನಿಮ್ಮ ಮೊದಲ ಲೀನಿಯರ್ ರಿಗ್ರೆಶನ್ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿದ್ದೀರಿ, ಅದರೊಂದಿಗೆ ಭವಿಷ್ಯವಾಣಿಯನ್ನು ಮಾಡಿದ್ದೀರಿ ಮತ್ತು ಅದನ್ನು ಪ್ಲಾಟ್‌ನಲ್ಲಿ ಪ್ರದರ್ಶಿಸಿದ್ದೀರಿ! --- ## 🚀ಸವಾಲು -ಈ ಡೇಟಾಸೆಟ್‌ನಿಂದ ಬೇರೆ ಚರವನ್ನು ಪ್ಲಾಟ್ ಮಾಡಿ. ಸೂಚನೆ: ಈ ಸಾಲನ್ನು ಸಂಪಾದಿಸಿ: `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 ಬಳಸಿ ರೆಗ್ರೆಶನ್ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸಿ: ಡೇಟಾ ತಯಾರಿಕೆ ಮತ್ತು ದೃಶ್ಯೀಕರಣ -![ಡೇಟಾ ದೃಶ್ಯೀಕರಣ ಇನ್ಫೋಗ್ರಾಫಿಕ್](../../../../translated_images/kn/data-visualization.54e56dded7c1a804.webp) +![ಡೇಟಾ ದೃಶ್ಯೀಕರಣ ಮಾಹಿತಿ ಚಿತ್ರ](../../../../translated_images/kn/data-visualization.54e56dded7c1a804.webp) -ಇನ್ಫೋಗ್ರಾಫಿಕ್ [ದಾಸನಿ ಮಡಿಪಳ್ಳಿ](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 ನಲ್ಲಿ ತೆರೆಯಬಹುದು. ತ್ವರಿತ ಸಂಕ್ಷೇಪಣೆಯಿಂದ ತಕ್ಷಣವೇ ಖಾಲಿ ಸ್ಥಳಗಳು ಮತ್ತು ಸ್ಟ್ರಿಂಗ್ ಮತ್ತು ಸಂಖ್ಯೆಮೂಲಕ ಡೇಟಾದ ಮಿಶ್ರಣವಿದೆ ಎಂದು ಪ್ರತ್ಯಕ್ಷವಾಗುತ್ತದೆ. 'ಪ್ಯಾಕೇಜ್' ಎಂದು ಹೆಸರಿಸಿರುವ ವಿಚಿತ್ರ ಕಾಲಮ್ ಕೂಡ ಇದೆ, ಇದರಲ್ಲಿ ಡೇಟಾ 'ಸಾಕ್ಸ್', 'ಬಿನ್ಸ್' ಮತ್ತು ಇತರ ಮೌಲ್ಯಗಳ ಮಿಶ್ರಣವಾಗಿದೆ. ವಾಸ್ತವವಾಗಿ, ಡೇಟಾ ಸ್ವಲ್ಪ ಗೊಂದಲವಾಗಿವೆ. -[![ML for beginners - How to Analyze and Clean a Dataset](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML for beginners - How to Analyze and Clean a Dataset") +[![ಯಾಂತ್ರಿಕ ಕಲಿಕೆಯ ಆರಂಭಿಕರಿಗಾಗಿ - ಡೇಟಾಸೆಟ್ ವಿಶ್ಲೇಷಣೆ ಮತ್ತು ಶುದ್ಧೀಕರಣವನ್ನು ಹೇಗೆ ಮಾಡಬೇಕು](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](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ಾಯಿಗಳು ದೊಡ್ಡವಕ್ಕಿಂತ ಹೆಚ್ಚು ಬೆಲೆಯಿದ್ದ್ದುವೇ, ಬಹುಶಃ ಒಂದು ದೊಡ್ಡ ಹೊಲುಗೆ ಕುಂಭಳಕಾಯಿಯ ತುಂಬಾ ಅನ್ವಯಿಸದ ಸ್ಥಾನದಿಂದಾಗಿ ಪ್ರತಿ ಬಷೆಲ್ ಹೆಚ್ಚು ಸಣ್ಣಗಳು ಇರುತ್ತವೆ. ## ದೃಶ್ಯೀಕರಣ ತಂತ್ರಗಳು -ಡೇಟಾ ವಿಜ್ಞಾನಿಯ ಪಾತ್ರದ ಒಂದು ಭಾಗವೆಂದರೆ ಅವರು ಕೆಲಸ ಮಾಡುತ್ತಿರುವ ಡೇಟಾದ ಗುಣಮಟ್ಟ ಮತ್ತು ಸ್ವಭಾವವನ್ನು ಪ್ರದರ್ಶಿಸುವುದು. ಇದಕ್ಕಾಗಿ, ಅವರು ವಿವಿಧ ಅಂಶಗಳನ್ನು ತೋರಿಸುವ ಆಸಕ್ತಿದಾಯಕ ದೃಶ್ಯೀಕರಣಗಳು, ಪ್ಲಾಟ್‌ಗಳು, ಗ್ರಾಫ್‌ಗಳು ಮತ್ತು ಚಾರ್ಟ್‌ಗಳನ್ನು ಸೃಷ್ಟಿಸುತ್ತಾರೆ. ಈ ರೀತಿಯಲ್ಲಿ, ಅವರು ದೃಶ್ಯವಾಗಿ ಸಂಬಂಧಗಳು ಮತ್ತು ಗ್ಯಾಪ್‌ಗಳನ್ನು ತೋರಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ, ಅವುಗಳನ್ನು ಬೇರೆ ರೀತಿಯಲ್ಲಿ ಕಂಡುಹಿಡಿಯುವುದು ಕಷ್ಟ. +ಡೇಟಾ ವಿಜ್ಞಾನಿಯ ಪಾತ್ರದ ಒಂದು ಭಾಗವು ಅವರು ಕೆಲಸ ಮಾಡುವ ಡೇಟಾದ ಗುಣಮಟ್ಟ ಮತ್ತು ಸ್ವಭಾವವನ್ನು ಪ್ರದರ್ಶಿಸುವದು. ಇದಕ್ಕಾಗಿ, ಅವರು ಬಗೆಬಗೆಯ ದೃಶ್ಯೀಕರಣಗಳನ್ನು, ಅಥವಾ ಪ್ಲಾಟ್, ಗ್ರಾಫ್ ಮತ್ತು ಚಾರ್ಟ್‌ಗಳನ್ನು ಸೃಷ್ಟಿಸುತ್ತಾರೆ, ಡೇಟಾದ ವಿವಿಧ ಮೂಲಭೂತ ಅಂಶಗಳನ್ನು ತೋರಿಸುವದು. ಈ ಮೂಲಕ ಅವರು ದೃಶ್ಯಾತ್ಮಕವಾಗಿ ಸಂಬಂಧಗಳು ಮತ್ತು ಲೋಪಗಳನ್ನು ತೋರಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ. -[![ML for beginners - How to Visualize Data with Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML for beginners - How to Visualize Data with Matplotlib") +[![ಯಾಂತ್ರಿಕ ಕಲಿಕೆಯ ಆರಂಭಿಕರಿಗಾಗಿ - Matplotlib ಬಳಸಿ ಡೇಟಾ ದೃಶ್ಯೀಕರಣ](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](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() ``` - ![ಬೆಲೆ ಮತ್ತು ತಿಂಗಳ ಸಂಬಂಧವನ್ನು ತೋರಿಸುವ ಸ್ಕ್ಯಾಟರ್‌ಪ್ಲಾಟ್](../../../../translated_images/kn/scatterplot.b6868f44cbd2051c.webp) + ![ತಿಂಗಳು ಮತ್ತು ಬೆಲೆಯ ಸಂಬಂಧವನ್ನು ತೋರಿಸುವ scatterplot](../../../../translated_images/kn/scatterplot.b6868f44cbd2051c.webp) - ಇದು ಉಪಯುಕ್ತವಾದ ಪ್ಲಾಟ್ ಆಗಿದೆಯೇ? ಇದರಲ್ಲಿ ಏನಾದರೂ ನಿಮಗೆ ಆಶ್ಚರ್ಯಕರವೇ? + ಇದು ಉಪಯುಕ್ತವಾದ ಪ್ಲಾಟ್ ಇದೆಯೆ? ಇದರಿಂದ ಏನಾದರೂ ಆಶ್ಚರ್ಯವಾಯಿತು? - ಇದು ವಿಶೇಷವಾಗಿ ಉಪಯುಕ್ತವಲ್ಲ, ಏಕೆಂದರೆ ಇದು ನಿಮ್ಮ ಡೇಟಾವನ್ನು ನಿಗದಿತ ತಿಂಗಳಲ್ಲಿ ಬಿಂದುಗಳ ವಿಸ್ತಾರವಾಗಿ ಮಾತ್ರ ಪ್ರದರ್ಶಿಸುತ್ತದೆ. + ಇದು ವಿಶೇಷ ಉಪಯುಕ್ತವಲ್ಲ, ಏಕೆಂದರೆ ಇದು ನಿಮ್ಮ ಡೇಟಾವನ್ನು ತಿಂಗಳಿಗೆ ಬಿಂದುಗಳ ರೂಪದಲ್ಲಿ ತೋರಿಸುವಷ್ಟೇ ಮಾಡುತ್ತದೆ. -### ಅದನ್ನು ಉಪಯುಕ್ತವಾಗಿಸೋಣ +### ಉಪಯುಕ್ತವಾಗಿಸಿ -ಉಪಯುಕ್ತ ಡೇಟಾ ಪ್ರದರ್ಶನಕ್ಕಾಗಿ, ನೀವು ಸಾಮಾನ್ಯವಾಗಿ ಡೇಟಾವನ್ನು ಗುಂಪುಮಾಡಬೇಕಾಗುತ್ತದೆ. ತಿಂಗಳುಗಳನ್ನು y ಅಕ್ಷದಲ್ಲಿ ತೋರಿಸುವ ಮತ್ತು ಡೇಟಾ ವಿತರಣೆ ತೋರಿಸುವ ಪ್ಲಾಟ್ ರಚಿಸಲು ಪ್ರಯತ್ನಿಸೋಣ. +ಉಪಯುಕ್ತ ಡೇಟಾವನ್ನು ತೋರಿಸಲು, நீங்கள் ಸಾಮಾನ್ಯವಾಗಿ ಡೇಟಾವನ್ನು ಗುಂಪು ಮಾಡಬೇಕಾಗುತ್ತದೆ. ತಿಂಗಳುಗಳು y ಅಕ್ಷದಲ್ಲಿ ತೋರಿಸುವ ಮತ್ತು ಡೇಟಾ ವಿತರಣೆ ತೋರಿಸುವ ಗುಂಪುಮಾಡಲಾದ ಬಾರ್ ಚಾರ್ಟ್ ಸೃಷ್ಟಿಸಿ ಪ್ರಯತ್ನಿಸೋಣ. -1. ಗುಂಪುಮಾಡಲಾದ ಬಾರ್ ಚಾರ್ಟ್ ರಚಿಸಲು ಒಂದು ಸೆಲ್ ಸೇರಿಸಿ: +1. ಗುಂಪು ಮಾಡಿದ ಬಾರ್ ಚಾರ್ಟ್ ಸೃಷ್ಟಿಸಲು ಸೆಲ್ ಸೇರಿಸಿ: ```python new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') plt.ylabel("Pumpkin Price") ``` - ![ಬೆಲೆ ಮತ್ತು ತಿಂಗಳ ಸಂಬಂಧವನ್ನು ತೋರಿಸುವ ಬಾರ್ ಚಾರ್ಟ್](../../../../translated_images/kn/barchart.a833ea9194346d76.webp) + ![ತಿಂಗಳು ಮತ್ತು ಬೆಲೆಯ ಸಂಬಂಧವನ್ನು ತೋರಿಸುವ ಬಾರ್ಚಾರ್ಟ್](../../../../translated_images/kn/barchart.a833ea9194346d76.webp) + + ಇದು ಹೆಚ್ಚು ಉಪಯುಕ್ತ ಡೇಟಾ ದೃಶ್ಯೀಕರಣವಾಗಿದೆ! ಇದು সেপ্টೆಂಬರ್ ಮತ್ತು ಅಕ್ಟೋಬರ್‌ ತಿಂಗಳಲ್ಲಿ ಕುಮ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 scatterplot ಮಾಸಿಗೆ ಬೆಲೆಯ ಸಂಬಂಧವನ್ನು ತೋರಿಸುತ್ತದೆ](../../../../translated_images/kn/relplot.a03837d8f0329cec.webp) + + ನೀವು ಹೇಗೆ ಕಾಲಮ್ ಹೆಸರುಗಳನ್ನು ಮತ್ತು ಡೇಟಾಫ್ರೇಮ್ ಅನ್ನು ಪಾಸ್ ಮಾಡುತ್ತೀರಿ ಮತ್ತು Seaborn ಅಕ್ಷಲಾಕಾಂಶದ ಲೇಬಲ್ಗಳನ್ನು ಸಂಭಾಳಿಸುತ್ತದೆ ಎಂದು ಗಮನಿಸಿ. + +2. `kind="line"` ಪ್ಯಾರಾಮೀಟರ್ ಪಾಸ್ ಮಾಡುವ ಮೂಲಕ ನೀವು ಲೈನ್ ಪ್ಲಾಟ್‌ಗೆ ಬದಲಿಸಬಹುದು. Seaborn ರೇಖೆಯ ಸುತ್ತಲೂ ವಿಶ್ವಾಸ ಅಂತರವನ್ನು ತೋರಿಸುವ ಛಾಯಿತೆ Band ಅನ್ನು ಕೂಡ ರೇಖಿಸುತ್ತದೆ: + + ```python + sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins) + ``` + + ![Seaborn ಲೈನ್ ಪ್ಲಾಟ್ ಮಾಸಿಗೆ ಬೆಲೆ ಸಂಬಂಧವನ್ನು ತೋರಿಸುತ್ತದೆ](../../../../translated_images/kn/lineplot.f9034ba47b1e30ee.webp) + + ಈ ವಿಶೇಷ ಡೇಟಾ ತುಂಬಾ ಗದ್ದಲವಾಗಿದೆ, ಆದ್ದರಿಂದ ಲೈನ್ ಪ್ಲಾಟ್ ಸ್ಪಷ್ಟವಾದ ಆಯ್ಕೆ ಅಲ್ಲ — ಆದರೆ ಇದರಿಂದ ನೀವು 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") + ``` + + ![ಪ್ರತಿ ತಿಂಗಳ ಬೆಲೆ ಹಂಚಿಕೆಯನ್ನು ತೋರಿಸುವ ಸೀಬೋನ್ ಬಾರ್ ಚಾರ್ಟ್](../../../../translated_images/kn/catplot.e73fc35fdf96242b.webp) + + ಇದರಿಂದ ನೀವು ಮ್ಯಾಟ್ಪ್ಲಾಟ್‌ಲಿಬ್ ನಲ್ಲಿ ನೋಡಿದದ್ದೇ ಖಚಿತವಾಗುತ್ತದೆ — ಬೆಲೆಗಳು ಸೆಪ್ಟೆಂಬರ್ ಮತ್ತು ಅಕ್ಟೋಬರ್ ನಲ್ಲಿ ಶಿಖರ ಪ್ರವೇಶಿಸುತ್ತವೆ — ಆದರೆ ಸೀಬೋನ್ ಪ್ರತಿ ತಿಂಗಳು ಒಳಗಿನ ಬೆಲೆ ಏನೆಷ್ಟಾಗಿ _ಬದಲಾಗುತ್ತದೆ_ ಎಂಬುದನ್ನೂ ದೃಶ್ಯಾವಧಾ ಮಾಡುತ್ತದೆ. + +### ಹೀಟ್ಮ್ಯಾಪ್ ಮೂಲಕ ವಿಷಯಗಳ ಸಂಬಂಧ ತೋರಿಸುವುದು + +ಸ್ಕ್ಯಾಟರ್ ಪ್ಲಾಟ್‌ಗಳು ಎರಡು ಚರಗಳನ್ನು ಹೊಂದುತ್ತವೆ. ನೀವು ಹಲವು ಸಂಖ್ಯಾತ್ಮಕ ಕಾಲಮ್‌ಗಳು ಇದ್ದಾಗ, [ಹೀಟ್ಮ್ಯಾಪ್](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") + ``` + + ![ಸಂಖ್ಯಾತ್ಮಕ ಕಾಲಮ್‌ಗಳ ನಡುವೆ ಸಂಬಂಧವನ್ನು ತೋರಿಸುವ ಸೀಬೋನ್ ಹೀಟ್ಮ್ಯಾಪ್](../../../../translated_images/kn/heatmap.bd98dce43b404c57.webp) + + `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를 활용한 머신 러닝 솔루션 구축 - -![머신 러닝에서 책임 있는 AI의 요약을 담은 스케치노트](../../../../sketchnotes/ml-fairness.png) -> 스케치노트: [Tomomi Imura](https://www.twitter.com/girlie_mac) +# 책임 있는 AI로 머신러닝 솔루션 구축하기 + +![머신러닝에서 책임 있는 AI 요약 스케치노트](../../../../translated_images/ko/ml-fairness.ef296ebec6afc98a.webp) +> 스케치노트 작성자: [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에 대해 자세히 알아보세요. -[![Microsoft의 책임 있는 AI 접근 방식](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoft의 책임 있는 AI 접근 방식") +[![Microsoft의 책임 있는 AI 접근법](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](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) +- 폄하: 부당하게 비판하거나 낙인을 찍는 행위. 예를 들어, 이미지 라벨링 기술이 어두운 피부색 사람들을 고릴라로 잘못 인식한 경우가 있습니다. +- **과대 또는 과소 대표**: 특정 그룹이 특정 직종에서 보이지 않거나 서비스가 이를 계속 촉진할 때 발생하는 피해. +- 고정관념: 특정 집단에 미리 할당된 속성을 연결하는 행위. 예를 들어, 영어와 터키어 간 번역 시스템이 성별 고정관념에 기반한 단어로 인해 부정확할 수 있습니다. -![터키어로 번역](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) -> 터키어로 번역 +![터키어 번역](../../../../translated_images/ko/gender-bias-translate-en-tr.f185fd8822c2d437.webp) +> 터키어 번역 -![영어로 다시 번역](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) -> 영어로 다시 번역 +![영어로 재번역](../../../../translated_images/ko/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) +> 영어로 재번역 -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 시스템이 개인 또는 사회에 미치는 영향에 책임을 져야 합니다. -[![AI 연구자가 얼굴 인식을 통한 대규모 감시에 대해 경고](../../../../1-Introduction/3-fairness/images/accountability.png)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft의 책임 있는 AI 접근 방식") +[![안면 인식 통한 대규모 감시에 대한 AI 선도 연구자의 경고](../../../../translated_images/ko/accountability.41d8c0f4b85b6231.webp)](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가 전하는 원칙의 실천 -[![Responsible AI Toolbox: 책임 있는 AI를 구축하기 위한 오픈소스 프레임워크](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: 책임 있는 AI를 구축하기 위한 오픈소스 프레임워크") +[![Responsible AI Toolbox: An open-source framework for building responsible AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") -> 🎥 위 이미지를 클릭하면 비디오를 볼 수 있습니다: 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 시작하기 -![스케치노트로 요약된 회귀](../../../../sketchnotes/ml-regression.png) +![스케치노트에 정리된 회귀 요약](../../../../translated_images/ko/ml-regression.4e4f70e3b3ed446e.webp) -> 스케치노트: [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://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "초보자를 위한 머신 러닝 - 머신 러닝 모델 구축을 위한 도구 설정") +[![초보자를 위한 ML - 머신러닝 모델 구축 준비를 위한 도구 설정](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](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에 익숙해지세요. > - > [![Visual Studio Code로 Python 설정](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Visual Studio Code로 Python 설정") + > [![VS Code에서 Python 설정하기](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](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` 확장자를 가집니다. -노트북은 개발자가 코드를 작성하고, 코드에 대한 주석을 추가하며, 문서를 작성할 수 있는 대화형 환경을 제공합니다. 이는 실험적이거나 연구 지향적인 프로젝트에 매우 유용합니다. +노트북은 개발자가 코딩과 노트, 문서 작성을 같이 할 수 있는 대화형 환경으로, 실험적이거나 연구 중심 프로젝트에 매우 유용합니다. -[![초보자를 위한 머신 러닝 - 회귀 모델 구축을 위한 Jupyter 노트북 설정](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "초보자를 위한 머신 러닝 - 회귀 모델 구축을 위한 Jupyter 노트북 설정") +[![초보자를 위한 ML - Jupyter 노트북 설정하여 회귀 모델 시작](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](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 ``` -![노트북이 열려 있는 VS Code](../../../../2-Regression/1-Tools/images/notebook.jpg) +![노트북이 열려있는 VS Code](../../../../translated_images/ko/notebook.4a3ee31f396b8832.webp) -코드와 함께 주석을 추가하여 노트북을 스스로 문서화할 수 있습니다. +코드 사이에 주석을 넣어 노트북을 자가 문서화할 수 있습니다. -✅ 웹 개발자의 작업 환경과 데이터 과학자의 작업 환경이 얼마나 다른지 잠시 생각해 보세요. +✅ 웹 개발자 작업 환경과 데이터 과학자의 작업 환경이 얼마나 다른지 잠시 생각해 보세요. ## 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)에서 영감을 받았습니다. -[![초보자를 위한 머신 러닝 - Python에서 첫 번째 선형 회귀 프로젝트](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "초보자를 위한 머신 러닝 - Python에서 첫 번째 선형 회귀 프로젝트") -> 🎥 위 이미지를 클릭하면 이 연습 과정을 다룬 짧은 영상을 볼 수 있습니다. +[![초보자를 위한 ML - Python에서 첫 선형 회귀 프로젝트](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](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() ``` - ![당뇨병 데이터를 나타내는 산점도](../../../../2-Regression/1-Tools/images/scatterplot.png) -✅ 여기서 무슨 일이 일어나고 있는지 잠시 생각해 보세요. 많은 작은 데이터 점들을 관통하는 직선이 있습니다. 하지만 이 직선이 정확히 무엇을 하고 있는 걸까요? 이 직선을 사용하여 새로운, 보지 못한 데이터 포인트가 플롯의 y축과 어떤 관계를 맺어야 하는지 예측할 수 있다는 것을 이해할 수 있나요? 이 모델의 실질적인 사용 방법을 말로 표현해 보세요. + ![당뇨병 주변 데이터 포인트를 나타내는 산점도](../../../../translated_images/ko/scatterplot.ad8b356bcbb33be6.webp) + -축하합니다! 첫 번째 선형 회귀 모델을 구축하고, 이를 사용해 예측을 생성한 뒤 플롯에 표시했습니다! + ✅ 여기서 무슨 일이 일어나고 있는지 조금 생각해 보세요. 여러 개의 작은 데이터 점을 통과하는 직선이 있는데, 정확히 무엇을 하고 있는 걸까요? 이 직선을 사용하여 새로운, 본 적 없는 데이터 포인트가 플롯의 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을 사용한 회귀 모델 구축: 데이터 준비 및 시각화 -![데이터 시각화 인포그래픽](../../../../2-Regression/2-Data/images/data-visualization.png) +![데이터 시각화 인포그래픽](../../../../translated_images/ko/data-visualization.54e56dded7c1a804.webp) -인포그래픽 제작: [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' 등 다양한 값이 혼합되어 있습니다. 실제로 데이터가 꽤 엉망입니다. -[![ML 초보자를 위한 데이터셋 분석 및 정리 방법](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML 초보자를 위한 데이터셋 분석 및 정리 방법") +[![초보자를 위한 ML - 데이터셋 분석 및 정리 방법](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](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파운드에 불과합니다." 매우 복잡합니다! 버쉘-파운드 변환 대신 버쉘 단위로 가격을 책정합시다. 버쉘 단위 호박 연구는 데이터 특성을 이해하는 것이 얼마나 중요한지 보여줍니다! -이제 버셸 측정 단위에 따라 가격을 분석할 수 있습니다. 데이터를 한 번 더 출력하면 표준화된 데이터를 확인할 수 있습니다. +이제 버쉘 단위 가격을 분석할 수 있습니다. 데이터를 한 번 더 출력해 보면 표준화된 모습을 확인할 수 있습니다. -✅ 반 버셸로 판매되는 호박이 매우 비싸다는 것을 눈치챘나요? 왜 그런지 알아낼 수 있나요? 힌트: 작은 호박은 큰 호박보다 훨씬 비쌉니다. 이는 큰 속이 빈 파이 호박 하나가 차지하는 공간 때문에 버셸당 훨씬 더 많은 작은 호박이 포함되기 때문입니다. +✅ 반 버쉘 단위의 호박 가격이 매우 비싼 점 눈치 챘나요? 왜 그런지 이유를 생각해 보세요. 힌트: 작은 호박은 큰 호박보다 버쉘당 훨씬 비싸게 평가되며, 아마도 큰 빈 구멍이 있는 파이 호박으로 인해 버쉘당 개수가 훨씬 많기 때문입니다. ## 시각화 전략 -데이터 과학자의 역할 중 하나는 자신이 작업하는 데이터의 품질과 특성을 보여주는 것입니다. 이를 위해 데이터의 다양한 측면을 보여주는 흥미로운 시각화, 즉 플롯, 그래프, 차트를 생성합니다. 이를 통해 관계와 격차를 시각적으로 보여줄 수 있으며, 이는 그렇지 않으면 발견하기 어려운 경우가 많습니다. +데이터 과학자의 역할 중 하나는 자신이 다루는 데이터의 품질과 특성을 보여주는 것입니다. 이를 위해 다양한 시각화, 플롯, 그래프, 차트 등을 만들어 데이터의 여러 측면을 시각적으로 표현합니다. 이를 통해 데이터 간 관계나 누락된 부분을 쉽게 발견할 수 있습니다. -[![ML 초보자를 위한 Matplotlib을 사용한 데이터 시각화 방법](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML 초보자를 위한 Matplotlib을 사용한 데이터 시각화 방법") +[![초보자를 위한 ML - Matplotlib으로 데이터 시각화하기](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](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() ``` - ![가격과 월 관계를 보여주는 산점도](../../../../2-Regression/2-Data/images/scatterplot.png) + ![가격과 월의 관계를 보여주는 산점도](../../../../translated_images/ko/scatterplot.b6868f44cbd2051c.webp) - 이 플롯이 유용한가요? 놀라운 점이 있나요? + 이 플롯이 유용할까요? 무엇인가 놀랍게 느껴지나요? - 이 플롯은 특정 월에 데이터가 퍼져 있는 점으로만 표시되므로 특별히 유용하지 않습니다. + 별로 유용하지 않습니다. 그저 월별 데이터가 점들로 퍼져 있는 모습만 보여줍니다. ### 유용하게 만들기 -유용한 데이터를 표시하려면 데이터를 그룹화해야 합니다. y축에 월을 표시하고 데이터가 분포를 나타내는 플롯을 만들어 봅시다. +차트가 유용한 데이터를 보여주려면 데이터를 어떤 식으로든 그룹화해야 합니다. 이번에는 y축에 월을 표시하고 데이터 분포를 시각화하는 플롯을 만들어 보겠습니다. -1. 그룹화된 막대 차트를 생성하는 셀을 추가합니다. +1. 그룹화된 막대 그래프를 생성하는 셀을 추가하세요: ```python new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') plt.ylabel("Pumpkin Price") ``` - ![가격과 월 관계를 보여주는 막대 차트](../../../../2-Regression/2-Data/images/barchart.png) + ![가격과 월의 관계를 보여주는 막대 그래프](../../../../translated_images/ko/barchart.a833ea9194346d76.webp) + + 더 유용한 시각화입니다! 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 산점도](../../../../translated_images/ko/relplot.a03837d8f0329cec.webp) + + 열 이름과 데이터프레임을 전달하는 방법을 주목하세요. Seaborn이 자동으로 축 레이블을 처리합니다. + +2. `kind="line"` 옵션을 전달하면 선형 플롯으로 전환할 수 있습니다. Seaborn은 선 주변에 신뢰 구간을 표시하는 음영 밴드도 그립니다: + + ```python + sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins) + ``` + + ![가격과 월의 관계를 보여주는 Seaborn 선형 플롯](../../../../translated_images/ko/lineplot.f9034ba47b1e30ee.webp) + + 이 데이터는 꽤 잡음이 있어서 선형 플롯이 가장 명확하진 않지만, 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") + ``` + + ![월별 가격 분포를 보여주는 Seaborn 막대 그래프](../../../../translated_images/ko/catplot.e73fc35fdf96242b.webp) + + 이는 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") + ``` + + ![숫자형 열 간 상관관계를 보여주는 Seaborn 히트맵](../../../../translated_images/ko/heatmap.bd98dce43b404c57.webp) + + `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-러닝 소개 -![기계 학습에서 강화 학습 요약을 스케치노트로 표현](../../../../sketchnotes/ml-reinforcement.png) -> 스케치노트 제공: [Tomomi Imura](https://www.twitter.com/girlie_mac) +![기계 학습에서의 강화에 대한 요약 스케치노트](../../../../translated_images/ko/ml-reinforcement.94024374d63348db.webp) +> 스케치노트 작성자 [Tomomi Imura](https://www.twitter.com/girlie_mac) -강화 학습은 세 가지 중요한 개념을 포함합니다: 에이전트, 상태, 그리고 각 상태에서의 행동 집합. 특정 상태에서 행동을 실행하면 에이전트는 보상을 받습니다. 컴퓨터 게임 슈퍼 마리오를 다시 상상해 보세요. 당신은 마리오이고, 게임 레벨에서 절벽 가장자리 옆에 서 있습니다. 위에는 동전이 있습니다. 당신이 마리오로서 특정 위치에 있는 게임 레벨에 있다는 것이 바로 당신의 상태입니다. 오른쪽으로 한 걸음 이동하는 행동은 절벽 아래로 떨어지게 되어 낮은 점수를 받게 됩니다. 하지만 점프 버튼을 누르면 점수를 얻고 살아남을 수 있습니다. 이는 긍정적인 결과이며, 높은 점수를 받아야 합니다. +강화 학습은 세 가지 중요한 개념을 포함합니다: 에이전트, 상태들, 그리고 각 상태별 행동 집합입니다. 지정된 상태에서 행동을 실행함으로써 에이전트는 보상을 받습니다. 다시 슈퍼 마리오 게임을 상상해 보십시오. 당신은 마리오이고, 게임 레벨 안에서 절벽 옆에 서 있습니다. 위에는 동전이 있습니다. 당신이 마리오이고, 게임 레벨에서 특정 위치에 있는 것이 ... 바로 당신의 상태입니다. 오른쪽으로 한 걸음 움직이는 것(행동)은 절벽 밖으로 떨어지게 하여 낮은 점수를 받을 것입니다. 하지만 점프 버튼을 누르면 점수를 얻고 살아남게 됩니다. 이것은 긍정적인 결과이며 긍정적인 숫자 점수를 부여해야 합니다. -강화 학습과 시뮬레이터(게임)를 사용하면 살아남고 최대한 많은 점수를 얻는 보상을 극대화하기 위해 게임을 플레이하는 방법을 배울 수 있습니다. +강화 학습과 시뮬레이터(게임)를 사용하여 보상을 극대화하는 방법, 즉 생존하고 많은 점수를 얻는 방법을 배울 수 있습니다. [![강화 학습 소개](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](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 `세로` 크기의 정사각형 보드로 생각해 봅시다: -![피터의 환경](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![피터의 환경](../../../../translated_images/ko/environment.40ba3cb66256c93f.webp) -이 보드의 각 셀은 다음 중 하나일 수 있습니다: +이 보드의 각 칸(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걸음이라는 점을 고려하면 꽤 많습니다. - 또한 랜덤 워크 동안 피터의 움직임을 확인할 수 있습니다: + 무작위 걷기 중 피터의 움직임도 볼 수 있습니다: - ![피터의 랜덤 워크](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) + ![피터의 무작위 걷기](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) ## 보상 함수 -정책을 더 똑똑하게 만들기 위해 어떤 움직임이 다른 움직임보다 "더 나은지"를 이해해야 합니다. 이를 위해 목표를 정의해야 합니다. +정책을 더 똑똑하게 만들기 위해서는 어떤 움직임이 다른 것보다 "더 좋다"는 것을 이해해야 합니다. 이를 위해 목표를 정의해야 합니다. -목표는 **보상 함수**로 정의될 수 있으며, 각 상태에 대해 점수 값을 반환합니다. 숫자가 높을수록 보상이 더 좋습니다(코드 블록 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)`. -![피터의 환경](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![피터의 환경](../../../../translated_images/ko/env_init.04e8f26d2d60089e.webp) -각 셀의 중앙에는 이동 방향을 나타내는 "화살표"가 있습니다. 모든 방향이 동일하기 때문에 점이 표시됩니다. +각 칸 중앙에는 선호하는 이동 방향을 나타내는 "화살표"가 있습니다. 모든 방향이 같으므로 점(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-러닝을 이용하여 피터가 스케이트를 배우고, 특히 균형을 잡는 법을 배우는 과정을 살펴봅니다. + +![대탈출!](../../../../translated_images/ko/escape.18862db9930337e3.webp) + +> 피터와 그의 친구들이 늑대에게서 도망치기 위해 창의력을 발휘하고 있습니다! 이미지 제공: [Jen Looper](https://twitter.com/jenlooper) + +우리는 **카트폴(CartPole)** 문제라 불리는 단순화된 균형 맞추기 문제를 사용할 것입니다. 카트폴 세계에서는 수평 슬라이더가 좌우로 움직일 수 있고, 목표는 슬라이더 위에 수직 막대를 균형 있게 세우는 것입니다. + +a cartpole + +## 필수 사항 + +이번 강의에서는 OpenAI Gym이라는 라이브러리를 사용하여 다양한 환경을 시뮬레이션할 것입니다. Visual Studio Code와 같이 로컬에서 강의 코드를 실행하면, 시뮬레이션이 새 창에서 열릴 것입니다. 온라인 실행 시에는 [여기](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7) 설명된 코드 조정이 필요할 수 있습니다. ## OpenAI Gym -이전 강의에서는 게임의 규칙과 상태가 우리가 직접 정의한 `Board` 클래스에 의해 제공되었습니다. 이번에는 **시뮬레이션 환경**을 사용하여 균형 잡힌 막대의 물리학을 시뮬레이션할 것입니다. 강화 학습 알고리즘을 훈련하기 위한 가장 인기 있는 시뮬레이션 환경 중 하나는 [Gym](https://gym.openai.com/)이며, 이는 [OpenAI](https://openai.com/)에서 관리합니다. 이 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() ``` - 다음과 유사한 이미지를 볼 수 있어야 합니다: + 결과는 다음과 비슷한 이미지를 볼 수 있습니다: - ![균형을 잡지 못하는 카트폴](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) + ![균형이 잡히지 않은 카트폴](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) -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) ``` -![원시 진행 상황](../../../../8-Reinforcement/2-Gym/images/train_progress_raw.png) +![원시 진행 상황](../../../../translated_images/ko/train_progress_raw.2adfdf2daea09c59.webp) -이 그래프에서는 아무것도 알 수 없습니다. 이는 확률적 훈련 과정의 특성상 훈련 세션 길이가 크게 변하기 때문입니다. 이 그래프를 더 이해하기 쉽게 만들기 위해, 예를 들어 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)) ``` -![훈련 진행 상황](../../../../8-Reinforcement/2-Gym/images/train_progress_runav.png) +![훈련 진행 상황](../../../../translated_images/ko/train_progress_runav.c71694a8fa9ab359.webp) + +## 하이퍼파라미터 조절 + +학습을 더 안정적으로 만들려면 훈련 중에 하이퍼파라미터를 조절하는 것이 좋습니다. 특히: + +- **학습률(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() ``` -다음과 같은 결과를 볼 수 있을 것입니다: +다음과 같은 것을 볼 수 있을 것입니다: ![균형 잡힌 카트폴](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) --- -## 🚀도전 +## 🚀도전 과제 -> **과제 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 - -![Atsakingo dirbtinio intelekto mašininio mokymosi santrauka sketchnote](../../../../sketchnotes/ml-fairness.png) -> 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 + +![Atsakingo dirbtinio intelekto mašininiame mokyme santrauka sketchnote formatu](../../../../translated_images/lt/ml-fairness.ef296ebec6afc98a.webp) +> 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) -[![Microsoft požiūris į atsakingą dirbtinį intelektą](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoft požiūris į atsakingą dirbtinį intelektą") +[![Microsoft požiūris į atsakingą DI](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](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ą](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) +![vertimas į turkų kalbą](../../../../translated_images/lt/gender-bias-translate-en-tr.f185fd8822c2d437.webp) > vertimas į turkų kalbą -![vertimas atgal į anglų kalbą](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) +![vertimas atgal į anglų kalbą](../../../../translated_images/lt/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) > 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ę. +[![Pagrindinis DI tyrėjas perspėja apie masinį stebėjimą per veidų atpažinimą](../../../../translated_images/lt/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft požiūris į atsakingą DI") -[![Pirmaujantis dirbtinio intelekto tyrėjas įspėja apie masinę stebėseną per veido atpažinimą](../../../../1-Introduction/3-fairness/images/accountability.png)](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 -[![Atsakingo DI įrankių rinkinys: atvirojo kodo sistema atsakingam DI kurti](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: Atvirojo kodo sistema atsakingam DI kurti") +[![Atsakingo DI įrankių rinkinys: Atvirojo kodo sistema atsakingam DI kūrimui](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") -> 🎥 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 -![Regresijų santrauka sketchnote](../../../../sketchnotes/ml-regression.png) +![Regresijų santrauka sketchnote formatu](../../../../translated_images/lt/ml-regression.4e4f70e3b3ed446e.webp) -> 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 -[![ML pradedantiesiems - Paruoškite įrankius mašininio mokymosi modelių kūrimui](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML pradedantiesiems - Paruoškite įrankius mašininio mokymosi modelių kūrimui") +[![Pradedantiesiems ML - Paruoškite savo įrankius mašininio mokymosi modelių kūrimui](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](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į. > - > [![Nustatykite Python su Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Nustatykite Python su Visual Studio Code") + > [![Python konfigūravimas Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](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. -[![ML pradedantiesiems - Nustatykite Jupyter užrašines regresijos modelių kūrimui](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML pradedantiesiems - Nustatykite Jupyter užrašines regresijos modelių kūrimui") +[![Pradedantiesiems ML - Paruoškite Jupyter Notebooks pradėti kurti regresijos modelius](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](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 ``` -![VS Code su atidaryta užrašine](../../../../2-Regression/1-Tools/images/notebook.jpg) +![VS Code atidarius užrašų knygutę](../../../../translated_images/lt/notebook.4a3ee31f396b8832.webp) -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. -[![ML pradedantiesiems - Jūsų pirmasis linijinės regresijos projektas Python kalba](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](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ą. +[![Pradedantiesiems ML - Jūsų pirmasis linijinės regresijos projektas Python kalba](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](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() + ``` + + ![taškų diagrama apie diabetą](../../../../translated_images/lt/scatterplot.ad8b356bcbb33be6.webp) -✅ 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 -![Duomenų vizualizacijos infografika](../../../../2-Regression/2-Data/images/data-visualization.png) +![Duomenų vizualizacijos infografika](../../../../translated_images/lt/data-visualization.54e56dded7c1a804.webp) -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. -[![ML pradedantiesiems - Kaip analizuoti ir valyti duomenų rinkinį](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML pradedantiesiems - Kaip analizuoti ir valyti duomenų rinkinį") +[![ML pradedantiesiems – kaip analizuoti ir valyti duomenų rinkinį](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](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. -[![ML pradedantiesiems - Kaip vizualizuoti duomenis naudojant Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML pradedantiesiems - Kaip vizualizuoti duomenis naudojant Matplotlib") +[![ML pradedantiesiems – kaip vizualizuoti duomenis su Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](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() ``` - ![Sklaidos diagrama, rodanti kainos ir mėnesio ryšį](../../../../2-Regression/2-Data/images/scatterplot.png) + ![Taškinė diagrama, rodanti kainos ir mėnesio ryšį](../../../../translated_images/lt/scatterplot.b6868f44cbd2051c.webp) - 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") ``` - ![Stulpelinė diagrama, rodanti kainos ir mėnesio ryšį](../../../../2-Regression/2-Data/images/barchart.png) + ![Stulpelinė diagrama, rodanti kainos ir mėnesio ryšį](../../../../translated_images/lt/barchart.a833ea9194346d76.webp) + + 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) + ``` + + ![Seaborn taškinė diagrama, rodanti kainos ir mėnesio ryšį](../../../../translated_images/lt/relplot.a03837d8f0329cec.webp) + + 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) + ``` + + ![Seaborn linijinė diagrama, rodanti kainos ir mėnesio ryšį](../../../../translated_images/lt/lineplot.f9034ba47b1e30ee.webp) + + Š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") + ``` + + ![Seaborn juostinė diagrama, rodanti kainų pasiskirstymą pagal mėnesius](../../../../translated_images/lt/catplot.e73fc35fdf96242b.webp) + + 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") + ``` + + ![Seaborn karštųjų taškų žemėlapis, rodantis koreliacijas tarp skaitinių stulpelių](../../../../translated_images/lt/heatmap.bd98dce43b404c57.webp) + + 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 -![Stiprinamojo mokymosi santrauka sketchnote](../../../../sketchnotes/ml-reinforcement.png) -> Sketchnote sukūrė [Tomomi Imura](https://www.twitter.com/girlie_mac) +![Stiprinamojo mokymosi apžvalga mašininiame mokyme iliustruota sketchnote](../../../../translated_images/lt/ml-reinforcement.94024374d63348db.webp) +> 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ų. -[![Įvadas į stiprinamąjį mokymą](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) +[![Įvadas į stiprinamąjį mokymąsi](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](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: -![Petro aplinka](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![Petro aplinka](../../../../translated_images/lt/environment.40ba3cb66256c93f.webp) -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: - ![Petro atsitiktinis vaikščiojimas](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) + ![Petro atsitiktinis ėjimas](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) -## 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)`. -![Petro aplinka](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![Petro aplinka](../../../../translated_images/lt/env_init.04e8f26d2d60089e.webp) -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) -> ![Gif apie atsakingo AI įrankius](../../../../9-Real-World/2-Debugging-ML-Models/images/rai-overview.gif) +> ![Gif apie Atsakingo AI įrankius](../../../../9-Real-World/2-Debugging-ML-Models/images/rai-overview.gif) ## 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ė. -![Analizuokite ir derinkite modelio klaidas](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-error-distribution.png) +![Analizuokite ir derinkite modelio klaidas](../../../../translated_images/lt/ea-error-distribution.117452e1177c1dd8.webp) -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. -![Klaidų analizė](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-error-cohort.png) +![Klaidų analizė](../../../../translated_images/lt/ea-error-cohort.6886209ea5d438c4.webp) -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. -![Klaidų analizės šilumos žemėlapis](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-heatmap.png) +![Klaidų analizės karštinių žemėlapis](../../../../translated_images/lt/ea-heatmap.8d27185e28cee383.webp) -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ų. -![Duomenų grupės – modelio apžvalga RAI prietaisų skydelyje](../../../../9-Real-World/2-Debugging-ML-Models/images/model-overview-dataset-cohorts.png) +![Duomenų kohortos - modelio apžvalga RAI skydelyje](../../../../translated_images/lt/model-overview-dataset-cohorts.dfa463fb527a35a0.webp) -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. -![Savybių grupės – modelio apžvalga RAI prietaisų skydelyje](../../../../9-Real-World/2-Debugging-ML-Models/images/model-overview-feature-cohorts.png) +![Požymių kohortos - modelio apžvalga RAI skydelyje](../../../../translated_images/lt/model-overview-feature-cohorts.c5104d575ffd0c80.webp) -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. +![Duomenų analizės komponentas Atsakingo AI skydelyje](../../../../translated_images/lt/dataanalysis-cover.8d6d0683a70a5c1e.webp) -![Duomenų analizės komponentas RAI prietaisų skydelyje](../../../../9-Real-World/2-Debugging-ML-Models/images/dataanalysis-cover.png) 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 +![Požymių svarbos komponentas Atsakingo AI skydelyje](../../../../translated_images/lt/9-feature-importance.cd3193b4bba3fd4b.webp) -[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. +![Požymių svarba](../../../../translated_images/lt/9-features-influence.3ead3d3f68a84029.webp) ---- -## 🚀 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: -[![Atsakingo AI prietaisų skydelis: Vieno langelio principas RAI praktiniam įgyvendinimui](https://img.youtube.com/vi/f1oaDNl3djg/0.jpg)](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 +[![Atsakingo DI informacijos suvestinė: Viena vieta, skirta atsakingo DI pritaikymui praktikoje](https://img.youtube.com/vi/f1oaDNl3djg/0.jpg)](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 ഉപയോഗിച്ച് മെഷീൻ ലേണിംഗ് പരിഹാരങ്ങൾ നിർമ്മിക്കൽ -![Summary of responsible AI in Machine Learning in a sketchnote](../../../../translated_images/ml/ml-fairness.ef296ebec6afc98a.webp) -> സ്കെച്ച്നോട്ട്: [Tomomi Imura](https://www.twitter.com/girlie_mac) +![മെഷീൻ ലേണിങിൽ ഉത്തരവാദിത്വമുള്ള AI സംഗ്രഹം ഒരു സ്കെചനോട്ടിൽ](../../../../translated_images/ml/ml-fairness.ef296ebec6afc98a.webp) +> സ്കെചനോട്ട് [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) പിന്തുടരുക [![Microsoft's Approach to Responsible AI](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoft's Approach to Responsible AI") -> 🎥 മുകളിൽ കാണുന്ന ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക: Microsoft's Approach to Responsible AI +> 🎥 മൈക്രോസോഫ്റ്റിന്റെ ഉത്തരവാദിത്വമുള്ള AI സമീപനത്തെക്കുറിച്ചുള്ള വീഡിയോയ്ക്ക് മേൽ ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക -## നീതി +## ഫെയർനസ്സ് -AI സിസ്റ്റങ്ങൾ എല്ലാവരോടും നീതിപൂർവ്വം പെരുമാറണം, സമാനമായ ജനസംഖ്യാ വിഭാഗങ്ങളെ വ്യത്യസ്തമായി ബാധിക്കരുത്. ഉദാഹരണത്തിന്, മെഡിക്കൽ ചികിത്സ, വായ്പാ അപേക്ഷകൾ, തൊഴിൽ സംബന്ധിച്ച നിർദ്ദേശങ്ങൾ നൽകുമ്പോൾ, സമാന ലക്ഷണങ്ങൾ, സാമ്പത്തിക സാഹചര്യങ്ങൾ, പ്രൊഫഷണൽ യോഗ്യതകൾ ഉള്ള എല്ലാവർക്കും ഒരേ നിർദ്ദേശങ്ങൾ നൽകണം. ഓരോ മനുഷ്യനും അവന്റെ തീരുമാനങ്ങളിലും പ്രവർത്തനങ്ങളിലും സ്വാധീനം ചെലുത്തുന്ന പാരമ്പര്യ പൂർവ്വഗതമായ മുൻഗണനകൾ (ബയാസുകൾ) ഉണ്ട്. ഈ ബയാസുകൾ AI സിസ്റ്റങ്ങൾ പരിശീലിപ്പിക്കാൻ ഉപയോഗിക്കുന്ന ഡാറ്റയിൽ പ്രത്യക്ഷപ്പെടാം. ചിലപ്പോൾ ഇത് അനായാസം സംഭവിക്കാം. ഡാറ്റയിൽ ബയാസ് ചേർക്കുമ്പോൾ അത് മനസ്സിലാക്കുക പ്രയാസമാണ്. +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) +- **അനാദരവു**. ഒരാളെ അല്ലെങ്കിൽ ഒരുഅടയാളമിടൽ തെറ്റായി കുറ്റം ചുമത്തൽ. ഉദാഹരണം, കറുത്ത ത്വക്കുള്ള ആളുകളുടെ ചിത്രങ്ങളെ ഗോരില്ല ആയി തെറ്റായി അടയാളപ്പെടുത്തുന്ന ചിത്രലേബലിംഗ് സാങ്കേതികവിദ്യ. +- **അতিরക്തിയായ അല്ലെങ്കിൽ കുറവുള്ള പ്രതിനിധാനം**. ഒരുസമൂഹം ഒരു തൊഴിൽ മേഖലയിൽ കാണപ്പെടുന്നില്ലെന്നും ആ സേവനം ക്കുറിച്ചുള്ള മേഖല അതിനെ പ്രോത്സാഹിപ്പിക്കുന്നത് തന്നെയാണ് ഹാനി ഉണ്ടാക്കുന്നത്. +- **സ്ടീരിയോടൈപ്പിംഗ്**. ഒരു ഗിവൻ ഗ്രൂപ്പിനെ മുൻകൂട്ടി നിശ്ചയിച്ച ഗുണലക്ഷണങ്ങളുമായി ബന്ധിപ്പിക്കുക. ഉദാഹരണത്തിന്, ഇംഗ്ലീഷിൽ നിന്ന് തുര്‍ക്കിഷിലേക്ക് ഭാഷാ വിവർത്തന സിസ്റ്റം ലൈംഗികതയെക്കുറിച്ചുള്ള മുൻകൂട്ടി നിശ്ചയിച്ച അനുബന്ധങ്ങളെ മൂലം പിഴവുകൾ ഉണ്ടാകാം. -![translation to Turkish](../../../../translated_images/ml/gender-bias-translate-en-tr.f185fd8822c2d437.webp) -> ടർക്കിഷിലേക്ക് വിവർത്തനം +![തുര്‍ക്കിഷിലേക്ക് വിവർത്തനം](../../../../translated_images/ml/gender-bias-translate-en-tr.f185fd8822c2d437.webp) +> തുര്‍ക്കിഷിലേക്ക് വിവർത്തനം -![translation back to English](../../../../translated_images/ml/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) -> ഇംഗ്ലീഷിലേക്ക് തിരിച്ചുവിവർത്തനം +![അംഗലേഷിലേക്ക് തിരിച്ചു വിവർത്തനം](../../../../translated_images/ml/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) +> അঙ্গലേഷിലേക്ക് തിരിച്ചുവെ്യൂ -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 സിസ്റ്റം വ്യക്തികളെയും സമൂഹത്തെയും എങ്ങനെ ബാധിക്കുന്നു എന്നതിന് ഉത്തരവാദിത്വം വഹിക്കണം. +[![മുഖം തിരിച്ചറിയൽ മുഖേന അസംഖ്യ നിരീക്ഷണത്തെ കുറിച്ച് മുന്നറിയിപ്പു നൽകുന്ന മുൻനിര AI ഗവേഷകൻ](../../../../translated_images/ml/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft's Approach to Responsible AI") -[![Leading AI Researcher Warns of Mass Surveillance Through Facial Recognition](../../../../translated_images/ml/accountability.41d8c0f4b85b6231.webp)](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 എന്നിവരുടെ നയം പ്രായോഗികമാക്കുക [![Responsible AI Toolbox: An open-source framework for building responsible AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") -> 🎥 വീഡിയോക്കായി മുകളിൽ ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക: Besmira Nushi, Mehrnoosh Sameki, Amit Sharma എന്നിവരാൽ RAI Toolbox: An open-source framework for building responsible AI +> 🎥 വിഡിയോക്കായി മുകളിലെ ചിത്രം ക്ലിക്ക് ചെയ്യുക: 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 ഉപയോഗിച്ച് തുടങ്ങാം -![Summary of regressions in a sketchnote](../../../../translated_images/ml/ml-regression.4e4f70e3b3ed446e.webp) +![സ്കെച്ചോടിൽ റിഗ്രഷനുകളുടെ സംഗ്രഹം](../../../../translated_images/ml/ml-regression.4e4f70e3b3ed446e.webp) -> 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 ഉപയോഗം, ഇൻസ്റ്റാളേഷൻ ഉൾപ്പെടെ. +- കുറച്ച് പ്രായോഗിക അഭ്യാസത്തോടെ ലൈനിയർ റിഗ്രഷൻ പരിശോധിക്കുക. ## ഇൻസ്റ്റാളേഷനുകളും ക്രമീകരണങ്ങളും [![ML for beginners - Setup your tools ready to build Machine Learning models](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML for beginners -Setup your tools ready to build Machine Learning models") -> 🎥 ML ക്രമീകരണത്തിനായി നിങ്ങളുടെ കമ്പ്യൂട്ടർ ക്രമീകരിക്കുന്നതിനുള്ള ഒരു ചെറിയ വീഡിയോക്കായി മുകളിൽ ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക. +> 🎥 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) ശേഖരം ഉപയോഗിക്കുക > - > [![Setup Python with Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Setup Python with Visual Studio Code") + > [![Visual Studio Code-ൽ Python ക്രമീകരിക്കുക](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](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` എന്ന സഫ്ഫിക്സ് അല്ലെങ്കിൽ എക്സ്റ്റൻഷൻ വഴി തിരിച്ചറിയാം. -നോട്ട്‌ബുക്കുകൾ ഒരു ഇന്ററാക്ടീവ് പരിസ്ഥിതിയാണ്, ഡെവലപ്പർക്ക് കോഡ് ചെയ്യാനും കുറിപ്പുകൾ ചേർക്കാനും, കോഡിന്റെ ചുറ്റുപാടിൽ ഡോക്യുമെന്റേഷൻ എഴുതാനും അനുവദിക്കുന്നു, ഇത് പരീക്ഷണാത്മക അല്ലെങ്കിൽ ഗവേഷണ-കേന്ദ്രിത പദ്ധതികൾക്ക് വളരെ സഹായകരമാണ്. +നോട്‌ബുക്കുകൾ ഒരു ഇന്ററാക്ടീവ് പരിസ്ഥിതിയാണ്, കോഡ് എഴുതുന്നതിനോടൊപ്പം കുറിപ്പുകൾ ചേർക്കാനും ഡോക്യുമെന്റേഷൻ എഴുതാനുമുള്ള സൗകര്യമുള്ളത്, ഇത് പരീക്ഷണാത്മകമായോ ഗവേഷണ-ആധാരിതമായ പ്രോജക്റ്റുകൾക്കായി ഉപകാരപ്രദമാണ്. -[![ML for beginners - Set up Jupyter Notebooks to start building regression models](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML for beginners - Set up Jupyter Notebooks to start building regression models") +[![ML for beginners - Jupyter Notebooks ക്രമീകരിച്ച് റിഗ്രഷൻ മോഡലുകൾ സൃഷ്ടിക്കാൻ തുടങ്ങുക](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](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 ``` -![VS Code with a notebook open](../../../../translated_images/ml/notebook.4a3ee31f396b8832.webp) +![VS Code-യിലുള്ള ഒരു നോട്ട്‌ബുക്ക് തുറന്ന ചിത്രം](../../../../translated_images/ml/notebook.4a3ee31f396b8832.webp) -നിങ്ങളുടെ കോഡിനൊപ്പം കുറിപ്പുകൾ ചേർത്ത് നോട്ട്‌ബുക്ക് സ്വയം ഡോക്യുമെന്റ് ചെയ്യാം. +നിങ്ങൾക്ക് കോഡുമായി ചേർന്ന് അഭിപ്രായങ്ങളും, സ്വയം-ഡോക്യുമെന്റേഷൻ ചെയ്യുന്നതിനുള്ള കുറിപ്പുകളും ചേർക്കാം. -✅ വെബ് ഡെവലപ്പറുടെ പ്രവർത്തന പരിസ്ഥിതിയും ഡാറ്റാ സയന്റിസ്റ്റിന്റെ പ്രവർത്തന പരിസ്ഥിതിയും എത്ര വ്യത്യസ്തമാണെന്ന് ഒരു നിമിഷം ചിന്തിക്കുക. +✅ വെബ് ഡവലപ്പറുടെ പ്രവർത്തന പരിസ്ഥിതിയും ഡാറ്റാ സയന്റിസ്റ്റിന്റെ പരിസ്ഥിതിയും എത്ര വ്യത്യസ്തമാണെന്ന് കുറച്ച് ആലോചിക്കുക. -## 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) നിന്നാണ് പ്രചോദനം ലഭിച്ചത്. -[![ML for beginners - Your First Linear Regression Project in Python](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "ML for beginners - Your First Linear Regression Project in Python") +[![ML for beginners - Python-ൽ നിങ്ങളുടെ ആദ്യ ലൈനിയർ റിഗ്രഷൻ പ്രോജക്റ്റ്](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](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() ``` - ![a scatterplot showing datapoints around diabetes](../../../../translated_images/ml/scatterplot.ad8b356bcbb33be6.webp) - ✅ ഇവിടെ എന്ത് നടക്കുകയാണ് എന്ന് കുറച്ച് ചിന്തിക്കുക. ഒരു നേരിയ രേഖ നിരവധി ചെറിയ ഡാറ്റാ പോയിന്റുകളിലൂടെ കടന്നുപോകുന്നു, പക്ഷേ അത് ശരിക്കും എന്ത് ചെയ്യുകയാണ്? ഈ രേഖ ഉപയോഗിച്ച് ഒരു പുതിയ, കാണാത്ത ഡാറ്റാ പോയിന്റ് പ്ലോട്ടിന്റെ y അക്ഷത്തോട് എങ്ങനെ പൊരുത്തപ്പെടണം എന്ന് പ്രവചിക്കാൻ കഴിയുമെന്ന് നിങ്ങൾക്ക് കാണാമോ? ഈ മോഡലിന്റെ പ്രായോഗിക ഉപയോഗം വാക്കുകളിൽ വെക്കാൻ ശ്രമിക്കുക. + ![ഡയബിറ്റീസിനെ ചുറ്റി ഡാറ്റാ പോയിന്റുകൾ കാണിക്കുന്ന സ്കാറ്റർപ്ലോട്ട്](../../../../translated_images/ml/scatterplot.ad8b356bcbb33be6.webp) -അഭിനന്ദനങ്ങൾ, നിങ്ങൾ നിങ്ങളുടെ ആദ്യ ലീനിയർ റെഗ്രഷൻ മോഡൽ നിർമ്മിച്ചു, അതുമായി ഒരു പ്രവചനം സൃഷ്ടിച്ചു, അത് ഒരു പ്ലോട്ടിൽ പ്രദർശിപ്പിച്ചു! + + ✅ ഇവിടെ നടക്കുന്നത് എന്താണെന്ന് അല്പം ചിന്തിക്കുക. ഒരു നേരിയ রেখ ചെറുചെറിയ ഡാറ്റ പോയിന്റുകളുടെ ഒരുപാട് ദൃശ്യങ്ങളിലൂടെ കടന്നുപോകുന്നു, പക്ഷേ ഇത് ഏതാണ്ട് എന്ത് ചെയ്യുന്നു? ഈ രേഖ ഉപയോഗിച്ച് ഒരു പുതിയ, കാണാത്ത ഡാറ്റ പോയിന്റ് പ്ലോട്ടിന്റെ 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 ഉപയോഗിച്ച് ഒരു റെഗ്രഷൻ മോഡൽ നിർമ്മിക്കുക: ഡേറ്റா തയ്യാറാക്കുക, ദൃശ്യീകരിക്കുക -![ഡാറ്റ ദൃശ്യവൽക്കരണ ഇൻഫോഗ്രാഫിക്](../../../../translated_images/ml/data-visualization.54e56dded7c1a804.webp) +![ഡേറ്റാ ദൃശ്യീകരണ ഇൻഫോഗ്രാഫിക്](../../../../translated_images/ml/data-visualization.54e56dded7c1a804.webp) -ഇൻഫോഗ്രാഫിക് [ദസാനി മടിപള്ളി](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' തുടങ്ങിയ പല മൂല്യങ്ങളും ചേർന്നിരിക്കുന്നു. ഡേറ്റ യഥാർത്ഥത്തിൽ അല്പം സന്ധ്യത്രമാണ്. [![ML for beginners - How to Analyze and Clean a Dataset](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML for beginners - How to Analyze and Clean a Dataset") -> 🎥 ഈ പാഠത്തിനായി ഡാറ്റ തയ്യാറാക്കുന്നതിനെക്കുറിച്ച് ഒരു ചെറിയ വീഡിയോ കാണാൻ മുകളിൽ ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക. +> 🎥 ഈ പാഠത്തിനായി ഡേറ്റ തയ്യാറാക്കുന്നതിലെ ചുരുക്കം വീഡിയോയ്ക്കായി മുകളിലെ ചിത്രം ക്ലിക്ക് ചെയ്യുക. -യഥാർത്ഥത്തിൽ, ഒരു ML മോഡൽ സൃഷ്ടിക്കാൻ പൂർണ്ണമായും ഉപയോഗിക്കാൻ തയ്യാറായ ഒരു ഡാറ്റാസെറ്റ് ലഭിക്കുന്നത് സാധാരണമല്ല. ഈ പാഠത്തിൽ, നിങ്ങൾ സ്റ്റാൻഡേർഡ് Python ലൈബ്രറികൾ ഉപയോഗിച്ച് ഒരു റോ ഡാറ്റാസെറ്റ് എങ്ങനെ തയ്യാറാക്കാമെന്ന് പഠിക്കും. കൂടാതെ, ഡാറ്റ ദൃശ്യവൽക്കരിക്കാൻ വിവിധ സാങ്കേതിക വിദ്യകളും പഠിക്കും. +യഥാർഥത്തിൽ, പരിപൂർണമായും ഉപയോഗിക്കാൻ സജ്ജമായ ഡേറ്റാസെറ്റ് ലഭിക്കുന്നത് സാധാരണയല്ല. ഈ പാഠത്തിൽ, സ്റ്റാൻഡേർ 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 പൈ പംപ്കിനിൽ വീതം ഉപയോഗിക്കാതിരിക്കുന്ന അവിടം കാരണം അഞ്ചിന്. -## ദൃശ്യവൽക്കരണ തന്ത്രങ്ങൾ +## ദൃശ്യീകരണ തന്ത്രങ്ങൾ -ഡാറ്റ സയന്റിസ്റ്റിന്റെ ഒരു ഭാഗം, അവർ പ്രവർത്തിക്കുന്ന ഡാറ്റയുടെ ഗുണമേന്മയും സ്വഭാവവും പ്രദർശിപ്പിക്കുകയാണ്. ഇതിന്, അവർ പലപ്പോഴും രസകരമായ ദൃശ്യവൽക്കരണങ്ങൾ, പ്ലോട്ടുകൾ, ഗ്രാഫുകൾ, ചാർട്ടുകൾ സൃഷ്ടിക്കുന്നു, ഡാറ്റയുടെ വ്യത്യസ്ത വശങ്ങൾ കാണിക്കുന്നു. ഇതിലൂടെ, അവർ ദൃശ്യമായി ബന്ധങ്ങളും ഇടവേളകളും കാണിക്കാൻ കഴിയും, സാധാരണയായി കണ്ടെത്താൻ ബുദ്ധിമുട്ടുള്ളവ. +ഡേറ്റ സയന്റിസ്റ്റിന്റെ പങ്കിൽ പ്രധാനമാണ് അവർ പ്രവർത്തിക്കുന്ന ഡേറ്റയുടെ ഗുണമേന്മയും സ്വഭാവവും തെളിയിക്കുകയാണ്. ഇതിന് അവർ സാധാരണയായി രസകരമായ ദൃശ്യങ്ങൾ, പ്ലോട്ടുകൾ, ഗ്രാഫുകൾ, ചാർട്ടുകൾ സൃഷ്ടിക്കുന്നു, ഡേറ്റയുടെ വ്യത്യസ്ത അംശങ്ങൾ കാണിക്കുന്നതോടെ. ഇതുവഴി, അപൂർവ്വമായി കണ്ടെത്താൻ പ്രയാസമായ ബന്ധങ്ങളും ദോഷങ്ങളും ദൃശ്യമായി കാണാമാകും. [![ML for beginners - How to Visualize Data with Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML for beginners - How to Visualize Data with Matplotlib") -> 🎥 ഈ പാഠത്തിനായി ഡാറ്റ ദൃശ്യവൽക്കരിക്കുന്നതിനെക്കുറിച്ച് ഒരു ചെറിയ വീഡിയോ കാണാൻ മുകളിൽ ചിത്രത്തിൽ ക്ലിക്ക് ചെയ്യുക. +> 🎥 ഈ പാഠത്തിനായി ഡേറ്റ ദൃശ്യീകരണത്തിന് ദൃശ്യമായി സ്വയം പഠിക്കാൻ മുകളിലെ ചിത്രം ക്ലിക്ക് ചെയ്യുക. -ദൃശ്യവൽക്കരണങ്ങൾ ഡാറ്റയ്ക്ക് ഏറ്റവും അനുയോജ്യമായ മെഷീൻ ലേണിംഗ് സാങ്കേതിക വിദ്യ നിർണ്ണയിക്കാനും സഹായിക്കുന്നു. ഒരു സ്കാറ്റർപ്ലോട്ട് ഒരു രേഖ പിന്തുടരുന്ന പോലെ തോന്നിയാൽ, ഡാറ്റ ലീനിയർ റെഗ്രഷൻ അഭ്യാസത്തിന് നല്ല സ്ഥാനാർത്ഥിയാണ്. +ദൃശ്യീകരണങ്ങൾ ഡേറ്റയ്ക്ക് ഏറ്റവും അനുയോജ്യമായ മെഷീൻ ലേണിംഗ് സാങ്കേതിക വിദ്യ കണ്ടുപിടിക്കാനും സഹായിക്കുന്നു. ഒരു സ്‌കാറ്റർപ്ലോട്ട് ഒരു രേഖ അനുസരിക്കുന്നതായി തോന്നുന്നുവെങ്കിൽ, അത് ഒരു ലിനിയർ റെഗ്രഷൻ അവസാനിച്ചാൽ നല്ല മതിയായ സാധ്യതയ 있다는 സൂചനയാണ്. -Jupyter നോട്ട്‌ബുക്കുകളിൽ നല്ല പ്രവർത്തനം കാണിക്കുന്ന ഒരു ഡാറ്റ ദൃശ്യവൽക്കരണ ലൈബ്രറി [Matplotlib](https://matplotlib.org/) ആണ് (മുൻപത്തെ പാഠത്തിലും നിങ്ങൾ കണ്ടതാണ്). +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() ``` - ![വില-മാസ ബന്ധം കാണിക്കുന്ന സ്കാറ്റർപ്ലോട്ട്](../../../../translated_images/ml/scatterplot.b6868f44cbd2051c.webp) + ![വിലയും മാസം തമ്മിലുള്ള ബന്ധം കാണിക്കുന്ന സ്‌കാറ്റർപ്ലോട്ട്](../../../../translated_images/ml/scatterplot.b6868f44cbd2051c.webp) - ഇത് ഒരു ഉപകാരപ്രദമായ പ്ലോട്ട് ആണോ? ഇതിൽ എന്തെങ്കിലും നിങ്ങൾക്ക് അത്ഭുതം തോന്നുന്നുണ്ടോ? + ഇത് ഒരു ഉപയോഗപ്രദമായ പ്ലോട്ട് ആണോ? ഇതിൽ നിങ്ങൾക്ക് എന്തെങ്കിലും വിചിത്രമുണ്ടോ? - ഇത് പ്രത്യേകിച്ച് ഉപകാരപ്രദമല്ല, കാരണം ഇത് നിങ്ങളുടെ ഡാറ്റ ഒരു മാസത്തിൽ പോയിന്റുകളുടെ വ്യാപ്തിയായി മാത്രം പ്രദർശിപ്പിക്കുന്നു. + ഇത് പ്രത്യേകിച്ച് ഉപകാരപ്രദം അല്ല, കാരണം ഇത് ഓരോ മാസത്തിലും നിങ്ങളുടെ ഡേറ്റ പോയിന്റുകളുടെ വ്യാപ്തി മാത്രമാണ് കാണിക്കുന്നത്. -### ഇത് ഉപകാരപ്രദമാക്കുക +### പ്രധാനമാക്കുക -ചാർട്ടുകൾ ഉപകാരപ്രദമായ ഡാറ്റ പ്രദർശിപ്പിക്കാൻ, സാധാരണയായി ഡാറ്റയെ ഏതെങ്കിലും വിധത്തിൽ ഗ്രൂപ്പ് ചെയ്യേണ്ടതുണ്ട്. മാസങ്ങൾ y അക്ഷത്തിൽ കാണിക്കുന്ന, ഡാറ്റയുടെ വിതരണത്തെ പ്രദർശിപ്പിക്കുന്ന ഒരു പ്ലോട്ട് സൃഷ്ടിക്കാൻ ശ്രമിക്കാം. +ചാർട്ടുകൾ ഉപകാരപ്രദമാക്കാൻ ഡേറ്റ ഗ്രൂപ്പുചെയ്യണം. y അക്സിസിൽ മാസം കാണിക്കുന്ന പ്ലോട്ടിൽ ഡേറ്റയുടെ വിതരണവും തെളിയിക്കുന്ന പ്ലോട്ട് സൃഷ്ടിക്കാൻ ശ്രമിക്കാം. -1. ഗ്രൂപ്പുചെയ്ത ബാർ ചാർട്ട് സൃഷ്ടിക്കാൻ ഒരു സെൽ ചേർക്കുക: +1. ഗ്രൂപ്പുചെയ്ത ബാർ ചാർട്ട് സൃഷ്ടിക്കാനുള്ള സെൽ ചേർക്കുക: ```python new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') plt.ylabel("Pumpkin Price") ``` - ![വില-മാസ ബന്ധം കാണിക്കുന്ന ബാർ ചാർട്ട്](../../../../translated_images/ml/barchart.a833ea9194346d76.webp) + ![വിലയും മാസം തമ്മിലുള്ള ബന്ധം കാണിക്കുന്ന ബാർചാർട്ട്](../../../../translated_images/ml/barchart.a833ea9194346d76.webp) + + ഇത് കൂടുതൽ ഉപകാരപ്രദമായ ഒരു ഡേറ്റാ ദൃശ്യീകരണമാണ്! ഇത് പംപ്കിനുകളുടെ ഏറ്റവും ഉയർന്ന വില സെപ്റ്റംബർ, ഒക്‌ടോബർ മാസങ്ങളിൽ ആയിരിക്കുമെന്ന് സൂചിപ്പിക്കുന്നു. ഇത് നിങ്ങൾ പ്രതീക്ഷിച്ചതേ? എന്തുകൊണ്ട് അല്ലെങ്കിൽ എന്തുകൊണ്ട് അല്ല? + +## അഭ്യാസം - 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 സ്‌കാറ്റർ പ്ലോട്ട്](../../../../translated_images/ml/relplot.a03837d8f0329cec.webp) + + ഇവിടെ നിങ്ങൾ ഡാറ്റാഫ്രെയിം, കോളം നാമങ്ങൾ പാസ്സ് ചെയ്യുന്നതായി കാണാം, Seaborn താൻ ആക്‌സിസ് ലൈബിൾ സ്വയം കൈകാര്യം ചെയ്യുന്നു. + +2. `kind="line"` പാസ്സ് ചെയ്ത് നിങ്ങൾ ലൈൻ പ്ലോട്ടിലേക്കു കടക്കാം. Seaborn ലൈൻ ചുറ്റും ആത്മവിശ്വാസ ഇന്റർവൽ കാണിക്കുന്ന ഒരു ശെയ്ഡഡ് ബാൻഡ് വരയ്ക്കും: + + ```python + sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins) + ``` + + ![വിലയും മാസം ബന്ധം കാണിക്കുന്ന Seaborn ലൈൻ പ്ലോട്ട്](../../../../translated_images/ml/lineplot.f9034ba47b1e30ee.webp) + + ഈ ഡേറ്റ ഏറെ ശബ്‌ദമുള്ളതാണ്, അതിനാൽ ലൈൻ പ്ലോട്ട് ഏറ്റവും വ്യക്തമായി തിരഞ്ഞെടുക്കാനാകാത്തതു പോലെയാണ് — എന്നാൽ 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") + ``` + + ![പ്രതി മാസം വില വിതരണം കാണിക്കുന്ന Seaborn ബാർ ചാർട്ട്](../../../../translated_images/ml/catplot.e73fc35fdf96242b.webp) + + ഇത് 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") + ``` + + ![സംഖ്യാനുപാത കോളങ്ങളിലിടയിലുള്ള സഹബന്ധങ്ങൾ കാണിക്കുന്ന Seaborn ഹീറ്റ്മാപ്പ്](../../../../translated_images/ml/heatmap.bd98dce43b404c57.webp) + + `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 उपाय तयार करणे - -![मशीन लर्निंगमधील जबाबदार AI चा सारांश एका स्केच नोटमध्ये](../../../../sketchnotes/ml-fairness.png) -> स्केच नोट: [Tomomi Imura](https://www.twitter.com/girlie_mac) - -## [पूर्व-व्याख्यान प्रश्नमंजुषा](https://ff-quizzes.netlify.app/en/ml/) +# जबाबदार AI सह मशीन लर्निंग सोल्यूशन्स तयार करणे + +![मशीन लर्निंगमधील जबाबदार AI चा सारांश एका स्केचनोटमध्ये](../../../../translated_images/mr/ml-fairness.ef296ebec6afc98a.webp) +> स्केचनोट [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) फॉलो करा -[![Microsoft चा जबाबदार AI दृष्टिकोन](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoft चा जबाबदार AI दृष्टिकोन") +[![Microsoft's Approach to Responsible AI](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoft's Approach to Responsible AI") -> 🎥 वरील प्रतिमेवर क्लिक करा: Microsoft चा जबाबदार 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) +- **अपमान**. एखाद्या व्यक्ती किंवा वस्तूचे अन्यायकारकपणे टीका करणे किंवा लेबल करणे. उदाहरणार्थ, चित्र लेबेलिंग तंत्रज्ञानाने काळ्या त्वचेच्या लोकांची चित्रे गोरिल्ला म्हणून चुकीने ग्रुप केल्या होत्या. +- **अधिक किंवा कमी प्रतिनिधित्व**. कल्पना अशी की एखादा समुह विशिष्ट व्यवसायात दिसत नाही, आणि कोणताही सेवा किंवा कार्य जे ते पुढे नेते तितका हानीकारक असतो. +- **सामान्यीकरण**. दिलेल्या गटाशी पूर्व-निर्धारित वैशिष्ट्ये जोडणे. उदाहरणार्थ, इंग्रजी ते तुर्की भाषांतरण प्रणालीत लिंगाधारित सामान्यीकरणामुळे चूका होण्याची शक्यता. -![तुर्की भाषेत भाषांतर](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) -> तुर्की भाषेत भाषांतर +![तुर्कीमध्ये भाषांतर](../../../../translated_images/mr/gender-bias-translate-en-tr.f185fd8822c2d437.webp) +> तुर्कीमध्ये भाषांतर -![पुन्हा इंग्रजीत भाषांतर](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) -> पुन्हा इंग्रजीत भाषांतर +![परत इंग्रजीमध्ये भाषांतर](../../../../translated_images/mr/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) +> परत इंग्रजीमध्ये भाषांतर -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 प्रणालीचा व्यक्ती किंवा समाजावर होणाऱ्या परिणामासाठी जबाबदार असणे आवश्यक आहे. +[![Mass Surveillance Through Facial Recognition शी संबंधित जागरूकता](../../../../translated_images/mr/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft's Approach to Responsible AI") -[![AI संशोधकाचा चेहरा ओळखण्याद्वारे मोठ्या प्रमाणावर देखरेखीसाठी इशारा](../../../../1-Introduction/3-fairness/images/accountability.png)](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 यांचेद्वारे तत्त्वांना व्यवहारात आणणे -[![Responsible AI Toolbox: जबाबदार AI तयार करण्यासाठी एक ओपन-सोर्स फ्रेमवर्क](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: जबाबदार AI तयार करण्यासाठी एक ओपन-सोर्स फ्रेमवर्क") +[![Responsible AI Toolbox: An open-source framework for building responsible AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") -> 🎥 वरील प्रतिमेवर क्लिक करा व्हिडिओसाठी: 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 सह सुरुवात करा -![रिग्रेशनचा स्केच नोटमध्ये सारांश](../../../../sketchnotes/ml-regression.png) +![स्केच नोटमधील पुनरावृत्त्यांचा सारांश](../../../../translated_images/mr/ml-regression.4e4f70e3b3ed446e.webp) -> स्केच नोट [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://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "मशीन लर्निंगसाठी सुरुवात - मशीन लर्निंग मॉडेल्स तयार करण्यासाठी तुमची साधने सेट करा") +[![ML प्रारंभिकांसाठी - मशीन लर्निंग मॉडेल्स तयार करण्यासाठी तुमची साधने तयार करा](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](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) मध्ये काम करा. > > [![Visual Studio Code सह Python सेटअप करा](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](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` या प्रत्ययाने ओळखला जातो. -नोटबुक्स एक परस्परसंवादी वातावरण आहे जे विकसकाला कोड लिहिण्यास आणि कोडच्या आसपास टिपा आणि दस्तऐवज लिहिण्यास परवानगी देते, जे प्रायोगिक किंवा संशोधन-आधारित प्रकल्पांसाठी खूप उपयुक्त आहे. +नोटबुक्स हे एक परस्परसंवादी वातावरण आहे जे विकासकाला कोड करण्यास आणि कोडबाबत नोट्स व दस्तऐवज लिहिण्यास अनुमती देते, जे अनुभवात्मक किंवा संशोधन-उन्मुख प्रकल्पांसाठी फारच उपयुक्त आहे. -[![मशीन लर्निंगसाठी सुरुवात - रिग्रेशन मॉडेल्स तयार करण्यासाठी Jupyter Notebooks सेट करा](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "मशीन लर्निंगसाठी सुरुवात - रिग्रेशन मॉडेल्स तयार करण्यासाठी Jupyter Notebooks सेट करा") +[![ML प्रारंभिकांसाठी - पुनरावृत्ती मॉडेल तयार करण्यासाठी Jupyter नोटबुक सेट करा](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](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 ``` -![VS Code मध्ये नोटबुक उघडलेले](../../../../2-Regression/1-Tools/images/notebook.jpg) +![VS Code सह नोटबुक उघडलेला](../../../../translated_images/mr/notebook.4a3ee31f396b8832.webp) -तुम्ही तुमच्या कोडसह टिप्पण्या जोडून नोटबुक स्वतः दस्तऐवजीकरण करू शकता. +तुम्ही तुमचा कोड टिप्पणींसह एका नोटबुकमध्ये दस्तऐवजीकरणासाठी मिसळू शकता. -✅ एका मिनिटासाठी विचार करा की वेब विकसकाचे कार्य वातावरण डेटा सायंटिस्टच्या कार्य वातावरणापेक्षा किती वेगळे आहे. +✅ एक मिनिट थांबा आणि विचार करा की वेब विकसकाचे कामाचे वातावरण आणि डेटा सायंटिस्टचे कामाचे वातावरण किती वेगळे आहे. -## 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) आधारित आहे. -[![मशीन लर्निंगसाठी सुरुवात - Python मध्ये तुमचा पहिला रेखीय रिग्रेशन प्रकल्प](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "मशीन लर्निंगसाठी सुरुवात - Python मध्ये तुमचा पहिला रेखीय रिग्रेशन प्रकल्प") -> 🎥 वरील प्रतिमेवर क्लिक करा, या सरावामध्ये काम करण्यासाठी एक लहान व्हिडिओ पाहण्यासाठी. +[![ML प्रारंभिकांसाठी - Python मध्ये तुमचा पहिला रेषीय पुनरावृत्ती प्रकल्प](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](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() ``` - ![मधुमेहाबद्दल डेटा पॉइंट्स दर्शविणारा scatterplot](../../../../2-Regression/1-Tools/images/scatterplot.png) -✅ विचार करा की येथे नेमके काय चालले आहे. अनेक छोटे डेटा बिंदूंच्या माध्यमातून एक सरळ रेषा जात आहे, पण ती नेमके काय करत आहे? तुम्हाला दिसते का की तुम्ही ही रेषा वापरून नवीन, न पाहिलेला डेटा बिंदू प्लॉटच्या y अक्षाशी कसा संबंधित आहे हे अंदाज करू शकता? या मॉडेलचा व्यावहारिक उपयोग शब्दांत मांडण्याचा प्रयत्न करा. + ![डायबिटीज आजूबाजूला डेटा पॉइंट्स दाखवणारा स्कॅटरप्लॉट](../../../../translated_images/mr/scatterplot.ad8b356bcbb33be6.webp) -अभिनंदन, तुम्ही तुमचे पहिले रेषीय प्रतिगमन मॉडेल तयार केले, त्याचा वापर करून अंदाज तयार केला आणि ते प्लॉटमध्ये प्रदर्शित केले! ---- -## 🚀चॅलेंज + ✅ येथे काय घडत आहे याबद्दल थोडं विचार करा. एक सरळ रेषा अनेक लहान डेटा बिंदूंमधून जात आहे, पण ती नेमकी काय करत आहे? तुम्हाला दिसतंय का की तुम्हाला या रेषेचा वापर करून नवीन, अद्याप न पाहिलेल्या डेटा पॉइंटला प्लॉटच्या 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 वापरून एक रिग्रेशन मॉडेल तयार करा: डेटा तयार करा आणि दृश्य रूपात सादर करा -![डेटा व्हिज्युअलायझेशन इन्फोग्राफिक](../../../../2-Regression/2-Data/images/data-visualization.png) +![डेटा दृश्य रूपात सादरीकरण इन्फोग्राफिक](../../../../translated_images/mr/data-visualization.54e56dded7c1a804.webp) -इन्फोग्राफिक: [दसानी मदीपल्ली](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' आणि इतर मूल्यमिश्रण आहे. डेटा प्रत्यक्षात थोडा गोंधळलेला आहे. -[![ML for beginners - डेटासेट कसा विश्लेषण आणि स्वच्छ करायचा](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML for beginners - डेटासेट कसा विश्लेषण आणि स्वच्छ करायचा") +[![ML for beginners - How to Analyze and Clean a Dataset](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML for beginners - How to Analyze and Clean a Dataset") -> 🎥 वरील प्रतिमेवर क्लिक करा आणि या धड्यासाठी डेटा तयार करण्याची प्रक्रिया पाहा. +> 🎥 या चित्रावर क्लिक करून या धड्यासाठी डेटा तयार करण्याचे एक लहान व्हिडिओ पाहा. -खरं तर, पूर्णपणे तयार डेटासेट मिळणे, जे ML मॉडेल तयार करण्यासाठी तत्काळ वापरता येईल, हे फारसे सामान्य नाही. या धड्यात, तुम्ही स्टँडर्ड Python लायब्ररींचा वापर करून कच्चा डेटा कसा तयार करायचा ते शिकाल. तुम्ही डेटा व्हिज्युअलायझेशनसाठी विविध तंत्रे देखील शिकाल. +प्रत्यक्षात, पूर्णपणे वापरण्यास तयार असा डेटा सेट देणे फारसा सामान्य नाही. या धड्यात, तुम्ही पारंपरिक 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 मध्ये मोठ्या पोकळ पाई भोपळ्यामुळे अधिक जागा वाया जाते. +✅ लक्षात आलं का पंपकिन जे अर्ध्या बशेलने विकले जातात ते फार महाग आहेत? का असेल याचा विचार करा? संकेत: लहान पंपकिन मोठ्यांच्या तुलनेने खूप जास्त महाग असू शकतात कारण एका मोठ्या खोबणीदार पाई पंपकिनमुळे रिकाम्या जागा जास्त असते, त्यामुळे प्रति बशेल त्यांची संख्या जास्त असते. -## व्हिज्युअलायझेशन स्ट्रॅटेजीज +## दृश्य रूपात सादरीकरणाच्या धोरणा -डेटा सायंटिस्टची भूमिका म्हणजे ते ज्या डेटावर काम करत आहेत त्याची गुणवत्ता आणि स्वरूप प्रदर्शित करणे. हे करण्यासाठी, ते डेटा व्हिज्युअलायझेशन तयार करतात, जसे की प्लॉट्स, ग्राफ्स, आणि चार्ट्स, जे डेटाचे विविध पैलू दाखवतात. यामुळे, ते नातेसंबंध आणि अंतर दाखवू शकतात, जे अन्यथा शोधणे कठीण असते. +डेटा सायंटिस्टच्या भूमिकेचा एक भाग म्हणजे ते काम करत असलेल्या डेटाच्या गुणवत्तेचा आणि स्वरूपाचा दाखला देणे. हे साध्य करण्यासाठी, ते अनेकदा मनोरंजक दृश्य रूपात सादरीकरण, प्लॉट्स, ग्राफ्स, आणि चार्ट तयार करतात जे डेटा चे वेगवेगळे पैलू दाखवतात. अशा प्रकारे, ते दृश्यमानपणे अशा नात्यां आणि रिकाम्या जागा दाखवू शकतात ज्या इतरथा शोधणे कठीण असते. -[![ML for beginners - Matplotlib वापरून डेटा कसा व्हिज्युअलायझ करायचा](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML for beginners - Matplotlib वापरून डेटा कसा व्हिज्युअलायझ करायचा") +[![ML for beginners - How to Visualize Data with Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML for beginners - How to Visualize Data with Matplotlib") -> 🎥 वरील प्रतिमेवर क्लिक करा आणि या धड्यासाठी डेटा व्हिज्युअलायझेशन प्रक्रिया पाहा. +> 🎥 या चित्रावर क्लिक करून या धड्यासाठी डेटा दृश्य रूपात दाखवण्याचे एक लहान व्हिडिओ पाहा. -व्हिज्युअलायझेशन मशीन लर्निंग तंत्र ठरवण्यासाठी देखील मदत करू शकते. उदाहरणार्थ, जर एखादा 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() ``` - ![प्राइस टू मंथ रिलेशनशिप दाखवणारा scatterplot](../../../../2-Regression/2-Data/images/scatterplot.png) + ![महिना आणि किंमतीचे नाते दर्शवणारा scatterplot](../../../../translated_images/mr/scatterplot.b6868f44cbd2051c.webp) - हा प्लॉट उपयुक्त आहे का? याबद्दल तुम्हाला काही आश्चर्य वाटते का? + हा प्लॉट उपयुक्त आहे का? यात काही आश्चर्यकारक आहे का? - हा फारसा उपयुक्त नाही, कारण तो फक्त तुमच्या डेटाला एका महिन्यातील पॉइंट्सच्या स्वरूपात दाखवतो. + हा फारसा उपयोगी नाही कारण तो केवळ तुमच्या डेटाला एका महिन्यात बिंदूंमध्ये दर्शवितो. -### याला उपयुक्त बनवा +### याला उपयोगी बनवा -डेटा उपयुक्ततेने दाखवण्यासाठी, तुम्हाला सहसा डेटा कशात तरी गटबद्ध करावा लागतो. चला एक प्लॉट तयार करून पाहू, जिथे y अक्षावर महिने दाखवले जातील आणि डेटा वितरण दर्शवेल. +डेटा वापरून उपयोगी चार्ट दर्शवण्यासाठी तुम्हाला सहजपणे डेटा कसा गटबद्ध करायचा हे करावे लागते. चला, एक प्लॉट तयार करू जिथे y-अक्षावर महिने असतील आणि डेटा विक्षेप दाखवेल. -1. गटबद्ध बार चार्ट तयार करण्यासाठी एक सेल जोडा: +1. गटबद्ध बार चार्ट तयार करण्यासाठी सेल जोडा: ```python new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') plt.ylabel("Pumpkin Price") ``` - ![प्राइस टू मंथ रिलेशनशिप दाखवणारा बार चार्ट](../../../../2-Regression/2-Data/images/barchart.png) + ![महिना आणि किंमतीचे नाते दर्शवणारा बार चार्ट](../../../../translated_images/mr/barchart.a833ea9194346d76.webp) + + हा अधिक उपयुक्त डेटा दृश्य रूपात सादरीकरण आहे! असे दिसते की पंपकिनसाठी सर्वोच्च किंमत सप्टेंबर आणि ऑक्टोबरमध्ये आहे. हे तुमच्या अपेक्षेशी सुसंगत आहे का? का किंवा का नाही? + +## सराव - 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 चा scatterplot जे किमती ते महिन्याचा नाता दाखवतो](../../../../translated_images/mr/relplot.a03837d8f0329cec.webp) + + लक्षात घ्या कसे तुम्ही स्तंभांची नावे आणि डेटा फ्रेम पास करता, आणि Seaborn तुम्हाला अक्षांच्या लेबलांची काळजी घेतो. + +2. तुम्ही `kind="line"` पास करून रेषीय प्लॉटमध्ये बदल करू शकता. Seaborn रेषेभोवती आत्मविश्वास अंतर दर्शवणारी सावलीपट्टी (shaded band) काढतो: + + ```python + sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins) + ``` + + ![Seaborn चा रेषीय प्लॉट जो किमती ते महिन्याचा नाता दाखवतो](../../../../translated_images/mr/lineplot.f9034ba47b1e30ee.webp) + + हा विशेष डेटा फार गोंधळलेला आहे, त्यामुळे रेषीय प्लॉट हा सर्वोत्तम पर्याय नाही — पण 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") + ``` + + ![प्रति महिन्याच्या किंमतीचे वितरण दर्शविणारा सिबॉर्न बार चार्ट](../../../../translated_images/mr/catplot.e73fc35fdf96242b.webp) + + हे मॅटप्लॉटलिबसह तुम्ही पाहिलेलं पुष्टी करतो — किमती सप्टेंबर आणि ऑक्टोबर मध्ये उच्च असतात — पण सिबॉर्न हे देखील दाखवतो की प्रत्येक महिन्यात किंमत किती _विविध_ असते. + +### सहसंबंध दाखविण्यासाठी हीटमॅप + +स्कॅटर प्लॉट एकावेळी दोन चलांची तुलना करतात. जेव्हा तुमच्याकडे अनेक संख्यात्मक स्तंभ असतात, तेव्हा [हीटमॅप](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") + ``` + + ![सिबॉर्न हीटमॅप जो संख्यात्मक स्तंभांमधील सहसंबंध दाखवितो](../../../../translated_images/mr/heatmap.bd98dce43b404c57.webp) + + `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 @@ -# वर्गांचे अंदाज लावण्यासाठी लॉजिस्टिक रिग्रेशन +# वर्गांमध्ये भाकीत करण्यासाठी लॉजिस्टिक रिग्रेशन -![लॉजिस्टिक वि. लीनियर रिग्रेशन माहितीपट](../../../../2-Regression/4-Logistic/images/linear-vs-logistic.png) +![लॉजिस्टिक विरुद्ध लिनियर रिग्रेशन माहितीचित्र](../../../../translated_images/mr/linear-vs-logistic.ba180bf95e7ee667.webp) -## [पूर्व-व्याख्यान प्रश्नमंजुषा](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://img.youtube.com/vi/KpeCT6nEpBY/0.jpg)](https://youtu.be/KpeCT6nEpBY "शिकण्यासाठी लॉजिस्टिक रिग्रेशन समजून घेणे") +[![एमएल नवशिक्यांसाठी - मशीन लर्निंग वर्गीकरणासाठी लॉजिस्टिक रिग्रेशन समजून घेणे](https://img.youtube.com/vi/KpeCT6nEpBY/0.jpg)](https://youtu.be/KpeCT6nEpBY "एमएल नवशिक्यांसाठी - मशीन लर्निंग वर्गीकरणासाठी लॉजिस्टिक रिग्रेशन समजून घेणे") -> 🎥 वरील प्रतिमेवर क्लिक करा लॉजिस्टिक रिग्रेशनचा संक्षिप्त व्हिडिओ पाहण्यासाठी. +> 🎥 लॉजिस्टिक रिग्रेशनचा संक्षिप्त विडिओ आढावा पाहण्यासाठी वरच्या चित्रावर क्लिक करा. ### बायनरी वर्गीकरण -लॉजिस्टिक रिग्रेशन लीनियर रिग्रेशनसारखी वैशिष्ट्ये देत नाही. लॉजिस्टिक रिग्रेशन बायनरी वर्गाचा अंदाज लावते ("पांढरा किंवा पांढरा नाही") तर लीनियर रिग्रेशन सतत मूल्यांचा अंदाज लावू शकते, उदाहरणार्थ कद्दूच्या उत्पत्ती आणि कापणीच्या वेळेनुसार, _त्याच्या किमतीत किती वाढ होईल_. +लॉजिस्टिक रिग्रेशन लिनियर रिग्रेशनसारख्या वैशिष्ट्ये देत नाही. पहिला बायनरी वर्गाविषयी भाकीत देतो ("पांढरा की नाही") तर दुसरा सलग मूल्ये भाकीत करू शकतो, उदा. कद्दूचा काटेकोर स्रोत आणि कापणीची वेळ दिल्यास, _त्याची किंमत किती वाढेल_. -![कद्दू वर्गीकरण मॉडेल](../../../../2-Regression/4-Logistic/images/pumpkin-classifier.png) -> माहितीपट: [दसानी मदीपल्ली](https://twitter.com/dasani_decoded) +![कद्दू वर्गीकरण मॉडेल](../../../../translated_images/mr/pumpkin-classifier.562771f104ad5436.webp) +> माहितीचित्र [दसानी मदीपल्ली](https://twitter.com/dasani_decoded) यांच्या कडून -### इतर वर्गीकरण +### इतर वर्गीकरणे -लॉजिस्टिक रिग्रेशनचे इतर प्रकार देखील आहेत, जसे की मल्टिनॉमियल आणि ऑर्डिनल: +लॉजिस्टिक रिग्रेशनचे इतर प्रकार देखील असतात, ज्यात मल्टिनॉमियल आणि ऑर्डिनल समाविष्ट आहेत: -- **मल्टिनॉमियल**, ज्यामध्ये एकापेक्षा जास्त वर्ग असतात - "नारिंगी, पांढरा, आणि पट्टेदार". -- **ऑर्डिनल**, ज्यामध्ये क्रमबद्ध वर्ग असतात, जेव्हा आपण आपल्या परिणामांना तार्किकरित्या क्रमबद्ध करू इच्छितो, जसे की कद्दूंचे आकार (लहान, मध्यम, मोठा, इत्यादी). +- **मल्टिनॉमियल**, ज्यामध्ये एकापेक्षा जास्त वर्ग असतात - "केशरी, पांढरा, आणि पट्टेदार". +- **ऑर्डिनल**, ज्यामध्ये क्रमबद्ध वर्ग असतात, जर आपण आपल्या निकालांना लॉजिकल क्रमाने ठेवायचा असेल तर उपयोगात येते, जसे आपल्या कद्दू ज्यांना काही निश्चित आकारांच्या श्रेणीने (मिनी, स्मॉल, मीडियम, लार्ज, एक्सएल, एक्सएक्सएल) क्रमबद्ध केले आहे. -![मल्टिनॉमियल वि. ऑर्डिनल रिग्रेशन](../../../../2-Regression/4-Logistic/images/multinomial-vs-ordinal.png) +![मल्टिनॉमियल विरुद्ध ऑर्डिनल रिग्रेशन](../../../../translated_images/mr/multinomial-vs-ordinal.36701b4850e37d86.webp) -### व्हेरिएबल्सला सहसंबंधित असण्याची गरज नाही +### चल (variables) यांचे सहसंबंध आवश्यक नाहीत -तुम्हाला आठवत असेल की लीनियर रिग्रेशन अधिक सहसंबंधित व्हेरिएबल्ससह चांगले कार्य करते? लॉजिस्टिक रिग्रेशन याच्या उलट आहे - व्हेरिएबल्सला सहसंबंधित असण्याची गरज नाही. हे या डेटासाठी योग्य आहे ज्यामध्ये सहसंबंध तुलनेने कमकुवत आहेत. +लक्षात ठेवा लिनियर रिग्रेशनसाठी जास्त सहसंबंधित चल चांगले असतात? लॉजिस्टिक रिग्रेशन याउलट आहे - चलांना जुळण्याची गरज नाही. हे त्यासाठी उपयुक्त आहे ज्यात थोडा कमी सहसंबंध आहे. -### तुम्हाला स्वच्छ डेटाची गरज आहे +### तुलनेने मोठा स्वच्छ डेटाची गरज आहे -लॉजिस्टिक रिग्रेशन अधिक डेटा वापरल्यास अधिक अचूक परिणाम देते; आपले छोटे डेटासेट या कार्यासाठी आदर्श नाही, त्यामुळे हे लक्षात ठेवा. +लॉजिस्टिक रिग्रेशन अधिक डेटा वापरल्यास अचूक निकाल देते; आमचा छोटा डेटासेट या कामासाठी सर्वोत्तम नाही, त्यामुळे हे लक्षात ठेवा. -[![डेटा विश्लेषण आणि तयारी](https://img.youtube.com/vi/B2X4H9vcXTs/0.jpg)](https://youtu.be/B2X4H9vcXTs "डेटा विश्लेषण आणि तयारी") +[![एमएल नवशिक्यांसाठी - लॉजिस्टिक रिग्रेशनसाठी डेटा विश्लेषण आणि तयारी](https://img.youtube.com/vi/B2X4H9vcXTs/0.jpg)](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 तुमचा डेटा व्हिज्युअलाइझ क ) ``` - ![व्हिज्युअलाइज्ड डेटाचा ग्रिड](../../../../2-Regression/4-Logistic/images/pumpkins_catplot_1.png) + ![व्हिज्युअल डेटा ग्रिड](../../../../translated_images/mr/pumpkins_catplot_1.c55c409b71fea2ec.webp) - डेटा पाहून, तुम्ही `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}") +``` +![व्हिज्युअल डेटा catplot](../../../../translated_images/mr/pumpkins_catplot_2.87a354447880b388.webp) + +### स्वार्म प्लॉट वापरा + +कारण 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) + ``` + + ![व्हिज्युअल डेटा स्वार्म](../../../../translated_images/mr/swarm_2.efeacfca536c2b57.webp) + +**जागरूक रहा**: वरील कोड स्वार्म प्लॉटमध्ये इतक्या डेटापॉइंटचे प्रतिनिधित्व न करू शकल्याने वारंवार वारंवार चेतावणी निर्माण करू शकतो. यासाठी शक्यतो 'size' पॅरामीटर वापरून मार्करचा आकार कमी करणे एक उपाय आहे. मात्र, यामुळे प्लॉट वाचायला त्रास होऊ शकतो. + + +> **🧮 मला गणित दाखवा** +> +> लॉजिस्टिक रिग्रेशन 'मॅक्सिमम लाइकलिहूड' या संकल्पनेवर आधारित आहे ज्यात [सिग्मॉइड फंक्शन्स](https://wikipedia.org/wiki/Sigmoid_function) वापरल्या जातात. प्लॉटवर 'सिग्मॉइड फंक्शन' 'S' आकारात दिसते. ते एखादे मूल्य घेते आणि त्यास 0 आणि 1 मधील मध्यभागी नकाशित करते. त्याला 'लॉजिस्टिक वक्र' असेही म्हणतात. त्याचा सूत्र असे आहे: +> +> ![लॉजिस्टिक फंक्शन](../../../../translated_images/mr/sigmoid.8b7ba9d095c789cf.webp) +> +> जिथे सिग्मॉइडचा मध्यबिंदू x च्या शून्य बिंदूवर असतो, L वक्राचे कमाल मूल्य आहे, आणि k वक्राची तिव्रता आहे. जर फंक्शनचा परिणाम 0.5 पेक्षा जास्त असेल, तर त्या वर्गाला '1' म्हणून वर्गीकृत केले जाते. अन्यथा, तो '0' म्हणून वर्गीकृत होतो. + +## तुमचे मॉडेल तयार करा + +या बायनरी वर्गीकरणासाठी मॉडेल तयार करणे Scikit-learn मध्ये आश्चर्यकारकपणे सोपे आहे. + +[![एमएल नवशिक्यांसाठी - डेटा वर्गीकरणासाठी लॉजिस्टिक रिग्रेशन](https://img.youtube.com/vi/MmZS2otPrQ8/0.jpg)](https://youtu.be/MmZS2otPrQ8 "एमएल नवशिक्यांसाठी - डेटा वर्गीकरणासाठी लॉजिस्टिक रिग्रेशन") + +> 🎥 लिनियर रिग्रेशन मॉडेल तयार करण्याच्या संक्षिप्त विडिओसाठी वरील चित्रावर क्लिक करा + +1. तुमच्या वर्गीकरण मॉडेलमध्ये वापरायचे चल निवडा आणि `train_test_split()` कॉल करून प्रशिक्षण व चाचणी संच विभाजित करा: + + ```python + from sklearn.model_selection import train_test_split + + X = encoded_pumpkins[encoded_pumpkins.columns.difference(['Color'])] + y = encoded_pumpkins['Color'] + + X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) + + ``` + +2. आता `fit()` कॉल करून तुमचे मॉडेल प्रशिक्षण द्या आणि त्याचा निकाल दर्शवा: + + ```python + from sklearn.metrics import f1_score, classification_report + from sklearn.linear_model import LogisticRegression + + model = LogisticRegression() + model.fit(X_train, y_train) + predictions = model.predict(X_test) + + print(classification_report(y_test, predictions)) + print('Predicted labels: ', predictions) + print('F1-score: ', f1_score(y_test, predictions)) + ``` + + तुमच्या मॉडेलचा स्कोरबोर्ड पहा. वाईट नाही, लक्षात घेतले तर फक्त सुमारे 1000 रांगा आहेत डेटा सेट मध्ये: + + ```output + precision recall f1-score support + + 0 0.94 0.98 0.96 166 + 1 0.85 0.67 0.75 33 + + accuracy 0.92 199 + macro avg 0.89 0.82 0.85 199 + weighted avg 0.92 0.92 0.92 199 + + Predicted labels: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 + 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 + 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 0 0 0 1 0 0 0 0 0 0 0 0 1 1] + F1-score: 0.7457627118644068 + ``` + +## कनफ्युजन मॅट्रिक्सद्वारे अधिक चांगले समजून घेणे + +वर दिलेल्या आयटम्स मुद्रित करून तुम्हाला स्कोरबोर्ड अहवाल मिळेल [अटी](https://scikit-learn.org/stable/modules/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 कर्व्ह व्हिज्युअलाइझ करा [![ML for beginners - Analyzing Logistic Regression Performance with ROC Curves](https://img.youtube.com/vi/GApO575jTA0/0.jpg)](https://youtu.be/GApO575jTA0 "ML for beginners - Analyzing Logistic Regression Performance with ROC Curves") -> 🎥 ROC वक्रचे संक्षिप्त व्हिडिओ अवलोकन पाहण्यासाठी वरील प्रतिमेवर क्लिक करा +> 🎥 ROC कर्व्हचा थोडकासा विडियो आढावा पाहण्यासाठी वरील प्रतिमा क्लिक करा -चला आणखी एक व्हिज्युअलायझेशन करूया ज्यामध्ये तथाकथित '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 अक्षावर दाखवले जाते." त्यामुळे कर्व्हची तीव्रता आणि मध्यरेषा व कर्व्ह यामधील अंतर महत्वाचे असते: तुम्हाला अशी कर्व पाहिजे जी पटकन वर आणि रेषेच्या वर जाईल. आपल्या बाबतीत, सुरुवातीस खोटे पॉझिटिव्ह्स आहेत, आणि नंतर रेषा वर आणि योग्य पद्धतीने वाढते: -![ROC](../../../../2-Regression/4-Logistic/images/ROC_2.png) +![ROC](../../../../translated_images/mr/ROC_2.777f20cdfc4988ca.webp) -शेवटी, 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-लर्निंगची ओळख +# बळकटीकरण शिक्षण आणि क्‍यू-लर्निंगची ओळख -![मशीन लर्निंगमधील रिइन्फोर्समेंटचा सारांश एका स्केच नोटमध्ये](../../../../sketchnotes/ml-reinforcement.png) -> स्केच नोट [Tomomi Imura](https://www.twitter.com/girlie_mac) यांच्याकडून +![मशीन लर्निंगमधील बळकटीकरणाचा सारांश स्केच नोटमध्ये](../../../../translated_images/mr/ml-reinforcement.94024374d63348db.webp) +> स्केच नोट [Tomomi Imura](https://www.twitter.com/girlie_mac) यांची -रिइन्फोर्समेंट लर्निंगमध्ये तीन महत्त्वाचे संकल्पना असतात: एजंट, काही स्टेट्स, आणि प्रत्येक स्टेटसाठी अ‍ॅक्शनचा सेट. एका विशिष्ट स्टेटमध्ये अ‍ॅक्शन पार पाडून एजंटला एक रिवॉर्ड दिला जातो. पुन्हा सुपर मारिओ गेमची कल्पना करा. तुम्ही मारिओ आहात, तुम्ही गेमच्या एका लेव्हलमध्ये आहात, एका कड्याच्या जवळ उभे आहात. तुमच्या वर एक नाणे आहे. तुम्ही मारिओ आहात, एका गेम लेव्हलमध्ये, एका विशिष्ट ठिकाणी ... हे तुमचे स्टेट आहे. उजवीकडे एक पाऊल टाकणे (एक अ‍ॅक्शन) तुम्हाला कड्यावरून खाली नेईल, आणि त्यामुळे तुम्हाला कमी संख्यात्मक स्कोअर मिळेल. परंतु, जंप बटण दाबल्यास तुम्हाला एक पॉइंट मिळेल आणि तुम्ही जिवंत राहाल. हे एक सकारात्मक परिणाम आहे आणि त्यामुळे तुम्हाला सकारात्मक संख्यात्मक स्कोअर मिळायला हवा. +बळकटीकरण शिक्षणामध्ये तीन महत्त्वाच्या संकल्पना असतात: एजंट, काही स्टेट्स, आणि प्रत्येक स्टेटसाठी क्रियांचा संच. एखाद्या विशिष्ट स्टेटमध्ये एखादे क्रिया केल्यावर एजंटला पारितोषिक मिळते. पुन्हा कल्पना करा संगणक खेळ सुपर मारियो. तुम्ही मारियो आहात, तुम्ही एका खेळाच्या स्तरावर आहात, एका दऱ्या कडेला उभे आहात. तुमच्या वर नाणे आहे. तुम्ही मारियो आहात, खेळाच्या एका विशिष्ट स्थितीवर... ही तुमची स्थिती आहे. उजवीकडे एक पाऊल चालण्याने (एक क्रिया) तुम्हाला दऱ्या पार नेईल आणि त्यास कमी संख्यात्मक गुण मिळतील. मात्र, उडी मारण्याचा बटण दाबल्यास तुम्हाला एक गुण मिळेल आणि तुम्ही जिवंत राहाल. हा सकारात्मक परिणाम आहे आणि त्याला सकारात्मक संख्यात्मक गुण मिळायला हवेत. -रिइन्फोर्समेंट लर्निंग आणि सिम्युलेटर (गेम) वापरून, तुम्ही गेम खेळण्याची पद्धत शिकू शकता ज्यामुळे तुम्हाला जास्तीत जास्त रिवॉर्ड मिळेल, म्हणजे जिवंत राहणे आणि जास्तीत जास्त पॉइंट्स मिळवणे. +बळकटीकरण शिक्षण आणि सिम्युलेटर (खेळ) वापरून, तुम्ही खेळ कसा खेळायचा हे शिकू शकता ज्यामुळे जिंकण्याचा उद्दिष्ट जास्तीत जास्त जिवंत राहणे आणि शक्य तितके गुण मिळवणे होय. -[![रिइन्फोर्समेंट लर्निंगची ओळख](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) +[![बळकटीकरण शिक्षणाची ओळख](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](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` आकाराचा चौरस फळीचा बोर्ड मानूया, खालीलप्रमाणे: -![पीटरचे वातावरण](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![Peter चा परिसर](../../../../translated_images/mr/environment.40ba3cb66256c93f.webp) -या बोर्डमधील प्रत्येक सेल खालीलपैकी एक असू शकतो: +या बोर्डमधील प्रत्येक सेल्युलर किंवा कोष्टकापैकी एक: -* **जमीन**, ज्यावर पीटर आणि इतर प्राणी चालू शकतात. -* **पाणी**, ज्यावर चालणे शक्य नाही. -* **झाड** किंवा **गवत**, जिथे तुम्ही विश्रांती घेऊ शकता. -* **सफरचंद**, जे पीटरला स्वतःला खायला मिळाल्यास आनंद होईल. -* **लांडगा**, जो धोकादायक आहे आणि टाळला पाहिजे. +* **भूमी**, जिथे 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 ची हालचाल कशी दिसते: - ![पीटरचा रँडम वॉक](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) + ![Peter चा रँडम वॉक](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) -## रिवॉर्ड फंक्शन +## पारितोषिक फंक्शन -आपली पॉलिसी अधिक बुद्धिमान बनवण्यासाठी, आपल्याला समजून घ्यावे लागेल की कोणते हालचाल "चांगले" आहेत. हे करण्यासाठी, आपल्याला आपले उद्दिष्ट परिभाषित करावे लागेल. +आपली धोरण अधिक बुद्धिमान करण्यासाठी, आपल्याला हे समजून घ्यावे लागेल कोणती हालचाल इतरांपेक्षा "चांगली" आहे. यासाठी, आपल्याला आपले लक्ष्य परिभाषित करावे लागेल. -उद्दिष्ट **रिवॉर्ड फंक्शन**च्या स्वरूपात परिभाषित केले जाऊ शकते, जे प्रत्येक स्थितीसाठी काही स्कोअर मूल्य परत करेल. संख्या जितकी जास्त असेल, तितके रिवॉर्ड फंक्शन चांगले. (कोड ब्लॉक 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)` वापरून बोर्डवर दिसवू शकतो. -![पीटरचे वातावरण](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![Peter चा परिसर](../../../../translated_images/mr/env_init.04e8f26d2d60089e.webp) -प्रत्येक सेलच्या मध्यभागी एक "बाण" आहे जो हालचालीच्या प्राधान्य दिलेल्या दिशेची सूचना करतो. कारण सर्व दिशे समान आहेत, एक बिंदू दर्शविला जातो. +प्रत्येक सेल्युलरच्या मध्यभागी एक "बाण" आहे जो प्राधान्य दिलेल्या दिशेची सूचना करतो. सर्व दिशा समान असल्यामुळे, एक बिंदू दर्शविला जातो. -आता आपल्याला सिम्युलेशन चालवावे लागेल, आपले वातावरण एक्सप्लोर करावे लागेल, आणि 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-लर्निंग वापरून. + +![महान पलायन!](../../../../translated_images/mr/escape.18862db9930337e3.webp) + +> पीटर आणि त्याचे मित्र लांडग्यापासून दूर जाण्यासाठी सर्जनशील होतात! छायाचित्र [जेन लूपर](https://twitter.com/jenlooper) यांचे. + +आपण संतुलनाचे एक सोप्या रूप म्हणून **कार्टपोल** समस्या वापरणार आहोत. कार्टपोल जगात, आपल्याकडे एक आडवी स्लायडर आहे जी डावीकडे किंवा उजवीकडे हलू शकते, आणि उद्दिष्ट स्लायडरच्या वर एका उभ्या पोलला संतुलित ठेवणे आहे. + +a cartpole + +## पूर्वअटी + +या धड्यात, आपण **OpenAI Gym** नावाची लायब्ररी वापरणार आहोत वेगवेगळ्या **परिस्थितींचा** अनुकरण करण्यासाठी. आपण हा धडा स्थानिकरित्या चालवू शकता (उदा. Visual Studio Code वरून), त्या स्थितीत अनुकरण नवीन विंडोमध्ये उघडेल. ऑनलाईन कोड चालवताना, कधीकधी आपल्याला कोडमध्ये काही बदल करावे लागू शकतात, जसे [येथे](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7) दिले आहे. ## OpenAI Gym -मागील धड्यात, खेळाचे नियम आणि स्थिती आम्ही स्वतः परिभाषित केलेल्या `Board` वर्गाद्वारे दिले होते. येथे आम्ही एक विशेष **अनुकरण वातावरण** वापरणार आहोत, जे संतुलन राखणाऱ्या खांबाच्या भौतिकशास्त्राचे अनुकरण करेल. 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() ``` - तुम्हाला खालील प्रतिमेसारखे काहीतरी दिसेल: + आपण या प्रतिमेसारखे काहीतरी पाहू शकता: - ![non-balancing cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) + ![संतुलन न राखणारा कार्टपोल](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) -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) ``` -![raw progress](../../../../8-Reinforcement/2-Gym/images/train_progress_raw.png) +![ताजी प्रगती](../../../../translated_images/mr/train_progress_raw.2adfdf2daea09c59.webp) -या 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)) ``` -![training progress](../../../../8-Reinforcement/2-Gym/images/train_progress_runav.png) +![प्रशिक्षण प्रगती](../../../../translated_images/mr/train_progress_runav.c71694a8fa9ab359.webp) + +## हायपरपॅरामिटर्सचा बदल + +शिक्षण अधिक स्थिर करण्यासाठी, आपल्याला प्रशिक्षणादरम्यान काही हायपरपॅरामिटर्स समायोजित करणे उचित वाटते. विशेषतः: + +- **लर्निंग दरासाठी**, `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() ``` -तुम्हाला असे काहीतरी दिसेल: +तुम्हाला असे काहीतरी दिसायला हवे: ![एक संतुलित कार्टपोल](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) --- -## 🚀चॅलेंज +## 🚀आव्हान -> **कार्य 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) या पुनरावलोकन घ्या > ![जबाबदार AI साधनांवरील GIF](../../../../9-Real-World/2-Debugging-ML-Models/images/rai-overview.gif) ## त्रुटी विश्लेषण -पारंपरिक मॉडेल कार्यप्रदर्शन मेट्रिक्स अचूकता मोजण्यासाठी वापरले जातात आणि प्रामुख्याने योग्य विरुद्ध चुकीच्या अंदाजांवर आधारित गणना असतात. उदाहरणार्थ, एखाद्या मॉडेलने 89% वेळा अचूक अंदाज लावला आणि 0.001 चा त्रुटी नुकसान आहे असे ठरवणे चांगले कार्यप्रदर्शन मानले जाऊ शकते. त्रुटी तुमच्या अंतर्निहित डेटासेटमध्ये समान रीतीने वितरित केल्या जात नाहीत. तुम्हाला 89% मॉडेल अचूकता स्कोअर मिळू शकतो, परंतु असे आढळते की तुमच्या डेटाच्या वेगवेगळ्या भागांमध्ये मॉडेल 42% वेळा अयशस्वी होत आहे. विशिष्ट डेटा गटांसह या अपयशाच्या नमुन्यांचे परिणाम न्याय किंवा विश्वासार्हतेच्या समस्यांकडे नेऊ शकतात. मॉडेल चांगले कार्य करत आहे किंवा नाही अशा क्षेत्रांना समजून घेणे आवश्यक आहे. तुमच्या मॉडेलमध्ये जिथे अचूकतेचा अभाव आहे अशा डेटा क्षेत्रे महत्त्वपूर्ण डेटा लोकसंख्या ठरू शकतात. +पारंपरिक मॉडेल कामगिरी मोजण्यासाठी वापरल्या जाणाऱ्या अचूकता मापन सरासरी चुकीच्या आणि योग्य अंदाजांवर आधारित गणना असतात. उदाहरणार्थ, 0.001 त्रुटी तोट्याने ८९% अचूक असल्याचे ठरवणे चांगली कामगिरी मानली जाऊ शकते. त्रुटी समस्थानिकरित्या तुमच्या मूळ डेटासेटमधून विभागल्या जात नाहीत. ८९% मॉडेल अचूकता प्राप्त होताना, काही डेटा भागांमध्ये ४२% वेळा मॉडेल अपयशी ठरू शकते. विशिष्ट डेटा गटांमधले अपयशाचे नमुने न्याय्यपणा किंवा विश्वासार्हतेच्या समस्यांना हाताळू शकतात. मॉडेल जिथे चांगली कामगिरी करत आहे आणि जिथे नाही, हे समजून घेणे गरजेचे आहे. जिथे मॉडेलमध्ये चुकांची संख्या जास्त आहे त्या डेटामध्ये महत्त्वाचा डेटा लोकसंख्या गट असू शकतो. + +![मॉडेल त्रुटीचे विश्लेषण आणि डीबगिंग](../../../../translated_images/mr/ea-error-distribution.117452e1177c1dd8.webp) + +RAI डॅशबोर्डवरील त्रुटी विश्लेषण घटक विविध गटांमध्ये मॉडेल अपयश कसे विभागले आहे हे वृक्ष दर्शनाद्वारे दर्शवितो. हे तुमच्या डेटासेटमध्ये जिथे त्रुटी दर जास्त असतो अशा वैशिष्ट्ये किंवा भाग ओळखण्यासाठी उपयुक्त आहे. जास्तीत जास्त मॉडेल चुका कुठून येत आहेत हे पाहून मूळ कारणाबद्दल तपासणी सुरू करू शकता. तुम्ही विश्लेषणासाठी डेटाचा गट तयार करू शकता. हे डेटा गट डीबगिंग प्रक्रियेत मदत करतात ज्यामुळे कळते का मॉडेल एका गटात चांगले काम करत आहे पण दुसर्‍यामध्ये चुकांसह आहे. + +![त्रुटी विश्लेषण](../../../../translated_images/mr/ea-error-cohort.6886209ea5d438c4.webp) + +वृक्ष नकाशावरील दृश्य निर्देशक समस्याग्रस्त भाग त्वरीत शोधायला मदत करतात. उदाहरणार्थ, ज्या वृक्ष नोडला जास्त गडद लाल रंग आहे, त्या ठिकाणी त्रुटी दर जास्त आहे. + +हीट मॅप अजून एक दृश्य फंक्शनॅलिटी आहे ज्याचा वापर वापरकर्ते एका किंवा दोन वैशिष्ट्यांचा वापर करून त्रुटी दर तपासण्यासाठी करू शकतात, ज्यामुळे तुमच्या डेटासेट किंवा गटांमध्ये मॉडेलच्या त्रुटींमध्ये योगदान देणारे भाग शोधता येतात. + +![त्रुटी विश्लेषण हीटमॅप](../../../../translated_images/mr/ea-heatmap.8d27185e28cee383.webp) + +जेव्हा तुम्हाला: + +* डेटासेट आणि अनेक इनपुट व वैशिष्ट्य परिमाणांमध्ये मॉडेल अपयश कसे विभागले आहे हे सखोल समजून घ्यायचे आहे. +* एकत्रित कामगिरी मेट्रिक्स विश्लेषण करून आपोआप चुकीचे गट शोधायचे आहेत जे उपचारात्मक कृतीसाठी मार्गदर्शक ठरतील. + + + + -![मॉडेल त्रुटींचे विश्लेषण आणि डीबग करा](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-error-distribution.png) -RAI डॅशबोर्डवरील त्रुटी विश्लेषण घटक विविध गटांमध्ये मॉडेल अपयश कसे वितरित केले जाते हे ट्री व्हिज्युअलायझेशनसह दर्शवितो. तुमच्या डेटासेटसह जिथे त्रुटी दर जास्त आहे अशा वैशिष्ट्ये किंवा क्षेत्रे ओळखण्यासाठी हे उपयुक्त आहे. मॉडेलच्या अचूकतेचा अभाव जिथून येत आहे ते पाहून तुम्ही मूळ कारण तपासण्यास सुरुवात करू शकता. तुम्ही विश्लेषण करण्यासाठी डेटा गट तयार करू शकता. हे डेटा गट डीबगिंग प्रक्रियेत मदत करतात, जिथे एक गट चांगले कार्य करत आहे, तर दुसऱ्या गटात त्रुटी आहेत. -![त्रुटी विश्लेषण](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-error-cohort.png) -ट्री मॅपवरील व्हिज्युअल इंडिकेटर्स समस्या क्षेत्रे लवकर शोधण्यात मदत करतात. उदाहरणार्थ, ट्री नोडचा गडद लाल रंग जितका गडद असेल तितका त्रुटी दर जास्त. -हीट मॅप हे आणखी एक व्हिज्युअलायझेशन कार्यक्षमता आहे ज्याचा वापर वापरकर्ते एक किंवा दोन वैशिष्ट्यांचा वापर करून त्रुटी दर तपासण्यासाठी करू शकतात, ज्यामुळे संपूर्ण डेटासेट किंवा गटांमध्ये मॉडेल त्रुटींचे योगदानकर्ता शोधता येते. -![त्रुटी विश्लेषण हीटमॅप](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-heatmap.png) -त्रुटी विश्लेषण वापरा जेव्हा तुम्हाला: -* मॉडेल अपयश तुमच्या डेटासेटमध्ये आणि अनेक इनपुट आणि वैशिष्ट्य परिमाणांमध्ये कसे वितरित केले जाते याची सखोल समज मिळवा. -* एकत्रित कार्यप्रदर्शन मेट्रिक्सचे विघटन करा आणि लक्ष्यित सुधारणा पावले सूचित करण्यासाठी त्रुटी गट आपोआप शोधा. -## मॉडेल विहंगावलोकन -मशीन लर्निंग मॉडेलचे कार्यप्रदर्शन मूल्यांकन करण्यासाठी त्याच्या वर्तनाची समग्र समज मिळवणे आवश्यक आहे. हे त्रुटी दर, अचूकता, पुनर्प्राप्ती, अचूकता किंवा MAE (मीन अॅब्सोल्यूट एरर) यासारख्या एकापेक्षा जास्त मेट्रिक्सचे पुनरावलोकन करून साध्य केले जाऊ शकते, जेणेकरून कार्यप्रदर्शन मेट्रिक्समधील विसंगती शोधता येतील. एक कार्यप्रदर्शन मेट्रिक चांगले दिसू शकते, परंतु दुसऱ्या मेट्रिकमध्ये अचूकतेचा अभाव उघड होऊ शकतो. याशिवाय, संपूर्ण डेटासेट किंवा गटांमध्ये मेट्रिक्सची तुलना करणे मॉडेल चांगले कार्य करत आहे किंवा नाही हे स्पष्ट करण्यात मदत करते. हे विशेषतः संवेदनशील विरुद्ध असंवेदनशील वैशिष्ट्यांमध्ये (उदा., रुग्णाचा वंश, लिंग किंवा वय) मॉडेलचे कार्यप्रदर्शन पाहणे महत्त्वाचे आहे, जेणेकरून मॉडेलमध्ये संभाव्य अन्याय उघड होऊ शकतो. उदाहरणार्थ, संवेदनशील वैशिष्ट्य असलेल्या गटामध्ये मॉडेल अधिक त्रुटीपूर्ण असल्याचे आढळल्यास मॉडेलमध्ये संभाव्य अन्याय उघड होऊ शकतो. -RAI डॅशबोर्डवरील मॉडेल विहंगावलोकन घटक केवळ डेटा गटांमधील कार्यप्रदर्शन मेट्रिक्सचे विश्लेषण करण्यात मदत करत नाही, तर ते वापरकर्त्यांना विविध गटांमध्ये मॉडेलच्या वर्तनाची तुलना करण्याची क्षमता देते. -![डेटासेट गट - RAI डॅशबोर्डवरील मॉडेल विहंगावलोकन](../../../../9-Real-World/2-Debugging-ML-Models/images/model-overview-dataset-cohorts.png) -घटकाची वैशिष्ट्य-आधारित विश्लेषण कार्यक्षमता वापरकर्त्यांना विशिष्ट वैशिष्ट्यांमध्ये डेटा उपगट कमी करण्याची परवानगी देते, जेणेकरून सूक्ष्म स्तरावर विसंगती ओळखता येतील. उदाहरणार्थ, डॅशबोर्डमध्ये वापरकर्त्याने निवडलेल्या वैशिष्ट्यासाठी (उदा., *"time_in_hospital < 3"* किंवा *"time_in_hospital >= 7"*) स्वयंचलितपणे गट तयार करण्यासाठी अंतर्गत बुद्धिमत्ता आहे. यामुळे वापरकर्त्याला मोठ्या डेटा गटातून विशिष्ट वैशिष्ट्य वेगळे करण्यास सक्षम होते, जेणेकरून ते मॉडेलच्या त्रुटीपूर्ण परिणामांवर प्रभाव टाकणारे प्रमुख घटक आहे का हे पाहता येईल. -![वैशिष्ट्य गट - RAI डॅशबोर्डवरील मॉडेल विहंगावलोकन](../../../../9-Real-World/2-Debugging-ML-Models/images/model-overview-feature-cohorts.png) +* अचूकता दरातील भेद +* त्रुटी दरातील भेद +* तपशिलातील भेद +* पुनर्प्राप्तीतील भेद + + + + + -मॉडेल विहंगावलोकन घटक दोन प्रकारच्या विसंगती मेट्रिक्सला समर्थन देतो: -**मॉडेल कार्यप्रदर्शनातील विसंगती**: या मेट्रिक्सचा संच डेटा उपगटांमध्ये निवडलेल्या कार्यप्रदर्शन मेट्रिकच्या मूल्यांमधील विसंगती (फरक) मोजतो. काही उदाहरणे: -* अचूकता दरातील विसंगती -* त्रुटी दरातील विसंगती -* अचूकतेतील विसंगती -* पुनर्प्राप्तीतील विसंगती -* मीन अॅब्सोल्यूट एरर (MAE) मधील विसंगती -**निवड दरातील विसंगती**: हा मेट्रिक उपगटांमध्ये निवड दर (अनुकूल अंदाज) मधील फरक समाविष्ट करतो. याचे एक उदाहरण म्हणजे कर्ज मंजुरी दरातील विसंगती. निवड दर म्हणजे प्रत्येक वर्गातील डेटा पॉइंट्सचा अंश जो 1 म्हणून वर्गीकृत केला जातो (बायनरी वर्गीकरणामध्ये) किंवा अंदाज मूल्यांचे वितरण (प्रत्यावर्तनामध्ये). -## डेटा विश्लेषण -> "जर तुम्ही डेटा पुरेसा त्रास दिला, तर तो काहीही कबूल करेल" - रोनाल्ड कोस -हे विधान अतिशयोक्तीपूर्ण वाटते, परंतु हे खरे आहे की डेटा कोणत्याही निष्कर्षाला समर्थन देण्यासाठी हेरफेर केला जाऊ शकतो. अशा प्रकारचे हेरफेर कधीकधी अनवधानाने होऊ शकते. मानव म्हणून, आपल्याला सर्वांनाच पूर्वग्रह असतो आणि डेटा तयार करताना आपण पूर्वग्रह कधी ओळखतो हे जाणून घेणे कठीण असते. AI आणि मशीन लर्निंगमध्ये न्याय्यतेची हमी देणे ही एक गुंतागुंतीची समस्या आहे. -पारंपरिक मॉडेल कार्यप्रदर्शन मेट्रिक्ससाठी डेटा हा एक मोठा अंध भाग आहे. तुम्हाला उच्च अचूकता स्कोअर मिळू शकतो, परंतु याचा नेहमीच अर्थ असा नाही की तुमच्या डेटासेटमध्ये अंतर्निहित डेटा पूर्वग्रह आहे. उदाहरणार्थ, जर एखाद्या कंपनीतील कार्यकारी पदांवरील महिलांचे प्रमाण 27% आणि पुरुषांचे प्रमाण 73% असेल, तर या डेटावर प्रशिक्षित केलेला नोकरी जाहिरात AI मॉडेल वरिष्ठ स्तरावरील नोकरीसाठी प्रामुख्याने पुरुष प्रेक्षकांना लक्ष्य करू शकतो. डेटामध्ये असलेल्या या असंतुलनामुळे मॉडेलचा अंदाज एका लिंगाला प्राधान्य देण्यासाठी वाकवला गेला. यामुळे न्याय्यतेची समस्या उघड होते जिथे AI मॉडेलमध्ये लिंग पूर्वग्रह आहे. -RAI डॅशबोर्डवरील डेटा विश्लेषण घटक डेटासेटमध्ये जिथे अति- आणि कमी-प्रतिनिधित्व आहे अशा क्षेत्रांची ओळख करण्यात मदत करतो. डेटा असंतुलन किंवा विशिष्ट डेटा गटाच्या प्रतिनिधित्वाच्या अभावामुळे त्रुटी आणि न्याय्यतेच्या समस्यांचे मूळ कारण शोधण्यात हे वापरकर्त्यांना मदत करते. हे वापरकर्त्यांना अंदाजित आणि वास्तविक परिणाम, त्रुटी गट आणि विशिष्ट वैशिष्ट्यांवर आधारित डेटासेट व्हिज्युअलाइझ करण्याची क्षमता देते. कधीकधी कमी प्रतिनिधित्व असलेल्या डेटा गटाचा शोध घेतल्याने मॉडेल चांगले शिकत नाही हे देखील उघड होऊ शकते, त्यामुळे अचूकतेचा अभाव असतो. डेटा पूर्वग्रह असलेला मॉडेल असणे ही केवळ न्याय्यतेची समस्या नाही तर मॉडेल समावेशक किंवा विश्वासार्ह नाही हे देखील दर्शवते. -![RAI डॅशबोर्डवरील डेटा विश्लेषण घटक](../../../../9-Real-World/2-Debugging-ML-Models/images/dataanalysis-cover.png) डेटा विश्लेषण वापरा जेव्हा तुम्हाला: -* तुमच्या डेटासेटच्या आकडेवारीचा शोध घ्या, विविध परिमाणांमध्ये (गटांमध्ये) तुमचा डेटा विभाजित करण्यासाठी विविध फिल्टर निवडा. -* विविध गट आणि वैशिष्ट्य गटांमध्ये तुमच्या डेटासेटचे वितरण समजून घ्या. -* न्याय्यतेशी संबंधित तुमच्या निष्कर्ष, त्रुटी विश्लेषण आणि कारणात्मकता (इतर डॅशबोर्ड घटकांमधून प्राप्त) तुमच्या डेटासेटच्या वितरणाचा परिणाम आहेत का हे ठरवा. -* प्रतिनिधित्वाच्या समस्यांमुळे, लेबल आवाज, वैशिष्ट्य आवाज, लेबल पूर्वग्रह आणि अशा घटकांमुळे त्रुटी कमी करण्यासाठी कोणत्या क्षेत्रांमध्ये अधिक डेटा गोळा करायचा आहे हे ठरवा. +* वेगवेगळ्या फिल्टर्स निवडून तुमचा डेटासेट वेगवेगळ्या मितींमध्ये (किंवा गटांमध्ये) विभाजित करून तपासायचा असेल. +* विविध गट आणि वैशिष्ट्य गटांमध्ये तुमच्या डेटासेटचे वितरण समजून घ्यायचे असेल. +* तुमच्या निष्कर्षांची (न्याय्यतेसंबंधित, त्रुटी विश्लेषण, आणि कारणात्मकता) मूलभूत कारणे डेटासेटच्या वितरणावर आधारित आहेत की नाही हे ठरवायचे असेल. +* प्रतिनिधित्वाच्या समस्यांमुळे, एल्बल आवाज, वैशिष्ट्य आवाज, लेबल पूर्वग्रह यांसारख्या कारणांमुळे येणाऱ्या त्रुटी कमी करण्यासाठी कुठे अधिक डेटा गोळा करावा हे ठरवायचे असेल. -## मॉडेल समज +## मॉडेल समजावून सांगणे -मशीन लर्निंग मॉडेल्स "ब्लॅक बॉक्स" असतात. मॉडेलचा अंदाज कोणत्या प्रमुख डेटा वैशिष्ट्यांवर आधारित आहे हे समजणे आव्हानात्मक असते. मॉडेलने विशिष्ट अंदाज का लावला याबद्दल पारदर्शकता प्रदान करणे महत्त्वाचे आहे. उदाहरणार्थ, जर एखाद्या AI प्रणालीने अंदाज लावला की मधुमेह असलेल्या रुग्णाला 30 दिवसांच्या आत पुन्हा रुग्णालयात दाखल होण्याचा धोका आहे, तर त्याच्या अंदाजामागील समर्थन डेटा प्रदान करणे आवश्यक आहे. समर्थन डेटा निर्देशक असणे पारदर्शकता आणते, ज्यामुळे क्लिनिशियन किंवा रुग्णालयांना चांगले निर्णय घेता येतात. याशिवाय, एखाद्या रुग्णासाठी मॉडेलने अंदाज का लावला हे स्पष्ट करण्याची क्षमता आरोग्य नियमांसह जबाबदारी सक्षम करते. जेव्हा तुम्ही मशीन लर्निंग मॉडेल्सचा वापर लोकांच्या जीवनावर परिणाम करणाऱ्या पद्धतींमध्ये करत असता, तेव्हा मॉडेलच्या वर्तनावर काय प्रभाव पडतो हे समजून घेणे आणि स्पष्ट करणे महत्त्वाचे आहे. मॉडेल स्पष्टता आणि समज खालील परिस्थितींमध्ये प्रश्नांची उत्तरे देण्यास मदत करते: +मशीन लर्निंग मॉडेल्स बहुतेक काळा डबा असतात. कोणती मुख्य डेटा वैशिष्ट्ये मॉडेलचे भविष्यवाणी चालवतात हे समजून घेणे कठीण असते. एखाद्या मॉडेलने विशिष्ट भविष्यवाणी का केली हे स्पष्ट करणे महत्त्वाचे आहे. उदाहरणार्थ, जर एखाद्या AI प्रणालीने सूचित केले की डायबेटिक रुग्णाला ३० दिवसांच्या आत हॉस्पिटलमध्ये पुन्हा दाखल होण्याचा धोका आहे, तर त्याने त्याच्या भविष्यवाणीला काय समर्थन पुरवणारे डेटा आहे ते देखील देता यावे. समर्थन करणाऱ्या डेटा निर्देशकांनी पारदर्शकता आणते ज्यामुळे डॉक्टर किंवा रुग्णालय योग्य निर्णय घेऊ शकतात. तसेच एखाद्या रुग्णासाठी मॉडेलने भविष्यवाणी का केली आणि काय कारण होते हे स्पष्ट करण्यासशक्य असल्यास आरोग्य नियमांकडे जबाबदारीदेखील येते. लोकांच्या जीवनावर परिणाम करणाऱ्या मशीन लर्निंग मॉडेलसाठी मॉडेलचे वर्तन काय प्रभावित करते हे समजणे आणि स्पष्ट करणे अत्यंत आवश्यक आहे. मॉडेल स्पष्टता आणि समजणारी क्षमता खालील परिस्थितींसाठी उपयुक्त आहेत: -* मॉडेल डीबगिंग: माझ्या मॉडेलने ही चूक का केली? मी माझे मॉडेल कसे सुधारू शकतो? -* मानव-AI सहकार्य: मी मॉडेलच्या निर्णयांना कसे समजून घेऊ आणि विश्वास ठेवू शकतो? -* नियामक अनुपालन: माझे मॉडेल कायदेशीर आवश्यकता पूर्ण करते का? +* मॉडेल डीबगिंग: माझ्या मॉडेलने ही चूक का केली? मॉडेल मी कसे सुधारू? +* मानवी - AI सहकार्य: मी कसे मॉडेलच्या निर्णयांवर विश्वास ठेवू शकतो आणि त्यांना समजू शकतो? +* नियामक अनुपालन: माझे मॉडेल कायदेशीर आवश्यकतांची पूर्तता करते का? -RAI डॅशबोर्डवरील वैशिष्ट्य महत्त्व घटक तुम्हाला डीबग करण्यासाठी आणि मॉडेल अंदाज कसे लावते याची व्यापक समज मिळविण्यास मदत करते. मशीन लर्निंग व्यावसायिक आणि निर्णय घेणाऱ्यांसाठी हे एक उपयुक्त साधन आहे, जे मॉडेलच्या वर्तनावर प्रभाव टाकणाऱ्या वैशिष्ट्यांचे पुरावे स्पष्ट करण्यासाठी आणि दाखवण्यासाठी नियामक अनुपालनासाठी उपयुक्त आहे. पुढे, वापरकर्ते जागतिक आणि स्थानिक स्पष्टीकरणे शोधू शकतात, जे वैशिष्ट्ये मॉडेलच्या अंदाजांवर प्रभाव टाकतात ते सत्यापित करण्यासाठी. जागतिक स्पष्टीकरणे मॉडेलच्या एकूण अंदाजावर परिणाम करणाऱ्या शीर्ष वैशिष्ट्यांची यादी करतात. स्थानिक स्पष्टीकरणे विशिष्ट प्रकरणासाठी मॉडेलच्या अंदाजामागील वैशिष्ट्ये दर्शवतात. स्थानिक स्पष्टीकरणे मूल्यांकन करण्याची क्षमता विशिष्ट प्रकरण डीबग किंवा ऑडिट करण्यासाठी उपयुक्त आहे, जेणेकरून मॉडेलने अचूक किंवा अचूक अंदाज का लावला हे चांगल्या प्रकारे समजून घेता येईल. +RAI डॅशबोर्डचा वैशिष्ट्य महत्त्व घटक तुम्हाला डीबगिंग करण्यात आणि समस्यांची संपूर्ण समज प्राप्त करण्यात मदत करतो की मॉडेल कसे भविष्यवाणी करतो. हे मशीन लर्निंग व्यावसायिक आणि निर्णय घेणाऱ्यांसाठी देखील उपयुक्त साधन आहे जे मॉडेलच्या वर्तनावर परिणाम करणाऱ्या वैशिष्ट्यांचे पुरावे स्पष्ट करतात आणि कायदेशीर अनुपालनासाठी दाखवू शकतात. वापरकर्ते जागतिक आणि स्थानिक स्पष्टीकरणे तपासू शकतात ज्यात कोणती वैशिष्ट्ये मॉडेलची भविष्यवाणी चालवतात हे तपासले जाते. जागतिक स्पष्टीकरणांमध्ये मॉडेलच्या एकूण भविष्यवाणीवर परिणाम करणाऱ्या महत्त्वाच्या वैशिष्ट्यांची यादी असते. स्थानिक स्पष्टीकरणे दर्शवतात की एखाद्या विशिष्ट प्रकरणासाठी कोणती वैशिष्ट्ये मॉडेलने भविष्यवाणी करताना वापरली. स्थानिक स्पष्टीकरणांचे मूल्यांकन डीबगिंग किंवा विशिष्ट प्रकरणाच्या ऑडिटिंगसाठी उपयुक्त आहे, ज्यामुळे समजायला आणि समजावून सांगायला मदत होते की मॉडेलने अचूक किंवा चुकीचे भविष्यवाणी का केली. -![RAI डॅशबोर्डवरील -- **अतिरिक्त किंवा अपुरे प्रतिनिधित्व**. कल्पना अशी आहे की एखाद्या विशिष्ट गटाला एखाद्या व्यवसायात दिसत नाही, आणि कोणतीही सेवा किंवा कार्य जे हे पुढे चालू ठेवते ते नुकसान पोहोचवण्यास हातभार लावते. +![RAI डॅशबोर्डमधील वैशिष्ट्य महत्त्व घटक](../../../../translated_images/mr/9-feature-importance.cd3193b4bba3fd4b.webp) -### 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) तपासून वेगवेगळ्या घटकांचा वापर कसा करायचा ते शिका. +![वैशिष्ट्य महत्त्व](../../../../translated_images/mr/9-features-influence.3ead3d3f68a84029.webp) -- 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 प्रत्यक्षात कार्यान्वित करण्यासाठी एकाच ठिकाणी सुविधा. +या विषयांवर सखोल जाणून घेण्यासाठी हा कार्यशाळा पहा: -[![जबाबदार AI डॅशबोर्ड: प्रत्यक्षात RAI कार्यान्वित करण्यासाठी एकाच ठिकाणी सुविधा](https://img.youtube.com/vi/f1oaDNl3djg/0.jpg)](https://www.youtube.com/watch?v=f1oaDNl3djg "जबाबदार AI डॅशबोर्ड: प्रत्यक्षात RAI कार्यान्वित करण्यासाठी एकाच ठिकाणी सुविधा") +- जबाबदार AI डॅशबोर्ड: व्यवहारात RAI कार्यान्वित करण्यासाठी एकाच ठिकाणी सुविधा, लेखक: Besmira Nushi आणि Mehrnoosh Sameki -> 🎥 वरील प्रतिमेवर क्लिक करा: जबाबदार AI डॅशबोर्ड: प्रत्यक्षात RAI कार्यान्वित करण्यासाठी एकाच ठिकाणी सुविधा Besmira Nushi आणि Mehrnoosh Sameki यांच्याकडून. +[![जबाबदार AI डॅशबोर्ड: व्यवहारात RAI कार्यान्वित करण्यासाठी एकाच ठिकाणी सुविधा](https://img.youtube.com/vi/f1oaDNl3djg/0.jpg)](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 - -![Ringkasan AI yang bertanggungjawab dalam Pembelajaran Mesin dalam bentuk sketchnote](../../../../sketchnotes/ml-fairness.png) +# Membina penyelesaian Pembelajaran Mesin dengan AI bertanggungjawab + +![Ringkasan AI bertanggungjawab dalam Pembelajaran Mesin dalam sketchnote](../../../../translated_images/ms/ml-fairness.ef296ebec6afc98a.webp) > 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) -[![Pendekatan Microsoft terhadap AI yang Bertanggungjawab](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Pendekatan Microsoft terhadap AI yang Bertanggungjawab") +[![Pendekatan Microsoft terhadap AI Bertanggungjawab](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](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](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) -> terjemahan ke Bahasa Turki +![terjemahan ke Turki](../../../../translated_images/ms/gender-bias-translate-en-tr.f185fd8822c2d437.webp) +> terjemahan ke Turki -![terjemahan kembali ke Bahasa Inggeris](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) +![terjemahan kembali ke Bahasa Inggeris](../../../../translated_images/ms/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) > 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. +[![Penyelidik AI Terkemuka Memperingatkan Pengawasan Massa Melalui Pengecaman Wajah](../../../../translated_images/ms/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Pendekatan Microsoft terhadap AI Bertanggungjawab") -[![Penyelidik AI Terkemuka Memberi Amaran tentang Pengawasan Massa Melalui Pengecaman Wajah](../../../../1-Introduction/3-fairness/images/accountability.png)](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 -[![Responsible AI Toolbox: Kerangka sumber terbuka untuk membina AI yang bertanggungjawab](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: Kerangka sumber terbuka untuk membina AI yang bertanggungjawab") +[![Kotak Alat AI Bertanggungjawab: Rangka kerja sumber terbuka untuk membina AI yang bertanggungjawab](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") -> 🎥 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 -![Ringkasan regresi dalam sketchnote](../../../../sketchnotes/ml-regression.png) +![Ringkasan regresi dalam nota lakaran](../../../../translated_images/ms/ml-regression.4e4f70e3b3ed446e.webp) -> 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 [![ML untuk pemula - Sediakan alat anda untuk membina model Pembelajaran Mesin](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](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) > - > [![Sediakan Python dengan Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Sediakan Python dengan Visual Studio Code") + > [![Pasang Python dengan Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](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. [![ML untuk pemula - Sediakan Jupyter Notebooks untuk mula membina model regresi](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](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 ``` -![VS Code dengan notebook dibuka](../../../../2-Regression/1-Tools/images/notebook.jpg) +![VS Code dengan notebook dibuka](../../../../translated_images/ms/notebook.4a3ee31f396b8832.webp) -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. -[![ML untuk pemula - Projek Regresi Linear Pertama Anda dalam Python](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "ML untuk pemula - Projek Regresi Linear Pertama Anda dalam Python") -> 🎥 Klik imej di atas untuk video pendek melalui latihan ini. +[![ML untuk pemula - Projek Regresi Linear Pertama anda dalam Python](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](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() ``` - ![scatterplot menunjukkan titik data tentang diabetes](../../../../2-Regression/1-Tools/images/scatterplot.png) -✅ 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. + ![scatterplot menunjukkan titik data berkaitan diabetes](../../../../translated_images/ms/scatterplot.ad8b356bcbb33be6.webp) + -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 visualisasi data](../../../../2-Regression/2-Data/images/data-visualization.png) +![Infografik visualisasi data](../../../../translated_images/ms/data-visualization.54e56dded7c1a804.webp) 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. [![ML untuk pemula - Cara Menganalisis dan Membersihkan Dataset](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](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. -[![ML untuk pemula - Cara Memvisualisasikan Data dengan Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML untuk pemula - Cara Memvisualisasikan Data dengan Matplotlib") +[![ML untuk pemula - Cara Visualisasikan Data dengan Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](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() ``` - ![Plot taburan menunjukkan hubungan harga dengan bulan](../../../../2-Regression/2-Data/images/scatterplot.png) + ![Scatterplot menunjukkan hubungan harga kepada bulan](../../../../translated_images/ms/scatterplot.b6868f44cbd2051c.webp) - 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") ``` - ![Carta bar menunjukkan hubungan harga dengan bulan](../../../../2-Regression/2-Data/images/barchart.png) + ![Carta bar menunjukkan hubungan harga kepada bulan](../../../../translated_images/ms/barchart.a833ea9194346d76.webp) + + 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) + ``` + + ![Scatterplot Seaborn menunjukkan hubungan harga kepada bulan](../../../../translated_images/ms/relplot.a03837d8f0329cec.webp) + + 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) + ``` + + ![Plot garis Seaborn menunjukkan hubungan harga kepada bulan](../../../../translated_images/ms/lineplot.f9034ba47b1e30ee.webp) + + 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") + ``` + + ![Carta bar Seaborn yang menunjukkan taburan harga setiap bulan](../../../../translated_images/ms/catplot.e73fc35fdf96242b.webp) + + 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") + ``` + + ![Heatmap Seaborn yang menunjukkan korelasi antara lajur berangka](../../../../translated_images/ms/heatmap.bd98dce43b404c57.webp) + + 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 -![Ringkasan pembelajaran pengukuhan dalam pembelajaran mesin dalam bentuk sketchnote](../../../../sketchnotes/ml-reinforcement.png) +![Ringkasan pengukuhan dalam pembelajaran mesin dalam sketchnote](../../../../translated_images/ms/ml-reinforcement.94024374d63348db.webp) > 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. [![Pengenalan kepada Pembelajaran Pengukuhan](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](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: -![Persekitaran Peter](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![Persekitaran Peter](../../../../translated_images/ms/environment.40ba3cb66256c93f.webp) -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: ![Jalan Rawak Peter](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) ## 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)`. -![Persekitaran Peter](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![Persekitaran Peter](../../../../translated_images/ms/env_init.04e8f26d2d60089e.webp) -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. + +![The great escape!](../../../../translated_images/ms/escape.18862db9930337e3.webp) + +> 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. + +a cartpole + ## 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 ![cartpole tidak seimbang](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) -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) ``` -![kemajuan mentah](../../../../8-Reinforcement/2-Gym/images/train_progress_raw.png) +![raw progress](../../../../translated_images/ms/train_progress_raw.2adfdf2daea09c59.webp) -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)) ``` -![kemajuan latihan](../../../../8-Reinforcement/2-Gym/images/train_progress_runav.png) +![training progress](../../../../translated_images/ms/train_progress_runav.c71694a8fa9ab359.webp) + +## 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: ![a balancing cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) @@ -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 ဖြင့် အကျဉ်းချုပ်](../../../../sketchnotes/ml-history.png) -> Sketchnote by [Tomomi Imura](https://www.twitter.com/girlie_mac) +![စက်သင်ယူခြင်း၏ သမိုင်းကို စကက်ချန်နိုးမှာ အကျဉ်းချုပ်](../../../../translated_images/my/ml-history.a1bdfd4ce1f464d9.webp) +> စကက်ချန်နိုးကို [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/) --- -[![ML for beginners - History of Machine Learning](https://img.youtube.com/vi/N6wxM4wZ7V0/0.jpg)](https://youtu.be/N6wxM4wZ7V0 "ML for beginners - History of Machine Learning") +[![စက်သင်ယူခြင်းအတွက် မိတ်ဆက် - စက်သင်ယူခြင်း၏ သမိုင်းကြောင်း](https://img.youtube.com/vi/N6wxM4wZ7V0/0.jpg)](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, an intelligent robot](../../../../1-Introduction/2-history-of-ML/images/shakey.jpg) - > Shakey in 1972 + ![Shakey, an intelligent robot](../../../../translated_images/my/shakey.4dc17819c447c05b.webp) + > 1972 ခုနှစ်တွင် Shakey --- -* Eliza သည် စောစောပိုင်း 'chatterbot' တစ်ခုဖြစ်ပြီး လူများနှင့် စကားပြောနိုင်သည်။ ၎င်းသည် primitive 'therapist' အဖြစ် လုပ်ဆောင်နိုင်သည်။ Eliza ကို NLP သင်ခန်းစာများတွင် ပိုမိုလေ့လာရမည်။ +* Eliza သည် ကျူးလွန်သူ 'စကားပြောစက်' တစ်ခုဖြစ်ပြီး လူများနှင့် စကားပြောဆက်ဆံခြင်းနှင့် အဓိက 'ကုထုံးပေးသူ' အဖြစ် ဆောင်ရွက်နိုင်သည်။ NLP သင်ခန်းစာများတွင် Eliza အကြောင်း များစွာ သိရှိသွားမည်။ - ![Eliza, a bot](../../../../1-Introduction/2-history-of-ML/images/eliza.png) - > Eliza ၏ version တစ်ခု + ![Eliza, a bot](../../../../translated_images/my/eliza.84397454cda9559b.webp) + > 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) ကဲ့သို့သော စာကြောင်းဖြန့်ဖြူးမှု ကို တိုးတက်စေမည့် စာကြောင်းခွဲတမ်းများ ဖန်တီးရန် အသုံးပြုခဲ့သည်။ [![blocks world with SHRDLU](https://img.youtube.com/vi/QAJz4YKUwqw/0.jpg)](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://img.youtube.com/vi/mTtDfKgLm54/0.jpg)](https://www.youtube.com/watch?v=mTtDfKgLm54 "နက်ရှိုင်းစိတ်ကွဲနည်းပညာ၏ သမိုင်းကြောင်း") +> 🎥 ဓာတ်ပုံအထက်ကို နှိပ်၍ ဗီဒီယိုကြည့်ရှုပါ: Yann LeCun က သင်ခန်းစာတွင် နက်ရှိုင်းစိတ်ကွဲနည်းပညာ၏ သမိုင်းကို ဆွေးနွေးခြင်း --- +## 🚀 စိန်ခေါ်မှု + +ဒီသမိုင်းဖြတ်သန်းဖြစ်ရပ်အချို့ကို စူးစမ်းပြီး နောက်ကွယ်က လူတွေအကြောင်းပို၍ လေ့လာပါ။ စိတ်ဝင်စားဖွယ်ကောင်းသော ဇာတ်ကောင်များ တွေ့ရှိရမည်ဖြစ်ပြီး သိပ္ပံရှာဖွေမှုသည် ယဉ်ကျေးမှုနယ်ပယ်ကအစရဲ႕ မရှိမျှပါ။ + +## [သင်ခန်းစာပြီးနောက် မေးခွန်းများ](https://ff-quizzes.netlify.app/en/ml/) + +--- +## ပြန်လည်ဆန်းစစ်ခြင်းနှင့် ကိုယ်တိုင်လေ့လာခြင်း + +ဒီ့အတွက် စုံစမ်းကြည့်ရန်နှင့် နားထောင်ရန် ရှိသည်။ + +[Amy Boyd က လူမှုပညာ၏ ဖွံ့ဖြိုးတိုးတက်မှုကို ဆွေးနွေးသော ပေါ့ဒ်ကတ်](http://runasradio.com/Shows/Show/739) + +[![Amy Boyd မှ လူမှုပညာ၏ သမိုင်းကြောင်း](https://img.youtube.com/vi/EJt3_bFYKss/0.jpg)](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 ဖြင့် စက့်မှတ်လေ့လာမှု ဖြေရှင်းနည်းများ တည်ဆောက်ခြင်း + +![စက့်မှတ်နိုတ်အဖြစ် တာဝန်ရှိသော AI ၏ စက့်မှတ်လေ့လာမှု အကျဉ်းချုပ်](../../../../translated_images/my/ml-fairness.ef296ebec6afc98a.webp) +> [Tomomi Imura](https://www.twitter.com/girlie_mac) မှ စက့်မှတ်နိုတ် -![စက်မှုသင်ယူမှုတွင် တာဝန်ရှိသော AI အကြောင်းအရာကို ရှင်းပြထားသော ပုံ](../../../../sketchnotes/ml-fairness.png) -> ပုံရေးဆွဲသူ - [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 မူဝါဒများ" သင်ခန်းစာကို လေ့လာပြီး အောက်ပါဗီဒီယိုကို ကြည့်ပါ။ +[![Microsoft's Approach to Responsible AI](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoft's Approach to Responsible AI") -[ဒီသင်ခန်းစာကို လေ့လာရန်](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) +> 🎥 အထက်ဖော်ပြပါ ဓာတ်ပုံကို နှိပ်ကာ မိုက်ကရိုဆော့ဖ့စ်၏ တာဝန်ရှိသော AI နည်းလမ်း ဗီဒီယိုကို ကြည့်ရှုပါ -[![Microsoft ရဲ့ တာဝန်ရှိသော AI မူဝါဒ](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoft ရဲ့ တာဝန်ရှိသော AI မူဝါဒ") +## တရားမျှတမှု -> 🎥 အထက်ပါပုံကို နှိပ်ပြီး Microsoft ရဲ့ တာဝန်ရှိသော AI မူဝါဒကို ကြည့်ပါ။ +AI စနစ်များသည် လူတိုင်းအားတရားမျှတစွာ ကိုင်တွယ်ရမည် ဖြစ်ပြီး၊ လူအုပ်စုဆွဲတူညီသူများအား မတူကွဲပြားစေရန် မဖြစ်သင့်ပါ။ ဥပမာအားဖြင့် AI စနစ်များသည် ဆေးကုသမှု၊ ကျပ်ငွေနှင့် လျှောက်လွှာ၊ အလုပ်အကိုင်ဆိုင်ရာ ညွှန်ကြားမှုများ ပေးသောအခါ၊ တစ်ဦးချင်းစီ၏ ရောဂါ၊ ဘဏ္ဍာရေး အခြေအနေ သို့မဟုတ် အလုပ်အရည်အချင်း ပုံစံတူသူများအား တူညီသော အကြံပေးချက်များ ပေးရမည် ဖြစ်သည်။ လူတိုင်းတွင် မတူညီသော အမြင်များနှင့် ယဉ်ကျေးမှုလက္ခဏာများ ပါရှိပြီး သူတို့၏ ဆုံးဖြတ်ချက်များ၌ ထိခိုက်သက်ရောက်မှု ရှိသည်။ ဤနေရာတွင် ကျွန်ုပ်တို့ အသုံးပြု သော ဒေတာများ၌ ကြည့်ရှုရမည့် ကွဲပြားချက်များ ပါဝင်နိုင်ပြီး အကြောင်းတရားမရှိဘဲ ဖြစ်ပေါ်နိုင်သည့် အထင်အမြင်များ ဖြစ်နိုင်ပါသည်။ ဤအထင်အမြင်များကို သတိထားမိရလွယ်ခြင်း ခက်ခဲတတ်ပါသည်။ -## တရားမျှတမှု +**"တရားမျှတမမှု"** ဟူသည် လူမျိုး၊ ကျားမ၊ အသက်အရွယ် သို့မဟုတ် မသန်စွမ်းမှုအခြေအနေ ကြောင့် ဖြစ်သည့် လူအုပ်စုအတွက် ဆိုးကျိုးများ သို့မှ "ထိခိုက်မှုများ" ကို ဆိုလိုသည်။ အဓိကတရားမျှတမှု ဆိုင်ရာ ထိခိုက်မှုများမှာ အောက်ပါအတိုင်း 分類 လုပ်နိုင်သည်။ + +- **ခွဲဝေပေးမှု**၊ ဥပမာတစ်ခုတွင် ကျားမ သို့လူမျိုးတစ်ခုကို အခြားတစ်ခုထက် ဦးစားပေးခြင်း။ +- **ဝန်ဆောင်မှု အရည်အသွေး**။ အထူးအခြေအနေတစ်ခုအတွက် ဒေတာလေ့လာသော်လည်း အမှန်တကယ် ပိုမိုရှုပ်ထွေးမှုရှိသောကြောင့် ဝန်ဆောင်မှု ချို့ယွင်းမှု ဖြစ်ပေါ်ခြင်း။ ဥပမာအားဖြင့် အသားအရည် အနက်ရောင် လူများကို ခြေရာခံ၍ မရသော လက်ဆပ်မှုတူဆပ်ကပ်များ။ [Reference](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773) +- **အသိအမှတ်ပြုချိန်၌ ရိုက်ခတ်ခြင်း**။ တရားမျှတမူ ခံစားရစေသော နှိုးစက်မှုအနေဖြင့် တစ်စုံတစ်ခု သို့မဟုတ် လူတစ်ဦးကို မမှန်ကန်သောနည်းဖြင့် သတ်မှတ်ခြင်း။ ဥပမာ၊ သရုပ်ပုံ မှတ်တမ်း စနစ်သည် အနက်ရောင် အရောင်ရှိ လူများ၏ ဓာတ်ပုံများကို မိမိမိ မေးကားလိုအာဏာရသည့် လူကြီးမင်းများအဖြစ် မှတ်သားခြင်း။ +- **မတူညီသော ကိုယ်စားပြုမှု**။ အသွင်အပြင် ဖြင့် တစ်စုတစ်စည်းကို အမြဲမမြင်ရခြင်း၊ အဲဒီဝန်ဆောင်မှု သို့မဟုတ် လုပ်ငန်းများသည် ထိုအကွာအဝေးကို ထိခိုက်စေခြင်း။ +- **ရိုးရိုး ဖော်ပြချက် သဘောထား**။ သတ်မှတ်ထားသော အုပ်စုတစ်စုအား အထူးသတ်မှတ်ထားသော အင်္ဂါရပ်များစွာနှင့် ဆက်နွယ်စေခြင်း။ ဥပမာ၊ အင်္ဂလိပ်နှင့် တူရကီ ဘာသာပြန်စနစ်တွင် ကျားမ နှင့် 女 性 အကြောင်း တရားမျှတ မလိုက်ဖက်မှု ရှိခြင်း။ + +![တူရကီဘာသာသို့ ဘာသာပြန်ခြင်း](../../../../translated_images/my/gender-bias-translate-en-tr.f185fd8822c2d437.webp) +> တူရကီဘာသာသို့ ဘာသာပြန်ခြင်း + +![အင်္ဂလိပ်ဘာသာ ပြန်ခြင်း](../../../../translated_images/my/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) +> အင်္ဂလိပ်ဘာသာ ပြန်ခြင်း + +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 ထုတ်ကုန်များကို ဖန်တီးပေးနိုင်သော မျိုးဆက်အသစ် ဖြစ်လာသည်။ -![အင်္ဂလိပ်မှ တူရကီဘာသာပြန်](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) -> အင်္ဂလိပ်မှ တူရကီဘာသာပြန် +> [🎥 ဤနေရာ၌ ဗီဒီယိုကို နှိပ်ရန်: AI တွင် ပါဝင်ဆောင်ရွက်မှု](https://www.microsoft.com/videoplayer/embed/RE4vl9v) -![တူရကီမှ အင်္ဂလိပ်ပြန်](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) -> တူရကီမှ အင်္ဂလိပ်ပြန် +### လုံခြုံမှုနှင့် လျှို့ဝှက်ရေး -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) +[![မျက်နှာဖုံးစနစ်ကတဆင့် စ သည် မျက်နှာဖုံး ငြိမ်းချမ်းရေး လုံခြုံမှု သတိပေးချက်](../../../../translated_images/my/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft's Approach to Responsible AI") -### လုံခြုံမှုနှင့် ကိုယ်ရေးအချက်အလက် +> 🎥 အထက်ပါ ဓာတ်ပုံကို နှိပ်ကာ မျက်နှာဖုံး စနစ်ကတဆင့် စ နေသည့် သတိပေးချက် ဗီဒီယိုကို ကြည့်ရှုပါ -AI စနစ်တွေဟာ လုံခြုံပြီး လူတွေရဲ့ ကိုယ်ရေးအချက်အလက်ကို လေးစားရမယ်။ AI စနစ်တွေကို ယုံကြည်မှုရှိဖို့ လူတွေရဲ့ ကိုယ်ရေးအချက်အလက် သို့မဟုတ် ဘဝကို အန္တရာယ်မဖြစ်စေရမယ်။ +နောက်ဆုံးတွင် ကျွန်တော်တို့ မျိုးဆက်အတွက် အကြီးမားဆုံး မေးခွန်းများထဲမှာ၊ ကွန်ပျူတာများကို လူတများအား တာဝန်ရှိစွာပြီး မြင်သာစေရန် နည်းလမ်းကို ဘယ်လိုသေချာစေရန်နှင့် ကွန်ပျူတာ ဒီဇိုင်နာတွေကလူတိုင်းအား တာဝန်ရှိစွာ ကောင်းကင်ဆောင်ရွက်ခံရမည်ကို ဘယ်လို သေချာအောင် လုပ်မလဲ ဆိုတာ ဖြစ်ပါတယ်။ -> [🎥 ဗီဒီယိုကြည့်ရန်](https://www.microsoft.com/videoplayer/embed/RE4voJF) +## သက်ရောက်မှု ချေးရန် လေ့လာခြင်း -### တာဝန်ရှိမှု +စက့်မှတ်လေ့လာမှု မော်ဒယ်ကို သင်ကြားခိုင်းရန် မပြုမီ AI စနစ်၏ ရည်ရွယ်ချက်၊ အသုံးချမည့် နေရာ၊ ၎င်းနှင့် ဆက်သွယ်မည့် လူများအား နားလည်ရန် သက်ရောက်မှု လေ့လာမှု ပြုလုပ်ခြင်း လိုအပ်သည်။ ဤအချက်များသည် စနစ်ကို စစ်ဆေးသူများ သို့မဟုတ် စမ်းသပ်သူများအား သတိထားရမည့် အချက်များနှင့် ဖြစ်ပေါ်နိုင်သော အန္တရာယ်များအပေါ် ဆုံးဖြတ်ချက်ပြုရမှုအတွက် အထောက်အကူဖြစ်သည်။ -AI စနစ်တွေကို ဒီဇိုင်းဆွဲပြီး တည်ဆောက်သူတွေဟာ သူတို့ရဲ့ စနစ်တွေ ဘယ်လိုအလုပ်လုပ်တယ်ဆိုတာအတွက် တာဝန်ရှိရမယ်။ +အောက်ပါအချက်များသည် သက်ရောက်မှု လေ့လာမှု ပြုလုပ်သည့်အခါ အာရုံစိုက်ရမည့် နေရာများ ဖြစ်သည်။ -[![AI နဲ့ မျက်နှာသိရှိမှုနည်းပညာရဲ့ အန္တရာယ်](../../../../1-Introduction/3-fairness/images/accountability.png)](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 တို့မှ မူဝါဒများကို လက်တွေ့အသုံးချခြင်း -[![Responsible AI Toolbox: တာဝန်ရှိသော AI ဖန်တီးရန်အတွက် အခမဲ့ framework](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: တာဝန်ရှိသော AI ဖန်တီးရန်အတွက် အခမဲ့ framework") +[![Responsible AI Toolbox: An open-source framework for building responsible AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") -> 🎥 အထက်ပါပုံကို နှိပ်ပြီး ဗီဒီယိုကြည့်ပါ: 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 မော်ဒယ်များ စတင်ခြင်း -![Regression များ၏ အကျဉ်းချုပ်ကို Sketchnote](../../../../sketchnotes/ml-regression.png) +![Sketchnote မှ regressions အကျဉ်းချုပ်](../../../../translated_images/my/ml-regression.4e4f70e3b3ed446e.webp) -> 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 +## ထည့်သွင်းခြင်းများ နှင့် ပျိုးထောင်မှုများ -[![ML for beginners - Machine Learning Models တည်ဆောက်ရန် Tools များကို ပြင်ဆင်ခြင်း](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML for beginners - Machine Learning Models တည်ဆောက်ရန် Tools များကို ပြင်ဆင်ခြင်း") +[![ML စတင်သင်ယူသူများအတွက် - မောင်းနှင်ရန်အတွက် လိုအပ်သောကိရိယာများ စတင်တပ်ဆင်ခြင်း](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](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 ကို သက်သာစွာ သဘောပေါက်စေပါ။ > - > [![Visual Studio Code မှာ Python ကို Setup လုပ်ခြင်း](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Visual Studio Code မှာ Python ကို Setup လုပ်ခြင်း") + > [![Visual Studio Code ဖြင့် Python ပြင်ဆင်ခြင်း](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](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 သည် အပြန်အလှန်လုပ်ဆောင်နိုင်သည့် ပတ်ဝန်းကျင်တစ်ခုဖြစ်ပြီး၊ ဖန်တီးသူအနေဖြင့် ကုဒ်ရေးခြင်း၊ မှတ်ချက်ထည့်ခြင်းနှင့် ရေးသားမှုများ ဖော်ပြနိုင်ခြင်းကြောင့် သုတေသန သို့မဟုတ် စမ်းသပ်မှုအခြေပြု စီမံကိန်းများတွင် အထောက်အကူဖြစ်ပေးသည်။ -[![ML for beginners - Jupyter Notebooks ကို Setup လုပ်ပြီး Regression Models တည်ဆောက်ခြင်း](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML for beginners - Jupyter Notebooks ကို Setup လုပ်ပြီး Regression Models တည်ဆောက်ခြင်း") +[![ML စတင်သင်ယူသူများ - Jupyter Notebooks တပ်ဆင်ပြီး regression မော်ဒယ်များ စတင်ဆောက်ရန်](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](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 ``` -![VS Code မှာ Notebook ဖွင့်ထားပုံ](../../../../2-Regression/1-Tools/images/notebook.jpg) +![VS Code မှာ notebook ဖွင့်ထားသည်](../../../../translated_images/my/notebook.4a3ee31f396b8832.webp) -သင့် 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) မှ အကြံဉာဏ်ယူထားသည်။ -[![ML for beginners - Python မှာ ပထမဆုံး Linear Regression Project](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "ML for beginners - Python မှာ ပထမဆုံး Linear Regression Project") -> 🎥 အထက်ပါပုံကို Click လုပ်ပြီး ဒီအလုပ်ကို လုပ်ဆောင်ပုံကို ကြည့်ပါ။ +[![ML စတင်သင်ယူသူ - Python ဖြင့် ပထမဆုံး လိုင်းနေရေး Regression စီမံကိန်း](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](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() + ``` + + ![diabetes ပတ်ဝန်းကျင်ရှိ ဒေတာဟာ ပလော့ဖ်တစ်ခု](../../../../translated_images/my/scatterplot.ad8b356bcbb33be6.webp) ---- -## 🚀စိန်ခေါ်မှု -ဒီ 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](../../../../2-Regression/2-Data/images/data-visualization.png) +![ဒေတာ မှတ်ပုံတင်ပြသမှု အချက်အလက်ပုံတင်](../../../../translated_images/my/data-visualization.54e56dded7c1a804.webp) -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' နှင့် အခြားအဖြစ်များပေါင်းစပ်သည်။ ဒေတာသည် တကယ်လို့ စည်းမျဉ်းမရှိသော အခြေအနေတစ်ခုဖြစ်သည်။ [![ML for beginners - How to Analyze and Clean a Dataset](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML for beginners - How to Analyze and Clean a Dataset") -> 🎥 အထက်ပါပုံကို နှိပ်ပြီး ဒီသင်ခန်းစာအတွက် ဒေတာကို ပြင်ဆင်နည်းကို ကြည့်ပါ။ +> 🎥 ဤရုပ်ပုံကို နှိပ်ပြီး ဤသင်ခန်းစာအတွက် ဒေတာပြင်ဆင်ရေးလုပ်ငန်းစဉ်ကို ရှင်းလင်းတတ်၏ဗီဒီယိုတိုကိုကြည့်ပါ။ -တကယ်တော့ ML 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 များကို ဖန်တီးခြင်းဖြင့် ဒေတာ၏ ဆက်နွယ်မှုများနှင့် ရှာဖွေရန်ခက်ခဲသော အပိုင်းများကို ရှင်းလင်းဖော်ပြနိုင်သည်။ +ဒေတာ သိပ္ပံပညာရှင်၏ တာဝန်အချိုးအစားတစ်ခုမှာ အလုပ်လုပ်နေသည့် ဒေတာ၏ အရည်အသွေးနှင့် သဘာဝကို ပြသခြင်းဖြစ်ပြီး၊ ယင်းအတွက် ထူးခြားသောမှတ်ပုံတင်ပြသမှုများ၊ ဇယားများ၊ ဝိုင်းမြင်ကွင်းများ ဖန်တီးသည်။ ယင်းဖြင့် မျှမျှတတမရှာရသော ဆက်နွယ်မှု နှင့် အခွာအဝေးများကို ရုပ်မြင်ပြီး သတိမထားမိရသော တန်ဖိုးများကိုအလွယ်တကူ ဆွဲထုတ်နိုင်သည်။ [![ML for beginners - How to Visualize Data with Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML for beginners - How to Visualize Data with Matplotlib") -> 🎥 အထက်ပါပုံကို နှိပ်ပြီး ဒီသင်ခန်းစာအတွက် ဒေတာကို ရှင်းလင်းဖော်ပြနည်းကို ကြည့်ပါ။ +> 🎥 ဤရုပ်ပုံကို နှိပ်ပြီး ဤသင်ခန်းစာအတွက် ဒေတာမှတ်ပုံတင်ပြသမှု ဗီဒီယိုတိုကို ကြည့်ပါ။ -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() ``` - ![Scatterplot showing price to month relationship](../../../../2-Regression/2-Data/images/scatterplot.png) + ![ဈေးနှုန်းနှင့် လပိုင်းဆက်နွယ်မှုကို ပြသသည့် scatterplot](../../../../translated_images/my/scatterplot.b6868f44cbd2051c.webp) - ဒီ 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") ``` - ![Bar chart showing price to month relationship](../../../../2-Regression/2-Data/images/barchart.png) + ![ဈေးနှုန်းနှင့် လပိုင်းဆက်နွယ်မှုကို ပြသသည့် ဘားဇယား](../../../../translated_images/my/barchart.a833ea9194346d76.webp) + + ဤသည်ဟာ ပိုအသုံးဝင်သော ဒေတာမှတ်ပုံတင်ပြသမှု တစ်ခုဖြစ်သည်။ 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) + ``` + + ![Seaborn scatterplot showing price to month relationship](../../../../translated_images/my/relplot.a03837d8f0329cec.webp) + + ကော်လံအမည်များ နှင့် dataframe ကို ဖြတ်သွားပြီး Seaborn သည် axis အမည်များကို သင့်အတွက် ဖြည့်စည်းပေးသည်။ + +2. `kind="line"` ကို ပေးလိုက်၍ လိုင်းပုံဖော်လည်းလုပ်နိုင်သည်။ Seaborn သည် လိုင်းပေါ်တွင် ယုံကြည်မှုအပိုင်းအခြားများကို ခြုံဆိုင်ခြားပေးသည်။ + + ```python + sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins) + ``` + + ![Seaborn line plot showing price to month relationship](../../../../translated_images/my/lineplot.f9034ba47b1e30ee.webp) + + ဤဒေတာသည် ဆူညံမှုများပါဝင်သဖြင့် လိုင်းပုံရိပ်သည် ထိပ်တန်းရှင်းလင်းမှုမရှိသဘောဖြစ်သည် - သို့သော် 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") + ``` + + ![လတိုင်း စျေးနှုန်း ဖြန့်ဖြူးမှုကို ပြသသော Seaborn ဘားချတ်](../../../../translated_images/my/catplot.e73fc35fdf96242b.webp) + + ဒါက 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") + ``` + + ![နံပါတ်ကော်လံများအကြား သက်ဆိုင်မှုများကို ပြသသော Seaborn အပူမြေပုံ](../../../../translated_images/my/heatmap.bd98dce43b404c57.webp) + + `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 ဖြင့် အချိန်တန်းစီးရီး ခန့်မှန်းခြေ -ယခင်သင်ခန်းစာတွင်၊ အချိန်စီးရီးခန့်မှန်းခြေကို အနည်းငယ်လေ့လာပြီး အချိန်ကာလအတွင်း လျှပ်စစ်သုံးစွဲမှုအတက်အကျကို ဖော်ပြသည့် ဒေတာစဉ်ကို တင်သွင်းခဲ့ပါသည်။ +ယခင်သင်ခန်းစာတွင် သင်သည် အချိန်တန်းစီးရီး ခန့်မှန်းခြေ အကြောင်း နည်းနည်း သိရှိခဲ့ပြီး အချိန်တစ်ရက်အတွင်း လျှပ်စစ်ဝန်ဆောင်မှု အပြောင်းအလဲများ ဖော်ပြထားသော ဒေတာစနစ်ကို ဖတ်ယူခဲ့သည်။ -[![ARIMA အကြောင်းမိတ်ဆက်](https://img.youtube.com/vi/IUSk-YDau10/0.jpg)](https://youtu.be/IUSk-YDau10 "ARIMA အကြောင်းမိတ်ဆက်") +[![ARIMA အကြောင်းအနိမ့်ဖော်ပြချက်](https://img.youtube.com/vi/IUSk-YDau10/0.jpg)](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 and testing data](../../../../7-TimeSeries/2-ARIMA/images/train-test.png) + ![training and testing data](../../../../translated_images/my/train-test.8928d14e5b91fc94.webp) + + ထို့ကြောင့် 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](../../../../7-TimeSeries/2-ARIMA/images/original.png) + ![original](../../../../translated_images/my/original.b2b15efe0ce92b87.webp) - > Original ဒေတာ + > မူလ ဒေတာ - ![scaled](../../../../7-TimeSeries/2-ARIMA/images/scaled.png) + ![scaled](../../../../translated_images/my/scaled.e35258ca5cd3d43f.webp) - > 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) ကို အသုံးပြုကာ မော်ဒယ်၏ တိကျမှုကို စစ်ဆေးပါ။ -> **🧮 သင်္ချာကို ပြပါ** -> -> ![MAPE](../../../../7-TimeSeries/2-ARIMA/images/mape.png) + နာရီစဉ် ဒေတာများ၏ ခန့်မှန်းချက်များကို တကယ့် စွမ်းအင်အသုံးအနှုန်းနှင့် နှိုင်းယှဉ်ပါ။ ဘယ်လောက်တိကျသနည်း။ + +### မော်ဒယ်တိကျမှု စစ်ဆေးခြင်း + +သင်၏ မော်ဒယ်၏ တိကျမှုကို ခန့်မှန်းချက် အားလုံးတွင် သူ့ရဲ့ mean absolute percentage error (MAPE) ဖြင့် စမ်းသပ်ပါ။ + +> **🧮 ဂဏန်းသိပ္ပံကို ပြပါ** > -> [MAPE](https://www.linkedin.com/pulse/what-mape-mad-msd-time-series-allameh-statistics/) ကို အထက်ပါဖော်ပြထားသော ဖော်မြူလာအတိုင်း အချိုးအစားအဖြစ် သတ်မှတ်ပြီး ခန့်မှန်းချက်တိကျမှုကို ပြရန် အသုံးပြုသည်။ အမှန်တကယ်ဖြစ်ရပ်နှင့် ခန့်မှန်းချက်အကြားကွာဟချက်ကို အမှန်တကယ်ဖြစ်ရပ်ဖြင့် ခွဲခြားသည်။ +> ![MAPE](../../../../translated_images/my/mape.fd87bbaf4d346846.webp) > -> "ဤတွက်ချက်မှုတွင် အပြည့်အဝတန်ဖိုးကို အချိန်အပိုင်းအခြားတိုင်းတွင် ခန့်မှန်းထားသော အချက်အလက်များအတွက် စုစုပေါင်းတွက်ချက်ပြီး ခန့်မှန်းထားသော အချက်အလက်အရေအတွက် 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() ``` - ![အချိန်စီးရီးမော်ဒယ်တစ်ခု](../../../../7-TimeSeries/2-ARIMA/images/accuracy.png) + ![a time series model](../../../../translated_images/my/accuracy.2c47fe1bf15f44b3.webp) -🏆 တိကျမှုကောင်းမွန်သော မော်ဒယ်ကို ဖော်ပြထားသည့် အလွန်ကောင်းမွန်သော ပုံတစ်ပုံ။ အလုပ်ကောင်းပါတယ်! +🏆 တိကျမှုကောင်းတဲ့ မော်ဒယ်ကို ဖော်ပြသည့် အလွန်လှပတဲ့ ပုံတစ်ပုံ ပါ။ ကောင်းစွာဆောင်ရွက်ပြီးပါပြီ။ --- -## 🚀စိန်ခေါ်မှု +## 🚀 စိန်ခေါ်မှု -အချိန်စီးရီးမော်ဒယ်တစ်ခု၏ တိကျမှုကို စမ်းသပ်နိုင်သော နည်းလမ်းများကို လေ့လာပါ။ ဒီသင်ခန်းစာတွင် 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-သင်ယူမှု မိတ်ဆက်ခြင်း -![Machine Learning တွင် reinforcement အကျဉ်းချုပ်ကို sketchnote](../../../../sketchnotes/ml-reinforcement.png) -> Sketchnote by [Tomomi Imura](https://www.twitter.com/girlie_mac) +![စက်ရုပ်သင်ယူမှုတွင် ပြန်လည်မြှင့်တင်ခြင်းအကျဆုံးအကျဉ်းတင်ဆွဲကြောင်း](../../../../translated_images/my/ml-reinforcement.94024374d63348db.webp) +> 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 ရရှိရန် ဂိမ်းကို ကစားပုံကို သင်ယူနိုင်သည်။ +ပြန်လည်မြှင့်တင်သင်ယူမှုနှင့် စမ်းသပ်ကစားနည်း (ဂိမ်း) ကို အသုံးပြု၍ ဂိမ်းကို ကစားရန် သင်ယူနိုင်ကာ အသက်ကို ကယ်တင်ခြင်း၊ အများဆုံးဆုလာဘ်ရရှိစေရန် နည်းလမ်းရှာနိုင်သည်။ -[![Reinforcement Learning မိတ်ဆက်](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) +[![ပြန်လည်မြှင့်တင်သင်ယူမှု မိတ်ဆက်](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](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 `အမြင့်` အရွယ်အစား စတုရန်းဝင်းထားသော ဘားဒ်အဖြစ်ယူလိုက်ပါ။ -![Peter ၏ Environment](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![Peter ၏ ပတ်ဝန်းကျင်](../../../../translated_images/my/environment.40ba3cb66256c93f.webp) -ဒီ 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 အတွင်း လမ်းလျှောက်မှု အနေအထားကိုလည်း ကြည့်ရှုနိုင်သည်။ ![Peter ၏ Random Walk](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) -## 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)`။ -![Peter ၏ Environment](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![Peter ၏ ပတ်ဝန်းကျင်](../../../../translated_images/my/env_init.04e8f26d2d60089e.webp) -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 +# အပြီးအစီး မှတ်စု - အမှန်တကယ်ကမ္ဘာကို ရှု့ရာတွင် စက်နှင့် သင်ယူမှု -![အမှန်တကယ်သောကမ္ဘာတွင် Machine Learning အကျဉ်းချုပ်ကို Sketchnote အနေနဲ့](../../../../sketchnotes/ml-realworld.png) -> 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 တွေကို အမှန်တကယ်ဘယ်လိုအသုံးချနိုင်မလဲ" ဆိုပြီး စဉ်းစားနေရနိုင်ပါတယ်။ +![အမှန်တကယ်ကမ္ဘာကို ရှု့ရာတွင် စက်နှင့် သင်ယူမှု၏ အကျဉ်းချုပ် စကက်ချ်မှတ်သားချက်](../../../../translated_images/my/ml-realworld.26ee274671615577.webp) +> စကက်ချ်မှတ်သားချက်ကို [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 को साथमा मेसिन लर्निङ समाधान निर्माण गर्नुहोस् - -![मेसिन लर्निङमा जिम्मेवार AI को सारांश स्केच नोटमा](../../../../sketchnotes/ml-fairness.png) -> स्केच नोट [Tomomi Imura](https://www.twitter.com/girlie_mac) द्वारा +# जिम्मेवार AI सँग मेशिन लर्निङ समाधानहरू निर्माण गर्दै + +![मेशिन लर्निङमा जिम्मेवार AI को सारांश स्केचनोटमा](../../../../translated_images/ne/ml-fairness.ef296ebec6afc98a.webp) +> स्केचनोट द्वारा [टोमोमी इमुरा](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) पछ्याउनुहोस्। -[![Microsoft को जिम्मेवार AI को दृष्टिकोण](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoft को जिम्मेवार AI को दृष्टिकोण") +[![Microsoftको जिम्मेवार AI दृष्टिकोण](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](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) +- **अपमान**। अन्यायपूर्ण रूपमा केही वा कसैलाई आलोचना र लेबल लगाउनु। उदाहरणका लागि, छवि लेबलिङ प्रविधिले कालो छालाका मानिसहरूलाई गोरिल्लाका रूपमा गलत लेबल गरेको थियो। +- **अधिक वा कम प्रतिनिधित्व**। विचार यो हो कि कुनै समूह विशेष पेशामा देखिन्न, र जसले यस्तो प्रवर्द्धन गर्छ त्यसले हानि पुर्याउँछ। +- **स्टिरियोटाइपिङ**। कुनै समूहलाई पूर्वनिर्धारित विशेषतासँग जोड्नु। उदाहरणका लागि, अंग्रेजी र टर्किश भाषाको अनुवाद प्रणालीले लिंगसँग सम्बन्धित स्टिरियोटाइपिकल शब्दहरूका कारण गलत अनुवाद गर्न सक्छ। -![टर्किशमा अनुवाद](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) +![टर्किशमा अनुवाद](../../../../translated_images/ne/gender-bias-translate-en-tr.f185fd8822c2d437.webp) > टर्किशमा अनुवाद -![अंग्रेजीमा पुन: अनुवाद](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) -> अंग्रेजीमा पुन: अनुवाद +![फेरि अंग्रेजीमा अनुवाद](../../../../translated_images/ne/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) +> फेरि अंग्रेजीमा अनुवाद -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 प्रणालीले व्यक्तिहरू वा समाजलाई कसरी प्रभाव पार्छ भन्ने कुराको लागि जिम्मेवार हुनुपर्छ। +[![अनुहार पहिचानमार्फत द्रुत निगरानीमा अग्रणी AI अनुसन्धानकर्ताको चेतावनी](../../../../translated_images/ne/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoftको जिम्मेवार AI दृष्टिकोण") -[![प्रमुख AI अनुसन्धानकर्ताले अनुहार पहिचान मार्फत व्यापक निगरानीको चेतावनी दिन्छन्](../../../../1-Introduction/3-fairness/images/accountability.png)](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 द्वारा -[![Responsible AI Toolbox: जिम्मेवार AI निर्माणका लागि खुला स्रोत फ्रेमवर्क](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: जिम्मेवार AI निर्माणका लागि खुला स्रोत फ्रेमवर्क") +[![Responsible AI Toolbox: An open-source framework for building responsible AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") -> 🎥 माथिको चित्रमा क्लिक गर्नुहोस् भिडियोका लागि: 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-लर्नसँग शुरू गर्नुहोस् -![Regression को स्केच नोटमा सारांश](../../../../sketchnotes/ml-regression.png) +![स्केचनोटमा रिग्रेसनहरूको सारांश](../../../../translated_images/ne/ml-regression.4e4f70e3b3ed446e.webp) -> स्केच नोट [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://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "मशीन लर्निङको लागि सुरुवात - मशीन लर्निङ मोडेल निर्माण गर्न उपकरण सेटअप गर्नुहोस्") +[![शुरुआतीहरूका लागि ML - मेसिन लर्निङ मोडेलहरू बनाउनका लागि उपकरणहरू तयार पार्नुहोस्](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](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) को संग्रहमार्फत पाइथनसँग परिचित बन्नुहोस्। > - > [![Visual Studio Code को साथ Python सेटअप गर्नुहोस्](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Visual Studio Code को साथ Python सेटअप गर्नुहोस्") + > [![Visual Studio Code सँग पाइथन सेटअप गर्नुहोस्](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](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 एक अन्तरक्रियात्मक वातावरण हो जसले विकासकर्तालाई कोड लेख्न र कोडको वरिपरि नोटहरू र दस्तावेजहरू थप्न अनुमति दिन्छ, जुन प्रयोगात्मक वा अनुसन्धान-उन्मुख परियोजनाहरूको लागि धेरै उपयोगी हुन्छ। +नोटबुकहरू अन्तरक्रियात्मक वातावरण हुन् जसले विकासकर्ता कोड लेख्न र नोटहरू, डकुमेन्टेशन थप्न मद्दत गर्छ जुन प्रयोगात्मक वा अनुसन्धान सम्बन्धी परियोजनाहरूको लागि धेरै उपयोगी हुन्छ। -[![मशीन लर्निङको लागि सुरुवात - Regression मोडेल निर्माण गर्न Jupyter Notebooks सेटअप गर्नुहोस्](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "मशीन लर्निङको लागि सुरुवात - Regression मोडेल निर्माण गर्न Jupyter Notebooks सेटअप गर्नुहोस्") +[![शुरुआतीहरूका लागि ML - रिग्रेसन मोडेलहरू बनाउन ज्युपिटर नोटबुकहरू सेटअप गर्नुहोस्](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](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 ``` -![VS Code मा notebook खुला भएको](../../../../2-Regression/1-Tools/images/notebook.jpg) +![VS Code मा खोलिएको नोटबुक](../../../../translated_images/ne/notebook.4a3ee31f396b8832.webp) -तपाईं आफ्नो कोडलाई टिप्पणीहरूद्वारा स्व-डकुमेन्ट गर्न सक्नुहुन्छ। +तपाईं आफ्नो कोडसँग टिप्पणीहरू मिसाएर नोटबुकलाई स्वयं-डकुमेन्ट गर्न सक्नुहुन्छ। -✅ एक मिनेट सोच्नुहोस् कि वेब विकासकर्ताको काम गर्ने वातावरण डेटा वैज्ञानिकको वातावरणसँग कति फरक छ। +✅ एक मिनेट सोच्नुहोस् कि वेब विकासकर्ताको कार्य वातावरण र डेटा वैज्ञानिकको कार्य वातावरण कत्तिको फरक हुन्छ। -## 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)बाट प्रेरित छ। -[![मशीन लर्निङको लागि सुरुवात - Python मा तपाईंको पहिलो Linear Regression परियोजना](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "मशीन लर्निङको लागि सुरुवात - Python मा तपाईंको पहिलो Linear Regression परियोजना") -> 🎥 माथिको छवि क्लिक गर्नुहोस्: यो अभ्यासको लागि छोटो भिडियो। +[![शुरुआतीहरूका लागि ML - पाइथनमा तपाईंको पहिलो रेखीय रिग्रेसन परियोजना](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](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() ``` - ![मधुमेह सम्बन्धी datapoints देखाउने scatterplot](../../../../2-Regression/1-Tools/images/scatterplot.png) -✅ यहाँ के भइरहेको छ भनेर अलिकति सोच्नुहोस्। धेरै साना डाटाका बिन्दुहरूमा एउटा सीधा रेखा चलिरहेको छ, तर यो वास्तवमा के गरिरहेको छ? के तपाईं देख्न सक्नुहुन्छ कि नयाँ, नदेखिएको डाटा बिन्दु प्लटको y अक्षसँग सम्बन्धित कहाँ फिट हुनुपर्छ भनेर भविष्यवाणी गर्न यो रेखा कसरी प्रयोग गर्न सकिन्छ? यस मोडेलको व्यावहारिक उपयोगलाई शब्दमा व्यक्त गर्न प्रयास गर्नुहोस्। + ![डाइबिटीजलाई घेरिएको डाटापोइन्टहरू देखाउने स्क्याटरप्लट](../../../../translated_images/ne/scatterplot.ad8b356bcbb33be6.webp) + -बधाई छ, तपाईंले आफ्नो पहिलो रेखीय प्रतिगमन मोडेल निर्माण गर्नुभयो, यसबाट भविष्यवाणी गर्नुभयो, र प्लटमा प्रदर्शन गर्नुभयो! + ✅ यहाँ के हुँदैछ भनेर अलिकति सोच्नुहोस्। सिधा रेखा धेरै साना डाटा पोइन्टहरूको माथि जान्छ, तर यो ठीक के गर्दैछ? तपाईले देख्न सक्नुहुन्छ कि यो रेखा प्रयोग गरेर नयाँ, नदेखिएको डाटा पोइन्ट प्लटको 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 मोडेल बनाउने: डाटा तयार पार्नुहोस् र दृश्य बनाउनुहोस् -![डेटा दृश्यात्मकता इन्फोग्राफिक](../../../../2-Regression/2-Data/images/data-visualization.png) +![डेटा दृश्याङ्कन इन्फोग्राफिक](../../../../translated_images/ne/data-visualization.54e56dded7c1a804.webp) -इन्फोग्राफिक: [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' र अन्य मानहरू बीच मिश्रित छ। वास्तवमा, डाटा अलिकति अराजक छ। -[![ML for beginners - डेटासेट विश्लेषण र सफा गर्ने](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML for beginners - डेटासेट विश्लेषण र सफा गर्ने") +[![ML for beginners - How to Analyze and Clean a Dataset](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML for beginners - How to Analyze and Clean a Dataset") -> 🎥 माथिको छविमा क्लिक गरेर यस पाठका लागि डेटा तयार गर्ने छोटो भिडियो हेर्नुहोस्। +> 🎥 यस पाठको लागि डाटा तयार गर्ने काम गरी रहेको छोटो भिडियो हेर्न माथिको तस्वीरमा क्लिक गर्नुहोस्। -सामान्यतया, तपाईंलाई पूर्ण रूपमा तयार डेटासेट प्राप्त हुँदैन, जसलाई सीधा ML मोडेल बनाउन प्रयोग गर्न सकिन्छ। यस पाठमा, तपाईंले कच्चा डेटासेटलाई मानक Python पुस्तकालयहरू प्रयोग गरेर कसरी तयार गर्ने सिक्नुहुनेछ। साथै, डेटा दृश्यात्मक बनाउन विभिन्न प्रविधिहरू पनि सिक्नुहुनेछ। +वास्तवमा, पूर्ण रूपमा प्रयोग गर्न तयार गरिएका डेटासेट कडाइले पाउनु सामान्य कुरा होइन। यस पाठमा, तपाईं सामान्य 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 धेरै साना कद्दूहरू हुन्छन्, जबकि ठूला कद्दूहरूले धेरै ठाउँ लिन्छन्। +✅ के तपाईंले नोट गर्नुभयो कि आधा बसलमा बेचिएका कद्दुहरू धेरै महँगो छन्? के तपाईं कारण थाहा पाउन सक्नुहुन्छ? संकेत: सानो कद्दुहरू ठूलो भन्दा धेरै महँगो हुन सक्छ, सम्भवतः किनभने ठूलो खाली पाई कद्दुले एक बसलमा धेरै कम संख्यामा कद्दुहरू समेट्छ, सानो धेरै हुन्छ। -## दृश्यात्मकता रणनीतिहरू +## दृश्यांकन रणनीतिहरू -डेटा वैज्ञानिकको भूमिकाको एक हिस्सा भनेको उनीहरूले काम गरिरहेको डेटाको गुणस्तर र प्रकृति प्रदर्शन गर्नु हो। यसका लागि, उनीहरूले प्रायः रोचक दृश्यात्मकता, जस्तै प्लट, ग्राफ, र चार्टहरू सिर्जना गर्छन्, जसले डेटाका विभिन्न पक्षहरू देखाउँछ। यसरी, उनीहरूले दृश्यात्मक रूपमा सम्बन्ध र खाडलहरू देखाउन सक्छन्, जुन अन्यथा पत्ता लगाउन गाह्रो हुन्छ। +डाटा वैज्ञानिकको भूमिकाको एक भाग भनेको उनीहरूले काम गरिरहेका डाटाको गुणस्तर र प्रकृति प्रदर्शन गर्नु हो। यसका लागि, उनीहरूले प्रायः रोचक दृश्यांकनहरू, वा प्लट, ग्राफ, र चार्टहरू सिर्जना गर्छन्, जसले डाटाका विभिन्न पक्षहरू देखाउँछन्। यस तरिकाले, उनीहरूले दृश्यरूपमा सम्बन्धहरू र खाली ठाउँहरू देखाउन सक्षम हुन्छन् जुन अन्यथा भेट्न गाह्रो हुन्छ। -[![ML for beginners - Matplotlib प्रयोग गरेर डेटा दृश्यात्मकता](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML for beginners - Matplotlib प्रयोग गरेर डेटा दृश्यात्मकता") +[![ML for beginners - How to Visualize Data with Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML for beginners - How to Visualize Data with Matplotlib") -> 🎥 माथिको छविमा क्लिक गरेर यस पाठका लागि डेटा दृश्यात्मकता गर्ने छोटो भिडियो हेर्नुहोस्। +> 🎥 यस पाठको लागि डाटा दृश्याङ्कन गर्दै गरेको छोटो भिडियो हेर्न माथिको तस्वीरमा क्लिक गर्नुहोस्। -दृश्यात्मकताले मेसिन लर्निङ प्रविधि निर्धारण गर्न पनि मद्दत गर्न सक्छ। उदाहरणका लागि, यदि 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() ``` - ![मूल्य र महिनाको सम्बन्ध देखाउने scatterplot](../../../../2-Regression/2-Data/images/scatterplot.png) + ![मूल्य देखि महिना सम्बन्ध देखाउने स्क्याटरप्लट](../../../../translated_images/ne/scatterplot.b6868f44cbd2051c.webp) - के यो उपयोगी प्लट हो? यसले तपाईंलाई के अचम्मित गराउँछ? + के यो उपयोगी प्लट हो? के यसमा केही तपाईंलाई अचम्म लाग्यो? - यो विशेष रूपमा उपयोगी छैन, किनभने यसले तपाईंको डेटालाई महिनामा बिन्दुहरूको रूपमा मात्र देखाउँछ। + यो त्यति उपयोगी छैन किनकि यसले तपाईंको डाटालाई दिइएको महिनामा पोइन्टहरूको फैलावटमा मात्र देखाउँछ। ### यसलाई उपयोगी बनाउनुहोस् -चार्टहरूले उपयोगी डेटा प्रदर्शन गर्न, तपाईंले प्रायः डेटालाई कुनै न कुनै रूपमा समूह गर्न आवश्यक पर्छ। y अक्षले महिनाहरू देखाउने र डेटा वितरण प्रदर्शन गर्ने प्लट सिर्जना गरौं। +चार्टहरूलाई उपयोगी डाटा देखाउन, तपाईं प्रायः डाटालाई कसैले सँगठित गर्नुपर्छ। हामी यस्तो प्लट बनाउन प्रयास गरौं जहाँ y अक्षहरू महिना देखाउँछन् र डाटाले डाटा वितरण प्रदर्शन गर्दछ। -1. समूहित बार चार्ट बनाउन एउटा सेल थप्नुहोस्: +१. समूहित बार चार्ट बनाउन एउटा सेल थप्नुहोस्: ```python new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') plt.ylabel("Pumpkin Price") ``` - ![मूल्य र महिनाको सम्बन्ध देखाउने बार चार्ट](../../../../2-Regression/2-Data/images/barchart.png) + ![मूल्य देखि महिना सम्बन्ध देखाउने बार चार्ट](../../../../translated_images/ne/barchart.a833ea9194346d76.webp) + + यो बढी उपयोगी डाटा दृश्याङ्कन हो! यसले देखाउँछ कि कद्दुहरूको सबैभन्दा उच्च मूल्य सेप्टेम्बर र अक्टोबरमा हुन्छ। के यो तपाईंको अपेक्षामा मिल्छ? किन वा किन होइन? + +## अभ्यास - 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 स्क्याटरप्लट](../../../../translated_images/ne/relplot.a03837d8f0329cec.webp) + + देख्नुहोस् कसरी तपाईंले _स्तम्भ नामहरू_ र डाटा फ्रेम पास गर्नुहुन्छ, र Seaborn ले अक्ष लेबलहरू आफैं नियन्त्रित गर्छ। + +२. `kind="line"` पास गरेर लाइन प्लटमा पनि स्विच गर्न सक्नुहुन्छ। Seaborn ले लाइन वरिपरि विश्वास अन्तराल देखाउन छायांकन पनि बनाउँछ: + + ```python + sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins) + ``` + + ![मूल्य देखि महिना सम्बन्ध देखाउने Seaborn लाइन प्लट](../../../../translated_images/ne/lineplot.f9034ba47b1e30ee.webp) + + यो विशेष डाटा धेरै आवाजयुक्त छ, त्यसैले लाइन प्लट सबभन्दा स्पष्ट विकल्प होइन — तर यसले देखाउँछ कि 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") + ``` + + ![A Seaborn bar chart showing the price distribution per month](../../../../translated_images/ne/catplot.e73fc35fdf96242b.webp) + + यसले 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") + ``` + + ![A Seaborn heatmap showing correlations between the numeric columns](../../../../translated_images/ne/heatmap.bd98dce43b404c57.webp) + + `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-शिक्षणमा परिचय -![मेसिन लर्निङमा रिइन्फोर्समेन्टको सारांश स्केच नोटमा](../../../../sketchnotes/ml-reinforcement.png) -> स्केच नोट [Tomomi Imura](https://www.twitter.com/girlie_mac) द्वारा +![मेसिन शिक्षणमा सुदृढीकरणको संक्षेप स्केचनोट](../../../../translated_images/ne/ml-reinforcement.94024374d63348db.webp) +> स्केचनोट द्वारा [तोमоми इमुरा](https://www.twitter.com/girlie_mac) -रिइन्फोर्समेन्ट लर्निङ तीन महत्त्वपूर्ण अवधारणाहरूमा आधारित छ: एजेन्ट, केही अवस्थाहरू, र प्रत्येक अवस्थाका लागि कार्यहरूको सेट। कुनै निर्दिष्ट अवस्थामा कार्य सम्पादन गर्दा, एजेन्टलाई पुरस्कार दिइन्छ। फेरि कम्प्युटर गेम सुपर मारियोको कल्पना गर्नुहोस्। तपाईं मारियो हुनुहुन्छ, तपाईं गेमको स्तरमा हुनुहुन्छ, चट्टानको छेउमा उभिएको। तपाईंको माथि एउटा सिक्का छ। तपाईं मारियो हुनुहुन्छ, गेमको स्तरमा, एक विशिष्ट स्थानमा ... यो तपाईंको अवस्था हो। दायाँतिर एक कदम चाल्नु (एक कार्य) तपाईंलाई चट्टानबाट तल लैजान्छ, र यसले तपाईंलाई कम संख्यात्मक स्कोर दिन्छ। तर, जम्प बटन थिच्दा तपाईंले एक अंक प्राप्त गर्नुहुनेछ र जीवित रहनुहुनेछ। यो सकारात्मक परिणाम हो र यसले तपाईंलाई सकारात्मक संख्यात्मक स्कोर दिनुपर्छ। +सुदृढीकरण शिक्षणमा तीन महत्वपूर्ण अवधारणाहरू छन्: एजेन्ट, केही अवस्थाहरू, र प्रत्येक अवस्थाको लागि क्रियाहरूको सेट। निर्दिष्ट अवस्थामा कुनै क्रिया कार्यान्वयन गरेर, एजेन्टलाई इनाम दिन्छ। फेरि कल्पना गर्नुहोस् कम्प्युटर खेल सुपर मारियो। तपाईँ मारियो हुनुहुन्छ, खेलको स्तरमा, खाल्डो किनारामा उभिएको। माथि एउटा सिक्का छ। तपाईँ मारियो हुनु, खेलको स्तरमा, कुनै विशेष स्थितिमा ... त्यो तपाईंको अवस्था हो। दायाँतर्फ एक कदम चाल्नु (एक क्रिया) ले तपाईंलाई किनारामा पु-याउँछ, जसले तपाईंलाई न्यून अंक दिन्छ। यद्यपि, जम्प बटन थिच्दा तपाईंले अंक पाउनुहुन्छ र जीवित रहन सक्नुहुन्छ। त्यो सकारात्मक नतिजा हो र त्यसले तपाईंलाई सकारात्मक अंक पुरस्कार दिन्छ। -रिइन्फोर्समेन्ट लर्निङ र सिमुलेटर (गेम) प्रयोग गरेर, तपाईंले जीवित रहनु र सकेसम्म धेरै अंक प्राप्त गर्न खेल खेल्न सिक्न सक्नुहुन्छ। +सुदृढीकरण शिक्षण र एक सिमुलेटर (खेल) को प्रयोग गरेर, तपाईंले कसरी खेल खेल्ने सिक्न सक्नुहुन्छ ताकि जिवित रहन र सकेसम्म धेरै अंक प्राप्त गर्न सकियोस्। -[![रिइन्फोर्समेन्ट लर्निङको परिचय](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) +[![सुदृढीकरण शिक्षणमा परिचय](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](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` आकारमा मान्न सक्छौं, यसरी: -![पिटरको वातावरण](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![पिटरको वातावरण](../../../../translated_images/ne/environment.40ba3cb66256c93f.webp) -यस बोर्डको प्रत्येक सेल निम्नमध्ये कुनै एक हुन सक्छ: +यस बोर्डका प्रत्येक कोष्ठकले यस मध्ये कुनै पर्न सक्छ: -* **जमिन**, जहाँ पिटर र अन्य प्राणीहरू हिँड्न सक्छन्। -* **पानी**, जहाँ स्पष्ट रूपमा हिँड्न सकिँदैन। -* **रुख** वा **घाँस**, जहाँ आराम गर्न सकिन्छ। -* **स्याउ**, जुन पिटरले आफूलाई खुवाउन पाउँदा खुसी हुने कुरा हो। -* **भेडिया**, जुन खतरनाक छ र बच्नुपर्छ। +* **माटो**, जसमा पिटर र अन्य जीवहरु हिड्न सक्छन्। +* **पानी**, जसमा तपाईं पक्कै हिड्न सक्नुहुन्न। +* **रुख** वा **घाँस**, जहाँ तपाईं आराम गर्न सक्नुहुन्छ। +* **स्याउ**, जुन पिटरले आफूलाई खान दिन खोज्ने वस्तु हो। +* **भेड़िया**, जुन खतरनाक छ र जोगिनु पर्छ। -एक अलग 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 कदम छ। - तपाईंले पिटरको र्यान्डम वाकको क्रममा उसको चाल कस्तो देखिन्छ भनेर पनि हेर्न सक्नुहुन्छ: + तपाईं र्याण्डम वाक अवधिमा पिटरको चाल कस्तो छ देख्न सक्नुहुन्छ: - ![पिटरको र्यान्डम वाक](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) + ![पिटरको र्याण्डम वाक](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) ## पुरस्कार कार्य -हाम्रो नीति अझ बौद्धिक बनाउन, हामीले बुझ्नुपर्छ कि कुन चालहरू अरूभन्दा "राम्रो" छन्। यसका लागि, हामीले हाम्रो लक्ष्य परिभाषित गर्नुपर्छ। +हाम्रो नीतिलाई अझ बुद्धिमानी बनाउन, हामी बुझ्नुपर्ने हुन्छ कि कुन चालहरू अरूको भन्दा "राम्रो" छन्। यसको लागि हामीले हाम्रो लक्ष्य परिभाषित गर्नुपर्ने हुन्छ। -लक्ष्यलाई **पुरस्कार कार्य** को सन्दर्भमा परिभाषित गर्न सकिन्छ, जसले प्रत्येक अवस्थाको लागि केही स्कोर मान फिर्ता गर्दछ। संख्या जति उच्च छ, पुरस्कार कार्य त्यति राम्रो हुन्छ। (कोड ब्लक 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)`. -![पिटरको वातावरण](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![पिटरको वातावरण](../../../../translated_images/ne/env_init.04e8f26d2d60089e.webp) -प्रत्येक सेलको केन्द्रमा एउटा "तीर" छ जसले चालको प्राथमिक दिशा संकेत गर्दछ। किनभने सबै दिशाहरू समान छन्, एउटा बिन्दु देखाइएको छ। +प्रत्येक कोष्ठकको केन्द्रमा एउटा "तीर" हुन्छ जुन सर्न मन लाग्ने दिशा देखाउँछ। सबै दिशा बराबर हुँदा, बिन्दु देखाइन्छ। -अब हामीले सिमुलेशन चलाउन, हाम्रो वातावरण अन्वेषण गर्न, र 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-लर्निङ प्रयोग गरेर। + +![महान भाग्ने योजना!](../../../../translated_images/ne/escape.18862db9930337e3.webp) + +> पिटर र उनका साथीहरूले बँदेलबाट भाग्न रचनात्मकता देखाउँछन्! तस्बिर: [जेन लूपर](https://twitter.com/jenlooper) + +हामी एक सरल संस्करणको सन्तुलनलाई कार्टपोल समस्या भनेर चिनिने समस्या प्रयोग गर्नेछौं। कार्टपोल दुनियाँमा, हामीसँग एक तेर्सो स्लाइडर हुन्छ जुन बायाँ वा दायाँ सर्न सक्छ, र लक्ष्य स्लाइडरको माथि एउटा ठाडो पोललाई सन्तुलनमा राख्नु हो। + +a cartpole + ## आवश्यकताहरू -यस पाठमा, हामी **OpenAI Gym** नामक पुस्तकालय प्रयोग गर्नेछौं विभिन्न **पर्यावरणहरू** अनुकरण गर्न। तपाईं यो पाठको कोड स्थानीय रूपमा (जस्तै Visual Studio Code बाट) चलाउन सक्नुहुन्छ, जसमा अनुकरण नयाँ विन्डोमा खुल्छ। अनलाइन कोड चलाउँदा, तपाईंले कोडमा केही परिवर्तन गर्नुपर्ने हुन सक्छ, जस्तै [यहाँ](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7) वर्णन गरिएको छ। +यस पाठमा, हामी **OpenAI Gym** नामक पुस्तकालय प्रयोग गर्नेछौं विभिन्न **परिवेश** अनुकरण गर्न। तपाईंले यो पाठको कोड स्थानीय रूपमा चलाउन सक्नुहुन्छ (जस्तै 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() ``` - तपाईंले निम्न चित्र जस्तै केही देख्नुपर्छ: + तपाईंले यो तस्बिर जस्तो केही देख्नुपर्नेछ: - ![non-balancing cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) + ![सन्तुलन नगरिएको कार्टपोल](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) -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) ``` -![raw progress](../../../../8-Reinforcement/2-Gym/images/train_progress_raw.png) +![कच्चा प्रगति](../../../../translated_images/ne/train_progress_raw.2adfdf2daea09c59.webp) -यस ग्राफबाट केही भन्न सम्भव छैन, किनकि स्टोकेस्टिक प्रशिक्षण प्रक्रियाको प्रकृतिका कारण प्रशिक्षण सत्रहरूको लम्बाइ धेरै भिन्न हुन्छ। यस ग्राफलाई अझ अर्थपूर्ण बनाउन, हामी 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)) ``` -![training progress](../../../../8-Reinforcement/2-Gym/images/train_progress_runav.png) +![प्रशिक्षण प्रगति](../../../../translated_images/ne/train_progress_runav.c71694a8fa9ab359.webp) + +## हाइपरप्यारामिटरहरू परिवर्तन गर्दै + +सिकाइलाई स्थिर बनाउन, हामीले प्रशिक्षणका दौरान हाम्रा केहि हाइपरप्यारामिटरहरू समायोजन गर्न सक्छौं। विशेषतः: + +- **शिक्षण दर `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() ``` -तपाईंले केही यस प्रकारको देख्नुहुनेछ: +तपाईलाई यस प्रकार केही देखिनु पर्छ: -![एक सन्तुलित कार्टपोल](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) +![a balancing cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) --- ## 🚀चुनौती -> **कार्य ३**: यहाँ हामीले 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)। -> ![जिम्मेवार AI उपकरणहरूमा GIF](../../../../9-Real-World/2-Debugging-ML-Models/images/rai-overview.gif) +> ![जिम्मेवार AI उपकरणहरूको गिफ](../../../../9-Real-World/2-Debugging-ML-Models/images/rai-overview.gif) ## त्रुटि विश्लेषण -परम्परागत मोडेल प्रदर्शन मेट्रिक्स, जस्तै सटीकता मापन, प्रायः सही र गलत भविष्यवाणीहरूको गणनामा आधारित हुन्छ। उदाहरणका लागि, यदि मोडेल ८९% समय सटीक छ र त्रुटि हानि ०.००१ छ भने यो राम्रो प्रदर्शन मान्न सकिन्छ। तर त्रुटिहरू डाटाको आधारभूत सेटमा समान रूपमा वितरण भएका हुँदैनन्। तपाईंले ८९% सटीकता स्कोर प्राप्त गर्न सक्नुहुन्छ तर पत्ता लगाउन सक्नुहुन्छ कि डाटाको केही क्षेत्रहरूमा मोडेल ४२% समय असफल भइरहेको छ। यी असफलता ढाँचाहरूले निष्पक्षता वा भरपर्दो समस्याहरू उत्पन्न गर्न सक्छ। मोडेलले राम्रो प्रदर्शन गरिरहेको क्षेत्रहरू र खराब प्रदर्शन गरिरहेको क्षेत्रहरू बुझ्न महत्त्वपूर्ण छ। डाटाको ती क्षेत्रहरू जहाँ मोडेलको उच्च त्रुटि दर छ, महत्त्वपूर्ण जनसांख्यिकीय समूह हुन सक्छ। +परम्परागत मोडल प्रदर्शन मेट्रिक्सहरू प्रायः सही र गलत भविष्यवाणीहरूको आधारमा गणना गरिन्छ। उदाहरणका लागि, मोडल ८९% समय सटीक छ र त्रुटि हानि ०.००१ छ भन्ने निर्धारण राम्रो प्रदर्शन मानिन्छ। त्रुटिहरू सामान्यतः तपाईंको आधारभूत डेटासेटमा समान रूपमा वितरित हुँदैनन्। तपाईंले ८९% मोडल सटीकता पाउनसक्नुहुन्छ तर पत्ता लगाउनसक्नुहुन्छ कि मोडल केही डेटा भूभागहरूमा ४२% समय असफल हुन्छ। यी असफलताको ढाँचाहरूले केही डेटा समूहमा न्याय वा भरपर्दो समस्या निम्त्याउन सक्छ। मोडलले राम्रो वा खराब प्रदर्शन गरिरहेको क्षेत्रहरू बुझ्नु आवश्यक छ। त्यस्ता डेटा क्षेत्रहरू जहाँ मोडलमा धेरै अशुद्धि हुन्छ, त्यहाँ महत्वपूर्ण डेटा जनसांख्यिकीय हुन सक्छ। + +![मोडेल त्रुटिहरू विश्लेषण र डिबग](../../../../translated_images/ne/ea-error-distribution.117452e1177c1dd8.webp) + +RAI ड्यासबोर्डमा त्रुटि विश्लेषण कम्पोनेन्टले विभिन्न समूहहरूमा मोडेल असफलता कसरी वितरण गरिएको छ भनी वृक्ष दृश्यशैलीमा देखाउँछ। यसले तपाईंको डेटासेटमा ठूलो त्रुटि दर भएका विशेषता वा क्षेत्रहरू पहिचान गर्न मद्दत गर्छ। मोडेलका अधिकांश अशुद्धिहरू कहाँबाट आउँछन् हेरेर, तपाईँ जरा कारण अनुसन्धान गर्न सुरु गर्न सक्नुहुन्छ। तपाईं विश्लेषण गर्न डेटा समूहहरू पनि बनाउन सक्नुहुन्छ। यी डेटा समूहहरूले डिबगिङ प्रक्रियामा मद्दत गर्छन् किनभने मोडेलको प्रदर्शन एक समूहमा राम्रो छ तर अर्कोमा गलत छ भनेर बुझ्न। + +![त्रुटि विश्लेषण](../../../../translated_images/ne/ea-error-cohort.6886209ea5d438c4.webp) -![मोडेल त्रुटिहरू विश्लेषण र डिबग गर्नुहोस्](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-error-distribution.png) +वृक्ष नक्सामा दृश्य संकेतहरूले समस्या क्षेत्र छिटो पत्ता लगाउन मद्दत गर्छ। उदाहरणका लागि, वृक्ष नोडको गाढा रातो छायाँले त्रुटि दर उच्च छ जनाउँछ। -RAI ड्यासबोर्डको त्रुटि विश्लेषण कम्पोनेन्टले विभिन्न समूहहरूमा मोडेल असफलता कसरी वितरण भएको छ भनेर ट्री भिजुअलाइजेसनमार्फत देखाउँछ। यो डाटासेटमा उच्च त्रुटि दर भएका विशेषताहरू वा क्षेत्रहरू पहिचान गर्न उपयोगी छ। मोडेलको अधिकांश त्रुटिहरू कहाँबाट आइरहेका छन् भनेर हेरेर, तपाईंले समस्याको जड पत्ता लगाउन सुरु गर्न सक्नुहुन्छ। तपाईं डाटाको समूहहरू सिर्जना गरेर विश्लेषण गर्न सक्नुहुन्छ। यी समूहहरूले डिबगिङ प्रक्रियामा मद्दत गर्छन् कि किन मोडेलको प्रदर्शन एक समूहमा राम्रो छ तर अर्कोमा त्रुटिपूर्ण छ। +हीट म्याप अर्को दृश्यता सुविधा हो जसले प्रयोगकर्ताहरूलाई एक वा दुई विशेषता प्रयोग गरी पूरा डेटासेट वा समूहहरूमा मोडेल त्रुटिहरूको कारण खोज्न मद्दत पुर्‍याउँछ। -![त्रुटि विश्लेषण](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-error-cohort.png) +![त्रुटि विश्लेषण हीटम्याप](../../../../translated_images/ne/ea-heatmap.8d27185e28cee383.webp) -ट्री म्यापमा गाढा रातो रंगको छायाँले समस्या क्षेत्रहरू छिटो पत्ता लगाउन मद्दत गर्छ। उदाहरणका लागि, ट्री नोडमा गाढा रातो रंगको छायाँ छ भने, त्रुटि दर उच्च छ। +त्रुटि विश्लेषण निम्न अवस्थामा प्रयोग गर्नुहोस्: -हीट म्याप अर्को भिजुअलाइजेसन कार्यक्षमता हो, जसले प्रयोगकर्ताहरूलाई एक वा दुई विशेषताहरू प्रयोग गरेर त्रुटि दर अनुसन्धान गर्न मद्दत गर्छ, जसले सम्पूर्ण डाटासेट वा समूहहरूमा मोडेल त्रुटिहरूको योगदानकर्ता पत्ता लगाउन मद्दत गर्छ। +* मोडेल असफलताहरू कसरी डेटासेट र विभिन्न इनपुट र विशेषता आयामहरूमा वितरण छन् गहिरो रूपमा बुझ्न। +* समग्र प्रदर्शन मेट्रिक्सहरू तोड्नु र स्वतः गलत समूहहरू फेला पार्नु जसले लक्षित समाधान कदमहरूलाई जानकारी दिन्छ। -![त्रुटि विश्लेषण हीटम्याप](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-heatmap.png) +## मोडल अवलोकन -त्रुटि विश्लेषण प्रयोग गर्नुहोस् जब तपाईंलाई चाहिन्छ: +मेसिन लर्निङ मोडलको प्रदर्शन मूल्यांकन गर्दा यसको व्यवहारको समग्र बुझाइ हुनु आवश्यक छ। यो त्रुटि दर, सटीकता, रिक्याल, प्रेसिजन, वा MAE (मिन एब्सोल्युट एरर) जस्ता एक भन्दा बढी मेट्रिक्स समीक्षा गरेर प्राप्त गर्न सकिन्छ जसले प्रदर्शन मेट्रिक्सहरू बीच भिन्नता पत्ता लगाउँछ। एक प्रदर्शन मेट्रिक राम्रो देखिए पनि अर्को मेट्रिकमा अशुद्धिहरू देख्न सकिन्छ। साथै, सम्पूर्ण डेटासेट वा समूहहरूमा भिन्नता तुलना गर्दा मोडेल कुन ठाउँमा राम्रो गरिरहेको छ वा छैन थाहा हुन्छ। यो विशेष गरी संवेदनशील बनाम असंवेदनशील विशेषताहरू (जस्तै, बिरामीको जात, लिंग, उमेर) बीच मोडेलको प्रदर्शन हेर्न महत्वपूर्ण छ जसले सम्भावित अन्याय पत्ता लगाउन मद्दत गर्दछ। उदाहरणका लागि, संवेदनशील विशेषता भएको समूहमा मोडेल बढी अशुद्ध छ भने सम्भावित अन्याय देखाउन सक्छ। -* मोडेल असफलता कसरी डाटासेट र विभिन्न इनपुट तथा विशेषता आयामहरूमा वितरण भएको छ भनेर गहिरो समझ प्राप्त गर्नुहोस्। -* समग्र प्रदर्शन मेट्रिक्सलाई तोडेर त्रुटिपूर्ण समूहहरू स्वतः पत्ता लगाउनुहोस् ताकि लक्षित समाधान कदमहरूलाई सूचित गर्न सकियोस्। +RAI ड्यासबोर्डको मोडल अवलोकन कम्पोनेन्टले केवल समूहमा डेटा प्रतिनिधित्वको प्रदर्शन विश्लेषण गर्ने मात्र होइन, विभिन्न समूहहरूको बीचमा मोडेलको व्यवहार तुलना गर्ने क्षमता पनि दिन्छ। -## मोडेल अवलोकन +![डेटासेट समूहहरू - RAI ड्यासबोर्डमा मोडल अवलोकन](../../../../translated_images/ne/model-overview-dataset-cohorts.dfa463fb527a35a0.webp) -मेसिन लर्निङ मोडेलको प्रदर्शन मूल्याङ्कन गर्न यसको व्यवहारको समग्र समझ प्राप्त गर्नु आवश्यक छ। यो त्रुटि दर, सटीकता, रिकल, प्रिसिजन, वा MAE (मीन एब्सोल्युट एरर) जस्ता एकभन्दा बढी मेट्रिक्सको समीक्षा गरेर प्राप्त गर्न सकिन्छ। एक प्रदर्शन मेट्रिक राम्रो देखिन सक्छ, तर अर्को मेट्रिकमा असमानता देखिन सक्छ। साथै, सम्पूर्ण डाटासेट वा समूहहरूमा मेट्रिक्सको तुलनाले मोडेल कहाँ राम्रो प्रदर्शन गरिरहेको छ वा छैन भन्ने कुरा उजागर गर्न मद्दत गर्छ। यो विशेष गरी संवेदनशील र असंवेदनशील विशेषताहरू (जस्तै, बिरामीको जाति, लिङ्ग, वा उमेर) बीच मोडेलको प्रदर्शन हेर्न महत्त्वपूर्ण छ ताकि मोडेलले सम्भावित अन्याय गरेको छ कि छैन भनेर पत्ता लगाउन सकियोस्। उदाहरणका लागि, संवेदनशील विशेषताहरू भएको समूहमा मोडेल बढी त्रुटिपूर्ण छ भने, यसले मोडेलमा सम्भावित अन्याय देखाउन सक्छ। +कम्पोनेन्टको विशेषता-आधारित विश्लेषणले प्रयोगकर्तालाई कुनै विशेष विशेषताभित्र डेटा उपसमूहहरूमा सङ्कुचित भएर ग्रानुलर स्तरमा विसंगतिहरू पहिचान गर्न सक्षम बनाउँछ। उदाहरणका लागि, ड्यासबोर्डमा प्रयोगकर्ताले छनोट गरेको विशेषता (जस्तै, *"time_in_hospital < 3"* या *"time_in_hospital >= 7"*) को लागि स्वतः समूहहरू सिर्जना गर्ने इन्टेलिजेन्स हुन्छ। यसले ठूलो डेटा समूहबाट कुनै विशेष विशेषतालाई अलग गर्ने र मोडेलका गलत परिणामहरू तर्फ के प्रभाव पारेको छ हेर्न मद्दत गर्दछ। -RAI ड्यासबोर्डको मोडेल अवलोकन कम्पोनेन्टले न केवल समूहमा डाटा प्रतिनिधित्वको प्रदर्शन मेट्रिक्स विश्लेषण गर्न मद्दत गर्छ, तर यसले प्रयोगकर्ताहरूलाई विभिन्न समूहहरूमा मोडेलको व्यवहार तुलना गर्ने क्षमता प्रदान गर्दछ। +![विशेषता समूहहरू - RAI ड्यासबोर्डमा मोडल अवलोकन](../../../../translated_images/ne/model-overview-feature-cohorts.c5104d575ffd0c80.webp) -![डाटासेट समूहहरू - RAI ड्यासबोर्डमा मोडेल अवलोकन](../../../../9-Real-World/2-Debugging-ML-Models/images/model-overview-dataset-cohorts.png) +मोडल अवलोकन कम्पोनेन्टले दुई प्रकारका भिन्नता मेट्रिक्स समर्थन गर्छ: -कम्पोनेन्टको विशेषता-आधारित विश्लेषण कार्यक्षमताले प्रयोगकर्ताहरूलाई विशेषताहरूको विशिष्ट समूहहरूमा डाटा उपसमूहहरू संकुचित गर्न अनुमति दिन्छ ताकि सूक्ष्म स्तरमा असमानता पहिचान गर्न सकियोस्। उदाहरणका लागि, ड्यासबोर्डमा प्रयोगकर्ताले चयन गरेको विशेषताका लागि समूहहरू स्वतः उत्पन्न गर्न बौद्धिकता छ (जस्तै, *"time_in_hospital < 3"* वा *"time_in_hospital >= 7"*)। यसले प्रयोगकर्तालाई ठूलो डाटा समूहबाट विशेषताहरू अलग गर्न सक्षम बनाउँछ ताकि यो मोडेलको त्रुटिपूर्ण परिणामहरूको प्रमुख प्रभावकारक हो कि होइन भनेर हेर्न सकियोस्। +**मोडेल प्रदर्शनमा भिन्नता**: यी मेट्रिक्सहरूले चयनित प्रदर्शन मेट्रिकको मानको भिन्नता (अन्तर) उपसमूहहरूमा गणना गर्छन्। केही उदाहरणहरू: -![विशेषता समूहहरू - RAI ड्यासबोर्डमा मोडेल अवलोकन](../../../../9-Real-World/2-Debugging-ML-Models/images/model-overview-feature-cohorts.png) +* सटीकता दरमा भिन्नता +* त्रुटि दरमा भिन्नता +* प्रेसिजनमा भिन्नता +* रिक्यालमा भिन्नता +* औसत पूर्ण त्रुटि (MAE) मा भिन्नता -मोडेल अवलोकन कम्पोनेन्टले दुई प्रकारका असमानता मेट्रिक्सलाई समर्थन गर्दछ: +**चयन दरमा भिन्नता**: यो मेट्रिकले उपसमूहहरूमा चयन दर (सकारात्मक भविष्यवाणी) को भिन्नता समावेश गर्छ। एक उदाहरण हो ऋण अनुमोदन दरमा भिन्नता। चयन दर भनेको प्रत्येक वर्गमा १ (द्वैध वर्गीकरणमा) को रूपमा वर्गीकृत डेटा पोइन्टहरूको अंश वा भविष्यवाणी मानहरूको वितरण (रेग्रेशनमा) को सङ्ख्या हो। -**मोडेल प्रदर्शनमा असमानता**: यी मेट्रिक्सले प्रदर्शन मेट्रिक्सको चयन गरिएको मानहरूमा डाटा उपसमूहहरूमा असमानता (अन्तर) गणना गर्छ। केही उदाहरणहरू: +## डेटा विश्लेषण -* सटीकता दरमा असमानता -* त्रुटि दरमा असमानता -* प्रिसिजनमा असमानता -* रिकलमा असमानता -* मीन एब्सोल्युट एरर (MAE) मा असमानता +> "यदि तपाईं डेटा धेरै चोटि त्रास दिनुहुन्छ भने, यो जुनसुकै कुरा स्वीकार्छ" - Ronald Coase -**चयन दरमा असमानता**: यो मेट्रिकले उपसमूहहरूमा चयन दर (अनुकूल भविष्यवाणी) को भिन्नता समावेश गर्दछ। यसको उदाहरण भनेको ऋण स्वीकृति दरमा असमानता हो। चयन दरले प्रत्येक वर्गमा डाटा बिन्दुहरूको अंशलाई १ (बाइनरी वर्गीकरणमा) वा भविष्यवाणी मानहरूको वितरण (रेग्रेशनमा) को रूपमा वर्गीकृत गरिएको अर्थ गर्दछ। +यो कथन अतिनाटक जस्तो सुनिन्छ, तर यो सत्य छ कि डेटा कुनै पनि निष्कर्ष समर्थन गर्न हेरफेर गर्न सकिन्छ। यस्तो हेरफेर कहिलेकाहीं अनजानेमा हुन्छ। हामी सबैमा पक्षपात हुन्छ, र कहिले हामी डेटा मा पक्षपात परिचय गराइरहेका छौं भन्ने सजग रुपमा थाहा पाउन गाह्रो हुन्छ। AI र मेसिन लर्निङमा न्याय सुनिश्चित गर्नु चुनौतीपूर्ण कार्य हो। -## डाटा विश्लेषण +परम्परागत मोडल प्रदर्शन मेट्रिक्सका लागि डेटा ठूलो अन्धकार क्षेत्र हो। तपाईंसँग उच्च सटीकता हुन सक्छ, तर यो जहिल्यै तपाईंको डेटासेटको आधारभूत पक्षपातलाई प्रतिबिम्बित गर्दैन। उदाहरणको लागि, यदि कुनै कम्पनीमा कार्यरत कर्मचारीहरूमध्ये २७% महिला कार्यकारी स्तरमा छन् र ७३% पुरुष, तब यस्तो डेटामा प्रशिक्षित AI मोडेल वरिष्ठ स्तरको रोजगारका लागि मुख्यतया पुरुष लक्षित विज्ञापन गर्न सक्छ। डेटामा यो असन्तुलनले मोडेलको भविष्यवाणीलाई एक लिंगलाई प्राथमिकता दिन प्रवृत्त गराएको छ। यसले AI मोडेलमा लिंग पक्षपातको न्यायको समस्या उदांगो बनाउँछ। -> "यदि तपाईंले डाटालाई पर्याप्त यातना दिनुभयो भने, यसले कुनै पनि कुरा स्वीकार गर्नेछ" - रोनाल्ड कोस +RAI ड्यासबोर्डमा डेटा विश्लेषण कम्पोनेन्टले डेटासेटमा अत्यधिक वा कम प्रतिनिधित्व भएका क्षेत्रहरू पत्ता लगाउन मद्दत गर्छ। यसले प्रयोगकर्तालाई त्रुटि र न्यायसम्बन्धी समस्याहरू उत्पन्न गर्ने डेटा असन्तुलन वा विशिष्ट डेटा समूहको अभावको कारण निदान गर्न सक्षम बनाउँछ। यसले प्रयोगकर्तालाई भविष्यवाणी र वास्तविक परिणामहरू, त्रुटि समूहहरू, र विशेष विशेषताहरूको आधारमा डेटासेटहरू दृश्यात्मक रूपमा देखाउन अनुमति दिन्छ। कहिलेकाहीं कम प्रतिनिधित्व भएका डेटा समूह पत्ता लगाउँदा मोडेल राम्रो सिक्दै नसकेको पनि देखिन्छ, त्यसैले ती उच्च अशुद्धिहरू हुन्छन्। डेटा पक्षपात भएको मोडेल केवल न्यायसम्बन्धी समस्या मात्र होइन तर मोडेल समावेशी वा भरपर्दो छैन भन्ने संकेत हो। -यो कथन अतिशयोक्तिपूर्ण लाग्न सक्छ, तर यो सत्य हो कि डाटालाई कुनै पनि निष्कर्ष समर्थन गर्न हेरफेर गर्न सकिन्छ। यस्तो हेरफेर कहिलेकाहीँ अनजानेमा पनि हुन सक्छ। हामी सबै मानिसहरूमा पूर्वाग्रह हुन्छ, र डाटामा पूर्वाग्रह परिचय गराउँदा हामीलाई सचेत रूपमा थाहा पाउन गाह्रो हुन्छ। AI र मेसिन लर्निङमा निष्पक्षता सुनिश्चित गर्नु जटिल चुनौती हो। +![RAI ड्यासबोर्डमा डेटा विश्लेषण कम्पोनेन्ट](../../../../translated_images/ne/dataanalysis-cover.8d6d0683a70a5c1e.webp) -डाटा परम्परागत मोडेल प्रदर्शन मेट्रिक्सको लागि ठूलो अन्धकार क्षेत्र हो। तपाईंले उच्च सटीकता स्कोर प्राप्त गर्न सक्नुहुन्छ, तर यसले डाटासेटमा अन्तर्निहित डाटा पूर्वाग्रहलाई प्रतिबिम्बित नगर्न सक्छ। उदाहरणका लागि, यदि कर्मचारीहरूको डाटासेटमा कम्पनीका कार्यकारी पदहरूमा महिलाहरूको २७% र पुरुषहरूको ७३% प्रतिनिधित्व छ भने, यस डाटामा प्रशिक्षित रोजगार विज्ञापन AI मोडेलले वरिष्ठ स्तरको रोजगार पदहरूको लागि प्रायः पुरुष दर्शकलाई लक्षित गर्न सक्छ। डाटामा यो असन्तुलनले मोडेलको भविष्यवाणीलाई एक लिङ्गलाई प्राथमिकता दिन प्रेरित गर्यो। यसले मोडेलमा लिङ्ग पूर्वाग्रह देखाउँछ, जसले निष्पक्षताको समस्या उजागर गर्छ। -RAI ड्यासबोर्डको डाटा विश्लेषण कम्पोनेन्टले डाटासेटमा अत्यधिक र न्यून प्रतिनिधित्व भएका क्षेत्रहरू पहिचान गर्न मद्दत गर्छ। यसले प्रयोगकर्ताहरूलाई डाटा असन्तुलन वा विशिष्ट डाटा समूहको प्रतिनिधित्वको अभावबाट उत्पन्न त्रुटि र निष्पक्षता समस्याहरूको जड कारण पत्ता लगाउन मद्दत गर्छ। यसले प्रयोगकर्ताहरूलाई भविष्यवाणी र वास्तविक परिणामहरू, त्रुटि समूहहरू, र विशिष्ट विशेषताहरूको आधारमा डाटासेटहरू भिजुअलाइज गर्न सक्षम बनाउँछ। कहिलेकाहीँ न्यून प्रतिनिधित्व भएको डाटा समूह पत्ता लगाउँदा मोडेल राम्रोसँग सिकिरहेको छैन भन्ने कुरा पनि उजागर गर्न सक्छ, जसले उच्च त्रुटिहरू उत्पन्न गर्छ। डाटामा पूर्वाग्रह भएको मोडेल हुनु भनेको केवल निष्पक्षताको समस्या होइन, तर मोडेल समावेशी वा भरपर्दो छैन भन्ने कुरा पनि देखाउँछ। +डेटा विश्लेषण तब प्रयोग गर्नुहोस् जब तपाईं: -![RAI ड्यासबोर्डमा डाटा विश्लेषण कम्पोनेन्ट](../../../../9-Real-World/2-Debugging-ML-Models/images/dataanalysis-cover.png) +* विभिन्न फिल्टरहरू चयन गरेर आफ्नो डेटासेट तथ्यांकहरू अन्वेषण गर्न चाहनुहुन्छ जसले तपाईंको डेटा विभिन्न आयामहरूमा (समूहहरूमा) टुक्र्याउँछ। +* आफ्नो डेटासेटको वितरण विभिन्न समूहहरू र विशेषता समूहहरूमा कसरी छ बुझ्न चाहनुहुन्छ। +* आफ्नो समूह, त्रुटि विश्लेषण, र कारण-प्रभाव सम्बन्धी अनुसन्धान (अन्य ड्यासबोर्ड कम्पोनेन्टहरूबाट प्राप्त) तपाईँको डेटासेटको वितरणकै कारण हो कि होइन थाहा पाउन चाहनुहुन्छ। +* प्रतिनिधित्व समस्याहरू, लेबल आवाज, विशेषता आवाज, लेबल पक्षपात, र यसका समान कारणले आएका त्रुटिहरू कम गर्न थप डेटा सङ्कलन कहाँ गर्नुपर्ने निर्णय गर्न चाहनुहुन्छ। -डाटा विश्लेषण प्रयोग गर्नुहोस् जब तपाईंलाई चाहिन्छ: +## मोडेल व्याख्याशीलता -* विभिन्न फिल्टरहरू चयन गरेर आफ्नो डाटासेटको तथ्याङ्क अन्वेषण गर्नुहोस् ताकि तपाईं आफ्नो डाटालाई विभिन्न आयामहरू (समूहहरू) मा विभाजन गर्न सक्नुहुन्छ। -* विभिन्न समूहहरू र विशेषता समूहहरूमा आफ्नो डाटासेटको वितरण बुझ्नुहोस्। -* निष्पक्षता, त्रुटि विश्लेषण, र कारण सम्बन्धी निष्कर्षहरू (अन्य ड्यासबोर्ड कम्पोनेन्टहरूबाट प्राप्त) तपाईंको डाटासेटको वितरणको परिणाम हो कि होइन भनेर निर्धारण गर्नुहोस्। -* प्रतिनिधित्व समस्याहरू, लेबल शोर, विशेषता शोर, लेबल पूर्वाग्रह, र यस्तै कारकहरूबाट उत्पन्न त्रुटिहरूलाई कम गर्न थप डाटा सङ्कलन गर्न कुन क्षेत्रहरूमा ध्यान दिनुपर्ने हो भनेर निर्णय गर्नुहोस्। +मेसिन लर्निङ मोडेलहरू प्रायः ब्ल्याक बक्स जस्तै हुन्छन्। कुन मुख्य डेटा विशेषताहरूले मोडेलको भविष्यवाणी चलाउँछन् बुझ्न चुनौतीपूर्ण हुन्छ। मोडेलले किन निश्चित भविष्यवाणी गरेको छ भन्ने पारदर्शिता दिनु महत्त्वपूर्ण छ। उदाहरणका लागि, यदि AI प्रणालीले डायबिटिज भएका बिरामीलाई ३० दिनभित्र पुनः अस्पताल भर्ना हुनसक्ने जोखिम अनुमान गर्छ भने यसले आफ्नो भविष्यवाणीसम्म पुग्न प्रयोग गरिएको सहायक डाटा प्रदान गर्न सक्नुपर्छ। सहायक डेटा संकेतकहरूले चिकित्सक वा अस्पतालहरूलाई सूचित निर्णय लिन पारदर्शिता दिन्छ। साथै, मोडेलले किन भविष्यवाणी गरेको छ भनेर व्याख्या गर्न सक्नु स्वास्थ्य नियमहरूको आधिकारिक जवाफदेहितामा मद्दत गर्दछ। जब तपाईं मानिसहरूको जीवनमा प्रभाव पार्ने तरिकाले मेसिन लर्निङ मोडेलहरू प्रयोग गर्दै हुनुहुन्छ, मोडेलको व्यवहार केले प्रभावित गरिरहेको छ बुझ्न र व्याख्या गर्न आवश्यक छ। मोडेल व्याख्या र व्याख्याशीलता यस्ता प्रश्नहरूको जवाफ दिन्छ जस्तै: -## मोडेल व्याख्यात्मकता +* मोडेल डिबगिङ: मेरो मोडलले किन यो गल्ती गर्यो? मैले कसरी सुधार गर्ने? +* मानव-AI सहकार्य: म कसरी मोडेलका निर्णयहरू बुझ्ने र विश्वास गर्ने? +* नियम पालना: मेरो मोडलले कानुनी आवश्यकता पूरा गर्छ कि गर्दैन? -मेसिन लर्निङ मोडेलहरू प्रायः "ब्ल्याक बक्स" मानिन्छन्। मोडेलको भविष्यवाणीलाई चलाउने प्रमुख डाटा विशेषताहरू बुझ्न चुनौतीपूर्ण हुन सक्छ। मोडेलले किन कुनै निश्चित भविष्यवाणी गर्यो भन्ने पारदर्शिता प्रदान गर्नु महत्त्वपूर्ण छ। उदाहरणका लागि, यदि AI प्रणालीले मधुमेह रोगीलाई ३० दिनभन्दा कम समयमा अस्पतालमा पुनः भर्ना हुने जोखिममा रहेको भविष्यवाणी गर्छ भने, यसले आफ्नो भविष्यवाणीमा आधारित समर्थन डाटा प्रदान गर्न सक्षम हुनुपर्छ। समर्थन डाटा सूचकहरूले पारदर्शिता ल्याउँछ, जसले चिकित्सकहरू वा अस्पतालहरूलाई राम्रो निर्णय लिन मद्दत गर्छ। साथै, व्यक्तिगत बिरामीको लागि मोडेलले भविष्यवाणी किन गर्यो भन्ने व्याख्या गर्न सक्षम हुनु स्वास्थ्य नियमहरूको साथ उत्तरदायित्व सक्षम बनाउँछ। जब मेसिन लर्निङ मोडेलहरू मानिसहरूको जीवनलाई असर गर्ने तरिकामा प्रयोग गरिन्छ, मोडेलको व्यवहारलाई के चलाउँछ भन्ने कुरा बुझ्न र व्याख्या गर्न महत्त्वपूर्ण छ। मोडेल व्याख्यात्मकता र व्याख्या गर्न सक्ने क्षमता निम्न परिदृश्यहरूमा प्रश्नहरूको उत्तर दिन मद्दत गर्छ: +RAI ड्यासबोर्डको विशेषता महत्व कम्पोनेन्टले तपाईंलाई मोडलको डिबगिङ गर्ने र मोडलले कसरी भविष्यवाणी गर्छ comprehensive बुझ्न मद्दत गर्छ। यो मेसिन लर्निङ व्यवसायी तथा निर्णय-निर्माताहरूलाई पनि मोडल व्यवहारमा प्रभाव पार्ने विशेषताहरू स्पष्ट गर्न र प्रमाणित गर्न उपयोगी उपकरण हो जुन नियम पालना सुनिश्चित गर्न सहयोगी छ। प्रयोगकर्ताहरूले विश्वव्यापी र स्थानीय व्याख्याहरू खोज्न सक्छन् जसले कुन विशेषताले मोडलको भविष्यवाणी चलाएको हो पत्ता लगाउन मद्दत गर्छ। विश्वव्यापी व्याख्याहरूले मोडलको समग्र भविष्यवाणीलाई प्रभावित गर्ने शीर्ष विशेषताहरू सूचीबद्ध गर्छ। स्थानीय व्याख्याहरूले व्यक्तिगत केसका लागि मोडलले भविष्यवाणी किन गर्‍यो देखाउँछ। स्थानीय व्याख्याहरूको मूल्याङ्कन गरि एक विशिष्ट केस डिबग वा अडिट गर्न सकिन्छ जसले किन मोडलले सटीक वा अशुद्ध भविष्यवाणी गर्‍यो बुझ्न सजिलो बनाउँछ। -* मोडेल डिबगिङ: मेरो मोडेलले यो गल्ती किन गर्यो? म आफ्नो मोडेललाई कसरी सुधार गर्न सक्छु? -* मानव-AI सहयोग: म मोडेलको निर्णयलाई कसरी बुझ्न र विश्वास गर्न सक्छु? -* नियामक अनुपालन: के मेरो मोडेलले कानुनी आवश्यकताहरू पूरा गर्छ? +![RAI ड्यासबोर्डको विशेषता महत्व कम्पोनेन्ट](../../../../translated_images/ne/9-feature-importance.cd3193b4bba3fd4b.webp) -RAI ड्यासबोर्डको विशेषता महत्त्व कम्पोनेन्टले मोडेलले भविष्यवाणी कसरी गर्छ भन्ने व्यापक समझ प्राप्त गर्न र डिबग गर्न मद्दत गर्छ। यो मेसिन लर्निङ पेशेवरहरू र निर्णयकर्ताहरूका लागि उपयोगी उपकरण हो, जसले मोडेलको व्यवहारलाई चलाउने विशेषताहरूको प्रमाण देखाउन र व्याख्या गर्न नियामक अनुपालनका लागि मद्दत गर्छ। प्रयोगकर्ताहरूले विश्वव्यापी र स्थानीय व्याख्याहरू अन्वेषण गरेर मोडेलको भविष्यवाणीलाई चलाउने विशेषताहरूको मान्यता प्राप्त गर्न सक्छन्। विश्वव्यापी व्याख्याहरूले मोडेलको समग्र भविष्यवाणीलाई प्रभावित गर्ने शीर्ष विशेषताहरू सूचीबद्ध गर्छ। स्थानीय व्याख्याहरूले व्यक्तिगत केसको लागि मोडेलको भविष्यवाणीलाई चलाउने विशेषताहरू देखाउँछ। स्थानीय व्याख्याहरूको मूल्याङ्कन गर्ने क्षमता डिबगिङ वा अडिटिङको विशिष्ट केसमा पनि उपयोगी छ ताकि मोडेलले सटीक वा असटीक भविष्यवाणी किन गर्यो भन्ने कुरा राम्रोसँग बुझ्न र व्याख्या गर्न सकियोस्। +* विश्वव्यापी व्याख्या: उदाहरणका लागि, डायबिटिज अस्पताल पुनः भर्ना मोडलको सामान्य व्यवहारलाई कुन विशेषताले असर गरिरहेको छ? +* स्थानीय व्याख्या: उदाहरणका लागि, किन ६० वर्षभन्दा माथि डायबेटिक बिरामी जसलाई पहिले अस्पताल भर्ना गरिएको थियो ३० दिनभित्र पुनः अस्पतालमा भर्ना वा नतिको भविष्यवाणी गरिएको? -![RAI ड्यासबोर्डको विशेषता महत्त्व कम्पोनेन्ट](../../../../9-Real-World/2-Debugging-ML-Models/images/9-feature-importance.png) +विभिन्न समूहहरूमा मोडलको प्रदर्शन परीक्षण गर्ने डिबगिङ प्रक्रियामा, विशेषता महत्वले समूहहरूमा एउटा विशेषताले कस्तो प्रभाव पारिरहेको छ देखाउँछ। यो मोडलको गलत भविष्यवाणी गर्नमा विशेषताले कत्तिको प्रभावकारी छ पत्ता लगाउँदा विसंगति प्रकट गर्न मद्दत गर्छ। यदि कुनै मोडेलले गलत भविष्यवाणी गर्‍यो भने, यस कम्पोनेन्टले तपाईंलाई विशेषता वा विशेषता मानहरू चिन्न मद्दत गर्छ जुन भविष्यवाणीको कारण भए। यसले केवल डिबगिङमै होइन, auditing अवस्थामा पारदर्शिता र जवाफदेहिता पनि प्रदान गर्छ। अन्त्यमा, कम्पोनेन्टले तपाईंलाई न्यायसम्बन्धी समस्या पत्ता लगाउन मद्दत गर्छ। उदाहरणका लागि, यदि संवेदनशील विशेषता जस्तै जातीयता वा लिंगले मोडलको भविष्यवाणीमा धेरै प्रभाव पारिरहेको छ भने, यो जातीय वा लिंग पक्षपातको संकेत हुन सक्छ। -* विश्वव्यापी व्याख्याहरू: उदाहरणका लागि, मधुमेह अस्पताल पुनः भर्ना मोडेलको समग्र व्यवहारलाई कुन विशेषताहरूले प्रभावित गर्छन्? -* स्थानीय व्याख्याहरू: उदाहरणका लागि, किन ६० वर्षभन्दा माथिका मधुमेह रोगीलाई पुनः भर्ना हुने वा ३० दिनभित्र अस्पतालमा पुनः भर्ना नहुने भविष्यवाणी गरियो? +![विशेषता महत्व](../../../../translated_images/ne/9-features-influence.3ead3d3f68a84029.webp) -मोडेलको प्रदर्शनलाई विभिन्न समूहहरूमा जाँच गर्ने डिबगिङ प्रक्रियामा, विशेषता महत्त्वले समूहहरूमा विशेषताको प्रभावको स्तर देखाउँछ। यो मोडेलको त्रुटिपूर्ण भविष्यवाणीलाई चलाउने विशेषताको प्रभावको स्तर तुलना गर्दा असमानता उजागर गर्न मद्दत गर्छ। विशेषता महत्त्व कम्पोनेन्टले विशेषतामा भएका मानहरूले मोडेलको परिणामलाई सकारात्मक वा नकारात्मक रूपमा कसरी प्रभावित गर्यो भन्ने देखाउन सक्छ। उदाहरणका लागि, यदि मोडेलले असटीक भविष्यवाणी गर्यो भने, कम्पोनेन्टले भविष्यवाणीलाई चलाउने विशेषता वा विशेषता मानहरू पत्ता लगाउन र विश्लेषण गर्न सक्षम बनाउँछ। यो स्तरको विवरणले न केवल डिबगिङमा मद्दत गर्छ, तर अडिटिङ परिदृश्यहरूमा पारदर्शिता र उत्तरदायित्व प्रदान गर्छ। अन्ततः, कम्पोनेन्टले निष्पक्षता समस्याहरू पहिचान गर्न मद्दत गर्न सक्छ। उदाहरणका लागि, -- **अधिक वा कम प्रतिनिधित्व**। विचार यो हो कि कुनै निश्चित समूहलाई कुनै निश्चित पेशामा देखिँदैन, र कुनै पनि सेवा वा कार्य जसले यसलाई निरन्तर प्रवर्द्धन गरिरहन्छ, त्यो हानिकारक योगदान गरिरहेको छ। +व्याख्याशीलता तब प्रयोग गर्नुहोस् जब तपाईं: + +* तपाईंको 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 द्वारा +विषयहरूमा अझ गहिराइमा जान यस कार्यशाला हेर्नुहोस्: -[![जिम्मेवार AI ड्यासबोर्ड: व्यवहारमा RAI सञ्चालनका लागि एक-स्टप समाधान](https://img.youtube.com/vi/f1oaDNl3djg/0.jpg)](https://www.youtube.com/watch?v=f1oaDNl3djg "जिम्मेवार AI ड्यासबोर्ड: व्यवहारमा RAI सञ्चालनका लागि एक-स्टप समाधान") +- जिम्मेवार AI ड्यासबोर्ड: अभ्यासमा RAI सञ्चालन गर्न एक-स्टप पसल, प्रस्तुतकर्ता Besmira Nushi र Mehrnoosh Sameki +[![Responsible AI Dashboard: One-stop shop for operationalizing RAI in practice](https://img.youtube.com/vi/f1oaDNl3djg/0.jpg)](https://www.youtube.com/watch?v=f1oaDNl3djg "Responsible AI Dashboard: One-stop shop for operationalizing RAI in practice") -> 🎥 माथिको छवि क्लिक गर्नुहोस् भिडियोका लागि: जिम्मेवार 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 - -![Samenvatting van verantwoorde AI in Machine Learning in een sketchnote](../../../../sketchnotes/ml-fairness.png) -> 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 + +![Samenvatting van verantwoordelijke AI in Machine Learning in een schetsnotitie](../../../../translated_images/nl/ml-fairness.ef296ebec6afc98a.webp) +> 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. -[![Microsoft's Approach to Responsible AI](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoft's Approach to Responsible AI") +[![Microsofts Benadering van Verantwoordelijke AI](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](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](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) +![vertaling naar Turks](../../../../translated_images/nl/gender-bias-translate-en-tr.f185fd8822c2d437.webp) > vertaling naar Turks -![vertaling terug naar Engels](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) +![vertaling terug naar Engels](../../../../translated_images/nl/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) > 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. +[![Toonaangevende AI-onderzoeker waarschuwt voor massale surveillance via gezichtsherkenning](../../../../translated_images/nl/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft's Approach to Responsible AI") -[![Leading AI Researcher Warns of Mass Surveillance Through Facial Recognition](../../../../1-Introduction/3-fairness/images/accountability.png)](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 -[![Responsible AI Toolbox: Een open-source framework voor het bouwen van verantwoorde AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: Een open-source framework voor het bouwen van verantwoorde AI") +[![Responsible AI Toolbox: An open-source framework for building responsible AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") -> 🎥 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 -![Samenvatting van regressies in een sketchnote](../../../../sketchnotes/ml-regression.png) +![Samenvatting van regressies in een sketchnote](../../../../translated_images/nl/ml-regression.4e4f70e3b3ed446e.webp) > 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 -[![ML voor beginners - Stel je tools in om Machine Learning-modellen te bouwen](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML voor beginners - Stel je tools in om Machine Learning-modellen te bouwen") +[![ML voor beginners - Stel je tools klaar om Machine Learning modellen te bouwen](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](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 > > [![Python instellen met Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](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. -[![ML voor beginners - Stel Jupyter Notebooks in om regressiemodellen te bouwen](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML voor beginners - Stel Jupyter Notebooks in om regressiemodellen te bouwen") +[![ML voor beginners - Stel Jupyter Notebooks in om met regressiemodellen te beginnen](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](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 ``` -![VS Code met een notebook geopend](../../../../2-Regression/1-Tools/images/notebook.jpg) +![VS Code met een open notebook](../../../../translated_images/nl/notebook.4a3ee31f396b8832.webp) -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. + [![ML voor beginners - Je eerste lineaire regressieproject in Python](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](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() ``` - ![een scatterplot die datapunten rond diabetes toont](../../../../2-Regression/1-Tools/images/scatterplot.png) -✅ 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. + ![een spreidingsdiagram met datapunten rond diabetes](../../../../translated_images/nl/scatterplot.ad8b356bcbb33be6.webp) + + + ✅ 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 over datavisualisatie](../../../../2-Regression/2-Data/images/data-visualization.png) +![Data visualisatie infographic](../../../../translated_images/nl/data-visualization.54e56dded7c1a804.webp) 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. -[![ML voor beginners - Hoe een dataset analyseren en opschonen](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML voor beginners - Hoe een dataset analyseren en opschonen") +[![ML voor beginners - Hoe een dataset te analyseren en schoon te maken](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](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. [![ML voor beginners - Hoe data visualiseren met Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](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() ``` - ![Een scatterplot die de relatie tussen prijs en maand toont](../../../../2-Regression/2-Data/images/scatterplot.png) + ![Een scatterplot die de relatie prijs tot maand toont](../../../../translated_images/nl/scatterplot.b6868f44cbd2051c.webp) - 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") ``` - ![Een staafdiagram die de relatie tussen prijs en maand toont](../../../../2-Regression/2-Data/images/barchart.png) + ![Een staafgrafiek die de relatie prijs tot maand toont](../../../../translated_images/nl/barchart.a833ea9194346d76.webp) + + 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) + ``` + + ![Een Seaborn scatterplot die prijs tot maand relatie toont](../../../../translated_images/nl/relplot.a03837d8f0329cec.webp) + + 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) + ``` + + ![Een Seaborn lijngrafiek die prijs tot maand relatie toont](../../../../translated_images/nl/lineplot.f9034ba47b1e30ee.webp) + + 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") + ``` + + ![Een Seaborn staafdiagram dat de prijsverdeling per maand toont](../../../../translated_images/nl/catplot.e73fc35fdf96242b.webp) + + 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") + ``` + + ![Een Seaborn heatmap die correlaties tussen de numerieke kolommen toont](../../../../translated_images/nl/heatmap.bd98dce43b404c57.webp) + + 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 -![Samenvatting van reinforcement in machine learning in een sketchnote](../../../../sketchnotes/ml-reinforcement.png) +![Samenvatting van reinforcement in machine learning in een sketchnote](../../../../translated_images/nl/ml-reinforcement.94024374d63348db.webp) > 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. -[![Introductie tot Reinforcement Learning](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) +[![Intro tot Reinforcement Learning](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](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: -![Peters Omgeving](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![Peter's Omgeving](../../../../translated_images/nl/environment.40ba3cb66256c93f.webp) -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)`. -![Peters Omgeving](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![Peter's Omgeving](../../../../translated_images/nl/env_init.04e8f26d2d60089e.webp) -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 - -![Oppsummering av ansvarlig AI i maskinlæring i en sketchnote](../../../../sketchnotes/ml-fairness.png) +# Bygge maskinlæringsløsninger med ansvarlig KI + +![Oppsummering av ansvarlig KI i maskinlæring i en sketchnote](../../../../translated_images/no/ml-fairness.ef296ebec6afc98a.webp) > 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) -[![Microsofts tilnærming til ansvarlig AI](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsofts tilnærming til ansvarlig AI") +[![Microsofts tilnærming til ansvarlig KI](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](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](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) +![oversettelse til tyrkisk](../../../../translated_images/no/gender-bias-translate-en-tr.f185fd8822c2d437.webp) > oversettelse til tyrkisk -![oversettelse tilbake til engelsk](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) +![oversettelse tilbake til engelsk](../../../../translated_images/no/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) > 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. - -[![Ledende AI-forsker advarer om masseovervåking gjennom ansiktsgjenkjenning](../../../../1-Introduction/3-fairness/images/accountability.png)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsofts tilnærming til ansvarlig AI") +[![Ledende AI-forsker advarer om masseovervåkning gjennom ansiktsgjenkjenning](../../../../translated_images/no/accountability.41d8c0f4b85b6231.webp)](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: -[![Responsible AI Toolbox: En åpen kildekode-rammeverk for å bygge ansvarlig AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](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 +[![Responsible AI Toolbox: Et åpen kildekode-rammeverk for bygging av ansvarlig AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](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 -![Oppsummering av regresjoner i en sketchnote](../../../../sketchnotes/ml-regression.png) +![Oversikt over regresjoner i en sketchnote](../../../../translated_images/no/ml-regression.4e4f70e3b3ed446e.webp) > 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 -[![ML for nybegynnere - Sett opp verktøyene dine for å bygge maskinlæringsmodeller](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML for nybegynnere - Sett opp verktøyene dine for å bygge maskinlæringsmodeller") +[![ML for nybegynnere - Sett opp verktøyene dine klare til å bygge maskinlæringsmodeller](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](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) > > [![Sett opp Python med Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](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. -[![ML for nybegynnere - Sett opp Jupyter-notatbøker for å begynne å bygge regresjonsmodeller](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML for nybegynnere - Sett opp Jupyter-notatbøker for å begynne å bygge regresjonsmodeller") +[![ML for nybegynnere - Sett opp Jupyter Notebooks for å begynne å bygge regresjonsmodeller](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](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 ``` -![VS Code med en åpen notatbok](../../../../2-Regression/1-Tools/images/notebook.jpg) +![VS Code med en åpnet notebook](../../../../translated_images/no/notebook.4a3ee31f396b8832.webp) -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. [![ML for nybegynnere - Ditt første lineære regresjonsprosjekt i Python](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](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() ``` - ![et spredningsdiagram som viser datapunkter rundt diabetes](../../../../2-Regression/1-Tools/images/scatterplot.png) -✅ 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. + ![et spredningsplott som viser datapunkter om diabetes](../../../../translated_images/no/scatterplot.ad8b356bcbb33be6.webp) + + + ✅ 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 for datavisualisering](../../../../2-Regression/2-Data/images/data-visualization.png) +![Data visualisering infografikk](../../../../translated_images/no/data-visualization.54e56dded7c1a804.webp) 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. -[![ML for nybegynnere - Hvordan analysere og rense et datasett](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML for nybegynnere - Hvordan analysere og rense et datasett") +[![ML for nybegynnere - Hvordan analysere og rydde et datasett](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](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. [![ML for nybegynnere - Hvordan visualisere data med Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](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() ``` - ![Et spredningsdiagram som viser pris til måned-forhold](../../../../2-Regression/2-Data/images/scatterplot.png) + ![Et spredningsdiagram som viser forholdet mellom pris og måned](../../../../translated_images/no/scatterplot.b6868f44cbd2051c.webp) - 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") ``` - ![Et stolpediagram som viser pris til måned-forhold](../../../../2-Regression/2-Data/images/barchart.png) + ![Et stolpediagram som viser forholdet mellom pris og måned](../../../../translated_images/no/barchart.a833ea9194346d76.webp) + + 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) + ``` + + ![Et Seaborn-spredningsdiagram som viser forholdet mellom pris og måned](../../../../translated_images/no/relplot.a03837d8f0329cec.webp) + + 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) + ``` + + ![Et Seaborn-linjediagram som viser pris til måned-forhold](../../../../translated_images/no/lineplot.f9034ba47b1e30ee.webp) + + 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") + ``` + + ![A Seaborn bar chart showing the price distribution per month](../../../../translated_images/no/catplot.e73fc35fdf96242b.webp) + + 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") + ``` + + ![A Seaborn heatmap showing correlations between the numeric columns](../../../../translated_images/no/heatmap.bd98dce43b404c57.webp) + + 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 -![Oppsummering av forsterkning i maskinlæring i en sketchnote](../../../../sketchnotes/ml-reinforcement.png) +![Oppsummering av forsterkning i maskinlæring i en sketchnote](../../../../translated_images/no/ml-reinforcement.94024374d63348db.webp) > 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. [![Intro til forsterkende læring](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](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: -![Peters miljø](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![Peters miljø](../../../../translated_images/no/environment.40ba3cb66256c93f.webp) 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: - ![Peters tilfeldige vandring](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) + ![Peters tilfeldige gange](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) ## 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)`. -![Peters miljø](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![Peters miljø](../../../../translated_images/no/env_init.04e8f26d2d60089e.webp) -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. + +![Den store flukten!](../../../../translated_images/no/escape.18862db9930337e3.webp) + +> 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. + +en cartpole + ## 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: - ![ikke-balanserende CartPole](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) + ![cartpole uten balanse](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) -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) ``` -![rå fremgang](../../../../8-Reinforcement/2-Gym/images/train_progress_raw.png) +![rå progresjon](../../../../translated_images/no/train_progress_raw.2adfdf2daea09c59.webp) -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)) ``` -![treningsfremgang](../../../../8-Reinforcement/2-Gym/images/train_progress_runav.png) +![treningsprogresjon](../../../../translated_images/no/train_progress_runav.c71694a8fa9ab359.webp) + +## 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: -![en balanserende cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) +![en balanserende vognstang](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) --- ## 🚀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 @@ -# ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਦਾ ਇਤਿਹਾਸ +# ਮਸ਼ੀਨ ਲਰ್ನਿੰਗ ਦਾ ਇਤਿਹਾਸ -![ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਦੇ ਇਤਿਹਾਸ ਦਾ ਸਾਰ](../../../../sketchnotes/ml-history.png) -> ਸਕੈਚਨੋਟ [Tomomi Imura](https://www.twitter.com/girlie_mac) ਦੁਆਰਾ +![ਮਸ਼ੀਨ ਲਰ্নਿੰਗ ਦੇ ਇਤਿਹਾਸ ਦਾ ਸਾਰ ਸ્ਕੇટਨોટ ਵਿੱਚ](../../../../translated_images/pa/ml-history.a1bdfd4ce1f464d9.webp) +> ਸਕેਟਨોટ [ਟੋਮੋਮੀ ਇਮੁਰਾ](https://www.twitter.com/girlie_mac) ਵਲੋਂ -## [ਪ੍ਰੀ-ਲੈਕਚਰ ਕਵਿਜ਼](https://ff-quizzes.netlify.app/en/ml/) +## [ਪੂਰਵ-ਲੇਕਚਰ ਕਵਿਜ਼](https://ff-quizzes.netlify.app/en/ml/) --- -[![ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਲਈ ਸ਼ੁਰੂਆਤੀ - ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਦਾ ਇਤਿਹਾਸ](https://img.youtube.com/vi/N6wxM4wZ7V0/0.jpg)](https://youtu.be/N6wxM4wZ7V0 "ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਲਈ ਸ਼ੁਰੂਆਤੀ - ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਦਾ ਇਤਿਹਾਸ") +[![ਨਵਾਂ ਸਿਖਣ ਵਾਲਿਆਂ ਲਈ ML - ਮਸ਼ੀਨ ਲਰਣਿੰਗ ਦਾ ਇਤਿਹਾਸ](https://img.youtube.com/vi/N6wxM4wZ7V0/0.jpg)](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, ਇੱਕ ਬੁੱਧੀਮਾਨ ਰੋਬੋਟ](../../../../1-Introduction/2-history-of-ML/images/shakey.jpg) - > Shakey 1972 ਵਿੱਚ + ![ਸ਼ੇਕੀ, ਇੱਕ ਸੁਚੇਤ ਰੋਬੋਟ](../../../../translated_images/pa/shakey.4dc17819c447c05b.webp) + > 1972 ਵਿੱਚ ਸ਼ੇਕੀ --- -* Eliza, ਇੱਕ ਸ਼ੁਰੂਆਤੀ 'ਚੈਟਰਬੋਟ', ਲੋਕਾਂ ਨਾਲ ਗੱਲਬਾਤ ਕਰ ਸਕਦੀ ਸੀ ਅਤੇ ਇੱਕ ਆਦਿ 'ਥੈਰਾਪਿਸਟ' ਵਜੋਂ ਕੰਮ ਕਰ ਸਕਦੀ ਸੀ। ਤੁਸੀਂ NLP ਪਾਠਾਂ ਵਿੱਚ Eliza ਬਾਰੇ ਹੋਰ ਸਿੱਖੋਗੇ। +* ਏਲਿਜ਼ਾ, ਇੱਕ ਸ਼ੁਰੂਆਤੀ 'ਚੈਟਰਬੋਟ', ਲੋਕਾਂ ਨਾਲ ਗੱਲਬਾਤ ਕਰ ਸਕਦਾ ਸੀ ਅਤੇ ਇੱਕ ਪ੍ਰਾਚੀਨ 'ਥੇਰਾਪਿਸਟ' ਵਜੋਂ ਕੰਮ ਕਰਦਾ ਸੀ। ਤੁਸੀਂ NLP ਪਾਠਾਂ ਵਿੱਚ ਏਲਿਜ਼ਾ ਬਾਰੇ ਹੋਰ ਜਾਣੋਗੇ। - ![Eliza, ਇੱਕ ਬੋਟ](../../../../1-Introduction/2-history-of-ML/images/eliza.png) - > Eliza ਦਾ ਇੱਕ ਵਰਜਨ, ਇੱਕ ਚੈਟਬੋਟ + ![ਏਲਿਜ਼ਾ, ਇੱਕ ਰੋਬੋਟ](../../../../translated_images/pa/eliza.84397454cda9559b.webp) + > ਏਲਿਜ਼ਾ ਦਾ ਇੱਕ ਸੰਸਕਰਣ, ਇੱਕ ਚੈਟਬੋਟ --- -* "Blocks world" ਇੱਕ ਮਾਈਕਰੋ-ਵਰਲਡ ਦਾ ਉਦਾਹਰਨ ਸੀ ਜਿੱਥੇ ਬਲਾਕਾਂ ਨੂੰ ਢੇਰ ਅਤੇ ਵੱਖਰਾ ਕੀਤਾ ਜਾ ਸਕਦਾ ਸੀ, ਅਤੇ ਮਸ਼ੀਨਾਂ ਨੂੰ ਫੈਸਲੇ ਕਰਨ ਸਿਖਾਉਣ ਦੇ ਪ੍ਰਯੋਗ ਕੀਤੇ ਜਾ ਸਕਦੇ ਸਨ। SHRDLU ਵਰਗੀਆਂ ਲਾਇਬ੍ਰੇਰੀਆਂ ਨਾਲ ਬਣੇ ਤਰੱਕੀਆਂ ਨੇ ਭਾਸ਼ਾ ਪ੍ਰੋਸੈਸਿੰਗ ਨੂੰ ਅੱਗੇ ਵਧਾਇਆ। +* "ਬਲਾਕਸ ਵਰਲਡ" ਇੱਕ ਮਾਈਕ੍ਰੋ-ਵਰਲਡ ਦਾ ਉਦਾਹਰਨ ਸੀ, ਜਿੱਥੇ ਬਲਾਕਸ ਨੂੰ ਸਟੈਕ ਅਤੇ ਸੌਰਟ ਕੀਤਾ ਜਾ ਸਕਦਾ ਸੀ, ਅਤੇ ਮਸ਼ੀਨਾਂ ਨੂੰ ਫੈਸਲੇ ਕਰਨ ਦੀ ਸਿੱਖਿਆ ਦੀਆਂ ਪ੍ਰਕਟਣਾਂ ਜਾਂਚੀਆਂ ਜਾ ਸكنਦੀਆਂ ਸਨ। [SHRDLU](https://wikipedia.org/wiki/SHRDLU) ਵਰਗੀਆਂ ਲਾਇਬਰੇਰੀਜ਼ ਨਾਲ ਬਣੀ ਤਰੱਕੀ ਨੇ ਭਾਸ਼ਾ ਪ੍ਰੋਸੈਸਿੰਗ ਨੂੰ ਅੱਗੇ ਵਧਾਈ। - [![SHRDLU ਨਾਲ blocks world](https://img.youtube.com/vi/QAJz4YKUwqw/0.jpg)](https://www.youtube.com/watch?v=QAJz4YKUwqw "SHRDLU ਨਾਲ blocks world") + [![SHRDLU ਨਾਲ ਬਲਾਕਸ ਵਰਲਡ](https://img.youtube.com/vi/QAJz4YKUwqw/0.jpg)](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://img.youtube.com/vi/mTtDfKgLm54/0.jpg)](https://www.youtube.com/watch?v=mTtDfKgLm54 "ਡੀਪ ਲਰਨਿੰਗ ਦਾ ਇਤਿਹਾਸ") +> 🎥 ਉਪਰ ਦਿੱਤੀ ਚਿੱਤਰ ਕਲਿੱਕ ਕਰ ਕੇ ਵੀਡੀਓ: ਯਾਨ ਲੇਕਨ ਇਸ ਲੇਕਚਰ ਵਿੱਚ ਡੀਪ ਲਰਨਿੰਗ ਦੇ ਇਤਿਹਾਸ ਦੀ ਚਰਚਾ ਕਰਦੇ ਹਨ + +--- +## 🚀ਚੁਣੌਤੀ + +ਇਨ੍ਹਾਂ ਇਤਿਹਾਸਕ ਪਲਾਂ ਵਿੱਚੋਂ ਕਿਸੇ ਇੱਕ ਵਿੱਚ ਡੂੰਘਾਈ ਨਾਲ ਜਾਣ ਅਤੇ ਉਹਨਾਂ ਸ਼ਖਸੀਅਤਾਂ ਬਾਰੇ ਜ਼ਿਆਦਾ ਜਾਣੋ। ਇਥੇ ਦਿਲਚਸਪ ਵਿਅਕਤੀ ਹਨ, ਅਤੇ ਕੋਈ ਵੀ ਵਿਗਿਆਨਕ ਖੋਜ ਕਦੇ ਵੀ ਸਾਂਸਕ੍ਰਿਤਕ ਖਾਲੀ ਜਗ੍ਹਾ 'ਚ ਨਹੀਂ ਬਣੀ। ਤੁਸੀਂ ਕੀ ਖੋਜਦੇ ਹੋ? + +## [ਪੋਸਟ-ਲੇਕਚਰ ਕਵਿਜ਼](https://ff-quizzes.netlify.app/en/ml/) + +--- +## ਸਮੀਖਿਆ ਅਤੇ ਸਵਯੰ ਅਧਿਆਨ + +ਇੱਥੇ ਕੁਝ ਚੀਜ਼ਾਂ ਹਨ ਜੋ ਤੁਸੀਂ ਦੇਖ ਅਤੇ ਸੁਣ ਸਕਦੇ ਹੋ: + +[ਇਹ ਪਾਡਕਾਸਟ ਜਿਸ ਵਿੱਚ ਐਮੀ ਬੋਇਡ AI ਦੀ ਵਿਕਾਸ 'ਤੇ ਚਰਚਾ ਕਰਦੀ ਹੈ](http://runasradio.com/Shows/Show/739) + +[![ਐਮੀ ਬੋਇਡ ਵੱਲੋਂ AI ਦਾ ਇਤਿਹਾਸ](https://img.youtube.com/vi/EJt3_bFYKss/0.jpg)](https://www.youtube.com/watch?v=EJt3_bFYKss "ਐਮੀ ਬੋਇਡ ਵੱਲੋਂ AI ਦਾ ਇਤਿਹਾਸ") + +--- + +## ਅਸਾਈਨਮੈਂਟ + +[ਟਾਈਮਲਾਈਨ ਬਣਾਓ](assignment.md) --- -**ਅਸਵੀਕਾਰਨਾ**: -ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀਤਾ ਲਈ ਯਤਨਸ਼ੀਲ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਚਨਾਵਾਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਇਸਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file + +**ਅਸਵੀਕਾਰੋਪਣ**: +ਇਸ ਦਸਤਾਵੇਜ਼ ਦਾ ਅਨੁਵਾਦ ਏਆਈ ਅਨੁਵਾਦ ਸੇਵਾ [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 ਨਾਲ ਬਣਾਉਣਾ - -![ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਵਿੱਚ ਜ਼ਿੰਮੇਵਾਰ AI ਦਾ ਸੰਖੇਪ](../../../../sketchnotes/ml-fairness.png) -> ਸਕੈਚਨੋਟ [ਟੋਮੋਮੀ ਇਮੁਰਾ](https://www.twitter.com/girlie_mac) ਦੁਆਰਾ - -## [ਪ੍ਰੀ-ਲੈਕਚਰ ਕਵਿਜ਼](https://ff-quizzes.netlify.app/en/ml/) +# ਜ਼ਿੰਮੇਵਾਰ AI ਨਾਲ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਹੱਲ ਬਣਾਉਣਾ + +![ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਵਿੱਚ ਜ਼ਿੰਮੇਵਾਰ AI ਦਾ ਸੰਖੇਪ ਇੱਕ ਸਕੈਚਨੋਟ ਵਿੱਚ](../../../../translated_images/pa/ml-fairness.ef296ebec6afc98a.webp) +> ਸਕੈਚਨੋਟ ਲੇਖਕ [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 ਬਾਰੇ ਹੋਰ ਸਿੱਖੋ -[![ਮਾਈਕਰੋਸਾਫਟ ਦਾ ਜ਼ਿੰਮੇਵਾਰ AI ਲਈ ਦ੍ਰਿਸ਼ਟੀਕੋਣ](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "ਮਾਈਕਰੋਸਾਫਟ ਦਾ ਜ਼ਿੰਮੇਵਾਰ AI ਲਈ ਦ੍ਰਿਸ਼ਟੀਕੋਣ") +[![Microsoft ਦੀ ਜ਼ਿੰਮੇਵਾਰ AI ਤਰੀਕਾ](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](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) +- **ਧੋਖਾਧੜੀ**: ਕਿਸੇ ਚੀਜ਼ ਜਾਂ ਕਿਸੇ ਨੂੰ ਅਨਿਆਂਪੂਰਕ ਆਲੋਚਨਾ ਕਰਨੀ ਜਾਂ ਲੇਬਲ ਲਾਉਣਾ। ਉਦਾਹਰਣ ਵਜੋਂ, ਇੱਕ ਚਿੱਤਰ ਲੇਬਲਿੰਗ ਤਕਨੀਕ ਨੇ ਕਾਲੇ ਚਿੱਬੜ ਵਾਲੇ ਲੋਕਾਂ ਦੀਆਂ ਤਸਵੀਰਾਂ ਨੂੰ ਗੋਰਿਲਾ ਦੇ ਤੌਰ ਤੇ ਗਲਤ ਲੇਬਲ ਕੀਤਾ। +- **ਅਧਿਕ ਜਾਂ ਘੱਟ ਪ੍ਰਤੀਨਿਧਿਤਾ**: ਵਿਚਾਰ ਇਹ ਹੈ ਕਿ ਇੱਕ ਸਮੂਹ ਕਿਸੇ ਖਾਸ ਪੇਸ਼ੇ ਵਿੱਚ ਨਹੀਂ ਦੇਖਿਆ ਜਾਂਦਾ ਅਤੇ ਕੋਈ ਵੀ ਸੇਵਾ ਜਾਂ ਕੰਮ ਜੋ ਇਸ ਸਮੂਹ ਨੂੰ ਅੱਗੇ ਵਧਾਉਂਦੀ ਹੈ, ਉਹ ਨੁਕਸਾਨ ਪਹੁੰਚਾ ਰਹੀ ਹੈ। +- **ਸਟੇਰੀਓਟਾਈਪਿੰਗ**: ਕਿਸੇ ਸਮੂਹ ਨੂੰ ਪਹਿਲਾਂ ਤੋਂ ਦਿੱਤੇ ਗਏ ਗੁਣਾਂ ਨਾਲ ਜੋੜਨਾ। ਉਦਾਹਰਣ ਵਜੋਂ, ਇੱਕ ਭਾਸ਼ਾ ਅਨੁਵਾਦ ਪ੍ਰਣਾਲੀ ਜਿਹੜਾ ਅੰਗਰੇਜ਼ੀ ਅਤੇ ਤੁਰਕੀ ਭਾਸ਼ਾ ਵਿਚਕਾਰ ਅਕਸਰਲੜੀਆਂ ਨਾਲ ਲਿੰਗ ਨਾਲ ਸਬੰਧਿਤ ਵਿਚਾਰਾਂ ਦੀ ਵਜ੍ਹਾ ਨਾਲ ਗਲਤੀਆਂ ਕਰ ਸਕਦੀ ਹੈ। -![ਤੁਰਕੀ ਵਿੱਚ ਅਨੁਵਾਦ](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) -> ਤੁਰਕੀ ਵਿੱਚ ਅਨੁਵਾਦ +![ਤੁਰਕੀ ਭਾਸ਼ਾ ਵਿੱਚ ਅਨੁਵਾਦ](../../../../translated_images/pa/gender-bias-translate-en-tr.f185fd8822c2d437.webp) +> ਤੁਰਕੀ ਭਾਸ਼ਾ ਵਿੱਚ ਅਨੁਵਾਦ -![ਵਾਪਸ ਅੰਗਰੇਜ਼ੀ ਵਿੱਚ ਅਨੁਵਾਦ](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) -> ਵਾਪਸ ਅੰਗਰੇਜ਼ੀ ਵਿੱਚ ਅਨੁਵਾਦ +![ਅੰਗਰੇਜ਼ੀ ਵਾਪਸ ਅਨੁਵਾਦ](../../../../translated_images/pa/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) +> ਅੰਗਰੇਜ਼ੀ ਵਾਪਸ ਅਨੁਵਾਦ -ਜਦੋਂ 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 ਸਿਸਟਮ ਵਿਅਕਤੀਆਂ ਜਾਂ ਸਮਾਜ 'ਤੇ ਕਿਵੇਂ ਪ੍ਰਭਾਵ ਪਾਉਂਦਾ ਹੈ। + +[![ਚਿਹਰਾ ਪਛਾਣ ਰਾਹੀਂ ਜਨਤਕ ਨਿਗਰਾਨੀ ਦੇ ਖ਼ਿਲਾਫ ਮੁਖਯ AI ਖੋਜਕਾਰ ਦੀ ਚੇਤਾਵਨੀ](../../../../translated_images/pa/accountability.41d8c0f4b85b6231.webp)](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 ਦੀ ਖੋਜ ਵਿੱਚ: ਸਿਧਾਂਤਾਂ ਨੂੰ ਅਮਲ ਵਿੱਚ ਲਿਆਉਣਾ, ਬੇਸਮੀਰਾ ਨੂਸ਼ੀ, ਮਹਰਨੂਸ਼ ਸਮੇਕੀ ਅਤੇ ਅਮਿਤ ਸ਼ਰਮਾ ਦੁਆਰਾ +ਇਸ ਪਾਠ ਵਿੱਚ, ਤੁਸੀਂ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਵਿੱਚ ਨਿਆਂ ਅਤੇ ਅਨਿਆਂ ਦੇ ਕੁਝ ਬੁਨਿਆਦੀ ਸਿਧਾਂਤ ਸਿੱਖੇ ਹਨ। + +ਇਸ ਵਰਕਸ਼ਾਪ ਨੂੰ ਦੇਖੋ ਤਾਂ ਜੋ ਵਿਸ਼ਿਆਂ ਵਿੱਚ ਹੋਰ ਗਹਿਰਾਈ ਨਾਲ ਜਾ ਸਕੋ: -[![ਜ਼ਿੰਮੇਵਾਰ AI Toolbox: ਜ਼ਿੰਮੇਵਾਰ AI ਬਣਾਉਣ ਲਈ ਇੱਕ ਖੁੱਲ੍ਹਾ-ਸਰੋਤ ਫਰੇਮਵਰਕ](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: ਜ਼ਿੰਮੇਵਾਰ AI ਬਣਾਉਣ ਲਈ ਇੱਕ ਖੁੱਲ੍ਹਾ-ਸਰੋਤ ਫਰੇਮਵਰਕ") +- ਜ਼ਿੰਮੇਵਾਰ ਏਆਈ ਦੀ ਖੋਜ ਵਿੱਚ: ਪ੍ਰਿੰਸੀਪਲ ਨੂੰ ਅਮਲ ਵਿੱਚ ਲਿਆਉਣਾ ਬੈਸਮੀਰਾ ਨੁਸ਼ੀ, ਮੇਹਰਨੂਸ਼ ਸਾਮੇਕੀ ਅਤੇ ਅਮਿਤ ਸ਼ਰਮਾ ਵੱਲੋਂ +[![Responsible AI Toolbox: An open-source framework for building responsible AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") -> 🎥 ਉਪਰ ਦਿੱਤੀ ਤਸਵੀਰ 'ਤੇ ਕਲਿੱਕ ਕਰੋ ਇੱਕ ਵੀਡੀਓ ਲਈ: 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 ਨਾਲ ਸ਼ੁਰੂਆਤ ਕਰੋ -![ਰਿਗ੍ਰੈਸ਼ਨ ਦਾ ਇੱਕ ਸਕੈਚਨੋਟ ਵਿੱਚ ਸਾਰ](../../../../sketchnotes/ml-regression.png) +![ਇੱਕ ਸਕੈਚਨੋਟ ਵਿੱਚ ਰਿਗ੍ਰੈਸ਼ਨਾਂ ਦਾ ਸੰਖੇਪ](../../../../translated_images/pa/ml-regression.4e4f70e3b3ed446e.webp) -> ਸਕੈਚਨੋਟ [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://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਮਾਡਲ ਬਣਾਉਣ ਲਈ ਆਪਣੇ ਟੂਲਸ ਸੈਟਅਪ ਕਰੋ") +[![ਨਵੀਂ ਸਿੱਖਿਆ ਲਈ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਮਾਡਲ ਬਣਾਉਣ ਲਈ ਆਪਣੇ ਟੂਲਜ਼ ਤਿਆਰ ਕਰੋ](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](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 ਨਾਲ ਪੱਕੀ ਪਹਿਚਾਣ ਬਣਾਓ। > - > [![Visual Studio Code ਨਾਲ ਪਾਇਥਨ ਸੈਟਅਪ ਕਰੋ](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Visual Studio Code ਨਾਲ ਪਾਇਥਨ ਸੈਟਅਪ ਕਰੋ") + > [![Visual Studio Code ਨਾਲ Python ਸੈਟਅਪ ਕਰੋ](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](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` ਨਾਲ ਪਹਚਾਣਿਆ ਜਾਂਦਾ ਹੈ। -ਨੋਟਬੁੱਕਸ ਇੱਕ ਇੰਟਰਐਕਟਿਵ ਵਾਤਾਵਰਣ ਹੈ ਜੋ ਵਿਕਸਿਤ ਕਰਨ ਵਾਲੇ ਨੂੰ ਕੋਡ ਲਿਖਣ ਅਤੇ ਕੋਡ ਦੇ ਆਲੇ-ਦੁਆਲੇ ਨੋਟਸ ਅਤੇ ਦਸਤਾਵੇਜ਼ ਲਿਖਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ, ਜੋ ਪ੍ਰਯੋਗਾਤਮਕ ਜਾਂ ਖੋਜ-ਅਧਾਰਿਤ ਪ੍ਰੋਜੈਕਟਾਂ ਲਈ ਕਾਫ਼ੀ ਮਦਦਗਾਰ ਹੁੰਦਾ ਹੈ। +ਨੋਟਬੁੱਕ ਇੱਕ ਇੰਟਰਐਕਟਿਵ ਵਾਤਾਵਰਨ ਹੈ ਜੋ ਵਿਕਾਸਕਾਰ ਨੂੰ ਕੋਡਿੰਗ ਕਰਨ ਅਤੇ ਕੋਡ ਦੇ ਆਲੇ-ਦੁਆਲੇ ਟਿੱਪਣੀਆਂ ਅਤੇ ਦਸਤਾਵੇਜ਼ ਲਿਖਣ ਦੀ ਆਜ਼ਾਦੀ ਦਿੰਦਾ ਹੈ, ਜੋ ਪ੍ਰਯੋਗ ਜਾਂ ਖੋਜ-ਮੁਖੀ ਪਰਿਯੋਜਨਾਵਾਂ ਲਈ ਬਹੁਤ ਮਦਦਗਾਰ ਹੁੰਦਾ ਹੈ। -[![ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਲਈ ਸ਼ੁਰੂਆਤ - Jupyter Notebooks ਸੈਟਅਪ ਕਰੋ](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਲਈ ਸ਼ੁਰੂਆਤ - Jupyter Notebooks ਸੈਟਅਪ ਕਰੋ") +[![ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਨਵਾਂ ਸਿਖਣ ਵਾਲਿਆਂ ਲਈ - ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲ ਬਣਾਉਂਦੇ ਹੋਏ Jupyter Notebooks ਸੈੱਟ ਕਰੋ](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](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 ``` -![VS Code ਵਿੱਚ ਇੱਕ ਨੋਟਬੁੱਕ ਖੁੱਲ੍ਹੀ](../../../../2-Regression/1-Tools/images/notebook.jpg) +![ਨੋਟਬੁੱਕ ਖੁੱਲਿਆ ਹੋਇਆ VS ਕੋਡ](../../../../translated_images/pa/notebook.4a3ee31f396b8832.webp) -ਤੁਸੀਂ ਆਪਣੇ ਕੋਡ ਨੂੰ ਟਿੱਪਣੀਆਂ ਨਾਲ ਆਪ-ਦਸਤਾਵੇਜ਼ ਕਰਨ ਲਈ ਆਪਣੇ ਕੋਡ ਦੇ ਨਾਲ-ਨਾਲ ਟਿੱਪਣੀਆਂ ਸ਼ਾਮਲ ਕਰ ਸਕਦੇ ਹੋ। +ਤੁਸੀਂ ਆਪਣੇ ਕੋਡ ਵਿੱਚ ਟਿੱਪਣੀਆਂ ਦੋਹਰਾਉਂਦੇ ਹੋਏ ਨੋਟਬੁੱਕ ਨੂੰ ਆਪਣਾ ਦਸਤਾਵੇਜ਼ੀਕਰਨ ਦੇ ਸਕਦੇ ਹੋ। -✅ ਇੱਕ ਮਿੰਟ ਲਈ ਸੋਚੋ ਕਿ ਇੱਕ ਵੈੱਬ ਡਿਵੈਲਪਰ ਦਾ ਕੰਮ ਕਰਨ ਦਾ ਵਾਤਾਵਰਣ ਡਾਟਾ ਸਾਇੰਟਿਸਟ ਦੇ ਵਾਤਾਵਰਣ ਤੋਂ ਕਿੰਨਾ ਵੱਖਰਾ ਹੈ। +✅ ਇੱਕ ਮਿੰਟ ਲਈ ਸੋਚੋ ਕਿ ਵੈੱਬ ਡਿਵੈਲਪਰ ਦਾ ਕੰਮ ਕਰਨ ਵਾਲਾ ਵਾਤਾਵਰਨ ਡਾਟਾ ਵਿਗਿਆਨੀ ਦੇ ਵਾਤਾਵਰਨ ਨਾਲ ਕਿੰਨਾ ਵੱਖਰਾ ਹੁੰਦਾ ਹੈ। -## 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://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਲਈ ਸ਼ੁਰੂਆਤ - ਪਾਇਥਨ ਵਿੱਚ ਤੁਹਾਡਾ ਪਹਿਲਾ ਲੀਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਪ੍ਰੋਜੈਕਟ") -> 🎥 ਉਪਰੋਕਤ ਚਿੱਤਰ 'ਤੇ ਕਲਿਕ ਕਰੋ ਇੱਕ ਛੋਟੀ ਵੀਡੀਓ ਦੇਖਣ ਲਈ ਜੋ ਇਸ ਅਭਿਆਸ ਨੂੰ ਦਿਖਾਉਂਦੀ ਹੈ। +[![Python ਵਿੱਚ ਤੁਹਾਡਾ ਪਹਿਲਾ ਲੀਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਪ੍ਰਾਜੈਕਟ - ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਨਵੇਂ ਸਿਖਣ ਵਾਲੇ](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](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() + ``` + + ![ਮਧੁਮੇਹ ਸੰਬੰਧੀ ਡਾਟਾਪੁਆਇੰਟ ਦਿਖਾਉਂਦਾ ਸਕੈਟਰਪਲੌਟ](../../../../translated_images/pa/scatterplot.ad8b356bcbb33be6.webp) + + + ✅ ਇੱਥੇ ਕਿੰਝ ਚੱਲ ਰਿਹਾ ਹੈ ਬਾਰੇ ਕੁਝ ਸੋਚੋ। ਇੱਕ ਸਿੱਧੀ ਲਾਈਨ ਬਹੁਤ ਸਾਰੇ ਛੋਟੇ ਡਾਟਾ ਪੁਆਇੰਟਾਂ ਵਿੱਚੋਂ ਲੰਘ ਰਹੀ ਹੈ, ਪਰ ਇਹ ਸਹੀ-ਸਹੀ ਕੀ ਕਰ ਰਹੀ ਹੈ? ਕੀ ਤੁਸੀਂ ਵੇਖ ਸਕਦੇ ਹੋ ਕਿ ਤੁਸੀਂ ਇਸ ਲਾਈਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕਿਸੇ ਨਵੇਂ, ਅਣਦੇਖੇ ਡਾਟਾ ਪੁਆਇੰਟ ਦੀ ਪੋਜ਼ਿਸ਼ਨ ਪਲੌਟ ਦੇ 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 ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇੱਕ ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲ ਬਣਾਓ: ਡਾਟਾ ਤਿਆਰ ਕਰੋ ਅਤੇ ਦ੍ਰਿਸ਼ਟੀਕਰਨ ਕਰੋ -![ਡਾਟਾ ਵਿਜੁਅਲਾਈਜ਼ੇਸ਼ਨ ਇਨਫੋਗ੍ਰਾਫਿਕ](../../../../2-Regression/2-Data/images/data-visualization.png) +![ਡਾਟਾ ਦ੍ਰਿਸ਼ਟੀਕਰਨ ਇਨਫੋਗ੍ਰਾਫਿਕ](../../../../translated_images/pa/data-visualization.54e56dded7c1a804.webp) -ਇਨਫੋਗ੍ਰਾਫਿਕ [ਦਸਾਨੀ ਮਾਡੀਪੱਲੀ](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://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਲਈ ਸ਼ੁਰੂਆਤੀ - ਡਾਟਾਸੈੱਟ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਅਤੇ ਸਫਾਈ ਕਿਵੇਂ ਕਰਨੀ ਹੈ") +[![ਆਰੰਭਕਾਂ ਲਈ ਐਮ ਐਲ - ਡਾਟਾ ਸਾਫ਼-ਸਫਾਈ ਅਤੇ ਵਿਸ਼ਲੇਸ਼ਣ ਕਿਵੇਂ ਕਰੀਏ](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](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), ਗ੍ਰਾਫ, ਚਾਰਟ ਬਣਾਉਂਦੇ ਹਨ ਜੋ ਡਾਟੇ ਦੇ ਵੱਖ-ਵੱਖ ਪੱਖ ਦਿਖਾਉਂਦੇ ਹਨ। ਇਸ ਤਰੀਕੇ ਨਾਲ, ਉਹ ਸੰਬੰਧਾਂ ਅਤੇ ਖਾਮੀਆਂ ਜੋ ਆਮ ਤੌਰ 'ਤੇ ਪਤਾ ਲਗਾਉਣਾ ਮੁਸ਼ਕਲ ਹੁੰਦਾ ਹੈ, ਵਰਣਨ ਕਰ ਸਕਦੇ ਹਨ। + +[![ਆਰੰਭਕਾਂ ਲਈ ਐਮ ਐਲ - Matplotlib ਨਾਲ ਡਾਟਾ ਦ੍ਰਿਸ਼ਟੀਗ੍ਰਹਣ ਕਿਵੇਂ ਕਰੀਏ](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](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() + ``` + + ![ਮਹੀਨੇ ਨਾਲ ਕੀਮਤ ਦੇ ਸੰਬੰਧ ਨੂੰ ਦਰਸਾਉਂਦਾ scatterplot](../../../../translated_images/pa/scatterplot.b6868f44cbd2051c.webp) + + ਕੀ ਇਹ ਇੱਕ ਲਾਭਦਾਇਕ ਪਲਾਟ ਹੈ? ਕੀ ਤੁਹਾਨੂੰ ਇਸ ਵਿੱਚ ਕੋਈ ਹੈਰਾਨੀਜਨਕ ਗੱਲ ਮਿਲੀ? + + ਇਹ ਖ਼ਾਸ ਤੌਰ 'ਤੇ ਲਾਭਦਾਇਕ ਨਹੀਂ ਹੈ ਕਿਉਂਕਿ ਇਹ ਸਿਰਫ਼ ਵੱਖ-ਵੱਖ ਮਹੀਨਿਆਂ ਵਿੱਚ ਤੁਹਾਡੇ ਡਾਟਾ ਨੂੰ ਬਿੰਦੂਆਂ ਵਜੋਂ ਦਿਖਾਉਂਦਾ ਹੈ। + +### ਇਸ ਨੂੰ ਲਾਭਦਾਇਕ ਬਣਾਓ + +ਲਾਭਦਾਇਕ ਡੇਟਾ ਦਿਖਾਉਣ ਲਈ, ਅਕਸਰ ਤੁਸੀਂ ਡਾਟਾ ਨੂੰ ਸਮੂਹ ਕਰਨਾ ਹੁੰਦਾ ਹੈ। ਚਲੋ ਇੱਕ ਅਜਿਹਾ ਗ੍ਰੁੱਪ ਕੀਤਾ ਗਿਆ ਬਾਰ ਚਾਰਟ ਬਣਾਈਏ ਜਿਸ ਵਿੱਚ y ਅਕਸ ਦਰਸਾਵੇ ਮਹੀਨੇ ਅਤੇ ਡਾਟਾ ਵੰਡ ਨੂੰ ਦਰਸਾਵੇ। + +1. ਇੱਕ ਸੈੱਲ ਸ਼ਾਮਿਲ ਕਰੋ ਜੋ ਇੱਕ ਗ੍ਰੁੱਪ ਕੀਤਾ ਗਿਆ ਬਾਰ ਚਾਰਟ ਬਣਾਵੇ: + + ```python + new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') + plt.ylabel("Pumpkin Price") + ``` + + ![ਮਹੀਨੇ ਨਾਲ ਕੀਮਤ ਦੇ ਸੰਬੰਧ ਨੂੰ ਦਰਸਾਉਂਦਾ ਬਾਰ ਚਾਰਟ](../../../../translated_images/pa/barchart.a833ea9194346d76.webp) + + ਇਹ ਡਾਟਾ ਦ੍ਰਿਸ਼ਟੀਗ੍ਰਹਣ ਜ਼ਿਆਦਾ ਲਾਭਦਾਇਕ ਹੈ! ਇਹ ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਕਦੂਆਂ ਦੀ ਸਭ ਤੋਂ ਵੱਧ ਕੀਮਤ ਸਤੰਬਰ ਅਤੇ ਅਕਤੂਬਰ ਵਿੱਚ ਹੁੰਦੀ ਹੈ। ਕੀ ਇਹ ਤੁਹਾਡੀ ਉਮੀਦ ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਹੈ? ਕਿਉਂ ਜਾਂ ਕਿਉਂ ਨਹੀਂ? + +## ਅਭਿਆਸ - 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 scatterplot ਜੋ ਕੀਮਤ-ਮਹੀਨੇ ਦੇ ਸੰਬੰਧ ਨੂੰ ਦਿਖਾਉਂਦਾ ਹੈ](../../../../translated_images/pa/relplot.a03837d8f0329cec.webp) + + ਧਿਆਨ ਦਿਓ ਕਿ ਤੁਸੀਂ ਕਿਵੇਂ _ਕਾਲਮ ਨਾਮਾਂ_ ਅਤੇ ਡਾਟਾਫਰੇਮ ਦਿੰਦੇ ਹੋ, ਅਤੇ Seaborn ਤੁਹਾਡੇ ਲਈ ਅਕਸਾਂ ਦੇ ਲੇਬਲ ਸੁਚੱਜੇ ਤਰੀਕੇ ਨਾਲ ਬਣਾਉਂਦਾ ਹੈ। + +2. ਤੁਸੀਂ `kind="line"` ਪਾਸ ਕਰਕੇ ਲਾਈਨ ਪਲਾਟ 'ਤੇ ਬਦਲ ਸਕਦੇ ਹੋ। Seaborn ਲਾਈਨ ਦੇ ਆਲੇ-ਦੁਆਲੇ ਵਿਸ਼ਵਾਸ інтэрਵਾਲ ਦਿਖਾਉਂਦਾ ਹੈ: + + ```python + sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins) + ``` + + ![Seaborn line plot ਜੋ ਕੀਮਤ-ਮਹੀਨੇ ਦੇ ਸੰਬੰਧ ਨੂੰ ਦਿਖਾਉਂਦਾ ਹੈ](../../../../translated_images/pa/lineplot.f9034ba47b1e30ee.webp) + + ਇਹ ਵਿਸ਼ੇਸ਼ ਡਾਟਾ ਕਾਫੀ ਸ਼ੋਰ ਵਾਲਾ ਹੈ, ਇਸ ਲਈ ਲਾਈਨ ਪਲਾਟ ਸਭ ਤੋਂ ਸਾਫ਼ ਨਾਹ ਹੈ — ਪਰ ਇਸ ਨਾਲ ਦਿਖਾਇਆ ਗਿਆ ਹੈ ਕਿ ਤੁਸੀਂ ਕਿਵੇਂ ਅਸਾਨੀ ਨਾਲ 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") + ``` + + ![ਹਰ ਮਹੀਨੇ ਕੀਮਤ ਵੰਡ ਦਿਖਾਉਂਦਾ ਸੀਬੋਰਨ ਬਾਰ ਚਾਰਟ](../../../../translated_images/pa/catplot.e73fc35fdf96242b.webp) + + ਇਹ ਮੈਟਪਲੌਟਲਿਬ ਨਾਲ ਜੋ ਤੁਸੀਂ ਦੇਖਿਆ ਉਸਦੀ ਪੁਸ਼ਟੀ ਕਰਦਾ ਹੈ — ਕੀਮਤਾਂ ਸਤੰਬਰ ਅਤੇ ਅਕਤੂਬਰ ਦੇ ਆਲੇ ਦੁਆਲੇ ਚੋਟੀ ਤੇ ਹਨ — ਪਰ ਸੀਬੋਰਨ ਇਹ ਵੀ ਦਿਖਾਉਂਦਾ ਹੈ ਕਿ ਹਰ ਮਹੀਨੇ ਅੰਦਰ ਕੀਮਤ ਕਿੰਨੀ ਵੱਧ/ਘੱਟ ਹੁੰਦੀ ਹੈ। + +### ਸਬੰਧ ਦਿਖਾਉਣ ਲਈ ਹੀਟਮੇਪਸ + +ਸਕੈਟਰ ਪਲਾਟ ਇੱਕ ਸਮੇਂ ਦੋ ਚਰ ਨੂੰ ਤੁਲਨਾ ਕਰਦੇ ਹਨ। ਜਦੋਂ ਤੁਹਾਡੇ ਕੋਲ ਕਈ ਗਿਣਤੀ ਵਾਲੇ ਕਾਲਮ ਹੁੰਦੇ ਹਨ, ਤਾਂ ਇੱਕ [ਹੀਟਮੇਪ](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") + ``` + + ![ਗਿਣਤੀ ਵਾਲੇ ਕਾਲਮਾਂ ਵਿਚਕਾਰ ਸੰਬੰਧਾਂ ਨੂੰ ਦਿਖਾਉਂਦਾ ਸੀਬੋਰਨ ਹੀਟਮੇਪ](../../../../translated_images/pa/heatmap.bd98dce43b404c57.webp) + + ਮੁੱਲ ਜੋ `1` (ਜਾਂ `-1`) ਦੇ ਨੇੜੇ ਹਨ, ਦਾ ਮਤਲਬ ਹੈ ਕਿ ਕਾਲਮਾਂ ਵਿੱਚ ਤੀਬਰ _ਰੇਖੀਅਤਮਕ_ ਸੰਬੰਧ ਹੈ। ਧਿਆਨ ਦਿਓ ਕਿ `Low Price` ਅਤੇ `High Price` ਲਗਭਗ ਪੂਰੀ ਤਰ੍ਹਾਂ ਸੰਬੰਧਤ ਹਨ। ਦੂਜੇ ਪਾਸੇ, `Month` ਸਿਰਫ਼ ਕਮਜ਼ੋਰ ਰੇਖੀਅਤਮਕ ਸੰਬੰਧ ਦਿਖਾਉਂਦਾ ਹੈ — ਹਾਲਾਂਕਿ ਉੱਪਰ ਦਿੱਤੇ ਬਾਰ ਚਾਰਟ ਨੇ ਸਤੰਬਰ ਅਤੇ ਅਕਤੂਬਰ ਵਿੱਚ ਇੱਕ ਸਪਸ਼ਟ ਮੌਸਮੀ ਚੋਟੀ ਦਿਖਾਈ ਸੀ। ਇਹ ਇੱਕ ਮਹੱਤਵਪੂਰਨ ਸਿੱਖਿਆ ਹੈ: ਕੋਰੀਲੇਸ਼ਨ ਕੋਐਫ਼ੀਸ਼ੈਂਟ صرف _ਸਿੱਧਾ-ਰੇਖਾ_ ਦੇ ਸੰਬੰਧ ਮਾਪਦਾ ਹੈ, ਇਸ ਲਈ ਇਹ ਮੌਸਮੀ ਜਾਂ ਹੋਰ ਕਿਸਮ ਦੇ ਗੈਰ ਰੇਖੀਅਤਮਕ ਪੈਟਰਨਾਂ ਨੂੰ ਨਾ ਦਰਸਾ ਸਕਦਾ। ✅ ਕਿਉਂ ਇਹ ਫਾਇਦ੍ਹੇਮੰਦ ਹੈ ਕਿ ਸਿੱਧਾ ਹੀਟਮੇਪ ਅਤੇ ਬਾਰ ਚਾਰਟ ਵਰਗੇ ਚਾਰਟਾਂ ਨੂੰ ਦੇਖ ਕੇ ਇਹ ਫੈਸਲਾ ਕਰਨਾ ਕਿ ਕਿਹੜੇ ਕਾਲਮ ਵਰਤਣੇ ਹਨ? + +### ਮੈਟਪਲੌਟਲਿਬ ਜਾਂ ਸੀਬੋਰਨ? + +ਦੋਹਾਂ ਲਾਇਬ੍ਰੇਰੀਆਂ ਜਾਣਣ ਯੋਗ ਹਨ: + +- **ਮੈਟਪਲੌਟਲਿਬ** ਤੁਹਾਨੂੰ ਇੱਕ ਚਾਰਟ ਦੇ ਹਰ ਤੱਤ 'ਤੇ ਬਾਰੀਕੀ ਨਾਲ ਕੰਟਰੋਲ ਦਿੰਦੀ ਹੈ ਅਤੇ ਇਹ ਲਗਭਗ ਹਰ ਹੋਰ ਪਾਇਥਨ ਪਲਾਟਿੰਗ ਲਾਇਬ੍ਰੇਰੀ ਦੀ ਬੁਨਿਆਦ ਹੈ। +- **ਸੀਬੋਰਨ** ਉੱਚ-ਪੱਧਰੀ ਫੰਕਸ਼ਨਾਂ ਅਤੇ ਆਕਰਸ਼ਕ ਡੀਫਾਲਟ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ ਸਾਂਖਿਆਕੀ ਚਾਰਟਾਂ ਲਈ, ਸਿੱਧਾ ਡਾਟਾ ਫਰੇਮਜ਼ ਨਾਲ ਕੰਮ ਕਰਦਾ ਹੈ, ਅਤੇ ਐਕਸਪਲੋਰੇਟਰੀ ਡੇਟਾ ਵਿਸ਼ਲੇਸ਼ਣ ਲਈ ਅਕਸਰ ਤੇਜ਼ ਹੁੰਦਾ ਹੈ। + +ਇੱਕ ਆਮ ਕਾਰਜ-ਪ੍ਰਵਾਹ ਹੈ ਕਿ ਬੜੀ ਤੇਜ਼ੀ ਨਾਲ ਡਾਟਾ ਬੁਝਣ ਲਈ ਸੀਬੋਰਨ ਨੂੰ ਵਰਤਨਾ, ਫਿਰ ਜਦੋਂ ਵਿਸਥਾਰ ਵਿੱਚ ਬਦਲਾਵਾਂ ਕਰਨੇ ਹੋਣ ਤਾਂ ਮੈਟਪਲੌਟਲਿਬ 'ਤੇ ਜਾਵੇ। + +--- -ਹੁਣ, ਤੁਸੀਂ ਬਸੇਲ ਮਾਪ ਦੇ ਅਧਾਰ 'ਤੇ ਯੂਨਿਟ ਪ੍ਰਤੀ ਕੀਮਤ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰ ਸਕਦੇ ਹੋ। ਜੇ ਤੁਸੀਂ ਡਾਟਾ ਨੂੰ ਇੱਕ ਵਾਰ ਫਿਰ ਪ੍ਰਿੰਟ ਕਰੋ, ਤਾਂ ਤੁਸੀਂ ਦੇਖ ਸਕਦੇ ਹੋ ਕਿ ਇਹ ਸਥਿਰ ਕੀਤਾ ਗਿਆ ਹੈ। +## 🚀ਚੁਣੌਤੀ -✅ ਕੀ ਤੁਸੀਂ ਧਿਆਨ ਦਿੱਤਾ ਕਿ ਅੱਧੇ-ਬਸੇਲ ਦੁਆਰਾ ਵੇਚੇ ਗਏ ਕੱਦੂ ਬਹੁਤ ਮਹਿੰਗੇ ਹਨ? ਕੀ ਤੁਸੀਂ ਪਤਾ ਲਗਾ ਸਕਦੇ ਹੋ ਕਿ ਕਿਉਂ? ਸੰਕੇਤ: ਛੋਟੇ ਕੱਦੂ ਵੱਡੇ ਕੱਦੂਆਂ ਨਾਲੋਂ ਕਾਫ਼ੀ ਮਹਿੰਗੇ ਹੁੰਦੇ ਹਨ, ਸ਼ਾਇਦ ਇਸ ਲਈ ਕਿ ਇੱਕ ਵੱਡੇ ਖਾਲੀ ਪਾਈ ਕੱਦੂ ਦੁਆਰਾ ਲਿਆ ਗਿਆ ਖਾਲੀ ਜਗ੍ਹਾ ਦੇ ਕਾਰਨ ਬਸੇਲ ਵਿੱਚ ਉਹਨਾਂ ਦੀ ਗਿਣਤੀ ਕਾਫ਼ੀ ਵੱਧ ਹੁੰਦੀ ਹੈ। +ਮੈਟਪਲੌਟਲਿਬ ਅਤੇ ਸੀਬੋਰਨ ਜੋ ਵੱਖ-ਵੱਖ ਤਰ੍ਹਾਂ ਦੀਆਂ ਵਿਜ਼ੂਅਲਾਈਜ਼ੇਸ਼ਨ ਦਿੰਦੇ ਹਨ, ਉਹਨਾਂ ਦਾ ਪਤਾ ਲਗਾਓ। ਕਿਹੜੇ ਤਰ੍ਹਾਂ ਲੋਕ ਸਭ ਤੋਂ ਵੱਧ ਰਿਗਰੈਸ਼ਨ ਸਮੱਸਿਆਵਾਂ ਲਈ ਮੁਆਫਿਕ ਹਨ? -## ਵਿਜੁਅਲਾਈਜ਼ੇਸ਼ਨ ਰਣਨੀਤੀਆਂ +## [ਪੋਸਟ-ਲੇਕਚਰ ਕਵਿਜ਼](https://ff-quizzes.netlify.app/en/ml/) -ਡਾਟਾ ਸਾਇੰਟਿਸਟ ਦੀ ਭੂਮਿਕਾ ਡਾਟਾ ਦੀ ਗੁਣਵੱਤਾ ਅਤੇ ਪ੍ਰਕਿਰਤੀ ਨੂੰ ਦਰਸਾਉਣਾ ਹੈ ਜਿਸ ਨਾਲ ਉਹ ਕੰਮ ਕਰ ਰਹੇ ਹਨ। ਇਸ ਲਈ, ਉਹ ਅਕਸਰ ਦਿਲਚਸਪ ਵਿਜੁਅਲਾਈਜ਼ੇਸ਼ਨ, ਜਾਂ ਪਲਾਟ, ਗ੍ਰਾਫ, ਅਤੇ ਚਾਰਟ ਬਣਾਉਂਦੇ ਹਨ, ਜੋ ਡਾਟਾ ਦੇ ਵੱਖ-ਵੱਖ ਪਹਲੂਆਂ ਨੂੰ ਦਿਖਾਉਂਦੇ ਹਨ। ਇਸ ਤਰੀਕੇ ਨਾਲ, ਉਹ ਦ੍ਰਿਸ਼ਟੀਗਤ ਤੌਰ 'ਤੇ ਸੰਬੰਧਾਂ ਅਤੇ ਖਾਲੀਆਂ ਜਗ੍ਹਾ ਦਿਖਾ ਸਕਦੇ ਹਨ ਜੋ ਹੋਰ ਤਰੀਕੇ ਨਾਲ ਖੋਜਣ ਲਈ ਮੁਸ਼ਕਲ ਹੁੰਦੀਆਂ ਹਨ। +## ਸਮੀਖਿਆ ਅਤੇ ਸਵੈ ਅਧਿਐਨ -[![ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਲਈ ਸ਼ੁਰੂਆਤੀ - ਮੈਟਪਲਾਟਲਿਬ ਨਾਲ ਡਾਟਾ ਨੂੰ ਵਿਜੁਅਲਾਈਜ਼ ਕਰਨ ਦਾ ਤਰੀਕਾ](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](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 @@ -# ਲਾਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਨਾਲ ਸ਼੍ਰੇਣੀਆਂ ਦੀ ਪੇਸ਼ਗੂਈ +# ਸ਼੍ਰੇਣੀਆਂ ਦੀ ਭਵਿੱਖਬਾਣੀ ਲਈ ਲੋਜਿਸਟਿਕ ਰੈਗਰੈਸ਼ਨ -![ਲਾਜਿਸਟਿਕ ਵਿਰੁੱਧ ਰੇਖੀ ਰਿਗ੍ਰੈਸ਼ਨ ਇਨਫੋਗ੍ਰਾਫਿਕ](../../../../2-Regression/4-Logistic/images/linear-vs-logistic.png) +![ਲੋਜਿਸਟਿਕ ਵਿਰੁੱਧ ਲੀਨੀਅਰ ਰੈਗਰੈਸ਼ਨ ਇਨਫੋਗ੍ਰਾਫਿਕ](../../../../translated_images/pa/linear-vs-logistic.ba180bf95e7ee667.webp) -## [ਪ੍ਰੀ-ਲੈਕਚਰ ਕਵਿਜ਼](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 ਮੁੱਲਾਂ ਨੂੰ ਹਟਾਉਣ ਤੋਂ ਬਾਅਦ ਖਤਮ ਹੋ ਜਾਂਦੀ ਹੈ। +ਸਾਡੇ ਉਦੇਸ਼ ਲਈ, ਅਸੀਂ ਇਸਨੂੰ ਬਾਇਨਰੀ ਰੂਪ ਵਿੱਚ ਪ੍ਰਗਟਾਵਾਂਗੇ: 'ਸਫੈਦ' ਜਾਂ 'ਸਫੈਦ ਨਹੀਂ'। ਸਾਡੇ ਡੇਟਾਸੈੱਟ ਵਿੱਚ ਇੱਕ 'ਧਾਰੀਦਾਰ' ਸ਼੍ਰੇਣੀ ਵੀ ਹੈ ਪਰ ਇਸ ਵਿੱਚ ਕੁਝ ਘਟਨਾਵਾਂ ਹਨ, ਇਸ ਲਈ ਅਸੀਂ ਇਸਨੂੰ ਵਰਤੋਂਗੇ ਨਹੀਂ। ਜੇ ਅਸੀਂ ਡੇਟਾ ਵਿੱਚੋਂ ਨੱਲ ਮੁੱਲ ਹਟਾ ਦਿੰਦੇ ਹਾਂ ਤਾਂ ਇਹ ਗੁੰਮ ਹੋ ਜਾਂਦੀ ਹੈ। -> 🎃 ਮਜ਼ੇਦਾਰ ਤੱਥ: ਅਸੀਂ ਕਈ ਵਾਰ ਚਿੱਟੇ ਕਦੂਆਂ ਨੂੰ 'ਭੂਤ' ਕਦੂ ਕਹਿੰਦੇ ਹਾਂ। ਇਹ ਕੱਟਣ ਲਈ ਬਹੁਤ ਆਸਾਨ ਨਹੀਂ ਹੁੰਦੇ, ਇਸ ਲਈ ਇਹ ਸੰਤਰੀ ਕਦੂਆਂ ਜਿੰਨੇ ਲੋਕਪ੍ਰਿਯ ਨਹੀਂ ਹਨ, ਪਰ ਇਹ ਦਿਖਣ ਵਿੱਚ ਬਹੁਤ ਕੂਲ ਹੁੰਦੇ ਹਨ! ਇਸ ਲਈ ਅਸੀਂ ਆਪਣੇ ਪ੍ਰਸ਼ਨ ਨੂੰ ਇਸ ਤਰੀਕੇ ਨਾਲ ਵੀ ਦੁਬਾਰਾ ਬਣਾਉਣ ਦੇ ਬਾਰੇ ਸੋਚ ਸਕਦੇ ਹਾਂ: 'ਭੂਤ' ਜਾਂ 'ਭੂਤ ਨਹੀਂ'। 👻 +> 🎃 ਮਜ਼ੇਦਾਰ ਤੱਥ, ਅਸੀਂ ਕਈ ਵਾਰੀ ਸਫੈਦ ਕੱਦੂਆਂ ਨੂੰ 'ਭੂਤ' ਕੱਦੂ ਕਹਿੰਦੇ ਹਾਂ। ਇਹਨਾਂ ਨੂੰ ਕੱਟਣਾ ਵੱਧ ਸੌਖਾ ਨਹੀਂ ਹੁੰਦਾ, ਇਸ ਲਈ ਇਹ ਸੰਤਰੀ ਵਾਲਿਆਂ ਵਾਂਗ ਪਾਪուլਰ ਨਹੀਂ ਹਨ ਪਰ ਇਹ ਦਿੱਖ ਵਿੱਚ ਸ਼ਾਨਦਾਰ ਹੁੰਦੇ ਹਨ! ਇਸ ਲਈ ਅਸੀਂ ਆਪਣਾ ਸਵਾਲ ਮੁੜ ਬਣਾ ਸਕਦੇ ਹਾਂ: 'ਭੂਤ' ਜਾਂ 'ਭੂਤ ਨਹੀਂ'. 👻 -## ਲਾਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਬਾਰੇ +## ਲੋਜਿਸਟਿਕ ਰੈਗਰੈਸ਼ਨ ਬਾਰੇ -ਲਾਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਕੁਝ ਮਹੱਤਵਪੂਰਨ ਤਰੀਕਿਆਂ ਵਿੱਚ ਰੇਖੀ ਰਿਗ੍ਰੈਸ਼ਨ ਤੋਂ ਵੱਖਰਾ ਹੈ, ਜਿਸ ਬਾਰੇ ਤੁਸੀਂ ਪਹਿਲਾਂ ਸਿੱਖਿਆ ਸੀ। +ਲੋਜਿਸਟਿਕ ਰੈਗਰੈਸ਼ਨ ਕੁਝ ਅਹੰਕਾਰਪੂਰਕ ਤਰੀਕਿਆਂ ਵਿੱਚ ਲੀਨੀਅਰ ਰੈਗਰੈਸ਼ਨ ਤੋਂ ਵੱਖਰਾ ਹੈ, ਜਿਸ ਬਾਰੇ ਤੁਸੀਂ ਪਹਿਲਾਂ ਸਿੱਖਿਆ ਸੀ। -[![ML ਸ਼ੁਰੂਆਤੀ ਲਈ - ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਲਈ ਲਾਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਨੂੰ ਸਮਝਣਾ](https://img.youtube.com/vi/KpeCT6nEpBY/0.jpg)](https://youtu.be/KpeCT6nEpBY "ML ਸ਼ੁਰੂਆਤੀ ਲਈ - ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਲਈ ਲਾਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਨੂੰ ਸਮਝਣਾ") +[![ਐਮਐਲ ਬੇਗਿਨਰਜ਼ ਲਈ - ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਵਰਗੀਕਰਨ ਲਈ ਲੋਜਿਸਟਿਕ ਰੈਗਰੈਸ਼ਨ ਦੀ ਸਮਝ](https://img.youtube.com/vi/KpeCT6nEpBY/0.jpg)](https://youtu.be/KpeCT6nEpBY "ਐਮਐਲ ਬੇਗਿਨਰਜ਼ ਲਈ - ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਵਰਗੀਕਰਨ ਲਈ ਲੋਜਿਸਟਿਕ ਰੈਗਰੈਸ਼ਨ ਦੀ ਸਮਝ") -> 🎥 ਲਾਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਦੇ ਇੱਕ ਛੋਟੇ ਵੀਡੀਓ ਝਲਕ ਲਈ ਉਪਰੋਕਤ ਚਿੱਤਰ 'ਤੇ ਕਲਿਕ ਕਰੋ। +> 🎥 ਲੋਜਿਸਟਿਕ ਰੈਗਰੈਸ਼ਨ ਦਾ ਇੱਕ ਛੋਟਾ ਵੀਡੀਓ ਵੇਰਵਾ ਦੇਖਣ ਲਈ ਉੱਪਰ ਦਰਸਾਈ ਚਿੱਤਰ 'ਤੇ ਕਲਿੱਕ ਕਰੋ। -### ਬਾਈਨਰੀ ਕਲਾਸੀਫਿਕੇਸ਼ਨ +### ਬਾਇਨਰੀ ਵਰਗੀਕਰਨ -ਲਾਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਰੇਖੀ ਰਿਗ੍ਰੈਸ਼ਨ ਦੇ ਜਿਵੇਂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਨਹੀਂ ਦਿੰਦਾ। ਪਹਿਲਾ ਇੱਕ ਬਾਈਨਰੀ ਸ਼੍ਰੇਣੀ ('ਚਿੱਟਾ ਜਾਂ ਚਿੱਟਾ ਨਹੀਂ') ਬਾਰੇ ਪੇਸ਼ਗੂਈ ਦਿੰਦਾ ਹੈ ਜਦਕਿ ਦੂਜਾ ਲਗਾਤਾਰ ਮੁੱਲਾਂ ਦੀ ਪੇਸ਼ਗੂਈ ਕਰਨ ਦੇ ਯੋਗ ਹੈ, ਉਦਾਹਰਨ ਲਈ, ਕਦੂ ਦੇ ਮੂਲ ਅਤੇ ਫਸਲ ਦੇ ਸਮੇਂ ਦੇ ਆਧਾਰ 'ਇਸਦੀ ਕੀਮਤ ਕਿੰਨੀ ਵਧੇਗੀ'। +ਲੋਜਿਸਟਿਕ ਰੈਗਰੈਸ਼ਨ ਲੀਨੀਅਰ ਰੈਗਰੈਸ਼ਨ ਵਾਂਗੇ ਫੀਚਰਾਂ ਦਾ ਉਪਲਬਧ ਕਰਵਾਉਂਦਾ ਨਹੀਂ। ਪਹਿਲਾ ਇੱਕ ਬਾਇਨਰੀ ਸ਼੍ਰੇਣੀ ਬਾਰੇ ਅਨੁਮਾਨ ਦਿੰਦਾ ਹੈ ("ਸਫੈਦ ਜਾਂ ਸਫੈਦ ਨਹੀਂ") ਜਦਕਿ ਦੂਜਾ ਲਗਾਤਾਰ ਮੁੱਲਾਂ ਦੀ ਭਵਿੱਖਬਾਣੀ ਕਰ ਸਕਦਾ ਹੈ, ਉਦਾਹਰਨ ਵਜੋਂ ਕਿਸੇ ਕੱਦੂ ਦੇ ਮੂਲ ਅਤੇ ਕਟਾਈ ਦੇ ਸਮੇਂ ਦੇ ਆਧਾਰ 'ਤੇ, _ਉਸ ਦੀ ਕੀਮਤ ਕਿੰਨੀ ਵੱਧੇਗੀ_। -![ਕਦੂ ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਮਾਡਲ](../../../../2-Regression/4-Logistic/images/pumpkin-classifier.png) -> ਇਨਫੋਗ੍ਰਾਫਿਕ [ਦਸਾਨੀ ਮਾਡੀਪੱਲੀ](https://twitter.com/dasani_decoded) ਦੁਆਰਾ +![ਕੱਦੂ ਵਰਗੀਕਰਨ ਮਾਡਲ](../../../../translated_images/pa/pumpkin-classifier.562771f104ad5436.webp) +> ਇਨਫੋਗ੍ਰਾਫਿਕ ਦੁਆਰਾ [ਦਸਾਨੀ ਮਾਡੀਪੱਲੀ](https://twitter.com/dasani_decoded) -### ਹੋਰ ਕਲਾਸੀਫਿਕੇਸ਼ਨ +### ਹੋਰ ਵਰਗੀਕਰਨ -ਲਾਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਦੇ ਹੋਰ ਕਿਸਮਾਂ ਵੀ ਹਨ, ਜਿਵੇਂ ਕਿ ਮਲਟੀਨੋਮਿਅਲ ਅਤੇ ਆਰਡਿਨਲ: +ਹੋਰ ਕਿਸਮਾਂ ਦੇ ਲੋਜਿਸਟਿਕ ਰੈਗਰੈਸ਼ਨ ਹਨ, ਜਿਵੇਂ ਕਿ ਮਲਟੀਨੋਮਿਯਲ ਅਤੇ ਓਰਡੀਨਲ: -- **ਮਲਟੀਨੋਮਿਅਲ**, ਜਿਸ ਵਿੱਚ ਇੱਕ ਤੋਂ ਵੱਧ ਸ਼੍ਰੇਣੀਆਂ ਸ਼ਾਮਲ ਹੁੰਦੀਆਂ ਹਨ - "ਸੰਤਰੀ, ਚਿੱਟਾ, ਅਤੇ ਧਾਰੀਦਾਰ"। -- **ਆਰਡਿਨਲ**, ਜਿਸ ਵਿੱਚ ਕ੍ਰਮਬੱਧ ਸ਼੍ਰੇਣੀਆਂ ਸ਼ਾਮਲ ਹੁੰਦੀਆਂ ਹਨ, ਜੇਕਰ ਅਸੀਂ ਆਪਣੇ ਨਤੀਜਿਆਂ ਨੂੰ ਤਰਕਸੰਗਤ ਤੌਰ 'ਤੇ ਕ੍ਰਮਬੱਧ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹਾਂ, ਜਿਵੇਂ ਕਿ ਸਾਡੇ ਕਦੂ ਜੋ ਇੱਕ ਨਿਰਧਾਰਿਤ ਗਿਣਤੀ ਦੇ ਆਕਾਰਾਂ (mini, sm, med, lg, xl, xxl) ਦੁਆਰਾ ਕ੍ਰਮਬੱਧ ਹਨ। +- **ਮਲਟੀਨੋਮਿਯਲ**, ਜਿਸ ਵਿੱਚ ਇੱਕ ਤੋਂ ਵੱਧ ਸ਼੍ਰੇਣੀਆਂ ਹੁੰਦੀਆਂ ਹਨ - "ਸੰਤਰੀ, ਸਫੈਦ, ਅਤੇ ਧਾਰੀਦਾਰ"। +- **ਓਰਡੀਨਲ**, ਜਿਸ ਵਿੱਚ ਆਰਡਰ ਵਾਲੀਆਂ ਸ਼੍ਰੇਣੀਆਂ ਹੁੰਦੀਆਂ ਹਨ, ਜਿਹੜੀਆਂ ਸਾਨੂੰ ਸਾਡੀਆਂ ਨਤੀਜਿਆਂ ਨੂੰ ਲਾਜ਼ਮੀ ਤੌਰ 'ਤੇ ਕ੍ਰਮਵਾਰ ਕਰਨ ਵਿੱਚ ਸਹਾਇਤਾ ਦਿੰਦਾ ਹੈ, ਜਿਵੇਂ ਸਾਡੇ ਕੱਦੂ, ਜੋ ਇੱਕ ਨਿਰਧਾਰਤ ਗਿਣਤੀ ਦੀਆਂ ਸਾਈਜ਼ਾਂ (ਮੀਨੀ, ਛੋਟਾ, ਦਰਮਿਆਨਾ, ਵੱਡਾ, ਐਕਸਐਲ, ਡਬਲ ਐਕਸਐਲ) ਨਾਲ ਕ੍ਰਮਵੱਧ ਹਨ। -![ਮਲਟੀਨੋਮਿਅਲ ਵਿਰੁੱਧ ਆਰਡਿਨਲ ਰਿਗ੍ਰੈਸ਼ਨ](../../../../2-Regression/4-Logistic/images/multinomial-vs-ordinal.png) +![ਮਲਟੀਨੋਮਿਯਲ ਵਿਰੁੱਧ ਓਰਡੀਨਲ ਰੈਗਰੈਸ਼ਨ](../../../../translated_images/pa/multinomial-vs-ordinal.36701b4850e37d86.webp) -### ਵੈਰੀਏਬਲਾਂ ਨੂੰ ਸੰਬੰਧਿਤ ਹੋਣ ਦੀ ਲੋੜ ਨਹੀਂ +### ਵੈਰੀਏਬਲਾਂ ਨੂੰ ਲਾਜ਼ਮੀ ਤੌਰ 'ਤੇ ਇਕ ਦੂਜੇ ਨਾਲ ਸੰਬੰਧਿਤ ਹੋਣਾ ਜ਼ਰੂਰੀ ਨਹੀਂ -ਯਾਦ ਹੈ ਕਿ ਰੇਖੀ ਰਿਗ੍ਰੈਸ਼ਨ ਵਧੇਰੇ ਸੰਬੰਧਿਤ ਵੈਰੀਏਬਲਾਂ ਨਾਲ ਚੰਗਾ ਕੰਮ ਕਰਦਾ ਸੀ? ਲਾਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਇਸਦਾ ਉਲਟ ਹੈ - ਵੈਰੀਏਬਲਾਂ ਨੂੰ ਸੰਬੰਧਿਤ ਹੋਣ ਦੀ ਲੋੜ ਨਹੀਂ। ਇਹ ਇਸ ਡਾਟਾ ਲਈ ਕੰਮ ਕਰਦਾ ਹੈ ਜਿਸ ਵਿੱਚ ਕੁਝ ਕਮਜ਼ੋਰ ਸੰਬੰਧ ਹਨ। +ਮਹਿਸੂਸ ਕਰੋ ਕਿ ਲੀਨੀਅਰ ਰੈਗਰੈਸ਼ਨ ਵੱਧ ਸਬੰਧਤ ਵੈਰੀਏਬਲਾਂ ਨਾਲ ਵਧੀਆ ਕੰਮ ਕਰਦਾ ਹੈ? ਲੋਜਿਸਟਿਕ ਰੈਗਰੈਸ਼ਨ ਇਸਦਾ ਉਲਟ ਹੈ - ਵੈਰੀਏਬਲਾਂ ਨੂੰ ਸਹਿਮਤ ਹੋਣ ਦੀ ਲੋੜ ਨਹੀਂ। ਇਹ ਇਸ ਡੇਟਾ ਲਈ ਚੰਗਾ ਹੈ ਜਿਸ ਵਿੱਚ ਛੋਟੀਆਂ ਕੋਰੀਲੇਸ਼ਨ ਹਨ। -### ਤੁਹਾਨੂੰ ਬਹੁਤ ਸਾਰੇ ਸਾਫ਼ ਡਾਟਾ ਦੀ ਲੋੜ ਹੈ +### ਤੁਹਾਨੂੰ ਬਹੁਤ ਸਾਫ ਸੂਥਰਾ ਡੇਟਾ ਚਾਹੀਦਾ ਹੈ -ਲਾਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਜ਼ਿਆਦਾ ਸਹੀ ਨਤੀਜੇ ਦੇਵੇਗਾ ਜੇ ਤੁਸੀਂ ਜ਼ਿਆਦਾ ਡਾਟਾ ਵਰਤੋਂਗੇ; ਸਾਡਾ ਛੋਟਾ ਡਾਟਾਸੈਟ ਇਸ ਕੰਮ ਲਈ ਉਤਮ ਨਹੀਂ ਹੈ, ਇਸ ਲਈ ਇਸਨੂੰ ਯਾਦ ਰੱਖੋ। +ਜੇ ਤੁਸੀਂ ਵੱਧ ਡੇਟਾ ਵਰਤੋਂਗੇ ਤਾਂ ਲੋਜਿਸਟਿਕ ਰੈਗਰੈਸ਼ਨ ਵਧੀਆ ਨਤੀਜੇ ਦੇਵੇਗਾ; ਸਾਡਾ ਛੋਟਾ ਡੇਟਾਸੈਟ ਇਸ ਕੰਮ ਲਈ ਠੀਕ ਨਹੀਂ ਹੈ, ਇਸ ਲਈ ਇਹ ਯਾਦ ਰੱਖੋ। -[![ML ਸ਼ੁਰੂਆਤੀ ਲਈ - ਲਾਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਲਈ ਡਾਟਾ ਵਿਸ਼ਲੇਸ਼ਣ ਅਤੇ ਤਿਆਰੀ](https://img.youtube.com/vi/B2X4H9vcXTs/0.jpg)](https://youtu.be/B2X4H9vcXTs "ML ਸ਼ੁਰੂਆਤੀ ਲਈ - ਲਾਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਲਈ ਡਾਟਾ ਵਿਸ਼ਲੇਸ਼ਣ ਅਤੇ ਤਿਆਰੀ") +[![ਐਮਐਲ ਬੇਗਿਨਰਜ਼ - ਲੋਜਿਸਟਿਕ ਰੈਗਰੈਸ਼ਨ ਲਈ ਡੇਟਾ ਵਿਸ਼ਲੇਸ਼ਣ ਅਤੇ ਤਿਆਰੀ](https://img.youtube.com/vi/B2X4H9vcXTs/0.jpg)](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 ਤੁਹਾਡੇ ਡਾਟਾ ਨੂੰ ਵਿਜ਼ੁਅਲਾਈਜ ) ``` - ![ਡਾਟਾ ਦੀ ਵਿਜ਼ੁਅਲਾਈਜ਼ ਕੀਤੀ ਗ੍ਰਿਡ](../../../../2-Regression/4-Logistic/images/pumpkins_catplot_1.png) + ![ਡੇਟਾ ਦਾ ਇੱਕ ਗ੍ਰਿਡ](../../../../translated_images/pa/pumpkins_catplot_1.c55c409b71fea2ec.webp) - ਡਾਟਾ ਨੂੰ ਦੇਖ ਕੇ, ਤੁਸੀਂ ਦੇਖ ਸਕਦੇ ਹੋ ਕਿ 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}") ``` +![ਡੇਟਾ ਦਾ ਇੱਕ catplot](../../../../translated_images/pa/pumpkins_catplot_2.87a354447880b388.webp) + +### ਇੱਕ ਸਵਾਰਮ ਪਲੌਟ ਵਰਤੋਂ + +ਜਿਵੇਂ ਕਿ Color ਇੱਕ ਬਾਇਨਰੀ ਸ਼੍ਰੇਣੀ ਹੈ (ਸਫੈਦ ਜਾਂ ਨਹੀਂ), ਇਸਨੂੰ ਵਿਜ਼ੂਅਲਾਈਜ਼ ਕਰਨ ਲਈ 'ਵਿਸ਼ੇਸ਼ ਤਰੀਕੇ' ਦੀ ਜ਼ਰੂਰਤ ਹੁੰਦੀ ਹੈ। ਇਸ ਸ਼੍ਰੇਣੀ ਦੇ ਹੋਰ ਵੈਰੀਏਬਲਾਂ ਨਾਲ ਸੰਬੰਧਾਂ ਨੂੰ ਵੇਖਣ ਦੇ ਹੋਰ ਤਰੀਕਿਆਂ ਵੀ ਹਨ। + +ਤੁਸੀਂ Seaborn ਪਲੌਟਾਂ ਨਾਲ ਵੈਰੀਏਬਲਾਂ ਨੂੰ ਇਕੱਠੇ ਵੇਖਾ ਸਕਦੇ ਹੋ। + +1. ਕਦਰਾਂ ਦੇ ਵਿਤਰਨ ਨੂੰ ਦਿਖਾਉਣ ਲਈ ਇੱਕ 'ਸਵਾਰਮ' ਪਲੌਟ ਬਣਾਓ: + + ```python + palette = { + 0: 'orange', + 1: 'wheat' + } + sns.swarmplot(x="Color", y="ord__Item Size", data=encoded_pumpkins, palette=palette) + ``` + + ![ਡੇਟਾ ਦਾ ਇੱਕ ਸਵਾਰਮ](../../../../translated_images/pa/swarm_2.efeacfca536c2b57.webp) + +**ਸਾਵਧਾਨ**: ਉਪਰੋਕਤ ਕੋਡ ਇੱਕ ਚੇਤਾਵਨੀ ਦੇ ਸਕਦਾ ਹੈ, ਕਿਉਂਕਿ seaborn ਇੰਨੀ ਵੱਡੀ ਸੰਖਿਆ ਵਿੱਚ ਡੇਟਾਪਾਇੰਟ ਨੂੰ ਸਵਾਰਮ ਪਲੌਟ ਵਿੱਚ ਦਰਸਾਉਣ ਵਿੱਚ ਅਸਫਲ ਹੁੰਦਾ ਹੈ। ਇੱਕ ਸੰਭਾਵਿਤ ਹੱਲ ਨਿਸ਼ਾਨ ਦੇ ਆਕਾਰ ਨੂੰ ਕੱਟਣਾ ਹੈ, 'size' ਪੈਰਾਮੀਟਰ ਦੀ ਵਰਤੋਂ ਕਰਕੇ। ਪਰ ਧਿਆਨ ਰੱਖੋ ਜੋ ਇਸ ਦਾ ਪ੍ਰਭਾਵ ਪਲੌਟ ਦੀ ਪੜ੍ਹਨਯੋਗਤਾ 'ਤੇ ਪੈਂਦਾ ਹੈ। + + +> **🧮 ਮੈਥਮੈਟਿਕਸ ਦਿਖਾਓ** +> +> ਲੋਜਿਸਟਿਕ ਰੈਗਰੈਸ਼ਨ 'ਜ਼ਿਆਦਾ ਸੰਭਾਵਨਾਵਾਂ' ਦੇ ਸੰਕਲਪ ਤੇ ਆਧਾਰਿਤ ਹੈ ਅਤੇ ਇਸ ਵਿੱਚ [ਸਿਗਮਾਇਡ ਫੰਕਸ਼ਨਾਂ](https://wikipedia.org/wiki/Sigmoid_function) ਦਾ ਇਸਤੇਮਾਲ ਹੁੰਦਾ ਹੈ। ਇੱਕ 'ਸਿਗਮਾਇਡ ਫੰਕਸ਼ਨ' ਪਲੌਟ 'ਤੇ ਇੱਕ 'S' ਆਕਾਰ ਵਾਂਗ਼ ਦਿੱਖਦਾ ਹੈ। ਇਹ ਮੁੱਲ ਲੈਂਦਾ ਹੈ ਅਤੇ ਉਸ ਨੂੰ 0 ਅਤੇ 1 ਦੇ ਵਿਚਕਾਰ ਨਕਸ਼ਾ ਬਣਾਉਂਦਾ ਹੈ। ਇਸ ਦੀ ਵਕ੍ਰਤਾ ਨੂੰ 'ਲੋਜਿਸਟਿਕ ਕ੍ਰਿਵ' ਵੀ ਕਹਿੰਦੇ ਹਨ। ਇਸਦਾ ਫਾਰਮੂਲਾ ਇਸ ਤਰ੍ਹਾਂ ਹੈ: +> +> ![ਲੋਜਿਸਟਿਕ ਫੰਕਸ਼ਨ](../../../../translated_images/pa/sigmoid.8b7ba9d095c789cf.webp) +> +> ਜਿੱਥੇ ਸਿਗਮਾਇਡ ਦਾ ਮਿਡਪੌਇੰਟ x ਦੇ 0 ਬਿੰਦੂ ਤੇ ਹੁੰਦਾ ਹੈ, L ਕ੍ਰਿਵ ਦੀ ਵੱਧ ਤੋਂ ਵੱਧ ਮੁੱਲ ਹੈ, ਅਤੇ k ਕ੍ਰਿਵ ਦੀ ਤੇਜ਼ੀ ਹੈ। ਜੇ ਫੰਕਸ਼ਨ ਦਾ ਨਤੀਜਾ 0.5 ਤੋਂ ਵੱਧ ਹੈ, ਤਾਂ ਪ੍ਰਸ਼ਨ ਵਾਲੇ ਲੇਬਲ ਨੂੰ ਬਾਇਨਰੀ ਚੋਣ ਦੀ '1' ਕਲਾਸ ਦਿੱਤੀ ਜਾਵੇਗੀ। ਨਹੀਂ ਤਾਂ, ਇਸਨੂੰ '0' ਵਜੋਂ ਵਰਗੀਕ੍ਰਿਤ ਕੀਤਾ ਜਾਵੇਗਾ। + +## ਆਪਣਾ ਮਾਡਲ ਬਣਾਓ + +ਸਕਾਈਟ-ਲਰਨ ਵਿਚ ਇਹ ਬਾਇਨਰੀ ਵਰਗੀਕਰਨ ਲੱਭਣ ਲਈ ਮਾਡਲ ਬਣਾਉਣਾ ਹੈਰਾਨ ਕਰਨ ਵਾਲਾ ਤੌਰ 'ਤੇ ਸਿੱਧਾ ਹੈ। + +[![ਐਮਐਲ ਬੇਗਿਨਰਜ਼ - ਡੇਟਾ ਦੀ ਵਰਗੀਕਰਨ ਲਈ ਲੋਜਿਸਟਿਕ ਰੈਗਰੈਸ਼ਨ](https://img.youtube.com/vi/MmZS2otPrQ8/0.jpg)](https://youtu.be/MmZS2otPrQ8 "ਐਮਐਲ ਬੇਗਿਨਰਜ਼ - ਡੇਟਾ ਦੀ ਵਰਗੀਕਰਨ ਲਈ ਲੋਜਿਸਟਿਕ ਰੈਗਰੈਸ਼ਨ") + +> 🎥 ਲੀਨੀਅਰ ਰੈਗਰੈਸ਼ਨ ਮਾਡਲ ਬਣਾਉਣ ਦੇ ਛੋਟੇ ਵੀਡੀਓ ਸਮੀਖਿਆ ਲਈ ਉੱਪਰ ਦਰਸਾਈ ਚਿੱਤਰ 'ਤੇ ਕਲਿੱਕ ਕਰੋ + +1. ਆਪਣੇ ਵਰਗੀਕਰਨ ਮਾਡਲ ਵਿੱਚ ਵਰਤਣ ਲਈ ਵੈਰੀਏਬਲ ਚੁਣੋ ਅਤੇ `train_test_split()` ਕਾਲ ਕਰਕੇ ਟ੍ਰੇਨਿੰਗ ਅਤੇ ਟੈਸਟ ਸੈੱਟ ਵੰਡੋ: + + ```python + from sklearn.model_selection import train_test_split + + X = encoded_pumpkins[encoded_pumpkins.columns.difference(['Color'])] + y = encoded_pumpkins['Color'] + + X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) + + ``` + +2. ਹੁਣ ਤੁਸੀਂ `fit()` ਕਾਲ ਕਰਕੇ ਆਪਣੇ ਟ੍ਰੇਨਿੰਗ ਡੇਟਾ ਨਾਲ ਮਾਡਲ ਟ੍ਰੇਨ ਕਰ ਸਕਦੇ ਹੋ ਅਤੇ ਇਸਦਾ ਨਤੀਜਾ ਪ੍ਰਿੰਟ ਕਰ ਸਕਦੇ ਹੋ: + + ```python + from sklearn.metrics import f1_score, classification_report + from sklearn.linear_model import LogisticRegression + + model = LogisticRegression() + model.fit(X_train, y_train) + predictions = model.predict(X_test) + + print(classification_report(y_test, predictions)) + print('Predicted labels: ', predictions) + print('F1-score: ', f1_score(y_test, predictions)) + ``` + + ਆਪਣੇ ਮਾਡਲ ਦਾ ਸਕੋਰਬੋਰਡ ਦੇਖੋ। ਇਹ ਬੁਰੀ ਗੱਲ ਨਹੀਂ ਹੈ, ਧਿਆਨ ਵਿੱਚ ਰੱਖਦੇ ਹੋਏ ਕਿ ਤੁਹਾਡੇ ਕੋਲ صرف ਲਗਭਗ 1000 ਕਤਾਰਾਂ ਦਾ ਡੇਟਾ ਹੈ: + + ```output + precision recall f1-score support + + 0 0.94 0.98 0.96 166 + 1 0.85 0.67 0.75 33 + + accuracy 0.92 199 + macro avg 0.89 0.82 0.85 199 + weighted avg 0.92 0.92 0.92 199 + + Predicted labels: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 + 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 + 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 0 0 0 1 0 0 0 0 0 0 0 0 1 1] + F1-score: 0.7457627118644068 + ``` + +## ਇਕਨੁਭਵ ਮੈਟ੍ਰਿਕਸ ਰਾਹੀਂ ਬੇਹਤਰ ਸਮਝ + +ਜਦੋਂ ਤੁਸੀਂ [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 | -![ਡਾਟਾ ਦੀ ਵਿਜ਼ੁਅਲਾਈਜ਼ ਕੀਤੀ ਕੈਟਪਲਾਟ](../../../../2-Regression/4-Logistic/images/pumpkins_catplot_2.png) +ਇੱਥੇ ਕੀ ਹੋ ਰਿਹਾ ਹੈ? ਚਲੋ ਕਹੀਏ ਸਾਡਾ ਮਾਡਲ ਕੱਦੂਆਂ ਨੂੰ ਦੋ ਬਾਇਨਰੀ ਸ਼੍ਰੇਣੀਆਂ ਵਿੱਚ ਵੰਡਣ ਲਈ ਪੁੱਛਿਆ ਗਿਆ ਹੈ, ਸ਼੍ਰੇਣੀ 'ਸਫੈਦ' ਅਤੇ ਸ਼੍ਰੇਣੀ 'ਸਫੈਦ-ਨਹੀਂ'। -### ਸਵਾਰਮ ਪਲਾਟ ਦੀ ਵਰਤੋਂ ਕਰੋ +- ਜੇ ਤੁਹਾਡਾ ਮਾਡਲ ਕੱਦੂ ਨੂੰ ਸਫੈਦ ਨਾ ਕਹਿੰਦਾ ਹੈ ਅਤੇ ਉਹ ਅਸਲ ਵਿੱਚ 'ਸਫੈਦ-ਨਹੀਂ' ਸ਼੍ਰੇਣੀ ਵਿੱਚ ਆਉਂਦਾ ਹੈ ਤਾਂ ਅਸੀਂ ਇਸਨੂੰ ਸੱਚਾ ਨਕਾਰਾਤਮਕ ਕਹਿੰਦੇ ਹਾਂ, ਜੋ ਸਿਖਰਲੇ ਖੱਬੇ ਨੰਬਰ ਨਾਲ ਦਰਸਾਇਆ ਗਿਆ ਹੈ। +- ਜੇ ਤੁਹਾਡਾ ਮਾਡਲ ਕੱਦੂ ਨੂੰ ਸਫੈਦ ਕਹਿੰਦਾ ਹੈ ਅਤੇ ਉਹ ਅਸਲ ਵਿੱਚ 'ਸਫੈਦ-ਨਹੀਂ' ਸ਼੍ਰੇਣੀ ਵਿੱਚ ਆਉਂਦਾ ਹੈ ਤਾਂ ਅਸੀਂ ਇਸਨੂੰ ਗਲਤ ਨਕਾਰਾਤਮਕ ਕਹਿੰਦੇ ਹਾਂ, ਜੋ ਹੇਠਲੇ ਖੱਬੇ ਨੰਬਰ ਨਾਲ ਦਰਸਾਇਆ ਗਿਆ ਹੈ। +- ਜੇ ਤੁਹਾਡਾ ਮਾਡਲ ਕੱਦੂ ਨੂੰ ਸਫੈਦ ਨਾ ਕਹਿੰਦਾ ਹੈ ਅਤੇ ਉਹ ਅਸਲ ਵਿੱਚ 'ਸਫੈਦ' ਸ਼੍ਰੇਣੀ ਵਿੱਚ ਆਉਂਦਾ ਹੈ ਤਾਂ ਅਸੀਂ ਇਸਨੂੰ ਗਲਤ ਸਕਾਰਾਤਮਕ ਕਹਿੰਦੇ ਹਾਂ, ਜੋ ਸਿਖਰਲੇ ਸੱਜੇ ਨੰਬਰ ਨਾਲ ਦਰਸਾਇਆ ਗਿਆ ਹੈ। +- ਜੇ ਤੁਹਾਡਾ ਮਾਡਲ ਕੱਦੂ ਨੂੰ ਸਫੈਦ ਕਹਿੰਦਾ ਹੈ ਅਤੇ ਉਹ ਅਸਲ ਵਿੱਚ 'ਸਫੈਦ' ਸ਼੍ਰੇਣੀ ਵਿੱਚ ਆਉਂਦਾ ਹੈ ਤਾਂ ਅਸੀਂ ਇਸਨੂੰ ਸੱਚਾ ਸਕਾਰਾਤਮਕ ਕਹਿੰਦੇ ਹਾਂ, ਜੋ ਹੇਠਲੇ ਸੱਜੇ ਨੰਬਰ ਨਾਲ ਦਰਸਾਇਆ ਗਿਆ ਹੈ। -ਕਿਉਂਕਿ 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 ਕਰਵ ਨੂੰ ਵੇਖੋ [![ML for beginners - Analyzing Logistic Regression Performance with ROC Curves](https://img.youtube.com/vi/GApO575jTA0/0.jpg)](https://youtu.be/GApO575jTA0 "ML for beginners - Analyzing Logistic Regression Performance with ROC Curves") -> 🎥 ਉੱਪਰ ਦਿੱਤੀ ਤਸਵੀਰ 'ਤੇ ਕਲਿਕ ਕਰੋ ROC ਕਰਵਜ਼ ਦਾ ਛੋਟਾ ਵੀਡੀਓ ਝਲਕ ਦੇਖਣ ਲਈ +> 🎥 ਉਪਰ ਦੀ ਤਸਵੀਰ 'ਤੇ ਕਲਿੱਕ ਕਰੋ ROC ਕਰਵਾਂ ਦੀ ਇੱਕ ਛੋਟੀ ਵੀਡੀਓ ਜਾਣਕਾਰੀ ਲਈ -ਆਓ ਇੱਕ ਹੋਰ ਵਿਜੁਅਲਾਈਜ਼ੇਸ਼ਨ ਕਰੀਏ ਤਾਂ ਜੋ '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 ਅक्ष ਤੇ ਗਲਤ ਸਕਾਰਾਤਮਕ ਦਰ ਹੁੰਦੀ ਹੈ।" ਇਸ ਲਈ, ਕਰਵ ਦੀ ਖੜਕ ਜਾਂ ਸੰਕੇਤ ਅਤੇ ਮਧ્યਬਿੰਦੂ ਰੇਖਾ ਅਤੇ ਕਰਵ ਵਿਚਕਾਰ ਦੀ ਜਗ੍ਹਾ ਮੱਤਵਪੂਰਣ ਹੈ: ਤੁਸੀਂ ਚਾਹੁੰਦੇ ਹੋ ਕਿ ਕਰਵ ਜਲਦੀ ਉੱਪਰ ਵੱਲ ਜਾਂਦੀ ਹੋਵੇ ਅਤੇ ਲਾਈਨ ਤੋਂ ਉੱਪਰ ਚੱਲ ਜਾਵੇ। ਸਾਡੇ ਮਾਮਲੇ ਵਿੱਚ, ਸ਼ੁਰੂ ਵਿੱਚ ਗਲਤ ਸਕਾਰਾਤਮਕ ਹਨ, ਪਰ ਫਿਰ ਲਾਈਨ ਠੀਕ ਢੰਗ ਨਾਲ ਉੱਪਰ ਵੱਲ ਜਾਂਦੀ ਹੈ: -![ROC](../../../../2-Regression/4-Logistic/images/ROC_2.png) +![ROC](../../../../translated_images/pa/ROC_2.777f20cdfc4988ca.webp) -ਅੰਤ ਵਿੱਚ, 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]])) ``` - ਇਸ ਫਾਈਲ ਵਿੱਚ ਟੈਂਪਲੇਟਿੰਗ ਨੂੰ ਵੇਖੋ। ਧਿਆਨ ਦਿਓ ਕਿ ਇਸ ਵਿੱਚ ਮਾਡਲ ਦੁਆਰਾ ਪ੍ਰਦਾਨ ਕੀਤੇ ਜਾਣ ਵਾਲੇ ਵੈਰੀਏਬਲਾਂ ਲਈ 'mustache' ਸਿੰਟੈਕਸ ਵਰਤਿਆ ਗਿਆ ਹੈ, ਜਿਵੇਂ ਕਿ ਪ੍ਰਡਿਕਸ਼ਨ ਟੈਕਸਟ: `{{}}`। ਇੱਥੇ ਇੱਕ ਫਾਰਮ ਵੀ ਹੈ ਜੋ `/predict` ਰੂਟ ਨੂੰ ਪ੍ਰਡਿਕਸ਼ਨ ਭੇਜਦਾ ਹੈ। + ਇਸ ਫਾਇਲ ਵਿੱਚ ਟੈਮਪਲੇਟਿੰਗ ਨੂੰ ਦੇਖੋ। ਧਿਆਨ ਦਿਓ ਕਿ ਵੇਰੀਏਬਲਾਂ ਦੇ ਆਲੇ-ਦੁਆਲੇ 'ਮਸਟੈਚ' ਸਿੰਟੈਕਸ ਹੈ ਜੋ ਐਪ ਤੋਂ ਮੈਲ-ਮਿਲਾਪ ਕਰਦੇ ਹਨ, ਜਿਵੇਂ ਅਨੁਮਾਨ ਟੈਕਸਟ: `{{}}`। ਇੱਕ ਫਾਰਮ ਵੀ ਹੈ ਜੋ `/predict` ਰੂਟ ਨੂੰ ਅਨੁਮਾਨ ਪੁੱਟਦਾ ਹੈ। - ਅੰਤ ਵਿੱਚ, ਤੁਸੀਂ Python ਫਾਈਲ ਬਣਾਉਣ ਲਈ ਤਿਆਰ ਹੋ ਜੋ ਮਾਡਲ ਦੀ ਖਪਤ ਅਤੇ ਪ੍ਰਡਿਕਸ਼ਨ ਦੇ ਪ੍ਰਦਰਸ਼ਨ ਨੂੰ ਚਲਾਉਂਦੀ ਹੈ: + ਅੰਤ ਵਿੱਚ, ਤੁਸੀਂ ਉਸ ਪਾਈਥਨ ਫਾਇਲ ਨੂੰ ਬਣਾਉਣ ਲਈ ਤਿਆਰ ਹੋ ਜੋ ਮਾਡਲ ਦੀ ਖਪਤ ਅਤੇ ਅਨੁਮਾਨਾਂ ਦੀ ਪ੍ਰਦਰਸ਼ਨੀ ਚਲਾਉਂਦੀ ਹੈ: -1. `app.py` ਵਿੱਚ ਸ਼ਾਮਲ ਕਰੋ: +1. `app.py` ਵਿੱਚ ਜੋੜੋ: ```python import numpy as np @@ -309,19 +309,44 @@ print(model.predict([[50,44,-12]])) app.run(debug=True) ``` - > 💡 ਟਿੱਪ: ਜਦੋਂ ਤੁਸੀਂ Flask ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਵੈੱਬ ਐਪ ਚਲਾਉਂਦੇ ਹੋ, ਤਾਂ [debug=True](https://www.askpython.com/python-modules/flask/flask-debug-mode) ਸ਼ਾਮਲ ਕਰਨ 'ਤੇ, ਤੁਹਾਡੇ ਐਪਲੀਕੇਸ਼ਨ ਵਿੱਚ ਕੀਤੇ ਗਏ ਕਿਸੇ ਵੀ ਬਦਲਾਅ ਨੂੰ ਤੁਰੰਤ ਦਰਸਾਇਆ ਜਾਵੇਗਾ ਬਿਨਾਂ ਸਰਵਰ ਨੂੰ ਦੁਬਾਰਾ ਸ਼ੁਰੂ ਕਰਨ ਦੀ ਲੋੜ। ਸਾਵਧਾਨ ਰਹੋ! ਇਸ ਮੋਡ ਨੂੰ ਪ੍ਰੋਡਕਸ਼ਨ ਐਪ ਵਿੱਚ ਚਾਲੂ ਨਾ ਕਰੋ। + > 💡 ਸੁਝਾਅ: ਜਦੋਂ ਤੁਸੀਂ Flask ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਵੈੱਬ ਐਪ ਚਲਾ ਰਹੇ ਹੋ ਅਤੇ [`debug=True`](https://www.askpython.com/python-modules/flask/flask-debug-mode) ਨੂੰ ਜੋੜਦੇ ਹੋ, ਤਾਂ ਤੁਹਾਡੇ ਐਪ ਵਿੱਚ ਕੀਤੇ ਗਏ ਕੋਈ ਵੀ ਬਦਲਾਅ ਤੁਰੰਤ ਪ੍ਰਗਟ ਹੋ ਜਾਣਗੇ ਬਿਨਾਂ ਸਰਵਰ ਨੂੰ ਫਿਰ ਨਾਲ ਚਾਲੂ ਕੀਤੇ। ਧਿਆਨ ਰੱਖੋ! ਇਸ ਮੋਡ ਨੂੰ ਪ੍ਰੋਡੱਖਸ਼ਨ ਐਪ ਵਿੱਚ ਸਮਰਥਿਤ ਨਾ ਕਰੋ। -ਜੇ ਤੁਸੀਂ `python app.py` ਜਾਂ `python3 app.py` ਚਲਾਉਂਦੇ ਹੋ - ਤੁਹਾਡਾ ਵੈੱਬ ਸਰਵਰ ਸਥਾਨਕ ਤੌਰ 'ਤੇ ਸ਼ੁਰੂ ਹੋ ਜਾਂਦਾ ਹੈ, ਅਤੇ ਤੁਸੀਂ ਇੱਕ ਛੋਟਾ ਫਾਰਮ ਭਰ ਸਕਦੇ ਹੋ ਤਾਂ ਜੋ ਤੁਹਾਡੇ ਸਵਾਲ ਦਾ ਜਵਾਬ ਮਿਲ ਸਕੇ ਕਿ UFO ਕਿੱਥੇ ਦੇਖੇ ਗਏ ਹਨ! +ਜੇ ਤੁਸੀਂ `python app.py` ਜਾਂ `python3 app.py` ਚਲਾਓਗੇ - ਤੁਹਾਡਾ ਵੈੱਬ ਸਰਵਰ ਲੋਕਲ ਤੌਰ 'ਤੇ ਚਾਲੂ ਹੋਵੇਗਾ, ਅਤੇ ਤੁਸੀਂ ਇੱਕ ਛੋਟਾ ਫਾਰਮ ਭਰਕੇ UFO ਦਾ ਨਤੀਜਾ ਤੁਰੰਤ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦੇ ਹੋ ਕਿ ਕਿੱਥੇ UFO ਦਿਖਾਈ ਦਿੱਤਾ! -ਇਹ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ, `app.py` ਦੇ ਹਿੱਸਿਆਂ ਨੂੰ ਵੇਖੋ: +ਇਸ ਤੋਂ ਪਹਿਲਾਂ, `app.py` ਦੇ ਹਿੱਸਿਆਂ ਨੂੰ ਦੇਖੋ: -1. ਪਹਿਲਾਂ, ਡਿਪੈਂਡੈਂਸੀਜ਼ ਲੋਡ ਕੀਤੀਆਂ ਜਾਂਦੀਆਂ ਹਨ ਅਤੇ ਐਪ ਸ਼ੁਰੂ ਹੁੰਦਾ ਹੈ। -1. ਫਿਰ, ਮਾਡਲ ਇੰਪੋਰਟ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। -1. ਫਿਰ, ਮੁੱਖ ਰੂਟ 'ਤੇ index.html ਰੈਂਡਰ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। +1. ਸਭ ਤੋਂ ਪਹਿਲਾਂ ਨਿਰਭਰਤਾ ਲੋਡ ਕੀਤੀਆਂ ਜਾਂਦੀਆਂ ਹਨ ਅਤੇ ਐਪ ਸ਼ੁਰੂ ਹੁੰਦੀ ਹੈ। +1. ਫਿਰ ਮਾਡਲ ਨੂੰ ਇੰਪੋਰਟ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। +1. ਫਿਰ, ਹੌਮ ਰੂਟ ਤੇ index.html ਰੇਡਰ ਹੁੰਦਾ ਹੈ। -`/predict` ਰੂਟ 'ਤੇ, ਜਦੋਂ ਫਾਰ +`/predict` ਰੂਟ 'ਤੇ ਜਦੋਂ ਫਾਰਮ ਪੋਸਟ ਹੁੰਦਾ ਹੈ ਤਾਂ ਕਈ ਕਾਮ ਹੁੰਦੇ ਹਨ: + +1. ਫਾਰਮ ਦੇ ਵੇਰੀਏਬਲ ਇਕੱਠੇ ਕਰਕੇ numpy ਐਰੇ ਵਿੱਚ ਬਦਲ ਦਿੱਤੇ ਜਾਂਦੇ ਹਨ। ਫਿਰ ਇਹ ਮਾਡਲ ਨੂੰ ਭੇਜੇ ਜਾਂਦੇ ਹਨ ਅਤੇ ਅਨੁਮਾਨ ਵਾਪਸ ਮਿਲਦਾ ਹੈ। +2. ਸਾਡੀ ਇੱਛਾ ਹੈ ਕਿ ਦਿਖਾਇਆ ਜਾਣ ਵਾਲੇ ਦੇਸ਼ਾਂ ਨੂੰ ਅਨੁਮਾਨੀ ਦੇਸ਼ ਕੋਡ ਤੋਂ ਪੜ੍ਹਨਯੋਗ ਪਾਠ ਰੂਪ ਵਿੱਚ ਫਿਰ ਤੋਂ ਰੇਡਰ ਕਰਕੇ ਵਾਪਸ index.html ਨੂੰ ਭੇਜਿਆ ਜਾਵੇ। + +Flask ਅਤੇ ਪਿਕਲ ਕੀਤੇ ਮਾਡਲ ਦੀ ਵਰਤੋਂ ਨਾਲ ਇਸ ਤਰ੍ਹਾਂ ਮਾਡਲ ਵਰਤਣਾ ਸਾਫ਼-ਸੁਥਰਾ ਹੈ। ਸਭ ਤੋਂ ਮੁਸ਼ਕਲ ਗੱਲ ਇਹ ਸਮਝਣਾ ਹੈ ਕਿ ਡੇਟਾ ਕਿਸ ਰੂਪ ਵਿੱਚ ਮਾਡਲ ਨੂੰ ਭੇਜਣਾ ਹੈ ਤਾਂ ਜੋ ਅਨੁਮਾਨ ਪ੍ਰਾਪਤ ਹੋਵੇ। ਇਹ ਸਾਰਾ ਮਾਡਲ ਦੇ ਟ੍ਰੇਨਿੰਗ ਦੇ ਆਧਾਰ ਤੇ ਨਿਰਭਰ ਕਰਦਾ ਹੈ। ਇਸ ਵਾਰੀ ਮਾਡਲ ਨੂੰ ਅਨੁਮਾਨ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਤਿੰਨ ਡੇਟਾ ਪੁਆਇੰਟ ਚਾਹੀਦੇ ਹਨ। + +ਪ੍ਰਫੈਸ਼ਨਲ ਸੈਟਿੰਗ ਵਿੱਚ, ਤੁਸੀਂ ਵੇਖ ਸਕਦੇ ਹੋ ਕਿ ਮਾਡਲ ਟ੍ਰੇਨ ਕਰਨ ਵਾਲਿਆਂ ਅਤੇ ਜੋ ਲੋਕ ਇਸਨੂੰ ਵੈੱਬ ਜਾਂ ਮੋਬਾਈਲ ਐਪ ਵਿੱਚ ਵਰਤਦੇ ਹਨ, ਉਨ੍ਹਾਂ ਦਾ ਚੰਗਾ ਸੰਚਾਰ ਕਿੰਨਾ ਜ਼ਰੂਰੀ ਹੁੰਦਾ ਹੈ। ਸਾਡੇ ਮਾਮਲੇ ਵਿੱਚ, ਇਹ ਸਿਰਫ ਇੱਕ ਬੰਦਾ ਹੈ, ਤੁਹਾਨੂੰ! + +--- + +## 🚀 ਚੈਲੇਂਜ + +ਨੋਟਬੁੱਕ ਵਿੱਚ ਕੰਮ ਕਰਨ ਅਤੇ ਮਾਡਲ ਨੂੰ Flask ਐਪ ਵਿੱਚ ਲਾਉਣ ਦੀ ਬਜਾਏ, ਤੁਸੀਂ ਮਾਡਲ ਨੂੰ ਸੀਧਾ Flask ਐਪ ਵਿੱਚ ਟ੍ਰੇਨ ਕਰ ਸਕਦੇ ਹੋ! ਆਪਣੇ ਨੋਟਬੁੱਕ ਦੇ Python ਕੋਡ ਨੂੰ ਸਾਫ਼-ਸੁਥਰੇ ਡੇਟਾ ਤੋਂ ਬਾਅਦ ਸ਼ਾਇਦ `train` ਨਾਮਕ ਰੂਟ 'ਤੇ ਟ੍ਰੇਨ ਕਰਨ ਵਾਸਤੇ ਐਪ ਵਿੱਚ ਬਦਲੋ। ਇਸ ਤਰੀਕੇ ਦੇ ਲਾਭ ਅਤੇ ਨੁਕਸਾਨ ਕੀ ਹਨ? + +## [ਪੋਸਟ-ਲੈਕਚਰ ਕਵਿਜ਼](https://ff-quizzes.netlify.app/en/ml/) + +## ਸਮੀਖਿਆ ਅਤੇ ਸਵੈ ਅਧਿਐਨ + +ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਮਾਡਲਾਂ ਦੀ ਖਪਤ ਲਈ ਵੈੱਬ ਐਪ ਬਣਾਉਣ ਦੇ ਕਈ ਤਰੀਕੇ ਹਨ। ਜਾਵਾਸਕ੍ਰਿਪਟ ਜਾਂ Python ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਵੈੱਬ ਐਪ ਬਣਾਉਣ ਦੇ ਤਰੀਕਿਆਂ ਦੀ ਸੂਚੀ ਬਣਾਓ। ਆਰਕੀਟੈਕਚਰ ਬਾਰੇ ਸੋਚੋ: ਕੀ ਮਾਡਲ ਨੂੰ ਐਪ ਵਿੱਚ ਹੀ ਰਹਿਣਾ ਚਾਹੀਦਾ ਹੈ ਜਾਂ ਕਲਾਊਡ ਵਿੱਚ? ਜੇ ਕਲਾਊਡ ਵਿੱਚ, ਤਾਂ ਤੁਸੀਂ ਕਿਵੇਂ ਪਹੁੰਚੋਗੇ? ਇੱਕ ਲਾਗੂ ਕੀਤੇ ਗਏ ML ਵੈੱਬ ਹੱਲ ਲਈ ਆਰਕੀਟੈਕਚਰਲ ਮਾਡਲ ਬਣਾਓ। + +## ਕੰਮ + +[ਕਿਸੇ ਹੋਰ ਮਾਡਲ ਦੀ ਕੋਸ਼ਿਸ ਕਰੋ](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/4-Classification/1-Introduction/README.md b/translations/pa/4-Classification/1-Introduction/README.md index 075373d8e..1c5bb20a2 100644 --- a/translations/pa/4-Classification/1-Introduction/README.md +++ b/translations/pa/4-Classification/1-Introduction/README.md @@ -1,67 +1,67 @@ -# ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਦਾ ਪਰਚੇਅ +# ਵਰਗੀਕਰਨ ਦਾ ਪਰਿਚਯ -ਇਨ੍ਹਾਂ ਚਾਰ ਪਾਠਾਂ ਵਿੱਚ, ਤੁਸੀਂ ਕਲਾਸਿਕ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਦੇ ਇੱਕ ਮੂਲ ਧਿਆਨ - _ਕਲਾਸੀਫਿਕੇਸ਼ਨ_ - ਦੀ ਖੋਜ ਕਰੋਗੇ। ਅਸੀਂ ਏਸ਼ੀਆ ਅਤੇ ਭਾਰਤ ਦੇ ਸਾਰੇ ਸ਼ਾਨਦਾਰ ਖਾਣਿਆਂ ਬਾਰੇ ਡੇਟਾਸੈਟ ਨਾਲ ਵੱਖ-ਵੱਖ ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਐਲਗੋਰਿਥਮ ਦੀ ਵਰਤੋਂ ਕਰਨ ਦਾ ਤਰੀਕਾ ਸਿੱਖਾਂਗੇ। ਉਮੀਦ ਹੈ ਕਿ ਤੁਸੀਂ ਭੁੱਖੇ ਹੋ! +ਇਸ ਚਾਰ ਪਾਠਾਂ ਵਿੱਚ, ਤੁਸੀਂ ਕਲਾਸਿਕ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਦੇ ਇੱਕ ਮੂਲ ਧਿਆਨ - _ਵਰਗੀਕਰਨ_ ਨੂੰ ਖੋਜੋਗੇ। ਅਸੀਂ ਏਸ਼ੀਆ ਅਤੇ ਭਾਰਤ ਦੇ ਸਾਰੇ ਸ਼ਾਨਦਾਰ ਪਾਕਸ਼ਾਲਾਂ ਬਾਰੇ ਡੇਟਾਸੈੱਟ ਨਾਲ ਵੱਖ-ਵੱਖ ਵਰਗੀਕਰਨ ਐਲਗੋਰਿਦਮਾਂ ਦੀ ਵਰਤੋਂ ਕਰਾਂਗੇ। ਉਮੀਦ ਹੈ ਤੁਸੀਂ ਭੁੱਖੇ ਹੋ! -![ਸਿਰਫ਼ ਇੱਕ ਚੁਟਕੀ!](../../../../4-Classification/1-Introduction/images/pinch.png) +![ਥੋੜ੍ਹਾ ਜਿਹਾ](../../../../translated_images/pa/pinch.1b035ec9ba7e0d40.webp) -> ਇਨ੍ਹਾਂ ਪਾਠਾਂ ਵਿੱਚ ਪੈਨ-ਏਸ਼ੀਆਈ ਖਾਣਿਆਂ ਦਾ ਜਸ਼ਨ ਮਨਾਓ! ਚਿੱਤਰ [Jen Looper](https://twitter.com/jenlooper) ਦੁਆਰਾ +> ਇਨ੍ਹਾਂ ਪਾਠਾਂ ਵਿੱਚ ਪੈਨ-ਐਸ਼ੀਅਨ ਪਾਕਵਿਧੀਆਂ ਦਾ ਜਸ਼ਨ ਮਨਾਓ! ਚਿੱਤਰ [Jen Looper](https://twitter.com/jenlooper) ਵੱਲੋਂ -ਕਲਾਸੀਫਿਕੇਸ਼ਨ [ਸੁਪਰਵਾਈਜ਼ਡ ਲਰਨਿੰਗ](https://wikipedia.org/wiki/Supervised_learning) ਦਾ ਇੱਕ ਰੂਪ ਹੈ ਜੋ ਰਿਗ੍ਰੈਸ਼ਨ ਤਕਨੀਕਾਂ ਨਾਲ ਕਾਫ਼ੀ ਸਮਾਨਤਾ ਰੱਖਦਾ ਹੈ। ਜੇ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਸਾਰੇ ਡੇਟਾਸੈਟ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਮੁੱਲ ਜਾਂ ਚੀਜ਼ਾਂ ਦੇ ਨਾਮਾਂ ਦੀ ਪੇਸ਼ਗੋਈ ਕਰਨ ਬਾਰੇ ਹੈ, ਤਾਂ ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਆਮ ਤੌਰ 'ਤੇ ਦੋ ਸਮੂਹਾਂ ਵਿੱਚ ਵੰਡਿਆ ਜਾਂਦਾ ਹੈ: _ਬਾਈਨਰੀ ਕਲਾਸੀਫਿਕੇਸ਼ਨ_ ਅਤੇ _ਮਲਟੀਕਲਾਸ ਕਲਾਸੀਫਿਕੇਸ਼ਨ_। +ਵਰਗੀਕਰਨ ਇੱਕ ਤਰ੍ਹਾਂ ਦੀ [ਸੁਪਰਵਾਈਜ਼ਡ ਲਰਨਿੰਗ](https://wikipedia.org/wiki/Supervised_learning) ਹੈ ਜੋ ਰਿਗ੍ਰੈਸ਼ਨ ਤਕਨੀਕਾਂ ਨਾਲ ਕਾਫੀ ਮਿਲਦੀ-ਜੁਲਦੀ ਹੈ। ਜੇ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਡੇਟਾਸੈੱਟ ਦੀ ਵਰਤੋਂ ਨਾਲ ਚੀਜ਼ਾਂ ਦੇ ਮੁੱਲ ਜਾਂ ਨਾਮਾਂ ਦੀ ਭਵਿੱਖਬਾਣੀ ਕਰਨ ਬਾਰੇ ਹੈ, ਤਾਂ ਵਰਗੀਕਰਨ ਆਮ ਤੌਰ 'ਤੇ ਦੋ ਸਮੂਹਾਂ ਵਿੱਚ ਵੰਡਿਆ ਜਾਂਦਾ ਹੈ: _ਬਾਈਨਰੀ ਵਰਗੀਕਰਨ_ ਅਤੇ _ਮਲਟੀਕਲਾਸ ਵਰਗੀਕਰਨ_। -[![ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਦਾ ਪਰਚੇਅ](https://img.youtube.com/vi/eg8DJYwdMyg/0.jpg)](https://youtu.be/eg8DJYwdMyg "ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਦਾ ਪਰਚੇਅ") +[![ਵਰਗੀਕਰਨ ਦਾ ਪਰਿਚਯ](https://img.youtube.com/vi/eg8DJYwdMyg/0.jpg)](https://youtu.be/eg8DJYwdMyg "ਵਰਗੀਕਰਨ ਦਾ ਪਰਿਚਯ") -> 🎥 ਉਪਰੋਕਤ ਚਿੱਤਰ 'ਤੇ ਕਲਿਕ ਕਰੋ: MIT ਦੇ John Guttag ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਦਾ ਪਰਚੇਅ ਦਿੰਦੇ ਹਨ +> 🎥 ਵਡੀਚਿੱਤਰ ਤੇ ਕਲਿੱਕ ਕਰੋ: MIT ਦੇ ਜੌਨ ਗੱਟੈਗ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਦਾ ਪਰਿਚਯ ਕਰਵਾਉਂਦੇ ਹਨ -ਯਾਦ ਰੱਖੋ: +ਯਾਦ ਰੱਖੋ: -- **ਲਿਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ** ਨੇ ਤੁਹਾਨੂੰ ਵੈਰੀਏਬਲਾਂ ਦੇ ਵਿਚਕਾਰ ਸੰਬੰਧਾਂ ਦੀ ਪੇਸ਼ਗੋਈ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕੀਤੀ ਅਤੇ ਇਹ ਪਤਾ ਲਗਾਉਣ ਵਿੱਚ ਸਹੀ ਪੇਸ਼ਗੋਈ ਕੀਤੀ ਕਿ ਨਵਾਂ ਡੇਟਾਪੌਇੰਟ ਉਸ ਲਾਈਨ ਦੇ ਸੰਬੰਧ ਵਿੱਚ ਕਿੱਥੇ ਆਵੇਗਾ। ਇਸ ਲਈ, ਤੁਸੀਂ ਪੇਸ਼ਗੋਈ ਕਰ ਸਕਦੇ ਹੋ ਕਿ _ਸਿਤੰਬਰ ਦੇ ਮੁਕਾਬਲੇ ਦਸੰਬਰ ਵਿੱਚ ਕਦੂ ਦੀ ਕੀਮਤ ਕੀ ਹੋਵੇਗੀ_। -- **ਲੌਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ** ਨੇ ਤੁਹਾਨੂੰ "ਬਾਈਨਰੀ ਸ਼੍ਰੇਣੀਆਂ" ਦੀ ਖੋਜ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕੀਤੀ: ਇਸ ਕੀਮਤ 'ਤੇ, _ਕੀ ਇਹ ਕਦੂ ਸੰਤਰੀ ਹੈ ਜਾਂ ਨਾ-ਸੰਤਰੀ_? +- **ਲੀਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ** ਤੁਹਾਡੇ ਨੂੰ ਵੈਰੀਏਬਲਾਂ ਵਿਚਕਾਰ ਸੰਬੰਧਾਂ ਦੀ ਭਵਿੱਖਬਾਣੀ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ ਅਤੇ ਦੱਸਦਾ ਹੈ ਕਿ ਕੋਈ ਨਵਾਂ ਡੇਟਾਪੌਇੰਟ ਕਿੱਥੇ ਪਵੇਗਾ। ਉਦਾਹਰਨ ਵਜੋਂ, ਤੁਸੀਂ ਇਹ ਅੰਦਾਜ਼ਾ ਲਗਾ ਸਕਦੇ ਹੋ _ਕਿੱਤਨਾ ਕਦੂ ਦਾ ਭਾਅ ਸਤੰਬਰ ਵੱਲੋਂ ਦਸੰਬਰ ਤਕ ਹੋਵੇਗਾ_। +- **ਲੌਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ** ਤੁਹਾਨੂੰ "ਬਾਈਨਰੀ ਸ਼੍ਰੇਣੀਆਂ" ਖੋਜਣ 'ਚ ਮਦਦ ਕਰਦਾ ਹੈ: ਇਸ ਮੁੱਲ ਤੇ, _ਕੀ ਇਹ ਕਦੂ ਸੰਤਰੀ ਰੰਗ ਦਾ ਹੈ ਜਾਂ ਨਹੀਂ_? -ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਵੱਖ-ਵੱਖ ਐਲਗੋਰਿਥਮ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ ਤਾਂ ਜੋ ਡੇਟਾਪੌਇੰਟ ਦੇ ਲੇਬਲ ਜਾਂ ਕਲਾਸ ਨੂੰ ਨਿਰਧਾਰਤ ਕਰਨ ਦੇ ਹੋਰ ਤਰੀਕੇ ਲੱਭੇ ਜਾ ਸਕਣ। ਆਓ ਇਸ ਖਾਣੇ ਦੇ ਡੇਟਾ ਨਾਲ ਕੰਮ ਕਰੀਏ ਤਾਂ ਜੋ ਦੇਖ ਸਕੀਏ ਕਿ ਸਮੱਗਰੀ ਦੇ ਇੱਕ ਸਮੂਹ ਨੂੰ ਦੇਖ ਕੇ, ਅਸੀਂ ਇਸ ਦੇ ਮੂਲ ਖਾਣੇ ਦੀ ਪਛਾਣ ਕਰ ਸਕਦੇ ਹਾਂ। +ਵਰਗੀਕਰਨ ਵੱਖ-ਵੱਖ ਐਲਗੋਰਿਦਮ ਵਰਤਦਾ ਹੈ ਡੇਟਾ ਪੁਆਇੰਟ ਦੇ ਲੇਬਲ ਜਾਂ ਕਲਾਸ ਦਾ ਦਰਜਾ ਤੈਅ ਕਰਨ ਲਈ। ਆਓ ਇਸ ਪਾਕਸ਼ਾਲਾ ਡੇਟਾ ਨਾਲ ਕੰਮ ਕਰੀਏ ਅਤੇ ਵੇਖੀਏ ਕਿ ਕੁਝ ਸਮੱਗਰੀ ਦੇ ਸਮੂਹ ਨੂੰ ਦੇਖ ਕੇ ਅਸੀਂ ਉਸ ਦੇ ਪਾਕਸ਼ਾਲਾ ਦਾ ਪਤਾ ਲਗਾ ਸਕਦੇ ਹਾਂ ਜਾਂ ਨਹੀਂ। -## [ਪ੍ਰੀ-ਪਾਠ ਕਵਿਜ਼](https://ff-quizzes.netlify.app/en/ml/) +## [ਪੂਰਵ-ਦਰਸਨ ਪ੍ਰਸ਼ਨਾਵਲੀ](https://ff-quizzes.netlify.app/en/ml/) -> ### [ਇਹ ਪਾਠ R ਵਿੱਚ ਉਪਲਬਧ ਹੈ!](../../../../4-Classification/1-Introduction/solution/R/lesson_10.html) +> ### [ਇਹ ਪਾਠ R ਵਿੱਚ ਵੀ ਉਪਲਬਧ ਹੈ!](../../../../4-Classification/1-Introduction/solution/R/lesson_10.html) -### ਪਰਚੇਅ +### ਪਰਿਚਯ -ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਖੋਜਕਰਤਾ ਅਤੇ ਡੇਟਾ ਸਾਇੰਟਿਸਟ ਦੀਆਂ ਮੂਲ ਗਤੀਵਿਧੀਆਂ ਵਿੱਚੋਂ ਇੱਕ ਹੈ। ਇੱਕ ਬਾਈਨਰੀ ਮੁੱਲ ("ਕੀ ਇਹ ਈਮੇਲ ਸਪੈਮ ਹੈ ਜਾਂ ਨਹੀਂ?") ਦੀ ਬੁਨਿਆਦੀ ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਤੋਂ ਲੈ ਕੇ ਕੰਪਿਊਟਰ ਵਿਜ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਜਟਿਲ ਚਿੱਤਰ ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਅਤੇ ਸੈਗਮੈਂਟੇਸ਼ਨ ਤੱਕ, ਡੇਟਾ ਨੂੰ ਕਲਾਸਾਂ ਵਿੱਚ ਵੰਡਣਾ ਅਤੇ ਇਸ ਤੋਂ ਸਵਾਲ ਪੁੱਛਣਾ ਹਮੇਸ਼ਾ ਲਾਭਦਾਇਕ ਹੁੰਦਾ ਹੈ। +ਵਰਗੀਕਰਨ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਖੋਜਕਾਰ ਅਤੇ ਡੇਟਾ ਵਿਗਿਆਨੀ ਦੀਆਂ ਮੂਲ ਭੂਮਿਕਾਵਾਂ ਵਿੱਚੋਂ ਇੱਕ ਹੈ। ਬੁਨਿਆਦੀ ਵਰਗੀਕਰਨ, ਜਿਵੇਂ "ਕੀ ਇਹ ਈਮੇਲ ਸਪੈਮ ਹੈ ਜਾਂ ਨਹੀਂ?", ਤੋਂ ਲੈ ਕੇ ਕੰਪਿਊਟਰ ਵਿਜ਼ਨ ਦੀ ਵਰਤੋਂ ਨਾਲ ਜਟਿਲ ਚਿੱਤਰ ਵਰਗੀਕਰਨ ਅਤੇ ਵਿਭਾਜਨ ਤੱਕ, ਡੇਟਾ ਨੂੰ ਕਲਾਸਾਂ ਵਿੱਚ ਵੰਡਣ ਅਤੇ ਉਸ ਵਿੱਚੋਂ ਸਵਾਲ ਪੁੱਛਣ ਵਿਚ ਸਦਾ ਮਦਦਗਾਰ ਹੁੰਦਾ ਹੈ। -ਇਸ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਹੋਰ ਵਿਗਿਆਨਕ ਢੰਗ ਨਾਲ ਵਿਆਖਿਆ ਕਰਨ ਲਈ, ਤੁਹਾਡਾ ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਵਿਧੀ ਇੱਕ ਪੇਸ਼ਗੋਈ ਮਾਡਲ ਬਣਾਉਂਦੀ ਹੈ ਜੋ ਤੁਹਾਨੂੰ ਇਨਪੁਟ ਵੈਰੀਏਬਲਾਂ ਅਤੇ ਆਉਟਪੁਟ ਵੈਰੀਏਬਲਾਂ ਦੇ ਵਿਚਕਾਰ ਸੰਬੰਧ ਨੂੰ ਨਕਸ਼ੇ ਵਿੱਚ ਦਰਸਾਉਣ ਯੋਗ ਬਣਾਉਂਦੀ ਹੈ। +ਇਸ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਵਿਗਿਆਨਕ ਤਰੀਕੇ ਨਾਲ ਕਹਿਣ ਤੇ, ਤੁਹਾਡਾ ਵਰਗੀਕਰਨ ਤਰੀਕਾ ਇੱਕ ਭਵਿੱਖਬਾਣੀ ਮਾਡਲ ਬਣਾਉਂਦਾ ਹੈ ਜੋ ਇਨਪੁਟ ਵੈਰੀਏਬਲਾਂ ਅਤੇ ਆਉਟਪੁਟ ਵੈਰੀਏਬਲਾਂ ਵਿਚਕਾਰ ਸੰਬੰਧ ਬਣਾਉਂਦਾ ਹੈ। -![ਬਾਈਨਰੀ ਵਸ. ਮਲਟੀਕਲਾਸ ਕਲਾਸੀਫਿਕੇਸ਼ਨ](../../../../4-Classification/1-Introduction/images/binary-multiclass.png) +![ਬਾਈਨਰੀ ਅਤੇ ਮਲਟੀਕਲਾਸ ਵਰਗੀਕਰਨ](../../../../translated_images/pa/binary-multiclass.b56d0c86c81105a6.webp) -> ਬਾਈਨਰੀ ਵਸ. ਮਲਟੀਕਲਾਸ ਸਮੱਸਿਆਵਾਂ ਜਿਨ੍ਹਾਂ ਨੂੰ ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਐਲਗੋਰਿਥਮ ਹੱਲ ਕਰ ਸਕਦੇ ਹਨ। ਇਨਫੋਗ੍ਰਾਫਿਕ [Jen Looper](https://twitter.com/jenlooper) ਦੁਆਰਾ +> ਬਾਈਨਰੀ ਵर्सਸ ਮਲਟੀਕਲਾਸ ਸਮੱਸਿਆਵਾਂ ਜੋ ਵਰਗੀਕਰਨ ਐਲਗੋਰਿਦਮਾਂ ਨੂੰ ਸਾਰੇ ਕਰਨੀਆਂ ਪੈਂਦੀਆਂ ਹਨ। ਜਾਣਕਾਰੀ ਕਲਾਕਾਰ [Jen Looper](https://twitter.com/jenlooper) -ਡੇਟਾ ਨੂੰ ਸਾਫ਼ ਕਰਨ, ਇਸ ਨੂੰ ਵਿਜ਼ੁਅਲਾਈਜ਼ ਕਰਨ ਅਤੇ ਇਸ ਨੂੰ ML ਕੰਮਾਂ ਲਈ ਤਿਆਰ ਕਰਨ ਦੀ ਪ੍ਰਕਿਰਿਆ ਸ਼ੁਰੂ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ, ਆਓ ਸਿੱਖੀਏ ਕਿ ਕਿਵੇਂ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਨੂੰ ਡੇਟਾ ਨੂੰ ਕਲਾਸੀਫਾਈ ਕਰਨ ਲਈ ਲਾਭਦਾਇਕ ਬਣਾਇਆ ਜਾ ਸਕਦਾ ਹੈ। +ਡੇਟਾ ਸਾਫ਼ ਕਰਨ, ਵਿਜ਼ੁਅਲਾਈਜ਼ ਕਰਨ ਅਤੇ ਆਪਣੇ ML ਕੰਮਾਂ ਲਈ ਤੈਅ ਕਰਨ ਦੀ ਪ੍ਰਕਿਰਿਆ ਸ਼ੁਰੂ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ, ਆਓ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਦੁਆਰਾ ਵਰਗੀਕਰਨ ਕਰਨ ਦੇ ਵੱਖ-ਵੱਖ ਤਰੀਕਿਆਂ ਬਾਰੇ ਕੁਝ ਜਾਣਕਾਰੀ ਪ੍ਰਾਪਤ ਕਰੀਏ। -[ਅੰਕੜੇ](https://wikipedia.org/wiki/Statistical_classification) ਤੋਂ ਲਿਆ ਗਿਆ, ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਕਲਾਸਿਕ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ, ਜਿਵੇਂ ਕਿ `smoker`, `weight`, ਅਤੇ `age` ਵਰਗੇ ਫੀਚਰਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ _X ਬਿਮਾਰੀ ਦੇ ਵਿਕਾਸ ਦੀ ਸੰਭਾਵਨਾ_ ਦਾ ਨਿਰਧਾਰਨ ਕਰਨਾ। ਇੱਕ ਸੁਪਰਵਾਈਜ਼ਡ ਲਰਨਿੰਗ ਤਕਨੀਕ ਦੇ ਤੌਰ 'ਤੇ ਜੋ ਤੁਸੀਂ ਪਹਿਲਾਂ ਕੀਤੇ ਰਿਗ੍ਰੈਸ਼ਨ ਅਭਿਆਸਾਂ ਦੇ ਸਮਾਨ ਹੈ, ਤੁਹਾਡਾ ਡੇਟਾ ਲੇਬਲ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਅਤੇ ML ਐਲਗੋਰਿਥਮ ਉਹਨਾਂ ਲੇਬਲਾਂ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਨ ਤਾਂ ਜੋ ਡੇਟਾਸੈਟ ਦੇ ਕਲਾਸਾਂ (ਜਾਂ 'ਫੀਚਰਾਂ') ਦੀ ਪੇਸ਼ਗੋਈ ਅਤੇ ਨਿਰਧਾਰਨ ਕੀਤਾ ਜਾ ਸਕੇ ਅਤੇ ਉਨ੍ਹਾਂ ਨੂੰ ਇੱਕ ਸਮੂਹ ਜਾਂ ਨਤੀਜੇ ਵਿੱਚ ਸੌਂਪਿਆ ਜਾ ਸਕੇ। +[ਸੰਖਿਆਕੀ ਵਿਗਿਆਨ](https://wikipedia.org/wiki/Statistical_classification) ਤੋਂ ਲਿਆ ਗਿਆ, ਕਲਾਸਿਕ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਵਿੱਚ ਵਰਗੀਕਰਨ `smoker`, `weight`, ਅਤੇ `age` ਵਰਗੇ ਫੀਚਰਾਂ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ ਤਾ ਕਿ _ਕਿਸੇ ਵਾਇਰਸ ਜਾਂ ਬੀਮਾਰੀ ਦਾ ਹੋਣ ਦਾ ਸੰਭਾਵਨਾ_ ਦਰਜ ਕੀਤੀ ਜਾ ਸਕੇ। ਜਿਵੇਂ ਤੁਸੀਂ ਪਹਿਲਾਂ ਕੀਤੇ ਰਿਗ੍ਰੈਸ਼ਨ ਅਭਿਆਸਾਂ ਵਿੱਚ ਵਾਂਗ, ਤੁਹਾਡੇ ਡੇਟਾ ਨੂੰ ਲੇਬਲ ਕੀਤਾ ਹੁੰਦਾ ਹੈ ਅਤੇ ML ਐਲਗੋਰਿਦਮ ਉਹਨਾਂ ਲੇਬਲਾਂ ਨੂੰ ਵਰਤ ਕੇ ਡੇਟਾਸੈੱਟ ਦੇ ਕਲਾਸ (ਜਾਂ 'ਫੀਚਰ') ਦੀ ਭਵਿੱਖਬਾਣੀ ਕਰਦੇ ਹਨ ਅਤੇ ਉਨ੍ਹਾਂ ਨੂੰ ਇੱਕ ਸਮੂਹ ਜਾਂ ਨਤੀਜੇ ਵਿੱਚ ਵੰਡਦੇ ਹਨ। -✅ ਇੱਕ ਖਾਣੇ ਦੇ ਡੇਟਾਸੈਟ ਦੀ ਕਲਪਨਾ ਕਰਨ ਲਈ ਇੱਕ ਪਲ ਲਓ। ਇੱਕ ਮਲਟੀਕਲਾਸ ਮਾਡਲ ਕੀ ਜਵਾਬ ਦੇ ਸਕਦਾ ਹੈ? ਇੱਕ ਬਾਈਨਰੀ ਮਾਡਲ ਕੀ ਜਵਾਬ ਦੇ ਸਕਦਾ ਹੈ? ਜੇ ਤੁਸੀਂ ਇਹ ਪਤਾ ਲਗਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ ਕਿ ਦਿੱਤੇ ਗਏ ਖਾਣੇ ਵਿੱਚ ਮੀਥੀ ਦਾਣਾ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ ਜਾਂ ਨਹੀਂ, ਤਾਂ ਕੀ ਹੋਵੇਗਾ? ਜੇ ਤੁਸੀਂ ਇਹ ਦੇਖਣਾ ਚਾਹੁੰਦੇ ਹੋ ਕਿ, ਸਟਾਰ ਐਨੀਸ, ਆਰਟੀਚੋਕ, ਫੁੱਲਗੋਭੀ, ਅਤੇ ਹਾਰਸਰੈਡਿਸ਼ ਨਾਲ ਭਰੇ ਇੱਕ ਕਿਰਾਣੇ ਬੈਗ ਦੇ ਤੌਹਫ਼ੇ ਦੇ ਨਾਲ, ਤੁਸੀਂ ਇੱਕ ਆਮ ਭਾਰਤੀ ਖਾਣਾ ਬਣਾਉਣ ਦੇ ਯੋਗ ਹੋ ਸਕਦੇ ਹੋ? +✅ ਇੱਕ ਡੇਟਾਸੈੱਟ ਬਾਰੇ ਸੋਚੋ ਜੋ ਪਾਕਸ਼ਾਲਾਂ ਬਾਰੇ ਹੈ। ਮਲਟੀਕਲਾਸ ਮਾਡਲ ਕਿਸ ਕਿਸਮ ਦੇ ਸਵਾਲਾਂ ਦੇ ਜਵਾਬ ਦੇ ਸਕਦਾ ਹੈ? ਬਾਈਨਰੀ ਮਾਡਲ ਕਿਸ ਕਿਸਮ ਦੇ ਸਵਾਲਾਂ ਦੇ ਜਵਾਬ ਦੇ ਸਕਦਾ ਹੈ? ਜੇ ਤੁਸੀਂ ਜਾਣਨਾ ਚਾਹੁੰਦੇ ਕਿ ਕੋਈ ਦਿੱਤੀ ਗਈ ਪਾਕਸ਼ਾਲਾ ਵਿੱਚ ਮੇਥਾ ਵਰਤੀ ਜਾਂਦੀ ਹੈ? ਜੇ ਤੁਹਾਡੇ ਕੋਲ ਸਿਤਾਰੇ ਦੀਆਂ ਫੁੱਲਾਂ, ਆਰਟਿਚੋਕ, ਫੁੱਲਗੋਭੀ ਅਤੇ ਅੱਜਮੋਦ ਵਾਲੇ ਗ੍ਰੋਸਰੀ ਬੈਗ ਦਾ ਹਾਜ਼ਰੀ ਹੈ, ਤਾਂ ਕੀ ਤੁਸੀਂ ਮੁਲ੍ਹਾਂ ਭਾਰਤੀ ਵਿਆੰਜਨ ਬਣਾ ਸਕਦੇ ਹੋ? -[![ਪ੍ਰੇਸ਼ਾਨ ਕਰਨ ਵਾਲੇ ਰਹੱਸਮਈ ਬਾਸਕਟ](https://img.youtube.com/vi/GuTeDbaNoEU/0.jpg)](https://youtu.be/GuTeDbaNoEU "ਪ੍ਰੇਸ਼ਾਨ ਕਰਨ ਵਾਲੇ ਰਹੱਸਮਈ ਬਾਸਕਟ") +[![ਪਾਗਲ ਰਹੱਸਮਈ ਟੋਕਰੀਆਂ](https://img.youtube.com/vi/GuTeDbaNoEU/0.jpg)](https://youtu.be/GuTeDbaNoEU "ਪਾਗਲ ਰਹੱਸਮਈ ਟੋਕਰੀਆਂ") -> 🎥 ਉਪਰੋਕਤ ਚਿੱਤਰ 'ਤੇ ਕਲਿਕ ਕਰੋ। 'Chopped' ਸ਼ੋਅ ਦਾ ਸਾਰ ਇਹ ਹੈ ਕਿ 'ਰਹੱਸਮਈ ਬਾਸਕਟ' ਜਿੱਥੇ ਸ਼ੈਫ਼ਾਂ ਨੂੰ ਸਮਰਥਨ ਦੇ ਤੌਰ 'ਤੇ ਚੁਣੇ ਗਏ ਸਮੱਗਰੀ ਨਾਲ ਕੁਝ ਖਾਣਾ ਬਣਾਉਣਾ ਪੈਂਦਾ ਹੈ। ਨਿਸ਼ਚਿਤ ਤੌਰ 'ਤੇ ਇੱਕ ML ਮਾਡਲ ਮਦਦ ਕਰਦਾ! +> 🎥 ਉਪਰ ਦਿੱਤੇ ਚਿੱਤਰ ‘ਤੇ ਕਲਿੱਕ ਕਰੋ: ਸ਼ੋਅ 'ਚੌਪਡ' ਦਾ ਮੁੱਖ ਵਿਚਾਰ 'ਰਹੱਸਮਈ ਟੋਕਰੀ' ਹੈ ਜਿੱਥੇ ਕਿਸ਼ਨੀਆਂ ਨੂੰ ਬਿਨਾਂ ਚੁਣੇ ਸਮੱਗਰੀ ਵਿੱਚੋਂ ਇੱਕ ਵਿਆੰਜਨ ਬਨਾਉਣਾ ਪੈਂਦਾ ਹੈ। ਜ਼ਰੂਰ ML ਮਾਡਲ ਮਦਦਗਾਰ ਹੁੰਦਾ! -## ਹੈਲੋ 'ਕਲਾਸੀਫਾਇਰ' +## ਹੈਲੋ 'ਵਰਗੀਕਰਨਕਾਰ' -ਜੋ ਸਵਾਲ ਅਸੀਂ ਇਸ ਖਾਣੇ ਦੇ ਡੇਟਾਸੈਟ ਤੋਂ ਪੁੱਛਣਾ ਚਾਹੁੰਦੇ ਹਾਂ, ਉਹ ਅਸਲ ਵਿੱਚ ਇੱਕ **ਮਲਟੀਕਲਾਸ ਸਵਾਲ** ਹੈ, ਕਿਉਂਕਿ ਸਾਡੇ ਕੋਲ ਕੰਮ ਕਰਨ ਲਈ ਕਈ ਸੰਭਾਵਿਤ ਰਾਸ਼ਟਰੀ ਖਾਣੇ ਹਨ। ਦਿੱਤੇ ਗਏ ਸਮੱਗਰੀ ਦੇ ਬੈਚ ਦੇ ਅਧਾਰ 'ਤੇ, ਇਹ ਡੇਟਾ ਕਿਹੜੇ ਕਈ ਕਲਾਸਾਂ ਵਿੱਚ ਫਿੱਟ ਹੋਵੇਗਾ? +ਅਸੀਂ ਇਸ ਪਾਕਸ਼ਾਲਾ ਡੇਟਾ ਸੈੱਟ ਤੋਂ ਪੁੱਛਣਾ ਚਾਹੁੰਦੇ ਹਾਂ ਇੱਕ **ਮਲਟੀਕਲਾਸ ਸਵਾਲ**, ਕਿਉਂਕਿ ਸਾਡੇ ਕੋਲ ਕਈ ਸੰਭਾਵਿਤ ਰਾਸ਼ਟਰੀ ਪਾਕਸ਼ਾਲਾਂ ਹਨ। ਦਿੱਤੀਆਂ ਸਮੱਗਰੀ ਦੇ ਸਮੂਹ ਨਾਲ, ਡੇਟਾ ਕਿਹੜੀ ਕਲਾਸ ਵਿੱਚ ਫਿੱਟ ਹੋਵੇਗਾ? -Scikit-learn ਵੱਖ-ਵੱਖ ਐਲਗੋਰਿਥਮ ਪੇਸ਼ ਕਰਦਾ ਹੈ ਜੋ ਤੁਸੀਂ ਡੇਟਾ ਨੂੰ ਕਲਾਸੀਫਾਈ ਕਰਨ ਲਈ ਵਰਤ ਸਕਦੇ ਹੋ, ਇਹ ਇਸ ਗੱਲ 'ਤੇ ਨਿਰਭਰ ਕਰਦਾ ਹੈ ਕਿ ਤੁਸੀਂ ਕਿਹੜੀ ਸਮੱਸਿਆ ਹੱਲ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ। ਅਗਲੇ ਦੋ ਪਾਠਾਂ ਵਿੱਚ, ਤੁਸੀਂ ਇਨ੍ਹਾਂ ਐਲਗੋਰਿਥਮਾਂ ਬਾਰੇ ਸਿੱਖੋਗੇ। +Scikit-learn ਵੱਖ-ਵੱਖ ਐਲਗੋਰਿਦਮ ਮੁਹੱਈਆ ਕਰਵਾਉਂਦਾ ਹੈ ਜੋ ਤੁਸੀਂ ਹੱਲ ਕਰਨ ਵਾਲੀ ਸਮੱਸਿਆ ਦੇ ਅਨੁਸਾਰ ਵਰਤ ਸਕਦੇ ਹੋ। ਅਗਲੇ ਦੋ ਪਾਠਾਂ ਵਿੱਚ, ਤੁਸੀਂ ਕਈ ਐਲਗੋਰਿਦਮਾਂ ਬਾਰੇ ਜਾਣੋਗੇ। -## ਅਭਿਆਸ - ਆਪਣੇ ਡੇਟਾ ਨੂੰ ਸਾਫ਼ ਅਤੇ ਸੰਤੁਲਿਤ ਕਰੋ +## ਅਭਿਆਸ - ਆਪਣਾ ਡੇਟਾ ਸਾਫ ਅਤੇ ਸੰਤੁਲਿਤ ਕਰੋ -ਇਸ ਪ੍ਰੋਜੈਕਟ ਨੂੰ ਸ਼ੁਰੂ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਪਹਿਲਾ ਕੰਮ, ਤੁਹਾਡੇ ਡੇਟਾ ਨੂੰ ਸਾਫ਼ ਅਤੇ **ਸੰਤੁਲਿਤ** ਕਰਨਾ ਹੈ ਤਾਂ ਜੋ ਵਧੀਆ ਨਤੀਜੇ ਪ੍ਰਾਪਤ ਕੀਤੇ ਜਾ ਸਕਣ। ਇਸ ਫੋਲਡਰ ਦੇ ਰੂਟ ਵਿੱਚ ਖਾਲੀ _notebook.ipynb_ ਫਾਈਲ ਨਾਲ ਸ਼ੁਰੂ ਕਰੋ। +ਇਸ ਪ੍ਰੋਜੈਕਟ ਸ਼ੁਰੂ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਪਹਿਲਾ ਕੰਮ ਤੁਹਾਡੇ ਡੇਟਾ ਨੂੰ ਸਾਫ ਅਤੇ **ਸੰਤੁਲਿਤ** ਕਰਨਾ ਹੈ ਤਾਂ ਜੋ ਬਿਹਤਰ ਨਤੀਜੇ ਮਿਲ ਸਕਣ। ਇਸ ਫੋਲਡਰ ਦੇ ਮੂਲ ਵਿੱਚ ਖਾਲੀ _notebook.ipynb_ ਫਾਇਲ ਨਾਲ ਸ਼ੁਰੂ ਕਰੋ। -ਸਭ ਤੋਂ ਪਹਿਲਾਂ [imblearn](https://imbalanced-learn.org/stable/) ਨੂੰ ਇੰਸਟਾਲ ਕਰੋ। ਇਹ Scikit-learn ਪੈਕੇਜ ਹੈ ਜੋ ਤੁਹਾਨੂੰ ਡੇਟਾ ਨੂੰ ਵਧੀਆ ਸੰਤੁਲਿਤ ਕਰਨ ਦੀ ਆਗਿਆ ਦੇਵੇਗਾ (ਤੁਸੀਂ ਇਸ ਕੰਮ ਬਾਰੇ ਇੱਕ ਮਿੰਟ ਵਿੱਚ ਹੋਰ ਸਿੱਖੋਗੇ)। +ਸਭ ਤੋਂ ਪਹਿਲਾਂ ਜਿਹੜੀ ਚੀਜ਼ ਇੰਸਟਾਲ ਕਰਨੀ ਹੈ ਉਹ ਹੈ [imblearn](https://imbalanced-learn.org/stable/). ਇਹ Scikit-learn ਪੈਕੇਜ ਹੈ ਜੋ ਤੁਹਾਡੇ ਡੇਟਾ ਨੂੰ ਬਿਹਤਰ ਤਰ੍ਹਾਂ ਸੰਤੁਲਿਤ ਕਰਨ ਲਈ ਵਰਤੀ ਜਾਵੇਗੀ (ਤੁਸੀਂ ਇਸ ਕੰਮ ਬਾਰੇ ਹਾਲ ਹੀ ਵਿੱਚ ਹੋਰ ਜਾਣੋਗੇ)। -1. `imblearn` ਨੂੰ ਇੰਸਟਾਲ ਕਰਨ ਲਈ, `pip install` ਚਲਾਓ, ਇਸ ਤਰ੍ਹਾਂ: +1. `imblearn` ਇੰਸਟਾਲ ਕਰਨ ਲਈ `pip install` ਚਲਾਓ, ਇਸ ਤਰ੍ਹਾਂ: ```python pip install imblearn ``` - -1. ਆਪਣੇ ਡੇਟਾ ਨੂੰ ਇੰਪੋਰਟ ਕਰਨ ਅਤੇ ਇਸ ਨੂੰ ਵਿਜ਼ੁਅਲਾਈਜ਼ ਕਰਨ ਲਈ ਜ਼ਰੂਰੀ ਪੈਕੇਜ ਇੰਪੋਰਟ ਕਰੋ, `SMOTE` ਨੂੰ `imblearn` ਤੋਂ ਵੀ ਇੰਪੋਰਟ ਕਰੋ। + +1. ਉਹ ਪੈਕੇਜ ਜਿਨ੍ਹਾਂ ਦੀ ਲੋੜ ਹੈ ਜਿਨ੍ਹਾਂ ਨਾਲ ਤੁਸੀਂ ਡੇਟਾ ਇੰਪੋਰਟ ਕਰ ਸਕਦੇ ਹੋ ਅਤੇ ਵਿਜੁਅਲਾਈਜ਼ ਕਰ ਸਕਦੇ ਹੋ, ਉਹ ਇੰਪੋਰਟ ਕਰੋ, ਨਾਲ ਹੀ `SMOTE` ਨੂੰ `imblearn` ਤੋਂ ਇੰਪੋਰਟ ਕਰੋ। ```python import pandas as pd @@ -70,24 +70,24 @@ Scikit-learn ਵੱਖ-ਵੱਖ ਐਲਗੋਰਿਥਮ ਪੇਸ਼ ਕਰਦ import numpy as np from imblearn.over_sampling import SMOTE ``` + + ਹੁਣ ਤੁਸੀਂ ਡੇਟਾ ਅਗਲੇ ਕਦਮ ਲਈ ਇੰਪੋਰਟ ਕਰਨ ਲਈ ਤਿਆਰ ਹੋ। - ਹੁਣ ਤੁਸੀਂ ਅਗਲੇ ਕਦਮ ਵਿੱਚ ਡੇਟਾ ਨੂੰ ਇੰਪੋਰਟ ਕਰਨ ਲਈ ਤਿਆਰ ਹੋ। - -1. ਅਗਲਾ ਕੰਮ ਡੇਟਾ ਨੂੰ ਇੰਪੋਰਟ ਕਰਨਾ ਹੋਵੇਗਾ: +1. ਅਗਲਾ ਕੰਮ ਡੇਟਾ ਇੰਪੋਰਟ ਕਰਨਾ ਹੈ: ```python df = pd.read_csv('../data/cuisines.csv') ``` + + `read_csv()` ਵਰਤੋਂ ਕਰ ਕੇ _cusines.csv_ ਫਾਇਲ ਦਾ ਸਮੱਗਰੀ ਪੜ੍ਹਿਆ ਜਾਂਦਾ ਹੈ ਅਤੇ ਇਹ `df` ਵਰੀਏਬਲ ਵਿੱਚ ਰੱਖ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ। - `read_csv()` ਦੀ ਵਰਤੋਂ _cusines.csv_ ਫਾਈਲ ਦੀ ਸਮੱਗਰੀ ਨੂੰ ਪੜ੍ਹਨ ਲਈ ਕੀਤੀ ਜਾਵੇਗੀ ਅਤੇ ਇਸ ਨੂੰ ਵੈਰੀਏਬਲ `df` ਵਿੱਚ ਰੱਖਿਆ ਜਾਵੇਗਾ। - -1. ਡੇਟਾ ਦੇ ਆਕਾਰ ਦੀ ਜਾਂਚ ਕਰੋ: +1. ਡੇਟਾ ਦਾ ਆਕਾਰ (shape) ਚੈਕ ਕਰੋ: ```python df.head() ``` - - ਪਹਿਲੇ ਪੰਜ ਪੰਕਤਾਂ ਇਸ ਤਰ੍ਹਾਂ ਦਿਖਾਈ ਦਿੰਦੇ ਹਨ: + + ਪਹਿਲੀਆਂ ਪੰਜ ਸਤਰਾਂ ਇਹਨਾਂ ਜਿਹੀਆਂ ਹਨ: ```output | | Unnamed: 0 | cuisine | almond | angelica | anise | anise_seed | apple | apple_brandy | apricot | armagnac | ... | whiskey | white_bread | white_wine | whole_grain_wheat_flour | wine | wood | yam | yeast | yogurt | zucchini | @@ -98,14 +98,14 @@ Scikit-learn ਵੱਖ-ਵੱਖ ਐਲਗੋਰਿਥਮ ਪੇਸ਼ ਕਰਦ | 3 | 68 | indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | | 4 | 69 | indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | ``` - -1. ਇਸ ਡੇਟਾ ਬਾਰੇ ਜਾਣਕਾਰੀ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ `info()` ਕਾਲ ਕਰੋ: + +1. ਇਸ ਡੇਟਾ ਬਾਰੇ ਜਾਣਕਾਰੀ ਲਈ `info()` ਕਾਲ ਕਰੋ: ```python df.info() ``` - - ਤੁਹਾਡਾ ਆਉਟਪੁੱਟ ਇਸ ਤਰ੍ਹਾਂ ਦਿਖਾਈ ਦਿੰਦਾ ਹੈ: + + ਤੁਹਾਡੇ ਨਤੀਜੇ ਦੇਖਣ ਵਿਚ ਇਸ ਤਰ੍ਹਾਂ ਹੋਣਗੇ: ```output @@ -114,22 +114,22 @@ Scikit-learn ਵੱਖ-ਵੱਖ ਐਲਗੋਰਿਥਮ ਪੇਸ਼ ਕਰਦ dtypes: int64(384), object(1) memory usage: 7.2+ MB ``` + +## ਅਭਿਆਸ - ਪਾਕਸ਼ਾਲ ਬਾਰੇ ਸਿੱਖਣਾ -## ਅਭਿਆਸ - ਖਾਣਿਆਂ ਬਾਰੇ ਸਿੱਖਣਾ +ਹੁਣ ਕੰਮ ਹੋਰ ਰੁਚਿਕਰ ਹੋ ਜਾਂਦਾ ਹੈ। ਪਾਕਸ਼ਾਲ ਅਨੁਸਾਰ ਡੇਟਾ ਦੇ ਵੰਡ ਬਾਰੇ ਪਤਾ ਲਗਾਈਏ -ਹੁਣ ਕੰਮ ਹੋਰ ਦਿਲਚਸਪ ਹੋਣਾ ਸ਼ੁਰੂ ਹੁੰਦਾ ਹੈ। ਆਓ ਖਾਣੇ ਦੇ ਅਨੁਸਾਰ ਡੇਟਾ ਦੇ ਵੰਡਨ ਦੀ ਖੋਜ ਕਰੀਏ। - -1. `barh()` ਕਾਲ ਕਰਕੇ ਡੇਟਾ ਨੂੰ ਬਾਰਾਂ ਵਜੋਂ ਪਲਾਟ ਕਰੋ: +1. `barh()` ਕਾਲ ਕਰਕੇ ਡੇਟਾ ਨੂੰ ਬਾਰਾਂ ਵਜੋਂ ਪਲਾਟ ਕਰੋ: ```python df.cuisine.value_counts().plot.barh() ``` + + ![ਪਾਕਸ਼ਾਲ ਡੇਟਾ ਵੰਡ](../../../../translated_images/pa/cuisine-dist.d0cc2d551abe5c25.webp) - ![ਖਾਣੇ ਦੇ ਡੇਟਾ ਦਾ ਵੰਡਨ](../../../../4-Classification/1-Introduction/images/cuisine-dist.png) - - ਖਾਣਿਆਂ ਦੀ ਗਿਣਤੀ ਸੀਮਿਤ ਹੈ, ਪਰ ਡੇਟਾ ਦਾ ਵੰਡਨ ਅਸਮਾਨ ਹੈ। ਤੁਸੀਂ ਇਸ ਨੂੰ ਠੀਕ ਕਰ ਸਕਦੇ ਹੋ! ਇਸ ਨੂੰ ਠੀਕ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ, ਹੋਰ ਖੋਜ ਕਰੋ। + ਪਾਕਸ਼ਾਲਾਂ ਦੀ ਮਾਤਰਾ ਸੀਮਤ ਹੈ, ਪਰ ਡੇਟਾ ਦੀ ਵੰਡ ਬਰਾਬਰ ਨਹੀਂ ਹੈ। ਤੁਸੀਂ ਇਸਨੂੰ ਠੀਕ ਕਰ ਸਕਦੇ ਹੋ! ਇੱਥੇ ਤੱਕ ਆਉਣ ਤੋਂ ਪਹਿਲਾਂ, ਹੋਰ ਖੋਜ ਕਰੋ। -1. ਪਤਾ ਕਰੋ ਕਿ ਹਰ ਖਾਣੇ ਲਈ ਕਿੰਨਾ ਡੇਟਾ ਉਪਲਬਧ ਹੈ ਅਤੇ ਇਸ ਨੂੰ ਪ੍ਰਿੰਟ ਕਰੋ: +1. ਪ੍ਰਤੀ ਪਾਕਸ਼ਾਲ ਕੁਝ ਕਿੰਨਾ ਡੇਟਾ ਉਪਲਬਧ ਹੈ ਪਤਾ ਕਰੋ ਅਤੇ ਪ੍ਰਿੰਟ ਕਰੋ: ```python thai_df = df[(df.cuisine == "thai")] @@ -144,8 +144,8 @@ Scikit-learn ਵੱਖ-ਵੱਖ ਐਲਗੋਰਿਥਮ ਪੇਸ਼ ਕਰਦ print(f'indian df: {indian_df.shape}') print(f'korean df: {korean_df.shape}') ``` - - ਆਉਟਪੁੱਟ ਇਸ ਤਰ੍ਹਾਂ ਦਿਖਾਈ ਦਿੰਦਾ ਹੈ: + + ਨਤੀਜਾ ਇਸ ਤਰ੍ਹਾਂ ਹੁੰਦਾ ਹੈ: ```output thai df: (289, 385) @@ -154,12 +154,12 @@ Scikit-learn ਵੱਖ-ਵੱਖ ਐਲਗੋਰਿਥਮ ਪੇਸ਼ ਕਰਦ indian df: (598, 385) korean df: (799, 385) ``` + +## ਸਮੱਗਰੀਆਂ ਦੀ ਖੋਜ -## ਸਮੱਗਰੀ ਦੀ ਖੋਜ - -ਹੁਣ ਤੁਸੀਂ ਡੇਟਾ ਵਿੱਚ ਹੋਰ ਗਹਿਰਾਈ ਵਿੱਚ ਜਾ ਸਕਦੇ ਹੋ ਅਤੇ ਸਿੱਖ ਸਕਦੇ ਹੋ ਕਿ ਹਰ ਖਾਣੇ ਲਈ ਆਮ ਸਮੱਗਰੀ ਕੀ ਹਨ। ਤੁਸੀਂ ਮੁੜ-ਮੁੜ ਆਉਣ ਵਾਲੇ ਡੇਟਾ ਨੂੰ ਸਾਫ਼ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ ਜੋ ਖਾਣਿਆਂ ਦੇ ਵਿਚਕਾਰ ਗੁੰਝਲ ਪੈਦਾ ਕਰਦਾ ਹੈ, ਤਾਂ ਆਓ ਇਸ ਸਮੱਸਿਆ ਬਾਰੇ ਸਿੱਖੀਏ। +ਹੁਣ ਤੁਸੀਂ ਡੇਟਾ ਵਿੱਚ ਡੂੰਘਾਈ ਵਿੱਚ ਜਾ ਕੇ ਪੱਕਾ ਕਰ ਸਕਦੇ ਹੋ ਕਿ ਪ੍ਰਤਿ ਪਾਕਸ਼ਾਲ ਕੀ ਆਮ ਸਮੱਗਰੀ ਹਨ। ਤੁਹਾਨੂੰ ਅਜਿਹੇ ਡੇਟਾ ਨੂੰ ਸਾਫ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ ਜੋ ਵੱਖਰੇ ਪਾਕਸ਼ਾਲਾਂ ਵਿਚ ਭ੍ਰਮ ਪੈਦਾ ਕਰਦਾ ਹੈ, ਤਾਂ ਆਓ ਇਸ ਸਮੱਸਿਆ ਬਾਰੇ ਸਿੱਖੀਏ। -1. Python ਵਿੱਚ ਇੱਕ ਫੰਕਸ਼ਨ `create_ingredient()` ਬਣਾਓ ਤਾਂ ਜੋ ਇੱਕ ਸਮੱਗਰੀ ਡੇਟਾਫਰੇਮ ਬਣਾਇਆ ਜਾ ਸਕੇ। ਇਹ ਫੰਕਸ਼ਨ ਇੱਕ ਅਣਸਹਾਇਕ ਕਾਲਮ ਨੂੰ ਹਟਾ ਕੇ ਸ਼ੁਰੂ ਕਰੇਗਾ ਅਤੇ ਗਿਣਤੀ ਦੇ ਅਨੁਸਾਰ ਸਮੱਗਰੀ ਨੂੰ ਸਾਰਟ ਕਰੇਗਾ: +1. ਪਾਇਥਨ ਵਿੱਚ `create_ingredient()` ਨਾਮ ਦਾ ਫੰਕਸ਼ਨ ਬਣਾਓ ਜੋ ਸਮੱਗਰੀ ਦਾ ਡੇਟਾਫਰੇਮ ਬਣਾਉਂਦਾ ਹੈ। ਇਹ ਫੰਕਸ਼ਨ ਇੱਕ ਅਣਜਰੂਰੀ ਕਾਲਮ ਨੂੰ ਹਟਾ ਕੇ ਸਮੱਗਰੀਆਂ ਨੂੰ ਉਨ੍ਹਾਂ ਦੀ ਗਿਣਤੀ ਦੇ ਅਨੁਸਾਰ ਛਾਂਟੇਗਾ: ```python def create_ingredient_df(df): @@ -169,85 +169,85 @@ Scikit-learn ਵੱਖ-ਵੱਖ ਐਲਗੋਰਿਥਮ ਪੇਸ਼ ਕਰਦ inplace=False) return ingredient_df ``` + + ਹੁਣ ਤੁਸੀਂ ਇਸ ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਪਾਕਸ਼ਾਲ ਅਨੁਸਾਰ ਸਭ ਤੋਂ ਪ੍ਰਸਿੱਧ ਦੱਸ ਸਮੱਗਰੀਆਂ ਦਾ ਖ਼ਾਕਾ ਪੈਦਾ ਕਰ ਸਕਦੇ ਹੋ। - ਹੁਣ ਤੁਸੀਂ ਇਸ ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਹਰ ਖਾਣੇ ਲਈ ਸਭ ਤੋਂ ਪ੍ਰਸਿੱਧ ਦਸ ਸਮੱਗਰੀਆਂ ਦਾ ਅੰਦਾਜ਼ਾ ਲਗਾ ਸਕਦੇ ਹੋ। - -1. `create_ingredient()` ਕਾਲ ਕਰੋ ਅਤੇ `barh()` ਕਾਲ ਕਰਕੇ ਇਸ ਨੂੰ ਪਲਾਟ ਕਰੋ: +1. `create_ingredient()` ਕਾਲ ਕਰੋ ਅਤੇ `barh()` ਕਾਲ ਕਰਕੇ ਪਲਾਟ ਕਰੋ: ```python thai_ingredient_df = create_ingredient_df(thai_df) thai_ingredient_df.head(10).plot.barh() ``` + + ![ਥਾਈ](../../../../translated_images/pa/thai.0269dbab2e78bd38.webp) - ![ਥਾਈ](../../../../4-Classification/1-Introduction/images/thai.png) - -1. ਜਪਾਨੀ ਡੇਟਾ ਲਈ ਵੀ ਇਹੀ ਕਰੋ: +1. ਜਪਾਨੀ ਡੇਟਾ ਲਈ ਵੀ ਇਹ ਕਰੋਂ: ```python japanese_ingredient_df = create_ingredient_df(japanese_df) japanese_ingredient_df.head(10).plot.barh() ``` + + ![ਜਪਾਨੀ](../../../../translated_images/pa/japanese.30260486f2a05c46.webp) - ![ਜਪਾਨੀ](../../../../4-Classification/1-Introduction/images/japanese.png) - -1. ਹੁਣ ਚੀਨੀ ਸਮੱਗਰੀ ਲਈ: +1. ਹੁਣ ਚੀਨੀ ਸਮੱਗਰੀ: ```python chinese_ingredient_df = create_ingredient_df(chinese_df) chinese_ingredient_df.head(10).plot.barh() ``` + + ![ਚੀਨੀ](../../../../translated_images/pa/chinese.e62cafa5309f111a.webp) - ![ਚੀਨੀ](../../../../4-Classification/1-Introduction/images/chinese.png) - -1. ਭਾਰਤੀ ਸਮੱਗਰੀ ਪਲਾਟ ਕਰੋ: +1. ਭਾਰਤੀ ਸਮੱਗਰੀ ਪਲਾਟ ਕਰੋ: ```python indian_ingredient_df = create_ingredient_df(indian_df) indian_ingredient_df.head(10).plot.barh() ``` + + ![ਭਾਰਤੀ](../../../../translated_images/pa/indian.2c4292002af1a1f9.webp) - ![ਭਾਰਤੀ](../../../../4-Classification/1-Introduction/images/indian.png) - -1. ਆਖਰੀ, ਕੋਰੀਆਈ ਸਮੱਗਰੀ ਪਲਾਟ ਕਰੋ: +1. ਆਖਿਰਕਾਰ, ਕੋਰੀਆਈ ਸਮੱਗਰੀਆਂ ਪਲਾਟ ਕਰੋ: ```python korean_ingredient_df = create_ingredient_df(korean_df) korean_ingredient_df.head(10).plot.barh() ``` + + ![ਕੋਰੀਆਈ](../../../../translated_images/pa/korean.4a4f0274f3d9805a.webp) - ![ਕੋਰੀਆਈ](../../../../4-Classification/1-Introduction/images/korean.png) +1. ਹੁਣ, `drop()` ਕਾਲ ਕਰਕੇ ਸਭ ਤੋਂ ਆਮ ਸਮੱਗਰੀ ਜੋ ਵੱਖਰੇ ਪਾਕਸ਼ਾਲਾਂ ਵਿੱਚ ਭ੍ਰਮ ਪੈਦਾ ਕਰਦੀ ਹੈ, ਹਟਾਓ: -1. ਹੁਣ, ਵੱਖ-ਵੱਖ ਖਾਣਿਆਂ ਦੇ ਵਿਚਕਾਰ ਗੁੰਝਲ ਪੈਦਾ ਕਰਨ ਵਾਲੀਆਂ ਸਭ ਤੋਂ ਆਮ ਸਮੱਗਰੀਆਂ ਨੂੰ ਹਟਾਓ, `drop()` ਕਾਲ ਕਰਕੇ: - - ਹਰ ਕੋਈ ਚਾਵਲ, ਲਸਣ ਅਤੇ ਅਦਰਕ ਨੂੰ ਪਸੰਦ ਕਰਦਾ ਹੈ! + ਸਾਰੇ ਨੂੰ ਚਾਵਲ, ਲਸਣ ਅਤੇ ਅਦਰਕ ਪਸੰਦ ਹਨ! ```python feature_df= df.drop(['cuisine','Unnamed: 0','rice','garlic','ginger'], axis=1) labels_df = df.cuisine #.unique() feature_df.head() ``` + +## ਡੇਟਾਸੈੱਟ ਸੰਤੁਲਿਤ ਕਰੋ -## ਡੇਟਾਸੈਟ ਨੂੰ ਸੰਤੁਲਿਤ ਕਰੋ - -ਹੁਣ ਜਦੋਂ ਤੁਸੀਂ ਡੇਟਾ ਨੂੰ ਸਾਫ਼ ਕਰ ਲਿਆ ਹੈ, [SMOTE](https://imbalanced-learn.org/dev/references/generated/imblearn.over_sampling.SMOTE.html) - "Synthetic Minority Over-sampling Technique" - ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇਸ ਨੂੰ ਸੰਤੁਲਿਤ ਕਰੋ। +ਹੁਣ ਜਦੋਂ ਤੁਹਾਡਾ ਡੇਟਾ ਸਾਫ ਹੋ ਗਿਆ ਹੈ, [SMOTE](https://imbalanced-learn.org/dev/references/generated/imblearn.over_sampling.SMOTE.html) - "ਸਿੰਥੇਟਿਕ ਮਾਈਨਾਰਿਟੀ ਓਵਰ-ਸੈਂਪਲਿੰਗ ਤਕਨੀਕ" - ਵਰਤ ਕੇ ਇਸਨੂੰ ਸੰਤੁਲਿਤ ਕਰੋ। -1. `fit_resample()` ਕਾਲ ਕਰੋ, ਇਹ ਰਣਨੀਤੀ ਇੰਟਰਪੋਲੇਸ਼ਨ ਦੁਆਰਾ ਨਵੇਂ ਨਮੂਨੇ ਬਣਾਉਂਦੀ ਹੈ। +1. `fit_resample()` ਕਾਲ ਕਰੋ, ਇਹ ਰਣਨੀਤੀ ਅੰਤਰਪ੍ਰਤੀਕਰਨ ਰਾਹੀਂ ਨਵੇਂ ਨਮੂਨੇ ਬਣਾਉਂਦੀ ਹੈ। ```python oversample = SMOTE() transformed_feature_df, transformed_label_df = oversample.fit_resample(feature_df, labels_df) ``` + + ਡੇਟਾ ਸੰਤੁਲਿਤ ਕਰਨ ਨਾਲ, ਤੁਸੀਂ ਇਸਨੂੰ ਵਰਗੀਕਰਨ ਕਰਦੇ ਸਮੇਂ ਬਿਹਤਰ ਨਤੀਜੇ ਪ੍ਰਾਪਤ ਕਰੋਗੇ। ਸੋਚੋ ਇੱਕ ਬਾਈਨਰੀ ਵਰਗੀਕਰਨ ਬਾਰੇ। ਜੇ ਤੁਹਾਡੇ ਡੇਟਾ ਦੀ ਬਹੁਤਰ ਕਲਾਸ ਇੱਕ ਹੋਵੇ, ਤਾਂ ML ਮਾਡਲ ਉਸ ਕਲਾਸ ਦੀ ਭਵਿੱਖਬਾਣੀ ਜ਼ਿਆਦਾ ਕਰੇਗਾ, ਸਿਰਫ ਇਸ ਕਰਕੇ ਕਿਉਂਕਿ ਉਸ ਕਲਾਸ ਦਾ ਡੇਟਾ ਜ਼ਿਆਦਾ ਹੈ। ਡੇਟਾ ਨੂੰ ਸੰਤੁਲਿਤ ਕਰਨਾ ਕਿਸੇ ਵੀ ਪੱਖਪਾਤੀ ਡੇਟਾ ਨੂੰ ਘਟਾਉਂਦਾ ਹੈ ਅਤੇ ਇਸ ਬੇਅਮਾਨੀ ਨੂੰ ਦੂਰ ਕਰਦਾ ਹੈ। - ਡੇਟਾ ਨੂੰ ਸੰਤੁਲਿਤ ਕਰਕੇ, ਤੁਸੀਂ ਇਸ ਨੂੰ ਕਲਾਸੀਫਾਈ ਕਰਨ ਸਮੇਂ ਵਧੀਆ ਨਤੀਜੇ ਪ੍ਰਾਪਤ ਕਰੋਗੇ। ਇੱਕ ਬਾਈਨਰੀ ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਬਾਰੇ ਸੋਚੋ। ਜੇ ਤੁਹਾਡੇ ਡੇਟਾ ਦਾ ਜ਼ਿਆਦਾਤਰ ਹਿੱਸਾ ਇੱਕ ਕਲਾਸ ਹੈ, ਤਾਂ ਇੱਕ ML ਮਾਡਲ ਉਸ ਕਲਾਸ ਦੀ ਪੇਸ਼ਗੋਈ ਵਧੇਰੇ ਵਾਰ ਕਰੇਗਾ, ਸਿਰਫ਼ ਇਸ ਲਈ ਕਿ ਇਸ ਲਈ ਹੋਰ ਡੇਟਾ ਉਪਲਬਧ ਹੈ। ਡੇਟਾ ਨੂੰ ਸੰਤੁਲਿਤ ਕਰਨਾ ਕਿਸੇ ਵੀ ਤਰੱਕੀਸ਼ੀਲ ਡੇਟਾ ਨੂੰ ਲੈਂਦਾ ਹੈ ਅਤੇ ਇਸ ਅਸਮਾਨਤਾ ਨੂੰ ਹਟਾਉਣ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ। - -1. ਹੁਣ ਤੁਸੀਂ ਸਮੱਗਰੀ ਪ੍ਰਤੀ ਲੇਬਲਾਂ ਦੀ ਗਿਣਤੀ ਦੀ ਜਾਂਚ ਕਰ ਸਕਦੇ ਹੋ: +1. ਹੁਣ ਸਮੱਗਰੀ ਪ੍ਰਤੀ ਲੇਬਲ ਦੀ ਗਿਣਤੀ ਦੀ ਜਾਂਚ ਕਰੋ: ```python print(f'new label count: {transformed_label_df.value_counts()}') print(f'old label count: {df.cuisine.value_counts()}') ``` - - ਤੁਹਾਡਾ ਆਉਟਪੁੱਟ ਇਸ ਤਰ੍ਹਾਂ ਦਿਖਾਈ ਦਿੰਦਾ ਹੈ: + + ਤੁਹਾਡਾ ਨਤੀਜਾ ਇਸ ਤਰ੍ਹਾਂ ਹੋਵੇਗਾ: ```output new label count: korean 799 @@ -263,18 +263,44 @@ Scikit-learn ਵੱਖ-ਵੱਖ ਐਲਗੋਰਿਥਮ ਪੇਸ਼ ਕਰਦ thai 289 Name: cuisine, dtype: int64 ``` + + ਡੇਟਾ ਸੁਥਰਾ ਅਤੇ ਸੰਤੁਲਿਤ ਅਤੇ ਬਹੁਤ ਸਵਾਦਿਸ਼ਟ ਹੈ! - ਡੇਟਾ ਸੁੰਦਰ, ਸਾਫ਼, ਸੰਤੁਲਿਤ ਅਤੇ ਬਹੁਤ ਹੀ ਸੁਆਦਿਸ਼ਟ ਹੈ! - -1. ਆਖਰੀ ਕਦਮ ਇਹ ਹੈ ਕਿ ਤੁਹਾਡੇ ਸੰਤੁਲਿਤ ਡੇਟਾ, ਲੇਬਲਾਂ ਅਤੇ ਫੀਚਰਾਂ ਸਮੇਤ, ਨੂੰ ਇੱਕ ਨਵੇਂ ਡੇਟਾਫਰੇਮ ਵਿੱਚ ਸੇਵ ਕਰੋ ਜੋ ਇੱਕ ਫਾਈਲ ਵਿੱਚ ਐਕਸਪੋਰਟ ਕੀਤਾ ਜਾ ਸਕੇ: +1. ਆਖਰੀ ਕਦਮ ਹੈ ਆਪਣਾ ਸੰਤੁਲਿਤ ਡੇਟਾ, ਜਿਸ ਵਿੱਚ ਲੇਬਲ ਅਤੇ ਫੀਚਰ ਸ਼ਾਮਿਲ ਹਨ, ਇੱਕ ਨਵੇਂ ਡੇਟਾਫਰੇਮ ਵਿੱਚ ਸੇਵ ਕਰਨਾ ਜੋ ਫਾਇਲ ਵਜੋਂ ਨਿਰਯਾਤ ਕੀਤਾ ਜਾ ਸਕੇ। ```python transformed_df = pd.concat([transformed_label_df,transformed_feature_df],axis=1, join='outer') ``` + +1. ਤੁਸੀਂ `transformed_df.head()` ਅਤੇ `transformed_df.info()` ਵਰਤ ਕੇ ਡੇਟਾ ਨੂੰ ਇਕ ਵਾਰ ਹੋਰ ਦੇਖ ਸਕਦੇ ਹੋ। ਇਸ ਡੇਟਾ ਦੀ ਨਕਲ ਭਵਿੱਖ ਦੇ ਪਾਠਾਂ ਲਈ ਸੇਵ ਕਰੋ: + + ```python + transformed_df.head() + transformed_df.info() + transformed_df.to_csv("../data/cleaned_cuisines.csv") + ``` + + ਇਹ ਤਾਜਾ CSV ਹੁਣ ਰੂਟ ਡੇਟਾ ਫੋਲਡਰ ਵਿੱਚ ਮਿਲੇਗੀ। + +--- + +## 🚀ਚੁਣੌਤੀ + +ਇਹ ਕੋਰਸ ਕਈ ਰੁਚਿਕਰ ਡੇਟਾਸੈੱਟ ਰੱਖਦਾ ਹੈ। 'data' ਫੋਲਡਰ ਵਿੱਚ ਦੂੱਧਾ ਕਰੋ ਅਤੇ ਦੇਖੋ ਕਿ ਕੋਈ ਐਸਾ ਡੇਟਾਸੈੱਟ ਹੈ ਜੋ ਬਾਈਨਰੀ ਜਾਂ ਮਲਟੀ-ਕਲਾਸ ਵਰਗੀਕਰਨ ਲਈ ਉਚਿਤ ਹੋਵੇ? ਤੁਸੀਂ ਉਸ ਡੇਟਾਸੈੱਟ ਤੋਂ ਕੀ ਸਵਾਲ ਪੁੱਛੋਗੇ? + +## [ਪੋਸਟ-ਦਰਸਨ ਪ੍ਰਸ਼ਨਾਵਲੀ](https://ff-quizzes.netlify.app/en/ml/) + +## ਸਮੀਖਿਆ ਅਤੇ ਸੁਤੰਤਰ ਅਧਿਐਨ + +SMOTE ਦੀ API ਨੂੰ ਖੋਜੋ। ਇਹ ਕਿਸ ਕਿਸ ਤਰ੍ਹਾਂ ਦੇ ਵਰਤੋਂ ਕੇਸਾਂ ਲਈ ਸਭ ਤੋਂ ਵਧੀਆ ਹੈ? ਇਹ ਕਿਹੜੀਆਂ ਸਮੱਸਿਆਵਾਂ ਹੱਲ ਕਰਦਾ ਹੈ? + +## ਅਸਾਈਨਮੈਂਟ -1. ਤੁਸੀਂ `transformed_df.head()` ਅਤੇ `transformed_df.info()` ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਡੇਟਾ ਨੂੰ ਇੱਕ ਵਾਰ ਹੋਰ ਦੇਖ ਸਕਦੇ ਹੋ। ਭਵਿੱਖ ਦੇ ਪਾਠਾਂ ਵਿੱਚ ਵਰਤੋਂ ਲਈ ਇਸ ਡੇ +[ਵਰਗੀਕਰਨ ਦੇ ਤਰੀਕੇ ਖੋਜੋ](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/4-Classification/4-Applied/README.md b/translations/pa/4-Classification/4-Applied/README.md index 11f03a92e..50e9b8f75 100644 --- a/translations/pa/4-Classification/4-Applied/README.md +++ b/translations/pa/4-Classification/4-Applied/README.md @@ -1,57 +1,57 @@ -# ਖਾਣੇ ਦੀ ਸਿਫਾਰਸ਼ ਕਰਨ ਵਾਲਾ ਵੈੱਬ ਐਪ ਬਣਾਓ +# ਇੱਕ ਖਾਣ-ਪੀਣ ਸੁਝਾਅ ਵੈੱਬ ਐਪ ਬਣਾਓ -ਇਸ ਪਾਠ ਵਿੱਚ, ਤੁਸੀਂ ਪਿਛਲੇ ਪਾਠਾਂ ਵਿੱਚ ਸਿੱਖੀਆਂ ਕੁਝ ਤਕਨੀਕਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇੱਕ ਵਰਗੀਕਰਨ ਮਾਡਲ ਬਣਾਉਗੇ ਅਤੇ ਇਸ ਸਿਰੀਜ਼ ਵਿੱਚ ਵਰਤੇ ਗਏ ਸੁਆਦਿਸ਼ਟ ਖਾਣੇ ਦੇ ਡਾਟਾਸੈਟ ਨਾਲ ਕੰਮ ਕਰੋਗੇ। ਇਸ ਤੋਂ ਇਲਾਵਾ, ਤੁਸੀਂ ਇੱਕ ਛੋਟਾ ਵੈੱਬ ਐਪ ਬਣਾਉਗੇ ਜੋ ਸੇਵ ਕੀਤੇ ਮਾਡਲ ਨੂੰ ਵਰਤਦਾ ਹੈ, Onnx ਦੇ ਵੈੱਬ ਰਨਟਾਈਮ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ। +ਇਸ ਪਾਠ ਵਿੱਚ, ਤੁਸੀਂ ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਮਾਡਲ ਬਣਾਵੋਗੇ ਜੋ ਕਿ ਤੁਸੀਂ ਪਿਛਲੇ ਪਾਠਾਂ ਵਿੱਚ ਸਿੱਖੀਆਂ ਕੁਝ ਤਕਨੀਕਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਤੇ ਇਸ ਸੀਰੀਜ਼ ਵਿੱਚ ਪੂਰੇ ਸਮੇਂ ਵਰਤੇ ਜਾਣ ਵਾਲੇ ਸੁਆਦਿਸ਼ਟ ਖਾਣ-ਪੀਣ ਡੇਟਾਸੈੱਟ ਨਾਲ ਬਣਾਇਆ ਜਾਵੇਗਾ। ਇਨ੍ਹਾਂ ਤੋਂ ਇਲਾਵਾ, ਤੁਸੀਂ ਇੱਕ ਛੋਟਾ ਵੈੱਬ ਐਪ ਵੀ ਬਣਾਵੋਗੇ ਜੋ ਕਿ ਸਟੋਰ ਕੀਤਾ ਹੋਇਆ ਮਾਡਲ ਵਰਤੇਗਾ, ਜੋ ਕਿ Onnx ਦੀ ਵੈੱਬ ਰਨਟਾਈਮ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ। -ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਦੇ ਸਭ ਤੋਂ ਉਪਯੋਗ ਪ੍ਰਯੋਗਾਂ ਵਿੱਚੋਂ ਇੱਕ ਸਿਫਾਰਸ਼ੀ ਸਿਸਟਮ ਬਣਾਉਣਾ ਹੈ, ਅਤੇ ਤੁਸੀਂ ਅੱਜ ਇਸ ਦਿਸ਼ਾ ਵਿੱਚ ਪਹਿਲਾ ਕਦਮ ਲੈ ਸਕਦੇ ਹੋ! +ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਦੇ ਸਭ ਤੋਂ ਲਾਭਦਾਇਕ ਵਪਾਰਿਕ ਉਪਯੋਗਾਂ ਵਿੱਚੋਂ ਇੱਕ ਹੈ ਸਿਫਾਰਸ਼ੀ ਪ੍ਰਣਾਲੀਆਂ ਬਣਾਉਣਾ, ਅਤੇ ਤੁਸੀਂ ਅੱਜ ਇਸ ਦਿਸ਼ਾ ਵਿੱਚ ਪਹਿਲਾ ਕਦਮ ਲੈ ਸਕਦੇ ਹੋ! [![ਇਸ ਵੈੱਬ ਐਪ ਨੂੰ ਪੇਸ਼ ਕਰਦੇ ਹੋਏ](https://img.youtube.com/vi/17wdM9AHMfg/0.jpg)](https://youtu.be/17wdM9AHMfg "Applied ML") -> 🎥 ਉੱਪਰ ਦਿੱਤੀ ਤਸਵੀਰ 'ਤੇ ਕਲਿਕ ਕਰੋ ਇੱਕ ਵੀਡੀਓ ਲਈ: ਜੈਨ ਲੂਪਰ ਵਰਗੀਕ੍ਰਿਤ ਖਾਣੇ ਦੇ ਡਾਟਾ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਇੱਕ ਵੈੱਬ ਐਪ ਬਣਾਉਂਦੇ ਹਨ +> 🎥 ਉੱਪਰ ਦਿੱਤੀ ਤਸਵੀਰ 'ਤੇ ਕਲਿੱਕ ਕਰੋ ਵੀਡੀਓ ਲਈ: Jen Looper ਇੱਕ ਵੈੱਬ ਐਪ ਬਣਾਉਂਦਾ ਹੈ ਕਲਾਸੀਫਾਇਡ ਖਾਣ-ਪੀਣ ਡੇਟਾ ਦੀ ਵਰਤੋਂ ਕਰਕੇ -## [ਪਾਠ-ਪਹਿਲਾਂ ਕਵਿਜ਼](https://ff-quizzes.netlify.app/en/ml/) +## [ਪ੍ਰੀ-ਲੈਕਚਰ ਕਵਿਜ਼](https://ff-quizzes.netlify.app/en/ml/) ਇਸ ਪਾਠ ਵਿੱਚ ਤੁਸੀਂ ਸਿੱਖੋਗੇ: -- ਮਾਡਲ ਬਣਾਉਣਾ ਅਤੇ ਇਸਨੂੰ Onnx ਮਾਡਲ ਵਜੋਂ ਸੇਵ ਕਰਨਾ -- Netron ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਮਾਡਲ ਦੀ ਜਾਂਚ ਕਰਨਾ -- ਆਪਣੇ ਮਾਡਲ ਨੂੰ ਵੈੱਬ ਐਪ ਵਿੱਚ ਅਨੁਮਾਨ ਲਈ ਵਰਤਣਾ +- ਕਿਸ ਤਰ੍ਹਾਂ ਇੱਕ ਮਾਡਲ ਬਣਾਉਣਾ ਅਤੇ ਉਸਨੂੰ Onnx ਮਾਡਲ ਵਜੋਂ ਸੇਵ ਕਰਨਾ +- ਮਾਡਲ ਨੂੰ ਦੇਖਣ ਲਈ Netron ਦੀ ਵਰਤੋਂ ਕਿਵੇਂ ਕਰਨੀ ਹੈ +- ਆਪਣੇ ਮਾਡਲ ਨੂੰ ਇੱਕ ਵੈੱਬ ਐਪ ਵਿੱਚ ਇੰਫਰੈਂਸ ਲਈ ਕਿਵੇਂ ਵਰਤਣਾ ਹੈ -## ਆਪਣਾ ਮਾਡਲ ਬਣਾਓ +## ਆਪਣੇ ਮਾਡਲ ਨੂੰ ਬਣਾਓ -Applied ML ਸਿਸਟਮ ਬਣਾਉਣਾ ਤੁਹਾਡੇ ਕਾਰੋਬਾਰੀ ਸਿਸਟਮਾਂ ਲਈ ਇਹ ਤਕਨਾਲੋਜੀਆਂ ਦੀ ਵਰਤੋਂ ਕਰਨ ਦਾ ਇੱਕ ਮਹੱਤਵਪੂਰਨ ਹਿੱਸਾ ਹੈ। ਤੁਸੀਂ ਆਪਣੇ ਵੈੱਬ ਐਪਲੀਕੇਸ਼ਨਾਂ ਵਿੱਚ ਮਾਡਲ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹੋ (ਅਤੇ ਜੇ ਲੋੜ ਹੋਵੇ ਤਾਂ ਇਸਨੂੰ ਆਫਲਾਈਨ ਸੰਦਰਭ ਵਿੱਚ ਵੀ ਵਰਤ ਸਕਦੇ ਹੋ) Onnx ਦੀ ਵਰਤੋਂ ਕਰਕੇ। +ਲਾਗੂ ਕੀਤੇ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਪ੍ਰਣਾਲੀਆਂ ਬਣਾਉਣਾ ਤੁਹਾਡੇ ਵਪਾਰਕ ਪ੍ਰਣਾਲੀਆਂ ਲਈ ਇਹ ਤਕਨੀਕਾਂ ਵਰਤਣ ਦਾ ਇੱਕ ਮਹੱਤਵਪੂਰਣ ਭਾਗ ਹੈ। ਤੁਸੀਂ ਆਪਣੇ ਵੈੱਬ ਐਪਲੀਕੇਸ਼ਨਾਂ ਵਿੱਚ ਮਾਡਲ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹੋ (ਅਤੇ ਜ਼ਰੂਰਤ ਪੈਣ ਤੇ ਆਫਲਾਈਨ ਵੀ ਇਸਨੂੰ ਵਰਤ ਸਕਦੇ ਹੋ) Onnx ਦੀ ਵਰਤੋਂ ਕਰਕੇ। -ਇੱਕ [ਪਿਛਲੇ ਪਾਠ](../../3-Web-App/1-Web-App/README.md) ਵਿੱਚ, ਤੁਸੀਂ UFO sightings ਬਾਰੇ ਇੱਕ ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲ ਬਣਾਇਆ ਸੀ, ਇਸਨੂੰ "pickled" ਕੀਤਾ ਸੀ, ਅਤੇ ਇਸਨੂੰ Flask ਐਪ ਵਿੱਚ ਵਰਤਿਆ ਸੀ। ਜਦੋਂ ਕਿ ਇਹ ਆਰਕੀਟੈਕਚਰ ਜਾਣਨ ਲਈ ਬਹੁਤ ਹੀ ਉਪਯੋਗ ਹੈ, ਇਹ ਇੱਕ ਫੁੱਲ-ਸਟੈਕ ਪਾਈਥਨ ਐਪ ਹੈ, ਅਤੇ ਤੁਹਾਡੇ ਜ਼ਰੂਰਤਾਂ ਵਿੱਚ ਜਾਵਾਸਕ੍ਰਿਪਟ ਐਪਲੀਕੇਸ਼ਨ ਦੀ ਵਰਤੋਂ ਸ਼ਾਮਲ ਹੋ ਸਕਦੀ ਹੈ। +ਇੱਕ [ਪਿਛਲੇ ਪਾਠ](../../3-Web-App/1-Web-App/README.md) ਵਿੱਚ, ਤੁਸੀਂ UFO ਦੇ ਨਜ਼ਾਰੇ ਬਾਰੇ ਇੱਕ ਰਿਗਰੈਸ਼ਨ ਮਾਡਲ ਬਣਾਇਆ ਸੀ, ਜਿਸਨੂੰ 'ਪਿਕਲ' ਕੀਤਾ ਸੀ, ਅਤੇ ਫਲਾਸਕ ਐਪ ਵਿੱਚ ਇਸਦੀ ਵਰਤੋਂ ਕੀਤੀ ਸੀ। ਜਦਕਿ ਇਹ ਆਰਕੀਟੈਕਚਰ ਜਾਣਨਾ ਬਹੁਤ ਲਾਇਕ ਹੈ, ਪਰ ਇਹ ਇੱਕ ਫੁੱਲ-ਸਟੈਕ ਪਾਈਥਨ ਐਪ ਹੈ, ਅਤੇ ਤੁਹਾਡੀਆਂ ਜਰੂਰਤਾਂ ਜਾਵਾਸਕ੍ਰਿਪਟ ਐਪਲੀਕੇਸ਼ਨ ਦੀ ਵਰਤੋਂ ਮੰਗ ਸਕਦੀਆਂ ਹਨ। -ਇਸ ਪਾਠ ਵਿੱਚ, ਤੁਸੀਂ ਅਨੁਮਾਨ ਲਈ ਇੱਕ ਬੁਨਿਆਦੀ ਜਾਵਾਸਕ੍ਰਿਪਟ-ਅਧਾਰਤ ਸਿਸਟਮ ਬਣਾਉਣਗੇ। ਪਹਿਲਾਂ, ਹਾਲਾਂਕਿ, ਤੁਹਾਨੂੰ ਇੱਕ ਮਾਡਲ ਟ੍ਰੇਨ ਕਰਨਾ ਅਤੇ ਇਸਨੂੰ Onnx ਨਾਲ ਵਰਤਣ ਲਈ ਕਨਵਰਟ ਕਰਨਾ ਪਵੇਗਾ। +ਇਸ ਪਾਠ ਵਿੱਚ, ਤੁਸੀਂ ਇੱਕ ਬੁਨਿਆਦੀ ਜਾਵਾਸਕ੍ਰਿਪਟ-ਆਧਾਰਿਤ ਪ੍ਰਣਾਲੀ ਇੰਫਰੈਂਸ ਲਈ ਬਣਾਓਗੇ। ਪਰ ਪਹਿਲਾਂ ਇਹ ਜਰੂਰੀ ਹੈ ਕਿ ਤੁਸੀਂ ਇੱਕ ਮਾਡਲ ਟਰੇਨ ਕਰੋ ਅਤੇ ਇਸਨੂੰ Onnx ਵਰਤੋਂ ਲਈ ਰੂਪਾਂਤਰਿਤ ਕਰੋ। -## ਅਭਿਆਸ - ਵਰਗੀਕਰਨ ਮਾਡਲ ਟ੍ਰੇਨ ਕਰੋ +## ਅਭਿਆਸ - ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਮਾਡਲ ਟਰੇਨ ਕਰੋ -ਸਭ ਤੋਂ ਪਹਿਲਾਂ, ਸਾਫ ਕੀਤੇ ਗਏ ਖਾਣੇ ਦੇ ਡਾਟਾਸੈਟ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇੱਕ ਵਰਗੀਕਰਨ ਮਾਡਲ ਟ੍ਰੇਨ ਕਰੋ। +ਪਹਿਲਾਂ, ਸਾਫ਼ ਕੀਤੇ ਖਾਣ-ਪੀਣ ਡੇਟਾਸੈੱਟ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇੱਕ ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਮਾਡਲ ਟਰੇਨ ਕਰੋ। -1. ਉਪਯੋਗ ਲਾਇਬ੍ਰੇਰੀਆਂ ਨੂੰ ਇੰਪੋਰਟ ਕਰਨਾ ਸ਼ੁਰੂ ਕਰੋ: +1. ਲੋੜੀਂਦੀਆਂ ਲਾਇਬ੍ਰੇਰੀਆਂ ਇੰਪੋਰਟ ਕਰਨਾ ਸ਼ੁਰੂ ਕਰੋ: ```python !pip install skl2onnx import pandas as pd ``` - ਤੁਹਾਨੂੰ '[skl2onnx](https://onnx.ai/sklearn-onnx/)' ਦੀ ਲੋੜ ਹੈ ਜੋ ਤੁਹਾਡੇ Scikit-learn ਮਾਡਲ ਨੂੰ Onnx ਫਾਰਮੈਟ ਵਿੱਚ ਕਨਵਰਟ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰੇਗਾ। + ਤੁਹਾਨੂੰ '[skl2onnx](https://onnx.ai/sklearn-onnx/)' ਦੀ ਲੋੜ ਪਵੇਗੀ ਜੋ ਤੁਹਾਡੇ ਸਕਾਈਕਿਟ-ਲਰਨ ਮਾਡਲ ਨੂੰ Onnx ਫਾਰਮੈਟ ਵਿੱਚ ਤਬਦੀਲ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰੇਗਾ। -1. ਫਿਰ, ਆਪਣੇ ਡਾਟਾ ਨਾਲ ਪਿਛਲੇ ਪਾਠਾਂ ਵਿੱਚ ਕੀਤੇ ਤਰੀਕੇ ਨਾਲ ਕੰਮ ਕਰੋ, `read_csv()` ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇੱਕ CSV ਫਾਈਲ ਪੜ੍ਹੋ: +1. ਫਿਰ, ਆਪਣਾ ਡਾਟਾ ਉਨ੍ਹਾਂ ਤਰੀਕਿਆਂ ਨਾਲ ਵਰਤੋ ਜੋ ਤੁਸੀਂ ਪਿਛਲੇ ਪਾਠਾਂ ਵਿੱਚ ਕੀਤਾ ਸੀ, ਜਿਵੇਂ `read_csv()` ਨਾਲ CSV ਫਾਇਲ ਪੜ੍ਹਨਾ: ```python data = pd.read_csv('../data/cleaned_cuisines.csv') data.head() ``` -1. ਪਹਿਲੇ ਦੋ ਗੈਰ-ਜ਼ਰੂਰੀ ਕਾਲਮ ਹਟਾਓ ਅਤੇ ਬਾਕੀ ਡਾਟਾ ਨੂੰ 'X' ਵਜੋਂ ਸੇਵ ਕਰੋ: +1. ਪਹਿਲੇ ਦੋ ਲੋੜ-ਨਹੀਂ ਕਾਲਮ ਹਟਾਓ ਅਤੇ ਬਾਕੀ ਬਚੇ ਹੋਏ ਡਾਟਾ ਨੂੰ 'X' ਵਜੋਂ ਸੇਵ ਕਰੋ: ```python X = data.iloc[:,2:] X.head() ``` -1. ਲੇਬਲ ਨੂੰ 'y' ਵਜੋਂ ਸੇਵ ਕਰੋ: +1. ਲੇਬਲਾਂ ਨੂੰ 'y' ਵਜੋਂ ਸੇਵ ਕਰੋ: ```python y = data[['cuisine']] @@ -59,11 +59,11 @@ Applied ML ਸਿਸਟਮ ਬਣਾਉਣਾ ਤੁਹਾਡੇ ਕਾਰੋਬ ``` -### ਟ੍ਰੇਨਿੰਗ ਰੂਟੀਨ ਸ਼ੁਰੂ ਕਰੋ +### ਟ੍ਰੇਨਿੰਗ ਰੁਟੀਨ ਸ਼ੁਰੂ ਕਰੋ -ਅਸੀਂ 'SVC' ਲਾਇਬ੍ਰੇਰੀ ਦੀ ਵਰਤੋਂ ਕਰਾਂਗੇ ਜਿਸਦੀ ਸਹੀਤਾ ਚੰਗੀ ਹੈ। +ਅਸੀਂ 'SVC' ਲਾਇਬ੍ਰੇਰੀ ਵਰਤਾਂਗੇ ਜੋ ਚੰਗੀ ਸਹੀਤਾ ਵਾਲੀ ਹੈ। -1. Scikit-learn ਤੋਂ ਉਚਿਤ ਲਾਇਬ੍ਰੇਰੀਆਂ ਇੰਪੋਰਟ ਕਰੋ: +1. ਸਕਾਈਕਿਟ-ਲਰਨ ਤੋਂ ਉਚਿਤ ਲਾਇਬ੍ਰੇਰੀਆਂ ਇੰਪੋਰਟ ਕਰੋ: ```python from sklearn.model_selection import train_test_split @@ -72,32 +72,32 @@ Applied ML ਸਿਸਟਮ ਬਣਾਉਣਾ ਤੁਹਾਡੇ ਕਾਰੋਬ from sklearn.metrics import accuracy_score,precision_score,confusion_matrix,classification_report ``` -1. ਟ੍ਰੇਨਿੰਗ ਅਤੇ ਟੈਸਟ ਸੈੱਟ ਨੂੰ ਵੱਖ ਕਰੋ: +1. ਟ੍ਰੇਨਿੰਗ ਅਤੇ ਟੈਸਟ ਸੈੱਟਾਂ ਵੱਖ-ਵੱਖ ਕਰੋ: ```python X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.3) ``` -1. ਪਿਛਲੇ ਪਾਠ ਵਿੱਚ ਕੀਤੇ ਤਰੀਕੇ ਨਾਲ ਇੱਕ SVC ਵਰਗੀਕਰਨ ਮਾਡਲ ਬਣਾਓ: +1. ਪਿਛਲੇ ਪਾਠ ਵਾਂਗ SVC ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਮਾਡਲ ਬਣਾਓ: ```python model = SVC(kernel='linear', C=10, probability=True,random_state=0) model.fit(X_train,y_train.values.ravel()) ``` -1. ਹੁਣ, ਆਪਣੇ ਮਾਡਲ ਦੀ ਜਾਂਚ ਕਰੋ, `predict()` ਨੂੰ ਕਾਲ ਕਰਕੇ: +1. ਹੁਣ, ਆਪਣੇ ਮਾਡਲ ਦਾ ਟੈਸਟ ਕਰੋ, `predict()` ਕਾਲ ਕਰਕੇ: ```python y_pred = model.predict(X_test) ``` -1. ਮਾਡਲ ਦੀ ਗੁਣਵੱਤਾ ਦੀ ਜਾਂਚ ਕਰਨ ਲਈ ਇੱਕ ਵਰਗੀਕਰਨ ਰਿਪੋਰਟ ਪ੍ਰਿੰਟ ਕਰੋ: +1. ਮਾਡਲ ਦੀ ਗੁਣਵੱਤਾ ਜਾਂਚਣ ਲਈ ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਰਿਪੋਰਟ ਪ੍ਰਿੰਟ ਕਰੋ: ```python print(classification_report(y_test,y_pred)) ``` - ਜਿਵੇਂ ਅਸੀਂ ਪਹਿਲਾਂ ਵੇਖਿਆ ਸੀ, ਸਹੀਤਾ ਚੰਗੀ ਹੈ: + ਪਹਿਲਾਂ ਵੇਖਿਆ ਗਿਆ ਹੈ ਕਿ ਸਹੀਤਾ ਚੰਗੀ ਹੈ: ```output precision recall f1-score support @@ -113,11 +113,11 @@ Applied ML ਸਿਸਟਮ ਬਣਾਉਣਾ ਤੁਹਾਡੇ ਕਾਰੋਬ weighted avg 0.79 0.79 0.79 1199 ``` -### ਆਪਣੇ ਮਾਡਲ ਨੂੰ Onnx ਵਿੱਚ ਕਨਵਰਟ ਕਰੋ +### ਆਪਣੇ ਮਾਡਲ ਨੂੰ Onnx ਵਿੱਚ ਤਬਦੀਲ ਕਰੋ -ਸਹੀ Tensor ਨੰਬਰ ਨਾਲ ਕਨਵਰਸ਼ਨ ਯਕੀਨੀ ਬਣਾਓ। ਇਸ ਡਾਟਾਸੈਟ ਵਿੱਚ 380 ਸਮੱਗਰੀਆਂ ਦੀ ਸੂਚੀ ਹੈ, ਇਸ ਲਈ ਤੁਹਾਨੂੰ `FloatTensorType` ਵਿੱਚ ਉਸ ਨੰਬਰ ਨੂੰ ਦਰਸਾਉਣਾ ਪਵੇਗਾ: +ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਤਬਦੀਲੀ ਸਹੀ ਟੈਂਸਰ ਨੰਬਰ ਨਾਲ ਕੀਤੀ ਜਾਵੇ। ਇਸ ਡੇਟਾਸੈੱਟ ਵਿੱਚ 380 ਸਮੱਗਰੀਆਂ ਲਿਖੀਆਂ ਗਈਆਂ ਹਨ, ਇਸ ਲਈ ਤੁਹਾਨੂੰ `FloatTensorType` ਵਿੱਚ ਇਹ ਨੰਬਰ ਦਰਜ ਕਰਨਾ ਹੋਵੇਗਾ: -1. 380 ਦੇ Tensor ਨੰਬਰ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕਨਵਰਟ ਕਰੋ। +1. 380 ਦੇ ਟੈਂਸਰ ਨੰਬਰ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਤਬਦੀਲ ਕਰੋ। ```python from skl2onnx import convert_sklearn @@ -127,7 +127,7 @@ Applied ML ਸਿਸਟਮ ਬਣਾਉਣਾ ਤੁਹਾਡੇ ਕਾਰੋਬ options = {id(model): {'nocl': True, 'zipmap': False}} ``` -1. Onnx ਬਣਾਓ ਅਤੇ ਇਸਨੂੰ **model.onnx** ਫਾਈਲ ਵਜੋਂ ਸਟੋਰ ਕਰੋ: +1. onx ਬਣਾਓ ਅਤੇ ਫਾਇਲ ਵਜੋਂ ਸੇਵ ਕਰੋ **model.onnx**: ```python onx = convert_sklearn(model, initial_types=initial_type, options=options) @@ -135,21 +135,187 @@ Applied ML ਸਿਸਟਮ ਬਣਾਉਣਾ ਤੁਹਾਡੇ ਕਾਰੋਬ f.write(onx.SerializeToString()) ``` - > ਨੋਟ ਕਰੋ, ਤੁਸੀਂ ਆਪਣੇ ਕਨਵਰਸ਼ਨ ਸਕ੍ਰਿਪਟ ਵਿੱਚ [ਵਿਕਲਪ](https://onnx.ai/sklearn-onnx/parameterized.html) ਪਾਸ ਕਰ ਸਕਦੇ ਹੋ। ਇਸ ਮਾਮਲੇ ਵਿੱਚ, ਅਸੀਂ 'nocl' ਨੂੰ True ਅਤੇ 'zipmap' ਨੂੰ False ਪਾਸ ਕੀਤਾ। ਕਿਉਂਕਿ ਇਹ ਇੱਕ ਵਰਗੀਕਰਨ ਮਾਡਲ ਹੈ, ਤੁਹਾਡੇ ਕੋਲ ZipMap ਨੂੰ ਹਟਾਉਣ ਦਾ ਵਿਕਲਪ ਹੈ ਜੋ ਡਿਕਸ਼ਨਰੀਆਂ ਦੀ ਸੂਚੀ ਪੈਦਾ ਕਰਦਾ ਹੈ (ਜ਼ਰੂਰੀ ਨਹੀਂ)। `nocl` ਮਾਡਲ ਵਿੱਚ ਸ਼ਾਮਲ ਕਲਾਸ ਜਾਣਕਾਰੀ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ। `nocl` ਨੂੰ 'True' ਸੈਟ ਕਰਕੇ ਆਪਣੇ ਮਾਡਲ ਦਾ ਆਕਾਰ ਘਟਾਓ। + > ਨੋਟ ਕਰੋ, ਤੁਸੀਂ ਆਪਣੀ ਤਬਦੀਲੀ ਸਕ੍ਰਿਪਟ ਵਿੱਚ [ਵਿਕਲਪ](https://onnx.ai/sklearn-onnx/parameterized.html) ਵੀ ਦੇ ਸਕਦੇ ਹੋ। ਇਸ ਸਕ੍ਰਿਪਟ ਵਿੱਚ ਅਸੀਂ 'nocl' ਨੂੰ True ਅਤੇ 'zipmap' ਨੂੰ False ਸੈੱਟ ਕੀਤਾ। ਇਹ ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਮਾਡਲ ਹੈ, ਇਸ ਲਈ ਤੁਹਾਡੇ ਕੋਲ ZipMap ਨੂੰ ਹਟਾਉਣ ਦਾ ਵਿਕਲਪ ਹੁੰਦਾ ਹੈ, ਜੋ ਕਿ ਡਿਕਸ਼ਨਰੀਆਂ ਦੀ ਸੂਚੀ ਤਿਆਰ ਕਰਦਾ ਹੈ (ਲੋੜੀਂਦਾ ਨਹੀਂ). `nocl` ਦਾ ਮਤਲਬ ਹੈ ਕਿ ਮਾਡਲ ਵਿੱਚ ਕਲਾਸ ਜਾਣਕਾਰੀ ਸ਼ਾਮਲ ਹੈ। ਆਪਣੀ ਮਾਡਲ ਦਾ ਆਕਾਰ ਘਟਾਉਣ ਲਈ `nocl` ਨੂੰ 'True' ਤੇ ਰੱਖੋ। -ਸਾਰਾ ਨੋਟਬੁੱਕ ਚਲਾਉਣਾ ਹੁਣ ਇੱਕ Onnx ਮਾਡਲ ਬਣਾਏਗਾ ਅਤੇ ਇਸਨੂੰ ਇਸ ਫੋਲਡਰ ਵਿੱਚ ਸੇਵ ਕਰੇਗਾ। +ਪੂਰਾ ਨੋਟਬੁੱਕ ਚਲਾਉਣ 'ਤੇ ਹੁਣ ਇੱਕ Onnx ਮਾਡਲ ਤਿਆਰ ਹੋ ਕੇ ਇਸ ਫੋਲਡਰ ਵਿੱਚ ਸੇਵ ਹੋ ਜਾਵੇਗਾ। ## ਆਪਣੇ ਮਾਡਲ ਨੂੰ ਵੇਖੋ -Onnx ਮਾਡਲ Visual Studio ਕੋਡ ਵਿੱਚ ਬਹੁਤ ਜ਼ਿਆਦਾ ਦਿਖਾਈ ਨਹੀਂ ਦਿੰਦੇ, ਪਰ ਇੱਕ ਬਹੁਤ ਵਧੀਆ ਮੁਫ਼ਤ ਸੌਫਟਵੇਅਰ ਹੈ ਜੋ ਬਹੁਤ ਸਾਰੇ ਖੋਜਕਰਤਾ ਮਾਡਲ ਨੂੰ ਵੇਖਣ ਲਈ ਵਰਤਦੇ ਹਨ ਤਾਂ ਜੋ ਇਹ ਯਕੀਨੀ ਬਣਾਇਆ ਜਾ ਸਕੇ ਕਿ ਇਹ ਠੀਕ ਤਰੀਕੇ ਨਾਲ ਬਣਾਇਆ ਗਿਆ ਹੈ। [Netron](https://github.com/lutzroeder/Netron) ਡਾਊਨਲੋਡ ਕਰੋ ਅਤੇ ਆਪਣੀ model.onnx ਫਾਈਲ ਖੋਲ੍ਹੋ। ਤੁਸੀਂ ਆਪਣਾ ਸਧਾਰਨ ਮਾਡਲ ਵੇਖ ਸਕਦੇ ਹੋ, ਜਿਸ ਵਿੱਚ 380 ਇਨਪੁਟ ਅਤੇ ਵਰਗੀਕਰਨ ਦਰਸਾਇਆ ਗਿਆ ਹੈ: +Onnx ਮਾਡਲਸ ਵਿਜ਼ੁਅਲ ਸਟੂਡੀਓ ਕੋਡ ਵਿੱਚ ਬਹੁਤ ਜ਼ਿਆਦਾ ਦਿਖਾਈ ਨਹੀਂ ਦਿੰਦੇ, ਪਰ ਇੱਕ ਚੰਗਾ ਮੁਫ਼ਤ ਸਾਫਟਵੇਅਰ ਹੈ, ਜਿਹਨੂੰ ਬਹੁਤ ਸਾਰੇ ਰਿਸਰਚਰ ਵਰਤਦੇ ਹਨ ਮਾਡਲ ਨੂੰ ਵਰਚੁਅਲਾਈਜ਼ ਕਰਨ ਲਈ ਤਾਂ ਜੋ ਇਹ ਸਭ ਠੀਕ ਤਰੀਕੇ ਨਾਲ ਬਣਿਆ ਹੋਵੇ। [Netron](https://github.com/lutzroeder/Netron) ਡਾਊਨਲੋਡ ਕਰੋ ਅਤੇ ਆਪਣੀ model.onnx ਫਾਇਲ ਖੋਲ੍ਹੋ। ਤੁਸੀਂ ਦਰਸ਼ਾ ਸਕਦੇ ਹੋ ਕਿ ਤੁਹਾਡਾ ਸਧਾਰਣ ਮਾਡਲ ਕਿਸ ਤਰ੍ਹਾਂ ਵਰਚੁਅਲਾਈਜ਼ ਹੋਇਆ ਹੈ, ਜਿਸਦੇ 380 ਇਨਪੁੱਟ ਅਤੇ ਕਲਾਸੀਫਾਇਰ ਦਰਸਾਏ ਗਏ ਹਨ: -![Netron visual](../../../../4-Classification/4-Applied/images/netron.png) +![Netron visual](../../../../translated_images/pa/netron.a05f39410211915e.webp) -Netron ਤੁਹਾਡੇ ਮਾਡਲਾਂ ਨੂੰ ਵੇਖਣ ਲਈ ਇੱਕ ਮਦਦਗਾਰ ਸੰਦ ਹੈ। +Netron ਤੁਹਾਡੇ ਮਾਡਲ ਦੇਖਣ ਦਾ ਇੱਕ ਮਦਦਗਾਰ ਟੂਲ ਹੈ। -ਹੁਣ ਤੁਸੀਂ ਇਸ ਸ਼ਾਨਦਾਰ ਮਾਡਲ ਨੂੰ ਇੱਕ ਵੈੱਬ ਐਪ ਵਿੱਚ ਵਰਤਣ ਲਈ ਤਿਆਰ ਹੋ। ਆਓ ਇੱਕ ਐਪ ਬਣਾਈਏ ਜੋ ਤੁਹਾਡੇ ਫ੍ਰਿਜ ਵਿੱਚ ਦੇਖਣ ਅਤੇ ਇਹ ਪਤਾ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰੇ ਕਿ ਤੁਹਾਡੇ ਬਚੇ ਹੋਏ ਸਮੱਗਰੀ ਦੇ ਕੌਣ-ਕੌਣ ਦੇ組 +ਹੁਣ ਤੁਸੀਂ ਇਸ ਸੁੰਦਰ ਮਾਡਲ ਨੂੰ ਇੱਕ ਵੈੱਬ ਐਪ ਵਿੱਚ ਵਰਤਣ ਲਈ ਤਿਆਰ ਹੋ। ਚਲੋ ਇੱਕ ਐਪ ਬਣਾਈਏ ਜੋ ਇੰਨਦਿਆਂ ਫ਼ਾਇਦੇਮੰਦ ਹੋਵੇ ਜਦੋਂ ਤੁਸੀਂ ਆਪਣੇ ਫ੍ਰਿਜ ਵਿੱਚ ਦੇਖਦੇ ਹੋ ਅਤੇ ਸਮਝਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਹੋ ਕਿ ਆਪਣੇ ਬਚੇ-ਖੂਟੇ ਸਮੱਗਰੀਆਂ ਦੇ ਕਿਹੜੇ ਮਿਲਾਪ ਨਾਲ ਕੋਈ ਖਾਸ ਖਾਣਾ ਬਣ ਸਕਦਾ ਹੈ, ਜੋ ਕਿ ਤੁਹਾਡੇ ਮਾਡਲ ਨੇ ਨਿਰਧਾਰਿਤ ਕੀਤਾ ਹੋਵੇ। + +## ਇੱਕ ਸੁਝਾਅ ਦਿੰਦੀਆਂ ਵੈੱਬ ਐਪ ਬਣਾਓ + +ਤੁਸੀਂ ਆਪਣੇ ਮਾਡਲ ਨੂੰ ਸਿੱਧਾ ਵੈੱਬ ਐਪ ਵਿੱਚ ਵਰਤ ਸਕਦੇ ਹੋ। ਇਹ ਆਰਕੀਟੈਕਚਰ ਤੁਹਾਨੂੰ ਇਸਨੂੰ ਲੋਕਲ ਤੌਰ 'ਤੇ ਚਲਾਉਣ ਅਤੇ ਜੇ ਲੋੜ ਹੋਵੇ ਤਾਂ ਆਫਲਾਈਨ ਵੀ ਚਲਾਉਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ। "model.onnx" ਫਾਇਲ ਜਿਥੇ ਸਟੋਰ ਕੀਤੀ ਹੈ, ਉਹੋ ਪੁੱਟ ਵਿੱਚ ਇੱਕ `index.html` ਫਾਇਲ ਬਣਾਉ। + +1. ਇਸ ਫਾਇਲ _index.html_ ਵਿੱਚ ਹੇਠਾਂ ਦਿੱਤਾ ਮਾਰਕਅਪ ਸ਼ਾਮਲ ਕਰੋ: + + ```html + + +
+ Cuisine Matcher +
+ + ... + + + ``` + +1. ਹੁਣ, `body` ਟੈਗ ਦੇ ਅੰਦਰ ਕੁਝ ਮਾਰਕਅਪ ਸ਼ਾਮਲ ਕਰੋ ਜੋ ਕਿ ਕੁਝ ਸਮੱਗਰੀਆਂ ਦੀ ਇੱਕ ਚੈੱਕਬਾਕਸ ਸੂਚੀ ਦਿਖਾਉਂਦਾ ਹੈ: + + ```html +

Check your refrigerator. What can you create?

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+ +
+ ``` + + ਧਿਆਨ ਦਿਓ ਕਿ ਹਰ ਚੈੱਕਬਾਕਸ ਨੂੰ ਇੱਕ ਕਦਰ ਦਿੱਤੀ ਗਈ ਹੈ। ਇਹ ਡੇਟਾਸੈੱਟ ਅਨੁਸਾਰ ਜਿਸ ਇੰਡੈਕਸ 'ਤੇ ਸਮੱਗਰੀ ਮਿਲਦੀ ਹੈ ਉਸ ਦਾ ਪ੍ਰਤੀਕ ਹੈ। ਉਦਾਹਰਨ ਵਜੋਂ, ਸੇਬ (Apple), ਇਸ ਅਲਫਾਬੇਟਿਕ ਸੂਚੀ ਵਿੱਚ ਪੰਜਵੇਂ ਕਾਲਮ ਵਿੱਚ ਹੈ, ਇਸ ਲਈ ਉਸਦੀ ਕਦਰ '4' ਹੈ ਕਿਉਂਕਿ ਅਸੀਂ ਸ਼ੁਰੂਆਤ 0 ਤੋਂ ਕਰਦੇ ਹਾਂ। ਤੁਸੀਂ [ingredients spreadsheet](../../../../4-Classification/data/ingredient_indexes.csv) ਵੇਖ ਕੇ ਕਿਸੇ ਸਮੱਗਰੀ ਦਾ ਇੰਡੈਕਸ ਪਤਾ ਕਰ ਸਕਦੇ ਹੋ। + + index.html ਫਾਇਲ ਵਿੱਚ ਕੰਮ ਜਾਰੀ ਰੱਖਦੇ ਹੋਏ, ਇੱਕ ਸਕ੍ਰਿਪਟ ਬਲਾਕ ਸ਼ਾਮਲ ਕਰੋ ਜਿੱਥੇ ਮਾਡਲ ਨੂੰ ਆਖਰੀ ਬੰਦ `` ਤੋਂ ਬਾਅਦ ਕਾਲ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। + +1. ਸਭ ਤੋਂ ਪਹਿਲਾਂ, [Onnx Runtime](https://www.onnxruntime.ai/) ਨੂੰ ਇੰਪੋਰਟ ਕਰੋ: + + ```html + + ``` + + > Onnx Runtime ਤੁਹਾਡੇ Onnx ਮਾਡਲਾਂ ਨੂੰ ਵੱਖ-ਵੱਖ ਹਾਰਡਵੇਅਰ ਪਲੇਟਫਾਰਮਾਂ 'ਤੇ ਚਲਾਉਣ ਯੋਗ ਕਰਦਾ ਹੈ, ਜਿਸ ਵਿੱਚ ਅਪਟੀਮਾਈਜ਼ੇਸ਼ਨ ਅਤੇ ਵਰਤੋਂ ਲਈ ਇਕ API ਸ਼ਾਮਲ ਹੈ। + +1. ਜਿਵੇਂ ਹੀ Runtime ਤਿਆਰ ਹੋਇਆ, ਤੁਸੀਂ ਇਸਨੂੰ ਕਾਲ ਕਰ ਸਕਦੇ ਹੋ: + + ```html + + ``` + +ਇਸ ਕੋਡ ਵਿੱਚ ਕਈ ਗੱਲਾਂ ਹੋ ਰਹੀਆਂ ਹਨ: + +1. ਤੁਸੀਂ 380 ਸੰਭਾਵਤ ਕਦਰਾਂ (1 ਜਾਂ 0) ਦੀ ਇੱਕ ਐਰੇ ਬਣਾਈ ਜੋ ਸੈਟ ਕੀਤੀ ਜਾਏਗੀ ਅਤੇ ਮਾਡਲ ਨੂੰ ਇੰਫਰੈਂਸ ਲਈ ਭੇਜੀ ਜਾਵੇਗੀ, ਇਹ ਇਸ ਗੱਲ 'ਤੇ ਨਿਰਭਰ ਕਰਦਾ ਹੈ ਕਿ ਕੋਈ ਸਮੱਗਰੀ ਚੈੱਕਬਾਕਸ ਚੈਕ ਹੈ ਕਿ ਨਹੀਂ। +2. ਤੁਸੀਂ ਚੈੱਕਬਾਕਸ ਦਾ ਇੱਕ ਐਰੇ ਬਣਾਇਆ ਅਤੇ ਇੱਕ 'init' ਫੰਕਸ਼ਨ ਵਿੱਚ ਇਹ ਜਾਂਚ ਕਰਨ ਦਾ ਤਰੀਕਾ ਬਣਾਇਆ ਕਿ ਉਹ ਚੈਕੇਡ ਹਨ ਜਾਂ ਨਹੀਂ, ਜੋ ਐਪਲੀਕੇਸ਼ਨ ਦੇ ਸ਼ੁਰੂ ਹੋਣ 'ਤੇ ਕਾਲ ਹੁੰਦਾ ਹੈ। ਜੇ ਕੋਈ ਚੈੱਕਬਾਕਸ ਚੈੱਕ ਹੋਵੇ, ਤਾਂ `ingredients` ਐਰੇ ਨੂੰ ਚੁਣੀ ਗਈ ਸਮੱਗਰੀ ਦੇ ਅਨੁਸਾਰ ਬਦਲ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ। +3. ਤੁਸੀਂ ਇੱਕ `testCheckboxes` ਫੰਕਸ਼ਨ ਬਣਾਇਆ ਜੋ ਜਾਂਚਦਾ ਹੈ ਕਿ ਕੋਈ ਵੀ ਚੈੱਕਬਾਕਸ ਚੈੱਕ ਹੈ ਕਿ ਨਹੀਂ। +4. ਤੁਸੀਂ `startInference` ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋ ਜਦੋਂ ਬਟਨ ਦਬਾਇਆ ਗਿਆ ਹੋਵੇ ਅਤੇ ਜੇ ਕੋਈ ਵੀ ਚੈੱਕਬਾਕਸ ਚੈੱਕ ਹੈ, ਤਾਂ ਇੰਫਰੈਂਸ ਸ਼ੁਰੂ ਕਰਦੇ ਹੋ। +5. ਇੰਫਰੈਂਸ ਰੁਟੀਨ ਵਿੱਚ ਸ਼ਾਮਲ ਹੈ: + 1. ਮਾਡਲ ਦੀ ਅਸਿੰਕ੍ਰੋਨਸ ਲੋਡਿੰਗ ਨੂੰ ਸੈੱਟ ਕਰਨਾ + 2. ਮਾਡਲ ਨੂੰ ਭੇਜਣ ਲਈ ਟੈਂਸਰ ਬਣਾਉਣਾ + 3. 'feeds' ਬਣਾਉਣਾ ਜੋ ਇਹ ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ `float_input` ਇਨਪੁੱਟ ਜੋ ਤੁਸੀਂ ਮਾਡਲ ਟਰੇਨਿੰਗ ਦੌਰਾਨ ਬਣਾਇਆ (ਤੁਸੀਂ ਇਹ ਨਾਮ Netron ਦੇਖ ਕੇ ਪੁਸ਼ਟੀ ਕਰ ਸਕਦੇ ਹੋ) + 4. ਇਨ੍ਹਾਂ 'feeds' ਨੂੰ ਮਾਡਲ ਨੂੰ ਭੇਜਣਾ ਅਤੇ ਜਵਾਬ ਦੀ ਉਡੀਕ ਕਰਨੀ + +## ਆਪਣੀ ਐਪਲੀਕੇਸ਼ਨ ਦੀ ਜਾਂਚ ਕਰੋ + +Visual Studio Code ਵਿੱਚ ਉਸ ਫੋਲਡਰ ਵਿੱਚ ਟਰਮੀਨਲ ਸੈਸ਼ਨ ਖੋਲ੍ਹੋ ਜਿੱਥੇ ਤੁਹਾਡੀ index.html ਫਾਇਲ ਹੈ। ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਤੁਸੀਂ [http-server](https://www.npmjs.com/package/http-server) ਗਲੋਬਲੀ ਇੰਸਟਾਲ ਕੀਤਾ ਹੈ, ਅਤੇ ਪ੍ਰਾਪਤ ਟਰਮੀਨਲ 'ਤੇ `http-server` ਲਿਖੋ। ਇੱਕ ਲੋਕਲਹੋਸਟ ਖੁਲਣਾ ਚਾਹੀਦਾ ਹੈ ਅਤੇ ਤੁਸੀਂ ਆਪਣੀ ਵੈੱਬ ਐਪ ਵੇਖ ਸਕਦੇ ਹੋ। ਵੱਖ-ਵੱਖ ਸਮੱਗਰੀਆਂ ਦੇ ਅਧਾਰ 'ਤੇ ਕਿਸ ਖਾਣੇ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ, ਤੁਸੀਂ ਦੇਖੋ: + +![ingredient web app](../../../../translated_images/pa/web-app.4c76450cabe20036.webp) + +ਵਧਾਈ ਹੋਵੇ, ਤੁਸੀਂ ਇੱਕ ਸੁਝਾਅ ਦੇਣ ਵਾਲੀ ਵੈੱਬ ਐਪ ਬਣਾਈ ਹੈ ਜਿਸ ਵਿੱਚ ਕੁਝ ਖੇਤਰ ਹਨ। ਇਸ ਪ੍ਰਣਾਲੀ ਨੂੰ ਵਿਕਸਤ ਕਰਨ ਲਈ ਕੁਝ ਸਮਾਂ ਲਗਾਓ! +## 🚀ਚੈਲੇਂਜ + +ਤੁਹਾਡੀ ਵੈੱਬ ਐਪ ਬਹੁਤ ਹੀ ਘੱਟ ਹੈ, ਇਸਨੂੰ ਬਣਾ ਰਹਿਣਾ ਜਾਰੀ ਰੱਖੋ ਅਤੇ [ingredient_indexes](../../../../4-Classification/data/ingredient_indexes.csv) ਡੇਟਿਆਂ ਦੇ ਸਮੱਗਰੀਆਂ ਅਤੇ ਉਨ੍ਹਾਂ ਦੇ ਇੰਡੈਕਸਾਂ ਦੀ ਵਰਤੋਂ ਕਰੋ। ਕਿਹੜੇ ਸਵਾਦ ਦੇ ਥੁੱਲਿਆਂ ਨਾਲ ਕੋਈ ਦੇਸ਼ ਦੀ ਵਿਸ਼ੇਸ਼ ਵਿਆੰਜਣ ਬਣਦੀ ਹੈ? + +## [ਪੋਸਟ-ਲੈਕਚਰ ਕਵਿਜ਼](https://ff-quizzes.netlify.app/en/ml/) + +## ਸਮੀਖਿਆ ਅਤੇ ਸਵੈ ਅਧਿਐਨ + +ਜਦਕਿ ਇਸ ਪਾਠ ਨੇ ਸਿਰਫ ਖਾਣ ਪਦਾਰਥਾਂ ਲਈ ਇੱਕ ਸਿਫਾਰਸ਼ੀ ਪ੍ਰਣਾਲੀ ਬਣਾਉਣ ਦੀ ਯੂਟਿਲਿਟੀ 'ਤੇ ਝਲਕ ਦਿੱਤੀ ਹੈ, ਇਸ ਖੇਤਰ ਵਿੱਚ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਐਪਲੀਕੇਸ਼ਨਾਂ ਦੇ ਬਹੁਤ ਸਾਰੇ ਉਦਾਹਰਨ ਹਨ। ਪੜ੍ਹੋ ਕਿ ਇਹ ਪ੍ਰਣਾਲੀਆਂ ਕਿਵੇਂ ਬਣਾਈ ਜਾਂਦੀਆਂ ਹਨ: + +- https://www.sciencedirect.com/topics/computer-science/recommendation-engine +- https://www.technologyreview.com/2014/08/25/171547/the-ultimate-challenge-for-recommendation-engines/ +- https://www.technologyreview.com/2015/03/23/168831/everything-is-a-recommendation/ + +## ਅਸਾਈਨਮੈਂਟ + +[ਨਵਾਂ ਸੁਝਾਅ ਦਿੰਦੀਆਂ ਪ੍ਰਣਾਲੀ ਬਣਾਓ](assignment.md) --- -**ਅਸਵੀਕਾਰਨਾ**: -ਇਹ ਦਸਤਾਵੇਜ਼ 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/6-NLP/1-Introduction-to-NLP/README.md b/translations/pa/6-NLP/1-Introduction-to-NLP/README.md index 7e72c1333..5c87861df 100644 --- a/translations/pa/6-NLP/1-Introduction-to-NLP/README.md +++ b/translations/pa/6-NLP/1-Introduction-to-NLP/README.md @@ -1,109 +1,172 @@ -# ਨੈਚਰਲ ਲੈਂਗਵੇਜ ਪ੍ਰੋਸੈਸਿੰਗ ਦਾ ਪਰਚੇ +# ਕੁਦਰਤੀ ਭਾਸ਼ਾ ਪ੍ਰੋਸੈਸਿੰਗ ਦਾ ਪਰਿਚਯ -ਇਸ ਪਾਠ ਵਿੱਚ *ਨੈਚਰਲ ਲੈਂਗਵੇਜ ਪ੍ਰੋਸੈਸਿੰਗ*, ਜੋ ਕਿ *ਕੰਪਿਊਟੇਸ਼ਨਲ ਲਿੰਗਵਿਸਟਿਕਸ* ਦਾ ਇੱਕ ਉਪ-ਖੇਤਰ ਹੈ, ਦੀ ਸੰਖੇਪ ਇਤਿਹਾਸ ਅਤੇ ਮਹੱਤਵਪੂਰਨ ਧਾਰਨਾਵਾਂ ਨੂੰ ਕਵਰ ਕੀਤਾ ਗਿਆ ਹੈ। +ਇਹ ਪਾਠ ਕੁਦਰਤੀ ਭਾਸ਼ਾ ਪ੍ਰੋਸੈਸਿੰਗ *, ਜੋ ਕਿ *ਕੰਪਿਊਟੇਸ਼ਨਲ ਲਿੰਗਵਿਸਟਿਕਸ* ਦਾ ਇੱਕ ਉਪਖੇਤਰ ਹੈ, ਦਾ ਇੱਕ ਸੰਖੇਪ ਇਤਿਹਾਸ ਅਤੇ ਮਹੱਤਵਪੂਰਨ ਸੰਕਲਪ ਕਵਰ ਕਰਦਾ ਹੈ। -## [ਪ੍ਰੀ-ਲੈਕਚਰ ਕਵਿਜ਼](https://ff-quizzes.netlify.app/en/ml/) +## [ਪੂਰਵ-ਲੈਕਚਰ ਕਿਊਜ਼](https://ff-quizzes.netlify.app/en/ml/) -## ਪਰਚੇ +## ਪਰਿਚਯ -NLP, ਜਿਵੇਂ ਕਿ ਆਮ ਤੌਰ 'ਤੇ ਜਾਣਿਆ ਜਾਂਦਾ ਹੈ, ਉਹ ਖੇਤਰਾਂ ਵਿੱਚੋਂ ਇੱਕ ਹੈ ਜਿੱਥੇ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਨੂੰ ਲਾਗੂ ਕੀਤਾ ਗਿਆ ਹੈ ਅਤੇ ਪ੍ਰੋਡਕਸ਼ਨ ਸਾਫਟਵੇਅਰ ਵਿੱਚ ਵਰਤਿਆ ਗਿਆ ਹੈ। +NLP, ਜਿਵੇਂ ਕਿ ਆਮ ਤੌਰ 'ਤੇ ਜਾਣਿਆ ਜਾਂਦਾ ਹੈ, ਉਹ ਇਲਾਕਾ ਹੈ ਜਿੱਥੇ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਨੂੰ ਸਭ ਤੋਂ ਵਧੀਆ ਜਾਣਿਆ ਅਤੇ ਉਤਪਾਦਨ ਸਾਫਟਵੇਅਰ ਵਿੱਚ ਵਰਤਿਆ ਗਿਆ ਹੈ। -✅ ਕੀ ਤੁਸੀਂ ਕੋਈ ਸਾਫਟਵੇਅਰ ਸੋਚ ਸਕਦੇ ਹੋ ਜੋ ਤੁਸੀਂ ਹਰ ਰੋਜ਼ ਵਰਤਦੇ ਹੋ ਅਤੇ ਜਿਸ ਵਿੱਚ ਸ਼ਾਇਦ ਕੁਝ NLP ਸ਼ਾਮਲ ਹੈ? ਤੁਹਾਡੇ ਵਰਡ ਪ੍ਰੋਸੈਸਿੰਗ ਪ੍ਰੋਗਰਾਮਾਂ ਜਾਂ ਮੋਬਾਈਲ ਐਪਸ ਬਾਰੇ ਕੀ ਖਿਆਲ ਹੈ ਜੋ ਤੁਸੀਂ ਨਿਯਮਿਤ ਤੌਰ 'ਤੇ ਵਰਤਦੇ ਹੋ? +✅ ਕੀ ਤੁਸੀਂ ਕਿਸੇ ਅਜਿਹੇ ਸਾਫਟਵੇਅਰ ਦਾ ਸੋਚ ਸਕਦੇ ਹੋ ਜੋ ਤੁਸੀਂ ਹਰ ਰੋਜ਼ ਵਰਤਦੇ ਹੋ ਅਤੇ ਜਿਸ ਵਿੱਚ ਸੰਭਵਤ: ਕੁਝ NLP ਸ਼ਾਮਲ ਹੈ? ਤੁਹਾਡੇ ਵਰਡ ਪ੍ਰੋਸੈਸਿੰਗ ਪ੍ਰੋਗਰਾਮ ਜਾਂ ਮੋਬਾਈਲ ਐਪਸ ਬਾਰੇ ਕੀ ਜੋ ਤੁਸੀਂ ਐਕਸਰੇਗੂਲਰ ਵਰਤਦੇ ਹੋ? ਤੁਸੀਂ ਸਿੱਖੋਗੇ: -- **ਭਾਸ਼ਾਵਾਂ ਦਾ ਵਿਚਾਰ**। ਭਾਸ਼ਾਵਾਂ ਕਿਵੇਂ ਵਿਕਸਿਤ ਹੋਈਆਂ ਅਤੇ ਅਧਿਐਨ ਦੇ ਮੁੱਖ ਖੇਤਰ ਕੀ ਰਹੇ ਹਨ। -- **ਪ੍ਰਭਾਸ਼ਾ ਅਤੇ ਧਾਰਨਾਵਾਂ**। ਤੁਸੀਂ ਇਹ ਵੀ ਸਿੱਖੋਗੇ ਕਿ ਕਮਪਿਊਟਰ ਟੈਕਸਟ ਨੂੰ ਕਿਵੇਂ ਪ੍ਰੋਸੈਸ ਕਰਦੇ ਹਨ, ਜਿਸ ਵਿੱਚ ਪਾਰਸਿੰਗ, ਗ੍ਰੈਮਰ, ਅਤੇ ਨਾਉਨ ਅਤੇ ਵਰਬ ਦੀ ਪਛਾਣ ਸ਼ਾਮਲ ਹੈ। ਇਸ ਪਾਠ ਵਿੱਚ ਕੁਝ ਕੋਡਿੰਗ ਟਾਸਕ ਹਨ, ਅਤੇ ਕਈ ਮਹੱਤਵਪੂਰਨ ਧਾਰਨਾਵਾਂ ਪੇਸ਼ ਕੀਤੀਆਂ ਗਈਆਂ ਹਨ ਜੋ ਤੁਸੀਂ ਅਗਲੇ ਪਾਠਾਂ ਵਿੱਚ ਕੋਡ ਕਰਨਾ ਸਿੱਖੋਗੇ। +- **ਭਾਸ਼ਾਵਾਂ ਦਾ ਖ਼ਿਆਲ**। ਭਾਸ਼ਾਵਾਂ ਕਿਵੇਂ ਵਿਕਸਿਤ ਹੋਈਆਂ ਅਤੇ ਅਧਿਐਨ ਦੇ ਮੁੱਖ ਖੇਤਰ ਕੀ ਹਨ। +- **ਪਰਿਭਾਸ਼ਾਵਾਂ ਅਤੇ ਸੰਕਲਪ**। ਤੁਸੀਂ ਇਹ ਵੀ ਸਿੱਖੋਗੇ ਕਿ ਕੰਪਿਊਟਰ ਟੈਕਸਟ ਨੂੰ ਕਿਵੇਂ ਪ੍ਰੋਸੈਸ ਕਰਦੇ ਹਨ, ਜਿਸ ਵਿੱਚ ਪਾਰਸਿੰਗ, ਵਿਆਕਰਣ ਅਤੇ ਨਾਂਵਾਂ ਅਤੇ ਕ੍ਰਿਆਵਾਂ ਦੀ ਪਛਾਣ ਸ਼ਾਮਲ ਹੈ। ਇਸ ਪਾਠ ਵਿੱਚ ਕੁਝ ਕੋਡਿੰਗ ਕਾਰਜ ਹਨ, ਅਤੇ ਕਈ ਮਹੱਤਵਪੂਰਨ ਸੰਕਲਪ ਤਿਆਰ ਕੀਤੇ ਗਏ ਹਨ ਜੋ ਤੁਸੀਂ ਅਗਲੇ ਪਾਠਾਂ ਵਿੱਚ ਕੋਡ ਕਰਨਾ ਸਿੱਖੋਗੇ। ## ਕੰਪਿਊਟੇਸ਼ਨਲ ਲਿੰਗਵਿਸਟਿਕਸ -ਕੰਪਿਊਟੇਸ਼ਨਲ ਲਿੰਗਵਿਸਟਿਕਸ ਇੱਕ ਖੋਜ ਅਤੇ ਵਿਕਾਸ ਦਾ ਖੇਤਰ ਹੈ ਜੋ ਕਈ ਦਹਾਕਿਆਂ ਤੋਂ ਅਧਿਐਨ ਕਰਦਾ ਹੈ ਕਿ ਕਮਪਿਊਟਰ ਭਾਸ਼ਾਵਾਂ ਨਾਲ ਕਿਵੇਂ ਕੰਮ ਕਰ ਸਕਦੇ ਹਨ, ਅਤੇ ਇੱਥੇ ਤੱਕ ਕਿ ਸਮਝ, ਅਨੁਵਾਦ, ਅਤੇ ਸੰਚਾਰ ਕਰ ਸਕਦੇ ਹਨ। ਨੈਚਰਲ ਲੈਂਗਵੇਜ ਪ੍ਰੋਸੈਸਿੰਗ (NLP) ਇੱਕ ਸੰਬੰਧਿਤ ਖੇਤਰ ਹੈ ਜੋ ਇਸ ਗੱਲ 'ਤੇ ਧਿਆਨ ਕੇਂਦਰਿਤ ਕਰਦਾ ਹੈ ਕਿ ਕਮਪਿਊਟਰ 'ਨੈਚਰਲ', ਜਾਂ ਮਨੁੱਖੀ, ਭਾਸ਼ਾਵਾਂ ਨੂੰ ਕਿਵੇਂ ਪ੍ਰੋਸੈਸ ਕਰ ਸਕਦੇ ਹਨ। +ਕੰਪਿਊਟੇਸ਼ਨਲ ਲਿੰਗਵਿਸਟਿਕਸ ਉਹ ਖੇਤਰ ਹੈ ਜਿਸਨੇ ਕਈ ਦਹਾਕਿਆਂ ਤੱਕ ਖੋਜ ਅਤੇ ਵਿਕਾਸ ਕੀਤਾ ਹੈ ਕਿ ਕੰਪਿਊਟਰਾਂ ਨਾਲ ਭਾਸ਼ਾਵਾਂ ਨਾਲ ਕੰਮ ਕਿਵੇਂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ, ਸਮਝਿਆ ਜਾ ਸਕਦਾ ਹੈ, ਅਨੁਵਾਦ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ ਅਤੇ ਸੰਚਾਰ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਕੁਦਰਤੀ ਭਾਸ਼ਾ ਪ੍ਰੋਸੈਸਿੰਗ (NLP) ਇੱਕ ਸੰਬੰਧਤ ਖੇਤਰ ਹੈ ਜੋ ਇਸ ਗੱਲ 'ਤੇ ਧਿਆਨ ਕੇਂਦ੍ਰਿਤ ਕਰਦਾ ਹੈ ਕਿ ਕੰਪਿਊਟਰ 'ਕੁਦਰਤੀ' ਜਾਂ ਮਾਨਵ ਭਾਸ਼ਾਵਾਂ ਨੂੰ ਕਿਵੇਂ ਪ੍ਰੋਸੈਸ ਕਰ ਸਕਦਾ ਹੈ। -### ਉਦਾਹਰਨ - ਫੋਨ ਡਿਕਟੇਸ਼ਨ +### ਉਦਾਹਰਨ - ਫ਼ੋਨ ਡਿਕਟੇਸ਼ਨ -ਜੇਕਰ ਤੁਸੀਂ ਕਦੇ ਟਾਈਪ ਕਰਨ ਦੀ ਬਜਾਏ ਆਪਣੇ ਫੋਨ ਨੂੰ ਡਿਕਟੇਟ ਕੀਤਾ ਹੈ ਜਾਂ ਕਿਸੇ ਵਰਚੁਅਲ ਅਸਿਸਟੈਂਟ ਨੂੰ ਸਵਾਲ ਪੁੱਛਿਆ ਹੈ, ਤਾਂ ਤੁਹਾਡੀ ਬੋਲਚਾਲ ਨੂੰ ਟੈਕਸਟ ਰੂਪ ਵਿੱਚ ਬਦਲਿਆ ਗਿਆ ਅਤੇ ਫਿਰ ਪ੍ਰੋਸੈਸ ਕੀਤਾ ਜਾਂ *ਪਾਰਸ* ਕੀਤਾ ਗਿਆ। ਫਿਰ ਪਛਾਣ ਕੀਤੇ ਗਏ ਕੀਵਰਡ ਨੂੰ ਇੱਕ ਫਾਰਮੈਟ ਵਿੱਚ ਪ੍ਰੋਸੈਸ ਕੀਤਾ ਗਿਆ ਜੋ ਫੋਨ ਜਾਂ ਅਸਿਸਟੈਂਟ ਸਮਝ ਸਕਦਾ ਹੈ ਅਤੇ ਇਸ 'ਤੇ ਕਾਰਵਾਈ ਕਰ ਸਕਦਾ ਹੈ। +ਜੇ ਤੁਸੀਂ ਕਦੇ ਆਪਣੀ ਫ਼ੋਨ ਨੂੰ ਟਾਈਪ ਕਰਨ ਦੀ ਬਜਾਏ ਕਹਿਣਾ ਦਿਤਾ ਹੈ ਜਾਂ ਇੱਕ ਵਿਰਚੁਅਲ ਸਹਾਇਕ ਨੂੰ ਸਵਾਲ ਪੁੱਛਿਆ ਹੈ, ਤਾਂ ਤੁਹਾਡੀ ਬੋਲੀ ਇਕ ਟੈਕਸਟ ਰੂਪ ਵਿੱਚ ਬਦਲੀ ਗਈ ਅਤੇ ਫਿਰ ਤੁਹਾਡੇ ਬੋਲੇ ਭਾਸ਼ਾ ਤੋਂ ਪਾਰਸ ਕੀਤੀ ਗਈ। ਪਹਿਚਾਣ ਕੀਤੇ ਕੀਵਰਡਸ ਨੂੰ ਫਿਰ ਇੱਕ ਫਾਰਮੈਟ ਵਿੱਚ ਪ੍ਰੋਸੈਸ ਕੀਤਾ ਗਿਆ ਜੋ ਫ਼ੋਨ ਜਾਂ ਸਹਾਇਕ ਸਮਝ ਸਕਦਾ ਸੀ ਅਤੇ ਕਾਰਵਾਈ ਕਰ ਸਕਦਾ ਸੀ। -![ਸਮਝ](../../../../6-NLP/1-Introduction-to-NLP/images/comprehension.png) -> ਅਸਲ ਲਿੰਗਵਿਸਟਿਕ ਸਮਝਣਾ ਮੁਸ਼ਕਲ ਹੈ! ਚਿੱਤਰ [Jen Looper](https://twitter.com/jenlooper) ਦੁਆਰਾ +![ਸਮਝਦਾਰੀ](../../../../translated_images/pa/comprehension.619708fc5959b0f6.webp) +> ਅਸਲ ਭਾਸ਼ਾਈ ਸਮਝਣਾ ਮੁਸ਼ਕਲ ਹੈ! ਚਿੱਤਰ [Jen Looper](https://twitter.com/jenlooper) ਵੱਲੋਂ -### ਇਹ ਤਕਨਾਲੋਜੀ ਕਿਵੇਂ ਸੰਭਵ ਹੈ? +### ਇਹ ਤਕਨਾਲੋਜੀ ਕਿਵੇਂ ਸੰਭਵ ਹੋਈ? -ਇਹ ਇਸ ਲਈ ਸੰਭਵ ਹੈ ਕਿਉਂਕਿ ਕਿਸੇ ਨੇ ਇਸ ਨੂੰ ਕਰਨ ਲਈ ਇੱਕ ਕਮਪਿਊਟਰ ਪ੍ਰੋਗਰਾਮ ਲਿਖਿਆ। ਕੁਝ ਦਹਾਕਿਆਂ ਪਹਿਲਾਂ, ਕੁਝ ਸਾਇੰਸ ਫਿਕਸ਼ਨ ਲੇਖਕਾਂ ਨੇ ਅਨੁਮਾਨ ਲਗਾਇਆ ਸੀ ਕਿ ਲੋਕ ਮੁੱਖ ਤੌਰ 'ਤੇ ਆਪਣੇ ਕਮਪਿਊਟਰਾਂ ਨਾਲ ਗੱਲਬਾਤ ਕਰਨਗੇ, ਅਤੇ ਕਮਪਿਊਟਰ ਹਮੇਸ਼ਾ ਇਹ ਸਮਝਣਗੇ ਕਿ ਉਹ ਕੀ ਕਹਿ ਰਹੇ ਹਨ। ਦੁਖਦਾਈ ਤੌਰ 'ਤੇ, ਇਹ ਇੱਕ ਕਾਫ਼ੀ ਮੁਸ਼ਕਲ ਸਮੱਸਿਆ ਸਾਬਤ ਹੋਈ। ਹਾਲਾਂਕਿ ਅੱਜ ਇਹ ਸਮੱਸਿਆ ਬਹੁਤ ਵਧੀਆ ਤਰੀਕੇ ਨਾਲ ਸਮਝੀ ਗਈ ਹੈ, 'ਪਰਫੈਕਟ' ਨੈਚਰਲ ਲੈਂਗਵੇਜ ਪ੍ਰੋਸੈਸਿੰਗ ਪ੍ਰਾਪਤ ਕਰਨ ਵਿੱਚ ਅਹਿਮ ਚੁਣੌਤੀਆਂ ਹਨ, ਖਾਸ ਕਰਕੇ ਜਦੋਂ ਗੱਲ ਇੱਕ ਵਾਕ ਦੇ ਅਰਥ ਨੂੰ ਸਮਝਣ ਦੀ ਆਉਂਦੀ ਹੈ। ਇਹ ਸਮੱਸਿਆ ਹਾਸੇ ਜਾਂ ਵਾਕ ਵਿੱਚ ਜਜ਼ਬਾਤ ਜਿਵੇਂ ਕਿ ਤਨਜ਼ ਦੀ ਪਛਾਣ ਕਰਨ ਵਿੱਚ ਹੋਰ ਵੀ ਮੁਸ਼ਕਲ ਹੋ ਜਾਂਦੀ ਹੈ। +ਇਹ ਸੰਭਵ ਹੈ ਕਿਉਂਕਿ ਕਿਸੇ ਨੇ ਏਸ ਕੰਮ ਲਈ ਇੱਕ ਕੰਪਿਊਟਰ ਪ੍ਰੋਗਰਾਮ ਲਿਖਿਆ। ਕੁਝ ਦਹਾਕੇ ਪਹਿਲਾਂ, ਕੁਝ ਵਿਗਿਆਨੀ ਫਿਕਸ਼ਨ ਲੇਖਕਾਂ ਨੇ ਭਵਿੱਖਬਾਣੀ ਕੀਤੀ ਸੀ ਕਿ ਲੋਕ ਜ਼ਿਆਦਾਤਰ ਆਪਣੇ ਕੰਪਿਊਟਰਾਂ ਨਾਲ ਗੱਲਬਾਤ ਕਰਾਂਗੇ, ਅਤੇ ਕੰਪਿਊਟਰ ਸਦਾ ਠੀਕ ਸਮਝਣਗੇ ਕਿ ਉਹ ਕੀ ਮਤਲਬ ਹੈ। ਦੁੱਖਦਾਈ ਗੱਲ ਇਹ ਹੈ ਕਿ ਇਹ ਸਮੱਸਿਆ ਉਮੀਦ ਤੋਂ ਜ਼ਿਆਦਾ ਮੁਸ਼ਕਲ ਨਿਕਲੀ, ਅਤੇ ਅੱਜ ਇਹ ਬਹੁਤ ਵਧੀਆ ਸਮਝੀ ਗਈ ਹੈ, ਪਰ 'ਪੂਰਾ' ਕੁਦਰਤੀ ਭਾਸ਼ਾ ਪ੍ਰੋਸੈਸਿੰਗ ਕਰਨਾ ਖਾਸ ਕਰਕੇ ਇੱਕ ਵਾਕ ਦੀ ਮਾਇਨੇ ਨੂੰ ਸਮਝਣ ਵਿੱਚ ਕਾਫੀ ਚੁਣੌਤੀ ਭਰਾ ਕੰਮ ਹੈ। ਇਹ ਖਾਸ ਕਰਕੇ ਹਾਸੇ ਨੂੰ ਸਮਝਣ ਜਾਂ ਵਿਅੰਗ ਨੂੰ ਪਛਾਣਣ ਵਿੱਚ ਮਸ਼ਕਲ ਹੈ। -ਇਸ ਸਮੇਂ, ਤੁਹਾਨੂੰ ਸਕੂਲ ਦੀਆਂ ਕਲਾਸਾਂ ਯਾਦ ਹੋ ਸਕਦੀਆਂ ਹਨ ਜਿੱਥੇ ਅਧਿਆਪਕ ਵਾਕ ਵਿੱਚ ਗ੍ਰੈਮਰ ਦੇ ਹਿੱਸਿਆਂ ਨੂੰ ਕਵਰ ਕਰਦੇ ਸਨ। ਕੁਝ ਦੇਸ਼ਾਂ ਵਿੱਚ, ਵਿਦਿਆਰਥੀਆਂ ਨੂੰ ਗ੍ਰੈਮਰ ਅਤੇ ਲਿੰਗਵਿਸਟਿਕਸ ਇੱਕ ਸਮਰਪਿਤ ਵਿਸ਼ੇ ਵਜੋਂ ਪੜ੍ਹਾਈ ਜਾਂਦੀ ਹੈ, ਪਰ ਕਈ ਵਿੱਚ, ਇਹ ਵਿਸ਼ੇ ਭਾਸ਼ਾ ਸਿੱਖਣ ਦੇ ਹਿੱਸੇ ਵਜੋਂ ਸ਼ਾਮਲ ਕੀਤੇ ਜਾਂਦੇ ਹਨ: ਜਾਂ ਤਾਂ ਤੁਹਾਡੀ ਪਹਿਲੀ ਭਾਸ਼ਾ ਪ੍ਰਾਇਮਰੀ ਸਕੂਲ ਵਿੱਚ (ਪੜ੍ਹਨ ਅਤੇ ਲਿਖਣ ਸਿੱਖਣ) ਅਤੇ ਸ਼ਾਇਦ ਦੂਜੀ ਭਾਸ਼ਾ ਪੋਸਟ-ਪ੍ਰਾਇਮਰੀ ਜਾਂ ਹਾਈ ਸਕੂਲ ਵਿੱਚ। ਚਿੰਤਾ ਨਾ ਕਰੋ ਜੇ ਤੁਸੀਂ ਨਾਉਨ ਨੂੰ ਵਰਬ ਜਾਂ ਐਡਵਰਬ ਨੂੰ ਐਡਜੈਕਟਿਵ ਤੋਂ ਵੱਖ ਕਰਨ ਵਿੱਚ ਮਾਹਰ ਨਹੀਂ ਹੋ। +ਇਸ ਸਥਿਤੀ 'ਚ, ਤੁਸੀਂ ਸਕੂਲ ਦੇ ਕਲਾਸਾਂ ਨੂੰ ਯਾਦ ਕਰ ਰਹੇ ਹੋ ਜਿੱਥੇ ਅਧਿਆਪਕ ਵਾਕ ਦੇ ਹਿੱਸਿਆਂ ਬਾਰੇ ਪੜ੍ਹਾਉਂਦੇ ਸਨ। ਕੁਝ ਦੇਸ਼ਾਂ ਵਿੱਚ ਵਿਦਿਆਰਥੀਆਂ ਨੂੰ ਵਿਆਕਰਣ ਅਤੇ ਲਿੰਗਵਿਸਟਿਕਸ ਇੱਕ ਵੱਖਰਾ ਵਿਸ਼ਾ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ, ਪਰ ਕਈ ਥਾਵਾਂ ਤੇ ਇਹ ਵਿਸ਼ੇ ਇੱਕ ਭਾਸ਼ਾ ਸਿੱਖਣ ਦਾ ਹਿੱਸਾ ਹੁੰਦੇ ਹਨ: ਚਾਹੇ ਤੁਹਾਡੀ ਪਹਿਲੀ ਭਾਸ਼ਾ ਪ੍ਰਾਇਮਰੀ ਸਕੂਲ ਵਿੱਚ ਹੋਵੇ (ਪੜ੍ਹਨਾ ਅਤੇ ਲਿਖਣਾ ਸਿੱਖਣਾ) ਜਾਂ ਦੂਜੀ ਭਾਸ਼ਾ ਪੋਸਟ-ਪ੍ਰਾਇਮਰੀ ਜਾਂ ਹਾਈ ਸਕੂਲ ਵਿੱਚ। ਜੇ ਤੁਸੀਂ ਨਾਂਵ, ਕਿਰਿਆ ਜਾਂ ਕ੍ਰਿਆ ਵਿਸ਼ੇਸ਼ਣ ਵਿੱਚ ਫਰਕ ਜਾਣਣ ਵਿੱਚ ਮਾਹਰ ਨਹੀਂ ਹੋ, ਤਾਂ ਚਿੰਤਾ ਨਾ ਕਰੋ! -ਜੇਕਰ ਤੁਸੀਂ *ਸਧਾਰਨ ਵਰਤਮਾਨ* ਅਤੇ *ਵਰਤਮਾਨ ਪ੍ਰਗਤੀਸ਼ੀਲ* ਦੇ ਫਰਕ ਨਾਲ ਸੰਘਰਸ਼ ਕਰਦੇ ਹੋ, ਤਾਂ ਤੁਸੀਂ ਇਕੱਲੇ ਨਹੀਂ ਹੋ। ਇਹ ਬਹੁਤ ਸਾਰੇ ਲੋਕਾਂ ਲਈ ਇੱਕ ਚੁਣੌਤੀਪੂਰਨ ਗੱਲ ਹੈ, ਇੱਥੇ ਤੱਕ ਕਿ ਕਿਸੇ ਭਾਸ਼ਾ ਦੇ ਮੂਲ ਬੋਲਣ ਵਾਲਿਆਂ ਲਈ ਵੀ। ਚੰਗੀ ਖ਼ਬਰ ਇਹ ਹੈ ਕਿ ਕਮਪਿਊਟਰ ਅਧਿਕਾਰਤ ਨਿਯਮਾਂ ਨੂੰ ਲਾਗੂ ਕਰਨ ਵਿੱਚ ਬਹੁਤ ਵਧੀਆ ਹਨ, ਅਤੇ ਤੁਸੀਂ ਕੋਡ ਲਿਖਣ ਸਿੱਖੋਗੇ ਜੋ ਇੱਕ ਵਾਕ ਨੂੰ *ਪਾਰਸ* ਕਰ ਸਕਦਾ ਹੈ ਜਿਵੇਂ ਕਿ ਇੱਕ ਮਨੁੱਖ। ਵੱਡੀ ਚੁਣੌਤੀ ਜੋ ਤੁਸੀਂ ਬਾਅਦ ਵਿੱਚ ਜਾਂਚੋਗੇ ਉਹ ਹੈ ਇੱਕ ਵਾਕ ਦੇ *ਅਰਥ* ਅਤੇ *ਭਾਵਨਾ* ਨੂੰ ਸਮਝਣਾ। +ਜੇ ਤੁਹਾਨੂੰ *ਸਰਲ ਵਰਤਮਾਨ* ਅਤੇ *ਵਰਤਮਾਨ ਪ੍ਰਗਟਿਵ* ਵਿੱਚ ਫਰਕ ਸਮਝਣ ਵਿੱਚ ਮੁਸ਼ਕਲ ਹੈ, ਤਾਂ ਤੁਸੀਂ ਇਕੱਲੇ ਨਹੀਂ ਹੋ। ਇਹ ਕਈ ਲੋਕਾਂ ਲਈ ਚੁਣੌਤੀ ਹੈ, ਇੱਥੋਂ ਤੱਕ ਕਿ ਮੂਲ ਬੋਲਣ ਵਾਲਿਆਂ ਲਈ ਵੀ। ਚੰਗੀ ਗੱਲ ਇਹ ਹੈ ਕਿ ਕੰਪਿਊਟਰ ਫਾਰਮਲ ਨਿਯਮਾਂ ਨੂੰ ਬਹੁਤ ਵਧੀਆ ਲਾਗੂ ਕਰਦੇ ਹਨ, ਅਤੇ ਤੁਸੀਂ ਕੋਡ ਲਿਖਣਾ ਸਿੱਖੋਗੇ ਜੋ ਇੱਕ ਮਨੁੱਖ ਦੀ ਤਰ੍ਹਾਂ ਵਾਕ ਦਾ *ਪਾਰਸ* ਕਰ ਸਕਦਾ ਹੈ। ਵੱਡੀ ਚੁਣੌਤੀ ਜੋ ਤੁਸੀਂ ਬਾਅਦ ਵਿੱਚ ਵੇਖੋਗੇ ਉਹ ਹੈ ਵਾਕ ਦਾ *ਅਰਥ* ਅਤੇ *ਭਾਵਨਾ* ਸਮਝਣਾ। -## ਪੂਰਵ ਸ਼ਰਤਾਂ +## ਮੂਲ ਜ਼ਰੂਰਤਾਂ -ਇਸ ਪਾਠ ਲਈ, ਮੁੱਖ ਪੂਰਵ ਸ਼ਰਤ ਇਸ ਪਾਠ ਦੀ ਭਾਸ਼ਾ ਨੂੰ ਪੜ੍ਹਨ ਅਤੇ ਸਮਝਣ ਦੀ ਯੋਗਤਾ ਹੈ। ਕੋਈ ਗਣਿਤ ਸਮੱਸਿਆਵਾਂ ਜਾਂ ਸਮੀਕਰਨ ਹੱਲ ਕਰਨ ਲਈ ਨਹੀਂ ਹਨ। ਹਾਲਾਂਕਿ ਮੂਲ ਲੇਖਕ ਨੇ ਇਹ ਪਾਠ ਅੰਗਰੇਜ਼ੀ ਵਿੱਚ ਲਿਖਿਆ ਹੈ, ਇਹ ਹੋਰ ਭਾਸ਼ਾਵਾਂ ਵਿੱਚ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ, ਇਸ ਲਈ ਤੁਸੀਂ ਇੱਕ ਅਨੁਵਾਦ ਪੜ੍ਹ ਰਹੇ ਹੋ ਸਕਦੇ ਹੋ। ਕੁਝ ਉਦਾਹਰਨ ਹਨ ਜਿੱਥੇ ਕਈ ਵੱਖ-ਵੱਖ ਭਾਸ਼ਾਵਾਂ ਵਰਤੀਆਂ ਗਈਆਂ ਹਨ (ਵੱਖ-ਵੱਖ ਭਾਸ਼ਾਵਾਂ ਦੇ ਗ੍ਰੈਮਰ ਨਿਯਮਾਂ ਦੀ ਤੁਲਨਾ ਕਰਨ ਲਈ)। ਇਹ *ਅਨੁਵਾਦ ਨਹੀਂ ਕੀਤੇ ਗਏ*, ਪਰ ਵਿਆਖਿਆਤਮਕ ਟੈਕਸਟ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ, ਇਸ ਲਈ ਅਰਥ ਸਪਸ਼ਟ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ। +ਇਸ ਪਾਠ ਦੇ ਲਈ, ਮੁੱਖ ਮੂਲ ਜ਼ਰੂਰਤ ਇਸ ਪਾਠ ਦੀ ਭਾਸ਼ਾ ਨੂੰ ਪੜ੍ਹਨ ਅਤੇ ਸਮਝਣ ਦੀ ਸਮਰੱਥਾ ਹੈ। ਕੋਈ ਗਣਿਤ ਸਮੱਸਿਆਵਾਂ ਜਾਂ ਸਮੀਕਰਨਾਂ ਹੱਲ ਕਰਨ ਵੇਲੇ ਨਹੀਂ ਹਨ। ਜਦ ਕਿ ਮੂਲ ਲੇਖਕ ਨੇ ਅੰਗਰੇਜ਼ੀ ਵਿੱਚ ਇਹ ਪਾਠ ਲਿਖਿਆ ਸੀ, ਇਹ ਦੂਜੀਆਂ ਭਾਸ਼ਾਵਾਂ ਵਿੱਚ ਵੀ ਅਨੁਵਾਦਿਤ ਹੈ, ਤਾਂ ਤੁਸੀਂ ਅਨੁਵਾਦ ਪੜ੍ਹ ਰਹੇ ਹੋ ਸਕਦੇ ਹੋ। ਕੁਝ ਉਦਾਹਰਨਾਂ ਵਿੱਚ ਕਈ ਵੱਖ-ਵੱਖ ਭਾਸ਼ਾਵਾਂ ਵਰਤੀ ਗਈਆਂ ਹਨ (ਤੁਲਨਾ ਕਰਨ ਲਈ ਵੱਖ-ਵੱਖ ਭਾਸ਼ਾਵਾਂ ਦੇ ਵਿਆਕਰਣ ਨਿਯਮਾਂ ਦੀ)। ਇਹ *ਅਨੁਵਾਦਿਤ ਨਹੀਂ* ਕੀਤੀਆਂ ਗਈਆਂ, ਪਰ ਵਿਆਖਿਆਤਮਕ ਪਾਠ ਹੈ, ਇਸ ਲਈ ਅਰਥ ਸਪਸ਼ਟ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ। -ਕੋਡਿੰਗ ਟਾਸਕਾਂ ਲਈ, ਤੁਸੀਂ Python ਵਰਤੋਗੇ ਅਤੇ ਉਦਾਹਰਨ Python 3.8 ਵਰਤ ਰਹੇ ਹਨ। +ਕੋਡਿੰਗ ਟਾਸਕ ਲਈ, ਤੁਸੀਂ ਪਾਇਥਨ ਵਰਤੋਂਗੇ ਅਤੇ ਉਦਾਹਰਨਾਂ ਵਿੱਚ ਪਾਇਥਨ 3.8 ਵਰਤ ਰਿਹਾ ਹੈ। -ਇਸ ਭਾਗ ਵਿੱਚ, ਤੁਹਾਨੂੰ ਲੋੜ ਹੋਵੇਗੀ ਅਤੇ ਤੁਸੀਂ ਵਰਤੋਗੇ: +ਇਸ ਭਾਗ ਵਿੱਚ, ਤੁਹਾਨੂੰ ਇਹ ਜ਼ਰੂਰਤ ਹੋਵੇਗੀ ਅਤੇ ਵਰਤੋਂ ਕਰਨੀ ਹੈ: -- **Python 3 ਸਮਝ**। Python 3 ਵਿੱਚ ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾ ਦੀ ਸਮਝ, ਇਹ ਪਾਠ ਇਨਪੁਟ, ਲੂਪ, ਫਾਈਲ ਪੜ੍ਹਨਾ, ਐਰੇ ਵਰਤਦਾ ਹੈ। -- **Visual Studio Code + ਐਕਸਟੈਂਸ਼ਨ**। ਅਸੀਂ Visual Studio Code ਅਤੇ ਇਸਦੇ Python ਐਕਸਟੈਂਸ਼ਨ ਨੂੰ ਵਰਤਾਂਗੇ। ਤੁਸੀਂ ਆਪਣੀ ਪਸੰਦ ਦੇ Python IDE ਨੂੰ ਵੀ ਵਰਤ ਸਕਦੇ ਹੋ। -- **TextBlob**। [TextBlob](https://github.com/sloria/TextBlob) Python ਲਈ ਇੱਕ ਸਰਲ ਟੈਕਸਟ ਪ੍ਰੋਸੈਸਿੰਗ ਲਾਇਬ੍ਰੇਰੀ ਹੈ। ਇਸ ਨੂੰ ਆਪਣੇ ਸਿਸਟਮ 'ਤੇ ਇੰਸਟਾਲ ਕਰਨ ਲਈ TextBlob ਸਾਈਟ 'ਤੇ ਦਿੱਤੀਆਂ ਹਦਾਇਤਾਂ ਦੀ ਪਾਲਣਾ ਕਰੋ (ਕੋਰਪੋਰਾ ਨੂੰ ਵੀ ਇੰਸਟਾਲ ਕਰੋ, ਜਿਵੇਂ ਕਿ ਹੇਠਾਂ ਦਿਖਾਇਆ ਗਿਆ ਹੈ): +- **ਪਾਇਥਨ 3 ਸਮਝ ਬੁਝ**। ਪਾਇਥਨ 3 ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾ ਦੀ ਸਮਝ, ਇਸ ਪਾਠ ਵਿੱਚ ਇੰਜਪੁੱਟ, ਲੂਪ, ਫਾਈਲ ਪੜ੍ਹਨਾ, ਐਰੇਜ਼ ਵਰਤੇ ਗਏ ਹਨ। +- **ਵਿਜ਼ੂਅਲ ਸਟੂਡੀਓ ਕੋਡ + ਵਧਾਉਣ**। ਅਸੀਂ ਵਿਜ਼ੂਅਲ ਸਟੂਡੀਓ ਕੋਡ ਅਤੇ ਇਸ ਦਾ ਪਾਇਥਨ ਐਕਸਟੈਂਸ਼ਨ ਵਰਤਾਂਗੇ। ਤੁਸੀਂ ਆਪਣਾ ਪਸੰਦੀਦਾ ਪਾਇਥਨ ਆਈਡੀਈ ਵੀ ਵਰਤ ਸਕਦੇ ਹੋ। +- **TextBlob**। [TextBlob](https://github.com/sloria/TextBlob) ਪਾਇਥਨ ਲਈ ਇੱਕ ਸਰਲ ਟੈਕਸਟ ਪ੍ਰੋਸੈਸਿੰਗ ਲਾਈਬ੍ਰੇਰੀ ਹੈ। TextBlob ਸਾਈਟ ਤੇ ਦਿੱਤੇ ਨਿਰਦੇਸ਼ਾਂ ਦੀ ਪਾਲਣਾ ਕਰਕੇ ਇਸ ਨੂੰ ਆਪਣੇ ਸਿਸਟਮ 'ਤੇ ਇੰਸਟਾਲ ਕਰੋ (ਕੋਪੋਰਾ ਵੀ ਇੰਸਟਾਲ ਕਰੋ, ਹੇਠਾਂ ਦਿਖਾਏ ਗਏ ਤਰੀਕੇ ਨਾਲ): ```bash pip install -U textblob python -m textblob.download_corpora ``` -> 💡 ਟਿਪ: ਤੁਸੀਂ Python ਨੂੰ ਸਿੱਧੇ VS Code ਵਾਤਾਵਰਣਾਂ ਵਿੱਚ ਚਲਾ ਸਕਦੇ ਹੋ। ਹੋਰ ਜਾਣਕਾਰੀ ਲਈ [ਡੌਕਸ](https://code.visualstudio.com/docs/languages/python?WT.mc_id=academic-77952-leestott) ਚੈੱਕ ਕਰੋ। +> 💡 ਸੁਝਾਅ: ਤੁਸੀਂ VS ਕੋਡ ਵਾਤਾਵਰਣਾਂ ਵਿੱਚ ਸਿੱਧਾ ਪਾਇਥਨ ਚਲਾ ਸਕਦੇ ਹੋ। ਹੋਰ ਜਾਣਕਾਰੀ ਲਈ [ਡੌਕਸ](https://code.visualstudio.com/docs/languages/python?WT.mc_id=academic-77952-leestott) ਵੇਖੋ। -## ਮਸ਼ੀਨਾਂ ਨਾਲ ਗੱਲਬਾਤ ਕਰਨਾ +## ਮਸ਼ੀਨਾਂ ਨਾਲ ਗੱਲ ਕਰਨਾ -ਕਮਪਿਊਟਰਾਂ ਨੂੰ ਮਨੁੱਖੀ ਭਾਸ਼ਾ ਨੂੰ ਸਮਝਣ ਲਈ ਬਣਾਉਣ ਦੀ ਇਤਿਹਾਸ ਕਈ ਦਹਾਕਿਆਂ ਪੁਰਾਣਾ ਹੈ, ਅਤੇ ਸਭ ਤੋਂ ਪਹਿਲੇ ਵਿਗਿਆਨੀਆਂ ਵਿੱਚੋਂ ਇੱਕ ਜਿਸ ਨੇ ਨੈਚਰਲ ਲੈਂਗਵੇਜ ਪ੍ਰੋਸੈਸਿੰਗ ਬਾਰੇ ਸੋਚਿਆ ਸੀ ਉਹ *Alan Turing* ਸੀ। +ਮਸ਼ੀਨਾਂ ਨੂੰ ਮਾਨਵ ਭਾਸ਼ਾ ਸਮਝਣਯੋਗ ਬਣਾਉਣ ਦਾ ਇਤਿਹਾਸ ਕਈ ਦਹਾਕਿਆਂ ਪੁਰਾਣਾ ਹੈ, ਅਤੇ ਕੁਦਰਤੀ ਭਾਸ਼ਾ ਪ੍ਰੋਸੈਸਿੰਗ ਦਾ ਵਿਚਾਰ ਸਭ ਤੋਂ ਪਹਿਲਾਂ *ਅਲਨ ਟੂਰਿੰਗ* ਦੇ ਮਨ ਵਿੱਚ ਆਇਆ ਸੀ। -### 'ਟਿਊਰਿੰਗ ਟੈਸਟ' +### 'ਟੂਰਿੰਗ ਟੈਸਟ' -ਜਦੋਂ ਟਿਊਰਿੰਗ 1950 ਦੇ ਦਹਾਕੇ ਵਿੱਚ *ਕ੍ਰਿਤਰਿਮ ਬੁੱਧੀ* ਬਾਰੇ ਖੋਜ ਕਰ ਰਿਹਾ ਸੀ, ਉਸਨੇ ਸੋਚਿਆ ਕਿ ਕੀ ਇੱਕ ਗੱਲਬਾਤੀ ਟੈਸਟ ਇੱਕ ਮਨੁੱਖ ਅਤੇ ਕਮਪਿਊਟਰ ਨੂੰ ਦਿੱਤਾ ਜਾ ਸਕਦਾ ਹੈ (ਟਾਈਪ ਕੀਤੇ ਸੰਚਾਰ ਦੁਆਰਾ) ਜਿੱਥੇ ਗੱਲਬਾਤ ਵਿੱਚ ਮਨੁੱਖ ਇਹ ਨਿਸ਼ਚਿਤ ਨਹੀਂ ਕਰ ਸਕਦਾ ਕਿ ਉਹ ਦੂਜੇ ਮਨੁੱਖ ਜਾਂ ਕਮਪਿਊਟਰ ਨਾਲ ਗੱਲਬਾਤ ਕਰ ਰਿਹਾ ਹੈ। +ਜਦ ਟੂਰਿੰਗ 1950 ਦੇ ਦਹਾਕੇ ਵਿੱਚ *ਕ੍ਰਿਤ੍ਰਿਮ ਬੁੱਧੀ* 'ਤੇ ਅਧਿਐਨ ਕਰ ਰਹੇ ਸਨ, ਤਾਂ ਉਹ ਇਹ ਸੋਚ ਰਹੇ ਸਨ ਕੀ ਕੋਈ ਗੱਲਬਾਤੀ ਪ੍ਰੀਖਿਆ ਮਨੁੱਖ ਅਤੇ ਕੰਪਿਊਟਰ ਨੂੰ ਦਿੱਤੀ ਜਾ ਸਕਦੀ ਹੈ (ਟਾਈਪ ਕੀਤੀ ਜਾਣ ਵਾਲੀ ਪੱਤਰਚਾਰਾ ਦੁਆਰਾ) ਜਿੱਥੇ ਗੱਲਬਾਤੀ ਮਨੁੱਖ ਨੂੰ ਇਹ ਪਤਾ ਨਹੀਂ ਕਿ ਉਹ ਕਿਸੇ ਹੋਰ ਮਨੁੱਖ ਨਾਲ ਗੱਲ ਕਰ ਰਿਹਾ ਹੈ ਜਾਂ ਕੰਪਿਊਟਰ ਨਾਲ। -ਜੇਕਰ ਇੱਕ ਨਿਰਧਾਰਿਤ ਗੱਲਬਾਤ ਦੇ ਸਮੇਂ ਬਾਅਦ, ਮਨੁੱਖ ਇਹ ਨਿਰਧਾਰਿਤ ਨਹੀਂ ਕਰ ਸਕਦਾ ਕਿ ਜਵਾਬ ਕਮਪਿਊਟਰ ਤੋਂ ਆ ਰਹੇ ਹਨ ਜਾਂ ਨਹੀਂ, ਤਾਂ ਕੀ ਕਮਪਿਊਟਰ ਨੂੰ *ਸੋਚਣ ਵਾਲਾ* ਕਿਹਾ ਜਾ ਸਕਦਾ ਹੈ? +ਜੇ, ਇੱਕ ਨਿਰਧਾਰਤ ਸਮੇਂ ਬਾਅਦ, ਮਨੁੱਖ ਇਹ ਨਿਰਧਾਰਿਤ ਨਾ ਕਰ ਸਕੇ ਕਿ ਜਵਾਬ ਕੰਪਿਊਟਰ ਵੱਲੋਂ ਆ ਰਹੇ ਹਨ ਜਾਂ ਨਹੀਂ, ਤਾਂ ਕੀ ਕੰਪਿਊਟਰ ਨੂੰ *ਸੋਚਣ ਵਾਲਾ* ਕਿਹਾ ਜਾ ਸਕਦਾ ਹੈ? -### ਪ੍ਰੇਰਣਾ - 'ਇਮੀਟੇਸ਼ਨ ਗੇਮ' +### ਪ੍ਰੇਰਣਾ - 'ਦ ਇਮੀਟੇਸ਼ਨ ਗੇਮ' -ਇਸ ਦਾ ਵਿਚਾਰ ਇੱਕ ਪਾਰਟੀ ਗੇਮ *ਇਮੀਟੇਸ਼ਨ ਗੇਮ* ਤੋਂ ਆਇਆ ਜਿੱਥੇ ਇੱਕ ਪੁੱਛਗਿੱਛ ਕਰਨ ਵਾਲਾ ਇੱਕ ਕਮਰੇ ਵਿੱਚ ਅਕੇਲਾ ਹੁੰਦਾ ਹੈ ਅਤੇ ਦੂਜੇ ਕਮਰੇ ਵਿੱਚ ਮੌਜੂਦ ਦੋ ਲੋਕਾਂ ਵਿੱਚੋਂ ਕੌਣ ਪੁਰਸ਼ ਅਤੇ ਕੌਣ ਮਹਿਲਾ ਹੈ, ਇਹ ਨਿਰਧਾਰਿਤ ਕਰਨ ਲਈ ਕਹਿੰਦਾ ਹੈ। ਪੁੱਛਗਿੱਛ ਕਰਨ ਵਾਲਾ ਨੋਟ ਭੇਜ ਸਕਦਾ ਹੈ, ਅਤੇ ਉਸਨੂੰ ਅਜਿਹੇ ਸਵਾਲਾਂ ਬਾਰੇ ਸੋਚਣਾ ਪੈਂਦਾ ਹੈ ਜਿੱਥੇ ਲਿਖਤ ਜਵਾਬ ਉਸਨੂੰ ਰਹੱਸਮਈ ਵਿਅਕਤੀ ਦੇ ਲਿੰਗ ਦਾ ਪਤਾ ਲਗਾਉਣ ਵਿੱਚ ਸਹਾਇਕ ਹੁੰਦੇ ਹਨ। ਬੇਸ਼ਕ, ਦੂਜੇ ਕਮਰੇ ਵਿੱਚ ਖਿਡਾਰੀ ਪੁੱਛਗਿੱਛ ਕਰਨ ਵਾਲੇ ਨੂੰ ਗੁੰਮਰਾਹ ਕਰਨ ਜਾਂ ਭੁਲਾਉਣ ਲਈ ਸਵਾਲਾਂ ਦੇ ਜਵਾਬ ਦੇਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਹਨ, ਜਦੋਂ ਕਿ ਸੱਚਾਈ ਨਾਲ ਜਵਾਬ ਦੇਣ ਦੀ ਦਿਖਾਵਟ ਕਰਦੇ ਹਨ। +ਇਸ ਦਾ ਖ਼ਿਆਲ ਇੱਕ ਪਾਰਟੀ ਖੇਡ ਤੋਂ ਆਇਆ ਜਿਸਦਾ ਨਾਮ *ਦ ਇਮੀਟੇਸ਼ਨ ਗੇਮ* ਹੈ ਜਿੱਥੇ ਇੱਕ ਪੁੱਛਤਾਛ ਕਰਨ ਵਾਲਾ (ਇੰਟਰੋਗੇਟਰ) ਇਕ ਕਮਰੇ ਵਿੱਚ ਅਕੇਲਾ ਹੁੰਦਾ ਹੈ ਅਤੇ ਉਸਦਾ ਕੰਮ ਹੋਰ ਦੋ ਲੋਕਾਂ ਵਿੱਚੋਂ ਕਿਸ ਦੇ ਮਰਦ ਅਤੇ ਕਿਸ ਦੀ ਔਰਤ ਹੈ ਇਹ ਜਾਣਣਾ ਹੁੰਦਾ ਹੈ। ਇੰਟਰੋਗੇਟਰ ਨੋਟ ਭੇਜ ਸਕਦਾ ਹੈ ਅਤੇ ਆਪਣੇ ਸਵਾਲਾਂ ਨੂੰ ਇਸ ਤਰ੍ਹਾਂ ਸੋਚਣਾ ਪੈਂਦਾ ਹੈ ਕਿ ਲਿਖਤ ਜਵਾਬ ਮਿਸਟਰੀ ਵਿਅਕਤੀ ਦੀ ਲਿੰਗ ਦਰਸਾਉਣ। ਹੋਰ ਕਮਰੇ ਵਿੱਚ ਖਿਡਾਰੀ ਇੰਟਰੋਗੇਟਰ ਨੂੰ ਧੋਖਾ ਦੇਣ ਲਈ ਸਵਾਲਾਂ ਦੇ ਜਵਾਬ ਧੋਖਾ ਦੇਣ ਵਾਲੇ ਜਾਂ ਉਲਝਾਣ ਵਾਲੇ ਤਰੀਕੇ ਨਾਲ ਦਿੰਦੇ ਹਨ, ਪਰ ਸਾਥ ਹੀ ਈਮਾਨਦਾਰੀ ਨਾਲ ਜਵਾਬ ਦੇਣ ਦੀ ਛਾਪ ਵੀ ਦਿੰਦੇ ਹਨ। -### ਐਲਾਈਜ਼ਾ ਦਾ ਵਿਕਾਸ +### ਇਲਾਈਜਾ ਦਾ ਵਿਕਾਸ -1960 ਦੇ ਦਹਾਕੇ ਵਿੱਚ MIT ਦੇ ਵਿਗਿਆਨੀ *Joseph Weizenbaum* ਨੇ [*Eliza*](https://wikipedia.org/wiki/ELIZA) ਨੂੰ ਵਿਕਸਿਤ ਕੀਤਾ, ਇੱਕ ਕਮਪਿਊਟਰ 'ਥੈਰਾਪਿਸਟ' ਜੋ ਮਨੁੱਖ ਨੂੰ ਸਵਾਲ ਪੁੱਛਦਾ ਅਤੇ ਉਨ੍ਹਾਂ ਦੇ ਜਵਾਬ ਨੂੰ ਸਮਝਣ ਦੀ ਦਿਖਾਵਟ ਕਰਦਾ। ਹਾਲਾਂਕਿ, ਜਦੋਂ ਕਿ ਐਲਾਈਜ਼ਾ ਇੱਕ ਵਾਕ ਨੂੰ ਪਾਰਸ ਕਰ ਸਕਦਾ ਸੀ ਅਤੇ ਕੁਝ ਗ੍ਰੈਮੈਟਿਕਲ ਬਣਤਰਾਂ ਅਤੇ ਕੀਵਰਡਾਂ ਦੀ ਪਛਾਣ ਕਰ ਸਕਦਾ ਸੀ ਤਾਂ ਜੋ ਇੱਕ ਵਾਜਬ ਜਵਾਬ ਦੇ ਸਕੇ, ਇਸਨੂੰ *ਵਾਕ ਨੂੰ ਸਮਝਣ ਵਾਲਾ* ਨਹੀਂ ਕਿਹਾ ਜਾ ਸਕਦਾ। ਜੇਕਰ ਐਲਾਈਜ਼ਾ ਨੂੰ ਇੱਕ ਵਾਕ ਦਿੱਤਾ ਜਾਂਦਾ ਜਿਸਦਾ ਫਾਰਮੈਟ "**ਮੈਂ ਹਾਂ** ਦੁਖੀ" ਹੁੰਦਾ, ਤਾਂ ਇਹ ਵਾਕ ਦੇ ਸ਼ਬਦਾਂ ਨੂੰ ਦੁਹਰਾਉਣ ਅਤੇ ਬਦਲਣ ਲਈ ਜਵਾਬ ਬਣਾਉਂਦਾ "ਤੁਹਾਨੂੰ **ਕਿੰਨਾ ਸਮਾਂ** ਦੁਖੀ ਹੋਇਆ ਹੈ?"। +1960 ਦੇ ਦਹਾਕੇ ਵਿੱਚ MIT ਦੇ ਇੱਕ ਵਿਗਿਆਨੀ *ਜੋਸਫ ਵੈਜ਼ਨਬਾਊਮ* ਨੇ [*ਇਲਾਈਜਾ*](https://wikipedia.org/wiki/ELIZA) ਬਣਾਇਆ, ਜੋ ਇੱਕ ਕੰਪਿਊਟਰ 'ਥੈਰੇਪਿਸਟ' ਸੀ ਜੋ ਮਨੁੱਖ ਤੋਂ ਸਵਾਲ ਪੁੱਛਦਾ ਅਤੇ ਉਨ੍ਹਾਂ ਦੇ ਜਵਾਬਾਂ ਨੂੰ ਸਮਝਣ ਦੀ ਛਾਪ ਦਿੰਦਾ। ਹਾਲਾਂਕਿ, ਜਦ ਕਿ ਇਲਾਈਜਾ ਇੱਕ ਵਾਕ ਨੂੰ ਪਾਰਸ ਕਰ ਸਕਦੀ ਸੀ ਅਤੇ ਕੁਝ ਵਿਆਕਰਣਕ ਸੰਰਚਨਾਂ ਅਤੇ ਕੀਵਰਡਜ਼ ਨੂੰ ਪਛਾਣ ਸਕਦੀ ਸੀ ਤਾਂ ਕਿ ਉਚਿਤ ਜਵਾਬ ਦੇ ਸਕੇ, ਪਰ ਇਹ ਕਹਿ ਨਹੀਂ ਸਕੀਤੀ ਸੀ ਕਿ ਇਹ ਵਾਕ ਨੂੰ *ਸਮਝਦੀ* ਹੈ। ਜੇ ਇਲਾਈਜਾ ਨੂੰ ਇੱਕ ਵਾਕ ਦਿੱਤਾ ਗਿਆ ਜੋ "**ਮੈਂ** ਉਦਾਸ ਹਾਂ" ਫਾਰਮੈਟ ਵਿੱਚ ਸੀ ਤਾਂ ਇਹ ਸ਼ਬਦ ਬਦਲ ਕੇ ਜਵਾਬ "ਤੁਸੀਂ ਕਿੰਨੇ ਸਮੇਂ ਤੋਂ ਉਦਾਸ ਹੋ?" ਦੇ ਸਕਦੀ ਸੀ। -ਇਸ ਨੇ ਇਹ ਦਿਖਾਵਟ ਦਿੱਤੀ ਕਿ ਐਲਾਈਜ਼ਾ ਨੇ ਬਿਆਨ ਨੂੰ ਸਮਝਿਆ ਅਤੇ ਇੱਕ ਅਗਲੇ ਸਵਾਲ ਨੂੰ ਪੁੱਛਿਆ, ਜਦੋਂ ਕਿ ਅਸਲ ਵਿੱਚ, ਇਹ ਕਿਰਿਆ ਦਾ ਕਾਲ ਅਤੇ ਕੁਝ ਸ਼ਬਦ ਸ਼ਾਮਲ ਕਰ ਰਿਹਾ ਸੀ। ਜੇਕਰ ਐਲਾਈਜ਼ਾ ਕਿਸੇ ਕੀਵਰਡ ਦੀ ਪਛਾਣ ਨਹੀਂ ਕਰ ਸਕਦਾ ਜਿਸਦਾ ਇਸਦੇ ਕੋਲ ਜਵਾਬ ਹੁੰਦਾ, ਤਾਂ ਇਹ ਬਦਲੇ ਵਿੱਚ ਇੱਕ ਰੈਂਡਮ ਜਵਾਬ ਦਿੰਦਾ ਜੋ ਕਈ ਵੱਖ-ਵੱਖ ਬਿਆਨਾਂ ਲਈ ਲਾਗੂ ਹੋ ਸਕਦਾ ਹੈ। ਐਲਾਈਜ਼ਾ ਨੂੰ ਆਸਾਨੀ ਨਾਲ ਧੋਖਾ ਦਿੱਤਾ ਜਾ ਸਕਦਾ ਸੀ, ਉਦਾਹਰਨ ਲਈ ਜੇਕਰ ਇੱਕ ਯੂਜ਼ਰ ਲਿਖਦਾ "**ਤੁਸੀਂ** ਇੱਕ ਸਾਈਕਲ ਹੋ" ਤਾਂ ਇਹ ਜਵਾਬ ਦੇ ਸਕਦਾ "ਮੈਂ **ਕਿੰਨਾ ਸਮਾਂ** ਸਾਈਕਲ ਰਿਹਾ ਹਾਂ?", ਇਸਦੇ ਬਦਲੇ ਵਿੱਚ ਇੱਕ ਹੋਰ ਵਾਜਬ ਜਵਾਬ। +ਇਸ ਨਾਲ ਇਹ ਛਾਪ ਪੈਦੀ ਸੀ ਕਿ ਇਲਾਈਜਾ ਬਿਆਨ ਨੂੰ ਸਮਝਦੀ ਹੈ ਅਤੇ ਫਾਲੋ-ਅਪ ਸਵਾਲ ਪੁੱਛ ਰਹੀ ਹੈ, ਪਰ ਹਕੀਕਤ ਵਿੱਚ ਇਹ ਟੈਨਸ ਬਦਲ ਰਹੀ ਸੀ ਅਤੇ ਕੁਝ ਸ਼ਬਦ ਜੋੜ ਰਹੀ ਸੀ। ਜੇ ਇਲਾਈਜਾ ਕਿਸੇ ਕੀਵਰਡ ਨੂੰ ਨਹੀਂ ਪਛਾਣਦੀ ਜਿਸਦਾ ਜਵਾਬ ਉਸ ਕੋਲ ਸੀ, ਤਾਂ ਇਹ ਕਿਸੇ ਵੀ ਵੱਖ-ਵੱਖ ਬਿਆਨਾਂ ਲਈ ਲਾਗੂ ਹੋ ਸਕਦਾ ਇੱਕ ਆਕਸਮੀਕ ਜਵਾਬ ਦਿੰਦੀ ਸੀ। ਇਲਾਈਜਾ ਨੂੰ ਆਸਾਨੀ ਨਾਲ ਧੋਖਾ ਦਿੱਤਾ ਜਾ ਸਕਦਾ ਸੀ, ਉਦਾਹਰਨ ਵਜੋਂ ਜੇ ਕੋਈ ਵਰਤੋਂਕਾਰ "ਤੁਸੀਂ ਇੱਕ ਸਾਈਕਲ ਹੋ" ਲਿਖਦਾ ਸੀ ਤਾਂ ਇਹ ਜਵਾਬ ਦੇ ਸਕਦੀ ਸੀ "ਮੈਂ ਕਿੰਨੇ ਸਮੇਂ ਤੋਂ ਇੱਕ ਸਾਈਕਲ ਹਾਂ?", ਬਜਾਏ ਕੋਈ ਹੋਰ ਤਰਕਸ਼ੀਲ ਜਵਾਬ ਦੇਣ ਦੇ। -[![ਐਲਾਈਜ਼ਾ ਨਾਲ ਗੱਲਬਾਤ](https://img.youtube.com/vi/RMK9AphfLco/0.jpg)](https://youtu.be/RMK9AphfLco "ਐਲਾਈਜ਼ਾ ਨਾਲ ਗੱਲਬਾਤ") +[![ਇਲਾਈਜਾ ਨਾਲ ਗੱਲਬਾਤ](https://img.youtube.com/vi/RMK9AphfLco/0.jpg)](https://youtu.be/RMK9AphfLco "ਇਲਾਈਜਾ ਨਾਲ ਗੱਲਬਾਤ") -> 🎥 ਉਪਰੋਕਤ ਚਿੱਤਰ 'ਤੇ ਕਲਿੱਕ ਕਰੋ ਐਲਾਈਜ਼ਾ ਦੇ ਮੂਲ ਪ੍ਰੋਗਰਾਮ ਬਾਰੇ ਵੀਡੀਓ ਲਈ +> 🎥 ਉਪਰ ਦਿੱਤੇ ਚਿੱਤਰ 'ਤੇ ਕਲਿੱਕ ਕਰੋ ਅਸਲ ELIZA ਪ੍ਰੋਗਰਾਮ ਬਾਰੇ ਵੀਡੀਓ ਲਈ -> ਨੋਟ: ਤੁਸੀਂ 1966 ਵਿੱਚ ਪ੍ਰਕਾਸ਼ਿਤ [ਐਲਾਈਜ਼ਾ](https://cacm.acm.org/magazines/1966/1/13317-elizaa-computer-program-for-the-study-of-natural-language-communication-between-man-and-machine/abstract) ਦਾ ਮੂਲ ਵੇਰਵਾ ਪੜ੍ਹ ਸਕਦੇ ਹੋ ਜੇਕਰ ਤੁਹਾਡੇ ਕੋਲ ACM ਖਾਤਾ ਹੈ। ਵੱਖਰੇ ਤੌਰ 'ਤੇ, ਐਲਾਈਜ਼ਾ ਬਾਰੇ [ਵਿਕੀਪੀਡੀਆ](https://wikipedia.org/wiki/ELIZA) 'ਤੇ ਪੜ੍ਹੋ। +> ਨੋਟ: ਤੁਸੀਂ 1966 ਵਿੱਚ ਪ੍ਰਕਾਸ਼ਿਤ [Eliza](https://cacm.acm.org/magazines/1966/1/13317-elizaa-computer-program-for-the-study-of-natural-language-communication-between-man-and-machine/abstract) ਦੀ ਮੂਲ ਵਰਣਨਾ ਪੜ੍ਹ ਸਕਦੇ ਹੋ ਜੇ ਤੁਹਾਡੇ ਕੋਲ ACM ਖਾਤਾ ਹੈ। ਇਸਦੇ ਬਦਲੇ, [ਵਿਕੀਪੀਡੀਆ](https://wikipedia.org/wiki/ELIZA) 'ਤੇ ਵੀ ਇਲਾਈਜਾ ਬਾਰੇ ਪੜ੍ਹੋ। -## ਅਭਿਆਸ - ਇੱਕ ਬੁਨਿਆਦੀ ਗੱਲਬਾਤੀ ਬੋਟ ਕੋਡ ਕਰਨਾ +## ਅਭਿਆਸ - ਇੱਕ ਆਧਾਰਭੂਤ ਗੱਲਬਾਤੀ ਬੌਟ ਕੋਡ ਕਰਨਾ -ਇੱਕ ਗੱਲਬਾਤੀ ਬੋਟ, ਜਿਵੇਂ ਕਿ ਐਲਾਈਜ਼ਾ, ਇੱਕ ਪ੍ਰੋਗਰਾਮ ਹੈ ਜੋ ਯੂਜ਼ਰ ਇਨਪੁਟ ਨੂੰ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ ਅਤੇ ਸਮਝਦਾਰੀ ਨਾਲ ਜਵਾਬ ਦੇਣ ਦੀ ਦਿਖਾਵਟ ਕਰਦਾ ਹੈ। ਐਲਾਈਜ਼ਾ ਦੇ ਵਿਰੁੱਧ, ਸਾਡਾ ਬੋਟ ਕਈ ਨਿਯਮਾਂ ਨਹੀਂ ਰੱਖੇਗਾ ਜੋ ਇਸਨੂੰ ਇੱਕ ਸਮਰਥ ਗੱਲਬਾਤ ਦੀ ਦਿਖਾਵਟ ਦਿੰਦੇ ਹਨ। ਇਸਦੇ ਬਦਲੇ ਵਿੱਚ, ਸਾਡੇ ਬੋਟ ਵਿੱਚ ਸਿਰਫ ਇੱਕ ਯੋਗਤਾ ਹੋਵੇਗੀ, ਜੋ ਕਿ ਕਿਵੇਂ ਵੀ ਸਧਾਰਨ ਗੱਲਬਾਤ ਵਿੱਚ ਕੰਮ ਕਰ ਸਕਦੇ ਹਨ, ਰੈਂਡਮ ਜਵਾਬਾਂ ਦੇਣ ਦੀ। +ਇੱਕ ਗੱਲਬਾਤੀ ਬੌਟ, ਇਲਾਈਜਾ ਦੀ ਤਰ੍ਹਾਂ, ਇੱਕ ਐਸਾ ਪ੍ਰੋਗਰਾਮ ਹੈ ਜੋ ਵਰਤੋਂਕਾਰ ਦੀ ਇਨਪੁੱਟ ਮੰਗਦਾ ਹੈ ਅਤੇ ਸਮਝਦਾਰੀ ਨਾਲ ਜਵਾਬ ਦੇਣ ਦਾ ਭਾਸ਼ਾ ਦਿੰਦਾ ਹੈ। ਇਲਾਈਜਾ ਤੋਂ ਵੱਖ, ਸਾਡਾ ਬੌਟ ਕਈ ਨਿਯਮਾਂ ਦੀ ਵਰਤੋਂ ਨਹੀਂ ਕਰੇਗਾ ਜੋ ਇਹ ਭਾਸ਼ਾ ਦਿੰਦੇ ਹਨ ਕਿ ਇਹ ਸਮਝਦਾਰ ਗੱਲ ਕਰ ਰਿਹਾ ਹੈ। ਇਸ ਦੀ ਸਥਾਨ 'ਤੇ, ਸਾਡਾ ਬੌਟ ਸਿਰਫ ਇੱਕ ਸਮਰੱਥਾ ਵਾਲਾ ਹੋਵੇਗਾ, ਗੱਲਬਾਤ ਨੂੰ ਜਾਰੀ ਰੱਖਣ ਲਈ ਕੁਝ ਆਕਸਮੀਕ ਜਵਾਬ ਜੋ ਲਗਭਗ ਕਿਸੇ ਵੀ ਸਧਾਰਣ ਗੱਲਬਾਤ ਵਿੱਚ ਵਰਤਣਯੋਗ ਹੋ ਸਕਦੇ ਹਨ। ### ਯੋਜਨਾ -ਗੱਲਬਾਤੀ ਬੋਟ ਬਣਾਉਣ ਸਮੇਂ ਤੁਹਾਡੇ ਕਦਮ: +ਗੱਲਬਾਤੀ ਬੌਟ ਬਣਾਉਂਦੇ ਸਮੇਂ ਤੁਹਾਡੇ ਕਦਮ: -1. ਯੂਜ਼ਰ ਨੂੰ ਸਲਾਹ ਦਿੰਦੇ ਹੋਏ ਨਿਰਦੇਸ਼ ਪ੍ਰਿੰਟ ਕਰੋ ਕਿ ਬੋਟ ਨਾਲ ਕਿਵੇਂ ਗੱਲਬਾਤ ਕਰਨੀ ਹੈ -2. ਇੱਕ ਲੂਪ ਸ਼ੁਰੂ ਕਰੋ - 1. ਯੂਜ਼ਰ ਇਨਪੁਟ ਪ੍ਰਾਪਤ ਕਰੋ - 2. ਜੇ ਯੂਜ਼ਰ ਨੇ ਬਾਹਰ ਜਾਣ ਦੀ ਮੰਗ ਕੀਤੀ ਹੈ, ਤਾਂ ਬਾਹਰ ਜਾਓ - 3. ਯੂਜ਼ਰ ਇਨਪੁਟ ਨੂੰ ਪ੍ਰੋਸੈਸ ਕਰੋ ਅਤੇ ਜਵਾਬ ਨਿਰਧਾਰਤ ਕਰੋ (ਇਸ ਮਾਮਲੇ ਵਿੱਚ, ਜਵਾਬ ਸੰਭਾਵਿਤ ਜਨਰਿਕ ਜਵਾਬਾਂ ਦੀ ਸੂਚੀ ਵਿੱਚੋਂ ਇੱਕ ਰੈਂਡਮ ਚੋਣ ਹੈ) +1. ਵਰਤੋਂਕਾਰ ਨੂੰ ਬੌਟ ਨਾਲ ਕਿਵੇਂ ਗੱਲ ਕਰਨੀ ਹੈ, ਇਸ ਬਾਰੇ ਹੁਕਮ ਪ੍ਰਿੰਟ ਕਰੋ +2. ਲੂਪ ਸ਼ੁਰੂ ਕਰੋ + 1. ਵਰਤੋਂਕਾਰ ਇਨਪੁੱਟ ਲਵੋ + 2. ਜੇ ਵਰਤੋਂਕਾਰ ਨੇ ਬਾਹਰ ਨਿਕਲਣ ਲਈ ਕਿਹਾ, ਤਾਂ ਬਾਹਰ ਨਿਕਲੋ + 3. ਵਰਤੋਂਕਾਰ ਦੀ ਇਨਪੁੱਟ ਦਾ ਪ੍ਰੋਸੈਸ ਕਰੋ ਅਤੇ ਜਵਾਬ ਨਿਰਧਾਰਤ ਕਰੋ (ਇਸ ਮਾਮਲੇ ਵਿੱਚ, ਜਵਾਬ ਸੰਭਵ ਆਮ ਜਵਾਬਾਂ ਦੀ ਸੂਚੀ ਵਿੱਚੋਂ ਆਕਸਮੀਕ ਚੋਣ ਹੁੰਦਾ ਹੈ) 4. ਜਵਾਬ ਪ੍ਰਿੰਟ ਕਰੋ -3. ਕਦਮ 2 'ਤੇ ਵਾਪਸ ਜਾਓ +3. ਚਰਨ 2 ਨੂੰ ਦੁਹਰਾਓ + +### ਬੌਟ ਬਣਾਉਣਾ + +ਅਸੀਂ ਅਗਲੇ ਕਦਮ 'ਚ ਬੌਟ ਬਣਾਵਾਂਗੇ। ਪਹਿਲਾਂ ਕੁਝ ਵਾਕ ਬਣਾਓ। + +1. ਸਵੈ-ਵਿਕਸਿਤ ਬੌਟ ਬਣਾਓ ਪਾਇਥਨ ਵਿੱਚ, ਹੇਠਾਂ ਦਿੱਤੇ ਕੁਝ ਆਕਸਮੀਕ ਜਵਾਬਾਂ ਨਾਲ: + + ```python + random_responses = ["That is quite interesting, please tell me more.", + "I see. Do go on.", + "Why do you say that?", + "Funny weather we've been having, isn't it?", + "Let's change the subject.", + "Did you catch the game last night?"] + ``` + + ਤੁਹਾਡੇ ਲਈ ਇੱਕ ਉਦਾਹਰਨ ਆਉਟਪੁੱਟ (ਵਰਤੋਂਕਾਰ ਦੀ ਇਨਪੁੱਟ `>` ਨਾਲ ਸ਼ੁਰੂ ਹੁੰਦੀ ਲਾਈਨਾਂ ਵਿੱਚ): + + ```output + Hello, I am Marvin, the simple robot. + You can end this conversation at any time by typing 'bye' + After typing each answer, press 'enter' + How are you today? + > I am good thanks + That is quite interesting, please tell me more. + > today I went for a walk + Did you catch the game last night? + > I did, but my team lost + Funny weather we've been having, isn't it? + > yes but I hope next week is better + Let's change the subject. + > ok, lets talk about music + Why do you say that? + > because I like music! + Why do you say that? + > bye + It was nice talking to you, goodbye! + ``` + + ਇਸ ਟਾਸਕ ਦਾ ਇੱਕ ਸੰਭਵ ਹੱਲ [ਇੱਥੇ](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/1-Introduction-to-NLP/solution/bot.py) ਹੈ + + ✅ ਰੁਕੋ ਅਤੇ ਸੋਚੋ + + 1. ਕੀ ਤੁਹਾਨੂੰ ਲੱਗਦਾ ਹੈ ਕਿ ਆਕਸਮੀਕ ਜਵਾਬ ਕਿਸੇ ਨੂੰ ਇਹ ਸੋਚਣ 'ਚ ਧੋਖਾ ਦੇਣਗੇ ਕਿ ਬੌਟ ਨੇ ਅਸਲ ਵਿੱਚ ਉਹਨਾ ਨੂੰ ਸਮਝਿਆ ਹੈ? + 2. ਬੌਟ ਨੂੰ ਹੋਰ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਬਣਾਉਣ ਲਈ ਕਿਹੜੀਆਂ ਖੂਬੀਆਂ ਦੀ ਲੋੜ ਹੋਵੇਗੀ? + 3. ਜੇ ਕੋਈ ਬੌਟ ਇੱਕ ਵਾਕ ਦੇ ਮਾਇਨੇ ਨੂੰ ਸੱਚਮੁੱਚ 'ਸਮਝ' ਲੈਂਦਾ, ਤਾਂ ਕੀ ਉਸਨੂੰ ਗੱਲਬਾਤ ਵਿੱਚ ਪਿਛਲੇ ਵਾਕਾਂ ਦੇ ਮਾਇਨੇ ਨੂੰ ਵੀ 'ਯਾਦ' ਰੱਖਣਾ ਪੈਂਦਾ? -### ਬੋਟ ਬਣਾਉਣਾ +--- + +## 🚀ਚੁਣੌਤੀ + +ਉਪਰ ਦਿੱਤੇ "ਰੁਕੋ ਅਤੇ ਸੋਚੋ" ਵਿੱਚੋਂ ਕਿਸੇ ਇੱਕ ਅੰਗ ਨੂੰ ਚੁਣੋ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਕੋਡ ਵਿੱਚ ਲਾਗੂ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜਾਂ ਪੱਤਰ ਵਿੱਚ ਸੁਝਾਅ ਪੀਸੀਯੂਡੋ ਕੋਡ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਲਿਖੋ। + +ਅਗਲੇ ਪਾਠ ਵਿੱਚ, ਤੁਸੀਂ ਕੁਦਰਤੀ ਭਾਸ਼ਾ ਨੂੰ ਪਾਰਸ ਕਰਨ ਅਤੇ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਦੇ ਹੋਰ ਕਈ ਤਰੀਕਿਆਂ ਬਾਰੇ ਸਿੱਖੋਗੇ। + +## [ਪੋਸਟ-ਲੈਕਚਰ ਕਿਊਜ਼](https://ff-quizzes.netlify.app/en/ml/) + +## ਸਮੀਖਿਆ ਅਤੇ ਸਵੈ ਅਧਿਐਨ + +ਹੇਠਾਂ ਦਿੱਤੀਆਂ ਸੰਦਰਭਾਂ ਨੂੰ ਵਾਧੂ ਪੜ੍ਹਾਈ ਦੇ ਮੌਕੇ ਵਜੋਂ ਵੇਖੋ। + +### ਸੰਦਰਭ -ਆਓ ਅਗਲੇ ਕਦਮ ਵਿੱਚ ਬੋਟ ਬਣਾਈਏ। ਅਸੀਂ ਕੁਝ ਫਰੇਜ਼ਾਂ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਕੇ ਸ਼ੁਰੂ ਕਰਾਂਗੇ। +1. ਸ਼ੂਬਰਟ, ਲੈਨਹਾਰਟ, "ਕੰਪਿਊਟੇਸ਼ਨਲ ਲਿੰਗਵਿਸਟਿਕਸ", *ਸਟੈਨਫੋਰਡ ਏਨਸੀਕਲੋਪੀਡੀਆ ਆਫ਼ ਫਿਲਾਸਫੀ* (ਵੇਸੰਤ 2020 ਸੰਪਾਦਨ), ਐਡਵਰਡ ਐਨ. ਜ਼ਾਲਟਾ (ਸੰਪਾਦਕ), URL = । +2. ਪ੍ਰਿੰਸਟਰਾਨ ਯੂਨੀਵਰਸਿਟੀ "ਵਰਡਨੈੱਟ ਬਾਰੇ." [WordNet](https://wordnet.princeton.edu/). ਪ੍ਰਿੰਸਟਰਾਨ ਯੂਨੀਵਰਸਿਟੀ। 2010। -1. ਹੇਠਾਂ ਦਿੱਤੇ ਰੈਂਡਮ ਜਵਾਬਾਂ ਨਾਲ Python ਵਿੱਚ ਇਸ ਬੋਟ ਨੂੰ ਖੁਦ ਬਣਾਓ: +## ਅਸਾਈਨਮੈਂਟ - +[ਬੌਟ ਲਈ ਖੋਜ](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/6-NLP/2-Tasks/README.md b/translations/pa/6-NLP/2-Tasks/README.md index 0612dacbd..3e1098a6d 100644 --- a/translations/pa/6-NLP/2-Tasks/README.md +++ b/translations/pa/6-NLP/2-Tasks/README.md @@ -1,46 +1,46 @@ -# ਆਮ ਕੁਦਰਤੀ ਭਾਸ਼ਾ ਪ੍ਰਕਿਰਿਆ ਕਾਰਜ ਅਤੇ ਤਕਨੀਕਾਂ +# ਆਮ ਕੁਦਰਤੀ ਭਾਸ਼ਾ ਪ੍ਰੋਸੈਸਿੰਗ ਦੇ ਕੰਮ ਅਤੇ ਤਕਨੀਕਾਂ -ਜਿਆਦਾਤਰ *ਕੁਦਰਤੀ ਭਾਸ਼ਾ ਪ੍ਰਕਿਰਿਆ* ਕਾਰਜਾਂ ਲਈ, ਪ੍ਰਕਿਰਿਆ ਕੀਤੇ ਜਾਣ ਵਾਲੇ ਪਾਠ ਨੂੰ ਤੋੜਨਾ, ਜਾਂਚਣਾ ਅਤੇ ਨਤੀਜਿਆਂ ਨੂੰ ਨਿਯਮਾਂ ਅਤੇ ਡੇਟਾ ਸੈੱਟਾਂ ਨਾਲ ਸਟੋਰ ਜਾਂ ਰਿਫਰੈਂਸ ਕਰਨਾ ਲਾਜ਼ਮੀ ਹੁੰਦਾ ਹੈ। ਇਹ ਕਾਰਜ ਪ੍ਰੋਗਰਾਮਰ ਨੂੰ ਪਾਠ ਵਿੱਚ ਸ਼ਬਦਾਂ ਅਤੇ ਸ਼ਬਦਾਵਲੀਆਂ ਦੀ _ਮਹੱਤਵ_, _ਇਰਾਦਾ_, ਜਾਂ ਸਿਰਫ਼ _ਆਵ੍ਰਿਤੀ_ ਨੂੰ ਸਮਝਣ ਦੀ ਯੋਗਤਾ ਦਿੰਦੇ ਹਨ। +ਜ਼ਿਆਦਾਤਰ *ਕੁਦਰਤੀ ਭਾਸ਼ਾ ਪ੍ਰੋਸੈਸਿੰਗ* ਦੇ ਕੰਮ ਲਈ, ਪ੍ਰੋਸੈਸ ਕੀਤਾ ਜਾਣ ਵਾਲਾ ਲਿਖਤ ਤੁਹਾਨੂੰ ਟੁਕੜਿਆਂ ਵਿੱਚ ਵੱਖ ਕਰਨਾ ਪੈਂਦਾ ਹੈ, ਜਾਂਚਣਾ ਪੈਂਦਾ ਹੈ, ਅਤੇ ਨਤੀਜੇ ਸਟੋਰ ਕਰਨ ਜਾਂ ਨਿਯਮਾਂ ਅਤੇ ਡੇਟਾ ਸੈੱਟਾਂ ਨਾਲ ਸੰਬੰਧਿਤ ਕਰਨੇ ਪੈਂਦੇ ਹਨ। ਇਹ ਕੰਮ, ਪ੍ਰੋਗ੍ਰਾਮਰ ਨੂੰ ਲਿਖਤ ਵਿੱਚ ਸ਼ਬਦਾਂ ਅਤੇ ਸ਼ਬਦ ਬੰਦੀਆਂ ਦੀ _ਅਰਥ_ ਜਾਂ _ਮਕਸਦ_ ਜਾਂ ਸਿਰਫ _ਆਵ੍ਰਿਤੀ_ ਦਾ ਪਤਾ ਲਗਾਉਣ ਦਿੰਦੇ ਹਨ। -## [ਪ੍ਰੀ-ਲੈਕਚਰ ਕਵਿਜ਼](https://ff-quizzes.netlify.app/en/ml/) +## [ਪਹਿਲੀ ਕਲਾਸ ਕਵੀਜ਼](https://ff-quizzes.netlify.app/en/ml/) -ਆਓ ਪਾਠ ਦੀ ਪ੍ਰਕਿਰਿਆ ਕਰਨ ਲਈ ਵਰਤੀਆਂ ਜਾਣ ਵਾਲੀਆਂ ਆਮ ਤਕਨੀਕਾਂ ਦੀ ਖੋਜ ਕਰੀਏ। ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਦੇ ਨਾਲ ਮਿਲਾ ਕੇ, ਇਹ ਤਕਨੀਕਾਂ ਤੁਹਾਨੂੰ ਵੱਡੇ ਪਾਠ ਨੂੰ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਢੰਗ ਨਾਲ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰਦੀਆਂ ਹਨ। ਪਰ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਲਾਗੂ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ, ਆਓ ਸਮਝੀਏ ਕਿ NLP ਵਿਸ਼ੇਸ਼ਜ्ञ ਨੂੰ ਕਿਹੜੀਆਂ ਸਮੱਸਿਆਵਾਂ ਦਾ ਸਾਹਮਣਾ ਕਰਨਾ ਪੈਂਦਾ ਹੈ। +ਆਓ ਲਿਖਤ ਪ੍ਰੋਸੈਸਿੰਗ ਵਿੱਚ ਵਰਤੇ ਜਾਣ ਵਾਲੀਆਂ ਆਮ ਤਕਨੀਕਾਂ ਬਾਰੇ ਜਾਣਕਾਰੀ ਲਵਾਂ। ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਨਾਲ ਮਿਲ ਕੇ, ਇਹ ਤਕਨੀਕਾ ਤੁਹਾਨੂੰ ਵੱਡੀ ਮਾਤਰਾ ਵਿੱਚ ਲਿਖਤ ਦਾ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰਦੀਆਂ ਹਨ। ਹਾਲਾਂਕਿ ML ਨੂੰ ਇਹ ਕੰਮ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ, ਆਓ NLP ਵਿਸ਼ੇਸ਼ਜੱ ਦੀਆਂ ਮੁਸ਼ਕਲਾਂ ਨੂੰ ਸਮਝੀਏ। -## NLP ਨਾਲ ਜੁੜੇ ਆਮ ਕਾਰਜ +## NLP ਲਈ ਆਮ ਕੰਮ -ਪਾਠ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰਨ ਦੇ ਕਈ ਤਰੀਕੇ ਹਨ। ਤੁਸੀਂ ਕੁਝ ਕਾਰਜ ਕਰ ਸਕਦੇ ਹੋ ਅਤੇ ਇਨ੍ਹਾਂ ਕਾਰਜਾਂ ਰਾਹੀਂ ਪਾਠ ਨੂੰ ਸਮਝਣ ਅਤੇ ਨਤੀਜੇ ਕੱਢਣ ਦੀ ਯੋਗਤਾ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦੇ ਹੋ। ਆਮ ਤੌਰ 'ਤੇ ਇਹ ਕਾਰਜ ਇੱਕ ਕ੍ਰਮ ਵਿੱਚ ਕੀਤੇ ਜਾਂਦੇ ਹਨ। +ਤੁਸੀਂ ਜਿਹੜੇ ਲਿਖਤ 'ਤੇ ਕੰਮ ਕਰ ਰਹੇ ਹੋ, ਉਸ ਨੂੰ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰਨ ਦੇ ਵੱਖ-ਵੱਖ ਤਰੀਕੇ ਹਨ। ਤੁਸੀਂ ਕੁਝ ਕੰਮ ਕਰ ਸਕਦੇ ਹੋ ਅਤੇ ਇਨ੍ਹਾਂ ਕੰਮਾਂ ਰਾਹੀਂ ਤੁਸੀਂ ਲਿਖਤ ਨੂੰ ਸਮਝਣ ਵਿੱਚ ਯੋਗ ਹੋ ਜਾਉਂਦੇ ਹੋ ਅਤੇ ਨਤੀਜੇ ਕੱਢ ਸਕਦੇ ਹੋ। ਆਮ ਤੌਰ 'ਤੇ ਤੁਸੀਂ ਇਨ੍ਹਾਂ ਨਿਰਦੀਸ਼ਿਤ ਕ੍ਰਮ ਵਿੱਚ ਕਰਦੇ ਹੋ। ### ਟੋਕਨਾਈਜ਼ੇਸ਼ਨ -ਸ਼ਾਇਦ ਸਭ ਤੋਂ ਪਹਿਲੀ ਚੀਜ਼ ਜੋ ਜ਼ਿਆਦਾਤਰ NLP ਐਲਗੋਰਿਦਮ ਕਰਦੇ ਹਨ ਉਹ ਹੈ ਪਾਠ ਨੂੰ ਟੋਕਨ ਜਾਂ ਸ਼ਬਦਾਂ ਵਿੱਚ ਵੰਡਣਾ। ਜਦੋਂ ਕਿ ਇਹ ਸਧਾਰਨ ਲੱਗਦਾ ਹੈ, ਚਿੰਨ੍ਹਾਂ ਅਤੇ ਵੱਖ-ਵੱਖ ਭਾਸ਼ਾਵਾਂ ਦੇ ਸ਼ਬਦ ਅਤੇ ਵਾਕਾਂਸ਼ਾਂ ਦੇ ਸੀਮਾਵਾਂ ਨੂੰ ਧਿਆਨ ਵਿੱਚ ਰੱਖਣਾ ਇਸਨੂੰ ਔਖਾ ਬਣਾ ਸਕਦਾ ਹੈ। ਤੁਹਾਨੂੰ ਸੀਮਾਵਾਂ ਨਿਰਧਾਰਤ ਕਰਨ ਲਈ ਵੱਖ-ਵੱਖ ਤਰੀਕੇ ਵਰਤਣੇ ਪੈ ਸਕਦੇ ਹਨ। +ਸਭ ਤੋਂ ਪਹਿਲਾਂ ਇਸ ਗੱਲ ਦੀ ਜ਼ਰੂਰਤ ਹੁੰਦੀ ਹੈ ਕਿ ਬਹੁਤ ਸਾਰੇ NLP ਅਲਗੋਰਿਧਮ ਲਿਖਤ ਨੂੰ ਟੋਕਨ ਜਾਂ ਸ਼ਬਦਾਂ ਵਿੱਚ ਵੰਡਾ ਜਾਣ। ਜਦ ਕਿ ਇਹ ਸਧਾਰਣ ਲੱਗਦਾ ਹੈ, ਪੰਕਚੂਏਸ਼ਨ ਅਤੇ ਵੱਖਰੇ ਭਾਸ਼ਾਵਾਂ ਦੇ ਸ਼ਬਦ ਅਤੇ ਵਾਕਾਂ ਦੇ delimiter ਮਦਦ ਨਾਲ ਇਹ ਮੁਸ਼ਕਲ ਹੋ ਸਕਦਾ ਹੈ। ਤੁਹਾਨੂੰ ਮਾਰਕ ਕਰਨ ਲਈ ਵੱਖ-ਵੱਖ ਤਰੀਕਿਆਂ ਦੀ ਲੋੜ ਪੈ ਸਕਦੀ ਹੈ। -![ਟੋਕਨਾਈਜ਼ੇਸ਼ਨ](../../../../6-NLP/2-Tasks/images/tokenization.png) -> **Pride and Prejudice** ਤੋਂ ਇੱਕ ਵਾਕ ਨੂੰ ਟੋਕਨਾਈਜ਼ ਕਰਨਾ। ਇਨਫੋਗ੍ਰਾਫਿਕ [Jen Looper](https://twitter.com/jenlooper) ਦੁਆਰਾ। +![tokenization](../../../../translated_images/pa/tokenization.1641a160c66cd2d9.webp) +> **Pride and Prejudice** ਦੀ ਇੱਕ ਵਾਕ ਦੀ ਟੋਕਨਾਈਜ਼ੇਸ਼ਨ। ਇਨਫੋਗ੍ਰਾਫਿਕ ਬਾਈ [Jen Looper](https://twitter.com/jenlooper) ### ਐਮਬੈਡਿੰਗਜ਼ -[ਵਰਡ ਐਮਬੈਡਿੰਗਜ਼](https://wikipedia.org/wiki/Word_embedding) ਤੁਹਾਡੇ ਪਾਠ ਡੇਟਾ ਨੂੰ ਗਿਣਤੀ ਰੂਪ ਵਿੱਚ ਬਦਲਣ ਦਾ ਇੱਕ ਤਰੀਕਾ ਹੈ। ਐਮਬੈਡਿੰਗਜ਼ ਇਸ ਤਰੀਕੇ ਨਾਲ ਕੀਤੀਆਂ ਜਾਂਦੀਆਂ ਹਨ ਕਿ ਸਮਾਨ ਅਰਥ ਵਾਲੇ ਸ਼ਬਦ ਜਾਂ ਇਕੱਠੇ ਵਰਤੇ ਜਾਣ ਵਾਲੇ ਸ਼ਬਦ ਇੱਕਠੇ ਹੋ ਜਾਂਦੇ ਹਨ। +[ਸ਼ਬਦ ਐਮਬੈਡਿੰਗਜ਼](https://wikipedia.org/wiki/Word_embedding) ਇੱਕ ਤਰੀਕਾ ਹੈ ਜੋ ਤੁਹਾਡੇ ਲਿਖਤੀ ਡਾਟਾ ਨੂੰ ਸੰਖਿਆਤਮਕ ਬਣਾਉਂਦੀਆਂ ਹਨ। ਐਮਬੈਡਿੰਗਜ਼ ਇਸ ਤਰੀਕੇ ਨਾਲ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਤਾਂ ਜੋ ਇਕੱਠੇ ਵਰਤੇ ਜਾਣ ਵਾਲੇ ਜਾਂ ਸਮਾਨ ਅਰਥ ਵਾਲੇ ਸ਼ਬਦ ਇੱਕ ਜਗ੍ਹਾ ਗਰੁੱਪ ਹੋ ਜਾਂ। -![ਵਰਡ ਐਮਬੈਡਿੰਗਜ਼](../../../../6-NLP/2-Tasks/images/embedding.png) -> "I have the highest respect for your nerves, they are my old friends." - **Pride and Prejudice** ਦੇ ਇੱਕ ਵਾਕ ਲਈ ਵਰਡ ਐਮਬੈਡਿੰਗਜ਼। ਇਨਫੋਗ੍ਰਾਫਿਕ [Jen Looper](https://twitter.com/jenlooper) ਦੁਆਰਾ। +![word embeddings](../../../../translated_images/pa/embedding.2cf8953c4b3101d1.webp) +> "ਮੈਂ ਤੁਹਾਡੇ ਨਰਵੇਜ਼ ਦਾ ਮਾਣ ਕਰਦਾ ਹਾਂ, ਉਹ ਮੇਰੇ ਪੁਰਾਣੇ ਦੋਸਤ ਹਨ।" - **Pride and Prejudice** ਦੇ ਇੱਕ ਵਾਕ ਲਈ ਸ਼ਬਦ ਐਮਬੈਡਿੰਗਜ਼। ਇਨਫੋਗ੍ਰਾਫਿਕ ਬਾਈ [Jen Looper](https://twitter.com/jenlooper) -✅ [ਇਹ ਦਿਲਚਸਪ ਟੂਲ](https://projector.tensorflow.org/) ਅਜ਼ਮਾਓ ਜੋ ਵਰਡ ਐਮਬੈਡਿੰਗਜ਼ ਨਾਲ ਪ੍ਰਯੋਗ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ। ਕਿਸੇ ਇੱਕ ਸ਼ਬਦ 'ਤੇ ਕਲਿਕ ਕਰਨ ਨਾਲ ਸਮਾਨ ਸ਼ਬਦਾਂ ਦੇ ਗੁੱਛੇ ਦਿਖਾਈ ਦਿੰਦੇ ਹਨ: 'toy' 'disney', 'lego', 'playstation', ਅਤੇ 'console' ਨਾਲ ਗੁੱਛਾ ਬਣਾਉਂਦਾ ਹੈ। +✅ ਸ਼ਬਦ ਐਮਬੈਡਿੰਗਜ਼ ਨਾਲ ਪ੍ਰਯੋਗ ਕਰਨ ਲਈ [ਇਹ ਦਿਲਚਸਪ ਟੂਲ](https://projector.tensorflow.org/) ਨੂੰ ਕੋਸ਼ਿਸ਼ ਕਰੋ। ਇੱਕ ਸ਼ਬਦ 'toy' 'disney', 'lego', 'playstation', ਅਤੇ 'console' ਵਰਗੇ ਸਮਾਨ ਸ਼ਬਦਾਂ ਨਾਲ ਗਰੁੱਪ ਬਣਾਉਂਦਾ ਹੈ। -### ਪਾਰਸਿੰਗ ਅਤੇ ਭਾਗ-ਅਫ-ਸਪੀਚ ਟੈਗਿੰਗ +### ਪਾਰਸਿੰਗ ਅਤੇ ਭਾਸ਼ਾ ਦੇ ਹਿੱਸੇ ਲਈ ਟੈਗਿੰਗ -ਹਰ ਸ਼ਬਦ ਜੋ ਟੋਕਨਾਈਜ਼ ਕੀਤਾ ਗਿਆ ਹੈ, ਉਸਨੂੰ ਭਾਗ-ਅਫ-ਸਪੀਚ ਵਜੋਂ ਟੈਗ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ - ਜਿਵੇਂ ਕਿ ਨਾਉਨ, ਵਰਬ, ਜਾਂ ਐਡਜੈਕਟਿਵ। ਜਿਵੇਂ ਕਿ ਵਾਕ `the quick red fox jumped over the lazy brown dog` ਵਿੱਚ fox = noun, jumped = verb ਹੋ ਸਕਦਾ ਹੈ। +ਹਰ ਇੱਕ ਟੋਕਨ ਸ਼ਬਦ ਨੂੰ ਭਾਸ਼ਾ ਦੇ ਹਿੱਸੇ ਵਜੋਂ ਟੈਗ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ - ਜਿਵੇਂ ਕਿ ਨਾਂ, ਕਿਰਿਆ, ਜਾਂ ਵਿਸ਼ੇਸ਼ਣ। `the quick red fox jumped over the lazy brown dog` ਦੇ ਵਾਕ ਨੂੰ POS ਟੈਗ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ fox = ਨਾਂ, jumped = ਕਿਰਿਆ। -![ਪਾਰਸਿੰਗ](../../../../6-NLP/2-Tasks/images/parse.png) +![parsing](../../../../translated_images/pa/parse.d0c5bbe1106eae8f.webp) -> **Pride and Prejudice** ਤੋਂ ਇੱਕ ਵਾਕ ਨੂੰ ਪਾਰਸ ਕਰਨਾ। ਇਨਫੋਗ੍ਰਾਫਿਕ [Jen Looper](https://twitter.com/jenlooper) ਦੁਆਰਾ। +> **Pride and Prejudice** ਦੀ ਇੱਕ ਵਾਕ ਦੀ ਪਾਰਸਿੰਗ। ਇਨਫੋਗ੍ਰਾਫਿਕ ਬਾਈ [Jen Looper](https://twitter.com/jenlooper) -ਪਾਰਸਿੰਗ ਦਾ ਮਤਲਬ ਹੈ ਵਾਕ ਵਿੱਚ ਕਿਹੜੇ ਸ਼ਬਦ ਇੱਕ ਦੂਜੇ ਨਾਲ ਸੰਬੰਧਿਤ ਹਨ ਇਹ ਪਛਾਣਣਾ - ਉਦਾਹਰਣ ਲਈ `the quick red fox jumped` ਇੱਕ ਐਡਜੈਕਟਿਵ-ਨਾਉਨ-ਵਰਬ ਕ੍ਰਮ ਹੈ ਜੋ `lazy brown dog` ਕ੍ਰਮ ਤੋਂ ਵੱਖ ਹੈ। +ਪਾਰਸਿੰਗ, ਵਾਕ ਵਿੱਚ ਸਬਦਾਂ ਦੇ ਆਪਸੀ ਸੰਬੰਧਾਂ ਨੂੰ ਪਹਚਾਣਨਾ ਹੈ - ਉਦਾਹਰਨ ਵਜੋਂ `the quick red fox jumped` ਇੱਕ ਵਿਸ਼ੇਸ਼ਣ-ਨਾਂ-ਕਿਰਿਆ ਕ੍ਰਮ ਹੈ ਜੋ `lazy brown dog` ਦੇ ਕ੍ਰਮ ਤੋਂ ਵੱਖਰਾ ਹੈ। -### ਸ਼ਬਦ ਅਤੇ ਵਾਕਾਂਸ਼ ਦੀ ਆਵ੍ਰਿਤੀ +### ਸ਼ਬਦ ਅਤੇ ਵਾਕ-ਮਾਲਾ ਦੀ ਆਵ੍ਰਿਤੀ -ਜਦੋਂ ਵੱਡੇ ਪਾਠ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੋਵੇ, ਤਾਂ ਹਰ ਸ਼ਬਦ ਜਾਂ ਰੁਚੀ ਦੇ ਵਾਕਾਂਸ਼ ਦੀ ਸ਼ਬਦਾਵਲੀ ਬਣਾਉਣਾ ਅਤੇ ਇਹ ਪਤਾ ਲਗਾਉਣਾ ਕਿ ਇਹ ਕਿੰਨੀ ਵਾਰ ਆਉਂਦਾ ਹੈ, ਇੱਕ ਲਾਭਦਾਇਕ ਪ੍ਰਕਿਰਿਆ ਹੈ। ਵਾਕ `the quick red fox jumped over the lazy brown dog` ਵਿੱਚ the ਦੀ ਆਵ੍ਰਿਤੀ 2 ਹੈ। +ਵੱਡੇ ਲਿਖਤੀ ਸੰਗ੍ਰਹਿ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰਨ ਵੇਲੇ ਇੱਕ ਬਹੁਤ ਉਪਯੋਗੀ ਪ੍ਰਕਿਰਿਆ ਹੈ ਹਰ ਸ਼ਬਦ ਜਾਂ ਵਾਕ-ਮਾਲਾ ਦੀ ਇਕ ਡਿਕਸ਼ਨਰੀ ਬਣਾਉਣਾ ਅਤੇ ਇਹ ਕਿੰਨੀ ਵਾਰੀ ਆਉਂਦਾ ਹੈ। `the quick red fox jumped over the lazy brown dog` ਦੀ ਸ਼ਬਦ ਆਵ੍ਰਿਤੀ 2 ਹੈ 'the' ਲਈ। -ਆਓ ਇੱਕ ਉਦਾਹਰਣ ਪਾਠ ਵੇਖੀਏ ਜਿੱਥੇ ਅਸੀਂ ਸ਼ਬਦਾਂ ਦੀ ਆਵ੍ਰਿਤੀ ਗਿਣਦੇ ਹਾਂ। ਰੁਡਯਾਰਡ ਕਿਪਲਿੰਗ ਦੀ ਕਵਿਤਾ The Winners ਵਿੱਚ ਹੇਠਾਂ ਦਿੱਤਾ ਗਇਆ ਪਦ ਹੈ: +ਆਓ ਇੱਕ ਉਦਾਹਰਨ ਵਾਕ ਨੂੰ ਦੇਖੀਏ ਜਿੱਥੇ ਅਸੀਂ ਸ਼ਬਦਾਂ ਦੀ ਆਵ੍ਰਿਤੀ ਗਿਣ ਰਹੇ ਹਾਂ। ਰੁਡਯਾਰਡ ਕਿਪਲਿੰਗ ਦੀ ਕਵਿਤਾ The Winners ਵਿੱਚ ਇਹ ਕਵਿਤਾ ਵਾਲਾ ਹਿੱਸਾ ਹੈ: ```output What the moral? Who rides may read. @@ -51,111 +51,171 @@ Down to Gehenna or up to the Throne, He travels the fastest who travels alone. ``` -ਜਿਵੇਂ ਕਿ ਵਾਕਾਂਸ਼ ਦੀ ਆਵ੍ਰਿਤੀ ਕੇਸ ਸੰਵੇਦਨਸ਼ੀਲ ਜਾਂ ਕੇਸ ਅਸੰਵੇਦਨਸ਼ੀਲ ਹੋ ਸਕਦੀ ਹੈ, ਵਾਕਾਂਸ਼ `a friend` ਦੀ ਆਵ੍ਰਿਤੀ 2 ਹੈ, `the` ਦੀ ਆਵ੍ਰਿਤੀ 6 ਹੈ, ਅਤੇ `travels` ਦੀ ਆਵ੍ਰਿਤੀ 2 ਹੈ। +ਜਿਵੇਂ ਕਿ ਵਾਕਾਂ ਦੀ ਆਵ੍ਰਿਤੀ ਲੋੜ ਅਨੁਸਾਰ ਕੇਸ-ਸੰਵੇਦਨਸ਼ੀਲ ਜਾਂ ਕੇਸ-ਅਸੰਵੇਦਨਸ਼ੀਲ ਹੋ ਸਕਦੀ ਹੈ, `a friend` ਦੀ ਆਵ੍ਰਿਤੀ 2 ਹੈ ਅਤੇ `the` ਦੀ 6 ਹੈ, ਅਤੇ `travels` 2 ਹੈ। ### ਐਨ-ਗ੍ਰਾਮਜ਼ -ਪਾਠ ਨੂੰ ਨਿਰਧਾਰਤ ਲੰਬਾਈ ਦੇ ਸ਼ਬਦਾਂ ਦੇ ਕ੍ਰਮਾਂ ਵਿੱਚ ਵੰਡਿਆ ਜਾ ਸਕਦਾ ਹੈ, ਇੱਕ ਸ਼ਬਦ (ਯੂਨੀਗ੍ਰਾਮ), ਦੋ ਸ਼ਬਦ (ਬਾਈਗ੍ਰਾਮ), ਤਿੰਨ ਸ਼ਬਦ (ਟ੍ਰਾਈਗ੍ਰਾਮ) ਜਾਂ ਕਿਸੇ ਵੀ ਗਿਣਤੀ ਦੇ ਸ਼ਬਦ (ਐਨ-ਗ੍ਰਾਮਜ਼)। +ਇੱਕ ਲਿਖਤ ਨੂੰ ਵਰਡਾਂ ਦੀ ਲੰਬਾਈ ਵਾਲੀਆਂ ਲੜੀਆਂ ਵਿੱਚ ਵੰਡਿਆ ਜਾ ਸਕਦਾ ਹੈ, ਇੱਕਸ਼ਬਦੀ (ਯੂਨੀਗ੍ਰਾਮ), ਦੋਸ਼ਬਦੀ (ਬਾਈਗ੍ਰਾਮਜ਼), ਤਿੰਨ ਸ਼ਬਦਾਂ ਵਾਲੀਆਂ (ਟ੍ਰਾਈਗ੍ਰਾਮਜ਼) ਜਾਂ ਕਿਸੇ ਵੀ ਗਿਣਤੀ ਦੇ ਸ਼ਬਦ (ਐਨ-ਗ੍ਰਾਮਜ਼) ਹੋ ਸਕਦੇ ਹਨ। -ਉਦਾਹਰਣ ਲਈ, `the quick red fox jumped over the lazy brown dog` ਦੇ ਨਾਲ ਇੱਕ ਐਨ-ਗ੍ਰਾਮ ਸਕੋਰ 2 ਹੇਠਾਂ ਦਿੱਤੇ ਗਏ ਐਨ-ਗ੍ਰਾਮਜ਼ ਪੈਦਾ ਕਰਦਾ ਹੈ: +ਉਦਾਹਰਨ ਲਈ, `the quick red fox jumped over the lazy brown dog` ਦਾ n-gram ਸਕੋਰ 2 ਲਈ ਹੇਠ ਲਿਖੇ n-ਗ੍ਰਾਮਜ਼ ਬਣਦੇ ਹਨ: -1. the quick -2. quick red -3. red fox -4. fox jumped -5. jumped over -6. over the -7. the lazy -8. lazy brown -9. brown dog +1. the quick +2. quick red +3. red fox +4. fox jumped +5. jumped over +6. over the +7. the lazy +8. lazy brown +9. brown dog -ਇਸਨੂੰ ਇੱਕ ਸਲਾਈਡਿੰਗ ਬਾਕਸ ਵਜੋਂ ਵਾਕ 'ਤੇ ਦਿਖਾਉਣਾ ਆਸਾਨ ਹੋ ਸਕਦਾ ਹੈ। ਇਹ 3 ਸ਼ਬਦਾਂ ਦੇ ਐਨ-ਗ੍ਰਾਮਜ਼ ਲਈ ਹੈ, ਹਰ ਵਾਕ ਵਿੱਚ ਐਨ-ਗ੍ਰਾਮ ਨੂੰ ਮੋਟੇ ਅੱਖਰਾਂ ਵਿੱਚ ਦਰਸਾਇਆ ਗਿਆ ਹੈ: +ਇਸਨੂੰ ਇੱਕ ਵਾਕ ਤੇ ਸਲਾਈਡ ਕਰ ਰਹੀ ਝੋਲੀ ਵਾਂਗ ਸੋਚਣਾ ਆਸਾਨ ਹੋ ਸਕਦਾ ਹੈ। ਇੱਥੇ 3 ਸ਼ਬਦਾਂ ਵਾਲੇ n-ਗ੍ਰਾਮਜ਼ ਲਈ ਸਲਾਈਡਿੰਗ ਬਾਕਸ ਦਿੱਤਾ ਗਿਆ ਹੈ, ਹਰ ਇੱਕ ਵਾਕ ਵਿੱਚ n-ਗ੍ਰਾਮ ਬੋਲਡ ਵਿਚ ਹੈ: -1. **the quick red** fox jumped over the lazy brown dog -2. the **quick red fox** jumped over the lazy brown dog -3. the quick **red fox jumped** over the lazy brown dog -4. the quick red **fox jumped over** the lazy brown dog -5. the quick red fox **jumped over the** lazy brown dog -6. the quick red fox jumped **over the lazy** brown dog -7. the quick red fox jumped over **the lazy brown** dog -8. the quick red fox jumped over the **lazy brown dog** +1. **the quick red** fox jumped over the lazy brown dog +2. the **quick red fox** jumped over the lazy brown dog +3. the quick **red fox jumped** over the lazy brown dog +4. the quick red **fox jumped over** the lazy brown dog +5. the quick red fox **jumped over the** lazy brown dog +6. the quick red fox jumped **over the lazy** brown dog +7. the quick red fox jumped over **the lazy brown** dog +8. the quick red fox jumped over the **lazy brown dog** -![ਐਨ-ਗ੍ਰਾਮਜ਼ ਸਲਾਈਡਿੰਗ ਵਿੰਡੋ](../../../../6-NLP/2-Tasks/images/n-grams.gif) +![n-grams sliding window](../../../../6-NLP/2-Tasks/images/n-grams.gif) -> ਐਨ-ਗ੍ਰਾਮ ਮੁੱਲ 3: ਇਨਫੋਗ੍ਰਾਫਿਕ [Jen Looper](https://twitter.com/jenlooper) ਦੁਆਰਾ। +> 3 ਦਾ n-ਗ੍ਰਾਮ ਮੁੱਲ: ਇਨਫੋਗ੍ਰਾਫਿਕ ਬਾਈ [Jen Looper](https://twitter.com/jenlooper) -### ਨਾਉਨ ਫਰੇਜ਼ ਐਕਸਟ੍ਰੈਕਸ਼ਨ +### ਨਾਂ-ਵਾਕ ਮਾਲਾ ਨਿਕਾਲਣਾ -ਜਿਆਦਾਤਰ ਵਾਕਾਂ ਵਿੱਚ ਇੱਕ ਨਾਉਨ ਹੁੰਦਾ ਹੈ ਜੋ ਵਾਕ ਦਾ ਵਿਸ਼ਾ ਜਾਂ ਵਸਤੂ ਹੁੰਦਾ ਹੈ। ਅੰਗਰੇਜ਼ੀ ਵਿੱਚ, ਇਹ ਅਕਸਰ 'a', 'an', ਜਾਂ 'the' ਦੇ ਨਾਲ ਪਛਾਣਯੋਗ ਹੁੰਦਾ ਹੈ। ਵਾਕ ਦੇ ਅਰਥ ਨੂੰ ਸਮਝਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਸਮੇਂ 'ਨਾਉਨ ਫਰੇਜ਼ ਨੂੰ ਕੱਢਣਾ' NLP ਵਿੱਚ ਇੱਕ ਆਮ ਕਾਰਜ ਹੈ। +ਜ਼ਿਆਦਾਤਰ ਵਾਕਾਂ ਵਿੱਚ ਇੱਕ ਨਾਂ ਹੁੰਦਾ ਹੈ ਜੋ ਵਾਕ ਦਾ ਵਿਚਾਰਧਾਰਾ ਸਮੇਤ ਬਿੰਦੂ ਹੁੰਦਾ ਹੈ। ਅੰਗਰੇਜ਼ੀ ਵਿੱਚ, ਇਹ ਆਮ ਤੌਰ ਤੇ 'a', 'an' ਜਾਂ 'the' ਦੇ ਨਾਲ ਪਹਚਾਣ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਨਾਂ-ਵਾਕ ਮਾਲਾ ਨੂੰ ਨਿਕਾਲ ਕੇ ਵਾਕ ਦਾ ਮਤਲਬ ਸਮਝਣਾ NLP ਵਿੱਚ ਆਮ ਕੰਮ ਹੈ। -✅ ਵਾਕ "I cannot fix on the hour, or the spot, or the look or the words, which laid the foundation. It is too long ago. I was in the middle before I knew that I had begun." ਵਿੱਚ ਕੀ ਤੁਸੀਂ ਨਾਉਨ ਫਰੇਜ਼ ਪਛਾਣ ਸਕਦੇ ਹੋ? +✅ ਵਾਕ "I cannot fix on the hour, or the spot, or the look or the words, which laid the foundation. It is too long ago. I was in the middle before I knew that I had begun." ਵਿੱਚ, ਕੀ ਤੁਸੀਂ ਨਾਂ-ਵਾਕ ਮਾਲਾ ਪਛਾਣ ਸਕਦੇ ਹੋ? -ਵਾਕ `the quick red fox jumped over the lazy brown dog` ਵਿੱਚ 2 ਨਾਉਨ ਫਰੇਜ਼ ਹਨ: **quick red fox** ਅਤੇ **lazy brown dog**। +ਵਾਕ `the quick red fox jumped over the lazy brown dog` ਵਿੱਚ 2 ਨਾਂ-ਵਾਕ ਮਾਲਾ ਹਨ: **quick red fox** ਅਤੇ **lazy brown dog**। -### ਸੈਂਟੀਮੈਂਟ ਵਿਸ਼ਲੇਸ਼ਣ +### ਭਾਵਨਾ ਵਿਸ਼ਲੇਸ਼ਣ -ਕਿਸੇ ਵਾਕ ਜਾਂ ਪਾਠ ਨੂੰ ਸੈਂਟੀਮੈਂਟ ਲਈ ਵਿਸ਼ਲੇਸ਼ਣ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ, ਜਾਂ ਇਹ ਕਿੰਨਾ *ਸਕਾਰਾਤਮਕ* ਜਾਂ *ਨਕਾਰਾਤਮਕ* ਹੈ। ਸੈਂਟੀਮੈਂਟ ਨੂੰ *ਪੋਲਾਰਿਟੀ* ਅਤੇ *ਵਸਤੂਵਾਦ/ਵਿਅਕਤਿਗਤਤਾ* ਵਿੱਚ ਮਾਪਿਆ ਜਾਂਦਾ ਹੈ। ਪੋਲਾਰਿਟੀ -1.0 ਤੋਂ 1.0 (ਨਕਾਰਾਤਮਕ ਤੋਂ ਸਕਾਰਾਤਮਕ) ਅਤੇ 0.0 ਤੋਂ 1.0 (ਸਭ ਤੋਂ ਵਸਤੂਵਾਦੀ ਤੋਂ ਸਭ ਤੋਂ ਵਿਅਕਤਿਗਤ) ਤੱਕ ਮਾਪੀ ਜਾਂਦੀ ਹੈ। +ਇੱਕ ਵਾਕ ਜਾਂ ਲਿਖਤ ਦੀ ਭਾਵਨਾ ਜਾਂ ਪੋਜ਼ੀਟਿਵ ਜਾਂ ਨੈਗੇਟਿਵ ਹੋਣ ਦੀ ਵਿਸ਼ਲੇਸ਼ਣਾ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ। ਭਾਵਨਾ ਦਾ ਮੂਲੱਅਕਾਂਕਣ *ਪੋਲਰਿਟੀ* ਅਤੇ *ਆਬਜੈਕਟਿਵਿਟੀ/ਸਬਜੈਕਟਿਵਿਟੀ* ਵਿੱਚ ਹੁੰਦਾ ਹੈ। ਪੋਲਰਿਟੀ -1.0 ਤੋਂ 1.0 ਤੱਕ ਮਾਪੀ ਜਾਂਦੀ ਹੈ (ਨੈਗੇਟਿਵ ਤੋਂ ਪੋਜ਼ੀਟਿਵ) ਅਤੇ 0.0 ਤੋਂ 1.0 ਤੱਕ (ਸਭ ਤੋਂ ਆਬਜੈਕਟਿਵ ਤੋਂ ਸਭ ਤੋਂ ਸਬਜੈਕਟਿਵ)। -✅ ਬਾਅਦ ਵਿੱਚ ਤੁਸੀਂ ਸਿੱਖੋਗੇ ਕਿ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਸੈਂਟੀਮੈਂਟ ਨਿਰਧਾਰਤ ਕਰਨ ਦੇ ਵੱਖ-ਵੱਖ ਤਰੀਕੇ ਹਨ, ਪਰ ਇੱਕ ਤਰੀਕਾ ਇਹ ਹੈ ਕਿ ਸ਼ਬਦਾਂ ਅਤੇ ਵਾਕਾਂਸ਼ਾਂ ਦੀ ਇੱਕ ਸੂਚੀ ਹੋਵੇ ਜੋ ਮਨੁੱਖੀ ਵਿਸ਼ੇਸ਼ਜਗਿਆ ਦੁਆਰਾ ਸਕਾਰਾਤਮਕ ਜਾਂ ਨਕਾਰਾਤਮਕ ਵਜੋਂ ਸ਼੍ਰੇਣੀਬੱਧ ਕੀਤੀ ਗਈ ਹੋਵੇ ਅਤੇ ਉਸ ਮਾਡਲ ਨੂੰ ਪਾਠ 'ਤੇ ਲਾਗੂ ਕਰਕੇ ਪੋਲਾਰਿਟੀ ਸਕੋਰ ਦੀ ਗਿਣਤੀ ਕੀਤੀ ਜਾਵੇ। ਕੀ ਤੁਸੀਂ ਦੇਖ ਸਕਦੇ ਹੋ ਕਿ ਇਹ ਕੁਝ ਹਾਲਾਤਾਂ ਵਿੱਚ ਕਿਵੇਂ ਕੰਮ ਕਰ ਸਕਦਾ ਹੈ ਅਤੇ ਹੋਰ ਹਾਲਾਤਾਂ ਵਿੱਚ ਨਹੀਂ? +✅ ਬਾਅਦ ਵਿੱਚ ਤੁਸੀਂ ਸਿੱਖੋਗੇ ਕਿ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਦੀ ਵਰਤੋਂ ਨਾਲ ਭਾਵਨਾ ਦੀ ਪਹਚਾਣ ਕਰਨ ਲਈ ਵੱਖ-ਵੱਖ ਤਰੀਕੇ ਹਨ, ਪਰ ਇੱਕ ਤਰੀਕਾ ਇਹ ਹੈ ਕਿ ਸ਼ਬਦਾਂ ਅਤੇ ਵਾਕ-ਮਾਲਾ ਦੀ ਸੂਚੀ ਬਣਾਈ ਜਾਵੇ ਜੋ ਮਨੁੱਖੀ ਵਿਸ਼ੇਸ਼ਗਿਆਨ ਦੁਆਰਾ ਪੋਜ਼ੀਟਿਵ ਜਾਂ ਨੈਗੇਟਿਵ ਵਰਗੀਕਰਨ ਹੁੰਦੀ ਹੈ ਅਤੇ ਉਸ ਮਾਡਲ ਨੂੰ ਲਿਖਤ 'ਤੇ ਲਾਗੂ ਕਰਕੇ ਪੋਲਰਿਟੀ ਸਕੋਰ ਕੱਢਿਆ ਜਾਵੇ। ਕੀ ਤੁਸੀਂ ਦੇਖ ਸਕਦੇ ਹੋ ਕਿ ਇਹ ਕੁਝ ਹਾਲਤਾਂ ਵਿੱਚ ਕਿਵੇਂ ਕੰਮ ਕਰੇਗਾ ਅਤੇ ਕੁਝ ਵਿੱਚ ਥੋੜ੍ਹਾ ਠੀਕ ਨਹੀਂ? -### ਇਨਫਲੈਕਸ਼ਨ +### ਇਨਫਲੇਕਸ਼ਨ -ਇਨਫਲੈਕਸ਼ਨ ਤੁਹਾਨੂੰ ਇੱਕ ਸ਼ਬਦ ਲੈਣ ਅਤੇ ਉਸਦਾ ਇਕਵਚਨ ਜਾਂ ਬਹੁਵਚਨ ਪ੍ਰਾਪਤ ਕਰਨ ਦੀ ਯੋਗਤਾ ਦਿੰਦਾ ਹੈ। +ਇਨਫਲੇਕਸ਼ਨ ਸਹਾਇਤਾ ਕਰਦਾ ਹੈ ਕਿ ਤੁਸੀਂ ਇੱਕ ਸ਼ਬਦ ਲੈ ਕੇ ਉਸਦਾ ਇੱਕਵਚਨ ਜਾਂ ਬਹੁਵਚਨ ਪ੍ਰਾਪਤ ਕਰ ਸਕੋ। -### ਲੈਮਟਾਈਜ਼ੇਸ਼ਨ +### ਲੈਮੈਟਾਈਜ਼ੇਸ਼ਨ -*ਲੈਮਾ* ਸ਼ਬਦਾਂ ਦੇ ਇੱਕ ਸੈੱਟ ਲਈ ਮੂਲ ਜਾਂ ਮੁੱਖ ਸ਼ਬਦ ਹੁੰਦਾ ਹੈ, ਉਦਾਹਰਣ ਲਈ *flew*, *flies*, *flying* ਦਾ ਲੈਮਾ ਕਿਰਿਆ *fly* ਹੈ। +ਇੱਕ *ਲੈਮਾ* ਉਹ ਮੂਲ ਸ਼ਬਦ ਜਾਂ ਹੇਡਵਰਡ ਹੁੰਦਾ ਹੈ ਜਿਸ ਦੇ ਤਹਿਤ ਕਈ ਸ਼ਬਦ ਆਉਂਦੇ ਹਨ, ਉਦਾਹਰਨ ਵਜੋਂ *flew*, *flies*, *flying* ਦਾ ਲੈਮਾ ਕਿਰਿਆ *fly* ਹੈ। -NLP ਖੋਜਕਰਤਾ ਲਈ ਕੁਝ ਲਾਭਦਾਇਕ ਡੇਟਾਬੇਸ ਵੀ ਉਪਲਬਧ ਹਨ, ਖਾਸ ਕਰਕੇ: +NLP ਖੋਜਕਾਰ ਲਈ ਕੁਝ ਮਦਦਗਾਰ ਡੇਟਾਬੇਸ ਵੀ ਉਪਲਬਧ ਹਨ, ਜੋ ਕਿ ਮੁੱਖ ਤੌਰ 'ਤੇ: -### ਵਰਡਨੈਟ +### WordNet -[ਵਰਡਨੈਟ](https://wordnet.princeton.edu/) ਸ਼ਬਦਾਂ, ਪਰਿਆਏਵਾਚੀ ਸ਼ਬਦਾਂ, ਵਿਰੋਧੀ ਸ਼ਬਦਾਂ ਅਤੇ ਕਈ ਹੋਰ ਵੇਰਵਿਆਂ ਦਾ ਡੇਟਾਬੇਸ ਹੈ ਜੋ ਕਈ ਵੱਖ-ਵੱਖ ਭਾਸ਼ਾਵਾਂ ਵਿੱਚ ਹਰ ਸ਼ਬਦ ਲਈ ਉਪਲਬਧ ਹੈ। ਇਹ ਅਨੁਵਾਦ, ਸਪੈਲ ਚੈੱਕਰ ਜਾਂ ਕਿਸੇ ਵੀ ਕਿਸਮ ਦੇ ਭਾਸ਼ਾ ਟੂਲ ਬਣਾਉਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਸਮੇਂ ਬਹੁਤ ਹੀ ਲਾਭਦਾਇਕ ਹੈ। +[WordNet](https://wordnet.princeton.edu/) ਸ਼ਬਦਾਂ, ਸਮਾਨਾਰਥਕ, ਵਿਰੋਧਾਰਥਕ ਅਤੇ ਹੋਰ ਬਹੁਤ ਸਾਰੇ ਵੇਰਵੇਆਂ ਦਾ ਡੇਟਾਬੇਸ ਹੈ ਜੋ ਕਈ ਭਾਸ਼ਾਵਾਂ ਲਈ ਹੈ। ਇਹ ਕਿਸੇ ਵੀ ਕਿਸਮ ਦੇ ਅਨੁਵਾਦ, ਸਪੈੱਲ ਚੈੱਕਰ ਜਾਂ ਭਾਸ਼ਾ ਸੰਦ ਬਣਾਉਣ ਵੇਲੇ ਬਹੁਤ ਮਹੱਤਵਪੂਰਨ ਹੈ। -## NLP ਲਾਇਬ੍ਰੇਰੀਆਂ +## NLP ਲਾਇਬ੍ਰੇਰੀਜ਼ -ਖੁਸ਼ਕਿਸਮਤੀ ਨਾਲ, ਤੁਹਾਨੂੰ ਇਹ ਸਾਰੀਆਂ ਤਕਨੀਕਾਂ ਖੁਦ ਬਣਾਉਣ ਦੀ ਲੋੜ ਨਹੀਂ ਹੈ, ਕਿਉਂਕਿ ਬਹੁਤ ਵਧੀਆ ਪਾਇਥਨ ਲਾਇਬ੍ਰੇਰੀਆਂ ਉਪਲਬਧ ਹਨ ਜੋ ਕੁਦਰਤੀ ਭਾਸ਼ਾ ਪ੍ਰਕਿਰਿਆ ਜਾਂ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਵਿੱਚ ਮਾਹਰ ਨਾ ਹੋਣ ਵਾਲੇ ਡਿਵੈਲਪਰਾਂ ਲਈ ਇਸਨੂੰ ਕਾਫ਼ੀ ਪਹੁੰਚਯੋਗ ਬਣਾਉਂਦੀਆਂ ਹਨ। ਅਗਲੇ ਪਾਠਾਂ ਵਿੱਚ ਇਨ੍ਹਾਂ ਦੇ ਹੋਰ ਉਦਾਹਰਣ ਸ਼ਾਮਲ ਹਨ, ਪਰ ਇੱਥੇ ਤੁਸੀਂ ਕੁਝ ਲਾਭਦਾਇਕ ਉਦਾਹਰਣ ਸਿੱਖੋਗੇ ਜੋ ਤੁਹਾਨੂੰ ਅਗਲੇ ਕਾਰਜ ਵਿੱਚ ਮਦਦ ਕਰਨਗੇ। +ਖੁਸ਼ਕਿਸਮਤੀ ਨਾਲ, ਤੁਹਾਨੂੰ ਇਹ ਸਾਰੀਆਂ ਤਕਨੀਕਾਂ ਖੁਦ ਬਣਾਉਣ ਦੀ ਲੋੜ ਨਹੀਂ ਹੈ, ਕਿਉਂਕਿ ਬਹੁਤ ਵਧੀਆ Python ਲਾਇਬ੍ਰੇਰੀਆਂ ਉਪਲਬਧ ਹਨ ਜੋ NLP ਜਾਂ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਵਿੱਚ ਤਕਨੀਕੀ ਮਾਹਿਰ ਨਾ ਹੋਣ ਵਾਲੇ ਵਿਕਾਸਕਾਰਾਂ ਲਈ ਬਹੁਤ ਸੌਖਾ ਕਰਦੀਆਂ ਹਨ। ਅਗਲੇ ਪਾਠਾਂ ਵਿੱਚ ਇਹਨਾਂ ਦੀਆਂ ਹੋਰ ਉਦਾਹਰਣਾਂ ਹਨ, ਪਰ ਇੱਥੇ ਤੁਸੀਂ ਕੁਝ ਮਦਦਗਾਰ ਉਦਾਹਰਣ ਸਿੱਖੋਗੇ ਜੋ ਅਗਲੇ ਕੰਮ ਵਿੱਚ ਸਹਾਇਕ ਹੋਣਗੇ। -### ਅਭਿਆਸ - `TextBlob` ਲਾਇਬ੍ਰੇਰੀ ਦੀ ਵਰਤੋਂ ਕਰਨਾ +### ਅਭਿਆਸ - `TextBlob` ਲਾਇਬ੍ਰੇਰੀ ਦੀ ਵਰਤੋਂ -ਆਓ ਇੱਕ ਲਾਇਬ੍ਰੇਰੀ ਵਰਤਦੇ ਹਾਂ ਜਿਸਨੂੰ TextBlob ਕਿਹਾ ਜਾਂਦਾ ਹੈ ਕਿਉਂਕਿ ਇਸ ਵਿੱਚ ਇਸ ਤਰ੍ਹਾਂ ਦੇ ਕਾਰਜਾਂ ਨੂੰ ਹੱਲ ਕਰਨ ਲਈ ਮਦਦਗਾਰ API ਹਨ। TextBlob "[NLTK](https://nltk.org) ਅਤੇ [pattern](https://github.com/clips/pattern) ਦੇ ਮਜ਼ਬੂਤ ਕੰਧਿਆਂ 'ਤੇ ਖੜ੍ਹਾ ਹੈ, ਅਤੇ ਦੋਹਾਂ ਨਾਲ ਚੰਗੀ ਤਰ੍ਹਾਂ ਕੰਮ ਕਰਦਾ ਹੈ।" ਇਸਦੇ API ਵਿੱਚ ਕਾਫ਼ੀ ਮਾਤਰਾ ਵਿੱਚ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਸ਼ਾਮਲ ਹੈ। +ਆਓ ਇੱਕ ਲਾਇਬ੍ਰੇਰੀ TextBlob ਵਰਤਾਂ ਜੋ ਇਹਨਾਂ ਕਿਸਮ ਦੇ ਕੰਮ ਕਰਨ ਲਈ ਮਦਦਗਾਰ APIs ਰੱਖਦੀ ਹੈ। TextBlob "[NLTK](https://nltk.org) ਅਤੇ [pattern](https://github.com/clips/pattern) ਦੇ ਵਿਸ਼ਾਲ ਭਰੋਸੇ 'ਤੇ ਖੜੀ ਹੈ ਅਤੇ ਦੋਵਾਂ ਨਾਲ ਵਧੀਆ ਤਰੀਕੇ ਨਾਲ ਕੰਮ ਕਰਦੀ ਹੈ।" ਇਸ API ਵਿੱਚ ਕਾਫੀ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਸ਼ਾਮਲ ਹੈ। -> ਨੋਟ: TextBlob ਲਈ ਇੱਕ ਲਾਭਦਾਇਕ [Quick Start](https://textblob.readthedocs.io/en/dev/quickstart.html#quickstart) ਗਾਈਡ ਉਪਲਬਧ ਹੈ ਜੋ ਅਨੁਭਵੀ ਪਾਇਥਨ ਡਿਵੈਲਪਰਾਂ ਲਈ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। +> ਨੋਟ: TextBlob ਲਈ ਇੱਕ ਮਦਦਗਾਰ [ਸ਼ੁਰੂਆਤੀ ਗਾਈਡ](https://textblob.readthedocs.io/en/dev/quickstart.html#quickstart) ਉਪਲਬਧ ਹੈ ਜੋ ਅਨੁਭਵੀ Python ਵਿਕਾਸਕਾਰਾਂ ਲਈ ਸਿਫਾਰਸ਼ੀ ਹੈ -ਜਦੋਂ *ਨਾਉਨ ਫਰੇਜ਼* ਦੀ ਪਛਾਣ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ, TextBlob ਨਾਉਨ ਫਰੇਜ਼ ਲੱਭਣ ਲਈ ਕਈ ਵਿਕਲਪ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ। +ਨਾਂ-ਵਾਕ ਮਾਲਾ ਦੀ ਪਛਾਣ ਕਰਨ ਵੇਲੇ, TextBlob ਕੁਝ ਏਜ ਗ੍ਰਹਿਣ ਕਰਨ ਵਾਲੇ ਵਿਕਲਪ ਦਿੰਦਾ ਹੈ ਜੋ ਨਾਂ-ਵਾਕ ਮਾਲਾ ਖੋਜਦੇ ਹਨ। -1. `ConllExtractor` ਨੂੰ ਵੇਖੋ। +1. `ConllExtractor` 'ਤੇ ਇੱਕ ਨਜ਼ਰ ਮਾਰੋ। ```python from textblob import TextBlob from textblob.np_extractors import ConllExtractor - # import and create a Conll extractor to use later + # ਆਯਾਤ ਕਰੋ ਅਤੇ ਬਾਅਦ ਵਿੱਚ ਵਰਤਣ ਲਈ ਇੱਕ ਕੌਨਲ ਇਕਸਟ੍ਰੈਕਟਰ ਬਣਾਓ extractor = ConllExtractor() - # later when you need a noun phrase extractor: + # ਬਾਅਦ ਵਿੱਚ ਜਦੋਂ ਤੈਨੂੰ ਇੱਕ ਨਾਉਂ ਫਰੇਜ਼ ਇਕਸਟ੍ਰੈਕਟਰ ਦੀ ਲੋੜ ਹੋਵੇ: user_input = input("> ") - user_input_blob = TextBlob(user_input, np_extractor=extractor) # note non-default extractor specified + user_input_blob = TextBlob(user_input, np_extractor=extractor) # ਨੋਨ-ਡਿਫੌਲਟ ਇਕਸਟ੍ਰੈਕਟਰ ਨਿਰਧਾਰਿਤ ਕੀਤਾ ਗਿਆ ਹੈ np = user_input_blob.noun_phrases ``` - > ਇੱਥੇ ਕੀ ਹੋ ਰਿਹਾ ਹੈ? [ConllExtractor](https://textblob.readthedocs.io/en/dev/api_reference.html?highlight=Conll#textblob.en.np_extractors.ConllExtractor) "ਇੱਕ ਨਾਉਨ ਫਰੇਜ਼ ਐਕਸਟ੍ਰੈਕਟਰ ਹੈ ਜੋ ConLL-2000 ਟ੍ਰੇਨਿੰਗ ਕਾਰਪਸ ਨਾਲ ਚੰਕ ਪਾਰਸਿੰਗ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ।" ConLL-2000 ਦਾ ਸੰਦਰਭ Computational Natural Language Learning ਦੀ 2000 ਕਾਨਫਰੰਸ ਨਾਲ ਹੈ। ਹਰ ਸਾਲ ਕਾਨਫਰੰਸ ਨੇ ਇੱਕ ਔਖੀ NLP ਸਮੱਸਿਆ ਨੂੰ ਹੱਲ ਕਰਨ ਲਈ ਵਰਕਸ਼ਾਪ ਦੀ ਮੇਜ਼ਬਾਨੀ ਕੀਤੀ, ਅਤੇ 2000 ਵਿੱਚ ਇਹ ਨਾਉਨ ਚੰਕਿੰਗ ਸੀ। ਇੱਕ ਮਾਡਲ Wall Street Journal 'ਤੇ ਟ੍ਰੇਨ ਕੀਤਾ ਗਿਆ ਸੀ, "ਸੈਕਸ਼ਨ 15-18 ਨੂੰ ਟ੍ਰੇਨਿੰਗ ਡੇਟਾ (211727 ਟੋਕਨ) ਵਜੋਂ ਅਤੇ ਸੈਕਸ਼ਨ 20 ਨੂੰ ਟੈਸਟ ਡੇਟਾ (47377 ਟੋਕਨ) ਵਜੋਂ ਵਰਤਿਆ ਗਿਆ।" ਤੁਸੀਂ ਵਰਤੀਆਂ ਗਈਆਂ ਪ੍ਰਕਿਰਿਆਵਾਂ ਨੂੰ [ਇੱਥੇ](https://www.clips.uantwerpen.be/conll2000/chunking/) ਅਤੇ [ਨਤੀਜੇ](https://ifarm.nl/erikt/research/np-chunking.html) ਵੇਖ ਸਕਦੇ ਹੋ। + > ਇੱਥੇ ਕੀ ਹੋ ਰਿਹਾ ਹੈ? [ConllExtractor](https://textblob.readthedocs.io/en/dev/api_reference.html?highlight=Conll#textblob.en.np_extractors.ConllExtractor) "ਇੱਕ ਨਾਂ-ਵਾਕ ਮਾਲਾ ਨਿਕਾਲਣ ਵਾਲਾ ਹੈ ਜੋ ConLL-2000 ਟ੍ਰੇਨਿੰਗ ਕਾਰਪਸ ਨਾਲ ਚੰਕ ਪਾਰਸਿੰਗ ਕਰਦਾ ਹੈ।" ConLL-2000 ਕਮਪਿਊਟੇਸ਼ਨਲ ਕੁਦਰਤੀ ਭਾਸ਼ਾ ਸਿੱਖਣ ਲਈ 2000 ਵਿੱਚ ਹੋਈ ਕਾਨਫਰੰਸ ਨਾਂ-ਚੰਕਿੰਗ ਸਮੱਸਿਆ ਨੂੰ ਲਕੜੀ ਜੀਵੇਂ ਸੀ। ਆਮ ਮਾਡਲ ਵਿੱਲ ਸਟਰੀਟ ਜਰਨਲ 'ਤੇ ਟ੍ਰੇਨ ਹੋਇਆ ਜਿਸ ਵਿੱਚ "ਐਲਾਨ 15-18 ਟ੍ਰੇਨਿੰਗ ਡਾਟਾ (211727 ਟੋਕਨ) ਅਤੇ ਐਲਾਨ 20 ਟੈਸਟ ਡਾਟਾ (47377 ਟੋਕਨ)" ਵਜੋਂ ਲਿਆ ਗਿਆ। ਤੁਸੀਂ ਇੱਥੇ ਪ੍ਰਕਿਰਿਆਵਾਂ ਦੇਖ ਸਕਦੇ ਹੋ [ਇੱਥੇ](https://www.clips.uantwerpen.be/conll2000/chunking/) ਅਤੇ [ਨਤੀਜੇ](https://ifarm.nl/erikt/research/np-chunking.html)। -### ਚੁਣੌਤੀ - NLP ਨਾਲ ਆਪਣੇ ਬੋਟ ਨੂੰ ਸੁਧਾਰਨਾ +### ਚੁਣੌਤੀ - ਆਪਣੇ ਬੋਟ ਨੂੰ NLP ਨਾਲ ਮਜ਼ਬੂਤ ਬਣਾਓ -ਪਿਛਲੇ ਪਾਠ ਵਿੱਚ ਤੁਸੀਂ ਇੱਕ ਬਹੁਤ ਹੀ ਸਧਾਰਨ Q&A ਬੋਟ ਬਣਾਈ ਸੀ। ਹੁਣ, ਤੁਸੀਂ ਮਾਰਵਿਨ ਨੂੰ ਹੋਰ ਸਹਾਨਭੂਤਿਕ ਬਣਾਉਣ ਜਾ ਰਹੇ ਹੋ, ਜੋ ਤੁਹਾਡੇ ਇਨਪੁਟ ਦਾ ਸੈਂਟੀਮੈਂਟ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰੇਗਾ ਅਤੇ ਉਸਦੇ ਅਨੁਸਾਰ ਜਵਾਬ ਦੇਵੇਗਾ। ਤੁਸੀਂ ਇੱਕ `noun_phrase` ਦੀ ਪਛਾਣ ਵੀ ਕਰਨੀ ਹੋਵੇਗੀ ਅਤੇ ਉਸਦੇ ਬਾਰੇ ਹੋਰ ਇਨਪੁਟ ਮੰਗਣਾ ਹੋਵੇਗਾ। +ਪਿਛਲੇ ਪਾਠ ਵਿੱਚ ਤੁਸੀਂ ਇੱਕ ਬਹੁਤ ਸਧਾਰਣ Q&A ਬੋਟ ਬਣਾਇਆ ਸੀ। ਹੁਣ, ਤੁਸੀਂ ਮਾਰਵਿਨ ਨੂੰ ਥੋੜ੍ਹਾ ਜ਼ਿਆਦਾ ਸਮਝਦਾਰ ਬਣਾਉਣ ਲਈ ਭਾਵਨਾ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰੋਗੇ ਅਤੇ ਉਸ ਦੀ ਭਾਵਨਾ ਦੇ ਅਨੁਸਾਰ ਜਵਾਬ ਛਾਪੋਗੇ। ਤੁਹਾਨੂੰ ਇੱਕ `noun_phrase` ਵੀ ਪਛਾਣਣਾ ਹੋਵੇਗਾ ਅਤੇ ਉਸ ਬਾਰੇ ਹੋਰ ਪੁੱਛਣਾ ਹੋਵੇਗਾ। -ਤੁਹਾਡੇ ਬਿਹਤਰ ਗੱਲਬਾਤੀ ਬੋਟ ਬਣਾਉਣ ਦੇ ਕਦਮ: +ਬਿਹਤਰ ਸੰਵਾਦੀ ਬੋਟ ਬਣਾਉਣ ਲਈ ਤੁਹਾਡੇ ਕਦਮ: -1. ਯੂਜ਼ਰ ਨੂੰ ਸਲਾਹ ਦਿਓ ਕਿ ਬੋਟ ਨਾਲ ਕਿਵੇਂ ਗੱਲਬਾਤ ਕਰਨੀ ਹੈ। -2. ਲੂਪ ਸ਼ੁਰੂ ਕਰੋ - 1. ਯੂਜ਼ਰ ਇਨਪੁਟ ਲਵੋ - 2. ਜੇ ਯੂਜ਼ਰ ਨੇ ਬਾਹਰ ਜਾਣ ਦੀ ਮੰਗ ਕੀਤੀ ਹੈ, ਤਾਂ ਬਾਹਰ ਜਾਓ - 3. ਯੂਜ਼ਰ ਇਨਪੁਟ ਪ੍ਰਕਿਰਿਆ ਕਰੋ ਅਤੇ ਸੈਂਟੀਮੈਂਟ ਜਵਾਬ ਨਿਰਧਾਰਤ ਕਰੋ - 4. ਜੇ ਸੈਂਟੀਮੈਂਟ ਵਿੱਚ ਇੱਕ ਨਾਉਨ ਫਰੇਜ਼ ਪਾਇਆ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਇਸਨੂੰ ਬਹੁਵਚਨ ਬਣਾਓ ਅਤੇ ਉਸ ਵਿਸ਼ੇ 'ਤੇ ਹੋਰ ਇਨਪੁਟ ਮੰਗੋ - 5. ਜਵਾਬ ਪ੍ਰਿੰਟ ਕਰੋ -3. ਕਦਮ 2 +1. ਯੂਜ਼ਰ ਨੂੰ ਬੋਟ ਨਾਲ ਕਿਵੇਂ ਗੱਲਬਾਤ ਕਰਨੀ ਹੈ ਉਸ ਦੀ ਸੂਚਨਾ ਛਾਪੋ +2. ਲੂਪ ਸ਼ੁਰੂ ਕਰੋ + 1. ਯੂਜ਼ਰ ਇਨਪੁੱਟ ਲਵੋ + 2. ਜੇ ਯੂਜ਼ਰ ਨੇ ਬੰਦ ਕਰਨ ਲਈ ਕਿਹਾ, ਤਾਂ ਬੰਦ ਕਰੋ + 3. ਯੂਜ਼ਰ ਇਨਪੁੱਟ ਦਾ ਪ੍ਰੋਸੈਸ ਕਰੋ ਅਤੇ ਭਾਵਨਾ ਅਨੁਸਾਰ ਜਵਾਬ ਤੈਅ ਕਰੋ + 4. ਜੇ ਭਾਵਨਾ ਵਿੱਚ ਨਾਂ-ਵਾਕ ਮਾਲਾ ਪਛਾਣ ਹੋ ਗਿਆ, ਤਾਂ ਉਸਦਾ ਬਹੁਵਚਨ ਬਣਾਕੇ ਉਸ ਬਾਰੇ ਹੋਰ ਪੁੱਛੋ + 5. ਜਵਾਬ ਛਾਪੋ +3. ਕਦਮ 2 ਵੱਲ ਲੂਪ ਨੂੰ ਦੁਹਰਾਓ + +ਇਸੇ ਤਰ੍ਹਾਂ, TextBlob ਦੀ ਵਰਤੋਂ ਨਾਲ ਭਾਵਨਾ ਨਿਰਧਾਰਿਤ ਕਰਨ ਦਾ ਕੋਡ ਟੁੱਟਾ ਦਿੱਤਾ ਗਿਆ ਹੈ। ਨੋਟ ਕਰੋ ਕਿ ਸਿਰਫ ਚਾਰ *ਭਾਵਨਾ ਦੇ ਗਰੇਡੀਐਂਟ* ਹਨ (ਤੁਸੀਂ ਵੱਧ ਵੀ ਰੱਖ ਸਕਦੇ ਹੋ): + +```python +if user_input_blob.polarity <= -0.5: + response = "Oh dear, that sounds bad. " +elif user_input_blob.polarity <= 0: + response = "Hmm, that's not great. " +elif user_input_blob.polarity <= 0.5: + response = "Well, that sounds positive. " +elif user_input_blob.polarity <= 1: + response = "Wow, that sounds great. " +``` + +ਕੁਝ ਨਮੂਨਾ ਆਉਟਪੁੱਟ ਦਿੱਤਾ ਗਿਆ ਹੈ (ਯੂਜ਼ਰ ਇਨਪੁੱਟ > ਨਾਲ ਸ਼ੁਰੂ ਹੋ ਰਿਹਾਂ ਹਨ): + +```output +Hello, I am Marvin, the friendly robot. +You can end this conversation at any time by typing 'bye' +After typing each answer, press 'enter' +How are you today? +> I am ok +Well, that sounds positive. Can you tell me more? +> I went for a walk and saw a lovely cat +Well, that sounds positive. Can you tell me more about lovely cats? +> cats are the best. But I also have a cool dog +Wow, that sounds great. Can you tell me more about cool dogs? +> I have an old hounddog but he is sick +Hmm, that's not great. Can you tell me more about old hounddogs? +> bye +It was nice talking to you, goodbye! +``` + +ਇਸ ਕੰਮ ਦਾ ਇੱਕ ਸੰਭਾਵਤ ਹੱਲ [ਇੱਥੇ](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/2-Tasks/solution/bot.py) ਹੈ + +✅ ਗਿਆਨ ਜਾਂਚ + +1. ਕੀ ਤੁਸੀਂ ਸੋਚਦੇ ਹੋ ਕਿ ਸਮਝਦਾਰ ਜਵਾਬ ਕਿਸੇ ਨੂੰ ਇਹ ਭਰਮ ਦਿਵਾਂ ਕਿ ਬੋਟ ਨੇ ਵਾਕਈ ਉਸਨੂੰ ਸਮਝਿਆ ਹੈ? +2. ਕੀ ਨਾਂ-ਵਾਕ ਮਾਲਾ ਪਛਾਣਣਾ ਬੋਟ ਨੂੰ ਵਧੇਰੇ 'ਵਿਸ਼ਵਾਸਯੋਗ' ਬਣਾਉਂਦਾ ਹੈ? +3. ਕਿਸੇ ਵਾਕ ਵਿਚੋਂ 'ਨਾਂ-ਵਾਕ ਮਾਲਾ' ਨਿਕਾਲਣਾ ਇਕ ਉਪਯੋਗੀ ਚੀਜ਼ ਕਿਉਂ ਹੈ? + +--- + +ਪਿਛਲੇ ਗਿਆਨ ਜਾਂਚ ਵਿੱਚ ਦਿੱਤਾ ਬੋਟ ਬਣਾਉ ਅਤੇ ਕਿਸੇ ਦੋਸਤ ਉੱਤੇ ਇਸਦੀ ਜਾਂਚ ਕਰੋ। ਕੀ ਇਹ ਦੋਸਤ ਨੂੰ ਭਰਮਿਤ ਕਰ ਸਕਦਾ ਹੈ? ਕੀ ਤੁਸੀਂ ਆਪਣੇ ਬੋਟ ਨੂੰ ਵਧੇਰੇ 'ਵਿਸ਼ਵਾਸਯੋਗ' ਬਣਾ ਸਕਦੇ ਹੋ? + +## 🚀ਚੁਣੌਤੀ + +ਪਿਛਲੇ ਗਿਆਨ ਜਾਂਚ ਵਿੱਚੋਂ ਕੋਈ ਕੰਮ ਚੁਣ ਕੇ ਇਸ ਨੂੰ ਲਾਗੂ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ। ਬੋਟ ਦੀ ਕਿਸੇ ਦੋਸਤ ਉੱਤੇ ਜਾਂਚ ਕਰੋ। ਕੀ ਇਹ ਉਸਨੂੰ ਭਰਮਿਤ ਕਰ ਸਕਦਾ ਹੈ? ਕੀ ਤੁਸੀਂ ਆਪਣੇ ਬੋਟ ਨੂੰ ਵਧੇਰੇ 'ਵਿਸ਼ਵਾਸਯੋਗ' ਬਣਾ ਸਕਦੇ ਹੋ? + +## [ਬਾਦ ਦੀ ਕਲਾਸ ਕਵੀਜ਼](https://ff-quizzes.netlify.app/en/ml/) + +## ਸਮੀਖਿਆ ਅਤੇ ਸਵੈ ਅਧਿਐਨ + +ਅੱਗੇ ਦੇ ਕੁਝ ਪਾਠਾਂ ਵਿੱਚ ਤੁਸੀਂ ਭਾਵਨਾ ਵਿਸ਼ਲੇਸ਼ਣ ਬਾਰੇ ਹੋਰ ਜਾਣੋਗੇ। ਇਸ ਦਿਲਚਸਪ ਤਕਨੀਕ ਨੂੰ [KDNuggets](https://www.kdnuggets.com/tag/nlp) ਵਰਗੇ ਲੇਖਾਂ ਵਿੱਚ ਖੋਜੋ। + +## ਅਸਾਈਨਮੈਂਟ + +[ਬੋਟ ਨਾਲ ਗੱਲਬਾਤ ਕਰਵਾਉ](assignment.md) --- -**ਅਸਵੀਕਾਰਨਾ**: -ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਚੱਜੇਪਣ ਹੋ ਸਕਦੇ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼, ਜੋ ਇਸਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਹੈ, ਨੂੰ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file + +**ਅਸਵੀਕਾਰੋਪਣ**: +ਇਸ ਦਸਤਾਵੇਜ਼ ਦਾ ਅਨੁਵਾਦ ਏਆਈ ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀਤਾਵਾਂ ਲਈ ਯਤਨਸ਼ੀਲ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਰੱਖੋ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸਮੱਤਿਆਵਾਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਆਪਣੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਕ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਜਰੂਰੀ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫ਼ਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਅਸੀਂ ਇਸ ਅਨੁਵਾਦ ਦੇ ਉਪਯੋਗ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੀਆਂ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀਆਂ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆਵਾਂ ਲਈ ਜਵਾਬਦੇਹ ਨਹੀਂ ਹਾਂ। + \ No newline at end of file diff --git a/translations/pa/6-NLP/3-Translation-Sentiment/README.md b/translations/pa/6-NLP/3-Translation-Sentiment/README.md index 5c8e6e0e3..b7b4c88e9 100644 --- a/translations/pa/6-NLP/3-Translation-Sentiment/README.md +++ b/translations/pa/6-NLP/3-Translation-Sentiment/README.md @@ -1,61 +1,61 @@ -# ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਨਾਲ ਅਨੁਵਾਦ ਅਤੇ ਭਾਵਨਾ ਵਿਸ਼ਲੇਸ਼ਣ +# ਐਮਐਲ ਨਾਲ ਅਨੁਵਾਦ ਅਤੇ ਭਾਵਨਾ ਵਿਸ਼ਲੇਸ਼ਣ -ਪਿਛਲੇ ਪਾਠਾਂ ਵਿੱਚ ਤੁਸੀਂ ਸਿੱਖਿਆ ਕਿ ਕਿਵੇਂ `TextBlob` ਵਰਤ ਕੇ ਇੱਕ ਬੁਨਿਆਦੀ ਬੋਟ ਬਣਾਈ ਜਾ ਸਕਦੀ ਹੈ। ਇਹ ਲਾਇਬ੍ਰੇਰੀ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਨੂੰ ਪਿੱਛੇ-ਪਿੱਛੇ ਵਰਤਦੀ ਹੈ ਤਾਂ ਜੋ ਨਾਉਨ ਫਰੇਜ਼ ਨਿਕਾਲਣ ਵਰਗੇ ਬੁਨਿਆਦੀ NLP ਕੰਮ ਕੀਤੇ ਜਾ ਸਕਣ। ਗਣਨਾਤਮਕ ਭਾਸ਼ਾਵਿਜ਼ਾਨ ਵਿੱਚ ਇੱਕ ਹੋਰ ਮਹੱਤਵਪੂਰਨ ਚੁਣੌਤੀ ਹੈ ਇੱਕ ਭਾਸ਼ਾ ਤੋਂ ਦੂਜੀ ਭਾਸ਼ਾ ਵਿੱਚ ਵਾਕਾਂਸ਼ ਦਾ ਸਹੀ _ਅਨੁਵਾਦ_। +ਪਿਛਲੇ ਪਾਠਾਂ ਵਿੱਚ ਤੁਸੀਂ ਸਿੱਖਿਆ ਕਿ ਕਿਵੇਂ `TextBlob` ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇੱਕ ਬੁਨਿਆਦੀ ਬੋਟ ਬਣਾਈ ਜਾ ਸਕਦੀ ਹੈ, ਜੋ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਨੂੰ ਪਿਛੋਕੜ ਵਿੱਚ ਵਰਤਦਾ ਹੈ ਤਾਂ ਕਿ ਮੂਲ ਭਾਸ਼ਾ ਪ੍ਰਕਿਰਿਆ ਕੰਮ ਜਿਵੇਂ ਕਿ ਨਾਉਨ ਫ੍ਰੇਜ਼ ਨਿਕਾਸ ਕਰ ਸਕੇ। ਕਮਪਿਊਟੇਸ਼ਨਲ ਭਾਸ਼ਾਵਿਗਿਆਨ ਵਿੱਚ ਇੱਕ ਹੋਰ ਮਹੱਤਵਪੂਰਨ ਚੁਣੌਤੀ ਹੈ ਇੱਕ ਬੋਲੇ ਜਾਂ ਲਿਖਤੀ ਭਾਸ਼ਾ ਤੋਂ ਦੂਜੀ ਭਾਸ਼ਾ ਵਿੱਚ ਵਾਕ ਦਾ ਸਹੀ _ਅਨੁਵਾਦ_ ਕਰਨਾ। -## [ਪਾਠ-ਪਹਿਲਾਂ ਕਵਿਜ਼](https://ff-quizzes.netlify.app/en/ml/) +## [ਪ੍ਰੀ-ਲੈਕਚਰ ਕਵਿਜ਼](https://ff-quizzes.netlify.app/en/ml/) -ਅਨੁਵਾਦ ਇੱਕ ਬਹੁਤ ਮੁਸ਼ਕਲ ਸਮੱਸਿਆ ਹੈ ਕਿਉਂਕਿ ਹਜ਼ਾਰਾਂ ਭਾਸ਼ਾਵਾਂ ਹਨ ਅਤੇ ਹਰ ਇੱਕ ਦੀ ਆਪਣੀ ਵੱਖਰੀ ਵਿਆਕਰਣ ਦੀ ਬਣਤਰ ਹੋ ਸਕਦੀ ਹੈ। ਇੱਕ ਪਹੁੰਚ ਇਹ ਹੈ ਕਿ ਇੱਕ ਭਾਸ਼ਾ, ਜਿਵੇਂ ਕਿ ਅੰਗਰੇਜ਼ੀ, ਦੀ ਵਿਆਕਰਣ ਦੇ ਨਿਯਮਾਂ ਨੂੰ ਇੱਕ ਗੈਰ-ਭਾਸ਼ਾ ਨਿਰਭਰ ਬਣਤਰ ਵਿੱਚ ਬਦਲਿਆ ਜਾਵੇ, ਅਤੇ ਫਿਰ ਇਸਨੂੰ ਦੂਜੀ ਭਾਸ਼ਾ ਵਿੱਚ ਬਦਲਿਆ ਜਾਵੇ। ਇਸ ਪਹੁੰਚ ਵਿੱਚ ਹੇਠਾਂ ਦਿੱਤੇ ਕਦਮ ਸ਼ਾਮਲ ਹਨ: +ਅਨੁਵਾਦ ਇੱਕ ਬਹੁਤ ਮੁਸ਼ਕਲ ਸਮੱਸਿਆ ਹੈ ਜਿਸ ਨੂੰ ਹਜ਼ਾਰਾਂ ਭਾਸ਼ਾਵਾਂ ਹੋਣ ਨਾਲ ਵਧਾ ਦਿੱਤਾ ਗਿਆ ਹੈ ਅਤੇ ਹਰ ਇਕ ਭਾਸ਼ਾ ਦੇ ਵਿਆਕਰਣ ਦੇ ਕਾਇਦੇ ਕਾਫੀ ਵੱਖਰੇ ਹੋ ਸਕਦੇ ਹਨ। ਇੱਕ ਤਰੀਕਾ ਇਹ ਹੈ ਕਿ ਇੱਕ ਭਾਸ਼ਾ, ਜਿਵੇਂ ਅੰਗ੍ਰੇਜ਼ੀ ਦੇ ਫਾਰਮਲ ਗ੍ਰੈਮਰ ਨਿਯਮਾਂ ਨੂੰ ਕਿਸੇ ਭਾਸ਼ਾ-ਨਿਰਪੇਕ ਸਰਚਨਾ ਵਿੱਚ ਬਦਲਿਆ ਜਾਵੇ, ਅਤੇ ਫਿਰ ਉਸ ਨੂੰ ਵਾਪਸ ਕਿਸੇ ਦੂਜੀ ਭਾਸ਼ਾ ਵਿੱਚ ਅਨੁਵਾਦ ਕਰਨ ਲਈ ਬਦਲਿਆ ਜਾਵੇ। ਇਸ ਤਰੀਕੇ ਨਾਲ ਤੁਸੀਂ ਹੇਠਲੀਆਂ ਕਦਮਾਂ ਨੂੰ ਲੈਂਦੇ: -1. **ਪਛਾਣ**। ਇਨਪੁਟ ਭਾਸ਼ਾ ਦੇ ਸ਼ਬਦਾਂ ਨੂੰ ਨਾਉਨ, ਕਿਰਿਆ ਆਦਿ ਵਿੱਚ ਪਛਾਣੋ ਜਾਂ ਟੈਗ ਕਰੋ। -2. **ਅਨੁਵਾਦ ਬਣਾਓ**। ਹਰ ਸ਼ਬਦ ਦਾ ਟੀਕਾ ਲਗਾ ਕੇ ਟੀਕਾ ਭਾਸ਼ਾ ਦੇ ਫਾਰਮੈਟ ਵਿੱਚ ਸਿੱਧਾ ਅਨੁਵਾਦ ਬਣਾਓ। +1. **ਪਹਚਾਣ ਕਰੋ**। ਇਨਪੁੱਟ ਭਾਸ਼ਾ ਵਿੱਚ ਸ਼ਬਦਾਂ ਨੂੰ ਨਾਉਨ, ਵਰਬ ਆਦਿ ਵਜੋਂ ਪਹਚਾਣੋ ਜਾਂ ਟੈਗ ਕਰੋ। +2. **ਅਨੁਵਾਦ ਬਣਾਓ**। ਹਰ ਸ਼ਬਦ ਦਾ ਲਕੜੀ ਭਾਸ਼ਾ ਦੇ ਫਾਰਮੈਟ ਵਿੱਚ ਸਿੱਧਾ ਅਨੁਵਾਦ ਬਣਾਓ। -### ਉਦਾਹਰਣ ਵਾਕ, ਅੰਗਰੇਜ਼ੀ ਤੋਂ ਆਇਰਿਸ਼ +### ਉਦਾਹਰਨ ਵਾਕ, ਅੰਗ੍ਰੇਜ਼ੀ ਤੋਂ ਆਇਰਿਸ਼ -'ਅੰਗਰੇਜ਼ੀ' ਵਿੱਚ, ਵਾਕ _I feel happy_ ਤਿੰਨ ਸ਼ਬਦਾਂ ਵਿੱਚ ਹੈ: +'ਅੰਗ੍ਰੇਜ਼ੀ' ਵਿੱਚ, ਵਾਕ _I feel happy_ ਤਿੰਨ ਸ਼ਬਦਾਂ ਦਾ ਹੁੰਦਾ ਹੈ ਅਤੇ ਕ੍ਰਮ ਹੈ: -- **ਵਿਸ਼ਾ** (I) +- **ਵਿਸ਼ਾ** (I) - **ਕਿਰਿਆ** (feel) -- **ਵਿਸ਼ੇਸ਼ਣ** (happy) +- **ਵਿਸ਼ੇਸ਼ਣ** (happy) -ਪਰ 'ਆਇਰਿਸ਼' ਭਾਸ਼ਾ ਵਿੱਚ, ਇਹੀ ਵਾਕ ਬਹੁਤ ਵੱਖਰੀ ਵਿਆਕਰਣ ਬਣਤਰ ਰੱਖਦਾ ਹੈ - ਜਿਵੇਂ "*happy*" ਜਾਂ "*sad*" ਜਜ਼ਬਾਤਾਂ ਨੂੰ *ਤੁਹਾਡੇ ਉੱਤੇ* ਹੋਣ ਦੇ ਤੌਰ ਤੇ ਪ੍ਰਗਟ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। +ਪਰ 'ਆਇਰਿਸ਼' ਭਾਸ਼ਾ ਵਿੱਚ, ਉਹੀ ਵਾਕ ਕਾਫੀ ਵੱਖਰਾ ਵਿਅਾਕਰਣਕ ਡھانਚਾ ਰੱਖਦਾ ਹੈ - ਜਜ਼ਬਾਤ ਜਿਵੇਂ "*happy*" ਜਾਂ "*sad*" ਨੂੰ ਤੁਹਾਡੇ ਉੱਤੇ ਹੋਣ ਦੇ ਤੌਰ ’ਤੇ ਵਿਅਕਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। -ਅੰਗਰੇਜ਼ੀ ਵਾਕ `I feel happy` ਦਾ ਆਇਰਿਸ਼ ਵਿੱਚ ਅਨੁਵਾਦ `Tá athas orm` ਹੁੰਦਾ ਹੈ। ਇੱਕ *literal* ਅਨੁਵਾਦ `Happy is upon me` ਹੁੰਦਾ ਹੈ। +ਅੰਗ੍ਰੇਜ਼ੀ ਫਰੇਜ਼ `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) +- **ਵਿਸ਼ੇਸ਼ਣ** (athas ਜਾਂ happy) +- **ਵਿਸ਼ਾ** (orm ਜਾਂ upon me) ## ਅਨੁਵਾਦ -ਇੱਕ ਸਧਾਰਨ ਅਨੁਵਾਦ ਪ੍ਰੋਗਰਾਮ ਸਿਰਫ਼ ਸ਼ਬਦਾਂ ਦਾ ਅਨੁਵਾਦ ਕਰ ਸਕਦਾ ਹੈ, ਵਾਕ ਬਣਤਰ ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰਦੇ ਹੋਏ। +ਇੱਕ ਸਧਾਰਨ ਅਨੁਵਾਦ ਪ੍ਰੋਗਰਾਮ ਸਿਰਫ ਸ਼ਬਦਾਂ ਦਾ ਅਨੁਵਾਦ ਕਰ ਸਕਦਾ ਹੈ, ਵਾਕ ਦੇ ਸਰਚਨਾ ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰਦਾ ਹੈ। -✅ ਜੇ ਤੁਸੀਂ ਵੱਡੇ ਹੋ ਕੇ ਦੂਜੀ (ਜਾਂ ਤੀਜੀ ਜਾਂ ਹੋਰ) ਭਾਸ਼ਾ ਸਿੱਖੀ ਹੈ, ਤਾਂ ਤੁਸੀਂ ਸ਼ਾਇਦ ਆਪਣੇ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਸੋਚਦੇ ਹੋਏ ਸ਼ੁਰੂ ਕੀਤਾ ਹੋਵੇਗਾ, ਇੱਕ ਸ਼ਬਦ-ਦਰ-ਸ਼ਬਦ ਅਨੁਵਾਦ ਆਪਣੇ ਦਿਮਾਗ ਵਿੱਚ ਕੀਤਾ ਹੋਵੇਗਾ, ਅਤੇ ਫਿਰ ਆਪਣਾ ਅਨੁਵਾਦ ਬੋਲਿਆ ਹੋਵੇਗਾ। ਇਹ ਕੁਝ ਉਹੀ ਹੈ ਜੋ ਸਧਾਰਨ ਅਨੁਵਾਦ ਕੰਪਿਊਟਰ ਪ੍ਰੋਗਰਾਮ ਕਰਦੇ ਹਨ। ਫਲੂਐਂਸੀ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਇਸ ਪੜਾਅ ਤੋਂ ਪਾਰ ਹੋਣਾ ਮਹੱਤਵਪੂਰਨ ਹੈ! +✅ ਜੇ ਤੁਸੀਂ ਵੱਡੇ ਹੋ ਕੇ ਦੂਜੀ (ਜਾਂ ਤੀਜੀ ਜਾਂ ਹੋਰ) ਭਾਸ਼ਾ ਸਿੱਖੀ ਹੈ, ਤਾਂ ਸ਼ੁਰੂ ਵਿੱਚ ਤੁਸੀਂ ਆਪਣੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਸੋਚਦੇ, ਦੂਜੀ ਭਾਸ਼ਾ ਵਿੱਚ ਸ਼ਬਦ-ਬ-ਸ਼ਬਦ ਅਨੁਵਾਦ ਕਰਦੇ ਅਤੇ ਫਿਰ ਬੋਲਦੇ ਹੋ। ਇਹ ਸਧਾਰਨ ਅਨੁਵਾਦ ਕਮਪਿਊਟਰ ਪ੍ਰੋਗਰਾਮਾਂ ਵਾਂਗ ਹੈ। ਫਲੂਐਨਸੀ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਇਸ ਪੜਾਅ ਤੋਂ ਉੱਪਰ ਜਾਣਾ ਜ਼ਰੂਰੀ ਹੈ! -ਸਧਾਰਨ ਅਨੁਵਾਦ ਖਰਾਬ (ਅਤੇ ਕਈ ਵਾਰ ਮਜ਼ੇਦਾਰ) ਗਲਤ ਅਨੁਵਾਦਾਂ ਦੀ ਵਜ੍ਹਾ ਬਣਦਾ ਹੈ: `I feel happy` ਦਾ literal ਅਨੁਵਾਦ `Mise bhraitheann athas` ਆਇਰਿਸ਼ ਵਿੱਚ ਹੁੰਦਾ ਹੈ। ਇਸਦਾ literal ਅਰਥ `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*) ਮੂਲ ਅਤੇ ਟੀਕਾ ਭਾਸ਼ਾਵਾਂ ਵਿੱਚ ਹੋਵੇ, ਤਾਂ ਇਹ ਅਨੁਵਾਦ ਵਿੱਚ ਕੰਮ ਕਰ ਸਕਦਾ ਹੈ। +ਹੁਣ ਤੱਕ ਤੁਸੀਂ ਫਾਰਮਲ ਨਿਯਮਾਂ ਦੀ ਭਾਸ਼ਾ ਪ੍ਰਕਿਰਿਆ ਬਾਰੇ ਸਿੱਖਿਆ ਹੈ। ਇੱਕ ਹੋਰ ਤਰੀਕਾ ਹੈ ਸ਼ਬਦਾਂ ਦੇ ਮਤਲਬ ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰਕੇ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਪੈਟਰਨ ਦੀ ਪਹਚਾਣ ਕਰਨੀ। ਇਹ ਅਨੁਵਾਦ ਵਿੱਚ ਕੰਮ ਕਰ ਸਕਦਾ ਹੈ ਜੇ ਤੁਹਾਡੇ ਕੋਲ ਮੂਲ ਅਤੇ ਟਾਰਗਿਟ ਦੋਹਾਂ ਭਾਸ਼ਾਵਾਂ ਵਿੱਚ ਬਹੁਤ ਸਾਰਾ ਟੈਕਸਟ (ਕੋਰਪਸ) ਹੋਵੇ। -ਉਦਾਹਰਣ ਲਈ, *Pride and Prejudice*, ਜੇਨ ਆਸਟਿਨ ਦੁਆਰਾ 1813 ਵਿੱਚ ਲਿਖੀ ਇੱਕ ਪ੍ਰਸਿੱਧ ਅੰਗਰੇਜ਼ੀ ਨਾਵਲ ਦੇ ਕੇਸ ਨੂੰ ਵੇਖੋ। ਜੇ ਤੁਸੀਂ ਇਸ ਕਿਤਾਬ ਨੂੰ ਅੰਗਰੇਜ਼ੀ ਵਿੱਚ ਅਤੇ *French* ਵਿੱਚ ਇੱਕ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੇਖੋ, ਤਾਂ ਤੁਸੀਂ ਇੱਕ ਵਿੱਚ ਉਹ ਫਰੇਜ਼ ਪਛਾਣ ਸਕਦੇ ਹੋ ਜੋ ਦੂਜੇ ਵਿੱਚ _idiomatically_ ਅਨੁਵਾਦ ਕੀਤੇ ਗਏ ਹਨ। ਤੁਸੀਂ ਇਹ ਕੁਝ ਹੀ ਸਮੇਂ ਵਿੱਚ ਕਰੋਗੇ। +ਉਦਾਹਰਨ ਵਜੋਂ ਧਿਆਨ ਦਿਉ, *Pride and Prejudice* ਜੋ ਕਿ 1813 ਵਿੱਚ ਜੇਨ ਆસ્ટਿਨ ਦੁਆਰਾ ਲਿਖਿਆ ਗਿਆ ਜਾਣਾ-ਜਾਣਾ ਅੰਗ੍ਰੇਜ਼ੀ ਨਾਵਲ ਹੈ। ਜੇ ਤੁਸੀਂ ਕਿਤਾਬ ਅੰਗ੍ਰੇਜ਼ੀ ਵਿੱਚ ਅਤੇ ਇਸ ਦੀ ਫ੍ਰੈਂਚ ਵਿੱਚ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਵਿੱਚ ਤੁਲਨਾ ਕਰੋਗੇ, ਤਾਂ ਤੁਸੀਂ ਓਹਨਾਂ ਫਰੇਜ਼ਾਂ ਨੂੰ ਡਿੱਠੋਗੇ ਜੋ ਇਕ ਦੂਜੇ ਵਿੱਚ ਰੀਤਿਗਤ ਅਨੁਵਾਦ ਹਨ। ਤੁਸੀਂ ਇਹ ਕੁਝ ਸਮੇਂ ਵਿੱਚ ਕਰੋਗੇ। -ਉਦਾਹਰਣ ਲਈ, ਜਦੋਂ ਅੰਗਰੇਜ਼ੀ ਫਰੇਜ਼ `I have no money` ਨੂੰ literal ਤੌਰ 'ਤੇ French ਵਿੱਚ ਅਨੁਵਾਦ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਇਹ `Je n'ai pas de monnaie` ਬਣ ਸਕਦਾ ਹੈ। "Monnaie" ਇੱਕ ਚੁਣੌਤੀਪੂਰਨ French 'false cognate' ਹੈ, ਕਿਉਂਕਿ 'money' ਅਤੇ 'monnaie' ਇੱਕੋ ਜਿਹੇ ਨਹੀਂ ਹਨ। ਇੱਕ ਬਿਹਤਰ ਅਨੁਵਾਦ ਜੋ ਇੱਕ ਮਨੁੱਖ ਕਰ ਸਕਦਾ ਹੈ ਉਹ `Je n'ai pas d'argent` ਹੋਵੇਗਾ, ਕਿਉਂਕਿ ਇਹ ਬਿਹਤਰ ਤਰੀਕੇ ਨਾਲ ਇਹ ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਤੁਹਾਡੇ ਕੋਲ ਪੈਸਾ ਨਹੀਂ ਹੈ (ਬਜਾਏ 'loose change' ਜੋ 'monnaie' ਦਾ ਅਰਥ ਹੈ)। +ਉਦਾਹਰਨ ਵਜੋਂ, ਜਦੋਂ ਇੱਕ ਅੰਗ੍ਰੇਜ਼ੀ ਫਰੇਜ਼ `I have no money` ਨੂੰ ਸ਼ਾਬਦਿਕ ਤੌਰ 'ਤੇ ਫ੍ਰੈਂਚ ਵਿੱਚ ਅਨੁਵਾਦ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਉਹ ਬਣ ਸਕਦਾ ਹੈ `Je n'ai pas de monnaie`। "Monnaie" ਇੱਕ ਮੁਸ਼ਕਲ ਫ੍ਰੈਂਚ 'ਫਾਲਸ ਕੋਗਨੇਟ' ਹੈ, ਕਿਉਂਕਿ 'money' ਅਤੇ 'monnaie' ਇਕੋ ਹੀ ਮਤਲਬ ਨਹੀਂ ਰੱਖਦੇ। ਇਕ ਚੰਗਾ ਅਨੁਵਾਦ ਜੋ ਮਨੁੱਖ ਕਰ ਸਕਦਾ ਹੈ ਉਹ ਹੋਵੇਗਾ `Je n'ai pas d'argent`, ਕਿਉਂਕਿ ਇਹ ਮਤਲਬ ਹੋਰ ਚੰਗੀ ਤਰ੍ਹਾਂ ਦੱਸਦਾ ਹੈ ਕਿ ਤੁਹਾਡੇ ਕੋਲ ਪੈਸਾ ਨਹੀਂ (ਜਿਹੜਾ 'monnaie' ਦਾ ਅਰਥ 'ਝੁਟੇ ਕਾਂਸੇ' ਜਾਂ ਵੱਡਾ ਸਿਕਾ ਨਹੀਂ ਹੈ)। -![monnaie](../../../../6-NLP/3-Translation-Sentiment/images/monnaie.png) +![monnaie](../../../../translated_images/pa/monnaie.606c5fa8369d5c3b.webp) -> ਚਿੱਤਰ [Jen Looper](https://twitter.com/jenlooper) ਦੁਆਰਾ +> ਚਿੱਤਰਕਾਰੀ [Jen Looper](https://twitter.com/jenlooper) ਵੱਲੋਂ -ਜੇ ਇੱਕ ML ਮਾਡਲ ਕੋਲ ਕਾਫ਼ੀ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਹਨ ਜਿਨ੍ਹਾਂ 'ਤੇ ਮਾਡਲ ਬਣਾਇਆ ਜਾ ਸਕੇ, ਤਾਂ ਇਹ ਪਿਛਲੇ ਅਨੁਵਾਦ ਕੀਤੇ ਗਏ ਟੈਕਸਟਾਂ ਵਿੱਚ ਆਮ ਪੈਟਰਨ ਪਛਾਣ ਕੇ ਅਨੁਵਾਦ ਦੀ ਸਹੀਤਾ ਵਿੱਚ ਸੁਧਾਰ ਕਰ ਸਕਦਾ ਹੈ। +ਜੇ ਕਿਸੇ ਐਮਐਲ ਮਾਡਲ ਕੋਲ ਕਾਫੀ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਹਨ ਤਾਂ ਉਹ ਪਿਛਲੇ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਆਮ ਪੈਟਰਨਾਂ ਦੀ ਪਹਚਾਣ ਕਰਕੇ ਅਨੁਵਾਦ ਦੀ ਸ਼ੁੱਧਤਾ ਨੂੰ ਸੁਧਾਰ ਸਕਦਾ ਹੈ ਜੋ ਦੋਹਾਂ ਭਾਸ਼ਾਵਾਂ ਦੇ ਮਾਹਿਰ ਬੋਲਣ ਵਾਲਿਆਂ ਵੱਲੋਂ ਕੀਤੇ ਗਏ ਹਨ। ### ਅਭਿਆਸ - ਅਨੁਵਾਦ -ਤੁਸੀਂ `TextBlob` ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਵਾਕਾਂਸ਼ਾਂ ਦਾ ਅਨੁਵਾਦ ਕਰ ਸਕਦੇ ਹੋ। **Pride and Prejudice** ਦੀ ਮਸ਼ਹੂਰ ਪਹਿਲੀ ਲਾਈਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ: +ਤੁਸੀਂ ਵਾਕਾਂ ਦਾ ਅਨੁਵਾਦ ਕਰਨ ਲਈ `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 ਦੁਆਰਾ ਕੀਤੇ French ਅਨੁਵਾਦ ਨਾਲੋਂ ਕਾਫ਼ੀ ਜ਼ਿਆਦਾ ਸਹੀ ਹੈ: +ਇਹ ਕਿਹਾ ਜਾ ਸਕਦਾ ਹੈ ਕਿ TextBlob ਦਾ ਅਨੁਵਾਦ ਕਿਤਾਬ ਦੇ 1932 ਦੇ ਫ੍ਰੈਂਚ ਅਨੁਵਾਦ ਨਾਲੋਂ ਕਾਫੀ ਅਸਲੀਅਤ ਦੇ ਨੇੜੇ ਹੈ ਜੋ ਕਿ V. Leconte ਅਤੇ Ch. Pressoir ਵੱਲੋਂ ਕੀਤਾ ਗਿਆ ਸੀ: "C'est une vérité universelle qu'un célibataire pourvu d'une belle fortune doit avoir envie de se marier, et, si peu que l'on sache de son sentiment à cet egard, lorsqu'il arrive dans une nouvelle résidence, cette idée est si bien fixée dans l'esprit de ses voisins qu'ils le considèrent sur-le-champ comme la propriété légitime de l'une ou l'autre de leurs filles." -ਇਸ ਕੇਸ ਵਿੱਚ, ML ਦੁਆਰਾ ਜਾਣਕਾਰੀ ਪ੍ਰਾਪਤ ਅਨੁਵਾਦ ਮਨੁੱਖੀ ਅਨੁਵਾਦਕ ਨਾਲੋਂ ਬਿਹਤਰ ਕੰਮ ਕਰਦਾ ਹੈ ਜੋ ਲਾਜ਼ਮੀ ਤੌਰ 'ਤੇ ਮੂਲ ਲੇਖਕ ਦੇ ਸ਼ਬਦਾਂ ਵਿੱਚ ਬਿਨਾਂ ਜ਼ਰੂਰਤ ਸ਼ਬਦ ਸ਼ਾਮਲ ਕਰ ਰਿਹਾ ਹੈ। +ਇਸ ਮਾਮਲੇ ਵਿੱਚ, ਐਮਐਲ ਨਾਲ ਸੂਚਿਤ ਅਨੁਵਾਦ ਮਨੁੱਖੀ ਅਨੁਵਾਦਕ ਨਾਲੋਂ ਵਧੀਆ ਕੰਮ ਕਰਦਾ ਹੈ ਜੋ ਮੂਲ ਲੇਖਕ ਦੇ ਸ਼ਬਦਾਂ ਵਿੱਚ ਜ਼ਰੂਰੀ ਤੋਂ ਜ਼ਿਆਦਾ ਸ਼ਬਦ ਜੋੜ ਰਿਹਾ ਹੈ ਤਾ ਕਿ 'ਸਪਸ਼ਟਤਾ' ਆ ਜਾਵੇ। -> ਇਹ ਕੀ ਹੋ ਰਿਹਾ ਹੈ? ਅਤੇ TextBlob ਅਨੁਵਾਦ ਵਿੱਚ ਕਿਉਂ ਇੰਨਾ ਵਧੀਆ ਹੈ? ਖੈਰ, ਪਿੱਛੇ-ਪਿੱਛੇ, ਇਹ Google translate ਦੀ ਵਰਤੋਂ ਕਰ ਰਿਹਾ ਹੈ, ਇੱਕ ਸੁਧਾਰਸ਼ੀਲ AI ਜੋ ਲੱਖਾਂ ਫਰੇਜ਼ਾਂ ਨੂੰ ਪਾਰਸ ਕਰ ਸਕਦਾ ਹੈ ਤਾਂ ਜੋ ਕੰਮ ਲਈ ਸਭ ਤੋਂ ਵਧੀਆ ਸਤਰਾਂ ਦੀ ਪੇਸ਼ਕਸ਼ ਕੀਤੀ ਜਾ ਸਕੇ। ਇੱਥੇ ਕੁਝ ਵੀ ਮੈਨੂਅਲ ਨਹੀਂ ਹੋ ਰਿਹਾ ਹੈ ਅਤੇ ਤੁਹਾਨੂੰ `blob.translate` ਦੀ ਵਰਤੋਂ ਕਰਨ ਲਈ ਇੰਟਰਨੈਟ ਕਨੈਕਸ਼ਨ ਦੀ ਲੋੜ ਹੈ। +> ਇਹਥੇ ਕੀ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ? ਅਤੇ TextBlob ਅਨੁਵਾਦ ਵਿੱਚ ਇੰਨਾ ਵਧੀਆ ਕਿਉਂ ਹੈ? ਬੈਕਐਂਡ ਵਿੱਚ, ਇਹ Google translate ਦੀ ਵਰਤੋਂ ਕਰ ਰਿਹਾ ਹੈ, ਜੋ ਇੱਕ ਅਜਿਹਾ ਸੁੱਧਰ AI ਹੈ ਜੋ ਲੱਖਾਂ ਵਾਕਾਂ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰਕੇ ਸਭ ਤੋਂ ਵਧੀਆ ਸੰਦ ਨੂੰ ਅਨੁਮਾਨਿਤ ਕਰਦਾ ਹੈ। ਇੱਥੇ ਕੋਈ ਮੈਨੂਅਲ ਕੰਮ ਨਹੀਂ ਹੁੰਦਾ ਅਤੇ `blob.translate` ਨੂੰ ਵਰਤਣ ਲਈ ਤੁਹਾਨੂੰ ਇੰਟਰਨੈੱਟ ਕਨੈਕਸ਼ਨ ਦੀ ਲੋੜ ਹੈ। -✅ ਕੁਝ ਹੋਰ ਵਾਕਾਂਸ਼ਾਂ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ। ਕਿਹੜਾ ਬਿਹਤਰ ਹੈ, ML ਜਾਂ ਮਨੁੱਖੀ ਅਨੁਵਾਦ? ਕਿਹੜੇ ਕੇਸਾਂ ਵਿੱਚ? +✅ ਹੋਰ ਵਾਕਾਂ ਨਾਲ ਕੋਸ਼ਿਸ਼ ਕਰੋ। ਕਿਹੜਾ ਵਧੀਆ ਹੈ, ਐਮਐਲ ਜਾਂ ਮਨੁੱਖੀ ਅਨੁਵਾਦ? ਕਿਹੜੇ ਮਾਮਲਿਆਂ ਵਿੱਚ? ## ਭਾਵਨਾ ਵਿਸ਼ਲੇਸ਼ਣ -ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਇੱਕ ਹੋਰ ਖੇਤਰ ਵਿੱਚ ਬਹੁਤ ਵਧੀਆ ਕੰਮ ਕਰ ਸਕਦੀ ਹੈ, ਜੋ ਕਿ ਭਾਵਨਾ ਵਿਸ਼ਲੇਸ਼ਣ ਹੈ। ਇੱਕ ਗੈਰ-ML ਪਹੁੰਚ ਭਾਵਨਾ ਪਛਾਣਨ ਲਈ 'ਸਕਾਰਾਤਮਕ' ਅਤੇ 'ਨਕਾਰਾਤਮਕ' ਸ਼ਬਦਾਂ ਅਤੇ ਫਰੇਜ਼ਾਂ ਦੀ ਪਛਾਣ ਕਰਦੀ ਹੈ। ਫਿਰ, ਇੱਕ ਨਵੀਂ ਟੈਕਸਟ ਦੇਣ 'ਤੇ, ਸਕਾਰਾਤਮਕ, ਨਕਾਰਾਤਮਕ ਅਤੇ ਤਟਸਥ ਸ਼ਬਦਾਂ ਦੀ ਕੁੱਲ ਕੀਮਤ ਦੀ ਗਿਣਤੀ ਕਰਕੇ ਸਮੁੱਚੀ ਭਾਵਨਾ ਪਛਾਣੀ ਜਾਂਦੀ ਹੈ। +ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਇੱਕ ਹੋਰ ਖੇਤਰ ਹੈ ਜਿੱਥੇ ਇਹ ਬਹੁਤ ਵਧੀਆ ਕੰਮ ਕਰ ਸਕਦੀ ਹੈ, ਜਿਸ ਨੂੰ ਭਾਵਨਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਹਿੰਦੇ ਹਨ। ਭਾਵਨਾ ਦਾ ਗੈਰ-ਐਮਐਲ ਤਰੀਕਾ ਇਹ ਹੈ ਕਿ ਸ਼ਬਦਾਂ ਅਤੇ ਫਰੇਜ਼ਾਂ ਨੂੰ 'ਪੋਜ਼ਿਟਿਵ' ਅਤੇ 'ਨੇਗੇਟਿਵ' ਵਜੋਂ ਪਹਚਾਨਿਆ ਜਾਵੇ। ਫਿਰ, ਨਵੇਂ ਟੈਕਸਟ ਵਿੱਚ, ਪੋਜ਼ਿਟਿਵ, ਨੇਗੇਟਿਵ ਅਤੇ ਨਿਊਟ੍ਰਲ ਸ਼ਬਦਾਂ ਦਾ ਕੁੱਲ ਮੁੱਲ ਕੈਲਕੁਲੇਟ ਕਰਕੇ ਸਮੂਹਿਕ ਭਾਵਨਾ ਪਤਾ ਲਗਾਈ ਜਾਵੇ। -ਇਹ ਪਹੁੰਚ ਆਸਾਨੀ ਨਾਲ ਧੋਖਾ ਖਾਂਦੀ ਹੈ ਜਿਵੇਂ ਤੁਸੀਂ Marvin ਟਾਸਕ ਵਿੱਚ ਦੇਖਿਆ ਹੋਵੇਗਾ - ਵਾਕ `Great, that was a wonderful waste of time, I'm glad we are lost on this dark road` ਇੱਕ ਤਨਖੇਦਕ, ਨਕਾਰਾਤਮਕ ਭਾਵਨਾ ਵਾਲਾ ਵਾਕ ਹੈ, ਪਰ ਸਧਾਰਨ ਐਲਗੋਰਿਥਮ 'great', 'wonderful', 'glad' ਨੂੰ ਸਕਾਰਾਤਮਕ ਅਤੇ 'waste', 'lost' ਅਤੇ 'dark' ਨੂੰ ਨਕਾਰਾਤਮਕ ਪਛਾਣਦਾ ਹੈ। ਸਮੁੱਚੀ ਭਾਵਨਾ ਇਹ ਵਿਰੋਧੀ ਸ਼ਬਦਾਂ ਦੁਆਰਾ ਪ੍ਰਭਾਵਿਤ ਹੁੰਦੀ ਹੈ। +ਇਹ ਤਰੀਕਾ ਆਸਾਨੀ ਨਾਲ ਧੋਖਾਧੜੀ ਦਾ ਸ਼ਿਕਾਰ ਹੋ ਸਕਦਾ ਹੈ, ਜਿਵੇਂ ਤੁਸੀਂ ਮਾਰਵਿਨ ਟਾਸਕ ਵਿੱਚ ਦੇਖਿਆ ਸੀ - ਵਾਕ `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 ਪਹੁੰਚ ਇਹ ਹੋਵੇਗੀ ਕਿ ਨਕਾਰਾਤਮਕ ਅਤੇ ਸਕਾਰਾਤਮਕ ਟੈਕਸਟਾਂ - ਟਵੀਟਾਂ, ਜਾਂ ਫਿਲਮ ਰਿਵਿਊਜ਼, ਜਾਂ ਕੁਝ ਵੀ ਜਿੱਥੇ ਮਨੁੱਖ ਨੇ ਸਕੋਰ *ਅਤੇ* ਲਿਖਤੀ ਰਾਏ ਦਿੱਤੀ ਹੋਵੇ - ਨੂੰ ਹੱਥੋਂ ਇਕੱਠਾ ਕੀਤਾ ਜਾਵੇ। ਫਿਰ NLP ਤਕਨੀਕਾਂ ਨੂੰ ਰਾਏ ਅਤੇ ਸਕੋਰਾਂ 'ਤੇ ਲਾਗੂ ਕੀਤਾ ਜਾਵੇ, ਤਾਂ ਜੋ ਪੈਟਰਨ ਉਭਰਣ (ਉਦਾਹਰਣ ਲਈ, ਸਕਾਰਾਤਮਕ ਫਿਲਮ ਰਿਵਿਊਜ਼ ਵਿੱਚ 'Oscar worthy' ਫਰੇਜ਼ ਨਕਾਰਾਤਮਕ ਫਿਲਮ ਰਿਵਿਊਜ਼ ਨਾਲੋਂ ਜ਼ਿਆਦਾ ਹੁੰਦਾ ਹੈ, ਜਾਂ ਸਕਾਰਾਤਮਕ ਰੈਸਟੋਰੈਂਟ ਰਿਵਿਊਜ਼ 'gourmet' ਸ਼ਬਦ ਨੂੰ 'disgusting' ਨਾਲੋਂ ਜ਼ਿਆਦਾ ਵਰਤਦੇ ਹਨ)। +ਐਮਐਲ ਤਰੀਕੇ ਵਿੱਚ ਤੁਹਾਨੂੰ ਮਨੁੱਖੀ ਤੌਰ ਤੇ ਧਨਾਤਮਕ ਅਤੇ ਰਣਾਤਮਕ ਟੈਕਸਟ - ਟਵੀਟਾਂ, ਫਿਲਮ ਸਮੀਖਿਆਵਾਂ ਜਾਂ ਕੋਈ ਹੋਰ ਜਿੱਥੇ ਮਨੁੱਖ ਨੇ ਸਕੋਰ ਅਤੇ ਲਿਖਿਤ ਰਾਏ ਦਿੱਤੀ ਹੈ - ਇਕੱਠੀ ਕਰਨੀ ਪੈਂਦੀ ਹੈ। ਫਿਰ NLP ਤਕਨਾਲੋਜੀ ਨੂੰ ਰਾਏਆਂ ਅਤੇ ਸਕੋਰਾਂ 'ਤੇ ਲਗਾਇਆ ਜਾਂਦਾ ਹੈ ਤਾਂ ਕਿ ਪੈਟਰਨ ਸਾਹਮਣੇ ਆ ਸਕਣ (ਜਿਵੇਂ ਦਿੱਖਦਾ ਹੈ ਕਿ ਧਨਾਤਮਕ ਫਿਲਮ ਸਮੀਖਿਆਵਾਂ ਵਿੱਚ 'Oscar worthy' ਸ਼ਬਦ ਨੇਗੇਟਿਵ ਸਮੀਖਿਆਵਾਂ ਨਾਲੋਂ ਵੱਧ ਹੁੰਦੇ ਹਨ, ਜਾਂ ਧਨਾਤਮਕ ਰੈਸਟੋਰੈਂਟ ਸਮੀਖਿਆਵਾਂ ਵਿੱਚ 'gourmet' ਵੱਧ ਪ੍ਰਯੋਗ ਹੁੰਦਾ ਹੈ 'disgusting' ਦੀ ਤਲਨਾ ਵਿੱਚ)। -> ⚖️ **ਉਦਾਹਰਣ**: ਜੇ ਤੁਸੀਂ ਕਿਸੇ ਰਾਜਨੀਤਿਕ ਦਫ਼ਤਰ ਵਿੱਚ ਕੰਮ ਕਰਦੇ ਹੋ ਅਤੇ ਕੋਈ ਨਵਾਂ ਕਾਨੂੰਨ ਚਰਚਾ ਵਿੱਚ ਹੈ, ਤਾਂ ਲੋਕ ਇਸ ਨਵੇਂ ਕਾਨੂੰਨ ਦੇ ਹੱਕ ਵਿੱਚ ਜਾਂ ਵਿਰੋਧ ਵਿੱਚ ਦਫ਼ਤਰ ਨੂੰ ਈਮੇਲ ਭੇਜ ਸਕਦੇ ਹਨ। ਮੰਨ ਲਓ ਕਿ ਤੁਹਾਨੂੰ ਇਹ ਈਮੇਲਾਂ ਪੜ੍ਹਨ ਅਤੇ ਦੋ ਢੇਰਾਂ ਵਿੱਚ ਵੰਡਣ ਦਾ ਕੰਮ ਦਿੱਤਾ ਗਿਆ ਹੈ, *ਹੱਕ ਵਿੱਚ* ਅਤੇ *ਵਿਰੋਧ ਵਿੱਚ*। ਜੇ ਈਮੇਲਾਂ ਬਹੁਤ ਸਾਰੀਆਂ ਹੋਣ, ਤਾਂ ਤੁਸੀਂ ਸਾਰੀਆਂ ਪੜ੍ਹਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਹੋਏ ਥੱਕ ਸਕਦੇ ਹੋ। ਕੀ ਇਹ ਵਧੀਆ ਨਹੀਂ ਹੋਵੇਗਾ ਜੇਕਰ ਇੱਕ ਬੋਟ ਇਹ ਸਾਰੀਆਂ ਪੜ੍ਹ ਸਕੇ, ਸਮਝ ਸਕੇ ਅਤੇ ਤੁਹਾਨੂੰ ਦੱਸ ਸਕੇ ਕਿ ਹਰ ਈਮੇਲ ਕਿਹੜੇ ਢੇਰ ਵਿੱਚ ਜਾ ਰਹੀ ਹੈ? +> ⚖️ **ਉਦਾਹਰਨ**: ਜੇ ਤੁਸੀਂ ਕਿਸੇ ਰਾਜਨੀਤੀ ਵਿਭਾਗ ਵਿੱਚ ਕੰਮ ਕਰਦੇ ਹੋ ਜਿੱਥੇ ਕੋਈ ਨਵਾਂ ਕਾਨੂੰਨ ਚਰਚਾ ਵਿੱਚ ਹੈ, ਤਾਂ ਲੋਕ ਆਪਣੇ ਦਲ ਵਿੱਚ ਸੁਪੋਰਟਮਈਲ ਜਾਂ ਵਿਰੋਧੀ ਈਮੇਲ ਭੇਜ ਸਕਦੇ ਹਨ। ਧਾਰ ਲਓ ਤੁਸੀਂ ਇਹ ਈਮੇਲ ਪੜ੍ਹ ਕੇ, *for* ਅਤੇ *against* ਦੋ ਹਿੱਸਿਆਂ ਵਿੱਚ ਵੱਖਰਾ ਕਰਨ ਲਈ ਕਹੇ ਗਏ ਹੋ। ਜੇ ਈਮੇਲਾਂ ਬਹੁਤ ਸਾਰੀਆਂ ਹਨ ਤਾਂ ਪੂਰੀਆਂ ਪੜ੍ਹਨ ਵਿੱਚ ਮੁਸ਼ਕਲ ਹੋ ਸਕਦੀ ਹੈ। ਕੀ ਹਾਲੇ ਨਹੀਂ ਚੰਗਾ ਹੋਵੇਗਾ ਜੇ ਕੋਈ ਬੋਟ ਇਹ ਸਾਰੇ ਈਮੇਲ ਪੜ੍ਹ ਕੇ ਸਮਝ ਸਕੇ ਅਤੇ ਦੱਸ ਸਕੇ ਕਿ ਹਰੇਕ ਈਮੇਲ ਕਿਸ ਹਿੱਸੇ ਵਿੱਚ ਆਉਂਦੀ ਹੈ? > -> ਇਸਨੂੰ ਹਾਸਲ ਕਰਨ ਦਾ ਇੱਕ ਤਰੀਕਾ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਹੈ। ਤੁਸੀਂ ਮਾਡਲ ਨੂੰ *ਵਿਰੋਧ* ਈਮੇਲਾਂ ਅਤੇ *ਹੱਕ ਵਿੱਚ* ਈਮੇਲਾਂ ਦੇ ਕੁਝ ਹਿੱਸੇ ਨਾਲ ਟ੍ਰੇਨ ਕਰਦੇ। ਮਾਡਲ ਸ਼ਬਦਾਂ ਅਤੇ ਪੈਟਰਨਾਂ ਨੂੰ ਵਿਰੋਧ ਜਾਂ ਹੱਕ ਵਿੱਚ ਈਮੇਲਾਂ ਨਾਲ ਜ਼ਿਆਦਾ ਜੋੜਦਾ, *ਪਰ ਇਹ ਕਿਸੇ ਵੀ ਸਮੱਗਰੀ ਨੂੰ ਸਮਝਦਾ ਨਹੀਂ*, ਸਿਰਫ਼ ਇਹ ਕਿ ਕੁਝ ਸ਼ਬਦ ਅਤੇ ਪੈਟਰਨ ਵਿਰੋਧ ਜਾਂ ਹੱਕ ਵਿੱਚ ਈਮੇਲਾਂ ਵਿੱਚ ਜ਼ਿਆਦਾ ਆਉਂਦੇ ਹਨ। ਤੁਸੀਂ ਇਸਨੂੰ ਕੁਝ ਈਮੇਲਾਂ ਨਾਲ ਟੈਸਟ ਕਰ ਸਕਦੇ ਹੋ ਜੋ ਤੁਸੀਂ ਮਾਡਲ ਨੂੰ ਟ੍ਰੇਨ ਕਰਨ ਲਈ ਵਰਤੀਆਂ ਨਹੀਂ। ਜੇਕਰ ਇਹ ਤੁਹਾਡੇ ਨਾਲੋਂ ਸਹੀ ਨਤੀਜੇ 'ਤੇ ਪਹੁੰਚਦਾ ਹੈ, ਤਾਂ ਤੁਸੀਂ ਮਾਡਲ ਦੀ ਸਹੀਤਾ 'ਤੇ ਖੁਸ਼ ਹੋ ਸਕਦੇ ਹੋ ਅਤੇ ਭਵਿੱਖ ਦੀਆਂ ਈਮੇਲਾਂ ਨੂੰ ਪੜ੍ਹਨ ਦੀ ਲੋੜ ਬਿਨਾਂ ਪ੍ਰਕਿਰਿਆ ਕਰ ਸਕਦੇ ਹੋ। +> ਇਸਨੂੰ ਹਾਸਲ ਕਰਨ ਦਾ ਇੱਕ ਤਰੀਕਾ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਦੀ ਵਰਤੋਂ ਹੈ। ਤੁਸੀਂ ਮਾਡਲ ਨੂੰ *against* ਈਮੇਲਾਂ ਅਤੇ *for* ਈਮੇਲਾਂ ਦੇ ਕੁਝ ਹਿੱਸਿਆਂ ਨਾਲ ਸਿੱਖਾਉਂਦੇ ਹੋ। ਮਾਡਲ ਕੁਝ ਪੈਟਰਨ ਐਸੋਸੀਏਟ ਕਰਦਾ ਹੈ ਪਰ ਇਸਨੂੰ ਸਮਗਰੀ ਦੀ ਸਮਝ ਨਹੀਂ ਹੁੰਦੀ, ਸਿਰਫ ਇਹ ਪਤਾ ਲਗਦਾ ਹੈ ਕਿ ਕੁਝ ਸ਼ਬਦ ਅਤੇ ਪੈਟਰਨ *against* ਜਾਂ *for* ਈਮੇਲਾਂ ਵਿੱਚ ਜ਼ਿਆਦਾ ਆਉਂਦੇ ਹਨ। ਤੁਸੀਂ ਮਾਡਲ ਦੀ ਜਾਂਚ ਕੁਝ ਹੋਰ ਈਮੇਲਾਂ ਨਾਲ ਕਰ ਸਕਦੇ ਹੋ ਜੋ ਮਾਡਲ ਨੂੰ ਸਿਖਾਉਣ ਵਿੱਚ ਵਰਤੇ ਨਹੀਂ ਗਏ, ਅਤੇ ਦੇਖੋਗੇ ਕਿ ਨਤੀਜਾ ਇੱਕੋ ਹੀ ਹੈ ਜਾਂ ਨਹੀਂ। ਫਿਰ ਜਦੋਂ ਤੁਸੀਂ ਮਾਡਲ ਦੀ ਸ਼ੁੱਧਤਾ ਨਾਲ ਖੁਸ਼ ਹੋਵੋਗੇ, ਤੁਹਾਨੂੰ ਹਰ ਨਵੀਂ ਈਮੇਲ ਮੈਨੂੰਅਲੀ ਪੜ੍ਹਣ ਦੀ ਲੋੜ ਨਹੀਂ ਰਹੇਗੀ। -✅ ਕੀ ਇਹ ਪ੍ਰਕਿਰਿਆ ਤੁਹਾਡੇ ਪਿਛਲੇ ਪਾਠਾਂ ਵਿੱਚ ਵਰਤੀਆਂ ਗਈਆਂ ਪ੍ਰਕਿਰਿਆਵਾਂ ਵਰਗੀ ਲੱਗਦੀ ਹੈ? +✅ ਕੀ ਇਹ ਪ੍ਰਕਿਰਿਆ ਤੁਹਾਡੇ ਪਿਛਲੇ ਪਾਠਾਂ ਵਿੱਚ ਵਰਤੇ ਗਏ ਪ੍ਰਕਿਰਿਆਵਾਂ ਵਰਗੀ ਲੱਗਦੀ ਹੈ? -## ਅਭਿਆਸ - ਭਾਵਨਾਤਮਕ ਵਾਕਾਂਸ਼ +## ਅਭਿਆਸ - ਭਾਵਨਾਤਮਕ ਵਾਕਾਂ -ਭਾਵਨਾ -1 ਤੋਂ 1 ਦੇ *polarity* ਵਿੱਚ ਮਾਪੀ ਜਾਂਦੀ ਹੈ, ਜਿਸਦਾ ਅਰਥ -1 ਸਭ ਤੋਂ ਨਕਾਰਾਤਮਕ ਭਾਵਨਾ ਹੈ, ਅਤੇ 1 ਸਭ ਤੋਂ ਸਕਾਰਾਤਮਕ। ਭਾਵਨਾ 0 - 1 ਸਕੋਰ ਨਾਲ objectivity (0) ਅਤੇ subjectivity (1) ਵਿੱਚ ਵੀ ਮਾਪੀ ਜਾਂਦੀ ਹੈ। +ਭਾਵਨਾ ਨੂੰ *ਪੋਲਾਰਿਟੀ* -1 ਤੋਂ 1 ਤੱਕ ਦੇ ਸਕੋਰ ਨਾਲ ਮਾਪਿਆ ਜਾਂਦਾ ਹੈ, ਜਿੱਥੇ -1 ਸਭ ਤੋਂ ਨਕਾਰਾਤਮਕ ਭਾਵਨਾ ਅਤੇ 1 ਸਭ ਤੋਂ ਧਨਾਤਮਕ ਹੈ। ਭਾਵਨਾ ਨੂੰ 0 ਤੋਂ 1 ਤੱਕ ਓਬਜੈਕਟਿਵਿਟੀ (0) ਅਤੇ ਸਬਜੈਕਟਿਵਿਟੀ (1) ਦੇ ਸਕੋਰ ਨਾਲ ਵੀ ਮਾਪਿਆ ਜਾਂਦਾ ਹੈ। -ਜੇਨ ਆਸਟਿਨ ਦੀ *Pride and Prejudice* ਨੂੰ ਦੁਬਾਰਾ ਦੇਖੋ। ਇਹ ਟੈਕਸਟ [Project Gutenberg](https://www.gutenberg.org/files/1342/1342-h/1342-h.htm) 'ਤੇ ਉਪਲਬਧ ਹੈ। ਹੇਠਾਂ ਦਿੱਤੇ ਨਮੂਨੇ ਵਿੱਚ ਇੱਕ ਛੋਟਾ ਪ੍ਰੋਗਰਾਮ ਦਿਖਾਇਆ ਗਿਆ ਹੈ ਜੋ ਕਿਤਾਬ ਦੇ ਪਹਿਲੇ ਅਤੇ ਆਖਰੀ ਵਾਕਾਂਸ਼ਾਂ ਦੀ ਭਾਵਨਾ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰਦਾ ਹੈ ਅਤੇ ਇਸਦੀ polarity ਅਤੇ subjectivity/objectivity ਸਕੋਰ ਦਿਖਾਉਂਦਾ ਹੈ। +ਜੇਨ ਆਸਟਿਨ ਦੀ *Pride and Prejudice* ਨੂੰ ਦੁਬਾਰਾ ਦੇਖੋ। ਲੇਖ ਇੱਥੇ ਉਪਲੱਬਧ ਹੈ [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,16 +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) ``` -## ਚੁਣੌਤੀ - polarity ਦੀ ਜਾਂਚ ਕਰੋ +## ਚੈਲੇਂਜ - ਭਾਵਨਾ ਪੋਲਾਰਿਟੀ ਚੈੱਕ ਕਰੋ + +ਤੁਹਾਡਾ ਕੰਮ ਹੈ ਪੋਲਾਰਿਟੀ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇਹ ਪਤਾ ਲਗਾਉਣਾ ਕਿ *Pride and Prejudice* ਦੇ ਵਾਕ ਧਰੋ ਤੌਰ ਤੇ ਜ਼ਿਆਦਾ ਧਨਾਤਮਕ ਹਨ ਜਾਂ ਜ਼ਿਆਦਾ ਨਕਾਰਾਤਮਕ। ਇਸ ਕੰਮ ਲਈ, ਤੁਸੀਂ ਧਾਰਨਾ ਕਰ ਸਕਦੇ ਹੋ ਕਿ ਪੋਲਾਰਿਟੀ ਸਕੋਰ 1 ਜਾਂ -1 ਕਈ ਵਾਰੀ ਧਰੋ ਤੌਰ ਤੇ ਧਨਾਤਮਕ ਜਾਂ ਨਕਾਰਾਤਮਕ ਹੁੰਦਾ ਹੈ। + +**ਕਦਮ:** + +1. Project Gutenberg ਤੋਂ [Pride and Prejudice](https://www.gutenberg.org/files/1342/1342-h/1342-h.htm) ਦਾ .txt ਫਾਇਲ ਡਾਊਨਲੋਡ ਕਰੋ। ਫਾਇਲ ਦੇ ਸ਼ੁਰੂ ਅਤੇ ਅਖਿਰ ਵਿੱਚੋਂ ਮেটਾਡੇਟਾ ਹਟਾਓ, ਸਿਰਫ ਅਸਲੀ ਲੇਖ ਛੱਡੋ +2. ਫਾਇਲ ਨੂੰ ਪਾਇਥਨ ਵਿੱਚ ਖੋਲ੍ਹੋ ਅਤੇ ਸਮੱਗਰੀ ਨੂੰ ਸਟਰਿੰਗ ਵਜੋਂ ਕਢੋ +3. ਕਿਤਾਬ ਦੇ ਸਟਰਿੰਗ ਨਾਲ TextBlob ਬਣਾਓ +4. ਕਿਤਾਬ ਵਿੱਚ ਹਰ ਵਾਕ ਦਾ ਲੂਪ ਵਿੱਚ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰੋ + 1. ਜੇ ਪੋਲਾਰਿਟੀ 1 ਜਾਂ -1 ਹੋਵੇ, ਤਾਂ ਵਾਕ ਨੂੰ ਧਨਾਤਮਕ ਜਾਂ ਨਕਾਰਾਤਮਕ ਸੁਨੇਹਿਆਂ ਦੀ ਸੂਚੀ ਵਿੱਚ ਸੰਭਾਲੋ +5. ਅੰਤ ਵਿੱਚ, ਸਾਰੇ ਧਨਾਤਮਕ ਅਤੇ ਨਕਾਰਾਤਮਕ ਵਾਕ (ਅਲੱਗ-ਅਲੱਗ) ਅਤੇ ਗਿਣਤੀ ਪ੍ਰਿੰਟ ਕਰੋ। + +ਇਸਦਾ ਇੱਕ ਨਮੂਨਾ [ਹੱਲ](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/3-Translation-Sentiment/solution/notebook.ipynb) ਹੈ। + +✅ ਗਿਆਨ ਚੈੱਕ + +1. ਭਾਵਨਾ ਸ਼ਬਦਾਂ ਦੇ ਨਾਲ ਨਪਤੀ ਜਾਂਦੀ ਹੈ, ਪਰ ਕੀ ਕੋਡ ਸ਼ਬਦਾਂ ਨੂੰ *ਸਮਝਦਾ* ਹੈ? +2. ਕੀ ਤੁਸੀਂ ਸੋਚਦੇ ਹੋ ਕਿ ਭਾਵਨਾ ਦੀ ਪੋਲਾਰਿਟੀ ਸਹੀ ਹੈ, ਜਾਂ ਦੂਜੇ ਸ਼ਬਦਾਂ ਵਿੱਚ, ਕੀ ਤੁਸੀਂ ਸਕੋਰਾਂ ਨਾਲ *ਸਹਿਮਤ* ਹੋ? + 1. ਖਾਸ ਕਰਕੇ, ਕੀ ਤੁਸੀਂ ਹੇਠਾਂ ਦਿੱਤੇ ਵਾਕਾਂ ਦੀ ਪੂਰਨ **ਧਨਾਤਮਕ** ਪੋਲਾਰਿਟੀ ਨਾਲ ਸਹਿਮਤ ਹੋ ਜਾਂ ਨਹੀਂ? + * “What an excellent father you have, girls!” said she, when the door was shut. + * “Your examination of Mr. Darcy is over, I presume,” said Miss Bingley; “and pray what is the result?” “I am perfectly convinced by it that Mr. Darcy has no defect. + * How wonderfully these sort of things occur! + * I have the greatest dislike in the world to that sort of thing. + * Charlotte is an excellent manager, I dare say. + * “This is delightful indeed! + * I am so happy! + * Your idea of the ponies is delightful. + 2. ਅਗਲੇ 3 ਵਾਕਾਂ ਨੂੰ ਪੂਰਨ ਧਨਾਤਮਕ ਭਾਵਨਾ ਮਿਲੀ ਹੈ, ਪਰ ਧਿਆਨ ਨਾਲ ਪੜ੍ਹਨ 'ਤੇ ਇਹ ਧਨਾਤਮਕ ਨਹੀਂ ਹਨ। ਭਾਵਨਾ ਵਿਸ਼ਲੇਸ਼ਣ ਨੇ ਇਹ ਕਿਉਂ ਧਨਾਤਮਕ ਸਮਝੇ? + * Happy shall I be, when his stay at Netherfield is over!” “I wish I could say anything to comfort you,” replied Elizabeth; “but it is wholly out of my power. + * If I could but see you as happy! + * Our distress, my dear Lizzy, is very great. + 3. ਕੀ ਤੁਸੀਂ ਹੇਠਾਂ ਦਿੱਤੇ ਵਾਕਾਂ ਦੀ ਪੂਰਨ **ਨਕਾਰਾਤਮਕ** ਪੋਲਾਰਿਟੀ ਨਾਲ ਸਹਿਮਤ ਹੋ ਜਾਂ ਨਹੀਂ? + - Everybody is disgusted with his pride. + - “I should like to know how he behaves among strangers.” “You shall hear then—but prepare yourself for something very dreadful. + - The pause was to Elizabeth’s feelings dreadful. + - It would be dreadful! + +✅ ਜੇਨ ਆਸਟਿਨ ਦੇ ਕੋਈ ਵੀ ਪ੍ਰਸ਼ੰਸਕ ਸਮਝਦਾ ਹੈ ਕਿ ਉਹ ਅਕਸਰ ਆਪਣੀਆਂ ਕਿਤਾਬਾਂ ਰਾਹੀਂ ਅੰਗ੍ਰੇਜ਼ੀ ਰੀਜੈਂਸੀ ਸਮਾਜ ਦੇ ਮਜ਼ਾਕੀਆ ਪਹਲੂਆਂ ਦੀ ਟਿਕਾਣਾ ਲਗਾਉਂਦੀ ਹੈ। Elizabeth Bennett, ਜੋ *Pride and Prejudice* ਦੀ ਮੁੱਖ ਪਾਤਰ ਹੈ, ਇਕ ਨੁਕਤਾਬਹੁਰ ਸਮਾਜਣਾ ਹੈ (ਲੇਖਕ ਵਾਂਗ) ਅਤੇ ਉਸਦੀ ਭਾਸ਼ਾ ਅਕਸਰ ਬਹੁਤ ਸੁਵਿਧਾਵਾਂ ਵਾਲੀ ਹੁੰਦੀ ਹੈ। ਇ VEN Mr. Darcy (ਕਹਾਣੀ ਵਿੱਚ ਮੁਹੱਬਤ ਦਾ ਪਾਤਰ) ਵੀ Elizabeth ਦੇ ਖੇਡ-ਖੇਡ ਬੋਲਣ ਦੇ ਢੰਗ ਨੂੰ ਲੱਖਦਾ ਹੈ: "I have had the pleasure of your acquaintance long enough to know that you find great enjoyment in occasionally professing opinions which in fact are not your own." -ਤੁਹਾਡਾ ਕੰਮ ਹੈ, sentiment polarity ਦੀ ਵਰਤੋਂ ਕਰਕੇ, ਇਹ ਪਤਾ ਕਰਨਾ ਕਿ *Pride and Prejudice* ਵਿੱਚ absolutely positive ਵਾਕ absolutely negative ਵਾਕਾਂ ਨਾਲੋਂ ਜ਼ਿਆਦਾ ਹਨ। ਇਸ ਕੰਮ ਲਈ, ਤੁਸੀਂ ਮੰਨ ਸਕਦੇ -ਟੈਕਸਟ ਤੋਂ ਭਾਵਨਾਵਾਂ ਨਿਕਾਲਣ ਦੇ ਕਈ ਤਰੀਕੇ ਹਨ। ਉਹ ਕਾਰੋਬਾਰੀ ਐਪਲੀਕੇਸ਼ਨਾਂ ਬਾਰੇ ਸੋਚੋ ਜੋ ਇਸ ਤਕਨੀਕ ਦਾ ਇਸਤੇਮਾਲ ਕਰ ਸਕਦੀਆਂ ਹਨ। ਇਹ ਵੀ ਸੋਚੋ ਕਿ ਇਹ ਕਿਵੇਂ ਗਲਤ ਹੋ ਸਕਦਾ ਹੈ। ਭਾਵਨਾਵਾਂ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰਨ ਵਾਲੇ ਉੱਚ-ਪੱਧਰੀ ਅਤੇ ਕਾਰੋਬਾਰ-ਤਿਆਰ ਸਿਸਟਮਾਂ ਬਾਰੇ ਹੋਰ ਪੜ੍ਹੋ ਜਿਵੇਂ ਕਿ [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 ਦੇ ਕੁਝ ਵਾਕਾਂ ਨੂੰ ਟੈਸਟ ਕਰੋ ਅਤੇ ਵੇਖੋ ਕਿ ਕੀ ਇਹ ਸੁਖਮਤਾ ਨੂੰ ਪਛਾਣ ਸਕਦਾ ਹੈ। +--- + +## 🚀ਚੈਲੇਂਜ + +ਕੀ ਤੁਸੀਂ ਮਾਰਵਿਨ ਨੂੰ ਹੋਰ ਬਿਹਤਰ ਬਣਾਉਣ ਲਈ ਯੂਜ਼ਰ ਦੀਆਂ ਇਨਪੁੱਟਾਂ ਤੋਂ ਹੋਰ ਫੀਚਰ ਨਿਕਾਲ ਸਕਦੇ ਹੋ? + +## [ਪੋਸਟ-ਲੈਕਚਰ ਕਵਿਜ਼](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 ਦੇ ਕੁਝ ਵਾਕਾਂ ਦੀ ਜਾਂਚ ਕਰੋ ਅਤੇ ਵੇਖੋ ਕਿ ਕੀ ਇਹ ਸੁਖਮਤਾ ਪਛਾਣ ਸਕਦਾ ਹੈ। -## ਅਸਾਈਨਮੈਂਟ +## ਅਸਾਈਨਮੈਂਟ -[Poetic license](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/6-NLP/4-Hotel-Reviews-1/README.md b/translations/pa/6-NLP/4-Hotel-Reviews-1/README.md index 73ad1200b..8ee3f4e0d 100644 --- a/translations/pa/6-NLP/4-Hotel-Reviews-1/README.md +++ b/translations/pa/6-NLP/4-Hotel-Reviews-1/README.md @@ -1,16 +1,16 @@ -# ਹੋਟਲ ਰਿਵਿਊਜ਼ ਨਾਲ ਭਾਵਨਾ ਵਿਸ਼ਲੇਸ਼ਣ - ਡਾਟਾ ਪ੍ਰੋਸੈਸਿੰਗ +# ਹੋਟਲ ਸਮੀਖਿਆਵਾਂ ਨਾਲ ਮਨੋਭਾਵ ਵਿਸ਼ਲੇਸ਼ਣ - ਡੇਟਾ ਪ੍ਰੋਸੈਸਿੰਗ -ਇਸ ਭਾਗ ਵਿੱਚ ਤੁਸੀਂ ਪਿਛਲੇ ਪਾਠਾਂ ਵਿੱਚ ਸਿੱਖੀਆਂ ਤਕਨੀਕਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇੱਕ ਵੱਡੇ ਡਾਟਾਸੈਟ ਦਾ ਖੋਜਾਤਮਕ ਡਾਟਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰੋਗੇ। ਜਦੋਂ ਤੁਹਾਨੂੰ ਵੱਖ-ਵੱਖ ਕਾਲਮਾਂ ਦੀ ਉਪਯੋਗਤਾ ਦੀ ਚੰਗੀ ਸਮਝ ਹੋ ਜਾਵੇਗੀ, ਤਾਂ ਤੁਸੀਂ ਸਿੱਖੋਗੇ: +ਇਸ ਸੈਕਸ਼ਨ ਵਿੱਚ, ਤੁਸੀਂ ਪਿਛਲੇ ਪਾਠਾਂ ਵਿੱਚ ਵਰਤੇ ਗਏ ਤਕਨੀਕਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇੱਕ ਵੱਡੇ ਡੇਟਾਸੇਟ ਦੀ ਖੋਜੀ ਡੇਟਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰੋਗੇ। ਜਦੋਂ ਤੱਕ ਤੁਹਾਨੂੰ ਵੱਖ-ਵੱਖ ਕਾਲਮਾਂ ਦੀ ਉਪਯੋਗਿਤਾ ਬਾਰੇ ਵਧੀਆ ਸਮਝ ਹੋ ਜਾਵੇ, ਤੁਸੀਂ ਇਹ ਸਿੱਖੋਗੇ: -- ਕਿਵੇਂ ਗੈਰ-ਜ਼ਰੂਰੀ ਕਾਲਮਾਂ ਨੂੰ ਹਟਾਉਣਾ ਹੈ -- ਮੌਜੂਦਾ ਕਾਲਮਾਂ ਦੇ ਆਧਾਰ 'ਤੇ ਕੁਝ ਨਵਾਂ ਡਾਟਾ ਕਿਵੇਂ ਗਿਣਨਾ ਹੈ -- ਅੰਤਿਮ ਚੁਣੌਤੀ ਲਈ ਡਾਟਾਸੈਟ ਨੂੰ ਸੇਵ ਕਰਨਾ ਕਿਵੇਂ ਹੈ +- ਕਿਵੇਂ ਗੈਰਜ਼ਰੂਰੀ ਕਾਲਮ ਹਟਾਏ ਜਾਣ +- ਮੌਜੂਦਾ ਕਾਲਮਾਂ ਦੇ ਆਧਾਰ 'ਤੇ ਕੁਝ ਨਵੇਂ ਡੇਟਾ ਕਿਵੇਂ ਕੈਲਕੁਲੈਟ ਕੀਤੇ ਜਾਣ +- ਆਖਰੀ ਚੈਲੈਂਜ ਵਿੱਚ ਵਰਤੋਂ ਲਈ ਨਤੀਜੇ ਵਜੋਂ ਡੇਟਾਸੇਟ ਨੂੰ ਕਿਵੇਂ ਸੇਵ ਕਰਨਾ -## [ਪ੍ਰੀ-ਲੈਕਚਰ ਕਵਿਜ਼](https://ff-quizzes.netlify.app/en/ml/) +## [ਪੂਰਵ-ਲੈਕਚਰ ਕਵਿਜ਼](https://ff-quizzes.netlify.app/en/ml/) -### ਪਰਿਚਯ +### ਪਰੇਚਾਇ -ਅਜੇ ਤੱਕ ਤੁਸੀਂ ਸਿੱਖਿਆ ਹੈ ਕਿ ਟੈਕਸਟ ਡਾਟਾ ਅੰਕੜੇਵਾਰ ਡਾਟਾ ਦੀ ਤਰ੍ਹਾਂ ਨਹੀਂ ਹੁੰਦਾ। ਜੇ ਇਹ ਟੈਕਸਟ ਕਿਸੇ ਮਨੁੱਖ ਦੁਆਰਾ ਲਿਖਿਆ ਜਾਂ ਬੋਲਿਆ ਗਿਆ ਹੈ, ਤਾਂ ਇਸ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰਕੇ ਪੈਟਰਨ ਅਤੇ ਆਵ੍ਰਿੱਤੀਆਂ, ਭਾਵਨਾ ਅਤੇ ਅਰਥ ਪਤਾ ਲਗਾਇਆ ਜਾ ਸਕਦਾ ਹੈ। ਇਹ ਪਾਠ ਤੁਹਾਨੂੰ ਇੱਕ ਅਸਲ ਡਾਟਾਸੈਟ ਅਤੇ ਅਸਲ ਚੁਣੌਤੀ ਵਿੱਚ ਲੈ ਜਾਂਦਾ ਹੈ: **[ਯੂਰਪ ਵਿੱਚ 515K ਹੋਟਲ ਰਿਵਿਊਜ਼ ਡਾਟਾ](https://www.kaggle.com/jiashenliu/515k-hotel-reviews-data-in-europe)**, ਜਿਸ ਵਿੱਚ ਇੱਕ [CC0: ਪਬਲਿਕ ਡੋਮੇਨ ਲਾਇਸੈਂਸ](https://creativecommons.org/publicdomain/zero/1.0/) ਸ਼ਾਮਲ ਹੈ। ਇਹ ਡਾਟਾ Booking.com ਤੋਂ ਪਬਲਿਕ ਸਰੋਤਾਂ ਤੋਂ ਸਕ੍ਰੈਪ ਕੀਤਾ ਗਿਆ ਸੀ। ਡਾਟਾਸੈਟ ਦੇ ਰਚਨਹਾਰ Jiashen Liu ਹਨ। +ਹੁਣ ਤਕ ਤੁਸੀਂ ਸਿੱਖਿਆ ਕਿ ਟੈਕਸਟ ਡੇਟਾ ਗਿਣਤੀਕ ਤਰ੍ਹਾਂ ਦੇ ਡੇਟਾ ਤੋਂ ਕਿਵੇਂ ਵੱਖਰਾ ਹੁੰਦਾ ਹੈ। ਜੇ ਇਹ ਉਸ ਮਨੁੱਖ ਵੱਲੋਂ ਲਿਖਿਆ ਜਾਂ ਬੋਲਿਆ ਗਿਆ ਹੈ, ਤਾਂ ਇਹ ਪੈਟਰਨ ਅਤੇ ਫ੍ਰੀਕੁਐਂਸੀਜ਼, ਮਨੋਭਾਵ ਅਤੇ ਅਰਥ ਲੱਭਣ ਲਈ ਵਿਸ਼ਲੇਸ਼ਣ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਇਹ ਪਾਠ ਤੁਹਾਨੂੰ ਇੱਕ ਅਸਲੀ ਡੇਟਾਸੇਟ ਅਤੇ ਅਸਲੀ ਚੁਣੌਤੀ ਵਿੱਚ ਲੈ ਜਾਂਦਾ ਹੈ: **[ਯੂਰਪ ਵਿੱਚ 515K ਹੋਟਲ ਸਮੀਖਿਆਵਾਂ ਦਾ ਡੇਟਾ](https://www.kaggle.com/jiashenliu/515k-hotel-reviews-data-in-europe)** ਜੋ [CC0: ਪਬਲਿਕ ਡੋਮੇਨ ਲਾਇਸੈਂਸ](https://creativecommons.org/publicdomain/zero/1.0/) ਵਾਲਾ ਹੈ। ਇਹ Booking.com ਤੋਂ ਸਰਵਜਨਿਕ ਸਰੋਤਾਂ ਵਿੱਚੋਂ ਸਕ੍ਰੇਪ ਕੀਤਾ ਗਿਆ ਸੀ। ਡੇਟਾਸੇਟ ਬਣਾਉਣ ਵਾਲਾ ਜ਼ਿਆਸ਼ੇਨ ਲਿਊ ਹੈ। ### ਤਿਆਰੀ @@ -18,149 +18,193 @@ * Python 3 ਦੀ ਵਰਤੋਂ ਕਰਕੇ .ipynb ਨੋਟਬੁੱਕ ਚਲਾਉਣ ਦੀ ਸਮਰੱਥਾ * pandas -* NLTK, [ਜਿਸਨੂੰ ਤੁਹਾਨੂੰ ਸਥਾਨਕ ਤੌਰ 'ਤੇ ਇੰਸਟਾਲ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ](https://www.nltk.org/install.html) -* ਡਾਟਾਸੈਟ ਜੋ Kaggle 'ਤੇ ਉਪਲਬਧ ਹੈ [ਯੂਰਪ ਵਿੱਚ 515K ਹੋਟਲ ਰਿਵਿਊਜ਼ ਡਾਟਾ](https://www.kaggle.com/jiashenliu/515k-hotel-reviews-data-in-europe)। ਇਹ ਅਨਜ਼ਿਪ ਕਰਨ ਤੋਂ ਬਾਅਦ ਲਗਭਗ 230 MB ਹੈ। ਇਸਨੂੰ `/data` ਫੋਲਡਰ ਵਿੱਚ ਡਾਊਨਲੋਡ ਕਰੋ ਜੋ ਕਿ ਇਹਨਾਂ NLP ਪਾਠਾਂ ਨਾਲ ਜੁੜਿਆ ਹੋਇਆ ਹੈ। +* NLTK, [ਜੋ ਤੁਹਾਨੂੰ ਸਥਾਨਕ ਤੌਰ 'ਤੇ ਇੰਸਟਾਲ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ](https://www.nltk.org/install.html) +* ਡੇਟਾਸੇਟ ਜੋ Kaggle 'ਤੇ ਉਪਲਬਧ ਹੈ [515K Hotel Reviews Data in Europe](https://www.kaggle.com/jiashenliu/515k-hotel-reviews-data-in-europe)। ਇਸਦੀ ਅਣਜ਼ਿਪ ਕੀਤੀ ਹਾਲਤ ਵਿੱਚ ਲਗਭਗ 230 MB ਹੈ। ਇਸਨੂੰ ਇਨ੍ਹਾਂ NLP ਪਾਠਾਂ ਨਾਲ ਸੰਬੰਧਤ ਰੂਟ `/data` ਫੋਲਡਰ ਵਿੱਚ ਡਾਊਨਲੋਡ ਕਰੋ। -## ਖੋਜਾਤਮਕ ਡਾਟਾ ਵਿਸ਼ਲੇਸ਼ਣ +## ਖੋਜੀ ਡੇਟਾ ਵਿਸ਼ਲੇਸ਼ਣ -ਇਹ ਚੁਣੌਤੀ ਇਹ ਮੰਨਦੀ ਹੈ ਕਿ ਤੁਸੀਂ ਭਾਵਨਾ ਵਿਸ਼ਲੇਸ਼ਣ ਅਤੇ ਮਹਿਮਾਨ ਰਿਵਿਊ ਸਕੋਰਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇੱਕ ਹੋਟਲ ਸਿਫਾਰਸ਼ੀ ਬੋਟ ਤਿਆਰ ਕਰ ਰਹੇ ਹੋ। ਡਾਟਾਸੈਟ ਜਿਸਦੀ ਤੁਸੀਂ ਵਰਤੋਂ ਕਰ ਰਹੇ ਹੋ, ਇਸ ਵਿੱਚ 6 ਸ਼ਹਿਰਾਂ ਵਿੱਚ 1493 ਵੱਖ-ਵੱਖ ਹੋਟਲਾਂ ਦੇ ਰਿਵਿਊ ਸ਼ਾਮਲ ਹਨ। +ਇਹ ਚੈਲੈਂਜ ਮੰਨਦਾ ਹੈ ਕਿ ਤੁਸੀਂ ਮਨੋਭਾਵ ਵਿਸ਼ਲੇਸ਼ਣ ਅਤੇ ਮਹਿਮਾਨ ਸਮੀਖਿਆ ਸਕੋਰਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਹੋਟਲ ਸਿਫਾਰਸ਼ ਬੋਟ ਬਣਾ ਰਹੇ ਹੋ। ਜਿਸ ਡੇਟਾਸੇਟ ਦੀ ਤੁਸੀਂ ਵਰਤੋਂ ਕਰੋਗੇ, ਉਹ 6 ਸ਼ਹਿਰਾਂ ਵਿੱਚ 1493 ਵੱਖ-ਵੱਖ ਹੋਟਲਾਂ ਦੀਆਂ ਸਮੀਖਿਆਵਾਂ ਸ਼ਾਮਿਲ ਕਰਦਾ ਹੈ। -Python, ਹੋਟਲ ਰਿਵਿਊਜ਼ ਦੇ ਡਾਟਾਸੈਟ, ਅਤੇ NLTK ਦੇ ਭਾਵਨਾ ਵਿਸ਼ਲੇਸ਼ਣ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਤੁਸੀਂ ਪਤਾ ਲਗਾ ਸਕਦੇ ਹੋ: +Python ਦੀ ਵਰਤੋਂ ਕਰਕੇ, ਹੋਟਲ ਸਮੀਖਿਆਵਾਂ ਦੇ ਡੇਟਾਸੇਟ ਅਤੇ NLTK ਦੇ ਮਨੋਭਾਵ ਵਿਸ਼ਲੇਸ਼ਣ ਨਾਲ ਤੁਸੀਂ ਪਤਾ ਲਗਾ ਸਕਦੇ ਹੋ: -* ਰਿਵਿਊਜ਼ ਵਿੱਚ ਸਭ ਤੋਂ ਵੱਧ ਵਰਤੇ ਜਾਣ ਵਾਲੇ ਸ਼ਬਦ ਅਤੇ ਵਾਕਾਂਸ਼ ਕਿਹੜੇ ਹਨ? -* ਕੀ ਹੋਟਲ ਨੂੰ ਵਰਣਨ ਕਰਨ ਵਾਲੇ ਅਧਿਕਾਰਕ *ਟੈਗ* ਰਿਵਿਊ ਸਕੋਰਾਂ ਨਾਲ ਸਬੰਧਤ ਹਨ (ਜਿਵੇਂ ਕਿ ਕੀ ਕਿਸੇ ਖਾਸ ਹੋਟਲ ਲਈ *Family with young children* ਦੇ ਰਿਵਿਊ *Solo traveller* ਦੇ ਰਿਵਿਊਜ਼ ਨਾਲੋਂ ਜ਼ਿਆਦਾ ਨਕਾਰਾਤਮਕ ਹਨ, ਜੋ ਇਹ ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਇਹ ਹੋਟਲ *Solo travellers* ਲਈ ਬਿਹਤਰ ਹੈ)? -* ਕੀ NLTK ਭਾਵਨਾ ਸਕੋਰ ਹੋਟਲ ਰਿਵਿਊਅਰ ਦੇ ਅੰਕੜੇਵਾਰ ਸਕੋਰ ਨਾਲ 'ਸਹਿਮਤ' ਹਨ? +* ਸਮੀਖਿਆਵਾਂ ਵਿੱਚ ਸਭ ਤੋਂ ਵੱਧ ਵਰਤੇ ਜਾਂਦੇ ਸ਼ਬਦ ਅਤੇ ਵਾਕ-ਸੰਯੋਜਨ ਕੀ ਹਨ? +* ਕੀ ਹੋਟਲ ਨੂੰ ਵਰਣਨ ਕਰਨ ਵਾਲੇ ਅਧਿਕਾਰਿਕ *ਟੈਗ* ਸਮੀਖਿਆ ਸਕੋਰਾਂ ਨਾਲ ਸਬੰਧਤ ਹਨ (ਜਿਵੇਂ ਕਿ ਕਿਸੇ ਖਾਸ ਹੋਟਲ ਲਈ *ਕਿਸਾਨਾ* ਸਮੀਖਿਆਵਾਂ ਬਹੁਤ ਨੇਗਟਿਵ ਹਨ *ਸੋਲੋ ਯਾਤਰੀ* ਨਾਲੋਂ, ਸੰਭਵ ਹੈ ਕਿ ਉਹ *ਸੋਲੋ ਯਾਤਰੀਆਂ* ਲਈ ਬਿਹਤਰ ਹੋ)? +* ਕੀ NLTK ਦੇ ਮਨੋਭਾਵ ਸਕੋਰ ਹੋਟਲ ਰਿਵਿਊਅਰ ਦੇ ਗਿਣਤੀਕ ਸਕੋਰ ਨਾਲ 'ਸਹਿਮਤ' ਹਨ? -#### ਡਾਟਾਸੈਟ +#### ਡੇਟਾਸੇਟ -ਆਓ ਡਾਟਾਸੈਟ ਦੀ ਜਾਂਚ ਕਰੀਏ ਜੋ ਤੁਸੀਂ ਡਾਊਨਲੋਡ ਕੀਤਾ ਹੈ ਅਤੇ ਸਥਾਨਕ ਤੌਰ 'ਤੇ ਸੇਵ ਕੀਤਾ ਹੈ। ਫਾਈਲ ਨੂੰ ਕਿਸੇ ਐਡੀਟਰ ਜਿਵੇਂ ਕਿ VS Code ਜਾਂ Excel ਵਿੱਚ ਖੋਲ੍ਹੋ। +ਆਓ ਇਸ ਡੇਟਾਸੇਟ ਦਾ ਪੜਚੋਲ ਕਰੀਏ ਜੋ ਤੁਸੀਂ ਡਾਊਨਲੋਡ ਕੀਤਾ ਹੈ ਅਤੇ ਸਥਾਨਕ ਤੌਰ 'ਤੇ ਸੇਵ ਕੀਤਾ ਹੈ। ਇਸਨੂੰ VS Code ਜਾਂ Excel ਵਰਗੇ ਐਡੀਟਰ ਵਿੱਚ ਖੋਲ੍ਹੋ। -ਡਾਟਾਸੈਟ ਵਿੱਚ ਹੇਠਾਂ ਦਿੱਤੇ ਸਿਰਲੇਖ ਹਨ: +ਡੇਟਾਸੇਟ ਵਿੱਚ ਹੈੱਡਰਾਂ ਇਨ੍ਹਾਂ ਹਨ: *Hotel_Address, Additional_Number_of_Scoring, Review_Date, Average_Score, Hotel_Name, Reviewer_Nationality, Negative_Review, Review_Total_Negative_Word_Counts, Total_Number_of_Reviews, Positive_Review, Review_Total_Positive_Word_Counts, Total_Number_of_Reviews_Reviewer_Has_Given, Reviewer_Score, Tags, days_since_review, lat, lng* -ਇਹਨਾਂ ਨੂੰ ਹੇਠਾਂ ਦਿੱਤੇ ਤਰੀਕੇ ਨਾਲ ਸਮੂਹਬੱਧ ਕੀਤਾ ਗਿਆ ਹੈ ਜੋ ਸ਼ਾਇਦ ਜਾਂਚਣ ਲਈ ਆਸਾਨ ਹੋਵੇ: +ਇਹਨਾਂ ਨੂੰ ਇਸ ਤਰ੍ਹਾਂ ਸਮੂਹਬੱਧ ਕੀਤਾ ਗਿਆ ਹੈ ਕਿ ਸਮੀਖਿਆ ਕਰਨ ਵਿੱਚ ਵਧੀਆ ਹੋ ਸਕੇ: ##### ਹੋਟਲ ਕਾਲਮ -* `Hotel_Name`, `Hotel_Address`, `lat` (ਅਕਸ਼ਾਂਸ), `lng` (ਦੇਸ਼ਾਂਤਰ) - * *lat* ਅਤੇ *lng* ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਤੁਸੀਂ Python ਨਾਲ ਇੱਕ ਨਕਸ਼ਾ ਬਣਾਉ ਸਕਦੇ ਹੋ ਜੋ ਹੋਟਲ ਦੇ ਸਥਾਨ ਦਿਖਾਉਂਦਾ ਹੈ (ਸ਼ਾਇਦ ਨਕਾਰਾਤਮਕ ਅਤੇ ਸਕਾਰਾਤਮਕ ਰਿਵਿਊਜ਼ ਲਈ ਰੰਗ ਕੋਡਿੰਗ ਕਰਕੇ) - * Hotel_Address ਸਾਨੂੰ ਸਿੱਧੇ ਤੌਰ 'ਤੇ ਜ਼ਿਆਦਾ ਲਾਭਕਾਰੀ ਨਹੀਂ ਲੱਗਦਾ, ਅਤੇ ਅਸੀਂ ਇਸਨੂੰ ਆਸਾਨ ਸਾਰਟਿੰਗ ਅਤੇ ਖੋਜ ਲਈ ਦੇਸ਼ ਨਾਲ ਬਦਲ ਸਕਦੇ ਹਾਂ +* `Hotel_Name`, `Hotel_Address`, `lat` (ਲੈਟੀਟਿਊਡ), `lng` (ਲੌੰਗਟੀਟਿਊਡ) + * *lat* ਅਤੇ *lng* ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਤੁਸੀਂ Python ਨਾਲ ਹੋਟਲ ਸਥਾਨਕ ਰੂਪ ਵਿੱਚ ਦਿਖਾਉਣ ਲਈ ਨਕਸ਼ਾ ਬਣਾਉ ਸਕਦੇ ਹੋ (ਸ਼ਾਇਦ ਨੈਗਟਿਵ ਅਤੇ ਪੋਜ਼ਿਟਿਵ ਸਮੀਖਿਆਵਾਂ ਲਈ ਰੰਗ ਕੋਡਿੰਗ ਵੀ ਕਰ ਸਕਦੇ ਹੋ) + * Hotel_Address ਸਾਡੇ ਲਈ ਸਿੱਧੇ ਤੌਰ 'ਤੇ ਲਾਗੂ ਨਹੀਂ ਹੁੰਦਾ ਅਤੇ ਅਸੀਂ ਸਾਦਗੀ ਲਈ ਉਸਨੂੰ ਦੇਸ਼ ਨਾਲ ਬਦਲ ਸਕਦੇ ਹਾਂ -**ਹੋਟਲ ਮੈਟਾ-ਰਿਵਿਊ ਕਾਲਮ** +**ਹੋਟਲ ਮੈਟਾ-ਸਮੀਖਿਆ ਕਾਲਮ** * `Average_Score` - * ਡਾਟਾਸੈਟ ਦੇ ਰਚਨਹਾਰ ਦੇ ਅਨੁਸਾਰ, ਇਹ ਕਾਲਮ *ਹੋਟਲ ਦਾ ਔਸਤ ਸਕੋਰ ਹੈ, ਜੋ ਪਿਛਲੇ ਸਾਲ ਦੇ ਤਾਜ਼ਾ ਟਿੱਪਣੀ ਦੇ ਆਧਾਰ 'ਤੇ ਗਿਣਿਆ ਗਿਆ ਹੈ*। ਇਹ ਸਕੋਰ ਗਿਣਨ ਦਾ ਇੱਕ ਅਜੀਬ ਤਰੀਕਾ ਲੱਗਦਾ ਹੈ, ਪਰ ਇਹ ਡਾਟਾ ਸਕ੍ਰੈਪ ਕੀਤਾ ਗਿਆ ਹੈ, ਇਸ ਲਈ ਅਸੀਂ ਇਸਨੂੰ ਫਿਲਹਾਲ ਸੱਚ ਮੰਨ ਸਕਦੇ ਹਾਂ। + * ਡੇਟਾਸੇਟ ਬਣਾਉਣ ਵਾਲੇ ਦੇ ਮੁਤਾਬਕ, ਇਹ ਕਾਲਮ *ਹੋਟਲ ਦਾ ਔਸਤ ਸਕੋਰ ਹੈ, ਜੋ ਆਖਰੀ ਸਾਲ ਦੀਆਂ ਤਾਜ਼ਾ ਟਿੱਪਣੀਆਂ ਦੇ ਆਧਾਰ ਤੇ ਗਣਨਾ ਕੀਤਾ ਗਿਆ ਹੈ*। ਇਹ ਸਕੋਰ ਕੈਲਕੁਲੇਸ਼ਨ ਦਾ ਇੱਕ ਅਜੀਬ ਤਰੀਕਾ ਜਾਪਦਾ ਹੈ, ਪਰ ਇਹ ਡੇਟਾ ਸਕ੍ਰੇਪ ਕੀਤਾ ਗਿਆ ਹੈ ਇਸ ਲਈ ਅਸੀਂ ਇਸਨੂੰ ਹੁਣ ਲਈ ਸੱਚ ਮੰਨ ਸਕਦੇ ਹਾਂ। - ✅ ਇਸ ਡਾਟੇ ਦੇ ਹੋਰ ਕਾਲਮਾਂ ਦੇ ਆਧਾਰ 'ਤੇ, ਕੀ ਤੁਸੀਂ ਔਸਤ ਸਕੋਰ ਗਿਣਨ ਦਾ ਹੋਰ ਤਰੀਕਾ ਸੋਚ ਸਕਦੇ ਹੋ? + ✅ ਇਸ ਡੇਟਾ ਦੇ ਹੋਰ ਕਾਲਮਾਂ ਦੇ ਆਧਾਰ 'ਤੇ, ਕੀ ਤੁਸੀਂ ਔਸਤ ਸਕੋਰ ਕੈਲਕুলੇਟ ਕਰਨ ਦਾ ਕੋਈ ਹੋਰ ਤਰੀਕਾ ਸੋਚ ਸਕਦੇ ਹੋ? * `Total_Number_of_Reviews` - * ਇਹ ਹੋਟਲ ਨੂੰ ਮਿਲੇ ਕੁੱਲ ਰਿਵਿਊਜ਼ ਦੀ ਗਿਣਤੀ ਹੈ - ਇਹ ਸਪਸ਼ਟ ਨਹੀਂ ਹੈ (ਕੋਡ ਲਿਖਣ ਤੋਂ ਬਿਨਾਂ) ਕਿ ਕੀ ਇਹ ਡਾਟਾਸੈਟ ਵਿੱਚ ਸ਼ਾਮਲ ਰਿਵਿਊਜ਼ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ। + * ਇਸ ਹੋਟਲ ਨੇ ਜਿੰਨੀਆਂ ਸਮੀਖਿਆਵਾਂ ਪ੍ਰਾਪਤ ਕੀਤੀਆਂ ਹਨ, ਉਹ ਸੰਖਿਆ ਹੈ - ਇਹ ਪਤਾ ਨਹੀਂ ਕਿ ਡੇਟਾਸੇਟ ਦੀਆਂ ਸਮੀਖਿਆਵਾਂ ਨਾਲ ਸੀਧਾ ਸਬੰਧਤ ਹੈ ਜਾਂ ਨਹੀਂ (ਬਿਨਾਂ ਕੋਈ ਕੋਡ ਲਿਖੇ) * `Additional_Number_of_Scoring` - * ਇਸਦਾ ਮਤਲਬ ਹੈ ਕਿ ਰਿਵਿਊ ਸਕੋਰ ਦਿੱਤਾ ਗਿਆ ਸੀ ਪਰ ਰਿਵਿਊਅਰ ਦੁਆਰਾ ਕੋਈ ਸਕਾਰਾਤਮਕ ਜਾਂ ਨਕਾਰਾਤਮਕ ਟਿੱਪਣੀ ਨਹੀਂ ਲਿਖੀ ਗਈ + * ਇਸਦਾ ਮਤਲਬ ਹੈ ਕਿ ਸਮੀਖਿਆ ਦੇ ਸੈੱਟ ਦੇ ਬਗੈਰ ਸੁਖਾਤਮਕ ਜਾਂ ਨਕਾਰਾਤਮਕ ਟਿੱਪਣੀ ਦੇ ਇੱਕ ਸਕੋਰ ਦਿੱਤਾ ਗਿਆ ਸੀ -**ਰਿਵਿਊ ਕਾਲਮ** +**ਸਮੀਖਿਆ ਕਾਲਮ** - `Reviewer_Score` - - ਇਹ ਇੱਕ ਅੰਕੜੇਵਾਰ ਮੁੱਲ ਹੈ ਜਿਸ ਵਿੱਚ ਘੱਟੋ-ਘੱਟ 1 ਦਸ਼ਮਲਵ ਸਥਾਨ ਹੁੰਦਾ ਹੈ ਅਤੇ ਇਸਦੇ ਘੱਟੋ-ਘੱਟ ਅਤੇ ਵੱਧ ਤੋਂ ਵੱਧ ਮੁੱਲ 2.5 ਅਤੇ 10 ਹਨ - - ਇਹ ਨਹੀਂ ਸਮਝਾਇਆ ਗਿਆ ਕਿ 2.5 ਸਭ ਤੋਂ ਘੱਟ ਸਕੋਰ ਕਿਉਂ ਹੈ + - ਇਹ ਇੱਕ ਗਿਣਤੀਕ ਮੁੱਲ ਹੈ ਜੋ ਸਭ ਤੋਂ ਘੱਟ 2.5 ਅਤੇ ਵੱਧ ਤੋਂ ਵੱਧ 10 ਵਿਚਕਾਰ 1 ਦਸ਼ਮਲਵ ਸਥਾਨ ਨਾਲ ਹੈ + - ਇਹ ਸਮਝਾਉਣਯੋਗ ਨਹੀਂ ਕਿ 2.5 ਸਭ ਤੋਂ ਘੱਟ ਸਕੋਰ ਕਿਉਂ ਹੈ - `Negative_Review` - - ਜੇਕਰ ਕਿਸੇ ਰਿਵਿਊਅਰ ਨੇ ਕੁਝ ਨਹੀਂ ਲਿਖਿਆ, ਤਾਂ ਇਸ ਖੇਤਰ ਵਿੱਚ "**No Negative**" ਹੋਵੇਗਾ - - ਧਿਆਨ ਦਿਓ ਕਿ ਰਿਵਿਊਅਰ ਨਕਾਰਾਤਮਕ ਰਿਵਿਊ ਕਾਲਮ ਵਿੱਚ ਸਕਾਰਾਤਮਕ ਟਿੱਪਣੀ ਲਿਖ ਸਕਦਾ ਹੈ (ਜਿਵੇਂ ਕਿ "ਇਸ ਹੋਟਲ ਬਾਰੇ ਕੁਝ ਵੀ ਬੁਰਾ ਨਹੀਂ ਹੈ") + - ਜੇਕਰ ਸਮੀਖਿਆਕਾਰ ਨੇ ਕੁਝ ਨਹੀਂ ਲਿਖਿਆ, ਤਾਂ ਇਹ ਖੇਤਰ "**No Negative**" ਵਾਲਾ ਹੋਵੇਗਾ + - ਧਿਆਨ ਦਿਓ ਕਿ ਇੱਕ ਸਮੀਖਿਆਕਾਰ ਨੇ ਨਕਾਰਾਤਮਕ ਸਮੀਖਿਆ ਥਾਂ ਪੋਜ਼ਿਟਿਵ ਸਮੀਖਿਆ ਵੀ Negative_Review ਕਾਲਮ ਵਿੱਚ ਲਿਖੀ ਹੋ ਸਕਦੀ ਹੈ (ਜਿਵੇਂ "ਇਸ ਹੋਟਲ ਬਾਰੇ ਕੁਝ ਵੀ ਖਰਾਬ ਨਹੀਂ ਹੈ") - `Review_Total_Negative_Word_Counts` - - ਵੱਧ ਨਕਾਰਾਤਮਕ ਸ਼ਬਦ ਗਿਣਤੀ ਘੱਟ ਸਕੋਰ ਦਰਸਾਉਂਦੀ ਹੈ (ਭਾਵਨਾ ਦੀ ਜਾਂਚ ਕੀਤੇ ਬਿਨਾਂ) + - ਵੱਧ ਨਕਾਰਾਤਮਕ ਸ਼ਬਦ ਗਿਣਤੀ ਘੱਟ ਸਕੋਰ ਦਰਸਾਉਂਦੀ ਹੈ (ਬਿਨਾਂ ਮਨੋਭਾਵ ਦੀ ਜਾਂਚ ਕੀਤੇ) - `Positive_Review` - - ਜੇਕਰ ਕਿਸੇ ਰਿਵਿਊਅਰ ਨੇ ਕੁਝ ਨਹੀਂ ਲਿਖਿਆ, ਤਾਂ ਇਸ ਖੇਤਰ ਵਿੱਚ "**No Positive**" ਹੋਵੇਗਾ - - ਧਿਆਨ ਦਿਓ ਕਿ ਰਿਵਿਊਅਰ ਸਕਾਰਾਤਮਕ ਰਿਵਿਊ ਕਾਲਮ ਵਿੱਚ ਨਕਾਰਾਤਮਕ ਟਿੱਪਣੀ ਲਿਖ ਸਕਦਾ ਹੈ (ਜਿਵੇਂ ਕਿ "ਇਸ ਹੋਟਲ ਬਾਰੇ ਕੁਝ ਵੀ ਚੰਗਾ ਨਹੀਂ ਹੈ") + - ਜੇਕਰ ਸਮੀਖਿਆਕਾਰ ਨੇ ਕੁਝ ਨਹੀਂ ਲਿਖਿਆ, ਤਾਂ ਇਹ ਖੇਤਰ "**No Positive**" ਵਾਲਾ ਹੋਵੇਗਾ + - ਧਿਆਨ ਦਿਓ ਕਿ ਇੱਕ ਸਮੀਖਿਆਕਾਰ ਨੇ ਪੋਜ਼ਿਟਿਵ ਸਮੀਖਿਆ ਥਾਂ ਨਕਾਰਾਤਮਕ ਸਮੀਖਿਆ ਭੀ Positive_Review ਕਾਲਮ ਵਿੱਚ ਲਿਖੀ ਹੋ ਸਕਦੀ ਹੈ (ਜਿਵੇਂ "ਇਸ ਹੋਟਲ ਬਾਰੇ ਕੁਝ ਵੀ ਚੰਗਾ ਨਹੀਂ ਹੈ") - `Review_Total_Positive_Word_Counts` - - ਵੱਧ ਸਕਾਰਾਤਮਕ ਸ਼ਬਦ ਗਿਣਤੀ ਵੱਧ ਸਕੋਰ ਦਰਸਾਉਂਦੀ ਹੈ (ਭਾਵਨਾ ਦੀ ਜਾਂਚ ਕੀਤੇ ਬਿਨਾਂ) + - ਵੱਧ ਪੋਜ਼ਿਟਿਵ ਸ਼ਬਦ ਗਿਣਤੀ ਵੱਧ ਸਕੋਰ ਦਰਸਾਉਂਦੀ ਹੈ (ਬਿਨਾਂ ਮਨੋਭਾਵ ਦੀ ਜਾਂਚ ਕੀਤੇ) - `Review_Date` ਅਤੇ `days_since_review` - - ਇੱਕ ਤਾਜ਼ਗੀ ਜਾਂ ਪੁਰਾਣੇਪਨ ਦਾ ਮਾਪ ਲਾਗੂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ (ਪੁਰਾਣੇ ਰਿਵਿਊ ਸ਼ਾਇਦ ਨਵੇਂ ਰਿਵਿਊਜ਼ ਜਿੰਨੇ ਸਹੀ ਨਹੀਂ ਹੋ ਸਕਦੇ ਕਿਉਂਕਿ ਹੋਟਲ ਪ੍ਰਬੰਧਨ ਬਦਲ ਗਿਆ, ਜਾਂ ਨਵੀਨੀਕਰਨ ਹੋਇਆ, ਜਾਂ ਇੱਕ ਤਲਾਬ ਸ਼ਾਮਲ ਕੀਤਾ ਗਿਆ ਆਦਿ) + - ਸਮੀਖਿਆ ਦੀ ਤਾਜ਼ਗੀ ਜਾਂ ਪੁਰਾਣੇਪਨ ਨੂੰ ਮਾਪਣ ਲਈ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ (ਪੁਰਾਣੀਆਂ ਸਮੀਖਿਆਵਾਂ ਨਵੀਆਂ ਵਾਂਗ ਸਹੀ ਨਹੀਂ ਹੋ ਸਕਦੀਆਂ ਕਿਉਂਕਿ ਹੋਟਲ ਪ੍ਰਬੰਧਨ ਬਦਲਿਆ ਹੋਇਆ, ਮਰੰਮਤਾਂ ਕੀਤੀਆਂ ਗਈਆਂ, ਜਾਂ ਤਲਾਬ ਜੋੜਿਆ ਗਿਆ ਆਦਿ) - `Tags` - - ਇਹ ਛੋਟੇ ਵਰਣਨ ਹਨ ਜੋ ਰਿਵਿਊਅਰ ਚੁਣ ਸਕਦੇ ਹਨ ਜਿਵੇਂ ਕਿ ਉਹ ਕਿਸ ਕਿਸਮ ਦੇ ਮਹਿਮਾਨ ਸਨ (ਜਿਵੇਂ ਕਿ ਸਿੰਗਲ ਜਾਂ ਪਰਿਵਾਰ), ਉਹਨਾਂ ਕੋਲ ਕਿਹੜਾ ਕਮਰਾ ਸੀ, ਰਹਿਣ ਦੀ ਮਿਆਦ ਅਤੇ ਰਿਵਿਊ ਕਿਵੇਂ ਜਮ੍ਹਾਂ ਕੀਤਾ ਗਿਆ ਸੀ। - - ਦੁਖਦਾਈ ਗੱਲ ਇਹ ਹੈ ਕਿ ਇਹ ਟੈਗ ਵਰਤਣਾ ਮੁਸ਼ਕਲ ਹੈ, ਹੇਠਾਂ ਦਿੱਤੇ ਭਾਗ ਵਿੱਚ ਇਸ ਦੀ ਵਰਤੋਂਯੋਗਤਾ 'ਤੇ ਚਰਚਾ ਕੀਤੀ ਗਈ ਹੈ + - ਇਹ ਛੋਟੇ ਵਰਣਨ ਹਨ ਜੋ ਸਮੀਖਿਆਕਾਰ ਆਪਣੀ ਮੇਹਮਾਨੀ ਕਿਸਮ (ਜਿਵੇਂ ਸੋਲੋ ਜਾਂ ਪਰਿਵਾਰ), ਕਮਰੇ ਦੀ ਕਿਸਮ, ਰਹਿਣ ਦਾ ਸਮਾਂ ਅਤੇ ਸਮੀਖਿਆ ਜਮ੍ਹਾਂ ਕਰਨ ਦੇ ਢੰਗ ਨੂੰ ਦਰਸਾਉਣ ਲਈ ਚੁਣ ਸਕਦਾ ਹੈ। + - ਪਰੰਤੂ, ਇਹ ਟੈਗ ਵਰਤਣਾ ਮੁਸ਼ਕਲ ਹੈ, ਹੇਠਾਂ ਦਿੱਤੇ ਸੈਕਸ਼ਨ ਵਿੱਚ ਇਹਨਾਂ ਦੀ ਉਪਯੋਗਿਤਾ ਬਾਰੇ ਗੱਲ ਕੀਤੀ ਗਈ ਹੈ -**ਰਿਵਿਊਅਰ ਕਾਲਮ** +**ਸਮੀਖਿਆਕਾਰ ਕਾਲਮ** - `Total_Number_of_Reviews_Reviewer_Has_Given` - - ਇਹ ਸਿਫਾਰਸ਼ੀ ਮਾਡਲ ਵਿੱਚ ਇੱਕ ਕਾਰਕ ਹੋ ਸਕਦਾ ਹੈ, ਉਦਾਹਰਣ ਲਈ, ਜੇ ਤੁਸੀਂ ਇਹ ਨਿਰਧਾਰਤ ਕਰ ਸਕਦੇ ਹੋ ਕਿ ਸੈਂਕੜੇ ਰਿਵਿਊਜ਼ ਵਾਲੇ ਵੱਧ ਉਤਪਾਦਕ ਰਿਵਿਊਅਰ ਨਕਾਰਾਤਮਕ ਹੋਣ ਦੀ ਸੰਭਾਵਨਾ ਜ਼ਿਆਦਾ ਹੈ। ਹਾਲਾਂਕਿ, ਕਿਸੇ ਖਾਸ ਰਿਵਿਊ ਦੇ ਰਿਵਿਊਅਰ ਨੂੰ ਇੱਕ ਵਿਲੱਖਣ ਕੋਡ ਨਾਲ ਪਛਾਣ ਨਹੀਂ ਦਿੱਤੀ ਗਈ, ਅਤੇ ਇਸ ਲਈ ਇਸਨੂੰ ਰਿਵਿਊਜ਼ ਦੇ ਸੈੱਟ ਨਾਲ ਜੋੜਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ। 30 ਰਿਵਿਊਅਰ ਹਨ ਜਿਨ੍ਹਾਂ ਨੇ 100 ਜਾਂ ਵੱਧ ਰਿਵਿਊ ਦਿੱਤੇ ਹਨ, ਪਰ ਇਹ ਦੇਖਣਾ ਮੁਸ਼ਕਲ ਹੈ ਕਿ ਇਹ ਸਿਫਾਰਸ਼ੀ ਮਾਡਲ ਵਿੱਚ ਕਿਵੇਂ ਸਹਾਇਕ ਹੋ ਸਕਦਾ ਹੈ। + - ਇਹ ਸਿਫਾਰਸ਼ ਮਾਡਲ ਵਿੱਚ ਇੱਕ ਕਾਰਕ ਹੋ ਸਕਦਾ ਹੈ, ਉਦਾਹਰਨ ਲਈ, ਜੇ ਤੁਸੀਂ ਪਤਾ ਲਗਾ ਸਕਦੇ ਹੋ ਕਿ ਜ਼ਿਆਦਾ ਸਮੀਖਿਆਵਾਂ ਦੇਣ ਵਾਲੇ ਵਿਅਕਤੀ ਜ਼ਿਆਦਾ ਨਕਾਰਾਤਮਕ ਹੋ ਸਕਦੇ ਹਾਂ। ਪਰ ਕਿਸੇ ਵਿਸ਼ੇਸ਼ ਸਮੀਖਿਆਕਾਰ ਨੂੰ ਇੱਕ ਵਿਲੱਖਣ ਕੋਡ ਨਾਲ ਪਛਾਣਿਆ ਨਹੀਂ ਗਿਆ ਹੈ, ਇਸ ਲਈ ਸਮੀਖਿਆਵਾਂ ਨੂੰ ਜੋੜਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ। 100 ਜਾਂ ਉਸ ਤੋਂ ਵੱਧ ਸਮੀਖਿਆਵਾਂ ਵਾਲੇ 30 ਸਮੀਖਿਆਕਾਰ ਹਨ, ਪਰ ਇਹ ਸਮਝਣਾ ਮੁਸ਼ਕਲ ਹੈ ਕਿ ਇਹ ਸਿਫਾਰਸ਼ ਮਾਡਲ ਵਿੱਚ ਕਿਵੇਂ ਮਦਦ ਕਰ ਸਕਦਾ ਹੈ। - `Reviewer_Nationality` - - ਕੁਝ ਲੋਕ ਸੋਚ ਸਕਦੇ ਹਨ ਕਿ ਕੁਝ ਰਾਸ਼ਟਰੀਤਾਵਾਂ ਸਕਾਰਾਤਮਕ ਜਾਂ ਨਕਾਰਾਤਮਕ ਰਿਵਿਊ ਦੇਣ ਦੀ ਵੱਧ ਸੰਭਾਵਨਾ ਰੱਖਦੀਆਂ ਹਨ। ਆਪਣੇ ਮਾਡਲਾਂ ਵਿੱਚ ਇਸ ਤਰ੍ਹਾਂ ਦੇ ਅਨੁਮਾਨਿਕ ਦ੍ਰਿਸ਼ਟੀਕੋਣ ਸ਼ਾਮਲ ਕਰਨ ਤੋਂ ਸਾਵਧਾਨ ਰਹੋ। ਇਹ ਰਾਸ਼ਟਰੀ (ਅਤੇ ਕਈ ਵਾਰ ਨਸਲੀ) ਸਟਿਰਿਓਟਾਈਪ ਹਨ, ਅਤੇ ਹਰ ਰਿਵਿਊਅਰ ਇੱਕ ਵਿਅਕਤੀਗਤ ਸੀ ਜਿਸਨੇ ਆਪਣੇ ਅਨੁਭਵ ਦੇ ਆਧਾਰ 'ਤੇ ਰਿਵਿਊ ਲਿਖਿਆ। ਇਹ ਕਈ ਲੈਂਸਾਂ ਰਾਹੀਂ ਫਿਲਟਰ ਕੀਤਾ ਗਿਆ ਹੋ ਸਕਦਾ ਹੈ ਜਿਵੇਂ ਕਿ ਉਹਨਾਂ ਦੇ ਪਿਛਲੇ ਹੋਟਲ ਵਿੱਚ ਰਹਿਣ ਦੇ ਅਨੁਭਵ, ਯਾਤਰਾ ਦੀ ਦੂਰੀ, ਅਤੇ ਉਹਨਾਂ ਦਾ ਨਿੱਜੀ ਸੁਭਾਵ। ਇਹ ਸੋਚਣਾ ਕਿ ਉਹਨਾਂ ਦੇ ਰਾਸ਼ਟਰੀਤਾਵਾਂ ਦੇ ਕਾਰਨ ਰਿਵਿਊ ਸਕੋਰ ਸੀ, ਇਸਨੂੰ ਜਾਇਜ਼ ਠਹਿਰਾਉਣਾ ਮੁਸ਼ਕਲ ਹੈ। -🚨 ਧਿਆਨ ਦੇਣ ਯੋਗ ਗੱਲ + - ਕੁਝ ਲੋਕ ਸੋਚ ਸਕਦੇ ਹਨ ਕਿ ਕਿਸੇ ਕੌਮੀ ਪਛਾਣ ਵਾਲੇ ਲੋਕ ਜ਼ਿਆਦਾ ਪੋਜ਼ਿਟਿਵ ਜਾਂ ਨਕਾਰਾਤਮਕ ਸਮੀਖਿਆ ਦੇਣਗੇ, ਪਰ ਆਪਣੇ ਮਾਡਲਾਂ ਵਿੱਚ ਇਹ ਆਖਣ ਵਾਲੇ ਸਵਾਲਾਂ ਦੇ ਵਿੱਚ ਸੋਚਣ ਵਿੱਚ ਧਿਆਨ ਧਰਨਾ। ਇਹ ਕੌਮੀ ਜਾਂ ਜਾਤੀਵਾਦੀ ਸਟੀਰੀਓਟਾਈਪ ਹਨ, ਅਤੇ ਹਰ ਸਮੀਖਿਆਕਾਰ ਇੱਕ ਵਿਅਕਤੀ ਸੀ ਜਿਸ ਨੇ ਆਪਣਾ ਅਨੁਭਵ ਨੂੰ ਧਿਆਨ ਵਿੱਚ ਰੱਖ ਕੇ ਟਿੱਪਣੀ ਕੀਤੀ। ਇਹ ਦੇਖੋ ਕਿ ਉਨ੍ਹਾਂ ਦੀ ਪਿਛਲੀ ਹੋਟਲ ਟ੍ਰਿਪਾਂ, ਯਾਤਰਾ ਦੀ ਦੂਰੀ ਅਤੇ ਆਪਣੇ ਸੁਭਾਅ ਨਾਲ ਹੀ ਸਮੀਖਿਆ ਲਿਖੀ ਗਈ ਸੀ। ਸਿਰਫ਼ ਉਨ੍ਹਾਂ ਦੀ ਕੌਮੀ ਪਛਾਣ ਨੂੰ ਸਮੀਖਿਆ ਦਾ ਕਾਰਨ ਮੰਨਣਾ ਔਖਾ ਹੈ। -ਜਦੋਂ ਤੁਸੀਂ ਇਸ ਡੇਟਾਸੈਟ ਨਾਲ ਕੰਮ ਕਰ ਰਹੇ ਹੋ, ਤਾਂ ਤੁਸੀਂ ਐਸਾ ਕੋਡ ਲਿਖੋਗੇ ਜੋ ਟੈਕਸਟ ਤੋਂ ਕੁਝ ਗਣਨਾ ਕਰੇਗਾ ਬਿਨਾਂ ਇਸ ਟੈਕਸਟ ਨੂੰ ਖੁਦ ਪੜ੍ਹਨ ਜਾਂ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰਨ ਦੀ ਲੋੜ ਹੋਵੇ। ਇਹ NLP ਦਾ ਮੁੱਖ ਸਿਧਾਂਤ ਹੈ, ਅਰਥ ਜਾਂ ਭਾਵਨਾ ਨੂੰ ਸਮਝਣਾ ਬਿਨਾਂ ਕਿਸੇ ਮਨੁੱਖੀ ਦਖਲ ਦੇ। ਹਾਲਾਂਕਿ, ਇਹ ਸੰਭਵ ਹੈ ਕਿ ਤੁਸੀਂ ਕੁਝ ਨਕਾਰਾਤਮਕ ਸਮੀਖਿਆਵਾਂ ਪੜ੍ਹ ਸਕਦੇ ਹੋ। ਮੈਂ ਤੁਹਾਨੂੰ ਇਹ ਕਰਨ ਤੋਂ ਰੋਕਣ ਦੀ ਸਲਾਹ ਦਿੰਦਾ ਹਾਂ, ਕਿਉਂਕਿ ਤੁਹਾਨੂੰ ਇਸ ਦੀ ਲੋੜ ਨਹੀਂ ਹੈ। ਕੁਝ ਸਮੀਖਿਆਵਾਂ ਮੂਰਖਤਾਪੂਰਨ ਜਾਂ ਅਸੰਬੰਧਤ ਨਕਾਰਾਤਮਕ ਹੋਟਲ ਸਮੀਖਿਆਵਾਂ ਹੁੰਦੀਆਂ ਹਨ, ਜਿਵੇਂ ਕਿ "ਮੌਸਮ ਚੰਗਾ ਨਹੀਂ ਸੀ", ਜੋ ਹੋਟਲ ਜਾਂ ਕਿਸੇ ਦੇ ਵਸ਼ ਵਿੱਚ ਨਹੀਂ ਹੈ। ਪਰ ਕੁਝ ਸਮੀਖਿਆਵਾਂ ਦਾ ਇੱਕ ਅੰਧਕਾਰ ਪਾਸਾ ਵੀ ਹੁੰਦਾ ਹੈ। ਕਈ ਵਾਰ ਨਕਾਰਾਤਮਕ ਸਮੀਖਿਆਵਾਂ ਵਿੱਚ ਜਾਤੀਵਾਦੀ, ਲਿੰਗਵਾਦੀ, ਜਾਂ ਉਮਰਵਾਦੀ ਟਿੱਪਣੀਆਂ ਹੁੰਦੀਆਂ ਹਨ। ਇਹ ਦੁਖਦਾਈ ਹੈ ਪਰ ਇੱਕ ਜਨਤਕ ਵੈਬਸਾਈਟ ਤੋਂ ਡੇਟਾ ਸਕ੍ਰੈਪ ਕਰਨ 'ਤੇ ਉਮੀਦ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ। ਕੁਝ ਸਮੀਖਿਆਕਾਰ ਅਜਿਹੀਆਂ ਸਮੀਖਿਆਵਾਂ ਛੱਡਦੇ ਹਨ ਜੋ ਤੁਹਾਨੂੰ ਅਸਹਜ, ਅਪ੍ਰਤੀਕਰਮ ਜਾਂ ਦੁਖੀ ਕਰ ਸਕਦੀਆਂ ਹਨ। ਇਹ ਬਿਹਤਰ ਹੈ ਕਿ ਕੋਡ ਭਾਵਨਾ ਨੂੰ ਮਾਪੇ ਬਜਾਏ ਕਿ ਤੁਸੀਂ ਖੁਦ ਉਹਨਾਂ ਨੂੰ ਪੜ੍ਹੋ ਅਤੇ ਦੁਖੀ ਹੋਵੋ। ਇਹ ਕਹਿਣ ਦੇ ਬਾਵਜੂਦ, ਇਹ ਘੱਟ ਸੰਖਿਆ ਵਾਲੇ ਲੋਕ ਹਨ ਜੋ ਅਜਿਹੀਆਂ ਗੱਲਾਂ ਲਿਖਦੇ ਹਨ, ਪਰ ਉਹ ਫਿਰ ਵੀ ਮੌਜੂਦ ਹਨ। -## ਕਸਰਤ - ਡਾਟਾ ਦੀ ਖੋਜ +##### ਉਦਾਹਰਨ + +| ਔਸਤ ਸਕੋਰ | ਕੁੱਲ ਸਮੀਖਿਆਵਾਂ ਦੀ ਗਿਣਤੀ | ਸਮੀਖਿਆਕਾਰ ਦਾ ਸਕੋਰ | ਨਕਾਰਾਤਮਕ
ਸਮੀਖਿਆ | ਪੋਜ਼ਿਟਿਵ ਸਮੀਖਿਆ | ਟੈਗ | +| -------------- | ---------------------- | ---------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------- | ----------------------------------------------------------------------------------------- | +| 7.8 | 1945 | 2.5 | ਇਹ ਇਸ ਸਮੇਂ ਇੱਕ ਹੋਟਲ ਨਹੀਂ ਬਲਕਿ ਇਕ ਨਿਰਮਾਣ ਸਾਈਟ ਹੈ। ਮੈਂ ਲੰਮੀ ਯਾਤਰਾ ਤੋਂ ਬਾਅਦ ਅਤੇ ਕਮਰੇ ਵਿੱਚ ਕੰਮ ਕਰ ਰਹੇ ਹੋਇਆ, ਸਵੇਰੇ ਸਵੇਰੇ ਤੋਂ ਹੀ ਬੇਹਦ ਸ਼ੋਰ ਨਾਲ ਤੰਗ ਕੀਤਾ ਗਿਆ। ਲੋਕ ਸਾਰਾ ਦਿਨ ਜੈਕਹੈਮਰਾਂ ਨਾਲ ਕੰਮ ਕਰ ਰਹੇ ਸਨ। ਮੈਂ ਕਮਰਾ ਬਦਲਣ ਦੀ ਮੰਗ ਕੀਤੀ ਪਰ ਕੋਈ ਸ਼ਾਂਤ ਕਮਰਾ ਮੌਜੂਦ ਨਹੀਂ ਸੀ। ਹਾਲਾਤ ਹੋਰ ਖ਼ਰਾਬ ਕਰਨ ਲਈ, ਮੈਨੂੰ ਅਧਿਕ ਚਾਰਜ ਕੀਤਾ ਗਿਆ। ਮੈਂ ਸ਼ਾਮ ਨੂੰ ਚੈਕ ਆਊਟ ਕੀਤਾ ਕਿਉਂਕਿ ਮੈਨੂੰ ਵਡੇ ਰਾਜ ਚੱਡਣਾ ਸੀ ਅਤੇ ਬਿਲ ਤਿਆਰ ਮਿਲਿਆ। ਇਕ ਦਿਨ ਬਾਅਦ ਬਿਨਾਂ ਮੇਰੀ ਮਨਜ਼ੂਰੀ ਦੇ ਹੋਰ ਚਾਰਜ ਕਰ ਦਿੱਤਾ ਗਿਆ। ਇਹ ਜਗ੍ਹਾ ਭਿਆਨਕ ਹੈ। ਆਪਣੇ ਆਪ ਨੂੰ ਇੱਥੇ ਬੁਕਿੰਗ ਕਰਨ ਨਾਲ ਸਜ਼ਾ ਨਾ ਦਿਓ। | ਕੁਝ ਨਹੀਂ ਭਿਆਨਕ ਜਗ੍ਹਾ ਹੈ ਦੂਰ ਰਹੋ | ਬਿਜਨਸ ਯਾਤਰਾ ਜੋੜਾ ਸਧਾਰਣ ਡਬਲ ਕਮਰਾ 2 ਰਾਤਾਂ ਲਈ ਰਹੇ | + +ਜਿਵੇਂ ਤੁਸੀਂ ਵੇਖ ਸਕਦੇ ਹੋ, ਇਸ ਮਹਿਮਾਨ ਦਾ ਰਹਿਣਾ ਇਸ ਹੋਟਲ ਵਿੱਚ ਖੁਸ਼ਗਵਾਰ ਨਹੀਂ ਸੀ। ਹੋਟਲ ਦਾ ਔਸਤ ਸਕੋਰ 7.8 ਹੈ ਅਤੇ 1945 ਸਮੀਖਿਆਵਾਂ ਹਨ, ਪਰ ਇਸ ਸਮੀਖਿਆਕਾਰ ਨੇ 2.5 ਦਿੱਤਾ ਅਤੇ ਨਕਾਰਾਤਮਕ ਰਹਿਣ ਬਾਰੇ 115 ਸ਼ਬਦ ਲਿਖੇ। ਜੇ ਉਹ Positive_Review ਕਾਲਮ ਵਿੱਚ ਕੁਝ ਨਹੀਂ ਲਿਖਦੇ, ਤਾਂ ਤੁਸੀਂ ਸੋਚ ਸਕਦੇ ਹੋ ਕਿ ਕੁਝ ਵੀ ਚੰਗਾ ਨਹੀਂ ਸੀ, ਪਰ ਉਨ੍ਹਾਂ ਨੇ ਚੇਤਾਵਨੀ ਵਜੋਂ 7 ਸ਼ਬਦ ਲਿਖੇ। ਜੇ ਅਸੀਂ ਸਿਰਫ ਸ਼ਬਦਾਂ ਦੀ ਗਿਣਤੀ ਕੀਤੀ ਬਿਨਾਂ ਉਨ੍ਹਾਂ ਦੇ ਅਰਥ ਜਾਂ ਮਨੋਭਾਵ ਦੇ, ਤਾਂ ਸਮੀਖਿਆਕਾਰ ਦੇ ਇਰਾਦੇ ਦਾ ਝੂਠਾ ਨਜ਼ਾਰਾ ਬਣ ਸਕਦਾ ਸੀ। ਹੈਰਾਨ ਕਰਨ ਵਾਲੀ ਗੱਲ ਹੈ ਕਿ ਉਨ੍ਹਾਂ ਦਾ ਸਕੋਰ 2.5 ਹੈ ਜੋ ਸੰਦਰਭ ਵਿੱਚ ਥੋੜ੍ਹਾ ਕਨਫਿਊਜ਼ਿੰਗ ਹੈ, ਕਿਉਂਕਿ ਜੇ ਇਹ ਹੋਟਲ ਰਹਿਣ ਇੰਨਾ ਬੁਰਾ ਸੀ, ਤਾਂ ਇਹ ਕਿਸੇ ਵੀ ਅੰਕ ਦੇਣ ਦਾ ਕਾਰਨ ਕਿਆ? ਡੇਟਾਸੇਟ ਨੂੰ ਬਾਰੀਕੀ ਨਾਲ ਵੇਖਦਿਆਂ, ਤੁਹਾਨੂੰ ਪਤਾ ਲੱਗੇਗਾ ਕਿ ਸਭ ਤੋਂ ਘੱਟ ਸਕੋਰ 2.5 ਹੈ, 0 ਨਹੀਂ। ਸਭ ਤੋਂ ਵੱਧ ਸਕੋਰ 10 ਹੈ। + +##### ਟੈਗ + +ਮੁੱਢਲੇ ਦਿੱਖ ਵਿੱਚ, `Tags` ਕਾਲਮ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਡੇਟਾ ਵਰਗੀਕਰਨ ਦਾ ਵਿਚਾਰ ਠੀਕ ਲੱਗਦਾ ਹੈ। ਬਦਕਿਸਮਤੀ ਨਾਲ ਇਹ ਟੈਗ ਮਿਆਰੀਕ੍ਰਿਤ ਨਹੀਂ ਹਨ, ਜਿਸ ਕਾਰਨ ਇੱਕ ਹੋਟਲ ਵਿੱਚ ਵਿਕਲਪ *Single room*, *Twin room*, ਅਤੇ *Double room* ਹੋ ਸਕਦੇ ਹਨ, ਪਰ ਅਗਲੇ ਹੋਟਲ ਵਿੱਚ ਉਹ *Deluxe Single Room*, *Classic Queen Room*, ਅਤੇ *Executive King Room* ਹੋ ਸਕਦੇ ਹਨ। ਇਹ ਇੱਕੋ ਹੀ ਚੀਜ਼ਾਂ ਹੋ ਸਕਦੀਆਂ ਹਨ, ਪਰ ਇਨ੍ਹਾਂ ਵਿੱਚ ਕਈ ਪ੍ਰਕਾਰ ਹਨ ਜਿਸ ਨਾਲ ਚੋਣ ਇਹ ਬਣ ਜਾਂਦੀ ਹੈ: + +1. ਸਾਰੇ ਸ਼ਬਦਾਂ ਨੂੰ ਇੱਕ ਮਿਆਰੀ ਰੂਪ ਵਿੱਚ ਬਦਲਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ, ਜੋ ਬਹੁਤ ਮੁਸ਼ਕਲ ਹੈ ਕਿਉਂਕਿ ਹਰ ਮਾਮਲੇ ਵਿੱਚ ਪਥ ਸਪਸ਼ਟ ਨਹੀਂ (ਉਦਾਹਰਨ ਵਜੋਂ, *Classic single room* ਨੂੰ *Single room* ਨਾਲ ਜੋੜਨਾ ਆਸਾਨ ਹੈ ਪਰ *Superior Queen Room with Courtyard Garden or City View* ਨੂੰ ਜੋੜਨਾ ਕਾਫ਼ੀ ਔਖਾ) + +1. ਅਸੀਂ ਇੱਕ NLP ਢੰਗ ਉਸਾਰੀਏ ਅਤੇ ਕੁਝ ਸ਼ਬਦਾਂ ਜਿਵੇਂ ਕਿ *Solo*, *Business Traveller*, ਜਾਂ *Family with young kids* ਦੀ ਫ੍ਰੀਕੁਐਂਸੀ ਮਾਪ ਕੇ ਉਹਨੂੰ ਹਰ ਹੋਟਲ ਲਈ ਮਾਪਾਂ, ਅਤੇ ਇਸਨੂੰ ਸਿਫਾਰਸ਼ ਵਿੱਚ ਸਮਿਲ ਕਰੋ + +ਟੈਗ ਆਮ ਤੌਰ 'ਤੇ (ਪਰ ਸਦਾ ਨਹੀਂ) ਇੱਕ ਖੇਤਰ ਹੁੰਦੇ ਹਨ ਜਿਸ ਵਿੱਚ 5 ਤੋਂ 6 ਕਮਾ ਨਾਲ ਵੱਖਰੇ ਕੀਤੇ ਮੁੱਲਾਂ ਦੀ ਸੂਚੀ ਹੁੰਦੀ ਹੈ ਜੋ *ਯਾਤਰਾ ਦੀ ਕਿਸਮ*, *ਮਹਿਮਾਨਾਂ ਦੀ ਕਿਸਮ*, *ਕਮਰੇ ਦੀ ਕਿਸਮ*, *ਰਾਤਾਂ ਦੀ ਗਿਣਤੀ*, ਅਤੇ *ਜਿਸ ਜੰਤਰ ਨਾਲ ਸਮੀਖਿਆ ਜਮ੍ਹਾਂ ਕੀਤੀ ਗਈ*, ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ। ਪਰ ਕਿਉਂਕਿ ਕੁਝ ਸਮੀਖਿਆਕਾਰ ਹਰ ਖੇਤਰ ਨੂੰ ਪੂਰਾ ਨਹੀਂ ਕਰਦੇ (ਕੋਈ ਖਾਲੀ ਛੱਡਦੇ ਹਨ), ਇਸ ਲਈ ਮੁੱਲ ਸਦਾ ਇੱਕੋ ਕ੍ਰਮ ਵਿੱਚ ਨਹੀਂ ਹੋਂਦੇ। + +ਇੱਕ ਉਦਾਹਰਨ ਵਜੋਂ, ਲਓ *Type of group* ਨੂੰ। ਇਸ ਖੇਤਰ ਵਿੱਚ `Tags` ਕਾਲਮ ਵਿੱਚ 1025 ਵੱਖ-ਵੱਖ ਸੰਭਾਵਨਾਵਾਂ ਹਨ, ਪਰ ਬਦਕਿਸਮਤੀ ਨਾਲ ਸਿਰਫ ਕੁਝ ਹੀ ਗਰੁੱਪ ਨਾਲ ਸਬੰਧਿਤ ਹਨ (ਕੁਝ ਕਮਰੇ ਦੀ ਕਿਸਮ ਆਦਿ ਹਨ)। ਜੇ ਤੁਸੀਂ ਸਿਰਫ ਉਹਨਾਂ ਨੂੰ ਛਾਨ ਟੋਟ ਕਰੋ ਜੋ ਪਰਿਵਾਰ ਬਾਰੇ ਹਨ, ਤਾਂ ਨਤੀਜੇ ਵਿੱਚ ਕਈ *Family room* ਕਿਸਮ ਦੇ ਨਤੀਜੇ ਹਨ। ਜੇ ਤੁਸੀਂ ਸ਼ਬਦ *with* ਨੂੰ ਸ਼ਾਮਿਲ ਕਰੋ, ਜਿਵੇਂ ਕਿ *Family with* ਵਾਲੇ ਮੁੱਲ, ਤਾਂ ਨਤੀਜੇ ਵਧੀਆ ਹਨ - 80,000 ਤੋਂ ਵੱਧ 515,000 ਵਿੱਚੋਂ "Family with young children" ਜਾਂ "Family with older children" ਵਾਲੀ ਫ੍ਰੇਜ਼ ਸ਼ਾਮਿਲ ਹੈ। + +ਇਸਦਾ ਮਤਲਬ ਹੈ ਕਿ Tags ਕਾਲਮ ਸਾਡੀ ਲਈ ਬਿਲਕੁਲ ਫਜ਼ੂਲ ਨਹੀਂ ਹੈ, ਪਰ ਇਸਨੂੰ ਲਾਜ਼ਮੀ ਬਨਾਉਣ ਲਈ ਕੁਝ ਕਮ ਕਰਨੇ ਪੈਣਗੇ। + +##### ਹੋਟਲ ਦਾ ਔਸਤ ਸਕੋਰ + +ਡੇਟਾਸੇਟ ਵਿੱਚ ਕੁਝ ਅਜੀਬ ਗੱਲਾਂ ਜਾਂ ਵਿਰੋਧ ਹਨ ਜੋ ਮੈਂ ਸਮਝ ਨਹੀਂ ਪਾ ਰਿਹਾ, ਪਰ ਇਹ ਇੱਥੇ ਦਰਸਾਈਆਂ ਗਈਆਂ ਹਨ ਤਾਂ ਜੋ ਤੁਸੀਂ ਆਪਣੇ ਮਾਡਲ ਬਣਾਉਂਦੇ ਸਮੇਂ ਸਾਵਧਾਨ ਰਹੋ। ਜੇ ਤੁਸੀਂ ਸਮਝ ਗਏ, ਤਾਂ ਕਿਰਪਾ ਕਰਕੇ ਵਾਰਤਾਲਾਪ ਸੈਕਸ਼ਨ ਵਿੱਚ ਦੱਸੋ! + +ਡੇਟਾਸੇਟ ਵਿੱਚ ਔਸਤ ਸਕੋਰ ਅਤੇ ਸਮੀਖਿਆਵਾਂ ਦੀ ਗਿਣਤੀ ਨਾਲ ਸਬੰਧਤ ਕਾਲਮ ਹਨ: + +1. Hotel_Name +2. Additional_Number_of_Scoring +3. Average_Score +4. Total_Number_of_Reviews +5. Reviewer_Score + +ਇਸ ਡੇਟਾਸੇਟ ਵਿੱਚ ਸਭ ਤੋਂ ਵੱਧ ਸਮੀਖਿਆਵਾਂ ਵਾਲਾ ਇੱਕ ਸਿੰਗਲ ਹੋਟਲ *Britannia International Hotel Canary Wharf* ਹੈ ਜਿਸਦੇ 4789 ਸਮੀਖਿਆਵਾਂ ਹਨ 515,000 ਵਿੱਚੋਂ। ਪਰ ਜੇ ਅਸੀਂ `Total_Number_of_Reviews` ਦਾ ਮੁੱਲ ਵੇਖੀਏ, ਤਾਂ ਇਹ 9086 ਹੈ। ਤੁਸੀਂ ਸੋਚ ਸਕਦੇ ਹੋ ਕਿ ਹੋਰ ਬਹੁਤ ਸਾਰੇ ਸਕੋਰ ਬਿਨਾਂ ਸਮੀਖਿਆ ਦੇ ਹਨ, ਇਸ ਲਈ ਸੰਭਵ ਹੈ ਕਿ ਅਸੀਂ `Additional_Number_of_Scoring` ਕਾਲਮ ਦਾ ਜੋੜ ਕਰੀਏ। ਉਹ ਮੁੱਲ 2682 ਹੈ, ਅਤੇ 4789 ਵਿੱਚ ਜੋੜਨ 'ਤੇ 7471 ਮਿਲਦੇ ਹਨ ਜੋ ਕਿ `Total_Number_of_Reviews` ਨਾਲੋਂ 1615 ਘੱਟ ਹੈ। + +ਜੇ ਤੁਸੀਂ `Average_Score` ਵਾਲਾ ਕਾਲਮ ਵੇਖਦੇ ਹੋ, ਤੁਸੀਂ ਸੋਚ ਸਕਦੇ ਹੋ ਕਿ ਇਹ ਡੇਟਾਸੇਟ ਵਿੱਚ ਸਮੀਖਿਆਵਾਂ ਦੇ ਔਸਤ ਸਕੋਰ ਦਾ ਟਿੱਪਣੀ ਹੈ, ਪਰ Kaggle ਵੱਲੋਂ ਇਸਦਾ ਵਰਣਨ ਹੈ "*ਹੋਟਲ ਦਾ ਔਸਤ ਸਕੋਰ, ਜੋ ਪਿਛਲੇ ਸਾਲ ਦੀਆਂ ਆਖਰੀ ਟਿੱਪਣੀਆਂ ਦੇ ਆਧਾਰ ਤੇ ਕੈਲਕੁਲੈਟ ਕੀਤਾ ਗਿਆ ਹੈ*". ਇਹ ਜ਼ਿਆਦਾ ਉਪਯੋਗੀ ਨਹੀਂ ਜਾਪਦਾ, ਪਰ ਅਸੀਂ ਆਪਣੇ ਆਪ ਕੈਲਕੁਲੇਟ ਕੀਤੇ ਔਸਤ ਸਕੋਰ ਦਾ ਭਰੋਸਾ ਕਰ ਸਕਦੇ ਹਾਂ। ਉਦਾਹਰਨ ਲਈ, ਉਦੋਂ ਹੋਟਲ ਦਾ ਔਸਤ ਸਕੋਰ 7.1 ਦਿੱਤਾ ਗਿਆ ਹੈ ਪਰ ਕੈਲਕੁਲੇਟਡ ਸਕੋਰ (ਡੇਟਾਸੇਟ ਵਿੱਚ ਸਮੀਖਿਆਕਾਰ ਸкоਰਾਂ ਦਾ ਔਸਤ) 6.8 ਹੈ। ਇਹ ਨੇੜਲਾ ਹੈ ਪਰ ਬਰਾਬਰ ਨਹੀਂ, ਹਾਲਾਂਕਿ ਅਸੀਂ ਸੋਚ ਸਕਦੇ ਹਾਂ ਕਿ `Additional_Number_of_Scoring` ਵਾਲੇ ਸਕੋਰਾਂ ਨੇ ਔਸਤ ਨੂੰ 7.1 ਤੱਕ ਵਧਾਇਆ। ਬਿਨਾਂ ਕਿਸੇ ਸਬੂਤ ਜਾਂ ਪਰਖ ਤੋਂ, ਇਸ ਗੱਲ ਤੇ ਇਤਮਿਨਾਨ ਕਰਨਾ ਔਖਾ ਹੈ, ਇਸ ਕਰਕੇ `Average_Score`, `Additional_Number_of_Scoring` ਅਤੇ `Total_Number_of_Reviews` ਨੂੰ ਵਰਤਣਾ ਅਤੇ ਭਰੋਸਾ ਕਰਨਾ ਮੁਸ਼ਕਲ ਹੈ ਜੇ ਇਹ ਡੇਟਾ ਅਸਲ ਨਹੀਂ ਹੈ। + +ਗੱਲ ਨੂੰ ਹੋਰ ਜਟਿਲ ਬਣਾਉਂਦੇ ਹੋਏ, ਦੂਜੇ ਸਭ ਤੋਂ ਵੱਧ ਸਮੀਖਿਆਵਾਂ ਵਾਲੇ ਹੋਟਲ ਦਾ ਗਣਿਤੀ ਔਸਤ ਸਕੋਰ 8.12 ਹੈ ਅਤੇ ਡੇਟਾਸੇਟ ਦਾ `Average_Score` 8.1 ਹੈ। ਕੀ ਇਹ ਠੀਕ ਸਕੋਰ ਇੱਕ ਸੰਗਤ ਹੈ ਜਾਂ ਪਹਿਲਾ ਹੋਟਲ ਇੱਕ ਵਿਰੋਧ ਹੈ? + + +ਇਸ ਸੰਭਾਵਨਾ 'ਤੇ ਕਿ ਇਹ ਹੋਟਲ ਇੱਕ ਬਾਹਰਲੇ ਹਾਂਗ ਦੀ ਸ਼ਾਇਦ ਹੋ ਸਕਦਾ ਹੈ, ਅਤੇ ਕਿ ਸ਼ਾਇਦ ਵੱਧਤਰ ਮੁੱਲ ਸਹੀ ਮੈਚ ਕਰਦੇ ਹਨ (ਪਰ ਕਿਸੇ ਕਾਰਨ ਕੁਝ ਨਹੀਂ ਕਰਦੇ), ਅਸੀਂ ਅੱਗੇ ਇੱਕ ਛੋਟਾ ਕਾਰਜਕ੍ਰਮ ਲਿਖਾਂਗੇ ਜੋ ਡੈਟਾਸੈਟ ਵਿੱਚ ਮੁੱਲਾਂ ਦੀ ਖੋਜ ਕਰੇਗਾ ਅਤੇ ਸਹੀ ਉਪਯੋਗ (ਜਾਂ ਗੈਰ-ਉਪਯੋਗ) ਨਿਰਧਾਰਿਤ ਕਰੇਗਾ। + +> 🚨 ਇੱਕ ਚੇਤਾਵਨੀ ਦਾ ਨੋਟ +> +> ਇਸ ਡੈਟਾਸੈਟ ਨਾਲ ਕੰਮ ਕਰਦੇ ਸਮੇਂ ਤੁਸੀਂ ਐਸਾ ਕੋਡ ਲਿਖੋਗੇ ਜੋ ਲਿਖਤ ਵਿੱਚੋਂ ਕੁਝ ਗਣਨਾ ਕਰੇ ਬਿਨਾਂ ਆਪਣਾ ਆਪ ਲਿਖਤ ਨੂੰ ਪੜ੍ਹਨ ਜਾਂ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰਨ ਦੀ ਲੋੜ ਤੋਂ। ਇਹ NLP ਦੀ ਅਸਲ ਹੁੰਦੀ ਹੈ, ਮਤਲਬ ਜਾਂ ਭਾਵਨਾ ਦੀ ਵਿਆਖਿਆ ਕਰਨ ਬਿਨਾਂ ਕਿਸੇ ਮਨੁੱਖ ਨੂੰ ਇਹ ਕਰਨ ਦੇ। ਹਾਲਾਂਕਿ, ਇਹ ਸੰਭਵ ਹੈ ਕਿ ਤੁਸੀਂ ਕੁਝ ਨਕਾਰਾਤਮਕ ਸਮੀਖਿਆਵਾਂ ਪੜ੍ਹੋਗੇ। ਮੈਂ ਤੁਹਾਨੂੰ ਇਹ ਨਾ ਕਰਨ ਦੀ ਸਲਾਹ ਦਿੰਦਾ ਹਾਂ, ਕਿਉਂਕਿ ਤੁਹਾਨੂੰ ਘਰੇਲੂ ਨਹੀਂ। ਕੁਝ ਸਮੀਖਿਆਵਾਂ ਮੂਰਖਤਾਪੂਰਕ ਜਾਂ ਗੈਰਜ਼ਰੂਰੀ ਨਕਾਰਾਤਮਕ ਹੋ ਸਕਦੀਆਂ ਹਨ, ਜਿਵੇਂ "ਮੌਸਮ ਵਧੀਆ ਨਾ ਸੀ", ਜੋ ਹੋਟਲ ਜਾਂ ਕਿਸੇ ਹੋਰ ਦੇ ਕਾਬੂ ਤੋਂ ਬਾਹਰ ਹੈ। ਪਰ ਕੁਝ ਸਮੀਖਿਆਵਾਂ ਦੀ ਇੱਕ ਹਨੇਰੀ ਪਹਿਰ ਵੀ ਹੁੰਦੀ ਹੈ। ਕਈ ਵਾਰ ਨਕਾਰਾਤਮਕ ਸਮੀਖਿਆਵਾਂ ਨਸਲੀ, ਲਿੰਗ ਭੇਦਕ ਜਾਂ ਉਮਰ ਸੰਬੰਧੀ ਹੁੰਦੀਆਂ ਹਨ। ਇਹ ਦੁੱਖਦ ਹੈ ਪਰ ਕੋਈ ਨਵਾਂ ਨਹੀਂ ਹੈ ਜਦ ਡੈਟਾਸੈਟ ਕਿਸੇ ਜਨਤਕ ਵੈੱਬਸਾਈਟ ਤੋਂ ਖੁਦਰੀਕੀਕਰਨ ਕੀਤਾ ਹੋਵੇ। ਕੁਝ ਸਮੀਖਿਆਕਾਰ ਉਹ ਸਮੀਖਿਆਵਾਂ ਛੱਡਦੇ ਹਨ ਜਿਹੜਾ ਤੁਸੀਂ ਬਦਸੁਆਦ, ਅਸਹਜ ਜਾਂ ਪਰੇਸ਼ਾਨ ਕਰਨ ਵਾਲਾ ਲੱਗ ਸਕਦੇ ਹੋ। ਬਿਹਤਰ ਇਹ ਹੈ ਕਿ ਕੋਡ ਹੀ ਭਾਵਨਾ ਨੂੰ ਮਾਪੇ ਨਾ ਕਿ ਤੁਸੀਂ ਖੁਦ ਪੜ੍ਹ ਕੇ ਪਰੇਸ਼ਾਨ ਹੋਵੋ। ਇਹ ਕਹਿਣਾ ਹੈ ਕਿ ਇਹ ਮਤਦਾਦ ਲਿਖਨ ਵਾਲਿਆਂ ਦੀ ਗਿਣਤੀ ਘੱਟ ਹੁੰਦੀ ਹੈ, ਪਰ ਉਹ ਮੌਜੂਦ ਹਨ। + +## ਅਭਿਆਸ - ਡਾਟਾ ਖੋਜ ### ਡਾਟਾ ਲੋਡ ਕਰੋ -ਡਾਟਾ ਨੂੰ ਦ੍ਰਿਸ਼ੀ ਰੂਪ ਵਿੱਚ ਦੇਖਣ ਲਈ ਕਾਫ਼ੀ ਹੈ, ਹੁਣ ਤੁਸੀਂ ਕੁਝ ਕੋਡ ਲਿਖੋਗੇ ਅਤੇ ਕੁਝ ਜਵਾਬ ਪ੍ਰਾਪਤ ਕਰੋਗੇ! ਇਸ ਭਾਗ ਵਿੱਚ pandas ਲਾਇਬ੍ਰੇਰੀ ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਗਈ ਹੈ। ਤੁਹਾਡਾ ਸਭ ਤੋਂ ਪਹਿਲਾ ਕੰਮ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣਾ ਹੈ ਕਿ ਤੁਸੀਂ CSV ਡਾਟਾ ਲੋਡ ਅਤੇ ਪੜ੍ਹ ਸਕਦੇ ਹੋ। pandas ਲਾਇਬ੍ਰੇਰੀ ਵਿੱਚ ਇੱਕ ਤੇਜ਼ CSV ਲੋਡਰ ਹੈ, ਅਤੇ ਨਤੀਜਾ ਇੱਕ ਡਾਟਾ ਫਰੇਮ ਵਿੱਚ ਰੱਖਿਆ ਜਾਂਦਾ ਹੈ, ਜਿਵੇਂ ਪਿਛਲੇ ਪਾਠਾਂ ਵਿੱਚ। ਜੋ CSV ਅਸੀਂ ਲੋਡ ਕਰ ਰਹੇ ਹਾਂ, ਉਸ ਵਿੱਚ ਅੱਧੇ ਮਿਲੀਅਨ ਤੋਂ ਵੱਧ ਪੰਕਤੀਆਂ ਹਨ, ਪਰ ਸਿਰਫ 17 ਕਾਲਮ ਹਨ। pandas ਤੁਹਾਨੂੰ ਡਾਟਾ ਫਰੇਮ ਨਾਲ ਸੰਚਾਰ ਕਰਨ ਦੇ ਬਹੁਤ ਸਾਰੇ ਸ਼ਕਤੀਸ਼ਾਲੀ ਤਰੀਕੇ ਦਿੰਦਾ ਹੈ, ਜਿਸ ਵਿੱਚ ਹਰ ਪੰਕਤੀ 'ਤੇ ਕਾਰਵਾਈ ਕਰਨ ਦੀ ਯੋਗਤਾ ਸ਼ਾਮਲ ਹੈ। +ਡਾਟਾ ਦੀ ਆਖਰੀ ਵਿਜ਼ੂਅਲ ਜਾਂਚ ਮਹੱਤਵਪੂਰਨ ਹੈ, ਹੁਣ ਤੁਸੀਂ ਕੁਝ ਕੋਡ ਲਿਖੋਗੇ ਅਤੇ ਕੁਝ ਜਵਾਬ ਲੈਓਗੇ! ਇਹ ਭਾਗ pandas ਲਾਇਬ੍ਰੇਰੀ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ। ਤੁਹਾਡੇ ਪਹਿਲੇ ਕਾਰਜ ਹਨ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣਾ ਕਿ ਤੁਸੀਂ CSV ਡਾਟਾ ਲੋਡ ਅਤੇ ਪੜ੍ਹ ਸਕਦੇ ਹੋ। pandas ਦੀ ਤੇਜ਼ CSV ਲੋਡਰ ਹੈ, ਤੇ ਨਤੀਜਾ dataframe ਵਿੱਚ ਰੱਖਿਆ ਜਾਂਦਾ ਹੈ, ਜਿਵੇਂ ਪਿਛਲੇ ਪਾਠਾਂ ਵਿੱਚ। ਇੱਥੇ ਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ CSV ਸਾਡੇ ਕੋਲ ਆਧ ਤੇ ਕੁਝ ਸੌ ਹਜ਼ਾਰ ਕਤਾਰਾਂ ਹਨ, ਪਰ ਸਿਰਫ਼ 17 ਕਾਲਮ। pandas ਤੁਹਾਨੂੰ data frame ਨਾਲ ਘਣੇ ਤਰੀਕੇ ਨਾਲ ਕੰਮ ਕਰਨ ਦੀ ਯੋਗਤਾ ਦਿੰਦਾ ਹੈ, ਜਿਸ ਵਿੱਚ ਹਰ ਕਤਾਰ 'ਤੇ ਅਪਰੇਸ਼ਨ ਕਰਨ ਦੀ ਸਮਰੱਥਾ ਵੀ ਸ਼ਾਮਿਲ ਹੈ। -ਇਸ ਪਾਠ ਦੇ ਬਾਕੀ ਹਿੱਸੇ ਵਿੱਚ, ਕੋਡ ਸਨਿੱਪਟਸ ਹੋਣਗੇ ਅਤੇ ਕੋਡ ਦੇ ਕੁਝ ਵਿਆਖਿਆਨ ਅਤੇ ਨਤੀਜਿਆਂ ਦੇ ਅਰਥਾਂ ਬਾਰੇ ਕੁਝ ਚਰਚਾ ਹੋਵੇਗੀ। ਆਪਣੇ ਕੋਡ ਲਈ ਸ਼ਾਮਲ ਕੀਤੇ _notebook.ipynb_ ਦੀ ਵਰਤੋਂ ਕਰੋ। +ਇਸ ਪਾਠ ਵਿੱਚ ਹੁਣ ਤੋਂ ਅੱਗੇ, ਕੁਝ ਕੋਡ ਖੰਡ ਅਤੇ ਕੋਡ ਦਾ ਵਿਆਖਿਆਤਮਕ ਹਿੱਸਾ ਅਤੇ ਕੁਝ ਨਤੀਜਿਆਂ ਦੀ ਚਰਚਾ ਹੋਵੇਗੀ। ਆਪਣਾ ਕੋਡ ਲਈ ਸ਼ਾਮਲ _notebook.ipynb_ ਦੀ ਵਰਤੋਂ ਕਰੋ। -ਆਓ ਉਸ ਡਾਟਾ ਫਾਈਲ ਨੂੰ ਲੋਡ ਕਰਨ ਨਾਲ ਸ਼ੁਰੂ ਕਰੀਏ ਜਿਸਦਾ ਤੁਸੀਂ ਇਸਤੇਮਾਲ ਕਰਨ ਜਾ ਰਹੇ ਹੋ: +ਆਓ ਉਸ ਡਾਟਾ ਫਾਇਲ ਨੂੰ ਲੋਡ ਕਰਨਾ ਸ਼ੁਰੂ ਕਰੀਏ ਜਿਸ ਦਾ ਤੁਸੀਂ ਉਪਯੋਗ ਕਰੋਗੇ: ```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 +# ਸਮਾਂ ਇੰਪੋਰਟ ਕਰਨਾ ਤਾਂ ਜੋ ਸ਼ੁਰੂ ਅਤੇ ਅੰਤ ਸਮਾਂ ਫਾਈਲ ਲੋਡ ਕਰਨ ਦਾ ਸਮਾਂ ਨਿਕਾਲਣ ਲਈ ਵਰਤਿਆ ਜਾ ਸਕੇ 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 'ਡਾਟਾ ਫਰੇਮ' ਹੈ - ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਤੁਸੀਂ ਫਾਈਲ ਨੂੰ ਡਾਟਾ ਫੋਲਡਰ ਵਿੱਚ ਡਾਊਨਲੋਡ ਕੀਤਾ ਹੈ df = pd.read_csv('../../data/Hotel_Reviews.csv') end = time.time() print("Loading took " + str(round(end - start, 2)) + " seconds") ``` -ਹੁਣ ਜਦੋਂ ਡਾਟਾ ਲੋਡ ਹੋ ਗਿਆ ਹੈ, ਅਸੀਂ ਇਸ 'ਤੇ ਕੁਝ ਕਾਰਵਾਈ ਕਰ ਸਕਦੇ ਹਾਂ। ਇਸ ਕੋਡ ਨੂੰ ਆਪਣੇ ਪ੍ਰੋਗਰਾਮ ਦੇ ਅਗਲੇ ਹਿੱਸੇ ਲਈ ਸਿਖਰ 'ਤੇ ਰੱਖੋ। - -## ਡਾਟਾ ਦੀ ਖੋਜ +ਹੁਣ ਜਦ ਡਾਟਾ ਲੋਡ ਹੋ ਗਿਆ ਹੈ, ਅਸੀਂ ਇਸ 'ਤੇ ਕੁਝ ਅਪਰੇਸ਼ਨ ਕਰ ਸਕਦੇ ਹਾਂ। ਇਹ ਕੋਡ ਆਪਣੇ ਕਾਰਜਕ੍ਰਮ ਦੇ ਉੱਪਰਲੇ ਹਿੱਸੇ 'ਚ ਰੱਖੋ ਅਗਲੇ ਹਿੱਸੇ ਲਈ। -ਇਸ ਮਾਮਲੇ ਵਿੱਚ, ਡਾਟਾ ਪਹਿਲਾਂ ਹੀ *ਸਾਫ* ਹੈ, ਇਸਦਾ ਮਤਲਬ ਹੈ ਕਿ ਇਹ ਕੰਮ ਕਰਨ ਲਈ ਤਿਆਰ ਹੈ ਅਤੇ ਇਸ ਵਿੱਚ ਹੋਰ ਭਾਸ਼ਾਵਾਂ ਦੇ ਅੱਖਰ ਨਹੀਂ ਹਨ ਜੋ ਸਿਰਫ ਅੰਗਰੇਜ਼ੀ ਅੱਖਰਾਂ ਦੀ ਉਮੀਦ ਕਰਨ ਵਾਲੇ ਐਲਗੋਰਿਥਮ ਨੂੰ ਰੋਕ ਸਕਦੇ ਹਨ। +## ਡਾਟਾ ਖੋਜੋ -✅ ਤੁਹਾਨੂੰ ਸ਼ਾਇਦ ਅਜਿਹੇ ਡਾਟਾ ਨਾਲ ਕੰਮ ਕਰਨਾ ਪਵੇ ਜੋ NLP ਤਕਨੀਕਾਂ ਨੂੰ ਲਾਗੂ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਕੁਝ ਸ਼ੁਰੂਆਤੀ ਪ੍ਰੋਸੈਸਿੰਗ ਦੀ ਲੋੜ ਰੱਖਦਾ ਹੋਵੇ, ਪਰ ਇਸ ਵਾਰ ਨਹੀਂ। ਜੇ ਤੁਹਾਨੂੰ ਕਰਨਾ ਪਵੇ, ਤਾਂ ਤੁਸੀਂ ਗੈਰ-ਅੰਗਰੇਜ਼ੀ ਅੱਖਰਾਂ ਨੂੰ ਕਿਵੇਂ ਸੰਭਾਲੋਗੇ? +ਇਸ ਸੰਦਰਭ ਵਿੱਚ ਡਾਟਾ ਪਹਿਲਾਂ ਹੀ *ਸਾਫ਼* ਹੈ, ਜਿਸਦਾ ਅਰਥ ਹੈ ਇਹ ਕੰਮ ਕਰਨ ਲਈ ਤਿਆਰ ਹੈ, ਅਤੇ ਇਸ ਵਿੱਚ ਕੋਈ ਐਸੇ ਵੱਖ-ਵੱਖ ਭਾਸ਼ਾਵਾਂ ਦੇ ਅੱਖਰ ਨਹੀਂ ਹਨ ਜੋ ਸਿਰਫ਼ ਅੰਗਰੇਜ਼ੀ ਅੱਖਰਾਂ ਦੀ ਮੰਗ ਕਰਨ ਵਾਲੇ ਅਲਗੋਰਿਥਮ ਨੂੰ ਅਸੁਵਿਧਾ ਪਹੁੰਚਾ ਸਕਦੇ ਹਨ। -ਇੱਕ ਪਲ ਲਓ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਕਿ ਜਦੋਂ ਡਾਟਾ ਲੋਡ ਹੋ ਜਾਂਦਾ ਹੈ, ਤੁਸੀਂ ਇਸਨੂੰ ਕੋਡ ਨਾਲ ਖੋਜ ਸਕਦੇ ਹੋ। `Negative_Review` ਅਤੇ `Positive_Review` ਕਾਲਮਾਂ 'ਤੇ ਧਿਆਨ ਕੇਂਦਰਿਤ ਕਰਨਾ ਬਹੁਤ ਆਸਾਨ ਹੈ। ਇਹ ਕੁਦਰਤੀ ਟੈਕਸਟ ਨਾਲ ਭਰੇ ਹੋਏ ਹਨ ਜੋ ਤੁਹਾਡੇ NLP ਐਲਗੋਰਿਥਮ ਨੂੰ ਪ੍ਰਕਿਰਿਆ ਕਰਨ ਲਈ ਹਨ। ਪਰ ਰੁਕੋ! NLP ਅਤੇ ਭਾਵਨਾ ਵਿੱਚ ਛਾਲ ਮਾਰਨ ਤੋਂ ਪਹਿਲਾਂ, ਤੁਹਾਨੂੰ ਹੇਠਾਂ ਦਿੱਤੇ ਕੋਡ ਦੀ ਪਾਲਣਾ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ ਤਾਂ ਜੋ ਇਹ ਪਤਾ ਲਗਾਇਆ ਜਾ ਸਕੇ ਕਿ ਡਾਟਾਸੈਟ ਵਿੱਚ ਦਿੱਤੇ ਗਏ ਮੁੱਲ pandas ਨਾਲ ਗਣਨਾ ਕੀਤੇ ਮੁੱਲਾਂ ਨਾਲ ਮੇਲ ਖਾਂਦੇ ਹਨ ਜਾਂ ਨਹੀਂ। +✅ ਤੁਹਾਨੂੰ ਕਿਸੇ ਕਦੇ ਅਜਿਹੇ ਡਾਟਾ ਨਾਲ ਕੰਮ ਕਰਨਾ ਪੈਂ ਸਕਦਾ ਹੈ ਜਿਸਨੂੰ NLP ਤਕਨੀਕਾਂ ਲਾਗੂ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਕੁਝ ਪ੍ਰਾਰੰਭਿਕ ਪ੍ਰੋਸੈਸਿੰਗ ਦੀ ਲੋੜ ਹੋਵੇ, ਪਰ ਇਸ ਵਾਰੀ ਨਹੀਂ। ਜੇ ਕਰਨਾ ਪਇਆ ਤਾਂ ਤੁਸੀਂ ਗੈਰ-ਅੰਗਰੇਜ਼ੀ ਅੱਖਰਾਂ ਨੂੰ ਕਿਵੇਂ ਸੰਭਾਲੋਗੇ? -## ਡਾਟਾ ਫਰੇਮ ਕਾਰਵਾਈਆਂ +ਇੱਕ ਸਮਾਂ ਲਓ ਇਹ ਯਕੀਨੀ ਕਰਨ ਲਈ ਕਿ ਡਾਟਾ ਲੋਡ ਹੋਣ ਤੋਂ ਬਾਅਦ ਤੁਸੀਂ ਕੋਡ ਨਾਲ ਇਸ ਦੀ ਖੋਜ ਕਰ ਸਕਦੇ ਹੋ। ਜ਼ਿਆਦਾਤਰ ਧਿਆਨ ਬਣਾ ਰਹੇ ਹੋਗੇ `Negative_Review` ਅਤੇ `Positive_Review` ਕਾਲਮ 'ਤੇ। ਇਹਨੂੰ ਭਰਾ ਹੋਇਆ ਕੁਦਰਤੀ ਲਿਖਤ ਹੈ ਜਿਸਨੂੰ ਤੁਹਾਡੇ NLP ਅਲਗੋਰਿਦਮ ਪ੍ਰਕਿਰਿਆ ਕਰ ਸਕਦੇ ਹਨ। ਪਰ ਠਹਿਰੋ! NLP ਅਤੇ ਭਾਵਨਾ 'ਤੇ ਛੱਲ ਮਾਰਨ ਤੋਂ ਪਹਿਲਾਂ, ਤੁਹਾਨੂੰ ਹੇਠਾਂ ਦਿੱਤਾ ਕੋਡ ਫਾਲੋ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ যাতে ਇਹ ਪਤਾ ਲੱਗੇ ਕਿ ਡੈਟਾਸੈਟ ਵਿੱਚ ਦਿੱਤੇ ਗਏ ਮੁੱਲ pandas ਨਾਲ ਗਣਨਾ ਕੀਤੇ ਮੁੱਲਾਂ ਨਾਲ ਮਿਲਦੇ ਹਨ ਜਾਂ ਨਹੀਂ। -ਇਸ ਪਾਠ ਵਿੱਚ ਪਹਿਲਾ ਕੰਮ ਇਹ ਜਾਂਚਣਾ ਹੈ ਕਿ ਹੇਠਾਂ ਦਿੱਤੇ ਦਾਅਵੇ ਸਹੀ ਹਨ ਜਾਂ ਨਹੀਂ, ਕੁਝ ਕੋਡ ਲਿਖ ਕੇ ਜੋ ਡਾਟਾ ਫਰੇਮ ਦੀ ਜਾਂਚ ਕਰਦਾ ਹੈ (ਇਸਨੂੰ ਬਦਲਣ ਤੋਂ ਬਿਨਾਂ)। +## ਡਾਟਾਫ੍ਰੇਮ ਅਪਰੇਸਨ -> ਬਹੁਤ ਸਾਰੇ ਪ੍ਰੋਗਰਾਮਿੰਗ ਕੰਮਾਂ ਦੀ ਤਰ੍ਹਾਂ, ਇਸਨੂੰ ਪੂਰਾ ਕਰਨ ਦੇ ਕਈ ਤਰੀਕੇ ਹਨ, ਪਰ ਚੰਗੀ ਸਲਾਹ ਇਹ ਹੈ ਕਿ ਇਸਨੂੰ ਸਭ ਤੋਂ ਸਧਾਰਨ, ਆਸਾਨ ਤਰੀਕੇ ਨਾਲ ਕਰੋ, ਖਾਸ ਕਰਕੇ ਜੇ ਇਹ ਭਵਿੱਖ ਵਿੱਚ ਇਸ ਕੋਡ 'ਤੇ ਵਾਪਸ ਆਉਣ 'ਤੇ ਸਮਝਣ ਲਈ ਆਸਾਨ ਹੋਵੇ। ਡਾਟਾ ਫਰੇਮਾਂ ਨਾਲ, ਇੱਕ ਵਿਸਤ੍ਰਿਤ API ਹੈ ਜੋ ਅਕਸਰ ਤੁਹਾਡੇ ਲਈ ਜੋ ਤੁਸੀਂ ਚਾਹੁੰਦੇ ਹੋ, ਕੁਸ਼ਲਤਾਪੂਰਵਕ ਕਰਨ ਦਾ ਤਰੀਕਾ ਹੋਵੇਗਾ। +ਇਸ ਪਾਠ ਵਿੱਚ ਪਹਿਲਾ ਕਾਰਜ ਇਹ ਨਿਰਧਾਰਿਤ ਕਰਨਾ ਹੈ कि ਹੇਠਾਂ ਦਿੱਤੀਆਂ ਪੁਸ਼ਟੀਕਰਨ ਸਹੀ ਹਨ ਜਾਂ ਨਹੀਂ, ਐਸਾ ਕੋਡ ਲਿਖ ਕੇ ਜੋ ਡਾਟਾਫ੍ਰੇਮ ਦੀ ਜਾਂਚ ਕਰਦਾ ਹੋਵੇ (ਉਸਨੂੰ ਬਦਲੇ ਬਿਨਾਂ)। -ਹੇਠਾਂ ਦਿੱਤੇ ਪ੍ਰਸ਼ਨਾਂ ਨੂੰ ਕੋਡਿੰਗ ਟਾਸਕ ਵਜੋਂ ਮਾਨੋ ਅਤੇ ਹੱਲ ਦੇਖਣ ਤੋਂ ਬਿਨਾਂ ਉਨ੍ਹਾਂ ਦਾ ਜਵਾਬ ਦੇਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ। +> ਬਹੁਤ ਸਾਰੇ ਪ੍ਰੋਗਰਾਮਿੰਗ ਟਾਸਕਾਂ ਵਾਂਗ, ਇਸਨੂੰ ਕਰਨ ਲਈ ਕਈ ਤਰੀਕੇ ਹਨ, ਪਰ ਵਧੀਆ ਸਲਾਹ ਏਹ ਹੈ ਕਿ ਇਹ ਸਭ ਤੋਂ ਆਸਾਨ ਅਤੇ ਸੌਖੇ ਤਰੀਕੇ 'ਚ ਕਰੋ, ਖਾਸ ਕਰਕੇ ਜਦ ਤੁਸੀਂ ਮੁੜ ਆ ਕੇ ਇਸ ਕੋਡ ਨੂੰ ਦੇਖੋ ਤਾਂ ਬਹੁਤ ਸਮਝ ਆਵੇ। ਡਾਟਾਫ੍ਰੇਮ ਲਈ ਇੱਕ ਵਿਆਪਕ API ਹੈ ਜੋ ਕਈ ਵਾਰ ਤੁਹਾਡੇ ਚਾਹੁੰਦੇ ਕੰਮ ਨੂੰ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਢੰਗ ਨਾਲ ਕਰਨ ਦਾ ਤਰੀਕਾ ਰੱਖਦਾ ਹੈ। -1. ਤੁਸੀਂ ਹੁਣੇ ਹੀ ਲੋਡ ਕੀਤੇ ਡਾਟਾ ਫਰੇਮ ਦਾ *shape* ਪ੍ਰਿੰਟ ਕਰੋ (shape ਪੰਕਤੀਆਂ ਅਤੇ ਕਾਲਮਾਂ ਦੀ ਗਿਣਤੀ ਹੈ) -2. ਸਮੀਖਕ ਦੇਸ਼ਾਂ ਦੀ ਆਵ੍ਰਿਤੀ ਗਿਣਤੀ ਦੀ ਗਣਨਾ ਕਰੋ: - 1. `Reviewer_Nationality` ਕਾਲਮ ਲਈ ਕਿੰਨੇ ਵਿਲੱਖਣ ਮੁੱਲ ਹਨ ਅਤੇ ਉਹ ਕੀ ਹਨ? - 2. ਡਾਟਾਸੈਟ ਵਿੱਚ ਸਭ ਤੋਂ ਆਮ ਸਮੀਖਕ ਦੇਸ਼ ਕਿਹੜਾ ਹੈ (ਦੇਸ਼ ਅਤੇ ਸਮੀਖਾਵਾਂ ਦੀ ਗਿਣਤੀ ਪ੍ਰਿੰਟ ਕਰੋ)? - 3. ਅਗਲੇ 10 ਸਭ ਤੋਂ ਵੱਧ ਆਵ੍ਰਿਤੀ ਵਾਲੇ ਦੇਸ਼ ਕਿਹੜੇ ਹਨ, ਅਤੇ ਉਨ੍ਹਾਂ ਦੀ ਆਵ੍ਰਿਤੀ ਗਿਣਤੀ ਕੀ ਹੈ? -3. ਹਰ ਇੱਕ ਦੇਸ਼ ਲਈ ਸਭ ਤੋਂ ਵੱਧ ਸਮੀਖਾ ਕੀਤੇ ਗਏ ਹੋਟਲ ਕਿਹੜੇ ਹਨ ਜੋ 10 ਸਭ ਤੋਂ ਵੱਧ ਸਮੀਖਕ ਦੇਸ਼ਾਂ ਵਿੱਚ ਹਨ? -4. ਡਾਟਾਸੈਟ ਵਿੱਚ ਹਰ ਹੋਟਲ ਲਈ ਕਿੰਨੀ ਸਮੀਖਾਵਾਂ ਹਨ (ਹੋਟਲ ਦੀ ਆਵ੍ਰਿਤੀ ਗਿਣਤੀ)? -5. ਜਦੋਂ ਕਿ ਡਾਟਾਸੈਟ ਵਿੱਚ ਹਰ ਹੋਟਲ ਲਈ `Average_Score` ਕਾਲਮ ਹੈ, ਤੁਸੀਂ ਇੱਕ ਔਸਤ ਸਕੋਰ ਦੀ ਗਣਨਾ ਵੀ ਕਰ ਸਕਦੇ ਹੋ (ਡਾਟਾਸੈਟ ਵਿੱਚ ਹਰ ਹੋਟਲ ਲਈ ਸਾਰੇ ਸਮੀਖਕ ਸਕੋਰਾਂ ਦਾ ਔਸਤ ਪ੍ਰਾਪਤ ਕਰਨਾ)। ਆਪਣੇ ਡਾਟਾ ਫਰੇਮ ਵਿੱਚ `Calc_Average_Score` ਕਾਲਮ ਹੈਡਰ ਨਾਲ ਇੱਕ ਨਵਾਂ ਕਾਲਮ ਸ਼ਾਮਲ ਕਰੋ ਜਿਸ ਵਿੱਚ ਉਹ ਗਣਨਾ ਕੀਤੀ ਗਈ ਔਸਤ ਸ਼ਾਮਲ ਹੈ। -6. ਕੀ ਕੋਈ ਹੋਟਲ ਹਨ ਜਿਨ੍ਹਾਂ ਦੇ `Average_Score` ਅਤੇ `Calc_Average_Score` (1 ਦਸ਼ਮਲਵ ਸਥਾਨ 'ਤੇ ਗੋਲ ਕੀਤੇ) ਇੱਕੋ ਜਿਹੇ ਹਨ? - 1. ਇੱਕ Python ਫੰਕਸ਼ਨ ਲਿਖਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜੋ ਇੱਕ Series (row) ਨੂੰ ਦਲੀਲ ਵਜੋਂ ਲੈਂਦਾ ਹੈ ਅਤੇ ਮੁੱਲਾਂ ਦੀ ਤੁਲਨਾ ਕਰਦਾ ਹੈ, ਜਦੋਂ ਮੁੱਲ ਇੱਕੋ ਨਹੀਂ ਹੁੰਦੇ ਤਾਂ ਸੁਨੇਹਾ ਪ੍ਰਿੰਟ ਕਰਦਾ ਹੈ। ਫਿਰ `.apply()` ਵਿਧੀ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਹਰ ਪੰਕਤੀ ਨੂੰ ਫੰਕਸ਼ਨ ਨਾਲ ਪ੍ਰਕਿਰਿਆ ਕਰੋ। -7. `Negative_Review` ਕਾਲਮ ਦੇ "No Negative" ਮੁੱਲਾਂ ਵਾਲੀਆਂ ਕਿੰਨੀ ਪੰਕਤੀਆਂ ਹਨ, ਇਹ ਗਿਣਨਾ ਕਰੋ ਅਤੇ ਪ੍ਰਿੰਟ ਕਰੋ। -8. `Positive_Review` ਕਾਲਮ ਦੇ "No Positive" ਮੁੱਲਾਂ ਵਾਲੀਆਂ ਕਿੰਨੀ ਪੰਕਤੀਆਂ ਹਨ, ਇਹ ਗਿਣਨਾ ਕਰੋ ਅਤੇ ਪ੍ਰਿੰਟ ਕਰੋ। -9. `Positive_Review` ਕਾਲਮ ਦੇ "No Positive" ਮੁੱਲਾਂ **ਅਤੇ** `Negative_Review` ਕਾਲਮ ਦੇ "No Negative" ਮੁੱਲਾਂ ਵਾਲੀਆਂ ਕਿੰਨੀ ਪੰਕਤੀਆਂ ਹਨ, ਇਹ ਗਿਣਨਾ ਕਰੋ ਅਤੇ ਪ੍ਰਿੰਟ ਕਰੋ। +ਹੇਠਾਂ ਦਿੱਤੀਆਂ ਸਵਾਲਾਂ ਨੂੰ ਕੋਡਿੰਗ ਟਾਸਕ ਵਾਂਗ ਲਓ ਅਤੇ ਬਿਨਾਂ ਹੱਲ ਵੇਖੇ ਉਨ੍ਹਾਂ ਦਾ ਜਵਾਬ ਦੇਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ। -### ਕੋਡ ਜਵਾਬ +1. ਜੇਹੜਾ ਡਾਟਾਫ੍ਰੇਮ ਤੁਸੀਂ ਹਾਲ ਹੀ ਵਿੱਚ ਲੋਡ ਕੀਤਾ ਹੈ ਉਸਦੇ *आਕਾਰ* ਨੂੰ ਪ੍ਰਿੰਟ ਕਰੋ (ਆਕਾਰ ਕਤਾਰਾਂ ਅਤੇ ਕਾਲਮਾਂ ਦੀ ਗਿਣਤੀ ਹੁੰਦੀ ਹੈ)। +2. ਸਮੀਖਿਆਕਾਰਾਂ ਦੇ ਰਾਸ਼ਟਰਤਾ ਦੀਆਂ ਫ੍ਰੈਕਵੈਂਸੀ ਗਿਣਤੀ ਗਣਨਾ ਕਰੋ: + 1. `Reviewer_Nationality` ਕਾਲਮ ਲਈ ਕਿੰਨੇ ਵਿਭਿੰਨ ਮੁੱਲ ਹਨ ਅਤੇ ਉਹ ਕੀ ਹਨ? + 2. ਡੈਟਾਸੈਟ ਵਿੱਚ ਸਭ ਤੋਂ ਵੱਧ ਆਮ ਸਮੀਖਿਆਕਾਰ ਦੇਸ਼ ਕਿਹੜਾ ਹੈ (ਦੇਸ਼ ਅਤੇ ਸਮੀਖਿਆਵਾਂ ਦੀ ਗਿਣਤੀ ਪ੍ਰਿੰਟ ਕਰੋ)? + 3. ਅਗਲੇ ਸਿਖਰਲੇ 10 ਸਭ ਤੋਂ ਵੱਧ ਮਿਲਦੇ ਜੁਲਦੇ ਰਾਸ਼ਟਰਤਾ ਅਤੇ ਉਹਨਾਂ ਦੀ ਫ੍ਰੈਕਵੈਂਸੀ ਕਿੰਨੀ ਹੈ? +3. ਟਾਪ 10 ਸਭ ਤੋਂ ਵੱਧ ਸਮੀਖਿਆਕਾਰਾਂ ਦੇ ਵੇਸ਼ਵਾਲ ਇਾਣਨਾ ਹੋਟਲ ਦੀ ਸਭ ਤੋਂ ਵੱਧ ਸਮੀਖਿਆ ਕੀਤੀ ਗਈ ਕੀ ਹੈ? +4. ਡੈਟਾਸੈਟ ਵਿੱਚ ਹਰ ਹੋਟਲ ਲਈ ਸਮੀਖਿਆਵਾਂ ਦੀ ਗਿਣਤੀ ਕਿੰਨੀ ਹੈ (ਹੋਟਲ ਦੀ ਫ੍ਰੈਕਵੈਂਸੀ)? +5. ਡੈਟਾਸੈਟ ਵਿੱਚ ਹਰ ਹੋਟਲ ਲਈ ਇੱਕ `Average_Score` ਕਾਲਮ ਹੁੰਦਾ ਹੈ, ਪਰ ਤੁਸੀਂ ਵੀ ਇੱਕ ਸਰਾਸਰੀ ਸਕੋਰ ਦੀ ਗਣਨਾ ਕਰ ਸਕਦੇ ਹੋ (ਹਰ ਹੋਟਲ ਲਈ ਸਾਰੇ ਸਮੀਖਿਆਕਾਰ ਸਕੋਰ ਦਾ ਸਰਾਸਰੀ ਪ੍ਰਾਪਤ ਕਰਨਾ)। ਆਪਣੇ ਡਾਟਾਫ੍ਰੇਮ ਵਿੱਚ ਇੱਕ ਨਵਾਂ ਕਾਲਮ ਸ਼ਾਮਲ ਕਰੋ ਜਿਸ ਦਾ ਹੈਡਰ `Calc_Average_Score` ਹੋਵੇ ਜਿਸ ਵਿੱਚ ਉਹ ਗਣਨਾ ਕੀਤੀ ਸਰਾਸਰੀ ਸ਼ਾਮਲ ਹੋਵੇ। +6. ਕੀ ਕਿਸੇ ਹੋਟਲ ਦਾ `Average_Score` ਅਤੇ `Calc_Average_Score` ਇੱਕ ਦਸੰਸ਼ ਸਥਾਨ ਤੱਕ ਇੱਕੋ ਜਿਹਾ ਹੈ? + 1. ਇੱਕ ਪਾਇਥਨ ਫੰਕਸ਼ਨ ਲਿਖਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜੋ ਇੱਕ ਸਿਰੀਜ਼ (ਕਤਾਰ) ਨੂੰ ਆਰਗੁਮੈਂਟ ਦੇ ਤੌਰ ਤੇ ਲੈਂਦਾ ਹੋਵੇ ਅਤੇ ਮੁੱਲਾਂ ਦੀ ਤੁਲਨਾ ਕਰਦਾ ਹੋਵੇ, ਜਦ ਮੁੱਲ ਇਕੋ ਨਾ ਹੋਵੇ ਤਾਂ ਸੁਨੇਹਾ ਪ੍ਰਿੰਟ ਕਰੇ। ਫਿਰ `.apply()` ਮੈਥਡ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਹਰ ਕਤਾਰ ਨੂੰ ਇਸ ਫੰਕਸ਼ਨ ਨਾਲ ਪ੍ਰਕਿਰਿਆ ਕਰੋ। +7. ਕਿੰਨੀ ਕਤਾਰਾਂ ਦਾ `Negative_Review` ਕਾਲਮ "No Negative" ਮੁੱਲ ਰੱਖਦਾ ਹੈ ਇਹ ਗਿਣਤੀ ਕਰੋ ਅਤੇ ਪ੍ਰਿੰਟ ਕਰੋ +8. ਕਿੰਨੀ ਕਤਾਰਾਂ ਦਾ `Positive_Review` ਕਾਲਮ "No Positive" ਮੁੱਲ ਰੱਖਦਾ ਹੈ ਇਹ ਗਿਣਤੀ ਕਰੋ ਅਤੇ ਪ੍ਰਿੰਟ ਕਰੋ +9. ਕਿੰਨੀ ਕਤਾਰਾਂ ਦਾ `Positive_Review` "No Positive" ਅਤੇ `Negative_Review` "No Negative" ਦੋਹਾਂ ਮੁੱਲ ਹਨ ਇਹ ਗਿਣਤੀ ਕਰੋ ਅਤੇ ਪ੍ਰਿੰਟ ਕਰੋ +### ਕੋਡ ਦੇ ਜਵਾਬ -1. ਤੁਸੀਂ ਹੁਣੇ ਹੀ ਲੋਡ ਕੀਤੇ ਡਾਟਾ ਫਰੇਮ ਦਾ *shape* ਪ੍ਰਿੰਟ ਕਰੋ (shape ਪੰਕਤੀਆਂ ਅਤੇ ਕਾਲਮਾਂ ਦੀ ਗਿਣਤੀ ਹੈ) +1. ਜੇਹੜਾ ਡਾਟਾਫ੍ਰੇਮ ਤੁਸੀਂ ਹਾਲ ਹੀ ਵਿੱਚ ਲੋਡ ਕੀਤਾ ਹੈ ਉਸਦੇ *आਕਾਰ* ਨੂੰ ਪ੍ਰਿੰਟ ਕਰੋ (ਆਕਾਰ ਕਤਾਰਾਂ ਅਤੇ ਕਾਲਮਾਂ ਦੀ ਗਿਣਤੀ ਹੁੰਦੀ ਹੈ)। ```python print("The shape of the data (rows, cols) is " + str(df.shape)) > The shape of the data (rows, cols) is (515738, 17) ``` -2. ਸਮੀਖਕ ਦੇਸ਼ਾਂ ਦੀ ਆਵ੍ਰਿਤੀ ਗਿਣਤੀ ਦੀ ਗਣਨਾ ਕਰੋ: +2. ਸਮੀਖਿਆਕਾਰਾਂ ਦੇ ਰਾਸ਼ਟਰਤਾ ਦੀਆਂ ਫ੍ਰੈਕਵੈਂਸੀ ਗਿਣਤੀ ਗਣਨਾ ਕਰੋ: - 1. `Reviewer_Nationality` ਕਾਲਮ ਲਈ ਕਿੰਨੇ ਵਿਲੱਖਣ ਮੁੱਲ ਹਨ ਅਤੇ ਉਹ ਕੀ ਹਨ? - 2. ਡਾਟਾਸੈਟ ਵਿੱਚ ਸਭ ਤੋਂ ਆਮ ਸਮੀਖਕ ਦੇਸ਼ ਕਿਹੜਾ ਹੈ (ਦੇਸ਼ ਅਤੇ ਸਮੀਖਾਵਾਂ ਦੀ ਗਿਣਤੀ ਪ੍ਰਿੰਟ ਕਰੋ)? + 1. `Reviewer_Nationality` ਕਾਲਮ ਲਈ ਕਿੰਨੇ ਵਿਭਿੰਨ ਮੁੱਲ ਹਨ ਅਤੇ ਉਹ ਕੀ ਹਨ? + 2. ਡੈਟਾਸੈਟ ਵਿੱਚ ਸਭ ਤੋਂ ਵੱਧ ਆਮ ਸਮੀਖਿਆਕਾਰ ਦੇਸ਼ ਕਿਹੜਾ ਹੈ (ਦੇਸ਼ ਅਤੇ ਸਮੀਖਿਆਵਾਂ ਦੀ ਗਿਣਤੀ ਪ੍ਰਿੰਟ ਕਰੋ)? ```python - # value_counts() creates a Series object that has index and values in this case, the country and the frequency they occur in reviewer nationality + # value_counts() ਇੱਕ ਸਿਰੀਜ਼ ਆਬਜੈਕਟ ਬਣਾਉਂਦਾ ਹੈ ਜਿਸ ਵਿੱਚ ਇਸ ਮਾਮਲੇ ਵਿੱਚ ਇੰਡੈਕਸ ਅਤੇ ਮੁੱਲ ਹੁੰਦੇ ਹਨ, ਦੇਸ਼ ਅਤੇ ਉਹਨਾਂ ਦੀ ਵਰਤੀ ਗਈ ਤਦਾਦ ਰਿਵਿਊਅਰ ਕੌਮੀਅਤ ਵਿੱਚ 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 + # ਸਿਰੀਜ਼ ਦੀਆਂ ਪਹਿਲੀ ਅਤੇ ਆਖਰੀਆਂ ਕਤਾਰਾਂ ਪ੍ਰਿੰਟ ਕਰੋ। ਸਾਰੀ ਡਾਟਾ ਪ੍ਰਿੰਟ ਕਰਨ ਲਈ nationality_freq.to_string() ਵਿੱਚ ਬਦਲੋ print(nationality_freq) There are 227 different nationalities @@ -178,12 +222,12 @@ print("Loading took " + str(round(end - start, 2)) + " seconds") Name: Reviewer_Nationality, Length: 227, dtype: int64 ``` - 3. ਅਗਲੇ 10 ਸਭ ਤੋਂ ਵੱਧ ਆਵ੍ਰਿਤੀ ਵਾਲੇ ਦੇਸ਼ ਕਿਹੜੇ ਹਨ, ਅਤੇ ਉਨ੍ਹਾਂ ਦੀ ਆਵ੍ਰਿਤੀ ਗਿਣਤੀ ਕੀ ਹੈ? + 3. ਅਗਲੇ ਸਿਖਰਲੇ 10 ਸਭ ਤੋਂ ਵੱਧ ਮਿਲਦੇ ਜੁਲਦੇ ਰਾਸ਼ਟਰਤਾ ਅਤੇ ਉਹਨਾਂ ਦੀ ਫ੍ਰੈਕਵੈਂਸੀ ਕਿੰਨੀ ਹੈ? ```python print("The highest frequency reviewer nationality is " + str(nationality_freq.index[0]).strip() + " with " + str(nationality_freq[0]) + " reviews.") - # Notice there is a leading space on the values, strip() removes that for printing - # What is the top 10 most common nationalities and their frequencies? + # ਧਿਆਨ ਦਿਓ ਕਿ ਵੈਲਯੂਜ਼ ਦੇ ਆਗੇ ਇੱਕ ਖਾਲੀ ਥਾਂ ਹੈ, ਪ੍ਰਿੰਟ ਕਰਨ ਲਈ strip() ਇਹ ਹਟਾ ਦਿੰਦਾ ਹੈ + # ਸਭ ਤੋਂ ਆਮ ਸਿਰਲੇਖ ਦੇਸ਼ਾਂ ਦੇ ਨਾਮ ਅਤੇ ਉਹਨਾਂ ਦੀਆਂ ਆਵ੍ਰਿਤੀਆਂ ਕੀ ਹਨ? print("The next 10 highest frequency reviewer nationalities are:") print(nationality_freq[1:11].to_string()) @@ -201,15 +245,15 @@ print("Loading took " + str(round(end - start, 2)) + " seconds") France 7296 ``` -3. ਹਰ ਇੱਕ ਦੇਸ਼ ਲਈ ਸਭ ਤੋਂ ਵੱਧ ਸਮੀਖਾ ਕੀਤੇ ਗਏ ਹੋਟਲ ਕਿਹੜੇ ਹਨ ਜੋ 10 ਸਭ ਤੋਂ ਵੱਧ ਸਮੀਖਕ ਦੇਸ਼ਾਂ ਵਿੱਚ ਹਨ? +3. ٹاپ 10 ਸਭ ਤੋਂ ਵੱਧ ਸਮੀਖਿਆਕਾਰਾਂ ਦੇ ਵਿੱਚੋਂ ਹਰ ਇਕ ਲਈ ਸਭ ਤੋਂ ਵੱਧ ਸਮੀਖਿਆ ਕੀਤਾ ਹੋਟਲ ਕੀ ਸੀ? ```python - # What was the most frequently reviewed hotel for the top 10 nationalities - # Normally with pandas you will avoid an explicit loop, but wanted to show creating a new dataframe using criteria (don't do this with large amounts of data because it could be very slow) + # ਸਿਖਰ 10 ਕੌਮਾਂ ਲਈ ਸਭ ਤੋਂ ਅਕਸਰ ਸਮੀਖਿਆ ਕੀਤਾ ਹੋਟਲ ਕਿਹੜਾ ਸੀ + # ਆਮ ਤੌਰ 'ਤੇ pandas ਨਾਲ ਤੁਸੀਂ ਸਪਸ਼ਟ ਲੂਪ ਤੋਂ ਬਚੋਗੇ, ਪਰ ਮਾਪਦੰਡਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇੱਕ ਨਵਾਂ ਡਾਟਾ ਫਰੇਮ ਬਣਾਉਣਾ ਦਿਖਾਉਣਾ ਚਾਹੁੰਦੇ ਸੀ (ਇਹ ਵੱਡੇ ਡਾਟਾ ਨਾਲ ਨਾ ਕਰੋ ਕਿਉਂਕਿ ਇਹ ਬਹੁਤ ਧੀਮਾ ਹੋ ਸਕਦਾ ਹੈ) for nat in nationality_freq[:10].index: - # First, extract all the rows that match the criteria into a new dataframe + # ਪਹਿਲਾਂ, ਸਾਰੇ ਰੋਜ਼ ਜਿਹੜੇ ਮਾਪਦੰਡਾਂ ਨਾਲ ਮੈਚ ਕਰਦੇ ਹਨ, ਨੂੰ ਇੱਕ ਨਵੇਂ ਡਾਟਾ ਫਰੇਮ ਵਿਚ ਨਿਕਾਲੋ nat_df = df[df["Reviewer_Nationality"] == nat] - # Now get the hotel freq + # ਹੁਣ ਹੋਟਲ ਅਕਸਰਤਾ ਪ੍ਰਾਪਤ ਕਰੋ freq = nat_df["Hotel_Name"].value_counts() print("The most reviewed hotel for " + str(nat).strip() + " was " + str(freq.index[0]) + " with " + str(freq[0]) + " reviews.") @@ -225,16 +269,16 @@ print("Loading took " + str(round(end - start, 2)) + " seconds") The most reviewed hotel for Canada was St James Court A Taj Hotel London with 61 reviews. ``` -4. ਡਾਟਾਸੈਟ ਵਿੱਚ ਹਰ ਹੋਟਲ ਲਈ ਕਿੰਨੀ ਸਮੀਖਾਵਾਂ ਹਨ (ਹੋਟਲ ਦੀ ਆਵ੍ਰਿਤੀ ਗਿਣਤੀ)? +4. ਡੈਟਾਸੈਟ ਵਿੱਚ ਹਰ ਹੋਟਲ ਲਈ ਸਮੀਖਿਆਵਾਂ ਦੀ ਗਿਣਤੀ ਕਿੰਨੀ ਹੈ (ਹੋਟਲ ਦੀ ਫ੍ਰੈਕਵੈਂਸੀ)? ```python - # First create a new dataframe based on the old one, removing the uneeded columns + # ਪਹਿਲਾਂ ਪੁਰਾਣੇ ਡਾਟਾ ਫਰੇਮ ਦੇ ਆਧਾਰ 'ਤੇ ਇਕ ਨਵਾਂ ਡਾਟਾ ਫਰੇਮ ਬਣਾਓ, ਜਿੱਥੇ ਲੋੜ ਨਾ ਹੋਣ ਵਾਲੀਆਂ ਕਾਲਮ ਹਟਾਈਆਂ ਜਾਣ hotel_freq_df = df.drop(["Hotel_Address", "Additional_Number_of_Scoring", "Review_Date", "Average_Score", "Reviewer_Nationality", "Negative_Review", "Review_Total_Negative_Word_Counts", "Positive_Review", "Review_Total_Positive_Word_Counts", "Total_Number_of_Reviews_Reviewer_Has_Given", "Reviewer_Score", "Tags", "days_since_review", "lat", "lng"], axis = 1) - # Group the rows by Hotel_Name, count them and put the result in a new column Total_Reviews_Found + # ਕਤਾਰਾਂ ਨੂੰ Hotel_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) ``` @@ -248,31 +292,31 @@ print("Loading took " + str(round(end - start, 2)) + " seconds") | Hotel Wagner | 135 | 10 | | Hotel Gallitzinberg | 173 | 8 | - ਤੁਸੀਂ ਧਿਆਨ ਦੇ ਸਕਦੇ ਹੋ ਕਿ *counted in the dataset* ਨਤੀਜੇ `Total_Number_of_Reviews` ਵਿੱਚ ਮੁੱਲਾਂ ਨਾਲ ਮੇਲ ਨਹੀਂ ਖਾਂਦੇ। ਇਹ ਸਪਸ਼ਟ ਨਹੀਂ ਹੈ ਕਿ ਕੀ ਡਾਟਾਸੈਟ ਵਿੱਚ ਇਹ ਮੁੱਲ ਹੋਟਲ ਦੇ ਕੁੱਲ ਸਮੀਖਾਵਾਂ ਦੀ ਨੁਮਾਇੰਦਗੀ ਕਰਦਾ ਹੈ, ਪਰ ਸਾਰੀਆਂ scraped ਨਹੀਂ ਕੀਤੀਆਂ ਗਈਆਂ, ਜਾਂ ਕੁਝ ਹੋਰ ਗਣਨਾ। `Total_Number_of_Reviews` ਨੂੰ ਮਾਡਲ ਵਿੱਚ ਇਸ ਅਸਪਸ਼ਟਤਾ ਦੇ ਕਾਰਨ ਵਰਤਿਆ ਨਹੀਂ ਜਾਂਦਾ। + ਤੁਸੀਂ ਨੋਟ ਕਰ ਸਕਦੇ ਹੋ ਕਿ *ਡੈਟਾਸੈਟ ਵਿੱਚ ਗਿਣਤੀ ਕੀਤੀ* ਨਤੀਜੇ `Total_Number_of_Reviews` ਵਿੱਚ ਦਿੱਤੇ ਮੁੱਲ ਨਾਲ ਮੇਲ ਨਹੀਂ ਖਾਂਦੇ। ਇਹ ਸਪੱਸ਼ਟ ਨਹੀਂ ਕਿ ਇਹ ਮੁੱਲ ਡੈਟਾਸੈਟ ਵਿੱਚ ਹੋਟਲ ਦੇ ਕੁੱਲ ਸਮੀਖਿਆਵਾਂ ਦੀ ਗਿਣਤੀ ਦਰਸਾਉਂਦਾ ਸੀ ਜਾਂ ਨਹੀਂ, ਪਰ ਸਾਰੇ ਸਮੀਖਿਆਵਾਂ ਖੁਦਰੇ ਨਹੀਂ ਕੀਤੇ ਗਏ, ਜਾਂ ਕੋਈ ਹੋਰ ਗਿਣਤੀ। ਇਸ ਅਸਪਸ਼ਟਤਾ ਕਰਕੇ `Total_Number_of_Reviews` ਮਾਡਲ ਵਿੱਚ ਵਰਤਿਆ ਨਹੀਂ ਜਾ ਰਿਹਾ। -5. ਜਦੋਂ ਕਿ ਡਾਟਾਸੈਟ ਵਿੱਚ ਹਰ ਹੋਟਲ ਲਈ `Average_Score` ਕਾਲਮ ਹੈ, ਤੁਸੀਂ ਇੱਕ ਔਸਤ ਸਕੋਰ ਦੀ ਗਣਨਾ ਵੀ ਕਰ ਸਕਦੇ ਹੋ (ਡਾਟਾਸੈਟ ਵਿੱਚ ਹਰ ਹੋਟਲ ਲਈ ਸਾਰੇ ਸਮੀਖਕ ਸਕੋਰਾਂ ਦਾ ਔਸਤ ਪ੍ਰਾਪਤ ਕਰਨਾ)। ਆਪਣੇ ਡਾਟਾ ਫਰੇਮ ਵਿੱਚ `Calc_Average_Score` ਕਾਲਮ ਹੈਡਰ ਨਾਲ ਇੱਕ ਨਵਾਂ ਕਾਲਮ ਸ਼ਾਮਲ ਕਰੋ ਜਿਸ ਵਿੱਚ ਉਹ ਗਣਨਾ ਕੀਤੀ ਗਈ ਔਸਤ ਸ਼ਾਮਲ ਹੈ। ਕਾਲਮ `Hotel_Name`, `Average_Score`, ਅਤੇ `Calc_Average_Score` ਪ੍ਰਿੰਟ ਕਰੋ। +5. ਜਦਕਿ ਡੈਟਾਸੈਟ ਵਿੱਚ ਹਰ ਹੋਟਲ ਲਈ ਇੱਕ `Average_Score` ਕਾਲਮ ਦਿਤਾ ਹੈ, ਤੁਸੀਂ ਵੀ ਇੱਕ ਸਰਾਸਰੀ ਸਕੋਰ ਦੀ ਗਣਨਾ ਕਰ ਸਕਦੇ ਹੋ (ਹਰ ਹੋਟਲ ਲਈ ਸਾਰੇ ਸਮੀਖਿਆਕਾਰੰ ਸਕੋਰਾਂ ਦਾ ਸਰਾਸਰੀ ਲੈ ਕੇ)। ਆਪਣੇ ਡਾਟਾਫ੍ਰੇਮ ਵਿੱਚ ਇੱਕ ਨਵਾਂ ਕਾਲਮ ਜੋੜੋ ਜਿਸਦਾ ਹੈਡਰ `Calc_Average_Score` ਹੋਵੇ ਜੋ ਕਿ ਇਹ ਗਣਨਾਤਮਕ ਸਰਾਸਰੀ ਰੱਖਦਾ ਹੋਵੇ। ਕਾਲਮ `Hotel_Name`, `Average_Score`, ਅਤੇ `Calc_Average_Score` ਪ੍ਰਿੰਟ ਕਰੋ। ```python - # define a function that takes a row and performs some calculation with it + # ਇੱਕ ਫੰਕਸ਼ਨ ਪਰਿਭਾਸ਼ਿਤ ਕਰੋ ਜੋ ਇੱਕ ਕਤਾਰ ਲੈਂਦਾ ਹੈ ਅਤੇ ਇਸ ਨਾਲ ਕੁਝ ਗਣਨਾ ਕਰਦਾ ਹੈ def get_difference_review_avg(row): return row["Average_Score"] - row["Calc_Average_Score"] - # 'mean' is mathematical word for 'average' + # '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) + # ਇਕ df ਬਣਾਓ ਜਿਸ ਵਿੱਚ Hotel_Name ਦੀਆਂ ਸਾਰੀਆਂ ਨਕਲਾਂ ਨਾ ਹੋਣ (ਤਾਂ ਜੋ ਹਰ ਹੋਟਲ ਲਈ ਸਿਰਫ 1 ਕਤਾਰ ਹੋਵੇ) review_scores_df = df.drop_duplicates(subset = ["Hotel_Name"]) - # Sort the dataframe to find the lowest and highest average score difference + # ਸਭ ਤੋਂ ਘੱਟ ਅਤੇ ਸਭ ਤੋਂ ਵੱਧ ਔਸਤ ਸਕੋਰ ਅੰਤਰ ਨੂੰ ਲੱਭਣ ਲਈ ਡਾਟਾ ਫਰੇਮ ਨੂੰ ਸਾਰਟ ਕਰੋ review_scores_df = review_scores_df.sort_values(by=["Average_Score_Difference"]) display(review_scores_df[["Average_Score_Difference", "Average_Score", "Calc_Average_Score", "Hotel_Name"]]) ``` - ਤੁਸੀਂ `Average_Score` ਮੁੱਲ ਅਤੇ ਗਣਨਾ ਕੀਤੇ ਔਸਤ ਸਕੋਰ ਬਾਰੇ ਵੀ ਸੋਚ ਸਕਦੇ ਹੋ ਕਿ ਕਿਉਂਕਿ ਇਹ ਕਈ ਵਾਰ ਗਣਨਾ ਕੀਤੇ ਔਸਤ ਸਕੋਰ ਤੋਂ ਵੱਖਰੇ ਹੁੰਦੇ ਹਨ। ਜਿਵੇਂ ਕਿ ਅਸੀਂ ਨਹੀਂ ਜਾਣ ਸਕਦੇ ਕਿ ਕਿਉਂਕਿ ਕੁਝ ਮੁੱਲ ਮੇਲ ਖਾਂਦੇ ਹਨ, ਪਰ ਹੋਰਾਂ ਵਿੱਚ ਅੰਤਰ ਹੈ, ਇਸ ਮਾਮਲੇ ਵਿੱਚ ਸੁਰੱਖਿਅਤ ਹੈ ਕਿ ਅਸੀਂ ਆਪਣੇ ਆਪ ਔਸਤ ਦੀ ਗਣਨਾ ਕਰਨ ਲਈ ਸਮੀਖਾ ਸਕੋਰਾਂ ਦੀ ਵਰਤੋਂ ਕਰੀਏ। ਇਹ ਕਿਹਾ, ਅੰਤਰ ਆਮ ਤੌਰ 'ਤੇ ਬਹੁਤ ਛੋਟੇ ਹੁੰਦੇ ਹਨ, ਇੱਥੇ ਉਹ ਹੋਟਲ ਹਨ ਜਿਨ੍ਹਾਂ ਦੇ ਡਾਟਾਸੈਟ ਔਸਤ ਅਤੇ ਗਣਨਾ ਕੀਤੇ ਔਸਤ ਵਿੱਚ ਸਭ ਤੋਂ ਵੱਧ ਅੰਤਰ ਹੈ: + ਤੁਸੀਂ ਇਹ ਵੀ ਸੋਚ ਸਕਦੇ ਹੋ ਕਿ `Average_Score` ਮੁੱਲ ਕਈ ਵਾਰੀ ਗਣਨਾਂ ਵਾਲੇ ਸਰਾਸਰੀ ਸਕੋਰ ਤੋਂ ਕਿਵੇਂ ਵੱਖਰਾ ਹੁੰਦਾ ਹੈ। ਕਿਉਂਕਿ ਸਾਨੂੰ ਸਪੱਸ਼ਟ ਨਹੀਂ ਕਿ ਕਿਉਂ ਕੁਝ ਮੁੱਲ ਮਿਲਦੇ ਹਨ ਪਰ ਕੁਝ ਵਿੱਚ ਅੰਤਰ ਹੁੰਦਾ ਹੈ, ਇਸ ਸੰਦਰਭ ਵਿੱਚ ਸਭ ਤੋਂ ਸੁਰੱਖਿਅਤ ਇਹ ਹੈ ਕਿ ਸਮੀਖਿਆ ਸਕੋਰਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਆਪਣੇ ਆਪ ਸਰਾਸਰੀ ਗਣਨਾ ਕਰੀਏ। ਇਹ ਕਹਿਣਾ ਹੈ ਕਿ ਅੰਤਰਾਂ ਆਮ ਤੌਰ ਤੇ ਬਹੁਤ ਛੋਟੇ ਹੁੰਦੇ ਹਨ, ਹੇਠਾਂ ਉਨ੍ਹਾਂ ਹੋਟਲਾਂ ਦੀ ਸੂਚੀ ਹੈ ਜਿਨ੍ਹਾਂ ਵਿੱਚ ਡੈਟਾਸੈਟ ਸਰਾਸਰੀ ਅਤੇ ਗਣਨਾ ਕੀਤੀ ਸਰਾਸਰੀ ਵਿੱਚ ਵੱਡਾ ਅੰਤਰ ਹੈ: | Average_Score_Difference | Average_Score | Calc_Average_Score | Hotel_Name | | :----------------------: | :-----------: | :----------------: | ------------------------------------------: | @@ -288,16 +332,16 @@ print("Loading took " + str(round(end - start, 2)) + " seconds") | 0.9 | 8.6 | 7.7 | MARQUIS Faubourg St Honor Relais Ch teaux | | 1.3 | 7.2 | 5.9 | Kube Hotel Ice Bar | - ਸਿਰਫ 1 ਹੋਟਲ ਜਿਸਦਾ ਸਕੋਰ ਵਿੱਚ 1 ਤੋਂ ਵੱਧ ਅੰਤਰ ਹੈ, ਇਸਦਾ ਮਤਲਬ ਹੈ ਕਿ ਅਸੀਂ ਸ਼ਾਇਦ ਅੰਤਰ ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰ ਸਕਦੇ ਹਾਂ ਅਤੇ ਗਣਨਾ ਕੀਤੇ ਔਸਤ ਸਕੋਰ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹਾਂ। + ਸਿਰਫ ਇੱਕ ਹੋਟਲ ਹੀ ਹੈ ਜਿਸਦਾ ਅੰਤਰ 1 ਤੋਂ ਵੱਧ ਹੈ, ਇਹ ਮਤਲਬ ਹੈ ਕਿ ਅਸੀਂ ਸ਼ਾਇਦ ਅੰਤਰ ਨੂੰ ਅਣਡਿੱਠਾ ਕਰ ਸਕਦੇ ਹਾਂ ਅਤੇ ਗਣਨਾ ਕੀਤੇ ਸਰਾਸਰੀ ਸਕੋਰ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹਾਂ। -6. `Negative_Review` ਕਾਲਮ ਦੇ "No Negative" ਮੁੱਲਾਂ ਵਾਲੀਆਂ ਕਿੰਨੀ ਪੰਕਤੀਆਂ ਹਨ, ਇਹ ਗਿਣਨਾ ਕਰੋ ਅਤੇ ਪ੍ਰਿੰਟ ਕਰੋ। +6. ਗਿਣਤੀ ਕਰੋ ਅਤੇ ਪ੍ਰਿੰਟ ਕਰੋ ਕਿ ਕਿੰਨੀ ਕਤਾਰਾਂ ਵਿੱਚ ਕਾਲਮ `Negative_Review` ਦਾ ਮੁੱਲ "No Negative" ਹੈ। -7. `Positive_Review` ਕਾਲਮ ਦੇ "No Positive" ਮੁੱਲਾਂ ਵਾਲੀਆਂ ਕਿੰਨੀ ਪੰਕਤੀਆਂ ਹਨ, ਇਹ ਗਿਣਨਾ ਕਰੋ ਅਤੇ ਪ੍ਰਿੰਟ ਕਰੋ। +7. ਗਿਣਤੀ ਕਰੋ ਅਤੇ ਪ੍ਰਿੰਟ ਕਰੋ ਕਿ ਕਿੰਨੀ ਕਤਾਰਾਂ ਵਿੱਚ ਕਾਲਮ `Positive_Review` ਦਾ ਮੁੱਲ "No Positive" ਹੈ। -8. `Positive_Review` ਕਾਲਮ ਦੇ "No Positive" ਮੁੱਲਾਂ **ਅਤੇ** `Negative_Review` ਕਾਲਮ ਦੇ "No Negative" ਮੁੱਲਾਂ ਵਾਲੀਆਂ ਕਿੰਨੀ ਪੰਕਤੀਆਂ ਹਨ, ਇਹ ਗਿਣਨਾ ਕਰੋ ਅਤੇ ਪ੍ਰਿੰਟ ਕਰੋ। +8. ਗਿਣਤੀ ਕਰੋ ਅਤੇ ਪ੍ਰਿੰਟ ਕਰੋ ਕਿ ਕਿੰਨੀ ਕਤਾਰਾਂ ਵਿੱਚ ਕਾਲਮ `Positive_Review` ਦਾ ਮੁੱਲ "No Positive" ਅਤੇ ਕਾਲਮ `Negative_Review` ਦਾ ਮੁੱਲ "No Negative" ਹੈ। ```python - # with lambdas: + # ਲੈਂਬਡਾਸ ਨਾਲ: start = time.time() no_negative_reviews = df.apply(lambda x: True if x['Negative_Review'] == "No Negative" else False , axis=1) print("Number of No Negative reviews: " + str(len(no_negative_reviews[no_negative_reviews == True].index))) @@ -318,10 +362,10 @@ print("Loading took " + str(round(end - start, 2)) + " seconds") ## ਇੱਕ ਹੋਰ ਤਰੀਕਾ -ਲੈਂਬਡਾ ਤੋਂ ਬਿਨਾਂ ਆਈਟਮਾਂ ਦੀ ਗਿਣਤੀ ਕਰਨ ਦਾ ਇੱਕ ਹੋਰ ਤਰੀਕਾ, ਅਤੇ ਪੰਕਤੀਆਂ ਦੀ ਗਿਣਤੀ ਕਰਨ ਲਈ sum ਦੀ ਵਰਤੋਂ ਕਰੋ: +ਬਿਨਾਂ lambda ਦਾ ਵਰਤੋਂ ਕਰਕੇ ਆਈਟਮ ਗਿਣਤੀ ਕਰਨ ਦਾ ਇੱਕ ਹੋਰ ਤਰੀਕਾ, ਅਤੇ ਕਤਾਰਾਂ ਦੀ ਗਿਣਤੀ ਕਰਨ ਲਈ 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)) @@ -341,22 +385,28 @@ print("Loading took " + str(round(end - start, 2)) + " seconds") Sum took 0.19 seconds ``` - ਤੁਸੀਂ ਧਿਆਨ ਦਿੱਤਾ ਹੋਵੇਗਾ ਕਿ 127 ਪੰਕਤੀਆਂ ਹਨ ਜਿਨ੍ਹਾਂ ਵਿੱਚ `Negative_Review` ਅਤੇ `Positive_Review` ਕਾਲਮਾਂ ਲਈ "No Negative" ਅਤੇ "No Positive" ਮੁੱਲ ਹਨ। ਇਸਦਾ ਮਤਲਬ ਹੈ ਕਿ ਸਮੀਖਕ ਨੇ ਹੋਟਲ ਨੂੰ ਇੱਕ ਅੰਕਤਮਕ ਸਕੋਰ ਦਿੱਤਾ, ਪਰ ਨਾ ਤਾਂ ਇੱਕ ਸਕਾਰਾਤਮਕ ਅਤੇ ਨਾ ਹੀ ਨਕਾਰਾਤਮਕ ਸਮੀਖਾ ਲਿਖਣ ਤੋਂ ਇਨਕਾਰ ਕੀਤਾ। ਖੁਸ਼ਕਿਸਮਤੀ ਨਾਲ ਇਹ ਪੰਕਤੀਆਂ ਦੀ ਛੋਟੀ ਗਿਣਤੀ ਹੈ (127 ਵਿੱਚੋਂ 515738, ਜਾਂ 0.02%), ਇਸ ਲਈ ਇਹ ਸ਼ਾਇਦ ਸਾਡੇ ਮਾਡਲ ਜਾਂ ਨਤੀਜਿਆਂ ਨੂੰ ਕਿਸੇ ਵਿਸ਼ੇਸ਼ ਦਿਸ਼ਾ ਵਿੱਚ ਝੁਕਾਉਣ ਵਾਲਾ ਨਹੀਂ ਹੋਵੇਗਾ, ਪਰ ਤੁਸੀਂ ਸ਼ਾਇਦ ਇੱਕ ਸਮੀਖਾਵਾਂ ਦੇ ਡਾਟਾ ਸੈੱਟ ਦੀ ਉਮੀਦ ਨਹੀਂ ਕੀਤੀ ਹੋਵੇਗੀ ਜਿਸ ਵਿੱਚ ਕੋਈ ਸਮੀਖਾਵਾਂ ਨਹੀਂ ਹਨ, ਇਸ ਲਈ ਇਹ ਡਾਟਾ ਦੀ ਖੋਜ ਕਰਨ ਲਈ ਮੁੱਲਾਂ ਦੀ ਖੋਜ ਕਰਨਾ ਯੋਗ ਹੈ। + ਤੁਸੀਂ ਨੋਟ ਕੀਤਾ ਹੋਇਆਗਾ ਕਿ 127 ਕਤਾਰਾਂ ਵਿੱਚ ਦੋਹਾਂ ਕਾਲਮਾਂ `Negative_Review` ਅਤੇ `Positive_Review` ਲਈ ਮੁੱਲ "No Negative" ਅਤੇ "No Positive" ਹਨ। ਇਸ ਦਾ ਅਰਥ ਹੈ ਕਿ ਸਮੀਖਿਆਕਾਰ ਨੇ ਹੋਟਲ ਨੂੰ ਗਿਣਤੀ ਸੂਚਕ ਸਕੋਰ ਦਿੱਤਾ ਪਰ ਕਿਸੇ ਵੀ ਪਾਜ਼ੀਟਿਵ ਜਾਂ ਨੇਗਟਿਵ ਸਮੀਖਿਆ ਨਹੀਂ ਦਿੱਤੀ। ਖੁਸ਼ਕਿਸਮਤੀ ਨਾਲ ਇਹ ਕਤਾਰਾਂ ਦੀ ਗਿਣਤੀ ਥੋੜ੍ਹੀ (127 ਬਾਹਰੋਂ 515738, ਜਾਂ 0.02%) ਹੈ, ਇਸ ਲਈ ਇਹ ਸੰਭਾਵਤ ਤੌਰ ਤੇ ਸਾਡੇ ਮਾਡਲ ਜਾਂ ਨਤੀਜਿਆਂ ਨੂੰ ਕਿਸੇ ਖਾਸ ਦਿਸ਼ਾ ਵਿੱਚ ਬਦਲਾਉਂਦਾ ਨਹੀਂ, ਪਰ ਸ਼ਾਇਦ ਤੁਸੀਂ ਇਕ ਸਮੀਖਿਆ ਡੈਟਾਸੈਟ ਵਿੱਚ ਕੋਈ ਸਮੀਖਿਆ ਨਾ ਹੋਣ ਵਾਲੀਆਂ ਕਤਾਰਾਂ ਕਦੇ ਨਹੀਂ ਸੋਚਿਆ ਹੋਵੇ, ਇਸ ਲਈ ਇਹ ਕਿਸੇ ਅਜਿਹੇ ਡਾਟਾ ਨੂੰ ਖੋਜਣ ਲਈ ਮਹੱਤਵਪੂਰਨ ਹੈ। -ਹੁਣ ਜਦੋਂ ਤੁਸੀਂ ਡਾਟਾਸੈਟ ਦੀ ਖੋਜ ਕਰ ਲਈ ਹੈ, ਅਗਲੇ ਪਾਠ ਵਿੱਚ ਤੁਸੀਂ ਡਾਟਾ ਨੂੰ ਫਿਲਟਰ ਕਰੋਗੇ ਅਤੇ ਕੁਝ ਭਾਵਨਾ ਵਿਸ਼ਲੇਸ਼ਣ ਸ਼ਾਮਲ ਕਰੋਗੇ। +ਹੁਣ ਜਦ ਤੁਸੀਂ ਡੇਟਾਸੈਟ ਦੀ ਖੋਜ ਕਰ ਲਈ ਹੈ, ਅਗਲੇ ਪਾਠ ਵਿੱਚ ਤੁਸੀਂ ਡਾਟਾ ਨੂੰ ਛਾਣਨਾ ਅਤੇ ਕੁਝ ਭਾਵਨਾ ਵਿਸ਼ਲੇਸ਼ਣ ਜੋੜੋਗੇ। --- ## 🚀ਚੁਣੌਤੀ -ਜਿਵੇਂ ਕਿ ਅਸੀਂ ਪਿਛਲੇ ਪਾਠਾਂ ਵਿੱਚ ਵੇਖਿਆ, ਇਹ ਪਾਠ ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਆਪਣੇ ਡਾਟਾ ਅਤੇ ਇਸਦੇ ਖਾਮੀਆਂ ਨੂੰ ਸਮਝਣਾ ਕਿੰਨਾ ਮਹੱਤਵਪੂਰਨ ਹੈ। ਖਾਸ ਕਰਕੇ ਟੈਕਸਟ-ਅਧਾਰਿਤ ਡਾਟਾ ਨੂੰ ਧਿਆਨ ਨਾਲ ਜਾਂਚਣ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। ਵੱਖ-ਵੱਖ ਟੈਕਸਟ-ਹੈਵੀ ਡਾਟਾਸੈਟਾਂ ਵਿੱਚ ਖੋਜ ਕਰੋ ਅਤੇ ਵੇਖੋ ਕਿ ਕੀ ਤੁਸੀਂ ਅਜਿਹੇ ਖੇਤਰਾਂ ਦੀ ਪਛਾਣ ਕਰ ਸਕਦੇ ਹੋ ਜੋ ਮਾਡਲ ਵਿੱਚ ਪੱਖਪਾਤ ਜਾਂ ਝੁਕਾਅ ਭਾਵਨਾ ਪੈਦਾ ਕਰ ਸਕਦੇ ਹਨ। +ਇਹ ਪਾਠ ਬਤਾਉਂਦਾ ਹੈ, ਜਿਵੇਂ ਅਸੀਂ ਪਿਛਲੇ ਪਾਠਾਂ ਵਿੱਚ ਵੇਖਿਆ, ਕਿ ਮੌਲਿਕ ਅਹੰਕਾਰ ਅਤੇ ਖਾਮੀਆਂ ਸਮਝਣ ਦੀਆਂ ਸਾਰੀਆਂ ਜਰੂਰੀਆਤਾਂ ਹਨ ਜੋ ਕਿਸੇ ਡਾਟਾ ਉੱਤੇ ਅਪਰੇਸ਼ਨ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਬਣਾਉਂਦੀਆਂ ਹਨ। ਖਾਸ ਕਰਕੇ ਲਿਖਤੀ ਡਾਟਾ ਦੀ ਵੱਡੀ ਸੂਚਨਾ ਧਿਆਨ ਨਾਲ ਜਾਨਚਣੀ ਲੋੜੀਂਦੀ ਹੈ। ਵੱਖ-ਵੱਖ ਲਿਖਤ ਦਰਬਾਰ ਡੈਟਾਸੈਟਾਂ ਵਿੱਚ ਖੋਜ ਕਰੋ ਅਤੇ ਵੇਖੋ ਕਿ ਤੁਸੀਂ ਕਿਸੇ ਇਲਾਕੇ ਦੀ ਪਛਾਣ ਕਰ ਸਕਦੇ ਹੋ ਜਿੱਥੇ ਕਿਸੇ ਮਾਡਲ ਵਿੱਚ ਪੱਖਪਾਤ ਜਾਂ ਤ੍ਰੁੱਟੀ ਵਾਲੀ ਭਾਵਨਾ ਛੁਪ ਸਕਦੀ ਹੈ। + +## [ਪਾਠ-ਪਿਛੋਕੜ ਕ્વਿਜ़](https://ff-quizzes.netlify.app/en/ml/) + +## ਸਮੀਖਿਆ ਅਤੇ ਖੁਦ ਅਧਿਐਨ -## [ਪੋਸਟ-ਪਾਠ ਕਵਿਜ਼](https://ff-quizzes.netlify.app/en/ml/) +[ਇਸ NLP 'ਤੇ ਲਰਨਿੰਗ ਪਾਥ](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77952-leestott) ਦੀ ਵਰਤੋਂ ਕਰੋ ਜੋ ਬੋਲਣ ਅਤੇ ਲਿਖਤ-ਭਾਰੀ ਮਾਡਲ ਬਣਾਉਣ ਸਮੇਂ ਅਜ਼ਮਾਉਣ ਲਈ ਸੰਦ ਦਿਖਾਉਂਦਾ ਹੈ। -## ਸਮੀਖਾ ਅਤੇ ਸਵੈ-ਅਧਿਐਨ +## ਅਸਾਈਨਮੈਂਟ -[ਇਹ NLP ਲਰਨਿੰਗ ਪਾਥ](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77952 +[NLTK](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/6-NLP/5-Hotel-Reviews-2/README.md b/translations/pa/6-NLP/5-Hotel-Reviews-2/README.md index 7af0d461b..0b6f9b181 100644 --- a/translations/pa/6-NLP/5-Hotel-Reviews-2/README.md +++ b/translations/pa/6-NLP/5-Hotel-Reviews-2/README.md @@ -1,36 +1,36 @@ -# ਹੋਟਲ ਰਿਵਿਊਜ਼ ਨਾਲ ਭਾਵਨਾਤਮਕ ਵਿਸ਼ਲੇਸ਼ਣ +# ਹੋਟਲ ਸਮੀਖਿਆਵਾਂ ਨਾਲ ਭਾਵਨਾ ਵਿਸ਼ਲੇਸ਼ਣ -ਹੁਣ ਜਦੋਂ ਤੁਸੀਂ ਡਾਟਾਸੈਟ ਨੂੰ ਵਿਸਤਾਰ ਵਿੱਚ ਖੰਗਾਲ ਲਿਆ ਹੈ, ਤਾਂ ਕਾਲਮਾਂ ਨੂੰ ਫਿਲਟਰ ਕਰਨ ਅਤੇ ਹੋਟਲਾਂ ਬਾਰੇ ਨਵੇਂ ਅੰਤਰਦ੍ਰਿਸ਼ਟੀ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਡਾਟਾਸੈਟ 'ਤੇ NLP ਤਕਨੀਕਾਂ ਦੀ ਵਰਤੋਂ ਕਰਨ ਦਾ ਸਮਾਂ ਹੈ। +ਹੁਣ ਜਦੋਂ ਤੁਸੀਂ ਡੇਟਾਸੈੱਟ ਨੂੰ ਵਿਸਥਾਰ ਨਾਲ ਖੰਗਾਲ ਲਿਆ ਹੈ, ਹੁਣ ਕਾਲਮਾਂ ਨੂੰ ਫਿਲਟਰ ਕਰਨ ਦਾ ਸਮਾਂ ਹੈ ਅਤੇ ਫਿਰ ਡੇਟਾਸੈੱਟ 'ਤੇ NLP ਤਕਨੀਕਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਹੋਟਲਾਂ ਬਾਰੇ ਨਵੇਂ ਅੰਤਰਦ੍ਰਿਸ਼ਟੀ ਪ੍ਰਾਪਤ ਕਰੋ। ## [ਪ੍ਰੀ-ਲੈਕਚਰ ਕਵਿਜ਼](https://ff-quizzes.netlify.app/en/ml/) -### ਫਿਲਟਰਿੰਗ ਅਤੇ ਭਾਵਨਾਤਮਕ ਵਿਸ਼ਲੇਸ਼ਣ ਕਾਰਵਾਈਆਂ +### ਫਿਲਟਰਿੰਗ ਅਤੇ ਭਾਵਨਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਾਰਜ -ਜਿਵੇਂ ਤੁਸੀਂ ਸ਼ਾਇਦ ਧਿਆਨ ਦਿੱਤਾ ਹੋਵੇਗਾ, ਡਾਟਾਸੈਟ ਵਿੱਚ ਕੁਝ ਸਮੱਸਿਆਵਾਂ ਹਨ। ਕੁਝ ਕਾਲਮ ਬੇਕਾਰ ਜਾਣਕਾਰੀ ਨਾਲ ਭਰੇ ਹੋਏ ਹਨ, ਹੋਰ ਗਲਤ ਲੱਗਦੇ ਹਨ। ਜੇ ਉਹ ਸਹੀ ਹਨ, ਤਾਂ ਇਹ ਸਪਸ਼ਟ ਨਹੀਂ ਹੈ ਕਿ ਉਹ ਕਿਵੇਂ ਗਣਨਾ ਕੀਤੇ ਗਏ ਸਨ, ਅਤੇ ਤੁਹਾਡੇ ਆਪਣੇ ਗਣਨਾਵਾਂ ਦੁਆਰਾ ਜਵਾਬਾਂ ਨੂੰ ਸਵੈ-ਨਿਰਧਾਰਿਤ ਤੌਰ 'ਤੇ ਪ੍ਰਮਾਣਿਤ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ। +ਜਿਵੇਂ ਕਿ ਤੁਸੀਂ ਸੰਭਵਤ: ਨੋਟਿਸ ਕੀਤਾ ਹੈ, ਡੇਟਾਸੈੱਟ ਵਿੱਚ ਕੁਝ ਸਮੱਸਿਆਵਾਂ ਹਨ। ਕੁਝ ਕਾਲਮ ਬੇਕਾਰ ਜਾਣਕਾਰੀ ਨਾਲ ਭਰੇ ਹੋਏ ਹਨ, ਹੋਰ ਕਾਲਮ ਗਲਤ ਲੱਗਦੇ ਹਨ। ਜੇਕਰ ਉਹ ਸਹੀ ਹਨ, ਤਾਂ ਇਹ ਸਪਸ਼ਟ ਨਹੀ ਕਿ ਉਹ ਕਿਵੇਂ ਗਣਨਾ ਕੀਤੇ ਗਏ ਹਨ, ਅਤੇ ਜਵਾਬਾਂ ਨੂੰ ਆਪਣੇ ਆਪ ਸਵੈਤੰਤ੍ਰ ਤੌਰ 'ਤੇ ਜਾਂਚਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ। -## ਅਭਿਆਸ: ਥੋੜਾ ਹੋਰ ਡਾਟਾ ਪ੍ਰੋਸੈਸਿੰਗ +## ਅਭਿਆਸ: ਥੋੜ੍ਹੀ ਹੋਰ ਡੇਟਾ ਪ੍ਰੋਸੈਸਿੰਗ -ਡਾਟਾ ਨੂੰ ਹੋਰ ਸਾਫ਼ ਕਰੋ। ਉਹ ਕਾਲਮ ਸ਼ਾਮਲ ਕਰੋ ਜੋ ਬਾਅਦ ਵਿੱਚ ਲਾਭਦਾਇਕ ਹੋਣਗੇ, ਹੋਰ ਕਾਲਮਾਂ ਵਿੱਚ ਮੁੱਲਾਂ ਨੂੰ ਬਦਲੋ, ਅਤੇ ਕੁਝ ਕਾਲਮਾਂ ਨੂੰ ਪੂਰੀ ਤਰ੍ਹਾਂ ਹਟਾਓ। +ਡੇਟਾ ਨੂੰ ਥੋੜ੍ਹਾ ਹੋਰ ਸਾਫ ਕਰੋ। ਉਹ ਕਾਲਮ ਜੋ ਬਾਅਦ ਵਿੱਚ ਲਾਭਦਾਇਕ ਹੋਣਗੇ ਸ਼ਾਮਲ ਕਰੋ, ਹੋਰ ਕਾਲਮਾਂ ਵਿੱਚ ਮੁੱਲਾਂ ਨੂੰ ਬਦਲੋ, ਅਤੇ ਕੁਝ ਕਾਲਮਾਂ ਨੂੰ ਪੂਰੀ ਤਰ੍ਹਾਂ ਹਟਾ ਦਿਓ। -1. ਸ਼ੁਰੂਆਤੀ ਕਾਲਮ ਪ੍ਰੋਸੈਸਿੰਗ +1. ਮੁਢਲਾ ਕਾਲਮ ਪ੍ਰੋਸੈਸਿੰਗ 1. `lat` ਅਤੇ `lng` ਨੂੰ ਹਟਾਓ - 2. `Hotel_Address` ਮੁੱਲਾਂ ਨੂੰ ਹੇਠਾਂ ਦਿੱਤੇ ਮੁੱਲਾਂ ਨਾਲ ਬਦਲੋ (ਜੇ ਪਤਾ ਸ਼ਹਿਰ ਅਤੇ ਦੇਸ਼ ਦੇ ਨਾਮ ਨੂੰ ਸ਼ਾਮਲ ਕਰਦਾ ਹੈ, ਤਾਂ ਇਸਨੂੰ ਸਿਰਫ਼ ਸ਼ਹਿਰ ਅਤੇ ਦੇਸ਼ ਵਿੱਚ ਬਦਲੋ): + 2. `Hotel_Address` ਦੇ ਮੁੱਲਾਂ ਨੂੰ ਹੇਠ ਲਿਖੇ ਮੁੱਲਾਂ ਨਾਲ ਬਦਲੋ (ਜੇ ਪਤਾ ਵਿੱਚ ਸ਼ਹਿਰ ਅਤੇ ਦੇਸ਼ ਦੋਹਾਂ ਸ਼ਾਮਲ ਹਨ, ਤਾਂ ਇਹ ਸਿਰਫ਼ ਸ਼ਹਿਰ ਅਤੇ ਦੇਸ਼ 'ਤੇ ਬਦਲੋ). - ਇਹ ਡਾਟਾਸੈਟ ਵਿੱਚ ਸਿਰਫ਼ ਇਹ ਸ਼ਹਿਰ ਅਤੇ ਦੇਸ਼ ਹਨ: + ਇਹ ਡੇਟਾਸੈੱਟ ਵਿੱਚ ਮੌਜੂਦ ਸਿਰਫ਼ ਸ਼ਹਿਰ ਅਤੇ ਦੇਸ਼ ਹਨ: - ਐਮਸਟਰਡਮ, ਨੀਦਰਲੈਂਡ + ਐਮਸਟਰਡੈਮ, ਨੀਦਰਲੈਂਡ - ਬਾਰਸਲੋਨਾ, ਸਪੇਨ + ਬਾਰਸੀਲੋਨਾ, ਸਪੇਨ ਲੰਡਨ, ਯੂਨਾਈਟਡ ਕਿੰਗਡਮ ਮਿਲਾਨ, ਇਟਲੀ - ਪੈਰਿਸ, ਫਰਾਂਸ + ਪੈਰਿਸ, ਫ਼੍ਰਾਂਸ - ਵੀਅਨਾ, ਆਸਟਰੀਆ + ਵੀਨਾ, ਆਸਟਰੀਆ ```python def replace_address(row): @@ -47,13 +47,13 @@ elif "Vienna" in row["Hotel_Address"]: return "Vienna, Austria" - # Replace all the addresses with a shortened, more useful form + # ਸਾਰਿਆਂ ਪਤੇ ਛੋਟੀ ਤੇ ਵੱਧ ਉਪਯੋਗੀ ਰੂਪ ਵਿੱਚ ਬਦਲੋ df["Hotel_Address"] = df.apply(replace_address, axis = 1) - # The sum of the value_counts() should add up to the total number of reviews + # value_counts() ਦਾ ਜੋੜ ਸਮਫ਼ਲ ਸਕਦਾ ਹੈ ਕੁੱਲ ਸਮੀਖਿਆਵਾਂ ਦੀ ਗਿਣਤੀ ਦੇ ਬਰਾਬਰ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ print(df["Hotel_Address"].value_counts()) ``` - ਹੁਣ ਤੁਸੀਂ ਦੇਸ਼ ਪੱਧਰ ਦਾ ਡਾਟਾ ਪੁੱਛ ਸਕਦੇ ਹੋ: + ਹੁਣ ਤੁਸੀਂ ਦੇਸ਼ ਪੱਧਰੀ ਡਾਟਾ ਪੁੱਛਗਿੱਛ ਕਰ ਸਕਦੇ ਹੋ: ```python display(df.groupby("Hotel_Address").agg({"Hotel_Name": "nunique"})) @@ -61,40 +61,40 @@ | Hotel_Address | Hotel_Name | | :--------------------- | :--------: | - | Amsterdam, Netherlands | 105 | - | Barcelona, Spain | 211 | - | London, United Kingdom | 400 | - | Milan, Italy | 162 | - | Paris, France | 458 | - | Vienna, Austria | 158 | + | ਐਮਸਟਰਡੈਮ, ਨੀਦਰਲੈਂਡ | 105 | + | ਬਾਰਸੀਲੋਨਾ, ਸਪੇਨ | 211 | + | ਲੰਡਨ, ਯੂਨਾਈਟਡ ਕਿੰਗਡਮ | 400 | + | ਮਿਲਾਨ, ਇਟਲੀ | 162 | + | ਪੈਰਿਸ, ਫ਼੍ਰਾਂਸ | 458 | + | ਵੀਨਾ, ਆਸਟਰੀਆ | 158 | -2. ਹੋਟਲ ਮੈਟਾ-ਰਿਵਿਊ ਕਾਲਮਾਂ ਨੂੰ ਪ੍ਰੋਸੈਸ ਕਰੋ +2. ਹੋਟਲ ਮੈਟਾ-ਸਮੀਖਿਆ ਕਾਲਮਾਂ ਨੂੰ ਪ੍ਰੋਸੈਸ ਕਰੋ 1. `Additional_Number_of_Scoring` ਨੂੰ ਹਟਾਓ - 1. `Total_Number_of_Reviews` ਨੂੰ ਉਸ ਹੋਟਲ ਲਈ ਡਾਟਾਸੈਟ ਵਿੱਚ ਅਸਲ ਵਿੱਚ ਮੌਜੂਦ ਰਿਵਿਊਜ਼ ਦੀ ਕੁੱਲ ਗਿਣਤੀ ਨਾਲ ਬਦਲੋ + 1. `Total_Number_of_Reviews` ਨੂੰ ਉਸ ਸਕੋਰ ਨਾਲ ਬਦਲੋ ਜੋ ਹਕੀਕਤ ਵਿੱਚ ਡੇਟਾਸੈੱਟ ਵਿੱਚ ਉਸ ਹੋਟਲ ਦੀ ਸਮੀਖਿਆ ਦੀ ਕੁੱਲ ਸੰਖਿਆ ਹੈ - 1. `Average_Score` ਨੂੰ ਸਾਡੇ ਆਪਣੇ ਗਣਨਾ ਕੀਤੇ ਸਕੋਰ ਨਾਲ ਬਦਲੋ + 1. `Average_Score` ਨੂੰ ਆਪਣੀ ਗਣਨਾ ਕੀਤੀ ਗਈ ਸਕੋਰ ਨਾਲ ਬਦਲੋ ```python - # Drop `Additional_Number_of_Scoring` + # `Additional_Number_of_Scoring` ਨੂੰ ਹਟਾਓ df.drop(["Additional_Number_of_Scoring"], axis = 1, inplace=True) - # Replace `Total_Number_of_Reviews` and `Average_Score` with our own calculated values + # `Total_Number_of_Reviews` ਅਤੇ `Average_Score` ਨੂੰ ਸਾਡੇ ਆਪਣੇ ਗਣਨਾ ਕੀਤੇ ਮੁੱਲਾਂ ਨਾਲ ਬਦਲੋ df.Total_Number_of_Reviews = df.groupby('Hotel_Name').transform('count') df.Average_Score = round(df.groupby('Hotel_Name').Reviewer_Score.transform('mean'), 1) ``` -3. ਰਿਵਿਊ ਕਾਲਮਾਂ ਨੂੰ ਪ੍ਰੋਸੈਸ ਕਰੋ +3. ਸਮੀਖਿਆ ਕਾਲਮਾਂ ਨੂੰ ਪ੍ਰੋਸੈਸ ਕਰੋ 1. `Review_Total_Negative_Word_Counts`, `Review_Total_Positive_Word_Counts`, `Review_Date` ਅਤੇ `days_since_review` ਨੂੰ ਹਟਾਓ - 2. `Reviewer_Score`, `Negative_Review`, ਅਤੇ `Positive_Review` ਨੂੰ ਜਿਵੇਂ ਦੇ ਤਿਵੇਂ ਰੱਖੋ, + 2. `Reviewer_Score`, `Negative_Review`, ਅਤੇ `Positive_Review` ਨੂੰ ਜਿਵੇਂ ਹਨ ਰੱਖੋ, - 3. `Tags` ਨੂੰ ਅਜੇ ਲਈ ਰੱਖੋ + 3. ਅਜੇ ਲਈ `Tags` ਨੂੰ ਰੱਖੋ - - ਅਗਲੇ ਭਾਗ ਵਿੱਚ ਟੈਗਾਂ 'ਤੇ ਕੁਝ ਵਾਧੂ ਫਿਲਟਰਿੰਗ ਕਾਰਵਾਈਆਂ ਕੀਤੀਆਂ ਜਾਣਗੀਆਂ ਅਤੇ ਫਿਰ ਟੈਗਾਂ ਨੂੰ ਹਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ + - ਅਗਲੇ ਭਾਗ ਵਿੱਚ ਅਸੀਂ ਟੈਗਾਂ 'ਤੇ ਹੋਰ ਫਿਲਟਰਿੰਗ ਕਾਰਜ ਕਰਾਂਗੇ ਅਤੇ ਫਿਰ ਟੈਗ ਹਟਾ ਦਿੱਤੇ ਜਾਣਗੇ -4. ਰਿਵਿਊਅਰ ਕਾਲਮਾਂ ਨੂੰ ਪ੍ਰੋਸੈਸ ਕਰੋ +4. ਸਮੀਖਿਆਕਾਰ ਕਾਲਮਾਂ ਨੂੰ ਪ੍ਰੋਸੈਸ ਕਰੋ 1. `Total_Number_of_Reviews_Reviewer_Has_Given` ਨੂੰ ਹਟਾਓ @@ -102,59 +102,226 @@ ### ਟੈਗ ਕਾਲਮ -`Tag` ਕਾਲਮ ਸਮੱਸਿਆਜਨਕ ਹੈ ਕਿਉਂਕਿ ਇਹ ਇੱਕ ਸੂਚੀ (ਟੈਕਸਟ ਰੂਪ ਵਿੱਚ) ਹੈ ਜੋ ਕਾਲਮ ਵਿੱਚ ਸਟੋਰ ਕੀਤੀ ਗਈ ਹੈ। ਦੁਖਦਾਈ ਗੱਲ ਇਹ ਹੈ ਕਿ ਇਸ ਕਾਲਮ ਵਿੱਚ ਉਪ-ਵਿਭਾਗਾਂ ਦੀ ਕ੍ਰਮ ਅਤੇ ਗਿਣਤੀ ਹਮੇਸ਼ਾ ਇੱਕੋ ਜਿਹੀ ਨਹੀਂ ਹੁੰਦੀ। ਇੱਕ ਮਨੁੱਖ ਲਈ ਸਹੀ ਵਾਕਾਂਸ਼ਾਂ ਦੀ ਪਛਾਣ ਕਰਨਾ ਮੁਸ਼ਕਲ ਹੈ, ਕਿਉਂਕਿ 515,000 ਪੰਕਤਾਂ ਹਨ, ਅਤੇ 1427 ਹੋਟਲ ਹਨ, ਅਤੇ ਹਰ ਇੱਕ ਵਿੱਚ ਰਿਵਿਊਅਰ ਦੁਆਰਾ ਚੁਣੇ ਗਏ ਵਿਕਲਪਾਂ ਵਿੱਚ ਥੋੜ੍ਹਾ ਅੰਤਰ ਹੁੰਦਾ ਹੈ। ਇਹ ਜਿੱਥੇ NLP ਮਦਦਗਾਰ ਹੁੰਦਾ ਹੈ। ਤੁਸੀਂ ਟੈਕਸਟ ਨੂੰ ਸਕੈਨ ਕਰ ਸਕਦੇ ਹੋ ਅਤੇ ਸਭ ਤੋਂ ਆਮ ਵਾਕਾਂਸ਼ਾਂ ਨੂੰ ਲੱਭ ਸਕਦੇ ਹੋ, ਅਤੇ ਉਨ੍ਹਾਂ ਦੀ ਗਿਣਤੀ ਕਰ ਸਕਦੇ ਹੋ। +`Tag` ਕਾਲਮ ਸਮੱਸਿਆ ਵਾਲਾ ਹੈ ਕਿਉਂਕਿ ਇਹ ਇੱਕ ਸੂਚੀ ਹੈ (ਪਾਠ ਰੂਪ ਵਿੱਚ) ਜੋ ਕਾਲਮ ਵਿੱਚ ਸਟੋਰ ਕੀਤੀ ਗਈ ਹੈ। ਬਦਕਿਸਮਤੀ ਨਾਲ ਇਸ ਕਾਲਮ ਵਿੱਚ ਉੱਪ-ਭਾਗਾਂ ਦਾ ਕ੍ਰਮ ਅਤੇ ਗਿਣਤੀ ਹਮੇਸ਼ਾਂ ਇਕੋ ਜਿਹੀ ਨਹੀਂ ਹੁੰਦੀ। ਇਹ ਮਨੁੱਖ ਲਈ ਸਹੀ ਵਾਕਾਂਸ਼ਾਂ ਦੀ ਪਹਚਾਣ ਕਰਨਾ ਮੁਸ਼ਕਲ ਬਣਾਉਂਦਾ ਹੈ, ਕਿਉਂਕਿ 515,000 ਕਤਾਰਾਂ ਅਤੇ 1427 ਹੋਟਲ ਹਨ, ਅਤੇ ਹਰ ਇੱਕ ਸਮੀਖਿਆਕਾਰ ਵੱਖ-ਵੱਖ ਵਿਕਲਪ ਚੁਣ ਸਕਦਾ ਹੈ। ਇਹੀ NLP ਦਾ ਜੋਸ਼ ਹੈ। ਤੁਸੀਂ ਪਾਠ ਨੂੰ ਸਕੈਨ ਕਰਕੇ ਸਭ ਤੋਂ ਆਮ ਵਾਕਾਂਸ਼ ਲੱਭ ਸਕਦੇ ਹੋ ਅਤੇ ਉਨ੍ਹਾਂ ਦੀ ਗਿਣਤੀ ਕਰ ਸਕਦੇ ਹੋ। -ਦੁਖਦਾਈ ਗੱਲ ਇਹ ਹੈ ਕਿ ਸਾਨੂੰ ਸਿਰਫ਼ ਇੱਕ-ਸ਼ਬਦ ਵਾਲੇ ਟੈਗਾਂ ਵਿੱਚ ਦਿਲਚਸਪੀ ਨਹੀਂ ਹੈ, ਸਗੋਂ ਬਹੁ-ਸ਼ਬਦ ਵਾਲੇ ਵਾਕਾਂਸ਼ਾਂ ਵਿੱਚ (ਜਿਵੇਂ *Business trip*)। ਇਸ ਕਦਰ ਡਾਟਾ (6762646 ਸ਼ਬਦ) 'ਤੇ ਬਹੁ-ਸ਼ਬਦ ਵਾਲੇ ਫ੍ਰੀਕਵੈਂਸੀ ਡਿਸਟ੍ਰੀਬਿਊਸ਼ਨ ਐਲਗੋਰਿਦਮ ਨੂੰ ਚਲਾਉਣਾ ਬਹੁਤ ਜ਼ਿਆਦਾ ਸਮਾਂ ਲੈ ਸਕਦਾ ਹੈ, ਪਰ ਡਾਟਾ ਨੂੰ ਦੇਖਣ ਤੋਂ ਬਿਨਾਂ, ਇਹ ਲਗਦਾ ਹੈ ਕਿ ਇਹ ਇੱਕ ਜ਼ਰੂਰੀ ਖਰਚਾ ਹੈ। ਇਹ ਜਿੱਥੇ ਖੋਜੀ ਡਾਟਾ ਵਿਸ਼ਲੇਸ਼ਣ ਲਾਭਦਾਇਕ ਹੁੰਦਾ ਹੈ, ਕਿਉਂਕਿ ਤੁਸੀਂ ਟੈਗਾਂ ਦਾ ਨਮੂਨਾ ਦੇਖਿਆ ਹੈ ਜਿਵੇਂ `[' Business trip ', ' Solo traveler ', ' Single Room ', ' Stayed 5 nights ', ' Submitted from a mobile device ']`, ਤੁਸੀਂ ਪੁੱਛਣਾ ਸ਼ੁਰੂ ਕਰ ਸਕਦੇ ਹੋ ਕਿ ਕੀ ਇਹ ਸੰਭਵ ਹੈ ਕਿ ਤੁਸੀਂ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ ਪ੍ਰੋਸੈਸਿੰਗ ਨੂੰ ਬਹੁਤ ਘਟਾ ਸਕਦੇ ਹੋ। ਖੁਸ਼ਕਿਸਮਤੀ ਨਾਲ, ਇਹ ਸੰਭਵ ਹੈ - ਪਰ ਪਹਿਲਾਂ ਤੁਹਾਨੂੰ ਦਿਲਚਸਪੀ ਵਾਲੇ ਟੈਗਾਂ ਨੂੰ ਪਛਾਣ ਕਰਨ ਲਈ ਕੁਝ ਕਦਮਾਂ ਦੀ ਪਾਲਣਾ ਕਰਨ ਦੀ ਜ਼ਰੂਰਤ ਹੈ। +ਬਦਕਿਸਮਤੀ ਨਾਲ, ਅਸੀਂ ਇੱਕ-ਸ਼ਬਦਾਂ ਵਿੱਚ ਦਿਲਚਸਪੀ ਨਹੀਂ ਰੱਖਦੇ, ਪਰ ਬਹੁ-ਸ਼ਬਦੀ ਵਾਕਾਂਸ਼ਾਂ ਵਿੱਚ (ਜਿਵੇਂ ਕਿ *ਬਿਜ਼ਨੇਸ ਟ੍ਰਿਪ*)। ਇਸ ਕਦਰ ਡਾਟਾ (6762646 ਸ਼ਬਦ) 'ਤੇ ਬਹੁ-ਸ਼ਬਦ ਫ੍ਰੀਕਵੈਂਸੀ ਵਿਤਰਨ ਅਲਗੋਰਿਦਮ ਚਲਾਉਣਾ ਬਹੁਤ ਸਮਾਂ ਲੈ ਸਕਦਾ ਹੈ, ਪਰ ਡਾਟਾ ਦੇਖਣ ਤੋਂ ਬਿਨਾਂ ਇਹ ਲੋੜੀਂਦਾ ਖਰਚਾ ਲੱਗਦਾ ਹੈ। ਇੱਥੇ ਖੋਜ-ਪਖ਼ਤ ਡਾਟਾ ਵਿਸ਼ਲੇਸ਼ਣ ਮਦਦਗਾਰ ਹੋ ਜਾਂਦੀ ਹੈ, ਕਿਉਂਕਿ ਤੁਸੀਂ ਟੈਗਾਂ ਦਾ ਨਮੂਨਾ ਦੇਖ ਚੁੱਕੇ ਹੋ, ਜਿਵੇਂ ਕਿ `[' Business trip ', ' Solo traveler ', ' Single Room ', ' Stayed 5 nights ', ' Submitted from a mobile device ']` , ਤੁਸੀਂ ਪੁੱਛ ਸਕਦੇ ਹੋ ਕਿ ਕੀ ਪ੍ਰੋਸੈਸਿੰਗ ਨੂੰ ਬਹੁਤ ਘਟਾਇਆ ਜਾ ਸਕਦਾ ਹੈ। ਖੁਸ਼ਕਿਸਮਤੀ ਨਾਲ, ਇਹ ਸੰਭਵ ਹੈ - ਪਰ ਪਹਿਲਾਂ ਤੁਹਾਨੂੰ ਟੈਗਾਂ ਦੀ ਪਛਾਣ ਲਈ ਕੁਝ ਕਦਮ ਚੁੱਕਣੇ ਪੈਣਗੇ। ### ਟੈਗਾਂ ਨੂੰ ਫਿਲਟਰ ਕਰਨਾ -ਯਾਦ ਰੱਖੋ ਕਿ ਡਾਟਾਸੈਟ ਦਾ ਉਦੇਸ਼ ਭਾਵਨਾਤਮਕ ਵਿਸ਼ਲੇਸ਼ਣ ਅਤੇ ਕਾਲਮਾਂ ਨੂੰ ਸ਼ਾਮਲ ਕਰਨਾ ਹੈ ਜੋ ਤੁਹਾਨੂੰ ਸਭ ਤੋਂ ਵਧੀਆ ਹੋਟਲ ਚੁਣਨ ਵਿੱਚ ਮਦਦ ਕਰੇਗਾ (ਤੁਹਾਡੇ ਲਈ ਜਾਂ ਸ਼ਾਇਦ ਇੱਕ ਕਲਾਇੰਟ ਜੋ ਤੁਹਾਨੂੰ ਹੋਟਲ ਰਿਕਮੈਂਡੇਸ਼ਨ ਬੋਟ ਬਣਾਉਣ ਲਈ ਕਹਿ ਰਿਹਾ ਹੈ)। ਤੁਹਾਨੂੰ ਆਪਣੇ ਆਪ ਨੂੰ ਪੁੱਛਣ ਦੀ ਜ਼ਰੂਰਤ ਹੈ ਕਿ ਕੀ ਟੈਗਾਂ ਅੰਤਮ ਡਾਟਾਸੈਟ ਵਿੱਚ ਲਾਭਦਾਇਕ ਹਨ ਜਾਂ ਨਹੀਂ। ਇੱਥੇ ਇੱਕ ਵਿਆਖਿਆ ਹੈ (ਜੇ ਤੁਹਾਨੂੰ ਹੋਰ ਕਾਰਨਾਂ ਲਈ ਡਾਟਾਸੈਟ ਦੀ ਜ਼ਰੂਰਤ ਹੋਵੇ ਤਾਂ ਵੱਖ-ਵੱਖ ਟੈਗਾਂ ਨੂੰ ਚੁਣਿਆ ਜਾ ਸਕਦਾ ਹੈ): +ਯਾਦ ਰੱਖੋ ਕਿ ਡੇਟਾਸੈੱਟ ਦਾ ਮਕਸਦ ਭਾਵਨਾ ਅਤੇ ਕਾਲਮ ਸ਼ਾਮਲ ਕਰਨਾ ਹੈ ਜੋ ਤੁਹਾਨੂੰ ਸਭ ਤੋਂ ਵਧੀਆ ਹੋਟਲ ਚੁਣਨ ਵਿੱਚ ਮਦਦ ਕਰੇਗਾ (ਚਾਹੇ ਆਪਣੇ ਲਈ ਹੋਵੇ ਜਾਂ ਕਿਸੇ ਕਲਾਇੰਟ ਲਈ ਜੋ ਤੁਹਾਨੂੰ ਹੋਟਲ ਸਿਫਾਰਸ਼ ਬੋਟ ਬਣਾਉਣ ਲਈ ਅਸਾਈਨ ਕਰਦਾ ਹੋਵੇ)। ਤੁਹਾਨੂੰ ਆਪਣੇ ਆਪ ਨਾਲ ਪੁੱਛਣਾ ਹੈ ਕਿ ਕੀ ਟੈਗ ਅੰਤਿਮ ਡੇਟਾਸੈੱਟ ਵਿੱਚ ਲਾਭਦਾਇਕ ਹਨ ਜਾਂ ਨਹੀਂ। ਇੱਥੇ ਇੱਕ ਵਿਆਖਿਆ ਹੈ (ਜੇ ਤੁਸੀਂ ਡੇਟਾਸੈੱਟ ਨੂੰ ਹੋਰ ਕਾਰਨਾਂ ਲਈ ਚਾਹੁੰਦੇ ਹੋ ਤਾਂ ਵੱਖਰੇ ਟੈਗ ਸ਼ਾਮਲ/ਬਾਹਰ ਰਹਿ ਸਕਦੇ ਹਨ): -1. ਯਾਤਰਾ ਦੀ ਕਿਸਮ ਸਬੰਧਿਤ ਹੈ, ਅਤੇ ਇਹ ਰਹੇਗਾ -2. ਮਹਿਮਾਨ ਸਮੂਹ ਦੀ ਕਿਸਮ ਮਹੱਤਵਪੂਰਨ ਹੈ, ਅਤੇ ਇਹ ਰਹੇਗਾ -3. ਕਮਰੇ, ਸੂਟ, ਜਾਂ ਸਟੂਡੀਓ ਦੀ ਕਿਸਮ ਜਿਸ ਵਿੱਚ ਮਹਿਮਾਨ ਰਹੇ, ਅਸੰਬੰਧਿਤ ਹੈ (ਸਾਰੇ ਹੋਟਲਾਂ ਵਿੱਚ ਮੁਢਲੀ ਤੌਰ 'ਤੇ ਇੱਕੋ ਜਿਹੇ ਕਮਰੇ ਹੁੰਦੇ ਹਨ) -4. ਜਿਹੜੇ ਡਿਵਾਈਸ 'ਤੇ ਰਿਵਿਊ ਸਬਮਿਟ ਕੀਤਾ ਗਿਆ ਸੀ, ਅਸੰਬੰਧਿਤ ਹੈ -5. ਰਾਤਾਂ ਦੀ ਗਿਣਤੀ ਜਿਨ੍ਹਾਂ ਲਈ ਰਿਵਿਊਅਰ ਰਿਹਾ *ਸ਼ਾਇਦ* ਸਬੰਧਿਤ ਹੋ ਸਕਦਾ ਹੈ ਜੇ ਤੁਸੀਂ ਲੰਬੇ ਰਹਿਣ ਨੂੰ ਹੋਟਲ ਨੂੰ ਵਧੇਰੇ ਪਸੰਦ ਕਰਨ ਨਾਲ ਜੋੜਦੇ ਹੋ, ਪਰ ਇਹ ਇੱਕ ਖਿੱਚ ਹੈ, ਅਤੇ ਸ਼ਾਇਦ ਅਸੰਬੰਧਿਤ +1. ਯਾਤਰਾ ਦੀ ਕਿਸਮ ਸਬੰਧਤ ਹੈ, ਅਤੇ ਇਹ ਰਹਿਣਾ ਚਾਹੀਦਾ ਹੈ +2. ਮਹਿਮਾਨ ਸਮੂਹ ਦੀ ਕਿਸਮ ਮਹੱਤਵਪੂਰਨ ਹੈ, ਅਤੇ ਇਹ ਰਹਿਣਾ ਚਾਹੀਦਾ ਹੈ +3. ਕਮਰਾ, ਸ੍ਯੂਟ ਜਾਂ ਸਟੂਡੀਓ ਦੀ ਕਿਸਮ ਜਿਸ ਵਿੱਚ ਮਹਿਮਾਨ ਠਹਿਰਿਆ ਹੈ, ਅਣਗੌਰਤਯੋਗ ਹੈ (ਸਭ ਹੋਟਲਾਂ ਦੇ ਕਮਰੇ ਬੁਨਿਆਦੀ ਤੌਰ 'ਤੇ ਸਮਾਨ ਹੁੰਦੇ ਹਨ) +4. ਜਿਸ ਉਪਕਰਣ 'ਤੇ ਸਮੀਖਿਆ ਜਮ੍ਹਾਂ ਕੀਤੀ ਗਈ ਹੈ, ਅਹਿਮ ਨਹੀਂ ਹੈ +5. ਸਮੀਖਿਆਕਾਰ ਨੇ ਕਿੰਨੇ ਰਾਤਾਂ ਰਹਿਣ ਲਈ ਬਚਾਇਆ ਹੈ *ਸੰਭਵ* ਹੈ ਕਿ ਲੰਬੇ ਸਮੇਂ ਰਿਹਾਇਸ਼ ਨਾਲ ਉਹ ਹੋਟਲ ਵਧੀਆ ਲੱਗਦਾ ਹੋਵੇ, ਪਰ ਇਹ ਅੰਦਾਜ਼ਾ ਹੀ ਹੈ, ਅਤੇ ਸੰਭਵਤ: ਗੈਰ-ਮਹੱਤਵਪੂਰਨ ਹੈ -ਸੰਖੇਪ ਵਿੱਚ, **2 ਕਿਸਮਾਂ ਦੇ ਟੈਗਾਂ ਨੂੰ ਰੱਖੋ ਅਤੇ ਹੋਰਾਂ ਨੂੰ ਹਟਾਓ**। +ਸੰਖੇਪ ਵਿੱਚ, **2 ਕਿਸਮ ਦੇ ਟੈਗ ਰੱਖੋ ਅਤੇ ਬਾਕੀ ਹਟਾ ਦਿਓ**। -ਸਭ ਤੋਂ ਪਹਿਲਾਂ, ਤੁਸੀਂ ਟੈਗਾਂ ਦੀ ਗਿਣਤੀ ਨਹੀਂ ਕਰਨਾ ਚਾਹੁੰਦੇ ਜਦੋਂ ਤੱਕ ਉਹ ਬਿਹਤਰ ਫਾਰਮੈਟ ਵਿੱਚ ਨਾ ਹੋਣ, ਇਸ ਲਈ ਇਸਦਾ ਮਤਲਬ ਹੈ ਚੌਰਸ ਬ੍ਰੈਕਟ ਅਤੇ ਕੋਟਸ ਨੂੰ ਹਟਾਉਣਾ। ਤੁਸੀਂ ਇਹ ਕਈ ਤਰੀਕਿਆਂ ਨਾਲ ਕਰ ਸਕਦੇ ਹੋ, ਪਰ ਤੁਸੀਂ ਸਭ ਤੋਂ ਤੇਜ਼ ਤਰੀਕੇ ਦੀ ਚਾਹਤ ਰੱਖਦੇ ਹੋ ਕਿਉਂਕਿ ਇਹ ਬਹੁਤ ਸਾਰੇ ਡਾਟਾ ਨੂੰ ਪ੍ਰੋਸੈਸ ਕਰਨ ਵਿੱਚ ਬਹੁਤ ਸਮਾਂ ਲੈ ਸਕਦਾ ਹੈ। ਖੁਸ਼ਕਿਸਮਤੀ ਨਾਲ, pandas ਵਿੱਚ ਇਹਨਾਂ ਕਦਮਾਂ ਵਿੱਚੋਂ ਹਰ ਇੱਕ ਨੂੰ ਕਰਨ ਦਾ ਇੱਕ ਆਸਾਨ ਤਰੀਕਾ ਹੈ। +ਪਹਿਲਾਂ, ਤੁਸੀਂ ਟੈਗਾਂ ਨੂੰ ਗਿਣਨਾ ਨਹੀਂ ਚਾਹੁੰਦੇ ਜਦ ਤੱਕ ਉਹ ਬਿਹਤਰ ਫਾਰਮੈਟ ਵਿੱਚ ਨਹੀਂ ਹੁੰਦੇ, ਇਸ ਦਾ ਅਰਥ ਹੈ ਵਰਗੇ ਬ੍ਰੈਕਟ ਅਤੇ ਕੋਟਸ ਨੂੰ ਹਟਾਉਣਾ। ਤੁਸੀਂ ਇਹ ਕਈ ਤਰੀਕਿਆਂ ਨਾਲ ਕਰ ਸਕਦੇ ਹੋ, ਪਰ ਤੁਹਾਨੂੰ ਸਭ ਤੋਂ ਤੇਜ਼ ਤਰੀਕਾ ਚਾਹੀਦਾ ਹੈ ਕਿਉਂਕਿ ਇਹ ਬਹੁਤ ਡੇਟਾ ਨੂੰ ਪ੍ਰੋਸੈਸ ਕਰਨਾ ਲੰਬਾ ਸਮਾਂ ਲੈ ਸਕਦਾ ਹੈ। ਖੁਸ਼ਕਿਸਮਤੀ ਨਾਲ, pandas ਨੇ ਹਰ ਇਹ ਕਦਮ ਕਰਨ ਦਾ ਆਸਾਨ ਤਰੀਕਾ ਦਿੱਤਾ ਹੈ। ```Python -# Remove opening and closing brackets +# ਖੁਲ੍ਹਣ ਅਤੇ ਬੰਦ ਕਰਨ ਵਾਲੇ ਕੋਸ਼ਿਕਾ ਹਟਾਓ df.Tags = df.Tags.str.strip("[']") -# remove all quotes too +# ਸਾਰੇ ਕੋਟੀ ਜਿਹੜੇ ਹਨ ਉਹ ਵੀ ਹਟਾਓ df.Tags = df.Tags.str.replace(" ', '", ",", regex = False) ``` -ਹਰ ਟੈਗ ਕੁਝ ਇਸ ਤਰ੍ਹਾਂ ਬਣ ਜਾਂਦਾ ਹੈ: `Business trip, Solo traveler, Single Room, Stayed 5 nights, Submitted from a mobile device`. +ਹਰ ਟੈਗ ਕੁਝ ਇਸ ਤਰ੍ਹਾਂ ਹੋ ਜਾਦਾ ਹੈ: `Business trip, Solo traveler, Single Room, Stayed 5 nights, Submitted from a mobile device`. + +ਅਗਲੇ ਕਦਮ ਵਿੱਚ ਸਾਨੂੰ ਇੱਕ ਸਮੱਸਿਆ ਮਿਲਦੀ ਹੈ। ਕੁਝ ਸਮੀਖਿਆਵਾਂ ਜਾਂ ਕਤਾਰਾਂ ਵਿੱਚ 5 ਕਾਲਮ ਹਨ, ਕੁਝ ਵਿੱਚ 3, ਕੁਝ ਵਿੱਚ 6। ਇਹ ਡੇਟਾਸੈੱਟ ਬਣਾਉਣ ਦਾ ਨਤੀਜਾ ਹੈ ਅਤੇ ਠੀਕ ਕਰਨਾ ਮੁਸ਼ਕਲ ਹੈ। ਤੁਸੀਂ ਹਰ ਵਾਕਾਂਸ਼ ਦੀ ਗਿਣਤੀ ਪ੍ਰਾਪਤ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ, ਪਰ ਉਹ ਵੱਖਰੇ ਕ੍ਰਮ ਵਿੱਚ ਹਰੇਕ ਸਮੀਖਿਆ ਵਿੱਚ ਹਨ, ਇਸ ਲਈ ਗਿਣਤੀ ਗਲਤ ਹੋ ਸਕਦੀ ਹੈ ਅਤੇ ਹੋਟਲ ਨੂੰ ਉਹ ਟੈਗ ਦਿੱਤਾ ਨਾ ਜਾਵੇ ਜੋ ਉਸਦਾ ਹੱਕਦਾਰ ਸੀ। + +ਇਸ ਦੀ ਬਜਾਏ ਤੁਸੀਂ ਵੱਖਰੇ ਕ੍ਰਮ ਦਾ ਫ਼ਾਇਦਾ ਚੁੱਕੋਗੇ, ਕਿਉਂਕਿ ਹਰ ਟੈਗ ਬਹੁ-ਸ਼ਬਦੀ ਹੈ ਪਰ ਕਮਾ ਨਾਲ ਵੀ ਵੱਖਰਾ ਕੀਤਾ ਗਿਆ ਹੈ! ਸਭ ਤੋਂ ਸੌਖਾ ਤਰੀਕਾ ਇਹ ਹੈ ਕਿ 6 ਅਸਥਾਈ ਕਾਲਮ ਬਣਾਓ ਜਿੱਥੇ ਹਰ ਟੈਗ ਉਸ ਕਾਲਮ ਵਿੱਚ ਪਾਇਆ ਜਾਵੇ ਜੋ ਉਸਦੀ ਕ੍ਰਮ ਅਨੁਸਾਰ ਹੋਵੇ। ਫਿਰ ਤੁਸੀਂ 6 ਕਾਲਮਾਂ ਨੂੰ ਇੱਕ ਵੱਡੇ ਕਾਲਮ ਵਿੱਚ ਜੋੜ ਸਕਦੇ ਹੋ ਅਤੇ `value_counts()` ਤਰੀਕਾ ਇਸ ਉਪਜ ਕਾਲਮ 'ਤੇ ਚਲਾ ਸਕਦੇ ਹੋ। ਇਸ ਨੂੰ ਪ੍ਰਿੰਟ ਕਰਨ 'ਤੇ ਤੁਸੀਂ ਵੇਖੋਗੇ ਕਿ 2428 ਯੂਨੀਕ ਟੈਗ ਹਨ। ਇੱਥੇ ਇੱਕ ਛੋਟਾ ਨਮੂਨਾ ਹੈ: + +| Tag | ਗਿਣਤੀ | +| ------------------------------ | ------ | +| Leisure trip | 417778 | +| Submitted from a mobile device | 307640 | +| Couple | 252294 | +| Stayed 1 night | 193645 | +| Stayed 2 nights | 133937 | +| Solo traveler | 108545 | +| Stayed 3 nights | 95821 | +| Business trip | 82939 | +| Group | 65392 | +| Family with young children | 61015 | +| Stayed 4 nights | 47817 | +| Double Room | 35207 | +| Standard Double Room | 32248 | +| Superior Double Room | 31393 | +| Family with older children | 26349 | +| Deluxe Double Room | 24823 | +| Double or Twin Room | 22393 | +| Stayed 5 nights | 20845 | +| Standard Double or Twin Room | 17483 | +| Classic Double Room | 16989 | +| Superior Double or Twin Room | 13570 | +| 2 rooms | 12393 | + +ਕੁਝ ਆਮ ਟੈਗ ਜਿਵੇਂ ਕਿ `Submitted from a mobile device` ਸਾਡੇ ਲਈ ਬੇਕਾਰ ਹਨ, ਇਸ ਲਈ ਇਹ ਗਿਣਤੀ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਉਹਨਾਂ ਨੂੰ ਹਟਾਣਾ ਸਮਰਥ ਸੂਝਵਾਨ ਕੰਮ ਹੋ ਸਕਦਾ ਹੈ, ਪਰ ਇਹ ਇੰਨਾ ਤੇਜ਼ ਕਾਰਜ ਹੈ ਕਿ ਤੁਸੀਂ ਉਨ੍ਹਾਂ ਨੂੰ ਛੱਡ ਕਰ ਅਣਡਿੱਠਾ ਕਰ ਸਕਦੇ ਹੋ। + +### ਰਹਿਣ ਸਮੇਂ ਦੇ ਟੈਗ ਹਟਾਉਣਾ + +ਇਹ ਟੈਗ ਹਟਾਉਣਾ ਪਹਿਲਾ ਕਦਮ ਹੈ, ਇਹ ਸਮੀਖਿਆ ਲਈ ਕੱਲ ਗਿਣਤੀ ਨੂੰ ਥੋੜ੍ਹਾ ਘਟਾਉਂਦਾ ਹੈ। ਧਿਆਨ ਦਿਓ ਕਿ ਤੁਸੀਂ ਡੇਟਾਸੈੱਟ ਵਿੱਚੋਂ इन्हें ਹਟਾ ਰਹੇ ਨਹੀਂ, ਸਿਰਫ ਗਿਣਤੀ/ਰੱਖਣ ਲਈ ਵਿਚਾਰ ਤੋਂ ਹਟਾ ਰਹੇ ਹੋ। + +| ਰਹਿਣ ਦੀ ਲੰਬਾਈ | ਗਿਣਤੀ | +| ---------------- | ------ | +| 1 ਰਾਤ ਰਹੀ | 193645 | +| 2 ਰਾਤਾਂ ਰਹੀਆਂ | 133937 | +| 3 ਰਾਤਾਂ ਰਹੀਆਂ | 95821 | +| 4 ਰਾਤਾਂ ਰਹੀਆਂ | 47817 | +| 5 ਰਾਤਾਂ ਰਹੀਆਂ | 20845 | +| 6 ਰਾਤਾਂ ਰਹੀਆਂ | 9776 | +| 7 ਰਾਤਾਂ ਰਹੀਆਂ | 7399 | +| 8 ਰਾਤਾਂ ਰਹੀਆਂ | 2502 | +| 9 ਰਾਤਾਂ ਰਹੀਆਂ | 1293 | +| ... | ... | + +ਕਮਰੇ, ਸਿੂਟ, ਸਟੂਡੀਓ, ਅਪਾਰਟਮੈਂਟਸ ਆਦਿ ਦੀ ਵੱਡੀ ਵੈਰਾਇਟੀ ਹੈ। ਉਹ ਸਭ ਲੱਗਭਗ ਇੱਕੋ ਜਿਹਾ ਮਤਲਬ ਰੱਖਦੇ ਹਨ ਅਤੇ ਤੁਹਾਡੇ ਲਈ ਅਣਗੌਰਤਯੋਗ ਹਨ, ਇਸ ਲਈ ਉਨ੍ਹਾਂ ਨੂੰ ਗਿਣਤੀ ਤੋਂ ਹਟਾ ਦਿਓ। + +| ਕਮਰੇ ਦੀ ਕਿਸਮ | ਗਿਣਤੀ | +| ----------------------------- | ----- | +| ਡਬਲ ਰੂਮ | 35207 | +| ਸਟੈਂਡਰਡ ਡਬਲ ਰੂਮ | 32248 | +| ਸੁਪਰੀਅਰ ਡਬਲ ਰੂਮ | 31393 | +| ਡੀਲਕਸ ਡਬਲ ਰੂਮ | 24823 | +| ਡਬਲ ਜਾਂ ਟਵਿਨ ਰੂਮ | 22393 | +| ਸਟੈਂਡਰਡ ਡਬਲ ਜਾਂ ਟਵਿਨ ਰੂਮ | 17483 | +| ਕਲਾਸਿਕ ਡਬਲ ਰੂਮ | 16989 | +| ਸੁਪਰੀਅਰ ਡਬਲ ਜਾਂ ਟਵਿਨ ਰੂਮ | 13570 | + +ਆਖ਼ਰੀ ਵਿੱਚ, ਅਤੇ ਇਹ ਖ਼ੁਸ਼ਨੁਮਾ ਗੱਲ ਹੈ (ਕਿਉਂਕਿ ਇਸ ਨੇ ਜ਼ਿਆਦਾ ਪ੍ਰੋਸੈਸਿੰਗ ਨਹੀਂ ਲਿਆ), ਤੁਹਾਨੂੰ ਹੇਠ ਲਿਖੇ *ਲਾਭਦਾਇਕ* ਟੈਗ ਮਿਲਣਗੇ: + +| ਟੈਗ | ਗਿਣਤੀ | +| --------------------------------------------- | ------ | +| ਲੇਜ਼ਰ ਟ੍ਰਿਪ | 417778 | +| ਜੋੜਾ | 252294 | +| ਇਕੱਲਾ ਸੈਲਾਨੀ | 108545 | +| ਬਿਜ਼ਨੇਸ ਟ੍ਰਿਪ | 82939 | +| ਸਮੂਹ (ਦੋਸਤਾਂ ਨਾਲ ਸੈਲਾਨੀ ਦੇ ਨਾਲ ਮਿਲਾ ਕੇ) | 67535 | +| ਛੋਟੇ ਬੱਚਿਆਂ ਵਾਲਾ ਪਰਿਵਾਰ | 61015 | +| ਵੱਡੇ ਬੱਚਿਆਂ ਵਾਲਾ ਪਰਿਵਾਰ | 26349 | +| ਪਾਲਤੂ ਜਾਨਵਰ ਨਾਲ | 1405 | + +ਤੁਸੀਂ ਇਹ ਦਲੀਲ ਦੇ ਸਕਦੇ ਹੋ ਕਿ `ਦੋਸਤਾਂ ਨਾਲ ਸੈਲਾਨੀ` ਮੁਲਨਿਆਮ ਕਰਨ ਯੋਗ ਹੈ `ਸਮੂਹ` ਦੇ ਬਰਾਬਰ ਹੈ, ਅਤੇ ਇਹ ਠੀਕ ਹੈ ਕਿ ਦੋਹਾਂ ਨੂੰ ਉਪਰ ਦਿੱਤਾ ਗਇਆ ਤਰੀਕਾ ਨਾਲ ਜੋੜ ਦਿੱਤਾ ਜਾਵੇ। ਸਹੀ ਟੈਗ ਪਹਚਾਣ ਕਰਨ ਲਈ ਕੋਡ [Tags notebook](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/1-notebook.ipynb) ਵਿੱਚ ਹੈ। + +ਅੰਤਿਮ ਕਦਮ ਇਹ ਹੈ ਕਿ ਹਰ ਇੱਕ ਟੈਗ ਲਈ ਨਵੇਂ ਕਾਲਮ ਬਣਾਓ। ਫਿਰ, ਹਰ ਸਮੀਖਿਆ ਕਤਾਰ ਲਈ, ਜੇਕਰ `Tag` ਕਾਲਮ ਕਿਸੇ ਨਵੇਂ ਕਾਲਮ ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਹੈ, ਤਾਂ 1 ਸ਼ਾਮਲ ਕਰੋ, ਨਹੀਂ ਤਾਂ 0 ਸ਼ਾਮਲ ਕਰੋ। ਅੰਤਿਮ ਨਤੀਜਾ ਇਹ ਹੋਵੇਗਾ ਕਿ ਕਿੰਨੇ ਸਮੀਖਿਆਕਾਰਾਂ ਨੇ ਇਸ ਹੋਟਲ ਨੂੰ ਚੁਣਾ (ਕੁੱਲ ਮਿਲਾ ਕੇ), ਜਿਵੇਂ ਤਬਬਰਣ ਬਿਜ਼ਨੇਸ ਬਨਾਮ ਖੇਡ-ਖੁਦਰਜੀ ਦੀ ਭੁਮਿਕਾ ਵਿੱਚ, ਜਾਂ ਪਾਲਤੂ ਲਿਜਾਣ ਲਈ, ਅਤੇ ਇਹ ਸਿਫਾਰਸ਼ ਕਰਨ ਸਮੇਂ ਮਦਦਗਾਰ ਜਾਣਕਾਰੀ ਹੈ। + +```python +# ਟੈਗਸ ਨੂੰ ਨਵੀਂ ਕਾਲਮਾਂ ਵਿੱਚ ਪ੍ਰਕਿਰਿਆ ਕਰੋ +# ਫਾਇਲ Hotel_Reviews_Tags.py ਸਭ ਤੋਂ ਮਹੱਤਵਪੂਰਣ ਟੈਗਸ ਦੀ ਪਛਾਣ ਕਰਦੀ ਹੈ +# ਮਨੋਰੰਜਨ ਯਾਤਰਾ, ਜੋੜਾ, ਇਕੱਲਾ ਯਾਤਰੀ, ਕਾਰੋਬਾਰੀ ਯਾਤਰਾ, ਗਰੁੱਪ ਜੋ ਕਿ ਦੋਸਤਾਂ ਨਾਲ ਯਾਤਰੀਆਂ ਨਾਲ ਮਿਲ ਕੇ ਹੈ, +# ਛੋਟੇ ਬੱਚਿਆਂ ਨਾਲ ਪਰਿਵਾਰ, ਵੱਡੇ ਬੱਚਿਆਂ ਨਾਲ ਪਰਿਵਾਰ, ਪਸ਼ੂ ਨਾਲ +df["Leisure_trip"] = df.Tags.apply(lambda tag: 1 if "Leisure trip" in tag else 0) +df["Couple"] = df.Tags.apply(lambda tag: 1 if "Couple" in tag else 0) +df["Solo_traveler"] = df.Tags.apply(lambda tag: 1 if "Solo traveler" in tag else 0) +df["Business_trip"] = df.Tags.apply(lambda tag: 1 if "Business trip" in tag else 0) +df["Group"] = df.Tags.apply(lambda tag: 1 if "Group" in tag or "Travelers with friends" in tag else 0) +df["Family_with_young_children"] = df.Tags.apply(lambda tag: 1 if "Family with young children" in tag else 0) +df["Family_with_older_children"] = df.Tags.apply(lambda tag: 1 if "Family with older children" in tag else 0) +df["With_a_pet"] = df.Tags.apply(lambda tag: 1 if "With a pet" in tag else 0) + +``` + +### ਆਪਣੀ ਫ਼ਾਇਲ ਸੇਵ ਕਰੋ + +ਅੰਤ ਵਿੱਚ, ਹੁਣੇ ਬਣਾਈ ਗਈ ਡੇਟਾਸੈੱਟ ਨੂੰ ਨਵਾਂ ਨਾਮ ਦੇ ਕੇ ਸੇਵ ਕਰੋ। + +```python +df.drop(["Review_Total_Negative_Word_Counts", "Review_Total_Positive_Word_Counts", "days_since_review", "Total_Number_of_Reviews_Reviewer_Has_Given"], axis = 1, inplace=True) + +# ਗਣਨਾ ਕੀਤੀਆਂ ਕਾਲਮਾਂ ਨਾਲ ਨਵਾਂ ਡੇਟਾ ਫਾਈਲ ਸੰਭਾਲ ਰਿਹਾ ਹੈ +print("Saving results to Hotel_Reviews_Filtered.csv") +df.to_csv(r'../data/Hotel_Reviews_Filtered.csv', index = False) +``` + +## ਭਾਵਨਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਾਰਜ + +ਇਸ ਅੰਤਿਮ ਭਾਗ ਵਿੱਚ, ਤੁਸੀਂ ਸਮੀਖਿਆ ਕਾਲਮਾਂ 'ਤੇ ਭਾਵਨਾ ਵਿਸ਼ਲੇਸ਼ਣ ਲਾਗੂ ਕਰੋਗੇ ਅਤੇ ਨਤੀਜੇ ਡੇਟਾਸੈੱਟ ਵਿੱਚ ਸੰਭਾਲੋਗੇ। + +## ਅਭਿਆਸ: ਛਾਂਟਿਆ ਹੋਇਆ ਡੇਟਾ ਲੋਡ ਕਰੋ ਅਤੇ ਸੇਵ ਕਰੋ + +ਇਹ ਧਿਆਨ ਵਿੱਚ ਰੱਖੋ ਕਿ ਹੁਣ ਤੁਸੀਂ ਪਿਛਲੇ ਭਾਗ ਵਿੱਚ ਸੇਵ ਕੀਤੇ ਛਾਂਟਿਆ ਹੋਇਆ ਡੇਟਾ ਲੋਡ ਕਰ ਰਹੇ ਹੋ, **ਅਸਲ ਡੇਟਾ ਲੋਡ ਨਹੀਂ ਕਰ ਰਹੇ।** + +```python +import time +import pandas as pd +import nltk as nltk +from nltk.corpus import stopwords +from nltk.sentiment.vader import SentimentIntensityAnalyzer +nltk.download('vader_lexicon') + +# ਫਿਲਟਰ ਕੀਤੀਆਂ ਹੋਟਲ ਸਮੀਖਿਆਵਾਂ ਨੂੰ CSV ਤੋਂ ਲੋਡ ਕਰੋ +df = pd.read_csv('../../data/Hotel_Reviews_Filtered.csv') + +# ਤੁਹਾਡਾ ਕੋਡ ਇੱਥੇ ਜੋੜਿਆ ਜਾਵੇਗਾ -ਅਗਲੇ ਕਦਮਾਂ ਵਿੱਚ, ਤੁਸੀਂ ਟੈਗਾਂ ਨੂੰ ਸਹੀ ਫਾਰਮੈਟ ਵਿੱਚ ਲਿਆਉਣ, ਗਿਣਤੀ ਕਰਨ ਅਤੇ ਹੋਟਲਾਂ ਲਈ ਸਿਫਾਰਸ਼ੀ ਜਾਣਕਾਰੀ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਕਾਰਵਾਈਆਂ ਕਰਦੇ ਹੋ। -NLTK ਵੱਖ-ਵੱਖ ਭਾਵਨਾ ਵਿਸ਼ਲੇਸ਼ਕ ਉਪਲਬਧ ਕਰਵਾਉਂਦਾ ਹੈ, ਅਤੇ ਤੁਸੀਂ ਇਹਨਾਂ ਨੂੰ ਬਦਲ ਸਕਦੇ ਹੋ ਅਤੇ ਦੇਖ ਸਕਦੇ ਹੋ ਕਿ ਭਾਵਨਾ ਜ਼ਿਆਦਾ ਜਾਂ ਘੱਟ ਸਹੀ ਹੈ। ਇੱਥੇ VADER ਭਾਵਨਾ ਵਿਸ਼ਲੇਸ਼ਣ ਵਰਤਿਆ ਗਿਆ ਹੈ। -> Hutto, C.J. & Gilbert, E.E. (2014). VADER: A Parsimonious Rule-based Model for Sentiment Analysis of Social Media Text. Eighth International Conference on Weblogs and Social Media (ICWSM-14). Ann Arbor, MI, June 2014. +# ਆਖਰਕਾਰ, ਨਵਾਂ NLP ਡੇਟਾ ਜੋੜ ਕੇ ਹੋਟਲ ਸਮੀਖਿਆਵਾਂ ਸੁਰੱਖਿਅਤ ਕਰਨਾ ਯਾਦ ਰੱਖੋ +print("Saving results to Hotel_Reviews_NLP.csv") +df.to_csv(r'../data/Hotel_Reviews_NLP.csv', index = False) +``` + +### ਠਹਿਰਾਏ ਸ਼ਬਦ ਹਟਾਉਣਾ + +ਜੇ ਤੁਸੀਂ ਨੈਗੇਟਿਵ ਅਤੇ ਪਾਜ਼ਿਟਿਵ ਸਮੀਖਿਆ ਕਾਲਮਾਂ 'ਤੇ ਭਾਵਨਾ ਵਿਸ਼ਲੇਸ਼ਣ ਚਲਾਉਂਦੇ, ਤਾਂ ਇਹ ਲੰਬਾ ਸਮਾਂ ਲੈ ਸਕਦਾ ਹੈ। ਤੇਜ਼ CPU ਵਾਲੇ ਸ਼ਕਤੀਸ਼ਾਲੀ ਟੈਸਟ ਲੈਪਟੌਪ 'ਤੇ ਟੈਸਟ ਕੀਤਾ ਗਿਆ, ਇਹ 12-14 ਮਿੰਟ ਲੱਗੇ ਇਸ ਗੱਲ 'ਤੇ ਨਿਰਭਰ ਕਰ ਕੇ ਕਿ ਕਿਹੜੀ ਭਾਵਨਾ ਲਾਇਬ੍ਰੇਰੀ ਵਰਤੀ ਗਈ ਸੀ। ਇਹ (ਤੁਲਨਾਤਮਕ) ਲੰਬਾ ਸਮਾਂ ਹੈ, ਇਸ ਲਈ ਇਹ ਜ਼ਾਂਚ ਕਰਨ ਦੇ ਯੋਗ ਹੈ ਕਿ ਕੀ ਇਸ ਨੂੰ ਤੇਜ਼ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। + +ਠਹਿਰਾਏ ਸ਼ਬਦ, ਜਾਂ ਆਮ ਅੰਗਰੇਜ਼ੀ ਸ਼ਬਦ ਜੋ ਵਾਕ ਦਾ ਭਾਵਨਾ ਬਦਲਦੇ ਨਹੀਂ, ਹਟਾਉਣਾ ਪਹਿਲਾ ਕਦਮ ਹੈ। ਉਨ੍ਹਾਂ ਨੂੰ ਹਟਾਉਣ ਨਾਲ ਭਾਵਨਾ ਵਿਸ਼ਲੇਸ਼ਣ ਤੇਜ਼ ਹੋਏਗੀ, ਪਰ ਘੱਟ ਸਹੀ ਨਹੀਂ ਹੋਵੇਗੀ (ਕਿਉਂਕਿ ਠਹਿਰਾਏ ਸ਼ਬਦਾਂ ਦਾ ਭਾਵਨਾ 'ਤੇ ਪ੍ਰਭਾਵ ਨਹੀਂ ਹੁੰਦਾ, ਪਰ ਉਹ ਵਿਸ਼ਲੇਸ਼ਣ ਨੂੰ ਧੀਮਾ ਕਰਦੇ ਹਨ)। + +ਸਭ ਤੋਂ ਲੰਬੀ ਨਕਾਰਾਤਮਕ ਸਮੀਖਿਆ 395 ਸ਼ਬਦ ਦੀ ਸੀ, ਪਰ ਠਹਿਰਾਏ ਸ਼ਬਦ ਹਟਾਉਣ ਤੋਂ ਬਾਅਦ ਇਹ 195 ਸ਼ਬਦ ਰਹਿ ਗਈ। + +ਠਹਿਰਾਏ ਸ਼ਬਦ ਹਟਾਉਣਾ ਵੀ ਤੇਜ਼ ਕਾਰਜ ਹੈ, 2 ਸਮੀਖਿਆ ਕਾਲਮਾਂ ਤੋਂ 515,000 ਕਤਾਰਾਂ ਵਿੱਚ ਠਹਿਰਾਏ ਸ਼ਬਦ ਹਟਾਉਣ ਵਿੱਚ ਟੈਸਟ ਯੰਤਰ 'ਤੇ 3.3 ਸਕਿੰਟ ਲੱਗੇ। ਇਹ ਤੁਹਾਡੇ ਯੰਤਰ ਦੇ CPU ਗਤੀ, RAM, SSD ਹੋਣ ਜਾਂ ਨਾ ਹੋਣ ਅਤੇ ਹੋਰ ਕਈ ਕਾਰਕਾਂ 'ਤੇ ਨਾੜਿਆ ਜਾ ਸਕਦਾ ਹੈ। ਕਾਰਜ ਦੀ ਰੀਲੈਟਿਵ ਛੋਟੀ ਅਵਧੀ ਇਸ ਗੱਲ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਂਦੀ ਹੈ ਕਿ ਜੇ ਇਹ ਭਾਵਨਾ ਵਿਸ਼ਲੇਸ਼ਣ ਸਮਾਂ ਤੇਜ਼ ਕਰਦਾ ਹੈ, ਤਾਂ ਇਹ ਕਰਨ ਦੇ ਯੋਗ ਹੈ। + +```python +from nltk.corpus import stopwords + +# ਹోటਲ ਸਮੀਖਿਆਵਾਂ ਨੂੰ CSV ਤੋਂ ਲੋਡ ਕਰੋ +df = pd.read_csv("../../data/Hotel_Reviews_Filtered.csv") + +# ਸਟਾਪ ਵਰਡਜ਼ ਹਟਾਓ - ਬਹੁਤ ਸਾਰਾ ਮਤਨ ਹੋਣ ਤੇ ਇਹ ਸਲੋ ਹੋ ਸਕਦਾ ਹੈ! +# Ryan Han (Kaggle ਉੱਤੇ ryanxjhan) ਨੇ ਵੱਖ-ਵੱਖ ਸਟਾਪ ਵਰਡਜ਼ ਹਟਾਉਣ ਦੇ ਤਰੀਕਿਆਂ ਦੀ ਕਾਰਗੁਜ਼ਾਰੀ ਮਾਪਣ ਵਾਲਾ ਇੱਕ ਵਧੀਆ ਪੋਸਟ ਕੀਤਾ ਹੈ +# https://www.kaggle.com/ryanxjhan/fast-stop-words-removal # Ryan ਵੱਲੋਂ ਸੁਝਾਇਆ ਗਿਆ ਤਰੀਕਾ ਵਰਤਦੇ ਹੋਏ +start = time.time() +cache = set(stopwords.words("english")) +def remove_stopwords(review): + text = " ".join([word for word in review.split() if word not in cache]) + return text + +# ਦੋਹਾਂ ਕਾਲਮਾਂ ਤੋਂ ਸਟਾਪ ਵਰਡਜ਼ ਹਟਾਓ +df.Negative_Review = df.Negative_Review.apply(remove_stopwords) +df.Positive_Review = df.Positive_Review.apply(remove_stopwords) +``` + +### ਭਾਵਨਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰਨਾ + +ਹੁਣ ਤੁਹਾਨੂੰ ਨੈਗੇਟਿਵ ਅਤੇ ਪਾਜ਼ਿਟਿਵ ਸਮੀਖਿਆ ਕਾਲਮਾਂ ਲਈ ਭਾਵਨਾ ਵਿਸ਼ਲੇਸ਼ਣ ਗਿਣਤੀ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ, ਅਤੇ ਨਤੀਜਾ 2 ਨਵੇਂ ਕਾਲਮਾਂ ਵਿੱਚ ਸਟੋਰ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ। ਭਾਵਨਾ ਦੀ ਜਾਂਚ ਇਸ ਤਰ੍ਹਾਂ ਹੋਵੇਗੀ ਕਿ ਸਮੀਖਿਆਕਾਰ ਦੇ ਅੰਕ ਨਾਲ ਉਸੇ ਸਮੀਖਿਆ ਲਈ ਤੁਲਨਾ ਕੀਤੀ ਜਾਵੇ। ਉਦਾਹਰਨ ਵਜੋਂ, ਜੇ ਭਾਵਨਾ ਸੋਚਦੀ ਹੈ ਕਿ ਨਕਾਰਾਤਮਕ ਸਮੀਖਿਆ ਦਾ ਭਾਵਨਾ 1 (ਬਹੁਤ ਪਾਜ਼ਿਟਿਵ ਭਾਵਨਾ) ਸੀ ਅਤੇ ਸਕਾਰਾਤਮਕ ਸਮੀਖਿਆ ਭਾਵਨਾ ਵੀ 1 ਸੀ, ਪਰ ਸਮੀਖਿਆਕਾਰ ਨੇ ਹੋਟਲ ਨੂੰ ਸਭ ਤੋਂ ਘਟੀਆ ਸਕੋਰ ਦਿੱਤਾ, ਤਾਂ ਜਾਂ ਤਾਂ ਸਮੀਖਿਆ ਪਾਠ ਸਕੋਰ ਦੇ ਅਨੁਰੂਪ ਨਹੀਂ ਹੈ, ਜਾਂ ਭਾਵਨਾ ਵਿਸ਼ਲੇਸ਼ਕ ਏਲੀ ਗਲਤ ਸੂਚਨਾ ਦਿੱਤੀ। ਤੁਸੀਂ ਕੁਝ ਭਾਵਨਾ ਅੰਕਾਂ ਨੂੰ ਪੂਰੀ ਤਰ੍ਹਾਂ ਗਲਤ ਮੰਨ ਸਕਦੇ ਹੋ, ਅਤੇ ਅਕਸਰ ਇਹ ਵਿਆਖਿਆਯੋਗ ਹੋਵੇਗਾ, ਉਦਾਹਰਨ ਵਜੋਂ, ਸਮੀਖਿਆ ਬਹੁਤ ਵਿਅੰਗੀ ਹੋ ਸਕਦੀ ਹੈ "ਬੇਸ਼ੱਕ ਮੈਨੂੰ ਕਮਰੇ ਵਿੱਚ ਹੀਟਿੰਗ ਨਾ ਹੋਣ ਤੇ ਸੌਣਾ ਬਹੁਤ ਪਸੰਦ ਆਇਆ" ਅਤੇ ਭਾਵਨਾ ਵਿਸ਼ਲੇਸ਼ਕ ਸੋਚਦਾ ਹੈ ਕਿ ਇਹ ਪਾਜ਼ਿਟਿਵ ਹੈ, ਹਾਲਾਂਕਿ ਇੱਕ ਮਨੁੱਖ ਪੜ੍ਹ ਕੇ ਜਾਣਦਾ ਹੈ ਕਿ ਇਹ ਵਿਅੰਗ ਹੈ। + +NLTK ਵੱਖ-ਵੱਖ ਭਾਵਨਾ ਵਿਸ਼ਲੇਸ਼ਕ ਮੁਹੱਈਆ ਕਰਵਾਉਂਦਾ ਹੈ ਜਿਨ੍ਹਾਂ ਨਾਲ ਸਿੱਖਿਆ ਜਾ ਸਕਦੀ ਹੈ, ਅਤੇ ਤੁਸੀਂ ਉਨ੍ਹਾਂ ਨੂੰ ਬਦਲ ਕੇ ਦੇਖ ਸਕਦੇ ਹੋ ਕਿ ਭਾਵਨਾ ਜ਼ਿਆਦਾ ਜਾਂ ਘੱਟ ਸਹੀ ਹੈ। ਇੱਥੇ VADER ਭਾਵਨਾ ਵਿਸ਼ਲੇਸ਼ਣ ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਗਈ ਹੈ। + + +> Hutto, C.J. & Gilbert, E.E. (2014). VADER: ਸੋਸ਼ਲ ਮੀਡਿਆ ਟੈਕਸਟ ਦੀ ਭਾਵਨਾ ਵਿਸ਼ਲੇਸ਼ਣ ਲਈ ਇੱਕ ਸੰਖੇਪ ਰੂਲ-ਅਧਾਰਤ ਮਾਡਲ। ਅਠਵਾਂ ਅੰਤਰਰਾਸ਼ਟਰੀ ਸੰਮੇਲਨ ਵੈਬਲੌਗ ਅਤੇ ਸੋਸ਼ਲ ਮੀਡਿਆ (ICWSM-14)। ਐਨ ਆਰਬਰ, MI, ਜੂਨ 2014। ```python from nltk.sentiment.vader import SentimentIntensityAnalyzer -# Create the vader sentiment analyser (there are others in NLTK you can try too) +# ਵੈਡਰ ਸੰਵੇਦਨਾ ਵਿਸ਼ਲੇਸ਼ਕ ਬਣਾਓ (ਨਲਟਕ ਵਿੱਚ ਹੋਰ ਵੀ ਹਨ ਜੋ ਤੁਸੀਂ ਕੋਸ਼ਿਸ਼ ਕਰ ਸਕਦੇ ਹੋ) vader_sentiment = SentimentIntensityAnalyzer() -# Hutto, C.J. & Gilbert, E.E. (2014). VADER: A Parsimonious Rule-based Model for Sentiment Analysis of Social Media Text. Eighth International Conference on Weblogs and Social Media (ICWSM-14). Ann Arbor, MI, June 2014. +# ਹੁੱਟੋ, ਸੀ.ਜெ. & ਗਿਲਬਰਟ, ਈ.ਈ. (2014). ਵੈਡਰ: ਸੋਸ਼ਲ ਮੀਡੀਆ ਟੈਕਸਟ ਦੇ ਸੰਵੇਦਨਾ ਵਿਸ਼ਲੇਸ਼ਣ ਲਈ ਇੱਕ ਸੰਕੁਚਿਤ ਨਿਯਮ-ਆਧਾਰਿਤ ਮਾਡਲ। ਅਠਵਾਂ ਅੰਤਰਰਾਸ਼ਟਰੀ ਕਾਨਫਰੰਸ ਵੈਬਲੌਗਸ ਅਤੇ ਸੋਸ਼ਲ ਮੀਡੀਆ (ICWSM-14)। ਐਨ ਅਰਬਰ, ਮਾਈ, ਜੂਨ 2014। -# There are 3 possibilities of input for a review: -# It could be "No Negative", in which case, return 0 -# It could be "No Positive", in which case, return 0 -# It could be a review, in which case calculate the sentiment +# ਇੱਕ ਸਮੀਖਿਆ ਦੇ ਲਈ 3 ਇਨਪੁਟ ਸੰਭਾਵਨਾਵਾਂ ਹਨ: +# ਇਹ "ਕੋਈ ਨਕਾਰਾਤਮਕ ਨਹੀਂ" ਹੋ ਸਕਦਾ ਹੈ, ਜਿਸ ਸਥਿਤੀ ਵਿੱਚ 0 ਵਾਪਸ ਕਰੋ +# ਇਹ "ਕੋਈ ਧਨਾਤਮਕ ਨਹੀਂ" ਹੋ ਸਕਦਾ ਹੈ, ਜਿਸ ਸਥਿਤੀ ਵਿੱਚ 0 ਵਾਪਸ ਕਰੋ +# ਇਹ ਇੱਕ ਸਮੀਖਿਆ ਹੋ ਸਕਦੀ ਹੈ, ਜਿਸ ਸਥਿਤੀ ਵਿੱਚ ਸੰਵੇਦਨਾ ਦੀ ਗਣਨਾ ਕਰੋ def calc_sentiment(review): if review == "No Negative" or review == "No Positive": return 0 return vader_sentiment.polarity_scores(review)["compound"] ``` -ਆਪਣੇ ਪ੍ਰੋਗਰਾਮ ਵਿੱਚ ਜਦੋਂ ਤੁਸੀਂ ਭਾਵਨਾ ਦੀ ਗਣਨਾ ਕਰਨ ਲਈ ਤਿਆਰ ਹੋ, ਤਾਂ ਤੁਸੀਂ ਇਸਨੂੰ ਹਰੇਕ ਸਮੀਖਿਆ 'ਤੇ ਇਸ ਤਰ੍ਹਾਂ ਲਾਗੂ ਕਰ ਸਕਦੇ ਹੋ: +ਬਾਅਦ ਵਿੱਚ ਤੁਹਾਡੇ ਪ੍ਰੋਗਰਾਮ ਵਿੱਚ ਜਦੋਂ ਤੁਸੀਂ ਭਾਵਨਾ ਦੀ ਗਿਣਤੀ ਕਰਨ ਲਈ ਤਿਆਰ ਹੋ, ਤੁਸੀਂ ਇਸਨੂੰ ਹਰ ਸਮੀਖਿਆ 'ਤੇ ਅਜਿਹਾ ਲਗਾ ਸਕਦੇ ਹੋ: ```python -# Add a negative sentiment and positive sentiment column +# ਨਕਾਰਾਤਮਕ ਭਾਵਨਾ ਅਤੇ ਸਕਾਰਾਤਮਕ ਭਾਵਨਾ ਕਾਲਮ ਸ਼ਾਮਿਲ ਕਰੋ print("Calculating sentiment columns for both positive and negative reviews") start = time.time() df["Negative_Sentiment"] = df.Negative_Review.apply(calc_sentiment) @@ -163,7 +330,7 @@ end = time.time() print("Calculating sentiment took " + str(round(end - start, 2)) + " seconds") ``` -ਇਹ ਮੇਰੇ ਕੰਪਿਊਟਰ 'ਤੇ ਲਗਭਗ 120 ਸਕਿੰਟ ਲੈਂਦਾ ਹੈ, ਪਰ ਇਹ ਹਰ ਕੰਪਿਊਟਰ 'ਤੇ ਵੱਖ-ਵੱਖ ਹੋਵੇਗਾ। ਜੇ ਤੁਸੀਂ ਨਤੀਜੇ ਪ੍ਰਿੰਟ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ ਅਤੇ ਦੇਖਣਾ ਚਾਹੁੰਦੇ ਹੋ ਕਿ ਭਾਵਨਾ ਸਮੀਖਿਆ ਨਾਲ ਮਿਲਦੀ ਹੈ: +ਇਹ ਮੇਰੇ ਕੰਪਿਊਟਰ 'ਤੇ ਲਗਭਗ 120 ਸਕਿੰਟ ਲੈਂਦਾ ਹੈ, ਪਰ ਇਹ ਹਰ ਕੰਪਿਊਟਰ 'ਤੇ ਵੱਖ-ਵੱਖ ਹੋਵੇਗਾ। ਜੇ ਤੁਸੀਂ ਨਤੀਜੇ ਪ੍ਰਿੰਟ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ ਅਤੇ ਦੇਖਣਾ ਚਾਹੁੰਦੇ ਹੋ ਕਿ ਭਾਵਨਾ ਸਮੀਖਿਆ ਨਾਲ ਮਿਲਦੀ ਹੈ ਜਾਂ ਨਹੀਂ: ```python df = df.sort_values(by=["Negative_Sentiment"], ascending=True) @@ -172,44 +339,45 @@ df = df.sort_values(by=["Positive_Sentiment"], ascending=True) print(df[["Positive_Review", "Positive_Sentiment"]]) ``` -ਫਾਈਲ ਨਾਲ ਆਖਰੀ ਕੰਮ, ਇਸਨੂੰ ਚੁਣੌਤੀ ਵਿੱਚ ਵਰਤਣ ਤੋਂ ਪਹਿਲਾਂ, ਇਸਨੂੰ ਸੇਵ ਕਰਨਾ ਹੈ! ਤੁਹਾਨੂੰ ਆਪਣੇ ਨਵੇਂ ਕਾਲਮਾਂ ਨੂੰ ਦੁਬਾਰਾ ਕ੍ਰਮਬੱਧ ਕਰਨ ਬਾਰੇ ਵੀ ਸੋਚਣਾ ਚਾਹੀਦਾ ਹੈ ਤਾਂ ਕਿ ਇਹਨਾਂ ਨਾਲ ਕੰਮ ਕਰਨਾ ਆਸਾਨ ਹੋਵੇ (ਇਹ ਸਿਰਫ਼ ਦ੍ਰਿਸ਼ਟੀਕੋਣ ਦਾ ਬਦਲਾਅ ਹੈ)। +ਚੈਲੈਂਜ ਵਿੱਚ ਇਸਦਾ ਉਪਯੋਗ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਫਾਈਲ ਨਾਲ ਆਖिरी ਕੰਮ ਸੰਭਾਲਣਾ ਹੈ, ਇਸਨੂੰ ਸੰਭਾਲ ਕੇ ਸੇਵ ਕਰਨਾ! ਤੁਹਾਨੂੰ ਆਪਣੀਆਂ ਸਾਰੀਆਂ ਨਵੀਂ ਕਾਲਮਾਂ ਨੂੰ ਇਸ ਤਰ੍ਹਾਂ ਦੁਬਾਰਾ ਲਗਾਉਣ ਬਾਰੇ ਵੀ ਸੋਚਣਾ ਚਾਹੀਦਾ ਹੈ ਤਾਂ ਜੋ ਉਹਨਾਂ ਨਾਲ ਕੰਮ ਕਰਨਾ ਆਸਾਨ ਹੋਵੇ (ਇੱਕ ਮਨੁੱਖ ਲਈ ਇਹ ਇੱਕ ਸੁੰਦਰਤਾ ਵਿੱਚ ਬਦਲਾਅ ਹੈ)। ```python -# Reorder the columns (This is cosmetic, but to make it easier to explore the data later) +# ਕਾਲਮਾਂ ਨੂੰ ਮੁੜ ਕ੍ਰਮਬੱਧ ਕਰੋ (ਇਹ ਸਿਰਫ਼ ਸੁੰਦਰਤਾ ਲਈ ਹੈ, ਪਰ ਬਾਅਦ ਵਿੱਚ ਡੇਟਾ ਦੀ ਤਫਤੀਸ਼ ਨੂੰ ਆਸਾਨ ਬਣਾਉਣ ਲਈ) df = df.reindex(["Hotel_Name", "Hotel_Address", "Total_Number_of_Reviews", "Average_Score", "Reviewer_Score", "Negative_Sentiment", "Positive_Sentiment", "Reviewer_Nationality", "Leisure_trip", "Couple", "Solo_traveler", "Business_trip", "Group", "Family_with_young_children", "Family_with_older_children", "With_a_pet", "Negative_Review", "Positive_Review"], axis=1) print("Saving results to Hotel_Reviews_NLP.csv") df.to_csv(r"../data/Hotel_Reviews_NLP.csv", index = False) ``` -ਤੁਹਾਨੂੰ [ਵਿਸ਼ਲੇਸ਼ਣ ਨੋਟਬੁੱਕ](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/3-notebook.ipynb) ਲਈ ਪੂਰਾ ਕੋਡ ਚਲਾਉਣਾ ਚਾਹੀਦਾ ਹੈ (ਜਦੋਂ ਤੁਸੀਂ [ਫਿਲਟਰਿੰਗ ਨੋਟਬੁੱਕ](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/1-notebook.ipynb) ਚਲਾਇਆ ਹੈ ਤਾਂ Hotel_Reviews_Filtered.csv ਫਾਈਲ ਬਣਾਉਣ ਲਈ)। +ਤੁਹਾਨੂੰ ਪੂਰਾ ਕੋਡ ਚਲਾਉਣਾ ਚਾਹੀਦਾ ਹੈ [ਵਿਸ਼ਲੇਸ਼ਣ ਨੋਟਬੁੱਕ ਲਈ](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/3-notebook.ipynb) (ਜਦੋਂ ਤੁਸੀਂ [ਆਪਣੇ ਫਿਲਟਰਿੰਗ ਨੋਟਬੁੱਕ](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/1-notebook.ipynb) ਨੂੰ ਚਲਾਕੇ Hotel_Reviews_Filtered.csv ਫਾਈਲ ਉਤਪੰਨ ਕਰ ਲਈ ਹੈ)। -ਸੰਖੇਪ ਵਿੱਚ, ਕਦਮ ਇਹ ਹਨ: +ਸਮੀਖਿਆ ਲਈ, ਕਦਮ ਹਨ: -1. ਮੂਲ ਡਾਟਾਸੈੱਟ ਫਾਈਲ **Hotel_Reviews.csv** ਪਿਛਲੇ ਪਾਠ ਵਿੱਚ [ਐਕਸਪਲੋਰਰ ਨੋਟਬੁੱਕ](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/4-Hotel-Reviews-1/solution/notebook.ipynb) ਨਾਲ ਖੋਜੀ ਗਈ ਹੈ। -2. Hotel_Reviews.csv ਨੂੰ [ਫਿਲਟਰਿੰਗ ਨੋਟਬੁੱਕ](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/1-notebook.ipynb) ਦੁਆਰਾ ਫਿਲਟਰ ਕੀਤਾ ਗਿਆ ਹੈ ਜਿਸਦਾ ਨਤੀਜਾ **Hotel_Reviews_Filtered.csv** ਹੈ। -3. Hotel_Reviews_Filtered.csv ਨੂੰ [ਭਾਵਨਾ ਵਿਸ਼ਲੇਸ਼ਣ ਨੋਟਬੁੱਕ](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/3-notebook.ipynb) ਦੁਆਰਾ ਪ੍ਰੋਸੈਸ ਕੀਤਾ ਗਿਆ ਹੈ ਜਿਸਦਾ ਨਤੀਜਾ **Hotel_Reviews_NLP.csv** ਹੈ। -4. Hotel_Reviews_NLP.csv ਨੂੰ ਹੇਠਾਂ ਦਿੱਤੀ NLP ਚੁਣੌਤੀ ਵਿੱਚ ਵਰਤੋ। +1. ਮੂਲ ਡੇਟਾਸੈੱਟ ਫਾਈਲ **Hotel_Reviews.csv** ਪਿਛਲੇ ਪਾਠ ਵਿੱਚ [ਇਕਸਪਲੋਰਰ ਨੋਟਬੁੱਕ ਨਾਲ](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/4-Hotel-Reviews-1/solution/notebook.ipynb) ਖੋਜੀ ਗਈ +2. Hotel_Reviews.csv ਨੂੰ [ਫਿਲਟਰਿੰਗ ਨੋਟਬੁੱਕ](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/1-notebook.ipynb) ਨਾਲ ਫਿਲਟਰ ਕੀਤਾ ਗਿਆ ਜਿਸਦਾ ਨਤੀਜਾ **Hotel_Reviews_Filtered.csv** ਹੈ +3. Hotel_Reviews_Filtered.csv ਨੂੰ [ਭਾਵਨਾ ਵਿਸ਼ਲੇਸ਼ਣ ਨੋਟਬੁੱਕ](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/5-Hotel-Reviews-2/solution/3-notebook.ipynb) ਨਾਲ ਪ੍ਰੋਸੈਸ ਕੀਤਾ ਗਿਆ ਜਿਸਦਾ ਨਤੀਜਾ **Hotel_Reviews_NLP.csv** ਹੈ +4. ਹੇਠਾਂ NLP ਚੈਲੈਂਜ ਵਿੱਚ Hotel_Reviews_NLP.csv ਦੀ ਵਰਤੋਂ ਕਰੋ -### ਨਿਸਕਰਸ਼ +### ਨਤੀਜਾ -ਜਦੋਂ ਤੁਸੀਂ ਸ਼ੁਰੂ ਕੀਤਾ, ਤੁਹਾਡੇ ਕੋਲ ਕਾਲਮਾਂ ਅਤੇ ਡਾਟਾ ਵਾਲਾ ਡਾਟਾਸੈੱਟ ਸੀ ਪਰ ਇਸ ਵਿੱਚੋਂ ਸਾਰਾ ਡਾਟਾ ਪ੍ਰਮਾਣਿਤ ਜਾਂ ਵਰਤਣਯੋਗ ਨਹੀਂ ਸੀ। ਤੁਸੀਂ ਡਾਟਾ ਦੀ ਖੋਜ ਕੀਤੀ, ਜੋ ਲੋੜੀਂਦਾ ਨਹੀਂ ਸੀ ਉਸਨੂੰ ਹਟਾਇਆ, ਟੈਗਾਂ ਨੂੰ ਕੁਝ ਉਪਯੋਗ ਵਿੱਚ ਬਦਲਿਆ, ਆਪਣੇ ਆਪ ਦੇ ਔਸਤ ਗਣੇ, ਕੁਝ ਭਾਵਨਾ ਕਾਲਮ ਜੋੜੇ ਅਤੇ ਸ਼ਾਇਦ ਕੁਝ ਦਿਲਚਸਪ ਗੱਲਾਂ ਸਿੱਖੀਆਂ ਜੋ ਕੁਦਰਤੀ ਟੈਕਸਟ ਪ੍ਰੋਸੈਸਿੰਗ ਨਾਲ ਸੰਬੰਧਿਤ ਹਨ। +ਜਦੋਂ ਤੁਸੀਂ ਸ਼ੁਰੂ ਕੀਤਾ ਸੀ, ਤੁਹਾਡੇ ਕੋਲ ਕਾਲਮਾਂ ਅਤੇ ਡੇਟਾ ਵਾਲਾ ਡੇਟਾਸੈੱਟ ਸੀ ਪਰ ਸਾਰਾ ਡੇਟਾ ਜਾਂ ਚੈੱਕ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਜਾਂ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਸੀ। ਤੁਸੀਂ ਡੇਟਾ ਖੋਜਿਆ, ਜਰੂਰੀ ਨਾ ਹੋਣ ਵਾਲਾ ਹਟਾਇਆ, ਟੈਗਾਂ ਨੂੰ ਕੁਝ ਲਾਭਦਾਇਕ ਵਿੱਚ ਬਦਲਿਆ, ਆਪਣੇ ਆਪ ਗਣਨਾ ਕੀਤੀ, ਕੁਝ ਭਾਵਨਾ ਕਾਲਮ ਜੋੜੇ ਅਤੇ ਉਮੀਦ ਹੈ ਕਿ ਕੁਝ ਦਿਲਚਸਪ ਗੱਲਾਂ ਸਿੱਖੀਆਂ ਜਿਵੇਂ ਪ੍ਰਾਕ੍ਰਿਤਿਕ ਭਾਸ਼ਾ ਟੈਕਸਟ ਨੂੰ ਪ੍ਰੋਸੈਸ ਕਰਨਾ। -## [ਪਾਠ ਬਾਅਦ ਕਵਿਜ਼](https://ff-quizzes.netlify.app/en/ml/) +## [ਪੋਸਟ-ਲੈਕਚਰ ਕਵਿਜ਼](https://ff-quizzes.netlify.app/en/ml/) -## ਚੁਣੌਤੀ +## ਚੈਲੈਂਜ -ਹੁਣ ਜਦੋਂ ਤੁਸੀਂ ਆਪਣੇ ਡਾਟਾਸੈੱਟ ਨੂੰ ਭਾਵਨਾ ਲਈ ਵਿਸ਼ਲੇਸ਼ਿਤ ਕਰ ਲਿਆ ਹੈ, ਦੇਖੋ ਕਿ ਤੁਸੀਂ ਇਸ ਪਾਠਕ੍ਰਮ ਵਿੱਚ ਸਿੱਖੀਆਂ ਰਣਨੀਤੀਆਂ (ਸ਼ਾਇਦ ਕਲੱਸਟਰਿੰਗ?) ਵਰਤ ਕੇ ਭਾਵਨਾ ਦੇ ਆਸਪਾਸ ਪੈਟਰਨਾਂ ਦੀ ਪਛਾਣ ਕਰ ਸਕਦੇ ਹੋ। +ਹੁਣ ਜਦੋਂ ਤੁਹਾਡੇ ਕੋਲ ਭਾਵਨਾ ਲਈ ਵਿਸ਼ਲੇਸ਼ਿਤ ਡੇਟਾਸੈਟ ਹੈ, ਵੇਖੋ ਕਿ ਤੁਸੀਂ ਇਸ ਪਾਠਕ੍ਰਮ ਵਿੱਚ ਸਿੱਖੇ ਹੋਏ ਰਣਨੀਤੀਆਂ (ਸ਼ਾਇਦ ਕਲੱਸਟਰਿੰਗ?) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਭਾਵਨਾ ਦੇ ਆਲੇ-ਦੁਆਲੇ ਦੇ ਪੈਟਰਨ ਨਿਰਧਾਰਤ ਕਰ ਸਕਦੇ ਹੋ. ## ਸਮੀਖਿਆ ਅਤੇ ਸਵੈ ਅਧਿਐਨ -[ਇਹ Learn ਮੋਡਿਊਲ](https://docs.microsoft.com/en-us/learn/modules/classify-user-feedback-with-the-text-analytics-api/?WT.mc_id=academic-77952-leestott) ਲਓ ਤਾਂ ਜੋ ਹੋਰ ਸਿੱਖਿਆ ਜਾ ਸਕੇ ਅਤੇ ਵੱਖ-ਵੱਖ ਟੂਲਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਟੈਕਸਟ ਵਿੱਚ ਭਾਵਨਾ ਦੀ ਖੋਜ ਕੀਤੀ ਜਾ ਸਕੇ। - -## ਅਸਾਈਨਮੈਂਟ +ਇਸ [Learn ਮਾਡਿਊਲ](https://docs.microsoft.com/en-us/learn/modules/classify-user-feedback-with-the-text-analytics-api/?WT.mc_id=academic-77952-leestott) ਨੂੰ ਲਵੋ ਤਾਂ ਜੋ ਹੋਰ ਸਿੱਖਿਆ ਜਾਵੇ ਅਤੇ ਭਾਵਨਾ ਦੀ ਪੜਤਾਲ ਲਈ ਵੱਖ-ਵੱਖ ਉਪਕਰਨ ਵਰਤੇ ਜਾ ਸਕਣ। +## ਅਸਾਈਨਮੈਂਟ -[ਇੱਕ ਵੱਖਰਾ ਡਾਟਾਸੈੱਟ ਅਜ਼ਮਾਓ](assignment.md) +[ਕਿਸੇ ਹੋਰ ਡੇਟਾਸੈੱਟ ਨੂੰ ਅਜ਼ਮਾਓ](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/7-TimeSeries/1-Introduction/README.md b/translations/pa/7-TimeSeries/1-Introduction/README.md index 6c0cde14d..58107440c 100644 --- a/translations/pa/7-TimeSeries/1-Introduction/README.md +++ b/translations/pa/7-TimeSeries/1-Introduction/README.md @@ -1,60 +1,60 @@ -# ਟਾਈਮ ਸੀਰੀਜ਼ ਫੋਰਕਾਸਟਿੰਗ ਦਾ ਪਰਚੇ +# ਸਮੇਂ ਦੀ ਲੜੀ ਅਨੁਮਾਨ ਲਗਾਉਣ ਦਾ ਪਰਿਚਯ -![ਟਾਈਮ ਸੀਰੀਜ਼ ਦਾ ਸਾਰ](../../../../sketchnotes/ml-timeseries.png) +![ਸਮੇਂ ਦੀ ਲੜੀ ਦਾ ਸਾਰ ਇੱਕ ਸਕੈਚਨੋਟ ਵਿੱਚ](../../../../translated_images/pa/ml-timeseries.fb98d25f1013fc0c.webp) -> ਸਕੈਚਨੋਟ [Tomomi Imura](https://www.twitter.com/girlie_mac) ਵੱਲੋਂ +> ਸਕੈਚਨੋਟ [Tomomi Imura](https://www.twitter.com/girlie_mac) ਵਲੋਂ -ਇਸ ਪਾਠ ਅਤੇ ਅਗਲੇ ਪਾਠ ਵਿੱਚ, ਤੁਸੀਂ ਟਾਈਮ ਸੀਰੀਜ਼ ਫੋਰਕਾਸਟਿੰਗ ਬਾਰੇ ਕੁਝ ਸਿੱਖੋਗੇ, ਜੋ ਕਿ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਵਿਗਿਆਨੀ ਦੇ ਸੰਦਾਂ ਵਿੱਚ ਇੱਕ ਦਿਲਚਸਪ ਅਤੇ ਕੀਮਤੀ ਹਿੱਸਾ ਹੈ। ਇਹ ਵਿਸ਼ਾ ਹੋਰਾਂ ਦੇ ਮੁਕਾਬਲੇ ਘੱਟ ਜਾਣਿਆ ਜਾਂਦਾ ਹੈ। ਟਾਈਮ ਸੀਰੀਜ਼ ਫੋਰਕਾਸਟਿੰਗ ਇੱਕ ਤਰ੍ਹਾਂ ਦਾ 'ਕ੍ਰਿਸਟਲ ਬਾਲ' ਹੈ: ਜਿਵੇਂ ਕਿ ਕੀਮਤ ਵਰਗੇ ਪਿਛਲੇ ਪ੍ਰਦਰਸ਼ਨ ਦੇ ਆਧਾਰ 'ਤੇ, ਤੁਸੀਂ ਇਸਦੀ ਭਵਿੱਖ ਦੀ ਸੰਭਾਵਿਤ ਕੀਮਤ ਦੀ ਪੇਸ਼ਗੂਈ ਕਰ ਸਕਦੇ ਹੋ। +ਇਸ ਪਾਠ ਅਤੇ ਅੱਗਲੇ ਵਿਚ, ਤੁਸੀਂ ਸਮੇਂ ਦੀ ਲੜੀ ਅਨੁਮਾਨ ਲਗਾਉਣ ਬਾਰੇ ਕੁਝ ਜਾਣੋਗੇ, ਜੋ ਕਿ ਇੱਕ ਮਨੋਹਰ ਅਤੇ ਕੀਮਤੀ ਹਿੱਸਾ ਹੈ ML ਵਿਗਿਆਨੀ ਦੇ ਕਲੇਕਸ਼ਨ ਦਾ, ਜੋ ਹੋਰ ਵਿਸ਼ਿਆਂ ਨਾਲੋਂ ਥੋੜ੍ਹਾ ਘੱਟ ਜਾਣਿਆ ਜਾਂਦਾ ਹੈ। ਸਮੇਂ ਦੀ ਲੜੀ ਅਨੁਮਾਨ ਲਗਾਉਣਾ ਇੱਕ ਤਰ੍ਹਾਂ ਦਾ 'ਕ੍ਰਿਸਟਲ ਬਾਲ' ਹੈ: ਕਿਸੇ ਵੈਰੀਏਬਲ ਜਿਵੇਂ ਕੀ ਕੀਮਤ ਦੇ ਪਿਛਲੇ ਪ੍ਰਦਰਸ਼ਨ ਦੇ ਆਧਾਰ 'ਤੇ, ਤੁਸੀਂ ਇਸ ਦੀ ਭਵਿੱਖੀ ਸੰਭਾਵਿਤ ਕੀਮਤ ਦੀ ਭਵਿੱਖਬਾਣੀ ਕਰ ਸਕਦੇ ਹੋ। -[![ਟਾਈਮ ਸੀਰੀਜ਼ ਫੋਰਕਾਸਟਿੰਗ ਦਾ ਪਰਚੇ](https://img.youtube.com/vi/cBojo1hsHiI/0.jpg)](https://youtu.be/cBojo1hsHiI "ਟਾਈਮ ਸੀਰੀਜ਼ ਫੋਰਕਾਸਟਿੰਗ ਦਾ ਪਰਚੇ") +[![ਸਮੇਂ ਦੀ ਲੜੀ ਅਨੁਮਾਨ ਲਗਾਉਣ ਦਾ ਪਰਿਚਯ](https://img.youtube.com/vi/cBojo1hsHiI/0.jpg)](https://youtu.be/cBojo1hsHiI "ਸਮੇਂ ਦੀ ਲੜੀ ਅਨੁਮਾਨ ਲਗਾਉਣ ਦਾ ਪਰਿਚਯ") -> 🎥 ਉਪਰੋਕਤ ਚਿੱਤਰ 'ਤੇ ਕਲਿਕ ਕਰੋ ਟਾਈਮ ਸੀਰੀਜ਼ ਫੋਰਕਾਸਟਿੰਗ ਬਾਰੇ ਵੀਡੀਓ ਦੇਖਣ ਲਈ +> 🎥 ਸਮੇਂ ਦੀ ਲੜੀ ਅਨੁਮਾਨ ਲਗਾਉਣ ਬਾਰੇ ਵੀਡੀਓ ਲਈ ਉੱਪਰ ਦਿੱਤੀ ਤਸਵੀਰ 'ਤੇ ਕਲਿੱਕ ਕਰੋ -## [ਪ੍ਰੀ-ਲੈਕਚਰ ਕਵਿਜ਼](https://ff-quizzes.netlify.app/en/ml/) +## [ਪ੍ਰੀ-ਲੇਕਚਰ ਕੁਇਜ਼](https://ff-quizzes.netlify.app/en/ml/) -ਇਹ ਇੱਕ ਉਪਯੋਗੀ ਅਤੇ ਦਿਲਚਸਪ ਖੇਤਰ ਹੈ ਜਿਸਦਾ ਕਾਰੋਬਾਰ ਲਈ ਅਸਲ ਮੁੱਲ ਹੈ, ਕਿਉਂਕਿ ਇਸਦਾ ਸਿੱਧਾ ਲਾਗੂ ਕੀਮਤਾਂ, ਸਟਾਕ ਅਤੇ ਸਪਲਾਈ ਚੇਨ ਸਮੱਸਿਆਵਾਂ 'ਤੇ ਹੁੰਦਾ ਹੈ। ਜਦੋਂ ਕਿ ਡੀਪ ਲਰਨਿੰਗ ਤਕਨੀਕਾਂ ਨੂੰ ਭਵਿੱਖ ਦੇ ਪ੍ਰਦਰਸ਼ਨ ਦੀ ਪੇਸ਼ਗੂਈ ਕਰਨ ਲਈ ਹੋਰ ਅੰਦਰੂਨੀ ਜਾਣਕਾਰੀ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾ ਰਿਹਾ ਹੈ, ਟਾਈਮ ਸੀਰੀਜ਼ ਫੋਰਕਾਸਟਿੰਗ ਅਜੇ ਵੀ ਕਲਾਸਿਕ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਤਕਨੀਕਾਂ ਦੁਆਰਾ ਬਹੁਤ ਸੂਚਿਤ ਖੇਤਰ ਹੈ। +ਇਹ ਇੱਕ ਲਾਭਕਾਰੀ ਅਤੇ ਮਨੋਹਰ ਖੇਤਰ ਹੈ ਜਿਸਦਾ ਕਾਰੋਬਾਰ ਵਿੱਚ ਵਾਸਤਵਿਕ ਮੁੱਲ ਹੈ, ਕਿਉਂਕਿ ਇਹ ਮੁਲਾਂਕਣ, ਜਥੇਬੰਦੀ, ਅਤੇ ਸਪਲਾਈ ਚੇਨ ਦੇ ਸਮੱਸਿਆਵਾਂ 'ਤੇ ਸਿੱਧੇ ਤੌਰ 'ਤੇ ਲਾਗੂ ਹੁੰਦਾ ਹੈ। ਹਾਲਾਂਕਿ ਡੀਪ ਲਰਨਿੰਗ ਤਕਨੀਕਾਂ ਨੂੰ ਭਵਿੱਖੀ ਪ੍ਰਦਰਸ਼ਨ ਨੂੰ ਵਧੀਆ ਤਰ੍ਹਾਂ ਭਵਿੱਖਬਾਣੀ ਕਰਨ ਲਈ ਜ਼ਿਆਦਾ ਅੰਦਰੂਨੀ ਜਾਣਕਾਰੀ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਵਰਤਣਾ ਸ਼ੁਰੂ ਕਰ ਦਿੱਤਾ ਗਿਆ ਹੈ, ਸਮੇਂ ਦੀ ਲੜੀ ਅਨੁਮਾਨ ਲਗਾਉਣਾ ਅਜੇ ਵੀ ਕਲਾਸਿਕ ML ਤਕਨੀਕਾਂ ਨਾਲ ਬਹੁਤ ਪ੍ਰਭਾਵਿਤ ਖੇਤਰ ਹੈ। -> ਪੈਨ ਸਟੇਟ ਦਾ ਉਪਯੋਗ ਟਾਈਮ ਸੀਰੀਜ਼ ਕਰਿਕੁਲਮ [ਇਥੇ](https://online.stat.psu.edu/stat510/lesson/1) ਮਿਲ ਸਕਦਾ ਹੈ +> ਪੈਨ ਸਟੇਟ ਦਾ ਲਾਭਕਾਰੀ ਸਮੇਂ ਦੀ ਲੜੀ ਯੋਜਨਾ [ਇੱਥੇ](https://online.stat.psu.edu/stat510/lesson/1) ਮਿਲ ਸਕਦੀ ਹੈ -## ਪਰਚੇ +## ਪਰਿਚਯ -ਮੰਨ ਲਓ ਕਿ ਤੁਸੀਂ ਸਮਾਰਟ ਪਾਰਕਿੰਗ ਮੀਟਰਾਂ ਦੀ ਇੱਕ ਲੜੀ ਨੂੰ ਰੱਖਦੇ ਹੋ ਜੋ ਸਮੇਂ ਦੇ ਨਾਲ ਕਿੰਨੀ ਵਾਰ ਅਤੇ ਕਿੰਨੀ ਦੇਰ ਲਈ ਵਰਤੇ ਜਾਂਦੇ ਹਨ, ਇਸ ਬਾਰੇ ਡਾਟਾ ਪ੍ਰਦਾਨ ਕਰਦੇ ਹਨ। +ਧਾਰਾ ਕਰੋ ਕਿ ਤੁਸੀਂ ਸਮਾਰਟ ਪਾਰਕਿੰਗ ਮੀਟਰਾਂ ਦੀ ਇਕ ਐਰੇ ਨੂੰ ਦੇਖਭਾਲ ਕਰਦੇ ਹੋ ਜੋ ਇਹ ਡਾਟਾ ਦਿੰਦੇ ਹਨ ਕਿ ਉਹ ਕਿੰਨੀ ਵਾਰ ਅਤੇ ਕਿੰਨੇ ਸਮੇਂ ਲਈ ਵਰਤੇ ਗਏ ਹਨ। -> ਕੀ ਤੁਸੀਂ ਮੀਟਰ ਦੇ ਪਿਛਲੇ ਪ੍ਰਦਰਸ਼ਨ ਦੇ ਆਧਾਰ 'ਤੇ, ਸਪਲਾਈ ਅਤੇ ਮੰਗ ਦੇ ਨਿਯਮਾਂ ਅਨੁਸਾਰ ਇਸਦੀ ਭਵਿੱਖ ਦੀ ਕੀਮਤ ਦੀ ਪੇਸ਼ਗੂਈ ਕਰ ਸਕਦੇ ਹੋ? +> ਜੇ ਤੁਸੀਂ ਮੀਟਰ ਦੇ ਪਿਛਲੇ ਪ੍ਰਦਰਸ਼ਨ ਦੇ ਆਧਾਰ 'ਤੇ, ਸਪਲਾਈ ਅਤੇ ਡਿਮਾਂਡ ਦੇ ਕਾਨੂੰਨਾਂ ਅਨੁਸਾਰ, ਇਸ ਦੀ ਭਵਿੱਖੀ ਕੀਮਤ ਦੀ ਭਵਿੱਖਬਾਣੀ ਕਰ ਸਕਦੇ ਹੋ ਤਾਂ ਕੀ ਹੁੰਦਾ? -ਸਹੀ ਸਮੇਂ 'ਤੇ ਕਾਰਵਾਈ ਕਰਨ ਦੀ ਪੇਸ਼ਗੂਈ ਕਰਨਾ, ਤਾਂ ਜੋ ਆਪਣੇ ਲਕਸ਼ ਨੂੰ ਪ੍ਰਾਪਤ ਕੀਤਾ ਜਾ ਸਕੇ, ਇੱਕ ਚੁਣੌਤੀ ਹੈ ਜਿਸਨੂੰ ਟਾਈਮ ਸੀਰੀਜ਼ ਫੋਰਕਾਸਟਿੰਗ ਦੁਆਰਾ ਹੱਲ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਇਹ ਲੋਕਾਂ ਨੂੰ ਖੁਸ਼ ਨਹੀਂ ਕਰੇਗਾ ਜੇ ਉਹਨਾਂ ਨੂੰ ਵਧੇਰੇ ਭੀੜ ਵਾਲੇ ਸਮੇਂ ਵਿੱਚ ਜ਼ਿਆਦਾ ਚਾਰਜ ਕੀਤਾ ਜਾਵੇ ਜਦੋਂ ਉਹ ਪਾਰਕਿੰਗ ਸਪਾਟ ਦੀ ਭਾਲ ਕਰ ਰਹੇ ਹਨ, ਪਰ ਇਹ ਸੜਕਾਂ ਦੀ ਸਫਾਈ ਲਈ ਰੇਵਨਿਊ ਪੈਦਾ ਕਰਨ ਦਾ ਇੱਕ ਯਕੀਨੀ ਤਰੀਕਾ ਹੋਵੇਗਾ! +ਸਹੀ ਤਰੀਕੇ ਨਾਲ ਅਗਲੇ ਕਦਮ ਦੀ ਭਵਿੱਖਬਾਣੀ ਕਰਨਾ ਜੋ ਤੁਹਾਡੇ ਲਕੜੀ ਨੂੰ ਪੂਰਾ ਕਰੇ ਇੱਕ ਚੁਣੌਤੀ ਹੈ ਜੋ ਸਮੇਂ ਦੀ ਲੜੀ ਅਨੁਮਾਨ ਲਗਾਉਣ ਰਾਹੀਂ ਹੱਲ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ। ਰੁਜ਼gars਼ੀ ਵਾਰ 'ਤੇ ਵਧੇਰੇ ਚਾਰਜ ਲਾਇਆ ਜਾਣ ਵਾਲਾ ਹੁਣਦਾ ਤਾਂ ਲੋਕ ਖੁਸ਼ ਨਹੀਂ ਹੁੰਦੇ ਪਰ ਇਹ ਸੜਕਾਂ ਨੂੰ ਸਾਫ਼ ਕਰਨ ਲਈ ਵਿੱਤ ਪੈਦਾ ਕਰਨ ਦਾ ਨਿਸ਼ਚਿਤ ਤਰੀਕਾ ਹੁੰਦਾ! -ਆਓ ਕੁਝ ਟਾਈਮ ਸੀਰੀਜ਼ ਐਲਗੋਰਿਥਮਾਂ ਦੀ ਜਾਂਚ ਕਰੀਏ ਅਤੇ ਡਾਟਾ ਸਾਫ਼ ਅਤੇ ਤਿਆਰ ਕਰਨ ਲਈ ਇੱਕ ਨੋਟਬੁੱਕ ਸ਼ੁਰੂ ਕਰੀਏ। ਤੁਸੀਂ ਜਿਸ ਡਾਟਾ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰਨ ਜਾ ਰਹੇ ਹੋ, ਉਹ GEFCom2014 ਫੋਰਕਾਸਟਿੰਗ ਮੁਕਾਬਲੇ ਤੋਂ ਲਿਆ ਗਿਆ ਹੈ। ਇਸ ਵਿੱਚ 2012 ਤੋਂ 2014 ਤੱਕ 3 ਸਾਲਾਂ ਦੇ ਘੰਟਾਵਾਰੀ ਬਿਜਲੀ ਲੋਡ ਅਤੇ ਤਾਪਮਾਨ ਮੁੱਲ ਸ਼ਾਮਲ ਹਨ। ਬਿਜਲੀ ਲੋਡ ਅਤੇ ਤਾਪਮਾਨ ਦੇ ਇਤਿਹਾਸਕ ਪੈਟਰਨ ਦੇ ਆਧਾਰ 'ਤੇ, ਤੁਸੀਂ ਬਿਜਲੀ ਲੋਡ ਦੇ ਭਵਿੱਖ ਦੇ ਮੁੱਲ ਦੀ ਪੇਸ਼ਗੂਈ ਕਰ ਸਕਦੇ ਹੋ। +ਆਓ ਸਮੇਂ ਦੀ ਲੜੀ ਦੇ ਕੁਝ ਐਲਗੋਰਿਧਮਾਂ ਦੀਆਂ ਕਿਸਮਾਂ ਨੂੰ ਵੇਖੀਏ ਅਤੇ ਕੁਝ ਡਾਟਾ ਸਾਫ਼ ਕਰਨ ਅਤੇ ਤਿਆਰ ਕਰਨ ਲਈ ਇੱਕ ਨੋਟਬੁੱਕ ਸ਼ੁਰੂ ਕਰੀਏ। ਤੁਸੀਂ ਜਿਹੜਾ ਡਾਟਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰੋਗੇ ਉਹ GEFCom2014 ਅਨੁਮਾਨ ਲਗਾਉਣ ਮੁਕਾਬਲੇ ਤੋਂ ਲਿਆਇਆ ਗਿਆ ਹੈ। ਇਹ 2012 ਤੋਂ 2014 ਤੱਕ 3 ਸਾਲਾਂ ਦੇ ਘੰਟੇ ਵਾਰ ਬਿਜਲੀ ਬੋਝ ਅਤੇ ਤਾਪਮਾਨ ਮੁੱਲਾਂ ਦਾ ਸਮੇਤ ਹੈ। ਰਿਕਾਰਡ ਕੀਤੇ ਬਿਜਲੀ ਲੋਡ ਅਤੇ ਤਾਪਮਾਨ ਦੇ ਇਤਿਹਾਸਕ ਨਮੂਨਿਆਂ ਦੇ ਆਧਾਰ 'ਤੇ, ਤੁਸੀਂ ਭਵਿੱਖ ਦੇ ਬਿਜਲੀ ਲੋਡ ਨੂੰ ਅਨੁਮਾਨ ਲਗਾ ਸਕਦੇ ਹੋ। -ਇਸ ਉਦਾਹਰਨ ਵਿੱਚ, ਤੁਸੀਂ ਸਿਰਫ ਇਤਿਹਾਸਕ ਲੋਡ ਡਾਟਾ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇੱਕ ਟਾਈਮ ਸਟੈਪ ਅੱਗੇ ਦੀ ਪੇਸ਼ਗੂਈ ਕਰਨ ਦਾ ਤਰੀਕਾ ਸਿੱਖੋਗੇ। ਪਰ ਸ਼ੁਰੂ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ, ਇਹ ਸਮਝਣਾ ਉਪਯੋਗ ਹੈ ਕਿ ਪਿੱਛੇ ਕੀ ਚੱਲ ਰਿਹਾ ਹੈ। +ਇਸ ਉਦਾਹਰਨ ਵਿੱਚ, ਤੁਸੀਂ ਸਿੱਖੋਗੇ ਕਿ ਕੇਵਲ ਇਤਿਹਾਸਕ ਲੋਡ ਡਾਟਾ ਵਰਤ ਕੇ ਇਕ ਸਮੇਂ ਕਦਮ ਅੱਗੇ ਕਿਵੇਂ ਅਨੁਮਾਨ ਲਗਾਉਣਾ ਹੈ। ਸ਼ੁਰੂ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ, ਇਹ ਸਮਝਣਾ ਲਾਭਕਾਰੀ ਹੈ ਕਿ ਦ੍ਰਿਸ਼ ਮੰਡਲ ਦੇ ਪਿੱਛੇ ਕੀ ਹੋ ਰਿਹਾ ਹੈ। ## ਕੁਝ ਪਰਿਭਾਸ਼ਾਵਾਂ -ਜਦੋਂ ਤੁਸੀਂ 'ਟਾਈਮ ਸੀਰੀਜ਼' ਸ਼ਬਦ ਨੂੰ ਸੁਣਦੇ ਹੋ, ਤਾਂ ਤੁਹਾਨੂੰ ਇਸਦੇ ਕਈ ਵੱਖ-ਵੱਖ ਸੰਦਰਭਾਂ ਵਿੱਚ ਵਰਤੋਂ ਨੂੰ ਸਮਝਣ ਦੀ ਲੋੜ ਹੈ। +'ਸਮੇਂ ਦੀ ਲੜੀ' ਸ਼ਬਦ ਮਿਲਣ 'ਤੇ ਤੁਹਾਨੂੰ ਇਹ ਸਮਝਣਾ ਚਾਹੀਦਾ ਹੈ ਕਿ ਇਹ ਕਈ ਵੱਖ-ਵੱਖ ਸੰਦਰਭਾਂ ਵਿੱਚ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ। -🎓 **ਟਾਈਮ ਸੀਰੀਜ਼** +🎓 **ਸਮੇਂ ਦੀ ਲੜੀ** -ਗਣਿਤ ਵਿੱਚ, "ਟਾਈਮ ਸੀਰੀਜ਼ ਡਾਟਾ ਪੌਇੰਟਸ ਦੀ ਇੱਕ ਲੜੀ ਹੈ ਜੋ ਸਮੇਂ ਦੇ ਕ੍ਰਮ ਵਿੱਚ ਸੂਚੀਬੱਧ (ਜਾਂ ਗ੍ਰਾਫ) ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਸਭ ਤੋਂ ਆਮ ਤੌਰ 'ਤੇ, ਟਾਈਮ ਸੀਰੀਜ਼ ਇੱਕ ਲੜੀ ਹੈ ਜੋ ਸਮੇਂ ਦੇ ਸਮਾਨ ਅੰਤਰਾਲ 'ਤੇ ਲਿਆ ਜਾਂਦਾ ਹੈ।" ਟਾਈਮ ਸੀਰੀਜ਼ ਦਾ ਇੱਕ ਉਦਾਹਰਨ [Dow Jones Industrial Average](https://wikipedia.org/wiki/Time_series) ਦੀ ਦਿਨਾਂ ਦੀ ਬੰਦ ਕੀਮਤ ਹੈ। ਟਾਈਮ ਸੀਰੀਜ਼ ਪਲਾਟ ਅਤੇ ਸਾਂਖਿਕ ਮਾਡਲਿੰਗ ਦੀ ਵਰਤੋਂ ਅਕਸਰ ਸਿਗਨਲ ਪ੍ਰੋਸੈਸਿੰਗ, ਮੌਸਮ ਦੀ ਪੇਸ਼ਗੂਈ, ਭੂਚਾਲ ਦੀ ਪੇਸ਼ਗੂਈ, ਅਤੇ ਹੋਰ ਖੇਤਰਾਂ ਵਿੱਚ ਕੀਤੀ ਜਾਂਦੀ ਹੈ ਜਿੱਥੇ ਘਟਨਾਵਾਂ ਹੁੰਦੀਆਂ ਹਨ ਅਤੇ ਡਾਟਾ ਪੌਇੰਟਸ ਨੂੰ ਸਮੇਂ ਦੇ ਨਾਲ ਪਲਾਟ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। +ਗਣਿਤ ਵਿੱਚ, "ਸਮੇਂ ਦੀ ਲੜੀ ਉਹ ਡਾਟਾ ਬਿੰਦੂਆਂ ਦੀ ਲੜੀ ਹੁੰਦੀ ਹੈ ਜੋ ਸਮੇਂ ਦੇ ਕ੍ਰਮ ਵਿੱਚ ਸੂਚੀਬੱਧ (ਜਾਂ ਗ੍ਰਾਫ ਕੀਤੇ ਹੋਏ) ਹੁੰਦੇ ਹਨ। ਸਭ ਤੋਂ ਆਮ ਤਰੀਕੇ ਨਾਲ, ਇੱਕ ਸਮੇਂ ਦੀ ਲੜੀ ਸਮੇਂ ਵਿੱਚ ਬਰਾਬਰ ਖੰਡਿਤ ਤੀਕੜੇ 'ਤੇ ਲੈਈ ਗਈ ਲੜੀ ਹੁੰਦੀ ਹੈ।" ਸਮੇਂ ਦੀ ਲੜੀ ਦਾ ਉਦਾਹਰਨ ਹੈ [ਡਾਊ ਜੋਨਜ਼ ਇੰਡਸਟ੍ਰੀਅਲ ਐਵਰੇਜ਼](https://wikipedia.org/wiki/Time_series) ਦਾ ਰੋਜ਼ਾਨਾ ਕਲੋਜ਼ਿੰਗ ਮੁੱਲ। ਸਮੇਂ ਦੀ ਲੜੀ ਦੇ ਚਿੱਤਰ ਅਤੇ ਅੰਕੜਾ ਮਾਡਲਿੰਗ ਪਾਵਣੀ ਪ੍ਰਕਿਰਿਆ, ਮੌਸਮ ਦੇ ਭਵਿੱਖਬਾਣੀ, ਭੂਚਾਲ ਅਨੁਮਾਨ ਅਤੇ ਹੋਰ ਖੇਤਰਾਂ ਵਿੱਚ ਬਹੁਤ ਪ੍ਰਚਲਿਤ ਹਨ ਜਿੱਥੇ ਘਟਨਾਵਾਂ ਹੁੰਦੀਆਂ ਹਨ ਅਤੇ ਡਾਟਾ ਬਿੰਦੂ ਸਮੇਂ ਦੇ ਨਾਲ ਗ੍ਰਾਫ ਕੀਤੇ ਜਾ ਸਕਦੇ ਹਨ। -🎓 **ਟਾਈਮ ਸੀਰੀਜ਼ ਵਿਸ਼ਲੇਸ਼ਣ** +🎓 **ਸਮੇਂ ਦੀ ਲੜੀ ਵਿਸ਼ਲੇਸ਼ਣ** -ਟਾਈਮ ਸੀਰੀਜ਼ ਵਿਸ਼ਲੇਸ਼ਣ, ਉਪਰੋਕਤ ਟਾਈਮ ਸੀਰੀਜ਼ ਡਾਟਾ ਦੀ ਵਿਸ਼ਲੇਸ਼ਣ ਹੈ। ਟਾਈਮ ਸੀਰੀਜ਼ ਡਾਟਾ ਵੱਖ-ਵੱਖ ਰੂਪ ਲੈ ਸਕਦਾ ਹੈ, ਜਿਸ ਵਿੱਚ 'ਇੰਟਰਪਟਡ ਟਾਈਮ ਸੀਰੀਜ਼' ਸ਼ਾਮਲ ਹੈ ਜੋ ਕਿਸੇ ਘਟਨਾ ਤੋਂ ਪਹਿਲਾਂ ਅਤੇ ਬਾਅਦ ਟਾਈਮ ਸੀਰੀਜ਼ ਦੇ ਵਿਕਾਸ ਵਿੱਚ ਪੈਟਰਨ ਦੀ ਪਛਾਣ ਕਰਦਾ ਹੈ। ਟਾਈਮ ਸੀਰੀਜ਼ ਲਈ ਲੋੜੀਂਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਡਾਟਾ ਦੀ ਪ੍ਰਕਿਰਤੀ 'ਤੇ ਨਿਰਭਰ ਕਰਦਾ ਹੈ। ਟਾਈਮ ਸੀਰੀਜ਼ ਡਾਟਾ ਖੁਦ ਨੰਬਰਾਂ ਜਾਂ ਅੱਖਰਾਂ ਦੀ ਲੜੀ ਦੇ ਰੂਪ ਵਿੱਚ ਹੋ ਸਕਦਾ ਹੈ। +ਸਮੇਂ ਦੀ ਲੜੀ ਵਿਸ਼ਲੇਸ਼ਣ ਉਪਰ ਦਿੱਤੇ ਸਮੇਂ ਦੀ ਲੜੀ ਡਾਟਾ ਦੀ ਵਿਸ਼ਲੇਸ਼ਣ ਹੈ। ਸਮੇਂ ਦੀ ਲੜੀ ਡਾਟਾ ਵੱਖ-ਵੱਖ ਰੂਪ ਲੈ ਸਕਦਾ ਹੈ, ਜਿਸ ਵਿੱਚ 'ਰੁੱਕੀ ਹੋਈ ਸਮੇਂ ਦੀ ਲੜੀ' ਵੀ ਸ਼ਾਮਲ ਹੈ ਜੋ ਕਿਸੇ ਰੁਕਾਵਟ ਵਾਕਏ ਤੋਂ ਪਹਿਲਾਂ ਅਤੇ ਬਾਅਦ ਸਮੇਂ ਦੀ ਲੜੀ ਦੇ ਵਿਕਾਸ ਵਿੱਚ ਰੁਝਾਨਾਂ ਦਾ ਪਤਾ ਲਗਾਉਂਦੀ ਹੈ। ਸਮੇਂ ਦੀ ਲੜੀ ਲਈ ਜਰੂਰੀ ਵਿਸ਼ਲੇਸ਼ਣ ਕਿਸਮ ਡਾਟਾ ਦੀ ਕੁਦਰਤ 'ਤੇ ਨਿਰਭਰ ਕਰਦਾ ਹੈ। ਸਮੇਂ ਦੀ ਲੜੀ ਡਾਟਾ ਅੱਖਰਾਂ ਜਾਂ ਅੰਕਾਂ ਦੀ ਲੜੀ ਦੇ ਰੂਪ ਵਿੱਚ ਹੋ ਸਕਦਾ ਹੈ। -ਵਿਸ਼ਲੇਸ਼ਣ ਕਰਨ ਲਈ ਕਈ ਤਰੀਕੇ ਵਰਤੇ ਜਾਂਦੇ ਹਨ, ਜਿਵੇਂ ਕਿ ਫ੍ਰੀਕਵੈਂਸੀ-ਡੋਮੇਨ ਅਤੇ ਟਾਈਮ-ਡੋਮੇਨ, ਲੀਨੀਅਰ ਅਤੇ ਨਾਨ-ਲੀਨੀਅਰ, ਅਤੇ ਹੋਰ। [ਹੋਰ ਜਾਣੋ](https://www.itl.nist.gov/div898/handbook/pmc/section4/pmc4.htm) ਇਸ ਕਿਸਮ ਦੇ ਡਾਟਾ ਨੂੰ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰਨ ਦੇ ਕਈ ਤਰੀਕਿਆਂ ਬਾਰੇ। +ਕੀਤਾ ਜਾਣ ਵਾਲਾ ਵਿਸ਼ਲੇਸ਼ਣ ਵੱਖ-ਵੱਖ ਤਰੀਕਿਆਂ ਦਾ ਉਪਯੋਗ ਕਰਦਾ ਹੈ, ਜਿਸ ਵਿੱਚ ਫ੍ਰਿਕਵੈਂਸੀ-ਡੋਮੇਨ ਅਤੇ ਸਮੇਂ-ਡੋਮੇਨ, ਲੀਨੀਅਰ ਅਤੇ ਗੈਰ-ਲੀਨੀਅਰ, ਅਤੇ ਹੋਰ ਸ਼ਾਮਲ ਹਨ। [ਹੋਰ ਜਾਣੋ](https://www.itl.nist.gov/div898/handbook/pmc/section4/pmc4.htm) ਇਸ ਕਿਸਮ ਦੇ ਡਾਟਾ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰਨ ਦੇ ਕਈ ਤਰੀਕੇ ਬਾਰੇ। -🎓 **ਟਾਈਮ ਸੀਰੀਜ਼ ਫੋਰਕਾਸਟਿੰਗ** +🎓 **ਸਮੇਂ ਦੀ ਲੜੀ ਅਨੁਮਾਨ ਲਗਾਉਣਾ** -ਟਾਈਮ ਸੀਰੀਜ਼ ਫੋਰਕਾਸਟਿੰਗ ਇੱਕ ਮਾਡਲ ਦੀ ਵਰਤੋਂ ਹੈ ਜੋ ਪਿਛਲੇ ਡਾਟਾ ਦੁਆਰਾ ਦਿਖਾਏ ਗਏ ਪੈਟਰਨਾਂ ਦੇ ਆਧਾਰ 'ਤੇ ਭਵਿੱਖ ਦੇ ਮੁੱਲਾਂ ਦੀ ਪੇਸ਼ਗੂਈ ਕਰਦਾ ਹੈ। ਜਦੋਂ ਕਿ ਟਾਈਮ ਸੀਰੀਜ਼ ਡਾਟਾ ਦੀ ਜਾਂਚ ਕਰਨ ਲਈ ਰਿਗਰੈਸ਼ਨ ਮਾਡਲਾਂ ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਸੰਭਵ ਹੈ, ਜਿੱਥੇ ਟਾਈਮ ਇੰਡੈਕਸ ਨੂੰ ਪਲਾਟ 'ਤੇ x ਵੈਰੀਏਬਲਾਂ ਵਜੋਂ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ, ਇਸ ਤਰ੍ਹਾਂ ਦੇ ਡਾਟਾ ਨੂੰ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰਨ ਲਈ ਵਿਸ਼ੇਸ਼ ਕਿਸਮ ਦੇ ਮਾਡਲਾਂ ਦੀ ਵਰਤੋਂ ਕਰਨੀ ਚੰਗੀ ਰਹਿੰਦੀ ਹੈ। +ਸਮੇਂ ਦੀ ਲੜੀ ਅਨੁਮਾਨ ਲਗਾਉਣਾ ਇੱਕ ਮਾਡਲ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਭਵਿੱਖੀ ਮੁੱਲਾਂ ਦੀ ਪੂਰਵ ਅਨੁਮਾਨਾ ਲਗਾਉਣਾ ਹੈ ਜੋ ਪਿਛਲੇ ਡਾਟਾ ਤੋਂ ਪ੍ਰਗਟ ਹੋਏ ਨਮੂਨਿਆਂ 'ਤੇ ਆਧਾਰਿਤ ਹੁੰਦਾ ਹੈ। ਜਦੋਂ ਕਿ ਸਮੇਂ ਦੀ ਲੜੀ ਡਾਟਾ ਨੂੰ ਸਮੇਂ ਦੇ ਅੰਕਾਂ ਨੂੰ x ਚਰ ਵਜੋਂ ਵਰਤ ਕੇ ਰੈਗ੍ਰੈਸ਼ਨ ਮਾਡਲ ਨਾਲ ਪੜਤਾਲ ਕਰਨਾ ਸੰਭਵ ਹੈ, ਇਸ ਤਰ੍ਹਾਂ ਦਾ ਡਾਟਾ ਵਿਸ਼ਲੇਸ਼ਣ ਖਾਸ ਕਿਸਮਾਂ ਦੇ ਮਾਡਲਾਂ ਨਾਲ ਕੀਤਾ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। -ਟਾਈਮ ਸੀਰੀਜ਼ ਡਾਟਾ ਇੱਕ ਆਰਡਰਡ ਅਬਜ਼ਰਵੇਸ਼ਨ ਦੀ ਸੂਚੀ ਹੈ, ਜੋ ਲੀਨੀਅਰ ਰਿਗਰੈਸ਼ਨ ਦੁਆਰਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰਨ ਵਾਲੇ ਡਾਟਾ ਤੋਂ ਵੱਖ ਹੈ। ਸਭ ਤੋਂ ਆਮ ਮਾਡਲ ARIMA ਹੈ, ਜੋ "Autoregressive Integrated Moving Average" ਦਾ ਸੰਖੇਪ ਹੈ। +ਸਮੇਂ ਦੀ ਲੜੀ ਡਾਟਾ ਇੱਕ ਆਰਡਰਡ ਨਿਰੀਖਣਾਂ ਦੀ ਸੂਚੀ ਹੁੰਦੀ ਹੈ, ਜੋ ਕਿ ਸਧਾਰਨ ਰੈਗ੍ਰੈਸ਼ਨ ਨਾਲ ਵਿਸ਼ਲੇਸ਼ਣ ਨਾ ਕੀਤੇ ਜਾ ਸਕਣ ਵਾਲੇ ਡਾਟਾ ਤੋਂ ਵੱਖਰਾ ਹੈ। ਸਭ ਤੋਂ ਆਮ ਮਾਡਲ ਹੈ ARIMA, ਜੋ "ਆਟੋਰੈਗ੍ਰੈਸੀਵ ਇੰਟੇਗਰੇਟਿਡ ਮੂਵਿੰਗ ਐਵਰੇਜ਼" ਲਈ ਅਖਰ ਹੈ। -[ARIMA ਮਾਡਲ](https://online.stat.psu.edu/stat510/lesson/1/1.1) "ਮੌਜੂਦਾ ਮੁੱਲ ਨੂੰ ਪਿਛਲੇ ਮੁੱਲਾਂ ਅਤੇ ਪਿਛਲੇ ਪੇਸ਼ਗੂਈ ਗਲਤੀਆਂ ਨਾਲ ਜੋੜਦੇ ਹਨ।" ਇਹ ਟਾਈਮ-ਡੋਮੇਨ ਡਾਟਾ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰਨ ਲਈ ਸਭ ਤੋਂ ਉਚਿਤ ਹਨ, ਜਿੱਥੇ ਡਾਟਾ ਸਮੇਂ ਦੇ ਨਾਲ ਆਰਡਰਡ ਹੁੰਦਾ ਹੈ। +[ARIMA ਮਾਡਲ](https://online.stat.psu.edu/stat510/lesson/1/1.1) "ਇੱਕ ਲੜੀ ਦੇ ਵਰਤਮਾਨ ਮੁੱਲ ਨੂੰ ਪਿਛਲੇ ਮੁੱਲਾਂ ਅਤੇ ਪਿਛਲੇ ਅਨੁਮਾਨ ਗਲਤੀਆਂ ਨਾਲ ਜੋੜਦੇ ਹਨ।" ਇਹ ਸਭ ਤੋਂ ਉਚਿਤ ਹੁੰਦੇ ਹਨ ਸਮੇਂ-ਡੋਮੇਨ ਡਾਟਾ ਦੇ ਵਿਸ਼ਲੇਸ਼ਣ ਲਈ, ਜਿੱਥੇ ਡਾਟਾ ਸਮੇਂ ਦੇ ਆਰਡਰ ਵਿੱਚ ਹੁੰਦਾ ਹੈ। -> ARIMA ਮਾਡਲਾਂ ਦੇ ਕਈ ਪ੍ਰਕਾਰ ਹਨ, ਜਿਨ੍ਹਾਂ ਬਾਰੇ ਤੁਸੀਂ [ਇਥੇ](https://people.duke.edu/~rnau/411arim.htm) ਸਿੱਖ ਸਕਦੇ ਹੋ ਅਤੇ ਜਿਨ੍ਹਾਂ ਨੂੰ ਤੁਸੀਂ ਅਗਲੇ ਪਾਠ ਵਿੱਚ ਛੂਹੋਗੇ। +> ARIMA ਮਾਡਲਾਂ ਦੀਆਂ ਕਈ ਕਿਸਮਾਂ ਹਨ, ਜਿਨ੍ਹਾਂ ਬਾਰੇ ਤੁਸੀਂ [ਇੱਥੇ](https://people.duke.edu/~rnau/411arim.htm) ਜਾਣ ਸਕਦੇ ਹੋ ਅਤੇ ਜੋ ਤੁਸੀਂ ਅਗਲੇ ਪਾਠ ਵਿੱਚ ਛੂਹੋਗੇ। -ਅਗਲੇ ਪਾਠ ਵਿੱਚ, ਤੁਸੀਂ [Univariate Time Series](https://itl.nist.gov/div898/handbook/pmc/section4/pmc44.htm) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇੱਕ ARIMA ਮਾਡਲ ਬਣਾਉਣ ਜਾ ਰਹੇ ਹੋ, ਜੋ ਇੱਕ ਵੈਰੀਏਬਲ 'ਤੇ ਧਿਆਨ ਕੇਂਦਰਿਤ ਕਰਦਾ ਹੈ ਜੋ ਸਮੇਂ ਦੇ ਨਾਲ ਆਪਣੀ ਕੀਮਤ ਬਦਲਦਾ ਹੈ। ਇਸ ਕਿਸਮ ਦੇ ਡਾਟਾ ਦਾ ਇੱਕ ਉਦਾਹਰਨ [ਇਹ ਡਾਟਾਸੈਟ](https://itl.nist.gov/div898/handbook/pmc/section4/pmc4411.htm) ਹੈ ਜੋ Mauna Loa Observatory ਵਿੱਚ ਮਾਸਿਕ CO2 ਸੰਕੇਂਦ੍ਰਤਾ ਨੂੰ ਦਰਜ ਕਰਦਾ ਹੈ: +ਅਗਲੇ ਪਾਠ ਵਿੱਚ, ਤੁਸੀਂ ਇੱਕ ARIMA ਮਾਡਲ ਬਣਾ ਸਕੋਗੇ ਜੋ [ਯੂਨੀਵੈਰੀਏਟ ਟਾਈਮ ਸੀਰੀਜ਼](https://itl.nist.gov/div898/handbook/pmc/section4/pmc44.htm) 'ਤੇ ਧਿਆਨ ਕੇਂਦਰਤ ਕਰਦਾ ਹੈ, ਜੋ ਇੱਕ ਵੈਰੀਏਬਲ ਨੂੰ ਕਵਰ ਕਰਦਾ ਹੈ ਜੋ ਸਮੇਂ ਦੇ ਨਾਲ ਆਪਣੀ ਕੀਮਤ ਬਦਲਦਾ ਹੈ। ਇਸ ਕਿਸਮ ਦੇ ਡਾਟਾ ਦਾ ਉਦਾਹਰਨ ਹੈ [ਇਹ ਡਾਟਾਸੇਟ](https://itl.nist.gov/div898/handbook/pmc/section4/pmc4411.htm) ਜੋ ਮਾਉਨਾ ਲੋਆ ਐਬਜ਼ਰਵੇਟਰੀ ਵਿੱਚ ਮਹੀਨਾਵਾਰ CO2 ਸੰਘਣਾਪਣ ਨੂੰ ਦਰਜ਼ ਕਰਦਾ ਹੈ: -| CO2 | YearMonth | Year | Month | +| CO2 | YearMonth | ਸਾਲ | ਮਹੀਨਾ | | :----: | :-------: | :---: | :---: | | 330.62 | 1975.04 | 1975 | 1 | | 331.40 | 1975.13 | 1975 | 2 | @@ -69,51 +69,51 @@ | 329.25 | 1975.88 | 1975 | 11 | | 330.97 | 1975.96 | 1975 | 12 | -✅ ਇਸ ਡਾਟਾਸੈਟ ਵਿੱਚ ਉਹ ਵੈਰੀਏਬਲ ਪਛਾਣੋ ਜੋ ਸਮੇਂ ਦੇ ਨਾਲ ਬਦਲਦਾ ਹੈ +✅ ਇਸ ਡਾਟਾਸੇਟ ਵਿੱਚ ਉਹ ਵੈਰੀਏਬਲ ਪਛਾਣੋ ਜੋ ਸਮੇਂ ਦੇ ਨਾਲ ਬਦਲਦਾ ਹੈ -## ਟਾਈਮ ਸੀਰੀਜ਼ ਡਾਟਾ ਦੀਆਂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ 'ਤੇ ਧਿਆਨ ਦੇਣਾ +## ਸਮੇਂ ਦੀ ਲੜੀ ਡਾਟਾ ਦੀਆਂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਜੋ ਧਿਆਨ ਵਿੱਚ ਲੈਣੀਆਂ ਚਾਹੀਦੀਆਂ ਹਨ -ਜਦੋਂ ਤੁਸੀਂ ਟਾਈਮ ਸੀਰੀਜ਼ ਡਾਟਾ ਨੂੰ ਦੇਖਦੇ ਹੋ, ਤਾਂ ਤੁਸੀਂ [ਕੁਝ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ](https://online.stat.psu.edu/stat510/lesson/1/1.1) ਨੂੰ ਨੋਟਿਸ ਕਰ ਸਕਦੇ ਹੋ ਜਿਨ੍ਹਾਂ ਨੂੰ ਸਮਝਣ ਲਈ ਅਤੇ ਪੈਟਰਨਾਂ ਨੂੰ ਬਿਹਤਰ ਸਮਝਣ ਲਈ ਘਟਾਉਣ ਦੀ ਲੋੜ ਹੋ ਸਕਦੀ ਹੈ। ਜੇ ਤੁਸੀਂ ਟਾਈਮ ਸੀਰੀਜ਼ ਡਾਟਾ ਨੂੰ ਸੰਭਾਵਿਤ ਤੌਰ 'ਤੇ ਇੱਕ 'ਸਿਗਨਲ' ਦੇ ਰੂਪ ਵਿੱਚ ਦੇਖਦੇ ਹੋ ਜਿਸਨੂੰ ਤੁਸੀਂ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ ਇਹ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ 'ਸ਼ੋਰ' ਵਜੋਂ ਸੋਚੀਆਂ ਜਾ ਸਕਦੀਆਂ ਹਨ। ਤੁਸੀਂ ਅਕਸਰ ਕੁਝ ਸਾਂਖਿਕ ਤਕਨੀਕਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇਸ 'ਸ਼ੋਰ' ਨੂੰ ਘਟਾਉਣ ਦੀ ਲੋੜ ਪੈਂਦੀ ਹੈ। +ਜਦੋਂ ਸਮੇਂ ਦੀ ਲੜੀ ਡਾਟਾ ਨੂੰ ਦੇਖਦੇ ਹੋ, ਤਾਂ ਤੁਸੀਂ ਜ਼ਾਹਰ ਕਰ ਸਕਦੇ ਹੋ ਕਿ ਇਸ ਵਿੱਚ [ਕੁਝ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ](https://online.stat.psu.edu/stat510/lesson/1/1.1) ਹੁੰਦੀਆਂ ਹਨ ਜਿਨ੍ਹਾਂ ਦਾ ਧਿਆਨ ਰੱਖਣਾ ਅਤੇ ਉਨ੍ਹਾਂ ਨੂੰ ਸੁਧਾਰਨਾ ਜ਼ਰੂਰੀ ਹੈ ਤਾਂ ਜੋ ਇਸਦੇ ਨਮੂਨਿਆਂ ਨੂੰ ਬੇਹਤਰ ਸਮਝਿਆ ਜਾ ਸਕੇ। ਜੇ ਤੁਸੀਂ ਸਮੇਂ ਦੀ ਲੜੀ ਡਾਟਾ ਨੂੰ ਇੱਕ 'ਸਿਗਨਲ' ਵਜੋਂ ਦੇਖਦੇ ਹੋ ਜੋ ਤੁਸੀਂ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ ਇਸਦੀ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਨੂੰ 'ਸ਼ੋਰ' ਸਮਝਿਆ ਜਾ ਸਕਦਾ ਹੈ। ਤੁਹਾਨੂੰ ਅਕਸਰ ਇਹ 'ਸ਼ੋਰ' ਘਟਾਉਣ ਲਈ ਕੁਝ ਅੰਕੜਾ ਤਕਨੀਕਾਂ ਦੀ ਵਰਤੋਂ ਨਾਲ ਇਨ੍ਹਾਂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਨੂੰ ਬਦਲਨਾ ਪੈਂਦਾ ਹੈ। -ਇਹاں ਕੁਝ ਸੰਕਲਪ ਹਨ ਜੋ ਤੁਹਾਨੂੰ ਟਾਈਮ ਸੀਰੀਜ਼ ਨਾਲ ਕੰਮ ਕਰਨ ਲਈ ਜਾਣਨ ਦੀ ਲੋੜ ਹੈ: +ਇੱਥੇ ਕੁਝ ਧਾਰਨਾਵਾਂ ਹਨ ਜਿਹਨਾਂ ਨੂੰ ਜਾਣਨਾ ਜ਼ਰੂਰੀ ਹੈ ਤਾਂ ਜੋ ਸਮੇਂ ਦੀ ਲੜੀ ਨਾਲ ਕੰਮ ਕੀਤਾ ਜਾ ਸਕੇ: -🎓 **ਟ੍ਰੈਂਡਸ** +🎓 **ਰੁਝਾਨ (ਟ੍ਰੇੰਡਸ)** -ਟ੍ਰੈਂਡਸ ਨੂੰ ਸਮੇਂ ਦੇ ਨਾਲ ਮਾਪਣਯੋਗ ਵਾਧੇ ਅਤੇ ਘਟਾਏ ਵਜੋਂ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। [ਹੋਰ ਪੜ੍ਹੋ](https://machinelearningmastery.com/time-series-trends-in-python)। ਟਾਈਮ ਸੀਰੀਜ਼ ਦੇ ਸੰਦਰਭ ਵਿੱਚ, ਇਹ ਇਸ ਬਾਰੇ ਹੈ ਕਿ ਟਾਈਮ ਸੀਰੀਜ਼ ਤੋਂ ਟ੍ਰੈਂਡਸ ਨੂੰ ਕਿਵੇਂ ਵਰਤਣਾ ਅਤੇ ਜੇ ਲੋੜ ਹੋਵੇ ਤਾਂ ਕਿਵੇਂ ਹਟਾਉਣਾ। +ਰੁਝਾਨ ਸਮੇਂ ਦੇ ਨਾਲ ਮਾਪਣਯੋਗ ਵਾਧੇ ਅਤੇ ਘਟਾਓ ਵਜੋਂ ਪਰਿਭਾਸ਼ਿਤ ਹੁੰਦੇ ਹਨ। [ਹੋਰ ਪੜ੍ਹੋ](https://machinelearningmastery.com/time-series-trends-in-python)। ਸਮੇਂ ਦੀ ਲੜੀ ਦੇ ਸੰਦਰਭ ਵਿੱਚ, ਇਹ ਰੁਝਾਨਾਂ ਨੂੰ ਵਰਤਣ ਅਤੇ ਜੇ ਲੋੜ ਹੋਵੇ ਤਾਂ ਹਟਾਉਣ ਬਾਰੇ ਹੈ। -🎓 **[ਮੌਸਮੀਤਾ](https://machinelearningmastery.com/time-series-seasonality-with-python/)** +🎓 **[ਮੌਸਮੀਅਤ (ਸੀਜ਼ਨੈਲਿਟੀ)](https://machinelearningmastery.com/time-series-seasonality-with-python/)** -ਮੌਸਮੀਤਾ ਨੂੰ ਆਵਰਤੀ ਉਤਾਰ-ਚੜ੍ਹਾਵਾਂ ਵਜੋਂ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਜਿਵੇਂ ਕਿ ਛੁੱਟੀਆਂ ਦੇ ਸਮੇਂ ਵਿੱਚ ਵਿਕਰੀ 'ਤੇ ਪ੍ਰਭਾਵ। [ਇਥੇ ਦੇਖੋ](https://itl.nist.gov/div898/handbook/pmc/section4/pmc443.htm) ਕਿ ਕਿਵੇਂ ਵੱਖ-ਵੱਖ ਕਿਸਮ ਦੇ ਪਲਾਟ ਡਾਟਾ ਵਿੱਚ ਮੌਸਮੀਤਾ ਨੂੰ ਦਰਸਾਉਂਦੇ ਹਨ। +ਮੌਸਮੀਅਤ ਹੇਠ-ਲੇਖਕ ਦੌਰਾਨ ਵਾਪਰਣ ਵਾਲੀਆਂ ਮੁੜਦੇ ਘਟਨਾਵਾਂ ਵਜੋਂ ਪਰਿਭਾਸ਼ਿਤ ਹੁੰਦੀ ਹੈ, ਜਿਵੇਂ ਛੁੱਟੀਆਂ ਦੌਰਾਨ ਵੱਡੀ ਖਰੀਦਦਾਰੀ, ਉਦਾਹਰਨ ਲਈ। [ਇੱਕ ਨਜ਼ਰ ਮਾਰੋ](https://itl.nist.gov/div898/handbook/pmc/section4/pmc443.htm) ਕਿ ਕਿਵੇਂ ਵੱਖ-ਵੱਖ ਪ੍ਰਕਾਰ ਦੇ ਚਿੱਤਰ ਡਾਟਾ ਵਿੱਚ ਮੌਸਮੀਅਤ ਦਰਸਾਉਂਦੇ ਹਨ। -🎓 **ਆਊਟਲਾਇਰਸ** +🎓 **ਆਉਟਲਾਇਰ** -ਆਊਟਲਾਇਰਸ ਸਟੈਂਡਰਡ ਡਾਟਾ ਵੈਰੀਅੰਸ ਤੋਂ ਬਹੁਤ ਦੂਰ ਹੁੰਦੇ ਹਨ। +ਆਉਟਲਾਇਰ ਮਿਆਰੀ ਡਾਟਾ ਵੈਰੀਅੰਸ ਤੋਂ ਕਾਫੀ ਦੂਰ ਹੁੰਦੇ ਹਨ। 🎓 **ਲੰਬੇ ਸਮੇਂ ਦਾ ਚੱਕਰ** -ਮੌਸਮੀਤਾ ਤੋਂ ਅਜ਼ਾਦ, ਡਾਟਾ ਇੱਕ ਲੰਬੇ ਸਮੇਂ ਦਾ ਚੱਕਰ ਦਰਸਾ ਸਕਦਾ ਹੈ ਜਿਵੇਂ ਕਿ ਇੱਕ ਆਰਥਿਕ ਮੰਦੀ ਜੋ ਇੱਕ ਸਾਲ ਤੋਂ ਵੱਧ ਸਮੇਂ ਤੱਕ ਰਹਿੰਦੀ ਹੈ। +ਮੌਸਮੀਅਤ ਤੋਂ ਅਲੱਗ, ਡਾਟਾ ਇੱਕ ਲੰਬੀ ਮਿਆਦ ਦਾ ਚੱਕਰ ਦਿਖਾ ਸਕਦਾ ਹੈ, ਜਿਵੇਂ ਇੱਕ ਆਰਥਕ ਮੰਦਗੀ ਜੋ ਇੱਕ ਸਾਲ ਤੋਂ ਵੱਧ ਚੱਲੇ। -🎓 **ਸਥਿਰ ਵੈਰੀਅੰਸ** +🎓 **ਲਗਾਤਾਰ ਵੈਰੀਅੰਸ** -ਸਮੇਂ ਦੇ ਨਾਲ, ਕੁਝ ਡਾਟਾ ਸਥਿਰ ਉਤਾਰ-ਚੜ੍ਹਾਵਾਂ ਦਰਸਾਉਂਦਾ ਹੈ, ਜਿਵੇਂ ਕਿ ਦਿਨ ਅਤੇ ਰਾਤ ਦੇ ਸਮੇਂ ਵਿੱਚ ਊਰਜਾ ਦੀ ਵਰਤੋਂ। +ਸਮੇਂ ਦੇ ਨਾਲ ਕੁਝ ਡਾਟਾ ਲਗਾਤਾਰ ਉਤਾਰ-ਚੜ੍ਹਾਵ ਦਿਖਾਉਂਦਾ ਹੈ, ਜਿਵੇਂ ਦਿਨ ਅਤੇ ਰਾਤ ਦੀ ਊਰਜਾ ਦੀ ਵਰਤੋਂ। 🎓 **ਅਚਾਨਕ ਬਦਲਾਅ** -ਡਾਟਾ ਅਚਾਨਕ ਬਦਲਾਅ ਦਰਸਾ ਸਕਦਾ ਹੈ ਜਿਸਦੀ ਹੋਰ ਵਿਸ਼ਲੇਸ਼ਣ ਦੀ ਲੋੜ ਹੋ ਸਕਦੀ ਹੈ। ਉਦਾਹਰਨ ਲਈ, COVID ਦੇ ਕਾਰਨ ਕਾਰੋਬਾਰਾਂ ਦੇ ਅਚਾਨਕ ਬੰਦ ਹੋਣ ਨੇ ਡਾਟਾ ਵਿੱਚ ਬਦਲਾਅ ਪੈਦਾ ਕੀਤਾ। +ਡਾਟਾ ਵਿੱਚ ਅਚਾਨਕ ਬਦਲਾਅ ਹੋ ਸਕਦਾ ਹੈ ਜਿਸ ਲਈ ਹੋਰ ਵਿਸ਼ਲੇਸ਼ਣ ਦੀ ਲੋੜ ਹੋ ਸਕਦੀ ਹੈ। COVID ਦੇ ਕਾਰਨ ਬਿਜ਼ਨਸ ਦੇ ਅਚਾਨਕ ਬੰਦ ਹੋ ਜਾਣ ਨਾਲ ਡਾਟਾ ਵਿੱਚ ਬਦਲਾਅ ਆਇਆ। -✅ ਇਥੇ ਇੱਕ [ਟਾਈਮ ਸੀਰੀਜ਼ ਪਲਾਟ](https://www.kaggle.com/kashnitsky/topic-9-part-1-time-series-analysis-in-python) ਹੈ ਜੋ ਕੁਝ ਸਾਲਾਂ ਵਿੱਚ ਦਿਨਾਂ ਦੀ ਇਨ-ਗੇਮ ਕਰੰਸੀ ਖਰਚ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ। ਕੀ ਤੁਸੀਂ ਇਸ ਡਾਟਾ ਵਿੱਚ ਉਪਰੋਕਤ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਦੀ ਪਛਾਣ ਕਰ ਸਕਦੇ ਹੋ? +✅ ਇੱਥੇ ਇੱਕ [ਨਮੂਨਾ ਸਮੇਂ ਦੀ ਲੜੀ ਚਿੱਤਰ](https://www.kaggle.com/kashnitsky/topic-9-part-1-time-series-analysis-in-python) ਹੈ ਜੋ ਕੁਝ ਸਾਲਾਂ ਵਿੱਚ ਹਰ ਰੋਜ਼ ਖੇਡ ਦੇ ਕਰੰਸੀ ਖਰਚੇ ਦਿਖਾਉਂਦਾ ਹੈ। ਕੀ ਤੁਸੀਂ ਇਸ ਡਾਟਾ ਵਿੱਚ ਉਪਰੋਕਤ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਵਿੱਚੋਂ ਕੋਈ ਪਛਾਣ ਸਕਦੇ ਹੋ? -![ਇਨ-ਗੇਮ ਕਰੰਸੀ ਖਰਚ](../../../../7-TimeSeries/1-Introduction/images/currency.png) +![ਹਰੇਕ ਖੇਡ ਦੀ ਕਰੰਸੀ ਖਰਚ](../../../../translated_images/pa/currency.e7429812bfc8c608.webp) -## ਅਭਿਆਸ - ਬਿਜਲੀ ਦੀ ਵਰਤੋਂ ਦੇ ਡਾਟਾ ਨਾਲ ਸ਼ੁਰੂਆਤ +## ਕਸਰਤ - ਬਿਜਲੀ ਖਪਤ ਡਾਟਾ ਨਾਲ ਸ਼ੁਰੂਆਤ -ਆਓ ਪਿਛਲੇ ਡਾਟਾ ਦੇ ਆਧਾਰ 'ਤੇ ਭਵਿੱਖ ਦੀ ਬਿਜਲੀ ਦੀ ਵਰਤੋਂ ਦੀ ਪੇਸ਼ਗੂਈ ਕਰਨ ਲਈ ਇੱਕ ਟਾਈਮ ਸੀਰੀਜ਼ ਮਾਡਲ ਬਣਾਉਣ ਦੀ ਸ਼ੁਰੂਆਤ ਕਰੀਏ। +ਆਓ ਇਸਤੋਂ ਪਹਿਲਾਂ ਕਮਾਈ ਹੋਈ ਬਿਜਲੀ ਖਪਤ ਦੇ ਆਧਾਰ 'ਤੇ ਭਵਿੱਖ ਦੀ ਬਿਜਲੀ ਖਪਤ ਦੀ ਭਵਿੱਖਬਾਣੀ ਕਰਨ ਲਈ ਸਮੇਂ ਦੀ ਲੜੀ ਮਾਡਲ ਬਣਾਈਏ। -> ਇਸ ਉਦਾਹਰਨ ਵਿੱਚ ਡਾਟਾ GEFCom2014 ਫੋਰਕਾਸਟਿੰਗ ਮੁਕਾਬਲੇ ਤੋਂ ਲਿਆ ਗਿਆ ਹੈ। ਇਸ ਵਿੱਚ 2012 ਤੋਂ 2014 ਤੱਕ 3 ਸਾਲਾਂ ਦੇ ਘੰਟਾਵਾਰੀ ਬਿਜਲੀ ਲੋਡ ਅਤੇ ਤਾਪਮਾਨ ਮੁੱਲ ਸ਼ਾਮਲ ਹਨ। +> ਇਸ ਉਦਾਹਰਨ ਵਿੱਚ ਡਾਟਾ GEFCom2014 ਅਨੁਮਾਨ ਮੁਕਾਬਲੇ ਤੋਂ ਲਿਆ ਗਿਆ ਹੈ। ਇਹ 2012 ਤੋਂ 2014 ਤੱਕ 3 ਸਾਲਾਂ ਦੀਆਂ ਘੰਟੇਵਾਰ ਬਿਜਲੀ ਲੋਡ ਅਤੇ ਤਾਪਮਾਨ ਮੁੱਲਾਂ ਦਾ ਸਮੇਤ ਹੈ। > -> Tao Hong, Pierre Pinson, Shu Fan, Hamidreza Zareipour, Alberto Troccoli ਅਤੇ Rob J. Hyndman, "Probabilistic energy forecasting: Global Energy Forecasting Competition 2014 and beyond", International Journal of Forecasting, vol.32, no.3, pp 896-913, July-September, 2016. +> Tao Hong, Pierre Pinson, Shu Fan, Hamidreza Zareipour, Alberto Troccoli ਅਤੇ Rob J. Hyndman, "ਸੰਭਾਵਿਤ ਊਰਜਾ ਅਨੁਮਾਨ: ਗ্লੋਬਲ ਊਰਜਾ ਅਨੁਮਾਨ ਮੁਕਾਬਲਾ 2014 ਅਤੇ ਅੱਗੇ", ਇੰਟਰਨੈਸ਼ਨਲ ਜਰਨਲ ਆਫ ਫੋਰਕਾਸਟਿੰਗ, ਵਾਤਾਵਰਨ. 32, ਨੰ.3, ਪੰਨੇ 896-913, ਜੁਲਾਈ-ਸਿਤੰਬਰ, 2016। -1. ਇਸ ਪਾਠ ਦੇ `working` ਫੋਲਡਰ ਵਿੱਚ, _notebook.ipynb_ ਫਾਈਲ ਖੋਲ੍ਹੋ। ਉਹ ਲਾਇਬ੍ਰੇਰੀਆਂ ਸ਼ਾਮਲ ਕਰਕੇ ਸ਼ੁਰੂ ਕਰੋ ਜੋ ਡਾਟਾ ਨੂੰ ਲੋਡ ਅਤੇ ਵਿਜ਼ੁਅਲਾਈਜ਼ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰੇਗੀ +1. ਇਸ ਪਾਠ ਦੇ `working` ਫੋਲਡਰ ਵਿੱਚ, _notebook.ipynb_ ਫਾਇਲ ਖੋਲ੍ਹੋ। ਸ਼ੁਰੂ ਕਰੋ ਉਹ ਲਾਇਬ੍ਰੇਰੀਜ਼ ਜੋ ਤੁਹਾਨੂੰ ਡਾਟਾ ਲੋਡ ਕਰਨ ਅਤੇ ਵਿਜ਼ੂਅਲਾਈਜ਼ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰਨਗੀਆਂ ```python import os @@ -122,9 +122,71 @@ %matplotlib inline ``` - + ਨੋਟ ਕਰੋ, ਤੁਸੀਂ ਸ਼ਾਮਿਲ ਕੀਤੇ `common` ਫੋਲਡਰ ਫਾਈਲਾਂ ਦੀ ਵਰਤੋਂ ਕਰ ਰਹੇ ਹੋ ਜੋ ਤੁਹਾਡੇ ਵਾਤਾਵਰਨ ਨੂੰ ਸੈਟ ਕਰਦਾ ਹੈ ਅਤੇ ਡਾਟਾ ਡਾਊਨਲੋਡ ਕਰਨ ਦੀ ਦੇਖਭਾਲ ਕਰਦਾ ਹੈ। + +2. ਫਿਰ, ਡਾਟਾ ਨੂੰ ਇੱਕ ਡਾਟਾਫਰੇਮ ਵਜੋਂ `load_data()` ਅਤੇ `head()` ਕਾਲ ਕਰਕੇ ਦੇਖੋ: + + ```python + data_dir = './data' + energy = load_data(data_dir)[['load']] + energy.head() + ``` + + ਤੁਸੀਂ ਵੇਖ ਸਕਦੇ ਹੋ ਕਿ ਦੋ ਕਾਲਮ ਹਨ ਜੋ ਤਾਰੀਖ ਅਤੇ ਲੋਡ ਨੂੰ ਦਰਸਾਉਂਦੇ ਹਨ: + + | | ਲੋਡ | + | :-----------------: | :----: | + | 2012-01-01 00:00:00 | 2698.0 | + | 2012-01-01 01:00:00 | 2558.0 | + | 2012-01-01 02:00:00 | 2444.0 | + | 2012-01-01 03:00:00 | 2402.0 | + | 2012-01-01 04:00:00 | 2403.0 | + +3. ਹੁਣ, ਡਾਟਾ ਨੂੰ `plot()` ਕਾਲ ਕਰਕੇ ਚਿੱਤਰਿਤ ਕਰੋ: + + ```python + energy.plot(y='load', subplots=True, figsize=(15, 8), fontsize=12) + plt.xlabel('timestamp', fontsize=12) + plt.ylabel('load', fontsize=12) + plt.show() + ``` + + ![ਊਰਜਾ ਚਿੱਤਰ](../../../../translated_images/pa/energy-plot.5fdac3f397a910bc.webp) + +4. ਹੁਣ, ਜੁਲਾਈ 2014 ਦੇ ਪਹਿਲੇ ਹਫ਼ਤੇ ਦਾ ਚਿੱਤਰ ਬਣਾਓ, ਜਿਸਨੂੰ `[from date]: [to date]` ਪੈਟਰਨ ਵਿੱਚ `energy` ਨੂੰ ਦਿੱਤਾ ਗਿਆ ਹੈ: + + ```python + energy['2014-07-01':'2014-07-07'].plot(y='load', subplots=True, figsize=(15, 8), fontsize=12) + plt.xlabel('timestamp', fontsize=12) + plt.ylabel('load', fontsize=12) + plt.show() + ``` + + ![ਜੁਲਾਈ](../../../../translated_images/pa/july-2014.9e1f7c318ec6d5b3.webp) + + ਇੱਕ ਖੂਬਸੂਰਤ ਚਿੱਤਰ! ਇਨ੍ਹਾਂ ਚਿੱਤਰਾਂ 'ਤੇ ਨਜ਼ਰ ਮਾਰੋ ਅਤੇ ਦੇਖੋ ਕਿ ਕੀ ਤੁਸੀਂ ਉਪਰ ਦਿੱਤੀ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਵਿੱਚੋਂ ਕੋਈ ਲੱਭ ਸਕਦੇ ਹੋ। ਡਾਟਾ ਨੂੰ ਵਿਜ਼ੂਅਲਾਈਜ਼ ਕਰਕੇ ਅਸੀਂ ਕੀ ਨਤੀਜੇ ਨਿਕਾਲ ਸਕਦੇ ਹਾਂ? + +ਅਗਲੇ ਪਾਠ ਵਿੱਚ, ਤੁਸੀਂ ਇੱਕ ARIMA ਮਾਡਲ ਬਣਾਓਗੇ ਜੋ ਕੁਝ ਅਨੁਮਾਨ ਬਣਾਵੇਗਾ। + +--- + +## 🚀ਚੁਣੌਤੀ + +ਸਮੇਂ ਦੀ ਲੜੀ ਅਨੁਮਾਨ ਲਗਾਉਣ ਨਾਲ ਲਾਭਾਨਵਿਤ ਹੋਣ ਵਾਲੇ ਸਾਰੇ ਉਦਯੋਗਾਂ ਅਤੇ ਖੋਜ ਖੇਤਰਾਂ ਦੀ ਸੂਚੀ ਬਣਾਓ। ਕੀ ਤੁਸੀਂ ਕਲਾ ਵਿੱਚ, ਅਰਥਸ਼ਾਸਤਰ, ਪਰਿਸਥਿਤੀ ਵਿਗਿਆਨ, ਰਿਟੇਲ, ਉਦਯੋਗ, ਵਿੱਤ ਆਦਿ ਵਿੱਚ ਇਹ ਤਕਨੀਕਾਂ ਦੀ ਵਰਤੋਂ ਬਾਰੇ ਸੋਚ ਸਕਦੇ ਹੋ? ਹੋਰ ਕਿੱਥੇ? + +## [ਪੋਸਟ-ਲੇਕਚਰ ਕੁਇਜ਼](https://ff-quizzes.netlify.app/en/ml/) + +## ਸਮੀਖਿਆ ਅਤੇ ਸਵੈ-ਅਧਿਐਨ + +ਹਾਲਾਂਕਿ ਅਸੀਂ ਇੱਥੇ ਇਸ ਬਾਰੇ ਚਰਚਾ ਨਹੀਂ ਕਰਾਂਗੇ, ਨਿਊਰਲ ਨੈੱਟਵਰਕ ਕਈ ਵਾਰੀ ਸਮੇਂ ਦੀ ਲੜੀ ਅਨੁਮਾਨ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਣ ਲਈ ਪਰੰਪਰਾਗਤ ਤਰੀਕਿਆਂ ਨੂੰ ਤੇਜ਼ ਕਰਨ ਲਈ ਵਰਤੇ ਜਾਂਦੇ ਹਨ। ਬਾਰੇ ਵਧੇਰੇ ਪੜ੍ਹੋ [ਇਸ ਲੇਖ ਵਿੱਚ](https://medium.com/microsoftazure/neural-networks-for-forecasting-financial-and-economic-time-series-6aca370ff412) + +## ਕੱਮ + +[ਹੋਰ ਕੁਝ ਸਮੇਂ ਦੀ ਲੜੀ ਦਾ ਵਿਜ਼ੂਅਲਾਈਜ਼ ਕਰੋ](assignment.md) --- -**ਅਸਵੀਕਾਰਨਾ**: -ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀਤਾ ਲਈ ਯਤਨਸ਼ੀਲ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਚਨਾਵਾਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਇਸਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। \ No newline at end of file + +**ਅਸਵੀਕਾਰੋਪਣ**: +ਇਸ ਦਸਤਾਵੇਜ਼ ਦਾ ਅਨੁਵਾਦ ਏਆਈ ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀਤਾਵਾਂ ਲਈ ਯਤਨਸ਼ੀਲ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਰੱਖੋ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸਮੱਤਿਆਵਾਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਆਪਣੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਕ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਜਰੂਰੀ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫ਼ਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਅਸੀਂ ਇਸ ਅਨੁਵਾਦ ਦੇ ਉਪਯੋਗ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੀਆਂ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀਆਂ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆਵਾਂ ਲਈ ਜਵਾਬਦੇਹ ਨਹੀਂ ਹਾਂ। + \ No newline at end of file diff --git a/translations/pa/8-Reinforcement/1-QLearning/README.md b/translations/pa/8-Reinforcement/1-QLearning/README.md index ac0630c8e..877de68cb 100644 --- a/translations/pa/8-Reinforcement/1-QLearning/README.md +++ b/translations/pa/8-Reinforcement/1-QLearning/README.md @@ -1,47 +1,47 @@ -# ਰੀਇਨਫੋਰਸਮੈਂਟ ਲਰਨਿੰਗ ਅਤੇ ਕਿਊ-ਲਰਨਿੰਗ ਦਾ ਪਰਚੇ +# ਰੀਇਨਫੋਰਸਮੈਂਟ ਲਰਨਿੰਗ ਅਤੇ ਕਿਊ-ਲਰਨਿੰਗ ਦਾ ਪਰਿਚਯ -![ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਵਿੱਚ ਰੀਇਨਫੋਰਸਮੈਂਟ ਦਾ ਸਾਰ](../../../../sketchnotes/ml-reinforcement.png) -> ਸਕੈਚਨੋਟ [Tomomi Imura](https://www.twitter.com/girlie_mac) ਵੱਲੋਂ +![ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਵਿੱਚ ਰੀਇਨਫੋਰਸਮੈਂਟ ਦਾ ਸਾਰਾਂਸ਼ ਇੱਕ ਸਕੈਚਨੋਟ ਵਿੱਚ](../../../../translated_images/pa/ml-reinforcement.94024374d63348db.webp) +> ਸਕੈਚਨੋਟ [ਟੋਮੋਮੀ ਇਮੁਰਾ](https://www.twitter.com/girlie_mac) ਵੱਲੋਂ -ਰੀਇਨਫੋਰਸਮੈਂਟ ਲਰਨਿੰਗ ਵਿੱਚ ਤਿੰਨ ਮਹੱਤਵਪੂਰਨ ਧਾਰਨਾਵਾਂ ਸ਼ਾਮਲ ਹਨ: ਏਜੰਟ, ਕੁਝ ਸਥਿਤੀਆਂ, ਅਤੇ ਹਰ ਸਥਿਤੀ ਲਈ ਕਾਰਵਾਈਆਂ ਦਾ ਸੈੱਟ। ਨਿਰਧਾਰਤ ਸਥਿਤੀ ਵਿੱਚ ਕਾਰਵਾਈ ਕਰਨ ਨਾਲ, ਏਜੰਟ ਨੂੰ ਇਨਾਮ ਮਿਲਦਾ ਹੈ। ਇੱਕ ਵਾਰ ਫਿਰ ਕੰਪਿਊਟਰ ਗੇਮ "ਸੁਪਰ ਮਾਰੀਓ" ਦੀ ਕਲਪਨਾ ਕਰੋ। ਤੁਸੀਂ ਮਾਰੀਓ ਹੋ, ਤੁਸੀਂ ਇੱਕ ਗੇਮ ਲੈਵਲ ਵਿੱਚ ਹੋ, ਇੱਕ ਚਟਾਨ ਦੇ ਕਿਨਾਰੇ ਦੇ ਕੋਲ ਖੜੇ ਹੋ। ਤੁਹਾਡੇ ਉੱਪਰ ਇੱਕ ਸਿੱਕਾ ਹੈ। ਤੁਸੀਂ ਮਾਰੀਓ ਹੋ, ਇੱਕ ਗੇਮ ਲੈਵਲ ਵਿੱਚ, ਇੱਕ ਵਿਸ਼ੇਸ਼ ਸਥਿਤੀ ਵਿੱਚ ... ਇਹ ਤੁਹਾਡੀ ਸਥਿਤੀ ਹੈ। ਸੱਜੇ ਪਾਸੇ ਇੱਕ ਕਦਮ ਚਲਣਾ (ਇੱਕ ਕਾਰਵਾਈ) ਤੁਹਾਨੂੰ ਕਿਨਾਰੇ ਤੋਂ ਪਾਰ ਲੈ ਜਾਵੇਗਾ, ਅਤੇ ਇਹ ਤੁਹਾਨੂੰ ਘੱਟ ਅੰਕ ਦੇ ਸਕੋਰ ਦੇਵੇਗਾ। ਹਾਲਾਂਕਿ, ਜੰਪ ਬਟਨ ਦਬਾਉਣ ਨਾਲ ਤੁਹਾਨੂੰ ਇੱਕ ਅੰਕ ਮਿਲੇਗਾ ਅਤੇ ਤੁਸੀਂ ਜਿਊਂਦੇ ਰਹੋਗੇ। ਇਹ ਇੱਕ ਸਕਾਰਾਤਮਕ ਨਤੀਜਾ ਹੈ ਅਤੇ ਇਸ ਲਈ ਤੁਹਾਨੂੰ ਇੱਕ ਸਕਾਰਾਤਮਕ ਅੰਕ ਦੇ ਸਕੋਰ ਮਿਲਣਾ ਚਾਹੀਦਾ ਹੈ। +ਰੀਇਨਫੋਰਸਮੈਂਟ ਲਰਨਿੰਗ ਵਿੱਚ ਤਿੰਨ ਮਹੱਤਵਪੂਰਣ ਧਾਰਣਾਵਾਂ ਸ਼ਾਮਲ ਹੁੰਦੀਆਂ ਹਨ: ਏਜੰਟ, ਕੁਝ ਸਥਿਤੀਆਂ, ਅਤੇ ਹਰ ਸਥਿਤੀ 'ਚ ਕਾਰਵਾਈਆਂ ਦਾ ਸੈੱਟ। ਕਿਸੇ ਨਿਰਧਾਰਤ ਸਥਿਤੀ ਵਿੱਚ ਇੱਕ ਕਾਰਵਾਈ ਕਰਕੇ, ਏਜੰਟ ਨੂੰ ਇਨਾਮ ਮਿਲਦਾ ਹੈ। ਫਿਰ ਸੋਚੋ ਕਮਪਿਊਟਰ ਖੇਡ ਸੂਪਰ ਮਾਰੀਓ ਦੀ। ਤੁਸੀਂ ਮਾਰੀਓ ਹੋ, ਤੁਸੀਂ ਇੱਕ ਖੇਡ ਸਤਰ ਵਿੱਚ ਹੋ, ਇੱਕ ਖੱਡ ਦੇ ਕਿਨਾਰੇ ਖੜੇ ਹੋ। ਤੁਹਾਡੇ ਉਪਰ ਇੱਕ ਸਿੱਕਾ ਹੈ। ਤੁਸੀਂ ਮਾਰੀਓ ਹੋ, ਇੱਕ ਖੇਡ ਸਤਰ ਵਿੱਚ, ਇੱਕ ਖਾਸ ਸਥਿਤੀ ਵਿੱਚ ... ਇਹ ਤੁਹਾਡੀ ਸਥਿਤੀ ਹੈ। ਸੱਜੇ ਵੱਲ ਇੱਕ ਕਦਮ ਚਲਣਾ (ਇੱਕ ਕਾਰਵਾਈ) ਤੁਹਾਨੂੰ ਕਿਨਾਰੇ ਤੋਂ ਥੱਲੇ ਲੈ ਜਾਵੇਗਾ, ਅਤੇ ਇਹ ਤੁਹਾਨੂੰ ਨੀਵਾਂ ਗਿਣਤੀ ਸкоਰ ਦੇਵੇਗਾ। ਹਾਲਾਂਕਿ, ਕੂਦਨ ਵਾਲਾ ਬਟਨ ਦਬਾਉਣ ਨਾਲ ਤੁਹਾਨੂੰ ਇੱਕ ਅੰਕ ਮਿਲੇਗਾ ਅਤੇ ਤੁਸੀਂ ਜੀਵਤ ਰਹੋਗੇ। ਇਹ ਇੱਕ ਸਕਾਰਾਤਮਕ ਨਤੀਜਾ ਹੈ ਅਤੇ ਇਸਦਾ ਇਨਾਮ ਇੱਕ ਸਕਾਰਾਤਮਕ ਗਿਣਤੀ ਸкоਰ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ। -ਰੀਇਨਫੋਰਸਮੈਂਟ ਲਰਨਿੰਗ ਅਤੇ ਸਿਮੂਲੇਟਰ (ਗੇਮ) ਦੀ ਵਰਤੋਂ ਕਰਕੇ, ਤੁਸੀਂ ਗੇਮ ਖੇਡਣ ਦਾ ਤਰੀਕਾ ਸਿੱਖ ਸਕਦੇ ਹੋ ਤਾਂ ਜੋ ਇਨਾਮ ਵਧਾਇਆ ਜਾ ਸਕੇ, ਜੋ ਕਿ ਜਿਊਂਦੇ ਰਹਿਣਾ ਅਤੇ ਜਿੰਨੇ ਅੰਕ ਸੰਭਵ ਹੋ ਸਕਦੇ ਹਨ, ਪ੍ਰਾਪਤ ਕਰਨਾ ਹੈ। +ਰੀਇਨਫੋਰਸਮੈਂਟ ਲਰਨਿੰਗ ਅਤੇ ਸਿਮ्युਲੇਟਰ (ਖੇਡ) ਦੀ ਵਰਤੋਂ ਕਰਕੇ, ਤੁਸੀਂ ਖੇਡ ਕਿਵੇਂ ਖੇਡਣੀ ਹੈ ਇਹ ਸਿੱਖ ਸਕਦੇ ਹੋ ਤਾਂ ਕਿ ਇਨਾਮ ਵੱਧ ਤੋਂ ਵੱਧ ਹੋਵੇ ਜਿਹੜਾ ਕਿ ਜੀਵਤ ਰਹਿਣ ਅਤੇ ਜਿੰਨਾ ਹੋ ਸਕੇ ਅੰਕ ਪ੍ਰਾਪਤ ਕਰਨ ਵਿੱਚ ਹੈ। -[![ਰੀਇਨਫੋਰਸਮੈਂਟ ਲਰਨਿੰਗ ਦਾ ਪਰਚੇ](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) +[![ਰੀਇਨਫੋਰਸਮੈਂਟ ਲਰਨਿੰਗ ਦਾ ਪਰਚਾਰ](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) -> 🎥 ਉੱਪਰ ਦਿੱਤੀ ਤਸਵੀਰ 'ਤੇ ਕਲਿੱਕ ਕਰੋ ਤਾਂ ਜੋ ਦਿਮਿਤਰੀ ਰੀਇਨਫੋਰਸਮੈਂਟ ਲਰਨਿੰਗ ਬਾਰੇ ਗੱਲ ਕਰ ਸਕੇ +> 🎥 ਉਪਰ ਦਿੱਤੀ ਚਿੱਤਰ 'ਤੇ ਕਲਿਕ ਕਰਕੇ ਡਿਮਿਤਰੀ ਨੂੰ ਰੀਇਨਫੋਰਸਮੈਂਟ ਲਰਨਿੰਗ ਬਾਰੇ ਵਿਚਾਰ ਕਰਦੇ ਸੁਣੋ -## [ਪ੍ਰੀ-ਲੈਕਚਰ ਕਵਿਜ਼](https://ff-quizzes.netlify.app/en/ml/) +## [ਪ੍ਰੀ-ਲੈਕਚਰ ਕਿਊਜ਼](https://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` ਸਾਈਜ਼ ਦੀ ਇੱਕ ਵਰਗ ਬੋਰਡ ਸਮਝੀਏ, ਜਿਵੇਂ ਕਿ ਇੱਥੇ ਦਿੱਤਾ ਗਿਆ ਹੈ: -![ਪੀਟਰ ਦਾ ਵਾਤਾਵਰਣ](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![ਪੀਟਰ ਦਾ ਵਾਤਾਵਰਣ](../../../../translated_images/pa/environment.40ba3cb66256c93f.webp) -ਇਸ ਬੋਰਡ ਵਿੱਚ ਹਰ ਸੈੱਲ: +ਇਸ ਬੋਰਡ ਦੇ ਹਰ ਸੈੱਲ ਵਿੱਚ ਹੋ ਸਕਦਾ ਹੈ: * **ਜ਼ਮੀਨ**, ਜਿਸ 'ਤੇ ਪੀਟਰ ਅਤੇ ਹੋਰ ਜੀਵ ਚੱਲ ਸਕਦੇ ਹਨ। -* **ਪਾਣੀ**, ਜਿਸ 'ਤੇ ਤੁਸੀਂ ਸਪਸ਼ਟ ਤੌਰ 'ਤੇ ਨਹੀਂ ਚੱਲ ਸਕਦੇ। -* ਇੱਕ **ਵ੍ਰਿਕਸ਼** ਜਾਂ **ਘਾਹ**, ਇੱਕ ਜਗ੍ਹਾ ਜਿੱਥੇ ਤੁਸੀਂ ਅਰਾਮ ਕਰ ਸਕਦੇ ਹੋ। -* ਇੱਕ **ਸੇਬ**, ਜੋ ਕਿ ਪੀਟਰ ਨੂੰ ਆਪਣੇ ਆਪ ਨੂੰ ਖੁਸ਼ ਕਰਨ ਲਈ ਮਿਲਣ ਦੀ ਖੁਸ਼ੀ ਹੋਵੇਗੀ। -* ਇੱਕ **ਭੇੜਾ**, ਜੋ ਕਿ ਖਤਰਨਾਕ ਹੈ ਅਤੇ ਇਸ ਤੋਂ ਬਚਣਾ ਚਾਹੀਦਾ ਹੈ। +* **ਪਾਣੀ**, ਜਿਸ 'ਤੇ ਤੁਹਾਡੇ ਲਈ ਚੱਲਣਾ ਸੰਭਵ ਨਹੀਂ ਹੈ। +* ਇੱਕ **ਟ੍ਰੀ** ਜਾਂ **ਘਾਸ**, ਜਿੱਥੇ ਤੁਸੀਂ ਆਰਾਮ ਕਰ ਸਕਦੇ ਹੋ। +* ਇੱਕ **ਸੇਬ**, ਜੋ ਕਿ ਪੀਟਰ ਲਈ ਖਾਣ ਲਈ ਖੋਜਣਯੋਗਤਾ ਦਰਸਾਉਂਦਾ ਹੈ। +* ਇੱਕ **ਵੁਲਫ**, ਜੋ ਕਿ ਖਤਰਨਾਕ ਹੈ ਅਤੇ ਬਚਣਾ ਚਾਹੀਦਾ ਹੈ। -ਇੱਕ ਵੱਖਰਾ ਪਾਇਥਨ ਮੋਡਿਊਲ, [`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 ਕਦਮ ਹੈ। - ਤੁਸੀਂ ਇਹ ਵੀ ਦੇਖ ਸਕਦੇ ਹੋ ਕਿ ਰੈਂਡਮ ਵਾਕ ਦੌਰਾਨ ਪੀਟਰ ਦੀ ਚਾਲ ਕਿਵੇਂ ਲੱਗਦੀ ਹੈ: + ਤੁਸੀਂ ਵੇਖ ਸਕਦੇ ਹੋ ਕਿ ਪੀਟਰ ਦੀ ਚਾਲ ਰੈਂਡਮ ਵਾਕ ਦੌਰਾਨ ਕਿਵੇਂ ਦਿਖਦੀ ਹੈ: ![ਪੀਟਰ ਦਾ ਰੈਂਡਮ ਵਾਕ](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) -## ਇਨਾਮ ਫੰਕਸ਼ਨ +## ਇਨਾਮ ਕਾਰਜ -ਸਾਡੀ ਨੀਤੀ ਨੂੰ ਹੋਰ ਬੁੱਧੀਮਾਨ ਬਣਾਉਣ ਲਈ, ਸਾਨੂੰ ਸਮਝਣਾ ਪਵੇਗਾ ਕਿ ਕਿਹੜੀਆਂ ਚਾਲਾਂ "ਵਧੀਆ" ਹਨ। ਇਹ ਕਰਨ ਲਈ, ਸਾਨੂੰ ਆਪਣਾ ਲਕਸ਼ ਪਰਿਭਾਸ਼ਿਤ ਕਰਨ ਦੀ ਲੋੜ ਹੈ। +ਸਾਡੀ ਨੀਤੀ ਨੂੰ ਹੋਰ ਸਮਝਦਾਰ ਬਣਾਉਣ ਲਈ, ਸਾਨੂੰ ਸਮਝਣਾ ਪਏਗਾ ਕਿ ਕਿਹੜੇ ਕਦਮ ਦੂਜੇ ਨਾਲੋਂ "ਚੰਗੇ" ਹਨ। ਇਸ ਲਈ ਸਾਨੂੰ ਆਪਣਾ ਮਨੋਰਥ ਪਰਿਭਾਸ਼ਿਤ ਕਰਨ ਦੀ ਲੋੜ ਹੈ। -ਲਕਸ਼ ਨੂੰ **ਇਨਾਮ ਫੰਕਸ਼ਨ** ਦੇ ਰੂਪ ਵਿੱਚ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ, ਜੋ ਕਿ ਹਰ ਸਥਿਤੀ ਲਈ ਕੁਝ ਸਕੋਰ ਮੁੱਲ ਵਾਪਸ ਕਰੇਗਾ। ਜਿੰਨਾ ਵੱਡਾ ਨੰਬਰ, ਉਨਾ ਵਧੀਆ ਇਨਾਮ ਫੰਕਸ਼ਨ। (ਕੋਡ ਬਲਾਕ 5) +ਮਨੋਰਥ ਨੂੰ ਇੱਕ **ਇਨਾਮ ਕਾਰਜ** ਦੇ ਰੂਪ ਵਿੱਚ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ, ਜੋ ਹਰੇਕ ਸਥਿਤੀ ਲਈ ਕੁਝ ਸਕੋਰ ਮੁੱਲ ਵਾਪਸ ਕਰਦਾ ਹੈ। ਜਿਥੇ ਨੰਬਰ ਵੱਧ ਹੁੰਦਾ ਹੈ, ਉਥੇ ਇਨਾਮ ਕਾਰਜ ਵਧੀਆ ਹੁੰਦਾ ਹੈ। (ਕੋਡ ਬਲਾਕ 5) ```python move_reward = -0.1 @@ -154,39 +154,115 @@ def reward(m,pos=None): return move_reward ``` -ਇਨਾਮ ਫੰਕਸ਼ਨ ਬਾਰੇ ਇੱਕ ਦਿਲਚਸਪ ਗੱਲ ਇਹ ਹੈ ਕਿ ਜ਼ਿਆਦਾਤਰ ਮਾਮਲਿਆਂ ਵਿੱਚ, *ਸਾਨੂੰ ਖੇਡ ਦੇ ਅੰਤ ਵਿੱਚ ਹੀ ਇੱਕ ਮਹੱਤਵਪੂਰਨ ਇਨਾਮ ਮਿਲਦਾ ਹੈ*। ਇਸਦਾ ਮਤਲਬ ਹੈ ਕਿ ਸਾਡਾ ਐਲਗੋਰਿਥਮ ਕਿਸੇ ਤਰੀਕੇ ਨਾਲ "ਵਧੀਆ" ਕਦਮਾਂ ਨੂੰ ਯਾਦ ਰੱਖਣਾ ਚਾਹੀਦਾ ਹੈ ਜੋ ਖੇਡ ਦੇ ਅੰਤ ਵਿੱਚ ਸਕਾਰਾਤਮਕ ਇਨਾਮ ਦੀ ਵਜ੍ਹਾ ਬਣਦੇ ਹਨ, ਅਤੇ ਉਹਨਾਂ ਦੀ ਮਹੱਤਤਾ ਵਧਾਉਣੀ ਚਾਹੀਦੀ ਹੈ। ਇਸੇ ਤਰ੍ਹਾਂ, ਸਾਰੇ ਕਦਮ ਜੋ ਖਰਾਬ ਨਤੀਜਿਆਂ ਵੱਲ ਲੈ ਜਾਂਦੇ ਹਨ, ਉਹਨਾਂ ਨੂੰ ਹੌਸਲਾ ਨਹੀਂ ਦੇਣਾ ਚਾਹੀਦਾ। +ਇਨਾਮ ਕਾਰਜਾਂ ਬਾਰੇ ਇਕ ਦਿਲਚਸਪ ਗੱਲ ਇਹ ਹੈ ਕਿ ਅਕਸਰ ਕੇਸਜ਼ ਵਿੱਚ, *ਸਾਨੂੰ ਕੇਵਲ ਖੇਡ ਦੇ ਅੰਤ 'ਤੇ ਮਹੱਤਵਪੂਰਣ ਇਨਾਮ ਮਿਲਦਾ ਹੈ*। ਇਸਦਾ ਅਰਥ ਹੈ ਕਿ ਸਾਡਾ ਐਲਗੋਰਿਥਮ ਕਿਸੇ ਤਰੀਕੇ ਨਾਲ "ਚੰਗੇ" ਕਦਮ ਯਾਦ ਰੱਖਣਾ ਚਾਹੀਦਾ ਹੈ ਜੋ ਖੇਡ ਦੇ ਅੰਤ ਵਿੱਚ ਸਕਾਰਾਤਮਕ ਇਨਾਮ ਵੱਲ ਲੈ ਜਾਂਦੇ ਹਨ, ਅਤੇ ਉਨ੍ਹਾਂ ਦੀ ਮਹੱਤਤਾ ਵਧਾਉਣੀ ਚਾਹੀਦੀ ਹੈ। ਇਸੇ ਤਰ੍ਹਾਂ, ਜਿਹੜੇ ਬੁਰੇ ਨਤੀਜੇ ਵੱਲ ਲੈ ਜਾਣ ਵਾਲੇ ਕਦਮ ਹਨ, ਉਨ੍ਹਾਂ ਨੂੰ ਹਤਾਇਤ ਕੀਤਾ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ## ਕਿਊ-ਲਰਨਿੰਗ -ਇੱਕ ਐਲਗੋਰਿਥਮ ਜਿਸ ਬਾਰੇ ਅਸੀਂ ਇੱਥੇ ਚਰਚਾ ਕਰਾਂਗੇ, **ਕਿਊ-ਲਰਨਿੰਗ** ਕਿਹਾ ਜਾਂਦਾ ਹੈ। ਇਸ ਐਲਗੋਰਿਥਮ ਵਿੱਚ, ਨੀਤੀ ਨੂੰ ਇੱਕ ਫੰਕਸ਼ਨ (ਜਾਂ ਡਾਟਾ ਸਟ੍ਰਕਚਰ) ਦੁਆਰਾ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਜਿਸਨੂੰ **ਕਿਊ-ਟੇਬਲ** ਕਿਹਾ ਜਾਂਦਾ ਹੈ। ਇਹ ਦਿੱਤੀ ਸਥਿਤੀ ਵਿੱਚ ਹਰ ਕਾਰਵਾਈ ਦੀ "ਵਧੀਆ"ਤਾ ਨੂੰ ਦਰਜ ਕਰਦਾ ਹੈ। +ਇਕ ਐਲਗੋਰਿਥਮ ਜਿਸ ਬਾਰੇ ਅਸੀਂ ਇੱਥੇ ਗੱਲ ਕਰਾਂਗੇ ਉਸਨੂੰ **ਕਿਊ-ਲਰਨਿੰਗ** ਕਹਿੰਦੇ ਹਨ। ਇਸ ਐਲਗੋਰਿਥਮ ਵਿੱਚ, ਨੀਤੀ ਇੱਕ ਕਾਰਜ (ਜਾਂ ਡੇਟਾ ਸਟ੍ਰਕਚਰ) ਨਾਲ ਪਰਿਭਾਸ਼ਿਤ ਹੁੰਦੀ ਹੈ ਜਿਸਨੂੰ **ਕਿਊ-ਟੇਬਲ** ਕਹਿੰਦੇ ਹਨ। ਇਹ ਹਰ ਸਥਿਤੀ ਵਿੱਚ ਹਰ ਕਾਰਵਾਈ ਦੀ "ਚੰਗਾਈ" ਨੂੰ ਦਰਜ ਕਰਦਾ ਹੈ। -ਇਸਨੂੰ ਕਿਊ-ਟੇਬਲ ਕਿਹਾ ਜਾਂਦਾ ਹੈ ਕਿਉਂਕਿ ਇਸਨੂੰ ਇੱਕ ਟੇਬਲ ਜਾਂ ਬਹੁ-ਮਾਤਰੀ ਐਰੇ ਵਜੋਂ ਦਰਸਾਉਣਾ ਅਕਸਰ ਸੁਵਿਧਾਜਨਕ ਹੁੰਦਾ ਹੈ। ਕਿਉਂਕਿ ਸਾਡੇ ਬੋਰਡ ਦੇ ਮਾਪ `width` x `height` ਹਨ, ਅਸੀਂ ਕਿਊ-ਟੇਬਲ ਨੂੰ `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) ``` -ਧਿਆਨ ਦਿਓ ਕਿ ਅਸੀਂ ਕਿਊ-ਟੇਬਲ ਦੇ ਸਾਰੇ ਮੁੱਲਾਂ ਨੂੰ ਇੱਕੋ ਜੇਹੇ ਮੁੱਲ ਨਾਲ ਸ਼ੁਰੂ ਕਰਦੇ ਹਾਂ, ਸਾਡੇ ਮਾਮਲੇ ਵਿੱਚ - 0.25। ਇਹ "ਰੈਂਡਮ ਵਾਕ" ਨੀਤੀ ਦੇ ਅਨੁਸਾਰ ਹੈ, ਕਿਉਂਕਿ ਹਰ ਸਥਿਤੀ ਵਿੱਚ ਸਾਰੀਆਂ ਚਾਲਾਂ ਇੱਕੋ ਜੇਹੀਆਂ ਵਧੀਆ ਹਨ। ਅਸੀਂ ਕਿਊ-ਟੇਬਲ ਨੂੰ ਬੋਰਡ 'ਤੇ ਦਰਸਾਉਣ ਲਈ `plot` ਫੰਕਸ਼ਨ ਨੂੰ ਪਾਸ ਕਰ ਸਕਦੇ ਹਾਂ: `m.plot(Q)`। +ਧਿਆਨ ਦਿਓ ਕਿ ਅਸੀਂ ਕਿਊ-ਟੇਬਲ ਦੇ ਸਾਰੇ ਮੁੱਲ ਇੱਕੋ ਜਿਹਾ ਮੁੱਲ ਸਥਾਪਿਤ ਕਰਦੇ ਹਾਂ, ਸਾਡੇ ਮਾਮਲੇ ਵਿੱਚ - 0.25। ਇਹ "ਅਲੋਚਨਾਤਮਕ ਵਾਕ" ਨੀਤੀ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ, ਕਿਉਂਕਿ ਹਰ ਸਥਿਤੀ ਵਿੱਚ ਸਾਰੀਆਂ ਕਾਰਵਾਈਆਂ ਬਰਾਬਰ ਚੰਗੀਆਂ ਹਨ। ਅਸੀਂ `plot` ਫੰਕਸ਼ਨ ਨੂੰ ਕਿਊ-ਟੇਬਲ ਦੇ ਸਕਦੇ ਹਾਂ ਤਾਂ ਜੋ ਬੋਰਡ 'ਤੇ ਸਾਰਣੀ ਨੂੰ ਦਰਸਾਇਆ ਜਾ ਸਕੇ: `m.plot(Q)`. -![ਪੀਟਰ ਦਾ ਵਾਤਾਵਰਣ](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![ਪੀਟਰ ਦਾ ਵਾਤਾਵਰਣ](../../../../translated_images/pa/env_init.04e8f26d2d60089e.webp) -ਹਰ ਸੈੱਲ ਦੇ ਕੇਂਦਰ ਵਿੱਚ ਇੱਕ "ਤੀਰ" ਹੈ ਜੋ ਚਾਲ ਦੇ ਪਸੰਦੀਦਾ ਦਿਸ਼ਾ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ। ਕਿਉਂਕਿ ਸਾਰੀਆਂ ਦਿਸ਼ਾਵਾਂ ਇੱਕੋ ਜੇਹੀਆਂ ਹਨ, ਇੱਕ ਬਿੰਦੂ ਦਰਸਾਇਆ ਜਾਂਦਾ ਹੈ। +ਹਰ ਸੈੱਲ ਦੇ ਵਿਚਕਾਰ ਇਕ "ਤੇਜ਼ੀ" ਦਰਸਾਉਂਦਾ ਬाण ਹੈ ਜੋ ਪ੍ਰਸਤੀਤ ਚਾਲ ਦੀ ਦਿਸ਼ਾ ਦਰਸਾਉਂਦਾ ਹੈ। ਕਿਉਂਕਿ ਸਾਰੀਆਂ ਦਿਸ਼ਾਵਾਂ ਬਰਾਬਰ ਹਨ, ਇਸ ਲਈ ਇੱਕ ਨਿਸ਼ਾਨ (ਡਾਟ) ਦਿਖਾਇਆ ਗਿਆ ਹੈ। -ਹੁਣ ਸਾਨੂੰ ਸਿਮੂਲੇਸ਼ਨ ਚਲਾਉਣ ਦੀ ਲੋੜ ਹੈ, ਆਪਣੇ ਵਾਤਾਵਰਣ ਦੀ ਖੋਜ ਕਰਨ ਦੀ ਲੋੜ ਹੈ, ਅਤੇ ਕਿਊ-ਟੇਬਲ ਮੁੱਲਾਂ ਦੇ ਵਧੀਆ ਵੰਡਣ ਨੂੰ ਸਿੱਖਣ ਦੀ ਲੋੜ ਹੈ, ਜੋ ਸਾਨੂੰ ਸੇਬ ਤੱਕ ਪਹੁੰਚਣ ਦਾ ਰਾਹ ਕਾਫ਼ੀ ਤੇਜ਼ੀ ਨਾਲ ਲੱਭਣ ਦੀ ਆਗਿਆ ਦੇਵੇਗਾ। +ਹੁਣ ਸਾਨੂੰ ਸਿਮ्युਲੇਸ਼ਨ ਚਲਾਣਾ ਪਵੇਗਾ, ਆਪਣੇ ਵਾਤਾਵਰਣ ਦੀ ਖੋਜ ਕਰਨੀ ਪਵੇਗੀ, ਅਤੇ ਕਿਊ-ਟੇਬਲ ਮੁੱਲਾਂ ਦਾ ਬਿਹਤਰ ਵੰਡ ਸਿੱਖਣਾ ਪਵੇਗਾ, ਜੋ ਸਾਨੂੰ ਸੇਬ ਤੱਕ ਦਾ ਰਸਤਾ ਤੇਜ਼ੀ ਨਾਲ ਲੱਭਣ ਦੀ ਆਗਿਆ ਦੇਵੇਗਾ। -## ਕਿਊ-ਲਰਨਿੰਗ ਦਾ ਸਾਰ: ਬੈਲਮੈਨ ਸਮੀਕਰਨ +## ਕਿਊ-ਲਰਨਿੰਗ ਦਾ ਸਾਰ: ਬੇਲਮੈਨ ਸਮੀਕਰਨ -ਜਦੋਂ ਅਸੀਂ ਚਲਣਾ ਸ਼ੁਰੂ ਕਰਦੇ ਹਾਂ, ਹਰ ਕਾਰਵਾਈ ਦਾ ਇੱਕ ਸੰਬੰਧਿਤ ਇਨਾਮ ਹੁੰਦਾ ਹੈ, ਜ਼ਿਆਦਾਤਰ ਸਥਿਤੀਆਂ ਵਿੱਚ, ਚਾਲ ਸਾਡੇ ਲਕਸ਼ ਨੂੰ ਤੁਰੰਤ ਹਾਸਲ ਨਹੀਂ ਕਰਦੀ। ਇਸ ਲਈ ਅਸੀਂ ਤੁਰੰਤ ਫੈਸਲਾ ਨਹੀਂ ਕਰ ਸਕਦੇ ਕਿ ਕਿਹੜੀ ਦਿਸ਼ਾ ਵਧੀਆ ਹੈ। +ਜਦੋਂ ਅਸੀਂ ਚੱਲਣਾ ਸ਼ੁਰੂ ਕਰਦੇ ਹਾਂ, ਤਾਂ ਹਰ ਕਾਰਵਾਈ ਦਾ ਇੱਕ ਸੰਬੰਧਤ ਇਨਾਮ ਹੁੰਦਾ ਹੈ, ਅਰਥਾਤ ਅਸੀਂ ਸਿਧਾ ਤੌਰ 'ਤੇ ਸਭ ਤੋਂ ਵੱਧ ਤੁਰੰਤ ਇਨਾਮ ਦੇ ਆਧਾਰ 'ਤੇ ਅਗਲੀ ਕਾਰਵਾਈ ਚੁਣ ਸਕਦੇ ਹਾਂ। ਹਾਲਾਂਕਿ, ਬਹੁਤ ਸਾਰੀਆਂ ਸਥਿਤੀਆਂ ਵਿੱਚ, ਚਾਲ ਸਾਡੇ ਲਕੜੀ ਨੂੰ ਪੂਰਾ ਨਹੀਂ ਕਰਦੀ ਜਿਸ ਦਾ ਮਨੋਰਥ ਸੇਬ ਤੱਕ ਪਹੁੰਚਣਾ ਹੈ, ਅਤੇ ਇਸ ਲਈ ਅਸੀਂ ਤੁਰੰਤ ਫੈਸਲਾ ਨਹੀਂ ਕਰ ਸਕਦੇ ਕਿ ਕਿਹੜੀ ਦਿਸ਼ਾ ਵਧੀਆ ਹੈ। -> ਯਾਦ ਰੱਖੋ ਕਿ ਤੁਰੰਤ ਨਤੀਜਾ ਮਹੱਤਵਪੂਰਨ ਨਹੀਂ ਹੈ, ਬਲਕਿ ਅੰਤਮ ਨਤੀਜਾ ਹੈ, ਜੋ ਸਾਨੂੰ ਸਿਮੂਲੇਸ਼ਨ ਦੇ ਅੰਤ ਵਿੱਚ ਮਿਲੇਗਾ। +> ਯਾਦ ਰੱਖੋ ਕਿ ਇਹ ਤੁਰੰਤ ਨਤੀਜਾ ਨਹੀਂ ਹੈ ਜੋ ਮਾਇਨੇ ਰੱਖਦਾ ਹੈ, ਸਗੋਂ ਆਖਰ ਦਾ ਨਤੀਜਾ ਜੋ ਅਸੀਂ ਸਿਮੁਲੇਸ਼ਨ ਦੇ ਅੰਤ ਵਿੱਚ ਪ੍ਰਾਪਤ ਕਰਾਂਗੇ। -ਇਸ ਦੇਰੀ ਨਾਲ ਇਨਾਮ ਨੂੰ ਧਿਆਨ ਵਿੱਚ ਰੱਖਣ ਲਈ, ਸਾਨੂੰ **[ਡਾਇਨਾਮਿਕ ਪ੍ਰੋਗਰਾਮਿੰਗ](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` *Q(s',a')* ਦੁਆਰਾ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤਾ ਜਾਵੇਗਾ। +ਮਾਨੋ ਕਿ ਅਸੀਂ ਹੁਣ ਸਥਿਤੀ *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-ਕਾਰਜ ਨੂੰ ਅਪਡੇਟ ਕਰੋ: *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` ਜੋੜਦੇ ਹਾਂ ਤਾਂ ਜੋ ਸ਼ੁਰੂਆਤੀ ਸਥਿਤੀ ਵਿੱਚ ਜਦੋਂ ਸਾਰੇ ਕੰਪੋਨੈਂਟ ਇੱਕੋ ਜਿਹੇ ਹੁੰਦੇ ਹਨ, 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 ਬਟਨ ਦਬਾਉਣਾ ਪੈਂਦਾ ਹੈ। ਇਹ ਇਸ ਲਈ ਹੁੰਦਾ ਹੈ ਕਿਉਂਕਿ ਕੁਝ ਹਾਲਾਤਾਂ ਵਿੱਚ ਦੋ ਰਾਜ "ਆਪਸੀ" ਤੌਰ 'ਤੇ ਇੱਕ ਦੂਜੇ ਵੱਲ ਇਸ਼ਾਰਾ ਕਰਦੇ ਹਨ, ਜਿਸ ਕਾਰਨ ਏਜੰਟ ਉਹਨਾਂ ਰਾਜਾਂ ਵਿੱਚ ਅਨੰਤ ਸਮੇਂ ਲਈ ਘੁੰਮਦਾ ਰਹਿੰਦਾ ਹੈ। -## 🚀ਚੁਣੌਤੀ +> ਜੇ ਤੁਸੀਂ ਉਪਰੋਕਤ ਕੋਡ ਨੂੰ ਕਈ ਵਾਰੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਹੋ, ਤਾਂ ਤੁਸੀਂ ਦੇਖ ਸਕਦੇ ਹੋ ਕਿ ਕਈ ਵਾਰੀ ਇਹ "ਫਸ ਜਾਂਦਾ ਹੈ", ਅਤੇ ਤੁਹਾਨੂੰ ਇਸ ਨੂੰ ਰੋਕਣ ਲਈ ਨੋਟਬੁੱਕ ਵਿੱਚ 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/) -## ਅਸਾਈਨਮੈਂਟ -[ਇੱਕ ਹੋਰ ਹਕੀਕਤੀ ਸੰਸਾਰ](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/8-Reinforcement/2-Gym/README.md b/translations/pa/8-Reinforcement/2-Gym/README.md index 3d6258284..441468c4d 100644 --- a/translations/pa/8-Reinforcement/2-Gym/README.md +++ b/translations/pa/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-ਲਰਨਿੰਗ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ। + +![ਮਹਾਨ ਪਲਾਸ਼ਾ!](../../../../translated_images/pa/escape.18862db9930337e3.webp) + +> ਜੇਪੀਟਰ ਅਤੇ ਉਸਦੇ ਦੋਸਤ ਭੇਡੀਆ ਤੋਂ ਬਚਣ ਲਈ ਰਚਨਾਤਮਕ ਬਣਦੇ ਹਨ! ਚਿੱਤਰ [ਜੇਨ ਲੂਪਰ](https://twitter.com/jenlooper) ਵੱਲੋਂ + +ਅਸੀਂ ਸੰਤੁਲਨ ਬਣਾਉਣ ਦੀ ਸਧਾਰਣ ਵਰਜਨ ਨੂੰ ਵਰਤਾਂਗੇ ਜਿਸਨੂੰ **ਕਾਰਟਪੋਲ** ਸਮੱਸਿਆ ਕਿਹਾ ਜਾਂਦਾ ਹੈ। ਕਾਰਟਪੋਲ ਸੰਸਾਰ ਵਿੱਚ, ਸਾਡੇ ਕੋਲ ਇੱਕ ਅੱਡਾ ਸਲਾਇਡਰ ਹੁੰਦਾ ਹੈ ਜੋ ਖੱਬੇ ਜਾਂ ਸੱਜੇ ਹਿਲ ਸਕਦਾ ਹੈ, ਅਤੇ ਉਦੇਸ਼ ਹੈ ਕਿ ਸਲਾਇਡਰ ਦੇ ਉੱਤੇ ਇੱਕ ਲੰਬਕ ਲੰਬਾ ਖੰਭ ਸੰਤੁਲਨ ਵਿੱਚ ਰੱਖਣਾ। + +a cartpole + +## ਜ਼ਰੂਰੀਆਂ ਚੀਜ਼ਾਂ + +ਇਸ ਪਾਠ ਵਿੱਚ, ਅਸੀਂ ਇੱਕ ਲਾਇਬਰੇਰੀ **OpenAI Gym** ਦੀ ਵਰਤੋਂ ਕਰਾਂਗੇ ਵੱਖ-ਵੱਖ **ਪਰੀਵਰਤਨਾਂ** ਦੀ ਨਕਲ ਕਰਨ ਲਈ। ਤੁਸੀਂ ਇਸ ਪਾਠ ਦਾ ਕੋਡ ਲੋਕਲ (ਜਿਵੇਂ Visual Studio Code ਤੋਂ) ਚਲਾ ਸਕਦੇ ਹੋ, ਜਿਸ ਦੌਰਾਨ ਨਕਲ ਇਕ ਨਵੀਂ ਵਿਂਡੋ ਵਿੱਚ ਖੁਲ ਜਾਵੇਗੀ। ਜਦੋਂ ਕੋਡ ਆਨਲਾਈਨ ਚਲਾਉਂਦੇ ਹੋ, ਤਾਂ ਤੁਹਾਨੂੰ ਕੋਡ ਵਿੱਚ ਕੁਝ ਤਬਦੀਲੀਆਂ ਕਰਨੀਆਂ ਪੈ ਸਕਦੀਆਂ ਹਨ, ਜਿਵੇਂ [ਇਥੇ](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7) ਦਰਸਾਇਆ ਗਿਆ ਹੈ। ## OpenAI Gym -ਪਿਛਲੇ ਪਾਠ ਵਿੱਚ, ਖੇਡ ਦੇ ਨਿਯਮ ਅਤੇ ਸਥਿਤੀ ਨੂੰ ਅਸੀਂ ਆਪਣੇ ਆਪ ਬਣਾਈ `Board` ਕਲਾਸ ਦੁਆਰਾ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤਾ ਸੀ। ਇੱਥੇ ਅਸੀਂ ਇੱਕ ਖਾਸ **ਸਿਮੂਲੇਸ਼ਨ ਵਾਤਾਵਰਣ** ਦੀ ਵਰਤੋਂ ਕਰਾਂਗੇ, ਜੋ ਬੈਲੰਸਿੰਗ ਪੋਲ ਦੇ ਭੌਤਿਕ ਵਿਗਿਆਨ ਦੀ ਨਕਲ ਕਰੇਗਾ। ਰੀਇਨਫੋਰਸਮੈਂਟ ਲਰਨਿੰਗ ਐਲਗੋਰਿਥਮਾਂ ਨੂੰ ਸਿਖਾਉਣ ਲਈ ਸਭ ਤੋਂ ਪ੍ਰਸਿੱਧ ਸਿਮੂਲੇਸ਼ਨ ਵਾਤਾਵਰਣਾਂ ਵਿੱਚੋਂ ਇੱਕ ਹੈ [Gym](https://gym.openai.com/), ਜਿਸਨੂੰ [OpenAI](https://openai.com/) ਦੁਆਰਾ ਸੰਭਾਲਿਆ ਜਾਂਦਾ ਹੈ। ਇਸ 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): +ਪਹਿਲਾਂ, ਆਓ ਜੀਮ ਇੰਸਟਾਲ ਕਰੀਏ ਅਤੇ ਲੋੜੀਂਦੇ ਲਾਇਬਰੇਰੀਆਂ ਨੂੰ ਆਯਾਤ ਕਰੀਏ (ਕੋਡ ਬਲਾਕ 1): ```python import sys @@ -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` ਤੋਂ ਰੈਂਡਮ ਕਿਰਿਆ ਚੁਣਦੇ ਹਾਂ। +ਦੇਖਣ ਲਈ ਕਿ ਪਰੀਵਰਤਨ ਕਿਵੇਂ ਕੰਮ ਕਰਦਾ ਹੈ, ਆਓ 100 ਕਦਮਾਂ ਦੀ ਛੋਟੀ ਨਕਲ ਚਲਾਈਏ। ਹਰ ਕਦਮ ਤੇ, ਅਸੀਂ ਕਿਸੇ ਵੀ ਵਰਤੀ ਜਾਣ ਵਾਲੀ ਕਾਰਵਾਈ ਦਿੰਦੇ ਹਾਂ - ਇਸ ਨਕਲ ਵਿੱਚ ਅਸੀਂ ਬਸ ਕਿਸੇ තියੇ ਕਾਰਵਾਈ ਨੂੰ `action_space` ਵਿੱਚੋਂ ਯਾਦ੍ਰਚਿਤ ਚੋਣ ਕਰਦੇ ਹਾਂ। -1. ਹੇਠਾਂ ਦਿੱਤਾ ਕੋਡ ਚਲਾਓ ਅਤੇ ਦੇਖੋ ਕਿ ਇਹ ਕੀ ਨਤੀਜਾ ਦਿੰਦਾ ਹੈ। +1. ਹੇਠਾਂ ਦਿੱਤੇ ਕੋਡ ਨੂੰ ਚਲਾਓ ਅਤੇ ਵੇਖੋ ਕਿ ਇਹ ਕਿੱਥੇ ਲੈ ਜਾਂਦਾ ਹੈ। - ✅ ਯਾਦ ਰੱਖੋ ਕਿ ਇਹ ਕੋਡ ਸਥਾਨਕ Python ਇੰਸਟਾਲੇਸ਼ਨ 'ਤੇ ਚਲਾਉਣਾ ਪਸੰਦ ਕੀਤਾ ਜਾਂਦਾ ਹੈ! (ਕੋਡ ਬਲਾਕ 3) + ✅ ਯਾਦ ਰੱਖੋ ਕਿ ਇਸ ਕੋਡ ਨੂੰ ਲੋਕਲ Python ਇੰਸਟਾਲੇਸ਼ਨ 'ਤੇ ਚਲਾਉਣਾ ਪਸੰਦੀਦਾ ਹੈ! (ਕੋਡ ਬਲਾਕ 3) ```python env.reset() @@ -52,11 +72,11 @@ CartPole ਬੈਲੰਸਿੰਗ ਸਮੱਸਿਆ 'ਤੇ ਕੰਮ ਕਰਨ env.close() ``` - ਤੁਹਾਨੂੰ ਕੁਝ ਇਸ ਤਰ੍ਹਾਂ ਦੀ ਚਿੱਤਰਕਲਾ ਦੇਖਣੀ ਚਾਹੀਦੀ ਹੈ: + ਤੁਸੀਂ ਇਸ ਚਿੱਤਰ ਵਾਂਗ ਕੁਝ ਵੇਖਨਾ ਚਾਹੀਦਾ ਹੈ: - ![non-balancing cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) + ![ਗੈਰ-ਸੰਤੁਲਿਤ ਕਾਰਟਪੋਲ](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) -1. ਸਿਮੂਲੇਸ਼ਨ ਦੌਰਾਨ, ਸਾਨੂੰ ਕਿਰਿਆ ਕਰਨ ਲਈ ਅਵਲੋਕਨ ਪ੍ਰਾਪਤ ਕਰਨ ਦੀ ਲੋੜ ਹੈ। ਦਰਅਸਲ, `step` ਫੰਕਸ਼ਨ ਮੌਜੂਦਾ ਅਵਲੋਕਨ, ਇੱਕ ਇਨਾਮ ਫੰਕਸ਼ਨ, ਅਤੇ `done` ਫਲੈਗ ਵਾਪਸ ਕਰਦਾ ਹੈ ਜੋ ਇਹ ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਸਿਮੂਲੇਸ਼ਨ ਜਾਰੀ ਰੱਖਣ ਦਾ ਕੋਈ ਮਤਲਬ ਹੈ ਜਾਂ ਨਹੀਂ: (ਕੋਡ ਬਲਾਕ 4) +1. ਨਕਲ ਦੌਰਾਨ, ਅਸੀਂ ਕੁਝ ਅਵਲੋਕਨ ਪ੍ਰਾਪਤ ਕਰਦੇ ਹਾਂ ਤਾਂ ਜੋ ਇਹ ਫੈਸਲਾ ਕਰੀਏ ਕਿ ਕਿਵੇਂ ਕਾਰਵਾਈ ਕਰਨੀ ਹੈ। ਅਸਲ ਵਿੱਚ, ਸਟੈਪ ਫੰਕਸ਼ਨ ਵਰਤਮਾਨ ਅਵਲੋਕਨ, ਇਨਾਮ ਫੰਕਸ਼ਨ, ਅਤੇ ਡਨ ਝੰਡਾ (ਜੋ ਦੱਸਦਾ ਹੈ ਕਿ ਨਕਲ ਜਾਰੀ ਰੱਖਣ ਦਾ ਮਤਲਬ ਹੈ ਕਿ ਨਹੀਂ) ਪਰਤਾਉਂਦਾ ਹੈ: (ਕੋਡ ਬਲਾਕ 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 ਹੁੰਦਾ ਹੈ। ਇਹ ਇਸ ਲਈ ਹੈ ਕਿਉਂਕਿ ਸਾਡਾ ਲਕਸ਼ ਸਭ ਤੋਂ ਲੰਬੇ ਸਮੇਂ ਲਈ ਪੋਲ ਨੂੰ ਇੱਕ ਸਮਝਦਾਰ ਖੜੇ ਸਥਿਤੀ ਵਿੱਚ ਰੱਖਣਾ ਹੈ। + ਤੁਸੀਂ ਇਹ ਵੀ ਵੇਖ ਸਕਦੇ ਹੋ ਕਿ ਹਰ ਸਟੈਪ ਤੇ ਇਨਾਮ ਦਾ ਮੁੱਲ ਸਦਾ 1 ਹੁੰਦਾ ਹੈ। ਇਹ ਇਸ ਲਈ ਹੈ ਕਿਉਂਕਿ ਸਾਡਾ ਇਸ ਗੋਲ ਹੈ ਕਿ ਜਿੰਨਾ ਹੋ ਸਕੇ ਉਨ੍ਹਾਂ ਨਤਿਆਂ ਤਕ ਜੀਉਣਾ, ਅਰਥਾਤ ਖੰਭ ਨੂੰ ਸਭ ਤੋਂ ਲੰਮੇ ਸਮੇਂ ਲਈ ਲੰਬਕ ਸਥਿਤੀ ਵਿੱਚ ਰੱਖਣਾ। - ✅ ਦਰਅਸਲ, ਜੇਕਰ ਅਸੀਂ 100 ਲਗਾਤਾਰ ਪ੍ਰਯੋਗਾਂ ਵਿੱਚ 195 ਦਾ ਔਸਤ ਇਨਾਮ ਪ੍ਰਾਪਤ ਕਰ ਲੈਂਦੇ ਹਾਂ, ਤਾਂ 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 ਦੀ ਕੋਈ ਉੱਪਰੀ ਜਾਂ ਹੇਠਲੀ ਸੀਮਾ ਨਹੀਂ ਹੈ, ਜਿਸ ਨਾਲ ਅਨੰਤ ਸਥਿਤੀਆਂ ਦਾ ਨਤੀਜਾ ਨਿਕਲ ਸਕਦਾ ਹੈ। -✅ ਅਸੀਂ ਮੁੱਲਾਂ ਨੂੰ ਕਿਸੇ ਸੀਮਿਤ ਇੰਟਰਵਲ (ਜਿਵੇਂ -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-ਟੇਬਲ ਨੂੰ ਇੱਕ numpy ਟੈਨਸਰ ਦੇ ਰੂਪ ਵਿੱਚ ਜਿਸਦਾ ਆਕਾਰ 8x8x2 ਸੀ ਦਰਸਾਉਣਾ ਆਸਾਨ ਸੀ। ਜੇ ਅਸੀਂ ਬਿਨਾਂ ਵਿਭਾਜਨ ਵਰਤਦੇ ਹਾਂ, ਤਾਂ ਸਾਡੇ ਸਥਿਤੀ ਵੈਕਟਰ ਦਾ ਆਕਾਰ ਵੀ ਪਤਾ ਹੋਵੇਗਾ, ਇਸ ਲਈ ਅਸੀਂ ਉਹੀ ਤਰੀਕਾ ਵਰਤ ਸਕਦੇ ਹਾਂ ਅਤੇ ਸਥਿਤੀ ਨੂੰ ਇੱਕ ਐਰੇ ਦੇ ਰੂਪ ਵਿੱਚ ਦਰਸਾ ਸਕਦੇ ਹਾਂ ਜਿਸਦਾ ਆਕਾਰ 20x20x10x10x2 ਹੋਵੇਗਾ (ਇੱਥੇ 2 ਕਾਰਵਾਈ ਸਪੇਸ ਦਾ ਆਯਾਮ ਹੈ, ਅਤੇ ਪਹਿਲੇ ਆਯਾਮ ਜੋ ਉਨ੍ਹਾਂ ਪਰਮੀਟਰਾਂ ਲਈ ਚੁਣੀ ਗਈ ਬਿਨਾਂ ਦੀ ਗਿਣਤੀ ਨਾਲ ਮੈਚ ਕਰਦੇ ਹਨ ਜੋ ਅਵਲੋਕਨ ਸਪੇਸ ਵਿੱਚ ਹਨ)। -ਹਾਲਾਂਕਿ, ਕਈ ਵਾਰ ਅਵਲੋਕਨ ਸਪੇਸ ਦੇ ਸਹੀ ਆਕਾਰ ਪਤਾ ਨਹੀਂ ਹੁੰਦੇ। `discretize` ਫੰਕਸ਼ਨ ਦੇ ਕੇਸ ਵਿੱਚ, ਅਸੀਂ ਕਦੇ ਵੀ ਯਕੀਨੀ ਨਹੀਂ ਹੋ ਸਕਦੇ ਕਿ ਸਾਡੀ ਸਥਿਤੀ ਕੁਝ ਸੀਮਾਵਾਂ ਦੇ ਅੰਦਰ ਰਹਿੰਦੀ ਹੈ, ਕਿਉਂਕਿ ਕੁਝ ਮੁੱਲ ਬਾਊਂਡ ਨਹੀਂ ਹਨ। ਇਸ ਲਈ, ਅਸੀਂ ਥੋੜ੍ਹਾ ਵੱਖਰਾ ਤਰੀਕਾ ਵਰਤਾਂਗੇ ਅਤੇ Q-Table ਨੂੰ ਡਿਕਸ਼ਨਰੀ ਦੁਆਰਾ ਪ੍ਰਸਤੁਤ ਕਰਾਂਗੇ। +ਹਾਲਾਂਕਿ, ਕਈ ਵਾਰ ਅਵਲੋਕਨ ਸਪੇਸ ਦੇ ਨਿਰਧਾਰਤ ਆਕਾਰ ਪਤਾ ਨਹੀਂ ਹੁੰਦੇ। ਜੇਕਰ ਅਸੀਂ `discretize` ਫੰਕਸ਼ਨ ਵਰਤਦੇ ਹਾਂ, ਤਾਂ ਅਸੀਂ ਕਦੇ ਵੀ ਇਹ ਨਿਸ਼ਚਿਤ ਨਹੀਂ ਕਰ ਸਕਦੇ ਕਿ ਸਾਡੀ ਸਥਿਤੀ ਕਿਸੇ ਸੀਮਤ ਹਦ ਵਿੱਚ ਰਹਿੰਦੀ ਹੈ, ਕਿਉਂਕਿ ਕੁਝ ਮੂਲ ਮੁੱਲ ਅਣਬਾਧਤ ਹਨ। ਇਸ ਲਈ, ਅਸੀਂ ਥੋੜਾ ਵੱਖਰਾ ਤਰੀਕਾ ਵਰਤਾਂਗੇ ਅਤੇ Q-ਟੇਬਲ ਨੂੰ ਇੱਕ ਸ਼ਬਦ-ਕੋਸ਼ (ਡਿਕਸ਼ਨਰੀ) ਵਜੋਂ ਦਰਸਾਉਂਗੇ। -1. ਡਿਕਸ਼ਨਰੀ ਕੁੰਜੀ ਵਜੋਂ *(state,action)* ਦੀ ਜੋੜੀ ਦੀ ਵਰਤੋਂ ਕਰੋ, ਅਤੇ ਮੁੱਲ Q-Table ਐਂਟਰੀ ਮੁੱਲ ਨੂੰ ਦਰਸਾਏਗਾ। (ਕੋਡ ਬਲਾਕ 9) +1. ਜੋੜਾ *(ਸਥਿਤੀ, ਕਾਰਵਾਈ)* ਡਿਕਸ਼ਨਰੀ ਦੀ ਕੁੰਜੀ ਵਜੋਂ ਵਰਤੋਂ, ਅਤੇ ਮੁੱਲ Q-ਟੇਬਲ ਪ੍ਰਵੇਸ਼ ਮੁੱਲ ਹੋਵੇਗਾ। (ਕੋਡ ਬਲਾਕ 9) ```python Q = {} @@ -168,42 +188,123 @@ Q-Learning ਵਿੱਚ, ਸਾਨੂੰ Q-Table ਬਣਾਉਣ ਦੀ ਲੋ return [Q.get((state,a),0) for a in actions] ``` - ਇੱਥੇ ਅਸੀਂ ਇੱਕ ਫੰਕਸ਼ਨ `qvalues()` ਵੀ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦੇ ਹਾਂ, ਜੋ ਦਿੱਤੀ ਸਥਿਤੀ ਲਈ Q-Table ਮੁੱਲਾਂ ਦੀ ਸੂਚੀ ਵਾਪਸ ਕਰਦਾ ਹੈ ਜੋ ਸਾਰੀਆਂ ਸੰਭਾਵਿਤ ਕਿਰਿਆਵਾਂ ਨਾਲ ਸੰਬੰਧਿਤ ਹੁੰਦੀ ਹੈ। ਜੇਕਰ ਐਂਟਰੀ Q-Table ਵਿੱਚ ਮੌਜੂਦ ਨਹੀਂ ਹੈ, ਤਾਂ ਅਸੀਂ ਡਿਫਾਲਟ ਵਜੋਂ 0 ਵਾਪਸ ਕਰਾਂਗੇ। + ਇੱਥੇ ਅਸੀਂ ਇੱਕ ਫੰਕਸ਼ਨ `qvalues()` ਵੀ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦੇ ਹਾਂ, ਜੋ ਦਿੱਤੀ ਸਥਿਤੀ ਲਈ Q-ਟੇਬਲ ਦੀਆਂ ਸਾਰੀਆਂ ਸੰਭਾਵਤ ਕਾਰਵਾਈਆਂ වල Q-ਟੇਬਲ ਮੁੱਲਾਂ ਦੀ ਲਿਸਟ ਪਰਤਾਉਂਦਾ ਹੈ। ਜੇ ਇਨਟਰੀ Q-ਟੇਬਲ ਵਿੱਚ ਮੌਜੂਦ ਨਾ ਹੋਵੇ, ਤਾਂ ਅਸੀਂ 0 ਨੂੰ ਡਿਫੌਲਟ ਵਜੋਂ ਵਾਪਸ ਕਰਾਂਗੇ। -## ਆਓ Q-Learning ਸ਼ੁਰੂ ਕਰੀਏ +## ਚਲੋ Q-ਲਰਨਿੰਗ ਸ਼ੁਰੂ ਕਰੀਏ -ਹੁਣ ਅਸੀਂ ਪੀਟਰ ਨੂੰ ਬੈਲੈਂਸ ਸਿਖਾਉਣ ਲਈ ਤਿਆਰ ਹਾਂ! +ਹੁਣ ਅਸੀਂ ਜੇਪੀਟਰ ਨੂੰ ਸੰਤੁਲਨ ਸਿੱਖਾਉਣ ਲਈ ਤਿਆਰ ਹਾਂ! -1. ਸਭ ਤੋਂ ਪਹਿਲਾਂ, ਕੁਝ ਹਾਈਪਰਪੈਰਾਮੀਟਰ ਸੈੱਟ ਕਰੀਏ: (ਕੋਡ ਬਲਾਕ 10) +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` ਇੱਕ **ਛੂਟ ਦਰ** ਹੈ ਜੋ ਇਹ ਦਿਖਾਉਂਦਾ ਹੈ ਕਿ ਸਾਡੇ ਨੂੰ ਭਵਿੱਖ ਦੇ ਇਨਾਮ ਨੂੰ ਮੌਜੂਦਾ ਇਨਾਮ ਦੇ ਮੁਕਾਬਲੇ ਵਿੱਚ ਕਿੰਨਾ ਤਰਜੀਹ ਦੇਣੀ ਚਾਹੀਦੀ ਹੈ। + + `epsilon` ਇੱਕ **ਪੜਤਾਲ/ਫਾਇਦਾ ਉਠਾਉਣ ਵਾਲਾ ਕਾਰਕ** ਹੈ ਜੋ ਨਿਰਧਾਰਿਤ ਕਰਦਾ ਹੈ ਕਿ ਸਾਨੂੰ ਪੜਤਾਲ ਨੂੰ ਫਾਇਦਾ ਉਠਾਉਣ ਨਾਲ ਜਾਂ ਵਿਰੋਧ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ। ਸਾਡੀ ਅਲਗੋਰਿਦਮ ਵਿੱਚ, ਅਸੀਂ `epsilon` ਪ੍ਰਤੀਸ਼ਤ ਮਾਮਲਿਆਂ ਵਿੱਚ ਅਗਲੀ ਕਾਰਵਾਈ Q-ਟੇਬਲ ਮੁੱਲਾਂ ਅਨੁਸਾਰ ਚੁਣਦੇ ਹਾਂ, ਅਤੇ ਬਾਕੀ ਮਾਮਲਿਆਂ ਵਿੱਚ ਕੋਈ ਬੇਤਰਤੀਬ ਕਾਰਵਾਈ ਕਰਦੇ ਹਾਂ। ਇਹ ਸਾਨੂੰ ਖੋਜ ਕਰਨ ਦੀ ਆਗਿਆ ਦੇਂਦਾ ਹੈ ਕਿ ਅਸੀਂ ਪਹਿਲਾਂ ਕਦੇ ਨਾ ਦੇਖੇ ਖੋਜ ਖੇਤਰਾਂ ਦੀ। + + ✅ ਸੰਤੁਲਨ ਦੇ ਮਾਮਲੇ ਵਿੱਚ - ਬੇਤਰਤੀਬ ਕਾਰਵਾਈ (ਪੜਤਾਲ) ਨੂੰ ਗਲਤ ਦਿਸ਼ਾ ਵਿੱਚ ਇੱਕ ਬੇਤਰਤੀਬ ਮਾਰ ਦਾ ਕੰਮ ਮਿਲਦਾ ਹੈ, ਜਿਸਨੂੰ ਖੰਭ ਨੂੰ ਉਹਨਾਂ "ਗਲਤੀਆਂ" ਤੋਂ ਬਾਅਦ ਸੰਤੁਲਨ ਮੁੜ ਪ੍ਰਾਪਤ ਕਰਨਾ ਸਿੱਖਣਾ ਚਾਹੀਦਾ ਹੈ। + +### ਅਲਗੋਰਿਦਮ ਸੁਧਾਰੋ + +ਅਸੀਂ ਆਪਣੇ ਪਿਛਲੇ ਪਾਠ ਦੇ ਅਲਗੋਰਿਦਮ ਵਿੱਚ ਦੋ ਸੁਧਾਰ ਵੀ ਕਰ ਸਕਦੇ ਹਾਂ: + +- **ਔਸਤ ਕੁੱਲ ਇਨਾਮ ਦੀ ਗਣਨਾ ਕਰਨੀ**, ਕਈ ਨਕਲ ਦੇ ਰੂਪ ਵਿੱਚ। ਅਸੀਂ ਹਰ 5000 ਦੁਹਰਾਵਾਂ 'ਤੇ ਪ੍ਰਗਟਾਵੀਂ ਤੇਜ਼ੀ ਛਾਪਾਂਗੇ, ਅਤੇ ਇਸ ਸਮੇਂ ਦੀਆਂ ਦੌਰਾਨ ਆਪਣਾ ਕੁੱਲ ਇਨਾਮ ਗਿਣਤੀ ਵਿੱਚ ਆਵਰਤ ਕਰਾਂਗੇ। ਇਸਦਾ ਅਰਥ ਹੈ ਕਿ ਜੇ ਅਸੀਂ 195 ਤੋਂ ਵੱਧ ਮਿਲਦੇ ਹਾਂ, ਤਾਂ ਅਸੀਂ ਸਮੱਸਿਆ ਨੂੰ ਹੱਲ ਮੰਨ ਸਕਦੇ ਹਾਂ, ਅਤੇ ਕੋਈ ਲੋੜ ਤੋਂ ਵੱਧ ਇਨਾਮ ਨਾਲ ਵੀ। + +- **ਵੱਧ ਤੋਂ ਵੱਧ ਔਸਤ ਕੁੱਲ ਨਤੀਜੇ ਦੀ ਗਣਨਾ**, `Qmax`, ਅਤੇ ਅਸੀਂ ਉਸ ਨਤੀਜੇ ਨਾਲ ਸਬੰਧਿਤ Q-ਟੇਬਲ ਸੰਭਾਲਾਂਗੇ। ਜਦੋਂ ਤੁਸੀਂ ਟਰੇਨਿੰਗ ਚਲਾਵੋਗੇ, ਤਾਂ ਅਸੀਂ ਦਿੱਖਾਂਗੇ ਕਿ ਕਈ ਵਾਰ ਔਸਤ ਕੁੱਲ ਇਨਾਮ ਡਿੱਗਣਾ ਸ਼ੁਰੂ ਹੁੰਦਾ ਹੈ, ਅਤੇ ਅਸੀਂ ਉਹ Q-ਟੇਬਲ ਮੁੱਲ ਜੀਨਿਆਂ ਨਾਲ ਸਰਵੋਤਮ ਮਾਡਲ ਟਰੇਨਿੰਗ ਦੌਰਾਨ ਵੇਖਿਆ ਗਿਆ ਸੀ, ਨੂੰ ਸੁਰੱਖਿਅਤ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹਾਂ। + +1. ਹਰ ਨਕਲ ਵਿੱਚ ਸਾਰੇ ਕੁੱਲ ਇਨਾਮ `rewards` ਵੈਕਟਰ ਵਿੱਚ ਇਕੱਠੇ ਕਰੋ ਤਾ ਕਿ ਅੱਗੇ ਚਾਰਟਿੰਗ ਲਈ ਵਰਤ ਸਕੀਏ। (ਕੋਡ ਬਲਾਕ 11) + + ```python + def probs(v,eps=1e-4): + v = v-v.min()+eps + v = v/v.sum() + return v + + Qmax = 0 + cum_rewards = [] + rewards = [] + for epoch in range(100000): + obs = env.reset() + done = False + cum_reward=0 + # == ਸਿਮੂਲੇਸ਼ਨ ਕਰੋ == + while not done: + s = discretize(obs) + if random.random() Qmax: + Qmax = np.average(cum_rewards) + Qbest = Q + cum_rewards=[] + ``` + +ਤੁਹਾਨੂੰ ਇਹ ਨਤੀਜੇ ਵਿੱਚੋਂ ਇਹ ਗੱਲਾਂ ਨਜ਼ਰ ਆ ਸਕਦੀਆਂ ਹਨ: + +- **ਸਾਡੇ ਟੀਚੇ ਦੇ ਨੇੜੇ**। ਅਸੀਂ 195 ਕੁੱਲ ਇਨਾਮ 100+ ਲਗਾਤਾਰ ਸਿਮੂਲੇਸ਼ਨਾਂ ਬਰਾਬਰ ਪ੍ਰਾਪਤ ਕਰਨ ਦੇ ਟੀਚੇ ਦੇ ਬਹੁਤ ਨੇੜੇ ਹਾਂ, ਜਾਂ ਸਾਇਦ ਇਸਨੂੰ ਹਾਸਲ ਕਰ ਲਿਆ ਹੋਵੇ! ਜੇ ਅਸੀਂ ਘੱਟ ਮੁੱਲ ਲੈਂਦੇ ਹਾਂ, ਤਾਂ ਵੀ ਸਮੱਸਿਆ ਨਹੀਂ ਕਿਉਂਕਿ ਅਸੀਂ 5000 ਦੌਰਾਂ ਉੱਤੇ ਗਣਨਾ ਕਰ ਰਹੇ ਹਾਂ, ਜਦਕਿ 100 ਦੌਰਾਂ ਦੀ ਹੀ ਸੰਸਥਾਵਿਕ ਲੋੜ ਹੈ। + +- **ਇਨਾਮ ਡਿੱਗਣਾ ਸ਼ੁਰੂ ਹੋ ਜਾਂਦਾ ਹੈ**। ਕਈ ਵਾਰ ਇਨਾਮ ਘੱਟ ਹੋਣ ਲੱਗਦਾ ਹੈ, ਜੋ ਦਿਖਾਉਂਦਾ ਹੈ ਕਿ ਅਸੀਂ ਪਹਿਲਾਂ ਸਿੱਖੇ ਮੁੱਲਾਂ ਨੂੰ ਉਹ ਮੁੱਲ ਜੋ ਹਾਲਤ ਨੂੰ ਖ਼ਰਾਬ ਕਰਦੇ ਹਨ ਨਾਲ ਬਦਲ ਸਕਦੇ ਹਾਂ। + +ਇਹ ਨਜ਼ਾਰਾ ਟਰੇਨਿੰਗ ਪ੍ਰਗਟਾਵੀਂ ਨੂੰ ਚਾਰਟ ਕਰਨ ਤੇ ਵਧੇਰੇ ਸਪਸ਼ਟ ਮੁੱਲਦਾ ਹੈ। + +## ਟਰੇਨਿੰਗ ਪ੍ਰਗਟਾਵੀਂ ਦੀ ਚਾਰਟਿੰਗ + +ਟਰੇਨਿੰਗ ਦੌਰਾਨ, ਅਸੀਂ ਹਰ ਇਤਰਾਵਾਂ ਉੱਤੇ ਕੁਲ ਇਨਾਮ ਮੁੱਲ `rewards` ਵੈਕਟਰ ਵਿੱਚ ਇਕੱਤਰ ਕੀਤਾ। ਇਹ ਅਇਜ਼ਾ ਦਿਖਾਈ ਦੇਂਦਾ ਹੈ ਜਦੋਂ ਅਸੀਂ ਇਸਨੂੰ ਇਤਰਾਵਾਂ ਦੀ ਗਿਣਤੀ ਦੇ ਖਿਲਾਫ਼ ਚਾਰਟ ਕਰਦੇ ਹਾਂ: + +```python +plt.plot(rewards) +``` + +![ਕੱਚਾ ਪ੍ਰਗਟਾਵੀਂ](../../../../translated_images/pa/train_progress_raw.2adfdf2daea09c59.webp) + +ਇਸ ਗ੍ਰਾਫ ਤੋਂ, ਅਸੀਂ ਕੁਝ ਨਹੀਂ ਕਹਿ ਸਕਦੇ, ਕਿਉਂਕਿ ਸਟੋਕਾਸਟਿਕ ਟਰੇਨਿੰਗ ਪ੍ਰਕਿਰਿਆ ਦੇ ਪ੍ਰਕਿਰਤੀ ਕਾਰਨ ਟਰੇਨਿੰਗ ਸੈਸ਼ਨ ਦੀ ਲੰਬਾਈ ਬਹੁਤ ਵੱਖਰੀ ਹੁੰਦੀ ਹੈ। ਇਸ ਗ੍ਰਾਫ ਨੂੰ ਸਮਝਣ ਲਈ, ਅਸੀਂ ਇੱਕ ਸੈਰੀਜ਼ ਦੇ ਪ੍ਰਯੋਗਾਂ ਉੱਤੇ **ਚਲਦਾ ਔਸਤ** ਨਿਕਾਲ ਸਕਦੇ ਹਾਂ, ਕਹਿਣ ਲਈ 100। ਇਹ ਆਸਾਨੀ ਨਾਲ `np.convolve` ਨਾਲ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ: (ਕੋਡ ਬਲਾਕ 12) + +```python +def running_average(x,window): + return np.convolve(x,np.ones(window)/window,mode='valid') + +plt.plot(running_average(rewards,100)) +``` + +![ਟਰੇਨਿੰਗ ਪ੍ਰਗਟਾਵੀਂ](../../../../translated_images/pa/train_progress_runav.c71694a8fa9ab359.webp) - `gamma` **ਡਿਸਕਾਊਂਟ ਫੈਕਟਰ** ਹੈ ਜੋ ਇਹ ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਸਾਨੂੰ ਭਵਿੱਖ ਦੇ ਇਨਾਮ ਨੂੰ ਮੌਜੂਦਾ ਇਨਾਮ ਦੇ ਮੁਕਾਬਲੇ ਕਿੰਨਾ ਮਹੱਤਵ ਦੇਣਾ ਚਾਹੀਦਾ ਹੈ। +## ਹਾਈਪਰਪੈਰਾਮੀਟਰ ਬਦਲਣਾ - `epsilon` **ਐਕਸਪਲੋਰੇਸ਼ਨ/ਐਕਸਪਲੋਇਟੇਸ਼ਨ ਫੈਕਟਰ** ਹੈ ਜੋ ਇਹ ਨਿਰਧਾਰਤ ਕਰਦਾ ਹੈ ਕਿ ਸਾਨੂੰ ਐਕਸਪਲੋਰੇਸ਼ਨ ਨੂੰ ਐਕਸਪਲੋਇਟੇਸ਼ਨ ਦੇ ਮੁਕਾਬਲੇ ਕਿੰਨਾ ਤਰਜੀਹ ਦੇਣੀ ਚਾਹੀਦੀ ਹੈ। ਸਾਡੇ ਐਲਗੋਰਿਥਮ ਵਿੱਚ, ਅਸੀਂ `epsilon` ਪ੍ਰਤੀਸ਼ਤ ਮਾਮਲਿਆਂ ਵਿੱਚ Q-Table ਮੁੱਲਾਂ ਦੇ ਅਨੁਸਾਰ ਅਗਲੀ ਕਿਰਿਆ ਚੁਣਾਂਗੇ, ਅਤੇ ਬਾਕੀ ਮਾਮਲਿਆਂ ਵਿੱਚ ਅਸੀਂ ਇੱਕ ਰੈਂਡਮ ਕਿਰਿਆ ਚਲਾਵਾਂਗੇ। ਇਹ ਸਾਨੂੰ ਖੋਜ ਸਪੇਸ ਦੇ ਉਹਨਾਂ ਖੇਤਰਾਂ ਦੀ ਪੜਚੋਲ ਕਰਨ ਦੀ ਆਗਿਆ ਦੇਵੇਗਾ ਜੋ ਅਸੀਂ ਪਹਿਲਾਂ ਕਦੇ ਨਹੀਂ ਵੇਖੇ। +ਟਰੇਨਿੰਗ ਨੂੰ ਵਧੇਰੇ ਸਥਿਰ ਬਣਾਉਣ ਲਈ ਇਹ ਸਮਝਦਾਰੀ ਹੈ ਕਿ ਸਾਡੇ ਕੁਝ ਹਾਈਪਰਪੈਰਾਮੀਟਰਾਂ ਨੂੰ ਸੰਸਾਰ ਨਾਲ ਢਾਲਾ ਜਾਵੇ। ਖ਼ਾਸ ਤੌਰ 'ਤੇ: - ✅ ਬੈਲੈਂਸਿੰਗ ਦੇ ਸੰਦਰਭ ਵਿੱਚ - ਰੈਂਡਮ ਕਿਰਿਆ ਚੁਣਨਾ (ਐਕਸਪਲੋਰੇਸ਼ਨ) ਗਲਤ ਦਿਸ਼ਾ ਵਿੱਚ ਇੱਕ ਰੈਂਡਮ ਝਟਕੇ ਵਜੋਂ ਕੰਮ ਕਰੇਗਾ, ਅਤੇ ਪੋਲ ਨੂੰ ਉਹਨਾਂ "ਗਲਤੀਆਂ" ਤੋਂ ਬੈਲੈਂਸ ਮੁੜ ਪ੍ਰਾਪਤ ਕਰਨਾ ਸਿੱਖਣਾ ਪਵੇਗਾ। +- **ਲਰਨਿੰਗ ਟੇਜ਼ੀ ਲਈ**, `alpha`, ਅਸੀਂ ਸ਼ੁਰੂ ਵਿੱਚ 1 ਦੇ ਨੇੜੇ ਮੁੱਲਾਂ ਨਾਲ ਸ਼ੁਰੂ ਕਰ ਸਕਦੇ ਹਾਂ, ਅਤੇ ਫਿਰ ਪੈਮਾਨੇ ਨੂੰ ਘਟਾਉਂਦੇ ਜਾਵਾਂਗੇ। ਸਮਿਆਂ ਦੇ ਨਾਲ, ਅਸੀਂ Q-ਟੇਬਲ ਵਿੱਚ ਚੰਗੀਆਂ ਸੰਭਾਵਨਾ ਵਾਲੀਆਂ ਮੁੱਲਾਂ ਲਈ ਪਹੁੰਚਦੇ ਹਾਂ, ਇਸ ਲਈ ਅਸੀਂ ਉਹਨਾਂ ਨੂੰ ਥੋੜਾ ਬਦਲਦੇ ਹਾਂ, ਬਿਲਕੁਲ ਬਦਲ ਕਰ ਨਹੀਂ। -### ਐਲਗੋਰਿਥਮ ਵਿੱਚ ਸੁਧਾਰ ਕਰੋ +- **ਅਪਸੀਲਨ ਵਧਾਓ**। ਅਸੀਂ `epsilon` ਨੂੰ ਹੌਲੀ-ਹੌਲੀ ਵਧਾਉਣਾ ਚਾਹੁੰਦੇ ਹਾਂ ਤਾਂ ਜੋ ਘੱਟ ਖੋਜ ਹੋਵੇ ਅਤੇ ਵੱਧ ਫਾਇਦਾ ਉਠਾਉਣ ਹੋਵੇ। ਸੰਭਵ ਹੈ ਕਿ ਅਸੀਂ `epsilon` ਨੂੰ ਘੱਟ ਮੁੱਲ ਤੋਂ ਸ਼ੁਰੂ ਕਰੀਏ ਅਤੇ ਲਗਭਗ 1 ਤੱਕ ਵਧਾਈਏ। -ਅਸੀਂ ਪਿਛਲੇ ਪਾਠ ਤੋਂ ਆਪਣੇ ਐਲਗੋਰਿਥਮ ਵਿੱਚ ਦੋ ਸੁਧਾਰ ਕਰ ਸਕਦੇ ਹਾਂ: +> **ਕਾਰਜ 1**: ਹਾਈਪਰਪੈਰਾਮੀਟਰ ਮੁੱਲਾਂ ਨਾਲ ਖੇਡੋ ਅਤੇ ਵੇਖੋ ਕਿ ਤੁਸੀਂ ਵੱਧ ਕੁੱਲ ਇਨਾਮ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦੇ ਹੋ ਕਿ ਨਹੀਂ। ਕੀ ਤੁਸੀਂ 195 ਤੋਂ ਵੱਧ ਪ੍ਰਾਪਤ ਕਰ ਰਹੇ ਹੋ? -- **ਔਸਤ ਸੰਚਿਤ ਇਨਾਮ ਦੀ ਗਣਨਾ ਕਰੋ**, ਕਈ ਸਿਮੂਲੇਸ਼ਨਾਂ ਦੇ ਦੌਰਾਨ। ਅਸੀਂ ਹਰ 5000 ਇਟਰੇਸ਼ਨ 'ਤੇ ਪ੍ਰਗਤੀ ਪ੍ਰਿੰਟ ਕਰਾਂਗੇ, ਅਤੇ ਅਸੀਂ ਉਸ ਸਮੇਂ ਦੇ ਦੌਰਾਨ ਆਪਣੇ ਸੰਚਿਤ ਇਨਾਮ ਦਾ ਔਸਤ ਲਵਾਂਗੇ। ਇਸਦਾ ਮਤਲਬ ਹੈ ਕਿ ਜੇਕਰ ਅਸੀਂ 195 ਤੋਂ ਵੱਧ ਪਾਇੰਟ ਪ੍ਰਾਪਤ ਕਰਦੇ ਹਾਂ - ਅਸੀਂ ਸਮੱਸਿਆ ਨੂੰ ਹੱਲ ਕੀਤਾ ਮੰਨ ਸਕਦੇ ਹਾਂ, ਜੋ ਲੋੜੀਂਦੇ ਮਿਆਰ ਨਾਲੋਂ ਵੀ ਉੱਚ ਗੁਣਵੱਤਾ ਵਾਲਾ ਹੈ। -- **ਅਧਿਕਤਮ ਔਸਤ ਸੰਚਿਤ ਨਤੀਜੇ ਦੀ ਗਣਨਾ ਕਰੋ**, `Qmax`, ਅਤੇ ਅਸੀਂ ਉਸ ਨ -> **ਕਿਰਿਆ 1**: ਹਾਈਪਰਪੈਰਾਮੀਟਰ ਮੁੱਲਾਂ ਨਾਲ ਖੇਡੋ ਅਤੇ ਵੇਖੋ ਕਿ ਕੀ ਤੁਸੀਂ ਵਧੇਰੇ ਕੁੱਲ ਇਨਾਮ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦੇ ਹੋ। ਕੀ ਤੁਸੀਂ 195 ਤੋਂ ਉੱਪਰ ਪ੍ਰਾਪਤ ਕਰ ਰਹੇ ਹੋ? -> **ਟਾਸਕ 2**: ਸਮੱਸਿਆ ਨੂੰ ਔਪਚਾਰਿਕ ਤੌਰ 'ਤੇ ਹੱਲ ਕਰਨ ਲਈ, ਤੁਹਾਨੂੰ 100 ਲਗਾਤਾਰ ਦੌੜਾਂ ਵਿੱਚ 195 ਔਸਤ ਇਨਾਮ ਪ੍ਰਾਪਤ ਕਰਨਾ ਹੋਵੇਗਾ। ਟ੍ਰੇਨਿੰਗ ਦੌਰਾਨ ਇਸਨੂੰ ਮਾਪੋ ਅਤੇ ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਤੁਸੀਂ ਸਮੱਸਿਆ ਨੂੰ ਔਪਚਾਰਿਕ ਤੌਰ 'ਤੇ ਹੱਲ ਕਰ ਲਿਆ ਹੈ! +> **ਟਾਸਕ 2**: ਸਮੱਸਿਆ ਨੂੰ ਆਧਿਕਾਰਿਕ ਤੌਰ 'ਤੇ ਹੱਲ ਕਰਨ ਲਈ, ਤੁਹਾਨੂੰ 100 ਲਗਾਤਾਰ ਦੌੜਾਂ ਵਿੱਚ 195 ਔਸਤ ਇਨਾਮ ਪ੍ਰਾਪਤ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ। ਇਸ ਨੂੰ ਟਰੇਨਿੰਗ ਦੌਰਾਨ ਮਾਪੋ ਅਤੇ ਸੁਨਿਸ਼ਚਿਤ ਕਰੋ ਕਿ ਤੁਸੀਂ ਆਧਿਕਾਰਿਕ ਤੌਰ 'ਤੇ ਸਮੱਸਿਆ ਨੂੰ ਹੱਲ ਕਰ ਲਿਆ ਹੈ! -## ਨਤੀਜੇ ਨੂੰ ਕਾਰਵਾਈ ਵਿੱਚ ਦੇਖਣਾ +## ਨਤੀਜਾ ਕਾਰਜ ਵਿੱਚ ਵੇਖਣਾ -ਇਹ ਦਿਲਚਸਪ ਹੋਵੇਗਾ ਕਿ ਸੱਚਮੁੱਚ ਦੇਖਿਆ ਜਾਵੇ ਕਿ ਟ੍ਰੇਨ ਕੀਤੇ ਮਾਡਲ ਦਾ ਵਿਹਾਰ ਕਿਵੇਂ ਹੈ। ਆਓ ਸਿਮੂਲੇਸ਼ਨ ਚਲਾਈਏ ਅਤੇ ਟ੍ਰੇਨਿੰਗ ਦੌਰਾਨ ਵਰਤੀ ਗਈ ਇੱਕੋ ਜਿਹੀ ਐਕਸ਼ਨ ਚੋਣ ਰਣਨੀਤੀ ਦੀ ਪਾਲਣਾ ਕਰੀਏ, Q-ਟੇਬਲ ਵਿੱਚ ਸੰਭਾਵਨਾ ਵੰਡ ਅਨੁਸਾਰ ਸੈਂਪਲਿੰਗ ਕਰਦੇ ਹੋਏ: (ਕੋਡ ਬਲਾਕ 13) +ਇਹ ਵਾਕਈ ਦਿਲਚਸਪ ਹੋਵੇਗਾ ਦੇਖਣਾ ਕਿ ਟਰੇਨ ਕੀਤਾ ਮਾਡਲ ਕਿਵੇਂ ਵਰਤਦਾ ਹੈ। ਆਓ ਸਿਮੁਲੇਸ਼ਨ ਚਲਾਈਏ ਅਤੇ ਟਰੇਨਿੰਗ ਦੌਰਾਨ ਵਰਤੇ ਗਏ ਕਾਰਵਾਈ ਚੋਣ ਰਣਨੀਤੀ ਨੂੰ ਫੋਲੋ ਕਰੀਏ, Q-ਟੇਬਲ ਵਿੱਚ ਪ੍ਰਸਾਧਿਤ ਸੰਭਾਵਨਾ ਵਿਕਰਾਲਯ ਅਨੁਸਾਰ ਨਮੂਨਾ ਲਵਦੇ ਹੋਏ: (ਕੋਡ ਬਲਾਕ 13) ```python obs = env.reset() @@ -217,30 +318,32 @@ while not done: env.close() ``` -ਤੁਹਾਨੂੰ ਕੁਝ ਇਸ ਤਰ੍ਹਾਂ ਦੇਖਣ ਨੂੰ ਮਿਲੇਗਾ: +ਤੁਹਾਨੂੰ ਇਸ ਤਰ੍ਹਾਂ ਕੁਝ ਵੇਖਣ ਨੂੰ ਮਿਲਣਾ ਚਾਹੀਦਾ ਹੈ: -![a balancing cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) +![ਇੱਕ ਸੰਤੁਲਨ ਕਿਰਤਪੋਲ](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) --- -## 🚀ਚੁਣੌਤੀ +## 🚀ਚੈਲੇਂਜ -> **ਟਾਸਕ 3**: ਇੱਥੇ, ਅਸੀਂ Q-ਟੇਬਲ ਦੀ ਅੰਤਮ ਕਾਪੀ ਵਰਤ ਰਹੇ ਸਾਂ, ਜੋ ਸ਼ਾਇਦ ਸਭ ਤੋਂ ਵਧੀਆ ਨਹੀਂ ਹੋ ਸਕਦੀ। ਯਾਦ ਰੱਖੋ ਕਿ ਅਸੀਂ ਸਭ ਤੋਂ ਵਧੀਆ ਪ੍ਰਦਰਸ਼ਨ ਕਰਨ ਵਾਲੀ Q-ਟੇਬਲ ਨੂੰ `Qbest` ਵੈਰੀਏਬਲ ਵਿੱਚ ਸਟੋਰ ਕੀਤਾ ਹੈ! `Qbest` ਨੂੰ `Q` ਵਿੱਚ ਕਾਪੀ ਕਰਕੇ ਅਤੇ ਇਹ ਦੇਖ ਕੇ ਕਿ ਕੀ ਤੁਸੀਂ ਕੋਈ ਅੰਤਰ ਮਹਿਸੂਸ ਕਰਦੇ ਹੋ, ਇਸੇ ਉਦਾਹਰਨ ਨੂੰ ਸਭ ਤੋਂ ਵਧੀਆ Q-ਟੇਬਲ ਨਾਲ ਅਜ਼ਮਾਓ। +> **ਟਾਸਕ 3**: ਇੱਥੇ, ਅਸੀਂ Q-ਟੇਬਲ ਦੀ ਅਖੀਰਲੀ ਕਾਪੀ ਦਾਖਲ ਕਰ ਰਹੇ ਸੀ, ਜੋ ਸਭ ਤੋਂ ਵਧੀਆ ਨਹੀਂ ਹੋ ਸਕਦੀ। ਯਾਦ ਰੱਖੋ ਕਿ ਅਸੀਂ ਸਭ ਤੋਂ ਵਧੀਆ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰਨ ਵਾਲੀ Q-ਟੇਬਲ ਨੂੰ `Qbest` ਵੈਰੀਏਬਲ ਵਿੱਚ ਸਟੋਰ ਕੀਤਾ ਹੈ! ਸਭ ਤੋਂ ਵਧੀਆ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰਨ ਵਾਲੀ Q-ਟੇਬਲ ਨੂੰ `Qbest` ਤੋਂ `Q` ਵਿੱਚ ਕਾਪੀ ਕਰਕੇ ਉਸੇ ਉਦਾਹਰਨ ਨੂੰ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਅਤੇ ਵੇਖੋ ਕਿ ਤੁਹਾਨੂੰ ਫਰਕ ਮਹਿਸੂਸ ਹੁੰਦਾ ਹੈ ਜਾਂ ਨਹੀਂ। -> **ਟਾਸਕ 4**: ਇੱਥੇ ਅਸੀਂ ਹਰ ਕਦਮ 'ਤੇ ਸਭ ਤੋਂ ਵਧੀਆ ਕਾਰਵਾਈ ਨਹੀਂ ਚੁਣ ਰਹੇ ਸਾਂ, ਸਗੋਂ ਸੰਭਾਵਨਾ ਵੰਡ ਦੇ ਅਨੁਸਾਰ ਸੈਂਪਲਿੰਗ ਕਰ ਰਹੇ ਸਾਂ। ਕੀ ਹਮੇਸ਼ਾ ਸਭ ਤੋਂ ਵਧੀਆ ਕਾਰਵਾਈ ਚੁਣਨਾ ਵਧੀਆ ਹੋਵੇਗਾ, ਜਿਸਦਾ Q-ਟੇਬਲ ਮੁੱਲ ਸਭ ਤੋਂ ਉੱਚਾ ਹੈ? ਇਹ `np.argmax` ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ, ਜੋ ਸਭ ਤੋਂ ਉੱਚੇ Q-ਟੇਬਲ ਮੁੱਲ ਦੇ ਅਨੁਸਾਰ ਕਾਰਵਾਈ ਨੰਬਰ ਦਾ ਪਤਾ ਲਗਾਉਂਦਾ ਹੈ। ਇਸ ਰਣਨੀਤੀ ਨੂੰ ਲਾਗੂ ਕਰੋ ਅਤੇ ਦੇਖੋ ਕਿ ਕੀ ਇਹ ਸੰਤੁਲਨ ਵਿੱਚ ਸੁਧਾਰ ਕਰਦਾ ਹੈ। +> **ਟਾਸਕ 4**: ਇੱਥੇ ਅਸੀਂ ਹਰ ਕਦਮ 'ਤੇ ਸਬ ਤੋਂ ਵਧੀਆ ਕਾਰਵਾਈ ਨਹੀਂ ਚੁਣੀ, ਪਰ ਸੰਭਾਵਨਾ ਵਿਕਰਾਲਯ ਅਨੁਸਾਰ ਨਮੂਨਾ ਲਿਆ। ਕੀ ਹਮੇਸ਼ਾਂ ਸਭ ਤੋਂ ਵਧੀਆ ਕਾਰਵਾਈ ਚੁਣਨਾ, ਜਿਸ ਦਾ Q-ਟੇਬਲ ਵੈਲਯੂ ਸਭ ਤੋਂ ਵੱਧ ਹੈ, ਵਧੀਆ ਹੋਵੇਗਾ? ਇਹ `np.argmax` ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕਰ ਸਕਦੇ ਹਾਂ ਜੋ ਸਭ ਤੋਂ ਵੱਧ Q-ਟੇਬਲ ਵੈਲਯੂ ਨਾਲ ਸੰਬੰਧਿਤ ਕਾਰਵਾਈ ਨੰਬਰ ਪਤਾ ਕਰਦਾ ਹੈ। ਇਸ ਰਣਨੀਤੀ ਨੂੰ ਲਾਗੂ ਕਰੋ ਅਤੇ ਵੇਖੋ ਕਿ ਕੀ ਇਹ ਸੰਤੁਲਨ ਵਿੱਚ ਸੁਧਾਰ ਕਰਦਾ ਹੈ। -## [ਪੋਸਟ-ਲੈਕਚਰ ਕਵਿਜ਼](https://ff-quizzes.netlify.app/en/ml/) +## [ਪੋਸਟ-ਲੇਕਚਰ ਕ੍ਵਿਜ਼](https://ff-quizzes.netlify.app/en/ml/) ## ਅਸਾਈਨਮੈਂਟ -[ਮਾਊਂਟੇਨ ਕਾਰ ਨੂੰ ਟ੍ਰੇਨ ਕਰੋ](assignment.md) +[ਮਾਊਂਟੇਨ ਕਾਰ ਦੀ ਟ੍ਰੇਨਿੰਗ](assignment.md) -## ਨਿਸਕਰਸ਼ +## ਨਤੀਜਾ -ਅਸੀਂ ਹੁਣ ਸਿੱਖ ਲਿਆ ਹੈ ਕਿ ਕੇਵਲ ਇੱਕ ਇਨਾਮ ਫੰਕਸ਼ਨ ਪ੍ਰਦਾਨ ਕਰਕੇ, ਜੋ ਖੇਡ ਦੀ ਇੱਛਿਤ ਸਥਿਤੀ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦਾ ਹੈ, ਅਤੇ ਉਨ੍ਹਾਂ ਨੂੰ ਸਮਰਥਕ ਤਰੀਕੇ ਨਾਲ ਖੋਜ ਸਥਾਨ ਦੀ ਪੜਚੋਲ ਕਰਨ ਦਾ ਮੌਕਾ ਦੇ ਕੇ, ਏਜੰਟਾਂ ਨੂੰ ਚੰਗੇ ਨਤੀਜੇ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਕਿਵੇਂ ਟ੍ਰੇਨ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਅਸੀਂ ਸਫਲਤਾਪੂਰਵਕ Q-ਲਰਨਿੰਗ ਐਲਗੋਰਿਥਮ ਨੂੰ ਵਿਸ਼ੇਸ਼ ਅਤੇ ਲਗਾਤਾਰ ਵਾਤਾਵਰਣ ਦੇ ਮਾਮਲਿਆਂ ਵਿੱਚ ਲਾਗੂ ਕੀਤਾ ਹੈ, ਪਰ ਵਿਸ਼ੇਸ਼ ਕਾਰਵਾਈਆਂ ਨਾਲ। +ਅਸੀਂ ਹੁਣ ਸਿੱਖ ਚੁੱਕੇ ਹਾਂ ਕਿ ਕਿਸ ਤਰ੍ਹਾਂ ਏਜੰਟਾਂ ਨੂੰ ਚੰਗੇ ਨਤੀਜੇ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਸਿਖਾਣਾ ਹੈ ਸਿਰਫ਼ ਉਨ੍ਹਾਂ ਨੂੰ ਇੱਕ ਇਨਾਮ ਫੰਕਸ਼ਨ ਦੇ ਕੇ ਜੋ ਖੇਡ ਦੀ ਚਾਹੀਦੀ ਹੈ ਹਾਲਤ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦਾ ਹੈ, ਅਤੇ ਉਨ੍ਹਾਂ ਨੂੰ ਸੂਝ-ਬੂਝ ਨਾਲ ਖੋਜ ਕਰਨ ਦਾ ਮੌਕਾ ਦੇ ਕੇ। ਅਸੀਂ ਕਿਊ-ਲਰਨਿੰਗ ਐਲਗੋਰਿਥਮ ਨੂੰ ਸਫਲਤਾਪੂਰਵਕ ਅਲੱਗ-ਅਲੱਗ ਡਿਸਕਰੀਟ ਅਤੇ ਲਗਾਤਾਰ ਵਾਤਾਵਰਣਾਂ ਵਿੱਚ ਲਾਗੂ ਕੀਤਾ ਹੈ, ਪਰ ਡਿਸਕਰੀਟ ਕਾਰਵਾਈਆਂ ਨਾਲ। -ਇਹ ਵੀ ਅਹਿਮ ਹੈ ਕਿ ਉਹ ਸਥਿਤੀਆਂ ਦਾ ਅਧਿਐਨ ਕੀਤਾ ਜਾਵੇ ਜਿੱਥੇ ਕਾਰਵਾਈ ਸਥਿਤੀ ਵੀ ਲਗਾਤਾਰ ਹੁੰਦੀ ਹੈ, ਅਤੇ ਜਦੋਂ ਅਵਲੋਕਨ ਸਥਾਨ ਕਾਫੀ ਜਟਿਲ ਹੁੰਦਾ ਹੈ, ਜਿਵੇਂ ਕਿ Atari ਗੇਮ ਸਕ੍ਰੀਨ ਤੋਂ ਚਿੱਤਰ। ਉਹਨਾਂ ਸਮੱਸਿਆਵਾਂ ਵਿੱਚ ਅਕਸਰ ਚੰਗੇ ਨਤੀਜੇ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਹੋਰ ਸ਼ਕਤੀਸ਼ਾਲੀ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਤਕਨੀਕਾਂ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਜਿਵੇਂ ਕਿ ਨਿਊਰਲ ਨੈਟਵਰਕ। ਇਹ ਹੋਰ ਅਗਰਸਰ ਵਿਸ਼ੇ ਅਸੀਂ ਆਪਣੇ ਆਉਣ ਵਾਲੇ ਅਗਰਸਰ AI ਕੋਰਸ ਵਿੱਚ ਕਵਰ ਕਰਾਂਗੇ। +ਇਹ ਵੀ ਜਰੂਰੀ ਹੈ ਕਿ ਅਸੀਂ ਉਹਨਾਂ ਸਥਿਤੀਆਂ ਦਾ ਅਧਿਐਨ ਕਰੀਏ ਜਿੱਥੇ ਕਾਰਵਾਈ ਹਾਲਤ ਵੀ ਲਗਾਤਾਰ ਹੁੰਦੀ ਹੈ, ਅਤੇ ਨਿਰੀਖਣ ਅਖੰਡ ਜਿਆਦਾ ਜਟਿਲ ਹੁੰਦਾ ਹੈ, ਜਿਵੇਂ ਐਟਾਰੀ ਖੇਡ ਸਕਰੀਨ ਤੋਂ ਲਿਆ ਇਮেজ। ਉਸ ਤਰ੍ਹਾਂ ਦੀ ਸਮੱਸਿਆਵਾਂ ਵਿੱਚ ਅਕਸਰ ਅਸੀਂ ਵਧੀਆ ਨਤੀਜੇ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਹੋਰ ਮਜ਼ਬੂਤ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਤਕਨਾਲੋਜੀਆਂ ਵਰਤਣੀ ਪੈਂਦੀਆਂ ਹਨ, ਜਿਵੇਂ ਕਿ ਨਿਊਰਲ ਨੈੱਟਵਰਕ। ਇਹ ਹੋਰ ਉੱਚ ਜਟਿਲ ਵਿਸ਼ਿਆਂ ਸਾਡੇ ਆਗਲੇ ਉੱਚ ਪੱਧਰੀ ਏਆਈ ਕੋਰਸ ਦਾ ਵਿਸ਼ਾ ਹਨ। --- -**ਅਸਵੀਕਾਰਨਾ**: -ਇਹ ਦਸਤਾਵੇਜ਼ 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/9-Real-World/1-Applications/README.md b/translations/pa/9-Real-World/1-Applications/README.md index 4b98077ac..0eccb5526 100644 --- a/translations/pa/9-Real-World/1-Applications/README.md +++ b/translations/pa/9-Real-World/1-Applications/README.md @@ -1,104 +1,155 @@ # ਪੋਸਟਸਕ੍ਰਿਪਟ: ਅਸਲ ਦੁਨੀਆ ਵਿੱਚ ਮਸ਼ੀਨ ਲਰਨਿੰਗ -![ਅਸਲ ਦੁਨੀਆ ਵਿੱਚ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਦਾ ਸੰਖੇਪ](../../../../sketchnotes/ml-realworld.png) -> ਸਕੈਚਨੋਟ [ਟੋਮੋਮੀ ਇਮੁਰਾ](https://www.twitter.com/girlie_mac) ਦੁਆਰਾ -ਇਸ ਪਾਠਕ੍ਰਮ ਵਿੱਚ, ਤੁਸੀਂ ਡਾਟਾ ਨੂੰ ਟ੍ਰੇਨਿੰਗ ਲਈ ਤਿਆਰ ਕਰਨ ਅਤੇ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਮਾਡਲ ਬਣਾਉਣ ਦੇ ਕਈ ਤਰੀਕੇ ਸਿੱਖੇ ਹਨ। ਤੁਸੀਂ ਕਲਾਸਿਕ ਰਿਗ੍ਰੈਸ਼ਨ, ਕਲੱਸਟਰਿੰਗ, ਕਲਾਸੀਫਿਕੇਸ਼ਨ, ਪ੍ਰਾਕ੍ਰਿਤਿਕ ਭਾਸ਼ਾ ਪ੍ਰੋਸੈਸਿੰਗ, ਅਤੇ ਸਮੇਂ ਦੀ ਲੜੀ ਦੇ ਮਾਡਲਾਂ ਦੀ ਇੱਕ ਲੜੀ ਬਣਾਈ। ਵਧਾਈ ਹੋਵੇ! ਹੁਣ, ਤੁਸੀਂ ਸੋਚ ਰਹੇ ਹੋ ਸਕਦੇ ਹੋ ਕਿ ਇਹ ਸਾਰਾ ਕਿਸ ਲਈ ਹੈ... ਇਹ ਮਾਡਲ ਅਸਲ ਦੁਨੀਆ ਵਿੱਚ ਕਿਵੇਂ ਵਰਤੇ ਜਾਂਦੇ ਹਨ? +![ਅਸਲ ਦੁਨੀਆ ਵਿੱਚ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਦਾ ਸਾਰ ਸ੍ਕੇਟਚਨੋਟ ਵਿੱਚ](../../../../translated_images/pa/ml-realworld.26ee274671615577.webp) +> ਸ੍ਕੇਟਚਨੋਟ [Tomomi Imura](https://www.twitter.com/girlie_mac) ਵੱਲੋਂ -ਜਦੋਂ ਕਿ ਉਦਯੋਗ ਵਿੱਚ AI ਵਿੱਚ ਬਹੁਤ ਦਿਲਚਸਪੀ ਹੈ, ਜੋ ਆਮ ਤੌਰ 'ਤੇ ਡੀਪ ਲਰਨਿੰਗ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ, ਕਲਾਸਿਕ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਮਾਡਲਾਂ ਲਈ ਅਜੇ ਵੀ ਕੀਮਤੀ ਐਪਲੀਕੇਸ਼ਨ ਹਨ। ਤੁਸੀਂ ਅੱਜ ਵੀ ਕੁਝ ਐਪਲੀਕੇਸ਼ਨ ਵਰਤ ਰਹੇ ਹੋ ਸਕਦੇ ਹੋ! ਇਸ ਪਾਠ ਵਿੱਚ, ਤੁਸੀਂ ਅੱਠ ਵੱਖ-ਵੱਖ ਉਦਯੋਗਾਂ ਅਤੇ ਵਿਸ਼ੇਸ਼-ਮਾਮਲੇ ਡੋਮੇਨਾਂ ਦੀ ਪੜਚੋਲ ਕਰੋਗੇ ਕਿ ਇਹ ਮਾਡਲਾਂ ਨੂੰ ਕਿਵੇਂ ਜ਼ਿਆਦਾ ਪ੍ਰਦਰਸ਼ਨਯੋਗ, ਭਰੋਸੇਯੋਗ, ਬੁੱਧੀਮਾਨ ਅਤੇ ਉਪਭੋਗਤਾਵਾਂ ਲਈ ਕੀਮਤੀ ਬਣਾਉਂਦੇ ਹਨ। +ਇਸ ਕੋਰਸ ਵਿੱਚ, ਤੁਸੀਂ ਡਾਟਾ ਨੂੰ ਪ੍ਰਸ਼ਿਕਸ਼ਣ ਲਈ ਤਿਆਰ ਕਰਨ ਅਤੇ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਮਾਡਲ ਬਣਾਉਣ ਦੇ ਕਈ ਤਰੀਕੇ ਸਿਖੇ ਹਨ। ਤੁਸੀਂ ਕਲਾਸਿਕ ਰਿਗ੍ਰੈਸ਼ਨ, ਕਲੱਸਟਰਿੰਗ, ਵਰਗੀਕਰਨ, ਕੁਦਰਤੀ ਭਾਸ਼ਾ ਪ੍ਰਕਿਰਿਆ, ਅਤੇ ਸਮਾਂ ਸੀਰੀਜ਼ ਮਾਡਲਾਂ ਦੀ ਇੱਕ ਸੀਰੀਜ਼ ਬਣਾਈ ਹੈ। ਵਧਾਈਆਂ! ਹੁਣ, ਤੁਸੀਂ ਸੋਚ ਰਹੇ ਹੋਵੋਗੇ ਇਸ ਦਾ ਸਾਰੇ ਦਾ ਸਾਰੇ ਮਕਸਦ ਕੀ ਹੈ... ਇਹ ਮਾਡਲ ਸੱਚਮੁੱਚ ਦੁਨੀਆ ਵਿੱਚ ਕਿਵੇਂ ਲਾਗੂ ਹੁੰਦੀਆਂ ਹਨ? -## [ਪ੍ਰੀ-ਲੈਕਚਰ ਕਵਿਜ਼](https://ff-quizzes.netlify.app/en/ml/) +ਜਦੋਂ ਕਿ ਉਦਯੋਗ ਵਿੱਚ ਬਹੁਤ ਸਾਰਾ ਧਿਆਨ ਏ.ਆਈ. ਉੱਤੇ ਕੇਂਦਰਿਤ ਹੈ, ਜੋ ਆਮ ਤੌਰ 'ਤੇ ਡੀਪ ਲਰਨਿੰਗ ਨੂੰ ਵਰਤਦਾ ਹੈ, ਫਿਰ ਵੀ ਕਲਾਸਿਕ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਮਾਡਲਾਂ ਲਈ ਕੀਮਤੀ ਲਾਗੂਤਾਂ ਮੌਜੂਦ ਹਨ। ਤੁਸੀਂ ਆਜੇ ਵੀ ਇਨ੍ਹਾਂ ਵਿੱਚੋਂ ਕੁਝ ਲਾਗੂਤਾ ਵਰਤ ਰਹੇ ਹੋ ਸਕਦੇ ਹੋ! ਇਸ ਪਾਠ ਵਿੱਚ, ਤੁਸੀਂ ਅੱਠ ਵੱਖ-ਵੱਖ ਉਦਯੋਗਾਂ ਅਤੇ ਵਿਸ਼ਾ ਖੇਤਰਾਂ ਨੂੰ ਖੋਜੋਗੇ ਜੋ ਇਨ੍ਹਾਂ ਕਿਸਮ ਦੇ ਮਾਡਲਾਂ ਨੂੰ ਆਪਣੇ ਐਪਲੀਕੇਸ਼ਨਾਂ ਨੂੰ ਹੋਰ ਪ੍ਰਦਰਸ਼ਨਸ਼ੀਲ, ਭਰੋਸੇਯੋਗ, ਬੁੱਧਿਮਾਨ ਅਤੇ ਉਪਭੋਗਤਾਵਾਂ ਲਈ ਕੀਮਤੀ ਬਣਾਉਣ ਲਈ ਵਰਤਦੇ ਹਨ। -## 💰 ਵਿੱਤ +## [ਪੂਰਵ-ਲੈਕਚਰ ਕਵਿਜ਼](https://ff-quizzes.netlify.app/en/ml/) -ਵਿੱਤ ਖੇਤਰ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਲਈ ਕਈ ਮੌਕੇ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ। ਇਸ ਖੇਤਰ ਵਿੱਚ ਕਈ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਮਾਡਲ ਬਣਾਉਣ ਅਤੇ ML ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਹੱਲ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। +## 💰 ਵਿੱਤੀ ਖੇਤਰ -### ਕਰੈਡਿਟ ਕਾਰਡ ਧੋਖਾਧੜੀ ਪਤਾ ਲਗਾਉਣਾ +ਵਿੱਤ ਖੇਤਰ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਲਈ ਬਹੁਤ ਸਾਰੀਆਂ ਮੌਕਿਆਂ ਦੀ ਪੇਸ਼ਕਸ਼ ਕਰਦਾ ਹੈ। ਇਸ ਖੇਤਰ ਦੇ ਬਹੁਤ ਸਾਰੇ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ML ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਮਾਡਲ ਅਤੇ ਹੱਲ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। -ਅਸੀਂ ਇਸ ਪਾਠਕ੍ਰਮ ਵਿੱਚ ਪਹਿਲਾਂ [k-means ਕਲੱਸਟਰਿੰਗ](../../5-Clustering/2-K-Means/README.md) ਬਾਰੇ ਸਿੱਖਿਆ ਸੀ, ਪਰ ਇਹ ਕਰੈਡਿਟ ਕਾਰਡ ਧੋਖਾਧੜੀ ਨਾਲ ਸੰਬੰਧਿਤ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਹੱਲ ਕਰਨ ਲਈ ਕਿਵੇਂ ਵਰਤੀ ਜਾ ਸਕਦੀ ਹੈ? +### ਕਰੈਡਿਟ ਕਾਰਡ ਧੋਖਾਧੜੀ ਦਾ ਪਤਾ ਲਗਾਉਣਾ -k-means ਕਲੱਸਟਰਿੰਗ ਕਰੈਡਿਟ ਕਾਰਡ ਧੋਖਾਧੜੀ ਪਤਾ ਲਗਾਉਣ ਦੀ ਤਕਨੀਕ **ਆਊਟਲਾਇਰ ਡਿਟੈਕਸ਼ਨ** ਵਿੱਚ ਮਦਦਗਾਰ ਸਾਬਤ ਹੁੰਦੀ ਹੈ। ਆਊਟਲਾਇਰ, ਜਾਂ ਡਾਟਾ ਦੇ ਸੈਟ ਬਾਰੇ ਅਸਧਾਰਨ ਅਵਲੋਕਨ, ਸਾਨੂੰ ਦੱਸ ਸਕਦੇ ਹਨ ਕਿ ਕਰੈਡਿਟ ਕਾਰਡ ਆਮ ਤੌਰ 'ਤੇ ਵਰਤਿਆ ਜਾ ਰਿਹਾ ਹੈ ਜਾਂ ਕੁਝ ਅਜੀਬ ਹੋ ਰਿਹਾ ਹੈ। ਹੇਠਾਂ ਦਿੱਤੇ ਪੇਪਰ ਵਿੱਚ ਦਿਖਾਇਆ ਗਿਆ ਹੈ ਕਿ ਤੁਸੀਂ k-means ਕਲੱਸਟਰਿੰਗ ਐਲਗੋਰਿਥਮ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕਰੈਡਿਟ ਕਾਰਡ ਡਾਟਾ ਨੂੰ ਕਲੱਸਟਰ ਕਰ ਸਕਦੇ ਹੋ ਅਤੇ ਹਰ ਲੈਣ-ਦੇਣ ਨੂੰ ਇਸਦੀ ਅਸਧਾਰਨਤਾ ਦੇ ਅਧਾਰ 'ਤੇ ਇੱਕ ਕਲੱਸਟਰ ਵਿੱਚ ਸੌਂਪ ਸਕਦੇ ਹੋ। ਫਿਰ, ਤੁਸੀਂ ਧੋਖਾਧੜੀ ਵਾਲੇ ਅਤੇ ਕਾਨੂੰਨੀ ਲੈਣ-ਦੇਣ ਲਈ ਸਭ ਤੋਂ ਖਤਰਨਾਕ ਕਲੱਸਟਰਾਂ ਦਾ ਮੁਲਾਂਕਣ ਕਰ ਸਕਦੇ ਹੋ। -[ਹਵਾਲਾ](https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.680.1195&rep=rep1&type=pdf) +ਅਸੀਂ ਇਸ ਕੋਰਸ ਵਿੱਚ ਪਹਿਲਾਂ [k-ਮੀਨ ਕਲੱਸਟਰਿੰਗ](../../5-Clustering/2-K-Means/README.md) ਬਾਰੇ ਸਿੱਖਿਆ ਸੀ, ਪਰ ਇਹ ਕਰੈਡਿਟ ਕਾਰਡ ਧੋਖਾਧੜੀ ਨਾਲ ਸੰਬੰਧਤ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਕਿਵੇਂ ਹੱਲ ਕਰ ਸਕਦਾ ਹੈ? + +k-ਮੀਨ ਕਲੱਸਟਰਿੰਗ ਉਹ ਸਮੇਂ ਮਦਦਗਾਰ ਹੁੰਦੀ ਹੈ ਜਦੋਂ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਧੋਖਾਧੜੀ ਖੋਜਣ ਲਈ ਇੱਕ ਤਕਨੀਕ ‘ਆਉਟਲਾਇਰ ਡੀਟੈਕਸ਼ਨ’। ਆਉਟਲਾਇਰਜ਼ ਜਾਂ ਡਾਟਾ ਦੇ ਦੇਖਣ ਵਾਲੇ ਅੰਕੜਿਆਂ ਵਿੱਚ ਵਿਲੱਖਣਤਾ ਦੱਸ ਸਕਦੀ ਹੈ ਕਿ ਇੱਕ ਕਰੈਡਿਟ ਕਾਰਡ ਸਧਾਰਣ ਤਰੀਕੇ ਨਾਲ ਵਰਤਿਆ ਜਾ ਰਿਹਾ ਹੈ ਜਾਂ ਕੁਝ ਅਸਧਾਰਣ ਹੋ ਰਿਹਾ ਹੈ। ਹੇਠਾਂ ਦਿੱਤੇ ਕਾਗਜ਼ ਵਿੱਚ ਦਰਸਾਇਆ ਗਿਆ ਹੈ ਕਿ ਤੁਸੀਂ k-ਮੀਨ ਕਲੱਸਟਰਿੰਗ ਐਲਗੋਰਿਦਮ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕਰੈਡਿਟ ਕਾਰਡ ਡਾਟਾ ਸੋਰਟ ਕਰ ਸਕਦੇ ਹੋ ਅਤੇ ਹਰ ਲੈਣ-ਦੇਣ ਨੂੰ ਉਸ ਕਲੱਸਟਰ ਵਿੱਚ ਮੁਕੱਦਰ ਕਰ ਸਕਦੇ ਹੋ ਜਿੱਥੇ ਉਹ ਆਉਟਲਾਇਰ ਵੱਜੋਂ ਮੰਨਿਆ ਜਾਂਦਾ ਹੈ। ਫਿਰ, ਤੁਸੀਂ ਸਭ ਤੋਂ ਖ਼ਤਰਨਾਕ ਕਲੱਸਟਰਾਂ ਨੂੰ ਧੋਖਾਧੜੀ ਅਤੇ جائز ਲੈਣ-ਦੇਣ ਲਈ ਮੂਲਿਆਕਣ ਕਰ ਸਕਦੇ ਹੋ। +[Reference](https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.680.1195&rep=rep1&type=pdf) ### ਧਨ ਪ੍ਰਬੰਧਨ -ਧਨ ਪ੍ਰਬੰਧਨ ਵਿੱਚ, ਇੱਕ ਵਿਅਕਤੀ ਜਾਂ ਫਰਮ ਆਪਣੇ ਗਾਹਕਾਂ ਦੀਆਂ ਨਿਵੇਸ਼ਾਂ ਨੂੰ ਸੰਭਾਲਦੀ ਹੈ। ਉਨ੍ਹਾਂ ਦਾ ਕੰਮ ਲੰਬੇ ਸਮੇਂ ਵਿੱਚ ਧਨ ਨੂੰ ਕਾਇਮ ਰੱਖਣਾ ਅਤੇ ਵਧਾਉਣਾ ਹੈ, ਇਸ ਲਈ ਇਹ ਜ਼ਰੂਰੀ ਹੈ ਕਿ ਉਹ ਨਿਵੇਸ਼ ਚੁਣਨ ਜੋ ਚੰਗਾ ਪ੍ਰਦਰਸ਼ਨ ਕਰਦੇ ਹਨ। +ਧਨ ਪ੍ਰਬੰਧਨ ਵਿੱਚ, ਇੱਕ ਵਿਅਕਤੀ ਜਾਂ ਕੰਪਨੀ ਆਪਣੇ ਗਾਹਕਾਂ ਵੱਲੋਂ ਨਿਵੇਸ਼ ਨੂੰ ਸੰਭਾਲਦਾ ਹੈ। ਉਨ੍ਹਾਂ ਦਾ ਕੰਮ ਲੰਬੇ ਸਮੇਂ ਲਈ ਧਨ ਨੂੰ ਕਾਇਮ ਅਤੇ ਵਧਾਉਣਾ ਹੁੰਦਾ ਹੈ, ਇਸ ਲਈ ਵਧੀਆ ਕਾਰਗੁਜ਼ਾਰੀ ਵਾਲੇ ਨਿਵੇਸ਼ ਚੁਣਨਾ ਜਰੂਰੀ ਹੈ। -ਇੱਕ ਨਿਵੇਸ਼ ਕਿਵੇਂ ਪ੍ਰਦਰਸ਼ਨ ਕਰਦਾ ਹੈ, ਇਸ ਦਾ ਮੁਲਾਂਕਣ ਕਰਨ ਦਾ ਇੱਕ ਤਰੀਕਾ ਸਾਂਖਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਦੁਆਰਾ ਹੈ। [ਲਿਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ](../../2-Regression/1-Tools/README.md) ਇੱਕ ਕੀਮਤੀ ਸਾਧਨ ਹੈ ਜੋ ਸਮਝਣ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ ਕਿ ਇੱਕ ਫੰਡ ਕਿਸੇ ਬੈਂਚਮਾਰਕ ਦੇ ਮੁਕਾਬਲੇ ਕਿਵੇਂ ਪ੍ਰਦਰਸ਼ਨ ਕਰਦਾ ਹੈ। ਅਸੀਂ ਇਹ ਵੀ ਨਿਕਾਲ ਸਕਦੇ ਹਾਂ ਕਿ ਰਿਗ੍ਰੈਸ਼ਨ ਦੇ ਨਤੀਜੇ ਸਾਂਖਿਕ ਤੌਰ 'ਤੇ ਮਹੱਤਵਪੂਰਨ ਹਨ ਜਾਂ ਇਹ ਗਾਹਕ ਦੇ ਨਿਵੇਸ਼ਾਂ ਨੂੰ ਕਿੰਨਾ ਪ੍ਰਭਾਵਿਤ ਕਰਦੇ ਹਨ। ਤੁਸੀਂ ਆਪਣਾ ਵਿਸ਼ਲੇਸ਼ਣ ਵਧੇਰੇ ਰਿਸਕ ਫੈਕਟਰਾਂ ਨੂੰ ਧਿਆਨ ਵਿੱਚ ਰੱਖ ਕੇ ਮਲਟੀਪਲ ਰਿਗ੍ਰੈਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਵਧਾ ਸਕਦੇ ਹੋ। ਇਸਦਾ ਇੱਕ ਉਦਾਹਰਨ ਦੇਖਣ ਲਈ ਕਿ ਇਹ ਕਿਸੇ ਵਿਸ਼ੇਸ਼ ਫੰਡ ਲਈ ਕਿਵੇਂ ਕੰਮ ਕਰੇਗਾ, ਹੇਠਾਂ ਦਿੱਤੇ ਪੇਪਰ ਨੂੰ ਦੇਖੋ ਜੋ ਰਿਗ੍ਰੈਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਫੰਡ ਪ੍ਰਦਰਸ਼ਨ ਦਾ ਮੁਲਾਂਕਣ ਕਰਦਾ ਹੈ। -[ਹਵਾਲਾ](http://www.brightwoodventures.com/evaluating-fund-performance-using-regression/) +ਕਿਸੇ ਵਿਸ਼ੇਸ਼ ਨਿਵੇਸ਼ ਦੀ ਕਾਰਗੁਜ਼ਾਰੀ ਦਾ ਮੁਲੰਕਣ ਕਰਨ ਦਾ ਇੱਕ ਤਰੀਕਾ ਸਾਂਖਿਆਕੀ ਰਿਗ੍ਰੈਸ਼ਨ ਹੈ। [ਰੇਖੀ ਰਿਗ੍ਰੈਸ਼ਨ](../../2-Regression/1-Tools/README.md) ਇੱਕ ਅਹੰਕਾਰਪੂਰਨ ਸੰਦ ਹੈ ਜੋ ਇਹ ਸਮਝਦਾ ਹੈ ਕਿ ਕਿਸ ਤਰ੍ਹਾਂ ਕੋਈ ਨਿਧੀ ਕੁਝ ਮਾਪਦੰਡਾਂ ਨਾਲ ਤੁਲਨਾ ਵਿੱਚ ਕਾਰਗੁਜ਼ਾਰੀ ਕਰਦੀ ਹੈ। ਅਸੀਂ ਇਹ ਵੀ ਸਮਝ ਸਕਦੇ ਹਾਂ ਕਿ ਰਿਗ੍ਰੈਸ਼ਨ ਦੇ ਨਤੀਜੇ ਕੀ ਸਾਂਖਿਆਕੀ ਤੌਰ 'ਤੇ ਪ੍ਰਮਾਣਿਤ ਹਨ ਜਾਂ ਨਹੀਂ, ਜਾਂ ਇਹ ਗਾਹਕ ਦੇ ਨਿਵੇਸ਼ਾਂ ਨੂੰ ਕਿੰਨਾ ਪ੍ਰਭਾਵਿਤ ਕਰ ਸਕਦੇ ਹਨ। ਤੁਸੀਂ ਹੋਰ ਮੂੰਹ ਫੈਲਾ ਕੇ ਬਹੁ-ਰਿਗ੍ਰੈਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਆਪਣੀ ਵਿਸ਼ਲੇਸ਼ਣ ਨੂੰ ਵਧਾ ਸਕਦੇ ਹੋ, ਜਿੱਥੇ ਵਾਧੂ ਜੋਖਮ ਕਾਰਕਾਂ ਨੂੰ ਧਿਆਨ ਵਿੱਚ ਰੱਖਿਆ ਜਾ ਸਕਦਾ ਹੈ। ਕਿਸੇ ਖਾਸ ਨਿਧੀ ਲਈ ਇਹ ਕਿਵੇਂ ਕੰਮ ਕਰੇਗਾ, ਇਸ ਬਾਰੇ ਹੇਠਾਂ ਦਿੱਤੇ ਲੇਖ ਨੂੰ ਵੇਖੋ ਜਿਸ ਵਿੱਚ ਰਿਗ੍ਰੈਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਨਿਧੀ ਦੇ ਕਾਰਗੁਜ਼ਾਰੀ ਦੀ ਮੁਲਾਂਕਣ ਕਿੱਥੇ ਗਿਆ ਹੈ। +[Reference](http://www.brightwoodventures.com/evaluating-fund-performance-using-regression/) ## 🎓 ਸਿੱਖਿਆ -ਸਿੱਖਿਆ ਖੇਤਰ ਵੀ ਇੱਕ ਬਹੁਤ ਦਿਲਚਸਪ ਖੇਤਰ ਹੈ ਜਿੱਥੇ ML ਲਾਗੂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਇੱਥੇ ਕੁਝ ਦਿਲਚਸਪ ਸਮੱਸਿਆਵਾਂ ਹਨ ਜਿਵੇਂ ਕਿ ਟੈਸਟ ਜਾਂ ਨਿਬੰਧਾਂ 'ਤੇ ਧੋਖਾਧੜੀ ਦਾ ਪਤਾ ਲਗਾਉਣਾ ਜਾਂ ਸਹੀ ਕਰਨ ਦੀ ਪ੍ਰਕਿਰਿਆ ਵਿੱਚ ਪੱਖਪਾਤ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨਾ। +ਸਿੱਖਿਆ ਖੇਤਰ ਵੀ ਬਹੁਤ ਰੁਚਿਕਰ ਖੇਤਰ ਹੈ ਜਿੱਥੇ ML ਨੂੰ ਲਾਗੂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਇਥੇ ਗੁਪਤ ਆਪਣੇ ਟੈਸਟਾਂ ਜਾਂ ਨਿਬੰਧਾਂ 'ਤੇ ਚੀਟ ਕਰਨ ਦਾ ਪਤਾ ਲਗਾਉਣਾ ਜਾਂ ਸੋਧ ਪ੍ਰਕਿਰਿਆ ਵਿੱਚ ਪੱਖਪਾਤ ਜਾਂ ਸਲਾਹਬੁੱਧੀ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨਾ ਜਿਹਾ ਚੁਣੌਤੀਪੂਰਨ ਸਮੱਸਿਆਵਾਂ ਹਨ। -### ਵਿਦਿਆਰਥੀ ਦੇ ਵਿਵਹਾਰ ਦੀ ਭਵਿੱਖਬਾਣੀ +### ਵਿਦਿਆਰਥੀ ਦੇ ਵਰਤਾਰਾ ਦੀ ਪੇਸ਼ਗੋਈ -[Coursera](https://coursera.com), ਇੱਕ ਆਨਲਾਈਨ ਖੁੱਲ੍ਹਾ ਕੋਰਸ ਪ੍ਰਦਾਤਾ, ਦੇ ਤਕਨਾਲੋਜੀ ਬਲੌਗ ਵਿੱਚ ਕਈ ਇੰਜੀਨੀਅਰਿੰਗ ਫੈਸਲਿਆਂ ਦੀ ਚਰਚਾ ਕੀਤੀ ਗਈ ਹੈ। ਇਸ ਕੇਸ ਸਟਡੀ ਵਿੱਚ, ਉਨ੍ਹਾਂ ਨੇ ਇੱਕ ਰਿਗ੍ਰੈਸ਼ਨ ਲਾਈਨ ਪਲੌਟ ਕੀਤੀ ਤਾਂ ਜੋ ਘੱਟ NPS (ਨੈਟ ਪ੍ਰੋਮੋਟਰ ਸਕੋਰ) ਰੇਟਿੰਗ ਅਤੇ ਕੋਰਸ ਰਿਟੇਨਸ਼ਨ ਜਾਂ ਡ੍ਰਾਪ-ਆਫ ਦੇ ਵਿਚਕਾਰ ਕੋਈ ਸੰਬੰਧ ਪਤਾ ਲਗਾਇਆ ਜਾ ਸਕੇ। -[ਹਵਾਲਾ](https://medium.com/coursera-engineering/controlled-regression-quantifying-the-impact-of-course-quality-on-learner-retention-31f956bd592a) +[Coursera](https://coursera.com), ਇੱਕ ਆਨਲਾਈਨ ਮੁਫ਼ਤ ਕੋਰਸ ਪ੍ਰਦਾਤਾ, ਆਪਣੇ ਟੈਕ ਨੋਟਾਂ ਵਿੱਚ ਕਈ ਇੰਜੀਨੀਅਰਿੰਗ ਫੈਸਲੇ ਚਰਚਾ ਕਰਦਾ ਹੈ। ਇਸ ਕੇਸ ਸਟਡੀ ਵਿੱਚ, ਉਹਨਾਂ ਨੇ ਇੱਕ ਰਿਗ੍ਰੈਸ਼ਨ ਲਾਈਨ ਬਣਾਈ ਹੈ ਜਿਸ ਨਾਲ ਨੀਚੇ NPS (ਨੈੱਟ ਪ੍ਰੋਮੋਟਰ ਸਕੋਰ) ਦਰ ਅਤੇ ਕੋਰਸ ਖਤਮ ਕਰਨ ਜਾਂ ਛੱਡਣ ਵਿੱਚ ਸੰਬੰਧ ਦਾ ਪਤਾ ਲੱਗਾਉਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ ਹੈ। +[Reference](https://medium.com/coursera-engineering/controlled-regression-quantifying-the-impact-of-course-quality-on-learner-retention-31f956bd592a) ### ਪੱਖਪਾਤ ਨੂੰ ਘਟਾਉਣਾ -[Grammarly](https://grammarly.com), ਇੱਕ ਲਿਖਣ ਵਾਲਾ ਸਹਾਇਕ ਜੋ ਸਪੈਲਿੰਗ ਅਤੇ ਗ੍ਰਾਮਰ ਦੀਆਂ ਗਲਤੀਆਂ ਦੀ ਜਾਂਚ ਕਰਦਾ ਹੈ, ਆਪਣੇ ਉਤਪਾਦਾਂ ਵਿੱਚ ਉੱਚ-ਪੱਧਰ ਦੇ [ਪ੍ਰਾਕ੍ਰਿਤਿਕ ਭਾਸ਼ਾ ਪ੍ਰੋਸੈਸਿੰਗ ਸਿਸਟਮ](../../6-NLP/README.md) ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ। ਉਨ੍ਹਾਂ ਨੇ ਆਪਣੇ ਤਕਨਾਲੋਜੀ ਬਲੌਗ ਵਿੱਚ ਇੱਕ ਦਿਲਚਸਪ ਕੇਸ ਸਟਡੀ ਪ੍ਰਕਾਸ਼ਿਤ ਕੀਤੀ ਕਿ ਉਨ੍ਹਾਂ ਨੇ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਵਿੱਚ ਲਿੰਗ ਪੱਖਪਾਤ ਨਾਲ ਕਿਵੇਂ ਨਜਿੱਠਿਆ, ਜਿਸ ਬਾਰੇ ਤੁਸੀਂ ਸਾਡੇ [ਪੱਖਪਾਤ ਪਾਠ](../../1-Introduction/3-fairness/README.md) ਵਿੱਚ ਸਿੱਖਿਆ ਸੀ। -[ਹਵਾਲਾ](https://www.grammarly.com/blog/engineering/mitigating-gender-bias-in-autocorrect/) +[Grammarly](https://grammarly.com), ਇੱਕ ਲਿਖਤੀ ਸਹਾਇਕ ਜੋ ਸ਼ਾਬਦਿਕ ਅਤੇ ਵਿਅਾਕਰਨ ਦੀਆਂ ਗਲਤੀਆਂ ਚੈੱਕ ਕਰਦਾ ਹੈ, ਆਪਣੇ ਉਤਪਾਦਾਂ ਵਿੱਚ [ਕੁਦਰਤੀ ਭਾਸ਼ਾ ਪ੍ਰਕਿਰਿਆ ਪ੍ਰਣਾਲੀਆਂ](../../6-NLP/README.md) ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ। ਉਹਨਾਂ ਨੇ ਆਪਣੇ ਟੈਕ ਬਲੌਗ ਵਿੱਚ ਇੱਕ ਦਿਲਚਸਪ ਕੇਸ ਸਟਡੀ ਪ੍ਰਕਾਸ਼ਿਤ ਕੀਤੀ ਹੈ ਕਿ ਕਿਵੇਂ ਉਹ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਵਿੱਚ ਲਿੰਗ ਪੱਖਪਾਤ ਨੂੰ ਸੰਭਾਲਦੇ ਹਨ, ਜਿਸ ਬਾਰੇ ਤੁਸੀਂ ਸਾਡੇ [ਪ੍ਰਾਰੰਭਿਕ ਨਿਰਪੱਖਤਾ ਪਾਠ](../../1-Introduction/3-fairness/README.md) ਵਿੱਚ ਸਿੱਖਿਆ ਸੀ। +[Reference](https://www.grammarly.com/blog/engineering/mitigating-gender-bias-in-autocorrect/) ## 👜 ਰਿਟੇਲ -ਰਿਟੇਲ ਖੇਤਰ ML ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਬਹੁਤ ਲਾਭ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦਾ ਹੈ, ਜਿਵੇਂ ਕਿ ਗਾਹਕ ਦੇ ਯਾਤਰਾ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਣਾ ਜਾਂ ਸਟਾਕ ਇਨਵੈਂਟਰੀ ਨੂੰ ਅਨੁਕੂਲ ਬਣਾਉਣਾ। +ਰਿਟੇਲ ਖੇਤਰ ਵਿਸ਼ਵਾਸਨਯੋਗ ਹੈ ML ਦੀ ਵਰਤੋਂ ਤੋਂ ਗਾਹਕਾਂ ਦੇ ਸਫ਼ਰ ਨੂੰ ਵਧੀਆ ਬਨਾਉਣ ਤੋਂ ਲੈ ਕੇ ਸਟੌਕ ਇਨਵੈਂਟਰੀ ਨੂੰ ਅੱਛੇ ਤਰੀਕੇ ਨਾਲ ਸੰਭਾਲਣ ਤੱਕ ਬਹੁਤ ਫਾਇਦਾ ਲੈ ਸਕਦਾ ਹੈ। -### ਗਾਹਕ ਦੀ ਯਾਤਰਾ ਨੂੰ ਵਿਅਕਤੀਗਤ ਬਣਾਉਣਾ +### ਗਾਹਕਾਂ ਦੇ ਸਫ਼ਰ ਨੂੰ ਨਿੱਜੀਕਰਨ -Wayfair, ਇੱਕ ਕੰਪਨੀ ਜੋ ਫਰਨੀਚਰ ਵਰਗੇ ਘਰੇਲੂ ਸਾਮਾਨ ਵੇਚਦੀ ਹੈ, ਗਾਹਕਾਂ ਨੂੰ ਉਨ੍ਹਾਂ ਦੇ ਸੁਆਦ ਅਤੇ ਜ਼ਰੂਰਤਾਂ ਲਈ ਸਹੀ ਉਤਪਾਦ ਲੱਭਣ ਵਿੱਚ ਮਦਦ ਕਰਨਾ ਬਹੁਤ ਮਹੱਤਵਪੂਰਨ ਹੈ। ਇਸ ਲੇਖ ਵਿੱਚ, ਕੰਪਨੀ ਦੇ ਇੰਜੀਨੀਅਰਾਂ ਨੇ ਵਰਣਨ ਕੀਤਾ ਕਿ ਉਹ ML ਅਤੇ NLP ਦੀ ਵਰਤੋਂ ਕਰਕੇ "ਗਾਹਕਾਂ ਲਈ ਸਹੀ ਨਤੀਜੇ ਪੇਸ਼" ਕਰਦੇ ਹਨ। ਖਾਸ ਤੌਰ 'ਤੇ, ਉਨ੍ਹਾਂ ਦਾ ਕਵੈਰੀ ਇੰਟੈਂਟ ਇੰਜਨ ਗਾਹਕ ਸਮੀਖਿਆਵਾਂ 'ਤੇ ਐਨਟੀਟੀ ਐਕਸਟ੍ਰੈਕਸ਼ਨ, ਕਲਾਸੀਫਾਇਰ ਟ੍ਰੇਨਿੰਗ, ਐਸੈਟ ਅਤੇ ਰਾਏ ਐਕਸਟ੍ਰੈਕਸ਼ਨ, ਅਤੇ ਸੈਂਟੀਮੈਂਟ ਟੈਗਿੰਗ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ। ਇਹ ਆਨਲਾਈਨ ਰਿਟੇਲ ਵਿੱਚ NLP ਦੇ ਵਰਤੋਂ ਦਾ ਇੱਕ ਕਲਾਸਿਕ ਕੇਸ ਹੈ। -[ਹਵਾਲਾ](https://www.aboutwayfair.com/tech-innovation/how-we-use-machine-learning-and-natural-language-processing-to-empower-search) +Wayfair ਵਿੱਚ, ਜੋ ਘਰੇਲੂ ਸਮਾਨ ਜਿਵੇਂ ਕਿ ਫਰਨੀਚਰ ਵੇਚਦਾ ਹੈ, ਗਾਹਕਾਂ ਨੂੰ ਉਨ੍ਹਾਂ ਦੇ ਰੁਚੀ ਅਤੇ ਜ਼ਰੂਰਤਾਂ ਅਨੁਸਾਰ ਉਸਤੋਂ ਉਤਪਾਦ ਲੱਭਣ ਵਿੱਚ ਮਦਦ ਕਰਨਾ ਬਹੁਤ ਜਰੂਰੀ ਹੈ। ਇਸ ਲੇਖ ਵਿੱਚ, ਕੰਪਨੀ ਦੇ ਇੰਜੀਨੀਅਰ ਦੱਸਦੇ ਹਨ ਕਿ ਉਹ ਸੰਸਾਰਕ ਭਾਸ਼ਾ ਪ੍ਰਕਿਰਿਆ ਅਤੇ ML ਦੀ ਵਰਤੋਂ ਨਾਲ "ਸਹੀ ਨਤੀਜੇ ਗਾਹਕਾਂ ਲਈ ਪੇਸ਼ ਕਰਦੇ ਹਨ"। ਖਾਸ ਤੌਰ 'ਤੇ, ਉਨ੍ਹਾਂ ਦਾ Query Intent Engine ਐਨਟੀਟੀ ਐਕਸਟ੍ਰੈਕਸ਼ਨ, ਕਲਾਸੀਫਾਇਰ ਪ੍ਰਸ਼ਿਖਣ, ਸੰਪਤੀ ਅਤੇ ਰਾਏ ਦੀ ਕਾਢ, ਅਤੇ ਗਾਹਕ ਸਮੀਖਿਆਵਾਂ 'ਤੇ ਭਾਵਨਾ ਟੈਗਿੰਗ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ। ਇਹ NLP ਦੇ ਰਿਟੇਲ ਵਿੱਚ ਪੁਰਾਣਾ ਵਰਤਾਰਾਂ ਦਾ ਉਦਾਹਰਨ ਹੈ। +[Reference](https://www.aboutwayfair.com/tech-innovation/how-we-use-machine-learning-and-natural-language-processing-to-empower-search) -### ਇਨਵੈਂਟਰੀ ਪ੍ਰਬੰਧਨ +### ਸਟੌਕ ਇਨਵੈਂਟਰੀ ਪ੍ਰਬੰਧਨ -[StitchFix](https://stitchfix.com) ਵਰਗੀਆਂ ਨਵੀਂ ਅਤੇ ਚੁਸਤ ਕੰਪਨੀਆਂ, ਜੋ ਗਾਹਕਾਂ ਨੂੰ ਕਪੜਿਆਂ ਦੇ ਬਾਕਸ ਭੇਜਣ ਦੀ ਸੇਵਾ ਪ੍ਰਦਾਨ ਕਰਦੀਆਂ ਹਨ, ਸਿਫਾਰਸ਼ਾਂ ਅਤੇ ਇਨਵੈਂਟਰੀ ਪ੍ਰਬੰਧਨ ਲਈ ML 'ਤੇ ਬਹੁਤ ਨਿਰਭਰ ਕਰਦੀਆਂ ਹਨ। ਉਨ੍ਹਾਂ ਦੀ ਸਟਾਈਲਿੰਗ ਟੀਮਾਂ ਉਨ੍ਹਾਂ ਦੀ ਮਰਚੈਂਡਾਈਜ਼ਿੰਗ ਟੀਮਾਂ ਨਾਲ ਮਿਲ ਕੇ ਕੰਮ ਕਰਦੀਆਂ ਹਨ। "ਸਾਡੇ ਇੱਕ ਡਾਟਾ ਸਾਇੰਟਿਸਟ ਨੇ ਇੱਕ ਜੈਨੇਟਿਕ ਐਲਗੋਰਿਥਮ ਨਾਲ ਤਜਰਬਾ ਕੀਤਾ ਅਤੇ ਇਸਨੂੰ ਐਪੇਰਲ 'ਤੇ ਲਾਗੂ ਕੀਤਾ ਤਾਂ ਜੋ ਇਹ ਅਨੁਮਾਨ ਲਗਾਇਆ ਜਾ ਸਕੇ ਕਿ ਕਿਹੜਾ ਕਪੜਾ ਸਫਲ ਹੋਵੇਗਾ ਜੋ ਅੱਜ ਮੌਜੂਦ ਨਹੀਂ ਹੈ। ਅਸੀਂ ਇਸਨੂੰ ਮਰਚੈਂਡਾਈਜ਼ ਟੀਮ ਦੇ ਹਵਾਲੇ ਕੀਤਾ ਅਤੇ ਹੁਣ ਉਹ ਇਸਨੂੰ ਇੱਕ ਸਾਧਨ ਵਜੋਂ ਵਰਤ ਸਕਦੇ ਹਨ।" -[ਹਵਾਲਾ](https://www.zdnet.com/article/how-stitch-fix-uses-machine-learning-to-master-the-science-of-styling/) +ਨਵੀਨੀਕਰਨਸ਼ੀਲ, ਤੇਜ਼ ਕੰਪਨੀਆਂ ਜਿਵੇਂ ਕਿ [StitchFix](https://stitchfix.com), ਜੋ ਗਾਹਕਾਂ ਨੂੰ ਕਪੜੇ ਭੇਜਦੀ ਹੈ, ਸਿਫਾਰਸ਼ਾਂ ਅਤੇ ਇਨਵੈਂਟਰੀ ਪ੍ਰਬੰਧਨ ਲਈ ML 'ਤੇ ਭਾਰੀ ਤੌਰ 'ਤੇ ਨਿਰਭਰ ਕਰਦੀਆਂ ਹਨ। ਉਨ੍ਹਾਂ ਦੀਆਂ ਸਟਾਈਲਿੰਗ ਟੀਮਾਂ ਆਪਣੇ ਮਰਚੈਂਡਾਈਜ਼ਿੰਗ ਟੀਮਾਂ ਨਾਲ ਮਿਲ ਕੇ ਕੰਮ ਕਰਦੀਆਂ ਹਨ: "ਸਾਡਾ ਇੱਕ ਡਾਟਾ ਸਾਇੰਟਿਸਟ ਜਨੈਟਿਕ ਐਲਗੋਰਿਦਮ ਨਾਲ ਖੇਡਦਾ ਸੀ ਅਤੇ ਇਸ ਨੂੰ ਕਪੜਿਆਂ 'ਤੇ ਲਾਗੂ ਕਰਕੇ ਅਜਿਹਾ ਕਪੜਾ ਭਵਿੱਖਬਾਣੀ ਕੀਤਾ ਜੋ ਅਜੇ ਤੱਕ ਮੌਜੂਦ ਨਹੀਂ ਸੀ। ਅਸੀਂ ਇਹ ਮਰਚੈਂਡਾਈਜ਼ ਟੀਮ ਨੂੰ ਦਿੱਤਾ ਅਤੇ ਹੁਣ ਉਹ ਇਸਨੂੰ ਸੰਦ ਵਜੋਂ ਵਰਤ ਸਕਦੇ ਹਨ।" +[Reference](https://www.zdnet.com/article/how-stitch-fix-uses-machine-learning-to-master-the-science-of-styling/) -## 🏥 ਸਿਹਤ ਸੇਵਾਵਾਂ +## 🏥 ਸਿਹਤ ਸੇਵਾ -ਸਿਹਤ ਸੇਵਾ ਖੇਤਰ ML ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਰਿਸਰਚ ਕੰਮਾਂ ਅਤੇ ਲਾਜ਼ਮਿਕ ਸਮੱਸਿਆਵਾਂ ਜਿਵੇਂ ਕਿ ਮਰੀਜ਼ਾਂ ਨੂੰ ਦੁਬਾਰਾ ਭਰਤੀ ਕਰਨਾ ਜਾਂ ਬਿਮਾਰੀਆਂ ਦੇ ਫੈਲਣ ਨੂੰ ਰੋਕਣਾ ਨੂੰ ਅਨੁਕੂਲ ਬਣਾਉਣ ਲਈ ਲਾਭ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦਾ ਹੈ। +ਸਿਹਤ ਸੇਵਾ ਖੇਤਰ ਖੋਜ ਕਾਰਜਾਂ ਅਤੇ ਤਰਕਸ਼ੀਲ ਸਮੱਸਿਆਵਾਂ ਜਿਵੇਂ ਮਰੀਜ਼ਾਂ ਦਾ ਦੁਬਾਰਾ ਦਾਖਲਾ ਅਤੇ ਬਿਮਾਰੀਆਂ ਦੇ ਫੈਲਣ ਨੂੰ ਰੋਕਣ ਦਾ ਤਰੀਕਾ ਵੇਖਣ ਲਈ ML ਦਾ ਲਾਭ ਲੈ ਸਕਦਾ ਹੈ। -### ਕਲੀਨਿਕਲ ਟ੍ਰਾਇਲ ਪ੍ਰਬੰਧਨ +### ਕਲਿਨੀਕਲ ਟ੍ਰਾਇਲ ਪ੍ਰਬੰਧਨ -ਕਲੀਨਿਕਲ ਟ੍ਰਾਇਲਾਂ ਵਿੱਚ ਜ਼ਹਿਰਲੇ ਪਦਾਰਥਾਂ ਦੀ ਮਾਤਰਾ ਇੱਕ ਵੱਡੀ ਚਿੰਤਾ ਹੈ। ਕਲੀਨਿਕਲ ਟ੍ਰਾਇਲ ਦੇ ਨਤੀਜਿਆਂ ਦੇ ਅਨੁਮਾਨ ਲਗਾਉਣ ਲਈ ਵੱਖ-ਵੱਖ ਤਰੀਕਿਆਂ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰਨ ਨਾਲ ਇੱਕ ਨਵਾਂ ਦ੍ਰਿਸ਼ਟੀਕੋਣ ਵਿਕਸਿਤ ਹੋਇਆ। ਖਾਸ ਤੌਰ 'ਤੇ, ਉਨ੍ਹਾਂ ਨੇ ਰੈਂਡਮ ਫਾਰੈਸਟ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇੱਕ [ਕਲਾਸੀਫਾਇਰ](../../4-Classification/README.md) ਬਣਾਇਆ ਜੋ ਦਵਾਈਆਂ ਦੇ ਸਮੂਹਾਂ ਵਿੱਚ ਅੰਤਰ ਕਰ ਸਕਦਾ ਹੈ। -[ਹਵਾਲਾ](https://www.sciencedirect.com/science/article/pii/S2451945616302914) +ਕਲਿਨੀਕਲ ਟ੍ਰਾਇਲਾਂ ਵਿੱਚ ਜਹਿਰੀਲਾਪਣ ਦਵਾਈ ਬਣਾਉਣ ਵਾਲਿਆਂ ਲਈ ਇੱਕ ਵੱਡੀ ਚਿੰਤਾ ਹੈ। ਕਿੰਨੀ ਜਹਿਰੀਲਾਪਣ ਬਰਦਾਸ਼ਤ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ? ਇਸ ਅਧਿਐਨ ਵਿੱਚ, ਕਈ ਕਲਿਨੀਕਲ ਟ੍ਰਾਇਲ ਤਰੀਕਿਆਂ ਦੇ ਵਿਸ਼ਲੇਸ਼ਣ ਤੋਂ ਇੱਕ ਨਵਾਂ ਤਰੀਕਾ ਵਿਕਸਿਤ ਕੀਤਾ ਗਿਆ ਜੋ ਟ੍ਰਾਇਲ ਨਤੀਜਿਆਂ ਦੀ ਸੰਭਾਵਨਾ ਦੀ ਭਵਿੱਖਬਾਣੀ ਕਰਦਾ ਹੈ। ਖਾਸ ਤੌਰ 'ਤੇ, ਉਹ ਰੈਂਡਮ ਫਾਰੈਸਟ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇੱਕ [ਕਲਾਸੀਫਾਇਰ](../../4-Classification/README.md) ਬਣਾਉਣ ਵਿੱਚ ਸਫਲ ਹੋਏ ਜੋ ਦਵਾਈਆਂ ਦੇ ਗਰੁੱਪਾਂ ਨੂੰ ਫਰਕ ਕਰ ਸਕਦਾ ਹੈ। +[Reference](https://www.sciencedirect.com/science/article/pii/S2451945616302914) -### ਹਸਪਤਾਲ ਦੁਬਾਰਾ ਭਰਤੀ ਪ੍ਰਬੰਧਨ +### ਹਸਪਤਾਲ ਦੁਬਾਰਾ ਦਾਖਲਾ ਪ੍ਰਬੰਧਨ -ਹਸਪਤਾਲ ਦੀ ਦੇਖਭਾਲ ਮਹਿੰਗੀ ਹੁੰਦੀ ਹੈ, ਖਾਸ ਤੌਰ 'ਤੇ ਜਦੋਂ ਮਰੀਜ਼ਾਂ ਨੂੰ ਦੁਬਾਰਾ ਭਰਤੀ ਕਰਨਾ ਪੈਂਦਾ ਹੈ। ਇਸ ਪੇਪਰ ਵਿੱਚ ਇੱਕ ਕੰਪਨੀ ਦੀ ਚਰਚਾ ਕੀਤੀ ਗਈ ਹੈ ਜੋ [ਕਲੱਸਟਰਿੰਗ](../../5-Clustering/README.md) ਐਲਗੋਰਿਥਮ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਦੁਬਾਰਾ ਭਰਤੀ ਹੋਣ ਦੀ ਸੰਭਾਵਨਾ ਦਾ ਅਨੁਮਾਨ ਲਗਾਉਂਦੀ ਹੈ। ਇਹ ਕਲੱਸਟਰ ਵਿਸ਼ਲੇਸ਼ਕਾਂ ਨੂੰ "ਦੁਬਾਰਾ ਭਰਤੀ ਹੋਣ ਵਾਲੇ ਸਮੂਹਾਂ ਦੀ ਖੋਜ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰਦੇ ਹਨ ਜੋ ਇੱਕ ਸਾਂਝੇ ਕਾਰਨ ਨੂੰ ਸਾਂਝਾ ਕਰ ਸਕਦੇ ਹਨ।" -[ਹਵਾਲਾ](https://healthmanagement.org/c/healthmanagement/issuearticle/hospital-readmissions-and-machine-learning) +ਹਸਪਤਾਲ ਦੀ ਦੇਖਭਾਲ ਮਹਿੰਗੀ ਹੈ, ਖ਼ਾਸਕਰ ਜਦੋਂ ਮਰੀਜ਼ਾਂ ਨੂੰ ਦੁਬਾਰਾ ਦਾਖਲ ਕਰਨਾ ਪੈਂਦਾ ਹੈ। ਇਸ ਕਾਗਜ਼ ਵਿੱਚ ਇੱਕ ਕੰਪਨੀ ਦੀ ਚਰਚਾ ਹੈ ਜੋ ML ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਦੁਬਾਰਾ ਦਾਖਲੇ ਦੀ ਸੰਭਾਵਨਾ ਦਾ ਅੰਦਾਜ਼ਾ ਲਗਾਉਂਦਾ ਹੈ [ਕਲੱਸਟਰਿੰਗ](../../5-Clustering/README.md) ਐਲਗੋਰਿਦਮਾਂ ਦੀ ਮਦਦ ਨਾਲ। ਇਹ ਕਲੱਸਟਰ ਵਿਸ਼ਲੇਸ਼ਕਾਂ ਨੂੰ " ਦੁਬਾਰਾ ਦਾਖਲ ਹੋਣ ਵਾਲੇ ਗਰੁੱਪਾਂ ਦਾ ਪਤਾ ਲਗਾਉਣ ਵਿੱਚ ਮਦਦ ਕਰਦੇ ਹਨ ਜੋ ਸਾਂਝੇ ਕਾਰਨ ਨਾਲ ਜੁੜੇ ਹੋ ਸਕਦੇ ਹਨ।" +[Reference](https://healthmanagement.org/c/healthmanagement/issuearticle/hospital-readmissions-and-machine-learning) ### ਬਿਮਾਰੀ ਪ੍ਰਬੰਧਨ -ਹਾਲੀਆ ਮਹਾਮਾਰੀ ਨੇ ਇਹ ਦਰਸਾਇਆ ਹੈ ਕਿ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਬਿਮਾਰੀ ਦੇ ਫੈਲਣ ਨੂੰ ਰੋਕਣ ਵਿੱਚ ਕਿਵੇਂ ਮਦਦ ਕਰ ਸਕਦੀ ਹੈ। ਇਸ ਲੇਖ ਵਿੱਚ, ਤੁਸੀਂ ARIMA, ਲਾਜਿਸਟਿਕ ਕਰਵਜ਼, ਲਿਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ, ਅਤੇ SARIMA ਦੀ ਵਰਤੋਂ ਨੂੰ ਪਛਾਣੋਗੇ। "ਇਹ ਕੰਮ ਇਸ ਵਾਇਰਸ ਦੇ ਫੈਲਣ ਦੀ ਦਰ ਨੂੰ ਗਿਣਨ ਅਤੇ ਇਸ ਤਰ੍ਹਾਂ ਮੌਤਾਂ, ਸਿਹਤਮੰਦ ਹੋਣ ਅਤੇ ਪੁਸ਼ਟੀ ਕੀਤੇ ਕੇਸਾਂ ਦੀ ਭਵਿੱਖਬਾਣੀ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਹੈ, ਤਾਂ ਜੋ ਇਹ ਸਾਨੂੰ ਬਿਹਤਰ ਤਿਆਰ ਕਰਨ ਅਤੇ ਜੀਵਨ ਬਚਾਉਣ ਵਿੱਚ ਮਦਦ ਕਰ ਸਕੇ।" -[ਹਵਾਲਾ](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7979218/) +ਹਾਲੀਆ ਮਹਾਮਾਰੀ ਨੇ ਇਸ ਗੱਲ ‘ਤੇ ਚਮਕਾਇਆ ਹੈ ਕਿ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਬਿਮਾਰੀ ਦੇ ਫੈਲਾਅ ਨੂੰ ਰੋਕਣ ਵਿੱਚ ਕਿਵੇਂ ਸਹਾਇਤਾ ਕਰ ਸਕਦਾ ਹੈ। ਇਸ ਲੇਖ ਵਿੱਚ, ਤੁਸੀਂ ARIMA, ਲੌਜਿਸਟਿਕ ਕਰਵਜ਼, ਲੀਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਅਤੇ SARIMA ਦੀ ਵਰਤੋਂ ਦੇਖੋਗੇ। "ਇਹ ਕੰਮ ਇਸ ਵਾਇਰਸ ਦੇ ਫੈਲਾਅ ਦੀ ਦਰ ਦਾ ਲੇਖਾ-ਜੋਖਾ ਕਰਨ ਅਤੇ ਇਸ ਤਰ੍ਹਾਂ ਮੌਤਾਂ, ਠੀਕ ਹੋਣ ਅਤੇ ਪੁਸ਼ਟੀ ਕੀਤੀਆਂ ਮਾਮਲਿਆਂ ਦੀ ਭਵਿੱਖਬਾਣੀ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਹੈ, ਤਾਂ ਜੋ ਸਾਨੂੰ ਬਿਹਤਰ ਤਿਆਰੀ ਕਰਨ ਅਤੇ ਜਿਊਂਦਗੀ ਬਚਾਉਣ ਵਿੱਚ ਮਦਦ ਮਿਲੇ।" +[Reference](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7979218/) -## 🌲 ਪ੍ਰਕ੍ਰਿਤੀ ਅਤੇ ਹਰਾ ਤਕਨਾਲੋਜੀ +## 🌲 ਜੋਂਗ ਅਤੇ ਹਰਾ ਤਕਨੀਕ -ਪ੍ਰਕ੍ਰਿਤੀ ਅਤੇ ਪਰਿਆਵਰਣ ਵਿੱਚ ਕਈ ਸੰਵੇਦਨਸ਼ੀਲ ਪ੍ਰਣਾਲੀਆਂ ਸ਼ਾਮਲ ਹਨ ਜਿੱਥੇ ਜਾਨਵਰਾਂ ਅਤੇ ਪ੍ਰਕ੍ਰਿਤੀ ਦੇ ਵਿਚਕਾਰ ਸੰਬੰਧਾਂ ਨੂੰ ਸਮਝਣਾ ਮਹੱਤਵਪੂਰਨ ਹੈ। ਇਹ ਜ਼ਰੂਰੀ ਹੈ ਕਿ ਇਨ੍ਹਾਂ ਪ੍ਰਣਾਲੀਆਂ ਨੂੰ ਸਹੀ ਤੌਰ 'ਤੇ ਮਾਪਿਆ ਜਾਵੇ ਅਤੇ ਜੇ ਕੁਝ ਹੋਵੇ ਤਾਂ ਸਹੀ ਕਾਰਵਾਈ ਕੀਤੀ ਜਾਵੇ, ਜਿਵੇਂ ਕਿ ਜੰਗਲ ਦੀ ਅੱਗ ਜਾਂ ਜਾਨਵਰਾਂ ਦੀ ਆਬਾਦੀ ਵਿੱਚ ਗਿਰਾਵਟ। +ਕੁਦਰਤ ਅਤੇ ਜੋਂਗ ਕਈ ਸੰਵੇਦਨਸ਼ੀਲ ਪ੍ਰਣਾਲੀਆਂ ਦੇ ਸਮੂਹ ਹਨ ਜਿੱਥੇ ਜਾਨਵਰਾਂ ਅਤੇ ਕੁਦਰਤ ਦੇ ਵਿਚਕਾਰ ਪਰਸਪਰਕਿਰਿਆ ਦਾ ਕੇਂਦਰ ਬਣਦਾ ਹੈ। ਇਹ ਜਰੂਰੀ ਹੈ ਕਿ ਅਸੀਂ ਇਹਨਾਂ ਪ੍ਰਣਾਲੀਆਂ ਨੂੰ ਸਹੀ ਤਰੀਕੇ ਨਾਲ ਮਾਪ ਕਰੀਏ ਅਤੇ ਜੇ ਕੁਝ ਵਾਪਰੇ ਜਿਵੇਂ ਕਿ ਜੰਗਲਾਂ ਵਿੱਚ ਅੱਗ ਜਾਂ ਜਾਨਵਰਾਂ ਦੀ ਗਿਣਤੀ ਘਟਣ, ਤਾਂ ਢੰਗ ਨਾਲ ਕਾਰਵਾਈ ਕਰੀਏ। ### ਜੰਗਲ ਪ੍ਰਬੰਧਨ -ਤੁਸੀਂ ਪਿਛਲੇ ਪਾਠਾਂ ਵਿੱਚ [ਰਿਨਫੋਰਸਮੈਂਟ ਲਰਨਿੰਗ](../../8-Reinforcement/README.md) ਬਾਰੇ ਸਿੱਖਿਆ ਸੀ। ਇਹ ਪ੍ਰਕ੍ਰਿਤੀ ਵਿੱਚ ਪੈਟਰਨਾਂ ਦੀ ਭਵਿੱਖਬਾਣੀ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਨ ਵੇਲੇ ਬਹੁਤ ਲਾਭਦਾਇਕ ਹੋ ਸਕਦੀ ਹੈ। ਖਾਸ ਤੌਰ 'ਤੇ, ਇਹ ਜੰਗਲ ਦੀ ਅੱਗ ਅਤੇ ਘੁਸਪੈਠੀ ਪ੍ਰਜਾਤੀਆਂ ਦੇ ਫੈਲਣ ਵਰਗੀਆਂ ਪਰਿਆਵਰਣ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਟ੍ਰੈਕ ਕਰਨ ਲਈ ਵਰਤੀ ਜਾ ਸਕਦੀ ਹੈ। ਕੈਨੇਡਾ ਵਿੱਚ, ਇੱਕ ਗਰੁੱਪ ਨੇ ਸੈਟੇਲਾਈਟ ਚਿੱਤਰਾਂ ਤੋਂ ਜੰਗਲ ਦੀ ਅੱਗ ਦੀ ਗਤੀਵਿਧੀਆਂ ਦੇ ਮਾਡਲ ਬਣਾਉਣ ਲਈ ਰਿਨਫੋਰਸਮੈਂਟ ਲਰਨਿੰਗ ਦੀ ਵਰਤੋਂ ਕੀਤੀ। "ਇਹ ਦ੍ਰਿਸ਼ਟੀਕੋਣ ਰਿਨਫੋਰਸਮੈਂਟ ਲਰਨਿੰਗ ਸੈਟਅਪ ਨੂੰ ਉਲਟਾਉਂਦਾ ਹੈ ਕਿਉਂਕਿ ਸੰਬੰਧਿਤ ਮਾਰਕੋਵ ਫੈਸਲੇ ਪ੍ਰਕਿਰਿਆ (MDP) ਦੀ ਗਤੀਵਿਧੀਆਂ ਤੁਰੰਤ ਜੰਗਲ ਦੀ ਅੱਗ ਦੇ ਫੈਲਣ ਲਈ ਇੱਕ ਜਾਣੀ ਗਤੀਵਿਧੀ ਹੈ।" -[ਹਵਾਲਾ](https://www.frontiersin.org/articles/10.3389/fict.2018.00006/full) +ਤੁਸੀਂ ਪਿਛਲੇ ਪਾਠਾਂ ਵਿੱਚ [ਰੀਇਨਫੋਰਸਮੈਂਟ ਲਰਨਿੰਗ](../../8-Reinforcement/README.md) ਬਾਰੇ ਸਿੱਖਿਆ ਸੀ। ਇਹ ਕੁਦਰਤ ਵਿੱਚ ਨਮੂਨੇ ਭਵਿੱਖਬਾਣੀ ਕਰਨ ਵਿੱਚ ਬਹੁਤ ਮਦਦਗਾਰ ਹੋ ਸਕਦਾ ਹੈ। ਖਾਸ ਕਰਕੇ ਇਹ ਜੰਗਲਾਂ ਵਿੱਚ ਅੱਗ ਜਾਂ ਘੁਸਪੈਠੀਆਂ ਜੀਵ-ਜੰਤੂਆਂ ਦੇ ਫੈਲਾਅ ਵਰਗੀਆਂ ਪਰਿਸਥਿਤੀਕ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਟਰੈਕ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ। ਕੈਨੇਡਾ ਵਿੱਚ, ਇੱਕ ਸਮੂਹ ਨੇ ਸੈਟੇਲਾਈਟ ਤਸਵੀਰਾਂ ਤੋਂ ਜੰਗਲ ਦੀ ਅੱਗ ਦੇ ਗਤੀਵਿਧੀ ਮਾਡਲ ਬਣਾਉਣ ਲਈ ਰੀਇਨਫੋਰਸਮੈਂਟ ਲਰਨਿੰਗ ਦੀ ਵਰਤੋਂ ਕੀਤੀ। ਇਨ੍ਹਾਂ ਨੇ ਇੱਕ ਨਵਾਂ "ਸਪੇਸ਼ਲੀ ਸਪਰੇਡਿੰਗ ਪ੍ਰੋਸੈਸ (SSP)" ਵਰਤ ਕੇ ਜੰਗਲ ਦੀ ਅੱਗ ਨੂੰ ਡੂੰਘਾਈ ਵਿੱਚ "ਲੈਂਡਸਕੇਪ ਵਿੱਚ ਕਿਸੇ ਵੀ ਸੈੱਲ 'ਤੇ ਏਜੰਟ" ਵੱਜੋਂ ਵੇਖਿਆ। "ਅੱਗ, ਕਿਸੇ ਵੀ ਸਮੇਂ ਕਿਸੇ ਥਾਂ ਤੋਂ ਉੱਤਰ, ਦੱਖਣ, ਪੂਰਬ ਜਾਂ ਪੱਛਮ ਵੱਲ ਫੈਲ ਸਕਦੀ ਹੈ ਜਾਂ ਨਹੀਂ ਵੀ ਫੈਲ ਸਕਦੀ।" + +ਇਹ ਤਰੀਕਾ ਆਮ RL ਸੈਟਅਪ ਨੂੰ ਵੱਪਸ ਕਰਦਾ ਹੈ ਕਿਉਂਕਿ ਅਨੁਕੂਲ ਮਾਰਕੋਵ ਡਿਸੀਜ਼ਨ ਪ੍ਰੋਸੈਸ (MDP) ਲਈ ਜੰਗਲ ਦੀ ਅੱਗ ਦੇ ਫੈਲਾਅ ਦੀ ਗਤੀਵਿਧੀ ਇੱਕ ਜਾਣੀ-ਪਹਚਾਣੀ ਫੰਕਸ਼ਨ ਹੈ।" ਇਸ ਸਮੂਹ ਵੱਲੋਂ ਵਰਤੇ ਗਏ ਕਲਾਸਿਕ ਐਲਗੋਰਿਦਮਾਂ ਬਾਰੇ ਹੋਰ ਪੜ੍ਹੋ ਹੇਠਾਂ ਦਿੱਤੇ ਲਿੰਕ ਵਿੱਚ। +[Reference](https://www.frontiersin.org/articles/10.3389/fict.2018.00006/full) + +### ਜਾਨਵਰਾਂ ਦੀ ਗਤੀ ਇੰਦਾਜ਼ + +ਜਦਕਿ ਡੀਪ ਲਰਨਿੰਗ ਨੇ ਜੀਵਾਂ ਦੀਆਂ ਹਰਕਤਾਂ ਨੂੰ ਵਿਜ਼ੂਅਲੀ ਟਰੈਕ ਕਰਨ ਵਿੱਚ ਇਕ ਇਨਕਲਾਬ ਪੈਦਾ ਕੀਤਾ ਹੈ (ਤੁਸੀਂ ਇੱਥੇ ਆਪਣਾ [ਪੋਲਰ ਬੇਅਰ ਟਰੈਕਰ](https://docs.microsoft.com/learn/modules/build-ml-model-with-azure-stream-analytics/?WT.mc_id=academic-77952-leestott) ਬਣਾ ਸਕਦੇ ਹੋ), ਪਰ ਕਲਾਸਿਕ ML ਨੂੰ ਇਸ ਕੰਮ ਵਿੱਚ ਅਜੇ ਵੀ ਜਗ੍ਹਾ ਮਿਲਦੀ ਹੈ। + +ਫਾਰਮ ਜਾਨਵਰਾਂ ਦੀਆਂ ਹਿੱਲਚਲਾਂ ਨੂੰ ਟਰੈਕ ਕਰਨ ਲਈ ਸੈਂਸਰ ਅਤੇ IoT ਇਸ ਕਿਸਮ ਦੀ ਵਿਜ਼ੂਅਲ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਵਰਤਦੇ ਹਨ, ਪਰ ਆਧੁਨਿਕ MLM ਤਕਨੀਕਾਂ ਡਾਟਾ ਦੀ ਪੂਰਵ-ਸੰਭਾਲ ਲਈ ਮਦਦਗਾਰ ਹਨ। ਉਦਾਹਰਨ ਵਜੋਂ, ਇਸ ਕਾਗਜ਼ ਵਿੱਚ ਭੇਂਸਾਂ ਦੇ ਅਸਥਾਨਾਂ ਦੀ ਨਿਗਰਾਨੀ ਅਤੇ ਵਿਸ਼ਲੇਸ਼ਣ ਵੱਖ-ਵੱਖ ਕਲਾਸੀਫਾਇਰ ਐਲਗੋਰਿਦਮਾਂ ਦੀ ਵਰਤੋਂ ਨਾਲ ਕੀਤੀ ਗਈ। ਤੁਸੀਂ ਸਫ਼ਾ 335 ਤੇ ROC ਕ੍ਰਿਵ ਨੂੰ ਪਛਾਣ ਸਕਦੇ ਹੋ। +[Reference](https://druckhaus-hofmann.de/gallery/31-wj-feb-2020.pdf) + +### ⚡️ ਊਰਜਾ ਦੀ ਪ੍ਰਬੰਧਕੀ + +ਸਾਡੇ [ਸਮਾਂ ਸੀਰੀਜ਼ ਪੇਸ਼ਗੀ](../../7-TimeSeries/README.md) ਦੇ ਪਾਠਾਂ ਵਿੱਚ, ਅਸੀਂ ਸਪਲਾਈ ਅਤੇ ਮੰਗ ਨੂੰ ਸਮਝ ਕੇ ਸ਼ਹਿਰ ਲਈ ਰੇਵਨਿਊ ਬਣਾਉਣ ਲਈ ਸਮਾਰਟ ਪਾਰਕਿੰਗ ਮੀਟਰਾਂ ਦਾ ਸੰਕਲਪ ਦਿੱਖਾਇਆ ਸੀ। ਇਹ ਲੇਖ ਵਿਸਥਾਰ ਨਾਲ ਚਰਚਾ ਕਰਦਾ ਹੈ ਕਿ ਕਿਵੇਂ ਕਲੱਸਟਰਿੰਗ, ਰਿਗ੍ਰੈਸ਼ਨ ਅਤੇ ਸਮਾਂ ਸੀਰੀਜ਼ ਪੇਸ਼ਗੀ ਸਿੱਖ ਕੇਸ਼ਨ/ਸਮਾਰਟ ਮੀਟਰਿੰਗ ਦੀ ਆਧਾਰ 'ਤੇ ਆਇਰਲੈਂਡ ਵਿੱਚ ਭਵਿੱਖ ਵਿੱਚ ਊਰਜਾ ਦੀ ਵਰਤੋਂ ਦਾ ਅੰਦਾਜ਼ਾ ਲਗਾਉਣ ਵਾਲੀ ਮਦਦ ਕਰਦੇ ਹਨ। +[Reference](https://www-cdn.knime.com/sites/default/files/inline-images/knime_bigdata_energy_timeseries_whitepaper.pdf) + +## 💼 ਬੀਮਾ + +ਬੀਮਾ ਖੇਤਰ ਵੀ ਇੱਕ ਹੋਰ ਖੇਤਰ ਹੈ ਜੋ ML ਨੂੰ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਅਤੇ ਲਾਭਕਾਰੀ ਵਿੱਤੀ ਅਤੇ ਕਾਰਜਕੁਸ਼ਲ ਮਾਡਲ ਬਣਾਉਣ ਵਿਚ ਵਰਤਦਾ ਹੈ। + +### ਅਸਥਿਰਤਾ ਪ੍ਰਬੰਧਨ + +MetLife, ਇੱਕ ਜੀਵਨ ਬੀਮਾ ਪ੍ਰਦਾਤਾ, ਖੁੱਲ੍ਹ ਕੇ ਗੱਲ ਕਰਦਾ ਹੈ ਕਿ ਉਹ ਆਪਣੇ ਵਿੱਤੀ ਮਾਡਲਾਂ ਵਿੱਚ ਅਸਥਿਰਤਾ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਅਤੇ ਨਿਯੰਤਰਣ ਕਿਵੇਂ ਕਰਦਾ ਹੈ। ਇਸ ਲੇਖ ਵਿੱਚ ਤੁਸੀਂ ਬਾਈਨਰੀ ਅਤੇ ਓਰਡੀਨਲ ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਵਿਜ਼ੂਅਲਜ਼ ਦੇਖੋਗੇ। ਤੁਸੀਂ ਪੇਸ਼ਗੀ ਸਾਧਨਾਂ ਦੇ ਵੀ ਵਿਜ਼ੂਅਲਜ਼ ਵੇਖੋਗੇ। +[Reference](https://investments.metlife.com/content/dam/metlifecom/us/investments/insights/research-topics/macro-strategy/pdf/MetLifeInvestmentManagement_MachineLearnedRanking_070920.pdf) + +## 🎨 ਕਲਾ, ਸਭਿਆਚਾਰ ਅਤੇ ਸਾਹਿਤ + +ਕਲਾਵਾਂ ਵਿੱਚ, ਉਦਾਹਰਨ ਲਈ ਪੱਤਰਕਾਰਤਾ ਵਿੱਚ, ਬਹੁਤ ਸਾਰੀਆਂ ਦਿਲਚਸਪ ਸਮੱਸਿਆਵਾਂ ਹਨ। ਨਕਲੀ ਖਬਰਾਂ ਦਾ ਪਤਾ ਲਗਾਉਣਾ ਇੱਕ ਵੱਡੀ ਸਮੱਸਿਆ ਹੈ ਕਿਉਂਕਿ ਇਹ ਲੋਕਾਂ ਦੀ ਰਾਏ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰਦੀਆਂ ਹਨ ਅਤੇ ਇੱਥੇ ਤਕ ਕਿ ਲੋਕਤੰਤਰਾਂ ਨੂੰ ਪਿੱਟਾਅਨ ਵਾਲੀਆਂ ਵੀ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮਿਊਜ਼ੀਅਮ ਵੀ ਐਮ ਐਲ ਵਰਤ ਕੇ ਕਈ ਕੰਮਾਂ ਵਿੱਚ ਲਾਭ ਲੈ ਸਕਦੇ ਹਨ ਜਿਵੇਂ ਕਿ ਕਲੈਕਸ਼ਨਾਂ ਵਿਚਕਾਰ ਲਿੰਕ ਲੱਭਣਾ ਜਾਂ ਸਰੋਤ ਯੋਜਨਾ ਬਣਾਉਣਾ। + +### ਨਕਲੀ ਖਬਰਾਂ ਦਾ ਪਤਾ ਲਗਾਉਣਾ + +ਇਸ ਸਮੇਂ ਦੀ ਮੀਡੀਆ ਵਿੱਚ ਨਕਲੀ ਖਬਰਾਂ ਨੂੰ ਪਹਿਚਾਣਣਾ ਇੱਕ ਬਿੱਲੀ-ਚੂਹਾ ਖੇਡ ਬਣ ਚੁੱਕੀ ਹੈ। ਇਸ ਲੇਖ ਵਿੱਚ, ਖੋਜ ਵਿਗਿਆਨੀਆਂ ਦਾ ਕਹਿਣਾ ਹੈ ਕਿ ਇਕ ਐਸਾ ਸਿਸਟਮ ਜੋ ਕਈ ML ਤਕਨੀਕਾਂ ਨੂੰ ਜੋੜਦਾ ਹੈ, ਟੈਸਟ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ ਅਤੇ ਸਭ ਤੋਂ ਵਧੀਆ ਮਾਡਲ ਤੈਨਾਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ: "ਇਹ ਸਿਸਟਮ ਕੁਦਰਤੀ ਭਾਸ਼ਾ ਪ੍ਰਕਿਰਿਆ 'ਤੇ ਆਧਾਰਿਤ ਹੈ ਜੋ ਡਾਟਾ ਤੋਂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਕੱਢਦਾ ਹੈ ਅਤੇ ਫਿਰ ਇਹ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਕਲਾਸੀਫਾਇਰਾਂ ਜਿਵੇਂ ਦਾ Naive Bayes, Support Vector Machine (SVM), Random Forest (RF), Stochastic Gradient Descent (SGD), ਅਤੇ Logistic Regression (LR) ਲਈ ਪ੍ਰਸ਼ਿਖਣ ਲਈ ਵਰਤੀ ਜਾਂਦੀਆਂ ਹਨ।" +[Reference](https://www.irjet.net/archives/V7/i6/IRJET-V7I6688.pdf) + +ਇਹ ਲੇਖ ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਕਿਵੇਂ ਵੱਖ-ਵੱਖ ML ਖੇਤਰਾਂ ਦੇ ਸਮੀਕਰਨ ਨਾਲ ਦਿਲਚਸਪ ਨਤੀਜੇ ਪ੍ਰਾਪਤ ਕੀਤੇ ਜਾ ਸਕਦੇ ਹਨ ਜੋ ਨਕਲੀ ਖਬਰਾਂ ਦੇ ਫੈਲਾਅ ਅਤੇ ਸਹੀ ਨੁਕਸਾਨ ਪਹੁੰਚਾਉਣ ਤੋਂ ਰੋਕਣ ਵਿੱਚ ਮਦਦ ਕਰ ਸਕਦੇ ਹਨ; ਇਸ ਮਾਮਲੇ ਵਿੱਚ, ਕਾਰਨ COVID ਇਲਾਜ ਬਾਰੇ ਅਫਵਾਹਾਂ ਦੇ ਫੈਲਾਅ ਨੇ ਹਿੰਸਾ ਨੂੰ ਵਧਾਇਆ। + +### ਮਿਊਜ਼ੀਅਮ ਐਮ.ਐੱਲ. + +ਮਿਊਜ਼ੀਅਮ ਇਸ ਸਮੇਂ ਏ.ਆਈ. ਇਨਕਲਾਬ ਦੇ ਕੰਨ੍ਹੇ ਤੇ ਹਨ ਜਿੱਥੇ ਕੈਟਲੌਗਿੰਗ ਅਤੇ ਕਲੈਕਸ਼ਨਾਂ ਨੂੰ ਡਿਜਿਟਾਈਜ਼ ਕਰਨ ਅਤੇ ਕਲੈਕਸ਼ਨਾਂ ਵਿੱਚੋਂ ਲਿੰਕ ਲੱਭਣਾ ਆਸਾਨ ਹੋ ਰਿਹਾ ਹੈ। ਪ੍ਰੋਜੈਕਟਾਂ ਜਿਵੇਂ [In Codice Ratio](https://www.sciencedirect.com/science/article/abs/pii/S0306457321001035#:~:text=1.,studies%20over%20large%20historical%20sources.) ਵੈਟਿਕਨ ਆਰਕਾਈਵਜ਼ ਦੀਆਂ ਗੁਪਤ ਕਲੈਕਸ਼ਨਾਂ ਨੂੰ ਖੋਲ੍ਹਣ ਵਿੱਚ ਮਦਦ ਕਰ ਰਹੇ ਹਨ। ਪਰ, ਮਿਊਜ਼ੀਅਮ ਦੇ ਵਪਾਰਕ ਪੱਖ ਨੂੰ ਵੀ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਮਾਡਲਾਂ ਤੋਂ ਲਾਭ ਹੁੰਦਾ ਹੈ। + +ਉਦਾਹਰਨ ਲਈ, ਚਿਕਾਗੋ ਦੇ ਆਰਟ ਇੰਸਟਿਟਿਊਟ ਨੇ ਮਾਡਲ ਬਣਾਏ ਹਨ ਜੋ ਪੇਸ਼ਗੋਈ ਕਰਦੇ ਹਨ ਕਿ ਦਰਸ਼ਕ ਕਿਸ ਚੀਜ਼ ਵਿੱਚ ਦਿਲਚਸਪੀ ਰੱਖਦੇ ਹਨ ਅਤੇ ਕਦੋਂ ਉਹ ਪ੍ਰਦਰਸ਼ਨੀ ਵਿੱਚ ਸ਼ਿਰਕਤ ਕਰਨਗੇ। ਲਕੜੀ ਇਹ ਹੈ ਕਿ ਹਰ ਵਾਰੀ ਜਦੋਂ ਉਪਭੋਗਤਾ ਮਿਊਜ਼ੀਅਮ ਆਉਂਦਾ ਹੈ, ਉਸ ਲਈ ਵਿਅਕਤੀਗਤ ਅਤੇ ਸੁਧਰਿਆ ਹੋਇਆ ਅਨੁਭਵ ਬਣਾਇਆ ਜਾਵੇ। "ਵਿੱਤੀ سال 2017 ਦੌਰਾਨ, ਇਹ ਮਾਡਲ ਹਾਜ਼ਰੀ ਅਤੇ ਦਾਖਲੇ ਦੀ ਭਵਿੱਖਬਾਣੀ 1 ਪ੍ਰਤੀਸ਼ਤ ਨੁਕਸਾਨ ਨਾਲ ਕੀਤੀ ਸੀ," ਐਂਡਰੂ ਸਿਮਨਿਕ, ਸੀਨੀਅਰ ਵਾਈਸ ਪ੍ਰੈਜ਼ਿਡੈਂਟ ਆਰਟ ਇੰਸਟਿਟਿਊਟ ਵਿੱਚ ਕਹਿੰਦੇ ਹਨ। +[Reference](https://www.chicagobusiness.com/article/20180518/ISSUE01/180519840/art-institute-of-chicago-uses-data-to-make-exhibit-choices) + +## 🏷 ਮਾਰਕਿਟਿੰਗ + +### ਗਾਹਕ ਵੰਡ + +ਸਭ ਤੋਂ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਮਾਰਕਿਟਿੰਗ ਰਣਨੀਤੀਆਂ ਵੱਖ-ਵੱਖ ਗਾਹਕਾਂ ਨੂੰ ਵੱਖ-ਵੱਖ ਤਰੀਕਿਆਂ ਨਾਲ ਨਿਸ਼ਾਨਾ ਬਣਾਉਂਦੀਆਂ ਹਨ ਵੱਖ-ਵੱਖ ਸਮੂਹਾਂ ਦੇ ਅਧਾਰ 'ਤੇ। ਇਸ ਲੇਖ ਵਿੱਚ, ਕਲੱਸਟਰਿੰਗ ਐਲਗੋਰਿਦਮ ਦੀ ਵਰਤੋਂ ਵੱਖ-ਵੱਖ ਮਾਰਕਿਟਿੰਗ ਨੂੰ ਸਮਰਥਨ ਕਰਨ ਲਈ ਚਰਚਾ ਕੀਤੀ ਗਈ ਹੈ। ਵੱਖ-ਵੱਖ ਮਾਰਕਿਟਿੰਗ ਕੰਪਨੀਆਂ ਨੂੰ ਬ੍ਰਾਂਡ ਦੀ ਪਛਾਣ ਬਹਿਬੁਧ, ਵੱਧ ਗਾਹਕ ਤੱਕ ਪਹੁੰਚਣ ਅਤੇ ਵੱਧ ਪੈਸਾ ਕਮਾਉਣ ਵਿੱਚ ਮਦਦ ਕਰਦੀ ਹੈ। +[Reference](https://ai.inqline.com/machine-learning-for-marketing-customer-segmentation/) + +## 🚀 ਚੁਣੌਤੀ -### ਜਾਨਵਰਾਂ ਦੀ ਗਤੀਵਿਧੀ ਦਾ ਪਤਾ ਲਗਾਉਣਾ +ਕਿਸੇ ਹੋਰ ਖੇਤਰ ਦੀ ਪਹਿਚਾਣ ਕਰੋ ਜੋ ਇਸ ਕੋਰਸ ਵਿੱਚ ਸਿੱਖੀਆਂ ਕੁਝ ਤਕਨੀਕਾਂ ਤੋਂ ਲਾਭ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੋਵੇ, ਅਤੇ ਖੋਜੋ ਕਿ ਉਹ ਕਿਵੇਂ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਵਰਤਦਾ ਹੈ। -ਜਦੋਂ ਕਿ ਡੀਪ ਲਰਨਿੰਗ ਨੇ ਜਾਨਵਰਾਂ ਦੀਆਂ ਗਤੀਵਿਧੀਆਂ ਨੂੰ ਵਿਜ਼ੂਅਲ ਟ੍ਰੈਕ ਕਰਨ ਵਿੱਚ ਕ੍ਰਾਂਤੀ ਲਿਆਈ ਹੈ (ਤੁਸੀਂ ਆਪਣਾ [ਪੋਲਰ ਬੀਅਰ ਟ੍ਰੈਕਰ](https://docs.microsoft.com/learn/modules/build-ml-model-with-azure-stream-analytics/?WT.mc_id=academic-77952-leestott) ਇੱਥੇ ਬਣਾਉਣ ਲਈ ਸਿੱਖ ਸਕਦੇ ਹੋ), ਕਲਾਸਿਕ ML ਅਜੇ ਵੀ ਇਸ ਕੰਮ ਵਿੱਚ ਆਪਣੀ ਜਗ੍ਹਾ ਰੱਖਦਾ ਹੈ। -ਫਾਰਮ ਜਾਨਵਰਾਂ ਦੀਆਂ ਗਤੀਵਿਧੀਆਂ ਨੂੰ ਟ੍ਰੈਕ -## [ਪੋਸਟ-ਲੈਕਚਰ ਕਵਿਜ਼](https://ff-quizzes.netlify.app/en/ml/) +## [ਪੋਸਟ-ਲੈਕਚਰ ਕੁਇਜ਼](https://ff-quizzes.netlify.app/en/ml/) -## ਸਮੀਖਿਆ ਅਤੇ ਖੁਦ ਦੀ ਪੜਾਈ +## ਸਮੀਖਿਆ ਅਤੇ ਸਵੈ ਅਧਿਐਨ -ਵੇਫੇਅਰ ਡਾਟਾ ਸਾਇੰਸ ਟੀਮ ਦੇ ਕੋਲ ਕਈ ਦਿਲਚਸਪ ਵੀਡੀਓਜ਼ ਹਨ ਜਿੱਥੇ ਉਹ ਦੱਸਦੇ ਹਨ ਕਿ ਉਹ ਆਪਣੇ ਕੰਪਨੀ ਵਿੱਚ ML ਦਾ ਕਿਵੇਂ ਇਸਤੇਮਾਲ ਕਰਦੇ ਹਨ। ਇਹਨੂੰ [ਦੇਖਣਾ ਲਾਇਕ ਹੈ](https://www.youtube.com/channel/UCe2PjkQXqOuwkW1gw6Ameuw/videos)! +ਵੇਅਫੇਅਰ ਡੇਟਾ ਸਾਇੰਸ ਟੀਮ ਕੋਲ ਕਈ ਦਿਲਚਸਪ ਵੀਡੀਓਜ਼ ਹਨ ਜਿਨ੍ਹਾਂ ਵਿੱਚ ਉਹ ਆਪਣੇ ਕੰਪਨੀ ਵਿੱਚ ਐਮਐਲ ਕਿਵੇਂ ਵਰਤਦੇ ਹਨ। ਇਸ ਨੂੰ [ਦੇਖਣਾ ਲਾਇਕ ਹੈ](https://www.youtube.com/channel/UCe2PjkQXqOuwkW1gw6Ameuw/videos)! ## ਅਸਾਈਨਮੈਂਟ -[ਇੱਕ ML ਸਕੈਵੇਂਜਰ ਹੰਟ](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/9-Real-World/2-Debugging-ML-Models/README.md b/translations/pa/9-Real-World/2-Debugging-ML-Models/README.md index cfa2645a1..fa9c08f15 100644 --- a/translations/pa/9-Real-World/2-Debugging-ML-Models/README.md +++ b/translations/pa/9-Real-World/2-Debugging-ML-Models/README.md @@ -1,129 +1,179 @@ -# ਪੋਸਟਸਕ੍ਰਿਪਟ: ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਵਿੱਚ ਮਾਡਲ ਡੀਬੱਗਿੰਗ ਲਈ ਜ਼ਿੰਮੇਵਾਰ AI ਡੈਸ਼ਬੋਰਡ ਕੰਪੋਨੈਂਟਸ ਦੀ ਵਰਤੋਂ +# ਪੋਸਟਸਕ੍ਰਿਪਟ: ਜ਼ਿੰਮੇਵਾਰ AI ਡੈਸ਼ਬੋਰਡ ਕੰਪੋਨੈਂਟਸ ਦੀ ਵਰਤੋਂ ਨਾਲ ਮਸ਼ੀਨ ਲਰਣਿੰਗ ਵਿੱਚ ਮਾਡਲ ਡੀਬੱਗਿੰਗ + ## [ਪ੍ਰੀ-ਲੈਕਚਰ ਕਵਿਜ਼](https://ff-quizzes.netlify.app/en/ml/) + +## ਪਰਿਚਯ -## ਤਾਰਫ਼ +ਮਸ਼ੀਨ ਲਰਣਿੰਗ ਸਾਡੇ ਰੋਜ਼ਾਨਾ ਜੀਵਨ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰਦੀ ਹੈ। AI ਸਾਡੇ ਅਤੇ ਸਾਡੀ ਸਮਾਜ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰਨ ਵਾਲੀਆਂ ਕੁਝ ਅਹਿਮ ਪ੍ਰਣਾਲੀਆਂ ਵਿੱਚ ਆਪਣੀ ਜਗ੍ਹਾ ਬਣਾਉਂਦਾ ਜਾ ਰਿਹਾ ਹੈ, ਜਿਵੇਂ ਕਿ ਹੈਲਥਕੇਅਰ, ਵਿੱਤ, ਸਿੱਖਿਆ ਅਤੇ ਰੋਜ਼ਗਾਰ। ਉਦਾਹਰਨ ਵਜੋਂ, ਪ੍ਰਣਾਲੀਆਂ ਅਤੇ ਮਾਡਲ ਰੋਜ਼ਾਨਾ ਫੈਸਲੇ ਕਰਨ ਵਾਲੇ ਕੰਮਾਂ ਵਿੱਚ ਸ਼ਾਮਿਲ ਹਨ, ਜਿਵੇਂ ਕਿ ਸਿਹਤ ਸੇਵਾਵਾਂ ਦੀ ਪਹਚਾਣ ਜਾਂ ਧੋਖਾਧੜੀ ਦਾ ਪਤਾ ਲਗਾਉਣਾ। ਇਸ ਲਈ AI ਵਿੱਚ ਤਰੱਕੀ ਅਤੇ ਤੇਜ਼ੀ ਨਾਲ ਗ੍ਰਹਿਣ ਕਰਨ ਦੇ ਨਾਲ, ਸਮਾਜਕ ਉਮੀਦਾਂ ਵਿਕਸਤ ਹੋ ਰਹੀਆਂ ਹਨ ਅਤੇ ਨਿਯਮਕਰਨ ਵੱਧ ਰਹੀ ਹੈ। ਅਸੀਂ ਅਕਸਰ ਦੇਖਦੇ ਹਾਂ ਕਿ AI ਪ੍ਰਣਾਲੀਆਂ ਉਮੀਦਾਂ ‘ਤੇ ਖਰਾ ਨਹੀਂ ਔਤਰੀਆਂ; ਇਹ ਨਵੀਆਂ ਚੁਣੌਤੀਆਂ ਪੇਸ਼ ਕਰਦੀਆਂ ਹਨ ਅਤੇ ਸਰਕਾਰਾਂ AI ਹੱਲਾਂ ਨੂੰ ਨਿਯਮਤ ਕਰਨਾ ਸ਼ੁਰੂ ਕਰ ਰਹੀਆਂ ਹਨ। ਇਸ ਲਈ ਇਹ ਜ਼ਰੂਰੀ ਹੈ ਕਿ ਇਹ ਮਾਡਲ ਪਰਖੇ ਜਾਣ ਤਾ ਕਿ ਹਰ ਕਿਸੇ ਲਈ ਨਿਆਂਸੂਚਕ, ਭਰੋਸੇਯੋਗ, ਸ਼ਾਮਿਲ ਕਰਨ ਵਾਲੇ, ਪਾਰਦਰਸ਼ੀ ਅਤੇ ਜ਼ਿੰਮੇਵਾਰ ਨਤੀਜੇ ਦਿੱਤੇ ਜਾਣ। -ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਸਾਡੇ ਰੋਜ਼ਾਨਾ ਜੀਵਨ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰਦੀ ਹੈ। AI ਸਿਹਤ ਸੇਵਾਵਾਂ, ਵਿੱਤ, ਸਿੱਖਿਆ ਅਤੇ ਰੋਜ਼ਗਾਰ ਵਰਗੇ ਖੇਤਰਾਂ ਵਿੱਚ ਦਾਖਲ ਹੋ ਰਹੀ ਹੈ, ਜੋ ਸਾਡੇ ਸਮਾਜ ਅਤੇ ਵਿਅਕਤੀਗਤ ਜੀਵਨ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰਦੇ ਹਨ। ਉਦਾਹਰਣ ਲਈ, ਸਿਸਟਮ ਅਤੇ ਮਾਡਲ ਦਿਨ-ਰਾਤ ਦੇ ਫੈਸਲੇ ਲੈਣ ਵਾਲੇ ਕੰਮਾਂ ਵਿੱਚ ਸ਼ਾਮਲ ਹਨ, ਜਿਵੇਂ ਕਿ ਸਿਹਤ ਸੇਵਾ ਦੀ ਨਿਦਾਨ ਜਾਂ ਧੋਖਾਧੜੀ ਦੀ ਪਛਾਣ। ਇਸ ਦੇ ਨਤੀਜੇ ਵਜੋਂ, AI ਵਿੱਚ ਤਰੱਕੀ ਅਤੇ ਇਸ ਦੀ ਤੇਜ਼ੀ ਨਾਲ ਅਪਨਾਉਣ ਨੂੰ ਸਮਾਜਿਕ ਉਮੀਦਾਂ ਅਤੇ ਨਿਯਮਾਂ ਦੇ ਵਿਕਾਸ ਨਾਲ ਮਿਲਾਇਆ ਜਾ ਰਿਹਾ ਹੈ। ਅਸੀਂ ਅਕਸਰ ਵੇਖਦੇ ਹਾਂ ਕਿ AI ਸਿਸਟਮ ਕਈ ਵਾਰ ਉਮੀਦਾਂ 'ਤੇ ਖਰੇ ਨਹੀਂ ਉਤਰਦੇ; ਇਹ ਨਵੇਂ ਚੁਣੌਤੀ ਪੇਸ਼ ਕਰਦੇ ਹਨ; ਅਤੇ ਸਰਕਾਰਾਂ AI ਹੱਲਾਂ ਨੂੰ ਨਿਯਮਿਤ ਕਰਨਾ ਸ਼ੁਰੂ ਕਰ ਰਹੀਆਂ ਹਨ। ਇਸ ਲਈ, ਇਹ ਜ਼ਰੂਰੀ ਹੈ ਕਿ ਇਹ ਮਾਡਲਾਂ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕੀਤਾ ਜਾਵੇ ਤਾਂ ਜੋ ਸਾਰੇ ਲਈ ਨਿਰਪੱਖ, ਭਰੋਸੇਯੋਗ, ਸ਼ਾਮਿਲ, ਪਾਰਦਰਸ਼ੀ ਅਤੇ ਜਵਾਬਦੇਹ ਨਤੀਜੇ ਪ੍ਰਦਾਨ ਕੀਤੇ ਜਾ ਸਕਣ। +ਇਸ ਕੋਰਸ ਵਿੱਚ, ਅਸੀਂ ਇਹ ਦੇਖਾਂਗੇ ਕਿ ਕਿਹੜੇ ਪ੍ਰਯੋਗਕਾਰੀ ਸੰਦ ਵਰਤੇ ਜਾ ਸਕਦੇ ਹਨ ਇਹ ਮੈੱਥੋਂ ਪਤਾ ਲੱਗੇ ਕਿ ਮਾਡਲ ਵਿੱਚ ਜ਼ਿੰਮੇਵਾਰ AI ਸਬੰਧੀ ਸਮੱਸਿਆਵਾਂ ਹਨ ਕਿ ਨਹੀਂ। ਰਵਾਇਤੀ ਮਸ਼ੀਨ ਲਰਣਿੰਗ ਡੀਬੱਗਿੰਗ ਤਕਨੀਕਾਂ ਅਕਸਰ ਮਾਤਰਾਤਮਕ ਗਣਨਾਵਾਂ ‘ਤੇ ਆਧਾਰਿਤ ਹੁੰਦੀਆਂ ਹਨ, ਜਿਵੇਂ ਕਿ ਇਕੱਠੇ ਕੀਤੀ ਗਈ ਸਹੀਤਾ ਜਾਂ ਔਸਤ ਗਲਤੀ ਦਾ ਨੁਕਸਾਨ। ਸੋਚੋ ਜਦੋਂ ਤੁਸੀਂ ਇਹ ਮਾਡਲ ਬਣਾਉਣ ਲਈ ਵਰਤੀ ਜਾ ਰਹੀ ਡੇਟਾ ਵਿੱਚ ਕੁਝ ਡੈਮੋਗ੍ਰਾਫਿਕ ਮਿਸੜੀ ਹੈ, ਜਿਵੇਂ ਕਿ ਨਸਲ, ਲਿੰਗ, ਰਾਜਨੀਤਕ ਦ੍ਰਿਸ਼ਟਿਕੋਣ, ਧਰਮ ਜਾਂ ਅਜਿਹੇ ਡੈਮੋਗ੍ਰਾਫਿਕ ਨੂੰ ਬੇਫ਼ਰਮਾ ਰੂਪ ਵਿੱਚ ਦਰਸਾਉਂਦੀ ਹੈ। ਜਦੋਂ ਮਾਡਲ ਦੇ ਨਤੀਜੇ ਕਿਸੇ ਡੈਮੋਗ੍ਰਾਫਿਕ ਨੂੰ ਪੱਖਪਾਤੀ ਰੂਪ ਵਿੱਚ ਸਮਝੇ ਜਾਂਦੇ ਹਨ? ਇਹ ਸਵੇਂਸਟੀਵ ਫੀਚਰ ਸਮੂਹਾਂ ਦੀ ਓਵਰ ਜਾਂ ਅੰਡਰ ਪ੍ਰਸਤੁਤੀਸ਼ੀਲਤਾ ਨੂੰ ਜਨਮ ਦੇ ਸਕਦਾ ਹੈ ਜਿਹੜਾ ਨਿਆਂਸੂਚਕਤਾ, ਸ਼ਾਮਿਲ ਕਰਨ ਵਾਲੇ ਅਤੇ ਭਰੋਸੇਯੋਗਤਾ ਨਾਲ ਸੰਬੰਧਿਤ ਸਮੱਸਿਆਵਾਂ ਪੈਦਾ ਕਰਦਾ ਹੈ। ਦੂਜਾ ਕਾਰਕ ਇਹ ਹੈ ਕਿ ਮਸ਼ੀਨ ਲਰਣਿੰਗ ਮਾਡਲ ਕਾਲੇ ਡੱਬੇ ਸਮਾਨ ਹਨ, ਜਿਸ ਕਾਰਨ ਇਸ ਨੂੰ ਸਮਝਣਾ ਅਤੇ ਵਿਆਖਿਆ ਕਰਨਾ ਮੁਸ਼ਕਲ ਹੁੰਦਾ ਹੈ ਕਿ ਮਾਡਲ ਦੀ ਭਵਿੱਖਵਾਣੀ ਕਿਵੇਂ ਬਣਦੀ ਹੈ। ਇਹ ਸਾਰੀਆਂ ਚੁਣੌਤੀਆਂ ਡੇਟਾ ਵਿਗਿਆਨੀਆਂ ਅਤੇ AI ਵਿਕਾਸਕਾਰਾਂ ਦੇ ਸਾਹਮਣੇ ਹੁੰਦੀਆਂ ਹਨ ਜਦੋਂ ਉਨ੍ਹਾਂ ਕੋਲ ਮਾਡਲ ਦੀ ਨਿਆਂਸੂਚਕਤਾ ਜਾਂ ਭਰੋਸੇਯੋਗਤਾ ਜाँचਣ ਅਤੇ ਡੀਬੱਗ ਕਰਨ ਲਈ ਢੁਕਵਾਂ ਸੰਦ ਨਹੀਂ ਹੁੰਦੇ। -ਇਸ ਪਾਠਕ੍ਰਮ ਵਿੱਚ, ਅਸੀਂ ਅਜਿਹੇ ਪ੍ਰਯੋਗਿਕ ਟੂਲਾਂ ਦੀ ਜਾਂਚ ਕਰਾਂਗੇ ਜੋ ਮਾਡਲ ਵਿੱਚ ਜ਼ਿੰਮੇਵਾਰ AI ਸੰਬੰਧੀ ਸਮੱਸਿਆਵਾਂ ਦੀ ਪਛਾਣ ਕਰਨ ਲਈ ਵਰਤੇ ਜਾ ਸਕਦੇ ਹਨ। ਰਵਾਇਤੀ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਡੀਬੱਗਿੰਗ ਤਕਨੀਕਾਂ ਆਮ ਤੌਰ 'ਤੇ ਗਣਿਤੀ ਗਣਨਾਵਾਂ 'ਤੇ ਅਧਾਰਿਤ ਹੁੰਦੀਆਂ ਹਨ, ਜਿਵੇਂ ਕਿ ਕੁੱਲ ਸਹੀਤਾ ਜਾਂ ਔਸਤ ਗਲਤੀ ਹਾਨੀ। ਸੋਚੋ ਕਿ ਕੀ ਹੋ ਸਕਦਾ ਹੈ ਜਦੋਂ ਤੁਸੀਂ ਮਾਡਲ ਬਣਾਉਣ ਲਈ ਵਰਤ ਰਹੇ ਡਾਟਾ ਵਿੱਚ ਕੁਝ ਜਾਤੀਆਂ, ਲਿੰਗ, ਰਾਜਨੀਤਿਕ ਦ੍ਰਿਸ਼ਟੀਕੋਣ, ਧਰਮ ਜਾਂ ਅਸਮਾਨ ਪ੍ਰਤੀਨਿਧਤਾ ਦੀ ਘਾਟ ਹੁੰਦੀ ਹੈ। ਜਦੋਂ ਮਾਡਲ ਦਾ ਨਤੀਜਾ ਕੁਝ ਜਾਤੀਆਂ ਨੂੰ ਵਧੇਰੇ ਤਰਜੀਹ ਦਿੰਦਾ ਹੈ, ਤਾਂ ਇਹ ਸੰਵੇਦਨਸ਼ੀਲ ਫੀਚਰ ਸਮੂਹਾਂ ਦੀ ਵਧੇਰੇ ਜਾਂ ਘੱਟ ਪ੍ਰਤੀਨਿਧਤਾ ਪੈਦਾ ਕਰ ਸਕਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਮਾਡਲ ਵਿੱਚ ਨਿਰਪੱਖਤਾ, ਸ਼ਾਮਿਲਤਾ ਜਾਂ ਭਰੋਸੇਯੋਗਤਾ ਦੀ ਸਮੱਸਿਆ ਹੋ ਸਕਦੀ ਹੈ। ਇੱਕ ਹੋਰ ਕਾਰਕ ਇਹ ਹੈ ਕਿ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਮਾਡਲਾਂ ਨੂੰ "ਬਲੈਕ ਬਾਕਸ" ਮੰਨਿਆ ਜਾਂਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਇਹ ਸਮਝਣਾ ਮੁਸ਼ਕਲ ਹੋ ਜਾਂਦਾ ਹੈ ਕਿ ਮਾਡਲ ਦੇ ਅਨੁਮਾਨਾਂ ਨੂੰ ਕੀ ਚਲਾਉਂਦਾ ਹੈ। ਇਹ ਸਾਰੀਆਂ ਚੁਣੌਤੀਆਂ ਡਾਟਾ ਸਾਇੰਟਿਸਟਾਂ ਅਤੇ AI ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਸਾਹਮਣਾ ਕਰਦੀਆਂ ਹਨ ਜਦੋਂ ਉਨ੍ਹਾਂ ਕੋਲ ਮਾਡਲ ਦੀ ਨਿਰਪੱਖਤਾ ਜਾਂ ਭਰੋਸੇਯੋਗਤਾ ਦੀ ਜਾਂਚ ਕਰਨ ਲਈ ਯਥਾਰਥ ਟੂਲ ਨਹੀਂ ਹੁੰਦੇ। +ਇਸ ਪਾਠ ਵਿੱਚ, ਤੁਸੀਂ ਸਿੱਖੋਗੇ ਕਿ ਕਿਵੇਂ ਆਪਣੇ ਮਾਡਲਾਂ ਨੂੰ ਡੀਬੱਗ ਕਰਨਾ ਹੈ: -ਇਸ ਪਾਠ ਵਿੱਚ, ਤੁਸੀਂ ਆਪਣੇ ਮਾਡਲਾਂ ਨੂੰ ਡੀਬੱਗ ਕਰਨ ਬਾਰੇ ਸਿੱਖੋਗੇ: +- **ਗਲਤੀ ਵਿਸ਼ਲੇਸ਼ਣ**: ਪਛਾਣ ਕਰੋ ਕਿ ਤੁਹਾਡੇ ਡੇਟਾ ਵੰਡ ਵਿੱਚ ਮਾਡਲ ਕਿੱਥੇ ਜ਼ਿਆਦਾ ਗਲਤੀਆੰ ਕਰ ਰਿਹਾ ਹੈ। +- **ਮਾਡਲ ਓਵਰਵਿਊ**: ਵੱਖ-ਵੱਖ ਡੇਟਾ ਸਮੂਹਾਂ ਵਿੱਚ ਤੁਲਨਾਤਮਕ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰੋ ਤਾਂ ਜੋ ਮਾਡਲ ਦੇ ਪ੍ਰਦਰਸ਼ਨ ਮੈਟ੍ਰਿਕਸ ਵਿੱਚ ਫਰਕ ਪਤਾ ਲੱਗ ਸਕੇ। +- **ਡੇਟਾ ਵਿਸ਼ਲੇਸ਼ਣ**: ਜਾਂਚ ਕਰੋ ਕਿ ਤੁਹਾਡੇ ਡੇਟਾ ਵਿੱਚ ਕਿਸੇ ਡੈਮੋਗ੍ਰਾਫਿਕ ਦੀ ਓਵਰ ਜਾਂ ਅੰਡਰ ਪ੍ਰਸਤੁਤੀਸ਼ੀਲਤਾ ਕਿੱਥੇ ਹੈ ਜੋ ਮਾਡਲ ਨੂੰ ਕਿਸੇ ਇਕ ਡੈਮੋਗ੍ਰਾਫਿਕ ਨੂੰ ਪੱਖ ਪਾਸਾ ਦਿਵਾਉਂਦੀ ਹੈ। +- **ਫੀਚਰ ਮਹੱਤਵ**: ਸਮਝੋ ਕਿ ਕਿਹੜੇ ਫੀਚਰ ਇੱਕ ਗਲੋਬਲ ਜਾਂ ਸਥਾਨਕ ਪੱਧਰ 'ਤੇ ਤੁਹਾਡੇ ਮਾਡਲ ਦੀ ਭਵਿੱਖਵਾਣੀ ਨੂੰ ਚਲਾ ਰਹੇ ਹਨ। -- **ਗਲਤੀ ਵਿਸ਼ਲੇਸ਼ਣ**: ਪਛਾਣ ਕਰੋ ਕਿ ਤੁਹਾਡੇ ਡਾਟਾ ਵੰਡ ਵਿੱਚ ਕਿੱਥੇ ਮਾਡਲ ਦੀ ਗਲਤੀ ਦਰ ਉੱਚੀ ਹੈ। -- **ਮਾਡਲ ਝਲਕ**: ਵੱਖ-ਵੱਖ ਡਾਟਾ ਸਮੂਹਾਂ ਵਿੱਚ ਤੁਲਨਾਤਮਕ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰੋ ਤਾਂ ਜੋ ਤੁਹਾਡੇ ਮਾਡਲ ਦੇ ਪ੍ਰਦਰਸ਼ਨ ਮਾਪਦੰਡਾਂ ਵਿੱਚ ਅਸਮਾਨਤਾ ਦੀ ਪਛਾਣ ਕੀਤੀ ਜਾ ਸਕੇ। -- **ਡਾਟਾ ਵਿਸ਼ਲੇਸ਼ਣ**: ਜਾਂਚ ਕਰੋ ਕਿ ਕਿੱਥੇ ਤੁਹਾਡੇ ਡਾਟਾ ਵਿੱਚ ਵਧੇਰੇ ਜਾਂ ਘੱਟ ਪ੍ਰਤੀਨਿਧਤਾ ਹੋ ਸਕਦੀ ਹੈ, ਜੋ ਤੁਹਾਡੇ ਮਾਡਲ ਨੂੰ ਇੱਕ ਡਾਟਾ ਜਾਤੀ ਦੇ ਮੁਕਾਬਲੇ ਦੂਜੇ ਨੂੰ ਵਧੇਰੇ ਤਰਜੀਹ ਦੇਣ ਲਈ ਝੁਕਾ ਸਕਦੀ ਹੈ। -- **ਫੀਚਰ ਮਹੱਤਤਾ**: ਸਮਝੋ ਕਿ ਕਿਹੜੇ ਫੀਚਰ ਤੁਹਾਡੇ ਮਾਡਲ ਦੇ ਅਨੁਮਾਨਾਂ ਨੂੰ ਗਲੋਬਲ ਜਾਂ ਸਥਾਨਕ ਪੱਧਰ 'ਤੇ ਚਲਾਉਂਦੇ ਹਨ। +## ਅਗਾਂਹ ਵਧਣ ਦੀ ਲੋੜ -## ਪੂਰਵ-ਸ਼ਰਤ +ਅਗਾਂਹ ਵਧਣ ਲਈ, ਕਿਰਪਾ ਕਰਕੇ ਸਮੀਖਿਆ ਕਰੋ [Responsible AI tools for developers](https://www.microsoft.com/ai/ai-lab-responsible-ai-dashboard) -ਪੂਰਵ-ਸ਼ਰਤ ਵਜੋਂ, ਕਿਰਪਾ ਕਰਕੇ [ਡਿਵੈਲਪਰਾਂ ਲਈ ਜ਼ਿੰਮੇਵਾਰ AI ਟੂਲ](https://www.microsoft.com/ai/ai-lab-responsible-ai-dashboard) ਦੀ ਸਮੀਖਿਆ ਕਰੋ। - -> ![ਜ਼ਿੰਮੇਵਾਰ AI ਟੂਲਾਂ 'ਤੇ Gif](../../../../9-Real-World/2-Debugging-ML-Models/images/rai-overview.gif) +> ![ਜ਼ਿੰਮੇਵਾਰ AI ਸੰਦਾਂ ਉੱਤੇ ਗਿਫ਼](../../../../9-Real-World/2-Debugging-ML-Models/images/rai-overview.gif) ## ਗਲਤੀ ਵਿਸ਼ਲੇਸ਼ਣ -ਰਵਾਇਤੀ ਮਾਡਲ ਪ੍ਰਦਰਸ਼ਨ ਮਾਪਦੰਡ, ਜਿਵੇਂ ਕਿ ਸਹੀ ਅਤੇ ਗਲਤ ਅਨੁਮਾਨਾਂ ਦੇ ਅਧਾਰ 'ਤੇ ਗਣਨਾ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਉਦਾਹਰਣ ਲਈ, ਇਹ ਨਿਰਧਾਰਤ ਕਰਨਾ ਕਿ ਮਾਡਲ 89% ਸਮੇਂ ਸਹੀ ਹੈ ਅਤੇ ਗਲਤੀ ਹਾਨੀ 0.001 ਹੈ, ਇਹ ਚੰਗੇ ਪ੍ਰਦਰਸ਼ਨ ਵਜੋਂ ਮੰਨਿਆ ਜਾ ਸਕਦਾ ਹੈ। ਗਲਤੀਆਂ ਅਕਸਰ ਤੁਹਾਡੇ ਅਧਾਰਭੂਤ ਡਾਟਾ ਸੈੱਟ ਵਿੱਚ ਸਮਾਨ ਤੌਰ 'ਤੇ ਵੰਡੀਆਂ ਨਹੀਂ ਹੁੰਦੀਆਂ। ਤੁਸੀਂ 89% ਮਾਡਲ ਸਹੀਤਾ ਸਕੋਰ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦੇ ਹੋ, ਪਰ ਪਤਾ ਲਗਾ ਸਕਦੇ ਹੋ ਕਿ ਤੁਹਾਡੇ ਡਾਟਾ ਦੇ ਵੱਖ-ਵੱਖ ਖੇਤਰਾਂ ਵਿੱਚ ਮਾਡਲ 42% ਸਮੇਂ ਫੇਲ੍ਹ ਹੋ ਰਿਹਾ ਹੈ। ਕੁਝ ਡਾਟਾ ਸਮੂਹਾਂ ਵਿੱਚ ਗਲਤੀ ਦੇ ਇਹ ਪੈਟਰਨ ਨਿਰਪੱਖਤਾ ਜਾਂ ਭਰੋਸੇਯੋਗਤਾ ਦੀ ਸਮੱਸਿਆ ਪੈਦਾ ਕਰ ਸਕਦੇ ਹਨ। ਇਹ ਸਮਝਣਾ ਜ਼ਰੂਰੀ ਹੈ ਕਿ ਮਾਡਲ ਕਿੱਥੇ ਚੰਗਾ ਕਰ ਰਿਹਾ ਹੈ ਜਾਂ ਨਹੀਂ। ਉਹ ਡਾਟਾ ਖੇਤਰ ਜਿੱਥੇ ਤੁਹਾਡੇ ਮਾਡਲ ਵਿੱਚ ਗਲਤੀਆਂ ਦੀ ਸੰਖਿਆ ਜ਼ਿਆਦਾ ਹੈ, ਇੱਕ ਮਹੱਤਵਪੂਰਨ ਡਾਟਾ ਜਾਤੀ ਹੋ ਸਕਦੀ ਹੈ। +ਮਾਡਲ ਪ੍ਰਦਰਸ਼ਨ ਮੈਟ੍ਰਿਕਸ ਜਿਹੜੇ ਸਹੀਤਾ ਮਾਪਣ ਲਈ ਵਰਤੇ ਜਾਂਦੇ ਹਨ, ਅਕਸਰ ਸਹੀ ਅਤੇ ਗਲਤ ਭਵਿੱਖਵਾਣੀਆਂ ਦੀ ਗਿਣਤੀ ‘ਤੇ ਅਧਾਰਿਤ ਹੁੰਦੇ ਹਨ। ਉਦਾਹਰਨ ਵਜੋਂ, ਜੇ ਮਾਡਲ 89% ਸਮੇਂ ਸਹੀ ਹੋਵੇ ਅਤੇ ਗਲਤੀ ਕੋਸ਼ਿਸ਼ 0.001 ਹੋਵੇ, ਤਾਂ ਇਹ ਵਧੀਆ ਪ੍ਰਦਰਸ਼ਨ ਮੰਨਿਆ ਜਾ ਸਕਦਾ ਹੈ। ਗਲਤੀਆਂ ਆਮ ਤੌਰ ‘ਤੇ ਤੁਹਾਡੇ ਮੂਲ ਡੇਟਾਸੈੱਟ ਵਿੱਚ ਇੱਕਸਾਰ ਵੰਡੀਆਂ ਨਹੀਂ ਹੁੰਦੀਆਂ। ਤੁਸੀਂ 89% ਸਹੀਤਾ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦੇ ਹੋ ਪਰ ਪਤਾ ਲੱਗ ਸਕਦਾ ਹੈ ਕਿ ਕੁਝ ਡੇਟਾ ਖੇਤਰਾਂ ਵਿੱਚ ਮਾਡਲ 42% ਸਮੇਂ ਨਾਕਾਮ ਰਹਿੰਦਾ ਹੈ। ਇਹ ਨਾਕਾਮੀ ਦੇ ਪੈਟਰਨ ਸਬੰਧਤ ਡੇਟਾ ਸਮੂਹਾਂ ਦੇ ਸੰਦਰਭ ਵਿੱਚ ਨਿਆਂਸੂਚਕਤਾ ਜਾਂ ਭਰੋਸੇਯੋਗਤਾ ਦੀਆਂ ਸਮੱਸਿਆਵਾਂ ਪੈਦਾ ਕਰ ਸਕਦੇ ਹਨ। ਇਹ ਅਹਿਮ ਹੈ ਕਿ ਸਮਝਿਆ ਜਾਵੇ ਕਿ ਮਾਡਲ ਕਿਸ ਜਗ੍ਹਾ ਚੰਗਾ ਕਰ ਰਿਹਾ ਹੈ ਅਤੇ ਕਿੱਥੇ ਨਹੀਂ। ਉਹ ਡੇਟਾ ਖੇਤਰ ਜਿੱਥੇ ਮਾਡਲ ਵਿੱਚ ਗਲਤੀਆਂ ਵੱਧ ਹਨ, ਮਹੱਤਵਪੂਰਨ ਡੈਮੋਗ੍ਰਾਫਿਕ ਹੋ ਸਕਦੇ ਹਨ। -![ਮਾਡਲ ਗਲਤੀਆਂ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਅਤੇ ਡੀਬੱਗ](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-error-distribution.png) +![ਮਾਡਲ ਦੀਆਂ ਗਲਤੀਆਂ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਅਤੇ ਡੀਬੱਗ](../../../../translated_images/pa/ea-error-distribution.117452e1177c1dd8.webp) -RAI ਡੈਸ਼ਬੋਰਡ 'ਤੇ ਗਲਤੀ ਵਿਸ਼ਲੇਸ਼ਣ ਕੰਪੋਨੈਂਟ ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਮਾਡਲ ਦੀ ਨਾਕਾਮੀ ਵੱਖ-ਵੱਖ ਸਮੂਹਾਂ ਵਿੱਚ ਕਿਵੇਂ ਵੰਡੀ ਗਈ ਹੈ। ਇਹ ਤੁਹਾਡੇ ਡਾਟਾ ਸੈੱਟ ਵਿੱਚ ਉੱਚ ਗਲਤੀ ਦਰ ਵਾਲੇ ਖੇਤਰਾਂ ਜਾਂ ਫੀਚਰਾਂ ਦੀ ਪਛਾਣ ਕਰਨ ਵਿੱਚ ਮਦਦਗਾਰ ਹੈ। ਜਿੱਥੇ ਮਾਡਲ ਦੀਆਂ ਜ਼ਿਆਦਾਤਰ ਗਲਤੀਆਂ ਆ ਰਹੀਆਂ ਹਨ, ਉਥੇ ਤੁਸੀਂ ਜੜ੍ਹੇ ਕਾਰਨ ਦੀ ਜਾਂਚ ਸ਼ੁਰੂ ਕਰ ਸਕਦੇ ਹੋ। ਤੁਸੀਂ ਡਾਟਾ ਸਮੂਹਾਂ ਬਣਾਉਣ ਲਈ ਵੀ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰ ਸਕਦੇ ਹੋ। ਇਹ ਡਾਟਾ ਸਮੂਹ ਡੀਬੱਗਿੰਗ ਪ੍ਰਕਿਰਿਆ ਵਿੱਚ ਮਦਦ ਕਰਦੇ ਹਨ ਤਾਂ ਜੋ ਪਤਾ ਲਗਾਇਆ ਜਾ ਸਕੇ ਕਿ ਮਾਡਲ ਦਾ ਪ੍ਰਦਰਸ਼ਨ ਇੱਕ ਸਮੂਹ ਵਿੱਚ ਚੰਗਾ ਹੈ, ਪਰ ਦੂਜੇ ਵਿੱਚ ਗਲਤ ਹੈ। +RAI ਡੈਸ਼ਬੋਰਡ 'ਤੇ ਗਲਤੀ ਵਿਸ਼ਲੇਸ਼ਣ ਕਾਂਪੋਨੈਂਟ ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਕਿਵੇਂ ਮਾਡਲ ਦੀ ਨਾਕਾਮੀ ਵੱਖ-ਵੱਖ ਸਮੂਹਾਂ ਵਿੱਚ ਵੰਡ ਦਿੱਤੀ ਗਈ ਹੈ ਇੱਕ ਟ੍ਰੀ ਵਿਜ਼ੂਅਲਾਈਜ਼ੇਸ਼ਨ ਰਾਹੀਂ। ਇਹ ਉਪਯੋਗੀ ਹੈ ਇਹ ਪਛਾਣਣ ਲਈ ਕਿ ਕਿਹੜੇ ਫੀਚਰ ਜਾਂ ਖੇਤਰਾਂ ਵਿੱਚ ਤੁਹਾਡੇ ਡੇਟਾਸੈੱਟ ਨਾਲ ਉੱਚ ਗਲਤੀ ਦਰ ਹੈ। ਜਦੋਂ ਤੁਸੀਂ ਵੇਖਦੇ ਹੋ ਕਿ ਮਾਡਲ ਦੀਆਂ ਆਮ ਗਲਤੀਆਂ ਕਿੱਥੋਂ ਆ ਰਹੀਆਂ ਹਨ, ਤਾਂ ਤੁਸੀਂ ਮੂਲ ਕਾਰਨ ਦੀ ਜਾਂਚ ਕਰ ਸਕਦੇ ਹੋ। ਤੁਸੀਂ ਡੇਟਾ ਦੇ ਸਮੂਹ ਬਣਾਉਂਦੇ ਹੋਏ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰ ਸਕਦੇ ਹੋ। ਇਹ ਡੇਟਾ ਸਮੂਹ ਡੀਬੱਗਿੰਗ ਪ੍ਰਕਿਰਿਆ ਵਿੱਚ ਮਦਦ ਕਰਦੇ ਹਨ ਕਿ ਕਿਸ ਲਈ ਮਾਡਲ ਇੱਕ ਸਮੂਹ ਵਿੱਚ ਚੰਗਾ ਅਤੇ ਦੂਜੇ ਵਿੱਚ ਗਲਤ ਅਮਲ ਕਰ ਰਿਹਾ ਹੈ। -![ਗਲਤੀ ਵਿਸ਼ਲੇਸ਼ਣ](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-error-cohort.png) +![ਗਲਤੀ ਵਿਸ਼ਲੇਸ਼ਣ](../../../../translated_images/pa/ea-error-cohort.6886209ea5d438c4.webp) -ਟ੍ਰੀ ਮੈਪ 'ਤੇ ਦ੍ਰਿਸ਼ਮਾਨ ਸੰਕੇਤਕ ਸਮੱਸਿਆ ਵਾਲੇ ਖੇਤਰਾਂ ਨੂੰ ਤੇਜ਼ੀ ਨਾਲ ਪਛਾਣ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰਦੇ ਹਨ। ਉਦਾਹਰਣ ਲਈ, ਜੇਕਰ ਟ੍ਰੀ ਨੋਡ ਦਾ ਰੰਗ ਗੂੜ੍ਹਾ ਲਾਲ ਹੈ, ਤਾਂ ਗਲਤੀ ਦਰ ਉੱਚੀ ਹੈ। +ਟ੍ਰੀ ਮੈਪ ‘ਤੇ ਵਿਜ਼ੂਅਲ ਇੰਗ੍ਰਾਮ ਮਦਦ ਕਰਦੇ ਹਨ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਤੁਰੰਤ ਲੱਭਣ ਵਿੱਚ। ਉਦਾਹਰਨ ਵਜੋਂ, ਜਿੰਨੀ ਗਹਿਰੀ ਲਾਲ ਛਾਇਆ ਟ੍ਰੀ ਨੋਡ 'ਤੇ ਹੋਵੇ, ਉਨ੍ਹਾਂ ਵੱਧ ਗਲਤੀ ਦਰ ਦਰਸਾਉਂਦੀ ਹੈ। -ਹੀਟ ਮੈਪ ਇੱਕ ਹੋਰ ਦ੍ਰਿਸ਼ਮਾਨ ਕਾਰਗੁਜ਼ਾਰੀ ਹੈ ਜੋ ਉਪਭੋਗਤਾਵਾਂ ਨੂੰ ਇੱਕ ਜਾਂ ਦੋ ਫੀਚਰਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਗਲਤੀ ਦਰ ਦੀ ਜਾਂਚ ਕਰਨ ਦੀ ਸਹੂਲਤ ਦਿੰਦੀ ਹੈ, ਤਾਂ ਜੋ ਪੂਰੇ ਡਾਟਾ ਸੈੱਟ ਜਾਂ ਸਮੂਹਾਂ ਵਿੱਚ ਮਾਡਲ ਗਲਤੀਆਂ ਦੇ ਯੋਗਦਾਨਕਰਤਾ ਦੀ ਪਛਾਣ ਕੀਤੀ ਜਾ ਸਕੇ। +ਹੀਟ ਮੈਪ ਇਕ ਹੋਰ ਵਿਜ਼ੂਅਲਾਈਜ਼ੇਸ਼ਨ ਵਰਗਾ ਹੈ ਜੋ ਵਰਤੋਂਕਾਰ ਇੱਕ ਜਾਂ ਦੋ ਫੀਚਰਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਪੂਰੇ ਡੇਟਾਸੈੱਟ ਜਾਂ ਸਮੂਹਾਂ ਵਿੱਚ ਮਾਡਲ ਦੀਆਂ ਗਲਤੀਆਂ ਵਿੱਚ ਯੋਗਦਾਨ ਦਾ ਪਤਾ ਕਰ ਸਕਦੇ ਹਨ। -![ਗਲਤੀ ਵਿਸ਼ਲੇਸ਼ਣ ਹੀਟਮੈਪ](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-heatmap.png) +![ਗਲਤੀ ਵਿਸ਼ਲੇਸ਼ਣ ਹੀਟਮੇਪ](../../../../translated_images/pa/ea-heatmap.8d27185e28cee383.webp) -ਗਲਤੀ ਵਿਸ਼ਲੇਸ਼ਣ ਦੀ ਵਰਤੋਂ ਕਰੋ ਜਦੋਂ ਤੁਹਾਨੂੰ: +ਜਦ ਤੁਹਾਨੂੰ ਲੋੜ ਹੋਵੇ ਤਾਂ ਗਲਤੀ ਵਿਸ਼ਲੇਸ਼ਣ ਦੀ ਵਰਤੋਂ ਕਰੋ: -* ਸਮਝਣਾ ਹੋਵੇ ਕਿ ਮਾਡਲ ਦੀਆਂ ਨਾਕਾਮੀਆਂ ਕਿਵੇਂ ਡਾਟਾ ਸੈੱਟ ਅਤੇ ਕਈ ਇਨਪੁਟ ਅਤੇ ਫੀਚਰ ਮਾਪਦੰਡਾਂ ਵਿੱਚ ਵੰਡੀਆਂ ਗਈਆਂ ਹਨ। -* ਕੁੱਲ ਪ੍ਰਦਰਸ਼ਨ ਮਾਪਦੰਡਾਂ ਨੂੰ ਤੋੜ ਕੇ ਗਲਤ ਸਮੂਹਾਂ ਦੀ ਪਛਾਣ ਕਰੋ, ਤਾਂ ਜੋ ਤੁਹਾਡੇ ਨਿਸ਼ਾਨਾ ਬਣਾਉਣ ਵਾਲੇ ਰੋਕਥਾਮ ਕਦਮਾਂ ਨੂੰ ਜਾਣਕਾਰੀ ਪ੍ਰਦਾਨ ਕੀਤੀ ਜਾ ਸਕੇ। +* ਮਾਡਲ ਦੀਆਂ ਨਾਕਾਮੀਆਂ ਕਿਵੇਂ ਵੱਖ-ਵੱਖ ਡੇਟਾਸੈੱਟ ਅਤੇ ਫੀਚਰ ਦੀਆਂ ਮਾਪਦੰਡਾਂ ਵਿੱਚ ਵੰਡੀਆਂ ਗਈਆਂ ਹਨ, ਇਸ ਦੀ ਡੂੰਘੀ ਸਮਝ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ। +* ਕੁੱਲ ਪ੍ਰਦਰਸ਼ਨ ਮੈਟ੍ਰਿਕਸ ਨੂੰ ਇਹਤਿਆਤ ਨਾਲ ਤੋੜ ਕੇ ਸ਼ੁੱਧ ਕੀਤੇ ਸਮੂਹਾਂ ਦੀ ਖੋਜ ਕਰਨ ਲਈ ਜਿਨ੍ਹਾਂ ਵਿੱਚ ਗਲਤੀਆ ਹਨ ਤਾਂ ਕਿ ਨਿਸ਼ਾਨਾ ਬਣਾਈ ਗਈ ਰੋਕਥਾਮ ਦੀ ਕਾਰਵਾਈ ਕੀਤੀ ਜਾ ਸਕੇ। -## ਮਾਡਲ ਝਲਕ +## ਮਾਡਲ ਓਵਰਵਿਊ -ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਮਾਡਲ ਦੇ ਪ੍ਰਦਰਸ਼ਨ ਦਾ ਮੁਲਾਂਕਣ ਕਰਨ ਲਈ ਇਸ ਦੇ ਵਿਹਾਰ ਦੀ ਸਮੁੱਚੀ ਸਮਝ ਪ੍ਰਾਪਤ ਕਰਨੀ ਪੈਂਦੀ ਹੈ। ਇਹ ਇੱਕ ਤੋਂ ਵੱਧ ਮਾਪਦੰਡਾਂ ਦੀ ਸਮੀਖਿਆ ਕਰਕੇ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ, ਜਿਵੇਂ ਕਿ ਗਲਤੀ ਦਰ, ਸਹੀਤਾ, ਰਿਕਾਲ, ਪ੍ਰਿਸੀਸ਼ਨ ਜਾਂ MAE (Mean Absolute Error)। ਇੱਕ ਮਾਪਦੰਡ ਚੰਗਾ ਲੱਗ ਸਕਦਾ ਹੈ, ਪਰ ਦੂਜੇ ਮਾਪਦੰਡ ਵਿੱਚ ਗਲਤੀਆਂ ਸਾਹਮਣੇ ਆ ਸਕਦੀਆਂ ਹਨ। ਇਸ ਤੋਂ ਇਲਾਵਾ, ਪੂਰੇ ਡਾਟਾ ਸੈੱਟ ਜਾਂ ਸਮੂਹਾਂ ਵਿੱਚ ਮਾਪਦੰਡਾਂ ਦੀ ਤੁਲਨਾ ਕਰਕੇ ਮਾਡਲ ਕਿੱਥੇ ਚੰਗਾ ਕਰ ਰਿਹਾ ਹੈ ਜਾਂ ਨਹੀਂ, ਇਸ ਬਾਰੇ ਰੋਸ਼ਨੀ ਪਾਈ ਜਾ ਸਕਦੀ ਹੈ। ਇਹ ਖਾਸ ਤੌਰ 'ਤੇ ਸੰਵੇਦਨਸ਼ੀਲ ਅਤੇ ਅਸੰਵੇਦਨਸ਼ੀਲ ਫੀਚਰਾਂ (ਜਿਵੇਂ ਕਿ ਮਰੀਜ਼ ਦੀ ਜਾਤੀ, ਲਿੰਗ ਜਾਂ ਉਮਰ) ਵਿੱਚ ਮਾਡਲ ਦੇ ਪ੍ਰਦਰਸ਼ਨ ਨੂੰ ਵੇਖਣ ਲਈ ਮਹੱਤਵਪੂਰਨ ਹੈ, ਤਾਂ ਜੋ ਮਾਡਲ ਵਿੱਚ ਸੰਭਾਵਿਤ ਨਿਰਪੱਖਤਾ ਦੀ ਪਛਾਣ ਕੀਤੀ ਜਾ ਸਕੇ। ਉਦਾਹਰਣ ਲਈ, ਜੇਕਰ ਪਤਾ ਲੱਗੇ ਕਿ ਮਾਡਲ ਸੰਵੇਦਨਸ਼ੀਲ ਫੀਚਰਾਂ ਵਾਲੇ ਸਮੂਹ ਵਿੱਚ ਜ਼ਿਆਦਾ ਗਲਤ ਹੈ, ਤਾਂ ਇਹ ਮਾਡਲ ਵਿੱਚ ਸੰਭਾਵਿਤ ਨਿਰਪੱਖਤਾ ਨੂੰ ਦਰਸਾ ਸਕਦਾ ਹੈ। +ਮਸ਼ੀਨ ਲਰਣਿੰਗ ਮਾਡਲ ਦੇ ਪ੍ਰਦਰਸ਼ਨ ਦਾ ਮੁਲਾਂਕਣ ਕਰਨਾ ਮਾਡਲ ਦੇ ਵਿਹਾਰ ਦੀ ਸਮਗ੍ਰੀ ਸਮਝ ਪ੍ਰਾਪਤ ਕਰਨ ਦੀ ਮੰਗ ਕਰਦਾ ਹੈ। ਇਹ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ ਵੱਖ-ਵੱਖ ਮੈਟ੍ਰਿਕਸ ਜਿਵੇਂ ਗਲਤੀ ਦਰ, ਸਹੀਤਾ, ਰੀਕਾਲ, ਪ੍ਰੀਸੀਸ਼ਨ, ਜਾਂ MAE (ਮੀਨ ਐਬਸੋਲਿਊਟ ਐਰਰ) ਦੀ ਸਮੀਖਿਆ ਕਰਕੇ ਤਾਕਿ ਵੱਖ-ਵੱਖ ਪ੍ਰਦਰਸ਼ਨ ਦੇ ਮੈਟ੍ਰਿਕਸਾਂ ਵਿੱਚ ਵੱਖਰਾਪਨ ਸਮਝ ਆ ਸਕੇ। ਇੱਕ ਮੈਟ੍ਰਿਕ ਬਹੁਤ ਚੰਗਾ ਲੱਗ ਸਕਦਾ ਹੈ ਪਰ ਕਿਸੇ ਹੋਰ ਮੈਟ੍ਰਿਕ ਵਿੱਚ ਗਲਤੀਆਂ ਸਾਹਮਣੇ ਆ ਸਕਦੀਆਂ ਹਨ। ਨਾਲ ਨਾਲ, ਪੂਰੇ ਡੇਟਾਸੈੱਟ ਜਾਂ ਸਮੂਹਾਂ ਵਿੱਚ ਮੈਟ੍ਰਿਕਸਾਂ ਦੀ ਤੁਲਨਾ ਕਰਕੇ ਇਹ ਪਤਾ ਲੱਗਦਾ ਹੈ ਕਿ ਮਾਡਲ ਕਿੱਥੇ ਚੰਗਾ ਕਰ ਰਿਹਾ ਹੈ ਜਾਂ ਨਹੀਂ। ਇਹ ਵਿਸ਼ੇਸ਼ ਤੌਰ ਤੇ ਅਹੰਮੀਅਤ ਰੱਖਦਾ ਹੈ ਜਦੋਂ ਮਾਡਲ ਦੇ ਪ੍ਰਦਰਸ਼ਨ ਨੂੰ ਸਵੇਂਸਟੀਵ ਅਤੇ ਗੈਰ-ਸਵੇਂਸਟੀਵ ਫੀਚਰਾਂ (ਉਦਾਹਰਨ ਵਜੋਂ, ਮਰੀਜ਼ ਦੀ ਨਸਲ, ਲਿੰਗ ਜਾਂ ਉਮਰ) ਦੇ ਅਧਾਰ ‘ਤੇ ਦੇਖਿਆ ਜਾਵੇ ਤਾਂ सम्भਾਵਿਤ ਅਨਿਆਂਤਾ ਦਾ ਪਤਾ ਲੱਗ ਸਕੇ। ਉਦਾਹਰਨ ਵਜੋਂ, ਜੇ ਮਾਡਲ ਕਿਸੇ ਸਮੂਹ ਵਿੱਚ ਜੋ ਸਵੇਂਸਟੀਵ ਫੀਚਰਾਂ ਰੱਖਦਾ ਹੈ ਜ਼ਿਆਦਾ ਗਲਤ ਪਾਇਆ ਜਾਵੇ ਤਾਂ ਇਹ ਸੰਭਾਵਿਤ ਅਨਿਆਂਤਾ ਦਿਖਾ ਸਕਦਾ ਹੈ ਜੋ ਮਾਡਲ ਵਿੱਚ ਮੌਜੂਦ ਹੋ ਸਕਦੀ ਹੈ। -RAI ਡੈਸ਼ਬੋਰਡ ਦਾ ਮਾਡਲ ਝਲਕ ਕੰਪੋਨੈਂਟ ਸਿਰਫ਼ ਡਾਟਾ ਪ੍ਰਤੀਨਿਧਤਾ ਦੇ ਪ੍ਰਦਰਸ਼ਨ ਮਾਪਦੰਡਾਂ ਦੀ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰਨ ਵਿੱਚ ਮਦਦ ਨਹੀਂ ਕਰਦਾ, ਬਲਕਿ ਇਹ ਉਪਭੋਗਤਾਵਾਂ ਨੂੰ ਵੱਖ-ਵੱਖ ਸਮੂਹਾਂ ਵਿੱਚ ਮਾਡਲ ਦੇ ਵਿਹਾਰ ਦੀ ਤੁਲਨਾ ਕਰਨ ਦੀ ਯੋਗਤਾ ਦਿੰਦਾ ਹੈ। +RAI ਡੈਸ਼ਬੋਰਡ ਦਾ ਮਾਡਲ ਓਵਰਵਿਊ ਕਾਂਪੋਨੈਂਟ ਨਾ ਸਿਰਫ ਮਾਡਲ ਪ੍ਰਦਰਸ਼ਨ ਮੈਟ੍ਰਿਕਸਾਂ ਦੀ ਵਿਸ਼ਲੇਸ਼ਣਾ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ, ਸਗੋਂ ਵਰਤੋਂਕਾਰਾਂ ਨੂੰ ਵੱਖ-ਵੱਖ ਸਮੂਹਾਂ ਵਿੱਚ ਮਾਡਲ ਦੇ ਵਿਹਾਰ ਦੀ ਤੁਲਨਾ ਕਰਨ ਦੀ ਸਮਰਥਾ ਵੀ ਦਿੰਦਾ ਹੈ। -![ਡਾਟਾ ਸਮੂਹ - RAI ਡੈਸ਼ਬੋਰਡ ਵਿੱਚ ਮਾਡਲ ਝਲਕ](../../../../9-Real-World/2-Debugging-ML-Models/images/model-overview-dataset-cohorts.png) +![ਡੇਟਾਸੈੱਟ ਸਮੂਹ - ਮਾਡਲ ਓਵਰਵਿਊ RAI ਡੈਸ਼ਬੋਰਡ ਵਿੱਚ](../../../../translated_images/pa/model-overview-dataset-cohorts.dfa463fb527a35a0.webp) -ਕੰਪੋਨੈਂਟ ਦੀ ਫੀਚਰ-ਅਧਾਰਿਤ ਵਿਸ਼ਲੇਸ਼ਣ ਕਾਰਗੁਜ਼ਾਰੀ ਉਪਭੋਗਤਾਵਾਂ ਨੂੰ ਇੱਕ ਖਾਸ ਫੀਚਰ ਦੇ ਅੰਦਰ ਡਾਟਾ ਉਪ-ਸਮੂਹਾਂ ਨੂੰ ਸੰਕੁਚਿਤ ਕਰਨ ਦੀ ਯੋਗਤਾ ਦਿੰਦੀ ਹੈ, ਤਾਂ ਜੋ ਗ੍ਰੈਨੂਲਰ ਪੱਧਰ 'ਤੇ ਅਸਮਾਨਤਾਵਾਂ ਦੀ ਪਛਾਣ ਕੀਤੀ ਜਾ ਸਕੇ। ਉਦਾਹਰਣ ਲਈ, ਡੈਸ਼ਬੋਰਡ ਵਿੱਚ ਸਮਾਰਟ ਇੰਟੈਲੀਜੈਂਸ ਹੈ ਜੋ ਉਪਭੋਗਤਾ-ਚੁਣੇ ਫੀਚਰ ਲਈ ਆਪਣੇ ਆਪ ਸਮੂਹ ਬਣਾਉਂਦਾ ਹੈ (ਜਿਵੇਂ ਕਿ *"time_in_hospital < 3"* ਜਾਂ *"time_in_hospital >= 7"*)। ਇਹ ਉਪਭੋਗਤਾ ਨੂੰ ਵੱਡੇ ਡਾਟਾ ਸਮੂਹ ਤੋਂ ਇੱਕ ਖਾਸ ਫੀਚਰ ਨੂੰ ਅਲੱਗ ਕਰਨ ਦੀ ਯੋਗਤਾ ਦਿੰਦਾ ਹੈ, ਤਾਂ ਜੋ ਵੇਖਿਆ ਜਾ ਸਕੇ ਕਿ ਕੀ ਇਹ ਮਾਡਲ ਦੇ ਗਲਤ ਨਤੀਜਿਆਂ ਦਾ ਮੁੱਖ ਪ੍ਰਭਾਵਕ ਹੈ। +ਇਸ ਕਾਂਪੋਨੈਂਟ ਦੀ ਫੀਚਰ-ਅਧਾਰਿਤ ਵਿਸ਼ਲੇਸ਼ਣ ਯੋਗਤਾ ਵਰਤੋਂਕਾਰਾਂ ਨੂੰ ਇੱਕ ਵਿਸ਼ੇਸ਼ ਫੀਚਰ ਦੇ ਅੰਦਰ ਡੇਟਾ ਦੇ ਉਪ-ਸਮੂਹਾਂ ਨੂੰ ਨਿੱਘੜੀ ਪੱਧਰ ‘ਤੇ ਅਸਮਾਨਤਾਵਾਂ ਪਛਾਣਨ ਲਈ ਸੰਕੁਚਿਤ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦੀ ਹੈ। ਉਦਾਹਰਨ ਲਈ, ਡੈਸ਼ਬੋਰਡ ਵਿੱਚ ਬਿਲਟ ਇੰਟੈਲੀਜੈਂਸ ਹੈ ਜੋ ਵਰਤੋਂਕਾਰ-ਚੁਣੇ ਗਏ ਫੀਚਰ (ਜਿਵੇਂ *"time_in_hospital < 3"* ਜਾਂ *"time_in_hospital >= 7"*) ਲਈ ਆਪਣੇ ਆਪ ਸਮੂਹ ਬਣਾਉਂਦਾ ਹੈ। ਇਹ ਵਰਤੋਂਕਾਰ ਨੂੰ ਵੱਡੇ ਡੇਟਾ ਸਮੂਹ ਤੋਂ ਕਿਸੇ ਨਿਰੀਕਰਨ ਯੋਗ ਫੀਚਰ ਨੂੰ ਇਕਾਂਤ ਕਰਕੇ ਦੇਖਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ ਕਿ ਉਹ ਮਾਡਲ ਦੇ ਗਲਤ ਨਤੀਜਿਆਂ ਦਾ ਮੁੱਖ ਕਾਰਕ ਹੈ ਕਿ ਨਹੀਂ। -![ਫੀਚਰ ਸਮੂਹ - RAI ਡੈਸ਼ਬੋਰਡ ਵਿੱਚ ਮਾਡਲ ਝਲਕ](../../../../9-Real-World/2-Debugging-ML-Models/images/model-overview-feature-cohorts.png) +![ਫੀਚਰ ਸਮੂਹ - ਮਾਡਲ ਓਵਰਵਿਊ RAI ਡੈਸ਼ਬੋਰਡ](../../../../translated_images/pa/model-overview-feature-cohorts.c5104d575ffd0c80.webp) -ਮਾਡਲ ਝਲਕ ਕੰਪੋਨੈਂਟ ਦੋ ਕਿਸਮਾਂ ਦੇ ਅਸਮਾਨਤਾ ਮਾਪਦੰਡਾਂ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ: +ਮਾਡਲ ਓਵਰਵਿਊ ਕਾਂਪੋਨੈਂਟ ਦੋ ਕਿਸਮਾਂ ਦੇ ਅਸਮਾਨਤਾ ਮੈਟ੍ਰਿਕਸਾਂ ਦੇ ਸਮਰਥਕ ਹੈ: -**ਮਾਡਲ ਪ੍ਰਦਰਸ਼ਨ ਵਿੱਚ ਅਸਮਾਨਤਾ**: ਇਹ ਮਾਪਦੰਡਾਂ ਡਾਟਾ ਦੇ ਉਪ-ਸਮੂਹਾਂ ਵਿੱਚ ਚੁਣੇ ਗਏ ਪ੍ਰਦਰਸ਼ਨ ਮਾਪਦੰਡ ਦੇ ਮੁੱਲਾਂ ਵਿੱਚ ਅਸਮਾਨਤਾ (ਫਰਕ) ਦੀ ਗਣਨਾ ਕਰਦੇ ਹਨ। ਕੁਝ ਉਦਾਹਰਣ: +**ਮਾਡਲ ਪ੍ਰਦਰਸ਼ਨ ਵਿੱਚ ਅਸਮਾਨਤਾ**: ਇਹ ਮੈਟ੍ਰਿਕਸ ਚੁਣੇ ਗਏ ਪ੍ਰਦਰਸ਼ਨ ਮੈਟ੍ਰਿਕਸ ਦੇ ਮੁੱਲਾਂ ਵਿੱਚ ਡੇਟਾ ਦੇ ਉਪ-ਸਮੂਹਾਂ ਵਿਚਕਾਰ ਅੰਤਰ (ਫਰਕ) ਦਾ ਹਿਸਾਬ ਲਗਾਉਂਦੇ ਹਨ। ਕੁਝ ਉਦਾਹਰਨਾਂ ਹਨ: * ਸਹੀਤਾ ਦਰ ਵਿੱਚ ਅਸਮਾਨਤਾ * ਗਲਤੀ ਦਰ ਵਿੱਚ ਅਸਮਾਨਤਾ -* ਪ੍ਰਿਸੀਸ਼ਨ ਵਿੱਚ ਅਸਮਾਨਤਾ -* ਰਿਕਾਲ ਵਿੱਚ ਅਸਮਾਨਤਾ -* Mean Absolute Error (MAE) ਵਿੱਚ ਅਸਮਾਨਤਾ +* ਪ੍ਰੀਸੀਸ਼ਨ ਵਿੱਚ ਅਸਮਾਨਤਾ +* ਰੀਕਾਲ ਵਿੱਚ ਅਸਮਾਨਤਾ +* ਮੀਨ ਐਬਸੋਲਿਊਟ ਐਰਰ (MAE) ਵਿੱਚ ਅਸਮਾਨਤਾ -**ਚੋਣ ਦਰ ਵਿੱਚ ਅਸਮਾਨਤਾ**: ਇਹ ਮਾਪਦੰਡ ਉਪ-ਸਮੂਹਾਂ ਵਿੱਚ ਚੋਣ ਦਰ (ਪਸੰਦੀਦਾ ਅਨੁਮਾਨ) ਵਿੱਚ ਫਰਕ ਨੂੰ ਸ਼ਾਮਲ ਕਰਦਾ ਹੈ। ਇਸ ਦਾ ਇੱਕ ਉਦਾਹਰਣ ਲੋਨ ਅਪ੍ਰੂਵਲ ਦਰ ਵਿੱਚ ਅਸਮਾਨਤਾ ਹੈ। ਚੋਣ ਦਰ ਦਾ ਮਤਲਬ ਹੈ ਕਿ ਹਰ ਵਰਗ ਵਿੱਚ ਡਾਟਾ ਪਾਇੰਟਾਂ ਦਾ ਅੰਸ਼ ਜੋ 1 ਵਜੋਂ ਵਰਗਬੱਧ ਕੀਤਾ ਗਿਆ ਹੈ (ਬਾਈਨਰੀ ਵਰਗਬੱਧਤਾ ਵਿੱਚ) ਜਾਂ ਅਨੁਮਾਨ ਮੁੱਲਾਂ ਦਾ ਵੰਡ (ਰੈਗਰੈਸ਼ਨ ਵਿੱਚ)। +**ਚੁਣਾਈ ਦਰ ਵਿੱਚ ਅਸਮਾਨਤਾ**: ਇਹ ਮੈਟ੍ਰਿਕ ਭਿੰਨ-ਭਿੰਨ ਸਮੂਹਾਂ ਵਿੱਚ ਚੁਣਾਈ ਦਰ (ਪੱਖਪਾਤੀ ਭਵਿੱਖਵਾਣੀ) ਵਿੱਚ ਅੰਤਰ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ। ਉਦਾਹਰਨ ਲਈ, ਲੋਨ मंजੂਰੀ ਦਰ ਵਿੱਚ ਅਸਮਾਨਤਾ। ਚੁਣਾਈ ਦਰ ਦਾ ਅਰਥ ਹੈ ਹਰ ਵਰਗੀ ਵਿੱਚ ਡੇਟਾ ਪਾਇੰਟਾਂ ਦਾ ਉਹ ਹਿੱਸਾ ਜਿਹੜਾ 1 (ਬਾਈਨਰੀ ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਵਿੱਚ) ਜਾਂ ਪ੍ਰੇਡੀਕਸ਼ਨ ਮੁੱਲਾਂ ਦੀ ਵੰਡ (ਰੇਗ੍ਰੈਸ਼ਨ ਵਿੱਚ) ਦੇ ਤੌਰ ‘ਤੇ ਵਰਗੀਕ੍ਰਿਤ ਕੀਤਾ ਗਿਆ ਹੋਵੇ। -## ਡਾਟਾ ਵਿਸ਼ਲੇਸ਼ਣ +## ਡੇਟਾ ਵਿਸ਼ਲੇਸ਼ਣ -> "ਜੇ ਤੁਸੀਂ ਡਾਟਾ ਨੂੰ ਕਾਫ਼ੀ ਲੰਮੇ ਸਮੇਂ ਤੱਕ ਪੀੜਤ ਕਰੋ, ਤਾਂ ਇਹ ਕੁਝ ਵੀ ਸਵੀਕਾਰ ਕਰ ਲਵੇਗਾ" - ਰੋਨਾਲਡ ਕੋਸ +> "ਜੇ ਤੁਸੀਂ ਡੇਟਾ ਨੂੰ ਕਾਫੀ ਦੇਰ ਤਕ ਤਕਲੀਫ਼ ਦਿੰਦੇ ਰਹੋ, ਤਾਂ ਇਹ ਕਿਸੇ ਵੀ ਗੱਲ ਦਾ ਇਜ਼ਹਾਰ ਕਰੇਗਾ" - ਰੋਨਾਲਡ ਕੋਸ -ਇਹ ਬਿਆਨ ਕਾਫ਼ੀ ਅਤਿ-ਵਾਦੀ ਲੱਗਦਾ ਹੈ, ਪਰ ਇਹ ਸੱਚ ਹੈ ਕਿ ਡਾਟਾ ਨੂੰ ਕਿਸੇ ਵੀ ਨਤੀਜੇ ਦਾ ਸਮਰਥਨ ਕਰਨ ਲਈ ਹੇਰ-ਫੇਰ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਅਜਿਹੀ ਹੇਰ-ਫੇਰ ਕਈ ਵਾਰ ਅਣਜਾਣੇ ਵਿੱਚ ਹੋ ਸਕਦੀ ਹੈ। ਇੱਕ ਮਨੁੱਖ ਵਜੋਂ, ਸਾਡੇ ਵਿੱਚ ਸਾਰਿਆਂ ਵਿੱਚ ਪੱਖਪਾਤ ਹੁੰਦਾ ਹੈ, ਅਤੇ ਅਕਸਰ ਇਹ ਜਾਣਨਾ ਮੁਸ਼ਕਲ ਹੁੰਦਾ ਹੈ ਕਿ ਤੁਸੀਂ ਡਾਟਾ ਵਿੱਚ ਪੱਖਪਾਤ ਕਦੋਂ ਸ਼ਾਮਲ ਕਰ ਰਹੇ ਹੋ। AI ਅਤੇ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਵਿੱਚ ਨਿਰਪੱਖਤਾ ਦੀ ਗਰੰਟੀ ਦੇਣਾ ਇੱਕ ਜਟਿਲ ਚੁਣੌਤੀ ਬਣੀ ਰਹੀ ਹੈ। +ਇਹ ਬਿਆਨ ਕਾਫੀ ਕਠੋਰ ਸੁਣਾਈ ਦੇਂਦਾ ਹੈ, ਪਰ ਇਹ ਸੱਚ ਹੈ ਕਿ ਡੇਟਾ ਨੂੰ ਕਿਸੇ ਵੀ ਨਤੀਜੇ ਦੇ ਹੱਕ ਵਿੱਚ ਤਬਦੀਲ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਅਜਿਹਾ ਕਈ ਵਾਰੀ ਬਿਨਾਂ ਇਰਾਦੇ ਵੀ ਹੁੰਦਾ ਹੈ। ਮਨੁੱਖੀ ਹੋਣ ਦੇ ਨਾਤੇ ਸਾਡੀ ਆਪਣੀ ਪੱਖਪਾਤੀ ਹੁੰਦੀ ਹੈ ਅਤੇ ਇਹ ਜਾਣਣਾ ਮੁਸ਼ਕਲ ਹੁੰਦਾ ਹੈ ਕਿ ਤੁਹਾਡੇ ਡੇਟਾ ਵਿੱਚ ਪੱਖਪਾਤ ਕਿਵੇਂ ਆ ਰਿਹਾ ਹੈ। AI ਅਤੇ ਮਸ਼ੀਨ ਲਰਣਿੰਗ ਵਿੱਚ ਨਿਆਂਸੂਚਕਤਾ ਬਰਕਾਰ ਰੱਖਣਾ ਇੱਕ ਕਠਿਨ ਚੁਣੌਤੀ ਹੈ। -ਡਾਟਾ ਰਵਾਇਤੀ ਮਾਡਲ ਪ੍ਰਦਰਸ਼ਨ ਮਾਪਦੰਡਾਂ ਲਈ ਇੱਕ ਵੱਡਾ ਅੰਧਾ ਖੇਤਰ ਹੈ। ਤੁਹਾਡੇ ਕੋਲ ਉੱਚ ਸਹੀਤਾ ਸਕੋਰ ਹੋ ਸਕਦੇ ਹਨ, ਪਰ ਇਹ ਹਮੇਸ਼ਾ ਤੁਹਾਡੇ ਡਾਟਾ ਸੈੱਟ ਵਿੱਚ ਅਧਾਰਭੂਤ ਡਾਟਾ ਪੱਖਪਾਤ ਨੂੰ ਪ੍ਰਤੀਬਿੰਬਿਤ ਨਹੀਂ ਕਰਦੇ। ਉਦਾਹਰਣ ਲਈ, ਜੇਕਰ ਇੱਕ ਕੰਪਨੀ ਦੇ ਕਰਮਚਾਰੀਆਂ ਦੇ ਡਾਟਾ ਸੈੱਟ ਵਿੱਚ 27% ਔਰਤਾਂ ਕਾਰਜਕਾਰੀ ਪਦਾਂ 'ਤੇ ਹਨ ਅਤੇ 73% ਪੁਰਸ਼ ਉਸੇ ਪੱਧਰ 'ਤੇ ਹਨ, ਤਾਂ ਇਸ ਡਾਟਾ 'ਤੇ ਤਿਆਰ ਕੀਤਾ ਗਿਆ ਨੌਕਰੀ ਵਿਗਿਆਪਨ AI ਮਾਡਲ ਮੁੱਖ ਤੌਰ 'ਤੇ ਪੁਰਸ਼ ਦਰਸ਼ਕਾਂ ਨੂੰ ਉੱਚ ਪੱਧਰ ਦੀਆਂ ਨੌਕਰੀਆਂ ਲਈ ਟਾਰਗਟ ਕਰ ਸਕਦਾ ਹੈ। ਇਸ ਡਾਟਾ ਵਿੱਚ ਇਹ ਅਸਮਾਨਤਾ ਮਾਡਲ ਦੇ ਅਨੁਮਾਨ ਨੂੰ ਇੱਕ ਲਿੰਗ ਨੂੰ ਵਧੇਰੇ ਤਰਜੀਹ ਦੇਣ ਲਈ ਝੁਕਾ ਦਿੰਦੀ ਹੈ। ਇਹ ਨਿਰਪੱਖਤਾ ਦੀ ਸਮੱਸਿਆ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ ਜਿੱਥੇ AI ਮਾਡਲ ਵਿੱਚ ਲਿੰਗ ਪੱਖਪਾਤ ਹੈ। +ਡੇਟਾ ਰਵਾਇਤੀ ਮਾਡਲ ਪ੍ਰਦਰਸ਼ਨ ਮੈਟ੍ਰਿਕਸ ਲਈ ਇੱਕ ਵੱਡਾ ਅੰਧਕਾਰ ਖੇਤਰ ਹੈ। ਤੁਹਾਡੇ ਕੋਲ ਉੱਚ ਸਹੀਤਾ ਸਕੋਰ ਹੋ ਸਕਦਾ ਹੈ, ਪਰ ਇਹ ਸਦਾਈ ਤੁਹਾਡੇ ਡੇਟਾਸੈੱਟ ਵਿੱਚ ਹੋ ਸਕਣ ਵਾਲੇ ਪੱਖਪਾਤ ਨੂੰ ਦਰਸਾਉਂਦਾ ਨਹੀਂ। ਉਦਾਹਰਨ ਵਜੋਂ, ਜੇਕਰ ਕਰਮਚਾਰੀਆਂ ਦੇ ਡੇਟਾਸੈੱਟ ਵਿੱਚ 27% ਮਹਿਲਾਵਾਂ ਸਾਂਭਣ ਵਾਲੀਆਂ ਪੋਜ਼ੀਸ਼ਨਾਂ ਤੇ ਹਨ ਅਤੇ 73% ਪੁਰਸ਼ ਉਸੇ ਪੱਧਰ ਤੇ ਹਨ, ਤਾਂ ਇਸ ਡੇਟਾ ਤੇ ਤਿਆਰ ਕੀਤਾ ਗਏ ਸੌਫਟਵੇਅਰ ਮਾਡਲ ਵੱਡੇ ਪੱਧਰ ਦੀਆਂ ਨੌਕਰੀਆਂ ਲਈ ਜ਼ਿਆਦਾਤਰ ਪੁਰਸ਼ਾਂ ਨੂੰ ਨਿਸ਼ਾਨਾ ਬਣਾ ਸਕਦਾ ਹੈ। ਇਸ ਵਾਰਗੇ ਡੇਟਾ ਵਿੱਚ ਅਸਮਤੁਲਨ ਮਾਡਲ ਦੇ ਨਤੀਜੇ ਨੂੰ ਇਕ ਲਿੰਗ ਲਈ ਪੱਖਪਾਤੀ ਬਣਾ ਦਿੰਦਾ ਹੈ। ਇਹ ਨਿਆਂਸੂਚਕਤਾ ਦੀ ਸਮੱਸਿਆ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ ਜਿਥੇ AI ਮਾਡਲ ਵਿੱਚ ਲਿੰਗ ਪੱਖਪਾਤ ਹੁੰਦਾ ਹੈ। -RAI ਡੈਸ਼ਬੋਰਡ 'ਤੇ ਡਾਟਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕੰਪੋਨੈਂਟ ਉਹ ਖੇਤਰਾਂ ਦੀ ਪਛਾਣ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ ਜਿੱਥੇ ਡਾਟਾ ਸੈੱਟ ਵਿੱਚ ਵਧੇਰੇ ਜਾਂ ਘੱਟ ਪ੍ਰਤੀਨਿਧਤਾ ਹੈ। ਇਹ ਉਪਭੋਗਤਾਵਾਂ ਨੂੰ ਡ -- **ਜਿਆਦਾ ਜਾਂ ਘੱਟ ਪ੍ਰਤੀਨਿਧਤਾ**। ਇਹ ਵਿਚਾਰ ਹੈ ਕਿ ਕੁਝ ਸਮੂਹ ਕਿਸੇ ਖਾਸ ਪੇਸ਼ੇ ਵਿੱਚ ਨਹੀਂ ਦਿਖਾਈ ਦਿੰਦੇ, ਅਤੇ ਕੋਈ ਵੀ ਸੇਵਾ ਜਾਂ ਫੰਕਸ਼ਨ ਜੋ ਇਸਨੂੰ ਵਧਾਉਂਦਾ ਹੈ, ਉਹ ਨੁਕਸਾਨ ਪਹੁੰਚਾਉਣ ਵਿੱਚ ਯੋਗਦਾਨ ਪਾਉਂਦਾ ਹੈ। +RAI ਡੈਸ਼ਬੋਰਡ 'ਤੇ ਡੇਟਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਾਂਪੋਨੈਂਟ ਮਦਦ ਕਰਦਾ ਹੈ ਇਹ ਪਛਾਣ ਕਰਨ ਵਿੱਚ ਕਿ ਡੇਟਾਸੈੱਟ ਵਿੱਚ ਕਿੱਥੇ ਓਵਰ-ਪ੍ਰਸਤੁਤੀਸ਼ੀਲਤਾ ਅਤੇ ਅੰਡਰ-ਪ੍ਰਸਤੁਤੀਸ਼ੀਲਤਾ ਹਨ। ਇਹ ਵਰਤੋਂਕਾਰਾਂ ਨੂੰ ਗਲਤੀ ਅਤੇ ਨਿਆਂਸੂਚਕਤਾ ਸਮੱਸਿਆਵਾਂ ਦੇ ਮੂਲ ਕਾਰਨ ਦੀ ਜਾਂਚ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ ਜੋ ਡੇਟਾ ਅਸਮਤੁਲਨ ਜਾਂ ਖਾਸ ਡੇਟਾ ਸਮੂਹ ਦੀ ਘੱਟ ਪ੍ਰਸਤੁਤੀਸ਼ੀਲਤਾ ਕਾਰਨ ਹੁੰਦੀਆਂ ਹਨ। ਇਹ ਵਰਤੋਂਕਾਰਾਂ ਨੂੰ ਇਹ ਸਮਰਥਾ ਦਿੰਦਾ ਹੈ ਕਿ ਉਹ ਭਵਿੱਖਵਾਣੀ ਅਤੇ ਹਕੀਕਤੀ ਨਤੀਜਿਆਂ, ਗਲਤੀ ਸਮੂਹਾਂ ਅਤੇ ਖਾਸ ਫੀਚਰਾਂ ਦੇ ਆਧਾਰ ‘ਤੇ ਡੇਟਾਸੈੱਟ ਦੀ ਗਰਾਫਿਕ ਸਰਵੇਖਣ ਕਰ ਸਕਣ। ਕਈ ਵਾਰੀ ਅੰਡਰ-ਪ੍ਰਸਤੁਤ ਡੇਟਾ ਸਮੂਹ ਪਣ ਇਸ ਗੱਲ ਨੂੰ ਬਤਾਉਂਦਾ ਹੈ ਕਿ ਮਾਡਲ ਸਮਝਦਾਰੀ ਨਾਲ ਨਹੀਂ ਸਿੱਖ ਰਿਹਾ, ਇਸ ਲਈ ਗਲਤੀਆਂ ਵੱਧ ਹਨ। ਡੇਟਾ ਪੱਖਪਾਤ ਵਾਲਾ ਮਾਡਲ ਸਿਰਫ ਨਿਆਂਸੂਚਕਤਾ ਦੀ ਸਮੱਸਿਆ ਨਹੀਂ ਹੈ, ਸਗੋਂ ਦਿਖਾਉਂਦਾ ਹੈ ਕਿ ਮਾਡਲ ਸ਼ਾਮਿਲ ਕਰਨਯੋਗ ਅਤੇ ਭਰੋਸੇਯੋਗ ਨਹੀਂ ਹੈ। -### Azure RAI ਡੈਸ਼ਬੋਰਡ +![RAI ਡੈਸ਼ਬੋਰਡ ‘ਤੇ ਡੇਟਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਾਂਪੋਨੈਂਟ](../../../../translated_images/pa/dataanalysis-cover.8d6d0683a70a5c1e.webp) -[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 ਪ੍ਰਣਾਲੀ ਭਵਿੱਖਵਾਣੀ ਕਰਦੀ ਹੈ ਕਿ ਇੱਕ ਡਾਇਬਟੀਜ਼ ਮਰੀਜ਼ 30 ਦਿਨਾਂ ਵਿੱਚ ਹਸਪਤਾਲ ਵਾਪਸ ਆ ਸਕਦਾ ਹੈ, ਤਾਂ ਇਸ ਨੂੰ ਸਹਾਇਕ ਡੇਟਾ ਦੇਣਾ ਚਾਹੀਦਾ ਹੈ ਜਿਸ ਨੇ ਇਹ ਭਵਿੱਖਵਾਣੀ ਕਰਵਾਈ। ਇਹ ਸਹਾਇਕ ਡੇਟਾ ਸੂਚਕ ਪਾਰਦਰਸ਼ਤਾ ਲਿਆਉਂਦਾ ਹੈ ਜੋ ਡਾਕਟਰਾਂ ਜਾਂ ਹਸਪਤਾਲਾਂ ਨੂੰ ਬਿਹਤਰ ਫੈਸਲੇ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ। ਨਾਲ ਹੀ, ਇਹ ਸਮਝਾਉਣਾ ਕਿ ਮਾਡਲ ਨੇ ਕਿਸੇ ਵਿਅਕਤੀਗਤ ਮਰੀਜ਼ ਲਈ ਭਵਿੱਖਵਾਣੀ ਕਿਉਂ ਕੀਤੀ, ਸਿਹਤ ਸੰਬੰਧੀ ਨਿਯਮਾਂ ਨਾਲ ਜ਼ਿੰਮੇਵਾਰੀ ਜੋੜਦਾ ਹੈ। ਜਦੋਂ ਤੁਸੀਂ ਮਸ਼ੀਨ ਲਰਣਿੰਗ ਮਾਡਲਜ਼ ਨੂੰ ਇਸ ਤਰੀਕੇ ਨਾਲ ਵਰਤਦੇ ਹੋ ਜੋ ਲੋਕਾਂ ਦੀ ਜ਼ਿੰਦਗੀ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰਦੀ ਹੋਵੇ, ਤਾਂ ਇਹ ਬਹੁਤ ਜ਼ਰੂਰੀ ਹੈ ਕਿ ਤੁਸੀਂ ਸਮਝੋ ਅਤੇ ਸਮਝਾਓ ਕਿ ਮਾਡਲ ਦਾ ਵਿਹਾਰ ਕੀ ਚੀਜ਼ ਪ੍ਰਭਾਵਿਤ ਕਰ ਰਹੀ ਹੈ। ਮਾਡਲ ਦੀ ਵਿਆਖਿਆ ਅਤੇ ਬੂਝਣਯੋਗਤਾ ਹੇਠਾਂ ਦਿੱਤੀਆਂ ਸਥਿਤੀਆਂ ਵਿੱਚ ਸਵਾਲਾਂ ਦੇ ਜਵਾਬਾਂ ਵਿੱਚ ਮਦਦ ਕਰਦੀ ਹੈ: + +* ਮਾਡਲ ਡੀਬੱਗਿੰਗ: ਮੇਰਾ ਮਾਡਲ ਇਹ ਗਲਤੀ ਕਿਉਂ ਕਰਦਾ ਹੈ? ਮੈਂ ਆਪਣੇ ਮਾਡਲ ਨੂੰ ਕਿਵੇਂ ਸੁਧਾਰ ਕਰ ਸਕਦਾ ਹਾਂ? +* ਮਨੁੱਖ-AI ਸਹਿਯੋਗ: ਮੈਂ ਮਾਡਲ ਦੇ ਫੈਸਲਿਆਂ ਨੂੰ ਕਿਵੇਂ ਸਮਝਾਂ ਅਤੇ ਭਰੋਸਾ ਕਰਾਂ? +* ਨਿਯਮਕ ਅਨੁਕੂਲਤਾ: ਕੀ ਮੇਰਾ ਮਾਡਲ ਕਾਨੂੰਨੀ ਮਿਆਰਾਂ ਨੂੰ ਪੂਰਾ ਕਰਦਾ ਹੈ? + +RAI ਡੈਸ਼ਬੋਰਡ ਦਾ ਫੀਚਰ ਮਹੱਤਵ ਕਾਂਪੋਨੈਂਟ ਤੁਹਾਡੇ ਮਾਡਲਾਂ ਨੂੰ ਡੀਬੱਗ ਕਰਨ ਅਤੇ ਸਮਝਣ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ ਕਿ ਉਹ ਮਾਡਲ ਭਵਿੱਖਵਾਣੀ ਕਿਵੇਂ ਕਰਦਾ ਹੈ। ਇਹ ਮਸ਼ੀਨ ਲਰਣਿੰਗ ਮਾਹਿਰਾਂ ਅਤੇ ਫੈਸਲਾ-ਲੈਣ ਵਾਲਿਆਂ ਲਈ ਇੱਕ ਲਾਭਦਾਇਕ ਸੰਦ ਹੈ ਜੋ ਮਾਡਲ ਦੇ ਵਿਹਾਰ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰਨ ਵਾਲੇ ਫੀਚਰਾਂ ਨੂੰ ਸਮਝਾਉਣ ਅਤੇ ਦਿਖਾਉਣ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ, ਖਾਸ ਕਰਕੇ ਨਿਯਮਕ ਮਾਨਕਾਂ ਦੀ ਪਾਲਣਾ ਦੇ ਲਈ। ਵਰਤੋਂਕਾਰ ਗਲੋਬਲ ਅਤੇ ਸਥਾਨਕ ਵਿਆਖਿਆਵਾਂ ਨੂੰ ਵੀ ਖੋਜ ਸਕਦੇ ਹਨ, ਜੋ ਇਹ ਪ੍ਰਮਾਣਿਤ ਕਰਦੀਆਂ ਹਨ ਕਿ ਕਿਹੜੇ ਫੀਚਰ ਮਾਡਲ ਦੀ ਭਵਿੱਖਵਾਣੀ ਚਲਾਉਂਦੇ ਹਨ। ਗਲੋਬਲ ਵਿਆਖਿਆਵਾਂ ਉਹ ਸਿਖਰਲੇ ਫੀਚਰ ਹਨ ਜਿਨ੍ਹਾਂ ਨੇ ਮਾਡਲ ਦੀ ਕੁੱਲ ਭਵਿੱਖਵਾਣੀ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕੀਤਾ। ਸਥਾਨਕ ਵਿਆਖਿਆਵਾਂ ਦਿਖਾਉਂਦੀਆਂ ਹਨ ਕਿ ਕਿਸੇ ਇਕਲੌਤੇ ਕੇਸ ਲਈ ਮਾਡਲ ਨੇ ਭਵਿੱਖਵਾਣੀ ਕਿਵੇਂ ਕੀਤੀ। ਸਥਾਨਕ ਵਿਆਖਿਆਵਾਂ ਦੀ ਸਮੀਖਿਆ ਕਰਨਾ ਕਿਸੇ ਖਾਸ ਕੇਸ ਨੂੰ ਡੀਬੱਗ ਕਰਨ ਜਾਂ ਆਡਿਟ ਕਰਨ ਵਿੱਚ ਵੀ ਮਦਦ ਕਰਦਾ ਹੈ ਤਾਂ ਜੋ ਸਮਝਿਆ ਜਾ ਸਕੇ ਕਿ ਮਾਡਲ ਨੇ ਸਹੀ ਜਾਂ ਗਲਤ ਭਵਿੱਖਵਾਣੀ ਕਿਉਂ ਕੀਤੀ। + +![RAI ਡੈਸ਼ਬੋਰਡ ਦਾ ਫੀਚਰ ਮਹੱਤਵ ਕਾਂਪੋਨੈਂਟ](../../../../translated_images/pa/9-feature-importance.cd3193b4bba3fd4b.webp) + +* ਗਲੋਬਲ ਵਿਆਖਿਆਵਾਂ: ਉਦਾਹਰਨ ਲਈ, ਕਿਹੜੇ ਫੀਚਰ ਇੱਕ ਡਾਇਬਟੀਜ਼ ਹਸਪਤਾਲ ਦੀ ਵਾਪਸੀ ਮਾਡਲ ਦੇ ਕੁੱਲ ਵਿਹਾਰ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰਦੇ ਹਨ? +* ਸਥਾਨਕ ਵਿਆਖਿਆਵਾਂ: ਉਦਾਹਰਨ ਲਈ, ਇੱਕ 60 ਸਾਲ ਤੋਂ ਵੱਧ ਉਮਰ ਵਾਲੇ ਡਾਇਬਟੀਜ਼ ਮਰੀਜ਼ ਜੋ ਪਹਿਲਾਂ ਹਸਪਤਾਲ ਵਿੱਚ ਦਾਖਲ ਸੀ, ਇਹ ਕਿਉਂ ਭਵਿੱਖਵਾਣੀ ਕੀਤੀ ਗਈ ਕਿ ਉਹ 30 ਦਿਨਾਂ ਵਿੱਚ ਹਸਪਤਾਲ ਵਾਪਸ ਜਾਵੇਗਾ ਜਾਂ ਨਹੀਂ? + +ਮਾਡਲ ਦੀਆਂ ਵੱਖ-ਵੱਖ ਕੋਹੋਰਟਾਂ ਵਿੱਚ ਪ੍ਰਦਰਸ਼ਨ ਦੀ ਜਾਂਚ ਦੌਰਾਨ, ਫੀਚਰ ਮਹੱਤਵ ਦਿਖਾਉਂਦਾ ਹੈ ਕਿ ਕਿਸ ਪੱਧਰ ‘ਤੇ ਇੱਕ ਫੀਚਰ ਨੇ ਨਤੀਜਿਆਂ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕੀਤਾ। ਇਹ ਅਸਮਾਨਤਾਵਾਂ ਨੂੰ ਪ੍ਰਕਟ ਕਰਨ ਵਿੱਚ ਸਹਾਇਕ ਹੈ ਜਦੋਂ ਇੱਕ ਸਮੂਹ ਵਿੱਚ ਫੀਚਰ ਦੇ ਪ੍ਰਭਾਵ ਦਾ ਪੱਧਰ ਮਾਡਲ ਦੀਆਂ ਗਲਤ ਭਵਿੱਖਵਾਣੀਆਂ ਵਾਲੇ ਹੋਵੇ। ਫੀਚਰ ਮਹੱਤਵ ਤੁਹਾਨੂੰ ਦਿਖਾ ਸਕਦਾ ਹੈ ਕਿ ਕਿਸ ਮੂਲ ਵਿੱਚ ਇੱਕ ਫੀਚਰ ਮਾਡਲ ਦੇ ਨਤੀਜੇ ਨੂੰ ਸੁੰਦਰ ਜਾਂ ਨਕਾਰਤਮਕ ਰੂਪ ਵਿੱਚ ਪ੍ਰਭਾਵਿਤ ਕਰਦਾ ਹੈ। ਉਦਾਹਰਨ ਲਈ, ਜੇ ਮਾਡਲ ਨੇ ਗਲਤ ਭਵਿੱਖਵਾਣੀ ਕੀਤੀ ਹੈ, ਤਾਂ ਇਹ ਕਾਂਪੋਨੈਂਟ ਤੁਹਾਨੂੰ ਗਹਿਰਾਈ ਵਿੱਚ ਜਾ ਕੇ ਇਹ ਪਤਾ ਲਗਾਉਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ ਕਿ ਕਿਹੜੇ ਫੀਚਰ ਜਾਂ ਫੀਚਰ ਮੁੱਲਾਂ ਨੇ ਇਹ ਭਵਿੱਖਵਾਣੀ ਚਲਾਈ। ਇਹ ਪੱਧਰ ਸਿਰਫ ਡੀਬੱਗਿੰਗ ਵਿੱਚ ਨਹੀਂ, ਸਗੋਂ ਪਾਰਦਰਸ਼ਤਾ ਅਤੇ ਜ਼ਿੰਮੇਵਾਰੀ ਲਈ ਵੀ ਲਾਭਦਾਇਕ ਹੈ। ਅੰਤ ਵਿੱਚ, ਕਾਂਪੋਨੈਂਟ ਨਿਆਂਸੂਚਕਤਾ ਦੀਆਂ ਸਮੱਸਿਆਵਾਂ ਦੀ ਪਛਾਣ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰ ਸਕਦਾ ਹੈ। ਉਦਾਹਰਨ ਲਈ, ਜੇ ਕਿਸੇ ਸਵੇਂਸਟੀਵ ਫੀਚਰ ਜਿਵੇਂ ਕਿ ਨਸਲ ਜਾਂ ਲਿੰਗ ਦਾ ਬਹੁਤ ਪ੍ਰਭਾਵ ਹੈ ਮਾਡਲ ਦੀ ਭਵਿੱਖਵਾਣੀ ‘ਚ, ਤਾਂ ਇਹ ਮਾਡਲ ਵਿੱਚ ਨਸਲ ਜਾਂ ਲਿੰਗ ਪੱਖਪਾਤ ਦਾ ਸੰਕੇਤ ਹੋ ਸਕਦਾ ਹੈ। -ਸੰਭਾਵਿਤ ਅੰਕੜਿਆਂ ਜਾਂ ਡਾਟਾ ਪੱਖਪਾਤ ਨੂੰ ਪਹਿਲੇ ਹੀ ਰੋਕਣ ਲਈ, ਸਾਨੂੰ: +![ਫੀਚਰ ਮਹੱਤਵ](../../../../translated_images/pa/9-features-influence.3ead3d3f68a84029.webp) -- ਸਿਸਟਮਾਂ 'ਤੇ ਕੰਮ ਕਰਨ ਵਾਲੇ ਲੋਕਾਂ ਵਿੱਚ ਪਿਛੋਕੜ ਅਤੇ ਨਜ਼ਰੀਏ ਦੀ ਵਿਵਿਧਤਾ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ। -- ਅਜਿਹੇ ਡਾਟਾਸੈਟਾਂ ਵਿੱਚ ਨਿਵੇਸ਼ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ ਜੋ ਸਾਡੇ ਸਮਾਜ ਦੀ ਵਿਵਿਧਤਾ ਨੂੰ ਦਰਸਾਉਂਦੇ ਹਨ। -- ਪੱਖਪਾਤ ਦੀ ਪਛਾਣ ਅਤੇ ਠੀਕ ਕਰਨ ਦੇ ਬਿਹਤਰ ਤਰੀਕੇ ਵਿਕਸਿਤ ਕਰਨੇ ਚਾਹੀਦੇ ਹਨ ਜਦੋਂ ਇਹ ਵਾਪਰਦਾ ਹੈ। +ਜਦੋਂ ਤੁਹਾਨੂੰ ਬੂਝਣਯੋਗਤਾ ਦੀ ਲੋੜ ਹੋਵੇ ਤਾਂ ਇਸਦੀ ਵਰਤੋਂ ਕਰੋ: -ਅਸਲੀ ਜ਼ਿੰਦਗੀ ਦੇ ਸਥਿਤੀਆਂ ਬਾਰੇ ਸੋਚੋ ਜਿੱਥੇ ਮਾਡਲ-ਬਿਲਡਿੰਗ ਅਤੇ ਵਰਤੋਂ ਵਿੱਚ ਅਨਿਆਇਤਾ ਸਪਸ਼ਟ ਹੈ। ਹੋਰ ਕੀ ਵਿਚਾਰ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ? +* ਇਹ ਨਿਰਣੇ ਕਰੋ ਕਿ ਤੁਹਾਡੇ AI ਸਿਸਟਮ ਦੀਆਂ ਭਵਿੱਖਵਾਣੀਆਂ ਕਿੰਨੀ ਭਰੋਸੇਯੋਗ ਹਨ ਫੀਚਰਾਂ ਨੂੰ ਸਮਝ ਕੇ ਜੋ ਸਭ ਤੋਂ ਜ਼ਿਆਦਾ ਮਹੱਤਵਪੂਰਨ ਹੁੰਦੇ ਹਨ। +* ਆਪਣੇ ਮਾਡਲ ਨੂੰ ਪਹਿਲਾਂ ਸਮਝ ਕੇ ਅਤੇ ਇਹ ਪਛਾਣ ਕੇ ਕਿ ਕੀ ਮਾਡਲ ਸਹੀ ਫੀਚਰਾਂ ਨੂੰ ਵਰਤ ਰਿਹਾ ਹੈ ਜਾਂ ਸਿਰਫ ਗਲਤ ਤਲੁਕਾਤਾਂ ਦੀ ਵਰਤੋਂ ਕਰ ਰਿਹਾ ਹੈ, ਡੀਬੱਗਿੰਗ ਕਰਨਾ ਸ਼ੁਰੂ ਕਰੋ। +* ਸੰਭਾਵਿਤ ਅਨਿਆਂਤਾ ਦੇ ਸਰੋਤ ਖੋਲ੍ਹੋ ਇਹ ਜਾਣ ਕੇ ਕਿ ਕੀ ਮਾਡਲ ਭਵਿੱਖਵਾਣੀਆਂ ਸਵੇਂਸਟੀਵ ਫੀਚਰਾਂ ਉੱਤੇ ਆਧਾਰਿਤ ਕਰ ਰਿਹਾ ਹੈ ਜਾਂ ਉਹਨਾਂ ਨਾਲ ਗਹਿਰਾਈ ਨਾਲ ਜੁੜੇ ਹੋਏ ਫੀਚਰਾਂ ਉੱਤੇ। +* ਆਪਣੇ ਮਾਡਲ ਦੇ ਫੈਸਲਿਆਂ ਵਿੱਚ ਉਪਭੋਗਤਾ ਭਰੋਸਾ ਬਣਾਓ ਸਥਾਨਕ ਵਿਆਖਿਆਵਾਂ ਤਿਆਰ ਕਰਕੇ ਜੋ ਨਤੀਜਿਆਂ ਨੂੰ ਦਰਸਾਉਂਦੀਆਂ ਹਨ। +* AI ਪ੍ਰਣਾਲੀ ਦੀ ਨਿਯਮਕ ਜਾਂਚ ਪੂਰੀ ਕਰੋ ਮਾਡਲਾਂ ਨੂੰ ਮਨਜ਼ੂਰੀ ਦੇਣ ਅਤੇ ਮਨੁੱਖਾਂ ‘ਤੇ ਮਾਡਲ ਫੈਸਲਿਆਂ ਦੇ ਪ੍ਰਭਾਵ ਨੂੰ ਨਿਗਰਾਨੀ ਕਰਨ ਲਈ। + +## ਨਤੀਜਾ + +ਸਾਰੇ RAI ਡੈਸ਼ਬੋਰਡ ਕੰਪੋਨੈਂਟ ਪ੍ਰਯੋਗਕਾਰੀ ਸੰਦ ਹਨ ਜੋ ਤੁਹਾਨੂੰ ਮਸ਼ੀਨ ਲਰਣਿੰਗ ਮਾਡਲ ਬਣਾਉਣ ਵਿੱਚ ਮਦਦ ਕਰਦੇ ਹਨ ਜੋ ਸਮਾਜ ਲਈ ਘੱਟ ਨੁਕਸਾਨਦਾਇਕ ਅਤੇ ਜ਼ਿਆਦਾ ਭਰੋਸੇਯੋਗ ਹੁੰਦੇ ਹਨ। ਇਹ ਮਨੁੱਖੀ ਹੱਕਾਂ ਦੀ ਰੱਖਿਆ, ਕੁਝ ਸਮੂਹਾਂ ਦਾ ਭੇਦਭਾਵ ਜਾਂ ਜੀਵਨ ਦੇ ਮੌਕੇ ਤੋਂ ਬਾਹਰ ਰੱਖਣ ਅਤੇ ਸਰੀਰਕ ਜਾਂ ਮਨੋਵਿਗਿਆਨਕ ਚੋਟ ਦੇ ਖ਼ਤਰੇ ਨੂੰ ਘਟਾਉਂਦਾ ਹੈ। ਇਹ ਤੁਹਾਡੇ ਮਾਡਲ ਦੇ ਫੈਸਲਿਆਂ ਵਿੱਚ ਭਰੋਸਾ ਬਣਾਉਂਦਾ ਹੈ ਸਥਾਨਕ ਵਿਆਖਿਆਵਾਂ ਤਿਆਰ ਕਰਕੇ ਜੋ ਉਹਨਾਂ ਦੇ ਨਤੀਜੇ ਦਰਸਾਉਂਦੀਆਂ ਹਨ। ਕੁਝ ਸੰਭਾਵਿਤ ਨੁਕਸਾਨ ਇਸ ਤਰ੍ਹਾਂ ਵਰਗੀਕ੍ਰਿਤ ਕੀਤੇ ਜਾ ਸਕਦੇ ਹਨ: + +- **ਵੰਡ**, ਜੇ ਲਿੰਗ ਜਾਂ ਨਸਲ ਉਦਾਹਰਨ ਵਜੋਂ ਕਿਸੇ ਹੋਰ ਨਾਲੋਂ ਜ਼ਿਆਦਾ ਪਸੰਦ ਕੀਤਾ ਜਾਵੇ। +- **ਸੇਵਾ ਦੀ ਗੁਣਵੱਤਾ**। ਜੇ ਤੁਸੀਂ ਡੇਟਾ ਇੱਕ ਖਾਸ ਦ੍ਰਿਸ਼ਟਕੋਣ ਲਈ ਸਿਖਾਉਂਦੇ ਹੋ ਪਰ ਹਕੀਕਤ ਕਾਫੀ ਜ਼ਿਆਦਾ ਜਟਿਲ ਹੈ, ਤਾਂ ਇਸ ਨਾਲ ਖਰਾਬ ਪ੍ਰਦਰਸ਼ਨ ਵਾਲੀ ਸੇਵਾ ਹੁੰਦੀ ਹੈ। +- **ਸਟੀਰੀਓਟਾਈਪਿੰਗ**। ਕਿਸੇ ਸਮੂਹ ਨੂੰ ਪਹਿਲਾਂ ਨਿਰਧਾਰਤ ਖਾਸੀਅਤਾਂ ਨਾਲ ਜੋੜਨਾ। + +- **ਨਿੰਦਾ**। ਕਿਸੇ ਚੀਜ਼ ਜਾਂ ਕਿਸੇ ਵਿਅਕਤੀ ਦੀ ਨਿਆਂਸੰਗਤ ਤੌਰ 'ਤੇ ਆਲੋਚਨਾ ਕਰਨਾ ਅਤੇ ਲੇਬਲ ਕਰਨਾ। +- **ਅਧਿਕ ਜਾਂ ਘੱਟ ਪ੍ਰਤੀਨਿਧਿਤ੍ਵ**। ਇਸ ਵਿਚਾਰ ਦਾ ਮਤਲਬ ਹੈ ਕਿ ਇੱਕ ਨਿਰਧਾਰਿਤ ਗਰੁੱਪ ਕਿਸੇ ਨਿਰਧਾਰਿਤ ਪੇਸ਼ੇ ਵਿਚ ਨਹੀਂ ਦਿਖਾਈ ਦੇਂਦਾ, ਅਤੇ ਕੋਈ ਵੀ ਸੇਵਾ ਜਾਂ ਫੰਕਸ਼ਨ ਜੋ ਇਸ ਨੂੰ ਬਰਕਰਾਰ ਰੱਖਤਾ ਹੈ, ਉਹ ਨੁਕਸਾਨ ਪਹੁੰਚਾਉਣ ਵਿਚ ਯੋਗਦਾਨ ਪਾ ਰਿਹਾ ਹੈ। + +### ਐਜ਼ੂਅਰ RAI ਡੈਸ਼ਬੋਰਡ + +[ਐਜ਼ੂਅਰ RAI ਡੈਸ਼ਬੋਰਡ](https://learn.microsoft.com/en-us/azure/machine-learning/concept-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) ਖੁੱਲ੍ਹੇ ਸ੍ਰੋਤ ਸੰਦਾਂ 'ਤੇ ਬਣਾਇਆ ਗਿਆ ਹੈ ਜੋ ਪ੍ਰਮੁੱਖ ਸ਼ੈੱਧਾਂਤਿਕ ਸਥਾਪਨਾਵਾਂ ਅਤੇ ਸੰਗਠਨਾਂ ਦੁਆਰਾ ਵਿਕਸਿਤ ਕੀਤੇ ਗਏ ਹਨ, ਜਿਸ ਵਿੱਚ ਮਾਇਕਰੋਸੌਫਟ ਵੀ ਸ਼ਾਮਿਲ ਹੈ, ਇਹ ਡੇਟਾ ਵਿਗਿਆਨੀ ਅਤੇ AI ਵਿਕਾਸਕਾਰਾਂ ਲਈ ਮਾਡਲ ਦੇ ਵਿਹਾਰ ਨੂੰ ਵਧੀਆ ਤਰੀਕੇ ਨਾਲ ਸਮਝਣ, ਅਣਚਾਹੀਆਂ ਸਮੱਸਿਆਵਾਂ ਦੀ ਪਹਿਚਾਣ ਅਤੇ ਉਨ੍ਹਾਂ ਨੂੰ ਦੂਰ ਕਰਨ ਵਿੱਚ ਮਦਦਗਾਰ ਹਨ। + +- ਵੱਖ-ਵੱਖ ਹਿੱਸਿਆਂ ਨੂੰ ਕਿਵੇਂ ਵਰਤਣਾ ਹੈ, ਇਹ ਜਾਣਨ ਲਈ RAI ਡੈਸ਼ਬੋਰਡ ਦੇ [ਡਾਕਯੂਮੈਂਟਸ](https://learn.microsoft.com/en-us/azure/machine-learning/how-to-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) ਨੂੰ ਦੇਖੋ। + +- ਐਜ਼ੂਅਰ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਵਿੱਚ ਹੋਰ ਜ਼ਿੰਮੇਵਾਰ AI ਸਥਿਤੀਆਂ ਦੀ ਡਿਬੱਗਿੰਗ ਲਈ ਕੁਝ RAI ਡੈਸ਼ਬੋਰਡ [ਨਮੂਨਾ ਨੋਟਬੁਕ](https://github.com/Azure/RAI-vNext-Preview/tree/main/examples/notebooks) ਵੇਖੋ। + +--- +## 🚀 ਚੁਣੌਤੀ + +ਪਹਿਲਾਂ ਹੀ ਸੰਖਿਆਤੀ ਜਾਂ ਡੇਟਾ ਪੱਖਪਾਤ ਨੂੰ ਰੋਕਣ ਲਈ, ਸਾਨੂੰ ਇਹ ਕਰਨ ਦੀ ਲੋੜ ਹੈ: -## [ਪੋਸਟ-ਲੈਕਚਰ ਕਵਿਜ਼](https://ff-quizzes.netlify.app/en/ml/) -## ਸਮੀਖਿਆ ਅਤੇ ਸਵੈ-ਅਧਿਐਨ +- ਜਿਹੜੇ ਵਿਅਕਤੀ ਪ੍ਰਣਾਲੀਆਂ 'ਤੇ ਕੰਮ ਕਰ ਰਹੇ ਹਨ, ਉਹਨਾਂ ਵਿੱਚ ਵੱਖ-ਵੱਖ ਪਿਛੋਕੜ ਅਤੇ ਨਜ਼ਰੀਏ ਹੋਣ ਚਾਹੀਦੇ ਹਨ। +- ਅਜਿਹੇ ਡੇਟਾਸੈੱਟ ਵਿੱਚ ਨਿਵੇਸ਼ ਕਰੋ ਜੋ ਸਾਡੇ ਸਮਾਜ ਦੀ ਵੱਖਰਾ ਹਨੇਰੀ ਨੂੰ ਦਰਸਾਉਂਦੇ ਹਨ। +- ਜਦੋਂ ਪੱਖਪਾਤ ਹੁੰਦਾ ਹੈ ਤਾਂ ਉਸ ਦੀ ਪਹਿਚਾਣ ਅਤੇ ਸਹੀ ਕਰਨ ਲਈ ਵਧੀਆ ਤਰੀਕੇ ਵਿਕਸਿਤ ਕਰੋ। -ਇਸ ਪਾਠ ਵਿੱਚ, ਤੁਸੀਂ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਵਿੱਚ ਜ਼ਿੰਮੇਵਾਰ AI ਨੂੰ ਸ਼ਾਮਲ ਕਰਨ ਦੇ ਕੁਝ ਵਿਆਵਹਾਰਿਕ ਟੂਲ ਸਿੱਖੇ ਹਨ। +ਅਸਲੀ ਜ਼ਿੰਦਗੀ ਦੀਆਂ ਸਥਿਤੀਆਂ ਬਾਰੇ ਸੋਚੋ ਜਿੱਥੇ ਮਾਡਲ-ਬਿਲਡਿੰਗ ਅਤੇ ਵਰਤੋਂ ਵਿੱਚ ਅਨਿਆਇਤਾ ਸਪਸ਼ਟ ਹੈ। ਹੋਰ ਕਿਹੜੀਆਂ ਚੀਜ਼ਾਂ ਨੂੰ ਅਸੀਂ ਧਿਆਨ ਵਿੱਚ ਰੱਖਣਾ ਚਾਹੀਦਾ ਹੈ? -ਇਹ ਵਰਕਸ਼ਾਪ ਦੇਖੋ ਤਾਂ ਜੋ ਵਿਸ਼ਿਆਂ ਵਿੱਚ ਹੋਰ ਡੂੰਘਾਈ ਨਾਲ ਜਾ ਸਕੋ: +## [ਪੋਸਟ-ਲੇਕਚਰ ਕਵਿਜ਼](https://ff-quizzes.netlify.app/en/ml/) +## ਸਮੀਖਿਆ ਅਤੇ ਸਵੈ ਅਧਿਐਨ + +ਇਸ ਪਾਠ ਵਿੱਚ, ਤੁਸੀਂ ਜ਼ਿੰਮੇਵਾਰ AI ਨੂੰ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰਨ ਦੇ ਕੁਝ ਵਿਹਾਰਿਕ ਸੰਦ ਸਿੱਖੇ ਹਨ। -- ਜ਼ਿੰਮੇਵਾਰ AI ਡੈਸ਼ਬੋਰਡ: ਅਮਲ ਵਿੱਚ RAI ਨੂੰ ਚਲਾਉਣ ਲਈ ਇੱਕ-ਸਟਾਪ ਦੁਕਾਨ, ਬੇਸਮੀਰਾ ਨੂਸ਼ੀ ਅਤੇ ਮਹਰਨੂਸ਼ ਸਾਮੇਕੀ ਦੁਆਰਾ +ਇਸ ਵਰਕਸ਼ਾਪ ਨੂੰ ਵੇਖੋ ਤਾਂ ਜੋ ਮੌਜੂਦ ਵਿਸ਼ਿਆਂ ਵਿੱਚ ਹੋਰ ਗਹਿਰਾਈ ਨਾਲ ਜਾਣ ਸਕੋ: -[![ਜ਼ਿੰਮੇਵਾਰ AI ਡੈਸ਼ਬੋਰਡ: ਅਮਲ ਵਿੱਚ RAI ਨੂੰ ਚਲਾਉਣ ਲਈ ਇੱਕ-ਸਟਾਪ ਦੁਕਾਨ](https://img.youtube.com/vi/f1oaDNl3djg/0.jpg)](https://www.youtube.com/watch?v=f1oaDNl3djg "ਜ਼ਿੰਮੇਵਾਰ AI ਡੈਸ਼ਬੋਰਡ: ਅਮਲ ਵਿੱਚ RAI ਨੂੰ ਚਲਾਉਣ ਲਈ ਇੱਕ-ਸਟਾਪ ਦੁਕਾਨ") +- ਜ਼ਿੰਮੇਵਾਰ AI ਡੈਸ਼ਬੋਰਡ: ਪ੍ਰਾਕਟਿਸ ਵਿੱਚ RAI ਨੂੰ ਓਪਰੇਸ਼ਨਲ ਬਣਾਉਣ ਲਈ ਇਕੋ ਥਾਂ, ਲੇਖਕ: ਬੇਸਮੀਰਾ ਨੂਸ਼ੀ ਅਤੇ ਮੇਹਰਨੂਸ਼ ਸਮੇਕੀ -> 🎥 ਉਪਰੋਕਤ ਚਿੱਤਰ 'ਤੇ ਕਲਿਕ ਕਰੋ ਇੱਕ ਵੀਡੀਓ ਲਈ: ਜ਼ਿੰਮੇਵਾਰ AI ਡੈਸ਼ਬੋਰਡ: ਅਮਲ ਵਿੱਚ RAI ਨੂੰ ਚਲਾਉਣ ਲਈ ਇੱਕ-ਸਟਾਪ ਦੁਕਾਨ, ਬੇਸਮੀਰਾ ਨੂਸ਼ੀ ਅਤੇ ਮਹਰਨੂਸ਼ ਸਾਮੇਕੀ ਦੁਆਰਾ +[![ਜ਼ਿੰਮੇਵਾਰ AI ਡੈਸ਼ਬੋਰਡ: ਪ੍ਰਾਕਟਿਸ ਵਿੱਚ RAI ਨੂੰ ਓਪਰੇਸ਼ਨਲ ਬਣਾਉਣ ਲਈ ਇਕੋ ਥਾਂ](https://img.youtube.com/vi/f1oaDNl3djg/0.jpg)](https://www.youtube.com/watch?v=f1oaDNl3djg "ਜ਼ਿੰਮੇਵਾਰ AI ਡੈਸ਼ਬੋਰਡ: ਪ੍ਰਾਕਟਿਸ ਵਿੱਚ RAI ਨੂੰ ਓਪਰੇਸ਼ਨਲ ਬਣਾਉਣ ਲਈ ਇਕੋ ਥਾਂ") -ਜ਼ਿੰਮੇਵਾਰ AI ਬਾਰੇ ਹੋਰ ਸਿੱਖਣ ਅਤੇ ਹੋਰ ਭਰੋਸੇਯੋਗ ਮਾਡਲ ਬਣਾਉਣ ਲਈ ਹਵਾਲੇ ਦੇ ਸਮੱਗਰੀ ਨੂੰ ਦੇਖੋ: +> 🎥 ਵੀਡੀਓ ਲਈ ਉੱਤੇ ਦੀ ਚਿੱਤਰ ਤੇ ਕਲਿੱਕ ਕਰੋ: ਜ਼ਿੰਮੇਵਾਰ AI ਡੈਸ਼ਬੋਰਡ: ਪ੍ਰਾਕਟਿਸ ਵਿੱਚ RAI ਨੂੰ ਓਪਰੇਸ਼ਨਲ ਬਣਾਉਣ ਲਈ ਇਕੋ ਥਾਂ, ਲੇਖਕ ਬੇਸਮੀਰਾ ਨੂਸ਼ੀ ਅਤੇ ਮੇਹਰਨੂਸ਼ ਸਮੇਕੀ + +ਹੇਠਾਂ ਦਿੱਤੇ ਸਮੱਗਰੀ ਨੂੰ ਸੰਦਰਭ ਲਓ ਤਾਂ ਜੋ ਜ਼ਿੰਮੇਵਾਰ 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) +- ਜ਼ਿੰਮੇਵਾਰ AI ਟੂਲਕਿਟ ਜਾਚੋ: [ਗਿਟਹੱਬ](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 ਸਰੋਤ – ਮਾਇਕਰੋਸੌਫਟ 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/) ## ਅਸਾਈਨਮੈਂਟ -[RAI ਡੈਸ਼ਬੋਰਡ ਦੀ ਖੋਜ ਕਰੋ](assignment.md) +[RAI ਡੈਸ਼ਬੋਰਡ ਖੋਜੋ](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/pcm/.co-op-translator.json b/translations/pcm/.co-op-translator.json index fcb5ea43a..45480908a 100644 --- a/translations/pcm/.co-op-translator.json +++ b/translations/pcm/.co-op-translator.json @@ -24,8 +24,8 @@ "language_code": "pcm" }, "1-Introduction/3-fairness/README.md": { - "original_hash": "9a6b702d1437c0467e3c5c28d763dac2", - "translation_date": "2025-11-18T18:22:42+00:00", + "original_hash": "0f00d72169a0d37eecfd16d71e01700a", + "translation_date": "2026-07-14T00:25:06+00:00", "source_file": "1-Introduction/3-fairness/README.md", "language_code": "pcm" }, @@ -54,8 +54,8 @@ "language_code": "pcm" }, "2-Regression/1-Tools/README.md": { - "original_hash": "fa81d226c71d5af7a2cade31c1c92b88", - "translation_date": "2025-11-18T18:39:40+00:00", + "original_hash": "0b8635427b582d03ea4ab7089b93e505", + "translation_date": "2026-07-14T00:22:47+00:00", "source_file": "2-Regression/1-Tools/README.md", "language_code": "pcm" }, @@ -72,8 +72,8 @@ "language_code": "pcm" }, "2-Regression/2-Data/README.md": { - "original_hash": "7c077988328ebfe33b24d07945f16eca", - "translation_date": "2025-11-18T18:44:12+00:00", + "original_hash": "a58b2c4d16c6b122643391745ac15af6", + "translation_date": "2026-07-14T00:24:32+00:00", "source_file": "2-Regression/2-Data/README.md", "language_code": "pcm" }, @@ -89,6 +89,12 @@ "source_file": "2-Regression/2-Data/solution/Julia/README.md", "language_code": "pcm" }, + "2-Regression/2-Data/solution/notebook.ipynb": { + "original_hash": "96b95f8cf473481f2f371de8156f1571", + "translation_date": "2026-07-14T00:00:02+00:00", + "source_file": "2-Regression/2-Data/solution/notebook.ipynb", + "language_code": "pcm" + }, "2-Regression/3-Linear/README.md": { "original_hash": "8b776e731c35b171d316d01d0e7b1369", "translation_date": "2026-04-26T19:26:27+00:00", @@ -581,6 +587,19 @@ "source_file": "TROUBLESHOOTING.md", "language_code": "pcm" }, + "__translation_failures__": { + "sketchnotes/LICENSE.md": { + "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f", + "source_file": "sketchnotes/LICENSE.md", + "language_code": "pcm", + "failure_date": "2026-07-14T00:22:18+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-11-18T18:45:38+00:00", diff --git a/translations/pcm/1-Introduction/3-fairness/README.md b/translations/pcm/1-Introduction/3-fairness/README.md index b3b04f19a..5be2f20b2 100644 --- a/translations/pcm/1-Introduction/3-fairness/README.md +++ b/translations/pcm/1-Introduction/3-fairness/README.md @@ -1,28 +1,28 @@ -# How to Build Machine Learning Solutions Wey Get Responsible AI - +# Di Build Machine Learning solutions with responsible AI + ![Summary of responsible AI in Machine Learning in a sketchnote](../../../../translated_images/pcm/ml-fairness.ef296ebec6afc98a.webp) > Sketchnote by [Tomomi Imura](https://www.twitter.com/girlie_mac) ## [Pre-lecture quiz](https://ff-quizzes.netlify.app/en/ml/) - + ## Introduction -For dis curriculum, you go start to sabi how machine learning dey affect our everyday life. Even now, systems and models dey involved for daily decision-making tasks, like health care diagnosis, loan approval or to catch fraud. So, e dey important say these models go work well to give results wey people fit trust. Just like any software application, AI systems fit fail or give result wey no dey okay. Na why e dey important to sabi and fit explain how AI model dey behave. +For dis curriculum, you go start to discover how machine learning fit impact and dey impact our everyday life. Even now, systems and models dey involved for daily decision-making tasks, like health care diagnoses, loan approvals or detecting fraud. So, e important say make these models dey work well to deliver results wey people fit trust. Just like any software application, AI systems fit miss expectations or get bad outcome. Na why e dey important to fit sabi and explain how AI model dey behave. -Imagine wetin fit happen if the data wey you dey use to build these models no get some kind people, like race, gender, political view, religion, or e dey represent some people too much. Wetin go happen if the model dey favor one group over another? Wetin be the result for the application? Plus, wetin go happen if the model give bad result wey go harm people? Who go take responsibility for how the AI system dey behave? Na these kind questions we go look for dis curriculum. +Imagine wetin fit happen if di data wey you dey use to build these models no get some people groups, like race, gender, political view, religion, or if e too represent some groups pass others. Wetin if di model result show say e dey favor some group? Wetin dat mean for di app? Plus, wetin fit happen if di model run bad and e harm people? Who suppose take charge for di AI system behavior? Na some questions we go tok about for dis curriculum. For dis lesson, you go: -- Learn why fairness for machine learning and fairness-related wahala dey important. -- Sabi how to check outliers and unusual situations to make sure say e dey reliable and safe. -- Understand why e dey important to design systems wey go include everybody. -- See why e dey necessary to protect privacy and security of data and people. -- Understand why e dey good to explain how AI models dey behave (glass box approach). -- Know why accountability dey important to build trust for AI systems. +- Make you sabi why fairness be important for machine learning and the harm wey fit come from unfairness. +- Make you dey familiar with how to find outliers and unusual situations to make sure sey everything go well and safe. +- Understand why e necessary to make sure say we design systems wey include everybody. +- Explore why e important to protect data and people privacy and security. +- See why e good to get clear way to explain how AI models dey behave. +- Remember say accountability na key to build trust for AI systems. ## Prerequisite -Before you start, make sure say you don take the "Responsible AI Principles" Learn Path and watch the video below about the topic: +As prerequisite, abeg make you do the "Responsible AI Principles" Learn Path and watch di video wey dey below about di 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,15 +32,15 @@ Learn more about Responsible AI by following this [Learning Path](https://docs.m ## Fairness -AI systems suppose treat everybody fairly and no dey affect similar groups differently. For example, if AI systems dey give advice for medical treatment, loan application, or employment, e suppose give the same advice to people wey get similar symptoms, financial situation, or qualifications. As humans, we dey carry bias wey dey affect our decisions and actions. These biases fit show for the data wey we dey use to train AI systems. Sometimes, e fit happen by mistake. E dey hard to sabi when you dey add bias for data. +AI systems suppose treat everybody fair and no make different groups of people suffer different kain wahala. For example, if AI systems dey show guidance on medical treatment, loan applications, or work, dem suppose recommend the same thing to everyone wey get similar symptoms, financial situation, or qualifications. Every one of us as human get bias wey we inherit wey affect how we dey decide and act. These biases fit show for data wey we use train AI systems. Sometimes, dis kain manipulation no be done on purpose. E hard to sabi when you dey put bias for data without wahala. -**“Unfairness”** mean negative impact or “harms” for one group of people, like race, gender, age, or disability. The main fairness-related harms fit be: +**“Unfairness”** mean di negative effect, or “harm”, wey fit happen to group of people like dem wey be defined by race, gender, age, or disability. The main fairness wahala fit be: -- **Allocation**, if one gender or ethnicity dey favored over another. -- **Quality of service**. If you train data for one specific situation but reality dey more complex, e go make the service no perform well. For example, hand soap dispenser wey no fit sense people wey get dark skin. [Reference](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773) -- **Denigration**. To criticize or label something or someone unfairly. For example, image labeling technology wey mistakenly call dark-skinned people gorillas. -- **Over- or under-representation**. When one group no dey seen for one profession, and any service wey dey promote that na harm. -- **Stereotyping**. To connect one group with pre-assigned attributes. For example, language translation system between English and Turkish fit get mistake because of words wey dey stereotype gender. +- **Allocation**, if gender or ethnicity dem for example dey favored pass others. +- **Quality of service**. If you train data for one kain situation but the real thing na complex pass, e go make service poor. For example, one hand soap dispenser wey no fit sabi people with dark skin. [Reference](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773) +- **Denigration**. To unfairly talk bad or label something or someone. Like how one image labeling system misslabel images of dark-skinned people as gorillas. +- **Over- or under- representation**. The idea be say some group no dey some profession, and if any service or function dey promote dis, e dey cause harm. +- **Stereotyping**. To join one group with certain qualities wey people don pre-decide. For example, one language translation system between English and Turkish fit get mistake because some words get stereotypical links to gender. ![translation to Turkish](../../../../translated_images/pcm/gender-bias-translate-en-tr.f185fd8822c2d437.webp) > translation to Turkish @@ -48,108 +48,112 @@ AI systems suppose treat everybody fairly and no dey affect similar groups diffe ![translation back to English](../../../../translated_images/pcm/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) > translation back to English -When we dey design and test AI systems, we need to make sure say AI dey fair and no dey programmed to make biased or discriminatory decisions, wey humans no suppose make. To make AI and machine learning fair na one big sociotechnical challenge. +When you dey design and test AI system, e good to make sure say AI dey fair and no program make am do biased or discriminatory decisions, wey humans also no suppose do. Make AI and machine learning fair still get serious challenge for society and technology. ### Reliability and safety -To build trust, AI systems suppose dey reliable, safe, and consistent for normal and unexpected conditions. E dey important to sabi how AI systems go behave for different situations, especially outliers. When we dey build AI solutions, we need to focus well on how to handle different situations wey the AI go face. For example, self-driving car suppose put people safety first. The AI wey dey power the car suppose think about all the possible situations wey the car fit face like night, thunderstorms, blizzards, kids wey dey run cross road, pets, road construction, etc. How well AI system fit handle different conditions reliably and safely go show how the data scientist or AI developer take plan and test the system. +To make people trust dem, AI systems need to be reliable, safe, and steady for normal and unexpected situations. E important to know how AI systems go behave for different situations, especially for outliers. When we dey build AI solutions, we must focus well on how to handle all kinds different situation wey AI fit face. For example, self-driving car suppose put people's safety first. So, the AI inside the car must think about all possible things wey fit happen like night, thunderstorm or blizzard, pikin wey dey run cross road, animals, road work, and so on. How well AI system handle all these things fit show how well data scientist or AI developer plan am from the start. > [🎥 Click the here for a video: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl) ### Inclusiveness -AI systems suppose dey designed to involve and empower everybody. When data scientists and AI developers dey design AI systems, dem suppose identify and fix barriers wey fit exclude people by mistake. For example, 1 billion people wey get disabilities dey for the world. With AI, dem fit access plenty information and opportunities easily for their daily life. If we fix these barriers, e go create chance to innovate and make AI products wey go give better experience wey go benefit everybody. +AI systems suppose dey design to involve and empower everybody. When data scientists and AI developers dey design and put AI systems, dem go find and fix any barrier wey fit stop people from using the system. For example, 1 billion people get disabilities for di world. With AI progress, dem fit reach plenty info and chance easier for their daily life. If we fix barriers, e go create chance to make better AI products wey go benefit everybody. > [🎥 Click the here for a video: inclusiveness in AI](https://www.microsoft.com/videoplayer/embed/RE4vl9v) -### Security and privacy +### Security and privacy -AI systems suppose dey safe and respect people privacy. People no go trust systems wey dey put their privacy, information, or life at risk. When we dey train machine learning models, we dey depend on data to get better results. So, we need to check where the data come from and if e dey okay. For example, na user submit the data or e dey public? Next, as we dey work with the data, e dey important to develop AI systems wey fit protect confidential information and resist attacks. As AI dey grow, to protect privacy and secure personal and business information dey more critical and complex. Privacy and data security matter need special attention for AI because data na the main thing wey AI systems dey use to make correct predictions and decisions about people. +AI systems suppose dey safe and respect people privacy. People no dey trust systems wey fit threaten their privacy, info, or life. When we dey train machine learning models, we dey rely on data to make better results. But we must think about where data come from and if e trustworthy. For example, data fit be user submitted or public data. As we dey work with data, e important to make AI systems wey fit protect secret info and resist attacks. As AI dey increase, to protect privacy and keep important personal and business info safe na serious and hard work. Privacy and data security matter well well for AI because AI need data to make correct and informed prediction and decisions about people. > [🎥 Click the here for a video: security in AI](https://www.microsoft.com/videoplayer/embed/RE4voJF) -- As industry, we don make big progress for Privacy & security, especially because of regulations like GDPR (General Data Protection Regulation). -- But for AI systems, we need to balance the need for more personal data to make systems better – and privacy. -- Just like when internet start, we dey see plenty security wahala related to AI. -- At the same time, AI dey help improve security. For example, most modern anti-virus scanners dey use AI today. -- We need to make sure say our Data Science processes dey work well with the latest privacy and security practices. +- As an industry we don make big progress for Privacy & security, especially with laws like GDPR (General Data Protection Regulation). +- But for AI systems we must know say e dey tension between needing more personal data to make systems better and the need for privacy. +- Just like how internet bring more security problems, AI dey bring more security challenges too. +- But AI dey also help improve security. For example, many modern anti-virus scanners dey use AI heuristics now. +- We suppose make sure say our Data Science process go well with the latest privacy and security practices. -### Transparency -AI systems suppose dey easy to understand. Transparency mean to explain how AI systems and their parts dey behave. To improve understanding of AI systems, stakeholders need to sabi how and why dem dey work so dem fit identify performance wahala, safety and privacy concerns, bias, exclusionary practices, or mistakes. People wey dey use AI systems suppose dey honest about when, why, and how dem dey use am. Plus, dem suppose talk about the limitations of the systems. For example, if bank dey use AI system to help with lending decisions, e dey important to check the results and sabi which data dey influence the system recommendations. Governments don dey regulate AI for different industries, so data scientists and organizations suppose explain if AI system meet regulatory requirements, especially when e give bad result. +### Transparency +AI systems suppose dey easy to understand. One important part of transparency na to explain how AI systems and their parts dey behave. To improve understanding of AI systems, stakeholders must sabi how and why dem dey work so dem fit find any performance wahala, safety and privacy risks, bias, exclusion, or unintended outcomes. We also believe say people wey use AI systems suppose dey honest about when, why, and how dem choose to use am. Plus the limits of the system dem dey use. For example, if bank dey use AI to help them decide who to lend money, e important to check di results and sabi which data affect the AI system recommendations. Governments don begin dey regulate AI for different industries so data scientists and organizations must fit show if AI system meet regulation, especially if e get bad result. > [🎥 Click the here for a video: transparency in AI](https://www.microsoft.com/videoplayer/embed/RE4voJF) -- Because AI systems dey complex, e dey hard to understand how dem dey work and interpret the results. -- This lack of understanding dey affect how dem dey manage, use, and document the systems. -- This lack of understanding dey also affect the decisions wey people dey make with the results wey the systems dey give. - -### Accountability +- Because AI systems complex well well, e hard to understand how dem work and explain results. +- This kain lack of understanding affect how dem dey manage, operate, and document these systems. +- More importantly, this lack of understanding affect decisions wey people dey make from the results wey AI systems produce. -The people wey dey design and use AI systems suppose take responsibility for how their systems dey work. Accountability dey very important for sensitive technologies like facial recognition. Recently, demand for facial recognition technology don dey grow, especially from law enforcement wey wan use am to find missing children. But these technologies fit make government use am to take away people freedom, like to dey monitor specific people every time. So, data scientists and organizations need to take responsibility for how their AI system dey affect people or society. +### Accountability + +People wey design and deploy AI systems must take responsibility for how their systems dey work. Accountability matter plenty for sensitive tech like facial recognition. Recently, demand for facial recognition don grow, especially for law enforcement wey dey find missing pikin. But this technology fit also be used by government to put people fundamental freedoms for risk like continuous surveillance on particular people. So, data scientists and organizations must be responsible for how their AI systems impact people or society. [![Leading AI Researcher Warns of Mass Surveillance Through Facial Recognition](../../../../translated_images/pcm/accountability.41d8c0f4b85b6231.webp)](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 + +At last, one big question for our generation, as di first wey dey bring AI to society, be how to make sure say computers go still take responsibility to people and how to make sure people wey design the computers go still get responsibility to everybody else. -At the end, one big question for our generation, as the first generation wey dey bring AI to society, na how we go make sure say computers go dey accountable to people and how we go make sure say the people wey dey design computers go dey accountable to everybody. +## Impact assessment -## Impact assessment +Before you train machine learning model, e important to do impact assessment to understand why AI system dey build; how e go take work; where dem go put am; and who go dey interact with am. This go help testers or reviewers sabi wetin to consider when dem dey check risk and wetin fit happen. -Before you train machine learning model, e dey important to do impact assessment to sabi the purpose of the AI system; wetin dem wan use am do; where dem go use am; and who go dey interact with the system. Dis go help reviewer(s) or testers to sabi wetin to check when dem dey look for risks and expected results. +These be wetin you suppose focus on when you dey do impact assessment: -The following na areas to focus on when you dey do impact assessment: +* **Adverse impact on individuals**. Make you sabi if any restriction or condition, unsupported use or limitation fit make system no work well. This go help make sure system no harm individuals. +* **Data requirements**. Make you understand how and where system go use data to help reviewers check data requirements (like GDPR or HIPAA). Also check if data source or quantity enough for training. +* **Summary of impact**. List all possible harm wey fit happen because of system use. For whole ML lifecycle, check if these issues dem try fix. +* **Applicable goals** for all six core principles. Check if goals of each principle don meet and if any gap dey. -* **Adverse impact on individuals**. Sabi any restriction or requirements, unsupported use or any known limitations wey fit make the system no perform well. This go help make sure say the system no go harm people. -* **Data requirements**. Sabi how and where the system go use data so reviewers fit check any data requirements wey you need to follow (e.g., GDPR or HIPPA data regulations). Plus, check if the source or quantity of data dey enough for training. -* **Summary of impact**. Gather list of potential harms wey fit happen if you use the system. For the ML lifecycle, check if the issues wey you identify don dey fixed or addressed. -* **Applicable goals** for each of the six core principles. Check if the goals for each principle don dey met and if gaps dey. -## Debugging with responsible AI +## Debugging with responsible AI -Just like how we dey debug software application, debugging AI system na process to find and fix issues for the system. Plenty things fit make model no perform as e suppose or no dey responsible. Most traditional model performance metrics dey give numbers wey no dey enough to check how model dey break responsible AI principles. Plus, machine learning model na black box wey dey hard to understand wetin dey drive the result or explain mistake. Later for this course, we go learn how to use Responsible AI dashboard to debug AI systems. The dashboard dey give data scientists and AI developers tool to do: +Like how you go take debug software app, debugging AI system na important way to find and fix wahala for system. Plenty things fit cause model no perform well or no dey responsible. Most normal model performance metrics na just number wey just sum model performance which no fit show how model fit break responsible AI principles. Plus, machine learning model na black box wey hard to sabi wetin dey cause result or explain when e make mistake. Later for this course, we go learn how to use Responsible AI dashboard to help debug AI systems. Dashboard na a tool wey data scientists and AI developers go use to do: -* **Error analysis**. To check the error distribution of the model wey fit affect fairness or reliability. -* **Model overview**. To find where the model performance dey different across data groups. -* **Data analysis**. To check the data distribution and find any bias for the data wey fit cause fairness, inclusiveness, and reliability wahala. -* **Model interpretability**. To sabi wetin dey affect or influence the model predictions. This go help explain the model behavior, wey dey important for transparency and accountability. +* **Error analysis**. To find error pattern wey fit affect system fairness or reliability. +* **Model overview**. To find difference for model performance for different data groups. +* **Data analysis**. To understand data pattern and find any bias wey fit cause fairness, inclusiveness, and reliability problems. +* **Model interpretability**. To understand wetin affect or influence model prediction. Dis dey help explain model behavior, wey important for transparency and accountability. -## 🚀 Challenge -To stop harms from happening, we suppose: +## 🚀 Challenge + +To stop harms from showing at first, we suppose: -- Get people wey get different backgrounds and perspectives to work on systems. -- Invest for datasets wey show the diversity of our society. -- Develop better methods for the machine learning lifecycle to detect and fix responsible AI issues when dem happen. +- get different kinds background and perspectives among people wey dey work on systems +- invest in datasets wey show the diversity of our society +- develop better ways throughout machine learning life cycle to find and fix responsible AI problems when e happen -Think about real-life situations wey show say model no dey trustworthy for model-building and usage. Wetin else we suppose consider? +Think about real life situations wey model no fit be trusted for building and use. Wetin else we suppose consider? ## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ml/) -## Review & Self Study -For dis lesson, you don learn some basic tins about fairness and unfairness for machine learning. +## Review & Self Study + -Watch dis workshop to sabi more about di topics: +For dis lesson, you don learn some basics about di tins dem wey concern fairness and unfairness for machine learning. + +Make you watch dis workshop make you fit sabi di matter well-well: -- How to pursue responsible AI: How to carry principles enter practice by Besmira Nushi, Mehrnoosh Sameki and Amit Sharma +- For di chase of responsible AI: How to take principles put for practice by Besmira Nushi, Mehrnoosh Sameki and Amit Sharma [![Responsible AI Toolbox: An open-source framework for building responsible AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") -> 🎥 Click di image wey dey up for video: RAI Toolbox: An open-source framework for building responsible AI by Besmira Nushi, Mehrnoosh Sameki, and Amit Sharma +> 🎥 Click di picture wey dey above for video: RAI Toolbox: An open-source framework for building responsible AI by Besmira Nushi, Mehrnoosh Sameki, and Amit Sharma -Still read: +E good make you read: -- Microsoft RAI resource center: [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) -- Microsoft FATE research group: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/) +- Microsoft 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) -Read about Azure Machine Learning tools wey fit help make sure fairness dey: +Read about Azure Machine Learning tool dem wey dey help hold 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 @@ -158,6 +162,6 @@ Read about Azure Machine Learning tools wey fit help make sure fairness dey: --- -**Disclaimer**: -Dis dokyument don use AI transleshion service [Co-op Translator](https://github.com/Azure/co-op-translator) do di transleshion. Even as we dey try make am accurate, abeg make you sabi say automatik transleshion fit get mistake or no dey correct well. Di original dokyument for im native language na di one wey you go take as di correct source. For important informashon, e good make professional human transleshion dey use. We no go fit take blame for any misunderstanding or wrong interpretation wey go happen because you use dis transleshion. +**Disclaimer**: +Dis document don translate wit AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). Even tho we dey try make am correct, abeg make you know say automated translation fit get errors or mistakes. Di original document for dia own language na im be di correct source. For important info, make person wey sabi human translation do am. We no go responsible for any misunderstanding or wrong understanding wey fit happen because of dis translation. \ No newline at end of file diff --git a/translations/pcm/2-Regression/1-Tools/README.md b/translations/pcm/2-Regression/1-Tools/README.md index ed4c007e3..5ad75589b 100644 --- a/translations/pcm/2-Regression/1-Tools/README.md +++ b/translations/pcm/2-Regression/1-Tools/README.md @@ -1,4 +1,4 @@ -# Start wit Python and Scikit-learn for regression models +# Start to run Python and Scikit-learn for regression models ![Summary of regressions in a sketchnote](../../../../translated_images/pcm/ml-regression.4e4f70e3b3ed446e.webp) @@ -10,61 +10,61 @@ ## Introduction -For dis four lessons, you go learn how to build regression models. We go talk wetin dem dey use am do soon. But before you start anything, make sure say you get all di correct tools wey you need to start di process! +For dis four lessons, you go learn how to build regression models. We go talk about wetin dem dey use am for soon. But before you start anything, make sure say you get correct tool dem set well to start di work! For dis lesson, you go learn how to: -- Set up your computer for local machine learning tasks. -- Work wit Jupyter notebooks. -- Use Scikit-learn, including installation. -- Try linear regression wit one hands-on exercise. +- Arrange your computer for local machine learning work. +- Use Jupyter Notebooks. +- Use Scikit-learn, including how to install am. +- Explore linear regression with hand-on exercise. ## Installations and configurations [![ML for beginners - Setup your tools ready to build Machine Learning models](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML for beginners -Setup your tools ready to build Machine Learning models") -> 🎥 Click di image above for one short video wey go show you how to configure your computer for ML. +> 🎥 Click the image above for short video wey go show how to arrange your computer for ML. -1. **Install Python**. Make sure say [Python](https://www.python.org/downloads/) dey your computer. You go use Python for plenty data science and machine learning tasks. Most computers already get Python installed. You fit also use [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) to make setup easy for some people. +1. **Install Python**. Make sure say [Python](https://www.python.org/downloads/) don install for your computer. You go use Python for many data science and machine learning waka. Most computers don already get Python. E still dey useful to get [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) for some people to easy setup. - Some Python tasks dey need one version of di software, while others dey need another version. Because of dis, e good to work inside [virtual environment](https://docs.python.org/3/library/venv.html). + Some Python use demand one version of the software, others need another version. So e good to work inside [virtual environment](https://docs.python.org/3/library/venv.html). -2. **Install Visual Studio Code**. Make sure say Visual Studio Code dey your computer. Follow dis instructions to [install Visual Studio Code](https://code.visualstudio.com/) for di basic installation. You go use Python inside Visual Studio Code for dis course, so e go make sense to learn 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 say you get Visual Studio Code install for your computer. Follow [these instructions](https://code.visualstudio.com/) to install Visual Studio Code well. You go use Python for Visual Studio Code for dis course, so e good to sabi how to [configure Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) for Python dev work. - > Make yourself comfortable wit Python by working through dis collection of [Learn modules](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) + > Make yourself familiar with Python by going through dis collection of [Learn modules](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) > > [![Setup Python with Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Setup Python with Visual Studio Code") > - > 🎥 Click di image above for one video: using Python inside VS Code. + > 🎥 Click the picture above for video: how to use Python inside VS Code. -3. **Install Scikit-learn**, by following [dis instructions](https://scikit-learn.org/stable/install.html). Since you need to make sure say you dey use Python 3, e good to use virtual environment. If you dey install dis library for M1 Mac, special instructions dey di page wey dem link above. +3. **Install Scikit-learn**, follow [these instructions](https://scikit-learn.org/stable/install.html). Since you need use Python 3, e good make you use virtual environment. If you dey install this library for M1 Mac, the page get special instructions. -4. **Install Jupyter Notebook**. You go need to [install di Jupyter package](https://pypi.org/project/jupyter/). +1. **Install Jupyter Notebook**. You go need to [install the Jupyter package](https://pypi.org/project/jupyter/). ## Your ML authoring environment -You go use **notebooks** to develop your Python code and create machine learning models. Dis type of file na common tool for data scientists, and you fit identify dem by di suffix or extension `.ipynb`. +You go use **notebooks** to write your Python code and create machine learning models. Dis kain file na common tool for data scientists, and you go sabi am by their suffix or extension `.ipynb`. -Notebooks na interactive environment wey allow di developer to code and add notes plus write documentation around di code. E dey very helpful for experimental or research-oriented projects. +Notebooks na interactive environment wey make developer fit both code and add notes and write documentation around di code wey dey helpful for experimental or research work. [![ML for beginners - Set up Jupyter Notebooks to start building regression models](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML for beginners - Set up Jupyter Notebooks to start building regression models") -> 🎥 Click di image above for one short video wey go show you how to do dis exercise. +> 🎥 Click di picture above for short video to follow dis exercise. -### Exercise - work wit notebook +### Exercise - work with notebook -For dis folder, you go see di file _notebook.ipynb_. +For dis folder, you go find file _notebook.ipynb_. -1. Open _notebook.ipynb_ inside Visual Studio Code. +1. Open _notebook.ipynb_ for Visual Studio Code. - Jupyter server go start wit Python 3+ started. You go see areas for di notebook wey you fit `run`, pieces of code. You fit run one code block by selecting di icon wey look like play button. + Jupyter server go start wit Python 3+ go on. You go see parts of di notebook wey you fit `run`, pieces of code. You fit run code block by clicking di icon wey look like play button. -2. Select di `md` icon and add small markdown, plus di following text **# Welcome to your notebook**. +1. Click di `md` icon and add small markdown, plus dis text **# Welcome to your notebook**. Next, add some Python code. -3. Type **print('hello notebook')** inside di code block. -4. Select di arrow to run di code. +1. Type **print('hello notebook')** for code block. +1. Click di arrow to run di code. You go see di printed statement: @@ -72,49 +72,50 @@ For dis folder, you go see di file _notebook.ipynb_. hello notebook ``` -![VS Code wit notebook open](../../../../translated_images/pcm/notebook.4a3ee31f396b8832.webp) +![VS Code with a notebook open](../../../../translated_images/pcm/notebook.4a3ee31f396b8832.webp) -You fit mix your code wit comments to self-document di notebook. +You fit put your code together with comments to explain your notebook. -✅ Think small about how web developer working environment dey different from data scientist own. +✅ Think small abeg how different web developer work environment be from data scientist. -## Up and running wit Scikit-learn +## Up and running with Scikit-learn -Now wey Python don dey set up for your local environment, and you don dey comfortable wit Jupyter notebooks, make we also dey comfortable wit Scikit-learn (pronounce am `sci` like `science`). Scikit-learn dey provide [extensive API](https://scikit-learn.org/stable/modules/classes.html#api-ref) to help you do ML tasks. +Now wey Python don set for your lokal environment, and you don sabi Jupyter Notebooks well, make we try Scikit-learn (you go talk am `sci` like `science`). Scikit-learn get [plenty API](https://scikit-learn.org/stable/modules/classes.html#api-ref) wey go help you do ML work. -According to their [website](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn na open source machine learning library wey support supervised and unsupervised learning. E also dey provide different tools for model fitting, data preprocessing, model selection and evaluation, plus many other utilities." +According to their [website](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn na open source machine learning library wey dey support supervised and unsupervised learning. E still get tools for model fitting, data preprocessing, model selection and evaluation, plus many other utilities." -For dis course, you go use Scikit-learn and other tools to build machine learning models to do wetin we dey call 'traditional machine learning' tasks. We don avoid neural networks and deep learning on purpose, as dem dey better covered for our upcoming 'AI for Beginners' curriculum. +For dis course, you go use Scikit-learn and other tools to build machine learning models wey dem dey call 'traditional machine learning' tasks. We no include neural networks and deep learning because we go talk about dem for our 'AI for Beginners' curriculum wey dey come. -Scikit-learn dey make am easy to build models and evaluate dem for use. E dey mainly focus on using numeric data and e get several ready-made datasets wey you fit use as learning tools. E also get pre-built models wey students fit try. Make we explore di process of loading prepackaged data and using one built-in estimator first ML model wit Scikit-learn wit some basic data. +Scikit-learn dey easy to use to build models and check dem. E mainly dey use numeric data and get many ready-made datasets for learning. E also get built models wey students fit try. Make we check how to load prepackaged data and use built-in estimator first ML model with Scikit-learn with some basic data. ## Exercise - your first Scikit-learn notebook -> Dis tutorial na inspiration from di [linear regression example](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) for Scikit-learn website. +> Dis tutorial come from [linear regression example](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) for Scikit-learn web site. + [![ML for beginners - Your First Linear Regression Project in Python](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "ML for beginners - Your First Linear Regression Project in Python") -> 🎥 Click di image above for one short video wey go show you how to do dis exercise. +> 🎥 Click picture above for short video to follow dis exercise. -For di _notebook.ipynb_ file wey dey dis lesson, clear all di cells by pressing di 'trash can' icon. +For _notebook.ipynb_ file wey dey for dis lesson, clear all the cells by pressing di 'trash can' icon. -For dis section, you go work wit one small dataset about diabetes wey dey built into Scikit-learn for learning purposes. Imagine say you wan test one treatment for diabetic patients. Machine Learning models fit help you determine which patients go respond better to di treatment, based on combinations of variables. Even one very basic regression model, when you visualize am, fit show information about variables wey go help you arrange your theoretical clinical trials. +For dis part, you go work wit small dataset about diabetes wey dey inside Scikit-learn for learning. Imagine say you wan test treatment for diabetic patients. Machine Learning models fit help you see which patient go respond better, based on combination of variables. Even simple regression model, if you show am, fit show info about variables wey fit help arrange your clinical trials idea. -✅ Plenty types of regression methods dey, and di one wey you go pick depend on di answer wey you dey look for. If you wan predict di probable height for person wey get one given age, you go use linear regression, as you dey find **numeric value**. If you wan discover whether one type of food suppose be vegan or not, you dey look for **category assignment** so you go use logistic regression. You go learn more about logistic regression later. Think small about some questions wey you fit ask of data, and which of dis methods go make sense. +✅ Their different types of regression, and which one you use go depend on the answer you want. If you want predict height for person of one age, you go use linear regression, as you want **numeric value**. If you wan find if one kin food na vegan or no, you dey find **category** so you go use logistic regression. You go learn more on logistic regression later. Think small about questions wey you fit ask data, and which method go fit. -Make we start dis task. +Make we start dis task now. ### Import libraries -For dis task we go import some libraries: +For dis work we go import some libraries: -- **matplotlib**. E dey useful as [graphing tool](https://matplotlib.org/) and we go use am to create line plot. -- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) na useful library for handling numeric data inside Python. -- **sklearn**. Dis na di [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) library. +- **matplotlib**. E good [graphing tool](https://matplotlib.org/) and we go use am to form line plot. +- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) na good library for numeric data for Python. +- **sklearn**. Na [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) library dis one. -Import some libraries to help wit your tasks. +Import libraries wey go help for your work. -1. Add imports by typing di following code: +1. Add imports by typing this code: ```python import matplotlib.pyplot as plt @@ -122,26 +123,26 @@ Import some libraries to help wit your tasks. from sklearn import datasets, linear_model, model_selection ``` - Above you dey import `matplotlib`, `numpy` and you dey import `datasets`, `linear_model` and `model_selection` from `sklearn`. `model_selection` dey used to split data into training and test sets. + For here, you dey import `matplotlib`, `numpy` and you dey import `datasets`, `linear_model` and `model_selection` from `sklearn`. `model_selection` na for divide data into training and test sets. -### Di diabetes dataset +### The diabetes dataset -Di built-in [diabetes dataset](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) get 442 samples of data about diabetes, wit 10 feature variables, some of dem include: +The built-in [diabetes dataset](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) get 442 samples of data about diabetes, with 10 feature variables, like: -- age: age in years +- age: age inside years - bmi: body mass index - bp: average blood pressure -- s1 tc: T-Cells (one type of white blood cells) +- s1 tc: T-Cells (kind of white blood cells) -✅ Dis dataset get di concept of 'sex' as feature variable wey dey important for research about diabetes. Plenty medical datasets dey include dis type of binary classification. Think small about how categorizations like dis fit exclude some parts of di population from treatments. +✅ Dis dataset get the idea of 'sex' as feature wey important for diabetes research. Many medical dataset get this kind binary classification. Think small about how this kind categories for exclude some people from treatments. -Now, load di X and y data. +Now, gbe the X and y data come. -> 🎓 Remember, dis na supervised learning, and we need one named 'y' target. +> 🎓 Remember say, dis one na supervised learning, so we need to get named 'y' target. -For new code cell, load di diabetes dataset by calling `load_diabetes()`. Di input `return_X_y=True` dey signal say `X` go be data matrix, and `y` go be regression target. +For new code cell, load diabetes dataset by calling `load_diabetes()`. The input `return_X_y=True` mean say `X` go be data matrix, and `y` go be regression target. -1. Add some print commands to show di shape of di data matrix and di first element: +1. Add print commands to show the shape of data matrix and first element: ```python X, y = datasets.load_diabetes(return_X_y=True) @@ -149,9 +150,9 @@ For new code cell, load di diabetes dataset by calling `load_diabetes()`. Di inp print(X[0]) ``` - Wetin you dey get back as response na tuple. Wetin you dey do na to assign di two first values of di tuple to `X` and `y` respectively. Learn more [about tuples](https://wikipedia.org/wiki/Tuple). + Wetin you go get back na tuple. What you dey do be assign first two values of tuple to `X` and `y`. Learn more [about tuples](https://wikipedia.org/wiki/Tuple). - You fit see say dis data get 442 items shaped inside arrays of 10 elements: + You fit see say data get 442 items wey shaped as arrays of 10 elements: ```text (442, 10) @@ -159,39 +160,39 @@ For new code cell, load di diabetes dataset by calling `load_diabetes()`. Di inp -0.04340085 -0.00259226 0.01990842 -0.01764613] ``` - ✅ Think small about di relationship between di data and di regression target. Linear regression dey predict relationships between feature X and target variable y. You fit find di [target](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) for di diabetes dataset for di documentation? Wetin dis dataset dey show, given di target? + ✅ Think small about how data relate to regression target. Linear regression dey predict how feature X and target y relate. You fit find [target](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) for diabetes dataset inside di documentation? Wetin this dataset dey show with dat target? -2. Next, select one portion of dis dataset to plot by selecting di 3rd column of di dataset. You fit do dis by using di `:` operator to select all rows, and then select di 3rd column using di index (2). You fit also reshape di data to be 2D array - as e dey required for plotting - by using `reshape(n_rows, n_columns)`. If one of di parameter na -1, di corresponding dimension go dey calculated automatically. +2. Next, choose part of dataset to plot by choosing 3rd column. You fit select all rows with `:` operator, then choose 3rd column with index (2). You fit reshape data to be 2D array - like dis plotting need - by using `reshape(n_rows, n_columns)`. If any parameter be -1, e go calculate that dimension automatically. ```python X = X[:, 2] X = X.reshape((-1,1)) ``` - ✅ Anytime, print out di data to check di shape. + ✅ Anytime you fit print data to check shape. -3. Now wey you don get data ready to plot, you fit see if machine fit help determine one logical split between di numbers for dis dataset. To do dis, you need to split both di data (X) and di target (y) into test and training sets. Scikit-learn get one straightforward way to do dis; you fit split your test data for one given point. +3. Now wey data ready for plotting, make we see if machine fit help decide better split for numbers for this dataset. To do so, you need split data (X) and target (y) into test and training sets. Scikit-learn get easy way to do dis; you fit split your test data for any place you want. ```python X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33) ``` -4. Now you don ready to train your model! Load di linear regression model and train am wit your X and y training sets using `model.fit()`: +4. Now you fit train your model! Load linear regression model and train am with your X and y training sets using `model.fit()`: ```python model = linear_model.LinearRegression() model.fit(X_train, y_train) ``` - ✅ `model.fit()` na function wey you go see for plenty ML libraries like TensorFlow + ✅ `model.fit()` na function wey you go see for many ML libraries like TensorFlow -5. Then, create one prediction using test data, using di function `predict()`. Dis go dey used to draw di line between di numbers for di dataset. +5. Then create prediction with test data by using `predict()`. E go help draw line between data groups ```python y_pred = model.predict(X_test) ``` -6. Now na time to show di data for one plot. Matplotlib na very useful tool for dis task. Create scatterplot of all di X and y test data, and use di prediction to draw one line for di most correct place, between di model data groupings. +6. Now time don reach to show data for plot. Matplotlib be very useful tool for this type work. Create scatterplot for all X and y test data, then use prediction to draw line for right place between model data groups. ```python plt.scatter(X_test, y_test, color='black') @@ -202,31 +203,32 @@ For new code cell, load di diabetes dataset by calling `load_diabetes()`. Di inp plt.show() ``` - ![scatterplot wey dey show datapoints about diabetes](../../../../translated_images/pcm/scatterplot.ad8b356bcbb33be6.webp) -✅ Tink small small about wetin dey happen here. One straight line dey waka pass plenty small dots wey be data, but wetin e dey really do? You fit see how you go fit use dis line take predict where new data wey you never see go fit enter for the plot y axis? Try talk the practical use of dis model. + ![scatterplot wey show datapoints about diabetes](../../../../translated_images/pcm/scatterplot.ad8b356bcbb33be6.webp) + -Congrats, you don build your first linear regression model, use am predict something, and show am for one plot! + ✅ Think small about wetin dey happen here. One straight line dey run through plenti small dots of data, but wetin e dey really do? You fit see as you suppose use dis line take predict where new, never see data point suppose join inside the plot's y axis? Try talk am for word how this model fit work for real life. + +Congrats, you don build your first linear regression model, create prediction with am, plus show am for one plot! --- ## 🚀Challenge -Plot another variable from dis dataset. Hint: change dis line: `X = X[:,2]`. Based on dis dataset target, wetin you fit discover about how diabetes dey progress as disease? - +Plot one different variable from dis dataset. Hint: change this line: `X = X[:,2]`. Based on dis dataset target, wetin you fit discover about how diabetes dey progress as disease? ## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ml/) ## Review & Self Study -For dis tutorial, you work with simple linear regression, no be univariate or multiple linear regression. Read small about the difference between dis methods, or check [dis video](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef). +For dis tutorial, you work with simple linear regression, no be univariate or multiple linear regression. Read small about the difference between dem methods, or try check [dis video](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) -Read more about regression concept and tink about the kind questions wey dis technique fit answer. Take dis [tutorial](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) to understand am well well. +Read more about regression concept and think about kind questions wey dis method fit answer. Take dis [tutorial](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) to sabi am well well. ## Assignment -[A different dataset](assignment.md) +[One different dataset](assignment.md) --- -**Disclaimer**: -Dis dokyument don use AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator) do di translation. Even as we dey try make am accurate, abeg sabi say automated translations fit get mistake or no dey correct well. Di original dokyument wey dey for im native language na di main source wey you go fit trust. For important information, e good make professional human translation dey use. We no go fit take blame for any misunderstanding or wrong interpretation wey fit happen because you use dis translation. +**Disclaimer**: +Dis document don translate wit AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). Even tho we dey try make am correct, abeg make you know say automated translation fit get errors or mistakes. Di original document for dia own language na im be di correct source. For important info, make person wey sabi human translation do am. We no go responsible for any misunderstanding or wrong understanding wey fit happen because of dis translation. \ No newline at end of file diff --git a/translations/pcm/2-Regression/2-Data/README.md b/translations/pcm/2-Regression/2-Data/README.md index e058b9fbe..f9fa0034d 100644 --- a/translations/pcm/2-Regression/2-Data/README.md +++ b/translations/pcm/2-Regression/2-Data/README.md @@ -1,4 +1,4 @@ -# Build regression model wit Scikit-learn: prepare and show data +# Build a regression model using Scikit-learn: prepare and visualize data ![Data visualization infographic](../../../../translated_images/pcm/data-visualization.54e56dded7c1a804.webp) @@ -10,51 +10,51 @@ Infographic by [Dasani Madipalli](https://twitter.com/dasani_decoded) ## Introduction -Now wey you don get all di tools wey you need to start machine learning model building wit Scikit-learn, you fit begin dey ask beta questions about your data. As you dey work wit data and dey use ML solutions, e dey very important to sabi how to ask di correct question so you fit unlock di potential wey dey your dataset. +Now wey you don get all di tools wey you need to start to dey build machine learning model with Scikit-learn, you don ready to start dey ask questions about your data. As you dey work with data and apply ML solutions, e important well well to sabi how to ask correct question to fit unlock all di powers wey dey inside your dataset. For dis lesson, you go learn: - How to prepare your data for model-building. -- How to use Matplotlib to show data. +- How to take use Matplotlib for data visualization. +- How to take use Seaborn for more expressive data visualization. -## Ask di correct question about your data +## How to ask the correct question about your data -Di question wey you wan answer go determine di type of ML algorithm wey you go use. Di quality of di answer wey you go get go depend well-well on di kind data wey you get. +The question wey you wan find answer go determine which kind ML algorithms you go use. And how correct di answer go be depend wella on di nature of your data. -Check di [data](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) wey dem provide for dis lesson. You fit open dis .csv file for VS Code. If you look am small, you go see say e get blanks and mix of strings and numbers. E still get one strange column wey dem call 'Package' wey di data dey mix between 'sacks', 'bins' and other values. Di data sef no dey clean. +Look di [data](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) wey dem provide for dis lesson. You fit open dis .csv file for VS Code. If you look am quickly, e show say e get blanks and mix of strings and numeric data. E still get one kain strange column wey dem call 'Package' wey di data na mix of 'sacks', 'bins' and other values. Di data, truth be told, na small gbege. [![ML for beginners - How to Analyze and Clean a Dataset](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML for beginners - How to Analyze and Clean a Dataset") -> 🎥 Click di image wey dey up for short video wey go show how to prepare di data for dis lesson. +> 🎥 Click di picture wey dey above for short video wey dey show how to prepare di data for dis lesson. -E no dey common to get dataset wey don ready to use for ML model straight. For dis lesson, you go learn how to prepare raw dataset wit standard Python libraries. You go still learn different ways to show di data. +For fact, e no too common to get dataset wey ready complete to use build ML model straight from di beginning. For dis lesson, you go learn how to prepare raw dataset with standard Python libraries. You go learn plenty ways to visualize di data too. -## Case study: 'di pumpkin market' +## Case study: 'the pumpkin market' -For dis folder, you go see one .csv file for di root `data` folder wey dem call [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) wey get 1757 lines of data about di market for pumpkins, wey dem arrange by city. Dis na raw data wey dem collect from di [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) wey United States Department of Agriculture dey share. +Inside dis folder, you go find .csv file for di root `data` folder called [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) wey get 1757 lines of data about pumpkin market, sorted by city groupings. Dis na raw data wey dem comot from di [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) wey United States Department of Agriculture dey distribute. -### Prepare data +### Preparing data -Dis data dey public domain. You fit download am as plenty separate files, per city, from di USDA website. To avoid too many separate files, we don join all di city data into one spreadsheet, so we don _prepare_ di data small. Next, make we look di data well. +Dis data dey public domain. You fit download am as many small small files, per city, for USDA website. To avoid too many small files, we don join all di city data into one spreadsheet, so we don already _prepare_ di data small. Next, make we look di data well well. ### Di pumpkin data - early conclusions -Wetin you notice about dis data? You don already see say e get mix of strings, numbers, blanks and strange values wey you go need understand. - -Wetin be di question wey you fit ask about dis data, using Regression technique? How about "Predict di price of pumpkin wey dem dey sell for one month"? If you look di data again, you go see say e get some changes wey you go need make to create di data structure wey go work for di task. +Wetin you notice for dis data? You see say e get mix of strings, numbers, blanks and strange values wey you go need make sense. +Which kind question you fit ask this data with Regression technique? Wetin about "Predict di price of pumpkin wey dem dey sell for given month". If you look di data again, e get some changes wey you go do make data fit the structure wey this work need. ## Exercise - analyze di pumpkin data -Make we use [Pandas](https://pandas.pydata.org/), (di name mean `Python Data Analysis`) one tool wey dey very useful to shape data, to analyze and prepare dis pumpkin data. +Make we use [Pandas](https://pandas.pydata.org/), (di name mean `Python Data Analysis`) wey na tool wey make am easy to shape data, to analyze and prepare dis pumpkin data. ### First, check for missing dates -You go first need to check for missing dates: +You go first need do step to check if any date dey miss: -1. Change di dates to month format (di format na US dates, so e be `MM/DD/YYYY`). -2. Take di month put for new column. +1. Change di dates to month format (dis na US dates, so format na `MM/DD/YYYY`). +2. Cut di month come put for new column. -Open di _notebook.ipynb_ file for Visual Studio Code and import di spreadsheet into new Pandas dataframe. +Open _notebook.ipynb_ file for Visual Studio Code and import di spreadsheet into new Pandas dataframe. 1. Use di `head()` function to see di first five rows. @@ -64,30 +64,30 @@ Open di _notebook.ipynb_ file for Visual Studio Code and import di spreadsheet i pumpkins.head() ``` - ✅ Wetin be di function wey you go use to see di last five rows? + ✅ Wetin function you go use to see last five rows? -1. Check if di current dataframe get missing data: +1. Check if any data dey miss for current dataframe: ```python pumpkins.isnull().sum() ``` - E get missing data, but e fit no matter for di task wey you wan do. + Some data dey miss, but e fit no matter for dis work. -1. To make di dataframe easy to work wit, select only di columns wey you need, using di `loc` function wey dey extract from di original dataframe group of rows (di first parameter) and columns (di second parameter). Di expression `:` for di example below mean "all rows". +1. To make your dataframe easy to work with, select only di columns wey you need, using `loc` function wey go pick some rows (first parameter) and columns (second parameter) from di original dataframe. `:` for dis case mean "all rows". ```python columns_to_select = ['Package', 'Low Price', 'High Price', 'Date'] pumpkins = pumpkins.loc[:, columns_to_select] ``` -### Second, find di average price of pumpkin +### Second, find average price of pumpkin -Think about how you go fit find di average price of pumpkin for one month. Wetin be di columns wey you go pick for dis task? Hint: you go need 3 columns. +Think how to find average price of pumpkin for one month. Which columns you go choose for dis work? Hint: you go need 3 columns. -Solution: take di average of di `Low Price` and `High Price` columns to fill di new Price column, and change di Date column to show only di month. Lucky for us, di check wey we do before show say e no get missing data for dates or prices. +Solution: take average of `Low Price` and `High Price` columns to make new Price column, and change Date column to show only month. Luckily, from di check above, no date or price data dey missing. -1. To calculate di average, add dis code: +1. To calculate average, add dis code: ```python price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2 @@ -96,37 +96,38 @@ Solution: take di average of di `Low Price` and `High Price` columns to fill di ``` - ✅ Feel free to print any data wey you wan check using `print(month)`. + ✅ You fit print any data you wan check with `print(month)`. -2. Now, copy di converted data into fresh Pandas dataframe: +2. Now, copy your converted data enter new Pandas dataframe: ```python new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price}) ``` - If you print di dataframe, e go show clean, tidy dataset wey you fit use build your new regression model. + If you print your dataframe, e go show you clean, tidy dataset wey you fit use build your new regression model. + +### But wait! Something dey strange here -### But wait! Something dey odd here +If you check `Package` column, pumpkins dey sell for many different ways. Some dey sell for '1 1/9 bushel' measurements, some for '1/2 bushel', some per pumpkin, some per pound, and some dey large boxes wey get different widths. -If you look di `Package` column, you go see say pumpkins dey sell for different ways. Some dey sell for '1 1/9 bushel', some for '1/2 bushel', some per pumpkin, some per pound, and some for big boxes wey get different sizes. +> E be like say e hard well well to weigh pumpkins the same way always -> Pumpkins dey hard to weigh well-well +When you dey check original data, e get one thing interest - anything wey get `Unit of Sale` wey equal 'EACH' or 'PER BIN' still get `Package` type wey be per inch, per bin or 'each'. E be like say e dey really hard to weigh pumpkins the same consistent way, so make we use filter take only pumpkins wey get 'bushel' string for their `Package` column. -If you check di original data, e dey interesting say anything wey get `Unit of Sale` as 'EACH' or 'PER BIN' still get `Package` type per inch, per bin, or 'each'. Pumpkins dey hard to weigh well-well, so make we filter dem by selecting only pumpkins wey get di string 'bushel' for their `Package` column. -1. Add filter for di top of di file, under di initial .csv import: +1. Add one filter for top of di file, under di initial .csv import: ```python pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)] ``` - If you print di data now, you go see say you dey only get di 415 rows of data wey dey contain pumpkins by di bushel. + If you print di data now, you fit see say you dey only get di 415 or something rows of data wey get pumpkins by di bushel. -### But wait! One more thing dey to do +### But wait! E still get one more thing to do -You notice say di bushel amount dey different for each row? You go need normalize di pricing so e go show di pricing per bushel, so do some math to standardize am. +You notice say di bushel amount dey change for each row? You need to normalize di pricing so dat e go show di price per bushel, so make you do some math to standardize am. -1. Add dis lines after di block wey dey create di new_pumpkins dataframe: +1. Add these lines after di block wey dey create di new_pumpkins dataframe: ```python new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9) @@ -134,38 +135,38 @@ You notice say di bushel amount dey different for each row? You go need normaliz 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), di weight of bushel dey depend on di type of produce, as e dey measure volume. "Bushel of tomatoes, for example, suppose weigh 56 pounds... Leaves and greens dey take more space wit less weight, so bushel of spinach na only 20 pounds." E dey complicated! Make we no bother wit bushel-to-pound conversion, instead make we price by di bushel. All dis study of bushels of pumpkins show how e dey important to understand di nature of your data! +✅ According to [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), weight of bushel dey depend on di kind produce, as na volume measurement e be. "A bushel of tomatoes, for example, suppose weigh 56 pounds... Leaves and greens dey take more space but get less weight, so bushel of spinach na only 20 pounds." E dey quite complicated! Make we no try convert bushel to pound, but instead price am by di bushel. All dis study of bushels of pumpkins show well well how e important to sabi di nature of your data! -Now, you fit analyze di pricing per unit based on their bushel measurement. If you print di data one more time, you go see how e don standardize. +Now, you fit analyze di pricing per unit based on their bushel measurement. If you print di data one more time, you go fit see how e standarize. -✅ You notice say pumpkins wey dem dey sell by half-bushel dey very expensive? You fit figure out why? Hint: small pumpkins dey more expensive than big ones, probably because plenty dey per bushel, as big hollow pie pumpkin dey take space. +✅ You notice say pumpkins wey dem sell by di half-bushel dey very expensive? You fit figure why? Hint: small pumpkins dey cost pass big ones, probably because plenty small pumpkins dey one bushel, while one big hollow pie pumpkin dey waste space. ## Visualization Strategies -Part of di work of data scientist na to show di quality and nature of di data wey dem dey work wit. To do dis, dem dey create interesting visualizations, or plots, graphs, and charts, wey dey show different parts of di data. Dis way, dem fit show relationships and gaps wey dey hard to see. +Part of di work wey data scientist dey do na to show di quality and nature of di data wey dem dey work with. To do dis, dem dey often create correct visualizations, like plots, graphs, and charts, wey go show different sides of di data. With dis kind taf taf, dem fit visually show relationships and gaps wey hard to see normally. [![ML for beginners - How to Visualize Data with Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML for beginners - How to Visualize Data with Matplotlib") -> 🎥 Click di image wey dey up for short video wey go show how to visualize di data for dis lesson. +> 🎥 Click di picture above for short video wey dey show how to visualize di data for dis lesson. -Visualizations fit still help you decide di machine learning technique wey go work well for di data. Scatterplot wey dey follow line, for example, dey show say di data fit work well for linear regression exercise. +Visualizations fit also help decide which machine learning method go best for di data. For example, if scatterplot dey follow one line, e show say di data good for linear regression. -One data visualization library wey dey work well for Jupyter notebooks na [Matplotlib](https://matplotlib.org/) (you don see am for di previous lesson). +One data visualization library wey dey work well for Jupyter notebooks na [Matplotlib](https://matplotlib.org/) (wey you also see for di last lesson). -> Get more experience wit data visualization for [dis tutorials](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott). +> Get more experience with data visualization inside [these tutorials](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott). -## Exercise - try Matplotlib +## Exercise - experiment with Matplotlib -Try create some basic plots to show di new dataframe wey you don create. Wetin basic line plot go show? +Try create some basic plots to show di new dataframe wey you just create. Wetin basic line plot fit show? -1. Import Matplotlib for di top of di file, under di Pandas import: +1. Import Matplotlib for top of file under Pandas import: ```python import matplotlib.pyplot as plt ``` -1. Rerun di whole notebook to refresh. -1. For di bottom of di notebook, add cell to plot di data as box: +1. Run di complete notebook again to refresh. +1. For bottom of di notebook, add one cell to plot di data as box: ```python price = new_pumpkins.Price @@ -176,15 +177,15 @@ Try create some basic plots to show di new dataframe wey you don create. Wetin b ![A scatterplot showing price to month relationship](../../../../translated_images/pcm/scatterplot.b6868f44cbd2051c.webp) - Dis plot dey useful? E surprise you? + Na useful plot dis? E surprise you for any way? - E no too useful as e just dey show di data as spread of points for di month. + E no too useful as e only show your data spread as points for different months. ### Make am useful -To get charts wey dey useful, you go need group di data somehow. Make we try create plot wey di y axis dey show di months and di data dey show di distribution. +To make charts show useful data, you usually need to group di data somehow. Make we try create one plot wey di y axis dey show di months and di data dey show how data dey distribute. -1. Add cell to create grouped bar chart: +1. Add one cell to create grouped bar chart: ```python new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') @@ -193,19 +194,94 @@ To get charts wey dey useful, you go need group di data somehow. Make we try cre ![A bar chart showing price to month relationship](../../../../translated_images/pcm/barchart.a833ea9194346d76.webp) - Dis na more useful data visualization! E dey show say di highest price for pumpkins dey September and October. E match wetin you dey expect? Why or why not? + Dis one na more useful data visualization! E seem to show say highest price for pumpkin dey happen for September and October. E match your expectation? Why or why not? + +## Exercise - experiment with Seaborn + +Matplotlib strong well well, but e fit need plenty code to make one fine fine chart. [Seaborn](https://seaborn.pydata.org/) na library wey build _on top of_ Matplotlib designed for statistical data visualization. E dey work directly with Pandas dataframes, get nice default styles, and let you create correct plots with less code. Because Seaborn dey return Matplotlib objects, you fit still use everything wey you sabi about Matplotlib to fine-tune di result. + +> If you never get Seaborn installed, install am with `pip install seaborn`. + +1. Import Seaborn for top of di notebook, under di other imports. Dem normally dey import am as `sns`: + + ```python + import seaborn as sns + ``` + +### Scatter plots to show relationships + +One big part of exploring data before you build model na to look for _relationships_ between variables. [Scatter plot](https://en.wikipedia.org/wiki/Scatter_plot) na one of di best tools for dis: if points dey follow one line, di two variables fit dey correlated, which be good sign say linear regression model fit work. + +1. Recreate di price-to-month scatter plot from before, dis time use Seaborn's [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) (relational plot), wey dey work directly with your dataframe columns: + + ```python + sns.relplot(x="Price", y="Month", data=new_pumpkins) + ``` + + ![A Seaborn scatterplot showing price to month relationship](../../../../translated_images/pcm/relplot.a03837d8f0329cec.webp) + + Notice how you pass di _column names_ and di dataframe, and Seaborn go handle di axis labels for you. + +2. You fit change am to line plot by passing `kind="line"`. Seaborn even go draw one shaded band wey dey show di confidence interval around di line: + + ```python + sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins) + ``` + + ![A Seaborn line plot showing price to month relationship](../../../../translated_images/pcm/lineplot.f9034ba47b1e30ee.webp) + + Dis data too noisy small, so line plot no be di clearest choice here — but e show how e easy you fit change chart types inside Seaborn. + +### Bar charts to show distributions + + +Before, you bin group di data by hand to create bar chart wit Matplotlib. Seaborn's [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) (categorical plot) fit do di grouping and aggregation for you. By default `kind="bar"` dey show di mean of each category plus one black line wey dey show di confidence interval. + +1. Make bar chart of average price per month: + + ```python + sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar") + ``` + + ![A Seaborn bar chart showing the price distribution per month](../../../../translated_images/pcm/catplot.e73fc35fdf96242b.webp) + + Dis dey confirm wetin you see wit Matplotlib — prices dey peak around September and October — but Seaborn also dey show how much di price _dey change_ inside each month. + +### Heatmaps to show correlations + +Scatter plots dey compare two variables at once. When you get plenty numeric columns, one [heatmap](https://en.wikipedia.org/wiki/Heat_map) go let you see how strong di relationship between _every_ pair of columns be at the same time. Dis na common way to find which features get strong correlation before you choose wetin to put inside model (and di same kain chart dey used later to show confusion matrices for classification). + +1. Make correlation matrix wit Pandas, then draw am wit Seaborn's [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html). Di `annot=True` option dey print di correlation values for each cell: + + ```python + correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr() + sns.heatmap(correlations, annot=True, cmap="coolwarm") + ``` + + ![A Seaborn heatmap showing correlations between the numeric columns](../../../../translated_images/pcm/heatmap.bd98dce43b404c57.webp) + + Values wey close to `1` (or `-1`) mean say di columns get strong _linear_ correlation. See as `Low Price` and `High Price` almost get perfect correlation. `Month`, however, only show small linear correlation with price — even though di bar chart above show one clear seasonal peak for September and October. Dat important lesson be say: di correlation coefficient only measure _straight-line_ relationship, so e fit miss seasonal or other non-linear patterns. ✅ Why e useful to look both heatmap *and* charts like di bar chart before you decide which columns to use? + +### Matplotlib or Seaborn? + +Both libraries worth to sabi: + +- **Matplotlib** dey give you fine control over every part of chart and na di foundation nearly every other Python plotting library build on top. +- **Seaborn** dey provide higher-level functions and better defaults for statistical charts, e work direct wit dataframes, and e quick pass sometimes for exploratory data analysis. + +Normal workflow na to use Seaborn first to explore your data quick, then fall back to Matplotlib if you need customize details. --- ## 🚀Challenge -Check di different types of visualization wey Matplotlib dey offer. Which types dey best for regression problems? +Explore di different types of visualization wey Matplotlib and Seaborn dey offer. Which ones best for regression problems? ## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ml/) ## Review & Self Study -Look di many ways wey dey to visualize data. Make list of di different libraries wey dey available and note which one dey best for di type of task, like 2D visualizations vs. 3D visualizations. Wetin you discover? +Look di many ways wey you fit visualize data. Make list of the libraries wey dey available and note which one best for particular task, like 2D visualizations vs 3D visualizations. Wetin you discover? ## Assignment @@ -214,6 +290,6 @@ Look di many ways wey dey to visualize data. Make list of di different libraries --- -**Disclaimer**: -Dis dokyument don use AI transleshion service [Co-op Translator](https://github.com/Azure/co-op-translator) do di transleshion. Even as we dey try make am accurate, abeg make you sabi say automatik transleshion fit get mistake or no dey correct well. Di original dokyument wey dey for im native language na di one wey you go take as di main source. For important mata, e good make you use professional human transleshion. We no go fit take blame for any misunderstanding or wrong interpretation wey fit happen because you use dis transleshion. +**Disclaimer**: +Dis document don translate wit AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). Even tho we dey try make am correct, abeg make you know say automated translation fit get errors or mistakes. Di original document for dia own language na im be di correct source. For important info, make person wey sabi human translation do am. We no go responsible for any misunderstanding or wrong understanding wey fit happen because of dis translation. \ No newline at end of file diff --git a/translations/pcm/2-Regression/2-Data/solution/notebook.ipynb b/translations/pcm/2-Regression/2-Data/solution/notebook.ipynb index e52ddf855..7bf3815c0 100644 --- a/translations/pcm/2-Regression/2-Data/solution/notebook.ipynb +++ b/translations/pcm/2-Regression/2-Data/solution/notebook.ipynb @@ -4,7 +4,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Linear Regression for Pumpkins - Lesson 2\n" + "## Linear Regression for Pumpkins - Lekshon 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": [ + "## Visualize wit Seaborn\n", + "\n", + "[Seaborn](https://seaborn.pydata.org/) dey built ontop Matplotlib and e dey work direct wit dataframes, wey make am fast to create fine statistical plots wit small 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 wey 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**: \nDis dokyument don use AI transleshion service [Co-op Translator](https://github.com/Azure/co-op-translator) do di transleshion. Even as we dey try make am correct, abeg make you sabi say automatik transleshion fit get mistake or no dey accurate well. Di original dokyument wey dey im native language na di one wey you go take as di correct source. For important mata, e good make you use professional human transleshion. We no go fit take blame for any misunderstanding or wrong interpretation wey fit happen because you use dis transleshion.\n\n" + "---\n\n\n**Disclaimer**:\nDis document don translate wit AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). Even tho we dey try make am correct, abeg make you know say automated translation fit get errors or mistakes. Di original document for dia own language na im be di correct source. For important info, make person wey sabi human translation do am. We no go responsible for any misunderstanding or wrong understanding wey fit happen because of dis translation.\n\n" ] } ], @@ -426,13 +487,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "95726f0b8283628d5356a4f8eb8b4b76", - "translation_date": "2025-11-18T19:19:37+00:00", - "source_file": "2-Regression/2-Data/solution/notebook.ipynb", - "language_code": "pcm" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/pl/.co-op-translator.json b/translations/pl/.co-op-translator.json index 478e5fb52..8d22528b2 100644 --- a/translations/pl/.co-op-translator.json +++ b/translations/pl/.co-op-translator.json @@ -24,8 +24,8 @@ "language_code": "pl" }, "1-Introduction/3-fairness/README.md": { - "original_hash": "9a6b702d1437c0467e3c5c28d763dac2", - "translation_date": "2025-09-05T08:20:26+00:00", + "original_hash": "0f00d72169a0d37eecfd16d71e01700a", + "translation_date": "2026-07-14T08:36:23+00:00", "source_file": "1-Introduction/3-fairness/README.md", "language_code": "pl" }, @@ -54,8 +54,8 @@ "language_code": "pl" }, "2-Regression/1-Tools/README.md": { - "original_hash": "fa81d226c71d5af7a2cade31c1c92b88", - "translation_date": "2025-09-05T08:12:45+00:00", + "original_hash": "0b8635427b582d03ea4ab7089b93e505", + "translation_date": "2026-07-14T08:31:43+00:00", "source_file": "2-Regression/1-Tools/README.md", "language_code": "pl" }, @@ -72,8 +72,8 @@ "language_code": "pl" }, "2-Regression/2-Data/README.md": { - "original_hash": "7c077988328ebfe33b24d07945f16eca", - "translation_date": "2025-09-05T08:13:44+00:00", + "original_hash": "a58b2c4d16c6b122643391745ac15af6", + "translation_date": "2026-07-14T08:33:17+00:00", "source_file": "2-Regression/2-Data/README.md", "language_code": "pl" }, @@ -89,6 +89,12 @@ "source_file": "2-Regression/2-Data/solution/Julia/README.md", "language_code": "pl" }, + "2-Regression/2-Data/solution/notebook.ipynb": { + "original_hash": "96b95f8cf473481f2f371de8156f1571", + "translation_date": "2026-07-14T08:13:38+00:00", + "source_file": "2-Regression/2-Data/solution/notebook.ipynb", + "language_code": "pl" + }, "2-Regression/3-Linear/README.md": { "original_hash": "8b776e731c35b171d316d01d0e7b1369", "translation_date": "2026-04-26T20:27:18+00:00", @@ -457,7 +463,7 @@ }, "8-Reinforcement/1-QLearning/README.md": { "original_hash": "911efd5e595089000cb3c16fce1beab8", - "translation_date": "2025-09-05T08:27:35+00:00", + "translation_date": "2026-07-14T08:34:55+00:00", "source_file": "8-Reinforcement/1-QLearning/README.md", "language_code": "pl" }, @@ -523,7 +529,7 @@ }, "9-Real-World/2-Debugging-ML-Models/README.md": { "original_hash": "df2b538e8fbb3e91cf0419ae2f858675", - "translation_date": "2025-09-05T08:19:23+00:00", + "translation_date": "2026-07-14T08:38:08+00:00", "source_file": "9-Real-World/2-Debugging-ML-Models/README.md", "language_code": "pl" }, @@ -581,6 +587,19 @@ "source_file": "TROUBLESHOOTING.md", "language_code": "pl" }, + "__translation_failures__": { + "sketchnotes/LICENSE.md": { + "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f", + "source_file": "sketchnotes/LICENSE.md", + "language_code": "pl", + "failure_date": "2026-07-14T08:30: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-03T17:20:52+00:00", diff --git a/translations/pl/1-Introduction/3-fairness/README.md b/translations/pl/1-Introduction/3-fairness/README.md index e912e881f..1063ce67a 100644 --- a/translations/pl/1-Introduction/3-fairness/README.md +++ b/translations/pl/1-Introduction/3-fairness/README.md @@ -1,138 +1,159 @@ -# Budowanie rozwiązań Machine Learning z odpowiedzialną sztuczną inteligencją - -![Podsumowanie odpowiedzialnej AI w Machine Learning na szkicowej notatce](../../../../sketchnotes/ml-fairness.png) -> Szkicowa notatka autorstwa [Tomomi Imura](https://www.twitter.com/girlie_mac) +# Tworzenie rozwiązań uczenia maszynowego z odpowiedzialną AI + +![Podsumowanie odpowiedzialnej AI w uczeniu maszynowym w formie szkicu](../../../../translated_images/pl/ml-fairness.ef296ebec6afc98a.webp) +> Szkic autorstwa [Tomomi Imura](https://www.twitter.com/girlie_mac) ## [Quiz przed wykładem](https://ff-quizzes.netlify.app/en/ml/) - + ## Wprowadzenie -W tym programie nauczania zaczniesz odkrywać, jak uczenie maszynowe wpływa na nasze codzienne życie. Już teraz systemy i modele są zaangażowane w codzienne zadania decyzyjne, takie jak diagnozy medyczne, zatwierdzanie kredytów czy wykrywanie oszustw. Dlatego ważne jest, aby te modele działały dobrze i dostarczały wyniki, którym można zaufać. Podobnie jak każda aplikacja programowa, systemy AI mogą nie spełniać oczekiwań lub prowadzić do niepożądanych rezultatów. Dlatego kluczowe jest zrozumienie i wyjaśnienie zachowania modelu AI. +W tym programie nauczania zaczniesz odkrywać, jak uczenie maszynowe może wpływać i wpływa na nasze codzienne życie. Już teraz systemy i modele biorą udział w codziennych zadaniach decyzyjnych, takich jak diagnozy medyczne, zatwierdzanie pożyczek czy wykrywanie oszustw. Dlatego ważne jest, aby te modele działały dobrze i dostarczały wyniki godne zaufania. Podobnie jak każda aplikacja oprogramowania, systemy AI mogą nie spełnić oczekiwań lub mieć niepożądany rezultat. Dlatego tak istotne jest, aby rozumieć i móc wyjaśnić zachowanie modelu AI. -Wyobraź sobie, co może się stać, gdy dane używane do budowy tych modeli nie uwzględniają pewnych grup demograficznych, takich jak rasa, płeć, poglądy polityczne, religia, lub gdy są one nadmiernie reprezentowane. Co, jeśli wyniki modelu są interpretowane w sposób faworyzujący pewne grupy demograficzne? Jakie są konsekwencje dla aplikacji? Co się dzieje, gdy model prowadzi do szkodliwych rezultatów? Kto jest odpowiedzialny za zachowanie systemów AI? To są pytania, które będziemy eksplorować w tym programie nauczania. +Wyobraź sobie, co może się stać, gdy dane używane do budowy tych modeli nie zawierają pewnych grup demograficznych, takich jak rasa, płeć, poglądy polityczne, religia, lub gdy takie grupy są nierównomiernie reprezentowane. Co się stanie, gdy wyniki modelu będą interpretowane tak, aby faworyzować niektóre grupy demograficzne? Jakie będą tego konsekwencje dla aplikacji? Dodatkowo, co się stanie, gdy model da negatywny wynik i zaszkodzi ludziom? Kto jest odpowiedzialny za zachowanie systemów AI? To są pytania, które omówimy w tym programie nauczania. -W tej lekcji dowiesz się: +W tej lekcji: -- Dlaczego sprawiedliwość w uczeniu maszynowym i związane z nią szkody są tak ważne. -- Jak badać odstające przypadki i nietypowe scenariusze, aby zapewnić niezawodność i bezpieczeństwo. -- Dlaczego projektowanie inkluzywnych systemów jest kluczowe dla wzmocnienia pozycji wszystkich ludzi. -- Jak istotne jest chronienie prywatności i bezpieczeństwa danych oraz osób. -- Dlaczego podejście „szklanej skrzynki” jest ważne dla wyjaśnienia zachowania modeli AI. -- Jak odpowiedzialność buduje zaufanie do systemów AI. +- Zwiększysz świadomość na temat znaczenia sprawiedliwości w uczeniu maszynowym oraz szkodliwych skutków związanych z niesprawiedliwością. +- Zapoznasz się z praktyką badania wartości odstających i nietypowych scenariuszy, aby zapewnić niezawodność i bezpieczeństwo. +- Zdobędziesz zrozumienie potrzeby upodmiotowienia wszystkich poprzez projektowanie systemów inkluzywnych. +- Zbadasz, jak ważne jest ochronienie prywatności i bezpieczeństwa danych oraz osób. +- Zrozumiesz znaczenie podejścia typu „szklana skrzynka” do wyjaśniania zachowania modeli AI. +- Będziesz świadomy, jak istotna jest odpowiedzialność dla budowania zaufania do systemów AI. ## Wymagania wstępne -Jako wymaganie wstępne, zapoznaj się z „Zasadami odpowiedzialnej AI” w ścieżce nauki i obejrzyj poniższy film na ten temat: +Jako wymaganie wstępne, proszę ukończ ścieżkę nauki „Zasady odpowiedzialnej AI” oraz obejrzyj poniższy film na ten temat: -Dowiedz się więcej o odpowiedzialnej AI, korzystając z tej [ścieżki nauki](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) +Dowiedz się więcej o odpowiedzialnej AI, śledząc tę [Ścieżkę nauki](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) -[![Podejście Microsoftu do odpowiedzialnej AI](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Podejście Microsoftu do odpowiedzialnej AI") +[![Podejście Microsoft do odpowiedzialnej AI](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Podejście Microsoft do odpowiedzialnej AI") -> 🎥 Kliknij obrazek powyżej, aby obejrzeć film: Podejście Microsoftu do odpowiedzialnej AI +> 🎥 Kliknij obraz powyżej, aby obejrzeć film: Podejście Microsoft do odpowiedzialnej AI ## Sprawiedliwość -Systemy AI powinny traktować wszystkich sprawiedliwie i unikać różnic w traktowaniu podobnych grup ludzi. Na przykład, gdy systemy AI udzielają wskazówek dotyczących leczenia medycznego, aplikacji kredytowych czy zatrudnienia, powinny wydawać takie same rekomendacje wszystkim osobom o podobnych objawach, sytuacji finansowej czy kwalifikacjach zawodowych. Każdy z nas jako człowiek nosi w sobie odziedziczone uprzedzenia, które wpływają na nasze decyzje i działania. Te uprzedzenia mogą być widoczne w danych, które wykorzystujemy do trenowania systemów AI. Czasami takie manipulacje zdarzają się nieumyślnie. Często trudno jest świadomie zauważyć, kiedy wprowadzamy uprzedzenia do danych. +Systemy AI powinny traktować wszystkich sprawiedliwie i unikać różnicowania podobnych grup osób w różny sposób. Na przykład, gdy systemy AI udzielają wskazówek dotyczących leczenia medycznego, aplikacji o pożyczkę czy zatrudnienia, powinny udzielać tych samych rekomendacji wszystkim z podobnymi objawami, sytuacją finansową lub kwalifikacjami zawodowymi. Każdy z nas jako człowiek nosi w sobie dziedziczone uprzedzenia, które wpływają na nasze decyzje i działania. Uprzedzenia te mogą być widoczne w danych, których używamy do trenowania systemów AI. Takie manipulacje mogą czasem zachodzić nieświadomie. Często trudno jest świadomie rozpoznać, kiedy wprowadzasz stronniczość do danych. -**„Niesprawiedliwość”** obejmuje negatywne skutki, czyli „szkody”, dla grupy ludzi, takich jak te zdefiniowane na podstawie rasy, płci, wieku czy statusu niepełnosprawności. Główne szkody związane ze sprawiedliwością można sklasyfikować jako: +**„Niesprawiedliwość”** obejmuje negatywne skutki, czyli „szkody”, które dotyczą pewnej grupy ludzi, definiowanej np. przez rasę, płeć, wiek czy status niepełnosprawności. Główne szkody związane ze sprawiedliwością można sklasyfikować jako: -- **Alokacja**, gdy na przykład płeć lub etniczność jest faworyzowana kosztem innych. -- **Jakość usług**. Jeśli dane są trenowane dla jednego konkretnego scenariusza, ale rzeczywistość jest znacznie bardziej złożona, prowadzi to do słabo działającej usługi. Na przykład dozownik mydła, który nie potrafił rozpoznać osób o ciemnej skórze. [Źródło](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773) -- **Oczernianie**. Niesprawiedliwe krytykowanie i etykietowanie czegoś lub kogoś. Na przykład technologia etykietowania obrazów niesławnie błędnie oznaczyła zdjęcia osób o ciemnej skórze jako goryle. -- **Nadmierna lub niedostateczna reprezentacja**. Chodzi o to, że pewna grupa nie jest widoczna w określonym zawodzie, a każda usługa lub funkcja, która to utrwala, przyczynia się do szkody. -- **Stereotypizacja**. Przypisywanie określonej grupie z góry ustalonych cech. Na przykład system tłumaczenia językowego między angielskim a tureckim może mieć nieścisłości wynikające ze stereotypowych skojarzeń z płcią. +- **Alokacja**, jeśli np. jedna płeć lub etniczność jest faworyzowana nad inną. +- **Jakość usług**. Jeśli dane są szkolone dla jednego konkretnego scenariusza, ale rzeczywistość jest znacznie bardziej złożona, prowadzi to do słabej jakości usług. Na przykład dozownik mydła, który nie jest w stanie wykryć osób o ciemnej skórze. [Odnośnik](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773) +- **Oczernianie**. Niesprawiedliwe krytykowanie i etykietowanie czegoś lub kogoś. Na przykład technologia rozpoznawania obrazów niesłusznie oznaczyła zdjęcia osób o ciemnej skórze jako goryle. +- **Nadmierna lub niedostateczna reprezentacja**. Idea, że dana grupa nie występuje w pewnym zawodzie, a każda usługa lub funkcja, która to utrzymuje, przyczynia się do szkód. +- **Stereotypowanie**. Kojarzenie danej grupy z przypisanymi atrybutami. Na przykład system tłumaczeń między angielskim a tureckim może mieć niedokładności ze względu na słowa o stereotypowych powiązaniach z płcią. -![tłumaczenie na turecki](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) +![tłumaczenie na turecki](../../../../translated_images/pl/gender-bias-translate-en-tr.f185fd8822c2d437.webp) > tłumaczenie na turecki -![tłumaczenie z powrotem na angielski](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) +![tłumaczenie z powrotem na angielski](../../../../translated_images/pl/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) > tłumaczenie z powrotem na angielski -Podczas projektowania i testowania systemów AI musimy upewnić się, że AI jest sprawiedliwe i nie jest zaprogramowane do podejmowania stronniczych lub dyskryminujących decyzji, których ludzie również nie powinni podejmować. Zapewnienie sprawiedliwości w AI i uczeniu maszynowym pozostaje złożonym wyzwaniem socjotechnicznym. +Projektując i testując systemy AI, musimy zapewnić, że AI jest sprawiedliwa i nie jest zaprogramowana do podejmowania stronniczych lub dyskryminujących decyzji, których również zakazuje się ludziom. Zapewnienie sprawiedliwości w AI i uczeniu maszynowym pozostaje skomplikowanym wyzwaniem socjotechnicznym. ### Niezawodność i bezpieczeństwo -Aby budować zaufanie, systemy AI muszą być niezawodne, bezpieczne i spójne w normalnych i nieoczekiwanych warunkach. Ważne jest, aby wiedzieć, jak systemy AI będą się zachowywać w różnych sytuacjach, zwłaszcza w przypadku odstających przypadków. Podczas budowania rozwiązań AI należy poświęcić znaczną uwagę temu, jak radzić sobie z szeroką gamą okoliczności, które mogą napotkać rozwiązania AI. Na przykład samochód autonomiczny musi stawiać bezpieczeństwo ludzi na pierwszym miejscu. W związku z tym AI napędzające samochód musi uwzględniać wszystkie możliwe scenariusze, które samochód może napotkać, takie jak noc, burze, zamiecie śnieżne, dzieci biegnące przez ulicę, zwierzęta domowe, roboty drogowe itd. To, jak dobrze system AI radzi sobie z szerokim zakresem warunków w sposób niezawodny i bezpieczny, odzwierciedla poziom przewidywania, który naukowiec danych lub programista AI uwzględnił podczas projektowania lub testowania systemu. +Aby budować zaufanie, systemy AI muszą być niezawodne, bezpieczne i spójne w normalnych i nieoczekiwanych warunkach. Ważne jest, by znać zachowanie systemów AI w różnych sytuacjach, zwłaszcza gdy są wartościami odstającymi. Budując rozwiązania AI, należy poświęcić dużo uwagi na to, jak poradzić sobie z różnorodnymi okolicznościami, które system AI może napotkać. Na przykład samochód autonomiczny musi stawiać bezpieczeństwo ludzi na pierwszym miejscu. W efekcie AI napędzająca ten samochód musi rozważyć wszystkie możliwe scenariusze, takie jak noc, burze, śnieżyce, dzieci przebiegające przez ulicę, zwierzęta domowe, roboty drogowe itd. Jak dobrze system AI radzi sobie z szerokim zakresem warunków, odzwierciedla poziom przewidywań, które naukowiec danych lub deweloper AI uwzględnił podczas projektowania lub testowania systemu. > [🎥 Kliknij tutaj, aby obejrzeć film: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl) ### Inkluzywność -Systemy AI powinny być projektowane tak, aby angażować i wzmacniać pozycję wszystkich ludzi. Podczas projektowania i wdrażania systemów AI naukowcy danych i programiści AI identyfikują i rozwiązują potencjalne bariery w systemie, które mogłyby nieumyślnie wykluczyć ludzi. Na przykład na świecie jest 1 miliard osób z niepełnosprawnościami. Dzięki postępowi w dziedzinie AI mogą oni łatwiej uzyskiwać dostęp do szerokiego zakresu informacji i możliwości w codziennym życiu. Rozwiązywanie barier tworzy możliwości innowacji i rozwijania produktów AI z lepszymi doświadczeniami, które przynoszą korzyści wszystkim. +Systemy AI powinny być projektowane tak, aby angażować i upodmiotawiać wszystkich. Projektując i wdrażając systemy AI, naukowcy danych i deweloperzy AI identyfikują i usuwają potencjalne bariery w systemie, które mogą nieświadomie wykluczać ludzi. Na przykład na świecie jest 1 miliard osób z niepełnosprawnościami. Dzięki rozwojowi AI mogą one łatwiej mieć dostęp do szerokiej gamy informacji i możliwości w codziennym życiu. Usuwanie barier tworzy możliwości innowacji i opracowania produktów AI z lepszym doświadczeniem, które przynosi korzyści wszystkim. > [🎥 Kliknij tutaj, aby obejrzeć film: inkluzywność w AI](https://www.microsoft.com/videoplayer/embed/RE4vl9v) ### Bezpieczeństwo i prywatność -Systemy AI powinny być bezpieczne i szanować prywatność ludzi. Ludzie mają mniejsze zaufanie do systemów, które narażają ich prywatność, informacje lub życie na ryzyko. Podczas trenowania modeli uczenia maszynowego polegamy na danych, aby uzyskać najlepsze wyniki. W związku z tym należy wziąć pod uwagę pochodzenie danych i ich integralność. Na przykład, czy dane zostały dostarczone przez użytkownika, czy były publicznie dostępne? Następnie, pracując z danymi, kluczowe jest opracowanie systemów AI, które mogą chronić poufne informacje i opierać się atakom. W miarę jak AI staje się coraz bardziej powszechne, ochrona prywatności i zabezpieczanie ważnych informacji osobistych i biznesowych staje się coraz bardziej istotna i złożona. Problemy związane z prywatnością i bezpieczeństwem danych wymagają szczególnej uwagi w przypadku AI, ponieważ dostęp do danych jest niezbędny, aby systemy AI mogły dokonywać dokładnych i świadomych prognoz oraz podejmować decyzje dotyczące ludzi. +Systemy AI powinny być bezpieczne i szanować prywatność ludzi. Ludzie mniej ufają systemom, które narażają ich prywatność, informacje lub życie na ryzyko. Trenując modele uczenia maszynowego, opieramy się na danych, aby uzyskać najlepsze wyniki. W związku z tym należy rozważyć pochodzenie danych i ich integralność. Na przykład, czy dane zostały przesłane przez użytkownika, czy są publicznie dostępne? Następnie, podczas pracy z danymi, kluczowe jest opracowanie systemów AI, które chronią informacje poufne i są odporne na ataki. W miarę jak AI staje się bardziej powszechna, ochrona prywatności i zabezpieczenie ważnych informacji osobistych i biznesowych staje się coraz ważniejsze i bardziej skomplikowane. Problemy prywatności i bezpieczeństwa danych wymagają szczególnej uwagi w AI, ponieważ dostęp do danych jest niezbędny, aby systemy AI mogły dokonywać dokładnych i świadomych przewidywań oraz decyzji dotyczących ludzi. > [🎥 Kliknij tutaj, aby obejrzeć film: bezpieczeństwo w AI](https://www.microsoft.com/videoplayer/embed/RE4voJF) -- Branża poczyniła znaczące postępy w zakresie prywatności i bezpieczeństwa, w dużej mierze dzięki regulacjom takim jak GDPR (Ogólne Rozporządzenie o Ochronie Danych). -- Jednak w przypadku systemów AI musimy uznać napięcie między potrzebą większej ilości danych osobowych w celu uczynienia systemów bardziej osobistymi i skutecznymi – a prywatnością. -- Podobnie jak w przypadku narodzin połączonych komputerów z internetem, obserwujemy również ogromny wzrost liczby problemów związanych z bezpieczeństwem w kontekście AI. -- Jednocześnie widzimy, że AI jest wykorzystywane do poprawy bezpieczeństwa. Na przykład większość nowoczesnych skanerów antywirusowych jest dziś napędzana przez heurystyki AI. -- Musimy upewnić się, że nasze procesy Data Science harmonijnie współgrają z najnowszymi praktykami dotyczącymi prywatności i bezpieczeństwa. +- Jako branża dokonaliśmy znaczących postępów w zakresie prywatności i bezpieczeństwa, w dużej mierze dzięki regulacjom takim jak RODO (Ogólne rozporządzenie o ochronie danych). +- Jednak w systemach AI musimy uznać napięcie między potrzebą większej ilości danych osobowych, aby uczynić systemy bardziej osobistymi i skutecznymi – a prywatnością. +- Podobnie jak przy narodzinach połączonych komputerów z internetem, obserwujemy również gwałtowny wzrost problemów związanych z bezpieczeństwem w AI. +- Jednocześnie widzimy, że AI jest wykorzystywana do poprawy bezpieczeństwa. Na przykład większość nowoczesnych skanerów antywirusowych opiera się obecnie na heurystykach AI. +- Musimy zapewnić, że nasze procesy Data Science harmonijnie współgrają z najnowszymi praktykami w zakresie prywatności i bezpieczeństwa. -### Przejrzystość -Systemy AI powinny być zrozumiałe. Kluczowym elementem przejrzystości jest wyjaśnienie zachowania systemów AI i ich komponentów. Poprawa zrozumienia systemów AI wymaga, aby interesariusze rozumieli, jak i dlaczego działają, aby mogli zidentyfikować potencjalne problemy z wydajnością, obawy dotyczące bezpieczeństwa i prywatności, uprzedzenia, praktyki wykluczające lub niezamierzone rezultaty. Wierzymy również, że ci, którzy korzystają z systemów AI, powinni być uczciwi i otwarci w kwestii tego, kiedy, dlaczego i jak decydują się je wdrażać. A także w kwestii ograniczeń systemów, z których korzystają. Na przykład, jeśli bank korzysta z systemu AI wspierającego decyzje kredytowe dla konsumentów, ważne jest, aby przeanalizować wyniki i zrozumieć, które dane wpływają na rekomendacje systemu. Rządy zaczynają regulować AI w różnych branżach, więc naukowcy danych i organizacje muszą wyjaśnić, czy system AI spełnia wymagania regulacyjne, zwłaszcza gdy pojawia się niepożądany rezultat. +### Przejrzystość +Systemy AI powinny być zrozumiałe. Kluczową częścią przejrzystości jest wyjaśnianie zachowania systemów AI i ich komponentów. Poprawa zrozumienia systemów AI wymaga, aby interesariusze rozumieli, jak i dlaczego one funkcjonują, tak aby mogli zidentyfikować potencjalne problemy z wydajnością, bezpieczeństwem i prywatnością, uprzedzeniami, praktykami wykluczającymi lub niezamierzonymi skutkami. Wierzymy również, że osoby korzystające z systemów AI powinny być uczciwe i otwarte, kiedy, dlaczego i jak decydują się je wdrożyć, a także znać ograniczenia używanych systemów. Na przykład, jeśli bank wykorzystuje system AI do wspierania decyzji kredytowych, ważne jest, aby badać wyniki i rozumieć, które dane wpływają na rekomendacje systemu. Rządy zaczynają regulować AI w różnych branżach, dlatego naukowcy danych i organizacje muszą wyjaśnić, czy system AI spełnia wymagania regulacyjne, szczególnie gdy wystąpi niepożądany wynik. > [🎥 Kliknij tutaj, aby obejrzeć film: przejrzystość w AI](https://www.microsoft.com/videoplayer/embed/RE4voJF) - Ponieważ systemy AI są tak złożone, trudno jest zrozumieć, jak działają i interpretować wyniki. -- Ten brak zrozumienia wpływa na sposób zarządzania, operacjonalizacji i dokumentowania tych systemów. -- Co ważniejsze, brak zrozumienia wpływa na decyzje podejmowane na podstawie wyników, które te systemy produkują. +- Brak zrozumienia wpływa na sposób, w jaki systemy te są zarządzane, wdrażane i dokumentowane. +- Co ważniejsze, brak zrozumienia wpływa na decyzje podejmowane na podstawie wyników produkowanych przez te systemy. ### Odpowiedzialność + +Osoby projektujące i wdrażające systemy AI muszą być odpowiedzialne za sposób działania swoich systemów. Potrzeba odpowiedzialności jest szczególnie ważna w przypadku technologii wrażliwych, takich jak rozpoznawanie twarzy. Ostatnio rośnie zapotrzebowanie na technologię rozpoznawania twarzy, zwłaszcza ze strony organów ścigania, które widzą potencjał tej technologii w zastosowaniach, takich jak odnajdywanie zaginionych dzieci. Jednakże technologie te mogą być potencjalnie używane przez rządy do zagrożenia podstawowym wolnościom obywateli, na przykład umożliwiając ciągłe monitorowanie określonych osób. Dlatego też naukowcy danych i organizacje muszą ponosić odpowiedzialność za wpływ ich systemów AI na jednostki lub społeczeństwo. -Osoby projektujące i wdrażające systemy AI muszą być odpowiedzialne za sposób, w jaki ich systemy działają. Potrzeba odpowiedzialności jest szczególnie istotna w przypadku technologii wrażliwych, takich jak rozpoznawanie twarzy. W ostatnim czasie rośnie zapotrzebowanie na technologię rozpoznawania twarzy, zwłaszcza ze strony organizacji zajmujących się egzekwowaniem prawa, które dostrzegają potencjał tej technologii w takich zastosowaniach jak odnajdywanie zaginionych dzieci. Jednak te technologie mogą być potencjalnie wykorzystywane przez rządy do naruszania podstawowych wolności obywateli, na przykład poprzez umożliwienie ciągłego monitorowania konkretnych osób. Dlatego naukowcy danych i organizacje muszą być odpowiedzialni za to, jak ich systemy AI wpływają na jednostki lub społeczeństwo. +[![Wiodący badacz AI ostrzega przed masową inwigilacją przez rozpoznawanie twarzy](../../../../translated_images/pl/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Podejście Microsoft do odpowiedzialnej AI") -[![Czołowy badacz AI ostrzega przed masową inwigilacją za pomocą rozpoznawania twarzy](../../../../1-Introduction/3-fairness/images/accountability.png)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Podejście Microsoftu do odpowiedzialnej AI") +> 🎥 Kliknij obraz powyżej, aby obejrzeć film: Ostrzeżenia przed masową inwigilacją przez rozpoznawanie twarzy -> 🎥 Kliknij obrazek powyżej, aby obejrzeć film: Ostrzeżenia przed masową inwigilacją za pomocą rozpoznawania twarzy - -Ostatecznie jednym z największych pytań dla naszego pokolenia, jako pierwszego pokolenia wprowadzającego AI do społeczeństwa, jest to, jak zapewnić, że komputery pozostaną odpowiedzialne wobec ludzi i jak zapewnić, że osoby projektujące komputery pozostaną odpowiedzialne wobec innych. +Ostatecznie, jedno z największych pytań dla naszego pokolenia, jako pierwszego, które wprowadza AI do społeczeństwa, brzmi: jak zapewnić, aby komputery pozostały odpowiedzialne wobec ludzi oraz jak sprawić, by osoby projektujące komputery pozostały odpowiedzialne wobec wszystkich innych. ## Ocena wpływu -Przed trenowaniem modelu uczenia maszynowego ważne jest przeprowadzenie oceny wpływu, aby zrozumieć cel systemu AI; jego zamierzone zastosowanie; miejsce wdrożenia; oraz osoby, które będą wchodzić w interakcję z systemem. Są to pomocne informacje dla recenzentów lub testerów oceniających system, aby wiedzieć, jakie czynniki należy wziąć pod uwagę przy identyfikowaniu potencjalnych ryzyk i oczekiwanych konsekwencji. +Przed trenowaniem modelu uczenia maszynowego ważne jest przeprowadzenie oceny wpływu, aby zrozumieć cel systemu AI; do jakiego użytku jest przeznaczony; gdzie będzie wdrażany oraz kto będzie wchodził w interakcję z systemem. To jest pomocne dla recenzenta(ów) lub testerów oceniających system, którzy muszą wiedzieć, jakie czynniki wziąć pod uwagę przy identyfikowaniu potencjalnych ryzyk i przewidywanych konsekwencji. + +Poniżej przedstawiono obszary uwagi przy przeprowadzaniu oceny wpływu: + +* **Negatywny wpływ na jednostki**. Świadomość wszelkich ograniczeń lub wymagań, nieobsługiwanych zastosowań lub znanych ograniczeń utrudniających działanie systemu jest niezbędna, aby zapobiec wykorzystywaniu systemu w sposób mogący szkodzić jednostkom. +* **Wymagania dotyczące danych**. Zrozumienie, jak i gdzie system będzie używał danych, pozwala recenzentom zbadać wszelkie wymagania dotyczące danych, na które należy uważać (np. przepisy RODO lub HIPAA). Dodatkowo należy sprawdzić, czy źródło lub ilość danych jest wystarczająca do treningu. +* **Podsumowanie wpływu**. Sporządź listę potencjalnych szkód, które mogą wyniknąć z używania systemu. W trakcie cyklu życia ML sprawdź, czy kwestie te zostały zminimalizowane lub rozwiązane. +* **Celowe cele** dla każdego z sześciu podstawowych zasad. Oceń, czy cele z każdej zasady zostały spełnione i czy istnieją jakiekolwiek luki. + + +## Debugowanie z odpowiedzialną AI + +Podobnie jak debugowanie aplikacji oprogramowania, debugowanie systemu AI to niezbędny proces identyfikowania i rozwiązywania problemów w systemie. Istnieje wiele czynników, które mogą wpływać na to, że model nie działa zgodnie z oczekiwaniami lub odpowiedzialnie. Większość tradycyjnych metryk wydajności modelu to ilościowe agregaty wydajności modelu, które nie wystarczają do analizy, jak model narusza zasady odpowiedzialnej AI. Ponadto model uczenia maszynowego jest czarną skrzynką, co utrudnia zrozumienie, co napędza jego wynik lub wyjaśnienie, gdy popełnia błąd. W dalszej części tego kursu nauczymy się, jak korzystać z pulpitu odpowiedzialnej AI, aby pomóc w debugowaniu systemów AI. Pulpit zapewnia całościowe narzędzie dla naukowców danych i deweloperów AI do wykonywania: + +* **Analizy błędów**. Aby zidentyfikować rozkład błędów modelu, które mogą wpłynąć na sprawiedliwość lub niezawodność systemu. +* **Przeglądu modelu**. Aby odkryć miejsca, gdzie występują różnice w wydajności modelu w różnych kohortach danych. +* **Analizy danych**. Aby zrozumieć rozkład danych i zidentyfikować potencjalne uprzedzenia w danych, które mogą prowadzić do problemów ze sprawiedliwością, inkluzywnością i niezawodnością. +* **Interpretowalności modelu**. Aby zrozumieć, co wpływa lub wpływa na prognozy modelu. Pomaga to wyjaśnić zachowanie modelu, co jest ważne dla przejrzystości i odpowiedzialności. + + +## 🚀 Wyzwanie + +Aby zapobiec pojawieniu się szkód, powinniśmy: -Poniżej znajdują się obszary, na których należy się skupić podczas przeprowadzania oceny wpływu: +- zatrudniać osoby o różnorodnym pochodzeniu i perspektywach wśród zespołów pracujących nad systemami +- inwestować w zestawy danych odzwierciedlające różnorodność naszego społeczeństwa +- rozwijać lepsze metody na wszystkich etapach cyklu życia uczenia maszynowego, aby wykrywać i naprawiać problemy z odpowiedzialną AI, gdy się pojawiają -* **Negatywny wpływ na jednostki**. Ważne jest, aby być świadomym wszelkich ograniczeń lub wymagań, nieobsługiwanych zastosowań lub znanych ograniczeń utrudniających działanie systemu, aby upewnić się, że system nie jest używany w sposób, który mógłby zaszkodzić jednostkom. -* **Wymagania dotyczące danych**. Zrozumienie, jak i gdzie system będzie korzystał z danych, pozwala recenzentom zbadać wszelkie wymagania dotyczące danych, które należy uwzględnić (np. regulacje GDPR lub HIPPA). Ponadto należy sprawdzić, czy źródło lub ilość danych są wystarczające do trenowania. -* **Podsumowanie wpływu**. Zbierz listę potencjalnych szkód, które mogą wyniknąć z używania systemu. Przez cały cykl życia ML sprawdzaj, czy zidentyfikowane problemy zostały złagodzone lub rozwiązane. -* **Cele dla każdej z sześciu podstawowych zasad**. Oceń, czy cele wynikające z każdej zasady zostały osiągnięte i czy istnieją jakieś luki. +Pomyśl o scenariuszach z życia, gdzie brak wiarygodności modelu jest widoczny podczas tworzenia i używania modelu. Co jeszcze powinniśmy rozważyć? -## Debugowanie z odpowiedzialną AI +## [Quiz po wykładzie](https://ff-quizzes.netlify.app/en/ml/) -Podobnie jak debugowanie aplikacji programowej, debugowanie systemu AI jest niezbędnym procesem identyfikowania i rozwiązywania problemów w systemie. Istnieje wiele czynników, które mogą wpływać na to, że model nie działa zgodnie z oczekiwaniami lub odpowiedzialnie. Większość tradycyjnych metryk wydajności modelu to ilościowe agregaty wydajności modelu, które nie są wystarczające do analizy, w jaki sposób model narusza zasady odpowiedzialnej AI. Ponadto model uczenia maszynowego jest „czarną skrzynką”, co utrudnia zrozumienie, co napędza jego wyniki lub wyjaśnienie, dlaczego popełnia błędy. W dalszej części tego kursu nauczymy się, jak korzystać z pulpitu odpowiedzialnej AI, aby pomóc w debugowaniu systemów AI. Pulpit zapewnia kompleksowe narzędzie dla naukowców danych i programistów AI do wykonywania: +## Podsumowanie i samodzielna nauka + -* **Analizy błędów**. Aby zidentyfikować rozkład błędów modelu, który może wpływać na sprawiedliwość lub niezawodność systemu. -* **Przeglądu modelu**. Aby odkryć, gdzie występują różnice w wydajności modelu w różnych grupach danych. -* **Analizy danych**. Aby zrozumieć rozkład danych i zidentyfik -Obejrzyj ten warsztat, aby zgłębić tematy: +W tej lekcji nauczyłeś się podstaw pojęć sprawiedliwości i niesprawiedliwości w uczeniu maszynowym. + +Obejrzyj ten warsztat, aby zagłębić się w te tematy: -- W pogoni za odpowiedzialną AI: Wprowadzenie zasad w praktykę przez Besmirę Nushi, Mehrnoosh Sameki i Amita Sharmę +- W dążeniu do odpowiedzialnej sztucznej inteligencji: Wprowadzanie zasad w praktykę przez Besmirę Nushi, Mehrnoosh Sameki i Amit Sharmę -[![Responsible AI Toolbox: Otwartoźródłowe narzędzie do budowy odpowiedzialnej AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: Otwartoźródłowe narzędzie do budowy odpowiedzialnej AI") +[![Responsible AI Toolbox: An open-source framework for building responsible AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") -> 🎥 Kliknij obrazek powyżej, aby obejrzeć wideo: RAI Toolbox: Otwartoźródłowe narzędzie do budowy odpowiedzialnej AI przez Besmirę Nushi, Mehrnoosh Sameki i Amita Sharmę +> 🎥 Kliknij obraz powyżej, aby obejrzeć wideo: RAI Toolbox: Open-source’owy framework do tworzenia odpowiedzialnej SI przez Besmirę Nushi, Mehrnoosh Sameki i Amit Sharmę -Przeczytaj również: +Przeczytaj również: -- Centrum zasobów RAI Microsoftu: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) +- Centrum zasobów Microsoft ds. RAI: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) -- Grupa badawcza FATE Microsoftu: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/) +- Grupa badawcza Microsoft FATE: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/) -RAI Toolbox: +RAI Toolbox: -- [Repozytorium GitHub Responsible AI Toolbox](https://github.com/microsoft/responsible-ai-toolbox) +- [Repozytorium Responsible AI Toolbox na GitHub](https://github.com/microsoft/responsible-ai-toolbox) Przeczytaj o narzędziach Azure Machine Learning zapewniających sprawiedliwość: -- [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) ## Zadanie @@ -140,5 +161,7 @@ Przeczytaj o narzędziach Azure Machine Learning zapewniających sprawiedliwoś --- -**Zastrzeżenie**: -Ten dokument został przetłumaczony za pomocą usługi tłumaczeniowej AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż dokładamy wszelkich starań, aby zapewnić dokładność, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia wykonanego przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z korzystania z tego tłumaczenia. \ No newline at end of file + +**Zastrzeżenie**: +Niniejszy dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Choć dążymy do dokładności, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub niedokładności. Oryginalny dokument w jego języku źródłowym należy uznawać za autorytatywne źródło. W przypadku informacji krytycznych zalecane jest skorzystanie z profesjonalnego tłumaczenia wykonanego przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. + \ No newline at end of file diff --git a/translations/pl/2-Regression/1-Tools/README.md b/translations/pl/2-Regression/1-Tools/README.md index 3b3ee150f..785c22b9d 100644 --- a/translations/pl/2-Regression/1-Tools/README.md +++ b/translations/pl/2-Regression/1-Tools/README.md @@ -1,118 +1,119 @@ # Rozpocznij pracę z Pythonem i Scikit-learn dla modeli regresji -![Podsumowanie regresji w formie sketchnote](../../../../sketchnotes/ml-regression.png) +![Podsumowanie regresji w formie sketchnotu](../../../../translated_images/pl/ml-regression.4e4f70e3b3ed446e.webp) > Sketchnote autorstwa [Tomomi Imura](https://www.twitter.com/girlie_mac) -## [Quiz przed lekcją](https://ff-quizzes.netlify.app/en/ml/) +## [Quiz przed wykładem](https://ff-quizzes.netlify.app/en/ml/) -> ### [Ta lekcja jest dostępna w R!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html) +> ### [Ta lekcja dostępna jest w R!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html) -## Wprowadzenie +## Wstęp -W tych czterech lekcjach dowiesz się, jak budować modele regresji. Wkrótce omówimy, do czego one służą. Ale zanim zaczniesz, upewnij się, że masz odpowiednie narzędzia, aby rozpocząć proces! +W tych czterech lekcjach odkryjesz, jak budować modele regresji. Wkrótce omówimy, do czego służą. Ale zanim zaczniesz, upewnij się, że masz odpowiednie narzędzia do rozpoczęcia pracy! W tej lekcji nauczysz się: -- Konfigurować komputer do lokalnych zadań związanych z uczeniem maszynowym. -- Pracować z notatnikami Jupyter. -- Korzystać z Scikit-learn, w tym instalacji. -- Eksplorować regresję liniową w praktycznym ćwiczeniu. +- Konfigurować swój komputer do lokalnych zadań uczenia maszynowego. +- Pracować z Jupyter Notebooks. +- Używać Scikit-learn, w tym instalować tę bibliotekę. +- Eksplorować regresję liniową na praktycznym ćwiczeniu. ## Instalacje i konfiguracje -[![ML dla początkujących - Przygotuj narzędzia do budowy modeli uczenia maszynowego](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML dla początkujących - Przygotuj narzędzia do budowy modeli uczenia maszynowego") +[![ML dla początkujących - Skonfiguruj narzędzia do tworzenia modeli uczenia maszynowego](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML dla początkujących - Skonfiguruj swoje narzędzia do tworzenia modeli uczenia maszynowego") -> 🎥 Kliknij obrazek powyżej, aby obejrzeć krótki film o konfiguracji komputera do ML. +> 🎥 Kliknij powyższy obraz, aby zobaczyć krótki film pokazujący konfigurację komputera do ML. -1. **Zainstaluj Python**. Upewnij się, że [Python](https://www.python.org/downloads/) jest zainstalowany na Twoim komputerze. Będziesz używać Pythona do wielu zadań związanych z nauką o danych i uczeniem maszynowym. Większość systemów komputerowych ma już zainstalowanego Pythona. Dostępne są również przydatne [Pakiety Kodowania w Pythonie](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott), które ułatwiają konfigurację dla niektórych użytkowników. +1. **Zainstaluj Pythona**. Upewnij się, że [Python](https://www.python.org/downloads/) jest zainstalowany na Twoim komputerze. Będziesz używać Pythona dla wielu zadań z zakresu analizy danych i uczenia maszynowego. Większość systemów komputerowych ma już zainstalowanego Pythona. Dostępne są również przydatne [Pakiety do Kodowania w Pythonie](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott), które ułatwiają konfigurację niektórym użytkownikom. - Niektóre zastosowania Pythona wymagają jednej wersji oprogramowania, podczas gdy inne wymagają innej wersji. Z tego powodu warto pracować w [wirtualnym środowisku](https://docs.python.org/3/library/venv.html). + Jednak niektóre zastosowania Pythona wymagają jednej wersji oprogramowania, a inne innej wersji. Dlatego warto pracować w ramach [środowiska wirtualnego](https://docs.python.org/3/library/venv.html). -2. **Zainstaluj Visual Studio Code**. Upewnij się, że Visual Studio Code jest zainstalowany na Twoim komputerze. Postępuj zgodnie z tymi instrukcjami, aby [zainstalować Visual Studio Code](https://code.visualstudio.com/) w podstawowej wersji. W tym kursie będziesz używać Pythona w Visual Studio Code, więc warto zapoznać się z tym, jak [skonfigurować Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) do pracy z Pythonem. +2. **Zainstaluj Visual Studio Code**. Upewnij się, że masz zainstalowany Visual Studio Code na swoim komputerze. Postępuj zgodnie z instrukcjami, aby [zainstalować Visual Studio Code](https://code.visualstudio.com/) w podstawowej instalacji. Będziesz używać Pythona w Visual Studio Code podczas tego kursu, więc warto się także zapoznać z tym, jak [konfigurować Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) do pracy z Pythonem. - > Zapoznaj się z Pythonem, przechodząc przez tę kolekcję [modułów Learn](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) + > Zapoznaj się z Pythonem, realizując tę kolekcję [modułów nauki](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) > > [![Konfiguracja Pythona w Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Konfiguracja Pythona w Visual Studio Code") > - > 🎥 Kliknij obrazek powyżej, aby obejrzeć film: używanie Pythona w VS Code. + > 🎥 Kliknij powyższy obraz, aby zobaczyć film: używanie Pythona wewnątrz VS Code. -3. **Zainstaluj Scikit-learn**, postępując zgodnie z [tymi instrukcjami](https://scikit-learn.org/stable/install.html). Ponieważ musisz upewnić się, że używasz Pythona 3, zaleca się korzystanie z wirtualnego środowiska. Jeśli instalujesz tę bibliotekę na komputerze Mac z procesorem M1, na stronie podanej powyżej znajdują się specjalne instrukcje. +3. **Zainstaluj Scikit-learn**, postępując zgodnie z [tym instrukcjami](https://scikit-learn.org/stable/install.html). Ponieważ musisz mieć pewność, że używasz Pythona 3, zaleca się korzystanie ze środowiska wirtualnego. Uwaga, jeśli instalujesz tę bibliotekę na M1 Macu, są specjalne instrukcje na stronie powyżej. -4. **Zainstaluj Jupyter Notebook**. Musisz [zainstalować pakiet Jupyter](https://pypi.org/project/jupyter/). +1. **Zainstaluj Jupyter Notebook**. Będziesz musiał [zainstalować pakiet Jupyter](https://pypi.org/project/jupyter/). -## Twoje środowisko do tworzenia ML +## Twoje środowisko do pracy z ML -Będziesz używać **notatników** do tworzenia kodu w Pythonie i budowania modeli uczenia maszynowego. Ten typ pliku jest popularnym narzędziem dla naukowców zajmujących się danymi i można go rozpoznać po rozszerzeniu `.ipynb`. +Będziesz używać **notebooków** do tworzenia kodu w Pythonie oraz tworzenia modeli uczenia maszynowego. Ten typ pliku jest popularnym narzędziem wśród analityków danych i można go rozpoznać po rozszerzeniu `.ipynb`. -Notatniki to interaktywne środowisko, które pozwala programiście zarówno kodować, jak i dodawać notatki oraz pisać dokumentację wokół kodu, co jest bardzo pomocne w projektach eksperymentalnych lub badawczych. +Notebooki to interaktywne środowisko, które pozwala programiście zarówno pisać kod, jak i dodawać notatki oraz dokumentację wokół kodu, co jest bardzo przydatne w projektach eksperymentalnych lub badawczych. -[![ML dla początkujących - Konfiguracja Jupyter Notebooks do budowy modeli regresji](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML dla początkujących - Konfiguracja Jupyter Notebooks do budowy modeli regresji") +[![ML dla początkujących - Konfiguracja Jupyter Notebooks do rozpoczęcia budowy modeli regresji](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML dla początkujących - Konfiguracja Jupyter Notebooks do rozpoczęcia budowy modeli regresji") -> 🎥 Kliknij obrazek powyżej, aby obejrzeć krótki film przechodzący przez to ćwiczenie. +> 🎥 Kliknij powyższy obraz, aby zobaczyć krótki film przedstawiający to ćwiczenie. -### Ćwiczenie - praca z notatnikiem +### Ćwiczenie - praca z notebookiem W tym folderze znajdziesz plik _notebook.ipynb_. 1. Otwórz _notebook.ipynb_ w Visual Studio Code. - Serwer Jupyter uruchomi się z Pythonem 3+. Znajdziesz obszary notatnika, które można `uruchomić`, czyli fragmenty kodu. Możesz uruchomić blok kodu, wybierając ikonę przypominającą przycisk odtwarzania. + Serwer Jupyter uruchomi się z Pythonem 3+. Znajdziesz obszary notebooka, które można `uruchomić`, fragmenty kodu. Możesz uruchomić blok kodu, wybierając ikonę wyglądającą jak przycisk odtwarzania. -2. Wybierz ikonę `md` i dodaj trochę markdown, a następnie tekst **# Witamy w Twoim notatniku**. +1. Wybierz ikonę `md` i dodaj trochę markdown, wpisując następujący tekst **# Welcome to your notebook**. - Następnie dodaj trochę kodu w Pythonie. + Następnie dodaj trochę kodu Python. -3. Wpisz **print('hello notebook')** w bloku kodu. -4. Wybierz strzałkę, aby uruchomić kod. +1. Wpisz **print('hello notebook')** w bloku kodu. +1. Wybierz strzałkę, aby uruchomić kod. - Powinieneś zobaczyć wydrukowany komunikat: + Powinieneś zobaczyć wydrukowane zdanie: ```output hello notebook ``` -![VS Code z otwartym notatnikiem](../../../../2-Regression/1-Tools/images/notebook.jpg) +![VS Code z otwartym notebookiem](../../../../translated_images/pl/notebook.4a3ee31f396b8832.webp) -Możesz przeplatać swój kod komentarzami, aby samodokumentować notatnik. +Możesz przeplatać swój kod komentarzami, aby dokumentować notebook dla samego siebie. -✅ Zastanów się przez chwilę, jak różni się środowisko pracy programisty webowego od środowiska naukowca zajmującego się danymi. +✅ Pomyśl przez chwilę, jak bardzo różni się środowisko pracy web developera od środowiska naukowca danych. -## Rozpoczęcie pracy z Scikit-learn +## Uruchomienie Scikit-learn -Teraz, gdy Python jest skonfigurowany w Twoim lokalnym środowisku, a Ty czujesz się komfortowo z notatnikami Jupyter, czas na zapoznanie się z Scikit-learn (wymawiaj `sci` jak w `science`). Scikit-learn oferuje [rozbudowane API](https://scikit-learn.org/stable/modules/classes.html#api-ref), które pomoże Ci wykonywać zadania związane z ML. +Teraz, gdy Python jest skonfigurowany w Twoim lokalnym środowisku, a Ty czujesz się pewnie z Jupyter Notebooks, zaznajomimy się również ze Scikit-learn (wymowa `sci` jak w `science`). Scikit-learn dostarcza [obszerny API](https://scikit-learn.org/stable/modules/classes.html#api-ref), który pomoże Ci wykonywać zadania ML. -Według ich [strony internetowej](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn to otwartoźródłowa biblioteka uczenia maszynowego, która wspiera uczenie nadzorowane i nienadzorowane. Oferuje również różne narzędzia do dopasowywania modeli, przetwarzania danych, wyboru modeli i ich oceny oraz wiele innych funkcji." +Według ich [strony internetowej](https://scikit-learn.org/stable/getting_started.html), „Scikit-learn jest otwartoźródłową biblioteką do uczenia maszynowego, która wspiera uczenie nadzorowane i nienadzorowane. Zapewnia także różnorodne narzędzia do dopasowywania modeli, przetwarzania wstępnego danych, wyboru modelu i ewaluacji oraz wiele innych użytecznych funkcji.” -W tym kursie będziesz używać Scikit-learn i innych narzędzi do budowy modeli uczenia maszynowego, aby wykonywać zadania, które nazywamy 'tradycyjnym uczeniem maszynowym'. Celowo uniknęliśmy sieci neuronowych i uczenia głębokiego, ponieważ są one lepiej omówione w naszym nadchodzącym programie 'AI dla początkujących'. +W tym kursie będziesz korzystać ze Scikit-learn i innych narzędzi, aby budować modele uczenia maszynowego wykonujące tzw. „tradycyjne zadania uczenia maszynowego”. Świadomie uniknęliśmy sieci neuronowych i głębokiego uczenia, gdyż są one lepiej omówione w naszym nadchodzącym kursie „AI dla początkujących”. -Scikit-learn ułatwia budowanie modeli i ich ocenę pod kątem zastosowania. Skupia się głównie na danych numerycznych i zawiera kilka gotowych zestawów danych do wykorzystania jako narzędzia edukacyjne. Zawiera również wstępnie zbudowane modele, które studenci mogą wypróbować. Przyjrzyjmy się procesowi ładowania gotowych danych i używania wbudowanego estymatora do pierwszego modelu ML z Scikit-learn na podstawie podstawowych danych. +Scikit-learn ułatwia tworzenie modeli i ocenianie ich do użytku. Skupia się przede wszystkim na danych liczbowych i zawiera kilka gotowych zbiorów danych służących jako narzędzia do nauki. Obejmuje także gotowe modele do wypróbowania przez uczniów. Najpierw przyjrzyjmy się procesowi ładowania gotowych danych i użycia wbudowanego estymatora, aby stworzyć pierwszy model ML w Scikit-learn z podstawowymi danymi. -## Ćwiczenie - Twój pierwszy notatnik z Scikit-learn +## Ćwiczenie - Twój pierwszy notatnik Scikit-learn + +> Ten samouczek był inspirowany [przykładem regresji liniowej](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) na stronie Scikit-learn. -> Ten tutorial został zainspirowany [przykładem regresji liniowej](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) na stronie Scikit-learn. [![ML dla początkujących - Twój pierwszy projekt regresji liniowej w Pythonie](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "ML dla początkujących - Twój pierwszy projekt regresji liniowej w Pythonie") -> 🎥 Kliknij obrazek powyżej, aby obejrzeć krótki film przechodzący przez to ćwiczenie. +> 🎥 Kliknij powyższy obraz, aby zobaczyć krótki film przedstawiający to ćwiczenie. -W pliku _notebook.ipynb_ powiązanym z tą lekcją, wyczyść wszystkie komórki, naciskając ikonę 'kosza'. +W pliku _notebook.ipynb_ powiązanym z tą lekcją wyczyść wszystkie komórki, klikając ikonę „kosza”. -W tej sekcji będziesz pracować z małym zestawem danych o cukrzycy, który jest wbudowany w Scikit-learn do celów edukacyjnych. Wyobraź sobie, że chcesz przetestować leczenie dla pacjentów z cukrzycą. Modele uczenia maszynowego mogą pomóc Ci określić, którzy pacjenci lepiej zareagują na leczenie, na podstawie kombinacji zmiennych. Nawet bardzo podstawowy model regresji, gdy zostanie zwizualizowany, może pokazać informacje o zmiennych, które pomogą Ci zorganizować teoretyczne badania kliniczne. +W tej sekcji będziesz pracować z małym zbiorem danych o cukrzycy, który jest wbudowany w Scikit-learn do celów edukacyjnych. Wyobraź sobie, że chcesz przetestować leczenie dla pacjentów z cukrzycą. Modele uczenia maszynowego mogą pomóc ustalić, którzy pacjenci lepiej zareagują na leczenie na podstawie kombinacji różnych zmiennych. Nawet bardzo prosty model regresji, gdy zostanie zwizualizowany, może dostarczyć informacji o zmiennych, które pomogą Ci zorganizować teoretyczne badania kliniczne. -✅ Istnieje wiele rodzajów metod regresji, a wybór odpowiedniej zależy od pytania, na które chcesz odpowiedzieć. Jeśli chcesz przewidzieć prawdopodobny wzrost osoby w określonym wieku, użyjesz regresji liniowej, ponieważ szukasz **wartości numerycznej**. Jeśli interesuje Cię ustalenie, czy dany typ kuchni powinien być uznany za wegański, szukasz **przypisania kategorii**, więc użyjesz regresji logistycznej. Dowiesz się więcej o regresji logistycznej później. Zastanów się chwilę nad pytaniami, które możesz zadać danym, i które z tych metod byłyby bardziej odpowiednie. +✅ Istnieje wiele typów metod regresji, a wybór zależy od pytania, na które chcesz odpowiedzieć. Jeśli chcesz przewidzieć prawdopodobny wzrost osoby w danym wieku, użyjesz regresji liniowej, ponieważ szukasz **wartości liczbowej**. Jeśli natomiast chcesz odkryć, czy dany typ kuchni powinien być uznany za wegański, szukasz **przypisania do kategorii**, więc użyjesz regresji logistycznej. O regresji logistycznej dowiesz się więcej później. Pomyśl trochę o pytaniach, które możesz zadać danym, i która z tych metod byłaby odpowiednia. -Zaczynajmy. +Zaczynajmy zadanie. ### Import bibliotek Do tego zadania zaimportujemy kilka bibliotek: -- **matplotlib**. Jest to przydatne [narzędzie do tworzenia wykresów](https://matplotlib.org/), które wykorzystamy do stworzenia wykresu liniowego. -- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) to przydatna biblioteka do obsługi danych numerycznych w Pythonie. -- **sklearn**. To jest [biblioteka Scikit-learn](https://scikit-learn.org/stable/user_guide.html). +- **matplotlib**. To przydatne [narzędzie do tworzenia wykresów](https://matplotlib.org/), którego użyjemy do narysowania wykresu liniowego. +- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) to przydatna biblioteka do obsługi danych liczbowych w Pythonie. +- **sklearn**. To biblioteka [Scikit-learn](https://scikit-learn.org/stable/user_guide.html). -Zaimportuj kilka bibliotek, które pomogą w zadaniach. +Zaimportuj biblioteki, które pomogą Ci w zadaniach. 1. Dodaj importy, wpisując następujący kod: @@ -122,24 +123,24 @@ Zaimportuj kilka bibliotek, które pomogą w zadaniach. from sklearn import datasets, linear_model, model_selection ``` - Powyżej importujesz `matplotlib`, `numpy` oraz `datasets`, `linear_model` i `model_selection` z `sklearn`. `model_selection` służy do dzielenia danych na zestawy treningowe i testowe. + Powyżej importujesz skróty `matplotlib`, `numpy` oraz importujesz `datasets`, `linear_model` i `model_selection` z `sklearn`. `model_selection` służy do dzielenia danych na zestawy treningowe i testowe. -### Zestaw danych o cukrzycy +### Zbiór danych o cukrzycy -Wbudowany [zestaw danych o cukrzycy](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) zawiera 442 próbki danych dotyczących cukrzycy, z 10 zmiennymi cech, w tym: +Wbudowany [zbiór danych o cukrzycy](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) zawiera 442 próbki danych dotyczących cukrzycy, z 10 zmiennymi cechowymi, z których niektóre to: - wiek: wiek w latach - bmi: wskaźnik masy ciała - bp: średnie ciśnienie krwi -- s1 tc: komórki T (rodzaj białych krwinek) +- s1 tc: limfocyty T (rodzaj białych krwinek) -✅ Ten zestaw danych zawiera koncepcję 'płci' jako zmiennej cechy ważnej w badaniach nad cukrzycą. Wiele medycznych zestawów danych zawiera tego typu klasyfikację binarną. Zastanów się chwilę, jak takie kategoryzacje mogą wykluczać pewne części populacji z leczenia. +✅ Ten zbiór danych zawiera koncepcję „płci” jako zmiennej cechowej istotnej dla badań nad cukrzycą. Wiele medycznych zbiorów danych zawiera tego rodzaju binarną klasyfikację. Przemyśl, jak takie kategoryzacje mogą wykluczać pewne części populacji z leczenia. Teraz załaduj dane X i y. -> 🎓 Pamiętaj, że to uczenie nadzorowane, więc potrzebujemy nazwanej zmiennej docelowej 'y'. +> 🎓 Pamiętaj, że to uczenie nadzorowane i potrzebujemy nazwanej zmiennej celowej 'y'. -W nowej komórce kodu załaduj zestaw danych o cukrzycy, wywołując `load_diabetes()`. Parametr `return_X_y=True` sygnalizuje, że `X` będzie macierzą danych, a `y` będzie celem regresji. +W nowej komórce kodu załaduj zbiór danych o cukrzycy, wywołując `load_diabetes()`. Parametr `return_X_y=True` sygnalizuje, że `X` będzie macierzą danych, a `y` docelową zmienną regresji. 1. Dodaj polecenia print, aby pokazać kształt macierzy danych i jej pierwszy element: @@ -149,9 +150,9 @@ W nowej komórce kodu załaduj zestaw danych o cukrzycy, wywołując `load_diabe print(X[0]) ``` - To, co otrzymujesz jako odpowiedź, to krotka. Przypisujesz dwie pierwsze wartości krotki odpowiednio do `X` i `y`. Dowiedz się więcej [o krotkach](https://wikipedia.org/wiki/Tuple). + To, co otrzymujesz jako odpowiedź, to krotka. Przypisujesz dwie pierwsze wartości krotki do `X` oraz `y`. Dowiedz się więcej [o krotkach](https://wikipedia.org/wiki/Tuple). - Możesz zobaczyć, że te dane mają 442 elementy ułożone w tablicach po 10 elementów: + Widać, że dane zawierają 442 elementy uformowane w tablice po 10 elementów: ```text (442, 10) @@ -159,39 +160,39 @@ W nowej komórce kodu załaduj zestaw danych o cukrzycy, wywołując `load_diabe -0.04340085 -0.00259226 0.01990842 -0.01764613] ``` - ✅ Zastanów się chwilę nad związkiem między danymi a celem regresji. Regresja liniowa przewiduje związki między cechą X a zmienną docelową y. Czy możesz znaleźć [cel](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) dla zestawu danych o cukrzycy w dokumentacji? Co pokazuje ten zestaw danych, biorąc pod uwagę cel? + ✅ Pomyśl trochę o relacji między danymi a celem regresji. Regresja liniowa przewiduje zależności między cechą X a zmienną docelową y. Czy w dokumentacji możesz znaleźć [cel](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) dla zbioru danych o cukrzycy? Co ten zbiór danych pokazuje, biorąc pod uwagę ten cel? -2. Następnie wybierz część tego zestawu danych do wykreślenia, wybierając 3. kolumnę zestawu danych. Możesz to zrobić, używając operatora `:` do wyboru wszystkich wierszy, a następnie wybierając 3. kolumnę za pomocą indeksu (2). Możesz również zmienić kształt danych na tablicę 2D - jak wymaga tego wykreślenie - używając `reshape(n_rows, n_columns)`. Jeśli jeden z parametrów to -1, odpowiedni wymiar jest obliczany automatycznie. +2. Następnie wybierz część tego zbioru do wykreślenia, wybierając 3 kolumnę zbioru. Możesz to zrobić, używając operatora `:`, aby wybrać wszystkie wiersze, a następnie wybierając 3 kolumnę za pomocą indeksu (2). Możesz również przekształcić dane w tablicę 2D — wymaganą do wykresu — używając `reshape(n_rows, n_columns)`. Jeśli jeden z parametrów to -1, odpowiadający mu wymiar jest obliczany automatycznie. ```python X = X[:, 2] X = X.reshape((-1,1)) ``` - ✅ W dowolnym momencie wydrukuj dane, aby sprawdzić ich kształt. + ✅ W każdym momencie wypisz dane, aby sprawdzić ich kształt. -3. Teraz, gdy masz dane gotowe do wykreślenia, możesz sprawdzić, czy maszyna może pomóc w określeniu logicznego podziału między liczbami w tym zestawie danych. Aby to zrobić, musisz podzielić zarówno dane (X), jak i cel (y) na zestawy testowe i treningowe. Scikit-learn ma prosty sposób na to; możesz podzielić swoje dane testowe w określonym punkcie. +3. Teraz, gdy masz dane gotowe do wykresu, sprawdź, czy maszyna może pomóc ustalić logiczny podział między liczbami w tym zbiorze. Aby to zrobić, musisz podzielić zarówno dane (X), jak i cel (y) na zestawy testowe i treningowe. Scikit-learn ma prosty sposób na to — możesz podzielić dane testowe w wyznaczonym punkcie. ```python X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33) ``` -4. Teraz jesteś gotowy do trenowania swojego modelu! Załaduj model regresji liniowej i wytrenuj go za pomocą zestawów treningowych X i y, używając `model.fit()`: +4. Teraz jesteś gotowy, aby wytrenować swój model! Załaduj model regresji liniowej i wytrenuj go na swoich zestawach treningowych X i y przy użyciu `model.fit()`: ```python model = linear_model.LinearRegression() model.fit(X_train, y_train) ``` - ✅ `model.fit()` to funkcja, którą zobaczysz w wielu bibliotekach ML, takich jak TensorFlow. + ✅ `model.fit()` to funkcja, którą zobaczysz w wielu bibliotekach ML, np. w TensorFlow -5. Następnie stwórz przewidywanie, używając danych testowych, za pomocą funkcji `predict()`. Zostanie to użyte do narysowania linii między grupami danych. +5. Następnie wykonaj predykcję za pomocą danych testowych, używając funkcji `predict()`. To posłuży do narysowania linii między grupami danych ```python y_pred = model.predict(X_test) ``` -6. Teraz czas na pokazanie danych na wykresie. Matplotlib to bardzo przydatne narzędzie do tego zadania. Stwórz wykres punktowy wszystkich danych testowych X i y, a następnie użyj przewidywania, aby narysować linię w najbardziej odpowiednim miejscu, między grupami danych modelu. +6. Teraz czas pokazać dane na wykresie. Matplotlib jest bardzo przydatnym narzędziem do tego zadania. Stwórz wykres punktowy wszystkich danych testowych X i y, a następnie użyj predykcji, aby narysować linię w najbardziej odpowiednim miejscu, między grupami danych modelu. ```python plt.scatter(X_test, y_test, color='black') @@ -202,22 +203,24 @@ W nowej komórce kodu załaduj zestaw danych o cukrzycy, wywołując `load_diabe plt.show() ``` - ![wykres punktowy pokazujący dane dotyczące cukrzycy](../../../../2-Regression/1-Tools/images/scatterplot.png) -✅ Zastanów się chwilę, co tu się dzieje. Przez wiele małych punktów danych przebiega prosta linia, ale co dokładnie robi? Czy widzisz, jak można użyć tej linii do przewidzenia, gdzie nowy, niewidziany wcześniej punkt danych powinien pasować w odniesieniu do osi y wykresu? Spróbuj opisać praktyczne zastosowanie tego modelu. + ![wykres punktowy pokazujący punkty danych dotyczące cukrzycy](../../../../translated_images/pl/scatterplot.ad8b356bcbb33be6.webp) + + + ✅ Pomyśl trochę o tym, co się tutaj dzieje. Prosta linia przebiega przez wiele małych punktów danych, ale co dokładnie robi? Czy widzisz, jak powinieneś móc użyć tej linii, aby przewidzieć, gdzie nowy, niewidziany punkt danych powinien się znaleźć w odniesieniu do osi y wykresu? Spróbuj opisać praktyczne zastosowanie tego modelu. -Gratulacje, stworzyłeś swój pierwszy model regresji liniowej, wykonałeś prognozę za jego pomocą i wyświetliłeś ją na wykresie! +Gratulacje, zbudowałeś swój pierwszy model regresji liniowej, utworzyłeś na jego podstawie predykcję i wyświetliłeś ją na wykresie! --- ## 🚀Wyzwanie -Zobrazuj inną zmienną z tego zbioru danych. Wskazówka: edytuj tę linię: `X = X[:,2]`. Biorąc pod uwagę cel tego zbioru danych, co możesz odkryć na temat postępu cukrzycy jako choroby? +Wykreśl inną zmienną z tego zbioru danych. Podpowiedź: zmodyfikuj tę linię: `X = X[:,2]`. Biorąc pod uwagę cel tego zbioru danych, co możesz odkryć na temat postępu cukrzycy jako choroby? ## [Quiz po wykładzie](https://ff-quizzes.netlify.app/en/ml/) ## Przegląd i samodzielna nauka -W tym samouczku pracowałeś z prostą regresją liniową, a nie z regresją jednowymiarową czy wielowymiarową. Przeczytaj trochę o różnicach między tymi metodami lub obejrzyj [ten film](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef). +W tym samouczku pracowałeś z prostą regresją liniową, a nie z jednoliniową lub wieloliniową regresją liniową. Przeczytaj trochę o różnicach między tymi metodami lub obejrzyj [ten film](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) -Przeczytaj więcej o koncepcji regresji i zastanów się, na jakie pytania można odpowiedzieć za pomocą tej techniki. Weź udział w [tym samouczku](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott), aby pogłębić swoją wiedzę. +Przeczytaj więcej na temat pojęcia regresji i zastanów się, na jakie pytania można odpowiedzieć za pomocą tej techniki. Skorzystaj z tego [samouczka](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott), aby pogłębić swoją wiedzę. ## Zadanie @@ -225,5 +228,7 @@ Przeczytaj więcej o koncepcji regresji i zastanów się, na jakie pytania możn --- -**Zastrzeżenie**: -Ten dokument został przetłumaczony za pomocą usługi tłumaczeniowej AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż dokładamy wszelkich starań, aby tłumaczenie było precyzyjne, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia wykonanego przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z korzystania z tego tłumaczenia. \ No newline at end of file + +**Zastrzeżenie**: +Niniejszy dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Choć dążymy do dokładności, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub niedokładności. Oryginalny dokument w jego języku źródłowym należy uznawać za autorytatywne źródło. W przypadku informacji krytycznych zalecane jest skorzystanie z profesjonalnego tłumaczenia wykonanego przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. + \ No newline at end of file diff --git a/translations/pl/2-Regression/2-Data/README.md b/translations/pl/2-Regression/2-Data/README.md index f7d6d874c..95db938c4 100644 --- a/translations/pl/2-Regression/2-Data/README.md +++ b/translations/pl/2-Regression/2-Data/README.md @@ -1,62 +1,62 @@ # Budowanie modelu regresji za pomocą Scikit-learn: przygotowanie i wizualizacja danych -![Infografika wizualizacji danych](../../../../2-Regression/2-Data/images/data-visualization.png) +![Infografika wizualizacji danych](../../../../translated_images/pl/data-visualization.54e56dded7c1a804.webp) Infografika autorstwa [Dasani Madipalli](https://twitter.com/dasani_decoded) ## [Quiz przed wykładem](https://ff-quizzes.netlify.app/en/ml/) -> ### [Ta lekcja jest dostępna w języku R!](../../../../2-Regression/2-Data/solution/R/lesson_2.html) +> ### [Ta lekcja jest dostępna w R!](../../../../2-Regression/2-Data/solution/R/lesson_2.html) ## Wprowadzenie -Teraz, gdy masz już narzędzia potrzebne do rozpoczęcia budowy modeli uczenia maszynowego za pomocą Scikit-learn, możesz zacząć zadawać pytania dotyczące swoich danych. Pracując z danymi i stosując rozwiązania ML, bardzo ważne jest, aby umieć zadawać właściwe pytania, aby w pełni wykorzystać potencjał swojego zbioru danych. +Gdy masz już skonfigurowane narzędzia potrzebne do rozpoczęcia budowy modeli uczenia maszynowego za pomocą Scikit-learn, możesz zacząć zadawać pytania swoim danym. Pracując z danymi i stosując rozwiązania ML, bardzo ważne jest, aby wiedzieć, jak zadać właściwe pytanie, by odpowiednio wykorzystać potencjał swojego zbioru danych. -W tej lekcji dowiesz się: +W tej lekcji nauczysz się: - Jak przygotować dane do budowy modelu. - Jak używać Matplotlib do wizualizacji danych. +- Jak korzystać z Seaborn do bardziej wyrazistej wizualizacji danych. -## Zadawanie właściwych pytań dotyczących danych +## Zadawanie właściwego pytania swoim danym -Pytanie, na które chcesz uzyskać odpowiedź, określi, jakie algorytmy ML zastosujesz. Jakość odpowiedzi, którą uzyskasz, będzie w dużej mierze zależała od charakteru danych. +Pytanie, na które potrzebujesz odpowiedzi, określi, jakiego typu algorytmy ML wykorzystasz. A jakość uzyskanej odpowiedzi będzie w dużej mierze zależała od natury twoich danych. -Spójrz na [dane](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) dostarczone do tej lekcji. Możesz otworzyć ten plik .csv w VS Code. Szybki przegląd od razu pokazuje, że są puste pola oraz mieszanka ciągów znaków i danych numerycznych. Jest też dziwna kolumna o nazwie 'Package', w której dane to mieszanka wartości takich jak 'sacks', 'bins' i inne. Dane są, mówiąc wprost, trochę chaotyczne. +Spójrz na [dane](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) udostępnione do tej lekcji. Możesz otworzyć ten plik .csv w VS Code. Szybkie przejrzenie pokazuje natychmiast, że są tam puste miejsca oraz mieszanka danych tekstowych i numerycznych. Jest też dziwna kolumna o nazwie 'Package', gdzie dane to mieszanka 'sacks', 'bins' oraz innych wartości. Dane są w rzeczywistości dość nieuporządkowane. [![ML dla początkujących - Jak analizować i czyścić zbiór danych](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML dla początkujących - Jak analizować i czyścić zbiór danych") -> 🎥 Kliknij obrazek powyżej, aby obejrzeć krótki film o przygotowywaniu danych do tej lekcji. +> 🎥 Kliknij powyższy obraz, aby obejrzeć krótki film pokazujący przygotowanie danych do tej lekcji. -W rzeczywistości rzadko zdarza się, aby otrzymać zbiór danych, który jest całkowicie gotowy do użycia w modelu ML. W tej lekcji nauczysz się, jak przygotować surowy zbiór danych za pomocą standardowych bibliotek Pythona. Poznasz również różne techniki wizualizacji danych. +W rzeczywistości nie jest często tak, że otrzymujesz dane całkowicie gotowe do użycia od razu do stworzenia modelu ML. W tej lekcji nauczysz się, jak przygotować surowy zbiór danych przy użyciu standardowych bibliotek Pythona. Nauczysz się także różnych technik wizualizacji danych. ## Studium przypadku: 'rynek dyni' -W tym folderze znajdziesz plik .csv w katalogu głównym `data` o nazwie [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv), który zawiera 1757 wierszy danych o rynku dyni, posortowanych według miast. Są to surowe dane wyciągnięte z [Raportów Standardowych Rynków Terminalnych dla Upraw Specjalnych](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) dystrybuowanych przez Departament Rolnictwa Stanów Zjednoczonych. +W tym folderze znajdziesz plik .csv w głównym folderze `data` o nazwie [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv), który zawiera 1757 linii danych dotyczących rynku dyni, posegregowanych według miast. Są to surowe dane wyodrębnione z [Standardowych raportów z terminali rynków specjalistycznych upraw](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) dystrybuowanych przez Departament Rolnictwa Stanów Zjednoczonych. ### Przygotowanie danych -Te dane są w domenie publicznej. Można je pobrać w wielu oddzielnych plikach, po jednym dla każdego miasta, ze strony internetowej USDA. Aby uniknąć zbyt wielu oddzielnych plików, połączyliśmy wszystkie dane miejskie w jeden arkusz kalkulacyjny, więc dane zostały już trochę _przygotowane_. Teraz przyjrzyjmy się im bliżej. +Dane te są domeną publiczną. Można je pobrać w wielu osobnych plikach, po jednym na miasto, ze strony USDA. Aby uniknąć zbyt wielu osobnych plików, połączyliśmy wszystkie dane miast w jeden arkusz kalkulacyjny, więc dane są już częściowo _przygotowane_. Teraz przyjrzyjmy się danym bliżej. ### Dane o dyniach - wstępne wnioski -Co zauważasz w tych danych? Już widziałeś, że jest to mieszanka ciągów znaków, liczb, pustych pól i dziwnych wartości, które trzeba zrozumieć. - -Jakie pytanie możesz zadać tym danym, korzystając z techniki regresji? Na przykład: "Przewidzieć cenę dyni na sprzedaż w danym miesiącu". Patrząc ponownie na dane, zauważysz, że trzeba wprowadzić pewne zmiany, aby stworzyć strukturę danych potrzebną do tego zadania. +Co zauważasz w tych danych? Już widziałeś, że jest tam mieszanka tekstów, liczb, pustych miejsc i dziwnych wartości, które trzeba zrozumieć. +Jakie pytanie możesz zadać tym danym, wykorzystując technikę regresji? Na przykład: "Przewidzieć cenę dyni na sprzedaż w danym miesiącu". Patrząc na dane ponownie, istnieją pewne zmiany, które trzeba wprowadzić, aby stworzyć strukturę danych niezbędną do zadania. ## Ćwiczenie - analiza danych o dyniach -Użyjmy [Pandas](https://pandas.pydata.org/) (nazwa pochodzi od `Python Data Analysis`), narzędzia bardzo przydatnego do kształtowania danych, aby przeanalizować i przygotować dane o dyniach. +Użyjmy [Pandas](https://pandas.pydata.org/), (nazwa pochodzi od `Python Data Analysis`) narzędzia bardzo przydatnego do przekształcania danych, aby przeanalizować i przygotować te dane o dyniach. -### Najpierw sprawdź brakujące daty +### Najpierw sprawdź, czy nie brakuje dat Najpierw musisz podjąć kroki, aby sprawdzić brakujące daty: -1. Przekształć daty na format miesięczny (są to daty w formacie amerykańskim, więc format to `MM/DD/YYYY`). +1. Przekonwertuj daty do formatu miesiąca (są to daty w formacie amerykańskim, więc format to `MM/DD/YYYY`). 2. Wyodrębnij miesiąc do nowej kolumny. -Otwórz plik _notebook.ipynb_ w Visual Studio Code i zaimportuj arkusz kalkulacyjny do nowej ramki danych Pandas. +Otwórz plik _notebook.ipynb_ w Visual Studio Code i zaimportuj arkusz kalkulacyjny do nowego dataframe Pandas. -1. Użyj funkcji `head()`, aby zobaczyć pierwsze pięć wierszy. +1. Użyj funkcji `head()`, aby wyświetlić pierwsze pięć wierszy. ```python import pandas as pd @@ -64,28 +64,28 @@ Otwórz plik _notebook.ipynb_ w Visual Studio Code i zaimportuj arkusz kalkulacy pumpkins.head() ``` - ✅ Jakiej funkcji użyłbyś, aby zobaczyć ostatnie pięć wierszy? + ✅ Jaką funkcję użyłbyś, by wyświetlić ostatnie pięć wierszy? -1. Sprawdź, czy w bieżącej ramce danych są brakujące dane: +1. Sprawdź, czy w aktualnym dataframe brakuje danych: ```python pumpkins.isnull().sum() ``` - Są brakujące dane, ale może nie będą miały znaczenia dla tego zadania. + Są braki danych, ale może nie wpłyną one na zadanie. -1. Aby ułatwić pracę z ramką danych, wybierz tylko potrzebne kolumny, używając funkcji `loc`, która wyodrębnia z oryginalnej ramki danych grupę wierszy (przekazanych jako pierwszy parametr) i kolumn (przekazanych jako drugi parametr). Wyrażenie `:` w poniższym przypadku oznacza "wszystkie wiersze". +1. Aby ułatwić sobie pracę z dataframe, wybierz tylko te kolumny, których potrzebujesz, używając funkcji `loc`, która wyciąga z oryginalnego dataframe grupę wierszy (pierwszy argument) oraz kolumn (drugi argument). Wyrażenie `:` w poniższym przypadku oznacza "wszystkie wiersze". ```python columns_to_select = ['Package', 'Low Price', 'High Price', 'Date'] pumpkins = pumpkins.loc[:, columns_to_select] ``` -### Po drugie, określ średnią cenę dyni +### Po drugie, wyznacz średnią cenę dyni -Zastanów się, jak określić średnią cenę dyni w danym miesiącu. Jakie kolumny wybrałbyś do tego zadania? Podpowiedź: będziesz potrzebować 3 kolumn. +Pomyśl, jak obliczyć średnią cenę dyni w danym miesiącu. Jakie kolumny wybierzesz do tego zadania? Podpowiedź: potrzebujesz 3 kolumn. -Rozwiązanie: oblicz średnią z kolumn `Low Price` i `High Price`, aby wypełnić nową kolumnę Price, i przekształć kolumnę Date, aby pokazywała tylko miesiąc. Na szczęście, zgodnie z powyższą kontrolą, nie ma brakujących danych dotyczących dat ani cen. +Rozwiązanie: weź średnią z kolumn `Low Price` i `High Price`, aby wypełnić nową kolumnę Price, a kolumnę Date przekształć tak, aby pokazywała tylko miesiąc. Na szczęście, zgodnie z wcześniejszą kontrolą, nie brakuje danych dotyczących dat i cen. 1. Aby obliczyć średnią, dodaj następujący kod: @@ -96,37 +96,37 @@ Rozwiązanie: oblicz średnią z kolumn `Low Price` i `High Price`, aby wypełni ``` - ✅ Możesz wydrukować dowolne dane, które chcesz sprawdzić, używając `print(month)`. + ✅ Śmiało możesz wyświetlić dowolne dane za pomocą `print(month)`, by je sprawdzić. -2. Teraz skopiuj przekształcone dane do nowej ramki danych Pandas: +2. Teraz skopiuj przekształcone dane do nowego dataframe Pandas: ```python new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price}) ``` - Wyświetlenie ramki danych pokaże ci czysty, uporządkowany zbiór danych, na którym możesz zbudować nowy model regresji. + Wyświetlenie dataframe pokaże ci czysty, uporządkowany zbiór danych, na którym możesz zbudować swój nowy model regresji. -### Ale chwila! Coś tu jest dziwnego +### Ale chwileczkę! Jest coś niepokojącego -Jeśli spojrzysz na kolumnę `Package`, dynie są sprzedawane w wielu różnych konfiguracjach. Niektóre są sprzedawane w miarach '1 1/9 bushel', inne w '1/2 bushel', niektóre na sztuki, inne na funty, a jeszcze inne w dużych pudełkach o różnych rozmiarach. +Jeśli spojrzysz na kolumnę `Package`, dynie są sprzedawane w wielu różnych konfiguracjach. Niektóre są sprzedawane w miarach '1 1/9 bushel', inne w '1/2 bushel', jeszcze inne na sztuki, na funty, a niektóre w dużych skrzyniach o różnych szerokościach. -> Dynie wydają się bardzo trudne do ważenia w sposób spójny +> Dynie wydają się bardzo trudne do jednolitego ważenia -Zaglądając do oryginalnych danych, interesujące jest to, że wszystko, co ma `Unit of Sale` równe 'EACH' lub 'PER BIN', ma również typ `Package` na cal, na pojemnik lub 'każda'. Dynie wydają się bardzo trudne do ważenia w sposób spójny, więc przefiltrujmy je, wybierając tylko dynie z ciągiem 'bushel' w kolumnie `Package`. +Zagłębiając się w oryginalne dane, interesujące jest, że wszystko z `Unit of Sale` równym 'EACH' lub 'PER BIN' ma również typ `Package` na jednostkę calową, na bin lub 'sztukę'. Dynie są więc bardzo trudne do jednolitego ważenia, więc przefiltrujmy je, wybierając tylko dynie z ciągiem 'bushel' w kolumnie `Package`. -1. Dodaj filtr na początku pliku, pod początkowym importem .csv: +1. Dodaj filtr na początku pliku, pod importem pliku .csv: ```python pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)] ``` - Jeśli teraz wydrukujesz dane, zobaczysz, że masz tylko około 415 wierszy danych zawierających dynie sprzedawane na buszel. + Jeśli teraz wyświetlisz dane, zobaczysz, że otrzymujesz tylko około 415 wierszy z dyniami sprzedawanymi na bushels. -### Ale chwila! Jest jeszcze jedna rzecz do zrobienia +### Ale chwileczkę! Jest jeszcze jedna rzecz do zrobienia -Czy zauważyłeś, że ilość buszli różni się w zależności od wiersza? Musisz znormalizować ceny, aby pokazać ceny za buszel, więc wykonaj kilka obliczeń, aby je ujednolicić. +Zauważyłeś, że ilość busheli różni się w poszczególnych wierszach? Musisz znormalizować ceny tak, aby pokazać ceny za bushel, więc wykonaj trochę obliczeń, aby to ustandaryzować. -1. Dodaj te linie po bloku tworzącym ramkę danych `new_pumpkins`: +1. Dodaj poniższe linijki po bloku tworzącym dataframe new_pumpkins: ```python new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9) @@ -134,38 +134,38 @@ Czy zauważyłeś, że ilość buszli różni się w zależności od wiersza? Mu new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2) ``` -✅ Według [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), waga buszla zależy od rodzaju produktu, ponieważ jest to miara objętości. "Buszel pomidorów, na przykład, powinien ważyć 56 funtów... Liście i zielenina zajmują więcej miejsca przy mniejszej wadze, więc buszel szpinaku waży tylko 20 funtów." To wszystko jest dość skomplikowane! Nie przejmujmy się przeliczaniem buszli na funty i zamiast tego wyceńmy je na buszel. Całe to badanie buszli dyni pokazuje jednak, jak ważne jest zrozumienie natury swoich danych! +✅ Według [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), waga bushela zależy od rodzaju produktu, ponieważ jest to jednostka objętości. "Buszel pomidorów, na przykład, waży około 56 funtów... Liście i zielone warzywa zajmują więcej miejsca przy mniejszej wadze, więc buszel szpinaku waży tylko 20 funtów." To wszystko dość skomplikowane! Nie będziemy przeprowadzać konwersji z buszeli na funty, a zamiast tego będziemy wyceniać za buszel. Całe to badanie buszeli dyni pokazuje jednak, jak ważne jest zrozumienie charakteru swoich danych! -Teraz możesz analizować ceny za jednostkę na podstawie ich miary buszla. Jeśli wydrukujesz dane jeszcze raz, zobaczysz, jak zostały ujednolicone. +Teraz możesz analizować ceny jednostkowe bazując na ich pomiarze na bushel. Jeśli jeszcze raz wyświetlisz dane, zobaczysz, jak są ustandaryzowane. -✅ Czy zauważyłeś, że dynie sprzedawane na pół buszla są bardzo drogie? Czy potrafisz wyjaśnić dlaczego? Podpowiedź: małe dynie są znacznie droższe niż duże, prawdopodobnie dlatego, że jest ich znacznie więcej na buszel, biorąc pod uwagę niewykorzystaną przestrzeń zajmowaną przez jedną dużą pustą dynię na ciasto. +✅ Zauważyłeś, że dynie sprzedawane na pół buszela są bardzo drogie? Potrafisz zgadnąć dlaczego? Podpowiedź: małe dynie są znacznie droższe niż duże, prawdopodobnie dlatego, że w buszlu jest ich znacznie więcej, ze względu na niewykorzystaną przestrzeń zajmowaną przez dużą, pustą dynię na ciasto. ## Strategie wizualizacji -Częścią roli naukowca danych jest demonstrowanie jakości i charakteru danych, z którymi pracuje. Aby to zrobić, często tworzą interesujące wizualizacje, takie jak wykresy punktowe, słupkowe czy liniowe, pokazujące różne aspekty danych. W ten sposób mogą wizualnie pokazać relacje i luki, które w przeciwnym razie byłyby trudne do odkrycia. +Częścią pracy data scientist jest demonstrowanie jakości i charakteru danych, z którymi pracuje. W tym celu często tworzą interesujące wizualizacje, takie jak wykresy, diagramy i grafiki, pokazujące różne aspekty danych. Dzięki temu są w stanie wizualnie ujawnić związki i luki, które inaczej trudno zauważyć. [![ML dla początkujących - Jak wizualizować dane za pomocą Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML dla początkujących - Jak wizualizować dane za pomocą Matplotlib") -> 🎥 Kliknij obrazek powyżej, aby obejrzeć krótki film o wizualizacji danych do tej lekcji. +> 🎥 Kliknij powyższy obraz, aby obejrzeć krótki film pokazujący wizualizację danych w tej lekcji. -Wizualizacje mogą również pomóc w określeniu techniki uczenia maszynowego najbardziej odpowiedniej dla danych. Na przykład wykres punktowy, który wydaje się podążać za linią, wskazuje, że dane są dobrym kandydatem do ćwiczenia regresji liniowej. +Wizualizacje mogą również pomóc ustalić, która technika uczenia maszynowego najlepiej nadaje się do danych. Na przykład wykres punktowy, który wydaje się podążać linią, wskazuje, że dane są dobrym kandydatem do zadania regresji liniowej. -Jedną z bibliotek wizualizacji danych, która dobrze działa w notatnikach Jupyter, jest [Matplotlib](https://matplotlib.org/) (którą widziałeś również w poprzedniej lekcji). +Jedną z bibliotek do wizualizacji danych, która dobrze działa w notatnikach Jupyter, jest [Matplotlib](https://matplotlib.org/) (którą też widziałeś w poprzedniej lekcji). -> Zdobądź więcej doświadczenia z wizualizacją danych w [tych samouczkach](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott). +> Zdobądź więcej praktyki z wizualizacją danych w [tych samouczkach](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott). -## Ćwiczenie - eksperymentowanie z Matplotlib +## Ćwiczenie - eksperymentuj z Matplotlib -Spróbuj stworzyć podstawowe wykresy, aby wyświetlić nową ramkę danych, którą właśnie stworzyłeś. Co pokaże podstawowy wykres liniowy? +Spróbuj stworzyć kilka podstawowych wykresów, aby wyświetlić nowy dataframe, który właśnie utworzyłeś. Co pokazałby podstawowy wykres liniowy? -1. Zaimportuj Matplotlib na początku pliku, pod importem Pandas: +1. Zaimportuj Matplotlib na górze pliku, pod importem Pandas: ```python import matplotlib.pyplot as plt ``` -1. Uruchom ponownie cały notatnik, aby odświeżyć. -1. Na dole notatnika dodaj komórkę, aby narysować dane jako wykres pudełkowy: +1. Uruchom ponownie cały notatnik, aby odświeżyć dane. +1. Na dole notatnika dodaj komórkę, by wyświetlić wykres w formie pudełka: ```python price = new_pumpkins.Price @@ -174,44 +174,121 @@ Spróbuj stworzyć podstawowe wykresy, aby wyświetlić nową ramkę danych, kt plt.show() ``` - ![Wykres punktowy pokazujący relację ceny do miesiąca](../../../../2-Regression/2-Data/images/scatterplot.png) + ![Wykres punktowy pokazujący zależność ceny od miesiąca](../../../../translated_images/pl/scatterplot.b6868f44cbd2051c.webp) - Czy ten wykres jest użyteczny? Czy coś cię w nim zaskakuje? + Czy to jest użyteczny wykres? Czy coś Cię zaskakuje? - Nie jest szczególnie użyteczny, ponieważ pokazuje jedynie rozkład punktów w danym miesiącu. + Nie jest on szczególnie użyteczny, bo pokazuje tylko rozrzut punktów w danych dla danych miesięcy. ### Uczyń go użytecznym -Aby wykresy pokazywały użyteczne dane, zazwyczaj trzeba jakoś pogrupować dane. Spróbujmy stworzyć wykres, na którym oś y pokazuje miesiące, a dane przedstawiają rozkład. +Aby wykresy pokazywały użyteczne dane, zwykle trzeba grupować dane w jakiś sposób. Spróbujmy stworzyć wykres, gdzie oś Y pokazuje miesiące, a dane pokazują rozkład danych. -1. Dodaj komórkę, aby stworzyć grupowany wykres słupkowy: +1. Dodaj komórkę, aby stworzyć wykres słupkowy z grupowaniem: ```python new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') plt.ylabel("Pumpkin Price") ``` - ![Wykres słupkowy pokazujący relację ceny do miesiąca](../../../../2-Regression/2-Data/images/barchart.png) + ![Diagram słupkowy pokazujący zależność ceny od miesiąca](../../../../translated_images/pl/barchart.a833ea9194346d76.webp) + + To jest bardziej użyteczna wizualizacja! Wskazuje, że najwyższa cena za dynie występuje we wrześniu i październiku. Czy to jest zgodne z Twoimi oczekiwaniami? Dlaczego tak lub dlaczego nie? + +## Ćwiczenie - eksperymentuj z Seaborn + +Matplotlib jest potężny, ale do stworzenia atrakcyjnego wykresu potrzeba dużo kodu. [Seaborn](https://seaborn.pydata.org/) to biblioteka zbudowana _na podstawie_ Matplotlib, zaprojektowana do statystycznej wizualizacji danych. Działa bezpośrednio z dataframe Pandas, stosuje atrakcyjne domyślne style i pozwala tworzyć informatywne wykresy z znacznie mniejszą ilością kodu. Ponieważ Seaborn zwraca obiekty Matplotlib, nadal możesz używać wszystkiego, co już wiesz o Matplotlib, aby dopracować wynik. + +> Jeśli jeszcze nie masz zainstalowanego Seaborn, zainstaluj go za pomocą `pip install seaborn`. + +1. Zaimportuj Seaborn na górze notatnika, pod pozostałymi importami. Konwencjonalnie importuje się je jako `sns`: + + ```python + import seaborn as sns + ``` + +### Wykresy punktowe pokazujące zależności + +Duża część eksploracji danych przed budową modelu polega na poszukiwaniu _zależności_ między zmiennymi. [Wykres punktowy](https://en.wikipedia.org/wiki/Scatter_plot) jest jednym z najlepszych narzędzi do tego celu: jeśli punkty wydają się podążać linią, dwie zmienne mogą być skorelowane, co jest dobrym znakiem, że model regresji liniowej może działać. + +1. Odwzoruj ponownie wykres ceny w funkcji miesiąca z wcześniejszego przykładu, tym razem używając funkcji Seaborn [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) (wykres relacyjny), która działa bezpośrednio z kolumnami dataframe: + + ```python + sns.relplot(x="Price", y="Month", data=new_pumpkins) + ``` + + ![Wykres punktowy Seaborn pokazujący zależność ceny od miesiąca](../../../../translated_images/pl/relplot.a03837d8f0329cec.webp) + + Zwróć uwagę, jak podajesz _nazwy kolumn_ oraz dataframe, a Seaborn sam zadba o etykiety osi. + +2. Możesz przełączyć się na wykres liniowy, podając `kind="line"`. Seaborn rysuje nawet zacieniony pas pokazujący przedział ufności wokół linii: + + ```python + sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins) + ``` + + ![Wykres liniowy Seaborn pokazujący zależność ceny od miesiąca](../../../../translated_images/pl/lineplot.f9034ba47b1e30ee.webp) + + Te dane są dość hałaśliwe, więc wykres liniowy nie jest tutaj najczytelniejszym wyborem — ale pokazuje, jak łatwo zmienić typ wykresu w Seaborn. + +### Wykresy słupkowe pokazujące rozkłady + + +Wcześniej grupowałeś dane ręcznie, aby stworzyć wykres słupkowy za pomocą Matplotlib. Funkcja Seaborn [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) (wykres kategoryczny) może wykonać grupowanie i agregację za Ciebie. Domyślnie `kind="bar"` pokazuje średnią dla każdej kategorii wraz z czarną linią wskazującą przedział ufności. + +1. Stwórz wykres słupkowy średniej ceny na miesiąc: + + ```python + sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar") + ``` + + ![Wykres słupkowy Seaborn pokazujący rozkład cen na miesiąc](../../../../translated_images/pl/catplot.e73fc35fdf96242b.webp) + + Potwierdza to, co widziałeś z Matplotlib — ceny osiągają szczyt wokół września i października — ale Seaborn pokazuje również, jak bardzo cena _zróżnicowana_ jest w każdym miesiącu. + +### Mapy cieplne do pokazywania korelacji + +Wykresy punktowe porównują dwie zmienne naraz. Gdy masz kilka kolumn numerycznych, [mapa cieplna](https://en.wikipedia.org/wiki/Heat_map) pozwala zobaczyć siłę relacji pomiędzy _każdą_ parą kolumn jednocześnie. To popularny sposób, by zauważyć, które cechy są najbardziej skorelowane przed wyborem, co wprowadzić do modelu (a ten sam rodzaj wykresu jest później używany do wyświetlania macierzy konfuzji w klasyfikacji). + +1. Zbuduj macierz korelacji za pomocą Pandas, a następnie narysuj ją za pomocą Seaborn [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html). Opcja `annot=True` drukuje wartości korelacji w każdej komórce: + + ```python + correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr() + sns.heatmap(correlations, annot=True, cmap="coolwarm") + ``` + + ![Mapa cieplna Seaborn pokazująca korelacje między kolumnami numerycznymi](../../../../translated_images/pl/heatmap.bd98dce43b404c57.webp) + + Wartości bliskie `1` (lub `-1`) oznaczają, że kolumny są silnie _liniowo_ skorelowane. Zauważ, jak `Low Price` i `High Price` są prawie doskonale skorelowane. `Month`, z drugiej strony, pokazuje tylko słabą korelację liniową z ceną — mimo że wykres słupkowy powyżej ujawnił wyraźny sezonowy szczyt we wrześniu i październiku. To ważna lekcja: współczynnik korelacji mierzy tylko _prostoliniowe_ zależności, więc może nie dostrzec sezonowych lub innych nieliniowych wzorców. ✅ Dlaczego warto spojrzeć zarówno na mapę cieplną, *jak i* wykresy takie jak wykres słupkowy przed podjęciem decyzji, które kolumny wykorzystać? + +### Matplotlib czy Seaborn? + +Obie biblioteki warto znać: + +- **Matplotlib** daje Ci szczegółową kontrolę nad każdym elementem wykresu i jest fundamentem, na którym opiera się niemal każda inna biblioteka do wykresów w Pythonie. +- **Seaborn** zapewnia funkcje wyższego poziomu i atrakcyjne domyślne ustawienia dla wykresów statystycznych, działa bezpośrednio na data framach i często jest szybszy w eksploracyjnej analizie danych. - To jest bardziej użyteczna wizualizacja danych! Wydaje się wskazywać, że najwyższe ceny dyni występują we wrześniu i październiku. Czy to odpowiada twoim oczekiwaniom? Dlaczego tak lub dlaczego nie? +Powszechnym sposobem pracy jest sięgnięcie po Seaborn, by szybko zbadać dane, a następnie zejść do Matplotlib, gdy potrzebujesz dostosować szczegóły. --- -## 🚀 Wyzwanie +## 🚀Wyzwanie -Zbadaj różne typy wizualizacji oferowane przez Matplotlib. Które typy są najbardziej odpowiednie dla problemów regresji? +Zbadaj różne typy wizualizacji oferowane przez Matplotlib i Seaborn. Które typy są najbardziej odpowiednie dla problemów regresji? ## [Quiz po wykładzie](https://ff-quizzes.netlify.app/en/ml/) ## Przegląd i samodzielna nauka -Przyjrzyj się różnym sposobom wizualizacji danych. Sporządź listę różnych dostępnych bibliotek i zanotuj, które są najlepsze do określonych typów zadań, na przykład wizualizacji 2D vs. 3D. Co odkrywasz? +Przyjrzyj się wielu sposobom wizualizacji danych. Sporządź listę dostępnych bibliotek i zaznacz, które są najlepsze do określonych zadań, na przykład wizualizacje 2D vs. 3D. Co odkryjesz? ## Zadanie -[Odkrywanie wizualizacji](assignment.md) +[Eksplorowanie wizualizacji](assignment.md) --- -**Zastrzeżenie**: -Ten dokument został przetłumaczony za pomocą usługi tłumaczeniowej AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż dokładamy wszelkich starań, aby zapewnić dokładność, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia wykonanego przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z korzystania z tego tłumaczenia. \ No newline at end of file + +**Zastrzeżenie**: +Niniejszy dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Choć dążymy do dokładności, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub niedokładności. Oryginalny dokument w jego języku źródłowym należy uznawać za autorytatywne źródło. W przypadku informacji krytycznych zalecane jest skorzystanie z profesjonalnego tłumaczenia wykonanego przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. + \ No newline at end of file diff --git a/translations/pl/2-Regression/2-Data/solution/notebook.ipynb b/translations/pl/2-Regression/2-Data/solution/notebook.ipynb index 6bd52a412..6ddfa3538 100644 --- a/translations/pl/2-Regression/2-Data/solution/notebook.ipynb +++ b/translations/pl/2-Regression/2-Data/solution/notebook.ipynb @@ -3,7 +3,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "## Regresja liniowa dla dyń - Lekcja 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": [ + "## Wizualizacja za pomocą Seaborn\n", + "\n", + "[Seaborn](https://seaborn.pydata.org/) jest zbudowany na bazie Matplotlib i działa bezpośrednio z dataframe’ami, co pozwala szybko tworzyć atrakcyjne wykresy statystyczne przy minimalnej ilości kodu.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Wykresy rozproszenia do pokazywania zależności\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": [ + "### Wykresy słupkowe do pokazywania rozkładów\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**Zastrzeżenie**: \nTen dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż dokładamy wszelkich starań, aby tłumaczenie było precyzyjne, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za źródło autorytatywne. W przypadku informacji o kluczowym znaczeniu zaleca się skorzystanie z profesjonalnego tłumaczenia wykonanego przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia.\n" + "### Mapy ciepła pokazujące korelacje\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**Zastrzeżenie**:\nNiniejszy dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Choć dążymy do dokładności, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub niedokładności. Oryginalny dokument w jego języku źródłowym należy uznawać za autorytatywne źródło. W przypadku informacji krytycznych zalecane jest skorzystanie z profesjonalnego tłumaczenia wykonanego przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia.\n\n" ] } ], @@ -424,13 +487,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "95726f0b8283628d5356a4f8eb8b4b76", - "translation_date": "2025-09-03T19:44:56+00:00", - "source_file": "2-Regression/2-Data/solution/notebook.ipynb", - "language_code": "pl" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/pl/8-Reinforcement/1-QLearning/README.md b/translations/pl/8-Reinforcement/1-QLearning/README.md index ce8b335a4..6ed4d5803 100644 --- a/translations/pl/8-Reinforcement/1-QLearning/README.md +++ b/translations/pl/8-Reinforcement/1-QLearning/README.md @@ -1,47 +1,47 @@ # Wprowadzenie do uczenia ze wzmocnieniem i Q-Learningu -![Podsumowanie uczenia ze wzmocnieniem w uczeniu maszynowym w formie sketchnote](../../../../sketchnotes/ml-reinforcement.png) +![Podsumowanie wzmocnienia w uczeniu maszynowym w formie sketchnota](../../../../translated_images/pl/ml-reinforcement.94024374d63348db.webp) > Sketchnote autorstwa [Tomomi Imura](https://www.twitter.com/girlie_mac) -Uczenie ze wzmocnieniem opiera się na trzech kluczowych pojęciach: agencie, stanach oraz zestawie akcji dla każdego stanu. Wykonując akcję w określonym stanie, agent otrzymuje nagrodę. Wyobraź sobie grę komputerową Super Mario. Jesteś Mario, znajdujesz się na poziomie gry, stojąc obok krawędzi klifu. Nad tobą jest moneta. Ty, jako Mario, w poziomie gry, w określonej pozycji... to twój stan. Przesunięcie się o krok w prawo (akcja) spowoduje, że spadniesz z klifu, co da ci niską wartość punktową. Jednak naciśnięcie przycisku skoku pozwoli ci zdobyć punkt i pozostać przy życiu. To pozytywny wynik, który powinien nagrodzić cię dodatnią wartością punktową. +Uczenie ze wzmocnieniem obejmuje trzy ważne pojęcia: agenta, pewne stany oraz zestaw akcji dla każdego stanu. Poprzez wykonanie akcji w określonym stanie agent otrzymuje nagrodę. Ponownie wyobraź sobie grę komputerową Super Mario. Jesteś Mario, znajdujesz się na poziomie gry, stojąc tuż przy krawędzi przepaści. Nad tobą jest moneta. Ty, jako Mario, na poziomie gry, w określonej pozycji ... to jest twój stan. Przesunięcie się o krok w prawo (akcja) spowoduje, że spadniesz z krawędzi, co da ci niski wynik liczbowy. Naciśnięcie przycisku skoku pozwoli ci zdobyć punkt i pozostać przy życiu. To jest pozytywny rezultat, za który powinna być przyznana dodatnia wartość liczbową. -Korzystając z uczenia ze wzmocnieniem i symulatora (gry), możesz nauczyć się grać w grę, aby maksymalizować nagrodę, czyli pozostawać przy życiu i zdobywać jak najwięcej punktów. +Korzystając z uczenia ze wzmocnieniem i symulatora (gry), możesz nauczyć się grać maksymalizując nagrodę, którą jest pozostanie przy życiu i zdobycie jak największej liczby punktów. [![Wprowadzenie do uczenia ze wzmocnieniem](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) -> 🎥 Kliknij obrazek powyżej, aby posłuchać Dmitry'ego omawiającego uczenie ze wzmocnieniem +> 🎥 Kliknij obraz powyżej, aby posłuchać Dmitry'ego omawiającego uczenie ze wzmocnieniem ## [Quiz przed wykładem](https://ff-quizzes.netlify.app/en/ml/) ## Wymagania wstępne i konfiguracja -W tej lekcji będziemy eksperymentować z kodem w Pythonie. Powinieneś być w stanie uruchomić kod z Jupyter Notebook z tej lekcji, zarówno na swoim komputerze, jak i w chmurze. +W tej lekcji będziemy eksperymentować z kodem w Pythonie. Powinieneś być w stanie uruchomić kod z notatnika Jupyter z tej lekcji, zarówno na swoim komputerze, jak i w chmurze. -Możesz otworzyć [notebook lekcji](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) i przejść przez tę lekcję, aby ją zbudować. +Możesz otworzyć [notatnik lekcji](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) i przejść przez tę lekcję, aby zbudować projekt. -> **Uwaga:** Jeśli otwierasz ten kod z chmury, musisz również pobrać plik [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), który jest używany w kodzie notebooka. Dodaj go do tego samego katalogu co notebook. +> **Uwaga:** Jeśli otwierasz ten kod z chmury, musisz również pobrać plik [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), który jest używany w kodzie notatnika. Dodaj go do tego samego katalogu co notatnik. ## Wprowadzenie -W tej lekcji zagłębimy się w świat **[Piotrusia i Wilka](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)**, inspirowany muzyczną bajką rosyjskiego kompozytora, [Siergieja Prokofiewa](https://en.wikipedia.org/wiki/Sergei_Prokofiev). Wykorzystamy **uczenie ze wzmocnieniem**, aby pozwolić Piotrusiowi eksplorować swoje otoczenie, zbierać smaczne jabłka i unikać spotkania z wilkiem. +W tej lekcji poznamy świat **[Piotrusia i Wilka](https://pl.wikipedia.org/wiki/Piotruś_i_wilk)**, zainspirowany muzyczną baśnią rosyjskiego kompozytora, [Siergieja Prokofjewa](https://pl.wikipedia.org/wiki/Siergiej_Prokofjew). Użyjemy **uczenia ze wzmocnieniem**, aby pozwolić Piotrusiowi eksplorować środowisko, zbierać smaczne jabłka i unikać wilka. -**Uczenie ze wzmocnieniem** (RL) to technika uczenia, która pozwala nam nauczyć się optymalnego zachowania **agenta** w określonym **środowisku** poprzez przeprowadzanie wielu eksperymentów. Agent w tym środowisku powinien mieć jakiś **cel**, zdefiniowany przez **funkcję nagrody**. +**Uczenie ze wzmocnieniem** (RL) to technika uczenia, która pozwala nauczyć optymalne zachowanie **agenta** w pewnym **środowisku** poprzez przeprowadzenie wielu eksperymentów. Agent w tym środowisku powinien mieć jakiś **cel**, określony przez **funkcję nagrody**. ## Środowisko -Dla uproszczenia, wyobraźmy sobie świat Piotrusia jako kwadratową planszę o rozmiarze `szerokość` x `wysokość`, jak poniżej: +Dla uproszczenia rozważmy świat Piotrusia jako kwadratową planszę o rozmiarze `width` x `height`, taką jak ta: -![Środowisko Piotrusia](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![Środowisko Piotrusia](../../../../translated_images/pl/environment.40ba3cb66256c93f.webp) -Każda komórka na tej planszy może być: +Każde pole na tej planszy może być: * **ziemią**, po której Piotruś i inne stworzenia mogą chodzić. * **wodą**, po której oczywiście nie można chodzić. * **drzewem** lub **trawą**, miejscem, gdzie można odpocząć. -* **jabłkiem**, które Piotruś chętnie znajdzie, aby się nakarmić. -* **wilkiem**, który jest niebezpieczny i należy go unikać. +* **jabłkiem**, które oznacza coś, co Piotruś chętnie znajdzie, żeby się nakarmić. +* **wilkiem**, który jest niebezpieczny i powinien być omijany. -Istnieje osobny moduł Pythona, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), który zawiera kod do pracy z tym środowiskiem. Ponieważ ten kod nie jest istotny dla zrozumienia naszych koncepcji, zaimportujemy moduł i użyjemy go do stworzenia przykładowej planszy (blok kodu 1): +Istnieje osobny moduł Pythona, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), który zawiera kod do pracy z tym środowiskiem. Ponieważ ten kod nie jest istotny do zrozumienia naszych koncepcji, zaimportujemy moduł i użyjemy go do stworzenia przykładowej planszy (blok kodu 1): ```python from rlboard import * @@ -52,30 +52,30 @@ m.randomize(seed=13) m.plot() ``` -Ten kod powinien wydrukować obraz środowiska podobny do powyższego. +Ten kod powinien wyświetlić obraz środowiska podobny do powyższego. ## Akcje i polityka -W naszym przykładzie celem Piotrusia będzie znalezienie jabłka, unikając wilka i innych przeszkód. Aby to zrobić, może zasadniczo chodzić po planszy, aż znajdzie jabłko. +W naszym przykładzie celem Piotrusia będzie znalezienie jabłka, unikając wilka i innych przeszkód. W tym celu może on po prostu chodzić aż znajdzie jabłko. -Dlatego w dowolnej pozycji może wybrać jedną z następujących akcji: góra, dół, lewo i prawo. +Dlatego w każdej pozycji może wybrać jedną z następujących akcji: w górę, w dół, w lewo i w prawo. -Zdefiniujemy te akcje jako słownik i przypiszemy je do par odpowiadających zmian współrzędnych. Na przykład, ruch w prawo (`R`) odpowiada parze `(1,0)`. (blok kodu 2): +Zdefiniujemy te akcje jako słownik, mapując je do par odpowiadających zmian współrzędnych. Na przykład ruch w prawo (`R`) będzie odpowiadać parze `(1,0)`. (blok kodu 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()) } ``` -Podsumowując, strategia i cel tego scenariusza są następujące: +Podsumowując, strategia i cel tego scenariusza wyglądają następująco: -- **Strategia** naszego agenta (Piotrusia) jest zdefiniowana przez tzw. **politykę**. Polityka to funkcja, która zwraca akcję w dowolnym stanie. W naszym przypadku stan problemu jest reprezentowany przez planszę, w tym aktualną pozycję gracza. +- **Strategia**, naszego agenta (Piotrusia), jest określona przez tzw. **politykę**. Polityka to funkcja, która zwraca akcję dla dowolnego stanu. W naszym przypadku stan problemu jest reprezentowany przez planszę, włączając w to aktualną pozycję gracza. -- **Cel** uczenia ze wzmocnieniem to ostatecznie nauczenie się dobrej polityki, która pozwoli nam efektywnie rozwiązać problem. Jednak jako punkt odniesienia rozważmy najprostszą politykę zwaną **losowym spacerem**. +- **Cel** uczenia ze wzmocnieniem to w końcu nauczyć się dobrej polityki, która pozwoli rozwiązać problem efektywnie. Jako punkt wyjścia rozważmy najprostszą politykę zwaną **losowym spacerem**. ## Losowy spacer -Najpierw rozwiążmy nasz problem, implementując strategię losowego spaceru. W przypadku losowego spaceru będziemy losowo wybierać następną akcję z dozwolonych akcji, aż dotrzemy do jabłka (blok kodu 3). +Najpierw rozwiążmy nasz problem implementując strategię losowego spaceru. Przy losowym spacerze losowo wybierzemy następną akcję spośród dozwolonych, aż dotrzemy do jabłka (blok kodu 3). 1. Zaimplementuj losowy spacer za pomocą poniższego kodu: @@ -84,31 +84,31 @@ Najpierw rozwiążmy nasz problem, implementując strategię losowego spaceru. W return random.choice(list(actions)) def walk(m,policy,start_position=None): - n = 0 # number of steps - # set initial position + n = 0 # liczba kroków + # ustaw początkową pozycję if start_position: m.human = start_position else: m.random_start() while True: if m.at() == Board.Cell.apple: - return n # success! + return n # sukces! if m.at() in [Board.Cell.wolf, Board.Cell.water]: - return -1 # eaten by wolf or drowned + return -1 # zjedzony przez wilka lub utonął 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) # wykonaj właściwy ruch break n+=1 walk(m,random_policy) ``` - Wywołanie `walk` powinno zwrócić długość odpowiadającej ścieżki, która może się różnić w zależności od uruchomienia. + Wywołanie `walk` powinno zwrócić długość odpowiadającej ścieżki, która może się różnić w zależności od próby. -1. Uruchom eksperyment spaceru kilka razy (np. 100) i wydrukuj wynikowe statystyki (blok kodu 4): +1. Uruchom eksperyment spaceru wielokrotnie (np. 100 razy) i wypisz uzyskane statystyki (blok kodu 4): ```python def print_statistics(policy): @@ -125,17 +125,17 @@ Najpierw rozwiążmy nasz problem, implementując strategię losowego spaceru. W print_statistics(random_policy) ``` - Zauważ, że średnia długość ścieżki wynosi około 30-40 kroków, co jest dość dużo, biorąc pod uwagę fakt, że średnia odległość do najbliższego jabłka wynosi około 5-6 kroków. + Zauważ, że średnia długość ścieżki to około 30-40 kroków, co jest całkiem sporo, biorąc pod uwagę, że średnia odległość do najbliższego jabłka wynosi około 5-6 kroków. - Możesz również zobaczyć, jak wygląda ruch Piotrusia podczas losowego spaceru: + Możesz też zobaczyć, jak wygląda ruch Piotrusia podczas losowego spaceru: ![Losowy spacer Piotrusia](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) ## Funkcja nagrody -Aby nasza polityka była bardziej inteligentna, musimy zrozumieć, które ruchy są "lepsze" od innych. Aby to zrobić, musimy zdefiniować nasz cel. +Aby nasza polityka była bardziej inteligentna, musimy rozpoznać, które ruchy są „lepsze” od innych. W tym celu musimy zdefiniować nasz cel. -Cel można zdefiniować w kategoriach **funkcji nagrody**, która zwróci pewną wartość punktową dla każdego stanu. Im wyższa liczba, tym lepsza funkcja nagrody. (blok kodu 5) +Cel może być zdefiniowany za pomocą **funkcji nagrody**, która zwraca pewną wartość punktową dla każdego stanu. Im wyższa liczba, tym lepsza nagroda. (blok kodu 5) ```python move_reward = -0.1 @@ -154,39 +154,115 @@ def reward(m,pos=None): return move_reward ``` -Interesującą rzeczą dotyczącą funkcji nagrody jest to, że w większości przypadków *otrzymujemy znaczącą nagrodę dopiero na końcu gry*. Oznacza to, że nasz algorytm powinien jakoś zapamiętać "dobre" kroki, które prowadzą do pozytywnej nagrody na końcu, i zwiększyć ich znaczenie. Podobnie, wszystkie ruchy prowadzące do złych wyników powinny być zniechęcane. +Ciekawą rzeczą dotyczącą funkcji nagrody jest to, że w większości przypadków *otrzymujemy znaczącą nagrodę dopiero na końcu gry*. Oznacza to, że nasz algorytm powinien w jakiś sposób zapamiętać „dobre” kroki prowadzące do pozytywnej nagrody na końcu i zwiększyć ich wagę. Podobnie, wszystkie ruchy prowadzące do złych rezultatów powinny zostać zniechęcone. ## Q-Learning -Algorytm, który omówimy tutaj, nazywa się **Q-Learning**. W tym algorytmie polityka jest definiowana przez funkcję (lub strukturę danych) zwaną **Q-Tablicą**. Rejestruje ona "dobroć" każdej z akcji w danym stanie. +Algorytm, który tutaj omówimy, nazywa się **Q-Learning**. W tym algorytmie polityka jest definiowana przez funkcję (lub strukturę danych) zwaną **Q-Table**. Rejestruje ona „jakość” każdej akcji w danym stanie. -Nazywa się ją Q-Tablicą, ponieważ często wygodnie jest ją reprezentować jako tablicę lub wielowymiarową macierz. Ponieważ nasza plansza ma wymiary `szerokość` x `wysokość`, możemy reprezentować Q-Tablicę za pomocą tablicy numpy o kształcie `szerokość` x `wysokość` x `len(actions)`: (blok kodu 6) +Nazywa się ją Q-Table, ponieważ wygodnie jest ją reprezentować jako tabelę lub wielowymiarową tablicę. Ponieważ nasza plansza ma wymiary `width` x `height`, możemy reprezentować Q-Table używając tablicy numpy o kształcie `width` x `height` x `len(actions)`: (blok kodu 6) ```python Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions) ``` -Zauważ, że inicjalizujemy wszystkie wartości Q-Tablicy równą wartością, w naszym przypadku - 0.25. Odpowiada to polityce "losowego spaceru", ponieważ wszystkie ruchy w każdym stanie są równie dobre. Możemy przekazać Q-Tablicę do funkcji `plot`, aby zwizualizować tablicę na planszy: `m.plot(Q)`. +Zwróć uwagę, że inicjalizujemy wszystkie wartości Q-Table równą wartością, w naszym przypadku - 0.25. Odpowiada to polityce „losowego spaceru”, ponieważ wszystkie ruchy w każdym stanie są równie dobre. Możemy przekazać Q-Table do funkcji `plot`, aby zwizualizować tabelę na planszy: `m.plot(Q)`. -![Środowisko Piotrusia](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![Środowisko Piotrusia](../../../../translated_images/pl/env_init.04e8f26d2d60089e.webp) -W centrum każdej komórki znajduje się "strzałka", która wskazuje preferowany kierunek ruchu. Ponieważ wszystkie kierunki są równe, wyświetlany jest punkt. +W centrum każdej komórki znajduje się „strzałka” wskazująca preferowany kierunek ruchu. Ponieważ wszystkie kierunki są równe, wyświetlany jest punkt. -Teraz musimy uruchomić symulację, zbadać nasze środowisko i nauczyć się lepszego rozkładu wartości Q-Tablicy, który pozwoli nam znacznie szybciej znaleźć drogę do jabłka. +Teraz musimy uruchomić symulację, eksplorować środowisko i nauczyć się lepszego rozkładu wartości w Q-Table, co pozwoli nam szybciej znaleźć drogę do jabłka. ## Istota Q-Learningu: Równanie Bellmana -Gdy zaczniemy się poruszać, każda akcja będzie miała odpowiadającą jej nagrodę, tj. teoretycznie możemy wybrać następną akcję na podstawie najwyższej natychmiastowej nagrody. Jednak w większości stanów ruch nie osiągnie naszego celu, jakim jest dotarcie do jabłka, i dlatego nie możemy od razu zdecydować, który kierunek jest lepszy. +Po rozpoczęciu ruchu każda akcja będzie miała odpowiadającą nagrodę, tzn. teoretycznie możemy wybrać następną akcję na podstawie najwyższej bezpośredniej nagrody. Jednak w większości stanów ruch nie doprowadzi do osiągnięcia celu, jakim jest dotarcie do jabłka, więc nie możemy od razu zdecydować, który kierunek jest lepszy. -> Pamiętaj, że nie liczy się natychmiastowy wynik, ale raczej ostateczny wynik, który uzyskamy na końcu symulacji. +> Pamiętaj, że liczy się nie natychmiastowy wynik, lecz wynik końcowy, który uzyskamy na końcu symulacji. -Aby uwzględnić tę opóźnioną nagrodę, musimy skorzystać z zasad **[programowania dynamicznego](https://en.wikipedia.org/wiki/Dynamic_programming)**, które pozwalają nam myśleć o naszym problemie w sposób rekurencyjny. +Aby uwzględnić tę opóźnioną nagrodę, musimy użyć zasad **[programowania dynamicznego](https://pl.wikipedia.org/wiki/Programowanie_dynamiczne)**, które pozwala rozważać problem rekurencyjnie. -Załóżmy, że teraz znajdujemy się w stanie *s*, i chcemy przejść do następnego stanu *s'*. Wykonując to, otrzymamy natychmiastową nagrodę *r(s,a)*, zdefiniowaną przez funkcję nagrody, plus jakąś przyszłą nagrodę. Jeśli założymy, że nasza Q-Tablica poprawnie odzwierciedla "atrakcyjność" każdej akcji, to w stanie *s'* wybierzemy akcję *a*, która odpowiada maksymalnej wartości *Q(s',a')*. Tak więc najlepsza możliwa przyszła nagroda, jaką możemy uzyskać w stanie *s*, będzie zdefiniowana jako `max` +Załóżmy, że jesteśmy teraz w stanie *s* i chcemy przejść do następnego stanu *s'*. W ten sposób otrzymamy natychmiastową nagrodę *r(s,a)*, zdefiniowaną przez funkcję nagrody, plus pewną przyszłą nagrodę. Jeśli założymy, że nasza Q-Table poprawnie odzwierciedla „atrakcyjność” każdej akcji, to w stanie *s'* wybierzemy akcję *a*, która odpowiada maksymalnej wartości *Q(s',a')*. Zatem najlepsza możliwa przyszła nagroda w stanie *s* będzie zdefiniowana jako `max`a'*Q(s',a')* (maksimum tutaj jest liczone po wszystkich możliwych akcjach *a'* w stanie *s'*). + +To daje **wzór Bellmana** do obliczenia wartości Q-Table w stanie *s*, wykonując akcję *a*: + + + +Tutaj γ to tzw. **współczynnik dyskontujący**, który określa, w jakim stopniu powinieneś woleć nagrodę obecną nad przyszłą i odwrotnie. + +## Algorytm uczenia + +Mając powyższe równanie, możemy teraz napisać pseudokod dla naszego algorytmu uczenia: + +* Zainicjalizuj Q-Table Q równymi wartościami dla wszystkich stanów i akcji +* Ustaw współczynnik uczenia α ← 1 +* Powtarzaj symulację wiele razy + 1. Zacznij od losowej pozycji + 1. Powtarzaj + 1. Wybierz akcję *a* w stanie *s* + 2. Wykonaj akcję, przechodząc do nowego stanu *s'* + 3. Jeśli nastąpi warunek zakończenia gry lub suma nagród jest zbyt mała - zakończ symulację + 4. Oblicz nagrodę *r* w nowym stanie + 5. Zaktualizuj funkcję Q według wzoru Bellmana: *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ maxa'Q(s',a'))* + 6. *s* ← *s'* + 7. Zaktualizuj sumę nagród i zmniejsz α. + +## Eksploatacja vs. eksploracja + +W powyższym algorytmie nie określiliśmy dokładnie, jak wybrać akcję w kroku 2.1. Jeśli wybieramy akcję losowo, będziemy losowo **eksplorować** środowisko, i jest duże prawdopodobieństwo, że często zginiesz oraz będziesz eksplorować obszary, gdzie normalnie byś nie poszedł. Alternatywne podejście to **eksploatacja** wartości w Q-Table, które już znamy i wybieranie najlepszej akcji (z wyższą wartością Q) w stanie *s*. To jednak uniemożliwia eksplorację innych stanów i istnieje duże prawdopodobieństwo, że nie znajdziemy optymalnego rozwiązania. + +Dlatego najlepiej jest zachować równowagę między eksploracją i eksploatacją. Można to osiągnąć, wybierając akcję w stanie *s* z prawdopodobieństwami proporcjonalnymi do wartości w Q-Table. Na początku, gdy wartości Q-Table są wszystkie takie same, będzie to odpowiadać losowemu wyborowi, ale w miarę poznawania środowiska bardziej prawdopodobne będzie podążanie optymalną ścieżką, umożliwiając agentowi od czasu do czasu wybrać nieznaną ścieżkę. + +## Implementacja w Pythonie + +Jesteśmy gotowi, aby zaimplementować algorytm uczenia. Zanim to zrobimy, potrzebujemy funkcji, która przekształci dowolne liczby w Q-Table na wektor prawdopodobieństw odpowiadających akcjom. + +1. Stwórz funkcję `probs()`: + + ```python + def probs(v,eps=1e-4): + v = v-v.min()+eps + v = v/v.sum() + return v + ``` + + Dodajemy kilka `eps` do oryginalnego wektora, aby uniknąć dzielenia przez 0 w początkowym przypadku, gdy wszystkie składowe wektora są identyczne. + +Uruchom algorytm uczenia przez 5000 eksperymentów, zwanych też **epokami**: (blok kodu 8) +```python + for epoch in range(5000): + + # Wybierz punkt początkowy + m.random_start() + + # Rozpocznij podróż + 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) # pozwalamy graczowi poruszać się poza planszą, co kończy 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 wykonaniu tego algorytmu Q-Table powinna zostać zaktualizowana o wartości określające atrakcyjność różnych akcji na każdym kroku. Możemy spróbować zwizualizować Q-Table, rysując wektor w każdej komórce, który wskaże pożądany kierunek ruchu. Dla uproszczenia rysujemy małe kółko zamiast grotu strzałki. + + ## Sprawdzanie polityki -Ponieważ Q-Table zawiera "atrakcyjność" każdej akcji w każdym stanie, łatwo jest wykorzystać ją do zdefiniowania efektywnej nawigacji w naszym świecie. W najprostszym przypadku możemy wybrać akcję odpowiadającą najwyższej wartości w Q-Table: (blok kodu 9) +Ponieważ Q-Table wskazuje „atrakcyjność” każdej akcji w każdym stanie, łatwo jest użyć jej do określenia efektywnej nawigacji w naszym świecie. W najprostszym przypadku możemy wybrać akcję odpowiadającą najwyższej wartości w Q-Table: (blok kodu 9) ```python def qpolicy_strict(m): @@ -198,17 +274,18 @@ def qpolicy_strict(m): walk(m,qpolicy_strict) ``` -> Jeśli uruchomisz powyższy kod kilka razy, możesz zauważyć, że czasami "zawiesza się" i musisz nacisnąć przycisk STOP w notebooku, aby go przerwać. Dzieje się tak, ponieważ mogą wystąpić sytuacje, w których dwa stany "wskazują" na siebie nawzajem pod względem optymalnej wartości Q-Value, w wyniku czego agent porusza się między tymi stanami w nieskończoność. + +> Jeśli spróbujesz powyższego kodu kilka razy, możesz zauważyć, że czasami "zawiesza się" i musisz nacisnąć przycisk STOP w notatniku, aby go przerwać. Dzieje się tak, ponieważ mogą istnieć sytuacje, gdy dwa stany "wskazują" na siebie nawzajem pod względem optymalnej wartości Q, w takim przypadku agent kończy poruszając się między tymi stanami w nieskończoność. ## 🚀Wyzwanie -> **Zadanie 1:** Zmodyfikuj funkcję `walk`, aby ograniczyć maksymalną długość ścieżki do określonej liczby kroków (np. 100) i zobacz, jak powyższy kod czasami zwraca tę wartość. +> **Zadanie 1:** Zmodyfikuj funkcję `walk`, aby ograniczyć maksymalną długość ścieżki do określonej liczby kroków (na przykład 100) i obserwuj, jak powyższy kod od czasu do czasu zwraca tę wartość. -> **Zadanie 2:** Zmodyfikuj funkcję `walk`, aby nie wracała do miejsc, w których już wcześniej była. Zapobiegnie to zapętleniu `walk`, jednak agent nadal może utknąć w miejscu, z którego nie może się wydostać. +> **Zadanie 2:** Zmodyfikuj funkcję `walk`, tak aby nie wracała do miejsc, w których już wcześniej była. Zapobiegnie to zapętleniu się funkcji `walk`, jednak agent nadal może zostać "uwięziony" w miejscu, z którego nie będzie mógł uciec. ## Nawigacja -Lepszą polityką nawigacji byłaby ta, którą stosowaliśmy podczas treningu, łącząca eksploatację i eksplorację. W tej polityce wybieramy każdą akcję z określonym prawdopodobieństwem, proporcjonalnym do wartości w Q-Table. Ta strategia może nadal prowadzić do powrotu agenta do pozycji, którą już eksplorował, ale, jak widać w poniższym kodzie, skutkuje bardzo krótką średnią ścieżką do pożądanej lokalizacji (pamiętaj, że `print_statistics` uruchamia symulację 100 razy): (blok kodu 10) +Lepsza polityka nawigacyjna to taka, którą stosowaliśmy podczas treningu – łączy ona eksploatację i eksplorację. W tej polityce wybieramy każdą akcję z pewnym prawdopodobieństwem, proporcjonalnym do wartości w Q-Table. Taka strategia może nadal powodować, że agent wróci do już zwiedzonej pozycji, ale jak widać z poniższego kodu, skutkuje bardzo krótką średnią ścieżką do pożądanego miejsca (pamiętaj, że `print_statistics` uruchamia symulację 100 razy): (blok kodu 10) ```python def qpolicy(m): @@ -220,28 +297,32 @@ def qpolicy(m): print_statistics(qpolicy) ``` -Po uruchomieniu tego kodu powinieneś uzyskać znacznie krótszą średnią długość ścieżki niż wcześniej, w zakresie 3-6. +Po uruchomieniu tego kodu powinieneś otrzymać znacznie krótszą średnią długość ścieżki niż wcześniej, w zakresie 3-6. + +## Analiza procesu uczenia się -## Badanie procesu uczenia +Jak wspomnieliśmy, proces uczenia się jest równowagą między eksploracją a eksploatacją zdobytej wiedzy o strukturze przestrzeni problemu. Widzieliśmy, że wyniki uczenia (umiejętność pomocy agentowi w znalezieniu krótkiej ścieżki do celu) poprawiły się, ale warto również obserwować, jak średnia długość ścieżki zachowuje się podczas procesu uczenia: -Jak wspomnieliśmy, proces uczenia to balans między eksploracją a wykorzystaniem zdobytej wiedzy o strukturze przestrzeni problemowej. Widzieliśmy, że wyniki uczenia (zdolność do pomocy agentowi w znalezieniu krótkiej ścieżki do celu) poprawiły się, ale interesujące jest również obserwowanie, jak średnia długość ścieżki zachowuje się podczas procesu uczenia: + -## Podsumowanie wniosków: +Można podsumować naukę następująco: -- **Średnia długość ścieżki rośnie**. Na początku średnia długość ścieżki rośnie. Wynika to prawdopodobnie z faktu, że gdy nic nie wiemy o środowisku, łatwo jest utknąć w złych stanach, takich jak woda czy wilk. Gdy uczymy się więcej i zaczynamy korzystać z tej wiedzy, możemy eksplorować środowisko dłużej, ale nadal nie znamy dobrze lokalizacji jabłek. +- **Średnia długość ścieżki wzrasta**. Możemy zauważyć, że na początku średnia długość ścieżki rośnie. Wynika to prawdopodobnie z faktu, że gdy nic nie wiemy o środowisku, prawdopodobnie utknęliśmy w złych stanach, wodzie lub wilku. W miarę jak uczymy się więcej i zaczynamy wykorzystywać tę wiedzę, możemy eksplorować środowisko dłużej, ale nadal nie znamy zbyt dobrze lokalizacji jabłek. -- **Długość ścieżki maleje, gdy uczymy się więcej**. Gdy nauczymy się wystarczająco dużo, agentowi łatwiej jest osiągnąć cel, a długość ścieżki zaczyna się zmniejszać. Jednak nadal jesteśmy otwarci na eksplorację, więc często odbiegamy od najlepszej ścieżki i eksplorujemy nowe opcje, co wydłuża ścieżkę ponad optymalną. +- **Długość ścieżki maleje wraz z nauką**. Gdy nauczymy się wystarczająco dużo, agentowi łatwiej jest osiągnąć cel, a długość ścieżki zaczyna się skracać. Nadal jednak pozostajemy otwarci na eksplorację, więc często odbiegamy od najlepszej ścieżki, próbując różnych opcji, co wydłuża ścieżkę ponad optymalną długość. -- **Długość nagle wzrasta**. Na wykresie można również zauważyć, że w pewnym momencie długość nagle wzrasta. Wskazuje to na stochastyczny charakter procesu i na to, że w pewnym momencie możemy "zepsuć" współczynniki Q-Table, nadpisując je nowymi wartościami. Idealnie powinno się to minimalizować, zmniejszając współczynnik uczenia (na przykład pod koniec treningu dostosowujemy wartości Q-Table tylko o niewielką wartość). +- **Długość gwałtownie rośnie**. Co również obserwujemy na tym wykresie, to nagły wzrost długości ścieżki w pewnym momencie. Wskazuje to na stochastyczny charakter procesu, a także na to, że możemy w pewnym momencie "zepsuć" współczynniki w Q-Table, nadpisując je nowymi wartościami. Idealnie powinno się to minimalizować poprzez zmniejszenie współczynnika uczenia (na przykład pod koniec treningu, aktualizujemy wartości w Q-Table tylko o małą wartość). -Ogólnie rzecz biorąc, ważne jest, aby pamiętać, że sukces i jakość procesu uczenia w dużej mierze zależą od parametrów, takich jak współczynnik uczenia, jego zmniejszanie oraz współczynnik dyskontowy. Często nazywa się je **hiperparametrami**, aby odróżnić je od **parametrów**, które optymalizujemy podczas treningu (na przykład współczynniki Q-Table). Proces znajdowania najlepszych wartości hiperparametrów nazywa się **optymalizacją hiperparametrów** i zasługuje na osobny temat. +Ogólnie rzecz biorąc, ważne jest, aby pamiętać, że sukces i jakość procesu uczenia się w dużej mierze zależy od parametrów, takich jak współczynnik uczenia, spadek współczynnika uczenia i współczynnik dyskonta. Często nazywane są to **hiperparametrami**, aby odróżnić je od **parametrów**, które optymalizujemy podczas treningu (na przykład współczynniki Q-Table). Proces znajdowania najlepszych wartości hiperparametrów nazywa się **optymalizacją hiperparametrów** i zasługuje na osobny temat. ## [Quiz po wykładzie](https://ff-quizzes.netlify.app/en/ml/) -## Zadanie +## Zadanie [Bardziej realistyczny świat](assignment.md) --- -**Zastrzeżenie**: -Ten dokument został przetłumaczony za pomocą usługi tłumaczeniowej AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż dokładamy wszelkich starań, aby tłumaczenie było precyzyjne, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia wykonanego przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z korzystania z tego tłumaczenia. \ No newline at end of file + +**Zastrzeżenie**: +Niniejszy dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Choć dążymy do dokładności, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub niedokładności. Oryginalny dokument w jego języku źródłowym należy uznawać za autorytatywne źródło. W przypadku informacji krytycznych zalecane jest skorzystanie z profesjonalnego tłumaczenia wykonanego przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. + \ No newline at end of file diff --git a/translations/pl/9-Real-World/2-Debugging-ML-Models/README.md b/translations/pl/9-Real-World/2-Debugging-ML-Models/README.md index 0f21bb71a..d6483de9b 100644 --- a/translations/pl/9-Real-World/2-Debugging-ML-Models/README.md +++ b/translations/pl/9-Real-World/2-Debugging-ML-Models/README.md @@ -1,155 +1,179 @@ -# Postscript: Debugowanie modeli w uczeniu maszynowym za pomocą komponentów pulpitu odpowiedzialnej AI +# Postscript: Debugowanie modelu w uczeniu maszynowym za pomocą komponentów pulpitu odpowiedzialnej AI + ## [Quiz przed wykładem](https://ff-quizzes.netlify.app/en/ml/) - + ## Wprowadzenie -Uczenie maszynowe wpływa na nasze codzienne życie. Sztuczna inteligencja (AI) znajduje zastosowanie w jednych z najważniejszych systemów, które mają wpływ na nas jako jednostki i społeczeństwo, takich jak opieka zdrowotna, finanse, edukacja czy zatrudnienie. Na przykład systemy i modele są zaangażowane w codzienne procesy decyzyjne, takie jak diagnozy medyczne czy wykrywanie oszustw. W związku z tym postępy w AI oraz jej przyspieszone wdrażanie spotykają się z rosnącymi oczekiwaniami społecznymi i regulacjami. Wciąż obserwujemy obszary, w których systemy AI nie spełniają oczekiwań, ujawniają nowe wyzwania, a rządy zaczynają regulować rozwiązania AI. Dlatego ważne jest, aby analizować te modele, aby zapewnić sprawiedliwe, wiarygodne, inkluzywne, przejrzyste i odpowiedzialne wyniki dla wszystkich. +Uczenie maszynowe wpływa na nasze codzienne życie. AI znajduje zastosowanie w niektórych z najważniejszych systemów, które mają wpływ na nas jako jednostki, jak i na społeczeństwo, od opieki zdrowotnej, finansów, edukacji po zatrudnienie. Na przykład, systemy i modele uczestniczą w codziennych zadaniach decyzyjnych, takich jak diagnozy zdrowotne czy wykrywanie oszustw. W konsekwencji, postęp w AI wraz z przyspieszonym wdrożeniem są spotykane z ewoluującymi oczekiwaniami społecznymi i rosnącymi regulacjami. Ciągle widzimy obszary, w których systemy AI nadal nie spełniają oczekiwań; ujawniają nowe wyzwania; a rządy zaczynają regulować rozwiązania AI. Dlatego ważne jest, aby te modele były analizowane, aby dostarczać sprawiedliwe, wiarygodne, inkluzywne, przejrzyste i odpowiedzialne wyniki dla wszystkich. -W tym kursie przyjrzymy się praktycznym narzędziom, które można wykorzystać do oceny, czy model ma problemy związane z odpowiedzialną AI. Tradycyjne techniki debugowania uczenia maszynowego opierają się głównie na obliczeniach ilościowych, takich jak zagregowana dokładność czy średnia strata błędu. Wyobraź sobie, co może się stać, gdy dane, których używasz do budowy tych modeli, nie uwzględniają pewnych grup demograficznych, takich jak rasa, płeć, poglądy polityczne, religia, lub gdy są one nadmiernie reprezentowane. Co w sytuacji, gdy wyniki modelu są interpretowane w sposób faworyzujący pewne grupy demograficzne? Może to prowadzić do nadmiernej lub niedostatecznej reprezentacji tych wrażliwych grup cech, co skutkuje problemami z uczciwością, inkluzywnością lub wiarygodnością modelu. Kolejnym wyzwaniem jest to, że modele uczenia maszynowego są często traktowane jako "czarne skrzynki", co utrudnia zrozumienie i wyjaśnienie, co napędza ich przewidywania. Wszystkie te kwestie stanowią wyzwania dla naukowców zajmujących się danymi i twórców AI, którzy nie mają odpowiednich narzędzi do debugowania i oceny uczciwości czy wiarygodności modelu. +W tym programie zajęć przyjrzymy się praktycznym narzędziom, które można wykorzystać do oceny, czy model ma problemy z odpowiedzialną AI. Tradycyjne techniki debugowania uczenia maszynowego opierają się na obliczeniach ilościowych, takich jak zagregowana dokładność czy średnia strata błędu. Wyobraź sobie, co może się stać, gdy dane, których używasz do budowy tych modeli, nie uwzględniają pewnych demografii, takich jak rasa, płeć, poglądy polityczne, religia, albo dysproporcjonalnie reprezentują takie demografie. A co, gdy wynik modelu jest interpretowany na korzyść jednej grupy demograficznej? Może to wprowadzić nad- lub niedoreprezentację tych wrażliwych grup cech, powodując problemy ze sprawiedliwością, inkluzywnością lub wiarygodnością modelu. Kolejnym czynnikiem jest to, że modele uczenia maszynowego są uważane za czarne skrzynki, co utrudnia zrozumienie i wyjaśnienie czynników wpływających na predykcję modelu. Wszystkie te wyzwania stoją przed naukowcami danych i deweloperami AI, gdy nie dysponują odpowiednimi narzędziami do debugowania oraz oceny sprawiedliwości i wiarygodności modelu. -W tej lekcji dowiesz się, jak debugować swoje modele, korzystając z: +W tej lekcji nauczysz się debugowania swoich modeli za pomocą: -- **Analizy błędów**: identyfikowanie obszarów w rozkładzie danych, w których model ma wysokie wskaźniki błędów. -- **Przeglądu modelu**: przeprowadzanie analizy porównawczej w różnych kohortach danych w celu wykrycia rozbieżności w metrykach wydajności modelu. -- **Analizy danych**: badanie, gdzie może występować nadmierna lub niedostateczna reprezentacja danych, która może wpływać na faworyzowanie jednej grupy demograficznej kosztem innej. -- **Ważności cech**: zrozumienie, które cechy napędzają przewidywania modelu na poziomie globalnym lub lokalnym. +- **Analizy błędów**: identyfikacji miejsc w rozkładzie danych, w których model ma wysokie wskaźniki błędów. +- **Przeglądu modelu**: przeprowadzenia analizy porównawczej różnych kohort danych w celu wykrycia rozbieżności w metrykach wydajności modelu. +- **Analizy danych**: zbadania, gdzie może występować nad- lub niedoreprezentacja danych, która może powodować faworyzowanie przez model jednej grupy demograficznej nad inną. +- **Ważności cech**: zrozumienia, które cechy wpływają na predykcje modelu na poziomie globalnym lub lokalnym. ## Wymagania wstępne -Jako wstęp, zapoznaj się z [narzędziami odpowiedzialnej AI dla programistów](https://www.microsoft.com/ai/ai-lab-responsible-ai-dashboard). +Jako wymóg wstępny, proszę zapoznaj się z przeglądem [Narzędzi odpowiedzialnej AI dla deweloperów](https://www.microsoft.com/ai/ai-lab-responsible-ai-dashboard) -> ![Gif o narzędziach odpowiedzialnej AI](../../../../9-Real-World/2-Debugging-ML-Models/images/rai-overview.gif) +> ![Gif na temat Narzędzi odpowiedzialnej AI](../../../../9-Real-World/2-Debugging-ML-Models/images/rai-overview.gif) ## Analiza błędów -Tradycyjne metryki wydajności modeli używane do pomiaru dokładności to głównie obliczenia oparte na poprawnych i niepoprawnych przewidywaniach. Na przykład stwierdzenie, że model jest dokładny w 89% przypadków przy stracie błędu wynoszącej 0,001, może być uznane za dobrą wydajność. Jednak błędy często nie są równomiernie rozłożone w podstawowym zbiorze danych. Możesz uzyskać wynik dokładności modelu na poziomie 89%, ale odkryć, że w niektórych obszarach danych model zawodzi w 42% przypadków. Konsekwencje takich wzorców błędów w określonych grupach danych mogą prowadzić do problemów z uczciwością lub wiarygodnością. Ważne jest, aby zrozumieć, w jakich obszarach model działa dobrze, a w jakich nie. Obszary danych, w których występuje wysoka liczba nieścisłości, mogą okazać się istotnymi grupami demograficznymi. +Tradycyjne metryki wydajności modelu używane do mierzenia dokładności to głównie obliczenia bazujące na prawidłowych vs nieprawidłowych predykcjach. Na przykład, stwierdzenie, że model jest dokładny w 89% przypadków ze stratą błędu 0,001 może być uznane za dobrą wydajność. Błędy często nie są równomiernie rozłożone w twoim zbiorze danych. Możesz uzyskać 89% dokładności modelu, ale odkryć, że są różne obszary danych, dla których model zawodzi w 42% przypadków. Konsekwencją takich wzorców błędów w określonych grupach danych mogą być problemy ze sprawiedliwością lub wiarygodnością. Kluczowe jest zrozumienie obszarów, w których model działa dobrze lub słabo. Regiony danych, gdzie model popełnia wiele błędów, mogą okazać się ważną grupą demograficzną. -![Analiza i debugowanie błędów modelu](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-error-distribution.png) +![Analiza i debugowanie błędów modelu](../../../../translated_images/pl/ea-error-distribution.117452e1177c1dd8.webp) -Komponent Analizy Błędów na pulpicie RAI ilustruje, jak rozkładają się błędy modelu w różnych kohortach za pomocą wizualizacji drzewa. Jest to przydatne w identyfikowaniu cech lub obszarów, w których wskaźnik błędów w zbiorze danych jest wysoki. Dzięki temu, że widzisz, skąd pochodzą największe nieścisłości modelu, możesz zacząć badać ich przyczyny. Możesz również tworzyć kohorty danych do analizy. Te kohorty danych pomagają w procesie debugowania, aby określić, dlaczego wydajność modelu jest dobra w jednej kohorcie, a błędna w innej. +Komponent Analizy błędów na pulpicie RAI ilustruje, jak rozkładają się błędy modelu w różnych kohortach za pomocą wizualizacji drzewa. Jest to przydatne do identyfikacji cech lub obszarów, gdzie występuje wysoki wskaźnik błędów w twoim zbiorze danych. Widząc, skąd pochodzą największe nieścisłości modelu, możesz rozpocząć dochodzenie przyczyn źródłowych. Możesz też tworzyć kohorty danych w celu przeprowadzenia analizy. Te kohorty pomagają podczas procesu debugowania, aby określić, dlaczego model działa dobrze w jednej kohorcie, a błędnie w innej. -![Analiza błędów](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-error-cohort.png) +![Analiza błędów](../../../../translated_images/pl/ea-error-cohort.6886209ea5d438c4.webp) -Wskaźniki wizualne na mapie drzewa pomagają szybciej zlokalizować problematyczne obszary. Na przykład im ciemniejszy odcień czerwieni ma węzeł drzewa, tym wyższy wskaźnik błędów. +Wizualne wskaźniki na mapie drzewa pomagają szybszej lokalizacji problematycznych obszarów. Na przykład, im ciemniejszy odcień czerwonego ma węzeł drzewa, tym wyższy wskaźnik błędów. -Mapa cieplna to kolejna funkcjonalność wizualizacji, którą użytkownicy mogą wykorzystać do badania wskaźnika błędów przy użyciu jednej lub dwóch cech, aby znaleźć przyczynę błędów modelu w całym zbiorze danych lub kohortach. +Mapa cieplna to kolejna funkcja wizualizacyjna, którą użytkownicy mogą wykorzystać w badaniu wskaźnika błędów, używając jednej lub dwóch cech, aby znaleźć przyczynę błędów modelu w całym zbiorze danych lub kohortach. -![Mapa cieplna analizy błędów](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-heatmap.png) +![Mapa cieplna analizy błędów](../../../../translated_images/pl/ea-heatmap.8d27185e28cee383.webp) -Używaj analizy błędów, gdy potrzebujesz: +Wykorzystaj analizę błędów, gdy potrzebujesz: -* Dogłębnie zrozumieć, jak rozkładają się błędy modelu w zbiorze danych oraz w różnych wymiarach wejściowych i cech. -* Rozłożyć zagregowane metryki wydajności, aby automatycznie odkryć błędne kohorty i zaplanować ukierunkowane kroki naprawcze. +* Dogłębnie zrozumieć, jak rozkładają się błędy modelu w zbiorze danych i w różnych wymiarach wejścia oraz cech. +* Rozłożyć zagregowane metryki wydajności, aby automatycznie odkrywać błędne kohorty i informować o ukierunkowanych działaniach naprawczych. ## Przegląd modelu -Ocena wydajności modelu uczenia maszynowego wymaga holistycznego zrozumienia jego zachowania. Można to osiągnąć, analizując więcej niż jedną metrykę, taką jak wskaźnik błędów, dokładność, czułość, precyzja czy MAE (średni błąd bezwzględny), aby znaleźć rozbieżności między metrykami wydajności. Jedna metryka wydajności może wyglądać świetnie, ale niedokładności mogą ujawnić się w innej metryce. Ponadto porównanie metryk pod kątem rozbieżności w całym zbiorze danych lub kohortach pomaga rzucić światło na to, gdzie model działa dobrze, a gdzie nie. Jest to szczególnie ważne w analizie wydajności modelu wśród cech wrażliwych i niewrażliwych (np. rasa pacjenta, płeć czy wiek), aby odkryć potencjalną niesprawiedliwość modelu. Na przykład odkrycie, że model jest bardziej błędny w kohorcie zawierającej cechy wrażliwe, może ujawnić potencjalną niesprawiedliwość modelu. +Ocena wydajności modelu uczenia maszynowego wymaga uzyskania całościowego zrozumienia jego zachowania. Można to osiągnąć, analizując więcej niż jedną metrykę, taką jak wskaźnik błędów, dokładność, recall, precyzję czy MAE (średni bezwzględny błąd) w celu znalezienia rozbieżności pomiędzy metrykami wydajności. Jedna metryka może wyglądać dobrze, ale niedokładności mogą się ujawnić w innej mierze. Dodatkowo porównanie metryk pod kątem rozbieżności w całym zbiorze danych lub w kohortach pomaga zobaczyć, gdzie model działa dobrze, a gdzie nie. Jest to szczególnie ważne przy ocenianiu wydajności modelu między cechami wrażliwymi a niewrażliwymi (np. rasa pacjenta, płeć czy wiek), aby odkryć potencjalną niesprawiedliwość modelu. Na przykład, odkrycie, że model jest bardziej błędny w kohorcie zawierającej wrażliwe cechy, może ujawnić potencjalną niesprawiedliwość modelu. -Komponent Przeglądu Modelu na pulpicie RAI pomaga nie tylko w analizie metryk wydajności reprezentacji danych w kohorcie, ale także daje użytkownikom możliwość porównania zachowania modelu w różnych kohortach. +Komponent Przeglądu modelu na pulpicie RAI pomaga nie tylko w analizie metryk wydajności danych reprezentowanych w kohorcie, ale daje użytkownikom możliwość porównania zachowania modelu w różnych kohortach. -![Kohorty zbioru danych - przegląd modelu na pulpicie RAI](../../../../9-Real-World/2-Debugging-ML-Models/images/model-overview-dataset-cohorts.png) +![Kohorty zbioru danych - przegląd modelu na pulpicie RAI](../../../../translated_images/pl/model-overview-dataset-cohorts.dfa463fb527a35a0.webp) -Funkcjonalność analizy opartej na cechach w tym komponencie pozwala użytkownikom zawęzić podgrupy danych w ramach konkretnej cechy, aby zidentyfikować anomalie na poziomie szczegółowym. Na przykład pulpit ma wbudowaną inteligencję, która automatycznie generuje kohorty dla wybranej przez użytkownika cechy (np. *"time_in_hospital < 3"* lub *"time_in_hospital >= 7"*). Umożliwia to użytkownikowi izolowanie konkretnej cechy z większej grupy danych, aby sprawdzić, czy jest ona kluczowym czynnikiem wpływającym na błędne wyniki modelu. +Funkcjonalność analizy cech w tym komponencie pozwala użytkownikom zawęzić podgrupy danych w ramach konkretnej cechy, aby zidentyfikować anomalie na szczegółowym poziomie. Na przykład, pulpit posiada wbudowaną inteligencję do automatycznego generowania kohort dla wybranej cechy (np. *"time_in_hospital < 3"* lub *"time_in_hospital >= 7"*). Pozwala to użytkownikowi odseparować jedną cechę z większej grupy danych, aby sprawdzić, czy jest ona kluczowym czynnikiem wpływającym na błędne wyniki modelu. -![Kohorty cech - przegląd modelu na pulpicie RAI](../../../../9-Real-World/2-Debugging-ML-Models/images/model-overview-feature-cohorts.png) +![Kohorty cech - przegląd modelu na pulpicie RAI](../../../../translated_images/pl/model-overview-feature-cohorts.c5104d575ffd0c80.webp) -Komponent Przeglądu Modelu obsługuje dwie klasy metryk rozbieżności: +Komponent Przeglądu modelu obsługuje dwa rodzaje metryk rozbieżności: -**Rozbieżność w wydajności modelu**: Te zestawy metryk obliczają różnicę w wartościach wybranej metryki wydajności w różnych podgrupach danych. Oto kilka przykładów: +**Rozbieżność w wydajności modelu**: Zestawy tych metryk obliczają różnicę (rozbieżność) w wartościach wybranej metryki wydajności w różnych podgrupach danych. Oto kilka przykładów: * Rozbieżność w wskaźniku dokładności * Rozbieżność w wskaźniku błędów * Rozbieżność w precyzji -* Rozbieżność w czułości -* Rozbieżność w średnim błędzie bezwzględnym (MAE) +* Rozbieżność w recallu +* Rozbieżność w średnim bezwzględnym błędzie (MAE) -**Rozbieżność w wskaźniku selekcji**: Ta metryka zawiera różnicę w wskaźniku selekcji (korzystne przewidywanie) w różnych podgrupach. Przykładem może być rozbieżność w wskaźnikach zatwierdzania kredytów. Wskaźnik selekcji oznacza odsetek punktów danych w każdej klasie sklasyfikowanych jako 1 (w klasyfikacji binarnej) lub rozkład wartości przewidywań (w regresji). +**Rozbieżność w wskaźniku selekcji**: Ta metryka zawiera różnicę we wskaźniku selekcji (korzystnej predykcji) między podgrupami. Przykładem może być rozbieżność w stopach zatwierdzania pożyczek. Wskaźnik selekcji oznacza ułamek punktów danych w każdej klasie sklasyfikowanych jako 1 (w klasyfikacji binarnej) lub rozkład wartości predykcji (w regresji). ## Analiza danych -> "Jeśli wystarczająco długo torturujesz dane, przyznają się do wszystkiego" - Ronald Coase +> "Jeśli będziesz długo torturować dane, przyznają się do wszystkiego" - Ronald Coase + +To stwierdzenie brzmi ekstremalnie, ale prawdą jest, że dane można manipulować, aby wspierać każde wnioski. Taka manipulacja czasem dzieje się nieświadomie. Jako ludzie wszyscy mamy uprzedzenia, i często trudno świadomie zauważyć, kiedy wprowadzamy je do danych. Zapewnienie sprawiedliwości w AI i uczeniu maszynowym pozostaje złożonym wyzwaniem. -To stwierdzenie brzmi ekstremalnie, ale prawdą jest, że dane można manipulować, aby wspierały dowolny wniosek. Taka manipulacja może czasem zdarzyć się nieumyślnie. Jako ludzie wszyscy mamy uprzedzenia i często trudno jest świadomie zauważyć, kiedy wprowadzamy uprzedzenia do danych. Zapewnienie uczciwości w AI i uczeniu maszynowym pozostaje złożonym wyzwaniem. +Dane to ogromny ślepy punkt dla tradycyjnych metryk wydajności modelu. Możesz mieć wysokie wskaźniki dokładności, ale to nie zawsze odzwierciedla ukryte uprzedzenia danych, które mogą znajdować się w zbiorze. Na przykład, jeśli zbiór pracowników ma 27% kobiet na stanowiskach kierowniczych i 73% mężczyzn na tym samym poziomie, model AI do reklamowania pracy trenowany na takich danych może kierować swoje reklamy głównie do mężczyzn na stanowiska wyższego szczebla. Taka nierównowaga w danych wypaczyła predykcję modelu na korzyść jednej płci. To ujawnia problem sprawiedliwości, gdzie model AI ma uprzedzenia płciowe. -Dane są ogromnym punktem ślepym dla tradycyjnych metryk wydajności modeli. Możesz mieć wysokie wskaźniki dokładności, ale nie zawsze odzwierciedlają one ukryte uprzedzenia w danych. Na przykład, jeśli zbiór danych pracowników zawiera 27% kobiet na stanowiskach kierowniczych w firmie i 73% mężczyzn na tym samym poziomie, model AI do ogłaszania ofert pracy przeszkolony na tych danych może kierować swoje ogłoszenia głównie do mężczyzn na stanowiska wyższego szczebla. Taka nierównowaga w danych wpłynęła na przewidywania modelu, faworyzując jedną płeć. To ujawnia problem z uczciwością, gdzie model AI wykazuje uprzedzenia płciowe. +Komponent Analizy danych na pulpicie RAI pomaga zidentyfikować obszary nad- i niedoreprezentacji w zbiorze danych. Umożliwia użytkownikom diagnozowanie przyczyn błędów i problemów ze sprawiedliwością wynikających z nierówności danych lub braku reprezentacji określonej grupy danych. Daje możliwość wizualizacji zbiorów danych na podstawie przewidywanych i rzeczywistych wyników, grup błędów oraz konkretnych cech. Czasem odkrycie niedoreprezentowanej grupy danych może również ujawnić, że model źle uczy się danych, co powoduje wysoką liczbę błędów. Posiadanie modelu z uprzedzeniami danych nie jest tylko problemem sprawiedliwości, ale również pokazuje, że model nie jest inkluzywny ani wiarygodny. -Komponent Analizy Danych na pulpicie RAI pomaga zidentyfikować obszary, w których występuje nadmierna lub niedostateczna reprezentacja w zbiorze danych. Pomaga użytkownikom diagnozować przyczyny błędów i problemów z uczciwością wynikających z nierównowagi danych lub braku reprezentacji określonej grupy danych. Daje użytkownikom możliwość wizualizacji zbiorów danych na podstawie przewidywanych i rzeczywistych wyników, grup błędów i konkretnych cech. Czasami odkrycie niedostatecznie reprezentowanej grupy danych może również ujawnić, że model nie uczy się dobrze, co skutkuje wysokimi niedokładnościami. Model, który ma uprzedzenia w danych, nie tylko ma problem z uczciwością, ale także pokazuje, że nie jest inkluzywny ani wiarygodny. +![Komponent Analizy danych na pulpicie RAI](../../../../translated_images/pl/dataanalysis-cover.8d6d0683a70a5c1e.webp) -![Komponent Analizy Danych na pulpicie RAI](../../../../9-Real-World/2-Debugging-ML-Models/images/dataanalysis-cover.png) -Używaj analizy danych, gdy potrzebujesz: +Wykorzystaj analizę danych, gdy potrzebujesz: * Eksplorować statystyki swojego zbioru danych, wybierając różne filtry, aby podzielić dane na różne wymiary (znane również jako kohorty). * Zrozumieć rozkład swojego zbioru danych w różnych kohortach i grupach cech. -* Określić, czy Twoje ustalenia dotyczące uczciwości, analizy błędów i przyczynowości (pochodzące z innych komponentów pulpitu) wynikają z rozkładu Twojego zbioru danych. -* Zdecydować, w których obszarach należy zebrać więcej danych, aby zminimalizować błędy wynikające z problemów z reprezentacją, szumem etykiet, szumem cech, uprzedzeniami etykiet i podobnymi czynnikami. +* Określić, czy Twoje spostrzeżenia dotyczące sprawiedliwości, analizy błędów i przyczynowości (pochodzące z innych komponentów pulpitu) są wynikiem rozkładu Twojego zbioru danych. +* Zdecydować, w jakich obszarach trzeba zebrać więcej danych, aby złagodzić błędy wynikające z problemów z reprezentacją, szumu etykiet, szumu cech, uprzedzeń etykiet i podobnych czynników. ## Interpretowalność modelu -Modele uczenia maszynowego często są traktowane jako "czarne skrzynki". Zrozumienie, które kluczowe cechy danych napędzają przewidywania modelu, może być wyzwaniem. Ważne jest, aby zapewnić przejrzystość, dlaczego model dokonuje określonego przewidywania. Na przykład, jeśli system AI przewiduje, że pacjent z cukrzycą jest zagrożony ponownym przyjęciem do szpitala w ciągu mniej niż 30 dni, powinien być w stanie dostarczyć dane wspierające, które doprowadziły do tego przewidywania. Posiadanie takich wskaźników danych wprowadza przejrzystość, która pomaga klinikom lub szpitalom podejmować świadome decyzje. Ponadto możliwość wyjaśnienia, dlaczego model dokonał przewidywania dla konkretnego pacjenta, umożliwia zgodność z regulacjami zdrowotnymi. Kiedy używasz modeli uczenia maszynowego w sposób wpływający na życie ludzi, kluczowe jest zrozumienie i wyjaśnienie, co wpływa na zachowanie modelu. Interpretowalność i wyjaśnialność modelu pomagają odpowiedzieć na pytania w takich scenariuszach jak: +Modele uczenia maszynowego mają zwykle charakter czarnej skrzynki. Zrozumienie, które kluczowe cechy danych wpływają na predykcję modelu, może być trudne. Ważne jest, aby zapewnić przejrzystość, dlaczego model dokonuje określonej predykcji. Na przykład, jeśli system AI przewiduje, że pacjent diabetyk jest zagrożony szybkim ponownym przyjęciem do szpitala w mniej niż 30 dni, powinien być w stanie dostarczyć dane wspierające tę predykcję. Posiadanie wskaźników wspierających zapewnia przejrzystość, co pomaga klinicystom lub szpitalom podejmować dobrze poinformowane decyzje. Ponadto, możliwość wyjaśnienia, dlaczego model dokonał predykcji dla konkretnego pacjenta, umożliwia rozliczalność w zgodzie z przepisami zdrowotnymi. Gdy wykorzystujesz modele uczenia maszynowego w sposób wpływający na życie ludzi, kluczowe jest rozumienie i wyjaśnianie, co wpływa na zachowanie modelu. Wyjaśnialność i interpretowalność modelu pomaga odpowiedzieć na pytania w takich scenariuszach jak: * Debugowanie modelu: Dlaczego mój model popełnił ten błąd? Jak mogę go poprawić? * Współpraca człowiek-AI: Jak mogę zrozumieć i zaufać decyzjom modelu? -* Zgodność z regulacjami: Czy mój model spełnia wymagania prawne? +* Zgodność regulacyjna: Czy mój model spełnia wymagania prawne? -Komponent Ważności Cech na pulpicie RAI pomaga debugować i uzyskać kompleksowe zrozumienie, jak model dokonuje przewidywań. Jest to również przydatne narzędzie dla specjalistów od uczenia maszynowego i decydentów, aby wyjaśniać i przedstawiać dowody na cechy wpływające na zachowanie modelu w celu zgodności z regulacjami. Użytkownicy mogą następnie eksplorować zarówno globalne, jak i lokalne wyjaśnienia, aby zweryfikować, które cechy napędzają przewidywania modelu. Globalne wyjaśnienia wymieniają najważniejsze cechy, które wpłynęły na ogólne przewidywania modelu. Lokalne wyjaśnienia pokazują, które cechy doprowadziły do przewidywania modelu w indywidualnym przypadku. Możliwość oceny lokalnych wyjaśnień jest również pomocna w debugowaniu lub audycie konkretnego przypadku, aby lepiej zrozumieć i zinterpretować, dlaczego model dokonał poprawnego lub błędnego przewidywania. +Komponent Ważności cech na pulpicie RAI pomaga debugować i uzyskać wszechstronne zrozumienie, jak model dokonuje predykcji. To także przydatne narzędzie dla specjalistów uczenia maszynowego i decydentów do wyjaśniania i pokazywania dowodów na wpływ cech na zachowanie modelu dla zgodności regulacyjnej. Następnie użytkownicy mogą eksplorować zarówno wyjaśnienia globalne, jak i lokalne, by potwierdzić, które cechy kierowały predykcją modelu. Wyjaśnienia globalne wymieniają główne cechy wpływające na ogólną predykcję modelu. Wyjaśnienia lokalne pokazują, które cechy doprowadziły do predykcji modelu dla konkretnego przypadku. Możliwość oceny wyjaśnień lokalnych jest również pomocna w debugowaniu lub audycie konkretnego przypadku, aby lepiej zrozumieć i interpretować, dlaczego model dokonał dokładnej lub niedokładnej predykcji. -![Komponent Ważności Cech na pulpicie RAI](../../../../9-Real-World/2-Debugging-ML-Models/images/9-feature-importance.png) +![Komponent Ważności cech na pulpicie RAI](../../../../translated_images/pl/9-feature-importance.cd3193b4bba3fd4b.webp) -* Globalne wyjaśnienia: Na przykład, jakie cechy wpływają na ogólne zachowanie modelu przewidującego ponowne przyjęcie do szpitala pacjentów z cukrzycą? -* Lokalne wyjaśnienia: Na przykład, dlaczego pacjent z cukrzycą powyżej 60 roku życia z wcześniejszymi hospitalizacjami został przewidziany jako ponownie przyjęty lub nieprzyjęty do szpitala w ciągu 30 dni? +* Wyjaśnienia globalne: Na przykład, które cechy wpływają na całkowite zachowanie modelu przewidującego ponowne przyjęcie do szpitala pacjentów z cukrzycą? +* Wyjaśnienia lokalne: Na przykład, dlaczego pacjent diabetyk powyżej 60 lat z wcześniejszymi hospitalizacjami został przewidziany jako ponownie przyjęty lub nieprzyjęty do szpitala w ciągu 30 dni? -W procesie debugowania wydajności modelu w różnych kohortach, Ważność Cech pokazuje, jaki wpływ ma cecha w różnych kohortach. Pomaga ujawnić anomalie podczas porównywania poziomu wpływu cechy na błędne przewidywania modelu. Komponent Ważności Cech może pokazać, które wartości w cechach pozytywnie lub negatywnie wpłynęły na wynik modelu. Na przykład, jeśli model dokonał błędnego przewidywania, komponent daje możliwość szczegółowego zbadania i wskazania, które cechy lub wartości cech wpłynęły na przewidywanie. Ten poziom szczegółowości pomaga nie tylko w debugowaniu, ale także zapewnia przejrzystość i odpowiedzialność w sytuacjach audytowych. Wreszcie, komponent może pomóc w identyfikacji -- **Nad- lub niedoreprezentowanie**. Chodzi o sytuację, w której określona grupa nie jest widoczna w danym zawodzie, a każda usługa lub funkcja, która to utrwala, przyczynia się do szkody. +W procesie debugowania, podczas badania wydajności modelu w różnych kohortach, Ważność cech pokazuje, jaki wpływ ma dana cecha w ramach kohort. Pomaga ujawnić anomalie przy porównywaniu poziomu wpływu cechy na błędne predykcje modelu. Komponent Ważności cech może pokazać, które wartości w cechach pozytywnie lub negatywnie wpłynęły na wynik modelu. Na przykład, jeśli model dokonał niedokładnej predykcji, komponent umożliwia dogłębne zbadanie i wskazanie, które cechy lub wartości cech wpłynęły na predykcję. Poziom szczegółowości pomaga nie tylko w debugowaniu, ale również zapewnia przejrzystość i rozliczalność w sytuacjach audytu. Wreszcie komponent może pomóc zidentyfikować problemy ze sprawiedliwością. Na przykład, jeśli wrażliwa cecha, taka jak pochodzenie etniczne lub płeć, ma duży wpływ na predykcję modelu, może to być sygnał uprzedzeń rasowych lub płciowych w modelu. -### Azure RAI dashboard +![Znaczenie cech](../../../../translated_images/pl/9-features-influence.3ead3d3f68a84029.webp) -[Azure RAI dashboard](https://learn.microsoft.com/en-us/azure/machine-learning/concept-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) opiera się na narzędziach open-source opracowanych przez czołowe instytucje akademickie i organizacje, w tym Microsoft. Są one kluczowe dla naukowców zajmujących się danymi i twórców AI, aby lepiej zrozumieć zachowanie modeli, odkrywać i łagodzić niepożądane problemy związane z modelami AI. +Korzystaj z interpretowalności, gdy potrzebujesz: -- Dowiedz się, jak korzystać z różnych komponentów, zapoznając się z dokumentacją RAI dashboard [docs.](https://learn.microsoft.com/en-us/azure/machine-learning/how-to-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) +* Określić, jak wiarygodne są predykcje twojego systemu AI, rozumiejąc, które cechy są najważniejsze dla tych predykcji. +* Podejść do debugowania modelu przez jego lepsze zrozumienie i zidentyfikowanie, czy model używa zdrowych cech, czy jedynie fałszywych korelacji. +* Odkryć potencjalne źródła niesprawiedliwości, rozumiejąc, czy model opiera predykcje na cechach wrażliwych lub na cechach silnie z nimi skorelowanych. +* Budować zaufanie użytkowników do decyzji modelu, generując wyjaśnienia lokalne ilustrujące ich wyniki. +* Przeprowadzić audyt regulacyjny systemu AI, aby zweryfikować modele i monitorować wpływ decyzji modelu na ludzi. -- Sprawdź przykładowe notatniki RAI dashboard [sample notebooks](https://github.com/Azure/RAI-vNext-Preview/tree/main/examples/notebooks) do debugowania bardziej odpowiedzialnych scenariuszy AI w Azure Machine Learning. +## Podsumowanie ---- -## 🚀 Wyzwanie +Wszystkie komponenty pulpitu RAI są praktycznymi narzędziami pomagającymi budować modele uczenia maszynowego, które są mniej szkodliwe i bardziej wiarygodne dla społeczeństwa. Poprawiają zapobieganie zagrożeniom dla praw człowieka; dyskryminacji lub wykluczania pewnych grup z możliwości życiowych; oraz ryzyka urazów fizycznych lub psychicznych. Pomagają również budować zaufanie do decyzji modelu, generując wyjaśnienia lokalne obrazujące ich wyniki. Niektóre potencjalne szkody można sklasyfikować jako: -Aby zapobiec wprowadzaniu statystycznych lub danych uprzedzeń, powinniśmy: +- **Przydział**, jeśli np. płeć lub pochodzenie etniczne są faworyzowane względem innych. +- **Jakość usług**. Jeśli dane są trenowane dla jednego specyficznego scenariusza, a rzeczywistość jest znacznie bardziej złożona, prowadzi to do słabo działającej usługi. +- **Stereotypowanie**. Kojarzenie danej grupy z przypisanymi z góry cechami. -- zapewnić różnorodność środowisk i perspektyw wśród osób pracujących nad systemami -- inwestować w zestawy danych odzwierciedlające różnorodność naszego społeczeństwa -- opracowywać lepsze metody wykrywania i korygowania uprzedzeń, gdy się pojawią +- **Oszkalowanie**. Niesprawiedliwa krytyka i określanie czegoś lub kogoś. +- **Nad- lub niedoreprezentowanie**. Chodzi o to, że pewna grupa nie jest widoczna w danym zawodzie, a każda usługa lub funkcja, która to promuje, przyczynia się do szkody. -Pomyśl o rzeczywistych scenariuszach, w których niesprawiedliwość jest widoczna w budowaniu i użytkowaniu modeli. Co jeszcze powinniśmy wziąć pod uwagę? +### Panel Azure RAI + +[Panel Azure RAI](https://learn.microsoft.com/en-us/azure/machine-learning/concept-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) jest zbudowany na narzędziach open-source opracowanych przez wiodące instytucje akademickie i organizacje, w tym Microsoft, które są niezbędne dla data scientistów i deweloperów AI, aby lepiej zrozumieć zachowanie modelu, wykrywać i łagodzić niepożądane problemy z modelami AI. -## [Quiz po wykładzie](https://ff-quizzes.netlify.app/en/ml/) -## Przegląd i samodzielna nauka +- Naucz się korzystać z różnych komponentów, sprawdzając dokumentację panelu RAI [docs.](https://learn.microsoft.com/en-us/azure/machine-learning/how-to-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) -W tej lekcji nauczyłeś się praktycznych narzędzi do włączania odpowiedzialnej AI w uczeniu maszynowym. +- Sprawdź przykładowe notatniki panelu RAI [sample notebooks](https://github.com/Azure/RAI-vNext-Preview/tree/main/examples/notebooks) do debugowania bardziej odpowiedzialnych scenariuszy AI w Azure Machine Learning. + +--- +## 🚀 Wyzwanie + +Aby zapobiec wprowadzeniu uprzedzeń statystycznych lub danych, powinniśmy: + +- mieć różnorodność pochodzenia i perspektyw wśród osób pracujących nad systemami +- inwestować w zbiory danych odzwierciedlające różnorodność naszego społeczeństwa +- rozwijać lepsze metody wykrywania i korekty uprzedzeń, gdy się pojawią -Obejrzyj ten warsztat, aby zgłębić temat: +Pomyśl o scenariuszach z życia codziennego, gdzie niesprawiedliwość jest widoczna w budowaniu i korzystaniu z modeli. Co jeszcze powinniśmy wziąć pod uwagę? + +## [Quiz po wykładzie](https://ff-quizzes.netlify.app/en/ml/) +## Przegląd & Samokształcenie + +W tej lekcji nauczyłeś się niektórych praktycznych narzędzi włączania odpowiedzialnej AI w uczenie maszynowe. -- Responsible AI Dashboard: Kompleksowe narzędzie do wdrażania RAI w praktyce, prowadzone przez Besmirę Nushi i Mehrnoosh Sameki +Obejrzyj ten warsztat, aby zagłębić się w tematy: -[![Responsible AI Dashboard: Kompleksowe narzędzie do wdrażania RAI w praktyce](https://img.youtube.com/vi/f1oaDNl3djg/0.jpg)](https://www.youtube.com/watch?v=f1oaDNl3djg "Responsible AI Dashboard: Kompleksowe narzędzie do wdrażania RAI w praktyce") +- Panel Responsible AI: kompleksowe miejsce do operacjonalizacji RAI w praktyce, prowadzone przez Besmirę Nushi i Mehrnoosh Sameki -> 🎥 Kliknij obrazek powyżej, aby obejrzeć wideo: Responsible AI Dashboard: Kompleksowe narzędzie do wdrażania RAI w praktyce, prowadzone przez Besmirę Nushi i Mehrnoosh Sameki +[![Responsible AI Dashboard: One-stop shop for operationalizing RAI in practice](https://img.youtube.com/vi/f1oaDNl3djg/0.jpg)](https://www.youtube.com/watch?v=f1oaDNl3djg "Responsible AI Dashboard: One-stop shop for operationalizing RAI in practice") -Zapoznaj się z poniższymi materiałami, aby dowiedzieć się więcej o odpowiedzialnej AI i jak budować bardziej godne zaufania modele: +> 🎥 Kliknij powyższy obraz, aby obejrzeć wideo: Responsible AI Dashboard: One-stop shop for operationalizing RAI in practice prowadzone przez Besmirę Nushi i Mehrnoosh Sameki + +Skorzystaj z następujących materiałów, aby dowiedzieć się więcej o odpowiedzialnej AI i jak budować bardziej godne zaufania modele: -- Narzędzia Microsoft RAI dashboard do debugowania modeli ML: [Responsible AI tools resources](https://aka.ms/rai-dashboard) +- Narzędzia panelu RAI Microsoft do debugowania modeli ML: [Responsible AI tools resources](https://aka.ms/rai-dashboard) -- Odkryj zestaw narzędzi Responsible AI: [Github](https://github.com/microsoft/responsible-ai-toolbox) +- Poznaj zestaw narzędzi Responsible AI: [Github](https://github.com/microsoft/responsible-ai-toolbox) -- Centrum zasobów Microsoft RAI: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) +- Centrum zasobów Microsoft dotyczące RAI: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) -- Grupa badawcza Microsoft FATE: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/) +- Grupa badawcza FATE Microsoft: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/) ## Zadanie -[Zapoznaj się z RAI dashboard](assignment.md) +[Zbadaj panel RAI](assignment.md) --- -**Zastrzeżenie**: -Ten dokument został przetłumaczony za pomocą usługi tłumaczeniowej AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż dokładamy wszelkich starań, aby tłumaczenie było precyzyjne, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia wykonanego przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z korzystania z tego tłumaczenia. \ No newline at end of file + +**Zastrzeżenie**: +Niniejszy dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Choć dążymy do dokładności, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub niedokładności. Oryginalny dokument w jego języku źródłowym należy uznawać za autorytatywne źródło. W przypadku informacji krytycznych zalecane jest skorzystanie z profesjonalnego tłumaczenia wykonanego przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. + \ No newline at end of file diff --git a/translations/pt-BR/.co-op-translator.json b/translations/pt-BR/.co-op-translator.json index d3d67368d..1c27a024e 100644 --- a/translations/pt-BR/.co-op-translator.json +++ b/translations/pt-BR/.co-op-translator.json @@ -24,8 +24,8 @@ "language_code": "pt-BR" }, "1-Introduction/3-fairness/README.md": { - "original_hash": "9a6b702d1437c0467e3c5c28d763dac2", - "translation_date": "2025-09-04T21:34:04+00:00", + "original_hash": "0f00d72169a0d37eecfd16d71e01700a", + "translation_date": "2026-07-14T03:17:29+00:00", "source_file": "1-Introduction/3-fairness/README.md", "language_code": "pt-BR" }, @@ -54,8 +54,8 @@ "language_code": "pt-BR" }, "2-Regression/1-Tools/README.md": { - "original_hash": "fa81d226c71d5af7a2cade31c1c92b88", - "translation_date": "2025-09-04T21:24:44+00:00", + "original_hash": "0b8635427b582d03ea4ab7089b93e505", + "translation_date": "2026-07-14T03:13:58+00:00", "source_file": "2-Regression/1-Tools/README.md", "language_code": "pt-BR" }, @@ -72,8 +72,8 @@ "language_code": "pt-BR" }, "2-Regression/2-Data/README.md": { - "original_hash": "7c077988328ebfe33b24d07945f16eca", - "translation_date": "2025-09-04T21:25:44+00:00", + "original_hash": "a58b2c4d16c6b122643391745ac15af6", + "translation_date": "2026-07-14T03:15:01+00:00", "source_file": "2-Regression/2-Data/README.md", "language_code": "pt-BR" }, @@ -89,6 +89,12 @@ "source_file": "2-Regression/2-Data/solution/Julia/README.md", "language_code": "pt-BR" }, + "2-Regression/2-Data/solution/notebook.ipynb": { + "original_hash": "96b95f8cf473481f2f371de8156f1571", + "translation_date": "2026-07-14T02:32:46+00:00", + "source_file": "2-Regression/2-Data/solution/notebook.ipynb", + "language_code": "pt-BR" + }, "2-Regression/3-Linear/README.md": { "original_hash": "8b776e731c35b171d316d01d0e7b1369", "translation_date": "2026-04-26T18:41:47+00:00", @@ -457,7 +463,7 @@ }, "8-Reinforcement/1-QLearning/README.md": { "original_hash": "911efd5e595089000cb3c16fce1beab8", - "translation_date": "2025-09-04T21:42:23+00:00", + "translation_date": "2026-07-14T03:15:51+00:00", "source_file": "8-Reinforcement/1-QLearning/README.md", "language_code": "pt-BR" }, @@ -481,7 +487,7 @@ }, "8-Reinforcement/2-Gym/README.md": { "original_hash": "107d5bb29da8a562e7ae72262d251a75", - "translation_date": "2025-09-04T21:43:14+00:00", + "translation_date": "2026-07-14T03:16:44+00:00", "source_file": "8-Reinforcement/2-Gym/README.md", "language_code": "pt-BR" }, @@ -581,6 +587,19 @@ "source_file": "TROUBLESHOOTING.md", "language_code": "pt-BR" }, + "__translation_failures__": { + "sketchnotes/LICENSE.md": { + "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f", + "source_file": "sketchnotes/LICENSE.md", + "language_code": "pt-BR", + "failure_date": "2026-07-14T03:13:16+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:41+00:00", diff --git a/translations/pt-BR/1-Introduction/3-fairness/README.md b/translations/pt-BR/1-Introduction/3-fairness/README.md index 3d4ffd423..de9c7ac5a 100644 --- a/translations/pt-BR/1-Introduction/3-fairness/README.md +++ b/translations/pt-BR/1-Introduction/3-fairness/README.md @@ -1,161 +1,167 @@ # Construindo soluções de Machine Learning com IA responsável - -![Resumo de IA responsável em Machine Learning em um sketchnote](../../../../sketchnotes/ml-fairness.png) + +![Resumo de IA responsável em Machine Learning em um sketchnote](../../../../translated_images/pt-BR/ml-fairness.ef296ebec6afc98a.webp) > Sketchnote por [Tomomi Imura](https://www.twitter.com/girlie_mac) ## [Quiz pré-aula](https://ff-quizzes.netlify.app/en/ml/) - + ## Introdução -Neste currículo, você começará a descobrir como o aprendizado de máquina pode impactar e já está impactando nossas vidas cotidianas. Atualmente, sistemas e modelos estão envolvidos em tarefas de tomada de decisão diária, como diagnósticos de saúde, aprovações de empréstimos ou detecção de fraudes. Por isso, é importante que esses modelos funcionem bem para fornecer resultados confiáveis. Assim como qualquer aplicação de software, sistemas de IA podem não atender às expectativas ou ter resultados indesejáveis. É por isso que é essencial entender e explicar o comportamento de um modelo de IA. +Neste currículo, você começará a descobrir como o machine learning pode e está impactando nosso dia a dia. Mesmo agora, sistemas e modelos estão envolvidos em tarefas diárias de tomada de decisão, como diagnósticos de saúde, aprovações de empréstimos ou detecção de fraude. Portanto, é importante que esses modelos funcionem bem para fornecer resultados confiáveis. Assim como qualquer aplicativo de software, sistemas de IA podem falhar nas expectativas ou apresentar um resultado indesejado. É por isso que é essencial ser capaz de entender e explicar o comportamento de um modelo de IA. -Imagine o que pode acontecer quando os dados usados para construir esses modelos carecem de certos grupos demográficos, como raça, gênero, visão política, religião, ou representam esses grupos de forma desproporcional. E se a saída do modelo for interpretada de forma a favorecer algum grupo demográfico? Qual é a consequência para a aplicação? Além disso, o que acontece quando o modelo tem um resultado adverso e prejudica pessoas? Quem é responsável pelo comportamento dos sistemas de IA? Estas são algumas das questões que exploraremos neste currículo. +Imagine o que pode acontecer quando os dados que você usa para construir esses modelos não incluem determinados grupos demográficos, como raça, gênero, visão política, religião, ou representam desproporcionalmente tais grupos. E quando a saída do modelo é interpretada para favorecer algum grupo demográfico? Qual é a consequência para a aplicação? Além disso, o que acontece quando o modelo tem um resultado adverso e prejudica pessoas? Quem é responsável pelo comportamento dos sistemas de IA? Essas são algumas perguntas que exploraremos neste currículo. -Nesta lição, você irá: +Nesta lição, você irá: -- Aumentar sua conscientização sobre a importância da equidade no aprendizado de máquina e os danos relacionados à falta de equidade. -- Familiarizar-se com a prática de explorar outliers e cenários incomuns para garantir confiabilidade e segurança. -- Compreender a necessidade de capacitar todos ao projetar sistemas inclusivos. -- Explorar como é vital proteger a privacidade e a segurança dos dados e das pessoas. -- Ver a importância de ter uma abordagem transparente para explicar o comportamento dos modelos de IA. -- Ser consciente de como a responsabilidade é essencial para construir confiança em sistemas de IA. +- Elevar sua conscientização sobre a importância da justiça no machine learning e danos relacionados à justiça. +- Familiarizar-se com a prática de explorar casos extremos e cenários incomuns para garantir confiabilidade e segurança +- Obter entendimento sobre a necessidade de empoderar todos por meio do design de sistemas inclusivos +- Explorar como é vital proteger a privacidade e a segurança dos dados e das pessoas +- Ver a importância de ter uma abordagem de caixa transparente para explicar o comportamento dos modelos de IA +- Estar atento a como a responsabilidade é essencial para construir confiança nos sistemas de IA ## Pré-requisito -Como pré-requisito, faça o "Caminho de Aprendizado sobre Princípios de IA Responsável" e assista ao vídeo abaixo sobre o tema: +Como pré-requisito, por favor faça o "Princípios de IA Responsável" no Caminho de Aprendizagem e assista ao vídeo abaixo sobre o tema: -Saiba mais sobre IA Responsável seguindo este [Caminho de Aprendizado](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) +Saiba mais sobre IA Responsável seguindo este [Caminho de Aprendizagem](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) [![Abordagem da Microsoft para IA Responsável](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Abordagem da Microsoft para IA Responsável") -> 🎥 Clique na imagem acima para assistir ao vídeo: Abordagem da Microsoft para IA Responsável +> 🎥 Clique na imagem acima para um vídeo: Abordagem da Microsoft para IA Responsável -## Equidade +## Justiça -Sistemas de IA devem tratar todos de forma justa e evitar afetar grupos semelhantes de pessoas de maneiras diferentes. Por exemplo, quando sistemas de IA fornecem orientações sobre tratamento médico, solicitações de empréstimos ou emprego, eles devem fazer as mesmas recomendações para todos com sintomas, circunstâncias financeiras ou qualificações profissionais semelhantes. Cada um de nós, como seres humanos, carrega preconceitos herdados que afetam nossas decisões e ações. Esses preconceitos podem estar evidentes nos dados que usamos para treinar sistemas de IA. Essa manipulação pode, às vezes, acontecer de forma não intencional. Muitas vezes, é difícil perceber conscientemente quando você está introduzindo preconceitos nos dados. +Sistemas de IA devem tratar todas as pessoas de forma justa e evitar afetar grupos semelhantes de maneira diferente. Por exemplo, quando sistemas de IA fornecem orientações sobre tratamento médico, solicitações de empréstimos ou emprego, eles devem fazer as mesmas recomendações para todos com sintomas, condições financeiras ou qualificações profissionais semelhantes. Cada um de nós, como humanos, carrega preconceitos herdados que afetam nossas decisões e ações. Esses preconceitos podem ser evidentes nos dados que usamos para treinar sistemas de IA. Tal manipulação às vezes ocorre sem intenção. Muitas vezes é difícil saber conscientemente quando você está introduzindo viés nos dados. -**“Injustiça”** abrange impactos negativos, ou “danos”, para um grupo de pessoas, como aqueles definidos em termos de raça, gênero, idade ou status de deficiência. Os principais danos relacionados à equidade podem ser classificados como: +**“Injustiça”** engloba impactos negativos, ou “danos”, para um grupo de pessoas, como aqueles definidos em termos de raça, gênero, idade ou condição de deficiência. Os principais danos relacionados à justiça podem ser classificados como: -- **Alocação**, quando, por exemplo, um gênero ou etnia é favorecido em detrimento de outro. -- **Qualidade do serviço**. Se você treinar os dados para um cenário específico, mas a realidade for muito mais complexa, isso leva a um serviço de desempenho ruim. Por exemplo, um dispensador de sabão que não consegue detectar pessoas com pele escura. [Referência](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773) -- **Denigração**. Criticar ou rotular algo ou alguém de forma injusta. Por exemplo, uma tecnologia de rotulagem de imagens que infamemente rotulou imagens de pessoas de pele escura como gorilas. -- **Super ou sub-representação**. A ideia de que um determinado grupo não é visto em uma certa profissão, e qualquer serviço ou função que continue promovendo isso está contribuindo para o dano. -- **Estereotipagem**. Associar um grupo específico a atributos pré-definidos. Por exemplo, um sistema de tradução entre inglês e turco pode ter imprecisões devido a palavras com associações estereotipadas de gênero. +- **Alocação**, se um gênero ou etnia, por exemplo, é favorecido em relação a outro. +- **Qualidade do serviço**. Se você treina os dados para um cenário específico, mas a realidade for muito mais complexa, isso leva a um serviço com desempenho ruim. Por exemplo, um dispensador de sabonete que parecia não conseguir detectar pessoas com pele escura. [Referência](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773) +- **Denegrimento**. Criticar e rotular algo ou alguém de forma injusta. Por exemplo, uma tecnologia de rotulagem de imagens que famosamente rotulou erroneamente imagens de pessoas de pele escura como gorilas. +- **Super- ou sub-representação**. A ideia é que um determinado grupo não é visto em uma certa profissão, e qualquer serviço ou função que continue promovendo isso contribui para o dano. +- **Estereotipagem**. Associar um grupo dado com atributos pré-atribuídos. Por exemplo, um sistema de tradução de idiomas entre inglês e turco pode ter imprecisões devido a palavras com associações estereotipadas de gênero. -![tradução para turco](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) +![tradução para turco](../../../../translated_images/pt-BR/gender-bias-translate-en-tr.f185fd8822c2d437.webp) > tradução para turco -![tradução de volta para inglês](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) +![tradução de volta para inglês](../../../../translated_images/pt-BR/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) > tradução de volta para inglês -Ao projetar e testar sistemas de IA, precisamos garantir que a IA seja justa e não programada para tomar decisões tendenciosas ou discriminatórias, que também são proibidas para seres humanos. Garantir equidade em IA e aprendizado de máquina continua sendo um desafio sociotécnico complexo. +Ao projetar e testar sistemas de IA, precisamos garantir que a IA seja justa e não programada para tomar decisões tendenciosas ou discriminatórias, o que os seres humanos também são proibidos de fazer. Garantir justiça em IA e machine learning continua sendo um desafio sociotécnico complexo. ### Confiabilidade e segurança -Para construir confiança, sistemas de IA precisam ser confiáveis, seguros e consistentes em condições normais e inesperadas. É importante saber como os sistemas de IA se comportarão em uma variedade de situações, especialmente quando são casos extremos. Ao construir soluções de IA, é necessário um foco substancial em como lidar com uma ampla variedade de circunstâncias que as soluções de IA podem encontrar. Por exemplo, um carro autônomo precisa priorizar a segurança das pessoas. Como resultado, a IA que alimenta o carro precisa considerar todos os cenários possíveis que o carro pode enfrentar, como noite, tempestades, nevascas, crianças correndo pela rua, animais de estimação, construções na estrada, etc. Quão bem um sistema de IA pode lidar com uma ampla gama de condições de forma confiável e segura reflete o nível de antecipação que o cientista de dados ou desenvolvedor de IA considerou durante o design ou teste do sistema. +Para construir confiança, sistemas de IA precisam ser confiáveis, seguros e consistentes em condições normais e inesperadas. É importante saber como sistemas de IA se comportarão em diversas situações, especialmente quando são casos atípicos. Ao construir soluções de IA, deve haver um foco substancial em como lidar com uma ampla variedade de circunstâncias que as soluções de IA podem encontrar. Por exemplo, um carro autônomo precisa colocar a segurança das pessoas como prioridade máxima. Como resultado, a IA que controla o carro precisa considerar todos os possíveis cenários que o carro pode enfrentar, como noite, tempestades ou nevascas, crianças correndo pela rua, animais de estimação, construções na estrada etc. Quão bem um sistema de IA pode lidar de forma confiável e segura com uma gama tão variada de condições reflete o nível de antecipação que o cientista de dados ou desenvolvedor de IA considerou durante o design ou teste do sistema. -> [🎥 Clique aqui para assistir ao vídeo: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl) +> [🎥 Clique aqui para um vídeo: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl) -### Inclusão +### Inclusividade -Sistemas de IA devem ser projetados para engajar e capacitar todos. Ao projetar e implementar sistemas de IA, cientistas de dados e desenvolvedores de IA identificam e abordam possíveis barreiras no sistema que poderiam excluir pessoas de forma não intencional. Por exemplo, existem 1 bilhão de pessoas com deficiência em todo o mundo. Com o avanço da IA, elas podem acessar uma ampla gama de informações e oportunidades mais facilmente em suas vidas diárias. Ao abordar as barreiras, cria-se oportunidades para inovar e desenvolver produtos de IA com melhores experiências que beneficiem todos. +Sistemas de IA devem ser projetados para engajar e empoderar todos. Ao projetar e implementar sistemas de IA, cientistas de dados e desenvolvedores de IA identificam e abordam barreiras potenciais no sistema que poderiam, inadvertidamente, excluir pessoas. Por exemplo, há 1 bilhão de pessoas com deficiências no mundo. Com o avanço da IA, eles podem acessar uma ampla gama de informações e oportunidades mais facilmente em suas vidas diárias. Ao abordar essas barreiras, criam-se oportunidades para inovar e desenvolver produtos de IA com melhores experiências que beneficiam a todos. -> [🎥 Clique aqui para assistir ao vídeo: inclusão em IA](https://www.microsoft.com/videoplayer/embed/RE4vl9v) +> [🎥 Clique aqui para um vídeo: inclusividade em IA](https://www.microsoft.com/videoplayer/embed/RE4vl9v) -### Segurança e privacidade +### Segurança e privacidade -Sistemas de IA devem ser seguros e respeitar a privacidade das pessoas. As pessoas têm menos confiança em sistemas que colocam sua privacidade, informações ou vidas em risco. Ao treinar modelos de aprendizado de máquina, dependemos de dados para produzir os melhores resultados. Ao fazer isso, a origem dos dados e sua integridade devem ser consideradas. Por exemplo, os dados foram enviados por usuários ou estão disponíveis publicamente? Além disso, ao trabalhar com os dados, é crucial desenvolver sistemas de IA que possam proteger informações confidenciais e resistir a ataques. À medida que a IA se torna mais prevalente, proteger a privacidade e garantir a segurança de informações pessoais e empresariais importantes está se tornando mais crítico e complexo. Questões de privacidade e segurança de dados exigem atenção especial para IA porque o acesso aos dados é essencial para que os sistemas de IA façam previsões e decisões precisas e informadas sobre as pessoas. +Sistemas de IA devem ser seguros e respeitar a privacidade das pessoas. As pessoas confiam menos em sistemas que colocam sua privacidade, informações ou vidas em risco. Ao treinar modelos de machine learning, dependemos dos dados para produzir os melhores resultados. Ao fazer isso, a origem dos dados e a integridade devem ser consideradas. Por exemplo, os dados foram submetidos pelo usuário ou são publicamente disponíveis? Em seguida, ao trabalhar com os dados, é crucial desenvolver sistemas de IA que possam proteger informações confidenciais e resistir a ataques. À medida que a IA se torna mais prevalente, proteger a privacidade e assegurar informações pessoais e comerciais importantes torna-se mais crítico e complexo. Questões de privacidade e segurança de dados exigem atenção especialmente próxima para IA porque o acesso a dados é essencial para que sistemas de IA façam previsões e decisões precisas e informadas sobre pessoas. -> [🎥 Clique aqui para assistir ao vídeo: segurança em IA](https://www.microsoft.com/videoplayer/embed/RE4voJF) +> [🎥 Clique aqui para um vídeo: segurança em IA](https://www.microsoft.com/videoplayer/embed/RE4voJF) -- Como indústria, fizemos avanços significativos em privacidade e segurança, impulsionados significativamente por regulamentações como o GDPR (Regulamento Geral de Proteção de Dados). -- No entanto, com sistemas de IA, devemos reconhecer a tensão entre a necessidade de mais dados pessoais para tornar os sistemas mais personalizados e eficazes – e a privacidade. -- Assim como com o nascimento de computadores conectados à internet, também estamos vendo um grande aumento no número de problemas de segurança relacionados à IA. -- Ao mesmo tempo, vimos a IA sendo usada para melhorar a segurança. Por exemplo, a maioria dos scanners antivírus modernos é alimentada por heurísticas de IA. -- Precisamos garantir que nossos processos de ciência de dados se harmonizem com as práticas mais recentes de privacidade e segurança. +- Como indústria, fizemos avanços significativos em Privacidade & segurança, impulsionados significativamente por regulamentações como o GDPR (Regulamento Geral de Proteção de Dados). +- Porém, com sistemas de IA, precisamos reconhecer a tensão entre a necessidade de mais dados pessoais para tornar os sistemas mais personalizados e eficazes – e a privacidade. +- Assim como com o surgimento dos computadores conectados com a internet, também estamos vendo um grande aumento no número de questões de segurança relacionadas à IA. +- Ao mesmo tempo, vimos IA sendo usada para melhorar a segurança. Por exemplo, a maioria dos scanners antivírus modernos é hoje movida por heurísticas de IA. +- Precisamos garantir que nossos processos de Ciência de Dados se integrem harmoniosamente com as práticas mais recentes de privacidade e segurança. -### Transparência -Sistemas de IA devem ser compreensíveis. Uma parte crucial da transparência é explicar o comportamento dos sistemas de IA e seus componentes. Melhorar a compreensão dos sistemas de IA exige que as partes interessadas compreendam como e por que eles funcionam, para que possam identificar possíveis problemas de desempenho, preocupações de segurança e privacidade, preconceitos, práticas excludentes ou resultados indesejados. Também acreditamos que aqueles que usam sistemas de IA devem ser honestos e transparentes sobre quando, por que e como escolhem implantá-los, bem como sobre as limitações dos sistemas que utilizam. Por exemplo, se um banco usa um sistema de IA para apoiar suas decisões de empréstimos ao consumidor, é importante examinar os resultados e entender quais dados influenciam as recomendações do sistema. Governos estão começando a regulamentar a IA em diferentes indústrias, então cientistas de dados e organizações devem explicar se um sistema de IA atende aos requisitos regulatórios, especialmente quando há um resultado indesejável. +### Transparência +Sistemas de IA devem ser compreensíveis. Uma parte crucial da transparência é explicar o comportamento dos sistemas de IA e seus componentes. Melhorar a compreensão dos sistemas de IA requer que as partes interessadas entendam como e por que eles funcionam para que possam identificar potenciais problemas de desempenho, preocupações de segurança e privacidade, preconceitos, práticas excludentes ou resultados não intencionais. Também acreditamos que aqueles que usam sistemas de IA devem ser honestos e francos sobre quando, por que e como escolhem implementá-los. Assim como sobre as limitações dos sistemas que usam. Por exemplo, se um banco usa um sistema de IA para apoiar suas decisões de empréstimos a consumidores, é importante analisar os resultados e entender quais dados influenciam as recomendações do sistema. Governos estão começando a regulamentar IA em diversos setores, então cientistas de dados e organizações devem explicar se um sistema de IA atende aos requisitos regulatórios, especialmente quando há um resultado indesejado. -> [🎥 Clique aqui para assistir ao vídeo: transparência em IA](https://www.microsoft.com/videoplayer/embed/RE4voJF) +> [🎥 Clique aqui para um vídeo: transparência em IA](https://www.microsoft.com/videoplayer/embed/RE4voJF) -- Como os sistemas de IA são tão complexos, é difícil entender como eles funcionam e interpretar os resultados. -- Essa falta de compreensão afeta a forma como esses sistemas são gerenciados, operacionalizados e documentados. -- Mais importante ainda, essa falta de compreensão afeta as decisões tomadas com base nos resultados que esses sistemas produzem. +- Porque os sistemas de IA são tão complexos, é difícil entender como eles funcionam e interpretar os resultados. +- Essa falta de entendimento afeta a forma como esses sistemas são gerenciados, operacionalizados e documentados. +- Essa falta de entendimento, mais importante, afeta as decisões tomadas usando os resultados que esses sistemas produzem. ### Responsabilidade + +As pessoas que projetam e implementam sistemas de IA devem ser responsáveis por como seus sistemas operam. A necessidade de responsabilidade é particularmente crucial com tecnologias de uso sensível, como o reconhecimento facial. Recentemente, houve uma crescente demanda por tecnologia de reconhecimento facial, especialmente de organizações de aplicação da lei que veem o potencial da tecnologia em usos como encontrar crianças desaparecidas. No entanto, essas tecnologias poderiam potencialmente ser usadas por um governo para colocar em risco as liberdades fundamentais de seus cidadãos ao, por exemplo, permitir vigilância contínua de indivíduos específicos. Portanto, cientistas de dados e organizações precisam ser responsáveis por como seus sistemas de IA impactam indivíduos ou a sociedade. -As pessoas que projetam e implantam sistemas de IA devem ser responsáveis pelo funcionamento de seus sistemas. A necessidade de responsabilidade é particularmente crucial com tecnologias sensíveis, como reconhecimento facial. Recentemente, houve uma demanda crescente por tecnologia de reconhecimento facial, especialmente de organizações de aplicação da lei que veem o potencial da tecnologia em usos como encontrar crianças desaparecidas. No entanto, essas tecnologias podem ser usadas por um governo para colocar em risco as liberdades fundamentais de seus cidadãos, por exemplo, permitindo vigilância contínua de indivíduos específicos. Portanto, cientistas de dados e organizações precisam ser responsáveis pelo impacto de seus sistemas de IA sobre indivíduos ou a sociedade. +[![Pesquisador líder em IA alerta sobre vigilância em massa por reconhecimento facial](../../../../translated_images/pt-BR/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Abordagem da Microsoft para IA Responsável") -[![Pesquisador líder em IA alerta sobre vigilância em massa por meio de reconhecimento facial](../../../../1-Introduction/3-fairness/images/accountability.png)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Abordagem da Microsoft para IA Responsável") +> 🎥 Clique na imagem acima para um vídeo: Avisos sobre Vigilância em Massa por Reconhecimento Facial -> 🎥 Clique na imagem acima para assistir ao vídeo: Alertas sobre vigilância em massa por meio de reconhecimento facial - -No final, uma das maiores questões para nossa geração, como a primeira geração que está trazendo IA para a sociedade, é como garantir que os computadores permaneçam responsáveis perante as pessoas e como garantir que as pessoas que projetam computadores permaneçam responsáveis perante todos os outros. +Em última análise, uma das maiores perguntas para nossa geração, como a primeira geração que está trazendo IA para a sociedade, é como garantir que os computadores permaneçam responsáveis perante as pessoas e como garantir que as pessoas que projetam computadores permaneçam responsáveis perante todos os demais. ## Avaliação de impacto -Antes de treinar um modelo de aprendizado de máquina, é importante realizar uma avaliação de impacto para entender o propósito do sistema de IA; qual é o uso pretendido; onde ele será implantado; e quem interagirá com o sistema. Essas informações são úteis para os revisores ou testadores avaliarem o sistema e saberem quais fatores considerar ao identificar riscos potenciais e consequências esperadas. +Antes de treinar um modelo de machine learning, é importante realizar uma avaliação de impacto para entender o propósito do sistema de IA; qual é seu uso pretendido; onde será implementado; e quem interagirá com o sistema. Esses são pontos úteis para revisores ou testadores que avaliam o sistema saberem quais fatores levar em consideração ao identificar riscos potenciais e consequências esperadas. -As seguintes áreas devem ser focadas ao realizar uma avaliação de impacto: +As seguintes são áreas de foco ao conduzir uma avaliação de impacto: -* **Impacto adverso sobre indivíduos**. Estar ciente de quaisquer restrições ou requisitos, uso não suportado ou limitações conhecidas que possam prejudicar o desempenho do sistema é vital para garantir que o sistema não seja usado de forma a causar danos às pessoas. -* **Requisitos de dados**. Compreender como e onde o sistema usará dados permite que os revisores explorem quaisquer requisitos de dados que você precise considerar (por exemplo, regulamentações de dados como GDPR ou HIPAA). Além disso, examine se a origem ou quantidade de dados é substancial para o treinamento. -* **Resumo do impacto**. Reúna uma lista de possíveis danos que podem surgir do uso do sistema. Ao longo do ciclo de vida do aprendizado de máquina, revise se os problemas identificados foram mitigados ou resolvidos. -* **Metas aplicáveis** para cada um dos seis princípios fundamentais. Avalie se as metas de cada princípio foram atendidas e se há lacunas. +* **Impacto adverso em indivíduos**. Estar ciente de quaisquer restrições ou requisitos, uso não suportado ou quaisquer limitações conhecidas que prejudiquem o desempenho do sistema é vital para garantir que o sistema não seja usado de maneira que possa causar danos aos indivíduos. +* **Requisitos de dados**. Obter uma compreensão de como e onde o sistema usará os dados permite que os revisores explorem quaisquer requisitos de dados que você deve ter em mente (ex: regulamentos GDPR ou HIPAA). Além disso, examinar se a origem ou quantidade de dados é substancial para o treinamento. +* **Resumo do impacto**. Reunir uma lista de danos potenciais que poderiam surgir do uso do sistema. Ao longo do ciclo de vida do ML, revisar se os problemas identificados são mitigados ou tratados. +* **Objetivos aplicáveis** para cada um dos seis princípios centrais. Avaliar se os objetivos de cada um dos princípios são atendidos e se existem lacunas. -## Depuração com IA responsável -Semelhante à depuração de uma aplicação de software, depurar um sistema de IA é um processo necessário para identificar e resolver problemas no sistema. Há muitos fatores que podem afetar o desempenho de um modelo ou sua responsabilidade. A maioria das métricas tradicionais de desempenho de modelos são agregados quantitativos do desempenho de um modelo, o que não é suficiente para analisar como um modelo viola os princípios de IA responsável. Além disso, um modelo de aprendizado de máquina é uma "caixa preta", o que dificulta entender o que impulsiona seus resultados ou fornecer explicações quando ele comete erros. Mais adiante neste curso, aprenderemos como usar o painel de IA Responsável para ajudar a depurar sistemas de IA. O painel fornece uma ferramenta holística para cientistas de dados e desenvolvedores de IA realizarem: +## Depuração com IA responsável -* **Análise de erros**. Para identificar a distribuição de erros do modelo que pode afetar a equidade ou confiabilidade do sistema. -* **Visão geral do modelo**. Para descobrir onde há disparidades no desempenho do modelo entre diferentes grupos de dados. -* **Análise de dados**. Para entender a distribuição dos dados e identificar possíveis preconceitos nos dados que possam levar a problemas de equidade, inclusão e confiabilidade. -* **Interpretabilidade do modelo**. Para entender o que afeta ou influencia as previsões do modelo. Isso ajuda a explicar o comportamento do modelo, o que é importante para transparência e responsabilidade. +Semelhante à depuração de um aplicativo de software, depurar um sistema de IA é um processo necessário de identificação e resolução de problemas no sistema. Há muitos fatores que podem afetar um modelo a não performar como esperado ou de forma responsável. A maioria das métricas tradicionais de desempenho do modelo são agregados quantitativos do desempenho do modelo, que não são suficientes para analisar como um modelo viola os princípios de IA responsável. Além disso, um modelo de machine learning é uma caixa preta que dificulta entender o que conduz seu resultado ou fornecer explicação quando ele comete um erro. Mais adiante neste curso, aprenderemos como usar o painel de IA Responsável para ajudar a depurar sistemas de IA. O painel fornece uma ferramenta holística para cientistas de dados e desenvolvedores de IA realizarem: -## 🚀 Desafio +* **Análise de erros**. Para identificar a distribuição de erros do modelo que pode afetar a justiça ou confiabilidade do sistema. +* **Visão geral do modelo**. Para descobrir onde há disparidades no desempenho do modelo entre coortes de dados. +* **Análise de dados**. Para entender a distribuição dos dados e identificar qualquer viés potencial nos dados que possa levar a problemas de justiça, inclusividade e confiabilidade. +* **Interpretabilidade do modelo**. Para compreender o que afeta ou influencia as previsões do modelo. Isso ajuda a explicar o comportamento do modelo, o que é importante para transparência e responsabilidade. -Para evitar que danos sejam introduzidos desde o início, devemos: + +## 🚀 Desafio + +Para prevenir que danos sejam introduzidos desde o início, devemos: - ter diversidade de origens e perspectivas entre as pessoas que trabalham nos sistemas -- investir em conjuntos de dados que reflitam a diversidade de nossa sociedade -- desenvolver melhores métodos ao longo do ciclo de vida do aprendizado de máquina para detectar e corrigir problemas de IA responsável quando eles ocorrerem +- investir em conjuntos de dados que reflitam a diversidade da nossa sociedade +- desenvolver melhores métodos ao longo do ciclo de vida do machine learning para detectar e corrigir IA responsável quando ocorrer -Pense em cenários da vida real onde a falta de confiabilidade de um modelo é evidente na construção e uso do modelo. O que mais devemos considerar? +Pense em cenários da vida real onde a falta de confiabilidade de um modelo é evidente na construção e uso do modelo. O que mais deveríamos considerar? ## [Quiz pós-aula](https://ff-quizzes.netlify.app/en/ml/) -## Revisão e Autoestudo +## Revisão & Estudo Autônomo + -Nesta lição, você aprendeu alguns conceitos básicos sobre equidade e injustiça no aprendizado de máquina. -Assista a este workshop para se aprofundar nos tópicos: +Nesta lição, você aprendeu alguns conceitos básicos sobre justiça e injustiça em aprendizado de máquina. + +Assista este workshop para aprofundar nos tópicos: -- Em busca de IA responsável: Colocando princípios em prática por Besmira Nushi, Mehrnoosh Sameki e Amit Sharma +- Na busca por IA responsável: Aplicando princípios na prática por Besmira Nushi, Mehrnoosh Sameki e Amit Sharma -[![Responsible AI Toolbox: Um framework de código aberto para construir IA responsável](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: Um framework de código aberto para construir IA responsável") +[![Responsible AI Toolbox: Um framework open-source para construção de IA responsável](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: Um framework open-source para construção de IA responsável") -> 🎥 Clique na imagem acima para assistir ao vídeo: RAI Toolbox: Um framework de código aberto para construir IA responsável por Besmira Nushi, Mehrnoosh Sameki e Amit Sharma +> 🎥 Clique na imagem acima para assistir ao vídeo: RAI Toolbox: Um framework open-source para construção de IA responsável por Besmira Nushi, Mehrnoosh Sameki e Amit Sharma -Além disso, leia: +Além disso, leia: -- Centro de recursos de IA responsável da Microsoft: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) +- Centro de recursos RAI da Microsoft: [Recursos de IA Responsável – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) -- Grupo de pesquisa FATE da Microsoft: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/) +- Grupo de pesquisa FATE da Microsoft: [FATE: Justiça, Responsabilidade, Transparência e Ética em IA - Microsoft Research](https://www.microsoft.com/research/theme/fate/) -RAI Toolbox: +RAI Toolbox: - [Repositório GitHub do Responsible AI Toolbox](https://github.com/microsoft/responsible-ai-toolbox) -Leia sobre as ferramentas do Azure Machine Learning para garantir equidade: +Saiba mais sobre as ferramentas do Azure Machine Learning para garantir justiça: -- [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) ## Tarefa -[Explore o RAI Toolbox](assignment.md) +[Explore a RAI Toolbox](assignment.md) --- -**Aviso Legal**: -Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file + +**Aviso Legal**: +Este documento foi traduzido usando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos pela precisão, por favor, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se tradução profissional humana. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. + \ No newline at end of file diff --git a/translations/pt-BR/2-Regression/1-Tools/README.md b/translations/pt-BR/2-Regression/1-Tools/README.md index 1c1811d63..b3147fe87 100644 --- a/translations/pt-BR/2-Regression/1-Tools/README.md +++ b/translations/pt-BR/2-Regression/1-Tools/README.md @@ -1,70 +1,70 @@ -# Introdução ao Python e Scikit-learn para modelos de regressão +# Comece com Python e Scikit-learn para modelos de regressão -![Resumo de regressões em um sketchnote](../../../../sketchnotes/ml-regression.png) +![Resumo de regressões em um sketchnote](../../../../translated_images/pt-BR/ml-regression.4e4f70e3b3ed446e.webp) > Sketchnote por [Tomomi Imura](https://www.twitter.com/girlie_mac) -## [Quiz pré-aula](https://ff-quizzes.netlify.app/en/ml/) +## [Questionário pré-aula](https://ff-quizzes.netlify.app/en/ml/) > ### [Esta lição está disponível em R!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html) ## Introdução -Nestas quatro lições, você descobrirá como construir modelos de regressão. Vamos discutir para que eles servem em breve. Mas antes de começar, certifique-se de ter as ferramentas certas para iniciar o processo! +Nessas quatro aulas, você irá descobrir como construir modelos de regressão. Em breve discutiremos para que eles servem. Mas antes de fazer qualquer coisa, certifique-se de ter as ferramentas certas para iniciar o processo! -Nesta lição, você aprenderá a: +Nesta aula, você vai aprender a: -- Configurar seu computador para tarefas locais de aprendizado de máquina. -- Trabalhar com notebooks Jupyter. -- Utilizar Scikit-learn, incluindo sua instalação. +- Configurar seu computador para tarefas locais de machine learning. +- Trabalhar com Jupyter Notebooks. +- Usar Scikit-learn, incluindo a instalação. - Explorar regressão linear com um exercício prático. ## Instalações e configurações -[![ML para iniciantes - Configure suas ferramentas para criar modelos de aprendizado de máquina](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML para iniciantes - Configure suas ferramentas para criar modelos de aprendizado de máquina") +[![ML para iniciantes - Prepare suas ferramentas para construir modelos de Machine Learning](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML para iniciantes - Prepare suas ferramentas para construir modelos de Machine Learning") -> 🎥 Clique na imagem acima para um vídeo curto sobre como configurar seu computador para ML. +> 🎥 Clique na imagem acima para um vídeo curto explicando como configurar seu computador para ML. -1. **Instale o Python**. Certifique-se de que o [Python](https://www.python.org/downloads/) está instalado em seu computador. Você usará Python para muitas tarefas de ciência de dados e aprendizado de máquina. A maioria dos sistemas de computador já inclui uma instalação do Python. Há também [Pacotes de Codificação Python](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) úteis disponíveis para facilitar a configuração para alguns usuários. +1. **Instale o Python**. Garanta que o [Python](https://www.python.org/downloads/) esteja instalado no seu computador. Você usará Python para muitas tarefas de ciência de dados e machine learning. A maioria dos sistemas já inclui uma instalação do Python. Também existem úteis [Pacotes de Codificação em Python](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) disponíveis para facilitar a configuração para alguns usuários. - Algumas utilizações do Python, no entanto, exigem uma versão específica do software, enquanto outras requerem uma versão diferente. Por essa razão, é útil trabalhar dentro de um [ambiente virtual](https://docs.python.org/3/library/venv.html). + Alguns usos do Python, no entanto, requerem uma versão do software, enquanto outros requerem uma versão diferente. Por isso, é útil trabalhar dentro de um [ambiente virtual](https://docs.python.org/3/library/venv.html). -2. **Instale o Visual Studio Code**. Certifique-se de que o Visual Studio Code está instalado em seu computador. Siga estas instruções para [instalar o Visual Studio Code](https://code.visualstudio.com/) para a instalação básica. Você usará Python no Visual Studio Code neste curso, então pode ser útil revisar como [configurar o Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) para desenvolvimento em Python. +2. **Instale o Visual Studio Code**. Certifique-se de que o Visual Studio Code está instalado no seu computador. Siga estas instruções para [instalar o Visual Studio Code](https://code.visualstudio.com/) na instalação básica. Você vai usar Python no Visual Studio Code neste curso, então pode querer se familiarizar com como [configurar o Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) para desenvolvimento em Python. - > Familiarize-se com Python trabalhando nesta coleção de [módulos de aprendizado](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) - > - > [![Configurar Python com Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Configurar Python com Visual Studio Code") - > - > 🎥 Clique na imagem acima para um vídeo: usando Python no VS Code. +> Fique confortável com Python passando por esta coleção de [módulos Learn](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) +> +> [![Configuração do Python com Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Configuração do Python com Visual Studio Code") +> +> 🎥 Clique na imagem acima para um vídeo: usando Python dentro do VS Code. -3. **Instale o Scikit-learn**, seguindo [estas instruções](https://scikit-learn.org/stable/install.html). Como você precisa garantir que está usando Python 3, é recomendado que utilize um ambiente virtual. Note que, se estiver instalando esta biblioteca em um Mac M1, há instruções especiais na página vinculada acima. +3. **Instale o Scikit-learn**, seguindo [estas instruções](https://scikit-learn.org/stable/install.html). Como é necessário garantir o uso do Python 3, é recomendado usar um ambiente virtual. Note que, se você está instalando essa biblioteca em um Mac M1, há instruções especiais na página mencionada acima. -4. **Instale o Jupyter Notebook**. Você precisará [instalar o pacote Jupyter](https://pypi.org/project/jupyter/). +1. **Instale o Jupyter Notebook**. Você precisará [instalar o pacote Jupyter](https://pypi.org/project/jupyter/). -## Seu ambiente de autoria de ML +## Seu ambiente para desenvolvimento de ML -Você usará **notebooks** para desenvolver seu código Python e criar modelos de aprendizado de máquina. Este tipo de arquivo é uma ferramenta comum para cientistas de dados e pode ser identificado por seu sufixo ou extensão `.ipynb`. +Você vai usar **notebooks** para desenvolver seu código Python e criar modelos de machine learning. Esse tipo de arquivo é uma ferramenta comum para cientistas de dados, e eles podem ser identificados pela sua extensão `.ipynb`. -Notebooks são um ambiente interativo que permite ao desenvolvedor tanto codificar quanto adicionar notas e escrever documentação em torno do código, o que é bastante útil para projetos experimentais ou orientados à pesquisa. +Notebooks são um ambiente interativo que permite ao desenvolvedor tanto codificar quanto adicionar notas e escrever documentações ao redor do código, o que é bastante útil para projetos experimentais ou orientados à pesquisa. -[![ML para iniciantes - Configure Jupyter Notebooks para começar a construir modelos de regressão](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML para iniciantes - Configure Jupyter Notebooks para começar a construir modelos de regressão") +[![ML para iniciantes - Configure Jupyter Notebooks para iniciar a construção de modelos de regressão](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML para iniciantes - Configure Jupyter Notebooks para iniciar a construção de modelos de regressão") -> 🎥 Clique na imagem acima para um vídeo curto sobre este exercício. +> 🎥 Clique na imagem acima para um vídeo curto explicando este exercício. -### Exercício - Trabalhando com um notebook +### Exercício - trabalhe com um notebook Nesta pasta, você encontrará o arquivo _notebook.ipynb_. 1. Abra _notebook.ipynb_ no Visual Studio Code. - Um servidor Jupyter será iniciado com Python 3+. Você encontrará áreas do notebook que podem ser `executadas`, pedaços de código. Você pode executar um bloco de código selecionando o ícone que parece um botão de reprodução. + Um servidor Jupyter será iniciado com Python 3+. Você encontrará áreas do notebook que podem ser `executadas` — partes de código. Você pode executar um bloco de código selecionando o ícone que parece um botão de play. -2. Selecione o ícone `md` e adicione um pouco de markdown, com o seguinte texto **# Bem-vindo ao seu notebook**. +1. Selecione o ícone `md` e adicione um pouco de markdown, e o texto seguinte **# Bem-vindo ao seu notebook**. Em seguida, adicione algum código Python. -3. Digite **print('hello notebook')** no bloco de código. -4. Selecione a seta para executar o código. +1. Digite **print('hello notebook')** no bloco de código. +1. Selecione a seta para executar o código. Você deverá ver a declaração impressa: @@ -72,47 +72,48 @@ Nesta pasta, você encontrará o arquivo _notebook.ipynb_. hello notebook ``` -![VS Code com um notebook aberto](../../../../2-Regression/1-Tools/images/notebook.jpg) +![VS Code com notebook aberto](../../../../translated_images/pt-BR/notebook.4a3ee31f396b8832.webp) Você pode intercalar seu código com comentários para auto-documentar o notebook. -✅ Pense por um momento como o ambiente de trabalho de um desenvolvedor web é diferente do de um cientista de dados. +✅ Pense por um minuto em como é diferente o ambiente de trabalho de um desenvolvedor web versus o de um cientista de dados. -## Começando com Scikit-learn +## Configurando e usando Scikit-learn -Agora que o Python está configurado em seu ambiente local e você está confortável com notebooks Jupyter, vamos nos familiarizar com o Scikit-learn (pronuncia-se `sci` como em `science`). O Scikit-learn fornece uma [API extensa](https://scikit-learn.org/stable/modules/classes.html#api-ref) para ajudá-lo a realizar tarefas de ML. +Agora que o Python está configurado no seu ambiente local, e você está confortável com Jupyter Notebooks, vamos ficar igualmente à vontade com o Scikit-learn (pronuncia-se `sci` como em `science`). O Scikit-learn oferece uma [API extensa](https://scikit-learn.org/stable/modules/classes.html#api-ref) para ajudar você a realizar tarefas de ML. -De acordo com seu [site](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn é uma biblioteca de aprendizado de máquina de código aberto que suporta aprendizado supervisionado e não supervisionado. Também fornece várias ferramentas para ajuste de modelos, pré-processamento de dados, seleção e avaliação de modelos, e muitas outras utilidades." +Segundo o [site oficial](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn é uma biblioteca de machine learning de código aberto que suporta aprendizado supervisionado e não supervisionado. Também fornece várias ferramentas para ajuste de modelos, pré-processamento de dados, seleção e avaliação de modelos, além de muitas outras utilidades." -Neste curso, você usará Scikit-learn e outras ferramentas para construir modelos de aprendizado de máquina para realizar o que chamamos de tarefas de 'aprendizado de máquina tradicional'. Evitamos deliberadamente redes neurais e aprendizado profundo, pois eles são melhor abordados em nosso futuro currículo 'AI para Iniciantes'. +Neste curso, você usará o Scikit-learn e outras ferramentas para construir modelos de machine learning para realizar o que chamamos de tarefas de 'machine learning tradicional'. Deliberadamente evitamos redes neurais e deep learning, pois esses temas são melhor abordados em nosso futuro currículo 'IA para iniciantes'. -O Scikit-learn torna simples construir modelos e avaliá-los para uso. Ele é focado principalmente em usar dados numéricos e contém vários conjuntos de dados prontos para uso como ferramentas de aprendizado. Também inclui modelos pré-construídos para os alunos experimentarem. Vamos explorar o processo de carregar dados pré-empacotados e usar um estimador para criar o primeiro modelo de ML com Scikit-learn usando alguns dados básicos. +O Scikit-learn facilita a construção e avaliação de modelos para uso. Ele é focado principalmente em dados numéricos e contém diversos conjuntos de dados prontos para usar como ferramentas de aprendizado. Inclui também modelos pré-construídos para os estudantes experimentarem. Vamos explorar o processo de carregar dados predefinidos e usar um estimador embutido — o primeiro modelo de ML com Scikit-learn — com dados básicos. -## Exercício - Seu primeiro notebook com Scikit-learn +## Exercício - seu primeiro notebook Scikit-learn > Este tutorial foi inspirado pelo [exemplo de regressão linear](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) no site do Scikit-learn. -[![ML para iniciantes - Seu primeiro projeto de regressão linear em Python](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "ML para iniciantes - Seu primeiro projeto de regressão linear em Python") -> 🎥 Clique na imagem acima para um vídeo curto sobre este exercício. +[![ML para iniciantes - Seu Primeiro Projeto de Regressão Linear em Python](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "ML para iniciantes - Seu Primeiro Projeto de Regressão Linear em Python") -No arquivo _notebook.ipynb_ associado a esta lição, limpe todas as células pressionando o ícone de 'lixeira'. +> 🎥 Clique na imagem acima para um vídeo curto explicando este exercício. -Nesta seção, você trabalhará com um pequeno conjunto de dados sobre diabetes que está embutido no Scikit-learn para fins de aprendizado. Imagine que você deseja testar um tratamento para pacientes diabéticos. Modelos de aprendizado de máquina podem ajudá-lo a determinar quais pacientes responderiam melhor ao tratamento, com base em combinações de variáveis. Mesmo um modelo de regressão muito básico, quando visualizado, pode mostrar informações sobre variáveis que ajudariam a organizar seus ensaios clínicos teóricos. +No arquivo _notebook.ipynb_ associado a esta aula, limpe todas as células pressionando o ícone da 'lixeira'. -✅ Existem muitos tipos de métodos de regressão, e qual você escolhe depende da resposta que está procurando. Se você quiser prever a altura provável de uma pessoa de uma determinada idade, usaria regressão linear, pois está buscando um **valor numérico**. Se estiver interessado em descobrir se um tipo de culinária deve ser considerado vegano ou não, estará buscando uma **atribuição de categoria**, então usaria regressão logística. Você aprenderá mais sobre regressão logística mais tarde. Pense um pouco sobre algumas perguntas que você pode fazer aos dados e qual desses métodos seria mais apropriado. +Nesta seção, você trabalhará com um pequeno conjunto de dados sobre diabetes, embutido no Scikit-learn para fins de aprendizado. Imagine que você queira testar um tratamento para pacientes diabéticos. Modelos de Machine Learning podem ajudar a determinar quais pacientes responderiam melhor ao tratamento, com base em combinações de variáveis. Mesmo um modelo de regressão bastante básico, quando visualizado, pode mostrar informações sobre variáveis que ajudariam a organizar seus supostos ensaios clínicos. -Vamos começar esta tarefa. +✅ Existem muitos tipos de métodos de regressão, e qual você escolhe depende da resposta que procura. Se quiser prever a altura provável de uma pessoa de determinada idade, usará regressão linear, já que está buscando um **valor numérico**. Se estiver interessado em descobrir se um tipo de comida deve ser considerada vegana ou não, estará procurando uma **atribuição de categoria**, então usaria regressão logística. Você aprenderá mais sobre regressão logística mais adiante. Pense um pouco sobre algumas perguntas que você pode fazer aos dados e qual desses métodos seria mais apropriado. + +Vamos começar essa tarefa. ### Importar bibliotecas -Para esta tarefa, importaremos algumas bibliotecas: +Para esta tarefa, vamos importar algumas bibliotecas: -- **matplotlib**. É uma ferramenta útil para [criação de gráficos](https://matplotlib.org/) e a usaremos para criar um gráfico de linha. -- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) é uma biblioteca útil para lidar com dados numéricos em Python. +- **matplotlib**. É uma útil [ferramenta de gráficos](https://matplotlib.org/) e vamos usá-la para criar um gráfico de linha. +- **numpy**. O [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) é uma biblioteca útil para manipular dados numéricos em Python. - **sklearn**. Esta é a biblioteca [Scikit-learn](https://scikit-learn.org/stable/user_guide.html). -Importe algumas bibliotecas para ajudar em suas tarefas. +Importe algumas bibliotecas para ajudar nas suas tarefas. 1. Adicione as importações digitando o seguinte código: @@ -122,26 +123,26 @@ Importe algumas bibliotecas para ajudar em suas tarefas. from sklearn import datasets, linear_model, model_selection ``` - Acima, você está importando `matplotlib`, `numpy` e está importando `datasets`, `linear_model` e `model_selection` de `sklearn`. `model_selection` é usado para dividir dados em conjuntos de treinamento e teste. + Acima você está importando `matplotlib`, `numpy` e importando `datasets`, `linear_model` e `model_selection` do `sklearn`. `model_selection` é usado para dividir dados em conjuntos de treino e teste. ### O conjunto de dados de diabetes -O [conjunto de dados de diabetes](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) embutido inclui 442 amostras de dados sobre diabetes, com 10 variáveis de características, algumas das quais incluem: +O [conjunto de dados diabetes](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) incluído possui 442 amostras relacionadas ao diabetes, com 10 variáveis características, algumas das quais incluem: - age: idade em anos - bmi: índice de massa corporal - bp: pressão arterial média -- s1 tc: células T (um tipo de glóbulo branco) +- s1 tc: Células T (tipo de glóbulos brancos) -✅ Este conjunto de dados inclui o conceito de 'sexo' como uma variável de característica importante para pesquisas sobre diabetes. Muitos conjuntos de dados médicos incluem este tipo de classificação binária. Pense um pouco sobre como categorizações como esta podem excluir certas partes da população de tratamentos. +✅ Este conjunto de dados inclui o conceito de 'sexo' como uma variável característica importante para pesquisas sobre diabetes. Muitos conjuntos médicos incluem esse tipo de classificação binária. Pense um pouco sobre como categorias como essa podem excluir certas partes da população de tratamentos. Agora, carregue os dados X e y. -> 🎓 Lembre-se, este é aprendizado supervisionado, e precisamos de um 'y' alvo nomeado. +> 🎓 Lembre-se, este é aprendizado supervisionado, e precisamos de um alvo chamado 'y'. -Em uma nova célula de código, carregue o conjunto de dados de diabetes chamando `load_diabetes()`. O parâmetro `return_X_y=True` indica que `X` será uma matriz de dados e `y` será o alvo da regressão. +Em uma nova célula de código, carregue o conjunto de dados diabetes chamando `load_diabetes()`. O parâmetro `return_X_y=True` indica que `X` será uma matriz de dados, e `y` será o alvo da regressão. -1. Adicione alguns comandos de impressão para mostrar a forma da matriz de dados e seu primeiro elemento: +1. Adicione alguns comandos print para mostrar a forma da matriz de dados e seu primeiro elemento: ```python X, y = datasets.load_diabetes(return_X_y=True) @@ -149,7 +150,7 @@ Em uma nova célula de código, carregue o conjunto de dados de diabetes chamand print(X[0]) ``` - O que você está recebendo como resposta é uma tupla. O que você está fazendo é atribuir os dois primeiros valores da tupla a `X` e `y`, respectivamente. Saiba mais [sobre tuplas](https://wikipedia.org/wiki/Tuple). + O que você está recebendo como resposta é uma tupla. O que você está fazendo é atribuir os dois primeiros valores da tupla para `X` e `y` respectivamente. Saiba mais [sobre tuplas](https://wikipedia.org/wiki/Tuple). Você pode ver que esses dados têm 442 itens organizados em arrays de 10 elementos: @@ -159,39 +160,39 @@ Em uma nova célula de código, carregue o conjunto de dados de diabetes chamand -0.04340085 -0.00259226 0.01990842 -0.01764613] ``` - ✅ Pense um pouco sobre a relação entre os dados e o alvo da regressão. A regressão linear prevê relações entre a característica X e a variável alvo y. Você consegue encontrar o [alvo](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) para o conjunto de dados de diabetes na documentação? O que este conjunto de dados está demonstrando, dado o alvo? + ✅ Pense um pouco sobre a relação entre os dados e o alvo da regressão. A regressão linear prevê relações entre a característica X e a variável alvo y. Você consegue encontrar o [alvo](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) no conjunto diabetes na documentação? O que esse conjunto demonstra, dado esse alvo? -2. Em seguida, selecione uma parte deste conjunto de dados para plotar, escolhendo a 3ª coluna do conjunto de dados. Você pode fazer isso usando o operador `:` para selecionar todas as linhas e, em seguida, selecionando a 3ª coluna usando o índice (2). Você também pode remodelar os dados para serem um array 2D - conforme necessário para plotagem - usando `reshape(n_rows, n_columns)`. Se um dos parâmetros for -1, a dimensão correspondente será calculada automaticamente. +2. Em seguida, selecione uma parte desse conjunto para plotar, escolhendo a 3ª coluna do conjunto. Você pode usar o operador `:` para selecionar todas as linhas, e então selecione a terceira coluna pelo índice (2). Você também pode remodelar os dados para um array 2D — conforme exigido para plotagem — usando `reshape(n_linhas, n_colunas)`. Se um dos parâmetros for -1, a dimensão correspondente será calculada automaticamente. ```python X = X[:, 2] X = X.reshape((-1,1)) ``` - ✅ A qualquer momento, imprima os dados para verificar sua forma. + ✅ A qualquer momento, imprima os dados para checar sua forma. -3. Agora que você tem os dados prontos para serem plotados, pode verificar se uma máquina pode ajudar a determinar uma divisão lógica entre os números neste conjunto de dados. Para fazer isso, você precisa dividir tanto os dados (X) quanto o alvo (y) em conjuntos de teste e treinamento. O Scikit-learn tem uma maneira simples de fazer isso; você pode dividir seus dados de teste em um ponto específico. +3. Agora que você tem os dados prontos para plotar, veja se uma máquina pode ajudar a determinar uma divisão lógica entre os números deste conjunto. Para isso, você precisa dividir tanto os dados (X) quanto o alvo (y) em conjuntos de teste e treino. O Scikit-learn tem uma forma simples de fazer isso; você pode dividir seus dados de teste em um ponto dado. ```python X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33) ``` -4. Agora você está pronto para treinar seu modelo! Carregue o modelo de regressão linear e treine-o com seus conjuntos de treinamento X e y usando `model.fit()`: +4. Agora você está pronto para treinar seu modelo! Carregue o modelo de regressão linear e treine-o com seus conjuntos X e y de treino usando `model.fit()`: ```python model = linear_model.LinearRegression() model.fit(X_train, y_train) ``` - ✅ `model.fit()` é uma função que você verá em muitas bibliotecas de ML, como TensorFlow. + ✅ `model.fit()` é uma função que você verá em muitas bibliotecas de ML como TensorFlow -5. Em seguida, crie uma previsão usando os dados de teste, utilizando a função `predict()`. Isso será usado para desenhar a linha entre os grupos de dados. +5. Depois, crie uma predição usando os dados de teste, usando a função `predict()`. Isso será usado para desenhar uma linha entre os grupos de dados. ```python y_pred = model.predict(X_test) ``` -6. Agora é hora de mostrar os dados em um gráfico. O Matplotlib é uma ferramenta muito útil para esta tarefa. Crie um gráfico de dispersão de todos os dados de teste X e y e use a previsão para desenhar uma linha no lugar mais apropriado, entre os agrupamentos de dados do modelo. +6. Agora é hora de mostrar os dados em um gráfico. Matplotlib é uma ferramenta muito útil para essa tarefa. Crie um gráfico de dispersão de todos os dados X e y do teste, e use a predição para desenhar uma linha no lugar mais apropriado, entre os agrupamentos de dados do modelo. ```python plt.scatter(X_test, y_test, color='black') @@ -202,23 +203,24 @@ Em uma nova célula de código, carregue o conjunto de dados de diabetes chamand plt.show() ``` - ![um gráfico de dispersão mostrando pontos de dados sobre diabetes](../../../../2-Regression/1-Tools/images/scatterplot.png) -✅ Pense um pouco sobre o que está acontecendo aqui. Uma linha reta está passando por muitos pequenos pontos de dados, mas o que exatamente ela está fazendo? Você consegue perceber como essa linha pode ser usada para prever onde um novo ponto de dados, ainda não visto, deve se encaixar em relação ao eixo y do gráfico? Tente colocar em palavras a utilidade prática desse modelo. + ![um gráfico de dispersão mostrando pontos de dados sobre diabetes](../../../../translated_images/pt-BR/scatterplot.ad8b356bcbb33be6.webp) + + + ✅ Pense um pouco sobre o que está acontecendo aqui. Uma linha reta está passando por muitos pequenos pontos de dados, mas o que exatamente ela está fazendo? Você consegue ver como deveria poder usar essa linha para prever onde um novo ponto de dados, ainda não visto, deve encaixar em relação ao eixo y do gráfico? Tente colocar em palavras a utilidade prática desse modelo. Parabéns, você construiu seu primeiro modelo de regressão linear, criou uma previsão com ele e a exibiu em um gráfico! --- ## 🚀Desafio -Plote uma variável diferente deste conjunto de dados. Dica: edite esta linha: `X = X[:,2]`. Dado o alvo deste conjunto de dados, o que você consegue descobrir sobre a progressão do diabetes como uma doença? - +Plote uma variável diferente desse conjunto de dados. Dica: edite esta linha: `X = X[:,2]`. Considerando o alvo deste conjunto de dados, o que você consegue descobrir sobre a progressão do diabetes como doença? ## [Quiz pós-aula](https://ff-quizzes.netlify.app/en/ml/) -## Revisão e Autoestudo +## Revisão & Autoestudo -Neste tutorial, você trabalhou com regressão linear simples, em vez de regressão univariada ou múltipla. Leia um pouco sobre as diferenças entre esses métodos ou assista a [este vídeo](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef). +Neste tutorial, você trabalhou com regressão linear simples, ao invés de regressão linear univariada ou múltipla. Leia um pouco sobre as diferenças entre esses métodos, ou dê uma olhada neste [vídeo](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) -Leia mais sobre o conceito de regressão e pense sobre quais tipos de perguntas podem ser respondidas por essa técnica. Faça este [tutorial](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) para aprofundar seu entendimento. +Leia mais sobre o conceito de regressão e pense sobre que tipos de perguntas podem ser respondidas por essa técnica. Faça este [tutorial](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) para aprofundar sua compreensão. ## Tarefa @@ -226,5 +228,7 @@ Leia mais sobre o conceito de regressão e pense sobre quais tipos de perguntas --- -**Aviso Legal**: -Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file + +**Aviso Legal**: +Este documento foi traduzido usando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos pela precisão, por favor, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se tradução profissional humana. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. + \ No newline at end of file diff --git a/translations/pt-BR/2-Regression/2-Data/README.md b/translations/pt-BR/2-Regression/2-Data/README.md index 698becffb..94ed0d00c 100644 --- a/translations/pt-BR/2-Regression/2-Data/README.md +++ b/translations/pt-BR/2-Regression/2-Data/README.md @@ -1,6 +1,6 @@ -# Construir um modelo de regressão usando Scikit-learn: preparar e visualizar dados +# Construa um modelo de regressão usando Scikit-learn: preparar e visualizar dados -![Infográfico de visualização de dados](../../../../2-Regression/2-Data/images/data-visualization.png) +![Infográfico de visualização de dados](../../../../translated_images/pt-BR/data-visualization.54e56dded7c1a804.webp) Infográfico por [Dasani Madipalli](https://twitter.com/dasani_decoded) @@ -10,53 +10,53 @@ Infográfico por [Dasani Madipalli](https://twitter.com/dasani_decoded) ## Introdução -Agora que você está equipado com as ferramentas necessárias para começar a construir modelos de aprendizado de máquina com Scikit-learn, está pronto para começar a fazer perguntas sobre seus dados. Ao trabalhar com dados e aplicar soluções de aprendizado de máquina, é muito importante saber como fazer as perguntas certas para desbloquear adequadamente o potencial do seu conjunto de dados. +Agora que você está configurado com as ferramentas necessárias para começar a construir modelos de aprendizado de máquina com Scikit-learn, você está pronto para começar a fazer perguntas sobre os seus dados. Ao trabalhar com dados e aplicar soluções de ML, é muito importante entender como fazer a pergunta certa para desbloquear adequadamente os potenciais do seu conjunto de dados. Nesta lição, você aprenderá: -- Como preparar seus dados para a construção de modelos. -- Como usar o Matplotlib para visualização de dados. +- Como preparar seus dados para a construção do modelo. +- Como usar Matplotlib para visualização de dados. +- Como usar Seaborn para uma visualização de dados mais expressiva. -## Fazendo as perguntas certas sobre seus dados +## Fazendo a pergunta certa sobre seus dados -A pergunta que você precisa responder determinará o tipo de algoritmos de aprendizado de máquina que você usará. E a qualidade da resposta que você obtém dependerá muito da natureza dos seus dados. +A pergunta que você precisa responder determinará que tipo de algoritmos de ML você utilizará. E a qualidade da resposta que você obterá dependerá muito da natureza dos seus dados. -Dê uma olhada nos [dados](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) fornecidos para esta lição. Você pode abrir este arquivo .csv no VS Code. Uma rápida olhada mostra imediatamente que há lacunas e uma mistura de dados em formato de texto e numérico. Há também uma coluna estranha chamada 'Package', onde os dados são uma mistura de 'sacks', 'bins' e outros valores. Os dados, na verdade, estão um pouco bagunçados. +Dê uma olhada nos [dados](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) fornecidos para esta lição. Você pode abrir este arquivo .csv no VS Code. Uma rápida análise mostra imediatamente que há espaços em branco e uma mistura de dados numéricos e de texto. Há também uma coluna estranha chamada 'Package' onde os dados são uma mistura entre 'sacks', 'bins' e outros valores. Os dados, de fato, estão um pouco bagunçados. -[![ML para iniciantes - Como analisar e limpar um conjunto de dados](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML para iniciantes - Como analisar e limpar um conjunto de dados") +[![ML para iniciantes - Como Analisar e Limpar um Conjunto de Dados](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML for beginners - How to Analyze and Clean a Dataset") -> 🎥 Clique na imagem acima para assistir a um vídeo curto sobre como preparar os dados para esta lição. +> 🎥 Clique na imagem acima para um vídeo curto mostrando o processo de preparação dos dados para esta lição. -Na verdade, não é muito comum receber um conjunto de dados completamente pronto para criar um modelo de aprendizado de máquina. Nesta lição, você aprenderá como preparar um conjunto de dados bruto usando bibliotecas padrão do Python. Você também aprenderá várias técnicas para visualizar os dados. +De fato, não é muito comum receber um conjunto de dados completamente pronto para usar para criar um modelo de ML imediatamente. Nesta lição, você aprenderá como preparar um conjunto de dados bruto usando bibliotecas padrão do Python. Você também aprenderá várias técnicas para visualizar os dados. -## Estudo de caso: 'o mercado de abóboras' +## Estudo de caso: 'o mercado da abóbora' -Nesta pasta, você encontrará um arquivo .csv na pasta raiz `data` chamado [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv), que inclui 1757 linhas de dados sobre o mercado de abóboras, organizados em agrupamentos por cidade. Estes são dados brutos extraídos dos [Relatórios Padrão dos Mercados de Produtos Especiais](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) distribuídos pelo Departamento de Agricultura dos Estados Unidos. +Nesta pasta você encontrará um arquivo .csv na raiz da pasta `data` chamado [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) que inclui 1757 linhas de dados sobre o mercado de abóboras, organizados em grupos por cidade. Este é um dado bruto extraído dos [Relatórios Padrão dos Mercados de Terminal de Culturas Especiais](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) distribuídos pelo Departamento de Agricultura dos Estados Unidos. -### Preparando os dados +### Preparando dados -Esses dados estão em domínio público. Eles podem ser baixados em vários arquivos separados, por cidade, no site do USDA. Para evitar muitos arquivos separados, concatenamos todos os dados das cidades em uma única planilha, ou seja, já _preparamos_ um pouco os dados. Agora, vamos dar uma olhada mais de perto nos dados. +Estes dados estão no domínio público. Podem ser baixados em muitos arquivos separados, por cidade, no site do USDA. Para evitar muitos arquivos separados, concatenamos todos os dados das cidades em uma única planilha, assim já _preparamos_ um pouco os dados. A seguir, vamos dar uma olhada mais detalhada nos dados. -### Os dados das abóboras - primeiras conclusões +### Os dados da abóbora - primeiras conclusões -O que você percebe sobre esses dados? Você já viu que há uma mistura de textos, números, lacunas e valores estranhos que você precisa interpretar. +O que você percebe sobre esses dados? Você já viu que há uma mistura de textos, números, espaços em branco e valores estranhos que você precisa compreender. -Que pergunta você pode fazer sobre esses dados, usando uma técnica de regressão? Que tal "Prever o preço de uma abóbora à venda durante um determinado mês"? Olhando novamente para os dados, há algumas mudanças que você precisa fazer para criar a estrutura de dados necessária para essa tarefa. +Que pergunta você pode fazer sobre esses dados, usando uma técnica de Regressão? Que tal "Prever o preço de uma abóbora para venda durante um determinado mês". Olhando novamente para os dados, há algumas alterações que você precisa fazer para criar a estrutura de dados necessária para a tarefa. +## Exercício - analise os dados da abóbora -## Exercício - analisar os dados das abóboras +Vamos usar o [Pandas](https://pandas.pydata.org/), (o nome significa `Python Data Analysis`) uma ferramenta muito útil para modelar dados, para analisar e preparar estes dados de abóbora. -Vamos usar o [Pandas](https://pandas.pydata.org/) (o nome significa `Python Data Analysis`), uma ferramenta muito útil para modelar dados, para analisar e preparar esses dados de abóboras. +### Primeiro, verificar por datas faltantes -### Primeiro, verifique se há datas ausentes +Você precisará primeiro tomar providências para verificar se há datas faltando: -Você precisará primeiro tomar medidas para verificar se há datas ausentes: - -1. Converta as datas para o formato de mês (estas são datas dos EUA, então o formato é `MM/DD/YYYY`). -2. Extraia o mês para uma nova coluna. +1. Converter as datas para um formato mensal (essas são datas dos EUA, então o formato é `MM/DD/YYYY`). +2. Extrair o mês para uma nova coluna. Abra o arquivo _notebook.ipynb_ no Visual Studio Code e importe a planilha para um novo dataframe do Pandas. -1. Use a função `head()` para visualizar as cinco primeiras linhas. +1. Use a função `head()` para ver as cinco primeiras linhas. ```python import pandas as pd @@ -64,28 +64,28 @@ Abra o arquivo _notebook.ipynb_ no Visual Studio Code e importe a planilha para pumpkins.head() ``` - ✅ Qual função você usaria para visualizar as últimas cinco linhas? + ✅ Qual função você usaria para ver as últimas cinco linhas? -1. Verifique se há dados ausentes no dataframe atual: +1. Verifique se há dados faltantes no dataframe atual: ```python pumpkins.isnull().sum() ``` - Há dados ausentes, mas talvez isso não importe para a tarefa em questão. + Há dados faltantes, mas talvez isso não importe para a tarefa em questão. -1. Para tornar seu dataframe mais fácil de trabalhar, selecione apenas as colunas necessárias, usando a função `loc`, que extrai do dataframe original um grupo de linhas (passado como primeiro parâmetro) e colunas (passado como segundo parâmetro). A expressão `:` no caso abaixo significa "todas as linhas". +1. Para facilitar o trabalho com seu dataframe, selecione apenas as colunas necessárias, usando a função `loc` que extrai do dataframe original um grupo de linhas (passado como primeiro parâmetro) e colunas (passado como segundo parâmetro). A expressão `:` no caso abaixo significa "todas as linhas". ```python columns_to_select = ['Package', 'Low Price', 'High Price', 'Date'] pumpkins = pumpkins.loc[:, columns_to_select] ``` -### Segundo, determine o preço médio da abóbora +### Segundo, determinar o preço médio da abóbora Pense em como determinar o preço médio de uma abóbora em um determinado mês. Quais colunas você escolheria para essa tarefa? Dica: você precisará de 3 colunas. -Solução: calcule a média das colunas `Low Price` e `High Price` para preencher a nova coluna Price e converta a coluna Date para mostrar apenas o mês. Felizmente, de acordo com a verificação acima, não há dados ausentes para datas ou preços. +Solução: tire a média das colunas `Low Price` e `High Price` para preencher a nova coluna Price, e converta a coluna Date para mostrar somente o mês. Felizmente, conforme a verificação acima, não há dados faltantes para datas ou preços. 1. Para calcular a média, adicione o seguinte código: @@ -98,23 +98,23 @@ Solução: calcule a média das colunas `Low Price` e `High Price` para preenche ✅ Sinta-se à vontade para imprimir qualquer dado que desejar verificar usando `print(month)`. -2. Agora, copie seus dados convertidos para um novo dataframe do Pandas: +2. Agora, copie seus dados convertidos para um novo dataframe Pandas: ```python new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price}) ``` - Imprimir seu dataframe mostrará um conjunto de dados limpo e organizado, no qual você pode construir seu novo modelo de regressão. + Imprimir seu dataframe mostrará um conjunto de dados limpo e organizado sobre o qual você pode construir seu novo modelo de regressão. -### Mas espere! Há algo estranho aqui +### Mas espere! Tem algo estranho aqui -Se você olhar para a coluna `Package`, verá que as abóboras são vendidas em muitas configurações diferentes. Algumas são vendidas em medidas de '1 1/9 bushel', outras em '1/2 bushel', algumas por unidade, algumas por peso e outras em grandes caixas com larguras variadas. +Se você olhar para a coluna `Package`, as abóboras são vendidas em muitas configurações diferentes. Algumas são vendidas em medidas de '1 1/9 bushel' e outras em '1/2 bushel', algumas por abóbora, outras por libra, e algumas em caixas grandes com larguras variadas. -> Parece que é muito difícil pesar abóboras de forma consistente +> As abóboras parecem ser muito difíceis de pesar consistentemente -Ao investigar os dados originais, é interessante notar que qualquer coisa com `Unit of Sale` igual a 'EACH' ou 'PER BIN' também tem o tipo `Package` por polegada, por bin ou 'each'. Parece que é muito difícil pesar abóboras de forma consistente, então vamos filtrá-las selecionando apenas abóboras com a string 'bushel' na coluna `Package`. +Investigando os dados originais, é interessante notar que tudo que tem `Unit of Sale` igual a 'EACH' ou 'PER BIN' também tem o tipo `Package` por polegada, por caixa ou 'cada uma'. As abóboras parecem ser muito difíceis de se pesar consistentemente, então vamos filtrá-las selecionando apenas as abóboras com a string 'bushel' na coluna `Package`. -1. Adicione um filtro no início do arquivo, sob a importação inicial do .csv: +1. Adicione um filtro no topo do arquivo, logo abaixo da importação inicial do .csv: ```python pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)] @@ -122,11 +122,11 @@ Ao investigar os dados originais, é interessante notar que qualquer coisa com ` Se você imprimir os dados agora, verá que está obtendo apenas cerca de 415 linhas de dados contendo abóboras por bushel. -### Mas espere! Há mais uma coisa a fazer +### Mas espere! Ainda há mais uma coisa a fazer -Você percebeu que a quantidade de bushel varia por linha? Você precisa normalizar os preços para mostrar o preço por bushel, então faça alguns cálculos para padronizá-los. +Você percebeu que a quantidade de bushel varia por linha? Você precisa normalizar os preços para mostrar o preço por bushel, então faça alguns cálculos para padronizá-lo. -1. Adicione estas linhas após o bloco que cria o dataframe new_pumpkins: +1. Adicione estas linhas após o bloco que cria o novo dataframe new_pumpkins: ```python new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9) @@ -134,38 +134,38 @@ Você percebeu que a quantidade de bushel varia por linha? Você precisa normali new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2) ``` -✅ De acordo com [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), o peso de um bushel depende do tipo de produto, pois é uma medida de volume. "Um bushel de tomates, por exemplo, deve pesar 56 libras... Folhas e verduras ocupam mais espaço com menos peso, então um bushel de espinafre pesa apenas 20 libras." É tudo muito complicado! Vamos evitar fazer uma conversão de bushel para libra e, em vez disso, precificar por bushel. Todo esse estudo sobre bushels de abóboras, no entanto, mostra como é muito importante entender a natureza dos seus dados! +✅ Segundo [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), o peso de um bushel depende do tipo de produto, pois é uma medida de volume. "Um bushel de tomates, por exemplo, deve pesar 56 libras... As folhas e verduras ocupam mais espaço com menos peso, então um bushel de espinafre pesa apenas 20 libras." É tudo bem complicado! Vamos evitar a conversão de bushel para libra e, em vez disso, precificar por bushel. Todo esse estudo sobre bushels de abóboras, no entanto, mostra o quão importante é entender a natureza dos seus dados! -Agora, você pode analisar os preços por unidade com base na medida de bushel. Se você imprimir os dados mais uma vez, verá como eles estão padronizados. +Agora, você pode analisar o preço por unidade baseado na medida de bushel. Se você imprimir os dados mais uma vez, verá como está padronizado. -✅ Você percebeu que abóboras vendidas por meio bushel são muito caras? Consegue descobrir por quê? Dica: abóboras pequenas são muito mais caras do que grandes, provavelmente porque há muito mais delas por bushel, dado o espaço não utilizado ocupado por uma grande abóbora oca para torta. +✅ Você percebeu que abóboras vendidas por meio bushel são muito caras? Consegue descobrir por quê? Dica: abóboras pequenas são muito mais caras do que as grandes, provavelmente porque há muitas mais delas por bushel, dado o espaço não utilizado ocupado por uma grande abóbora oca para torta. -## Estratégias de visualização +## Estratégias de Visualização -Parte do papel do cientista de dados é demonstrar a qualidade e a natureza dos dados com os quais está trabalhando. Para isso, eles frequentemente criam visualizações interessantes, como gráficos, diagramas e tabelas, mostrando diferentes aspectos dos dados. Dessa forma, eles conseguem mostrar visualmente relações e lacunas que, de outra forma, seriam difíceis de identificar. +Parte do papel do cientista de dados é demonstrar a qualidade e a natureza dos dados com os quais está trabalhando. Para isso, frequentemente eles criam visualizações interessantes, ou gráficos, plots e tabelas, mostrando diferentes aspectos dos dados. Desta forma, eles conseguem mostrar visualmente relações e lacunas que de outro modo seriam difíceis de detectar. -[![ML para iniciantes - Como visualizar dados com Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML para iniciantes - Como visualizar dados com Matplotlib") +[![ML para iniciantes - Como Visualizar Dados com Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML for beginners - How to Visualize Data with Matplotlib") -> 🎥 Clique na imagem acima para assistir a um vídeo curto sobre como visualizar os dados para esta lição. +> 🎥 Clique na imagem acima para um vídeo curto mostrando como visualizar os dados para esta lição. -As visualizações também podem ajudar a determinar a técnica de aprendizado de máquina mais apropriada para os dados. Um gráfico de dispersão que parece seguir uma linha, por exemplo, indica que os dados são bons candidatos para um exercício de regressão linear. +Visualizações também podem ajudar a determinar a técnica de aprendizado de máquina mais apropriada para os dados. Um diagrama de dispersão que parece seguir uma linha, por exemplo, indica que os dados são um bom candidato para um exercício de regressão linear. Uma biblioteca de visualização de dados que funciona bem em notebooks Jupyter é o [Matplotlib](https://matplotlib.org/) (que você também viu na lição anterior). -> Obtenha mais experiência com visualização de dados nestes [tutoriais](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott). +> Ganhe mais experiência com visualização de dados nestes [tutoriais](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott). -## Exercício - experimente o Matplotlib +## Exercício - experimente com Matplotlib -Tente criar alguns gráficos básicos para exibir o novo dataframe que você acabou de criar. O que um gráfico de linha básico mostraria? +Tente criar alguns plots básicos para exibir o novo dataframe que você acabou de criar. O que um gráfico de linha básico mostraria? -1. Importe o Matplotlib no início do arquivo, sob a importação do Pandas: +1. Importe Matplotlib no topo do arquivo, abaixo da importação do Pandas: ```python import matplotlib.pyplot as plt ``` -1. Execute novamente todo o notebook para atualizar. -1. No final do notebook, adicione uma célula para plotar os dados como um boxplot: +1. Reexecute todo o notebook para atualizar. +1. Na parte inferior do notebook, adicione uma célula para plotar os dados como um boxplot: ```python price = new_pumpkins.Price @@ -174,38 +174,113 @@ Tente criar alguns gráficos básicos para exibir o novo dataframe que você aca plt.show() ``` - ![Um gráfico de dispersão mostrando a relação entre preço e mês](../../../../2-Regression/2-Data/images/scatterplot.png) + ![Um gráfico de dispersão mostrando a relação preço para mês](../../../../translated_images/pt-BR/scatterplot.b6868f44cbd2051c.webp) - Este gráfico é útil? Algo nele te surpreende? + Este é um gráfico útil? Algo nele te surpreende? - Não é particularmente útil, pois tudo o que faz é exibir seus dados como uma distribuição de pontos em um determinado mês. + Não é particularmente útil, pois tudo o que faz é mostrar seus dados como uma dispersão de pontos em um determinado mês. ### Torne-o útil -Para que os gráficos exibam dados úteis, geralmente é necessário agrupar os dados de alguma forma. Vamos tentar criar um gráfico onde o eixo y mostra os meses e os dados demonstram a distribuição. +Para que os gráficos mostrem dados úteis, normalmente você precisa agrupar os dados de alguma maneira. Vamos tentar criar um plot onde o eixo y mostra os meses e os dados demonstram a distribuição dos dados. -1. Adicione uma célula para criar um gráfico de barras agrupado: +1. Adicione uma célula para criar um gráfico de barras agrupadas: ```python new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') plt.ylabel("Pumpkin Price") ``` - ![Um gráfico de barras mostrando a relação entre preço e mês](../../../../2-Regression/2-Data/images/barchart.png) + ![Um gráfico de barras mostrando a relação preço para mês](../../../../translated_images/pt-BR/barchart.a833ea9194346d76.webp) + + Esta é uma visualização de dados mais útil! Parece indicar que o preço mais alto para as abóboras ocorre em setembro e outubro. Isso atende sua expectativa? Por quê ou por quê não? + +## Exercício - experimente com Seaborn + +O Matplotlib é poderoso, mas pode exigir muito código para produzir um gráfico polido. [Seaborn](https://seaborn.pydata.org/) é uma biblioteca construída _sobre_ o Matplotlib, projetada para visualização de dados estatísticos. Funciona diretamente com dataframes do Pandas, aplica estilos padrão atraentes e permite criar gráficos informativos com muito menos código. Porque o Seaborn retorna objetos do Matplotlib, você ainda pode usar tudo que já sabe sobre Matplotlib para ajustar o resultado. + +> Se você ainda não tem o Seaborn instalado, instale com `pip install seaborn`. + +1. Importe o Seaborn no topo do notebook, abaixo das outras importações. Ele é convencionalmente importado como `sns`: + + ```python + import seaborn as sns + ``` + +### Gráficos de dispersão para mostrar relações + +Uma grande parte da exploração de dados antes de construir um modelo é buscar _relações_ entre variáveis. Um [gráfico de dispersão](https://en.wikipedia.org/wiki/Scatter_plot) é uma das melhores ferramentas para isso: se os pontos parecerem seguir uma linha, as duas variáveis podem estar correlacionadas, o que é um bom indicativo de que um modelo de regressão linear poderia funcionar. + +1. Recrie o gráfico de dispersão preço para mês feito antes, desta vez usando o [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) do Seaborn (gráfico relacional), que trabalha diretamente com as colunas do seu dataframe: + + ```python + sns.relplot(x="Price", y="Month", data=new_pumpkins) + ``` + + ![Um gráfico de dispersão Seaborn mostrando a relação preço para mês](../../../../translated_images/pt-BR/relplot.a03837d8f0329cec.webp) + + Note como você passa os _nomes das colunas_ e o dataframe, e o Seaborn cuida dos rótulos dos eixos para você. + +2. Você pode mudar para um gráfico de linha passando `kind="line"`. O Seaborn desenha até um banda sombreada mostrando o intervalo de confiança em torno da linha: + + ```python + sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins) + ``` + + ![Um gráfico de linha Seaborn mostrando a relação preço para mês](../../../../translated_images/pt-BR/lineplot.f9034ba47b1e30ee.webp) + + Esses dados em particular são bastante ruidosos, então um gráfico de linha não é a escolha mais clara aqui — mas mostra como é fácil mudar o tipo de gráfico no Seaborn. + +### Gráficos de barras para mostrar distribuições + + +Anteriormente, você agrupou os dados manualmente para criar um gráfico de barras com Matplotlib. O [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) (gráfico categórico) do Seaborn pode fazer o agrupamento e a agregação para você. Por padrão, `kind="bar"` mostra a média de cada categoria junto com uma linha preta indicando o intervalo de confiança. + +1. Crie um gráfico de barras do preço médio por mês: + + ```python + sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar") + ``` + + ![Um gráfico de barras do Seaborn mostrando a distribuição dos preços por mês](../../../../translated_images/pt-BR/catplot.e73fc35fdf96242b.webp) + + Isso confirma o que você viu com Matplotlib — os preços atingem o pico por volta de setembro e outubro — mas o Seaborn também visualiza o quanto o preço _varia_ dentro de cada mês. + +### Mapas de calor para mostrar correlações + +Gráficos de dispersão comparam duas variáveis por vez. Quando você tem várias colunas numéricas, um [mapa de calor](https://en.wikipedia.org/wiki/Heat_map) permite visualizar a força da relação entre _todos_ os pares de colunas de uma vez. Essa é uma forma comum de identificar quais características são mais correlacionadas antes de escolher quais usar em um modelo (e o mesmo tipo de gráfico é usado depois para mostrar matrizes de confusão em classificação). + +1. Construa uma matriz de correlação com Pandas e depois desenhe-a com o [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html) do Seaborn. A opção `annot=True` imprime os valores de correlação em cada célula: + + ```python + correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr() + sns.heatmap(correlations, annot=True, cmap="coolwarm") + ``` + + ![Um mapa de calor do Seaborn mostrando correlações entre as colunas numéricas](../../../../translated_images/pt-BR/heatmap.bd98dce43b404c57.webp) + + Valores próximos de `1` (ou `-1`) significam que as colunas são fortemente correlacionadas _linearmente_. Note como “Preço Baixo” e “Preço Alto” são quase perfeitamente correlacionados. Já “Mês” mostra apenas uma correlação linear fraca com o preço — mesmo que o gráfico de barras acima tenha revelado um pico sazonal claro em setembro e outubro. Essa é uma lição importante: o coeficiente de correlação mede apenas relacionamentos _em linha reta_, então pode não detectar padrões sazonais ou outros padrões não lineares. ✅ Por que é útil olhar tanto para um mapa de calor *quanto* para gráficos como o gráfico de barras antes de decidir quais colunas usar? + +### Matplotlib ou Seaborn? + +Ambas as bibliotecas valem a pena conhecer: + +- **Matplotlib** dá controle detalhado sobre cada elemento de um gráfico e é a base sobre a qual quase todas as outras bibliotecas de plotagem Python são construídas. +- **Seaborn** fornece funções de nível mais alto e padrões atraentes para gráficos estatísticos, trabalha diretamente com dataframes e costuma ser mais rápido para análises exploratórias de dados. - Este é um gráfico de visualização de dados mais útil! Parece indicar que o preço mais alto das abóboras ocorre em setembro e outubro. Isso corresponde à sua expectativa? Por quê? +Um fluxo de trabalho comum é recorrer ao Seaborn para explorar seus dados rapidamente, depois descer para o Matplotlib quando precisar personalizar os detalhes. --- ## 🚀Desafio -Explore os diferentes tipos de visualização que o Matplotlib oferece. Quais tipos são mais apropriados para problemas de regressão? +Explore os diferentes tipos de visualização que Matplotlib e Seaborn oferecem. Quais tipos são mais apropriados para problemas de regressão? ## [Quiz pós-aula](https://ff-quizzes.netlify.app/en/ml/) -## Revisão e Autoestudo +## Revisão & Autoestudo -Dê uma olhada nas várias maneiras de visualizar dados. Faça uma lista das diferentes bibliotecas disponíveis e anote quais são melhores para determinados tipos de tarefas, por exemplo, visualizações 2D versus visualizações 3D. O que você descobre? +Analise as várias formas de visualizar dados. Faça uma lista das diversas bibliotecas disponíveis e anote quais são melhores para tipos específicos de tarefas, por exemplo, visualizações 2D vs. visualizações 3D. O que você descobre? ## Tarefa @@ -213,5 +288,7 @@ Dê uma olhada nas várias maneiras de visualizar dados. Faça uma lista das dif --- -**Aviso Legal**: -Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file + +**Aviso Legal**: +Este documento foi traduzido usando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos pela precisão, por favor, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se tradução profissional humana. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. + \ No newline at end of file diff --git a/translations/pt-BR/2-Regression/2-Data/solution/notebook.ipynb b/translations/pt-BR/2-Regression/2-Data/solution/notebook.ipynb index cadd6f6b8..e07ce2da9 100644 --- a/translations/pt-BR/2-Regression/2-Data/solution/notebook.ipynb +++ b/translations/pt-BR/2-Regression/2-Data/solution/notebook.ipynb @@ -3,7 +3,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "## Regressão Linear para Abóboras - Aula 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": [ + "### Gráficos de dispersão para mostrar relacionamentos\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 distribuições\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**Aviso Legal**: \nEste documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.\n" + "### Mapas de calor para mostrar correlações\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**Aviso Legal**:\nEste documento foi traduzido usando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos pela precisão, por favor, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se tradução profissional humana. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução.\n\n" ] } ], @@ -424,13 +487,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "95726f0b8283628d5356a4f8eb8b4b76", - "translation_date": "2025-08-29T23:11:00+00:00", - "source_file": "2-Regression/2-Data/solution/notebook.ipynb", - "language_code": "br" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/pt-BR/8-Reinforcement/1-QLearning/README.md b/translations/pt-BR/8-Reinforcement/1-QLearning/README.md index f322c90ca..8d6eac4bf 100644 --- a/translations/pt-BR/8-Reinforcement/1-QLearning/README.md +++ b/translations/pt-BR/8-Reinforcement/1-QLearning/README.md @@ -1,11 +1,11 @@ # Introdução ao Aprendizado por Reforço e Q-Learning -![Resumo do aprendizado por reforço em machine learning em um sketchnote](../../../../sketchnotes/ml-reinforcement.png) +![Resumo do reforço em aprendizado de máquina em um sketchnote](../../../../translated_images/pt-BR/ml-reinforcement.94024374d63348db.webp) > Sketchnote por [Tomomi Imura](https://www.twitter.com/girlie_mac) -O aprendizado por reforço envolve três conceitos importantes: o agente, alguns estados e um conjunto de ações por estado. Ao executar uma ação em um estado específico, o agente recebe uma recompensa. Imagine novamente o jogo de computador Super Mario. Você é o Mario, está em um nível do jogo, parado ao lado de um penhasco. Acima de você há uma moeda. Você, sendo o Mario, em um nível do jogo, em uma posição específica... esse é o seu estado. Mover um passo para a direita (uma ação) o levará para o penhasco, o que resultará em uma pontuação numérica baixa. No entanto, pressionar o botão de pular permitirá que você marque um ponto e continue vivo. Esse é um resultado positivo e deve lhe conceder uma pontuação numérica positiva. +O aprendizado por reforço envolve três conceitos importantes: o agente, alguns estados e um conjunto de ações por estado. Ao executar uma ação em um estado especificado, o agente recebe uma recompensa. Imagine novamente o jogo de computador Super Mario. Você é o Mario, está em um nível do jogo, parado ao lado de um penhasco. Acima de você há uma moeda. Você sendo o Mario, em um nível do jogo, em uma posição específica... esse é o seu estado. Mover um passo para a direita (uma ação) o fará cair do penhasco, e isso lhe daria uma pontuação numérica baixa. No entanto, apertar o botão de pular permitiria que você marcasse um ponto e continuasse vivo. Esse é um resultado positivo e isso deve recompensá-lo com uma pontuação numérica positiva. -Usando aprendizado por reforço e um simulador (o jogo), você pode aprender a jogar para maximizar a recompensa, que é permanecer vivo e marcar o maior número de pontos possível. +Usando o aprendizado por reforço e um simulador (o jogo), você pode aprender a jogar o jogo para maximizar a recompensa, que é permanecer vivo e marcar o máximo de pontos possível. [![Introdução ao Aprendizado por Reforço](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) @@ -15,33 +15,33 @@ Usando aprendizado por reforço e um simulador (o jogo), você pode aprender a j ## Pré-requisitos e Configuração -Nesta lição, experimentaremos com algum código em Python. Você deve ser capaz de executar o código do Jupyter Notebook desta lição, seja no seu computador ou em algum lugar na nuvem. +Nesta lição, experimentaremos alguns códigos em Python. Você deve ser capaz de executar o código do Jupyter Notebook desta lição, seja no seu computador ou em algum lugar na nuvem. Você pode abrir [o notebook da lição](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) e acompanhar esta lição para construir. -> **Nota:** Se você estiver abrindo este código na nuvem, também precisará buscar o arquivo [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), que é usado no código do notebook. Adicione-o ao mesmo diretório do notebook. +> **Nota:** Se você estiver abrindo este código na nuvem, também precisa obter o arquivo [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), que é usado no código do notebook. Adicione-o ao mesmo diretório do notebook. ## Introdução -Nesta lição, exploraremos o mundo de **[Pedro e o Lobo](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)**, inspirado por um conto musical de fadas de um compositor russo, [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev). Usaremos o **Aprendizado por Reforço** para permitir que Pedro explore seu ambiente, colete maçãs saborosas e evite encontrar o lobo. +Nesta lição, exploraremos o mundo de **[Pedro e o Lobo](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)**, inspirado em um conto musical de um compositor russo, [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev). Usaremos **Aprendizado por Reforço** para permitir que Pedro explore seu ambiente, colete maçãs saborosas e evite encontrar o lobo. -O **Aprendizado por Reforço** (RL) é uma técnica de aprendizado que nos permite aprender o comportamento ideal de um **agente** em algum **ambiente** realizando muitos experimentos. Um agente nesse ambiente deve ter algum **objetivo**, definido por uma **função de recompensa**. +**Aprendizado por Reforço** (RL) é uma técnica de aprendizado que nos permite aprender um comportamento ideal de um **agente** em algum **ambiente** realizando muitos experimentos. Um agente nesse ambiente deve ter algum **objetivo**, definido por uma **função de recompensa**. ## O ambiente -Para simplificar, vamos considerar o mundo de Pedro como um tabuleiro quadrado de tamanho `largura` x `altura`, como este: +Para simplificar, vamos considerar o mundo de Pedro como um tabuleiro quadrado de tamanho `width` x `height`, assim: -![Ambiente de Pedro](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![Ambiente de Pedro](../../../../translated_images/pt-BR/environment.40ba3cb66256c93f.webp) Cada célula neste tabuleiro pode ser: -* **chão**, onde Pedro e outras criaturas podem andar. -* **água**, onde obviamente você não pode andar. -* uma **árvore** ou **grama**, um lugar onde você pode descansar. +* **terra**, onde Pedro e outras criaturas podem andar. +* **água**, onde obviamente não se pode andar. +* uma **árvore** ou **grama**, lugar para descansar. * uma **maçã**, que representa algo que Pedro ficaria feliz em encontrar para se alimentar. * um **lobo**, que é perigoso e deve ser evitado. -Há um módulo Python separado, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), que contém o código para trabalhar com este ambiente. Como este código não é importante para entender nossos conceitos, importaremos o módulo e o usaremos para criar o tabuleiro de exemplo (bloco de código 1): +Há um módulo Python separado, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), que contém o código para trabalhar com esse ambiente. Como esse código não é importante para compreendermos os conceitos, importaremos o módulo e usaremos para criar o tabuleiro exemplo (bloco de código 1): ```python from rlboard import * @@ -52,30 +52,30 @@ m.randomize(seed=13) m.plot() ``` -Este código deve imprimir uma imagem do ambiente semelhante à mostrada acima. +Este código deve imprimir uma imagem do ambiente semelhante à acima. ## Ações e política -No nosso exemplo, o objetivo de Pedro seria encontrar uma maçã, enquanto evita o lobo e outros obstáculos. Para isso, ele pode essencialmente andar pelo tabuleiro até encontrar uma maçã. +No nosso exemplo, o objetivo de Pedro seria encontrar uma maçã, evitando o lobo e outros obstáculos. Para isso, ele pode basicamente andar por aí até encontrar uma maçã. -Portanto, em qualquer posição, ele pode escolher entre uma das seguintes ações: cima, baixo, esquerda e direita. +Portanto, em qualquer posição, ele pode escolher entre uma das seguintes ações: para cima, para baixo, para a esquerda e para a direita. -Definiremos essas ações como um dicionário e as mapearemos para pares de mudanças de coordenadas correspondentes. Por exemplo, mover para a direita (`R`) corresponderia ao par `(1,0)`. (bloco de código 2): +Definiremos essas ações como um dicionário, mapeando-as para pares correspondentes de mudanças nas coordenadas. Por exemplo, mover para a direita (`R`) corresponderia ao par `(1,0)`. (bloco de código 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()) } ``` -Resumindo, a estratégia e o objetivo deste cenário são os seguintes: +Para resumir, a estratégia e o objetivo deste cenário são os seguintes: -- **A estratégia** do nosso agente (Pedro) é definida por uma chamada **política**. Uma política é uma função que retorna a ação em qualquer estado dado. No nosso caso, o estado do problema é representado pelo tabuleiro, incluindo a posição atual do jogador. +- **A estratégia**, do nosso agente (Pedro) é definida por uma chamada **política**. Uma política é uma função que retorna a ação em qualquer estado dado. No nosso caso, o estado do problema é representado pelo tabuleiro, incluindo a posição atual do jogador. -- **O objetivo** do aprendizado por reforço é eventualmente aprender uma boa política que nos permita resolver o problema de forma eficiente. No entanto, como linha de base, vamos considerar a política mais simples chamada **caminhada aleatória**. +- **O objetivo**, do aprendizado por reforço é eventualmente aprender uma boa política que nos permita resolver o problema eficientemente. Entretanto, como referência, consideremos a política mais simples, chamada **random walk** (caminhada aleatória). ## Caminhada aleatória -Vamos primeiro resolver nosso problema implementando uma estratégia de caminhada aleatória. Com a caminhada aleatória, escolheremos aleatoriamente a próxima ação entre as ações permitidas, até alcançarmos a maçã (bloco de código 3). +Vamos primeiro resolver nosso problema implementando uma estratégia de caminhada aleatória. Com a caminhada aleatória, escolheremos aleatoriamente a próxima ação entre as ações permitidas, até alcançar a maçã (bloco de código 3). 1. Implemente a caminhada aleatória com o código abaixo: @@ -84,22 +84,22 @@ Vamos primeiro resolver nosso problema implementando uma estratégia de caminhad 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 etapas + # definir posição 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 # sucesso! if m.at() in [Board.Cell.wolf, Board.Cell.water]: - return -1 # eaten by wolf or drowned + return -1 # comido pelo lobo ou afogado 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) # fazer o movimento real break n+=1 @@ -108,7 +108,7 @@ Vamos primeiro resolver nosso problema implementando uma estratégia de caminhad A chamada para `walk` deve retornar o comprimento do caminho correspondente, que pode variar de uma execução para outra. -1. Execute o experimento de caminhada várias vezes (digamos, 100) e imprima as estatísticas resultantes (bloco de código 4): +1. Execute o experimento da caminhada várias vezes (digamos, 100), e imprima as estatísticas resultantes (bloco de código 4): ```python def print_statistics(policy): @@ -125,7 +125,7 @@ Vamos primeiro resolver nosso problema implementando uma estratégia de caminhad print_statistics(random_policy) ``` - Note que o comprimento médio de um caminho é em torno de 30-40 passos, o que é bastante, dado que a distância média até a maçã mais próxima é de cerca de 5-6 passos. + Note que o comprimento médio de um caminho fica em torno de 30-40 passos, o que é bastante, dado que a distância média até a maçã mais próxima é de cerca de 5-6 passos. Você também pode ver como é o movimento de Pedro durante a caminhada aleatória: @@ -135,7 +135,7 @@ Vamos primeiro resolver nosso problema implementando uma estratégia de caminhad Para tornar nossa política mais inteligente, precisamos entender quais movimentos são "melhores" que outros. Para isso, precisamos definir nosso objetivo. -O objetivo pode ser definido em termos de uma **função de recompensa**, que retornará algum valor de pontuação para cada estado. Quanto maior o número, melhor a função de recompensa. (bloco de código 5) +O objetivo pode ser definido em termos de uma **função de recompensa**, que retornará um valor de pontuação para cada estado. Quanto maior o número, melhor a função de recompensa. (bloco de código 5) ```python move_reward = -0.1 @@ -154,39 +154,115 @@ def reward(m,pos=None): return move_reward ``` -Uma coisa interessante sobre funções de recompensa é que, na maioria dos casos, *só recebemos uma recompensa substancial no final do jogo*. Isso significa que nosso algoritmo deve, de alguma forma, lembrar os "bons" passos que levaram a uma recompensa positiva no final e aumentar sua importância. Da mesma forma, todos os movimentos que levam a resultados ruins devem ser desencorajados. +Uma coisa interessante sobre funções de recompensa é que na maioria dos casos, *somos recompensados substancialmente apenas ao final do jogo*. Isso significa que nosso algoritmo deve de alguma forma lembrar dos passos "bons" que levam a uma recompensa positiva no final, e aumentar sua importância. Similarmente, todos os movimentos que levam a resultados ruins devem ser desencorajados. ## Q-Learning -O algoritmo que discutiremos aqui é chamado de **Q-Learning**. Neste algoritmo, a política é definida por uma função (ou uma estrutura de dados) chamada de **Q-Table**. Ela registra a "qualidade" de cada uma das ações em um determinado estado. +Um algoritmo que discutiremos aqui chama-se **Q-Learning**. Nesse algoritmo, a política é definida por uma função (ou uma estrutura de dados) chamada **Q-Table**. Ela registra a "qualidade" de cada ação em um estado dado. -É chamada de Q-Table porque muitas vezes é conveniente representá-la como uma tabela ou matriz multidimensional. Como nosso tabuleiro tem dimensões `largura` x `altura`, podemos representar a Q-Table usando um array numpy com forma `largura` x `altura` x `len(actions)`: (bloco de código 6) +Ela é chamada de Q-Table porque é conveniente representá-la como uma tabela ou matriz multidimensional. Como nosso tabuleiro tem dimensões `width` x `height`, podemos representar a Q-Table usando um array numpy com formato `width` x `height` x `len(actions)`: (bloco de código 6) ```python Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions) ``` -Observe que inicializamos todos os valores da Q-Table com um valor igual, no nosso caso - 0.25. Isso corresponde à política de "caminhada aleatória", porque todos os movimentos em cada estado são igualmente bons. Podemos passar a Q-Table para a função `plot` para visualizar a tabela no tabuleiro: `m.plot(Q)`. +Note que inicializamos todos os valores da Q-Table com um valor igual, no nosso caso - 0,25. Isso corresponde à política de "caminhada aleatória", porque todos os movimentos em cada estado são igualmente bons. Podemos passar a Q-Table para a função `plot` para visualizar a tabela no tabuleiro: `m.plot(Q)`. -![Ambiente de Pedro](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![Ambiente de Pedro](../../../../translated_images/pt-BR/env_init.04e8f26d2d60089e.webp) -No centro de cada célula há uma "seta" que indica a direção preferida de movimento. Como todas as direções são iguais, é exibido um ponto. +No centro de cada célula há uma "seta" que indica a direção preferida de movimento. Como todas as direções são iguais, um ponto é exibido. -Agora precisamos executar a simulação, explorar nosso ambiente e aprender uma melhor distribuição de valores na Q-Table, o que nos permitirá encontrar o caminho para a maçã muito mais rapidamente. +Agora precisamos executar a simulação, explorar nosso ambiente e aprender uma melhor distribuição dos valores da Q-Table, o que nos permitirá encontrar o caminho para a maçã muito mais rápido. ## Essência do Q-Learning: Equação de Bellman -Uma vez que começamos a nos mover, cada ação terá uma recompensa correspondente, ou seja, teoricamente podemos selecionar a próxima ação com base na maior recompensa imediata. No entanto, na maioria dos estados, o movimento não alcançará nosso objetivo de chegar à maçã, e assim não podemos decidir imediatamente qual direção é melhor. +Uma vez que começamos a nos mover, cada ação terá uma recompensa correspondente, ou seja, teoricamente podemos selecionar a próxima ação com base na recompensa imediata maior. Contudo, na maioria dos estados, o movimento não alcançará nosso objetivo de chegar à maçã, e portanto não podemos decidir imediatamente qual direção é melhor. -> Lembre-se de que não é o resultado imediato que importa, mas sim o resultado final, que obteremos no final da simulação. +> Lembre-se que não é o resultado imediato que importa, mas sim o resultado final, que obteremos ao final da simulação. -Para levar em conta essa recompensa atrasada, precisamos usar os princípios da **[programação dinâmica](https://en.wikipedia.org/wiki/Dynamic_programming)**, que nos permitem pensar sobre nosso problema de forma recursiva. +Para levar em conta essa recompensa retardada, precisamos usar os princípios da **[programação dinâmica](https://en.wikipedia.org/wiki/Dynamic_programming)**, que nos permitem pensar em nosso problema recursivamente. -Suponha que estamos agora no estado *s* e queremos nos mover para o próximo estado *s'*. Ao fazer isso, receberemos a recompensa imediata *r(s,a)*, definida pela função de recompensa, mais alguma recompensa futura. Se supusermos que nossa Q-Table reflete corretamente a "atratividade" de cada ação, então no estado *s'* escolheremos uma ação *a* que corresponda ao valor máximo de *Q(s',a')*. Assim, a melhor recompensa futura possível que poderíamos obter no estado *s* será definida como `max` +Suponha que estamos agora no estado *s*, e queremos mover para o próximo estado *s'*. Fazendo isso, receberemos a recompensa imediata *r(s,a)*, definida pela função de recompensa, além de alguma recompensa futura. Se supusermos que nossa Q-Table reflete corretamente a "atratividade" de cada ação, então no estado *s'* escolheremos uma ação *a* que corresponde ao valor máximo de *Q(s',a')*. Assim, a melhor recompensa futura possível que poderíamos obter no estado *s* será definida como `max`a'*Q(s',a')* (o máximo aqui é calculado sobre todas as ações possíveis *a'* no estado *s'*). + +Isso dá a **fórmula de Bellman** para calcular o valor da Q-Table no estado *s*, dada a ação *a*: + + + +Aqui γ é o chamado **fator de desconto** que determina em que medida você deve preferir a recompensa atual sobre a recompensa futura e vice-versa. + +## Algoritmo de Aprendizado + +Dada a equação acima, podemos agora escrever o pseudo-código para nosso algoritmo de aprendizado: + +* Inicialize a Q-Table Q com números iguais para todos os estados e ações +* Defina a taxa de aprendizado α ← 1 +* Repita a simulação várias vezes + 1. Comece em uma posição aleatória + 1. Repita + 1. Selecione uma ação *a* no estado *s* + 2. Execute a ação movendo para um novo estado *s'* + 3. Se encontrarmos condição de fim de jogo, ou a recompensa total for muito pequena - saia da simulação + 4. Calcule a recompensa *r* no novo estado + 5. Atualize a função Q segundo a equação de Bellman: *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ maxa'Q(s',a'))* + 6. *s* ← *s'* + 7. Atualize a recompensa total e diminua α. + +## Explorar vs. Explorar + +No algoritmo acima, não especificamos exatamente como devemos escolher uma ação no passo 2.1. Se escolhermos a ação aleatoriamente, exploraremos o ambiente aleatoriamente, e provavelmente morreremos com frequência, além de explorar áreas onde normalmente não iríamos. Uma abordagem alternativa seria **explorar** os valores da Q-Table que já conhecemos, escolhendo assim a melhor ação (com maior valor na Q-Table) no estado *s*. Isso, entretanto, evitará que exploremos outros estados, e provavelmente não encontraremos a solução ótima. + +Assim, a melhor abordagem é encontrar um equilíbrio entre exploração e exploração. Isso pode ser feito escolhendo a ação no estado *s* com probabilidades proporcionais aos valores na Q-Table. No começo, quando os valores da Q-Table são todos iguais, isso corresponderia a uma seleção aleatória, mas à medida que aprendemos mais sobre nosso ambiente, teremos mais chances de seguir a rota ótima, permitindo que o agente escolha o caminho não explorado de vez em quando. + +## Implementação em Python + +Estamos agora prontos para implementar o algoritmo de aprendizado. Antes disso, também precisamos de uma função que converta números arbitrários na Q-Table em um vetor de probabilidades para as ações correspondentes. + +1. Crie uma função `probs()`: + + ```python + def probs(v,eps=1e-4): + v = v-v.min()+eps + v = v/v.sum() + return v + ``` + + Adicionamos alguns `eps` ao vetor original para evitar divisão por 0 no caso inicial, quando todos os componentes do vetor são idênticos. + +Execute o algoritmo de aprendizado por 5000 experimentos, também chamados de **épocas**: (bloco de código 8) +```python + for epoch in range(5000): + + # Escolher ponto inicial + m.random_start() + + # Começar 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 o jogador se mova fora do tabuleiro, o que termina o episódio + 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 +``` + +Depois de executar este algoritmo, a Q-Table deve estar atualizada com valores que definem a atratividade das diferentes ações em cada passo. Podemos tentar visualizar a Q-Table desenhando um vetor em cada célula que apontará na direção desejada de movimento. Para simplificar, desenhamos um pequeno círculo ao invés da ponta da seta. + + ## Verificando a política -Como a Q-Table lista a "atratividade" de cada ação em cada estado, é bastante fácil usá-la para definir a navegação eficiente em nosso mundo. No caso mais simples, podemos selecionar a ação correspondente ao maior valor da Q-Table: (bloco de código 9) +Como a Q-Table lista a "atratividade" de cada ação em cada estado, é bastante fácil usá-la para definir a navegação eficiente em nosso mundo. No caso mais simples, podemos selecionar a ação que corresponde ao maior valor na Q-Table: (bloco de código 9) ```python def qpolicy_strict(m): @@ -198,17 +274,18 @@ def qpolicy_strict(m): walk(m,qpolicy_strict) ``` -> Se você tentar o código acima várias vezes, pode perceber que, às vezes, ele "trava", e você precisa pressionar o botão STOP no notebook para interrompê-lo. Isso acontece porque podem haver situações em que dois estados "apontam" um para o outro em termos de valor Q-Ótimo, fazendo com que o agente acabe se movendo entre esses estados indefinidamente. + +> Se você tentar o código acima várias vezes, pode notar que às vezes ele "trava", e você precisa pressionar o botão PARAR no notebook para interrompê-lo. Isso acontece porque podem haver situações em que dois estados "apontam" um para o outro em termos de valor Q ótimo, e, nesse caso, o agente acaba se movendo entre esses estados indefinidamente. ## 🚀Desafio -> **Tarefa 1:** Modifique a função `walk` para limitar o comprimento máximo do caminho a um certo número de passos (digamos, 100), e observe o código acima retornar esse valor de tempos em tempos. +> **Tarefa 1:** Modifique a função `walk` para limitar o comprimento máximo do caminho por um certo número de passos (digamos, 100), e observe o código acima retornar este valor de tempos em tempos. -> **Tarefa 2:** Modifique a função `walk` para que ela não volte aos lugares onde já esteve anteriormente. Isso evitará que `walk` entre em loop, no entanto, o agente ainda pode acabar ficando "preso" em um local do qual não consegue escapar. +> **Tarefa 2:** Modifique a função `walk` para que ela não volte aos lugares onde já esteve anteriormente. Isso evitará que `walk` entre em loop, porém, o agente ainda pode acabar "preso" em um local do qual não consegue escapar. ## Navegação -Uma política de navegação melhor seria aquela que usamos durante o treinamento, que combina exploração e aproveitamento. Nessa política, selecionamos cada ação com uma certa probabilidade, proporcional aos valores na Q-Table. Essa estratégia ainda pode fazer com que o agente volte a uma posição que já explorou, mas, como você pode ver no código abaixo, resulta em um caminho médio muito curto até o local desejado (lembre-se de que `print_statistics` executa a simulação 100 vezes): (bloco de código 10) +Uma política de navegação melhor seria aquela que usamos durante o treinamento, que combina exploração e aproveitamento. Nessa política, selecionaremos cada ação com uma certa probabilidade, proporcional aos valores na Q-Table. Essa estratégia ainda pode resultar no agente retornar a uma posição que já explorou, mas, como você pode ver no código abaixo, resulta em um caminho médio muito curto até o local desejado (lembre-se que `print_statistics` executa a simulação 100 vezes): (bloco de código 10) ```python def qpolicy(m): @@ -220,28 +297,32 @@ def qpolicy(m): print_statistics(qpolicy) ``` -Após executar este código, você deve obter um comprimento médio de caminho muito menor do que antes, na faixa de 3-6. +Após executar este código, você deve obter um comprimento médio de caminho muito menor do que antes, na faixa de 3 a 6. + +## Investigando o processo de aprendizagem -## Investigando o processo de aprendizado +Como mencionamos, o processo de aprendizagem é um equilíbrio entre exploração e aproveitamento do conhecimento adquirido sobre a estrutura do espaço de problema. Vimos que os resultados da aprendizagem (a habilidade de ajudar um agente a encontrar um caminho curto até o objetivo) melhoraram, mas também é interessante observar como o comprimento médio do caminho se comporta durante o processo de aprendizagem: -Como mencionamos, o processo de aprendizado é um equilíbrio entre exploração e aproveitamento do conhecimento adquirido sobre a estrutura do espaço do problema. Vimos que os resultados do aprendizado (a capacidade de ajudar um agente a encontrar um caminho curto até o objetivo) melhoraram, mas também é interessante observar como o comprimento médio do caminho se comporta durante o processo de aprendizado: + -## Os aprendizados podem ser resumidos como: +O aprendizado pode ser resumido em: -- **O comprimento médio do caminho aumenta**. O que vemos aqui é que, no início, o comprimento médio do caminho aumenta. Isso provavelmente ocorre porque, quando não sabemos nada sobre o ambiente, é mais provável que fiquemos presos em estados ruins, como água ou lobo. À medida que aprendemos mais e começamos a usar esse conhecimento, podemos explorar o ambiente por mais tempo, mas ainda não sabemos muito bem onde estão as maçãs. +- **O comprimento médio do caminho aumenta**. O que vemos aqui é que, no começo, o comprimento médio do caminho aumenta. Isso provavelmente ocorre porque, quando não sabemos nada sobre o ambiente, é provável que fiquemos presos em estados ruins, água ou lobo. Conforme aprendemos mais e começamos a usar esse conhecimento, podemos explorar o ambiente por mais tempo, mas ainda não sabemos muito bem onde estão as maçãs. -- **O comprimento do caminho diminui, conforme aprendemos mais**. Uma vez que aprendemos o suficiente, torna-se mais fácil para o agente alcançar o objetivo, e o comprimento do caminho começa a diminuir. No entanto, ainda estamos abertos à exploração, então frequentemente nos desviamos do melhor caminho e exploramos novas opções, tornando o caminho mais longo do que o ideal. +- **O comprimento do caminho diminui, conforme aprendemos mais**. Quando aprendemos o suficiente, torna-se mais fácil para o agente atingir o objetivo, e o comprimento do caminho começa a diminuir. No entanto, ainda estamos abertos à exploração, então frequentemente nos desviamos do melhor caminho e exploramos novas opções, deixando o caminho mais longo do que o ideal. -- **O comprimento aumenta abruptamente**. O que também observamos nesse gráfico é que, em algum momento, o comprimento aumentou abruptamente. Isso indica a natureza estocástica do processo e que, em algum momento, podemos "estragar" os coeficientes da Q-Table ao sobrescrevê-los com novos valores. Isso idealmente deve ser minimizado diminuindo a taxa de aprendizado (por exemplo, no final do treinamento, ajustamos os valores da Q-Table apenas por um pequeno valor). +- **O comprimento aumenta abruptamente**. O que também observamos nesse gráfico é que, em algum momento, o comprimento aumentou abruptamente. Isso indica a natureza estocástica do processo, e que em algum ponto podemos "estragar" os coeficientes da Q-Table sobrescrevendo-os com novos valores. Isso idealmente deveria ser minimizado diminuindo a taxa de aprendizado (por exemplo, próximo ao fim do treinamento, ajustamos os valores da Q-Table por um valor pequeno). -No geral, é importante lembrar que o sucesso e a qualidade do processo de aprendizado dependem significativamente de parâmetros, como taxa de aprendizado, decaimento da taxa de aprendizado e fator de desconto. Esses parâmetros são frequentemente chamados de **hiperparâmetros**, para distingui-los dos **parâmetros**, que otimizamos durante o treinamento (por exemplo, os coeficientes da Q-Table). O processo de encontrar os melhores valores de hiperparâmetros é chamado de **otimização de hiperparâmetros**, e merece um tópico à parte. +No geral, é importante lembrar que o sucesso e a qualidade do processo de aprendizagem dependem significativamente dos parâmetros, como taxa de aprendizado, decaimento da taxa de aprendizado e fator de desconto. Eles são frequentemente chamados de **hiperparâmetros**, para distingui-los dos **parâmetros**, que otimizamos durante o treinamento (por exemplo, coeficientes da Q-Table). O processo de encontrar os melhores valores de hiperparâmetros é chamado de **otimização de hiperparâmetros**, e merece um tópico separado. ## [Quiz pós-aula](https://ff-quizzes.netlify.app/en/ml/) -## Tarefa +## Exercício [Um Mundo Mais Realista](assignment.md) --- -**Aviso Legal**: -Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file + +**Aviso Legal**: +Este documento foi traduzido usando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos pela precisão, por favor, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se tradução profissional humana. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. + \ No newline at end of file diff --git a/translations/pt-BR/8-Reinforcement/2-Gym/README.md b/translations/pt-BR/8-Reinforcement/2-Gym/README.md index 71ccfab06..f6c12fd0c 100644 --- a/translations/pt-BR/8-Reinforcement/2-Gym/README.md +++ b/translations/pt-BR/8-Reinforcement/2-Gym/README.md @@ -1,14 +1,34 @@ -## Requisitos +# Patinação CartPole -Nesta lição, usaremos uma biblioteca chamada **OpenAI Gym** para simular diferentes **ambientes**. Você pode executar o código desta lição localmente (por exemplo, no Visual Studio Code), caso em que a simulação será aberta em uma nova janela. Ao rodar o código online, pode ser necessário fazer alguns ajustes, conforme descrito [aqui](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7). +O problema que estávamos resolvendo na lição anterior pode parecer um problema de brinquedo, não muito aplicável a cenários da vida real. Este não é o caso, porque muitos problemas do mundo real também compartilham esse cenário – incluindo jogar Xadrez ou Go. Eles são semelhantes, porque também temos um tabuleiro com regras definidas e um **estado discreto**. + +## [Quiz pré-aula](https://ff-quizzes.netlify.app/en/ml/) + +## Introdução + +Nesta lição aplicaremos os mesmos princípios do Q-Learning a um problema com **estado contínuo**, ou seja, um estado definido por um ou mais números reais. Trabalharemos com o seguinte problema: + +> **Problema**: Se Pedro quiser escapar do lobo, ele precisa conseguir se mover mais rápido. Veremos como Pedro pode aprender a patinar, em particular, a manter o equilíbrio, usando Q-Learning. + +![A grande fuga!](../../../../translated_images/pt-BR/escape.18862db9930337e3.webp) + +> Pedro e seus amigos se mostram criativos para escapar do lobo! Imagem por [Jen Looper](https://twitter.com/jenlooper) + +Usaremos uma versão simplificada do equilíbrio conhecida como problema de **CartPole**. No mundo do cartpole, temos um controle deslizante horizontal que pode se mover para a esquerda ou para a direita, e o objetivo é equilibrar um bastão vertical em cima do controle deslizante. + +a cartpole + +## Pré-requisitos + +Nesta lição, usaremos uma biblioteca chamada **OpenAI Gym** para simular diferentes **ambientes**. Você pode executar o código desta lição localmente (por exemplo, no Visual Studio Code), nesse caso a simulação abrirá em uma nova janela. Ao executar o código online, pode ser necessário fazer alguns ajustes, como descrito [aqui](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7). ## OpenAI Gym -Na lição anterior, as regras do jogo e o estado foram definidos pela classe `Board`, que criamos manualmente. Aqui, utilizaremos um **ambiente de simulação** especial, que simulará a física por trás do equilíbrio do pêndulo. Um dos ambientes de simulação mais populares para treinar algoritmos de aprendizado por reforço é chamado de [Gym](https://gym.openai.com/), mantido pela [OpenAI](https://openai.com/). Usando este Gym, podemos criar diferentes **ambientes**, desde uma simulação de CartPole até jogos de Atari. +Na lição anterior, as regras do jogo e o estado foram definidos pela classe `Board` que escrevemos. Aqui usaremos um ambiente de simulação especial, que simula a física por trás do bastão equilibrador. Um dos ambientes de simulação mais populares para treinar algoritmos de aprendizado por reforço é chamado [Gym](https://gym.openai.com/), mantido pela [OpenAI](https://openai.com/). Usando esse gym podemos criar diferentes **ambientes** desde um cartpole até jogos de Atari. -> **Nota**: Você pode ver outros ambientes disponíveis no OpenAI Gym [aqui](https://gym.openai.com/envs/#classic_control). +> **Nota**: Veja outros ambientes disponíveis no OpenAI Gym [aqui](https://gym.openai.com/envs/#classic_control). -Primeiro, vamos instalar o Gym e importar as bibliotecas necessárias (bloco de código 1): +Primeiro, vamos instalar o gym e importar as bibliotecas requeridas (bloco de código 1): ```python import sys @@ -20,13 +40,13 @@ import numpy as np import random ``` -## Exercício - inicializar um ambiente de CartPole +## Exercício - inicializar um ambiente cartpole -Para trabalhar com o problema de equilíbrio do CartPole, precisamos inicializar o ambiente correspondente. Cada ambiente está associado a: +Para trabalhar com o problema de equilíbrio do cartpole, precisamos inicializar o ambiente correspondente. Cada ambiente está associado a: -- **Espaço de observação**, que define a estrutura das informações que recebemos do ambiente. No problema do CartPole, recebemos a posição do pêndulo, a velocidade e outros valores. +- **Espaço de observação**, que define a estrutura das informações que recebemos do ambiente. No problema do cartpole, recebemos posição do bastão, velocidade e alguns outros valores. -- **Espaço de ação**, que define as ações possíveis. No nosso caso, o espaço de ação é discreto e consiste em duas ações: **esquerda** e **direita**. (bloco de código 2) +- **Espaço de ação**, que define as possíveis ações. No nosso caso, o espaço de ações é discreto, e consiste em duas ações – **esquerda** e **direita**. (bloco de código 2) 1. Para inicializar, digite o seguinte código: @@ -37,11 +57,11 @@ Para trabalhar com o problema de equilíbrio do CartPole, precisamos inicializar print(env.action_space.sample()) ``` -Para entender como o ambiente funciona, vamos executar uma simulação curta de 100 passos. Em cada passo, fornecemos uma das ações a serem realizadas - nesta simulação, selecionamos aleatoriamente uma ação do `action_space`. +Para ver como o ambiente funciona, vamos executar uma simulação curta por 100 passos. A cada passo, fornecemos uma das ações a ser tomada – nesta simulação, apenas selecionamos uma ação aleatória do `action_space`. 1. Execute o código abaixo e veja o que acontece. - ✅ Lembre-se de que é preferível rodar este código em uma instalação local do Python! (bloco de código 3) + ✅ Lembre-se que é preferível executar este código numa instalação local do Python! (bloco de código 3) ```python env.reset() @@ -52,11 +72,11 @@ Para entender como o ambiente funciona, vamos executar uma simulação curta de env.close() ``` - Você deve ver algo semelhante a esta imagem: + Você deve ver algo similar a esta imagem: - ![CartPole sem equilíbrio](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) + ![cartpole sem equilíbrio](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) -1. Durante a simulação, precisamos obter observações para decidir como agir. Na verdade, a função step retorna as observações atuais, uma função de recompensa e um indicador `done` que mostra se faz sentido continuar a simulação ou não: (bloco de código 4) +1. Durante a simulação, precisamos obter observações para decidir como agir. Na verdade, a função step retorna a observação atual, uma função recompensa, e a flag done que indica se faz sentido continuar a simulação ou não: (bloco de código 4) ```python env.reset() @@ -69,7 +89,7 @@ Para entender como o ambiente funciona, vamos executar uma simulação curta de env.close() ``` - Você verá algo como isto na saída do notebook: + Você verá algo assim na saída do notebook: ```text [ 0.03403272 -0.24301182 0.02669811 0.2895829 ] -> 1.0 @@ -82,43 +102,43 @@ Para entender como o ambiente funciona, vamos executar uma simulação curta de [ 0.17617249 0.35602306 -0.21873684 -0.90998894] -> 1.0 ``` - O vetor de observação retornado em cada passo da simulação contém os seguintes valores: + O vetor de observação retornado a cada passo da simulação contém os seguintes valores: - Posição do carrinho - Velocidade do carrinho - - Ângulo do pêndulo - - Taxa de rotação do pêndulo + - Ângulo do bastão + - Taxa de rotação do bastão -1. Obtenha os valores mínimos e máximos desses números: (bloco de código 5) +1. Obtenha o valor mínimo e máximo desses números: (bloco de código 5) ```python print(env.observation_space.low) print(env.observation_space.high) ``` - Você também pode notar que o valor da recompensa em cada passo da simulação é sempre 1. Isso ocorre porque nosso objetivo é sobreviver o maior tempo possível, ou seja, manter o pêndulo em uma posição razoavelmente vertical pelo maior período de tempo. + Você também pode notar que o valor de recompensa em cada passo da simulação é sempre 1. Isso porque nosso objetivo é sobreviver o máximo possível, ou seja, manter o bastão em uma posição razoavelmente vertical pelo maior tempo possível. - ✅ Na verdade, a simulação do CartPole é considerada resolvida se conseguirmos uma recompensa média de 195 em 100 tentativas consecutivas. + ✅ Na verdade, a simulação CartPole é considerada resolvida se conseguirmos uma recompensa média de 195 em 100 tentativas consecutivas. ## Discretização do estado -No Q-Learning, precisamos construir uma Q-Table que define o que fazer em cada estado. Para isso, o estado precisa ser **discreto**, ou seja, deve conter um número finito de valores discretos. Assim, precisamos de alguma forma **discretizar** nossas observações, mapeando-as para um conjunto finito de estados. +No Q-Learning, precisamos construir uma Q-Table que define o que fazer em cada estado. Para isso, precisamos que o estado seja **discreto**, mais precisamente, deve conter um número finito de valores discretos. Portanto, precisamos de alguma forma **discretizar** nossas observações, mapeando-as para um conjunto finito de estados. -Existem algumas maneiras de fazer isso: +Existem algumas formas de fazer isso: -- **Dividir em intervalos**. Se conhecemos o intervalo de um determinado valor, podemos dividi-lo em um número de **intervalos** e, em seguida, substituir o valor pelo número do intervalo ao qual ele pertence. Isso pode ser feito usando o método [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html) do numpy. Nesse caso, saberemos exatamente o tamanho do estado, pois ele dependerá do número de intervalos que selecionarmos para a digitalização. +- **Dividir em bins**. Se soubermos o intervalo de um determinado valor, podemos dividi-lo em um número de **bins** e então substituir o valor pelo número do bin ao qual pertence. Isso pode ser feito usando o método [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html) do numpy. Nesse caso, saberemos exatamente o tamanho do estado, pois dependerá do número de bins escolhidos para a digitalização. + +✅ Podemos usar interpolação linear para trazer os valores a um intervalo finito (por exemplo, de -20 a 20), e então converter os números para inteiros arredondando-os. Isso nos dá um pouco menos de controle sobre o tamanho do estado, especialmente se não conhecermos os intervalos exatos dos valores de entrada. Por exemplo, no nosso caso, 2 dos 4 valores não têm limites superiores/inferiores, o que pode resultar em um número infinito de estados. -✅ Podemos usar interpolação linear para trazer os valores para algum intervalo finito (por exemplo, de -20 a 20) e, em seguida, converter os números em inteiros arredondando-os. Isso nos dá um pouco menos de controle sobre o tamanho do estado, especialmente se não conhecermos os intervalos exatos dos valores de entrada. Por exemplo, no nosso caso, 2 dos 4 valores não têm limites superiores/inferiores, o que pode resultar em um número infinito de estados. +No nosso exemplo, usaremos a segunda abordagem. Como você poderá notar, apesar dos limites superiores/inferiores indefinidos, esses valores raramente ultrapassam certos intervalos finitos, portanto estados com valores extremos serão muito raros. -No nosso exemplo, usaremos a segunda abordagem. Como você pode notar mais tarde, apesar de os limites superiores/inferiores não estarem definidos, esses valores raramente assumem valores fora de certos intervalos finitos, tornando os estados com valores extremos muito raros. - -1. Aqui está a função que pegará a observação do nosso modelo e produzirá uma tupla de 4 valores inteiros: (bloco de código 6) +1. Aqui está a função que irá pegar a observação do nosso modelo e produzir uma tupla de 4 valores inteiros: (bloco de código 6) ```python def discretize(x): return tuple((x/np.array([0.25, 0.25, 0.01, 0.1])).astype(np.int)) ``` -1. Vamos também explorar outro método de discretização usando intervalos: (bloco de código 7) +1. Vamos também explorar outro método de discretização usando bins: (bloco de código 7) ```python def create_bins(i,num): @@ -126,17 +146,17 @@ No nosso exemplo, usaremos a segunda abordagem. Como você pode notar mais tarde 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)] # intervalos de valores para cada parâmetro + nbins = [20,20,10,10] # número de intervalos para cada parâmetro 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. Agora, vamos rodar uma simulação curta e observar esses valores discretos do ambiente. Sinta-se à vontade para testar tanto `discretize` quanto `discretize_bins` e veja se há diferença. +1. Agora vamos rodar uma simulação curta e observar esses valores discretos do ambiente. Sinta-se à vontade para testar tanto `discretize` quanto `discretize_bins` e ver se há diferença. - ✅ `discretize_bins` retorna o número do intervalo, que começa em 0. Assim, para valores da variável de entrada próximos de 0, ele retorna o número do meio do intervalo (10). Em `discretize`, não nos preocupamos com o intervalo dos valores de saída, permitindo que sejam negativos, de modo que os valores do estado não são deslocados, e 0 corresponde a 0. (bloco de código 8) + ✅ `discretize_bins` retorna o número do bin, que é baseado em 0. Assim, para valores da variável de entrada próximos de 0, ele retorna um número perto do meio do intervalo (10). No `discretize`, não nos importamos com o intervalo dos valores de saída, permitindo negativos, então os valores do estado não são deslocados, e 0 corresponde a 0. (bloco de código 8) ```python env.reset() @@ -150,15 +170,15 @@ No nosso exemplo, usaremos a segunda abordagem. Como você pode notar mais tarde env.close() ``` - ✅ Descomente a linha que começa com `env.render` se quiser ver como o ambiente é executado. Caso contrário, você pode executá-lo em segundo plano, o que é mais rápido. Usaremos essa execução "invisível" durante nosso processo de Q-Learning. + ✅ Descomente a linha começando com env.render se quiser ver como o ambiente executa. Caso contrário, você pode executar em segundo plano, que é mais rápido. Usaremos essa execução "invisível" durante nosso processo de Q-Learning. -## Estrutura da Q-Table +## A estrutura da Q-Table -Na lição anterior, o estado era um simples par de números de 0 a 8, e, portanto, era conveniente representar a Q-Table como um tensor numpy com forma 8x8x2. Se usarmos a discretização por intervalos, o tamanho do nosso vetor de estado também será conhecido, então podemos usar a mesma abordagem e representar o estado por um array com forma 20x20x10x10x2 (aqui, 2 é a dimensão do espaço de ação, e as primeiras dimensões correspondem ao número de intervalos que selecionamos para cada parâmetro no espaço de observação). +Na lição anterior, o estado era um par simples de números de 0 a 8, e assim era conveniente representar a Q-Table por um tensor numpy com formato 8x8x2. Se usarmos discretização por bins, o tamanho do vetor estado também é conhecido, então podemos usar a mesma abordagem e representar o estado por um array de forma 20x20x10x10x2 (aqui 2 é a dimensão do espaço de ação, e as primeiras dimensões correspondem ao número de bins que selecionamos para cada um dos parâmetros do espaço de observação). -No entanto, às vezes as dimensões precisas do espaço de observação não são conhecidas. No caso da função `discretize`, nunca podemos ter certeza de que nosso estado permanecerá dentro de certos limites, porque alguns dos valores originais não têm limites. Assim, usaremos uma abordagem ligeiramente diferente e representaremos a Q-Table como um dicionário. +Entretanto, às vezes as dimensões exatas do espaço de observação não são conhecidas. No caso da função `discretize`, nunca podemos ter certeza que o estado fica dentro de certos limites, porque alguns dos valores originais não têm limite. Assim, usaremos uma abordagem um pouco diferente e representaremos a Q-Table por um dicionário. -1. Use o par *(state, action)* como chave do dicionário, e o valor corresponderá ao valor da entrada na Q-Table. (bloco de código 9) +1. Use o par *(estado,ação)* como a chave do dicionário, e o valor corresponderá ao valor da entrada na Q-Table. (bloco de código 9) ```python Q = {} @@ -168,38 +188,38 @@ No entanto, às vezes as dimensões precisas do espaço de observação não sã return [Q.get((state,a),0) for a in actions] ``` - Aqui também definimos uma função `qvalues()`, que retorna uma lista de valores da Q-Table para um estado dado que corresponde a todas as ações possíveis. Se a entrada não estiver presente na Q-Table, retornaremos 0 como padrão. + Aqui também definimos a função `qvalues()`, que retorna uma lista dos valores da Q-Table para um dado estado que corresponde a todas as ações possíveis. Se a entrada não existir na Q-Table, retornamos 0 como padrão. ## Vamos começar o Q-Learning -Agora estamos prontos para ensinar Peter a equilibrar! +Agora estamos prontos para ensinar Pedro a se equilibrar! -1. Primeiro, vamos definir alguns hiperparâmetros: (bloco de código 10) +1. Primeiro, defina alguns hiperparâmetros: (bloco de código 10) ```python - # hyperparameters + # hiperparâmetros alpha = 0.3 gamma = 0.9 epsilon = 0.90 ``` - Aqui, `alpha` é a **taxa de aprendizado**, que define em que medida devemos ajustar os valores atuais da Q-Table em cada passo. Na lição anterior, começamos com 1 e depois reduzimos `alpha` para valores menores durante o treinamento. Neste exemplo, manteremos constante apenas para simplificar, e você pode experimentar ajustar os valores de `alpha` mais tarde. + Aqui, `alpha` é a **taxa de aprendizado** que define até que ponto devemos ajustar os valores atuais da Q-Table a cada passo. Na lição anterior, começamos com 1, e depois diminuímos `alpha` para valores mais baixos durante o treino. Neste exemplo, manteremos constante apenas por simplicidade, e você pode experimentar ajustar os valores de `alpha` depois. - `gamma` é o **fator de desconto**, que mostra em que medida devemos priorizar a recompensa futura em relação à recompensa atual. + `gamma` é o **fator de desconto** que indica até que ponto devemos priorizar recompensa futura sobre a atual. - `epsilon` é o **fator de exploração/exploração**, que determina se devemos preferir explorar ou explorar menos. Em nosso algoritmo, em `epsilon` por cento dos casos, selecionaremos a próxima ação de acordo com os valores da Q-Table, e no restante dos casos executaremos uma ação aleatória. Isso nos permitirá explorar áreas do espaço de busca que nunca vimos antes. + `epsilon` é o **fator de exploração/exploração** que determina se devemos preferir exploração (experimentar) ou exploração (usar o que já sabemos). No nosso algoritmo, em `epsilon` por cento dos casos selecionaremos a próxima ação conforme os valores da Q-Table, e no restante executaremos uma ação aleatória. Isso nos permitirá explorar áreas do espaço de busca que nunca vimos antes. - ✅ Em termos de equilíbrio - escolher uma ação aleatória (exploração) agiria como um empurrão aleatório na direção errada, e o pêndulo teria que aprender a recuperar o equilíbrio desses "erros". + ✅ Em termos de equilíbrio – escolher ação aleatória (exploração) seria como dar um soco aleatório na direção errada, e o bastão teria que aprender como recuperar o equilíbrio dessas "falhas". ### Melhorar o algoritmo -Podemos também fazer duas melhorias no nosso algoritmo da lição anterior: - -- **Calcular a recompensa cumulativa média**, ao longo de várias simulações. Imprimiremos o progresso a cada 5000 iterações e faremos a média da recompensa cumulativa nesse período de tempo. Isso significa que, se obtivermos mais de 195 pontos, podemos considerar o problema resolvido, com uma qualidade ainda maior do que a exigida. +Também podemos fazer duas melhorias no nosso algoritmo da lição anterior: -- **Calcular o resultado cumulativo médio máximo**, `Qmax`, e armazenaremos a Q-Table correspondente a esse resultado. Quando você rodar o treinamento, notará que, às vezes, o resultado cumulativo médio começa a cair, e queremos manter os valores da Q-Table que correspondem ao melhor modelo observado durante o treinamento. +- **Calcular a recompensa acumulada média**, sobre um número de simulações. Vamos imprimir o progresso a cada 5000 iterações, e calcularemos a média da recompensa acumulada nesse período. Isso significa que se obtivermos mais que 195 pontos – podemos considerar o problema resolvido, com qualidade até superior à requerida. + +- **Calcular o máximo resultado acumulado médio**, `Qmax`, e armazenar a Q-Table correspondente a esse resultado. Quando você executar o treinamento, notará que às vezes a recompensa acumulada média começa a cair, e queremos manter os valores da Q-Table que correspondem ao melhor modelo observado durante o treino. -1. Colete todas as recompensas cumulativas em cada simulação no vetor `rewards` para posterior plotagem. (bloco de código 11) +1. Armazene todas as recompensas acumuladas em cada simulação no vetor `rewards` para gráficos futuros. (bloco de código 11) ```python def probs(v,eps=1e-4): @@ -214,15 +234,15 @@ Podemos também fazer duas melhorias no nosso algoritmo da lição anterior: obs = env.reset() done = False cum_reward=0 - # == do the simulation == + # == faça a simulação == while not done: s = discretize(obs) if random.random() Qmax: @@ -242,23 +262,23 @@ Podemos também fazer duas melhorias no nosso algoritmo da lição anterior: O que você pode notar a partir desses resultados: -- **Perto do nosso objetivo**. Estamos muito próximos de alcançar o objetivo de obter 195 recompensas cumulativas em mais de 100 execuções consecutivas da simulação, ou talvez já tenhamos alcançado! Mesmo que obtenhamos números menores, ainda não sabemos, porque fazemos a média em 5000 execuções, e apenas 100 execuções são necessárias no critério formal. +- **Perto do nosso objetivo**. Estamos muito próximos de alcançar o objetivo de obter 195 recompensas acumuladas em 100+ execuções consecutivas da simulação, ou talvez já tenhamos conseguido! Mesmo que obtenhamos números menores, ainda não sabemos, pois fazemos a média sobre 5000 execuções, e o critério formal exige apenas 100 execuções. + +- **Recompensa começa a cair**. Às vezes a recompensa começa a cair, o que significa que podemos "destruir" valores já aprendidos na Q-Table com outros que pioram a situação. -- **Recompensa começa a cair**. Às vezes, a recompensa começa a cair, o que significa que podemos "destruir" valores já aprendidos na Q-Table com aqueles que pioram a situação. +Essa observação fica mais clara se plotarmos o progresso do treino. -Essa observação fica mais clara se plotarmos o progresso do treinamento. +## Plotando o progresso do treino -## Plotando o progresso do treinamento - -Durante o treinamento, coletamos o valor da recompensa cumulativa em cada uma das iterações no vetor `rewards`. Veja como ele fica quando o plotamos contra o número de iterações: +Durante o treino, colecionamos o valor da recompensa acumulada em cada iteração no vetor `rewards`. Veja como fica ao plotar frente ao número da iteração: ```python plt.plot(rewards) ``` -![progresso bruto](../../../../8-Reinforcement/2-Gym/images/train_progress_raw.png) +![progresso bruto](../../../../translated_images/pt-BR/train_progress_raw.2adfdf2daea09c59.webp) -A partir deste gráfico, não é possível dizer muita coisa, porque, devido à natureza do processo de treinamento estocástico, a duração das sessões de treinamento varia muito. Para dar mais sentido a este gráfico, podemos calcular a **média móvel** ao longo de uma série de experimentos, digamos 100. Isso pode ser feito convenientemente usando `np.convolve`: (bloco de código 12) +A partir desse gráfico, não é possível tirar conclusões, pois devido à natureza estocástica do processo de treinamento, a duração das sessões varia muito. Para dar mais sentido a esse gráfico, podemos calcular a **média móvel** sobre uma série de experimentos, digamos 100. Isso pode ser feito convenientemente usando `np.convolve`: (bloco de código 12) ```python def running_average(x,window): @@ -267,21 +287,24 @@ def running_average(x,window): plt.plot(running_average(rewards,100)) ``` -![progresso do treinamento](../../../../8-Reinforcement/2-Gym/images/train_progress_runav.png) +![progresso do treino](../../../../translated_images/pt-BR/train_progress_runav.c71694a8fa9ab359.webp) + +## Variando hiperparâmetros + +Para tornar o aprendizado mais estável, faz sentido ajustar alguns de nossos hiperparâmetros durante o treino. Em particular: + +- **Para a taxa de aprendizado**, `alpha`, podemos começar com valores próximos a 1, e depois ir diminuindo o parâmetro. Com o tempo, teremos boas probabilidades na Q-Table, então devemos ajustá-las ligeiramente, e não sobrescrever completamente com novos valores. -## Variando os hiperparâmetros +- **Aumentar epsilon**. Podemos querer aumentar lentamente o `epsilon`, para explorar menos e explorar mais. Provavelmente faz sentido começar com um valor baixo de `epsilon`, e subir até quase 1. -Para tornar o aprendizado mais estável, faz sentido ajustar alguns de nossos hiperparâmetros durante o treinamento. Em particular: +> **Tarefa 1**: Brinque com os valores dos hiperparâmetros e veja se consegue obter uma recompensa acumulada maior. Você está conseguindo passar de 195? -- **Para a taxa de aprendizado**, `alpha`, podemos começar com valores próximos de 1 e, em seguida, diminuir o parâmetro gradualmente. Com o tempo, obteremos boas probabilidades na Q-Table, e, assim, devemos ajustá-las levemente, em vez de sobrescrevê-las completamente com novos valores. -- **Aumentar epsilon**. Podemos querer aumentar o `epsilon` lentamente, para explorar menos e explorar mais. Provavelmente faz sentido começar com um valor menor de `epsilon` e aumentá-lo até quase 1. -> **Tarefa 1**: Experimente ajustar os valores dos hiperparâmetros e veja se consegue alcançar uma recompensa cumulativa maior. Você está conseguindo superar 195? -> **Tarefa 2**: Para resolver formalmente o problema, você precisa alcançar uma recompensa média de 195 em 100 execuções consecutivas. Meça isso durante o treinamento e certifique-se de que resolveu o problema formalmente! +> **Tarefa 2**: Para resolver formalmente o problema, você precisa obter uma recompensa média de 195 em 100 execuções consecutivas. Meça isso durante o treinamento e certifique-se de que você resolveu formalmente o problema! -## Visualizando o resultado em ação +## Vendo o resultado em ação -Seria interessante ver como o modelo treinado se comporta. Vamos executar a simulação e seguir a mesma estratégia de seleção de ações usada durante o treinamento, amostrando de acordo com a distribuição de probabilidade na Q-Table: (bloco de código 13) +Seria interessante de fato ver como o modelo treinado se comporta. Vamos executar a simulação e seguir a mesma estratégia de seleção de ação usada durante o treinamento, amostrando de acordo com a distribuição de probabilidade na Q-Table: (bloco de código 13) ```python obs = env.reset() @@ -295,30 +318,32 @@ while not done: env.close() ``` -Você deve ver algo como isto: +Você deve ver algo assim: -![um carrinho equilibrando](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) +![um carrinho equilibrando o poste](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) --- ## 🚀Desafio -> **Tarefa 3**: Aqui, estávamos usando a cópia final da Q-Table, que pode não ser a melhor. Lembre-se de que armazenamos a Q-Table com melhor desempenho na variável `Qbest`! Experimente o mesmo exemplo com a Q-Table de melhor desempenho copiando `Qbest` para `Q` e veja se você nota alguma diferença. +> **Tarefa 3**: Aqui, estávamos usando a cópia final da Q-Table, que pode não ser a melhor. Lembre-se que armazenamos a Q-Table com melhor desempenho na variável `Qbest`! Tente o mesmo exemplo usando a Q-Table com melhor desempenho copiando `Qbest` para `Q` e veja se você percebe a diferença. -> **Tarefa 4**: Aqui, não estávamos selecionando a melhor ação em cada etapa, mas sim amostrando com a distribuição de probabilidade correspondente. Faria mais sentido sempre selecionar a melhor ação, com o maior valor na Q-Table? Isso pode ser feito usando a função `np.argmax` para descobrir o número da ação correspondente ao maior valor na Q-Table. Implemente essa estratégia e veja se ela melhora o equilíbrio. +> **Tarefa 4**: Aqui, não estávamos selecionando a melhor ação a cada passo, mas sim amostrando conforme a distribuição de probabilidade correspondente. Faria mais sentido sempre selecionar a melhor ação, com o maior valor na Q-Table? Isso pode ser feito usando a função `np.argmax` para descobrir o número da ação correspondente ao maior valor na Q-Table. Implemente essa estratégia e veja se isso melhora o equilíbrio. -## [Quiz pós-aula](https://ff-quizzes.netlify.app/en/ml/) +## [Questionário pós-palestra](https://ff-quizzes.netlify.app/en/ml/) -## Tarefa +## Atividade [Treine um Mountain Car](assignment.md) ## Conclusão -Agora aprendemos como treinar agentes para alcançar bons resultados apenas fornecendo a eles uma função de recompensa que define o estado desejado do jogo e dando-lhes a oportunidade de explorar inteligentemente o espaço de busca. Aplicamos com sucesso o algoritmo de Q-Learning nos casos de ambientes discretos e contínuos, mas com ações discretas. +Agora aprendemos como treinar agentes para alcançar bons resultados apenas fornecendo uma função de recompensa que define o estado desejado do jogo, e dando a eles a oportunidade de explorar o espaço de busca de forma inteligente. Aplicamos com sucesso o algoritmo Q-Learning nos casos de ambientes discretos e contínuos, mas com ações discretas. -É importante também estudar situações em que o estado de ação também é contínuo e quando o espaço de observação é muito mais complexo, como a imagem da tela de um jogo Atari. Nesses problemas, muitas vezes precisamos usar técnicas de aprendizado de máquina mais poderosas, como redes neurais, para alcançar bons resultados. Esses tópicos mais avançados serão abordados em nosso próximo curso de IA mais avançado. +Também é importante estudar situações onde o estado da ação também é contínuo, e quando o espaço de observação é muito mais complexo, como a imagem da tela de um jogo Atari. Nesses problemas, frequentemente precisamos usar técnicas de aprendizado de máquina mais poderosas, como redes neurais, para alcançar bons resultados. Esses tópicos mais avançados são o assunto do nosso próximo curso de IA mais avançado. --- -**Aviso Legal**: -Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução. \ No newline at end of file + +**Aviso Legal**: +Este documento foi traduzido usando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos pela precisão, por favor, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se tradução profissional humana. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes do uso desta tradução. + \ No newline at end of file diff --git a/translations/pt-PT/.co-op-translator.json b/translations/pt-PT/.co-op-translator.json index 1448edfd9..b517e2ae3 100644 --- a/translations/pt-PT/.co-op-translator.json +++ b/translations/pt-PT/.co-op-translator.json @@ -24,8 +24,8 @@ "language_code": "pt-PT" }, "1-Introduction/3-fairness/README.md": { - "original_hash": "9a6b702d1437c0467e3c5c28d763dac2", - "translation_date": "2025-09-05T08:43:41+00:00", + "original_hash": "0f00d72169a0d37eecfd16d71e01700a", + "translation_date": "2026-07-14T03:10:20+00:00", "source_file": "1-Introduction/3-fairness/README.md", "language_code": "pt-PT" }, @@ -54,8 +54,8 @@ "language_code": "pt-PT" }, "2-Regression/1-Tools/README.md": { - "original_hash": "fa81d226c71d5af7a2cade31c1c92b88", - "translation_date": "2025-09-05T08:37:58+00:00", + "original_hash": "0b8635427b582d03ea4ab7089b93e505", + "translation_date": "2026-07-14T03:05:40+00:00", "source_file": "2-Regression/1-Tools/README.md", "language_code": "pt-PT" }, @@ -72,8 +72,8 @@ "language_code": "pt-PT" }, "2-Regression/2-Data/README.md": { - "original_hash": "7c077988328ebfe33b24d07945f16eca", - "translation_date": "2025-09-05T08:38:38+00:00", + "original_hash": "a58b2c4d16c6b122643391745ac15af6", + "translation_date": "2026-07-14T03:07:32+00:00", "source_file": "2-Regression/2-Data/README.md", "language_code": "pt-PT" }, @@ -89,6 +89,12 @@ "source_file": "2-Regression/2-Data/solution/Julia/README.md", "language_code": "pt-PT" }, + "2-Regression/2-Data/solution/notebook.ipynb": { + "original_hash": "96b95f8cf473481f2f371de8156f1571", + "translation_date": "2026-07-14T02:32:32+00:00", + "source_file": "2-Regression/2-Data/solution/notebook.ipynb", + "language_code": "pt-PT" + }, "2-Regression/3-Linear/README.md": { "original_hash": "8b776e731c35b171d316d01d0e7b1369", "translation_date": "2026-04-26T18:40:33+00:00", @@ -457,7 +463,7 @@ }, "8-Reinforcement/1-QLearning/README.md": { "original_hash": "911efd5e595089000cb3c16fce1beab8", - "translation_date": "2025-09-05T08:49:11+00:00", + "translation_date": "2026-07-14T03:08:31+00:00", "source_file": "8-Reinforcement/1-QLearning/README.md", "language_code": "pt-PT" }, @@ -481,7 +487,7 @@ }, "8-Reinforcement/2-Gym/README.md": { "original_hash": "107d5bb29da8a562e7ae72262d251a75", - "translation_date": "2025-09-05T08:49:47+00:00", + "translation_date": "2026-07-14T03:09:31+00:00", "source_file": "8-Reinforcement/2-Gym/README.md", "language_code": "pt-PT" }, @@ -581,6 +587,19 @@ "source_file": "TROUBLESHOOTING.md", "language_code": "pt-PT" }, + "__translation_failures__": { + "sketchnotes/LICENSE.md": { + "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f", + "source_file": "sketchnotes/LICENSE.md", + "language_code": "pt-PT", + "failure_date": "2026-07-14T03:04: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-09-03T17:21:04+00:00", diff --git a/translations/pt-PT/1-Introduction/3-fairness/README.md b/translations/pt-PT/1-Introduction/3-fairness/README.md index 1de1ba34b..53fba3712 100644 --- a/translations/pt-PT/1-Introduction/3-fairness/README.md +++ b/translations/pt-PT/1-Introduction/3-fairness/README.md @@ -1,155 +1,159 @@ # Construir soluções de Machine Learning com IA responsável - -![Resumo da IA responsável em Machine Learning em um sketchnote](../../../../sketchnotes/ml-fairness.png) + +![Resumo da IA responsável em Machine Learning num sketchnote](../../../../translated_images/pt-PT/ml-fairness.ef296ebec6afc98a.webp) > Sketchnote por [Tomomi Imura](https://www.twitter.com/girlie_mac) ## [Questionário pré-aula](https://ff-quizzes.netlify.app/en/ml/) - + ## Introdução -Neste currículo, começará a descobrir como o machine learning pode impactar e já está a impactar as nossas vidas diárias. Mesmo agora, sistemas e modelos estão envolvidos em tarefas de tomada de decisão diária, como diagnósticos de saúde, aprovações de empréstimos ou deteção de fraudes. Por isso, é importante que esses modelos funcionem bem para fornecer resultados confiáveis. Assim como qualquer aplicação de software, os sistemas de IA podem falhar em atender às expectativas ou gerar resultados indesejáveis. É por isso que é essencial compreender e explicar o comportamento de um modelo de IA. +Neste currículo, irá começar a descobrir como o machine learning pode e está a impactar a nossa vida quotidiana. Mesmo agora, sistemas e modelos estão envolvidos em tarefas diárias de tomada de decisão, como diagnósticos de saúde, aprovações de empréstimos ou deteção de fraude. Por isso, é importante que estes modelos funcionem bem para fornecer resultados em que se possa confiar. Tal como qualquer aplicação de software, os sistemas de IA vão falhar expectativas ou terão um resultado indesejado. É por isso que é essencial conseguir compreender e explicar o comportamento de um modelo de IA. -Imagine o que pode acontecer quando os dados que utiliza para construir esses modelos não incluem certos grupos demográficos, como raça, género, visão política, religião, ou representam esses grupos de forma desproporcional. E se a saída do modelo for interpretada de forma a favorecer um grupo demográfico? Qual é a consequência para a aplicação? Além disso, o que acontece quando o modelo gera um resultado adverso e prejudica as pessoas? Quem é responsável pelo comportamento dos sistemas de IA? Estas são algumas questões que exploraremos neste currículo. +Imagine o que pode acontecer quando os dados que está a usar para construir estes modelos não contêm certos grupos demográficos, como raça, género, visão política, religião, ou representam desproporcionalmente esses grupos demográficos. E se o resultado do modelo for interpretado para favorecer algum grupo demográfico? Qual a consequência para a aplicação? Além disso, o que acontece quando o modelo tem um resultado adverso e é prejudicial para as pessoas? Quem é responsável pelo comportamento dos sistemas de IA? Estas são algumas das questões que iremos explorar neste currículo. Nesta lição, irá: -- Aumentar a sua consciência sobre a importância da equidade no machine learning e os danos relacionados com a falta de equidade. -- Familiarizar-se com a prática de explorar outliers e cenários incomuns para garantir fiabilidade e segurança. -- Compreender a necessidade de capacitar todos ao projetar sistemas inclusivos. -- Explorar como é vital proteger a privacidade e a segurança dos dados e das pessoas. -- Perceber a importância de uma abordagem de "caixa de vidro" para explicar o comportamento dos modelos de IA. -- Ter em mente como a responsabilidade é essencial para construir confiança nos sistemas de IA. +- Aumentar a sua consciência da importância da justiça em machine learning e dos danos relacionados com a justiça. +- Familiarizar-se com a prática de explorar outliers e cenários invulgares para garantir fiabilidade e segurança. +- Compreender a necessidade de capacitar todos ao desenhar sistemas inclusivos. +- Explorar a importância vital de proteger a privacidade e a segurança dos dados e das pessoas. +- Ver a importância de ter uma abordagem de caixa transparente para explicar o comportamento dos modelos de IA. +- Ser consciente de como a responsabilidade é essencial para construir confiança em sistemas de IA. -## Pré-requisito +## Pré-requisitos -Como pré-requisito, faça o percurso de aprendizagem "Princípios de IA Responsável" e assista ao vídeo abaixo sobre o tema: +Como pré-requisito, por favor faça o Learn Path "Princípios de IA Responsável" e assista ao vídeo abaixo sobre o tema: -Saiba mais sobre IA Responsável seguindo este [Percurso de Aprendizagem](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) +Saiba mais sobre IA Responsável seguindo este [Learning Path](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) -[![Abordagem da Microsoft para IA Responsável](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Abordagem da Microsoft para IA Responsável") +[![Abordagem da Microsoft à IA responsável](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Abordagem da Microsoft à IA responsável") -> 🎥 Clique na imagem acima para assistir ao vídeo: Abordagem da Microsoft para IA Responsável +> 🎥 Clique na imagem acima para um vídeo: Abordagem da Microsoft à IA responsável -## Equidade +## Justiça -Os sistemas de IA devem tratar todos de forma justa e evitar afetar grupos semelhantes de pessoas de maneiras diferentes. Por exemplo, quando os sistemas de IA fornecem orientações sobre tratamentos médicos, aplicações de empréstimos ou emprego, devem fazer as mesmas recomendações para todos com sintomas, circunstâncias financeiras ou qualificações profissionais semelhantes. Cada um de nós, como seres humanos, carrega preconceitos herdados que afetam as nossas decisões e ações. Esses preconceitos podem ser evidentes nos dados que usamos para treinar sistemas de IA. Tal manipulação pode, por vezes, ocorrer de forma não intencional. Muitas vezes, é difícil perceber conscientemente quando está a introduzir preconceitos nos dados. +Os sistemas de IA devem tratar todos com justiça e evitar afetar grupos semelhantes de pessoas de forma diferente. Por exemplo, quando sistemas de IA fornecem orientação sobre tratamentos médicos, candidaturas a empréstimos ou emprego, devem fazer as mesmas recomendações a todos com sintomas semelhantes, circunstâncias financeiras ou qualificações profissionais. Cada um de nós, como humanos, carrega preconceitos herdados que afetam as nossas decisões e ações. Esses preconceitos podem estar evidentes nos dados que usamos para treinar sistemas de IA. Essa manipulação pode ocorrer às vezes involuntariamente. Muitas vezes é difícil saber conscientemente quando estamos a introduzir preconceito nos dados. -**"Injustiça"** abrange impactos negativos, ou "danos", para um grupo de pessoas, como aqueles definidos em termos de raça, género, idade ou deficiência. Os principais danos relacionados com a equidade podem ser classificados como: +**“Injustiça”** engloba impactos negativos, ou “danos”, para um grupo de pessoas, como aqueles definidos em termos de raça, género, idade ou estado de deficiência. Os principais danos relacionados com a justiça podem ser classificados como: -- **Alocação**, se, por exemplo, um género ou etnia for favorecido em detrimento de outro. -- **Qualidade do serviço**. Se treinar os dados para um cenário específico, mas a realidade for muito mais complexa, isso leva a um serviço de desempenho inferior. Por exemplo, um dispensador de sabão que não consegue detetar pessoas com pele escura. [Referência](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773) -- **Denigração**. Criticar ou rotular algo ou alguém de forma injusta. Por exemplo, uma tecnologia de rotulagem de imagens que, de forma infame, rotulou imagens de pessoas de pele escura como gorilas. -- **Sobre ou sub-representação**. A ideia de que um determinado grupo não é visto numa certa profissão, e qualquer serviço ou função que continue a promover isso está a contribuir para o dano. -- **Estereotipagem**. Associar um grupo a atributos pré-definidos. Por exemplo, um sistema de tradução entre inglês e turco pode apresentar imprecisões devido a palavras com associações estereotipadas de género. +- **Alocação**, se, por exemplo, um género ou etnia é favorecido em detrimento de outro. +- **Qualidade do serviço**. Se treinar os dados para um cenário específico, mas a realidade for muito mais complexa, leva a um serviço com fraco desempenho. Por exemplo, um dispensador de sabão que aparentemente não conseguia detetar pessoas com pele escura. [Referência](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773) +- **Difamação**. Criticar injustamente e rotular algo ou alguém. Por exemplo, uma tecnologia de rotulagem de imagens rotulou infamemente imagens de pessoas de pele escura como gorilas. +- **Sobre ou subrepresentação**. A ideia é que um certo grupo não é visto numa determinada profissão, e qualquer serviço ou função que continue a promover isso está a contribuir para o dano. +- **Estereotipagem**. Associar um dado grupo a atributos pré-atribuídos. Por exemplo, um sistema de tradução linguística entre inglês e turco pode apresentar imprecisões devido a palavras com associações estereotipadas ao género. -![tradução para turco](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) +![tradução para turco](../../../../translated_images/pt-PT/gender-bias-translate-en-tr.f185fd8822c2d437.webp) > tradução para turco -![tradução de volta para inglês](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) +![tradução de volta para inglês](../../../../translated_images/pt-PT/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) > tradução de volta para inglês -Ao projetar e testar sistemas de IA, precisamos garantir que a IA seja justa e não programada para tomar decisões enviesadas ou discriminatórias, que também são proibidas para os seres humanos. Garantir a equidade na IA e no machine learning continua a ser um desafio sociotécnico complexo. +Ao desenhar e testar sistemas de IA, precisamos garantir que a IA é justa e não programada para tomar decisões enviesadas ou discriminatórias, que os próprios humanos também são proibidos de tomar. Garantir a justiça na IA e no machine learning continua a ser um desafio sociotécnico complexo. ### Fiabilidade e segurança -Para construir confiança, os sistemas de IA precisam ser fiáveis, seguros e consistentes em condições normais e inesperadas. É importante saber como os sistemas de IA se comportarão numa variedade de situações, especialmente quando se trata de outliers. Ao construir soluções de IA, é necessário focar-se substancialmente em como lidar com uma ampla variedade de circunstâncias que as soluções de IA podem encontrar. Por exemplo, um carro autónomo precisa de colocar a segurança das pessoas como prioridade máxima. Como resultado, a IA que alimenta o carro precisa de considerar todos os cenários possíveis que o carro pode encontrar, como noite, tempestades, nevascas, crianças a atravessar a rua, animais de estimação, obras na estrada, etc. O quão bem um sistema de IA consegue lidar com uma ampla gama de condições de forma fiável e segura reflete o nível de antecipação que o cientista de dados ou desenvolvedor de IA considerou durante o design ou teste do sistema. +Para construir confiança, os sistemas de IA precisam de ser fiáveis, seguros e consistentes em condições normais e inesperadas. É importante saber como os sistemas de IA vão comportar-se numa variedade de situações, especialmente quando são outliers. Ao construir soluções de IA, deve haver uma atenção substancial sobre como lidar com uma grande variedade de circunstâncias que as soluções IA possam encontrar. Por exemplo, um carro autónomo tem de colocar a segurança das pessoas como prioridade máxima. Como resultado, a IA que alimenta o carro precisa de considerar todos os possíveis cenários que o carro pode encontrar, tais como de noite, tempestades ou nevascas, crianças a atravessarem a rua, animais de estimação, obras na estrada, etc. Quão bem um sistema de IA consegue lidar com uma ampla gama de condições fiável e seguramente reflete o nível de antecipação que o cientista de dados ou o programador de IA consideraram durante o design ou teste do sistema. > [🎥 Clique aqui para um vídeo: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl) ### Inclusividade -Os sistemas de IA devem ser projetados para envolver e capacitar todos. Ao projetar e implementar sistemas de IA, cientistas de dados e desenvolvedores de IA identificam e abordam potenciais barreiras no sistema que poderiam, de forma não intencional, excluir pessoas. Por exemplo, existem 1 bilião de pessoas com deficiência em todo o mundo. Com o avanço da IA, elas podem aceder a uma ampla gama de informações e oportunidades mais facilmente nas suas vidas diárias. Ao abordar essas barreiras, criam-se oportunidades para inovar e desenvolver produtos de IA com melhores experiências que beneficiam todos. +Os sistemas de IA devem ser desenhados para envolver e capacitar todos. Ao desenhar e implementar sistemas de IA, os cientistas de dados e programadores identificam e resolvem potenciais barreiras no sistema que poderiam excluir pessoas involuntariamente. Por exemplo, existem 1 bilião de pessoas com deficiência em todo o mundo. Com o avanço da IA, podem aceder a uma ampla gama de informações e oportunidades mais facilmente no seu dia a dia. Ao resolver as barreiras, criam-se oportunidades para inovar e desenvolver produtos de IA com melhores experiências que beneficiem todos. > [🎥 Clique aqui para um vídeo: inclusividade na IA](https://www.microsoft.com/videoplayer/embed/RE4vl9v) ### Segurança e privacidade -Os sistemas de IA devem ser seguros e respeitar a privacidade das pessoas. As pessoas têm menos confiança em sistemas que colocam a sua privacidade, informações ou vidas em risco. Ao treinar modelos de machine learning, confiamos nos dados para produzir os melhores resultados. Ao fazê-lo, a origem e a integridade dos dados devem ser consideradas. Por exemplo, os dados foram submetidos por utilizadores ou estavam disponíveis publicamente? Além disso, ao trabalhar com os dados, é crucial desenvolver sistemas de IA que possam proteger informações confidenciais e resistir a ataques. À medida que a IA se torna mais prevalente, proteger a privacidade e garantir a segurança de informações pessoais e empresariais importantes está a tornar-se mais crítico e complexo. Questões de privacidade e segurança de dados requerem atenção especial para a IA, pois o acesso aos dados é essencial para que os sistemas de IA façam previsões e decisões precisas e informadas sobre as pessoas. +Os sistemas de IA devem ser seguros e respeitar a privacidade das pessoas. As pessoas confiam menos em sistemas que colocam a sua privacidade, informação ou vidas em risco. Ao treinar modelos de machine learning, dependemos dos dados para produzir os melhores resultados. Ao fazê-lo, a origem dos dados e a integridade devem ser consideradas. Por exemplo, os dados foram submetidos pelo utilizador ou estavam disponíveis publicamente? Depois, ao trabalhar com os dados, é crucial desenvolver sistemas de IA que possam proteger informações confidenciais e resistir a ataques. À medida que a IA se revela mais comum, proteger a privacidade e garantir a segurança da informação pessoal e empresarial importante torna-se mais crítico e complexo. Questões de privacidade e segurança de dados requerem especial atenção para a IA porque o acesso aos dados é essencial para que os sistemas de IA façam previsões e decisões precisas e informadas sobre as pessoas. > [🎥 Clique aqui para um vídeo: segurança na IA](https://www.microsoft.com/videoplayer/embed/RE4voJF) -- Como indústria, fizemos avanços significativos em privacidade e segurança, impulsionados significativamente por regulamentações como o RGPD (Regulamento Geral de Proteção de Dados). -- No entanto, com os sistemas de IA, devemos reconhecer a tensão entre a necessidade de mais dados pessoais para tornar os sistemas mais personalizados e eficazes – e a privacidade. -- Assim como com o nascimento de computadores conectados à internet, também estamos a assistir a um grande aumento no número de problemas de segurança relacionados com a IA. -- Ao mesmo tempo, vimos a IA ser usada para melhorar a segurança. Por exemplo, a maioria dos scanners antivírus modernos é alimentada por heurísticas de IA. -- Precisamos garantir que os nossos processos de ciência de dados se harmonizem com as práticas mais recentes de privacidade e segurança. +- Como indústria, fizemos avanços significativos em Privacidade & segurança, impulsionados significativamente por regulamentos como o GDPR (Regulamento Geral de Proteção de Dados). +- Contudo, com sistemas de IA, devemos reconhecer a tensão entre a necessidade de mais dados pessoais para tornar os sistemas mais pessoais e eficazes – e a privacidade. +- Tal como com o nascimento dos computadores ligados à internet, estamos a ver também um grande aumento no número de problemas de segurança relacionados com a IA. +- Ao mesmo tempo, temos visto a IA a ser usada para melhorar a segurança. Por exemplo, a maioria dos scanners antivírus modernos hoje é guiada por heurísticas de IA. +- Precisamos garantir que os nossos processos de Ciência de Dados se misturam harmoniosamente com as práticas mais recentes de privacidade e segurança. -### Transparência -Os sistemas de IA devem ser compreensíveis. Uma parte crucial da transparência é explicar o comportamento dos sistemas de IA e os seus componentes. Melhorar a compreensão dos sistemas de IA exige que as partes interessadas compreendam como e por que funcionam, para que possam identificar potenciais problemas de desempenho, preocupações com segurança e privacidade, preconceitos, práticas de exclusão ou resultados indesejados. Também acreditamos que aqueles que usam sistemas de IA devem ser honestos e claros sobre quando, por que e como escolhem implementá-los, bem como as limitações dos sistemas que utilizam. Por exemplo, se um banco usa um sistema de IA para apoiar as suas decisões de concessão de crédito, é importante examinar os resultados e entender quais dados influenciam as recomendações do sistema. Os governos estão a começar a regulamentar a IA em vários setores, por isso, cientistas de dados e organizações devem explicar se um sistema de IA atende aos requisitos regulamentares, especialmente quando há um resultado indesejável. +### Transparência +Os sistemas de IA devem ser compreensíveis. Uma parte crucial da transparência é explicar o comportamento dos sistemas de IA e dos seus componentes. Melhorar a compreensão dos sistemas de IA requer que as partes interessadas percebam como e por que funcionam, para poderem identificar potenciais problemas de desempenho, preocupações de segurança e privacidade, preconceitos, práticas exclusivas ou resultados indesejados. Também acreditamos que quem usa sistemas de IA deve ser honesto e transparente sobre quando, porquê e como decide implementá-los, bem como sobre as limitações dos sistemas utilizados. Por exemplo, se um banco usa um sistema de IA para suportar as suas decisões de crédito ao consumidor, é importante examinar os resultados e perceber quais os dados que influenciam as recomendações do sistema. Os governos estão a começar a regular a IA em várias indústrias, pelo que os cientistas de dados e organizações devem explicar se um sistema de IA cumpre os requisitos regulamentares, especialmente quando ocorre um resultado indesejado. > [🎥 Clique aqui para um vídeo: transparência na IA](https://www.microsoft.com/videoplayer/embed/RE4voJF) -- Como os sistemas de IA são tão complexos, é difícil entender como funcionam e interpretar os resultados. -- Essa falta de compreensão afeta a forma como esses sistemas são geridos, operacionalizados e documentados. -- Mais importante ainda, essa falta de compreensão afeta as decisões tomadas com base nos resultados produzidos por esses sistemas. +- Porque os sistemas de IA são tão complexos, é difícil compreender como funcionam e interpretar os resultados. +- Esta falta de compreensão afeta a forma como esses sistemas são geridos, operacionalizados e documentados. +- Esta falta de compreensão, mais importante, afeta as decisões tomadas com base nos resultados que esses sistemas produzem. -### Responsabilidade +### Responsabilização + +As pessoas que desenham e implementam sistemas de IA devem ser responsáveis por como os seus sistemas operam. A necessidade de responsabilização é particularmente crucial com tecnologias de uso sensível como o reconhecimento facial. Recentemente, tem havido uma crescente procura pela tecnologia de reconhecimento facial, especialmente por parte de organizações de aplicação da lei que veem o potencial da tecnologia em usos como encontrar crianças desaparecidas. No entanto, essas tecnologias podem ser potencialmente usadas por um governo para pôr em risco as liberdades fundamentais dos seus cidadãos, por exemplo, permitindo vigilância contínua de indivíduos específicos. Por isso, os cientistas de dados e organizações precisam de ser responsáveis pelo impacto do seu sistema de IA sobre indivíduos ou a sociedade. -As pessoas que projetam e implementam sistemas de IA devem ser responsáveis pelo funcionamento dos seus sistemas. A necessidade de responsabilidade é particularmente crucial com tecnologias sensíveis, como o reconhecimento facial. Recentemente, tem havido uma crescente procura por tecnologia de reconhecimento facial, especialmente por parte de organizações de aplicação da lei que veem o potencial da tecnologia em usos como encontrar crianças desaparecidas. No entanto, essas tecnologias podem ser usadas por um governo para colocar em risco as liberdades fundamentais dos seus cidadãos, por exemplo, ao permitir a vigilância contínua de indivíduos específicos. Por isso, cientistas de dados e organizações precisam ser responsáveis pelo impacto dos seus sistemas de IA em indivíduos ou na sociedade. +[![Investigador principal em IA alerta para vigilância em massa através do reconhecimento facial](../../../../translated_images/pt-PT/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Abordagem da Microsoft à IA responsável") -[![Investigador líder em IA alerta para vigilância em massa através do reconhecimento facial](../../../../1-Introduction/3-fairness/images/accountability.png)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Abordagem da Microsoft para IA Responsável") +> 🎥 Clique na imagem acima para um vídeo: Avisos sobre vigilância em massa através do reconhecimento facial -> 🎥 Clique na imagem acima para assistir ao vídeo: Alertas sobre Vigilância em Massa através do Reconhecimento Facial +Em última análise, uma das maiores questões para a nossa geração, como a primeira geração que está a trazer a IA para a sociedade, é como garantir que os computadores permanecerão responsáveis perante as pessoas e como garantir que as pessoas que desenham computadores permanecem responsáveis perante todos os outros. -Em última análise, uma das maiores questões para a nossa geração, como a primeira geração a trazer a IA para a sociedade, é como garantir que os computadores permaneçam responsáveis perante as pessoas e como garantir que as pessoas que projetam computadores sejam responsáveis perante todos os outros. +## Avaliação do impacto -## Avaliação de impacto +Antes de treinar um modelo de machine learning, é importante realizar uma avaliação de impacto para entender o propósito do sistema de IA; qual é o uso pretendido; onde será implementado; e quem interagirá com o sistema. Isto é útil para revisores ou testadores avaliarem o sistema e saberem que fatores considerar ao identificar riscos potenciais e consequências esperadas. -Antes de treinar um modelo de machine learning, é importante realizar uma avaliação de impacto para entender o propósito do sistema de IA; qual é o uso pretendido; onde será implementado; e quem interagirá com o sistema. Estas avaliações são úteis para os revisores ou testadores avaliarem o sistema e saberem quais fatores considerar ao identificar potenciais riscos e consequências esperadas. +As seguintes são áreas de foco ao conduzir uma avaliação de impacto: -As seguintes áreas devem ser focadas ao realizar uma avaliação de impacto: +* **Impacto adverso sobre indivíduos**. Estar ciente de quaisquer restrições ou requisitos, uso não suportado ou quaisquer limitações conhecidas que prejudiquem o desempenho do sistema é vital para garantir que o sistema não seja usado de forma a causar dano às pessoas. +* **Requisitos de dados**. Compreender como e onde o sistema usará dados permite aos revisores explorar quaisquer requisitos de dados que deva ter em conta (exemplos: regulamentos GDPR ou HIPAA). Além disso, analisar se a fonte ou quantidade de dados é substancial para o treino. +* **Resumo do impacto**. Reunir uma lista de potenciais danos que podem surgir do uso do sistema. Ao longo do ciclo de vida da ML, rever se os problemas identificados são mitigados ou resolvidos. +* **Objetivos aplicáveis** para cada um dos seis princípios centrais. Avaliar se os objetivos de cada um dos princípios são cumpridos e se existem lacunas. -* **Impacto adverso nos indivíduos**. Estar ciente de quaisquer restrições ou requisitos, usos não suportados ou quaisquer limitações conhecidas que prejudiquem o desempenho do sistema é vital para garantir que o sistema não seja usado de forma a causar danos aos indivíduos. -* **Requisitos de dados**. Compreender como e onde o sistema usará os dados permite que os revisores explorem quaisquer requisitos de dados que precisem de ser considerados (por exemplo, regulamentações de dados como RGPD ou HIPAA). Além disso, examine se a origem ou a quantidade de dados é substancial para o treino. -* **Resumo do impacto**. Reúna uma lista de potenciais danos que possam surgir do uso do sistema. Ao longo do ciclo de vida do ML, reveja se os problemas identificados foram mitigados ou resolvidos. -* **Objetivos aplicáveis** para cada um dos seis princípios fundamentais. Avalie se os objetivos de cada princípio foram cumpridos e se existem lacunas. ## Depuração com IA responsável -Semelhante à depuração de uma aplicação de software, a depuração de um sistema de IA é um processo necessário para identificar e resolver problemas no sistema. Existem muitos fatores que podem afetar o desempenho de um modelo ou a sua responsabilidade. A maioria das métricas tradicionais de desempenho de modelos são agregados quantitativos do desempenho do modelo, o que não é suficiente para analisar como um modelo viola os princípios de IA responsável. Além disso, um modelo de machine learning é uma "caixa preta", o que dificulta entender o que motiva os seus resultados ou fornecer explicações quando comete um erro. Mais tarde neste curso, aprenderemos a usar o painel de IA Responsável para ajudar a depurar sistemas de IA. O painel fornece uma ferramenta holística para cientistas de dados e desenvolvedores de IA realizarem: +Tal como depurar uma aplicação de software, depurar um sistema de IA é um processo necessário de identificar e resolver problemas no sistema. Existem muitos fatores que podem fazer com que um modelo não funcione conforme o esperado ou responsável. A maioria das métricas tradicionais de desempenho do modelo são agregados quantitativos do desempenho do modelo, que não são suficientes para analisar como um modelo viola os princípios de IA responsável. Além disso, um modelo de machine learning é uma caixa negra, o que dificulta perceber o que conduz ao seu resultado ou fornecer explicações quando comete um erro. Mais adiante neste curso, aprenderemos como usar o dashboard de IA responsável para ajudar a depurar sistemas de IA. O dashboard oferece uma ferramenta holística para cientistas de dados e programadores de IA realizarem: -* **Análise de erros**. Para identificar a distribuição de erros do modelo que pode afetar a equidade ou fiabilidade do sistema. -* **Visão geral do modelo**. Para descobrir onde existem disparidades no desempenho do modelo em diferentes coortes de dados. -* **Análise de dados**. Para compreender a distribuição dos dados e identificar potenciais preconceitos nos dados que possam levar a problemas de equidade, inclusividade e fiabilidade. -* **Interpretabilidade do modelo**. Para entender o que afeta ou influencia as previsões do modelo. Isso ajuda a explicar o comportamento do modelo, o que é importante para transparência e responsabilidade. +* **Análise de erros**. Para identificar a distribuição de erros do modelo que pode afetar a justiça ou fiabilidade do sistema. +* **Visão geral do modelo**. Para descobrir onde há disparidades no desempenho do modelo através de grupos de dados. +* **Análise de dados**. Para entender a distribuição dos dados e identificar qualquer possível viés nos dados que possa levar a problemas de justiça, inclusividade e fiabilidade. +* **Interpretabilidade do modelo**. Para compreender o que afeta ou influencia as previsões do modelo. Isso ajuda a explicar o comportamento do modelo, importante para transparência e responsabilidade. -## 🚀 Desafio -Para evitar que danos sejam introduzidos desde o início, devemos: +## 🚀 Desafio + +Para prevenir que danos sejam introduzidos em primeiro lugar, devemos: -- ter diversidade de origens e perspetivas entre as pessoas que trabalham nos sistemas +- ter uma diversidade de origens e perspetivas entre as pessoas que trabalham nos sistemas - investir em conjuntos de dados que reflitam a diversidade da nossa sociedade -- desenvolver melhores métodos ao longo do ciclo de vida do machine learning para detetar e corrigir problemas de IA responsável quando eles ocorrerem +- desenvolver melhores métodos ao longo do ciclo de vida do machine learning para detetar e corrigir IA responsável quando esta ocorrer -Pense em cenários da vida real onde a falta de confiança num modelo é evidente na construção e utilização do modelo. O que mais deveríamos considerar? +Pense em cenários da vida real onde a falta de confiança num modelo é evidente na construção e uso do modelo. O que mais deveríamos considerar? ## [Questionário pós-aula](https://ff-quizzes.netlify.app/en/ml/) -## Revisão e Estudo Individual +## Revisão & Estudo autónomo + -Nesta lição, aprendeu alguns conceitos básicos sobre equidade e falta de equidade no machine learning. -Assista a este workshop para aprofundar os tópicos: +Nesta lição, aprendeu alguns conceitos básicos sobre justiça e injustiça no machine learning. + +Veja este workshop para aprofundar os temas: -- Em busca de IA responsável: Aplicando princípios na prática por Besmira Nushi, Mehrnoosh Sameki e Amit Sharma +- Na busca por uma IA responsável: Aplicar princípios na prática por Besmira Nushi, Mehrnoosh Sameki e Amit Sharma -[![Responsible AI Toolbox: Uma framework de código aberto para construir IA responsável](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: Uma framework de código aberto para construir IA responsável") +[![Responsible AI Toolbox: An open-source framework for building responsible AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") -> 🎥 Clique na imagem acima para assistir ao vídeo: RAI Toolbox: Uma framework de código aberto para construir IA responsável por Besmira Nushi, Mehrnoosh Sameki e Amit Sharma +> 🎥 Clique na imagem acima para um vídeo: RAI Toolbox: Um framework open-source para construir IA responsável por Besmira Nushi, Mehrnoosh Sameki, e Amit Sharma -Além disso, leia: +Também leia: -- Centro de recursos de IA responsável da Microsoft: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) +- Centro de recursos de RAI da Microsoft: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) -- Grupo de pesquisa FATE da Microsoft: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/) +- Grupo de investigação FATE da Microsoft: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/) -RAI Toolbox: +RAI Toolbox: - [Repositório GitHub do Responsible AI Toolbox](https://github.com/microsoft/responsible-ai-toolbox) -Leia sobre as ferramentas do Azure Machine Learning para garantir equidade: +Leia sobre as ferramentas do Azure Machine Learning para garantir a justiça: -- [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) ## Tarefa @@ -157,5 +161,7 @@ Leia sobre as ferramentas do Azure Machine Learning para garantir equidade: --- -**Aviso Legal**: -Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original no seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se uma tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas resultantes do uso desta tradução. \ No newline at end of file + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução automática [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos pela precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se tradução profissional humana. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas resultantes da utilização desta tradução. + \ No newline at end of file diff --git a/translations/pt-PT/2-Regression/1-Tools/README.md b/translations/pt-PT/2-Regression/1-Tools/README.md index 51fff1e84..e3abb8b36 100644 --- a/translations/pt-PT/2-Regression/1-Tools/README.md +++ b/translations/pt-PT/2-Regression/1-Tools/README.md @@ -1,6 +1,6 @@ -# Introdução ao Python e Scikit-learn para modelos de regressão +# Comece com Python e Scikit-learn para modelos de regressão -![Resumo de regressões em um sketchnote](../../../../sketchnotes/ml-regression.png) +![Sumário das regressões num sketchnote](../../../../translated_images/pt-PT/ml-regression.4e4f70e3b3ed446e.webp) > Sketchnote por [Tomomi Imura](https://www.twitter.com/girlie_mac) @@ -10,111 +10,112 @@ ## Introdução -Nestes quatro módulos, irá aprender a construir modelos de regressão. Vamos discutir brevemente para que servem. Mas antes de começar, certifique-se de que tem as ferramentas certas para iniciar o processo! +Nestes quatro lições, você vai descobrir como construir modelos de regressão. Falaremos em breve para que servem estes modelos. Mas antes de fazer qualquer coisa, certifique-se de que tem as ferramentas certas instaladas para começar o processo! -Nesta lição, irá aprender a: +Nesta lição, vai aprender a: - Configurar o seu computador para tarefas locais de machine learning. -- Trabalhar com Jupyter notebooks. -- Utilizar Scikit-learn, incluindo a instalação. +- Trabalhar com Jupyter Notebooks. +- Usar Scikit-learn, incluindo a instalação. - Explorar regressão linear com um exercício prático. ## Instalações e configurações -[![ML para iniciantes - Configure as suas ferramentas para criar modelos de Machine Learning](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML para iniciantes - Configure as suas ferramentas para criar modelos de Machine Learning") +[![ML para iniciantes - Configure as suas ferramentas para construir modelos de Machine Learning](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML para iniciantes - Configure as suas ferramentas para construir modelos de Machine Learning") -> 🎥 Clique na imagem acima para um vídeo curto sobre como configurar o seu computador para ML. +> 🎥 Clique na imagem acima para um vídeo curto a mostrar como configurar o seu computador para ML. -1. **Instale o Python**. Certifique-se de que o [Python](https://www.python.org/downloads/) está instalado no seu computador. Irá utilizar Python para muitas tarefas de ciência de dados e machine learning. A maioria dos sistemas já inclui uma instalação do Python. Existem também [Pacotes de Codificação Python](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) úteis para facilitar a configuração para alguns utilizadores. +1. **Instale o Python**. Certifique-se que o [Python](https://www.python.org/downloads/) está instalado no seu computador. Você vai usar Python para muitas tarefas de ciência de dados e machine learning. A maioria dos sistemas informáticos já inclui uma instalação de Python. Existem [Pacotes de Código Python](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) úteis disponíveis, para facilitar a configuração a alguns utilizadores. - No entanto, algumas utilizações do Python requerem uma versão específica do software. Por isso, é útil trabalhar num [ambiente virtual](https://docs.python.org/3/library/venv.html). + Alguns usos do Python, no entanto, requerem uma versão do software, enquanto outros requerem uma versão diferente. Por isso, é útil trabalhar num [ambiente virtual](https://docs.python.org/3/library/venv.html). -2. **Instale o Visual Studio Code**. Certifique-se de que tem o Visual Studio Code instalado no seu computador. Siga estas instruções para [instalar o Visual Studio Code](https://code.visualstudio.com/) para uma instalação básica. Vai utilizar Python no Visual Studio Code neste curso, por isso pode ser útil rever como [configurar o Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) para desenvolvimento em Python. +2. **Instale o Visual Studio Code**. Certifique-se que tem o Visual Studio Code instalado no seu computador. Siga estas instruções para [instalar o Visual Studio Code](https://code.visualstudio.com/) para uma instalação básica. Vai usar Python no Visual Studio Code neste curso, por isso pode querer rever como [configurar o Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) para desenvolvimento Python. - > Familiarize-se com Python ao explorar esta coleção de [módulos de aprendizagem](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) + > Fique confortável com Python trabalhando nestas coleções de [módulos Learn](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) > > [![Configurar Python com Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Configurar Python com Visual Studio Code") > - > 🎥 Clique na imagem acima para um vídeo: usar Python no VS Code. + > 🎥 Clique na imagem acima para um vídeo: usar Python dentro do VS Code. -3. **Instale o Scikit-learn**, seguindo [estas instruções](https://scikit-learn.org/stable/install.html). Como precisa de garantir que utiliza Python 3, é recomendado que use um ambiente virtual. Note que, se estiver a instalar esta biblioteca num Mac com M1, existem instruções específicas na página acima. +3. **Instale o Scikit-learn**, seguindo [estas instruções](https://scikit-learn.org/stable/install.html). Como precisa garantir que usa o Python 3, é recomendado usar um ambiente virtual. Nota, se estiver a instalar esta biblioteca num Mac M1, há instruções especiais na página indicada acima. -4. **Instale o Jupyter Notebook**. Será necessário [instalar o pacote Jupyter](https://pypi.org/project/jupyter/). +1. **Instale o Jupyter Notebook**. Vai precisar de [instalar o pacote Jupyter](https://pypi.org/project/jupyter/). -## O seu ambiente de desenvolvimento para ML +## O seu ambiente de criação ML -Irá utilizar **notebooks** para desenvolver o seu código Python e criar modelos de machine learning. Este tipo de ficheiro é uma ferramenta comum para cientistas de dados e pode ser identificado pela extensão `.ipynb`. +Vai usar **notebooks** para desenvolver o seu código Python e criar modelos de machine learning. Este tipo de ficheiro é uma ferramenta comum para cientistas de dados, e podem ser identificados pela extensão `.ipynb`. -Os notebooks são um ambiente interativo que permite ao programador tanto codificar como adicionar notas e escrever documentação em torno do código, o que é bastante útil para projetos experimentais ou de pesquisa. +Os notebooks são um ambiente interativo que permite ao programador tanto codificar como adicionar notas e escrever documentação em torno do código, o que é bastante útil para projetos experimentais ou orientados para investigação. -[![ML para iniciantes - Configurar Jupyter Notebooks para começar a criar modelos de regressão](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML para iniciantes - Configurar Jupyter Notebooks para começar a criar modelos de regressão") +[![ML para iniciantes - Configure Jupyter Notebooks para começar a construir modelos de regressão](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML para iniciantes - Configure Jupyter Notebooks para começar a construir modelos de regressão") -> 🎥 Clique na imagem acima para um vídeo curto sobre este exercício. +> 🎥 Clique na imagem acima para um vídeo curto a mostrar este exercício. ### Exercício - trabalhar com um notebook -Nesta pasta, encontrará o ficheiro _notebook.ipynb_. +Nesta pasta, vai encontrar o ficheiro _notebook.ipynb_. -1. Abra o _notebook.ipynb_ no Visual Studio Code. +1. Abra _notebook.ipynb_ no Visual Studio Code. - Um servidor Jupyter será iniciado com Python 3+. Encontrará áreas do notebook que podem ser `executadas`, ou seja, blocos de código. Pode executar um bloco de código selecionando o ícone que parece um botão de reprodução. + Um servidor Jupyter vai arrancar com Python 3+ iniciado. Vai encontrar áreas do notebook que podem ser `executadas`, blocos de código. Pode executar um bloco de código selecionando o ícone que parece um botão de play. -2. Selecione o ícone `md` e adicione um pouco de markdown com o seguinte texto: **# Bem-vindo ao seu notebook**. +1. Selecione o ícone `md` e adicione um pouco de markdown, e o seguinte texto **# Bem-vindo ao seu notebook**. - Em seguida, adicione algum código Python. + A seguir, adicione algum código Python. -3. Escreva **print('hello notebook')** no bloco de código. -4. Selecione a seta para executar o código. +1. Escreva **print('hello notebook')** no bloco de código. +1. Selecione a seta para executar o código. - Deverá ver a seguinte saída: + Deve ver a declaração impressa: ```output hello notebook ``` -![VS Code com um notebook aberto](../../../../2-Regression/1-Tools/images/notebook.jpg) +![VS Code com um notebook aberto](../../../../translated_images/pt-PT/notebook.4a3ee31f396b8832.webp) Pode intercalar o seu código com comentários para auto-documentar o notebook. -✅ Pense por um momento como o ambiente de trabalho de um programador web é diferente do de um cientista de dados. +✅ Pense por um minuto na diferença entre o ambiente de trabalho de um programador web e de um cientista de dados. -## Começar com Scikit-learn +## A funcionar com Scikit-learn -Agora que o Python está configurado no seu ambiente local e está confortável com Jupyter notebooks, vamos ficar igualmente confortáveis com o Scikit-learn (pronuncia-se `sci` como em `science`). O Scikit-learn fornece uma [API extensa](https://scikit-learn.org/stable/modules/classes.html#api-ref) para ajudá-lo a realizar tarefas de ML. +Agora que o Python está configurado no seu ambiente local, e que está confortável com Jupyter Notebooks, vamos ficar igualmente confortáveis com o Scikit-learn (pronuncie `sci` como em `science`). O Scikit-learn fornece uma [API extensa](https://scikit-learn.org/stable/modules/classes.html#api-ref) para ajudar a realizar tarefas de ML. -De acordo com o [site oficial](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn é uma biblioteca de machine learning de código aberto que suporta aprendizagem supervisionada e não supervisionada. Também fornece várias ferramentas para ajuste de modelos, pré-processamento de dados, seleção e avaliação de modelos, entre outras utilidades." +Segundo o seu [website](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn é uma biblioteca open source de machine learning que suporta aprendizado supervisionado e não supervisionado. Fornece também várias ferramentas para ajuste de modelos, pré-processamento de dados, seleção e avaliação de modelos, e muitas outras utilidades." -Neste curso, irá utilizar Scikit-learn e outras ferramentas para construir modelos de machine learning para realizar o que chamamos de tarefas de 'machine learning tradicional'. Evitamos deliberadamente redes neurais e deep learning, pois estes tópicos serão abordados no nosso futuro currículo 'AI for Beginners'. +Neste curso, vai usar Scikit-learn e outras ferramentas para construir modelos de machine learning para realizar o que chamamos tarefas de 'machine learning tradicional'. Evitámos de propósito redes neurais e deep learning, pois são melhor abordados no nosso próximo currículo 'AI para Iniciantes'. -O Scikit-learn torna simples a construção e avaliação de modelos para uso. Ele é focado principalmente no uso de dados numéricos e contém vários conjuntos de dados prontos para uso como ferramentas de aprendizagem. Também inclui modelos pré-construídos para os alunos experimentarem. Vamos explorar o processo de carregar dados pré-embalados e usar um estimador para o primeiro modelo de ML com Scikit-learn com alguns dados básicos. +O Scikit-learn torna simples construir modelos e avaliá-los para uso. Está focado principalmente no uso de dados numéricos e contém vários datasets prontos para uso como ferramentas de aprendizagem. Inclui ainda modelos pré-construídos para os estudantes experimentarem. Vamos explorar o processo de carregar dados pré-embalados e usar um estimador incorporado, primeiro modelo ML com Scikit-learn com alguns dados básicos. -## Exercício - o seu primeiro notebook com Scikit-learn +## Exercício - o seu primeiro notebook Scikit-learn -> Este tutorial foi inspirado pelo [exemplo de regressão linear](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) no site do Scikit-learn. +> Este tutorial foi inspirado no [exemplo de regressão linear](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) no site do Scikit-learn. -[![ML para iniciantes - O seu primeiro projeto de regressão linear em Python](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "ML para iniciantes - O seu primeiro projeto de regressão linear em Python") -> 🎥 Clique na imagem acima para um vídeo curto sobre este exercício. +[![ML para iniciantes - O seu Primeiro Projeto de Regressão Linear em Python](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "ML para iniciantes - O seu Primeiro Projeto de Regressão Linear em Python") -No ficheiro _notebook.ipynb_ associado a esta lição, limpe todas as células pressionando o ícone da 'lixeira'. +> 🎥 Clique na imagem acima para um vídeo curto a mostrar este exercício. -Nesta secção, irá trabalhar com um pequeno conjunto de dados sobre diabetes que está incluído no Scikit-learn para fins de aprendizagem. Imagine que queria testar um tratamento para pacientes diabéticos. Modelos de Machine Learning podem ajudá-lo a determinar quais pacientes responderiam melhor ao tratamento, com base em combinações de variáveis. Mesmo um modelo de regressão muito básico, quando visualizado, pode mostrar informações sobre variáveis que o ajudariam a organizar os seus ensaios clínicos teóricos. +No ficheiro _notebook.ipynb_ associado a esta lição, limpe todas as células clicando no ícone da 'lixeira'. -✅ Existem muitos tipos de métodos de regressão, e a escolha depende da resposta que procura. Se quiser prever a altura provável de uma pessoa com uma determinada idade, utilizaria regressão linear, pois está à procura de um **valor numérico**. Se estiver interessado em descobrir se um tipo de cozinha deve ser considerado vegan ou não, está à procura de uma **atribuição de categoria**, então utilizaria regressão logística. Aprenderá mais sobre regressão logística mais tarde. Pense um pouco sobre algumas perguntas que pode fazer aos dados e qual destes métodos seria mais apropriado. +Nesta secção, vai trabalhar com um pequeno conjunto de dados sobre diabetes que está incorporado no Scikit-learn para fins didáticos. Imagine que quer testar um tratamento para pacientes diabéticos. Modelos de Machine Learning podem ajudar a determinar quais os pacientes que responderiam melhor ao tratamento, com base em combinações de variáveis. Mesmo um modelo muito básico de regressão, quando visualizado, pode mostrar informações sobre variáveis que o ajudariam a organizar os seus ensaios clínicos teóricos. + +✅ Existem muitos tipos de métodos de regressão, e qual escolher depende da resposta que procura. Se quiser prever a altura provável de uma pessoa numa dada idade, usaria regressão linear, pois busca um **valor numérico**. Se estiver interessado em descobrir se um tipo de culinária deve ser considerado vegan ou não, está a procurar uma **atribuição de categoria**, pelo que usaria regressão logística. Vai aprender mais sobre regressão logística mais tarde. Pense um pouco em algumas perguntas que pode fazer sobre dados, e qual destes métodos seria mais apropriado. Vamos começar esta tarefa. ### Importar bibliotecas -Para esta tarefa, iremos importar algumas bibliotecas: +Para esta tarefa vamos importar algumas bibliotecas: -- **matplotlib**. É uma ferramenta útil para [criação de gráficos](https://matplotlib.org/) e será usada para criar um gráfico de linha. -- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) é uma biblioteca útil para manipulação de dados numéricos em Python. +- **matplotlib**. É uma útil [ferramenta de gráficos](https://matplotlib.org/) e vamos usá-la para criar um gráfico de linhas. +- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) é uma biblioteca útil para manipular dados numéricos em Python. - **sklearn**. Esta é a biblioteca [Scikit-learn](https://scikit-learn.org/stable/user_guide.html). Importe algumas bibliotecas para ajudar nas suas tarefas. -1. Adicione as importações escrevendo o seguinte código: +1. Adicione as importações digitando o seguinte código: ```python import matplotlib.pyplot as plt @@ -122,26 +123,26 @@ Importe algumas bibliotecas para ajudar nas suas tarefas. from sklearn import datasets, linear_model, model_selection ``` - Acima, está a importar `matplotlib`, `numpy` e está a importar `datasets`, `linear_model` e `model_selection` do `sklearn`. `model_selection` é usado para dividir os dados em conjuntos de treino e teste. + Aqui está a importar `matplotlib`, `numpy` e está a importar `datasets`, `linear_model` e `model_selection` do `sklearn`. `model_selection` é usado para dividir os dados em conjuntos de treino e teste. -### O conjunto de dados sobre diabetes +### O conjunto de dados de diabetes -O [conjunto de dados sobre diabetes](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) incluído possui 442 amostras de dados sobre diabetes, com 10 variáveis de características, algumas das quais incluem: +O [conjunto de dados diabetes](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) incluído tem 442 amostras de dados sobre diabetes, com 10 variáveis características, algumas das quais incluem: -- age: idade em anos +- idade: idade em anos - bmi: índice de massa corporal - bp: pressão arterial média -- s1 tc: T-Cells (um tipo de glóbulos brancos) +- s1 tc: células T (um tipo de glóbulos brancos) -✅ Este conjunto de dados inclui o conceito de 'sexo' como uma variável de característica importante para a pesquisa sobre diabetes. Muitos conjuntos de dados médicos incluem este tipo de classificação binária. Pense um pouco sobre como categorizações como esta podem excluir certas partes da população de tratamentos. +✅ Este conjunto de dados inclui o conceito de 'sexo' como uma variável característica importante para pesquisas sobre diabetes. Muitos conjuntos de dados médicos incluem este tipo de classificação binária. Pense um pouco em como categorias como esta podem excluir certas partes da população de tratamentos. Agora, carregue os dados X e y. -> 🎓 Lembre-se, isto é aprendizagem supervisionada, e precisamos de um alvo 'y' nomeado. +> 🎓 Lembre-se, este é aprendizado supervisionado, e precisamos de um alvo nomeado 'y'. -Numa nova célula de código, carregue o conjunto de dados sobre diabetes chamando `load_diabetes()`. O parâmetro `return_X_y=True` indica que `X` será uma matriz de dados e `y` será o alvo da regressão. +Numa nova célula de código, carregue o conjunto de dados diabetes chamando `load_diabetes()`. A entrada `return_X_y=True` indica que `X` será uma matriz de dados, e `y` será o alvo de regressão. -1. Adicione alguns comandos `print` para mostrar a forma da matriz de dados e o seu primeiro elemento: +1. Acrescente alguns comandos print para mostrar a forma da matriz de dados e o seu primeiro elemento: ```python X, y = datasets.load_diabetes(return_X_y=True) @@ -149,9 +150,9 @@ Numa nova célula de código, carregue o conjunto de dados sobre diabetes chaman print(X[0]) ``` - O que está a receber como resposta é uma tupla. O que está a fazer é atribuir os dois primeiros valores da tupla a `X` e `y`, respetivamente. Saiba mais [sobre tuplas](https://wikipedia.org/wiki/Tuple). + O que está a obter como resposta é uma tupla. O que está a fazer é atribuir os dois primeiros valores da tupla a `X` e `y` respetivamente. Saiba mais [sobre tuplas](https://wikipedia.org/wiki/Tuple). - Pode ver que estes dados têm 442 itens organizados em arrays de 10 elementos: + Pode ver que este conjunto tem 442 itens organizados em arrays de 10 elementos: ```text (442, 10) @@ -159,39 +160,39 @@ Numa nova célula de código, carregue o conjunto de dados sobre diabetes chaman -0.04340085 -0.00259226 0.01990842 -0.01764613] ``` - ✅ Pense um pouco sobre a relação entre os dados e o alvo da regressão. A regressão linear prevê relações entre a característica X e a variável alvo y. Consegue encontrar o [alvo](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) para o conjunto de dados sobre diabetes na documentação? O que este conjunto de dados está a demonstrar, dado o alvo? + ✅ Pense um pouco na relação entre os dados e o alvo da regressão. A regressão linear prevê relações entre a característica X e a variável alvo y. Consegue encontrar o [alvo](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) para o conjunto de dados diabetes na documentação? O que este conjunto demonstra, dado esse alvo? -2. Em seguida, selecione uma parte deste conjunto de dados para plotar, escolhendo a 3ª coluna do conjunto de dados. Pode fazer isso utilizando o operador `:` para selecionar todas as linhas e, em seguida, selecionando a 3ª coluna usando o índice (2). Também pode remodelar os dados para serem um array 2D - conforme necessário para plotagem - utilizando `reshape(n_rows, n_columns)`. Se um dos parâmetros for -1, a dimensão correspondente será calculada automaticamente. +2. A seguir, selecione uma parte deste conjunto para representar num gráfico, escolhendo a 3ª coluna do dataset. Pode fazer isto usando o operador `:` para selecionar todas as linhas, e depois a 3ª coluna usando o índice (2). Pode também mudar a forma dos dados para um array 2D - como exigido para graficar - usando `reshape(n_linhas, n_colunas)`. Se um dos parâmetros for -1, a dimensão correspondente é calculada automaticamente. ```python X = X[:, 2] X = X.reshape((-1,1)) ``` - ✅ A qualquer momento, imprima os dados para verificar a sua forma. + ✅ Em qualquer altura, imprima os dados para verificar a sua forma. -3. Agora que tem os dados prontos para serem plotados, pode verificar se uma máquina pode ajudar a determinar uma divisão lógica entre os números neste conjunto de dados. Para isso, precisa de dividir tanto os dados (X) quanto o alvo (y) em conjuntos de teste e treino. O Scikit-learn tem uma forma simples de fazer isso; pode dividir os seus dados de teste num ponto específico. +3. Agora que tem dados prontos para graficar, pode ver se uma máquina pode ajudar a determinar uma divisão lógica entre os números neste conjunto. Para isso, precisa dividir os dados (X) e o alvo (y) em conjuntos de treino e teste. Scikit-learn tem uma forma simples de fazer isto; pode dividir os seus dados de teste num dado ponto. ```python X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33) ``` -4. Agora está pronto para treinar o seu modelo! Carregue o modelo de regressão linear e treine-o com os seus conjuntos de treino X e y utilizando `model.fit()`: +4. Agora está pronto para treinar o seu modelo! Carregue o modelo de regressão linear e treine-o com os seus conjuntos X e y de treino usando `model.fit()`: ```python model = linear_model.LinearRegression() model.fit(X_train, y_train) ``` - ✅ `model.fit()` é uma função que verá em muitas bibliotecas de ML, como TensorFlow. + ✅ `model.fit()` é uma função que verá em muitas bibliotecas ML como TensorFlow -5. Em seguida, crie uma previsão utilizando os dados de teste, com a função `predict()`. Isto será usado para desenhar a linha entre os grupos de dados. +5. Depois, crie uma previsão usando os dados de teste, usando a função `predict()`. Isto será usado para traçar a linha entre grupos de dados ```python y_pred = model.predict(X_test) ``` -6. Agora é hora de mostrar os dados num gráfico. O Matplotlib é uma ferramenta muito útil para esta tarefa. Crie um scatterplot de todos os dados de teste X e y, e utilize a previsão para desenhar uma linha no local mais apropriado, entre os agrupamentos de dados do modelo. +6. Agora é hora de mostrar os dados num gráfico. Matplotlib é uma ferramenta muito útil para esta tarefa. Crie um scatterplot com todos os dados X e y do teste, e use a previsão para desenhar uma linha na posição mais adequada, entre os grupos de dados do modelo. ```python plt.scatter(X_test, y_test, color='black') @@ -202,29 +203,32 @@ Numa nova célula de código, carregue o conjunto de dados sobre diabetes chaman plt.show() ``` - ![um scatterplot mostrando pontos de dados sobre diabetes](../../../../2-Regression/1-Tools/images/scatterplot.png) -✅ Pensa um pouco sobre o que está a acontecer aqui. Uma linha reta está a passar por muitos pequenos pontos de dados, mas o que está realmente a fazer? Consegues perceber como deverias ser capaz de usar esta linha para prever onde um novo ponto de dados, ainda não visto, deveria encaixar em relação ao eixo y do gráfico? Tenta expressar em palavras a utilidade prática deste modelo. + ![um scatterplot a mostrar pontos de dados sobre diabetes](../../../../translated_images/pt-PT/scatterplot.ad8b356bcbb33be6.webp) + -Parabéns, construíste o teu primeiro modelo de regressão linear, criaste uma previsão com ele e exibiste-a num gráfico! + ✅ Pense um pouco sobre o que está a acontecer aqui. Uma linha reta está a passar por muitos pequenos pontos de dados, mas o que está ela a fazer exatamente? Consegue ver como deve ser capaz de usar esta linha para prever onde um novo ponto de dados, nunca antes visto, deve encaixar em relação ao eixo y do gráfico? Tente pôr em palavras a utilidade prática deste modelo. + +Parabéns, construiu o seu primeiro modelo de regressão linear, criou uma previsão com ele e apresentou-a num gráfico! --- ## 🚀Desafio -Representa graficamente uma variável diferente deste conjunto de dados. Dica: edita esta linha: `X = X[:,2]`. Dado o objetivo deste conjunto de dados, o que consegues descobrir sobre a progressão da diabetes como doença? - +Plote uma variável diferente deste conjunto de dados. Dica: edite esta linha: `X = X[:,2]`. Dado o alvo deste conjunto de dados, o que consegue descobrir sobre a progressão da diabetes como doença? ## [Questionário pós-aula](https://ff-quizzes.netlify.app/en/ml/) -## Revisão & Estudo Individual +## Revisão & Autoestudo -Neste tutorial, trabalhaste com regressão linear simples, em vez de regressão univariada ou múltipla. Lê um pouco sobre as diferenças entre estes métodos ou dá uma olhada [neste vídeo](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef). +Neste tutorial, trabalhou com regressão linear simples, em vez de regressão linear univariada ou múltipla. Leia um pouco sobre as diferenças entre estes métodos, ou veja [este vídeo](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) -Lê mais sobre o conceito de regressão e reflete sobre que tipo de perguntas podem ser respondidas com esta técnica. Faz este [tutorial](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) para aprofundar o teu entendimento. +Leia mais sobre o conceito de regressão e pense que tipos de questões podem ser respondidas por esta técnica. Faça este [tutorial](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) para aprofundar o seu entendimento. -## Tarefa +## Exercício [Um conjunto de dados diferente](assignment.md) --- -**Aviso Legal**: -Este documento foi traduzido utilizando o serviço de tradução automática [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original no seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se uma tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas resultantes do uso desta tradução. \ No newline at end of file + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução automática [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos pela precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se tradução profissional humana. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas resultantes da utilização desta tradução. + \ No newline at end of file diff --git a/translations/pt-PT/2-Regression/2-Data/README.md b/translations/pt-PT/2-Regression/2-Data/README.md index 1c9a72853..1e630ae3b 100644 --- a/translations/pt-PT/2-Regression/2-Data/README.md +++ b/translations/pt-PT/2-Regression/2-Data/README.md @@ -1,6 +1,6 @@ # Construir um modelo de regressão usando Scikit-learn: preparar e visualizar dados -![Infográfico de visualização de dados](../../../../2-Regression/2-Data/images/data-visualization.png) +![Infográfico de visualização de dados](../../../../translated_images/pt-PT/data-visualization.54e56dded7c1a804.webp) Infográfico por [Dasani Madipalli](https://twitter.com/dasani_decoded) @@ -10,53 +10,53 @@ Infográfico por [Dasani Madipalli](https://twitter.com/dasani_decoded) ## Introdução -Agora que já está equipado com as ferramentas necessárias para começar a construir modelos de machine learning com Scikit-learn, está pronto para começar a fazer perguntas aos seus dados. Ao trabalhar com dados e aplicar soluções de ML, é muito importante saber como formular a pergunta certa para desbloquear adequadamente o potencial do seu conjunto de dados. +Agora que tem configuradas as ferramentas necessárias para começar a abordar a construção de modelos de machine learning com Scikit-learn, está pronto para começar a fazer perguntas aos seus dados. À medida que trabalha com dados e aplica soluções de ML, é muito importante compreender como fazer a pergunta certa para desbloquear corretamente o potencial do seu conjunto de dados. Nesta lição, irá aprender: -- Como preparar os seus dados para a construção de modelos. -- Como usar o Matplotlib para visualização de dados. +- Como preparar os seus dados para a construção do modelo. +- Como usar Matplotlib para visualização de dados. +- Como usar Seaborn para uma visualização de dados mais expressiva. ## Fazer a pergunta certa aos seus dados -A pergunta que precisa de responder determinará o tipo de algoritmos de ML que irá utilizar. E a qualidade da resposta que obtém dependerá muito da natureza dos seus dados. +A pergunta que precisa de responder irá determinar que tipo de algoritmos de ML irá usar. E a qualidade da resposta que obtém dependerá fortemente da natureza dos seus dados. -Veja os [dados](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) fornecidos para esta lição. Pode abrir este ficheiro .csv no VS Code. Uma rápida análise mostra imediatamente que há espaços em branco e uma mistura de dados em formato texto e numérico. Há também uma coluna estranha chamada 'Package', onde os dados são uma mistura entre 'sacks', 'bins' e outros valores. Os dados, na verdade, estão um pouco desorganizados. +Dê uma vista de olhos aos [dados](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) fornecidos para esta lição. Pode abrir este ficheiro .csv no VS Code. Uma rápida análise mostra imediatamente que existem espaços em branco e uma mistura de dados numéricos e de texto. Há também uma coluna estranha chamada 'Package' onde os dados são uma mistura entre 'sacks', 'bins' e outros valores. De facto, os dados estão um pouco confusos. -[![ML para iniciantes - Como analisar e limpar um conjunto de dados](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML para iniciantes - Como analisar e limpar um conjunto de dados") +[![ML para iniciantes - Como Analisar e Limpar um Conjunto de Dados](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML para iniciantes - Como Analisar e Limpar um Conjunto de Dados") -> 🎥 Clique na imagem acima para assistir a um vídeo curto sobre como preparar os dados para esta lição. +> 🎥 Clique na imagem acima para um vídeo curto a trabalhar a preparação dos dados para esta lição. -De facto, não é muito comum receber um conjunto de dados completamente pronto para criar um modelo de ML diretamente. Nesta lição, irá aprender como preparar um conjunto de dados bruto usando bibliotecas padrão do Python. Também aprenderá várias técnicas para visualizar os dados. +De facto, não é muito comum receber um conjunto de dados completamente pronto para usar diretamente na criação de um modelo de ML. Nesta lição, irá aprender como preparar um conjunto de dados bruto usando bibliotecas padrão do Python. Também aprenderá várias técnicas para visualizar os dados. -## Estudo de caso: 'o mercado de abóboras' +## Estudo de caso: 'o mercado da abóbora' -Nesta pasta encontrará um ficheiro .csv na pasta raiz `data` chamado [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv), que inclui 1757 linhas de dados sobre o mercado de abóboras, organizados por cidade. Estes são dados brutos extraídos dos [Relatórios Padrão dos Mercados de Culturas Especiais](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) distribuídos pelo Departamento de Agricultura dos Estados Unidos. +Nesta pasta encontrará um ficheiro .csv na pasta raiz `data` chamado [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) que inclui 1757 linhas de dados sobre o mercado das abóboras, organizados por cidade. Estes são dados brutos extraídos dos [Relatórios Padrão dos Mercados de Terminais de Culturas Especializadas](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) distribuídos pelo Departamento de Agricultura dos Estados Unidos. ### Preparar os dados -Estes dados estão em domínio público. Podem ser descarregados em vários ficheiros separados, por cidade, no site do USDA. Para evitar muitos ficheiros separados, concatenámos todos os dados das cidades num único ficheiro, portanto já _preparámos_ os dados um pouco. Agora, vamos analisar os dados mais de perto. +Estes dados estão em domínio público. Podem ser descarregados em muitos ficheiros separados, distribuídos por cidade, no site do USDA. Para evitar ficheiros separados a mais, concatenámos todos os dados das cidades num único ficheiro, assim já _preparámos_ um pouco os dados. A seguir, vamos analisar os dados mais detalhadamente. -### Os dados das abóboras - primeiras conclusões +### Dados das abóboras - primeiras conclusões -O que nota sobre estes dados? Já viu que há uma mistura de texto, números, espaços em branco e valores estranhos que precisa de interpretar. - -Que pergunta pode fazer a estes dados, usando uma técnica de regressão? Que tal "Prever o preço de uma abóbora à venda durante um determinado mês"? Olhando novamente para os dados, há algumas alterações que precisa de fazer para criar a estrutura de dados necessária para esta tarefa. +O que notou sobre estes dados? Já viu que há uma mistura de texto, números, espaços em branco e valores estranhos que precisa de compreender. +Que pergunta pode fazer acerca destes dados, usando uma técnica de Regressão? Que tal "Prever o preço de uma abóbora à venda durante um mês específico". Olhando novamente para os dados, existem algumas alterações a fazer para criar a estrutura de dados necessária para esta tarefa. ## Exercício - analisar os dados das abóboras -Vamos usar o [Pandas](https://pandas.pydata.org/) (o nome significa `Python Data Analysis`), uma ferramenta muito útil para moldar dados, para analisar e preparar estes dados das abóboras. +Vamos usar [Pandas](https://pandas.pydata.org/) (o nome significa `Python Data Analysis`), uma ferramenta muito útil para modelar dados, para analisar e preparar estes dados das abóboras. ### Primeiro, verificar datas em falta -Primeiro, precisará de tomar medidas para verificar se há datas em falta: +Primeiramente, precisa tomar medidas para verificar se existem datas em falta: -1. Converter as datas para um formato de mês (estas são datas dos EUA, então o formato é `MM/DD/YYYY`). +1. Converter as datas para um formato de mês (são datas dos EUA, então o formato é `MM/DD/YYYY`). 2. Extrair o mês para uma nova coluna. -Abra o ficheiro _notebook.ipynb_ no Visual Studio Code e importe a folha de cálculo para um novo dataframe do Pandas. +Abra o ficheiro _notebook.ipynb_ no Visual Studio Code e importe a folha de cálculo para um novo dataframe Pandas. -1. Use a função `head()` para visualizar as primeiras cinco linhas. +1. Use a função `head()` para ver as primeiras cinco linhas. ```python import pandas as pd @@ -64,17 +64,17 @@ Abra o ficheiro _notebook.ipynb_ no Visual Studio Code e importe a folha de cál pumpkins.head() ``` - ✅ Que função usaria para visualizar as últimas cinco linhas? + ✅ Que função usaria para ver as últimas cinco linhas? -1. Verifique se há dados em falta no dataframe atual: +1. Verifique se existe dados em falta no dataframe atual: ```python pumpkins.isnull().sum() ``` - Há dados em falta, mas talvez isso não seja relevante para a tarefa em questão. + Existem dados em falta, mas talvez isso não importe para a tarefa em mãos. -1. Para tornar o seu dataframe mais fácil de trabalhar, selecione apenas as colunas necessárias, usando a função `loc`, que extrai do dataframe original um grupo de linhas (passado como primeiro parâmetro) e colunas (passado como segundo parâmetro). A expressão `:` no caso abaixo significa "todas as linhas". +1. Para tornar o seu dataframe mais fácil de trabalhar, selecione apenas as colunas que precisa, usando a função `loc` que extrai do dataframe original um grupo de linhas (passado como primeiro parâmetro) e colunas (passado como segundo parâmetro). A expressão `:` no exemplo abaixo significa "todas as linhas". ```python columns_to_select = ['Package', 'Low Price', 'High Price', 'Date'] @@ -83,9 +83,9 @@ Abra o ficheiro _notebook.ipynb_ no Visual Studio Code e importe a folha de cál ### Segundo, determinar o preço médio da abóbora -Pense em como determinar o preço médio de uma abóbora num determinado mês. Que colunas escolheria para esta tarefa? Dica: precisará de 3 colunas. +Pense em como determinar o preço médio de uma abóbora num dado mês. Que colunas escolheria para esta tarefa? Dica: vai precisar de 3 colunas. -Solução: calcule a média das colunas `Low Price` e `High Price` para preencher a nova coluna Price e converta a coluna Date para mostrar apenas o mês. Felizmente, de acordo com a verificação acima, não há dados em falta para datas ou preços. +Solução: faça a média das colunas `Low Price` e `High Price` para preencher a nova coluna Price, e converta a coluna Date para mostrar apenas o mês. Felizmente, de acordo com a verificação acima, não há dados em falta para datas ou preços. 1. Para calcular a média, adicione o seguinte código: @@ -96,23 +96,23 @@ Solução: calcule a média das colunas `Low Price` e `High Price` para preenche ``` - ✅ Sinta-se à vontade para imprimir quaisquer dados que queira verificar usando `print(month)`. + ✅ Sinta-se à vontade para imprimir qualquer dado que queira verificar usando `print(month)`. -2. Agora, copie os seus dados convertidos para um novo dataframe do Pandas: +2. Agora, copie os seus dados convertidos para um dataframe Pandas novo: ```python new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price}) ``` - Ao imprimir o seu dataframe, verá um conjunto de dados limpo e organizado, no qual pode construir o seu novo modelo de regressão. + Imprimir o seu dataframe mostrará um conjunto de dados limpo e arrumado sobre o qual poderá construir o seu novo modelo de regressão. ### Mas espere! Há algo estranho aqui -Se olhar para a coluna `Package`, verá que as abóboras são vendidas em muitas configurações diferentes. Algumas são vendidas em medidas de '1 1/9 bushel', outras em '1/2 bushel', algumas por abóbora, outras por peso, e algumas em grandes caixas com larguras variadas. +Se olhar para a coluna `Package`, as abóboras são vendidas de várias formas. Algumas são vendidas em medidas de '1 1/9 bushel', outras de '1/2 bushel', algumas por abóbora, outras por libra, e algumas em caixas grandes com larguras variadas. -> Parece que as abóboras são muito difíceis de pesar de forma consistente +> Parece ser muito difícil pesar abóboras de forma consistente -Ao analisar os dados originais, é interessante notar que qualquer coisa com `Unit of Sale` igual a 'EACH' ou 'PER BIN' também tem o tipo `Package` por polegada, por bin ou 'each'. Parece que as abóboras são muito difíceis de pesar de forma consistente, então vamos filtrá-las selecionando apenas abóboras com a string 'bushel' na coluna `Package`. +Analisando os dados originais, é interessante que qualquer coisa com `Unit of Sale` igual a 'EACH' ou 'PER BIN' também tenha o tipo de `Package` por polegada, por caixa ou 'cada'. Parece realmente difícil pesar abóboras de forma consistente, por isso vamos filtrá-las selecionando apenas as abóboras com a string 'bushel' na coluna `Package`. 1. Adicione um filtro no topo do ficheiro, sob a importação inicial do .csv: @@ -120,13 +120,13 @@ Ao analisar os dados originais, é interessante notar que qualquer coisa com `Un pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)] ``` - Se imprimir os dados agora, verá que está a obter apenas cerca de 415 linhas de dados contendo abóboras por bushel. + Se imprimir os dados agora, verá que está a obter apenas cerca de 415 linhas de dados contendo abóboras vendidas por bushel. -### Mas espere! Há mais uma coisa a fazer +### Mas espere! Ainda há mais a fazer -Notou que a quantidade de bushel varia por linha? Precisa de normalizar os preços para mostrar o preço por bushel, então faça alguns cálculos para padronizá-lo. +Reparou que a quantia de bushel varia por linha? Precisa de normalizar o preço para mostrar o preço por bushel, então faça alguns cálculos para padronizar isso. -1. Adicione estas linhas após o bloco que cria o dataframe new_pumpkins: +1. Adicione estas linhas depois do bloco que cria o dataframe new_pumpkins: ```python new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9) @@ -134,37 +134,37 @@ Notou que a quantidade de bushel varia por linha? Precisa de normalizar os preç new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2) ``` -✅ De acordo com [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), o peso de um bushel depende do tipo de produto, pois é uma medida de volume. "Um bushel de tomates, por exemplo, deve pesar 56 libras... Folhas e verduras ocupam mais espaço com menos peso, então um bushel de espinafre pesa apenas 20 libras." É tudo bastante complicado! Vamos evitar fazer uma conversão de bushel para libra e, em vez disso, calcular o preço por bushel. Todo este estudo sobre bushels de abóboras, no entanto, mostra como é muito importante entender a natureza dos seus dados! +✅ Segundo [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), o peso de um bushel depende do tipo de produto, pois é uma medida de volume. "Um bushel de tomates, por exemplo, deve pesar 56 libras... Folhas e verdes ocupam mais espaço com menos peso, por isso um bushel de espinafres pesa apenas 20 libras." É tudo bastante complicado! Vamos deixar de lado a conversão de bushel para libra e, em vez disso, preço por bushel. Todo este estudo de bushels de abóboras, porém, demonstra a importância de compreender a natureza dos seus dados! -Agora, pode analisar o preço por unidade com base na medida de bushel. Se imprimir os dados mais uma vez, verá como estão padronizados. +Agora pode analisar o preço por unidade baseado na medida de bushel. Se imprimir os dados mais uma vez, verá como estão padronizados. -✅ Reparou que as abóboras vendidas por meio bushel são muito caras? Consegue descobrir porquê? Dica: abóboras pequenas são muito mais caras do que grandes, provavelmente porque há muito mais delas por bushel, dado o espaço não utilizado ocupado por uma grande abóbora oca para torta. +✅ Reparou que as abóboras vendidas por meio bushel são muito caras? Consegue perceber porquê? Dica: as abóboras pequenas são muito mais caras do que as grandes, provavelmente porque há muito mais delas por bushel, dado o espaço inutilizado ocupado por uma grande abóbora oca para torta. ## Estratégias de Visualização -Parte do papel do cientista de dados é demonstrar a qualidade e a natureza dos dados com os quais está a trabalhar. Para isso, frequentemente criam visualizações interessantes, como gráficos, diagramas e tabelas, mostrando diferentes aspetos dos dados. Desta forma, conseguem mostrar visualmente relações e lacunas que, de outra forma, seriam difíceis de identificar. +Parte do papel do cientista de dados é demonstrar a qualidade e a natureza dos dados com que trabalha. Para isso, frequentemente cria visualizações interessantes, ou gráficos, diagramas e gráficos, mostrando vários aspetos dos dados. Desta forma, conseguem mostrar visualmente relações e lacunas que, de outro modo, são difíceis de detectar. -[![ML para iniciantes - Como visualizar dados com Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML para iniciantes - Como visualizar dados com Matplotlib") +[![ML para iniciantes - Como Visualizar Dados com Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML para iniciantes - Como Visualizar Dados com Matplotlib") -> 🎥 Clique na imagem acima para assistir a um vídeo curto sobre como visualizar os dados para esta lição. +> 🎥 Clique na imagem acima para um vídeo curto a trabalhar a visualização dos dados para esta lição. As visualizações também podem ajudar a determinar a técnica de machine learning mais apropriada para os dados. Um gráfico de dispersão que parece seguir uma linha, por exemplo, indica que os dados são bons candidatos para um exercício de regressão linear. Uma biblioteca de visualização de dados que funciona bem em notebooks Jupyter é [Matplotlib](https://matplotlib.org/) (que também viu na lição anterior). -> Obtenha mais experiência com visualização de dados nestes [tutoriais](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott). +> Ganhe mais experiência em visualização de dados nestes [tutoriais](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott). -## Exercício - experimentar com Matplotlib +## Exercício - experimente com Matplotlib -Tente criar alguns gráficos básicos para exibir o novo dataframe que acabou de criar. O que um gráfico de linha básico mostraria? +Tente criar alguns gráficos básicos para exibir o novo dataframe que acabou de criar. O que mostraria um gráfico de linha básico? -1. Importe o Matplotlib no topo do ficheiro, sob a importação do Pandas: +1. Importe Matplotlib no topo do ficheiro, abaixo da importação do Pandas: ```python import matplotlib.pyplot as plt ``` -1. Execute novamente todo o notebook para atualizar. +1. Corra novamente todo o notebook para atualizar. 1. No final do notebook, adicione uma célula para plotar os dados como um boxplot: ```python @@ -174,15 +174,15 @@ Tente criar alguns gráficos básicos para exibir o novo dataframe que acabou de plt.show() ``` - ![Um gráfico de dispersão mostrando a relação entre preço e mês](../../../../2-Regression/2-Data/images/scatterplot.png) + ![Um gráfico de dispersão mostrando a relação entre preço e mês](../../../../translated_images/pt-PT/scatterplot.b6868f44cbd2051c.webp) - Este gráfico é útil? Há algo nele que o surpreenda? + Este é um gráfico útil? Algo nele o surpreende? - Não é particularmente útil, pois apenas exibe os seus dados como uma dispersão de pontos num determinado mês. + Não é particularmente útil, pois tudo o que faz é mostrar os seus dados como uma dispersão de pontos num dado mês. ### Torná-lo útil -Para que os gráficos exibam dados úteis, geralmente é necessário agrupar os dados de alguma forma. Vamos tentar criar um gráfico onde o eixo y mostra os meses e os dados demonstram a distribuição. +Para que os gráficos exibam dados úteis, normalmente é preciso agrupar os dados de alguma forma. Vamos tentar criar um gráfico onde o eixo y mostra os meses e os dados demonstram a distribuição dos valores. 1. Adicione uma célula para criar um gráfico de barras agrupado: @@ -191,21 +191,96 @@ Para que os gráficos exibam dados úteis, geralmente é necessário agrupar os plt.ylabel("Pumpkin Price") ``` - ![Um gráfico de barras mostrando a relação entre preço e mês](../../../../2-Regression/2-Data/images/barchart.png) + ![Um gráfico de barras mostrando a relação entre preço e mês](../../../../translated_images/pt-PT/barchart.a833ea9194346d76.webp) + + Esta é uma visualização de dados mais útil! Parece indicar que o preço mais alto das abóboras ocorre em setembro e outubro. Isso corresponde à sua expectativa? Porquê? + +## Exercício - experimente com Seaborn + +O Matplotlib é poderoso, mas pode exigir muito código para produzir um gráfico polido. [Seaborn](https://seaborn.pydata.org/) é uma biblioteca construída _em cima de_ Matplotlib desenhada para visualização estatística de dados. Trabalha diretamente com dataframes Pandas, aplica estilos padrão atraentes, e deixa criar gráficos informativos com muito menos código. Como o Seaborn retorna objetos Matplotlib, pode ainda usar tudo o que já sabe sobre Matplotlib para ajustar o resultado. + +> Se ainda não instalou o Seaborn, instale-o com `pip install seaborn`. + +1. Importe Seaborn no topo do notebook, abaixo das outras importações. Convencionalmente é importado como `sns`: + + ```python + import seaborn as sns + ``` + +### Gráficos de dispersão para mostrar relações + +Uma grande parte da exploração de dados antes de construir um modelo é procurar _relações_ entre variáveis. Um [gráfico de dispersão](https://en.wikipedia.org/wiki/Scatter_plot) é uma das melhores ferramentas para isso: se os pontos parecem seguir uma linha, as duas variáveis podem estar correlacionadas, o que é um bom sinal de que um modelo de regressão linear pode funcionar. + +1. Recrie o gráfico de dispersão preço-mês anterior, desta vez usando a função [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) do Seaborn (gráfico relacional), que trabalha diretamente com as colunas do seu dataframe: + + ```python + sns.relplot(x="Price", y="Month", data=new_pumpkins) + ``` + + ![Um gráfico de dispersão Seaborn mostrando a relação entre preço e mês](../../../../translated_images/pt-PT/relplot.a03837d8f0329cec.webp) + + Repare como passa os _nomes das colunas_ e o dataframe, e o Seaborn cuida dos rótulos dos eixos para si. + +2. Pode mudar para um gráfico de linha passando `kind="line"`. O Seaborn até desenha uma banda sombreada mostrando o intervalo de confiança em torno da linha: + + ```python + sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins) + ``` + + ![Um gráfico de linhas Seaborn mostrando a relação entre preço e mês](../../../../translated_images/pt-PT/lineplot.f9034ba47b1e30ee.webp) + + Estes dados em particular são bastante ruidosos, então um gráfico de linhas não é a escolha mais clara aqui — mas mostra como é fácil mudar o tipo de gráfico no Seaborn. + +### Gráficos de barras para mostrar distribuições + + +Anteriormente, agrupaste os dados manualmente para criar um gráfico de barras com Matplotlib. O [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) (gráfico categórico) do Seaborn pode fazer o agrupamento e agregação por ti. Por defeito, `kind="bar"` mostra a média de cada categoria juntamente com uma linha preta indicando o intervalo de confiança. + +1. Cria um gráfico de barras do preço médio por mês: + + ```python + sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar") + ``` + + ![Um gráfico de barras do Seaborn que mostra a distribuição do preço por mês](../../../../translated_images/pt-PT/catplot.e73fc35fdf96242b.webp) + + Isto confirma o que viste com Matplotlib — os preços atingem o pico em setembro e outubro — mas o Seaborn também visualiza o quanto o preço _varia_ dentro de cada mês. + +### Mapas de calor para mostrar correlações + +Gráficos de dispersão comparam duas variáveis de cada vez. Quando tens várias colunas numéricas, um [mapa de calor](https://en.wikipedia.org/wiki/Heat_map) permite ver a força da relação entre _todos_ os pares de colunas ao mesmo tempo. Esta é uma forma comum de identificar quais as características mais correlacionadas antes de escolher o que alimentar num modelo (e o mesmo tipo de gráfico é depois usado para mostrar matrizes de confusão em classificação). + +1. Constrói uma matriz de correlação com Pandas, depois desenha-a com o [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html) do Seaborn. A opção `annot=True` imprime os valores de correlação em cada célula: + + ```python + correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr() + sns.heatmap(correlations, annot=True, cmap="coolwarm") + ``` + + ![Um mapa de calor do Seaborn que mostra as correlações entre as colunas numéricas](../../../../translated_images/pt-PT/heatmap.bd98dce43b404c57.webp) + + Valores próximos de `1` (ou `-1`) significam que as colunas estão fortemente correlacionadas _linearmente_. Repara como `Low Price` e `High Price` estão quase perfeitamente correlacionados. `Month`, por outro lado, mostra apenas uma fraca correlação linear com o preço — apesar do gráfico de barras acima revelar um claro pico sazonal em setembro e outubro. Essa é uma lição importante: o coeficiente de correlação mede apenas relações _em linha reta_, pelo que pode não detetar padrões sazonais ou outros não lineares. ✅ Por que é útil olhar para um mapa de calor *e* gráficos como o gráfico de barras antes de decidir quais colunas usar? + +### Matplotlib ou Seaborn? + +Ambas as bibliotecas valem a pena conhecer: + +- **Matplotlib** dá-te controlo detalhado sobre cada elemento de um gráfico e é a base sobre a qual quase todas as outras bibliotecas Python de plotagem são construídas. +- **Seaborn** fornece funções de nível superior e padrões atraentes para gráficos estatísticos, funciona diretamente com dataframes e é frequentemente mais rápido para análise exploratória de dados. - Este é um gráfico de visualização de dados mais útil! Parece indicar que o preço mais alto das abóboras ocorre em setembro e outubro. Isso corresponde às suas expectativas? Porquê ou porquê não? +Um fluxo de trabalho comum é usar o Seaborn para explorar rapidamente os dados, depois passar para Matplotlib quando precisares de personalizar os detalhes. --- ## 🚀Desafio -Explore os diferentes tipos de visualização que o Matplotlib oferece. Quais tipos são mais apropriados para problemas de regressão? +Explora os diferentes tipos de visualização que Matplotlib e Seaborn oferecem. Quais os tipos mais apropriados para problemas de regressão? ## [Questionário pós-aula](https://ff-quizzes.netlify.app/en/ml/) -## Revisão & Autoestudo +## Revisão & Auto-estudo -Explore as várias formas de visualizar dados. Faça uma lista das diferentes bibliotecas disponíveis e anote quais são melhores para determinados tipos de tarefas, por exemplo, visualizações 2D vs. visualizações 3D. O que descobre? +Dá uma vista de olhos nas várias formas de visualizar dados. Faz uma lista das várias bibliotecas disponíveis e nota quais são melhores para certos tipos de tarefas, por exemplo visualizações 2D vs. visualizações 3D. O que descobres? ## Tarefa @@ -213,5 +288,7 @@ Explore as várias formas de visualizar dados. Faça uma lista das diferentes bi --- -**Aviso Legal**: -Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original no seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se uma tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas resultantes do uso desta tradução. \ No newline at end of file + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução automática [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos pela precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se tradução profissional humana. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas resultantes da utilização desta tradução. + \ No newline at end of file diff --git a/translations/pt-PT/2-Regression/2-Data/solution/notebook.ipynb b/translations/pt-PT/2-Regression/2-Data/solution/notebook.ipynb index a1f689a8e..c362a9399 100644 --- a/translations/pt-PT/2-Regression/2-Data/solution/notebook.ipynb +++ b/translations/pt-PT/2-Regression/2-Data/solution/notebook.ipynb @@ -3,7 +3,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "## Regressão Linear para Abóboras - Aula 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": [ + "## Visualização com Seaborn\n", + "\n", + "[Seaborn](https://seaborn.pydata.org/) é construído por cima do Matplotlib e funciona diretamente com dataframes, tornando rápido criar gráficos estatísticos atraentes com muito pouco código.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Diagramas de dispersão para mostrar relações\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 distribuições\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**Aviso Legal**: \nEste documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, é importante ter em conta que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autoritária. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas decorrentes da utilização desta tradução.\n" + "### Mapas de calor para mostrar correlações\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**Aviso Legal**:\nEste documento foi traduzido utilizando o serviço de tradução automática [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos pela precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se tradução profissional humana. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas resultantes da utilização desta tradução.\n\n" ] } ], @@ -424,13 +487,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "95726f0b8283628d5356a4f8eb8b4b76", - "translation_date": "2025-09-03T19:44:58+00:00", - "source_file": "2-Regression/2-Data/solution/notebook.ipynb", - "language_code": "pt" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/pt-PT/8-Reinforcement/1-QLearning/README.md b/translations/pt-PT/8-Reinforcement/1-QLearning/README.md index b5a01950d..6b159293d 100644 --- a/translations/pt-PT/8-Reinforcement/1-QLearning/README.md +++ b/translations/pt-PT/8-Reinforcement/1-QLearning/README.md @@ -1,47 +1,47 @@ -# Introdução ao Aprendizado por Reforço e Q-Learning +# Introdução ao Aprendizagem por Reforço e Q-Learning -![Resumo do reforço em aprendizagem de máquina em um sketchnote](../../../../sketchnotes/ml-reinforcement.png) +![Resumo do reforço em aprendizagem de máquina numa sketchnote](../../../../translated_images/pt-PT/ml-reinforcement.94024374d63348db.webp) > Sketchnote por [Tomomi Imura](https://www.twitter.com/girlie_mac) -O aprendizado por reforço envolve três conceitos importantes: o agente, alguns estados e um conjunto de ações por estado. Ao executar uma ação em um estado específico, o agente recebe uma recompensa. Imagine novamente o jogo de computador Super Mario. Você é o Mario, está em um nível do jogo, ao lado de um precipício. Acima de você há uma moeda. Você, sendo o Mario, em um nível do jogo, em uma posição específica... esse é o seu estado. Mover um passo para a direita (uma ação) fará com que você caia no precipício, o que lhe dará uma pontuação numérica baixa. No entanto, pressionar o botão de salto permitirá que você marque um ponto e continue vivo. Esse é um resultado positivo e deve lhe conceder uma pontuação numérica positiva. +A aprendizagem por reforço envolve três conceitos importantes: o agente, alguns estados, e um conjunto de ações por estado. Ao executar uma ação num estado especificado, o agente recebe uma recompensa. Imagine novamente o jogo de computador Super Mario. Você é o Mario, está num nível do jogo, parado junto a um penhasco. Acima de si está uma moeda. Você sendo o Mario, num nível de jogo, numa posição específica ... esse é o seu estado. Mover-se um passo para a direita (uma ação) levará você para além do penhasco, e isso dar-lhe-ia uma pontuação numérica baixa. No entanto, premir o botão de pular permitiria que ganhou um ponto e que continuasse vivo. Esse é um resultado positivo e deveria atribuir-lhe uma pontuação numérica positiva. -Usando aprendizado por reforço e um simulador (o jogo), você pode aprender a jogar para maximizar a recompensa, que é permanecer vivo e marcar o máximo de pontos possível. +Usando aprendizagem por reforço e um simulador (o jogo), pode aprender a jogar para maximizar a recompensa, que é manter-se vivo e marcar o maior número de pontos possível. -[![Introdução ao Aprendizado por Reforço](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) +[![Introdução à Aprendizagem por Reforço](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) -> 🎥 Clique na imagem acima para ouvir Dmitry falar sobre Aprendizado por Reforço +> 🎥 Clique na imagem acima para ouvir Dmitry discutir Aprendizagem por Reforço ## [Quiz pré-aula](https://ff-quizzes.netlify.app/en/ml/) ## Pré-requisitos e Configuração -Nesta lição, vamos experimentar algum código em Python. Você deve ser capaz de executar o código do Jupyter Notebook desta lição, seja no seu computador ou em algum lugar na nuvem. +Nesta lição, vamos experimentar algum código em Python. Deverá ser capaz de executar o código do Jupyter Notebook desta lição, seja no seu computador ou em algum lugar na nuvem. -Você pode abrir [o notebook da lição](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) e seguir esta lição para construir. +Pode abrir [o notebook da lição](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) e seguir esta lição para desenvolver. -> **Nota:** Se você estiver abrindo este código na nuvem, também precisará buscar o arquivo [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), que é usado no código do notebook. Adicione-o ao mesmo diretório que o notebook. +> **Nota:** Se estiver a abrir este código a partir da nuvem, também precisa de obter o ficheiro [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), que é usado no código do notebook. Adicione-o ao mesmo diretório do notebook. ## Introdução -Nesta lição, vamos explorar o mundo de **[Pedro e o Lobo](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)**, inspirado por um conto musical de fadas de um compositor russo, [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev). Usaremos **Aprendizado por Reforço** para permitir que Pedro explore seu ambiente, recolha maçãs saborosas e evite encontrar o lobo. +Nesta lição, vamos explorar o mundo de **[Pedro e o Lobo](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)**, inspirado por um conto musical de um compositor russo, [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev). Usaremos **Aprendizagem por Reforço** para deixar que Pedro explore o seu ambiente, recolha maçãs saborosas e evite encontrar o lobo. -**Aprendizado por Reforço** (RL) é uma técnica de aprendizado que nos permite aprender um comportamento ideal de um **agente** em algum **ambiente** ao realizar muitos experimentos. Um agente nesse ambiente deve ter algum **objetivo**, definido por uma **função de recompensa**. +**Aprendizagem por Reforço** (RL) é uma técnica de aprendizagem que nos permite aprender um comportamento ótimo de um **agente** num **ambiente** ao realizar muitos experimentos. Um agente neste ambiente deve ter algum **objetivo**, definido por uma **função de recompensa**. ## O ambiente -Para simplificar, vamos considerar o mundo de Pedro como um tabuleiro quadrado de tamanho `largura` x `altura`, como este: +Para simplificar, consideremos que o mundo de Pedro é um tabuleiro quadrado com tamanho `width` x `height`, como este: -![Ambiente de Pedro](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![Ambiente de Pedro](../../../../translated_images/pt-PT/environment.40ba3cb66256c93f.webp) -Cada célula neste tabuleiro pode ser: +Cada célula deste tabuleiro pode ser: -* **chão**, onde Pedro e outras criaturas podem caminhar. -* **água**, onde obviamente não se pode caminhar. -* uma **árvore** ou **grama**, um lugar onde se pode descansar. -* uma **maçã**, que representa algo que Pedro ficaria feliz em encontrar para se alimentar. +* **terra**, sobre a qual Pedro e outras criaturas podem andar. +* **água**, sobre a qual obviamente não se pode andar. +* uma **árvore** ou **relva**, um local onde se pode descansar. +* uma **maçã**, que representa algo que Pedro ficaria feliz por encontrar para se alimentar. * um **lobo**, que é perigoso e deve ser evitado. -Há um módulo Python separado, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), que contém o código para trabalhar com este ambiente. Como este código não é importante para entender nossos conceitos, vamos importar o módulo e usá-lo para criar o tabuleiro de exemplo (bloco de código 1): +Existe um módulo Python separado, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), que contém o código para trabalhar com este ambiente. Como este código não é importante para entender os nossos conceitos, vamos importar o módulo e usá-lo para criar o tabuleiro de exemplo (bloco de código 1): ```python from rlboard import * @@ -52,63 +52,63 @@ m.randomize(seed=13) m.plot() ``` -Este código deve imprimir uma imagem do ambiente semelhante à acima. +Este código deverá imprimir uma imagem do ambiente semelhante à acima. ## Ações e política -No nosso exemplo, o objetivo de Pedro seria encontrar uma maçã, enquanto evita o lobo e outros obstáculos. Para isso, ele pode essencialmente andar por aí até encontrar uma maçã. +No nosso exemplo, o objetivo de Pedro seria conseguir encontrar uma maçã, enquanto evita o lobo e outros obstáculos. Para isso, ele pode essencialmente andar até encontrar uma maçã. -Portanto, em qualquer posição, ele pode escolher entre uma das seguintes ações: cima, baixo, esquerda e direita. +Portanto, em qualquer posição, ele pode escolher entre uma das seguintes ações: subir, descer, esquerda e direita. -Definiremos essas ações como um dicionário e as mapearemos para pares de mudanças de coordenadas correspondentes. Por exemplo, mover para a direita (`R`) corresponderia ao par `(1,0)`. (bloco de código 2): +Vamos definir essas ações como um dicionário, e mapear-las para pares de alterações correspondentes nas coordenadas. Por exemplo, mover para a direita (`R`) corresponderia ao par `(1,0)`. (bloco de código 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()) } ``` -Resumindo, a estratégia e o objetivo deste cenário são os seguintes: +Para resumir, a estratégia e objetivo deste cenário são os seguintes: - **A estratégia**, do nosso agente (Pedro) é definida por uma chamada **política**. Uma política é uma função que retorna a ação em qualquer estado dado. No nosso caso, o estado do problema é representado pelo tabuleiro, incluindo a posição atual do jogador. -- **O objetivo**, do aprendizado por reforço é eventualmente aprender uma boa política que nos permita resolver o problema de forma eficiente. No entanto, como base, vamos considerar a política mais simples chamada **caminhada aleatória**. +- **O objetivo**, da aprendizagem por reforço é finalmente aprender uma boa política que nos permita resolver o problema eficientemente. No entanto, como linha base, vamos considerar a política mais simples chamada **passeio aleatório**. -## Caminhada aleatória +## Passeio aleatório -Vamos primeiro resolver nosso problema implementando uma estratégia de caminhada aleatória. Com a caminhada aleatória, escolheremos aleatoriamente a próxima ação entre as ações permitidas, até chegarmos à maçã (bloco de código 3). +Primeiro vamos resolver o nosso problema implementando a estratégia do passeio aleatório. Com passeio aleatório, escolhemos aleatoriamente a próxima ação entre as ações permitidas, até atingirmos a maçã (bloco de código 3). -1. Implemente a caminhada aleatória com o código abaixo: +1. Implemente o passeio aleatório com o código abaixo: ```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 passos + # definir posição 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 # sucesso! if m.at() in [Board.Cell.wolf, Board.Cell.water]: - return -1 # eaten by wolf or drowned + return -1 # comido por lobo ou afogado 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) # executar o movimento real break n+=1 walk(m,random_policy) ``` - A chamada para `walk` deve retornar o comprimento do caminho correspondente, que pode variar de uma execução para outra. + A chamada a `walk` deve retornar o comprimento do percurso correspondente, que pode variar de uma execução para outra. -1. Execute o experimento de caminhada várias vezes (digamos, 100) e imprima as estatísticas resultantes (bloco de código 4): +1. Execute o experimento do passeio várias vezes (digamos, 100), e imprima as estatísticas resultantes (bloco de código 4): ```python def print_statistics(policy): @@ -125,17 +125,17 @@ Vamos primeiro resolver nosso problema implementando uma estratégia de caminhad print_statistics(random_policy) ``` - Note que o comprimento médio de um caminho é em torno de 30-40 passos, o que é bastante, dado que a distância média até a maçã mais próxima é em torno de 5-6 passos. + Note que o comprimento médio de um percurso é cerca de 30-40 passos, o que é bastante, dado o facto de que a distância média até à maçã mais próxima é cerca de 5-6 passos. - Você também pode ver como é o movimento de Pedro durante a caminhada aleatória: + Pode também ver como é o movimento de Pedro durante o passeio aleatório: - ![Caminhada Aleatória de Pedro](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) + ![Passeio aleatório de Pedro](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) ## Função de recompensa -Para tornar nossa política mais inteligente, precisamos entender quais movimentos são "melhores" que outros. Para isso, precisamos definir nosso objetivo. +Para tornar a nossa política mais inteligente, precisamos de entender quais os movimentos que são "melhores" do que outros. Para isso, precisamos definir o nosso objetivo. -O objetivo pode ser definido em termos de uma **função de recompensa**, que retornará algum valor de pontuação para cada estado. Quanto maior o número, melhor a função de recompensa. (bloco de código 5) +O objetivo pode ser definido em termos de uma **função de recompensa**, que vai retornar um valor de pontuação para cada estado. Quanto maior o número, melhor a função de recompensa. (bloco de código 5) ```python move_reward = -0.1 @@ -154,39 +154,115 @@ def reward(m,pos=None): return move_reward ``` -Uma coisa interessante sobre funções de recompensa é que, na maioria dos casos, *só recebemos uma recompensa substancial no final do jogo*. Isso significa que nosso algoritmo deve, de alguma forma, lembrar os "bons" passos que levam a uma recompensa positiva no final e aumentar sua importância. Da mesma forma, todos os movimentos que levam a resultados ruins devem ser desencorajados. +Uma coisa interessante sobre funções de recompensa é que na maioria dos casos, *só recebemos uma recompensa substancial no fim do jogo*. Isto significa que o nosso algoritmo deve de alguma forma lembrar-se dos passos "bons" que levam a uma recompensa positiva no fim, e aumentar sua importância. Da mesma forma, todos os movimentos que levam a resultados maus devem ser desencorajados. ## Q-Learning -O algoritmo que discutiremos aqui é chamado **Q-Learning**. Neste algoritmo, a política é definida por uma função (ou uma estrutura de dados) chamada **Q-Table**. Ela registra a "qualidade" de cada uma das ações em um estado dado. +Um algoritmo que vamos discutir aqui chama-se **Q-Learning**. Neste algoritmo, a política é definida por uma função (ou estrutura de dados) chamada **Q-Table**. Ela regista a "qualidade" de cada uma das ações num dado estado. -É chamada de Q-Table porque muitas vezes é conveniente representá-la como uma tabela ou matriz multidimensional. Como nosso tabuleiro tem dimensões `largura` x `altura`, podemos representar a Q-Table usando um array numpy com formato `largura` x `altura` x `len(actions)`: (bloco de código 6) +É chamada Q-Table porque é frequentemente conveniente representá-la como uma tabela, ou array multidimensional. Como o nosso tabuleiro tem dimensões `width` x `height`, podemos representar a Q-Table usando um array numpy com formato `width` x `height` x `len(actions)`: (bloco de código 6) ```python Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions) ``` -Observe que inicializamos todos os valores da Q-Table com um valor igual, no nosso caso - 0.25. Isso corresponde à política de "caminhada aleatória", porque todos os movimentos em cada estado são igualmente bons. Podemos passar a Q-Table para a função `plot` para visualizar a tabela no tabuleiro: `m.plot(Q)`. +Note que inicializamos todos os valores da Q-Table com um valor igual, no nosso caso - 0.25. Isto corresponde à política "passeio aleatório", porque todos os movimentos em cada estado são igualmente bons. Podemos passar a Q-Table para a função `plot` para visualizar a tabela no tabuleiro: `m.plot(Q)`. -![Ambiente de Pedro](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![Ambiente de Pedro](../../../../translated_images/pt-PT/env_init.04e8f26d2d60089e.webp) -No centro de cada célula há uma "seta" que indica a direção preferida de movimento. Como todas as direções são iguais, um ponto é exibido. +No centro de cada célula há uma "seta" que indica a direção preferida do movimento. Como todas as direções são iguais, é exibido um ponto. -Agora precisamos executar a simulação, explorar nosso ambiente e aprender uma melhor distribuição de valores da Q-Table, o que nos permitirá encontrar o caminho para a maçã muito mais rapidamente. +Agora precisamos executar a simulação, explorar o nosso ambiente, e aprender uma melhor distribuição dos valores da Q-Table, o que nos permitirá encontrar o caminho para a maçã muito mais rápido. ## Essência do Q-Learning: Equação de Bellman -Uma vez que começamos a nos mover, cada ação terá uma recompensa correspondente, ou seja, teoricamente podemos selecionar a próxima ação com base na maior recompensa imediata. No entanto, na maioria dos estados, o movimento não alcançará nosso objetivo de chegar à maçã, e assim não podemos decidir imediatamente qual direção é melhor. +Assim que começamos a mover, cada ação terá uma recompensa correspondente, isto é, teoricamente podemos selecionar a próxima ação com base na recompensa imediata mais alta. No entanto, na maioria dos estados, o movimento não alcançará o nosso objetivo de chegar à maçã, e portanto não podemos decidir imediatamente qual direção é melhor. -> Lembre-se de que não é o resultado imediato que importa, mas sim o resultado final, que obteremos no final da simulação. +> Lembre-se que não é o resultado imediato que importa, mas sim o resultado final, que será obtido no fim da simulação. -Para levar em conta essa recompensa atrasada, precisamos usar os princípios de **[programação dinâmica](https://en.wikipedia.org/wiki/Dynamic_programming)**, que nos permitem pensar sobre nosso problema de forma recursiva. +Para contabilizar essa recompensa retardada, precisamos usar os princípios da **[programação dinâmica](https://en.wikipedia.org/wiki/Dynamic_programming)**, que nos permitem pensar no nosso problema recursivamente. -Suponha que estamos agora no estado *s*, e queremos nos mover para o próximo estado *s'*. Ao fazer isso, receberemos a recompensa imediata *r(s,a)*, definida pela função de recompensa, mais alguma recompensa futura. Se supusermos que nossa Q-Table reflete corretamente a "atratividade" de cada ação, então no estado *s'* escolheremos uma ação *a* que corresponda ao valor máximo de *Q(s',a')*. Assim, a melhor recompensa futura possível que poderíamos obter no estado *s* será definida como `max` +Suponha que estamos agora no estado *s*, e queremos mover para o próximo estado *s'*. Ao fazê-lo, receberemos a recompensa imediata *r(s,a)*, definida pela função de recompensa, mais alguma recompensa futura. Se supusermos que a nossa Q-Table reflete corretamente a "atratividade" de cada ação, então no estado *s'* escolheremos uma ação *a* que corresponda ao valor máximo de *Q(s',a')*. Assim, a melhor recompensa futura possível que poderíamos obter no estado *s* será definida como `max`a'*Q(s',a')* (o máximo aqui é calculado sobre todas as possíveis ações *a'* no estado *s'*). -## Verificar a política +Isso dá a **fórmula de Bellman** para calcular o valor da Q-Table no estado *s*, dada a ação *a*: -Como a Q-Table lista a "atratividade" de cada ação em cada estado, é bastante fácil utilizá-la para definir a navegação eficiente no nosso mundo. No caso mais simples, podemos selecionar a ação correspondente ao valor mais alto da Q-Table: (bloco de código 9) + + +Aqui γ é o chamado **fator de desconto** que determina em que medida deve preferir a recompensa actual à recompensa futura e vice-versa. + +## Algoritmo de aprendizagem + +Dada a equação acima, agora podemos escrever pseudocódigo para o nosso algoritmo de aprendizagem: + +* Inicialize a Q-Table Q com números iguais para todos os estados e ações +* Defina a taxa de aprendizagem α ← 1 +* Repita a simulação muitas vezes + 1. Comece numa posição aleatória + 1. Repita + 1. Selecione uma ação *a* no estado *s* + 2. Execute ação movendo para um novo estado *s'* + 3. Se encontrarmos a condição de fim do jogo, ou a recompensa total for demasiado pequena - saia da simulação + 4. Calcule a recompensa *r* no novo estado + 5. Atualize a função Q de acordo com a equação de Bellman: *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ maxa'Q(s',a'))* + 6. *s* ← *s'* + 7. Atualize a recompensa total e diminua α. + +## Explorar vs. Explorar + +No algoritmo acima, não especificamos como exatamente devemos escolher uma ação no passo 2.1. Se escolhermos a ação aleatoriamente, iremos aleatoriamente **explorar** o ambiente, e é bastante provável que morramos frequentemente assim como exploremos áreas onde normalmente não iríamos. Uma abordagem alternativa seria **explorar** os valores da Q-Table que já conhecemos, e assim escolher a melhor ação (com maior valor na Q-Table) no estado *s*. Isso, no entanto, irá impedir-nos de explorar outros estados, e é provável que não encontremos a solução ótima. + +Portanto, a melhor abordagem é encontrar um equilíbrio entre exploração e aproveitamento. Isto pode ser feito escolhendo a ação no estado *s* com probabilidades proporcionais aos valores na Q-Table. No início, quando os valores da Q-Table são todos iguais, isso corresponderia a uma seleção aleatória, mas à medida que aprendemos mais sobre o nosso ambiente, seremos mais propensos a seguir a rota ótima permitindo, contudo, que o agente escolha o caminho inexplorado de vez em quando. + +## Implementação em Python + +Estamos agora prontos para implementar o algoritmo de aprendizagem. Antes disso, também precisamos de uma função que converta números arbitrários na Q-Table num vetor de probabilidades para as ações correspondentes. + +1. Crie uma função `probs()`: + + ```python + def probs(v,eps=1e-4): + v = v-v.min()+eps + v = v/v.sum() + return v + ``` + + Adicionamos alguns `eps` ao vetor original para evitar a divisão por 0 no caso inicial, quando todos os componentes do vetor são idênticos. + +Execute o algoritmo de aprendizagem através de 5000 experiências, também chamadas de **épocas**: (bloco de código 8) +```python + for epoch in range(5000): + + # Escolher ponto inicial + m.random_start() + + # Começar a viagem + 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 o jogador se mova fora do tabuleiro, o que termina o episódio + 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 +``` + +Depois de executar este algoritmo, a Q-Table deverá estar atualizada com valores que definem a atratividade das diferentes ações em cada passo. Podemos tentar visualizar a Q-Table ao desenhar um vetor em cada célula que aponta na direção desejada do movimento. Para simplificar, desenhamos um pequeno círculo em vez de uma ponta de seta. + + + +## Verificação da política + +Como a Q-Table lista a "atratividade" de cada ação em cada estado, é bastante fácil usá-la para definir a navegação eficiente no nosso mundo. No caso mais simples, podemos selecionar a ação correspondente ao maior valor na Q-Table: (bloco de código 9) ```python def qpolicy_strict(m): @@ -198,17 +274,18 @@ def qpolicy_strict(m): walk(m,qpolicy_strict) ``` -> Se experimentares o código acima várias vezes, podes notar que, por vezes, ele "fica preso", e precisas de pressionar o botão STOP no notebook para o interromper. Isto acontece porque podem existir situações em que dois estados "apontam" um para o outro em termos de valor ótimo de Q-Value, caso em que o agente acaba por se mover entre esses estados indefinidamente. + +> Se experimentares o código acima várias vezes, poderás notar que às vezes ele "trava", e precisas de pressionar o botão STOP no notebook para o interromper. Isto acontece porque podem existir situações em que dois estados "apontam" um para o outro em termos do valor Q ótimo, caso em que o agente acaba a mover-se entre esses estados indefinidamente. ## 🚀Desafio -> **Tarefa 1:** Modifica a função `walk` para limitar o comprimento máximo do caminho a um certo número de passos (por exemplo, 100), e observa o código acima retornar este valor ocasionalmente. +> **Tarefa 1:** Modifica a função `walk` para limitar o comprimento máximo do caminho a um certo número de passos (por exemplo, 100), e observa o código acima a devolver este valor de vez em quando. -> **Tarefa 2:** Modifica a função `walk` para que não volte aos locais onde já esteve anteriormente. Isto evitará que o `walk` entre em loop, no entanto, o agente ainda pode acabar "preso" num local do qual não consegue escapar. +> **Tarefa 2:** Modifica a função `walk` para que não volte aos locais onde já passou anteriormente. Isto impedirá que `walk` fique em loop, no entanto, o agente ainda pode acabar por ficar "preso" num local do qual não consiga escapar. ## Navegação -Uma política de navegação melhor seria aquela que utilizámos durante o treino, que combina exploração e aproveitamento. Nesta política, selecionamos cada ação com uma certa probabilidade, proporcional aos valores na Q-Table. Esta estratégia pode ainda resultar no agente voltar a uma posição que já explorou, mas, como podes ver no código abaixo, resulta num caminho médio muito curto até ao local desejado (lembra-te que `print_statistics` executa a simulação 100 vezes): (bloco de código 10) +Uma política de navegação melhor seria aquela que usamos durante o treino, que combina exploração e aproveitamento. Nessa política, selecionaremos cada ação com uma certa probabilidade, proporcional aos valores na tabela Q. Esta estratégia ainda pode resultar no agente a voltar a uma posição que já tenha explorado, mas, como podes ver pelo código abaixo, resulta num caminho médio muito curto até ao local desejado (lembra-te que `print_statistics` executa a simulação 100 vezes): (code block 10) ```python def qpolicy(m): @@ -220,28 +297,32 @@ def qpolicy(m): print_statistics(qpolicy) ``` -Depois de executar este código, deverás obter um comprimento médio de caminho muito menor do que antes, na faixa de 3-6. +Depois de executares este código, deverás obter um comprimento médio de caminho muito menor do que antes, na ordem dos 3-6. + +## Investigando o processo de aprendizagem -## Investigar o processo de aprendizagem +Como mencionámos, o processo de aprendizagem é um equilíbrio entre a exploração e o aproveitamento do conhecimento adquirido sobre a estrutura do espaço do problema. Vimos que os resultados da aprendizagem (a capacidade de ajudar um agente a encontrar um caminho curto até ao objetivo) melhoraram, mas também é interessante observar como o comprimento médio do caminho se comporta durante o processo de aprendizagem: -Como mencionámos, o processo de aprendizagem é um equilíbrio entre exploração e aproveitamento do conhecimento adquirido sobre a estrutura do espaço do problema. Vimos que os resultados da aprendizagem (a capacidade de ajudar um agente a encontrar um caminho curto até ao objetivo) melhoraram, mas também é interessante observar como o comprimento médio do caminho se comporta durante o processo de aprendizagem: + -## Resumo das aprendizagens: +As aprendizagens podem ser resumidas como: -- **O comprimento médio do caminho aumenta**. O que vemos aqui é que, inicialmente, o comprimento médio do caminho aumenta. Isto provavelmente deve-se ao facto de que, quando não sabemos nada sobre o ambiente, é mais provável ficarmos presos em estados desfavoráveis, como água ou lobos. À medida que aprendemos mais e começamos a usar esse conhecimento, conseguimos explorar o ambiente por mais tempo, mas ainda não sabemos muito bem onde estão as maçãs. +- **O comprimento médio do caminho aumenta**. O que vemos aqui é que, inicialmente, o comprimento médio do caminho aumenta. Isto deve-se provavelmente ao facto de, quando nada sabemos sobre o ambiente, ser provável que fiquemos presos em estados maus, como água ou lobo. À medida que aprendemos mais e começamos a usar este conhecimento, podemos explorar o ambiente por mais tempo, mas ainda não sabemos muito bem onde estão as maçãs. -- **O comprimento do caminho diminui, à medida que aprendemos mais**. Quando aprendemos o suficiente, torna-se mais fácil para o agente alcançar o objetivo, e o comprimento do caminho começa a diminuir. No entanto, ainda estamos abertos à exploração, por isso frequentemente desviamos do melhor caminho e exploramos novas opções, tornando o caminho mais longo do que o ideal. +- **O comprimento do caminho diminui à medida que aprendemos mais**. Quando aprendemos o suficiente, torna-se mais fácil para o agente alcançar o objetivo, e o comprimento do caminho começa a diminuir. Contudo, ainda estamos abertos à exploração, por isso frequentemente desviamo-nos do melhor caminho e exploramos novas opções, tornando o caminho mais longo do que o ótimo. -- **O comprimento aumenta abruptamente**. O que também observamos neste gráfico é que, em determinado momento, o comprimento aumentou abruptamente. Isto indica a natureza estocástica do processo, e que podemos, em algum momento, "estragar" os coeficientes da Q-Table ao sobrescrevê-los com novos valores. Isto idealmente deve ser minimizado ao diminuir a taxa de aprendizagem (por exemplo, no final do treino, ajustamos os valores da Q-Table apenas por um valor pequeno). +- **O comprimento aumenta abruptamente**. O que também observamos neste gráfico é que, em determinado ponto, o comprimento aumentou abruptamente. Isto indica a natureza estocástica do processo, e que em algum momento podemos "estragar" os coeficientes da tabela Q ao sobrescrevê-los com novos valores. Idealmente, isto deveria ser minimizado ao diminuir a taxa de aprendizagem (por exemplo, para o final do treino, devemos ajustar os valores da tabela Q apenas por um valor pequeno). -No geral, é importante lembrar que o sucesso e a qualidade do processo de aprendizagem dependem significativamente de parâmetros, como a taxa de aprendizagem, a diminuição da taxa de aprendizagem e o fator de desconto. Estes são frequentemente chamados de **hiperparâmetros**, para distingui-los dos **parâmetros**, que otimizamos durante o treino (por exemplo, os coeficientes da Q-Table). O processo de encontrar os melhores valores de hiperparâmetros é chamado de **otimização de hiperparâmetros**, e merece um tópico à parte. +No geral, é importante lembrar que o sucesso e a qualidade do processo de aprendizagem dependem significativamente dos parâmetros, como a taxa de aprendizagem, a diminuição da taxa de aprendizagem, e o fator de desconto. Eles são frequentemente chamados **hiperparâmetros**, para os distinguir dos **parâmetros**, que otimizamos durante o treino (por exemplo, coeficientes da tabela Q). O processo de encontrar os melhores valores para os hiperparâmetros chama-se **otimização de hiperparâmetros**, e merece um tópico separado. ## [Questionário pós-aula](https://ff-quizzes.netlify.app/en/ml/) -## Trabalho +## Trabalho [Um Mundo Mais Realista](assignment.md) --- -**Aviso Legal**: -Este documento foi traduzido utilizando o serviço de tradução automática [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original no seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se uma tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas resultantes do uso desta tradução. \ No newline at end of file + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução automática [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos pela precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se tradução profissional humana. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas resultantes da utilização desta tradução. + \ No newline at end of file diff --git a/translations/pt-PT/8-Reinforcement/2-Gym/README.md b/translations/pt-PT/8-Reinforcement/2-Gym/README.md index a86a33147..a58dc2e18 100644 --- a/translations/pt-PT/8-Reinforcement/2-Gym/README.md +++ b/translations/pt-PT/8-Reinforcement/2-Gym/README.md @@ -1,14 +1,34 @@ +# CartPole Skating + +O problema que resolvemos na lição anterior pode parecer um problema de brinquedo, não realmente aplicável a cenários da vida real. Isso não é o caso, porque muitos problemas do mundo real também partilham este cenário - incluindo jogar Xadrez ou Go. São semelhantes porque também temos um tabuleiro com regras dadas e um **estado discreto**. + +## [Quiz pré-aula](https://ff-quizzes.netlify.app/en/ml/) + +## Introdução + +Nesta lição aplicaremos os mesmos princípios do Q-Learning a um problema com **estado contínuo**, ou seja, um estado dado por um ou mais números reais. Vamos lidar com o seguinte problema: + +> **Problema**: Se o Peter quiser escapar do lobo, ele precisa ser capaz de se mover mais rapidamente. Veremos como o Peter pode aprender a patinar, em particular, a manter o equilíbrio, usando Q-Learning. + +![A grande fuga!](../../../../translated_images/pt-PT/escape.18862db9930337e3.webp) + +> O Peter e os seus amigos tornam-se criativos para escapar ao lobo! Imagem de [Jen Looper](https://twitter.com/jenlooper) + +Vamos usar uma versão simplificada do equilíbrio conhecido como problema **CartPole**. No mundo do cartpole, temos um deslizador horizontal que pode mover-se para a esquerda ou para a direita, e o objetivo é equilibrar uma vara vertical em cima do deslizador. + +a cartpole + ## Pré-requisitos -Nesta lição, utilizaremos uma biblioteca chamada **OpenAI Gym** para simular diferentes **ambientes**. Pode executar o código desta lição localmente (por exemplo, no Visual Studio Code), caso em que a simulação será aberta numa nova janela. Ao executar o código online, poderá precisar de fazer alguns ajustes, conforme descrito [aqui](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7). +Nesta lição, usaremos uma biblioteca chamada **OpenAI Gym** para simular diferentes **ambientes**. Pode executar o código desta lição localmente (por exemplo, no Visual Studio Code), caso em que a simulação abrirá numa nova janela. Ao executar o código online, pode ser necessário fazer alguns ajustes no código, conforme descrito [aqui](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7). ## OpenAI Gym -Na lição anterior, as regras do jogo e o estado foram definidos pela classe `Board`, que criámos nós mesmos. Aqui, utilizaremos um **ambiente de simulação** especial, que simulará a física por trás do equilíbrio do poste. Um dos ambientes de simulação mais populares para treinar algoritmos de aprendizagem por reforço é chamado de [Gym](https://gym.openai.com/), mantido pela [OpenAI](https://openai.com/). Com este Gym, podemos criar diferentes **ambientes**, desde simulações de CartPole até jogos de Atari. +Na lição anterior, as regras do jogo e o estado foram definidos pela classe `Board` que criámos. Aqui usaremos um **ambiente de simulação** especial, que simulará a física por trás da vara de equilíbrio. Um dos ambientes de simulação mais populares para treinar algoritmos de aprendizagem por reforço chama-se [Gym](https://gym.openai.com/), mantido pela [OpenAI](https://openai.com/). Usando este gym podemos criar diversos **ambientes**, desde uma simulação de cartpole até jogos de Atari. -> **Nota**: Pode ver outros ambientes disponíveis no OpenAI Gym [aqui](https://gym.openai.com/envs/#classic_control). +> **Nota**: Pode consultar outros ambientes disponíveis no OpenAI Gym [aqui](https://gym.openai.com/envs/#classic_control). -Primeiro, vamos instalar o Gym e importar as bibliotecas necessárias (bloco de código 1): +Primeiro, vamos instalar o gym e importar as bibliotecas necessárias (bloco de código 1): ```python import sys @@ -20,15 +40,15 @@ import numpy as np import random ``` -## Exercício - inicializar um ambiente de CartPole +## Exercício - inicializar um ambiente cartpole -Para trabalhar com o problema de equilíbrio do CartPole, precisamos de inicializar o ambiente correspondente. Cada ambiente está associado a: +Para trabalhar com um problema de equilíbrio cartpole, precisamos inicializar o ambiente correspondente. Cada ambiente está associado a: -- **Espaço de observação**, que define a estrutura da informação que recebemos do ambiente. No problema do CartPole, recebemos a posição do poste, a velocidade e outros valores. +- **Espaço de observação** que define a estrutura da informação que recebemos do ambiente. Para o problema cartpole, recebemos a posição da vara, a velocidade e alguns outros valores. -- **Espaço de ação**, que define as ações possíveis. No nosso caso, o espaço de ação é discreto e consiste em duas ações: **esquerda** e **direita**. (bloco de código 2) +- **Espaço de ação** que define as ações possíveis. No nosso caso, o espaço de ação é discreto, e consiste em duas ações - **esquerda** e **direita**. (bloco de código 2) -1. Para inicializar, escreva o seguinte código: +1. Para inicializar, digite o seguinte código: ```python env = gym.make("CartPole-v1") @@ -37,11 +57,11 @@ Para trabalhar com o problema de equilíbrio do CartPole, precisamos de iniciali print(env.action_space.sample()) ``` -Para ver como o ambiente funciona, vamos executar uma simulação curta de 100 passos. Em cada passo, fornecemos uma das ações a serem realizadas - nesta simulação, selecionamos aleatoriamente uma ação do `action_space`. +Para ver como o ambiente funciona, vamos executar uma curta simulação de 100 passos. A cada passo, fornecemos uma das ações a realizar - nesta simulação selecionamos uma ação aleatória do `action_space`. 1. Execute o código abaixo e veja o resultado. - ✅ Lembre-se de que é preferível executar este código numa instalação local de Python! (bloco de código 3) + ✅ Lembre-se que é preferível executar este código numa instalação local do Python! (bloco de código 3) ```python env.reset() @@ -52,11 +72,11 @@ Para ver como o ambiente funciona, vamos executar uma simulação curta de 100 p env.close() ``` - Deve ver algo semelhante a esta imagem: + Deve ver algo parecido com esta imagem: - ![CartPole sem equilíbrio](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) + ![cartpole sem equilíbrio](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) -1. Durante a simulação, precisamos de obter observações para decidir como agir. Na verdade, a função step retorna as observações atuais, uma função de recompensa e um indicador `done` que indica se faz sentido continuar a simulação ou não: (bloco de código 4) +1. Durante a simulação, precisamos de obter observações para decidir como agir. De facto, a função step retorna observações atuais, uma função de recompensa e a flag done que indica se faz sentido continuar a simulação ou não: (bloco de código 4) ```python env.reset() @@ -69,7 +89,7 @@ Para ver como o ambiente funciona, vamos executar uma simulação curta de 100 p env.close() ``` - No notebook, verá algo semelhante a isto: + Eventualmente verá algo deste género na saída do notebook: ```text [ 0.03403272 -0.24301182 0.02669811 0.2895829 ] -> 1.0 @@ -82,36 +102,36 @@ Para ver como o ambiente funciona, vamos executar uma simulação curta de 100 p [ 0.17617249 0.35602306 -0.21873684 -0.90998894] -> 1.0 ``` - O vetor de observação retornado em cada passo da simulação contém os seguintes valores: + O vetor de observação retornado a cada passo da simulação contém os seguintes valores: - Posição do carrinho - Velocidade do carrinho - - Ângulo do poste - - Taxa de rotação do poste + - Ângulo da vara + - Taxa de rotação da vara -1. Obtenha os valores mínimos e máximos desses números: (bloco de código 5) +1. Obtenha o valor mínimo e máximo desses números: (bloco de código 5) ```python print(env.observation_space.low) print(env.observation_space.high) ``` - Também pode notar que o valor de recompensa em cada passo da simulação é sempre 1. Isto acontece porque o nosso objetivo é sobreviver o maior tempo possível, ou seja, manter o poste numa posição razoavelmente vertical pelo maior período de tempo. + Poderá também notar que o valor da recompensa em cada passo da simulação é sempre 1. Isto acontece porque o nosso objetivo é sobreviver o maior tempo possível, ou seja, manter a vara numa posição razoavelmente vertical pelo maior período de tempo. - ✅ Na verdade, a simulação do CartPole é considerada resolvida se conseguirmos obter uma recompensa média de 195 ao longo de 100 tentativas consecutivas. + ✅ De facto, a simulação CartPole é considerada resolvida se conseguirmos obter uma recompensa média de 195 em 100 tentativas consecutivas. ## Discretização do estado -No Q-Learning, precisamos de construir uma Q-Table que define o que fazer em cada estado. Para isso, o estado precisa de ser **discreto**, ou seja, deve conter um número finito de valores discretos. Assim, precisamos de alguma forma **discretizar** as nossas observações, mapeando-as para um conjunto finito de estados. +No Q-Learning, precisamos construir uma Q-Table que defina o que fazer em cada estado. Para isso, o estado precisa ser **discreto**, mais precisamente, deve conter um número finito de valores discretos. Assim, precisamos de alguma forma **discretizar** as nossas observações, mapeando-as para um conjunto finito de estados. -Existem algumas formas de fazer isto: +Existem algumas formas de o fazer: -- **Dividir em intervalos**. Se conhecemos o intervalo de um determinado valor, podemos dividir este intervalo em vários **bins** e substituir o valor pelo número do bin ao qual pertence. Isto pode ser feito usando o método [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html) do numpy. Neste caso, saberemos exatamente o tamanho do estado, pois dependerá do número de bins que selecionarmos para a digitalização. +- **Dividir em binários**. Se soubermos o intervalo de um certo valor, podemos dividi-lo num número de **bins**, e então substituir o valor pelo número do bin a que pertence. Isto pode ser feito usando o método do numpy [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html). Neste caso, saberemos exatamente o tamanho do estado, porque ele depende do número de bins selecionados para digitalização. + +✅ Podemos usar interpolação linear para trazer os valores para algum intervalo finito (por exemplo, de -20 a 20), e depois converter os números para inteiros arredondando-os. Isto dá-nos menos controlo sobre o tamanho do estado, especialmente se não conhecermos os intervalos exatos dos valores de entrada. Por exemplo, no nosso caso 2 dos 4 valores não têm limites superiores/inferiores, o que pode resultar num número infinito de estados. -✅ Podemos usar interpolação linear para trazer os valores para um intervalo finito (por exemplo, de -20 a 20) e, em seguida, converter os números em inteiros arredondando-os. Isto dá-nos um pouco menos de controlo sobre o tamanho do estado, especialmente se não conhecermos os intervalos exatos dos valores de entrada. Por exemplo, no nosso caso, 2 dos 4 valores não têm limites superiores/inferiores, o que pode resultar num número infinito de estados. +No nosso exemplo, usaremos a segunda abordagem. Como poderá notar mais tarde, apesar de não existirem limites superiores/inferiores definidos, esses valores raramente tomam valores fora de certos intervalos finitos, portanto esses estados com valores extremos serão muito raros. -No nosso exemplo, utilizaremos a segunda abordagem. Como poderá notar mais tarde, apesar de os limites superiores/inferiores não estarem definidos, esses valores raramente assumem valores fora de certos intervalos finitos, tornando os estados com valores extremos muito raros. - -1. Aqui está a função que irá receber a observação do nosso modelo e produzir um tuplo de 4 valores inteiros: (bloco de código 6) +1. Aqui está a função que recebe a observação do nosso modelo e produz uma tupla de 4 valores inteiros: (bloco de código 6) ```python def discretize(x): @@ -126,17 +146,17 @@ No nosso exemplo, utilizaremos a segunda abordagem. Como poderá notar mais tard 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)] # intervalos de valores para cada parâmetro + nbins = [20,20,10,10] # número de intervalos para cada parâmetro 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. Agora, execute uma simulação curta e observe esses valores discretos do ambiente. Sinta-se à vontade para experimentar tanto `discretize` quanto `discretize_bins` e veja se há alguma diferença. +1. Agora vamos executar uma curta simulação e observar esses valores discretos do ambiente. Sinta-se à vontade para experimentar tanto `discretize` como `discretize_bins` e verificar se existe alguma diferença. - ✅ `discretize_bins` retorna o número do bin, que é baseado em 0. Assim, para valores da variável de entrada próximos de 0, retorna o número do meio do intervalo (10). Em `discretize`, não nos preocupámos com o intervalo dos valores de saída, permitindo que sejam negativos, e assim os valores do estado não são deslocados, e 0 corresponde a 0. (bloco de código 8) + ✅ discretize_bins retorna o número do bin, que é 0-based. Assim, para valores da variável de entrada próximos de 0, retorna o número do meio do intervalo (10). No discretize, não nos preocupámos com o intervalo dos valores de saída, permitindo valores negativos, portanto os valores do estado não são deslocados, e 0 corresponde a 0. (bloco de código 8) ```python env.reset() @@ -145,20 +165,20 @@ No nosso exemplo, utilizaremos a segunda abordagem. Como poderá notar mais tard while not done: #env.render() obs, rew, done, info = env.step(env.action_space.sample()) - #print(discretize_bins(obs)) + #print(discretizar_bins(obs)) print(discretize(obs)) env.close() ``` - ✅ Descomente a linha que começa com `env.render` se quiser ver como o ambiente é executado. Caso contrário, pode executá-lo em segundo plano, o que é mais rápido. Utilizaremos esta execução "invisível" durante o nosso processo de Q-Learning. + ✅ Descomente a linha começada por env.render se quiser ver como o ambiente executa. De outra forma, pode executar em segundo plano, o que é mais rápido. Usaremos esta execução "invisível" durante o processo de Q-Learning. -## Estrutura da Q-Table +## A estrutura da Q-Table -Na lição anterior, o estado era um simples par de números de 0 a 8, e assim era conveniente representar a Q-Table por um tensor numpy com uma forma de 8x8x2. Se utilizarmos a discretização por bins, o tamanho do nosso vetor de estado também será conhecido, então podemos usar a mesma abordagem e representar o estado por um array com a forma 20x20x10x10x2 (aqui 2 é a dimensão do espaço de ação, e as primeiras dimensões correspondem ao número de bins que selecionámos para cada um dos parâmetros no espaço de observação). +Na nossa lição anterior, o estado era um par simples de números de 0 a 8, e assim era conveniente representar a Q-Table por um tensor numpy com forma 8x8x2. Se usarmos a discretização em bins, o tamanho do vetor estado é também conhecido, então podemos utilizar a mesma abordagem e representar o estado por um array da forma 20x20x10x10x2 (aqui 2 é a dimensão do espaço de ação, e as primeiras dimensões correspondem ao número de bins selecionados para cada um dos parâmetros no espaço de observação). -No entanto, às vezes as dimensões precisas do espaço de observação não são conhecidas. No caso da função `discretize`, nunca podemos ter certeza de que o nosso estado permanece dentro de certos limites, porque alguns dos valores originais não têm limites. Assim, utilizaremos uma abordagem ligeiramente diferente e representaremos a Q-Table por um dicionário. +No entanto, por vezes as dimensões precisas do espaço de observação não são conhecidas. No caso da função `discretize`, nunca poderemos ter a certeza que o nosso estado ficará dentro de certos limites, porque alguns dos valores originais não estão limitados. Assim, usaremos uma abordagem ligeiramente diferente e representaremos a Q-Table por um dicionário. -1. Use o par *(state,action)* como chave do dicionário, e o valor corresponderá ao valor da entrada na Q-Table. (bloco de código 9) +1. Use o par *(estado, ação)* como a chave do dicionário, e o valor corresponderá à entrada na Q-Table. (bloco de código 9) ```python Q = {} @@ -168,38 +188,38 @@ No entanto, às vezes as dimensões precisas do espaço de observação não sã return [Q.get((state,a),0) for a in actions] ``` - Aqui também definimos uma função `qvalues()`, que retorna uma lista de valores da Q-Table para um determinado estado que corresponde a todas as ações possíveis. Se a entrada não estiver presente na Q-Table, retornaremos 0 como padrão. + Aqui definimos também uma função `qvalues()`, que retorna uma lista de valores da Q-Table para um dado estado correspondendo a todas as ações possíveis. Se a entrada não estiver presente na Q-Table, retornaremos 0 como valor padrão. ## Vamos começar o Q-Learning -Agora estamos prontos para ensinar o Peter a equilibrar! +Agora estamos prontos para ensinar o Peter a equilibrar-se! 1. Primeiro, vamos definir alguns hiperparâmetros: (bloco de código 10) ```python - # hyperparameters + # hiperparâmetros alpha = 0.3 gamma = 0.9 epsilon = 0.90 ``` - Aqui, `alpha` é a **taxa de aprendizagem**, que define até que ponto devemos ajustar os valores atuais da Q-Table em cada passo. Na lição anterior, começámos com 1 e depois reduzimos `alpha` para valores mais baixos durante o treino. Neste exemplo, manteremos constante apenas por simplicidade, e pode experimentar ajustar os valores de `alpha` mais tarde. + Aqui, `alpha` é a **taxa de aprendizagem** que define em que medida devemos ajustar os valores atuais da Q-Table a cada passo. Na lição anterior começámos com 1 e depois diminuímos `alpha` para valores mais baixos durante o treino. Neste exemplo manteremos constante só para simplificar, e poderá experimentar ajustar os valores de `alpha` mais tarde. - `gamma` é o **fator de desconto**, que mostra até que ponto devemos priorizar a recompensa futura em relação à recompensa atual. + `gamma` é o **fator de desconto** que mostra até que ponto devemos priorizar a recompensa futura sobre a recompensa atual. - `epsilon` é o **fator de exploração/exploração**, que determina se devemos preferir explorar ou explorar. No nosso algoritmo, em `epsilon` por cento dos casos, selecionaremos a próxima ação de acordo com os valores da Q-Table, e no restante dos casos executaremos uma ação aleatória. Isto permitirá explorar áreas do espaço de busca que nunca vimos antes. + `epsilon` é o **fator de exploração/exploração** que determina se devemos preferir exploração à exploração ou vice-versa. No nosso algoritmo, em `epsilon` por cento dos casos selecionaremos a próxima ação segundo os valores da Q-Table, e no número de casos restantes executaremos uma ação aleatória. Isto permitir-nos-á explorar áreas do espaço de pesquisa que nunca vimos antes. - ✅ Em termos de equilíbrio - escolher uma ação aleatória (exploração) seria como um empurrão aleatório na direção errada, e o poste teria de aprender a recuperar o equilíbrio desses "erros". + ✅ Em termos de equilíbrio - escolher ação aleatória (exploração) seria como um empurrão aleatório na direção errada, e a vara teria de aprender a recuperar o equilíbrio desses "erros". ### Melhorar o algoritmo Podemos também fazer duas melhorias ao nosso algoritmo da lição anterior: -- **Calcular a recompensa cumulativa média**, ao longo de várias simulações. Iremos imprimir o progresso a cada 5000 iterações e calcularemos a média da recompensa cumulativa nesse período de tempo. Isto significa que, se obtivermos mais de 195 pontos, podemos considerar o problema resolvido, com qualidade ainda maior do que o necessário. - -- **Calcular o resultado cumulativo médio máximo**, `Qmax`, e armazenaremos a Q-Table correspondente a esse resultado. Quando executar o treino, notará que, às vezes, o resultado cumulativo médio começa a cair, e queremos manter os valores da Q-Table que correspondem ao melhor modelo observado durante o treino. +- **Calcular recompensa cumulativa média**, ao longo de várias simulações. Imprimiremos o progresso a cada 5000 iterações, e fizemos a média da recompensa cumulativa ao longo desse período. Isto significa que se obtivermos mais de 195 pontos - podemos considerar o problema resolvido, com qualidade até superior ao requerido. + +- **Calcular resultado médio máximo cumulativo**, `Qmax`, e guardaremos a Q-Table correspondente a esse resultado. Quando executar o treino vai notar que às vezes o resultado médio cumulativo começa a cair, e queremos manter os valores da Q-Table correspondentes ao melhor modelo observado durante o treino. -1. Colete todas as recompensas cumulativas em cada simulação no vetor `rewards` para posterior plotagem. (bloco de código 11) +1. Colete todas as recompensas cumulativas em cada simulação no vetor `rewards` para posterior representação gráfica. (bloco de código 11) ```python def probs(v,eps=1e-4): @@ -214,15 +234,15 @@ Podemos também fazer duas melhorias ao nosso algoritmo da lição anterior: obs = env.reset() done = False cum_reward=0 - # == do the simulation == + # == fazer a simulação == while not done: s = discretize(obs) if random.random() Qmax: @@ -240,25 +260,25 @@ Podemos também fazer duas melhorias ao nosso algoritmo da lição anterior: cum_rewards=[] ``` -O que pode notar a partir desses resultados: +O que poderá notar a partir desses resultados: -- **Perto do nosso objetivo**. Estamos muito próximos de alcançar o objetivo de obter 195 recompensas cumulativas ao longo de 100+ execuções consecutivas da simulação, ou podemos até ter alcançado! Mesmo que obtenhamos números menores, ainda não sabemos, porque calculamos a média ao longo de 5000 execuções, e apenas 100 execuções são necessárias no critério formal. +- **Próximo do nosso objetivo**. Estamos muito perto de atingir o objetivo de obter 195 recompensas cumulativas em mais de 100 execuções consecutivas da simulação, ou podemos até já ter alcançado! Mesmo que fiquemos com números menores, ainda assim não sabemos, porque fazemos a média sobre 5000 execuções, enquanto o critério formal requer apenas 100 execuções. + +- **A recompensa começa a cair**. Por vezes a recompensa começa a diminuir, o que significa que podemos "destruir" valores já aprendidos na Q-Table com outros que pioram a situação. -- **Recompensa começa a cair**. Às vezes, a recompensa começa a cair, o que significa que podemos "destruir" valores já aprendidos na Q-Table com os que pioram a situação. +Esta observação é mais claramente visível se representarmos graficamente o progresso do treino. -Esta observação é mais claramente visível se plotarmos o progresso do treino. +## Representação gráfica do progresso do treino -## Plotar o progresso do treino - -Durante o treino, coletámos o valor da recompensa cumulativa em cada uma das iterações no vetor `rewards`. Aqui está como fica quando o plotamos contra o número de iterações: +Durante o treino, recolhemos o valor da recompensa cumulativa em cada iteração no vetor `rewards`. Aqui está como isso fica quando o representamos contra o número de iteração: ```python plt.plot(rewards) ``` -![progresso bruto](../../../../8-Reinforcement/2-Gym/images/train_progress_raw.png) +![progresso cru](../../../../translated_images/pt-PT/train_progress_raw.2adfdf2daea09c59.webp) -A partir deste gráfico, não é possível dizer nada, porque, devido à natureza do processo de treino estocástico, a duração das sessões de treino varia muito. Para dar mais sentido a este gráfico, podemos calcular a **média móvel** ao longo de uma série de experimentos, digamos 100. Isto pode ser feito convenientemente usando `np.convolve`: (bloco de código 12) +A partir deste gráfico, não é possível concluir nada, porque devido à natureza do processo de treino estocástico, a duração das sessões de treino varia muito. Para fazer mais sentido deste gráfico, podemos calcular a **média móvel** ao longo de uma série de experiências, digamos 100. Isto pode ser feito comodamente usando `np.convolve`: (bloco de código 12) ```python def running_average(x,window): @@ -267,21 +287,24 @@ def running_average(x,window): plt.plot(running_average(rewards,100)) ``` -![progresso do treino](../../../../8-Reinforcement/2-Gym/images/train_progress_runav.png) +![progresso do treino](../../../../translated_images/pt-PT/train_progress_runav.c71694a8fa9ab359.webp) ## Variar os hiperparâmetros -Para tornar o treino mais estável, faz sentido ajustar alguns dos nossos hiperparâmetros durante o treino. Em particular: +Para tornar a aprendizagem mais estável, faz sentido ajustar alguns dos nossos hiperparâmetros durante o treino. Em particular: + +- **Para a taxa de aprendizagem**, `alpha`, podemos começar com valores próximos de 1 e depois continuar a diminuir esse parâmetro. Com o tempo, teremos bons valores de probabilidade na Q-Table e, portanto, devemos ajustá-los ligeiramente, sem sobrescrever completamente com novos valores. + +- **Aumentar epsilon**. Poderemos querer aumentar o `epsilon` lentamente, para explorar menos e explorar mais. Provavelmente faz sentido começar com um valor baixo de `epsilon` e subir até quase 1. + +> **Tarefa 1**: Brinque com os valores dos hiperparâmetros e veja se consegue alcançar uma recompensa cumulativa mais alta. Está a conseguir ultrapassar 195? -- **Para a taxa de aprendizagem**, `alpha`, podemos começar com valores próximos de 1 e depois ir reduzindo o parâmetro. Com o tempo, obteremos boas probabilidades na Q-Table e, assim, devemos ajustá-las ligeiramente, e não sobrescrever completamente com novos valores. -- **Aumentar epsilon**. Podemos querer aumentar o `epsilon` lentamente, para explorar menos e explorar mais. Provavelmente faz sentido começar com um valor mais baixo de `epsilon` e aumentar até quase 1. -> **Tarefa 1**: Experimente alterar os valores dos hiperparâmetros e veja se consegue obter uma recompensa cumulativa mais alta. Está a conseguir ultrapassar 195? -> **Tarefa 2**: Para resolver formalmente o problema, é necessário alcançar uma recompensa média de 195 ao longo de 100 execuções consecutivas. Meça isso durante o treino e certifique-se de que o problema foi resolvido formalmente! +> **Tarefa 2**: Para resolver formalmente o problema, precisa de obter uma recompensa média de 195 ao longo de 100 execuções consecutivas. Meça isso durante o treino e certifique-se de que resolveu formalmente o problema! ## Ver o resultado em ação -Seria interessante ver como o modelo treinado se comporta. Vamos executar a simulação e seguir a mesma estratégia de seleção de ações usada durante o treino, amostrando de acordo com a distribuição de probabilidade na Q-Table: (bloco de código 13) +Seria interessante ver realmente como o modelo treinado se comporta. Vamos correr a simulação e seguir a mesma estratégia de seleção de ação utilizada durante o treino, amostrando conforme a distribuição de probabilidade na Q-Table: (bloco de código 13) ```python obs = env.reset() @@ -295,17 +318,17 @@ while not done: env.close() ``` -Deverá aparecer algo como isto: +Deve ver algo como isto: -![um cartpole equilibrado](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) +![a balancing cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) --- ## 🚀Desafio -> **Tarefa 3**: Aqui, estávamos a usar a cópia final da Q-Table, que pode não ser a melhor. Lembre-se de que armazenámos a Q-Table com melhor desempenho na variável `Qbest`! Experimente o mesmo exemplo com a Q-Table de melhor desempenho, copiando `Qbest` para `Q`, e veja se nota alguma diferença. +> **Tarefa 3**: Aqui, estávamos a usar a cópia final da Q-Table, que pode não ser a melhor. Lembre-se que armazenámos a Q-Table com melhor desempenho na variável `Qbest`! Experimente o mesmo exemplo com a Q-Table com melhor desempenho copiando `Qbest` para `Q` e veja se nota a diferença. -> **Tarefa 4**: Aqui, não estávamos a selecionar a melhor ação em cada passo, mas sim a amostrar com a correspondente distribuição de probabilidade. Faria mais sentido selecionar sempre a melhor ação, com o valor mais alto na Q-Table? Isto pode ser feito utilizando a função `np.argmax` para descobrir o número da ação correspondente ao maior valor na Q-Table. Implemente esta estratégia e veja se melhora o equilíbrio. +> **Tarefa 4**: Aqui não selecionámos a melhor ação em cada passo, mas sim amostramos com a correspondente distribuição de probabilidade. Faz mais sentido selecionar sempre a melhor ação, com o maior valor da Q-Table? Isto pode ser feito usando a função `np.argmax` para descobrir o número da ação correspondente ao maior valor da Q-Table. Implemente esta estratégia e veja se melhora o equilíbrio. ## [Questionário pós-aula](https://ff-quizzes.netlify.app/en/ml/) @@ -314,11 +337,13 @@ Deverá aparecer algo como isto: ## Conclusão -Aprendemos agora como treinar agentes para alcançar bons resultados apenas fornecendo-lhes uma função de recompensa que define o estado desejado do jogo e dando-lhes a oportunidade de explorar inteligentemente o espaço de busca. Aplicámos com sucesso o algoritmo de Q-Learning em casos de ambientes discretos e contínuos, mas com ações discretas. +Agora aprendemos como treinar agentes para obter bons resultados apenas fornecendo-lhes uma função de recompensa que define o estado desejado do jogo, e dando-lhes oportunidade de explorar inteligentemente o espaço de busca. Aplicámos com sucesso o algoritmo Q-Learning nos casos de ambientes discretos e contínuos, mas com ações discretas. -É importante também estudar situações em que o estado das ações é contínuo e quando o espaço de observação é muito mais complexo, como a imagem do ecrã de um jogo Atari. Nestes problemas, muitas vezes é necessário usar técnicas de aprendizagem automática mais avançadas, como redes neuronais, para alcançar bons resultados. Esses tópicos mais avançados serão abordados no nosso próximo curso de IA mais avançado. +É importante também estudar situações onde o estado da ação é também contínuo, e quando o espaço de observação é muito mais complexo, como a imagem do ecrã do jogo Atari. Nesses problemas, frequentemente precisamos usar técnicas de aprendizagem automática mais poderosas, como redes neurais, para alcançar bons resultados. Esses tópicos mais avançados são o tema do nosso próximo curso mais avançado de IA. --- -**Aviso Legal**: -Este documento foi traduzido utilizando o serviço de tradução por IA [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original no seu idioma nativo deve ser considerado a fonte oficial. Para informações críticas, recomenda-se uma tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas resultantes do uso desta tradução. \ No newline at end of file + +**Aviso Legal**: +Este documento foi traduzido utilizando o serviço de tradução automática [Co-op Translator](https://github.com/Azure/co-op-translator). Embora nos esforcemos pela precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se tradução profissional humana. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas resultantes da utilização desta tradução. + \ No newline at end of file diff --git a/translations/ro/.co-op-translator.json b/translations/ro/.co-op-translator.json index ba20bfdcd..03a3e27ae 100644 --- a/translations/ro/.co-op-translator.json +++ b/translations/ro/.co-op-translator.json @@ -24,8 +24,8 @@ "language_code": "ro" }, "1-Introduction/3-fairness/README.md": { - "original_hash": "9a6b702d1437c0467e3c5c28d763dac2", - "translation_date": "2025-09-05T16:01:28+00:00", + "original_hash": "0f00d72169a0d37eecfd16d71e01700a", + "translation_date": "2026-07-14T06:16:38+00:00", "source_file": "1-Introduction/3-fairness/README.md", "language_code": "ro" }, @@ -54,8 +54,8 @@ "language_code": "ro" }, "2-Regression/1-Tools/README.md": { - "original_hash": "fa81d226c71d5af7a2cade31c1c92b88", - "translation_date": "2025-09-05T15:22:38+00:00", + "original_hash": "0b8635427b582d03ea4ab7089b93e505", + "translation_date": "2026-07-14T06:12:02+00:00", "source_file": "2-Regression/1-Tools/README.md", "language_code": "ro" }, @@ -72,8 +72,8 @@ "language_code": "ro" }, "2-Regression/2-Data/README.md": { - "original_hash": "7c077988328ebfe33b24d07945f16eca", - "translation_date": "2025-09-05T15:26:15+00:00", + "original_hash": "a58b2c4d16c6b122643391745ac15af6", + "translation_date": "2026-07-14T06:13:09+00:00", "source_file": "2-Regression/2-Data/README.md", "language_code": "ro" }, @@ -89,6 +89,12 @@ "source_file": "2-Regression/2-Data/solution/Julia/README.md", "language_code": "ro" }, + "2-Regression/2-Data/solution/notebook.ipynb": { + "original_hash": "96b95f8cf473481f2f371de8156f1571", + "translation_date": "2026-07-14T05:54:02+00:00", + "source_file": "2-Regression/2-Data/solution/notebook.ipynb", + "language_code": "ro" + }, "2-Regression/3-Linear/README.md": { "original_hash": "8b776e731c35b171d316d01d0e7b1369", "translation_date": "2026-04-26T19:09:51+00:00", @@ -457,7 +463,7 @@ }, "8-Reinforcement/1-QLearning/README.md": { "original_hash": "911efd5e595089000cb3c16fce1beab8", - "translation_date": "2025-09-05T16:41:50+00:00", + "translation_date": "2026-07-14T06:14:24+00:00", "source_file": "8-Reinforcement/1-QLearning/README.md", "language_code": "ro" }, @@ -481,7 +487,7 @@ }, "8-Reinforcement/2-Gym/README.md": { "original_hash": "107d5bb29da8a562e7ae72262d251a75", - "translation_date": "2025-09-05T16:47:06+00:00", + "translation_date": "2026-07-14T06:15:33+00:00", "source_file": "8-Reinforcement/2-Gym/README.md", "language_code": "ro" }, @@ -581,6 +587,19 @@ "source_file": "TROUBLESHOOTING.md", "language_code": "ro" }, + "__translation_failures__": { + "sketchnotes/LICENSE.md": { + "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f", + "source_file": "sketchnotes/LICENSE.md", + "language_code": "ro", + "failure_date": "2026-07-14T06:11:04+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:44+00:00", diff --git a/translations/ro/1-Introduction/3-fairness/README.md b/translations/ro/1-Introduction/3-fairness/README.md index d393c2de5..35503812b 100644 --- a/translations/ro/1-Introduction/3-fairness/README.md +++ b/translations/ro/1-Introduction/3-fairness/README.md @@ -1,146 +1,167 @@ -# Construirea soluțiilor de învățare automată cu AI responsabil - -![Rezumat al AI responsabil în învățarea automată într-o schiță](../../../../sketchnotes/ml-fairness.png) -> Schiță realizată de [Tomomi Imura](https://www.twitter.com/girlie_mac) - -## [Chestionar înainte de lecție](https://ff-quizzes.netlify.app/en/ml/) +# Construirea soluțiilor de Machine Learning cu AI responsabil + +![Sumar al AI responsabil în Machine Learning într-un sketchnote](../../../../translated_images/ro/ml-fairness.ef296ebec6afc98a.webp) +> Sketchnote de [Tomomi Imura](https://www.twitter.com/girlie_mac) +## [Test înainte de lecție](https://ff-quizzes.netlify.app/en/ml/) + ## Introducere -În acest curriculum, vei începe să descoperi cum învățarea automată poate și influențează viețile noastre de zi cu zi. Chiar și acum, sistemele și modelele sunt implicate în sarcini de luare a deciziilor zilnice, cum ar fi diagnosticarea în sănătate, aprobarea împrumuturilor sau detectarea fraudei. De aceea, este important ca aceste modele să funcționeze bine pentru a oferi rezultate de încredere. La fel ca orice aplicație software, sistemele AI pot să nu îndeplinească așteptările sau să aibă un rezultat nedorit. De aceea, este esențial să putem înțelege și explica comportamentul unui model AI. +În acest curriculum, vei începe să descoperi cum învățarea automată poate și impactează viața noastră de zi cu zi. Chiar acum, sistemele și modelele sunt implicate în sarcini zilnice de luare a deciziilor, cum ar fi diagnostice medicale, aprobări de împrumuturi sau detectarea fraudelor. Prin urmare, este important ca aceste modele să funcționeze bine pentru a oferi rezultate de încredere. La fel ca orice aplicație software, sistemele AI pot să nu corespundă așteptărilor sau să aibă un rezultat nedorit. De aceea este esențial să înțelegem și să explicăm comportamentul unui model AI. -Imaginează-ți ce se poate întâmpla atunci când datele pe care le folosești pentru a construi aceste modele nu includ anumite demografii, cum ar fi rasa, genul, opiniile politice, religia sau reprezintă disproporționat astfel de demografii. Ce se întâmplă când rezultatul modelului este interpretat astfel încât să favorizeze o anumită demografie? Care este consecința pentru aplicație? În plus, ce se întâmplă când modelul are un rezultat advers și este dăunător pentru oameni? Cine este responsabil pentru comportamentul sistemelor AI? Acestea sunt câteva întrebări pe care le vom explora în acest curriculum. +Imaginează-ți ce se poate întâmpla când datele pe care le folosești pentru construirea acestor modele lipsesc anumite demografii, cum ar fi rasa, genul, orientarea politică, religia, sau reprezintă disproporționat astfel de demografii. Ce se întâmplă când rezultatul modelului este interpretat în favoarea unui anumit grup demografic? Care este consecința pentru aplicație? În plus, ce se întâmplă când modelul are un rezultat advers și este dăunător pentru oameni? Cine este responsabil pentru comportamentul sistemelor AI? Acestea sunt câteva întrebări pe care le vom explora în acest curriculum. -În această lecție, vei: +În această lecție vei: -- Conștientiza importanța echității în învățarea automată și daunele legate de echitate. -- Deveni familiar cu practica de explorare a valorilor extreme și scenariilor neobișnuite pentru a asigura fiabilitatea și siguranța. -- Înțelege necesitatea de a împuternici pe toată lumea prin proiectarea de sisteme incluzive. -- Explora cât de vital este să protejezi confidențialitatea și securitatea datelor și a oamenilor. -- Observa importanța unei abordări transparente pentru a explica comportamentul modelelor AI. -- Fi conștient de faptul că responsabilitatea este esențială pentru a construi încrederea în sistemele AI. +- Să-ți crești conștientizarea asupra importanței echității în învățarea automată și a daunelor legate de echitate. +- Să te familiarizezi cu practica explorării excepțiilor și scenariilor neobișnuite pentru a asigura fiabilitatea și siguranța. +- Să dobândești înțelegere despre nevoia de a împuternici pe toată lumea prin proiectarea sistemelor incluzive. +- Să explorezi cât de vital este să protejezi intimitatea și securitatea datelor și a persoanelor. +- Să vezi importanța unei abordări transparențe pentru a explica comportamentul modelelor AI. +- Să fii atent la cum responsabilitatea este esențială pentru a construi încredere în sistemele AI. -## Prerechizite +## Cerințe prealabile -Ca prerechizite, te rugăm să urmezi "Principiile AI Responsabil" pe Learn Path și să vizionezi videoclipul de mai jos pe acest subiect: +Ca cerință prealabilă, te rugăm să parcurgi "Principiile AI-ului Responsabil" în cadrul unui traseu de învățare și să urmărești videoclipul de mai jos pe acest subiect: -Află mai multe despre AI Responsabil urmând acest [Learning Path](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) +Află mai multe despre AI responsabil urmând acest [Traseu de învățare](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) -[![Abordarea Microsoft pentru AI Responsabil](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Abordarea Microsoft pentru AI Responsabil") +[![Abordarea Microsoft față de AI responsabil](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Abordarea Microsoft față de AI responsabil") -> 🎥 Click pe imaginea de mai sus pentru un videoclip: Abordarea Microsoft pentru AI Responsabil +> 🎥 Click pe imaginea de mai sus pentru un video: Abordarea Microsoft față de AI responsabil ## Echitate -Sistemele AI ar trebui să trateze pe toată lumea în mod echitabil și să evite să afecteze grupuri similare de oameni în moduri diferite. De exemplu, atunci când sistemele AI oferă recomandări pentru tratamente medicale, aplicații de împrumut sau angajare, acestea ar trebui să facă aceleași recomandări pentru toți cei cu simptome, circumstanțe financiare sau calificări profesionale similare. Fiecare dintre noi, ca oameni, purtăm prejudecăți moștenite care ne afectează deciziile și acțiunile. Aceste prejudecăți pot fi evidente în datele pe care le folosim pentru a antrena sistemele AI. Astfel de manipulări pot apărea uneori neintenționat. Este adesea dificil să conștientizezi când introduci prejudecăți în date. +Sistemele AI ar trebui să trateze pe toată lumea în mod echitabil și să evite să afecteze grupuri similare de oameni în moduri diferite. De exemplu, când sistemele AI oferă recomandări pentru tratament medical, aplicații de împrumuturi sau angajare, ele ar trebui să facă aceleași recomandări pentru toți cu simptome similare, condiții financiare sau calificări profesionale asemănătoare. Fiecare dintre noi ca oameni purtăm prejudecăți moștenite care ne influențează deciziile și acțiunile. Aceste prejudecăți pot fi evidente în datele folosite pentru antrenarea sistemelor AI. O astfel de manipulare poate apărea uneori neintenționat. Este adesea dificil de conștientizat când introduci un bias în date. -**„Nedreptatea”** cuprinde impacturi negative sau „daune” pentru un grup de oameni, cum ar fi cei definiți în termeni de rasă, gen, vârstă sau statut de dizabilitate. Principalele daune legate de echitate pot fi clasificate astfel: +**„Nedreptatea”** cuprinde impacturi negative, sau „daune”, pentru un grup de oameni, cum ar fi cele definite prin rasă, gen, vârstă sau statut de dizabilitate. Principalele daune legate de echitate pot fi clasificate astfel: -- **Alocare**, dacă un gen sau o etnie, de exemplu, este favorizată în detrimentul alteia. -- **Calitatea serviciului**. Dacă antrenezi datele pentru un scenariu specific, dar realitatea este mult mai complexă, aceasta duce la un serviciu slab. De exemplu, un dozator de săpun care nu pare să detecteze persoanele cu pielea închisă la culoare. [Referință](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773) -- **Denigrare**. Criticarea și etichetarea nedreaptă a ceva sau a cuiva. De exemplu, o tehnologie de etichetare a imaginilor a etichetat în mod infam imagini ale persoanelor cu pielea închisă la culoare ca fiind gorile. -- **Reprezentare excesivă sau insuficientă**. Ideea este că un anumit grup nu este văzut într-o anumită profesie, iar orice serviciu sau funcție care continuă să promoveze acest lucru contribuie la daune. -- **Stereotipizare**. Asocierea unui grup dat cu atribute predefinite. De exemplu, un sistem de traducere între engleză și turcă poate avea inexactități din cauza cuvintelor asociate stereotipic cu genul. +- **Alocare**, dacă un gen sau o etnie, de exemplu, este favorizată în detrimentul altuia. +- **Calitatea serviciului**. Dacă antrenezi date pentru un scenariu specific, dar realitatea este mult mai complexă, rezultă un serviciu slab. De exemplu, un dozator de săpun care nu poate detecta persoane cu piele închisă la culoare. [Referință](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773) +- **Denigrare**. Criticarea și etichetarea nedreaptă a unui lucru sau persoană. De exemplu, o tehnologie de etichetare a imaginilor care a etichetat infam imagini ale persoanelor cu piele închisă la culoare ca gorile. +- **Supra- sau subreprezentare**. Ideea este că un grup anume nu apare într-o anumită profesie, iar orice serviciu sau funcție ce promovează acest lucru contribuie la daune. +- **Stereotipizare**. Asocierea unui grup cu atribute prealabile atribuite. De exemplu, un sistem de traducere între engleză și turcă poate avea inexactități din cauza cuvintelor cu asocieri stereotipice de gen. -![traducere în turcă](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) +![traducere în turcă](../../../../translated_images/ro/gender-bias-translate-en-tr.f185fd8822c2d437.webp) > traducere în turcă -![traducere înapoi în engleză](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) +![traducere înapoi în engleză](../../../../translated_images/ro/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) > traducere înapoi în engleză -Când proiectăm și testăm sisteme AI, trebuie să ne asigurăm că AI este echitabil și nu este programat să ia decizii părtinitoare sau discriminatorii, pe care nici oamenii nu au voie să le ia. Garantarea echității în AI și învățarea automată rămâne o provocare complexă sociotehnică. +La proiectarea și testarea sistemelor AI, trebuie să ne asigurăm că AI este echitabil și nu este programat să ia decizii părtinitoare sau discriminatorii, decizii pe care oamenii sunt de asemenea opriți să le ia. Garantarea echității în AI și învățarea automată rămâne o provocare sociotehnică complexă. ### Fiabilitate și siguranță -Pentru a construi încredere, sistemele AI trebuie să fie fiabile, sigure și consistente în condiții normale și neașteptate. Este important să știm cum se vor comporta sistemele AI într-o varietate de situații, mai ales când sunt valori extreme. Când construim soluții AI, trebuie să ne concentrăm substanțial pe modul de gestionare a unei varietăți largi de circumstanțe pe care soluțiile AI le-ar putea întâlni. De exemplu, o mașină autonomă trebuie să pună siguranța oamenilor pe primul loc. Ca rezultat, AI-ul care alimentează mașina trebuie să ia în considerare toate scenariile posibile pe care mașina le-ar putea întâlni, cum ar fi noaptea, furtuni, viscol, copii care traversează strada, animale de companie, construcții pe drum etc. Cât de bine poate gestiona un sistem AI o gamă largă de condiții în mod fiabil și sigur reflectă nivelul de anticipare pe care l-a avut specialistul în date sau dezvoltatorul AI în timpul proiectării sau testării sistemului. +Pentru a construi încredere, sistemele AI trebuie să fie fiabile, sigure și consistente în condiții normale și neașteptate. Este important să știm cum se vor comporta sistemele AI în diverse situații, mai ales când sunt excepții. La construirea soluțiilor AI trebuie să existe un focus substanțial pe gestionarea unei varietăți largi de circumstanțe pe care soluțiile AI le-ar putea întâlni. De exemplu, o mașină autonomă trebuie să pună siguranța oamenilor pe primul loc. Drept urmare, AI care conduce mașina trebuie să ia în considerare toate scenariile posibile pe care mașina le-ar putea întâlni, cum ar fi noaptea, furtuni sau ninsori puternice, copii care traversează strada, animale de companie, construcții rutiere etc. Cât de bine poate gestiona un sistem AI o gamă largă de condiții în mod fiabil și sigur reflectă nivelul de anticipare pe care l-a avut omul de știință în date sau dezvoltatorul AI în timpul proiectării sau testării sistemului. -> [🎥 Click aici pentru un videoclip: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl) +> [🎥 Click aici pentru un video: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl) ### Incluziune -Sistemele AI ar trebui să fie proiectate pentru a implica și împuternici pe toată lumea. Când proiectează și implementează sisteme AI, specialiștii în date și dezvoltatorii AI identifică și abordează barierele potențiale din sistem care ar putea exclude neintenționat oamenii. De exemplu, există 1 miliard de persoane cu dizabilități în întreaga lume. Cu avansarea AI, acestea pot accesa o gamă largă de informații și oportunități mai ușor în viața lor de zi cu zi. Abordarea barierelor creează oportunități de a inova și dezvolta produse AI cu experiențe mai bune care beneficiază pe toată lumea. +Sistemele AI trebuie proiectate pentru a implica și împuternici pe toată lumea. La proiectarea și implementarea sistemelor AI, oamenii de știință în date și dezvoltatorii AI identifică și abordează posibile bariere în sistem care ar putea exclude neintenționat oamenii. De exemplu, există 1 miliard de persoane cu dizabilități în întreaga lume. Odată cu avansul AI, acestea pot accesa o gamă largă de informații și oportunități mai ușor în viața lor de zi cu zi. Prin eliminarea barierelor se creează oportunități de a inova și dezvolta produse AI cu experiențe mai bune care să beneficieze pe toată lumea. -> [🎥 Click aici pentru un videoclip: incluziunea în AI](https://www.microsoft.com/videoplayer/embed/RE4vl9v) +> [🎥 Click aici pentru un video: incluziune în AI](https://www.microsoft.com/videoplayer/embed/RE4vl9v) -### Securitate și confidențialitate +### Securitate și intimitate -Sistemele AI ar trebui să fie sigure și să respecte confidențialitatea oamenilor. Oamenii au mai puțină încredere în sistemele care le pun în pericol confidențialitatea, informațiile sau viețile. Când antrenăm modele de învățare automată, ne bazăm pe date pentru a produce cele mai bune rezultate. În acest proces, originea datelor și integritatea lor trebuie luate în considerare. De exemplu, datele au fost trimise de utilizatori sau sunt disponibile public? Apoi, în timp ce lucrăm cu datele, este crucial să dezvoltăm sisteme AI care pot proteja informațiile confidențiale și rezista atacurilor. Pe măsură ce AI devine mai răspândit, protejarea confidențialității și securizarea informațiilor personale și de afaceri devin din ce în ce mai critice și complexe. Problemele de confidențialitate și securitate a datelor necesită o atenție deosebită pentru AI, deoarece accesul la date este esențial pentru ca sistemele AI să facă predicții și decizii precise și informate despre oameni. +Sistemele AI trebuie să fie sigure și să respecte intimitatea persoanelor. Oamenii au mai puțină încredere în sistemele care le pun intimitatea, informațiile sau viețile în pericol. Când antrenăm modelele de învățare automată, ne bazăm pe date pentru a obține cele mai bune rezultate. În acest proces, trebuie să considerăm originea datelor și integritatea acestora. De exemplu, datele au fost furnizate de utilizator sau sunt disponibile public? În plus, în timpul lucrului cu datele, este crucial să dezvoltăm sisteme AI care să poată proteja informațiile confidențiale și să reziste atacurilor. Pe măsură ce AI devine tot mai răspândit, protejarea intimității și securizarea informațiilor personale și de afaceri importante devin din ce în ce mai critice și complexe. Problemele de intimitate și securitate a datelor necesită o atenție deosebită pentru AI pentru că accesul la date este esențial pentru ca sistemele AI să facă predicții și decizii corecte și informate despre oameni. -> [🎥 Click aici pentru un videoclip: securitatea în AI](https://www.microsoft.com/videoplayer/embed/RE4voJF) +> [🎥 Click aici pentru un video: securitate în AI](https://www.microsoft.com/videoplayer/embed/RE4voJF) -- Industria a făcut progrese semnificative în confidențialitate și securitate, alimentate în mod semnificativ de reglementări precum GDPR (Regulamentul General privind Protecția Datelor). -- Totuși, cu sistemele AI trebuie să recunoaștem tensiunea dintre necesitatea mai multor date personale pentru a face sistemele mai personale și eficiente – și confidențialitatea. -- La fel ca la nașterea computerelor conectate la internet, vedem o creștere semnificativă a numărului de probleme de securitate legate de AI. -- În același timp, am văzut AI fiind folosit pentru a îmbunătăți securitatea. De exemplu, majoritatea scanerelor antivirus moderne sunt alimentate de euristici AI. -- Trebuie să ne asigurăm că procesele noastre de știința datelor se îmbină armonios cu cele mai recente practici de confidențialitate și securitate. +- Ca industrie, am făcut progrese semnificative în intimitate și securitate, impulsionate semnificativ de reglementări precum GDPR (Regulamentul General pentru Protecția Datelor). +- Totuși, în cazul sistemelor AI trebuie să recunoaștem tensiunea dintre necesitatea de mai multe date personale pentru a face sistemele mai personale și eficiente – și intimitate. +- La fel cum la nașterea calculatoarelor conectate la internet am văzut o creștere masivă a problemelor de securitate, vedem acum o creștere semnificativă a problemelor de securitate legate de AI. +- În același timp, am văzut AI folosit pentru îmbunătățirea securității. De exemplu, majoritatea scanerelor antivirale moderne sunt astăzi conduse de euristici AI. +- Trebuie să ne asigurăm că procesele noastre de Data Science sunt în armonie cu cele mai noi practici de intimitate și securitate. -### Transparență -Sistemele AI ar trebui să fie ușor de înțeles. O parte crucială a transparenței este explicarea comportamentului sistemelor AI și a componentelor acestora. Îmbunătățirea înțelegerii sistemelor AI necesită ca părțile interesate să înțeleagă cum și de ce funcționează acestea, astfel încât să poată identifica potențiale probleme de performanță, preocupări legate de siguranță și confidențialitate, prejudecăți, practici de excludere sau rezultate neintenționate. De asemenea, credem că cei care folosesc sistemele AI ar trebui să fie sinceri și deschiși cu privire la momentul, motivul și modul în care aleg să le implementeze. La fel ca și limitările sistemelor pe care le folosesc. De exemplu, dacă o bancă folosește un sistem AI pentru a sprijini deciziile de creditare pentru consumatori, este important să examineze rezultatele și să înțeleagă ce date influențează recomandările sistemului. Guvernele încep să reglementeze AI în diverse industrii, astfel încât specialiștii în date și organizațiile trebuie să explice dacă un sistem AI îndeplinește cerințele de reglementare, mai ales atunci când există un rezultat nedorit. +### Transparență +Sistemele AI trebuie să fie înțelese. O parte crucială a transparenței este explicarea comportamentului sistemelor AI și a componentelor acestora. Îmbunătățirea înțelegerii sistemelor AI necesită ca părțile interesate să înțeleagă cum și de ce funcționează astfel încât să poată identifica eventuale probleme de performanță, preocupări de siguranță și intimitate, prejudecăți, practici excluzive sau rezultate nedorite. Credem, de asemenea, că cei care folosesc sistemele AI trebuie să fie sinceri și deschiși privind când, de ce și cum aleg să le utilizeze. Dar și limitările sistemelor pe care le folosesc. De exemplu, dacă o bancă folosește un sistem AI pentru a susține deciziile de creditare către consumatori, este important să examineze rezultatele și să înțeleagă ce date influențează recomandările sistemului. Guvernele încep să reglementeze AI-ul în diverse industrii, așa că oamenii de știință în date și organizațiile trebuie să explice dacă un sistem AI respectă cerințele reglementărilor, mai ales când există un rezultat nedorit. -> [🎥 Click aici pentru un videoclip: transparența în AI](https://www.microsoft.com/videoplayer/embed/RE4voJF) +> [🎥 Click aici pentru un video: transparență în AI](https://www.microsoft.com/videoplayer/embed/RE4voJF) -- Deoarece sistemele AI sunt atât de complexe, este dificil să înțelegem cum funcționează și să interpretăm rezultatele. +- Pentru că sistemele AI sunt atât de complexe, este greu să înțelegem cum funcționează și să interpretăm rezultatele. - Această lipsă de înțelegere afectează modul în care aceste sisteme sunt gestionate, operaționalizate și documentate. -- Mai important, această lipsă de înțelegere afectează deciziile luate pe baza rezultatelor produse de aceste sisteme. +- Mai important, lipsa de înțelegere afectează deciziile luate folosind rezultatele produse de aceste sisteme. ### Responsabilitate + +Persoanele care proiectează și implementează sistemele AI trebuie să fie responsabile pentru modul în care operază sistemele lor. Nevoia de responsabilitate este deosebit de crucială în cazul tehnologiilor sensibile, cum ar fi recunoașterea facială. Recent, există o cerere crescândă pentru tehnologia de recunoaștere facială, în special din partea organizațiilor de aplicare a legii care văd potențialul acestei tehnologii în utilizări precum găsirea copiilor dispăruți. Totuși, aceste tehnologii ar putea fi folosite de un guvern pentru a pune în pericol libertățile fundamentale ale cetățenilor prin, de exemplu, monitorizarea continuă a persoanelor specifice. Prin urmare, oamenii de știință în date și organizațiile trebuie să fie responsabile pentru modul în care sistemul lor AI influențează indivizii sau societatea. -Persoanele care proiectează și implementează sisteme AI trebuie să fie responsabile pentru modul în care funcționează sistemele lor. Necesitatea responsabilității este deosebit de crucială în cazul tehnologiilor sensibile, cum ar fi recunoașterea facială. Recent, a existat o cerere tot mai mare pentru tehnologia de recunoaștere facială, mai ales din partea organizațiilor de aplicare a legii care văd potențialul tehnologiei în utilizări precum găsirea copiilor dispăruți. Cu toate acestea, aceste tehnologii ar putea fi utilizate de un guvern pentru a pune în pericol libertățile fundamentale ale cetățenilor săi, de exemplu, prin supravegherea continuă a unor indivizi specifici. Prin urmare, specialiștii în date și organizațiile trebuie să fie responsabili pentru modul în care sistemul lor AI afectează indivizii sau societatea. +[![Cercetător principal în AI avertizează despre supravegherea în masă prin recunoaștere facială](../../../../translated_images/ro/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Abordarea Microsoft față de AI responsabil") -[![Cercetător de top în AI avertizează asupra supravegherii masive prin recunoaștere facială](../../../../1-Introduction/3-fairness/images/accountability.png)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Abordarea Microsoft pentru AI Responsabil") +> 🎥 Click pe imaginea de mai sus pentru un video: Avertismente despre supravegherea în masă prin recunoaștere facială -> 🎥 Click pe imaginea de mai sus pentru un videoclip: Avertismente despre supravegherea masivă prin recunoaștere facială - -În cele din urmă, una dintre cele mai mari întrebări pentru generația noastră, ca prima generație care aduce AI în societate, este cum să ne asigurăm că computerele vor rămâne responsabile față de oameni și cum să ne asigurăm că persoanele care proiectează computere rămân responsabile față de toți ceilalți. +În cele din urmă, una dintre cele mai mari întrebări pentru generația noastră, ca prima generație care aduce AI în societate, este cum să asigurăm că calculatoarele vor rămâne responsabile față de oameni și cum să asigurăm că persoanele care proiectează calculatoarele rămân responsabile față de toți ceilalți. ## Evaluarea impactului -Înainte de a antrena un model de învățare automată, este important să efectuezi o evaluare a impactului pentru a înțelege scopul sistemului AI; utilizarea intenționată; unde va fi implementat; și cine va interacționa cu sistemul. Acestea sunt utile pentru evaluatorii sau testerii care analizează sistemul pentru a ști ce factori să ia în considerare atunci când identifică riscuri potențiale și consecințe așteptate. +Înainte de a antrena un model de învățare automată, este important să se efectueze o evaluare a impactului pentru a înțelege scopul sistemului AI; care este utilizarea intenționată; unde va fi implementat; și cine va interacționa cu sistemul. Acestea sunt utile pentru recenzori sau testeri care evaluează sistemul să știe ce factori să ia în considerare la identificarea riscurilor potențiale și a consecințelor așteptate. + +Următoarele sunt domenii de interes la efectuarea unei evaluări a impactului: -Următoarele sunt domenii de interes atunci când se efectuează o evaluare a impactului: +* **Impact advers asupra indivizilor**. A fi conștient de orice restricții sau cerințe, utilizare nesuportată sau orice limitări cunoscute ce pot afecta performanța sistemului este vital pentru a asigura că sistemul nu este folosit într-un mod care să cauzeze daune indivizilor. +* **Cerințe privind datele**. Înțelegerea modului și locului unde sistemul va folosi datele permite recenzenților să exploreze orice cerințe de date de care trebuie să se țină cont (de ex. regulamente GDPR sau HIPAA). În plus, să examineze dacă sursa sau cantitatea de date este suficientă pentru antrenare. +* **Sumar al impactului**. Strânge o listă de potențiale daune care pot apărea din utilizarea sistemului. Pe tot parcursul ciclului de viață al ML, verifică dacă problemele identificate sunt atenuate sau rezolvate. +* **Obiective aplicabile** pentru fiecare dintre cele șase principii de bază. Evaluează dacă obiectivele fiecăruia dintre principii sunt atinse și dacă există lacune. -* **Impact negativ asupra indivizilor**. Conștientizarea oricăror restricții sau cerințe, utilizări neacceptate sau limitări cunoscute care împiedică performanța sistemului este vitală pentru a ne asigura că sistemul nu este utilizat într-un mod care ar putea dăuna indivizilor. -* **Cerințe de date**. Înțelegerea modului și locului în care sistemul va utiliza datele permite evaluatorilor să exploreze orice cerințe de date de care trebuie să fii conștient (de exemplu, reglementările GDPR sau HIPPA). În plus, examinează dacă sursa sau cantitatea de date este suficientă pentru antrenare. -* **Rezumatul impactului**. Adună o listă de potențiale daune care ar putea apărea din utilizarea sistemului. Pe parcursul ciclului de viață al ML, verifică dacă problemele identificate sunt atenuate sau abordate. -* **Obiective aplicabile** pentru fiecare dintre cele șase principii de bază. Evaluează dacă obiectivele fiecărui principiu sunt îndeplinite și dacă există lacune. -## Debugging cu AI responsabil +## Depanare cu AI responsabil -Similar cu depanarea unei aplicații software, depanarea unui sistem AI este un proces necesar de identificare și rezolvare a problemelor din sistem. Există mulți factori care ar putea afecta un model să nu funcționeze conform așteptărilor sau responsabil. Majoritatea metricilor tradiționale de performanță ale modelului sunt agregate cantitative ale performanței modelului, care nu sunt suficiente pentru a analiza modul în care un model încalcă principiile AI responsabil. Mai mult, un model de învățare automată este o cutie neagră, ceea ce face dificilă înțelegerea a ceea ce determină rezultatul său sau oferirea unei explicații atunci când face o greșeală. Mai târziu în acest curs, vom învăța cum să folosim tabloul de bord AI Responsabil pentru a ajuta la depanarea sistemelor AI. Tabloul de bord oferă un instrument holistic pentru specialiștii în date și dezvoltatorii AI pentru a efectua: +Asemenea depanării unei aplicații software, depanarea unui sistem AI este un proces necesar de identificare și rezolvare a problemelor din sistem. Există mulți factori care pot determina un model să nu performeze conform așteptărilor sau responsabil. Majoritatea metricilor tradiționale de performanță a modelului sunt agregate cantitative ale performanței modelului, care nu sunt suficiente pentru a analiza cum un model încalcă principiile AI responsabile. Mai mult, un model de învățare automată este o cutie neagră care face dificilă înțelegerea ce determină rezultatul său sau oferirea unei explicații când face o greșeală. Mai târziu în acest curs, vom învăța cum să folosim tabloul de bord Responsible AI pentru a ajuta la depanarea sistemelor AI. Tabloul de bord oferă un instrument holistic pentru oamenii de știință în date și dezvoltatorii AI pentru a realiza: * **Analiza erorilor**. Pentru a identifica distribuția erorilor modelului care poate afecta echitatea sau fiabilitatea sistemului. -* **Prezentarea generală a modelului**. Pentru a descoperi unde există disparități în performanța modelului în diferite cohorte de date. -* **Analiza datelor**. Pentru a înțelege distribuția datelor și a identifica orice potențială prejudecată în date care ar putea duce la probleme de echitate, incluziune și fiabilitate. -* **Interpretabilitatea modelului**. Pentru a înțelege ce afectează sau influențează predicțiile modelului. Acest lucru ajută la explicarea comportamentului modelului, ceea ce este important pentru transparență și -Urmărește acest workshop pentru a aprofunda subiectele: +* **Prezentare generală a modelului**. Pentru a descoperi unde există disparități în performanța modelului pe diferite cohorte de date. +* **Analiza datelor**. Pentru a înțelege distribuția datelor și a identifica orice potențial bias în date care ar putea duce la probleme de echitate, incluziune și fiabilitate. +* **Interpretabilitatea modelului**. Pentru a înțelege ce afectează sau influențează predicțiile modelului. Aceasta ajută la explicarea comportamentului modelului, ceea ce este important pentru transparență și responsabilitate. -- În căutarea AI responsabil: Aplicarea principiilor în practică de Besmira Nushi, Mehrnoosh Sameki și Amit Sharma -[![Responsible AI Toolbox: Un cadru open-source pentru construirea AI responsabil](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: Un cadru open-source pentru construirea AI responsabil") +## 🚀 Provocare + +Pentru a preveni apariția daunelor, ar trebui să: + +- avem o diversitate de background-uri și perspective în rândul celor care lucrează la sisteme +- investim în seturi de date care reflectă diversitatea societății noastre +- dezvoltăm metode mai bune pe tot parcursul ciclului de viață al învățării automate pentru a detecta și corecta AI responsabil atunci când apare + +Gândește-te la scenarii din viața reală în care lipsa de încredere într-un model este evidentă în construirea și utilizarea modelului. Ce altceva ar trebui să luăm în considerare? + +## [Test după lecție](https://ff-quizzes.netlify.app/en/ml/) + +## Recapitulare & Studiu individual + + +În această lecție, ai învățat câteva noțiuni de bază despre conceptele de echitate și inechitate în învățarea automată. + +Urmărește acest atelier pentru a aprofunda subiectele: + +- În căutarea AI responsabil: Aplicarea principiilor în practică de Besmira Nushi, Mehrnoosh Sameki și Amit Sharma +[![Responsible AI Toolbox: An open-source framework for building responsible AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") -> 🎥 Click pe imaginea de mai sus pentru un videoclip: RAI Toolbox: Un cadru open-source pentru construirea AI responsabil de Besmira Nushi, Mehrnoosh Sameki și Amit Sharma +> 🎥 Apasă pe imaginea de mai sus pentru un videoclip: RAI Toolbox: Un cadru open-source pentru construirea AI responsabil de Besmira Nushi, Mehrnoosh Sameki și Amit Sharma -De asemenea, citește: +De asemenea, citește: - Centrul de resurse RAI al Microsoft: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) - Grupul de cercetare FATE al Microsoft: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/) -RAI Toolbox: +RAI Toolbox: -- [Repository-ul GitHub Responsible AI Toolbox](https://github.com/microsoft/responsible-ai-toolbox) +- [Depozitul GitHub Responsible AI Toolbox](https://github.com/microsoft/responsible-ai-toolbox) -Citește despre instrumentele Azure Machine Learning pentru asigurarea echității: +Citește despre instrumentele Azure Machine Learning pentru a asigura echitatea: - [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott) -## Temă +## Tema [Explorează RAI Toolbox](assignment.md) --- -**Declinare de responsabilitate**: -Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file + +**Declinare a responsabilității**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). În timp ce ne străduim pentru acuratețe, vă rugăm să rețineți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa nativă trebuie considerat sursa autorizată. Pentru informații critice, se recomandă traducerea profesională realizată de un om. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care decurg din utilizarea acestei traduceri. + \ No newline at end of file diff --git a/translations/ro/2-Regression/1-Tools/README.md b/translations/ro/2-Regression/1-Tools/README.md index ef5c4156c..764ecd130 100644 --- a/translations/ro/2-Regression/1-Tools/README.md +++ b/translations/ro/2-Regression/1-Tools/README.md @@ -1,114 +1,115 @@ # Începeți cu Python și Scikit-learn pentru modele de regresie -![Rezumat al regresiilor într-un sketchnote](../../../../sketchnotes/ml-regression.png) +![Sumar al regresiilor într-un sketchnote](../../../../translated_images/ro/ml-regression.4e4f70e3b3ed446e.webp) > Sketchnote de [Tomomi Imura](https://www.twitter.com/girlie_mac) -## [Chestionar înainte de lecție](https://ff-quizzes.netlify.app/en/ml/) +## [Chestionar pre-lectură](https://ff-quizzes.netlify.app/en/ml/) -> ### [Această lecție este disponibilă și în R!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html) +> ### [Această lecție este disponibilă în R!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html) ## Introducere -În aceste patru lecții, veți descoperi cum să construiți modele de regresie. Vom discuta în curând la ce sunt utile acestea. Dar înainte de a începe, asigurați-vă că aveți instrumentele potrivite pentru a începe procesul! +În aceste patru lecții, veți descoperi cum să construiți modele de regresie. Vom discuta în curând la ce folosesc acestea. Dar înainte să faceți orice, asigurați-vă că aveți instrumentele potrivite pentru a începe procesul! În această lecție, veți învăța cum să: - Configurați computerul pentru sarcini locale de învățare automată. -- Lucrați cu Jupyter notebooks. -- Utilizați Scikit-learn, inclusiv instalarea acestuia. +- Lucrați cu Jupyter Notebooks. +- Folosiți Scikit-learn, inclusiv instalarea. - Explorați regresia liniară printr-un exercițiu practic. -## Instalări și configurări +## Instalări și configurații -[![ML pentru începători - Configurați-vă instrumentele pentru a construi modele de învățare automată](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML pentru începători - Configurați-vă instrumentele pentru a construi modele de învățare automată") +[![ML pentru începători - Configurați-vă instrumentele pregătite pentru a construi modele de învățare automată](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML pentru începători -Configurați-vă instrumentele pregătite pentru a construi modele de învățare automată") > 🎥 Faceți clic pe imaginea de mai sus pentru un scurt videoclip despre configurarea computerului pentru ML. -1. **Instalați Python**. Asigurați-vă că [Python](https://www.python.org/downloads/) este instalat pe computerul dvs. Veți utiliza Python pentru multe sarcini de știința datelor și învățare automată. Majoritatea sistemelor de operare includ deja o instalare Python. Există și [Pachete de codare Python](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) utile, pentru a ușura configurarea pentru unii utilizatori. +1. **Instalați Python**. Asigurați-vă că [Python](https://www.python.org/downloads/) este instalat pe computerul dumneavoastră. Veți folosi Python pentru multe sarcini de știința datelor și învățare automată. Majoritatea sistemelor de operare au deja o instalare Python. Există pachete utile [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) disponibile, pentru a ușura configurarea pentru unii utilizatori. - Totuși, unele utilizări ale Python necesită o anumită versiune a software-ului, în timp ce altele necesită o versiune diferită. Din acest motiv, este util să lucrați într-un [mediu virtual](https://docs.python.org/3/library/venv.html). + Totuși, unele utilizări ale Python cer o anumită versiune a software-ului, iar altele necesită o altă versiune. Din acest motiv, este util să lucrați într-un [mediu virtual](https://docs.python.org/3/library/venv.html). -2. **Instalați Visual Studio Code**. Asigurați-vă că Visual Studio Code este instalat pe computerul dvs. Urmați aceste instrucțiuni pentru a [instala Visual Studio Code](https://code.visualstudio.com/) pentru o instalare de bază. Veți utiliza Python în Visual Studio Code în acest curs, așa că poate doriți să vă familiarizați cu modul de [configurare a Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) pentru dezvoltarea în Python. +2. **Instalați Visual Studio Code**. Asigurați-vă că aveți instalat Visual Studio Code pe computer. Urmați aceste instrucțiuni pentru a [instala Visual Studio Code](https://code.visualstudio.com/) pentru instalarea de bază. Veți folosi Python în Visual Studio Code în acest curs, așa că poate doriți să vă familiarizați cu modul de a [configura Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) pentru dezvoltarea Python. - > Familiarizați-vă cu Python parcurgând această colecție de [module de învățare](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) + > Familiarizați-vă cu Python parcurgând această colecție de [module Learn](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) > - > [![Configurați Python cu Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Configurați Python cu Visual Studio Code") + > [![Configurare Python cu Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Configurare Python cu Visual Studio Code") > - > 🎥 Faceți clic pe imaginea de mai sus pentru un videoclip: utilizarea Python în VS Code. + > 🎥 Faceți clic pe imaginea de mai sus pentru un videoclip: folosirea Python în VS Code. -3. **Instalați Scikit-learn**, urmând [aceste instrucțiuni](https://scikit-learn.org/stable/install.html). Deoarece trebuie să vă asigurați că utilizați Python 3, este recomandat să utilizați un mediu virtual. Notă: dacă instalați această bibliotecă pe un Mac cu M1, există instrucțiuni speciale pe pagina menționată mai sus. +3. **Instalați Scikit-learn**, urmând [aceste instrucțiuni](https://scikit-learn.org/stable/install.html). Deoarece trebuie să vă asigurați că folosiți Python 3, se recomandă să utilizați un mediu virtual. Rețineți că, dacă instalați această bibliotecă pe un Mac M1, există instrucțiuni speciale pe pagina legată mai sus. -4. **Instalați Jupyter Notebook**. Va trebui să [instalați pachetul Jupyter](https://pypi.org/project/jupyter/). +1. **Instalați Jupyter Notebook**. Veți avea nevoie să [instalați pachetul Jupyter](https://pypi.org/project/jupyter/). -## Mediul dvs. de lucru pentru ML +## Mediul dvs. de dezvoltare ML -Veți utiliza **notebooks** pentru a dezvolta codul Python și a crea modele de învățare automată. Acest tip de fișier este un instrument comun pentru oamenii de știință în domeniul datelor și poate fi identificat prin sufixul sau extensia `.ipynb`. +Veți folosi **notebook-uri** pentru a dezvolta codul Python și pentru a crea modele de învățare automată. Acest tip de fișier este un instrument comun pentru oamenii de știință în date și poate fi recunoscut după sufixul sau extensia `.ipynb`. -Notebooks oferă un mediu interactiv care permite dezvoltatorului să scrie cod și să adauge note și documentație în jurul codului, ceea ce este foarte util pentru proiecte experimentale sau orientate spre cercetare. +Notebook-urile sunt un mediu interactiv care permite dezvoltatorului să scrie cod, să adauge note și să documenteze codul, ceea ce este foarte util pentru proiecte experimentale sau orientate spre cercetare. -[![ML pentru începători - Configurați Jupyter Notebooks pentru a începe să construiți modele de regresie](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML pentru începători - Configurați Jupyter Notebooks pentru a începe să construiți modele de regresie") +[![ML pentru începători - Configurați Jupyter Notebooks pentru a începe construirea modelelor de regresie](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML pentru începători - Configurați Jupyter Notebooks pentru a începe construirea modelelor de regresie") > 🎥 Faceți clic pe imaginea de mai sus pentru un scurt videoclip despre acest exercițiu. ### Exercițiu - lucrați cu un notebook -În acest folder, veți găsi fișierul _notebook.ipynb_. +În acest dosar, veți găsi fișierul _notebook.ipynb_. 1. Deschideți _notebook.ipynb_ în Visual Studio Code. - Un server Jupyter va porni cu Python 3+ activat. Veți găsi zone ale notebook-ului care pot fi `rulate`, adică bucăți de cod. Puteți rula un bloc de cod selectând pictograma care arată ca un buton de redare. + Un server Jupyter va porni cu Python 3+ lansat. Veți găsi zone în notebook care pot fi `run`, bucăți de cod. Puteți rula un bloc de cod selectând iconița care arată ca un buton de redare. -2. Selectați pictograma `md` și adăugați puțin markdown, precum și următorul text **# Bine ați venit în notebook-ul dvs.**. +1. Selectați iconița `md` și adăugați puțin markdown, și următorul text **# Bine ați venit în notebook-ul vostru**. - Apoi, adăugați ceva cod Python. + Apoi, adăugați cod Python. -3. Scrieți **print('hello notebook')** în blocul de cod. -4. Selectați săgeata pentru a rula codul. +1. Tastați **print('hello notebook')** în blocul de cod. +1. Selectați săgeata pentru a rula codul. - Ar trebui să vedeți declarația afișată: + Ar trebui să vedeți instrucțiunea afișată: ```output hello notebook ``` -![VS Code cu un notebook deschis](../../../../2-Regression/1-Tools/images/notebook.jpg) +![VS Code cu un notebook deschis](../../../../translated_images/ro/notebook.4a3ee31f396b8832.webp) -Puteți intercala codul cu comentarii pentru a documenta notebook-ul. +Puteți combina codul cu comentarii pentru a auto-documenta notebook-ul. -✅ Gândiți-vă un minut la cât de diferit este mediul de lucru al unui dezvoltator web față de cel al unui om de știință în domeniul datelor. +✅ Gândiți-vă pentru un minut cât de diferit este mediul de lucru al unui dezvoltator web față de cel al unui om de știință în date. -## Începeți cu Scikit-learn +## Pregătire și rulare cu Scikit-learn -Acum că Python este configurat în mediul dvs. local și sunteți confortabil cu Jupyter notebooks, să devenim la fel de confortabili cu Scikit-learn (se pronunță `sci` ca în `science`). Scikit-learn oferă o [API extinsă](https://scikit-learn.org/stable/modules/classes.html#api-ref) pentru a vă ajuta să efectuați sarcini de ML. +Acum că Python este configurat în mediul local și sunteți confortabil cu Jupyter Notebooks, haideți să devenim la fel de confortabili cu Scikit-learn (pronunțați `sci` ca în `science`). Scikit-learn oferă o [API extinsă](https://scikit-learn.org/stable/modules/classes.html#api-ref) pentru a vă ajuta să realizați sarcini de ML. -Conform [site-ului lor](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn este o bibliotecă open source pentru învățare automată care suportă învățarea supravegheată și nesupravegheată. De asemenea, oferă diverse instrumente pentru ajustarea modelelor, preprocesarea datelor, selecția și evaluarea modelelor, precum și multe alte utilități." +Conform [site-ului lor](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn este o bibliotecă open source de învățare automată care suportă învățare supravegheată și nesupravegheată. De asemenea, oferă diverse unelte pentru ajustarea modelelor, preprocesarea datelor, selecția și evaluarea modelelor și multe alte utilități." -În acest curs, veți utiliza Scikit-learn și alte instrumente pentru a construi modele de învățare automată pentru a efectua ceea ce numim sarcini de 'învățare automată tradițională'. Am evitat în mod deliberat rețelele neuronale și învățarea profundă, deoarece acestea sunt mai bine acoperite în viitorul nostru curriculum 'AI pentru Începători'. +În acest curs, veți folosi Scikit-learn și alte instrumente pentru a construi modele de învățare automată care să realizeze ceea ce numim sarcini 'tradiționale de învățare automată'. Am evitat deliberat rețelele neuronale și deep learning, deoarece acestea sunt mai bine acoperite în viitorul nostru curriculum 'AI pentru începători'. -Scikit-learn face ușor să construiți modele și să le evaluați pentru utilizare. Este axat în principal pe utilizarea datelor numerice și conține mai multe seturi de date gata făcute pentru utilizare ca instrumente de învățare. De asemenea, include modele pre-construite pentru studenți. Să explorăm procesul de încărcare a datelor preambalate și utilizarea unui estimator pentru primul model ML cu Scikit-learn, folosind câteva date de bază. +Scikit-learn face simplă construirea și evaluarea modelelor pentru utilizare. Se concentrează în principal pe folosirea datelor numerice și conține mai multe seturi de date gata făcute pentru a fi folosite ca instrumente de învățare. Include, de asemenea, modele predefinite pentru studenți. Să explorăm procesul de încărcare a datelor preambalate și să folosim un estimator încorporat pentru primul model ML cu Scikit-learn și date de bază. -## Exercițiu - primul dvs. notebook Scikit-learn +## Exercițiu - primul vostru notebook Scikit-learn > Acest tutorial a fost inspirat de [exemplul de regresie liniară](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) de pe site-ul Scikit-learn. -[![ML pentru începători - Primul dvs. proiect de regresie liniară în Python](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "ML pentru începători - Primul dvs. proiect de regresie liniară în Python") + +[![ML pentru începători - Primul vostru proiect de regresie liniară în Python](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "ML pentru începători - Primul vostru proiect de regresie liniară în Python") > 🎥 Faceți clic pe imaginea de mai sus pentru un scurt videoclip despre acest exercițiu. -În fișierul _notebook.ipynb_ asociat acestei lecții, ștergeți toate celulele apăsând pe pictograma 'coș de gunoi'. +În fișierul _notebook.ipynb_ asociat acestei lecții, ștergeți toate celulele apăsând iconița 'coș de gunoi'. -În această secțiune, veți lucra cu un set mic de date despre diabet, care este inclus în Scikit-learn pentru scopuri de învățare. Imaginați-vă că doriți să testați un tratament pentru pacienții diabetici. Modelele de învățare automată ar putea să vă ajute să determinați care pacienți ar răspunde mai bine la tratament, pe baza combinațiilor de variabile. Chiar și un model de regresie foarte simplu, atunci când este vizualizat, ar putea arăta informații despre variabilele care v-ar ajuta să organizați studiile clinice teoretice. +În această secțiune, veți lucra cu un set mic de date despre diabet care este încorporat în Scikit-learn pentru scopuri de învățare. Imaginați-vă că doriți să testați un tratament pentru pacienții cu diabet. Modelele de învățare automată v-ar putea ajuta să determinați care pacienți vor răspunde mai bine la tratament în funcție de combinații de variabile. Chiar și un model foarte simplu de regresie, atunci când este vizualizat, ar putea arăta informații despre variabile care v-ar ajuta să organizați teoretic studiile clinice. -✅ Există multe tipuri de metode de regresie, iar alegerea uneia depinde de răspunsul pe care îl căutați. Dacă doriți să preziceți înălțimea probabilă a unei persoane de o anumită vârstă, ați utiliza regresia liniară, deoarece căutați o **valoare numerică**. Dacă sunteți interesat să descoperiți dacă un tip de bucătărie ar trebui considerat vegan sau nu, căutați o **încadrare în categorie**, așa că ați utiliza regresia logistică. Veți învăța mai multe despre regresia logistică mai târziu. Gândiți-vă puțin la întrebările pe care le puteți pune datelor și care dintre aceste metode ar fi mai potrivită. +✅ Există multe tipuri de metode de regresie, iar alegerea depinde de răspunsul pe care îl căutați. Dacă doriți să preziceți înălțimea probabilă a unei persoane la o anumită vârstă, veți folosi regresia liniară, deoarece căutați o **valoare numerică**. Dacă sunteți interesat să descoperiți dacă un tip de bucătărie este considerat vegan sau nu, căutați o **atributie de categorie**, deci ați folosi regresia logistică. Veți învăța mai târziu despre regresia logistică. Gândiți-vă puțin la întrebările pe care le puteți pune datelor și la care dintre aceste metode ar fi mai potrivită. Să începem această sarcină. ### Importați biblioteci -Pentru această sarcină, vom importa câteva biblioteci: +Pentru această sarcină vom importa câteva biblioteci: -- **matplotlib**. Este un [instrument util pentru graficare](https://matplotlib.org/) și îl vom folosi pentru a crea un grafic liniar. +- **matplotlib**. Este un [instrument de graficare](https://matplotlib.org/) util pe care îl vom folosi pentru a crea un grafic liniar. - **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) este o bibliotecă utilă pentru manipularea datelor numerice în Python. - **sklearn**. Aceasta este biblioteca [Scikit-learn](https://scikit-learn.org/stable/user_guide.html). @@ -122,26 +123,26 @@ Importați câteva biblioteci pentru a vă ajuta cu sarcinile. from sklearn import datasets, linear_model, model_selection ``` - Mai sus importați `matplotlib`, `numpy` și importați `datasets`, `linear_model` și `model_selection` din `sklearn`. `model_selection` este utilizat pentru a împărți datele în seturi de antrenament și testare. + De mai sus importați `matplotlib`, `numpy` și importați `datasets`, `linear_model` și `model_selection` din `sklearn`. `model_selection` este folosit pentru împărțirea datelor în seturi de antrenament și test. ### Setul de date despre diabet -Setul de date [diabet](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) inclus conține 442 de mostre de date despre diabet, cu 10 variabile caracteristice, dintre care unele includ: +Setul de date încorporat [diabet](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) include 442 de mostre de date legate de diabet, cu 10 variabile caracteristice, dintre care unele includ: -- age: vârsta în ani +- vârstă: vârsta în ani - bmi: indicele de masă corporală - bp: tensiunea arterială medie -- s1 tc: T-Cells (un tip de globule albe) +- s1 tc: celule T (un tip de globule albe) -✅ Acest set de date include conceptul de 'sex' ca variabilă caracteristică importantă pentru cercetarea despre diabet. Multe seturi de date medicale includ acest tip de clasificare binară. Gândiți-vă puțin la modul în care astfel de clasificări ar putea exclude anumite părți ale populației de la tratamente. +✅ Acest set de date include conceptul de 'sex' ca o variabilă caracteristică importantă pentru cercetarea diabetului. Multe seturi medicale de date includ acest tip de clasificare binară. Gândiți-vă puțin la cum astfel de categorii ar putea exclude anumite părți ale populației de la tratamente. Acum, încărcați datele X și y. -> 🎓 Amintiți-vă, aceasta este învățare supravegheată, iar noi avem nevoie de o țintă 'y' denumită. +> 🎓 Amintiți-vă, aceasta este învățare supravegheată, și avem nevoie de o țintă denumită 'y'. -Într-o nouă celulă de cod, încărcați setul de date despre diabet apelând `load_diabetes()`. Parametrul `return_X_y=True` semnalează că `X` va fi o matrice de date, iar `y` va fi ținta regresiei. +Într-o celulă nouă de cod, încărcați setul de date pentru diabet apelând `load_diabetes()`. Intrarea `return_X_y=True` semnalează faptul că `X` va fi o matrice de date, iar `y` va fi ținta regresiei. -1. Adăugați câteva comenzi print pentru a afișa forma matricei de date și primul său element: +1. Adăugați câteva comenzi print pentru a arăta forma matricei de date și primul său element: ```python X, y = datasets.load_diabetes(return_X_y=True) @@ -149,9 +150,9 @@ Acum, încărcați datele X și y. print(X[0]) ``` - Ceea ce primiți ca răspuns este un tuplu. Ceea ce faceți este să atribuiți cele două prime valori ale tuplului lui `X` și `y`, respectiv. Aflați mai multe [despre tupluri](https://wikipedia.org/wiki/Tuple). + Ce primiți ca răspuns este un tuplu. Ce faceți este să atribuiți primele două valori ale tuplei la `X` și `y` respectiv. Aflați mai multe [despre tuple](https://wikipedia.org/wiki/Tuple). - Puteți vedea că aceste date au 442 de elemente organizate în matrici de 10 elemente: + Puteți vedea că acest set de date are 442 de itemi formați în array-uri cu câte 10 elemente: ```text (442, 10) @@ -159,39 +160,39 @@ Acum, încărcați datele X și y. -0.04340085 -0.00259226 0.01990842 -0.01764613] ``` - ✅ Gândiți-vă puțin la relația dintre date și ținta regresiei. Regresia liniară prezice relațiile dintre caracteristica X și variabila țintă y. Puteți găsi [ținta](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) pentru setul de date despre diabet în documentație? Ce demonstrează acest set de date, având în vedere ținta? + ✅ Gândiți-vă puțin la relația dintre date și ținta regresiei. Regresia liniară prezice relații între caracteristica X și variabila țintă y. Puteți găsi [ținta](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) pentru setul de date diabet în documentație? Ce demonstrează acest set de date, având ținta? -2. Apoi, selectați o parte din acest set de date pentru a o reprezenta grafic, selectând a treia coloană a setului de date. Puteți face acest lucru utilizând operatorul `:` pentru a selecta toate rândurile, apoi selectând a treia coloană utilizând indexul (2). De asemenea, puteți rearanja datele pentru a fi o matrice 2D - așa cum este necesar pentru reprezentarea grafică - utilizând `reshape(n_rows, n_columns)`. Dacă unul dintre parametri este -1, dimensiunea corespunzătoare este calculată automat. +2. În continuare, selectați o porțiune din acest set de date pentru grafic prin selectarea celei de-a 3-a coloane din setul de date. Puteți face asta folosind operatorul `:` pentru a selecta toate rândurile, apoi selectând a 3-a coloană folosind indexul (2). Puteți, de asemenea, să remodelați datele pentru a fi un array 2D - necesar pentru graficare - folosind `reshape(n_rânduri, n_coloane)`. Dacă unul dintre parametri este -1, dimensiunea respectivă se calculează automat. ```python X = X[:, 2] X = X.reshape((-1,1)) ``` - ✅ În orice moment, afișați datele pentru a verifica forma lor. + ✅ Oricând, afișați datele pentru a verifica forma lor. -3. Acum că aveți datele pregătite pentru a fi reprezentate grafic, puteți vedea dacă o mașină poate determina o separare logică între numerele din acest set de date. Pentru a face acest lucru, trebuie să împărțiți atât datele (X), cât și ținta (y) în seturi de testare și antrenament. Scikit-learn are o metodă simplă pentru aceasta; puteți împărți datele de testare la un anumit punct. +3. Acum că aveți datele pregătite pentru graficare, puteți vedea dacă o mașină poate ajuta să determine o separare logică între numerele din acest set de date. Pentru aceasta trebuie să împărțiți atât datele (X), cât și ținta (y) în seturi de testare și antrenament. Scikit-learn oferă o metodă simplă pentru asta; puteți diviza setul de testare la un punct dat. ```python X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33) ``` -4. Acum sunteți gata să antrenați modelul! Încărcați modelul de regresie liniară și antrenați-l cu seturile de antrenament X și y utilizând `model.fit()`: +4. Acum sunteți gata să antrenați modelul! Încărcați modelul de regresie liniară și antrenați-l cu seturile de antrenament X și y folosind `model.fit()`: ```python model = linear_model.LinearRegression() model.fit(X_train, y_train) ``` - ✅ `model.fit()` este o funcție pe care o veți întâlni în multe biblioteci ML, cum ar fi TensorFlow. + ✅ `model.fit()` este o funcție pe care o veți vedea în multe biblioteci ML cum ar fi TensorFlow -5. Apoi, creați o predicție utilizând datele de testare, folosind funcția `predict()`. Aceasta va fi utilizată pentru a trasa linia între grupurile de date. +5. Apoi, creați o predicție folosind datele de testare, utilizând funcția `predict()`. Aceasta va fi folosită pentru a trasa linia între grupurile de date ```python y_pred = model.predict(X_test) ``` -6. Acum este momentul să afișați datele într-un grafic. Matplotlib este un instrument foarte util pentru această sarcină. Creați un grafic scatter cu toate datele de testare X și y și utilizați predicția pentru a trasa o linie în locul cel mai potrivit, între grupările de date ale modelului. +6. Acum este momentul să afișați datele într-un grafic. Matplotlib este un instrument foarte util pentru această sarcină. Creați un grafic de dispersie (scatterplot) al tuturor datelor X și y de testare, și folosiți predicția pentru a desena o linie în locul cel mai potrivit, între grupările de date ale modelului. ```python plt.scatter(X_test, y_test, color='black') @@ -202,28 +203,32 @@ Acum, încărcați datele X și y. plt.show() ``` - ![un grafic scatter care arată puncte de date despre diabet](../../../../2-Regression/1-Tools/images/scatterplot.png) -✅ Gândește-te puțin la ce se întâmplă aici. O linie dreaptă trece prin multe puncte mici de date, dar ce face exact? Poți vedea cum ar trebui să poți folosi această linie pentru a prezice unde ar trebui să se încadreze un punct de date nou, nevăzut, în raport cu axa y a graficului? Încearcă să exprimi în cuvinte utilitatea practică a acestui model. + ![un scatterplot care arată puncte de date în jurul diabetului](../../../../translated_images/ro/scatterplot.ad8b356bcbb33be6.webp) + + + ✅ Gândește-te puțin la ce se întâmplă aici. O linie dreaptă trece prin multe puncte mici de date, dar ce face exact? Poți vedea cum ar trebui să folosești această linie pentru a prezice unde ar trebui să se potrivească un punct de date nou, nevăzut, în raport cu axa y a graficului? Încearcă să pui în cuvinte utilizarea practică a acestui model. -Felicitări, ai construit primul tău model de regresie liniară, ai creat o predicție cu el și ai afișat-o într-un grafic! +Felicitări, ai construit primul tău model de regresie liniară, ai creat o predicție cu acesta și ai afișat-o într-un grafic! --- ## 🚀Provocare -Reprezintă grafic o variabilă diferită din acest set de date. Sugestie: editează această linie: `X = X[:,2]`. Având în vedere ținta acestui set de date, ce poți descoperi despre progresia diabetului ca boală? -## [Test de verificare după lecție](https://ff-quizzes.netlify.app/en/ml/) +Grafică o variabilă diferită din acest set de date. Sfat: editează această linie: `X = X[:,2]`. Având în vedere ținta acestui set de date, ce poți descoperi despre progresia diabetului ca boală? +## [Chestionar post-lectură](https://ff-quizzes.netlify.app/en/ml/) ## Recapitulare & Studiu individual -În acest tutorial, ai lucrat cu regresia liniară simplă, mai degrabă decât cu regresia univariată sau regresia multiplă. Citește puțin despre diferențele dintre aceste metode sau aruncă o privire la [acest videoclip](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef). +În acest tutorial, ai lucrat cu regresia liniară simplă, mai degrabă decât cu regresia liniară univariată sau multiplă. Citește puțin despre diferențele dintre aceste metode sau aruncă o privire la [acest videoclip](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) -Citește mai multe despre conceptul de regresie și gândește-te la ce tipuri de întrebări pot fi răspunse prin această tehnică. Urmează acest [tutorial](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) pentru a-ți aprofunda înțelegerea. +Citește mai multe despre conceptul de regresie și gândește-te la ce fel de întrebări pot fi rezolvate cu această tehnică. Urmează acest [tutorial](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) pentru a-ți aprofunda înțelegerea. -## Temă +## Tema [Un set de date diferit](assignment.md) --- -**Declinare de responsabilitate**: -Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file + +**Declinare a responsabilității**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). În timp ce ne străduim pentru acuratețe, vă rugăm să rețineți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa nativă trebuie considerat sursa autorizată. Pentru informații critice, se recomandă traducerea profesională realizată de un om. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care decurg din utilizarea acestei traduceri. + \ No newline at end of file diff --git a/translations/ro/2-Regression/2-Data/README.md b/translations/ro/2-Regression/2-Data/README.md index 2cfce794f..5521a9c09 100644 --- a/translations/ro/2-Regression/2-Data/README.md +++ b/translations/ro/2-Regression/2-Data/README.md @@ -1,60 +1,60 @@ -# Construiește un model de regresie folosind Scikit-learn: pregătirea și vizualizarea datelor +# Construiește un model de regresie folosind Scikit-learn: pregătește și vizualizează datele -![Infografic despre vizualizarea datelor](../../../../2-Regression/2-Data/images/data-visualization.png) +![Infografic de vizualizare a datelor](../../../../translated_images/ro/data-visualization.54e56dded7c1a804.webp) -Infografic realizat de [Dasani Madipalli](https://twitter.com/dasani_decoded) +Infografic de [Dasani Madipalli](https://twitter.com/dasani_decoded) -## [Chestionar înainte de lecție](https://ff-quizzes.netlify.app/en/ml/) +## [Chestionar pre-lectură](https://ff-quizzes.netlify.app/en/ml/) -> ### [Această lecție este disponibilă și în R!](../../../../2-Regression/2-Data/solution/R/lesson_2.html) +> ### [Această lecție este disponibilă în R!](../../../../2-Regression/2-Data/solution/R/lesson_2.html) ## Introducere -Acum că ai configurat instrumentele necesare pentru a începe să construiești modele de învățare automată cu Scikit-learn, ești pregătit să începi să pui întrebări datelor tale. Pe măsură ce lucrezi cu date și aplici soluții de ML, este foarte important să înțelegi cum să pui întrebarea potrivită pentru a valorifica pe deplin potențialul setului tău de date. +Acum că ai configurat uneltele de care ai nevoie pentru a începe construirea unui model de machine learning cu Scikit-learn, ești pregătit să începi să pui întrebări datelor tale. Pe măsură ce lucrezi cu datele și aplici soluții ML, este foarte important să înțelegi cum să pui întrebarea corectă pentru a valorifica pe deplin potențialul setului de date. -În această lecție vei învăța: +În această lecție, vei învăța: -- Cum să pregătești datele pentru construirea modelului. +- Cum să pregătești datele pentru construirea unui model. - Cum să folosești Matplotlib pentru vizualizarea datelor. +- Cum să folosești Seaborn pentru o vizualizare mai expresivă a datelor. -## Punerea întrebării potrivite datelor tale +## Pune întrebarea potrivită datelor tale -Întrebarea la care ai nevoie de răspuns va determina ce tip de algoritmi ML vei utiliza. Iar calitatea răspunsului pe care îl primești va depinde în mare măsură de natura datelor tale. +Întrebarea la care ai nevoie de răspuns va determina ce tip de algoritmi ML vei folosi. Iar calitatea răspunsului pe care îl primești depinde mult de natura datelor tale. -Aruncă o privire la [datele](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) furnizate pentru această lecție. Poți deschide acest fișier .csv în VS Code. O privire rapidă arată imediat că există spații goale și un amestec de date text și numerice. Există, de asemenea, o coloană ciudată numită 'Package', unde datele sunt un amestec între 'sacks', 'bins' și alte valori. Datele, de fapt, sunt destul de dezordonate. +Aruncă o privire la [datele](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) oferite pentru această lecție. Poți deschide acest fișier .csv în VS Code. O scanare rapidă arată imediat că există goluri și o combinație de șiruri și date numerice. Există și o coloană ciudată numită „Package” unde datele sunt un amestec între „sacs”, „bins” și alte valori. Datele, de fapt, sunt puțin dezordonate. [![ML pentru începători - Cum să analizezi și să cureți un set de date](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML pentru începători - Cum să analizezi și să cureți un set de date") -> 🎥 Fă clic pe imaginea de mai sus pentru un scurt videoclip despre pregătirea datelor pentru această lecție. +> 🎥 Dă click pe imaginea de mai sus pentru un videoclip scurt ce parcurge pregătirea datelor pentru această lecție. -De fapt, nu este foarte comun să primești un set de date complet pregătit pentru a crea un model ML direct. În această lecție, vei învăța cum să pregătești un set de date brut folosind biblioteci standard Python. De asemenea, vei învăța diverse tehnici pentru vizualizarea datelor. +De fapt, nu este foarte comun să primești un set de date complet gata pentru a construi un model ML imediat. În această lecție, vei învăța cum să pregătești un set de date brut folosind biblioteci Python standard. De asemenea, vei învăța diverse tehnici pentru a vizualiza datele. ## Studiu de caz: 'piața dovlecilor' -În acest folder vei găsi un fișier .csv în folderul rădăcină `data` numit [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv), care include 1757 linii de date despre piața dovlecilor, grupate pe orașe. Acestea sunt date brute extrase din [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) distribuite de Departamentul Agriculturii al Statelor Unite. +În acest folder vei găsi un fișier .csv în folderul rădăcină `data` numit [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) care include 1757 de linii de date despre piața dovlecilor, sortate pe grupe după oraș. Acestea sunt date brute extrase din [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) distribuite de Departamentul de Agricultură al Statelor Unite. ### Pregătirea datelor -Aceste date sunt în domeniul public. Ele pot fi descărcate în mai multe fișiere separate, pe orașe, de pe site-ul USDA. Pentru a evita prea multe fișiere separate, am concatenat toate datele pe orașe într-un singur fișier, astfel încât am _pregătit_ deja puțin datele. Acum, să aruncăm o privire mai atentă asupra datelor. +Aceste date sunt în domeniul public. Pot fi descărcate în mai multe fișiere separate, câte unul pentru fiecare oraș, de pe site-ul USDA. Pentru a evita prea multe fișiere separate, am concatenat toate datele orașelor într-un singur tabel, astfel că am _pregătit_ deja datele puțin. Următorul pas este să analizăm datele mai în detaliu. -### Datele despre dovleci - concluzii inițiale +### Datele despre dovleci - concluzii preliminare -Ce observi despre aceste date? Ai văzut deja că există un amestec de text, numere, spații goale și valori ciudate pe care trebuie să le înțelegi. - -Ce întrebare poți pune acestor date, folosind o tehnică de regresie? Ce zici de "Prezice prețul unui dovleac de vânzare într-o anumită lună"? Privind din nou datele, există câteva modificări pe care trebuie să le faci pentru a crea structura de date necesară pentru această sarcină. +Ce observi despre aceste date? Ai văzut deja că există un amestec de șiruri, numere, goluri și valori ciudate de care trebuie să înțelegi sensul. +Ce întrebare poți pune acestor date, folosind o tehnică de regresie? Poate „Prezice prețul unui dovleac de vânzare într-o anumită lună”. Privind din nou datele, există unele modificări pe care trebuie să le faci pentru a crea structura necesară a datelor pentru acest scop. ## Exercițiu - analizează datele despre dovleci -Să folosim [Pandas](https://pandas.pydata.org/), (numele vine de la `Python Data Analysis`) un instrument foarte util pentru modelarea datelor, pentru a analiza și pregăti aceste date despre dovleci. +Să folosim [Pandas](https://pandas.pydata.org/), (numele vine de la `Python Data Analysis`), un instrument foarte util pentru modelarea datelor, pentru a analiza și a pregăti aceste date despre dovleci. ### Mai întâi, verifică datele lipsă -Mai întâi va trebui să iei măsuri pentru a verifica datele lipsă: +Trebuie să folosești pași pentru a verifica datele lipsă: -1. Convertește datele în format de lună (acestea sunt date din SUA, deci formatul este `MM/DD/YYYY`). +1. Convertește datele în format lună (sunt datele din SUA, deci formatul este `MM/DD/YYYY`). 2. Extrage luna într-o coloană nouă. -Deschide fișierul _notebook.ipynb_ în Visual Studio Code și importă foaia de calcul într-un nou dataframe Pandas. +Deschide fișierul _notebook.ipynb_ în Visual Studio Code și importă tabelul într-un nou dataframe Pandas. 1. Folosește funcția `head()` pentru a vizualiza primele cinci rânduri. @@ -64,28 +64,28 @@ Deschide fișierul _notebook.ipynb_ în Visual Studio Code și importă foaia de pumpkins.head() ``` - ✅ Ce funcție ai folosi pentru a vizualiza ultimele cinci rânduri? + ✅ Ce funcție ai folosi pentru a vedea ultimele cinci rânduri? -1. Verifică dacă există date lipsă în dataframe-ul curent: +1. Verifică dacă sunt date lipsă în cadrul dataframe-ului curent: ```python pumpkins.isnull().sum() ``` - Există date lipsă, dar poate că nu vor conta pentru sarcina de față. + Există date lipsă, dar poate că nu contează pentru sarcina de lucru. -1. Pentru a face dataframe-ul mai ușor de utilizat, selectează doar coloanele de care ai nevoie, folosind funcția `loc`, care extrage din dataframe-ul original un grup de rânduri (transmise ca prim parametru) și coloane (transmise ca al doilea parametru). Expresia `:` în cazul de mai jos înseamnă "toate rândurile". +1. Pentru a face dataframe-ul mai ușor de utilizat, selectează doar coloanele de care ai nevoie, folosind funcția `loc` care extrage din dataframe-ul original un grup de rânduri (trecut ca primul parametru) și coloane (trecute ca al doilea parametru). Expresia `:` în exemplul de mai jos înseamnă „toate rândurile”. ```python columns_to_select = ['Package', 'Low Price', 'High Price', 'Date'] pumpkins = pumpkins.loc[:, columns_to_select] ``` -### În al doilea rând, determină prețul mediu al dovlecilor +### Al doilea pas, determină prețul mediu al dovleacului -Gândește-te cum să determini prețul mediu al unui dovleac într-o anumită lună. Ce coloane ai alege pentru această sarcină? Indiciu: vei avea nevoie de 3 coloane. +Gândește-te cum să determini prețul mediu al unui dovleac într-o anumită lună. Ce coloane ai alege pentru această sarcină? Indiciu: ai nevoie de 3 coloane. -Soluție: ia media coloanelor `Low Price` și `High Price` pentru a popula noua coloană Price și convertește coloana Date astfel încât să afișeze doar luna. Din fericire, conform verificării de mai sus, nu există date lipsă pentru date sau prețuri. +Soluție: ia media coloanelor `Low Price` și `High Price` pentru a popula noua coloană Preț, și convertește coloana Date pentru a arăta doar luna. Din fericire, conform verificării de mai sus, nu există date lipsă pentru date sau prețuri. 1. Pentru a calcula media, adaugă următorul cod: @@ -96,7 +96,7 @@ Soluție: ia media coloanelor `Low Price` și `High Price` pentru a popula noua ``` - ✅ Simte-te liber să afișezi orice date dorești să verifici folosind `print(month)`. + ✅ Poți tipări orice date dorești să verifici cu `print(month)`. 2. Acum, copiază datele convertite într-un nou dataframe Pandas: @@ -104,15 +104,15 @@ Soluție: ia media coloanelor `Low Price` și `High Price` pentru a popula noua new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price}) ``` - Afișarea dataframe-ului va arăta un set de date curat și ordonat pe care poți construi noul model de regresie. + Tipărirea dataframe-ului arată un set de date curat și ordonat pe care poți construi un nou model de regresie. ### Dar stai! E ceva ciudat aici -Dacă te uiți la coloana `Package`, dovlecii sunt vânduți în multe configurații diferite. Unii sunt vânduți în măsuri de '1 1/9 bushel', alții în măsuri de '1/2 bushel', unii per dovleac, alții per kilogram, și unii în cutii mari cu lățimi variabile. +Dacă te uiți în coloana `Package`, dovlecii sunt vânduți în multe configurații diferite. Unii sunt vânduți în măsurători de '1 1/9 bushel', alții în '1/2 bushel', unii pe bucăți, alții pe livre, iar unii în cutii mari cu lățimi variate. -> Dovlecii par foarte greu de cântărit în mod consistent +> Dovlecii par foarte greu de cântărit constant -Analizând datele originale, este interesant că orice are `Unit of Sale` egal cu 'EACH' sau 'PER BIN' are, de asemenea, tipul `Package` per inch, per bin sau 'each'. Dovlecii par foarte greu de cântărit în mod consistent, așa că să-i filtrăm selectând doar dovlecii cu șirul 'bushel' în coloana `Package`. +Uitându-ne la datele originale, e interesant că orice cu `Unit of Sale` egal cu 'EACH' sau 'PER BIN' are și tipul `Package` după inch, bin, sau ‘fiecare’. Dovlecii par foarte greu de cântărit constant, așa că să-i filtrăm selectând doar dovlecii cu șirul 'bushel' în coloana `Package`. 1. Adaugă un filtru în partea de sus a fișierului, sub importul inițial .csv: @@ -120,13 +120,13 @@ Analizând datele originale, este interesant că orice are `Unit of Sale` egal c pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)] ``` - Dacă afișezi datele acum, poți vedea că obții doar cele aproximativ 415 rânduri de date care conțin dovleci la bushel. + Dacă tipărești datele acum, vei vedea că primești doar aproximativ 415 rânduri cu dovleci vânduți pe bushel. ### Dar stai! Mai e ceva de făcut -Ai observat că cantitatea de bushel variază pe rând? Trebuie să normalizezi prețurile astfel încât să afișezi prețurile per bushel, așa că fă niște calcule pentru a le standardiza. +Ai observat că cantitatea pe bushel variază pe rând? Trebuie să normalizezi prețul simbolic astfel încât să arăți prețul per bushel, așa că fă niște calcule pentru a standardiza. -1. Adaugă aceste linii după blocul care creează dataframe-ul new_pumpkins: +1. Adaugă aceste linii după blocul care creează noul dataframe new_pumpkins: ```python new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9) @@ -134,29 +134,29 @@ Ai observat că cantitatea de bushel variază pe rând? Trebuie să normalizezi new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2) ``` -✅ Conform [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), greutatea unui bushel depinde de tipul de produs, deoarece este o măsurare a volumului. "Un bushel de roșii, de exemplu, ar trebui să cântărească 56 de livre... Frunzele și verdețurile ocupă mai mult spațiu cu mai puțină greutate, astfel încât un bushel de spanac cântărește doar 20 de livre." Este destul de complicat! Să nu ne deranjăm cu conversia bushel-livre și să stabilim prețul per bushel. Tot acest studiu despre bushel-uri de dovleci, însă, arată cât de important este să înțelegi natura datelor tale! +✅ Conform [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), greutatea unui bushel depinde de tipul de produs, deoarece este o măsură de volum. "Un bushel de roșii, de exemplu, ar trebui să cântărească 56 de livre... Frunzele și verdețurile ocupă mai mult spațiu cu mai puțină greutate, așa că un bushel de spanac cântărește doar 20 de livre." Totul este destul de complicat! Hai să nu ne complicăm cu o conversie bushel-livre și să păstrăm prețul per bushel. Tot acest studiu despre busheluri de dovleci arată cât de important este să înțelegi natura datelor tale! -Acum, poți analiza prețurile per unitate pe baza măsurării bushel-ului. Dacă afișezi datele încă o dată, poți vedea cum sunt standardizate. +Acum poți analiza prețul per unitate bazat pe măsurătoarea bushel. Dacă tipărești datele încă o dată, vei vedea cum sunt standardizate. -✅ Ai observat că dovlecii vânduți la jumătate de bushel sunt foarte scumpi? Poți să-ți dai seama de ce? Indiciu: dovlecii mici sunt mult mai scumpi decât cei mari, probabil pentru că sunt mult mai mulți per bushel, având în vedere spațiul neutilizat ocupat de un dovleac mare pentru plăcintă. +✅ Ai observat că dovlecii vânduți la jumătate de bushel sunt foarte scumpi? Poți să-ți dai seama de ce? Indiciu: dovlecii mici sunt mult mai scumpi decât cei mari, probabil pentru că sunt mult mai mulți în bushel, date fiind spațiile neutilizate ocupate de un dovleac mare și gol pentru plăcintă. ## Strategii de vizualizare -O parte din rolul unui specialist în date este să demonstreze calitatea și natura datelor cu care lucrează. Pentru a face acest lucru, ei creează adesea vizualizări interesante, cum ar fi diagrame, grafice și tabele, care arată diferite aspecte ale datelor. În acest fel, pot arăta vizual relații și lacune care altfel ar fi greu de descoperit. +O parte din rolul unui data scientist este să demonstreze calitatea și natura datelor cu care lucrează. Pentru aceasta, creează adesea vizualizări interesante, grafice, diagrame care arată diferite aspecte ale datelor. Astfel, pot arăta vizual relații și lacune ce sunt altfel greu de descoperit. [![ML pentru începători - Cum să vizualizezi datele cu Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML pentru începători - Cum să vizualizezi datele cu Matplotlib") -> 🎥 Fă clic pe imaginea de mai sus pentru un scurt videoclip despre vizualizarea datelor pentru această lecție. +> 🎥 Dă click pe imaginea de mai sus pentru un videoclip scurt despre vizualizarea datelor pentru această lecție. -Vizualizările pot ajuta, de asemenea, la determinarea tehnicii de învățare automată cea mai potrivită pentru date. Un scatterplot care pare să urmeze o linie, de exemplu, indică faptul că datele sunt un candidat bun pentru un exercițiu de regresie liniară. +Vizualizările pot, de asemenea, ajuta la determinarea tehnicii de machine learning cea mai potrivită pentru date. Un scatterplot care pare să urmeze o linie, de exemplu, indică faptul că datele sunt un bun candidat pentru un exercițiu de regresie liniară. -O bibliotecă de vizualizare a datelor care funcționează bine în notebook-urile Jupyter este [Matplotlib](https://matplotlib.org/) (pe care ai văzut-o și în lecția anterioară). +O bibliotecă de vizualizare a datelor care funcționează bine în Jupyter notebooks este [Matplotlib](https://matplotlib.org/) (pe care ai văzut-o și în lecția anterioară). -> Obține mai multă experiență cu vizualizarea datelor în [aceste tutoriale](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott). +> Obține mai multă experiență în vizualizarea datelor în [aceste tutoriale](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott). ## Exercițiu - experimentează cu Matplotlib -Încearcă să creezi câteva diagrame de bază pentru a afișa noul dataframe pe care tocmai l-ai creat. Ce ar arăta o diagramă liniară de bază? +Încearcă să creezi câteva grafice de bază pentru a afișa noul dataframe pe care tocmai l-ai creat. Ce ar arăta un grafic de linie simplu? 1. Importă Matplotlib în partea de sus a fișierului, sub importul Pandas: @@ -164,8 +164,8 @@ O bibliotecă de vizualizare a datelor care funcționează bine în notebook-uri import matplotlib.pyplot as plt ``` -1. Rulează din nou întregul notebook pentru a-l actualiza. -1. În partea de jos a notebook-ului, adaugă o celulă pentru a afișa datele sub formă de boxplot: +1. Rulează întreg notebook-ul din nou pentru a reîmprospăta. +1. La finalul notebook-ului, adaugă o celulă pentru a afișa datele ca un boxplot: ```python price = new_pumpkins.Price @@ -174,44 +174,121 @@ O bibliotecă de vizualizare a datelor care funcționează bine în notebook-uri plt.show() ``` - ![Un scatterplot care arată relația dintre preț și lună](../../../../2-Regression/2-Data/images/scatterplot.png) + ![Un scatterplot care arată relația preț - lună](../../../../translated_images/ro/scatterplot.b6868f44cbd2051c.webp) - Este aceasta o diagramă utilă? Te surprinde ceva la ea? + Este acest grafic util? Te surprinde ceva la el? - Nu este foarte utilă, deoarece tot ce face este să afișeze datele tale ca o răspândire de puncte într-o lună dată. + Nu este foarte util deoarece doar afișează datele tale ca o răspândire de puncte într-o lună dată. -### Fă-o utilă +### Fă-l util -Pentru a obține diagrame care să afișeze date utile, de obicei trebuie să grupezi datele cumva. Să încercăm să creăm o diagramă în care axa y să afișeze lunile, iar datele să demonstreze distribuția datelor. +Pentru a face graficele să afișeze date utile, de obicei trebuie să grupezi datele într-un fel. Hai să încercăm să creăm un grafic în care axa y să arate lunile și datele să demonstreze distribuția datelor. -1. Adaugă o celulă pentru a crea o diagramă de bare grupată: +1. Adaugă o celulă pentru a crea un grafic cu bare grupate: ```python new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') plt.ylabel("Pumpkin Price") ``` - ![O diagramă de bare care arată relația dintre preț și lună](../../../../2-Regression/2-Data/images/barchart.png) + ![Un grafic cu bare care arată relația preț - lună](../../../../translated_images/ro/barchart.a833ea9194346d76.webp) + + Aceasta este o vizualizare a datelor mai utilă! Pare să indice că cel mai mare preț pentru dovleci apare în septembrie și octombrie. Se potrivește cu așteptările tale? De ce sau de ce nu? + +## Exercițiu - experimentează cu Seaborn + +Matplotlib este puternic, dar poate necesita mult cod pentru a produce un grafic finisat. [Seaborn](https://seaborn.pydata.org/) este o bibliotecă construită _peste_ Matplotlib, destinată vizualizării datelor statistice. Lucrează direct cu dataframe-urile Pandas, aplică stiluri implicite atractive și permite crearea de grafice informative cu mult mai puțin cod. Deoarece Seaborn returnează obiecte Matplotlib, poți folosi în continuare tot ce știi despre Matplotlib pentru a ajusta fin rezultatul. + +> Dacă nu ai instalat deja Seaborn, instalează-l cu `pip install seaborn`. + +1. Importă Seaborn în partea de sus a notebook-ului, sub celelalte importuri. Este convențional importat ca `sns`: + + ```python + import seaborn as sns + ``` + +### Diagramă scatter pentru a arăta relații + +O parte importantă a explorării datelor înainte de a construi un model este căutarea _relațiilor_ între variabile. Un [scatter plot](https://en.wikipedia.org/wiki/Scatter_plot) este unul dintre cele mai bune instrumente pentru acest scop: dacă punctele par să urmeze o linie, cele două variabile pot fi corelate, ceea ce este un semn bun că un model de regresie liniară ar funcționa. + +1. Recreează scatterplot-ul preț-lună de mai înainte, de data aceasta folosind [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) (plot relațional) al Seaborn, care lucrează direct cu coloanele dataframe-ului tău: + + ```python + sns.relplot(x="Price", y="Month", data=new_pumpkins) + ``` + + ![Un scatterplot Seaborn arătând relația preț - lună](../../../../translated_images/ro/relplot.a03837d8f0329cec.webp) + + Observă cum treci _numele coloanelor_ și dataframe-ul, iar Seaborn se ocupă de etichetele axelor pentru tine. + +2. Poți schimba în grafic de linie trecând `kind="line"`. Seaborn trasează chiar o bandă umbrită care arată intervalul de încredere în jurul liniei: + + ```python + sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins) + ``` + + ![Un grafic de linie Seaborn arătând relația preț - lună](../../../../translated_images/ro/lineplot.f9034ba47b1e30ee.webp) + + Aceste date sunt destul de zgomotoase, așa că un grafic de linie nu este cea mai clară alegere aici — dar arată cât de ușor poți schimba tipul de grafic în Seaborn. + +### Grafice cu bare pentru a arăta distribuții + + +Mai devreme ai grupat datele manual pentru a crea un grafic cu bare cu Matplotlib. Seaborn's [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) (grafic categoric) poate face gruparea și agregarea pentru tine. Implicit, `kind="bar"` afișează media fiecărei categorii împreună cu o linie neagră care indică intervalul de încredere. + +1. Creează un grafic cu bare al prețului mediu pe lună: + + ```python + sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar") + ``` + + ![A Seaborn bar chart showing the price distribution per month](../../../../translated_images/ro/catplot.e73fc35fdf96242b.webp) + + Aceasta confirmă ceea ce ai văzut cu Matplotlib — prețurile ating un maxim în jurul lunilor septembrie și octombrie — dar Seaborn vizualizează și cât de mult _variază_ prețul în fiecare lună. + +### Heatmaps pentru a arăta corelații + +Graficele scatter compară două variabile odată. Când ai mai multe coloane numerice, un [heatmap](https://en.wikipedia.org/wiki/Heat_map) îți permite să vezi puterea relației dintre _fiecare_ pereche de coloane simultan. Aceasta este o metodă obișnuită pentru a identifica ce caracteristici sunt cele mai corelate înainte de a alege ce să introduci într-un model (și același tip de grafic este folosit ulterior pentru a afișa matricile de confuzie în clasificare). + +1. Construiește o matrice de corelație cu Pandas, apoi deseneaz-o cu [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html) din Seaborn. Opțiunea `annot=True` afișează valorile corelației în fiecare celulă: + + ```python + correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr() + sns.heatmap(correlations, annot=True, cmap="coolwarm") + ``` + + ![A Seaborn heatmap showing correlations between the numeric columns](../../../../translated_images/ro/heatmap.bd98dce43b404c57.webp) + + Valorile apropiate de `1` (sau `-1`) înseamnă că coloanele sunt puternic corelate _liniar_. Observă cum `Low Price` și `High Price` sunt aproape perfect corelate. `Month`, pe de altă parte, arată doar o corelație liniară slabă cu prețul — chiar dacă graficul cu bare de mai sus a arătat un vârf sezonier clar în septembrie și octombrie. Aceasta este o lecție importantă: coeficientul de corelație măsoară doar relațiile _liniare_, așa că poate să nu surprindă modelele sezoniere sau alte tipuri de relații neliniare. ✅ De ce este util să te uiți atât la un heatmap *cât și* la grafice precum cel cu bare înainte de a decide ce coloane să folosești? + +### Matplotlib sau Seaborn? + +Ambele biblioteci merită să fie cunoscute: + +- **Matplotlib** îți oferă control detaliat asupra fiecărui element al unui grafic și este baza pe care se construiește aproape orice altă bibliotecă de plotare Python. +- **Seaborn** oferă funcții la nivel înalt și setări implicite atractive pentru grafice statistice, lucrează direct cu dataframes și este adesea mai rapid pentru analiza exploratorie a datelor. - Aceasta este o vizualizare a datelor mai utilă! Pare să indice că cel mai mare preț pentru dovleci apare în septembrie și octombrie. Se potrivește aceasta cu așteptările tale? De ce sau de ce nu? +Un flux de lucru comun este să folosești Seaborn pentru a explora rapid datele, apoi să treci la Matplotlib când ai nevoie să personalizezi detaliile. --- ## 🚀Provocare -Explorează diferitele tipuri de vizualizări pe care le oferă Matplotlib. Care tipuri sunt cele mai potrivite pentru problemele de regresie? +Explorează diferitele tipuri de vizualizări pe care le oferă Matplotlib și Seaborn. Care tipuri sunt cele mai potrivite pentru probleme de regresie? -## [Chestionar după lecție](https://ff-quizzes.netlify.app/en/ml/) +## [Chestionar post-lectură](https://ff-quizzes.netlify.app/en/ml/) -## Recapitulare și studiu individual +## Recenzie & Auto-studiu -Aruncă o privire la numeroasele moduri de a vizualiza datele. Fă o listă cu diversele biblioteci disponibile și notează care sunt cele mai bune pentru anumite tipuri de sarcini, de exemplu vizualizări 2D vs. vizualizări 3D. Ce descoperi? +Aruncă o privire asupra multiplelor moduri de a vizualiza date. Fă o listă cu diferitele biblioteci disponibile și notează care sunt cele mai bune pentru anumite tipuri de taskuri, de exemplu vizualizări 2D vs. vizualizări 3D. Ce descoperi? ## Temă -[Explorarea vizualizării](assignment.md) +[Explorarea vizualizărilor](assignment.md) --- -**Declinare de responsabilitate**: -Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file + +**Declinare a responsabilității**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). În timp ce ne străduim pentru acuratețe, vă rugăm să rețineți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa nativă trebuie considerat sursa autorizată. Pentru informații critice, se recomandă traducerea profesională realizată de un om. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care decurg din utilizarea acestei traduceri. + \ No newline at end of file diff --git a/translations/ro/2-Regression/2-Data/solution/notebook.ipynb b/translations/ro/2-Regression/2-Data/solution/notebook.ipynb index 2369096c7..eee76b383 100644 --- a/translations/ro/2-Regression/2-Data/solution/notebook.ipynb +++ b/translations/ro/2-Regression/2-Data/solution/notebook.ipynb @@ -3,7 +3,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "## Regresia liniară pentru dovleci - Lecția 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": [ + "## Vizualizare cu Seaborn\n", + "\n", + "[Seaborn](https://seaborn.pydata.org/) este construit peste Matplotlib și funcționează direct cu dataframes, făcând rapidă crearea unor diagrame statistice atractive cu foarte puțin cod.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Diagrame de dispersie pentru a arăta relațiile\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": [ + "### Diagrame cu bare pentru a arăta distribuții\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**Declinare de responsabilitate**: \nAcest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa maternă ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri.\n" + "### Hărți termice pentru a arăta corelații\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**Declinare a responsabilității**:\nAcest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). În timp ce ne străduim pentru acuratețe, vă rugăm să rețineți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa nativă trebuie considerat sursa autorizată. Pentru informații critice, se recomandă traducerea profesională realizată de un om. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care decurg din utilizarea acestei traduceri.\n\n" ] } ], @@ -424,13 +487,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "95726f0b8283628d5356a4f8eb8b4b76", - "translation_date": "2025-09-06T11:53:24+00:00", - "source_file": "2-Regression/2-Data/solution/notebook.ipynb", - "language_code": "ro" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/ro/8-Reinforcement/1-QLearning/README.md b/translations/ro/8-Reinforcement/1-QLearning/README.md index a4762ee88..bd1ea76c4 100644 --- a/translations/ro/8-Reinforcement/1-QLearning/README.md +++ b/translations/ro/8-Reinforcement/1-QLearning/README.md @@ -1,47 +1,47 @@ -# Introducere în Învățarea prin Recompensă și Q-Learning +# Introducere în Învățarea prin Recompensare și Q-Learning -![Rezumat al învățării prin recompensă în machine learning într-un sketchnote](../../../../sketchnotes/ml-reinforcement.png) -> Sketchnote de [Tomomi Imura](https://www.twitter.com/girlie_mac) +![Sumar al învățării prin recompensare în învățarea automată într-o schiță](../../../../translated_images/ro/ml-reinforcement.94024374d63348db.webp) +> Schiță realizată de [Tomomi Imura](https://www.twitter.com/girlie_mac) -Învățarea prin recompensă implică trei concepte importante: agentul, câteva stări și un set de acțiuni pentru fiecare stare. Prin executarea unei acțiuni într-o stare specificată, agentul primește o recompensă. Imaginează din nou jocul pe calculator Super Mario. Tu ești Mario, te afli într-un nivel de joc, stând lângă marginea unei prăpăstii. Deasupra ta este o monedă. Tu, fiind Mario, într-un nivel de joc, într-o poziție specifică... aceasta este starea ta. Dacă faci un pas spre dreapta (o acțiune), vei cădea în prăpastie, ceea ce îți va aduce un scor numeric scăzut. Totuși, dacă apeși butonul de săritură, vei obține un punct și vei rămâne în viață. Acesta este un rezultat pozitiv și ar trebui să îți aducă un scor numeric pozitiv. +Învățarea prin recompensare implică trei concepte importante: agentul, unele stări și un set de acțiuni pentru fiecare stare. Prin executarea unei acțiuni într-o stare specificată, agentul primește o recompensă. Imaginați din nou jocul video Super Mario. Tu ești Mario, ești într-un nivel al jocului, stând lângă marginea unei prăpastii. Deasupra ta este o monedă. Tu, fiind Mario, într-un nivel al jocului, într-o poziție specifică ... aceasta este starea ta. Să faci un pas spre dreapta (o acțiune) te va duce peste margine, ceea ce ți-ar da un scor numeric scăzut. Totuși, apăsând butonul de săritură ai putea să înscrii un punct și ai rămâne în viață. Acesta este un rezultat pozitiv și ar trebui să primești un scor numeric pozitiv. -Folosind învățarea prin recompensă și un simulator (jocul), poți învăța cum să joci pentru a maximiza recompensa, adică să rămâi în viață și să obții cât mai multe puncte. +Folosind învățarea prin recompensă și un simulator (jocul), poți învăța cum să joci jocul pentru a maximiza recompensa, care este să rămâi în viață și să înscrii cât mai multe puncte posibil. -[![Introducere în Învățarea prin Recompensă](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) +[![Introducere în Învățarea prin Recompensare](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) -> 🎥 Click pe imaginea de mai sus pentru a-l asculta pe Dmitry discutând despre Învățarea prin Recompensă +> 🎥 Click pe imaginea de mai sus pentru a-l auzi pe Dmitry discutând despre Învățarea prin Recompensare -## [Chestionar înainte de lecție](https://ff-quizzes.netlify.app/en/ml/) +## [Quiz înainte de lecție](https://ff-quizzes.netlify.app/en/ml/) -## Cerințe preliminare și configurare +## Cerințe și configurare -În această lecție, vom experimenta cu ceva cod în Python. Ar trebui să poți rula codul din Jupyter Notebook din această lecție, fie pe computerul tău, fie undeva în cloud. +În această lecție, vom experimenta cu un cod în Python. Ar trebui să fii capabil să rulezi codul din Jupyter Notebook al acestei lecții, fie pe calculatorul tău, fie undeva în cloud. Poți deschide [notebook-ul lecției](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) și să parcurgi lecția pentru a construi. -> **Notă:** Dacă deschizi acest cod din cloud, trebuie să obții și fișierul [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), care este utilizat în codul notebook-ului. Adaugă-l în același director ca notebook-ul. +> **Notă:** Dacă deschizi acest cod din cloud, trebuie să preiei și fișierul [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), care este folosit în codul notebook-ului. Adaugă-l în același director cu notebook-ul. ## Introducere -În această lecție, vom explora lumea **[Petru și Lupul](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)**, inspirată de un basm muzical al compozitorului rus [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev). Vom folosi **Învățarea prin Recompensă** pentru a-l lăsa pe Petru să-și exploreze mediul, să colecteze mere gustoase și să evite întâlnirea cu lupul. +În această lecție, vom explora lumea lui **[Petrica și Lupul](https://ro.wikipedia.org/wiki/Petrica_și_lupul)**, inspirată de o poveste muzicală de un compozitor rus, [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev). Vom folosi **Învățarea prin Recompensare** pentru a-l lăsa pe Petrica să exploreze mediul său, să adune mere gustoase și să evite să-l întâlnească pe lup. -**Învățarea prin Recompensă** (RL) este o tehnică de învățare care ne permite să învățăm un comportament optim al unui **agent** într-un **mediu** prin efectuarea multor experimente. Un agent în acest mediu ar trebui să aibă un **scop**, definit de o **funcție de recompensă**. +**Învățarea prin Recompensare** (RL) este o tehnică de învățare care ne permite să învățăm un comportament optim al unui **agent** într-un anumit **mediu** prin efectuarea multor experimente. Un agent în acest mediu ar trebui să aibă un **scop**, definit printr-o **funcție de recompensă**. ## Mediul -Pentru simplitate, să considerăm lumea lui Petru ca o tablă pătrată de dimensiune `width` x `height`, ca aceasta: +Pentru simplitate, să considerăm lumea lui Petrica ca fiind o tablă pătrată de dimensiunea `width` x `height`, astfel: -![Mediul lui Petru](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![Mediul lui Petrica](../../../../translated_images/ro/environment.40ba3cb66256c93f.webp) Fiecare celulă din această tablă poate fi: -* **teren**, pe care Petru și alte creaturi pot merge. +* **teren**, pe care Petrica și alte creaturi pot umbla. * **apă**, pe care evident nu poți merge. -* un **copac** sau **iarbă**, un loc unde te poți odihni. -* un **măr**, care reprezintă ceva ce Petru ar fi bucuros să găsească pentru a se hrăni. -* un **lup**, care este periculos și ar trebui evitat. +* un **copac** sau **iarbă**, un loc unde poți să te odihnești. +* un **măr**, care reprezintă ceva ce Petrica ar fi fericit să găsească pentru a se hrăni. +* un **lup**, care este periculos și trebuie evitat. -Există un modul Python separat, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), care conține codul pentru a lucra cu acest mediu. Deoarece acest cod nu este important pentru înțelegerea conceptelor noastre, vom importa modulul și îl vom folosi pentru a crea tabla exemplu (bloc de cod 1): +Există un modul Python separat, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), care conține codul pentru a lucra cu acest mediu. Deoarece acest cod nu este important pentru înțelegerea conceptelor noastre, vom importa modulul și îl vom folosi pentru a crea tabla de probă (blocul de cod 1): ```python from rlboard import * @@ -52,63 +52,63 @@ m.randomize(seed=13) m.plot() ``` -Acest cod ar trebui să imprime o imagine a mediului similară cu cea de mai sus. +Acest cod ar trebui să afișeze o imagine a mediului asemănătoare cu cea de mai sus. ## Acțiuni și politică -În exemplul nostru, scopul lui Petru ar fi să găsească un măr, evitând lupul și alte obstacole. Pentru a face acest lucru, el poate, în esență, să se plimbe până găsește un măr. +În exemplul nostru, scopul lui Petrica ar fi să găsească un măr, evitând lupul și alte obstacole. Pentru aceasta, el poate pur și simplu să umble până găsește un măr. -Astfel, în orice poziție, el poate alege între una dintre următoarele acțiuni: sus, jos, stânga și dreapta. +Astfel, la orice poziție, el poate alege una dintre următoarele acțiuni: sus, jos, stânga și dreapta. -Vom defini aceste acțiuni ca un dicționar și le vom mapa la perechi de modificări corespunzătoare ale coordonatelor. De exemplu, deplasarea spre dreapta (`R`) ar corespunde perechii `(1,0)`. (bloc de cod 2): +Vom defini aceste acțiuni ca un dicționar și le vom asocia cu perechi de modificări corespunzătoare ale coordonatelor. De exemplu, mutarea spre dreapta (`R`) ar corespunde perechii `(1,0)`. (blocul de cod 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()) } ``` -Pentru a rezuma, strategia și scopul acestui scenariu sunt următoarele: +Pe scurt, strategia și scopul acestui scenariu sunt următoarele: -- **Strategia** agentului nostru (Petru) este definită de o așa-numită **politică**. O politică este o funcție care returnează acțiunea într-o stare dată. În cazul nostru, starea problemei este reprezentată de tablă, inclusiv poziția curentă a jucătorului. +- **Strategia**, a agentului nostru (Petrica) este definită de o așa-numită **politică**. O politică este o funcție care întoarce acțiunea pentru orice stare dată. În cazul nostru, starea problemei este reprezentată de tablă, inclusiv poziția curentă a jucătorului. -- **Scopul** învățării prin recompensă este să învățăm în cele din urmă o politică bună care ne va permite să rezolvăm problema eficient. Totuși, ca bază, să considerăm cea mai simplă politică numită **plimbare aleatorie**. +- **Scopul**, învățării prin recompensare este să învățăm eventual o politică bună care să ne permită să rezolvăm problema eficient. Totuși, ca punct de reper, să considerăm cea mai simplă politică numită **mers aleatoriu**. -## Plimbare aleatorie +## Mers aleatoriu -Să rezolvăm mai întâi problema noastră implementând o strategie de plimbare aleatorie. Cu plimbarea aleatorie, vom alege aleator următoarea acțiune din acțiunile permise, până ajungem la măr (bloc de cod 3). +Hai să rezolvăm mai întâi problema implementând o strategie de mers aleatoriu. Cu mers aleatoriu, vom alege aleator următoarea acțiune din acțiunile permise, până când ajungem la măr (blocul de cod 3). -1. Implementează plimbarea aleatorie cu codul de mai jos: +1. Implementează mersul aleator cu codul de mai jos: ```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 # număr de pași + # setează poziția inițială 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 # mâncat de lup sau înecat 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) # execută mutarea propriu-zisă break n+=1 walk(m,random_policy) ``` - Apelul la `walk` ar trebui să returneze lungimea traseului corespunzător, care poate varia de la o rulare la alta. + Apelul către `walk` ar trebui să întoarcă lungimea traseului corespunzător, care poate varia de la o execuție la alta. -1. Rulează experimentul de plimbare de mai multe ori (să zicem, 100) și imprimă statisticile rezultate (bloc de cod 4): +1. Rulează experimentul de mers de mai multe ori (să zicem 100) și afișează statisticile rezultate (blocul de cod 4): ```python def print_statistics(policy): @@ -125,17 +125,17 @@ Să rezolvăm mai întâi problema noastră implementând o strategie de plimbar print_statistics(random_policy) ``` - Observă că lungimea medie a unui traseu este în jur de 30-40 de pași, ceea ce este destul de mult, având în vedere că distanța medie până la cel mai apropiat măr este în jur de 5-6 pași. + Observă că lungimea medie a unui traseu este în jur de 30-40 de pași, ceea ce este destul de mult, dat fiind faptul că distanța medie până la cel mai apropiat măr este în jur de 5-6 pași. - Poți vedea și cum arată mișcarea lui Petru în timpul plimbării aleatorii: + Poți vedea și cum arată mișcarea lui Petrica în timpul mersului aleator: - ![Plimbarea aleatorie a lui Petru](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) + ![Mersul Aleatoriu al lui Petrica](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) ## Funcția de recompensă -Pentru a face politica noastră mai inteligentă, trebuie să înțelegem care mișcări sunt "mai bune" decât altele. Pentru a face acest lucru, trebuie să definim scopul nostru. +Pentru a face politica noastră mai inteligentă, trebuie să înțelegem care mișcări sunt „mai bune” decât altele. Pentru acest lucru, trebuie să definim scopul nostru. -Scopul poate fi definit în termeni de o **funcție de recompensă**, care va returna o valoare de scor pentru fiecare stare. Cu cât numărul este mai mare, cu atât funcția de recompensă este mai bună. (bloc de cod 5) +Scopul poate fi definit în termeni de **funcție de recompensă**, care va întoarce o valoare de scor pentru fiecare stare. Cu cât numărul este mai mare, cu atât funcția de recompensă este mai bună. (blocul de cod 5) ```python move_reward = -0.1 @@ -154,39 +154,115 @@ def reward(m,pos=None): return move_reward ``` -Un lucru interesant despre funcțiile de recompensă este că, în cele mai multe cazuri, *primim o recompensă substanțială doar la sfârșitul jocului*. Aceasta înseamnă că algoritmul nostru ar trebui cumva să-și amintească "pașii buni" care duc la o recompensă pozitivă la final și să le crească importanța. În mod similar, toate mișcările care duc la rezultate proaste ar trebui descurajate. +Un lucru interesant despre funcțiile de recompensă este că, în cele mai multe cazuri, *ni se oferă o recompensă substanțială doar la sfârșitul jocului*. Aceasta înseamnă că algoritmul nostru ar trebui cumva să-și amintească pașii "buni" care duc la o recompensă pozitivă la final și să le dea o importanță mai mare. Similar, toate mișcările care duc la rezultate slabe ar trebui descurajate. ## Q-Learning -Un algoritm pe care îl vom discuta aici se numește **Q-Learning**. În acest algoritm, politica este definită de o funcție (sau o structură de date) numită **Q-Table**. Aceasta înregistrează "calitatea" fiecărei acțiuni într-o stare dată. +Un algoritm pe care îl vom discuta aici se numește **Q-Learning**. În acest algoritm, politica este definită printr-o funcție (sau o structură de date) numită **Q-Table**. Aceasta înregistrează „calitatea” fiecărei acțiuni într-o stare dată. -Se numește Q-Table deoarece este adesea convenabil să o reprezentăm ca o tabelă sau un array multidimensional. Deoarece tabla noastră are dimensiuni `width` x `height`, putem reprezenta Q-Table folosind un array numpy cu forma `width` x `height` x `len(actions)`: (bloc de cod 6) +Se numește Q-Table deoarece este adesea convenabil să o reprezentăm ca pe un tabel sau un array multidimensional. Deoarece tabla noastră are dimensiunile `width` x `height`, putem reprezenta Q-Table folosind un array numpy cu forma `width` x `height` x `len(actions)`: (blocul de cod 6) ```python Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions) ``` -Observă că inițializăm toate valorile din Q-Table cu o valoare egală, în cazul nostru - 0.25. Aceasta corespunde politicii de "plimbare aleatorie", deoarece toate mișcările din fiecare stare sunt la fel de bune. Putem transmite Q-Table funcției `plot` pentru a vizualiza tabela pe tablă: `m.plot(Q)`. +Observă că inițializăm toate valorile din Q-Table cu o valoare egală, în cazul nostru - 0.25. Aceasta corespunde politicii „mersului aleatoriu”, deoarece toate mișcările într-o stare sunt la fel de bune. Putem transmite Q-Table funcției `plot` pentru a vizualiza tabela pe tablă: `m.plot(Q)`. -![Mediul lui Petru](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![Mediul lui Petrica](../../../../translated_images/ro/env_init.04e8f26d2d60089e.webp) -În centrul fiecărei celule există o "săgeată" care indică direcția preferată de mișcare. Deoarece toate direcțiile sunt egale, se afișează un punct. +În centrul fiecărei celule există o „săgeată” care indică direcția preferată de mișcare. Deoarece toate direcțiile sunt egale, este afișat un punct. -Acum trebuie să rulăm simularea, să explorăm mediul nostru și să învățăm o distribuție mai bună a valorilor din Q-Table, care ne va permite să găsim drumul către măr mult mai rapid. +Acum trebuie să rulăm simularea, să explorăm mediul nostru și să învățăm o distribuție mai bună a valorilor din Q-Table, care ne va permite să găsim drumul către măr mult mai repede. ## Esența Q-Learning: Ecuația Bellman -Odată ce începem să ne mișcăm, fiecare acțiune va avea o recompensă corespunzătoare, adică teoretic putem selecta următoarea acțiune pe baza celei mai mari recompense imediate. Totuși, în cele mai multe stări, mișcarea nu va atinge scopul nostru de a ajunge la măr și, astfel, nu putem decide imediat care direcție este mai bună. +Odată ce începem să ne mișcăm, fiecare acțiune va avea o recompensă corespunzătoare, adică teoretic putem selecta următoarea acțiune bazându-ne pe recompensa imediată cea mai mare. Totuși, în majoritatea stărilor, mișcarea nu va atinge scopul nostru de a ajunge la măr, astfel încât nu putem decide imediat care direcție este mai bună. > Amintește-ți că nu rezultatul imediat contează, ci mai degrabă rezultatul final, pe care îl vom obține la sfârșitul simulării. -Pentru a ține cont de această recompensă întârziată, trebuie să folosim principiile **[programării dinamice](https://en.wikipedia.org/wiki/Dynamic_programming)**, care ne permit să gândim problema noastră recursiv. +Pentru a lua în considerare această recompensă întârziată, trebuie să folosim principiile **[programării dinamice](https://en.wikipedia.org/wiki/Dynamic_programming)**, care ne permit să privim problema noastră recursiv. -Să presupunem că acum ne aflăm în starea *s* și vrem să ne mutăm în următoarea stare *s'*. Prin aceasta, vom primi recompensa imediată *r(s,a)*, definită de funcția de recompensă, plus o recompensă viitoare. Dacă presupunem că Q-Table reflectă corect "atractivitatea" fiecărei acțiuni, atunci în starea *s'* vom alege o acțiune *a'* care corespunde valorii maxime a *Q(s',a')*. Astfel, cea mai bună recompensă viitoare posibilă pe care am putea să o obținem în starea *s* va fi definită ca `max` +Să presupunem că acum ne aflăm în starea *s* și vrem să trecem în următoarea stare *s'*. Făcând acest lucru, vom primi recompensa imediată *r(s,a)*, definită de funcția de recompensă, plus o recompensă viitoare. Dacă presupunem că Q-Table reflectă corect „atractivitatea” fiecărei acțiuni, atunci în starea *s'* vom alege o acțiune *a* care corespunde valorii maxime *Q(s',a')*. Astfel, cea mai bună recompensă viitoare posibilă pe care am putea-o obține în starea *s* va fi definită ca `max`a'*Q(s',a')* (maximul aici este calculat peste toate acțiunile posibile *a'* din starea *s'*). + +Aceasta dă **formula Bellman** pentru calculul valorii Q-Table în starea *s*, dată acțiunea *a*: + + + +Aici γ este așa-numitul **factor de discount** care determină în ce măsură trebuie să preferi recompensa curentă față de recompensa viitoare și viceversa. + +## Algoritmul de învățare + +Având ecuația de mai sus, acum putem scrie pseudo-codul pentru algoritmul nostru de învățare: + +* Inițializează Q-Table Q cu numere egale pentru toate stările și acțiunile +* Setează rata de învățare α ← 1 +* Repetă simularea de multe ori + 1. Pornește de la o poziție aleatorie + 1. Repetă + 1. Alege o acțiune *a* în starea *s* + 2. Execută acțiunea mutându-te într-o nouă stare *s'* + 3. Dacă întâlnim condiția de sfârșit de joc, sau recompensa totală este prea mică - încheie simularea + 4. Calculează recompensa *r* în noua stare + 5. Actualizează funcția Q conform ecuației Bellman: *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ maxa'Q(s',a'))* + 6. *s* ← *s'* + 7. Actualizează recompensa totală și scade α. + +## Exploatare vs. explorare + +În algoritmul de mai sus, nu am specificat exact cum trebuie să alegem o acțiune la pasul 2.1. Dacă alegem acțiunea aleator, vom **explora** aleatoriu mediul și este foarte probabil să murim des, precum și să explorăm zone unde, în mod normal, nu am ajunge. O abordare alternativă ar fi să **exploatăm** valorile din Q-Table pe care deja le știm și astfel să alegem cea mai bună acțiune (cu valoarea Q-Table mai mare) în starea *s*. Totuși, aceasta ne va împiedica să explorăm alte stări și este posibil să nu găsim soluția optimă. + +Astfel, cea mai bună abordare este să echilibrăm între explorare și exploatare. Acest lucru se poate face alegând acțiunea în starea *s* cu probabilități proporționale cu valorile din Q-Table. La început, când valorile din Q-Table sunt toate la fel, ar corespunde unei alegeri aleatorii, dar pe măsură ce învățăm mai multe despre mediul nostru, vom fi mai înclinați să urmăm ruta optimă, permițând totuși agentului să aleagă o cale neexplorată din când în când. + +## Implementare în Python + +Suntem acum gata să implementăm algoritmul de învățare. Înainte de asta, avem nevoie și de o funcție care să convertească numere arbitrare din Q-Table într-un vector de probabilități pentru acțiunile corespunzătoare. + +1. Creează o funcție `probs()`: + + ```python + def probs(v,eps=1e-4): + v = v-v.min()+eps + v = v/v.sum() + return v + ``` + + Adăugăm câteva `eps` la vectorul original pentru a evita împărțirea la 0 în cazul inițial, când toate componentele vectorului sunt identice. + +Rulează algoritmul de învățare prin 5000 de experimente, numite și **epoci**: (blocul de cod 8) +```python + for epoch in range(5000): + + # Alege punctul inițial + m.random_start() + + # Pornește călătoria + 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) # permitem jucătorului să iasă în afara tablei, ceea ce termină episodul + 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 +``` + +După executarea acestui algoritm, Q-Table ar trebui să fie actualizată cu valorile care definesc atractivitatea diferitelor acțiuni la fiecare pas. Putem încerca să vizualizăm Q-Table prin desenarea unui vector în fiecare celulă care indică direcția dorită a mișcării. Pentru simplitate, desenăm un cerc mic în loc de vârful săgeții. + + ## Verificarea politicii -Deoarece Q-Table listează "atractivitatea" fiecărei acțiuni în fiecare stare, este destul de simplu să o folosim pentru a defini navigarea eficientă în lumea noastră. În cel mai simplu caz, putem selecta acțiunea corespunzătoare valorii maxime din Q-Table: (bloc de cod 9) +Deoarece Q-Table listează „atractivitatea” fiecărei acțiuni în fiecare stare, este destul de ușor să o folosim pentru a defini navigarea eficientă în lumea noastră. În cel mai simplu caz, putem selecta acțiunea corespunzătoare celei mai mari valori din Q-Table: (blocul de cod 9) ```python def qpolicy_strict(m): @@ -198,17 +274,18 @@ def qpolicy_strict(m): walk(m,qpolicy_strict) ``` -> Dacă încercați codul de mai sus de mai multe ori, este posibil să observați că uneori "se blochează" și trebuie să apăsați butonul STOP din notebook pentru a-l întrerupe. Acest lucru se întâmplă deoarece pot exista situații în care două stări "indică" una către cealaltă în termeni de valoare optimă Q, caz în care agentul ajunge să se miște între aceste stări la nesfârșit. + +> Dacă încerci codul de mai sus de mai multe ori, poți observa că uneori „îngheață” și trebuie să apeși butonul STOP în notebook pentru a-l întrerupe. Acest lucru se întâmplă deoarece pot exista situații când două stări „se indică” reciproc în termeni de valoare optimă Q, caz în care agentul ajunge să se miște între aceste stări la nesfârșit. ## 🚀Provocare -> **Sarcina 1:** Modificați funcția `walk` pentru a limita lungimea maximă a traseului la un anumit număr de pași (de exemplu, 100) și observați cum codul de mai sus returnează această valoare din când în când. +> **Sarcina 1:** Modifică funcția `walk` pentru a limita lungimea maximă a traseului la un anumit număr de pași (să zicem, 100) și observă cum codul de mai sus returnează această valoare din când în când. -> **Sarcina 2:** Modificați funcția `walk` astfel încât să nu se întoarcă în locurile în care a fost deja anterior. Acest lucru va preveni ca `walk` să intre într-un ciclu, însă agentul poate ajunge totuși să fie "blocat" într-o locație din care nu poate scăpa. +> **Sarcina 2:** Modifică funcția `walk` astfel încât să nu se întoarcă în locurile în care a fost deja anterior. Acest lucru va preveni buclarea funcției `walk`, însă agentul poate totuși să ajungă „captiv” într-o locație din care nu poate scăpa. ## Navigare -O politică de navigare mai bună ar fi cea pe care am folosit-o în timpul antrenamentului, care combină exploatarea și explorarea. În această politică, vom selecta fiecare acțiune cu o anumită probabilitate, proporțională cu valorile din Q-Table. Această strategie poate duce totuși la revenirea agentului într-o poziție pe care a explorat-o deja, dar, după cum puteți vedea din codul de mai jos, rezultă într-un traseu mediu foarte scurt către locația dorită (amintiți-vă că `print_statistics` rulează simularea de 100 de ori): (bloc de cod 10) +O politică mai bună de navigare ar fi cea pe care am folosit-o în timpul antrenamentului, care combină exploatarea și explorarea. În această politică, vom selecta fiecare acțiune cu o anumită probabilitate, proporțională cu valorile din Q-Table. Această strategie poate încă duce la întoarcerea agentului într-o poziție deja explorată, dar, după cum poți vedea din codul de mai jos, rezultă într-un traseu mediu foarte scurt către locația dorită (amintește-ți că `print_statistics` rulează simularea de 100 de ori): (bloc de cod 10) ```python def qpolicy(m): @@ -220,28 +297,32 @@ def qpolicy(m): print_statistics(qpolicy) ``` -După rularea acestui cod, ar trebui să obțineți o lungime medie a traseului mult mai mică decât înainte, în intervalul 3-6. +După rularea acestui cod, ar trebui să obții o lungime medie a traseului mult mai mică decât înainte, în intervalul 3-6. ## Investigarea procesului de învățare -Așa cum am menționat, procesul de învățare este un echilibru între explorarea și exploatarea cunoștințelor dobândite despre structura spațiului problemei. Am observat că rezultatele învățării (capacitatea de a ajuta un agent să găsească un traseu scurt către obiectiv) s-au îmbunătățit, dar este, de asemenea, interesant să observăm cum se comportă lungimea medie a traseului în timpul procesului de învățare: +Așa cum am menționat, procesul de învățare este un echilibru între explorare și exploatarea cunoștințelor dobândite despre structura spațiului de problemă. Am văzut că rezultatele învățării (abilitatea de a ajuta un agent să găsească un traseu scurt către țintă) s-au îmbunătățit, dar este și interesant să observăm cum se comportă lungimea medie a traseului pe parcursul procesului de învățare: + + -## Rezumarea învățării +Învățăturile pot fi rezumate astfel: -- **Lungimea medie a traseului crește**. Ce vedem aici este că, la început, lungimea medie a traseului crește. Acest lucru se datorează probabil faptului că, atunci când nu știm nimic despre mediu, avem tendința să fim prinși în stări nefavorabile, cum ar fi apă sau lup. Pe măsură ce învățăm mai multe și începem să folosim aceste cunoștințe, putem explora mediul mai mult, dar încă nu știm foarte bine unde sunt merele. +- **Lungimea medie a traseului crește**. Ce observăm aici este că, la început, lungimea medie a traseului crește. Probabil acest lucru se datorează faptului că atunci când nu știm nimic despre mediu, avem probabilitatea să ne blocăm în stări proaste, cum ar fi apă sau lup. Pe măsură ce învățăm mai mult și începem să folosim această cunoaștere, putem explora mediul mai mult timp, dar încă nu știm foarte bine unde sunt merele. -- **Lungimea traseului scade, pe măsură ce învățăm mai mult**. Odată ce învățăm suficient, devine mai ușor pentru agent să atingă obiectivul, iar lungimea traseului începe să scadă. Totuși, suntem încă deschiși la explorare, așa că deseori ne abatem de la cel mai bun traseu și explorăm opțiuni noi, ceea ce face traseul mai lung decât optimul. +- **Lungimea traseului scade pe măsură ce învățăm mai mult**. Odată ce învățăm suficient, devine mai ușor pentru agent să atingă scopul, iar lungimea traseului începe să scadă. Totuși, încă suntem deschiși explorării, așa că adesea ne abatem de la cel mai bun traseu și explorăm opțiuni noi, făcând traseul mai lung decât optim. -- **Creștere bruscă a lungimii**. Ce mai observăm pe acest grafic este că, la un moment dat, lungimea a crescut brusc. Acest lucru indică natura stochastică a procesului și faptul că, la un moment dat, putem "strica" coeficienții din Q-Table prin suprascrierea lor cu valori noi. Acest lucru ar trebui minimizat ideal prin reducerea ratei de învățare (de exemplu, spre sfârșitul antrenamentului, ajustăm valorile din Q-Table doar cu o valoare mică). +- **Lungimea crește brusc**. De asemenea, observăm pe acest grafic că, la un moment dat, lungimea a crescut brusc. Aceasta indică natura stocastică a procesului și faptul că, la un moment dat, putem „strica” coeficienții din Q-Table, suprascriindu-i cu valori noi. În mod ideal, acest lucru ar trebui minimizat prin scăderea ratei de învățare (de exemplu, spre finalul antrenamentului, ajustăm valorile din Q-Table doar cu o valoare mică). -În general, este important să ne amintim că succesul și calitatea procesului de învățare depind semnificativ de parametri, cum ar fi rata de învățare, reducerea ratei de învățare și factorul de discount. Aceștia sunt adesea numiți **hiperparametri**, pentru a-i distinge de **parametri**, pe care îi optimizăm în timpul antrenamentului (de exemplu, coeficienții din Q-Table). Procesul de găsire a celor mai bune valori pentru hiperparametri se numește **optimizarea hiperparametrilor** și merită o discuție separată. +Per ansamblu, este important să ne amintim că succesul și calitatea procesului de învățare depind semnificativ de parametrii precum rata de învățare, scăderea ratei de învățare și factorul de discount. Aceștia sunt adesea numiți **hiperparametri**, pentru a fi distinși de **parametrii** pe care îi optimizăm în timpul antrenamentului (de exemplu, coeficienții din Q-Table). Procesul de găsire a celor mai buni valori pentru hiperparametri se numește **optimizarea hiperparametrilor** și merită un subiect separat. -## [Test de verificare post-lectură](https://ff-quizzes.netlify.app/en/ml/) +## [Chestionar post-lectură](https://ff-quizzes.netlify.app/en/ml/) ## Temă [O lume mai realistă](assignment.md) --- -**Declinare de responsabilitate**: -Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file + +**Declinare a responsabilității**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). În timp ce ne străduim pentru acuratețe, vă rugăm să rețineți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa nativă trebuie considerat sursa autorizată. Pentru informații critice, se recomandă traducerea profesională realizată de un om. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care decurg din utilizarea acestei traduceri. + \ No newline at end of file diff --git a/translations/ro/8-Reinforcement/2-Gym/README.md b/translations/ro/8-Reinforcement/2-Gym/README.md index 6cbda3c79..2306670d3 100644 --- a/translations/ro/8-Reinforcement/2-Gym/README.md +++ b/translations/ro/8-Reinforcement/2-Gym/README.md @@ -1,14 +1,34 @@ +# CartPole Patinaj + +Problema pe care am rezolvat-o în lecția anterioară ar putea părea o problemă simplă, nu neapărat aplicabilă în scenarii din viața reală. Acest lucru nu este adevărat, deoarece multe probleme reale împărtășesc acest scenariu - inclusiv jocurile de Șah sau Go. Sunt similare deoarece avem o tablă cu reguli date și un **stare discretă**. + +## [Chestionar înainte de lecție](https://ff-quizzes.netlify.app/en/ml/) + +## Introducere + +În această lecție vom aplica aceleași principii ale Q-Learning la o problemă cu **stare continuă**, adică o stare care este dată de unul sau mai mulți numere reale. Vom aborda următoarea problemă: + +> **Problemă**: Dacă Peter vrea să scape de lup, trebuie să se poată mișca mai repede. Vom vedea cum Peter poate învăța să patineze, în special să-și mențină echilibrul, folosind Q-Learning. + +![Marea evadare!](../../../../translated_images/ro/escape.18862db9930337e3.webp) + +> Peter și prietenii săi devin creativi pentru a scăpa de lup! Imagine de [Jen Looper](https://twitter.com/jenlooper) + +Vom folosi o versiune simplificată a echilibrului cunoscută drept problema **CartPole**. În lumea cartpole, avem un glisor orizontal care poate să se miște la stânga sau la dreapta, iar scopul este să echilibrăm o tijă verticală pe vârful glisorului. + +un cartpole + ## Cerințe preliminare -În această lecție, vom folosi o bibliotecă numită **OpenAI Gym** pentru a simula diferite **medii**. Poți rula codul lecției local (de exemplu, din Visual Studio Code), caz în care simularea se va deschide într-o fereastră nouă. Dacă rulezi codul online, poate fi necesar să faci unele ajustări, așa cum este descris [aici](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7). +În această lecție vom folosi o bibliotecă numită **OpenAI Gym** pentru a simula diferite **medii**. Poți rula codul acestei lecții local (de ex. din Visual Studio Code), caz în care simularea se va deschide într-o fereastră nouă. Când rulezi codul online, este posibil să trebuiască să faci câteva ajustări în cod, așa cum este descris [aici](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7). ## OpenAI Gym -În lecția anterioară, regulile jocului și starea erau definite de clasa `Board`, pe care am creat-o noi. Aici vom folosi un **mediu de simulare** special, care va simula fizica din spatele balansării unui stâlp. Unul dintre cele mai populare medii de simulare pentru antrenarea algoritmilor de învățare prin întărire se numește [Gym](https://gym.openai.com/), care este întreținut de [OpenAI](https://openai.com/). Folosind acest Gym, putem crea diverse **medii**, de la simulări de tip cartpole până la jocuri Atari. +În lecția anterioară, regulile jocului și starea au fost date de clasa `Board` pe care am definit-o noi înșine. Aici vom folosi un **mediu de simulare** special, care va simula fizica din spatele tijei care se echilibrează. Unul dintre cele mai populare medii de simulare pentru antrenarea algoritmilor de învățare prin întărire se numește [Gym](https://gym.openai.com/), întreținut de [OpenAI](https://openai.com/). Folosind acest gym putem crea diferite **medii**, de la simularea cartpole până la jocuri Atari. > **Notă**: Poți vedea alte medii disponibile în OpenAI Gym [aici](https://gym.openai.com/envs/#classic_control). -Mai întâi, să instalăm Gym și să importăm bibliotecile necesare (bloc de cod 1): +Mai întâi, să instalăm gym și să importăm bibliotecile necesare (bloc de cod 1): ```python import sys @@ -22,13 +42,13 @@ import random ## Exercițiu - inițializează un mediu cartpole -Pentru a lucra cu problema balansării cartpole, trebuie să inițializăm mediul corespunzător. Fiecare mediu este asociat cu: +Pentru a lucra cu o problemă de echilibrare cartpole, trebuie să inițializăm mediul corespunzător. Fiecare mediu este asociat cu: -- **Spațiul de observație**, care definește structura informațiilor pe care le primim de la mediu. Pentru problema cartpole, primim poziția stâlpului, viteza și alte valori. +- **Spațiu de observații** care definește structura informației pe care o primim din mediu. Pentru problema cartpole, primim poziția tijei, viteza și alte valori. -- **Spațiul de acțiune**, care definește acțiunile posibile. În cazul nostru, spațiul de acțiune este discret și constă din două acțiuni - **stânga** și **dreapta**. (bloc de cod 2) +- **Spațiu de acțiune** care definește acțiunile posibile. În cazul nostru spațiul de acțiune este discret și constă în două acțiuni - **stânga** și **dreapta**. (bloc de cod 2) -1. Pentru a inițializa, tastează următorul cod: +1. Pentru a inițializa, scrie următorul cod: ```python env = gym.make("CartPole-v1") @@ -37,11 +57,11 @@ Pentru a lucra cu problema balansării cartpole, trebuie să inițializăm mediu print(env.action_space.sample()) ``` -Pentru a vedea cum funcționează mediul, să rulăm o simulare scurtă de 100 de pași. La fiecare pas, oferim una dintre acțiunile care trebuie luate - în această simulare selectăm aleatoriu o acțiune din `action_space`. +Să vedem cum funcționează mediul, să rulăm o simulare scurtă pentru 100 de pași. La fiecare pas, oferim o acțiune care trebuie executată - în această simulare selectăm aleator o acțiune din `action_space`. 1. Rulează codul de mai jos și vezi ce rezultă. - ✅ Amintește-ți că este preferabil să rulezi acest cod pe o instalare locală de Python! (bloc de cod 3) + ✅ Ține minte că este recomandat să rulezi acest cod pe o instalare locală de Python! (bloc de cod 3) ```python env.reset() @@ -52,11 +72,11 @@ Pentru a vedea cum funcționează mediul, să rulăm o simulare scurtă de 100 d env.close() ``` - Ar trebui să vezi ceva similar cu această imagine: + Ar trebui să vezi ceva asemănător cu această imagine: - ![cartpole fără balans](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) + ![cartpole nesusținut](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) -1. În timpul simulării, trebuie să obținem observații pentru a decide cum să acționăm. De fapt, funcția step returnează observațiile curente, o funcție de recompensă și un indicator `done` care arată dacă are sens să continuăm simularea sau nu: (bloc de cod 4) +1. În timpul simulării, trebuie să obținem observații pentru a decide cum să acționăm. De fapt, funcția step returnează observațiile curente, o funcție de recompensă și flag-ul done care indică dacă are sens să continuăm simularea sau nu: (bloc de cod 4) ```python env.reset() @@ -82,34 +102,34 @@ Pentru a vedea cum funcționează mediul, să rulăm o simulare scurtă de 100 d [ 0.17617249 0.35602306 -0.21873684 -0.90998894] -> 1.0 ``` - Vectorul de observație returnat la fiecare pas al simulării conține următoarele valori: + Vectorul de observații returnat la fiecare pas al simulării conține următoarele valori: - Poziția căruciorului - Viteza căruciorului - - Unghiul stâlpului - - Rata de rotație a stâlpului + - Unghiul tijei + - Rata de rotație a tijei -1. Obține valoarea minimă și maximă a acestor numere: (bloc de cod 5) +1. Obține valorile minime și maxime ale acestor numere: (bloc de cod 5) ```python print(env.observation_space.low) print(env.observation_space.high) ``` - De asemenea, vei observa că valoarea recompensei la fiecare pas al simulării este întotdeauna 1. Acest lucru se datorează faptului că scopul nostru este să supraviețuim cât mai mult timp posibil, adică să menținem stâlpul într-o poziție rezonabil verticală pentru cea mai lungă perioadă de timp. + Poți observa și că valoarea recompensei la fiecare pas al simulării este întotdeauna 1. Acest lucru este deoarece scopul nostru este să supraviețuim cât mai mult timp, adică să menținem tija într-o poziție verticală rezonabilă pentru cea mai lungă perioadă de timp. - ✅ De fapt, simularea CartPole este considerată rezolvată dacă reușim să obținem o recompensă medie de 195 pe parcursul a 100 de încercări consecutive. + ✅ De fapt, simularea CartPole este considerată rezolvată dacă reușim să obținem o recompensă medie de 195 pe 100 de încercări consecutive. ## Discretizarea stării -În Q-Learning, trebuie să construim un Q-Table care definește ce să facem în fiecare stare. Pentru a face acest lucru, starea trebuie să fie **discretă**, mai precis, trebuie să conțină un număr finit de valori discrete. Astfel, trebuie să **discretizăm** cumva observațiile, mapându-le la un set finit de stări. +În Q-Learning, trebuie să construim un Q-Table care definește ce să facem la fiecare stare. Pentru a face acest lucru, starea trebuie să fie **discretă**, mai precis, să conțină un număr finit de valori discrete. Astfel, trebuie cumva să **discretizăm** observațiile noastre, mapându-le într-un set finit de stări. -Există câteva moduri în care putem face acest lucru: +Există câteva moduri în care putem face asta: -- **Împărțirea în intervale**. Dacă știm intervalul unei anumite valori, putem împărți acest interval în mai multe **intervale** și apoi să înlocuim valoarea cu numărul intervalului căruia îi aparține. Acest lucru poate fi realizat folosind metoda [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html) din numpy. În acest caz, vom ști exact dimensiunea stării, deoarece va depinde de numărul de intervale pe care le selectăm pentru digitalizare. +- **Împărțirea în intervale (bins)**. Dacă cunoaștem intervalul unei valori, putem împărți acest interval în mai multe **bins**, și apoi înlocui valoarea cu numărul bin-ului căruia îi aparține. Acest lucru se poate face folosind metoda numpy [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html). În acest caz, vom cunoaște exact dimensiunea stării, deoarece aceasta va depinde de numărul de bins selectate pentru digitalizare. + +✅ Putem folosi interpolarea liniară pentru a aduce valorile într-un interval finit (de exemplu, de la -20 la 20), iar apoi convertim numerele în întregi prin rotunjire. Acest lucru ne oferă un control mai redus asupra dimensiunii stării, mai ales dacă nu cunoaștem intervalele exacte ale valorilor de intrare. De exemplu, în cazul nostru, 2 din cele 4 valori nu au limite superioare/inferioare, ceea ce poate duce la un număr infinit de stări. -✅ Putem folosi interpolarea liniară pentru a aduce valorile la un interval finit (de exemplu, de la -20 la 20) și apoi să convertim numerele în întregi prin rotunjire. Acest lucru ne oferă un control mai redus asupra dimensiunii stării, mai ales dacă nu cunoaștem intervalele exacte ale valorilor de intrare. De exemplu, în cazul nostru, 2 din cele 4 valori nu au limite superioare/inferioare, ceea ce poate duce la un număr infinit de stări. - -În exemplul nostru, vom folosi a doua abordare. După cum vei observa mai târziu, în ciuda lipsei limitelor superioare/inferioare, aceste valori rareori iau valori în afara unor intervale finite, astfel încât stările cu valori extreme vor fi foarte rare. +În exemplul nostru, vom merge pe a doua variantă. După cum vei observa mai târziu, în ciuda faptului că limitele superioare/inferioare nu sunt definite, acele valori iau rar valori în afara anumitor intervale finite, astfel aceste stări cu valori extreme vor fi foarte rare. 1. Iată funcția care va lua observația din modelul nostru și va produce un tuplu de 4 valori întregi: (bloc de cod 6) @@ -118,7 +138,7 @@ Există câteva moduri în care putem face acest lucru: return tuple((x/np.array([0.25, 0.25, 0.01, 0.1])).astype(np.int)) ``` -1. Să explorăm și o altă metodă de discretizare folosind intervale: (bloc de cod 7) +1. Să explorăm și o altă metodă de discretizare folosind bins: (bloc de cod 7) ```python def create_bins(i,num): @@ -126,17 +146,17 @@ Există câteva moduri în care putem face acest lucru: 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)] # intervale de valori pentru fiecare parametru + nbins = [20,20,10,10] # număr de coșuri pentru fiecare parametru 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. Acum să rulăm o simulare scurtă și să observăm aceste valori discrete ale mediului. Simte-te liber să încerci atât `discretize`, cât și `discretize_bins` și să vezi dacă există vreo diferență. +1. Să rulăm acum o simulare scurtă și să observăm aceste valori discrete ale mediului. Poți încerca atât `discretize`, cât și `discretize_bins` pentru a vedea dacă există vreo diferență. - ✅ `discretize_bins` returnează numărul intervalului, care începe de la 0. Astfel, pentru valorile variabilei de intrare în jurul valorii 0, returnează numărul din mijlocul intervalului (10). În `discretize`, nu ne-am preocupat de intervalul valorilor de ieșire, permițându-le să fie negative, astfel încât valorile stării nu sunt deplasate, iar 0 corespunde lui 0. (bloc de cod 8) + ✅ discretize_bins returnează numărul bin-ului, care este indexat de la 0. Astfel, pentru valori ale variabilei de intrare în jurul valorii 0 returnează numărul din mijlocul intervalului (10). În discretize, nu ne-am preocupat de intervalul valorilor de ieșire, permițându-le să fie negative, astfel valorile stării nu sunt mutate, iar 0 corespunde lui 0. (bloc de cod 8) ```python env.reset() @@ -150,15 +170,15 @@ Există câteva moduri în care putem face acest lucru: env.close() ``` - ✅ Debifează linia care începe cu `env.render` dacă vrei să vezi cum se execută mediul. În caz contrar, poți să-l execuți în fundal, ceea ce este mai rapid. Vom folosi această execuție "invizibilă" în timpul procesului de Q-Learning. + ✅ Deblochează linia care începe cu env.render dacă vrei să vezi cum rulează mediul. Altfel, poți să-l execuți în fundal, ceea ce este mai rapid. Vom folosi această rulare „invizibilă” în timpul procesului nostru de Q-Learning. ## Structura Q-Table -În lecția anterioară, starea era un simplu pereche de numere de la 0 la 8, și astfel era convenabil să reprezentăm Q-Table printr-un tensor numpy cu o formă de 8x8x2. Dacă folosim discretizarea prin intervale, dimensiunea vectorului de stare este de asemenea cunoscută, astfel încât putem folosi aceeași abordare și să reprezentăm starea printr-un array cu forma 20x20x10x10x2 (aici 2 este dimensiunea spațiului de acțiune, iar primele dimensiuni corespund numărului de intervale pe care le-am selectat pentru fiecare dintre parametrii din spațiul de observație). +În lecția anterioară, starea era o pereche simplă de numere de la 0 la 8, deci a fost convenabil să reprezentăm Q-Table ca un tensor numpy cu forma 8x8x2. Dacă folosim discretizarea prin bins, dimensiunea vectorului nostru de stare este și ea cunoscută, deci putem folosi aceeași abordare și să reprezentăm starea printr-un array cu forma 20x20x10x10x2 (aici 2 este dimensiunea spațiului de acțiuni, iar primele dimensiuni corespund numărului de bins selectate pentru fiecare parametru din spațiul de observații). -Totuși, uneori dimensiunile precise ale spațiului de observație nu sunt cunoscute. În cazul funcției `discretize`, nu putem fi niciodată siguri că starea rămâne în anumite limite, deoarece unele dintre valorile originale nu sunt limitate. Astfel, vom folosi o abordare ușor diferită și vom reprezenta Q-Table printr-un dicționar. +Totuși, uneori dimensiunile exacte ale spațiului de observație nu sunt cunoscute. În cazul funcției `discretize`, poate nu vom fi niciodată siguri că starea rămâne în anumite limite, pentru că unele valori originale nu sunt limitate. Astfel, vom folosi o abordare ușor diferită și vom reprezenta Q-Table ca un dicționar. -1. Folosește perechea *(state,action)* ca cheie a dicționarului, iar valoarea ar corespunde valorii din Q-Table. (bloc de cod 9) +1. Folosește perechea *(stare, acțiune)* ca și cheie în dicționar, iar valoarea va corespunde valorii intrării din Q-Table. (bloc de cod 9) ```python Q = {} @@ -168,38 +188,38 @@ Totuși, uneori dimensiunile precise ale spațiului de observație nu sunt cunos return [Q.get((state,a),0) for a in actions] ``` - Aici definim și o funcție `qvalues()`, care returnează o listă de valori din Q-Table pentru o stare dată, corespunzătoare tuturor acțiunilor posibile. Dacă intrarea nu este prezentă în Q-Table, vom returna 0 ca valoare implicită. + Aici definim și o funcție `qvalues()`, care returnează o listă de valori din Q-Table pentru o stare dată corespunzătoare tuturor acțiunilor posibile. Dacă intrarea nu este prezentă în Q-Table, vom returna 0 ca valoare implicită. ## Să începem Q-Learning -Acum suntem gata să-l învățăm pe Peter să-și mențină echilibrul! +Acum suntem gata să-l învățăm pe Peter să se echilibreze! 1. Mai întâi, să setăm câțiva hiperparametri: (bloc de cod 10) ```python - # hyperparameters + # hiperparametri alpha = 0.3 gamma = 0.9 epsilon = 0.90 ``` - Aici, `alpha` este **rata de învățare**, care definește în ce măsură ar trebui să ajustăm valorile curente din Q-Table la fiecare pas. În lecția anterioară am început cu 1 și apoi am scăzut `alpha` la valori mai mici în timpul antrenamentului. În acest exemplu, îl vom menține constant doar pentru simplitate, iar tu poți experimenta ajustarea valorilor `alpha` mai târziu. + Aici, `alpha` este **rata de învățare** care definește în ce măsură ar trebui să ajustăm valorile curente din Q-Table la fiecare pas. În lecția anterioară am început cu 1, apoi am scăzut `alpha` la valori mai mici pe durata antrenării. În acest exemplu o vom păstra constantă doar pentru simplitate, iar tu poți experimenta cu ajustarea valorilor lui `alpha` mai târziu. - `gamma` este **factorul de reducere**, care arată în ce măsură ar trebui să prioritizăm recompensa viitoare față de recompensa curentă. + `gamma` este **factorul de reducere** care arată în ce măsură ar trebui să prioritizăm recompensa viitoare față de cea curentă. - `epsilon` este **factorul de explorare/exploatare**, care determină dacă ar trebui să preferăm explorarea sau exploatarea. În algoritmul nostru, vom selecta acțiunea următoare conform valorilor din Q-Table în procentul `epsilon` din cazuri, iar în restul cazurilor vom executa o acțiune aleatorie. Acest lucru ne va permite să explorăm zone ale spațiului de căutare pe care nu le-am văzut niciodată. + `epsilon` este **factorul de explorare/exploatare** care determină dacă ar trebui să preferăm explorarea în locul exploatării sau invers. În algoritmul nostru, în `epsilon` procente din cazuri vom selecta acțiunea următoare conform valorilor din Q-Table, iar în restul cazurilor vom executa o acțiune aleatoare. Acest lucru ne va permite să explorăm zone ale spațiului de căutare pe care nu le-am mai văzut înainte. - ✅ În termeni de echilibrare - alegerea unei acțiuni aleatorii (explorare) ar acționa ca o împingere aleatorie în direcția greșită, iar stâlpul ar trebui să învețe cum să-și recupereze echilibrul din aceste "greșeli". + ✅ În termeni de echilibrare - alegerea unei acțiuni aleatoare (explorare) ar acționa ca o lovitură aleatoare într-o direcție greșită, iar tija va trebui să învețe cum să-și recupereze echilibrul după aceste „greșeli”. ### Îmbunătățirea algoritmului -Putem face două îmbunătățiri algoritmului nostru din lecția anterioară: - -- **Calcularea recompensei cumulative medii**, pe parcursul unui număr de simulări. Vom afișa progresul la fiecare 5000 de iterații și vom calcula media recompensei cumulative pe acea perioadă de timp. Asta înseamnă că, dacă obținem mai mult de 195 de puncte, putem considera problema rezolvată, cu o calitate chiar mai mare decât cea cerută. +Putem face și două îmbunătățiri ale algoritmului din lecția anterioară: -- **Calcularea rezultatului cumulativ mediu maxim**, `Qmax`, și vom stoca Q-Table corespunzător acelui rezultat. Când rulezi antrenamentul, vei observa că uneori rezultatul cumulativ mediu începe să scadă, și vrem să păstrăm valorile din Q-Table care corespund celui mai bun model observat în timpul antrenamentului. +- **Calcularea recompensei cumulative medii**, pe o serie de simulări. Vom afișa progresul la fiecare 5000 de iterații, iar recompensa cumulativă va fi mediată pentru acea perioadă. Dacă obținem mai mult de 195 puncte - putem considera problema rezolvată, cu o calitate chiar mai bună decât cea cerută. + +- **Calcularea rezultatului mediu cumulat maxim**, `Qmax`, și vom stoca Q-Table corespunzătoare acelui rezultat. Când rulezi antrenamentul vei observa că uneori rezultatul mediu cumulat începe să scadă, iar noi vrem să păstrăm valorile din Q-Table care corespund celui mai bun model observat în timpul antrenării. -1. Colectează toate recompensele cumulative la fiecare simulare în vectorul `rewards` pentru a le reprezenta grafic ulterior. (bloc de cod 11) +1. Colectează toate recompensele cumulative la fiecare simulare în vectorul `rewards` pentru afișări ulterioare. (bloc de cod 11) ```python def probs(v,eps=1e-4): @@ -214,15 +234,15 @@ Putem face două îmbunătățiri algoritmului nostru din lecția anterioară: obs = env.reset() done = False cum_reward=0 - # == do the simulation == + # == efectuează simularea == while not done: s = discretize(obs) if random.random() Qmax: @@ -242,23 +262,23 @@ Putem face două îmbunătățiri algoritmului nostru din lecția anterioară: Ce poți observa din aceste rezultate: -- **Aproape de obiectivul nostru**. Suntem foarte aproape de a atinge obiectivul de a obține 195 de recompense cumulative pe parcursul a 100+ rulări consecutive ale simulării, sau poate chiar l-am atins! Chiar dacă obținem numere mai mici, încă nu știm, deoarece calculăm media pe 5000 de rulări, iar doar 100 de rulări sunt necesare conform criteriilor formale. +- **Aproape de țintă**. Suntem foarte aproape să atingem ținta de a obține o recompensă cumulativă de 195 pe 100+ rulări consecutive ale simulării, sau poate am și reușit! Chiar dacă obținem valori mai mici, nu este clar încă pentru că media este calculată pe 5000 de rulări, iar criteriile formale cer doar 100 rulări. + +- **Recompensa începe să scadă**. Uneori recompensa începe să scadă, ceea ce înseamnă că putem „distruge” valorile deja învățate din Q-Table cu altele care fac situația mai rea. -- **Recompensa începe să scadă**. Uneori recompensa începe să scadă, ceea ce înseamnă că putem "distruge" valorile deja învățate din Q-Table cu cele care fac situația mai rea. +Această observație este mai vizibilă dacă afișăm progresul antrenamentului. -Această observație este mai clar vizibilă dacă reprezentăm grafic progresul antrenamentului. +## Afișarea progresului antrenamentului -## Reprezentarea grafică a progresului antrenamentului - -În timpul antrenamentului, am colectat valoarea recompensei cumulative la fiecare dintre iterații în vectorul `rewards`. Iată cum arată când o reprezentăm grafic în funcție de numărul de iterații: +În timpul antrenamentului, am colectat valoarea recompensei cumulative la fiecare iterație în vectorul `rewards`. Iată cum arată când o afișăm în funcție de numărul iterației: ```python plt.plot(rewards) ``` -![progres brut](../../../../8-Reinforcement/2-Gym/images/train_progress_raw.png) +![progres brut](../../../../translated_images/ro/train_progress_raw.2adfdf2daea09c59.webp) -Din acest grafic, nu putem spune nimic, deoarece, datorită naturii procesului de antrenament stochastic, durata sesiunilor de antrenament variază foarte mult. Pentru a înțelege mai bine acest grafic, putem calcula **media mobilă** pe o serie de experimente, să zicem 100. Acest lucru poate fi realizat convenabil folosind `np.convolve`: (bloc de cod 12) +Din acest grafic nu putem spune mare lucru, pentru că din cauza naturii stochastice a procesului de antrenament lungimea sesiunilor de antrenament variază mult. Pentru a înțelege mai bine acest grafic, putem calcula **media mobilă** peste un număr de experimente, să zicem 100. Acest lucru se poate face convenabil folosind `np.convolve`: (bloc de cod 12) ```python def running_average(x,window): @@ -267,21 +287,24 @@ def running_average(x,window): plt.plot(running_average(rewards,100)) ``` -![progres antrenament](../../../../8-Reinforcement/2-Gym/images/train_progress_runav.png) +![progres antrenament](../../../../translated_images/ro/train_progress_runav.c71694a8fa9ab359.webp) + +## Varierea hiperparametrilor + +Pentru a face învățarea mai stabilă, are sens să ajustăm unii dintre hiperparametri în timpul antrenamentului. În particular: + +- **Pentru rata de învățare**, `alpha`, putem începe cu valori apropiate de 1, apoi să scădem treptat această valoare. În timp, vom obține valori probabilistice bune în Q-Table și ar trebui să le ajustăm ușor, fără a suprascrie complet cu valori noi. -## Variarea hiperparametrilor +- **Creșterea lui epsilon**. Putem dori să creștem lent valoarea lui `epsilon`, pentru a explora mai puțin și exploata mai mult. Probabil are sens să începem cu o valoare redusă de `epsilon` și să o ducem aproape de 1. -Pentru a face învățarea mai stabilă, are sens să ajustăm unii dintre hiperparametrii noștri în timpul antrenamentului. În special: +> **Sarcina 1**: Joacă-te cu valorile hiperparametrilor și vezi dacă poți obține o recompensă cumulativă mai mare. Reușești să depășești 195? -- **Pentru rata de învățare**, `alpha`, putem începe cu valori apropiate de 1 și apoi să continuăm să scădem parametrul. Cu timpul, vom obține valori bune de probabilitate în Q-Table și, astfel, ar trebui să le ajustăm ușor, fără să le suprascriem complet cu valori noi. -- **Creșterea lui epsilon**. Poate fi util să creștem `epsilon` treptat, pentru a explora mai puțin și a exploata mai mult. Probabil are sens să începem cu o valoare mai mică pentru `epsilon` și să o creștem până aproape de 1. -> **Sarcina 1**: Joacă-te cu valorile hiperparametrilor și vezi dacă poți obține o recompensă cumulativă mai mare. Ajungi peste 195? -> **Sarcina 2**: Pentru a rezolva formal problema, trebuie să obții o recompensă medie de 195 pe parcursul a 100 runde consecutive. Măsoară acest lucru în timpul antrenamentului și asigură-te că ai rezolvat problema în mod formal! +> **Sarcina 2**: Pentru a rezolva formal problema, trebuie să obțineți o recompensă medie de 195 pe parcursul a 100 de rulări consecutive. Măsurați acest lucru în timpul antrenamentului și asigurați-vă că ați rezolvat formal problema! -## Vizualizarea rezultatului în acțiune +## Văzând rezultatul în acțiune -Ar fi interesant să vedem cum se comportă modelul antrenat. Să rulăm simularea și să urmăm aceeași strategie de selecție a acțiunilor ca în timpul antrenamentului, eșantionând conform distribuției de probabilitate din Q-Table: (bloc de cod 13) +Ar fi interesant să vedem efectiv cum se comportă modelul antrenat. Haideți să rulăm simularea și să urmăm aceeași strategie de selecție a acțiunii ca în timpul antrenamentului, eșantionând conform distribuției de probabilitate din Q-Table: (bloc de cod 13) ```python obs = env.reset() @@ -295,30 +318,32 @@ while not done: env.close() ``` -Ar trebui să vezi ceva de genul acesta: +Ar trebui să vedeți ceva asemănător: -![un cartpole echilibrat](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) +![un cartpole balansându-se](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) --- ## 🚀Provocare -> **Sarcina 3**: Aici, am folosit copia finală a Q-Table, care poate să nu fie cea mai bună. Amintește-ți că am salvat cea mai performantă Q-Table în variabila `Qbest`! Încearcă același exemplu cu cea mai performantă Q-Table, copiază `Qbest` peste `Q` și vezi dacă observi vreo diferență. +> **Sarcina 3**: Aici, am folosit copia finală a Q-Table, care s-ar putea să nu fie cea mai bună. Țineți minte că am stocat cea mai performantă Q-Table în variabila `Qbest`! Încercați același exemplu cu cea mai performantă Q-Table copiată peste `Q` și vedeți dacă observați diferența. -> **Sarcina 4**: Aici nu am selectat cea mai bună acțiune la fiecare pas, ci am eșantionat conform distribuției de probabilitate corespunzătoare. Ar avea mai mult sens să selectăm mereu cea mai bună acțiune, cu cea mai mare valoare din Q-Table? Acest lucru poate fi realizat folosind funcția `np.argmax` pentru a afla numărul acțiunii corespunzătoare celei mai mari valori din Q-Table. Implementează această strategie și vezi dacă îmbunătățește echilibrarea. +> **Sarcina 4**: Aici nu am selectat cea mai bună acțiune la fiecare pas, ci am eșantionat cu distribuția de probabilitate corespunzătoare. Ar avea mai mult sens să selectăm întotdeauna cea mai bună acțiune, cu valoarea cea mai mare din Q-Table? Acest lucru se poate face folosind funcția `np.argmax` pentru a afla numărul acțiunii corespunzătoare celei mai mari valori din Q-Table. Implementați această strategie și vedeți dacă îmbunătățește balansarea. -## [Quiz post-lectură](https://ff-quizzes.netlify.app/en/ml/) +## [Chestionar post-lectură](https://ff-quizzes.netlify.app/en/ml/) ## Temă -[Antrenează un Mountain Car](assignment.md) +[Antrenează o mașină de munte](assignment.md) ## Concluzie -Am învățat acum cum să antrenăm agenți pentru a obține rezultate bune doar oferindu-le o funcție de recompensă care definește starea dorită a jocului și oferindu-le oportunitatea de a explora inteligent spațiul de căutare. Am aplicat cu succes algoritmul Q-Learning în cazurile de medii discrete și continue, dar cu acțiuni discrete. +Acum am învățat cum să antrenăm agenți să obțină rezultate bune doar oferindu-le o funcție de recompensă care definește starea dorită a jocului și oferindu-le oportunitatea de a explora inteligent spațiul de căutare. Am aplicat cu succes algoritmul Q-Learning în cazurile mediilor discrete și continue, dar cu acțiuni discrete. -Este important să studiem și situațiile în care starea acțiunii este continuă și când spațiul de observație este mult mai complex, cum ar fi imaginea de pe ecranul unui joc Atari. În astfel de probleme, deseori trebuie să folosim tehnici de învățare automată mai puternice, cum ar fi rețelele neuronale, pentru a obține rezultate bune. Aceste subiecte mai avansate vor fi abordate în cursul nostru viitor de AI avansat. +Este important să studiem și situațiile în care starea acțiunii este și ea continuă și când spațiul de observație este mult mai complex, cum ar fi imaginea din ecranul jocului Atari. În aceste probleme avem adesea nevoie să folosim tehnici de învățare automată mai puternice, cum ar fi rețele neuronale, pentru a obține rezultate bune. Aceste subiecte mai avansate sunt obiectul cursului nostru viitor mai avansat de AI. --- -**Declinare de responsabilitate**: -Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși ne străduim să asigurăm acuratețea, vă rugăm să fiți conștienți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa natală ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri. \ No newline at end of file + +**Declinare a responsabilității**: +Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). În timp ce ne străduim pentru acuratețe, vă rugăm să rețineți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa nativă trebuie considerat sursa autorizată. Pentru informații critice, se recomandă traducerea profesională realizată de un om. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care decurg din utilizarea acestei traduceri. + \ No newline at end of file diff --git a/translations/ru/.co-op-translator.json b/translations/ru/.co-op-translator.json index 33c802e23..0030fe97b 100644 --- a/translations/ru/.co-op-translator.json +++ b/translations/ru/.co-op-translator.json @@ -24,8 +24,8 @@ "language_code": "ru" }, "1-Introduction/3-fairness/README.md": { - "original_hash": "9a6b702d1437c0467e3c5c28d763dac2", - "translation_date": "2025-09-06T08:31:33+00:00", + "original_hash": "0f00d72169a0d37eecfd16d71e01700a", + "translation_date": "2026-07-13T23:50:43+00:00", "source_file": "1-Introduction/3-fairness/README.md", "language_code": "ru" }, @@ -54,8 +54,8 @@ "language_code": "ru" }, "2-Regression/1-Tools/README.md": { - "original_hash": "fa81d226c71d5af7a2cade31c1c92b88", - "translation_date": "2025-09-06T08:26:03+00:00", + "original_hash": "0b8635427b582d03ea4ab7089b93e505", + "translation_date": "2026-07-13T23:46:57+00:00", "source_file": "2-Regression/1-Tools/README.md", "language_code": "ru" }, @@ -72,8 +72,8 @@ "language_code": "ru" }, "2-Regression/2-Data/README.md": { - "original_hash": "7c077988328ebfe33b24d07945f16eca", - "translation_date": "2025-09-06T08:26:38+00:00", + "original_hash": "a58b2c4d16c6b122643391745ac15af6", + "translation_date": "2026-07-13T23:47:50+00:00", "source_file": "2-Regression/2-Data/README.md", "language_code": "ru" }, @@ -89,6 +89,12 @@ "source_file": "2-Regression/2-Data/solution/Julia/README.md", "language_code": "ru" }, + "2-Regression/2-Data/solution/notebook.ipynb": { + "original_hash": "96b95f8cf473481f2f371de8156f1571", + "translation_date": "2026-07-13T23:36:22+00:00", + "source_file": "2-Regression/2-Data/solution/notebook.ipynb", + "language_code": "ru" + }, "2-Regression/3-Linear/README.md": { "original_hash": "8b776e731c35b171d316d01d0e7b1369", "translation_date": "2026-04-26T20:12:31+00:00", @@ -457,7 +463,7 @@ }, "8-Reinforcement/1-QLearning/README.md": { "original_hash": "911efd5e595089000cb3c16fce1beab8", - "translation_date": "2025-09-06T08:36:37+00:00", + "translation_date": "2026-07-13T23:48:45+00:00", "source_file": "8-Reinforcement/1-QLearning/README.md", "language_code": "ru" }, @@ -481,7 +487,7 @@ }, "8-Reinforcement/2-Gym/README.md": { "original_hash": "107d5bb29da8a562e7ae72262d251a75", - "translation_date": "2025-09-06T08:37:10+00:00", + "translation_date": "2026-07-13T23:49:47+00:00", "source_file": "8-Reinforcement/2-Gym/README.md", "language_code": "ru" }, @@ -581,6 +587,19 @@ "source_file": "TROUBLESHOOTING.md", "language_code": "ru" }, + "__translation_failures__": { + "sketchnotes/LICENSE.md": { + "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f", + "source_file": "sketchnotes/LICENSE.md", + "language_code": "ru", + "failure_date": "2026-07-13T23:46: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-08-29T21:08:18+00:00", diff --git a/translations/ru/1-Introduction/3-fairness/README.md b/translations/ru/1-Introduction/3-fairness/README.md index 5e1e0f76f..e73f13682 100644 --- a/translations/ru/1-Introduction/3-fairness/README.md +++ b/translations/ru/1-Introduction/3-fairness/README.md @@ -1,30 +1,30 @@ # Создание решений машинного обучения с ответственным ИИ + +![Сводка об ответственном ИИ в машинном обучении в виде скетчнота](../../../../translated_images/ru/ml-fairness.ef296ebec6afc98a.webp) +> Скетчнот от [Tomomi Imura](https://www.twitter.com/girlie_mac) -![Сводка ответственного ИИ в машинном обучении в виде скетчноута](../../../../sketchnotes/ml-fairness.png) -> Скетчноут от [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) [![Подход Microsoft к ответственному ИИ](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Подход Microsoft к ответственному ИИ") @@ -32,124 +32,128 @@ ## Справедливость -Системы ИИ должны относиться ко всем справедливо и избегать различного воздействия на схожие группы людей. Например, когда системы ИИ дают рекомендации по медицинскому лечению, заявкам на кредиты или трудоустройству, они должны делать одинаковые рекомендации для всех с похожими симптомами, финансовыми обстоятельствами или профессиональными квалификациями. Каждый из нас, как человек, носит в себе унаследованные предвзятости, которые влияют на наши решения и действия. Эти предвзятости могут проявляться в данных, которые мы используем для обучения систем ИИ. Такое влияние иногда происходит непреднамеренно. Часто трудно осознанно понять, когда вы вводите предвзятость в данные. +Системы ИИ должны справедливо относиться ко всем и избегать влияния на похожие группы людей по-разному. Например, когда системы ИИ дают рекомендации по медицинскому лечению, заявкам на кредиты или трудоустройству, они должны делать одинаковые рекомендации для всех с похожими симптомами, финансовыми обстоятельствами или профессиональной квалификацией. Каждый из нас как человек носит в себе унаследованные предубеждения, которые влияют на наши решения и действия. Эти предубеждения могут проявляться в данных, которые мы используем для обучения систем ИИ. Такая манипуляция иногда происходит непреднамеренно. Часто трудно сознательно понять, когда вы вносите предвзятость в данные. -**«Несправедливость»** охватывает негативные последствия или «вред» для группы людей, таких как те, которые определяются по расе, полу, возрасту или статусу инвалидности. Основные виды вреда, связанные со справедливостью, можно классифицировать следующим образом: +**«Несправедливость»** включает негативные воздействия или «вред» для группы людей, определяемой по расе, полу, возрасту или инвалидности. Основные виды вреда, связанные со справедливостью, можно классифицировать как: -- **Распределение**, если, например, один пол или этническая группа предпочитается другой. -- **Качество обслуживания**. Если данные обучены для одного конкретного сценария, но реальность гораздо сложнее, это приводит к плохой работе сервиса. Например, диспенсер для мыла, который не может распознать людей с темной кожей. [Источник](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773) -- **Очернение**. Несправедливая критика или маркировка чего-либо или кого-либо. Например, технология распознавания изображений некорректно маркировала изображения темнокожих людей как горилл. -- **Пере- или недопредставленность**. Идея заключается в том, что определенная группа не представлена в определенной профессии, и любой сервис или функция, продолжающие это продвигать, способствуют вреду. -- **Стереотипизация**. Ассоциация определенной группы с заранее заданными атрибутами. Например, система перевода между английским и турецким может иметь неточности из-за слов, связанных со стереотипами о поле. +- **Распределение**, если, например, одному полу или этнической группе отдается предпочтение перед другой. +- **Качество обслуживания**. Если вы обучаете данные для одного конкретного сценария, но реальность гораздо сложнее, это приводит к плохому качеству сервиса. Например, диспенсер для мыла, который не распознает людей с темной кожей. [Ссылка](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773) +- **Дениграция**. Несправедливо критиковать и маркировать что-то или кого-то. Например, технология распознавания изображений печально известна тем, что ошибочно маркировала изображения темнокожих людей как горилл. +- **Пере- или недопредставленность**. Идея состоит в том, что определённая группа не представлена в определённой профессии, и любая служба или функция, которая продолжает продвигать это, способствует нанесению вреда. +- **Стереотипизация**. Ассоциация определённой группы с предопределёнными атрибутами. Например, система перевода с английского на турецкий может иметь неточности из-за слов с гендерными стереотипическими ассоциациями. -![перевод на турецкий](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) +![перевод на турецкий](../../../../translated_images/ru/gender-bias-translate-en-tr.f185fd8822c2d437.webp) > перевод на турецкий -![перевод обратно на английский](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) -> перевод обратно на английский +![обратно на английский](../../../../translated_images/ru/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) +> обратно на английский -При проектировании и тестировании систем ИИ мы должны гарантировать, что ИИ справедлив и не запрограммирован на принятие предвзятых или дискриминационных решений, которые также запрещены для людей. Обеспечение справедливости в ИИ и машинном обучении остается сложной социотехнической задачей. +При проектировании и тестировании систем ИИ необходимо гарантировать справедливость ИИ и отсутствие программирования на предвзятые или дискриминационные решения, совершать которые также запрещено людям. Обеспечение справедливости в ИИ и машинном обучении остаётся сложной социотехнической задачей. ### Надежность и безопасность -Для построения доверия системы ИИ должны быть надежными, безопасными и стабильными как в обычных, так и в неожиданных условиях. Важно знать, как системы ИИ будут вести себя в различных ситуациях, особенно в случае выбросов. При создании решений ИИ необходимо уделять значительное внимание тому, как справляться с широким спектром обстоятельств, с которыми могут столкнуться решения ИИ. Например, самоуправляемый автомобиль должен ставить безопасность людей на первое место. Следовательно, ИИ, управляющий автомобилем, должен учитывать все возможные сценарии, с которыми автомобиль может столкнуться, такие как ночь, грозы или метели, дети, выбегающие на дорогу, домашние животные, дорожные работы и т.д. То, насколько хорошо система ИИ может справляться с широким спектром условий надежно и безопасно, отражает уровень подготовки, который разработчик данных или ИИ учел при проектировании или тестировании системы. +Для создания доверия системы ИИ должны быть надежными, безопасными и последовательными в обычных и неожиданных условиях. Важно знать, как системы ИИ будут вести себя в различных ситуациях, особенно когда они выходят за рамки обычного. При создании решений ИИ необходимо уделять значительное внимание тому, как обрабатывать разнообразные ситуации, с которыми могут столкнуться решения ИИ. Например, автопилот должен ставить безопасность людей на первое место. В результате ИИ, управляющий автомобилем, должен учитывать все возможные сценарии, такие как ночь, грозы или метели, дети, выбегающие на дорогу, животные, дорожные работы и т.п. Насколько хорошо система ИИ справляется с широким спектром условий надежно и безопасно, отражает уровень прогнозирования, который учёный по данным или разработчик ИИ учитывали при проектировании или тестировании системы. -> [🎥 Нажмите здесь, чтобы посмотреть видео: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl) +> [🎥 Нажмите здесь для видео: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl) ### Инклюзивность -Системы ИИ должны быть разработаны так, чтобы вовлекать и давать возможность каждому. При проектировании и внедрении систем ИИ специалисты по данным и разработчики ИИ выявляют и устраняют потенциальные барьеры в системе, которые могут непреднамеренно исключать людей. Например, в мире насчитывается 1 миллиард людей с инвалидностью. С развитием ИИ они могут легче получать доступ к широкому спектру информации и возможностей в своей повседневной жизни. Устранение барьеров создает возможности для инноваций и разработки продуктов ИИ с лучшим пользовательским опытом, который приносит пользу всем. +Системы ИИ должны быть разработаны так, чтобы вовлекать и расширять возможности всех. При проектировании и внедрении систем ИИ специалисты по данным и разработчики ИИ выявляют и устраняют потенциальные барьеры в системе, которые могут непреднамеренно исключать людей. Например, в мире насчитывается 1 миллиард человек с инвалидностью. С развитием ИИ они могут легче получать доступ к широкому спектру информации и возможностей в повседневной жизни. Устранение барьеров создает возможности для инноваций и разработки продуктов ИИ с лучшим опытом, которые приносят пользу всем. -> [🎥 Нажмите здесь, чтобы посмотреть видео: инклюзивность в ИИ](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 (Общий регламент по защите данных). +- Однако с системами ИИ мы должны признать противоречие между необходимостью большего объема персональных данных для повышения персонализации и эффективности систем — и конфиденциальностью. +- Аналогично появлению подключенных компьютеров с интернетом, мы также наблюдаем резкий рост числа проблем с безопасностью, связанных с ИИ. +- В то же время ИИ используется для улучшения безопасности. Например, большинство современных антивирусных сканеров сегодня работают на основе эвристик ИИ. +- Мы должны обеспечить, чтобы наши процессы Data Science гармонично сочетались с последними практиками конфиденциальности и безопасности. -### Прозрачность -Системы ИИ должны быть понятными. Важной частью прозрачности является объяснение поведения систем ИИ и их компонентов. Улучшение понимания систем ИИ требует, чтобы заинтересованные стороны понимали, как и почему они функционируют, чтобы можно было выявить потенциальные проблемы производительности, вопросы безопасности и конфиденциальности, предвзятости, исключительные практики или непреднамеренные результаты. Мы также считаем, что те, кто использует системы ИИ, должны быть честными и открытыми в отношении того, когда, почему и как они решают внедрять их. А также о ограничениях систем, которые они используют. Например, если банк использует систему ИИ для поддержки своих решений по потребительскому кредитованию, важно изучить результаты и понять, какие данные влияют на рекомендации системы. Правительства начинают регулировать ИИ в различных отраслях, поэтому специалисты по данным и организации должны объяснять, соответствует ли система ИИ нормативным требованиям, особенно если возникает нежелательный результат. +### Прозрачность +Системы ИИ должны быть понятными. Важной частью прозрачности является объяснение поведения систем ИИ и их компонентов. Повышение понимания систем ИИ требует от заинтересованных сторон понимания того, как и почему они функционируют, чтобы можно было выявлять потенциальные проблемы с производительностью, вопросы безопасности и конфиденциальности, предвзятость, исключающие практики или непредвиденные результаты. Мы также считаем, что те, кто используют системы ИИ, должны быть честными и откровенными о том, когда, почему и как они выбирают их применять, а также о ограничениях используемых систем. Например, если банк использует систему ИИ для поддержки решений по кредитованию потребителей, важно изучить результаты и понять, какие данные влияют на рекомендации системы. Правительства начинают регулировать ИИ в различных отраслях, поэтому специалисты по данным и организации должны объяснять, соответствует ли система ИИ требованиям регулирования, особенно если возникает нежелательный результат. -> [🎥 Нажмите здесь, чтобы посмотреть видео: прозрачность в ИИ](https://www.microsoft.com/videoplayer/embed/RE4voJF) +> [🎥 Нажмите здесь для видео: прозрачность в ИИ](https://www.microsoft.com/videoplayer/embed/RE4voJF) -- Поскольку системы ИИ настолько сложны, трудно понять, как они работают и интерпретировать результаты. -- Это отсутствие понимания влияет на то, как эти системы управляются, внедряются и документируются. -- Более важно, это отсутствие понимания влияет на решения, принимаемые на основе результатов, которые производят эти системы. +- Поскольку системы ИИ очень сложны, трудно понять, как они работают, и интерпретировать результаты. +- Это непонимание влияет на то, как эти системы управляются, вводятся в эксплуатацию и документируются. +- И, что важнее, это непонимание влияет на решения, принимаемые на основе результатов, которые генерируют эти системы. ### Ответственность + +Люди, которые разрабатывают и внедряют системы ИИ, должны нести ответственность за работу своих систем. Необходимость ответственности имеет особое значение для технологий с чувствительным использованием, таких как распознавание лиц. В последнее время усилился спрос на технологии распознавания лиц, особенно со стороны правоохранительных органов, которые видят потенциал этой технологии в таких применениях, как поиск пропавших детей. Однако эти технологии потенциально могут быть использованы правительством для подрыва фундаментальных свобод граждан, например, путем обеспечения постоянного наблюдения за конкретными лицами. Поэтому специалисты по данным и организации должны нести ответственность за влияние их системы ИИ на отдельных людей или общество. -Люди, которые проектируют и внедряют системы ИИ, должны нести ответственность за то, как их системы работают. Необходимость ответственности особенно важна для технологий чувствительного использования, таких как распознавание лиц. В последнее время растет спрос на технологии распознавания лиц, особенно со стороны правоохранительных органов, которые видят потенциал технологии в таких применениях, как поиск пропавших детей. Однако эти технологии могут быть использованы правительством для того, чтобы поставить под угрозу основные свободы граждан, например, путем постоянного наблюдения за конкретными людьми. Поэтому специалисты по данным и организации должны быть ответственными за то, как их система ИИ влияет на отдельных людей или общество. - -[![Ведущий исследователь ИИ предупреждает о массовом наблюдении через распознавание лиц](../../../../1-Introduction/3-fairness/images/accountability.png)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Подход Microsoft к ответственному ИИ") +[![Ведущий исследователь ИИ предупреждает о массовом наблюдении через распознавание лиц](../../../../translated_images/ru/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Подход Microsoft к ответственному ИИ") -> 🎥 Нажмите на изображение выше, чтобы посмотреть видео: Предупреждения о массовом наблюдении через распознавание лиц +> 🎥 Нажмите на изображение выше для видео: предупреждения о массовом наблюдении через распознавание лиц -В конечном итоге один из самых больших вопросов для нашего поколения, как первого поколения, которое внедряет ИИ в общество, заключается в том, как гарантировать, что компьютеры останутся подотчетными людям, и как гарантировать, что люди, которые проектируют компьютеры, останутся подотчетными всем остальным. +В конечном итоге один из главных вопросов для нашего поколения, как первого поколения, которое приносит ИИ в общество, — как обеспечить, чтобы компьютеры оставались ответственными перед людьми, и как гарантировать, чтобы люди, создающие компьютеры, оставались ответственными перед всеми остальными. ## Оценка воздействия -Перед обучением модели машинного обучения важно провести оценку воздействия, чтобы понять цель системы ИИ, предполагаемое использование, место внедрения и кто будет взаимодействовать с системой. Это полезно для рецензентов или тестировщиков, оценивающих систему, чтобы знать, какие факторы учитывать при выявлении потенциальных рисков и ожидаемых последствий. +Перед обучением модели машинного обучения важно провести оценку воздействия, чтобы понять цель системы ИИ; предполагаемое применение; где она будет внедряться; и кто будет взаимодействовать с системой. Эти сведения полезны для обзорщиков или тестировщиков системы, чтобы знать, какие факторы учитывать при выявлении потенциальных рисков и ожидаемых последствий. + +Следующие области имеют ключевое значение при проведении оценки воздействия: -Следующие области являются ключевыми при проведении оценки воздействия: +* **Негативное воздействие на отдельных лиц**. Важно учитывать любые ограничения или требования, неподдерживаемое использование или известные ограничения, препятствующие работе системы, чтобы предотвратить использование системы таким образом, который может причинить вред людям. +* **Требования к данным**. Понимание того, как и где система будет использовать данные, позволяет обзорщикам изучать требования к данным, которые необходимо учитывать (например, регламенты GDPR или HIPAA). Кроме того, следует проверить, являются ли источник и количество данных достаточными для обучения. +* **Обзор воздействия**. Составьте список потенциальных вредов, которые могут возникнуть при использовании системы. В течение жизненного цикла машинного обучения проверяйте, устранены ли выявленные проблемы. +* **Применимые цели** для каждого из шести основных принципов. Оцените, достигнуты ли цели каждого принципа и есть ли пробелы. -* **Негативное воздействие на отдельных людей**. Осознание любых ограничений или требований, неподдерживаемого использования или известных ограничений, препятствующих работе системы, важно для того, чтобы система не использовалась таким образом, который может нанести вред людям. -* **Требования к данным**. Понимание того, как и где система будет использовать данные, позволяет рецензентам изучить любые требования к данным, которые необходимо учитывать (например, регуляции GDPR или HIPPA). Кроме того, необходимо проверить, является ли источник или объем данных достаточным для обучения. -* **Сводка воздействия**. Составьте список потенциальных вредов, которые могут возникнуть при использовании системы. На протяжении всего жизненного цикла ML проверяйте, устранены ли выявленные проблемы. -* **Применимые цели** для каждого из шести основных принципов. Оцените, достигнуты ли цели каждого из принципов и есть ли какие-либо пробелы. ## Отладка с ответственным ИИ -Как и отладка программного приложения, отладка системы ИИ — это необходимый процесс выявления и устранения проблем в системе. Существует множество факторов, которые могут повлиять на то, что модель не работает так, как ожидалось или ответственно. Большинство традиционных метрик производительности модели являются количественными агрегатами производительности модели, которые недостаточны для анализа того, как модель нарушает принципы ответственного ИИ. Более того, модель машинного обучения — это черный ящик, который затрудняет понимание того, что влияет на ее результаты, или предоставление объяснений, когда она допускает ошибку. Позже в этом курсе мы узнаем, как использовать панель управления ответственного ИИ для отладки систем ИИ. Панель управления предоставляет комплексный инструмент для специалистов по данным и разработчиков ИИ для выполнения: +Подобно отладке программного приложения, отладка системы ИИ — необходимый процесс выявления и устранения проблем в системе. Существует множество факторов, которые могут привести к тому, что модель не будет работать так, как ожидается, или ответственно. Большинство традиционных метрик производительности модели — это количественные агрегаты производительности модели, которых недостаточно для анализа того, как модель нарушает принципы ответственного ИИ. Более того, модель машинного обучения — это «черный ящик», что затрудняет понимание того, что влияет на её результат или объяснение ошибок. Позже на этом курсе мы научимся использовать панель управления Responsible AI для помощи в отладке систем ИИ. Эта панель предоставляет комплексный инструмент для специалистов по данным и разработчиков ИИ для выполнения: * **Анализа ошибок**. Для выявления распределения ошибок модели, которые могут повлиять на справедливость или надежность системы. -* **Обзора модели**. Для обнаружения различий в производительности модели в различных когорт данных. -* **Анализа данных**. Для понимания распределения данных и выявления потенциальной предвзятости в данных, которая может привести к проблемам справедливости, инклюзивности и надежности. -* **Интерпретации модели**. Для понимания того, что влияет или влияет на прогнозы модели. Это помогает объяснить поведение модели, что важно для прозрачности и ответственности. +* **Обзора модели**. Чтобы обнаружить, где существуют различия в производительности модели среди различных групп данных. +* **Анализа данных**. Для понимания распределения данных и выявления потенциальной предвзятости в данных, которая может вызвать проблемы со справедливостью, инклюзивностью и надежностью. +* **Интерпретируемости модели**. Чтобы понять, что влияет или оказывает воздействие на предсказания модели. Это помогает объяснять поведение модели, что важно для прозрачности и ответственности. -## 🚀 Задание -Чтобы предотвратить возникновение вреда с самого начала, мы должны: +## 🚀 Вызов + +Чтобы предотвратить появление вреда с самого начала, мы должны: -- обеспечить разнообразие опыта и точек зрения среди людей, работающих над системами -- инвестировать в наборы данных, которые отражают разнообразие нашего общества -- разработать лучшие методы на протяжении всего жизненного цикла машинного обучения для выявления и исправления проблем ответственного ИИ, когда они возникают +- иметь разнообразные фоновые и перспективные знания среди людей, работающих над системами +- инвестировать в датасеты, отражающие разнообразие нашего общества +- развивать лучшие методы на протяжении всего жизненного цикла машинного обучения для обнаружения и исправления нарушений принципов ответственного ИИ при их возникновении -Подумайте о реальных сценариях, где недоверие к модели очевидно в процессе создания и использования модели. Что еще следует учитывать? +Подумайте о реальных сценариях, в которых недоверие к модели проявляется в построении и использовании модели. Что еще следует учитывать? -## [Тест после лекции](https://ff-quizzes.netlify.app/en/ml/) +## [Викторина после лекции](https://ff-quizzes.netlify.app/en/ml/) ## Обзор и самостоятельное изучение + -В этом уроке вы узнали основы концепций справедливости и несправедливости в машинном обучении. -Посмотрите этот воркшоп, чтобы глубже изучить темы: +В этом уроке вы узнали основы понятий справедливости и несправедливости в машинном обучении. + +Просмотрите этот семинар, чтобы глубже погрузиться в темы: -- В поисках ответственного ИИ: Применение принципов на практике, авторы Бесмира Нуши, Мехрнуш Самеки и Амит Шарма +- В стремлении к ответственной ИИ: Применение принципов на практике от Бесмиры Нуши, Мехрнуш Самеки и Амита Шармы -[![Responsible AI Toolbox: Открытая платформа для создания ответственного ИИ](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: Открытая платформа для создания ответственного ИИ") +[![Responsible AI Toolbox: An open-source framework for building responsible AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") -> 🎥 Нажмите на изображение выше, чтобы посмотреть видео: RAI Toolbox: Открытая платформа для создания ответственного ИИ, авторы Бесмира Нуши, Мехрнуш Самеки и Амит Шарма +> 🎥 Нажмите на изображение выше для просмотра видео: RAI Toolbox: Фреймворк с открытым исходным кодом для построения ответственной ИИ от Бесмиры Нуши, Мехрнуш Самеки и Амита Шармы -Также прочитайте: +Также прочитайте: -- Центр ресурсов Microsoft по ответственному ИИ: [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) -- Исследовательская группа 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 @@ RAI Toolbox: --- -**Отказ от ответственности**: -Этот документ был переведен с помощью сервиса автоматического перевода [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/ru/2-Regression/1-Tools/README.md b/translations/ru/2-Regression/1-Tools/README.md index 7c6e7e828..47acb881c 100644 --- a/translations/ru/2-Regression/1-Tools/README.md +++ b/translations/ru/2-Regression/1-Tools/README.md @@ -1,120 +1,121 @@ -# Начало работы с Python и Scikit-learn для моделей регрессии +# Начинаем работу с Python и Scikit-learn для регрессионных моделей -![Сводка регрессий в виде скетчноута](../../../../sketchnotes/ml-regression.png) +![Сводка регрессий в скетчноуте](../../../../translated_images/ru/ml-regression.4e4f70e3b3ed446e.webp) > Скетчноут от [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 Notebook. +- Настраивать компьютер для локальных задач машинного обучения. +- Работать с Jupyter Notebooks. - Использовать Scikit-learn, включая установку. -- Исследовать линейную регрессию через практическое упражнение. +- Исследовать линейную регрессию на практике. ## Установки и настройки -[![ML для начинающих - Настройте инструменты для создания моделей машинного обучения](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML для начинающих - Настройте инструменты для создания моделей машинного обучения") +[![ML для начинающих - Настройка инструментов для создания моделей машинного обучения](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](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](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](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) > - > [![Настройка Python в Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Настройка Python в Visual Studio Code") + > [![Настройка Python с Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](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, рекомендуется использовать виртуальное окружение. Обратите внимание, если вы устанавливаете библиотеку на M1 Mac, на указанной странице есть специальные инструкции. -4. **Установите Jupyter Notebook**. Вам нужно [установить пакет Jupyter](https://pypi.org/project/jupyter/). +1. **Установите Jupyter Notebook**. Вам понадобится [установить пакет Jupyter](https://pypi.org/project/jupyter/). ## Ваша среда разработки ML -Вы будете использовать **ноутбуки** для разработки кода на Python и создания моделей машинного обучения. Этот тип файлов является распространенным инструментом для специалистов по данным, и их можно идентифицировать по суффиксу или расширению `.ipynb`. +Вы будете использовать **notebooks** для разработки вашего Python-кода и создания моделей машинного обучения. Этот тип файлов является распространённым инструментом для специалистов по данным и определяется по расширению `.ipynb`. -Ноутбуки представляют собой интерактивную среду, которая позволяет разработчику одновременно писать код, добавлять заметки и документацию вокруг кода, что очень полезно для экспериментальных или исследовательских проектов. +Notebooks — это интерактивная среда, которая позволяет разработчику не только писать код, но и добавлять заметки и документацию вокруг кода, что очень полезно для экспериментальных или исследовательских проектов. -[![ML для начинающих - Настройка Jupyter Notebook для создания моделей регрессии](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML для начинающих - Настройка Jupyter Notebook для создания моделей регрессии") +[![ML для начинающих - Настройка Jupyter Notebooks для начала создания регрессионных моделей](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML для начинающих - Настройка Jupyter Notebooks для начала создания регрессионных моделей") -> 🎥 Нажмите на изображение выше, чтобы посмотреть короткое видео о выполнении этого упражнения. +> 🎥 Нажмите на изображение выше для короткого видео о выполнении этого упражнения. -### Упражнение - работа с ноутбуком +### Упражнение — работа с notebook В этой папке вы найдете файл _notebook.ipynb_. 1. Откройте _notebook.ipynb_ в Visual Studio Code. - Jupyter сервер запустится с Python 3+. Вы найдете области ноутбука, которые можно `запустить`, куски кода. Вы можете запустить блок кода, выбрав значок, похожий на кнопку воспроизведения. + Запустится Jupyter сервер с запущенным Python 3+. Вы увидите участки в notebook, которые можно `run` — блоки кода. Чтобы запустить блок кода, выберите иконку, похожую на кнопку «play». -2. Выберите значок `md` и добавьте немного markdown, а также следующий текст **# Добро пожаловать в ваш ноутбук**. +1. Выберите иконку `md` и добавьте немного markdown с текстом **# Добро пожаловать в ваш notebook**. Затем добавьте немного кода на Python. -3. Введите **print('hello notebook')** в блоке кода. -4. Выберите стрелку, чтобы запустить код. +1. Введите **print('hello notebook')** в блоке кода. +1. Выберите стрелку, чтобы запустить код. - Вы должны увидеть напечатанное сообщение: + Вы должны увидеть распечатанное сообщение: ```output hello notebook ``` -![VS Code с открытым ноутбуком](../../../../2-Regression/1-Tools/images/notebook.jpg) +![VS Code с открытым notebook](../../../../translated_images/ru/notebook.4a3ee31f396b8832.webp) -Вы можете чередовать ваш код с комментариями, чтобы документировать ноутбук. +Вы можете чередовать код с комментариями, чтобы самодокументировать notebook. -✅ Подумайте минуту, насколько отличается рабочая среда веб-разработчика от среды специалиста по данным. +✅ Подумайте минуту, насколько рабочая среда веб-разработчика отличается от среды специалиста по данным. -## Начало работы с Scikit-learn +## Работа со Scikit-learn -Теперь, когда Python настроен в вашей локальной среде, и вы освоились с Jupyter Notebook, давайте также освоимся с Scikit-learn (произносится как `sci`, как в `science`). 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), который поможет вам выполнять задачи 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 и другие инструменты для создания моделей машинного обучения, выполняющих так называемые «традиционные задачи машинного обучения». Мы сознательно избегали нейронных сетей и глубокого обучения, так как они лучше рассматриваются в нашем предстоящем курсе «ИИ для начинающих». -Scikit-learn делает процесс создания моделей и их оценки простым и удобным. Она в основном ориентирована на использование числовых данных и содержит несколько готовых наборов данных для обучения. Также она включает предварительно созданные модели, которые студенты могут попробовать. Давайте изучим процесс загрузки готовых данных и использования встроенного оценщика для первой модели машинного обучения с Scikit-learn на основе базовых данных. +Scikit-learn упрощает создание моделей и их оценку для использования. Он в первую очередь ориентирован на работу с числовыми данными и содержит несколько готовых датасетов, которые можно использовать в учебных целях. Также включены преднастроенные модели для практики студентов. Давайте исследуем процесс загрузки встроенных данных и использования встроенного оценщика — первой ML-модели с Scikit-learn на простых данных. -## Упражнение - ваш первый ноутбук с 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. [![ML для начинающих - Ваш первый проект линейной регрессии на Python](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "ML для начинающих - Ваш первый проект линейной регрессии на Python") -> 🎥 Нажмите на изображение выше, чтобы посмотреть короткое видео о выполнении этого упражнения. +> 🎥 Нажмите на изображение выше для короткого видео о выполнении этого упражнения. -В файле _notebook.ipynb_, связанном с этим уроком, очистите все ячейки, нажав на значок "мусорной корзины". +В файле _notebook.ipynb_, связанном с этим уроком, очистите все ячейки, нажав на значок «корзина». -В этом разделе вы будете работать с небольшим набором данных о диабете, который встроен в Scikit-learn для учебных целей. Представьте, что вы хотите протестировать лечение для пациентов с диабетом. Модели машинного обучения могут помочь вам определить, какие пациенты лучше отреагируют на лечение, основываясь на комбинациях переменных. Даже очень базовая модель регрессии, при визуализации, может показать информацию о переменных, которые помогут вам организовать ваши теоретические клинические испытания. +В этой части вы будете работать с небольшим датасетом о диабете, встроенным в 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. Добавьте импорты, введя следующий код: +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` используется для разделения данных на обучающий и тестовый наборы. -### Набор данных о диабете +### Датасет диабета -Встроенный [набор данных о диабете](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: Т-лимфоциты (тип белых кровяных клеток) -✅ Этот набор данных включает концепцию "пол" как переменную, важную для исследований о диабете. Многие медицинские наборы данных включают этот тип бинарной классификации. Подумайте немного о том, как такие категории могут исключать определенные части населения из лечения. +✅ Этот датасет включает понятие «пол» как признак, важный для исследований диабета. Многие медицинские датасеты используют такого рода бинарную классификацию. Подумайте немного о том, как такие категоризации могут исключать части населения из лечения. Теперь загрузите данные X и y. -> 🎓 Помните, это обучение с учителем, и нам нужна целевая переменная '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]) ``` - То, что вы получаете в ответ, — это кортеж. Вы присваиваете два первых значения кортежа переменным `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-й столбец набора данных. Вы можете сделать это, используя оператор `:` для выбора всех строк, а затем выбрав 3-й столбец, используя индекс (2). Вы также можете изменить форму данных на 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) на тестовые и обучающие наборы. 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()` — это функция, которую вы увидите во многих библиотеках ML, таких как 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 @@ Scikit-learn делает процесс создания моделей и их plt.show() ``` - ![диаграмма рассеяния, показывающая точки данных о диабете](../../../../2-Regression/1-Tools/images/scatterplot.png) -✅ Подумайте, что здесь происходит. Прямая линия проходит через множество маленьких точек данных, но что именно она делает? Можете ли вы понять, как с помощью этой линии можно предсказать, где новый, ранее не виденный точечный элемент должен находиться относительно оси y графика? Попробуйте сформулировать практическое применение этой модели. + ![диаграмма рассеяния, показывающая точки данных по диабету](../../../../translated_images/ru/scatterplot.ad8b356bcbb33be6.webp) -Поздравляем, вы создали свою первую модель линейной регрессии, сделали предсказание с её помощью и отобразили его на графике! ---- -## 🚀Задание + ✅ Подумайте немного о том, что здесь происходит. Прямая линия проходит через множество маленьких точек данных, но что именно она делает? Видите ли вы, как с помощью этой линии можно предсказать, где должна располагаться новая, ранее не виденная точка данных относительно оси 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 делает процесс создания моделей и их --- -**Отказ от ответственности**: -Этот документ был переведен с помощью сервиса автоматического перевода [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/ru/2-Regression/2-Data/README.md b/translations/ru/2-Regression/2-Data/README.md index 02a6ecd3a..9923b6593 100644 --- a/translations/ru/2-Regression/2-Data/README.md +++ b/translations/ru/2-Regression/2-Data/README.md @@ -1,62 +1,62 @@ -# Построение модели регрессии с использованием Scikit-learn: подготовка и визуализация данных +# Построение регрессионной модели с использованием Scikit-learn: подготовка и визуализация данных -![Инфографика визуализации данных](../../../../2-Regression/2-Data/images/data-visualization.png) +![Инфографика визуализации данных](../../../../translated_images/ru/data-visualization.54e56dded7c1a804.webp) Инфографика от [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 для более выразительной визуализации данных. -## Задаем правильные вопросы к данным +## Правильный вопрос к вашим данным -Вопрос, на который вы хотите получить ответ, определит, какие алгоритмы машинного обучения вы будете использовать. А качество ответа будет сильно зависеть от характера ваших данных. +Вопрос, на который вы хотите получить ответ, определит, какие типы алгоритмов машинного обучения вы будете использовать. А качество ответа во многом зависит от характера ваших данных. -Посмотрите на [данные](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' и другие значения. Фактически данные довольно запутаны. [![ML для начинающих - Как анализировать и очищать набор данных](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "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. +Откройте файл _notebook.ipynb_ в Visual Studio Code и импортируйте таблицу в новый DataFrame Pandas. -1. Используйте функцию `head()`, чтобы просмотреть первые пять строк. +1. Используйте функцию `head()` чтобы просмотреть первые пять строк. ```python import pandas as pd @@ -66,28 +66,28 @@ ✅ Какую функцию вы бы использовали, чтобы просмотреть последние пять строк? -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,23 +96,23 @@ ``` - ✅ Вы можете вывести любые данные для проверки, используя `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` с указанием в дюймах, per bin или 'each'. Тыквы действительно сложно взвесить точно, так что отфильтруем их, выбрав только тыквы с строкой 'bushel' в столбце `Package`. 1. Добавьте фильтр в начале файла, под импортом .csv: @@ -120,13 +120,13 @@ 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 фунтов». Всё довольно сложно! Давайте не будем преобразовывать бушель в фунты, а определим цену за бушель. Все эти исследования бушелей тыкв показывают, насколько важно понимать природу ваших данных! -Теперь вы можете анализировать цены за единицу на основе их измерения в бушелях. Если вы снова выведете данные, вы увидите, как они стандартизированы. +Теперь вы можете анализировать цены за единицу, основываясь на их мере бушеля. Если вы выведете данные ещё раз, увидите, как они стандартизированы. -✅ Вы заметили, что тыквы, продаваемые за полбушеля, очень дорогие? Можете ли вы понять, почему? Подсказка: маленькие тыквы намного дороже больших, вероятно, потому что их намного больше на бушель, учитывая неиспользованное пространство, занимаемое одной большой пустой тыквой для пирога. +✅ Заметили, что тыквы, продающиеся по половине бушеля, очень дорогие? Можете понять, почему? Подсказка: маленькие тыквы значительно дороже больших, вероятно потому, что их гораздо больше в одном бушеле, учитывая неиспользуемое пространство, занятое одной большой пустой тыквой для пирога. ## Стратегии визуализации -Часть работы специалиста по данным заключается в демонстрации качества и характера данных, с которыми он работает. Для этого они часто создают интересные визуализации, такие как графики, диаграммы и таблицы, показывающие различные аспекты данных. Таким образом, они могут визуально показать отношения и пробелы, которые иначе трудно обнаружить. +Часть работы специалиста по данным — демонстрировать качество и характер данных, с которыми он работает. Для этого часто создают интересные визуализации, диаграммы, графики и таблицы, показывая разные аспекты данных. Так они могут визуально показать взаимосвязи и пробелы, которые иначе трудно обнаружить. -[![ML для начинающих - Как визуализировать данные с помощью Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML для начинающих - Как визуализировать данные с помощью Matplotlib") +[![ML для начинающих - Как визуализировать данные с Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML для начинающих - Как визуализировать данные с Matplotlib") -> 🎥 Нажмите на изображение выше, чтобы посмотреть короткое видео о визуализации данных для этого урока. +> 🎥 Нажмите на изображение выше для просмотра короткого видео о визуализации данных для этого урока. -Визуализации также могут помочь определить технику машинного обучения, наиболее подходящую для данных. Например, диаграмма рассеяния, которая, кажется, следует линии, указывает на то, что данные подходят для упражнения по линейной регрессии. +Визуализации также помогают определить, какой метод машинного обучения лучше всего подходит для данных. Диаграмма рассеяния, которая кажется идущей по линии, например, указывает, что данные подходят для линейной регрессии. -Одна из библиотек визуализации данных, которая хорошо работает в 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, который вы создали. Что бы показал простой линейный график? -1. Импортируйте Matplotlib в начале файла, под импортом Pandas: +1. Импортируйте Matplotlib вверху файла, под импортом Pandas: ```python import matplotlib.pyplot as plt ``` -1. Перезапустите весь notebook, чтобы обновить данные. -1. Внизу notebook добавьте ячейку для построения данных в виде коробки: +1. Перезапустите весь ноутбук для обновления. +1. Внизу ноутбука добавьте ячейку для построения box-графика (ящика с усами): ```python price = new_pumpkins.Price @@ -174,44 +174,121 @@ plt.show() ``` - ![Диаграмма рассеяния, показывающая связь между ценой и месяцем](../../../../2-Regression/2-Data/images/scatterplot.png) + ![Диаграмма рассеяния, показывающая зависимость цены от месяца](../../../../translated_images/ru/scatterplot.b6868f44cbd2051c.webp) - Является ли это полезным графиком? Удивляет ли вас что-то в нем? + Это полезный график? Что-то вас удивило? - Это не особенно полезно, так как он просто отображает ваши данные в виде набора точек в заданный месяц. + На самом деле, он не очень полезен, так как просто показывает разброс ваших данных по месяцам в виде точек. -### Сделаем его полезным +### Сделайте его полезным -Чтобы графики отображали полезные данные, обычно нужно как-то сгруппировать данные. Давайте попробуем создать график, где ось y показывает месяцы, а данные демонстрируют распределение. +Чтобы графики показывали полезную информацию, обычно данные нужно как-то сгруппировать. Попробуем создать график со столбцами, где ось Y показывает месяцы, а данные демонстрируют распределение. -1. Добавьте ячейку для создания сгруппированной столбчатой диаграммы: +1. Добавьте ячейку для построения сгруппированной столбчатой диаграммы: ```python new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') plt.ylabel("Pumpkin Price") ``` - ![Столбчатая диаграмма, показывающая связь между ценой и месяцем](../../../../2-Regression/2-Data/images/barchart.png) + ![Сгруппированная столбчатая диаграмма, показывающая зависимость цены от месяца](../../../../translated_images/ru/barchart.a833ea9194346d76.webp) + + Это более полезная визуализация! Похоже, что самая высокая цена на тыквы бывает в сентябре и октябре. Совпадает ли это с вашими ожиданиями? Почему да или почему нет? + +## Упражнение — экспериментируем с Seaborn + +Matplotlib мощная библиотека, но для создания аккуратной диаграммы может потребоваться много кода. [Seaborn](https://seaborn.pydata.org/) — библиотека, построенная _на основе_ Matplotlib, предназначенная для статистической визуализации данных. Она работает напрямую с DataFrame Pandas, применяет привлекательные стили по умолчанию и позволяет создавать информативные графики с гораздо меньшим кодом. Поскольку Seaborn возвращает объекты Matplotlib, вы можете использовать всё, что уже знаете о Matplotlib, для тонкой настройки результатов. + +> Если у вас ещё не установлена библиотека Seaborn, установите её с помощью `pip install seaborn`. + +1. Импортируйте Seaborn в начале ноутбука, под другими импортами. По традиции импортируется как `sns`: + + ```python + import seaborn as sns + ``` + +### Диаграммы рассеяния для демонстрации взаимосвязей + +Важная часть исследования данных перед созданием модели — поиск _взаимосвязей_ между переменными. [Диаграмма рассеяния](https://ru.wikipedia.org/wiki/Диаграмма_рассеяния) — один из лучших инструментов для этого: если точки на ней располагаются вдоль линии, переменные могут коррелировать, что хорошо подходит для построения модели линейной регрессии. + +1. Воссоздайте диаграмму рассеяния «цена к месяцу» с помощью функции Seaborn [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) (relation plot), которая работает напрямую со столбцами вашего DataFrame: + + ```python + sns.relplot(x="Price", y="Month", data=new_pumpkins) + ``` + + ![Диаграмма рассеяния Seaborn, показывающая зависимость цены от месяца](../../../../translated_images/ru/relplot.a03837d8f0329cec.webp) + + Обратите внимание, как вы передаете _названия столбцов_ и DataFrame, а Seaborn сам заботится о подписях осей. + +2. Вы можете переключиться на линейный график, передав параметр `kind="line"`. Seaborn даже рисует затемнённую область, показывающую доверительный интервал вокруг линии: + + ```python + sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins) + ``` + + ![Линейный график Seaborn, показывающий зависимость цены от месяца](../../../../translated_images/ru/lineplot.f9034ba47b1e30ee.webp) + + Эти данные довольно шумные, поэтому линейный график далеко не самый наглядный выбор — но он показывает, как легко изменить тип диаграммы в 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") + ``` + + ![A Seaborn bar chart showing the price distribution per month](../../../../translated_images/ru/catplot.e73fc35fdf96242b.webp) + + Это подтверждает то, что вы видели с 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") + ``` + + ![A Seaborn heatmap showing correlations between the numeric columns](../../../../translated_images/ru/heatmap.bd98dce43b404c57.webp) + + Значения, близкие к `1` (или `-1`), означают, что столбцы сильно _линейно_ коррелированы. Обратите внимание, как `Low Price` и `High Price` почти идеально коррелируют. `Month`, с другой стороны, показывает лишь слабую линейную корреляцию с ценой — хотя столбчатая диаграмма выше выявила явный сезонный пик в сентябре и октябре. Это важный урок: коэффициент корреляции измеряет только _прямолинейные_ отношения, поэтому он может не заметить сезонные или иные нелинейные паттерны. ✅ Почему полезно смотреть и на тепловую карту, *и* на такие графики, как столбчатая диаграмма, перед тем как решать, какие столбцы использовать? + +### Matplotlib или Seaborn? + +Обе библиотеки стоит знать: + +- **Matplotlib** даёт тонкий контроль над каждым элементом графика и является основой, на которой строятся почти все другие библиотеки для построения графиков на Python. +- **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/ru/2-Regression/2-Data/solution/notebook.ipynb b/translations/ru/2-Regression/2-Data/solution/notebook.ipynb index 5c9057b47..1ed43995b 100644 --- a/translations/ru/2-Regression/2-Data/solution/notebook.ipynb +++ b/translations/ru/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Этот документ был переведен с использованием сервиса автоматического перевода [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-29T23:10:52+00:00", - "source_file": "2-Regression/2-Data/solution/notebook.ipynb", - "language_code": "ru" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/ru/8-Reinforcement/1-QLearning/README.md b/translations/ru/8-Reinforcement/1-QLearning/README.md index 79ceb3fab..4125bdaba 100644 --- a/translations/ru/8-Reinforcement/1-QLearning/README.md +++ b/translations/ru/8-Reinforcement/1-QLearning/README.md @@ -1,47 +1,47 @@ -# Введение в обучение с подкреплением и Q-Learning +# Введение в обучение с подкреплением и Q-обучение -![Краткое описание обучения с подкреплением в машинном обучении в виде скетчноута](../../../../sketchnotes/ml-reinforcement.png) +![Краткое содержание обучения с подкреплением в машинном обучении в виде скетчноута](../../../../translated_images/ru/ml-reinforcement.94024374d63348db.webp) > Скетчноут от [Tomomi Imura](https://www.twitter.com/girlie_mac) -Обучение с подкреплением включает три важных понятия: агент, состояния и набор действий для каждого состояния. Выполняя действие в определённом состоянии, агент получает награду. Представьте компьютерную игру Super Mario. Вы — Марио, находитесь на уровне игры, стоите рядом с краем обрыва. Над вами монета. Вы, будучи Марио, находитесь на уровне игры в определённой позиции — это ваше состояние. Шаг вправо (действие) приведёт вас к падению с обрыва, что даст низкий числовой результат. Однако нажатие кнопки прыжка позволит вам заработать очко и остаться в живых. Это положительный исход, который должен принести вам положительный числовой результат. +Обучение с подкреплением включает три важных понятия: агент, некоторые состояния и набор действий для каждого состояния. Выполняя действие в заданном состоянии, агент получает награду. Снова представьте себе компьютерную игру Super Mario. Вы — Марио, вы на уровне игры, стоите рядом с краем обрыва. Над вами монета. Вы — Марио, на уровне игры, в конкретной позиции ... это ваше состояние. Сделать шаг вправо (действие) приведёт к тому, что вы упадёте с обрыва, и получите низкий числовой балл. Однако нажатие кнопки прыжка позволит вам заработать очко и остаться в живых. Это положительный исход, и за него вам должна быть присуждена положительная числовая награда. -Используя обучение с подкреплением и симулятор (игру), вы можете научиться играть в игру, чтобы максимизировать награду, оставаясь в живых и набирая как можно больше очков. +Используя обучение с подкреплением и симулятор (игру), вы можете научиться играть так, чтобы максимизировать награду — оставаться в живых и набирать как можно больше очков. [![Введение в обучение с подкреплением](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) -> 🎥 Нажмите на изображение выше, чтобы услышать, как Дмитрий рассказывает об обучении с подкреплением. +> 🎥 Нажмите на изображение выше, чтобы послушать Дмитрия, рассказывающего об обучении с подкреплением -## [Тест перед лекцией](https://ff-quizzes.netlify.app/en/ml/) +## [Предлекционный тест](https://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://ru.wikipedia.org/wiki/Петя_и_волк)**, вдохновлённый музыкальной сказкой русского композитора [Сергея Прокофьева](https://ru.wikipedia.org/wiki/Сергей_Прокофьев). Мы будем использовать **обучение с подкреплением**, чтобы позволить Пете исследовать его окружение, собирать вкусные яблоки и избегать встречи с волком. +В этом уроке мы исследуем мир **[Петра и Волка](https://ru.wikipedia.org/wiki/Петя_и_волк)**, вдохновлённый музыкальной сказкой русского композитора, [Сергей Прокофьев](https://ru.wikipedia.org/wiki/Сергей_Прокофьев). Мы будем использовать **обучение с подкреплением**, чтобы позволить Петру исследовать окружение, собирать вкусные яблоки и избегать встречи с волком. -**Обучение с подкреплением** (RL) — это метод обучения, который позволяет нам изучить оптимальное поведение **агента** в некоторой **среде**, проводя множество экспериментов. Агент в этой среде должен иметь **цель**, определённую с помощью **функции награды**. +**Обучение с подкреплением** (RL) — это метод обучения, позволяющий нам узнать оптимальное поведение **агента** в некоторой **среде** путём проведения множества экспериментов. Агент в этой среде должен иметь некоторую **цель**, определённую через **функцию награды**. ## Среда -Для простоты представим мир Пети в виде квадратной доски размером `width` x `height`, как показано ниже: +Для простоты давайте представим мир Петра в виде квадратной доски размером `width` x `height`, вот такой: -![Среда Пети](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![Среда Петра](../../../../translated_images/ru/environment.40ba3cb66256c93f.webp) -Каждая ячейка на этой доске может быть: +Каждая ячейка в этой доске может быть: * **землёй**, по которой Петя и другие существа могут ходить. * **водой**, по которой, очевидно, ходить нельзя. * **деревом** или **травой**, местом, где можно отдохнуть. -* **яблоком**, которое Петя будет рад найти, чтобы подкрепиться. +* **яблоком**, которое Петя будет рад найти, чтобы накормить себя. * **волком**, который опасен и которого следует избегать. -Существует отдельный модуль 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 * @@ -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 шагов. + Обратите внимание, что средняя длина пути около 30-40 шагов, что довольно много, учитывая, что среднее расстояние до ближайшего яблока около 5-6 шагов. - Вы также можете увидеть, как выглядит движение Пети во время случайной прогулки: + Также вы можете увидеть, как выглядят перемещения Петра во время случайного блуждания: - ![Случайная прогулка Пети](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) + ![Случайное блуждание Петра](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) ## Функция награды -Чтобы сделать нашу политику более разумной, нам нужно понять, какие шаги "лучше" других. Для этого нам нужно определить нашу цель. +Чтобы сделать нашу политику более «умной», нам нужно понять, какие ходы «лучше» других. Для этого нужно определить нашу цель. -Цель может быть определена с помощью **функции награды**, которая возвращает некоторое числовое значение для каждого состояния. Чем выше число, тем лучше награда. (блок кода 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-таблицей, потому что её удобно представлять в виде таблицы или многомерного массива. Поскольку наша доска имеет размеры `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)`. -![Среда Пети](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![Среда Петра](../../../../translated_images/ru/env_init.04e8f26d2d60089e.webp) -В центре каждой ячейки находится "стрелка", указывающая предпочтительное направление движения. Поскольку все направления равны, отображается точка. +В центре каждой ячейки показана «стрелка», указывающая предпочтительное направление движения. Поскольку все направления равны, отображается точка. -Теперь нам нужно запустить симуляцию, исследовать нашу среду и изучить лучшее распределение значений Q-таблицы, которое позволит нам гораздо быстрее найти путь к яблоку. +Теперь нам нужно запустить симуляцию, исследовать среду и обучить лучшее распределение значений Q-таблицы, что позволит нам гораздо быстрее находить путь к яблоку. -## Суть Q-Learning: уравнение Беллмана +## Суть Q-обучения: уравнение Беллмана -Как только мы начинаем двигаться, каждое действие будет иметь соответствующую награду, то есть теоретически мы можем выбрать следующее действие на основе наивысшей немедленной награды. Однако в большинстве состояний шаг не приведёт нас к цели — достижению яблока, и мы не сможем сразу решить, какое направление лучше. +Как только мы начнём движение, каждое действие будет иметь соответствующую награду, то есть мы теоретически можем выбрать следующее действие, основываясь на наивысшей немедленной награде. Однако во многих состояниях ход не приведёт к нашей цели — достижению яблока, и поэтому мы не можем сразу определить, какое направление лучше. -> Помните, что важен не немедленный результат, а конечный результат, который мы получим в конце симуляции. +> Помните, что важен не немедленный результат, а итоговый результат, который мы получим в конце симуляции. -Чтобы учитывать эту отложенную награду, нам нужно использовать принципы **[динамического программирования](https://ru.wikipedia.org/wiki/Динамическое_программирование)**, которые позволяют рассматривать нашу задачу рекурсивно. +Чтобы учитывать эту отложенную награду, нам нужно использовать принципы **[динамического программирования](https://ru.wikipedia.org/wiki/Динамическое_программирование)**, позволяющие рекурсивно рассматривать нашу задачу. -Предположим, что мы сейчас находимся в состоянии *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. Обновить суммарную награду и уменьшить α. + +## Использование 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-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-Value, в результате чего агент бесконечно перемещается между этими состояниями. + +> Если вы попробуете запустить код выше несколько раз, вы можете заметить, что иногда он "зависает", и вам приходится нажимать кнопку СТОП в блокноте, чтобы прервать выполнение. Это происходит потому, что могут быть ситуации, когда два состояния "смотрят" друг на друга с точки зрения оптимального 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,21 +297,23 @@ 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/) @@ -243,5 +322,7 @@ print_statistics(qpolicy) --- -**Отказ от ответственности**: -Этот документ был переведен с помощью сервиса автоматического перевода [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/ru/8-Reinforcement/2-Gym/README.md b/translations/ru/8-Reinforcement/2-Gym/README.md index 0a3f14b15..7b7cbf8d1 100644 --- a/translations/ru/8-Reinforcement/2-Gym/README.md +++ b/translations/ru/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-обучения к задаче с **непрерывным состоянием**, то есть состоянием, заданным одним или несколькими действительными числами. Мы рассмотрим следующую задачу: + +> **Задача**: Если Пётр хочет убежать от волка, ему нужно уметь двигаться быстрее. Мы увидим, как Пётр может научиться кататься на коньках, в частности, сохранять равновесие, используя Q-обучение. + +![Великое бегство!](../../../../translated_images/ru/escape.18862db9930337e3.webp) + +> Пётр и его друзья проявляют изобретательность, чтобы убежать от волка! Изображение от [Jen Looper](https://twitter.com/jenlooper) + +Мы будем использовать упрощённую версию балансирования, известную как задача **CartPole**. В мире cartpole у нас есть горизонтальный ползунок, который может двигаться влево или вправо, а цель — удержать вертикальный стержень на ползунке в равновесии. + +a cartpole + +## Предварительные знания + +В этом уроке мы будем использовать библиотеку **OpenAI Gym** для симуляции различных **окружений**. Код этого урока можно запускать локально (например, из Visual Studio Code), в этом случае симуляция откроется в новом окне. При запуске кода онлайн может потребоваться внести некоторые изменения в код, как описано [здесь](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7). ## OpenAI Gym -В предыдущем уроке правила игры и состояние задавались классом `Board`, который мы определили самостоятельно. Здесь мы будем использовать специальную **среду симуляции**, которая будет моделировать физику балансирующего шеста. Одна из самых популярных сред симуляции для обучения алгоритмов с подкреплением называется [Gym](https://gym.openai.com/), которая поддерживается [OpenAI](https://openai.com/). С помощью 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 и импортируем необходимые библиотеки (блок кода 1): +Сначала установим gym и импортируем необходимые библиотеки (блок кода 1): ```python import sys @@ -20,13 +40,13 @@ import numpy as np import random ``` -## Упражнение — инициализация среды CartPole +## Упражнение - инициализировать окружение cartpole -Чтобы работать с задачей балансировки CartPole, нам нужно инициализировать соответствующую среду. Каждая среда связана с: +Чтобы работать с задачей балансирования cartpole, нам нужно инициализировать соответствующее окружение. Каждое окружение связано с: -- **Пространством наблюдений**, которое определяет структуру информации, получаемой из среды. Для задачи CartPole мы получаем положение шеста, скорость и некоторые другие значения. +- **Пространством наблюдений (Observation space)**, которое определяет структуру информации, которую мы получаем из окружения. Для задачи cartpole мы получаем позицию стержня, скорость и некоторые другие значения. -- **Пространством действий**, которое определяет возможные действия. В нашем случае пространство действий дискретное и состоит из двух действий — **влево** и **вправо**. (блок кода 2) +- **Пространством действий (Action space)**, которое определяет возможные действия. В нашем случае пространство действий дискретное и состоит из двух действий — **влево** и **вправо**. (блок кода 2) 1. Для инициализации введите следующий код: @@ -37,11 +57,11 @@ import random print(env.action_space.sample()) ``` -Чтобы понять, как работает среда, давайте запустим короткую симуляцию на 100 шагов. На каждом шаге мы предоставляем одно из действий, которое нужно выполнить — в этой симуляции мы просто случайным образом выбираем действие из `action_space`. +Чтобы понять, как работает окружение, давайте запустим короткую симуляцию на 100 шагов. На каждом шаге мы будем задавать одно из возможных действий — в этой симуляции мы просто случайным образом выбираем действие из `action_space`. -1. Запустите код ниже и посмотрите, к чему это приведет. +1. Запустите код ниже и посмотрите, к чему это приведёт. - ✅ Помните, что предпочтительно запускать этот код на локальной установке Python! (блок кода 3) + ✅ Помните, что предпочтительно выполнять этот код на локальной установке Python! (блок кода 3) ```python env.reset() @@ -52,11 +72,11 @@ import random env.close() ``` - Вы должны увидеть что-то похожее на это изображение: + Вы должны увидеть нечто подобное на это изображение: - ![небалансирующий CartPole](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) + ![cartpole без балансировки](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) -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. Это потому, что наша цель — выживать как можно дольше, то есть удерживать стержень в достаточно вертикальном положении максимально долго. - ✅ На самом деле симуляция CartPole считается решенной, если нам удается получить среднее вознаграждение 195 за 100 последовательных попыток. + ✅ Фактически, симуляция CartPole считается решённой, если мы достигаем среднего вознаграждения 195 за 100 последовательных испытаний. ## Дискретизация состояния -В Q-Learning нам нужно построить Q-таблицу, которая определяет, что делать в каждом состоянии. Чтобы это сделать, состояние должно быть **дискретным**, точнее, оно должно содержать конечное количество дискретных значений. Таким образом, нам нужно каким-то образом **дискретизировать** наши наблюдения, сопоставляя их с конечным набором состояний. +В Q-обучении нам нужно построить Q-таблицу, которая определяет, что делать в каждом состоянии. Чтобы это сделать, наше состояние должно быть **дискретным**, точнее, должно содержать конечное число дискретных значений. Значит, нам нужно как-то **дискретизировать** наши наблюдения, отображая их в конечный набор состояний. -Есть несколько способов сделать это: +Есть несколько способов это сделать: -- **Разделение на интервалы**. Если мы знаем интервал определенного значения, мы можем разделить этот интервал на несколько **интервалов**, а затем заменить значение номером интервала, к которому оно принадлежит. Это можно сделать с помощью метода numpy [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html). В этом случае мы точно будем знать размер состояния, так как он будет зависеть от количества интервалов, которые мы выберем для дискретизации. +- **Разбиение на интервалы (bins)**. Если мы знаем интервал некоторого значения, мы можем разделить этот интервал на несколько **корзин (bins)** и заменить значение номером корзины, к которой оно принадлежит. Это можно сделать с помощью функции numpy [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html). В этом случае мы точно знаем размерность состояния, так как она будет зависеть от количества выбранных корзин для дискретизации. + +✅ Можно использовать линейную интерполяцию, чтобы привести значения к некоторому конечному интервалу (скажем, от -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,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. (блок кода 8) + ✅ функция discretize_bins возвращает номер корзины, нумерация с 0. Значит, для значений входной переменной около 0 она возвращает число из середины интервала (10). В функции discretize мы не учитывали диапазон выходных значений, позволяя им быть отрицательными, поэтому значения состояний не сдвинуты, и 0 соответствует 0. (блок кода 8) ```python env.reset() @@ -150,15 +170,15 @@ import random env.close() ``` - ✅ Раскомментируйте строку, начинающуюся с `env.render`, если хотите увидеть, как выполняется среда. В противном случае вы можете выполнить ее в фоновом режиме, что быстрее. Мы будем использовать это "невидимое" выполнение во время процесса Q-Learning. + ✅ Раскомментируйте строку, начинающуюся с env.render, если хотите видеть выполнение окружения. В противном случае можно выполнять его в фоновом режиме — это быстрее. Мы будем использовать такое «невидимое» выполнение во время процесса Q-обучения. ## Структура 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-таблицы для данного состояния, соответствующих всем возможным действиям. Если запись отсутствует в 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, а затем уменьшали `alpha` во время обучения. В этом примере мы оставим её постоянной для простоты, хотя вы можете потом поэкспериментировать и изменить значение `alpha`. - `epsilon` — это **фактор исследования/эксплуатации**, который определяет, должны ли мы предпочитать исследование или эксплуатацию. В нашем алгоритме мы будем в `epsilon` процентах случаев выбирать следующее действие в соответствии со значениями Q-таблицы, а в оставшихся случаях выполнять случайное действие. Это позволит нам исследовать области пространства поиска, которые мы никогда раньше не видели. + `gamma` — это **коэффициент дисконтирования**, показывающий, насколько важно учитывать будущее вознаграждение по сравнению с текущим. - ✅ В терминах балансировки — выбор случайного действия (исследование) будет действовать как случайный толчок в неправильном направлении, и шесту придется научиться восстанавливать баланс после этих "ошибок". + `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) ``` -![сырой прогресс](../../../../8-Reinforcement/2-Gym/images/train_progress_raw.png) +![сырое состояние прогресса](../../../../translated_images/ru/train_progress_raw.2adfdf2daea09c59.webp) -На этом графике невозможно ничего сказать, потому что из-за природы стохастического процесса обучения длина обучающих сессий сильно варьируется. Чтобы придать этому графику больше смысла, мы можем рассчитать **скользящее среднее** за серию экспериментов, скажем, 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)) ``` -![прогресс обучения](../../../../8-Reinforcement/2-Gym/images/train_progress_runav.png) +![прогресс обучения](../../../../translated_images/ru/train_progress_runav.c71694a8fa9ab359.webp) ## Изменение гиперпараметров -Чтобы сделать обучение более стабильным, имеет смысл корректировать некоторые из наших гиперпараметров во время обучения. В частности: +Чтобы обучение было более стабильным, имеет смысл изменять некоторые гиперпараметры во время тренировки. В частности: + +- **По коэффициенту обучения** `alpha` можно начать с значения близкого к 1, а затем постепенно снижать этот параметр. Со временем мы будем получать надежные значения вероятностей в Q-таблице, и нужно лишь небольшое корректирование, а не полное переписывание значений. + +- **Увеличивать epsilon**. Можно увеличивать `epsilon` постепенно, чтобы уменьшать исследование и увеличивать использование. Вероятно, имеет смысл начать с низкого `epsilon` и подниматься до почти 1. + +> **Задание 1**: Поиграйте с гиперпараметрами и попробуйте добиться большей накопленной награды. Получается ли у вас больше 195? -- **Для скорости обучения**, `alpha`, мы можем начать с значений, близких к 1, а затем постепенно уменьшать параметр. Со временем мы будем получать хорошие вероятностные значения в Q-таблице, и поэтому мы должны корректировать их слегка, а не полностью перезаписывать новыми значениями. -- **Увеличить epsilon**. Мы можем постепенно увеличивать `epsilon`, чтобы меньше исследовать и больше использовать. Вероятно, имеет смысл начать с низкого значения `epsilon` и двигаться к почти 1. -> **Задача 1**: Попробуйте изменить значения гиперпараметров и посмотрите, сможете ли вы достичь более высокого суммарного вознаграждения. Удается ли вам превысить 195? -> **Задача 2**: Чтобы формально решить задачу, необходимо достичь среднего вознаграждения в 195 за 100 последовательных запусков. Измеряйте это во время обучения и убедитесь, что задача формально решена! +> **Задача 2**: Для формального решения задачи необходимо получить среднюю награду 195 за 100 последовательных запусков. Измеряйте это во время обучения и убедитесь, что вы формально решили задачу! -## Просмотр результата в действии +## Наблюдение результата в действии -Было бы интересно увидеть, как ведет себя обученная модель. Давайте запустим симуляцию и будем следовать той же стратегии выбора действий, что и во время обучения, выбирая действия в соответствии с вероятностным распределением в Q-таблице: (блок кода 13) +Было бы интересно увидеть, как ведет себя обученная модель. Запустим симуляцию и выберем действия по той же стратегии выбора, что и во время обучения, с выборкой согласно вероятностному распределению в Q-таблице: (кодовый блок 13) ```python obs = env.reset() @@ -297,28 +320,30 @@ env.close() Вы должны увидеть что-то вроде этого: -![балансирующая тележка](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) +![балансирующий маятник на тележке](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) --- -## 🚀Испытание +## 🚀Вызов -> **Задача 3**: Здесь мы использовали финальную копию Q-таблицы, которая может быть не самой лучшей. Помните, что мы сохранили лучшую Q-таблицу в переменной `Qbest`! Попробуйте тот же пример с лучшей Q-таблицей, скопировав `Qbest` в `Q`, и посмотрите, заметите ли вы разницу. +> **Задача 3**: Здесь мы использовали финальную копию Q-таблицы, которая может быть не лучшей. Помните, что мы сохранили лучшую Q-таблицу в переменную `Qbest`! Попробуйте тот же пример, заменив `Q` на `Qbest` и посмотрите, заметите ли вы разницу. -> **Задача 4**: Здесь мы не выбирали лучшее действие на каждом шаге, а выбирали действия на основе соответствующего вероятностного распределения. Было бы логичнее всегда выбирать лучшее действие с наибольшим значением в Q-таблице? Это можно сделать с помощью функции `np.argmax`, чтобы определить номер действия, соответствующий наибольшему значению в Q-таблице. Реализуйте эту стратегию и посмотрите, улучшит ли она балансировку. +> **Задача 4**: Здесь мы не выбирали лучшее действие на каждом шаге, а выбирали с вероятностью, соответствующей распределению. Будет ли более разумно всегда выбирать лучшее действие с наивысшим значением в Q-таблице? Это можно сделать с помощью функции `np.argmax`, чтобы определить номер действия с максимальным значением в Q-таблице. Реализуйте эту стратегию и посмотрите, улучшится ли балансирование. -## [Тест после лекции](https://ff-quizzes.netlify.app/en/ml/) +## [Викторина после лекции](https://ff-quizzes.netlify.app/en/ml/) ## Задание -[Обучите модель для Mountain Car](assignment.md) +[Обучите машину в горах](assignment.md) ## Заключение -Теперь мы научились обучать агентов достигать хороших результатов, просто предоставляя им функцию вознаграждения, которая определяет желаемое состояние игры, и давая им возможность разумно исследовать пространство поиска. Мы успешно применили алгоритм Q-Learning в случаях дискретных и непрерывных сред, но с дискретными действиями. +Теперь мы научились тренировать агентов добиваться хороших результатов, просто предоставляя функцию награды, которая определяет желаемое состояние игры, и давая им возможность интеллектуально исследовать пространство поиска. Мы успешно применили алгоритм Q-обучения как в дискретных, так и в непрерывных средах, но с дискретными действиями. -Важно также изучить ситуации, когда пространство действий является непрерывным, а пространство наблюдений гораздо более сложным, например, изображение с экрана игры Atari. В таких задачах часто требуется использовать более мощные методы машинного обучения, такие как нейронные сети, чтобы достичь хороших результатов. Эти более сложные темы будут рассмотрены в нашем следующем продвинутом курсе по искусственному интеллекту. +Важно также изучать ситуации, когда пространство действий тоже непрерывно, а пространство наблюдений намного сложнее, например изображение с экрана игры 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/sk/.co-op-translator.json b/translations/sk/.co-op-translator.json index a03cf366b..54665c4ee 100644 --- a/translations/sk/.co-op-translator.json +++ b/translations/sk/.co-op-translator.json @@ -24,8 +24,8 @@ "language_code": "sk" }, "1-Introduction/3-fairness/README.md": { - "original_hash": "9a6b702d1437c0467e3c5c28d763dac2", - "translation_date": "2025-09-05T16:00:41+00:00", + "original_hash": "0f00d72169a0d37eecfd16d71e01700a", + "translation_date": "2026-07-14T06:05:35+00:00", "source_file": "1-Introduction/3-fairness/README.md", "language_code": "sk" }, @@ -54,8 +54,8 @@ "language_code": "sk" }, "2-Regression/1-Tools/README.md": { - "original_hash": "fa81d226c71d5af7a2cade31c1c92b88", - "translation_date": "2025-09-05T15:21:49+00:00", + "original_hash": "0b8635427b582d03ea4ab7089b93e505", + "translation_date": "2026-07-14T05:59:56+00:00", "source_file": "2-Regression/1-Tools/README.md", "language_code": "sk" }, @@ -72,8 +72,8 @@ "language_code": "sk" }, "2-Regression/2-Data/README.md": { - "original_hash": "7c077988328ebfe33b24d07945f16eca", - "translation_date": "2025-09-05T15:25:38+00:00", + "original_hash": "a58b2c4d16c6b122643391745ac15af6", + "translation_date": "2026-07-14T06:01:24+00:00", "source_file": "2-Regression/2-Data/README.md", "language_code": "sk" }, @@ -89,6 +89,12 @@ "source_file": "2-Regression/2-Data/solution/Julia/README.md", "language_code": "sk" }, + "2-Regression/2-Data/solution/notebook.ipynb": { + "original_hash": "96b95f8cf473481f2f371de8156f1571", + "translation_date": "2026-07-14T05:53:53+00:00", + "source_file": "2-Regression/2-Data/solution/notebook.ipynb", + "language_code": "sk" + }, "2-Regression/3-Linear/README.md": { "original_hash": "8b776e731c35b171d316d01d0e7b1369", "translation_date": "2026-04-26T19:08:20+00:00", @@ -457,7 +463,7 @@ }, "8-Reinforcement/1-QLearning/README.md": { "original_hash": "911efd5e595089000cb3c16fce1beab8", - "translation_date": "2025-09-05T16:40:14+00:00", + "translation_date": "2026-07-14T06:02:54+00:00", "source_file": "8-Reinforcement/1-QLearning/README.md", "language_code": "sk" }, @@ -481,7 +487,7 @@ }, "8-Reinforcement/2-Gym/README.md": { "original_hash": "107d5bb29da8a562e7ae72262d251a75", - "translation_date": "2025-09-05T16:46:17+00:00", + "translation_date": "2026-07-14T06:04:20+00:00", "source_file": "8-Reinforcement/2-Gym/README.md", "language_code": "sk" }, @@ -523,7 +529,7 @@ }, "9-Real-World/2-Debugging-ML-Models/README.md": { "original_hash": "df2b538e8fbb3e91cf0419ae2f858675", - "translation_date": "2025-09-05T15:55:18+00:00", + "translation_date": "2026-07-14T06:06:59+00:00", "source_file": "9-Real-World/2-Debugging-ML-Models/README.md", "language_code": "sk" }, @@ -581,6 +587,19 @@ "source_file": "TROUBLESHOOTING.md", "language_code": "sk" }, + "__translation_failures__": { + "sketchnotes/LICENSE.md": { + "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f", + "source_file": "sketchnotes/LICENSE.md", + "language_code": "sk", + "failure_date": "2026-07-14T05:58: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-05T15:48:33+00:00", diff --git a/translations/sk/1-Introduction/3-fairness/README.md b/translations/sk/1-Introduction/3-fairness/README.md index c93b4cd85..2a9688f2c 100644 --- a/translations/sk/1-Introduction/3-fairness/README.md +++ b/translations/sk/1-Introduction/3-fairness/README.md @@ -1,134 +1,159 @@ -# Budovanie riešení strojového učenia s dôrazom na zodpovednú AI - -![Zhrnutie zodpovednej AI v strojovom učení v sketchnote](../../../../sketchnotes/ml-fairness.png) +# Budovanie riešení strojového učenia so zodpovednou AI + +![Prehľad zodpovednej AI v strojovom učení v sketchnote](../../../../translated_images/sk/ml-fairness.ef296ebec6afc98a.webp) > Sketchnote od [Tomomi Imura](https://www.twitter.com/girlie_mac) ## [Kvíz pred prednáškou](https://ff-quizzes.netlify.app/en/ml/) - + ## Úvod -V tomto kurze začnete objavovať, ako strojové učenie ovplyvňuje naše každodenné životy. Už teraz sú systémy a modely zapojené do rozhodovacích úloh, ako sú diagnostika v zdravotníctve, schvaľovanie úverov alebo odhaľovanie podvodov. Preto je dôležité, aby tieto modely fungovali spoľahlivo a poskytovali dôveryhodné výsledky. Rovnako ako akákoľvek softvérová aplikácia, aj systémy AI môžu zlyhať alebo mať nežiaduci výsledok. Preto je nevyhnutné rozumieť a vedieť vysvetliť správanie modelu AI. +V tomto učebnom pláne začnete objavovať, ako strojové učenie môže ovplyvňovať a ovplyvňuje náš každodenný život. Už teraz sú systémy a modely zapojené do denných rozhodovacích úloh, ako sú zdravotné diagnózy, schvaľovanie pôžičiek alebo detekcia podvodov. Preto je dôležité, aby tieto modely fungovali dobre a poskytovali dôveryhodné výsledky. Rovnako ako v prípade akéhokoľvek softvérového aplikovania, aj systémy AI môžu nesplniť očakávania alebo mať nežiaduci výsledok. Preto je nevyhnutné vedieť pochopiť a vysvetliť správanie AI modelu. -Predstavte si, čo sa môže stať, keď údaje, ktoré používate na vytvorenie týchto modelov, neobsahujú určité demografické skupiny, ako sú rasa, pohlavie, politické názory, náboženstvo, alebo ich neprimerane zastupujú. Čo ak je výstup modelu interpretovaný tak, že uprednostňuje určitú demografickú skupinu? Aké sú dôsledky pre aplikáciu? A čo sa stane, keď model má nepriaznivý výsledok a je škodlivý pre ľudí? Kto je zodpovedný za správanie systému AI? Toto sú niektoré otázky, ktoré budeme skúmať v tomto kurze. +Predstavte si, čo sa môže stať, keď dáta, ktoré používate na vytváranie týchto modelov, neobsahujú určité demografické údaje, ako je rasa, pohlavie, politický názor, náboženstvo, alebo neprimerane reprezentujú takéto demografické skupiny. Čo ak je výstup modelu interpretovaný tak, že uprednostňuje nejakú demografickú skupinu? Aké sú dôsledky pre aplikáciu? A čo sa stane, keď má model nepriaznivý výsledok a škodí ľuďom? Kto je zodpovedný za správanie AI systému? To sú niektoré otázky, ktoré v tomto kurzu preskúmame. -V tejto lekcii sa naučíte: +V tejto lekcii: -- Zvýšiť povedomie o dôležitosti spravodlivosti v strojovom učení a o škodách súvisiacich so spravodlivosťou. -- Oboznámiť sa s praxou skúmania odchýlok a neobvyklých scenárov na zabezpečenie spoľahlivosti a bezpečnosti. -- Získať pochopenie potreby posilniť všetkých prostredníctvom navrhovania inkluzívnych systémov. -- Preskúmať, aké dôležité je chrániť súkromie a bezpečnosť údajov a ľudí. -- Vidieť význam prístupu „sklenená krabica“ na vysvetlenie správania modelov AI. -- Byť si vedomý toho, ako je zodpovednosť kľúčová pre budovanie dôvery v systémy AI. +- Zvýšite si povedomie o význame spravodlivosti v strojovom učení a škodách súvisiacich so spravodlivosťou. +- Zoznámite sa s praxou skúmania odľahlých a neobvyklých scenárov na zabezpečenie spoľahlivosti a bezpečnosti. +- Získate pochopenie potreby posilniť každého navrhovaním inkluzívnych systémov. +- Preskúmate, aké je dôležité chrániť súkromie a bezpečnosť dát a ľudí. +- Uvidíte význam "skleneného boxu" na vysvetlenie správania AI modelov. +- Budete si uvedomovať, ako je zodpovednosť nevyhnutná na budovanie dôvery v AI systémy. -## Predpoklad +## Predpoklady -Ako predpoklad si prosím preštudujte „Zásady zodpovednej AI“ v rámci učebnej cesty a pozrite si nasledujúce video na túto tému: +Ako predpoklad si prosím prejdite „Princípy zodpovednej AI“ v Learn Path a pozrite si nižšie uvedené video k téme: -Viac o zodpovednej AI sa dozviete na tejto [učebnej ceste](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott). +Viac sa dozviete o Zodpovednej AI sledovaním tohto [Learning Path](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) -[![Prístup Microsoftu k zodpovednej AI](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Prístup Microsoftu k zodpovednej AI") +[![Microsoftov prístup k zodpovednej AI](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoft's Approach to Responsible AI") -> 🎥 Kliknite na obrázok vyššie pre video: Prístup Microsoftu k zodpovednej AI +> 🎥 Kliknite na obrázok vyššie pre video: Microsoftov prístup k zodpovednej AI ## Spravodlivosť -Systémy AI by mali zaobchádzať so všetkými spravodlivo a vyhnúť sa tomu, aby ovplyvňovali podobné skupiny ľudí rôznymi spôsobmi. Napríklad, keď systémy AI poskytujú odporúčania týkajúce sa lekárskej liečby, žiadostí o úver alebo zamestnania, mali by robiť rovnaké odporúčania všetkým s podobnými symptómami, finančnými okolnosťami alebo odbornými kvalifikáciami. Každý z nás ako človek nesie vrodené predsudky, ktoré ovplyvňujú naše rozhodnutia a činy. Tieto predsudky môžu byť zjavné v údajoch, ktoré používame na trénovanie systémov AI. Takáto manipulácia sa niekedy môže stať neúmyselne. Často je ťažké vedome rozpoznať, kedy do údajov zavádzame predsudky. +AI systémy by mali zaobchádzať so všetkými spravodlivo a vyhýbať sa tomu, aby rovnaké skupiny ľudí ovplyvňovali rôznym spôsobom. Napríklad, keď AI systémy poskytujú odporúčania o lekárskom ošetrení, žiadostiach o pôžičky alebo zamestnaní, mali by robiť rovnaké odporúčania všetkým s podobnými príznakmi, finančnými pomermi alebo profesijnými kvalifikáciami. Každý z nás ako ľudia nesie dedičné predsudky, ktoré ovplyvňujú naše rozhodnutia a konanie. Tieto predsudky môžu byť zjavné v dátach, ktoré používame na trénovanie AI systémov. Takéto manipulácie sa môžu niekedy stať neúmyselne. Často je ťažké vedome vedieť, kedy zavádzate predsudky do dát. -**„Nespravodlivosť“** zahŕňa negatívne dopady alebo „škody“ na skupinu ľudí, ako sú tí definovaní podľa rasy, pohlavia, veku alebo zdravotného postihnutia. Hlavné škody súvisiace so spravodlivosťou možno klasifikovať ako: +**„Nespravodlivosť“** zahŕňa negatívne dopady alebo „škody“ pre skupinu ľudí, napríklad definovaných podľa rasy, pohlavia, veku alebo statusu zdravotného postihnutia. Hlavné škody súvisiace so spravodlivosťou možno klasifikovať nasledovne: -- **Alokácia**, ak je napríklad uprednostnené jedno pohlavie alebo etnická skupina pred druhou. -- **Kvalita služby**. Ak trénujete údaje pre jeden konkrétny scenár, ale realita je oveľa zložitejšia, vedie to k zle fungujúcej službe. Napríklad dávkovač mydla, ktorý nedokázal rozpoznať ľudí s tmavou pokožkou. [Referencie](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773) -- **Očierňovanie**. Nespravodlivé kritizovanie a označovanie niečoho alebo niekoho. Napríklad technológia označovania obrázkov neslávne označila obrázky ľudí s tmavou pokožkou ako gorily. -- **Nadmerné alebo nedostatočné zastúpenie**. Myšlienka, že určitá skupina nie je viditeľná v určitom povolaní, a akákoľvek služba alebo funkcia, ktorá to naďalej podporuje, prispieva k škode. -- **Stereotypizácia**. Priraďovanie preddefinovaných atribútov určitej skupine. Napríklad systém prekladu medzi angličtinou a turečtinou môže mať nepresnosti kvôli slovám so stereotypnými asociáciami k pohlaviu. +- **Pridelenie**, ak je napríklad pohlavie alebo etnicita uprednostňovaná pred iným. +- **Kvalita služby**. Ak trénujete dáta iba pre jeden špecifický scenár, ale realita je oveľa zložitejšia, vedie to k zlej výkonnosti služby. Napríklad dávkovač tekutého mydla, ktorý nevedel rozpoznať osoby s tmavou pokožkou. [Referencie](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773) +- **Očierňovanie**. Nespravodlivo kritizovať a označovať niečo alebo niekoho. Napríklad technológia označovania obrázkov nesprávne označila obrázky tmavších ľudí ako gorily. +- **Nad- alebo podreprezentácia**. Myšlienka je, že určitá skupina nie je v určitej profesii viditeľná a akákoľvek služba alebo funkcia, ktorá to podporuje, prispieva ku škode. +- **Stereotypy**. Spájanie určitej skupiny s prednastavenými atribútmi. Napríklad systém prekladu medzi angličtinou a turečtinou môže mať nepresnosti v dôsledku slov so stereotypnými spojením s pohlavím. -![preklad do turečtiny](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) +![preklad do turečtiny](../../../../translated_images/sk/gender-bias-translate-en-tr.f185fd8822c2d437.webp) > preklad do turečtiny -![preklad späť do angličtiny](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) +![preklad späť do angličtiny](../../../../translated_images/sk/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) > preklad späť do angličtiny -Pri navrhovaní a testovaní systémov AI musíme zabezpečiť, že AI je spravodlivá a nie je naprogramovaná na prijímanie zaujatých alebo diskriminačných rozhodnutí, ktoré sú zakázané aj pre ľudí. Zaručenie spravodlivosti v AI a strojovom učení zostáva komplexnou sociotechnickou výzvou. +Pri navrhovaní a testovaní AI systémov musíme zabezpečiť, že AI je spravodlivá a nie je naprogramovaná robiť zaujaté alebo diskriminačné rozhodnutia, ktoré sú pre ľudí tiež zakázané. Zabezpečiť spravodlivosť v AI a strojovom učení je komplexná sociotechnická výzva. ### Spoľahlivosť a bezpečnosť -Na budovanie dôvery musia byť systémy AI spoľahlivé, bezpečné a konzistentné za normálnych aj neočakávaných podmienok. Je dôležité vedieť, ako sa systémy AI budú správať v rôznych situáciách, najmä keď ide o odchýlky. Pri budovaní riešení AI je potrebné venovať značnú pozornosť tomu, ako zvládnuť širokú škálu okolností, s ktorými sa riešenia AI môžu stretnúť. Napríklad autonómne auto musí klásť bezpečnosť ľudí na prvé miesto. Výsledkom je, že AI poháňajúca auto musí zohľadniť všetky možné scenáre, s ktorými sa auto môže stretnúť, ako sú noc, búrky alebo snehové búrky, deti bežiace cez ulicu, domáce zvieratá, cestné práce atď. To, ako dobre systém AI dokáže spoľahlivo a bezpečne zvládnuť širokú škálu podmienok, odráža úroveň predvídavosti, ktorú dátový vedec alebo vývojár AI zohľadnil počas návrhu alebo testovania systému. +Na vybudovanie dôvery musia byť AI systémy spoľahlivé, bezpečné a konzistentné za bežných aj neočakávaných podmienok. Je dôležité vedieť, ako sa AI systémy budú správať v rôznych situáciách, hlavne keď sú to odľahlé prípady. Pri vytváraní AI riešení musí byť veľký dôraz na to, ako riešiť široké spektrum okolností, s ktorými sa AI riešenia stretnú. Napríklad samo-riadiace auto musí klásť bezpečnosť ľudí na prvé miesto. Výkonná AI auta musí zvážiť všetky možné scenáre, ako napríklad noc, búrky alebo snehové víchrice, deti bežiace cez cestu, domáce zvieratá, cestné práce atď. Ako dobre môže AI systém spoľahlivo a bezpečne zvládnuť širokú škálu podmienok, odráža mieru predvídavosti, ktorú dátový vedec alebo AI vývojár bral do úvahy pri navrhovaní alebo testovaní systému. -> [🎥 Kliknite sem pre video: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl) +> [🎥 Kliknite tu pre video: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl) ### Inkluzívnosť -Systémy AI by mali byť navrhnuté tak, aby zapájali a posilňovali každého. Pri navrhovaní a implementácii systémov AI dátoví vedci a vývojári AI identifikujú a riešia potenciálne bariéry v systéme, ktoré by mohli neúmyselne vylúčiť ľudí. Napríklad na svete je 1 miliarda ľudí so zdravotným postihnutím. Vďaka pokroku v AI môžu ľahšie pristupovať k širokému spektru informácií a príležitostí vo svojom každodennom živote. Riešením bariér sa vytvárajú príležitosti na inovácie a vývoj produktov AI s lepšími skúsenosťami, ktoré prospievajú všetkým. +AI systémy by mali byť navrhnuté tak, aby zapojili a posilnili všetkých. Pri navrhovaní a implementácii AI systémov dátoví vedci a vývojári AI identifikujú a riešia potenciálne prekážky v systéme, ktoré by mohli neúmyselne vylúčiť ľudí. Napríklad na svete je 1 miliarda ľudí so zdravotným postihnutím. Vďaka pokroku AI môžu vo svojom každodennom živote ľahšie získať prístup k širokej škále informácií a príležitostí. Riešením prekážok sa vytvárajú príležitosti inovácií a vývoja AI produktov s lepším používateľským zážitkom, ktorý prospieva všetkým. -> [🎥 Kliknite sem pre video: inkluzívnosť v AI](https://www.microsoft.com/videoplayer/embed/RE4vl9v) +> [🎥 Kliknite tu pre video: inkluzívnosť v AI](https://www.microsoft.com/videoplayer/embed/RE4vl9v) ### Bezpečnosť a súkromie -Systémy AI by mali byť bezpečné a rešpektovať súkromie ľudí. Ľudia majú menšiu dôveru v systémy, ktoré ohrozujú ich súkromie, informácie alebo životy. Pri trénovaní modelov strojového učenia sa spoliehame na údaje, aby sme dosiahli čo najlepšie výsledky. Pri tom je potrebné zvážiť pôvod údajov a ich integritu. Napríklad, boli údaje poskytnuté používateľom alebo verejne dostupné? Ďalej, pri práci s údajmi je nevyhnutné vyvíjať systémy AI, ktoré dokážu chrániť dôverné informácie a odolávať útokom. Ako sa AI stáva rozšírenejšou, ochrana súkromia a zabezpečenie dôležitých osobných a obchodných informácií sa stáva čoraz kritickejšou a zložitejšou. Problémy so súkromím a bezpečnosťou údajov si vyžadujú obzvlášť dôkladnú pozornosť pri AI, pretože prístup k údajom je nevyhnutný na to, aby systémy AI mohli robiť presné a informované predpovede a rozhodnutia o ľuďoch. +AI systémy by mali byť bezpečné a rešpektovať súkromie ľudí. Ľudia menej dôverujú systémom, ktoré ohrozujú ich súkromie, informácie alebo životy. Pri trénovaní modelov strojového učenia sa spoliehame na dáta, aby sme dosiahli najlepšie výsledky. Pri tom je dôležité zohľadniť pôvod dát a ich integritu. Napríklad, boli dáta od používateľov alebo verejne dostupné? Pri práci s dátami je zásadné vyvíjať AI systémy, ktoré dokážu chrániť dôverné informácie a odolať útokom. Ako AI získava na rozšírení, ochrana súkromia a zabezpečenie dôležitých osobných a obchodných informácií sa stáva kritickejšou a zložitejšou. Otázky súkromia a bezpečnosti dát vyžadujú osobitnú pozornosť, pretože prístup k dátam je pre AI nevyhnutný na presné a informované predpovede a rozhodnutia o ľuďoch. -> [🎥 Kliknite sem pre video: bezpečnosť v AI](https://www.microsoft.com/videoplayer/embed/RE4voJF) +> [🎥 Kliknite tu pre video: bezpečnosť v AI](https://www.microsoft.com/videoplayer/embed/RE4voJF) -- Ako odvetvie sme dosiahli významný pokrok v oblasti súkromia a bezpečnosti, výrazne podporený reguláciami, ako je GDPR (Všeobecné nariadenie o ochrane údajov). -- Napriek tomu musíme pri systémoch AI uznať napätie medzi potrebou viac osobných údajov na zlepšenie systémov a ochranou súkromia. -- Rovnako ako pri vzniku pripojených počítačov s internetom, zaznamenávame aj výrazný nárast počtu bezpečnostných problémov súvisiacich s AI. -- Zároveň sme videli, že AI sa používa na zlepšenie bezpečnosti. Napríklad väčšina moderných antivírusových skenerov je dnes poháňaná heuristikou AI. -- Musíme zabezpečiť, aby naše procesy dátovej vedy harmonicky ladili s najnovšími praktikami v oblasti súkromia a bezpečnosti. +- Ako odvetvie sme dosiahli významné pokroky v oblasti súkromia a bezpečnosti, výrazne poháňané reguláciami ako GDPR (Všeobecné nariadenie o ochrane údajov). +- Avšak u AI systémov musíme uznať napätie medzi potrebou viac osobných dát na personalizovanie a zvýšenie efektívnosti systémov a ochranou súkromia. +- Rovnako ako pri nástupe pripojených počítačov s internetom, pozorujeme prudký nárast bezpečnostných problémov súvisiacich s AI. +- Zároveň sme videli, že AI sa používa na zlepšenie bezpečnosti. Napríklad väčšina moderných antivírusových skenerov je dnes riadená AI heuristikou. +- Musíme zabezpečiť, aby naše procesy dátovej vedy harmonicky zapadali do najnovších postupov ochrany súkromia a bezpečnosti. -### Transparentnosť -Systémy AI by mali byť zrozumiteľné. Kľúčovou súčasťou transparentnosti je vysvetlenie správania systémov AI a ich komponentov. Zlepšenie porozumenia systémom AI si vyžaduje, aby zainteresované strany pochopili, ako a prečo fungujú, aby mohli identifikovať potenciálne problémy s výkonom, obavy o bezpečnosť a súkromie, predsudky, vylučujúce praktiky alebo neúmyselné výsledky. Veríme tiež, že tí, ktorí používajú systémy AI, by mali byť úprimní a otvorení o tom, kedy, prečo a ako sa rozhodnú ich nasadiť. Rovnako ako o obmedzeniach systémov, ktoré používajú. Napríklad, ak banka používa systém AI na podporu svojich rozhodnutí o poskytovaní úverov, je dôležité preskúmať výsledky a pochopiť, ktoré údaje ovplyvňujú odporúčania systému. Vlády začínajú regulovať AI naprieč odvetviami, takže dátoví vedci a organizácie musia vysvetliť, či systém AI spĺňa regulačné požiadavky, najmä keď dôjde k nežiaducemu výsledku. +### Transparentnosť +AI systémy by mali byť pochopiteľné. Kľúčovou súčasťou transparentnosti je vysvetlenie správania AI systémov a ich komponentov. Zlepšenie porozumenia AI systémov si vyžaduje, aby zainteresované strany pochopili, ako a prečo fungujú tak, aby mohli identifikovať potenciálne problémy s výkonom, bezpečnosťou a súkromím, predsudkami, vylučovacími praktikami alebo neúmyselnými výsledkami. Veríme aj, že tí, ktorí AI systémy používajú, by mali byť čestní a otvorení o tom, kedy, prečo a ako sa rozhodujú ich nasadiť. Rovnako o obmedzeniach systémov, ktoré používajú. Napríklad, ak banka používa AI systém na podporu rozhodnutí o úveroch pre spotrebiteľov, je dôležité preskúmať výsledky a pochopiť, ktoré dáta ovplyvňujú odporúčania systému. Vládne orgány začínajú regulovať AI naprieč odvetviami, preto dátoví vedci a organizácie musia vysvetliť, či AI systém spĺňa regulačné požiadavky, najmä ak nastane nežiaduci výsledok. -> [🎥 Kliknite sem pre video: transparentnosť v AI](https://www.microsoft.com/videoplayer/embed/RE4voJF) +> [🎥 Kliknite tu pre video: transparentnosť v AI](https://www.microsoft.com/videoplayer/embed/RE4voJF) -- Keďže systémy AI sú veľmi komplexné, je ťažké pochopiť, ako fungujú a interpretovať výsledky. -- Tento nedostatok porozumenia ovplyvňuje spôsob, akým sú tieto systémy spravované, prevádzkované a dokumentované. -- Tento nedostatok porozumenia ešte dôležitejšie ovplyvňuje rozhodnutia prijaté na základe výsledkov, ktoré tieto systémy produkujú. +- Pretože AI systémy sú veľmi komplexné, je ťažké pochopiť, ako fungujú a interpretovať výsledky. +- Tento nedostatok porozumenia ovplyvňuje spôsob, akým sú tieto systémy riadené, operacionalizované a dokumentované. +- Tento nedostatok porozumenia predovšetkým ovplyvňuje rozhodnutia prijaté na základe výsledkov, ktoré tieto systémy produkujú. ### Zodpovednosť + +Ľudia, ktorí navrhujú a nasadzujú AI systémy, musia byť zodpovední za to, ako ich systémy fungujú. Potreba zodpovednosti je obzvlášť dôležitá pri citlivých technológiách, ako je rozpoznávanie tvárí. V poslednej dobe rastie dopyt po technológii rozpoznávania tvárí, najmä od orgánov činných v trestnom konaní, ktoré vidia potenciál tejto technológie pri hľadaní chýbajúcich detí. Avšak tieto technológie by mohli byť tiež zneužité vládou na ohrozenie základných slobôd občanov, napríklad umožnením nepretržitého sledovania určitých jednotlivcov. Preto dátoví vedci a organizácie musia byť zodpovední za to, ako ich AI systém ovplyvňuje jednotlivcov alebo spoločnosť. + +[![Vedúci výskumník AI varuje pred masovým dohľadom cez rozpoznávanie tvárí](../../../../translated_images/sk/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft's Approach to Responsible AI") + +> 🎥 Kliknite na obrázok vyššie pre video: Varovania pred masovým dohľadom cez rozpoznávanie tvárí + +Nakoniec jedna z najväčších otázok pre našu generáciu, ako prvej generácie, ktorá prináša AI do spoločnosti, je, ako zabezpečiť, aby počítače zostali zodpovedné ľuďom a ako zabezpečiť, aby ľudia, ktorí počítače navrhujú, zostali zodpovední voči všetkým ostatným. + +## Hodnotenie dopadov + +Pred trénovaním modelu strojového učenia je dôležité vykonať hodnotenie dopadu, aby ste pochopili účel AI systému; na čo sa má používať; kde bude nasadený; a kto bude so systémom interagovať. To pomáha recenzentom alebo testerom hodnotiť systém a vedieť, aké faktory zohľadniť pri identifikovaní potenciálnych rizík a očakávaných dôsledkov. + +Nasledujúce oblasti sa zameriavajú pri vykonávaní hodnotenia dopadu: + +* **Nepriaznivý dopad na jednotlivcov**. Byť si vedomý akýchkoľvek obmedzení alebo požiadaviek, nepodporovaného použitia alebo akýchkoľvek známych limitácií, ktoré bránia výkonu systému, je nevyhnutné, aby sa zabezpečilo, že systém nebude používaný spôsobom, ktorý by mohol spôsobiť škodu jednotlivcom. +* **Požiadavky na dáta**. Získať pochopenie toho, ako a kde bude systém používať dáta, umožňuje recenzentom preskúmať všetky požiadavky na dáta, ktoré by ste mali mať na pamäti (napríklad GDPR alebo HIPAA). Navyše zvážte, či je zdroj alebo množstvo dát postačujúce pre trénovanie. +* **Zhrnutie dopadov**. Zhromaždite zoznam potenciálnych škôd, ktoré by mohli vzniknúť používaním systému. V priebehu celého životného cyklu ML skontrolujte, či boli identifikované problémy zmiernené alebo riešené. +* **Platné ciele** pre každý zo šiestich základných princípov. Zhodnoťte, či sú ciele z každého princípu splnené a či existujú nejaké medzery. + -Ľudia, ktorí navrhujú a nasadzujú systémy AI, musia byť zodpovední za to, ako ich systémy fungujú. Potreba zodpovednosti je obzvlášť dôležitá pri technológiách citlivého použitia, ako je rozpoznávanie tváre. V poslednej dobe rastie dopyt po technológii rozpoznávania tváre, najmä zo strany orgánov činných v trestnom konaní, ktoré vidia potenciál tejto technológie v aplikáciách, ako je hľadanie nezvestných detí. Tieto technológie však môžu byť potenciálne použité vládou na ohrozenie základných slobôd občanov, napríklad umožnením nepretržitého sledovania konkrétnych jednotlivcov. Preto musia byť dátoví vedci a organizácie zodpovední za to, ako ich systém AI ovplyvňuje jednotlivcov alebo spoločnosť. +## Ladenie s ohľadom na zodpovednú AI -[![Vedúci výskumník AI varuje pred masovým sledovaním prostredníctvom rozpoznávania tváre](../../../../1-Introduction/3-fairness/images/accountability.png)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Prístup Microsoftu k zodpovednej AI") +Podobne ako ladenie softvérovej aplikácie, ladenie AI systému je potrebný proces identifikácie a riešenia problémov v systéme. Existuje mnoho faktorov, ktoré by mohli ovplyvniť výkon modelu spôsobom, ktorý nie je očakávaný alebo zodpovedný. Väčšina tradičných metrík výkonnosti modelov sú kvantitatívne agregáty výkonu modelu, ktoré nie sú dostatočné na analýzu, ako model porušuje princípy zodpovednej AI. Ďalej je model strojového učenia čierna skrinka a ťažko sa chápe, čo ovplyvňuje jeho výsledky alebo poskytuje vysvetlenie, keď urobí chybu. Neskôr v tomto kurze sa naučíme, ako používať dashboard Zodpovednej AI na ladenie AI systémov. Dashboard poskytuje komplexný nástroj pre dátových vedcov a AI vývojárov na vykonávanie: -> 🎥 Kliknite na obrázok vyššie pre video: Varovania pred masovým sledovaním prostredníctvom rozpoznávania tváre +* **Analýzy chýb**. Na identifikovanie rozloženia chýb modelu, ktoré môžu ovplyvniť spravodlivosť alebo spoľahlivosť systému. +* **Prehľadu modelu**. Na zistenie, kde existujú rozdiely vo výkonnosti modelu medzi jednotlivými dátovými skupinami. +* **Analýzy dát**. Na pochopenie rozloženia dát a identifikáciu možných predsudkov v dátach, ktoré by mohli viesť k problémom so spravodlivosťou, inkluzívnosťou a spoľahlivosťou. +* **Interpretovateľnosti modelu**. Na pochopenie, čo ovplyvňuje alebo riadi modelové predpovede. To pomáha vysvetliť správanie modelu, čo je dôležité pre transparentnosť a zodpovednosť. -Nakoniec jednou z najväčších otázok našej generácie, ako prvej generácie, ktorá prináša AI do spoločnosti, je, ako zabezpečiť, aby počítače zostali zodpovedné voči ľuďom a ako zabezpečiť, aby ľudia, ktorí navrhujú počítače, zostali zodpovední voči všetkým ostatným. -## Hodnotenie dopadu +## 🚀 Výzva + +Aby sme predišli vzniku škôd, mali by sme: -Pred trénovaním modelu strojového učenia je dôležité vykonať hodnotenie dopadu, aby ste pochopili účel systému AI; aké je jeho zamýšľané použitie; kde bude nasadený; a kto bude so systémom interagovať. Tieto informácie sú užitočné pre recenzentov alebo testerov, ktorí hodnotia systém, aby vedeli, aké faktory treba zohľadniť pri identifikácii potenciálnych rizík a očakávaných dôsledkov. +- mať rozmanitosť pozadí a pohľadov medzi ľuďmi pracujúcimi na systémoch +- investovať do datasetov, ktoré odrážajú rozmanitosť našej spoločnosti +- vyvíjať lepšie metódy počas celého životného cyklu strojového učenia na detekciu a opravu zodpovednej AI, keď k nej dôjde -Nasledujú oblasti zamerania pri vykonávaní hodnotenia dopadu: +Premýšľajte o reálnych scenároch, kde je nedôvera v model zrejmá pri tvorbe a používaní modelu. Čo ešte by sme mali zvážiť? -* **Nepriaznivý dopad na jednotlivcov**. Byť si vedomý akýchkoľvek obmedzení alebo požiadaviek, nepodporovaného použitia alebo akýchkoľvek známych obmedzení, ktoré bránia výkonu systému, je zásadné na zabezpečenie toho, aby systém nebol používaný spôsobom, ktorý by mohol spôsobiť škodu jednotlivcom. -* **Požiadavky na údaje**. Získanie pochopenia toho, ako a kde systém bude používať údaje, umožňuje recenzentom preskúmať akékoľvek požiadavky na údaje, na ktoré by ste mali byť pozorní (napr. GDPR alebo HIPPA regulácie údajov). Okrem toho preskúmajte, či je zdroj alebo množstvo údajov dostatočné na trénovanie. -* **Zhrnutie dopadu**. Zozbierajte zoznam potenciálnych škôd, ktoré by mohli vzniknúť z používania systému. Počas životného cyklu ML preskúmajte, či sú identifikované problémy zmiernené alebo riešené. -* **Platné ciele** pre každú zo šiestich základných zásad. Posúďte, či sú ciele z každej zásady splnené a či existujú nejaké medzery. +## [Kvíz po prednáške](https://ff-quizzes.netlify.app/en/ml/) -## Ladenie so zodpovednou AI +## Revízia a samostatné štúdium + -Podobne ako ladenie softvérovej aplikácie, ladenie systému AI je nevyhnutný proces identifikácie a riešenia problémov v systéme. Existuje mnoho faktorov, ktoré môžu ovplyvniť, že model nefunguje podľa očakávaní alebo zodpovedne. Väčšina tradičných metrík výkonu modelu sú kvantitatívne agregáty výkonu modelu, ktoré nie sú dostatočné -Pozrite si tento workshop, aby ste sa hlbšie ponorili do tém: +V tejto lekcii ste sa naučili niektoré základy konceptov spravodlivosti a nespravodlivosti v strojovom učení. + +Pozrite si tento workshop, aby ste sa hlbšie ponorili do tém: -- Na ceste k zodpovednej AI: Uplatnenie princípov v praxi od Besmiry Nushi, Mehrnoosh Sameki a Amita Sharmu +- V snahe o zodpovednú umelú inteligenciu: Prinášanie princípov do praxe od Besmira Nushi, Mehrnoosh Sameki a Amit Sharma -[![Responsible AI Toolbox: Open-source framework na budovanie zodpovednej AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: Open-source framework na budovanie zodpovednej AI") +[![Responsible AI Toolbox: An open-source framework for building responsible AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") -> 🎥 Kliknite na obrázok vyššie pre video: RAI Toolbox: Open-source framework na budovanie zodpovednej AI od Besmiry Nushi, Mehrnoosh Sameki a Amita Sharmu +> 🎥 Kliknite na obrázok vyššie pre video: RAI Toolbox: Open-source framework pre budovanie zodpovednej umelej inteligencie od Besmira Nushi, Mehrnoosh Sameki a Amit Sharma -Prečítajte si tiež: +Tiež si prečítajte: -- Microsoftov zdrojový centrum pre zodpovednú AI: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) +- Centrum zdrojov RAI od Microsoftu: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) -- Microsoftova výskumná skupina FATE: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/) +- Výskumná skupina FATE od Microsoftu: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/) -RAI Toolbox: +RAI Toolbox: -- [GitHub repozitár Responsible AI Toolbox](https://github.com/microsoft/responsible-ai-toolbox) +- [GitHub úložisko Responsible AI Toolbox](https://github.com/microsoft/responsible-ai-toolbox) Prečítajte si o nástrojoch Azure Machine Learning na zabezpečenie spravodlivosti: -- [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) ## Zadanie @@ -136,5 +161,7 @@ Prečítajte si o nástrojoch Azure Machine Learning na zabezpečenie spravodliv --- -**Zrieknutie sa zodpovednosti**: -Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nenesieme zodpovednosť za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file + +**Vyhlásenie o zodpovednosti**: +Tento dokument bol preložený pomocou AI prekladateľskej služby [Co-op Translator](https://github.com/Azure/co-op-translator). Hoci sa snažíme o presnosť, vezmite prosím na vedomie, že automatické preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho natívnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nie sme zodpovední za žiadne nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. + \ No newline at end of file diff --git a/translations/sk/2-Regression/1-Tools/README.md b/translations/sk/2-Regression/1-Tools/README.md index d4441aaf4..10c17836f 100644 --- a/translations/sk/2-Regression/1-Tools/README.md +++ b/translations/sk/2-Regression/1-Tools/README.md @@ -1,119 +1,119 @@ -# Začíname s Pythonom a Scikit-learn pre regresné modely +# Začnite s Pythonom a Scikit-learn pre regresné modely -![Zhrnutie regresií v sketchnote](../../../../sketchnotes/ml-regression.png) +![Zhrnutie regresií v skicnote](../../../../translated_images/sk/ml-regression.4e4f70e3b3ed446e.webp) -> Sketchnote od [Tomomi Imura](https://www.twitter.com/girlie_mac) +> Skicnote od [Tomomi Imura](https://www.twitter.com/girlie_mac) -## [Kvíz pred prednáškou](https://ff-quizzes.netlify.app/en/ml/) +## [Začiatočný kvíz pred prednáškou](https://ff-quizzes.netlify.app/en/ml/) > ### [Táto lekcia je dostupná aj v R!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html) ## Úvod -V týchto štyroch lekciách sa naučíte, ako vytvárať regresné modely. Čoskoro si vysvetlíme, na čo slúžia. Ale predtým, než začnete, uistite sa, že máte správne nástroje na začatie procesu! +V týchto štyroch lekciách zistíte, ako stavať regresné modely. O chvíľu si povieme, na čo slúžia. Ale predtým, ako začnete, sa uistite, že máte pripravené správne nástroje na začatie procesu! V tejto lekcii sa naučíte: -- Ako nakonfigurovať váš počítač na lokálne úlohy strojového učenia. -- Ako pracovať s Jupyter notebookmi. -- Ako používať Scikit-learn, vrátane jeho inštalácie. -- Preskúmať lineárnu regresiu prostredníctvom praktického cvičenia. +- Nastaviť svoj počítač na lokálne úlohy strojového učenia. +- Pracovať s Jupyter Notebookmi. +- Používať Scikit-learn vrátane inštalácie. +- Preskúmať lineárnu regresiu pomocou praktického cvičenia. ## Inštalácie a konfigurácie -[![ML pre začiatočníkov - Nastavte si nástroje na vytváranie modelov strojového učenia](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML pre začiatočníkov - Nastavte si nástroje na vytváranie modelov strojového učenia") +[![ML pre začiatočníkov - Pripravte si nástroje na tvorbu modelov strojového učenia](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML pre začiatočníkov - Pripravte si nástroje na tvorbu modelov strojového učenia") -> 🎥 Kliknite na obrázok vyššie pre krátke video o konfigurácii vášho počítača pre ML. +> 🎥 Kliknite na obrázok vyššie pre krátke video o nastavení počítača pre ML. -1. **Nainštalujte Python**. Uistite sa, že máte [Python](https://www.python.org/downloads/) nainštalovaný na vašom počítači. Python budete používať na mnohé úlohy v oblasti dátovej vedy a strojového učenia. Väčšina počítačových systémov už obsahuje inštaláciu Pythonu. K dispozícii sú aj užitočné [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott), ktoré uľahčujú nastavenie pre niektorých používateľov. +1. **Nainštalujte Python**. Uistite sa, že máte na počítači nainštalovaný [Python](https://www.python.org/downloads/). Python použijete na mnohé úlohy v dátovej vede a strojovom učení. Väčšina počítačových systémov už obsahuje inštaláciu Pythonu. Existujú tiež užitočné [Python Coding Packy](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott), ktoré uľahčujú nastavenie niektorým používateľom. - Niektoré použitia Pythonu však vyžadujú jednu verziu softvéru, zatiaľ čo iné vyžadujú inú verziu. Z tohto dôvodu je užitočné pracovať v [virtuálnom prostredí](https://docs.python.org/3/library/venv.html). + Niektoré použitia Pythonu však vyžadujú rôzne verzie softvéru. Preto je užitočné pracovať vo [virtuálnom prostredí](https://docs.python.org/3/library/venv.html). -2. **Nainštalujte Visual Studio Code**. Uistite sa, že máte Visual Studio Code nainštalovaný na vašom počítači. Postupujte podľa týchto pokynov na [inštaláciu Visual Studio Code](https://code.visualstudio.com/) pre základnú inštaláciu. V tomto kurze budete používať Python vo Visual Studio Code, takže by ste si mohli osviežiť, ako [konfigurovať Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) pre vývoj v Pythone. +2. **Nainštalujte Visual Studio Code**. Uistite sa, že máte na počítači nainštalovaný Visual Studio Code. Postupujte podľa týchto inštrukcií na [inštaláciu Visual Studio Code](https://code.visualstudio.com/) pre základnú inštaláciu. V tomto kurze budete používať Python vo Visual Studio Code, preto možno budete chcieť osviežiť si, ako [nastaviť Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) pre vývoj v Pythone. - > Získajte pohodlie s Pythonom prostredníctvom tejto kolekcie [Learn modulov](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) + > Precvičujte si Python prostredníctvom tejto kolekcie [Learn modulov](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) > - > [![Nastavenie Pythonu vo Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Nastavenie Pythonu vo Visual Studio Code") + > [![Nastavenie Pythonu s Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Nastavenie Pythonu s Visual Studio Code") > - > 🎥 Kliknite na obrázok vyššie pre video: používanie Pythonu vo VS Code. + > 🎥 Kliknite na obrázok vyššie pre video o používaní Pythonu vo VS Code. -3. **Nainštalujte Scikit-learn**, podľa [týchto pokynov](https://scikit-learn.org/stable/install.html). Keďže je potrebné zabezpečiť, že používate Python 3, odporúča sa používať virtuálne prostredie. Ak inštalujete túto knižnicu na M1 Mac, na stránke vyššie sú špeciálne pokyny. +3. **Nainštalujte Scikit-learn**, postupujte podľa [týchto inštrukcií](https://scikit-learn.org/stable/install.html). Keďže musíte použiť Python 3, odporúča sa použiť virtuálne prostredie. Poznámka: ak inštalujete túto knižnicu na M1 Macu, na vyššie uvedenej stránke sú špeciálne inštrukcie. -4. **Nainštalujte Jupyter Notebook**. Budete potrebovať [nainštalovať balík Jupyter](https://pypi.org/project/jupyter/). +1. **Nainštalujte Jupyter Notebook**. Budete potrebovať [nainštalovať balík Jupyter](https://pypi.org/project/jupyter/). -## Vaše prostredie na tvorbu ML +## Vaše prostredie na písanie kódu pre ML -Budete používať **notebooky** na vývoj vášho Python kódu a vytváranie modelov strojového učenia. Tento typ súboru je bežným nástrojom pre dátových vedcov a je možné ho identifikovať podľa jeho prípony `.ipynb`. +Budete používať **notebooky** na vyvíjanie vášho Python kódu a tvorbu modelov strojového učenia. Tento typ súboru je bežný nástroj pre dátových vedcov a ľahko ho spoznáte podľa prípony `.ipynb`. -Notebooky sú interaktívne prostredie, ktoré umožňuje vývojárovi kódovať, pridávať poznámky a písať dokumentáciu okolo kódu, čo je veľmi užitočné pre experimentálne alebo výskumné projekty. +Notebooky sú interaktívne prostredie, ktoré umožňuje vývojárovi písať kód, pridávať poznámky a dokumentáciu okolo kódu, čo je veľmi užitočné pre experimentálne alebo výskumné projekty. -[![ML pre začiatočníkov - Nastavenie Jupyter Notebookov na začatie vytvárania regresných modelov](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML pre začiatočníkov - Nastavenie Jupyter Notebookov na začatie vytvárania regresných modelov") +[![ML pre začiatočníkov - Nastavte Jupyter Notebooky na začatie budovania regresných modelov](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML pre začiatočníkov - Nastavte Jupyter Notebooky na začatie budovania regresných modelov") -> 🎥 Kliknite na obrázok vyššie pre krátke video o tomto cvičení. +> 🎥 Kliknite na obrázok vyššie pre krátke video s týmto cvičením. ### Cvičenie - práca s notebookom -V tejto zložke nájdete súbor _notebook.ipynb_. +V tomto priečinku nájdete súbor _notebook.ipynb_. 1. Otvorte _notebook.ipynb_ vo Visual Studio Code. - Spustí sa Jupyter server s Pythonom 3+. Nájdete oblasti notebooku, ktoré je možné `spustiť`, kúsky kódu. Môžete spustiť blok kódu výberom ikony, ktorá vyzerá ako tlačidlo prehrávania. + Spustí sa Jupyter server s Python 3+. V notebooku nájdete časti, ktoré môžete `spustiť`, kusy kódu. Môžete spustiť blok kódu výberom ikony vyzerajúcej ako tlačidlo prehrávania. -2. Vyberte ikonu `md` a pridajte trochu markdownu, a nasledujúci text **# Vitajte vo vašom notebooku**. +1. Vyberte ikonu `md` a pridajte trochu markdownu, napríklad tento text **# Vitajte vo vašom notebooku**. - Potom pridajte nejaký Python kód. + Potom pridajte niekoľko riadkov Python kódu. -3. Napíšte **print('hello notebook')** do bloku kódu. -4. Vyberte šípku na spustenie kódu. +1. Napíšte **print('hello notebook')** do bloku kódu. +1. Vyberte šípku na spustenie kódu. - Mali by ste vidieť vytlačené vyhlásenie: + Mali by ste vidieť tlačený výstup: ```output hello notebook ``` -![VS Code s otvoreným notebookom](../../../../2-Regression/1-Tools/images/notebook.jpg) +![VS Code s otvoreným notebookom](../../../../translated_images/sk/notebook.4a3ee31f396b8832.webp) -Môžete prekladať váš kód s komentármi na samo-dokumentovanie notebooku. +Môžete miešať kód s komentármi pre vlastnú dokumentáciu notebooku. -✅ Zamyslite sa na chvíľu nad tým, aké odlišné je pracovné prostredie webového vývojára oproti dátovému vedcovi. +✅ Zamyslite sa chvíľu, ako veľmi sa líši pracovné prostredie webového vývojára od toho dátového vedca. -## Práca so Scikit-learn +## Začnite používať Scikit-learn -Teraz, keď je Python nastavený vo vašom lokálnom prostredí a ste pohodlní s Jupyter notebookmi, poďme sa rovnako oboznámiť so Scikit-learn (vyslovujte `sci` ako v `science`). Scikit-learn poskytuje [rozsiahle API](https://scikit-learn.org/stable/modules/classes.html#api-ref), ktoré vám pomôže vykonávať úlohy strojového učenia. +Teraz keď máte Python nastavený vo vašom lokálnom prostredí a v Jupyter Notebookoch sa cítite pohodlne, zoznámime sa rovnako dobre so Scikit-learn (vyslovujte `sci` ako v slove `science`). Scikit-learn poskytuje [rozsiahle API](https://scikit-learn.org/stable/modules/classes.html#api-ref), ktoré vám pomôže vykonávať úlohy strojového učenia. -Podľa ich [webovej stránky](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn je open source knižnica strojového učenia, ktorá podporuje učenie pod dohľadom a bez dohľadu. Poskytuje tiež rôzne nástroje na prispôsobenie modelov, predspracovanie dát, výber modelov a hodnotenie, a mnoho ďalších užitočných funkcií." +Podľa ich [webovej stránky](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn je open source knižnica strojového učenia, ktorá podporuje riadené aj neriadené učenie. Poskytuje tiež rôzne nástroje na prispôsobenie modelu, predspracovanie dát, výber a hodnotenie modelu a mnoho ďalších utilít." -V tomto kurze budete používať Scikit-learn a ďalšie nástroje na vytváranie modelov strojového učenia na vykonávanie toho, čo nazývame 'tradičné úlohy strojového učenia'. Úmyselne sme sa vyhli neurónovým sieťam a hlbokému učeniu, pretože sú lepšie pokryté v našom pripravovanom kurikule 'AI pre začiatočníkov'. +V tomto kurze budete používať Scikit-learn a ďalšie nástroje na tvorbu modelov strojového učenia na vykonávanie úloh nazývaných „tradičné strojové učenie“. Úmyselne sme vylúčili neurónové siete a hlboké učenie, pretože tie sú lepšie pokryté v našom pripravovanom kurze „AI pre začiatočníkov“. -Scikit-learn umožňuje jednoduché vytváranie modelov a ich hodnotenie na použitie. Primárne sa zameriava na používanie numerických dát a obsahuje niekoľko pripravených datasetov na použitie ako učebné nástroje. Obsahuje tiež predpripravené modely, ktoré si študenti môžu vyskúšať. Poďme preskúmať proces načítania predpripravených dát a použitia zabudovaného odhadovača na prvý ML model so Scikit-learn s niektorými základnými dátami. +Scikit-learn umožňuje jednoduché vytváranie a hodnotenie modelov. Je primárne zameraný na číselné údaje a obsahuje niekoľko pripravených datasetov na výučbu. Obsahuje tiež zabudované modely na vyskúšanie študentmi. Najskôr preskúmajme postup načítania predpripravených dát a použitia zabudovaného estimátora prvého modelu ML v Scikit-learn s niekoľkými základnými údajmi. -## Cvičenie - váš prvý notebook so Scikit-learn +## Cvičenie - váš prvý notebook v Scikit-learn -> Tento tutoriál bol inšpirovaný [príkladom lineárnej regresie](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) na webovej stránke Scikit-learn. +> Tento tutorial bol inšpirovaný [príkladom lineárnej regresie](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) na stránke Scikit-learn. [![ML pre začiatočníkov - Váš prvý projekt lineárnej regresie v Pythone](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "ML pre začiatočníkov - Váš prvý projekt lineárnej regresie v Pythone") -> 🎥 Kliknite na obrázok vyššie pre krátke video o tomto cvičení. +> 🎥 Kliknite na obrázok vyššie pre krátke video s týmto cvičením. -V súbore _notebook.ipynb_ priradenom k tejto lekcii vymažte všetky bunky stlačením ikony 'odpadkového koša'. +V súbore _notebook.ipynb_ pripojenom k tejto lekcii vymažte všetky bunky stlačením ikony „koša“. -V tejto sekcii budete pracovať s malým datasetom o cukrovke, ktorý je zabudovaný do Scikit-learn na učebné účely. Predstavte si, že chcete testovať liečbu pre diabetických pacientov. Modely strojového učenia vám môžu pomôcť určiť, ktorí pacienti by na liečbu reagovali lepšie, na základe kombinácií premenných. Dokonca aj veľmi základný regresný model, keď je vizualizovaný, môže ukázať informácie o premenných, ktoré by vám pomohli organizovať vaše teoretické klinické skúšky. +V tejto časti budete pracovať s malým datasetom o diabete, ktorý je zabudovaný v Scikit-learn pre výučbové účely. Predstavte si, že chcete testovať liečbu pre diabetických pacientov. Modely strojového učenia by vám mohli pomôcť určiť, ktorí pacienti by na liečbu reagovali lepšie, na základe kombinácií premenných. Aj veľmi jednoduchý regresný model, pri vizualizácii, môže ukázať informácie o premenných, ktoré by vám pomohli zorganizovať teoretické klinické skúšky. -✅ Existuje mnoho typov regresných metód a výber závisí od odpovede, ktorú hľadáte. Ak chcete predpovedať pravdepodobnú výšku osoby určitého veku, použili by ste lineárnu regresiu, pretože hľadáte **numerickú hodnotu**. Ak vás zaujíma, či by sa určitý typ kuchyne mal považovať za vegánsky alebo nie, hľadáte **kategóriu**, takže by ste použili logistickú regresiu. Neskôr sa dozviete viac o logistickej regresii. Zamyslite sa nad niektorými otázkami, ktoré môžete klásť dátam, a ktorá z týchto metód by bola vhodnejšia. +✅ Existuje mnoho typov regresných metód a ktorá z nich je vhodná, závisí od hľadaného odpovede. Ak chcete predpovedať pravdepodobnú výšku osoby určitého veku, použijete lineárnu regresiu, pretože hľadáte **číselnú hodnotu**. Ak vás zaujíma, či určitý druh kuchyne by mal byť považovaný za vegánsky alebo nie, hľadáte **priradenie kategórie**, takže by ste použili logistickú regresiu. O logistickej regresii sa dozviete viac neskôr. Zamyslite sa nad niektorými otázkami, ktoré môžete položiť dátam, a ktorá z týchto metód by bola vhodnejšia. -Poďme začať s touto úlohou. +Poďme sa pustiť do tejto úlohy. ### Import knižníc -Pre túto úlohu importujeme niektoré knižnice: +Na túto úlohu naimportujeme niekoľko knižníc: - **matplotlib**. Je to užitočný [nástroj na grafy](https://matplotlib.org/) a použijeme ho na vytvorenie čiarového grafu. -- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) je užitočná knižnica na prácu s numerickými dátami v Pythone. -- **sklearn**. Toto je [knižnica Scikit-learn](https://scikit-learn.org/stable/user_guide.html). +- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) je užitočná knižnica na prácu s číselnými údajmi v Pythone. +- **sklearn**. Toto je knižnica [Scikit-learn](https://scikit-learn.org/stable/user_guide.html). -Importujte niektoré knižnice na pomoc s vašimi úlohami. +Naimportujte knižnice, ktoré vám pomôžu pri úlohách. 1. Pridajte importy napísaním nasledujúceho kódu: @@ -123,26 +123,26 @@ Importujte niektoré knižnice na pomoc s vašimi úlohami. from sklearn import datasets, linear_model, model_selection ``` - Vyššie importujete `matplotlib`, `numpy` a importujete `datasets`, `linear_model` a `model_selection` zo `sklearn`. `model_selection` sa používa na rozdelenie dát na tréningové a testovacie sady. + Hore importujete `matplotlib`, `numpy` a importujete `datasets`, `linear_model` a `model_selection` zo `sklearn`. `model_selection` sa používa na rozdelenie dát na trénovacie a testovacie sady. -### Dataset o cukrovke +### Dataset o diabete -Zabudovaný [dataset o cukrovke](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) obsahuje 442 vzoriek dát o cukrovke s 10 premennými, z ktorých niektoré zahŕňajú: +Zabudovaný [diabetes dataset](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) obsahuje 442 vzoriek o diabete s 10 premennými vlastností, niektoré z nich sú: - vek: vek v rokoch - bmi: index telesnej hmotnosti - bp: priemerný krvný tlak - s1 tc: T-bunky (typ bielych krviniek) -✅ Tento dataset zahŕňa koncept 'pohlavia' ako premennú dôležitú pre výskum cukrovky. Mnohé medicínske datasety zahŕňajú tento typ binárnej klasifikácie. Zamyslite sa nad tým, ako takéto kategorizácie môžu vylúčiť určité časti populácie z liečby. +✅ Tento dataset zahŕňa koncept 'pohlavia' ako dôležitéj vlastnosti pre výskum okolo diabetu. Mnohé medicínske databázy obsahujú tento druh binárnej klasifikácie. Zamyslite sa nad tým, ako by takéto kategorizácie mohli vylúčiť určité časti populácie z liečby. Teraz načítajte dáta X a y. -> 🎓 Pamätajte, že ide o učenie pod dohľadom, a potrebujeme pomenovaný cieľ 'y'. +> 🎓 Pamätajte, že toto je riadené učenie (supervised learning) a potrebujeme pomenovaný 'y' cieľ. -V novej bunke kódu načítajte dataset o cukrovke volaním `load_diabetes()`. Vstup `return_X_y=True` signalizuje, že `X` bude dátová matica a `y` bude cieľ regresie. +V novej bunke kódu načítajte diabetes dataset volaním `load_diabetes()`. Vstup `return_X_y=True` znamená, že `X` bude dátová matica a `y` bude cieľ regresie. -1. Pridajte niekoľko príkazov na výpis, aby ste zobrazili tvar dátovej matice a jej prvý prvok: +1. Pridajte niekoľko príkazov na tlač tvaru dátovej matice a jej prvého prvku: ```python X, y = datasets.load_diabetes(return_X_y=True) @@ -150,9 +150,9 @@ V novej bunke kódu načítajte dataset o cukrovke volaním `load_diabetes()`. V print(X[0]) ``` - To, čo dostávate ako odpoveď, je tuple. Priraďujete prvé dve hodnoty tuple do `X` a `y`. Viac sa dozviete [o tuple](https://wikipedia.org/wiki/Tuple). + Čo dostávate ako odpoveď, je tuple. Čo robíte, je priradenie dvoch prvých hodnôt tuple do `X` a `y`. Viac sa dozviete [o tuple](https://wikipedia.org/wiki/Tuple). - Môžete vidieť, že tieto dáta majú 442 položiek usporiadaných v poliach s 10 prvkami: + Vidíte, že dáta obsahujú 442 položiek zoradených do polí s 10 prvkami: ```text (442, 10) @@ -160,39 +160,39 @@ V novej bunke kódu načítajte dataset o cukrovke volaním `load_diabetes()`. V -0.04340085 -0.00259226 0.01990842 -0.01764613] ``` - ✅ Zamyslite sa nad vzťahom medzi dátami a cieľovou premennou regresie. Lineárna regresia predpovedá vzťahy medzi premennou X a cieľovou premennou y. Nájdete [cieľ](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) pre dataset o cukrovke v dokumentácii? Čo tento dataset demonštruje, vzhľadom na cieľ? + ✅ Zamyslite sa nad vzťahom medzi dátami a cieľom regresie. Lineárna regresia predpovedá vzťahy medzi vlastnosťou X a cieľovou premennou y. Môžete nájsť [cieľ](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) pre diabetes dataset v dokumentácii? Čo tento dataset ukazuje, vzhľadom na cieľ? -2. Ďalej vyberte časť tohto datasetu na vykreslenie výberom 3. stĺpca datasetu. Môžete to urobiť pomocou operátora `:` na výber všetkých riadkov a potom výberom 3. stĺpca pomocou indexu (2). Dáta môžete tiež preformátovať na 2D pole - ako je požadované na vykreslenie - pomocou `reshape(n_rows, n_columns)`. Ak je jeden z parametrov -1, zodpovedajúci rozmer sa vypočíta automaticky. +2. Ďalej vyberte časť datasetu na vykreslenie výberom 3. stĺpca datasetu. Môžete to urobiť použitím operátora `:` na výber všetkých riadkov a potom výberom 3. stĺpca s indexom (2). Dáta môžete tiež prestaviť na 2D pole - čo je potrebné pre vykresľovanie - pomocou `reshape(n_rows, n_columns)`. Ak je jeden parameter -1, príslušný rozmer sa vypočíta automaticky. ```python X = X[:, 2] X = X.reshape((-1,1)) ``` - ✅ Kedykoľvek si vypíšte dáta, aby ste skontrolovali ich tvar. + ✅ Kedykoľvek si vypíšte dáta, aby ste si skontrolovali ich tvar. -3. Teraz, keď máte dáta pripravené na vykreslenie, môžete zistiť, či stroj môže pomôcť určiť logické rozdelenie medzi číslami v tomto datasete. Na to potrebujete rozdeliť dáta (X) a cieľ (y) na testovacie a tréningové sady. Scikit-learn má jednoduchý spôsob, ako to urobiť; môžete rozdeliť vaše testovacie dáta na danom bode. +3. Teraz keď máte dáta pripravené na vykreslenie, zistíte, či vám stroj môže pomôcť určiť logický bod rozdelenia v týchto číslach. Na to musíte rozdeliť dáta (X) aj cieľ (y) na testovaciu a tréningovú sadu. Scikit-learn ponúka jednoduchý spôsob, ako to urobiť; vykonáte rozdelenie dát na danom bode. ```python X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33) ``` -4. Teraz ste pripravení trénovať váš model! Načítajte model lineárnej regresie a trénujte ho s vašimi tréningovými sadami X a y pomocou `model.fit()`: +4. Teraz ste pripravení trénovať svoj model! Načítajte lineárny regresný model a natrénujte ho na vašich trénovacích sadách X a y pomocou `model.fit()`: ```python model = linear_model.LinearRegression() model.fit(X_train, y_train) ``` - ✅ `model.fit()` je funkcia, ktorú uvidíte v mnohých knižniciach ML, ako je TensorFlow. + ✅ `model.fit()` je funkcia, ktorú uvidíte v mnohých ML knižniciach ako TensorFlow -5. Potom vytvorte predpoveď pomocou testovacích dát, pomocou funkcie `predict()`. Táto funkcia bude použitá na nakreslenie čiary medzi skupinami dát. +5. Potom vytvorte predikciu s použitím testovacích dát pomocou funkcie `predict()`. Táto predikcia sa použije na vykreslenie čiary medzi skupinami dát. ```python y_pred = model.predict(X_test) ``` -6. Teraz je čas zobraziť dáta v grafe. Matplotlib je veľmi užitočný nástroj na túto úlohu. Vytvorte scatterplot všetkých testovacích dát X a y a použite predpoveď na nakreslenie čiary na najvhodnejšom mieste medzi skupinami dát modelu. +6. Teraz je čas ukázať dáta na grafe. Matplotlib je veľmi užitočný nástroj na túto úlohu. Vytvorte bodový graf všetkých testovacích dát X a y a použite predikciu na nakreslenie čiary na najvhodnejšom mieste medzi skupinami dát podľa modelu. ```python plt.scatter(X_test, y_test, color='black') @@ -203,22 +203,24 @@ V novej bunke kódu načítajte dataset o cukrovke volaním `load_diabetes()`. V plt.show() ``` - ![scatterplot zobrazujúci dátové body o cukrovke](../../../../2-Regression/1-Tools/images/scatterplot.png) -✅ Zamyslite sa nad tým, čo sa tu deje. Priama čiara prechádza cez množstvo malých bodov údajov, ale čo presne robí? Vidíte, ako by ste mali byť schopní použiť túto čiaru na predpovedanie, kde by mal nový, nevidený bod údajov zapadnúť vo vzťahu k osi y grafu? Skúste slovami vyjadriť praktické využitie tohto modelu. + ![bodový graf zobrazujúci body dát o diabete](../../../../translated_images/sk/scatterplot.ad8b356bcbb33be6.webp) -Gratulujeme, vytvorili ste svoj prvý model lineárnej regresie, urobili ste predpoveď pomocou neho a zobrazili ste ju v grafe! + + ✅ Zamyslite sa trochu nad tým, čo sa tu deje. Priama čiara prechádza viacerými malými bodmi údajov, ale čo vlastne robí? Vidíte, ako by ste mali byť schopní použiť túto čiaru na predpovedanie, kde by sa nový, neznámy údaj mal nachádzať vzhľadom na os y grafu? Pokúste sa slovami opísať praktické využitie tohto modelu. + +Blahoželáme, vytvorili ste svoj prvý model lineárnej regresie, vytvorili ste pomocou neho predikciu a zobrazili ju v grafe! --- ## 🚀Výzva -Vykreslite iný premennú z tejto dátovej sady. Tip: upravte tento riadok: `X = X[:,2]`. Na základe cieľa tejto dátovej sady, čo dokážete zistiť o progresii cukrovky ako ochorenia? +Vykreslite inú premennú z tejto dátovej sady. Tip: upravte tento riadok: `X = X[:,2]`. Vzhľadom na cieľ tejto dátovej sady, čo môžete zistiť o priebehu cukrovky ako choroby? ## [Kvíz po prednáške](https://ff-quizzes.netlify.app/en/ml/) -## Prehľad a samostatné štúdium +## Prehľad a samostatná štúdia -V tomto tutoriáli ste pracovali s jednoduchou lineárnou regresiou, namiesto univariátnej alebo viacnásobnej lineárnej regresie. Prečítajte si niečo o rozdieloch medzi týmito metódami alebo si pozrite [toto video](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef). +V tomto návode ste pracovali s jednoduchou lineárnou regresiou, nie s univariátnou alebo viacnásobnou lineárnou regresiou. Prečítajte si niečo o rozdieloch medzi týmito metódami, alebo si pozrite [toto video](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) -Prečítajte si viac o koncepte regresie a zamyslite sa nad tým, aké typy otázok je možné zodpovedať pomocou tejto techniky. Absolvujte tento [tutoriál](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott), aby ste si prehĺbili svoje porozumenie. +Prečítajte si viac o koncepte regresie a zamyslite sa nad tým, aké otázky môže táto technika zodpovedať. Prehĺbte si pochopenie týmto [návodom](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott). ## Zadanie @@ -226,5 +228,7 @@ Prečítajte si viac o koncepte regresie a zamyslite sa nad tým, aké typy otá --- -**Upozornenie**: -Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho pôvodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nie sme zodpovední za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file + +**Vyhlásenie o zodpovednosti**: +Tento dokument bol preložený pomocou AI prekladateľskej služby [Co-op Translator](https://github.com/Azure/co-op-translator). Hoci sa snažíme o presnosť, vezmite prosím na vedomie, že automatické preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho natívnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nie sme zodpovední za žiadne nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. + \ No newline at end of file diff --git a/translations/sk/2-Regression/2-Data/README.md b/translations/sk/2-Regression/2-Data/README.md index eb1394d10..456dee38e 100644 --- a/translations/sk/2-Regression/2-Data/README.md +++ b/translations/sk/2-Regression/2-Data/README.md @@ -1,62 +1,62 @@ -# Vytvorenie regresného modelu pomocou Scikit-learn: príprava a vizualizácia dát +# Vytvorte regresný model pomocou Scikit-learn: príprava a vizualizácia dát -![Infografika vizualizácie dát](../../../../2-Regression/2-Data/images/data-visualization.png) +![Infografika vizualizácie dát](../../../../translated_images/sk/data-visualization.54e56dded7c1a804.webp) -Infografiku vytvoril [Dasani Madipalli](https://twitter.com/dasani_decoded) +Infografika od [Dasani Madipalli](https://twitter.com/dasani_decoded) ## [Kvíz pred prednáškou](https://ff-quizzes.netlify.app/en/ml/) -> ### [Táto lekcia je dostupná aj v R!](../../../../2-Regression/2-Data/solution/R/lesson_2.html) +> ### [Táto lekcia je dostupná v R!](../../../../2-Regression/2-Data/solution/R/lesson_2.html) ## Úvod -Teraz, keď máte pripravené nástroje na budovanie modelov strojového učenia pomocou Scikit-learn, ste pripravení začať klásť otázky o svojich dátach. Pri práci s dátami a aplikovaní riešení strojového učenia je veľmi dôležité vedieť, ako položiť správnu otázku, aby ste mohli plne využiť potenciál svojho datasetu. +Teraz, keď máte nainštalované nástroje potrebné na začatie práce s tvorbou modelov strojového učenia pomocou Scikit-learn, ste pripravení začať klásť otázky vašim dátam. Pri práci s dátami a aplikovaní riešení ML je veľmi dôležité pochopiť, ako položiť správnu otázku, aby ste správne odomkli potenciál svojho datasetu. V tejto lekcii sa naučíte: -- Ako pripraviť dáta na budovanie modelov. -- Ako používať Matplotlib na vizualizáciu dát. +- Ako pripraviť vaše dáta na tvorbu modelu. +- Ako použiť Matplotlib na vizualizáciu dát. +- Ako použiť Seaborn pre expresívnejšiu vizualizáciu dát. -## Kladenie správnych otázok o vašich dátach +## Ako položiť správnu otázku vašim dátam -Otázka, na ktorú potrebujete odpoveď, určí, aký typ algoritmov strojového učenia budete používať. Kvalita odpovede, ktorú dostanete, bude výrazne závisieť od povahy vašich dát. +Otázka, na ktorú potrebujete odpoveď, určí, aký typ ML algoritmov použijete. A kvalita odpovede závisí veľmi od povahy vašich dát. -Pozrite sa na [dáta](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) poskytnuté pre túto lekciu. Tento .csv súbor môžete otvoriť vo VS Code. Rýchly pohľad okamžite ukáže, že sú tam prázdne miesta a mix textových a číselných dát. Je tam tiež zvláštny stĺpec nazvaný 'Package', kde sú dáta zmiešané medzi 'sacks', 'bins' a inými hodnotami. Dáta sú vlastne dosť chaotické. +Pozrite sa na [dáta](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) poskytnuté pre túto lekciu. Môžete otvoriť tento .csv súbor vo VS Code. Rýchly prehľad hneď ukáže, že sú tam prázdne miesta a mix reťazcov a číselných hodnôt. Je tam tiež zvláštna kolóna nazvaná 'Package', kde sú dáta zmiešané medzi 'sacks', 'bins' a inými hodnotami. Dáta sú vlastne trochu neusporiadané. -[![ML pre začiatočníkov - Ako analyzovať a čistiť dataset](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML pre začiatočníkov - Ako analyzovať a čistiť dataset") +[![ML pre začiatočníkov – Ako analyzovať a upraviť dataset](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML pre začiatočníkov – Ako analyzovať a upraviť dataset") -> 🎥 Kliknite na obrázok vyššie pre krátke video o príprave dát pre túto lekciu. +> 🎥 Kliknite na obrázok hore pre krátke video o príprave dát pre túto lekciu. -Nie je veľmi bežné dostať dataset, ktorý je úplne pripravený na použitie na vytvorenie modelu strojového učenia. V tejto lekcii sa naučíte, ako pripraviť surový dataset pomocou štandardných knižníc Pythonu. Naučíte sa tiež rôzne techniky vizualizácie dát. +V skutočnosti nie je bežné dostať priamo dataset úplne pripravený na použitie na vytvorenie modelu ML. V tejto lekcii sa naučíte, ako pripraviť surový dataset pomocou štandardných knižníc Pythonu. Tiež sa naučíte rôzne techniky vizualizácie dát. ## Prípadová štúdia: 'trh s tekvicami' -V tomto priečinku nájdete .csv súbor v koreňovom priečinku `data` nazvaný [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv), ktorý obsahuje 1757 riadkov dát o trhu s tekvicami, rozdelených do skupín podľa miest. Ide o surové dáta extrahované z [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice), ktoré distribuuje Ministerstvo poľnohospodárstva USA. +V tomto priečinku nájdete .csv súbor v koreňovom priečinku `data` nazvaný [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv), ktorý obsahuje 1757 riadkov dát o trhu s tekvicami, zoradených podľa miest. Sú to surové dáta extrahované z [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) distribuovaných Ministerstvom poľnohospodárstva Spojených štátov. ### Príprava dát -Tieto dáta sú vo verejnej doméne. Môžu byť stiahnuté v mnohých samostatných súboroch, podľa miest, z webovej stránky USDA. Aby sme sa vyhli príliš mnohým samostatným súborom, spojili sme všetky dáta miest do jednej tabuľky, takže sme už dáta trochu _pripravili_. Teraz sa pozrime bližšie na dáta. +Tieto dáta sú vo verejnej doméne. Môžu byť stiahnuté v mnohých samostatných súboroch podľa miest zo stránky USDA. Aby sme predišli príliš mnohým samostatným súborom, všetky mestské dáta sme skonsolidovali do jednej tabuľky, takže sme už trochu _pripravili_ dáta. Teraz si dáta pozrime bližšie. -### Dáta o tekviciach - prvé závery +### Dáta o tekviciach – rané závery -Čo si všimnete na týchto dátach? Už ste videli, že je tam mix textov, čísel, prázdnych miest a zvláštnych hodnôt, ktoré musíte pochopiť. +Čo si všimnete na týchto dátach? Už ste videli, že tam je mix reťazcov, čísel, prázdnych polí a zvláštnych hodnôt, ktoré je potrebné pochopiť. -Akú otázku môžete položiť o týchto dátach pomocou regresnej techniky? Čo tak "Predpovedať cenu tekvice na predaj počas daného mesiaca". Pri pohľade na dáta je potrebné urobiť niekoľko zmien, aby ste vytvorili štruktúru dát potrebnú na túto úlohu. - -## Cvičenie - analýza dát o tekviciach +Akú otázku môžete položiť týmto dátam použitím regresnej techniky? Napríklad "Predpovedať cenu tekvice na predaj v danom mesiaci". Pri opätovnom pohľade na dáta sú potrebné úpravy na vytvorenie dátovej štruktúry potrebnej pre túto úlohu. +## Cvičenie – analyzujte dáta o tekviciach Použime [Pandas](https://pandas.pydata.org/) (názov znamená `Python Data Analysis`), nástroj veľmi užitočný na tvarovanie dát, na analýzu a prípravu týchto dát o tekviciach. -### Najskôr skontrolujte chýbajúce dátumy +### Najprv skontrolujte chýbajúce dátumy -Najprv musíte podniknúť kroky na kontrolu chýbajúcich dátumov: +Najprv treba podniknúť kroky na kontrolu chýbajúcich dátumov: -1. Konvertujte dátumy na formát mesiaca (ide o americké dátumy, takže formát je `MM/DD/YYYY`). -2. Extrahujte mesiac do nového stĺpca. +1. Preveďte dátumy na formát mesiaca (ide o americké dátumy, teda formát je `MM/DD/YYYY`). +2. Vytiahnite mesiac do novej kolónky. -Otvorte súbor _notebook.ipynb_ vo Visual Studio Code a importujte tabuľku do nového Pandas dataframe. +Otvorte súbor _notebook.ipynb_ vo Visual Studio Code a naimportujte tabuľku do nového Pandas dataframe. -1. Použite funkciu `head()`, aby ste si pozreli prvých päť riadkov. +1. Použite funkciu `head()` pre zobrazenie prvých piatich riadkov. ```python import pandas as pd @@ -64,7 +64,7 @@ Otvorte súbor _notebook.ipynb_ vo Visual Studio Code a importujte tabuľku do n pumpkins.head() ``` - ✅ Akú funkciu by ste použili na zobrazenie posledných piatich riadkov? + ✅ Ktorú funkciu by ste použili na zobrazenie posledných piatich riadkov? 1. Skontrolujte, či sú v aktuálnom dataframe chýbajúce dáta: @@ -72,22 +72,22 @@ Otvorte súbor _notebook.ipynb_ vo Visual Studio Code a importujte tabuľku do n pumpkins.isnull().sum() ``` - Sú tam chýbajúce dáta, ale možno to nebude mať vplyv na danú úlohu. + Niektoré dáta chýbajú, ale možno to nebude pre danú úlohu podstatné. -1. Aby bol váš dataframe ľahšie spracovateľný, vyberte iba stĺpce, ktoré potrebujete, pomocou funkcie `loc`, ktorá extrahuje z pôvodného dataframe skupinu riadkov (zadaných ako prvý parameter) a stĺpcov (zadaných ako druhý parameter). Výraz `:` v prípade nižšie znamená "všetky riadky". +1. Aby ste si uľahčili prácu s dataframe, vyberte iba potrebné kolónky pomocou funkcie `loc`, ktorá vyberá z pôvodného dataframe skupinu riadkov (ako prvý parameter) a stĺpcov (ako druhý parameter). Výraz `:` v nasledujúcom príklade znamená "všetky riadky". ```python columns_to_select = ['Package', 'Low Price', 'High Price', 'Date'] pumpkins = pumpkins.loc[:, columns_to_select] ``` -### Ďalej určte priemernú cenu tekvice +### Druhý krok, určte priemernú cenu tekvice -Premýšľajte o tom, ako určiť priemernú cenu tekvice v danom mesiaci. Ktoré stĺpce by ste si vybrali na túto úlohu? Tip: budete potrebovať 3 stĺpce. +Premyslite si, ako určiť priemernú cenu tekvice v danom mesiaci. Aké stĺpce by ste vybrali pre túto úlohu? Náznak: budete potrebovať 3 stĺpce. -Riešenie: vezmite priemer stĺpcov `Low Price` a `High Price`, aby ste naplnili nový stĺpec Price, a konvertujte stĺpec Date tak, aby zobrazoval iba mesiac. Našťastie, podľa vyššie uvedenej kontroly, nie sú chýbajúce dáta pre dátumy alebo ceny. +Riešenie: vezmite priemer z kolón `Low Price` a `High Price` pre novú kolónu Price, a prekonvertujte dátum tak, aby zobrazoval iba mesiac. Našťastie podľa predchádzajúcej kontroly v dátach nechýbajú dátumy ani ceny. -1. Na výpočet priemeru pridajte nasledujúci kód: +1. Pre výpočet priemeru pridajte tento kód: ```python price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2 @@ -96,37 +96,37 @@ Riešenie: vezmite priemer stĺpcov `Low Price` a `High Price`, aby ste naplnili ``` - ✅ Ak chcete skontrolovať akékoľvek dáta, môžete použiť `print(month)`. + ✅ Kľudne si vypíšte akékoľvek dáta pomocou `print(month)`, aby ste skontrolovali. -2. Teraz skopírujte svoje konvertované dáta do nového Pandas dataframe: +2. Teraz skopírujte prevedené dáta 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}) ``` - Ak si vytlačíte svoj dataframe, uvidíte čistý, upravený dataset, na ktorom môžete postaviť svoj nový regresný model. + Vytlačenie tohto dataframe vám zobrazí čistý, uprataný dataset, na ktorom môžete stavať váš nový regresný model. -### Ale počkajte! Niečo tu nesedí +### Ale počkajte! Niečo je tu zvláštne -Ak sa pozriete na stĺpec `Package`, tekvice sa predávajú v mnohých rôznych konfiguráciách. Niektoré sa predávajú v jednotkách '1 1/9 bushel', niektoré v '1/2 bushel', niektoré na kus, niektoré na váhu, a niektoré vo veľkých boxoch s rôznymi šírkami. +Ak sa pozriete na kolónu `Package`, tekvice sa predávajú v mnohých rôznych formách. Niektoré sa predávajú v dávkach '1 1/9 bushel', iné v '1/2 bushel', niektoré po kusoch, iné po librách a niektoré v veľkých krabiciach rôznej šírky. -> Tekvice sa zdajú byť veľmi ťažké vážiť konzistentne +> Tekvice je podľa všetkého veľmi ťažké rovnomerne vážiť. -Pri skúmaní pôvodných dát je zaujímavé, že všetko, čo má `Unit of Sale` rovné 'EACH' alebo 'PER BIN', má tiež typ `Package` na palec, na box alebo 'each'. Tekvice sa zdajú byť veľmi ťažké vážiť konzistentne, takže ich filtrujme výberom iba tekvíc s reťazcom 'bushel' v ich stĺpci `Package`. +Pri bližšom skúmaní pôvodných dát je zaujímavé, že všetko s `Unit of Sale` rovnakým 'EACH' alebo 'PER BIN' má tiež `Package` ako na palec, na bin, alebo 'each'. Tekvice je veľmi ťažké vážiť konzistentne, tak ich vyfiltrujme výberom iba tekvíc s reťazcom 'bushel' v kolónke `Package`. -1. Pridajte filter na začiatok súboru, pod počiatočný import .csv: +1. Pridajte filter na vrch súboru, pod počiatočný import .csv: ```python pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)] ``` - Ak si teraz vytlačíte dáta, uvidíte, že dostávate iba približne 415 riadkov dát obsahujúcich tekvice podľa bushel. + Ak teraz vytlačíte dáta, vidíte iba približne 415 riadkov obsahujúcich tekvice predávané po busheloch. -### Ale počkajte! Je tu ešte jedna vec, ktorú treba urobiť +### Ale počkajte! Ešte jedna vec -Všimli ste si, že množstvo bushel sa líši podľa riadku? Musíte normalizovať ceny tak, aby ste zobrazili ceny za bushel, takže urobte nejaké výpočty na ich štandardizáciu. +Všimli ste si, že množstvo bushelov sa líši v jednotlivých riadkoch? Je potrebné normalizovať ceny, aby sa ukazovali ceny za bushel, preto je treba urobiť nejakú matematiku na štandardizáciu. -1. Pridajte tieto riadky po bloku vytvárajúcom nový dataframe new_pumpkins: +1. Pridajte tieto riadky za blok vytvárajúci nový dataframe new_pumpkins: ```python new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9) @@ -134,38 +134,38 @@ Všimli ste si, že množstvo bushel sa líši podľa riadku? Musíte normalizov new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2) ``` -✅ Podľa [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) hmotnosť bushel závisí od typu produktu, pretože ide o objemové meranie. "Bushel paradajok, napríklad, by mal vážiť 56 libier... Listy a zelenina zaberajú viac miesta s menšou hmotnosťou, takže bushel špenátu váži iba 20 libier." Je to všetko dosť komplikované! Nebudeme sa zaoberať konverziou bushel na libry, namiesto toho budeme určovať cenu za bushel. Celá táto štúdia bushel tekvíc však ukazuje, aké dôležité je pochopiť povahu vašich dát! +✅ Podľa [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) záleží hmotnosť bushelu na druhu plodiny, keďže ide o objemové meranie. "Bushel paradajok napríklad váži 56 libier... Listy a zelenina zaberajú viac miesta pri menšej hmotnosti, takže bushel špenátu váži len 20 libier." Je to celkom komplikované! Nechceme sa pásť na prevody bushel na libru, radšej cenu nastavme za bushel. Toto skúmanie bushelov tekvíc však ukazuje, aké je dôležité rozumieť povahe vašich dát! -Teraz môžete analyzovať ceny za jednotku na základe ich merania bushel. Ak si ešte raz vytlačíte dáta, uvidíte, ako sú štandardizované. +Teraz môžete analyzovať ceny za jednotku podľa ich merania bushelmi. Ak vytlačíte dáta ešte raz, uvidíte, ako sú štandardizované. -✅ Všimli ste si, že tekvice predávané na polovičný bushel sú veľmi drahé? Dokážete zistiť prečo? Tip: malé tekvice sú oveľa drahšie ako veľké, pravdepodobne preto, že ich je oveľa viac na bushel, vzhľadom na nevyužitý priestor, ktorý zaberá jedna veľká dutá tekvica na koláč. +✅ Všimli ste si, že tekvice predávané po pol busheli sú veľmi drahé? Viete povedať prečo? Náznak: malé tekvice sú omnoho drahšie ako veľké, pravdepodobne preto, že ich je omnoho viac na jeden bushel z dôvodu nevyužitého priestoru, ktorý zaberá jedna veľká dutá tekvica na koláč. ## Stratégie vizualizácie -Súčasťou úlohy dátového vedca je demonštrovať kvalitu a povahu dát, s ktorými pracuje. Na tento účel často vytvárajú zaujímavé vizualizácie, ako sú grafy, diagramy a tabuľky, ktoré ukazujú rôzne aspekty dát. Týmto spôsobom môžu vizuálne ukázať vzťahy a medzery, ktoré by inak bolo ťažké odhaliť. +Súčasťou role dátového vedca je demonštrovať kvalitu a povahu dát, s ktorými pracuje. Na to často vytvárajú zaujímavé vizualizácie, ako grafy, diagramy a tabuľky, ktoré zobrazujú rôzne aspekty dát. Takto môžu vizuálne ukázať vzťahy a medzery, ktoré by inak bolo ťažké objaviť. -[![ML pre začiatočníkov - Ako vizualizovať dáta pomocou Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML pre začiatočníkov - Ako vizualizovať dáta pomocou Matplotlib") +[![ML pre začiatočníkov – Ako vizualizovať dáta pomocou Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML pre začiatočníkov – Ako vizualizovať dáta pomocou Matplotlib") -> 🎥 Kliknite na obrázok vyššie pre krátke video o vizualizácii dát pre túto lekciu. +> 🎥 Kliknite na obrázok hore pre krátke video o vizualizácii dát pre túto lekciu. -Vizualizácie môžu tiež pomôcť určiť techniku strojového učenia, ktorá je najvhodnejšia pre dané dáta. Napríklad scatterplot, ktorý sa zdá nasledovať líniu, naznačuje, že dáta sú dobrým kandidátom na cvičenie lineárnej regresie. +Vizualizácie môžu tiež pomôcť určiť najvhodnejšiu techniku strojového učenia pre dáta. Napríklad rozptylový graf (scatterplot), ktorý sa zdá nasledovať líniu, naznačuje, že dáta sú dobrými kandidátmi na lineárnu regresiu. -Jedna knižnica na vizualizáciu dát, ktorá dobre funguje v Jupyter notebookoch, je [Matplotlib](https://matplotlib.org/) (ktorú ste videli aj v predchádzajúcej lekcii). +Jednou z knižníc na vizualizáciu dát, ktorá dobre funguje v Jupyter notebooks, je [Matplotlib](https://matplotlib.org/) (ktorú ste videli aj v predchádzajúcej lekcii). > Získajte viac skúseností s vizualizáciou dát v [týchto tutoriáloch](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott). -## Cvičenie - experimentujte s Matplotlib +## Cvičenie – experimentujte s Matplotlib -Skúste vytvoriť niekoľko základných grafov na zobrazenie nového dataframe, ktorý ste práve vytvorili. Čo by ukázal základný čiarový graf? +Vyskúšajte vytvoriť jednoduché grafy zobrazujúce nový dataframe, ktorý ste práve vytvorili. Čo by mohol ukázať jednoduchý čiarový graf? -1. Importujte Matplotlib na začiatok súboru, pod import Pandas: +1. Importujte Matplotlib na vrch súboru, pod Pandas import: ```python import matplotlib.pyplot as plt ``` -1. Znovu spustite celý notebook, aby ste ho aktualizovali. -1. Na konci notebooku pridajte bunku na vykreslenie dát ako box: +1. Znova spustite celý notebook pre obnovenie. +1. Na konci notebooku pridajte bunku na vykreslenie box plota: ```python price = new_pumpkins.Price @@ -174,38 +174,113 @@ Skúste vytvoriť niekoľko základných grafov na zobrazenie nového dataframe, plt.show() ``` - ![Scatterplot zobrazujúci vzťah medzi cenou a mesiacom](../../../../2-Regression/2-Data/images/scatterplot.png) + ![Rozptylový graf ukazujúci vzťah ceny a mesiaca](../../../../translated_images/sk/scatterplot.b6868f44cbd2051c.webp) - Je tento graf užitočný? Prekvapilo vás na ňom niečo? + Je tento graf užitočný? Prekvapuje vás niečo na ňom? - Nie je obzvlášť užitočný, pretože iba zobrazuje vaše dáta ako rozptyl bodov v danom mesiaci. + Nie je veľmi užitočný, pretože iba zobrazuje dáta rozptýlené do mesiacov. -### Urobte ho užitočným +### Spravme ho užitočným -Aby grafy zobrazovali užitočné dáta, zvyčajne je potrebné dáta nejako zoskupiť. Skúsme vytvoriť graf, kde os y zobrazuje mesiace a dáta ukazujú rozdelenie dát. +Aby grafy zobrazovali užitočné dáta, zvyčajne ich treba nejako zoskupiť. Skúsme vytvoriť graf, kde os y ukazuje mesiace a dáta ukazujú ich rozloženie. -1. Pridajte bunku na vytvorenie zoskupeného stĺpcového grafu: +1. Pridajte bunku na vytvorenie skupinového stĺpcového grafu: ```python new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') plt.ylabel("Pumpkin Price") ``` - ![Stĺpcový graf zobrazujúci vzťah medzi cenou a mesiacom](../../../../2-Regression/2-Data/images/barchart.png) + ![Stĺpcový graf ukazujúci vzťah ceny a mesiaca](../../../../translated_images/sk/barchart.a833ea9194346d76.webp) + + Toto je užitočnejšia vizualizácia dát! Zdá sa, že najvyššie ceny tekvíc sú v septembri a októbri. Súhlasí to s vaším očakávaním? Prečo áno alebo prečo nie? + +## Cvičenie – experimentujte so Seaborn + +Matplotlib je výkonný, ale na vytvorenie vylešteného grafu môže byť potrebný veľký kód. [Seaborn](https://seaborn.pydata.org/) je knižnica postavená _na vrchu_ Matplotlibu, určená na štatistickú vizualizáciu dát. Pracuje priamo s Pandas dataframeami, používa atraktívne predvolené štýly a umožňuje vytvárať informatívne grafy s oveľa menším kódom. Keďže Seaborn vracia objekty Matplotlibu, stále môžete použiť všetko, čo už viete o Matplotlib, na doladenie výsledku. + +> Ak ešte nemáte Seaborn nainštalovaný, nainštalujte ho pomocou `pip install seaborn`. + +1. Importujte Seaborn na vrch notebooku, pod ostatné importy. Konvenciou je importovať ho ako `sns`: + + ```python + import seaborn as sns + ``` + +### Rozptylové grafy na zobrazenie vzťahov + +Veľká časť skúmania dát pred tvorbou modelu je hľadanie _vzťahov_ medzi premennými. [Rozptylový graf](https://en.wikipedia.org/wiki/Scatter_plot) je jedným z najlepších nástrojov na to: ak sa body zdajú nasledovať priamku, obe premenné môžu byť korelované, čo je dobrý znak, že lineárny regresný model môže fungovať. + +1. Znova vytvorte rozptylový graf ceny podľa mesiaca, tentoraz pomocou Seaborn funkcie [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) (relačný plot), ktorá pracuje priamo so stĺpcami vášho dataframe: + + ```python + sns.relplot(x="Price", y="Month", data=new_pumpkins) + ``` + + ![Seaborn rozptylový graf ukazujúci vzťah ceny a mesiaca](../../../../translated_images/sk/relplot.a03837d8f0329cec.webp) + + Všimnite si, ako odovzdáte _názvy stĺpcov_ a dataframe, a Seaborn sa stará o popisky osí za vás. + +2. Môžete zmeniť typ grafu na čiarový zadaním `kind="line"`. Seaborn dokonca vykreslí zatienený pás ukazujúci interval dôvery okolo čiary: + + ```python + sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins) + ``` + + ![Seaborn čiarový graf ukazujúci vzťah ceny a mesiaca](../../../../translated_images/sk/lineplot.f9034ba47b1e30ee.webp) + + Tieto konkrétne dáta sú dosť hlučné, takže čiarový graf nie je najjasnejšia voľba — ale ukazuje, ako ľahko môžete meniť typ grafu v Seaborn. + +### Stĺpcové grafy na zobrazenie rozložení + + +Skôr ste ručne zoskupovali údaje, aby ste vytvorili stĺpcový graf s Matplotlib. Seabornova funkcia [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) (kategorizovaný graf) môže za vás urobiť zoskupovanie a agregáciu. Predvolene `kind="bar"` ukazuje priemer každej kategórie spolu s čiernou čiarou znázorňujúcou interval spoľahlivosti. + +1. Vytvorte stĺpcový graf priemernej ceny za mesiac: + + ```python + sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar") + ``` + + ![A Seaborn bar chart showing the price distribution per month](../../../../translated_images/sk/catplot.e73fc35fdf96242b.webp) + + To potvrdzuje to, čo ste videli s Matplotlib — ceny vrcholia okolo septembra a októbra — ale Seaborn tiež vizualizuje, ako veľmi sa cena _mení_ v rámci každého mesiaca. + +### Tepelné mapy na zobrazenie korelácií + +Bodové grafy porovnávajú vždy dve premenné. Keď máte viacero číselných stĺpcov, [teplená mapa](https://en.wikipedia.org/wiki/Heat_map) vám umožní naraz vidieť silu vzťahu medzi _každým_ párom stĺpcov. Toto je bežný spôsob, ako spoznať, ktoré vlastnosti sú najviac korelované pred výberom, čo použiť do modelu (a rovnaký typ grafu sa neskôr používa na zobrazenie mätúcich matíc pri klasifikácii). + +1. Vytvorte korelačnú maticu pomocou Pandas a potom ju nakreslite pomocou Seabornovej funkcie [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html). Voľba `annot=True` vypíše hodnoty korelácií v každej bunke: + + ```python + correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr() + sns.heatmap(correlations, annot=True, cmap="coolwarm") + ``` + + ![A Seaborn heatmap showing correlations between the numeric columns](../../../../translated_images/sk/heatmap.bd98dce43b404c57.webp) + + Hodnoty blízke k `1` (alebo `-1`) znamenajú, že stĺpce sú silne _lineárne_ korelované. Všimnite si, že `Low Price` a `High Price` sú takmer úplne korelované. `Month` na druhej strane ukazuje len slabú lineárnu koreláciu s cenou — aj keď vyššie uvedený stĺpcový graf odhalil jasný sezónny vrchol v septembri a októbri. To je dôležitá lekcia: korelačný koeficient meria len _priame čiary_, takže môže prehliadnuť sezónne alebo iné nelineárne vzory. ✅ Prečo je užitočné pozrieť sa na oboje: tepelnú mapu *a* grafy ako stĺpcový graf pred rozhodnutím, ktoré stĺpce použiť? + +### Matplotlib alebo Seaborn? + +Obe knižnice stoja za poznanie: + +- **Matplotlib** vám dáva detailnú kontrolu nad každým prvkom grafu a je základom, na ktorom staví takmer každá iná pythonovská knižnica na kreslenie. +- **Seaborn** poskytuje funkcie na vyššej úrovni a atraktívne prednastavenia pre štatistické grafy, pracuje priamo s dátovými rámcami (dataframes) a je často rýchlejší pre prieskumnú analýzu dát. - Toto je užitočnejšia vizualizácia dát! Zdá sa, že najvyššia cena za tekvice sa vyskytuje v septembri a októbri. Zodpovedá to vašim očakávaniam? Prečo áno alebo nie? +Bežný pracovný postup je najskôr použiť Seaborn na rýchlu prieskumnú analýzu, potom prejsť na Matplotlib, keď potrebujete prispôsobiť podrobnosti. --- ## 🚀Výzva -Preskúmajte rôzne typy vizualizácií, ktoré Matplotlib ponúka. Ktoré typy sú najvhodnejšie pre regresné problémy? +Preskúmajte rôzne typy vizualizácií, ktoré ponúkajú Matplotlib a Seaborn. Ktoré typy sú najvhodnejšie pre regresné problémy? ## [Kvíz po prednáške](https://ff-quizzes.netlify.app/en/ml/) ## Prehľad a samostatné štúdium -Pozrite sa na mnohé spôsoby vizualizácie dát. Vytvorte zoznam rôznych dostupných knižníc a poznačte si, ktoré sú najlepšie pre dané typy úloh, napríklad 2D vizualizácie vs. 3D vizualizácie. Čo ste zistili? +Pozrite si množstvo spôsobov vizualizácie dát. Vypracujte si zoznam dostupných knižníc a zaznamenajte, ktoré sú najlepšie pre dané typy úloh, napríklad 2D vizualizácie vs. 3D vizualizácie. Čo zistíte? ## Zadanie @@ -213,5 +288,7 @@ Pozrite sa na mnohé spôsoby vizualizácie dát. Vytvorte zoznam rôznych dostu --- -**Upozornenie**: -Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Hoci sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nenesieme zodpovednosť za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file + +**Vyhlásenie o zodpovednosti**: +Tento dokument bol preložený pomocou AI prekladateľskej služby [Co-op Translator](https://github.com/Azure/co-op-translator). Hoci sa snažíme o presnosť, vezmite prosím na vedomie, že automatické preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho natívnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nie sme zodpovední za žiadne nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. + \ No newline at end of file diff --git a/translations/sk/2-Regression/2-Data/solution/notebook.ipynb b/translations/sk/2-Regression/2-Data/solution/notebook.ipynb index b4cd214e7..bfaf356fb 100644 --- a/translations/sk/2-Regression/2-Data/solution/notebook.ipynb +++ b/translations/sk/2-Regression/2-Data/solution/notebook.ipynb @@ -3,7 +3,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "## Lineárna regresia pre tekvice - Lekcia 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": [ + "## Vizualizácia pomocou Seaborn\n", + "\n", + "[Seaborn](https://seaborn.pydata.org/) je postavený na Matplotlib a pracuje priamo s dataframe-ami, čo umožňuje rýchlo vytvárať atraktívne štatistické grafy s veľmi malým množstvom kódu.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Bodové grafy na zobrazenie vzťahov\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": [ + "### Stĺpcové grafy na zobrazenie rozdelení\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**Upozornenie**: \nTento dokument bol preložený pomocou služby na automatický preklad [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, upozorňujeme, že automatické preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho pôvodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre dôležité informácie sa odporúča profesionálny ľudský preklad. Nezodpovedáme za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu.\n" + "### Tepelné mapy na zobrazenie korelácií\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**Vyhlásenie o zodpovednosti**:\nTento dokument bol preložený pomocou AI prekladateľskej služby [Co-op Translator](https://github.com/Azure/co-op-translator). Hoci sa snažíme o presnosť, vezmite prosím na vedomie, že automatické preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho natívnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nie sme zodpovední za žiadne nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu.\n\n" ] } ], @@ -424,13 +487,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "95726f0b8283628d5356a4f8eb8b4b76", - "translation_date": "2025-09-06T13:46:11+00:00", - "source_file": "2-Regression/2-Data/solution/notebook.ipynb", - "language_code": "sk" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/sk/8-Reinforcement/1-QLearning/README.md b/translations/sk/8-Reinforcement/1-QLearning/README.md index f179811b9..81c9efb25 100644 --- a/translations/sk/8-Reinforcement/1-QLearning/README.md +++ b/translations/sk/8-Reinforcement/1-QLearning/README.md @@ -1,47 +1,47 @@ -# Úvod do posilňovacieho učenia a Q-Learningu +# Úvod do učenia posilňovaním a Q-Learningu -![Zhrnutie posilňovacieho učenia v strojovom učení v sketchnote](../../../../sketchnotes/ml-reinforcement.png) +![Zhrnutie posilňovania v strojovom učení v sketchnote](../../../../translated_images/sk/ml-reinforcement.94024374d63348db.webp) > Sketchnote od [Tomomi Imura](https://www.twitter.com/girlie_mac) -Posilňovacie učenie zahŕňa tri dôležité koncepty: agenta, určité stavy a súbor akcií pre každý stav. Vykonaním akcie v špecifikovanom stave dostane agent odmenu. Predstavte si počítačovú hru Super Mario. Vy ste Mario, nachádzate sa v úrovni hry, stojíte vedľa okraja útesu. Nad vami je minca. Vy ako Mario, v úrovni hry, na konkrétnej pozícii... to je váš stav. Pohyb o jeden krok doprava (akcia) vás zavedie cez okraj, čo by vám prinieslo nízke číselné skóre. Avšak stlačením tlačidla skoku by ste získali bod a zostali nažive. To je pozitívny výsledok, ktorý by vám mal priniesť pozitívne číselné skóre. +Učenie posilňovaním zahŕňa tri dôležité pojmy: agenta, niekoľko stavov a súbor akcií pre každý stav. Vykonaním akcie v určenom stave dostáva agent odmenu. Predstavte si znova počítačovú hru Super Mario. Ste Mario, ste v úrovni hry, stojíte vedľa okraja útesu. Nad vami je minca. Vy ako Mario, v hernej úrovni, na konkrétnej pozícii ... to je váš stav. Pohyb o jeden krok doprava (akcia) vás zhodí z okraja a dostanete nízke číselné skóre. Stlačenie tlačidla skoku by vám však umožnilo získať bod a prežiť. To je pozitívny výsledok a mal by vám udeliť pozitívne číselné skóre. -Pomocou posilňovacieho učenia a simulátora (hry) sa môžete naučiť, ako hrať hru tak, aby ste maximalizovali odmenu, čo znamená zostať nažive a získať čo najviac bodov. +Použitím učenia posilňovaním a simulátora (hry) sa môžete naučiť, ako hrať hru tak, aby ste maximalizovali odmenu, ktorou je prežitie a získanie čo najväčšieho počtu bodov. -[![Úvod do posilňovacieho učenia](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) +[![Úvod do učenia posilňovaním](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) -> 🎥 Kliknite na obrázok vyššie a vypočujte si Dmitryho diskusiu o posilňovacom učení +> 🎥 Kliknite na obrázok vyššie, aby ste si vypočuli Dmitryho diskusiu o učenie posilňovaním ## [Kvíz pred prednáškou](https://ff-quizzes.netlify.app/en/ml/) ## Predpoklady a nastavenie -V tejto lekcii budeme experimentovať s kódom v Pythone. Mali by ste byť schopní spustiť kód Jupyter Notebook z tejto lekcie, buď na svojom počítači alebo niekde v cloude. +V tejto lekcii budeme experimentovať s kódom v Pythone. Mali by ste byť schopní spustiť kód Jupyter Notebooku z tejto lekcie, buď na vašom počítači alebo niekde v cloude. -Môžete otvoriť [notebook lekcie](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) a prejsť touto lekciou, aby ste si ju osvojili. +Môžete otvoriť [lesson notebook](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) a prejsť si túto lekciu postupne. -> **Poznámka:** Ak otvárate tento kód z cloudu, musíte tiež stiahnuť súbor [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), ktorý sa používa v kóde notebooku. Pridajte ho do rovnakého adresára ako notebook. +> **Poznámka:** Ak otvárate tento kód z cloudu, musíte si tiež stiahnuť súbor [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), ktorý sa používa v kóde notebooku. Pridajte ho do rovnakého adresára ako notebook. ## Úvod -V tejto lekcii preskúmame svet **[Peter a vlk](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)**, inšpirovaný hudobnou rozprávkou od ruského skladateľa [Sergeja Prokofieva](https://en.wikipedia.org/wiki/Sergei_Prokofiev). Použijeme **posilňovacie učenie**, aby sme umožnili Petrovi preskúmať jeho prostredie, zbierať chutné jablká a vyhnúť sa stretnutiu s vlkom. +V tejto lekcii preskúmame svet **[Petra a vlka](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)**, ktorý je inšpirovaný hudobnou rozprávkou od ruského skladateľa, [Sergeja Prokofieva](https://en.wikipedia.org/wiki/Sergei_Prokofiev). Použijeme **učenie posilňovaním** na to, aby Peter preskúmal svoje prostredie, zbieral chutné jabĺčka a vyhýbal sa stretnutiu s vlkom. -**Posilňovacie učenie** (RL) je technika učenia, ktorá nám umožňuje naučiť sa optimálne správanie **agenta** v určitom **prostredí** vykonávaním mnohých experimentov. Agent v tomto prostredí by mal mať nejaký **cieľ**, definovaný pomocou **funkcie odmeny**. +**Učenie posilňovaním** (RL) je technika učenia, ktorá nám umožňuje naučiť sa optimálne správanie **agenta** v nejakom **prostredí** vykonaním mnohých experimentov. Agent v tomto prostredí by mal mať nejaký **cieľ**, definovaný **funkciou odmeny**. ## Prostredie -Pre jednoduchosť si predstavme Petrov svet ako štvorcovú dosku veľkosti `šírka` x `výška`, ako je táto: +Pre jednoduchosť si predstavme Petrovu svet ako štvorcovú dosku veľkosti `width` x `height` takto: -![Petrovo prostredie](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![Petrovo prostredie](../../../../translated_images/sk/environment.40ba3cb66256c93f.webp) Každá bunka na tejto doske môže byť: -* **zem**, po ktorej Peter a iné bytosti môžu chodiť. +* **zem**, po ktorej sa Peter a ostatné tvory môžu pohybovať. * **voda**, po ktorej samozrejme nemôžete chodiť. -* **strom** alebo **tráva**, miesto, kde si môžete oddýchnuť. +* **strom** alebo **tráva**, miesto na oddych. * **jablko**, ktoré predstavuje niečo, čo by Peter rád našiel, aby sa nakŕmil. * **vlk**, ktorý je nebezpečný a treba sa mu vyhnúť. -Existuje samostatný Python modul, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), ktorý obsahuje kód na prácu s týmto prostredím. Keďže tento kód nie je dôležitý pre pochopenie našich konceptov, importujeme modul a použijeme ho na vytvorenie vzorovej dosky (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), ktorý obsahuje kód na prácu s týmto prostredím. Pretože tento kód nie je dôležitý pre pochopenie našich konceptov, importujeme modul a použijeme ho na vytvorenie vzorovej dosky (kódový blok 1): ```python from rlboard import * @@ -52,63 +52,63 @@ m.randomize(seed=13) m.plot() ``` -Tento kód by mal vytlačiť obrázok prostredia podobný tomu vyššie. +Tento kód by mal vytlačiť obrázok prostredia podobný ako vyššie. ## Akcie a politika -V našom príklade by Petrovým cieľom bolo nájsť jablko, pričom sa vyhne vlkovi a iným prekážkam. Na to môže v podstate chodiť, kým nenájde jablko. +V našom príklade by Petrovým cieľom bolo nájsť jablko a vyhnúť sa vlkovi a iným prekážkam. Na to môže v podstate chodiť, kým nenájde jablko. -Preto si na akejkoľvek pozícii môže vybrať jednu z nasledujúcich akcií: hore, dole, doľava a doprava. +Preto si môže zvoliť na akejkoľvek pozícii jednu z nasledujúcich akcií: hore, dole, vľavo a vpravo. -Tieto akcie definujeme ako slovník a mapujeme ich na dvojice zodpovedajúcich zmien súradníc. Napríklad pohyb doprava (`R`) by zodpovedal dvojici `(1,0)`. (blok kódu 2): +Tieto akcie definujeme ako slovník, a namapujeme ich na dvojice zodpovedajúcich zmien súradníc. Napríklad, pohyb doprava (`R`) zodpovedá dvojici `(1,0)`. (kódový blok 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()) } ``` -Aby sme to zhrnuli, stratégia a cieľ tohto scenára sú nasledovné: +Na záver, stratégia a cieľ scénaru sú nasledovné: -- **Stratégia** nášho agenta (Petra) je definovaná tzv. **politikou**. Politika je funkcia, ktorá vracia akciu v akomkoľvek danom stave. V našom prípade je stav problému reprezentovaný doskou vrátane aktuálnej pozície hráča. +- **Stratégia** nášho agenta (Petra) je definovaná tzv. **politikou**. Politika je funkcia, ktorá vracia akciu v danom stave. V našom prípade je stav problému reprezentovaný doskou vrátane aktuálnej pozície hráča. -- **Cieľ** posilňovacieho učenia je nakoniec naučiť sa dobrú politiku, ktorá nám umožní efektívne vyriešiť problém. Ako základ však zvážme najjednoduchšiu politiku nazývanú **náhodná chôdza**. +- **Cieľ** učenia posilňovaním je nakoniec naučiť sa dobrú politiku, ktorá nám umožní problém efektívne vyriešiť. Avšak ako základ zvážme najjednoduchšiu politiku nazvanú **náhodná prechádzka**. -## Náhodná chôdza +## Náhodná prechádzka -Najprv vyriešme náš problém implementáciou stratégie náhodnej chôdze. Pri náhodnej chôdzi budeme náhodne vyberať ďalšiu akciu z povolených akcií, kým nedosiahneme jablko (blok kódu 3). +Najskôr vyriešme náš problém implementovaním stratégie náhodnej prechádzky. Pri náhodnej prechádzke náhodne vyberieme ďalšiu akciu z povolených akcií, kým nedosiahneme jablko (kódový blok 3). -1. Implementujte náhodnú chôdzu pomocou nižšie uvedeného kódu: +1. Implementujte náhodnú prechádzku pomocou nasledujúceho kódu: ```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 krokov + # nastaviť počiatočnú pozíciu if start_position: m.human = start_position else: m.random_start() while True: if m.at() == Board.Cell.apple: - return n # success! + return n # úspech! if m.at() in [Board.Cell.wolf, Board.Cell.water]: - return -1 # eaten by wolf or drowned + return -1 # zožraný vlkom alebo utopený 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) # vykonať skutočný pohyb break n+=1 walk(m,random_policy) ``` - Volanie `walk` by malo vrátiť dĺžku zodpovedajúcej cesty, ktorá sa môže líšiť od jedného spustenia k druhému. + Volanie `walk` by malo vrátiť dĺžku zodpovedajúcej cesty, ktorá sa môže líšiť pri každom spustení. -1. Spustite experiment chôdze niekoľkokrát (povedzme 100-krát) a vytlačte výsledné štatistiky (blok kódu 4): +1. Spustite experiment prechádzky niekoľkokrát (napríklad 100) a vypíšte výslednú štatistiku (kódový blok 4): ```python def print_statistics(policy): @@ -125,17 +125,17 @@ Najprv vyriešme náš problém implementáciou stratégie náhodnej chôdze. Pr print_statistics(random_policy) ``` - Všimnite si, že priemerná dĺžka cesty je okolo 30-40 krokov, čo je dosť veľa, vzhľadom na to, že priemerná vzdialenosť k najbližšiemu jablku je okolo 5-6 krokov. + Všimnite si, že priemerná dĺžka cesty je okolo 30-40 krokov, čo je dosť veľa, vzhľadom na fakt, že priemerná vzdialenosť k najbližšiemu jablku je okolo 5-6 krokov. - Môžete tiež vidieť, ako vyzerá Petrov pohyb počas náhodnej chôdze: + Tiež môžete vidieť, ako vyzerá Peterov pohyb počas náhodnej prechádzky: - ![Petrova náhodná chôdza](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) + ![Petrova náhodná prechádzka](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) ## Funkcia odmeny -Aby bola naša politika inteligentnejšia, musíme pochopiť, ktoré pohyby sú "lepšie" ako ostatné. Na to musíme definovať náš cieľ. +Aby sme našu politiku spravili inteligentnejšou, potrebujeme pochopiť, ktoré ťahy sú „lepšie“ než iné. Na to musíme definovať náš cieľ. -Cieľ môže byť definovaný pomocou **funkcie odmeny**, ktorá vráti nejakú hodnotu skóre pre každý stav. Čím vyššie číslo, tým lepšia funkcia odmeny. (blok kódu 5) +Cieľ môžeme definovať pomocou **funkcie odmeny**, ktorá vráti nejakú hodnotu skóre pre každý stav. Čím vyššie číslo, tým lepšia odmena. (kódový blok 5) ```python move_reward = -0.1 @@ -154,39 +154,115 @@ def reward(m,pos=None): return move_reward ``` -Zaujímavé na funkciách odmeny je, že vo väčšine prípadov *dostaneme podstatnú odmenu až na konci hry*. To znamená, že náš algoritmus by mal nejako zapamätať "dobré" kroky, ktoré vedú k pozitívnej odmene na konci, a zvýšiť ich dôležitosť. Podobne by mali byť odradené všetky pohyby, ktoré vedú k zlým výsledkom. +Zaujímavé na funkciách odmeny je, že vo väčšine prípadov *dostaneme výraznú odmenu až na konci hry*. To znamená, že náš algoritmus by mal nejako „pamätať“ si „dobré“ kroky, ktoré vedú k pozitívnej odmene na konci, a zvýšiť ich význam. Podobne všetky kroky, ktoré vedú k zlým výsledkom, by mali byť odradené. ## Q-Learning -Algoritmus, ktorý tu budeme diskutovať, sa nazýva **Q-Learning**. V tomto algoritme je politika definovaná funkciou (alebo dátovou štruktúrou) nazývanou **Q-Tabuľka**. Tá zaznamenáva "kvalitu" každej akcie v danom stave. +Algoritmus, o ktorom tu budeme diskutovať, sa nazýva **Q-Learning**. V tomto algoritme je politika definovaná funkciou (alebo dátovou štruktúrou) nazývanou **Q-Tabuľka**. Tá zaznamenáva „dobrotu“ každej akcie v danom stave. -Nazýva sa Q-Tabuľka, pretože je často výhodné ju reprezentovať ako tabuľku alebo viacrozmerné pole. Keďže naša doska má rozmery `šírka` x `výška`, môžeme Q-Tabuľku reprezentovať pomocou numpy poľa s tvarom `šírka` x `výška` x `len(akcie)`: (blok kódu 6) +Nazýva sa Q-Tabuľka, pretože je často pohodlné ju reprezentovať ako tabuľku alebo viacrozmerné pole. Keďže naša doska má rozmery `width` x `height`, môžeme Q-Tabuľku reprezentovať pomocou numpy poľa s tvarom `width` x `height` x `len(actions)`: (kódový blok 6) ```python Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions) ``` -Všimnite si, že inicializujeme všetky hodnoty Q-Tabuľky rovnakou hodnotou, v našom prípade - 0.25. To zodpovedá politike "náhodnej chôdze", pretože všetky pohyby v každom stave sú rovnako dobré. Q-Tabuľku môžeme odovzdať funkcii `plot`, aby sme tabuľku vizualizovali na doske: `m.plot(Q)`. +Všimnite si, že inicializujeme všetky hodnoty Q-Tabuľky rovnakou hodnotou, v našom prípade - 0.25. To zodpovedá politike „náhodnej prechádzky“, pretože všetky pohyby v každom stave sú rovnako dobré. Môžeme Q-Tabuľku odovzdať funkcii `plot` na vizualizáciu tabuľky na doske: `m.plot(Q)`. -![Petrovo prostredie](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![Petrovo prostredie](../../../../translated_images/sk/env_init.04e8f26d2d60089e.webp) -V strede každej bunky je "šípka", ktorá označuje preferovaný smer pohybu. Keďže všetky smery sú rovnaké, zobrazí sa bodka. +V strede každej bunky je „šípka“, ktorá ukazuje preferovaný smer pohybu. Keďže všetky smery sú rovnaké, zobrazuje sa bodka. -Teraz musíme spustiť simuláciu, preskúmať naše prostredie a naučiť sa lepšie rozdelenie hodnôt Q-Tabuľky, ktoré nám umožní oveľa rýchlejšie nájsť cestu k jablku. +Teraz musíme spustiť simuláciu, preskúmať naše prostredie a naučiť sa lepšie rozdelenie hodnôt Q-Tabuľky, ktoré nám umožní nájsť cestu k jablku oveľa rýchlejšie. -## Podstata Q-Learningu: Bellmanova rovnica +## Podstata Q-Learningu: Bellmanova rovnice -Keď sa začneme pohybovať, každá akcia bude mať zodpovedajúcu odmenu, t.j. teoreticky môžeme vybrať ďalšiu akciu na základe najvyššej okamžitej odmeny. Avšak vo väčšine stavov pohyb nedosiahne náš cieľ dosiahnuť jablko, a preto nemôžeme okamžite rozhodnúť, ktorý smer je lepší. +Keď začneme pohybovať, každá akcia bude mať zodpovedajúcu odmenu, teda teoreticky môžeme vybrať ďalšiu akciu na základe najvyššej okamžitej odmeny. Avšak v väčšine stavov tento pohyb náš cieľ dosiahnuť nedosiahne, a preto nemôžeme okamžite rozhodnúť, ktorý smer je lepší. -> Pamätajte, že nezáleží na okamžitom výsledku, ale skôr na konečnom výsledku, ktorý dosiahneme na konci simulácie. +> Pamätajte, že nie okamžitý výsledok je podstatný, ale konečný výsledok, ktorý získame na konci simulácie. -Aby sme zohľadnili túto oneskorenú odmenu, musíme použiť princípy **[dynamického programovania](https://en.wikipedia.org/wiki/Dynamic_programming)**, ktoré nám umožňujú premýšľať o našom probléme rekurzívne. +Aby sme tento oneskorený odmien započítali, potrebujeme použiť princípy **[dynamického programovania](https://en.wikipedia.org/wiki/Dynamic_programming)**, ktoré nám umožňujú uvažovať o našom probléme rekurzívne. -Predpokladajme, že sa teraz nachádzame v stave *s*, a chceme sa presunúť do ďalšieho stavu *s'*. Týmto krokom získame okamžitú odmenu *r(s,a)*, definovanú funkciou odmeny, plus nejakú budúcu odmenu. Ak predpokladáme, že naša Q-Tabuľka správne odráža "atraktivitu" každej akcie, potom v stave *s'* si vyberieme akciu *a*, ktorá zodpovedá maximálnej hodnote *Q(s',a')*. Takže najlepšia možná budúca odmena, ktorú by sme mohli získať v stave *s*, bude definovaná ako `max` +Predstavme si, že sme teraz v stave *s* a chceme prejsť do ďalšieho stavu *s'*. Tým získame okamžitú odmenu *r(s,a)* definovanú funkciou odmeny, plus nejakú budúcu odmenu. Ak predpokladáme, že naša Q-Tabuľka správne odráža „atraktivitu“ každej akcie, potom v stave *s'* si vyberieme akciu *a*, ktorá zodpovedá maximálnej hodnote *Q(s',a')*. Najlepšia možná budúca odmena, ktorú môžeme získať v stave *s*, bude definovaná ako `max`a'*Q(s',a')* (maximálna hodnota je vypočítaná pre všetky možné akcie *a'* v stave *s'*). + +Toto dáva **Bellmanovu formulu** na výpočet hodnoty Q-Tabuľky v stave *s* pri akcii *a*: + + + +Tu γ je tzv. **diskontný faktor**, ktorý určuje, do akej miery by ste mali uprednostňovať aktuálnu odmenu pred budúcou odmenou a naopak. + +## Učiaci algoritmus + +Na základe rovnice vyššie môžeme napísať pseudo-kód nášho učiaceho algoritmu: + +* Inicializujte Q-Tabuľku Q rovnakými hodnotami pre všetky stavy a akcie +* Nastavte rýchlosť učenia α ← 1 +* Opakujte simuláciu mnohokrát + 1. Začnite na náhodnej pozícii + 1. Opakujte + 1. Vyberte akciu *a* v stave *s* + 2. Vykonajte akciu presunom do nového stavu *s'* + 3. Ak nastane koniec hry alebo je celková odmena príliš nízka - ukončite simuláciu + 4. Vypočítajte odmenu *r* v novom stave + 5. Aktualizujte Q-Funkciu podľa Bellmanovej rovnice: *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ maxa'Q(s',a'))* + 6. *s* ← *s'* + 7. Aktualizujte celkovú odmenu a znížte α. + +## Využívanie vs. skúmanie + +V algoritme vyššie sme neurčili, ako presne vyberieme akciu v kroku 2.1. Ak vyberáme akciu náhodne, budeme náhodne **preskúmavať** prostredie a pravdepodobne často zomrieme, ako aj preskúmame oblasti, kde by sme normálne nešli. Alternatívnym prístupom je **využiť** hodnoty Q-Tabuľky, ktoré už poznáme, a teda vybrať najlepšiu akciu (s vyššou hodnotou Q-Tabuľky) v stave *s*. To nás však zabrzdí v preskúmaní ďalších stavov a pravdepodobne nenájdeme optimálne riešenie. + +Preto je najlepším prístupom nájsť rovnováhu medzi skúmaním a využívaním. To môžeme dosiahnuť výberom akcie v stave *s* s pravdepodobnosťou úmernou hodnotám v Q-Tabuľke. Na začiatku, keď sú hodnoty Q-Tabuľky rovnaké, to zodpovedá náhodnému výberu, ale keď sa naučíme viac o našom prostredí, budeme pravdepodobnejšie nasledovať optimálnu trasu, pričom občas dovolíme agentovi vybrať nepreskúmanú cestu. + +## Implementácia v Pythone + +Teraz sme pripravení implementovať učiaci algoritmus. Predtým však potrebujeme funkciu, ktorá prevedie ľubovoľné čísla v Q-Tabuľke na vektor pravdepodobností pre zodpovedajúce akcie. + +1. Vytvorte funkciu `probs()`: + + ```python + def probs(v,eps=1e-4): + v = v-v.min()+eps + v = v/v.sum() + return v + ``` + + Pridávame niekoľko `eps` do pôvodného vektora, aby sme sa vyhli deleniu nulou na začiatku, keď sú všetky komponenty vektora rovnaké. + +Spustite učiaci algoritmus počas 5000 experimentov, tiež nazývaných **epochy**: (kódový blok 8) +```python + for epoch in range(5000): + + # Vyberte počiatočný bod + m.random_start() + + # Začnite cestovanie + 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) # Povoliť hráčovi pohybovať sa mimo dosky, čo ukončí epizódu + 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 vykonaní tohto algoritmu by mala byť Q-Tabuľka aktualizovaná hodnotami, ktoré definujú atraktivitu rôznych akcií v každom kroku. Môžeme sa pokúsiť vizualizovať Q-Tabuľku vykreslením vektora v každej bunke, ktorý ukáže požadovaný smer pohybu. Pre jednoduchosť kreslíme namiesto šípky malý kruh. + + ## Kontrola politiky -Keďže Q-Tabuľka uvádza „atraktivitu“ každej akcie v každom stave, je pomerne jednoduché použiť ju na definovanie efektívnej navigácie v našom svete. V najjednoduchšom prípade môžeme vybrať akciu zodpovedajúcu najvyššej hodnote v Q-Tabuľke: (kódový blok 9) +Keďže Q-Tabuľka obsahuje „atraktivitu“ každej akcie v každom stave, je veľmi jednoduché ju použiť na definovanie efektívnej navigácie v našom svete. V najjednoduchšom prípade môžeme vybrať akciu zodpovedajúcu najvyššej hodnote Q-Tabuľky: (kódový blok 9) ```python def qpolicy_strict(m): @@ -198,17 +274,18 @@ def qpolicy_strict(m): walk(m,qpolicy_strict) ``` -> Ak vyskúšate vyššie uvedený kód niekoľkokrát, môžete si všimnúť, že sa niekedy „zasekne“ a musíte stlačiť tlačidlo STOP v notebooku, aby ste ho prerušili. K tomu dochádza, pretože môžu existovať situácie, keď si dva stavy „ukazujú“ navzájom z hľadiska optimálnej hodnoty Q, v takom prípade agent skončí pohybom medzi týmito stavmi donekonečna. + +> Ak vyskúšate vyššie uvedený kód niekoľkokrát, môžete si všimnúť, že sa občas "zavesí" a je potrebné stlačiť tlačidlo STOP v poznámkovom bloku, aby sa preruší. To sa deje, pretože môžu nastať situácie, keď dva stavy „ukazujú“ na seba z hľadiska optimálnej hodnoty Q, v takom prípade agent skončí pohybom medzi týmito stavmi nekonečne dlho. ## 🚀Výzva -> **Úloha 1:** Upraviť funkciu `walk` tak, aby obmedzila maximálnu dĺžku cesty na určitý počet krokov (napríklad 100) a pozorovať, ako vyššie uvedený kód občas vráti túto hodnotu. +> **Úloha 1:** Upravte funkciu `walk` tak, aby ohraničila maximálnu dĺžku cesty určitým počtom krokov (napríklad 100) a sledujte, ako sa kód vyššie občas vráti k tejto hodnote. -> **Úloha 2:** Upraviť funkciu `walk` tak, aby sa nevracala na miesta, kde už predtým bola. Tým sa zabráni tomu, aby sa `walk` opakoval, avšak agent sa stále môže ocitnúť „uväznený“ na mieste, z ktorého sa nedokáže dostať. +> **Úloha 2:** Upravte funkciu `walk` tak, aby sa nevracala na miesta, kde už predtým bola. Tým sa zabráni nekonečnému slučkovaniu funkcie `walk`, aj keď agent môže byť stále „uväznený“ na mieste, z ktorého sa nedokáže dostať. ## Navigácia -Lepšia navigačná politika by bola tá, ktorú sme použili počas tréningu, ktorá kombinuje využívanie a skúmanie. V tejto politike vyberieme každú akciu s určitou pravdepodobnosťou, úmernou hodnotám v Q-Tabuľke. Táto stratégia môže stále viesť k tomu, že sa agent vráti na pozíciu, ktorú už preskúmal, ale, ako môžete vidieť z nižšie uvedeného kódu, výsledkom je veľmi krátka priemerná cesta k požadovanému miestu (nezabudnite, že `print_statistics` spúšťa simuláciu 100-krát): (kódový blok 10) +Lepšia navigačná stratégia by bola tá, ktorú sme používali počas tréningu, ktorá kombinuje využitie a skúmanie. V tejto stratégii vyberieme každú akciu s určitým pravdepodobnostným pomerom k hodnotám v Q-tabulke. Táto stratégia môže stále viesť k tomu, že sa agent vráti na pozíciu, ktorú už preskúmal, ale ako vidíte z kódu nižšie, vedie k veľmi krátkej priemernej trase k želanej lokalite (nezabudnite, že `print_statistics` spúšťa simuláciu 100-krát): (kód blok 10) ```python def qpolicy(m): @@ -220,21 +297,23 @@ def qpolicy(m): print_statistics(qpolicy) ``` -Po spustení tohto kódu by ste mali získať oveľa kratšiu priemernú dĺžku cesty ako predtým, v rozmedzí 3-6. +Po spustení tohto kódu by ste mali dostať oveľa kratšiu priemernú dĺžku cesty ako predtým, v rozsahu 3-6. + +## Skúmanie učenia sa procesu -## Skúmanie procesu učenia +Ako sme už spomenuli, učenie je rovnováha medzi skúmaním a využitím získaných poznatkov o štruktúre problému. Videli sme, že výsledky učenia (schopnosť pomôcť agentovi nájsť krátku cestu k cieľu) sa zlepšili, ale je tiež zaujímavé sledovať, ako sa správa priemerná dĺžka cesty počas procesu učenia: -Ako sme spomenuli, proces učenia je rovnováhou medzi skúmaním a využívaním získaných znalostí o štruktúre problémového priestoru. Videli sme, že výsledky učenia (schopnosť pomôcť agentovi nájsť krátku cestu k cieľu) sa zlepšili, ale je tiež zaujímavé pozorovať, ako sa priemerná dĺžka cesty správa počas procesu učenia: + -## Zhrnutie poznatkov: +Učenie možno zhrnúť takto: -- **Priemerná dĺžka cesty sa zvyšuje**. Na začiatku vidíme, že priemerná dĺžka cesty sa zvyšuje. Pravdepodobne je to spôsobené tým, že keď o prostredí nič nevieme, máme tendenciu uviaznuť v zlých stavoch, ako je voda alebo vlk. Keď sa dozvieme viac a začneme tieto znalosti využívať, môžeme prostredie skúmať dlhšie, ale stále nevieme presne, kde sú jablká. +- **Priemerná dĺžka cesty sa zvyšuje**. Čo tu vidíme, je, že spočiatku sa priemerná dĺžka cesty zvyšuje. Pravdepodobne je to spôsobené tým, že keď o prostredí nič nevieme, je pravdepodobné, že skončíme uviaznutí v zlých stavoch, vode alebo u vlka. Keď sa naučíme viac a začneme tieto poznatky využívať, môžeme prostredie skúmať dlhšie, ale stále ešte presne nevieme, kde sú jablká. -- **Dĺžka cesty sa znižuje, ako sa učíme viac**. Keď sa naučíme dosť, agentovi sa ľahšie dosahuje cieľ a dĺžka cesty sa začne znižovať. Stále však skúmame nové možnosti, takže sa často odkloníme od najlepšej cesty a skúmame nové možnosti, čo predlžuje cestu nad optimálnu hodnotu. +- **Dĺžka cesty sa znižuje, ako sa učíme viac**. Keď sa naučíme dosť, je pre agenta ľahšie dosiahnuť cieľ a dĺžka cesty začne klesať. Napriek tomu sme stále otvorení skúmaniu, takže sa často odkloníme od najlepšej cesty a preskúmavame nové možnosti, čím sa cesta predlžuje viac ako optimálne. -- **Dĺžka sa náhle zvýši**. Na grafe tiež vidíme, že v určitom bode sa dĺžka náhle zvýšila. To poukazuje na stochastickú povahu procesu a na to, že môžeme v určitom bode „pokaziť“ koeficienty Q-Tabuľky tým, že ich prepíšeme novými hodnotami. Ideálne by sa tomu malo predísť znížením rýchlosti učenia (napríklad ku koncu tréningu upravujeme hodnoty Q-Tabuľky len o malú hodnotu). +- **Dĺžka prudko stúpa**. Čo tiež pozorujeme na tomto grafe je, že v určitom bode dĺžka prudko stúpla. To naznačuje stochastickú povahu procesu a že môžeme v určitom momente „pokaziť“ koeficienty v Q-tabulke prepísaním novými hodnotami. Toto by sa ideálne malo minimalizovať znížením miery učenia (napríklad ku koncu tréningu upravujeme hodnoty v Q-tabulke len o malú hodnotu). -Celkovo je dôležité pamätať na to, že úspech a kvalita procesu učenia významne závisí od parametrov, ako je rýchlosť učenia, pokles rýchlosti učenia a diskontný faktor. Tieto sa často nazývajú **hyperparametre**, aby sa odlíšili od **parametrov**, ktoré optimalizujeme počas tréningu (napríklad koeficienty Q-Tabuľky). Proces hľadania najlepších hodnôt hyperparametrov sa nazýva **optimalizácia hyperparametrov** a zaslúži si samostatnú tému. +Celkovo je dôležité pamätať si, že úspech a kvalita procesu učenia závisia významne od parametrov, ako je miera učenia, zánik miery učenia a diskontný faktor. Tieto sa často nazývajú **hyperparametre**, aby ich odlíšili od **parametrov**, ktoré optimalizujeme počas tréningu (napríklad koeficienty v Q-tabulke). Proces hľadania najlepších hodnôt hyperparametrov sa nazýva **optimalizácia hyperparametrov** a vyžaduje si samostatnú tému. ## [Kvíz po prednáške](https://ff-quizzes.netlify.app/en/ml/) @@ -243,5 +322,7 @@ Celkovo je dôležité pamätať na to, že úspech a kvalita procesu učenia v --- -**Upozornenie**: -Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Hoci sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho pôvodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nie sme zodpovední za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file + +**Vyhlásenie o zodpovednosti**: +Tento dokument bol preložený pomocou AI prekladateľskej služby [Co-op Translator](https://github.com/Azure/co-op-translator). Hoci sa snažíme o presnosť, vezmite prosím na vedomie, že automatické preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho natívnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nie sme zodpovední za žiadne nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. + \ No newline at end of file diff --git a/translations/sk/8-Reinforcement/2-Gym/README.md b/translations/sk/8-Reinforcement/2-Gym/README.md index 660949c8f..587a35a08 100644 --- a/translations/sk/8-Reinforcement/2-Gym/README.md +++ b/translations/sk/8-Reinforcement/2-Gym/README.md @@ -1,14 +1,34 @@ +# CartPole korčuľovanie + +Problém, ktorý sme riešili v predchádzajúcej lekcii, sa môže javiť ako odľahčený problém, ktorý nie je naozaj použiteľný v reálnych situáciách. To však nie je pravda, pretože mnohé problémy zo skutočného sveta zdieľajú tento scenár - vrátane hrania šachu alebo Go. Sú podobné, pretože máme šachovnicu s danými pravidlami a **diskrétny stav**. + +## [Prednáškový kvíz](https://ff-quizzes.netlify.app/en/ml/) + +## Úvod + +V tejto lekcii aplikujeme rovnaké princípy Q-Learningu na problém s **kontinuálnym stavom**, teda stavom, ktorý je určený jedným alebo viacerými reálnymi číslami. Budeme riešiť nasledujúci problém: + +> **Problém**: Ak chce Peter uniknúť vlkovi, musí sa vedieť pohybovať rýchlejšie. Ukážeme si, ako sa Peter môže naučiť korčuľovať, konkrétne ako udržať rovnováhu, pomocou Q-Learningu. + +![Veľký únik!](../../../../translated_images/sk/escape.18862db9930337e3.webp) + +> Peter a jeho priatelia sú kreatívni, aby unikli vlkovi! Obrázok od [Jen Looper](https://twitter.com/jenlooper) + +Použijeme zjednodušenú verziu balančného problému známeho ako **CartPole**. V svete cartpole máme horizontálny posuvník, ktorý sa môže pohybovať doľava alebo doprava, a cieľom je vyvážiť vertikálnu tyč na vrchu posuvníka. + +cartpole + ## Predpoklady -V tejto lekcii budeme používať knižnicu **OpenAI Gym** na simuláciu rôznych **prostredí**. Kód z tejto lekcie môžete spustiť lokálne (napr. vo Visual Studio Code), v takom prípade sa simulácia otvorí v novom okne. Pri spúšťaní kódu online môže byť potrebné upraviť kód, ako je popísané [tu](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7). +V tejto lekcii použijeme knižnicu s názvom **OpenAI Gym** na simuláciu rôznych **prostredí**. Môžete spustiť kód tejto lekcie lokálne (napr. z Visual Studio Code), v takom prípade sa simulácia otvorí v novom okne. Pri spúšťaní kódu online možno bude potrebné urobiť niektoré úpravy kódu, ako je popísané [tu](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7). ## OpenAI Gym -V predchádzajúcej lekcii boli pravidlá hry a stav definované triedou `Board`, ktorú sme si sami vytvorili. Tu použijeme špeciálne **simulačné prostredie**, ktoré bude simulovať fyziku za balansujúcou tyčou. Jedným z najpopulárnejších simulačných prostredí na trénovanie algoritmov posilneného učenia je [Gym](https://gym.openai.com/), ktorý spravuje [OpenAI](https://openai.com/). Pomocou Gym môžeme vytvárať rôzne **prostredia**, od simulácie CartPole až po hry Atari. +V predchádzajúcej lekcii nám pravidlá hry a stav definovala trieda `Board`, ktorú sme si definovali sami. Tu použijeme špeciálne **simulačné prostredie**, ktoré bude simulovať fyziku za balančnou tyčou. Jedným z najpopulárnejších simulačných prostredí na trénovanie algoritmov posilňovaného učenia je [Gym](https://gym.openai.com/), ktorý spravuje [OpenAI](https://openai.com/). Použitím tohto gym môžeme vytvárať rôzne **prostredia** od simulácie cartpole až po Atari hry. -> **Poznámka**: Ďalšie prostredia dostupné v OpenAI Gym si môžete pozrieť [tu](https://gym.openai.com/envs/#classic_control). +> **Poznámka**: Ďalšie dostupné prostredia OpenAI Gym môžete vidieť [tu](https://gym.openai.com/envs/#classic_control). -Najskôr nainštalujme Gym a importujme potrebné knižnice (kódový blok 1): +Najskôr si nainštalujme gym a naimportujme potrebné knižnice (kódový blok 1): ```python import sys @@ -20,13 +40,13 @@ import numpy as np import random ``` -## Cvičenie - inicializácia prostredia CartPole +## Cvičenie – inicializácia prostredia cartpole -Aby sme mohli pracovať s problémom balansovania CartPole, musíme inicializovať príslušné prostredie. Každé prostredie je spojené s: +Na prácu s problémom balančnej tyče musíme inicializovať zodpovedajúce prostredie. Každé prostredie je spojené s: -- **Priestorom pozorovaní**, ktorý definuje štruktúru informácií, ktoré dostávame z prostredia. Pri probléme CartPole dostávame polohu tyče, rýchlosť a ďalšie hodnoty. +- **Prieskumný priestor** (Observation space), ktorý definuje štruktúru informácií, ktoré dostávame z prostredia. Pre cartpole problém dostávame polohu tyče, rýchlosť a niektoré ďalšie hodnoty. -- **Priestorom akcií**, ktorý definuje možné akcie. V našom prípade je priestor akcií diskrétny a pozostáva z dvoch akcií - **vľavo** a **vpravo**. (kódový blok 2) +- **Akčný priestor** (Action space), ktorý definuje možné akcie. V našom prípade je akčný priestor diskrétny a skladá sa z dvoch akcií – **doľava** a **doprava**. (kódový blok 2) 1. Na inicializáciu zadajte nasledujúci kód: @@ -37,11 +57,11 @@ Aby sme mohli pracovať s problémom balansovania CartPole, musíme inicializova print(env.action_space.sample()) ``` -Aby sme videli, ako prostredie funguje, spustime krátku simuláciu na 100 krokov. Pri každom kroku poskytneme jednu z akcií, ktoré sa majú vykonať - v tejto simulácii náhodne vyberáme akciu z `action_space`. +Aby sme videli, ako prostredie funguje, spustime krátku simuláciu na 100 krokov. Na každom kroku vykonáme jednu z akcií – v tejto simulácii náhodne vyberieme akciu z `action_space`. -1. Spustite nasledujúci kód a pozrite sa, čo sa stane. +1. Spustite kód nižšie a pozrite sa, čo z toho vyjde. - ✅ Pamätajte, že je preferované spustiť tento kód na lokálnej inštalácii Pythonu! (kódový blok 3) + ✅ Pamätajte, že je vhodnejšie spustiť tento kód na lokálnej inštalácii Pythonu! (kódový blok 3) ```python env.reset() @@ -52,11 +72,11 @@ Aby sme videli, ako prostredie funguje, spustime krátku simuláciu na 100 kroko env.close() ``` - Mali by ste vidieť niečo podobné ako na tomto obrázku: + Mali by ste vidieť niečo podobné tomuto obrázku: - ![nebalansujúci CartPole](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) + ![cartpole bez rovnováhy](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) -1. Počas simulácie musíme získavať pozorovania, aby sme sa rozhodli, ako konať. V skutočnosti funkcia `step` vracia aktuálne pozorovania, funkciu odmeny a príznak `done`, ktorý indikuje, či má zmysel pokračovať v simulácii alebo nie: (kódový blok 4) +1. Počas simulácie potrebujeme získať pozorovania, aby sme sa rozhodli, ako konať. Funkcia `step` vráti aktuálne pozorovanie, odmenu a príznak `done`, ktorý označuje, či má zmysel v simulácii pokračovať alebo nie: (kódový blok 4) ```python env.reset() @@ -69,7 +89,7 @@ Aby sme videli, ako prostredie funguje, spustime krátku simuláciu na 100 kroko env.close() ``` - V notebooku by ste mali vidieť niečo podobné ako toto: + Výstup v notebooku bude vyzerať nejako takto: ```text [ 0.03403272 -0.24301182 0.02669811 0.2895829 ] -> 1.0 @@ -82,43 +102,43 @@ Aby sme videli, ako prostredie funguje, spustime krátku simuláciu na 100 kroko [ 0.17617249 0.35602306 -0.21873684 -0.90998894] -> 1.0 ``` - Vektor pozorovaní, ktorý sa vracia pri každom kroku simulácie, obsahuje nasledujúce hodnoty: + Pozorovací vektor, ktorý sa vracia na každom kroku simulácie, obsahuje nasledujúce hodnoty: - Poloha vozíka - Rýchlosť vozíka - Uhol tyče - Rýchlosť rotácie tyče -1. Získajte minimálnu a maximálnu hodnotu týchto čísel: (kódový blok 5) +1. Zistite minimum a maximum týchto hodnôt: (kódový blok 5) ```python print(env.observation_space.low) print(env.observation_space.high) ``` - Môžete si tiež všimnúť, že hodnota odmeny pri každom kroku simulácie je vždy 1. Je to preto, že naším cieľom je prežiť čo najdlhšie, t. j. udržať tyč v primerane vertikálnej polohe čo najdlhšie. + Tiež si môžete všimnúť, že hodnota odmeny pri každom kroku simulácie je vždy 1. Je to preto, že naším cieľom je prežiť čo najdlhšie, teda udržať tyč v primerane vertikálnej polohe čo najdlhšie. - ✅ V skutočnosti sa simulácia CartPole považuje za vyriešenú, ak sa nám podarí dosiahnuť priemernú odmenu 195 počas 100 po sebe nasledujúcich pokusov. + ✅ Simulácia CartPole je považovaná za vyriešenú, ak dosiahneme priemernú odmenu 195 za 100 po sebe nasledujúcich pokusov. ## Diskretizácia stavu -Pri Q-Learningu musíme vytvoriť Q-Tabuľku, ktorá definuje, čo robiť v každom stave. Aby sme to mohli urobiť, potrebujeme, aby bol stav **diskrétny**, presnejšie, aby obsahoval konečný počet diskrétnych hodnôt. Preto musíme nejako **diskretizovať** naše pozorovania, mapovať ich na konečnú množinu stavov. +V Q-Learningu potrebujeme vytvoriť Q-tabulu, ktorá definuje, čo robiť v každom stave. Aby sme to mohli urobiť, potrebujeme, aby bol stav **diskrétny**, presnejšie, aby obsahoval konečný počet diskrétnych hodnôt. Preto musíme nejako **diskretizovať** naše pozorovania a namapovať ich na konečnú množinu stavov. -Existuje niekoľko spôsobov, ako to urobiť: +Existuje niekoľko spôsobov, ako to môžeme robiť: -- **Rozdelenie na intervaly**. Ak poznáme interval určitej hodnoty, môžeme tento interval rozdeliť na niekoľko **intervalov** a potom nahradiť hodnotu číslom intervalu, do ktorého patrí. To sa dá urobiť pomocou metódy numpy [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html). V tomto prípade budeme presne vedieť veľkosť stavu, pretože bude závisieť od počtu intervalov, ktoré vyberieme na digitalizáciu. +- **Rozdeliť do intervalov (bins)**. Ak poznáme interval určitej hodnoty, môžeme tento interval rozdeliť na niekoľko **intervalov (bins)** a následne hodnotu nahradiť číslom intervalu, do ktorého patrí. To sa dá urobiť pomocou numpy metódy [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html). V tomto prípade presne poznáme veľkosť stavu, pretože bude závisieť od počtu intervalov, ktoré vyberieme pre digitalizáciu. + +✅ Môžeme použiť lineárnu interpoláciu na prenesenie hodnôt do nejakého konečného intervalu (napr. od -20 do 20) a potom čísla previesť na celé čísla zaokrúhlením. Toto nám dá trochu menej kontroly nad veľkosťou stavu, najmä ak nepoznáme presné rozsahy vstupných hodnôt. Napríklad v našom prípade 2 zo 4 hodnôt nemajú horné alebo dolné hranice, čo by mohlo viesť k nekonečnému počtu stavov. -✅ Môžeme použiť lineárnu interpoláciu na privedenie hodnôt do určitého konečného intervalu (napríklad od -20 do 20) a potom previesť čísla na celé čísla zaokrúhlením. To nám dáva o niečo menšiu kontrolu nad veľkosťou stavu, najmä ak nepoznáme presné rozsahy vstupných hodnôt. Napríklad v našom prípade 2 zo 4 hodnôt nemajú horné/dolné hranice svojich hodnôt, čo môže viesť k nekonečnému počtu stavov. +V našom príklade použijeme druhý prístup. Ako si neskôr všimnete, napriek nedefinovaným horným a dolným hraniciam tieto hodnoty zriedkavo nadobúdajú hodnoty mimo určitých konečných intervalov, takže stavy s extrémnymi hodnotami budú veľmi zriedkavé. -V našom príklade použijeme druhý prístup. Ako si neskôr všimnete, napriek nedefinovaným horným/dolným hraniciam tieto hodnoty zriedka nadobúdajú hodnoty mimo určitých konečných intervalov, takže stavy s extrémnymi hodnotami budú veľmi zriedkavé. - -1. Tu je funkcia, ktorá vezme pozorovanie z nášho modelu a vytvorí z neho štvoricu 4 celých čísel: (kódový blok 6) +1. Tu je funkcia, ktorá vezme pozorovanie nášho modelu a vráti 4-ticu celých čísel: (kódový blok 6) ```python def discretize(x): return tuple((x/np.array([0.25, 0.25, 0.01, 0.1])).astype(np.int)) ``` -1. Preskúmajme aj ďalšiu metódu diskretizácie pomocou intervalov: (kódový blok 7) +1. Preskúmajme aj druhý spôsob diskretizácie pomocou intervalov: (kódový blok 7) ```python def create_bins(i,num): @@ -126,17 +146,17 @@ V našom príklade použijeme druhý prístup. Ako si neskôr všimnete, napriek 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)] # intervaly hodnôt pre každý parameter + nbins = [20,20,10,10] # počet priehradiek pre každý 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. Teraz spustime krátku simuláciu a pozorujme tieto diskrétne hodnoty prostredia. Skúste použiť `discretize` aj `discretize_bins` a zistite, či je medzi nimi rozdiel. +1. Teraz spustime krátku simuláciu a pozorujme tieto diskrétne hodnoty prostredia. Kľudne vyskúšajte obe funkcie `discretize` a `discretize_bins` a uvidíte, či je rozdiel. - ✅ `discretize_bins` vracia číslo intervalu, ktoré je 0-based. Takže pre hodnoty vstupnej premennej okolo 0 vracia číslo zo stredu intervalu (10). Pri `discretize` sme sa nestarali o rozsah výstupných hodnôt, umožnili sme im byť záporné, takže hodnoty stavu nie sú posunuté a 0 zodpovedá 0. (kódový blok 8) + ✅ `discretize_bins` vracia číslo intervalu, ktoré je indexované od 0. Preto pre hodnoty vstupnej premennej okolo 0 vracia číslo zo stredu intervalu (10). Vo `discretize` sme nerozlišovali rozsah výstupných hodnôt, ktoré mohli byť aj záporné, takže hodnoty stavu nie sú posunuté a 0 zodpovedá 0. (kódový blok 8) ```python env.reset() @@ -145,20 +165,20 @@ V našom príklade použijeme druhý prístup. Ako si neskôr všimnete, napriek while not done: #env.render() obs, rew, done, info = env.step(env.action_space.sample()) - #print(discretize_bins(obs)) + #print(diskretizované_segmenty(obs)) print(discretize(obs)) env.close() ``` - ✅ Odkomentujte riadok začínajúci `env.render`, ak chcete vidieť, ako sa prostredie vykonáva. Inak ho môžete spustiť na pozadí, čo je rýchlejšie. Tento "neviditeľný" spôsob vykonávania použijeme počas procesu Q-Learningu. + ✅ Odinštalujte riadok začínajúci `env.render`, ak chcete vidieť, ako prostredie vykonáva simuláciu. Inak môžete simuláciu nechať bežať na pozadí, čo je rýchlejšie. Túto „neviditeľnú“ simuláciu použijeme počas Q-Learning procesu. -## Štruktúra Q-Tabuľky +## Štruktúra Q-tabule -V našej predchádzajúcej lekcii bol stav jednoduchou dvojicou čísel od 0 do 8, a preto bolo pohodlné reprezentovať Q-Tabuľku pomocou numpy tenzora s tvarom 8x8x2. Ak použijeme diskretizáciu pomocou intervalov, veľkosť nášho stavového vektora je tiež známa, takže môžeme použiť rovnaký prístup a reprezentovať stav pomocou poľa s tvarom 20x20x10x10x2 (tu 2 je dimenzia priestoru akcií a prvé dimenzie zodpovedajú počtu intervalov, ktoré sme vybrali na použitie pre každú z parametrov v priestore pozorovaní). +V predchádzajúcej lekcii bol stav jednoduchý pár čísel od 0 do 8, preto bolo pohodlné reprezentovať Q-tabulu ako numpy tenzor s tvarom 8x8x2. Ak použijeme diskretizáciu pomocou intervalov, veľkosť nášho vektorového stavu je tiež známa, takže môžeme použiť rovnaký prístup a reprezentovať stav ako pole tvaru 20x20x10x10x2 (tu je 2 rozmer akčného priestoru a prvé rozmery zodpovedajú počtu intervalov, ktoré sme vybrali pre každý parameter v pozorovacom priestore). -Avšak niekedy presné dimenzie priestoru pozorovaní nie sú známe. V prípade funkcie `discretize` si nikdy nemôžeme byť istí, že náš stav zostane v určitých hraniciach, pretože niektoré z pôvodných hodnôt nie sú ohraničené. Preto použijeme trochu iný prístup a reprezentujeme Q-Tabuľku pomocou slovníka. +Niekedy však presné rozmery pozorovacieho priestoru nie sú známe. V prípade funkcie `discretize` nemusíme byť istí, že náš stav zostane v určitých hraniciach, pretože niektoré z pôvodných hodnôt nie sú ohraničené. Preto použijeme trochu iný prístup a budeme reprezentovať Q-tabulu ako slovník. -1. Použite dvojicu *(state,action)* ako kľúč slovníka a hodnota by zodpovedala hodnote záznamu Q-Tabuľky. (kódový blok 9) +1. Použite dvojicu *(stav, akcia)* ako kľúč slovníka a hodnota bude zodpovedať hodnote položky v Q-tabuli. (kódový blok 9) ```python Q = {} @@ -168,38 +188,38 @@ Avšak niekedy presné dimenzie priestoru pozorovaní nie sú známe. V prípade return [Q.get((state,a),0) for a in actions] ``` - Tu tiež definujeme funkciu `qvalues()`, ktorá vracia zoznam hodnôt Q-Tabuľky pre daný stav, ktorý zodpovedá všetkým možným akciám. Ak záznam nie je prítomný v Q-Tabuľke, vrátime 0 ako predvolenú hodnotu. + Tu tiež definujeme funkciu `qvalues()`, ktorá vráti zoznam hodnôt Q-tabule pre daný stav zodpovedajúci všetkým možným akciám. Ak položka v Q-tabuli neexistuje, vrátime 0 ako predvolenú hodnotu. ## Začnime Q-Learning -Teraz sme pripravení naučiť Petra balansovať! +Teraz sme pripravení naučiť Petra, ako udržať rovnováhu! -1. Najskôr nastavme niektoré hyperparametre: (kódový blok 10) +1. Najprv nastavme niektoré hyperparametre: (kódový blok 10) ```python - # hyperparameters + # hyperparametre alpha = 0.3 gamma = 0.9 epsilon = 0.90 ``` - Tu `alpha` je **rýchlosť učenia**, ktorá určuje, do akej miery by sme mali upraviť aktuálne hodnoty Q-Tabuľky pri každom kroku. V predchádzajúcej lekcii sme začali s hodnotou 1 a potom sme znižovali `alpha` na nižšie hodnoty počas tréningu. V tomto príklade ju ponecháme konštantnú len pre jednoduchosť a môžete experimentovať s úpravou hodnôt `alpha` neskôr. + Tu je `alpha` **rýchlosť učenia**, ktorá definuje, do akej miery by sme mali upravovať aktuálne hodnoty Q-tabule na každom kroku. V predchádzajúcej lekcii sme začínali s hodnotou 1 a potom sme postupne znižovali `alpha` počas tréningu. V tomto príklade ju necháme konštantnú, pre jednoduchosť, a môžete si neskôr experimentovať s jej nastavením. - `gamma` je **faktor diskontovania**, ktorý ukazuje, do akej miery by sme mali uprednostniť budúcu odmenu pred aktuálnou odmenou. + `gamma` je **diskontný faktor**, ktorý ukazuje, do akej miery by sme mali uprednostňovať budúce odmeny oproti súčasným. - `epsilon` je **faktor prieskumu/využitia**, ktorý určuje, či by sme mali uprednostniť prieskum pred využitím alebo naopak. V našom algoritme v `epsilon` percentách prípadov vyberieme ďalšiu akciu podľa hodnôt Q-Tabuľky a v zostávajúcom počte prípadov vykonáme náhodnú akciu. To nám umožní preskúmať oblasti vyhľadávacieho priestoru, ktoré sme nikdy predtým nevideli. + `epsilon` je **faktor prieskumu/využitia**, ktorý určuje, či by sme mali uprednostniť prieskum pred využívaním alebo naopak. V našom algoritme v `epsilon` percentách prípadov vyberieme nasledujúcu akciu podľa hodnôt Q-tabule a v ostatných prípadoch vykonáme náhodnú akciu. To nám umožní preskúmať oblasti vyhľadávacieho priestoru, ktoré sme ešte nevideli. - ✅ Z hľadiska balansovania - výber náhodnej akcie (prieskum) by pôsobil ako náhodný úder nesprávnym smerom a tyč by sa musela naučiť, ako obnoviť rovnováhu z týchto "chýb". + ✅ Pokiaľ ide o balančné problémy - voľba náhodnej akcie (prieskum) by bola ako náhodný úder zlým smerom a tyč by sa musela naučiť, ako z týchto „chýb“ obnoviť rovnováhu. -### Zlepšenie algoritmu +### Vylepšiť algoritmus Môžeme tiež urobiť dve vylepšenia nášho algoritmu z predchádzajúcej lekcie: -- **Vypočítať priemernú kumulatívnu odmenu** počas niekoľkých simulácií. Pokrok budeme tlačiť každých 5000 iterácií a priemernú kumulatívnu odmenu vypočítame za toto obdobie. To znamená, že ak získame viac ako 195 bodov, môžeme problém považovať za vyriešený, dokonca s vyššou kvalitou, než je požadovaná. - -- **Vypočítať maximálny priemerný kumulatívny výsledok**, `Qmax`, a uložíme Q-Tabuľku zodpovedajúcu tomuto výsledku. Keď spustíte tréning, všimnete si, že niekedy priemerný kumulatívny výsledok začne klesať, a chceme si ponechať hodnoty Q-Tabuľky, ktoré zodpovedajú najlepšiemu modelu pozorovanému počas tréningu. +- **Vypočítať priemernú kumulatívnu odmenu** za určitý počet simulácií. Budeme tlačiť priebeh každých 5000 iterácií a za toto obdobie vyhladia kumulatívnu odmenu. To znamená, že ak dosiahneme viac ako 195 bodov, môžeme považovať problém za vyriešený, dokonca s ešte lepšou kvalitou. + +- **Vypočítať maximálny priemerný kumulatívny výsledok**, `Qmax`, a uložíme Q-tabulu príslušnú k tomuto výsledku. Pri tréningu často uvidíte, že priemerný kumulatívny výsledok začne klesať a my chceme uchovať hodnoty Q-tabule, ktoré zodpovedajú najlepšiemu modelu pozorovanému počas tréningu. -1. Zbierajte všetky kumulatívne odmeny pri každej simulácii do vektora `rewards` na ďalšie vykreslenie. (kódový blok 11) +1. Zhromaždite všetky kumulatívne odmeny pri každej simulácii do vektora `rewards` pre ďalšie znázornenie. (kódový blok 11) ```python def probs(v,eps=1e-4): @@ -214,15 +234,15 @@ Môžeme tiež urobiť dve vylepšenia nášho algoritmu z predchádzajúcej lek obs = env.reset() done = False cum_reward=0 - # == do the simulation == + # == vykonaj simuláciu == while not done: s = discretize(obs) if random.random() Qmax: @@ -242,23 +262,23 @@ Môžeme tiež urobiť dve vylepšenia nášho algoritmu z predchádzajúcej lek Čo si môžete všimnúť z týchto výsledkov: -- **Blízko nášho cieľa**. Sme veľmi blízko k dosiahnutiu cieľa získania 195 kumulatívnych odmien počas 100+ po sebe nasledujúcich simulácií, alebo sme ho možno už dosiahli! Aj keď získame menšie čísla, stále to nevieme, pretože priemerujeme cez 5000 pokusov a formálne kritérium vyžaduje iba 100 pokusov. +- **Blízko nášmu cieľu**. Sme veľmi blízko dosiahnutia ciela, ktorý je získať 195 kumulatívnych odmien za 100+ po sebe nasledujúcich spustení simulácie, alebo sme ho možno už dosiahli! Aj keď dostaneme menšie čísla, ešte to nevieme, pretože vyhladzujeme cez 5000 spustení a formálne je potrebných len 100. + +- **Odmena začína klesať**. Niekedy odmena začne klesať, čo znamená, že môžeme „zničiť“ už naučené hodnoty v Q-tabuli novými, ktoré situáciu zhoršujú. -- **Odmena začína klesať**. Niekedy odmena začne klesať, čo znamená, že môžeme "zničiť" už naučené hodnoty v Q-Tabuľke tými, ktoré situáciu zhoršujú. +Toto pozorovanie je jasnejšie viditeľné, keď si zobrazíme priebeh tréningu. -Toto pozorovanie je jasnejšie viditeľné, ak vykreslíme pokrok tréningu. +## Grafický priebeh tréningu -## Vykreslenie pokroku tréningu - -Počas tréningu sme zbierali hodnotu kumulatívnej odmeny pri každej iterácii do vektora `rewards`. Takto to vyzerá, keď to vykreslíme proti číslu iterácie: +Počas tréningu sme zhromaždili kumulatívnu odmenu v každej iterácii do vektora `rewards`. Takto to vyzerá, keď vyobrazíme túto hodnotu proti číslu iterácie: ```python plt.plot(rewards) ``` -![surový pokrok](../../../../8-Reinforcement/2-Gym/images/train_progress_raw.png) +![surový priebeh](../../../../translated_images/sk/train_progress_raw.2adfdf2daea09c59.webp) -Z tohto grafu nie je možné nič povedať, pretože kvôli povahe stochastického tréningového procesu sa dĺžka tréningových relácií veľmi líši. Aby sme tento graf urobili zrozumiteľnejším, môžeme vypočítať **bežiaci priemer** cez sériu experimentov, povedzme 100. To sa dá pohodlne urobiť pomocou `np.convolve`: (kódový blok 12) +Z tohto grafu nemožno nič vyčítať, pretože vzhľadom na povahu stochastického tréningového procesu sa dĺžka tréningových sekvencií veľmi líši. Aby to dávalo väčší zmysel, môžeme vypočítať **bežiaci priemer** cez sériu experimentov, povedzme 100. To sa dá pohodlne urobiť pomocou `np.convolve`: (kódový blok 12) ```python def running_average(x,window): @@ -267,21 +287,24 @@ def running_average(x,window): plt.plot(running_average(rewards,100)) ``` -![pokrok tréningu](../../../../8-Reinforcement/2-Gym/images/train_progress_runav.png) +![priebeh tréningu](../../../../translated_images/sk/train_progress_runav.c71694a8fa9ab359.webp) + +## Menenie hyperparametrov + +Pre stabilnejšie učenie je rozumné počas tréningu niektoré hyperparametre upravovať. Najmä: + +- **Pre rýchlosť učenia** `alpha` môžeme začať s hodnotami blízkymi 1 a postupne parameter znižovať. Postupom času budeme mať dobré pravdepodobnostné hodnoty v Q-tabuli a preto ich budeme upravovať len mierne, nie úplne meniť na nové hodnoty. -## Zmena hyperparametrov +- **Zvýšiť epsilon**. Môžeme postupne zvyšovať `epsilon`, aby sme menej preskúmavali a viac využívali. Pravdepodobne je rozumné začať s nízkou hodnotou `epsilon` a postupne ju zvyšovať takmer na 1. -Aby bolo učenie stabilnejšie, má zmysel upraviť niektoré z našich hyperparametrov počas tréningu. Konkrétne: +> **Úloha 1**: Hrajte sa s hodnotami hyperparametrov a skúste dosiahnuť vyššiu kumulatívnu odmenu. Dosahujete hodnoty nad 195? -- **Pre rýchlosť učenia**, `alpha`, môžeme začať s hodnotami blízkymi 1 a potom postupne znižovať parameter. S časom budeme získavať dobré pravdepodobnostné hodnoty v Q-Tabuľke, a preto by sme ich mali upravovať mierne, a nie úplne prepisovať novými hodnotami. -- **Zvýšiť epsilon**. Môžeme chcieť pomaly zvyšovať `epsilon`, aby sme menej skúmali a viac využívali. Pravdepodobne má zmysel začať s nižšou hodnotou `epsilon` a postupne ju zvýšiť takmer na 1. -> **Úloha 1**: Skúste experimentovať s hodnotami hyperparametrov a zistite, či dokážete dosiahnuť vyššiu kumulatívnu odmenu. Dosahujete viac ako 195? -> **Úloha 2**: Na formálne vyriešenie problému je potrebné dosiahnuť priemernú odmenu 195 počas 100 po sebe idúcich spustení. Merajte to počas tréningu a uistite sa, že ste problém formálne vyriešili! +> **Úloha 2**: Na formálne vyriešenie problému potrebujete dosiahnuť priemernú odmenu 195 za 100 po sebe nasledujúcich behov. Merajte to počas tréningu a uistite sa, že ste problém formálne vyriešili! ## Vidieť výsledok v akcii -Bolo by zaujímavé vidieť, ako sa vyškolený model správa. Spustime simuláciu a použime rovnakú stratégiu výberu akcií ako počas tréningu, pričom vzorkujeme podľa pravdepodobnostného rozdelenia v Q-Tabuľke: (blok kódu 13) +Bolo by zaujímavé skutočne vidieť, ako sa trénovaný model správa. Spustime simuláciu a použime rovnakú stratégiu výberu akcií ako počas tréningu, vzorkujúc podľa pravdepodobnostného rozdelenia v Q-tabulke: (kódový blok 13) ```python obs = env.reset() @@ -297,28 +320,30 @@ env.close() Mali by ste vidieť niečo takéto: -![balansujúci cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) +![a balancing cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) --- ## 🚀Výzva -> **Úloha 3**: Tu sme používali finálnu verziu Q-Tabuľky, ktorá nemusí byť najlepšia. Pamätajte, že sme uložili najlepšie fungujúcu Q-Tabuľku do premennej `Qbest`! Skúste ten istý príklad s najlepšie fungujúcou Q-Tabuľkou tak, že skopírujete `Qbest` do `Q` a sledujte, či si všimnete rozdiel. +> **Úloha 3**: Tu sme používali finálnu kópiu Q-tabulky, ktorá nemusí byť najlepšia. Pamätajte, že sme uložili najlepšie fungujúcu Q-tabulku do premennej `Qbest`! Skúste ten istý príklad s najlepšie fungujúcou Q-tabulkou tak, že prekopírujete `Qbest` do `Q` a uvidíte, či si všimnete rozdiel. -> **Úloha 4**: Tu sme nevyberali najlepšiu akciu v každom kroku, ale namiesto toho vzorkovali podľa zodpovedajúceho pravdepodobnostného rozdelenia. Malo by väčší zmysel vždy vybrať najlepšiu akciu s najvyššou hodnotou v Q-Tabuľke? To sa dá urobiť pomocou funkcie `np.argmax`, ktorá nájde číslo akcie zodpovedajúce najvyššej hodnote v Q-Tabuľke. Implementujte túto stratégiu a sledujte, či zlepší balansovanie. +> **Úloha 4**: Tu sme nevyberali najlepšiu akciu v každom kroku, ale vzorkovali sme podľa zodpovedajúceho pravdepodobnostného rozdelenia. Dávalo by väčší zmysel vždy zvoliť najlepšiu akciu, s najvyššou hodnotou Q-tabulky? Toto sa dá urobiť použitím funkcie `np.argmax` na zistenie čísla akcie zodpovedajúcej najvyššej hodnote v Q-tabulke. Implementujte túto stratégiu a uvidíte, či to vylepší balansovanie. -## [Kvíz po prednáške](https://ff-quizzes.netlify.app/en/ml/) +## [Post-lekčný kvíz](https://ff-quizzes.netlify.app/en/ml/) ## Zadanie -[Vytrénujte Mountain Car](assignment.md) +[Natrénuj Mountain Car](assignment.md) ## Záver -Teraz sme sa naučili, ako trénovať agentov na dosiahnutie dobrých výsledkov len tým, že im poskytneme funkciu odmeny, ktorá definuje požadovaný stav hry, a dáme im príležitosť inteligentne preskúmať priestor možností. Úspešne sme aplikovali algoritmus Q-Learning v prípadoch diskrétnych a spojitých prostredí, ale s diskrétnymi akciami. +Teraz sme sa naučili, ako trénovať agentov na dosahovanie dobrých výsledkov len tým, že im poskytneme odmeňovaciu funkciu, ktorá definuje požadovaný stav hry, a tým, že im umožníme inteligentne skúmať vyhľadávací priestor. Úspešne sme aplikovali algoritmus Q-learning v prípadoch diskrétnych a súvislých prostredí, ale s diskrétnymi akciami. -Je dôležité študovať aj situácie, kde je stav akcií spojitý a kde je priestor pozorovaní oveľa zložitejší, napríklad obrazovka z hry Atari. Pri takýchto problémoch často potrebujeme použiť výkonnejšie techniky strojového učenia, ako sú neurónové siete, aby sme dosiahli dobré výsledky. Tieto pokročilejšie témy sú predmetom nášho nadchádzajúceho pokročilého kurzu AI. +Je dôležité tiež študovať situácie, kde je stav akcie tiež súvislý, a keď je pozorovací priestor oveľa zložitejší, napríklad obraz z obrazovky hry Atari. V týchto problémoch často potrebujeme použiť výkonnejšie metódy strojového učenia, ako sú neurónové siete, aby sme dosiahli dobré výsledky. Témy s vyššou náročnosťou sú predmetom nášho pripravovaného pokročilejšieho kurzu AI. --- -**Upozornenie**: -Tento dokument bol preložený pomocou služby AI prekladu [Co-op Translator](https://github.com/Azure/co-op-translator). Hoci sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho pôvodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nie sme zodpovední za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file + +**Vyhlásenie o zodpovednosti**: +Tento dokument bol preložený pomocou AI prekladateľskej služby [Co-op Translator](https://github.com/Azure/co-op-translator). Hoci sa snažíme o presnosť, vezmite prosím na vedomie, že automatické preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho natívnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nie sme zodpovední za žiadne nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. + \ No newline at end of file diff --git a/translations/sk/9-Real-World/2-Debugging-ML-Models/README.md b/translations/sk/9-Real-World/2-Debugging-ML-Models/README.md index 15c07d2d9..56233a88a 100644 --- a/translations/sk/9-Real-World/2-Debugging-ML-Models/README.md +++ b/translations/sk/9-Real-World/2-Debugging-ML-Models/README.md @@ -1,155 +1,179 @@ -# Postscript: Ladenie modelov v strojovom učení pomocou komponentov zodpovedného AI dashboardu - -## [Kvíz pred prednáškou](https://ff-quizzes.netlify.app/en/ml/) +# Postscript: Ladenie modelov v strojovom učení pomocou komponentov panela Responsible AI + +## [Prednáškový kvíz](https://ff-quizzes.netlify.app/en/ml/) + ## Úvod -Strojové učenie ovplyvňuje naše každodenné životy. AI si nachádza cestu do niektorých z najdôležitejších systémov, ktoré ovplyvňujú nás ako jednotlivcov aj našu spoločnosť, od zdravotníctva, financií, vzdelávania až po zamestnanie. Napríklad systémy a modely sa podieľajú na každodenných rozhodovacích úlohách, ako sú diagnostiky v zdravotníctve alebo odhaľovanie podvodov. V dôsledku toho sú pokroky v AI spolu s zrýchleným prijímaním sprevádzané vyvíjajúcimi sa spoločenskými očakávaniami a rastúcou reguláciou. Neustále vidíme oblasti, kde systémy AI nesplňujú očakávania; odhaľujú nové výzvy; a vlády začínajú regulovať AI riešenia. Preto je dôležité, aby boli tieto modely analyzované s cieľom poskytovať spravodlivé, spoľahlivé, inkluzívne, transparentné a zodpovedné výsledky pre všetkých. +Strojové učenie ovplyvňuje náš každodenný život. AI sa dostáva do niektorých z najdôležitejších systémov, ktoré ovplyvňujú nás ako jednotlivcov, ako aj našu spoločnosť, od zdravotnej starostlivosti, financií, vzdelávania až po zamestnanosť. Napríklad systémy a modely sa podieľajú na každodenných rozhodovacích úlohách, ako sú zdravotné diagnózy alebo detekcia podvodov. Vývoj v oblasti AI spolu s rýchlym zavádzaním sú sprevádzané rastúcimi spoločenskými očakávaniami a reguláciou v reakcii na to. Neustále vidíme oblasti, kde systémy AI nespĺňajú očakávania; prinášajú nové výzvy; a vlády začínajú regulovať AI riešenia. Preto je dôležité tieto modely analyzovať s cieľom zabezpečiť spravodlivé, spoľahlivé, inkluzívne, transparentné a zodpovedné výsledky pre všetkých. -V tomto kurze sa pozrieme na praktické nástroje, ktoré môžu byť použité na posúdenie, či má model problémy so zodpovedným AI. Tradičné techniky ladenia strojového učenia majú tendenciu byť založené na kvantitatívnych výpočtoch, ako je agregovaná presnosť alebo priemerná strata chýb. Predstavte si, čo sa môže stať, keď údaje, ktoré používate na vytvorenie týchto modelov, postrádajú určité demografické skupiny, ako sú rasa, pohlavie, politické názory, náboženstvo, alebo neprimerane zastupujú takéto demografické skupiny. Čo ak je výstup modelu interpretovaný tak, že uprednostňuje určitú demografickú skupinu? To môže viesť k nadmernej alebo nedostatočnej reprezentácii týchto citlivých skupín, čo spôsobuje problémy so spravodlivosťou, inkluzívnosťou alebo spoľahlivosťou modelu. Ďalším faktorom je, že modely strojového učenia sú považované za čierne skrinky, čo sťažuje pochopenie a vysvetlenie toho, čo ovplyvňuje predikciu modelu. Toto sú výzvy, ktorým čelia dátoví vedci a vývojári AI, keď nemajú dostatočné nástroje na ladenie a posúdenie spravodlivosti alebo dôveryhodnosti modelu. +V tomto kurze sa pozrieme na praktické nástroje, ktoré možno použiť na posúdenie, či model má problémy zodpovedného AI. Tradičné techniky ladenia strojového učenia sú zvyčajne založené na kvantitatívnych výpočtoch, ako je súhrnná presnosť alebo priemerná chyba. Predstavte si, čo sa stane, keď dáta, ktoré používate na vytvorenie týchto modelov, obsahujú menej určitých demografických skupín, ako napríklad rasa, pohlavie, politické názory, náboženstvo, alebo ak takéto skupiny neprimerane zastupujú. Čo ak výstup modelu interpretujete tak, že uprednostňuje niektorú demografickú skupinu? To môže viesť k nadmernému alebo nedostatočnému zastúpeniu týchto citlivých skupín, čo spôsobí problémy so spravodlivosťou, inkluzivitou alebo spoľahlivosťou modelu. Ďalším faktorom je, že modely strojového učenia sa považujú za čierne skrinky, čo sťažuje pochopenie a vysvetlenie, čo ovplyvňuje predikciu modelu. Toto sú výzvy, ktorým čelia dátoví vedci a vývojári AI, keď nemajú dostatočné nástroje na ladenie a posúdenie spravodlivosti alebo spoľahlivosti modelu. -V tejto lekcii sa naučíte, ako ladiť svoje modely pomocou: +V tejto lekcii sa naučíte ladiť svoje modely pomocou: -- **Analýzy chýb**: identifikácia oblastí v distribúcii údajov, kde má model vysoké miery chýb. -- **Prehľadu modelu**: vykonanie porovnávacej analýzy medzi rôznymi kohortami údajov na odhalenie rozdielov vo výkonnostných metrikách modelu. -- **Analýzy údajov**: skúmanie, kde môže byť nadmerná alebo nedostatočná reprezentácia údajov, ktorá môže skresliť model tak, aby uprednostňoval jednu demografickú skupinu pred druhou. -- **Dôležitosti vlastností**: pochopenie, ktoré vlastnosti ovplyvňujú predikcie modelu na globálnej alebo lokálnej úrovni. +- **Analýza chýb**: identifikujte, kde v distribúcii dát má model vysoké miery chýb. +- **Prehľad modelu**: vykonajte porovnávaciu analýzu medzi rôznymi dátovými kohortami, aby ste odhalili rozdiely vo výkonových metrikách modelu. +- **Analýza dát**: preskúmajte, kde môže dôjsť k nadmernému alebo nedostatočnému zastúpeniu vašich dát, čo môže model skresliť v prospech jednej demografickej skupiny oproti druhej. +- **Dôležitosť atribútov**: pochopte, ktoré atribúty ovplyvňujú predikcie modelu na globálnej alebo lokálnej úrovni. ## Predpoklady -Ako predpoklad si prosím preštudujte [Nástroje zodpovedného AI pre vývojárov](https://www.microsoft.com/ai/ai-lab-responsible-ai-dashboard) +Ako predpoklad si prosím prejdite prehľad [Responsible AI tools for developers](https://www.microsoft.com/ai/ai-lab-responsible-ai-dashboard) -> ![Gif o nástrojoch zodpovedného AI](../../../../9-Real-World/2-Debugging-ML-Models/images/rai-overview.gif) +> ![Gif o nástrojoch Responsible AI](../../../../9-Real-World/2-Debugging-ML-Models/images/rai-overview.gif) ## Analýza chýb -Tradičné metriky výkonnosti modelu používané na meranie presnosti sú väčšinou výpočty založené na správnych vs nesprávnych predikciách. Napríklad určenie, že model je presný na 89 % s chybovou stratou 0,001, môže byť považované za dobrý výkon. Chyby však nie sú rovnomerne rozložené v podkladovom súbore údajov. Môžete dosiahnuť skóre presnosti modelu 89 %, ale zistiť, že existujú rôzne oblasti vašich údajov, v ktorých model zlyháva na 42 %. Dôsledky týchto vzorcov zlyhania s určitými skupinami údajov môžu viesť k problémom so spravodlivosťou alebo spoľahlivosťou. Je nevyhnutné pochopiť oblasti, kde model funguje dobre alebo nie. Oblasti údajov, kde má váš model vysoký počet nepresností, sa môžu ukázať ako dôležitá demografická skupina údajov. +Tradičné metriky výkonu modelu používané na meranie presnosti sú väčšinou založené na výpočtoch správnych a nesprávnych predikcií. Napríklad určiť, že model je presný 89 % času s chybou 0,001, možno považovať za dobrý výkon. Chyby však často nie sú rovnomerne rozložené v základnej dátovej sade. Môžete mať skóre presnosti modelu 89 %, ale zistiť, že existujú určité časti dát, kde model zlyháva 42 % času. Následky týchto vzorcov zlyhaní v určitých dátových skupinách môžu viesť k problémom so spravodlivosťou alebo spoľahlivosťou. Je nevyhnutné pochopiť oblasti, kde model dobre funguje alebo nie. Dátové oblasti s vysokým počtom nepresností v modeli môžu byť dôležitou dátovou demografickou skupinou. -![Analyzujte a ladte chyby modelu](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-error-distribution.png) +![Analyzujte a ladi chybné predikcie modelu](../../../../translated_images/sk/ea-error-distribution.117452e1177c1dd8.webp) -Komponent Analýza chýb na RAI dashboarde ilustruje, ako sú zlyhania modelu rozložené medzi rôznymi kohortami pomocou vizualizácie stromu. To je užitočné pri identifikácii vlastností alebo oblastí, kde je vysoká miera chýb vo vašom súbore údajov. Tým, že vidíte, odkiaľ pochádza väčšina nepresností modelu, môžete začať skúmať príčinu. Môžete tiež vytvárať kohorty údajov na vykonanie analýzy. Tieto kohorty údajov pomáhajú v procese ladenia určiť, prečo je výkon modelu dobrý v jednej kohorte, ale chybný v inej. +Komponent Analýza chýb na paneli RAI zobrazuje, ako je zlyhanie modelu rozložené naprieč rôznymi kohortami pomocou stromovej vizualizácie. To je užitočné pri identifikovaní atribútov alebo oblastí s vysokou chybovosťou vo vašich dátach. Keď vidíte, odkiaľ prichádza väčšina nepresností modelu, môžete začať vyšetrovací proces. Tiež môžete vytvárať dátové kohorty na vykonanie analýzy. Tieto dátové kohorty pomáhajú pri ladení, aby ste zistili, prečo model funguje dobre v jednej kohorte, ale zle v druhej. -![Analýza chýb](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-error-cohort.png) +![Analýza chýb](../../../../translated_images/sk/ea-error-cohort.6886209ea5d438c4.webp) -Vizualizačné indikátory na mape stromu pomáhajú rýchlejšie lokalizovať problémové oblasti. Napríklad tmavší odtieň červenej farby na uzle stromu znamená vyššiu mieru chýb. +Vizualizačné indikátory na stromovej mape pomáhajú rýchlejšie lokalizovať problémové oblasti. Napríklad, tmavší odtieň červenej farby uzla stromu znamená vyššiu mieru chýb. -Heatmapa je ďalšou vizualizačnou funkciou, ktorú môžu používatelia použiť na skúmanie miery chýb pomocou jednej alebo dvoch vlastností na nájdenie prispievateľa k chybám modelu v celom súbore údajov alebo kohortách. +Heatmapa je ďalšia vizualizačná funkcia, ktorú používatelia môžu použiť na vyšetrovanie miery chýb pomocou jedného alebo dvoch atribútov s cieľom nájsť príčinu chýb modelu naprieč celou dátovou sadou alebo kohortami. -![Heatmapa analýzy chýb](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-heatmap.png) +![Heatmapa analýzy chýb](../../../../translated_images/sk/ea-heatmap.8d27185e28cee383.webp) -Použite analýzu chýb, keď potrebujete: +Používajte analýzu chýb, keď potrebujete: -* Získať hlboké pochopenie toho, ako sú zlyhania modelu rozložené v súbore údajov a medzi viacerými vstupnými a vlastnostnými dimenziami. -* Rozložiť agregované metriky výkonnosti na automatické objavenie chybných kohort na informovanie o vašich cielených krokoch na zmiernenie problémov. +* Získať hlboké pochopenie, ako sú zlyhania modelu rozložené naprieč dátovou sadou a rôznymi vstupnými a atribútovými rozmermi. +* Rozčleniť súhrnné metriky výkonu na automatické odhalenie chybových kohort na informovanie o cieľových krokoch zmierňovania. ## Prehľad modelu -Hodnotenie výkonnosti modelu strojového učenia si vyžaduje získanie holistického pochopenia jeho správania. To možno dosiahnuť preskúmaním viacerých metrík, ako sú miera chýb, presnosť, recall, precision alebo MAE (Mean Absolute Error), na odhalenie rozdielov medzi výkonnostnými metrikami. Jedna metrika výkonnosti môže vyzerať skvele, ale nepresnosti môžu byť odhalené v inej metrike. Okrem toho porovnávanie metrík na odhalenie rozdielov v celom súbore údajov alebo kohortách pomáha objasniť, kde model funguje dobre alebo nie. To je obzvlášť dôležité pri sledovaní výkonu modelu medzi citlivými vs necitlivými vlastnosťami (napr. rasa pacienta, pohlavie alebo vek), aby sa odhalila potenciálna nespravodlivosť modelu. Napríklad zistenie, že model je viac chybný v kohorte, ktorá má citlivé vlastnosti, môže odhaliť potenciálnu nespravodlivosť modelu. +Hodnotenie výkonu modelu strojového učenia vyžaduje celostné pochopenie jeho správania. To možno dosiahnuť prezeraním viacerých metrík, ako sú miera chýb, presnosť, recall, presnosť alebo MAE (Mean Absolute Error), aby sa odhalili rozdiely medzi výkonovými metrikami. Jedna metrika môže vyzerať skvele, ale nepresnosti môže odhaliť iná metrika. Porovnávanie metrík naprieč celou dátovou sadou alebo kohortami pomáha objasniť, kde model funguje dobre alebo nie. Toto je obzvlášť dôležité pri sledovaní výkonu modelu medzi citlivými a necitlivými atribútmi (napríklad rasa pacienta, pohlavie alebo vek) na odhalenie potenciálnej nespravodlivosti modelu. Napríklad zistenie, že model je chybnejší v kohorte s citlivými atribútmi, môže odhaliť potenciálnu nespravodlivosť modelu. -Komponent Prehľad modelu na RAI dashboarde pomáha nielen pri analýze výkonnostných metrík reprezentácie údajov v kohorte, ale dáva používateľom možnosť porovnávať správanie modelu medzi rôznymi kohortami. +Komponent Prehľad modelu na paneli RAI pomáha nielen pri analýze výkonových metrík dátovej reprezentácie v kohorte, ale poskytuje používateľom možnosť porovnávať správanie modelu naprieč rôznymi kohortami. -![Datasetové kohorty - prehľad modelu na RAI dashboarde](../../../../9-Real-World/2-Debugging-ML-Models/images/model-overview-dataset-cohorts.png) +![Dátové kohorty - prehľad modelu na RAI paneli](../../../../translated_images/sk/model-overview-dataset-cohorts.dfa463fb527a35a0.webp) -Funkcia analýzy založená na vlastnostiach komponentu umožňuje používateľom zúžiť podskupiny údajov v rámci konkrétnej vlastnosti na identifikáciu anomálií na granulárnej úrovni. Napríklad dashboard má zabudovanú inteligenciu na automatické generovanie kohort pre používateľom vybranú vlastnosť (napr. *"time_in_hospital < 3"* alebo *"time_in_hospital >= 7"*). To umožňuje používateľovi izolovať konkrétnu vlastnosť z väčšej skupiny údajov, aby zistil, či je kľúčovým ovplyvňovateľom chybných výsledkov modelu. +Funkcia analýzy založenej na atribútoch komponentu umožňuje používateľom zúžiť dátové podskupiny v rámci konkrétneho atribútu na identifikáciu anomálií na detailnej úrovni. Napríklad panel má vstavanú inteligenciu na automatické generovanie kohort pre používateľom zvolený atribút (napr. *„time_in_hospital < 3“* alebo *„time_in_hospital >= 7“*). Toto umožňuje používateľovi izolovať konkrétny atribút zo širšej dátovej skupiny, aby zistil, či je kľúčovým faktorom ovplyvňujúcim chybné výstupy modelu. -![Kohorty vlastností - prehľad modelu na RAI dashboarde](../../../../9-Real-World/2-Debugging-ML-Models/images/model-overview-feature-cohorts.png) +![Kohorty atribútov - prehľad modelu na RAI paneli](../../../../translated_images/sk/model-overview-feature-cohorts.c5104d575ffd0c80.webp) -Komponent Prehľad modelu podporuje dve triedy metrík rozdielov: +Komponent Prehľad modelu podporuje dve triedy metrík disparity: -**Rozdiely vo výkonnosti modelu**: Tieto sady metrík vypočítavajú rozdiely (disparity) v hodnotách vybranej metriky výkonnosti medzi podskupinami údajov. Tu je niekoľko príkladov: +**Disparita vo výkone modelu**: Tieto metriky vypočítavajú rozdiel (disparitu) v hodnotách vybranej výkonovej metriky naprieč podsúbormi dát. Tu je niekoľko príkladov: -* Rozdiely v miere presnosti -* Rozdiely v miere chýb -* Rozdiely v precision -* Rozdiely v recall -* Rozdiely v Mean Absolute Error (MAE) +* Disparita v miere presnosti +* Disparita v miere chýb +* Disparita v presnosti (precision) +* Disparita v recall +* Disparita v priemernej absolútnej chybe (MAE) -**Rozdiely v miere výberu**: Táto metrika obsahuje rozdiely v miere výberu (priaznivá predikcia) medzi podskupinami. Príkladom je rozdiel v miere schvaľovania úverov. Miera výberu znamená podiel dátových bodov v každej triede klasifikovaných ako 1 (v binárnej klasifikácii) alebo distribúciu predikčných hodnôt (v regresii). +**Disparita v miere výberu**: Táto metrika obsahuje rozdiel v miere výberu (priaznivej predikcie) medzi podsúbormi. Príkladom je disparita v schvaľovaní úverov. Miera výberu znamená zlomok dátových bodov v každej triede klasifikovaných ako 1 (v binárnej klasifikácii) alebo rozloženie predikčných hodnôt (v regresii). -## Analýza údajov +## Analýza dát -> "Ak budete údaje mučiť dostatočne dlho, priznajú sa k čomukoľvek" - Ronald Coase +> „Ak budete dostatočne dlho mučiť dáta, priznajú všetko“ - Ronald Coase -Toto tvrdenie znie extrémne, ale je pravda, že údaje môžu byť manipulované na podporu akéhokoľvek záveru. Takáto manipulácia sa niekedy môže stať neúmyselne. Ako ľudia máme všetci predsudky a často je ťažké vedome vedieť, kedy zavádzame predsudky do údajov. Zaručenie spravodlivosti v AI a strojovom učení zostáva komplexnou výzvou. +Toto tvrdenie znie extrémne, ale je pravda, že dáta možno manipulovať tak, aby podporili akýkoľvek záver. Takáto manipulácia sa niekedy deje neúmyselne. Ako ľudia máme všetci predsudky a často je ťažké vedome si uvedomiť, kedy ich do dát vnášame. Zaručiť spravodlivosť v AI a strojovom učení zostáva zložitou výzvou. -Údaje sú veľkým slepým miestom pre tradičné metriky výkonnosti modelu. Môžete mať vysoké skóre presnosti, ale to nemusí vždy odrážať podkladové predsudky v údajoch, ktoré by mohli byť vo vašom súbore údajov. Napríklad, ak má súbor údajov zamestnancov 27 % žien na výkonných pozíciách v spoločnosti a 73 % mužov na rovnakej úrovni, model AI na inzerciu pracovných miest trénovaný na týchto údajoch môže cieliť prevažne na mužské publikum pre seniorné pracovné pozície. Táto nerovnováha v údajoch skreslila predikciu modelu tak, aby uprednostňovala jedno pohlavie. To odhaľuje problém spravodlivosti, kde je v AI modeli predsudok voči pohlaviu. +Dáta sú veľkým slepým miestom pre tradičné metriky výkonu modelu. Môžete mať vysoké skóre presnosti, ale to neodráža základnú dátovú zaujatost, ktorá môže byť vo vašej dataset. Napríklad, ak má dataset zamestnancov 27 % žien na vedúcich pozíciách a 73 % mužov na rovnakej úrovni, AI model na inzerovanie pracovných miest vycvičený na týchto dátach môže cieliť prevažne na mužskú časť publika pre vedúce pozície. Táto nevyváženosť v dátach skreslila predikciu modelu v prospech jedného pohlavia. Odhaľuje to problém spravodlivosti, kde v AI modeli existuje genderová zaujatost. -Komponent Analýza údajov na RAI dashboarde pomáha identifikovať oblasti, kde je nadmerná alebo nedostatočná reprezentácia v súbore údajov. Pomáha používateľom diagnostikovať príčinu chýb a problémov so spravodlivosťou, ktoré sú spôsobené nerovnováhou údajov alebo nedostatkom reprezentácie určitej skupiny údajov. To dáva používateľom možnosť vizualizovať súbory údajov na základe predikovaných a skutočných výsledkov, skupín chýb a konkrétnych vlastností. Niekedy objavenie nedostatočne zastúpenej skupiny údajov môže tiež odhaliť, že model sa neučí dobre, a preto má vysoké nepresnosti. Model s predsudkami v údajoch nie je len problémom spravodlivosti, ale ukazuje, že model nie je inkluzívny ani spoľahlivý. +Komponent Analýza dát na paneli RAI pomáha identifikovať oblasti, kde dochádza k nadmernému alebo nedostatočnému zastúpeniu v datasetoch. Pomáha používateľom diagnostikovať príčinu chýb a problémov so spravodlivosťou spôsobených nerovnováhou dát alebo nedostatočným zastúpením konkrétnej dátovej skupiny. Umožňuje používateľom vizualizovať dataset na základe predikovaných a skutočných výsledkov, skupín chýb a špecifických atribútov. Niekedy objavenie podzastúpenej dátovej skupiny môže tiež odhaliť, že model sa neučí dobre, a preto dochádza k veľkému počtu nepresností. Model, ktorý má dátovú zaujatost, nie je len otázkou spravodlivosti, ale tiež ukazuje, že model nie je inkluzívny ani spoľahlivý. -![Komponent Analýza údajov na RAI dashboarde](../../../../9-Real-World/2-Debugging-ML-Models/images/dataanalysis-cover.png) +![Komponent Analýza dát na RAI paneli](../../../../translated_images/sk/dataanalysis-cover.8d6d0683a70a5c1e.webp) -Použite analýzu údajov, keď potrebujete: -* Preskúmať štatistiky vášho súboru údajov výberom rôznych filtrov na rozdelenie údajov do rôznych dimenzií (známych ako kohorty). -* Pochopiť distribúciu vášho súboru údajov medzi rôznymi kohortami a skupinami vlastností. -* Určiť, či vaše zistenia týkajúce sa spravodlivosti, analýzy chýb a kauzality (odvodené z iných komponentov dashboardu) sú výsledkom distribúcie vášho súboru údajov. -* Rozhodnúť, v ktorých oblastiach zbierať viac údajov na zmiernenie chýb spôsobených problémami s reprezentáciou, šumom v označení, šumom vo vlastnostiach, predsudkami v označení a podobnými faktormi. +Používajte analýzu dát, keď potrebujete: -## Interpretácia modelu +* Preskúmať štatistiky datasetu výberom rôznych filtrov na rozdelenie dát do rôznych dimenzií (známych tiež ako kohorty). +* Pochopiť rozloženie datasetu medzi rôznymi kohortami a atribútovými skupinami. +* Určiť, či sú zistenia týkajúce sa spravodlivosti, analýzy chýb a kauzality (získané z iných komponentov panela) dôsledkom distribúcie datasetu. +* Rozhodnúť, v ktorých oblastiach je potrebné zozbierať viac dát na zmiernenie chýb vyplývajúcich z problémov so zastúpením, šumu v označeniach, šumu v atribútoch, zaujatosti v označeniach a podobných faktorov. -Modely strojového učenia majú tendenciu byť čiernymi skrinkami. Pochopenie, ktoré kľúčové vlastnosti údajov ovplyvňujú predikciu modelu, môže byť náročné. Je dôležité poskytnúť transparentnosť, prečo model robí určitú predikciu. Napríklad, ak AI systém predikuje, že diabetický pacient je ohrozený opätovným prijatím do nemocnice do 30 dní, mal by byť schopný poskytnúť podporné údaje, ktoré viedli k jeho predikcii. Mať podporné indikátory údajov prináša transparentnosť, ktorá pomáha klinikám alebo nemocniciam robiť dobre informované rozhodnutia. Okrem toho schopnosť vysvetliť, prečo model urobil predikciu pre konkrétneho pacienta, umožňuje zodpovednosť voči zdravotným reguláciám. Keď používate modely strojového učenia spôsobmi, ktoré ovplyvňujú životy ľudí, je nevyhnutné pochopiť a vysvetliť, čo ovplyvňuje správanie modelu. Vysvetliteľnosť a interpretácia modelu pomáha odpovedať na otázky v scenároch, ako sú: +## Interpretovateľnosť modelu -* Ladenie modelu: Prečo môj model urobil túto chybu? Ako môžem zlepšiť svoj model? -* Spolupráca človek-AI: Ako môžem pochopiť a dôverovať rozhodnutiam modelu? -* Regulácia: Spĺňa môj model právne požiadavky? +Modely strojového učenia majú tendenciu byť čiernymi skrinkami. Pochopenie, ktoré kľúčové atribúty dát ovplyvňujú predikciu modelu, môže byť náročné. Je dôležité zabezpečiť transparentnosť, prečo model vykonal určitú predikciu. Napríklad, ak AI systém predpovedá, že diabetický pacient je ohrozený opätovným prijatím do nemocnice do 30 dní, mal by byť schopný poskytnúť podporné dáta, ktoré viedli k tejto predikcii. Mať takéto dátové indikátory prináša transparentnosť, ktorá pomáha lekárom alebo nemocniciam robiť dobre informované rozhodnutia. Okrem toho, schopnosť vysvetliť, prečo model vykonal predikciu pre konkrétneho pacienta, umožňuje zodpovednosť v súlade so zdravotnými predpismi. Keď používate modely strojového učenia spôsobmi, ktoré ovplyvňujú životy ľudí, je kľúčové pochopiť a vysvetliť, čo ovplyvňuje správanie modelu. Vysvetliteľnosť a interpretovateľnosť modelu pomáha odpovedať na otázky v scenároch ako: -Komponent Dôležitosť vlastností na RAI dashboarde vám pomáha ladiť a získať komplexné pochopenie toho, ako model robí predikcie. Je to tiež užitočný nástroj pre profesionálov v oblasti strojového učenia a rozhodovacích činiteľov na vysvetlenie a ukázanie dôkazov vlastností ovplyvňujúcich správanie modelu pre reguláciu. Používatelia môžu ďalej skúmať globálne aj lokálne vysvetlenia na validáciu, ktoré vlastnosti ovplyvňujú predikciu modelu. Globálne vysvetlenia uvádzajú najdôležitejšie vlastnosti, ktoré ovplyvnili celkovú predikciu modelu. Lokálne vysvetlenia zobrazujú, ktoré vlastnosti viedli k predikcii modelu pre konkrétny prípad. Schopnosť hodnotiť lokálne vysvetlenia je tiež užitočná pri ladení alebo audite konkrétneho prípadu na lepšie pochopenie a interpretáciu, prečo model urobil presnú alebo nepresnú predikciu. +* Ladenie modelu: Prečo môj model urobil túto chybu? Ako môžem model zlepšiť? +* Spolupráca človek-AI: Ako môžem porozumieť a dôverovať rozhodnutiam modelu? +* Súlad s reguláciou: Spĺňa môj model zákonné požiadavky? -![Komponent Dôležitosť vlastností na RAI dashboarde](../../../../9-Real-World/2-Debugging-ML-Models/images/9-feature-importance.png) +Komponent Dôležitosť atribútov na paneli RAI vám pomáha ladiť a získať komplexné pochopenie, ako model robí predikcie. Je to tiež užitočný nástroj pre profesionálov v oblasti strojového učenia a rozhodovacích činiteľov na vysvetlenie a preukázanie vplyvu atribútov na správanie modelu v súlade s reguláciami. Ďalej môžu používatelia preskúmať globálne aj lokálne vysvetlenia, aby overili, ktoré atribúty ovplyvňujú predikciu modelu. Globálne vysvetlenia uvádzajú najdôležitejšie atribúty, ktoré ovplyvnili celkové predikcie modelu. Lokálne vysvetlenia zobrazujú, ktoré atribúty viedli k predikcii modelu v konkrétnom prípade. Schopnosť vyhodnocovať lokálne vysvetlenia je užitočná aj pri ladení alebo audite konkrétneho prípadu na lepšie pochopenie a interpretáciu, prečo model vykonal presnú alebo nepresnú predikciu. -* Globálne vysvetlenia: Napríklad, ktoré vlastnosti ovplyvňujú celkové správanie modelu na opätovné prijatie diabetických pacientov do nemocnice? -* Lokálne vysvetlenia: Napríklad, prečo bol diabetický pacient nad 60 rokov s predchádzajúcimi hospitalizáciami predikovaný na opätovné prijatie alebo neprijatie do nemocnice do 30 dní? +![Komponent Dôležitosť atribútov na RAI paneli](../../../../translated_images/sk/9-feature-importance.cd3193b4bba3fd4b.webp) -V procese ladenia výkonu modelu medzi rôznymi kohortami Dôležitosť vlastností ukazuje, aký vplyv má vlastnosť na kohorty. Pomáha odhaliť anomálie pri porovnávaní úrovne vplyvu vlastnosti na chybnú predikciu modelu. Komponent Dôležitosť vlastností môže ukázať, ktoré -- **Nadmerné alebo nedostatočné zastúpenie**. Ide o to, že určitá skupina nie je viditeľná v určitej profesii, a akákoľvek služba alebo funkcia, ktorá to naďalej podporuje, prispieva k škodám. +* Globálne vysvetlenia: Napríklad, ktoré atribúty ovplyvňujú celkové správanie modelu na predikciu opätovného prijatia diabetických pacientov do nemocnice? +* Lokálne vysvetlenia: Napríklad, prečo bol diabetický pacient nad 60 rokov s predchádzajúcimi hospitalizáciami predpovedaný byť prijatý alebo neprijatý späť do nemocnice do 30 dní? -### Azure RAI dashboard +Pri ladení modelu a skúmaní jeho výkonu naprieč rôznymi kohortami, Dôležitosť atribútov ukazuje, aký vplyv má atribút v rámci kohôrt. Pomáha odhaliť anomálie pri porovnávaní úrovne vplyvu atribútu na chybné predikcie modelu. Komponent Dôležitosť atribútov môže zobraziť, ktoré hodnoty v atribúte pozitívne alebo negatívne ovplyvnili výsledok modelu. Napríklad, ak model urobil nepresnú predikciu, komponent vám umožňuje presne určiť, ktoré atribúty alebo hodnoty atribútov viedli k tejto predikcii. Táto úroveň detailov pomáha nielen pri ladení, ale prináša aj transparentnosť a zodpovednosť pri audite. Nakoniec komponent môže pomôcť identifikovať problémy so spravodlivosťou. Ilustračným príkladom je, ak citlivý atribút ako etnická príslušnosť alebo pohlavie má vysoký vplyv na predikciu modelu, môže to byť znakom rasovej alebo genderovej zaujatosti v modeli. + +![Dôležitosť atribútov](../../../../translated_images/sk/9-features-influence.3ead3d3f68a84029.webp) + +Používajte interpretovateľnosť, keď potrebujete: + +* Určiť, do akej miery sú predikcie vášho AI systému dôveryhodné tým, že pochopíte, ktoré atribúty sú pre predikcie najdôležitejšie. +* Pristúpiť k ladeniu modelu tak, že najprv pochopíte model a zistíte, či používa zdravé atribúty alebo iba falošné korelácie. +* Odhaľovať potenciálne zdroje nespravodlivosti tým, že pochopíte, či model zakladá predikcie na citlivých atribútoch alebo na atribútoch, ktoré s nimi silne korelujú. +* Budovať dôveru používateľov v rozhodnutia modelu generovaním lokálnych vysvetlení na ilustráciu ich výsledkov. +* Dokončiť regulačný audit AI systému na validáciu modelov a monitorovanie vplyvu rozhodnutí modelu na ľudí. + +## Záver -[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ástrojoch vyvinutých poprednými akademickými inštitúciami a organizáciami vrátane Microsoftu, ktoré sú nevyhnutné pre dátových vedcov a vývojárov AI na lepšie pochopenie správania modelov, objavovanie a zmierňovanie nežiaducich problémov z AI modelov. +Všetky komponenty panela RAI sú praktické nástroje, ktoré vám pomáhajú vytvárať modely strojového učenia, ktoré sú menej škodlivé a spoľahlivejšie pre spoločnosť. Zlepšujú prevenciu hrozieb ľudským právam; diskrimináciu alebo vylučovanie určitých skupín z životných príležitostí; a riziko fyzického alebo psychického poškodenia. Tiež pomáhajú budovať dôveru v rozhodnutia vášho modelu generovaním lokálnych vysvetlení, ktoré ilustrujú ich výsledky. Niektoré z potenciálnych škôd možno klasifikovať ako: -- Naučte sa, ako používať rôzne komponenty, prečítaním dokumentácie k RAI dashboardu [docs.](https://learn.microsoft.com/en-us/azure/machine-learning/how-to-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) +- **Alokácia**, ak je napríklad preferované pohlavie alebo etnický pôvod pred iným. +- **Kvalita služby**. Ak trénujete dáta iba na jeden konkrétny scenár, ale realita je oveľa zložitejšia, vedie to k zlému výkonu služby. +- **Stereotypizácia**. Spájanie danej skupiny s predpokladanými atribútmi. -- Pozrite si niektoré [ukážkové notebooky RAI dashboardu](https://github.com/Azure/RAI-vNext-Preview/tree/main/examples/notebooks) na ladenie zodpovednejších AI scenárov v Azure Machine Learning. +- **Znehodnocovanie**. Nespravodlivo kritizovať a označovať niečo alebo niekoho. +- **Nadmerné alebo nedostatočné zastúpenie**. Myšlienka je, že určitá skupina nie je viditeľná v určitom povolaní, a akákoľvek služba alebo funkcia, ktorá to naďalej propaguje, prispieva k škode. +### 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ástrojoch vyvinutých vedúcimi akademickými inštitúciami a organizáciami vrátane Microsoftu, ktoré sú kľúčové pre dátových vedcov a vývojárov AI lepšie pochopiť správanie modelu, objaviť a zmierniť neželané problémy z AI modelov. + +- Naučte sa používať rôzne komponenty s pomocou dokumentácie pre RAI dashboard [docs.](https://learn.microsoft.com/en-us/azure/machine-learning/how-to-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) + +- Pozrite si niektoré vzorové RAI dashboard [sample notebooks](https://github.com/Azure/RAI-vNext-Preview/tree/main/examples/notebooks) na ladenie zodpovednejších AI scenárov v Azure Machine Learning. + --- ## 🚀 Výzva + +Aby sme predišli zavádzaniu štatistických alebo dátových predsudkov už na začiatku, mali by sme: -Aby sme zabránili zavádzaniu štatistických alebo dátových predsudkov už na začiatku, mali by sme: - -- zabezpečiť rozmanitosť pozadí a perspektív medzi ľuďmi pracujúcimi na systémoch +- mať rôznorodé zázemie a perspektívy medzi ľuďmi pracujúcimi na systémoch - investovať do datasetov, ktoré odrážajú rozmanitosť našej spoločnosti -- vyvíjať lepšie metódy na detekciu a opravu predsudkov, keď sa objavia +- vyvíjať lepšie metódy na odhaľovanie a opravovanie predsudkov, keď vzniknú -Premýšľajte o reálnych situáciách, kde je nespravodlivosť evidentná pri budovaní a používaní modelov. Čo ďalšie by sme mali zvážiť? +Zamyslite sa nad reálnymi situáciami, kde je nespravodlivosť zjavná pri tvorbe a používaní modelov. Čo ďalšie by sme mali zvážiť? ## [Kvíz po prednáške](https://ff-quizzes.netlify.app/en/ml/) ## Prehľad a samostatné štúdium + +V tejto lekcii ste sa naučili niektoré praktické nástroje na začlenenie zodpovednej AI v strojovom učení. -V tejto lekcii ste sa naučili niektoré praktické nástroje na začlenenie zodpovednej AI do strojového učenia. - -Pozrite si tento workshop, aby ste sa hlbšie ponorili do tém: - -- Responsible AI Dashboard: Jednotné miesto na operacionalizáciu RAI v praxi od Besmiry Nushi a Mehrnoosh Sameki +Pozrite si tento workshop a ponorte sa hlbšie do tém: -[![Responsible AI Dashboard: Jednotné miesto na operacionalizáciu RAI v praxi](https://img.youtube.com/vi/f1oaDNl3djg/0.jpg)](https://www.youtube.com/watch?v=f1oaDNl3djg "Responsible AI Dashboard: Jednotné miesto na operacionalizáciu RAI v praxi") +- Responsible AI Dashboard: Všetko na jednom mieste pre uvedenie RAI do praxe od Besmira Nushi a Mehrnoosh Sameki -> 🎥 Kliknite na obrázok vyššie pre video: Responsible AI Dashboard: Jednotné miesto na operacionalizáciu RAI v praxi od Besmiry Nushi a Mehrnoosh Sameki +[![Responsible AI Dashboard: One-stop shop for operationalizing RAI in practice](https://img.youtube.com/vi/f1oaDNl3djg/0.jpg)](https://www.youtube.com/watch?v=f1oaDNl3djg "Responsible AI Dashboard: One-stop shop for operationalizing RAI in practice") -Odkážte na nasledujúce materiály, aby ste sa dozvedeli viac o zodpovednej AI a o tom, ako budovať dôveryhodnejšie modely: +> 🎥 Kliknite na obrázok vyššie pre video: Responsible AI Dashboard: Všetko na jednom mieste pre uvedenie RAI do praxe od Besmira Nushi a Mehrnoosh Sameki + +Prečítajte si nasledujúce materiály a naučte sa viac o zodpovednej AI a ako budovať dôveryhodnejšie modely: -- Microsoftove nástroje RAI dashboardu na ladenie ML modelov: [Responsible AI tools resources](https://aka.ms/rai-dashboard) +- Nástroje Microsoft RAI dashboard na ladenie ML modelov: [Responsible AI tools resources](https://aka.ms/rai-dashboard) -- Preskúmajte Responsible AI toolkit: [Github](https://github.com/microsoft/responsible-ai-toolbox) +- Preskúmajte sadu nástrojov Responsible AI: [Github](https://github.com/microsoft/responsible-ai-toolbox) -- Microsoftove centrum zdrojov 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ýskumná skupina FATE: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/) +- Výskumná skupina Microsoft FATE: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/) ## Zadanie -[Preskúmajte RAI dashboard](assignment.md) +[Preskúmať RAI dashboard](assignment.md) --- -**Upozornenie**: -Tento dokument bol preložený pomocou služby na automatický preklad [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, upozorňujeme, že automatické preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho pôvodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre dôležité informácie sa odporúča profesionálny ľudský preklad. Nezodpovedáme za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. \ No newline at end of file + +**Vyhlásenie o zodpovednosti**: +Tento dokument bol preložený pomocou AI prekladateľskej služby [Co-op Translator](https://github.com/Azure/co-op-translator). Hoci sa snažíme o presnosť, vezmite prosím na vedomie, že automatické preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho natívnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nie sme zodpovední za žiadne nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu. + \ No newline at end of file diff --git a/translations/sl/.co-op-translator.json b/translations/sl/.co-op-translator.json index 03bf6bace..39c6ba7b6 100644 --- a/translations/sl/.co-op-translator.json +++ b/translations/sl/.co-op-translator.json @@ -24,8 +24,8 @@ "language_code": "sl" }, "1-Introduction/3-fairness/README.md": { - "original_hash": "9a6b702d1437c0467e3c5c28d763dac2", - "translation_date": "2025-09-05T12:38:13+00:00", + "original_hash": "0f00d72169a0d37eecfd16d71e01700a", + "translation_date": "2026-07-14T02:00:01+00:00", "source_file": "1-Introduction/3-fairness/README.md", "language_code": "sl" }, @@ -54,8 +54,8 @@ "language_code": "sl" }, "2-Regression/1-Tools/README.md": { - "original_hash": "fa81d226c71d5af7a2cade31c1c92b88", - "translation_date": "2025-09-05T11:41:21+00:00", + "original_hash": "0b8635427b582d03ea4ab7089b93e505", + "translation_date": "2026-07-14T01:57:14+00:00", "source_file": "2-Regression/1-Tools/README.md", "language_code": "sl" }, @@ -72,8 +72,8 @@ "language_code": "sl" }, "2-Regression/2-Data/README.md": { - "original_hash": "7c077988328ebfe33b24d07945f16eca", - "translation_date": "2025-09-05T11:46:24+00:00", + "original_hash": "a58b2c4d16c6b122643391745ac15af6", + "translation_date": "2026-07-14T01:58:11+00:00", "source_file": "2-Regression/2-Data/README.md", "language_code": "sl" }, @@ -89,6 +89,12 @@ "source_file": "2-Regression/2-Data/solution/Julia/README.md", "language_code": "sl" }, + "2-Regression/2-Data/solution/notebook.ipynb": { + "original_hash": "96b95f8cf473481f2f371de8156f1571", + "translation_date": "2026-07-14T01:38:13+00:00", + "source_file": "2-Regression/2-Data/solution/notebook.ipynb", + "language_code": "sl" + }, "2-Regression/3-Linear/README.md": { "original_hash": "8b776e731c35b171d316d01d0e7b1369", "translation_date": "2026-04-26T18:48:57+00:00", @@ -457,7 +463,7 @@ }, "8-Reinforcement/1-QLearning/README.md": { "original_hash": "911efd5e595089000cb3c16fce1beab8", - "translation_date": "2025-09-05T13:37:15+00:00", + "translation_date": "2026-07-14T01:59:10+00:00", "source_file": "8-Reinforcement/1-QLearning/README.md", "language_code": "sl" }, @@ -581,6 +587,19 @@ "source_file": "TROUBLESHOOTING.md", "language_code": "sl" }, + "__translation_failures__": { + "sketchnotes/LICENSE.md": { + "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f", + "source_file": "sketchnotes/LICENSE.md", + "language_code": "sl", + "failure_date": "2026-07-14T01:56:26+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:18+00:00", diff --git a/translations/sl/1-Introduction/3-fairness/README.md b/translations/sl/1-Introduction/3-fairness/README.md index 3866583cf..124d12dda 100644 --- a/translations/sl/1-Introduction/3-fairness/README.md +++ b/translations/sl/1-Introduction/3-fairness/README.md @@ -1,30 +1,30 @@ -# Gradnja rešitev strojnega učenja z odgovorno umetno inteligenco - -![Povzetek odgovorne umetne inteligence v strojnem učenju v sketchnote](../../../../sketchnotes/ml-fairness.png) -> Sketchnote avtorja [Tomomi Imura](https://www.twitter.com/girlie_mac) - -## [Predhodni kviz](https://ff-quizzes.netlify.app/en/ml/) +# Izdelava rešitev strojnega učenja z odgovorno umetno inteligenco + +![Povzetek odgovorne umetne inteligence v strojnega učenja v skicirni beležki](../../../../translated_images/sl/ml-fairness.ef296ebec6afc98a.webp) +> Skicirna beležka avtorja [Tomomi Imura](https://www.twitter.com/girlie_mac) +## [Predpredavalni kviz](https://ff-quizzes.netlify.app/en/ml/) + ## Uvod -V tem učnem načrtu boste začeli odkrivati, kako strojno učenje vpliva na naše vsakdanje življenje. Že zdaj so sistemi in modeli vključeni v vsakodnevne odločitve, kot so zdravstvene diagnoze, odobritve posojil ali odkrivanje goljufij. Zato je pomembno, da ti modeli delujejo zanesljivo in zagotavljajo rezultate, ki jim lahko zaupamo. Tako kot pri vsaki programski aplikaciji tudi sistemi umetne inteligence včasih ne izpolnijo pričakovanj ali privedejo do neželenih rezultatov. Zato je ključno razumeti in pojasniti vedenje modela umetne inteligence. +V tem učnem programu boste začeli odkrivati, kako strojno učenje vpliva na naše vsakdanje življenje. Že zdaj so sistemi in modeli vključeni v dnevna odločanja, kot so zdravstvene diagnoze, odobritve posojil ali odkrivanje prevar. Zato je pomembno, da ti modeli dobro delujejo in zagotavljajo rezultate, ki so zaupanja vredni. Tako kot katera koli programska oprema bodo tudi sistemi umetne inteligence kdaj zgrešili pričakovanja ali imeli nezaželen izid. Zato je ključno razumeti in pojasniti vedenje AI modela. -Predstavljajte si, kaj se lahko zgodi, če podatki, ki jih uporabljate za gradnjo teh modelov, ne vključujejo določenih demografskih skupin, kot so rasa, spol, politično prepričanje, religija, ali pa so te skupine nesorazmerno zastopane. Kaj pa, če je izhod modela interpretiran tako, da favorizira določeno demografsko skupino? Kakšne so posledice za aplikacijo? Poleg tega, kaj se zgodi, če model povzroči škodljive rezultate? Kdo je odgovoren za vedenje sistema umetne inteligence? To so nekatera vprašanja, ki jih bomo raziskali v tem učnem načrtu. +Predstavljajte si, kaj se lahko zgodi, če podatki, ki jih uporabljate za izdelavo teh modelov, manjkajo nekatere demografske skupine, kot so rasa, spol, politična usmeritev, vera, ali nesorazmerno predstavljajo te demografske skupine. Kaj pa, če se izhod modela interpretira v korist določene demografske skupine? Kakšne so posledice za aplikacijo? Poleg tega, kaj se zgodi, ko ima model škodljiv izid in škodi ljudem? Kdo je odgovoren za vedenje AI sistema? To so nekatere izmed vprašanj, ki jih bomo raziskovali v tem učnem programu. -V tej lekciji boste: +V tej lekciji boste: -- Povečali zavedanje o pomembnosti pravičnosti v strojnem učenju in škodah, povezanih s pravičnostjo. -- Spoznali prakso raziskovanja odstopanj in nenavadnih scenarijev za zagotavljanje zanesljivosti in varnosti. -- Pridobili razumevanje o potrebi po vključevanju vseh z oblikovanjem inkluzivnih sistemov. -- Raziskali, kako pomembno je varovati zasebnost in varnost podatkov ter ljudi. -- Spoznali pomen pristopa "steklene škatle" za pojasnjevanje vedenja modelov umetne inteligence. -- Postali pozorni na to, kako je odgovornost ključna za gradnjo zaupanja v sisteme umetne inteligence. +- Povečali zavedanje o pomenu pravičnosti v strojnem učenju in s tem povezanih škodah. +- Spoznali prakso raziskovanja izstopajočih primerov in nenavadnih scenarijev za zagotavljanje zanesljivosti in varnosti +- Pridobili razumevanje potrebe po opolnomočenju vseh z oblikovanjem vključujočih sistemov +- Raziskali, kako nujno je varovanje zasebnosti in varnosti podatkov ter ljudi +- Videli, zakaj je pomemben pristop skozi prozorno škatlo za pojasnjevanje vedenja AI modelov +- Biti pozorni na to, kako je odgovornost ključna za gradnjo zaupanja v AI sisteme ## Predpogoj -Kot predpogoj si oglejte učni načrt "Načela odgovorne umetne inteligence" in si oglejte spodnji video na to temo: +Za predpogoj, prosimo opravi "Principi odgovorne umetne inteligence" učno pot in si oglejte spodnji video na to temo: -Več o odgovorni umetni inteligenci lahko izveste s sledenjem temu [učnemu načrtu](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott). +Izvedite več o odgovorni umetni inteligenci z učenjem na tej [učni poti](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) [![Microsoftov pristop k odgovorni umetni inteligenci](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoftov pristop k odgovorni umetni inteligenci") @@ -32,113 +32,136 @@ Več o odgovorni umetni inteligenci lahko izveste s sledenjem temu [učnemu nač ## Pravičnost -Sistemi umetne inteligence bi morali obravnavati vse enako in se izogibati različnemu vplivu na podobne skupine ljudi. Na primer, ko sistemi umetne inteligence svetujejo pri medicinskem zdravljenju, prošnjah za posojila ali zaposlitvi, bi morali podati enaka priporočila vsem z enakimi simptomi, finančnimi okoliščinami ali poklicnimi kvalifikacijami. Vsak od nas kot človek nosi podedovane pristranskosti, ki vplivajo na naše odločitve in dejanja. Te pristranskosti so lahko vidne v podatkih, ki jih uporabljamo za treniranje sistemov umetne inteligence. Takšna manipulacija se včasih zgodi nenamerno. Pogosto je težko zavestno vedeti, kdaj vnašate pristranskost v podatke. +Sistemi umetne inteligence naj obravnavajo vse pošteno in naj se izogibajo različnemu vplivu na podobne skupine ljudi. Na primer, ko sistemi umetne inteligence nudijo navodila glede zdravljenja, vlog za posojila ali zaposlovanja, bi morali dati iste priporočila vsem z podobnimi simptomi, finančnimi pogoji ali strokovnimi kvalifikacijami. Vsak izmed nas kot človek nosi dedne predsodke, ki vplivajo na naše odločitve in dejanja. Ti predsodki se lahko pokažejo v podatkih, ki jih uporabljamo za usposabljanje AI sistemov. Takšna manipulacija se lahko zgodi tudi nehote. Pogosto je težko zavestno vedeti, kdaj vnašate pristranskost v podatke. -**"Nepravičnost"** zajema negativne vplive ali "škode" za skupino ljudi, kot so tiste, opredeljene glede na raso, spol, starost ali status invalidnosti. Glavne škode, povezane s pravičnostjo, lahko razvrstimo kot: +**"Nepravičnost"** vključuje negativne učinke ali "škode" za določeno skupino ljudi, kot so opredeljene glede na raso, spol, starost ali invalidnost. Glavne škode, povezane s pravičnostjo, lahko razvrstimo kot: -- **Dodeljevanje**, če je na primer spol ali etnična pripadnost favorizirana pred drugo. -- **Kakovost storitve**. Če trenirate podatke za en specifičen scenarij, vendar je resničnost veliko bolj kompleksna, to vodi do slabo delujoče storitve. Na primer, podajalnik mila, ki ne zazna ljudi s temno kožo. [Referenca](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773) -- **Omalovaževanje**. Nepravično kritiziranje in označevanje nečesa ali nekoga. Na primer, tehnologija za označevanje slik je zloglasno napačno označila slike temnopolte ljudi kot gorile. -- **Prekomerna ali nezadostna zastopanost**. Ideja, da določena skupina ni vidna v določenem poklicu, in vsaka storitev ali funkcija, ki to še naprej promovira, prispeva k škodi. -- **Stereotipiziranje**. Povezovanje določene skupine s predhodno določenimi lastnostmi. Na primer, sistem za prevajanje med angleščino in turščino lahko vsebuje netočnosti zaradi besed s stereotipnimi povezavami s spolom. +- **Dodeljevanje**, če je na primer spol ali narodnost v prid eni skupini pred drugo. +- **Kakovost storitve**. Če usposobite model za en poseben scenarij, vendar je realnost veliko bolj kompleksna, vodi do slabo delujoče storitve. Na primer, dozirnik mila za roke, ki ni mogel zaznati ljudi s temnejšo kožo. [Reference](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773) +- **Ocenjevanje na nepošten način**. Nepravično kritizirati in označiti nekaj ali nekoga. Na primer, tehnologija za označevanje slik je žal neuspešno označila slike temnopoltih ljudi kot gorile. +- **Prekomerna ali prenizka zastopanost**. Ideja je, da določena skupina ni prisotna na določenem poklicnem področju, in kakršnakoli storitev ali funkcija, ki to nadaljuje, povzroča škodo. +- **Stereotipiziranje**. Povezovanje določene skupine s predhodno določenimi lastnostmi. Na primer, sistem za prevajanje med angleščino in turščino lahko zaradi stereotipnih povezav z besedami glede spola povzroča netočnosti. -![prevod v turščino](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) +![prevod v turščino](../../../../translated_images/sl/gender-bias-translate-en-tr.f185fd8822c2d437.webp) > prevod v turščino -![prevod nazaj v angleščino](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) +![prevod nazaj v angleščino](../../../../translated_images/sl/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) > prevod nazaj v angleščino -Pri oblikovanju in testiranju sistemov umetne inteligence moramo zagotoviti, da je umetna inteligenca pravična in ni programirana za sprejemanje pristranskih ali diskriminatornih odločitev, ki jih ljudje prav tako ne smejo sprejemati. Zagotavljanje pravičnosti v umetni inteligenci in strojnem učenju ostaja kompleksen sociotehnični izziv. +Pri načrtovanju in testiranju AI sistemov moramo zagotoviti, da je umetna inteligenca pravična in ni programirana za pristranske ali diskriminatorne odločitve, katerih sprejemanje je ljudem prav tako prepovedano. Zagotavljanje pravičnosti v umetni inteligenci in strojnem učenju ostaja kompleksen sociotehnični izziv. ### Zanesljivost in varnost -Za gradnjo zaupanja morajo biti sistemi umetne inteligence zanesljivi, varni in dosledni v običajnih in nepričakovanih pogojih. Pomembno je vedeti, kako se bodo sistemi umetne inteligence obnašali v različnih situacijah, še posebej, ko gre za odstopanja. Pri gradnji rešitev umetne inteligence je treba nameniti veliko pozornosti temu, kako obravnavati širok spekter okoliščin, s katerimi se lahko srečajo rešitve umetne inteligence. Na primer, avtonomni avtomobil mora postaviti varnost ljudi kot najvišjo prioriteto. Posledično mora umetna inteligenca, ki poganja avtomobil, upoštevati vse možne scenarije, s katerimi se lahko avtomobil sreča, kot so noč, nevihte ali snežni meteži, otroci, ki tečejo čez cesto, hišni ljubljenčki, gradbena dela itd. Kako dobro sistem umetne inteligence obravnava širok spekter pogojev zanesljivo in varno, odraža raven predvidevanja, ki jo je podatkovni znanstvenik ali razvijalec umetne inteligence upošteval med oblikovanjem ali testiranjem sistema. +Za gradnjo zaupanja morajo biti AI sistemi zanesljivi, varni in dosledni v normalnih in nepričakovanih razmerah. Pomembno je vedeti, kako se bodo AI sistemi obnašali v različnih situacijah, posebej ko so izstopajoči primeri. Pri izdelavi AI rešitev je treba nameniti veliko pozornosti obravnavi širokega spektra okoliščin, s katerimi se bodo AI rešitve srečale. Na primer, avtonomni avtomobil mora varnost ljudi postaviti na prvo mesto. Posledično mora AI, ki poganja avto, upoštevati vse možne scenarije, s katerimi se lahko avto sreča, kot so noč, nevihte ali snežni viharji, otroci, ki prečkajo cesto, hišni ljubljenčki, cestna gradbišča itd. Kako dobro lahko AI sistem zanesljivo in varno obvladuje pester nabor pogojev, odraža stopnjo predvidevanja podatkovnega znanstvenika ali razvijalca AI med načrtovanjem ali testiranjem sistema. > [🎥 Kliknite tukaj za video: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl) -### Inkluzivnost +### Vključujočnost -Sistemi umetne inteligence bi morali biti zasnovani tako, da vključujejo in opolnomočijo vse. Pri oblikovanju in implementaciji sistemov umetne inteligence podatkovni znanstveniki in razvijalci umetne inteligence identificirajo in obravnavajo morebitne ovire v sistemu, ki bi lahko nenamerno izključile ljudi. Na primer, po svetu je 1 milijarda ljudi z invalidnostmi. Z napredkom umetne inteligence lahko dostopajo do širokega spektra informacij in priložnosti bolj enostavno v svojem vsakdanjem življenju. Z odpravljanjem ovir se ustvarjajo priložnosti za inovacije in razvoj izdelkov umetne inteligence z boljšimi izkušnjami, ki koristijo vsem. +AI sistemi naj bodo zasnovani tako, da vključujejo in opolnomočajo vse. Pri načrtovanju in uvajanju AI sistemov podatkovni znanstveniki in razvijalci AI prepoznajo in odpravijo morebitne ovire v sistemu, ki bi lahko nehote izključile ljudi. Na primer, po svetu je 1 milijarda oseb z invalidnostmi. Z razvojem AI lahko dostopajo do širokega spektra informacij in priložnosti lažje v svojem vsakdanjem življenju. Z odpravljanjem ovir se ustvarjajo priložnosti za inovacije in razvoj AI izdelkov z boljšimi izkušnjami, ki koristijo vsem. -> [🎥 Kliknite tukaj za video: inkluzivnost v umetni inteligenci](https://www.microsoft.com/videoplayer/embed/RE4vl9v) +> [🎥 Kliknite tukaj za video: vključujočnost v AI](https://www.microsoft.com/videoplayer/embed/RE4vl9v) -### Varnost in zasebnost +### Varnost in zasebnost -Sistemi umetne inteligence bi morali biti varni in spoštovati zasebnost ljudi. Ljudje manj zaupajo sistemom, ki ogrožajo njihovo zasebnost, informacije ali življenja. Pri treniranju modelov strojnega učenja se zanašamo na podatke za doseganje najboljših rezultatov. Pri tem je treba upoštevati izvor podatkov in njihovo integriteto. Na primer, ali so podatki uporabniško posredovani ali javno dostopni? Poleg tega je med delom s podatki ključno razviti sisteme umetne inteligence, ki lahko zaščitijo zaupne informacije in se uprejo napadom. Ker umetna inteligenca postaja vse bolj razširjena, postaja zaščita zasebnosti in varnost pomembnih osebnih ter poslovnih informacij vse bolj kritična in kompleksna. Zasebnost in varnost podatkov zahtevata posebno pozornost pri umetni inteligenci, saj je dostop do podatkov bistven za to, da sistemi umetne inteligence sprejemajo natančne in informirane napovedi ter odločitve o ljudeh. +AI sistemi morajo biti varni in spoštovati zasebnost ljudi. Ljudje manj zaupajo sistemom, ki ogrožajo njihovo zasebnost, podatke ali življenje. Pri usposabljanju modelov strojnega učenja se zanašamo na podatke za dosego najboljših rezultatov. Pri tem je treba upoštevati izvor podatkov in njihovo integriteto. Na primer, ali so bili podatki posredovani s strani uporabnikov ali so bili javno dostopni? Nadalje, pri delu s podatki je ključno razviti AI sisteme, ki lahko varujejo zaupne informacije in odbijajo napade. Ker AI postaja vse bolj razširjena, je varovanje zasebnosti in varnost pomembnih osebnih in poslovnih informacij vse bolj kritično in kompleksno. Težave z zasebnostjo in varnostjo podatkov zahtevajo še posebej veliko pozornosti pri AI, ker je dostop do podatkov ključnega pomena za točne in informirane napovedi ter odločitve o ljudeh. -> [🎥 Kliknite tukaj za video: varnost v umetni inteligenci](https://www.microsoft.com/videoplayer/embed/RE4voJF) +> [🎥 Kliknite tukaj za video: varnost v AI](https://www.microsoft.com/videoplayer/embed/RE4voJF) -- Kot industrija smo dosegli pomemben napredek na področju zasebnosti in varnosti, ki ga močno spodbujajo regulacije, kot je GDPR (Splošna uredba o varstvu podatkov). -- Kljub temu moramo pri sistemih umetne inteligence priznati napetost med potrebo po več osebnih podatkih za izboljšanje učinkovitosti sistemov in zasebnostjo. -- Tako kot ob rojstvu povezanih računalnikov z internetom, opažamo tudi velik porast števila varnostnih težav, povezanih z umetno inteligenco. -- Hkrati pa opažamo, da se umetna inteligenca uporablja za izboljšanje varnosti. Na primer, večina sodobnih protivirusnih skenerjev temelji na AI heuristiki. -- Zagotoviti moramo, da se naši procesi podatkovne znanosti harmonično prepletajo z najnovejšimi praksami zasebnosti in varnosti. +- Kot industrija smo dosegli pomemben napredek na področju zasebnosti in varnosti, ki ga je močno spodbudila zakonodaja, kot je GDPR (Splošna uredba o varstvu podatkov). +- Vendar pa moramo pri AI sistemih priznati napetost med potrebo po več osebnih podatkih za bolj osebne in učinkovite sisteme ter zasebnostjo. +- Tako kot pri vzpostavitvi povezanih računalnikov z internetom, tudi pri AI opažamo velik porast varnostnih vprašanj. +- Hkrati smo videli, da se AI uporablja za izboljšanje varnosti. Na primer, večina sodobnih protivirusnih skenerjev danes temelji na heuristikah AI. +- Potrebno je zagotoviti, da naši procesi podatkovnih znanosti harmonično vključujejo najnovejše prakse zasebnosti in varnosti. -### Transparentnost -Sistemi umetne inteligence bi morali biti razumljivi. Ključni del transparentnosti je pojasnjevanje vedenja sistemov umetne inteligence in njihovih komponent. Izboljšanje razumevanja sistemov umetne inteligence zahteva, da deležniki razumejo, kako in zakaj delujejo, da lahko identificirajo morebitne težave z zmogljivostjo, varnostjo in zasebnostjo, pristranskosti, izključujoče prakse ali nenamerne rezultate. Prav tako verjamemo, da bi morali biti tisti, ki uporabljajo sisteme umetne inteligence, iskreni in odkriti glede tega, kdaj, zakaj in kako se odločijo za njihovo uporabo. Prav tako morajo pojasniti omejitve sistemov, ki jih uporabljajo. Na primer, če banka uporablja sistem umetne inteligence za podporo pri odločanju o potrošniških posojilih, je pomembno preučiti rezultate in razumeti, kateri podatki vplivajo na priporočila sistema. Vlade začenjajo regulirati umetno inteligenco v različnih industrijah, zato morajo podatkovni znanstveniki in organizacije pojasniti, ali sistem umetne inteligence izpolnjuje regulativne zahteve, še posebej, ko pride do neželenega rezultata. +### Preglednost +AI sistemi morajo biti razumljivi. Ključni del preglednosti je pojasnjevanje vedenja AI sistemov in njihovih komponent. Izboljšanje razumevanja AI sistemov zahteva, da zainteresirane strani razumejo, kako in zakaj delujejo, da lahko prepoznajo morebitne težave z uspešnostjo, varnostjo in zasebnostjo, predsodke, izključujoče prakse ali nenamerne izide. Prav tako verjamemo, da bi morali uporabniki AI sistemov biti pošteni in odprti glede tega, kdaj, zakaj in kako jih uporabljajo, kot tudi o omejitvah sistemov, ki jih uporabljajo. Na primer, če banka uporablja AI sistem za podporo svojim odločitvam o posojilih potrošnikom, je pomembno pregledati izide in razumeti, kateri podatki vplivajo na priporočila sistema. Vlade začinjajo regulirati AI v različnih industrijah, zato morajo podatkovni znanstveniki in organizacije pojasniti, ali AI sistem izpolnjuje regulativne zahteve, zlasti, ko pride do nezaželenega izida. -> [🎥 Kliknite tukaj za video: transparentnost v umetni inteligenci](https://www.microsoft.com/videoplayer/embed/RE4voJF) +> [🎥 Kliknite tukaj za video: preglednost v AI](https://www.microsoft.com/videoplayer/embed/RE4voJF) -- Ker so sistemi umetne inteligence tako kompleksni, je težko razumeti, kako delujejo in interpretirati rezultate. -- To pomanjkanje razumevanja vpliva na način upravljanja, operacionalizacije in dokumentiranja teh sistemov. -- Še pomembneje pa to pomanjkanje razumevanja vpliva na odločitve, sprejete na podlagi rezultatov, ki jih ti sistemi proizvajajo. +- Ker so AI sistemi zelo kompleksni, je težko razumeti, kako delujejo in razlagati rezultate. +- Ta pomanjkljivo razumevanje vpliva na način upravljanja, operativnosti in dokumentacije teh sistemov. +- Še pomembneje pa to vpliva na odločitve, sprejete na podlagi rezultatov, ki jih ti sistemi proizvajajo. -### Odgovornost +### Odgovornost + +Osebe, ki načrtujejo in uvajajo AI sisteme, morajo biti odgovorne za delovanje svojih sistemov. Potreba po odgovornosti je še posebej pomembna pri občutljivih tehnologijah, kot je prepoznavanje obrazov. Nedavno je naraslo povpraševanje po tehnologiji prepoznavanja obrazov, zlasti pri organih pregona, ki vidijo potencial tehnologije za iskanje pogrešanih otrok. Vendar pa bi te tehnologije lahko vlade potencialno uporabile za ogrožanje temeljnih svoboščin državljanov, na primer omogočanje stalnega nadzora določenih posameznikov. Zato morajo podatkovni znanstveniki in organizacije prevzeti odgovornost za vpliv svojega AI sistema na posameznike ali družbo. -Ljudje, ki oblikujejo in uvajajo sisteme umetne inteligence, morajo biti odgovorni za delovanje svojih sistemov. Potreba po odgovornosti je še posebej ključna pri občutljivih tehnologijah, kot je prepoznavanje obrazov. V zadnjem času se povečuje povpraševanje po tehnologiji prepoznavanja obrazov, zlasti s strani organov pregona, ki vidijo potencial tehnologije pri uporabi, kot je iskanje pogrešanih otrok. Vendar pa bi te tehnologije lahko potencialno uporabila vlada za ogrožanje temeljnih svoboščin svojih državljanov, na primer z omogočanjem neprekinjenega nadzora določenih posameznikov. Zato morajo podatkovni znanstveniki in organizacije prevzeti odgovornost za to, kako njihov sistem umetne inteligence vpliva na posameznike ali družbo. +[![Vodja raziskav AI opozarja pred množičnim nadzorom s prepoznavanjem obrazov](../../../../translated_images/sl/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoftov pristop k odgovorni umetni inteligenci") -[![Vodilni raziskovalec umetne inteligence opozarja na množični nadzor prek prepoznavanja obrazov](../../../../1-Introduction/3-fairness/images/accountability.png)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoftov pristop k odgovorni umetni inteligenci") +> 🎥 Kliknite zgornjo sliko za video: Opozorila pred množičnim nadzorom s prepoznavanjem obrazov -> 🎥 Kliknite zgornjo sliko za video: Opozorila o množičnem nadzoru prek prepoznavanja obrazov +Na koncu je eno največjih vprašanj za našo generacijo, kot prvo generacijo, ki prinaša AI v družbo, kako zagotoviti, da bodo računalniki ostali odgovorni ljudem in kako zagotoviti, da bodo ljudje, ki računalnike načrtujejo, odgovorni do vseh drugih. -Na koncu je eno največjih vprašanj naše generacije, kot prve generacije, ki prinaša umetno inteligenco v družbo, kako zagotoviti, da bodo računalniki ostali odgovorni ljudem in kako zagotoviti, da bodo ljudje, ki oblikujejo računalnike, ostali odgovorni vsem drugim. +## Ocena vpliva -## Ocena vpliva +Pred usposabljanjem modela strojnega učenja je pomembno opraviti oceno vpliva, da se razume namen AI sistema; kakšna je predvidena uporaba; kje bo nameščen; in kdo bo interagiralo s sistemom. To pomaga ocenjevalcem ali testnim osebam pri ocenjevanju sistema vedeti, katere dejavnike morajo upoštevati pri prepoznavanju morebitnih tveganj in pričakovanih posledic. -Pred treniranjem modela strojnega učenja je pomembno izvesti oceno vpliva, da razumemo namen sistema umetne inteligence; kakšna je predvidena uporaba; kje bo uveden; in kdo bo interagiral s sistemom. To je koristno za pregledovalce ali preizkuševalce, ki ocenjujejo sistem, da vedo, katere dejavnike je treba upoštevati pri prepoznavanju morebitnih tveganj in pričakovanih posledic. +Spodaj so navedena področja osredotočenosti pri izvajanju ocene vpliva: -Naslednja področja so v ospredju pri izvajanju ocene vpliva: +* **Neželeni vpliv na posameznike**. Biti pozoren na kakršne koli omejitve, zahteve, neodobrene uporabe ali znane omejitve, ki ovirajo delovanje sistema, je ključno za zagotovitev, da sistem ni uporabljen na način, ki bi lahko škodoval posameznikom. +* **Zahteve glede podatkov**. Razumevanje, kako in kje bo sistem uporabljal podatke, omogoča ocenjevalcem raziskovanje morebitnih zahtev glede podatkov, ki jih je treba upoštevati (npr. GDPR ali HIPAA predpisi o podatkih). Poleg tega je treba oceniti, ali je vir ali količina podatkov zadostna za usposabljanje. +* **Povzetek vpliva**. Zberite seznam morebitnih škod, ki bi lahko nastale zaradi uporabe sistema. V celotnem življenjskem ciklu ML preglejte, ali so ugotovljene težave ublažene ali rešene. +* **Uporabni cilji** za vsako od šestih osnovnih načel. Ocenite, ali so cilji vsakega načela doseženi in ali obstajajo vrzeli. -* **Negativen vpliv na posameznike**. Zavedanje o kakršnih koli omejitvah ali zahtevah, nepodprti uporabi ali znanih omejitvah, ki ovirajo delovanje sistema, je ključno za zagotovitev, da sistem ni uporabljen na način, ki bi lahko škodoval posameznikom. -* **Zahteve glede podatkov**. Razumevanje, kako in kje bo sistem uporabljal podatke, omogoča pregledovalcem, da raziščejo morebitne zahteve glede podatkov, na katere morate biti pozorni (npr. GDPR ali HIPPA regulacije podatkov). Poleg tega preučite, ali je vir ali količina podatkov zadostna za treniranje. -* **Povzetek vpliva**. Zberite seznam morebitnih škod, ki bi lahko nastale zaradi uporabe sistema. Skozi življenjski cikel strojnega učenja preverite, ali so identificirane težave ublažene ali obravnavane. -* **Ustrezni cilji** za vsako od šestih temeljnih načel. Ocenite, ali so cilji iz vsakega načela doseženi in ali obstajajo kakršne koli vrzeli. -## Odpravljanje napak z odgovorno umetno inteligenco +## Odpravljanje napak z odgovorno AI -Podobno kot odpravljanje napak v programski aplikaciji je odpravljanje napak v sistemu umetne inteligence nujen proces prepoznavanja in reševanja težav v sistemu. Obstaja veliko dejavnikov, ki lahko vplivajo na to, da model ne deluje, kot je pričakovano ali odgovorno. Večina tradicionalnih metrik zmogljivosti modela so kvantitativni agregati zmogljivosti modela, ki niso dovolj za analizo, kako model krši načela odgovorne umetne inteligence. Poleg tega je model strojnega učenja črna škatla, kar otežuje razumevanje, kaj vodi do njegovih rezultatov ali zagotavljanje pojasnil, ko naredi napako. Kasneje v tem tečaju se bomo naučili, kako uporabljati nadzorno ploščo odgovorne umetne inteligence za pomoč pri odpravljanju napak v sistemih umetne inteligence. Nadzorna plošča zagotavlja celovit pripomoček za podatkovne znanstvenike in razvijalce umetne inteligence za izvajanje: +Podobno kot odpravljanje napak v programski aplikaciji je odpravljanje napak v AI sistemu potreben proces prepoznavanja in reševanja težav v sistemu. Obstaja veliko dejavnikov, ki lahko vplivajo na to, da model ne deluje tako, kot se pričakuje ali odgovorno. Večina tradicionalnih meritev uspešnosti modela so kvantitativni seštevki uspešnosti modela, ki niso dovolj za analizo, kako model krši načela odgovorne AI. Poleg tega je model strojnega učenja črna skrinjica, zaradi česar je težko razumeti, kaj povzroča njegov izid ali dati pojasnilo, ko naredi napako. Kasneje v tem tečaju bomo spoznali, kako uporabiti nadzorno ploščo Responsible AI za pomoč pri odpravljanju napak AI sistemov. Nadzorna plošča zagotavlja celovito orodje za podatkovne znanstvenike in razvijalce AI za izvedbo: * **Analiza napak**. Za prepoznavanje porazdelitve napak modela, ki lahko vplivajo na pravičnost ali zanesljivost sistema. -* **Pregled modela**. Za odkrivanje, kje obstajajo razlike v zmogljivosti modela med podatkovnimi skupinami. -* **Analiza podatkov**. Za razumevanje porazdelitve podatkov in prepoznavanje morebitne pristranskosti v podatkih, ki bi lahko povzročila težave s pravi -Oglejte si ta delavnico za poglobitev v teme: +* **Pregled modela**. Za odkrivanje, kje so razlike v uspešnosti modela med različnimi podatkovnimi skupinami. +* **Analiza podatkov**. Za razumevanje porazdelitve podatkov in prepoznavanje morebitnih pristranskosti, ki bi lahko povzročile težave z pravičnostjo, vključevanjem in zanesljivostjo. +* **Razložljivost modela**. Za razumevanje, kaj vpliva ali določa napovedi modela. To pomaga pri pojasnjevanju vedenja modela, kar je pomembno za preglednost in odgovornost. + + +## 🚀 Izziv + +Da bi preprečili uvajanje škod v prvi vrsti, moramo: + +- imeti raznolikost ozadij in pogledov med ljudmi, ki delajo na sistemih +- vlagati v podatkovne nize, ki odražajo raznolikost naše družbe +- razvijati boljše metode skozi celoten življenjski cikel strojnega učenja za odkrivanje in odpravljanje odgovorne AI, ko se pojavi + +Premislite o resničnih situacijah, kjer je nezanesljivost modela očitna pri gradnji in uporabi modela. Kaj še bi morali upoštevati? + +## [Popredavalni kviz](https://ff-quizzes.netlify.app/en/ml/) + +## Pregled & Samostojno učenje + + +V tej lekciji ste se naučili nekaj osnovnih pojmov pravičnosti in nepravičnosti v strojni inteligenci. + +Oglejte si ta delavnico za poglobljeno razumevanje tem: -- Na poti do odgovorne umetne inteligence: Prenos načel v prakso, avtorji Besmira Nushi, Mehrnoosh Sameki in Amit Sharma +- V prizadevanju za odgovorno AI: Prinašanje načel v prakso avtorjev Besmira Nushi, Mehrnoosh Sameki in Amit Sharma -[![Responsible AI Toolbox: Odprtokodni okvir za gradnjo odgovorne umetne inteligence](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: Odprtokodni okvir za gradnjo odgovorne umetne inteligence") +[![Responsible AI Toolbox: Open-source okvir za izgradnjo odgovorne AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: Open-source okvir za izgradnjo odgovorne AI") -> 🎥 Kliknite zgornjo sliko za video: RAI Toolbox: Odprtokodni okvir za gradnjo odgovorne umetne inteligence, avtorji Besmira Nushi, Mehrnoosh Sameki in Amit Sharma +> 🎥 Kliknite zgornjo sliko za video: RAI Toolbox: Open-source okvir za izgradnjo odgovorne AI avtorjev Besmira Nushi, Mehrnoosh Sameki in Amit Sharma -Preberite tudi: +Prav tako preberite: -- Microsoftov center virov za RAI: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) +- Microsoftov center virov RAI: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) -- Microsoftova raziskovalna skupina FATE: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/) +- Microsoftova raziskovalna skupina FATE: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/) -RAI Toolbox: +RAI Toolbox: -- [GitHub repozitorij Responsible AI Toolbox](https://github.com/microsoft/responsible-ai-toolbox) +- [Responsible AI Toolbox GitHub repozitorij](https://github.com/microsoft/responsible-ai-toolbox) Preberite o orodjih Azure Machine Learning za zagotavljanje pravičnosti: -- [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) ## Naloga -[Raziščite RAI Toolbox](assignment.md) +[Raziskujte RAI Toolbox](assignment.md) --- -**Omejitev odgovornosti**: -Ta dokument je bil preveden z uporabo storitve za strojno prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem izvirnem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo strokovno človeško prevajanje. Ne prevzemamo odgovornosti za morebitna nesporazumevanja ali napačne razlage, ki izhajajo iz uporabe tega prevoda. \ No newline at end of file + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo AI prevajalske storitve [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da avtomatizirani prevodi lahko vsebujejo napake ali netočnosti. Izvirni dokument v njegovem izvirnem jeziku je treba obravnavati kot avtoritativni vir. Za kritične informacije je priporočljiv strokovni človeški prevod. Ne odgovarjamo za morebitna nesporazume ali napačne interpretacije, ki izhajajo iz uporabe tega prevoda. + \ No newline at end of file diff --git a/translations/sl/2-Regression/1-Tools/README.md b/translations/sl/2-Regression/1-Tools/README.md index e8f31a576..220b25598 100644 --- a/translations/sl/2-Regression/1-Tools/README.md +++ b/translations/sl/2-Regression/1-Tools/README.md @@ -1,55 +1,55 @@ -# Začnite s Pythonom in Scikit-learn za regresijske modele +# Začnite s Python in Scikit-learn za regresijske modele -![Povzetek regresij v sketchnote](../../../../sketchnotes/ml-regression.png) +![Povzetek regresij v sketchnote](../../../../translated_images/sl/ml-regression.4e4f70e3b3ed446e.webp) > Sketchnote avtorja [Tomomi Imura](https://www.twitter.com/girlie_mac) -## [Predavanje kviz](https://ff-quizzes.netlify.app/en/ml/) +## [Predpredavalni kviz](https://ff-quizzes.netlify.app/en/ml/) -> ### [To lekcijo lahko najdete tudi v jeziku R!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html) +> ### [Ta lekcija je na voljo tudi v R!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html) ## Uvod -V teh štirih lekcijah boste odkrili, kako zgraditi regresijske modele. Kmalu bomo razpravljali, za kaj so ti modeli uporabni. Preden pa začnete, poskrbite, da imate na voljo ustrezna orodja za začetek procesa! +V teh štirih lekcijah boste odkrili, kako zgraditi regresijske modele. Kmalu bomo govorili, čemu so ti modeli namenjeni. A preden karkoli naredite, se prepričajte, da imate postavljena prava orodja za začetek procesa! -V tej lekciji boste izvedeli, kako: +V tej lekciji se boste naučili: -- Pripraviti računalnik za lokalne naloge strojnega učenja. -- Delati z Jupyter zvezki. -- Uporabljati Scikit-learn, vključno z namestitvijo. -- Raziskati linearno regresijo s praktično vajo. +- Kako konfigurirati računalnik za lokalne naloge strojnega učenja. +- Kako delati z Jupyter zvezki (notebooks). +- Kako uporabiti Scikit-learn, vključno z namestitvijo. +- Raziščete linearno regresijo z vajo na praktičnem primeru. ## Namestitve in konfiguracije -[![ML za začetnike - Pripravite orodja za gradnjo modelov strojnega učenja](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML za začetnike - Pripravite orodja za gradnjo modelov strojnega učenja") +[![ML za začetnike - Nastavitev orodij za gradnjo modelov strojnega učenja](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML za začetnike - Nastavite svoja orodja za gradnjo modelov strojnega učenja") -> 🎥 Kliknite zgornjo sliko za kratek video o konfiguraciji računalnika za strojno učenje. +> 🎥 Kliknite zgornjo sliko za kratek video o nastavitvi računalnika za ML. -1. **Namestite Python**. Prepričajte se, da je [Python](https://www.python.org/downloads/) nameščen na vašem računalniku. Python boste uporabljali za številne naloge podatkovne znanosti in strojnega učenja. Večina računalniških sistemov že vključuje namestitev Pythona. Na voljo so tudi uporabni [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott), ki olajšajo nastavitev za nekatere uporabnike. +1. **Namestite Python**. Poskrbite, da imate [Python](https://www.python.org/downloads/) nameščen na računalniku. Python boste uporabljali za številne naloge na področju podatkovne znanosti in strojnega učenja. Večina računalniških sistemov že vsebuje namestitev Pythona. Na voljo so tudi koristni [Python Coding Paketi](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott), ki nekaterim uporabnikom olajšajo nastavitev. - Nekatere uporabe Pythona pa zahtevajo eno različico programske opreme, druge pa drugo. Zato je koristno delati v [virtualnem okolju](https://docs.python.org/3/library/venv.html). + Nekatere uporabe Pythona zahtevajo eno različico programske opreme, druge pa drugo. Iz tega razloga je koristno delati znotraj [virtualnega okolja](https://docs.python.org/3/library/venv.html). -2. **Namestite Visual Studio Code**. Prepričajte se, da imate na računalniku nameščen Visual Studio Code. Sledite tem navodilom za [namestitev Visual Studio Code](https://code.visualstudio.com/) za osnovno namestitev. Python boste uporabljali v Visual Studio Code v tem tečaju, zato se morda želite seznaniti z [nastavitvijo Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) za razvoj v Pythonu. +2. **Namestite Visual Studio Code**. Prepričajte se, da imate Visual Studio Code nameščen na računalniku. Sledite tem navodilom za [namestitev Visual Studio Code](https://code.visualstudio.com/) za osnovno namestitev. Python boste v tem tečaju uporabljali v Visual Studio Code, zato je koristno, da osvežite znanje o tem, kako [konfigurirati Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) za razvoj v Pythonu. - > Seznanite se s Pythonom z delom skozi to zbirko [učnih modulov](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) + > Postanite udobni z uporabo Pythona tako, da preletite to zbirko [učnih modulov](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) > > [![Nastavitev Pythona z Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Nastavitev Pythona z Visual Studio Code") > - > 🎥 Kliknite zgornjo sliko za video: uporaba Pythona v VS Code. + > 🎥 Kliknite zgornjo sliko za video: uporaba Pythona znotraj VS Code. -3. **Namestite Scikit-learn**, tako da sledite [tem navodilom](https://scikit-learn.org/stable/install.html). Ker morate zagotoviti uporabo Pythona 3, je priporočljivo, da uporabite virtualno okolje. Če to knjižnico nameščate na računalnik Mac z M1, so na zgoraj navedeni strani posebna navodila. +3. **Namestite Scikit-learn**, tako da sledite [tem navodilom](https://scikit-learn.org/stable/install.html). Ker morate uporabljati Python 3, je priporočljivo uporabiti virtualno okolje. Če nameščate to knjižnico na M1 Mac, so na zgoraj povezani strani posebna navodila. -4. **Namestite Jupyter Notebook**. Potrebovali boste [namestitev paketa Jupyter](https://pypi.org/project/jupyter/). +1. **Namestite Jupyter Notebook**. Potrebovali boste [namestiti paket Jupyter](https://pypi.org/project/jupyter/). -## Vaše okolje za avtorstvo ML +## Vaše razvojno okolje za ML -Uporabljali boste **zvezke** za razvoj kode v Pythonu in ustvarjanje modelov strojnega učenja. Ta vrsta datoteke je pogosto orodje za podatkovne znanstvenike, prepoznate pa jih po priponi `.ipynb`. +Za razvijanje vaše Python kode in ustvarjanje modelov strojnega učenja boste uporabljali **zvezke**. Ta tip datotek je pogosto orodje podatkovnih znanstvenikov in jih lahko prepoznate po priponi `.ipynb`. -Zvezki so interaktivno okolje, ki razvijalcu omogoča tako kodiranje kot dodajanje opomb in pisanje dokumentacije okoli kode, kar je zelo uporabno za eksperimentalne ali raziskovalno usmerjene projekte. +Zvezki so interaktivno okolje, ki razvijalcu omogoča tako pisanje kode kot dodajanje opomb in pisanje dokumentacije okoli kode, kar je zelo koristno za eksperimentalne ali raziskovalne projekte. [![ML za začetnike - Nastavitev Jupyter zvezkov za začetek gradnje regresijskih modelov](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML za začetnike - Nastavitev Jupyter zvezkov za začetek gradnje regresijskih modelov") -> 🎥 Kliknite zgornjo sliko za kratek video o tej vaji. +> 🎥 Kliknite zgornjo sliko za kratek video skozi to vajo. ### Vaja - delo z zvezkom @@ -57,51 +57,51 @@ V tej mapi boste našli datoteko _notebook.ipynb_. 1. Odprite _notebook.ipynb_ v Visual Studio Code. - Začel se bo Jupyter strežnik s Pythonom 3+. V zvezku boste našli območja, ki jih je mogoče `zagnati`, torej dele kode. Kodo lahko zaženete tako, da izberete ikono, ki izgleda kot gumb za predvajanje. + Začne se bosta zagnala strežnik Jupyter s Pythonom 3+. V zvezku boste našli dele, ki jih je možno `pognati`, kose kode. Kodo lahko pognate tako, da izberete ikono, ki izgleda kot gumb za predvajanje. -2. Izberite ikono `md` in dodajte nekaj markdowna ter naslednje besedilo **# Dobrodošli v vašem zvezku**. +1. Izberite ikono `md` in dodajte nekaj markdowna ter naslednje besedilo **# Dobrodošli v vašem zvezku**. - Nato dodajte nekaj kode v Pythonu. + Nato dodajte nekaj Python kode. -3. Vnesite **print('hello notebook')** v blok kode. -4. Izberite puščico za zagon kode. +1. Vtipkajte **print('hello notebook')** v razdelek s kodo. +1. Izberite puščico za zagon kode. - Videti bi morali natisnjeno izjavo: + Videli boste natisnjen izpis: ```output hello notebook ``` -![VS Code z odprtim zvezkom](../../../../2-Regression/1-Tools/images/notebook.jpg) +![VS Code z odprtim zvezkom](../../../../translated_images/sl/notebook.4a3ee31f396b8832.webp) -Kodo lahko prepletate z opombami, da sami dokumentirate zvezek. +Kodo lahko prepletate s komentarji, da dokumentirate zvezek. -✅ Razmislite za trenutek, kako se delovno okolje spletnega razvijalca razlikuje od okolja podatkovnega znanstvenika. +✅ Razmislite za trenutek, kako drugačno je razvojno okolje spletnega razvijalca v primerjavi z okoljem podatkovnega znanstvenika. -## Začetek dela s Scikit-learn +## Zagon Scikit-learn -Zdaj, ko je Python nastavljen v vašem lokalnem okolju in ste seznanjeni z Jupyter zvezki, se enako seznanimo s Scikit-learn (izgovorjava `sci` kot v `science`). Scikit-learn ponuja [obsežen API](https://scikit-learn.org/stable/modules/classes.html#api-ref) za izvajanje nalog strojnega učenja. +Zdaj, ko je Python nastavljen v vašem lokalnem okolju in ste udobni z Jupyter zvezki, se seznanimo enako udobno s Scikit-learn (izgovarja se `sci` kot v `science`). Scikit-learn ponuja [obsežen API](https://scikit-learn.org/stable/modules/classes.html#api-ref), ki vam pomaga pri opravljanju nalog strojnega učenja. -Po navedbah njihove [spletne strani](https://scikit-learn.org/stable/getting_started.html) je "Scikit-learn odprtokodna knjižnica strojnega učenja, ki podpira nadzorovano in nenadzorovano učenje. Prav tako ponuja različna orodja za prileganje modelov, predobdelavo podatkov, izbiro modelov in ocenjevanje ter številne druge pripomočke." +Po njihovem [spletnem mestu](https://scikit-learn.org/stable/getting_started.html) "je Scikit-learn odprtokodna knjižnica strojnega učenja, ki podpira nadzorovano in nenadzorovano učenje. Prav tako nudi različna orodja za prilagajanje modelov, predobdelavo podatkov, izbor in vrednotenje modela ter številne druge pripomočke." -V tem tečaju boste uporabljali Scikit-learn in druga orodja za gradnjo modelov strojnega učenja za izvajanje nalog, ki jih imenujemo 'tradicionalno strojno učenje'. Namenoma smo se izognili nevronskim mrežam in globokemu učenju, saj so bolje obravnavani v našem prihajajočem učnem načrtu 'AI za začetnike'. +V tem tečaju boste uporabili Scikit-learn in druga orodja za gradnjo modelov strojnega učenja za izvedbo tistih nalog, ki jih imenujemo 'tradicionalno strojno učenje'. Zavestno smo se izognili nevronskim mrežam in globokemu učenju, saj so bolje pokriti v našem prihajajočem učnem načrtu 'AI za začetnike'. -Scikit-learn omogoča enostavno gradnjo modelov in njihovo ocenjevanje za uporabo. Osredotoča se predvsem na uporabo numeričnih podatkov in vsebuje več pripravljenih naborov podatkov za uporabo kot učna orodja. Prav tako vključuje vnaprej pripravljene modele, ki jih lahko študentje preizkusijo. Raziskujmo proces nalaganja vnaprej pripravljenih podatkov in uporabe vgrajenega ocenjevalnika za prvi ML model s Scikit-learn z osnovnimi podatki. +Scikit-learn olajša gradnjo modelov in njihovo vrednotenje glede na uporabo. Osredotoča se predvsem na numerične podatke in vsebuje več vgrajenih podatkovnih zbirk za učenje. Vključuje tudi vnaprej pripravljene modele za preizkušanje. Raziskajmo proces nalaganja že pripravljenih podatkov in uporabo vgrajenega ocenilca - prvega ML modela s Scikit-learn na osnovi osnovnih podatkov. -## Vaja - vaš prvi zvezek s Scikit-learn +## Vaja - vaš prvi Scikit-learn zvezek -> Ta vadnica je bila navdihnjena z [primerom linearne regresije](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) na spletni strani Scikit-learn. +> Ta vodič je navdihnila [linearna regresija primer](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) na Scikit-learn spletni strani. -[![ML za začetnike - Vaš prvi projekt linearne regresije v Pythonu](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "ML za začetnike - Vaš prvi projekt linearne regresije v Pythonu") +[![ML za začetnike - vaš prvi linearni regresijski projekt v Pythonu](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "ML za začetnike - vaš prvi linearni regresijski projekt v Pythonu") -> 🎥 Kliknite zgornjo sliko za kratek video o tej vaji. +> 🎥 Kliknite zgornjo sliko za kratek video skozi to vajo. -V datoteki _notebook.ipynb_, povezani s to lekcijo, izbrišite vse celice s pritiskom na ikono 'koš za smeti'. +V datoteki _notebook.ipynb_ povezanih s to lekcijo počistite vse celice z klikom ikone 'koš'. -V tem razdelku boste delali z majhnim naborom podatkov o sladkorni bolezni, ki je vgrajen v Scikit-learn za učne namene. Predstavljajte si, da želite preizkusiti zdravljenje za bolnike s sladkorno boleznijo. Modeli strojnega učenja vam lahko pomagajo določiti, kateri bolniki bi se bolje odzvali na zdravljenje, na podlagi kombinacij spremenljivk. Tudi zelo osnovni regresijski model, ko je vizualiziran, lahko pokaže informacije o spremenljivkah, ki bi vam pomagale organizirati teoretične klinične preizkuse. +V tem razdelku boste delali z majhnim podatkovnim nizom o diabetiku, ki je vključen v Scikit-learn za učne namene. Predstavljajte si, da želite preizkusiti zdravljenje za bolnike z diabetesom. Modeli strojnega učenja bi vam lahko pomagali določiti, kateri bolniki bi bolje reagirali na zdravljenje, glede na kombinacije spremenljivk. Tudi zelo osnovni regresijski model, ko je vizualiziran, vam lahko pokaže informacije o spremenljivkah, ki bi pomagale organizirati vaše teoretične klinične preizkuse. -✅ Obstaja veliko vrst regresijskih metod, izbira pa je odvisna od vprašanja, na katerega želite odgovoriti. Če želite napovedati verjetno višino osebe določene starosti, bi uporabili linearno regresijo, saj iščete **numerično vrednost**. Če vas zanima, ali naj se določena vrsta kuhinje šteje za vegansko ali ne, iščete **kategorijsko dodelitev**, zato bi uporabili logistično regresijo. Kasneje boste izvedeli več o logistični regresiji. Razmislite o nekaterih vprašanjih, ki jih lahko postavite podatkom, in kateri od teh metod bi bila bolj primerna. +✅ Obstaja veliko vrst regresijskih metod, izbira prave pa je odvisna od vprašanja, na katero iščete odgovor. Če želite napovedati verjetno višino osebe določene starosti, uporabite linearno regresijo, saj iščete **numerično vrednost**. Če vas zanima, ali naj se ena vrsta kuhinje šteje kot veganska ali ne, iščete **kategorijsko dodelitev**, zato bi uporabili logistično regresijo. O logistični regresiji se boste naučili več kasneje. Premislite o nekaterih vprašanjih, ki si jih lahko zastavite o podatkih, in katere od teh metod bi bile ustreznejše. Začnimo s to nalogo. @@ -109,13 +109,13 @@ Začnimo s to nalogo. Za to nalogo bomo uvozili nekaj knjižnic: -- **matplotlib**. To je uporabno [orodje za risanje grafov](https://matplotlib.org/), ki ga bomo uporabili za ustvarjanje linijskega grafa. -- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) je uporabna knjižnica za obdelavo numeričnih podatkov v Pythonu. -- **sklearn**. To je [knjižnica Scikit-learn](https://scikit-learn.org/stable/user_guide.html). +- **matplotlib**. Uporabna [orodje za risanje grafov](https://matplotlib.org/), ki ga bomo uporabili za izdelavo črtnega grafa. +- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) je koristna knjižnica za upravljanje numeričnih podatkov v Pythonu. +- **sklearn**. To je knjižnica [Scikit-learn](https://scikit-learn.org/stable/user_guide.html). -Uvozite nekaj knjižnic za pomoč pri nalogah. +Uvozite nekaj knjižnic, ki vam bodo pomagale pri nalogah. -1. Dodajte uvoze z vnosom naslednje kode: +1. Dodajte uvoze tako, da vnesete naslednjo kodo: ```python import matplotlib.pyplot as plt @@ -123,26 +123,26 @@ Uvozite nekaj knjižnic za pomoč pri nalogah. from sklearn import datasets, linear_model, model_selection ``` - Zgornja koda uvaža `matplotlib`, `numpy` in `datasets`, `linear_model` ter `model_selection` iz `sklearn`. `model_selection` se uporablja za razdelitev podatkov na učne in testne sklope. + Zgoraj uvažate `matplotlib`, `numpy` in uvažate `datasets`, `linear_model` ter `model_selection` iz `sklearn`. `model_selection` se uporablja za razdelitev podatkov na učne in testne sklope. -### Nabor podatkov o sladkorni bolezni +### Diabetični podatkovni niz -Vgrajeni [nabor podatkov o sladkorni bolezni](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) vključuje 442 vzorcev podatkov o sladkorni bolezni z 10 značilnimi spremenljivkami, med katerimi so nekatere: +Vgrajeni [diabetični podatkovni niz](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) vključuje 442 vzorcev podatkov o diabetesu, z 10 značilnimi spremenljivkami, nekaj naslova: - starost: starost v letih - bmi: indeks telesne mase - bp: povprečni krvni tlak -- s1 tc: T-celice (vrsta belih krvnih celic) +- s1 tc: T celice (vrsta belih krvnih celic) -✅ Ta nabor podatkov vključuje koncept 'spola' kot značilne spremenljivke, pomembne za raziskave o sladkorni bolezni. Številni medicinski nabori podatkov vključujejo tovrstno binarno klasifikacijo. Razmislite, kako bi lahko takšne kategorizacije izključile določene dele populacije iz zdravljenja. +✅ Ta podatkovni niz vključuje koncept 'spola' kot značilno spremenljivko, pomembno za raziskave o diabetesu. Veliko medicinskih podatkovnih nizov vključuje tovrstno binarno klasifikacijo. Premislite, kako bi takšne kategorizacije lahko izključile določene dele prebivalstva iz zdravljenj. -Zdaj naložite podatke X in y. +Zdaj naložite podatka X in y. -> 🎓 Ne pozabite, da gre za nadzorovano učenje, zato potrebujemo imenovan cilj 'y'. +> 🎓 Zapomnite si, da gre za nadzorovano učenje in potrebujemo imenovani cilj 'y'. -V novi celici kode naložite nabor podatkov o sladkorni bolezni z uporabo `load_diabetes()`. Vhod `return_X_y=True` signalizira, da bo `X` matrika podatkov, `y` pa regresijski cilj. +V novi celici s kodo naložite diabetični podatkovni niz s klicem `load_diabetes()`. Vhod `return_X_y=True` signalizira, da bo `X` podatkovna matrika, `y` pa regresijski cilj. -1. Dodajte nekaj ukazov za izpis, da prikažete obliko matrike podatkov in njen prvi element: +1. Dodajte nekaj ukazov za izpis oblike podatkovne matrike in njenega prvega elementa: ```python X, y = datasets.load_diabetes(return_X_y=True) @@ -150,9 +150,9 @@ V novi celici kode naložite nabor podatkov o sladkorni bolezni z uporabo `load_ print(X[0]) ``` - Kar dobite kot odgovor, je nabor. Prva dva vrednosti nabora dodelite `X` in `y`. Več o [naborih](https://wikipedia.org/wiki/Tuple) lahko izveste tukaj. + Kar prejemate kot odgovor, je nabor dveh vrednosti (tuple). To, kar počnete, je, da dodelite prvi dve vrednosti iz nabora `X` in `y` vrstnem redu. Več o [tuple](https://wikipedia.org/wiki/Tuple) lahko preberete. - Vidite lahko, da ti podatki vsebujejo 442 elementov, oblikovanih v poljih z 10 elementi: + Vidite lahko, da podatki vsebujejo 442 elemente, oblikovane v tabele z 10 elementi: ```text (442, 10) @@ -160,39 +160,39 @@ V novi celici kode naložite nabor podatkov o sladkorni bolezni z uporabo `load_ -0.04340085 -0.00259226 0.01990842 -0.01764613] ``` - ✅ Razmislite o razmerju med podatki in regresijskim ciljem. Linearna regresija napoveduje razmerja med značilnostjo X in ciljno spremenljivko y. Ali lahko v dokumentaciji najdete [cilj](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) za nabor podatkov o sladkorni bolezni? Kaj ta nabor podatkov prikazuje, glede na cilj? + ✅ Razmislite o povezavi med podatki in regresijskim ciljem. Linearna regresija napoveduje razmerja med značilko X in ciljno spremenljivko y. Ali lahko poiščete [cilj](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) za diabetični podatkovni niz v dokumentaciji? Kaj ta podatkovni niz prikazuje glede na cilj? -2. Nato izberite del tega nabora podatkov za risanje tako, da izberete 3. stolpec nabora podatkov. To lahko storite z uporabo operatorja `:` za izbiro vseh vrstic, nato pa izberete 3. stolpec z uporabo indeksa (2). Podatke lahko preoblikujete v 2D matriko - kot je potrebno za risanje - z uporabo `reshape(n_rows, n_columns)`. Če je eden od parametrov -1, se ustrezna dimenzija izračuna samodejno. +2. Nato izberite del tega podatkovnega niza za prikaz tako, da izberete 3. stolpec podatkovnega niza. To lahko naredite z uporabo operatorja `:`, ki izbere vse vrstice, in nato izberete 3. stolpec z indeksom (2). Podatke lahko tudi preoblikujete v 2D tabelo - kot zahtevano za prikaz - z uporabo `reshape(n_rows, n_columns)`. Če je kateri parameter -1, se ta dimenzija samodejno izračuna. ```python X = X[:, 2] X = X.reshape((-1,1)) ``` - ✅ Kadarkoli natisnite podatke, da preverite njihovo obliko. + ✅ Kadarkoli izpišite podatke, da preverite obliko. -3. Zdaj, ko imate podatke pripravljene za risanje, lahko preverite, ali lahko stroj pomaga določiti logično ločnico med številkami v tem naboru podatkov. Za to morate razdeliti tako podatke (X) kot cilj (y) na testne in učne sklope. Scikit-learn ima preprost način za to; testne podatke lahko razdelite na določenem mestu. +3. Ko imate podatke pripravljene za prikaz, preverite, če vam lahko stroj pomaga določiti logično razdelitev števil v tem podatkovnem nizu. Za to morate razdeliti podatke (X) in cilj (y) na učne in testne sklade. Scikit-learn omogoča enostavno razdelitev testnih podatkov na določenem mestu. ```python X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33) ``` -4. Zdaj ste pripravljeni na učenje modela! Naložite model linearne regresije in ga naučite z učnimi sklopi X in y z uporabo `model.fit()`: +4. Zdaj ste pripravljeni na učenje modela! Naložite linearni regresijski model in ga trenirajte z učnimi sklopi X in y z uporabo `model.fit()`: ```python model = linear_model.LinearRegression() model.fit(X_train, y_train) ``` - ✅ `model.fit()` je funkcija, ki jo boste videli v številnih knjižnicah ML, kot je TensorFlow. + ✅ Funkcijo `model.fit()` boste pogosto videli v knjižnicah za ML, kot je TensorFlow. -5. Nato ustvarite napoved z uporabo testnih podatkov z uporabo funkcije `predict()`. To bo uporabljeno za risanje črte med skupinami podatkov. +5. Nato ustvarite napoved z uporabo testnih podatkov, z uporabo funkcije `predict()`. To bo uporabljeno za risanje črte med podatkovnimi skupinami. ```python y_pred = model.predict(X_test) ``` -6. Zdaj je čas, da prikažete podatke na grafu. Matplotlib je zelo uporabno orodje za to nalogo. Ustvarite razpršeni grafikon vseh testnih podatkov X in y ter uporabite napoved za risanje črte na najbolj primernem mestu med skupinami podatkov modela. +6. Zdaj je čas, da prikažete podatke na grafikonu. Matplotlib je zelo uporabno orodje za to nalogo. Naredite razpršeni graf (scatterplot) vseh testnih podatkov X in y ter uporabite napoved, da narišete črto na najbolj primernem mestu, med skupinami podatkov modela. ```python plt.scatter(X_test, y_test, color='black') @@ -203,22 +203,24 @@ V novi celici kode naložite nabor podatkov o sladkorni bolezni z uporabo `load_ plt.show() ``` - ![razpršeni grafikon, ki prikazuje podatkovne točke o sladkorni bolezni](../../../../2-Regression/1-Tools/images/scatterplot.png) -✅ Razmislite malo o tem, kaj se tukaj dogaja. Ravna črta poteka skozi številne majhne točke podatkov, vendar kaj pravzaprav počne? Ali vidite, kako bi morali biti sposobni uporabiti to črto za napovedovanje, kje bi se nova, nevidna podatkovna točka morala uvrstiti glede na y-os grafa? Poskusite z besedami opisati praktično uporabo tega modela. + ![razpršeni graf prikazuje podatkovne točke o diabetesu](../../../../translated_images/sl/scatterplot.ad8b356bcbb33be6.webp) -Čestitke, izdelali ste svoj prvi model linearne regresije, ustvarili napoved z njim in jo prikazali na grafu! + + ✅ Razmislite malo o tem, kaj se tukaj dogaja. Ravna črta poteka skozi veliko majhnih točk podatkov, a kaj točno počne? Vidite, kako bi morali uporabiti to črto, da napoveste, kje naj bi se nova, nevidena podatkovna točka ujemala glede na y os grafa? Poskusite z besedami opisati praktično uporabo tega modela. + +Čestitke, zgradili ste svoj prvi linearni regresijski model, z njim ustvarili napoved in jo prikazali na grafu! --- ## 🚀Izziv -Prikažite drugo spremenljivko iz tega nabora podatkov. Namig: uredite to vrstico: `X = X[:,2]`. Glede na cilj tega nabora podatkov, kaj lahko odkrijete o napredovanju sladkorne bolezni kot bolezni? +Narišite drugo spremenljivko iz tega nabora podatkov. Namig: uredite to vrstico: `X = X[:,2]`. Glede na cilj tega nabora podatkov, kaj lahko odkrijete o napredovanju diabetesa kot bolezni? ## [Kvizi po predavanju](https://ff-quizzes.netlify.app/en/ml/) -## Pregled & Samostojno učenje +## Pregled in samostojno učenje -V tem vodiču ste delali z enostavno linearno regresijo, ne pa z univariatno ali večkratno linearno regresijo. Preberite nekaj o razlikah med temi metodami ali si oglejte [ta video](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef). +V tej vadnici ste delali s preprosto linearno regresijo, ne z enospremenljivostno ali večspremenljivostno linearno regresijo. Preberite nekaj o razlikah med temi metodami ali si oglejte [ta video](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) -Preberite več o konceptu regresije in razmislite, kakšna vprašanja je mogoče odgovoriti s to tehniko. Vzemite [ta vodič](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott), da poglobite svoje razumevanje. +Preberite več o pojmu regresije in razmislite, kakšna vprašanja lahko ta tehnika odgovori. Oglejte si ta [vodnik](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott), da poglobite svoje razumevanje. ## Naloga @@ -226,5 +228,7 @@ Preberite več o konceptu regresije in razmislite, kakšna vprašanja je mogoče --- -**Omejitev odgovornosti**: -Ta dokument je bil preveden z uporabo storitve za strojno prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da se zavedate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem izvirnem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo strokovno človeško prevajanje. Ne prevzemamo odgovornosti za morebitna nesporazumevanja ali napačne razlage, ki izhajajo iz uporabe tega prevoda. \ No newline at end of file + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo AI prevajalske storitve [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da avtomatizirani prevodi lahko vsebujejo napake ali netočnosti. Izvirni dokument v njegovem izvirnem jeziku je treba obravnavati kot avtoritativni vir. Za kritične informacije je priporočljiv strokovni človeški prevod. Ne odgovarjamo za morebitna nesporazume ali napačne interpretacije, ki izhajajo iz uporabe tega prevoda. + \ No newline at end of file diff --git a/translations/sl/2-Regression/2-Data/README.md b/translations/sl/2-Regression/2-Data/README.md index b7f63235b..912122421 100644 --- a/translations/sl/2-Regression/2-Data/README.md +++ b/translations/sl/2-Regression/2-Data/README.md @@ -1,60 +1,60 @@ -# Ustvarjanje regresijskega modela s Scikit-learn: priprava in vizualizacija podatkov +# Zgradite regresijski model s Scikit-learn: pripravite in vizualizirajte podatke -![Infografika vizualizacije podatkov](../../../../2-Regression/2-Data/images/data-visualization.png) +![Infografika vizualizacije podatkov](../../../../translated_images/sl/data-visualization.54e56dded7c1a804.webp) Infografika avtorja [Dasani Madipalli](https://twitter.com/dasani_decoded) -## [Predavanje kviz](https://ff-quizzes.netlify.app/en/ml/) +## [Predpredavanje kviz](https://ff-quizzes.netlify.app/en/ml/) -> ### [To lekcijo lahko najdete tudi v jeziku R!](../../../../2-Regression/2-Data/solution/R/lesson_2.html) +> ### [To lekcijo je na voljo tudi v R!](../../../../2-Regression/2-Data/solution/R/lesson_2.html) ## Uvod -Zdaj, ko imate na voljo orodja za gradnjo modelov strojnega učenja s Scikit-learn, ste pripravljeni začeti postavljati vprašanja svojim podatkom. Pri delu s podatki in uporabi rešitev strojnega učenja je zelo pomembno, da znate postaviti prava vprašanja, da lahko pravilno izkoristite potenciale svojega nabora podatkov. +Zdaj, ko imate pripravljena orodja za začetek gradnje modelov strojnega učenja s Scikit-learn, ste pripravljeni začeti postavljati vprašanja svojim podatkom. Ko delate s podatki in uporabljate rešitve strojnega učenja, je zelo pomembno razumeti, kako zastaviti pravilno vprašanje, da boste lahko pravilno odkrili potenciale vašega nabora podatkov. -V tej lekciji boste spoznali: +V tej lekciji se boste naučili: - Kako pripraviti podatke za gradnjo modela. - Kako uporabiti Matplotlib za vizualizacijo podatkov. +- Kako uporabiti Seaborn za izraženejšo vizualizacijo podatkov. -## Postavljanje pravih vprašanj svojim podatkom +## Postavljanje pravih vprašanj podatkom -Vprašanje, na katerega želite odgovor, bo določilo, katere vrste algoritmov strojnega učenja boste uporabili. Kakovost odgovora pa bo močno odvisna od narave vaših podatkov. +Vprašanje, na katerega potrebujete odgovor, bo določilo, katere vrste ML algoritmov boste uporabili. Kakovost odgovora, ki ga prejmete, bo močno odvisna od narave vaših podatkov. -Oglejte si [podatke](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv), ki so na voljo za to lekcijo. Datoteko .csv lahko odprete v programu VS Code. Hiter pregled takoj pokaže, da so prisotne prazne vrednosti ter mešanica nizov in številskih podatkov. Obstaja tudi nenavaden stolpec z imenom 'Package', kjer so podatki mešanica 'sacks', 'bins' in drugih vrednosti. Podatki so pravzaprav precej neurejeni. +Oglejte si [podatke](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) za to lekcijo. To .csv datoteko lahko odprete v VS Code. Hitro pregledovanje takoj pokaže, da so v podatkih prazna mesta in mešanica nizov in številčnih podatkov. Tudi stolpec z imenom 'Package' je nenavaden, saj so podatki mešanica med 'sacks', 'bins' in drugimi vrednostmi. Podatki so pravzaprav rahlo zmedeni. -[![ML za začetnike - Kako analizirati in očistiti nabor podatkov](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML za začetnike - Kako analizirati in očistiti nabor podatkov") +[![ML za začetnike - Kako analizirati in očistiti dataset](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML za začetnike - Kako analizirati in očistiti dataset") -> 🎥 Kliknite zgornjo sliko za kratek video o pripravi podatkov za to lekcijo. +> 🎥 Kliknite zgornjo sliko za kratek video, ki prikazuje pripravo podatkov za to lekcijo. -Pravzaprav ni pogosto, da dobite nabor podatkov, ki je popolnoma pripravljen za ustvarjanje modela strojnega učenja. V tej lekciji se boste naučili, kako pripraviti surove podatke z uporabo standardnih knjižnic za Python. Spoznali boste tudi različne tehnike za vizualizacijo podatkov. +Pravzaprav ni pogosto, da dobite neposredno uporabljiv dataset za takojšnjo ustvarjanje ML modela. V tej lekciji se boste naučili, kako pripraviti surove podatke z uporabo standardnih knjižnic v Pythonu. Prav tako se boste naučili različnih tehnik za vizualizacijo podatkov. ## Študija primera: 'trg buč' -V tej mapi boste našli datoteko .csv v korenski mapi `data`, imenovano [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv), ki vključuje 1757 vrstic podatkov o trgu buč, razvrščenih po mestih. To so surovi podatki, pridobljeni iz [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice), ki jih distribuira Ministrstvo za kmetijstvo ZDA. +V tej mapi boste našli .csv datoteko v korenski mapi `data` z imenom [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv), ki vključuje 1757 vrstic podatkov o trgu buč, razvrščenih po skupinah po mestih. To so surovi podatki, pridobljeni iz [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice), ki jih distribuira Ministrstvo za kmetijstvo Združenih držav Amerike. ### Priprava podatkov -Ti podatki so v javni domeni. Na spletni strani USDA jih je mogoče prenesti v številnih ločenih datotekah, po mestih. Da bi se izognili prevelikemu številu ločenih datotek, smo združili vse podatke mest v eno preglednico, kar pomeni, da smo podatke že nekoliko _pripravili_. Zdaj si podrobneje oglejmo podatke. +Ti podatki so v javni domeni. Na spletni strani USDA jih je mogoče prenesti v več ločenih datotekah, po mestih. Da bi se izognili preveliki količini datotek, smo vse podatke združili v eno preglednico, tako da smo podatke že malce _pripravili_. Naslednje poglejmo podatke podrobneje. -### Podatki o bučah - prvi vtisi +### Podatki o bučah - zgodnji zaključki -Kaj opazite pri teh podatkih? Že prej ste videli, da gre za mešanico nizov, števil, praznih vrednosti in nenavadnih vrednosti, ki jih morate razumeti. - -Katero vprašanje lahko postavite tem podatkom z uporabo regresijske tehnike? Kaj pa "Napovedovanje cene buče za prodajo v določenem mesecu"? Če ponovno pogledate podatke, boste opazili, da morate narediti nekaj sprememb, da ustvarite strukturo podatkov, potrebno za to nalogo. +Kaj opažate pri teh podatkih? Že ste videli, da je tam mešanica nizov, številk, praznin in nenavadnih vrednosti, ki jih morate razumeti. +Kakšno vprašanje lahko zastavite tem podatkom s pomočjo regresijske tehnike? Kaj pa "Napovej ceno buče za prodajo v določenem mesecu"? Obnovitev podatkov kaže, da boste morali narediti nekaj sprememb, da ustvarite potrebno podatkovno strukturo za to nalogo. ## Vaja - analiza podatkov o bučah -Uporabimo [Pandas](https://pandas.pydata.org/) (ime pomeni `Python Data Analysis`), zelo uporabno orodje za oblikovanje podatkov, za analizo in pripravo teh podatkov o bučah. +Uporabimo [Pandas](https://pandas.pydata.org/) (kratica za `Python Data Analysis`), orodje, ki je zelo uporabno za oblikovanje podatkov, za analizo in pripravo teh podatkov o bučah. ### Najprej preverite manjkajoče datume -Najprej boste morali preveriti, ali manjkajo datumi: +Najprej boste morali izvesti korake za preverjanje manjkajočih datumov: -1. Pretvorite datume v mesečni format (to so datumi iz ZDA, zato je format `MM/DD/YYYY`). -2. Izluščite mesec v nov stolpec. +1. Pretvorite datume v format meseca (to so ameriški datumi, format je `MM/DD/YYYY`). +2. Izvlecite mesec v nov stolpec. -Odprite datoteko _notebook.ipynb_ v Visual Studio Code in uvozite preglednico v nov Pandas dataframe. +Odprite _notebook.ipynb_ datoteko v Visual Studio Code in uvozite preglednico v nov Pandas dataframe. 1. Uporabite funkcijo `head()`, da si ogledate prvih pet vrstic. @@ -64,28 +64,28 @@ Odprite datoteko _notebook.ipynb_ v Visual Studio Code in uvozite preglednico v pumpkins.head() ``` - ✅ Katero funkcijo bi uporabili za ogled zadnjih petih vrstic? + ✅ Katero funkcijo bi uporabili za ogled zadnjih pet vrstic? -1. Preverite, ali v trenutnem dataframeu manjkajo podatki: +1. Preverite, če so v trenutnem dataframe-u manjkajoči podatki: ```python pumpkins.isnull().sum() ``` - Manjkajo podatki, vendar morda to ne bo pomembno za nalogo. + Podatki manjkajo, vendar morda to za trenutni namen ni pomembno. -1. Da bo vaš dataframe lažji za delo, izberite samo stolpce, ki jih potrebujete, z uporabo funkcije `loc`, ki iz izvirnega dataframea izlušči skupino vrstic (podanih kot prvi parameter) in stolpcev (podanih kot drugi parameter). Izraz `:` v spodnjem primeru pomeni "vse vrstice". +1. Da bi bilo delo s dataframe-om lažje, izberite samo stolpce, ki jih potrebujete, z uporabo funkcije `loc`, ki iz izvirnega dataframe-a izvleče skupino vrstic (kot prvi parameter) in stolpcev (kot drugi parameter). Izraz `:` v spodnjem primeru pomeni "vse vrstice". ```python columns_to_select = ['Package', 'Low Price', 'High Price', 'Date'] pumpkins = pumpkins.loc[:, columns_to_select] ``` -### Drugič, določite povprečno ceno buče +### Drugič, določi povprečno ceno buče -Razmislite, kako določiti povprečno ceno buče v določenem mesecu. Katere stolpce bi izbrali za to nalogo? Namig: potrebovali boste 3 stolpce. +Razmislite, kako določiti povprečno ceno buče v določenem mesecu. Katere stolpce bi izbrali za to nalogo? Namig: potrebujete 3 stolpce. -Rešitev: vzemite povprečje stolpcev `Low Price` in `High Price`, da napolnite nov stolpec Price, in pretvorite stolpec Date, da prikaže samo mesec. Na srečo, glede na zgornjo preverbo, ni manjkajočih podatkov za datume ali cene. +Rešitev: vzamete povprečje stolpcev `Low Price` in `High Price` za izpolnitev novega stolpca Price in pretvorite stolpec Date tako, da prikazuje samo mesec. Na srečo, kot kaže zgornja kontrola, manjkajočih podatkov za datume ali cene ni. 1. Za izračun povprečja dodajte naslednjo kodo: @@ -96,37 +96,37 @@ Rešitev: vzemite povprečje stolpcev `Low Price` in `High Price`, da napolnite ``` - ✅ Po želji natisnite katerikoli podatek, ki ga želite preveriti, z uporabo `print(month)`. + ✅ Po želji lahko katerikoli podatek preverite z `print(month)`. -2. Zdaj kopirajte pretvorjene podatke v nov Pandas dataframe: +2. Nato kopirajte pretvorjene podatke v svež Pandas dataframe: ```python new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price}) ``` - Če natisnete svoj dataframe, boste videli čist, urejen nabor podatkov, na katerem lahko gradite svoj novi regresijski model. + Izpis vašega dataframe-a bo prikazal čist in urejen podatkovni niz, na katerega lahko zgradite novi regresijski model. -### Ampak počakajte! Nekaj je čudnega +### A počakajte! Nekaj je sumljivo tukaj -Če pogledate stolpec `Package`, so buče prodane v različnih konfiguracijah. Nekatere so prodane v '1 1/9 bushel' enotah, nekatere v '1/2 bushel' enotah, nekatere na bučo, nekatere na funt, in nekatere v velikih škatlah različnih širin. +Če pogledate stolpec `Package`, se buče prodajajo v različnih konfiguracijah. Nekatere se prodajajo v količinah '1 1/9 bushel', nekatere v '1/2 bushel', nekatere na bučo, nekatere na funt, in nekatere v velikih škatlah različnih širino. -> Zdi se, da je buče zelo težko dosledno tehtati +> Buče se zdijo zelo težke za dosledno tehtanje -Če se poglobite v izvirne podatke, je zanimivo, da imajo vse enote z `Unit of Sale` enako 'EACH' ali 'PER BIN' tudi vrsto `Package` na palec, na bin ali 'each'. Zdi se, da je buče zelo težko dosledno tehtati, zato jih filtrirajmo tako, da izberemo samo buče z nizom 'bushel' v njihovem stolpcu `Package`. +Če se poglobite v izvirne podatke, je zanimivo, da imajo vse vrednosti z `Unit of Sale`, enako 'EACH' ali 'PER BIN', tudi tip `Package` po palcu, po zabojniku ali 'each'. Buče se zdi, da so zelo težke za dosledno tehtanje, zato jih filtrirajmo tako, da izberemo samo buče z nizom 'bushel' v stolpcu `Package`. -1. Dodajte filter na vrhu datoteke, pod začetnim uvozom .csv: +1. Dodajte filter na vrh datoteke, pod začetnim uvozom .csv: ```python pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)] ``` - Če zdaj natisnete podatke, lahko vidite, da dobite le približno 415 vrstic podatkov, ki vsebujejo buče po buslju. + Če zdaj izpišete podatke, boste videli, da dobite samo približno 415 vrstic podatkov, ki vsebujejo buče po bushel-ih. -### Ampak počakajte! Še nekaj je treba narediti +### A počakajte! Še nekaj je treba narediti -Ste opazili, da se količina buslja razlikuje po vrsticah? Potrebno je normalizirati cene, da prikažete cene na buselj, zato naredite nekaj izračunov za standardizacijo. +Ste opazili, da se količina bushel razlikuje po vrsticah? Potrebno je normalizirati cene, da bodo prikazane cene na bushel, zato naredite račun, da standardizirate vrednosti. -1. Dodajte te vrstice po bloku, ki ustvarja dataframe new_pumpkins: +1. Dodajte te vrstice za blokom, ki ustvarja dataframe new_pumpkins: ```python new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9) @@ -134,38 +134,38 @@ Ste opazili, da se količina buslja razlikuje po vrsticah? Potrebno je normalizi new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2) ``` -✅ Po podatkih [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) teža buslja variira glede na vrsto pridelka, saj gre za meritev prostornine. "Buselj paradižnikov, na primer, naj bi tehtal 56 funtov... Listi in zelenjava zavzamejo več prostora z manjšo težo, zato buselj špinače tehta le 20 funtov." Vse skupaj je precej zapleteno! Ne ukvarjajmo se s pretvorbo buslja v funte, ampak raje določimo ceno na buselj. Vse to proučevanje busljev buč pa kaže, kako zelo pomembno je razumeti naravo svojih podatkov! +✅ Po podatkih [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) je teža bushela odvisna od vrste pridelka, saj je to meritev volumna. "Bushel paradižnika, na primer, naj bi tehtal 56 funtov... Listi in zelenjava zavzamejo več prostora z manjšo težo, zato bushel špinače tehta le 20 funtov." Vse je precej zapleteno! Ne trudimo se s pretvorbo bushel-v-funte, temveč cenimo po bushel-u. Vse to študijsko delo o bushel-ih buč pa kaže, kako pomembno je razumeti naravo podatkov! -Zdaj lahko analizirate cene na enoto glede na njihovo meritev buslja. Če še enkrat natisnete podatke, lahko vidite, kako so standardizirani. +Zdaj lahko analizirate cene na enoto glede na njihovo mero bushel. Če podatke še enkrat izpišete, boste videli, kako so standardizirani. -✅ Ste opazili, da so buče, prodane po pol buslja, zelo drage? Ali lahko ugotovite, zakaj? Namig: majhne buče so veliko dražje od velikih, verjetno zato, ker jih je veliko več na buselj, glede na neizkoriščen prostor, ki ga zavzame ena velika votla buča za pito. +✅ Ste opazili, da so buče, ki se prodajajo na pol bushela, zelo drage? Ali lahko ugotovite, zakaj? Namig: majhne buče so veliko dražje kot velike, verjetno zato, ker jih je na bushel veliko več, glede na neuporabljeni prostor, ki ga zavzema ena velika votla buča za pito. ## Strategije vizualizacije -Del naloge podatkovnega znanstvenika je prikazati kakovost in naravo podatkov, s katerimi dela. To pogosto dosežejo z ustvarjanjem zanimivih vizualizacij, kot so grafi, diagrami in tabele, ki prikazujejo različne vidike podatkov. Na ta način lahko vizualno prikažejo odnose in vrzeli, ki jih je sicer težko odkriti. +Del naloge podatkovnega znanstvenika je prikazati kakovost in naravo podatkov, s katerimi dela. Pogosto ustvarjajo zanimive vizualizacije, grafične prikaze, grafikone in diagrame, ki prikazujejo različne vidike podatkov. S tem vizualno pokažejo odnose in praznine, ki bi jih sicer težko odkrili. [![ML za začetnike - Kako vizualizirati podatke z Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML za začetnike - Kako vizualizirati podatke z Matplotlib") -> 🎥 Kliknite zgornjo sliko za kratek video o vizualizaciji podatkov za to lekcijo. +> 🎥 Kliknite zgornjo sliko za kratek video, ki obravnava vizualizacijo podatkov za to lekcijo. -Vizualizacije lahko pomagajo tudi pri določanju tehnike strojnega učenja, ki je najbolj primerna za podatke. Na primer, raztrosni diagram, ki sledi liniji, kaže, da so podatki primerni za nalogo linearne regresije. +Vizualizacije lahko prav tako pomagajo določiti tehniko strojnega učenja, ki je za podatke najbolj primerna. Na primer, razpršeni diagram, ki nakazuje vrstico, pomeni, da so podatki dober kandidat za linearno regresijsko vajo. -Ena od knjižnic za vizualizacijo podatkov, ki dobro deluje v Jupyterjevih beležnicah, je [Matplotlib](https://matplotlib.org/) (ki ste jo videli tudi v prejšnji lekciji). +Ena izmed knjižnic za vizualizacijo podatkov, ki dobro deluje v Jupyter beležnicah, je [Matplotlib](https://matplotlib.org/) (ki ste jo videli tudi v prejšnji lekciji). -> Pridobite več izkušenj z vizualizacijo podatkov v [teh vadnicah](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott). +> Pridobite več izkušenj z vizualizacijo podatkov s temi [tutoriali](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott). -## Vaja - eksperimentiranje z Matplotlib +## Vaja - eksperimentirajte z Matplotlib -Poskusite ustvariti osnovne grafe za prikaz novega dataframea, ki ste ga pravkar ustvarili. Kaj bi pokazal osnovni linijski graf? +Poskusite ustvariti nekaj osnovnih grafikonov za prikaz novega dataframe-a, ki ste ga pravkar ustvarili. Kaj bi prikazal osnovni graf linije? -1. Uvozite Matplotlib na vrhu datoteke, pod uvozom Pandas: +1. Uvozite Matplotlib na vrh datoteke, pod uvozom Pandas: ```python import matplotlib.pyplot as plt ``` -1. Ponovno zaženite celotno beležnico za osvežitev. -1. Na dnu beležnice dodajte celico za prikaz podatkov kot škatlasti graf: +1. Ponovno zaženite celoten notebook, da osvežite. +1. Na dnu beležnice dodajte celico za risanje podatkov kot box plot: ```python price = new_pumpkins.Price @@ -174,44 +174,121 @@ Poskusite ustvariti osnovne grafe za prikaz novega dataframea, ki ste ga pravkar plt.show() ``` - ![Raztrosni diagram, ki prikazuje razmerje med ceno in mesecem](../../../../2-Regression/2-Data/images/scatterplot.png) + ![Razpršeni diagram, ki prikazuje povezavo med ceno in mesecem](../../../../translated_images/sl/scatterplot.b6868f44cbd2051c.webp) - Ali je ta graf uporaben? Vas kaj na njem preseneča? + Je ta graf uporaben? Ali vas kaj preseneča? - Ni posebej uporaben, saj le prikazuje razpršenost točk v določenem mesecu. + Ni posebej uporaben, saj vašo podatkovno množico prikaže samo kot razpršena točke v določenem mesecu. -### Naredimo ga uporabnega +### Naredite ga uporabnega -Da bi grafi prikazovali uporabne podatke, jih običajno morate nekako združiti. Poskusimo ustvariti graf, kjer y-os prikazuje mesece, podatki pa prikazujejo porazdelitev podatkov. +Za prikaz uporabnih podatkov v grafih običajno potrebujete, da podatke nekako skupinsko združite. Poskusimo ustvariti graf, kjer y os prikazuje mesece, podatki pa pokažejo porazdelitev podatkov. -1. Dodajte celico za ustvarjanje združenega stolpčnega diagrama: +1. Dodajte celico za ustvarjanje skupinskega stolpčnega grafikona: ```python new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') plt.ylabel("Pumpkin Price") ``` - ![Stolpčni diagram, ki prikazuje razmerje med ceno in mesecem](../../../../2-Regression/2-Data/images/barchart.png) + ![Stolpčni grafikon, ki prikazuje povezavo med ceno in mesecem](../../../../translated_images/sl/barchart.a833ea9194346d76.webp) + + To je bolj uporabna vizualizacija podatkov! Zdi se, da nakazuje, da so najvišje cene buč septembra in oktobra. Ali to ustreza vašim pričakovanjem? Zakaj ali zakaj ne? + +## Vaja - eksperimentiranje s Seaborn + +Matplotlib je močan, vendar za izdelavo premišljenega grafikona pogosto zahteva veliko kode. [Seaborn](https://seaborn.pydata.org/) je knjižnica, ki je zgrajena _na vrhu_ Matplotlib in je namenjena statistični vizualizaciji podatkov. Deluje neposredno s Pandas dataframe-i, uporablja privlačne privzete sloge in omogoča ustvarjanje informativnih grafikonov z veliko manj kode. Ker Seaborn vrača Matplotlib objekte, lahko še vedno uporabite vse, kar že poznate o Matplotlib, za fino nastavljanje rezultata. + +> Če Seaborn še nimate nameščenega, ga namestite z `pip install seaborn`. + +1. Uvozite Seaborn na vrh beležnice, pod ostalimi uvozi. Običajno ga uvozimo kot `sns`: + + ```python + import seaborn as sns + ``` + +### Razpršeni grafikoni za prikaz odnosov + +Velik del raziskovanja podatkov pred gradnjo modela je iskanje _odnosov_ med spremenljivkami. [Razpršeni grafikon](https://en.wikipedia.org/wiki/Scatter_plot) je eno izmed najboljših orodij za to: če točke sledijo neki liniji, bi lahko bili ti dve spremenljivki korelirani, kar je dober znak, da linearni regresijski model lahko deluje. + +1. Ponovno ustvarite razpršeni grafikon cena-mesec, kot prej, tokrat z uporabom Seabornove funkcije [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) (relacijski grafikon), ki deluje neposredno z vašimi dataframe stolpci: + + ```python + sns.relplot(x="Price", y="Month", data=new_pumpkins) + ``` + + ![Seaborn razpršeni grafikon, ki prikazuje povezavo med ceno in mesecem](../../../../translated_images/sl/relplot.a03837d8f0329cec.webp) + + Opazite, kako predajate _imena stolpcev_ in dataframe, Seaborn pa sam poskrbi za oznake osi. + +2. Lahko preklopite na linijski grafikon tako, da podate `kind="line"`. Seaborn celo nariše senčeno območje, ki kaže interval zaupanja okoli linije: + + ```python + sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins) + ``` + + ![Seaborn linijski grafikon, ki prikazuje povezavo med ceno in mesecem](../../../../translated_images/sl/lineplot.f9034ba47b1e30ee.webp) + + Ti podatki so precej šumni, zato linijski grafikon morda ni najbolj jasna izbira tukaj — vendar kaže, kako enostavno lahko v Seabornu spremenite tipe grafikona. + +### Stolpčni grafikoni za prikaz porazdelitev + + +Prej ste ročno združili podatke, da ste ustvarili stolpični diagram z Matplotlib. Seabornova funkcija [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) (kategorijski diagram) lahko za vas opravi združevanje in agregacijo. Privzeto `kind="bar"` prikaže povprečje vsake kategorije skupaj s črno črto, ki označuje interval zaupanja. + +1. Ustvarite stolpični diagram povprečne cene na mesec: + + ```python + sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar") + ``` + + ![A Seaborn bar chart showing the price distribution per month](../../../../translated_images/sl/catplot.e73fc35fdf96242b.webp) + + To potrjuje, kar ste videli z Matplotlib — cene se vrhunsko dvignejo okoli septembra in oktobra — vendar Seaborn prav tako vizualizira, koliko se cena _spreminja_ znotraj posameznega meseca. + +### Toplotne karte za prikaz korelacij + +Razsevni diagrami primerjajo dve spremenljivki hkrati. Ko imate več številčnih stolpcev, vam [toplotna karta](https://en.wikipedia.org/wiki/Heat_map) omogoča ogled jakosti zveze med _vsakim_ parom stolpcev hkrati. To je pogost način, da ugotovite, katere lastnosti so najbolj korelirane, preden se odločite, katere vključiti v model (in ta vrsta diagrama se kasneje uporablja za prikaz zmede matričnih klasifikacij). + +1. Zgradite korelacijsko matriko s Pandas, nato jo narišite s Seabornovo funkcijo [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html). Možnost `annot=True` natisne vrednosti korelacije na vsakem polju: + + ```python + correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr() + sns.heatmap(correlations, annot=True, cmap="coolwarm") + ``` + + ![A Seaborn heatmap showing correlations between the numeric columns](../../../../translated_images/sl/heatmap.bd98dce43b404c57.webp) + + Vrednosti blizu `1` (ali `-1`) pomenijo, da so stolpci močno _linearno_ korelirani. Opazite, kako sta `Low Price` in `High Price` skoraj popolnoma korelirana. `Month`, po drugi strani, kaže šibko linearno korelacijo s ceno — čeprav je stolpični diagram zgoraj pokazal jasen sezonski vrh septembra in oktobra. To je pomembna lekcija: koeficient korelacije meri samo _črto_ odnosa, zato lahko spregleda sezonske ali druge nelinearne vzorce. ✅ Zakaj je koristno pogledati tako toplotno karto *kot* diagrame, kot je stolpični diagram, preden se odločite, katere stolpce uporabiti? + +### Matplotlib ali Seaborn? + +Obe knjižnici sta vredni učenja: + +- **Matplotlib** vam omogoča podrobno kontrolo nad vsakim elementom diagrama in je osnova, na kateri slonijo skoraj vse druge Python knjižnice za risanje. +- **Seaborn** nudi funkcije višje ravni in privlačne privzete nastavitve za statistične diagrame, deluje neposredno s podatkovnimi okviri in je pogosto hitrejši za raziskovalno analizo podatkov. - To je bolj uporabna vizualizacija podatkov! Zdi se, da kaže, da so najvišje cene buč v septembru in oktobru. Ali to ustreza vašim pričakovanjem? Zakaj ali zakaj ne? +Pogosto delo je, da najprej uporabite Seaborn za hitro raziskovanje podatkov, nato pa preklopite na Matplotlib, ko potrebujete prilagoditve podrobnosti. --- ## 🚀Izziv -Raziščite različne vrste vizualizacij, ki jih ponuja Matplotlib. Katere vrste so najbolj primerne za regresijske probleme? +Raziščite različne vrste vizualizacij, ki jih ponujata Matplotlib in Seaborn. Kateri tipi so najbolj primerni za regresijske probleme? -## [Kviz po predavanju](https://ff-quizzes.netlify.app/en/ml/) +## [Kvizi po predavanjih](https://ff-quizzes.netlify.app/en/ml/) -## Pregled in samostojno učenje +## Povzetek in samostojno učenje -Oglejte si različne načine vizualizacije podatkov. Naredite seznam različnih knjižnic, ki so na voljo, in zabeležite, katere so najboljše za določene vrste nalog, na primer 2D vizualizacije v primerjavi s 3D vizualizacijami. Kaj odkrijete? +Oglejte si različne načine za vizualizacijo podatkov. Naredite seznam razpoložljivih knjižnic in zabeležite, katere so najboljše za določene vrste nalog, na primer 2D vizualizacije proti 3D vizualizacijam. Kaj odkrijete? -## Naloga +## Domača naloga -[Raziskovanje vizualizacije](assignment.md) +[Raziskovanje vizualizacij](assignment.md) --- -**Omejitev odgovornosti**: -Ta dokument je bil preveden z uporabo storitve za strojno prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem izvirnem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo strokovno človeško prevajanje. Ne prevzemamo odgovornosti za morebitna nesporazumevanja ali napačne razlage, ki izhajajo iz uporabe tega prevoda. \ No newline at end of file + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo AI prevajalske storitve [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da avtomatizirani prevodi lahko vsebujejo napake ali netočnosti. Izvirni dokument v njegovem izvirnem jeziku je treba obravnavati kot avtoritativni vir. Za kritične informacije je priporočljiv strokovni človeški prevod. Ne odgovarjamo za morebitna nesporazume ali napačne interpretacije, ki izhajajo iz uporabe tega prevoda. + \ No newline at end of file diff --git a/translations/sl/2-Regression/2-Data/solution/notebook.ipynb b/translations/sl/2-Regression/2-Data/solution/notebook.ipynb index 31d66e397..5984627d4 100644 --- a/translations/sl/2-Regression/2-Data/solution/notebook.ipynb +++ b/translations/sl/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": [ + "## Vizualizacija s Seaborn\n", + "\n", + "[Seaborn](https://seaborn.pydata.org/) je zgrajen na vrhu Matplotlib in deluje neposredno s podatkovnimi okvirji, kar omogoča hitro ustvarjanje privlačnih statističnih grafikonov z zelo malo kode.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Razpršilni diagrami za prikaz odnosov\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": [ + "### Stolpčni diagrami za prikaz porazdelitev\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": [ + "### Toplotne karte za prikaz korelacij\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**Omejitev odgovornosti**: \nTa dokument je bil preveden z uporabo storitve za prevajanje z umetno inteligenco [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitna nesporazumevanja ali napačne razlage, ki bi nastale zaradi uporabe tega prevoda.\n" + "---\n\n\n**Omejitev odgovornosti**:\nTa dokument je bil preveden z uporabo AI prevajalske storitve [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da avtomatizirani prevodi lahko vsebujejo napake ali netočnosti. Izvirni dokument v njegovem izvirnem jeziku je treba obravnavati kot avtoritativni vir. Za kritične informacije je priporočljiv strokovni človeški prevod. Ne odgovarjamo za morebitna nesporazume ali napačne interpretacije, ki izhajajo iz uporabe tega prevoda.\n\n" ] } ], @@ -426,13 +487,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "95726f0b8283628d5356a4f8eb8b4b76", - "translation_date": "2025-09-06T13:46:15+00:00", - "source_file": "2-Regression/2-Data/solution/notebook.ipynb", - "language_code": "sl" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/sl/8-Reinforcement/1-QLearning/README.md b/translations/sl/8-Reinforcement/1-QLearning/README.md index 606445920..9306652e0 100644 --- a/translations/sl/8-Reinforcement/1-QLearning/README.md +++ b/translations/sl/8-Reinforcement/1-QLearning/README.md @@ -1,44 +1,44 @@ -# Uvod v učenje z okrepitvijo in Q-učenje +# Uvod v učenje s krepitvijo in Q-učenje -![Povzetek učenja z okrepitvijo v strojnem učenju v obliki sketchnote](../../../../sketchnotes/ml-reinforcement.png) +![Povzetek učenja s krepitvijo v strojni inteligenci v sketchnote](../../../../translated_images/sl/ml-reinforcement.94024374d63348db.webp) > Sketchnote avtorja [Tomomi Imura](https://www.twitter.com/girlie_mac) -Učenje z okrepitvijo vključuje tri pomembne koncepte: agenta, določena stanja in niz dejanj za vsako stanje. Z izvajanjem dejanja v določenem stanju agent prejme nagrado. Predstavljajte si računalniško igro Super Mario. Vi ste Mario, nahajate se na ravni igre, stojite ob robu prepada. Nad vami je kovanec. Vi kot Mario, na določeni ravni igre, na določenem položaju ... to je vaše stanje. Če se premaknete korak v desno (dejanje), boste padli čez rob in prejeli nizko številčno oceno. Če pa pritisnete gumb za skok, boste dosegli točko in ostali živi. To je pozitiven izid, ki bi vam moral prinesti pozitivno številčno oceno. +Učenje s krepitvijo vključuje tri pomembne pojme: agent, nekaj stanj in nabor dejanj za vsako stanje. Z izvajanjem dejanja v določenem stanju agent prejme nagrado. Ponovno si predstavljajte računalniško igro Super Mario. Vi ste Mario, v igralni ravni, stojite ob robu pečine. Nad vami je kovček. Vi, kot Mario, v igralni ravni, na določenem mestu ... to je vaše stanje. Premik za korak desno (dejanje) vas bo ponesel preko roba in to bi vam dalo nizko numerično oceno. Vendar pa bi pritisk na gumb za skok omogočil, da si pridobite točko in bi ostali živi. To je pozitiven izid in to bi moralo podeliti pozitivno numerično oceno. -Z uporabo učenja z okrepitvijo in simulatorja (igre) se lahko naučite igrati igro tako, da maksimizirate nagrado, kar pomeni, da ostanete živi in dosežete čim več točk. +Z uporabo učenja s krepitvijo in simulatorja (igre) se lahko naučite igrati igro tako, da maksimizirate nagrado, ki je ostati živ in zbrati čim več točk. -[![Uvod v učenje z okrepitvijo](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) +[![Uvod v učenje s krepitvijo](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) -> 🎥 Kliknite zgornjo sliko, da poslušate Dmitryja, kako razpravlja o učenju z okrepitvijo +> 🎥 Kliknite na sliko zgoraj, da slišite Dmitryja o učenju s krepitvijo -## [Pred-predavanje kviz](https://ff-quizzes.netlify.app/en/ml/) +## [Predpredavalni kviz](https://ff-quizzes.netlify.app/en/ml/) -## Predpogoji in nastavitev +## Predpogoji in namestitev -V tej lekciji bomo eksperimentirali s kodo v Pythonu. Kodo iz Jupyter Notebooka iz te lekcije bi morali biti sposobni zagnati na svojem računalniku ali v oblaku. +V tej lekciji bomo eksperimentirali z nekaj Python kode. Morali bi biti sposobni zagnati Jupyter Notebook iz te lekcije, bodisi na svojem računalniku ali nekje v oblaku. -Odprite [notebook lekcije](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) in sledite lekciji za gradnjo. +Lahko odprete [lekcijsko beležko](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) in sledite tej lekciji, da se jo naučite. -> **Opomba:** Če odpirate to kodo iz oblaka, morate pridobiti tudi datoteko [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), ki se uporablja v kodi notebooka. Dodajte jo v isto mapo kot notebook. +> **Opomba:** Če odpirate to kodo iz oblaka, morate prav tako pridobiti datoteko [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), ki se uporablja v kodi beležke. Dodajte jo v isti imenik kot beležko. ## Uvod -V tej lekciji bomo raziskali svet **[Peter in volk](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)**, ki ga je navdihnila glasbena pravljica ruskega skladatelja [Sergeja Prokofjeva](https://en.wikipedia.org/wiki/Sergei_Prokofiev). Uporabili bomo **učenje z okrepitvijo**, da bomo Petru omogočili raziskovanje njegovega okolja, zbiranje okusnih jabolk in izogibanje volku. +V tej lekciji bomo raziskovali svet **[Peter in volk](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)**, ki je navdihnjen z glasbeno pravljico ruske skladateljice, [Sergeja Prokofieva](https://en.wikipedia.org/wiki/Sergei_Prokofiev). Uporabili bomo **učvrstitev učenja**, da bo Peter raziskal svoje okolje, zbiral okusne jabolke in se izogibal srečanju z volkom. -**Učenje z okrepitvijo** (RL) je tehnika učenja, ki nam omogoča, da se naučimo optimalnega vedenja **agenta** v določenem **okolju** z izvajanjem številnih eksperimentov. Agent v tem okolju mora imeti določen **cilj**, ki ga določa **funkcija nagrade**. +**Učenje s krepitvijo** (RL) je tehnika učenja, ki nam omogoča, da se naučimo optimalnega vedenja **agenta** v določenem **okolju** z izvajanjem številnih poskusov. Agent v tem okolju mora imeti določen **cilj**, definiran z **funkcijo nagrajevanja**. ## Okolje -Za enostavnost si predstavljajmo Petrov svet kot kvadratno ploščo velikosti `širina` x `višina`, kot je ta: +Zaradi preprostosti si zamislimo Peterjev svet kot kvadratno ploščo velikosti `width` x `height`, kot je ta: -![Petrovo okolje](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![Peterjevo okolje](../../../../translated_images/sl/environment.40ba3cb66256c93f.webp) Vsaka celica na tej plošči je lahko: -* **zemlja**, po kateri lahko Peter in druga bitja hodijo. +* **tla**, po katerih lahko hodijo Peter in druge živali. * **voda**, po kateri očitno ne morete hoditi. -* **drevo** ali **trava**, kjer se lahko spočijete. -* **jabolko**, ki predstavlja nekaj, kar bi Peter z veseljem našel, da se nahrani. +* **drevo** ali **trava**, mesto kjer se lahko spočijete. +* **jabolko**, ki predstavlja nekaj, kar bi Peter z veseljem našel, da bi se nahranil. * **volk**, ki je nevaren in se mu je treba izogniti. Obstaja ločen Python modul, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), ki vsebuje kodo za delo s tem okoljem. Ker ta koda ni pomembna za razumevanje naših konceptov, bomo modul uvozili in ga uporabili za ustvarjanje vzorčne plošče (koda blok 1): @@ -52,63 +52,63 @@ m.randomize(seed=13) m.plot() ``` -Ta koda bi morala natisniti sliko okolja, podobno zgornji. +Ta koda naj natisne sliko okolja, podobno zgornji. ## Dejanja in politika -V našem primeru bi bil Petrov cilj najti jabolko, medtem ko se izogiba volku in drugim oviram. Da bi to dosegel, se lahko preprosto sprehaja, dokler ne najde jabolka. +V našem primeru je Peterjev cilj najti jabolko, pri tem pa se izogniti volku in drugim oviram. Za to lahko preprosto hodi, dokler ne najde jabolka. -Zato lahko na katerem koli položaju izbere eno od naslednjih dejanj: gor, dol, levo in desno. +Zato lahko na kateri koli poziciji izbere eno od naslednjih dejanj: gor, dol, levo in desno. -Ta dejanja bomo definirali kot slovar in jih preslikali v pare ustreznih sprememb koordinat. Na primer, premik v desno (`R`) bi ustrezal paru `(1,0)`. (koda blok 2): +Ta dejanja bomo definirali kot slovar in jih povezali s pari ustreznih sprememb koordinat. Na primer, premik desno (`R`) ustreza paru `(1,0)`. (koda blok 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()) } ``` -Če povzamemo, strategija in cilj tega scenarija sta naslednja: +Na kratko, strategija in cilj tega scenarija sta naslednja: -- **Strategija** našega agenta (Petra) je definirana z tako imenovano **politiko**. Politika je funkcija, ki vrne dejanje v katerem koli danem stanju. V našem primeru je stanje problema predstavljeno s ploščo, vključno s trenutnim položajem igralca. +- **Strategija**, našega agenta (Petra) je definirana s tako imenovano **politiko**. Politika je funkcija, ki vrne dejanje za katerokoli dano stanje. V našem primeru je stanje problema predstavljeno s ploščo, vključno s trenutno pozicijo igralca. -- **Cilj** učenja z okrepitvijo je sčasoma naučiti dobro politiko, ki nam bo omogočila učinkovito reševanje problema. Vendar pa kot osnovo upoštevajmo najpreprostejšo politiko, imenovano **naključna hoja**. +- **Cilj** učenja s krepitvijo je, da na koncu pridobimo dobro politiko, ki nam bo omogočila učinkovito reševanje problema. Kot osnovno politiko bomo upoštevali najpreprostejšo, imenovano **naključni sprehod**. -## Naključna hoja +## Naključni sprehod -Najprej rešimo naš problem z implementacijo strategije naključne hoje. Pri naključni hoji bomo naključno izbrali naslednje dejanje iz dovoljenih dejanj, dokler ne dosežemo jabolka (koda blok 3). +Najprej rešimo problem z implementacijo strategije naključnega sprehoda. Pri naključnem sprehodu bomo naključno izbirali naslednje dejanje iz dovoljenih dejanj, dokler ne pridemo do jabolka (koda blok 3). -1. Implementirajte naključno hojo s spodnjo kodo: +1. Implementirajte naključni sprehod z naslednjo kodo: ```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 # število korakov + # nastavi začetni položaj if start_position: m.human = start_position else: m.random_start() while True: if m.at() == Board.Cell.apple: - return n # success! + return n # uspeh! if m.at() in [Board.Cell.wolf, Board.Cell.water]: - return -1 # eaten by wolf or drowned + return -1 # pojedel volk ali utonil 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) # naredi dejanski premik break n+=1 walk(m,random_policy) ``` - Klic funkcije `walk` bi moral vrniti dolžino ustrezne poti, ki se lahko razlikuje od enega zagona do drugega. + Klic funkcije `walk` naj vrne dolžino ustrezne poti, ki se lahko razlikuje pri vsakem zagonu. -1. Izvedite eksperiment hoje večkrat (recimo 100-krat) in natisnite rezultate statistike (koda blok 4): +1. Poženite eksperiment sprehoda večkrat (recimo 100-krat) in natisnite nastale statistike (koda blok 4): ```python def print_statistics(policy): @@ -125,17 +125,17 @@ Najprej rešimo naš problem z implementacijo strategije naključne hoje. Pri na print_statistics(random_policy) ``` - Opazite, da je povprečna dolžina poti okoli 30-40 korakov, kar je precej, glede na to, da je povprečna razdalja do najbližjega jabolka okoli 5-6 korakov. + Upoštevajte, da je povprečna dolžina poti približno 30-40 korakov, kar je precej veliko, glede na dejstvo, da je povprečna razdalja do najbližjega jabolka približno 5-6 korakov. - Prav tako lahko vidite, kako izgleda Petrov premik med naključno hojo: + Vidite lahko tudi, kako izgleda Peterjevo gibanje med naključnim sprehodom: - ![Petrova naključna hoja](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) + ![Peterjev naključni sprehod](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) -## Funkcija nagrade +## Funkcija nagrajevanja -Da bi bila naša politika bolj inteligentna, moramo razumeti, katera dejanja so "boljša" od drugih. Za to moramo definirati naš cilj. +Da bi naredili našo politiko bolj pametno, moramo razumeti, kater premiki so "boljši" od drugih. Za to moramo definirati naš cilj. -Cilj lahko definiramo v smislu **funkcije nagrade**, ki bo vrnila neko vrednost ocene za vsako stanje. Višja kot je številka, boljša je nagrada. (koda blok 5) +Cilj lahko definiramo z vidika **funkcije nagrajevanja**, ki vrne neko vrednost ocene za vsako stanje. Višje število pomeni boljšo funkcijo nagrajevanja. (koda blok 5) ```python move_reward = -0.1 @@ -154,39 +154,115 @@ def reward(m,pos=None): return move_reward ``` -Zanimivo pri funkcijah nagrade je, da v večini primerov *prejmemo bistveno nagrado šele na koncu igre*. To pomeni, da mora naš algoritem nekako zapomniti "dobre" korake, ki vodijo do pozitivne nagrade na koncu, in povečati njihov pomen. Podobno je treba odvračati vse poteze, ki vodijo do slabih rezultatov. +Zanimivo pri funkcijah nagrajevanja je, da v večini primerov *dobimo pomembno nagrado šele na koncu igre*. To pomeni, da mora naš algoritem nekako zapomniti "dobre" korake, ki vodijo do pozitivne nagrade na koncu, in povečati njihovo pomembnost. Prav tako je treba discouraged vsa dejanja, ki vodijo do slabih rezultatov. ## Q-učenje -Algoritem, ki ga bomo tukaj obravnavali, se imenuje **Q-učenje**. V tem algoritmu je politika definirana s funkcijo (ali podatkovno strukturo), imenovano **Q-tabela**. Ta beleži "dobroto" vsakega dejanja v določenem stanju. +Algoritem, ki ga bomo obravnavali, se imenuje **Q-učenje**. V tem algoritmu je politika definirana z funkcijo (ali podatkovno strukturo), imenovano **Q-tabela**. Ta beleži "dobroto" vsakega dejanja v določenem stanju. -Imenuje se Q-tabela, ker jo je pogosto priročno predstavljati kot tabelo ali večdimenzionalno matriko. Ker ima naša plošča dimenzije `širina` x `višina`, lahko Q-tabelo predstavimo z numpy matriko oblike `širina` x `višina` x `len(actions)`: (koda blok 6) +Ime Q-tabela dobi, ker je pogosto priročno predstavljati jo kot tabelo ali večdimenzionalno matriko. Ker naša plošča ima dimenziji `width` x `height`, lahko Q-tabelo predstavimo z numpy matriko z obliko `width` x `height` x `len(actions)`: (koda blok 6) ```python Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions) ``` -Opazite, da vse vrednosti Q-tabele inicializiramo z enako vrednostjo, v našem primeru - 0,25. To ustreza politiki "naključne hoje", ker so vse poteze v vsakem stanju enako dobre. Q-tabelo lahko posredujemo funkciji `plot`, da vizualiziramo tabelo na plošči: `m.plot(Q)`. +Opazite, da začnemo z vsemi vrednostmi Q-tabele nastavljeno na enako vrednost, v našem primeru 0.25. To ustreza "politični random walk", saj so vsi premiki v vsakem stanju enako dobri. Q-tabelo lahko predamo funkciji `plot` za vizualizacijo tabele na plošči: `m.plot(Q)`. -![Petrovo okolje](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![Peterjevo okolje](../../../../translated_images/sl/env_init.04e8f26d2d60089e.webp) -V središču vsake celice je "puščica", ki označuje prednostno smer gibanja. Ker so vse smeri enake, je prikazana pika. +V središču vsake celice je "puščica", ki kaže prednostno smer gibanja. Ker so vse smeri enake, je prikazana pika. -Zdaj moramo zagnati simulacijo, raziskati naše okolje in se naučiti boljše porazdelitve vrednosti Q-tabele, kar nam bo omogočilo veliko hitrejše iskanje poti do jabolka. +Zdaj moramo zagnati simulacijo, raziskati okolje in se naučiti boljše porazdelitve vrednosti Q-tabele, kar nam bo omogočilo, da hitreje najdemo pot do jabolka. ## Bistvo Q-učenja: Bellmanova enačba -Ko se začnemo premikati, bo vsako dejanje imelo ustrezno nagrado, tj. teoretično lahko izberemo naslednje dejanje na podlagi najvišje takojšnje nagrade. Vendar pa v večini stanj poteza ne bo dosegla našega cilja doseči jabolko, zato ne moremo takoj odločiti, katera smer je boljša. +Ko začnemo z gibanjem, bo vsako dejanje imelo pripadajočo nagrado, torej lahko teoretično izberemo naslednje dejanje glede na najvišjo takojšnjo nagrado. Vendar pa v večini stanj ta poteza ne bo dosegla našega cilja - doseči jabolko, zato ne moremo takoj odločiti, katera smer je boljša. -> Ne pozabite, da ni pomemben trenutni rezultat, temveč končni rezultat, ki ga bomo dosegli na koncu simulacije. +> Zapomnite si, da ni pomemben takojšnji rezultat, ampak končni rezultat, ki ga bomo dobili na koncu simulacije. -Da bi upoštevali to odloženo nagrado, moramo uporabiti načela **[dinamičnega programiranja](https://en.wikipedia.org/wiki/Dynamic_programming)**, ki nam omogočajo, da o problemu razmišljamo rekurzivno. +Da bi upoštevali to zamaknjeno nagrado, moramo uporabiti principe **[dinamičnega programiranja](https://en.wikipedia.org/wiki/Dynamic_programming)**, ki nam omogočajo rekurzivno razmišljanje o našem problemu. -Recimo, da smo zdaj v stanju *s* in se želimo premakniti v naslednje stanje *s'*. S tem bomo prejeli takojšnjo nagrado *r(s,a)*, določeno s funkcijo nagrade, plus neko prihodnjo nagrado. Če predpostavimo, da naša Q-tabela pravilno odraža "privlačnost" vsakega dejanja, bomo v stanju *s'* izbrali dejanje *a*, ki ustreza največji vrednosti *Q(s',a')*. Tako bo najboljša možna prihodnja nagrada, ki jo lahko dobimo v stanju *s*, definirana kot `max` +Predpostavimo, da smo sedaj v stanju *s* in želimo preiti v naslednje stanje *s'*. S tem bomo prejeli takojšnjo nagrado *r(s,a)*, definirano s funkcijo nagrajevanja, poleg tega pa še neko prihodnjo nagrado. Če predpostavimo, da naša Q-tabela pravilno odraža "privlačnost" vsakega dejanja, potem bomo v stanju *s'* izbrali dejanje *a*, ki ustreza maksimalni vrednosti *Q(s',a')*. Zato bo najboljša možna prihodnja nagrada v stanju *s* definirana kot `max`a'*Q(s',a')* (maksimum je tukaj izračunan preko vseh možnih dejanj *a'* v stanju *s'*). + +To daje **Bellmanovo formulo** za izračun vrednosti Q-tabele v stanju *s*, glede na dejanje *a*: + + + +Tukaj je γ tako imenovani **faktor diskontiranja**, ki določa, v kolikšni meri naj se trenutno nagrado preferira pred prihodnjo nagrado in obratno. + +## Algoritem učenja + +Glede na zgornjo enačbo lahko zdaj napišemo psevdokodo za naš algoritem učenja: + +* Inicializiraj Q-tabelo Q z enakimi vrednostmi za vsa stanja in dejanja +* Nastavi hitrost učenja α ← 1 +* Ponovi simulacijo večkrat + 1. Začni na naključni poziciji + 1. Ponovi + 1. Izberi dejanje *a* v stanju *s* + 2. Izvedi dejanje s premikom v novo stanje *s'* + 3. Če zasledimo pogoj konca igre ali je celotna nagrada premajhna - končaj simulacijo + 4. Izračunaj nagrado *r* v novem stanju + 5. Posodobi Q-funkcijo po Bellmanovi enačbi: *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ maxa'Q(s',a'))* + 6. *s* ← *s'* + 7. Posodobi skupno nagrado in znižaj α. + +## Izkoristi vs. raziskuj + +V zgornjem algoritmu nismo natančno določili, kako izbrati dejanje v koraku 2.1. Če dejanja izbiramo naključno, bomo naključno **raziskovali** okolje, in precej verjetno bomo pogosto umrli ter obiskali območja, kjer sicer ne bi šli. Alternativni pristop bi bil **izkoristiti** že znane vrednosti Q-tabele in tako izbrati najboljše dejanje (z višjo vrednostjo v Q-tabeli) v stanju *s*. To pa bi nas preprečilo, da bi raziskali druga stanja, zato verjetno ne bomo našli optimalne rešitve. + +Zato je najboljši pristop doseči ravnovesje med raziskovanjem in izkoriščanjem. To dosežemo tako, da izbiramo dejanje v stanju *s* z verjetnostmi, sorazmernimi z vrednostmi v Q-tabeli. Na začetku, ko so vrednosti Q-tabele vse enake, bi to ustrezalo naključni izbiri, vendar ko se več naučimo o našem okolju, bomo verjetneje sledili optimalni poti, hkrati pa bomo agentu dovolili, da včasih izbere neodkrito pot. + +## Implementacija v Pythonu + +Zdaj smo pripravljeni implementirati algoritem učenja. Pred tem potrebujemo še funkcijo, ki bo pretvorila poljubna števila v Q-tabeli v vektor verjetnosti za ustrezna dejanja. + +1. Ustvari funkcijo `probs()`: + + ```python + def probs(v,eps=1e-4): + v = v-v.min()+eps + v = v/v.sum() + return v + ``` + + Dodamo nekaj `eps` originalnemu vektorju, da se izognemo deljenju z 0 v začetnem primeru, ko so vse komponente vektorja enake. + +Zaženimo algoritem učenja skozi 5000 poskusov, imenovanih tudi **epoh**: (koda blok 8) +```python + for epoch in range(5000): + + # Izberi začetno točko + m.random_start() + + # Začni potovanje + 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) # dovolimo igralcu, da se premakne izven plošče, kar zaključuje epizodo + 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 izvedbi tega algoritma naj bi bila Q-tabela posodobljena z vrednostmi, ki določajo privlačnost različnih dejanj v vsakem koraku. Poskusimo lahko vizualizirati Q-tabelo tako, da izrišemo vektor v vsaki celici, ki kaže v želeno smer gibanja. Zaradi preprostosti narišemo majhen krog namesto konice puščice. + + ## Preverjanje politike -Ker Q-tabela prikazuje "privlačnost" vsakega dejanja v vsakem stanju, jo je precej enostavno uporabiti za določitev učinkovite navigacije v našem svetu. V najpreprostejšem primeru lahko izberemo dejanje, ki ustreza najvišji vrednosti v Q-tabeli: (koda 9) +Ker Q-tabela našteta "privlačnost" vsakega dejanja v vsakem stanju, jo je razmeroma enostavno uporabiti za določanje učinkovite navigacije v našem svetu. V najpreprostejšem primeru lahko izberemo dejanje, ki ustreza najvišji vrednosti v Q-tabeli: (koda blok 9) ```python def qpolicy_strict(m): @@ -198,17 +274,18 @@ def qpolicy_strict(m): walk(m,qpolicy_strict) ``` -> Če zgornjo kodo poskusite večkrat, boste morda opazili, da se včasih "zatakne" in morate pritisniti gumb STOP v beležnici, da jo prekinete. To se zgodi, ker lahko pride do situacij, ko si dve stanji "kažeta" druga na drugo glede na optimalno Q-vrednost, zaradi česar agent neskončno prehaja med tema dvema stanjema. + +> Če zgornjo kodo preizkusite večkrat, boste morda opazili, da se včasih "zatakne" in morate pritisniti gumb STOP v zvezku, da jo prekinete. To se zgodi, ker so lahko situacije, ko se dve stanji "kažeta" drug na drugega glede optimalne Q-vrednosti, v tem primeru agent nenehno prehaja med tema stanji. ## 🚀Izziv -> **Naloga 1:** Spremenite funkcijo `walk`, da omejite največjo dolžino poti na določeno število korakov (na primer 100) in opazujte, kako zgornja koda občasno vrne to vrednost. +> **Naloga 1:** Spremenite funkcijo `walk`, da omejite največjo dolžino poti na določeno število korakov (recimo 100) in opazujte, kako zgornja koda občasno vrne to vrednost. -> **Naloga 2:** Spremenite funkcijo `walk`, da se ne vrača na mesta, kjer je že bil. To bo preprečilo, da bi se `walk` zanko ponavljal, vendar se agent še vedno lahko "ujame" na lokaciji, iz katere ne more pobegniti. +> **Naloga 2:** Spremenite funkcijo `walk` tako, da ne bo šla nazaj na kraje, kjer je že bila prej. S tem boste preprečili zanko v funkciji `walk`, vendar pa se agent lahko še vedno znajde "ujet" na mestu, iz katerega ne more pobegniti. ## Navigacija -Boljša navigacijska politika bi bila tista, ki smo jo uporabili med učenjem, in ki združuje izkoriščanje in raziskovanje. Pri tej politiki bomo vsako dejanje izbrali z določeno verjetnostjo, sorazmerno z vrednostmi v Q-tabeli. Ta strategija lahko še vedno povzroči, da se agent vrne na že raziskano mesto, vendar, kot lahko vidite iz spodnje kode, vodi do zelo kratke povprečne poti do želene lokacije (ne pozabite, da `print_statistics` simulacijo zažene 100-krat): (koda 10) +Boljša navigacijska politika bi bila tista, ki smo jo uporabili med učenjem, ki združuje izkoriščanje in raziskovanje. V tej politiki bomo vsako dejanje izbrali z določeno verjetnostjo, sorazmerno vrednostim v Q-tabeli. Ta strategija lahko še vedno privede do tega, da agent nazaj pride na že raziskano položaj, vendar, kot vidite v spodnji kodi, to vodi do zelo kratke povprečne poti do želenega mesta (spomnite se, da `print_statistics` zažene simulacijo 100-krat): (koda blok 10) ```python def qpolicy(m): @@ -220,28 +297,32 @@ def qpolicy(m): print_statistics(qpolicy) ``` -Po zagonu te kode bi morali dobiti precej krajšo povprečno dolžino poti kot prej, v razponu od 3 do 6. +Po zagonu te kode bi morali dobiti precej krajšo povprečno dolžino poti kot prej, v območju 3-6. + +## Preučevanje procesa učenja -## Preučevanje učnega procesa +Kot smo že omenili, je proces učenja ravnotežje med raziskovanjem in izkoriščanjem pridobljenega znanja o strukturi problema. Videli smo, da so rezultati učenja (sposobnost pomagati agentu najti kratko pot do cilja) izboljšani, vendar je tudi zanimivo opazovati, kako se povprečna dolžina poti obnaša med procesom učenja: -Kot smo omenili, je učni proces ravnovesje med raziskovanjem in izkoriščanjem pridobljenega znanja o strukturi problemskega prostora. Videli smo, da so se rezultati učenja (sposobnost pomagati agentu najti kratko pot do cilja) izboljšali, vendar je zanimivo tudi opazovati, kako se povprečna dolžina poti spreminja med učnim procesom: + -Ugotovitve lahko povzamemo takole: +Povzetek učenja: -- **Povprečna dolžina poti se poveča.** Na začetku opazimo, da se povprečna dolžina poti povečuje. To je verjetno zato, ker ko ne vemo ničesar o okolju, se zlahka ujamemo v slaba stanja, kot so voda ali volk. Ko se naučimo več in začnemo uporabljati to znanje, lahko okolje raziskujemo dlje, vendar še vedno ne vemo dobro, kje so jabolka. +- **Povprečna dolžina poti se povečuje**. Tukaj lahko vidimo, da se povprečna dolžina poti najprej poveča. To je verjetno posledica dejstva, da, ko ne vemo ničesar o okolju, se verjetno zataknemo v slabih stanjih, kot sta voda ali volk. Ko se več naučimo in začnemo uporabljati to znanje, lahko okolje dlje raziskujemo, vendar še ne vemo zelo dobro, kje so jabolka. -- **Dolžina poti se zmanjša, ko se naučimo več.** Ko se naučimo dovolj, postane agentu lažje doseči cilj, dolžina poti pa se začne zmanjševati. Vendar smo še vedno odprti za raziskovanje, zato pogosto odstopimo od najboljše poti in raziskujemo nove možnosti, kar podaljša pot. +- **Dolžina poti se skrajša, ko se več naučimo**. Ko se naučimo dovolj, postane agentu lažje doseči cilj in dolžina poti začne upadati. Kljub temu smo še vedno odprti za raziskovanje, zato pogosto odklonimo od najboljše poti in raziskujemo nove možnosti, zaradi česar je pot daljša od optimalne. -- **Dolžina se nenadoma poveča.** Na grafu opazimo tudi, da se dolžina na neki točki nenadoma poveča. To kaže na stohastično naravo procesa in na to, da lahko na neki točki "pokvarimo" koeficiente v Q-tabeli, tako da jih prepišemo z novimi vrednostmi. To bi morali idealno zmanjšati z zniževanjem učne stopnje (na primer, proti koncu učenja Q-tabeli dodajamo le majhne vrednosti). +- **Dolžina nenadoma naraste**. Še nekaj, kar lahko opazimo na tem grafu, je, da se je dolžina nekje nenadoma povečala. To kaže na stokastičen značaj procesa in da lahko kdaj "pokvarimo" koeficiente v Q-tabeli z prepisovanjem z novimi vrednostmi. To bi bilo idealno minimizirati z zmanjševanjem stopnje učenja (na primer proti koncu treninga prilagodimo vrednosti Q-tabele le z majhno vrednostjo). -Na splošno je pomembno vedeti, da uspeh in kakovost učnega procesa močno odvisna od parametrov, kot so učna stopnja, zmanjševanje učne stopnje in faktor diskontiranja. Ti se pogosto imenujejo **hiperparametri**, da jih ločimo od **parametrov**, ki jih optimiziramo med učenjem (na primer koeficienti Q-tabele). Proces iskanja najboljših vrednosti hiperparametrov se imenuje **optimizacija hiperparametrov** in si zasluži ločeno obravnavo. +Na splošno je pomembno vedeti, da uspeh in kakovost procesa učenja močno odvisna od parametrov, kot so stopnja učenja, upad stopnje učenja in faktor diskontiranja. Ti parametri se pogosto imenujejo **hiperparametri**, da jih razlikujemo od **parametrov**, ki jih optimiziramo med učenjem (na primer koeficienti v Q-tabeli). Proces iskanja najboljših vrednosti hiperparametrov se imenuje **optimizacija hiperparametrov** in si zasluži svojo temo. -## [Kvizi po predavanju](https://ff-quizzes.netlify.app/en/ml/) +## [Kvizek po predavanju](https://ff-quizzes.netlify.app/en/ml/) -## Naloga +## Domača naloga [Bolj realističen svet](assignment.md) --- -**Omejitev odgovornosti**: -Ta dokument je bil preveden z uporabo storitve za prevajanje z umetno inteligenco [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitne nesporazume ali napačne razlage, ki bi nastale zaradi uporabe tega prevoda. \ No newline at end of file + +**Omejitev odgovornosti**: +Ta dokument je bil preveden z uporabo AI prevajalske storitve [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da avtomatizirani prevodi lahko vsebujejo napake ali netočnosti. Izvirni dokument v njegovem izvirnem jeziku je treba obravnavati kot avtoritativni vir. Za kritične informacije je priporočljiv strokovni človeški prevod. Ne odgovarjamo za morebitna nesporazume ali napačne interpretacije, ki izhajajo iz uporabe tega prevoda. + \ No newline at end of file diff --git a/translations/sr/.co-op-translator.json b/translations/sr/.co-op-translator.json index e8285a61c..1d1d409ce 100644 --- a/translations/sr/.co-op-translator.json +++ b/translations/sr/.co-op-translator.json @@ -24,8 +24,8 @@ "language_code": "sr" }, "1-Introduction/3-fairness/README.md": { - "original_hash": "9a6b702d1437c0467e3c5c28d763dac2", - "translation_date": "2025-09-05T12:36:33+00:00", + "original_hash": "0f00d72169a0d37eecfd16d71e01700a", + "translation_date": "2026-07-14T01:46:26+00:00", "source_file": "1-Introduction/3-fairness/README.md", "language_code": "sr" }, @@ -54,8 +54,8 @@ "language_code": "sr" }, "2-Regression/1-Tools/README.md": { - "original_hash": "fa81d226c71d5af7a2cade31c1c92b88", - "translation_date": "2025-09-05T11:39:43+00:00", + "original_hash": "0b8635427b582d03ea4ab7089b93e505", + "translation_date": "2026-07-14T01:43:40+00:00", "source_file": "2-Regression/1-Tools/README.md", "language_code": "sr" }, @@ -72,8 +72,8 @@ "language_code": "sr" }, "2-Regression/2-Data/README.md": { - "original_hash": "7c077988328ebfe33b24d07945f16eca", - "translation_date": "2025-09-05T11:44:58+00:00", + "original_hash": "a58b2c4d16c6b122643391745ac15af6", + "translation_date": "2026-07-14T01:44:35+00:00", "source_file": "2-Regression/2-Data/README.md", "language_code": "sr" }, @@ -89,6 +89,12 @@ "source_file": "2-Regression/2-Data/solution/Julia/README.md", "language_code": "sr" }, + "2-Regression/2-Data/solution/notebook.ipynb": { + "original_hash": "96b95f8cf473481f2f371de8156f1571", + "translation_date": "2026-07-14T01:37:54+00:00", + "source_file": "2-Regression/2-Data/solution/notebook.ipynb", + "language_code": "sr" + }, "2-Regression/3-Linear/README.md": { "original_hash": "8b776e731c35b171d316d01d0e7b1369", "translation_date": "2026-04-26T18:46:09+00:00", @@ -457,7 +463,7 @@ }, "8-Reinforcement/1-QLearning/README.md": { "original_hash": "911efd5e595089000cb3c16fce1beab8", - "translation_date": "2025-09-05T13:34:18+00:00", + "translation_date": "2026-07-14T01:45:37+00:00", "source_file": "8-Reinforcement/1-QLearning/README.md", "language_code": "sr" }, @@ -523,7 +529,7 @@ }, "9-Real-World/2-Debugging-ML-Models/README.md": { "original_hash": "df2b538e8fbb3e91cf0419ae2f858675", - "translation_date": "2025-09-05T12:29:09+00:00", + "translation_date": "2026-07-14T01:47:28+00:00", "source_file": "9-Real-World/2-Debugging-ML-Models/README.md", "language_code": "sr" }, @@ -581,6 +587,19 @@ "source_file": "TROUBLESHOOTING.md", "language_code": "sr" }, + "__translation_failures__": { + "sketchnotes/LICENSE.md": { + "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f", + "source_file": "sketchnotes/LICENSE.md", + "language_code": "sr", + "failure_date": "2026-07-14T01:42:58+00:00", + "status": "failed", + "error_type": "TranslationIncompleteError", + "error_message": "Markdown translation remained incomplete for chunk 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-05T12:21:55+00:00", diff --git a/translations/sr/1-Introduction/3-fairness/README.md b/translations/sr/1-Introduction/3-fairness/README.md index 1a2bbef31..e3edf0a94 100644 --- a/translations/sr/1-Introduction/3-fairness/README.md +++ b/translations/sr/1-Introduction/3-fairness/README.md @@ -1,129 +1,167 @@ -# Изградња решења за машинско учење са одговорном вештачком интелигенцијом - -![Резиме одговорне вештачке интелигенције у машинском учењу у скици](../../../../sketchnotes/ml-fairness.png) -> Скица од [Томоми Имура](https://www.twitter.com/girlie_mac) +# Прављење решења машинског учења са одговорним AI-јем + +![Сажетак одговорног AI у Машинском учењу у скетчноту](../../../../translated_images/sr/ml-fairness.ef296ebec6afc98a.webp) +> Скетчнот од [Tomomi Imura](https://www.twitter.com/girlie_mac) ## [Квиз пре предавања](https://ff-quizzes.netlify.app/en/ml/) - + ## Увод -У овом курикулуму, почећете да откривате како машинско учење може и већ утиче на наше свакодневне животе. Чак и сада, системи и модели су укључени у свакодневне задатке доношења одлука, као што су дијагнозе у здравству, одобравање кредита или откривање превара. Због тога је важно да ти модели добро функционишу како би пружили резултате који су поуздани. Као и свака софтверска апликација, системи вештачке интелигенције могу да не испуне очекивања или да имају непожељан исход. Зато је од суштинског значаја разумети и објаснити понашање модела вештачке интелигенције. +У овом курикулуму почећете да откривате како машинско учење може и утиче на наше свакодневне животе. Већ сада, системи и модели учествују у свакодневним задацима доношења одлука, као што су дијагнозе у здравству, одобрења за кредите или откривање превара. Због тога је важно да ти модели добро функционишу како би обезбедили резултате којима се може веровати. Као и било која софтверска апликација, AI системи могу испасти испод очекивања или имати непожељан исход. Зато је суштински важно бити у стању да разумемо и објаснимо понашање AI модела. -Замислите шта може да се догоди када подаци које користите за изградњу ових модела недостају одређеним демографским групама, као што су раса, пол, политички ставови, религија, или када непропорционално представљају те демографске групе. Шта ако је излаз модела интерпретиран тако да фаворизује одређену демографску групу? Које су последице за апликацију? Поред тога, шта се дешава када модел има негативан исход и наноси штету људима? Ко је одговоран за понашање система вештачке интелигенције? Ово су нека од питања која ћемо истражити у овом курикулуму. +Замислите шта се може десити када подаци које користите за прављење ових модела недостају одређене демографије, као што су раса, пол, политички став, религија или када непропорционално представљају те демографије. Шта ако се резултат модела тумачи тако да фаворизује неку демографску групу? Која је последица за апликацију? Поред тога, шта се дешава када модел има неповољан исход и штети људима? Ко је одговоран за понашање AI система? Ово су нека од питања која ћемо истражити у овом курсу. -У овој лекцији, научићете: +У овом часу ћете: -- Да подигнете свест о важности правичности у машинском учењу и штетама повезаним са неправичношћу. -- Да се упознате са праксом истраживања изузетака и необичних сценарија ради осигурања поузданости и безбедности. -- Да стекнете разумевање о потреби оснаживања свих кроз дизајнирање инклузивних система. -- Да истражите колико је важно заштитити приватност и безбедност података и људи. -- Да увидите значај приступа „стаклене кутије“ за објашњавање понашања модела вештачке интелигенције. -- Да будете свесни како је одговорност кључна за изградњу поверења у системе вештачке интелигенције. +- Подићи свест о значају правде у машинском учењу и штетама повезаним са неправдом. +- Упознати се са праксом испитивања одступања и необичних сценарија ради осигурања поузданости и безбедности. +- Степеновати разумевање о потреби оснаживања свих дизајнирањем инклузивних система. +- Истражити колико је важно заштитити приватност и безбедност података и људи. +- Увидети значај приступа "прозирне кутије" за објашњење понашања AI модела. +- Бити свестан колико је одговорност важна за изградњу поверења у AI системе. -## Предуслов +## Предзнање -Као предуслов, молимо вас да прођете кроз „Принципе одговорне вештачке интелигенције“ и погледате видео испод на ову тему: +Као предуслов, молимо вас да прођете „Принципе одговорног AI-ја“ преко Learn Path-а и погледате видео испод о теми: -Сазнајте више о одговорној вештачкој интелигенцији пратећи овај [пут учења](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) +Сазнајте више о Одговорном AI-ју пратећи овај [Learn Path](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) -[![Приступ Microsoft-а одговорној вештачкој интелигенцији](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Приступ Microsoft-а одговорној вештачкој интелигенцији") +[![Приступ Microsoft-а одговорном AI-ју](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoft's Approach to Responsible AI") -> 🎥 Кликните на слику изнад за видео: Приступ Microsoft-а одговорној вештачкој интелигенцији +> 🎥 Кликните на слику горе за видео: Приступ Microsoft-a одговорном 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) +- **Понижавање**. Неправедно критиковање и етикетирање нечега или некога. На пример, технологија за означавање слика је погрешно означавала слике тамнопутих људи као гориле. +- **Прекомерна или недовољна заступљеност**. Идеја је да одређена група није видљива у одређеним професијама, а свака услуга или функција која то наставља да промовише доприноси штети. +- **Стереотипизација**. Повезивање одређене групе са унапред додељеним особинама. На пример, систем за превођење између енглеског и турског може имати нетачности због речи које имају стереотипне асоцијације са полом. -![превод на турски](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) +![превод на турски](../../../../translated_images/sr/gender-bias-translate-en-tr.f185fd8822c2d437.webp) > превод на турски -![превод назад на енглески](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) -> превод назад на енглески +![повратни превод на енглески](../../../../translated_images/sr/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) +> повратни превод на енглески -Када дизајнирамо и тестирамо системе вештачке интелигенције, морамо осигурати да вештачка интелигенција буде праведна и да није програмирана да доноси пристрасне или дискриминаторне одлуке, које су и људима забрањене. Гарантовање правичности у вештачкој интелигенцији и машинском учењу остаје сложен социотехнички изазов. +При дизајнирању и тестирању AI система, требало би да обезбедимо да је AI праведан и да није програмиран да доноси пристрасне или дискриминаторске одлуке, што је и људима забрањено. Обезбеђивање правде у AI и машинском учењу остаје сложен социотехнички изазов. ### Поузданост и безбедност -Да би се изградило поверење, системи вештачке интелигенције морају бити поуздани, безбедни и конзистентни у нормалним и неочекиваним условима. Важно је знати како ће се системи вештачке интелигенције понашати у различитим ситуацијама, посебно када су у питању изузеци. Приликом изградње решења заснованих на вештачкој интелигенцији, потребно је посветити значајну пажњу томе како се носити са широким спектром околности које би решења могла да сусретну. На пример, аутомобил који се самостално управља мора ставити безбедност људи као главни приоритет. Као резултат, вештачка интелигенција која покреће аутомобил мора узети у обзир све могуће сценарије са којима би се аутомобил могао суочити, као што су ноћ, грмљавина или снежне олује, деца која трче преко улице, кућни љубимци, радови на путу итд. Колико добро систем вештачке интелигенције може да се носи са широким спектром услова поуздано и безбедно одражава ниво предвиђања који је научник за податке или програмер вештачке интелигенције разматрао током дизајна или тестирања система. +Да би се изградило поверење, AI системи морају бити поуздани, безбедни и доследни у нормалним и неочекиваним условима. Важно је знати како ће се AI системи понашати у различитим ситуацијама, посебно када су у питању одступања. При прављењу AI решења, мора се посветити значајна пажња како се носити са широким спектром околности са којима се AI решења могу сусрести. На пример, аутономни аутомобил мора ставити безбедност људи на прво место. Као резултат тога, AI који покреће аутомобил мора узети у обзир све могуће сценарије са којима се возило може суочити, као што су ноћ, олује или снежне мећаве, деца која трче преко улице, кућни љубимци, радови на путу итд. Колико добро AI систем може поуздано и сигурно да се носи са широким спектром услова одражава ниво предвиђања који је стручњак за податке или AI развојач узео у обзир током дизајна или тестирања система. > [🎥 Кликните овде за видео: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl) ### Инклузивност -Системи вештачке интелигенције треба да буду дизајнирани тако да ангажују и оснажују све. Приликом дизајнирања и имплементације система вештачке интелигенције, научници за податке и програмери вештачке интелигенције идентификују и решавају потенцијалне препреке у систему које би могле ненамерно искључити људе. На пример, постоји 1 милијарда људи са инвалидитетом широм света. Са напретком вештачке интелигенције, они могу лакше приступити широком спектру информација и могућности у свакодневном животу. Решавањем препрека стварају се могућности за иновације и развој производа заснованих на вештачкој интелигенцији са бољим искуствима која користе свима. +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 системи праве прецизне и добро информисане предикције и одлуке о људима. -> [🎥 Кликните овде за видео: безбедност у вештачкој интелигенцији](https://www.microsoft.com/videoplayer/embed/RE4voJF) +> [🎥 Кликните овде за видео: безбедност у AI-ју](https://www.microsoft.com/videoplayer/embed/RE4voJF) -- Као индустрија, постигли смо значајан напредак у области приватности и безбедности, значајно подстакнут регулативама као што је GDPR (Општа уредба о заштити података). -- Ипак, са системима вештачке интелигенције морамо признати тензију између потребе за више личних података како би системи били персонализованији и ефикаснији – и приватности. -- Као што је било са појавом повезаних рачунара преко интернета, такође видимо велики пораст броја безбедносних проблема повезаних са вештачком интелигенцијом. -- Истовремено, видели смо да се вештачка интелигенција користи за побољшање безбедности. На пример, већина модерних антивирусних скенера данас се покреће помоћу хеуристике засноване на вештачкој интелигенцији. -- Морамо осигурати да наши процеси у области науке о подацима хармонично функционишу са најновијим праксама приватности и безбедности. +- Као индустрија, направили смо значајан напредак у области приватности и безбедности, подстакнут регулацијама као што је GDPR (Општа уредба о заштити података). +- Међутим, код AI система морамо признати тензију између потребе за више личних података како би системи били персонализованији и ефикаснији – и приватности. +- Као и са рађањем повезаних рачунара са интернетом, такође се бележи велики пораст безбедносних проблема повезаних са AI-јем. +- Истовремено смо видели да се AI употребљава за побољшање безбедности. На пример, већина модерних антивирусних скенера данас користи AI хеуристике. +- Морамо осигурати да наши процеси Data Science хармонично спајају најновије праксе у области приватности и безбедности. -### Транспарентност -Системи вештачке интелигенције треба да буду разумљиви. Кључни део транспарентности је објашњавање понашања система вештачке интелигенције и њихових компоненти. Побољшање разумевања система вештачке интелигенције захтева да заинтересоване стране разумеју како и зашто функционишу, како би могли да идентификују потенцијалне проблеме у перформансама, забринутости у вези са безбедношћу и приватношћу, пристрасности, праксе искључивања или непредвиђене исходе. Такође верујемо да они који користе системе вештачке интелигенције треба да буду искрени и отворени о томе када, зашто и како одлучују да их примене, као и о ограничењима система које користе. На пример, ако банка користи систем вештачке интелигенције за подршку у доношењу одлука о кредитима за потрошаче, важно је испитати исходе и разумети који подаци утичу на препоруке система. Владе почињу да регулишу вештачку интелигенцију у различитим индустријама, па научници за податке и организације морају објаснити да ли систем вештачке интелигенције испуњава регулаторне захтеве, посебно када дође до непожељног исхода. +### Транспарентност +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 систем утиче на појединце или друштво. -Људи који дизајнирају и примењују системе вештачке интелигенције морају бити одговорни за начин на који њихови системи функционишу. Потреба за одговорношћу је посебно важна код осетљивих технологија као што је препознавање лица. У последње време, постоји растућа потражња за технологијом препознавања лица, посебно од стране организација за спровођење закона које виде потенцијал технологије у употребама као што је проналажење нестале деце. Међутим, те технологије би потенцијално могле бити коришћене од стране владе да угрозе основне слободе својих грађана, на пример, омогућавањем континуираног надзора одређених појединаца. Зато научници за податке и организације морају бити одговорни за начин на који њихов систем вештачке интелигенције утиче на појединце или друштво. - -[![Водећи истраживач вештачке интелигенције упозорава на масовни надзор кроз препознавање лица](../../../../1-Introduction/3-fairness/images/accountability.png)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Приступ Microsoft-а одговорној вештачкој интелигенцији") +[![Водећи AI истраживач упозорава на масовни надзор преко препознавања лица](../../../../translated_images/sr/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft's Approach to Responsible AI") -> 🎥 Кликните на слику изнад за видео: Упозорења о масовном надзору кроз препознавање лица +> 🎥 Кликните на слику горе за видео: Упозорења о масовном надзору преко препознавања лица -На крају, једно од највећих питања за нашу генерацију, као прву генерацију која доноси вештачку интелигенцију у друштво, јесте како осигурати да рачунари остану одговорни људима и како осигурати да људи који дизајнирају рачунаре остану одговорни свима осталима. +На крају, једно од највећих питања за нашу генерацију, као прву генерацију која уводи AI у друштво, јесте како обезбедити да рачунари остану одговорни људима и како обезбедити да људи који дизајнирају рачунаре остану одговорни свима осталима. ## Процена утицаја -Пре него што обучите модел машинског учења, важно је спровести процену утицаја како бисте разум -Погледајте овај радионицу да бисте се дубље упознали са темама: +Пре тренирања модела машинског учења, важно је спровести процену утицаја да бисте разумели сврху AI система; која је намењена употреба; где ће бити премештен; и ко ће комуницирати са системом. Ово је корисно за рецензенте или тестере који оцењују систем да знају које факторе треба узети у обзир при идентификовању потенцијалних ризика и очекиваних последица. + +Следећа су подручја фокусирања при извођењу процене утицаја: + +* **Негативан утицај на појединце**. Будите свесни било каквих ограничења или захтева, неприкладне употребе или познатих ограничења која коче перформансе система, што је важно да се осигура да систем неће бити употребљен на начин који може нанети штету појединцима. +* **Захтеви за податке**. Разумевање како и где ће систем користити податке омогућава рецензентима да испитају све захтеве за податке о којима треба водити рачуна (нпр., GDPR или HIPAA регулативе о подацима). Такође, проверите да ли су извор или количина података довољни за тренирање. +* **Сажетак утицаја**. Прикупите листу потенцијалних штета које могу настати коришћењем система. Током целог ML животног циклуса прегледајте да ли су идентификовани проблеми ублажени или решени. +* **Примениљиви циљеви** за сваких шест основних принципа. Процените да ли су циљеви сваког од принципа постигнути и да ли постоје било какви недостаци. + + +## Отклањање грешака уз одговорни AI + +Слично као и отклањање грешака у софтверској апликацији, отклањање грешака у AI систему је нужан процес идентификовања и решавања проблема у систему. Постоји много фактора који могу утицати на то да модел не функционише према очекивањима или одговорно. Већина традиционалних метрика перформанси модела су квантитативна агрегатна мера укупних перформанси модела, што није довољно за анализу како модел крши принципе одговорног AI-ја. Штавише, модел машинског учења је црна кутија која отежава разумевање шта покреће његов исход или пружање објашњења када направи грешку. Касније у овом курсу научићемо како користити Одговорни AI контролни панел за помоћ при отклањању грешака у AI системима. Контролни панел пружа холистички алат за стручњаке за податке и AI развојаче да изврше: + +* **Анализу грешака**. Да идентификују расподелу грешака у моделу која може утицати на праведност или поузданост система. +* **Преглед модела**. Да открију где постоје разлике у перформансама модела по кохортама података. +* **Анализу података**. Да разумеју расподелу података и идентификују потенцијалну пристрасност која може довести до проблема са праведношћу, инклузивношћу и поузданошћу. +* **Интерпретабилност модела**. Да разумеју шта утиче на предвиђања модела. Ово помаже у објашњењу понашања модела, што је важно за транспарентност и одговорност. + + +## 🚀 Изазов + +Да бисмо спречили увођење штета у првом реду, требало би да: + +- имамо разноликост порекла и перспектива међу људима који раде на системима +- улажемо у скупе података које одражавају разноликост нашег друштва +- развијамо боље методе кроз цео животни циклус машинског учења за откривање и исправљање одговорног AI-ја када се појави + +Размислите о стварним животним ситуацијама где је непоузданост модела очигледна у изградњи и коришћењу модела. Шта још треба узети у обзир? + +## [Квиз после предавања](https://ff-quizzes.netlify.app/en/ml/) + +## Преглед и самостални рад + + +У овој лекцији сте научили неке основе концепата правичности и неправичности у машинском учењу. + +Погледајте овај радионицу да бисте дубље спознали теме: -- У потрази за одговорном вештачком интелигенцијом: Примена принципа у пракси од стране Бесмире Нуши, Мехрнуш Самеки и Амита Шарме +- У потрази за одговорном вештачком интелигенцијом: Преношење принципа у праксу од Бесмире Нуши, Мехрнуш Самеки и Амита Шарме -[![Responsible AI Toolbox: Отворени оквир за изградњу одговорне вештачке интелигенције](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: Отворени оквир за изградњу одговорне вештачке интелигенције") +[![Responsible AI Toolbox: An open-source framework for building responsible AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") -> 🎥 Кликните на слику изнад за видео: RAI Toolbox: Отворени оквир за изградњу одговорне вештачке интелигенције од стране Бесмире Нуши, Мехрнуш Самеки и Амита Шарме +> 🎥 Кликните на слику изнад за видео: RAI Toolbox: Отворени оквир за изградњу одговорне вештачке интелигенције од Бесмире Нуши, Мехрнуш Самеки и Амита Шарме -Такође, прочитајте: +Такође прочитајте: -- Microsoft-ов центар ресурса за одговорну вештачку интелигенцију: [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) -- Microsoft-ова истраживачка група FATE: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/) +- Microsoft-ова FATE истраживачка група: [FATE: Правичност, одговорност, транспарентност и етика у 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) +- [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/sr/2-Regression/1-Tools/README.md b/translations/sr/2-Regression/1-Tools/README.md index 4eb248c75..e6b27ccf1 100644 --- a/translations/sr/2-Regression/1-Tools/README.md +++ b/translations/sr/2-Regression/1-Tools/README.md @@ -1,70 +1,70 @@ -# Почетак рада са Python-ом и Scikit-learn-ом за регресионе моделе +# Започните са Python-ом и Scikit-learn-ом за регресионе моделе -![Резиме регресија у скицама](../../../../sketchnotes/ml-regression.png) +![Сажетак регресија у скецкноуту](../../../../translated_images/sr/ml-regression.4e4f70e3b3ed446e.webp) -> Скица од [Tomomi Imura](https://www.twitter.com/girlie_mac) +> Скецкноут аутора [Томоми Имура](https://www.twitter.com/girlie_mac) ## [Квиз пре предавања](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, укључујући инсталацију. - Истражите линеарну регресију кроз практичну вежбу. ## Инсталације и конфигурације -[![ML за почетнике - Припремите своје алате за прављење модела машинског учења](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML за почетнике - Припремите своје алате за прављење модела машинског учења") +[![ML за почетнике - Подесите алате спремне за изградњу модела машинског учења](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](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). + Међутим, неке примене Pythona захтевају једну верзију софтвера, док друге користе другу верзију. Због тога је корисно радити у оквиру [виртуелног окружења](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 модула](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) + > Уживајте у раду са Python-ом тако што ћете прорадити ову збирку [Learn модула](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) > - > [![Подешавање Python-а са Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Подешавање Python-а са Visual Studio Code") + > [![Подеси Python са Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](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, препоручује се да користите виртуелно окружење. Напомена, ако инсталирате ову библиотеку на 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 окружење -Користићете **нотебуке** за развој вашег Python кода и креирање модела машинског учења. Овај тип датотеке је уобичајен алат за научнике о подацима, и могу се идентификовати по њиховом суфиксу или екстензији `.ipynb`. +Користићете **бележнице** за развој свог Python кода и креирање модела машинског учења. Овај тип фајла је уобичајени алат за научнике података, а може се препознати по наставку или екстензији `.ipynb`. -Нотебуци су интерактивно окружење које омогућава програмеру да и кодира и додаје белешке и пише документацију око кода, што је веома корисно за експерименталне или истраживачке пројекте. +Бележнице су интерактивно окружење које омогућава програмеру да и пише код и додаје белешке и документацију око кода, што је веома корисно за експерименталне или истраживачке пројекте. -[![ML за почетнике - Подесите Jupyter Notebooks за почетак прављења регресионе моделе](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML за почетнике - Подесите Jupyter Notebooks за почетак прављења регресионе моделе") +[![ML за почетнике - Подеси Jupyter бележнице за почетак изградње регресионх модела](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML за почетнике - Подеси Jupyter бележнице за почетак изградње регресионх модела") -> 🎥 Кликните на слику изнад за кратак видео о овом задатку. +> 🎥 Кликните на слику изнад за кратак видео који води кроз ову вежбу. -### Вежба - рад са нотебуком +### Вежба - рад са бележницом -У овом фолдеру, наћи ћете датотеку _notebook.ipynb_. +У овом директоријуму ћете пронаћи фајл _notebook.ipynb_. 1. Отворите _notebook.ipynb_ у Visual Studio Code-у. - Jupyter сервер ће се покренути са Python 3+. Наћи ћете области нотебука које могу бити `покренуте`, делове кода. Можете покренути блок кода, тако што ћете изабрати икону која изгледа као дугме за репродукцију. + Јупитер сервер ће се покренути са Python 3+ верзијом. У бележници ћете пронаћи области које се могу `run`-овати, односно комаде кода. Код блок можете покренути тако што ћете изабрати иконицу која изгледа као дугме за репродукцију. -2. Изаберите икону `md` и додајте мало markdown-а, и следећи текст **# Добродошли у ваш нотебук**. +1. Изаберите `md` иконицу и додајте мало markdown-а, са следећим текстом **# Добродошли у вашу бележницу**. - Затим, додајте мало Python кода. + Затим додајте неки Python код. -3. Унесите **print('hello notebook')** у блок кода. -4. Изаберите стрелицу да покренете код. +1. Откуцајте **print('hello notebook')** у блок кода. +1. Изаберите стрелицу да покренете код. Требало би да видите исписану изјаву: @@ -72,35 +72,36 @@ hello notebook ``` -![VS Code са отвореним нотебуком](../../../../2-Regression/1-Tools/images/notebook.jpg) +![VS Code са отвореном бележницом](../../../../translated_images/sr/notebook.4a3ee31f396b8832.webp) -Можете испреплетати свој код са коментарима како бисте сами документовали нотебук. +Код можете пројектирати коментарима како бисте документовали бележницу. -✅ Размислите на тренутак колико је различито радно окружење веб програмера у односу на оно научника о подацима. +✅ Размислите на тренутак колико је радно окружење веб програмера различито у односу на окружење научника података. -## Покретање Scikit-learn-а +## Покретање са Scikit-learn-ом -Сада када је Python подешен у вашем локалном окружењу, и када сте се упознали са Jupyter нотебуком, хајде да се једнако упознамо са Scikit-learn-ом (изговара се `sci` као у `science`). Scikit-learn пружа [опсежан API](https://scikit-learn.org/stable/modules/classes.html#api-ref) који вам помаже да обављате задатке машинског учења. +Сада када је Python подешен у вашем локалном окружењу, и када сте удобни са Јупитер бележницама, хајде да се упознамо са Scikit-learn-ом ( изговара се `сај` као у `сајенс`). 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-ом са основним подацима. -## Вежба - ваш први 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 веб сајту. [![ML за почетнике - Ваш први пројекат линеарне регресије у Python-у](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "ML за почетнике - Ваш први пројекат линеарне регресије у Python-у") -> 🎥 Кликните на слику изнад за кратак видео о овој вежби. +> 🎥 Кликните на слику изнад за кратак видео који вас води кроз ову вежбу. -У датотеци _notebook.ipynb_ повезаној са овом лекцијом, очистите све ћелије притиском на икону 'канта за смеће'. +У фајлу _notebook.ipynb_ везаном за овај час очистите све ћелије притиском на икону 'канте за смеће'. -У овом делу, радићете са малим скупом података о дијабетесу који је уграђен у Scikit-learn за потребе учења. Замислите да желите да тестирате третман за пацијенте са дијабетесом. Модели машинског учења могу вам помоћи да одредите који пацијенти би боље реаговали на третман, на основу комбинација променљивих. Чак и веома основни регресиони модел, када се визуализује, може показати информације о променљивим које би вам помогле да организујете своје теоријске клиничке студије. +У овом делу радићете са малим скупом података о дијабетесу који је уграђен у Scikit-learn у сврху учења. Замислите да желите да тестирате терапију за дијабетичаре. Модели машинског учења могу вам помоћи да одредите који пацијенти би боље реаговали на лечење, на основу комбинација променљивих. Чак и веома базичан регресијски модел, када се визуализује, може показати информације о променљивим које би вам помогле да организујете своја теоријска клиничка испитивања. -✅ Постоји много типова метода регресије, и који ћете изабрати зависи од одговора који тражите. Ако желите да предвидите вероватну висину особе одређене старости, користили бисте линеарну регресију, јер тражите **нумеричку вредност**. Ако вас занима да ли одређена врста кухиње треба да се сматра веганском или не, тражите **категоријску доделу**, па бисте користили логистичку регресију. Касније ћете научити више о логистичкој регресији. Размислите мало о неким питањима која можете поставити подацима, и који од ових метода би био прикладнији. +✅ Постоје многе врсте регресионх метода, а коју ћете изабрати зависи од питања на које тражите одговор. Ако желите да предвидите вероватну висину особе одређеног узраста, користили бисте линеарну регресију, јер тражите **нумеричку вредност**. Ако сте заинтересовани да сазнате да ли би врста кухиње требало да се сматра веганском или не, тражите **категоријску припадност**, па бисте користили логистичку регресију. Више ћете научити о логистичкој регресији касније. Размислите мало о питањима која можете поставити подацима и која од ових метода би била примеренија. Хајде да започнемо овај задатак. @@ -108,13 +109,13 @@ 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. Додајте увозе тако што ћете откуцати следећи код: ```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` се користи за подељивање података на тренинг и тест сетове. ### Скуп података о дијабетесу -Уграђени [скуп података о дијабетесу](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: старост у годинама +- age: година старости - bmi: индекс телесне масе -- bp: просечан крвни притисак -- s1 tc: Т-ћелије (врста белих крвних зрнаца) +- bp: просечни крвни притисак +- 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 @@ 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,55 +160,67 @@ 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). Такође можете променити облик података у 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. Сада сте спремни да обучите свој модел! Учитајте линеарни регресијски модел и обучите га са svojim X и y тренинг скуповима коришћењем `model.fit()`: ```python model = linear_model.LinearRegression() model.fit(X_train, y_train) ``` - ✅ `model.fit()` је функција коју ћете видети у многим ML библиотекама као што је TensorFlow. + ✅ `model.fit()` је функција коју ћете видети у многим МЛ библиотекама као што је TensorFlow -5. Затим, направите предвиђање користећи тест податке, користећи функцију `predict()`. Ово ће се користити за цртање линије између група података. +5. Затим направите предвиђање користећи тест податке, користећи функцију `predict()`. Ово ће се користити за цртање линије између група података ```python y_pred = model.predict(X_test) ``` -6. Сада је време да прикажете податке на графикону. Matplotlib је веома користан алат за овај -✅ Размислите мало о томе шта се овде дешава. Права линија пролази кроз много малих тачака података, али шта она заправо ради? Можете ли видети како би требало да будете у могућности да користите ову линију за предвиђање где би нова, непозната тачка података требало да се уклопи у односу на y осу графикона? Покушајте да речима објасните практичну употребу овог модела. +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() + ``` + + ![расути графикон који показује тачке података око дијабетеса](../../../../translated_images/sr/scatterplot.ad8b356bcbb33be6.webp) + -Честитамо, направили сте свој први модел линеарне регресије, креирали предвиђање са њим и приказали га на графикону! + ✅ Размислите мало о томе шта се овде дешава. Права линија пролази кроз многе мале тачке података, али шта она тачно ради? Можете ли видети како треба да користите ову линију да предвидите где би нова, непозната тачка података требало да се уклопи у односу на 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). +У овом туторијалу радили сте са простом линеарном регресијом, уместо са униваријантном или вишеструком линеарном регресијом. Прочитајте мало о разликама између ових метода, или погледајте [овaj видео](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) да продубите своје разумевање. ## Задатак @@ -215,5 +228,7 @@ Scikit-learn олакшава прављење модела и њихову ев --- -**Одрицање од одговорности**: -Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције [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/sr/2-Regression/2-Data/README.md b/translations/sr/2-Regression/2-Data/README.md index fa0ace0e2..04ec76f8e 100644 --- a/translations/sr/2-Regression/2-Data/README.md +++ b/translations/sr/2-Regression/2-Data/README.md @@ -1,62 +1,62 @@ -# Изградња модела регресије помоћу Scikit-learn: припрема и визуализација података +# Направите регресиону моделе користећи Scikit-learn: припремите и визуализујте податке -![Инфографика визуализације података](../../../../2-Regression/2-Data/images/data-visualization.png) +![Инфографик визуализације података](../../../../translated_images/sr/data-visualization.54e56dded7c1a804.webp) -Инфографика: [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, спремни сте да почнете да постављате питања о вашим подацима. Док радите са подацима и примењујете решења машинског учења, веома је важно да знате како да поставите право питање како бисте правилно искористили потенцијале вашег скупа података. +Сада када сте спремни са алатима потребним за почетак прављења модела машинског учења са Scikit-learn, спремни сте да почнете постављати питања у вези са вашим подацима. Како радите са подацима и примените МЛ решења, веома је важно разумети како поставити право питање како бисте правилно откључали потенцијале вашег скупа података. У овој лекцији ћете научити: -- Како припремити податке за изградњу модела. +- Како припремити податке за прављење модела. - Како користити 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“ где су подаци мешавина 'врећа', 'каса' и других вредности. Податак је, у ствари, помало неред. [![ML за почетнике - Како анализирати и очистити скуп података](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "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`). -2. Извуците месец у нови стубац. +2. Извуците месец у нову колону. -Отворите _notebook.ipynb_ фајл у Visual Studio Code и увезите табеларни документ у нови Pandas dataframe. +Отворите фајл _notebook.ipynb_ у Visual Studio Code и увезите табелу у нови Pandas dataframe. -1. Користите функцију `head()` да видите првих пет редова. +1. Користите функцију `head()` да бисте видели првих пет редова. ```python import pandas as pd @@ -66,15 +66,15 @@ ✅ Коју функцију бисте користили да видите последњих пет редова? -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'] @@ -83,9 +83,9 @@ ### Друго, одредите просечну цену бундеве -Размислите како да одредите просечну цену бундеве у датом месецу. Које стубце бисте изабрали за овај задатак? Савет: биће вам потребна 3 стубца. +Размислите како да одредите просечну цену бундеве у одређеном месецу. Које колоне бисте изабрали за овај задатак? Наговештај: потребне су вам 3 колоне. -Решење: узмите просек стубаца `Low Price` и `High Price` да попуните нови стубац Price, и конвертујте стубац Date да приказује само месец. Срећом, према горњој провери, нема недостајућих података за датуме или цене. +Решење: узмите просек колона `Low Price` и `High Price` за нову колону Цена, и конвертујте колону Датум тако да приказује само месец. Срећом, према претходној провери, нема недостајућих података за датуме или цене. 1. Да бисте израчунали просек, додајте следећи код: @@ -96,37 +96,37 @@ ``` - ✅ Слободно испишите било које податке које желите да проверите користећи `print(month)`. + ✅ Слободно штампајте податке које желите проверавати користећи `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 редова података који садрже бундеве по бушелу. + Ако сада одштампате податке, видећете да добијате само око 415 редова података који садрже бундеве по бушелу. -### Али чекајте! Постоји још једна ствар коју треба урадити +### Али сачекајте! Још једна ствар је потребна -Да ли сте приметили да се количина бушела разликује по реду? Морате нормализовати цене тако да приказујете цене по бушелу, па урадите мало математике да их стандардизујете. +Да ли сте приметили да се количина бушела разликује по реду? Потребно је нормализовати цене тако да приказујете цену по бушелу, па урадите неке математичке операције да стандардујете то. -1. Додајте ове линије након блока који креира нови dataframe new_pumpkins: +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 @@ 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 фунти.“ Све је прилично компликовано! Хајде да не мешамо конверзију бушела у фунте, већ да ценимо по бушелу. Све ово проучавање бушела бундеве показује колико је важно разумети природу ваших података! -Сада можете анализирати цене по јединици на основу њихове мере бушела. Ако још једном испишете податке, можете видети како су стандардизовани. +Сада можете анализирати цене по јединици на основу њихове бушел мере. Ако још једном штампате податке, можете видети како је стандардизовано. -✅ Да ли сте приметили да су бундеве које се продају по пола бушела веома скупе? Можете ли схватити зашто? Савет: мале бундеве су много скупље од великих, вероватно зато што их има много више по бушелу, с обзиром на неискоришћени простор који заузима једна велика шупља бундева за питу. +✅ Да ли сте приметили да су бундеве продаване по пола бушела веома скупе? Можете ли претпоставити зашто? Наговештај: мале бундеве су много скупље од великих, вероватно зато што их има много више у бушелу, с обзиром на неискоришћени простор који заузима једна велика шупља колачасто обликована бундева. ## Стратегије визуализације -Део улоге научника података је да демонстрира квалитет и природу података са којима ради. Да би то урадили, често креирају занимљиве визуализације, или графиконе, дијаграме и табеле, који приказују различите аспекте података. На овај начин могу визуелно приказати односе и празнине које је иначе тешко открити. +Део улоге научника података је да демонстрира квалитет и природу података са којима ради. Да би то урадили, често праве занимљиве визуализације, односно графиконе, графикe и дијаграме, који приказују различите аспекте података. На овај начин, могу визуелно показати односе и празнине које су иначе тешко уочљиве. [![ML за почетнике - Како визуализовати податке помоћу Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML за почетнике - Како визуализовати податке помоћу Matplotlib") > 🎥 Кликните на слику изнад за кратак видео о визуализацији података за ову лекцију. -Визуализације такође могу помоћи у одређивању технике машинског учења која је најприкладнија за податке. Распршени графикон који изгледа као да прати линију, на пример, указује на то да су подаци добар кандидат за вежбу линеарне регресије. +Визуализације такође могу помоћи у одређивању технике машинског учења која је најприкладнија за податке. Сцаттерплот (прераспршивање тачака) који изгледа као да прати линију, на пример, указује на то да су подаци добри кандидати за линеарну регресију. -Једна библиотека за визуализацију података која добро функционише у Jupyter нотебоок-овима је [Matplotlib](https://matplotlib.org/) (коју сте такође видели у претходној лекцији). +Једна библиотека за визуализацију података која добро ради у Jupyter Notebook-у је [Matplotlib](https://matplotlib.org/) (коју сте видели и у претходној лекцији). > Стекните више искуства са визуализацијом података у [овим туторијалима](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott). -## Вежба - експериментисање са Matplotlib +## Вежба - експериментишите са Matplotlib -Покушајте да креирате неке основне графиконе за приказ новог dataframe-а који сте управо креирали. Шта би показао основни графикон линија? +Покушајте направити основне графиконе да бисте приказали нови dataframe који сте управо креирали. Шта би основни линијски график показао? -1. Увезите Matplotlib на врху фајла, испод увоза Pandas: +1. Увозите Matplotlib на врху фајла, испод увоза Pandas: ```python import matplotlib.pyplot as plt ``` -1. Поново покрените цео нотебоок да освежите. -1. На дну нотебоок-а, додајте ћелију за приказ података као кутију: +1. Поново покрените цео notebook да га освежите. +1. На дну notebook-а додајте ћелију која приказује податке као box plot: ```python price = new_pumpkins.Price @@ -174,44 +174,121 @@ plt.show() ``` - ![Распршени графикон који показује однос цене и месеца](../../../../2-Regression/2-Data/images/scatterplot.png) + ![Сцаттерплот који показује везу између цене и месеца](../../../../translated_images/sr/scatterplot.b6868f44cbd2051c.webp) - Да ли је ово користан графикон? Да ли вас нешто изненађује? + Да ли је ово користан графикон? Да ли вас нешто на њему изненађује? - Није нарочито користан јер само приказује ваше податке као распон тачака у датом месецу. + Није посебно користан јер све што ради је да приказује ваше податке као распршене тачке по месецу. ### Учинимо га корисним -Да би графикони приказивали корисне податке, обично је потребно груписати податке на неки начин. Хајде да покушамо да креирамо графикон где оса y приказује месеце, а подаци показују расподелу података. +Да бисте приказали корисне податке, обично требате некако груписати податке. Покушајмо направити графикон где y оса показује месеце, а подаци показују расподелу података. -1. Додајте ћелију за креирање груписаног стубичастог графикона: +1. Додајте ћелију за креирање груписаног bar филтрираног графикона: ```python new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') plt.ylabel("Pumpkin Price") ``` - ![Стубичасти графикон који показује однос цене и месеца](../../../../2-Regression/2-Data/images/barchart.png) + ![Бар графикон који показује везу цене и месеца](../../../../translated_images/sr/barchart.a833ea9194346d76.webp) + + Ово је кориснија визуализација података! Изгледа да највиша цена за бундеве пада у септембру и октобру. Да ли вам ово одговара? Зашто или зашто не? + +## Вежба - експериментишите са Seaborn + +Matplotlib је моћан, али може захтевати много кода да би се направио леп графикон. [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. Поново направите price-to-month scatter plot од раније, овог пута користећи Seaborn-ову [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) (релациони график), који ради директно са колонама вашег dataframe-а: + + ```python + sns.relplot(x="Price", y="Month", data=new_pumpkins) + ``` + + ![Seaborn сцаттерплот који показује везу цене и месеца](../../../../translated_images/sr/relplot.a03837d8f0329cec.webp) + + Приметите како прослеђујете _имена колона_ и dataframe, а Seaborn се брине о ознакама оса. + +2. Можете променити на линијски график додавањем `kind="line"`. Seaborn чак црта засенчену област која показује интервал поверења око линије: + + ```python + sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins) + ``` + + ![Seaborn линијски график који показује везу цене и месеца](../../../../translated_images/sr/lineplot.f9034ba47b1e30ee.webp) + + Ови подаци су прилично шумни, па линијски график није најјаснији избор овде — али приказује колико је лако променити тип графикона у 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") + ``` + + ![A Seaborn bar chart showing the price distribution per month](../../../../translated_images/sr/catplot.e73fc35fdf96242b.webp) + + Ово потврђује оно што сте видели са Matplotlib-ом — цене достижу врхунац око септембра и октобра — али Seaborn такође визуализује колико се цена _разликује_ у оквиру сваког месеца. + +### Heatmaps за приказ корелација + +Распршени графикони упоређују по две променљиве у једном тренутку. Када имате неколико нумеричких колона, [heatmap](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") + ``` + + ![A Seaborn heatmap showing correlations between the numeric columns](../../../../translated_images/sr/heatmap.bd98dce43b404c57.webp) + + Вредности близу `1` (или `-1`) значе да су колоне снажно _лнијарно_ корелиране. Обратите пажњу како су `Low Price` и `High Price` скоро савршено корелирани. Са друге стране, `Month` показује само слаб линеарни однос са ценом — иако је горе приказани график са ступцима открио јасан сезонски врхунац у септембру и октобру. То је важна лекција: коефицијент корелације мери само _праволинијске_ односе, па може пропустити сезонске или друге нелинеарне обрасце. ✅ Зашто је корисно погледати како heatmap *такође* и графиконе као што је график са ступцима пре него што одлучите које колоне ћете користити? + +### Matplotlib или Seaborn? + +Вредни су за познавање оба: + +- **Matplotlib** вам даје прецизну контролу над сваким елементом графика и представља основу на којој се граде готово све остале библиотеке за цртање у Питону. +- **Seaborn** пружа функције вишег нивоа и атрактивне подразумеване вредности за статистичке графиконе, ради директно са пандас dataframe-има, и често је бржи за експлоративну анализу података. - Ово је кориснија визуализација података! Чини се да указује на то да је највиша цена бундева у септембру и октобру. Да ли то одговара вашим очекивањима? Зашто или зашто не? +Уобичајени радни ток је да прво користите Seaborn да брзо истражите податке, а затим пређете на Matplotlib када треба да прилагодите детаље. --- ## 🚀Изазов -Истражите различите типове визуализација које Matplotlib нуди. Који типови су најприкладнији за проблеме регресије? +Истражите различите типове визуализације које нуде Matplotlib и Seaborn. Који су типови најприкладнији за проблеме регресије? -## [Квиз после предавања](https://ff-quizzes.netlify.app/en/ml/) +## [Квиз након предавања](https://ff-quizzes.netlify.app/en/ml/) -## Преглед и самостално учење +## Преглед и самостални рад -Погледајте многе начине за визуализацију података. Направите списак различитих библиотека које су доступне и забележите које су најбоље за одређене типове задатака, на пример 2D визуализације у односу на 3D визуализације. Шта откривате? +Погледајте различите начине визуализације података. Направите листу разних доступних библиотека и забележите које су најбоље за одређене типове задатака, на пример 2Д визуализације у односу на 3Д визуализације. Шта сте открили? -## Задатак +## Задаци [Истраживање визуализације](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/sr/2-Regression/2-Data/solution/notebook.ipynb b/translations/sr/2-Regression/2-Data/solution/notebook.ipynb index c2fae168d..cac4fcc49 100644 --- a/translations/sr/2-Regression/2-Data/solution/notebook.ipynb +++ b/translations/sr/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Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције [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-06T13:46:19+00:00", - "source_file": "2-Regression/2-Data/solution/notebook.ipynb", - "language_code": "sr" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/sr/8-Reinforcement/1-QLearning/README.md b/translations/sr/8-Reinforcement/1-QLearning/README.md index 6a2f01a64..9d7875fa7 100644 --- a/translations/sr/8-Reinforcement/1-QLearning/README.md +++ b/translations/sr/8-Reinforcement/1-QLearning/README.md @@ -1,47 +1,47 @@ -# Увод у учење појачањем и Q-учење +# Увод у учење појачавањем и Q-учење -![Резиме учења појачањем у машинском учењу у виду скице](../../../../sketchnotes/ml-reinforcement.png) -> Скица од [Tomomi Imura](https://www.twitter.com/girlie_mac) +![Резиме појачавања у машинском учењу у скицноту](../../../../translated_images/sr/ml-reinforcement.94024374d63348db.webp) +> Скицнот од [Томоми Имура](https://www.twitter.com/girlie_mac) -Учење појачањем укључује три важна концепта: агента, нека стања и скуп акција за свако стање. Извршавањем акције у одређеном стању, агент добија награду. Замислите поново компјутерску игру Супер Марио. Ви сте Марио, налазите се на нивоу игре, стојите поред ивице литице. Изнад вас је новчић. Ви сте Марио, на нивоу игре, на одређеној позицији ... то је ваше стање. Померање један корак удесно (акција) одвешће вас преко ивице, што би вам донело низак нумерички резултат. Међутим, притиском на дугме за скок добили бисте поен и остали бисте живи. То је позитиван исход и требало би да вам донесе позитиван нумерички резултат. +Учење појачавањем укључује три важна појма: агент, неке стања, и скуп акција по сваком стању. Извршавањем акције у одређеном стању, агент добија награду. Опет замислите видео игру Супер Марио. Ви сте Марио, налазите се на нивоу игре, стојите поред ивице литице. Изнад вас је новчић. Ви као Марио, на нивоу игре, у одређеној позицији ... то је ваше стање. Померање корака удесно (акција) ће вас одвести преко ивице, што би вам дало низак бројчани резултат. Међутим, притискање дугмета за скок омогућило би вам да освојите поен и останете живи. То је позитиван исход и треба да вам додели позитиван бројчани резултат. -Коришћењем учења појачањем и симулатора (игре), можете научити како да играте игру како бисте максимизовали награду, што је у овом случају преживљавање и освајање што више поена. +Коришћењем учења појачавањем и симулатора (игре), можете научити како да играте игру да максимализујете награду, што је останак жив и освајање што више поена. -[![Увод у учење појачањем](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) +[![Увод у учење појачавањем](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) -> 🎥 Кликните на слику изнад да чујете Дмитрија како говори о учењу појачањем +> 🎥 Кликните на слику изнад да бисте чули Дмитрија како говори о учењу појачавањем -## [Квиз пре предавања](https://ff-quizzes.netlify.app/en/ml/) +## [Предквиз](https://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) и проћи кроз ову лекцију да бисте изградили. -> **Напомена:** Ако отварате овај код из облака, такође треба да преузмете датотеку [`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 `висина`, овако: -![Петрово окружење](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![Петерово окружење](../../../../translated_images/sr/environment.40ba3cb66256c93f.webp) -Свака ћелија на овој табли може бити: +Свака ћелија ове табле може бити: -* **тло**, по коме Петар и друга створења могу ходати. +* **земља**, по којој Петер и друга створења могу ходати. * **вода**, по којој очигледно не можете ходати. * **дрво** или **трава**, место где можете одморити. -* **јабука**, која представља нешто што би Петар радо пронашао како би се нахранио. +* **јабука**, која представља нешто што би Петер био срећан да нађе да би се нахранио. * **вук**, који је опасан и треба га избегавати. -Постоји посебан Пајтон модул, [`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,15 +52,15 @@ 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) } @@ -69,46 +69,46 @@ 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 корака. - Такође можете видети како изгледа Петрово кретање током случајног ходања: + Такође можете видети како изгледа Петерово кретање током случајне шетње: - ![Петрово случајно ходање](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) + ![Петерова случајна шетња](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) ## Функција награде -Да бисмо нашу политику учинили интелигентнијом, морамо разумети који потези су "бољи" од других. Да бисмо то урадили, морамо дефинисати наш циљ. +Да бисмо нашу политику учинили интелигентнијом, морамо разумети које су акције "боље" од других. Да бисмо то урадили, морамо дефинисати наш циљ. -Циљ се може дефинисати у смислу **функције награде**, која ће враћати неку вредност резултата за свако стање. Што је број већи, то је боља функција награде. (блок кода 5) +Циљ се може дефинисати у терминима **функције награде**, која ће враћати неку вредност резултата за сваки статус. Што је број већи, то је функција награде боља. (код блок 5) ```python move_reward = -0.1 @@ -154,41 +154,115 @@ def reward(m,pos=None): return move_reward ``` -Интересантна ствар код функција награде је да у већини случајева *добијамо значајну награду тек на крају игре*. То значи да наш алгоритам треба некако да запамти "добре" кораке који воде до позитивне награде на крају и повећа њихов значај. Слично томе, сви потези који воде до лоших резултата треба да буду обесхрабрени. +Интересантна ствар код функција награде је да у већини случајева *награда нам се додељује тек на крају игре*. То значи да наш алгоритам треба на неки начин да запамти "добре" кораке који воде до позитивне награде на крају и повећа њихов значај. Слично томе, све акције које доводе до лоших резултата требало би да буду неохрабриване. ## Q-учење -Алгоритам који ћемо овде размотрити зове се **Q-учење**. У овом алгоритму, политика је дефинисана функцијом (или структуром података) која се зове **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)`. -![Петрово окружење](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![Петерово окружење](../../../../translated_images/sr/env_init.04e8f26d2d60089e.webp) -У центру сваке ћелије налази се "стрелица" која указује на пожељан правац кретања. Пошто су сви правци једнаки, приказује се тачка. +У центру сваке ћелије налази се "стрелица" која указује на преферирани смер кретања. Пошто су сви смерови једнаки, приказује се тачка. -Сада треба да покренемо симулацију, истражимо наше окружење и научимо бољу расподелу вредности 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` *Q(s',a')* (максимум се овде рачуна преко свих могућих акција *a'* у стању *s'*). +Претпоставимо да смо сада у стању *s*, и желимо да пређемо у следеће стање *s'*. То извршењем добијамо непосредну награду *r(s,a)*, дефинисану функцијом награде, плус неку будућу награду. Ако претпоставимо да наша Q-табела исправно одражава "атрактивност" сваке акције, онда ћемо у стању *s'* изабрати акцију *a* која одговара максималној вредности *Q(s',a')*. Дакле, најбоља могућа будућа награда коју можемо добити у стању *s* биће дефинисана као `max`a'*Q(s',a')* (максимум се овде рачуна преко свих могућих акција *a'* у стању *s'*). -Ово нам даје **Белманову формулу** за израчунавање вредности Q-табеле у стању *s*, за дату акцију *a*: +Ово даје **Белманову формулу** за израчунавање вредности 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-табеле исте, то одговара насумичном избору, али како учимо више о нашем окружењу, вероватније ћемо пратити оптималну руту, док ћемо истовремено понекад агенту дозвољавати да одабере неистражени пут. + +## Пајтон имплементација + +Сада смо спремни да имплементирамо алгоритам учења. Пре тога, такође нам треба функција која ће претворити произвољне бројеве из 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): @@ -200,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-табели. Ова стратегија може и даље довести до тога да се агент врати на позицију коју је већ истражио, али, као што можете видети из кода испод, резултира веома кратком просечном дужином пута до жељене локације (сетите се да `print_statistics` покреће симулацију 100 пута): (код блок 10) +Боља навигациона политика би била она коју смо користили током тренирања, која комбинује експлоатацију и истраживање. У овој политици бирамо сваки поступак са одређеном вероватноћом, пропорционалном вредностима у Q-табели. Ова стратегија и даље може довести до тога да агент враћа назад на позицију коју је већ истражио, али, као што видите из кода испод, резултира веома кратком просечном дужином пута до жељене локације (имајте на уму да `print_statistics` покреће симулацију 100 пута): (код блок 10) ```python def qpolicy(m): @@ -222,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) --- -**Одрицање од одговорности**: -Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције [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/sr/9-Real-World/2-Debugging-ML-Models/README.md b/translations/sr/9-Real-World/2-Debugging-ML-Models/README.md index a50cde974..ce8e20032 100644 --- a/translations/sr/9-Real-World/2-Debugging-ML-Models/README.md +++ b/translations/sr/9-Real-World/2-Debugging-ML-Models/README.md @@ -1,143 +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) +Као предуслов, молимо вас да прегледате [Responsible AI алате за програмере](https://www.microsoft.com/ai/ai-lab-responsible-ai-dashboard) -> ![Гиф о алатима за одговорни AI](../../../../9-Real-World/2-Debugging-ML-Models/images/rai-overview.gif) +> ![Gif на тему алата за одговорни AI](../../../../9-Real-World/2-Debugging-ML-Models/images/rai-overview.gif) ## Анализа грешака -Традиционалне метрике перформанси модела које се користе за мерење тачности углавном су прорачуни засновани на исправним и неисправним предвиђањима. На пример, утврђивање да је модел тачан 89% времена са губитком грешке од 0.001 може се сматрати добрим перформансама. Међутим, грешке често нису равномерно распоређене у вашем основном скупу података. Можете добити резултат тачности модела од 89%, али открити да постоје различити региони ваших података у којима модел греши 42% времена. Последице ових образаца грешака у одређеним групама података могу довести до проблема правичности или поузданости. Важно је разумети области у којима модел добро ради или не. Региони података где постоји велики број нетачности у вашем моделу могу се испоставити као важна демографска група података. +Традиционалне мере перформанси модела које се користе за мерење тачности углавном се заснивају на прорачунима заснованим на тачним и нетачним предикцијама. На пример, утврђивање да је модел тачан 89% времена са губитком грешке од 0.001 може се сматрати добрим перформансама. Грешке често нису равномерно распоређене у вашем базном скупу података. Можете добити оцену тачности модела 89%, али открити да постоје различите регије у вашим подацима где модел пада у 42% случајева. Последица ових образаца неуспеха у одређеним групама података може довести до проблема са правичношћу или поузданошћу. Важно је разумети области у којима модел добро функционише или не. Подручја података где постоји велики број нетачности у вашем моделу могу се показати као важна демографска категорија. -![Анализа и отклањање грешака модела](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-error-distribution.png) +![Анализа и дебаговање грешака модела](../../../../translated_images/sr/ea-error-distribution.117452e1177c1dd8.webp) -Компонента Анализа грешака на RAI контролној табли илуструје како су грешке модела распоређене кроз различите кохорте помоћу визуализације стабла. Ово је корисно за идентификовање карактеристика или области где постоји висока стопа грешака у вашем скупу података. Гледајући где долази већина нетачности модела, можете почети да истражујете основни узрок. Такође можете креирати кохорте података за спровођење анализе. Ове кохорте података помажу у процесу отклањања грешака како би се утврдило зашто је перформанса модела добра у једној кохорти, али погрешна у другој. +Компонента Анализа грешака на RAI контролном панелу илуструје како је неуспех модела распоређен кроз различите подгрупе помоћу визуализације стабла. Ово је корисно за идентификовање карактеристика или области где је стопа грешке висока у вашим подацима. Погледом где долази до највише нетачности у моделу, можете почети да истражујете корен узрока. Такође можете креирати подгрупе података за извођење анализе. Ове подгрупе података помажу у процесу дебаговања да се утврди зашто је перформанса модела добра у једној подгрупи, али погрешна у другој. -![Анализа грешака](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-error-cohort.png) +![Анализа грешака](../../../../translated_images/sr/ea-error-cohort.6886209ea5d438c4.webp) -Визуелни индикатори на мапи стабла помажу у бржем лоцирању проблематичних области. На пример, тамнија нијанса црвене боје чвора стабла указује на већу стопу грешака. +Визуелни индикатори на мапи стабла помажу у бржем лоцирању проблематичних области. На пример, што је тамнија нијанса црвене боје на чвору стабла, то је стопа грешке већа. -Топлотна мапа је још једна функционалност визуализације коју корисници могу користити за истраживање стопе грешака користећи једну или две карактеристике како би пронашли узрок грешака модела у целом скупу података или кохортама. +Топлотна мапа је још једна функција визуализације коју корисници могу користити за истраживање стопе грешака користећи једну или две карактеристике како би пронашли узрочник грешака модела у целом скупу података или подгрупама. -![Топлотна мапа анализе грешака](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-heatmap.png) +![Топлотна мапа Анализе грешака](../../../../translated_images/sr/ea-heatmap.8d27185e28cee383.webp) -Користите анализу грешака када треба да: +Користите анализу грешака кад вам је потребно да: -* Добијете дубоко разумевање како су грешке модела распоређене у скупу података и кроз више улазних и димензија карактеристика. -* Разложите агрегатне метрике перформанси како бисте аутоматски открили погрешне кохорте и информисали своје циљане кораке за ублажавање. +* Добијете дубоко разумевање како су грешке модела распоређене преко скупа података и кроз више улазних и карактеристичних димензија. +* Разложите агрегиране метрике перформанси да бисте аутоматски открили погрешне подгрупе и информисали о усмереним корацима за ублажавање. ## Преглед модела -Евалуација перформанси модела машинског учења захтева добијање свеобухватног разумевања његовог понашања. Ово се може постићи прегледом више од једне метрике, као што су стопа грешке, тачност, опозив, прецизност или MAE (просечна апсолутна грешка), како би се пронашле разлике међу метрикама перформанси. Једна метрика перформанси може изгледати одлично, али нетачности могу бити откривене у другој метрици. Поред тога, упоређивање метрика ради откривања разлика у целом скупу података или кохортама помаже у осветљавању области где модел добро ради или не. Ово је посебно важно за уочавање перформанси модела међу осетљивим и неосетљивим карактеристикама (нпр. раса пацијента, пол или старост) како би се открила потенцијална неправичност модела. На пример, откривање да је модел више погрешан у кохорти која има осетљиве карактеристике може указати на потенцијалну неправичност модела. +Евалуација перформанси модела машинског учења захтева добијање холистичког разумевања његовог понашања. То се може постићи прегледом више метрика као што су стопа грешке, тачност, повраћај, прецизност или MAE (просечна апсолутна грешка) како би се пронашле разлике у метрикама перформанси. Једна метрика перформанси може изгледати одлично, али нетачности се могу открити у другој метрици. Поред тога, поређење метрика ради откривања разлика кроз цео скуп података или подгрупе помаже да се осветли где модел добро функционише, а где не. Ово је посебно важно када се посматра учинак модела међу осетљивим у односу на неосетљиве карактеристике (нпр. раса пацијента, пол или старост) како би се откриле потенцијалне неправде које модел може имати. На пример, откривање да је модел више нетачан у подгрупи са осетљивим карактеристикама може указати на потенцијалну неправду модела. -Компонента Преглед модела на RAI контролној табли помаже не само у анализи метрика перформанси репрезентације података у кохорти, већ корисницима пружа могућност да упореде понашање модела у различитим кохортама. +Компонента Преглед модела на RAI контролном панелу помаже не само у анализи метрика перформанси представљених у датој подгрупи, већ пружа корисницима могућност да упореде понашање модела кроз различите подгрупе. -![Кохорте скупа података - преглед модела на RAI контролној табли](../../../../9-Real-World/2-Debugging-ML-Models/images/model-overview-dataset-cohorts.png) +![Подгрупе скупа података - преглед модела на RAI контролном панелу](../../../../translated_images/sr/model-overview-dataset-cohorts.dfa463fb527a35a0.webp) -Функционалност анализе засноване на карактеристикама компоненте омогућава корисницима да сузе подгрупе података унутар одређене карактеристике како би идентификовали аномалије на грануларном нивоу. На пример, контролна табла има уграђену интелигенцију за аутоматско генерисање кохорти за кориснички изабрану карактеристику (нпр. *"time_in_hospital < 3"* или *"time_in_hospital >= 7"*). Ово омогућава кориснику да изолује одређену карактеристику из веће групе података како би видео да ли је она кључни утицајни фактор на погрешне исходе модела. +Функционалност анализе засноване на карактеристикама омогућава корисницима да сузе подгрупе података у оквиру одређене карактеристике како би идентификовали аномалије на детаљном нивоу. На пример, контролни панел има уграђену интелигенцију за аутоматско креирање подгрупа за карактеристику коју корисник одабере (нпр. *"time_in_hospital < 3"* или *"time_in_hospital >= 7"*). Ово омогућава кориснику да издвоји одређену карактеристику из већег скупа података да би видео да ли она кључно утиче на погрешне резултате модела. -![Кохорте карактеристика - преглед модела на RAI контролној табли](../../../../9-Real-World/2-Debugging-ML-Models/images/model-overview-feature-cohorts.png) +![Подгрупе карактеристика - преглед модела на RAI контролном панелу](../../../../translated_images/sr/model-overview-feature-cohorts.c5104d575ffd0c80.webp) Компонента Преглед модела подржава две класе метрика разлика: -**Разлике у перформансама модела**: Ови скупови метрика израчунавају разлику у вредностима изабране метрике перформанси између подгрупа података. Ево неколико примера: +**Разлика у перформансама модела**: Ове метрике рачунају разлику (диспропорцију) у вредностима одабране метрике перформанси кроз подгрупе података. Ево неколико примера: * Разлика у стопи тачности * Разлика у стопи грешке * Разлика у прецизности -* Разлика у опозиву +* Разлика у повраћају * Разлика у просечној апсолутној грешци (MAE) -**Разлике у стопи селекције**: Ова метрика садржи разлику у стопи селекције (пожељно предвиђање) међу подгрупама. Пример овога је разлика у стопама одобрења кредита. Стопа селекције означава фракцију тачака података у свакој класи класификованих као 1 (у бинарној класификацији) или расподелу вредности предвиђања (у регресији). +**Разлика у стопи избора**: Ова метрика садржи разлику у стопи избора (повољна предикција) међу подгрупама. Пример овог је разлика у стопама одобрења кредита. Стопа избора значи део података у свакој класи означених као 1 (у бинарној класификацији) или распоред вредности предикције (у регресији). ## Анализа података -> "Ако довољно мучите податке, они ће признати било шта" - Роналд Коуз +> "Ако дуго мучите податке, она ће признати све шта желите" - Роналд Коуз -Ова изјава звучи екстремно, али је истина да се подаци могу манипулисати како би подржали било који закључак. Таква манипулација понекад може бити ненамерна. Као људи, сви имамо пристрасности, и често је тешко свесно знати када уносите пристрасност у податке. Обезбеђивање правичности у AI и машинском учењу остаје сложен изазов. +Ова изјава звучи екстремно, али истина је да се подаци могу манипулисати да подрже било који закључак. Такав начин манипулације се понекад дешава ненамјерно. Као људи, сви имамо предрасуде, и често је тешко свесно знати када уводите пристрасност у податке. Гарантовање правичности у AI-у и машинском учењу остаје компликован изазов. -Подаци су велика слепа тачка за традиционалне метрике перформанси модела. Можете имати високе резултате тачности, али то не одражава увек основну пристрасност података која може постојати у вашем скупу података. На пример, ако скуп података запослених има 27% жена на извршним позицијама у компанији и 73% мушкараца на истом нивоу, модел за оглашавање послова обучен на овим подацима може углавном циљати мушку публику за позиције на вишем нивоу. Ова неравнотежа у подацима искривила је предвиђање модела да фаворизује један пол. Ово открива проблем правичности где постоји родна пристрасност у AI моделу. +Подаци су велики слепи угао традиционалних метрика перформанси модела. Можете имати високе оцене тачности, али то не одражава увек унутрашњу пристрасност у вашем скупу података. На пример, ако скуп података запослених има 27% жена на руководећим позицијама у компанији и 73% мушкараца на истом нивоу, AI модел за оглашавање послова обучен на тим подацима могао би циљати претежно мушку публику за високе пословне позиције. Ова неуравнотеженост у подацима изкривила је предикцију модела да фаворизује један пол. Ово открива проблем правичности где постоји родна пристрасност у AI моделу. -Компонента Анализа података на RAI контролној табли помаже у идентификовању области где постоји претерана или недовољна заступљеност у скупу података. Она помаже корисницима да дијагностикују основни узрок грешака и проблема правичности који су уведени због неравнотеже података или недостатка репрезентације одређене групе података. Ово корисницима пружа могућност да визуализују скупове података на основу предвиђених и стварних исхода, група грешака и специфичних карактеристика. Понекад откривање недовољно заступљене групе података такође може открити да модел не учи добро, што доводи до високих нетачности. Модел који има пристрасност у подацима није само проблем правичности већ показује да модел није инклузиван или поуздан. +Компонента Анализа података на RAI контролном панелу помаже да се идентификују области где постоји пре и потцењена репрезентација у скупу података. Помоћу ње корисници могу дијагностиковати корен узрока грешака и проблема правичности насталих од неуравнотежености података или недостатка репрезентације одређене групе података. Ово даје корисницима могућност да визуелизују скупове података на основу предвиђених и стварних исхода, група грешака и одређених карактеристика. Понекад откривање потцењене групе података може такође показати да модел не учи добро, па самим тим има високу нетачност. Имате ли модел са пристрасношћу у подацима није само проблем правичности већ показује да модел није инклузиван ни поуздан. -![Компонента Анализа података на RAI контролној табли](../../../../9-Real-World/2-Debugging-ML-Models/images/dataanalysis-cover.png) +![Компонента Анализа података на RAI контролном панелу](../../../../translated_images/sr/dataanalysis-cover.8d6d0683a70a5c1e.webp) -Користите анализу података када треба да: -* Истражите статистику вашег скупа података одабиром различитих филтера за сегментирање података у различите димензије (познате и као кохорте). -* Разумете расподелу вашег скупа података кроз различите кохорте и групе карактеристика. -* Утврдите да ли су ваша открића у вези са правичношћу, анализом грешака и узрочношћу (изведена из других компоненти контролне табле) резултат расподеле вашег скупа података. -* Одлучите у којим областима треба прикупити више података како бисте ублажили грешке које произилазе из проблема репрезентације, буке у ознакама, буке у карактеристикама, пристрасности у ознакама и сличних фактора. +Користите анализу података када вам је потребно да: -## Интерпретабилност модела +* Истражите статистике вашег скупа података бирајући различите филтере да податке поделите у различите димензије (познате као подгрупе). +* Разумете расподелу вашег скупа података кроз различите подгрупе и групе карактеристика. +* Одредите да ли ваша сазнања о правичности, анализи грешака и узрочности (изведена из других компоненти контролног панела) произилазе из расподеле вашег скупа података. +* Одлучите у којим областима да прикупљате више података како бисте ублажили грешке које потичу од проблема са репрезентацијом, буком ознака, буком карактеристика, пристрасношћу у ознакама и сличним факторима. -Модели машинског учења често се сматрају "црним кутијама". Разумевање које кључне карактеристике података покрећу предвиђање модела може бити изазовно. Важно је пружити транспарентност у вези са тим зашто модел доноси одређено предвиђање. На пример, ако AI систем предвиђа да је пацијент са дијабетесом у ризику од поновног пријема у болницу у року од мање од 30 дана, требало би да буде у стању да пружи податке који подржавају његово предвиђање. Имање података који подржавају предвиђање доноси транспарентност која помаже клиничарима или болницама да доносе добро информисане одлуке. Поред тога, могућност објашњења зашто је модел донео предвиђање за појединачног пацијента омогућава одговорност у складу са здравственим прописима. Када користите моделе машинског учења на начине који утичу на животе људи, кључно је разумети и објаснити шта утиче на понашање модела. Интерпретабилност и објашњивост модела помажу у одговарању на питања у сценаријима као што су: +## Интерпретирање модела -* Отклањање грешака у моделу: Зашто је мој модел направио ову грешку? Како могу побољшати свој модел? -* Сарадња човека и AI: Како могу разумети и веровати одлукама модела? -* Регулаторна усклађеност: Да ли мој модел задовољава законске захтеве? +Модели машинског учења обично су црне кутије. Разумевање које кључне карактеристике података покрећу претпоставку модела може бити изазов. Важно је обезбедити транспарентност у вези са разлозима због којих модел даје одређену предикцију. На пример, ако AI систем предвиђа да је дијабетични пацијент у ризику да буде поново примљен у болницу за мање од 30 дана, треба да буде у стању да пружи пратни податак који је довео до те предикције. Имање индикатора који подржавају податке доноси транспарентност која помаже клиничарима или болницама да донесу добро информисане одлуке. Поред тога, могућност да се објасни зашто је модел направио предикцију за појединачног пацијента омогућава одговорност у складу са здравственим прописима. Када користите моделе машинског учења на начине који утичу на животе људи, кључно је разумети и објаснити шта утиче на понашање модела. Објашњивост и интерпретабилност модела помаже у одговору на питања у сценаријима као што су: -Компонента Важност карактеристика на RAI контролној табли помаже вам да отклоните грешке и стекнете свеобухватно разумевање како модел доноси предвиђања. Такође је користан алат за професионалце у машинском учењу и доносиоце одлука да објасне и покажу доказе о карактеристикама које утичу на понашање модела ради регулаторне усклађености. Корисници могу истраживати и глобална и локална објашњења како би потврдили које карактеристике покрећу предвиђања модела. Глобална објашњења наводе најважније карактеристике које су утицале на укуп -- **Превелика или премала заступљеност**. Идеја је да одређена група није заступљена у одређеној професији, а свака услуга или функција која наставља да промовише то доприноси штети. +* Дебаговање модела: Зашто је мој модел направио ову грешку? Како могу побољшати модел? +* Сарадња човека и AI: Како да разумем и верујем одлукама модела? +* Усклађеност са прописима: Да ли мој модел испуњава законске захтеве? -### Azure 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 контролном панелу](../../../../translated_images/sr/9-feature-importance.cd3193b4bba3fd4b.webp) -- Сазнајте како да користите различите компоненте тако што ћете погледати [документацију RAI контролне табле.](https://learn.microsoft.com/en-us/azure/machine-learning/how-to-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) +* Глобална објашњења: На пример, које карактеристике утичу на укупно понашање модела за поновни пријем пацијєнта са дијабетесом у болницу? +* Локална објашњења: На пример, зашто је пацијент са дијабетесом старији од 60 година са претходним пријемима прогнозирано да ће бити поновно примљен или не у року од 30 дана у болницу? -- Погледајте неке [примере нотебука RAI контролне табле](https://github.com/Azure/RAI-vNext-Preview/tree/main/examples/notebooks) за отклањање проблема у сценаријима одговорног AI у Azure Machine Learning. +У процесу дебаговања испитивања перформанси модела кроз различите подгрупе, Важност карактеристика показује колико утицај има одређена карактеристика унутар подгрупа. Помоћу ње се откривају аномалије поређењем нивоа утицаја који карактеристика има у покретању погрешних предикција модела. Компонента Важност карактеристика може приказати које вредности карактеристике позитивно или негативно утичу на исход модела. На пример, ако је модел направио нетачну предикцију, компонента вам пружа могућност да продрете дубље и прецизно утврдите које карактеристике или вредности карактеристика су довеле до предикције. Овај ниво детаља помаже не само при дебаговању већ пружа транспарентност и одговорност у ревизијским ситуацијама. Коначно, компонента може помоћи у идентификовању проблема правичности. Да илуструјемо, ако осетљива карактеристика као што је етничка припадност или пол има велики утицај на предикцију модела, то може бити знак расне или родне пристрасности у моделу. ---- -## 🚀 Изазов +![Важност карактеристика](../../../../translated_images/sr/9-features-influence.3ead3d3f68a84029.webp) + +Користите интерпретабилност када вам је потребно да: + +* Одредите колико су поуздане предикције вашег AI система разумевањем које су карактеристике најважније за предикције. +* Приступите дебаговању модела тако што прво разумете модел и идентификујете да ли користи здраве карактеристике или само лажне корелације. +* Откријете потенцијалне изворе неправедности разумевањем да ли модел базира предикције на осетљивим карактеристикама или на карактеристикама високо корелираним са њима. +* Изградите поверење корисника у одлуке вашег модела генеришући локална објашњења која илуструју њихове исходе. +* Завршите регулаторску ревизију AI система како бисте валидирали моделе и пратили утицај одлука модела на људе. -Да бисмо спречили увођење статистичких или податковних пристрасности, требало би: +## Закључак -- имати разноврсност у позадинама и перспективама међу људима који раде на системима -- улагати у скупове података који одражавају разноврсност нашег друштва -- развијати боље методе за откривање и исправљање пристрасности када се она појави +Све компоненте RAI контролног панела су практични алати који вам помажу да изградите моделе машинског учења који су мање штетни и поузданији за друштво. Побољшавају превенцију претњи људским правима; дискриминацију или искључивање одређених група из животних прилика; и ризик од физичке или психолошке повреде. Такође помажу изградњи поверења у одлуке вашег модела генеришући локална објашњења која илуструју њихове исходе. Неке од потенцијалних штета могу се класификовати као: -Размислите о стварним животним сценаријима где је неправедност очигледна у изградњи и коришћењу модела. Шта још треба узети у обзир? +- **Додела**, ако је, на пример, пол или етничка припадност фаворизована у односу на другу. +- **Квалитет услуге**. Ако тренирате податке за један конкретан сценарио, а стварност је знатно сложенија, то доводи до лоше перформансе услуге. +- **Стереотипизација**. Повезивање дате групе са унапред додељеним карактеристикама. -## [Квиз након предавања](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 моделима. + +- Научите како да користите различите компоненте тако што ћете погледати документацију за RAI контролну таблу. [docs.](https://learn.microsoft.com/en-us/azure/machine-learning/how-to-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) + +- Погледајте неке примерке RAI контролне табле у облику ноутбукова за отклањање грешака у одговорнијим AI сценаријима у Azure Machine Learning. + +--- +## 🚀 Изазов + +Да бисмо спречили увођење статистичких или податочних предрасуда од почетка, требало би да: -У овом часу сте научили неке практичне алате за укључивање одговорног AI у машинско учење. +- имамо разноликост позадина и перспектива међу људима који раде на системима +- улажемо у скупове података који одражавају разноликост нашег друштва +- развијамо боље методе за откривање и исправљање предрасуда када се појаве -Погледајте овај радионицу за дубље разумевање тема: +Размислите о стварним сценаријима где је неправда очигледна у изградњи и коришћењу модела. Шта још треба да узмемо у обзир? -- Одговорна AI контролна табла: Централно место за оперативну примену RAI у пракси, од Besmira Nushi и Mehrnoosh Sameki +## [Квиз после предавања](https://ff-quizzes.netlify.app/en/ml/) +## Преглед и самостална студија + +У овој лекцији сте научили неке од практичних алата за укључивање одговорне AI у машинско учење. -[![Одговорна AI контролна табла: Централно место за оперативну примену RAI у пракси](https://img.youtube.com/vi/f1oaDNl3djg/0.jpg)](https://www.youtube.com/watch?v=f1oaDNl3djg "Одговорна AI контролна табла: Централно место за оперативну примену RAI у пракси") +Погледајте овај радионицу да бисте дубље ушли у теме: +- Responsible AI Dashboard: Једно место за оперативно коришћење RAI у пракси, од Бесмире Нуши и Мехрнуш Самеки -> 🎥 Кликните на слику изнад за видео: Одговорна AI контролна табла: Централно место за оперативну примену RAI у пракси, од Besmira Nushi и Mehrnoosh Sameki +[![Responsible AI Dashboard: One-stop shop for operationalizing RAI in practice](https://img.youtube.com/vi/f1oaDNl3djg/0.jpg)](https://www.youtube.com/watch?v=f1oaDNl3djg "Responsible AI Dashboard: One-stop shop for operationalizing RAI in practice") -Реферишите следеће материјале да бисте сазнали више о одговорном AI и како изградити поузданије моделе: +> 🎥 Кликните на слику изнад за видео: Responsible AI Dashboard: Једно место за оперативно коришћење RAI у пракси од Бесмире Нуши и Мехрнуш Самеки + +Позовите се на следеће материјале за више информација о одговорној AI и како градити поузданије моделе: -- Microsoft-ови алати RAI контролне табле за отклањање проблема у ML моделима: [Ресурси алата за одговорни AI](https://aka.ms/rai-dashboard) +- Microsoft-ови алати RAI контролне табле за отклањање грешака у 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) -- 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/) ## Задатак @@ -145,5 +173,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/sv/.co-op-translator.json b/translations/sv/.co-op-translator.json index 3ceac20c6..20db4829e 100644 --- a/translations/sv/.co-op-translator.json +++ b/translations/sv/.co-op-translator.json @@ -24,8 +24,8 @@ "language_code": "sv" }, "1-Introduction/3-fairness/README.md": { - "original_hash": "9a6b702d1437c0467e3c5c28d763dac2", - "translation_date": "2025-09-05T21:38:29+00:00", + "original_hash": "0f00d72169a0d37eecfd16d71e01700a", + "translation_date": "2026-07-14T05:51:39+00:00", "source_file": "1-Introduction/3-fairness/README.md", "language_code": "sv" }, @@ -54,8 +54,8 @@ "language_code": "sv" }, "2-Regression/1-Tools/README.md": { - "original_hash": "fa81d226c71d5af7a2cade31c1c92b88", - "translation_date": "2025-09-05T21:13:18+00:00", + "original_hash": "0b8635427b582d03ea4ab7089b93e505", + "translation_date": "2026-07-14T05:47:13+00:00", "source_file": "2-Regression/1-Tools/README.md", "language_code": "sv" }, @@ -72,8 +72,8 @@ "language_code": "sv" }, "2-Regression/2-Data/README.md": { - "original_hash": "7c077988328ebfe33b24d07945f16eca", - "translation_date": "2025-09-05T21:16:02+00:00", + "original_hash": "a58b2c4d16c6b122643391745ac15af6", + "translation_date": "2026-07-14T05:48:14+00:00", "source_file": "2-Regression/2-Data/README.md", "language_code": "sv" }, @@ -89,6 +89,12 @@ "source_file": "2-Regression/2-Data/solution/Julia/README.md", "language_code": "sv" }, + "2-Regression/2-Data/solution/notebook.ipynb": { + "original_hash": "96b95f8cf473481f2f371de8156f1571", + "translation_date": "2026-07-14T05:08:38+00:00", + "source_file": "2-Regression/2-Data/solution/notebook.ipynb", + "language_code": "sv" + }, "2-Regression/3-Linear/README.md": { "original_hash": "8b776e731c35b171d316d01d0e7b1369", "translation_date": "2026-04-26T20:21:19+00:00", @@ -457,7 +463,7 @@ }, "8-Reinforcement/1-QLearning/README.md": { "original_hash": "911efd5e595089000cb3c16fce1beab8", - "translation_date": "2025-09-05T22:04:16+00:00", + "translation_date": "2026-07-14T05:49:25+00:00", "source_file": "8-Reinforcement/1-QLearning/README.md", "language_code": "sv" }, @@ -481,7 +487,7 @@ }, "8-Reinforcement/2-Gym/README.md": { "original_hash": "107d5bb29da8a562e7ae72262d251a75", - "translation_date": "2025-09-05T22:08:49+00:00", + "translation_date": "2026-07-14T05:50:38+00:00", "source_file": "8-Reinforcement/2-Gym/README.md", "language_code": "sv" }, @@ -581,6 +587,19 @@ "source_file": "TROUBLESHOOTING.md", "language_code": "sv" }, + "__translation_failures__": { + "sketchnotes/LICENSE.md": { + "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f", + "source_file": "sketchnotes/LICENSE.md", + "language_code": "sv", + "failure_date": "2026-07-14T05:46:11+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-05T21:30:57+00:00", diff --git a/translations/sv/1-Introduction/3-fairness/README.md b/translations/sv/1-Introduction/3-fairness/README.md index 17f934255..ae0ebc904 100644 --- a/translations/sv/1-Introduction/3-fairness/README.md +++ b/translations/sv/1-Introduction/3-fairness/README.md @@ -1,150 +1,153 @@ # Bygga maskininlärningslösningar med ansvarsfull AI - -![Sammanfattning av ansvarsfull AI i maskininlärning i en sketchnote](../../../../sketchnotes/ml-fairness.png) + +![Sammanfattning av ansvarsfull AI i maskininlärning i en sketchnote](../../../../translated_images/sv/ml-fairness.ef296ebec6afc98a.webp) > Sketchnote av [Tomomi Imura](https://www.twitter.com/girlie_mac) -## [Quiz före föreläsningen](https://ff-quizzes.netlify.app/en/ml/) - +## [Förföreläsningsquiz](https://ff-quizzes.netlify.app/en/ml/) + ## Introduktion -I denna kursplan kommer du att börja upptäcka hur maskininlärning kan och redan påverkar våra dagliga liv. Redan nu är system och modeller involverade i dagliga beslutsprocesser, som exempelvis hälsovårdsdiagnoser, låneansökningar eller att upptäcka bedrägerier. Därför är det viktigt att dessa modeller fungerar väl för att ge resultat som är pålitliga. Precis som med vilken mjukvaruapplikation som helst kommer AI-system att missa förväntningar eller ge oönskade resultat. Det är därför avgörande att kunna förstå och förklara beteendet hos en AI-modell. +I denna kursplan kommer du att börja upptäcka hur maskininlärning kan och påverkar våra vardagsliv. Redan nu är system och modeller involverade i dagliga beslutsuppgifter, såsom vårddiagnoer, låneansökningar eller bedrägeridetektering. Så det är viktigt att dessa modeller fungerar bra för att leverera resultat som är pålitliga. Precis som vilken programvara som helst kommer AI-system att missa förväntningar eller ha oönskade resultat. Därför är det avgörande att kunna förstå och förklara beteendet hos en AI-modell. -Föreställ dig vad som kan hända när data som används för att bygga dessa modeller saknar vissa demografiska grupper, som exempelvis ras, kön, politiska åsikter eller religion, eller när dessa grupper är oproportionerligt representerade. Vad händer om modellens resultat tolkas som att gynna vissa grupper? Vilka blir konsekvenserna för applikationen? Dessutom, vad händer när modellen ger ett negativt resultat som skadar människor? Vem är ansvarig för AI-systemets beteende? Dessa är några av de frågor vi kommer att utforska i denna kursplan. +Föreställ dig vad som kan hända när de data du använder för att bygga dessa modeller saknar vissa demografiska grupper, såsom ras, kön, politisk åsikt, religion, eller oproportionerligt representerar sådana grupper. Vad händer när modellens resultat tolkas för att gynna någon demografisk grupp? Vad är konsekvensen för applikationen? Dessutom, vad händer när modellen ger ett negativt resultat som skadar människor? Vem är ansvarig för AI-systemets beteende? Det är några frågor vi kommer att utforska i denna kursplan. I denna lektion kommer du att: -- Öka din medvetenhet om vikten av rättvisa i maskininlärning och skador relaterade till orättvisa. -- Bli bekant med att utforska avvikelser och ovanliga scenarier för att säkerställa tillförlitlighet och säkerhet. -- Få förståelse för behovet av att stärka alla genom att designa inkluderande system. -- Utforska hur viktigt det är att skydda integritet och säkerhet för data och människor. -- Se vikten av att ha en "glaslåda"-metod för att förklara AI-modellers beteende. -- Vara medveten om hur ansvarstagande är avgörande för att bygga förtroende för AI-system. +- Öka din medvetenhet om vikten av rättvisa i maskininlärning och skador relaterade till rättvisa. +- Bli bekant med övningen att utforska avvikare och ovanliga scenarier för att säkerställa tillförlitlighet och säkerhet +- Få förståelse för behovet att ge alla kraft genom att designa inkluderande system +- Utforska hur viktigt det är att skydda integritet och säkerhet för data och människor +- Se vikten av att ha en glaslåda-ansats för att förklara beteendet hos AI-modeller +- Vara medveten om hur ansvar är avgörande för att bygga förtroende för AI-system ## Förkunskaper -Som förkunskap, vänligen ta "Principer för ansvarsfull AI" på Learn Path och titta på videon nedan om ämnet: +Som förkunskap, vänligen genomför "Principerna för ansvarsfull AI"-lärvägen och titta på videon nedan om ämnet: -Lär dig mer om ansvarsfull AI genom att följa denna [Learning Path](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) +Lär dig mer om ansvarfull AI genom att följa denna [Lärväg](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) -[![Microsofts syn på ansvarsfull AI](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsofts syn på ansvarsfull AI") +[![Microsofts ansats till ansvarsfull AI](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsofts ansats till ansvarsfull AI") -> 🎥 Klicka på bilden ovan för en video: Microsofts syn på ansvarsfull AI +> 🎥 Klicka på bilden ovan för en video: Microsofts ansats till ansvarsfull AI ## Rättvisa -AI-system bör behandla alla rättvist och undvika att påverka liknande grupper av människor på olika sätt. Till exempel, när AI-system ger vägledning om medicinsk behandling, låneansökningar eller anställning, bör de ge samma rekommendationer till alla med liknande symptom, ekonomiska förhållanden eller yrkeskvalifikationer. Vi människor bär alla på ärvda fördomar som påverkar våra beslut och handlingar. Dessa fördomar kan också återspeglas i data som används för att träna AI-system. Sådan manipulation kan ibland ske oavsiktligt. Det är ofta svårt att medvetet veta när man introducerar fördomar i data. +AI-system bör behandla alla rättvist och undvika att påverka liknande grupper av människor på olika sätt. Till exempel, när AI-system ger vägledning om medicinsk behandling, låneansökningar eller anställning bör de ge samma rekommendationer till alla med liknande symtom, ekonomiska omständigheter eller yrkesmässiga kvalifikationer. Var och en av oss människor bär på ärvda fördomar som påverkar våra beslut och handlingar. Dessa fördomar kan vara uppenbara i de data som vi använder för att träna AI-system. Sådana manipulationer kan ibland ske omedvetet. Det är ofta svårt att medvetet veta när man introducerar bias i data. -**"Orättvisa"** omfattar negativa effekter, eller "skador", för en grupp människor, såsom de definierade utifrån ras, kön, ålder eller funktionsnedsättning. De huvudsakliga skadorna relaterade till rättvisa kan klassificeras som: +**"Orättvisa"** omfattar negativa effekter eller "skador" för en grupp människor, såsom de definierade utifrån ras, kön, ålder eller funktionshinder. De huvudsakliga rättviserelaterade skadorna kan klassificeras som: -- **Allokering**, om exempelvis ett kön eller en etnicitet gynnas över en annan. -- **Kvalitet på tjänsten**. Om du tränar data för ett specifikt scenario men verkligheten är mycket mer komplex, leder det till en dåligt fungerande tjänst. Till exempel en tvålautomat som inte kunde känna av personer med mörk hud. [Referens](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773) -- **Nedvärdering**. Att orättvist kritisera och märka något eller någon. Till exempel, en bildmärkningsteknik som ökändes för att felaktigt märka bilder av mörkhyade personer som gorillor. -- **Över- eller underrepresentation**. Idén att en viss grupp inte syns i ett visst yrke, och att alla tjänster eller funktioner som fortsätter att främja detta bidrar till skada. -- **Stereotyper**. Att associera en viss grupp med förutbestämda attribut. Till exempel kan ett språköversättningssystem mellan engelska och turkiska ha felaktigheter på grund av ord med stereotypa kopplingar till kön. +- **Tilldelning**, om ett kön eller en etnicitet till exempel gynnas över en annan. +- **Tjänstekvalitet**. Om du tränar data för ett specifikt scenario men verkligheten är mycket mer komplex, leder det till en dålig fungerande tjänst. Till exempel en handtvålsdispenser som inte tycktes kunna känna av människor med mörk hud. [Referens](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773) +- **Nedsättning**. Att orättvist kritisera och etikettera något eller någon. Till exempel felmärkning av bilder på mörkhyade personer som gorillor av en bildmärkningsteknik. +- **Över- eller underrepresentation**. Idén är att en viss grupp inte syns inom ett visst yrke, och varje tjänst eller funktion som fortsätter att främja detta bidrar till skada. +- **Stereotypisering**. Att koppla en given grupp med förutbestämda attribut. Till exempel kan ett språköversättningssystem mellan engelska och turkiska ha felaktigheter på grund av ord med stereotypa könsassociationer. -![översättning till turkiska](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) +![översättning till turkiska](../../../../translated_images/sv/gender-bias-translate-en-tr.f185fd8822c2d437.webp) > översättning till turkiska -![översättning tillbaka till engelska](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) +![översättning tillbaka till engelska](../../../../translated_images/sv/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) > översättning tillbaka till engelska -När vi designar och testar AI-system måste vi säkerställa att AI är rättvis och inte programmerad att fatta partiska eller diskriminerande beslut, vilket även människor är förbjudna att göra. Att garantera rättvisa i AI och maskininlärning förblir en komplex socio-teknisk utmaning. +När man designar och testar AI-system behöver vi säkerställa att AI är rättvist och inte programmerat att fatta partiska eller diskriminerande beslut, vilka människor också är förbjudna att fatta. Att garantera rättvisa i AI och maskininlärning förblir en komplex socioteknisk utmaning. ### Tillförlitlighet och säkerhet -För att bygga förtroende måste AI-system vara tillförlitliga, säkra och konsekventa under normala och oväntade förhållanden. Det är viktigt att veta hur AI-system beter sig i olika situationer, särskilt när de är avvikande. När vi bygger AI-lösningar måste vi lägga stor vikt vid hur vi hanterar en mängd olika omständigheter som AI-lösningarna kan stöta på. Till exempel måste en självkörande bil prioritera människors säkerhet. Därför måste AI som driver bilen ta hänsyn till alla möjliga scenarier som bilen kan stöta på, såsom natt, åskväder eller snöstormar, barn som springer över gatan, husdjur, vägarbeten etc. Hur väl ett AI-system kan hantera en mängd olika förhållanden på ett tillförlitligt och säkert sätt återspeglar graden av förutseende som dataforskaren eller AI-utvecklaren hade under systemets design eller testning. +För att bygga förtroende behöver AI-system vara tillförlitliga, säkra och konsekventa under normala och oväntade förhållanden. Det är viktigt att veta hur AI-system beter sig i olika situationer, särskilt när de är avvikare. När man bygger AI-lösningar måste det finnas stor fokus på hur man hanterar en mängd olika omständigheter som AI-lösningarna kan möta. Till exempel måste en självkörande bil prioritera människors säkerhet. Som resultat behöver AI som driver bilen ta hänsyn till alla möjliga scenarier som bilen kan stöta på som natt, åskväder eller snöstormar, barn som springer över gatan, husdjur, vägbyggen etc. Hur bra ett AI-system kan hantera ett brett spektrum av förhållanden pålitligt och säkert speglar hur väl dataforskaren eller AI-utvecklaren förutsett situationerna vid design eller testning av systemet. > [🎥 Klicka här för en video: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl) -### Inkludering +### Inkluderande -AI-system bör designas för att engagera och stärka alla. När dataforskare och AI-utvecklare designar och implementerar AI-system identifierar och adresserar de potentiella hinder i systemet som oavsiktligt kan exkludera människor. Till exempel finns det 1 miljard människor med funktionsnedsättningar världen över. Med AI:s framsteg kan de få tillgång till en mängd information och möjligheter enklare i sina dagliga liv. Genom att adressera dessa hinder skapas möjligheter att innovera och utveckla AI-produkter med bättre upplevelser som gynnar alla. +AI-system bör designas för att engagera och stärka alla. När man designar och implementerar AI-system identifierar dataforskare och AI-utvecklare potentiella hinder i systemet som kan oavsiktligt exkludera människor. Till exempel finns det en miljard personer med funktionsnedsättningar runt om i världen. Med AI:s framsteg kan de enklare få tillgång till ett brett spektrum av information och möjligheter i sina vardagsliv. Genom att ta bort hindren skapas möjligheter att utveckla AI-produkter med bättre upplevelser som gynnar alla. > [🎥 Klicka här för en video: inkludering i AI](https://www.microsoft.com/videoplayer/embed/RE4vl9v) ### Säkerhet och integritet -AI-system bör vara säkra och respektera människors integritet. Människor har mindre förtroende för system som äventyrar deras integritet, information eller liv. När vi tränar maskininlärningsmodeller förlitar vi oss på data för att producera de bästa resultaten. I detta arbete måste vi överväga datans ursprung och integritet. Till exempel, var datan användargenererad eller offentligt tillgänglig? Vidare, när vi arbetar med data, är det avgörande att utveckla AI-system som kan skydda konfidentiell information och motstå attacker. När AI blir allt vanligare blir det allt viktigare och mer komplext att skydda integritet och säkra viktig personlig och affärsmässig information. Integritets- och datasäkerhetsfrågor kräver särskilt noggrann uppmärksamhet för AI eftersom tillgång till data är avgörande för att AI-system ska kunna göra korrekta och informerade förutsägelser och beslut om människor. +AI-system bör vara säkra och respektera människors integritet. Människor har mindre förtroende för system som riskerar deras integritet, information eller liv. När maskininlärningsmodeller tränas förlitar vi oss på data för att producera bästa resultat. Då måste ursprunget och integriteten hos datan beaktas. Till exempel, var datan användargenererad eller offentligt tillgänglig? När man arbetar med data är det avgörande att utveckla AI-system som kan skydda konfidentiell information och motstå attacker. Eftersom AI blir allt vanligare blir det mer kritiskt och komplext att skydda integritet och säkerställa viktig personlig och affärsinformation. Frågor om integritet och datasäkerhet kräver särskild närvaro för AI eftersom tillgång till data är avgörande för att AI-system ska kunna göra korrekta och välgrundade förutsägelser och beslut om människor. > [🎥 Klicka här för en video: säkerhet i AI](https://www.microsoft.com/videoplayer/embed/RE4voJF) -- Som bransch har vi gjort betydande framsteg inom integritet och säkerhet, mycket tack vare regleringar som GDPR (General Data Protection Regulation). -- Med AI-system måste vi dock erkänna spänningen mellan behovet av mer personlig data för att göra systemen mer personliga och effektiva – och integritet. -- Precis som med internets födelse ser vi också en stor ökning av säkerhetsproblem relaterade till AI. +- Som bransch har vi gjort betydande framsteg inom integritet och säkerhet, drivet av regler som GDPR (Allmän dataskyddsförordning). +- Ändå måste vi med AI-system erkänna spänningen mellan behovet av mer personlig data för att göra systemen mer personliga och effektiva - och integritet. +- Precis som med uppkomsten av uppkopplade datorer med internet ser vi också en stor ökning av säkerhetsproblem relaterade till AI. - Samtidigt har vi sett AI användas för att förbättra säkerheten. Till exempel drivs de flesta moderna antivirusprogram idag av AI-heuristik. -- Vi måste säkerställa att våra dataforskningsprocesser harmoniserar med de senaste integritets- och säkerhetspraxis. +- Vi måste säkerställa att våra Data Science-processer harmoniserar med de senaste praxis för integritet och säkerhet. -### Transparens -AI-system bör vara förståeliga. En viktig del av transparens är att förklara AI-systemens beteende och deras komponenter. Att förbättra förståelsen av AI-system kräver att intressenter förstår hur och varför de fungerar så att de kan identifiera potentiella prestandaproblem, säkerhets- och integritetsproblem, fördomar, exkluderande praxis eller oavsiktliga resultat. Vi tror också att de som använder AI-system bör vara ärliga och öppna om när, varför och hur de väljer att använda dem, samt om systemens begränsningar. Till exempel, om en bank använder ett AI-system för att stödja sina beslut om konsumentlån, är det viktigt att granska resultaten och förstå vilken data som påverkar systemets rekommendationer. Regeringar börjar reglera AI inom olika branscher, så dataforskare och organisationer måste förklara om ett AI-system uppfyller regulatoriska krav, särskilt när det finns ett oönskat resultat. +### Transparens +AI-system bör vara begripliga. En avgörande del av transparens är att förklara beteendet hos AI-system och deras komponenter. Att förbättra förståelsen för AI-system kräver att intressenter förstår hur och varför de fungerar så att de kan identifiera potentiella prestandaproblem, säkerhets- och integritetsbekymmer, partiskhet, exkluderande praxis eller oönskade utfall. Vi anser också att de som använder AI-system bör vara ärliga och öppna om när, varför och hur de väljer att använda dem. Samt begränsningarna av systemen de använder. Till exempel, om en bank använder ett AI-system för att stödja sina utlåningsbeslut, är det viktigt att granska resultaten och förstå vilka data som påverkar systemets rekommendationer. Regeringar börjar reglera AI inom olika branscher, så dataforskare och organisationer måste kunna förklara om ett AI-system uppfyller regelkrav, särskilt när ett oönskat resultat sker. > [🎥 Klicka här för en video: transparens i AI](https://www.microsoft.com/videoplayer/embed/RE4voJF) - Eftersom AI-system är så komplexa är det svårt att förstå hur de fungerar och tolka resultaten. -- Denna brist på förståelse påverkar hur dessa system hanteras, operationaliseras och dokumenteras. -- Denna brist på förståelse påverkar ännu viktigare de beslut som fattas baserat på resultaten dessa system producerar. +- Denna brist på förståelse påverkar hur dessa system hanteras, driftssätts och dokumenteras. +- Denna brist på förståelse påverkar ännu viktigare besluten som fattas med resultaten dessa system producerar. -### Ansvarstagande +### Ansvarsskyldighet + +Personer som designar och distribuerar AI-system måste vara ansvariga för hur deras system fungerar. Behovet av ansvar är särskilt viktigt med känslig teknik som ansiktsigenkänning. På senare tid har efterfrågan på ansiktsigenkänningsteknologi ökat, särskilt från brottsbekämpande myndigheter som ser teknikens potential i tillämpningar som att hitta saknade barn. Dock kan dessa tekniker potentiellt användas av en regering för att sätta medborgarnas grundläggande friheter i riskzonen genom att till exempel möjliggöra kontinuerlig övervakning av specifika personer. Därför behöver dataforskare och organisationer ansvara för hur deras AI-system påverkar individer eller samhället. -De personer som designar och implementerar AI-system måste vara ansvariga för hur deras system fungerar. Behovet av ansvarstagande är särskilt viktigt med känsliga teknologier som ansiktsigenkänning. På senare tid har efterfrågan på ansiktsigenkänningsteknik ökat, särskilt från brottsbekämpande organisationer som ser potentialen i tekniken för användning som att hitta försvunna barn. Dessa teknologier kan dock potentiellt användas av en regering för att äventyra medborgarnas grundläggande friheter, exempelvis genom att möjliggöra kontinuerlig övervakning av specifika individer. Därför måste dataforskare och organisationer vara ansvariga för hur deras AI-system påverkar individer eller samhället. +[![Ledande AI-forskare varnar för massövervakning via ansiktsigenkänning](../../../../translated_images/sv/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsofts ansats till ansvarsfull AI") -[![Ledande AI-forskare varnar för massövervakning genom ansiktsigenkänning](../../../../1-Introduction/3-fairness/images/accountability.png)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsofts syn på ansvarsfull AI") +> 🎥 Klicka på bilden ovan för en video: Varningar om massövervakning via ansiktsigenkänning -> 🎥 Klicka på bilden ovan för en video: Varningar om massövervakning genom ansiktsigenkänning +I slutändan är en av de största frågorna för vår generation, som den första generationen som för AI till samhället, hur man säkerställer att datorer förblir ansvariga inför människor och hur man säkerställer att de som designar datorer förblir ansvariga inför alla andra. -Slutligen är en av de största frågorna för vår generation, som den första generationen som introducerar AI i samhället, hur vi säkerställer att datorer förblir ansvariga inför människor och hur vi säkerställer att de som designar datorer förblir ansvariga inför alla andra. +## Påverkansbedömning -## Konsekvensbedömning +Innan man tränar en maskininlärningsmodell är det viktigt att genomföra en påverkansbedömning för att förstå syftet med AI-systemet; vad den avsedda användningen är; var det kommer att implementeras; och vem som kommer att interagera med systemet. Dessa är hjälpsamma för granskare eller testare som utvärderar systemet för att veta vilka faktorer att ta i beaktning vid identifiering av potentiella risker och förväntade konsekvenser. -Innan du tränar en maskininlärningsmodell är det viktigt att genomföra en konsekvensbedömning för att förstå syftet med AI-systemet; vad den avsedda användningen är; var det kommer att implementeras; och vem som kommer att interagera med systemet. Dessa är hjälpsamma för granskare eller testare som utvärderar systemet för att veta vilka faktorer som ska beaktas vid identifiering av potentiella risker och förväntade konsekvenser. +Följande är fokusområden vid genomförande av en påverkansbedömning: -Följande är fokusområden vid genomförande av en konsekvensbedömning: +* **Negativ påverkan på individer**. Att vara medveten om begränsningar eller krav, otillåten användning eller kända begränsningar som hindrar systemets prestanda är avgörande för att säkerställa att systemet inte används på ett sätt som kan skada individer. +* **Datakrav**. Att få förståelse för hur och var systemet kommer att använda data gör det möjligt för granskare att undersöka vilka datakrav som behöver beaktas (t.ex. GDPR eller HIPAA-regler). Utöver detta undersöks om källan eller mängden data är tillräcklig för träning. +* **Sammanfattning av påverkan**. Samla en lista över potentiella skador som kan uppstå från användning av systemet. Under maskininlärningscykeln ska det ses över om de identifierade problemen mildras eller åtgärdas. +* **Tillämpliga mål** för var och en av de sex kärnprinciperna. Utvärdera om målen från varje princip uppnås och om det finns några luckor. -* **Negativ påverkan på individer**. Att vara medveten om eventuella restriktioner eller krav, otillåten användning eller kända begränsningar som hindrar systemets prestanda är avgörande för att säkerställa att systemet inte används på ett sätt som kan skada individer. -* **Datakrav**. Att förstå hur och var systemet kommer att använda data gör det möjligt för granskare att utforska eventuella datakrav som du måste vara medveten om (t.ex. GDPR eller HIPPA-regler). Dessutom, undersök om datakällan eller mängden data är tillräcklig för träning. -* **Sammanfattning av påverkan**. Samla en lista över potentiella skador som kan uppstå vid användning av systemet. Under hela ML-livscykeln, granska om de identifierade problemen har åtgärdats eller hanterats. -* **Tillämpliga mål** för var och en av de sex kärnprinciperna. Bedöm om målen från varje princip uppfylls och om det finns några luckor. ## Felsökning med ansvarsfull AI -Precis som att felsöka en mjukvaruapplikation är felsökning av ett AI-system en nödvändig process för att identifiera och lösa problem i systemet. Det finns många faktorer som kan påverka att en modell inte presterar som förväntat eller ansvarsfullt. De flesta traditionella modellprestandamått är kvantitativa sammanställningar av en modells prestanda, vilket inte är tillräckligt för att analysera hur en modell bryter mot principerna för ansvarsfull AI. Dessutom är en maskininlärningsmodell en "svart låda" som gör det svårt att förstå vad som driver dess resultat eller att ge en förklaring när den gör ett misstag. Senare i denna kurs kommer vi att lära oss hur man använder Responsible AI-dashboarden för att hjälpa till att felsöka AI-system. Dashboarden erbjuder ett holistiskt verktyg för dataforskare och AI-utvecklare att utföra: +Precis som att felsöka en programvara är felsökning av ett AI-system en nödvändig process för att identifiera och lösa problem i systemet. Det finns många faktorer som kan påverka att en modell inte fungerar som förväntat eller ansvarsfullt. De flesta traditionella modellprestandamått är kvantitativa sammanställningar av modellens prestation, vilket inte är tillräckligt för att analysera hur en modell bryter mot principerna för ansvarsfull AI. Dessutom är en maskininlärningsmodell en svart låda som gör det svårt att förstå vad som styr dess resultat eller ge förklaring när den gör ett misstag. Senare i kursen kommer vi att lära oss hur man använder den ansvarsfulla AI-instrumentpanelen för att hjälpa till att felsöka AI-system. Instrumentpanelen erbjuder ett helhetsverktyg för dataforskare och AI-utvecklare att utföra: -* **Felsökningsanalys**. För att identifiera felens fördelning i modellen som kan påverka systemets rättvisa eller tillförlitlighet. -* **Modellöversikt**. För att upptäcka var det finns skillnader i modellens prestanda över olika datakohorter. -* **Dataanalys**. För att förstå datadistributionen och identifiera eventuella fördomar i data som kan leda till problem med rättvisa, inkludering och tillförlitlighet. -* **Modelltolkning**. För att förstå vad som påverkar eller styr modellens förutsägelser. Detta hjälper till att förklara modellens beteende, vilket är viktigt för transparens och ansvarstagande. +* **Felfördelningsanalys**. För att identifiera felens fördelning i modellen som kan påverka systemets rättvisa eller tillförlitlighet. +* **Modellöversikt**. För att upptäcka var det finns skillnader i modellens prestanda över datasegment. +* **Dataanalys**. För att förstå datadistributionen och identifiera potentiell partiskhet i data som kan leda till problem med rättvisa, inkludering och tillförlitlighet. +* **Modelltoförståelse**. För att förstå vad som påverkar eller styr modellens förutsägelser. Detta hjälper till att förklara modellens beteende, vilket är viktigt för transparens och ansvar. -## 🚀 Utmaning +## 🚀 Utmaning + För att förhindra att skador introduceras från början bör vi: -- ha en mångfald av bakgrunder och perspektiv bland de personer som arbetar med systemen -- investera i dataset som speglar mångfalden i vårt samhälle -- utveckla bättre metoder under hela maskininlärningslivscykeln för att upptäcka och korrigera ansvarsfull AI när det inträffar - -Tänk på verkliga scenarier där en modells opålitlighet är uppenbar i modellbyggande och användning. Vad mer bör vi överväga? +- ha en mångfald av bakgrunder och perspektiv bland de som arbetar med system +- investera i datamängder som speglar mångfalden i vårt samhälle +- utveckla bättre metoder genom hela maskininlärningscykeln för att upptäcka och korrigera ansvarslös AI när det inträffar -## [Quiz efter föreläsningen](https://ff-quizzes.netlify.app/en/ml/) +Tänk på verkliga scenarier där en modells opålitlighet är uppenbar vid modellbyggande och användning. Vad mer bör vi ta hänsyn till? -## Granskning och självstudier +## [Efterföreläsningsquiz](https://ff-quizzes.netlify.app/en/ml/) -I denna lektion har du lärt dig några grunder om begreppen rättvisa och orättvisa i maskininlärning. -Titta på denna workshop för att fördjupa dig i ämnena: +## Genomgång & Självstudier + -- I jakten på ansvarsfull AI: Att omsätta principer i praktiken av Besmira Nushi, Mehrnoosh Sameki och Amit Sharma +I den här lektionen har du lärt dig grunderna i begreppen rättvisa och orättvisa inom maskininlärning. + +Titta på denna workshop för att fördjupa dig i ämnena: -[![Responsible AI Toolbox: En öppen källkodsram för att bygga ansvarsfull AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: En öppen källkodsram för att bygga ansvarsfull AI") +- I jakten på ansvarig AI: Att omsätta principer i praktiken av Besmira Nushi, Mehrnoosh Sameki och Amit Sharma +[![Responsible AI Toolbox: An open-source framework for building responsible AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") -> 🎥 Klicka på bilden ovan för en video: RAI Toolbox: En öppen källkodsram för att bygga ansvarsfull AI av Besmira Nushi, Mehrnoosh Sameki och Amit Sharma +> 🎥 Klicka på bilden ovan för en video: RAI Toolbox: Ett öppen källkodsramverk för att bygga ansvarig AI av Besmira Nushi, Mehrnoosh Sameki och Amit Sharma -Läs också: +Läs också: -- Microsofts RAI-resurscenter: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) +- Microsofts RAI resurscenter: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) -- Microsofts FATE-forskningsgrupp: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/) +- Microsofts FATE forskargrupp: [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) @@ -158,5 +161,7 @@ Läs om Azure Machine Learnings verktyg för att säkerställa rättvisa: --- -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av AI-översättningstjänsten [Co-op Translator](https://github.com/Azure/co-op-translator). Även om vi strävar efter noggrannhet, vänligen notera att automatiska översättningar kan innehålla fel eller felaktigheter. Det ursprungliga dokumentet på dess originalspråk bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för eventuella missförstånd eller feltolkningar som uppstår vid användning av denna översättning. \ No newline at end of file + +**Ansvarsfriskrivning**: +Detta dokument har översatts med hjälp av AI-översättningstjänsten [Co-op Translator](https://github.com/Azure/co-op-translator). Även om vi strävar efter noggrannhet, var vänlig notera att automatiska översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på dess modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller feltolkningar som uppstår till följd av användningen av denna översättning. + \ No newline at end of file diff --git a/translations/sv/2-Regression/1-Tools/README.md b/translations/sv/2-Regression/1-Tools/README.md index 40c1dff8f..2d93af530 100644 --- a/translations/sv/2-Regression/1-Tools/README.md +++ b/translations/sv/2-Regression/1-Tools/README.md @@ -1,120 +1,121 @@ # Kom igång med Python och Scikit-learn för regressionsmodeller -![Sammanfattning av regressioner i en sketchnote](../../../../sketchnotes/ml-regression.png) +![Sammanfattning av regressioner i en skissbild](../../../../translated_images/sv/ml-regression.4e4f70e3b3ed446e.webp) -> Sketchnote av [Tomomi Imura](https://www.twitter.com/girlie_mac) +> Skiss av [Tomomi Imura](https://www.twitter.com/girlie_mac) -## [Quiz före föreläsningen](https://ff-quizzes.netlify.app/en/ml/) +## [Förhandsföreläsningsquiz](https://ff-quizzes.netlify.app/en/ml/) > ### [Den här lektionen finns tillgänglig i R!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html) ## Introduktion -I dessa fyra lektioner kommer du att lära dig hur man bygger regressionsmodeller. Vi kommer snart att diskutera vad dessa används till. Men innan du gör något, se till att du har rätt verktyg på plats för att starta processen! +I dessa fyra lektioner kommer du att upptäcka hur man bygger regressionsmodeller. Vi kommer snart att diskutera vad de används till. Men innan du gör något, se till att du har rätt verktyg på plats för att starta processen! -I den här lektionen kommer du att lära dig att: +I denna lektion kommer du att lära dig hur man: -- Konfigurera din dator för lokala maskininlärningsuppgifter. -- Arbeta med Jupyter-notebooks. -- Använda Scikit-learn, inklusive installation. -- Utforska linjär regression med en praktisk övning. +- Konfigurerar din dator för lokala maskininlärningsuppgifter. +- Arbetar med Jupyter Notebooks. +- Använder Scikit-learn, inklusive installation. +- Utforskar linjär regression med en praktisk övning. ## Installationer och konfigurationer -[![ML för nybörjare - Ställ in dina verktyg för att bygga maskininlärningsmodeller](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML för nybörjare - Ställ in dina verktyg för att bygga maskininlärningsmodeller") +[![ML för nybörjare - Sätt upp dina verktyg klara för att bygga maskininlärningsmodeller](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML för nybörjare - Sätt upp dina verktyg klara för att bygga maskininlärningsmodeller") -> 🎥 Klicka på bilden ovan för en kort video om att konfigurera din dator för ML. +> 🎥 Klicka på bilden ovan för en kort video som går igenom hur du konfigurerar din dator för ML. -1. **Installera Python**. Se till att [Python](https://www.python.org/downloads/) är installerat på din dator. Du kommer att använda Python för många data science- och maskininlärningsuppgifter. De flesta datorsystem har redan en Python-installation. Det finns användbara [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) som kan underlätta installationen för vissa användare. +1. **Installera Python**. Se till att [Python](https://www.python.org/downloads/) är installerat på din dator. Du kommer att använda Python för många datavetenskaps- och maskininlärningsuppgifter. De flesta datorer har redan en Python-installation. Det finns användbara [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) tillgängliga också, för att underlätta installationen för vissa användare. - Vissa användningsområden för Python kräver dock en viss version av programvaran, medan andra kräver en annan version. Därför är det användbart att arbeta inom en [virtuell miljö](https://docs.python.org/3/library/venv.html). + Vissa användningsområden för Python kräver dock en version av programvaran, medan andra kräver en annan version. Därför är det användbart att arbeta inom en [virtuell miljö](https://docs.python.org/3/library/venv.html). -2. **Installera Visual Studio Code**. Se till att du har Visual Studio Code installerat på din dator. Följ dessa instruktioner för att [installera Visual Studio Code](https://code.visualstudio.com/) för grundläggande installation. Du kommer att använda Python i Visual Studio Code i den här kursen, så det kan vara bra att fräscha upp hur man [konfigurerar Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) för Python-utveckling. +2. **Installera Visual Studio Code**. Se till att du har Visual Studio Code installerat på din dator. Följ dessa instruktioner för att [installera Visual Studio Code](https://code.visualstudio.com/) för grundinstallationen. Du kommer att använda Python i Visual Studio Code i denna kurs, så du kanske vill fräscha upp hur man [konfigurerar Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) för Python-utveckling. - > Bli bekväm med Python genom att arbeta igenom denna samling av [Learn-moduler](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) + > Bli bekväm med Python genom att arbeta igenom denna samling av [Lär-moduler](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) > - > [![Ställ in Python med Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Ställ in Python med Visual Studio Code") + > [![Installera Python med Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Installera Python med Visual Studio Code") > > 🎥 Klicka på bilden ovan för en video: använda Python i VS Code. -3. **Installera Scikit-learn**, genom att följa [dessa instruktioner](https://scikit-learn.org/stable/install.html). Eftersom du behöver använda Python 3 rekommenderas det att du använder en virtuell miljö. Observera att om du installerar detta bibliotek på en M1 Mac finns det särskilda instruktioner på sidan som är länkad ovan. +3. **Installera Scikit-learn**, genom att följa [dessa instruktioner](https://scikit-learn.org/stable/install.html). Eftersom du behöver vara säker på att använda Python 3, rekommenderas det att använda en virtuell miljö. Observera att om du installerar detta bibliotek på en M1 Mac, finns särskilda instruktioner på den länkade sidan ovan. -4. **Installera Jupyter Notebook**. Du behöver [installera Jupyter-paketet](https://pypi.org/project/jupyter/). +1. **Installera Jupyter Notebook**. Du behöver [installera Jupyter-paketet](https://pypi.org/project/jupyter/). -## Din ML-utvecklingsmiljö +## Din ML-miljö för författande -Du kommer att använda **notebooks** för att utveckla din Python-kod och skapa maskininlärningsmodeller. Denna typ av fil är ett vanligt verktyg för dataforskare och kan identifieras genom deras suffix eller filändelse `.ipynb`. +Du kommer att använda **notebooks** för att utveckla din Python-kod och skapa maskininlärningsmodeller. Denna typ av fil är ett vanligt verktyg för datavetare, och de kan identifieras av deras suffix eller filändelse `.ipynb`. -Notebooks är en interaktiv miljö som gör det möjligt för utvecklaren att både koda och lägga till anteckningar samt skriva dokumentation kring koden, vilket är mycket användbart för experimentella eller forskningsorienterade projekt. +Notebooks är en interaktiv miljö som låter utvecklaren både koda och lägga till anteckningar och skriva dokumentation runt koden, vilket är ganska hjälpsamt för experimentella eller forskningsinriktade projekt. -[![ML för nybörjare - Ställ in Jupyter Notebooks för att börja bygga regressionsmodeller](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML för nybörjare - Ställ in Jupyter Notebooks för att börja bygga regressionsmodeller") +[![ML för nybörjare - Sätt upp Jupyter Notebooks för att börja bygga regressionsmodeller](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML för nybörjare - Sätt upp Jupyter Notebooks för att börja bygga regressionsmodeller") > 🎥 Klicka på bilden ovan för en kort video som går igenom denna övning. ### Övning - arbeta med en notebook -I den här mappen hittar du filen _notebook.ipynb_. +I denna mapp hittar du filen _notebook.ipynb_. 1. Öppna _notebook.ipynb_ i Visual Studio Code. - En Jupyter-server kommer att starta med Python 3+. Du kommer att hitta områden i notebooken som kan `köras`, kodstycken. Du kan köra en kodblock genom att välja ikonen som ser ut som en play-knapp. + En Jupyter-server startar med Python 3+ igång. Du kommer att hitta områden i notebooken som kan `köras`, kodavsnitt. Du kan köra ett kodblock genom att välja ikonen som ser ut som en play-knapp. -2. Välj `md`-ikonen och lägg till lite markdown, och följande text **# Välkommen till din notebook**. +1. Välj `md`-ikonen och lägg till lite markdown, och följande text **# Välkommen till din notebook**. - Lägg sedan till lite Python-kod. + Nästa, lägg till lite Python-kod. -3. Skriv **print('hello notebook')** i kodblocket. -4. Välj pilen för att köra koden. +1. Skriv **print('hello notebook')** i kodblocket. +1. Välj pilen för att köra koden. - Du bör se det utskrivna meddelandet: + Du bör se det utskrivna uttalandet: ```output hello notebook ``` -![VS Code med en notebook öppen](../../../../2-Regression/1-Tools/images/notebook.jpg) +![VS Code med en notebook öppen](../../../../translated_images/sv/notebook.4a3ee31f396b8832.webp) -Du kan blanda din kod med kommentarer för att själv dokumentera notebooken. +Du kan väva in din kod med kommentarer för att själv dokumentera notebooken. -✅ Fundera en stund på hur annorlunda en webbutvecklares arbetsmiljö är jämfört med en dataforskares. +✅ Tänk en stund på hur olika en webbutvecklares arbetsmiljö är jämfört med en datavetenskapspersons. -## Kom igång med Scikit-learn +## Upp och igång med Scikit-learn -Nu när Python är inställt i din lokala miljö och du är bekväm med Jupyter-notebooks, låt oss bli lika bekväma med Scikit-learn (uttalas `sci` som i `science`). Scikit-learn erbjuder ett [omfattande API](https://scikit-learn.org/stable/modules/classes.html#api-ref) för att hjälpa dig utföra ML-uppgifter. +Nu när Python är inställt i din lokala miljö och du är bekväm med Jupyter Notebooks, låt oss bli lika bekväma med Scikit-learn (uttalas `sci` som i `science`). Scikit-learn tillhandahåller ett [omfattande API](https://scikit-learn.org/stable/modules/classes.html#api-ref) för att hjälpa dig utföra ML-uppgifter. -Enligt deras [webbplats](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn är ett open source-maskininlärningsbibliotek som stödjer övervakad och oövervakad inlärning. Det erbjuder också olika verktyg för modellanpassning, datapreprocessering, modellval och utvärdering, samt många andra verktyg." +Enligt deras [webbplats](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn är ett öppet källkods-bibliotek för maskininlärning som stöder övervakad och oövervakad inlärning. Det erbjuder också olika verktyg för passformsanpassning, datarenas, modellval och utvärdering, samt många andra hjälpmedel." -I den här kursen kommer du att använda Scikit-learn och andra verktyg för att bygga maskininlärningsmodeller för att utföra det vi kallar 'traditionella maskininlärningsuppgifter'. Vi har medvetet undvikit neurala nätverk och djupinlärning, eftersom de täcks bättre i vår kommande 'AI för nybörjare'-kursplan. +I denna kurs kommer du att använda Scikit-learn och andra verktyg för att bygga maskininlärningsmodeller för att utföra det vi kallar 'traditionella maskininlärnings'uppgifter. Vi har medvetet undvikit neurala nätverk och djupinlärning, eftersom de täcks bättre i vår kommande 'AI för nybörjare'-kurs. -Scikit-learn gör det enkelt att bygga modeller och utvärdera dem för användning. Det är främst fokuserat på att använda numerisk data och innehåller flera färdiga dataset för användning som inlärningsverktyg. Det inkluderar också förbyggda modeller för studenter att prova. Låt oss utforska processen att ladda förpackad data och använda en inbyggd estimator för att skapa den första ML-modellen med Scikit-learn med lite grundläggande data. +Scikit-learn gör det enkelt att bygga modeller och utvärdera dem för användning. Det är främst inriktat på att använda numerisk data och innehåller flera färdiga datasets som lärverktyg. Det inkluderar även förbyggda modeller för studenter att prova. Låt oss först utforska processen att ladda förpaketerad data och använda en inbyggd estimator, den första ML-modellen med Scikit-learn, med några grundläggande data. ## Övning - din första Scikit-learn notebook -> Den här handledningen inspirerades av [exemplet på linjä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 webbplats. +> Denna handledning inspirerades av [exemplet på linjä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 webbplats. + [![ML för nybörjare - Ditt första linjära regressionsprojekt i Python](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "ML för nybörjare - Ditt första linjära regressionsprojekt i Python") > 🎥 Klicka på bilden ovan för en kort video som går igenom denna övning. -I filen _notebook.ipynb_ som är kopplad till denna lektion, rensa alla celler genom att trycka på 'papperskorgsikonen'. +I filen _notebook.ipynb_ kopplad till denna lektion, rensa ut alla celler genom att trycka på ikonen för 'papperskorgen'. -I detta avsnitt kommer du att arbeta med ett litet dataset om diabetes som är inbyggt i Scikit-learn för inlärningsändamål. Föreställ dig att du ville testa en behandling för diabetiker. Maskininlärningsmodeller kan hjälpa dig att avgöra vilka patienter som skulle svara bättre på behandlingen, baserat på kombinationer av variabler. Även en mycket grundläggande regressionsmodell, när den visualiseras, kan visa information om variabler som skulle hjälpa dig att organisera dina teoretiska kliniska prövningar. +I denna sektion kommer du att arbeta med en liten dataset om diabetes som är inbyggd i Scikit-learn för inlärningsändamål. Föreställ dig att du vill testa en behandling för diabetiker. Maskininlärningsmodeller kan hjälpa dig att avgöra vilka patienter som skulle svara bättre på behandlingen, baserat på kombinationer av variabler. Även en mycket grundläggande regressionsmodell, när den visualiseras, kan visa information om variabler som skulle hjälpa dig att organisera dina teoretiska kliniska studier. -✅ Det finns många typer av regressionsmetoder, och vilken du väljer beror på svaret du söker. Om du vill förutsäga den sannolika längden för en person i en viss ålder skulle du använda linjär regression, eftersom du söker ett **numeriskt värde**. Om du är intresserad av att avgöra om en typ av mat ska betraktas som vegansk eller inte, söker du en **kategoriindelning**, så du skulle använda logistisk regression. Du kommer att lära dig mer om logistisk regression senare. Fundera lite på några frågor du kan ställa till data och vilken av dessa metoder som skulle vara mer lämplig. +✅ Det finns många typer av regressionsmetoder, och vilken du väljer beror på det svar du söker. Om du vill förutsäga sannolik längd för en person av en viss ålder, skulle du använda linjär regression, eftersom du söker ett **numeriskt värde**. Om du är intresserad av att upptäcka om en typ av matlagning bör betraktas som vegansk eller inte, söker du en **kategoriindelning** och skulle därför använda logistisk regression. Du kommer att lära dig mer om logistisk regression senare. Tänk lite på några frågor du kan ställa om data, och vilken av dessa metoder som skulle vara mer lämplig. -Låt oss komma igång med denna uppgift. +Låt oss sätta igång med denna uppgift. ### Importera bibliotek För denna uppgift kommer vi att importera några bibliotek: - **matplotlib**. Det är ett användbart [grafverktyg](https://matplotlib.org/) och vi kommer att använda det för att skapa ett linjediagram. -- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) är ett användbart bibliotek för att hantera numerisk data i Python. +- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) är ett användbart bibliotek för hantering av numerisk data i Python. - **sklearn**. Detta är [Scikit-learn](https://scikit-learn.org/stable/user_guide.html)-biblioteket. -Importera några bibliotek för att hjälpa till med dina uppgifter. +Importera några bibliotek för att hjälpa dig med dina uppgifter. -1. Lägg till imports genom att skriva följande kod: +1. Lägg till importerna genom att skriva följande kod: ```python import matplotlib.pyplot as plt @@ -122,26 +123,26 @@ Importera några bibliotek för att hjälpa till med dina uppgifter. from sklearn import datasets, linear_model, model_selection ``` - Ovan importerar du `matplotlib`, `numpy` och du importerar `datasets`, `linear_model` och `model_selection` från `sklearn`. `model_selection` används för att dela upp data i tränings- och testuppsättningar. + Ovan importerar du `matplotlib`, `numpy` och du importerar `datasets`, `linear_model` och `model_selection` från `sklearn`. `model_selection` används för att dela upp data i tränings- och testset. -### Diabetes-datasetet +### Diabetes-datasettet -Det inbyggda [diabetes-datasetet](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) innehåller 442 dataprover om diabetes, med 10 funktionsvariabler, några av dessa inkluderar: +Det inbyggda [diabetes-datasettet](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) innehåller 442 datapunkter om diabetes, med 10 funktioner (features), några av dessa inkluderar: - age: ålder i år -- bmi: kroppsmassaindex +- bmi: kroppsmassindex - bp: genomsnittligt blodtryck - s1 tc: T-celler (en typ av vita blodkroppar) -✅ Detta dataset inkluderar konceptet 'kön' som en funktionsvariabel som är viktig för forskning kring diabetes. Många medicinska dataset inkluderar denna typ av binär klassificering. Fundera lite på hur kategoriseringar som denna kan utesluta vissa delar av befolkningen från behandlingar. +✅ Detta dataset inkluderar kön som en viktig forskningsvariabel för diabetes. Många medicinska dataset innehåller denna typ av binär klassificering. Tänk lite på hur kategoriseringar som denna kan exkludera vissa delar av en befolkning från behandlingar. -Nu, ladda upp X- och y-datan. +Nu, ladda in X- och y-datan. > 🎓 Kom ihåg, detta är övervakad inlärning, och vi behöver ett namngivet 'y'-mål. -I en ny kodcell, ladda diabetes-datasetet genom att kalla `load_diabetes()`. Inputen `return_X_y=True` signalerar att `X` kommer att vara en datamatriser, och `y` kommer att vara regressionsmålet. +I en ny kodcell, ladda diabetes-datasettet genom att anropa `load_diabetes()`. Parametern `return_X_y=True` signalerar att `X` kommer att vara en datamatris och `y` kommer att vara regressionsmålet. -1. Lägg till några print-kommandon för att visa formen på datamatriserna och dess första element: +1. Lägg till några print-kommandon för att visa form på datamatrisen och dess första element: ```python X, y = datasets.load_diabetes(return_X_y=True) @@ -149,9 +150,9 @@ I en ny kodcell, ladda diabetes-datasetet genom att kalla `load_diabetes()`. Inp print(X[0]) ``` - Det du får tillbaka som svar är en tuple. Det du gör är att tilldela de två första värdena i tuplen till `X` och `y` respektive. Läs mer [om tuples](https://wikipedia.org/wiki/Tuple). + Vad du får tillbaka är en tuppel. Det du gör är att tilldela de två första värdena i tuppeln till `X` respektive `y`. Läs mer [om tupplar](https://wikipedia.org/wiki/Tuple). - Du kan se att denna data har 442 objekt formade i arrayer med 10 element: + Du kan se att denna data består av 442 objekt formade i arrayer med 10 element: ```text (442, 10) @@ -159,39 +160,39 @@ I en ny kodcell, ladda diabetes-datasetet genom att kalla `load_diabetes()`. Inp -0.04340085 -0.00259226 0.01990842 -0.01764613] ``` - ✅ Fundera lite på relationen mellan datan och regressionsmålet. Linjär regression förutsäger relationer mellan funktion X och målvariabel y. Kan du hitta [målet](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) för diabetes-datasetet i dokumentationen? Vad demonstrerar detta dataset, givet målet? + ✅ Tänk lite på relationen mellan data och regressionsmålet. Linjär regression förutspår samband mellan funktion X och måldata y. Kan du hitta [målet](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) för diabetes-datasettet i dokumentationen? Vad demonstrerar detta dataset, givet målet? -2. Välj sedan en del av detta dataset att plotta genom att välja den tredje kolumnen i datasetet. Du kan göra detta genom att använda `:`-operatorn för att välja alla rader och sedan välja den tredje kolumnen med hjälp av index (2). Du kan också omforma datan till att vara en 2D-array - som krävs för att plotta - genom att använda `reshape(n_rows, n_columns)`. Om en av parametrarna är -1 beräknas motsvarande dimension automatiskt. +2. Välj sedan en del av detta dataset att plottas genom att välja den 3:e kolumnen i datasetet. Du kan göra detta genom att använda `:` för att välja alla rader, och sedan välja den 3:e kolumnen med index (2). Du kan också omforma datat till en 2D-array - som krävs för plottning - genom att använda `reshape(n_rows, n_columns)`. Om en av parametrarna är -1 beräknas motsvarande dimension automatiskt. ```python X = X[:, 2] X = X.reshape((-1,1)) ``` - ✅ När som helst, skriv ut datan för att kontrollera dess form. + ✅ Skriv ut datat när som helst för att kontrollera dess form. -3. Nu när du har data redo att plottas kan du se om en maskin kan hjälpa till att bestämma en logisk uppdelning mellan siffrorna i detta dataset. För att göra detta behöver du dela både datan (X) och målet (y) i test- och träningsuppsättningar. Scikit-learn har ett enkelt sätt att göra detta; du kan dela din testdata vid en given punkt. +3. Nu när du har data redo att plottas, kan du se om en maskin kan hjälpa till att avgöra en logisk uppdelning mellan talen i detta dataset. För detta behöver du dela både data (X) och målet (y) i test- och träningsset. Scikit-learn har ett enkelt sätt att göra detta; du kan dela din testdata vid en given punkt. ```python X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33) ``` -4. Nu är du redo att träna din modell! Ladda upp den linjära regressionsmodellen och träna den med dina X- och y-träningsuppsättningar med hjälp av `model.fit()`: +4. Nu är du redo att träna din modell! Ladda in linjär regressionsmodell och träna den med dina träningsset X och y med `model.fit()`: ```python model = linear_model.LinearRegression() model.fit(X_train, y_train) ``` - ✅ `model.fit()` är en funktion du kommer att se i många ML-bibliotek som TensorFlow. + ✅ `model.fit()` är en funktion du kommer se i många ML-bibliotek som TensorFlow -5. Skapa sedan en förutsägelse med testdata, med hjälp av funktionen `predict()`. Detta kommer att användas för att dra linjen mellan datagrupperna. +5. Skapa sedan en prediktion med testdata, med funktionen `predict()`. Detta används för att rita linjen mellan datagrupperna ```python y_pred = model.predict(X_test) ``` -6. Nu är det dags att visa datan i ett diagram. Matplotlib är ett mycket användbart verktyg för denna uppgift. Skapa ett spridningsdiagram av all X- och y-testdata och använd förutsägelsen för att dra en linje på den mest lämpliga platsen mellan modellens datagrupperingar. +6. Nu är det dags att visa data i en plot. Matplotlib är ett mycket användbart verktyg för denna uppgift. Skapa ett spridningsdiagram av all X och y testdata, och använd prediktionen för att rita en linje på bästa plats mellan modellens datagruppering. ```python plt.scatter(X_test, y_test, color='black') @@ -202,28 +203,32 @@ I en ny kodcell, ladda diabetes-datasetet genom att kalla `load_diabetes()`. Inp plt.show() ``` - ![ett spridningsdiagram som visar datapunkter kring diabetes](../../../../2-Regression/1-Tools/images/scatterplot.png) -✅ Fundera lite på vad som händer här. En rak linje går genom många små datapunkter, men vad gör den egentligen? Kan du se hur du borde kunna använda denna linje för att förutsäga var en ny, osedd datapunkt borde passa in i förhållande till diagrammets y-axel? Försök att formulera den praktiska användningen av denna modell. + ![ett spridningsdiagram som visar datapunkter om diabetes](../../../../translated_images/sv/scatterplot.ad8b356bcbb33be6.webp) + + + ✅ Tänk lite på vad som händer här. En rät linje går genom många små datapunkter, men vad gör den egentligen? Kan du se hur du borde kunna använda den här linjen för att förutsäga var en ny, osedd datapunkt borde passa in i förhållande till plottens y-axel? Försök att sätta i ord det praktiska användningsområdet för den här modellen. -Grattis, du har byggt din första linjära regressionsmodell, skapat en förutsägelse med den och visat den i ett diagram! +Grattis, du byggde din första linjära regressionsmodell, skapade en förutsägelse med den, och visade den i en plot! --- ## 🚀Utmaning -Plotta en annan variabel från denna dataset. Tips: redigera denna rad: `X = X[:,2]`. Givet målet för denna dataset, vad kan du upptäcka om utvecklingen av diabetes som sjukdom? +Plotta en annan variabel från denna dataset. Tips: redigera denna rad: `X = X[:,2]`. Med tanke på denna datasets mål, vad kan du upptäcka om diabetes progression som sjukdom? ## [Quiz efter föreläsningen](https://ff-quizzes.netlify.app/en/ml/) -## Granskning & Självstudier +## Repetition & Självstudier -I denna handledning arbetade du med enkel linjär regression, snarare än univariat eller multipel linjär regression. Läs lite om skillnaderna mellan dessa metoder, eller titta på [denna video](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef). +I denna handledning arbetade du med enkel linjär regression, snarare än univariat eller multipel linjär regression. Läs lite om skillnaderna mellan dessa metoder, eller titta på [denna video](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) -Läs mer om konceptet regression och fundera på vilka typer av frågor som kan besvaras med denna teknik. Ta denna [handledning](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) för att fördjupa din förståelse. +Läs mer om begreppet regression och fundera över vilka typer av frågor som kan besvaras med denna teknik. Ta denna [handledning](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) för att fördjupa din förståelse. ## Uppgift -[Ett annat dataset](assignment.md) +[En annan dataset](assignment.md) --- -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av AI-översättningstjänsten [Co-op Translator](https://github.com/Azure/co-op-translator). Även om vi strävar efter noggrannhet, vänligen notera att automatiska översättningar kan innehålla fel eller felaktigheter. Det ursprungliga dokumentet på dess originalspråk bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för eventuella missförstånd eller feltolkningar som uppstår vid användning av denna översättning. \ No newline at end of file + +**Ansvarsfriskrivning**: +Detta dokument har översatts med hjälp av AI-översättningstjänsten [Co-op Translator](https://github.com/Azure/co-op-translator). Även om vi strävar efter noggrannhet, var vänlig notera att automatiska översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på dess modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller feltolkningar som uppstår till följd av användningen av denna översättning. + \ No newline at end of file diff --git a/translations/sv/2-Regression/2-Data/README.md b/translations/sv/2-Regression/2-Data/README.md index 147d6e246..23e465c3a 100644 --- a/translations/sv/2-Regression/2-Data/README.md +++ b/translations/sv/2-Regression/2-Data/README.md @@ -1,62 +1,62 @@ # Bygg en regressionsmodell med Scikit-learn: förbered och visualisera data -![Infografik för datavisualisering](../../../../2-Regression/2-Data/images/data-visualization.png) +![Informationsgrafik för datavisualisering](../../../../translated_images/sv/data-visualization.54e56dded7c1a804.webp) -Infografik av [Dasani Madipalli](https://twitter.com/dasani_decoded) +Informationsgrafik av [Dasani Madipalli](https://twitter.com/dasani_decoded) -## [Quiz före föreläsningen](https://ff-quizzes.netlify.app/en/ml/) +## [Förföreläsningsquiz](https://ff-quizzes.netlify.app/en/ml/) -> ### [Den här lektionen finns tillgänglig i R!](../../../../2-Regression/2-Data/solution/R/lesson_2.html) +> ### [Den här lektionen finns på R!](../../../../2-Regression/2-Data/solution/R/lesson_2.html) ## Introduktion -Nu när du har verktygen du behöver för att börja bygga maskininlärningsmodeller med Scikit-learn, är du redo att börja ställa frågor till din data. När du arbetar med data och tillämpar ML-lösningar är det mycket viktigt att förstå hur man ställer rätt frågor för att verkligen utnyttja potentialen i din dataset. +Nu när du har verktygen du behöver för att börja arbeta med maskininlärningsmodellering med Scikit-learn är du redo att börja ställa frågor till din data. När du arbetar med data och använder ML-lösningar är det mycket viktigt att förstå hur man ställer rätt fråga för att riktigt kunna låsa upp potentialen i din dataset. I den här lektionen kommer du att lära dig: - Hur du förbereder din data för modellbyggande. - Hur du använder Matplotlib för datavisualisering. +- Hur du använder Seaborn för mer uttrycksfull datavisualisering. -## Ställa rätt frågor till din data +## Att ställa rätt fråga till din data -Frågan du vill ha svar på avgör vilken typ av ML-algoritmer du kommer att använda. Och kvaliteten på svaret du får tillbaka beror starkt på datans natur. +Den fråga du behöver besvarad avgör vilken typ av ML-algoritmer du kommer att använda. Och kvaliteten på svaret du får tillbaka är starkt beroende på datats natur. -Ta en titt på [datan](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) som tillhandahålls för den här lektionen. Du kan öppna denna .csv-fil i VS Code. En snabb överblick visar direkt att det finns tomma fält och en blandning av strängar och numerisk data. Det finns också en märklig kolumn som heter 'Package' där datan är en blandning av 'sacks', 'bins' och andra värden. Datan är faktiskt lite rörig. +Ta en titt på [datan](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) som tillhandahålls för denna lektion. Du kan öppna denna .csv-fil i VS Code. En snabb genomgång visar genast att det finns tomma värden och en blandning av strängar och numerisk data. Det finns också en konstig kolumn som heter 'Package' där datan är en blandning mellan 'säckar', 'lådor' och andra värden. Datan är faktiskt lite rörig. -[![ML för nybörjare - Hur man analyserar och rensar en dataset](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML för nybörjare - Hur man analyserar och rensar en dataset") +[![ML för nybörjare - Hur man analyserar och rengör en dataset](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML för nybörjare - Hur man analyserar och rengör en dataset") -> 🎥 Klicka på bilden ovan för en kort video om hur man förbereder datan för den här lektionen. +> 🎥 Klicka på bilden ovan för en kort video som går igenom förberedelse av data för denna lektion. -Det är faktiskt inte särskilt vanligt att få en dataset som är helt redo att användas för att skapa en ML-modell direkt. I den här lektionen kommer du att lära dig hur man förbereder en rå dataset med hjälp av standardbibliotek i Python. Du kommer också att lära dig olika tekniker för att visualisera data. +Det är faktiskt inte särskilt vanligt att få en dataset som är helt klar att använda för att skapa en ML-modell direkt ur lådan. I den här lektionen kommer du att lära dig hur man förbereder en rå dataset med standardbibliotek i Python. Du kommer också att lära dig olika tekniker för att visualisera data. -## Fallstudie: 'pumpamarknaden' +## Fallstudie: 'pumpinmarknaden' -I den här mappen hittar du en .csv-fil i rotmappen `data` som heter [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) som innehåller 1757 rader med data om marknaden för pumpor, sorterade i grupperingar efter stad. Detta är rådata som hämtats från [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) som distribueras av United States Department of Agriculture. +I den här mappen hittar du en .csv-fil i rotmappen `data` kallad [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) som inkluderar 1757 rader med data om marknaden för pumpor, sorterad efter grupper per stad. Detta är rådata hämtat från [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) distribuerade av United States Department of Agriculture. ### Förbereda data -Denna data är offentlig. Den kan laddas ner i många separata filer, per stad, från USDA:s webbplats. För att undvika för många separata filer har vi sammanfogat all stadsdata till ett kalkylblad, så vi har redan _förberett_ datan lite. Låt oss nu ta en närmare titt på datan. +Denna data är offentlig. Den kan laddas ner i många separata filer, per stad, från USDA:s webbplats. För att undvika för många separata filer har vi sammanfogat all stadsdata i ett kalkylblad, så vi har redan _förberett_ datan lite. Nästa steg är att titta närmare på datan. -### Pumpadatan - tidiga slutsatser +### Pumpdata - tidiga slutsatser -Vad märker du om denna data? Du såg redan att det finns en blandning av strängar, siffror, tomma fält och märkliga värden som du behöver förstå. +Vad lägger du märke till med denna data? Du har redan sett att det är en blandning av strängar, siffror, tomma värden och konstiga värden som du behöver tolka. -Vilken fråga kan du ställa till denna data med hjälp av en regressionsmetod? Vad sägs om "Förutsäg priset på en pumpa som säljs under en viss månad". När du tittar på datan igen, finns det några ändringar du behöver göra för att skapa den datastruktur som krävs för uppgiften. +Vilken fråga kan du ställa till denna data, med hjälp av en regressionsmetod? Vad sägs om "Förutsäg priset på en pumpa som säljs under en given månad". Om vi ser på datan igen finns det några förändringar du behöver göra för att skapa den datastruktur som krävs för uppgiften. +## Övning - analysera pumpdata -## Övning - analysera pumpadatan +Låt oss använda [Pandas](https://pandas.pydata.org/), (namnet står för `Python Data Analysis`) ett verktyg som är mycket användbart för att forma data, för att analysera och förbereda denna pumpdata. -Låt oss använda [Pandas](https://pandas.pydata.org/) (namnet står för `Python Data Analysis`), ett verktyg som är mycket användbart för att forma data, för att analysera och förbereda denna pumpadata. +### Först, kontrollera för saknade datum -### Först, kontrollera om det saknas datum +Du behöver först ta steg för att kontrollera saknade datum: -Du måste först ta steg för att kontrollera om det saknas datum: - -1. Konvertera datumen till ett månadsformat (dessa är amerikanska datum, så formatet är `MM/DD/YYYY`). +1. Konvertera datumen till månadsformat (detta är amerikanska datum, så formatet är `MM/DD/YYYY`). 2. Extrahera månaden till en ny kolumn. -Öppna _notebook.ipynb_-filen i Visual Studio Code och importera kalkylbladet till en ny Pandas-dataram. +Öppna _notebook.ipynb_ filen i Visual Studio Code och importera kalkylbladet till en ny Pandas dataframe. -1. Använd funktionen `head()` för att visa de första fem raderna. +1. Använd `head()`-funktionen för att visa de fem första raderna. ```python import pandas as pd @@ -64,30 +64,30 @@ Du måste först ta steg för att kontrollera om det saknas datum: pumpkins.head() ``` - ✅ Vilken funktion skulle du använda för att visa de sista fem raderna? + ✅ Vilken funktion skulle du använda för att visa de fem sista raderna? -1. Kontrollera om det finns saknad data i den aktuella dataramen: +1. Kontrollera om det finns saknad data i den nuvarande dataframen: ```python pumpkins.isnull().sum() ``` - Det finns saknad data, men kanske spelar det ingen roll för den aktuella uppgiften. + Det finns saknad data, men kanske spelar det ingen roll för uppgiften. -1. För att göra din dataram enklare att arbeta med, välj endast de kolumner du behöver med hjälp av funktionen `loc`, som extraherar en grupp rader (angivna som första parameter) och kolumner (angivna som andra parameter) från den ursprungliga dataramen. Uttrycket `:` i fallet nedan betyder "alla rader". +1. För att göra din dataframe lättare att arbeta med, välj endast de kolumner du behöver, med `loc`-funktionen som extraherar en grupp av rader (som första parameter) och kolumner (som andra parameter) från originaldataframen. Uttrycket `:` i fallet nedan betyder "alla rader". ```python columns_to_select = ['Package', 'Low Price', 'High Price', 'Date'] pumpkins = pumpkins.loc[:, columns_to_select] ``` -### För det andra, bestäm genomsnittligt pris på pumpor +### För det andra, bestäm genomsnittspris på pumpa -Fundera på hur du kan bestämma det genomsnittliga priset på en pumpa under en viss månad. Vilka kolumner skulle du välja för denna uppgift? Tips: du behöver 3 kolumner. +Fundera på hur du ska bestämma genomsnittspriset på en pumpa under en månad. Vilka kolumner skulle du välja för denna uppgift? Tips: du behöver 3 kolumner. -Lösning: ta genomsnittet av kolumnerna `Low Price` och `High Price` för att fylla den nya kolumnen Price, och konvertera kolumnen Date till att endast visa månaden. Lyckligtvis, enligt kontrollen ovan, finns det ingen saknad data för datum eller priser. +Lösning: ta ett genomsnitt av kolumnerna `Low Price` och `High Price` för att fylla i den nya kolumnen Price, och konvertera Date-kolumnen så att den endast visar månaden. Lyckligtvis finns, enligt ovanstående kontroll, ingen saknad data för datum eller priser. -1. För att beräkna genomsnittet, lägg till följande kod: +1. För att beräkna genomsnittet lägg till följande kod: ```python price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2 @@ -96,25 +96,25 @@ Lösning: ta genomsnittet av kolumnerna `Low Price` och `High Price` för att fy ``` - ✅ Känn dig fri att skriva ut vilken data du vill kontrollera med hjälp av `print(month)`. + ✅ Känn dig fri att skriva ut vilken data du vill kontrollera med `print(month)`. -2. Kopiera nu din konverterade data till en ny Pandas-dataram: +2. Kopiera nu din konverterade data till en ny Pandas dataframe: ```python new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price}) ``` - Om du skriver ut din dataram kommer du att se en ren och snygg dataset som du kan använda för att bygga din nya regressionsmodell. + Att skriva ut din dataframe visar en ren och prydlig dataset på vilken du kan bygga din nya regressionsmodell. ### Men vänta! Det är något konstigt här -Om du tittar på kolumnen `Package`, säljs pumpor i många olika konfigurationer. Vissa säljs i mått som '1 1/9 bushel', andra i '1/2 bushel', vissa per pumpa, vissa per pound, och vissa i stora lådor med varierande bredd. +Om du tittar på `Package`-kolumnen säljs pumporna i många olika konfigurationer. Några säljs i '1 1/9 bushel' mått, några i '1/2 bushel', några per pumpa, några per pund, och några i stora lådor med varierande bredder. -> Pumpor verkar vara väldigt svåra att väga konsekvent +> Pumpor verkar vara mycket svåra att väga konsekvent -När man gräver i den ursprungliga datan är det intressant att allt med `Unit of Sale` som är lika med 'EACH' eller 'PER BIN' också har `Package`-typen per tum, per bin eller 'each'. Pumpor verkar vara väldigt svåra att väga konsekvent, så låt oss filtrera dem genom att välja endast pumpor med strängen 'bushel' i deras `Package`-kolumn. +Genom att gräva i originaldatan är det intressant att allt med `Unit of Sale` som är 'EACH' eller 'PER BIN' också har `Package`-typen per tum, per låda eller 'per styck'. Pumpor verkar alltså vara svåra att väga konsekvent, så låt oss filtrera dem genom att välja endast pumpor med strängen 'bushel' i sin `Package`-kolumn. -1. Lägg till ett filter högst upp i filen, under den initiala .csv-importen: +1. Lägg till en filterrad högst upp i filen, under den första .csv-importen: ```python pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)] @@ -124,9 +124,9 @@ När man gräver i den ursprungliga datan är det intressant att allt med `Unit ### Men vänta! Det är en sak till att göra -Märkte du att bushel-mängden varierar per rad? Du behöver normalisera prissättningen så att du visar prissättningen per bushel, så gör lite matematik för att standardisera det. +Lade du märke till att bushel-mängden varierar per rad? Du behöver normalisera prissättningen så att priset visas per bushel, så gör lite beräkningar för att standardisera det. -1. Lägg till dessa rader efter blocket som skapar dataramen new_pumpkins: +1. Lägg till dessa rader efter blocket som skapar new_pumpkins-dataframen: ```python new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9) @@ -134,29 +134,29 @@ Märkte du att bushel-mängden varierar per rad? Du behöver normalisera prissä new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2) ``` -✅ Enligt [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) beror en bushels vikt på typen av produkt, eftersom det är ett volymmått. "En bushel tomater, till exempel, ska väga 56 pounds... Blad och gröna tar upp mer plats med mindre vikt, så en bushel spenat är bara 20 pounds." Det är allt ganska komplicerat! Låt oss inte bry oss om att göra en bushel-till-pound-konvertering, och istället prissätta per bushel. All denna studie av bushels av pumpor visar dock hur viktigt det är att förstå naturen av din data! +✅ Enligt [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) beror vikten för en bushel på typen av produkt eftersom det är ett volymmått. "En bushel tomater, till exempel, ska väga 56 pund... Löv och gröna blad tar mer plats med mindre vikt, så en bushel spenat väger bara 20 pund." Allt är ganska komplicerat! Vi ska inte bry oss om att göra en omräkning från bushel till pund, utan prissätta per bushel. All denna studie av bushels pumpor visar dock hur viktigt det är att förstå datats natur! -Nu kan du analysera prissättningen per enhet baserat på deras bushel-mått. Om du skriver ut datan en gång till kan du se hur den är standardiserad. +Nu kan du analysera prissättningen per enhet baserat på deras bushelmått. Om du skriver ut datan en gång till kan du se hur den är standardiserad. -✅ Märkte du att pumpor som säljs per halv-bushel är väldigt dyra? Kan du lista ut varför? Tips: små pumpor är mycket dyrare än stora, förmodligen eftersom det finns så många fler av dem per bushel, med tanke på det oanvända utrymmet som tas upp av en stor ihålig pajpumpa. +✅ Lade du märke till att pumpor som säljs per halv bushel är mycket dyra? Kan du lista ut varför? Tips: små pumpor är mycket dyrare än stora, förmodligen eftersom det finns så många fler av dem per bushel, med tanke på det oanvända utrymmet som tas av en stor ihålig pajpumpa. ## Visualiseringsstrategier -En del av en dataspecialists roll är att demonstrera kvaliteten och naturen av datan de arbetar med. För att göra detta skapar de ofta intressanta visualiseringar, som diagram, grafer och tabeller, som visar olika aspekter av datan. På så sätt kan de visuellt visa relationer och luckor som annars är svåra att upptäcka. +En del av en dataspecialists roll är att visa kvaliteten och arten av data de arbetar med. För att göra detta skapar de ofta intressanta visualiseringar, eller diagram, grafer och tabeller, som visar olika aspekter av data. På detta sätt kan de visuellt visa samband och luckor som annars är svåra att upptäcka. [![ML för nybörjare - Hur man visualiserar data med Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML för nybörjare - Hur man visualiserar data med Matplotlib") -> 🎥 Klicka på bilden ovan för en kort video om hur man visualiserar datan för den här lektionen. +> 🎥 Klicka på bilden ovan för en kort video som går igenom visualisering av data för denna lektion. -Visualiseringar kan också hjälpa till att avgöra vilken maskininlärningsteknik som är mest lämplig för datan. Ett spridningsdiagram som verkar följa en linje, till exempel, indikerar att datan är en bra kandidat för en linjär regressionsövning. +Visualiseringar kan också hjälpa till att bestämma den mest lämpliga maskininlärningstekniken för datan. Ett punktdiagram som verkar följa en linje indikerar till exempel att datan är en bra kandidat för en linjär regressionsövning. -Ett datavisualiseringsbibliotek som fungerar bra i Jupyter notebooks är [Matplotlib](https://matplotlib.org/) (som du också såg i den föregående lektionen). +Ett bibliotek för datavisualisering som fungerar bra i Jupyter notebooks är [Matplotlib](https://matplotlib.org/) (som du också såg i föregående lektion). -> Få mer erfarenhet av datavisualisering i [dessa tutorials](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott). +> Få mer erfarenhet av datavisualisering i [dessa handledningar](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott). ## Övning - experimentera med Matplotlib -Försök att skapa några grundläggande diagram för att visa den nya dataramen du just skapade. Vad skulle ett grundläggande linjediagram visa? +Försök skapa några grundläggande diagram för att visa den nya dataframen du just skapade. Vad skulle ett grundläggande linjediagram visa? 1. Importera Matplotlib högst upp i filen, under Pandas-importen: @@ -165,7 +165,7 @@ Försök att skapa några grundläggande diagram för att visa den nya dataramen ``` 1. Kör om hela notebooken för att uppdatera. -1. Lägg till en cell längst ner i notebooken för att plotta datan som en box: +1. Lägg längst ner i notebooken till en cell för att rita datan som en boxplot: ```python price = new_pumpkins.Price @@ -174,15 +174,15 @@ Försök att skapa några grundläggande diagram för att visa den nya dataramen plt.show() ``` - ![Ett spridningsdiagram som visar pris-till-månad-relationen](../../../../2-Regression/2-Data/images/scatterplot.png) + ![Ett punktdiagram som visar prisets relation till månader](../../../../translated_images/sv/scatterplot.b6868f44cbd2051c.webp) - Är detta ett användbart diagram? Överraskar något dig? + Är detta ett användbart diagram? Överraskar något dig med det? - Det är inte särskilt användbart eftersom allt det gör är att visa din data som en spridning av punkter under en viss månad. + Det är inte särskilt användbart då allt det gör är att visa din data som en spridning av punkter i en given månad. ### Gör det användbart -För att få diagram att visa användbar data behöver du vanligtvis gruppera datan på något sätt. Låt oss försöka skapa ett diagram där y-axeln visar månaderna och datan demonstrerar fördelningen av data. +För att få diagram att visa användbar data brukar man behöva gruppera data på något sätt. Låt oss försöka skapa ett diagram där y-axeln visar månaderna och datan demonstrerar datadistributionen. 1. Lägg till en cell för att skapa ett grupperat stapeldiagram: @@ -191,21 +191,96 @@ För att få diagram att visa användbar data behöver du vanligtvis gruppera da plt.ylabel("Pumpkin Price") ``` - ![Ett stapeldiagram som visar pris-till-månad-relationen](../../../../2-Regression/2-Data/images/barchart.png) + ![Ett stapeldiagram som visar prisets relation till månader](../../../../translated_images/sv/barchart.a833ea9194346d76.webp) + + Detta är en mer användbar datavisualisering! Det verkar indikera att det högsta priset för pumpor inträffar i september och oktober. Stämmer det med dina förväntningar? Varför eller varför inte? + +## Övning - experimentera med Seaborn + +Matplotlib är kraftfullt, men det kan krävas mycket kod för att producera ett snyggt diagram. [Seaborn](https://seaborn.pydata.org/) är ett bibliotek byggt _ovanpå_ Matplotlib som är utformat för statistisk datavisualisering. Det arbetar direkt med Pandas dataframes, tillämpar attraktiva standardstilar och låter dig skapa informativa diagram med mycket mindre kod. Eftersom Seaborn returnerar Matplotlib-objekt kan du fortfarande använda allt du redan vet om Matplotlib för att finjustera resultatet. + +> Om du inte redan har Seaborn installerat, installera det med `pip install seaborn`. + +1. Importera Seaborn högst upp i notebooken, under de andra importerna. Det importeras konventionellt som `sns`: + + ```python + import seaborn as sns + ``` + +### Punktdiagram för att visa relationer + +En stor del av att utforska data innan man bygger en modell är att leta efter _relationer_ mellan variabler. Ett [punktdiagram](https://en.wikipedia.org/wiki/Scatter_plot) är ett av de bästa verktygen för detta: om punkterna verkar följa en linje kan de två variablerna vara korrelerade, vilket är ett gott tecken på att en linjär regressionsmodell kan fungera. + +1. Återskapa punktdiagrammet pris-månad från tidigare, denna gång med Seaborns [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) (relationsdiagram), som fungerar direkt med dina dataframe-kolumner: + + ```python + sns.relplot(x="Price", y="Month", data=new_pumpkins) + ``` + + ![Ett Seaborn-punktdiagram som visar prisets relation till månader](../../../../translated_images/sv/relplot.a03837d8f0329cec.webp) + + Lägg märke till hur du anger _kolumnnamnen_ och dataframen, och Seaborn ordnar axelrubrikerna åt dig. + +2. Du kan byta till ett linjediagram genom att skicka `kind="line"`. Seaborn ritar till och med ett skuggat band som visar konfidensintervallet kring linjen: + + ```python + sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins) + ``` + + ![Ett Seaborn-linjediagram som visar prisets relation till månader](../../../../translated_images/sv/lineplot.f9034ba47b1e30ee.webp) + + Denna data är ganska brusig, så ett linjediagram är inte det klaraste valet här — men det visar hur enkelt du kan byta diagramtyp i Seaborn. + +### Stapeldiagram för att visa fördelningar + + +Tidigare grupperade du data för hand för att skapa ett stapeldiagram med Matplotlib. Seaborns [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) (kategoriplott) kan göra gruppering och aggregering åt dig. Som standard visar `kind="bar"` medelvärdet för varje kategori tillsammans med en svart linje som indikerar konfidensintervallet. + +1. Skapa ett stapeldiagram över genomsnittspris per månad: + + ```python + sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar") + ``` + + ![Ett Seaborn stapeldiagram som visar prisfördelningen per månad](../../../../translated_images/sv/catplot.e73fc35fdf96242b.webp) + + Detta bekräftar vad du såg med Matplotlib — priserna är som högst runt september och oktober — men Seaborn visualiserar också hur mycket priset _varierar_ inom varje månad. + +### Värmekartor för att visa korrelationer + +Scatterplots jämför två variabler åt gången. När du har flera numeriska kolumner låter en [värmekarta](https://en.wikipedia.org/wiki/Heat_map) dig se styrkan i relationen mellan _varje_ par av kolumner samtidigt. Detta är ett vanligt sätt att upptäcka vilka egenskaper som är mest korrelerade innan man väljer vad som ska matas in i en modell (och samma typ av diagram används senare för att visa förvirringsmatriser vid klassificering). + +1. Bygg en korrelationsmatris med Pandas och rita sedan upp den med Seaborns [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html). Alternativet `annot=True` skriver ut korrelationsvärdena i varje cell: + + ```python + correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr() + sns.heatmap(correlations, annot=True, cmap="coolwarm") + ``` + + ![En Seaborn värmekarta som visar korrelationer mellan de numeriska kolumnerna](../../../../translated_images/sv/heatmap.bd98dce43b404c57.webp) + + Värden nära `1` (eller `-1`) betyder att kolumnerna är starkt _linjärt_ korrelerade. Notera hur `Low Price` och `High Price` nästan är perfekt korrelerade. `Month` däremot visar endast en svag linjär korrelation med priset — även om stapeldiagrammet ovan avslöjade en tydlig säsongstopp i september och oktober. Det är en viktig lärdom: korrelationskoefficienten mäter bara _raka-linje_-relationer, så den kan missa säsongsmönster eller andra icke-linjära samband. ✅ Varför är det användbart att titta på både en värmekarta *och* diagram som stapeldiagrammet innan du bestämmer vilka kolumner som ska användas? + +### Matplotlib eller Seaborn? + +Båda biblioteken är värda att känna till: + +- **Matplotlib** ger dig finjusterad kontroll över varje element i ett diagram och är grunden som nästan alla andra Python-plottningsbibliotek bygger på. +- **Seaborn** tillhandahåller funktioner på högre nivå och attraktiva standardinställningar för statistiska diagram, arbetar direkt med dataframes och är ofta snabbare för utforskande dataanalys. - Detta är en mer användbar datavisualisering! Det verkar indikera att det högsta priset för pumpor inträffar i september och oktober. Motsvarar det dina förväntningar? Varför eller varför inte? +En vanlig arbetsgång är att använda Seaborn för att snabbt utforska din data, och sedan gå ner till Matplotlib när du behöver anpassa detaljerna. --- ## 🚀Utmaning -Utforska de olika typerna av visualiseringar som Matplotlib erbjuder. Vilka typer är mest lämpliga för regressionsproblem? +Utforska de olika typer av visualiseringar som Matplotlib och Seaborn erbjuder. Vilka typer är mest lämpliga för regressionsproblem? ## [Quiz efter föreläsningen](https://ff-quizzes.netlify.app/en/ml/) -## Granskning & Självstudier +## Repetition & Självstudier -Ta en titt på de många sätten att visualisera data. Gör en lista över de olika biblioteken som finns tillgängliga och notera vilka som är bäst för olika typer av uppgifter, till exempel 2D-visualiseringar kontra 3D-visualiseringar. Vad upptäcker du? +Ta en titt på de många sätten att visualisera data. Gör en lista över de olika tillgängliga biblioteken och notera vilka som är bäst för olika typer av uppgifter, till exempel 2D-visualiseringar jämfört med 3D-visualiseringar. Vad upptäcker du? ## Uppgift @@ -213,5 +288,7 @@ Ta en titt på de många sätten att visualisera data. Gör en lista över de ol --- -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av AI-översättningstjänsten [Co-op Translator](https://github.com/Azure/co-op-translator). Även om vi strävar efter noggrannhet, vänligen notera att automatiska översättningar kan innehålla fel eller felaktigheter. Det ursprungliga dokumentet på dess originalspråk bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för eventuella missförstånd eller feltolkningar som uppstår vid användning av denna översättning. \ No newline at end of file + +**Ansvarsfriskrivning**: +Detta dokument har översatts med hjälp av AI-översättningstjänsten [Co-op Translator](https://github.com/Azure/co-op-translator). Även om vi strävar efter noggrannhet, var vänlig notera att automatiska översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på dess modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller feltolkningar som uppstår till följd av användningen av denna översättning. + \ No newline at end of file diff --git a/translations/sv/2-Regression/2-Data/solution/notebook.ipynb b/translations/sv/2-Regression/2-Data/solution/notebook.ipynb index 41c6128d6..8ea7fdce7 100644 --- a/translations/sv/2-Regression/2-Data/solution/notebook.ipynb +++ b/translations/sv/2-Regression/2-Data/solution/notebook.ipynb @@ -3,7 +3,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "## Linjär regression för pumpor - 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": [ + "## 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": [ + "### Punktdiagram för att visa samband\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": [ + "### Stapeldiagram för att visa fördelningar\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**Ansvarsfriskrivning**: \nDetta dokument har översatts med hjälp av AI-översättningstjänsten [Co-op Translator](https://github.com/Azure/co-op-translator). Även om vi strävar efter noggrannhet, vänligen notera att automatiska översättningar kan innehålla fel eller felaktigheter. Det ursprungliga dokumentet på dess originalspråk bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för eventuella missförstånd eller feltolkningar som uppstår vid användning av denna översättning.\n" + "### Värmekartor för att visa 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**Ansvarsfriskrivning**:\nDetta dokument har översatts med hjälp av AI-översättningstjänsten [Co-op Translator](https://github.com/Azure/co-op-translator). Även om vi strävar efter noggrannhet, var vänlig notera att automatiska översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på dess modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller feltolkningar som uppstår till följd av användningen av denna översättning.\n\n" ] } ], @@ -424,13 +487,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "95726f0b8283628d5356a4f8eb8b4b76", - "translation_date": "2025-09-06T13:46:22+00:00", - "source_file": "2-Regression/2-Data/solution/notebook.ipynb", - "language_code": "sv" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/sv/8-Reinforcement/1-QLearning/README.md b/translations/sv/8-Reinforcement/1-QLearning/README.md index c1fc155fe..b40409dca 100644 --- a/translations/sv/8-Reinforcement/1-QLearning/README.md +++ b/translations/sv/8-Reinforcement/1-QLearning/README.md @@ -1,47 +1,47 @@ -# Introduktion till förstärkningsinlärning och Q-Learning +# Introduktion till förstärkningsinlärning och Q-lärande -![Sammanfattning av förstärkning inom maskininlärning i en sketchnote](../../../../sketchnotes/ml-reinforcement.png) +![Sammanfattning av förstärkning inom maskininlärning i en sketchnote](../../../../translated_images/sv/ml-reinforcement.94024374d63348db.webp) > Sketchnote av [Tomomi Imura](https://www.twitter.com/girlie_mac) -Förstärkningsinlärning involverar tre viktiga koncept: agenten, några tillstånd och en uppsättning av handlingar per tillstånd. Genom att utföra en handling i ett specifikt tillstånd får agenten en belöning. Tänk dig datorspelet Super Mario. Du är Mario, du befinner dig på en nivå i spelet, stående vid kanten av en klippa. Ovanför dig finns ett mynt. Du som Mario, på en nivå i spelet, på en specifik position ... det är ditt tillstånd. Om du tar ett steg åt höger (en handling) faller du över kanten, vilket ger dig en låg numerisk poäng. Men om du trycker på hoppknappen får du en poäng och förblir vid liv. Det är ett positivt resultat och bör ge dig en positiv numerisk poäng. +Förstärkningsinlärning involverar tre viktiga begrepp: agenten, vissa tillstånd och en uppsättning handlingar per tillstånd. Genom att utföra en handling i ett specificerat tillstånd får agenten en belöning. Föreställ dig igen datorspelet Super Mario. Du är Mario, du är i en spelnivå, stående bredvid en klippkant. Ovanför dig finns en mynt. Du som Mario, i en spelnivå, på en specifik position ... det är ditt tillstånd. Att flytta ett steg åt höger (en handling) skulle få dig att falla över kanten, och det skulle ge dig ett lågt numeriskt poäng. Men att trycka på hoppknappen skulle låta dig få en poäng och du skulle överleva. Det är ett positivt resultat och det borde belöna dig med ett positivt numeriskt poäng. -Genom att använda förstärkningsinlärning och en simulator (spelet) kan du lära dig att spela spelet för att maximera belöningen, vilket innebär att hålla dig vid liv och samla så många poäng som möjligt. +Genom att använda förstärkningsinlärning och en simulator (spelet), kan du lära dig hur du spelar spelet för att maximera belöningen som är att överleva och samla så många poäng som möjligt. [![Introduktion till förstärkningsinlärning](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) > 🎥 Klicka på bilden ovan för att höra Dmitry diskutera förstärkningsinlärning -## [Quiz före föreläsningen](https://ff-quizzes.netlify.app/en/ml/) +## [För-frågesport](https://ff-quizzes.netlify.app/en/ml/) -## Förutsättningar och inställning +## Förkunskaper och installation -I denna lektion kommer vi att experimentera med kod i Python. Du bör kunna köra Jupyter Notebook-koden från denna lektion, antingen på din dator eller i molnet. +I denna lektion kommer vi att experimentera med lite kod i Python. Du bör kunna köra Jupyter Notebook-koden från denna lektion, antingen på din dator eller någonstans i molnet. -Du kan öppna [lektionens notebook](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) och följa med i lektionen för att bygga. +Du kan öppna [lektionen notebook](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) och gå igenom denna lektion för att bygga. -> **Obs:** Om du öppnar denna kod från molnet behöver du också hämta filen [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), som används i notebook-koden. Lägg den i samma katalog som notebook-filen. +> **Notera:** Om du öppnar denna kod från molnet, behöver du också hämta filen [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), som används i notebook-koden. Lägg den i samma mapp som notebookfilen. ## Introduktion -I denna lektion kommer vi att utforska världen av **[Peter och vargen](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)**, inspirerad av en musikalisk saga av den ryske kompositören [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev). Vi kommer att använda **förstärkningsinlärning** för att låta Peter utforska sin miljö, samla goda äpplen och undvika att möta vargen. +I denna lektion ska vi utforska världen av **[Peter och vargen](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)**, inspirerad av en musikalisk folksaga av en rysk kompositör, [Sergej Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev). Vi ska använda **förstärkningsinlärning** för att låta Peter utforska sin omgivning, samla läckra äpplen och undvika vargen. -**Förstärkningsinlärning** (RL) är en inlärningsteknik som gör det möjligt för oss att lära oss ett optimalt beteende hos en **agent** i en viss **miljö** genom att köra många experiment. En agent i denna miljö bör ha ett **mål**, definierat av en **belöningsfunktion**. +**Förstärkningsinlärning** (RL) är en inlärningsteknik som låter oss lära oss ett optimalt beteende för en **agent** i en viss **miljö** genom att genomföra många experiment. En agent i denna miljö ska ha något slags **mål**, definierat av en **belöningsfunktion**. ## Miljön -För enkelhetens skull kan vi tänka oss Peters värld som en kvadratisk spelbräda med storleken `width` x `height`, som denna: +För enkelhetens skull, låt oss betrakta Peters värld som en kvadratisk spelplan med storleken `width` x `height`, så här: -![Peters miljö](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![Peters miljö](../../../../translated_images/sv/environment.40ba3cb66256c93f.webp) -Varje cell på denna bräda kan vara: +Varje cell i denna spelplan kan vara: * **mark**, där Peter och andra varelser kan gå. -* **vatten**, där man uppenbarligen inte kan gå. -* ett **träd** eller **gräs**, en plats där man kan vila. -* ett **äpple**, som representerar något Peter gärna vill hitta för att äta. +* **vatten**, där du uppenbarligen inte kan gå. +* ett **träd** eller **gräs**, en plats där du kan vila. +* ett **äpple**, som representerar något Peter skulle bli glad att hitta för att mata sig själv. * en **varg**, som är farlig och bör undvikas. -Det finns en separat Python-modul, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), som innehåller koden för att arbeta med denna miljö. Eftersom denna kod inte är viktig för att förstå våra koncept, kommer vi att importera modulen och använda den för att skapa spelbrädan (kodblock 1): +Det finns ett separat Pythonmodul, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), som innehåller koden för att arbeta med denna miljö. Eftersom denna kod inte är viktig för att förstå våra koncept, kommer vi att importera modulen och använda den för att skapa spelplanen (kodblock 1): ```python from rlboard import * @@ -52,63 +52,63 @@ m.randomize(seed=13) m.plot() ``` -Denna kod bör skriva ut en bild av miljön som liknar den ovan. +Denna kod bör skriva ut en bild av miljön liknande den ovan. -## Handlingar och strategi +## Handlingar och policy I vårt exempel skulle Peters mål vara att hitta ett äpple, samtidigt som han undviker vargen och andra hinder. För att göra detta kan han i princip gå runt tills han hittar ett äpple. -Därför kan han vid varje position välja mellan följande handlingar: upp, ner, vänster och höger. +Därför kan han i varje position välja mellan följande handlingar: upp, ner, vänster och höger. -Vi kommer att definiera dessa handlingar som en ordbok och koppla dem till par av motsvarande koordinatförändringar. Till exempel skulle rörelse åt höger (`R`) motsvara paret `(1,0)`. (kodblock 2): +Vi definierar dessa handlingar som en ordbok, och kopplar dem till par med motsvarande koordinatförändringar. Till exempel skulle att gå åt höger (`R`) motsvara paret `(1,0)`. (kodblock 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()) } ``` -Sammanfattningsvis är strategin och målet för detta scenario följande: +Sammanfattningsvis är strategin och målet i detta scenario följande: -- **Strategin**, för vår agent (Peter) definieras av en så kallad **policy**. En policy är en funktion som returnerar handlingen vid ett givet tillstånd. I vårt fall representeras problemet av spelbrädan, inklusive spelarens aktuella position. +- **Strategin**, för vår agent (Peter) definieras av en så kallad **policy**. En policy är en funktion som returnerar handlingen vid varje givet tillstånd. I vårt fall representeras problemtillståndet av spelplanen, inklusive spelarens aktuella position. -- **Målet**, med förstärkningsinlärning är att så småningom lära sig en bra policy som gör det möjligt för oss att lösa problemet effektivt. Men som en grundläggande utgångspunkt kan vi överväga den enklaste policyn som kallas **slumpvandring**. +- **Målet** med förstärkningsinlärning är att så småningom lära sig en bra policy som gör att vi kan lösa problemet effektivt. Men som en baslinje kan vi betrakta den enklaste policyn som kallas **random walk**. -## Slumpvandring +## Random walk -Låt oss först lösa vårt problem genom att implementera en slumpvandring-strategi. Med slumpvandring kommer vi slumpmässigt att välja nästa handling från de tillåtna handlingarna tills vi når äpplet (kodblock 3). +Låt oss först lösa vårt problem genom att implementera en random walk-strategi. Med random walk väljer vi slumpmässigt nästa handling från tillåtna handlingar, tills vi når äpplet (kodblock 3). -1. Implementera slumpvandringen med koden nedan: +1. Implementera random walk med koden nedan: ```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 # antal steg + # sätt 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 # framgång! if m.at() in [Board.Cell.wolf, Board.Cell.water]: - return -1 # eaten by wolf or drowned + return -1 # uppäten av varg eller drunknad 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) # genomför själva flytten break n+=1 walk(m,random_policy) ``` - Anropet till `walk` bör returnera längden på den motsvarande vägen, som kan variera från en körning till en annan. + Anropet till `walk` bör returnera längden på motsvarande väg, vilket kan variera från körning till körning. -1. Kör experimentet med slumpvandring ett antal gånger (säg 100) och skriv ut de resulterande statistiken (kodblock 4): +1. Kör walk-experimentet flera gånger (t.ex. 100), och skriv ut den resulterande statistiken (kodblock 4): ```python def print_statistics(policy): @@ -125,15 +125,15 @@ Låt oss först lösa vårt problem genom att implementera en slumpvandring-stra print_statistics(random_policy) ``` - Observera att den genomsnittliga längden på en väg är cirka 30-40 steg, vilket är ganska mycket, med tanke på att det genomsnittliga avståndet till närmaste äpple är cirka 5-6 steg. + Observera att den genomsnittliga längden av en väg är runt 30-40 steg, vilket är ganska mycket med tanke på att det genomsnittliga avståndet till närmaste äpple är omkring 5-6 steg. - Du kan också se hur Peters rörelse ser ut under slumpvandringen: + Du kan också se hur Peters rörelse ser ut under random walk: - ![Peters slumpvandring](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) + ![Peters random walk](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) ## Belöningsfunktion -För att göra vår policy mer intelligent behöver vi förstå vilka rörelser som är "bättre" än andra. För att göra detta måste vi definiera vårt mål. +För att göra vår policy mer intelligent behöver vi förstå vilka rörelser som är "bättre" än andra. För att göra detta behöver vi definiera vårt mål. Målet kan definieras i termer av en **belöningsfunktion**, som returnerar ett poängvärde för varje tillstånd. Ju högre nummer, desto bättre belöningsfunktion. (kodblock 5) @@ -154,39 +154,115 @@ def reward(m,pos=None): return move_reward ``` -En intressant sak med belöningsfunktioner är att i de flesta fall *får vi bara en betydande belöning i slutet av spelet*. Detta innebär att vår algoritm på något sätt måste komma ihåg "bra" steg som leder till en positiv belöning i slutet och öka deras betydelse. På samma sätt bör alla rörelser som leder till dåliga resultat avskräckas. +En intressant sak med belöningsfunktioner är att i de flesta fall *får vi bara en betydande belöning i slutet av spelet*. Det betyder att vår algoritm på något sätt bör komma ihåg "bra" steg som leder till en positiv belöning i slutet, och öka deras vikt. På samma sätt bör alla steg som leder till dåliga resultat motverkas. -## Q-Learning +## Q-lärande -En algoritm som vi kommer att diskutera här kallas **Q-Learning**. I denna algoritm definieras policyn av en funktion (eller en datastruktur) som kallas en **Q-Tabell**. Den registrerar "kvaliteten" på varje handling i ett givet tillstånd. +En algoritm som vi ska diskutera här kallas **Q-lärande**. I denna algoritm definieras policyn av en funktion (eller datastruktur) kallad en **Q-tabell**. Den registrerar "godheten" hos varje handling i ett givet tillstånd. -Den kallas en Q-Tabell eftersom det ofta är bekvämt att representera den som en tabell eller en multidimensionell array. Eftersom vår bräda har dimensionerna `width` x `height`, kan vi representera Q-Tabellen med en numpy-array med formen `width` x `height` x `len(actions)`: (kodblock 6) +Den kallas Q-tabell eftersom det ofta är bekvämt att representera den som en tabell eller flerdimensionell array. Eftersom vår spelplan har dimensionerna `width` x `height`, kan vi representera Q-tabellen med en numpy-array med formen `width` x `height` x `len(actions)`: (kodblock 6) ```python Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions) ``` -Observera att vi initialiserar alla värden i Q-Tabellen med ett lika värde, i vårt fall - 0.25. Detta motsvarar policyn "slumpvandring", eftersom alla rörelser i varje tillstånd är lika bra. Vi kan skicka Q-Tabellen till funktionen `plot` för att visualisera tabellen på brädan: `m.plot(Q)`. +Observera att vi initialiserar alla värden i Q-tabellen med ett lika värde, i vårt fall - 0.25. Detta motsvarar "random walk"-policyn, eftersom alla rörelser i varje tillstånd är lika bra. Vi kan skicka Q-tabellen till `plot`-funktionen för att visualisera tabellen på spelplanen: `m.plot(Q)`. -![Peters miljö](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![Peters miljö](../../../../translated_images/sv/env_init.04e8f26d2d60089e.webp) I mitten av varje cell finns en "pil" som indikerar den föredragna rörelseriktningen. Eftersom alla riktningar är lika visas en punkt. -Nu behöver vi köra simuleringen, utforska vår miljö och lära oss en bättre fördelning av Q-Tabellvärden, vilket gör att vi kan hitta vägen till äpplet mycket snabbare. +Nu behöver vi köra simuleringen, utforska vår miljö och lära oss en bättre fördelning av Q-tabellvärden, vilket gör att vi kan hitta vägen till äpplet mycket snabbare. -## Kärnan i Q-Learning: Bellman-ekvationen +## Kärnan i Q-lärande: Bellmans ekvation -När vi börjar röra oss kommer varje handling att ha en motsvarande belöning, dvs. vi kan teoretiskt välja nästa handling baserat på den högsta omedelbara belöningen. Men i de flesta tillstånd kommer rörelsen inte att uppnå vårt mål att nå äpplet, och vi kan därför inte omedelbart avgöra vilken riktning som är bättre. +När vi börjar röra oss kommer varje handling att ha en motsvarande belöning, dvs. vi kan teoretiskt välja nästa handling baserat på högsta omedelbara belöning. Men i de flesta tillstånd kommer rörelsen inte att uppnå vårt mål att nå äpplet, och därför kan vi inte omedelbart bestämma vilken riktning som är bättre. -> Kom ihåg att det inte är det omedelbara resultatet som spelar roll, utan snarare det slutliga resultatet, som vi kommer att få i slutet av simuleringen. +> Kom ihåg att det inte är det omedelbara resultatet som är viktigt, utan snarare det slutgiltiga resultatet som vi får i slutet av simuleringen. -För att ta hänsyn till denna fördröjda belöning måste vi använda principerna för **[dynamisk programmering](https://en.wikipedia.org/wiki/Dynamic_programming)**, som gör det möjligt för oss att tänka på vårt problem rekursivt. +För att ta hänsyn till denna fördröjda belöning behöver vi använda principerna för **[dynamisk programmering](https://en.wikipedia.org/wiki/Dynamic_programming)**, som låter oss tänka på vårt problem rekursivt. -Anta att vi nu är i tillståndet *s*, och vi vill gå vidare till nästa tillstånd *s'*. Genom att göra det kommer vi att få den omedelbara belöningen *r(s,a)*, definierad av belöningsfunktionen, plus någon framtida belöning. Om vi antar att vår Q-Tabell korrekt återspeglar "attraktiviteten" hos varje handling, kommer vi vid tillståndet *s'* att välja en handling *a* som motsvarar det maximala värdet av *Q(s',a')*. Således definieras den bästa möjliga framtida belöningen vi kan få vid tillståndet *s* som `max` +Anta att vi nu är i tillståndet *s*, och vi vill gå till nästa tillstånd *s'*. Genom att göra detta får vi den omedelbara belöningen *r(s,a)*, definierad av belöningsfunktionen, plus någon framtida belöning. Om vi antar att vår Q-tabell korrekt speglar "attraktiviteten" av varje handling, kommer vi i tillstånd *s'* att välja en handling *a'* som motsvarar maxvärdet av *Q(s',a')*. Alltså kommer den bästa möjliga framtida belöningen vi kan få i tillstånd *s* att definieras som `max`a'*Q(s',a')* (maximum här beräknas över alla möjliga handlingar *a'* i tillstånd *s'*). + +Detta ger **Bellmans formel** för att beräkna värdet i Q-tabellen i tillstånd *s*, givet handling *a*: + + + +Här är γ den så kallade **diskonteringsfaktorn** som avgör i vilken utsträckning du bör föredra nuvarande belöning framför framtida belöning och vice versa. + +## Inlärningsalgoritm + +Med ekvationen ovan kan vi nu skriva pseudokod för vår inlärningsalgoritm: + +* Initiera Q-tabellen Q med lika siffror för alla tillstånd och handlingar +* Sätt inlärningshastighet α ← 1 +* Upprepa simuleringen många gånger + 1. Starta på slumpmässig position + 1. Upprepa + 1. Välj en handling *a* i tillstånd *s* + 2. Utför handlingen genom att röra dig till ett nytt tillstånd *s'* + 3. Om vi stöter på slutet av spelet eller total belöning är för låg - avsluta simuleringen + 4. Beräkna belöningen *r* i det nya tillståndet + 5. Uppdatera Q-funktionen enligt Bellmans ekvation: *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ maxa'Q(s',a'))* + 6. *s* ← *s'* + 7. Uppdatera den totala belöningen och minska α. + +## Exploatera vs. utforska + +I algoritmen ovan specificerade vi inte exakt hur vi ska välja en handling vid steg 2.1. Om vi väljer handlingen slumpmässigt kommer vi att slumpmässigt **utforska** miljön, och vi kommer sannolikt att dö ofta samt utforska områden där vi normalt inte skulle gå. Ett alternativ är att **exploatera** Q-tabellens värden som vi redan känner till, och därmed välja den bästa handlingen (med högre Q-tabellvärde) i tillstånd *s*. Detta kommer dock att hindra oss från att utforska andra tillstånd, och det är troligt att vi inte hittar den optimala lösningen. + +Därför är det bästa tillvägagångssättet att hitta en balans mellan utforskning och exploatering. Detta kan göras genom att välja handling i tillstånd *s* med sannolikhet proportionell mot värdena i Q-tabellen. I början, när Q-tabellens värden är lika, motsvarar det ett slumpmässigt val, men när vi lär oss mer om vår miljö skulle vi sannolikt följa den optimala vägen samtidigt som agenten får välja den outforskade vägen då och då. + +## Python-implementation + +Vi är nu redo att implementera inlärningsalgoritmen. Innan dess behöver vi en funktion som konverterar godtyckliga siffror i Q-tabellen till en vektor av sannolikheter för motsvarande handlingar. + +1. Skapa funktionen `probs()`: + + ```python + def probs(v,eps=1e-4): + v = v-v.min()+eps + v = v/v.sum() + return v + ``` + + Vi lägger till några `eps` till den ursprungliga vektorn för att undvika division med 0 i det initiala fallet, när alla komponenter i vektorn är identiska. + +Kör sedan inlärningsalgoritmen under 5000 experiment, även kallade **epoker**: (kodblock 8) +```python + for epoch in range(5000): + + # Välj startpunkt + m.random_start() + + # Börja resa + 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 tillåter spelaren att röra sig utanför spelbrädet, vilket avslutar 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 att ha kört denna algoritm bör Q-tabellen uppdateras med värden som definierar attraktionskraften för olika handlingar vid varje steg. Vi kan försöka visualisera Q-tabellen genom att rita en vektor i varje cell som pekar i önskad rörelseriktning. För enkelhetens skull ritar vi en liten cirkel istället för ett pilhuvud. + + ## Kontrollera policyn -Eftersom Q-Tabellen listar "attraktiviteten" för varje handling i varje tillstånd, är det ganska enkelt att använda den för att definiera effektiv navigering i vår värld. I det enklaste fallet kan vi välja den handling som motsvarar det högsta värdet i Q-Tabellen: (kodblock 9) +Eftersom Q-tabellen listar "attraktiviteten" för varje handling i varje tillstånd är det ganska enkelt att använda den för att definiera effektiv navigering i vår värld. I det enklaste fallet kan vi välja handlingen som motsvarar högst Q-tabellvärde: (kodblock 9) ```python def qpolicy_strict(m): @@ -198,17 +274,18 @@ def qpolicy_strict(m): walk(m,qpolicy_strict) ``` -> Om du testar koden ovan flera gånger kan du märka att den ibland "fastnar", och du måste trycka på STOP-knappen i notebooken för att avbryta den. Detta händer eftersom det kan finnas situationer där två tillstånd "pekar" på varandra i termer av optimalt Q-värde, vilket gör att agenten hamnar i en oändlig rörelse mellan dessa tillstånd. + +> Om du provar koden ovan flera gånger kan du märka att den ibland "fastnar" och att du behöver trycka på STOP-knappen i anteckningsboken för att avbryta den. Detta händer eftersom det kan finnas situationer där två tillstånd "pekar" på varandra när det gäller optimal Q-värde, vilket gör att agenten hamnar i att röra sig mellan dessa tillstånd på obestämd tid. ## 🚀Utmaning -> **Uppgift 1:** Modifiera funktionen `walk` för att begränsa den maximala längden på vägen till ett visst antal steg (t.ex. 100), och se hur koden ovan returnerar detta värde då och då. +> **Uppgift 1:** Ändra `walk`-funktionen för att begränsa den maximala längden på sökvägen till ett visst antal steg (säg 100), och se hur koden ovan ibland returnerar detta värde. -> **Uppgift 2:** Modifiera funktionen `walk` så att den inte går tillbaka till platser där den redan har varit tidigare. Detta kommer att förhindra att `walk` hamnar i en loop, men agenten kan fortfarande bli "fast" på en plats som den inte kan ta sig ifrån. +> **Uppgift 2:** Ändra `walk`-funktionen så att den inte går tillbaka till platser där den redan har varit tidigare. Detta förhindrar att `walk` hamnar i en loop, men agenten kan ändå bli "fast" på en plats som den inte kan ta sig ifrån. ## Navigering -En bättre navigeringspolicy skulle vara den vi använde under träningen, som kombinerar exploatering och utforskning. I denna policy kommer vi att välja varje handling med en viss sannolikhet, proportionell mot värdena i Q-Tabellen. Denna strategi kan fortfarande leda till att agenten återvänder till en position den redan har utforskat, men som du kan se från koden nedan resulterar den i en mycket kortare genomsnittlig väg till den önskade platsen (kom ihåg att `print_statistics` kör simuleringen 100 gånger): (kodblock 10) +En bättre navigeringspolicy skulle vara den vi använde under träningen, som kombinerar utnyttjande och utforskning. I denna policy kommer vi att välja varje handling med en viss sannolikhet, proportionell mot värdena i Q-tabellen. Denna strategi kan fortfarande leda till att agenten återvänder till en position den redan har utforskat, men som du kan se i koden nedan, resulterar det i en mycket kort genomsnittlig väg till önskad plats (kom ihåg att `print_statistics` kör simuleringen 100 gånger): (kodblock 10) ```python def qpolicy(m): @@ -220,28 +297,32 @@ def qpolicy(m): print_statistics(qpolicy) ``` -Efter att ha kört denna kod bör du få en mycket mindre genomsnittlig väg än tidigare, i intervallet 3-6. +Efter att ha kört denna kod bör du få en mycket kortare genomsnittlig väglängd än tidigare, i intervallet 3-6. ## Undersöka inlärningsprocessen -Som vi har nämnt är inlärningsprocessen en balans mellan utforskning och utnyttjande av den kunskap vi har fått om problemområdets struktur. Vi har sett att resultaten av inlärningen (förmågan att hjälpa en agent att hitta en kort väg till målet) har förbättrats, men det är också intressant att observera hur den genomsnittliga väglängden beter sig under inlärningsprocessen: +Som vi har nämnt är inlärningsprocessen en balans mellan utforskning och utnyttjande av tillägnad kunskap om problemets struktur. Vi har sett att resultaten av inlärningen (förmågan att hjälpa en agent att hitta en kort väg till målet) har förbättrats, men det är också intressant att observera hur den genomsnittliga väglängden beter sig under inlärningsprocessen: + + -## Sammanfattning av lärdomarna: +Slutsatserna av inlärningen kan sammanfattas som: -- **Genomsnittlig väglängd ökar**. Det vi ser här är att i början ökar den genomsnittliga väglängden. Detta beror troligen på att när vi inte vet något om miljön är vi mer benägna att fastna i dåliga tillstånd, som vatten eller varg. När vi lär oss mer och börjar använda denna kunskap kan vi utforska miljön längre, men vi vet fortfarande inte var äpplena finns särskilt väl. +- **Genomsnittlig väglängd ökar**. Det vi ser här är att väglängden först ökar. Detta beror sannolikt på att när vi inte vet något om miljön är vi sannolika att fastna i dåliga tillstånd, vatten eller varg. När vi lär oss mer och börjar använda denna kunskap kan vi utforska miljön längre, men vi vet fortfarande inte var äpplena finns så bra. -- **Väglängden minskar när vi lär oss mer**. När vi har lärt oss tillräckligt blir det lättare för agenten att nå målet, och väglängden börjar minska. Vi är dock fortfarande öppna för utforskning, så vi avviker ofta från den bästa vägen och utforskar nya alternativ, vilket gör vägen längre än optimal. +- **Väglängd minskar när vi lär oss mer**. När vi lärt oss tillräckligt blir det lättare för agenten att nå målet, och väglängden börjar minska. Vi är dock fortfarande öppna för utforskning, så vi avviker ofta från den bästa vägen och utforskar nya alternativ, vilket gör vägen längre än optimalt. -- **Längden ökar plötsligt**. Det vi också observerar på denna graf är att vid någon punkt ökade längden plötsligt. Detta indikerar den stokastiska naturen hos processen, och att vi vid något tillfälle kan "förstöra" Q-Tabellens koefficienter genom att skriva över dem med nya värden. Detta bör idealt minimeras genom att minska inlärningshastigheten (till exempel mot slutet av träningen justerar vi endast Q-Tabellens värden med ett litet värde). +- **Längden ökar abrupt**. Vad vi också observerar i denna graf är att längden vid någon punkt ökade abrupt. Detta indikerar den stokastiska naturen i processen, och att vi vid någon punkt kan "förstöra" koefficienterna i Q-tabellen genom att skriva över dem med nya värden. Detta bör idealiskt minimeras genom att minska inlärningshastigheten (till exempel mot slutet av träningen justerar vi endast värdena i Q-tabellen med ett litet värde). -Sammanfattningsvis är det viktigt att komma ihåg att framgången och kvaliteten på inlärningsprocessen beror avsevärt på parametrar som inlärningshastighet, inlärningshastighetsminskning och diskonteringsfaktor. Dessa kallas ofta **hyperparametrar**, för att skilja dem från **parametrar**, som vi optimerar under träningen (till exempel Q-Tabellens koefficienter). Processen att hitta de bästa värdena för hyperparametrar kallas **hyperparameteroptimering**, och det förtjänar ett eget ämne. +Överlag är det viktigt att komma ihåg att framgången och kvaliteten på inlärningsprocessen i hög grad beror på parametrar, såsom inlärningshastighet, minskning av inlärningshastighet och diskonteringsfaktor. Dessa kallas ofta **hyperparametrar** för att skilja dem från **parametrar**, som vi optimerar under träningen (till exempel koefficienterna i Q-tabellen). Processen att hitta de bästa hyperparametervärdena kallas **hyperparameteroptimering** och förtjänar ett eget ämne. -## [Quiz efter föreläsningen](https://ff-quizzes.netlify.app/en/ml/) +## [Quiz efter föreläsning](https://ff-quizzes.netlify.app/en/ml/) -## Uppgift +## Uppgift [En mer realistisk värld](assignment.md) --- -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av AI-översättningstjänsten [Co-op Translator](https://github.com/Azure/co-op-translator). Även om vi strävar efter noggrannhet, vänligen notera att automatiska översättningar kan innehålla fel eller felaktigheter. Det ursprungliga dokumentet på dess originalspråk bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för eventuella missförstånd eller feltolkningar som uppstår vid användning av denna översättning. \ No newline at end of file + +**Ansvarsfriskrivning**: +Detta dokument har översatts med hjälp av AI-översättningstjänsten [Co-op Translator](https://github.com/Azure/co-op-translator). Även om vi strävar efter noggrannhet, var vänlig notera att automatiska översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på dess modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller feltolkningar som uppstår till följd av användningen av denna översättning. + \ No newline at end of file diff --git a/translations/sv/8-Reinforcement/2-Gym/README.md b/translations/sv/8-Reinforcement/2-Gym/README.md index ac66f7eed..0f3b970b5 100644 --- a/translations/sv/8-Reinforcement/2-Gym/README.md +++ b/translations/sv/8-Reinforcement/2-Gym/README.md @@ -1,14 +1,34 @@ +# CartPole Skridskoåkning + +Problemet vi har löst i föregående lektion kan verka som ett lekproblem, inte riktigt tillämpligt på verkliga scenarier. Så är dock inte fallet, eftersom många verkliga problem också delar detta scenario – inklusive att spela schack eller Go. De är liknande eftersom vi också har ett bräde med givna regler och ett **diskret tillstånd**. + +## [Förföreläsningsquiz](https://ff-quizzes.netlify.app/en/ml/) + +## Introduktion + +I denna lektion kommer vi att applicera samma principer för Q-Learning på ett problem med **kontinuerligt tillstånd**, dvs ett tillstånd som ges av ett eller flera reella tal. Vi kommer att hantera följande problem: + +> **Problem**: Om Peter vill fly från vargen måste han kunna röra sig snabbare. Vi kommer att se hur Peter kan lära sig att åka skridskor, framförallt att hålla balansen, med hjälp av Q-Learning. + +![Den stora flykten!](../../../../translated_images/sv/escape.18862db9930337e3.webp) + +> Peter och hans vänner blir kreativa för att fly från vargen! Bild av [Jen Looper](https://twitter.com/jenlooper) + +Vi kommer att använda en förenklad version av balansering känd som ett **CartPole**-problem. I cartpole-världen har vi en horisontell slider som kan röra sig åt vänster eller höger, och målet är att balansera en vertikal stång ovanpå slidern. + +a cartpole + ## Förkunskaper -I denna lektion kommer vi att använda ett bibliotek som heter **OpenAI Gym** för att simulera olika **miljöer**. Du kan köra kod från denna lektion lokalt (t.ex. från Visual Studio Code), i vilket fall simuleringen öppnas i ett nytt fönster. Om du kör koden online kan du behöva göra vissa justeringar, som beskrivs [här](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7). +I denna lektion kommer vi att använda ett bibliotek kallat **OpenAI Gym** för att simulera olika **miljöer**. Du kan köra lektionens kod lokalt (t.ex. från Visual Studio Code), då öppnas simuleringen i ett nytt fönster. När du kör koden online kan du behöva göra vissa justeringar i koden, som beskrivs [här](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7). ## OpenAI Gym -I den föregående lektionen definierades spelets regler och tillstånd av klassen `Board` som vi skapade själva. Här kommer vi att använda en speciell **simuleringsmiljö** som simulerar fysiken bakom den balanserande stången. En av de mest populära simuleringsmiljöerna för att träna förstärkningsinlärningsalgoritmer kallas [Gym](https://gym.openai.com/), som underhålls av [OpenAI](https://openai.com/). Med hjälp av Gym kan vi skapa olika **miljöer**, från cartpole-simuleringar till Atari-spel. +I föregående lektion gavs reglerna för spelet och tillståndet av `Board`-klassen som vi definierade själva. Här kommer vi att använda en speciell **simuleringsmiljö**, som simulerar fysiken bakom balansstången. En av de mest populära simuleringsmiljöerna för träning av förstärkningsinlärningsalgoritmer kallas [Gym](https://gym.openai.com/), som underhålls av [OpenAI](https://openai.com/). Genom att använda detta gym kan vi skapa olika **miljöer** från en cartpole-simulering till Atari-spel. -> **Note**: Du kan se andra miljöer som finns tillgängliga från OpenAI Gym [här](https://gym.openai.com/envs/#classic_control). +> **Notis**: Du kan se andra miljöer tillgängliga från OpenAI Gym [här](https://gym.openai.com/envs/#classic_control). -Först installerar vi Gym och importerar nödvändiga bibliotek (kodblock 1): +Först, låt oss installera gym och importera nödvändiga bibliotek (kodblock 1): ```python import sys @@ -22,11 +42,11 @@ import random ## Övning - initiera en cartpole-miljö -För att arbeta med problemet att balansera en cartpole behöver vi initiera motsvarande miljö. Varje miljö är associerad med: +För att arbeta med ett cartpole-balansproblem behöver vi initiera motsvarande miljö. Varje miljö är associerad med en: -- **Observationsutrymme** som definierar strukturen för den information vi får från miljön. För cartpole-problemet får vi positionen av stången, hastighet och några andra värden. +- **Observationsutrymme** som definierar strukturen för informationen vi får från miljön. För cartpole-problemet får vi positionen för stången, hastighet och några andra värden. -- **Handlingsutrymme** som definierar möjliga handlingar. I vårt fall är handlingsutrymmet diskret och består av två handlingar - **vänster** och **höger**. (kodblock 2) +- **Aktionsutrymme** som definierar möjliga handlingar. I vårt fall är aktionsutrymmet diskret och består av två handlingar – **vänster** och **höger**. (kodblock 2) 1. För att initiera, skriv följande kod: @@ -37,7 +57,7 @@ För att arbeta med problemet att balansera en cartpole behöver vi initiera mot print(env.action_space.sample()) ``` -För att se hur miljön fungerar, låt oss köra en kort simulering i 100 steg. Vid varje steg tillhandahåller vi en av handlingarna som ska utföras - i denna simulering väljer vi bara slumpmässigt en handling från `action_space`. +För att se hur miljön fungerar, kör en kort simulering på 100 steg. Vid varje steg ger vi en av handlingarna som ska utföras – i denna simulering väljer vi helt enkelt en slumpmässig handling från `action_space`. 1. Kör koden nedan och se vad det leder till. @@ -54,9 +74,9 @@ För att se hur miljön fungerar, låt oss köra en kort simulering i 100 steg. Du bör se något liknande denna bild: - ![icke-balanserande cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) + ![icke-balans cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) -1. Under simuleringen behöver vi få observationer för att kunna bestämma hur vi ska agera. Faktum är att funktionen `step` returnerar aktuella observationer, en belöningsfunktion och flaggan `done` som indikerar om det är meningsfullt att fortsätta simuleringen eller inte: (kodblock 4) +1. Under simuleringen behöver vi få observationer för att kunna avgöra hur vi ska agera. Faktum är att stegfunktionen returnerar aktuella observationer, en belöningsfunktion och en done-flagga som indikerar om det är meningsfullt att fortsätta simuleringen eller inte: (kodblock 4) ```python env.reset() @@ -69,7 +89,7 @@ För att se hur miljön fungerar, låt oss köra en kort simulering i 100 steg. env.close() ``` - Du kommer att se något liknande detta i notebookens output: + Du kommer att se något liknande detta i notebook-utdata: ```text [ 0.03403272 -0.24301182 0.02669811 0.2895829 ] -> 1.0 @@ -83,42 +103,42 @@ För att se hur miljön fungerar, låt oss köra en kort simulering i 100 steg. ``` Observationsvektorn som returneras vid varje steg av simuleringen innehåller följande värden: - - Vagnens position - - Vagnens hastighet - - Stångens vinkel - - Stångens rotationshastighet + - Position för vagnen + - Hastighet för vagnen + - Vinkel för stången + - Rotationshastighet för stången -1. Hämta min- och maxvärden för dessa nummer: (kodblock 5) +1. Hämta min- och maxvärde för dessa siffror: (kodblock 5) ```python print(env.observation_space.low) print(env.observation_space.high) ``` - Du kanske också märker att belöningsvärdet vid varje simuleringssteg alltid är 1. Detta beror på att vårt mål är att överleva så länge som möjligt, dvs. hålla stången i en rimligt vertikal position under längst möjliga tid. + Du kommer också att märka att belöningsvärdet vid varje simuleringsteg alltid är 1. Detta beror på att vårt mål är att överleva så länge som möjligt, dvs att hålla stången i en rimligt vertikal position under längst tid. - ✅ Faktum är att CartPole-simuleringen anses vara löst om vi lyckas få ett genomsnittligt belöningsvärde på 195 över 100 på varandra följande försök. + ✅ Faktiskt betraktas CartPole-simuleringen som löst om vi lyckas få ett genomsnittligt belöningsvärde på 195 över 100 på varandra följande försök. ## Diskretisering av tillstånd -I Q-Learning behöver vi bygga en Q-Tabell som definierar vad vi ska göra vid varje tillstånd. För att kunna göra detta måste tillståndet vara **diskret**, mer specifikt, det bör innehålla ett ändligt antal diskreta värden. Därför måste vi på något sätt **diskretisera** våra observationer och mappa dem till en ändlig uppsättning tillstånd. +I Q-Learning behöver vi bygga en Q-tabell som definierar vad vi ska göra i varje tillstånd. För att kunna göra detta behöver tillståndet vara **diskret**, närmare bestämt ska det innehålla ett ändligt antal diskreta värden. Vi behöver alltså på något sätt **diskretisera** våra observationer och mappa dem till ett ändligt antal tillstånd. -Det finns några sätt vi kan göra detta på: +Det finns några sätt att göra detta på: -- **Dela upp i intervall**. Om vi känner till intervallet för ett visst värde kan vi dela detta intervall i ett antal **intervall**, och sedan ersätta värdet med det intervallnummer det tillhör. Detta kan göras med hjälp av numpy-metoden [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html). I detta fall kommer vi att veta exakt storleken på tillståndet, eftersom det beror på antalet intervall vi väljer för digitalisering. +- **Dela in i fack (bins)**. Om vi vet intervallet för ett visst värde kan vi dela in detta intervall i ett antal **bins**, och ersätta värdet med det bin-nummer det tillhör. Detta kan göras med numpy-metoden [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html). I detta fall kommer vi exakt veta storleken på tillståndet, eftersom det beror på antalet bins vi valt för digitaliseringen. + +✅ Vi kan använda linjär interpolation för att föra värden till ett ändligt intervall (t.ex. från -20 till 20), och sedan konvertera talen till heltal genom att avrunda dem. Detta ger oss mindre kontroll över tillståndets storlek, särskilt om vi inte känner till exakta intervall för indata. Till exempel har 2 av 4 värden i vårt fall inga övre eller nedre gränser, vilket kan leda till ett oändligt antal tillstånd. -✅ Vi kan använda linjär interpolation för att föra värden till ett ändligt intervall (säg, från -20 till 20), och sedan konvertera siffror till heltal genom avrundning. Detta ger oss lite mindre kontroll över storleken på tillståndet, särskilt om vi inte känner till de exakta intervallen för ingångsvärdena. Till exempel, i vårt fall har 2 av 4 värden inga övre/nedre gränser för sina värden, vilket kan resultera i ett oändligt antal tillstånd. +I vårt exempel kommer vi att välja det andra tillvägagångssättet. Som du kan märka senare, trots odefinierade övre/nedre gränser, tar dessa värden sällan värden utanför vissa ändliga intervall, så tillstånd med extrema värden kommer att vara mycket sällsynta. -I vårt exempel kommer vi att använda det andra tillvägagångssättet. Som du kanske märker senare, trots obestämda övre/nedre gränser, tar dessa värden sällan värden utanför vissa ändliga intervall, vilket gör att tillstånd med extrema värden blir mycket sällsynta. - -1. Här är funktionen som tar observationen från vår modell och producerar en tuple med 4 heltalsvärden: (kodblock 6) +1. Här är funktionen som tar en observation från vår modell och producerar en tupel med 4 heltalsvärden: (kodblock 6) ```python def discretize(x): return tuple((x/np.array([0.25, 0.25, 0.01, 0.1])).astype(np.int)) ``` -1. Låt oss också utforska en annan diskretiseringsmetod med hjälp av intervall: (kodblock 7) +1. Låt oss också utforska en annan diskretiseringsmetod med bins: (kodblock 7) ```python def create_bins(i,num): @@ -126,17 +146,17 @@ I vårt exempel kommer vi att använda det andra tillvägagångssättet. Som du 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)] # intervall av värden för varje parameter + nbins = [20,20,10,10] # antal fack för varje 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. Låt oss nu köra en kort simulering och observera dessa diskreta miljövärden. Testa gärna både `discretize` och `discretize_bins` och se om det finns någon skillnad. +1. Låt oss nu köra en kort simulering och observera dessa diskreta miljövärden. Prova gärna både `discretize` och `discretize_bins` och se om det finns någon skillnad. - ✅ `discretize_bins` returnerar intervallnumret, som är 0-baserat. För värden på ingångsvariabeln runt 0 returnerar det numret från mitten av intervallet (10). I `discretize` brydde vi oss inte om intervallet för utgångsvärdena, vilket tillåter dem att vara negativa, så tillståndsvärdena är inte förskjutna och 0 motsvarar 0. (kodblock 8) + ✅ discretize_bins returnerar bin-numret, som är 0-baserat. Så för värden nära 0 returnerar det ett nummer från mitten av intervallet (10). I discretize brydde vi oss inte om utdata-värdenas intervall, vilket tillåter negativa värden, så tillståndsvärdena är inte förskjutna och 0 motsvarar 0. (kodblock 8) ```python env.reset() @@ -150,15 +170,15 @@ I vårt exempel kommer vi att använda det andra tillvägagångssättet. Som du env.close() ``` - ✅ Avkommentera raden som börjar med `env.render` om du vill se hur miljön exekveras. Annars kan du köra den i bakgrunden, vilket är snabbare. Vi kommer att använda denna "osynliga" exekvering under vår Q-Learning-process. + ✅ Avkommentera raden som börjar med env.render om du vill se hur miljön körs. Annars kan du köra den i bakgrunden, vilket är snabbare. Vi kommer att använda denna "osynliga" körning under vår Q-Learning-process. ## Q-Tabellens struktur -I vår föregående lektion var tillståndet ett enkelt par av siffror från 0 till 8, och det var därför bekvämt att representera Q-Tabellen med en numpy-tensor med formen 8x8x2. Om vi använder intervall-diskretisering är storleken på vår tillståndsvektor också känd, så vi kan använda samma tillvägagångssätt och representera tillståndet med en array med formen 20x20x10x10x2 (här är 2 dimensionen för handlingsutrymmet, och de första dimensionerna motsvarar antalet intervall vi har valt att använda för varje parameter i observationsutrymmet). +I vår föregående lektion var tillståndet ett enkelt par tal från 0 till 8, och det var därför praktiskt att representera Q-tabellen med en numpy-tensor med formen 8x8x2. Om vi använder bins-diskretisering är storleken på vår tillståndsvektor också känd, så vi kan använda samma metod och representera tillstånd som en array i formen 20x20x10x10x2 (här är 2 dimensionen för aktionsutrymmet, och de första dimensionerna motsvarar antalet bins vi valt att använda för varje parameter i observationsutrymmet). -Men ibland är de exakta dimensionerna för observationsutrymmet inte kända. I fallet med funktionen `discretize` kan vi aldrig vara säkra på att vårt tillstånd håller sig inom vissa gränser, eftersom vissa av de ursprungliga värdena inte är begränsade. Därför kommer vi att använda ett något annorlunda tillvägagångssätt och representera Q-Tabellen med en ordbok. +Men ibland är inte de exakta dimensionerna för observationsutrymmet kända. I fallet med `discretize`-funktionen kan vi aldrig vara säkra på att vårt tillstånd håller sig inom vissa gränser, eftersom några av de ursprungliga värdena är obundna. Därför kommer vi att använda en något annan metod och representera Q-tabellen som en ordlista. -1. Använd paret *(state,action)* som nyckel i ordboken, och värdet skulle motsvara värdet i Q-Tabellen. (kodblock 9) +1. Använd paret *(tillstånd, handling)* som nyckel i ordlistan, och värdet motsvarar värdet i Q-tabellen för denna post. (kodblock 9) ```python Q = {} @@ -168,38 +188,38 @@ Men ibland är de exakta dimensionerna för observationsutrymmet inte kända. I return [Q.get((state,a),0) for a in actions] ``` - Här definierar vi också en funktion `qvalues()`, som returnerar en lista med värden från Q-Tabellen för ett givet tillstånd som motsvarar alla möjliga handlingar. Om posten inte finns i Q-Tabellen kommer vi att returnera 0 som standard. + Här definierar vi också en funktion `qvalues()`, som returnerar en lista av Q-tabellvärden för ett givet tillstånd som motsvarar alla möjliga handlingar. Om posten inte finns i Q-tabellen returnerar vi 0 som standard. ## Låt oss börja med Q-Learning Nu är vi redo att lära Peter att balansera! -1. Först, låt oss ställa in några hyperparametrar: (kodblock 10) +1. Först sätter vi några hyperparametrar: (kodblock 10) ```python - # hyperparameters + # hyperparametrar alpha = 0.3 gamma = 0.9 epsilon = 0.90 ``` - Här är `alpha` **inlärningshastigheten** som definierar i vilken utsträckning vi ska justera de aktuella värdena i Q-Tabellen vid varje steg. I den föregående lektionen började vi med 1 och minskade sedan `alpha` till lägre värden under träningen. I detta exempel kommer vi att hålla den konstant för enkelhetens skull, och du kan experimentera med att justera `alpha`-värden senare. + Här är `alpha` **inlärningshastigheten** som definierar i vilken utsträckning vi ska justera aktuella Q-tabellvärden vid varje steg. I föregående lektion började vi med 1 och sänkte sedan `alpha` till lägre värden under träningen. I detta exempel håller vi den konstant för enkelhetens skull, och du kan experimentera med att justera `alpha`-värden senare. - `gamma` är **diskonteringsfaktorn** som visar i vilken utsträckning vi ska prioritera framtida belöningar över nuvarande belöningar. + `gamma` är **diskonteringsfaktorn** som visar i vilken grad vi ska prioritera framtida belöning över nuvarande belöning. - `epsilon` är **utforsknings-/utnyttjandefaktorn** som avgör om vi ska föredra utforskning framför utnyttjande eller vice versa. I vår algoritm kommer vi i `epsilon` procent av fallen att välja nästa handling enligt Q-Tabellens värden, och i resterande antal fall kommer vi att utföra en slumpmässig handling. Detta gör att vi kan utforska områden i sökutrymmet som vi aldrig har sett tidigare. + `epsilon` är **utforsknings-/utnyttjandefaktorn** som avgör om vi bör föredra utforskning eller utnyttjande. I vår algoritm kommer vi i `epsilon` procent av fallen att välja nästa handling enligt Q-tabellvärdena, och i återstående fall utför vi en slumpmässig handling. Detta möjliggör utforskning av områden i sökutrymmet vi aldrig tidigare sett. - ✅ När det gäller balansering - att välja slumpmässig handling (utforskning) skulle fungera som ett slumpmässigt slag i fel riktning, och stången skulle behöva lära sig att återfå balansen från dessa "misstag". + ✅ När det gäller balansen – att välja en slumpmässig handling (utforskning) fungerar som en slumpmässig knuff i fel riktning, och stången måste lära sig hur den ska återhämta balansen från dessa "misstag". ### Förbättra algoritmen -Vi kan också göra två förbättringar av vår algoritm från den föregående lektionen: - -- **Beräkna genomsnittlig kumulativ belöning** över ett antal simuleringar. Vi kommer att skriva ut framstegen var 5000:e iteration och vi kommer att ta genomsnittet av vår kumulativa belöning under den tidsperioden. Det betyder att om vi får mer än 195 poäng kan vi anse problemet löst, med ännu högre kvalitet än vad som krävs. +Vi kan också göra två förbättringar jämfört med vår algoritm från föregående lektion: -- **Beräkna maximal genomsnittlig kumulativ belöning**, `Qmax`, och vi kommer att lagra Q-Tabellen som motsvarar det resultatet. När du kör träningen kommer du att märka att ibland börjar det genomsnittliga kumulativa resultatet sjunka, och vi vill behålla värdena i Q-Tabellen som motsvarar den bästa modellen som observerats under träningen. +- **Beräkna genomsnittlig kumulativ belöning** över ett antal simuleringar. Vi skriver ut framsteg var 5000:e iteration och tar genomsnitt av vår kumulativa belöning över denna period. Det betyder att om vi får mer än 195 poäng kan vi betrakta problemet som löst, med högre kvalitet än krävt. + +- **Beräkna maximalt genomsnittligt kumulativt resultat**, `Qmax`, och spara den Q-tabell som motsvarar detta resultat. Under träningen kommer du märka att det genomsnittliga kumulativa resultatet ibland börjar sjunka, och vi vill behålla Q-tabellens värden som motsvarar den bästa modellen som observerats under träningen. -1. Samla alla kumulativa belöningar vid varje simulering i vektorn `rewards` för vidare plottning. (kodblock 11) +1. Samla alla kumulativa belöningar från varje simulering i vektorn `rewards` för senare visualisering. (kodblock 11) ```python def probs(v,eps=1e-4): @@ -214,15 +234,15 @@ Vi kan också göra två förbättringar av vår algoritm från den föregående obs = env.reset() done = False cum_reward=0 - # == do the simulation == + # == utför simuleringen == while not done: s = discretize(obs) if random.random() Qmax: @@ -240,25 +260,25 @@ Vi kan också göra två förbättringar av vår algoritm från den föregående cum_rewards=[] ``` -Vad du kan märka från dessa resultat: +Vad du kan notera från dessa resultat: -- **Nära vårt mål**. Vi är mycket nära att uppnå målet att få 195 kumulativa belöningar över 100+ på varandra följande körningar av simuleringen, eller så har vi faktiskt uppnått det! Även om vi får mindre siffror vet vi fortfarande inte, eftersom vi tar genomsnittet över 5000 körningar, och endast 100 körningar krävs enligt de formella kriterierna. +- **Nästan vid vårt mål**. Vi är mycket nära att uppnå målet att få 195 kumulativa belöningar över 100+ på varandra följande körningar av simuleringen, eller så har vi faktiskt redan uppnått det! Även om vi får lägre siffror vet vi inte säkert, eftersom vi tar genomsnitt över 5000 körningar och formellt krävs bara 100 körningar. + +- **Belöningen börjar sjunka**. Ibland börjar belöningen sjunka, vilket betyder att vi kan "förstöra" redan inlärda värden i Q-tabellen med sådana som försämrar situationen. -- **Belöningen börjar sjunka**. Ibland börjar belöningen sjunka, vilket betyder att vi kan "förstöra" redan inlärda värden i Q-Tabellen med de som gör situationen sämre. +Denna observation syns tydligare om vi plottar träningsframstegen. -Denna observation blir tydligare om vi plottar träningsframstegen. +## Plotting av träningsframsteg -## Plotta träningsframsteg - -Under träningen har vi samlat det kumulativa belöningsvärdet vid varje iteration i vektorn `rewards`. Så här ser det ut när vi plottar det mot iterationsnumret: +Under träningen har vi samlat värdet för kumulativ belöning vid varje iteration i vektorn `rewards`. Så här ser det ut när vi plottar det mot iterationsnumret: ```python plt.plot(rewards) ``` -![råa framsteg](../../../../8-Reinforcement/2-Gym/images/train_progress_raw.png) +![råa framsteg](../../../../translated_images/sv/train_progress_raw.2adfdf2daea09c59.webp) -Från denna graf är det inte möjligt att säga något, eftersom längden på träningssessionerna varierar kraftigt på grund av den stokastiska träningsprocessens natur. För att göra grafen mer meningsfull kan vi beräkna **rullande medelvärde** över en serie experiment, låt säga 100. Detta kan göras bekvämt med `np.convolve`: (kodblock 12) +Från denna graf är det svårt att dra slutsatser, eftersom längden på träningssessionerna varierar mycket på grund av den stokastiska träningens natur. För att göra grafen mer meningsfull kan vi beräkna **rullande medelvärde** över en serie experiment, låt säga 100. Detta kan göras smidigt med `np.convolve`: (kodblock 12) ```python def running_average(x,window): @@ -267,21 +287,24 @@ def running_average(x,window): plt.plot(running_average(rewards,100)) ``` -![träningsframsteg](../../../../8-Reinforcement/2-Gym/images/train_progress_runav.png) +![träningsframsteg](../../../../translated_images/sv/train_progress_runav.c71694a8fa9ab359.webp) ## Variera hyperparametrar -För att göra inlärningen mer stabil kan det vara vettigt att justera några av våra hyperparametrar under träningen. I synnerhet: +För att göra inlärningen mer stabilt är det meningsfullt att justera några hyperparametrar under träningen. Särskilt: + +- **För inlärningshastigheten**, `alpha`, kan vi börja med värden nära 1 och sedan sakta minska parametern. Med tiden får vi bra sannolikhetsvärden i Q-tabellen, så vi bör justera dem försiktigt och inte skriva över helt med nya värden. + +- **Öka epsilon**. Vi kanske vill successivt öka `epsilon` för att utforska mindre och utnyttja mer. Det är troligen meningsfullt att börja med ett lägre värde på `epsilon` och röra sig uppåt mot nästan 1. + +> **Uppgift 1**: Lek med hyperparameter-värdena och se om du kan uppnå högre kumulativ belöning. Får du över 195? -- **För inlärningshastigheten**, `alpha`, kan vi börja med värden nära 1 och sedan fortsätta att minska parametern. Med tiden kommer vi att få bra sannolikhetsvärden i Q-Tabellen, och därför bör vi justera dem försiktigt och inte helt skriva över med nya värden. -- **Öka epsilon**. Vi kanske vill öka `epsilon` långsamt för att utforska mindre och utnyttja mer. Det kan vara vettigt att börja med ett lägre värde för `epsilon` och sedan öka det till nästan 1. -> **Uppgift 1**: Testa att ändra hyperparametervärden och se om du kan uppnå högre kumulativ belöning. Kommer du över 195? -> **Uppgift 2**: För att formellt lösa problemet behöver du uppnå ett genomsnittligt belöningsvärde på 195 över 100 på varandra följande körningar. Mät detta under träningen och säkerställ att du formellt har löst problemet! +> **Uppgift 2**: För att formellt lösa problemet behöver du få 195 i genomsnittlig belöning över 100 på varandra följande körningar. Mät det under träningen och se till att du formellt har löst problemet! -## Se resultatet i praktiken +## Se resultatet i aktion -Det skulle vara intressant att faktiskt se hur den tränade modellen beter sig. Låt oss köra simuleringen och följa samma strategi för val av handlingar som under träningen, där vi samplar enligt sannolikhetsfördelningen i Q-Tabellen: (kodblock 13) +Det vore intressant att faktiskt se hur den tränade modellen beter sig. Låt oss köra simuleringen och följa samma strategi för val av åtgärd som under träningen, där vi sampelar enligt sannolikhetsfördelningen i Q-Tabellen: (kodblock 13) ```python obs = env.reset() @@ -297,15 +320,15 @@ env.close() Du bör se något liknande detta: -![en balanserande cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) +![en balanserande vagnstång](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) --- ## 🚀Utmaning -> **Uppgift 3**: Här använde vi den slutgiltiga versionen av Q-Tabellen, som kanske inte är den bästa. Kom ihåg att vi har sparat den bäst presterande Q-Tabellen i variabeln `Qbest`! Testa samma exempel med den bäst presterande Q-Tabellen genom att kopiera `Qbest` till `Q` och se om du märker någon skillnad. +> **Uppgift 3**: Här använde vi den slutgiltiga kopian av Q-Tabellen, vilket kanske inte är den bästa. Kom ihåg att vi har sparat den bästa presterande Q-Tabellen i variabeln `Qbest`! Testa samma exempel med den bästa presterande Q-Tabellen genom att kopiera `Qbest` över till `Q` och se om du märker någon skillnad. -> **Uppgift 4**: Här valde vi inte den bästa handlingen vid varje steg, utan samplade istället enligt motsvarande sannolikhetsfördelning. Skulle det vara mer logiskt att alltid välja den bästa handlingen, med det högsta värdet i Q-Tabellen? Detta kan göras genom att använda funktionen `np.argmax` för att hitta handlingsnumret som motsvarar det högsta värdet i Q-Tabellen. Implementera denna strategi och se om det förbättrar balansen. +> **Uppgift 4**: Här valde vi inte den bästa åtgärden vid varje steg, utan samplade snarare enligt motsvarande sannolikhetsfördelning. Skulle det inte vara mer meningsfullt att alltid välja den bästa åtgärden, med högst Q-Tabellvärde? Detta kan göras med hjälp av funktionen `np.argmax` för att ta reda på åtgärdsnumret som motsvarar det högsta Q-Tabellvärdet. Implementera denna strategi och se om det förbättrar balanseringen. ## [Quiz efter föreläsningen](https://ff-quizzes.netlify.app/en/ml/) @@ -314,11 +337,13 @@ Du bör se något liknande detta: ## Slutsats -Vi har nu lärt oss hur man tränar agenter för att uppnå bra resultat genom att bara tillhandahålla en belöningsfunktion som definierar önskat tillstånd i spelet, och genom att ge dem möjlighet att intelligent utforska sökutrymmet. Vi har framgångsrikt tillämpat Q-Learning-algoritmen i fall med diskreta och kontinuerliga miljöer, men med diskreta handlingar. +Vi har nu lärt oss hur man tränar agenter att uppnå bra resultat enbart genom att ge dem en belöningsfunktion som definierar det önskade tillståndet i spelet, och genom att ge dem en möjlighet att intelligent utforska sökutrymmet. Vi har framgångsrikt applicerat Q-Learning-algoritmen i fall med diskreta och kontinuerliga miljöer, men med diskreta handlingar. -Det är också viktigt att studera situationer där handlingsutrymmet också är kontinuerligt, och när observationsutrymmet är mycket mer komplext, som en bild från skärmen i ett Atari-spel. I dessa problem behöver vi ofta använda mer kraftfulla maskininlärningstekniker, såsom neurala nätverk, för att uppnå bra resultat. Dessa mer avancerade ämnen är föremål för vår kommande mer avancerade AI-kurs. +Det är viktigt att även studera situationer där handlingsutrymmet också är kontinuerligt, och när observationsutrymmet är mycket mer komplext, såsom bilden från en spelskärm för Atari. I de problemen behöver vi ofta använda kraftfullare maskininlärningstekniker, såsom neurala nätverk, för att uppnå bra resultat. Dessa mer avancerade ämnen är fokus i vår kommande mer avancerade AI-kurs. --- -**Ansvarsfriskrivning**: -Detta dokument har översatts med hjälp av AI-översättningstjänsten [Co-op Translator](https://github.com/Azure/co-op-translator). Även om vi strävar efter noggrannhet, bör det noteras att automatiserade översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på dess originalspråk bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell human översättning. Vi ansvarar inte för eventuella missförstånd eller feltolkningar som uppstår vid användning av denna översättning. \ No newline at end of file + +**Ansvarsfriskrivning**: +Detta dokument har översatts med hjälp av AI-översättningstjänsten [Co-op Translator](https://github.com/Azure/co-op-translator). Även om vi strävar efter noggrannhet, var vänlig notera att automatiska översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på dess modersmål bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för några missförstånd eller feltolkningar som uppstår till följd av användningen av denna översättning. + \ No newline at end of file diff --git a/translations/sw/.co-op-translator.json b/translations/sw/.co-op-translator.json index b478b5fcc..7f6293930 100644 --- a/translations/sw/.co-op-translator.json +++ b/translations/sw/.co-op-translator.json @@ -24,8 +24,8 @@ "language_code": "sw" }, "1-Introduction/3-fairness/README.md": { - "original_hash": "9a6b702d1437c0467e3c5c28d763dac2", - "translation_date": "2025-09-05T15:58:17+00:00", + "original_hash": "0f00d72169a0d37eecfd16d71e01700a", + "translation_date": "2026-07-14T04:16:35+00:00", "source_file": "1-Introduction/3-fairness/README.md", "language_code": "sw" }, @@ -54,8 +54,8 @@ "language_code": "sw" }, "2-Regression/1-Tools/README.md": { - "original_hash": "fa81d226c71d5af7a2cade31c1c92b88", - "translation_date": "2025-09-05T15:20:12+00:00", + "original_hash": "0b8635427b582d03ea4ab7089b93e505", + "translation_date": "2026-07-14T04:12:21+00:00", "source_file": "2-Regression/1-Tools/README.md", "language_code": "sw" }, @@ -72,8 +72,8 @@ "language_code": "sw" }, "2-Regression/2-Data/README.md": { - "original_hash": "7c077988328ebfe33b24d07945f16eca", - "translation_date": "2025-09-05T15:24:10+00:00", + "original_hash": "a58b2c4d16c6b122643391745ac15af6", + "translation_date": "2026-07-14T04:13:26+00:00", "source_file": "2-Regression/2-Data/README.md", "language_code": "sw" }, @@ -89,6 +89,12 @@ "source_file": "2-Regression/2-Data/solution/Julia/README.md", "language_code": "sw" }, + "2-Regression/2-Data/solution/notebook.ipynb": { + "original_hash": "96b95f8cf473481f2f371de8156f1571", + "translation_date": "2026-07-14T04:07:44+00:00", + "source_file": "2-Regression/2-Data/solution/notebook.ipynb", + "language_code": "sw" + }, "2-Regression/3-Linear/README.md": { "original_hash": "8b776e731c35b171d316d01d0e7b1369", "translation_date": "2026-04-26T19:00:30+00:00", @@ -457,7 +463,7 @@ }, "8-Reinforcement/1-QLearning/README.md": { "original_hash": "911efd5e595089000cb3c16fce1beab8", - "translation_date": "2025-09-05T16:37:04+00:00", + "translation_date": "2026-07-14T04:14:32+00:00", "source_file": "8-Reinforcement/1-QLearning/README.md", "language_code": "sw" }, @@ -481,7 +487,7 @@ }, "8-Reinforcement/2-Gym/README.md": { "original_hash": "107d5bb29da8a562e7ae72262d251a75", - "translation_date": "2025-09-05T16:44:35+00:00", + "translation_date": "2026-07-14T04:15:34+00:00", "source_file": "8-Reinforcement/2-Gym/README.md", "language_code": "sw" }, @@ -581,6 +587,19 @@ "source_file": "TROUBLESHOOTING.md", "language_code": "sw" }, + "__translation_failures__": { + "sketchnotes/LICENSE.md": { + "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f", + "source_file": "sketchnotes/LICENSE.md", + "language_code": "sw", + "failure_date": "2026-07-14T04:11:26+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:10+00:00", diff --git a/translations/sw/1-Introduction/3-fairness/README.md b/translations/sw/1-Introduction/3-fairness/README.md index c2f8808b2..d8668e72e 100644 --- a/translations/sw/1-Introduction/3-fairness/README.md +++ b/translations/sw/1-Introduction/3-fairness/README.md @@ -1,159 +1,167 @@ -# Kujenga Suluhisho za Kujifunza kwa Mashine kwa AI Inayowajibika - -![Muhtasari wa AI inayowajibika katika Kujifunza kwa Mashine kwenye sketchnote](../../../../sketchnotes/ml-fairness.png) +# Kujenga suluhisho za Machine Learning kwa AI yenye uwajibikaji + +![Muhtasari wa AI yenye uwajibikaji katika Machine Learning katika sketchnote](../../../../translated_images/sw/ml-fairness.ef296ebec6afc98a.webp) > Sketchnote na [Tomomi Imura](https://www.twitter.com/girlie_mac) -## [Maswali ya awali ya somo](https://ff-quizzes.netlify.app/en/ml/) - +## [Mtihani kabla ya somo](https://ff-quizzes.netlify.app/en/ml/) + ## Utangulizi -Katika mtaala huu, utaanza kugundua jinsi kujifunza kwa mashine kunavyoathiri maisha yetu ya kila siku. Hata sasa, mifumo na modeli zinahusika katika kazi za maamuzi ya kila siku, kama vile utambuzi wa afya, idhini ya mikopo, au kugundua udanganyifu. Kwa hivyo, ni muhimu kwamba modeli hizi zifanye kazi vizuri ili kutoa matokeo yanayoweza kuaminika. Kama programu yoyote, mifumo ya AI inaweza kukosa matarajio au kuwa na matokeo yasiyofaa. Ndiyo maana ni muhimu kuelewa na kuelezea tabia ya modeli ya AI. +Katika mtaala huu, utaanza kugundua jinsi machine learning inavyoweza na inavyokuwa na athari katika maisha yetu ya kila siku. Hata sasa, mifumo na modeli zinahusiana na kazi za uamuzi wa kila siku, kama vile uchunguzi wa matibabu, idhini za mikopo au kugundua udanganyifu. Kwa hivyo, ni muhimu kwamba modeli hizi zifanye kazi vizuri ili kutoa matokeo yanayoaminika. Kama yoyote programu ya kompyuta, mifumo ya AI itakosa matarajio au kuwa na matokeo yasiyotarajiwa. Ndiyo maana ni muhimu kuelewa na kueleza tabia ya modeli ya AI. -Fikiria kinachoweza kutokea wakati data unayotumia kujenga modeli hizi inakosa baadhi ya demografia, kama vile rangi, jinsia, mtazamo wa kisiasa, dini, au inawakilisha demografia hizo kwa uwiano usio sawa. Je, kuhusu pale ambapo matokeo ya modeli yanatafsiriwa kupendelea demografia fulani? Matokeo yake ni nini kwa programu? Zaidi ya hayo, nini kinatokea pale ambapo modeli ina matokeo mabaya na inadhuru watu? Nani anawajibika kwa tabia ya mifumo ya AI? Haya ni baadhi ya maswali tutakayochunguza katika mtaala huu. +Fikiria kinachoweza kutokea wakati data unayotumia kujenga modeli hizi haijumuishi baadhi ya makundi ya watu, kama vile rangi, jinsia, mtazamo wa kisiasa, dini, au kuwakilisha kwa njia isiyo sawa makundi hayo. Nini kuhusu wakati matokeo ya modeli yanatafsiriwa kupendelea baadhi ya makundi? Ni matokeo gani kwa programu hiyo? Zaidi ya hayo, nini kinatokea wakati modeli inatoa matokeo mabaya na yenye madhara kwa watu? Nani anawajibika kwa tabia ya mifumo ya AI? Hivyo ni baadhi ya maswali tutakayachunguza katika mtaala huu. -Katika somo hili, utaweza: +Katika somo hili, utajifunza: -- Kuongeza ufahamu wako kuhusu umuhimu wa haki katika kujifunza kwa mashine na madhara yanayohusiana na haki. -- Kujifunza kuhusu mazoezi ya kuchunguza hali zisizo za kawaida ili kuhakikisha uaminifu na usalama. -- Kupata uelewa wa hitaji la kuwawezesha watu wote kwa kubuni mifumo jumuishi. +- Kuongeza uelewa wako kuhusu umuhimu wa usawa katika machine learning na madhara yanayohusiana na usawa. +- Kufahamiana na mazoezi ya kuchunguza matukio ya kipekee na yasiyo ya kawaida ili kuhakikisha uaminifu na usalama. +- Kupata uelewa juu ya hitaji la kuwawezesha wote kwa kubuni mifumo jumuishi. - Kuchunguza umuhimu wa kulinda faragha na usalama wa data na watu. -- Kuelewa umuhimu wa mbinu ya "sanduku la kioo" kuelezea tabia ya modeli za AI. -- Kuwa makini kuhusu jinsi uwajibikaji ni muhimu katika kujenga uaminifu kwa mifumo ya AI. +- Kuona umuhimu wa kuwa na njia ya uwazi kueleza tabia za modeli za AI. +- Kuwa makini na jinsi uwajibikaji unavyohitajika kujenga imani katika mifumo ya AI. -## Mahitaji ya awali +## Sharti la awali -Kama mahitaji ya awali, tafadhali chukua Njia ya Kujifunza ya "Kanuni za AI Inayowajibika" na tazama video hapa chini kuhusu mada hii: +Kama sharti la awali, tafadhali chukua Njia ya Kujifunza "Kanuni za AI yenye Uwajibikaji" na tazama video hii hapa chini kuhusu mada hii: -Jifunze zaidi kuhusu AI Inayowajibika kwa kufuata [Njia ya Kujifunza](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) +Jifunze zaidi kuhusu AI yenye uwajibikaji kwa kufuata [Njia ya Kujifunza](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) -[![Mbinu ya Microsoft kwa AI Inayowajibika](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Mbinu ya Microsoft kwa AI Inayowajibika") +[![Njia ya Microsoft kwa AI yenye Uwajibikaji](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoft's Approach to Responsible AI") -> 🎥 Bofya picha hapo juu kwa video: Mbinu ya Microsoft kwa AI Inayowajibika +> 🎥 Bonyeza picha hapo juu kwa video: Njia ya Microsoft kwa AI yenye Uwajibikaji -## Haki +## Usawa -Mifumo ya AI inapaswa kuwachukulia watu wote kwa usawa na kuepuka kuathiri makundi yanayofanana kwa njia tofauti. Kwa mfano, mifumo ya AI inapotoa mwongozo kuhusu matibabu ya afya, maombi ya mikopo, au ajira, inapaswa kutoa mapendekezo sawa kwa kila mtu mwenye dalili, hali ya kifedha, au sifa za kitaaluma zinazofanana. Kila mmoja wetu kama binadamu hubeba upendeleo wa kurithi ambao huathiri maamuzi na vitendo vyetu. Upendeleo huu unaweza kuonekana katika data tunayotumia kufundisha mifumo ya AI. Mara nyingine, mabadiliko haya hutokea bila kukusudia. Mara nyingi ni vigumu kujua kwa makusudi wakati unaleta upendeleo katika data. +Mifumo ya AI inapaswa kuwatendea watu wote kwa usawa na kuepuka kuathiri makundi sawa ya watu kwa njia tofauti. Kwa mfano, wakati mifumo ya AI inatoa mwongozo kuhusu matibabu ya afya, maombi ya mkopo, au ajira, inapaswa kutoa mapendekezo sawa kwa wote wenye dalili zinazofanana, hali za kifedha, au sifa za kitaalamu. Kila mmoja wetu kama wanadamu tunabeba upendeleo uliozalishwa ambao huathiri maamuzi na vitendo vyetu. Upendeleo huu unaweza kuonekana katika data tunayotumia kufundisha mifumo ya AI. Udanganyifu kama huo unaweza kutokea bila kusudi. Mara nyingi ni vigumu kwa makusudi kujua unapoweka upendeleo katika data. -**“Kutokuwa na haki”** kunajumuisha athari mbaya, au “madhara”, kwa kundi la watu, kama vile wale wanaofafanuliwa kwa misingi ya rangi, jinsia, umri, au hali ya ulemavu. Madhara makuu yanayohusiana na haki yanaweza kuainishwa kama: +**“Kutokuwa na usawa”** kunajumuisha athari mbaya, au “madhara”, kwa kundi la watu, kama vile zile zinazotamkwa kwa mujibu wa rangi, jinsia, umri, au hali ya ulemavu. Madhara makuu yanayohusiana na usawa yanaweza kugawanywa kama: -- **Ugawaji**, ikiwa jinsia au kabila fulani linapendelewa zaidi ya jingine. -- **Ubora wa huduma**. Ikiwa unafundisha data kwa hali moja maalum lakini hali halisi ni ngumu zaidi, husababisha huduma isiyofanya kazi vizuri. Kwa mfano, kifaa cha kutambua sabuni ya mkono ambacho hakikuweza kutambua watu wenye ngozi nyeusi. [Rejea](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773) -- **Kudhalilisha**. Kukosoa na kuweka lebo isiyo ya haki kwa kitu au mtu. Kwa mfano, teknolojia ya kuweka lebo ya picha iliwahi kuweka lebo isiyo sahihi kwa picha za watu wenye ngozi nyeusi kama sokwe. -- **Uwiano wa juu au wa chini**. Wazo ni kwamba kundi fulani halionekani katika taaluma fulani, na huduma yoyote inayozidi kukuza hali hiyo inachangia madhara. -- **Kuweka mazoea ya kijinsia**. Kuunganisha kundi fulani na sifa zilizowekwa awali. Kwa mfano, mfumo wa kutafsiri lugha kati ya Kiingereza na Kituruki unaweza kuwa na makosa kutokana na maneno yenye uhusiano wa kijinsia. +- **Ugawaji**, kama jinsia au kabila fulani linapendelewa zaidi ya lingine. +- **Ubora wa huduma**. Ikiwa unafundisha data kwa hali moja maalum lakini hali halisi ni ngumu zaidi, inasababisha huduma duni. Kwa mfano, kipakia sabuni cha mkono ambacho hakikuweza kugundua watu wenye ngozi nyeusi. [Rejea](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773) +- **Kudhalilisha**. Kukosoa vibaya na kumtaja mtu au kitu vibaya. Kwa mfano, teknolojia ya kutamka picha ilikosea kutaja picha za watu wenye ngozi nyeusi kama gorila. +- **Uwawakilishi kupita kiasi au kupungukiwa**. Wazo ni kwamba kundi fulani halionekani katika taaluma fulani, na huduma au kazi yoyote inayojiendeleza hivyo inaongeza madhara. +- **Kuweka alama za kijadi**. Kuhusisha kundi fulani na sifa zilizowekwa kabla. Kwa mfano, mfumo wa tafsiri ya lugha kati ya Kiingereza na Kituruki unaweza kuwa na makosa kutokana na maneno yenye muktadha wa kijinsia. -![Tafsiri kwa Kituruki](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) -> Tafsiri kwa Kituruki +![tafiti kwa Kituruki](../../../../translated_images/sw/gender-bias-translate-en-tr.f185fd8822c2d437.webp) +> tafsiri kwa Kituruki -![Tafsiri kurudi kwa Kiingereza](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) -> Tafsiri kurudi kwa Kiingereza +![tafiti kurudi Kiingereza](../../../../translated_images/sw/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) +> tafsiri kurudi Kiingereza -Wakati wa kubuni na kujaribu mifumo ya AI, tunahitaji kuhakikisha kwamba AI ni ya haki na haijapangiliwa kufanya maamuzi yenye upendeleo au ubaguzi, ambayo binadamu pia wamezuiwa kufanya. Kuhakikisha haki katika AI na kujifunza kwa mashine bado ni changamoto ngumu ya kijamii na kiteknolojia. +Wakati wa kubuni na kujaribu mifumo ya AI, tunahitaji kuhakikisha kwamba AI ni ya haki na haijapangwa kufanya maamuzi ya upendeleo au ubaguzi, ambayo watu pia wanakamatwa kutofanya. Kuhakikisha usawa katika AI na machine learning bado ni changamoto tata ya kijamii na kiteknolojia. -### Uaminifu na Usalama +### Uaminifu na usalama -Ili kujenga uaminifu, mifumo ya AI inahitaji kuwa ya kuaminika, salama, na thabiti katika hali za kawaida na zisizotarajiwa. Ni muhimu kujua jinsi mifumo ya AI itakavyotenda katika hali mbalimbali, hasa pale ambapo kuna hali zisizo za kawaida. Wakati wa kujenga suluhisho za AI, kunapaswa kuwa na umakini mkubwa juu ya jinsi ya kushughulikia hali mbalimbali ambazo suluhisho za AI zitakutana nazo. Kwa mfano, gari linalojiendesha lenyewe linahitaji kuweka usalama wa watu kama kipaumbele cha juu. Kwa hivyo, AI inayotumia gari inahitaji kuzingatia hali zote zinazowezekana ambazo gari linaweza kukutana nazo kama usiku, dhoruba za radi au theluji, watoto wakikimbia barabarani, wanyama wa kipenzi, ujenzi wa barabara, n.k. Jinsi mfumo wa AI unavyoweza kushughulikia hali mbalimbali kwa uaminifu na usalama inaonyesha kiwango cha matarajio ambacho mwanasayansi wa data au msanidi wa AI alizingatia wakati wa kubuni au kujaribu mfumo. +Ili kujenga imani, mifumo ya AI inahitaji kuwa ya kuaminika, salama, na thabiti chini ya hali za kawaida na zisizotarajiwa. Ni muhimu kujua jinsi mifumo ya AI itakavyoitikia katika hali tofauti, hasa wanapokuwa wa kipekee. Wakati wa kujenga suluhisho za AI, kuna haja ya kuelekeza sana jinsi ya kushughulikia hali mbalimbali ambazo suluhisho za AI zitakutana nazo. Kwa mfano, gari linalojiendesha lenyewe linahitaji kuweka usalama wa watu kipaumbele cha juu. Kwa hivyo, AI inayoendesha gari hilo inahitaji kuzingatia hali zote zinazowezekana kama usiku, radi au mvua kali, watoto wakikimbia barabarani, wanyama wa kipenzi, ujenzi wa barabara n.k. Jinsi mfumo wa AI unavyoweza kushughulikia hali mbalimbali kwa uaminifu na usalama unaonesha kiwango cha matarajio ambayo mwanasayansi wa data au mtaalamu wa AI alichukulia wakati wa kubuni au kujaribu mfumo. -> [🎥 Bofya hapa kwa video: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl) +> [🎥 Bonyeza hapa kwa video: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl) -### Ujumuishi +### Ushirikiano -Mifumo ya AI inapaswa kubuniwa ili kushirikisha na kuwawezesha kila mtu. Wakati wa kubuni na kutekeleza mifumo ya AI, wanasayansi wa data na wasanidi wa AI hutambua na kushughulikia vizuizi vinavyoweza kuwapo katika mfumo ambavyo vinaweza kuwazuia watu bila kukusudia. Kwa mfano, kuna watu bilioni 1 wenye ulemavu duniani kote. Kwa maendeleo ya AI, wanaweza kufikia aina mbalimbali za taarifa na fursa kwa urahisi zaidi katika maisha yao ya kila siku. Kwa kushughulikia vizuizi, inatoa fursa za kuleta ubunifu na kuendeleza bidhaa za AI zenye uzoefu bora ambao unawanufaisha kila mtu. +Mifumo ya AI inapaswa kubuniwa kuwashirikisha na kuwawezesha wote. Wakati wa kubuni na kutekeleza mifumo ya AI, wanasayansi wa data na watengenezaji wa AI hutambua na kushughulikia vizingiti vinavyoweza kutojumuisha watu bila kusudi. Kwa mfano, kuna watu bilioni 1 wenye ulemavu duniani kote. Pamoja na maendeleo ya AI, wanaweza kupata taarifa na fursa mbalimbali kwa urahisi zaidi katika maisha yao ya kila siku. Kwa kushughulikia vizingiti hivi, kunaunda fursa za kubuni na kuendeleza bidhaa za AI zenye uzoefu bora zinazowafaidia wote. -> [🎥 Bofya hapa kwa video: ujumuishi katika AI](https://www.microsoft.com/videoplayer/embed/RE4vl9v) +> [🎥 Bonyeza hapa kwa video: ushirikishaji katika AI](https://www.microsoft.com/videoplayer/embed/RE4vl9v) -### Usalama na Faragha +### Usalama na faragha -Mifumo ya AI inapaswa kuwa salama na kuheshimu faragha ya watu. Watu wana imani ndogo katika mifumo inayoweka faragha yao, taarifa zao, au maisha yao hatarini. Wakati wa kufundisha modeli za kujifunza kwa mashine, tunategemea data ili kutoa matokeo bora. Katika kufanya hivyo, asili ya data na uadilifu wake lazima uzingatiwe. Kwa mfano, je, data ilitolewa na mtumiaji au ilipatikana hadharani? Kisha, wakati wa kufanya kazi na data, ni muhimu kuendeleza mifumo ya AI inayoweza kulinda taarifa za siri na kupinga mashambulizi. Kadri AI inavyozidi kuenea, kulinda faragha na kuhakikisha usalama wa taarifa muhimu za kibinafsi na za kibiashara kunazidi kuwa muhimu na changamoto. Masuala ya faragha na usalama wa data yanahitaji umakini wa karibu hasa kwa AI kwa sababu upatikanaji wa data ni muhimu kwa mifumo ya AI kufanya utabiri sahihi na maamuzi yanayojulishwa kuhusu watu. +Mifumo ya AI inapaswa kuwa salama na kuheshimu faragha ya watu. Watu hawana imani na mifumo inayoweka faragha yao, taarifa au maisha hatarini. Wakati wa kufundisha modeli za machine learning, tunategemea data kutoa matokeo bora. Kwa kufanya hivyo, asili ya data na uadilifu lazima uzingatiwe. Kwa mfano, je data ilitolewa na mtumiaji au ilikuwa inapatikana hadharani? Kisha, wakati wa kutumia data, ni muhimu kuendeleza mifumo ya AI inayoweza kulinda taarifa za siri na kuhimili mashambulio. Kadiri AI inavyozidi kutumika, kulinda faragha na kuhakikisha usalama wa taarifa muhimu za watu na biashara kunakuwa muhimu zaidi na changamoto kubwa. Masuala ya faragha na usalama wa data yanahitaji umakini wa karibu kwa AI kwa sababu upatikanaji wa data ni muhimu kwa mifumo ya AI kutoa utabiri sahihi na maamuzi ya taarifa kuhusu watu. -> [🎥 Bofya hapa kwa video: usalama katika AI](https://www.microsoft.com/videoplayer/embed/RE4voJF) +> [🎥 Bonyeza hapa kwa video: usalama katika AI](https://www.microsoft.com/videoplayer/embed/RE4voJF) -- Kama sekta, tumepiga hatua kubwa katika Faragha na Usalama, ikichochewa sana na kanuni kama GDPR (Kanuni ya Jumla ya Ulinzi wa Data). -- Hata hivyo, na mifumo ya AI tunapaswa kutambua mvutano kati ya hitaji la data zaidi ya kibinafsi ili kufanya mifumo kuwa ya kibinafsi na yenye ufanisi – na faragha. -- Kama ilivyokuwa na kuzaliwa kwa kompyuta zilizounganishwa na mtandao, tunaona pia ongezeko kubwa la idadi ya masuala ya usalama yanayohusiana na AI. -- Wakati huo huo, tumeona AI ikitumika kuboresha usalama. Kwa mfano, skana nyingi za kisasa za antivirus zinatumia AI heuristics leo. -- Tunahitaji kuhakikisha kwamba michakato yetu ya Sayansi ya Data inachanganyika kwa usawa na mazoea ya faragha na usalama ya hivi karibuni. +- Kama sekta tumefanya maendeleo makubwa katika Faragha na usalama, hasa kwa sheria kama GDPR (Regulation ya Ulinzi wa Data za Kawaida). +- Hata hivyo, kwa mifumo ya AI lazima tukiri mvutano kati ya hitaji la data binafsi zaidi kufanya mifumo kuwa za kibinafsi na zenye ufanisi – na faragha. +- Kama ilivyokuwa wakati wa kuzuka kwa kompyuta zilizo na mtandao, tunashuhudia ongezeko kubwa la masuala ya usalama yanayohusiana na AI. +- Wakati huo huo, tumeona AI ikitumiwa kuboresha usalama. Kwa mfano, wengi wa skana za kisasa za virusi vinaendeshwa na heuristics za AI leo. +- Tunahitaji kuhakikisha kuwa michakato yetu ya Sayansi ya Data inaendana vyema na mbinu mpya za faragha na usalama. -### Uwazi -Mifumo ya AI inapaswa kueleweka. Sehemu muhimu ya uwazi ni kuelezea tabia ya mifumo ya AI na vipengele vyake. Kuboresha uelewa wa mifumo ya AI kunahitaji wadau kuelewa jinsi na kwa nini mifumo hiyo inavyofanya kazi ili waweze kutambua masuala ya utendaji, wasiwasi wa usalama na faragha, upendeleo, mazoea ya kutengwa, au matokeo yasiyotarajiwa. Tunaamini pia kwamba wale wanaotumia mifumo ya AI wanapaswa kuwa waaminifu na wazi kuhusu wakati, kwa nini, na jinsi wanavyochagua kuitumia. Pamoja na mapungufu ya mifumo wanayotumia. Kwa mfano, ikiwa benki inatumia mfumo wa AI kusaidia maamuzi ya mikopo ya watumiaji, ni muhimu kuchunguza matokeo na kuelewa ni data gani inayoshawishi mapendekezo ya mfumo. Serikali zinaanza kudhibiti AI katika sekta mbalimbali, kwa hivyo wanasayansi wa data na mashirika lazima waeleze ikiwa mfumo wa AI unakidhi mahitaji ya udhibiti, hasa pale ambapo kuna matokeo yasiyofaa. +### Uwazi +Mifumo ya AI inapaswa kueleweka. Sehemu muhimu ya uwazi ni kueleza tabia za mifumo ya AI na viunganishi vyake. Kuboresha uelewa wa mifumo ya AI kunahitaji wadau kuelewa jinsi na kwa nini inafanya kazi ili waweze kubaini matatizo ya utendaji, masuala ya usalama na faragha, upendeleo, mbinu za kuwatenga, au matokeo yasiyotakikana. Pia tunaamini kwamba wale wanaotumia mifumo ya AI wanapaswa kuwa waaminifu na waeleze wazi wakati, kwa nini, na jinsi wanavyotaka kuitumia. Kama vile vikwazo vya mifumo wanazotumia. Kwa mfano, ikiwa benki inatumia mfumo wa AI kusaidia maamuzi ya mikopo kwa wateja, ni muhimu kuchunguza matokeo na kuelewa data gani inayoathiri mapendekezo ya mfumo. Serikali zinaanza kuweka sheria za AI katika sekta mbalimbali, hivyo wanasayansi wa data na taasisi wanapaswa kueleza kama mfumo wa AI unakidhi masharti ya kisheria, hasa wakati kuna matokeo mabaya. -> [🎥 Bofya hapa kwa video: uwazi katika AI](https://www.microsoft.com/videoplayer/embed/RE4voJF) +> [🎥 Bonyeza hapa kwa video: uwazi katika AI](https://www.microsoft.com/videoplayer/embed/RE4voJF) - Kwa sababu mifumo ya AI ni ngumu sana, ni vigumu kuelewa jinsi inavyofanya kazi na kutafsiri matokeo. - Ukosefu huu wa uelewa huathiri jinsi mifumo hii inavyosimamiwa, kuendeshwa, na kuandikwa. -- Ukosefu huu wa uelewa zaidi huathiri maamuzi yanayofanywa kwa kutumia matokeo ambayo mifumo hii inazalisha. +- Ukosefu huu wa uelewa hasa huathiri maamuzi yanayofanywa kwa kutumia matokeo yanayotolewa na mifumo hii. ### Uwajibikaji + +Watu wanaobuni na kuanzisha mifumo ya AI lazima wawe na uwajibikaji kwa jinsi mifumo yao inavyofanya kazi. Hitaji la uwajibikaji ni muhimu hasa kwa teknolojia nyeti kama utambuzi wa uso. Hivi karibuni, kumekuwa na ongezeko la mahitaji ya teknolojia ya utambuzi wa uso, hasa kutoka kwa mashirika ya utekelezaji wa sheria yanayoona uwezo wa teknolojia hiyo katika matumizi kama vile kutafuta watoto waliopotea. Hata hivyo, teknolojia hizi zinaweza kutumiwa na serikali kuweka hatarini uhuru wa msingi wa raia kwa mfano, kwa kuruhusu ufuatiliaji wa watu binafsi kwa muda mrefu. Hivyo, wanasayansi wa data na taasisi wanahitaji kuwajibika kwa jinsi mfumo wao wa AI unavyoathiri watu binafsi au jamii. -Watu wanaobuni na kupeleka mifumo ya AI lazima wawajibike kwa jinsi mifumo yao inavyofanya kazi. Hitaji la uwajibikaji ni muhimu hasa kwa teknolojia nyeti kama utambuzi wa uso. Hivi karibuni, kumekuwa na mahitaji yanayoongezeka ya teknolojia ya utambuzi wa uso, hasa kutoka kwa mashirika ya utekelezaji wa sheria yanayoona uwezo wa teknolojia hiyo katika matumizi kama vile kutafuta watoto waliopotea. Hata hivyo, teknolojia hizi zinaweza kutumiwa na serikali kuweka uhuru wa msingi wa raia wao hatarini kwa, kwa mfano, kuwezesha ufuatiliaji wa mara kwa mara wa watu fulani. Kwa hivyo, wanasayansi wa data na mashirika yanahitaji kuwajibika kwa jinsi mfumo wao wa AI unavyoathiri watu binafsi au jamii. +[![Mtafiti Mkuu wa AI Anwambia Kuhusu Ufuatiliaji Mkubwa Kupitia Utambuzi wa Uso](../../../../translated_images/sw/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft's Approach to Responsible AI") -[![Mtafiti Mkuu wa AI Anaonya kuhusu Ufuatiliaji wa Misa Kupitia Utambuzi wa Uso](../../../../1-Introduction/3-fairness/images/accountability.png)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Mbinu ya Microsoft kwa AI Inayowajibika") +> 🎥 Bonyeza picha hapo juu kwa video: Onyo Kuhusu Ufuatiliaji Mkubwa Kupitia Utambuzi wa Uso -> 🎥 Bofya picha hapo juu kwa video: Onyo kuhusu Ufuatiliaji wa Misa Kupitia Utambuzi wa Uso +Mwisho, moja ya maswali makubwa kwa kizazi chetu, kama kizazi cha kwanza kinachowaleta AI kwa jamii, ni jinsi ya kuhakikisha kuwa kompyuta zitabaki kuwa na uwajibikaji kwa watu na jinsi ya kuhakikisha watu wanaobuni kompyuta wataendelea kuwa na uwajibikaji kwa kila mtu mwingine. -Hatimaye, moja ya maswali makubwa kwa kizazi chetu, kama kizazi cha kwanza kinacholeta AI kwa jamii, ni jinsi ya kuhakikisha kwamba kompyuta zitabaki kuwajibika kwa watu na jinsi ya kuhakikisha kwamba watu wanaobuni kompyuta wanabaki kuwajibika kwa kila mtu mwingine. +## Tathmini ya athari -## Tathmini ya Athari +Kabla ya kufundisha modeli ya machine learning, ni muhimu kufanya tathmini ya athari ili kuelewa madhumuni ya mfumo wa AI; matumizi yaliyokusudiwa; mahali utakapowekwa; na nani atakayeshirikiana na mfumo. Hizi ni msaada kwa mkaguzi au mtathmini wa mfumo kujua mambo ya kuzingatia wakati wa kubaini hatari zinazowezekana na matokeo yanayotarajiwa. -Kabla ya kufundisha modeli ya kujifunza kwa mashine, ni muhimu kufanya tathmini ya athari ili kuelewa madhumuni ya mfumo wa AI; matumizi yaliyokusudiwa; mahali itakapotumika; na nani atakayeingiliana na mfumo. Hizi ni muhimu kwa mthibitishaji au mjaribu wa mfumo kujua ni mambo gani ya kuzingatia wakati wa kutambua hatari zinazowezekana na matokeo yanayotarajiwa. +Hapa kuna maeneo ya kuzingatia wakati wa kufanya tathmini ya athari: -Sehemu zifuatazo ni za kuzingatia wakati wa kufanya tathmini ya athari: +* **Athari mbaya kwa watu binafsi**. Kuwa na ufahamu wa vikwazo au mahitaji, matumizi yasiyoidhinishwa au vikwazo vinavyoathiri utendaji wa mfumo ni muhimu kuhakikisha mfumo hautumiki kwa njia inayoweza kuua watu binafsi. +* **Mahitaji ya data**. Kupata uelewa wa jinsi na wapi mfumo utatumia data husaidia wakaguzi kuchunguza mahitaji yoyote ya data ambayo unapaswa kuzingatia (mfano, kanuni za GDPR au HIPAA). Zaidi ya hayo, angalia kama chanzo au kiasi cha data ni cha kutosha kwa mafunzo. +* **Muhtasari wa athari**. Kusanya orodha ya madhara yanayoweza kutokea kutokana na matumizi ya mfumo. Katika mzunguko wa ML, rudi kuona kama masuala yaliyobainishwa yamepunguzwa au kushughulikiwa. +* **Malengo yanayohusika** kwa kila kanuni kuu sita. Tathmini kama malengo ya kila kanuni yametimizwa na kama kuna mapengo. -* **Athari mbaya kwa watu binafsi**. Kuwa na ufahamu wa vizuizi au mahitaji yoyote, matumizi yasiyoungwa mkono au mapungufu yoyote yanayojulikana yanayozuia utendaji wa mfumo ni muhimu ili kuhakikisha kwamba mfumo hautumiki kwa njia inayoweza kudhuru watu binafsi. -* **Mahitaji ya data**. Kupata uelewa wa jinsi na wapi mfumo utatumia data husaidia wathibitishaji kuchunguza mahitaji yoyote ya data unayohitaji kuzingatia (mfano, kanuni za GDPR au HIPPA). Zaidi ya hayo, chunguza ikiwa chanzo au wingi wa data ni muhimu kwa mafunzo. -* **Muhtasari wa athari**. Kusanya orodha ya madhara yanayoweza kutokea kutokana na matumizi ya mfumo. Katika mzunguko wa maisha wa ML, hakiki ikiwa masuala yaliyotambuliwa yamepunguzwa au kushughulikiwa. -* **Malengo yanayofaa** kwa kila moja ya kanuni sita za msingi. Tathmini ikiwa malengo kutoka kwa kila kanuni yametimizwa na ikiwa kuna mapungufu yoyote. -## Kutatua Hitilafu kwa AI Inayowajibika +## Kutengeneza makosa na AI yenye uwajibikaji -Kama vile kutatua hitilafu katika programu, kutatua hitilafu katika mfumo wa AI ni mchakato muhimu wa kutambua na kutatua masuala katika mfumo. Kuna mambo mengi yanayoweza kuathiri modeli kutofanya kazi kama inavyotarajiwa au kwa uwajibikaji. Vipimo vingi vya utendaji wa modeli vya jadi ni jumla za kiasi za utendaji wa modeli, ambazo hazitoshi kuchambua jinsi modeli inavyokiuka kanuni za AI inayowajibika. Zaidi ya hayo, modeli ya kujifunza kwa mashine ni "sanduku jeusi" ambalo hufanya iwe vigumu kuelewa kinachosababisha matokeo yake au kutoa maelezo pale inapokosea. Baadaye katika kozi hii, tutajifunza jinsi ya kutumia dashibodi ya AI Inayowajibika kusaidia kutatua hitilafu katika mifumo ya AI. Dashibodi hutoa zana ya jumla kwa wanasayansi wa data na wasanidi wa AI kufanya: +Kama vile kutengeneza makosa katika programu ya kompyuta, kutengeneza makosa katika mfumo wa AI ni mchakato unaohitajika wa kubaini na kutatua matatizo katika mfumo. Kuna sababu nyingi zinazoweza kufanya modeli isifanye kazi kama inavyotarajiwa au kwa uwajibikaji. Viwango vya utendaji vya modeli vya kawaida ni jumla za kiasi cha utendaji wa modeli, ambazo hazitoshi kuchambua jinsi modeli inavyoenda kinyume na kanuni za AI yenye uwajibikaji. Zaidi ya hayo, modeli ya machine learning ni boksi jeusi ambalo linafanya iwe vigumu kuelewa kinachosababisha matokeo yake au kutoa maelezo anapokosea. Baadaye katika kozi hii, tutaelewa jinsi ya kutumia dashibodi ya AI yenye Uwajibikaji kusaidia kutengeneza makosa katika mifumo ya AI. Dashibodi hutoa zana ya jumla kwa wanasayansi wa data na watengenezaji wa AI kufanya: -* **Uchambuzi wa makosa**. Kutambua usambazaji wa makosa ya modeli ambayo yanaweza kuathiri haki au uaminifu wa mfumo. -* **Muhtasari wa modeli**. Kugundua mahali kuna tofauti katika utendaji wa modeli katika vikundi vya data. -* **Uchambuzi wa data**. Kuelewa usambazaji wa data na kutambua upendeleo wowote unaoweza kuwapo katika data ambao unaweza kusababisha masuala ya haki, ujumuishi, na uaminifu. -* **Ufafanuzi wa modeli**. Kuelewa kinachoshawishi au kuathiri utabiri wa modeli. Hii husaidia kuelezea tabia ya modeli, ambayo ni muhimu kwa uwazi na uwajibikaji. +* **Uchambuzi wa makosa**. Kubaini mgawanyiko wa makosa wa modeli ambao unaweza kuathiri usawa au uaminifu wa mfumo. +* **Muhtasari wa modeli**. Kugundua ambapo kuna tofauti katika utendaji wa modeli kati ya makundi ya data. +* **Uchambuzi wa data**. Kuelewa mgawanyiko wa data na kubaini upendeleo wowote unaoweza kusababisha matatizo ya usawa, ushirikishaji, na uaminifu. +* **Ufafanuzi wa modeli**. Kuelewa kinacho athiri au kuathiri utabiri wa modeli. Hii husaidia kueleza tabia ya modeli, ambayo ni muhimu kwa uwazi na uwajibikaji. -## 🚀 Changamoto -Ili kuzuia madhara yasiletwe mwanzoni, tunapaswa: +## 🚀 Changamoto + +Ili kuzuia madhara kutokea, tunapaswa: - kuwa na utofauti wa asili na mitazamo miongoni mwa watu wanaofanya kazi kwenye mifumo - kuwekeza katika seti za data zinazowakilisha utofauti wa jamii yetu -- kuendeleza mbinu bora katika mzunguko wa maisha wa kujifunza kwa mashine kwa kugundua na kurekebisha AI inayowajibika pale inapojitokeza +- kuendeleza mbinu bora katika mzunguko wa machine learning za kugundua na kurekebisha AI yenye uwajibikaji inapojitokeza + +Fikiria hali halisi ambapo kutokuwa na uaminifu kwa modeli kunadhihirika katika ujenzi na matumizi ya modeli. Ni nini kingine tunapaswa kuzingatia? -Fikiria hali halisi ambapo kutokuwa na uaminifu wa modeli kunadhihirika katika ujenzi na matumizi ya modeli. Nini kingine tunapaswa kuzingatia? +## [Mtihani baada ya somo](https://ff-quizzes.netlify.app/en/ml/) -## [Maswali ya baada ya somo](https://ff-quizzes.netlify.app/en/ml/) +## Mapitio & Kujifunza binafsi + -## Mapit -Tazama warsha hii ili kuchunguza kwa undani mada hizi: +Katika somo hili, umejifunza baadhi ya mambo ya msingi kuhusu dhana za haki na kutohaki katika kujifunza kwa mashine. + +Tazama warsha hii ili kuzama zaidi kwenye mada: -- Katika harakati za AI yenye uwajibikaji: Kuweka kanuni katika vitendo na Besmira Nushi, Mehrnoosh Sameki, na Amit Sharma +- Katika kujitahidi kwa AI yenye uwajibikaji: Kuleta kanuni katika vitendo na Besmira Nushi, Mehrnoosh Sameki na Amit Sharma -[![Responsible AI Toolbox: Mfumo wa chanzo huria kwa ajili ya kujenga AI yenye uwajibikaji](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: Mfumo wa chanzo huria kwa ajili ya kujenga AI yenye uwajibikaji") +[![Sanduku la Zana la AI Yenye Uwajibikaji: Mwongozo wa chanzo huru wa kujenga AI yenye uwajibikaji](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "Sanduku la Zana la RAI: Mwongozo wa chanzo huru wa kujenga AI yenye uwajibikaji") -> 🎥 Bonyeza picha hapo juu kwa video: RAI Toolbox: Mfumo wa chanzo huria kwa ajili ya kujenga AI yenye uwajibikaji na Besmira Nushi, Mehrnoosh Sameki, na Amit Sharma +> 🎥 Bonyeza picha hapo juu kwa video: Sanduku la Zana la RAI: Mwongozo wa chanzo huru wa kujenga AI yenye uwajibikaji na Besmira Nushi, Mehrnoosh Sameki, na Amit Sharma -Pia, soma: +Pia, soma: -- Kituo cha rasilimali cha RAI cha Microsoft: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) +- Kituo cha rasilimali cha RAI cha Microsoft: [Rasilimali za AI Yenye Uwajibikaji – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) -- Kikundi cha utafiti cha FATE cha Microsoft: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/) +- Kundi la utafiti la FATE la Microsoft: [FATE: Haki, Uwajibikaji, Uwazi, na Maadili katika AI - Utafiti wa Microsoft](https://www.microsoft.com/research/theme/fate/) -RAI Toolbox: +Sanduku la Zana la RAI: -- [Hifadhi ya GitHub ya Responsible AI Toolbox](https://github.com/microsoft/responsible-ai-toolbox) +- [Hifadhidata ya GitHub ya Sanduku la Zana la AI Yenye Uwajibikaji](https://github.com/microsoft/responsible-ai-toolbox) -Soma kuhusu zana za Azure Machine Learning kuhakikisha usawa: +Soma kuhusu zana za Azure Machine Learning kuhakikisha haki: -- [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) -## Kazi +## Kazi ya nyumbani -[Chunguza RAI Toolbox](assignment.md) +[Chunguza Sanduku la Zana la RAI](assignment.md) --- -**Kanusho**: -Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file + +**Kionyozo**: +Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kupata usahihi, tafadhali fahamu kwamba tafsiri za kiotomatiki zinaweza kuwa na makosa au upungufu wa usahihi. Hati ya asili katika lugha yake halisi inapaswa kuchukuliwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu inayofanywa na binadamu inapendekezwa. Hatutojibu kwa kuelewa vibaya au tafsiri potofu zinazotokea kutokana na matumizi ya tafsiri hii. + \ No newline at end of file diff --git a/translations/sw/2-Regression/1-Tools/README.md b/translations/sw/2-Regression/1-Tools/README.md index b7a893651..d8000629a 100644 --- a/translations/sw/2-Regression/1-Tools/README.md +++ b/translations/sw/2-Regression/1-Tools/README.md @@ -1,120 +1,121 @@ -# Anza na Python na Scikit-learn kwa mifano ya regression +# Anza na Python na Scikit-learn kwa mifano ya urekebishaji -![Muhtasari wa regressions katika sketchnote](../../../../sketchnotes/ml-regression.png) +![Muhtasari wa urekebishaji katika sketchnote](../../../../translated_images/sw/ml-regression.4e4f70e3b3ed446e.webp) > Sketchnote na [Tomomi Imura](https://www.twitter.com/girlie_mac) -## [Jaribio la awali la somo](https://ff-quizzes.netlify.app/en/ml/) +## [Mtihani wa kabla ya somo](https://ff-quizzes.netlify.app/en/ml/) > ### [Somo hili linapatikana kwa R!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html) ## Utangulizi -Katika masomo haya manne, utajifunza jinsi ya kujenga mifano ya regression. Tutajadili matumizi yake hivi karibuni. Lakini kabla ya kuanza, hakikisha una zana sahihi za kuanza mchakato! +Katika masomo manne haya, utagundua jinsi ya kujenga mifano ya urekebishaji. Tutajadili kwa nini hizi ni muhimu hivi karibuni. Lakini kabla hujafanya kitu chochote, hakikisha una vifaa sahihi tayari kuanza mchakato! Katika somo hili, utajifunza jinsi ya: -- Kuseti kompyuta yako kwa kazi za kujifunza mashine za ndani. -- Kufanya kazi na Jupyter notebooks. -- Kutumia Scikit-learn, ikiwa ni pamoja na usakinishaji. -- Kuchunguza regression ya mstari kupitia zoezi la vitendo. +- Kusanidi kompyuta yako kwa kazi za kujifunza kwa mashine za ndani. +- Kufanya kazi na Jupyter Notebooks. +- Kutumia Scikit-learn, ikijumuisha usakinishaji. +- Kuchunguza urekebishaji wa mstari kwa zoezi la vitendo. ## Usakinishaji na usanidi -[![ML kwa wanaoanza - Sanidi zana zako tayari kujenga mifano ya Kujifunza Mashine](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML kwa wanaoanza - Sanidi zana zako tayari kujenga mifano ya Kujifunza Mashine") +[![ML kwa wanaoanzisha - Weka vifaa vyako tayari kujenga modeli za Kujifunza kwa Mashine](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML kwa wanaoanzisha -Weka vifaa vyako tayari kujenga modeli za Kujifunza kwa Mashine") -> 🎥 Bonyeza picha hapo juu kwa video fupi ya jinsi ya kusanidi kompyuta yako kwa ML. +> 🎥 Bonyeza picha hapo juu kwa video fupi inayofundisha jinsi ya kusanidi kompyuta yako kwa ML. -1. **Sakinisha Python**. Hakikisha kuwa [Python](https://www.python.org/downloads/) imewekwa kwenye kompyuta yako. Utatumia Python kwa kazi nyingi za sayansi ya data na kujifunza mashine. Mfumo mwingi wa kompyuta tayari una usakinishaji wa Python. Kuna [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) zinazopatikana pia, ili kurahisisha usanidi kwa watumiaji wengine. +1. **Sakinisha Python**. Hakikisha kwamba [Python](https://www.python.org/downloads/) imewekwa kwenye kompyuta yako. Utaweza kutumia Python kwa kazi nyingi za sayansi ya data na kujifunza kwa mashine. Mifumo mingi ya kompyuta tayari ina usakinishaji wa Python. Pia kuna [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) muhimu zinazopatikana kusaidia baadhi ya watumiaji kwa urahisi wa usanidi. - Baadhi ya matumizi ya Python yanahitaji toleo moja la programu, wakati mengine yanahitaji toleo tofauti. Kwa sababu hii, ni muhimu kufanya kazi ndani ya [mazingira ya kawaida](https://docs.python.org/3/library/venv.html). + Matumizi kadhaa ya Python, hata hivyo, yanahitaji toleo moja la programu, wakati mengine yanahitaji toleo tofauti. Kwa sababu hii, ni muhimu kufanya kazi ndani ya [mazingira ya virtual](https://docs.python.org/3/library/venv.html). -2. **Sakinisha Visual Studio Code**. Hakikisha kuwa Visual Studio Code imewekwa kwenye kompyuta yako. Fuata maelekezo haya ili [kusakinisha Visual Studio Code](https://code.visualstudio.com/) kwa usakinishaji wa msingi. Utatumia Python ndani ya Visual Studio Code katika kozi hii, kwa hivyo unaweza kutaka kujifunza jinsi ya [kusanidi Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) kwa maendeleo ya Python. +2. **Sakinisha Visual Studio Code**. Hakikisha una Visual Studio Code imewekwa kwenye kompyuta yako. Fuata maelekezo haya ya [kusakinisha Visual Studio Code](https://code.visualstudio.com/) kwa usakinishaji wa msingi. Utatumia Python katika Visual Studio Code katika kozi hii, hivyo huenda utataka kujifunza jinsi ya [kusanidi Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) kwa maendeleo ya Python. - > Jifunze Python kwa kupitia mkusanyiko huu wa [moduli za kujifunza](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) + > Jifunze vizuri Python kwa kufanya kazi kupitia mkusanyiko wa [moduli za Kujifunza](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) > - > [![Sanidi Python na Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Sanidi Python na Visual Studio Code") + > [![Weka Python na Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Weka Python na Visual Studio Code") > > 🎥 Bonyeza picha hapo juu kwa video: kutumia Python ndani ya VS Code. -3. **Sakinisha Scikit-learn**, kwa kufuata [maelekezo haya](https://scikit-learn.org/stable/install.html). Kwa kuwa unahitaji kuhakikisha unatumia Python 3, inashauriwa utumie mazingira ya kawaida. Kumbuka, ikiwa unasakinisha maktaba hii kwenye Mac ya M1, kuna maelekezo maalum kwenye ukurasa uliohusishwa hapo juu. +3. **Sakinisha Scikit-learn**, kwa kufuata [maelekezo haya](https://scikit-learn.org/stable/install.html). Kwa sababu unahitaji kuhakikisha unatumia Python 3, inashauriwa kutumia mazingira ya virtual. Kumbuka, kama unasakinisha maktaba hii kwenye M1 Mac, kuna maelekezo maalum kwenye ukurasa uliounganishwa hapo juu. -4. **Sakinisha Jupyter Notebook**. Utahitaji [kusakinisha kifurushi cha Jupyter](https://pypi.org/project/jupyter/). +1. **Sakinisha Jupyter Notebook**. Utahitaji [kusakinisha kifurushi cha Jupyter](https://pypi.org/project/jupyter/). ## Mazingira yako ya kuandika ML -Utatumia **notebooks** kuendeleza msimbo wako wa Python na kuunda mifano ya kujifunza mashine. Aina hii ya faili ni zana ya kawaida kwa wanasayansi wa data, na zinaweza kutambulika kwa kiambishi au kiendelezi `.ipynb`. +Utatumia **notebooks** kuendeleza msimbo wako wa Python na kuunda mifano ya kujifunza kwa mashine. Aina hii ya faili ni chombo cha kawaida kwa wanasayansi wa data, na zinaweza kutambuliwa kwa kiambishi kibadilisha `.ipynb`. -Notebooks ni mazingira ya maingiliano yanayomruhusu msanidi programu kuandika msimbo na kuongeza maelezo na kuandika nyaraka kuzunguka msimbo, jambo ambalo ni muhimu sana kwa miradi ya majaribio au utafiti. +Notebooks ni mazingira ya mwingiliano yanayomruhusu mendelezaji kufanya msimbo na kuongeza maelezo na kuandika nyaraka kuhusu msimbo ambayo ni msaada mkubwa kwa miradi ya majaribio au utafiti. -[![ML kwa wanaoanza - Sanidi Jupyter Notebooks kuanza kujenga mifano ya regression](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML kwa wanaoanza - Sanidi Jupyter Notebooks kuanza kujenga mifano ya regression") +[![ML kwa wanaoanzisha - Weka Jupyter Notebooks kuanza kujenga mifano ya urekebishaji](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML kwa wanaoanzisha - Weka Jupyter Notebooks kuanza kujenga mifano ya urekebishaji") -> 🎥 Bonyeza picha hapo juu kwa video fupi ya kufanya zoezi hili. +> 🎥 Bonyeza picha hapo juu kwa video fupi inayofundisha zoezi hili. -### Zoezi - kufanya kazi na notebook +### Zoezi - fanya kazi na daftari Katika folda hii, utapata faili _notebook.ipynb_. -1. Fungua _notebook.ipynb_ ndani ya Visual Studio Code. +1. Fungua _notebook.ipynb_ katika Visual Studio Code. - Seva ya Jupyter itaanza na Python 3+ imeanzishwa. Utapata maeneo ya notebook ambayo yanaweza `kuendeshwa`, vipande vya msimbo. Unaweza kuendesha kipande cha msimbo kwa kuchagua ikoni inayofanana na kitufe cha kucheza. + Seva ya Jupyter itaanza na Python 3+ imeanzishwa. Utapata maeneo ya daftari inayoweza `kuwaendeshwa`, sehemu za msimbo. Unaweza kuendesha kipande cha msimbo, kwa kuchagua ikoni inayofanana na kitufe cha kucheza. -2. Chagua ikoni ya `md` na ongeza kidogo cha markdown, na maandishi yafuatayo **# Karibu kwenye notebook yako**. +1. Chagua ikoni `md` na ongeza kidogo markdown, na maandishi yafuatayo **# Karibu kwenye daftari lako**. Kisha, ongeza msimbo wa Python. -3. Andika **print('hello notebook')** kwenye kipande cha msimbo. -4. Chagua mshale ili kuendesha msimbo. +1. Andika **print('hello notebook')** katika kipande cha msimbo. +1. Chagua mshale kuendesha msimbo. - Unapaswa kuona taarifa iliyochapishwa: + Utapaswa kuona tamko lililo chapishwa: ```output hello notebook ``` -![VS Code na notebook imefunguliwa](../../../../2-Regression/1-Tools/images/notebook.jpg) +![VS Code na daftari wazi](../../../../translated_images/sw/notebook.4a3ee31f396b8832.webp) -Unaweza kuchanganya msimbo wako na maoni ili kujidokumentisha notebook. +Unaweza kuingiza maelezo katika msimbo wako ili kujirekebisha wega kwenye daftari. -✅ Fikiria kwa dakika moja jinsi mazingira ya kazi ya msanidi programu wa wavuti yanavyotofautiana na yale ya mwanasayansi wa data. +✅ Fikiria kwa muda mfupi jinsi mazingira ya kazi ya mtengenezaji wavuti yanavyotofautiana na ya mtaalamu wa sayansi ya data. -## Kuanzisha na Scikit-learn +## Kuanzisha na kutumia Scikit-learn -Sasa kwa kuwa Python imewekwa katika mazingira yako ya ndani, na unajisikia vizuri na Jupyter notebooks, hebu tujifunze vizuri na Scikit-learn (tamka `sci` kama `science`). Scikit-learn inatoa [API ya kina](https://scikit-learn.org/stable/modules/classes.html#api-ref) kusaidia kufanya kazi za ML. +Sasa Python imewekwa kwenye mazingira yako ya mkoa, na umezoea Jupyter Notebooks, hebu pia tujifunze vizuri Scikit-learn (taja kama `sci` kama katika `science`). Scikit-learn hutoa [API pana](https://scikit-learn.org/stable/modules/classes.html#api-ref) kusaidia kufanya kazi za ML. -Kulingana na [tovuti yao](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn ni maktaba ya kujifunza mashine ya chanzo huria inayounga mkono kujifunza kwa usimamizi na bila usimamizi. Pia inatoa zana mbalimbali za kufaa mifano, usindikaji wa data, uteuzi wa mifano na tathmini, na huduma nyingine nyingi." +Kulingana na [tovuti yao](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn ni maktaba ya chanzo huria ya kujifunza kwa mashine inayounga mkono kujifunza kwa usimamizi na usiokuwa na usimamizi. Pia hutumia zana mbalimbali za kufitisha modeli, usindikaji wa data, uchaguzi wa modeli na tathmini, na huduma nyingine nyingi." -Katika kozi hii, utatumia Scikit-learn na zana nyingine kujenga mifano ya kujifunza mashine kufanya kile tunachokiita 'kazi za kujifunza mashine za jadi'. Tumeepuka makusudi mitandao ya neva na kujifunza kwa kina, kwani zinashughulikiwa vyema katika mtaala wetu ujao wa 'AI kwa Wanaoanza'. +Katika kozi hii, utatumia Scikit-learn na zana nyingine kujenga mifano ya kujifunza kwa mashine kufanya kile tunachokiita 'kazi za jadi za kujifunza kwa mashine.' Tumewaepuka makusudi mitandao ya neva na ujifunzaji wa kina, kwani yanashughulikiwa vizuri zaidi katika mtaala wetu unaokuja wa 'AI kwa Wanaoanzisha.' -Scikit-learn inafanya iwe rahisi kujenga mifano na kuipima kwa matumizi. Inalenga hasa kutumia data ya nambari na ina datasets kadhaa zilizotayarishwa tayari kwa matumizi kama zana za kujifunza. Pia inajumuisha mifano iliyojengwa tayari kwa wanafunzi kujaribu. Hebu tuchunguze mchakato wa kupakia data iliyopakiwa awali na kutumia estimator iliyojengwa kwa mfano wa kwanza wa ML na Scikit-learn na data ya msingi. +Scikit-learn hufanya iwe rahisi kujenga mifano na kuipima kwa matumizi. Inazingatia hasa kutumia data ya nambari na ina seti kadhaa za data zilizotayarishwa tayari kwa zana za kujifunza. Pia inajumuisha mifano iliyojengwa tayari kwa wanafunzi kujaribu. Hebu tuchunguze mchakato wa kupakia data zilizoandaliwa na kutumia kipima kilichojengwa kwa mfano wa kwanza wa ML na Scikit-learn na data rahisi. -## Zoezi - notebook yako ya kwanza ya Scikit-learn +## Zoezi - daftari lako la kwanza la Scikit-learn -> Mafunzo haya yamechochewa na [mfano wa regression ya mstari](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) kwenye tovuti ya Scikit-learn. +> Mafunzo haya yamechukuliwa kutoka kwa [mfano wa urekebishaji wa mstari](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) kwenye tovuti ya Scikit-learn. -[![ML kwa wanaoanza - Mradi wako wa Kwanza wa Regression ya Mstari katika Python](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "ML kwa wanaoanza - Mradi wako wa Kwanza wa Regression ya Mstari katika Python") -> 🎥 Bonyeza picha hapo juu kwa video fupi ya kufanya zoezi hili. +[![ML kwa wanaoanzisha - Mradi wako wa Kwanza wa Urekebishaji wa Mstari katika Python](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "ML kwa wanaoanzisha - Mradi wako wa Kwanza wa Urekebishaji wa Mstari katika Python") -Katika faili _notebook.ipynb_ lililohusishwa na somo hili, futa seli zote kwa kubonyeza ikoni ya 'takataka'. +> 🎥 Bonyeza picha hapo juu kwa video fupi inayofundisha zoezi hili. -Katika sehemu hii, utatumia dataset ndogo kuhusu ugonjwa wa kisukari ambayo imejengwa ndani ya Scikit-learn kwa madhumuni ya kujifunza. Fikiria kwamba unataka kujaribu matibabu kwa wagonjwa wa kisukari. Mifano ya Kujifunza Mashine inaweza kusaidia kuamua ni wagonjwa gani watakaoitikia matibabu vizuri zaidi, kulingana na mchanganyiko wa vigezo. Hata mfano wa regression ya msingi, unapowekwa kwenye grafu, unaweza kuonyesha taarifa kuhusu vigezo ambavyo vinaweza kusaidia kupanga majaribio yako ya kliniki ya kinadharia. +Katika faili la _notebook.ipynb_ linalohusiana na somo hili, safisha seli zote kwa kubonyeza ikoni ya 'mkaa taka'. -✅ Kuna aina nyingi za mbinu za regression, na ni ipi unayochagua inategemea jibu unalotafuta. Ikiwa unataka kutabiri urefu unaowezekana wa mtu wa umri fulani, ungetumia regression ya mstari, kwani unatafuta **thamani ya nambari**. Ikiwa unavutiwa na kugundua kama aina ya chakula inapaswa kuzingatiwa kuwa ya mboga au la, unatafuta **ugawaji wa kategoria** kwa hivyo ungetumia regression ya logistic. Utajifunza zaidi kuhusu regression ya logistic baadaye. Fikiria kidogo kuhusu maswali unayoweza kuuliza data, na ni mbinu ipi kati ya hizi itakuwa sahihi zaidi. +Katika sehemu hii, utafanya kazi na seti ndogo ya data kuhusu kisukari ambayo imejengwa ndani ya Scikit-learn kwa madhumuni ya kujifunza. Fikiria kama ungetaka kujaribu tiba kwa wagonjwa wa kisukari. Mifano ya Kujifunza kwa Mashine inaweza kusaidia kuamua ni wagonjwa gani wangejibu vyema tiba hiyo, kwa msingi wa mchanganyiko wa vigezo. Hata mfano rahisi wa urekebishaji, ukionyeshwa picha, unaweza kuonyesha taarifa kuhusu vigezo ambavyo vitakusaidia kupanga majaribio ya nadharia ya kliniki. -Hebu tuanze kazi hii. +✅ Kuna aina nyingi za mbinu za urekebishaji, na ipi utakayochagua inategemea jibu unalotafuta. Ikiwa unataka kutabiri urefu unaowezekana kwa mtu wa umri fulani, utatumia urekebishaji wa mstari, kwa sababu unatafuta **thamani ya nambari**. Ikiwa unavutiwa kugundua kama aina fulani ya chakula inapaswa kuzingatiwa kuwa vegan au la, unatafuta **ugawaji wa aina** kwa hivyo utatumia urekebishaji wa logistic. Utajifunza zaidi kuhusu urekebishaji wa logistic baadaye. Fikiria kidogo kuhusu maswali unayoweza kuuliza data, na ni mbinu gani kati ya hizi zingekuwa sahihi zaidi. + +Hebu tuanze kwenye kazi hii. ### Ingiza maktaba -Kwa kazi hii tutaleta maktaba kadhaa: +Kwa kazi hii tutatangaza baadhi ya maktaba: -- **matplotlib**. Ni [chombo cha kuchora grafu](https://matplotlib.org/) na tutakitumia kuunda grafu ya mstari. +- **matplotlib**. Ni [chombo cha kuchora michoro](https://matplotlib.org/) kinachotumika kuunda mchoro wa mistari. - **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) ni maktaba muhimu kwa kushughulikia data ya nambari katika Python. - **sklearn**. Hii ni maktaba ya [Scikit-learn](https://scikit-learn.org/stable/user_guide.html). -Ingiza maktaba kadhaa kusaidia kazi zako. +Ingiza maktaba kusaidia kazi zako. -1. Ongeza imports kwa kuandika msimbo ufuatao: +1. Ongeza maingizo kwa kuandika msimbo ufuatao: ```python import matplotlib.pyplot as plt @@ -122,26 +123,26 @@ Ingiza maktaba kadhaa kusaidia kazi zako. from sklearn import datasets, linear_model, model_selection ``` - Hapo juu unaleta `matplotlib`, `numpy` na unaleta `datasets`, `linear_model` na `model_selection` kutoka `sklearn`. `model_selection` hutumika kugawanya data katika seti za mafunzo na majaribio. + Juu hapa unainua `matplotlib`, `numpy` na unainua `datasets`, `linear_model` na `model_selection` kutoka `sklearn`. `model_selection` hutumika kugawanya data katika makundi ya mafunzo na majaribio. -### Dataset ya kisukari +### Seti ya data ya kisukari -Dataset ya [kisukari](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) iliyojengwa ndani ina sampuli 442 za data kuhusu kisukari, na vigezo 10 vya sifa, baadhi ya ambazo ni pamoja na: +Seti ya data [ya kisukari](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) iliyojengwa ina sampuli 442 za data kuhusu kisukari, na vigezo 10, baadhi yao ni: -- umri: umri kwa miaka +- umri: umri katika miaka - bmi: index ya uzito wa mwili -- bp: shinikizo la damu la wastani +- bp: wastani wa shinikizo la damu - s1 tc: T-Cells (aina ya seli nyeupe za damu) -✅ Dataset hii inajumuisha dhana ya 'jinsia' kama kigezo cha sifa muhimu kwa utafiti kuhusu kisukari. Dataset nyingi za matibabu zinajumuisha aina hii ya uainishaji wa binary. Fikiria kidogo kuhusu jinsi uainishaji kama huu unaweza kuwatenga sehemu fulani za idadi ya watu kutoka kwa matibabu. +✅ Seti hii ya data ina dhana ya 'jinsia' kama kigezo muhimu katika utafiti wa kisukari. Seti nyingi za data za matibabu zina aina hii ya mgawanyo wa binary. Fikiria kidogo jinsi malezo kama haya yanavyoweza kuondoa sehemu fulani za watu kutoka kwa matibabu. -Sasa, pakia data ya X na y. +Sasa, pakia data X na y. -> 🎓 Kumbuka, hii ni kujifunza kwa usimamizi, na tunahitaji lengo lililopewa jina 'y'. +> 🎓 Kumbuka, hii ni kujifunza kwa usimamizi, na tunahitaji 'y' linaloitwa lengo. -Katika seli mpya ya msimbo, pakia dataset ya kisukari kwa kuita `load_diabetes()`. Ingizo `return_X_y=True` linaashiria kwamba `X` itakuwa matrix ya data, na `y` itakuwa lengo la regression. +Katika seli mpya ya msimbo, pakia seti ya data ya kisukari kwa kuitwa `load_diabetes()`. Kuingiza `return_X_y=True` kunaashiria kuwa `X` itakuwa matriki ya data, na `y` itakuwa lengo la urekebishaji. -1. Ongeza amri za kuchapisha ili kuonyesha umbo la matrix ya data na kipengele chake cha kwanza: +1. Ongeza baadhi ya amri za print ili kuonyesha umbo la matriki ya data na kipengele chake cha kwanza: ```python X, y = datasets.load_diabetes(return_X_y=True) @@ -149,9 +150,9 @@ Katika seli mpya ya msimbo, pakia dataset ya kisukari kwa kuita `load_diabetes() print(X[0]) ``` - Unachopata kama jibu ni tuple. Unachofanya ni kugawa thamani mbili za kwanza za tuple kwa `X` na `y` mtawalia. Jifunze zaidi [kuhusu tuples](https://wikipedia.org/wiki/Tuple). + Kile unachopata kama jibu ni tuple. Unachofanya ni kugawa vitu viwili vya kwanza vya tuple kwa `X` na `y` mtawalia. Jifunze zaidi [kuhusu tuple](https://wikipedia.org/wiki/Tuple). - Unaweza kuona kwamba data hii ina vitu 442 vilivyopangwa katika arrays za vipengele 10: + Unaweza kuona kuwa data hii ina vitu 442 vilivyoumbwa katika safu za vitu 10: ```text (442, 10) @@ -159,9 +160,9 @@ Katika seli mpya ya msimbo, pakia dataset ya kisukari kwa kuita `load_diabetes() -0.04340085 -0.00259226 0.01990842 -0.01764613] ``` - ✅ Fikiria kidogo kuhusu uhusiano kati ya data na lengo la regression. Regression ya mstari inatabiri uhusiano kati ya kipengele X na kigezo cha lengo y. Je, unaweza kupata [lengo](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) kwa dataset ya kisukari katika nyaraka? Dataset hii inaonyesha nini, ikizingatiwa lengo? + ✅ Fikiria kidogo kuhusu uhusiano kati ya data na lengo la urekebishaji. Urekebishaji wa mstari unasema mahusiano kati ya kipengele X na kigezo cha lengo y. Je, unaweza kupata [lengo](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) la seti ya data ya kisukari katika nyaraka? Seti hii ya data inaonyesha nini ukizingatia lengo hilo? -2. Kisha, chagua sehemu ya dataset hii ili kuweka grafu kwa kuchagua safu ya 3 ya dataset. Unaweza kufanya hivi kwa kutumia operator `:` kuchagua safu zote, na kisha kuchagua safu ya 3 kwa kutumia index (2). Unaweza pia kupanga upya data kuwa array ya 2D - kama inavyohitajika kwa kuweka grafu - kwa kutumia `reshape(n_rows, n_columns)`. Ikiwa moja ya parameter ni -1, kipimo kinacholingana kinahesabiwa kiotomatiki. +2. Ifuatayo, chagua sehemu ya seti hii ya data kwa kuchagua safu ya tatu ya dataset. Unaweza kufanya hivi kwa kutumia kiharusi cha `:` kuchagua mistari yote, kisha kuchagua safu ya 3 kutumia kiashiria (2). Pia unaweza kurekebisha data kuwa array ya 2D - kama inavyotakiwa kwa kuchora - kwa kutumia `reshape(n_rows, n_columns)`. Ikiwa parameta moja ni -1, kipimo kinacholingana kinakokotolewa kiotomatiki. ```python X = X[:, 2] @@ -170,28 +171,28 @@ Katika seli mpya ya msimbo, pakia dataset ya kisukari kwa kuita `load_diabetes() ✅ Wakati wowote, chapisha data ili kuangalia umbo lake. -3. Sasa kwa kuwa una data tayari kuwekwa kwenye grafu, unaweza kuona kama mashine inaweza kusaidia kuamua mgawanyiko wa kimantiki kati ya nambari katika dataset hii. Ili kufanya hivyo, unahitaji kugawanya data (X) na lengo (y) katika seti za majaribio na mafunzo. Scikit-learn ina njia rahisi ya kufanya hivi; unaweza kugawanya data yako ya majaribio katika sehemu fulani. +3. Sasa una data tayari kuchorwa, unaweza kuona kama mashine inaweza kusaidia kuamua mgawanyiko wa maana kati ya nambari katika seti hii ya data. Kufanya hivyo, unahitaji kugawanya data zote (X) na lengo (y) katika seti za majaribio na mafunzo. Scikit-learn ina njia rahisi ya kufanya hili; unaweza kugawanya data zako za majaribio mahali fulani. ```python X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33) ``` -4. Sasa uko tayari kufundisha mfano wako! Pakia mfano wa regression ya mstari na uufundishe na seti zako za mafunzo za X na y kwa kutumia `model.fit()`: +4. Sasa uko tayari kufundisha mfano wako! Pakia mfano wa urekebishaji wa mstari na uufundishe kwa seti zako za mafunzo za X na y kwa kutumia `model.fit()`: ```python model = linear_model.LinearRegression() model.fit(X_train, y_train) ``` - ✅ `model.fit()` ni kazi utakayoiona katika maktaba nyingi za ML kama TensorFlow. + ✅ `model.fit()` ni kazi utakayoiwona katika maktaba nyingi za ML kama TensorFlow -5. Kisha, tengeneza utabiri kwa kutumia data ya majaribio, kwa kutumia kazi `predict()`. Hii itatumika kuchora mstari kati ya vikundi vya data. +5. Kisha, tengeneza utabiri kwa kutumia data ya majaribio, kwa kutumia kazi `predict()`. Hii itatumika kuchora mstari kati ya makundi ya data ```python y_pred = model.predict(X_test) ``` -6. Sasa ni wakati wa kuonyesha data kwenye grafu. Matplotlib ni chombo muhimu sana kwa kazi hii. Tengeneza grafu ya alama za X na y za majaribio, na tumia utabiri kuchora mstari mahali panapofaa zaidi, kati ya vikundi vya data vya mfano. +6. Sasa ni wakati wa kuonyesha data kwenye mchoro. Matplotlib ni chombo muhimu sana kwa kazi hii. Tengeneza mchoro wa pointi zote za data za majaribio X na y, na tumia utabiri kuchora mstari mahali pazuri zaidi, kati ya makundi ya data ya mfano. ```python plt.scatter(X_test, y_test, color='black') @@ -202,29 +203,32 @@ Katika seli mpya ya msimbo, pakia dataset ya kisukari kwa kuita `load_diabetes() plt.show() ``` - ![grafu ya alama za data kuhusu kisukari](../../../../2-Regression/1-Tools/images/scatterplot.png) -✅ Fikiria kidogo kuhusu kinachoendelea hapa. Mstari wa moja kwa moja unapita katikati ya nukta nyingi ndogo za data, lakini unafanya nini hasa? Je, unaweza kuona jinsi unavyoweza kutumia mstari huu kutabiri mahali ambapo data mpya, ambayo haijawahi kuonekana, inapaswa kutoshea kuhusiana na mhimili wa y wa mchoro? Jaribu kuelezea kwa maneno matumizi ya vitendo ya mfano huu. + ![mchoro wa pointi unaoonyesha data kuhusu kisukari](../../../../translated_images/sw/scatterplot.ad8b356bcbb33be6.webp) + -Hongera, umeunda mfano wako wa kwanza wa regression ya mstari, umetengeneza utabiri kwa kutumia, na kuonyesha katika mchoro! + ✅ Fikiria kidogo kuhusu kinachoendelea hapa. Mstari wa moja kwa moja unapitisha kwenye nukta nyingi ndogo za data, lakini unafanya nini hasa? Unaona jinsi unavyopaswa kutumia mstari huu kutabiri wapi nukta mpya ya data ambayo haijaonekana inapaswa kuwekwa kulingana na mhimili wa y wa mchoro? Jaribu kuweka kwa maneno matumizi halisi ya modeli hii. + +Hongera, umejenga modeli yako ya kwanza ya usawa wa mstari, umeunda utabiri nayo, na kuionesha kwenye mchoro! --- ## 🚀Changamoto -Chora variable tofauti kutoka kwa dataset hii. Kidokezo: hariri mstari huu: `X = X[:,2]`. Ukiangalia lengo la dataset hii, unaweza kugundua nini kuhusu maendeleo ya ugonjwa wa kisukari? - -## [Jaribio baada ya somo](https://ff-quizzes.netlify.app/en/ml/) +Choroga kigezo kingine kutoka kwenye dataset hii. Wazo: rekebisha mstari huu: `X = X[:,2]`. Kulingana na lengo la dataset hii, unaweza kugundua nini kuhusu maendeleo ya ugonjwa wa kisukari? +## [Mtihani baada ya somo](https://ff-quizzes.netlify.app/en/ml/) -## Mapitio na Kujisomea +## Mapitio & Kujifunza Binafsi -Katika mafunzo haya, ulifanya kazi na regression rahisi ya mstari, badala ya regression ya univariate au multiple. Soma kidogo kuhusu tofauti kati ya mbinu hizi, au angalia [video hii](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef). +Katika mafunzo haya, ulifanya kazi na usawa wa mstari rahisi, badala ya usawa wa mstari wa kipengele kimoja au mwingi. Soma kidogo kuhusu tofauti kati ya mbinu hizi, au tazama [video hii](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) -Soma zaidi kuhusu dhana ya regression na fikiria ni aina gani za maswali yanayoweza kujibiwa kwa mbinu hii. Chukua [mafunzo haya](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) ili kuongeza uelewa wako. +Soma zaidi kuhusu dhana ya usawa wa mstari na fikiria ni aina gani za maswali yanaweza kujibiwa kwa mbinu hii. Fanya mafunzo haya [tutorial](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) kuongeza uelewa wako. -## Kazi +## Wajibu [Dataset tofauti](assignment.md) --- -**Kanusho**: -Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file + +**Kionyozo**: +Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kupata usahihi, tafadhali fahamu kwamba tafsiri za kiotomatiki zinaweza kuwa na makosa au upungufu wa usahihi. Hati ya asili katika lugha yake halisi inapaswa kuchukuliwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu inayofanywa na binadamu inapendekezwa. Hatutojibu kwa kuelewa vibaya au tafsiri potofu zinazotokea kutokana na matumizi ya tafsiri hii. + \ No newline at end of file diff --git a/translations/sw/2-Regression/2-Data/README.md b/translations/sw/2-Regression/2-Data/README.md index b1c303b89..4f0dd4b98 100644 --- a/translations/sw/2-Regression/2-Data/README.md +++ b/translations/sw/2-Regression/2-Data/README.md @@ -1,62 +1,62 @@ -# Jenga mfano wa regression kwa kutumia Scikit-learn: andaa na onyesha data +# Jenga mfano wa regresheni kwa kutumia Scikit-learn: andaa na onyesha data -![Picha ya infographic ya uonyeshaji wa data](../../../../2-Regression/2-Data/images/data-visualization.png) +![Infographia ya uoneshaji data](../../../../translated_images/sw/data-visualization.54e56dded7c1a804.webp) -Infographic na [Dasani Madipalli](https://twitter.com/dasani_decoded) +Infographia na [Dasani Madipalli](https://twitter.com/dasani_decoded) -## [Jaribio la kabla ya somo](https://ff-quizzes.netlify.app/en/ml/) +## [Mtihani kabla ya mihadhara](https://ff-quizzes.netlify.app/en/ml/) -> ### [Somo hili linapatikana kwa R!](../../../../2-Regression/2-Data/solution/R/lesson_2.html) +> ### [Mafunzo haya yanapatikana katika R!](../../../../2-Regression/2-Data/solution/R/lesson_2.html) ## Utangulizi -Sasa kwa kuwa umejiandaa na zana unazohitaji kuanza kujenga mifano ya kujifunza kwa mashine kwa kutumia Scikit-learn, uko tayari kuanza kuuliza maswali kuhusu data yako. Unapofanya kazi na data na kutumia suluhisho za ML, ni muhimu sana kuelewa jinsi ya kuuliza swali sahihi ili kufungua uwezo wa dataset yako ipasavyo. +Sasa umejiandaa na zana unazohitaji kuanza kujifunza ujenzi wa modeli ya kujifunza mashine kwa kutumia Scikit-learn, uko tayari kuanza kuuliza maswali kuhusu data yako. Unapofanya kazi na data na kutumia suluhisho za ML, ni muhimu sana kuelewa jinsi ya kuuliza swali sahihi ili kufungua vizuri uwezo wa dataset yako. Katika somo hili, utajifunza: -- Jinsi ya kuandaa data yako kwa ajili ya kujenga mifano. -- Jinsi ya kutumia Matplotlib kwa uonyeshaji wa data. +- Jinsi ya kuandaa data yako kwa ajili ya ujenzi wa modeli. +- Jinsi ya kutumia Matplotlib kwa ajili ya uoneshaji data. +- Jinsi ya kutumia Seaborn kwa uoneshaji data wa kuelezea zaidi. -## Kuuliza swali sahihi kuhusu data yako +## Kuuliza swali sahihi la data yako -Swali unalotaka kujibiwa litaamua ni aina gani ya algorithimu za ML utatumia. Na ubora wa jibu unalopata utategemea sana asili ya data yako. +Swali unalohitaji kupata jibu litabainisha aina gani ya algoriti ya ML utakayotumia. Na ubora wa jibu utakayopata utategemea sana asili ya data yako. -Angalia [data](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) iliyotolewa kwa somo hili. Unaweza kufungua faili hili la .csv katika VS Code. Ukilitazama haraka utaona kuwa kuna nafasi tupu na mchanganyiko wa maandishi na data ya nambari. Pia kuna safu ya ajabu inayoitwa 'Package' ambapo data ni mchanganyiko wa 'sacks', 'bins' na maadili mengine. Kwa kweli, data ni ya fujo kidogo. +Tazama [data](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) iliyotolewa kwa somo hili. Unaweza kufungua faili hii ya .csv katika VS Code. Kuangalia kwa haraka kunaonyesha mara moja kuwa kuna maeneo yaliyo wazi na mchanganyiko wa mistari na data za nambari. Pia kuna safu ya ajabu iitwayo 'Package' ambapo data ni mchanganyiko kati ya 'sacks', 'bins' na thamani nyingine. Data, kwa kweli, ni machafuko kidogo. -[![ML kwa wanaoanza - Jinsi ya Kuchambua na Kusafisha Dataset](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML kwa wanaoanza - Jinsi ya Kuchambua na Kusafisha Dataset") +[![ML kwa wakijifunza - Jinsi ya Kuchambua na Kusafisha Dataset](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML kwa wakijifunza - Jinsi ya Kuchambua na Kusafisha Dataset") -> 🎥 Bofya picha hapo juu kwa video fupi inayofanya kazi ya kuandaa data kwa somo hili. +> 🎥 Bonyeza picha hapo juu kwa video fupi ya kuonyesha jinsi ya kuandaa data kwa somo hili. -Kwa kweli, si kawaida kupewa dataset ambayo iko tayari kabisa kutumika kuunda mfano wa ML moja kwa moja. Katika somo hili, utajifunza jinsi ya kuandaa dataset mbichi kwa kutumia maktaba za kawaida za Python. Pia utajifunza mbinu mbalimbali za kuonyesha data. +Kwa kweli, si kawaida kupewa dataset ambayo tayari iko tayari kabisa kwa kutumia kuunda modeli ya ML moja kwa moja. Katika somo hili, utajifunza jinsi ya kuandaa dataset ghafi kwa kutumia maktaba za kawaida za Python. Pia utajifunza mbinu mbalimbali za kuonesha data. -## Uchunguzi wa kesi: 'soko la malenge' +## Utafiti wa kesi: 'soko la malenge' -Katika folda hii utapata faili la .csv katika folda ya mizizi `data` inayoitwa [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) ambalo lina mistari 1757 ya data kuhusu soko la malenge, limepangwa katika vikundi kulingana na mji. Hii ni data mbichi iliyotolewa kutoka kwa [Ripoti za Kawaida za Masoko ya Mazao Maalum](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) zinazotolewa na Idara ya Kilimo ya Marekani. +Katika folda hii utapata faili la .csv katika folda ya mizizi `data` iitwayo [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) linalojumuisha mistari 1757 ya data kuhusu soko la malenge, limepangwa kwa makundi kwa miji. Hii ni data ghafi iliyochukuliwa kutoka kwa [Ripoti za Viwango vya Masoko ya Mazao Maalum](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) zinazotolewa na Idara ya Kilimo ya Marekani. ### Kuandaa data -Data hii iko katika uwanja wa umma. Inaweza kupakuliwa katika faili nyingi tofauti, kwa kila mji, kutoka tovuti ya USDA. Ili kuepuka faili nyingi tofauti, tumeunganisha data yote ya miji katika lahajedwali moja, kwa hivyo tayari tume _andaa_ data kidogo. Sasa, hebu tuangalie kwa karibu data hiyo. +Data hii iko katika umma. Inaweza kupakuliwa katika faili nyingi tofauti, kwa kila jiji, kutoka kwa tovuti ya USDA. Kuepuka faili nyingi tofauti, tumeshanika data zote za miji kwenye spreadsheet moja, hivyo tumeshakuwa tume_anda_ data kidogo. Sasa, tuchunguze data kwa karibu zaidi. ### Data ya malenge - hitimisho la awali -Unaona nini kuhusu data hii? Tayari umeona kuwa kuna mchanganyiko wa maandishi, nambari, nafasi tupu na maadili ya ajabu ambayo unahitaji kuelewa. +Unaona nini kuhusu data hii? Tayari umeona kwamba kuna mchanganyiko wa mistari, nambari, sehemu zilizokotwa na thamani za ajabu unazohitaji kuelewa. -Ni swali gani unaweza kuuliza kuhusu data hii, kwa kutumia mbinu ya Regression? Vipi kuhusu "Tabiri bei ya malenge yanayouzwa katika mwezi fulani". Ukiangalia tena data, kuna mabadiliko unayohitaji kufanya ili kuunda muundo wa data unaohitajika kwa kazi hiyo. +Swali gani unaweza kuuliza kuhusu data hii, ukitumia mbinu ya Regresheni? Vipi kuhusu "Tabiri bei ya malenge yanayouzwa wakati wa mwezi mmoja"? Kuangalia tena data, kuna mabadiliko unayohitaji kufanya ili kuunda muundo wa data unaohitajika kwa kazi hii. +## Zoefaa - chambua data ya malenge -## Zoezi - chunguza data ya malenge - -Tutumie [Pandas](https://pandas.pydata.org/), (jina linamaanisha `Python Data Analysis`) chombo chenye manufaa sana kwa kuunda data, kuchambua na kuandaa data hii ya malenge. +Tumia [Pandas](https://pandas.pydata.org/), (jina linamaanisha `Python Data Analysis`) zana muhimu sana kwa kuunda data, kuchambua na kuandaa data hii ya malenge. ### Kwanza, angalia tarehe zinazokosekana -Utahitaji kuchukua hatua za kuangalia tarehe zinazokosekana: +Kwanza utahitaji kuchukua hatua za kuangalia tarehe zilizokosekana: -1. Badilisha tarehe kuwa muundo wa mwezi (hizi ni tarehe za Marekani, kwa hivyo muundo ni `MM/DD/YYYY`). -2. Toa mwezi kwenye safu mpya. +1. Badilisha tarehe kuwa muundo wa mwezi (hizi ni tarehe za Marekani, hivyo muundo ni `MM/DD/YYYY`). +2. Chukua mwezi na weka kwenye safu mpya. -Fungua faili _notebook.ipynb_ katika Visual Studio Code na uingize lahajedwali katika dataframe mpya ya Pandas. +Fungua faili _notebook.ipynb_ katika Visual Studio Code na ingiza spreadsheet kwenye dataframe mpya ya Pandas. -1. Tumia kazi ya `head()` kuona mistari mitano ya kwanza. +1. Tumia kazi ya `head()` kuangalia mistari mitano ya kwanza. ```python import pandas as pd @@ -64,28 +64,28 @@ Fungua faili _notebook.ipynb_ katika Visual Studio Code na uingize lahajedwali k pumpkins.head() ``` - ✅ Ni kazi gani ungetumia kuona mistari mitano ya mwisho? + ✅ Ni kazi gani utakayotumia kuona mistari mitano ya mwisho? -1. Angalia kama kuna data inayokosekana katika dataframe ya sasa: +1. Angalia ikiwa kuna data iliyokosekana katika dataframe ya sasa: ```python pumpkins.isnull().sum() ``` - Kuna data inayokosekana, lakini labda haitakuwa muhimu kwa kazi inayofanyika. + Kuna data iliyokosekana, lakini labda haitakuwa na matokeo kwa kazi hii. -1. Ili kufanya dataframe yako iwe rahisi kufanya kazi nayo, chagua tu safu unazohitaji, kwa kutumia kazi ya `loc` ambayo huchukua kutoka dataframe ya awali kikundi cha mistari (kinachopitishwa kama parameter ya kwanza) na safu (zinazopitishwa kama parameter ya pili). Usemi `:` katika kesi hapa chini unamaanisha "mistari yote". +1. Ili kufanya dataframe yako iwe rahisi kufanya kazi nayo, chagua safu tu unazohitaji, ukitumia kazi ya `loc` ambayo huchukua kutoka kwa dataframe ya awali kundi la mistari (kama parameter ya kwanza) na safu (kama parameter ya pili). Kielelezo `:` katika mfano huu lina maana "mistari yote". ```python columns_to_select = ['Package', 'Low Price', 'High Price', 'Date'] pumpkins = pumpkins.loc[:, columns_to_select] ``` -### Pili, amua bei ya wastani ya malenge +### Pili, tambua bei ya wastani ya malenge -Fikiria jinsi ya kuamua bei ya wastani ya malenge katika mwezi fulani. Ni safu gani ungezichagua kwa kazi hii? Kidokezo: utahitaji safu 3. +Fikiria jinsi ya kupata bei ya wastani ya malenge kwa mwezi fulani. Ni safu gani utachagua kwa kazi hii? Kuanza: utahitaji safu 3. -Suluhisho: chukua wastani wa safu za `Low Price` na `High Price` kujaza safu mpya ya Price, na ubadilishe safu ya Date kuonyesha tu mwezi. Kwa bahati nzuri, kulingana na ukaguzi hapo juu, hakuna data inayokosekana kwa tarehe au bei. +Suluhisho: chukua wastani wa safu za `Low Price` na `High Price` kujaza safu mpya ya Bei, na badilisha safu ya Tarehe kuonyesha tu mwezi. Kwa heri, kulingana na ukaguzi uliopita, hakuna data iliyokosekana kwa tarehe au bei. 1. Ili kuhesabu wastani, ongeza msimbo ufuatao: @@ -96,37 +96,37 @@ Suluhisho: chukua wastani wa safu za `Low Price` na `High Price` kujaza safu mpy ``` - ✅ Jisikie huru kuchapisha data yoyote unayotaka kuangalia kwa kutumia `print(month)`. + ✅ Huwezi kuchapisha data yoyote unayotaka kuangalia kwa kutumia `print(month)`. -2. Sasa, nakili data yako iliyobadilishwa katika dataframe mpya ya Pandas: +2. Sasa, nakili data uliyoibadilisha ndani ya dataframe mpya ya Pandas: ```python new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price}) ``` - Kuchapisha dataframe yako kutakuonyesha dataset safi na nadhifu ambayo unaweza kujenga mfano wako mpya wa regression. + Kuchapisha dataframe yako kutaonyesha dataset safi na nadhifu ambayo unaweza kutumia kujenga mfano wako mpya wa regresheni. -### Lakini subiri! Kuna kitu cha ajabu hapa +### Lakini subiri! Kuna jambo la kushangaza hapa -Ukiangalia safu ya `Package`, malenge yanauzwa katika mipangilio mingi tofauti. Baadhi yanauzwa kwa kipimo cha '1 1/9 bushel', na mengine kwa '1/2 bushel', mengine kwa kila malenge, mengine kwa paundi, na mengine katika masanduku makubwa yenye upana tofauti. +Ukitazama safu ya `Package`, malenge huuzwa kwa mipangilio tofauti. Baadhi huuzwa kwa vipimo vya '1 1/9 bushel', na baadhi kwa '1/2 bushel', baadhi kwa malenge moja moja, baadhi kwa pauni, na wengine katika masanduku makubwa ya upana tofauti. -> Malenge yanaonekana kuwa magumu sana kupimwa kwa usawa +> Malenge yanaonekana kuwa magumu kuyapima kwa usahihi -Ukiangalia data ya awali, ni ya kuvutia kwamba chochote kilicho na `Unit of Sale` sawa na 'EACH' au 'PER BIN' pia kina aina ya `Package` kwa inchi, kwa bin, au 'each'. Malenge yanaonekana kuwa magumu sana kupimwa kwa usawa, kwa hivyo hebu tuyachuje kwa kuchagua tu malenge yenye neno 'bushel' katika safu yao ya `Package`. +Ukichunguza data ya awali, ni ya kuvutia kuwa kitu chochote chenye `Unit of Sale` kinapokuwa sawa na 'EACH' au 'PER BIN' pia kina aina ya `Package` kwa inchi, kwa bin, au 'kila moja'. Malenge yanaonekana kuwa magumu kuyapima kwa usahihi, hivyo tuchujie kwa kuchagua malenge tu yenye maneno 'bushel' kwenye safu yao ya `Package`. -1. Ongeza kichujio juu ya faili, chini ya uingizaji wa awali wa .csv: +1. Ongeza kichujio juu ya faili, chini ya uingizaji wa .csv wa awali: ```python pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)] ``` - Ukichapisha data sasa, utaona kuwa unapata tu mistari 415 au zaidi ya data inayojumuisha malenge kwa bushel. + Ikiwa uchapisha sasa data, utaona kuwa unapata mistari takriban 415 tu ya data ya malenge kwa bushel. -### Lakini subiri! Kuna jambo lingine la kufanya +### Lakini subiri! Kuna jambo moja zaidi la kufanya -Je, uliona kuwa kiasi cha bushel kinatofautiana kwa kila mstari? Unahitaji kuweka bei sawa ili uonyeshe bei kwa bushel, kwa hivyo fanya hesabu ili kuisawazisha. +Umeona ikiwa kiasi cha bushel kinatofautiana kwa kila mstari? Unahitaji kurekebisha bei ili kuonyesha bei kwa bushel, basi fanya hesabu zozote za kuipanga sawa. -1. Ongeza mistari hii baada ya block inayounda dataframe mpya ya malenge: +1. Ongeza mistari hii baada ya block ya kuunda dataframe ya new_pumpkins: ```python new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9) @@ -134,29 +134,29 @@ Je, uliona kuwa kiasi cha bushel kinatofautiana kwa kila mstari? Unahitaji kuwek new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2) ``` -✅ Kulingana na [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), uzito wa bushel unategemea aina ya mazao, kwani ni kipimo cha ujazo. "Bushel ya nyanya, kwa mfano, inapaswa kuwa na uzito wa paundi 56... Majani na mboga huchukua nafasi zaidi na uzito mdogo, kwa hivyo bushel ya spinachi ni paundi 20 tu." Ni ngumu sana! Hebu tusijisumbue na kufanya ubadilishaji wa bushel hadi paundi, na badala yake tuweke bei kwa bushel. Utafiti huu wote wa bushel za malenge, hata hivyo, unaonyesha jinsi ilivyo muhimu sana kuelewa asili ya data yako! +✅ Kulingana na [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), uzito wa bushel unategemea aina ya mmea, kwa kuwa ni kipimo cha wingi. "Bushel ya nyanya, kwa mfano, inapaswa kuwa na uzito wa pauni 56... Majani na mboga huchukua nafasi zaidi kwa uzito mdogo, hivyo bushel ya spinachi ni pauni 20 tu." Ni jambo tata! Tusiweke juhudi za kubadilisha bushel kuwa pauni, badala yake tuchukulie bei kwa bushel. Utafiti huu wote wa bushel za malenge unaonyesha jinsi gani ni muhimu kuelewa asili ya data yako! -Sasa, unaweza kuchambua bei kwa kipimo kulingana na bushel yao. Ukichapisha data mara moja zaidi, utaona jinsi ilivyowekwa sawa. +Sasa, unaweza kuchambua bei kwa kitengo kwa msingi wa kipimo chao cha bushel. Ikiwa uchapisha data mara moja zaidi, utaona jinsi ilivyo pangiliwa. -✅ Je, uliona kuwa malenge yanayouzwa kwa nusu bushel ni ghali sana? Je, unaweza kuelewa kwa nini? Kidokezo: malenge madogo ni ghali sana kuliko makubwa, labda kwa sababu kuna mengi zaidi yao kwa bushel, ikizingatiwa nafasi isiyotumika inayochukuliwa na malenge moja kubwa la pie. +✅ Umeona malenge yanayouzwa kwa nusu-bushel ni ghali sana? Je, unaweza kupata sababu? Vidokezo: malenge madogo ni ghali zaidi kuliko makubwa, labda kwa sababu kuna mengi zaidi ndani ya bushel, ikizingatiwa nafasi isiyotumika na malenge makubwa ya aina ya pai. -## Mikakati ya Uonyeshaji +## Mikakati ya Uoneshaji Data -Sehemu ya jukumu la mwanasayansi wa data ni kuonyesha ubora na asili ya data wanayofanya kazi nayo. Ili kufanya hivyo, mara nyingi huunda uonyeshaji wa kuvutia, au grafu, chati, na michoro, inayoonyesha vipengele tofauti vya data. Kwa njia hii, wanaweza kuonyesha kwa macho uhusiano na mapungufu ambayo vinginevyo ni vigumu kugundua. +Sehemu ya kazi ya mtaalamu wa data ni kuonyesha ubora na asili ya data wanayofanya kazi nayo. Kufanya hivi, mara nyingi huunda uoneshaji wa kuvutia, au michoro, grafu, na chati, zikionyesha nyanja tofauti za data. Kwa njia hii, wanaweza kuonyesha kwa macho uhusiano na mapengo ambayo vinginevyo ni vigumu kugundua. -[![ML kwa wanaoanza - Jinsi ya Kuonyesha Data kwa Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML kwa wanaoanza - Jinsi ya Kuonyesha Data kwa Matplotlib") +[![ML kwa wakijifunza - Jinsi ya Kuonesha Data kwa Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML kwa wakijifunza - Jinsi ya Kuonesha Data kwa Matplotlib") -> 🎥 Bofya picha hapo juu kwa video fupi inayofanya kazi ya kuonyesha data kwa somo hili. +> 🎥 Bonyeza picha hapo juu kwa video fupi ya kuonyesha jinsi ya kuonesha data kwa somo hili. -Uonyeshaji pia unaweza kusaidia kuamua mbinu ya kujifunza kwa mashine inayofaa zaidi kwa data. Scatterplot inayofuata mstari, kwa mfano, inaonyesha kuwa data ni mgombea mzuri kwa zoezi la regression ya mstari. +Uoneshaji pia unaweza kusaidia kubainisha mbinu ya kujifunza mashine inayofaa zaidi kwa ajili ya data. Grosari ya pointi inayoonekana kufuata mstari, kwa mfano, inaonyesha kuwa data ni mzuri kwa mtihani wa regresheni ya mistari. -Maktaba moja ya uonyeshaji wa data inayofanya kazi vizuri katika daftari za Jupyter ni [Matplotlib](https://matplotlib.org/) (ambayo pia uliiona katika somo la awali). +Maktaba moja ya uoneshaji data ambayo inafanya kazi vizuri katika vitabu vya Jupyter ni [Matplotlib](https://matplotlib.org/) (ambayo pia uliiona katika somo lililopita). -> Pata uzoefu zaidi na uonyeshaji wa data katika [mafunzo haya](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott). +> Pata uzoefu zaidi wa uoneshaji data katika [mafunzo haya](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott). -## Zoezi - jaribu Matplotlib +## Zoefaa - jaribu Matplotlib -Jaribu kuunda grafu za msingi kuonyesha dataframe mpya uliyoijenga. Grafu ya mstari wa msingi ingeonyesha nini? +Jaribu kuunda michoro ya msingi kuonyesha dataframe mpya uliyounda. Mchoro wa mstari wa msingi utaonyesha nini? 1. Ingiza Matplotlib juu ya faili, chini ya uingizaji wa Pandas: @@ -164,8 +164,8 @@ Jaribu kuunda grafu za msingi kuonyesha dataframe mpya uliyoijenga. Grafu ya mst import matplotlib.pyplot as plt ``` -1. Rerun daftari lote ili kusasisha. -1. Mwisho wa daftari, ongeza seli kuonyesha data kama sanduku: +1. Runia tena kitabu chote kwa ajili ya kufufua. +1. Chini ya kitabu, ongeza seli kuonyesha data kama sanduku: ```python price = new_pumpkins.Price @@ -174,44 +174,121 @@ Jaribu kuunda grafu za msingi kuonyesha dataframe mpya uliyoijenga. Grafu ya mst plt.show() ``` - ![Scatterplot inayoonyesha uhusiano wa bei na mwezi](../../../../2-Regression/2-Data/images/scatterplot.png) + ![Grosari ya pointi inaonyesha uhusiano wa bei kwa mwezi](../../../../translated_images/sw/scatterplot.b6868f44cbd2051c.webp) - Je, grafu hii ni ya manufaa? Je, kuna kitu kinachokushangaza kuhusu grafu hii? + Je, ni mchoro wenye maana? Kuna kitu chochote kinachokushangaza kuhusu? - Haifai sana kwani inachofanya ni kuonyesha data yako kama mchanganyiko wa pointi katika mwezi fulani. + Haufaidiki sana kwa kuwa huchapisha data yako kama pointi zilizotawanyika katika mwezi fulani. -### Ifanye iwe ya manufaa +### Ifanye iwe na maana -Ili grafu zionyeshe data ya manufaa, kwa kawaida unahitaji kuunda vikundi vya data kwa namna fulani. Hebu jaribu kuunda grafu ambapo mhimili wa y unaonyesha miezi na data inaonyesha usambazaji wa data. +Ili kupata chati zinazoshughulikia data muhimu, kawaida unahitaji kuunganya data kwa namna fulani. Tujaribu kuunda mchoro ambapo mhimili wa y unaonyesha miezi na data inaonesha usambazaji wa data. -1. Ongeza seli kuunda grafu ya vikundi vya bar: +1. Ongeza seli kuunda chati ya bawa iliyounganishwa: ```python new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') plt.ylabel("Pumpkin Price") ``` - ![Grafu ya bar inayoonyesha uhusiano wa bei na mwezi](../../../../2-Regression/2-Data/images/barchart.png) + ![Chati ya bawa inaonyesha uhusiano wa bei kwa mwezi](../../../../translated_images/sw/barchart.a833ea9194346d76.webp) + + Hii ni uoneshaji wa data wenye maana zaidi! Inaonekana kuonyesha kuwa bei ya juu ya malenge hutokea Septemba na Oktoba. Je, hii inakidhi matarajio yako? Sababu ni gani au la? + +## Zoefaa - jaribu Seaborn + +Matplotlib ni yenye nguvu, lakini inaweza kuhitaji msimbo mwingi kufanya chati nzuri. [Seaborn](https://seaborn.pydata.org/) ni maktaba iliyojengwa _juu ya_ Matplotlib iliyoundwa kwa uoneshaji wa takwimu za data. Inafanya kazi moja kwa moja na dataframes za Pandas, inatumia mitindo ya kupendeza ya chaguo, na inakuwezesha kuunda michoro ya taarifa kwa msimbo mdogo zaidi. Kwa sababu Seaborn hurudisha vitu vya Matplotlib, bado unaweza kutumia kila kitu unachojua kuhusu Matplotlib kuboresha matokeo. + +> Ikiwa bado huna Seaborn imewekwa, voila na `pip install seaborn`. + +1. Ingiza Seaborn juu ya kitabu, chini ya uingizaji mwingine. Kwa kawaida huingizwa kama `sns`: + + ```python + import seaborn as sns + ``` + +### Michoro ya pointi kuonyesha uhusiano + +Sehemu kubwa ya kuchunguza data kabla ya kujenga mfano ni kutafuta _uhusiano_ kati ya vigezo. [mchoro wa mkusanyiko wa pointi](https://en.wikipedia.org/wiki/Scatter_plot) ni chombo mojawapo bora kwa hili: kama pointi zinaonekana kufuata mstari, vigezo viwili vinaweza kuwa na uhusiano, jambo zuri la kuonyesha kuwa mfano wa regresheni ya mstari unaweza kufanya kazi. + +1. Tengeneza upya mchoro wa bei kwa mwezi wa pointi uliofanya awali, huku kwa kutumia [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) ya Seaborn (mchoro wa uhusiano), ambayo hufanya kazi moja kwa moja na safu za dataframe yako: + + ```python + sns.relplot(x="Price", y="Month", data=new_pumpkins) + ``` + + ![Mchoro wa mkusanyiko wa pointi wa Seaborn unaonyesha uhusiano wa bei kwa mwezi](../../../../translated_images/sw/relplot.a03837d8f0329cec.webp) + + Unaona jinsi unavyopitisha _majina ya safu_ na dataframe, na Seaborn hutunza lebo za mhimili kwa niaba yako. + +2. Unaweza kubadili kuwa mchoro wa mstari kwa kupitisha `kind="line"`. Seaborn pia huteka bendi yenye kivuli kuonyesha kiwango cha kujiamini karibu na mstari huo: + + ```python + sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins) + ``` + + ![Mchoro wa mstari wa Seaborn unaonyesha uhusiano wa bei kwa mwezi](../../../../translated_images/sw/lineplot.f9034ba47b1e30ee.webp) + + Hili data ni zenye kelele nyingi, hivyo mchoro wa mstari si chaguo bora hapa — lakini linaonyesha urahisi wa kubadilisha aina za chati katika Seaborn. + +### Chati za bawa kuonyesha usambazaji + + +Hapo awali ulipanga data kwa mkono kuunda chati ya mawimbi kwa kutumia Matplotlib. Seaborn's [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) (kina chati cha makundi) inaweza kufanya upangaji na muhtasari kwa niaba yako. Kwa kawaida `kind="bar"` inaonyesha wastani wa kila kundi pamoja na mstari mweusi unaoashiria kikomo cha kujiamini. + +1. Tengeneza chati ya mawimbi ya wastani wa bei kwa kila mwezi: + + ```python + sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar") + ``` + + ![Chati ya mabawaba ya Seaborn inaonyesha usambazaji wa bei kwa kila mwezi](../../../../translated_images/sw/catplot.e73fc35fdf96242b.webp) + + Hii inathibitisha kile ulichoona na Matplotlib — bei huongezeka karibu na Septemba na Oktoba — lakini Seaborn pia inaonyesha jinsi bei _inavyotofautiana_ ndani ya kila mwezi. + +### Ramani za joto kuonyesha uhusiano + +Chati za alama hulinganisha vigezo viwili kwa wakati mmoja. Unapokuwa na safu kadhaa za nambari, [ramani ya joto](https://en.wikipedia.org/wiki/Heat_map) hukuwezesha kuona nguvu ya uhusiano kati ya jozi _kila_ la safu kwa wakati mmoja. Hii ni njia ya kawaida ya kugundua vipengele vilivyohusiana zaidi kabla ya kuchagua ni ipi yaingizwe kwenye modeli (na aina hiyo hiyo ya chati hutumika baadaye kuonyesha matrisi za mchanganyiko katika aina). + +1. Tengeneza matriki ya uhusiano kwa kutumia Pandas, kisha chora kwa kutumia Seaborn's [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html). Chaguo la `annot=True` linaandika thamani za uhusiano kila seli: + + ```python + correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr() + sns.heatmap(correlations, annot=True, cmap="coolwarm") + ``` + + ![Ramani ya joto ya Seaborn inaonyesha uhusiano kati ya safu za nambari](../../../../translated_images/sw/heatmap.bd98dce43b404c57.webp) + + Thamani karibu na `1` (au `-1`) zinamaanisha safu za nambari zina uhusiano _mwenye mstari_ mkali. Angalia jinsi `Bei ya Chini` na `Bei ya Juu` zinavyohusiana karibu kabisa. `Mwezi`, kwa upande mwingine, unaonyesha uhusiano wa mstari dhaifu na bei — ingawa chati ya mabawaba hapo juu ilionyesha kilele cha msimu wazi Septemba na Oktoba. Hiyo ni somo muhimu: mlinganyo wa uhusiano hupima tu uhusiano wa mstari mwelekeo moja, hivyo unaweza kupoteza mifumo ya msimu au mingine isiyo ya mstari. ✅ Ni kwa nini ni muhimu kuangalia ramani ya joto *na* chati kama chati ya mabawaba kabla ya kuamua ni safu gani zitumike? + +### Matplotlib au Seaborn? + +Maktaba zote mbili zinapaswa kujulikana: + +- **Matplotlib** inakupa udhibiti wa kina juu ya kila kipengele cha chati na ni msingi wa karibu kila maktaba nyingine za kuchora Python. +- **Seaborn** hutoa kazi za ngazi ya juu na mipangilio ya kuvutia kwa chati za takwimu, hufanya kazi moja kwa moja na dataframes, na mara nyingi ni haraka zaidi kwa uchambuzi wa data wa uchunguzi. - Hii ni uonyeshaji wa data wa manufaa zaidi! Inaonekana kuonyesha kuwa bei ya juu zaidi ya malenge hutokea Septemba na Oktoba. Je, hilo linakubaliana na matarajio yako? Kwa nini au kwa nini siyo? +Njia ya kawaida ni kutumia Seaborn kuchunguza data kwa haraka, kisha kurudi kwa Matplotlib unapohitaji kubinafsisha maelezo. --- ## 🚀Changamoto -Chunguza aina tofauti za uonyeshaji ambazo Matplotlib inatoa. Ni aina gani zinazofaa zaidi kwa matatizo ya regression? +Chunguza aina tofauti za uonyeshaji ambazo Matplotlib na Seaborn hutoa. Ni aina gani zinafaa zaidi kwa matatizo ya mregesho? -## [Jaribio la baada ya somo](https://ff-quizzes.netlify.app/en/ml/) +## [Mtihani baada ya mihadhara](https://ff-quizzes.netlify.app/en/ml/) -## Mapitio na Kujisomea +## Mapitio na Kujifunza Binafsi -Angalia njia nyingi za kuonyesha data. Tengeneza orodha ya maktaba mbalimbali zinazopatikana na eleza ni zipi bora kwa aina fulani za kazi, kwa mfano uonyeshaji wa 2D dhidi ya uonyeshaji wa 3D. Unagundua nini? +Angalia njia nyingi za kuonyesha data. Tengeneza orodha ya maktaba mbalimbali zilizopo na angazia ni zipi zinafaa kwa aina za kazi mbalimbali, kwa mfano uonyeshaji wa 2D dhidi ya uonyeshaji wa 3D. Je, unagundua nini? -## Kazi +## Kazi ya Nyumbani [Kuchunguza uonyeshaji](assignment.md) --- -**Kanusho**: -Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file + +**Kionyozo**: +Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kupata usahihi, tafadhali fahamu kwamba tafsiri za kiotomatiki zinaweza kuwa na makosa au upungufu wa usahihi. Hati ya asili katika lugha yake halisi inapaswa kuchukuliwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu inayofanywa na binadamu inapendekezwa. Hatutojibu kwa kuelewa vibaya au tafsiri potofu zinazotokea kutokana na matumizi ya tafsiri hii. + \ No newline at end of file diff --git a/translations/sw/2-Regression/2-Data/solution/notebook.ipynb b/translations/sw/2-Regression/2-Data/solution/notebook.ipynb index 36f1d0a54..7128dd4e5 100644 --- a/translations/sw/2-Regression/2-Data/solution/notebook.ipynb +++ b/translations/sw/2-Regression/2-Data/solution/notebook.ipynb @@ -3,7 +3,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "## Mrejesho wa Mstari kwa Maboga ya Zombo - Somo la 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": [ + "## Kuonyesha Picha kwa Seaborn\n", + "\n", + "[Seaborn](https://seaborn.pydata.org/) imejengwa juu ya Matplotlib na hufanya kazi moja kwa moja na dataframes, na kufanya iwe haraka kuunda michoro ya takwimu ya kuvutia kwa msimbo kidogo sana.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Michoro za kuzagaza kuonyesha mahusiano\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": [ + "### Michoro ya nguzo kuonyesha mgawanyo\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**Kanusho**: \nHati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kwa usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, inashauriwa kutumia huduma ya tafsiri ya kitaalamu ya binadamu. Hatutawajibika kwa maelewano mabaya au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii.\n" + "### Ramani za joto kuonyesha uhusiano\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**Kionyozo**:\nHati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kupata usahihi, tafadhali fahamu kwamba tafsiri za kiotomatiki zinaweza kuwa na makosa au upungufu wa usahihi. Hati ya asili katika lugha yake halisi inapaswa kuchukuliwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu inayofanywa na binadamu inapendekezwa. Hatutojibu kwa kuelewa vibaya au tafsiri potofu zinazotokea kutokana na matumizi ya tafsiri hii.\n\n" ] } ], @@ -424,13 +487,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "95726f0b8283628d5356a4f8eb8b4b76", - "translation_date": "2025-09-06T13:46:25+00:00", - "source_file": "2-Regression/2-Data/solution/notebook.ipynb", - "language_code": "sw" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/sw/8-Reinforcement/1-QLearning/README.md b/translations/sw/8-Reinforcement/1-QLearning/README.md index 5bb9d4f9d..921d9d442 100644 --- a/translations/sw/8-Reinforcement/1-QLearning/README.md +++ b/translations/sw/8-Reinforcement/1-QLearning/README.md @@ -1,47 +1,47 @@ -# Utangulizi wa Kujifunza kwa Kuimarisha na Q-Learning +# Utangulizi wa Kujifunza kwa Uimarishaji na Q-Learning -![Muhtasari wa kujifunza kwa kuimarisha katika mashine ya kujifunza kwenye sketchnote](../../../../sketchnotes/ml-reinforcement.png) +![Muhtasari wa uimarishaji katika ujifunzaji wa mashine kwa sketchnote](../../../../translated_images/sw/ml-reinforcement.94024374d63348db.webp) > Sketchnote na [Tomomi Imura](https://www.twitter.com/girlie_mac) -Kujifunza kwa kuimarisha kunahusisha dhana tatu muhimu: wakala, hali fulani, na seti ya vitendo kwa kila hali. Kwa kutekeleza kitendo katika hali maalum, wakala hupewa tuzo. Fikiria tena mchezo wa kompyuta wa Super Mario. Wewe ni Mario, uko katika kiwango cha mchezo, umesimama karibu na ukingo wa mwamba. Juu yako kuna sarafu. Wewe ukiwa Mario, katika kiwango cha mchezo, katika nafasi maalum ... hiyo ndiyo hali yako. Kusonga hatua moja kulia (kitendo) kutakupeleka kwenye ukingo, na hiyo itakupa alama ya chini ya nambari. Hata hivyo, kubonyeza kitufe cha kuruka kutakufanya upate alama na utaendelea kuishi. Hilo ni jambo chanya na linapaswa kukupa alama chanya ya nambari. +Kujifunza kwa uimarishaji kunahusisha dhana muhimu tatu: wakala, baadhi ya hali, na seti ya vitendo kwa kila hali. Kwa kutekeleza kitendo katika hali iliyotajwa, wakala hupata zawadi. Tena fikiria mchezo wa kompyuta Super Mario. Wewe ni Mario, uko kwenye kiwango cha mchezo, unasimama karibu na kingo ya mto. Juu yako kuna sarafu. Wewe ukiwa Mario, katika kiwango cha mchezo, katika nafasi maalum ... hiyo ni hali yako. Kusonga hatua moja kulia (kitendo) kutakupeleka juu ya kingo, na hiyo itakupatia alama ya chini ya nambari. Hata hivyo, kubonyeza kitufe cha kuruka kungekupa alama na ungebaki hai. Hiyo ni matokeo mazuri na inapaswa kukupatia alama nzuri za nambari. -Kwa kutumia kujifunza kwa kuimarisha na simulator (mchezo), unaweza kujifunza jinsi ya kucheza mchezo ili kuongeza tuzo ambayo ni kuishi na kupata alama nyingi iwezekanavyo. +Kwa kutumia kujifunza kwa uimarishaji na kielelezo (mchezo), unaweza kujifunza jinsi ya kucheza mchezo ili kuongeza zawadi ambayo ni kubaki hai na kupata alama nyingi iwezekanavyo. -[![Utangulizi wa Kujifunza kwa Kuimarisha](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) +[![Utangulizi wa Kujifunza kwa Uimarishaji](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) -> 🎥 Bonyeza picha hapo juu kusikiliza Dmitry akijadili Kujifunza kwa Kuimarisha +> 🎥 Bofya picha hapo juu kusikiliza Dmitry akijadili Kujifunza kwa Uimarishaji -## [Jaribio la awali la somo](https://ff-quizzes.netlify.app/en/ml/) +## [Mtihani wa kabla ya somo](https://ff-quizzes.netlify.app/en/ml/) -## Mahitaji na Usanidi +## Masharti ya awali na Usanidi -Katika somo hili, tutajaribu baadhi ya msimbo kwa kutumia Python. Unapaswa kuwa na uwezo wa kuendesha msimbo wa Jupyter Notebook kutoka somo hili, ama kwenye kompyuta yako au mahali fulani mtandaoni. +Katika somo hili, tutajaribu baadhi ya msimbo wa Python. Unapaswa kuwa na uwezo wa kuendesha msimbo wa Jupyter Notebook kutoka somo hili, iwe kwenye kompyuta yako au mahali fulani kwenye wingu. -Unaweza kufungua [notebook ya somo](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) na kupitia somo hili ili kujifunza. +Unaweza kufungua [daftari la somo](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) na kupitia somo hili kujifunza. -> **Note:** Ikiwa unafungua msimbo huu kutoka mtandaoni, unahitaji pia kupata faili [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), ambayo inatumika katika msimbo wa notebook. Ongeza faili hiyo kwenye saraka sawa na notebook. +> **Kumbuka:** Ikiwa unafungua msimbo huu kutoka kwenye wingu, pia unahitaji kupakua faili la [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), ambalo linatumika kwenye msimbo wa daftari. Liaweke kwenye saraka ile ile kama daftari. ## Utangulizi -Katika somo hili, tutachunguza ulimwengu wa **[Peter na Mbwa Mwitu](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)**, uliochochewa na hadithi ya muziki ya mtunzi wa Kirusi, [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev). Tutatumia **Kujifunza kwa Kuimarisha** kumruhusu Peter kuchunguza mazingira yake, kukusanya matufaha matamu na kuepuka kukutana na mbwa mwitu. +Katika somo hili, tutachunguza dunia ya **[Peter na Wolf](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)**, iliyohamasishwa na hadithi ya muziki na mtunzi kutoka Urusi, [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev). Tutatumia **Kujifunza kwa Uimarishaji** kumruhusu Peter kuchunguza mazingira yake, kukusanya tufaha tamu na kuepuka kukutana na mbwa mwitu. -**Kujifunza kwa Kuimarisha** (RL) ni mbinu ya kujifunza inayoturuhusu kujifunza tabia bora ya **wakala** katika **mazingira** fulani kwa kufanya majaribio mengi. Wakala katika mazingira haya anapaswa kuwa na **lengo**, lililofafanuliwa na **kazi ya tuzo**. +**Kujifunza kwa Uimarishaji** (RL) ni mbinu ya kujifunza inayoturuhusu kujifunza tabia bora ya **wakala** katika **mazingira** fulani kwa kufanya majaribio mengi. Wakala katika mazingira haya anapaswa kuwa na **lengo**, linaloelezwa na **kazi ya zawadi**. ## Mazingira -Kwa urahisi, hebu tuchukulie ulimwengu wa Peter kuwa ubao wa mraba wa ukubwa `width` x `height`, kama hivi: +Kwa urahisi, tuchukulie dunia ya Peter kuwa safu ya mstatili yenye ukubwa wa `width` x `height`, kama hii: -![Mazingira ya Peter](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![Mazingiari ya Peter](../../../../translated_images/sw/environment.40ba3cb66256c93f.webp) -Kila seli katika ubao huu inaweza kuwa: +Kila kisanduku kwenye bamba hili linaweza kuwa: -* **ardhi**, ambapo Peter na viumbe wengine wanaweza kutembea. -* **maji**, ambapo huwezi kutembea. -* **mti** au **nyasi**, mahali ambapo unaweza kupumzika. -* **tufaha**, ambalo linawakilisha kitu ambacho Peter angefurahia kukipata ili kujilisha. +* **ardhi**, ambayo Peter na viumbe wengine wanaweza kutembea juu yake. +* **maji**, ambayo wazi hutaweza kutembea juu yake. +* **mti** au **nyasi**, mahali pa kupumzika. +* **tufaha**, kinachowakilisha kitu ambacho Peter atafurahia kupata ili kujilisha. * **mbwa mwitu**, ambaye ni hatari na anapaswa kuepukwa. -Kuna moduli ya Python tofauti, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), ambayo ina msimbo wa kufanya kazi na mazingira haya. Kwa sababu msimbo huu si muhimu kwa kuelewa dhana zetu, tutaleta moduli hiyo na kuitumia kuunda ubao wa mfano (msimbo wa block 1): +Kuna moduli tofauti ya Python, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), ambayo ina msimbo wa kufanya kazi na mazingira haya. Kwa kuwa msimbo huu hauhitaji kueleweka kwa dhana zetu, tutaleta moduli hii na kuitumia kutengeneza bamba la mfano (kifungu cha msimbo 1): ```python from rlboard import * @@ -56,59 +56,59 @@ Msimbo huu unapaswa kuchapisha picha ya mazingira yanayofanana na ile hapo juu. ## Vitendo na sera -Katika mfano wetu, lengo la Peter litakuwa kupata tufaha, huku akiepuka mbwa mwitu na vikwazo vingine. Ili kufanya hivyo, anaweza kimsingi kutembea hadi apate tufaha. +Katika mfano wetu, lengo la Peter litakuwa kupata tufaha, huku akiiepuka mbwa mwitu na vikwazo vingine. Kwa kufanya hivyo, anaweza kutembea hadi apate tufaha. -Kwa hivyo, katika nafasi yoyote, anaweza kuchagua kati ya mojawapo ya vitendo vifuatavyo: juu, chini, kushoto na kulia. +Kwa hivyo, katika nafasi yoyote, anaweza kuchagua moja ya vitendo vifuatavyo: juu, chini, kushoto na kulia. -Tutafafanua vitendo hivyo kama kamusi, na kuviunganisha na jozi za mabadiliko ya kuratibu yanayolingana. Kwa mfano, kusonga kulia (`R`) kungefanana na jozi `(1,0)`. (msimbo wa block 2): +Tutafafanua vitendo hivyo kama kamusi, na kuviweka kwenye mabadiliko ya viwango vinavyohusiana. Kwa mfano, kusogea kulia (`R`) kutafanana na jozi `(1,0)`. (kifungu cha msimbo 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()) } ``` -Kwa muhtasari, mkakati na lengo la hali hii ni kama ifuatavyo: +Kuhitimisha, mkakati na lengo la sinia hii ni kama ifuatavyo: -- **Mkakati**, wa wakala wetu (Peter) unafafanuliwa na kinachoitwa **sera**. Sera ni kazi inayorejesha kitendo katika hali yoyote iliyotolewa. Katika kesi yetu, hali ya tatizo inawakilishwa na ubao, ikiwa ni pamoja na nafasi ya sasa ya mchezaji. +- **Mkakati**, wa wakala wetu (Peter) unafafanuliwa na kinachoitwa **sera**. Sera ni kazi inayorejesha kitendo katika hali yoyote iliyotolewa. Katika kesi yetu, hali ya tatizo inaonyeshwa na bamba, ikiwa ni pamoja na nafasi ya sasa ya mchezaji. -- **Lengo**, la kujifunza kwa kuimarisha ni hatimaye kujifunza sera nzuri ambayo itaturuhusu kutatua tatizo kwa ufanisi. Hata hivyo, kama msingi, hebu tuchukulie sera rahisi inayoitwa **kutembea bila mpangilio**. +- **Lengo**, la kujifunza kwa uimarishaji ni hatimaye kujifunza sera nzuri itakayoruhusu kutatua tatizo kwa ufanisi. Hata hivyo, kama msingi, tuchukulie sera rahisi kabisa inayoitwa **kutembea kwa nasibu**. -## Kutembea bila mpangilio +## Kutembea kwa nasibu -Hebu kwanza tutatue tatizo letu kwa kutekeleza mkakati wa kutembea bila mpangilio. Kwa kutembea bila mpangilio, tutachagua kitendo kinachofuata bila mpangilio kutoka kwa vitendo vinavyoruhusiwa, hadi tufikie tufaha (msimbo wa block 3). +Hebu kwanza tatua tatizo letu kwa kutekeleza mkakati wa kutembea kwa nasibu. Kwa kutembea kwa nasibu, tutachagua kitendo kijacho kwa bahati kutoka vitendo vinavyoruhusiwa, hadi tufikie tufaha (kifungu cha msimbo 3). -1. Tekeleza kutembea bila mpangilio kwa msimbo ulio hapa chini: +1. Tekeleza kutembea kwa nasibu kwa msimbo unaofuata: ```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 # idadi ya hatua + # weka nafasi ya mwanzo if start_position: m.human = start_position else: m.random_start() while True: if m.at() == Board.Cell.apple: - return n # success! + return n # mafanikio! if m.at() in [Board.Cell.wolf, Board.Cell.water]: - return -1 # eaten by wolf or drowned + return -1 # kuliwa na mbwa mwitu au kuzama 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) # fanya mwelekeo halisi break n+=1 walk(m,random_policy) ``` - Simu ya `walk` inapaswa kurejesha urefu wa njia inayolingana, ambayo inaweza kutofautiana kutoka kwa mzunguko mmoja hadi mwingine. + Wito kwa `walk` unapaswa kurejesha urefu wa njia inayohusiana, ambayo inaweza kutofautiana kutoka mara moja hadi nyingine. -1. Endesha jaribio la kutembea mara kadhaa (sema, 100), na uchapishe takwimu zinazotokana (msimbo wa block 4): +1. Endesha jaribio la kutembea mara kadhaa (tuseme, 100), na chapisha takwimu zinazotokana (kifungu cha msimbo 4): ```python def print_statistics(policy): @@ -125,17 +125,17 @@ Hebu kwanza tutatue tatizo letu kwa kutekeleza mkakati wa kutembea bila mpangili print_statistics(random_policy) ``` - Kumbuka kuwa urefu wa wastani wa njia ni karibu hatua 30-40, ambayo ni nyingi, ikizingatiwa kwamba umbali wa wastani hadi tufaha lililo karibu ni karibu hatua 5-6. + Kumbuka kuwa urefu wa wastani wa njia ni hatua 30-40, ambayo ni mengi, ikizingatiwa kwamba umbali wa wastani hadi tufaha ulio karibu ni hatua 5-6. - Unaweza pia kuona jinsi Peter anavyosonga wakati wa kutembea bila mpangilio: + Pia unaweza kuona muonekano wa mwendo wa Peter wakati wa kutembea kwa nasibu: - ![Kutembea bila mpangilio kwa Peter](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) + ![Kutembea kwa Nasibu kwa Peter](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) -## Kazi ya tuzo +## Kazi ya zawadi -Ili kufanya sera yetu iwe na akili zaidi, tunahitaji kuelewa ni hatua zipi ni "bora" kuliko nyingine. Ili kufanya hivyo, tunahitaji kufafanua lengo letu. +Ili kufanya sera yetu kuwa na akili zaidi, tunahitaji kuelewa ni ngapi hatua ni "bora" kuliko nyingine. Kufanya hivyo, tunahitaji kufafanua lengo letu. -Lengo linaweza kufafanuliwa kwa maneno ya **kazi ya tuzo**, ambayo itarejesha thamani fulani ya alama kwa kila hali. Kadri nambari inavyokuwa juu, ndivyo kazi ya tuzo inavyokuwa bora. (msimbo wa block 5) +Lengo linaweza kufafanuliwa kwa matumizi ya **kazi ya zawadi**, ambayo itarejesha baadhi ya alama kwa kila hali. Idadi kubwa ya nambari, ni kazi bora ya zawadi. (kifungu cha msimbo 5) ```python move_reward = -0.1 @@ -154,39 +154,115 @@ def reward(m,pos=None): return move_reward ``` -Jambo la kuvutia kuhusu kazi za tuzo ni kwamba katika hali nyingi, *tunapewa tuzo kubwa mwishoni mwa mchezo tu*. Hii inamaanisha kuwa algoriti yetu inapaswa kwa namna fulani kukumbuka hatua "nzuri" zinazopelekea tuzo chanya mwishoni, na kuongeza umuhimu wake. Vivyo hivyo, hatua zote zinazopelekea matokeo mabaya zinapaswa kupunguzwa. +Jambo la kuvutia kuhusu kazi za zawadi ni kwamba katika kesi nyingi, *tunapewa tu zawadi kubwa mwishoni mwa mchezo*. Hii inamaanisha kuwa algoriti yetu inapaswa kukumbuka "hatua nzuri" zinazosababisha zawadi nzuri mwishoni, na kuongeza umuhimu wake. Vivyo hivyo, hatua zote zinazotuletea matokeo mabaya zinapaswa kuzuiwa. ## Q-Learning -Algoriti ambayo tutajadili hapa inaitwa **Q-Learning**. Katika algoriti hii, sera inafafanuliwa na kazi (au muundo wa data) inayoitwa **Q-Table**. Inarekodi "ubora" wa kila kitendo katika hali fulani. +Algoriti tutakayojadili hapa inaitwa **Q-Learning**. Katika algoriti hii, sera inafafanuliwa na kazi (au muundo wa data) unaoitwa **Meza ya Q**. Inarekodi "ubora" wa kila kitendo katika hali fulani. -Inaitwa Q-Table kwa sababu mara nyingi ni rahisi kuiwakilisha kama jedwali, au safu ya vipimo vingi. Kwa kuwa ubao wetu una vipimo `width` x `height`, tunaweza kuwakilisha Q-Table kwa kutumia safu ya numpy yenye umbo `width` x `height` x `len(actions)`: (msimbo wa block 6) +Inaitwa Meza ya Q kwa sababu mara nyingi ni rahisi kuionyesha kama meza, au safu nyingi za vipimo. Tukiwa na bamba lenye vipimo `width` x `height`, tunaweza kuwakilisha Meza ya Q kwa kutumia numpy array yenye sura `width` x `height` x `len(actions)`: (kifungu cha msimbo 6) ```python Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions) ``` -Kumbuka kuwa tunaanzisha maadili yote ya Q-Table na thamani sawa, katika kesi yetu - 0.25. Hii inafanana na sera ya "kutembea bila mpangilio", kwa sababu hatua zote katika kila hali ni sawa. Tunaweza kupitisha Q-Table kwa kazi ya `plot` ili kuonyesha jedwali kwenye ubao: `m.plot(Q)`. +Tazama kuwa tunaanzisha thamani zote za Meza ya Q kwa thamani sawa, katika kesi yetu - 0.25. Hii inahusiana na sera ya "kutembea kwa nasibu", kwa sababu hatua zote katika kila hali ni sawa. Tunaweza kuipasa Meza ya Q kwa kazi ya `plot` ili kukuonyesha meza kwenye bamba: `m.plot(Q)`. -![Mazingira ya Peter](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![Mazingira ya Peter](../../../../translated_images/sw/env_init.04e8f26d2d60089e.webp) -Katikati ya kila seli kuna "mshale" unaoonyesha mwelekeo unaopendelewa wa harakati. Kwa kuwa mwelekeo wote ni sawa, nukta inaonyeshwa. +Katikati ya kila kisanduku kuna "mshale" unaoashiria mwelekeo unaopendelea wa mwendo. Kwa kuwa mwelekeo yote ni sawa, alama ya doa inaonyeshwa. -Sasa tunahitaji kuendesha simulizi, kuchunguza mazingira yetu, na kujifunza usambazaji bora wa maadili ya Q-Table, ambayo yataturuhusu kupata njia ya kufikia tufaha haraka zaidi. +Sasa tunahitaji kuendesha maonyesho, kuchunguza mazingira yetu, na kujifunza sehemu bora ya thamani za Meza ya Q, ambazo zitaturuhusu kupata njia hadi tufaha haraka zaidi. -## Kiini cha Q-Learning: Mlinganyo wa Bellman +## Muhtasari wa Q-Learning: Mlinganyo wa Bellman -Mara tu tunapoanza kusonga, kila kitendo kitakuwa na tuzo inayolingana, yaani tunaweza kinadharia kuchagua kitendo kinachofuata kulingana na tuzo ya haraka zaidi. Hata hivyo, katika hali nyingi, hatua hiyo haitafanikisha lengo letu la kufikia tufaha, na hivyo hatuwezi kuamua mara moja ni mwelekeo gani ni bora. +Mara tu tunapoanza kusonga, kila kitendo kitaambatana na zawadi inayojitokeza mara moja, yaani tunaweza kuchagua kitendo kijacho kulingana na zawadi ya haraka zaidi. Hata hivyo, katika hali nyingi, hatua itashindwa kufanikisha lengo letu la kufikia tufaha, hivyo hatuwezi kuamua mara moja mwelekeo gani ni bora. -> Kumbuka kuwa si matokeo ya haraka yanayojalisha, bali ni matokeo ya mwisho, ambayo tutapata mwishoni mwa simulizi. +> Kumbuka kuwa si matokeo ya mara moja yanayohesabiwa, bali matokeo ya mwisho, ambayo tutayapata mwishoni mwa maonyesho. -Ili kuzingatia tuzo hii ya kuchelewa, tunahitaji kutumia kanuni za **[programu ya nguvu](https://en.wikipedia.org/wiki/Dynamic_programming)**, ambayo inaturuhusu kufikiria tatizo letu kwa njia ya kurudia. +Ili kuzingatia zawadi hii ya kuchelewa, tunahitaji kutumia kanuni za **[programu ya mabadiliko](https://en.wikipedia.org/wiki/Dynamic_programming)**, ambazo zinatuwezesha kufikiria tatizo letu kwa mzunguko. -Tuseme sasa tuko katika hali *s*, na tunataka kusonga hadi hali inayofuata *s'*. Kwa kufanya hivyo, tutapokea tuzo ya haraka *r(s,a)*, iliyofafanuliwa na kazi ya tuzo, pamoja na tuzo fulani ya baadaye. Ikiwa tunadhani kwamba Q-Table yetu inaonyesha kwa usahihi "uvutaji" wa kila kitendo, basi katika hali *s'* tutachagua kitendo *a* kinacholingana na thamani ya juu zaidi ya *Q(s',a')*. Kwa hivyo, tuzo bora zaidi ya baadaye ambayo tunaweza kupata katika hali *s* itafafanuliwa kama `max` +Fikiria kuwa sasa tuko katika hali *s*, na tunataka kusonga hadi hali inayofuata *s'*. Kwa kufanya hivyo, tutapokea zawadi ya mara moja *r(s,a)*, inayofafanuliwa na kazi ya zawadi, pamoja na zawadi ya baadaye. Ikiwa tunadhani kuwa Meza yetu ya Q inaonyesha vyema "mvuto" wa kitendo chochote, basi katika hali *s'* tutachagua kitendo *a* kinacholingana na thamani kubwa zaidi ya *Q(s',a')*. hivyo, zawadi bora zaidi ya baadaye ambayo tunaweza kupata katika hali *s* itafafanuliwa kama `max`a'*Q(s',a')* (kinachotumiwa hapa ni thamani kubwa zaidi kati ya vitendo vyote vinavyowezekana *a'* katika hali *s'*). + +Huu ndio **mlinganyo wa Bellman** kwa kuhesabu thamani ya Meza ya Q katika hali *s*, ikizingatiwa kitendo *a*: + + + +Hapa γ ni kinachoitwa **kipimo cha punguzo** kinachobainisha kiwango ambacho unapaswa kupendelea zawadi ya sasa kuliko zawadi ya baadaye na kinyume chake. + +## Algoriti ya Kujifunza + +Kutokana na mlinganyo hapo juu, sasa tunaweza kuandika pseudokodi kwa algoriti yetu ya kujifunza: + +* Anzisha Meza ya Q na nambari sawa kwa kila hali na kitendo +* Weka kiwango cha kujifunza α ← 1 +* Rudia maonyesho mara nyingi + 1. Anza katika nafasi ya nasibu + 1. Rudia + 1. Chagua kitendo *a* katika hali *s* + 2. Tekeleza kitendo kwa kusonga hadi hali mpya *s'* + 3. Ikiwa tukutana na hali ya mwisho wa mchezo, au jumla ya zawadi ni ndogo sana - toka maonyeshoni + 4. Hesabu zawadi *r* katika hali mpya + 5. Sasisha Kazi ya Q kulingana na mlinganyo wa Bellman: *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ maxa'Q(s',a'))* + 6. *s* ← *s'* + 7. Sasisha jumla ya zawadi na punguza α. + +## Kutumia vs. kuchunguza + +Katika algoriti hapo juu, hatukufafanua jinsi ilivyo kamili unapaswa kuchagua kitendo katika hatua 2.1. Ikiwa tunachagua kitendo kwa bahati, tutachunguza mazingira kwa bahati, na pia kuna uwezekano mkubwa wa kufa mara nyingi na kuchunguza maeneo ambayo kawaida hatutapita. Njia mbadala itakuwa kutumia thamani za Meza ya Q ambazo tayari tunazijua, na hivyo kuchagua kitendo bora (chenye thamani kubwa ya Meza ya Q) katika hali *s*. Hata hivyo, hii itakuzuia kuchunguza hali nyingine, na kuna uwezekano usipate suluhisho bora kabisa. + +Hivyo, njia bora ni kupata usawa kati ya kuchunguza na kutumia. Hii inaweza kufanyika kwa kuchagua kitendo katika hali *s* kwa uwezekano unaolingana na thamani zilizoko katika Meza ya Q. Mwanzo, thamani za Meza ya Q zikiwa sawa zote, itakuwa sawa na uchaguzi wa nasibu, lakini tunapojifunza zaidi kuhusu mazingira yetu, tuna uwezekano mkubwa zaidi wa kufuata njia bora huku tukiruhusu wakala kuchagua njia ambayo haijachunguzwa mara kwa mara. + +## Utekelezaji wa Python + +Sasa tuko tayari kutekeleza algoriti ya kujifunza. Kabla ya kufanya hivyo, tunahitaji pia kazi inayobadilisha nambari zozote katika Meza ya Q kuwa sehemu za uwezekano kwa vitendo vinavyolingana. + +1. Tengeneza kazi `probs()`: + + ```python + def probs(v,eps=1e-4): + v = v-v.min()+eps + v = v/v.sum() + return v + ``` + + Tunaongeza `eps` chache kwenye vector ya awali ili kuepuka kugawanya kwa 0 katika kesi ya awali, wakati vipengele vyote vya vector ni sawa. + +Endesha algoriti ya kujifunza kupitia majaribio 5000, pia yanayoitwa **epocha**: (kifungu cha msimbo 8) +```python + for epoch in range(5000): + + # Chagua sehemu ya awali + m.random_start() + + # Anza kusafiri + 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) # tunaruhusu mchezaji kusogea nje ya ubao, ambayo huumaliza kipindi + 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 +``` + +Baada ya kutekeleza algoriti hii, Meza ya Q inapaswa kusasishwa na thamani zinazofafanua mvuto wa vitendo tofauti katika kila hatua. Tunaweza kujaribu kuonyesha Meza ya Q kwa kuchora vector katika kila kisanduku inayoelekeza mwelekeo unaotakiwa wa mwendo. Kwa urahisi, tunachora duara ndogo badala ya kichwa cha mshale. + + ## Kukagua sera -Kwa kuwa Q-Table inaorodhesha "mvuto" wa kila kitendo katika kila hali, ni rahisi kuitumia kufafanua urambazaji bora katika ulimwengu wetu. Katika hali rahisi, tunaweza kuchagua kitendo kinacholingana na thamani ya juu zaidi ya Q-Table: (code block 9) +Kwa kuwa Meza ya Q inaorodhesha "mvuto" wa kitendo chochote katika kila hali, ni rahisi kuitumia kufafanua njia bora ya kuvinjari katika dunia yetu. Katika kesi rahisi, tunaweza kuchagua kitendo kinacholingana na thamani kubwa zaidi ya Meza ya Q: (kifungu cha msimbo 9) ```python def qpolicy_strict(m): @@ -198,17 +274,18 @@ def qpolicy_strict(m): walk(m,qpolicy_strict) ``` -> Ukijaribu msimbo hapo juu mara kadhaa, unaweza kugundua kuwa wakati mwingine "inakwamia", na unahitaji kubonyeza kitufe cha STOP kwenye daftari ili kuisimamisha. Hii hutokea kwa sababu kunaweza kuwa na hali ambapo hali mbili "zinaelekeza" kwa kila moja kwa mujibu wa thamani bora ya Q-Value, ambapo wakala huishia kusonga kati ya hali hizo bila kikomo. + +> Ikiwa uta jaribu nambari hapo juu mara kadhaa, unaweza kugundua kwamba mara nyingine "inakwama", na unahitaji kubonyeza kitufe cha STOP kwenye daftari kuizuia. Hii hutokea kwa sababu kunaweza kuwa na hali ambazo hali mbili "zinatumia ishara" kati yao kulingana na thamani bora ya Q-Value, ambapo wakala hukaa akiendelea kusogea kati ya hali hizo wasio na kikomo. ## 🚀Changamoto -> **Kazi ya 1:** Badilisha kazi ya `walk` ili kupunguza urefu wa njia kwa idadi fulani ya hatua (sema, 100), na angalia msimbo hapo juu ukirudisha thamani hii mara kwa mara. +> **Kazi 1:** Badilisha kazi ya `walk` ili kuzuia urefu wa njia hadi hatua fulani (semka, 100), na angalia nambari hapo juu kurudisha thamani hii mara kwa mara. -> **Kazi ya 2:** Badilisha kazi ya `walk` ili isirudi kwenye maeneo ambayo tayari imekuwa hapo awali. Hii itazuia `walk` kurudia, hata hivyo, wakala bado anaweza kujikuta "amekwama" mahali ambapo hawezi kutoroka. +> **Kazi 2:** Badilisha kazi ya `walk` ili isirudi kwenye maeneo ambayo tayari imeshawahi kwenda hapo awali. Hii itazuia `walk` kuzunguka zunguka, lakini, wakala bado anaweza kuishia "kukamatwa" mahali ambapo hawezi kutoka. -## Urambazaji +## Uongozaji -Sera bora ya urambazaji itakuwa ile tuliyotumia wakati wa mafunzo, ambayo inachanganya unyonyaji na uchunguzi. Katika sera hii, tutachagua kila kitendo kwa uwezekano fulani, kulingana na thamani katika Q-Table. Mkakati huu bado unaweza kusababisha wakala kurudi kwenye nafasi ambayo tayari imechunguza, lakini, kama unavyoona kutoka kwa msimbo hapa chini, husababisha njia fupi sana kwa wastani kuelekea eneo linalotakiwa (kumbuka kuwa `print_statistics` inaendesha simulizi mara 100): (code block 10) +Sera bora ya uongozaji itakuwa ile tuliyotumia wakati wa mafunzo, inayochanganya matumizi na utafutaji. Katika sera hii, tutachagua kila kitendo kwa uwezekano fulani, kulingana na thamani kwenye Jedwali la Q. Mkakati huu bado unaweza kusababisha wakala kurudi kwenye nafasi ambayo tayari ameisafiri, lakini, kama unavyoweza kuona kutoka kwa nambari hapo chini, hutoa njia fupi sana kwa wastani kuelekea eneo linalotakiwa (kumbuka kwamba `print_statistics` inaendesha majaribio 100): (kifungu cha nambari 10) ```python def qpolicy(m): @@ -220,28 +297,32 @@ def qpolicy(m): print_statistics(qpolicy) ``` -Baada ya kuendesha msimbo huu, unapaswa kupata urefu wa njia ya wastani ndogo zaidi kuliko hapo awali, katika kiwango cha 3-6. +Baada ya kuendesha nambari hii, unapaswa kupata urefu wa njia wa wastani mdogo sana kuliko awali, katika kiwango cha 3-6. ## Kuchunguza mchakato wa kujifunza -Kama tulivyotaja, mchakato wa kujifunza ni usawa kati ya uchunguzi na unyonyaji wa maarifa yaliyopatikana kuhusu muundo wa nafasi ya tatizo. Tumeona kuwa matokeo ya kujifunza (uwezo wa kusaidia wakala kupata njia fupi kuelekea lengo) yameboreshwa, lakini pia ni ya kuvutia kuangalia jinsi urefu wa njia ya wastani unavyobadilika wakati wa mchakato wa kujifunza: +Kama tulivyosema, mchakato wa kujifunza ni usawa kati ya utafutaji na matumizi ya maarifa yaliyopatikana kuhusu muundo wa eneo la tatizo. Tumeona kwamba matokeo ya kujifunza (uwezo wa kusaidia wakala kupata njia fupi kuelekea lengo) yameboreshwa, lakini pia ni muhimu kuangalia jinsi urefu wa njia wa wastani unavyojibadilisha wakati wa mchakato wa kujifunza: + + -## Muhtasari wa mafunzo: +Mafunzo yanaweza kufupishwa kama: -- **Urefu wa njia ya wastani huongezeka**. Tunachokiona hapa ni kwamba mwanzoni, urefu wa njia ya wastani huongezeka. Hii labda ni kwa sababu tunapokuwa hatujui chochote kuhusu mazingira, tuna uwezekano wa kukwama katika hali mbaya, maji au mbwa mwitu. Tunapojifunza zaidi na kuanza kutumia maarifa haya, tunaweza kuchunguza mazingira kwa muda mrefu, lakini bado hatujui vizuri mahali ambapo matunda yapo. +- **Urefu wa njia wa wastani unaongezeka**. Tunachoona hapa ni kuwa mwanzoni, urefu wa njia wa wastani unaongezeka. Hii labda ni kwa sababu wakati hatujui chochote kuhusu mazingira, tuna uwezekano wa kukamata katika hali mbaya, kama maji au mbwa mwitu. Tunapoendelea kujifunza na kuanza kutumia maarifa haya, tunaweza kuchunguza mazingira kwa muda mrefu zaidi, lakini bado hatujui vizuri ambapo tufaha ziko. -- **Urefu wa njia hupungua, tunapojifunza zaidi**. Mara tu tunapojifunza vya kutosha, inakuwa rahisi kwa wakala kufikia lengo, na urefu wa njia huanza kupungua. Hata hivyo, bado tunafungua uchunguzi, kwa hivyo mara nyingi tunatoka kwenye njia bora, na kuchunguza chaguo mpya, na kufanya njia kuwa ndefu zaidi kuliko ilivyo bora. +- **Urefu wa njia unashuka, tunapoendelea kujifunza**. Mara tunapojifunza vya kutosha, inakuwa rahisi kwa wakala kufikia lengo, na urefu wa njia unaanza kushuka. Hata hivyo, bado tuko wazi kwa utafutaji, hivyo mara nyingi tunatoka kwenye njia bora, na kuchunguza chaguzi mpya, na kufanya njia kuwa ndefu zaidi kuliko ilivyopaswa. -- **Urefu huongezeka ghafla**. Tunachokiona pia kwenye grafu hii ni kwamba wakati fulani, urefu uliongezeka ghafla. Hii inaonyesha asili ya mchakato wa nasibu, na kwamba tunaweza wakati fulani "kuharibu" coefficients za Q-Table kwa kuandika upya na thamani mpya. Hii inapaswa kupunguzwa kwa kupunguza kiwango cha kujifunza (kwa mfano, kuelekea mwisho wa mafunzo, tunarekebisha thamani za Q-Table kwa kiasi kidogo). +- **Urefu unaongezeka ghafla**. Pia tunavyoona kwenye mchoro huu ni kwamba wakati fulani, urefu uliongezeka ghafla. Hii inaonyesha tabia isiyotabirika ya mchakato, na kwamba tunaweza wakati fulani "kuharibu" viwango vya Jedwali la Q kwa kuvitumia thamani mpya. Hii kwa kawaida inapaswa kupunguzwa kwa kupunguza kiwango cha kujifunza (kwa mfano, mwishoni mwa mafunzo, tunarekebisha thamani za Jedwali la Q kidogo tu). -Kwa ujumla, ni muhimu kukumbuka kuwa mafanikio na ubora wa mchakato wa kujifunza hutegemea sana vigezo, kama kiwango cha kujifunza, kupungua kwa kiwango cha kujifunza, na sababu ya punguzo. Hizi mara nyingi huitwa **vigezo vya juu**, ili kuzitofautisha na **vigezo**, ambavyo tunaboresha wakati wa mafunzo (kwa mfano, coefficients za Q-Table). Mchakato wa kutafuta thamani bora za vigezo vya juu huitwa **ubunifu wa vigezo vya juu**, na unastahili mada tofauti. +Kwa ujumla, ni muhimu kukumbuka kwamba mafanikio na ubora wa mchakato wa kujifunza hutegemea sana vigezo, kama kiwango cha kujifunza, kupungua kwa kiwango cha kujifunza, na kigezo cha punguzo. Hivi mara nyingi huitwa **vigezo vikuu**, kutofautisha na **vigezo**, ambavyo tunairekebisha wakati wa mafunzo (kwa mfano, viwango vya Jedwali la Q). Mchakato wa kutafuta thamani bora za vigezo vikuu huitwa **urekebishaji wa vigezo vikuu**, na ni mada tofauti kabisa. -## [Jaribio la baada ya somo](https://ff-quizzes.netlify.app/en/ml/) +## [Jaribio baada ya mihadhara](https://ff-quizzes.netlify.app/en/ml/) -## Kazi -[Dunia Halisi Zaidi](assignment.md) +## Kazi ya Nyumbani +[Dunia Yenye Maishazidi Hale Halisi](assignment.md) --- -**Kanusho**: -Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuchukuliwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file + +**Kionyozo**: +Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kupata usahihi, tafadhali fahamu kwamba tafsiri za kiotomatiki zinaweza kuwa na makosa au upungufu wa usahihi. Hati ya asili katika lugha yake halisi inapaswa kuchukuliwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu inayofanywa na binadamu inapendekezwa. Hatutojibu kwa kuelewa vibaya au tafsiri potofu zinazotokea kutokana na matumizi ya tafsiri hii. + \ No newline at end of file diff --git a/translations/sw/8-Reinforcement/2-Gym/README.md b/translations/sw/8-Reinforcement/2-Gym/README.md index 42707d534..8b21559d1 100644 --- a/translations/sw/8-Reinforcement/2-Gym/README.md +++ b/translations/sw/8-Reinforcement/2-Gym/README.md @@ -1,14 +1,34 @@ -## Mahitaji ya Awali +# Kuteleza kwa CartPole -Katika somo hili, tutatumia maktaba inayoitwa **OpenAI Gym** kuiga mazingira tofauti. Unaweza kuendesha msimbo wa somo hili kwenye kompyuta yako (mfano, kutoka Visual Studio Code), ambapo simulizi itafunguka kwenye dirisha jipya. Unapokimbia msimbo mtandaoni, huenda ukahitaji kufanya marekebisho fulani kwenye msimbo, kama ilivyoelezwa [hapa](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7). +Tatizo ambalo tumekuwa tukitatua katika somo lililopita linaweza kuonekana kama tatizo la mchezo, halitumiki sana kwa hali halisi za maisha. Hii siyo kesi, kwa sababu matatizo mengi halisi pia yanashirikiana hali hii - ikiwa ni pamoja na kucheza Chess au Go. Yanafanana, kwa sababu pia tuna bodi yenye sheria zilizowekwa na **hali ya diskrete**. + +## [Jaribio kabla ya somo](https://ff-quizzes.netlify.app/en/ml/) + +## Utangulizi + +Katika somo hili tutatumia kanuni zile zile za Q-Learning kwa tatizo lenye **hali ya kuendelea**, yaani hali inayotolewa na nambari moja au zaidi halisi. Tutashughulikia tatizo lifuatalo: + +> **Tatizo**: Ikiwa Peter anataka kutoroka mbwa mwitu, anahitaji kuweza kusogea kwa kasi zaidi. Tutaona jinsi Peter anavyoweza kujifunza kuteleza, hasa, kudumisha usawa, kwa kutumia Q-Learning. + +![Kimbilio kubwa!](../../../../translated_images/sw/escape.18862db9930337e3.webp) + +> Peter na marafiki zake wanatumia ubunifu kutoroka mbwa mwitu! Picha na [Jen Looper](https://twitter.com/jenlooper) + +Tutatumia toleo lililorahisishwa la kusawazisha linalojulikana kama tatizo la **CartPole**. Katika dunia ya cartpole, tuna slide ya usawa inayoweza kusogea kushoto au kulia, na lengo ni kusawazisha nguzo wima juu ya slide. + +a cartpole + +## Mahitaji ya awali + +Katika somo hili, tutatumia maktaba inayoitwa **OpenAI Gym** kuiga **mazingira** tofauti. Unaweza kuendesha msimbo wa somo hili ndani ya kompyuta (mfano kutoka Visual Studio Code), ambapo mizunguko itaonekana kwenye dirisha jipya. Unapochukua msimbo mtandaoni, unaweza kuhitaji kufanya marekebisho kidogo kwenye msimbo, kama ilivyoelezwa [hapa](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7). ## OpenAI Gym -Katika somo lililopita, sheria za mchezo na hali zilikuwa zimetolewa na darasa la `Board` ambalo tulilifafanua sisi wenyewe. Hapa tutatumia mazingira maalum ya **simulizi**, ambayo yataiga fizikia ya fimbo inayosawazishwa. Mojawapo ya mazingira maarufu ya simulizi kwa mafunzo ya algoriti za kujifunza kwa kuimarisha inaitwa [Gym](https://gym.openai.com/), ambayo inadumishwa na [OpenAI](https://openai.com/). Kwa kutumia Gym hii tunaweza kuunda mazingira tofauti kutoka simulizi ya CartPole hadi michezo ya Atari. +Katika somo lililopita, sheria za mchezo na hali zilielezwa na darasa la `Board` tulilolifafanua wenyewe. Hapa tutatumia **mazingira ya kuiga** maalum, ambayo itaiga fizikia nyuma ya nguzo inayobadilika. Moja ya mazingira maarufu kwa mafunzo ya algoriti za kujifunza kwa nguvu inayoitwa [Gym](https://gym.openai.com/), inayoendeshwa na [OpenAI](https://openai.com/). Kwa kutumia gym hii tunaweza kuunda **mazingira** tofauti kutoka kwa kuiga cartpole hadi michezo ya Atari. -> **Note**: Unaweza kuona mazingira mengine yanayopatikana kutoka OpenAI Gym [hapa](https://gym.openai.com/envs/#classic_control). +> **Kumbuka**: Unaweza kuona mazingira mengine yanayopatikana kutoka OpenAI Gym [hapa](https://gym.openai.com/envs/#classic_control). -Kwanza, wacha tusakinishe Gym na kuingiza maktaba zinazohitajika (msimbo wa block 1): +Kwanza, wacha tufunge gym na tulete maktaba zinazohitajika (kifungu cha msimbo 1): ```python import sys @@ -20,13 +40,13 @@ import numpy as np import random ``` -## Zoezi - kuanzisha mazingira ya CartPole +## Zoefu - anzisha mazingira ya cartpole -Ili kufanya kazi na tatizo la kusawazisha CartPole, tunahitaji kuanzisha mazingira yanayohusiana. Kila mazingira yanahusishwa na: +Ili kufanya kazi na tatizo la kusawazisha cartpole, tunahitaji kuanzisha mazingira yanayohusiana. Kila mazingira yanahusishwa na: -- **Observation space** inayofafanua muundo wa taarifa tunazopokea kutoka kwa mazingira. Kwa tatizo la CartPole, tunapokea nafasi ya fimbo, kasi, na thamani nyingine. +- **Eneo la uchunguzi** linalofafanua muundo wa taarifa tunazopokea kutoka kwa mazingira. Kwa tatizo la cartpole, tunapokea nafasi ya nguzo, kasi, na baadhi ya thamani nyingine. -- **Action space** inayofafanua hatua zinazowezekana. Katika kesi yetu, action space ni ya kidhahiri, na ina hatua mbili - **kushoto** na **kulia**. (msimbo wa block 2) +- **Eneo la hatua** linalofafanua hatua zinazowezekana. Katika kesi yetu, eneo la hatua ni diskrete, na linajumuisha hatua mbili - **kushoto** na **kulia**. (kifungu cha msimbo 2) 1. Ili kuanzisha, andika msimbo ufuatao: @@ -37,11 +57,11 @@ Ili kufanya kazi na tatizo la kusawazisha CartPole, tunahitaji kuanzisha mazingi print(env.action_space.sample()) ``` -Ili kuona jinsi mazingira yanavyofanya kazi, wacha tuendeshe simulizi fupi kwa hatua 100. Katika kila hatua, tunatoa moja ya hatua za kuchukuliwa - katika simulizi hii tunachagua hatua kwa nasibu kutoka `action_space`. +Ili kuona jinsi mazingira yanavyofanya kazi, tuchukue mizunguko mifupi ya majaribio kwa hatua 100. Kila hatua tunatoa moja ya hatua zinazopaswa kuchukuliwa - katika mizunguko hii tunachagua hatua kwa bahati nasibu kutoka `action_space`. -1. Kimbia msimbo hapa chini na uone matokeo yake. +1. Endesha msimbo hapa chini na uone kinacho tufikia. - ✅ Kumbuka kuwa inapendekezwa kuendesha msimbo huu kwenye usakinishaji wa Python wa ndani! (msimbo wa block 3) +✅ Kumbuka ni bora kuendesha msimbo huu kwenye usanikishaji wa Python wa ndani! (kifungu cha msimbo 3) ```python env.reset() @@ -52,11 +72,11 @@ Ili kuona jinsi mazingira yanavyofanya kazi, wacha tuendeshe simulizi fupi kwa h env.close() ``` - Unapaswa kuona kitu kinachofanana na picha hii: +Unapaswa kuona kitu kinachofanana na picha hii: - ![CartPole isiyosawazishwa](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) +![cartpole isiyosawazishwa](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) -1. Wakati wa simulizi, tunahitaji kupata uchunguzi ili kuamua jinsi ya kutenda. Kwa kweli, kazi ya hatua inarudisha uchunguzi wa sasa, kazi ya malipo, na bendera ya kumaliza inayonyesha kama ina maana kuendelea na simulizi au la: (msimbo wa block 4) +1. Wakati wa mizunguko, tunahitaji kupata uchunguzi ili kuamua jinsi ya kuchukua hatua. Kazi ya hatua hurudisha uchunguzi wa sasa, thamani ya zawadi, na bendera ya kumaliza inayoonyesha kama kuna maana kuendelea na mzunguko au la: (kifungu cha msimbo 4) ```python env.reset() @@ -69,7 +89,7 @@ Ili kuona jinsi mazingira yanavyofanya kazi, wacha tuendeshe simulizi fupi kwa h env.close() ``` - Mwisho wake utakuwa kitu kama hiki kwenye matokeo ya daftari: +Utamaliza kuona kitu kama hiki katika matokeo ya daftari: ```text [ 0.03403272 -0.24301182 0.02669811 0.2895829 ] -> 1.0 @@ -82,43 +102,43 @@ Ili kuona jinsi mazingira yanavyofanya kazi, wacha tuendeshe simulizi fupi kwa h [ 0.17617249 0.35602306 -0.21873684 -0.90998894] -> 1.0 ``` - Vector ya uchunguzi inayorudishwa katika kila hatua ya simulizi ina thamani zifuatazo: - - Nafasi ya gari - - Kasi ya gari - - Pembe ya fimbo - - Kiwango cha mzunguko wa fimbo +Vector ya uchunguzi inayorudishwa kila hatua ya mizunguko ina thamani zifuatazo: +- Nafasi ya gari +- Kasi ya gari +- Mwelekeo wa nguzo +- Kasi ya mzunguko wa nguzo -1. Pata thamani ya chini na ya juu ya namba hizo: (msimbo wa block 5) +1. Pata thamani ndogo na kubwa kati ya nambari hizo: (kifungu cha msimbo 5) ```python print(env.observation_space.low) print(env.observation_space.high) ``` - Unaweza pia kugundua kuwa thamani ya malipo katika kila hatua ya simulizi daima ni 1. Hii ni kwa sababu lengo letu ni kuishi kwa muda mrefu iwezekanavyo, yaani, kuweka fimbo katika nafasi ya wima kwa muda mrefu zaidi. +Unaweza pia kugundua kwamba thamani ya zawadi katika kila hatua ya mizunguko siku zote ni 1. Hii ni kwa sababu lengo letu ni kuishi kwa muda mrefu iwezekanavyo, yaani kudumisha nguzo katika mwelekeo wa wima kwa muda mrefu zaidi. - ✅ Kwa kweli, simulizi ya CartPole inachukuliwa kuwa imetatuliwa ikiwa tunafanikiwa kupata wastani wa malipo ya 195 katika majaribio 100 mfululizo. +✅ Kwa kweli, kuiga CartPole kunachukuliwa kutatuliwa ikiwa tunaweza kupata wastani wa zawadi wa 195 kwa majaribio 100 mfululizo. -## Ubadilishaji wa Hali +## Diskuretisha hali -Katika Q-Learning, tunahitaji kujenga Q-Table inayofafanua nini cha kufanya katika kila hali. Ili kufanya hivyo, tunahitaji hali iwe **kidhahiri**, haswa, inapaswa kuwa na idadi finyu ya thamani za kidhahiri. Kwa hivyo, tunahitaji kwa namna fulani **kubadilisha** uchunguzi wetu, kuupangilia kwenye seti finyu ya hali. +Katika Q-Learning, tunahitaji kujenga Jedwali la Q linaloelezea nini cha kufanya kila hali. Ili kufanya hivyo, hali lazima iwe **diskrete**, hasa iwe na idadi ya kiwango cha thamani chenye kikomo. Hivyo, tunahitaji kwa namna fulani **kugawanya** maoni yetu, tukiyalinganisha na seti chache za hali. -Kuna njia kadhaa tunaweza kufanya hivi: +Kuna njia chache tunaweza kufanya hivi: -- **Gawanya katika bins**. Ikiwa tunajua kipindi cha thamani fulani, tunaweza kugawanya kipindi hiki katika idadi ya **bins**, kisha kubadilisha thamani kwa namba ya bin ambayo inahusiana nayo. Hii inaweza kufanywa kwa kutumia njia ya numpy [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html). Katika kesi hii, tutajua kwa usahihi ukubwa wa hali, kwa sababu itategemea idadi ya bins tunazochagua kwa digitalization. +- **Gawanya katika kontena**. Ikiwa tunajua awamu ya thamani fulani, tunaweza kugawa awamu hii katika kontena kadhaa, kisha kubadilisha thamani kwa nambari ya kontena inayohusiana. Hii inaweza kufanywa kwa kutumia njia ya numpy [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html). Katika kesi hii, tutajua kwa usahihi ukubwa wa hali, kwa sababu utategemea idadi ya kontena tulizochagua kwa diditalization. -✅ Tunaweza kutumia uingiliano wa mstari kuleta thamani kwenye kipindi finyu (sema, kutoka -20 hadi 20), kisha kubadilisha namba kuwa namba za kidhahiri kwa kuzirudisha. Hii inatupa udhibiti mdogo juu ya ukubwa wa hali, hasa ikiwa hatujui mipaka halisi ya thamani za pembejeo. Kwa mfano, katika kesi yetu 2 kati ya 4 za thamani hazina mipaka ya juu/chini, ambayo inaweza kusababisha idadi isiyo na mwisho ya hali. +✅ Tunaweza pia kutumia interpoleshini ya mstari kuleta thamani katika awamu ndogo (mfano, kutoka -20 hadi 20), kisha kubadilisha nambari kwa integers kwa kuziround. Hii hutupa udhibiti mdogo juu ya ukubwa wa hali, hasa ikiwa hatujui safu sahihi ya thamani za ingizo. Kwa mfano, katika kesi yetu 2 kati ya thamani 4 haina mipaka ya juu/chini, ambayo inaweza kusababisha idadi isiyo na kikomo ya hali. -Katika mfano wetu, tutatumia njia ya pili. Kama utakavyogundua baadaye, licha ya mipaka isiyofafanuliwa ya juu/chini, thamani hizo mara chache huchukua thamani nje ya vipindi finyu, kwa hivyo hali hizo zenye thamani za juu zitakuwa nadra sana. +Katika mfano wetu, tutatumia mbinu ya pili. Kama utaona baadaye, licha ya mipaka isiyoelezwa, thamani hizi mara chache hupita katika awamu fulani za kikomo, hivyo hali hizo zenye thamani kubwa zitakuwa nadra sana. -1. Hapa kuna kazi itakayochukua uchunguzi kutoka kwa mfano wetu na kutoa tuple ya thamani 4 za kidhahiri: (msimbo wa block 6) +1. Hapa ni kazi itakayochukua maoni kutoka kwa mfano wetu na kutoa tuple yenye thamani 4 za integer: (kifungu cha msimbo 6) ```python def discretize(x): return tuple((x/np.array([0.25, 0.25, 0.01, 0.1])).astype(np.int)) ``` -1. Wacha pia tuchunguze njia nyingine ya ubadilishaji kwa kutumia bins: (msimbo wa block 7) +1. Pia tuchunguze njia nyingine ya diskuretisha kwa kutumia kontena: (kifungu cha msimbo 7) ```python def create_bins(i,num): @@ -126,39 +146,39 @@ Katika mfano wetu, tutatumia njia ya pili. Kama utakavyogundua baadaye, licha ya 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)] # vipindi vya thamani kwa kila parameta + nbins = [20,20,10,10] # idadi ya masanduku kwa kila parameta 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. Sasa wacha tuendeshe simulizi fupi na kuchunguza thamani za mazingira ya kidhahiri. Jisikie huru kujaribu `discretize` na `discretize_bins` na uone kama kuna tofauti. +1. Sasa tutaendesha mizunguko mfupi na kuangalia thamani hizo za mazingira ya diskrete. Jaribu `discretize` na `discretize_bins` na uone kama kuna tofauti. - ✅ discretize_bins inarudisha namba ya bin, ambayo ni 0-based. Kwa hivyo kwa thamani za pembejeo karibu na 0 inarudisha namba kutoka katikati ya kipindi (10). Katika discretize, hatukujali kuhusu kipimo cha thamani za matokeo, tukiruhusu ziwe hasi, kwa hivyo thamani za hali hazijabadilishwa, na 0 inahusiana na 0. (msimbo wa block 8) +✅ discretize_bins hurudisha nambari ya kontena, ambayo huanzia 0. Hivyo kwa thamani za variable za ingizo karibu na 0 hurudisha nambari ya katikati ya awamu (10). Katika discretize, hatukujali juu ya safu ya thamani za output, tukiruhusu kuwa hasi, hivyo thamani za hali hazijasogezwa, na 0 ni sawa na 0. (kifungu cha msimbo 8) ```python env.reset() done = False while not done: - #env.render() + #env.onyeshaji() obs, rew, done, info = env.step(env.action_space.sample()) - #print(discretize_bins(obs)) + #chapisha(discretize_bins(obs)) print(discretize(obs)) env.close() ``` - ✅ Ondoa mstari unaoanza na env.render ikiwa unataka kuona jinsi mazingira yanavyotekelezwa. Vinginevyo unaweza kuyatekeleza kwa siri, ambayo ni haraka zaidi. Tutatumia utekelezaji huu "usioonekana" wakati wa mchakato wetu wa Q-Learning. +✅ Fungua mstari unaoanza na env.render ikiwa unataka kuona mazingira yanavyotekeleza. Vinginevyo unaweza kuyatekeleza nyuma, ambayo ni haraka zaidi. Tutatumia utekelezaji huu "usioonekana" wakati wa mchakato wa Q-Learning. -## Muundo wa Q-Table +## Muundo wa Jedwali la Q -Katika somo letu lililopita, hali ilikuwa jozi rahisi ya namba kutoka 0 hadi 8, na kwa hivyo ilikuwa rahisi kuwakilisha Q-Table kwa tensor ya numpy yenye umbo la 8x8x2. Ikiwa tunatumia bins discretization, ukubwa wa vector ya hali yetu pia unajulikana, kwa hivyo tunaweza kutumia mbinu sawa na kuwakilisha hali kwa safu yenye umbo la 20x20x10x10x2 (hapa 2 ni kipimo cha action space, na vipimo vya kwanza vinahusiana na idadi ya bins tulizochagua kutumia kwa kila parameter katika observation space). +Katika somo letu lililopita, hali ilikuwa jozi rahisi ya nambari kutoka 0 hadi 8, hivyo ilikuwa rahisi kuwakilisha Jedwali la Q kwa tensor ya numpy yenye umbo 8x8x2. Ikiwa tutatumia diskuretisha kwa kontena, ukubwa wa vector ya hali pia unajulikana, hivyo tunaweza kutumia mbinu ile ile na kuwakilisha hali kwa safu yenye umbo 20x20x10x10x2 (hapa 2 ni urefu wa eneo la hatua, na vipimo vya kwanza ni idadi ya kontena tulizochagua kwa kila parameter katika eneo la uchunguzi). -Hata hivyo, wakati mwingine vipimo halisi vya observation space havijulikani. Katika kesi ya kazi ya `discretize`, hatuwezi kamwe kuwa na uhakika kwamba hali yetu inabaki ndani ya mipaka fulani, kwa sababu baadhi ya thamani za awali hazina mipaka. Kwa hivyo, tutatumia mbinu tofauti kidogo na kuwakilisha Q-Table kwa kamusi. +Hata hivyo, mara nyingine vipimo kamili vya eneo la uchunguzi havijulikani. Katika kesi ya `discretize`, hatuwezi kamwe kuwa na uhakika kuwa hali yetu itabaki ndani ya mipaka fulani, kwa sababu baadhi ya thamani za asili hazina mipaka. Kwa hivyo, tutatumia mbinu tofauti kidogo na kuwakilisha Jedwali la Q kwa kamusi. -1. Tumia jozi *(state,action)* kama ufunguo wa kamusi, na thamani itahusiana na thamani ya Q-Table. (msimbo wa block 9) +1. Tumia jozi *(state,action)* kama ufunguo wa kamusi, na thamani itawakilisha thamani ya entry ya Jedwali la Q. (kifungu cha msimbo 9) ```python Q = {} @@ -168,38 +188,38 @@ Hata hivyo, wakati mwingine vipimo halisi vya observation space havijulikani. Ka return [Q.get((state,a),0) for a in actions] ``` - Hapa pia tunafafanua kazi `qvalues()`, ambayo inarudisha orodha ya thamani za Q-Table kwa hali fulani inayohusiana na hatua zote zinazowezekana. Ikiwa kiingilio hakipo katika Q-Table, tutarudisha 0 kama chaguo-msingi. +Hapa pia tunafafanua kazi `qvalues()`, inayorudisha orodha ya thamani za Jedwali la Q kwa hali fulani kuhusiana na hatua zote zinazowezekana. Ikiwa entry haina katika Jedwali la Q, tutarudisha 0 kama chaguo la msingi. ## Wacha tuanze Q-Learning Sasa tuko tayari kumfundisha Peter kusawazisha! -1. Kwanza, wacha tuweke baadhi ya hyperparameters: (msimbo wa block 10) +1. Kwanza, wacha tuiweke mipangilio ya hyperparameters: (kifungu cha msimbo 10) ```python - # hyperparameters + # vigezo vya juu alpha = 0.3 gamma = 0.9 epsilon = 0.90 ``` - Hapa, `alpha` ni **learning rate** inayofafanua kiwango ambacho tunapaswa kurekebisha thamani za sasa za Q-Table katika kila hatua. Katika somo lililopita tulianza na 1, kisha tukapunguza `alpha` hadi thamani za chini wakati wa mafunzo. Katika mfano huu tutaiweka kuwa ya kudumu kwa urahisi, na unaweza kujaribu kurekebisha thamani za `alpha` baadaye. +Hapa, `alpha` ni **kasi ya kujifunza** inayofafanua hatua gani tunapaswa kurekebisha thamani za sasa za Jedwali la Q kila hatua. Katika somo lililopita tulianza na 1, kisha tuliipunguza `alpha` hadi thamani ndogo wakati wa mafunzo. Katika mfano huu tutaiweka thabiti kwa urahisi, na unaweza kujaribu kurekebisha thamani za `alpha` baadaye. - `gamma` ni **discount factor** inayonyesha kiwango ambacho tunapaswa kuzingatia malipo ya baadaye zaidi ya malipo ya sasa. +`gamma` ni **kigezo cha punguzo** kinachoonyesha kiasi gani tunapaswa kuweka kipaumbele zawadi za baadaye kuliko zawadi za sasa. - `epsilon` ni **exploration/exploitation factor** inayodhamiria kama tunapaswa kupendelea uchunguzi au matumizi. Katika algoriti yetu, tutachagua hatua inayofuata kulingana na thamani za Q-Table kwa asilimia ya `epsilon`, na katika idadi iliyobaki ya kesi tutatekeleza hatua ya nasibu. Hii itaturuhusu kuchunguza maeneo ya nafasi ya utafutaji ambayo hatujawahi kuona hapo awali. +`epsilon` ni **kigezo cha uchunguzi/kutumia** kinachoamua kama tunapaswa kupendelea uchunguzi kuliko matumizi au kinyume chake. Katika algoriti yetu, katika asilimia ya `epsilon` tutachagua hatua ifuatayo kulingana na thamani za Jedwali la Q, na katika idadi iliyobaki tutatekeleza hatua ya bahati nasibu. Hii itaturuhusu kuchunguza maeneo ya utafutaji ambayo hatujawahi kuona. - ✅ Kwa suala la kusawazisha - kuchagua hatua ya nasibu (uchunguzi) itakuwa kama pigo la nasibu katika mwelekeo usio sahihi, na fimbo italazimika kujifunza jinsi ya kurejesha usawa kutoka kwa "makosa" hayo. +✅ Kuhusu kusawazisha - kuchagua hatua ya bahati nasibu (uchunguzi) itakuwa kama pigo la bahati nasibu kwenda upande usiofaa, na nguzo itahitaji kujifunza jinsi ya kurejesha usawa kutokana na "makosa" hayo -### Boresha Algoriti +### Boresha algoriti -Tunaweza pia kufanya maboresho mawili kwenye algoriti yetu kutoka somo lililopita: +Tunaweza pia kufanya maboresho mawili kwa algoriti yetu kutoka somo lililopita: -- **Hesabu wastani wa malipo ya jumla**, katika idadi ya simulizi. Tutachapisha maendeleo kila majaribio 5000, na tutapunguza wastani wa malipo yetu ya jumla katika kipindi hicho cha muda. Inamaanisha kwamba ikiwa tutapata zaidi ya pointi 195 - tunaweza kuzingatia tatizo limetatuliwa, kwa ubora wa juu zaidi kuliko inavyohitajika. +- **Hesabu wastani wa zawadi kwa pamoja**, kwa mzunguko kadhaa. Tutaweka maendeleo kila mizunguko 5000, na tutapima wastani wa zawadi kwa pamoja kwa kipindi hicho. Inamaanisha ikiwa tunaweza kupata zaidi ya alama 195 - tunaweza kuchukulia tatizo limetatuliwa, kwa ubora hata zaidi kuliko uliohitajika. -- **Hesabu matokeo ya juu ya wastani wa jumla**, `Qmax`, na tutahifadhi Q-Table inayohusiana na matokeo hayo. Unapokimbia mafunzo utagundua kwamba wakati mwingine matokeo ya wastani ya jumla yanaanza kushuka, na tunataka kuhifadhi thamani za Q-Table zinazohusiana na mfano bora uliotazamwa wakati wa mafunzo. +- **Hesabu matokeo makubwa ya wastani wa pamoja**, `Qmax`, na tutahifadhi Jedwali la Q linalohusiana na matokeo hayo. Utapoganda mafunzo utagundua mara nyingine matokeo ya wastani ya pamoja huanza kupungua, na tunataka kuhifadhi thamani za Jedwali la Q zinazolingana na mfano bora ulioonekana wakati wa mafunzo. -1. Kusanya malipo yote ya jumla katika kila simulizi kwenye vector ya `rewards` kwa ajili ya kuchora baadaye. (msimbo wa block 11) +1. Kusanya zawadi zote kwa pamoja kila mzunguko katika vector `rewards` kwa ajili ya ploti ya baadaye. (kifungu cha msimbo 11) ```python def probs(v,eps=1e-4): @@ -214,15 +234,15 @@ Tunaweza pia kufanya maboresho mawili kwenye algoriti yetu kutoka somo lililopit obs = env.reset() done = False cum_reward=0 - # == do the simulation == + # == fanya upigaji wa majaribio == while not done: s = discretize(obs) if random.random() Qmax: @@ -242,23 +262,23 @@ Tunaweza pia kufanya maboresho mawili kwenye algoriti yetu kutoka somo lililopit Unachoweza kugundua kutoka kwa matokeo hayo: -- **Karibu na lengo letu**. Tuko karibu sana kufanikisha lengo la kupata malipo ya jumla ya 195 katika majaribio 100+ mfululizo ya simulizi, au tunaweza kuwa tumelifanikisha! Hata kama tunapata namba ndogo, bado hatujui, kwa sababu tunapunguza wastani wa majaribio 5000, na majaribio 100 tu yanahitajika katika vigezo rasmi. +- **Karibu na lengo letu**. Tuko karibu sana kufanikisha lengo la kupata 195 za zawadi kwa mizunguko 100 mfululizo ya majaribio ya kuiga, au labda tumefanikisha! Hata tukipata nambari ndogo zaidi, bado hatujui, kwa sababu tunapima wastani kwa mizunguko 5000, na mizunguko 100 ndio inahitajika katika vigezo rasmi. -- **Malipo yanaanza kushuka**. Wakati mwingine malipo yanaanza kushuka, ambayo inamaanisha kwamba tunaweza "kuharibu" thamani zilizojifunza tayari katika Q-Table na zile zinazofanya hali kuwa mbaya zaidi. +- **Zawadi inaanza kupungua**. Wakati mwingine zawadi huanza kupungua, maana yake tunaweza "kuharibu" thamani zilizojifunza katika Jedwali la Q na zile zinazofanya hali kuwa mbaya. -Uchunguzi huu unaonekana wazi zaidi ikiwa tunachora maendeleo ya mafunzo. +Uchunguzi huu unaonekana wazi zaidi ikiwa tuliweka maendeleo ya mafunzo kwenye mchoro. ## Kuchora Maendeleo ya Mafunzo -Wakati wa mafunzo, tumekusanya thamani ya malipo ya jumla katika kila mojawapo ya majaribio kwenye vector ya `rewards`. Hivi ndivyo inavyoonekana tunapochora dhidi ya namba ya majaribio: +Wakati wa mafunzo, tuliokusanya thamani ya zawadi kwa pamoja kila mara katika vector ya `rewards`. Huu ndio muonekano wake tunapochora dhidi ya nambari ya mzunguko: ```python plt.plot(rewards) ``` -![Maendeleo ya awali](../../../../8-Reinforcement/2-Gym/images/train_progress_raw.png) +![maendeleo ghafi](../../../../translated_images/sw/train_progress_raw.2adfdf2daea09c59.webp) -Kutoka kwenye grafu hii, haiwezekani kusema chochote, kwa sababu kutokana na asili ya mchakato wa mafunzo wa nasibu urefu wa vipindi vya mafunzo hutofautiana sana. Ili kufanya grafu hii iwe na maana zaidi, tunaweza kuhesabu **wastani wa kukimbia** katika mfululizo wa majaribio, tuseme 100. Hii inaweza kufanywa kwa urahisi kwa kutumia `np.convolve`: (msimbo wa block 12) +Kutoka kwenye grafu hii, si rahisi kuelewa chochote kwa sababu kutokana na asili ya mchakato wa mafunzo wa kishtochasti urefu wa vikao vya mafunzo hutofautiana sana. Ili kufanya grafu hii iwe na maana zaidi, tunaweza kuhesabu **wastani unaoendelea** kwa mfululizo wa majaribio, tuseme 100. Hii inaweza kufanyika kwa urahisi kwa kutumia `np.convolve`: (kifungu cha msimbo 12) ```python def running_average(x,window): @@ -267,21 +287,24 @@ def running_average(x,window): plt.plot(running_average(rewards,100)) ``` -![Maendeleo ya mafunzo](../../../../8-Reinforcement/2-Gym/images/train_progress_runav.png) +![maendeleo ya mafunzo](../../../../translated_images/sw/train_progress_runav.c71694a8fa9ab359.webp) + +## Kubadilisha hyperparameters + +Ili kufanya kujifunza kuwa thabiti zaidi, ni busara kurekebisha baadhi ya hyperparameters zetu wakati wa mafunzo. Hasa: + +- **Kwa kasi ya kujifunza**, `alpha`, tunaweza kuanza na thamani karibu na 1, kisha tukae tukipunguza kidogo kidogo. Hivi ndivyo tutakuwa na thamani nzuri za uwezekano za Jedwali la Q, hivyo tunapaswa kuzipanga kidogo badala ya kuzibadilisha kabisa na thamani mpya. -## Kubadilisha Hyperparameters +- **Ongeza epsilon**. Tunaweza kuonekana kuongeza `epsilon` polepole, ili tukuelekeze kidogo kwenye uchunguzi na zaidi kwenye matumizi. Inaonekana busara kuanza na thamani ndogo ya `epsilon`, kisha kwenda hadi karibu 1. -Ili kufanya mafunzo kuwa thabiti zaidi, ina maana kurekebisha baadhi ya hyperparameters zetu wakati wa mafunzo. Haswa: +> **Kazi 1**: Jiunge na thamani za hyperparameter na uone kama unaweza kupata zawadi ya juu zaidi kwa pamoja. Je, unapiga zaidi ya 195? -- **Kwa learning rate**, `alpha`, tunaweza kuanza na thamani karibu na 1, kisha kuendelea kupunguza parameter. Kwa muda, tutakuwa tunapata thamani nzuri za uwezekano katika Q-Table, na kwa hivyo tunapaswa kuzirekebisha kidogo, na si kuandika upya kabisa na thamani mpya. -- **Ongeza epsilon**. Tunaweza kutaka kuongeza `epsilon` polepole, ili kuchunguza kidogo na kutumia zaidi. Inawezekana ina maana kuanza na thamani ya chini ya `epsilon`, na kuendelea hadi karibu na 1. -> **Kazi ya 1**: Cheza na thamani za hyperparameter na uone kama unaweza kufikia zawadi ya juu zaidi ya jumla. Je, unapata zaidi ya 195? -> **Kazi ya 2**: Ili kutatua tatizo rasmi, unahitaji kupata wastani wa zawadi ya 195 katika mizunguko 100 mfululizo. Pima hilo wakati wa mafunzo na hakikisha kuwa umetatua tatizo rasmi! +> **Kazi 2**: Ili kutatua tatizo rasmi, unahitaji kupata zawadi ya wastani ya 195 katika mizunguko 100 mfululizo. Pima hilo wakati wa mafunzo na hakikisha kuwa umetatua tatizo rasmi! ## Kuona matokeo kwa vitendo -Itakuwa ya kuvutia kuona jinsi mfano uliopata mafunzo unavyofanya kazi. Hebu tuendeshe simulizi na kufuata mkakati wa kuchagua hatua kama wakati wa mafunzo, tukichagua kulingana na mgawanyo wa uwezekano katika Q-Table: (sehemu ya msimbo 13) +Itakuwa ya kuvutia kuona jinsi mfano uliopita mafunzo unavyotenda. Hebu endesha simulizi na ufuate mkakati ule ule wa kuchagua vitendo kama wakati wa mafunzo, ukichagua kulingana na usambazaji wa uwezekano katika Jedwali la Q: (block ya nambari 13) ```python obs = env.reset() @@ -297,28 +320,30 @@ env.close() Unapaswa kuona kitu kama hiki: -![gari la kusawazisha pole](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) +![a balancing cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) --- ## 🚀Changamoto -> **Kazi ya 3**: Hapa, tulikuwa tunatumia nakala ya mwisho ya Q-Table, ambayo huenda isiwe bora zaidi. Kumbuka kuwa tumetunza Q-Table inayofanya vizuri zaidi katika `Qbest`! Jaribu mfano huo huo ukitumia Q-Table inayofanya vizuri zaidi kwa kunakili `Qbest` kwenda `Q` na uone kama unagundua tofauti. +> **Kazi 3**: Hapa, tulikuwa tunatumia nakala ya mwisho ya Jedwali la Q, ambayo huenda si ile bora zaidi. Kumbuka kuwa tumehifadhi Jedwali la Q linayofanya vizuri zaidi kwenye kigeuzi `Qbest`! Jaribu mfano ule ule ukitumia Jedwali la Q linayofanya vizuri zaidi kwa kunakili `Qbest` kwenda `Q` na angalia kama utaona tofauti. -> **Kazi ya 4**: Hapa hatukuchagua hatua bora katika kila hatua, bali tulichagua kulingana na mgawanyo wa uwezekano unaolingana. Je, ingekuwa na maana zaidi kuchagua hatua bora kila wakati, yenye thamani ya juu zaidi katika Q-Table? Hili linaweza kufanyika kwa kutumia kazi ya `np.argmax` ili kupata namba ya hatua inayolingana na thamani ya juu zaidi ya Q-Table. Tekeleza mkakati huu na uone kama unaboreshwa usawazishaji. +> **Kazi 4**: Hapa hatukuchagua tendo bora kila hatua, bali tulikuwa tunachagua kulingana na usambazaji wa uwezekano unaolingana. Je, wangekuwa na maana zaidi kila wakati kuchagua tendo bora zaidi, lenye thamani kubwa zaidi katika Jedwali la Q? Hii inaweza kufanywa kwa kutumia kazi ya `np.argmax` kugundua nambari ya tendo linalolingana na thamani kubwa zaidi ya Jedwali la Q. Tekeleza mkakati huu na uone kama unaboresha usawa. -## [Jaribio la baada ya somo](https://ff-quizzes.netlify.app/en/ml/) +## [Mtihani baada ya mihadhara](https://ff-quizzes.netlify.app/en/ml/) -## Kazi ya Nyumbani -[Fundisha Gari la Mlima](assignment.md) +## Kazi ya nyumbani +[Funza Gari la Mlima](assignment.md) ## Hitimisho -Sasa tumejifunza jinsi ya kufundisha mawakala kufanikisha matokeo mazuri kwa kuwapa tu kazi ya zawadi inayofafanua hali inayotakiwa ya mchezo, na kwa kuwapa fursa ya kuchunguza kwa akili nafasi ya utafutaji. Tumetumia kwa mafanikio algoriti ya Q-Learning katika hali za mazingira ya kidijitali na endelevu, lakini kwa hatua za kidijitali. +Sasa tumefundishwa jinsi ya kufunza mawakala kufikia matokeo mazuri kwa kuwapa tu kazi ya zawadi inayobainisha hali inayotakiwa ya mchezo, na kwa kuwapa nafasi ya kuchunguza kwa akili nafasi ya utaftaji. Tumetumia kwa mafanikio algorithm ya Q-Learning katika mazingira ya tarakimu na yanayoendelea, lakini kwa vitendo vya tarakimu. -Ni muhimu pia kusoma hali ambapo hali ya hatua ni endelevu, na wakati nafasi ya uchunguzi ni ngumu zaidi, kama picha kutoka skrini ya mchezo wa Atari. Katika matatizo hayo mara nyingi tunahitaji kutumia mbinu za kujifunza mashine zenye nguvu zaidi, kama mitandao ya neva, ili kufanikisha matokeo mazuri. Mada hizo za juu zaidi ni somo la kozi yetu ya AI ya juu inayokuja. +Ni muhimu pia kusomea hali ambapo hali ya tendo pia ni endelevu, na wakati nafasi ya uchunguzi ni tata zaidi, kama vile picha kutoka kwenye skrini ya mchezo wa Atari. Katika matatizo hayo mara nyingi tunahitaji kutumia mbinu zilizo na nguvu zaidi za ujifunzaji wa mashine, kama vile mitandao ya neva, ili kufikia matokeo mazuri. Mada hizo za juu zaidi ni somo la kozi yetu ya juu zaidi ya AI inayokuja. --- -**Kanusho**: -Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati asilia katika lugha yake ya awali inapaswa kuchukuliwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file + +**Kionyozo**: +Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kupata usahihi, tafadhali fahamu kwamba tafsiri za kiotomatiki zinaweza kuwa na makosa au upungufu wa usahihi. Hati ya asili katika lugha yake halisi inapaswa kuchukuliwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu inayofanywa na binadamu inapendekezwa. Hatutojibu kwa kuelewa vibaya au tafsiri potofu zinazotokea kutokana na matumizi ya tafsiri hii. + \ No newline at end of file diff --git a/translations/ta/.co-op-translator.json b/translations/ta/.co-op-translator.json index c9ccdcc1f..909ec3c22 100644 --- a/translations/ta/.co-op-translator.json +++ b/translations/ta/.co-op-translator.json @@ -24,8 +24,8 @@ "language_code": "ta" }, "1-Introduction/3-fairness/README.md": { - "original_hash": "9a6b702d1437c0467e3c5c28d763dac2", - "translation_date": "2025-10-11T11:25:50+00:00", + "original_hash": "0f00d72169a0d37eecfd16d71e01700a", + "translation_date": "2026-07-14T00:11:23+00:00", "source_file": "1-Introduction/3-fairness/README.md", "language_code": "ta" }, @@ -54,8 +54,8 @@ "language_code": "ta" }, "2-Regression/1-Tools/README.md": { - "original_hash": "fa81d226c71d5af7a2cade31c1c92b88", - "translation_date": "2025-10-11T11:43:13+00:00", + "original_hash": "0b8635427b582d03ea4ab7089b93e505", + "translation_date": "2026-07-14T00:09:09+00:00", "source_file": "2-Regression/1-Tools/README.md", "language_code": "ta" }, @@ -72,8 +72,8 @@ "language_code": "ta" }, "2-Regression/2-Data/README.md": { - "original_hash": "7c077988328ebfe33b24d07945f16eca", - "translation_date": "2025-10-11T11:47:18+00:00", + "original_hash": "a58b2c4d16c6b122643391745ac15af6", + "translation_date": "2026-07-14T00:10:20+00:00", "source_file": "2-Regression/2-Data/README.md", "language_code": "ta" }, @@ -89,6 +89,12 @@ "source_file": "2-Regression/2-Data/solution/Julia/README.md", "language_code": "ta" }, + "2-Regression/2-Data/solution/notebook.ipynb": { + "original_hash": "96b95f8cf473481f2f371de8156f1571", + "translation_date": "2026-07-13T23:59:38+00:00", + "source_file": "2-Regression/2-Data/solution/notebook.ipynb", + "language_code": "ta" + }, "2-Regression/3-Linear/README.md": { "original_hash": "8b776e731c35b171d316d01d0e7b1369", "translation_date": "2026-04-26T19:23:55+00:00", @@ -331,7 +337,7 @@ }, "6-NLP/4-Hotel-Reviews-1/README.md": { "original_hash": "8d32dadeda93c6fb5c43619854882ab1", - "translation_date": "2025-10-11T11:34:02+00:00", + "translation_date": "2026-07-14T00:07:26+00:00", "source_file": "6-NLP/4-Hotel-Reviews-1/README.md", "language_code": "ta" }, @@ -415,7 +421,7 @@ }, "7-TimeSeries/2-ARIMA/README.md": { "original_hash": "917dbf890db71a322f306050cb284749", - "translation_date": "2025-10-11T11:58:44+00:00", + "translation_date": "2026-07-14T00:14:45+00:00", "source_file": "7-TimeSeries/2-ARIMA/README.md", "language_code": "ta" }, @@ -511,7 +517,7 @@ }, "9-Real-World/1-Applications/README.md": { "original_hash": "83320d6b6994909e35d830cebf214039", - "translation_date": "2025-10-11T11:49:19+00:00", + "translation_date": "2026-07-14T00:13:35+00:00", "source_file": "9-Real-World/1-Applications/README.md", "language_code": "ta" }, @@ -523,7 +529,7 @@ }, "9-Real-World/2-Debugging-ML-Models/README.md": { "original_hash": "df2b538e8fbb3e91cf0419ae2f858675", - "translation_date": "2025-10-11T11:51:15+00:00", + "translation_date": "2026-07-14T00:12:36+00:00", "source_file": "9-Real-World/2-Debugging-ML-Models/README.md", "language_code": "ta" }, @@ -581,6 +587,19 @@ "source_file": "TROUBLESHOOTING.md", "language_code": "ta" }, + "__translation_failures__": { + "sketchnotes/LICENSE.md": { + "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f", + "source_file": "sketchnotes/LICENSE.md", + "language_code": "ta", + "failure_date": "2026-07-14T00:05:38+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-10-11T11:48:44+00:00", diff --git a/translations/ta/1-Introduction/3-fairness/README.md b/translations/ta/1-Introduction/3-fairness/README.md index bff414bc0..fea6f3ca0 100644 --- a/translations/ta/1-Introduction/3-fairness/README.md +++ b/translations/ta/1-Introduction/3-fairness/README.md @@ -1,140 +1,167 @@ -# பொறுப்பான AI மூலம் இயந்திரக் கற்றல் தீர்வுகளை உருவாக்குதல் - -![இயந்திரக் கற்றலில் பொறுப்பான AI-யின் சுருக்கம்](../../../../translated_images/ta/ml-fairness.ef296ebec6afc98a.webp) -> ஸ்கெட்ச் நோட்: [Tomomi Imura](https://www.twitter.com/girlie_mac) - -## [முன்-வகுப்பு வினாடி வினா](https://ff-quizzes.netlify.app/en/ml/) +# பொறுப்புள்ள AI உடன் இயந்திர அறிதல் தீர்வுகளை கட்டமைத்தல் + +![Machine Learning இல் பொறுப்புள்ள AI சுருக்கம் ஒரு ஸ்கெட்ச்னோட்](../../../../translated_images/ta/ml-fairness.ef296ebec6afc98a.webp) +> ஸ்கெட்ச்னோட் வழங்கியவர் [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" கற்றல் பாதையை எடுத்துக் கொள்ளவும் மற்றும் கீழே உள்ள வீடியோவைப் பாருங்கள்: +முன்னோட்டமாக, "பொறுப்புள்ள 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) பின்பற்றவும் -[![Microsoft's Approach to Responsible AI](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoft's Approach to Responsible AI") +[![Microsoft இன் பொறுப்புள்ள AI அணுகுமுறை](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoft இன் பொறுப்புள்ள AI அணுகுமுறை") -> 🎥 மேலே உள்ள படத்தை கிளிக் செய்து வீடியோவைப் பாருங்கள்: Microsoft's Approach to Responsible AI +> 🎥 மேலுள்ள படத்தில் கிளிக் செய்து காணொளியை பாருங்கள்: Microsoft இன் பொறுப்புள்ள AI அணுகுமுறை -## நியாயமான செயல்பாடு +## நீதித்தன்மை -AI அமைப்புகள் அனைவரையும் நியாயமாக நடத்த வேண்டும் மற்றும் ஒரே மாதிரியான குழுக்களை வேறுபட்ட முறையில் பாதிக்காமல் இருக்க வேண்டும். உதாரணமாக, AI அமைப்புகள் மருத்துவ சிகிச்சை, கடன் விண்ணப்பங்கள் அல்லது வேலை வாய்ப்புகள் குறித்து வழிகாட்டுதல் வழங்கும்போது, ஒரே மாதிரியான அறிகுறிகள், நிதி சூழ்நிலைகள் அல்லது தொழில்முறை தகுதிகள் கொண்ட அனைவருக்கும் ஒரே பரிந்துரைகளை வழங்க வேண்டும். மனிதர்களாகிய நம்மில் ஒவ்வொருவரும் எங்கள் முடிவுகள் மற்றும் செயல்களில் தாக்கம் செலுத்தும் மரபு சார்ந்த பாகுபாடுகளை கொண்டிருக்கிறோம். இந்த பாகுபாடுகள் AI அமைப்புகளைப் பயிற்றுவிக்க பயன்படுத்தும் தரவுகளில் வெளிப்படலாம். சில நேரங்களில் இது தவறுதலாக நிகழலாம். தரவுகளில் பாகுபாடுகளை அறிமுகப்படுத்தும் போது நீங்கள் விழிப்புணர்வுடன் இருக்க முடியாதது பெரும்பாலும் கடினமாக இருக்கும். +AI அமைப்புகள் அனைவரிடத்திலும் நீதியான முறையில் நடத்த வேண்டும் மற்றும் ஒரே மாதிரிக்குழுக்களை வேறுபட்ட முறையில் பாதிக்க கூடாது. உதாரணமாக, மருத்துவச் சிகிச்சை, கடன் விண்ணப்பங்கள், வேலை வாய்ப்பு போன்றவற்றில் AI அமைப்புகள் ஒரே அறிகுறிகள், நிதி சூழல்கள் அல்லது தொழில்முறை தகுதிகள் கொண்ட அனைவருக்கும் ஒரே பரிந்துரைகளை வழங்க வேண்டும். ஒவ்வொரு மனிதனும் உள்ளபடி பாரபட்சங்கள் கொண்டிருப்பது வழக்கமாகும், அவை AI அமைப்புகளை பயிற்சி தர தரவுகளில் எளிதில் தெரியும். இத்தகைய மாற்றல்கள் சில நேரங்களில்意ப்படாமல் நிகழலாம். தரவை உள்ளடக்கியபோது பாரபட்சத்தை உணர்ந்து உணர்ச்சியாக உணர்வது கடினம். -**"நியாயமற்ற செயல்பாடு"** என்பது ஒரு குழுவினருக்கு (இனம், பாலினம், வயது அல்லது மாற்றுத்திறனுடைய நிலை போன்றவை) ஏற்படும் எதிர்மறை தாக்கங்கள் அல்லது "பாதிப்புகளை" குறிக்கிறது. முக்கிய fairness-ஐப் பற்றிய பாதிப்புகள் பின்வருமாறு வகைப்படுத்தப்படலாம்: +**“நீதியற்ற தன்மை”** என்பது ஒரு குழுவுக்கான (வங்கிகள், பாலினம், வயது, வலிமை நிலை போன்றவை அடிப்படையாக கொண்ட) எதிர்மறை தாக்கங்களை குறிக்கிறது. முக்கிய நீதியற்ற தீங்குகள் வகைப்படுத்தப்படலாம்: -- **Allocation**: ஒரு பாலினம் அல்லது இனத்தை மற்றொன்றின் மீது முன்னுரிமை அளித்தல். -- **Quality of service**: ஒரு குறிப்பிட்ட சூழ்நிலைக்காக தரவுகளைப் பயிற்றுவிக்கும்போது, ஆனால் உண்மை மிகவும் சிக்கலானது, இது குறைந்த செயல்திறன் கொண்ட சேவையை உருவாக்குகிறது. உதாரணமாக, கருமை நிறத்தினரைக் கண்டறிய முடியாத கை சோப்பு விநியோகிப்பான். [Reference](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773) -- **Denigration**: ஒருவரை அல்லது ஒன்றை அநியாயமாக விமர்சித்து குறை கூறுதல். உதாரணமாக, ஒரு படத்தை லேபிள் செய்யும் தொழில்நுட்பம் கருமை நிறத்தினரின் படங்களை குரங்குகளாக தவறாக லேபிள் செய்தது. -- **Over- or under-representation**: ஒரு குறிப்பிட்ட குழு ஒரு குறிப்பிட்ட தொழிலில் காணப்படாதது, மற்றும் எந்த சேவையோ அல்லது செயல்பாடோ அதை தொடர்ந்து ஊக்குவிக்கிறது என்றால் அது பாதிப்பை ஏற்படுத்துகிறது. -- **Stereotyping**: ஒரு குறிப்பிட்ட குழுவை முன்கூட்டியே ஒதுக்கப்பட்ட பண்புகளுடன் தொடர்புபடுத்துதல். உதாரணமாக, ஆங்கிலம் மற்றும் துருக்கி மொழி இடையேயான மொழிபெயர்ப்பு அமைப்பு பாலினத்துடன் தொடர்புடைய வார்த்தைகளில் தவறுகள் ஏற்படலாம். +- **பிரிப்பு**, உதாரணமாக ஒரு பாலினம் அல்லது இனப்பேருந்து மற்றவருக்கு முன்னுரிமை அளிக்கும் போது. +- **சேவை தரம்**. ஒரு குறிப்பிட்ட சூழலுக்கான தரவை பயிற்சி செய்தால் ஆனால் நிஜம் அதிக சிக்கலானது என்றால் சேவை மோசமாக செயல்படும். எடுத்துக்காட்டு, கருப்பு தோலுடையவர்களை உணர முடியாத கை சோப்புக் குவியல். [காண Reference](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773) +- **முறைப்பாடு**. தவறாக விமர்சித்து யாரோரை அல்லது ஒன்றை குறைவாக குறிக்க. உதாரணமாக, கருப்பு தோலுடையவர்களுக்கு உருவப்படங்களை கொங்குகுட்டிகள் என தவறாக அடையாளம் கண்டு புகழடைந்த படம் அடையாளமிடும் தொழில்நுட்பம். +- **அதிகப்படியான அல்லது குறைவான பிரதிநிதித்துவம்**. ஒரு குழுவை ஒரு தொழிலில் காணாததும், அந்த சேவையை முன்மொழியும் எந்த அமைப்பும் தீங்காக கருதப்படுகிறது. +- **கற்பனை முறைகள்**. குறிப்பிட்ட குழுவை முன்காணிக்கப்பட்ட பண்புகளுடன் இணைப்பது. உதாரணமாக, ஆங்கிலம் மற்றும் துருக்கிய மொழி மாறுதல் அமைப்பில் பாலினத்தைப் பற்றிய முறைப்பாடு காரணமாக தவறுகள் இருக்கும். -![துருக்கி மொழிக்கு மொழிபெயர்ப்பு](../../../../translated_images/ta/gender-bias-translate-en-tr.f185fd8822c2d437.webp) -> துருக்கி மொழிக்கு மொழிபெயர்ப்பு +![டுர்க்கிஷ் மொழிக்கு மொழிபெயர்ப்பு](../../../../translated_images/ta/gender-bias-translate-en-tr.f185fd8822c2d437.webp) +> டுர்க்கிஷ் மொழிக்கு மொழிபெயர்ப்பு -![ஆங்கிலத்திற்கு மீண்டும் மொழிபெயர்ப்பு](../../../../translated_images/ta/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) -> ஆங்கிலத்திற்கு மீண்டும் மொழிபெயர்ப்பு +![மீண்டும் ஆங்கிலம் மொழியில் மொழிபெயர்க்கப்பட்டது](../../../../translated_images/ta/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) +> மீண்டும் ஆங்கிலம் மொழியில் மொழிபெயர்க்கப்பட்டது -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 உருவாக்குநர்கள் தடைகளை கண்டறிந்து சரிசெய்ய வேண்டும், அது தவறுதலாக சிலரை பின்னடைவைச் செய்யாமல். உலகில் ஒரு பில்லியன் பேர் மாற்றுத் திறனாளிகளாக உள்ளனர். AI முன்னேற்றத்தால், அவர்கள் தினசரி வாழ்க்கையில் தகவல் மற்றும் வாய்ப்புகளை எளிதில் அடைய முடியும். தடைகளை எதிர்கொண்டு AI பொருட்களை மேம்படுத்தி அனைவருக்கும் நன்மைகள் தரும் அனுபவங்களை உருவாக்க இது வாய்ப்பை உருவாக்குகிறது. -> [🎥 வீடியோவைப் பார்க்க இங்கே கிளிக் செய்யவும்: AI-யில் உள்ளடக்கம்](https://www.microsoft.com/videoplayer/embed/RE4vl9v) +> [🎥 சமவாய்மை பற்றிய காணொளிக்குச் செல்ல இங்கே கிளிக் செய்யவும்](https://www.microsoft.com/videoplayer/embed/RE4vl9v) ### பாதுகாப்பு மற்றும் தனியுரிமை -AI அமைப்புகள் பாதுகாப்பாகவும் மக்களின் தனியுரிமையை மதிக்கவும் இருக்க வேண்டும். தனியுரிமை, தகவல் அல்லது வாழ்க்கையை ஆபத்தில் ஆழ்த்தும் அமைப்புகளில் மக்கள் குறைவான நம்பிக்கையை கொண்டிருக்கிறார்கள். இயந்திரக் கற்றல் மாதிரிகளைப் பயிற்றுவிக்கும்போது, சிறந்த முடிவுகளை உருவாக்க தரவுகளை நம்புகிறோம். இதைச் செய்யும்போது, தரவின் மூலமும் முழுமையும் கருத்தில் கொள்ளப்பட வேண்டும். உதாரணமாக, தரவு பயனர் சமர்ப்பித்ததா அல்லது பொதுமக்களுக்கு கிடைக்குமா? அடுத்ததாக, தரவுடன் வேலை செய்யும் போது, AI அமைப்புகள் ரகசிய தகவல்களைப் பாதுகாக்கவும் மற்றும் தாக்குதல்களை எதிர்க்கவும் உருவாக்கப்பட வேண்டும். AI அதிகமாக பரவுவதால், தனியுரிமையைப் பாதுகாப்பதும் முக்கியமான தனிப்பட்ட மற்றும் வணிக தகவல்களைப் பாதுகாப்பதும் மிகவும் முக்கியமாகவும் சிக்கலாகவும் மாறுகிறது. AI-க்கு குறிப்பாக தரவினை அணுகுதல் அவசியம், ஏனெனில் AI அமைப்புகள் மக்களுக்கான துல்லியமான மற்றும் தகவலளிக்கப்பட்ட கணிப்புகள் மற்றும் முடிவுகளை எடுக்க தரவின் மீது நம்பிக்கையுடன் இருக்க வேண்டும். +AI அமைப்புகள் பாதுகாப்பாகவும் மக்களின் தனியுரிமையை மதிப்பதாகவும் இருக்க வேண்டும். தனியுரிமை, தகவல் அல்லது வியாழ்கை பாதிப்புக்கு உள்ளாக்கும் அமைப்புகளில் மக்கள் குறைவான நம்பிக்கை கொண்டுள்ளனர். இயந்திர அறிதல் மாதிரிகளை பயிற்சி செய்யும் போது, சிறந்த முடிவுகளை வழங்க தரவை நம்புகிறோம். தரவின் மூலமும் நேர்மையும் கவனிக்கப்பட வேண்டும். எடுத்துக்காட்டு, தரவு பயனர் வழங்கியது என்பதா அல்லது பொதுவாகக் கிடைத்தது என்றோடு? அடுத்ததாக, தரவுடன் வேலை செய்வதில் ரகசிய தகவலை பாதுகாக்கும் மற்றும் தாக்குதல்களை எதிர்க்கும் AI அமைப்புகளை உருவாக்குவது அவசியம். AI அதிகரிக்கும் போது, தனியுரிமை மற்றும் முக்கிய தனிநபர் மற்றும் வணிகத் தகவலை பாதுகாப்பது முக்கியமும் சிக்கலானதும் ஆகிவிட்டது. தனியுரிமை மற்றும் தரவு பாதுகாப்பு பிரச்சனைகள் AI இல் அதிக கவனத்தை தேவைப்படுகிறது, ஏனெனில் தரவை அணுகுதல் AI அமைப்புகளுக்கு மனிதர்களைப் பற்றிய துல்லியமான மற்றும் அறிவுரைத்திறன் predictions அளிக்க தேவையானது. + +> [🎥 பாதுகாப்பு பற்றிய காணொளிக்குச் செல்ல இங்கே கிளிக் செய்யவும்](https://www.microsoft.com/videoplayer/embed/RE4voJF) -> [🎥 வீடியோவைப் பார்க்க இங்கே கிளிக் செய்யவும்: AI-யில் பாதுகாப்பு](https://www.microsoft.com/videoplayer/embed/RE4voJF) +- தொழில்துறையில், GDPR போன்ற ஒழுங்குமுறைகளால் வழிநடத்தப்பட்டு தனியுரிமை மற்றும் பாதுகாப்பில் பெரிய முன்னேற்றங்கள் சம்பந்தப்பட்டுள்ளன. +- ஆனால் AI அமைப்புகளுடன், அவற்றை அதிக தனிப்பட்ட மற்றும் செயல்திறனுள்ள ஆக்க கடுமையான தனியுரிமை இடைபிரச்சினை உள்ளது. +- இணையதள இணைந்த கணினிகள் பிறப்போடு போலவே, AI தொடர்பான பாதுகாப்பு பிரச்சனைகளும் பெருகிக் கொண்டு உள்ளது. +- அதே சமயம் AI பாதுகாப்பை மேம்படுத்த பயன்படுத்தப்படுகின்றது. உதாரணமாக, நவீன அன்டி வைரஸ் கண்காணிப்பாளர்கள் இன்று AI heuristic கள் மூலம் இயங்குகின்றன. +- எங்கள் தரவியல் செயல்முறை சமீபத்திய தனியுரிமை மற்றும் பாதுகாப்பு நடைமுறைகளுடன் ஒத்திசைக்கப்பட்டிருக்க வேண்டும். -- தொழில்துறையாக, GDPR (General Data Protection Regulation) போன்ற விதிமுறைகளால் ஊக்குவிக்கப்பட்டு, தனியுரிமை மற்றும் பாதுகாப்பில் முக்கிய முன்னேற்றங்களை நாம் செய்துள்ளோம். -- ஆனால் AI அமைப்புகளுடன், அமைப்புகளை மேலும் தனிப்பட்ட மற்றும் செயல்திறனுடையதாக மாற்ற தனிப்பட்ட தரவின் தேவையை – மற்றும் தனியுரிமையை – நாம் ஏற்றுக்கொள்ள வேண்டும். -- இணையத்துடன் இணைக்கப்பட்ட கணினிகள் உருவாகிய பிறப்புடன், AI தொடர்பான பாதுகாப்பு பிரச்சினைகளின் எண்ணிக்கையில் பெரும் உயர்வு ஏற்பட்டுள்ளது. -- அதே நேரத்தில், பாதுகாப்பை மேம்படுத்த AI பயன்படுத்தப்பட்டுள்ளதை நாம் பார்த்துள்ளோம். உதாரணமாக, பெரும்பாலான நவீன வைரஸ் எதிர்ப்பு ஸ்கேனர் இன்று AI ஹியூரிஸ்டிக்ஸ் மூலம் இயக்கப்படுகின்றன. -- தரவியல் விஞ்ஞான செயல்முறைகள் சமீபத்திய தனியுரிமை மற்றும் பாதுகாப்பு நடைமுறைகளுடன் ஒத்திசைவாக கலக்கப்படுவதை நாம் உறுதிப்படுத்த வேண்டும். ### வெளிப்படைத்தன்மை +AI அமைப்புகள் புரிந்துகொள்ள வழிமுறையாக இருக்க வேண்டும். வெளிப்படையான தன்மையின் முக்கிய பகுதியாக AI அமைப்புகளின் நடத்தை மற்றும் கூறுகளை விளக்க வேண்டும். AI அமைப்புகளை மேம்படுத்த stakeholders எவ்வாறு மற்றும் ஏன் இயங்குகின்றன என்பதைக் புரிந்து கொள்ள வேண்டும், மேலும் செயல்திறன் பிரச்சனைகள், பாதுகாப்பு மற்றும் தனியுரிமைக் கவலைகள், பாகுபாடு, நீக்கம் நடைமுறைகள் அல்லது எதிர்பாராத முடிவுகளை கண்டறிய வேண்டும். AI அமைப்புகளைப் பயன்படுத்துவோர் எப்போது, எப்போது ஏன், எப்படி பயன்படுத்துகிறார்கள் என்பதில் நேர்மையாக இருக்க வேண்டும். பயன்படுத்தும் அமைப்புகளின் வரம்புகளையும் மீறாது விளக்க வேண்டும். உதாரணமாக, வங்கி AI அமைப்பை விருப்ப கடன் முடிவுகள் ஆதரிக்க பயன்படுத்தினால், முடிவுகளை ஆய்வு செய்து எந்த தரவு பரிந்துரைகளை பாதிக்கிறது எனப் புரிந்து கொள்வது அவசியம். அரசு தொழில்களில் AI ஐ ஒழுங்குபடுத்த ஆரம்பித்துள்ளது; ஆகையால் டேட்டா அறிவியலாளர்களும் நிறுவனங்களும் AI அமைப்புகள் விதி கடைப்பிடிப்பைப் பூர்த்தி செய்கிறதா என்று விளக்க வேண்டும், குறிப்பாக தீய முடிவுகள் இருந்தால். + +> [🎥 வெளிப்படைத்தன்மை பற்றிய காணொளிக்குச் செல்ல இங்கே கிளிக் செய்யவும்](https://www.microsoft.com/videoplayer/embed/RE4voJF) + +- AI அமைப்புகள் மிகவும் சிக்கலானவை என்பதனால் அவை எப்படி இயங்குகின்றன என புரிந்து கொள்ளவும் முடிவுகளை விவரிக்கவும் கடினம். +- இந்த புரிதல் இல்லாத தன்மை பின்வரும் பணிக்கு பாதிப்பை உண்டாக்குகின்றது: நன்கு நிர்வகிக்க, செயல்படுத்தவும், ஆவணப்படுத்தவும். +- இதேபோல், இந்த புரிதல் இல்லாத தன்மை AI அமைப்புகள் உருவாக்கும் முடிவுகளை பயன்படுத்தி எடுக்கப்படும் முடிவுகளின் மீது மிகப்பெரும் தாக்கம் செலுத்துகிறது. + +### பொறுப்புக்கூறல் + +AI அமைப்புகளை வடிவமைத்து வெளியிடும் நபர்கள் அவற்றின் செயல்பாடுகளுக்குப் பொறுப்பேற்க வேண்டும். முகம் அடையாளம் போல் பொறுப்புக்கூறல் மிகவும் அவசியம். சமீபத்தில், முகம் அடையாள தொழில்நுட்பத்திற்கு வருகையாளர்களிடமிருந்து அதிகத்தலைவாக கோரிக்கை ஏற்பட்டுள்ளது, குறிப்பாக பறந்துபோன பிள்ளைகளை கண்டுபிடிக்க போலீஸ் அமைப்புகள் இதை பயன்படுத்துகின்றன. ஆனால் இந்த தொழில்நுட்பம் அரசு அதன் குடிமக்களின் அடிப்படையான சுதந்திரங்களை இழுக்க செய்ய பயன்படுத்தப்படலாம், உதாரணமாக குறிப்பிட்ட நபர்களின் தொடர்ச்சியான கண்காணிப்பை இயல்புறுத்தல். இதனால் தரவியல் அறிவியலாளர்கள் மற்றும் நிறுவனங்கள் AI அமைப்பு நபர்களுக்கு அல்லது சமுதாயத்திற்கு ஏற்பும் தாக்கங்களை பொறுப்பாக ஏற்றுக்கொள்ள வேண்டும். + +[![முகம் அடையாளத்தின் மூலம் பொதுக்கண்காணிப்புக்கு எச்சரிக்கை அளிக்கும் தலைமை AI ஆராய்ச்சியாளர்](../../../../translated_images/ta/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft இன் பொறுப்புள்ள AI அணுகுமுறை") + +> 🎥 மேலுள்ள படத்தில் கிளிக் செய்து காணொளியை பாருங்கள்: முகம் அடையாளத்தின் மூலம் பொதுக்கண்காணிப்பு எச்சரிக்கை + +முற்றிலும், AI சமுதாயத்திற்கு கொண்டு வரும் முதல் தலைமுறையாக நாங்கள், கணினிகள் மக்களுக்கு பொறுப்பாயிருப்பதை எவ்வாறு உறுதி செய்வது மற்றும் கணினிகள் வடிவமைக்கும் மக்கள் மற்ற அனைவருக்கும் பொறுப்பாயிருப்பதை எவ்வாறு உறுதி செய்வது என்பது பெரிய கேள்வி ஆகும். + +## தாக்கம் மதிப்பீடு -AI அமைப்புகள் புரிந்துகொள்ளக்கூடியதாக இருக்க வேண்டும். வெளிப்படைத்தன்மையின் முக்கியமான பகுதி AI அமைப்புகள் மற்றும் அவற்றின் கூறுகளின் நடத்தை விளக்குவதில் உள்ளது. AI அமைப்புகளைப் புரிந்துகொள்ளும் திறனை மேம்படுத்த, பங்குதாரர்கள் அவை எவ்வாறு மற்றும் ஏன் செயல்படுகின்றன என்பதைப் புரிந்துகொள்ள வேண்டும், இதனால் செயல்திறன் பிரச்சினைகள், பாதுகாப்பு மற்றும் தனியுரிமை கவலைகள், பாகுபாடுகள், விலக்கப்பட்ட நடைமுறைகள் அல்லது எதிர்பாராத விளைவுகளை அடையாளம் காண முடியும். AI அமைப்புகளைப் பயன்படுத்தும்வர்கள் அவற்றை எப்போது, ஏன், எப்படி பயன்படுத்த முடிவு செய்கிறார்கள் என்பதைப் பற்றியும், அவர்கள் பயன்படுத்தும் அமைப்புகளின் வரம்புகளைப் பற்றியும் நேர்மையாகவும் வெளிப்படையாகவும் இருக்க வேண்டும் என்று நாங்கள் நம்புகிறோம். உதாரணமாக, ஒரு வங்கி அதன் நுகர்வோர் கடன் முடிவுகளை ஆதரிக்க AI அமைப்பை பயன்படுத்தினால், முடிவுகளைப் பரிசீலிக்கவும் மற்றும் அமைப்பின் பரிந்துரைகளை எந்த தரவுகள் பாதிக்கின்றன என்பதைப் புரிந்துகொள்ளவும் முக்கியம். அரசாங்கங்கள் தொழில்துறைகளில் AI-யை ஒழுங்குபடுத்தத் தொடங்குகின்றன, எனவே தரவியல் விஞ்ஞானிகள் மற்றும் அமைப்புகள் AI அமைப்பு ஒழுங்குமுறை தேவைகளை பூர்த்தி செய்கிறதா என்பதை விளக்க வேண்டும், குறிப்பாக விரும்பத்தகாத முடிவு ஏற்பட்டால். +இயந்திர அறிதல் மாதிரியை பயிற்சி செய்ய முன்னர், AI அமைப்பின் நோக்கம் என்ன என்பதை புரிந்து கொண்டு, உபயோக நோக்கம்; எங்கு அதன் செயல்பாடு; யார் அமைப்புடன் தொடர்பு கொள்ளும் என்பதை அறிந்து ஒரு தாக்கம் மதிப்பீடு செய்ய வேண்டும். இது சோதனை அல்லது மதிப்பீடு செய்யும் நபர்களுக்கு அமைப்பின் பாதிப்பு காரணிகள் மற்றும் எதிர்பார்க்கப்படும் விளைவுகளை அறிந்து எளிதாக்கும். -> [🎥 வீடியோவைப் பார்க்க இங்கே கிளிக் செய்யவும்: AI-யில் வெளிப்படைத்தன்மை](https://www.microsoft.com/videoplayer/embed/RE4voJF) +தாக்கம் மதிப்பீடு செய்யும்போது கவனம் செலுத்த வேண்டிய பகுதிகள்: -- AI அமைப்புகள் மிகவும் சிக்கலானவை என்பதால், அவை எவ்வாறு செயல்படுகின்றன மற்றும் முடிவுகளை விளக்குவது கடினமாக உள்ளது. -- இந்த புரிதலின்欠பாடு, இந்த அமைப்புகள் எவ்வாறு நிர்வகிக்கப்படுகின்றன, செயல்படுத்தப்படுகின்றன மற்றும் ஆவணப்படுத்தப்படுகின்றன என்பதை பாதிக்கிறது. -- மேலும் முக்கியமாக, இந்த அமைப்புகள் உருவாக்கும் முடிவுகளைப் பயன்படுத்தி எடுக்கப்படும் முடிவுகளை இந்த欠பாடு பாதிக்கிறது. +* **நபர்களுக்கு எதிர்மறையான தாக்கம்**. எந்தவொரு கட்டுப்பாடுகள், தேவைகள், ஆதரிக்கப்படாத பயன்பாடு அல்லது அறியப்பட்ட வரம்புகள் அமைப்பின் செயல்திறனை பாதிப்பவை இருக்கலாம் என்ற அறிவு முக்கியம், அது நபர்களுக்கு தீங்கு விளைவிப்பதைத் தடுக்கும். +* **தரவு தேவைகள்**. அமைப்பு தரவை எப்படி எங்கு பயன்படுத்தும் என்பதில் புரிதலை உருவாக்குவது, மேம்படுத்துனர்கள் தரவு தேவைகளை (உதா., GDPR அல்லது HIPAA தரவு விதிகள்) கவனத்தில் கொள்ள உதவும். மேலும், தரவு மூலமும் அளவும் பயிற்சிக்க மோசமாக இருக்குமா என ஆராய்க. +* **தாக்கம் சுருக்கம்**. அமைப்பினைப் பயன்படுத்தி வரும் சாத்தியமான தீங்குகளின் பட்டியலை சேகரிக்கவும். முழு ML வாழ்நாள் நிலத்தில், இவை சரிசெய்யப்பட்டதா அல்லது நிர்வகிக்கப்பட்டதா என பரிசீலனை செய்யவும். +* **ஆறு முக்கியக் கொள்கைகளுக்கு பொருந்தக்கூடிய குறிக்கோள்கள்**. ஒவ்வொரு கொள்கை குறிக்கோளும் பூர்த்தியாயிற்றா? இடைவெளிகள் உள்ளனவா? என மதிப்பிடவும். -### பொறுப்புணர்வு -AI அமைப்புகளை வடிவமைக்கும் மற்றும் செயல்படுத்தும் மக்கள், அவர்களின் அமைப்புகள் எவ்வாறு செயல்படுகின்றன என்பதற்கான பொறுப்பை ஏற்க வேண்டும். முகம் அடையாளம் காணும் போன்ற நுண்ணறிவு தொழில்நுட்பங்களுடன் பொறுப்புணர்வு மிகவும் முக்கியமானது. சமீபத்தில், முகம் அடையாளம் காணும் தொழில்நுட்பத்திற்கான தேவை அதிகரித்துள்ளது, குறிப்பாக காணாமல் போன குழந்தைகளை கண்டறிதல் போன்ற பயன்பாடுகளில் தொழில்நுட்பத்தின் சாத்தியத்தைப் பார்க்கும் சட்ட அமலாக்க அமைப்புகளிடமிருந்து. இருப்பினும், இந்த தொழில்நுட்பங்கள் ஒரு அரசாங்கத்தால் அதன் குடிமக்களின் அடிப்படை சுதந்திரங்களை ஆபத்தில் ஆழ்த்துவதற்காக, உதாரணமாக, குறிப்பிட்ட நபர்களின் தொடர்ச்சியான கண்காணிப்பை இயக்குவதற்காக பயன்படுத்தப்படலாம். எனவே, AI அமைப்பு தனிநபர்கள் அல்லது சமுதாயத்தை எவ்வாறு பாதிக்கிறது என்பதற்கான பொறுப்பை தரவியல் விஞ்ஞானிகள் மற்றும் அமைப்புகள் ஏற்க வேண்டும். +## பொறுப்புள்ள AI உடன் பிழைதிருத்தல் -[![Leading AI Researcher Warns of Mass Surveillance Through Facial Recognition](../../../../translated_images/ta/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft's Approach to Responsible AI") +மென்பொருள் பயன்பாட்டைப் போல, AI அமைப்புகளுக்கான பிழைதிருத்தலும் அவற்றின் பிரச்சனைகளை கண்டறிந்து தீர்ப்பது அவசியம். மாதிரி எதிர்பார்த்தது போல செயல்படவில்லையெனில் பல காரணிகள் இருக்கலாம். பெரும்பான்மையான மரபு மாதிரி செயல்திறன் கணக்கீடுகள் மாதிரியின் செயல்திறன் அளவுகளின் எண் தொகுப்புகள் மட்டுமே ஆகும்; இவை AI பொறுப்பாக்க கொள்கைகளை மீறுது என்பதை ஆராய்வதற்கு போதுமானதல்ல. மேலும், இயந்திர அறிதல் மாதிரி ஒரு இரகசியப் பெட்டியாக இருக்கின்றது, அதனால் அதன் முடிவை தெளிவாக உணர்வது அல்லது பிழை செய்தால் விளக்குவது கடினமாகும். இந்த பாடத்திட்டத்தில் பின்னர், பொறுப்புள்ள AI டாஷ் போர்டு பயன்படுத்தி AI அமைப்புகளை பிழைதிருத்துவது கற்றுக்கொள்வோம். டாஷ்போர்டு ஒரு ஒருங்கிணைந்த கருவி, தரவியலாளர்கள் மற்றும் AI உருவாக்குநர்களுக்காக பின்வரும் பணிகளை செய்ய உதவுகிறது: -> 🎥 மேலே உள்ள படத்தை கிளிக் செய்து வீடியோவைப் பாருங்கள்: முகம் அடையாளம் காணுதல் மூலம் பெருமளவு கண்காணிப்பு பற்றிய எச்சரிக்கை +* **பிழை பகுப்பு**. அமைப்பில் நீதித்தன்மை அல்லது நம்பகத்தன்மைக்கு பாதிப்பூட்டும் பிழை பகிர்வு கண்டறிதல். +* **மாதிரி பார்வை**. தரவு குழுக்களில் மாதிரி செயல்திறனில் உள்ள வேறுபாடுகளை கண்டறிதல். +* **தரவு பகுப்பு**. தரவு பகிர்வு புரிந்துகொள்ளல் மற்றும் நீதித்தன்மை, சமவாய்மை மற்றும் நம்பகத்தன்மை பிரச்சனைகளுக்கு காரணமான பாகுபாடுகளை கண்டறிதல். +* **மாதிரி விளக்கம்**. மாதிரியில் எது அதன் தீர்வுகளை பாதிக்கிறது என்பதைக் புரிந்து கொள்ளுதல். இது வெளிப்படைத்தன்மைக்கும் பொறுப்புக்கூறலுக்கும் முக்கியம். -இயந்திரக் கற்றல் மற்றும் AI-யை சமுதாயத்திற்கு கொண்டு வருகிற முதல் தலைமுறையாகிய நம் தலைமுறைக்கான மிகப்பெரிய கேள்விகளில் ஒன்று, கணினிகள் மக்களுக்கு பொறுப்பானதாக இருக்க வேண்டும் என்பதை எப்படி உறுதிப்படுத்துவது மற்றும் கணினிகளை வடிவமைக்கும் மக்கள் மற்றவர்களுக்கு பொறுப்பானவர்களாக இருக்க வேண்டும் என்பதை எப்படி உறுதிப்படுத்துவது என்பதாகும். -## தாக்க மதிப்பீடு +## 🚀 சவால் + +தீங்கு ஏற்படுத்தப்படுவதை தடுக்க நாம் செய்ய வேண்டும்: -இயந்திரக் கற்றல் மாதிரியைப் பயிற்றுவிக்கும்முன், AI அமைப்பின் நோக்கம், அதன் திட்டமிடப்பட்ட பயன்பாடு, அது எங்கு பயன்படுத்தப்படும், மற்றும் அமைப்புடன் யார் தொடர்பு கொள்ளப் போகிறார்கள் என்பதைப் புரிந்து கொள்ள தாக்க மதிப்பீட்டை நடத்துவது முக்கியம். இது அமைப்பை மதிப்பீடு செய்யும் மதிப்பீட்டாளர்(கள்) அல்லது சோதனையாளர்களுக்கு, சாத்தியமான ஆபத்துகள் மற்றும் எதிர்பார்க்கப்படும் விளைவுகளை அடையாளம் காணும்போது எந்த காரணிகளை கருத்தில் கொள்ள வேண்டும் என்பதை அறிய உதவுகிறது. +- அமைப்புகளை உருவாக்கும் மக்கள் பல்வேறு பின்னணி மற்றும் பார்வைகளைக் கொண்டிருக்க வேண்டும் +- எமது சமுதாயத்தின் பல்வேறு தரவுத்தொகுப்புகளில் முதலீடு செய்ய வேண்டும் +- பொறுப்புள்ள AI ஏற்பட்டால் அதை கண்டறிந்து சரி செய்ய இயந்திர அறிதல் வாழ்நாளில் சிறந்த முறைகளை மேம்படுத்த வேண்டும் -தாக்க மதிப்பீட்டை நடத்தும்போது கவனம் செலுத்த வேண்டிய பகுதிகள் பின்வருமாறு: +மாதிரியை உருவாக்கும் மற்றும் பயன்படுத்தும் போது அதன் நம்பிக்கையற்ற தன்மை உணரக்கூடிய நிலைமைகள் பற்றி யோசியுங்கள். மேலும் என்ன கவனிக்கப்பட வேண்டும்? -* **தனிநபர்களுக்கு எதிர்மறை தாக்கம்**: அமைப்பின் செயல்திறனைத் தடுக்கும் எந்தவொரு கட்டுப்பாடு அல்லது தேவைகள், ஆதரிக்கப்படாத பயன்பாடு அல்லது அறியப்பட்ட வரம்புகள் பற்றிய விழிப்புணர்வுடன் இருக்க வேண்டும். -* **தரவு தேவைகள்**: அமைப்பு தரவுகளை எவ்வாறு மற்றும் எங்கு பயன்படுத்தும் என்பதைப் புரிந்துகொள்வது, நீங்கள் கவனமாக இருக்க வேண்டிய எந்த தரவுத் தேவைகளை (எ.கா., GDPR அல்லது HIPPA தரவுத் விதிமுறைகள்) ஆராய்வதற்கு மதிப்பீட்டாளர்களுக்கு உதவுகிறது. மேலும், பயிற்சிக்கான தரவின் மூல அல்லது அளவு போதுமானதா என்பதைப் பரிசீலிக்கவும். -* **தாக்கத்தின் சுருக்கம்**: அமைப்பைப் பயன்படுத்துவதால் ஏற்படக்கூடிய சாத்தியமான பாதிப்புகளின் பட்டியலைச் சேகரிக்கவும். ML வாழ்க்கைச் சுழற்சியின் முழு காலத்திலும், அடையாளம் காணப்பட்ட பிரச்சினைகள் குறைக்கப்பட்டதா அல்லது தீர்க்கப்பட்டதா என்பதை மதிப்பீடு செய்யவும். -* **ஆரம்ப -## மதிப்பீடு மற்றும் சுயபயிற்சி +## [பிறகு-பாடம் வினாடிக்குறிப்பு](https://ff-quizzes.netlify.app/en/ml/) -இந்த பாடத்தில், இயந்திரக் கற்றலில் நியாயம் மற்றும் அநியாயம் பற்றிய அடிப்படைகளை நீங்கள் கற்றுக்கொண்டீர்கள். +## மீளாய்வு & சுயநிலை கற்றல் + -இந்த தலைப்புகளை மேலும் ஆழமாகப் புரிந்துகொள்ள இந்த வேலைகளைக் காணுங்கள்: +இந்த படிப்பில், நீங்கள் இயந்திரக் கற்றலில் நியாயமாகத் தன்மையும் அவநியாயமாகத் தன்மையும் பற்றிய சில அடிப்படைக் கருத்துக்களை கற்றுக்கொண்டிருக்கிறீர்கள். + +இந்த கருத்துக்களில் ஆழமாக சென்று பதிவு செய்ய, இந்த பணிமனை காணுங்கள்: -- பொறுப்பான AI-யை நோக்கி: கொள்கைகளை நடைமுறைக்கு கொண்டு வருவது - Besmira Nushi, Mehrnoosh Sameki மற்றும் Amit Sharma +- பொறுப்பான AI நோக்கில்: 원칙ங்களை நடைமுறையில் கொண்டு வருதல், Besmira Nushi, Mehrnoosh Sameki மற்றும் Amit Sharma இணைக்கையில் -[![பொறுப்பான AI Toolbox: பொறுப்பான AI உருவாக்குவதற்கான ஓர் திறந்த மூல அமைப்பு](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: பொறுப்பான AI உருவாக்குவதற்கான ஓர் திறந்த மூல அமைப்பு") +[![Responsible AI Toolbox: An open-source framework for building responsible AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") -> 🎥 மேலே உள்ள படத்தை கிளிக் செய்யவும்: RAI Toolbox: Besmira Nushi, Mehrnoosh Sameki மற்றும் Amit Sharma ஆகியோரின் பொறுப்பான AI உருவாக்குவதற்கான ஓர் திறந்த மூல அமைப்பு +> 🎥 மேலே உள்ள படமாக்குக்குக் கிளிக் செய்து காணொளியைப் பாருங்கள்: பொறுப்பான AI டூல்பாக்ஸ்: Besmira Nushi, Mehrnoosh Sameki, மற்றும் Amit Sharma ஆட்களால் உருவாக்கப்பட்ட ஓர் திறந்த மூலக் கட்டமைப்பு -மேலும் படிக்க: +மேலும், வாசிக்கவும்: -- 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/) -RAI Toolbox: +RAI டூல்பாக்ஸ்: - [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 டூல்பாக்ஸை ஆய்வு செய்யவும்](assignment.md) --- -**குறிப்பு**: -இந்த ஆவணம் [Co-op Translator](https://github.com/Azure/co-op-translator) என்ற AI மொழிபெயர்ப்பு சேவையைப் பயன்படுத்தி மொழிபெயர்க்கப்பட்டுள்ளது. நாங்கள் துல்லியத்திற்காக முயற்சிக்கின்றோம், ஆனால் தானியங்கி மொழிபெயர்ப்புகளில் பிழைகள் அல்லது தவறான தகவல்கள் இருக்கக்கூடும் என்பதை தயவுசெய்து கவனத்தில் கொள்ளுங்கள். அதன் தாய்மொழியில் உள்ள மூல ஆவணம் அதிகாரப்பூர்வ ஆதாரமாக கருதப்பட வேண்டும். முக்கியமான தகவல்களுக்கு, தொழில்முறை மனித மொழிபெயர்ப்பு பரிந்துரைக்கப்படுகிறது. இந்த மொழிபெயர்ப்பைப் பயன்படுத்துவதால் ஏற்படும் எந்த தவறான புரிதல்கள் அல்லது தவறான விளக்கங்களுக்கு நாங்கள் பொறுப்பல்ல. \ 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/ta/2-Regression/1-Tools/README.md b/translations/ta/2-Regression/1-Tools/README.md index 24db8983d..f09fec6c5 100644 --- a/translations/ta/2-Regression/1-Tools/README.md +++ b/translations/ta/2-Regression/1-Tools/README.md @@ -1,120 +1,121 @@ -# Python மற்றும் Scikit-learn மூலம் Regression மாடல்களை உருவாக்க தொடங்குங்கள் +# Python மற்றும் Scikit-learn இல் regression மாதிரிகளுடன் தொடங்குதல் -![Regression மாடல்களின் சுருக்கம் sketchnote வடிவில்](../../../../translated_images/ta/ml-regression.4e4f70e3b3ed446e.webp) +![sketchnote இல் regressions சுருக்கம்](../../../../translated_images/ta/ml-regression.4e4f70e3b3ed446e.webp) -> Sketchnote: [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) ## அறிமுகம் -இந்த நான்கு பாடங்களில், நீங்கள் regression மாடல்களை உருவாக்குவது எப்படி என்பதை அறிந்து கொள்ளுவீர்கள். இவை எதற்காக பயன்படுத்தப்படுகின்றன என்பதை விரைவில் விவாதிக்கப் போகிறோம். ஆனால், நீங்கள் ஏதேனும் செய்யும் முன், சரியான கருவிகளை அமைத்துக் கொள்ளுங்கள்! +இந்த நான்கு பாடங்களில், நீங்கள் regression மாதிரிகள் எவ்வாறு உருவாக்கப்படுகின்றன என்பதை அறிந்துகொள்ளப்போகிறீர்கள். இவற்றின் பயன்பாடு யாது என்பது விரைவில் விவாதிக்கப்படும். ஆனாலும் உங்கள் செயல்முறை தொடங்குவதற்கு முன் சரியான கருவிகள் உங்களிடம் இருக்கின்றனவா என்பதை உறுதிசெய்யுங்கள்! -இந்த பாடத்தில், நீங்கள் கற்றுக்கொள்ளப் போவது: +இந்த பாடத்தில் நீங்கள் கற்றுக்கொள்ளப்போகிர்கள்: -- உங்கள் கணினியை உள்ளூர் machine learning பணிகளுக்கு அமைத்தல். -- Jupyter notebooks-ஐப் பயன்படுத்துதல். -- Scikit-learn-ஐ நிறுவல் உட்பட பயன்படுத்துதல். -- Linear regression-ஐ ஒரு செயல்முறை பயிற்சியுடன் ஆராய்தல். +- உள்ளூர் கணினி கற்றல் பணிகளுக்கு உங்கள் கணினியை அமைத்தல். +- Jupyter Notebooks- உடன் பணியாற்றல். +- Scikit-learn ஐ பயன்படுத்துதல், நிறுவலுடன் சேர்த்து. +- நடைமுறைப் பயிற்சியுடன் கூட linear regression ஐ ஆராய்தல். -## நிறுவல் மற்றும் அமைப்புகள் +## நிறுவல்கள் மற்றும் அமைப்புகள் -[![ML ஆரம்பம் - Machine Learning மாடல்களை உருவாக்க உங்கள் கருவிகளை அமைத்தல்](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML ஆரம்பம் - Machine Learning மாடல்களை உருவாக்க உங்கள் கருவிகளை அமைத்தல்") +[![ஆரம்பக்கார ML பயனாளிகளுக்கு - உங்கள் கருவிகளை தயார் செய்து மெஷின் கற்றல் மாதிரிகள் உருவாக்குதல்](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ஆரம்பக்கார ML பயனாளிகளுக்கு - உங்கள் கருவிகளை தயார் செய்து மெஷின் கற்றல் மாதிரிகள் உருவாக்குதல்") -> 🎥 மேலே உள்ள படத்தை கிளிக் செய்து ML அமைப்புகளை அமைப்பதற்கான குறுகிய வீடியோவைப் பாருங்கள். +> 🎥 மேலுள்ள படத்தை கிளிக் செய்து, ML ன் கீழ் கணினி அமைப்பை அமைப்பதற்கான சுருக்க வீடியோவை பார்க்கவும். -1. **Python-ஐ நிறுவுங்கள்**. [Python](https://www.python.org/downloads/) உங்கள் கணினியில் நிறுவப்பட்டுள்ளதா என்பதை உறுதிப்படுத்துங்கள். Python பல தரவியல் அறிவியல் மற்றும் machine learning பணிகளுக்கு பயன்படுத்தப்படும். பெரும்பாலான கணினி அமைப்புகளில் 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 ன் சில பயன்பாடுகள் ஒரே பதிப்பைத் தேவைப்படுத்தும், மற்றவை வேறு பதிப்பை வேண்டலாம். அதனால் [virtual environment](https://docs.python.org/3/library/venv.html) பயன்படுத்துவது பயனுள்ளது. -2. **Visual Studio Code-ஐ நிறுவுங்கள்**. Visual Studio Code உங்கள் கணினியில் நிறுவப்பட்டுள்ளதா என்பதை உறுதிப்படுத்துங்கள். [Visual Studio Code-ஐ நிறுவ](https://code.visualstudio.com/) இந்த வழிமுறைகளைப் பின்பற்றுங்கள். இந்த பாடத்தில் Python-ஐ Visual Studio Code-ல் பயன்படுத்தப் போகிறீர்கள், எனவே Python மேம்பாட்டுக்கான [Visual Studio Code-ஐ அமைப்பது](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) எப்படி என்பதைப் புரிந்துகொள்ளுங்கள். +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) தொகுப்பைப் பயன்படுத்துங்கள். > - > [![Visual Studio Code-இல் Python அமைப்பது](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Visual Studio Code-இல் Python அமைப்பது") + > [![Visual Studio Code உடன் Python அமைப்பு](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Visual Studio Code உடன் Python அமைப்பு") > - > 🎥 மேலே உள்ள படத்தை கிளிக் செய்து Python-ஐ VS Code-இல் பயன்படுத்துவது பற்றிய வீடியோவைப் பாருங்கள். + > 🎥 மேலுள்ள படத்தை கிளிக் செய்து 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 ஐப் பயன்படுத்தியிருப்பது அவசியம், அதனால் virtual environment பயன்படுத்துவதே நல்லது. குறிப்பாக M1 Mac இல் நிறுவும் போது மேலுள்ள பக்கத்தில் குறிப்பிட்டுள்ள தனித்துவமான வழிமுறைகள் உள்ளன. -4. **Jupyter Notebook-ஐ நிறுவுங்கள்**. [Jupyter package](https://pypi.org/project/jupyter/) ஐ நிறுவ வேண்டும். +1. **Jupyter Notebook ஐ நிறுவுக**. [Jupyter தொகுப்பை நிறுவ](https://pypi.org/project/jupyter/) வேண்டும். -## உங்கள் ML எழுத்து சூழல் +## உங்கள் ML எழுத்துப்படைமை -Python குறியீடுகளை உருவாக்கவும் machine learning மாடல்களை உருவாக்கவும் நீங்கள் **notebooks**-ஐப் பயன்படுத்தப் போகிறீர்கள். இந்த வகை கோப்பு தரவியல் விஞ்ஞானிகளுக்கு பொதுவான கருவியாகும், மேலும் அவற்றை `.ipynb` என்ற suffix அல்லது extension மூலம் அடையாளம் காணலாம். +நீங்கள் Python கோ드를 உருவாக்கவும் மெஷின் கற்றல் மாதிரிகள் உருவாக்கவும் **notebooks** பயன்படுத்தப்போகிறீர்கள். இந்த வகை கோப்புகள் தரவு அறிவியலாளர்களுக்கு பொதுவான கருவி ஆகும், அவை `.ipynb` என்ற உச்சரிப்பு அல்லது நீட்டிப்பால் அடையாளம் காணப்படுகின்றன. -Notebooks என்பது ஒரு தொடர்பு சூழல் ஆகும், இது code எழுதவும், குறியீட்டின் சுற்றியுள்ள குறிப்புகள் மற்றும் ஆவணங்களை எழுதவும் டெவலப்பருக்கு அனுமதிக்கிறது, இது பரிசோதனை அல்லது ஆராய்ச்சி சார்ந்த திட்டங்களுக்கு மிகவும் உதவியாக இருக்கும். +Notebooks என்பது code எழுதுவதோடு சேர்த்து குறிப்புகள் சேர்க்கவும் மற்றும் கோட் குறித்து ஆவணப்படுத்தல் செய்யவும் உதவும் துறைமுகச் சூழல் ஆகும், இது பரிசோதனை அல்லது ஆராய்ச்சி நோக்கங்களில் மிகவும் உதவுகிறது. -[![ML ஆரம்பம் - Regression மாடல்களை உருவாக்க Jupyter Notebooks அமைப்பது](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML ஆரம்பம் - Regression மாடல்களை உருவாக்க Jupyter Notebooks அமைப்பது") +[![ஆரம்பக்கார ML பயனாளிகளுக்கு - Jupyter Notebooks அமைத்து regression மாதிரிகள் உருவாக்க தொடங்கு](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ஆரம்பக்கார ML பயனாளிகளுக்கு - Jupyter Notebooks அமைத்து regression மாதிரிகள் உருவாக்க தொடங்கு") -> 🎥 மேலே உள்ள படத்தை கிளிக் செய்து இந்த பயிற்சியைச் செய்ய குறுகிய வீடியோவைப் பாருங்கள். +> 🎥 மேலுள்ள படத்தை கிளிக் செய்து இந்த பயிற்சியை காணவும். -### பயிற்சி - ஒரு notebook-ஐப் பயன்படுத்துதல் +### பயிற்சி - ஒரு notebook உடன் பணியாற்றல் -இந்த கோப்புறையில், _notebook.ipynb_ என்ற கோப்பு உள்ளது. +இந்த கோப்பகத்தில், _notebook.ipynb_ என்ற கோப்பை காணலாம். -1. _notebook.ipynb_ ஐ Visual Studio Code-ல் திறக்கவும். +1. Visual Studio Code இல் _notebook.ipynb_ ஐ திறக்கவும். - Python 3+ உடன் Jupyter server தொடங்கும். Notebook-இல் `run` செய்யக்கூடிய பகுதிகளை காணலாம், குறியீட்டு துண்டுகள். Play button போன்ற ஐகானைத் தேர்வு செய்வதன் மூலம் குறியீட்டு துண்டை இயக்கலாம். + Python 3+ கொண்டு Jupyter சேவை துவங்கும். notebook இல் சில பகுதிகள் `run` செய்ய கூடிய குறியீடு துண்டுகள். ஒரு குறியீடு அலகை இயக்க, பிளே பொத்தானைப் போன்ற ஐகானை தேர்ந்தெடுக்க வேண்டும். -2. `md` ஐகானைத் தேர்வு செய்து, ஒரு markdown மற்றும் **# Welcome to your notebook** என்ற உரையைச் சேர்க்கவும். +1. `md` ஐகானை தேர்ந்தெடுத்து குறைவான markdown மற்றும் **# Welcome to your notebook** என எழுது. - அடுத்ததாக, சில Python குறியீட்டுகளைச் சேர்க்கவும். + அடுத்ததாக சில Python குறியீடுகளை சேர்க்கவும். -3. Code block-இல் **print('hello notebook')** எனத் தட்டச்சு செய்யவும். -4. குறியீட்டை இயக்க ஐகானைத் தேர்வு செய்யவும். +1. குறியீடு பகுதி இல் **print('hello notebook')** என தட்டச்சு செய்க. +1. குறியீட்டைக் இயக்க அம்புத்திற்குக் கீழே இருக்கும் அம்பையைக் கிளிக் செய்க. - நீங்கள் அச்சிடப்பட்ட உரையைப் பார்க்க வேண்டும்: + அச்சிடப்பட்ட கூற்று கீழ்க்காணும்: ```output hello notebook ``` -![VS Code-இல் notebook திறக்கப்பட்டுள்ள screenshot](../../../../translated_images/ta/notebook.4a3ee31f396b8832.webp) +![ஒரு notebook திறந்திருக்கும் VS Code](../../../../translated_images/ta/notebook.4a3ee31f396b8832.webp) -உங்கள் குறியீட்டுடன் குறிப்புகளை இணைத்து notebook-ஐ சுய ஆவணமாக்கலாம். +நீங்கள் բացառவும் பின்னூட்டங்களுடன் உங்கள் குறியீட்டை இணையடுக்கலாம், இது notebook ஐ தானாக ஆவணப்படுத்த உதவும். -✅ ஒரு வினாடி யோசிக்கவும்: ஒரு web developer-இன் வேலை சூழல் மற்றும் ஒரு data scientist-இன் வேலை சூழல் எவ்வளவு வேறுபட்டது? +✅ ஒரு நிமிடம் யோசிக்கவும்: வலை வடிவமைப்பாளரின் வேலை சூழல் மற்றும் ஒரு தரவு அறிவியலாளரின் வேலை சூழல் எப்படி வேறுபடுகிறது. -## Scikit-learn-ஐ பயன்படுத்த தொடங்குதல் +## Scikit-learn உடன் தொடங்குதல் -Python உங்கள் உள்ளூர் சூழலில் அமைக்கப்பட்டு, Jupyter notebooks-இல் நீங்கள் வசதியாக உள்ளீர்கள், Scikit-learn-ஐ பயன்படுத்துவதிலும் வசதியாக இருக்கலாம். Scikit-learn [விரிவான API](https://scikit-learn.org/stable/modules/classes.html#api-ref) ஐ வழங்குகிறது, இது ML பணிகளைச் செய்ய உதவுகிறது. +இப்போது Python உங்கள் உள்ளூரில் அமைக்கப்பட்டுவிட்டது, Jupyter Notebooks உடன் நீங்கள் பழகியுள்ளீர்கள், இனி Scikit-learn உடனும் பழகுவோம் (`sci` என்றபடி உயிரியல் அறிவியலால் உச்சரிக்க). Scikit-learn ML பணிகளைச் செய்ய உதவும் [பெரிய API](https://scikit-learn.org/stable/modules/classes.html#api-ref) வழங்குகிறது. -அவர்களின் [வலைத்தளத்தின்](https://scikit-learn.org/stable/getting_started.html) படி, "Scikit-learn என்பது திறந்த மூல machine learning நூலகமாகும், இது supervised மற்றும் unsupervised learning-ஐ ஆதரிக்கிறது. இது மாடல் பொருத்துதல், தரவின் முன்னேற்பாடு, மாடல் தேர்வு மற்றும் மதிப்பீடு, மற்றும் பல பயன்பாடுகளுக்கான கருவிகளை வழங்குகிறது." +அவர்களின் [வலைத்தளத்தின்படி](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn என்பது மேற்பார்வையிடப்பட்ட மற்றும் மேற்பார்வையிடப்படாத கற்றலைக் குறைக்கும் திறன் கொண்ட திறந்த மூல மெஷின் கற்றல் நூலகம். இது மாதிரி பொருத்தல், தரவு முன்னோத்தல், மாதிரி தேர்வு மற்றும் மதிப்பீடு உள்ளிட்ட பல கருவிகள் வழங்குகிறது." -இந்த பாடத்தில், Scikit-learn மற்றும் பிற கருவிகளைப் பயன்படுத்தி machine learning மாடல்களை உருவாக்கப் போகிறீர்கள், இது 'சாதாரண machine learning' பணிகளைச் செய்ய உதவுகிறது. நாங்கள் neural networks மற்றும் deep learning-ஐ தவிர்த்துள்ளோம், ஏனெனில் அவை 'AI for Beginners' பாடத்திட்டத்தில் விரிவாக கற்பிக்கப்படும். +இந்த பாடத்தில், நீங்கள் Scikit-learn மற்றும் பிற கருவிகளை பயன்படுத்தி 'சார்பான மெஷின் கற்றல்' பணிகளைச் செய்வீர்கள். நியூரல் நெட்வொர்க்கள் மற்றும் ஆழமான கற்றல் இவற்றை தவிர்த்துள்ளோம், அவை வரும் 'AI for Beginners' பாடத்திட்டத்தில் விரிவாக கற்றுக்கொடுக்கப்படும். -Scikit-learn-ஐப் பயன்படுத்தி மாடல்களை உருவாக்கவும், அவற்றை மதிப்பீடு செய்யவும் எளிதாக உள்ளது. இது முக்கியமாக எண் தரவுகளைப் பயன்படுத்துவதில் கவனம் செலுத்துகிறது மற்றும் கற்றல் கருவிகளாக பயன்படுத்த pre-made datasets-ஐ கொண்டுள்ளது. இது மாணவர்கள் முயற்சிக்க pre-built models-ஐ கொண்டுள்ளது. முதலில் Scikit-learn-ஐப் பயன்படுத்தி prepackaged data-ஐ ஏற்றுதல் மற்றும் ஒரு built-in estimator மூலம் ஒரு அடிப்படை ML மாடலை உருவாக்குதல் ஆகியவற்றை ஆராய்வோம். +Scikit-learn உருவாக்க மற்றும் மதிப்பீடு செய்ய எளிதாக்குகிறது. இது பெரும்பாலும் எண் தரவை எடுத்து செயல்படுகிறது மற்றும் பல தயார் செய்யப்பட்ட தரவு தொகுப்புகளும் மாதிரிகள் உள்ளன. அவற்றை முயற்சி செய்ய மாணவர்கள் பயன்படுத்தலாம். முதலில் உபகரிக்கப்பட்ட தரவு ஏற்றுதல் மற்றும் உள்ளமைக்கப்பட்ட எஸ்டிமேட்டர் மூலம் எடுக்கப்படும் முதல் ML மாதிரி பற்றி ஆய்வோம். ## பயிற்சி - உங்கள் முதல் Scikit-learn notebook -> இந்த பயிற்சி Scikit-learn-இன் [linear regression உதாரணத்தால்](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) ஊக்கமளிக்கப்பட்டது. +> இந்த பயிற்சிக்கு ஊக்குவிப்பாக Scikit-learn வலைத்தளத்தில் உள்ள [linear regression உதாரணம்](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) உள்ளது. -[![ML ஆரம்பம் - Python-இல் உங்கள் முதல் Linear Regression திட்டம்](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "ML ஆரம்பம் - Python-இல் உங்கள் முதல் Linear Regression திட்டம்") -> 🎥 மேலே உள்ள படத்தை கிளிக் செய்து இந்த பயிற்சியைச் செய்ய குறுகிய வீடியோவைப் பாருங்கள். +[![ஆரம்பக் கர ML பயனாளிகள் - உங்கள் முதல் Linear Regression திட்டம் Python இல்](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "ஆரம்பக் கர ML பயனாளிகள் - உங்கள் முதல் Linear Regression திட்டம் Python இல்") -இந்த பாடத்துடன் தொடர்புடைய _notebook.ipynb_ கோப்பில், 'trash can' ஐகானை அழுத்துவதன் மூலம் அனைத்து cells-ஐ அழிக்கவும். +> 🎥 மேலுள்ள படத்தை கிளிக் செய்து இந்த பயிற்சியை காணவும். -இந்த பகுதியில், Scikit-learn-இல் கற்றல் நோக்கங்களுக்காக உள்ள diabetes dataset-ஐப் பயன்படுத்தப் போகிறீர்கள். Diabetes நோயாளிகளுக்கான சிகிச்சையைச் சோதிக்க விரும்புகிறீர்கள் என்று கற்பனை செய்யுங்கள். Machine Learning மாடல்கள், மாறிகள் கூட்டங்களின் அடிப்படையில் எந்த நோயாளிகள் சிகிச்சைக்கு சிறந்த முறையில் பதிலளிக்க முடியும் என்பதைத் தீர்மானிக்க உதவலாம். ஒரு அடிப்படை regression மாடல் கூட, visualization மூலம், உங்கள் கற்பனை மருத்துவ பரிசோதனைகளை ஒழுங்கமைக்க உதவும் மாறிகள் பற்றிய தகவல்களை காட்டலாம். +இந்த பாடத்தின் தொடர்புடைய _notebook.ipynb_ கோப்பில் அனைத்து செல்களையும் 'துப்பாக்கி' ஐகானை அழுத்தி அழிக்கவும். -✅ பல வகையான regression முறைகள் உள்ளன, மேலும் நீங்கள் தேர்ந்தெடுப்பது உங்கள் கேள்விக்கு நீங்கள் தேடும் பதிலின் அடிப்படையில் இருக்கும். ஒரு குறிப்பிட்ட வயதுடைய நபரின் உயரத்தை கணிக்க விரும்பினால், நீங்கள் **எண் மதிப்பு** தேடுகிறீர்கள் என்பதால் linear regression-ஐப் பயன்படுத்துவீர்கள். ஒரு உணவின் வகை vegan ஆக கருதப்பட வேண்டுமா என்பதை கண்டறிய விரும்பினால், நீங்கள் **வகை ஒதுக்கீடு** தேடுகிறீர்கள், எனவே logistic regression-ஐப் பயன்படுத்துவீர்கள். Logistic regression பற்றி நீங்கள் பின்னர் மேலும் கற்றுக்கொள்வீர்கள். தரவின் மீது நீங்கள் கேட்கக்கூடிய சில கேள்விகள் மற்றும் எந்த முறைகள் பொருத்தமானவை என்பதைப் பற்றி சிந்தியுங்கள். +இந்தக் பகுதியில், கிளிநோய்களுக்கான சிறிய தரவு தொகுப்புடன் பணிபுரிகின்றீர்கள், இது Scikit-learn இல் கற்றல் நோக்கத்திற்காக உள்ளது. ஒரு சிகிச்சையை கணுக்கால நோயாளிகளுக்கு சோதிக்க விரும்பினால், மெஷின் கற்றல் மாதிரிகள் எந்த நோயாளிகள் சிறப்பாக பதில் அளிக்கக்கூடியார்கள் என்று உதவியாக இருக்கலாம், பல மாறிலிகள் அடிப்படையில். மிக அடிப்படையான regression மாதிரி கூட மாறிலிகள் பற்றி தகவல் காட்ட வாய்ப்பு உள்ளது, அது உங்கள் கருத்து செயலாக்கங்களை அமைக்க உதவும். -இப்போது இந்த பணியைத் தொடங்குவோம். +✅ பல regression முறைமைகள் உள்ளன, எது தேர்வு செய்வது என்பதை நீங்கள் எதிர்பார்க்கும் பதிலின் அடிப்படையில் தீர்மானிக்க வேண்டும். உதாரணமாக, ஒரு குறிப்பிட்ட வயதுக்கான ஒருவரின் உயரம் கணிப்பதற்கு linear regression உகந்தது, ஏனெனில் நீங்கள் ஒரு **எண் மதிப்பை** தேடுகிறீர்கள். ஒரு உணவுப் பரிமாணம் வேகன் தட்டியோடு பொருந்துமா என்று கண்டுபிடிக்க விரும்பினால், நீங்கள் **வகை வகுப்பு** தேடுகிறீர்கள், அதற்கு logistic regression பயன்படுத்தப்படும். அதன் பற்றி பிறகு கற்றுக்கொள்வீர்கள். தரவுகளிடமிருந்து கேள்விகள் என்ன என்பதையும், எந்த regression முறைகள் பொருத்தமானவை என்பதையும் சிந்தியுங்கள். -### நூலகங்களை இறக்குமதி செய்யுங்கள் +இப்போதெல்லாம் செயல்படுவோம். -இந்த பணிக்காக சில நூலகங்களை இறக்குமதி செய்ய வேண்டும்: +### நூலகங்களை இறக்குமதி செய்யவும் -- **matplotlib**. இது ஒரு பயனுள்ள [graphing tool](https://matplotlib.org/) ஆகும், மேலும் line plot உருவாக்க இது பயன்படுத்தப்படும். -- **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. கீழே உள்ள குறியீட்டை தட்டச்சு செய்து imports சேர்க்கவும்: +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` தரவுகளை training மற்றும் test sets-ஆகப் பிரிக்க பயன்படுத்தப்படுகிறது. + மேற்கோள்: நீங்கள் `matplotlib`, `numpy` ஆகியவற்றையும், `sklearn` இலிருந்து `datasets`, `linear_model`, மற்றும் `model_selection` ஐ இறக்குமதி செய்து கொண்டிருக்கிறீர்கள். `model_selection` உடன் தரவுகளை பயிற்சி மற்றும் சோதனை தொகுதிகள் ஆகப் பிரிக்கின்றீர்கள். -### Diabetes dataset +### கிளிநோய் தரவு தொகுப்பு -Scikit-learn-இல் உள்ள [diabetes dataset](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) diabetes பற்றிய 442 மாதிரிகளை கொண்டுள்ளது, இதில் 10 feature variables உள்ளன, அவற்றில் சில: +உள்ளமைக்கப்பட்ட [கிளிநோய் dataset](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) 442 மாதிரிகளைக் கொண்டுள்ளது, 10 பண்புகளுடன், அவற்றில் சில: -- age: வயது ஆண்டுகளில் +- வயது: வயது ஆண்டுகளில் - bmi: உடல் பருமன் குறியீடு -- bp: சராசரி இரத்த அழுத்தம் -- s1 tc: T-Cells (ஒரு வகை வெள்ளை இரத்த அணுக்கள்) +- bp: மத்திய இரத்த அழுத்தம் +- s1 tc: T-மதுக்கள் (ஒவ்வொரு வெள்ளை உமிழ்மதுக்கள் வகை) -✅ இந்த dataset 'sex' என்ற feature variable-ஐ diabetes பற்றிய ஆராய்ச்சிக்கான முக்கிய அம்சமாகக் கொண்டுள்ளது. பல மருத்துவ datasets binary classification போன்றவற்றை உள்ளடக்கியுள்ளன. இவை மக்கள் தொகையின் சில பகுதிகளை சிகிச்சைகளிலிருந்து விலக்குவதற்கு எப்படி வழிவகுக்கின்றன என்பதை சிந்தியுங்கள். +✅ இந்த dataset-ல் 'செக்ஸ்' எனும் binary வகுப்பு உண்டு, இது கிளிநோய் ஆராய்ச்சி பயனுள்ள ஒன்று. பல மருத்துவ தரவுத் தொகுப்புகள் இத்தகைய binary வகுப்பு கொண்டுள்ளன. இவ்வாறு வகைப்படுத்தல்கள் மக்கள் தொகையின் சில பகுதிகளை சிகிச்சைகளிலிருந்து விலக்கக்கூடும் என்று சிந்தியுங்கள். -இப்போது X மற்றும் y தரவுகளை ஏற்றுங்கள். +இப்போது, X மற்றும் y தரவுகளை ஏற்றுக. -> 🎓 இது supervised learning என்பதை நினைவில் கொள்ளுங்கள், மேலும் named 'y' target தேவை. +> 🎓 நினைவில் கொள், இது மேற்பார்வையுடன் கற்றல் எனும் அம்சம், எனவே பெயரிடப்பட்ட 'y' இலக்கு தேவை. -ஒரு புதிய code cell-இல், `load_diabetes()` ஐ அழைத்து diabetes dataset-ஐ ஏற்றுங்கள். `return_X_y=True` எனும் input, `X` data matrix ஆகவும், `y` regression target ஆகவும் இருக்கும் என்பதை சுட்டிக்காட்டுகிறது. +புதிய குறியீடு செல்களில், `load_diabetes()` ஐ அழைத்துக் கொண்டு diabetes dataset-ஐ ஏற்கவும். உள்ளீடு `return_X_y=True` என்பது `X` என்பது தரவுப் புள்ளிகளுக்கான மேட்ரிக்ஸ் ஆகும், `y` என்பது regression இலக்காக இருக்கும். -1. Data matrix மற்றும் அதன் முதல் உருப்படியின் வடிவத்தை காட்ட print commands சேர்க்கவும்: +1. தரவு மேட்ரிக்ஸின் வடிவமைப்பையும் அதன் முதல் பொருளையும் அச்சிடுவதற்கான print கட்டளைகள் சேர்க்கவும்: ```python X, y = datasets.load_diabetes(return_X_y=True) @@ -149,9 +150,9 @@ Scikit-learn-இல் உள்ள [diabetes dataset](https://scikit-learn.org/ print(X[0]) ``` - நீங்கள் பெறும் பதில் tuple ஆகும். Tuple-இன் முதல் இரண்டு மதிப்புகளை முறையே `X` மற்றும் `y`-க்கு ஒதுக்குகிறீர்கள். [Tuples பற்றி](https://wikipedia.org/wiki/Tuple) மேலும் அறிக. + நீங்கள் பெறுகின்ற விடை ஒரு tuple ஆகும். இதன் முதல் இரண்டு மதிப்புகளைவெவ்விலுமாக `X` மற்றும் `y` க்கு ஒதுக்குகிறீர்கள். [tuple பற்றி மேலும் தெரியுமா](https://wikipedia.org/wiki/Tuple). - இந்த data 442 உருப்படிகளை 10 உருப்படிகளின் arrays வடிவில் கொண்டுள்ளது என்பதை நீங்கள் காணலாம்: + இந்த தரவு 442 உருப்படியைக் கொண்டு 10 உறுப்புகளின் வரிசைகள் வடிவத்தில் உள்ளது: ```text (442, 10) @@ -159,39 +160,39 @@ Scikit-learn-இல் உள்ள [diabetes dataset](https://scikit-learn.org/ -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 இலக்குக்கிடையிலான உறவினைப் பற்றிக் சிந்தியுங்கள். Linear regression அம்ச X மற்றும் இலக்கு y இடையிலான உறவுகளை கணக்கிடுகிறது. கிளிநோய் dataset இன் [இலக்கு](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) ஆவணத்தில் உள்ளதா? இந்த dataset எதை விளக்குகிறது என்பதைக் கவனித்து பார்க்கவும். -2. Dataset-இன் ஒரு பகுதியை plot செய்ய 3rd column-ஐத் தேர்ந்தெடுக்கவும். `:` operator-ஐப் பயன்படுத்தி அனைத்து rows-ஐத் தேர்ந்தெடுக்கவும், பின்னர் index (2) மூலம் 3rd column-ஐத் தேர்ந்தெடுக்கவும். Plot செய்ய 2D array-ஆக data-ஐ reshape செய்ய `reshape(n_rows, n_columns)` ஐப் பயன்படுத்தவும். Parameter-ல் ஒன்று -1 என்றால், தொடர்புடைய அளவுகள் தானாக கணக்கிடப்படும். +2. அடுத்ததாக, dataset இன் ஒரு பகுதியை வரைபடமாகக் காட்ட 3வது நெடு நெடுவரிசையைத் (index 2) தேர்ந்தெடுக்கவும். இதற்கு உங்கள் எல்லா வரிசைகளையும் `:` மூலம் தேர்வு செய்து 3வது நெடுவரிசையை நினைவில் கொள்ளவும். 2D வரிசையாக மாற்றவும் `reshape(n_rows, n_columns)` பயன்படுத்தவும். ஒரு அளவுரு -1 என்றால் அந்த பரிமాణம் தானாகக் கணக்கிடப்படும். ```python X = X[:, 2] X = X.reshape((-1,1)) ``` - ✅ எந்த நேரத்திலும், data-ஐ print செய்து அதன் வடிவத்தைச் சரிபார்க்கவும். + ✅ எந்த நேரமும் தரவின் வடிவமைப்பைக் கண்காணிக்க print செய்யலாம். -3. Data plot செய்ய தயாராக உள்ளதால், இந்த dataset-இல் எண்களின் இடைவெளியை machine கண்டறிய உதவுமா என்பதைப் பார்க்கலாம். இதற்காக, data (X) மற்றும் target (y) இரண்டையும் test மற்றும் training sets-ஆகப் பிரிக்க வேண்டும். Scikit-learn-இல் இதைச் செய்ய எளிய வழி உள்ளது; test data-ஐ ஒரு குறிப்பிட்ட புள்ளியில் பிரிக்கலாம். +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. இப்போது உங்கள் மாடலை train செய்ய தயாராக உள்ளீர்கள்! Linear regression model-ஐ ஏற்றவும் மற்றும் `model.fit()` ஐப் பயன்படுத்தி உங்கள் X மற்றும் y training sets-ஐ train செய்யவும்: +4. இப்போது உங்கள் மாதிரியை பயிற்சி செய்ய தயாராக இருக்கின்றீர்கள்! linear regression மாதிரியை ஏற்று உங்கள் X மற்றும் y பயிற்சி தொகுதிகள் கொண்டு `model.fit()` பயன்படுத்தி பயிற்சி செய்யுங்கள்: ```python model = linear_model.LinearRegression() model.fit(X_train, y_train) ``` - ✅ `model.fit()` என்பது TensorFlow போன்ற பல ML நூலகங்களில் நீங்கள் காணும் ஒரு function ஆகும். + ✅ `model.fit()` என்பது TensorFlow போன்ற பல ML நூலகங்களில் காணப்படும் செயல்பாடு -5. பின்னர், test data-ஐப் பயன்படுத்தி prediction உருவாக்கவும், இது data குழுக்களுக்கிடையில் line-ஐ வரைய பயன்படுத்தப்படும். +5. பிறகு சோதனை தரவை பயன்படுத்தி `predict()` செயல்பாடு மூலம் முன்னறிவிப்பு உருவாக்கவும். இது தரவு குழுக்களில் இடையே கோடு வரைதல் பயன்படும் ```python y_pred = model.predict(X_test) ``` -6. இப்போது data-ஐ plot-இல் காட்ட நேரம். Matplotlib இந்த பணிக்குப் பயனுள்ள கருவியாகும். அனைத்து X மற்றும் y test data-களின் scatterplot உருவாக்கவும், மற்றும் model-ஐ data குழுக்களுக்கிடையில் மிகச் சரியான இடத்தில் line-ஐ வரைய prediction-ஐப் பயன்படுத்தவும். +6. இப்போது தரவை வரைபடத்தில் காட்டும் நேரம். Matplotlib இந்த பணிக்கு மிகவும் பயனுள்ள கருவி. அனைத்து X மற்றும் y சோதனை தரவுகளையும் scatterplot ஆக உருவாக்கவும், மாடல் தரவு குழுக்களுக்கு இடையே அதிர்வெண் மூலம் வரிக்காட்டவும். ```python plt.scatter(X_test, y_test, color='black') @@ -202,29 +203,32 @@ Scikit-learn-இல் உள்ள [diabetes dataset](https://scikit-learn.org/ plt.show() ``` - ![Diabetes பற்றிய datapoints-ஐ காட்டும் scatterplot](../../../../translated_images/ta/scatterplot.ad8b356bcbb33be6.webp) -✅ இங்கே என்ன நடக்கிறது என்பதைப் பற்றி சிறிது யோசிக்கவும். ஒரு நேர்கோடு பல சிறிய தரவுப் புள்ளிகளின் வழியாக ஓடுகிறது, ஆனால் அது உண்மையில் என்ன செய்கிறது? புதிய, பார்க்கப்படாத தரவுப் புள்ளி ஒரு வரைபடத்தின் y அச்சுடன் தொடர்புடைய இடத்தில் பொருந்த வேண்டும் என்பதை நீங்கள் எப்படி கணிக்க முடியும் என்பதைப் பார்க்க முடியுமா? இந்த மாதிரியின் நடைமுறை பயன்பாட்டை வார்த்தைகளில் விளக்க முயற்சிக்கவும். + ![கிளிநோய் தொடர்பான தரவுப் புள்ளிகளைக் காட்டும் scatterplot](../../../../translated_images/ta/scatterplot.ad8b356bcbb33be6.webp) + -வாழ்த்துக்கள், நீங்கள் உங்கள் முதல் நேரியல் மடங்கல் மாதிரியை உருவாக்கி, அதைப் பயன்படுத்தி ஒரு கணிப்பு செய்து, அதை ஒரு வரைபடத்தில் காட்டியுள்ளீர்கள்! + ✅ இங்கே என்ன நடக்கிறது என்று கொஞ்சம் யோசிக்கவும். ஒரு நேர்கோடு பல சிறிய தரவுத் துளிகளுக்கு வழியாக ஓடுகிறது, ஆனால் அது دقیகமாக என்ன செய்கிறது? ஒரு புதிய, பார்க்காத தரவு புள்ளி துணைத் தொடரின் 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 மொழிபெயர்ப்பு சேவையை பயன்படுத்தி மொழிபெயர்க்கப்பட்டுள்ளது. நாங்கள் துல்லியத்திற்காக முயற்சிக்கின்றோம், ஆனால் தானியங்கி மொழிபெயர்ப்புகளில் பிழைகள் அல்லது தவறான தகவல்கள் இருக்கக்கூடும் என்பதை கவனத்தில் கொள்ளவும். அதன் தாய்மொழியில் உள்ள மூல ஆவணம் அதிகாரப்பூர்வ ஆதாரமாக கருதப்பட வேண்டும். முக்கியமான தகவல்களுக்கு, தொழில்முறை மனித மொழிபெயர்ப்பு பரிந்துரைக்கப்படுகிறது. இந்த மொழிபெயர்ப்பைப் பயன்படுத்துவதால் ஏற்படும் எந்த தவறான புரிதல்கள் அல்லது தவறான விளக்கங்களுக்கு நாங்கள் பொறுப்பல்ல. \ 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/ta/2-Regression/2-Data/README.md b/translations/ta/2-Regression/2-Data/README.md index 5cb54e7a4..4719fedf2 100644 --- a/translations/ta/2-Regression/2-Data/README.md +++ b/translations/ta/2-Regression/2-Data/README.md @@ -1,62 +1,62 @@ -# Scikit-learn பயன்படுத்தி ஒரு ரிக்ரஷன் மாடல் உருவாக்குதல்: தரவுகளை தயாரித்து காட்சிப்படுத்துதல் +# Scikit-learn பயன்படுத்தி ஒரு எதிர்காலக் கணிப்பு மாதிரியை உருவாக்குதல்: தரவைத் தயாரித்து காட்சி போதித்தல் -![தரவு காட்சிப்படுத்தல் தகவல் வரைபடம்](../../../../translated_images/ta/data-visualization.54e56dded7c1a804.webp) +![தரவு காட்சிப்படுத்தல் தகவலுரு](../../../../translated_images/ta/data-visualization.54e56dded7c1a804.webp) -தகவல் வரைபடம்: [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) ## அறிமுகம் -Scikit-learn-ஐப் பயன்படுத்தி மெஷின் லெர்னிங் மாடல் உருவாக்கத் தேவையான கருவிகளை நீங்கள் அமைத்த பிறகு, உங்கள் தரவுகளுக்கு கேள்விகள் கேட்கத் தயாராக இருக்கிறீர்கள். தரவுகளுடன் வேலை செய்யும் போது மற்றும் ML தீர்வுகளைப் பயன்படுத்தும் போது, உங்கள் தரவுத்தொகுப்பின் திறன்களை சரியாகத் திறக்க சரியான கேள்வியை கேட்பது மிகவும் முக்கியம். +நீங்கள் Scikit-learn பயன்படுத்தி இயந்திரக் கற்றல் மாதிரி உருவாக்கத் தொடங்க தேவையான கருவிகளுடன் என்டு உள்ளீர்கள், இப்போது உங்கள் தரவில் கேள்விகள் கேட்கத் தயாராக இருக்கிறீர்கள். தரவு மற்றும் இயந்திரக் கற்றல் தீர்வுகளை பயன்படுத்தும்போது, உங்கள் தரவுக் குத்தகைகள் திறக்கச் சரியான கேள்வி கேட்கும் முறை மிகவும் முக்கியமான ஒன்று. -இந்த பாடத்தில், நீங்கள் கற்றுக்கொள்வீர்கள்: +இப்பாடத்தில், நீங்கள் கற்றுக்கொள்ள உண்டு: -- மாடல் உருவாக்கத்திற்கான தரவுகளை எப்படி தயாரிப்பது. -- தரவுகளை காட்சிப்படுத்த Matplotlib-ஐ எப்படி பயன்படுத்துவது. +- மாதிரி கட்டமைப்புக்கு உங்கள் தரவை nasıl தயார் செய்வது. +- தரவு காட்சிப்படுத்தும் நோக்கத்திற்காக 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' மற்றும் பிற மதிப்புகளின் கலவையாக உள்ளது. உண்மையில், தரவு கொஞ்சம் குழப்பமானது. -[![ML for beginners - How to Analyze and Clean a Dataset](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML for beginners - How to Analyze and Clean a Dataset") +[![ML தொடக்கர்களுக்கான - Dataset ஐ பகுப்பாய்வு செய்து சுத்தம் செய்வது எப்படி](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML தொடக்கர்களுக்கான - Dataset ஐ பகுப்பாய்வு செய்து சுத்தம் செய்வது எப்படி") -> 🎥 மேலே உள்ள படத்தை கிளிக் செய்து இந்த பாடத்திற்கான தரவுகளைத் தயாரிக்க ஒரு குறுகிய வீடியோவைப் பாருங்கள். +> 🎥 இந்த படத்தை கிளிக் செய்து, பாடத்திற்கான தரவைத் தயாரிக்கும் ஒரு குறுகிய வீடியோவை காணலாம். -உண்மையில், ML மாடல் உருவாக்கத்திற்குத் தயாராக இருக்கும் ஒரு தரவுத்தொகுப்பை பெறுவது மிகவும் அரிது. இந்த பாடத்தில், Python நூலகங்களைப் பயன்படுத்தி ஒரு மூல தரவுத்தொகுப்பை எப்படி தயாரிப்பது என்பதை நீங்கள் கற்றுக்கொள்வீர்கள். மேலும், தரவுகளை காட்சிப்படுத்த பல்வேறு நுட்பங்களை நீங்கள் கற்றுக்கொள்வீர்கள். +உண்மையில், ஒரு இயந்திரக் கற்றல் மாதிரியை உருவாக்குவதற்கு முழுமையாக தயாராகக் கிடைக்கும் தரவை பெறுவது சாதாரணம் அல்ல. இப்பாடத்தில், நீங்கள் அசல் தரவை ஸ்டாண்டர்ட் Python நூலகங்களைப் பயன்படுத்தி எப்படி தயார் செய்வது என்று கற்றுக்கொள்வீர்கள். மேலும், தரவை காட்சிப்படுத்த பல்வேறு நுட்பங்களையும் கற்றுக்கொள்வீர்கள். -## வழக்குக் கதை: 'பூசணிக்காய் சந்தை' +## உயர் ஆய்வு: 'கத்திரிக்காய் சந்தை' -இந்த கோப்பகத்தில், [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 இணையதளத்தில் பல நகரங்களுக்கு தனித்தனியாக பல கோப்புகளில் பதிவிறக்கம் செய்யலாம். பல கோப்புகளை தவிர்க்க, அனைத்து நகரங்களின் தரவையும் நாம் ஒரே பத்திரிக்கையில் இணைத்துள்ளோம், ஆகவே நாம் ஏற்கனவே சில அளவுக்கு தரவை _தயார்_ செய்துள்ளோம். அடுத்து, தரவை நன்கு பார்ப்போம். -### பூசணிக்காய் தரவுகள் - ஆரம்பக் கருத்துகள் +### கத்திரிக்காய் தரவு - ஆரம்ப முடிவுகள் -இந்த தரவுகள் பற்றி நீங்கள் என்ன கவனிக்கிறீர்கள்? நீங்கள் ஏற்கனவே சரங்கள், எண்கள், வெற்றிடங்கள் மற்றும் விசித்திரமான மதிப்புகள் கலந்துள்ளதைப் பார்த்தீர்கள், இதை நீங்கள் புரிந்துகொள்ள வேண்டும். +இந்த தரவின் பற்றி என்ன கவனித்தீர்கள்? எழுத்துக்குறிகள், எண்கள், வெற்றிடங்கள் மற்றும் அதிர்வுதியான மதிப்புகள் கலந்துள்ளதைக் நீங்கள் ஏற்கனவே பார்த்துள்ளீர்கள். -Regression நுட்பத்தைப் பயன்படுத்தி, இந்த தரவுகளுக்கு நீங்கள் எந்த கேள்வியை கேட்கலாம்? "ஒரு குறிப்பிட்ட மாதத்தில் விற்பனைக்கு உள்ள பூசணிக்காயின் விலையை கணிக்கவும்" என்ற கேள்வி எப்படி? தரவுகளை மீண்டும் பார்த்தால், இந்த பணிக்குத் தேவையான தரவமைப்பை உருவாக்க சில மாற்றங்களைச் செய்ய வேண்டும். +இந்த தரவுக்கு Regression தொழில்நுட்பம் பயன்படுத்தி எந்த கேள்வியை கேட்கலாம்? எடுத்துக்காட்டு "ஒரு கொடுக்கப்பட்ட மாதத்தில் விற்பனைக்கு இருக்கும் கத்திரிக்காய் விலை கணிக்கவும்". தரவை மீண்டும் பார்த்தால், இந்த பணிக்குத் தேவையான தரவு கட்டமைப்பை உருவாக்க சில மாற்றங்கள் செய்யப்பட வேண்டும். +## பயிற்சி - கத்திரிக்காய் தரவை பகுப்பாய்வு செய்தல் -## பயிற்சி - பூசணிக்காய் தரவுகளை பகுப்பாய்வு செய்யுங்கள் +கத்திரிக்காய் தரவை பகுப்பாய்வு செய்து தயார் செய்ய [Pandas](https://pandas.pydata.org/), (`Python Data Analysis` என்ற பொருளைப் பார்க்கிறது) என்று அழைக்கப்படும் பயனுள்ள கருவி பயன்படுத்துவோம். -[Pandas](https://pandas.pydata.org/) (இது `Python Data Analysis` என்பதற்கான சுருக்கமாகும்) எனும் கருவியைப் பயன்படுத்தி, இந்த பூசணிக்காய் தரவுகளை பகுப்பாய்வு செய்து தயாரிக்கலாம். +### முதலில், காணவில்லை உள்ள தேதிகளை சரிபார் -### முதலில், தேதிகள் காணாமல் போனதா என்பதைச் சரிபார்க்கவும் +முதலில் காணவில்லை இருக்கும் தேதிகளைச் சரிபார்க்க சில செயல்கள் செய்ய வேண்டும்: -முதலில், தேதிகள் காணாமல் போனதா என்பதைச் சரிபார்க்க சில நடவடிக்கைகளை எடுக்க வேண்டும்: +1. தேதிகளை மாத வடிவமைப்புக்கு மாற்று (இவை அமெரிக்க தேதிகள், ஆகவே வடிவம் `MM/DD/YYYY` ஆகும்). +2. மாதத்தைக் புதிய நெடுவரிசையில் எடு. -1. தேதிகளை மாத வடிவத்திற்கு மாற்றவும் (இவை US தேதிகள், எனவே வடிவம் `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. தற்போதைய 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 @@ Visual Studio Code-ல் _notebook.ipynb_ கோப்பைத் திறந ``` - ✅ `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` வகை அங்குலம் ஒட்டுமொத்த, தொகுதி, அல்லது 'ஒவ்வொன்றும்' என்பதாக உள்ளது. கத்திரிக்காய்களை ஒழுங்காக எடை அளவிடுவது கடினமாய் உள்ளது, ஆகவே `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 அளவு மாறுகிறதா? விலையை ஒரு 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 @@ Bushel அளவு ஒவ்வொரு வரிசையிலும் ம 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 of tomatoes 56 பவுண்டுகள் எடையுடன் இருக்க வேண்டும்... இலைகள் மற்றும் பச்சை கீரைகள் அதிக இடத்தை எடுக்கும், எனவே ஒரு bushel of spinach 20 பவுண்டுகள் மட்டுமே." இது மிகவும் சிக்கலானது! பூசணிக்காய்களின் bushel-to-pound மாற்றத்தை செய்யாமல், bushel அடிப்படையில் விலை நிர்ணயிக்கலாம். பூசணிக்காய்களின் bushel பற்றிய இந்த ஆய்வு, உங்கள் தரவின் தன்மையைப் புரிந்துகொள்வது மிகவும் முக்கியம் என்பதை காட்டுகிறது! +✅ [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) படி, bushel எடை தயாரிப்பு வகை அடிப்படையில் மாறும், ஏனெனில் இது அளவு அளவிடுதலைச் சொல்கிறது. "உதாரணமாக, தக்காளி bushel 56 பவுண்ட் எடையுள்ளது ... இலைகள் மற்றும் பச்சை மணைகள் அதிக இடம் பிடிக்கின்றன ஆனால் குறைந்த எடை கொண்டுள்ளதால், பச்சை spinach bushel 20 பவுண்ட் மட்டுமே." இது எல்லாம் சிக்கலானது! bushel-ஐ பவுண்டாக மாற்றாது, bushel அடிப்படையில் விலையை நிர்ணயிப்போம். இந்த bushel கத்திரிக்காய் ஆய்வு உங்கள் தரவின் இயல்பை புரிந்து கொள்ள மிகவும் முக்கியம் என்பதை காட்டுகிறது! -இப்போது, bushel அளவின் அடிப்படையில் விலையைப் பகுப்பாய்வு செய்யலாம். தரவுகளை ஒரு முறை மேலும் அச்சிடினால், அது சீரமைக்கப்பட்டதை நீங்கள் காணலாம். +இப்போது, bushel அளவின் அடிப்படையில் அலகின் விலையை பகுப்பாய்வு செய்யலாம். தரவை மீண்டும் அச்சிடுங்கள், அது எப்படி சீரமைக்கப்பட்டுள்ளது என்பதை காணலாம். -✅ பாதி-bushel மூலம் விற்கப்படும் பூசணிக்காய்கள் மிகவும் விலையுயர்ந்தவை என்பதை நீங்கள் கவனித்தீர்களா? ஏன் என்பதை நீங்கள் கண்டுபிடிக்க முடியுமா? குறிப்புகள்: சிறிய பூசணிக்காய்கள் பெரியவற்றை விட மிகவும் விலையுயர்ந்தவை, ஏனெனில் ஒரு பெரிய வெற்று பை பூசணிக்காயால் எடுக்கப்படும் பயன்படுத்தப்படாத இடத்தை விட, ஒரு bushel-இல் பல சிறிய பூசணிக்காய்கள் இருக்கும். +✅ பாதி bushel விற்கப்படும் கத்திரிக்காய் மிகவும் விலையுயர்ந்தது என்பதை நீங்கள் கவனித்தீர்களா? ஏன் என முடிவு செய்ய முடியுமா? குறிப்பு: சிறிய கத்திரிக்காய்கள் பெரியதுக்களைவிட மிகுந்த விலை கொண்டவை என்பதால், ஒரு பெரிய துளைக்குழியுள்ள பை கத்திரிக்காயால் பிடிக்கப்பெறும் இடம் தவிர்க்கப்பட்டு, bushel-க்கு அதிக எண்ணிக்கை இருக்கும் என்பதால் அதற்குக் காரணமாக இருக்கலாம். -## காட்சிப்படுத்தல் உத்திகள் +## காட்சிப்படுத்தல் தந்திரங்கள் -தரவுகளுடன் வேலை செய்யும் தரவுத் விஞ்ஞானியின் பங்கு, அவர்கள் வேலை செய்யும் தரவின் தரத்தையும் தன்மையையும் காட்டுவது. இதைச் செய்ய, அவர்கள் தரவின் பல்வேறு அம்சங்களை காட்டும் சுவாரஸ்யமான காட்சிப்படுத்தல்களை, அல்லது பிளாட்கள், கிராஃப்கள் மற்றும் வரைபடங்களை உருவாக்குகிறார்கள். இந்த வழியில், அவர்கள் கண்ணுக்குத் தெரியாத உறவுகள் மற்றும் இடைவெளிகளை காட்சிப்படுத்த முடிகிறது. +தரவு அறிவியல் வல்லுநர்களின் பங்கு, வேலை செய்கிற தரவின் தரம் மற்றும் இயலை பரிசுத்தமாக்குவதுதான். இதற்காக, அவர்கள் சுவாரஸ்யமான காட்சிப்படுத்தல்களை, வரைபடங்கள், கிராப்கள் மற்றும் அட்டவணைகள் மூலம் தரவை ரடெண்டு காட்டுகின்றனர். இதை வழியாக தொடர்புகளையும் கூடுதலாக தெரியாத இடைவெளிகளையும் காட்சிப்படுத்த முடிகிறது. -[![ML for beginners - How to Visualize Data with Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML for beginners - How to Visualize Data with Matplotlib") +[![ML தொடக்கர்களுக்கான - Matplotlib மூலம் தரவை காட்சிப்படுத்துவது எப்படி](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML தொடக்கர்களுக்கான - Matplotlib மூலம் தரவை காட்சிப்படுத்துவது எப்படி") -> 🎥 மேலே உள்ள படத்தை கிளிக் செய்து இந்த பாடத்திற்கான தரவுகளை காட்சிப்படுத்த ஒரு குறுகிய வீடியோவைப் பாருங்கள். +> 🎥 இந்த படத்தை கிளிக் செய்து, பாடத்திற்கான தரவை காட்சிப்படுத்தும் குறுகிய வீடியோவை காணலாம். -காட்சிப்படுத்தல்கள் தரவுக்கு மிகவும் பொருத்தமான மெஷின் லெர்னிங் நுட்பத்தைத் தீர்மானிக்க உதவலாம். ஒரு வரியைப் பின்பற்றும் போல தோன்றும் scatterplot, உதாரணமாக, தரவுகள் ஒரு நேரியல் ரிக்ரஷன் பயிற்சிக்குத் தகுந்தவை என்பதை காட்டுகிறது. +காட்சிப்படுத்தல்கள், தரவுக்கு ஏற்ற இயந்திரக் கற்றல் தொழில்நுட்பத்தை தீர்மானிக்கவும் உதவு. உதாரணமாக, ஒரு நிலையான கோட்டை பின்பற்றும் 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-ஐ காட்சிப்படுத்த சில அடிப்படை பிளாட்களை உருவாக்க முயற்சிக்கவும். ஒரு அடிப்படை வரி பிளாட் என்ன காட்டும்? +நீங்கள் இப்போது உருவாக்கிய புதிய தரவுத்தொகுதியைப் பயன்படுத்தி அடிப்படை கோட்பாடுகளை உருவாக்க முயற்சி செய்யுங்கள். ஒரு அடிப்படை கோட்டுக் கோட்டு என்ன காட்டும்? -1. Pandas இறக்குமதியின் கீழ் கோப்பின் மேல் Matplotlib-ஐ இறக்குமதி செய்யுங்கள்: +1. கோப்பு மேலே, Pandas இறக்குமதிக்குப் பின் Matplotlib ஐ இறக்குமதி செய்க: ```python import matplotlib.pyplot as plt ``` -1. முழு notebook-ஐ மீண்டும் இயக்கி புதுப்பிக்கவும். -1. notebook-இன் கீழே ஒரு cell சேர்த்து தரவுகளை ஒரு பெட்டியாக பிளாட் செய்யுங்கள்: +1. முழு நோட்புக் ஐ மறுகட்ட இயக்கு. +1. நோட்புக் அடியில், தரவுத்தொகுதியை பாக்சாக காட்டு ஒரு செலினை சேர்க்கவும்: ```python price = new_pumpkins.Price @@ -174,44 +174,121 @@ Jupyter notebooks-ல் நன்றாக வேலை செய்யும plt.show() ``` - ![மாதத்திற்கான விலை உறவைக் காட்டும் scatterplot](../../../../translated_images/ta/scatterplot.b6868f44cbd2051c.webp) + ![விலை மற்றும் மாத உறவைக் gösteren ஒரு scatterplot](../../../../translated_images/ta/scatterplot.b6868f44cbd2051c.webp) - இது ஒரு பயனுள்ள பிளாட் ஆகும்? இதைப் பற்றி உங்களுக்கு ஏதேனும் ஆச்சரியம் இருக்கிறதா? + இது பயனுள்ள பிளாட் தானா? இதில் உங்களை ஏதேனும் அதிர்ச்சியடையவைக்குமா? - இது குறிப்பாக பயனுள்ளதாக இல்லை, ஏனெனில் இது உங்கள் தரவுகளை ஒரு குறிப்பிட்ட மாதத்தில் புள்ளிகளின் பரப்பாக மட்டுமே காட்டுகிறது. + இது குறிப்பாக பயனுள்ளதாக இல்லை, ஏனெனில் ஒரு மாதத்தில் உள்ள உங்கள் தரவை புள்ளிகள் பரவலாகக் காட்டுகிறது மட்டும். -### இதை பயனுள்ளதாக மாற்றுங்கள் +### இதை பயனுள்ளதாக மாற்று -பட்டைகள் பயனுள்ள தரவுகளை காட்ட, நீங்கள் பொதுவாக தரவுகளை எவ்விதமாகக் குழுவாக்க வேண்டும். தரவுகள் விநியோகத்தை காட்டும் ஒரு பிளாட்டை உருவாக்க முயற்சிக்கலாம், இதில் y அச்சு மாதங்களை காட்டுகிறது. +பயனுள்ள தரவை காட்சிப்படுத்த, தரவினை எப்போது எடு வேறு வகையில் குழுவாக்க வேண்டும். வாரிசையின் y அச்சு மாதங்களை காட்டும் ஒரு காட்சி உருவட்ச் பண்ண முயற்சி செய்யுங்கள், மேலும் தரவு பகிர்ச்சி காட்டும். -1. தரவுகளை குழுவாக்கிய பட்டை வரைபடம் உருவாக்க ஒரு cell சேர்க்கவும்: +1. முலநோக்கில் ஒரு குழுவாகப்பட்ட பட்டை விளக்கப்படம் உருவாக்க ஒரு செல்களைச் சேர்க்கவும்: ```python new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') plt.ylabel("Pumpkin Price") ``` - ![மாதத்திற்கான விலை உறவைக் காட்டும் பட்டை வரைபடம்](../../../../translated_images/ta/barchart.a833ea9194346d76.webp) + ![விலை மற்றும் மாத உறவைக் காட்டும் பட்டை விளக்கப்படம்](../../../../translated_images/ta/barchart.a833ea9194346d76.webp) + + இது மிகவும் பயனுள்ள தரவு காட்சிப்படுத்தல்! கத்திரிக்காய்களின் அதிகபட்ச விலை செப்டம்பர் மற்றும் அக்டோபர் மாதங்களில் நிகழ்ந்ததாகத் தெரிவிக்கிறது. இது உங்கள் எதிர்ப்பார்ப்புக்கு ஏற்றதா? ஏன் அல்லது ஏன் இல்லை என்பதை விவாதிக்கவும். + +## பயிற்சி - 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) இதற்கான சிறந்த கருவிகளில் ஒன்றாகும்: புள்ளிகள் கோட்டு பின்பற்றுவதாக தோன்றினால், இரண்டு மாறிலிகள் தொடர்புடையதாயிருக்கலாம், இது ஒரு நல்ல அடையாளம் அந்தக் கோட்டர் Regression மாதிரி வேலை செய்யும். + +1. முன்பு இருந்த விலை-மாத ஸ்காட்டர் பிளாட் Seaborn இன் [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) (உறவு பிளாக்) கொண்டு மீண்டும் உருவாக்குங்கள், இது நேரடியாக உங்கள் தரவுத்தொகுதியில் உள்ள நெடுவரிசைகளுடன் வேலை செய்யும்: + + ```python + sns.relplot(x="Price", y="Month", data=new_pumpkins) + ``` + + ![விலை மற்றும் மாத உறவுக் காட்டும் Seaborn ஸ்காட்டர் பிளாட்](../../../../translated_images/ta/relplot.a03837d8f0329cec.webp) + + எப்படி நீங்கள் _நெடுவரிசை பெயர்களையும்_ மற்றும் தரவுத்தொகுதியையும் அனுப்புகிறீர்கள் மற்றும் Seaborn அதன் அச்சு தலைப்புக்களை கவனிக்கும் என்பதை கவனிக்கவும். + +2. நீங்கள் `kind="line"` என அனுப்பி கோட்டு பிளாட்டுக்கு மாற்றலாம். Seaborn கோட்டின் சுற்றிலும் நம்பிக்கை இடைவெளியை காட்டும் மூடி பட்டையை கூட வரைந்திருக்கும்: + + ```python + sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins) + ``` + + ![விலை மற்றும் மாத உறவைக் காட்டும் Seaborn கோட்டு பிளாட்](../../../../translated_images/ta/lineplot.f9034ba47b1e30ee.webp) + + இந்த குறிப்பிட்ட தரவு கொஞ்சம் சத்தமாக உள்ளது, ஆகையால் கோட்டு பிளாட் மிகவும் தெளிவான தேர்வு அல்ல - ஆனால் 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") + ``` + + ![A Seaborn bar chart showing the price distribution per month](../../../../translated_images/ta/catplot.e73fc35fdf96242b.webp) + + இது Matplotlib மூலம் நீங்கள் பார்த்ததை உறுதிப்படுத்துகிறது — விலைகள் செப்டம்பர் மற்றும் அக்டோபர் மாதங்களில் உச்சக்கட்டத்தில் இருக்கும் — ஆனால் Seaborn ஒவ்வொரு மாதத்திற்குள் விலை _மாறுபடுவதை_ காணக்கூடியவாறு காட்சிப்படுத்துகிறது. + +### தொடர்புகளை காண காட்டும் ஹீட்மேப்கள் + +இரு மாறிலிகளை ஒரே நேரத்தில் ஒப்பிட ஸ்காட்டர் வரைபடங்கள் பயன்படுகின்றன. பல நுண்ணணுக்களை கொண்டுள்ள போது, [ஹீட்மேப்](https://en.wikipedia.org/wiki/Heat_map) ஒவ்வொரு ஜோடிப் பத்திகளுக்கும் இடையேயான உறவின் வலிமையை ஒரே நேரத்தில் பார்க்க உதவுகிறது. இது எந்த அம்சங்கள் அதிகமாக தொடர்புடையவை என்பதை கண்டுபிடிக்க பொதுவாக பயன்படுத்தப்படும் வழி, பின்னர் எந்த பத்திகளை மாதிரியில் பயன்படுத்துவது என்று தீர்மானிக்கப் பயன்படும் (அதே வகையான வரைபடம் தரவுத்தொகுப்புகளுக்கான குழப்ப அட்டவணைகளை காட்டும் போது பெறப்படுகிறது). + +1. Pandas கொண்டு தொடர்பு அக Matrிக்ஸ் உருவாக்கி பிறகு 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") + ``` + + ![A Seaborn heatmap showing correlations between the numeric columns](../../../../translated_images/ta/heatmap.bd98dce43b404c57.webp) + + `1` (அல்லது `-1`) க்கு அருகிலுள்ள மதிப்புகள் பத்திகள் மிகவும் _சேர்க்கப்பட்டவை_ என்பதைக் குறிக்கின்றன. `Low Price` மற்றும் `High Price` இணைப்புகள் மிக நெருக்கமாக இருப்பதை கவனியுங்கள். மற்றுபுறம், `Month` விலை தொடர்பாக தளர்ந்த நேர்காணல் வெளிப்படுத்துகிறது — மேலுள்ள பட்டியல் வரைபடம் செப்டம்பர் மற்றும் அக்டோபர் மாதங்களில் தெளிவான பருவ உச்சியை காட்டினாலும். இது முக்கிய பாடம்: தொடர்பு கூட்டுத்தகங்கள் _சரள கோப்பு_ குறிகளையே அளவிடுகிறது, ஆகையால் பருவ அல்லது பிற அலகாற்றாத நுணுக்கங்களைக் காணாமலிருக்கலாம். ✅ தொடர்பு ஹீட்மேப் *மற்றும்* பட்டியல் வரைபடம் ஆகிய இரண்டையும் பார்க்கும் பயனில்லை ஏன் என்பதை விளக்கவும். + +### Matplotlib அல்லது Seaborn? + +இரு நூலகங்களும் அறிந்திருப்பது பயனுள்ளது: + +- **Matplotlib** ஒரு வரைபடத்தின் ஒவ்வொரு அங்கத்தையும் நுணுக்கமாக கட்டுப்படுத்த அனுமதிக்கிறது மற்றும் Python இல் பல இடர்பாட கலைமுறை நூலகத்துக்கான அடித்தளம் ஆகும். +- **Seaborn** மதிப்பீட்டு வரைபடங்களுக்கு மேல்நிலை செயல்பாடுகள் மற்றும் கவர்ச்சிகராக இருப்பதை வழங்குகிறது, dataframes உடனடியாக வேலை செய்கிறது மற்றும் ஆராய்ச்சி தரவு பகுப்பாய்வுக்கு விரைவாக பயன்படுகிறது. - இது ஒரு பயனுள்ள தரவுக் காட்சிப்படுத்தல்! பூசணிக்காய்களின் மிக உயர்ந்த விலை செப்டம்பர் மற்றும் அக்டோபரில் உள்ளது என்று தோன்றுகிறது. இது உங்கள் எதிர்பார்ப்பை பூர்த்தி செய்கிறதா? ஏன் அல்லது ஏன் இல்லை? +பொதுவான பணிச் சீரமைப்பு ஆராய்ச்சிக்காக 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) --- -**குறிப்பு**: -இந்த ஆவணம் [Co-op Translator](https://github.com/Azure/co-op-translator) என்ற AI மொழிபெயர்ப்பு சேவையைப் பயன்படுத்தி மொழிபெயர்க்கப்பட்டுள்ளது. நாங்கள் துல்லியத்திற்காக முயற்சிக்கிறோம், ஆனால் தானியங்கி மொழிபெயர்ப்புகளில் பிழைகள் அல்லது தவறான தகவல்கள் இருக்கக்கூடும் என்பதை கவனத்தில் கொள்ளவும். அதன் தாய்மொழியில் உள்ள மூல ஆவணம் அதிகாரப்பூர்வ ஆதாரமாக கருதப்பட வேண்டும். முக்கியமான தகவல்களுக்கு, தொழில்முறை மனித மொழிபெயர்ப்பு பரிந்துரைக்கப்படுகிறது. இந்த மொழிபெயர்ப்பைப் பயன்படுத்துவதால் ஏற்படும் எந்த தவறான புரிதல்கள் அல்லது தவறான விளக்கங்களுக்கு நாங்கள் பொறுப்பல்ல. \ 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/ta/2-Regression/2-Data/solution/notebook.ipynb b/translations/ta/2-Regression/2-Data/solution/notebook.ipynb index 163c386e2..018851e17 100644 --- a/translations/ta/2-Regression/2-Data/solution/notebook.ipynb +++ b/translations/ta/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": [ + "### உறவுகளை mostrar செய்ய திரை புள்ளி வரைபடங்கள்\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இந்த ஆவணம் 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-10-11T12:24:45+00:00", - "source_file": "2-Regression/2-Data/solution/notebook.ipynb", - "language_code": "ta" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/ta/6-NLP/4-Hotel-Reviews-1/README.md b/translations/ta/6-NLP/4-Hotel-Reviews-1/README.md index 72cf92c0a..0619f8326 100644 --- a/translations/ta/6-NLP/4-Hotel-Reviews-1/README.md +++ b/translations/ta/6-NLP/4-Hotel-Reviews-1/README.md @@ -1,188 +1,210 @@ -# ஹோட்டல் விமர்சனங்களுடன் உணர்ச்சி பகுப்பாய்வு - தரவுகளை செயலாக்குதல் +# ஹோட்டல் மதிப்பாய்வுகளுடன் உணர்வுப்பூர்வமான பகுப்பாய்வு - தரவுகளை செயலாக்குதல் -இந்த பகுதியில், நீங்கள் முந்தைய பாடங்களில் உள்ள தொழில்நுட்பங்களைப் பயன்படுத்தி ஒரு பெரிய தரவுத்தொகுப்பின் ஆராய்ச்சி தரவுப் பகுப்பாய்வைச் செய்வீர்கள். பல்வேறு பத்திகளின் பயன்தன்மையைப் பற்றிய நல்ல புரிதலைப் பெற்ற பிறகு, நீங்கள் கற்றுக்கொள்வீர்கள்: +இந்த பிரிவு முன் பாடங்களில் கற்றுக்கொண்ட நுட்பங்களைப் பயன்படுத்தி ஒரு பெரிய தரவுத்தொகுப்பின் ஆராய்ச்சி தரவு பகுப்பாய்வைச் செய்வீர்கள். பல்வேறு நெடுவரிசைகளின் பயன்பாட்டைப் புரிந்துகொண்ட பிறகு, நீங்கள் கற்றுக்கொள்ளப்போகும்போது: -- தேவையற்ற பத்திகளை எப்படி நீக்குவது -- உள்ளமைந்த பத்திகளை அடிப்படையாகக் கொண்டு புதிய தரவுகளை எப்படி கணக்கிடுவது -- இறுதி சவாலில் பயன்படுத்தும் வகையில் பெறப்பட்ட தரவுத்தொகுப்பை எப்படி சேமிக்க வேண்டும் +- தேவையில்லாத நெடுவரிசைகளை எப்படி அகற்றுவது +- உள்ள நெடுவரிசைகளின் அடிப்படையில் சில புதிய தரவுகளை எப்படி கணக்கிடுவது +- இறுதிப் பயிற்சிக்கான பயன்படுத்துவதற்கான உருவாக்கப்பட்ட தரவுத்தொகுப்பை எப்படி சேமிப்பது -## [பாடத்திற்கு முந்தைய வினாடி வினா](https://ff-quizzes.netlify.app/en/ml/) +## [முன்பாடப் தேர்வு](https://ff-quizzes.netlify.app/en/ml/) ### அறிமுகம் -இப்போது வரை, உரை தரவுகள் எண் வகை தரவுகளிலிருந்து எவ்வாறு மாறுபடுகின்றன என்பதைப் பற்றி நீங்கள் கற்றுக்கொண்டுள்ளீர்கள். மனிதனால் எழுதப்பட்ட அல்லது பேசப்பட்ட உரை என்றால், அதில் முறை மற்றும் அடிக்கடி பயன்படுத்தப்படும் வார்த்தைகள், உணர்ச்சி மற்றும் அர்த்தத்தை கண்டறிய முடியும். இந்தப் பாடம் உங்களை ஒரு உண்மையான சவாலுடன் கூடிய ஒரு உண்மையான தரவுத்தொகுப்புக்குள் அழைத்துச் செல்கிறது: **[ஐரோப்பாவில் 515K ஹோட்டல் விமர்சனங்கள் தரவுகள்](https://www.kaggle.com/jiashenliu/515k-hotel-reviews-data-in-europe)** மற்றும் [CC0: பொது டொமைன் உரிமம்](https://creativecommons.org/publicdomain/zero/1.0/) உடன் சேர்க்கப்பட்டுள்ளது. இது Booking.com இல் இருந்து பொது ஆதாரங்களில் இருந்து சேகரிக்கப்பட்டது. இந்த தரவுத்தொகுப்பின் உருவாக்குனர் ஜியாஷென் லியூ. +இதுவரை நீங்கள் கற்றுக்கொண்டிருக்கின்றீர்கள், உரை தரவு எண் தரவுகளுக்கு முற்றிலும் வேறுபடுகிறது. அது மனிதனால் எழுதப்பட்ட அல்லது பேசப்பட்டதாயிருந்தால், அதில் உள்ள மாதிரிகள், மீண்டும் தோன்றல்கள், உணர்வு மற்றும் பொருளைக் கண்டுபிடிக்க முடியும். இந்த பாடம் நிஜ தரவுத்தொகுப்பில் நிஜ சவாலைத் தாங்கி உங்களை கொண்டு செல்கிறது: **[ஐரோப்பாவில் 515 கே ஹோட்டல் மதிப்பாய்வுகள் தரவு](https://www.kaggle.com/jiashenliu/515k-hotel-reviews-data-in-europe)** மற்றும் ஒரு [CC0: பொது துறை உரிமம்](https://creativecommons.org/publicdomain/zero/1.0/) கொண்டது. இது Booking.com இன் பொது மூலங்களிலிருந்து சேகரிக்கப்பட்டது. இந்த தரவுத்தொகுப்பின் உருவாக்குனர் ஜியாஷென் லியூ. -### தயாரிப்பு +### தயார் செய்வது உங்களுக்கு தேவையானவை: -* Python 3 பயன்படுத்தி .ipynb நோட்புக்குகளை இயக்கும் திறன் +* Python 3 பயன்படுத்தி .ipynb நோட்புக்-களை இயக்கும் திறன் * pandas -* NLTK, [உங்கள் கணினியில் நிறுவ வேண்டும்](https://www.nltk.org/install.html) -* இந்த NLP பாடங்களுடன் தொடர்புடைய `/data` அடைவில் பதிவிறக்கம் செய்யக்கூடிய [515K ஹோட்டல் விமர்சனங்கள் தரவுகள்](https://www.kaggle.com/jiashenliu/515k-hotel-reviews-data-in-europe) தரவுத்தொகுப்பு. இது சுமார் 230 MB ஆகும். +* NLTK, [இதை நீங்கள் உள்ளூர் முறையில் நிறுவ வேண்டும்](https://www.nltk.org/install.html) +* இந்த தரவுத்தொகுப்பு Kaggle இல் கிடைக்கிறது [515K Hotel Reviews Data in Europe](https://www.kaggle.com/jiashenliu/515k-hotel-reviews-data-in-europe). இது சுமார் 230 MB அளவுக்கு உள்ளது. அதை இந்த NLP பாடங்களுக்கான ரூட் `/data` அடைவுக்கு பதிவிறக்கம் செய்யவும். -## ஆராய்ச்சி தரவுப் பகுப்பாய்வு +## ஆராய்ச்சி தரவு பகுப்பாய்வு -இந்த சவால், உணர்ச்சி பகுப்பாய்வு மற்றும் விருந்தினரின் மதிப்பீட்டு மதிப்புகளைப் பயன்படுத்தி ஒரு ஹோட்டல் பரிந்துரை போட்டை உருவாக்குவதை நோக்கமாகக் கொண்டுள்ளது. நீங்கள் பயன்படுத்தும் தரவுத்தொகுப்பில் 6 நகரங்களில் உள்ள 1493 வெவ்வேறு ஹோட்டல்களின் விமர்சனங்கள் அடங்கும். +இந்த சவால் நீங்கள் உணர்வுப்பூர்வமான பகுப்பாய்வைக் கொண்டு மற்றும் விருந்தினர் மதிப்பீடு மதிப்பெண்களைப் பயன்படுத்தி ஒரு ஹோட்டல் பரிந்துரை செயற்கை நுண்ணறிவு அமைப்பை உருவாக்குகிறீர்கள் என்று கருதுகிறது. நீங்கள் பயன்படுத்தவிருக்கும் தரவுத்தொகுப்பில் 6 நகரங்களில் உள்ள 1493 வெவ்வேறு ஹோட்டல்களின் மதிப்பாய்வுகள் உள்ளன. -Python, ஹோட்டல் விமர்சனங்களின் தரவுத்தொகுப்பு மற்றும் NLTK இன் உணர்ச்சி பகுப்பாய்வைப் பயன்படுத்தி, நீங்கள் கண்டறிய முடியும்: +பைதான், ஹோட்டல் மதிப்பாய்வுகளின் தரவுத்தொகுப்பு மற்றும் NLTK உணர்வு பகுப்பாய்வு மூலம் நீங்கள் கண்டுபிடிக்க முடியும்: -* விமர்சனங்களில் அதிகமாக பயன்படுத்தப்படும் வார்த்தைகள் மற்றும் சொற்றொடர்கள் என்ன? -* ஒரு ஹோட்டலை விவரிக்கும் அதிகாரப்பூர்வ *டேக்கள்* விமர்சன மதிப்பீடுகளுடன் தொடர்புடையதா? (எ.கா. *இளம் குழந்தைகளுடன் குடும்பம்* என்ற டேக் கொண்ட ஹோட்டலுக்கு எதிர்மறையான விமர்சனங்கள் அதிகமாக உள்ளதா? இது *தனிப்பட்ட பயணிகளுக்கு* சிறந்தது என்பதை குறிக்கிறதா?) -* NLTK உணர்ச்சி மதிப்பீடுகள் ஹோட்டல் விமர்சகரின் எண் மதிப்பீட்டுடன் 'ஒத்துப்போகிறதா'? +* மதிப்பாய்வுகளில் மிக அதிகம் பயன்படுத்தப்படும் வார்த்தைகள் மற்றும் சொற்றொடர்கள் என்ன? +* ஹோட்டலை விவரிக்கும் அதிகாரப்பூர்வ *டேக்கள்* மதிப்பாய்வு மதிப்பெண்களுடன் தொடர்புடையதா (உதா: ஒரு ஹோட்டலின் *இளம் குழந்தைகளுடன் குடும்பம்* என்ற மதிப்பாய்வுகள் *தனித்து பயணிப்பவர்* என்ற மதிப்பாய்வுகளுக்குக் காட்டிலும் அதிகமாக எதிர்மறையா? இது *தனிப்பட்ட பயணிகளுக்கு* மேலாண்மை சிறந்ததாக இருத்தலையே குறிக்கக்கூடும்?) +* NLTK உணர்வு மதிப்பெண்கள் ஹோட்டல் மதிப்பாய்வாளர் அளித்த எண் மதிப்பெண்களுடன் 'ஒரே கருத்தில் உள்ளன'வா? #### தரவுத்தொகுப்பு -நீங்கள் பதிவிறக்கம் செய்து உள்ளூர் சேமித்துள்ள தரவுத்தொகுப்பை ஆராய்வோம். அந்த கோப்பை VS Code அல்லது Excel போன்ற எடிட்டரில் திறக்கவும். +நீங்கள் பதிவிறக்கம் செய்து உள்ளூரில் சேமித்துள்ள தரவுத்தொகுப்பை ஆராய்வோம். ஒரு தொகுப்பியில், உதாரணமாக VS Code அல்லது Excelல் கோப்பைப் திறக்கவும். -தரவுத்தொகுப்பில் உள்ள தலைப்புகள் பின்வருமாறு உள்ளன: +தரவுத்தொகுப்பில் தலைப்புகள் பின்வருமாறு உள்ளன: *Hotel_Address, Additional_Number_of_Scoring, Review_Date, Average_Score, Hotel_Name, Reviewer_Nationality, Negative_Review, Review_Total_Negative_Word_Counts, Total_Number_of_Reviews, Positive_Review, Review_Total_Positive_Word_Counts, Total_Number_of_Reviews_Reviewer_Has_Given, Reviewer_Score, Tags, days_since_review, lat, lng* -இவை கீழே கொடுக்கப்பட்டுள்ளவாறு குழுவாக பிரிக்கப்பட்டுள்ளன: -##### ஹோட்டல் பத்திகள் +இவை கீழ்வருமாறு பிரிக்கப்பட்டுள்ளன: +##### ஹோட்டல் நெடுவரிசைகள் -* `Hotel_Name`, `Hotel_Address`, `lat` (அட்சரேகை), `lng` (நெடுகோடு) - * *lat* மற்றும் *lng* ஐப் பயன்படுத்தி, ஹோட்டல் இடங்களை காட்டும் வரைபடத்தை Python மூலம் வரைந்து காட்டலாம் (எதிர்மறை மற்றும் நேர்மறை விமர்சனங்களுக்கு வண்ண குறியீடு செய்யலாம்) - * Hotel_Address எங்களுக்கு தெளிவாக பயனுள்ளதாக இல்லை, மேலும் எளிதாக வரிசைப்படுத்த மற்றும் தேட ஒரு நாட்டுடன் அதை மாற்றுவோம் +* `Hotel_Name`, `Hotel_Address`, `lat` (அட்சரேகை), `lng` (நீளிரேகை) + * *lat* மற்றும் *lng* ஐ பயன்படுத்தி பைதானில் ஹோட்டல் இருப்பிடங்களை வரைபடமாக உருவாக்கலாம் (எதிர்மறை மற்றும் நேர்மறை மதிப்பாய்வுகளுக்காக வண்ணமயமாக்கலாம்) + * Hotel_Address எங்களுக்கு தெளிவாக பயன்படுவதில்லை, அதனால் நாம் இதனை ஒரு நாட்டுக்காக மாற்றி எளிதான வரிசைப்படுத்தல் மற்றும் தேடலுக்கு மாற்றலாம் -**ஹோட்டல் மெட்டா-விமர்சன பத்திகள்** +**ஹோட்டல் மெட்டா-மதிப்பாய்வு நெடுவரிசைகள்** * `Average_Score` - * தரவுத்தொகுப்பு உருவாக்குனரின் படி, இந்த பத்தி *கடந்த ஆண்டில் உள்ள சமீபத்திய கருத்து அடிப்படையில் கணக்கிடப்பட்ட ஹோட்டலின் சராசரி மதிப்பெண்* ஆகும். இது ஒரு விசித்திரமான முறையாகத் தோன்றுகிறது, ஆனால் இது சேகரிக்கப்பட்ட தரவாகும், எனவே நாங்கள் அதை தற்போதைக்கு அப்படியே எடுத்துக்கொள்வோம். - - ✅ இந்த தரவின் பிற பத்திகளை அடிப்படையாகக் கொண்டு சராசரி மதிப்பெண்ணை கணக்கிட வேறு வழி ஒன்றை நீங்கள் யோசிக்க முடியுமா? + * தரவுத்தொகுப்பின் உருவாக்குனர் கூறியதில், இந்த நெடுவரிசை *கடந்த ஆண்டு புதிய கருத்தின் அடிப்படையில் கணக்கிடப்பட்ட ஹோட்டலின் சராசரி மதிப்பெண்* ஆகும். இது மதிப்பெண்களை கணக்கிடும் அசாதாரண வழி போல தெரிந்தாலும், தரவு எரி பெறப்பட்டதுக்காக இதனை தற்போது பெறப்பட்டதாக கருதலாம். + + ✅ இந்த தரவுத்தொகுப்பில் உள்ள மற்ற நெடுவரிசைகளின் அடிப்படையில், சராசரி மதிப்பெண் கணக்கிட வேறொரு வழி உங்களுக்குத் தெரிகிறதா? * `Total_Number_of_Reviews` - * இந்த ஹோட்டல் பெற்றுள்ள மொத்த விமர்சனங்களின் எண்ணிக்கை - இது தரவுத்தொகுப்பில் உள்ள விமர்சனங்களை குறிக்கிறதா என்பதை (சில குறியீடுகளை எழுதாமல்) தெளிவாகக் கூற முடியாது. + * இந்த ஹோட்டல் பெற்ற முழு மதிப்பாய்வுகளின் எண்ணிக்கை - இவை தரவுத்தொகுப்பில் உள்ள மதிப்பாய்வுகளா என்பது தெளிவில்லை (சில குறியீடு எழுதாமல்) * `Additional_Number_of_Scoring` - * இது ஒரு மதிப்பீடு அளிக்கப்பட்டது என்றாலும், விமர்சகர் எந்த நேர்மறை அல்லது எதிர்மறை விமர்சனத்தையும் எழுதவில்லை என்பதைக் குறிக்கிறது + * இது ஒரு மதிப்பெண் அளிக்கப்பட்டது என்றாலும் மதிப்பாய்வாளர் நேர்மறை அல்லது எதிர்மறை மதிப்பாய்வை எழுதவில்லை என்ற பொருள் -**விமர்சன பத்திகள்** +**மதிப்பாய்வு நெடுவரிசைகள்** - `Reviewer_Score` - - இது குறைந்தபட்சம் 1 தசம புள்ளி கொண்ட எண் மதிப்பாகும், குறைந்தபட்ச மதிப்பான 2.5 மற்றும் அதிகபட்ச மதிப்பான 10 இடையே இருக்கும். - - ஏன் 2.5 குறைந்தபட்ச மதிப்பாக உள்ளது என்பது விளக்கப்படவில்லை. + - இது குறைந்தபட்சம் மற்றும் அதிகபட்சம் மதிப்புகள் 2.5 மற்றும் 10 இடையேயான மிக உயர பருமனுடன் ஒரு எண் மதிப்பு ஆகும் + - 2.5 என்பது மிகக் குறைந்த மதிப்பெண் என்பதை ஏன் என்று விளக்கப்படவில்லை - `Negative_Review` - - ஒரு விமர்சகர் எதுவும் எழுதவில்லை என்றால், இந்த புலத்தில் "**No Negative**" இருக்கும். - - ஒரு விமர்சகர் எதிர்மறை விமர்சன பத்தியில் நேர்மறை விமர்சனத்தை எழுதலாம் என்பதை கவனிக்கவும் (எ.கா. "இந்த ஹோட்டலில் எந்த தவறும் இல்லை"). + - மதிப்பாய்வாளர் எதுவும் எழுதவில்லை என்றால், இந்த நெடுவரிசையில் "**எந்த எதிர்மறையும் இல்லை**" என்று இருக்கும் + - கவனிக்கவும், மதிப்பாய்வாளர் நேர்மறை மதிப்பாய்வை எதிர்மறை மதிப்பாய்வு நெடுவரிசையில் எழுதக்கூடும் (உதா: "இந்த ஹோட்டலில் எதுவும் கெட்டதில்லை") - `Review_Total_Negative_Word_Counts` - - அதிக எதிர்மறை சொல் எண்ணிக்கை குறைந்த மதிப்பீட்டை குறிக்கிறது (உணர்ச்சியை சரிபார்க்காமல்). + - அதிக எதிர்மறை வார்த்தை எண்ணிக்கை குறைந்த மதிப்பெண் என்பதை குறிக்கலாம் (உணர்வு சோதனை செய்யாமல்) - `Positive_Review` - - ஒரு விமர்சகர் எதுவும் எழுதவில்லை என்றால், இந்த புலத்தில் "**No Positive**" இருக்கும். - - ஒரு விமர்சகர் நேர்மறை விமர்சன பத்தியில் எதிர்மறை விமர்சனத்தை எழுதலாம் என்பதை கவனிக்கவும் (எ.கா. "இந்த ஹோட்டலில் எந்த நல்லதும் இல்லை"). + - மதிப்பாய்வாளர் எதுவும் எழுதவில்லை என்றால், இந்த நெடுவரிசையில் "**எந்த நேர்மறையும் இல்லை**" என்று இருக்கும் + - கவனிக்கவும், மதிப்பாய்வாளர் எதிர்மறை மதிப்பாய்வை நேர்மறை நெடுவரிசையில் எழுதக்கூடும் (உதா: "இந்த ஹோட்டலில் நல்லதெதுவும் இல்லை") - `Review_Total_Positive_Word_Counts` - - அதிக நேர்மறை சொல் எண்ணிக்கை அதிக மதிப்பீட்டை குறிக்கிறது (உணர்ச்சியை சரிபார்க்காமல்). + - அதிக நேர்மறை வார்த்தை எண்ணிக்கை அதிக மதிப்பெண் என்பதை குறிக்கலாம் (உணர்வு சோதனை செய்யாமல்) - `Review_Date` மற்றும் `days_since_review` - - ஒரு விமர்சனத்திற்கு புதியதா அல்லது பழையதா என்பதை அளவிடலாம் (பழைய விமர்சனங்கள் புதியவற்றைப் போல துல்லியமாக இருக்காது, ஏனெனில் ஹோட்டல் மேலாண்மை மாறியிருக்கலாம் அல்லது புதுப்பிப்பு செய்யப்பட்டிருக்கலாம் அல்லது ஒரு நீச்சல் குளம் சேர்க்கப்பட்டிருக்கலாம்). + - ஒரு புதியவை அல்லது பழையவை என்ற அளவுகோல் மதிப்பாய்வுக்கு பொருந்தக்கூடும் (பழைய மதிப்பாய்வுகள் இன்றையவை போல துல்லியமாக இருக்காது, காரணம் ஹோட்டல் மேலாண்மை மாறியிருப்பது, புதுப்பிப்புகள் நடந்திருப்பது, அல்லது ஒரு குளம் சேர்க்கப்பட்டதுபோன்றவை) - `Tags` - - இவை ஒரு விமர்சகர் தங்களை விவரிக்கத் தேர்ந்தெடுக்கக்கூடிய குறுகிய விளக்கங்கள் (எ.கா. தனியாக அல்லது குடும்பத்துடன்), அவர்கள் பெற்ற அறை வகை, தங்கிய நாட்களின் எண்ணிக்கை மற்றும் விமர்சனம் சமர்ப்பிக்கப்பட்ட சாதன வகை ஆகியவை. - - துரதிர்ஷ்டவசமாக, இந்த டேக்களைப் பயன்படுத்துவது சிக்கலானது, அவற்றின் பயன்தன்மையைப் பற்றிய கீழே உள்ள பிரிவை சரிபார்க்கவும். + - இவை சுருக்கமாக மதிப்பாய்வாளர் தங்களை விவரிக்க தேர்ந்தெடுக்கக்கூடிய குறிப்பு வார்த்தைகள் (உதா: தனித்து பயணி அல்லது குடும்பம்), அவர்கள் பெற்ற அறையின் வகை, தங்கிய கால அளவு மற்றும் மதிப்பாய்வு சமர்ப்பிக்கப்பட்ட சாதனம் போன்றவை + - வருத்தமாக, இந்த டேக்கள் பயன்படுத்துவதில் சிக்கல்கள் உள்ளன, கீழே உள்ள பகுதி இவற்றின் பயனுள்ள தன்மையை விவரிக்கிறது -**விமர்சகர் பத்திகள்** +**மதிப்பாய்வாளர் நெடுவரிசைகள்** - `Total_Number_of_Reviews_Reviewer_Has_Given` - - இது பரிந்துரை மாதிரியில் ஒரு காரணியாக இருக்கலாம், உதாரணமாக, நூற்றுக்கணக்கான விமர்சனங்களை கொண்ட அதிக விமர்சகர்கள் நேர்மறை விட எதிர்மறையாக இருக்க வாய்ப்பு அதிகம் என்பதை நீங்கள் தீர்மானிக்க முடிந்தால். இருப்பினும், குறிப்பிட்ட விமர்சனத்தின் விமர்சகர் ஒரு தனித்துவமான குறியீடு மூலம் அடையாளம் காணப்படவில்லை, எனவே விமர்சனங்களின் தொகுப்புடன் இணைக்க முடியாது. 100 அல்லது அதற்கு மேற்பட்ட விமர்சனங்களைக் கொண்ட 30 விமர்சகர்கள் உள்ளனர், ஆனால் இது பரிந்துரை மாதிரிக்கு எவ்வாறு உதவ முடியும் என்பதைப் பார்க்க கடினமாக உள்ளது. + - பரிந்துரை மாதிரியில் இதுவும் முக்கியமான பங்கு வகிக்கலாம், உதாரணமாக, நூற்றுக்கணக்கான மதிப்பாய்வுகள் வழங்கும் மதிப்பாய்வாளர்கள் எதிர்மறை நம்பிக்கை அதிகம் இருக்கலாம். எனினும், எந்த மதிப்பாய்வாளர் என்பது தனித்துவ குறியீட்டால் அடையாளம் காணப்படாததால், மதிப்பாய்வுகளுடன் இணைக்க முடியாது. 100 அல்லது அதற்கு மேற்பட்ட மதிப்பாய்வுகள் வழங்கிய 30 மதிப்பாய்வாளர்கள் உள்ளனர், ஆனால் அது பரிந்துரை மாதிரிக்கு உதவுவது சிக்கலாகும். - `Reviewer_Nationality` - - சிலர் சில தேசியத்தவர்களுக்கு நேர்மறை அல்லது எதிர்மறை விமர்சனங்களை வழங்க அதிக வாய்ப்பு உள்ளது என்று நினைக்கலாம். உங்கள் மாதிரிகளில் இப்படியான கருத்துக்களை உருவாக்குவதில் கவனமாக இருங்கள். இவை தேசிய (மற்றும் சில சமயங்களில் இன) கற்பனைகள், மேலும் ஒவ்வொரு விமர்சகரும் அவர்களின் அனுபவத்தின் அடிப்படையில் விமர்சனத்தை எழுதிய தனிநபர்களாக இருந்தனர். அவர்கள் தேசியத்துவம் விமர்சன மதிப்பீட்டின் காரணம் என்று நினைப்பது நியாயமாக்க முடியாதது. + - சிலர் குறிப்பிட்ட தேசியத்துவம் கொண்டவர்கள் நேர்மறை அல்லது எதிர்மறை மதிப்பாய்வை அளிக்க வாய்ப்பு அதிகம் என நினைக்கலாம். இவ்விதமான சிந்தனைகளை உங்கள் மாதிரிகளில் நன்கு பரிசீலித்து உள்ளிடுங்கள். இவை தேசிய (சில சமயங்களில் இன) பொதுக்காணோன், ஒவ்வொரு மதிப்பாய்வாளரும் தங்களது அனுபவத்தின் அடிப்படையில் தனிப்பட்டவர். இது பல்வேறு பார்வைகளால் வடிகட்டி இருக்கும், மருந்து முன் தங்கிய ஹோட்டல், பயண தொலைவு மற்றும் அவர்களின் தனிப்பட்ட மனநிலை போன்றவை. அதன் தேசியத்துவம் மதிப்பெண் காரணமென்று நினைப்பது இங்கே நியாயப்படுத்துவது கடினம். -##### உதாரணங்கள் +##### எடுத்துக்காட்டு -| சராசரி மதிப்பெண் | மொத்த விமர்சனங்கள் | விமர்சகர் மதிப்பெண் | எதிர்மறை
விமர்சனம் | நேர்மறை விமர்சனம் | டேக்கள் | +| சராசரி மதிப்பெண் | மொத்த மதிப்பாய்வுகளின் எண்ணிக்கை | மதிப்பாய்வாளர் மதிப்பெண் | எதிர்மறை
மதிப்பாய்வு | நேர்மறை மதிப்பாய்வு | டேக்கள் | | -------------- | ---------------------- | ---------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------- | ----------------------------------------------------------------------------------------- | -| 7.8 | 1945 | 2.5 | இது தற்போது ஒரு ஹோட்டல் அல்ல, ஆனால் ஒரு கட்டுமான தளம். நான் ஒரு நீண்ட பயணத்திற்குப் பிறகு ஓய்வெடுக்கும்போது மற்றும் அறையில் வேலை செய்யும்போது, ​​காலையில் மற்றும் முழு நாளும் ஏற்றுக்கொள்ள முடியாத கட்டுமான சத்தத்தால் பயமுறுத்தப்பட்டேன். மக்கள் முழு நாளும் வேலை செய்தனர், அதாவது பக்கத்து அறைகளில் ஜாக்ஹாமர்களுடன். நான் ஒரு அறை மாற்றத்தை கேட்டேன், ஆனால் அமைதியான அறை கிடைக்கவில்லை. விஷயங்களை மேலும் மோசமாக்க, நான் அதிகமாக கட்டணம் வசூலிக்கப்பட்டது. நான் மிகவும் தாமதமாக வெளியேறினேன், ஏனெனில் நான் அதிகாலை விமானத்தை விட்டு வெளியேற வேண்டியிருந்தது, மேலும் ஒரு பொருத்தமான பில் கிடைத்தது. ஒரு நாளுக்குப் பிறகு, ஹோட்டல் முன்பதிவு செய்யப்பட்ட விலையை மீறி மற்றொரு கட்டணத்தை என் ஒப்புதலின்றி செய்தது. இது ஒரு மோசமான இடம். இங்கே முன்பதிவு செய்து உங்களை தண்டிக்க வேண்டாம். | எதுவும் இல்லை. மோசமான இடம். விலகி இருங்கள் | வணிக பயணம் ஜோடி ஸ்டாண்டர்ட் டபுள் அறை 2 இரவுகள் தங்கியுள்ளனர் | +| 7.8 | 1945 | 2.5 | இது அவருக்கு ஹோட்டல் இல்லை, ஆனால் கட்டுமான தளம் தான். காலை முதல் முழு நாள் ஒலி தொடர்பான அசுத்தத்தில் நான் துயரப்பட்டேன். மக்கள் அருகில் ஜாக்ஹாமர்கள் கொண்டு வேலை செய்தனர். அறையிலிருந்து மாற்றிக்கொள்ள கேட்டேன், அமைதியான அறை கிடைக்கவில்லை. மேலும் அதிக கட்டணம் வசூலிக்கப்பட்டது. சந்தியா புறப்பட்ட போது சரியான பில் கிடைத்தது. ஆனால் பிறகு ஹோட்டல் அனுமதி இல்லாமல் கூடுதல் கட்டணம் வசூலித்து கொண்டது. இது மோசமான இடம். இங்கே பதிவு செய்யும் முன் நினைக்கவும் | எதுவும் இல்லை மோசமான இடம் அருகே சென்று விடுங்கள் | வணிக பயணம் ஜோடி ஸ்டாண்டர்டு இரட்டையர் அறை 2 இரவுகள் தங்கினர் | -இந்த விமர்சகர் இந்த ஹோட்டலில் மகிழ்ச்சியான தங்குமிடம் அனுபவிக்கவில்லை என்பதை நீங்கள் காணலாம். ஹோட்டலுக்கு 7.8 என்ற நல்ல சராசரி மதிப்பெண் மற்றும் 1945 விமர்சனங்கள் உள்ளன, ஆனால் இந்த விமar்சகர் 2.5 மதிப்பெண் அளித்து, அவர்களின் தங்குமிடம் எவ்வளவு மோசமாக இருந்தது என்பதைப் பற்றி 115 வார்த்தைகளை எழுதியுள்ளார். Positive_Review பத்தியில் அவர்கள் எதுவும் எழுதவில்லை என்றால், எந்த நேர்மறை அம்சமும் இல்லை என்று நீங்கள் ஊகிக்கலாம், ஆனால் அவர்கள் எச்சரிக்கையாக 7 வார்த்தைகளை எழுதியுள்ளனர். +போலவே, இந்த விருந்தினர் ஹோட்டலில் சந்தோஷமாக தங்கவில்லை. ஹோட்டல் சராசரி மதிப்பெண் 7.8 மற்றும் 1945 மதிப்பாய்வுகள் இருந்தாலும், இந்த மதிப்பாய்வாளர் 2.5 மதிப்பெண் கொடுத்தார் மற்றும் 115 வார்த்தைகள் கொண்டு எதிர்மறை அனுபவத்தை விவரித்தார். அவர்கள் நேர்மறை மதிப்பாய்வு அளவுக் கல்லில் எதுவும் எழுதவில்லை என்றால், நேர்மறை இல்லை என்று எண்ணலாம். ஆனால் 7 வார்த்தைகளில் எச்சரிக்கை எழுதுவார். வார்த்தைகளின் பொருள் அல்லது உணர்வு பாராமல் எண்ணினால், மதிப்பாய்வாளரின் நோக்கத்தை தவறாக புரிந்துகொள்ளலாம். 2.5 என்பதெல்லாம் குழப்பமாக இருக்கிறது, ஏனெனில், இந்த ஹோட்டல் தங்கல் மிகவும் மோசமாக இருந்தால் ஏன் மதிப்பெண் கொடுத்தார்? தரவுத்தொகுப்பை ஆராயும் போது குறைந்தபட்ச மதிப்பெண் 2.5 என்றே இருக்கின்றது, 0 அல்ல. அதிகபட்ச மதிப்பெண் 10 ஆகும். ##### டேக்கள் -மேலே குறிப்பிடப்பட்டுள்ளபடி, முதலில், தரவுகளை வகைப்படுத்த `Tags` ஐப் பயன்படுத்தும் யோசனை பொருத்தமாகத் தோன்றுகிறது. துரதிர்ஷ்டவசமாக, இந்த டேக்கள் ஒரே மாதிரியாக இல்லை, அதாவது ஒரு குறிப்பிட்ட ஹோட்டலில் *Single room*, *Twin room*, மற்றும் *Double room* போன்ற விருப்பங்கள் இருக்கலாம், ஆனால் மற்றொரு ஹோட்டலில், அவை *Deluxe Single Room*, *Classic Queen Room*, மற்றும் *Executive King Room* ஆக இருக்கலாம். +மேல் கூறியதுபோல், முதலில் `Tags` பயன்படுத்தி தரவை வகைப்படுத்துவது நியாயமாக தெரிகிறதா. ஆனால் இவை ஒரே மாதிரியானவை அல்ல என்றும் அதனால் ஒரு ஹோட்டலில் *Single room*, *Twin room*, *Double room* என்ற டேக்கள் இருந்தாலும் அடுத்த ஹோட்டலில் அவை *Deluxe Single Room*, *Classic Queen Room*, *Executive King Room* என்று இருக்கும். இதனால பல விதமான வகைகள் கூடும். + +1. அனைத்து சொற்களையும் ஒரே நிலைக்கு மாற்ற முயற்சிப்பது, இது மிகவும் கடினம். ஏனெனில் ஒவ்வொரு வேறுபாடு பாதையும் தெளிவாக இல்லை (உதா: *Classic single room* என்பது *Single room* ஆகும், ஆனால் *Superior Queen Room with Courtyard Garden or City View* ஐ சரியாக மாற்றுவது கடினம்) + +1. ஒரு NLP முறையைப் பயன்படுத்தி *Solo*, *Business Traveller*, அல்லது *Family with young kids* போன்ற சொற்களின் மீள்தொடர்ந்ததைக் கணக்கிட்டு ஒவ்வொரு ஹோட்டலுக்கு பொருந்தும் பின்பு பரிந்துரையில் பங்கு சேர்க்கலாம் + +டேக்கள் பொதுவாக (ஆனால் எப்போதும் அல்ல) ஒரு 필்டில் இருந்து 5-6 comma பிரிக்கப்பட்ட மதிப்புகளாக இருக்கும்; இது *பயண வகை*, *விருந்தினர் வகை*, *அறை வகை*, *தங்கிய நாட்கள்* மற்றும் *மதிப்பாய்வு சமர்ப்பிக்கப்பட்ட சாதனம்* என்ற வரிசைப்படி இருக்கும். ஆனால் சில மதிப்பாய்வாளர்கள் ஒவ்வொரு நெடுவரிசையையும் நிரப்பவில்லை என்பதால் மதிப்புகள் இடையில் தவறுகள் இருப்பது சாதாரணம். -1. அனைத்து சொற்களையும் ஒரே தரநிலைக்கு மாற்ற முயற்சிக்கலாம், இது மிகவும் கடினம், ஏனெனில் ஒவ்வொரு வழியிலும் மாற்றம் செய்யும் பாதை என்ன என்பதை தெளிவாகக் கூற முடியாது. -2. ஒரு NLP அணுகுமுறையை எடுத்து, ஒவ்வொரு ஹோட்டலுக்கும் பொருந்தும் *Solo*, *Business Traveller*, அல்லது *Family with young kids* போன்ற சில சொற்களின் அடிக்கடி தோன்றும் எண்ணிக்கையை அளவிடலாம், மேலும் அதை பரிந்துரையில் உள்ளடக்கலாம். +எடுத்துக்காட்டாக, *Type of group* என்ற நெடுவரிசையில் 1025 தனித்துவமான விருப்பங்கள் உள்ளன, ஆனால் சில அவை குடும்பத்தை குறிக்காது; சில அறை வகையாகவும் இருக்கும். குடும்பத்தை குறிப்பிடும் வார்த்தைகளை மட்டும் பார்த்தால் *Family room* போன்ற பல மதிப்புகள் வரலாம். *with* சொற்களை மட்டும் எண்ணினால், 80,000 க்கும் மேற்பட்ட பதிவுகளில் "Family with young children" அல்லது "Family with older children" போன்ற வார்த்தைகள் இருப்பதை காணலாம். + +இதன் பொருள், டேக்கள் நெடுவரிசை முழுமையாக பயனற்றது அல்ல, ஆனால் இதைப் பயனுள்ளதாக மாற்ற சில பணிகள் செய்ய வேண்டியிருக்கும். ##### சராசரி ஹோட்டல் மதிப்பெண் -தரவுத்தொகுப்பில் சில விசித்திரமான அல்லது முரண்பாடுகள் உள்ளன, ஆனால் அவை உங்கள் மாதிரிகளை உருவாக்கும்போது நீங்கள் அவற்றை கவனத்தில் கொள்ள வேண்டும். -இந்த ஹோட்டல்கள் ஒரு விலகல் (outlier) ஆக இருக்கக்கூடும், மற்றும் பெரும்பாலான மதிப்பீடுகள் பொருந்தலாம் (ஆனால் சில காரணங்களுக்காக சில மதிப்பீடுகள் பொருந்தாமல் இருக்கலாம்) என்ற சாத்தியத்தைக் கருத்தில் கொண்டு, அடுத்ததாக ஒரு சிறிய நிரலாக்கத்தை எழுதுவோம், தரவுத்தொகுப்பில் உள்ள மதிப்பீடுகளை ஆராய்ந்து, அவற்றின் சரியான பயன்பாட்டை (அல்லது பயன்பாட்டின்மையை) தீர்மானிக்க. +இந்த தரவுத்தொகுப்பில் அசாதாரணங்கள் அல்லது முரண்பாடுகள் உள்ளன, எனது புரிதலைவிட அசுத்தமாகும், ஆனால் இது உங்களுக்கு அவற்றைப் பற்றி விழிப்புணர்வு தரும். இதுபற்றி நீங்கள் கண்டுபிடித்தால், தயவுசெய்து பேசும் பிரிவில் பகிரவும்! + +சராசரி மதிப்பெண் மற்றும் மதிப்பாய்வுகளின் எண்ணிக்கையை குறிக்கும் நெடுவரிசைகள் இவையே: + +1. Hotel_Name +2. Additional_Number_of_Scoring +3. Average_Score +4. Total_Number_of_Reviews +5. Reviewer_Score -> 🚨 கவனிக்க வேண்டிய ஒரு குறிப்பை +இந்த தரவுத்தொகுப்பில் மிக அதிக மதிப்பாய்வுகளுடன் உள்ள ஹோட்டல் *Britannia International Hotel Canary Wharf* ஆகும், அதில் 4789 மதிப்பாய்வுகள் உள்ளன. ஆனால் இதன் `Total_Number_of_Reviews` மதிப்பு 9086 ஆகும். இது மதிப்பாய்வு இல்லா பல மதிப்பெண்கள் உள்ளன என்று குறிக்கலாம். கூடுதலாக, `Additional_Number_of_Scoring` மதிப்பு 2682 ஆகும். இதையும் சேர்த்தால் 4747+2682=7471 ஆகும், இது `Total_Number_of_Reviews` 9086 க்கு 1615 குறைவாகும். + +`Average_Score` நெடுவரிசையைப் பார்க்கும் போது, இது தரவுத்தொகுப்பில் உள்ள மதிப்பாய்வுகளின் சராசரி என நினைக்கலாம், ஆனால் Kaggle சொல்கிறது "*கடந்த ஆண்டு புதிய கருத்தின் அடிப்படையில் கணக்கிடப்பட்ட ஹோட்டலின் சராசரி மதிப்பெண்*". இது பயனுள்ளதில்லை போல. நாங்கள் தரவுத்தொகுப்பில் உள்ள மதிப்பாய்வு மதிப்பெண்களின் சராசரி மதிப்பை கணக்கிடலாம். அதே ஹோட்டலை எடுத்துக்கொண்டால், சராசரி மதிப்பெண் 7.1 ஆக உள்ளது, ஆனால் எங்கள் கணக்கீடு (தரவுத்தொகுப்பை உள்ள Reviewer_Score சராசரி) 6.8 ஆகும். இது நெருக்கமாக இருந்தாலும், ஓர் வேறுபாடு உள்ளது. `Additional_Number_of_Scoring` மதிப்புகளில் உள்ள மதிப்பெண்கள் சராசரியை 7.1க்குச் சென்று மேம்படுத்தியதாக நினைக்கலாம். ஒரு சோதனைக்கோ அல்லது சான்று இல்லாததால், `Average_Score`, `Additional_Number_of_Scoring` மற்றும் `Total_Number_of_Reviews` ஆகியவற்றைப் பயன்படுத்துவது அல்லது நம்புவது கடினம், ஏனெனில் அவை எங்களிடம் இல்லாத தரவின் அடிப்படையிலேயே இருக்கலாம். + +மேலும் குழப்பமாக, இரண்டாம் அதிக மதிப்பாய்வுகளின் ஹோட்டல் கணக்கிடப்பட்ட சராசரி மதிப்பெண் 8.12 ஆகும், தரவுத்தொகுப்பு Average_Score 8.1 ஆகும். இது உண்மையான மதிப்பெண் எதிர்யோ அல்லது முதல் ஹோட்டல் முரண்பாடா? + + +இந்த ஹோட்டல் ஒரு வித்தியாசமானிருக்கக்கூடும் என்ற சாத்தியக்கூறில், மேலும் ஒருபகுதி மதிப்புகள் சரியாக பொருந்தக்கூடும் (ஆனால் ஏதோ காரணத்திற்காக சில பொருந்தாது) என, நம்முடைய தரவுத்தொகுப்பில் உள்ள மதிப்புகளை ஆராயவும் மதிப்புகளின் சரியான பயன்பாட்டை (அல்லது பயன்பாடு இல்லை) தீர்மானிக்கவும் ஒரு சின்ன திட்டம் எழுதப்போறோம். + +> 🚨 எச்சரிக்கை குறிப்பு > -> இந்த தரவுத்தொகுப்புடன் வேலை செய்யும்போது, நீங்கள் உரையிலிருந்து ஏதாவது கணக்கிடும் நிரல்களை எழுதுவீர்கள், ஆனால் நீங்கள் உரையை நேரடியாக வாசிக்கவோ அல்லது பகுப்பாய்வு செய்யவோ தேவையில்லை. இது இயற்கை மொழி செயலாக்கத்தின் (NLP) சாராம்சம், ஒரு மனிதன் செய்யாமல் பொருள் அல்லது உணர்வை புரிந்துகொள்வது. ஆனால், சில நேரங்களில் நீங்கள் சில எதிர்மறை மதிப்பீடுகளை வாசிக்கலாம். நான் உங்களை அதை செய்ய வேண்டாம் என்று கேட்டுக்கொள்கிறேன், ஏனெனில் நீங்கள் அதை செய்ய தேவையில்லை. சில மதிப்பீடுகள் முட்டாள்தனமானவை அல்லது பொருத்தமற்றவை, உதாரணமாக "வானிலை சிறப்பாக இல்லை", இது ஹோட்டலின் கட்டுப்பாட்டுக்கு அப்பாற்பட்டது, அல்லது யாருக்கும் கட்டுப்படுத்த முடியாதது. ஆனால், சில மதிப்பீடுகளில் இருண்ட பக்கம் உள்ளது. சில நேரங்களில் எதிர்மறை மதிப்பீடுகள் இனவெறி, பாலினவெறி, அல்லது வயதுவெறி கொண்டதாக இருக்கலாம். இது துரதிர்ஷ்டவசமானது, ஆனால் பொதுவான இணையதளத்திலிருந்து சேகரிக்கப்பட்ட தரவுத்தொகுப்பில் எதிர்பார்க்கக்கூடியது. சில மதிப்பீடர்கள் நீங்கள் வெறுப்பாக, அசௌகரியமாக, அல்லது மனவருத்தமாக உணரக்கூடிய மதிப்பீடுகளை விடுகிறார்கள். உணர்வை அளவிட நிரல்களை பயன்படுத்துவது நல்லது, நீங்கள் நேரடியாக வாசித்து மனவருத்தம் அடைவதை விட. அதுவும், இது ஒரு சிறிய பகுதியே எழுதுகிறார்கள், ஆனால் அவர்கள் இருப்பது உண்மை. +> இந்த தரவுத்தொகுப்புடன் வேலை செய்யும் போது, நீங்கள் உரையைக் கைக் கணக்கிடும் பொருளை கணக்கிடும் கோ드를 எழுதுவீர்கள், உரையை நீங்கள் நேரடியாக வாசிக்கவோ ஆய்வுசெய்யவோ வேண்டாம். இது NLPயின் சாராம்சம், மனிதர் செய்ய வேண்டாமலே அர்த்தம் அல்லது உணர்வை பகுப்பாய்வு செய்வது. இருப்பினும், சில நேரங்களில் நீங்கள் சில எதிர்மறை மதிப்புரைகளை வாசிக்க நேரலாம். வாசிக்க வேண்டாம் என்று நான் அறிவுறுத்துகிறேன், ஏனெனில் அவசியமில்லை. அதில் சில அவமானமடையக்கூடியவைகள், அல்லது தொடர்பில்லாத எதிர்மறை ஹோட்டல் மதிப்புரைகள், உதாரணமாக "வானிலை சிறந்ததல்ல" என்பதுபோன்றவை உள்ளன, ஹோட்டலின் கட்டுப்பாட்டுக்குபரி அப்போதுமில்லை. ஆனால் சில மதிப்புரைகளுக்கு ஒரு மோசமான பக்கம் உண்டு. சில நேரங்களில் எதிர்மறை மதிப்புரைகள் இனவெறிப்படையானவையா, பாலின மாதிரியானவையா அல்லது வயதுபெற்றவர்களுக்கானவை ஆவாக இருக்கக் கூடும். இது துரதிர்ஷ்டமானது, ஆனால் பொதுவான இணையதளத்தில் இருந்து சேகரிக்கப்பட்ட தரவுகளுக்கு இது எதிர்பார்க்கத்தக்கது. சில மதிப்புரையாளர்கள் அவமானமளிக்கக்கூடிய, அசௌகரியமான அல்லது மனநிறைக்கும் மதிப்புரைகளை விடுகின்றனர். அவைகளை நீங்கள் நேரடியாக வாசித்து மனம் காய்ச்சிக்கொள்ளாமல், அந்த உணர்வை அளவிடவும் கோடிங் செய்வதும் சிறந்தது. அதாவது, அப்படி எழுதுவோர் ஒரு சிறிய மரபில் மட்டுமே உள்ளனர், ஆனால் இருந்தே இருக்கின்றனர். -## பயிற்சி - தரவுத்தொகுப்பை ஆராய்வது -### தரவுகளை ஏற்றுதல் +## பயிற்சி - தரவு ஆராய்ச்சி +### தரவை ஏற்றுகொள் -தரவுகளை கண்ணோட்டமாக ஆராய்வது போதுமானது, இப்போது நீங்கள் சில நிரல்களை எழுதுவீர்கள் மற்றும் சில பதில்களை பெறுவீர்கள்! இந்த பகுதி pandas நூலகத்தை பயன்படுத்துகிறது. உங்கள் முதல் பணியாக, நீங்கள் CSV தரவுகளை ஏற்றவும் வாசிக்கவும் முடியும் என்பதை உறுதிப்படுத்த வேண்டும். pandas நூலகத்தில் ஒரு வேகமான CSV ஏற்றும் செயலி உள்ளது, மற்றும் முடிவுகள் முந்தைய பாடங்களில் போல dataframe-ல் வைக்கப்படும். நாம் ஏற்றும் CSV-ல் அரை மில்லியனுக்கும் மேற்பட்ட வரிசைகள் உள்ளன, ஆனால் 17 மட்டுமே நெடுவரிசைகள் உள்ளன. pandas உங்களுக்கு dataframe-ஐ தொடர்பு கொள்ள பல சக்திவாய்ந்த வழிகளை வழங்குகிறது, அதில் ஒவ்வொரு வரிசையிலும் செயல்பாடுகளை செய்யும் திறனும் அடங்கும். +தரவை கண்விடிப்பில் பார்த்துவிட்டு போதுமானது, இப்போது நீங்கள் சில கோடுகளை எழுதிவிட்டு பதில்களைக் கண்டறியப் போகிறீர்கள்! இந்தப் பகுதி pandas நூலகத்தை பயன்படுத்துகிறது. உங்கள் முதல் பணியாக CSV தரவை ஏற்றிக்கொள்ளுதல் மற்றும் வாசிப்பதை உறுதி செய்ய வேண்டும். pandas நூலகம் விரைவாக CSVஐ ஏற்றுகிறது, முடிவை ஒரு dataframe இல் வைக்கிறது, முந்தைய பாடங்களுபோல். நம்மால் ஏற்றுக்கொண்ட CSV வாழ்க்கையில் அரை மில்லியன் கட்டங்கள் (rows) மற்றும் 17 த полкоர்கள் (columns) இருக்கின்றன. pandas தான் data frame ஐ திறம்பட செயலாற்ற பல வழிகளை தருகிறது, அதில் ஒவ்வொரு வரியிலும் விதிகள் செய்யும் திறன் உண்டு. -இப்பாடத்தில் இங்கிருந்து, சில நிரல்குறிப்புகள் மற்றும் அவற்றின் விளக்கங்கள் மற்றும் முடிவுகள் என்ன பொருள் கொண்டது என்பதற்கான விவாதம் இருக்கும். உங்கள் நிரலுக்கு _notebook.ipynb_ ஐ பயன்படுத்தவும். +இப்பாடத்தில் இதற்கு பிறகு சில குறியீட்டு துணுக்குகள், சிலவுரைகள் மற்றும் முடிவுகளின் விளக்கங்கள் இருக்கும். உங்கள் குறியீட்டிற்கு இணைக்கப்பட்ட _notebook.ipynb_ஐ பயன்படுத்தவும். -நாம் பயன்படுத்தும் தரவுத்தொகுப்பை ஏற்றுவதில் தொடங்குவோம்: +நீங்கள் பயன்படுத்தப்போகும் தரவு கோப்பை ஏற்றுவதை ஆரம்பிப்போம்: ```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 +# கோப்பு ஏற்றும் நேரத்தை கணக்கிட தொடக்க மற்றும் முடிவு நேரத்தை பயன்படுத்துவதற்காக நேரத்தை இறக்குமதி செய்தல் 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' - கோப்பை டேட்டா கோப்புறையில் நீங்கள் பதிவிறக்கம் செய்திருக்கிறீர்கள் என்பதை உறுதிப்படுத்துக df = pd.read_csv('../../data/Hotel_Reviews.csv') end = time.time() print("Loading took " + str(round(end - start, 2)) + " seconds") ``` -தரவுகள் ஏற்றப்பட்டவுடன், அதில் சில செயல்பாடுகளை செய்யலாம். உங்கள் நிரலின் அடுத்த பகுதிக்காக இந்த நிரலை மேல் பகுதியில் வைத்திருங்கள். +இப்போது தரவு ஏற்றிக் கொண்டுவிட்டதால், அதில் சில செயல்பாடுகளை செய்யலாம். அடுத்த பகுதியின் உள்ளீட்டின் மேல் இந்தக் கோடுகளை வைக்கவும். -## தரவுகளை ஆராய்வது +## தரவை ஆராய்க -இந்தக் கட்டத்தில், தரவுகள் ஏற்கனவே *சுத்தமாக* உள்ளது, அதாவது இது வேலை செய்ய தயாராக உள்ளது, மற்றும் ஆங்கில எழுத்துக்களை மட்டுமே எதிர்பார்க்கும் அல்காரிதம்களை தடுமாறச் செய்யக்கூடிய பிற மொழிகளில் எழுத்துக்கள் இல்லை. +இந்நிலையில், தரவு ஏற்கனவே *தூய்மையாக* உள்ளது, அதாவது அதுடன் வேலை செய்ய தயாராக உள்ளது, மற்றும் ஏற்றுத்திறன் கொண்ட ஆல்கொரித்முகள் எதிர்பார்க்கும் ஆங்கில எழுத்துகளுக்கு மட்டுமே உள்ள தொந்தர்களைக் கொண்டிருக்கவில்லை. -✅ நீங்கள் ஆரம்ப செயலாக்கம் தேவைப்படும் தரவுகளுடன் வேலை செய்ய வேண்டியிருக்கலாம், ஆனால் இந்த முறை அவசியமில்லை. நீங்கள் செய்ய வேண்டியிருந்தால், ஆங்கிலமல்லாத எழுத்துக்களை எப்படி கையாளுவீர்கள்? +✅ சில நேரங்களில் நீங்கள் NLP நுட்பங்களைப் பயன்படுத்துவதற்கு முன் தரவை வடிவமைக்க முன் சுழற்று வேலை செய்ய வேண்டி வாய்ப்பு இருக்கலாம், ஆனால் இப்போதும் இல்லை. நீங்கள் செய்ய வேண்டுமானால், ஆங்கிலங்களால் அல்லாத எழுத்துக்களை எப்படி கையாள்வீர்கள்? -தரவுகள் ஏற்றப்பட்டவுடன், நீங்கள் அதை நிரல்களுடன் ஆராய முடியும் என்பதை உறுதிப்படுத்த ஒரு நிமிடம் எடுத்துக்கொள்ளுங்கள். `Negative_Review` மற்றும் `Positive_Review` நெடுவரிசைகளில் கவனம் செலுத்த விரும்புவது மிகவும் எளிது. அவை உங்கள் NLP அல்காரிதம்களுக்கு இயற்கை உரையால் நிரப்பப்பட்டுள்ளன. ஆனால் காத்திருக்கவும்! NLP மற்றும் உணர்வை ஆராய்வதற்கு முன், pandas மூலம் தரவுத்தொகுப்பில் கொடுக்கப்பட்ட மதிப்பீடுகள் நீங்கள் கணக்கிடும் மதிப்பீடுகளுடன் பொருந்துகிறதா என்பதை உறுதிப்படுத்த கீழே உள்ள நிரலை பின்பற்ற வேண்டும். +ஒரு நிமிடம் எடுத்து, தரவை ஏற்றிவிட்டு நாம் அந்த தரவை குறியீடு மூலம் ஆராய முடியும் என்று உறுதி செய்யுங்கள். நீங்கள் அசல் கவனம் செலுத்தி ஆளுடைய நிலை அமைதியற்று `Negative_Review` மற்றும் `Positive_Review` நெடுவரிசைகளில் இருப்பதைக் கவனிக்கலாம். அவை உங்கள் NLP ஆல்கொரிதங்களுக்குப் இயற்கை உரைகளை கொண்டுள்ளன. ஆனால் காத்திருங்கள்! NLP மற்றும் உணர்வு பொருள்மொழியில் இறங்குவதற்கு முன்பு, கீழுள்ளக் கோடுகளை பின்பற்று, தரவுத்தொகுப்பில் உள்ள மதிப்புகள் pandas மூலம் நீங்கள் கணக்கிடும் மதிப்புகளுடன் பொருந்துகிறதா என்று உறுதி செய்யுங்கள். ## Dataframe செயல்பாடுகள் -இந்த பாடத்தில் முதல் பணியாக, தரவுத்தொகுப்பை (மாற்றாமல்) ஆராயும் நிரலை எழுதுவதன் மூலம் பின்வரும் உறுதிப்படுத்தல்களை சரிபார்க்க வேண்டும். - -> பல நிரலாக்க பணிகளுக்கு பல வழிகள் உள்ளன, ஆனால் நல்ல ஆலோசனை என்னவென்றால், நீங்கள் அதை எளிதாகவும், சிக்கலற்றதாகவும் செய்ய வேண்டும், குறிப்பாக நீங்கள் எதிர்காலத்தில் இந்த நிரலை மீண்டும் பார்க்கும்போது புரிந்துகொள்ள எளிதாக இருக்கும். Dataframe-களுடன், ஒரு விரிவான API உள்ளது, இது நீங்கள் விரும்பும் செயல்பாட்டை திறமையாக செய்ய ஒரு வழியை அடிக்கடி கொண்டிருக்கும். +இப்பாடத்தின் முதல் பணி தேதி அட்டவணையை மாற்றாமல் பார்ப்பதற்கான கோடுகளை எழுதுவதன் மூலம் கீழ்க்காணும் உறுதிப்படுத்தல்கள் சரியானதா என்பதை பரிசோதிப்பது ஆகும். -பின்வரும் கேள்விகளை நிரலாக்க பணிகளாக கருதி, தீர்வை பார்க்காமல் பதிலளிக்க முயற்சிக்கவும். +> பல நிரல் பணிகளிற்கு போல், இதற்கு பல வழிகள் உள்ளன, ஆனால் நல்ல ஆலோசனை எளிய மற்றும் புரிந்து கொள்ள எளிதான முறையை எடுத்துக் கொள்வதாகும், குறிப்பாக நீங்கள் எதிர்காலத்தில் இந்தக் குறியீட்டை மீண்டும் பார்க்கும்போது. Dataframe க்கான நிறைய விரிவான APIகள் உள்ளன, அவை உங்கள் தேவைக்கு திறம்பட செயல்படும் வழியை தரும். -1. நீங்கள் ஏற்றிய dataframe-இன் *shape* ஐ அச்சிடுங்கள் (shape என்பது வரிசைகள் மற்றும் நெடுவரிசைகளின் எண்ணிக்கை) -2. மதிப்பீட்டாளர் தேசியத்திற்கான அதிர்வெண் எண்ணிக்கை கணக்கிடுங்கள்: - 1. `Reviewer_Nationality` நெடுவரிசைக்கு எத்தனை தனித்துவமான மதிப்பீடுகள் உள்ளன, அவை என்ன? - 2. தரவுத்தொகுப்பில் எந்த மதிப்பீட்டாளர் தேசியம் மிகவும் பொதுவானது (நாடு மற்றும் மதிப்பீடுகளின் எண்ணிக்கையை அச்சிடவும்)? - 3. அடுத்த 10 மிகவும் பொதுவான தேசியங்கள் மற்றும் அவற்றின் அதிர்வெண் எண்ணிக்கை என்ன? -3. மிக அதிகமாக மதிப்பீடு செய்யப்பட்ட ஹோட்டல் ஒவ்வொரு 10 மிக அதிக மதிப்பீட்டாளர் தேசியங்களுக்கு என்ன? -4. தரவுத்தொகுப்பில் ஹோட்டல் ஒன்றுக்கு எத்தனை மதிப்பீடுகள் உள்ளன (ஹோட்டலின் அதிர்வெண் எண்ணிக்கை)? -5. தரவுத்தொகுப்பில் ஒவ்வொரு ஹோட்டலுக்கும் மதிப்பீட்டாளர் மதிப்பீடுகளின் சராசரியை கணக்கிடுவதன் மூலம் சராசரி மதிப்பீட்டை கணக்கிடலாம், `Calc_Average_Score` என்ற தலைப்புடன் dataframe-க்கு ஒரு புதிய நெடுவரிசையை சேர்க்கவும். -6. எந்த ஹோட்டல்கள் (1 தசம இடம் வரை வட்டமிடப்பட்ட) `Average_Score` மற்றும் `Calc_Average_Score` மதிப்பீடுகளை ஒரே மாதிரியானவை கொண்டுள்ளன? - 1. ஒரு Series (வரிசை) ஐ வாதமாக எடுத்துக்கொண்டு மதிப்பீடுகளை ஒப்பிட்டு, மதிப்பீடுகள் சமமாக இல்லாதபோது ஒரு செய்தியை அச்சிடும் Python செயல்பாட்டை எழுத முயற்சிக்கவும். பின்னர் `.apply()` முறைமையை பயன்படுத்தி ஒவ்வொரு வரிசையையும் செயல்பாட்டுடன் செயல்படுத்தவும். -7. `Negative_Review` நெடுவரிசை மதிப்பீடுகள் "No Negative" என்று உள்ள எத்தனை வரிசைகள் உள்ளன என்பதை கணக்கிடவும் மற்றும் அச்சிடவும். -8. `Positive_Review` நெடுவரிசை மதிப்பீடுகள் "No Positive" என்று உள்ள எத்தனை வரிசைகள் உள்ளன என்பதை கணக்கிடவும் மற்றும் அச்சிடவும். -9. `Positive_Review` நெடுவரிசை மதிப்பீடுகள் "No Positive" **மற்றும்** `Negative_Review` மதிப்பீடுகள் "No Negative" என்று உள்ள எத்தனை வரிசைகள் உள்ளன என்பதை கணக்கிடவும் மற்றும் அச்சிடவும். +கீழ்க்காணும் கேள்விகளை குறியீட்டு பணிகளாக கருதி, தீர்வை பாராமல் சமாதானம் செய்வதற்கு முயற்சி செய்யுங்கள். -### நிரல்குறிப்பு பதில்கள் +1. நீங்கள் இப்போது ஏற்றிய data frame இன் *shape*ஐ (வரிசைகளும் பாதிகளும்) அச்சிடுக. +2. மதிப்புரையாளர்களின் தேசியத்தன்மைகளுக்கான அடிக்கடி எண்ணிக்கையை கணக்கிடுக: + 1. `Reviewer_Nationality` நெடுவரியில் எந்தெந்த தனித்துவமான மதிப்புகள் இருக்கின்றன மற்றும் அவை எத்தனை? + 2. தரவுத்தொகுப்பில் அதிகபட்சமாக இருக்கும் மதிப்புரையாளர் தேசியத்தன்மை எது (நாட்டு பெயர் மற்றும் மதிப்புரை எண்ணிக்கையை அச்சிடுக)? + 3. அடுத்த 10 அதிக அங்கீகாரம் பெறும் தேசியங்கள் மற்றும் அவற்றின் எண்ணிக்கை என்ன? +3. மேலே கூறிய முன் 10 அதிக மதிப்புரையாளர்கள் நாடுகளுக்கான அதிக மதிப்புரைகள் பெற்ற ஹோட்டல்கள் எவை? +4. ஹோட்டல் வெவ்வேறு மதிப்புரைகளுக்கு எத்தனை மதிப்புரை இருக்கின்றன (ஹோட்டல் அடிப்படையில் எண்ணிக்கை)? +5. `Average_Score` என்ற ஒவ்வொரு ஹோட்டலுக்கும் ஒரு நெடுவரிசை இருந்தாலும், நீங்கள் ஒவ்வொரு ஹோட்டலுக்கும் அனைத்து மதிப்புரையாளர்களிடமிருந்து கிடைக்கும் சராசரி மதிப்பை கண்டறியலாம். உங்கள் dataframe இல் `Calc_Average_Score` என்ற புதிய நெடுவரிசையைக் கூட்டி அதில் கணக்கிடப்பட்ட சராசரியை நிரப்பவும். +6. எந்த ஹோட்டல்களுக்காவது (1 தசம இடம் வரை சுற்றிய முடிவில்) `Average_Score` மற்றும் `Calc_Average_Score` மதிப்புகள் ஒரே மாதிரி உள்ளனவா? + 1. ஒரு பைத்தான் செயல்பாட்டை எழுத முயற்சி செய்யுங்கள், அது ஒரு Series (வரிசை) ஆவணமாக எடுத்துக்கொண்டு மதிப்புகளை ஒப்பிட்டு, மதிப்புகள் இணைவதில்லையான போது ஒரு செய்தியை அச்சிடும். பின்னர் `.apply()` முறையை பயன்படுத்தி எல்லா வரிகளையும் செயலாக்கவும். +7. `Negative_Review` நெடுவரிசையின் மதிப்புகள் "No Negative" என்ற உள்ளவற்றின் எண்ணிக்கையை கணக்கிட்டு அச்சிடுக +8. `Positive_Review` நெடுவரிசையின் மதிப்புகள் "No Positive" என்ற உள்ளவற்றின் எண்ணிக்கையை கணக்கிட்டு அச்சிடுக +9. `Positive_Review` நெடுவரியில் "No Positive" மற்றும் `Negative_Review` நெடுவரியில் "No Negative" ஆகிய இரண்டையும் கொண்டுள்ள வரிசைகளின் எண்ணிக்கையை கணக்கிட்டு அச்சிடுக +### கோட் பதில்கள் -1. நீங்கள் ஏற்றிய dataframe-இன் *shape* ஐ அச்சிடுங்கள் (shape என்பது வரிசைகள் மற்றும் நெடுவரிசைகளின் எண்ணிக்கை) +1. நீங்கள் எடுத்து ஏற்றிய data frame இன் *shape*ஐ அச்சிடுக (வரிசைகள் மற்றும் காலமுறைகள் எத்தனை) ```python print("The shape of the data (rows, cols) is " + str(df.shape)) > The shape of the data (rows, cols) is (515738, 17) ``` -2. மதிப்பீட்டாளர் தேசியத்திற்கான அதிர்வெண் எண்ணிக்கை கணக்கிடுங்கள்: +2. மதிப்புரையாளர்களின் தேசியத்தன்மைகளுக்கான அடிக்கடி எண்ணிக்கையை கணக்கிடுக: - 1. `Reviewer_Nationality` நெடுவரிசைக்கு எத்தனை தனித்துவமான மதிப்பீடுகள் உள்ளன, அவை என்ன? - 2. தரவுத்தொகுப்பில் எந்த மதிப்பீட்டாளர் தேசியம் மிகவும் பொதுவானது (நாடு மற்றும் மதிப்பீடுகளின் எண்ணிக்கையை அச்சிடவும்)? + 1. `Reviewer_Nationality` நெடுவரியில் எந்தெந்த தனித்துவமான மதிப்புகள் உள்ளன, அவை எத்தனை? + 2. தரவுத்தொகுப்பில் அதிகபட்சமாக இருக்கும் மதிப்புரையாளர்கள் தேசியத்தன்மை எது (நாடு மற்றும் மதிப்புரைகள் எண்ணிக்கை அச்சிடுக)? ```python - # value_counts() creates a Series object that has index and values in this case, the country and the frequency they occur in reviewer nationality + # value_counts() ஒரு கோட் பொருள் உருவாக்குகிறது, இதில் இந்தக் கோயில் index மற்றும் மதிப்புகள் உள்ளன, நாட்டும் அவர்கள் விமர்சகர் தேசியத்திலுள்ள நிகழ்ச்சி எண் ஆகும் 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 @@ -200,12 +222,12 @@ print("Loading took " + str(round(end - start, 2)) + " seconds") Name: Reviewer_Nationality, Length: 227, dtype: int64 ``` - 3. அடுத்த 10 மிகவும் பொதுவான தேசியங்கள் மற்றும் அவற்றின் அதிர்வெண் எண்ணிக்கை என்ன? + 3. அடுத்த 10 அதிகமாக கண்ட NATIONALITIES மற்றும் அவற்றின் அடிக்கடி எண்ணிக்கை எவை? ```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? + # மதிப்புகளில் முன்னிலையில் ஒரு இடைவெளி உள்ளது, அதை அச்சிட strip() அகற்றுகிறது + # மிக பொதுவான 10 தேசியங்களை மற்றும் அவற்றின் நிகழ்ச்சிகளை என்ன? print("The next 10 highest frequency reviewer nationalities are:") print(nationality_freq[1:11].to_string()) @@ -223,15 +245,15 @@ print("Loading took " + str(round(end - start, 2)) + " seconds") France 7296 ``` -3. மிக அதிகமாக மதிப்பீடு செய்யப்பட்ட ஹோட்டல் ஒவ்வொரு 10 மிக அதிக மதிப்பீட்டாளர் தேசியங்களுக்கு என்ன? +3. மேலே கூறப்பட்ட 10 அதிக மதிப்புரையாளர்கள் நாட்டுக்களுக்கு அதிக மதிப்புரைகள் பெற்ற ஹோட்டல்கள் எவை? ```python - # What was the most frequently reviewed hotel for the top 10 nationalities - # Normally with pandas you will avoid an explicit loop, but wanted to show creating a new dataframe using criteria (don't do this with large amounts of data because it could be very slow) + # மேல்நாட்டு 10 முக்கிய மனையியல் கொண்ட மக்கள் மிகவும் அடிக்கடி மதிப்பாய்வு செய்திருந்த ஹோட்டல் எது + # சாதாரணமாக pandas உடன் நீங்கள் ஒரு நேரடி மடக்கு தவிர்ப்பீர்கள், ஆனால் நகலெடுக்க ஒரு புதிய டேட்டாபிரேமை உருவாக்கி காண்பிக்க விரும்பினேன் (பெரிய அளவிலான தரவுகளுடன் இதைப் பயன்படுத்த வேண்டாம், ஏனெனில் இது மிகவும் மெதுவாக இருக்கலாம்) for nat in nationality_freq[:10].index: - # First, extract all the rows that match the criteria into a new dataframe + # முதலில், விதிப்பா்றலுடன் பொருந்தும் அனைத்து வரிகளையும் புதிய டேட்டாபிரேமில் எடுக்கவும் nat_df = df[df["Reviewer_Nationality"] == nat] - # Now get the hotel freq + # இப்போது ஹோட்டல் பயன்முறை எண்ணிக்கை பெறுக freq = nat_df["Hotel_Name"].value_counts() print("The most reviewed hotel for " + str(nat).strip() + " was " + str(freq.index[0]) + " with " + str(freq[0]) + " reviews.") @@ -247,16 +269,16 @@ print("Loading took " + str(round(end - start, 2)) + " seconds") The most reviewed hotel for Canada was St James Court A Taj Hotel London with 61 reviews. ``` -4. தரவுத்தொகுப்பில் ஹோட்டல் ஒன்றுக்கு எத்தனை மதிப்பீடுகள் உள்ளன (ஹோட்டலின் அதிர்வெண் எண்ணிக்கை)? +4. தரவுத்தொகுப்பில் ஹோட்டல்கள் வெவ்வேறு மதிப்புரைகளுக்குத் தோன்றும் எண்ணிக்கை எவ்வளவு? ```python - # First create a new dataframe based on the old one, removing the uneeded columns + # பழையதின் அடிப்படையில் புதிய டேட்டாபிரேம் ஒன்றை முதலில் உருவாக்கி, தேவையற்ற காலங்களை அகற்றவும் hotel_freq_df = df.drop(["Hotel_Address", "Additional_Number_of_Scoring", "Review_Date", "Average_Score", "Reviewer_Nationality", "Negative_Review", "Review_Total_Negative_Word_Counts", "Positive_Review", "Review_Total_Positive_Word_Counts", "Total_Number_of_Reviews_Reviewer_Has_Given", "Reviewer_Score", "Tags", "days_since_review", "lat", "lng"], axis = 1) - # Group the rows by Hotel_Name, count them and put the result in a new column Total_Reviews_Found + # வரிசைகளை Hotel_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) ``` @@ -270,31 +292,31 @@ print("Loading took " + str(round(end - start, 2)) + " seconds") | Hotel Wagner | 135 | 10 | | Hotel Gallitzinberg | 173 | 8 | - நீங்கள் கவனிக்கலாம், *தரவுத்தொகுப்பில் எண்ணப்பட்ட* முடிவுகள் `Total_Number_of_Reviews` மதிப்பீடுடன் பொருந்தவில்லை. இந்த மதிப்பீடு ஹோட்டல் கொண்டிருந்த மொத்த மதிப்பீடுகளை பிரதிநிதித்துவப்படுத்தியது, ஆனால் அனைத்தும் சேகரிக்கப்படவில்லை, அல்லது வேறு கணக்கீடு. `Total_Number_of_Reviews` மாடலில் பயன்படுத்தப்படவில்லை, ஏனெனில் இது தெளிவற்றது. + நீங்கள் கவனிப்பீர்கள், தரவுத்தொகுப்பில் எண்ணப்பட்ட முடிவுகள் `Total_Number_of_Reviews` மதிப்பிற்கு பொருந்தவில்லை. இந்த தரவுத்தொகுப்பில் அந்த மதிப்பு ஹோட்டலுக்கு கிடைத்த மதிப்புரைகளின் மொத்த எண் அல்லது சில கூடுதல் கணக்கின் காரணமாக இருக்கலாம். இந்த `Total_Number_of_Reviews` நம்முடைய மாதிரியில் பயன்படுத்தப்படவில்லை. -5. `Average_Score` என்ற நெடுவரிசை தரவுத்தொகுப்பில் உள்ள ஒவ்வொரு ஹோட்டலுக்கும், மதிப்பீட்டாளர் மதிப்பீடுகளின் சராசரியை கணக்கிடுவதன் மூலம் சராசரி மதிப்பீட்டை கணக்கிடலாம். `Calc_Average_Score` என்ற தலைப்புடன் dataframe-க்கு ஒரு புதிய நெடுவரிசையை சேர்க்கவும். `Hotel_Name`, `Average_Score`, மற்றும் `Calc_Average_Score` நெடுவரிசைகளை அச்சிடவும். +5. ஒவ்வொரு ஹோட்டலுக்கும் `Average_Score` எனும் நெடுவரிசைத் தரவுத்தொகுப்பில் இருந்தாலும், நீங்கள் ஹோட்டலுக்கு வரும் அனைத்து மதிப்புரையாளர்களின் மதிப்பைப் கொண்டு சராசரி மதிப்பைத் தொகுக்கலாம். உங்கள் dataframe இல் `Calc_Average_Score` எனும் புதிய நெடுவரிசையைச் சேர்க்கவும், அதில் கணக்கிடப்பட்ட சராசரி மதிப்பு இருக்கும். `Hotel_Name`, `Average_Score`, மற்றும் `Calc_Average_Score` என்று உள்ள நெடுவரிசைகளைப் பிரிண்ட் செய்யுங்கள். ```python - # define a function that takes a row and performs some calculation with it + # ஒரு வரியை எடுத்துக் கொண்டு அதனுடன் சில கணக்கீடுகளை செய்யும் ஒரு செயல்பாட்டை வரையறு def get_difference_review_avg(row): return row["Average_Score"] - row["Calc_Average_Score"] - # 'mean' is mathematical word for 'average' + # '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` மதிப்பீடு மற்றும் கணக்கிடப்பட்ட சராசரி மதிப்பீடு ஏன் சில நேரங்களில் வேறுபடுகிறது என்று ஆச்சரியப்படலாம். சில மதிப்பீடுகள் பொருந்துகின்றன, ஆனால் மற்றவை வேறுபாடு கொண்டுள்ளன, ஏன் என்பதை நாம் அறிய முடியாது, எனவே இந்த வழக்கில், நாம் கொண்டிருக்கும் மதிப்பீடுகளை பயன்படுத்தி சராசரியை நாமே கணக்கிடுவது பாதுகாப்பானது. அதுவும், வேறுபாடுகள் பொதுவாக மிகவும் சிறியவை, தரவுத்தொகுப்பின் சராசரி மற்றும் கணக்கிடப்பட்ட சராசரியில் மிக அதிக வேறுபாடு கொண்ட ஹோட்டல்கள் இவை: + நீங்கள் கூடவே சந்தேகம் கொள்ளலாம், ஏன் `Average_Score` கோவைக்கு கணக்கிடப்பட்ட சராசரி மதிப்புடன் நேர்கொண்ட வேறுபாடுகள் இருப்பது என்று. சில மதிப்புகள் ஒத்துள்ளது, சில வேறுபாடு உள்ளது என்பதற்கு காரணம் தெரியாது, எனவே இந்த நிலைமையில் நம்மால் கொண்டுள்ள மதிப்புரைகளை வைத்து சராசரி மதிப்பைத் துணை கணக்கிடுவது சிறந்தது. பொதுவாக வேறுபாடுகள் மிகச் சின்னவையாக இருப்பதால், இங்கே தரவுத்தொகுப்பின் சராசரி மற்றும் கணக்கிடப்பட்ட சராசரிக்கு மிக உயர்ந்த வேறுபாடு உள்ள ஹோட்டல்கள்: | Average_Score_Difference | Average_Score | Calc_Average_Score | Hotel_Name | | :----------------------: | :-----------: | :----------------: | ------------------------------------------: | @@ -310,16 +332,16 @@ print("Loading took " + str(round(end - start, 2)) + " seconds") | 0.9 | 8.6 | 7.7 | MARQUIS Faubourg St Honor Relais Ch teaux | | 1.3 | 7.2 | 5.9 | Kube Hotel Ice Bar | - 1 மதிப்பீடு மட்டுமே 1-க்கு மேற்பட்ட வேறுபாடு கொண்டுள்ளது, எனவே வேறுபாட்டை புறக்கணித்து கணக்கிடப்பட்ட சராசரி மதிப்பீட்டை பயன்படுத்தலாம். + 1 ஐ விட அதிக வேறுபாடு கொண்ட ஹோட்டல் ஒன்று மட்டுமே இருப்பதால், வேறுபாடுகளை புறக்கணித்து கணக்கிடப்பட்ட சராசரி மதிப்பைப் பயன்படுத்தலாம் என்று அர்த்தம். -6. `Negative_Review` நெடுவரிசை மதிப்பீடுகள் "No Negative" என்று உள்ள எத்தனை வரிசைகள் உள்ளன என்பதை கணக்கிடவும் மற்றும் அச்சிடவும். +6. `Negative_Review` நெடுவரியின் மதிப்புகள் "No Negative" என உள்ள வரிசைகளின் எண்ணிக்கையை கணக்கிட்டு அச்சிடுக -7. `Positive_Review` நெடுவரிசை மதிப்பீடுகள் "No Positive" என்று உள்ள எத்தனை வரிசைகள் உள்ளன என்பதை கணக்கிடவும் மற்றும் அச்சிடவும். +7. `Positive_Review` நெடுவரியின் மதிப்புகள் "No Positive" என உள்ள வரிசைகளின் எண்ணிக்கையை கணக்கிட்டு அச்சிடுக -8. `Positive_Review` நெடுவரிசை மதிப்பீடுகள் "No Positive" **மற்றும்** `Negative_Review` மதிப்பீடுகள் "No Negative" என்று உள்ள எத்தனை வரிசைகள் உள்ளன என்பதை கணக்கிடவும் மற்றும் அச்சிடவும். +8. `Positive_Review` மதிப்பீடு "No Positive" மற்றும் `Negative_Review` மதிப்பீடு "No Negative" குறிக்கும் வரிசைகள் எத்தனை என்பதையும் கணக்கிட்டு அச்சிடுக ```python - # with lambdas: + # லம்ப்டாக்களுடன்: start = time.time() no_negative_reviews = df.apply(lambda x: True if x['Negative_Review'] == "No Negative" else False , axis=1) print("Number of No Negative reviews: " + str(len(no_negative_reviews[no_negative_reviews == True].index))) @@ -338,12 +360,12 @@ print("Loading took " + str(round(end - start, 2)) + " seconds") Lambdas took 9.64 seconds ``` -## மற்றொரு வழி +## வேறொரு வழி -Lambda-களை பயன்படுத்தாமல் உருப்படிகளை எண்ணும் மற்றொரு வழி, மற்றும் வரிசைகளை எண்ண sum-ஐ பயன்படுத்தவும்: +Lambdaகள் இல்லாமல் பொருட்களை எண்ணும் வேறொரு வழியும், வரிசைகளை எண்ண 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)) @@ -363,26 +385,28 @@ Lambda-களை பயன்படுத்தாமல் உருப்ப Sum took 0.19 seconds ``` - நீங்கள் கவனித்திருக்கலாம், `Negative_Review` மற்றும் `Positive_Review` நெடுவரிசைகளுக்கு "No Negative" மற்றும் "No Positive" மதிப்பீடுகளை கொண்ட 127 வரிசைகள் உள்ளன. அதாவது மதிப்பீட்டாளர் ஹோட்டலுக்கு ஒரு எண் மதிப்பீட்டை கொடுத்தார், ஆனால் ஒரு நேர்மறை அல்லது எதிர்மறை மதிப்பீட்டை எழுத மறுத்தார். அதிர்ஷ்டவசமாக, இது ஒரு சிறிய வரிசைகளின் தொகை (127/515738, அல்லது 0.02%), எனவே இது எங்கள் மாடல் அல்லது முடிவுகளை எந்த ஒரு குறிப்பிட்ட திசையில் சாய்க்காது, ஆனால் மதிப்பீடுகள் இல்லாத வரிசைகள் கொண்ட தரவுத்தொகுப்பை நீங்கள் எதிர்பார்க்கவில்லை, எனவே இந்த தரவுகளை ஆராய்ந்து இவ்வாறான வரிசைகளை கண்டறிவது மதிப்புமிக்கது. + நீங்கள் கவனித்திருப்பீர்கள், `Negative_Review` மற்றும் `Positive_Review` நெடுவரிசைகளில் "No Negative" மற்றும் "No Positive" என்ற இரண்டு மதிப்புக்களையும் கொண்ட 127 வரிசைகள் உள்ளன. இதன் அர்த்தம், மதிப்புரையாளர் ஹோட்டலுக்கு எண்ணிக்கை மதிப்பெண்ணை அளித்திருந்தாலும், நல்லது அல்லது கெட்டது என்று மதிப்புரை வழங்க மறுத்துள்ளார். அதிர்ஷ்டவசமாக, இது மிகவும் குறைந்த வரிசைகள் மட்டுமே (இது 515738 இல் 127, அல்லது 0.02%), எனவே இது நமது மாதிரியை பக்குவமாக மாற்றாது, ஆனால் மதிப்புரைகளுக்கு மதிப்புரைகள் இல்லாத வரிசைகள் இருக்கலாம் என்று அறிந்து கொள்ள அது ஆராய்ந்தது நல்லது. -தரவுத்தொகுப்பை நீங்கள் ஆராய்ந்த பிறகு, அடுத்த பாடத்தில் நீங்கள் தரவுகளை வடிகட்டி, சில உணர்வு பகுப்பாய்வுகளைச் சேர்ப்பீர்கள். +இப்போது நீங்கள் தரவுத்தொகுப்பை ஆராய்ந்துவிட்டீர்கள், அடுத்த பாடத்தில் தரவை வடிகட்டி, சில உணர்வு பகுப்பாய்வைச் சேர்க்கப்போறோம். --- -## 🚀சவால் +## 🚀 சவால் -இந்த பாடம், முந்தைய பாடங்களில் பார்த்தது போல, உங்கள் தரவுகளை அதன் குறைபாடுகளுடன் புரிந்துகொள்வது செயல்பாடுகளை செய்யும் முன் மிகவும் முக்கியமானது என்பதை விளக்குகிறது. உரை அடிப்படையிலான தரவுகள், குறிப்பாக, கவனமாக ஆராயப்பட வேண்டும். பல உரை-மிகுந்த தரவுத்தொகுப்புகளை ஆராய்ந்து, ஒரு மாடலில் பாகுபாடு அல்லது சாய்ந்த உணர்வை அறிமுகப்படுத்தக்கூடிய பகுதிகளை கண்டறிய முயற்சிக்கவும். +இந்தப் பாடம் முந்தைய பாடங்களில் பார்த்தபடி, தரவு மற்றும் அதன் தனித்தன்மைகளை செயல்படுத்துவதற்கு முன் புரிந்து கொள்வது எவ்வளவு முக்கியம் என்பதை வெளிப்படுத்துகிறது. உரைப் பெற்ற தரவுகளாக இருக்கும்போது சிறப்பாக கவனமாக அவற்றை ஆராயவும். மாறுபாடுகள் அல்லது வலுவான உணர்வுகளை மாதிரியில் கொண்டு வரக்கூடிய பகுதிகளை கண்டுபிடிக்க தகவல்களைத் தேடிக்கொள்ளுங்கள். -## [பாடத்திற்குப் பிந்தைய வினாடி வினா](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 வெற்றியடையும் பாதையை](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77952-leestott)ப் பயன்படுத்தி கண்டறியவும். -## பணிக்கட்டளை +## பணிகள் [NLTK](assignment.md) --- -**குறிப்பு**: -இந்த ஆவணம் [Co-op Translator](https://github.com/Azure/co-op-translator) என்ற AI மொழிபெயர்ப்பு சேவையைப் பயன்படுத்தி மொழிபெயர்க்கப்பட்டுள்ளது. எங்கள் தரச்செயல்முறையை உறுதிப்படுத்த முயற்சிக்கிறோம், ஆனால் தானியங்கி மொழிபெயர்ப்புகளில் பிழைகள் அல்லது தவறான தகவல்கள் இருக்கக்கூடும் என்பதை கவனத்தில் கொள்ளவும். அதன் தாய்மொழியில் உள்ள மூல ஆவணம் அதிகாரப்பூர்வ ஆதாரமாக கருதப்பட வேண்டும். முக்கியமான தகவல்களுக்கு, தொழில்முறை மனித மொழிபெயர்ப்பு பரிந்துரைக்கப்படுகிறது. இந்த மொழிபெயர்ப்பைப் பயன்படுத்துவதால் ஏற்படும் எந்த தவறான புரிதல்கள் அல்லது தவறான விளக்கங்களுக்கு நாங்கள் பொறுப்பல்ல. \ No newline at end of file + +**மறுப்பு**: +இந்த ஆவணம் AI மொழிபெயர்ப்பு சேவை [Co-op Translator](https://github.com/Azure/co-op-translator) பயன்படுத்தி மொழிபெயர்க்கப்பட்டுள்ளது. நாங்கள் துல்லியத்திற்காக முயற்சி செய்துள்ளோம், ஆனால் தானாக செய்யப்படும் மொழிபெயர்ப்புகளில் பிழைகள் அல்லது தவறுகள் இருக்கலாம் என்பதை கவனத்தில் கொள்ளவும். அசல் ஆவணம் அதன் தாய்மொழியில் அதிகாரப்பூர்வ ஆதாரமாக கருதப்பட வேண்டும். முக்கியமான தகவல்களுக்கு, தொழில்நுட்பமான மனித மொழிபெயர்ப்பு பரிந்துரைக்கப்படுகிறது. இந்த மொழிபெயர்ப்பைப் பயன்படுத்துவதால் ஏற்படும் எந்த தவறான புரிதல்கள் அல்லது தவறான விளக்கத்திற்கும் நாங்கள் பொறுப்பில்வில்லை. + \ No newline at end of file diff --git a/translations/ta/7-TimeSeries/2-ARIMA/README.md b/translations/ta/7-TimeSeries/2-ARIMA/README.md index 0abb7da09..0ab3ea3da 100644 --- a/translations/ta/7-TimeSeries/2-ARIMA/README.md +++ b/translations/ta/7-TimeSeries/2-ARIMA/README.md @@ -1,53 +1,76 @@ -# ARIMA மூலம் நேர்முகம் கணிப்பு +# ARIMA உடன் நேர வரிசை முன்னறிவு -முந்தைய பாடத்தில், நேர்முகம் கணிப்பு பற்றிய சில அடிப்படைகளை நீங்கள் கற்றுக்கொண்டீர்கள் மற்றும் ஒரு குறிப்பிட்ட காலத்தில் மின்சார சுமை மாறுபாடுகளை காட்டும் தரவுத்தொகுப்பை ஏற்றீர்கள். +முந்தைய பாடத்தில், நீங்கள் நேர வரிசை முன்னறிவைப் பற்றி சிறிது அறிந்துகொண்டு, ஒரு காலப் பரப்பில் மின்சார சுமையின் வீழ்ச்சிகளை காட்டும் தரவுத்தொகுப்பை ஏற்றினீர்கள். [![ARIMA அறிமுகம்](https://img.youtube.com/vi/IUSk-YDau10/0.jpg)](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 மாதிரிகள் குறிப்பாக [நிலைமையற்றவை](https://wikipedia.org/wiki/Stationary_process) என்று காட்டும் தரவுக்கு மிகச் சிறந்தவை. -## பொதுவான கருத்துக்கள் +## பொதுவான கருத்துகள் -ARIMA-யுடன் வேலை செய்ய, சில முக்கிய கருத்துகளை நீங்கள் அறிந்திருக்க வேண்டும்: +ARIMA உடன் பணியாற்ற, நீங்கள் சில கருத்துக்களை அறிந்திருக்க வேண்டும்: -- 🎓 **Stationarity**. புள்ளியியல் பார்வையில், stationarity என்பது நேரத்தில் மாற்றியமைக்கும்போது அதன் விநியோகம் மாறாத தரவுகளை குறிக்கிறது. Non-stationary தரவுகள், பின்னர், பருவத்தால் ஏற்படும் மாறுபாடுகளை காட்டுகிறது, அவற்றை பகுப்பாய்வு செய்ய மாற்றம் செய்ய வேண்டும். உதாரணமாக, பருவத்தால் ஏற்படும் மாறுபாடுகளை 'seasonal-differencing' மூலம் நீக்கலாம். +- 🎓 **நிலைமைமையாக்கம்**. புள்ளிவிவரம் சார்ந்த நியாயத்தில், நிலைமைமையாக்கம் என்பது நேரம் மாறினாலும் தரவின் பகிர்வு மாறாததை குறிக்கும். நிலைமையற்ற தரவு என்பது படிமங்கள் காரணமாக வீழ்ச்சிகளை காட்டும், அவற்றை பகுப்பாய்வு செய்ய மாற்றப்படాలి. காலக்கட்ட விருப்பம் உதாரணமாக தரவில் வீழ்ச்சிகளை அறிமுகம் செய்ய முடியும், அதை 'காலக்கட்ட பாகுபாடு' மூலம் நீக்க முடியும். -- 🎓 **[Differencing](https://wikipedia.org/wiki/Autoregressive_integrated_moving_average#Differencing)**. Differencing என்பது non-stationary தரவுகளை stationarity ஆக மாற்றுவதற்கான செயல்முறையாகும், அதாவது அதன் non-constant trend-ஐ நீக்குவது. "Differencing ஒரு நேர்முகத் தொடரின் நிலையை மாற்றுவதைக் குறைக்கிறது, trend மற்றும் seasonality-ஐ நீக்கி, அதன் சராசரியை நிலைப்படுத்துகிறது." [Shixiong et al-இன் ஆய்வு](https://arxiv.org/abs/1904.07632) +- 🎓 **[பரிசோதனை](https://wikipedia.org/wiki/Autoregressive_integrated_moving_average#Differencing)**. பரிசோதனை தரவுக்கான ஒரு முறை, இதன் மூலம் நிலைமையற்ற தரவை நிலைமைமையாக்கமாக மாற்ற, அதன் நிலைமையற்ற படிமத்தை அகற்றும். "பரிசோதனை நேர வரிசையின் நிலையின் மாற்றங்களை அகற்றி, படிமம் மற்றும் காலக்கட்ட விருப்பத்தை நீக்கும், இதனால் நேர வரிசையின் சராசரி நிலையானதாக இருக்கும்." [Shixiong et al மூலம் கட்டுரை](https://arxiv.org/abs/1904.07632) -## நேர்முகத்தின் சூழலில் ARIMA +## நேர வரிசை சூழலில் ARIMA -நேர்முகத் தரவுகளை மாதிரியாக்க ARIMA எவ்வாறு உதவுகிறது என்பதை நன்கு புரிந்துகொள்ள அதன் பகுதிகளைப் பார்ப்போம். +ARIMA இன் பகுதிகளை ஆராய்ந்து, இது எவ்வாறு நேர வரிசையை மாதிரியாக்கில் உதவுகிறது மற்றும் எவ்வாறு எதிர்காலம் கணிப்பதில் உதவுகிறது என்று புரிந்துகொள்ளலாம். -- **AR - AutoRegressive**. Autoregressive மாதிரிகள், பெயரிலேயே உள்ளது போல, உங்கள் தரவின் முந்தைய மதிப்புகளை 'பின்' நோக்கி பார்த்து அவற்றைப் பகுப்பாய்வு செய்கின்றன. இந்த முந்தைய மதிப்புகள் 'lags' என்று அழைக்கப்படுகின்றன. உதாரணமாக, மாதாந்திர பென்சில் விற்பனை தரவுகள். ஒவ்வொரு மாதத்தின் விற்பனை மொத்தம் 'evolving variable' ஆகக் கருதப்படும். இந்த மாதிரி "evolving variable of interest is regressed on its own lagged (i.e., prior) values." [wikipedia](https://wikipedia.org/wiki/Autoregressive_integrated_moving_average) +- **AR - தானாகும் பின்விளைவு**. AutoRegressive மாதிரிகள், பெயரே சொல்வது போல, உங்கள் தரவின் முந்தைய மதிப்புகளைப் பார்க்கின்றன மற்றும் அவற்றைப் பற்றி ஊகிக்கின்றன. இந்த முந்தைய மதிப்புகள் 'தாமதங்கள்' என அழைக்கப்படுகின்றன. உதாரணமாக, மாதாந்திர பேன்சில்கள் விற்பனையை காட்டும் தரவு. ஒவ்வொரு மாததிலும் விற்பனை மொத்தம் 'மாறுபடும் மாறி' ஆக கருதப்படுகிறது. இந்த மாதிரியானது "தாயாரிப்பு மாறி தனது தாமத மதிப்புகளுக்கு மீண்டும் சாரப்படுகிறது." [விக்கிபீடியா](https://wikipedia.org/wiki/Autoregressive_integrated_moving_average) -- **I - Integrated**. 'ARMA' மாதிரிகளுடன் ஒப்பிடும்போது, ARIMA-யில் உள்ள 'I' அதன் *[integrated](https://wikipedia.org/wiki/Order_of_integration)* அம்சத்தை குறிக்கிறது. Non-stationarity-ஐ நீக்க differencing படிகள் பயன்படுத்தப்படும் போது தரவுகள் 'integrated' ஆகின்றன. +- **I - ஒருங்கிணைப்பு**. ARMA மாதிரிகளுக்கு மாறாக, ARIMA இன் 'I' அதன் *[ஒருங்கிணைக்கப்பட்ட](https://wikipedia.org/wiki/Order_of_integration)* அம்சத்தை குறிக்கிறது. தரவு 'ஒருங்கிணைக்கப்படுகிறது' எனும் போது, நிலைமையற்ற தன்மையை நீக்கும் பரிசோதனைச் செயல்முறைகள் செயல்படுத்தப்படுகின்றன. -- **MA - Moving Average**. [Moving-average](https://wikipedia.org/wiki/Moving-average_model) அம்சம் தற்போதைய மற்றும் முந்தைய lags மதிப்புகளைப் பார்த்து output variable-ஐ தீர்மானிக்கிறது. +- **MA - நகரும் சராசரி**. இந்த மாதிரியின் [நகரும் சராசரி](https://wikipedia.org/wiki/Moving-average_model) அம்சம், தற்போதைய மற்றும் முந்தைய தாமத மதிப்புகளைக் கவனித்து முடிவு செய்யும் வெளியீட்டு மாறி ஆகும். -முக்கியமாக: 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 நூலகத்தை ஏற்றவும்; இது ARIMA மாதிரிகளுக்கு தேவைப்படும். +1. `statsmodels` பைத்தான் நூலகத்தை ஏற்ற வெளியொட்டையை இயக்குங்கள்; இதன் மூலம் ARIMA மாதிரிகள் பயன்படுத்தப்பட வேண்டும். -1. தேவையான நூலகங்களை ஏற்றவும் +1. தேவையான நூலகங்களை ஏற்று. -1. தரவுகளை `/data/energy.csv` கோப்பிலிருந்து Pandas dataframe-இல் ஏற்றவும் மற்றும் பார்வையிடவும்: +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 டிசம்பர் வரை கிடைக்கும் அனைத்து மின்சார தரவுகளையும் வரைபடமாக்கவும். இந்த தரவுகளை முந்தைய பாடத்தில் பார்த்ததால் எந்த ஆச்சரியமும் இருக்காது: +1. ஜனவரி 2012 முதல் டிசம்பர் 2014 வரை உள்ள அனைத்து எரிசக்தி தரவும் வரைபடம் படுத்துங்கள். இது முந்தைய பாடத்தில் பார்த்த தரவு, அதனால் ஆச்சரியமிடவதில்லை: ```python energy.plot(y='load', subplots=True, figsize=(15, 8), fontsize=12) @@ -56,22 +79,22 @@ ARIMA-யுடன் வேலை செய்ய, சில முக்கி plt.show() ``` - இப்போது, ஒரு மாதிரியை உருவாக்குவோம்! +இப்போது, ஒரு மாதிரியை உருவாக்குவோம்! -### பயிற்சி மற்றும் சோதனை தரவுத்தொகுப்புகளை உருவாக்கவும் +### பயிற்சி மற்றும் சோதனை தரவுத்தொகுப்புகளை உருவாக்குதல் -தரவுகளை ஏற்றிய பிறகு, அதை பயிற்சி மற்றும் சோதனை தொகுப்புகளாக பிரிக்கவும். பயிற்சி தொகுப்பில் உங்கள் மாதிரியை பயிற்சி செய்யவும். வழக்கமாக, மாதிரி பயிற்சி முடிந்த பிறகு, அதன் துல்லியத்தை சோதனை தொகுப்பைப் பயன்படுத்தி மதிப்பீடு செய்யவும். மாதிரி எதிர்கால காலகட்டங்களில் இருந்து தகவலைப் பெறாமல் இருக்க, சோதனை தொகுப்பு பயிற்சி தொகுப்பின் பின்னர் காலகட்டத்தை உள்ளடக்க வேண்டும். +இப்போது உங்கள் தரவு ஏற்றப்பட்டுள்ளது, அதை பயிற்சி மற்றும் சோதனை தொகுதிகளாக பிரிக்கலாம். உங்கள் மாதிரியை பயிற்சி தொகுதியில் பயிற்றுவிப்பீர்கள். சாதாரணமாக, மாதிரி பயிற்சியாயிற்றுப்பின்னர், அதன் நம்பகதன்மையை சோதனை தொகுதியில் மதிப்பீடு செய்வீர்கள். சோதனை தொகுதி பயிற்சி தொகுதியில் இருந்து பின்னர் காலப் பகுதியை உள்ளடக்க வேண்டும், மாதிரி எதிர்கால காலங்களிலிருந்து தகவல் பெறாமல் இருக்க. -1. 2014 செப்டம்பர் 1 முதல் அக்டோபர் 31 வரை இரண்டு மாத காலத்தை பயிற்சி தொகுப்புக்கு ஒதுக்கவும். சோதனை தொகுப்பு 2014 நவம்பர் 1 முதல் டிசம்பர் 31 வரை இரண்டு மாத காலத்தை உள்ளடக்கும்: +1. 2014 செப்டம்பர் 1 முதல் அக்டோபர் 31 வரை இரண்டு மாத காலத்தை பயிற்சி தொகுதிக்கு ஒதுக்குங்கள். சோதனை தொகுதியில் 2014 நவம்பர் 1 முதல் டிசம்பர் 31 வரை இரண்டு மாத காலம் இருக்கும்: ```python train_start_dt = '2014-11-01 00:00:00' test_start_dt = '2014-12-30 00:00:00' ``` - இந்த தரவுகள் தினசரி மின்சார பயன்பாட்டை பிரதிபலிப்பதால், ஒரு வலுவான பருவ முறை உள்ளது, ஆனால் சமீபத்திய நாட்களில் பயன்பாட்டுடன் மிகவும் ஒத்ததாக உள்ளது. +இந்த தரவு நாள்தோறும் எரிசக்தி பயன்பாட்டை பிரதிபலிக்கும், ஒரு வலுவான காலக்கட்ட முறை உள்ளது, ஆனால் சமீபத்திய நாட்களில் உள்ள பயன்பாட்டுடன் மிகவும் ஒத்துப்போகிறது. -1. வேறுபாடுகளை காட்சிப்படுத்தவும்: +1. வேறுபாடுகளை காட்சிப்படுத்துங்கள்: ```python energy[(energy.index < test_start_dt) & (energy.index >= train_start_dt)][['load']].rename(columns={'load':'train'}) \ @@ -82,17 +105,17 @@ ARIMA-யுடன் வேலை செய்ய, சில முக்கி plt.show() ``` - ![பயிற்சி மற்றும் சோதனை தரவுகள்](../../../../translated_images/ta/train-test.8928d14e5b91fc94.webp) +![பயிற்சி மற்றும் சோதனை தரவு](../../../../translated_images/ta/train-test.8928d14e5b91fc94.webp) - எனவே, தரவுகளை பயிற்சி செய்ய ஒரு சிறிய கால சாளரத்தைப் பயன்படுத்துவது போதுமானதாக இருக்கும். +ஆகையால், தரவை பயிற்றுவிக்க பொது நேரம் குறைந்த ஒரு சாளரம் போலும் போதுமானது. - > குறிப்பு: ARIMA மாதிரியை பொருத்த பயன்படுத்தும் செயல்பாடு fitting போது in-sample validation பயன்படுத்துவதால், validation தரவுகளை தவிர்க்கலாம். +> குறிப்பு: ARIMA மாதிரியை பொருந்தும் செயல்பாட்டில் உள்ள மாதிரி உள்ளடக்கங்களில் எடுத்துக்காட்டு நிறைவு செய்யும் போது நாம் தேர்வான தரவை தவிர்க்கிறோம். -### பயிற்சிக்கான தரவுகளை தயாரிக்கவும் +### பயிற்சிக்கான தரவை தயாரிப்பது -தரவுகளை வடிகட்டி மற்றும் அளவீடு செய்வதன் மூலம் பயிற்சிக்கான தரவுகளை தயாரிக்க வேண்டும். தரவுத்தொகுப்பை தேவையான காலகட்டங்கள் மற்றும் நெடுவரிசைகளை மட்டும் உள்ளடக்க வடிகட்டவும், தரவுகளை 0,1 இடைவெளியில் project செய்ய அளவீடு செய்யவும். +இப்போது, உங்கள் தரவை வடிகட்டி மற்றும் அளவீட்டு செயல்களை செய்து பயிற்சிக்கு தயாரிக்க வேண்டும். உங்கள் தரவுத்தொகுப்பை தேவையான காலப்பகுதிகள் மற்றும் பத்திகளுக்காக மட்டும் வடிகட்டி, தரவை 0,1 இடைவெளியில் வரும் வகையில் அளவீடு செய்யவும். -1. முதலில் குறிப்பிடப்பட்ட காலகட்டங்கள் மற்றும் 'load' நெடுவரிசை மட்டும் உள்ளடக்க தரவுத்தொகுப்பை வடிகட்டவும்: +1. முதலில், மேலே கூறிய காலப்பகுதிகளை மற்றும் தேவையான 'load' பத்தி மற்றும் தேதியுடன் மட்டுமே அடக்கம் செய்யும் வகையில் தரவுத்தொகுப்பை வடிகட்டுங்கள்: ```python train = energy.copy()[(energy.index >= train_start_dt) & (energy.index < test_start_dt)][['load']] @@ -102,14 +125,14 @@ ARIMA-யுடன் வேலை செய்ய, சில முக்கி print('Test data shape: ', test.shape) ``` - தரவின் வடிவத்தை நீங்கள் காணலாம்: +தரவு வடிவத்தைப் பார்க்கலாம்: ```output Training data shape: (1416, 1) Test data shape: (48, 1) ``` -1. தரவுகளை (0, 1) வரம்பில் அளவீடு செய்யவும். +1. தரவை (0, 1) வரையறையில் அளவீடு செய்யவும். ```python scaler = MinMaxScaler() @@ -117,7 +140,7 @@ ARIMA-யுடன் வேலை செய்ய, சில முக்கி train.head(10) ``` -1. அசல் தரவுடன் ஒப்பிடும் அளவீடு செய்யப்பட்ட தரவுகளை காட்சிப்படுத்தவும்: +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) @@ -125,50 +148,50 @@ ARIMA-யுடன் வேலை செய்ய, சில முக்கி plt.show() ``` - ![அசல்](../../../../translated_images/ta/original.b2b15efe0ce92b87.webp) +![அசல்](../../../../translated_images/ta/original.b2b15efe0ce92b87.webp) - > அசல் தரவுகள் +> அசல் தரவு - ![அளவீடு செய்யப்பட்ட](../../../../translated_images/ta/scaled.e35258ca5cd3d43f.webp) +![அளவிடப்பட்டது](../../../../translated_images/ta/scaled.e35258ca5cd3d43f.webp) - > அளவீடு செய்யப்பட்ட தரவுகள் +> அளவீடு செய்யப்பட்ட தரவு -1. இப்போது அளவீடு செய்யப்பட்ட தரவுகளை சரிசெய்த பிறகு, சோதனை தரவுகளை அளவீடு செய்யவும்: +1. ஒருவேளை, நீங்கள் அளவிடப்பட்ட தரவை அளவீடு செய்து விட்டீர்கள், இப்போது சோதனை தரவையும் அளவீடு செய்யுங்கள்: ```python test['load'] = scaler.transform(test) test.head() ``` -### ARIMA-ஐ செயல்படுத்தவும் +### ARIMA ஐ செயல்படுத்துதல் -இப்போது ARIMA-ஐ செயல்படுத்த நேரம்! நீங்கள் முன்பு நிறுவிய `statsmodels` நூலகத்தைப் பயன்படுத்துவீர்கள். +ARIMA ஐ தற்போது செயல்படுத்த நேரம்! நீங்கள் முன்னர் நிறுவிய `statsmodels` நூலகத்தை இப்போது பயன்படுத்தப்போகிறீர்கள். -இப்போது சில படிகளை பின்பற்ற வேண்டும்: +இப்போது நீங்கள் பல படிகள் பின்பற்ற வேண்டும் - 1. `SARIMAX()`-ஐ அழைத்து மாதிரியின் அளவுருக்களை: p, d, மற்றும் q அளவுருக்கள், மற்றும் P, D, மற்றும் Q அளவுருக்கள் வழங்கி மாதிரியை வரையறுக்கவும். - 2. `fit()` செயல்பாட்டை அழைத்து பயிற்சி தரவுக்கான மாதிரியை தயாரிக்கவும். - 3. `forecast()` செயல்பாட்டை அழைத்து முன்னறிவிப்பு செய்யவும் மற்றும் முன்னறிவிப்பு செய்ய வேண்டிய படிகள் (the `horizon`) குறிப்பிடவும். + 1. `SARIMAX()` ஐ அழைத்து மாதிரி அளவுருக்கள் p, d, மற்றும் q, மற்றும் P, D, மற்றும் Q அளவுருக்களை கடந்து மாதிரியை வரையறுக்கவும். + 2. பயிற்சி தரவுக்கான மாதிரியை fit() செயல்பாட்டை அழைத்து தயார் செய்யவும். + 3. எண்ணிக்கையை (`horizon`) குறிப்பிட்டு `forecast()` செயல்பாட்டை அழைத்து முன்னறிவுகளை செய்யவும். -> 🎓 இந்த அளவுருக்கள் எதற்காக? ARIMA மாதிரியில், நேர்முகத்தின் முக்கிய அம்சங்களை: பருவம், போக்கு, மற்றும் சத்தம் மாதிரியாக்க உதவும் 3 அளவுருக்கள் உள்ளன: +> 🎓 இந்த அனைத்து அளவுருக்கள் எதற்காக இருக்கின்றன? ARIMA மாதிரியில் 3 அளவுருக்கள் உள்ளன, அவை நேர வரிசையின் முக்கிய அம்சங்களான காலக்கட்டி, படிமம் மற்றும் சத்தத்தை மாதிரியாக்க உதவுகின்றன. அவை: -`p`: மாதிரியின் auto-regressive அம்சத்துடன் தொடர்புடைய அளவுரு, இது *முந்தைய* மதிப்புகளை உள்ளடக்குகிறது. -`d`: மாதிரியின் integrated பகுதிக்கு தொடர்புடைய அளவுரு, இது நேர்முகத் தொடரில் *differencing* (🎓 differencing-ஐ நினைவில் கொள்ளுங்கள் 👆?) அளவை பாதிக்கிறது. -`q`: மாதிரியின் moving-average பகுதிக்கு தொடர்புடைய அளவுரு. +`p`: மாதிரியின் தானாகும் பின்விளைவு அம்சத்திற்கு தொடர்புடைய அளவுரு, இது *ஏற்றி* மதிப்புகளைச் சேர்க்கிறது. +`d`: மாதிரியின் ஒருங்கிணைந்த பகுதியுக்கான அளவுரு, இது நேர வரிசையில் *பரிசோதனை* (🎓 மேல் பரிசோதனை நினைவுகூரவும் 👆) அளவுக்கு பாதிப்பை ஏற்படுத்துகிறது. +`q`: நகரும் சராசரி பகுதியுக்கான அளவுரு. -> குறிப்பு: உங்கள் தரவுகளில் பருவ அம்சம் இருந்தால் - இந்த தரவுகளில் உள்ளது - , seasonal ARIMA மாதிரி (SARIMA) பயன்படுத்த வேண்டும். அந்த நேரத்தில், `p`, `d`, மற்றும் `q`-க்கு ஒத்த seasonal கூறுகளை விவரிக்க `P`, `D`, மற்றும் `Q` அளவுருக்கள் தேவைப்படும். +> குறிப்பு: உங்கள் தரவில் காலக்கட்டு அம்சம் இருந்தால் - இந்தப் பதிவு அதுபோலவே உள்ளது - , காலக்கட்டி ARIMA மாதிரி (SARIMA) பயன்படுத்தப்படும். அந்த நிலைமைக்கான தனிப்பட்ட அளவுருக்கள்: `P`, `D`, மற்றும் `Q` இவை `p`, `d`, மற்றும் `q` எனும் அளவுருக்களின் காலக்கட்ட அம்சங்களுக்கான இணைப்புகளாகும். -1. உங்கள் விருப்பமான horizon மதிப்பை அமைக்க தொடங்குங்கள். 3 மணி நேரம் முயற்சிக்கலாம்: +1. முதலில் உங்கள் விருப்பமான கணிப்புப் பரப்பை அமைக்கவும். எடுத்துக்காட்டாக 3 மணி நேரத்திற்கு முயற்சி செய்யுங்கள்: ```python - # Specify the number of steps to forecast ahead + # முன்னால் கணிக்க படவுள்ள படிகளின் எண்ணிக்கை குறிப்பிடுக HORIZON = 3 print('Forecasting horizon:', HORIZON, 'hours') ``` - ARIMA மாதிரியின் அளவுருக்களுக்கு சிறந்த மதிப்புகளை தேர்ந்தெடுப்பது சற்று சிக்கலானது மற்றும் நேரம் பிடிக்கும். [`pyramid` நூலகத்தின்](https://alkaline-ml.com/pmdarima/0.9.0/modules/generated/pyramid.arima.auto_arima.html) `auto_arima()` செயல்பாட்டைப் பயன்படுத்த பரிந்துரைக்கலாம். + ARIMA மாதிரி அளவுருக்களின் சிறந்த மதிப்புகளை தேர்வு செய்வது சிரமமாக இருக்கலாம், ஏனெனில் அது சுயபரிசோதி மற்றும் நேரம் எடுக்கும். நீங்கள் [`pyramid` நூலகத்தின் `auto_arima()`](https://alkaline-ml.com/pmdarima/0.9.0/modules/generated/pyramid.arima.auto_arima.html) செயல்பாட்டைப் பயன்படுத்தலாம், -1. தற்போது சில கையேடு தேர்வுகளை முயற்சித்து ஒரு நல்ல மாதிரியை கண்டறியவும். +1. இப்போது சில கையாலான தேர்வுகளைச் செய்து நல்ல மாதிரியை கண்டறிய முயற்சி செய்க. ```python order = (4, 1, 0) @@ -180,23 +203,23 @@ ARIMA-யுடன் வேலை செய்ய, சில முக்கி print(results.summary()) ``` - முடிவுகளின் ஒரு அட்டவணை அச்சிடப்படுகிறது. + முடிவுகளின் அட்டவணை அச்சிடப்படும். -நீங்கள் உங்கள் முதல் மாதிரியை உருவாக்கியுள்ளீர்கள்! இப்போது அதை மதிப்பீடு செய்ய ஒரு வழியை கண்டறிய வேண்டும். +உங்கள் முதல் மாதிரியை நீங்கள் உருவாக்கியுள்ளீர்கள்! இப்போது அதை மதிப்பீடு செய்ய வேண்டும். -### உங்கள் மாதிரியை மதிப்பீடு செய்யவும் +### உங்கள் மாதிரியை மதிப்பீடு செய்யுங்கள் -உங்கள் மாதிரியை மதிப்பீடு செய்ய, `walk forward` validation எனப்படும் முறையை செயல்படுத்தலாம். நடைமுறையில், நேர்முக மாதிரிகள் புதிய தரவுகள் கிடைக்கும் ஒவ்வொரு முறையும் மீண்டும் பயிற்சி செய்யப்படுகின்றன. இது ஒவ்வொரு நேரக்கட்டத்திலும் சிறந்த முன்னறிவிப்பை செய்ய மாதிரியை அனுமதிக்கிறது. +உங்கள் மாதிரியை மதிப்பீடு செய்ய, `walk forward` எனப்படும் சரிபார்ப்பை செய்யலாம். நடைமுறையில், நேர வரிசை மாதிரிகள் புதிய தரவு கிடைக்கும்போது மீண்டும் பயிற்சிக்கப்படுகின்றன. இது மாதிரிக்கு ஒவ்வொரு நேரத்திலும் சிறந்த முன்னறிவை செய்கிறது. -இந்த தொழில்நுட்பத்தைப் பயன்படுத்தி நேர்முகத் தொடரின் தொடக்கத்தில் இருந்து, பயிற்சி தரவுத்தொகுப்பில் மாதிரியை பயிற்சி செய்யவும். பின்னர், அடுத்த நேரக்கட்டத்தில் ஒரு முன்னறிவிப்பு செய்யவும். முன்னறிவிப்பு அறியப்பட்ட மதிப்புடன் மதிப்பீடு செய்யப்படுகிறது. பின்னர் பயிற்சி தொகுப்பு அறியப்பட்ட மதிப்பை உள்ளடக்க விரிவாக்கப்படுகிறது, மற்றும் செயல்முறை மீண்டும் செய்யப்படுகிறது. +நேர வரிசையின் ஆரம்பத்தில் இருந்து இந்த முறையை பின்பற்றி, பயிற்சி தரவுடன் மாதிரியை பயிற்றுவிக்கவும். பிறகு அடுத்த நேரத்திற்கான முன்னறிவை செய்யவும். முன்னறிவு அறிவான மதிப்புடன் ஒப்பிடப்படுகிறது. பிறகு பயிற்சி தொகுதி அந்த மதிப்பை சேர்க்கும் வகையில் விரிவடைகிறது மற்றும் செயல்முறை மீண்டும் நடக்கிறது. -> குறிப்பு: பயிற்சி தொகுப்பு சாளரத்தை நிலையாக வைத்திருப்பது பயிற்சியை மேலும் திறமையாக செய்ய உதவும், ஒவ்வொரு முறையும் நீங்கள் பயிற்சி தொகுப்பில் புதிய கண்காணிப்பைச் சேர்க்கும் போது, தொகுப்பின் தொடக்கத்தில் இருந்து கண்காணிப்பை நீக்க வேண்டும். +> குறிப்பு: பயிற்சி தொகுதி சாளரத்தை நிலையானதாக்கி வைத்திருக்க வேண்டும், இதனால் ஒவ்வொரு முறையும் புதிய மதிப்பை இணைக்கும் போது தொடக்கத்தின் மதிப்பை நீக்குங்கள். -இந்த செயல்முறை மாதிரி நடைமுறையில் எப்படி செயல்படும் என்பதை மேலும் வலுவான மதிப்பீட்டை வழங்குகிறது. இருப்பினும், இது பல மாதிரிகளை உருவாக்குவதற்கான கணினி செலவுடன் வருகிறது. தரவுகள் சிறியதாக இருந்தால் அல்லது மாதிரி எளிமையானதாக இருந்தால் இது ஏற்றுக்கொள்ளக்கூடியது, ஆனால் அளவிலான தரவுகளுக்கு இது சிக்கலாக இருக்கலாம். +இந்த செயல்முறை மாதிரி நடைமுறையில் எவ்வாறு செயல்படும் என்பதை நன்றாக மதிப்பீடு செய்ய உதவுகிறது. ஆனால், இது அதிக மாதிரிகளை உருவாக்குவதால் கணினி செலவு அதிகரிக்கிறது. தரவு சிறியதாகவும் மாதிரி எளிமையாகவும் இருந்தால் இது ஏற்றுக்கொள்ளத்தக்கது, ஆனால் பெரிய அளவில் சிக்கல் இருக்கலாம். -Walk-forward validation நேர்முக மாதிரி மதிப்பீட்டின் தங்க நிலைமையாகும் மற்றும் உங்கள் சொந்த திட்டங்களுக்கு பரிந்துரைக்கப்படுகிறது. +நடைமுறை சோதனை செயல்முறை நேர வரிசை மாதிரி மதிப்பீட்டின் சரித்திர நிலையானது மற்றும் உங்கள் சொந்த திட்டங்களுக்கு பரிந்துரைக்கப்படுகிறது. -1. ஒவ்வொரு HORIZON படிக்கட்டிற்கான சோதனை தரவுப் புள்ளியை உருவாக்கவும். +1. முதலில், ஒவ்வொரு HORIZON படியும் சரிபார்க்கும் தரவு புள்ளியை உருவாக உருவாக்குங்கள். ```python test_shifted = test.copy() @@ -216,13 +239,13 @@ Walk-forward validation நேர்முக மாதிரி மதிப் | 2014-12-30 | 03:00:00 | 0.27 | 0.30 | 0.41 | | 2014-12-30 | 04:00:00 | 0.30 | 0.41 | 0.57 | - தரவுகள் அதன் horizon புள்ளிக்கு ஏற்ப கிடைமட்டமாக மாற்றப்படுகின்றன. + தரவு அதன் கணிப்புப் புள்ளிக்கேற்ப ஆகாரமாக மாற்றப்பட்டுள்ளது. -1. சோதனை தரவுகளில் முன்னறிவிப்புகளை இந்த sliding window அணுகுமுறையைப் பயன்படுத்தி சோதனை தரவின் நீளத்திற்கு சமமான ஒரு மடக்கத்தில் செய்யவும்: +1. சோதனை தரவில் இந்த நகரும் சாளரம் முறையை ஒரு சுழற்சியில் பயன்படுத்தி கணிப்புகளைச் செய்யுங்கள்: ```python %%time - training_window = 720 # dedicate 30 days (720 hours) for training + training_window = 720 # பயிற்சிக்கு 30 நாட்கள் (720 மணி நேரம்) ஒதுக்கி வைக்கவும் train_ts = train['load'] test_ts = test_shifted @@ -241,14 +264,14 @@ 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) ``` - பயிற்சி நடைபெறுவதை நீங்கள் காணலாம்: +நீங்கள் பயிற்சி நிகழ்வை காணலாம்: ```output 2014-12-30 00:00:00 @@ -261,7 +284,7 @@ Walk-forward validation நேர்முக மாதிரி மதிப் 3 : predicted = [0.27 0.28 0.32] expected = [0.2739480752014323, 0.26812891674127126, 0.3025962399283795] ``` -1. முன்னறிவிப்புகளை உண்மையான load-ஐ ஒப்பிடவும்: +1. கணிப்புகளை உண்மை 'load' உடன் ஒப்பிடுங்கள்: ```python eval_df = pd.DataFrame(predictions, columns=['t+'+str(t) for t in range(1, HORIZON+1)]) @@ -272,28 +295,30 @@ Walk-forward validation நேர்முக மாதிரி மதிப் eval_df.head() ``` - வெளியீடு - | | | timestamp | h | prediction | actual | - | --- | ---------- | --------- | --- | ---------- | -------- | - | 0 | 2014-12-30 | 00:00:00 | t+1 | 3,008.74 | 3,023.00 | - | 1 | 2014-12-30 | 01:00:00 | t+1 | 2,955.53 | 2,935.00 | - | 2 | 2014-12-30 | 02:00:00 | t+1 | 2,900.17 | 2,899.00 | - | 3 | 2014-12-30 | 03:00:00 | t+1 | 2,917.69 | 2,886.00 | - | 4 | 2014-12-30 | 04:00:00 | t+1 | 2,946.99 | 2,963.00 | +வெளியீடு +| | | 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 | + - மணிநேர தரவின் முன்னறிவிப்பை, உண்மையான load-ஐ ஒப்பிடவும். இது எவ்வளவு துல்லியமாக உள்ளது? +அங்குள்ள கடிகார தரவின் கணிப்பைப் பார்க்கவும், அது உண்மையான 'load' உடன் ஒப்பிடுகையில் எவ்வளவு துல்லியமாக உள்ளது? -### மாதிரி துல்லியத்தைச் சரிபார்க்கவும் +### மாதிரி துல்லியத்தைப் பரிசோதிக்கவும் -முன்னறிவிப்புகளின் mean absolute percentage error (MAPE)-ஐ சோதனை செய்து உங்கள் மாதிரியின் துல்லியத்தைச் சரிபார்க்கவும். +உங்கள் மாதிரியின் துல்லியத்தை அனைத்து கணிப்புகளின் சராசரி முழுமையான சதவீத பிழை (MAPE) மூலம் சோதிக்குங்கள். -> **🧮 கணிதத்தை காட்டவும்** +> **🧮 கணிதத்தை எனக்கு காட்டு** > > ![MAPE](../../../../translated_images/ta/mape.fd87bbaf4d346846.webp) > -> [MAPE](https://www.linkedin.com/pulse/what-mape-mad-msd-time-series-allameh-statistics/) என்பது மேலே கொடுக்கப்பட்ட சமன்பாட்டின் மூலம் வரையறுக்கப்பட்ட விகிதமாக கணிப்பு துல்லியத்தை காட்ட பயன்படுத்தப்படுகிறது. உண்மையானt மற்றும் கணிக்கப்பட்டt இடையேயான வேறுபாடு உண்மையானt மூலம் வகுக்கப்படுகிறது. "இந்த கணக்கீட்டில் உள்ள முழு மதிப்பு ஒவ்வொரு கணிக்கப்பட்ட நேர புள்ளிக்கும் சேர்க்கப்பட்டு, பொருத்தப்பட்ட புள்ளிகளின் எண்ணிக்கையால் n வகுக்கப்படுகிறது." [wikipedia](https://wikipedia.org/wiki/Mean_absolute_percentage_error) +> [MAPE](https://www.linkedin.com/pulse/what-mape-mad-msd-time-series-allameh-statistics/) முன்னறிவு துல்லியத்தை மேற்கண்ட சூத்திரத்தால் கணக்கிடும் விகிதமாக பயன்படுத்தப்படுகிறது. உண்மைt மற்றும் கணிக்கப்பட்டt இடையேயான வேறுபாடு உண்மைt உடன் வகுக்கப்படுகிறது. "இந்த கணக்கீட்டில் முற்றிலும் மதிப்பு ஒவ்வொரு முன்னறிவிடப்பட்ட பண்டைய புள்ளிக்குமான கூட்டு, அத்துடன் பொருந்திய புள்ளிகளின் எண்ணிக்கையால் (n) வகுக்கப்படுகிறது." [விக்கிப்பீடியா](https://wikipedia.org/wiki/Mean_absolute_percentage_error) + -1. சமன்பாட்டை குறியீட்டில் வெளிப்படுத்தவும்: +1. குறியீட்டில் சமன்பாட்டை வெளிப்படுத்துதல்: ```python if(HORIZON > 1): @@ -301,15 +326,15 @@ Walk-forward validation நேர்முக மாதிரி மதிப் print(eval_df.groupby('h')['APE'].mean()) ``` -1. ஒரு படியின் MAPE ஐ கணக்கிடவும்: +1. ஒரு படியின் MAPE ஐ கணக்கிடுங்கள்: ```python print('One step forecast MAPE: ', (mape(eval_df[eval_df['h'] == 't+1']['prediction'], eval_df[eval_df['h'] == 't+1']['actual']))*100, '%') ``` - ஒரு படி கணிப்பு MAPE: 0.5570581332313952 % + ஒரு படி முன்னறிக்கை MAPE: 0.5570581332313952 % -1. பல படி கணிப்பு MAPE ஐ அச்சிடவும்: +1. பல படி முன்னறிக்கையின் MAPE ஐ அச்சிடுங்கள்: ```python print('Multi-step forecast MAPE: ', mape(eval_df['prediction'], eval_df['actual'])*100, '%') @@ -319,17 +344,17 @@ Walk-forward validation நேர்முக மாதிரி மதிப் 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 @@ -349,27 +374,29 @@ Walk-forward validation நேர்முக மாதிரி மதிப் plt.show() ``` - ![ஒரு நேர வரிசை மாதிரி](../../../../translated_images/ta/accuracy.2c47fe1bf15f44b3.webp) + ![ஒரு கால வரிசை மாதிரி](../../../../translated_images/ta/accuracy.2c47fe1bf15f44b3.webp) -🏆 ஒரு மிக அழகான வரைபடம், நல்ல துல்லியத்துடன் ஒரு மாதிரியை காட்டுகிறது. நல்ல வேலை! +🏆 ஒரு மிகவும் சிறந்த வரைபடம், நல்ல துல்லியம் கொண்ட மாதிரியை காட்டுகிறது. நன்றாக செயற்கை! --- ## 🚀சவால் -ஒரு நேர வரிசை மாதிரியின் துல்லியத்தை சோதிக்க பல வழிகளை ஆராயுங்கள். இந்த பாடத்தில் நாங்கள் MAPE பற்றி பேசுகிறோம், ஆனால் நீங்கள் பயன்படுத்தக்கூடிய பிற முறைகள் உள்ளதா? அவற்றை ஆராய்ந்து குறிப்பிட்டு எழுதுங்கள். [இங்கே](https://otexts.com/fpp2/accuracy.html) ஒரு பயனுள்ள ஆவணம் கிடைக்கிறது. +கால வரிசை மாதிரியின் துல்லியத்தை சோதிக்கும் வழிகளை ஆராயுங்கள். இந்த பாடத்தில் நாம் MAPE ஐ தொட touchுகின்றோம், ஆனால் நீங்கள் பயன்படுத்்தக்க பிற முறைமைகள் உள்ளதா? அவற்றை ஆராய்ந்து குறிப்பு இடுங்கள். உதவிக்குரிய ஆவணம் [இங்கே](https://otexts.com/fpp2/accuracy.html) காணலாம் -## [பாடத்திற்குப் பிந்தைய வினாடி வினா](https://ff-quizzes.netlify.app/en/ml/) +## [பாடம் முடிந்த பிறகு வினாடி வினா](https://ff-quizzes.netlify.app/en/ml/) -## மதிப்பீடு & சுயபடிப்பு +## மதிப்பாய்வு & சுயஅறிவு -இந்த பாடம் ARIMA உடன் நேர வரிசை கணிப்பின் அடிப்படைகளை மட்டுமே தொடுகிறது. [இந்த களஞ்சியத்தை](https://microsoft.github.io/forecasting/) மற்றும் அதன் பல்வேறு மாதிரி வகைகளை ஆராய்ந்து நேர வரிசை மாதிரிகளை உருவாக்கும் பிற வழிகளை அறிய உங்கள் அறிவை ஆழமாக்க நேரம் ஒதுக்குங்கள். +இந்த பாடம் ARIMA உடன் கால வரிசை முன்னறிக்கையின் அடிப்படைகளை மட்டுமே தொடுகிறது. [இந்த களஞ்சியத்தை](https://microsoft.github.io/forecasting/) மற்றும் அதன் பல்வேறு மாதிரி வகைகளை ஆராய்ந்து உங்கள் அறிவைப் பராமரிக்கவும், கால வரிசை மாதிரிகளை உருவாக்கும் பிற வழிகளைக் கற்றுக்கொள்வதும் சிறந்தது. -## பணிக்கட்டளை +## பணித் த simultaneous செயல் -[ஒரு புதிய ARIMA மாதிரி](assignment.md) +[புதிய ARIMA மாதிரி](assignment.md) --- -**குறிப்பு**: -இந்த ஆவணம் [Co-op Translator](https://github.com/Azure/co-op-translator) என்ற AI மொழிபெயர்ப்பு சேவையைப் பயன்படுத்தி மொழிபெயர்க்கப்பட்டுள்ளது. நாங்கள் துல்லியத்திற்காக முயற்சிக்கிறோம், ஆனால் தானியங்கி மொழிபெயர்ப்புகளில் பிழைகள் அல்லது தவறான தகவல்கள் இருக்கக்கூடும் என்பதை தயவுசெய்து கவனத்தில் கொள்ளுங்கள். அதன் தாய்மொழியில் உள்ள மூல ஆவணம் அதிகாரப்பூர்வ ஆதாரமாக கருதப்பட வேண்டும். முக்கியமான தகவல்களுக்கு, தொழில்முறை மனித மொழிபெயர்ப்பு பரிந்துரைக்கப்படுகிறது. இந்த மொழிபெயர்ப்பைப் பயன்படுத்துவதால் ஏற்படும் எந்த தவறான புரிதல்கள் அல்லது தவறான விளக்கங்களுக்கு நாங்கள் பொறுப்பல்ல. \ 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/ta/9-Real-World/1-Applications/README.md b/translations/ta/9-Real-World/1-Applications/README.md index 88a3562db..ad3797648 100644 --- a/translations/ta/9-Real-World/1-Applications/README.md +++ b/translations/ta/9-Real-World/1-Applications/README.md @@ -1,125 +1,155 @@ -# Postscript: இயல்புநிலை உலகில் இயந்திரக் கற்றல் +# பின்னூட்டம்: இயந்திரக் கல்வி நிஜ உலகில் -![Sketchnote: இயல்புநிலை உலகில் இயந்திரக் கற்றலின் சுருக்கம்](../../../../translated_images/ta/ml-realworld.26ee274671615577.webp) -> Sketchnote: [Tomomi Imura](https://www.twitter.com/girlie_mac) உருவாக்கியது -இந்த பாடத்திட்டத்தில், தரவுகளை பயிற்சிக்கத் தயார்படுத்தவும், இயந்திரக் கற்றல் மாதிரிகளை உருவாக்கவும் பல வழிகளை நீங்கள் கற்றுக்கொண்டீர்கள். நீங்கள் பாரம்பரிய ரிக்ரஷன், கிளஸ்டரிங், வகைப்படுத்தல், இயற்கை மொழி செயலாக்கம் மற்றும் நேரம் வரிசை மாதிரிகளை உருவாக்கினீர்கள். வாழ்த்துக்கள்! இப்போது, இதற்கெல்லாம் என்ன பயன் என்று நீங்கள் கேட்கலாம்... இந்த மாதிரிகளின் இயல்புநிலை பயன்பாடுகள் என்ன? +![நிஜ உலகில் இயந்திரக் கல்வியின் சுருக்கக் குறிப்பு ஒரு ஸ்கெட்ச்நோட்டில்](../../../../translated_images/ta/ml-realworld.26ee274671615577.webp) +> ஸ்கெட்ச்நோட் [Tomomi Imura](https://www.twitter.com/girlie_mac) என்பவரால் -தொழில்துறையில் AI மீது அதிக ஆர்வம் காணப்படுகிறது, இது பொதுவாக ஆழமான கற்றலை பயன்படுத்துகிறது. இருப்பினும், பாரம்பரிய இயந்திரக் கற்றல் மாதிரிகளுக்கு fortfarande மதிப்புள்ள பயன்பாடுகள் உள்ளன. இன்றே நீங்கள் சிலவற்றைப் பயன்படுத்தக்கூடும்! இந்த பாடத்தில், எட்டு வெவ்வேறு தொழில்துறைகள் மற்றும் பொருள்-துறை பகுதிகள் இந்த மாதிரிகளை எவ்வாறு பயன்படுத்தி தங்கள் பயன்பாடுகளை மேலும் செயல்திறன், நம்பகத்தன்மை, புத்திசாலித்தனம் மற்றும் பயனாளர்களுக்கு மதிப்புமிக்கதாக மாற்றுகின்றன என்பதை நீங்கள் ஆராய்வீர்கள். +இந்த பாடத்திட்டத்தில், நீங்கள் பயிற்சிக்காக தரவைத் தயார் செய்வதற்கும் இயந்திரக் கல்வி மாதிரிகளை உருவாக்குவதற்குமான பல வழிகளை கற்றுக்கொண்டீர்கள். நீங்கள் ஒரு தொடர் பாரம்பரிய வினைத்திறன், தொகுப்பு, வகைப்படுத்தல், இயற்கை மொழி செயலாக்கம் மற்றும் கால வரிசை மாதிரிகளை உருவாக்கி உள்ளீர்கள். வாழ்த்துகள்! இப்போது, இவையென்னைவ அடிக்கடி வினவலாம்... இந்த மாதிரிகளின் நிஜ உலக பயன்பாடுகள் என்ன? -## [பாடத்துக்கு முன் வினாடி வினா](https://ff-quizzes.netlify.app/en/ml/) +தொழிற்துறையில் பெரும்பாலும் ஆழ்ந்த கற்றலை பயன்படுத்துகின்ற AIக்கு பெரும் ஆர்வம் இருந்தாலும், பாரம்பரிய இயந்திரக் கல்வி மாதிரிகளுக்கும் இன்னும் மதிப்புமிக்க பயன்பாடுகள் உள்ளன. நீங்கள் இன்று கூட சிலவற்றை பயன்படுத்தி இருப்பீர்கள்! இந்த பாடத்தில், எட்டுப்பிரிவுகள் மற்றும் தலைமைத் துறை துறைகள் இவை மாதிரிகள் பயன்படுத்தப்படுவதால் அவற்றின் பயன்பாடுகள் மேலும் திறமையானது, நம்பகமானது, அறிவார்ந்தது மற்றும் பயனர்களுக்கு பெருமளவு மதிப்புள்ளவையாகக்கூடிய விதம் ஆராய்பீர்கள். + +## [முன்-பாடத்திட்டத் தேர்வு](https://ff-quizzes.netlify.app/en/ml/) ## 💰 நிதி -நிதி துறை இயந்திரக் கற்றலுக்கு பல வாய்ப்புகளை வழங்குகிறது. இந்த துறையில் உள்ள பல பிரச்சினைகள் ML பயன்படுத்தி மாதிரி அமைக்கவும் தீர்க்கவும் ஏற்றதாக உள்ளன. +நிதி துறையில் இயந்திரக் கல்விக்கான பல வாய்ப்புகள் உள்ளன. இந்த பகுதியின் பல பிரச்சனைகள் இயந்திரக் கல்வி பயன்படுத்தி மாதிரிகள் செய்து தீர்க்கக்கூடியவை. -### கிரெடிட் கார்டு மோசடி கண்டறிதல் +### கடன் அட்டை மோசடி கண்டறிதல் -நாம் [k-means clustering](../../5-Clustering/2-K-Means/README.md) பற்றி முன்பே கற்றுக்கொண்டோம், ஆனால் இது கிரெடிட் கார்டு மோசடிகளுடன் தொடர்புடைய பிரச்சினைகளை எவ்வாறு தீர்க்க உதவுகிறது? +நாங்கள் பாடத்தில் முன்பு [k-மீன்ஸ் தொகுப்பு](../../5-Clustering/2-K-Means/README.md) பற்றி கற்றோம், ஆனால் கடன் அட்டை மோசடியுடன் தொடர்புடைய பிரச்சனைகளை இதைப் பயன்படுத்தி எப்படி தீர்க்கலாம்? -k-means clustering கிரெடிட் கார்டு மோசடி கண்டறிதல் தொழில்நுட்பத்தில் **outlier detection** எனப்படும் முறையில் உதவுகிறது. Outliers, அல்லது தரவின் ஒரு தொகுப்பைப் பற்றிய கவனிப்புகளில் உள்ள மாற்றங்கள், கிரெடிட் கார்டு சாதாரணமாக பயன்படுத்தப்படுகிறதா அல்லது ஏதோ விசித்திரமானது நடக்கிறதா என்பதை எங்களுக்குத் தெரிவிக்க முடியும். கீழே இணைக்கப்பட்டுள்ள ஆய்வுக் கட்டுரையில், k-means clustering algorithm பயன்படுத்தி கிரெடிட் கார்டு தரவுகளை வரிசைப்படுத்தி, ஒவ்வொரு பரிவர்த்தனையையும் அது எவ்வளவு outlier ஆக தோன்றுகிறது என்பதை அடிப்படையாகக் கொண்டு ஒரு கிளஸ்டருக்கு ஒதுக்கலாம். பின்னர், மோசடிகள் மற்றும் சட்டபூர்வமான பரிவர்த்தனைகளுக்கான மிக ஆபத்தான கிளஸ்டர்களை மதிப்பீடு செய்யலாம். -[Reference](https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.680.1195&rep=rep1&type=pdf) +k-மீன்ஸ் தொகுப்பு, கடன் அட்டை மோசடி கண்டறிதலில் பயன்படுத்தப்படும் **வெளிப்படையான கண்டறிதல்** முறையில் உதவுகிறது. ஒரு தரவு தொகுப்பின் குறிப்புகள் சார்ந்த அசாதாரணங்கள் (அதாவது வெளிப்படைகள்) கடன் அட்டை சாதாரணமாக பயன்படுத்தப்படுகிறதா அல்லது ஏதேனும் விதமாக மாறுகிறதா என்று சொல்லாமல் இருக்காது. கீழுள்ள கட்டுரையில் காட்டப்பட்டுள்ளபடி, கடன் அட்டை தரவை k-மீன்ஸ் தொகுப்பு ஆல்காரிதம் மூலம் வகைப்படுத்தி ஒவ்வொரு பரிவர்த்தனையையும் வெளிப்படையாக இருக்கிற அளவுக்கு பொறுத்து ஒரு தொகுப்பிற்கு நியமிக்கலாம். பின்னர், மோசடி மற்றும் சட்டபூர்வ பரிவர்த்தனைகளுக்கு மிக ஆபத்தான தொகுப்புகளை மதிப்பீடு செய்யலாம். +[குறிப்பு](https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.680.1195&rep=rep1&type=pdf) -### செல்வ மேலாண்மை +### பணச் செயல்பாட்டு மேலாண்மை -செல்வ மேலாண்மையில், ஒரு தனிநபர் அல்லது நிறுவனம் தங்கள் வாடிக்கையாளர்களின் சார்பில் முதலீடுகளை நிர்வகிக்கிறது. அவர்களின் வேலை நீண்ட காலத்தில் செல்வத்தை நிலைநிறுத்தவும் வளர்த்தெடுக்கவும் ஆகும், எனவே நல்ல செயல்திறன் கொண்ட முதலீடுகளைத் தேர்ந்தெடுப்பது அவசியம். +பணச் செயல்பாட்டு மேலாண்மையில், ஒரு தனிநபர் அல்லது நிறுவனம் உளம் வாடிக்கையாளர்களின் பங்குகளை கையாள்கிறது. அவர்கள் பணத்தை நீண்டு வளர்த்துக் கொள்ள வேண்டியது அவசியம், ஆகையால் நன்கு செயல்படும் பங்குகளைத் தேர்ந்தெடுக்க வேண்டும். -ஒரு குறிப்பிட்ட முதலீடு எவ்வாறு செயல்படுகிறது என்பதை மதிப்பீடு செய்யும் ஒரு வழி புள்ளியியல் ரிக்ரஷன் மூலம். [Linear regression](../../2-Regression/1-Tools/README.md) ஒரு நிதி ஒரு குறிப்பிட்ட அளவீட்டுடன் ஒப்பிடும்போது எப்படி செயல்படுகிறது என்பதைப் புரிந்துகொள்ள ஒரு மதிப்புமிக்க கருவியாகும். மேலும், ரிக்ரஷனின் முடிவுகள் புள்ளியியல் ரீதியாக முக்கியத்துவம் வாய்ந்ததா அல்லது அவை வாடிக்கையாளரின் முதலீடுகளை எவ்வளவு பாதிக்குமென்று நாம் அறியலாம். கூடுதலாக, பல ரிக்ரஷன் பயன்படுத்தி உங்கள் பகுப்பாய்வை விரிவாக்கலாம், இதில் கூடுதல் ஆபத்து காரகங்களை கணக்கில் கொள்ளலாம். இது ஒரு குறிப்பிட்ட நிதிக்கு எவ்வாறு வேலை செய்யும் என்பதைப் பற்றிய உதாரணத்திற்காக, ரிக்ரஷன் பயன்படுத்தி நிதி செயல்திறனை மதிப்பீடு செய்வதற்கான கட்டுரையை கீழே பார்க்கவும். -[Reference](http://www.brightwoodventures.com/evaluating-fund-performance-using-regression/) +ஒரு குறிப்பிட்ட பங்கு எப்படி செயல்படுகிறது என்பதை மதிப்பிடுவதற்கான ஒரு வழி புள்ளியியல் வினைத்திறன். [ரேகை வினைத்திறன்](../../2-Regression/1-Tools/README.md) ஒரு நன்கு பயனுள்ள கருவி ஆகும், குறிப்பிட்ட பங்கு சில வழிகாட்டிகளுடன் எவ்வாறு செயல்படுகிறது என்பதை விளக்க. அதன் கண்ணோட்டத்தில் உள்ள பெறுபேறுகள் புள்ளியியலால் முக்கியமா இல்லையா என்பதையும், வாடிக்கையாளரின் முதலீடுகளுக்கு எவ்வளவு தாக்கம் விளைவிக்கும் என்பதையும் கருத்தில் கொள்ளலாம். மேலும் இது மேலதிகக் காரணிகளையும் எடுத்துக் கொண்டு பல வினைத்திறனை பயன்படுத்தி பகுப்பாய்வை விரிவாக்குவீர்கள். ஒரு சில பங்கு செயல்பாட்டை மதிப்பிடும் கீழ்காணும் கட்டுரையை காணவும். +[குறிப்பு](http://www.brightwoodventures.com/evaluating-fund-performance-using-regression/) ## 🎓 கல்வி -கல்வித் துறையும் ML பயன்படுத்தக்கூடிய ஒரு மிகவும் சுவாரஸ்யமான பகுதி. தேர்வுகள் அல்லது கட்டுரைகளில் மோசடி கண்டறிதல் அல்லது திருத்த செயல்முறையில் உள்ள bias (தவறான அல்லது நோக்கமற்ற) போன்ற சுவாரஸ்யமான பிரச்சினைகளைத் தீர்க்கலாம். +கல்வி துறையும் இயந்திரக் கல்வி பயன்பாட்டிற்கு மிகவும் சுவாரஸ்யமான பகுதியாகும். தேர்வுகளில் மோசடி கண்டறிதல் அல்லது திருத்துநிலை தேர்வுகளில் அனுபவங்கள் உள்ள சில உறுதிப்பத்திர பிரச்சனைகள் போன்றவை கூர்ந்து அறியப்பட வேண்டியவை. -### மாணவர்களின் நடத்தை கணிக்க +### மாணவர் நடத்தை எதிர்பார்ப்பு -[Coursera](https://coursera.com), ஒரு ஆன்லைன் திறந்த பாடநெறி வழங்குநர், பல பொறியியல் முடிவுகளை விவரிக்கும் ஒரு சிறந்த தொழில்நுட்ப வலைப்பதிவைக் கொண்டுள்ளது. இந்த வழக்குக் கற்றலில், அவர்கள் ஒரு regression line வரைந்து, குறைந்த NPS (Net Promoter Score) மதிப்பீடு மற்றும் பாடநெறி தக்கவைத்தல் அல்லது விலகல் இடையே எந்த தொடர்பும் உள்ளதா என்பதை ஆராய முயற்சித்தனர். -[Reference](https://medium.com/coursera-engineering/controlled-regression-quantifying-the-impact-of-course-quality-on-learner-retention-31f956bd592a) +ஆன்லைன் திறந்த பாடக் கோர்ஸ் வழங்குநர் [Coursera](https://coursera.com), ஒன்று தொழில்நுட்ப வலைப்பதிவில் பல பொறியியல் முடிவுகளின் விவரங்களை பகிர்கிறது. இக்கேஸ்ஸ்டடியில், நெடுங்கோட்டை சார்பு (Regression) கோடுவரிசை வரைதியாக குறைந்த NPS மதிப்பும் பாடத்திட்டத் துவக்கப்படுத்தல் அல்லது விட்டுவிடும் காரியத்துடனான தொடர்பை ஆராய்ந்தனர். +[குறிப்பு](https://medium.com/coursera-engineering/controlled-regression-quantifying-the-impact-of-course-quality-on-learner-retention-31f956bd592a) -### bias குறைப்பது +### பாகுபாட்டை குறைத்தல் -[Grammarly](https://grammarly.com), எழுத்து உதவியாளர், எழுத்துப் பிழைகள் மற்றும் இலக்கண பிழைகளை சரிபார்க்கிறது, அதன் தயாரிப்புகளில் நவீன [இயற்கை மொழி செயலாக்க அமைப்புகளை](../../6-NLP/README.md) பயன்படுத்துகிறது. அவர்கள் தங்கள் தொழில்நுட்ப வலைப்பதிவில், ML இல் பாலின bias ஐ எவ்வாறு கையாளுகிறார்கள் என்பதைப் பற்றிய ஒரு சுவாரஸ்யமான வழக்குக் கற்றலை வெளியிட்டனர், இது எங்கள் [நீதி அறிமுக பாடத்தில்](../../1-Introduction/3-fairness/README.md) நீங்கள் கற்றுக்கொண்டீர்கள். -[Reference](https://www.grammarly.com/blog/engineering/mitigating-gender-bias-in-autocorrect/) +எழுத்துப் பெருக்கி [Grammarly](https://grammarly.com) அதன் முக்கிய தயாரிப்புகளில் நுட்பமான [இயற்கை மொழி செயலாக்கக் கணினிகள்](../../6-NLP/README.md) பயன்படுத்துகிறது. அவர்கள் தொழில்நுட்ப வலைப்பதிவில் இயந்திரக் கல்வியில் பாலின பாகுபாட்டை எப்படி கடந்தனர் என்பதைப் பற்றிய சுவாரஸ்யமான வழக்குக் கணக்கை இடையே வெளியிட்டனர், இது நமது [நியாயமான தன்மையே உரையாடல்](../../1-Introduction/3-fairness/README.md) பாடத்தில் கற்றிருந்தீர்கள். +[குறிப்பு](https://www.grammarly.com/blog/engineering/mitigating-gender-bias-in-autocorrect/) ## 👜 சில்லறை வணிகம் -சில்லறை வணிகத் துறை ML பயன்படுத்துவதில் நிச்சயமாக பல நன்மைகளைப் பெற முடியும், இது வாடிக்கையாளர் பயணத்தை மேம்படுத்துவதிலிருந்து சரக்கு கையிருப்பை சிறந்த முறையில் நிர்வகிப்பதற்கு வரை. +சில்லறை வணிக துறையும் இயந்திரக் கல்வியின் உதவியில் பல பயன்பாடுகள் பெறுகிறது, உதாரணத்திற்கு சிறந்த வாடிக்கையாளர் பயணம் உருவாக்குதல் முதல் சரக்கு வைப்புக்கு அச்சரியமாக நிர்வாகம் செய்வதுவே உண்டு. -### வாடிக்கையாளர் பயணத்தை தனிப்பயனாக்குதல் +### வாடிக்கையாளர் பயண தனிப்பயன் செய்யல் -Wayfair, mööbel போன்ற வீட்டுப் பொருட்களை விற்கும் நிறுவனம், வாடிக்கையாளர்களுக்கு தங்கள் சுவை மற்றும் தேவைகளுக்கு பொருந்தக்கூடிய பொருட்களை கண்டுபிடிக்க உதவுவது மிகவும் முக்கியம். இந்த கட்டுரையில், நிறுவனத்தின் பொறியாளர்கள் ML மற்றும் NLP பயன்படுத்தி "வாடிக்கையாளர்களுக்கு சரியான முடிவுகளை வெளிப்படுத்த" எவ்வாறு உதவுகிறார்கள் என்பதை விவரிக்கிறார்கள். குறிப்பாக, அவர்களின் Query Intent Engine வாடிக்கையாளர் விமர்சனங்களில் entity extraction, classifier training, asset மற்றும் opinion extraction மற்றும் sentiment tagging ஆகியவற்றைப் பயன்படுத்தி உருவாக்கப்பட்டுள்ளது. இது ஆன்லைன் சில்லறை வணிகத்தில் NLP எவ்வாறு வேலை செய்கிறது என்பதற்கான பாரம்பரிய பயன்பாட்டின் ஒரு உதாரணமாகும். -[Reference](https://www.aboutwayfair.com/tech-innovation/how-we-use-machine-learning-and-natural-language-processing-to-empower-search) +Wayfair என்ற வீட்டு பொருட்களை விற்பனை செய்தும் நிறுவனம் வாடிக்கையாளர்களுக்கு அவர்களது விருப்பத்திற்கும் தேவைகளுக்கும் ஏற்ப பொருட்களை கண்டுபிடிக்க உதவுவதை முன்னுரிமையாகக் கொண்டு செயல்படுகிறது. இக்கட்டுரையில், நிறுவன பொறியியர்கள் எப்படி இயந்திரக் கல்வி மற்றும் இயற்கை மொழி செயலாக்கத்தை பயன்படுத்தி "வாடிக்கையாளர்களுக்கு சரியான முடிவுகளை தருகிறார்கள்" என்பதை விவரிக்கிறார்கள். குறிப்பாக, அவர்களது கேள்வி நோக்கம் இயந்திரம் உரைத் தொடர்பாளர் அடிப்படையில் அமைக்கப்பட்டுள்ளது, இது ஒன்றாக புலன் எடுக்கும், வகைப்பாடு பயிற்சி, சொத்து மற்றும் கருத்துகள் எடுக்கும் மற்றும் வாடிக்கையாளர் விமர்சனங்களில் உணர்ச்சிப் பிரிவினை குறிக்கிறது. இது ஆன்லைன் சில்லறை வணிகத்தில் இயற்கை மொழி செயலாக்கத்தின் பாரம்பரிய பயன்பாடு ஆகும். +[குறிப்பு](https://www.aboutwayfair.com/tech-innovation/how-we-use-machine-learning-and-natural-language-processing-to-empower-search) ### சரக்கு நிர்வாகம் -[StitchFix](https://stitchfix.com) போன்ற புதுமையான, துரிதமான நிறுவனங்கள், நுகர்வோருக்கு ஆடை அனுப்பும் ஒரு பெட்டி சேவை, பரிந்துரைகள் மற்றும் சரக்கு நிர்வாகத்திற்காக ML மீது மிகவும் நம்பிக்கை வைக்கின்றன. அவர்களின் ஸ்டைலிங் குழுக்கள் மற்றும் வணிகக் குழுக்கள் இணைந்து வேலை செய்கின்றன: "எங்கள் தரவுத் விஞ்ஞானிகளில் ஒருவர் ஒரு genetic algorithm ஐ tinkering செய்து, அது இன்று இல்லை ஆனால் வெற்றிகரமான ஆடை துண்டு என்னவாக இருக்கும் என்பதை கணிக்க ஆடைக்கு பயன்படுத்தினார். அதை வணிகக் குழுவிற்கு கொண்டு வந்தோம், இப்போது அவர்கள் அதை ஒரு கருவியாகப் பயன்படுத்தலாம்." -[Reference](https://www.zdnet.com/article/how-stitch-fix-uses-machine-learning-to-master-the-science-of-styling/) +உடன்படா [StitchFix](https://stitchfix.com) போன்ற முன்னேற்றமான, விரைவான நிறுவனங்கள், பெரிய அளவில் பரிந்துரைகள் மற்றும் சரக்கு நிர்வாகத்திற்காக இயந்திரக் கல்வி heavily சார்ந்துள்ளன. அவர்கள் ஸ்டைலிங் அணி வணிக அணியுடன் சேர்ந்து பணியாற்றுகின்றனர்: "எங்கள் தரவு விஞ்ஞானிகளுள் ஒருவர் மரபணு ஆல்காரிதமுடன் கோடுமைகளை குத்திக் கொண்டு அதை தாராளமாக பயன்பாட்டிற்கு கொண்டு வந்தார், இது இன்றைய இல்லை என்றெண்ணப்படும் வெற்றிகரமான ஒரு அணிகலன் ஆகும். இதனை வணிக அணிக்கு வழங்கினோம் மற்றும் இப்போது அவர்கள் அதை கருவியாக பயன்படுத்த முடிகிறது." +[குறிப்பு](https://www.zdnet.com/article/how-stitch-fix-uses-machine-learning-to-master-the-science-of-styling/) -## 🏥 சுகாதார பராமரிப்பு +## 🏥 சுகாதாரம் -சுகாதார பராமரிப்பு துறை ஆராய்ச்சி பணிகளை மேலும் செயல்திறனாகவும், logistic பிரச்சினைகளை (மீண்டும் நோயாளிகளை அனுமதித்தல் அல்லது நோய்களை பரவாமல் தடுக்குதல் போன்றவை) மேலும் சிறப்பாகவும் மாற்ற ML ஐ பயன்படுத்தலாம். +சுகாதாரத் துறையிலும் ஆய்வுக் பணிகள் மற்றும் மீண்டும் சேர்க்கப்படும் நோயாளிகள், நோய்கள் பரவுவதைத் தடுக்கும் போன்ற தீர்வுகள் போன்றவற்றைப் பயன்படுத்திக் கொள்ள இயந்திரக் கல்வி பயன்படும். -### மருத்துவ பரிசோதனைகளை நிர்வகித்தல் +### மருத்துவ சோதனை மேலாண்மை -மருந்து தயாரிப்பாளர்களுக்கு மருத்துவ பரிசோதனைகளில் toxicity ஒரு முக்கிய கவலை. எவ்வளவு toxicity ஏற்றுக்கொள்ளக்கூடியது? இந்த ஆய்வில், பல மருத்துவ பரிசோதனை முறைகளை பகுப்பாய்வு செய்ததில், மருத்துவ பரிசோதனை முடிவுகளின் வாய்ப்புகளை கணிக்க ஒரு புதிய அணுகுமுறை உருவாக்கப்பட்டது. குறிப்பாக, அவர்கள் random forest பயன்படுத்தி [classifier](../../4-Classification/README.md) உருவாக்க முடிந்தது, இது மருந்துகளின் குழுக்களை வேறுபடுத்த முடியும். -[Reference](https://www.sciencedirect.com/science/article/pii/S2451945616302914) +மருத்துவ சோதனைகளில் நச்சுக்களம் மருந்து தயாரிப்பாளர்களுக்கு பெரிய கவலை. எவ்வளவு நச்சுத்தன்மை நிலைத்திருக்க வேண்டும்? இந்த ஆய்வில், பல்வேறு மருத்துவ சோதனை முறைகளை பகுப்பாய்வு செய்தபடி புதிய முறையை உருவாக்கி சோதனை முடிவுகளை எதிர்பார்க்க முடிந்தது. குறிப்பாக, அவர்கள் ஸாதாரண காடும் [வகைப்படுத்துகை](../../4-Classification/README.md) உருவாக்குவதற்கு ராண்டம் ஃபாரெஸ்ட் பயன்படுத்தினர், இது மருந்துத் தொகுதிகளுக்கு இடையில் வேறுபாட்டைக் காண்கிறது. +[குறிப்பு](https://www.sciencedirect.com/science/article/pii/S2451945616302914) -### மருத்துவமனை மீண்டும் அனுமதி நிர்வாகம் +### மருத்துவமனை மீண்டும் சேர்க்கை மேலாண்மை -மருத்துவமனை பராமரிப்பு செலவானது, குறிப்பாக நோயாளிகள் மீண்டும் அனுமதிக்கப்பட வேண்டியபோது. இந்த ஆய்வு ஒரு நிறுவனம் [clustering](../../5-Clustering/README.md) algorithm பயன்படுத்தி மீண்டும் அனுமதிக்கப்பட வேண்டிய சாத்தியத்தை கணிக்க ML ஐ எவ்வாறு பயன்படுத்துகிறது என்பதை விவரிக்கிறது. இந்த கிளஸ்டர்கள் "மீண்டும் அனுமதிக்கப்பட வேண்டிய குழுக்களை கண்டறிய உதவுகின்றன, அவை ஒரு பொதுவான காரணத்தைப் பகிர்ந்து கொள்ளக்கூடும்." -[Reference](https://healthmanagement.org/c/healthmanagement/issuearticle/hospital-readmissions-and-machine-learning) +மருத்துவமனை பராமரிப்பு செலவுத்தெரிகிறது, குறிப்பாக நோயாளிகள் மீண்டும் சேர்க்கப்படும்போது. இந்த கட்டுரை ஒரு நிறுவனமானது எப்படி [தொகுப்பு](../../5-Clustering/README.md) ஆல்காரிதங்களைப் பயன்படுத்தி மீண்டும் சேர்க்கை சாத்தியத்தை முன்கூட்டியே கணிக்கிறது என்பதை ஆராய்கிறது. இவை "பகிரப்பட்ட காரணங்களை பகிர்ந்த கொள்ளக்கூடிய மீண்டும் சேர்க்கை குழுக்களை கண்டறிய" உதவுகின்றன. +[குறிப்பு](https://healthmanagement.org/c/healthmanagement/issuearticle/hospital-readmissions-and-machine-learning) ### நோய் மேலாண்மை -சமீபத்திய தொற்றுநோய் ML நோய்களை பரவாமல் தடுக்க உதவக்கூடிய வழிகளை வெளிச்சமிட்டுள்ளது. இந்த கட்டுரையில், ARIMA, logistic curves, linear regression மற்றும் SARIMA ஆகியவற்றின் பயன்பாட்டை நீங்கள் அடையாளம் காணலாம். "இந்த வேலை இந்த வைரஸின் பரவல் விகிதத்தை கணக்கிடவும், அதனால் மரணங்கள், மீட்பு மற்றும் உறுதிப்படுத்தப்பட்ட வழக்குகளை கணிக்கவும் முயற்சிக்கிறது, இதனால் நாங்கள் மேலும் தயாராகவும் உயிர்வாழவும் உதவலாம்." -[Reference](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7979218/) - -## 🌲 இயற்கை மற்றும் பசுமை தொழில்நுட்பம் +சமீபத்திய பரவலான பான்டமிக் இயந்திரக் கல்வி நோய் பரப்பை நிறுத்துவதில் உதவும் விதத்தை வெளிப்படுத்தியுள்ளது. இதில், ARIMA, Logistic வரிகளும், நேரியல் வினைத்திறனும், SARIMA ஆகியவை அடங்கும். "இந்த பணியால் இந்த வைரஸ் பரவுவின் வீதத்தை கணக்கிட்டு இறப்புகள், குணமடையும் விகிதங்கள் மற்றும் உறுதிப்படுத்தப்பட்ட நோயாளிகள் எண்ணிக்கையை முன்னோக்கி கணிக்க முடிகிறது ஆகையால் சிறப்பாகத் தயாராகித் தவிர்க்க உதவும்." +[குறிப்பு](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7979218/) -இயற்கை மற்றும் சூழலியல் பல நுண்ணிய அமைப்புகளை கொண்டுள்ளது, இதில் விலங்குகள் மற்றும் இயற்கையின் இடையிலான தொடர்பு முக்கியமாகிறது. இந்த அமைப்புகளை துல்லியமாக அளவிடவும், ஏதாவது நடக்கும்போது சரியான நடவடிக்கை எடுக்கவும் முக்கியம். +## 🌲 இயற்கை மற்றும் பச்சைப் தொழில்நுட்பம் -### காடுகளை நிர்வகித்தல் +இயற்கையும் சுற்றுச்சூழலையும் பல நுணுக்கமான அமைப்புகளை கொண்டுள்ளது, உயிரினங்களும் இயற்கையின் தொடர்பும் முக்கிய பங்கு வகிக்கின்றன. இக்குழப்பங்களை சரியான முறை அளவிடுவது அவசியம் மற்றும் காடு கேளிக்கை அல்லது உயிரினக் கூட்டம் குறைவதுபோன்ற ஒன்று ஏற்பட்டால் சரியான செயல்பாடு வேண்டும். -நீங்கள் [Reinforcement Learning](../../8-Reinforcement/README.md) பற்றி முன்பே கற்றுக்கொண்டீர்கள். இது இயற்கையில் முறைமைகளை கணிக்க முயற்சிக்கும் போது மிகவும் பயனுள்ளதாக இருக்க முடியும். குறிப்பாக, இது காட்டுத் தீ மற்றும் ஆக்கிரமிப்பு இனங்களின் பரவலைப் போன்ற சூழலியல் பிரச்சினைகளை கண்காணிக்க பயன்படுத்தப்படலாம். கனடாவில், ஒரு ஆராய்ச்சியாளர்கள் குழு Reinforcement Learning பயன்படுத்தி satellite images மூலம் காட்டுத் தீ முறைமைகளை உருவாக்கினர். "spatially spreading process (SSP)" எனப்படும் புதுமையான முறையைப் பயன்படுத்தி, அவர்கள் காட்டுத் தீயை "landscape இல் எந்த cell இல் agent ஆக" கற்பனை செய்தனர். "தீ ஒரு இடத்திலிருந்து எந்த நேரத்திலும் எடுக்கக்கூடிய நடவடிக்கைகளின் தொகுப்பில் வடக்கு, தெற்கு, கிழக்கு அல்லது மேற்கு பரவுதல் அல்லது பரவாமல் இருக்குதல் அடங்கும். +### காடு மேலாண்மை -இந்த அணுகுமுறை வழக்கமான RL அமைப்பை மாற்றுகிறது, ஏனெனில் தொடர்புடைய Markov Decision Process (MDP) உடனடித் தீ பரவலுக்கான முறைமைகள் ஒரு அறியப்பட்ட செயல்பாடு ஆகும்." இந்த குழு பயன்படுத்திய பாரம்பரிய algorithm களைப் பற்றிய மேலும் விவரங்களை கீழே உள்ள இணைப்பில் படிக்கவும். -[Reference](https://www.frontiersin.org/articles/10.3389/fict.2018.00006/full) +நீங்கள் முந்தைய பாடங்களில் [புதுக்கூறு கற்றல்](../../8-Reinforcement/README.md) பற்றி கற்றீர்கள். இயற்கை அமைப்புகளை எதிர்பார்க்க இது மிகவும் உதவுகிறது. குறிப்பாக, காடுகளின் தீ விபத்தினையும் நுகர்ந்த கிழங்குகளின் பரவலையும் கண்காணிக்க பயன்படுத்தப்படுகிறது. கனடாவில், ஒரு குழுக் ஆராய்ச்சியாளர்கள் ரிமோட் செட்டிலைக் காட்சிகளிலிருந்து காடுதீ விபத்து இயக்கத் துறையைக் கட்டியமைக்க புதுக்கூறு கற்றலை பயன்படுத்தினர். "பரப்பியலுக்கு இடையில் இடங்கள் ஒன்றிலிருந்து தீ பரவுவதற்கான கணிப்பு மற்றும் பிற்கால நகர்வு SSP" என்ற புதிய முறையை அவர்கள் உருவாக்கினர். "காட்டை தீ எதுவும் பரப்பாமல் தங்கு வாய்ப்பும், வடக்கு, தெற்கு, கிழக்கு மற்றும் மேற்கு நோக்கி பரப்புவதை உள்ளடக்கியது." -### விலங்குகளின் இயக்கத்தை உணருதல் +இந்த முறையில் சாதாரண புதுக்கூறு கற்றலைத் தோற்றமைப்பு மறுவடிவமைக்கப்பட்டுள்ளது ஏனென்றால், Markov தீர்மான செயல்முறை (MDP) இயல்பு தீ விரைவான பரப்புக்கான ஒரு வெளிப்படையான செயல்பாடாகும்." மேலும் இந்த குழு பயன்படுத்திய பாரம்பரிய ஆல்காரிதங்களை கீழ்காணும் இணைப்பில் படிக்கவும். +[குறிப்பு](https://www.frontiersin.org/articles/10.3389/fict.2018.00006/full) -ஆழமான கற்றல் விலங்குகளின் இயக்கங்களை காட்சிப்படுத்துவதில் புரட்சியை உருவாக்கியுள்ளதாலும் (நீங்கள் உங்கள் சொந்த [polar bear tracker](https://docs.microsoft.com/learn/modules/build-ml-model-with-azure-stream-analytics/?WT.mc_id=academic-77952-leestott) ஐ இங்கே உருவாக்கலாம்), பாரம்பரிய ML இ still இந்த பணியில் ஒரு இடம் உள்ளது. +### உயிரின இயக்கம் உணர்தல் -கிராம விலங்குகளின் இயக்கங்களை கண்காணிக்க சென்சார்கள் மற்றும் IoT இந்த வகையான காட்சித் செயலாக்கத்தைப் பயன்படுத்துகின்றன, ஆனால் தரவுகளை முன் செயலாக்க அடிப்படையான ML தொழில்நுட்பங்கள் பயனுள்ளதாக உள்ளன. உதாரணமாக, இந்த ஆய்வில், ஆடுகளின் நிலைகள் பல classifier algorithm களைப் பயன்படுத்தி கண்காணிக்கப்பட்டு பகுப்பாய்வு செய்யப்பட்டது. பக்கம் 335 இல் ROC curve ஐ நீங்கள் அடையாளம் காணலாம். -[Reference](https://druckhaus-hofmann.de/gallery/31-wj-feb-2020.pdf) +ஆழ்ந்த கற்றல் உயிரினங்களின் இயக்கத்தை கண்டு பிடிக்கும் துறையில் புரட்சி ஏற்படுத்தியிருந்தாலும் (உதாரணத்திற்கு நீங்களும் [தனது ப polar bear tracker](https://docs.microsoft.com/learn/modules/build-ml-model-with-azure-stream-analytics/?WT.mc_id=academic-77952-leestott) உருவாக்கலாம்), பாரம்பரிய இயந்திரக் கல்விக்கும் இக்கட்டளையில் இடம் உள்ளது. -### ⚡️ ஆற்றல் மேலாண்மை +பண்ணை உயிரின இயக்கங்களை கண்டறியும் கண்காணிப்பு மற்றும் இண்டெர்நெட் ஆஃப் திங்ஸ் (IoT) இந்த பாரம்பரிய மாதிரிகளுக்கு அடிப்படையில் உள்ளது, ஆனால் அடிப்படையான இயந்திரக் கல்வி முறைகள் தரவை முன் செயலாக்குவதற்கு பயன்படுகின்றன. உதாரணமாக, இந்த கட்டுரையில் செட்டில் நிற்கும் ஆடு நிலைகளை கண்காணித்து வகைப்பாட்டு ஆல்காரிதங்களுடன் பகுப்பாய்வு செய்யப்பட்டது. பக்கம் 335ல் உள்ள ROC வளைவு கிடைக்கும். +[குறிப்பு](https://druckhaus-hofmann.de/gallery/31-wj-feb-2020.pdf) -நாங்கள் [time series forecasting](../../7-TimeSeries/README.md) பாடங்களில், smart parking meters ஐ supply மற்றும் demand ஐப் புரிந்துகொண்டு ஒரு நகரத்திற்கு வருவாய் உருவாக்க பயன்படுத்தும் கருத்தை எடுத்துக்கொண்டோம். இந்த கட்டுரை smart metering அடிப்படையில், regression மற்றும் time series forecasting இணைந்து, அயர்லாந்தில் எதிர்கால ஆற்றல் பயன்பாட்டை கணிக்க உதவியது என்பதை விரிவாக விவரிக்கிறது. -[Reference](https://www-cdn.knime.com/sites/default/files/inline-images/knime_bigdata_energy_timeseries_whitepaper.pdf) +### ⚡️ சக்தி மேலாண்மை + +[கால வரிசை முன்கூட்டிச் சுட்டல்](../../7-TimeSeries/README.md) பாடங்களில், ஊர் வருமானத்தை மேம்படுத்த கூர்மையான பார்க்கிங் நோக்கிகள் பற்றிய கருத்தைக் கொண்டோம். இந்த கட்டுரை, சிறந்த பகுதியில் தொகுப்பு, வினைத்திறன் மற்றும் கால வரிசை முன்கூட்டிச் சுட்டல் ஒன்றிணைந்து அயர்லாந்தில் எதிர்கால சக்தி பயன்பாட்டை முன்னறிவிக்க உதவுகிறதென விரிவாக விவரிக்கின்றது. +[குறிப்பு](https://www-cdn.knime.com/sites/default/files/inline-images/knime_bigdata_energy_timeseries_whitepaper.pdf) ## 💼 காப்பீடு -காப்பீட்டு துறை ML ஐ பயன்படுத்தி பொருளாதார மற்றும் actuarial மாதிரிகளை உருவாக்கவும், மேம்படுத்தவும் பயன்படுத்துகிறது. +காப்பீட்டு துறையும் இயந்திரக் கல்வியை நிதி மற்றும் பரிசோதனை மாதிரிகளை கட்டமைக்கவும் மேம்படுத்தவும் பயன்படுத்துகிறது. + +### нестабильность மேலாண்மை + +MetLife, ஒரு வாழ்க்கைக் காப்பீடு வழங்குநர், அவர்கள் நிதி மாதிரிகளில் нестабильность எப்படி பகுப்பாய்வு செய்து குறைக்கின்றனர் என்பதில் தெளிவாக உள்ளனர். இந்த கட்டுரையில் நீங்கள் பைனரி மற்றும் ஒடிகோனல் வகைப்பாட்டின் காட்சியீடுகளை காணலாம். முன்கூட்டியான காட்சியீடுகளையும் உண்டு. +[குறிப்பு](https://investments.metlife.com/content/dam/metlifecom/us/investments/insights/research-topics/macro-strategy/pdf/MetLifeInvestmentManagement_MachineLearnedRanking_070920.pdf) + +## 🎨 கலை, பண்பாடு மற்றும் இலக்கியம் + +கலைகளில், உதாரணமாக பத்திரிக்கைத் துறையில், பல சுவாரஸ்ய பிரச்சனைகள் உள்ளன. போலி செய்திகளை கண்டறிதல் மிகப்பெரிய பிரச்சனை, ஏனெனில் அது மக்கள் கருத்துக்களை ప్రభావித்து ஜனநாயக அரசின்மையை கூட விளைவிக்க முடிகிறது. அருங்காட்சியகங்களும் அதன் தயாரிப்புகளுக்கு ML பயன்படுத்துவதில் பல உதவிகளை பெற முடியும், போல் பொருட்கள் மற்றும் வள திட்டமிடல் ஆகியவற்றிலும். + +### போலி செய்தி கண்டறிதல் + +இன்றைய ஊடகங்களில் போலி செய்தி கண்டறிதல் பூனை மற்றும் எலி விளையாட்டாய் மாறியுள்ளது. இந்த கட்டுரையில், பல ML முறைமைகள் இணைந்த ஒரு முறைமை சோதிக்கப்படலாம் என்றும் சிறந்த மாதிரி வேரியக்கப்படலாம் என்றும் ஆராய்ச்சியாளர்கள் பரிந்துரைக்கின்றனர்: "இந்த முறைமை இயற்கை மொழி செயலாக்கத்தை பயன்படுத்தி தரவிலிருந்து அம்சங்களை எடுத்து பின்னர் ஒரு Naive Bayes, Support Vector Machine (SVM), Random Forest (RF), Stochastic Gradient Descent (SGD), மற்றும் Logistic Regression (LR) போன்ற இயந்திரக் கல்வி வகைப்படுத்திகள் பயிற்சிக்குப் பயன்படுத்தப்படுகிறது." +[குறிப்பு](https://www.irjet.net/archives/V7/i6/IRJET-V7I6688.pdf) + +இந்த கட்டுரை, பல ML துறைகளின் பொன்மைகள் இணைந்து போலி செய்திகளை பரவுவதைத் தடக்க மற்றும் உண்மையான சேதங்களை இழக்க உதவ முடியும் என்பதைக் காட்டுகிறது; இதில் COVID சிகிச்சைகள் பற்றிய வதந்திகள் பரவுவதால் எதிர்ப்பு அக்கடைகளை தூண்டும். + +### அருங்காட்சியக இயந்திரக் கல்வி + +கலை அருங்காட்சியகங்கள் AI புரட்சியின் முன்றிலிருக்கின்றன, இதில் திரட்டல்களையும் டிஜிட்டல் வடிவமைப்புகளையும் உருவாக்குதல் மற்றும் பொருட்களுக்கு இடையேயான தொடர்புக்களை கண்டுபிடிப்பது மொசமானது ஆகிறது. [In Codice Ratio](https://www.sciencedirect.com/science/article/abs/pii/S0306457321001035#:~:text=1.,studies%20over%20large%20historical%20sources.) போன்ற திட்டங்கள் வசதியற்ற சேமிப்பகங்கள் போன்றவை (வத்திக்கான் ஆவணங்கள்) கிரகித்தல் உதவுகின்றன. ஆனால் அருங்காட்சியகத்தின் வணிகக் கூறும் ML மாதிரிகளால் நன்மை பெறுகிறது. + +உதாரணமாக, சிகாகோ கலை நிறுவனம் எந்தவாறு பார்வையாளர்கள் ஆர்வம் காட்டுகிறார்கள் மற்றும் எப்போது கண்காட்சிகளில் கலந்து கொள்வார்கள் என்பதைக் கணிக்க மாதிரிகள் கட்டியது. நோக்கம் ஒவ்வொரு முறை பயனர் அருங்காட்சியகத்தை பார்வையிடும் போதும் தனிப்பயனாக்கப்பட்ட சிறந்த பார்வையாளர் அனுபவங்களை உருவாக்குவதே. "வருட 2017-ல், மாதிரி பங்கு மற்றும் அங்கீகார மதிப்பை 1 சதவீத துல்லியத்தில் கணித்தது என்றும் சிகாகோ கலை நிறுவனத்தின் மூத்த துணைத் தலைவர் Andrew Simnick கூறுகிறார்." +[குறிப்பு](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/) -### மாறுபாட்டை நிர்வகித்தல் +## 🚀 சவால் -MetLife, ஒரு வாழ்க்கை காப்பீட்டு வழங்குநர், தங்கள் பொருளாதார மாதிரிகளில் மாறுபாட்டை எவ்வாறு பகுப்பாய்வு செய்து குறைக்கிறார்கள் என்பதை வெளிப்படையாக விவரிக்கிறது. இந்த கட்டுரையில் binary மற்றும் ordinal classification காட்சிகளை நீங்கள் காணலாம். நீங்கள் forecasting காட்சிகளையும் காணலாம். -[Reference](https://investments.metlife.com/content/dam/metlifecom/us/investments/insights/research-topics/macro-strategy/pdf/MetLifeInvestmentManagement_MachineLearnedRanking_070920.pdf) +இந்த பாடத்திட்டத்தில் கற்றுக் கொண்ட சில தொழில்நுட்பங்களைக் பயன்படுத்தி லாபம் பெறும் மற்றொரு துறையை கண்டுபிடித்து, அது இயந்திரக் கல்வியை எப்படி பயன்படுத்துகிறது என்பதை ஆராயவும். -## 🎨 கலை, கலாச்சாரம் மற்றும் இலக்கியம் -கலைகளில், உதாரணமாக பத்திரிகைத் துறையில், பல சுவாரஸ்யமான பிரச்சினைகள் உள்ளன. போலி செய்திகளை கண்டறிதல் ஒரு பெரிய பிரச்சினையாக உள்ளது, இது மக்களின் கருத்தை பாதிக்கவும், ஜனநாயகங்களை சிதைக்கவும் நிரூபிக்கப்பட்டுள்ளது. அருங்காட்சியகங்கள் கூட ML ஐ artifacts க்கு இடையிலான இணைப்புகளை கண்டறிதல் முதல் res -## [பாடத்திற்குப் பிறகு வினாடி வினா](https://ff-quizzes.netlify.app/en/ml/) +## [பாடத்துக்குப் பிறகு குறும்படம்](https://ff-quizzes.netlify.app/en/ml/) -## மதிப்பீடு & சுயபடிப்பு +## மதிப்பாய்வு மற்றும் சுயபடிப்பு -Wayfair தரவியல் அறிவியல் குழு, தங்கள் நிறுவனத்தில் எவ்வாறு இயந்திரக் கற்றலை (ML) பயன்படுத்துகிறார்கள் என்பதை விளக்கும் பல 흥미로운 வீடியோக்களை வழங்கியுள்ளது. [ஒரு பார்வை இடுங்கள்](https://www.youtube.com/channel/UCe2PjkQXqOuwkW1gw6Ameuw/videos)! +வேய்பேர் தரவு அறிவியல் குழுவிற்கு அவர்கள் நிறுவனத்தில் எவ்வாறு எம்எல் பயன்படுத்துகிறார்கள் என்பதைக் குறித்த சில சுவாரஸ்யமான காணொளிகள் உள்ளன. [பார்க்கத்](https://www.youtube.com/channel/UCe2PjkQXqOuwkW1gw6Ameuw/videos) அது மதிப்பிடத்திற்குரியது! -## பணிக்கூற்று +## பணிகள் -[ML தேடல் வேட்டை](assignment.md) +[ஒரு எம்எல் செங்கட்டிய வேடிக்கை வேட்டை](assignment.md) --- -**குறிப்பு**: -இந்த ஆவணம் [Co-op Translator](https://github.com/Azure/co-op-translator) என்ற AI மொழிபெயர்ப்பு சேவையைப் பயன்படுத்தி மொழிபெயர்க்கப்பட்டுள்ளது. நாங்கள் துல்லியத்திற்காக முயற்சிக்கின்றோம், ஆனால் தானியங்கி மொழிபெயர்ப்புகளில் பிழைகள் அல்லது தவறான தகவல்கள் இருக்கக்கூடும் என்பதை தயவுசெய்து கவனத்தில் கொள்ளுங்கள். அதன் தாய்மொழியில் உள்ள மூல ஆவணம் அதிகாரப்பூர்வ ஆதாரமாக கருதப்பட வேண்டும். முக்கியமான தகவல்களுக்கு, தொழில்முறை மனித மொழிபெயர்ப்பு பரிந்துரைக்கப்படுகிறது. இந்த மொழிபெயர்ப்பைப் பயன்படுத்துவதால் ஏற்படும் எந்த தவறான புரிதல்கள் அல்லது தவறான விளக்கங்களுக்கு நாங்கள் பொறுப்பல்ல. \ 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/ta/9-Real-World/2-Debugging-ML-Models/README.md b/translations/ta/9-Real-World/2-Debugging-ML-Models/README.md index 1af4d6d06..39a834f08 100644 --- a/translations/ta/9-Real-World/2-Debugging-ML-Models/README.md +++ b/translations/ta/9-Real-World/2-Debugging-ML-Models/README.md @@ -1,149 +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) மதிப்பீடு செய்யவும். +முன்னணி, தயவுசெய்து மீள்தரவேற்றலுக்கு [பொறுப்பான AI கருவிகள் மேம்படுத்துநர்களுக்கான](https://www.microsoft.com/ai/ai-lab-responsible-ai-dashboard) பார்த்துக் கொள்ளவும். -> ![பொறுப்பான AI கருவிகள் பற்றிய GIF](../../../../9-Real-World/2-Debugging-ML-Models/images/rai-overview.gif) +> ![பொறுப்பான AI கருவிகள் குறித்த கிஃப்](../../../../9-Real-World/2-Debugging-ML-Models/images/rai-overview.gif) ## பிழை பகுப்பாய்வு -பாரம்பரிய மாடல் செயல்திறன் அளவுகோள்கள் துல்லியத்தை அளவிட பயன்படுத்தப்படுகின்றன, அவை பெரும்பாலும் சரியான மற்றும் தவறான கணிப்புகளின் அடிப்படையில் கணக்கீடுகள். உதாரணமாக, ஒரு மாடல் 89% துல்லியமாக உள்ளது மற்றும் 0.001 பிழை இழப்புடன் உள்ளது என்று தீர்மானித்தல் நல்ல செயல்திறனாகக் கருதப்படலாம். பிழைகள் உங்கள் அடிப்படை தரவுத்தொகுப்பில் ஒரே மாதிரியான முறையில் பகிரப்படவில்லை. நீங்கள் 89% மாடல் துல்லிய மதிப்பெண் பெறலாம், ஆனால் மாடல் 42% நேரத்தில் தோல்வியடையும் உங்கள் தரவின் பல பகுதிகளை கண்டறியலாம். குறிப்பிட்ட தரவுக் குழுக்களுடன் இந்த தோல்வி முறைமைகளின் விளைவுகள் நியாயம் அல்லது நம்பகத்தன்மை பிரச்சினைகளை உருவாக்கலாம். மாடல் எங்கு நன்றாக செயல்படுகிறது அல்லது இல்லை என்பதைப் புரிந்து கொள்வது அவசியம். உங்கள் மாடலில் அதிக தவறுகள் உள்ள தரவுப் பகுதிகள் முக்கியமான தரவுக் குழுவாக இருக்கலாம். +சரியான எதிர்பார்ப்புகளை கொண்டு துல்லியத்தை கணக்கிடுவதில் பயன்படுத்தப்படும் பாரம்பரிய மாதிரி செயல்திறன் அளவுகோல்கள் பெரும்பாலும் துல்லியமான மற்றும் தவறான முன்னறிவிப்புகளின் அடிப்படையில் கணக்கிடப்படுகின்றன. உதாரணமாக, மாதிரி 89% துல்லியத்துடன் 0.001 பிழை இழப்பைக் கொண்டுள்ளது என நிரூபித்தால் நல்ல செயல்திறன் என கருதலாம். பிழைகள் பொதுவாக உங்கள் அடிப்படை தரவு தொகுப்பில் சமமாக பரவவில்லையென்று காணப்படுகின்றன. 89% மாதிரி துல்லியத்தைப் பெற்றாலும், மாதிரி சில தரவு பிரிவுகளில் 42% தவறான முன்னறிவிப்பைச் செய்யும் என்று கண்டுபிடிக்கலாம். சில தரவு குழுக்களுடன் இந்த தோல்வி முறை ஏற்பட்டால், அது நியாயம் அல்லது நம்பகத்தன்மை பிரச்சனைகளுக்கு வழிவகுக்கும். மாதிரி நன்றாக செயல்படுகையில் அல்லது செய்யாமல் இருக்கும் பகுதிகளை புரிந்துகொள்ளுவது அவசியம். உங்கள் மாதிரியில் அதிக தவறுகள் உள்ள இடங்கள் முக்கியமான தரவு மக்கள் தொகை என 판்பட்டுக் கொள்ளப்படலாம். -![மாடல் பிழைகளை பகுப்பாய்வு மற்றும் சரிசெய்தல்](../../../../translated_images/ta/ea-error-distribution.117452e1177c1dd8.webp) +![மாதிரி பிழைகளை பகுப்பாய்வு செய்து பிழை தீர்வு](../../../../translated_images/ta/ea-error-distribution.117452e1177c1dd8.webp) -RAI டாஷ்போர்டில் உள்ள பிழை பகுப்பாய்வு கூறு மாடல் தோல்வி பல்வேறு குழுக்களுக்கிடையே எவ்வாறு பகிரப்பட்டுள்ளது என்பதை மரக்காட்சி மூலம் விளக்குகிறது. இது உங்கள் தரவுத்தொகுப்பில் அதிக பிழை விகிதம் உள்ள அம்சங்கள் அல்லது பகுதிகளை அடையாளம் காண உதவுகிறது. மாடலின் தவறான கணிப்புகள் எங்கு அதிகமாக உள்ளன என்பதைப் பார்த்து, நீங்கள் அடிப்படை காரணத்தை ஆராயத் தொடங்கலாம். மேலும், தரவுக் குழுக்களை உருவாக்கி அவற்றில் பகுப்பாய்வு செய்யலாம். இந்த தரவுக் குழுக்கள் பிழை சரிசெய்தல் செயல்முறையில் உதவுகின்றன, ஏனெனில் ஒரு குழுவில் மாடல் செயல்திறன் நல்லது, ஆனால் மற்றொன்றில் தவறாக உள்ளது என்பதை தீர்மானிக்க உதவுகின்றன. +RAI டாஷ்போர்டில் உள்ள பிழை பகுப்பாய்வு கூறு பல கொஹார்ட்களில் மாதிரி தோல்வி எவ்வாறு பரவியுள்ளது என்பதை மரம் வடிவமாக காட்டுகிறது. இது குறிப்பிட்ட அம்சங்கள் அல்லது அதிக பிழை வீதம் உள்ள பகுதிகளை கண்டறிய உதவுகிறது. மாதிரியின் அதிக தவறுகள் எங்கு உள்ளன என்று பார்த்து, மூல காரணத்தைக் கண்டுபிடிக்க தொடங்கலாம். கொஹார்ட்கள் உருவாக்கி அவற்றில் பகுப்பாய்வு செய்யவும் முடியும். அந்த கொஹார்ட்கள் மூலம் ஒரு பகுதியின் செயல்திறன் ஏன் நல்லதும் மற்றொன்றின் விரோதமானதும் என்பதை தெரிந்து கொள்ளலாம். ![பிழை பகுப்பாய்வு](../../../../translated_images/ta/ea-error-cohort.6886209ea5d438c4.webp) -மரக்காட்சியில் உள்ள காட்சி குறியீடுகள் பிரச்சினை பகுதிகளை விரைவாக அடையாளம் காண உதவுகின்றன. உதாரணமாக, மரக்கிளை ஒரு ஆழமான சிவப்பு நிறத்துடன் இருந்தால், பிழை விகிதம் அதிகமாக இருக்கும். +மரம் வரைபடத்தில் உள்ள காட்சி குறியீடுகள் சிக்கல் உள்ள பகுதிகளை விரைவில் கண்டுபிடிக்க உதவுகின்றன. உதாரணமாக, ஒரு மர மூலக்கூடியின் சிவப்பு நிறம் காÇழுவ காட்டின் நிறம் ஆழமா இருந்தால், அதற்கு பிழை வீதம் அதிகம் என்று அர்த்தம். -ஹீட் மேப் என்பது மற்றொரு காட்சி செயல்பாடு, இது ஒரு அல்லது இரண்டு அம்சங்களைப் பயன்படுத்தி பிழை விகிதத்தை ஆராய்ந்து, மாடல் பிழைகளுக்கு காரணமாக இருக்கும் அம்சங்களை முழு தரவுத்தொகுப்பில் அல்லது குழுக்களில் கண்டறிய உதவுகிறது. +ஹீட் மேப் என்பது மாதிரி பிழைகளுக்கு பங்கேற்பு அளிக்கும் ஒரு அம்சத்தை அல்லது இரண்டு அம்சங்களை பயன்படுத்தி பிழை வீதத்தை ஆராயஒரு வேறொரு காட்சி உதவி. -![பிழை பகுப்பாய்வு ஹீட் மேப்](../../../../translated_images/ta/ea-heatmap.8d27185e28cee383.webp) +![பிழை பகுப்பாய்வு ஹீட்மேப்](../../../../translated_images/ta/ea-heatmap.8d27185e28cee383.webp) -பிழை பகுப்பாய்வை நீங்கள் பயன்படுத்த வேண்டிய சூழல்கள்: +பிழை பகுப்பாய்வை நீங்கள் பயன்படுத்த வேண்டும் எனின்: -* மாடல் தோல்விகள் உங்கள் தரவுத்தொகுப்பில் மற்றும் பல உள்ளீடு மற்றும் அம்ச பரிமாணங்களில் எவ்வாறு பகிரப்பட்டுள்ளன என்பதை ஆழமாகப் புரிந்து கொள்ளுங்கள். -* தொகுத்த செயல்திறன் அளவுகோள்களை உடைத்து, தவறான குழுக்களை தானாகவே கண்டறிந்து, உங்கள் இலக்கு முறைமைகள் தொடர்பான தகவல்களை வழங்குங்கள். +* மாதிரி தோல்விகள் தரவு தொகுப்பு மற்றும் பல உள்ளீடு மற்றும் அம்ச பரிமாணங்களில் எப்போதெல்லாம் எங்கு பரவுகின்றன என்பதை ஆழ்ந்த புரிதல் பெற. +* கூட்டு செயல்திறன் அளவுகோல்களை உடைத்து பிழை உள்ள கொஹார்ட்களை தானாக கண்டறிந்து நோக்கிச் செயற்படுத்த அங்கீகாரம் பெறுதல். -## மாடல் மேற்பார்வை +## மாதிரி அவலோசனை -ஒரு இயந்திரக் கற்றல் மாடலின் செயல்திறனை மதிப்பீடு செய்வது அதன் நடத்தை பற்றிய முழுமையான புரிதலைப் பெற வேண்டும். இது பிழை விகிதம், துல்லியம், மீட்டெடுப்பு, துல்லியமான கணிப்பு அல்லது MAE (Mean Absolute Error) போன்ற பல அளவுகோள்களை மதிப்பீடு செய்வதன் மூலம் அடைய முடியும். ஒரு செயல்திறன் அளவுகோள் சிறப்பாகத் தோன்றலாம், ஆனால் மற்றொரு அளவுகோளில் தவறுகள் வெளிப்படலாம். மேலும், முழு தரவுத்தொகுப்பில் அல்லது குழுக்களில் அளவுகோள்களை ஒப்பிட்டு வேறுபாடுகளை கண்டறிவது மாடல் எங்கு நன்றாக செயல்படுகிறது அல்லது இல்லை என்பதை வெளிச்சமிட உதவுகிறது. இது குறிப்பாக உணர்திறன் கொண்ட அம்சங்கள் மற்றும் உணர்திறன் இல்லாத அம்சங்கள் (உதாரணமாக, நோயாளியின் இனம், பாலினம் அல்லது வயது) ஆகியவற்றின் மத்தியில் மாடலின் செயல்திறனைப் பார்ப்பதில் முக்கியம், மாடலின் சாத்தியமான அநியாயத்தை வெளிப்படுத்த உதவுகிறது. உதாரணமாக, உணர்திறன் கொண்ட அம்சங்களைக் கொண்ட குழுவில் மாடல் அதிக பிழைகளைச் செய்யும் என்பதை கண்டறிதல், மாடலின் சாத்தியமான அநியாயத்தை வெளிப்படுத்தலாம். +இயந்திரக் கற்பிப்பு மாதிரியின் செயல்திறனை மதிப்பாய்வு செய்வதற்கு அதன் நடத்தையை முழுமையாகப் புரிந்து கொள்வது தேவை. பிழை வீதம், துல்லியம், மீள்கூறு, துல்லியத்தன்மை, அல்லது MAE (சராசரி முழுமையான பிழை) போன்ற பல அளவுகோல்களை மதிப்பீடு செய்து செயல்திறன் வேறுபாடுகளை கண்டறியலாம். ஒரு செயல்திறன் அளவுகோல் சிறப்பாக தோன்றினாலும் மற்றொன்று பிழைகளை வெளிப்படுத்தலாம். மேலும், முழு தரவு தொகுப்பிலும் கொஹார்ட்களிலும் வேறுபாடுகளை ஒப்பிட்டு பார்க்க பாதுகாப்பானது, அது மாதிரி எங்கு நன்றாக செயல்படுகிறது அல்லது இல்லை என்பதை வெளிச்சம் வீசும். இதற்கு முக்கியம், உணர்ச்சி வாய்ந்த மற்றும் உணர்ச்சி இல்லாத அம்சங்களின் இடையேயான வேறுபாடுகளை காண்பது (எ.கா., நோயாளியின் இனப் பாரம்பரியம், பாலினம் அல்லது வயது) மாதிரியில் உள்ள சாத்தியமான நியாயமற்ற தன்மையை வெளிப்படுத்த. -RAI டாஷ்போர்டின் மாடல் மேற்பார்வை கூறு, தரவுக் குழுக்களில் மாடலின் நடத்தை ஒப்பிடுவதற்கான திறனைக் கொடுப்பதுடன், குழுவில் தரவின் பிரதிநிதித்துவத்தின் செயல்திறன் அளவுகோள்களை பகுப்பாய்வு செய்ய உதவுகிறது. +RAI டாஷ்போர்டின் மாதிரி அவலோசனை கூறு, ஒரு கொஹார்டில் தரவு பிரதிநிதித்துவ செயல்திறன் அளவுகோல்களை மட்டும் அல்லாமல், வேறுபட்ட கொஹார்ட்களுக்கு இடையேயான மாதிரி நடத்தையை ஒப்பிடும் திறனையும் அளிக்கிறது. -![டாஷ்போர்டில் மாடல் மேற்பார்வை - தரவுக் குழுக்கள்](../../../../translated_images/ta/model-overview-dataset-cohorts.dfa463fb527a35a0.webp) +![தரவு கொஹார்ட்கள் - RAI டாஷ்போர்டில் மாதிரி அவலோசனை](../../../../translated_images/ta/model-overview-dataset-cohorts.dfa463fb527a35a0.webp) -கூறின் அம்ச அடிப்படையிலான பகுப்பாய்வு செயல்பாடு, குறிப்பிட்ட அம்சத்தில் உள்ள தரவின் துணைக்குழுக்களை குறுகிய அளவில் அடையாளம் காண உதவுகிறது. உதாரணமாக, டாஷ்போர்டில் உள்ள உள்ளமை intelligence, பயனர் தேர்ந்தெடுத்த அம்சத்திற்கான குழுக்களை தானாக உருவாக்குகிறது (உதாரணமாக, *"time_in_hospital < 3"* அல்லது *"time_in_hospital >= 7"*). இது ஒரு பயனருக்கு பெரிய தரவுக் குழுவிலிருந்து ஒரு குறிப்பிட்ட அம்சத்தை தனிமைப்படுத்தி, மாடலின் தவறான முடிவுகளின் முக்கியமான தாக்கம் உள்ளதா என்பதைப் பார்க்க உதவுகிறது. +கூறின் அம்ச அடிப்படையிலான பகுப்பாய்வு செயல்பாடு, குறிப்பிட்ட அம்சத்தில் உள்ள தரவு உபகுழுக்களை துல்லியமாக சிதறல் அளவிட உதவுகிறது. உதாரணமாக, டாஷ்போர்டில் ஏற்கனவே உள்ள நுண்ணறிவு, பயனர் தேர்ந்தெடுத்த அம்சம் (உதாரணமாக *"time_in_hospital < 3"* அல்லது *"time_in_hospital >= 7"*) ஆகியவற்றுக்காக தானாகவே கொஹார்ட்களை உருவாக்க முடியும். இது ஒரு பெரிய தரவு குழுவிலிருந்து குறிப்பிட்ட ஒரு அம்சத்தை தனிமைப்படுத்தி, மாதிரியின் தவறான வெளியீடுகளுக்கு அதன் தாக்கம் அதிகமானதா என்று தெரிந்து கொள்வதற்கு உதவுகிறது. -![டாஷ்போர்டில் மாடல் மேற்பார்வை - அம்சக் குழுக்கள்](../../../../translated_images/ta/model-overview-feature-cohorts.c5104d575ffd0c80.webp) +![அம்ச கொஹார்ட்கள் - RAI டாஷ்போர்டில் மாதிரி அவலோசனை](../../../../translated_images/ta/model-overview-feature-cohorts.c5104d575ffd0c80.webp) -மாடல் மேற்பார்வை கூறு இரண்டு வகையான வேறுபாடு அளவுகோள்களை ஆதரிக்கிறது: +மாதிரி அவலோசனை கூறு இரு வகையான வேறுபாடு அளவுகோல்களை ஆதரிக்கிறது: -**மாடல் செயல்திறனில் வேறுபாடு**: இந்த அளவுகோள்களின் தொகுப்புகள், தரவின் துணைக்குழுக்களுக்கிடையே தேர்ந்தெடுக்கப்பட்ட செயல்திறன் அளவுகோளின் மதிப்புகளில் உள்ள வேறுபாட்டை (மாறுபாடு) கணக்கிடுகின்றன. சில உதாரணங்கள்: +**மாதிரி செயல்திறன் வேறுபாடு**: இந்த அளவுகோல்கள் தேர்வு செய்யப்பட்ட செயல்திறன் அளவுகோலின் மதிப்புகளில் தரவு உபகுழுக்களுக்கிடையேயான வேறுபாட்டை (வித்தியாசத்தை) கணக்கிடுகின்றன. இதற்கு சில உதாரணங்கள்: -* துல்லிய விகிதத்தில் வேறுபாடு -* பிழை விகிதத்தில் வேறுபாடு -* துல்லியமான கணிப்பில் வேறுபாடு -* மீட்டெடுப்பில் வேறுபாடு -* சராசரி முழுமையான பிழையில் (MAE) வேறுபாடு +* துல்லிய வீதத்தில் வேறுபாடு +* பிழை வீதத்தில் வேறுபாடு +* துல்லியத்தில் வேறுபாடு +* மீள்கூறில் வேறுபாடு +* சராசரி முழுமையான பிழை (MAE) இல் வேறுபாடு -**தேர்வு விகிதத்தில் வேறுபாடு**: இந்த அளவுகோள், தரவின் துணைக்குழுக்களுக்கிடையே தேர்வு விகிதத்தில் (சிறந்த கணிப்பு) உள்ள வேறுபாட்டை கொண்டுள்ளது. இதற்கான ஒரு உதாரணம் கடன் ஒப்புதல் விகிதங்களில் வேறுபாடு. தேர்வு விகிதம் என்பது ஒவ்வொரு வகுப்பில் உள்ள தரவுப் புள்ளிகளின் பகுதி (இரட்டை வகைப்பாட்டில்) அல்லது கணிப்பு மதிப்புகளின் பகிர்மானம் (மறுமதிப்பீட்டில்). +**தேர்வு வீதத்தில் வேறுபாடு**: இந்த அளவுகோல் உபகுழுக்களில் தேர்வு வீதம் (நன்மைக்குரிய முன்னறிவிப்பு) இடையேயான வித்தியாசத்தைக் கொண்டுள்ளது. உதாரணமாக கடன் அனுமதி வீதத்தில் வேறுபாடு. தேர்வு வீதம் என்பது ஒவ்வொரு வகுப்பிலும் தரவு புள்ளிகள் 1 ஆக வகைப்படுத்தப்படுகிற அளவுகோல் (இரு வகைப்படுத்தலில்) அல்லது முன்னறிவிப்பு மதிப்புகளின் விநியோகம் (மீளாடல் முறையில்). ## தரவு பகுப்பாய்வு -> "தரவை நீண்ட நேரம் சித்திரவதை செய்தால், அது எதற்கும் ஒப்புக்கொள்ளும்" - ரொனால்ட் கோஸ் +> "நீங்கள் தரவை நீண்ட நேரம் வலித்து பேச வைக்கின்றீர்கள் என்றால் அது எதை வேண்டுமானாலும் ஒப்புக்கொள்ளும்" - ரொனால்ட் கோஸ் -இந்த கூற்று மிகுந்ததாகத் தோன்றினாலும், தரவை எந்த முடிவையும் ஆதரிக்க மாற்றம் செய்ய முடியும் என்பது உண்மை. இந்த மாற்றம் சில நேரங்களில் தவறுதலாக நடக்கலாம். மனிதர்களாக, நமக்கு அனைவருக்கும் பாகுபாடு உள்ளது, மேலும் தரவுகளில் பாகுபாட்டை அறிமுகப்படுத்தும் போது அதை உணர்ந்து கொள்ளுவது கடினம். AI மற்றும் இயந்திரக் கற்றலில் நியாயத்தை உறுதிப்படுத்துவது இன்னும் ஒரு சிக்கலான சவாலாகவே உள்ளது. +இந்த கூற்றானது கடுமைபடியாக தெரிகிறது என்றாலும், தரவை எந்த முடிவையும் ஆதரிக்க ஏதாவது வகையில் மோசடியாக மாற்றலாம் என்பது உண்மை. சில சமயங்களில் இப்படிப் பண்படுத்தல் 意 危யல்லாமல் நிகழலாம். மனிதர்களுக்கு ஒவ்வொருவருக்கும் மதிப்பிலக்கணம் உள்ளது, மற்றும் எப்பொழுதெல்லாம் தரவில் மதிப்பிலக்கணம் கொண்டுவரப்படுகிறதென்று அப்படியே உணர்வது கடினம். AI மற்றும் இயந்திரக் கற்பிப்பில் நியாயத்தை உறுதி செய்வது சிக்கலான சவால் ஆகின்றது. -தரவு பாரம்பரிய மாடல் செயல்திறன் அளவுகோள்களுக்கு ஒரு பெரிய மறைமுகமாகும். உங்களுக்கு அதிக துல்லிய மதிப்பெண்கள் இருக்கலாம், ஆனால் இது உங்கள் தரவுத்தொகுப்பில் உள்ள அடிப்படை தரவுப் பாகுபாட்டை எப்போதும் பிரதிபலிக்காது. உதாரணமாக, ஒரு நிறுவனத்தில் நிர்வாக நிலைகளில் 27% பெண்கள் மற்றும் 73% ஆண்கள் உள்ள பணியாளர்களின் தரவுத்தொகுப்பில், இந்த தரவின் அடிப்படையில் பயிற்சி அளிக்கப்பட்ட வேலைவாய்ப்பு விளம்பர AI மாடல், மூத்த நிலை வேலைவாய்ப்புகளுக்கு பெரும்பாலும் ஆண் பார்வையாளர்களை இலக்காகக் கொண்டிருக்கலாம். இந்த சமநிலையற்ற தன்மை மாடலின் கணிப்பை ஒரு பாலினத்திற்கு ஆதரவாக சாய்த்தது. இது AI மாடலில் பாலின பாகுபாடு உள்ள ஒரு நியாய பிரச்சினையை வெளிப்படுத்துகிறது. +பாரம்பரிய மாதிரி செயல்திறன் அளவுகோல்கள் தரவு பக்கவிளைவுகளில் பெரும் புறக்கணிப்பு கண்டிருக்கின்றன. உங்களுக்கு உயர் துல்லியம் மதிப்பெண்கள் கிடைக்கலாம், ஆனாலும் அது உங்கள் தரவு தொகுப்பில் உள்ள அடிப்படை மதிப்பிலக்கணத்தை ஏற்படுத்தக்கூடும் என்று வேண்டாம். உதாரணமாக, ஒரு நிறுவனத்தில் பணியாளர்களின் தொகுப்பில் 27% பெண்கள் நிர்வாகப் பணிகளில் மற்றும் 73% ஆண்கள் அதே நிலையில் இருந்தால், அந்த தரவின் அடிப்படையில் பயிற்சி பெறுமாயிருக்கும் வேலைவாய்ப்பு AI மாதிரி பெரும்பாலும் ஆண் பார்வையாளர்களை இலக்கு செய்யும். இந்த தரவு சமநிலைமையின்மை மாதிரியின் முன்னறிவிப்பை ஓர் பாலினத்திற்கு மேலோட்டமாக சாய்க்கிறது. இது AI மாதிரியில் பாலின மதிப்பிலக்கணம் என்ற நியாய பிரச்சனையை வெளிப்படுத்துகிறது. -RAI டாஷ்போர்டில் உள்ள தரவு பகுப்பாய்வு கூறு, தரவுத்தொகுப்பில் அதிக மற்றும் குறைவான பிரதிநிதித்துவம் உள்ள பகுதிகளை அடையாளம் காண உதவுகிறது. இது தரவின் சமநிலையற்ற தன்மை அல்லது குறிப்பிட்ட தரவுக் குழுவின் பிரதிநிதித்துவம் இல்லாமை காரணமாக பிழைகள் மற்றும் நியாய பிரச்சினைகளை அறிய உதவுகிறது. இது பயனர்களுக்கு கணிப்பிடப்பட்ட மற்றும் உண்மையான முடிவுகள், பிழை குழுக்கள் மற்றும் குறிப்பிட்ட அம்சங்களை அடிப்படையாகக் கொண்ட தரவுத்தொகுப்புகளை காட்சிப்படுத்தும் திறனை வழங்குகிறது. சில நேரங்களில் குறைவாக பிரதிநிதித்துவம் செய்யப்பட்ட தரவுக் குழுவை கண்டறிதல், மாடல் நன்றாக கற்றுக்கொள்ளவில்லை என்பதை வெளிப்படுத்தலாம், இதனால் அதிக தவறுகள் ஏற்படுகின்றன. தரவுப் பாகுபாடு கொண்ட மாடல் என்பது ஒரு நியாய பிரச்சினை மட்டுமல்ல, மாடல் உள்ளடக்கமானது அல்லது நம்பகமானது அல்ல என்பதை காட்டுகிறது. +RAI டாஷ்போர்டில் உள்ள தரவு பகுப்பாய்வு கூறு தரவு தொகுதியில் அதிகம் அல்லது குறைவாக பிரதிநிதித்துவம் உள்ள பகுதிகளை கண்டுபிடிக்க உதவுகிறது. இது பிழை மற்றும் நியாய பிரச்சனைகளின் மூலக்காரணத்தை கண்டுபிடிக்க உதவுகிறது, குறிப்ப particular் குறிப்பிட்ட தரவு சமூகத்தின் பிரதிநிதித்துவம் குறைவாக அல்லது அளவுக்கு அதிகமாக இருக்கும்போது. இது பயனர்களுக்கு முன்னறிவு மற்றும் உண்மையான விளைவுகளின் அடிப்படை மற்றும் பிழைக் குழுக்களை, குறிப்பிட்ட அம்சங்களை அடிப்படையாக வைத்து தரவு தொகுப்பினை காட்சிப்படுத்தும் திறனை வழங்குகிறது. சில சமயங்களில் குறைந்த பிரதிநிதித்துவம் உள்ள தொடர்பற்ற தரவு குழு மாடல் நன்றாக கற்றுக்கொள்ளவில்லை என்பதையும் வெளிப்படுத்தும், அதனால் அதிக பிழைகள் ஏற்பட்டிருக்கலாம். ஒரு மாதிரி தரவு மதிப்பிலக்கணம் கொண்டிருந்தால், அது நியாய பிரச்சனை மட்டுமல்ல, அது மாதிரி ஒருங்கிணைந்ததும் நம்பகமானதுமில்லாததுமானது என்பதையும் காட்டும். ![RAI டாஷ்போர்டில் தரவு பகுப்பாய்வு கூறு](../../../../translated_images/ta/dataanalysis-cover.8d6d0683a70a5c1e.webp) -தரவு பகுப்பாய்வை நீங்கள் பயன்படுத்த வேண்டிய சூழல்கள்: -* உங்கள் தரவுத்தொகுப்பின் புள்ளிவிவரங்களை ஆராய்ந்து, உங்கள் தரவை பல பரிமாணங்களில் (குழுக்களாகவும் அழைக்கப்படும்) துண்டிக்க பல வடிகட்டிகளைத் தேர்ந்தெடுக்கவும். -* உங்கள் தரவுத்தொகுப்பின் பகிர்மானத்தை பல குழுக்களிலும் அம்சக் குழுக்களிலும் புரிந்து கொள்ளுங்கள். -* நியாயம், பிழை பகுப்பாய்வு மற்றும் காரணம் தொடர்பான உங்கள் கண்டுபிடிப்புகள் (மற்ற கூறுகளிலிருந்து பெறப்பட்டவை) உங்கள் தரவுத்தொகுப்பின் பகிர்மானத்தின் விளைவாக உள்ளதா என்பதை தீர்மானிக்கவும். -* பிரதிநிதித்துவ பிரச்சினைகள், லேபிள் சத்தம், அம்ச சத்தம், லேபிள் பாகுபாடு மற்றும் இதே போன்ற காரணங்களால் ஏற்படும் பிழைகளை சரிசெய்ய மேலும் தரவை எங்கு சேகரிக்க வேண்டும் என்பதை முடிவு செய்யவும். +தரவு பகுப்பாய்வை நீங்கள் பயன்படுத்த வேண்டும் எனில்: + +* வேறுபட்ட வடிகட்டிகளை தேர்ந்தெடுத்து உங்கள் தரவை பல பரிமாணங்களாக (கொஹார்ட்களாக) பிரித்து தரவுத் புள்ளிவிவரங்களை ஆராயுங்கள். +* உங்கள் தரவு தொகுப்பின் விநியோகம் வேறுபட்ட கொஹார்ட்களிலும் அம்சக் குழுக்களிலும் எப்படிக் இருக்கும் என்பதை புரிந்துகொள்ளுங்கள். +* உங்கள் கண்டுபிடிப்புகள் (நியாயம், பிழை பகுப்பாய்வு, மற்றும் காரணப்பூர்வம்) பிற டாஷ்போர்டு கூறுகளிலிருந்து பெறப்பட்டாலும் அவை உங்கள் தரவு விநியோகம் காரணமா என்பதை நிரூபிக்கவும். +* பிரதிநிதித்துவ பிரச்சனைகள், லேபிள் ஒலி, அம்ச ஒலி, லேபிள் மதிப்பிலக்கணம் போன்ற பிரச்சனைகள் வந்த பிழைகளை குறைக்க கூடுதல் தரவை எந்த இடத்தில் சேகரிக்க வேண்டும் என்பதைக் கட்டாயமாகத் தீர்மானிக்கவும். + +## மாதிரி விளக்கம் + +இயந்திரக் கற்பிப்பு மாதிரிகள் பெரும்பாலும் கருப்பு பெட்டிகள். ஒரு மாதிரி முன்னறிவிப்பை இயக்கும் முக்கிய தரவு அம்சங்கள் என்ன என்பதை புரிந்துகொள்ள கடினம். ஆனால், ஒரு மாதிரி ஏன் குறிப்பிட்ட முன்கூட்டிய முடிவை எடுத்தது என்பதை வெளிப்படையாக வழங்குவது அவசியம். உதாரணமாக, AI அமைப்பு 30 நாட்களுக்குள் மீண்டும் மருத்துவமனைக்கு அனுமதிக்கப்படக்கூடிய ஆழ்ந்த பட்டியலாளர் ஒரு நோயாளி என்று முன்னறிவித்து இருந்தால், அது அதன் முடிவுக்கு வழிவகுக்கும் ஆதார தரவை வழங்க முடியும். ஆதார தகவல்கள் மருத்துவர்களுக்கு அல்லது மருத்துவமனைக்கு தெளிவான தீர்வுகள் எடுக்க உதவும். மேலும, ஒவ்வொரு நோயாளிக்கு மாதிரி ஏன் அந்த முடிவை எடுத்தது என்பதை விளக்குவது மருத்துவக் கட்டுப்பாடுகளுக்கு பொறுப்புக் காட்ட உதவும். மனிதர்களின் வாழ்வில் பாதிப்புகளை ஏற்படுத்தும் வகையில் இயந்திரக் கற்பிப்பு மாதிரிகளை பயன்படுத்தும் போது, மாதிரியின் நடத்தையை விளக்கும் மற்றும் புரியும் திறன் மிக அவசியம். மாதிரி விளக்கம் மற்றும் விளக்கம் பின்வரும் சூழலில் கேள்விகளுக்கு பதிலளிக்க உதவும்: -## மாடல் விளக்கத்தன்மை +* மாதிரி பிழைத்திறனை ஆராய்வு: என் மாதிரி ஏன் இந்த பிழையை செய்தது? எப்படி மேம்படுத்தலாம்? +* மனித-AI ஒத்துழைப்பு: மாதிரியின் முடிவுகளை எப்படித் புரிந்து நம்பலாம்? +* கட்டுப்பாட்டு இணக்கம்: என் மாதிரி சட்ட தேவைகளை பூர்த்தி செய்கிறதா? -இயந்திரக் கற்றல் மாடல்கள் "கருப்பு பெட்டிகள்" ஆகும். ஒரு மாடலின் கணிப்பை இயக்கும் முக்கிய தரவின் அம்சங்களைப் புரிந்து கொள்வது சவாலாக இருக்கலாம். ஒரு மாடல் ஏன் ஒரு குறிப்பிட்ட கணிப்பைச் செய்கிறது என்பதை விளக்குவதற்கு வெளிப்படைத்தன்மையை வழங்குவது முக்கியம். உதாரணமாக, ஒரு AI அமைப்பு ஒரு நீரிழிவு நோயாளி 30 நாட்களுக்குள் மீண்டும் மருத்துவமனையில் சேர்க்கப்படுவார் என்று கணிக்கிறதானால், அதன் கணிப்புக்கு வழிவகுத்த ஆதரவு தரவை வழங்க வேண்டும். ஆதரவு தரவுக் குறியீடுகள் வெளிப்படைத்தன்மையை வழங்குகின்றன, இது மருத்துவர்கள் அல்லது மருத்துவமனைகள் நன்கு தகவலளிக்கப்பட்ட முடிவுகளை எடுக்க உதவுகிறது. மேலும், ஒரு தனிப்பட்ட நோயாளிக்கான கணிப்பை ஏன் ஒரு மாடல் செய்தது என்பதை விளக்குவதால், சுகாதார விதிமுறைகளுடன் பொறுப்புத்தன்மை ஏற்படுகிறது. மனிதர்களின் வாழ்க்கையை பாதிக்கும் வகையில் இயந்திரக் கற்றல் மாடல்களைப் பயன்படுத்தும் போது, ​​மாடலின் நடத்தை என்னவால் பாதிக்கப்படுகிறது என்பதைப் புரிந்து கொள்ளவும் விளக்கவும் முக்கியம். மாடல் விளக்கத்தன்மை மற்றும் விளக்கத்தன்மை, பின்வரும் சூழல்களில் கேள்விகளுக்கு பதிலளிக்க உதவுகிறது: +RAI டாஷ்போர்டின் அம்ச முக்கியத்துவ கூறு, மாதிரி முன்னறிவிப்புகளை பிழைதிரியலுக்கு உதவியும், மாதிரியின் நடத்தை வழிவகுக்கும் அம்சங்களை விளக்கும் முழுமையான புரிதலை வழங்கவும் உதவுகிறது. இது இயந்திரக் கற்பிப்பு வல்லுநர்கள் மற்றும் முடிவு எடுக்குநர்களுக்கு மாதிரி நடத்தை விளக்க மற்றும் சான்றுகளைச் சுட்டிக்காட்ட உதவும் கருவியாகும். பின்பு, பயனர்கள் உலகளாவிய மற்றும் உள்ளூர் விளக்கங்களை ஆராயலாம். உலகளாவிய விளக்கங்கள், ஒரு மாதிரியின் மொத்த முன்னறிவிப்பை பாதிக்கும் முக்கிய அம்சங்களின் பட்டியலை வழங்கும். உள்ளூர் விளக்கங்கள், தனிப்பட்ட வழக்கிற்கான முன்னறிவிப்பை ஏற்படுத்திய அம்சங்களை காட்டும். உள்ளூர் விளக்கங்களை மதிப்பீடு செய்வது ஒரு குறிப்பிட்ட வழக்கின் பிழைதிரியல் அல்லது ஆய்வுக்கு உதவும், மாதிரி அப்படியானா சரியான முன்னறிவிப்பை செய்ததாக அல்லது தவறானதாக வைக்க காரணங்களை அறியவும். -* மாடல் பிழை சரிசெய்தல்: என் மாடல் இந்த தவறை ஏன் செய்தது? என் மாடலை எப்படி மேம்படுத்தலாம்? -* மனித-AI ஒத்துழைப்பு: மாடலின் முடிவுகளை நான் எப்படி புரிந்து கொள்ளலாம் மற்றும் நம்பலாம்? -* ஒழுங்குமுறை இணக்கம்: என் மாடல் சட்ட தேவைகளை பூர்த்தி செய்கிறதா? +![RAI டாஷ்போர்டின் அம்ச முக்கியத்துவ கூறு](../../../../translated_images/ta/9-feature-importance.cd3193b4bba3fd4b.webp) -RAI டாஷ்போர்டின் அம்ச முக்கியத்துவ கூறு, மாடல் கணிப்புகளை எவ்வாறு செய்கிறது என்பதை முழுமையாகப் புரிந்து கொள்ளவும் பிழை சரிசெய்தல் செய்யவும் உதவுகிறது. இது இயந்திரக் கற்றல் நிபுணர்கள் மற்றும் முடிவெடுப்பாளர்களுக்கு, மாடலின் நடத்தை மீது தாக்கம் செலுத்தும் அம்சங்களின் ஆதாரத்தை விளக்கவும் காட்டவும் ஒரு பயனுள்ள -- **தூற்றுதல்**. ஒருவரை அல்லது ஒன்றை அநியாயமாக விமர்சித்து குற்றம் சாட்டுவது. -- **அதிகமாக அல்லது குறைவாக பிரதிநிதித்துவம்**. ஒரு குறிப்பிட்ட குழு ஒரு குறிப்பிட்ட தொழிலில் காணப்படுவதில்லை என்ற கருத்து, மேலும் அதை தொடர்ந்து ஊக்குவிக்கும் எந்த சேவையோ அல்லது செயல்பாடோ பாதிப்பை ஏற்படுத்துகிறது. +* உலகளாவிய விளக்கங்கள்: உதாரணமாக, சர்க்கரை நோய் மருத்துவமனை மீண்டும் அடையாளம் மாதிரியின் மொத்த நடத்தையை எவ்வாறு பாதிக்கும் அம்சங்கள் என்ன? +* உள்ளூர் விளக்கங்கள்: உதாரணமாக, 60 வயதுக்கு மேற்பட்ட சர்க்கரை நோயாளர், முன் மருத்துவமனை அனுமதிப்புகளுடன், 30 நாட்களுக்குள் மீண்டும் அனுமதிக்கப்படுவாரா என்று முன்னறிவிக்கப்பட்ட காரணம் என்ன? -### Azure RAI டாஷ்போர்டு +வெவ்வேறு கொஹார்டுகளில் மாதிரியின் செயல்திறனை ஆராயும் பிழைதிரியல் செயலியில், அம்ச முக்கியத்துவம் அப்படியான தரவு பாகங்களில் அம்சத்தின் தாக்கத்தின் மட்டத்தை காட்டுகிறது. இது ஒரு மாதிரி தவறான முன்னறிவிப்புகள் உண்டாக்கும் போது அதனை ஒப்பிட்டு விசித்திரங்களை வெளிப்படுத்த உதவுகிறது. அம்ச முக்கியத்துவம் ஒரு அம்சத்தில் உள்ள மதிப்புகள் மாதிரியின் முடிவுகளை நேர்மறையாக அல்லது எதிர்மறையாக பாதித்ததை காட்டும். உதாரணமாக, மாதிரிக்கு தவறான முன்னறிவிப்பு இருந்தால், கூறு அந்தப் பின்னறிவிப்பை சந்திக்க வைத்த அம்சங்கள் அல்லது அதன் மதிப்புக்களை துல்லியமாக அறிய உதவும். இந்த விவரம் பிழைத்திரியலில் மட்டுமல்லாமல், வெளிப்படைத்தன்மை மற்றும் பொறுப்புக் காட்சிகள் வழங்கவும் உதவுகிறது. கடைசியாக, இந்த கூறு நியாயமான பிரச்சனைகள் இருப்பதைக் கண்டறிய உதவும். உதாரணமாக, இனப்பெருக்கம் அல்லது பாலினம் போன்ற உணர்ச்சி வாய்ந்த அம்சம் ஒரு மாதிரியின் முன்னறிவிப்பில் உண்டாகும் மிக முக்கிய தாக்குவாக இருந்தால், அது இனப்பெருக்கம் அல்லது பாலின மதிப்பிலக்கணம் உள்ளதற்கு ஒரே சில அச்சுறுத்தல் ஆகும். -[Azure RAI டாஷ்போர்டு](https://learn.microsoft.com/en-us/azure/machine-learning/concept-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) என்பது Microsoft உட்பட முன்னணி கல்வி நிறுவனங்கள் மற்றும் அமைப்புகள் உருவாக்கிய திறந்த மூல கருவிகளின் அடிப்படையில் உருவாக்கப்பட்டுள்ளது. இது தரவியல் விஞ்ஞானிகள் மற்றும் AI டெவலப்பர்களுக்கு மாதிரி நடத்தை பற்றி சிறந்த புரிதலைப் பெறவும், AI மாதிரிகளில் இருந்து விரும்பத்தகாத பிரச்சினைகளை கண்டறிந்து சரிசெய்யவும் உதவுகிறது. +![அம்ச முக்கியத்துவம்](../../../../translated_images/ta/9-features-influence.3ead3d3f68a84029.webp) -- 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 டாஷ்போர்டு கூறுகளும் சமூகத்திற்கு குறைவான தீங்கு விளைவிக்கும் மற்றும் நம்பகத்தன்மை அதிகமான இயந்திரக் கற்பிப்பு மாதிரிகள் உருவாக்க உதவும் நடைமுறை கருவிகள் ஆகும். இது மனித உரிமைகளுக்கு அசுரங் காக்குதல், குறிப்பிட்ட குழுக்களை வாழ்க்கை வாய்ப்புகளிலிருந்து விலக்கு வைப்பது மற்றும் உடல் அல்லது உளவியல் காயங்களுக்கு ஆபத்துகள் ஏற்படுத்த்வதை தடுக்க உதவும். இது உங்கள் மாதிரியின் முடிவுகளில் உள்ள நம்பிக்கையை உருவாக்கும் உள்ளூர் விளக்கங்களையும் உருவாக்க உதவும். சில அபாத்துக்கள் கீழ்க்காணும் வகையில் வகைப்படுத்தப்படலாம்: -- அமைப்புகளில் பணிபுரியும் மக்களிடையே பன்முகத்தன்மையும் பார்வைகளின் பல்வகைமையும் கொண்டிருக்க வேண்டும் -- நமது சமுதாயத்தின் பன்முகத்தன்மையை பிரதிபலிக்கும் தரவுத்தொகுப்புகளில் முதலீடு செய்ய வேண்டும் -- பாகுபாடு நிகழும் போது அதை கண்டறிந்து சரிசெய்ய சிறந்த முறைகளை உருவாக்க வேண்டும் +- **வினியோகம்**, உதாரணமாக ஒரு பாலினம் அல்லது இனப்பெருக்கம் மற்றொன்றுடன் ஒப்பிடும்போது விருப்பம் பெற்றால். +- **சேவை தரம்**. நீங்கள் ஒரு குறிப்பிட்ட சூழ்நிலையில் தரவை பயிற்சி செய்தாலும், உண்மை அதிக சிக்கலானதாக இருந்தால், அது மோசமான சேவை செயல்திறனை ஏற்படுத்தும். +- **சாதாரண மனப்பான்மைகள்**. ஒரு குழுவுக்கு முன்பிருந்தே வழங்கப்பட்ட பண்புகளைக் கூட்டுசெலுத்துதல். -மாதிரிகளை உருவாக்குவதிலும் பயன்படுத்துவதிலும் அநியாயம் தெளிவாக தெரியும் உண்மையான சூழல்களைப் பற்றி சிந்தியுங்கள். இன்னும் என்னை நாம் கருத்தில் கொள்ள வேண்டும்? +- **எதிர்ப்புரை**. ஏமாற்றமாகக் கண்டிப்பது மற்றும் எதையோ அல்லது யாரையோ லேசாக குறிக்கோள் வைக்கிறது. +- **அதிகப்படியான அல்லது குறைந்தமையான பிரதிநிதித்துவம்**. குறிப்பிட்ட ஒரு குழு ஒரு குறிப்பிட்ட தொழிலில் பார்க்கப்படவில்லை என்று கருத்து, மேலும் எந்த சேவை அல்லது செயல்பாடு அதை முன்னிலைப்படுத்தியதால் சேதம் ஏற்படுகிறது. + +### அசூர் RAI டாஷ்போர்டு + +[அசூர் RAI டாஷ்போர்டு](https://learn.microsoft.com/en-us/azure/machine-learning/concept-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) முதன்மை கல்வி நிறுவனங்களும் நிறுவங்களும் உருவாக்கிய ஓபன்-சோর্স கருவிகளின் அடிப்படையில் கட்டப்பட்டு, தகவல் அறிவியலாளர்கள் மற்றும் AI உருவாக்குனர்களுக்கு மாதிரியின் நடத்தையை நன்றாக புரிந்துகொள்ள மற்றும் AI மாதிரிகளில் இருந்து விரும்பாத பிரச்சனைகளை கண்டறிந்து குறைக்க உதவுகிறது. + +- RAI டாஷ்போர்டு [ஆவணங்களை](https://learn.microsoft.com/en-us/azure/machine-learning/how-to-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) பார்க்கவேண்டும் என்பவற்றின் வேறுபட்ட கூறுகளை பயன்படுத்துவதைக் கற்றுக்கொள்ளுங்கள். + +- அசூர் மெஷின் லெர்னிங் இல் இன்னும் பொறுப்பான AI நிலைகளுக்கு பிழைத்தீர்க்க RAI டாஷ்போர்டு [மேல்நோட்டங்களை](https://github.com/Azure/RAI-vNext-Preview/tree/main/examples/notebooks) பார்க்கவும். + +--- +## 🚀 சவால் + +புள்ளிவிவர அல்லது தரவு பாகுபாடுகள் முதலில் அறிமுகப்படுத்தப்படாமல் இருக்க, நாம்: -## [பாடத்திற்குப் பிந்தைய வினாடி வினா](https://ff-quizzes.netlify.app/en/ml/) -## மதிப்பீடு & சுயபடிப்பு +- அமைப்புகளில் பணிபுரியும் மனிதர்களிடையே பன்முகத் தலையங்கங்கள் மற்றும் பார்வைகள் இருக்க வேண்டும் +- நமது சமூகத்தின் பன்முகத்தன்மையை பிரதிபலிக்கும் தரவுத்தொகுதிகளில் முதலீடு செய்ய வேண்டும் +- பாகுபாடுகளை கண்டறிந்து திருத்துவதற்கான சிறந்த முறைகளை உருவாக்க வேண்டும் -இந்த பாடத்தில், இயந்திர கற்றலில் பொறுப்பான AI ஐ இணைக்கும் சில நடைமுறை கருவிகளை நீங்கள் கற்றுக்கொண்டீர்கள். +மாதிரி உருவாக்குதல் மற்றும் பயன்பாட்டில் நியாயமற்ற நிலைகள் காணப்படும் நிஜ உலக நிலையைப் பற்றி சிந்தியுங்கள். இன்னும் என்னை கருத்தில் கொள்ள வேண்டும்? -இந்த பணிமனைப் பார்வையிட இந்த தலைப்புகளில் மேலும் ஆழமாக செல்வதற்கான வீடியோவைப் பாருங்கள்: +## [பாடம் முடிந்த பின் வினாடி கேள்விக்கட்டு](https://ff-quizzes.netlify.app/en/ml/) +## விமர்சனம் மற்றும் சுய ஆய்வு + +இந்த பாடத்தில், நீங்கள் பொறுப்பான AI ஐ மெஷின் லெர்னிங்கில் ஒருங்கிணைக்க சில நடைமுறை கருவிகளை கற்றுக்கொண்டீர்கள். -- பொறுப்பான AI டாஷ்போர்டு: நடைமுறையில் RAI ஐ செயல்படுத்துவதற்கான ஒரே இடம் - Besmira Nushi மற்றும் Mehrnoosh Sameki +இந்த செயல்முறை இயக்கத்தைக் கவனித்தால், அந்தக் களத்தில் மேலும் ஆழமாகலardırச் செய்யலாம்: -[![பொறுப்பான AI டாஷ்போர்டு: நடைமுறையில் RAI ஐ செயல்படுத்துவதற்கான ஒரே இடம்](https://img.youtube.com/vi/f1oaDNl3djg/0.jpg)](https://www.youtube.com/watch?v=f1oaDNl3djg "பொறுப்பான AI டாஷ்போர்டு: நடைமுறையில் RAI ஐ செயல்படுத்துவதற்கான ஒரே இடம் - Besmira Nushi மற்றும் Mehrnoosh Sameki") +- Besmira Nushi மற்றும் Mehrnoosh Sameki எழுதிய பொறுப்பான AI டாஷ்போர்டு: உட்பயன்பாட்டில் RAI ஐ செயல்படுத்த ஒரு ஒற்றை கட்சி கடை -> 🎥 மேலே உள்ள படத்தை கிளிக் செய்து வீடியோவைப் பாருங்கள்: பொறுப்பான AI டாஷ்போர்டு: Besmira Nushi மற்றும் Mehrnoosh Sameki மூலம் நடைமுறையில் RAI ஐ செயல்படுத்துவதற்கான ஒரே இடம் +[![பொறுப்பான AI டாஷ்போர்டு: உட்பயன்பாட்டில் RAI ஐ செயல்படுத்த ஒரு ஒற்றை கட்சி கடை](https://img.youtube.com/vi/f1oaDNl3djg/0.jpg)](https://www.youtube.com/watch?v=f1oaDNl3djg "பொறுப்பான AI டாஷ்போர்டு: உட்பயன்பாட்டில் RAI ஐ செயல்படுத்த ஒரு ஒற்றை கட்சி கடை") -பொறுப்பான AI மற்றும் நம்பகமான மாதிரிகளை உருவாக்குவது எப்படி என்பதைப் பற்றி மேலும் அறிய பின்வரும் பொருட்களை மேற்கோளாகக் கொள்ளுங்கள்: +> 🎥 மேலே புகைப்படத்தைக் கிளிக் செய்து வீடியோவைப் பாருங்கள்: Besmira Nushi மற்றும் Mehrnoosh Sameki எழுதிய பொறுப்பான AI டாஷ்போர்டு: உட்பயன்பாட்டில் RAI ஐ செயல்படுத்த ஒரு ஒற்றை கட்சி கடை + +பொறுப்பான AI அங்கீகாரம் மற்றும் நம்பகமான மாதிரிகளை உருவாக்கும் முறைகளைப் பற்றி மேலும் அறிய கீழ்க்காணும் tàiல்களைப் பயன்படுத்தவும்: -- ML மாதிரிகளை சரிசெய்ய Microsoft இன் RAI டாஷ்போர்டு கருவிகள்: [பொறுப்பான AI கருவி வளங்கள்](https://aka.ms/rai-dashboard) +- Microsoft இன் RAI டாஷ்போர்டு கருவிகள் மூலம் 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) -- Microsoft இன் RAI வள மையம்: [பொறுப்பான 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) -- Microsoft இன் FATE ஆராய்ச்சி குழு: [FATE: AI இல் நியாயம், பொறுப்பு, வெளிப்படைத் தன்மை மற்றும் நெறிமுறைகள் - Microsoft Research](https://www.microsoft.com/research/theme/fate/) +- Microsoft இன் FATE ஆராய்ச்சி குழு: [FATE: 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) என்ற AI மொழிபெயர்ப்பு சேவையைப் பயன்படுத்தி மொழிபெயர்க்கப்பட்டுள்ளது. நாங்கள் துல்லியத்திற்காக முயற்சிக்கின்றோம், ஆனால் தானியங்கி மொழிபெயர்ப்புகளில் பிழைகள் அல்லது தவறான தகவல்கள் இருக்கக்கூடும் என்பதை கவனத்தில் கொள்ளவும். அதன் தாய்மொழியில் உள்ள மூல ஆவணம் அதிகாரப்பூர்வ ஆதாரமாக கருதப்பட வேண்டும். முக்கியமான தகவல்களுக்கு, தொழில்முறை மனித மொழிபெயர்ப்பு பரிந்துரைக்கப்படுகிறது. இந்த மொழிபெயர்ப்பைப் பயன்படுத்துவதால் ஏற்படும் எந்த தவறான புரிதல்கள் அல்லது தவறான விளக்கங்களுக்கு நாங்கள் பொறுப்பல்ல. \ 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/te/.co-op-translator.json b/translations/te/.co-op-translator.json index 8faf17a29..b645b2ddf 100644 --- a/translations/te/.co-op-translator.json +++ b/translations/te/.co-op-translator.json @@ -24,8 +24,8 @@ "language_code": "te" }, "1-Introduction/3-fairness/README.md": { - "original_hash": "9a6b702d1437c0467e3c5c28d763dac2", - "translation_date": "2025-12-19T13:39:37+00:00", + "original_hash": "0f00d72169a0d37eecfd16d71e01700a", + "translation_date": "2026-07-14T00:33:10+00:00", "source_file": "1-Introduction/3-fairness/README.md", "language_code": "te" }, @@ -54,8 +54,8 @@ "language_code": "te" }, "2-Regression/1-Tools/README.md": { - "original_hash": "fa81d226c71d5af7a2cade31c1c92b88", - "translation_date": "2025-12-19T13:54:05+00:00", + "original_hash": "0b8635427b582d03ea4ab7089b93e505", + "translation_date": "2026-07-14T00:31:29+00:00", "source_file": "2-Regression/1-Tools/README.md", "language_code": "te" }, @@ -72,8 +72,8 @@ "language_code": "te" }, "2-Regression/2-Data/README.md": { - "original_hash": "7c077988328ebfe33b24d07945f16eca", - "translation_date": "2025-12-19T13:58:37+00:00", + "original_hash": "a58b2c4d16c6b122643391745ac15af6", + "translation_date": "2026-07-14T00:32:19+00:00", "source_file": "2-Regression/2-Data/README.md", "language_code": "te" }, @@ -89,6 +89,12 @@ "source_file": "2-Regression/2-Data/solution/Julia/README.md", "language_code": "te" }, + "2-Regression/2-Data/solution/notebook.ipynb": { + "original_hash": "96b95f8cf473481f2f371de8156f1571", + "translation_date": "2026-07-14T00:27:09+00:00", + "source_file": "2-Regression/2-Data/solution/notebook.ipynb", + "language_code": "te" + }, "2-Regression/3-Linear/README.md": { "original_hash": "8b776e731c35b171d316d01d0e7b1369", "translation_date": "2026-04-26T19:31:18+00:00", @@ -581,6 +587,19 @@ "source_file": "TROUBLESHOOTING.md", "language_code": "te" }, + "__translation_failures__": { + "sketchnotes/LICENSE.md": { + "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f", + "source_file": "sketchnotes/LICENSE.md", + "language_code": "te", + "failure_date": "2026-07-14T00:30:43+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:09:48+00:00", diff --git a/translations/te/1-Introduction/3-fairness/README.md b/translations/te/1-Introduction/3-fairness/README.md index c0bd3cebf..01cd7d0c3 100644 --- a/translations/te/1-Introduction/3-fairness/README.md +++ b/translations/te/1-Introduction/3-fairness/README.md @@ -1,163 +1,167 @@ # బాధ్యతాయుత AIతో మెషీన్ లెర్నింగ్ పరిష్కారాలను నిర్మించడం -![మెషీన్ లెర్నింగ్‌లో బాధ్యతాయుత AI యొక్క సారాంశం స్కెచ్ నోట్](../../../../translated_images/te/ml-fairness.ef296ebec6afc98a.webp) -> స్కెచ్ నోట్: [Tomomi Imura](https://www.twitter.com/girlie_mac) +![మెషీన్ లెర్నింగ్‌లో బాధ్యతాయుత AI యొక్క సారాంశ స్కెచ్ నోట్](../../../../translated_images/te/ml-fairness.ef296ebec6afc98a.webp) +> స్కెచ్‌నోట్ రచయిత [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 మోడల్స్ ప్రవర్తనను వివరించడానికి గ్లాస్ బాక్స్ విధానాన్ని అనుసరించడం ప్రాముఖ్యాన్ని చూడండి. +- AI వ్యవస్థలపై విశ్వాసాన్ని నిర్మించేందుకు బాధ్యత తలపెట్టడం అవసరం అని జాగ్రత్తగా ఉండండి. -## ముందస్తు అర్హత +## అవసరమైన మార్గదర్శకం -ముందస్తుగా, "బాధ్యతాయుత AI సూత్రాలు" నేర్చుకునే మార్గాన్ని తీసుకోండి మరియు క్రింద వీడియోను చూడండి: +అవసరమైన మార్గదర్శకంగా, "బాధ్యతాయుత AI సూత్రాలు" నేర్చుకునే పాఠ్యాన్ని తీసుకోండి మరియు క్రింది వీడియో చూడండి: -బాధ్యతాయుత AI గురించి మరింత తెలుసుకోడానికి ఈ [Learning Path](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 గురించి మరింత తెలుసుకోండి -[![Microsoft's Approach to Responsible AI](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoft's Approach to Responsible AI") +[![Microsoft యొక్క బాధ్యతాయుత AI దృష్టికోణం](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoft యొక్క బాధ్యతాయుత 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) +- **తరిగింపు**. ఏదో లేదా ఎవరినైనా అన్యాయంగా విమర్శించడం మరియు తగులికట్టడం. ఉదాహరణకి, పട చిత్రాలను పొరపాటుగా గుర్తింపు సాంకేతికత చీకటి చర్మం గల వ్యక్తులని గోరీళ్లుగా లేబుల్ చేసింది. +- **అధిక లేదా తక్కువ ప్రతినిధిత్వం**. ఒక నిర్దిష్ట వృత్తిలో ఒక వర్గం కనిపించకపోవడం, అందువల్ల ఆ వర్గానికి సంబంధించిన సేవ లేదా ఫంక్షన్ హాని కలిగిస్తుంది. +- **స్టీరియోటైపింగ్**. ఒక నిర్దిష్ట వర్గాన్ని ముందే తేల్చుకున్న లక్షణాలతో కలపడం. ఉదాహరణకి, ఇంగ్లిష్ నుంచి టర్కిష్ భాషా అనువాదం చేసే వ్యవస్థ లింగంతో సంబంధం ఉన్న స్టీరియోటైపిక్ పదాల వలన పొరపాట్లు కలగడం. -![translation to Turkish](../../../../translated_images/te/gender-bias-translate-en-tr.f185fd8822c2d437.webp) -> టర్కిష్‌కు అనువాదం +![తుర్కీష్ కు అనువాదం](../../../../translated_images/te/gender-bias-translate-en-tr.f185fd8822c2d437.webp) +> తుర్కీష్ కు అనువాదం -![translation back to English](../../../../translated_images/te/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) -> ఇంగ్లీష్‌కు తిరిగి అనువాదం +![మళ్లీ ఇంగ్లీష్ కు అనువాదం](../../../../translated_images/te/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) +> మళ్లీ ఇంగ్లీష్ కు అనువాదం -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 (సామాన్య డేటా రక్షణ నిబంధనలు) వంటి నియమాలతో. +- 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 వ్యవస్థ వ్యక్తులు లేదా సమాజంపై ఎలా ప్రభావం చూపుతుందో బాధ్యత వహించాలి. - -[![ముఖచిత్ర గుర్తింపు ద్వారా భారీ పర్యవేక్షణపై ప్రముఖ AI పరిశోధకుడు హెచ్చరిస్తున్నారు](../../../../translated_images/te/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft's Approach to Responsible AI") +[![ముఖచిత్ర గుర్తింపు ద్వారా భారీ పర్యవేక్షణకు ముందే హెచ్చరిక చేయడం](../../../../translated_images/te/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft యొక్క బాధ్యతాయుత AI దృష్టికోణం") -> 🎥 వీడియో కోసం పై చిత్రాన్ని క్లిక్ చేయండి: ముఖచిత్ర గుర్తింపు ద్వారా భారీ పర్యవేక్షణ హెచ్చరికలు +> 🎥 వీడియో కోసం పైచిత్రం క్లిక్ చేయండి: ముఖచిత్ర గుర్తింపు ద్వారా భారీ పర్యవేక్షణ హెచ్చరికలు -మొత్తానికి, మన తరం, సమాజానికి AI తీసుకువస్తున్న మొదటి తరం, కంప్యూటర్లు ప్రజలకు బాధ్యత వహించేటట్లు ఎలా నిర్ధారించుకోవాలి మరియు కంప్యూటర్లు రూపకల్పన చేసే వారు అందరికి బాధ్యత వహించేటట్లు ఎలా నిర్ధారించుకోవాలి అనే ప్రశ్నలు మనకు పెద్ద సవాలు. +చివరకి, AIని సమాజానికి సం�దిస్తూ మొదటి తరం మన సంతతి ఎంతో పెద్ద ప్రశ్నకు ఎదురు చూస్తున్నాం – కంప్యూటర్‌లు ప్రజలకూ బాధ్యత వహించడానికి ఎలా ఉండాలి మరియు కంప్యూటర్ రూపకల్పన దారులు ప్రతి ఒక్కరికీ బాధ్యత వహించేలా ఎలా చూడాలి. ## ప్రభావం అంచనా -మెషీన్ లెర్నింగ్ మోడల్ శిక్షణకు ముందు, AI వ్యవస్థ యొక్క ఉద్దేశ్యం ఏమిటి; దాని ఉద్దేశించిన ఉపయోగం ఏమిటి; ఎక్కడ అమలు చేయబడుతుంది; మరియు ఎవరు వ్యవస్థతో పరస్పరం చేస్తారు అనే విషయాలను అర్థం చేసుకోవడానికి ప్రభావం అంచనాను నిర్వహించడం ముఖ్యం. ఇవి వ్యవస్థను సమీక్షించే వారు లేదా పరీక్షకులు పరిగణలోకి తీసుకోవాల్సిన అంశాలను తెలుసుకోవడానికి సహాయపడతాయి, తద్వారా వారు సంభావ్య ప్రమాదాలు మరియు ఆశించిన పరిణామాలను గుర్తించగలుగుతారు. +మెషీన్ లెర్నింగ్ మోడల్ శిక్షణకు ముందుగా, AI వ్యవస్థ ప్రయోజనం, అవు ఉపయోగించబోవడం, ఎక్కడ అమలు అవుతుందో మరియు ఎవరు వ్యవస్థతో పరస్పరం ఉంటారో అర్థం చేసుకోవడానికి ప్రభావం అంచనాను నిర్వహించడం ముఖ్యం. ఇది వ్యవస్థను సమీక్షించే వారికి ప్రమాదాలు మరియు గమనిస్తున్న పరిణామాలు ఏమిటి అనే విషయాలను పరిశీలించడానికి ఉపయోగపడుతుంది. -ప్రభావం అంచనా నిర్వహించే సమయంలో దృష్టి పెట్టాల్సిన ప్రాంతాలు: +ప్రభావం అంచనా సమయంలో కింది ప్రాంతాలు దృష్టి పెట్టవలసినవి: -* **వ్యక్తులపై ప్రతికూల ప్రభావం**. ఏవైనా పరిమితులు లేదా అవసరాలు, మద్దతు లేని ఉపయోగం లేదా వ్యవస్థ పనితీరును అడ్డుకునే ఏవైనా పరిమితులు ఉన్నాయా అని తెలుసుకోవడం ముఖ్యం, తద్వారా వ్యవస్థ వ్యక్తులకు హాని కలిగించే విధంగా ఉపయోగించబడకుండా ఉండాలి. -* **డేటా అవసరాలు**. వ్యవస్థ డేటాను ఎలా మరియు ఎక్కడ ఉపయోగిస్తుందో అర్థం చేసుకోవడం సమీక్షకులకు మీరు జాగ్రత్తగా ఉండాల్సిన డేటా అవసరాలను (ఉదా: GDPR లేదా HIPPA డేటా నియమాలు) పరిశీలించడానికి సహాయపడుతుంది. అదనంగా, శిక్షణకు డేటా మూలం లేదా పరిమాణం సరిపోతుందా అని పరిశీలించండి. -* **ప్రభావం సారాంశం**. వ్యవస్థ ఉపయోగం వల్ల సంభవించే సంభావ్య హానుల జాబితాను సేకరించండి. ML జీవనచక్రం అంతటా గుర్తించిన సమస్యలు తగ్గించబడ్డాయా లేదా పరిష్కరించబడ్డాయా అని సమీక్షించండి. -* ఆరు ప్రధాన సూత్రాల కోసం **ప్రయోజన లక్ష్యాలు**. ప్రతి సూత్రం నుండి లక్ష్యాలు చేరుకున్నాయా లేదా లోపాలు ఉన్నాయా అని అంచనా వేయండి. +* **వ్యక్తులపై ప్రతికూల ప్రభావం**. ఏవైనా పరిమితులు లేదా అవసరాలు, అసమర్థ వాడకం లేదా వ్యవస్థ పనితీరును అడ్డుకునే పరిమితులను గుర్తించడం ముఖ్యం, తద్వారానే తప్పదని ఉపయోగాన్ని నిరోధించడం. +* **డేటా అవసరాలు**. వ్యవస్థ ఎక్కడ మరియు ఎలా డేటాను ఉపయోగిస్తుందో అర్థం చేసుకోవడం, సమీక్షకులు నియమాలు మరియు ఆంక్షల (ఉదా. GDPR లేదా HIPAA) జాగ్రత్తలు తీసుకోవడానికి సహాయపడుతుంది. అదనంగా, శిక్షణకి సముచితం లేదా సరిపోతున్న డేటా వనరు యొక్క పరిమాణం పరిశీలించాలి. +* **ప్రభావ సారాంశం**. వ్యవస్థ వాడుకలో ప్రసంగించే హానుల జాబితాను సేకరించండి. ML జీవనచక్రంలో ఇబ్బందులు పరిష్కరించబడుతున్నాయో లేదా దృష్టిలో ఉన్నాయో సమీక్షించండి. +* **ఆరు ముఖ్య సూత్రాలకు అనుగుణంగా గోల్స్**. ప్రతి సూత్రానికి గోల్స్ పూర్తయ్యాయో లేదా లోపాలున్నాయో అంచనా వేయండి. -## బాధ్యతాయుత AIతో డీబగ్గింగ్ -సాఫ్ట్‌వేర్ అప్లికేషన్‌ను డీబగ్గింగ్ చేయడం లాగా, 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 చేత సూత్రాలను ఆచరణలోకి తీసుకువెళ్లడం -[![Responsible AI Toolbox: An open-source framework for building responsible AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") +[![బాధ్యతగల AI టూల్‌బాక్స్: బాధ్యతగల AI నిర్మాణం కోసం ఓపెన్శోర్స్ ఫ్రేమ్‌వర్క్](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: బాధ్యతగల AI నిర్మాణం కోసం ఓపెన్శోర్స్ ఫ్రేమ్‌వర్క్") -> 🎥 వీడియో కోసం పై చిత్రాన్ని క్లిక్ చేయండి: Besmira Nushi, Mehrnoosh Sameki, మరియు Amit Sharma ద్వారా RAI Toolbox: బాధ్యతాయుత AI నిర్మాణానికి ఓ ఓపెన్-సోర్స్ ఫ్రేమ్‌వర్క్ +> 🎥 వీడియో కోసం పై చిత్రం క్లిక్ చేయండి: Besmira Nushi, Mehrnoosh Sameki, మరియు Amit Sharma ద్వారా బాధ్యతగల AI టూల్‌బాక్స్: ఓపెన్శోర్స్ ఫ్రేమ్‌వర్క్ -ఇంకా చదవండి: +అదనంగా చదవండి: -- Microsoft యొక్క RAI వనరుల కేంద్రం: [Responsible AI Resources – 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) -- Microsoft యొక్క FATE పరిశోధనా గ్రూప్: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/) +- Microsoft యొక్క FATE పరిశోధనా గుంపు: [FATE: ఎఫైర్‌నెస్, అకౌంటబిలిటీ, పారదర్శకత మరియు AIలో నైతికత - Microsoft రీసర్చ్](https://www.microsoft.com/research/theme/fate/) -RAI Toolbox: +RAI టూల్‌బాక్స్: -- [Responsible AI Toolbox GitHub repository](https://github.com/microsoft/responsible-ai-toolbox) +- [బాధ్యతగల AI టూల్‌బాక్స్ 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) +[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/te/2-Regression/1-Tools/README.md b/translations/te/2-Regression/1-Tools/README.md index cd44f9b7a..1a2d05b6b 100644 --- a/translations/te/2-Regression/1-Tools/README.md +++ b/translations/te/2-Regression/1-Tools/README.md @@ -1,121 +1,121 @@ # రిగ్రెషన్ మోడల్స్ కోసం Python మరియు Scikit-learn తో ప్రారంభించండి -![Summary of regressions in a sketchnote](../../../../translated_images/te/ml-regression.4e4f70e3b3ed446e.webp) +![ఒక స్కెచ్నోట్‌లో రిగ్రెషన్ల సారాంశం](../../../../translated_images/te/ml-regression.4e4f70e3b3ed446e.webp) -> Sketchnote by [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 ఉపయోగించడం, ఇన్‌స్టాలేషన్ సహా. -- లీనియర్ రిగ్రెషన్‌ను ఒక ప్రాక్టికల్ వ్యాయామంతో అన్వేషించడం. +- స్థానిక మెషిన్ లెర్నింగ్ పనుల కోసం మీ కంప్యూటర్ కన్ఫిగర్ చేయడం. +- జుపిటర్ నోటबुक్స్ తో పని చేయడం. +- Scikit-learn ను ఉపయోగించడం, ఇన్స్టాలేషన్ సహా. +- హ్యాండ్స్-ఆన్ వ్యాయామంతో లీనియర్ రిగ్రెషన్ అన్వేషించడం. -## ఇన్‌స్టాలేషన్లు మరియు కాన్ఫిగరేషన్లు +## ఇన్స్టాలేషన్స్ మరియు కన్ఫిగరేషన్స్ -[![ML for beginners - Setup your tools ready to build Machine Learning models](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML for beginners -Setup your tools ready to build Machine Learning models") +[![నవ ప్రవేశికల కోసం - మెషిన్ లెర్నింగ్ మోడల్స్ బిల్డ్ చేయడానికి మీ సాధనాలను సెట్ చేయడం](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "నవ ప్రవేశికల కోసం - మీ సాధనాలను సెట్ చేసి మెషిన్ లెర్నింగ్ మోడల్స్ తయారు చేయండి") -> 🎥 ML కోసం మీ కంప్యూటర్‌ను కాన్ఫిగర్ చేయడం గురించి చిన్న వీడియో కోసం పై చిత్రాన్ని క్లిక్ చేయండి. +> 🎥 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 ఇన్స్టాల్ చేయండి**. మీ కంప్యూటర్ లో [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/) గురించి సూచనలను అనుసరించండి. ఈ కోర్సులో మీరు 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 ను ఎలా సెటప్ చేసుకోవాలి](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) అనే విషయాన్ని కూడా నేర్చుకోవచ్చు. - > ఈ [Learn modules](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) సేకరణ ద్వారా Python తో సౌకర్యంగా అవ్వండి + > Python లో నిపుణుడయ్యేందుకు ఈ [లెర్న్ మాడ్యూల్స్ సేకరణ](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) చూసుకోండి > - > [![Setup Python with Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Setup Python with Visual Studio Code") + > [![Visual Studio Code తో Python సెటప్](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](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 లో ఈ లైబ్రరీ ని ఇన్స్టాల్ చేస్తున్నట్లయితే, ప్రత్యేక సూచనలు ఉన్నాయని పై లింకులో చూడండి. -1. **Jupyter Notebook ఇన్‌స్టాల్ చేయండి**. మీరు [Jupyter ప్యాకేజీని ఇన్‌స్టాల్ చేయాలి](https://pypi.org/project/jupyter/). +1. **Jupyter Notebook ఇన్స్టాల్ చేయండి**. మీరు [Jupyter ప్యాకేజీ ఇన్స్టాల్](https://pypi.org/project/jupyter/) చేయాలి. ## మీ ML రచనా వాతావరణం -మీరు Python కోడ్ అభివృద్ధి చేయడానికి మరియు మెషీన్ లెర్నింగ్ మోడల్స్ సృష్టించడానికి **నోట్బుక్స్** ఉపయోగించబోతున్నారు. ఈ రకమైన ఫైల్ డేటా సైంటిస్టులకు సాధారణ సాధనం, మరియు అవి వారి సఫిక్స్ లేదా ఎక్స్‌టెన్షన్ `.ipynb` ద్వారా గుర్తించబడతాయి. +మీరు మీ Python కోడ్‌ను అభివృద్ధి చేయడానికి మరియు మెషిన్ లెర్నింగ్ మోడల్స్ సృష్టించడానికి **నోట్బుక్స్** ను ఉపయోగించబోతున్నారు. ఈ రకం ఫైల్ డేటా సైన్తిస్ట్‌ల సాధారణ పరికరం, మరియు ఇవి `.ipynb` విస్తరణతో గుర్తింపు పొందతాయి. -నోట్బుక్స్ అనేవి ఒక ఇంటరాక్టివ్ వాతావరణం, ఇది డెవలపర్‌కు కోడ్ రాయడమే కాకుండా, కోడ్ చుట్టూ గమనికలు మరియు డాక్యుమెంటేషన్ కూడా జోడించడానికి అనుమతిస్తుంది, ఇది ప్రయోగాత్మక లేదా పరిశోధన-ఆధారిత ప్రాజెక్టులకు చాలా సహాయకరం. +నోట్బుక్స్ అనేవి ఒక ఇంటరాక్టివ్ వాతావరణం, దీని ద్వారా డెవలపర్ కోడ్ రాయవచ్చు మరియు కోడ్ చుట్టూ గమనికలు మరియు డాక్యుమెంటేషన్ చేర్చవచ్చు, ఇది ప్రయోగాత్మక లేదా పరిశోధనా ప్రాజెక్టుల కోసం చాలా ఉపయోగకరం. -[![ML for beginners - Set up Jupyter Notebooks to start building regression models](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML for beginners - Set up Jupyter Notebooks to start building regression models") +[![నవ ప్రవేశికల కోసం - రిగ్రెషన్ మోడల్స్ నిర్మాణం ప్రారంభించడానికి Jupyter Notebooks సెట్ చేయడం](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "నవ ప్రవేశికల కోసం - రిగ్రెషన్ మోడల్స్ ప్రారంభించడానికి Jupyter Notebooks సెట్ చేయడం") -> 🎥 ఈ వ్యాయామం ద్వారా పని చేయడానికి పై చిత్రాన్ని క్లిక్ చేయండి. +> 🎥 ఈ వ్యాయామాన్ని పూర్తి చేయడం చూపించే చిన్న వీడియో కోసం పై చిత్రంపై క్లిక్ చేయండి. -### వ్యాయామం - నోట్బుక్‌తో పని చేయండి +### వ్యాయామం - ఒక నోట్బుకుతో పని చేయండి -ఈ ఫోల్డర్‌లో, మీరు _notebook.ipynb_ ఫైల్‌ను కనుగొంటారు. +ఈ ఫోల్‌డర్‌లో మీరు _notebook.ipynb_ ఫైల్‌ను కనుగొంటారు. -1. Visual Studio Code లో _notebook.ipynb_ ను తెరవండి. +1. Visual Studio Code లో _notebook.ipynb_ ని తెరవండి. - Python 3+ తో Jupyter సర్వర్ ప్రారంభమవుతుంది. మీరు నోట్బుక్‌లో `run` చేయగల కోడ్ భాగాలను కనుగొంటారు. ప్లే బటన్ లాంటి ఐకాన్‌ను ఎంచుకుని కోడ్ బ్లాక్‌ను నడపవచ్చు. + ఒక Jupyter సర్వర్ ప్రారంభమవుతుంది, Python 3+ తో ప్రారంభం అవుతుంది. నోట్బుక్‌లో `run` చేయగల కోడ్ భాగాలు ఉంటాయి. ప్లే బటన్‌లా కనిపించే చిహ్నం ఎంచుకుని మీరు కోడ్ బ్లాక్ నడిపించవచ్చు. -1. `md` ఐకాన్‌ను ఎంచుకుని కొంత మార్క్డౌన్ జోడించండి, మరియు ఈ క్రింది టెక్స్ట్ **# Welcome to your notebook** ను జోడించండి. +1. `md` చిహ్నాన్ని ఎంచుకుని కొంత మార్క్డౌన్ జోడించండి, టెక్స్ట్ గా **# Welcome to your notebook** వ్రాయండి. - తరువాత, కొంత Python కోడ్ జోడించండి. + తరువాత కొంత Python కోడ్ జోడించండి. 1. కోడ్ బ్లాక్‌లో **print('hello notebook')** టైప్ చేయండి. -1. కోడ్ నడపడానికి ఎరోను ఎంచుకోండి. +1. కోడ్ నడిపేందుకు ఎరో బటన్ ని ఎంచుకోండి. - మీరు ఈ ముద్రిత స్టేట్‌మెంట్‌ను చూడగలరు: + మీరు క్రింద చూపించిన వాక్యాన్ని ప్రింట్ అవ్వడం చూడాలి: ```output hello notebook ``` -![VS Code with a notebook open](../../../../translated_images/te/notebook.4a3ee31f396b8832.webp) +![notebook ఓపెన్ చేసిన VS Code](../../../../translated_images/te/notebook.4a3ee31f396b8832.webp) -మీరు మీ కోడ్‌ను వ్యాఖ్యలతో కలిపి నోట్బుక్‌ను స్వయంగా డాక్యుమెంట్ చేయవచ్చు. +మీ కోడ్‌ను సొంతంగా డాక్యుమెంట్ చేయడానికి వ్యాఖ్యలతో కలిపి నోట్బుక్‌లో చేర్చవచ్చు. -✅ ఒక వెబ్ డెవలపర్ వాతావరణం మరియు డేటా సైంటిస్ట్ వాతావరణం ఎంత భిన్నమో ఒక నిమిషం ఆలోచించండి. +✅ ఒక నిమిషం ఆలోచించండి: వెబ్ డెవలపర్ పని వాతావరణం మరియు డేటా సైన్తిస్ట్ పని వాతావరణం ఎంత భిన్నమో. -## 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 మీ లోకల్ వాతావరణంలో సెటప్ అయింది, మీరు జుపిటర్ నోట్బుక్‌లతో సౌకర్యవంతంగా ఉన్నారు, ఇప్పుడు Scikit-learn (దీన్ని `'sci'` అని ఉచ్చరించాలి, `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 for Beginners' పాఠ్యాంశంలో బాగా కవర్ చేయబడతాయి. +ఈ కోర్సులో మీరు Scikit-learn మరియు ఇతర సాధనాలు ఉపయోగించి మేము 'సాంప్రదాయ మెషిన్ లెర్నింగ్' పనులు చేయడానికి మోడల్స్ తయారుచేస్తారు. న్యూరల్ నెట్‌వర్క్స్ మరియు డీప్ లెర్నింగ్ నుండి deliberate గా దూరంగా ఉన్నాము, అవి రాబోయే 'AI ఫర్ బిగినర్స్' కార్యక్రమంలో మెరుగుగా చర్చించబడతాయి. -Scikit-learn మోడల్స్ నిర్మించడం మరియు వాటిని ఉపయోగానికి మూల్యాంకనం చేయడం సులభం చేస్తుంది. ఇది ప్రధానంగా సంఖ్యాత్మక డేటాను ఉపయోగించడంపై దృష్టి సారిస్తుంది మరియు విద్యార్థుల కోసం ఉపయోగించడానికి సిద్ధంగా ఉన్న అనేక డేటాసెట్‌లను కలిగి ఉంటుంది. ఇది విద్యార్థులు ప్రయత్నించడానికి ముందుగా నిర్మించిన మోడల్స్‌ను కూడా కలిగి ఉంది. ముందుగా ప్యాకేజ్డ్ డేటాను లోడ్ చేయడం మరియు Scikit-learn తో ప్రాథమిక డేటాతో ఒక బిల్ట్-ఇన్ ఎస్టిమేటర్ ఉపయోగించి మొదటి ML మోడల్‌ను అన్వేషిద్దాం. +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) నుండి ప్రేరణ పొందింది. +> ఈ ట్యుటోరియల్ Scikit-learn వెబ్‌సైట్ లోని [లీనియర్ రిగ్రెషన్ ఉదాహరణ](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) ఆధారంగా రూపొందింది. -[![ML for beginners - Your First Linear Regression Project in Python](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "ML for beginners - Your First Linear Regression Project in Python") +[![నవ ప్రవేశికల కోసం - Pythonలో మీ మొదటి లీనియర్ రిగ్రెషన్ ప్రాజెక్ట్](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "Pythonలో మీ మొదటి లీనియర్ రిగ్రెషన్ ప్రాజెక్ట్") -> 🎥 ఈ వ్యాయామం ద్వారా పని చేయడానికి పై చిత్రాన్ని క్లిక్ చేయండి. +> 🎥 ఈ వ్యాయామం ఆచరణలో చూపించే వీడియో కోసం పై చిత్రంపై క్లిక్ చేయండి. -ఈ పాఠానికి సంబంధించిన _notebook.ipynb_ ఫైల్‌లో, 'trash can' ఐకాన్‌ను నొక్కి అన్ని సెల్స్‌ను క్లియర్ చేయండి. +ఈ పాఠానికి సంబంధించిన _notebook.ipynb_ ఫైల్‌లో, 'trash can' ఐకాన్ నొక్కి అన్ని సెల్‌లను క్లియర్ చేయండి. -ఈ విభాగంలో, మీరు Scikit-learn లో నేర్చుకునే ప్రయోజనాల కోసం నిర్మించిన డయాబెటిస్ గురించి చిన్న డేటాసెట్‌తో పని చేస్తారు. మీరు డయాబెటిక్ రోగుల కోసం చికిత్సను పరీక్షించాలనుకుంటున్నారని ఊహించండి. మెషీన్ లెర్నింగ్ మోడల్స్ వేరియబుల్స్ కలయికల ఆధారంగా ఏ రోగులు చికిత్సకు మెరుగ్గా స్పందిస్తారో నిర్ణయించడంలో సహాయపడవచ్చు. ఒక చాలా ప్రాథమిక రిగ్రెషన్ మోడల్ కూడా, దృశ్యీకరించినప్పుడు, వేరియబుల్స్ గురించి సమాచారం చూపించి మీ సైద్ధాంతిక క్లినికల్ ట్రయల్స్‌ను సక్రమంగా నిర్వహించడంలో సహాయపడవచ్చు. +ఈ భాగంలో, మీరు సన్నని డయాబెటిస్ డేటాసెట్ తో పని చేస్తారు, ఇది 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. క్రింది కోడ్ టైప్ చేసి దిగుమతులు జోడించండి: +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` మరియు `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 ఫీచర్ వేరియబుల్స్‌తో, వాటిలో కొన్ని: -- వయస్సు: సంవత్సరాలలో వయస్సు -- bmi: బాడీ మాస్ ఇండెక్స్ -- bp: సగటు రక్తపోటు -- s1 tc: T-సెల్స్ (తెల్ల రక్త కణాల ఒక రకం) +- వయసు: సంవత్సరాలతో వయస్సు +- బిఎమ్ఐ: బాడీ మాస్ ఇండెక్స్ +- బిపి: సగటు రక్తపోటు +- 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) @@ -150,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) @@ -160,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వ కాలమ్‌ను సూచిక (2) ఉపయోగించి ఎంచుకోవచ్చు. ప్లాటింగ్ కోసం అవసరమైన 2D అర్రేగా డేటాను మార్చడానికి `reshape(n_rows, n_columns)` ఉపయోగించవచ్చు. ఒక పారామీటర్ -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 వంటి అనేక ML లైబ్రరీలలో కనిపించే ఫంక్షన్. + ✅ `model.fit()` అనేది మీరు TensorFlow వంటి ML లైబ్రరీస్ లో చూడగల ఫంక్షన్. -5. తరువాత, టెస్ట్ డేటా ఉపయోగించి `predict()` ఫంక్షన్ ద్వారా అంచనాను సృష్టించండి. ఇది డేటా గ్రూపుల మధ్య లైన్ డ్రా చేయడానికి ఉపయోగించబడుతుంది. +5. తరువాత, `predict()` ఫంక్షన్ ఉపయోగించి టెస్ట్ డేటాతో అంచనా (prediction) సృష్టించండి. ఇది డేటా గ్రూపుల మధ్య గానీ లైన్ గీయడానికి ఉపయోగించబడుతుంది. ```python y_pred = model.predict(X_test) ``` -6. ఇప్పుడు డేటాను ప్లాట్‌లో చూపించాల్సిన సమయం. Matplotlib ఈ పనికి చాలా ఉపయోగకరమైన సాధనం. అన్ని X మరియు y టెస్ట్ డేటా యొక్క స్కాటర్‌ప్లాట్ సృష్టించి, అంచనాను ఉపయోగించి మోడల్ డేటా గ్రూపుల మధ్య సరైన చోట లైన్ డ్రా చేయండి. +6. ఇప్పుడు డేటాను ప్లాట్ చేయడానికి సమయం. Matplotlib ఈ పనికి చాలా ఉపయోగకరం. X మరియు y టెస్ట్ డేటాలోని డేటాపాయింట్ల scatterplot ను సృష్టించి, అంచనా తీసుకున్న లైన్ ని మోడల్ డేటా గ్రూపుల మధ్య తగిన చోట గీయండి. ```python plt.scatter(X_test, y_test, color='black') @@ -203,30 +203,32 @@ Scikit-learn మోడల్స్ నిర్మించడం మరియ plt.show() ``` - ![a scatterplot showing datapoints around diabetes](../../../../translated_images/te/scatterplot.ad8b356bcbb33be6.webp) - ✅ ఇక్కడ ఏమి జరుగుతుందో కొంచెం ఆలోచించండి. ఒక సరళ రేఖ అనేక చిన్న డాటా బిందువుల ద్వారా నడుస్తోంది, కానీ అది నిజంగా ఏమి చేస్తోంది? మీరు ఈ రేఖను ఉపయోగించి కొత్త, చూడని డాటా పాయింట్ ప్లాట్ యొక్క y అక్షానికి సంబంధించి ఎక్కడ సరిపోతుందో ఎలా అంచనా వేయాలో చూడగలరా? ఈ మోడల్ యొక్క ప్రాక్టికల్ ఉపయోగాన్ని పదాలలో వ్యక్తం చేయడానికి ప్రయత్నించండి. + ![డయాబెటిస్ గురించి డేటాపాయింట్స్ చూపిస్తున్న స్కాటర్ప్లాట్](../../../../translated_images/te/scatterplot.ad8b356bcbb33be6.webp) -అభినందనలు, మీరు మీ మొదటి లీనియర్ రిగ్రెషన్ మోడల్‌ను నిర్మించారు, దానితో ఒక అంచనాను సృష్టించారు, మరియు దాన్ని ఒక ప్లాట్‌లో ప్రదర్శించారు! + + ✅ ఇక్కడ ఏమి జరుగుతుందో కొంచెం ఆలోచించండి. ఒక సూటా రేఖ చాలా చిన్న డేటా డాట్లన్ను దాటి పోతుంది, కానీ అది ఏమి చేస్తున్నది తేల్చుకోవాలి? మీరు కొత్త, కనిపించని డేటా పాయింట్ ఎక్కడ ఉంటుందో ఈ రేఖ ఉపయోగించి ముందస్తుగా అంచనా వేయడం ఎలా సాధ్యం అవుతుందో చూడగలరా? ఈ మోడల్ యొక్క ప్రాక్టికల్ ఉపయోగాన్ని పదాల్లో వ్యక్తం చేయడానికి ప్రయత్నించండి. + +అభినందనలు, మీరు మీ మొదటి లీనియర్ రిగ్రెషన్ మోడల్ నిర్మించి, దానితో ఒక అంచನాను సృష్టించి, దీనిని ఒక ప్లాట్‌లో ప్రదర్శించారూ! --- ## 🚀సవాలు -ఈ డేటాసెట్ నుండి వేరే వేరియబుల్‌ను ప్లాట్ చేయండి. సూచన: ఈ లైన్‌ను సవరించండి: `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/te/2-Regression/2-Data/README.md b/translations/te/2-Regression/2-Data/README.md index 5be610bf7..2f1d5a845 100644 --- a/translations/te/2-Regression/2-Data/README.md +++ b/translations/te/2-Regression/2-Data/README.md @@ -1,8 +1,8 @@ -# Scikit-learn ఉపయోగించి రిగ్రెషన్ మోడల్ నిర్మించండి: డేటాను సిద్ధం చేయండి మరియు విజువలైజ్ చేయండి +# Scikit-learn ఉపయోగించి రిగ్రెషన్ మోడల్‌ను నిర్మించండి: డేటా సిద్ధం చేయండి మరియు విజువలైజ్ చేయండి ![డేటా విజువలైజేషన్ ఇన్ఫోగ్రాఫిక్](../../../../translated_images/te/data-visualization.54e56dded7c1a804.webp) -ఇన్ఫోగ్రాఫిక్ [దాసాని మడిపల్లి](https://twitter.com/dasani_decoded) ద్వారా +ఇన్ఫోగ్రాఫిక్ [Dasani Madipalli](https://twitter.com/dasani_decoded) చేత ## [ప్రీ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ml/) @@ -10,53 +10,53 @@ ## పరిచయం -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) ను పరిశీలించండి. ఈ .csv ఫైల్‌ను VS Code లో తెరవొచ్చు. చురుకైన పరిశీలన వెంటనే తెలియజేస్తుంది ఈ డేటాలో ఖాళీలు, స్ట్రింగ్స్ మరియు సంఖ్యల మిశ్రమం ఉందని. 'Package' అనే విచిత్రమైన కాలమ్ కూడా ఉంది, డేటా 'sacks', 'bins' మరియు ఇతర విలువల మిశ్రమంగా ఉంది. వాస్తవానికి, డేటా కొంత అసమంజసంగా ఉంది. -[![ML for beginners - How to Analyze and Clean a Dataset](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML for beginners - How to Analyze and Clean a Dataset") +[![ML for beginners - ఒక డేటాసెట్‌ను ఎలా విశ్లేషించి శుభ్రం చేయాలి](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML for beginners - ఒక డేటాసెట్‌ను ఎలా విశ్లేషించి శుభ్రం చేయాలి") -> 🎥 ఈ పాఠం కోసం డేటాను సిద్ధం చేయడాన్ని చూపించే చిన్న వీడియో కోసం పై చిత్రాన్ని క్లిక్ చేయండి. +> 🎥 ఈ పాఠానికి డేటాను సిద్ధం చేసే సంక్షిప్త వీడియో కోసం పై చిత్రం క్లిక్ చేయండి. -వాస్తవానికి, పూర్తిగా ఉపయోగించడానికి సిద్ధంగా ఉన్న డేటాసెట్‌ను బహుమతిగా పొందడం చాలా సాధారణం కాదు. ఈ పాఠంలో, మీరు ప్రామాణిక 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) అనే .csv ఫైల్‌ను కనుగొంటారు, దీనిలో సిటీల వారీగా వర్గీకరించిన 1757 లైన్లుగా pumpkins మార్కెట్ గురించి డేటా ఉంది. ఇది యునైటెడ్ స్టేట్స్ డిపార్ట్‌మెంట్ ఆఫ్ అగ్రికల్చర్ పంపిణీ చేసే [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. తేదీలను నెల ఫార్మాట్‌గా మార్చండి (ఇవి 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()` ఫంక్షన్‌ను ఉపయోగించండి. +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` కాలమ్స్ సగటు తీసుకోవడం, మరియు 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` కాలమ్ గమనిస్తే, pumpkins అనేక రకాలుగా అమ్మబడుతున్నాయి. కొంత '1 1/9 bushel' కొలమానం, కొంత '1/2 bushel', కొంత pumpkin ప్రాతినిథ్యం, మరికొంత పౌండ్ల అనుగుణంగా, ఇంకా కొంత పెద్ద బాక్సుల్లో వివిధ వెడల్పులతో. -> పంప్కిన్లను సరిగ్గా తూగడం చాలా కష్టం అనిపిస్తుంది +> pumpkins ని స్థిరంగా తూకం పంపించడం చాలా కష్టం అని కనిపిస్తోంది -మూల డేటాలో లోతుగా చూస్తే, `Unit of Sale` 'EACH' లేదా 'PER BIN' ఉన్న వాటికి `Package` రకం అంగుళం, బిన్ లేదా 'each' అని ఉంటుంది. పంప్కిన్లను సరిగ్గా తూగడం చాలా కష్టం కనుక, `Package` కాలమ్‌లో 'bushel' స్ట్రింగ్ ఉన్న పంప్కిన్లను మాత్రమే ఎంచుకుని ఫిల్టర్ చేద్దాం. +అసలు డేటాలో చూపిస్తున్నట్లుగా, `Unit of Sale` 'EACH' లేదా 'PER BIN' గా ఉన్న ఏదైనా `Package` రకం అంగుళం, బిన్, లేదా 'each'గా వుంది. pumpkins ని స్థిరంగా తూకం పంపించడం చాలా కష్టం కనుక, వారి `Package` కాలమ్లో 'bushel' స్ట్రింగ్ ఉన్న pumpkins మాత్రమే ఎంచుకుని ఫిల్టర్ చేయండి. -1. ఫైల్ ప్రారంభంలో, మొదటి .csv దిగుమతి కింద ఫిల్టర్ జోడించండి: +1. ఫైల్ ప్రారంభంలో, మొదటి .csv దిగుమతుల తర్వాత ఫిల్టర్ జోడించండి: ```python pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)] ``` - ఇప్పుడు మీరు డేటాను ప్రింట్ చేస్తే, మీరు బుషెల్ ద్వారా పంప్కిన్లను కలిగిన సుమారు 415 వరుసల డేటాను మాత్రమే పొందుతున్నారని చూడగలుగుతారు. + మీరు ఇప్పుడు డేటాను ప్రింట్ చేస్తే, మీరు బస్సెల్ ద్వారా pumpkins కలిగి ఉన్న సుమారు 415 ఎంట్రీలను మాత్రమే చూస్తారు. -### కానీ వేచి ఉండండి! ఇంకా ఒక పని చేయాలి +### కానీ! ఇంకో పని ఒకది చేయాల్సి ఉంది -మీరు గమనించారా, బుషెల్ పరిమాణం వరుసల వారీగా మారుతుంది? మీరు ధరలను బుషెల్‌కు అనుగుణంగా సాధారణీకరించాలి, కాబట్టి ధరలను బుషెల్‌కు సరిపడేలా గణితం చేయండి. +మీరు గమనిస్తారా, ప్రతి పంగ్తిలో బస్సెల్ పరిమాణం మారుతుంది? మీరు ధరలను ఒకే ప్రమాణంలో చూపించాలంటే, బస్సెల్ ప్రామాణానికి సరిపడ도록 గణితశాస్త్రం చేయాలి. -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 పౌండ్ల మాత్రమే ఉంటుంది." ఇది చాలా జటిలం! బస్సెల్ నుండి పౌండ్లకు మార్పిడి చేయకుండా బస్సెల్ ప్రకారం ధరను చూపిద్దాం. పంప్కిన్ బస్సెల్స్ పై ఈ అధ్యయనం మీ డేటా స్వభావాన్ని అర్థం చేసుకోవటం ఎంత ముఖ్యం అనేది చూపిస్తుంది! -ఇప్పుడు, మీరు బుషెల్ కొలత ఆధారంగా యూనిట్ ధరలను విశ్లేషించవచ్చు. మీరు డేటాను మరలా ప్రింట్ చేస్తే, అది ఎలా సాధారణీకరించబడిందో చూడవచ్చు. +ఇప్పుడు, మీరు బస్సెల్ కొలత ఆధారంగా యూనిట్ ప్రైసింగ్‌ను విశ్లేషించవచ్చు. మీరు ఒక దఫా మరల డేటా ప్రింట్ చేస్తే, అది ఎలా ప్రమాణీకరించబడిందో చూడగలరు. -✅ మీరు గమనించారా, సగం బుషెల్ ద్వారా అమ్మే పంప్కిన్లు చాలా ఖరీదైనవి? ఎందుకని మీరు అర్థం చేసుకోగలరా? సూచన: చిన్న పంప్కిన్లు పెద్ద వాటికంటే చాలా ఎక్కువ ధర కలిగి ఉంటాయి, ఎందుకంటే పెద్ద హాలో పాయ్ పంప్కిన్ తీసుకునే ఉపయోగించని స్థలం కారణంగా బుషెల్‌కు చాలా ఎక్కువ చిన్న పంప్కిన్లు ఉంటాయి. +✅ మీరు గమనించారా, అর্ধ బస్సెల్ ద్వారా అమ్ముతున్న pumpkins చాలా ఖరీదైనవి. దీని కారణం మీకు అర్థమవుతుందా? సూచన: చిన్న pumpkins పెద్ద pumpkins కంటే చాలా ఎక్కువ ధర కలుగుతుంది, ఎందుకంటే పెద్ద బస్సెల్ ఓ పెద్ద, ఖాళీ పిండి పంప్కిన్ తీసుకునే స్థలాన్ని తగ్గిస్తుంది, అందుబాటులో లేని స్థలం కారణంగా ఎక్కువ pumpkins ఉంటాయి. -## విజువలైజేషన్ వ్యూహాలు +## విజువలైజేషన్ యుక్తులు -డేటా సైంటిస్ట్ పాత్రలో భాగంగా వారు పని చేస్తున్న డేటా నాణ్యత మరియు స్వభావాన్ని ప్రదర్శించడం ఉంటుంది. దీని కోసం, వారు తరచుగా ఆసక్తికరమైన విజువలైజేషన్లు, ప్లాట్లు, గ్రాఫ్లు మరియు చార్ట్లు సృష్టిస్తారు, డేటా వివిధ కోణాలను చూపిస్తూ. ఈ విధంగా, వారు بصریంగా సంబంధాలు మరియు గ్యాప్స్ చూపగలుగుతారు, ఇవి ఇతరथा కనుగొనడం కష్టం. +డేటా శాస్త్రవేత్తగా మీ పని భాగం మీరు పని చేస్తున్న డేటా నాణ్యత మరియు స్వభావాన్ని ప్రదర్శించడం. దీని కోసం, వారు తరచుగా వివిధ డేటా పార్శ్వాలను చూపించే ఆసక్తికరమైన విజువలైజేషన్లు, ప్లాట్లు, గ్రాఫ్లు, చార్ట్లు తయారుచేస్తారు. అలా చేస్తే, సానుకూల సంబంధాలు మరియు గ్యాప్‌లు చూపించబడతాయి, ఇవి మరలా కనుగొనడం కష్టమైనవి. -[![ML for beginners - How to Visualize Data with Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML for beginners - How to Visualize Data with Matplotlib") +[![ML for beginners - Matplotlib తో డేటా విజువలైజ్ ఎలా చేయాలి](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML for beginners - 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 తో ప్రయోగం చేయండి -మీరు సృష్టించిన కొత్త డేటాఫ్రేమ్‌ను ప్రదర్శించడానికి కొన్ని ప్రాథమిక ప్లాట్లు సృష్టించడానికి ప్రయత్నించండి. ఒక ప్రాథమిక లైన్ ప్లాట్ ఏమి చూపిస్తుంది? +మీరు సృష్టించిన కొత్త డేటాఫ్రేమ్ ప్రదర్శించడానికి కొంత సరళమైన ప్లాట్లు తయారుచేయండి. ఒక సాధారణ లైన్ ప్లాట్ ఏం చూపిస్తుంది? -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() ``` - ![ధర మరియు నెల సంబంధాన్ని చూపించే స్కాటర్‌ప్లాట్](../../../../translated_images/te/scatterplot.b6868f44cbd2051c.webp) + ![ధర మరియు నెల సంబంధం చూపించే స్కాటర్‌ప్లాట్](../../../../translated_images/te/scatterplot.b6868f44cbd2051c.webp) - ఇది ఉపయోగకరమైన ప్లాట్నా? ఇందులో ఏదైనా ఆశ్చర్యకరమైనది ఉందా? + ఇది ఉపయోగకరమైన ప్లాట్ అని మీరు అనుకుంటారా? ఏమీ మీరు ఆశ్చర్యపరుస్తుందా? - ఇది ప్రత్యేకంగా ఉపయోగకరం కాదు, ఎందుకంటే ఇది మీ డేటాను ఒక నెలలో పాయింట్ల విస్తరణగా మాత్రమే ప్రదర్శిస్తుంది. + ఇది అంతగా ఉపయోగకరం కాదు, ఎందుకంటే ఇది కేవలం మీ డేటాను ఒక నెలలో పాయింట్లు ఆవర్తనంగా మాత్రమే చూపుతోంది. -### దీన్ని ఉపయోగకరంగా చేయండి +### ఉపయోగకరంగా మార్చండి -చార్ట్లు ఉపయోగకరమైన డేటాను ప్రదర్శించాలంటే, మీరు సాధారణంగా డేటాను ఏదో విధంగా గ్రూప్ చేయాలి. నెలలను y అక్షంగా చూపించే మరియు డేటా పంపిణీని ప్రదర్శించే ప్లాట్ సృష్టించడానికి ప్రయత్నిద్దాం. +డేటాను ఉపయోగకరంగా చూపించాలంటే, మీరు సాధారణంగా డేటాను ఏదో విధంగా సమూహాలుగా పంచడం చాలా అవసరం. y అక్షం నెలలను చూపిస్తూ, డేటా పంపిణీని చూపించే ప్లాట్ తయారుచేయాలని ప్రయత్నిద్దాం. -1. గ్రూప్ చేసిన బార్ చార్ట్ సృష్టించడానికి ఒక సెల్ జోడించండి: +1. సమూహ బార్ చార్ట్ సృష్టించడానికి సెల్ జోడించండి: ```python new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') plt.ylabel("Pumpkin Price") ``` - ![ధర మరియు నెల సంబంధాన్ని చూపించే బార్ చార్ట్](../../../../translated_images/te/barchart.a833ea9194346d76.webp) + ![ధర మరియు నెల సంబంధం చూపించే బార్ చార్ట్](../../../../translated_images/te/barchart.a833ea9194346d76.webp) + + ఇది మరింత ఉపయోగకరమైన డేటా విజువలైజేషన్! pumpkins కి అత్యధిక ధర సెప్టెంబర్ మరియు అక్టోబర్ నెలల్లో ఉందని ఇది సూచిస్తుంది. మీ అంచనాలకు ఇది సరిపోతుందా? ఎందుకు లేదా ఎందుకు కాదు? + +## వ్యాయామం - 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](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 స్కాటర్‌ప్లాట్](../../../../translated_images/te/relplot.a03837d8f0329cec.webp) + + మీరు కాలమ్ పేర్లను మరియు డేటాఫ్రేమ్‌ని ఎలా పాస్ చేస్తున్నారో గమనించండి, Seaborn ఆక్సిస్ లేబుల్స్‌ను మీ తరఫున చూసుకుంటుంది. + +2. `kind="line"` ను పాస్ చేసి లైన్ ప్లాట్‌కు మారవచ్చు. Seaborn లైన్ చుట్టూ విశ్వసనతా అంతరాన్ని చూపించే షేడెడ్ బ్యాండ్ కూడా డ్రా చేస్తుంది: + + ```python + sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins) + ``` + + ![ధర మరియు నెల సంబంధం చూపించే Seaborn లైన్ ప్లాట్](../../../../translated_images/te/lineplot.f9034ba47b1e30ee.webp) + + ఈ విశిష్ట డేటా చాలా శబ్దంతో ఉందని, కాబట్టి లైన్ ప్లాట్ స్పష్టమైన ఎంపిక కాదు — కానీ 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") + ``` + + ![నెల వారీగా ధర పంపిణీని చూపించే సీబోర్న్ బార్ చార్ట్](../../../../translated_images/te/catplot.e73fc35fdf96242b.webp) + + ఇది మీరు 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") + ``` + + ![సంఖ్యాత్మక కాలమ్స్ మధ్య సంబంధాలను చూపించే సీబోర్న్ హీట్మ్యాప్](../../../../translated_images/te/heatmap.bd98dce43b404c57.webp) + + `1` (లేదా `-1`) కి దగ్గరగా విలువలు అంటే కాలమ్స్ బలమైన _రేఖీయ_ సంబంధాన్ని కలిగి ఉంటాయి. `Low Price` మరియు `High Price` చాలా తగిన విధంగా సంబంధం ఉన్నట్లు గమనించండి. మరోవైపు, `Month` ధరతో బలమైన రేఖీయ సంబంధం చూపించదు — అయితే పై బార్ చార్ట్ సెప్టెంబర్ మరియు అక్టోబర్‌లో స్పష్టమైన సీజనల్ శిఖరం చూపించింది. ఇది ముఖ్యమైన పాఠం: సంబంధ గుణకము _సరియైన_ సంబంధాలను మాత్రమే కొలుస్తుంది, కాబట్టి సీజనల్ లేదా ఇతర రీతిలో రేఖీయ కాని నమూనాలను మూసివేయొచ్చు. ✅ బార్ చార్ట్ వంటి చార్ట్‌లు మరియు హీట్మ్యాప్ రెండింటినీ చూడటం ఎందుకు ఉపయోగకరమో? + +### Matplotlib లేదా Seaborn? + +రెండు లైబ్రరీలు తెలుసుకోవడం లాభదాయకం: + +- **Matplotlib** ప్రతి చార్ట్ మూలకం మీద మీరు శ్రేణిపరమైన నియంత్రణను అందిస్తుంది మరియు ఇది మరిన్ని Python ప్లాటింగ్ లైబ్రరీలు స్థాపించునప్పుడు ఆదారంగా ఉంటుంది. +- **Seaborn** గణాంక చార్ట్స్ కోసం అధిక-స్థాయి ఫంక్షన్లు మరియు ఆకర్షణీయమైన డీఫాల్ట్‌లు అందిస్తుంది, నేరుగా డేటాఫ్రేమ్‌లతో పని చేస్తుంది, మరియు అన్వేషణాత్మక డేటా విశ్లేషణ కోసం త్వరగా ఉంటుంది. - ఇది మరింత ఉపయోగకరమైన డేటా విజువలైజేషన్! ఇది పంప్కిన్ ధర సెప్టెంబర్ మరియు అక్టోబర్‌లో అత్యధికంగా ఉంటుందని సూచిస్తుంది. ఇది మీ అంచనాకు సరిపోతుందా? ఎందుకు లేదా ఎందుకు కాదు? +సాధారణ వర్క్‌ఫ్లోగా, మీరు మీ డేటాను త్వరగా అన్వేషించడానికి Seaborn ఉపయోగించి, తరువాత వివరాలను సరిచేసుకోవడానికి Matplotlib కి దిగండి. --- ## 🚀సవాలు -Matplotlib అందించే వివిధ రకాల విజువలైజేషన్లను అన్వేషించండి. రిగ్రెషన్ సమస్యలకు ఏ రకాలు అత్యంత అనుకూలంగా ఉంటాయి? +Matplotlib మరియు Seaborn అందించే వేర్వేరు దృశ్య రూపీకరణ రకాలను అన్వేషించండి. రిగ్రెషన్ సమస్యలకు ఏ రకాలు ఎక్కువగా తగినవిగా ఉంటాయి? -## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ml/) +## [లెక్చర్ తర్వాత క్విజ్](https://ff-quizzes.netlify.app/en/ml/) ## సమీక్ష & స్వీయ అధ్యయనం -డేటాను విజువలైజ్ చేయడానికి అనేక మార్గాలను పరిశీలించండి. వివిధ లైబ్రరీల జాబితాను తయారుచేసి, ఏవి ఏ రకాల పనులకు ఉత్తమం అవుతాయో గమనించండి, ఉదాహరణకు 2D విజువలైజేషన్లు vs. 3D విజువలైజేషన్లు. మీరు ఏమి కనుగొంటారు? +వివిధ మార్గాల్లో డేటాను దృశ్యీకరించే పద్ధతులను పరిశీలించండి. వివిధ లైబ్రరీలను జతచేసి వాటిలో ఏవి ఏ రకమైన పనులకు ఉత్తమమో గుర్తించండి, ఉదాహరణకు 2D vs 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/te/2-Regression/2-Data/solution/notebook.ipynb b/translations/te/2-Regression/2-Data/solution/notebook.ipynb index 03d7e6587..04cd50b5b 100644 --- a/translations/te/2-Regression/2-Data/solution/notebook.ipynb +++ b/translations/te/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:41+00:00", - "source_file": "2-Regression/2-Data/solution/notebook.ipynb", - "language_code": "te" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/th/.co-op-translator.json b/translations/th/.co-op-translator.json index c3077d206..2f74cc8ab 100644 --- a/translations/th/.co-op-translator.json +++ b/translations/th/.co-op-translator.json @@ -24,8 +24,8 @@ "language_code": "th" }, "1-Introduction/3-fairness/README.md": { - "original_hash": "9a6b702d1437c0467e3c5c28d763dac2", - "translation_date": "2025-09-05T21:37:46+00:00", + "original_hash": "0f00d72169a0d37eecfd16d71e01700a", + "translation_date": "2026-07-14T05:41:01+00:00", "source_file": "1-Introduction/3-fairness/README.md", "language_code": "th" }, @@ -54,8 +54,8 @@ "language_code": "th" }, "2-Regression/1-Tools/README.md": { - "original_hash": "fa81d226c71d5af7a2cade31c1c92b88", - "translation_date": "2025-09-05T21:12:27+00:00", + "original_hash": "0b8635427b582d03ea4ab7089b93e505", + "translation_date": "2026-07-14T05:36:20+00:00", "source_file": "2-Regression/1-Tools/README.md", "language_code": "th" }, @@ -72,8 +72,8 @@ "language_code": "th" }, "2-Regression/2-Data/README.md": { - "original_hash": "7c077988328ebfe33b24d07945f16eca", - "translation_date": "2025-09-05T21:15:17+00:00", + "original_hash": "a58b2c4d16c6b122643391745ac15af6", + "translation_date": "2026-07-14T05:37:28+00:00", "source_file": "2-Regression/2-Data/README.md", "language_code": "th" }, @@ -89,6 +89,12 @@ "source_file": "2-Regression/2-Data/solution/Julia/README.md", "language_code": "th" }, + "2-Regression/2-Data/solution/notebook.ipynb": { + "original_hash": "96b95f8cf473481f2f371de8156f1571", + "translation_date": "2026-07-14T05:08:25+00:00", + "source_file": "2-Regression/2-Data/solution/notebook.ipynb", + "language_code": "th" + }, "2-Regression/3-Linear/README.md": { "original_hash": "8b776e731c35b171d316d01d0e7b1369", "translation_date": "2026-04-26T20:20:01+00:00", @@ -457,7 +463,7 @@ }, "8-Reinforcement/1-QLearning/README.md": { "original_hash": "911efd5e595089000cb3c16fce1beab8", - "translation_date": "2025-09-05T22:02:45+00:00", + "translation_date": "2026-07-14T05:38:43+00:00", "source_file": "8-Reinforcement/1-QLearning/README.md", "language_code": "th" }, @@ -481,7 +487,7 @@ }, "8-Reinforcement/2-Gym/README.md": { "original_hash": "107d5bb29da8a562e7ae72262d251a75", - "translation_date": "2025-09-05T22:08:02+00:00", + "translation_date": "2026-07-14T05:39:54+00:00", "source_file": "8-Reinforcement/2-Gym/README.md", "language_code": "th" }, @@ -523,7 +529,7 @@ }, "9-Real-World/2-Debugging-ML-Models/README.md": { "original_hash": "df2b538e8fbb3e91cf0419ae2f858675", - "translation_date": "2025-09-05T21:34:30+00:00", + "translation_date": "2026-07-14T05:42:15+00:00", "source_file": "9-Real-World/2-Debugging-ML-Models/README.md", "language_code": "th" }, @@ -581,6 +587,19 @@ "source_file": "TROUBLESHOOTING.md", "language_code": "th" }, + "__translation_failures__": { + "sketchnotes/LICENSE.md": { + "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f", + "source_file": "sketchnotes/LICENSE.md", + "language_code": "th", + "failure_date": "2026-07-14T05:35:22+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-05T21:30:40+00:00", diff --git a/translations/th/1-Introduction/3-fairness/README.md b/translations/th/1-Introduction/3-fairness/README.md index 4ba50ff35..9617d30d7 100644 --- a/translations/th/1-Introduction/3-fairness/README.md +++ b/translations/th/1-Introduction/3-fairness/README.md @@ -1,140 +1,167 @@ -# การสร้างโซลูชัน Machine Learning ด้วย AI ที่มีความรับผิดชอบ - -![ภาพสรุปเกี่ยวกับ AI ที่มีความรับผิดชอบใน Machine Learning](../../../../sketchnotes/ml-fairness.png) -> ภาพวาดโดย [Tomomi Imura](https://www.twitter.com/girlie_mac) - -## [แบบทดสอบก่อนเรียน](https://ff-quizzes.netlify.app/en/ml/) +# การสร้างโซลูชัน Machine Learning ด้วย AI ที่มีความรับผิดชอบ + +![สรุปเกี่ยวกับ AI ที่มีความรับผิดชอบใน Machine Learning ในรูปแบบสเก็ตช์โน้ต](../../../../translated_images/th/ml-fairness.ef296ebec6afc98a.webp) +> สเก็ตช์โน้ตโดย [Tomomi Imura](https://www.twitter.com/girlie_mac) +## [แบบทดสอบก่อนบรรยาย](https://ff-quizzes.netlify.app/en/ml/) + ## บทนำ -ในหลักสูตรนี้ คุณจะเริ่มค้นพบว่า Machine Learning มีผลกระทบต่อชีวิตประจำวันของเราอย่างไร แม้ในปัจจุบัน ระบบและโมเดลต่าง ๆ มีบทบาทในงานตัดสินใจประจำวัน เช่น การวินิจฉัยทางการแพทย์ การอนุมัติสินเชื่อ หรือการตรวจจับการฉ้อโกง ดังนั้นจึงเป็นสิ่งสำคัญที่โมเดลเหล่านี้จะต้องทำงานได้ดีเพื่อให้ผลลัพธ์ที่น่าเชื่อถือ เช่นเดียวกับแอปพลิเคชันซอฟต์แวร์ใด ๆ ระบบ AI อาจไม่เป็นไปตามความคาดหวังหรือมีผลลัพธ์ที่ไม่พึงประสงค์ นั่นคือเหตุผลที่เราต้องสามารถเข้าใจและอธิบายพฤติกรรมของโมเดล AI ได้ +ในหลักสูตรนี้ คุณจะเริ่มค้นพบว่า machine learning ส่งผลกระทบต่อชีวิตประจำวันของเราอย่างไร แม้ในปัจจุบัน ระบบและโมเดลต่างๆ มีส่วนเกี่ยวข้องกับการตัดสินใจในชีวิตประจำวัน เช่น การวินิจฉัยทางการแพทย์ การอนุมัติเงินกู้ หรือการตรวจจับการฉ้อโกง ดังนั้นจึงเป็นสิ่งสำคัญที่โมเดลเหล่านี้จะต้องทำงานได้ดีเพื่อให้ผลลัพธ์ที่น่าเชื่อถือ เช่นเดียวกับแอปพลิเคชันซอฟต์แวร์ใด ๆ ระบบ AI ย่อมมีโอกาสพลาดความคาดหวังหรือให้ผลลัพธ์ที่ไม่พึงประสงค์ ดังนั้นจึงเป็นสิ่งจำเป็นที่จะต้องเข้าใจและอธิบายพฤติกรรมของโมเดล AI ได้ -ลองจินตนาการถึงสิ่งที่อาจเกิดขึ้นเมื่อข้อมูลที่คุณใช้สร้างโมเดลเหล่านี้ขาดแคลนกลุ่มประชากรบางกลุ่ม เช่น เชื้อชาติ เพศ มุมมองทางการเมือง ศาสนา หรือมีการแสดงกลุ่มประชากรเหล่านี้อย่างไม่สมดุล หรือเมื่อผลลัพธ์ของโมเดลถูกตีความว่าให้ความสำคัญกับกลุ่มประชากรบางกลุ่ม ผลกระทบต่อแอปพลิเคชันจะเป็นอย่างไร? นอกจากนี้ หากโมเดลมีผลลัพธ์ที่เป็นอันตรายต่อผู้คน ใครจะเป็นผู้รับผิดชอบต่อพฤติกรรมของระบบ AI? นี่คือคำถามบางส่วนที่เราจะสำรวจในหลักสูตรนี้ +ลองนึกภาพสิ่งที่จะเกิดขึ้นเมื่อข้อมูลที่คุณใช้สร้างโมเดลเหล่านี้ขาดกลุ่มประชากรบางกลุ่ม เช่น เชื้อชาติ เพศ มุมมองทางการเมือง ศาสนา หรือมีการเป็นตัวแทนของกลุ่มประชากรเหล่านั้นอย่างไม่สมดุล แล้วถ้าผลลัพธ์ของโมเดลถูกตีความให้เอียงไปทางกลุ่มประชากรบางกลุ่มล่ะ? ผลลัพธ์นั้นมีผลกระทบต่อแอปพลิเคชันอย่างไร? นอกจากนี้ หากโมเดลมีผลลัพธ์ที่เป็นอันตรายและทำร้ายผู้คน ใครคือผู้รับผิดชอบต่อพฤติกรรมของระบบ AI เหล่านี้? นี่คือคำถามบางส่วนที่เราจะสำรวจในหลักสูตรนี้ -ในบทเรียนนี้ คุณจะ: +ในบทเรียนนี้ คุณจะได้: -- ตระหนักถึงความสำคัญของความเป็นธรรมใน Machine Learning และผลกระทบที่เกี่ยวข้องกับความไม่เป็นธรรม -- เรียนรู้การสำรวจค่าผิดปกติและสถานการณ์ที่ไม่ปกติเพื่อให้มั่นใจในความน่าเชื่อถือและความปลอดภัย -- เข้าใจถึงความจำเป็นในการออกแบบระบบที่ครอบคลุมเพื่อให้ทุกคนมีส่วนร่วม -- สำรวจความสำคัญของการปกป้องความเป็นส่วนตัวและความปลอดภัยของข้อมูลและผู้คน -- เห็นความสำคัญของการมีแนวทางแบบ "กล่องแก้ว" เพื่ออธิบายพฤติกรรมของโมเดล AI -- ตระหนักถึงความสำคัญของความรับผิดชอบในการสร้างความไว้วางใจในระบบ AI +- เพิ่มความตระหนักรู้เกี่ยวกับความสำคัญของความยุติธรรมใน machine learning และอันตรายที่เกี่ยวข้องกับความยุติธรรม +- คุ้นเคยกับการสำรวจข้อมูลแปลกปลอมและสถานการณ์ที่ผิดปกติเพื่อให้แน่ใจในความน่าเชื่อถือและความปลอดภัย +- เข้าใจความจำเป็นในการส่งเสริมทุกคนโดยการออกแบบระบบที่ครอบคลุม +- สำรวจความสำคัญในการปกป้องความเป็นส่วนตัวและความปลอดภัยของข้อมูลและผู้คน +- เห็นความสำคัญของการใช้วิธีแบบ "กล่องแก้ว" เพื่ออธิบายพฤติกรรมของโมเดล AI +- ตระหนักถึงความจำเป็นของความรับผิดชอบเพื่อสร้างความไว้วางใจในระบบ AI -## ความรู้พื้นฐานที่จำเป็น +## ข้อกำหนดเบื้องต้น -ก่อนเริ่มต้นบทเรียนนี้ โปรดเรียนรู้เกี่ยวกับ "หลักการ AI ที่มีความรับผิดชอบ" และดูวิดีโอด้านล่างในหัวข้อที่เกี่ยวข้อง: +เป็นข้อกำหนดเบื้องต้น โปรดทำเส้นทางการเรียนรู้ "หลักการ AI ที่มีความรับผิดชอบ" และดูวิดีโอต่อไปนี้ในหัวข้อนี้: -เรียนรู้เพิ่มเติมเกี่ยวกับ 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) -[![Microsoft's Approach to Responsible AI](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoft's Approach to Responsible AI") +[![แนวทางของ Microsoft ต่อ AI ที่มีความรับผิดชอบ](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "แนวทางของ Microsoft ต่อ 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) +- **การดูหมิ่น** การวิจารณ์หรือติดป้ายอย่างไม่ยุติธรรม เช่น เทคโนโลยีการติดป้ายภาพที่ระบุคนผิวคล้ำเป็นกอริลลา +- **การเป็นตัวแทนมากเกินหรือขาดแคลน** แนวคิดที่ว่ากลุ่มคนบางกลุ่มไม่เห็นในวิชาชีพหนึ่ง และบริการหรือหน้าที่ใดที่ยังคงส่งเสริมสิ่งนั้นจะเป็นการเพิ่มอันตราย +- **การเหมารวม** การจับกลุ่มคนหนึ่งกับลักษณะเฉพาะที่ถูกกำหนดไว้ล่วงหน้า เช่น ระบบแปลภาษาระหว่างอังกฤษและตุรกีที่อาจมีความไม่ถูกต้องเนื่องจากคำที่มีการเชื่อมโยงแบบเหมารวมกับเพศ -![การแปลเป็นภาษาตุรกี](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) -> การแปลเป็นภาษาตุรกี +![แปลเป็นภาษาตุรกี](../../../../translated_images/th/gender-bias-translate-en-tr.f185fd8822c2d437.webp) +> แปลเป็นภาษาตุรกี -![การแปลกลับเป็นภาษาอังกฤษ](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) -> การแปลกลับเป็นภาษาอังกฤษ +![แปลกลับเป็นภาษาอังกฤษ](../../../../translated_images/th/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) +> แปลกลับเป็นภาษาอังกฤษ -เมื่อออกแบบและทดสอบระบบ AI เราต้องมั่นใจว่า AI มีความเป็นธรรมและไม่ได้ถูกตั้งโปรแกรมให้ตัดสินใจที่มีอคติหรือเลือกปฏิบัติ ซึ่งมนุษย์เองก็ถูกห้ามไม่ให้ทำ การรับประกันความเป็นธรรมใน AI และ Machine Learning ยังคงเป็นความท้าทายที่ซับซ้อนทั้งในด้านสังคมและเทคนิค +เมื่อออกแบบและทดสอบระบบ AI เราต้องมั่นใจว่า AI ยุติธรรมและไม่ได้ถูกโปรแกรมให้ตัดสินใจอย่างลำเอียงหรือเลือกปฏิบัติ ซึ่งมนุษย์เองก็ถูกห้ามไม่ให้กระทำเช่นเดียวกัน การรับประกันความยุติธรรมใน AI และ machine learning ยังคงเป็นความท้าทายเชิงสังคมเทคนิคที่ซับซ้อน ### ความน่าเชื่อถือและความปลอดภัย -เพื่อสร้างความไว้วางใจ ระบบ AI จำเป็นต้องมีความน่าเชื่อถือ ปลอดภัย และสม่ำเสมอภายใต้เงื่อนไขปกติและไม่ปกติ สิ่งสำคัญคือต้องรู้ว่าระบบ AI จะมีพฤติกรรมอย่างไรในสถานการณ์ต่าง ๆ โดยเฉพาะเมื่อเป็นค่าผิดปกติ เมื่อสร้างโซลูชัน 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 จะระบุและจัดการกับอุปสรรคในระบบที่อาจกีดกันผู้คนโดยไม่ตั้งใจ เช่น มีผู้พิการประมาณ 1 พันล้านคนทั่วโลก ด้วยความก้าวหน้าของ AI พวกเขาสามารถเข้าถึงข้อมูลและโอกาสต่างๆ ได้ง่ายขึ้นในชีวิตประจำวัน การแก้ไขอุปสรรคเหล่านี้เปิดโอกาสให้นวัตกรรมและพัฒนาผลิตภัณฑ์ AI ที่มีประสบการณ์ดียิ่งขึ้นซึ่งเป็นประโยชน์ต่อทุกคน -> [🎥 คลิกที่นี่เพื่อดูวิดีโอ: การมีส่วนร่วมใน AI](https://www.microsoft.com/videoplayer/embed/RE4vl9v) +> [🎥 คลิกที่นี่เพื่อดูวิดีโอ: ความครอบคลุมใน AI](https://www.microsoft.com/videoplayer/embed/RE4vl9v) ### ความปลอดภัยและความเป็นส่วนตัว -ระบบ AI ควรมีความปลอดภัยและเคารพความเป็นส่วนตัวของผู้คน ผู้คนมีความไว้วางใจน้อยลงในระบบที่ทำให้ความเป็นส่วนตัว ข้อมูล หรือชีวิตของพวกเขาตกอยู่ในความเสี่ยง เมื่อฝึกโมเดล Machine Learning เราอาศัยข้อมูลเพื่อให้ได้ผลลัพธ์ที่ดีที่สุด ในการทำเช่นนั้น แหล่งที่มาของข้อมูลและความสมบูรณ์ของข้อมูลต้องได้รับการพิจารณา ตัวอย่างเช่น ข้อมูลนั้นถูกส่งโดยผู้ใช้หรือเป็นข้อมูลสาธารณะ? นอกจากนี้ ในขณะที่ทำงานกับข้อมูล จำเป็นต้องพัฒนาระบบ AI ที่สามารถปกป้องข้อมูลที่เป็นความลับและต้านทานการโจมตีได้ เมื่อ AI มีบทบาทมากขึ้น การปกป้องความเป็นส่วนตัวและการรักษาความปลอดภัยของข้อมูลส่วนบุคคลและข้อมูลธุรกิจที่สำคัญจึงมีความสำคัญและซับซ้อนมากขึ้น ปัญหาความเป็นส่วนตัวและความปลอดภัยของข้อมูลต้องได้รับการดูแลเป็นพิเศษสำหรับ AI เนื่องจากการเข้าถึงข้อมูลเป็นสิ่งสำคัญสำหรับระบบ AI ในการคาดการณ์และตัดสินใจเกี่ยวกับผู้คนอย่างแม่นยำและมีข้อมูลครบถ้วน +ระบบ AI ควรปลอดภัยและเคารพความเป็นส่วนตัวของผู้คน ผู้คนจะเชื่อถือน้อยลงในระบบที่เสี่ยงต่อความเป็นส่วนตัว ข้อมูล หรือชีวิตของพวกเขา เมื่อต้องฝึกโมเดล machine learning เราพึ่งพาข้อมูลเพื่อให้ได้ผลลัพธ์ที่ดีที่สุด และในกระบวนการนี้ ที่มาของข้อมูลและความสมบูรณ์ต้องถูกพิจารณา เช่น ข้อมูลมาจากผู้ใช้ส่งมาเอง หรือเป็นข้อมูลสาธารณะ? ต่อมา เมื่อทำงานกับข้อมูล จำเป็นต้องพัฒนาระบบ AI ที่สามารถปกป้องข้อมูลลับและต้านทานการโจมตีได้ เมื่อ AI มีบทบาทมากขึ้น การปกป้องความเป็นส่วนตัวและความปลอดภัยของข้อมูลส่วนบุคคลและธุรกิจก็กลายเป็นเรื่องที่สำคัญและซับซ้อนยิ่งขึ้น ประเด็นด้านความเป็นส่วนตัวและความปลอดภัยของข้อมูลจึงต้องได้รับความสนใจอย่างใกล้ชิดสำหรับ AI เพราะการเข้าถึงข้อมูลเป็นสิ่งจำเป็นที่ระบบ AI จะสามารถทำการคาดการณ์และตัดสินใจที่แม่นยำและมีข้อมูลรองรับเกี่ยวกับผู้คน > [🎥 คลิกที่นี่เพื่อดูวิดีโอ: ความปลอดภัยใน AI](https://www.microsoft.com/videoplayer/embed/RE4voJF) -- ในอุตสาหกรรม เราได้มีความก้าวหน้าอย่างมากในด้านความเป็นส่วนตัวและความปลอดภัย ซึ่งได้รับแรงผลักดันอย่างมากจากกฎระเบียบ เช่น GDPR (General Data Protection Regulation) -- อย่างไรก็ตาม สำหรับระบบ AI เราต้องยอมรับความตึงเครียดระหว่างความต้องการข้อมูลส่วนบุคคลเพิ่มเติมเพื่อทำให้ระบบมีความเป็นส่วนตัวและมีประสิทธิภาพมากขึ้น กับความเป็นส่วนตัว -- เช่นเดียวกับการเกิดขึ้นของคอมพิวเตอร์ที่เชื่อมต่อกับอินเทอร์เน็ต เรากำลังเห็นการเพิ่มขึ้นอย่างมากในจำนวนปัญหาด้านความปลอดภัยที่เกี่ยวข้องกับ AI -- ในขณะเดียวกัน เราได้เห็น AI ถูกนำมาใช้เพื่อปรับปรุงความปลอดภัย ตัวอย่างเช่น โปรแกรมสแกนไวรัสสมัยใหม่ส่วนใหญ่ขับเคลื่อนโดย AI heuristics -- เราต้องมั่นใจว่ากระบวนการ Data Science ของเราผสมผสานอย่างกลมกลืนกับแนวปฏิบัติด้านความเป็นส่วนตัวและความปลอดภัยล่าสุด +- ในฐานะอุตสาหกรรม เราก้าวหน้าอย่างมากในด้านความเป็นส่วนตัวและความปลอดภัย โดยได้รับแรงหนุนอย่างมากจากกฎหมายเช่น GDPR (พระราชบัญญัติคุ้มครองข้อมูลทั่วไป) +- แต่กับระบบ AI เราต้องยอมรับความตึงเครียดระหว่างความต้องการข้อมูลส่วนบุคคลมากขึ้นเพื่อทำให้ระบบมีความเป็นส่วนตัวและมีประสิทธิภาพ – กับความเป็นส่วนตัว +- เหมือนกับการเกิดขึ้นของคอมพิวเตอร์ที่เชื่อมต่อกับอินเทอร์เน็ต เราก็เห็นการเพิ่มขึ้นอย่างมากของปัญหาด้านความปลอดภัยที่เกี่ยวข้องกับ 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 มีความซับซ้อนมาก จึงยากที่จะเข้าใจว่าระบบทำงานอย่างไรและตีความผลลัพธ์ -- ความไม่เข้าใจนี้ส่งผลต่อวิธีการจัดการ การดำเนินงาน และการบันทึกของระบบเหล่านี้ -- ความไม่เข้าใจนี้ส่งผลสำคัญต่อการตัดสินใจที่ใช้ผลลัพธ์ที่ระบบเหล่านี้สร้างขึ้น +- เนื่องจากระบบ AI มีความซับซ้อนจึงยากที่จะเข้าใจว่าทำงานอย่างไรและแปลผลลัพธ์อย่างไร +- ความขาดความเข้าใจนี้ส่งผลต่อวิธีการจัดการ การปฏิบัติการ และการบันทึกเอกสารระบบเหล่านี้ +- ที่สำคัญกว่านั้น ความไม่เข้าใจนี้มีผลต่อการตัดสินใจที่ทำโดยใช้ผลลัพธ์ที่ระบบเหล่านี้สร้างขึ้น ### ความรับผิดชอบ + +ผู้ที่ออกแบบและนำระบบ AI มาใช้งานต้องรับผิดชอบต่อการทำงานของระบบ ความจำเป็นในการมีความรับผิดชอบเป็นสิ่งสำคัญอย่างยิ่งกับเทคโนโลยีที่ใช้ในเรื่องที่ละเอียดอ่อน เช่น การจดจำใบหน้า เมื่อไม่นานมานี้ มีความต้องการเทคโนโลยีจดจำใบหน้าที่เพิ่มขึ้น โดยเฉพาะจากองค์กรบังคับใช้กฎหมายที่เห็นศักยภาพของเทคโนโลยีนี้ในการตามหาบุตรหลานที่สูญหาย อย่างไรก็ตาม เทคโนโลยีเหล่านี้อาจถูกใช้โดยรัฐบาลเพื่อคุกคามสิทธิเสรีภาพขั้นพื้นฐานของพลเมือง เช่น การสอดส่องบุคคลเฉพาะอย่างต่อเนื่อง ดังนั้น นักวิทยาศาสตร์ข้อมูลและองค์กรจึงต้องรับผิดชอบต่อผลกระทบที่ระบบ AI มีต่อบุคคลหรือสังคม -ผู้ที่ออกแบบและใช้งานระบบ AI ต้องรับผิดชอบต่อการทำงานของระบบ ความจำเป็นในการรับผิดชอบมีความสำคัญอย่างยิ่งในเทคโนโลยีที่มีการใช้งานที่ละเอียดอ่อน เช่น การจดจำใบหน้า เมื่อเร็ว ๆ นี้ มีความต้องการเพิ่มขึ้นสำหรับเทคโนโลยีการจดจำใบหน้า โดยเฉพาะจากองค์กรบังคับใช้กฎหมายที่เห็นศักยภาพของเทคโนโลยีในการใช้งาน เช่น การค้นหาเด็กที่หายไป อย่างไรก็ตาม เทคโนโลยีเหล่านี้อาจถูกใช้โดยรัฐบาลเพื่อทำให้เสรีภาพพื้นฐานของพลเมืองตกอยู่ในความเสี่ยง เช่น การเฝ้าระวังบุคคลเฉพาะอย่างต่อเนื่อง ดังนั้นนักวิทยาศาสตร์ข้อมูลและองค์กรต้องรับผิดชอบต่อผลกระทบของระบบ AI ที่มีต่อบุคคลหรือสังคม +[![นักวิจัย AI ชั้นนำเตือนเรื่องการสอดส่องมวลชนผ่านการจดจำใบหน้า](../../../../translated_images/th/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "แนวทางของ Microsoft ต่อ AI ที่มีความรับผิดชอบ") -[![นักวิจัย AI ชั้นนำเตือนเกี่ยวกับการเฝ้าระวังมวลชนผ่านการจดจำใบหน้า](../../../../1-Introduction/3-fairness/images/accountability.png)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft's Approach to Responsible AI") +> 🎥 คลิกที่ภาพด้านบนเพื่อดูวิดีโอ: คำเตือนเรื่องการสอดส่องมวลชนผ่านการจดจำใบหน้า -> 🎥 คลิกที่ภาพด้านบนเพื่อดูวิดีโอ: การเตือนเกี่ยวกับการเฝ้าระวังมวลชนผ่านการจดจำใบหน้า - -ในท้ายที่สุด หนึ่งในคำถามที่ใหญ่ที่สุดสำหรับคนรุ่นเรา ในฐานะคนรุ่นแรกที่นำ AI เข้าสู่สังคม คือวิธีการทำให้คอมพิวเตอร์ยังคงมีความรับผิดชอบต่อผู้คน และวิธีการทำให้ผู้ที่ออกแบบคอมพิวเตอร์มีความรับผิดชอบต่อทุกคน +สุดท้าย หนึ่งในคำถามที่ใหญ่ที่สุดสำหรับรุ่นของเราในฐานะรุ่นแรกที่นำ AI เข้าสู่สังคมคือ จะมั่นใจได้อย่างไรว่า คอมพิวเตอร์จะยังคงรับผิดชอบต่อผู้คน และจะทำอย่างไรให้ผู้ที่ออกแบบคอมพิวเตอร์นั้นรับผิดชอบต่อทุกคน ## การประเมินผลกระทบ -ก่อนการฝึกโมเดล Machine Learning สิ่งสำคัญคือต้องทำการประเมินผลกระทบเพื่อทำความเข้าใจวัตถุประสงค์ของระบบ AI การใช้งานที่ตั้งใจไว้ สถานที่ที่จะนำไปใช้ และผู้ที่จะมีปฏิสัมพันธ์กับระบบ สิ่งเหล่านี้มีประโยชน์สำหรับผู้ตรวจสอบหรือผู้ทดสอบในการประเมินระบบเพื่อทราบว่าปัจจัยใดที่ควรพิจารณาเมื่อระบุความเสี่ยงที่อาจเกิดขึ้นและผลกระทบที่คาดหวัง +ก่อนฝึกโมเดล machine learning สิ่งสำคัญคือต้องดำเนินการประเมินผลกระทบเพื่อทำความเข้าใจวัตถุประสงค์ของระบบ AI; การใช้งานที่ตั้งใจไว้; ที่ตั้งที่จะนำไปใช้; และใครจะมีปฏิสัมพันธ์กับระบบ เหล่านี้ช่วยให้ผู้ตรวจสอบหรือผู้ทดสอบระบบรู้ว่าปัจจัยใดควรพิจารณาเมื่อระบุความเสี่ยงที่อาจเกิดขึ้นและผลที่คาดว่าจะเกิดขึ้น + +ด้านที่ควรให้ความสำคัญเมื่อดำเนินการประเมินผลกระทบ ได้แก่: + +* **ผลกระทบที่เป็นอันตรายต่อบุคคล** การตระหนักถึงข้อจำกัดหรือความต้องการใดๆ การใช้งานที่ไม่ได้รับอนุญาต หรือข้อจำกัดที่รู้จักซึ่งขัดขวางประสิทธิภาพของระบบเป็นสิ่งสำคัญเพื่อให้แน่ใจว่าระบบไม่ได้ถูกใช้ในทางที่อาจก่อให้เกิดอันตรายต่อบุคคล +* **ข้อกำหนดข้อมูล** การเข้าใจถึงวิธีการและที่ที่ระบบจะใช้ข้อมูลช่วยให้ผู้ตรวจสอบสามารถสำรวจข้อกำหนดทางข้อมูลที่ต้องระวัง (เช่น กฎหมาย GDPR หรือ HIPAA) นอกจากนี้ ต้องพิจารณาว่าที่มาและปริมาณข้อมูลมีความเพียงพอสำหรับการฝึกสอนหรือไม่ +* **สรุปผลกระทบ** รวบรวมรายการอันตรายที่อาจเกิดจากการใช้ระบบ ตลอดวงจรชีวิตของ ML ควรทบทวนว่าได้ลดความเสี่ยงหรือจัดการกับปัญหาต่างๆ ที่พบหรือไม่ +* **เป้าหมายที่เกี่ยวข้อง** สำหรับแต่ละหลักการหลักทั้งหก ประเมินว่าเป้าหมายแต่ละข้อได้รับการบรรลุหรือไม่ และมีช่องว่างอะไรบ้าง + + +## การแก้ไขข้อผิดพลาดด้วย AI ที่มีความรับผิดชอบ + +เช่นเดียวกับการแก้ไขข้อผิดพลาดในแอปพลิเคชันซอฟต์แวร์ การแก้ไขข้อผิดพลาดในระบบ AI เป็นกระบวนการจำเป็นในการระบุและแก้ไขปัญหาในระบบ มีหลายปัจจัยที่ส่งผลให้โมเดลทำงานไม่เป็นไปตามที่คาดหวังหรือไม่เป็นไปอย่างรับผิดชอบ เมตริกการประเมินประสิทธิภาพโมเดลส่วนใหญ่เป็นการรวบรวมเชิงปริมาณของประสิทธิภาพโมเดล ซึ่งไม่เพียงพอสำหรับการวิเคราะห์ว่าโมเดลละเมิดหลักการ AI ที่มีความรับผิดชอบอย่างไร นอกจากนี้ โมเดล machine learning เป็นกล่องดำที่ทำให้ยากต่อการเข้าใจว่าอะไรเป็นสาเหตุผลลัพธ์ของมันหรืออธิบายเมื่อมันทำผิดพลาด ต่อไปในหลักสูตรนี้ เราจะเรียนรู้วิธีใช้แดชบอร์ด Responsible AI เพื่อช่วยแก้ไขข้อผิดพลาดของระบบ AI แดชบอร์ดนี้เป็นเครื่องมือรวมที่ช่วยให้นักวิทยาศาสตร์ข้อมูลและผู้พัฒนา AI ดำเนินการ: + +* **วิเคราะห์ข้อผิดพลาด** เพื่อระบุการกระจายข้อผิดพลาดของโมเดลที่ส่งผลต่อความยุติธรรมหรือความน่าเชื่อถือของระบบ +* **ภาพรวมโมเดล** เพื่อค้นหาว่ามีความแตกต่างในการทำงานของโมเดลผ่านกลุ่มข้อมูลต่างๆ ที่ใดบ้าง +* **วิเคราะห์ข้อมูล** เพื่อเข้าใจการกระจายของข้อมูลและระบุอคติที่อาจเกิดขึ้นในข้อมูลซึ่งอาจนำไปสู่ปัญหาด้านความยุติธรรม ความครอบคลุม และความน่าเชื่อถือ +* **ความสามารถในการตีความโมเดล** เพื่อเข้าใจสิ่งที่มีผลหรือมีอิทธิพลต่อการทำนายของโมเดล ซึ่งช่วยในการอธิบายพฤติกรรมของโมเดล ซึ่งสำคัญสำหรับความโปร่งใสและความรับผิดชอบ + + +## 🚀 ความท้าทาย + +เพื่อป้องกันไม่ให้อันตรายเกิดขึ้นตั้งแต่แรก เราควร: + +- มีความหลากหลายของพื้นหลังและมุมมองในหมู่บุคคลที่ทำงานบนระบบ +- ลงทุนในการมีชุดข้อมูลที่สะท้อนความหลากหลายของสังคมของเรา +- พัฒนาวิธีการที่ดีกว่าตลอดวงจรชีวิต machine learning เพื่อค้นหาและแก้ไขปัญหา AI ที่มีความรับผิดชอบเมื่อเกิดขึ้น -พื้นที่ที่ควรให้ความสำคัญเมื่อทำการประเมินผลกระทบ ได้แก่: +คิดถึงสถานการณ์จริงที่ความไม่น่าเชื่อถือของโมเดลปรากฏชัดในการสร้างและการใช้งานโมเดล เราควรพิจารณาอะไรเพิ่มเติมอีกบ้าง? -* **ผลกระทบเชิงลบต่อบุคคล** การตระหนักถึงข้อจำกัดหรือข้อกำหนด การใช้งานที่ไม่รองรับ หรือข้อจำกัดที่ทราบซึ่งขัดขวางประสิทธิภาพของระบบเป็นสิ่งสำคัญเพื่อให้มั่นใจว่าระบบจะไม่ถูกใช้งานในลักษณะที่อาจก่อให้เกิดอันตรายต่อบุคคล -* **ข้อกำหนดด้านข้อมูล** การทำความเข้าใจว่าระบบจะใช้ข้อมูลอย่างไรและที่ไหนช่วยให้ผู้ตรวจสอบสามารถสำรวจข้อกำหนดด้านข้อมูลที่คุณต้องคำนึงถึง (เช่น ข้อบังคับ GDPR หรือ HIPPA) นอกจากนี้ ตรวจสอบว่าแหล่งที่มาหรือปริมาณข้อมูลมีความเพียงพอสำหรับการฝึกฝนหรือไม่ -* **สรุปผลกระทบ** รวบรวมรายการอันตรายที่อาจเกิดขึ้นจากการใช้ระบบ ในระหว่างวงจรชีวิต ML ตรวจสอบว่าปัญหาที่ระบุได้รับการแก้ไขหรือบรรเทาหรือไม่ -* **เป้าหมายที่เกี่ยวข้อง** สำหรับหลักการหลักทั้งหกข้อ ประเมินว่าเป้าหมายจากแต่ละหลักการได้รับการตอบสนองหรือไม่ และมีช่องว่างใด ๆ หรือไม่ +## [แบบทดสอบหลังบรรยาย](https://ff-quizzes.netlify.app/en/ml/) -## การดีบักด้วย AI ที่มีความรับผิดชอบ +## ทบทวน & เรียนรู้ด้วยตนเอง + -เช่นเดียวกับการดีบักแอปพลิเคชันซอฟต์แวร์ การดีบักระบบ AI เป็นกระบวนการที่จำเป็นในการระบุและ -ดูเวิร์กช็อปนี้เพื่อเจาะลึกหัวข้อเพิ่มเติม: +ในบทเรียนนี้ คุณได้เรียนรู้พื้นฐานบางอย่างของแนวคิดเรื่องความเป็นธรรมและความไม่เป็นธรรมในแมชชีนเลิร์นนิง + +ดูเวิร์กช็อปนี้เพื่อเจาะลึกหัวข้อเพิ่มเติม: -- การแสวงหา AI ที่รับผิดชอบ: นำหลักการไปสู่การปฏิบัติ โดย Besmira Nushi, Mehrnoosh Sameki และ Amit Sharma +- ในการแสวงหาปัญญาประดิษฐ์ที่รับผิดชอบ: การนำนโยบายสู่การปฏิบัติ โดย Besmira Nushi, Mehrnoosh Sameki และ Amit Sharma -[![Responsible AI Toolbox: กรอบงานโอเพ่นซอร์สสำหรับการสร้าง AI ที่รับผิดชอบ](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: กรอบงานโอเพ่นซอร์สสำหรับการสร้าง AI ที่รับผิดชอบ") +[![Responsible AI Toolbox: An open-source framework for building responsible AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") -> 🎥 คลิกที่ภาพด้านบนเพื่อดูวิดีโอ: 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) +- [ที่เก็บ 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) --- -**ข้อจำกัดความรับผิดชอบ**: -เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา 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/th/2-Regression/1-Tools/README.md b/translations/th/2-Regression/1-Tools/README.md index 54cfeed32..4365d84b8 100644 --- a/translations/th/2-Regression/1-Tools/README.md +++ b/translations/th/2-Regression/1-Tools/README.md @@ -1,70 +1,70 @@ # เริ่มต้นกับ Python และ Scikit-learn สำหรับโมเดลการถดถอย -![สรุปเกี่ยวกับการถดถอยในรูปแบบสเก็ตโน้ต](../../../../sketchnotes/ml-regression.png) +![สรุปการถดถอยในรูปแบบสเกตช์โน้ต](../../../../translated_images/th/ml-regression.4e4f70e3b3ed446e.webp) -> สเก็ตโน้ตโดย [Tomomi Imura](https://www.twitter.com/girlie_mac) +> สเกตช์โน้ตโดย [Tomomi Imura](https://www.twitter.com/girlie_mac) ## [แบบทดสอบก่อนเรียน](https://ff-quizzes.netlify.app/en/ml/) -> ### [บทเรียนนี้มีในภาษา R ด้วย!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html) +> ### [บทเรียนนี้มีให้ในรูปแบบ R!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html) ## บทนำ -ในบทเรียนทั้งสี่นี้ คุณจะได้เรียนรู้วิธีสร้างโมเดลการถดถอย เราจะพูดถึงว่ามันมีไว้เพื่ออะไรในไม่ช้า แต่ก่อนที่คุณจะเริ่มต้น อย่าลืมเตรียมเครื่องมือที่เหมาะสมให้พร้อมสำหรับการเริ่มต้นกระบวนการนี้! +ในบทเรียนสี่ตอนนี้ คุณจะได้ค้นพบวิธีการสร้างโมเดลการถดถอย เราจะพูดถึงวัตถุประสงค์ของโมเดลเหล่านี้ในไม่ช้า แต่ก่อนที่คุณจะเริ่มทำอะไร ให้แน่ใจว่าคุณมีเครื่องมือที่เหมาะสมพร้อมสำหรับขั้นตอนนี้! -ในบทเรียนนี้ คุณจะได้เรียนรู้วิธี: +ในบทเรียนนี้ คุณจะได้เรียนรู้วิธีการ: -- ตั้งค่าคอมพิวเตอร์ของคุณสำหรับงานการเรียนรู้ของเครื่องในเครื่อง -- ทำงานกับ Jupyter notebooks +- กำหนดค่าคอมพิวเตอร์ของคุณสำหรับงานการเรียนรู้ของเครื่องในเครื่องท้องถิ่น +- ทำงานกับ Jupyter Notebooks - ใช้ Scikit-learn รวมถึงการติดตั้ง -- สำรวจการถดถอยเชิงเส้นผ่านการฝึกปฏิบัติ +- สำรวจการถดถอยเชิงเส้นผ่านแบบฝึกหัดปฏิบัติ -## การติดตั้งและการตั้งค่า +## การติดตั้งและการกำหนดค่า -[![ML สำหรับผู้เริ่มต้น - ตั้งค่าเครื่องมือของคุณให้พร้อมสำหรับการสร้างโมเดล Machine Learning](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML สำหรับผู้เริ่มต้น - ตั้งค่าเครื่องมือของคุณให้พร้อมสำหรับการสร้างโมเดล Machine Learning") +[![ML สำหรับผู้เริ่มต้น - ตั้งค่าเครื่องมือของคุณพร้อมสร้างโมเดล Machine Learning](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML สำหรับผู้เริ่มต้น - ตั้งค่าเครื่องมือของคุณพร้อมสร้างโมเดล Machine Learning") -> 🎥 คลิกที่ภาพด้านบนเพื่อดูวิดีโอสั้น ๆ เกี่ยวกับการตั้งค่าคอมพิวเตอร์ของคุณสำหรับ 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 ติดตั้งไว้แล้ว มี [ชุดแพ็กเกจ Coding 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/) สำหรับการติดตั้งพื้นฐาน คุณจะใช้ 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) > > [![ตั้งค่า Python กับ Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](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 environment โปรดทราบว่าหากคุณกำลังติดตั้งไลบรารีนี้บน 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` +คุณจะใช้ **โน้ตบุ๊ก** ในการพัฒนาโค้ด Python ของคุณและสร้างโมเดลการเรียนรู้ของเครื่อง ประเภทไฟล์นี้เป็นเครื่องมือทั่วไปสำหรับนักวิทยาศาสตร์ข้อมูล และจะรู้จักได้จากนามสกุล `.ipynb` -Notebooks เป็นสภาพแวดล้อมแบบโต้ตอบที่ช่วยให้นักพัฒนาสามารถเขียนโค้ด เพิ่มบันทึก และเขียนเอกสารประกอบรอบ ๆ โค้ด ซึ่งมีประโยชน์มากสำหรับโครงการที่เน้นการทดลองหรือการวิจัย +โน้ตบุ๊กเป็นสภาพแวดล้อมแบบโต้ตอบที่ช่วยให้นักพัฒนาสามารถเขียนโค้ด พร้อมทั้งเพิ่มบันทึกและเขียนเอกสารประกอบรอบ ๆ โค้ด ซึ่งมีประโยชน์มากสำหรับโครงการเชิงทดลองหรือวิจัย [![ML สำหรับผู้เริ่มต้น - ตั้งค่า Jupyter Notebooks เพื่อเริ่มสร้างโมเดลการถดถอย](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML สำหรับผู้เริ่มต้น - ตั้งค่า Jupyter Notebooks เพื่อเริ่มสร้างโมเดลการถดถอย") -> 🎥 คลิกที่ภาพด้านบนเพื่อดูวิดีโอสั้น ๆ เกี่ยวกับการฝึกปฏิบัตินี้ +> 🎥 คลิกภาพด้านบนเพื่อดูวิดีโอสั้น ๆ ที่สอนทำแบบฝึกหัดนี้ -### การฝึกปฏิบัติ - ทำงานกับ notebook +### แบบฝึกหัด - ทำงานกับโน้ตบุ๊ก ในโฟลเดอร์นี้ คุณจะพบไฟล์ _notebook.ipynb_ -1. เปิด _notebook.ipynb_ ใน Visual Studio Code +1. เปิดไฟล์ _notebook.ipynb_ ใน Visual Studio Code - Jupyter server จะเริ่มต้นพร้อมกับ Python 3+ คุณจะพบพื้นที่ใน notebook ที่สามารถ `run` ได้ ซึ่งเป็นส่วนของโค้ด คุณสามารถรันโค้ดบล็อกได้โดยเลือกไอคอนที่มีลักษณะเหมือนปุ่มเล่น + เซิร์ฟเวอร์ Jupyter จะเริ่มทำงานกับ Python 3+ เปิดใช้งาน คุณจะพบส่วนของโน้ตบุ๊กที่สามารถ `run` คือ ชิ้นส่วนของโค้ดที่สามารถรันได้ คุณสามารถรันบล็อกโค้ดโดยเลือกไอคอนที่ดูเหมือนปุ่มเล่น -2. เลือกไอคอน `md` และเพิ่มข้อความ markdown ต่อไปนี้ **# ยินดีต้อนรับสู่ notebook ของคุณ** +1. เลือกไอคอน `md` และเพิ่มมาร์กดาวน์เล็กน้อย พร้อมข้อความต่อไปนี้ **# ยินดีต้อนรับสู่โน้ตบุ๊กของคุณ** - จากนั้นเพิ่มโค้ด Python + ต่อไป เพิ่มโค้ด Python บางส่วน -3. พิมพ์ **print('hello notebook')** ในโค้ดบล็อก -4. เลือกลูกศรเพื่อรันโค้ด +1. พิมพ์ **print('hello notebook')** ในบล็อกโค้ด +1. เลือกลูกศรเพื่อรันโค้ด คุณควรเห็นข้อความที่พิมพ์ออกมา: @@ -72,49 +72,50 @@ Notebooks เป็นสภาพแวดล้อมแบบโต้ตอ hello notebook ``` -![VS Code พร้อม notebook ที่เปิดอยู่](../../../../2-Regression/1-Tools/images/notebook.jpg) +![VS Code กับโน้ตบุ๊กเปิดใช้](../../../../translated_images/th/notebook.4a3ee31f396b8832.webp) -คุณสามารถสลับโค้ดกับคอมเมนต์เพื่อเขียนเอกสารประกอบใน 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 for Beginners' ที่กำลังจะมาถึง +ในคอร์สนี้ คุณจะใช้ Scikit-learn และเครื่องมืออื่นๆ เพื่อสร้างโมเดลแมชชีนเลิร์นนิงที่เรียกกันว่า 'เครื่องเรียนรู้แบบดั้งเดิม' เราตั้งใจหลีกเลี่ยงเครือข่ายประสาทเทียมและการเรียนรู้เชิงลึก เพราะเราได้เตรียมหลักสูตร 'AI สำหรับผู้เริ่มต้น' มาในอนาคต -Scikit-learn ทำให้การสร้างโมเดลและการประเมินผลใช้งานง่ายขึ้น โดยเน้นที่การใช้ข้อมูลเชิงตัวเลขเป็นหลัก และมีชุดข้อมูลที่พร้อมใช้งานหลายชุดสำหรับการเรียนรู้ นอกจากนี้ยังมีโมเดลที่สร้างไว้ล่วงหน้าให้นักเรียนได้ลองใช้งาน มาสำรวจขั้นตอนการโหลดข้อมูลที่เตรียมไว้ล่วงหน้าและการใช้ตัวประมาณค่าในโมเดล ML แรกของคุณด้วย Scikit-learn กับข้อมูลพื้นฐานกันเถอะ +Scikit-learn ช่วยให้การสร้างโมเดลง่ายและประเมินผลได้สะดวก เป็นไลบรารีที่เน้นข้อมูลตัวเลขและมีชุดข้อมูลพร้อมใช้สำหรับการเรียนรู้และตัวอย่างโมเดลให้ทดลอง เรามาดูขั้นตอนการโหลดข้อมูลสำเร็จรูปและใช้ตัวประมาณ (estimator) ที่ติดตั้งมาพร้อมกัน เพื่อสร้างโมเดล ML ตัวแรกด้วย Scikit-learn กับข้อมูลพื้นฐานกัน -## การฝึกปฏิบัติ - notebook 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 -[![ML สำหรับผู้เริ่มต้น - โปรเจกต์การถดถอยเชิงเส้นแรกของคุณใน Python](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "ML สำหรับผู้เริ่มต้น - โปรเจกต์การถดถอยเชิงเส้นแรกของคุณใน Python") -> 🎥 คลิกที่ภาพด้านบนเพื่อดูวิดีโอสั้น ๆ เกี่ยวกับการฝึกปฏิบัตินี้ +[![ML สำหรับผู้เริ่มต้น - โปรเจกต์การถดถอยเชิงเส้นแรกใน Python](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](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. เพิ่มการนำเข้าโดยพิมพ์โค้ดดังนี้: ```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` ใช้สำหรับแบ่งข้อมูลเป็นชุดฝึกและชุดทดสอบ ### ชุดข้อมูลเบาหวาน -ชุดข้อมูล [เบาหวาน](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-Cells (ชนิดหนึ่งของเซลล์เม็ดเลือดขาว) -✅ ชุดข้อมูลนี้รวมถึงแนวคิดของ 'เพศ' เป็นตัวแปรคุณลักษณะที่สำคัญต่อการวิจัยเกี่ยวกับเบาหวาน ชุดข้อมูลทางการแพทย์หลายชุดรวมการจัดประเภทแบบไบนารีประเภทนี้ ลองคิดดูว่าการจัดประเภทดังกล่าวอาจกีดกันบางส่วนของประชากรจากการรักษาได้อย่างไร +✅ ชุดข้อมูลนี้มีแนวคิดเรื่อง 'เพศ' เป็นตัวแปรลักษณะสำคัญสำหรับการวิจัยเกี่ยวกับเบาหวาน ชุดข้อมูลแพทย์หลายชุดมีการจัดประเภทนี้ในรูปแบบไบนารี ลองคิดดูว่าการจัดประเภทแบบนี้อาจทำให้บางประชากรถูกตัดออกจากการรักษาอย่างไรบ้าง -ตอนนี้ โหลดข้อมูล X และ y +ตอนนี้ โหลดข้อมูล X และ y ขึ้นมา -> 🎓 จำไว้ว่า นี่คือการเรียนรู้แบบมีผู้สอน และเราต้องการเป้าหมาย '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,11 +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 องค์ประกอบ: + คุณจะเห็นว่าข้อมูลนี้มี 442 รายการในอาเรย์ที่มี 10 องค์ประกอบ ```text (442, 10) @@ -161,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 โดยใช้ดัชนี (2) คุณยังสามารถปรับรูปร่างข้อมูลให้เป็นอาร์เรย์ 2D ตามที่ต้องการสำหรับการพล็อต โดยใช้ `reshape(n_rows, n_columns)` หากพารามิเตอร์ตัวใดตัวหนึ่งเป็น -1 มิติที่สอดคล้องกันจะถูกคำนวณโดยอัตโนมัติ +2. ต่อไป เลือกส่วนหนึ่งของชุดข้อมูลนี้เพื่อแจกแจงโดยเลือกคอลัมน์ที่ 3 ของชุดข้อมูล คุณทำได้โดยใช้ตัวดำเนินการ `:` เพื่อเลือกแถวทั้งหมด แล้วเลือกคอลัมน์ที่ 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. ตอนนี้คุณพร้อมที่จะฝึกโมเดลของคุณแล้ว! โหลดโมเดลการถดถอยเชิงเส้นและฝึกด้วยชุดฝึกอบรม X และ y ของคุณโดยใช้ `model.fit()`: +4. ตอนนี้คุณพร้อมที่จะฝึกโมเดลของคุณแล้ว! โหลดโมเดลการถดถอยเชิงเส้นและฝึกด้วยชุดข้อมูลฝึก X และ y โดยใช้ `model.fit()`: ```python model = linear_model.LinearRegression() model.fit(X_train, y_train) ``` - ✅ `model.fit()` เป็นฟังก์ชันที่คุณจะเห็นในไลบรารี ML หลายตัว เช่น TensorFlow + ✅ `model.fit()` เป็นฟังก์ชันที่คุณจะพบในไลบรารี ML มากมายเช่น TensorFlow -5. จากนั้น สร้างการพยากรณ์โดยใช้ข้อมูลทดสอบ โดยใช้ฟังก์ชัน `predict()` สิ่งนี้จะใช้เพื่อวาดเส้นระหว่างกลุ่มข้อมูล +5. จากนั้น สร้างการทำนายโดยใช้ข้อมูลทดสอบ ด้วยฟังก์ชัน `predict()` ฟังก์ชันนี้ใช้วาดเส้นระหว่างกลุ่มข้อมูล ```python y_pred = model.predict(X_test) ``` -6. ตอนนี้ถึงเวลาที่จะแสดงข้อมูลในกราฟแล้ว Matplotlib เป็นเครื่องมือที่มีประโยชน์มากสำหรับงานนี้ สร้าง scatterplot ของข้อมูลทดสอบ X และ y ทั้งหมด และใช้การพยากรณ์เพื่อวาดเส้นในตำแหน่งที่เหมาะสมที่สุด ระหว่างกลุ่มข้อมูลของโมเดล +6. ถึงเวลาที่จะแสดงข้อมูลในกราฟ Matplotlib เป็นเครื่องมือที่มีประโยชน์สำหรับงานนี้ สร้างกราฟกระจายของข้อมูลทดสอบ X และ y ทั้งหมด และใช้การทำนายวาดเส้นในตำแหน่งที่เหมาะสมที่สุด ระหว่างกลุ่มข้อมูลของโมเดล ```python plt.scatter(X_test, y_test, color='black') @@ -204,29 +203,32 @@ Scikit-learn ทำให้การสร้างโมเดลและก plt.show() ``` - ![scatterplot ที่แสดงจุดข้อมูลเกี่ยวกับเบาหวาน](../../../../2-Regression/1-Tools/images/scatterplot.png) -✅ ลองคิดดูว่าเกิดอะไรขึ้นที่นี่ เส้นตรงกำลังวิ่งผ่านจุดข้อมูลเล็กๆ หลายจุด แต่จริงๆ แล้วมันกำลังทำอะไรอยู่? คุณสามารถมองเห็นได้ไหมว่าคุณควรจะใช้เส้นนี้เพื่อทำนายตำแหน่งของจุดข้อมูลใหม่ที่ยังไม่เคยเห็นมาก่อนในความสัมพันธ์กับแกน y ของกราฟได้อย่างไร? ลองอธิบายการใช้งานจริงของโมเดลนี้ออกมาเป็นคำพูด + ![กราฟกระจายแสดงจุดข้อมูลรอบโรคเบาหวาน](../../../../translated_images/th/scatterplot.ad8b356bcbb33be6.webp) + -ยินดีด้วย! คุณสร้างโมเดลการถดถอยเชิงเส้นตัวแรกของคุณ สร้างการทำนายด้วยมัน และแสดงผลในกราฟ! + ✅ ลองคิดดูสักนิดว่าสิ่งที่เกิดขึ้นตรงนี้คืออะไร เส้นตรงเส้นหนึ่งกำลังวิ่งผ่านจุดข้อมูลเล็กๆ หลายจุด แต่จริงๆ แล้วมันกำลังทำอะไร? คุณเห็นไหมว่าคุณควรจะสามารถใช้เส้นนี้ในการทำนายได้ว่าจุดข้อมูลใหม่ที่ไม่เคยเห็นมาก่อนควรจะอยู่ที่ใดเมื่อเทียบกับแกนนอน 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/th/2-Regression/2-Data/README.md b/translations/th/2-Regression/2-Data/README.md index 6fcee9c0c..c61b89834 100644 --- a/translations/th/2-Regression/2-Data/README.md +++ b/translations/th/2-Regression/2-Data/README.md @@ -1,62 +1,62 @@ -# สร้างโมเดลการถดถอยด้วย Scikit-learn: เตรียมและแสดงข้อมูล +# สร้างโมเดลการถดถอยโดยใช้ Scikit-learn: เตรียมและแสดงข้อมูล -![อินโฟกราฟิกการแสดงข้อมูล](../../../../2-Regression/2-Data/images/data-visualization.png) +![อินโฟกราฟิกการแสดงข้อมูล](../../../../translated_images/th/data-visualization.54e56dded7c1a804.webp) -อินโฟกราฟิกโดย [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 สำหรับการแสดงข้อมูล +- วิธีการเตรียมข้อมูลของคุณสำหรับการสร้างโมเดล +- วิธีการใช้ 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' และค่าอื่นๆ ข้อมูลนี้แท้จริงแล้วค่อนข้างยุ่งเหยิง [![ML สำหรับผู้เริ่มต้น - วิธีวิเคราะห์และทำความสะอาดชุดข้อมูล](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML สำหรับผู้เริ่มต้น - วิธีวิเคราะห์และทำความสะอาดชุดข้อมูล") -> 🎥 คลิกที่ภาพด้านบนเพื่อดูวิดีโอสั้น ๆ เกี่ยวกับการเตรียมข้อมูลสำหรับบทเรียนนี้ +> 🎥 คลิกที่ภาพด้านบนเพื่อดูวิดีโอสั้น ๆ ที่อธิบายการเตรียมข้อมูลสำหรับบทเรียนนี้ -ในความเป็นจริง ไม่บ่อยนักที่คุณจะได้รับชุดข้อมูลที่พร้อมใช้งานสำหรับการสร้างโมเดล ML ทันที ในบทเรียนนี้ คุณจะได้เรียนรู้วิธีเตรียมชุดข้อมูลดิบโดยใช้ไลบรารี Python มาตรฐาน นอกจากนี้คุณยังจะได้เรียนรู้เทคนิคต่าง ๆ ในการแสดงข้อมูล +ในความเป็นจริงแล้วไม่ค่อยได้ชุดข้อมูลที่พร้อมใช้งานสร้างโมเดล 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 แถวเกี่ยวกับตลาดฟักทอง แบ่งกลุ่มตามเมือง นี่คือข้อมูลดิบที่ดึงมาจาก [รายงานมาตรฐานตลาดส่งพืชผลเฉพาะ](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. แปลงวันที่เป็นรูปแบบเดือน (วันที่ในสหรัฐฯ มีรูปแบบ `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()` เพื่อดู 5 แถวแรก +1. ใช้ฟังก์ชัน `head()` เพื่อดูห้าแถวแรก ```python import pandas as pd @@ -64,30 +64,30 @@ pumpkins.head() ``` - ✅ ฟังก์ชันใดที่คุณจะใช้เพื่อดู 5 แถวสุดท้าย? + ✅ คุณจะใช้ฟังก์ชันใดเพื่อดูห้าแถวสุดท้าย? -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] ``` -### ขั้นที่สอง คำนวณราคาฟักทองเฉลี่ย +### อย่างที่สอง กำหนดราคาฟักทองเฉลี่ย -ลองคิดดูว่าจะคำนวณราคาฟักทองเฉลี่ยในแต่ละเดือนได้อย่างไร คอลัมน์ใดที่คุณจะเลือกสำหรับงานนี้? คำใบ้: คุณจะต้องใช้ 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 dataframe ใหม่: +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 ของคุณจะแสดงชุดข้อมูลที่สะอาดและเป็นระเบียบ ซึ่งคุณสามารถใช้สร้างโมเดลการถดถอยใหม่ได้ + การพิมพ์ 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' ฟักทองดูเหมือนจะยากต่อการชั่งน้ำหนักอย่างสม่ำเสมอ ดังนั้นให้กรองโดยเลือกเฉพาะฟักทองที่มีคำว่า 'bushel' ในคอลัมน์ `Package` +เมื่อเจาะลึกข้อมูลดิบ จะเห็นว่าสิ่งใด ๆ ที่มี `Unit of Sale` เท่ากับ 'EACH' หรือ 'PER BIN' ก็จะมีชนิดของ `Package` เป็นต่อหน่วยนิ้ว ต่อกล่อง หรือ 'แต่ละชิ้น' ฟักทองจึงดูเหมือนจะชั่งน้ำหนักได้ยาก ดังนั้นเรามากรองข้อมูลโดยเลือกเฉพาะฟักทองที่ในคอลัมน์ `Package` มีคำว่า 'bushel' -1. เพิ่มตัวกรองที่ด้านบนของไฟล์ ใต้การนำเข้า .csv เริ่มต้น: +1. เพิ่มตัวกรองไว้ที่บนสุดของไฟล์ ใต้การนำเข้าไฟล์ .csv ครั้งแรก: ```python pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)] ``` - หากคุณพิมพ์ข้อมูลตอนนี้ คุณจะเห็นว่าคุณได้รับเพียงประมาณ 415 แถวของข้อมูลที่มีฟักทองตาม bushel + ถ้าคุณพิมพ์ข้อมูลตอนนี้ จะเห็นว่าคุณกำลังได้ประมาณ 415 แถวของข้อมูลที่ประกอบด้วยฟักทองที่ขายโดย 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) @@ -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) น้ำหนักของ bushel ขึ้นอยู่กับประเภทของผลผลิต เนื่องจากเป็นการวัดปริมาตร "bushel ของมะเขือเทศ น่าจะหนัก 56 ปอนด์... ใบและผักใบเขียวใช้พื้นที่มากแต่มีน้ำหนักน้อย ดังนั้น bushel ของผักโขมหรือผักใบเขียวจะหนักเพียง 20 ปอนด์" ทุกอย่างค่อนข้างซับซ้อน! เราจะไม่แปลงจาก bushel เป็นปอนด์ แต่จะตั้งราคาตาม bushel แทน การศึกษาข้อมูล bushel ฟักทองนี้แสดงให้เห็นว่าการเข้าใจลักษณะของข้อมูลของคุณมีความสำคัญมากแค่ไหน! -ตอนนี้ คุณสามารถวิเคราะห์ราคาต่อหน่วยตามการวัด bushel ได้ หากคุณพิมพ์ข้อมูลอีกครั้ง คุณจะเห็นว่ามันถูกปรับมาตรฐานแล้ว +ตอนนี้ คุณสามารถวิเคราะห์ราคาต่อหน่วยตามการวัด bushel ได้แล้ว ถ้าคุณพิมพ์ข้อมูลอีกครั้ง คุณจะเห็นว่ามันถูกทำให้เป็นมาตรฐานอย่างไร -✅ คุณสังเกตเห็นหรือไม่ว่าฟักทองที่ขายเป็นครึ่ง bushel มีราคาแพงมาก? คุณสามารถหาสาเหตุได้หรือไม่? คำใบ้: ฟักทองลูกเล็กมีราคาแพงกว่าลูกใหญ่มาก อาจเป็นเพราะมีจำนวนมากกว่าต่อลูก bushel เนื่องจากพื้นที่ว่างที่ไม่ได้ใช้ที่เกิดจากฟักทองพายลูกใหญ่ที่กลวง +✅ คุณสังเกตไหมว่าฟักทองที่ขายเป็นครึ่ง bushel มีราคาสูงมาก? คุณคิดออกไหมว่าทำไม? คำใบ้: ฟักทองเล็กมีราคาสูงกว่าฟักทองใหญ่ อาจเป็นเพราะฟักทองเล็กมีจำนวนมากกว่าต่อ bushel เนื่องจากพื้นที่ว่างที่ด้อยคุณภาพที่ใช้โดยฟักทองพายกลวงใหญ่หนึ่งลูก -## กลยุทธ์การแสดงข้อมูล +## กลยุทธ์การแสดงผล -ส่วนหนึ่งของบทบาทของนักวิทยาศาสตร์ข้อมูลคือการแสดงคุณภาพและลักษณะของข้อมูลที่พวกเขากำลังทำงานด้วย เพื่อทำสิ่งนี้ พวกเขามักจะสร้างการแสดงผลที่น่าสนใจ เช่น แผนภาพ กราฟ และแผนภูมิที่แสดงแง่มุมต่าง ๆ ของข้อมูล ด้วยวิธีนี้ พวกเขาสามารถแสดงความสัมพันธ์และช่องว่างที่ยากจะค้นพบได้ด้วยสายตา +หน้าที่หนึ่งของนักวิทยาศาสตร์ข้อมูลคือการแสดงให้เห็นคุณภาพและลักษณะของข้อมูลที่เขาทำงานอยู่ เพื่อทำเช่นนี้ พวกเขามักสร้างการแสดงภาพที่น่าสนใจ เช่น พล็อต กราฟและแผนภูมิ ที่แสดงมุมมองต่าง ๆ ของข้อมูล ด้วยวิธีนี้ พวกเขาสามารถแสดงความสัมพันธ์และช่องว่างของข้อมูลที่ยากจะค้นพบด้วยตาเปล่า [![ML สำหรับผู้เริ่มต้น - วิธีแสดงข้อมูลด้วย Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML สำหรับผู้เริ่มต้น - วิธีแสดงข้อมูลด้วย Matplotlib") -> 🎥 คลิกที่ภาพด้านบนเพื่อดูวิดีโอสั้น ๆ เกี่ยวกับการแสดงข้อมูลสำหรับบทเรียนนี้ +> 🎥 คลิกที่ภาพด้านบนเพื่อดูวิดีโอสั้น ๆ ที่อธิบายการแสดงข้อมูลสำหรับบทเรียนนี้ -การแสดงผลยังสามารถช่วยกำหนดเทคนิคการเรียนรู้ของเครื่องที่เหมาะสมที่สุดสำหรับข้อมูลได้อีกด้วย ตัวอย่างเช่น scatterplot ที่ดูเหมือนจะเป็นเส้นตรง อาจบ่งชี้ว่าข้อมูลเหมาะสำหรับการฝึกการถดถอยเชิงเส้น +การแสดงข้อมูลยังช่วยกำหนดเทคนิคการเรียนรู้ของเครื่องที่เหมาะสมที่สุดกับข้อมูล ตัวอย่างเช่น แผนภูมิจุด (scatterplot) ที่ดูเหมือนจะตามเส้นตรง แสดงว่าข้อมูลนั้นเหมาะสมกับการทำ regression แบบเชิงเส้น -ไลบรารีการแสดงข้อมูลที่ทำงานได้ดีใน 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. รันโน้ตบุ๊กทั้งหมดอีกครั้งเพื่อรีเฟรช +1. ที่ด้านล่างของโน้ตบุ๊ก ให้เพิ่มเซลล์เพื่อพล็อตข้อมูลเป็นกล่อง: ```python price = new_pumpkins.Price @@ -174,44 +174,121 @@ plt.show() ``` - ![scatterplot แสดงความสัมพันธ์ระหว่างราคาและเดือน](../../../../2-Regression/2-Data/images/scatterplot.png) + ![แผนภูมิจุดแสดงความสัมพันธ์ระหว่างราคาและเดือน](../../../../translated_images/th/scatterplot.b6868f44cbd2051c.webp) - นี่เป็นแผนภาพที่มีประโยชน์หรือไม่? มีอะไรที่ทำให้คุณประหลาดใจหรือไม่? + นี่เป็นพล็อตที่มีประโยชน์หรือไม่? มีอะไรที่ทำให้คุณประหลาดใจไหม? - มันไม่ค่อยมีประโยชน์นัก เนื่องจากมันแสดงเพียงการกระจายของจุดข้อมูลในแต่ละเดือน + มันไมได้มีประโยชน์มากนัก เนื่องจากแสดงเพียงการกระจายตัวของข้อมูลในแต่ละเดือนเท่านั้น ### ทำให้มันมีประโยชน์ -เพื่อให้แผนภูมิแสดงข้อมูลที่มีประโยชน์ คุณมักจะต้องจัดกลุ่มข้อมูลในบางลักษณะ ลองสร้างแผนภูมิที่แกน y แสดงเดือน และข้อมูลแสดงการกระจายของข้อมูล +เพื่อให้แผนภูมิแสดงข้อมูลที่มีประโยชน์ คุณมักจะต้องจัดกลุ่มข้อมูล ลองสร้างพล็อตที่แกน y แสดงเดือนและข้อมูลแสดงการแจกแจงข้อมูล -1. เพิ่มเซลล์เพื่อสร้างแผนภูมิแท่งแบบกลุ่ม: +1. เพิ่มเซลล์เพื่อสร้างแผนภูมิแท่งกลุ่ม: ```python new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') plt.ylabel("Pumpkin Price") ``` - ![แผนภูมิแท่งแสดงความสัมพันธ์ระหว่างราคาและเดือน](../../../../2-Regression/2-Data/images/barchart.png) + ![แผนภูมิแท่งแสดงความสัมพันธ์ระหว่างราคาและเดือน](../../../../translated_images/th/barchart.a833ea9194346d76.webp) + + นี่เป็นการแสดงข้อมูลที่มีประโยชน์มากขึ้น! ดูเหมือนจะแสดงว่าราคาฟักทองสูงสุดจะเกิดขึ้นในเดือนกันยายนและตุลาคม เป็นไปตามที่คุณคาดหวังหรือไม่? เพราะอะไร หรือไม่? + +## แบบฝึกหัด - ทดลองใช้ Seaborn + +Matplotlib เป็นเครื่องมือที่ทรงพลัง แต่ก็ต้องใช้โค้ดมากในการสร้างแผนภูมิที่ดูดี [Seaborn](https://seaborn.pydata.org/) เป็นไลบรารีที่พัฒนาบน Matplotlib ที่ออกแบบมาสำหรับการแสดงข้อมูลทางสถิติ มันทำงานโดยตรงกับ Pandas dataframe ใช้สไตล์มาตรฐานที่น่าดึงดูด และช่วยให้คุณสร้างพล็อตที่ให้ข้อมูลอย่างกว้างขวางด้วยโค้ดที่น้อยกว่า เพราะ Seaborn คืนค่าเป็นวัตถุ Matplotlib คุณยังคงใช้ความรู้เดิมในการปรับแต่งได้ตามต้องการ + +> หากคุณยังไม่มี Seaborn ให้ติดตั้งด้วยคำสั่ง `pip install seaborn` + +1. นำเข้า Seaborn ที่ด้านบนของโน้ตบุ๊ก ใต้การนำเข้าอื่น ๆ โดยปกติจะใช้นามแฝง `sns`: + + ```python + import seaborn as sns + ``` + +### แผนภูมิจุดเพื่อแสดงความสัมพันธ์ + +ส่วนสำคัญของการสำรวจข้อมูลก่อนสร้างโมเดลคือการมองหาความ _สัมพันธ์_ ระหว่างตัวแปร แผนภูมิจุด ([scatter plot](https://en.wikipedia.org/wiki/Scatter_plot)) เป็นเครื่องมือที่ดีที่สุดอย่างหนึ่ง: ถ้าจุดดูเหมือนจะตามเส้นตรง ตัวแปรทั้งสองอาจสัมพันธ์กัน ซึ่งเป็นสัญญาณที่ดีว่าโมเดล linear regression อาจใช้ได้ผล + +1. สร้างแผนภูมิจุดแสดงความสัมพันธ์ระหว่างราคาและเดือนใหม่อีกครั้ง โดยใช้ [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) ของ Seaborn ซึ่งทำงานตรงกับคอลัมน์ dataframe ของคุณ: + + ```python + sns.relplot(x="Price", y="Month", data=new_pumpkins) + ``` + + ![แผนภูมิจุด Seaborn แสดงความสัมพันธ์ระหว่างราคาและเดือน](../../../../translated_images/th/relplot.a03837d8f0329cec.webp) + + สังเกตว่าคุณส่ง _ชื่อคอลัมน์_ และ dataframe ไป และ Seaborn จะดูแลการแสดงป้ายแกนให้คุณเอง + +2. คุณสามารถเปลี่ยนเป็นแผนภูมิแบบเส้นโดยส่ง `kind="line"` Seaborn ยังวาดแถบเงาแสดงช่วงความเชื่อมั่นรอบเส้นด้วย: + + ```python + sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins) + ``` + + ![แผนภูมิเส้น Seaborn แสดงความสัมพันธ์ระหว่างราคาและเดือน](../../../../translated_images/th/lineplot.f9034ba47b1e30ee.webp) + + ข้อมูลชุดนี้ค่อยข้างมีเสียงรบกวน ดังนั้นแผนภูมิแบบเส้นอาจไม่ใช่ตัวเลือกที่ชัดเจนมากนัก — แต่แสดงให้เห็นว่าคุณสามารถเปลี่ยนประเภทแผนภูมิใน 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") + ``` + + ![A Seaborn bar chart showing the price distribution per month](../../../../translated_images/th/catplot.e73fc35fdf96242b.webp) + + สิ่งนี้ยืนยันสิ่งที่คุณเห็นกับ 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") + ``` + + ![A Seaborn heatmap showing correlations between the numeric columns](../../../../translated_images/th/heatmap.bd98dce43b404c57.webp) + + ค่าที่ใกล้กับ `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 คุณค้นพบอะไรบ้าง? +ลองดูวิธีต่าง ๆ ในการแสดงภาพข้อมูล จดรายการไลบรารีต่าง ๆ ที่มีและจดบันทึกว่าไลบรารีไหนเหมาะกับงานประเภทใด เช่น การแสดงผล 2 มิติ กับ 3 มิติ คุณค้นพบอะไรบ้าง? -## การบ้าน +## งานมอบหมาย -[สำรวจการแสดงผล](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/th/2-Regression/2-Data/solution/notebook.ipynb b/translations/th/2-Regression/2-Data/solution/notebook.ipynb index 149f35adf..cf2d05c01 100644 --- a/translations/th/2-Regression/2-Data/solution/notebook.ipynb +++ b/translations/th/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 และทำงานโดยตรงกับ 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-06T13:46:29+00:00", - "source_file": "2-Regression/2-Data/solution/notebook.ipynb", - "language_code": "th" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/th/8-Reinforcement/1-QLearning/README.md b/translations/th/8-Reinforcement/1-QLearning/README.md index b35929a0f..1423cd341 100644 --- a/translations/th/8-Reinforcement/1-QLearning/README.md +++ b/translations/th/8-Reinforcement/1-QLearning/README.md @@ -1,47 +1,47 @@ -# การแนะนำเกี่ยวกับ Reinforcement Learning และ Q-Learning +# บทนำสู่การเรียนรู้แบบเสริมกำลังและ Q-Learning -![สรุปเกี่ยวกับ reinforcement ใน machine learning ในรูปแบบ sketchnote](../../../../sketchnotes/ml-reinforcement.png) -> Sketchnote โดย [Tomomi Imura](https://www.twitter.com/girlie_mac) +![สรุปการเสริมกำลังในแมชชีนเลิร์นนิงในรูปแบบสเก็ตช์โน้ต](../../../../translated_images/th/ml-reinforcement.94024374d63348db.webp) +> สเก็ตช์โน้ตโดย [Tomomi Imura](https://www.twitter.com/girlie_mac) -Reinforcement learning เกี่ยวข้องกับแนวคิดสำคัญสามประการ: ตัวแทน (agent), สถานะ (state) และชุดของการกระทำ (action) ต่อสถานะหนึ่งๆ โดยการดำเนินการกระทำในสถานะที่กำหนด ตัวแทนจะได้รับรางวัล ลองจินตนาการถึงเกมคอมพิวเตอร์ Super Mario คุณคือ Mario คุณอยู่ในด่านเกม ยืนอยู่ข้างหน้าผา ด้านบนคุณมีเหรียญ คุณในฐานะ Mario อยู่ในด่านเกม ณ ตำแหน่งที่เฉพาะเจาะจง ... นั่นคือสถานะของคุณ การก้าวไปทางขวาหนึ่งก้าว (การกระทำ) จะทำให้คุณตกหน้าผา และนั่นจะทำให้คุณได้คะแนนต่ำ อย่างไรก็ตาม การกดปุ่มกระโดดจะทำให้คุณได้คะแนนและยังมีชีวิตอยู่ นั่นคือผลลัพธ์ที่ดีและควรให้คะแนนเชิงบวกแก่คุณ +การเรียนรู้แบบเสริมกำลังเกี่ยวข้องกับแนวคิดสำคัญสามอย่าง: ตัวแทน, สถานะบางอย่าง, และชุดของการกระทำในแต่ละสถานะ โดยการทำการกระทำในสถานะที่ระบุ ตัวแทนจะได้รับรางวัล ลองจินตนาการถึงเกมคอมพิวเตอร์ Super Mario คุณคือตัวมาริโอ คุณอยู่ในเลเวลเกม กำลังยืนอยู่ขอบหน้าผา เหนือคุณเป็นเหรียญ คุณในฐานะมาริโอ ในเลเวลเกม ในตำแหน่งเฉพาะ ... นั่นคือสถานะของคุณ การเคลื่อนที่หนึ่งก้าวไปทางขวา (การกระทำ) จะทำให้คุณตกหน้าผา และนั่นจะทำให้ได้คะแนนตัวเลขต่ำ อย่างไรก็ตาม การกดปุ่มกระโดดจะทำให้คุณได้คะแนนและอยู่รอดได้ นั่นคือผลลัพธ์เชิงบวกและควรได้รับคะแนนตัวเลขบวก -โดยการใช้ reinforcement learning และตัวจำลอง (simulator) เช่นเกม คุณสามารถเรียนรู้วิธีการเล่นเกมเพื่อเพิ่มรางวัลให้ได้มากที่สุด ซึ่งก็คือการมีชีวิตรอดและทำคะแนนให้ได้มากที่สุด +โดยการใช้การเรียนรู้แบบเสริมกำลังและซิมูเลเตอร์ (เกม) คุณสามารถเรียนรู้วิธีการเล่นเกมเพื่อเพิ่มรางวัลสูงสุดซึ่งก็คือการอยู่รอดและทำคะแนนให้ได้มากที่สุด -[![แนะนำเกี่ยวกับ Reinforcement Learning](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) +[![บทนำสู่ Reinforcement Learning](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) -> 🎥 คลิกที่ภาพด้านบนเพื่อฟัง Dmitry อธิบายเกี่ยวกับ Reinforcement Learning +> 🎥 คลิกที่ภาพด้านบนเพื่อฟัง Dmitry พูดคุยเกี่ยวกับ Reinforcement Learning -## [แบบทดสอบก่อนเรียน](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) ด้วย ซึ่งใช้ในโค้ดสมุดบันทึก เพิ่มไฟล์นี้ในไดเรกทอรีเดียวกับสมุดบันทึก ## บทนำ -ในบทเรียนนี้ เราจะสำรวจโลกของ **[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 สำรวจสภาพแวดล้อม เก็บแอปเปิ้ลอร่อยๆ และหลีกเลี่ยงการพบกับหมาป่า +ในบทเรียนนี้ เราจะสำรวจโลกของ **[ปีเตอร์และหมาป่า](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)** ได้รับแรงบันดาลใจจากนิทานเพลงโดยคีตกวีชาวรัสเซีย [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev) เราจะใช้ **การเรียนรู้แบบเสริมกำลัง** เพื่อให้ปีเตอร์สำรวจสภาพแวดล้อมของเขา เก็บแอปเปิ้ลอร่อย ๆ และหลีกเลี่ยงการพบหมาป่า -**Reinforcement Learning** (RL) เป็นเทคนิคการเรียนรู้ที่ช่วยให้เราสามารถเรียนรู้พฤติกรรมที่เหมาะสมที่สุดของ **agent** ใน **environment** โดยการทดลองหลายๆ ครั้ง ตัวแทนในสภาพแวดล้อมนี้ควรมี **เป้าหมาย** ซึ่งกำหนดโดย **reward function** +**การเรียนรู้แบบเสริมกำลัง** (RL) เป็นเทคนิคการเรียนรู้ที่ช่วยให้เราเรียนรู้พฤติกรรมที่เหมาะสมที่สุดของ **ตัวแทน** ใน **สภาพแวดล้อม** โดยการทดลองซ้ำหลายครั้ง ตัวแทนในสภาพแวดล้อมนี้ควรมี **เป้าหมาย** ซึ่งกำหนดโดย **ฟังก์ชันรางวัล** ## สภาพแวดล้อม -เพื่อความง่าย ลองพิจารณาโลกของ Peter เป็นกระดานสี่เหลี่ยมขนาด `width` x `height` ดังนี้: +เพื่อความเรียบง่าย ให้พิจารณาว่าโลกของปีเตอร์เป็นกระดานสี่เหลี่ยมขนาด `width` x `height` ดังนี้: -![สภาพแวดล้อมของ Peter](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![สภาพแวดล้อมของปีเตอร์](../../../../translated_images/th/environment.40ba3cb66256c93f.webp) -แต่ละช่องในกระดานนี้สามารถเป็นได้: +เซลล์แต่ละช่องในกระดานนี้อาจเป็น: -* **พื้นดิน** ซึ่ง Peter และสิ่งมีชีวิตอื่นๆ สามารถเดินได้ -* **น้ำ** ซึ่งแน่นอนว่าไม่สามารถเดินได้ -* **ต้นไม้** หรือ **หญ้า** ซึ่งเป็นที่ที่คุณสามารถพักผ่อนได้ -* **แอปเปิ้ล** ซึ่งเป็นสิ่งที่ Peter ยินดีที่จะหาเพื่อเลี้ยงตัวเอง -* **หมาป่า** ซึ่งเป็นอันตรายและควรหลีกเลี่ยง +* **พื้นดิน** ที่ปีเตอร์และสิ่งมีชีวิตอื่น ๆ สามารถเดินได้ +* **น้ำ** ซึ่งแน่นอนไม่สามารถเดินได้ +* **ต้นไม้** หรือ **หญ้า** สถานที่ที่คุณสามารถพักผ่อน +* **แอปเปิ้ล** ซึ่งเป็นสิ่งที่ปีเตอร์จะดีใจหากพบเพื่อเลี้ยงตัวเอง +* **หมาป่า** ซึ่งอันตรายและควรหลีกเลี่ยง -มีโมดูล Python แยกต่างหาก [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) ซึ่งมีโค้ดสำหรับทำงานกับสภาพแวดล้อมนี้ เนื่องจากโค้ดนี้ไม่สำคัญต่อการทำความเข้าใจแนวคิดของเรา เราจะนำเข้าโมดูลและใช้มันเพื่อสร้างกระดานตัวอย่าง (code block 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() ``` -โค้ดนี้ควรพิมพ์ภาพของสภาพแวดล้อมที่คล้ายกับภาพด้านบน +โค้ดนี้จะแสดงภาพของสภาพแวดล้อมที่คล้ายกับภาพด้านบน ## การกระทำและนโยบาย -ในตัวอย่างของเรา เป้าหมายของ Peter คือการหาแอปเปิ้ล ในขณะที่หลีกเลี่ยงหมาป่าและสิ่งกีดขวางอื่นๆ เพื่อทำเช่นนี้ เขาสามารถเดินไปรอบๆ ได้จนกว่าจะพบแอปเปิ้ล +ในตัวอย่างของเรา เป้าหมายของปีเตอร์คือการค้นหาแอปเปิ้ลได้ในขณะเดียวกันก็หลีกเลี่ยงหมาป่าและอุปสรรคอื่น ๆ ในการทำเช่นนี้ เขาสามารถเดินไปรอบ ๆ จนกว่าจะพบแอปเปิ้ล -ดังนั้น ในตำแหน่งใดๆ เขาสามารถเลือกหนึ่งในสี่การกระทำต่อไปนี้: ขึ้น, ลง, ซ้าย และขวา +ดังนั้น ในตำแหน่งใด ๆ เขาสามารถเลือกทำหนึ่งในปฏิบัติการต่อไปนี้: ขึ้น, ลง, ซ้าย และขวา -เราจะกำหนดการกระทำเหล่านี้เป็นพจนานุกรม และจับคู่กับคู่ของการเปลี่ยนแปลงพิกัดที่สอดคล้องกัน ตัวอย่างเช่น การเคลื่อนไปทางขวา (`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()) } ``` -สรุปแล้ว กลยุทธ์และเป้าหมายของสถานการณ์นี้คือ: +สรุปแล้ว ยุทธศาสตร์และเป้าหมายของสถานการณ์นี้คือ: -- **กลยุทธ์** ของตัวแทนของเรา (Peter) ถูกกำหนดโดยสิ่งที่เรียกว่า **policy** นโยบายคือฟังก์ชันที่ส่งคืนการกระทำในสถานะที่กำหนด ในกรณีของเรา สถานะของปัญหาถูกแสดงโดยกระดาน รวมถึงตำแหน่งปัจจุบันของผู้เล่น +- **ยุทธศาสตร์** ของตัวแทนของเรา (ปีเตอร์) ถูกกำหนดโดยที่เรียกว่า **นโยบาย** นโยบายเป็นฟังก์ชันที่คืนการกระทำ ณ สถานะใดสถานะหนึ่ง ในกรณีของเรา สถานะของปัญหาคือการแสดงผลโดยกระดาน รวมถึงตำแหน่งปัจจุบันของผู้เล่น -- **เป้าหมาย** ของ reinforcement learning คือการเรียนรู้นโยบายที่ดีที่จะช่วยให้เราสามารถแก้ปัญหาได้อย่างมีประสิทธิภาพ อย่างไรก็ตาม ในฐานะพื้นฐาน ลองพิจารณานโยบายที่ง่ายที่สุดที่เรียกว่า **random walk** +- **เป้าหมาย** ของการเรียนรู้แบบเสริมกำลังคือการเรียนรู้นโยบายที่ดีในที่สุดที่จะช่วยให้เราแก้ปัญหาได้อย่างมีประสิทธิภาพ อย่างไรก็ตาม ในฐานะฐานข้อมูล ลองพิจารณานโยบายที่ง่ายที่สุดที่เรียกว่า **การเดินแบบสุ่ม** -## Random walk +## การเดินแบบสุ่ม -ลองแก้ปัญหาของเราด้วยการใช้กลยุทธ์ random walk ก่อน ด้วย random walk เราจะสุ่มเลือกการกระทำถัดไปจากการกระทำที่อนุญาต จนกว่าจะถึงแอปเปิ้ล (code block 3) +มาลองแก้ปัญหาของเราด้วยการใช้ยุทธศาสตร์เดินแบบสุ่มก่อน ด้วยการเดินแบบสุ่ม เราจะเลือกการกระทำถัดไปแบบสุ่มจากการกระทำที่อนุญาต จนกว่าจะถึงแอปเปิ้ล (โค้ดบล็อก 3) -1. ใช้ random walk ด้วยโค้ดด้านล่าง: +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 ก้าว - คุณยังสามารถดูการเคลื่อนไหวของ Peter ระหว่าง random walk ได้: + คุณยังสามารถเห็นการเคลื่อนที่ของปีเตอร์ในระหว่างการเดินแบบสุ่ม: - ![การเดินแบบสุ่มของ Peter](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) + ![การเดินแบบสุ่มของปีเตอร์](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) -## Reward function +## ฟังก์ชันรางวัล -เพื่อทำให้นโยบายของเราฉลาดขึ้น เราจำเป็นต้องเข้าใจว่าการเคลื่อนไหวใด "ดีกว่า" การเคลื่อนไหวอื่นๆ เพื่อทำเช่นนี้ เราจำเป็นต้องกำหนดเป้าหมายของเรา +เพื่อทำให้นโยบายของเราฉลาดยิ่งขึ้น เราจำเป็นต้องเข้าใจว่าการเคลื่อนไหวใด "ดีกว่า" อื่น ๆ ในการทำเช่นนี้ เราจำเป็นต้องกำหนดเป้าหมายของเรา -เป้าหมายสามารถกำหนดในแง่ของ **reward function** ซึ่งจะส่งคืนค่าคะแนนสำหรับแต่ละสถานะ ยิ่งตัวเลขสูง ยิ่งได้รางวัลที่ดี (code block 5) +เป้าหมายสามารถกำหนดได้ในรูปแบบของ **ฟังก์ชันรางวัล** ซึ่งจะคืนค่าคะแนนสำหรับแต่ละสถานะ จำนวนที่สูงกว่าจะหมายถึงฟังก์ชันรางวัลที่ดีกว่า (โค้ดบล็อก 5) ```python move_reward = -0.1 @@ -154,39 +154,115 @@ def reward(m,pos=None): return move_reward ``` -สิ่งที่น่าสนใจเกี่ยวกับ reward function คือในกรณีส่วนใหญ่ *เราจะได้รับรางวัลที่สำคัญเมื่อสิ้นสุดเกมเท่านั้น* ซึ่งหมายความว่าอัลกอริทึมของเราควรจำ "ก้าวที่ดี" ที่นำไปสู่รางวัลเชิงบวกในตอนท้าย และเพิ่มความสำคัญของมัน ในทำนองเดียวกัน การเคลื่อนไหวทั้งหมดที่นำไปสู่ผลลัพธ์ที่ไม่ดีควรถูกลดความสำคัญลง +สิ่งที่น่าสนใจเกี่ยวกับฟังก์ชันรางวัลก็คือ ในหลายกรณี *เราจะได้รับรางวัลสำคัญก็ต่อเมื่อสิ้นสุดเกมเท่านั้น* ซึ่งหมายความว่าอัลกอริธึมของเราควรจะจำขั้นตอน "ดี" ที่นำไปสู่รางวัลบวกในตอนท้าย และเพิ่มความสำคัญของมัน ในทำนองเดียวกัน การเคลื่อนไหวที่นำไปสู่ผลลัพธ์ไม่ดีควรถูกลดความสำคัญ ## Q-Learning -อัลกอริทึมที่เราจะพูดถึงที่นี่เรียกว่า **Q-Learning** ในอัลกอริทึมนี้ นโยบายถูกกำหนดโดยฟังก์ชัน (หรือโครงสร้างข้อมูล) ที่เรียกว่า **Q-Table** ซึ่งบันทึก "ความดี" ของแต่ละการกระทำในสถานะที่กำหนด +อัลกอริธึมที่เราจะพูดถึงที่นี่เรียกว่า **Q-Learning** ในอัลกอริธึมนี้ นโยบายจะถูกกำหนดโดยฟังก์ชัน (หรืองานโครงสร้างข้อมูล)ที่เรียกว่า **Q-Table** ซึ่งบันทึกความ "ดี" ของแต่ละการกระทำในสถานะที่กำหนด -มันถูกเรียกว่า Q-Table เพราะมักจะสะดวกที่จะแสดงมันเป็นตาราง หรืออาร์เรย์หลายมิติ เนื่องจากกระดานของเรามีมิติ `width` x `height` เราสามารถแสดง Q-Table โดยใช้อาร์เรย์ numpy ที่มีรูปร่าง `width` x `height` x `len(actions)`: (code block 6) +เรียกว่า Q-Table เพราะสะดวกที่จะนำเสนอเป็นตาราง หรืออาเรย์หลายมิติ เนื่องจากกระดานของเรามีขนาด `width` x `height` เราจึงสามารถแทน Q-Table ด้วยอาเรย์ numpy ที่มีรูปร่าง `width` x `height` x `len(actions)`: (โค้ดบล็อก 6) ```python Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions) ``` -สังเกตว่าเราเริ่มต้นค่าทั้งหมดใน Q-Table ด้วยค่าที่เท่ากัน ในกรณีของเรา - 0.25 ซึ่งสอดคล้องกับนโยบาย "random walk" เพราะการเคลื่อนไหวทั้งหมดในแต่ละสถานะมีค่าเท่ากัน เราสามารถส่ง Q-Table ไปยังฟังก์ชัน `plot` เพื่อแสดงภาพตารางบนกระดาน: `m.plot(Q)` +สังเกตว่าเราเริ่มต้นค่า Q-Table ทั้งหมดที่ค่าเท่ากัน ในกรณีของเราคือ 0.25 ซึ่งสอดคล้องกับนโยบาย "เดินแบบสุ่ม" เพราะทุกการเคลื่อนไหวในแต่ละสถานะดีเท่ากัน เราสามารถส่ง Q-Table ไปยังฟังก์ชัน `plot` เพื่อแสดงภาพตารางบนกระดาน: `m.plot(Q)` -![สภาพแวดล้อมของ Peter](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![สภาพแวดล้อมของปีเตอร์](../../../../translated_images/th/env_init.04e8f26d2d60089e.webp) -ในแต่ละช่องจะมี "ลูกศร" ที่ระบุทิศทางการเคลื่อนไหวที่ต้องการ เนื่องจากทุกทิศทางเท่ากัน จึงแสดงเป็นจุด +ตรงกลางของแต่ละเซลล์มี "ลูกศร" ที่ชี้ทิศทางการเคลื่อนที่ที่ต้องการ เนื่องจากทิศทางทั้งหมดเท่ากัน จึงแสดงเป็นจุด -ตอนนี้เราจำเป็นต้องรันการจำลอง สำรวจสภาพแวดล้อมของเรา และเรียนรู้การแจกแจงค่าของ Q-Table ที่ดีกว่า ซึ่งจะช่วยให้เราหาเส้นทางไปยังแอปเปิ้ลได้เร็วขึ้นมาก +ตอนนี้เราต้องรันการจำลอง สำรวจสภาพแวดล้อมของเรา และเรียนรู้กระจายค่า Q-Table ที่ดีกว่า ซึ่งจะช่วยให้เราค้นหาเส้นทางไปยังแอปเปิ้ลได้เร็วขึ้นมาก -## แก่นของ Q-Learning: สมการ Bellman +## ประสบการณ์ของ Q-Learning: สมการเบลล์แมน -เมื่อเราเริ่มเคลื่อนไหว การกระทำแต่ละครั้งจะมีรางวัลที่สอดคล้องกัน กล่าวคือ เราสามารถเลือกการกระทำถัดไปตามรางวัลที่ได้รับทันที อย่างไรก็ตาม ในสถานะส่วนใหญ่ การเคลื่อนไหวจะไม่บรรลุเป้าหมายของเราในการไปถึงแอปเปิ้ล และดังนั้นเราจึงไม่สามารถตัดสินใจได้ทันทีว่าทิศทางใดดีกว่า +เมื่อเราเริ่มเคลื่อนที่ การกระทำแต่ละครั้งจะมีรางวัลที่สอดคล้อง เช่น เราสามารถเลือกการกระทำถัดไปโดยอ้างอิงรางวัลทันทีที่สูงที่สุดได้ อย่างไรก็ตาม ในหลายสถานะ การเคลื่อนไหวจะไม่บรรลุเป้าหมายของเราในการถึงแอปเปิ้ล และเราไม่สามารถตัดสินใจทันทีได้ว่าทิศทางใดดีกว่า -> จำไว้ว่าสิ่งที่สำคัญไม่ใช่ผลลัพธ์ทันที แต่เป็นผลลัพธ์สุดท้ายที่เราจะได้รับเมื่อสิ้นสุดการจำลอง +> จำไว้ว่า ไม่ใช่ผลลัพธ์ทันทีที่สำคัญ แต่เป็นผลลัพธ์สุดท้ายที่เราจะได้รับเมื่อจบการจำลอง -เพื่อพิจารณารางวัลที่ล่าช้า เราจำเป็นต้องใช้หลักการของ **[dynamic programming](https://en.wikipedia.org/wiki/Dynamic_programming)** ซึ่งช่วยให้เราคิดเกี่ยวกับปัญหาในเชิงเวียนกลับ +เพื่อคำนึงถึงรางวัลล่าช้านี้ เราต้องใช้หลักการของ **[การเขียนโปรแกรมแบบไดนามิก](https://en.wikipedia.org/wiki/Dynamic_programming)** ซึ่งช่วยให้เราคิดปัญหาเชิงเรียกซ้ำ -สมมติว่าเรากำลังอยู่ในสถานะ *s* และเราต้องการเคลื่อนไปยังสถานะถัดไป *s'* โดยการทำเช่นนี้ เราจะได้รับรางวัลทันที *r(s,a)* ซึ่งกำหนดโดย reward function บวกกับรางวัลในอนาคตบางส่วน หากเราสมมติว่า Q-Table ของเราสะท้อนถึง "ความน่าสนใจ" ของแต่ละการกระทำอย่างถูกต้องแล้ว ในสถานะ *s'* เราจะเลือกการกระทำ *a'* ที่สอดคล้องกับค่ามากที่สุดของ *Q(s',a')* ดังนั้น รางวัลในอนาคตที่ดีที่สุดที่เราสามารถได้รับในสถานะ *s* จะถูกกำหนดเป็น `max` +สมมติว่าเรากำลังอยู่ที่สถานะ *s* และเราต้องการย้ายไปสถานะถัดไป *s'* การทำเช่นนี้ เราจะได้รับรางวัลทันที *r(s,a)* ซึ่งกำหนดโดยฟังก์ชันรางวัล รวมทั้งรางวัลในอนาคต ถ้าเราสมมติว่า Q-Table ของเราสะท้อนถึงความ "น่าสนใจ" ของแต่ละการกระทำอย่างถูกต้อง ณ สถานะ *s'* เราจะเลือกการกระทำ *a* ที่มีค่าสูงสุดของ *Q(s',a')* ดังนั้น รางวัลในอนาคตที่ดีที่สุดที่เราจะได้รับที่สถานะ *s* จะถูกนิยามเป็น `max`a'*Q(s',a')* (max ที่นี่คำนวณจากการกระทำทั้งหมด *a'* ที่สถานะ *s'*) + +นี่คือ **สูตรเบลล์แมน** สำหรับคำนวณค่าของ Q-Table ที่สถานะ *s* โดยให้การกระทำ *a*: + + + +ที่นี่ γ คือที่เรียกว่า **discount factor** ซึ่งกำหนดว่าคุณควรจะชอบรางวัลปัจจุบันมากกว่ารางวัลในอนาคตมากแค่ไหน หรือในทางกลับกัน + +## อัลกอริธึมการเรียนรู้ + +จากสมการด้านบน เราสามารถเขียนโค้ดเทียมสำหรับอัลกอริธึมการเรียนรู้ของเราได้ดังนี้: + +* เริ่มต้น Q-Table 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 หากเราเลือกการกระทำแบบสุ่ม เราจะเป็นการ **สำรวจ** สภาพแวดล้อมแบบสุ่ม และเรามีแนวโน้มจะตายบ่อย ๆ และสำรวจบริเวณที่เราไม่ปกติจะไป วิธีการทางเลือกคือการ **ใช้ประโยชน์ (exploit)** ค่าของ Q-Table ที่เราทราบแล้ว และเลือกการกระทำที่ดีที่สุด (ค่าของ Q-Table สูงกว่า) ณ สถานะ *s* อย่างไรก็ตาม วิธีนี้จะป้องกันไม่ให้เราสำรวจสถานะอื่น ๆ และมีแนวโน้มว่าเราอาจไม่พบวิธีแก้ไขที่ดีที่สุด + +ดังนั้น วิธีที่ดีที่สุดคือการหาสมดุลระหว่างการสำรวจและการใช้ประโยชน์ สามารถทำได้โดยการเลือกการกระทำที่สถานะ *s* ด้วยความน่าจะเป็นที่สัดส่วนกับค่าต่าง ๆ ใน 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 + ``` + + เราเพิ่ม `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-Table ควรถูกปรับปรุงด้วยค่าที่กำหนดความน่าสนใจของการกระทำต่าง ๆ ในแต่ละขั้นตอน เราสามารถทดลองแสดงภาพ Q-Table โดยการวาดเวกเตอร์ที่แต่ละเซลล์เพื่อชี้ไปยังทิศทางที่ต้องการเคลื่อนที่ เพื่อความเรียบง่าย เราใช้การวาดวงกลมเล็กแทนหัวลูกศร + + ## การตรวจสอบนโยบาย -เนื่องจาก Q-Table แสดง "ความน่าสนใจ" ของแต่ละการกระทำในแต่ละสถานะ การใช้งานเพื่อกำหนดการนำทางที่มีประสิทธิภาพในโลกของเราจึงค่อนข้างง่าย ในกรณีที่ง่ายที่สุด เราสามารถเลือกการกระทำที่มีค่าที่สูงที่สุดใน Q-Table: (code block 9) +เนื่องจาก 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 ซึ่งทำให้ตัวแทนเคลื่อนที่วนเวียนระหว่างสถานะเหล่านั้นอย่างไม่สิ้นสุด + +> หากคุณลองรันโค้ดข้างต้นหลายครั้ง คุณอาจสังเกตเห็นว่า บางครั้งมัน "ค้าง" และคุณต้องกดปุ่ม STOP ในโน้ตบุ๊กเพื่อหยุด นั่นเกิดขึ้นเพราะอาจมีสถานการณ์ที่สองสถานะ "ชี้" ไปยังซึ่งกันและกันในแง่ของค่าที่เหมาะสมของ Q-Value ซึ่งในกรณีนี้เอเย่นต์จะเคลื่อนที่ไปมาระหว่างสถานะนั้น ๆ โดยไม่สิ้นสุด ## 🚀ความท้าทาย -> **งานที่ 1:** ปรับฟังก์ชัน `walk` เพื่อจำกัดความยาวสูงสุดของเส้นทางโดยจำนวนก้าวที่กำหนด (เช่น 100) และดูว่าโค้ดด้านบนคืนค่านี้เป็นครั้งคราว +> **งานที่ 1:** ปรับฟังก์ชัน `walk` เพื่อจำกัดความยาวเส้นทางสูงสุดตามจำนวนขั้นตอนที่กำหนด (เช่น 100 ขั้นตอน) และสังเกตว่าโค้ดข้างต้นจะคืนค่านี้เป็นครั้งคราว -> **งานที่ 2:** ปรับฟังก์ชัน `walk` เพื่อไม่ให้กลับไปยังสถานที่ที่เคยไปมาก่อนแล้ว วิธีนี้จะป้องกันไม่ให้ `walk` วนซ้ำ อย่างไรก็ตาม ตัวแทนอาจยังคงติดอยู่ในตำแหน่งที่ไม่สามารถหลบหนีได้ +> **งานที่ 2:** ปรับฟังก์ชัน `walk` เพื่อไม่ให้กลับไปยังสถานที่ที่เคยไปแล้วก่อนหน้า วิธีนี้จะป้องกันไม่ให้ `walk` หมุนวนซ้ำ ๆ แม้กระนั้น เอเย่นต์ยังอาจติดอยู่ในตำแหน่งที่ไม่สามารถหลบหนีได้ ## การนำทาง -นโยบายการนำทางที่ดีกว่าคือแบบที่เราใช้ระหว่างการฝึก ซึ่งรวมการใช้ประโยชน์จากข้อมูลที่มีอยู่และการสำรวจ ในนโยบายนี้ เราจะเลือกแต่ละการกระทำด้วยความน่าจะเป็นที่สัมพันธ์กับค่าที่อยู่ใน Q-Table กลยุทธ์นี้อาจยังทำให้ตัวแทนกลับไปยังตำแหน่งที่เคยสำรวจแล้ว แต่ดังที่คุณเห็นจากโค้ดด้านล่าง มันส่งผลให้เส้นทางเฉลี่ยสั้นลงมากไปยังตำแหน่งที่ต้องการ (จำไว้ว่า `print_statistics` รันการจำลอง 100 ครั้ง): (code block 10) +นโยบายการนำทางที่ดีกว่าคือนโยบายที่เราใช้ในระหว่างการฝึกสอน ซึ่งผสมผสานทั้งการใช้ประโยชน์กับการสำรวจ ในนโยบายนี้ เราจะเลือกแต่ละการกระทำด้วยความน่าจะเป็นบางประการ สอดคล้องกับค่าที่อยู่ใน Q-Table กลยุทธ์นี้อาจทำให้เอเย่นต์ย้อนกลับไปยังตำแหน่งที่ได้สำรวจไปแล้ว แต่ตามที่เห็นจากโค้ดด้านล่าง จะเห็นได้ว่าให้เส้นทางเฉลี่ยที่สั้นมากไปยังตำแหน่งที่ต้องการ (อย่าลืมว่า `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-Table โดยการเขียนทับด้วยค่าที่ใหม่ แนะนำให้ลดผลกระทบนี้โดยลดอัตราการเรียนรู้ (เช่น ในช่วงท้ายของการฝึก เราจะปรับค่าใน Q-Table ด้วยค่าน้อย ๆ เท่านั้น) -โดยรวมแล้ว สิ่งสำคัญคือต้องจำไว้ว่าความสำเร็จและคุณภาพของกระบวนการเรียนรู้ขึ้นอยู่กับพารามิเตอร์ เช่น อัตราการเรียนรู้ การลดอัตราการเรียนรู้ และตัวคูณลดค่า พารามิเตอร์เหล่านี้มักถูกเรียกว่า **hyperparameters** เพื่อแยกความแตกต่างจาก **parameters** ซึ่งเราปรับแต่งระหว่างการฝึก (เช่น ค่าสัมประสิทธิ์ใน Q-Table) กระบวนการค้นหาค่าที่ดีที่สุดสำหรับ hyperparameters เรียกว่า **hyperparameter optimization** และมันสมควรได้รับการพูดถึงในหัวข้อแยกต่างหาก +โดยรวมแล้ว สิ่งสำคัญคือการจำไว้ว่า ความสำเร็จและคุณภาพของกระบวนการเรียนรู้นั้นขึ้นอยู่กับพารามิเตอร์ต่าง ๆ เช่น อัตราการเรียนรู้ การลดอัตราการเรียนรู้ และปัจจัยลดค่า พารามิเตอร์เหล่านี้มักถูกเรียกว่า **hyperparameters** เพื่อแยกแยะจาก **parameters** ซึ่งเราเพิ่มประสิทธิภาพในระหว่างการฝึก (เช่น ค่าสัมประสิทธิ์ Q-Table) กระบวนการค้นหาค่าที่ดีที่สุดสำหรับ hyperparameters เรียกว่า **hyperparameter optimization** และเป็นหัวข้อที่ควรแยกพูดถึง -## [แบบทดสอบหลังการบรรยาย](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/th/8-Reinforcement/2-Gym/README.md b/translations/th/8-Reinforcement/2-Gym/README.md index cb5cd9ed1..257631918 100644 --- a/translations/th/8-Reinforcement/2-Gym/README.md +++ b/translations/th/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 + +![การหนีออกจากสถานการณ์ที่ยากลำบาก!](../../../../translated_images/th/escape.18862db9930337e3.webp) + +> พีเตอร์และเพื่อน ๆ ของเขาคิดสร้างสรรค์วิธีหนีหมาป่า! ภาพโดย [Jen Looper](https://twitter.com/jenlooper) + +เราจะใช้รุ่นง่ายของการรักษาสมดุลที่รู้จักกันในชื่อปัญหา **CartPole** ในโลก cartpole นี้ เรามีที่เลื่อนไปทางซ้าย-ขวา และเป้าหมายคือรักษาเสาแนวตั้งให้ตั้งอยู่บนที่เลื่อนนี้ได้อย่างสมดุล + +a cartpole + +## สิ่งที่ต้องเตรียม + +ในบทเรียนนี้เราจะใช้ไลบรารีชื่อ **OpenAI Gym** เพื่อจำลอง **สภาพแวดล้อม** ต่าง ๆ คุณสามารถรันโค้ดของบทเรียนนี้ในเครื่องตัวเอง (เช่นจากโปรแกรม Visual Studio Code) ซึ่งกรณีนี้จะเปิดหน้าต่างจำลองขึ้นมาหนึ่งหน้าต่าง เมื่อรันโค้ดออนไลน์ อาจต้องปรับแต่งโค้ดตามที่อธิบายไว้ [ตรงนี้](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7) ## OpenAI Gym -ในบทเรียนก่อน กฎของเกมและสถานะถูกกำหนดโดยคลาส `Board` ซึ่งเราได้สร้างขึ้นเอง ในที่นี้เราจะใช้ **สภาพแวดล้อมจำลอง** พิเศษ ซึ่งจะจำลองฟิสิกส์ของการทรงตัวของเสา หนึ่งในสภาพแวดล้อมจำลองที่ได้รับความนิยมมากที่สุดสำหรับการฝึกอัลกอริทึมการเรียนรู้แบบเสริมกำลังคือ [Gym](https://gym.openai.com/) ซึ่งได้รับการดูแลโดย [OpenAI](https://openai.com/) โดยการใช้ 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 และนำเข้าไลบรารีที่จำเป็น (โค้ดบล็อก 1): ```python import sys @@ -20,15 +40,15 @@ import numpy as np import random ``` -## แบบฝึกหัด - การเริ่มต้นสภาพแวดล้อม CartPole +## แบบฝึกหัด - การเริ่มต้นสภาพแวดล้อม cartpole -ในการทำงานกับปัญหาการทรงตัวของ CartPole เราจำเป็นต้องเริ่มต้นสภาพแวดล้อมที่เกี่ยวข้อง สภาพแวดล้อมแต่ละแห่งจะมี: +เพื่อทำงานกับปัญหาการรักษาสมดุล cartpole เราต้องเริ่มต้นสภาพแวดล้อมที่เกี่ยวข้อง สภาพแวดล้อมแต่ละอันเกี่ยวข้องกับ: -- **Observation space** ที่กำหนดโครงสร้างของข้อมูลที่เราได้รับจากสภาพแวดล้อม สำหรับปัญหา CartPole เราจะได้รับตำแหน่งของเสา ความเร็ว และค่าบางอย่างอื่นๆ +- **Observation space** ที่กำหนดโครงสร้างของข้อมูลที่เราได้รับจากสภาพแวดล้อม สำหรับปัญหา cartpole เราจะได้รับตำแหน่งของเสา ความเร็ว และค่าบางค่าอื่น ๆ -- **Action space** ที่กำหนดการกระทำที่เป็นไปได้ ในกรณีของเรา Action space เป็นแบบไม่ต่อเนื่อง และประกอบด้วยสองการกระทำ - **ซ้าย** และ **ขวา** (code block 2) +- **Action space** กำหนดการกระทำที่เป็นไปได้ สำหรับเรา action space เป็นแบบแบ่งแยกและประกอบด้วยสองการกระทำ - **ซ้าย** และ **ขวา** (โค้ดบล็อก 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 ติดตั้งท้องถิ่นของคุณจะดีที่สุด! (โค้ดบล็อก 3) ```python env.reset() @@ -52,11 +72,11 @@ import random env.close() ``` - คุณควรเห็นภาพที่คล้ายกับภาพนี้: + คุณควรจะเห็นสิ่งที่คล้ายกับภาพนี้: - ![non-balancing cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) + ![cartpole ที่ไม่สมดุล](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) -1. ระหว่างการจำลอง เราจำเป็นต้องได้รับข้อมูลการสังเกตเพื่อที่จะตัดสินใจว่าจะทำอะไรต่อไป ในความเป็นจริง ฟังก์ชัน step จะคืนค่าการสังเกตปัจจุบัน ฟังก์ชันรางวัล และธง done ที่ระบุว่าควรดำเนินการจำลองต่อไปหรือไม่: (code block 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. รับค่าต่ำสุดและค่าสูงสุดของตัวเลขเหล่านั้น: (code block 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-Table ที่กำหนดว่าจะทำอะไรในแต่ละสถานะ เพื่อทำเช่นนี้ได้เราต้องให้สถานะเป็น **ค่าต่าง ๆ อย่างชัดเจน** ซึ่งแปลว่าควรมีจำนวนค่าที่แตกต่างกันจำกัด ดังนั้นเราจึงต้อง **แบ่งช่วง** การสังเกตของเรา เพื่อแมปเป็นชุดสถานะจำกัด -มีวิธีการบางอย่างที่เราสามารถทำได้: +มีหลายวิธีที่เราสามารถทำได้: -- **แบ่งเป็นช่วง** หากเรารู้ช่วงของค่าบางค่า เราสามารถแบ่งช่วงนี้ออกเป็นจำนวน **ช่วง** และแทนค่าด้วยหมายเลขช่วงที่มันอยู่ วิธีนี้สามารถทำได้โดยใช้เมธอด [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html) ของ numpy ในกรณีนี้ เราจะทราบขนาดของสถานะอย่างแม่นยำ เพราะมันจะขึ้นอยู่กับจำนวนช่วงที่เราเลือกสำหรับการทำให้เป็นแบบดิจิทัล +- **แบ่งออกเป็นถังข้อมูล**: ถ้าเรารู้ช่วงของค่าบางค่า เราสามารถแบ่งช่วงนี้ออกเป็นจำนวน **ถังข้อมูล** และแทนที่ค่าด้วยหมายเลขถังข้อมูลที่มันอยู่ วิธีนี้ใช้เมธอด [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html) ของ numpy ในกรณีนี้ เราจะรู้อย่างแน่นอนว่าขนาดของสถานะเป็นเท่าไรเพราะขึ้นอยู่กับจำนวนถังข้อมูลที่เราเลือกสำหรับการแปลงเป็นดิจิทัล -✅ เราสามารถใช้การแทรกเชิงเส้นเพื่อปรับค่ามาอยู่ในช่วงที่จำกัด (เช่น จาก -20 ถึง 20) และจากนั้นแปลงตัวเลขเป็นจำนวนเต็มโดยการปัดเศษ วิธีนี้จะให้การควบคุมขนาดของสถานะน้อยลง โดยเฉพาะอย่างยิ่งหากเราไม่ทราบช่วงที่แน่นอนของค่าขาเข้า ตัวอย่างเช่น ในกรณีของเรา 2 ใน 4 ค่าจะไม่มีขอบเขตบน/ล่าง ซึ่งอาจส่งผลให้มีจำนวนสถานะที่ไม่มีที่สิ้นสุด +✅ เราสามารถใช้การประมาณเชิงเส้น (linear interpolation) เพื่อนำค่ามาให้อยู่ในช่วงจำกัด (เช่นจาก -20 ถึง 20) แล้วเปลี่ยนตัวเลขเป็นจำนวนเต็มโดยปัดเศษ วิธีนี้ให้การควบคุมขนาดของสถานะน้อยลงเล็กน้อย โดยเฉพาะถ้าเราไม่รู้ช่วงที่แน่นอนของค่าป้อนเข้า ตัวอย่างเช่น กรณีของเรา มี 2 ใน 4 ค่าที่ไม่มีขอบเขตบนหรือล่าง ซึ่งอาจทำให้จำนวนสถานะไม่มีที่สิ้นสุด -ในตัวอย่างของเรา เราจะใช้วิธีที่สอง ตามที่คุณอาจสังเกตเห็นในภายหลัง แม้จะไม่มีขอบเขตบน/ล่าง ค่าดังกล่าวมักจะไม่ค่อยมีค่าที่อยู่นอกช่วงที่จำกัด ดังนั้นสถานะที่มีค่าที่สุดขั้วจะเกิดขึ้นได้ยาก +ในตัวอย่างของเรา เราจะเลือกวิธีที่สอง ตามที่คุณจะเห็นภายหลัง ถึงแม้ขอบเขตบน/ล่างไม่ได้กำหนดไว้ ค่าพวกนี้ก็น้อยครั้งที่จะทะลุออกนอกช่วงจำกัด ดังนั้นสถานะที่มีค่าสุดขั้วจะค่อนข้างน้อยมาก -1. นี่คือฟังก์ชันที่จะรับค่าการสังเกตจากโมเดลของเราและสร้างทูเพิลของค่าจำนวนเต็ม 4 ค่า: (code block 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. ลองสำรวจวิธีการทำให้เป็นแบบไม่ต่อเนื่องด้วยช่วงอีกวิธีหนึ่ง: (code block 7) +1. มาลองวิธีแบ่งช่วงโดยใช้ถังข้อมูล: (โค้ดบล็อก 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 จริง ๆ (โค้ดบล็อก 8) ```python env.reset() @@ -150,15 +170,15 @@ import random env.close() ``` - ✅ ยกเลิกการคอมเมนต์บรรทัดที่เริ่มต้นด้วย env.render หากคุณต้องการดูว่าสภาพแวดล้อมทำงานอย่างไร มิฉะนั้นคุณสามารถรันมันในพื้นหลัง ซึ่งจะเร็วกว่า เราจะใช้การรันแบบ "มองไม่เห็น" นี้ในระหว่างกระบวนการ Q-Learning ของเรา + ✅ ยกเลิกการคอมเมนต์บรรทัดที่เริ่มด้วย env.render ถ้าคุณอยากดูการทำงานของสภาพแวดล้อมแบบเรียลไทม์ หากไม่ทำก็รันโค้ดในฉากหลังซึ่งจะเร็วกว่า เราจะใช้วิธีรัน “ไม่เห็น” นี้ในขั้นตอน Q-Learning ## โครงสร้างของ Q-Table -ในบทเรียนก่อน สถานะเป็นคู่ของตัวเลขง่ายๆ จาก 0 ถึง 8 และดังนั้นจึงสะดวกที่จะแสดง Q-Table ด้วยเทนเซอร์ numpy ที่มีรูปร่าง 8x8x2 หากเราใช้การทำให้เป็นแบบไม่ต่อเนื่องด้วยช่วง ขนาดของเวกเตอร์สถานะของเราก็จะทราบเช่นกัน ดังนั้นเราสามารถใช้วิธีเดียวกันและแสดงสถานะด้วยอาร์เรย์ที่มีรูปร่าง 20x20x10x10x2 (ที่นี่ 2 คือมิติของ Action space และมิติแรกสอดคล้องกับจำนวนช่วงที่เราเลือกใช้สำหรับแต่ละพารามิเตอร์ใน Observation space) +ในบทเรียนก่อนหน้าสถานะเป็นคู่ตัวเลขง่าย ๆ ตั้งแต่ 0 ถึง 8 ซึ่งสะดวกในการแทน Q-Table ด้วยเทนเซอร์ numpy ขนาด 8x8x2 ถ้าเราใช้วิธีแบ่งช่วงอย่างถังข้อมูล ขนาดของเวกเตอร์สถานะก็จะทราบเช่นกัน ดังนั้นเราสามารถแทนสถานะด้วยอาร์เรย์ขนาด 20x20x10x10x2 (ที่นี่ 2 คือมิติของ action space และมิติแรก ๆ เป็นจำนวนถังข้อมูลที่เราใช้สำหรับแต่ละพารามิเตอร์ใน observation space) -อย่างไรก็ตาม บางครั้งขนาดที่แน่นอนของ Observation space อาจไม่ทราบ ในกรณีของฟังก์ชัน `discretize` เราอาจไม่สามารถมั่นใจได้ว่าสถานะของเราจะอยู่ในขอบเขตที่แน่นอน เพราะค่าบางค่าของต้นฉบับไม่มีขอบเขต ดังนั้นเราจะใช้วิธีที่แตกต่างออกไปเล็กน้อยและแสดง Q-Table ด้วยดิกชันนารี +แต่บางครั้งมิติที่แม่นยำของ observation space อาจไม่ทราบ ในกรณีของฟังก์ชัน `discretize` เราอาจไม่แน่ใจว่าสถานะจะอยู่ในขอบเขตที่กำหนดเพราะค่าส่วนหนึ่งไม่มีขอบเขต เราจะใช้วิธีแทน Q-Table ด้วยพจนานุกรมแทน -1. ใช้คู่ *(state,action)* เป็นคีย์ของดิกชันนารี และค่าจะสอดคล้องกับค่าของ Q-Table (code block 9) +1. ใช้คู่ *(state, action)* เป็นคีย์ของพจนานุกรม และค่าจะเป็นค่าของ Q-Table entry (โค้ดบล็อก 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-Table สำหรับสถานะที่กำหนดที่สอดคล้องกับการกระทำที่เป็นไปได้ทั้งหมด ถ้าไม่มีข้อมูลนั้นใน Q-Table เราจะคืนค่าเริ่มต้นเป็น 0 ## มาเริ่ม Q-Learning กันเถอะ -ตอนนี้เราพร้อมที่จะสอน Peter ให้ทรงตัวแล้ว! +ตอนนี้เราพร้อมจะสอนพีเตอร์ให้รักษาสมดุลแล้ว! -1. ก่อนอื่น มาตั้งค่าพารามิเตอร์ไฮเปอร์บางตัว: (code block 10) +1. เริ่มโดยตั้งค่าพารามิเตอร์ไฮเปอร์จำนวนหนึ่ง: (โค้ดบล็อก 10) ```python - # hyperparameters + # ไฮเปอร์พารามิเตอร์ alpha = 0.3 gamma = 0.9 epsilon = 0.90 ``` - ที่นี่ `alpha` คือ **learning rate** ที่กำหนดว่าเราควรปรับค่าปัจจุบันของ Q-Table ในแต่ละขั้นตอนมากน้อยเพียงใด ในบทเรียนก่อนเราเริ่มต้นด้วย 1 และจากนั้นลด `alpha` ลงในระหว่างการฝึก ในตัวอย่างนี้เราจะคงค่าคงที่ไว้เพื่อความเรียบง่าย และคุณสามารถทดลองปรับค่าของ `alpha` ได้ในภายหลัง + ที่นี่ `alpha` คือ **อัตราการเรียนรู้** ที่กำหนดว่าควรจะปรับค่าปัจจุบันของ Q-Table มากน้อยแค่ไหนในแต่ละก้าว ในบทเรียนก่อนหน้าเราเริ่มต้นจาก 1 แล้วลด `alpha` ในระหว่างฝึก ในตัวอย่างนี้เราจะเก็บให้คงที่เพื่อความง่าย และคุณสามารถทดลองปรับค่า `alpha` ได้ทีหลัง - `gamma` คือ **discount factor** ที่แสดงว่าเราควรให้ความสำคัญกับรางวัลในอนาคตมากกว่ารางวัลปัจจุบันมากน้อยเพียงใด + `gamma` คือ **ตัวลดค่ารางวัลในอนาคต** ที่แสดงระดับความสำคัญของรางวัลในอนาคตเทียบกับรางวัลปัจจุบัน - `epsilon` คือ **exploration/exploitation factor** ที่กำหนดว่าเราควรเลือกการสำรวจมากกว่าการใช้ประโยชน์หรือไม่ ในอัลกอริทึมของเรา เราจะเลือกการกระทำถัดไปตามค่าของ Q-Table ในเปอร์เซ็นต์ของกรณีที่กำหนดโดย `epsilon` และในจำนวนที่เหลือเราจะดำเนินการแบบสุ่ม สิ่งนี้จะช่วยให้เราสำรวจพื้นที่การค้นหาที่เราไม่เคยเห็นมาก่อน + `epsilon` คือ **ตัวแปรสำรวจ/ใช้ประโยชน์** ที่กำหนดว่าจะสำรวจมากกว่าการใช้ประโยชน์ หรือในทางกลับกัน ในอัลกอริทึมของเรา เราจะเลือกการกระทำถัดไปตามค่า Q-Table ในสัดส่วน `epsilon` เปอร์เซ็นต์ และในที่เหลือจะเลือกการกระทำแบบสุ่ม ซึ่งจะช่วยให้เราสำรวจส่วนของพื้นที่ค้นหาที่ไม่เคยเห็นมาก่อน - ✅ ในแง่ของการทรงตัว - การเลือกการกระทำแบบสุ่ม (การสำรวจ) จะทำหน้าที่เป็นการผลักแบบสุ่มในทิศทางที่ผิด และเสาจะต้องเรียนรู้วิธีการฟื้นฟูสมดุลจาก "ข้อผิดพลาด" เหล่านั้น + ✅ ในแง่การรักษาสมดุล — การเลือกการกระทำแบบสุ่ม (การสำรวจ) จะทำเหมือนการถูกชกผิดทาง และเสาจะต้องเรียนรู้ฟื้นฟูสมดุลจาก “ความผิดพลาด” เหล่านั้น ### ปรับปรุงอัลกอริทึม -เรายังสามารถปรับปรุงอัลกอริทึมของเราจากบทเรียนก่อน: - -- **คำนวณรางวัลสะสมเฉลี่ย** ในการจำลองจำนวนหนึ่ง เราจะพิมพ์ความคืบหน้าทุกๆ 5000 รอบ และเราจะเฉลี่ยรางวัลสะสมในช่วงเวลานั้น หมายความว่าหากเราได้คะแนนมากกว่า 195 เราสามารถถือว่าปัญหาได้รับการแก้ไขแล้ว ด้วยคุณภาพที่สูงกว่าที่กำหนด +เรายังสามารถทำการปรับปรุงสองอย่างกับอัลกอริทึมนี้จากบทเรียนก่อนหน้าได้: -- **คำนวณผลลัพธ์สะสมเฉลี่ยสูงสุด** `Qmax` และเราจะเก็บ Q-Table ที่สอดคล้องกับผลลัพธ์นั้น เมื่อคุณรันการฝึก คุณจะสังเกตเห็นว่าบางครั้งผลลัพธ์สะสมเฉลี่ยเริ่มลดลง และเราต้องการเก็บค่าของ Q-Table ที่สอดคล้องกับโมเดลที่ดีที่สุดที่สังเกตได้ระหว่างการฝึก +- **คำนวณรางวัลสะสมเฉลี่ย** ในจำนวนจำลองหลายรอบ เราจะพิมพ์ความก้าวหน้าทุก 5000 รอบ และเฉลี่ยรางวัลสะสมในช่วงเวลานั้น ซึ่งถ้าเราได้มากกว่า 195 แต้ม เราสามารถถือว่าปัญหาได้รับการแก้ไขแล้วด้วยคุณภาพที่สูงกว่าที่กำหนด + +- **คำนวณค่ารางวัลสะสมเฉลี่ยสูงสุด**, `Qmax` และเราจะเก็บ Q-Table ที่สอดคล้องกับผลลัพธ์นั้น เมื่อรันการฝึกฝนคุณจะเห็นว่าบางครั้งค่ารางวัลสะสมเฉลี่ยเริ่มลดลง เราจึงต้องเก็บค่าของ Q-Table ที่สอดคล้องกับโมเดลดีที่สุดในระหว่างการฝึก -1. เก็บรางวัลสะสมทั้งหมดในแต่ละการจำลองไว้ในเวกเตอร์ `rewards` เพื่อการพล็อตในภายหลัง (code block 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 รอบที่จำเป็นในเกณฑ์อย่างเป็นทางการ +สิ่งที่คุณอาจสังเกตจากผลลัพธ์เหล่านี้: -- **รางวัลเริ่มลดลง** บางครั้งรางวัลเริ่มลดลง ซึ่งหมายความว่าเราอาจ "ทำลาย" ค่าที่เรียนรู้แล้วใน Q-Table ด้วยค่าที่ทำให้สถานการณ์แย่ลง +- **ใกล้เป้าหมาย** เราใกล้จะทำตามเป้าหมายได้รางวัลสะสม 195 ใน 100 รอบติดต่อกัน หรือเราอาจทำได้จริงแล้ว! แม้จะได้น้อยกว่านิดหน่อย เราก็ยังไม่รู้แน่เพราะเราหาค่าเฉลี่ยจาก 5000 รอบ แต่เกณฑ์ทางการกำหนดแค่ 100 รอบ + +- **รางวัลเริ่มลดลง** บางครั้งรางวัลสะสมเริ่มลดลง ซึ่งหมายความว่าเราสามารถ “ทำลาย” ค่าที่เรียนรู้แล้วใน Q-Table ด้วยค่าที่ทำให้สถานการณ์แย่ลง -การสังเกตนี้จะเห็นได้ชัดเจนขึ้นหากเราพล็อตความคืบหน้าการฝึก +การสังเกตนี้จะชัดเจนมากขึ้นถ้าเราวาดกราฟความก้าวหน้าการฝึก -## การพล็อตความคืบหน้าการฝึก +## วาดกราฟความก้าวหน้าการฝึก -ระหว่างการฝึก เราได้เก็บค่ารางวัลสะสมในแต่ละรอบไว้ในเวกเตอร์ `rewards` นี่คือสิ่งที่มันดูเหมือนเมื่อเราพล็อตมันกับหมายเลขรอบ: +ระหว่างการฝึก เราเก็บค่ารางวัลสะสมในแต่ละรอบไว้ในเวกเตอร์ `rewards` นี่คือรูปลักษณ์เมื่อเราวาดกราฟเทียบกับจำนวนรอบ: ```python plt.plot(rewards) ``` -![raw progress](../../../../8-Reinforcement/2-Gym/images/train_progress_raw.png) +![ความก้าวหน้าแบบดิบ](../../../../translated_images/th/train_progress_raw.2adfdf2daea09c59.webp) -จากกราฟนี้ ไม่สามารถบอกอะไรได้ เพราะลักษณะของกระบวนการฝึกแบบสุ่มทำให้ความยาวของเซสชันการฝึกแตกต่างกันมาก เพื่อให้กราฟนี้มีความหมายมากขึ้น เราสามารถคำนวณ **ค่าเฉลี่ยเคลื่อนที่** ในการทดลองชุดหนึ่ง เช่น 100 สิ่งนี้สามารถทำได้อย่างสะดวกโดยใช้ `np.convolve`: (code block 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)) ``` -![training progress](../../../../8-Reinforcement/2-Gym/images/train_progress_runav.png) +![ความก้าวหน้าการฝึก](../../../../translated_images/th/train_progress_runav.c71694a8fa9ab359.webp) + +## การเปลี่ยนค่าไฮเปอร์พารามิเตอร์ + +เพื่อให้การเรียนรู้เสถียรขึ้น ฉลาดที่จะปรับพารามิเตอร์ไฮเปอร์บางตัวระหว่างการฝึก โดยเฉพาะ: + +- **สำหรับอัตราเรียนรู้** `alpha` เราอาจเริ่มต้นด้วยค่าที่ใกล้ 1 และค่อยลดค่าพารามิเตอร์นี้ ในระยะยาว เราจะได้ค่าความน่าจะเป็นที่ดีใน Q-Table ดังนั้นควรปรับเล็กน้อย ไม่ใช่เขียนทับแบบเต็ม -## การปรับพารามิเตอร์ไฮเปอร์ +- **เพิ่มค่า epsilon** เราอาจอยากเพิ่ม `epsilon` อย่างช้า ๆ เพื่อสำรวจน้อยลงและใช้ประโยชน์มากขึ้น มันน่าจะสมเหตุสมผลเริ่มด้วยค่าต่ำของ `epsilon` และเพิ่มขึ้นจนเกือบ 1 -เพื่อให้การเรียนรู้มีเสถียรภาพมากขึ้น มีเหตุผลที่จะปรับพารามิเตอร์ไฮเปอร์บางตัวระหว่างการฝึก โดยเฉพาะ: +> **งานที่ 1**: ทดลองเล่นกับค่าพารามิเตอร์ไฮเปอร์และดูว่าสามารถได้รางวัลสะสมสูงขึ้นไหม คุณได้มากกว่า 195 หรือเปล่า? -- **สำหรับ learning rate** `alpha` เราอาจเริ่มต้นด้วยค่าที่ใกล้เคียงกับ 1 และจากนั้นลดค่าพารามิเตอร์ลงเรื่อยๆ เมื่อเวลาผ่านไป เราจะได้รับค่าความน่าจะเป็นที่ดีใน Q-Table และดังนั้นเราควรปรับค่าพวกนั้นเล็กน้อย และไม่เขียนทับด้วยค่าที่ใหม่ทั้งหมด -- **เพิ่ม epsilon** เราอาจต้องการเพิ่ม `epsilon` อย่างช้าๆ เพื่อสำรวจน้อยลงและใช้ประโยชน์มากขึ้น อาจมีเหตุผลที่จะเริ่มต้นด้วยค่าที่ต่ำของ `epsilon` และเพิ่มขึ้นจนเกือบถึง 1 -> **งานที่ 1**: ลองปรับค่าพารามิเตอร์ต่าง ๆ และดูว่าคุณสามารถทำให้ผลตอบแทนรวมสูงขึ้นได้หรือไม่ คุณได้คะแนนเกิน 195 หรือยัง? -> **งานที่ 2**: เพื่อแก้ปัญหาอย่างเป็นทางการ คุณจำเป็นต้องได้ค่าเฉลี่ยรางวัล 195 ในการทดลอง 100 ครั้งติดต่อกัน วัดผลระหว่างการฝึกและตรวจสอบให้แน่ใจว่าคุณได้แก้ปัญหาอย่างเป็นทางการแล้ว! +> **งานที่ 2**: เพื่อแก้ปัญหาอย่างเป็นทางการ คุณต้องได้รางวัลเฉลี่ย 195 จากการเล่นต่อเนื่อง 100 ครั้ง วัดสิ่งนั้นระหว่างการฝึกและตรวจสอบให้แน่ใจว่าคุณได้แก้ปัญหาอย่างเป็นทางการแล้ว! -## ดูผลลัพธ์ในทางปฏิบัติ +## การดูผลลัพธ์ในการทำงานจริง -มันน่าสนใจที่จะเห็นว่ารูปแบบที่ฝึกมาแล้วทำงานอย่างไร ลองรันการจำลองและใช้กลยุทธ์การเลือกการกระทำแบบเดียวกับที่ใช้ระหว่างการฝึก โดยสุ่มตามการแจกแจงความน่าจะเป็นใน Q-Table: (code block 13) +จะน่าสนใจถ้าเราได้เห็นพฤติกรรมของโมเดลที่ได้รับการฝึกจริงๆ ลองรันจำลองและทำตามกลยุทธ์การเลือกการกระทำเดียวกับที่ใช้ระหว่างการฝึก คือการสุ่มตามการแจกแจงความน่าจะเป็นใน Q-Table: (บล็อกโค้ด 13) ```python obs = env.reset() @@ -295,30 +318,32 @@ while not done: env.close() ``` -คุณควรเห็นบางสิ่งที่คล้ายกับนี้: +คุณควรจะเห็นอะไรประมาณนี้: -![a balancing cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) +![รถเข็นบาลานซ์](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) --- ## 🚀ความท้าทาย -> **งานที่ 3**: ในที่นี้ เราใช้สำเนาสุดท้ายของ Q-Table ซึ่งอาจไม่ใช่ตัวที่ดีที่สุด อย่าลืมว่าเราได้บันทึก Q-Table ที่มีประสิทธิภาพดีที่สุดไว้ในตัวแปร `Qbest`! ลองใช้ตัวอย่างเดียวกันกับ Q-Table ที่มีประสิทธิภาพดีที่สุดโดยคัดลอก `Qbest` ไปยัง `Q` และดูว่าคุณสังเกตเห็นความแตกต่างหรือไม่ +> **งานที่ 3**: ที่นี่ เราใช้สำเนาสุดท้ายของ Q-Table ซึ่งอาจจะไม่ใช่ตัวที่ดีที่สุด จำไว้ว่าพวกเราเก็บ Q-Table ที่ทำงานดีที่สุดไว้ในตัวแปร `Qbest`! ลองทำตัวอย่างเดียวกันกับ Q-Table ที่ทำงานดีที่สุดโดยคัดลอก `Qbest` ไปทับ `Q` และดูว่าคุณสังเกตเห็นความแตกต่างไหม -> **งานที่ 4**: ในที่นี้ เราไม่ได้เลือกการกระทำที่ดีที่สุดในแต่ละขั้นตอน แต่สุ่มตามการแจกแจงความน่าจะเป็นที่เกี่ยวข้อง จะสมเหตุสมผลกว่าหรือไม่ถ้าเลือกการกระทำที่ดีที่สุดเสมอ ซึ่งมีค่าที่สูงที่สุดใน Q-Table? สิ่งนี้สามารถทำได้โดยใช้ฟังก์ชัน `np.argmax` เพื่อค้นหาหมายเลขการกระทำที่สอดคล้องกับค่าที่สูงที่สุดใน Q-Table ลองใช้กลยุทธ์นี้และดูว่ามันช่วยปรับปรุงการทรงตัวหรือไม่ +> **งานที่ 4**: ที่นี่เราไม่ได้เลือกการกระทำที่ดีที่สุดในแต่ละก้าว แต่สุ่มตามการแจกแจงความน่าจะเป็นที่ตรงกัน จะสมเหตุสมผลไหมถ้าเราเลือกการกระทำที่ดีที่สุดเสมอ โดยเลือกค่าที่สูงที่สุดใน Q-Table? เราสามารถทำได้โดยใช้ฟังก์ชัน `np.argmax` เพื่อหาหมายเลขการกระทำที่ตรงกับค่าที่สูงที่สุดใน Q-Table นำกลยุทธ์นี้ไปใช้และดูว่ามันช่วยปรับปรุงการบาลานซ์ไหม ## [แบบทดสอบหลังการบรรยาย](https://ff-quizzes.netlify.app/en/ml/) -## งานที่ได้รับมอบหมาย -[ฝึก Mountain Car](assignment.md) +## การบ้าน +[ฝึกสอน Mountain Car](assignment.md) ## สรุป -ตอนนี้เราได้เรียนรู้วิธีการฝึกตัวแทนเพื่อให้ได้ผลลัพธ์ที่ดีเพียงแค่ให้ฟังก์ชันรางวัลที่กำหนดสถานะที่ต้องการของเกม และให้โอกาสพวกเขาสำรวจพื้นที่ค้นหาอย่างชาญฉลาด เราได้ใช้ Q-Learning algorithm สำเร็จในกรณีของสภาพแวดล้อมแบบไม่ต่อเนื่องและต่อเนื่อง แต่มีการกระทำแบบไม่ต่อเนื่อง +ตอนนี้เราได้เรียนรู้วิธีฝึกตัวแทนให้ได้ผลลัพธ์ที่ดีเพียงแค่ให้ฟังก์ชันรางวัลซึ่งกำหนดสถานะที่ต้องการในเกม และให้โอกาสตัวแทนสำรวจช่องค้นหาอย่างชาญฉลาด เราประสบความสำเร็จในการใช้วิธี Q-Learning ในกรณีของสภาพแวดล้อมที่เป็นแบบไม่ต่อเนื่องและต่อเนื่อง แต่มีการกระทำที่เป็นแบบไม่ต่อเนื่อง -สิ่งสำคัญคือต้องศึกษาสถานการณ์ที่สถานะการกระทำเป็นแบบต่อเนื่อง และเมื่อพื้นที่การสังเกตมีความซับซ้อนมากขึ้น เช่น ภาพจากหน้าจอเกม Atari ในปัญหาเหล่านี้เรามักต้องใช้เทคนิคการเรียนรู้ของเครื่องที่ทรงพลังมากขึ้น เช่น neural networks เพื่อให้ได้ผลลัพธ์ที่ดี หัวข้อที่ก้าวหน้ากว่านี้จะเป็นเนื้อหาในหลักสูตร 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/th/9-Real-World/2-Debugging-ML-Models/README.md b/translations/th/9-Real-World/2-Debugging-ML-Models/README.md index 1ffbb839f..9929c54ce 100644 --- a/translations/th/9-Real-World/2-Debugging-ML-Models/README.md +++ b/translations/th/9-Real-World/2-Debugging-ML-Models/README.md @@ -1,153 +1,179 @@ -# ภาคผนวก: การดีบักโมเดลใน Machine Learning ด้วยส่วนประกอบของ Responsible AI Dashboard - -## [แบบทดสอบก่อนการบรรยาย](https://ff-quizzes.netlify.app/en/ml/) +# บทส่งท้าย: การดีบักแบบจำลองในการเรียนรู้ของเครื่องโดยใช้ส่วนประกอบแดชบอร์ด Responsible AI + +## [แบบทดสอบก่อนบรรยาย](https://ff-quizzes.netlify.app/en/ml/) + ## บทนำ -Machine learning มีผลกระทบต่อชีวิตประจำวันของเรา AI กำลังเข้ามามีบทบาทในระบบที่สำคัญที่สุดที่ส่งผลต่อเราในฐานะบุคคลและสังคม เช่น ด้านสุขภาพ การเงิน การศึกษา และการจ้างงาน ตัวอย่างเช่น ระบบและโมเดลถูกนำมาใช้ในงานตัดสินใจประจำวัน เช่น การวินิจฉัยโรคหรือการตรวจจับการฉ้อโกง ด้วยเหตุนี้ ความก้าวหน้าของ AI พร้อมกับการนำไปใช้ที่รวดเร็วขึ้นจึงถูกตอบสนองด้วยความคาดหวังของสังคมที่เปลี่ยนแปลงไปและกฎระเบียบที่เพิ่มขึ้น เรามักเห็นกรณีที่ระบบ AI ไม่สามารถตอบสนองความคาดหวังได้ เปิดเผยความท้าทายใหม่ ๆ และรัฐบาลเริ่มควบคุมโซลูชัน AI ดังนั้นจึงเป็นสิ่งสำคัญที่ต้องวิเคราะห์โมเดลเหล่านี้เพื่อให้ได้ผลลัพธ์ที่ยุติธรรม เชื่อถือได้ ครอบคลุม โปร่งใส และมีความรับผิดชอบสำหรับทุกคน +การเรียนรู้ของเครื่องมีผลกระทบต่อชีวิตประจำวันของเรา AI กำลังเข้าสู่ระบบสำคัญที่ส่งผลกระทบต่อเราในฐานะบุคคลและสังคมของเรา เช่น ด้านการดูแลสุขภาพ การเงิน การศึกษา และการจ้างงาน ตัวอย่างเช่น ระบบและแบบจำลองมีส่วนร่วมในงานการตัดสินใจประจำวัน เช่น การวินิจฉัยสุขภาพหรือการตรวจจับการทุจริต ดังนั้น ความก้าวหน้าใน AI พร้อมกับการนำไปใช้ที่เร่งขึ้นกำลังเผชิญกับความคาดหวังของสังคมที่พัฒนาไปและกฎระเบียบที่เพิ่มมากขึ้น เรามักเห็นพื้นที่ที่ระบบ AI ยังคงไม่ตรงตามความคาดหวัง เผยให้เห็นความท้าทายใหม่ และรัฐบาลเริ่มที่จะควบคุมโซลูชัน AI ดังนั้นจึงเป็นสิ่งสำคัญที่แบบจำลองเหล่านี้จะต้องได้รับการวิเคราะห์เพื่อให้ผลลัพธ์ที่ยุติธรรม เชื่อถือได้ มีความรวมเป็นหนึ่งเดียว โปร่งใส และสามารถรับผิดชอบได้สำหรับทุกคน -ในหลักสูตรนี้ เราจะศึกษาวิธีการและเครื่องมือที่สามารถใช้ในการประเมินว่าโมเดลมีปัญหาเกี่ยวกับ Responsible AI หรือไม่ เทคนิคการดีบักโมเดลแบบดั้งเดิมมักอิงกับการคำนวณเชิงปริมาณ เช่น ความแม่นยำรวม หรือค่าเฉลี่ยของการสูญเสียข้อผิดพลาด ลองจินตนาการถึงสิ่งที่อาจเกิดขึ้นเมื่อข้อมูลที่คุณใช้สร้างโมเดลเหล่านี้ขาดกลุ่มประชากรบางประเภท เช่น เชื้อชาติ เพศ มุมมองทางการเมือง ศาสนา หรือมีการแสดงกลุ่มประชากรเหล่านี้อย่างไม่สมดุล หรือเมื่อผลลัพธ์ของโมเดลถูกตีความว่าให้ความสำคัญกับกลุ่มประชากรบางกลุ่ม สิ่งนี้อาจนำไปสู่การแสดงผลที่มากเกินไปหรือน้อยเกินไปของกลุ่มคุณลักษณะที่ละเอียดอ่อน ส่งผลให้เกิดปัญหาด้านความยุติธรรม ความครอบคลุม หรือความน่าเชื่อถือจากโมเดล อีกปัจจัยหนึ่งคือ โมเดล Machine Learning มักถูกมองว่าเป็นกล่องดำ ซึ่งทำให้ยากต่อการเข้าใจและอธิบายว่าอะไรเป็นตัวขับเคลื่อนการคาดการณ์ของโมเดล ทั้งหมดนี้เป็นความท้าทายที่นักวิทยาศาสตร์ข้อมูลและนักพัฒนา AI เผชิญเมื่อไม่มีเครื่องมือที่เพียงพอในการดีบักและประเมินความยุติธรรมหรือความน่าเชื่อถือของโมเดล +ในหลักสูตรนี้ เราจะดูเครื่องมือที่ใช้ได้จริงที่สามารถใช้ประเมินว่าแบบจำลองมีปัญหาเกี่ยวกับ Responsible AI หรือไม่ เทคนิคการดีบักแบบจำลองการเรียนรู้ของเครื่องแบบดั้งเดิมมักจะอาศัยการคำนวณเชิงปริมาณ เช่น ความถูกต้องรวม หรือค่าเฉลี่ยของการสูญเสียข้อผิดพลาด ลองนึกภาพว่าจะเกิดอะไรขึ้นเมื่อข้อมูลที่คุณใช้สร้างแบบจำลองเหล่านี้ขาดกลุ่มประชากรบางประเภท เช่น เชื้อชาติ เพศ มุมมองทางการเมือง ศาสนา หรือมีการเป็นตัวแทนอย่างไม่สมดุลของกลุ่มประชากรดังกล่าว แล้วถ้าผลลัพธ์ของแบบจำลองถูกตีความในทางที่สนับสนุนกลุ่มประชากรบางกลุ่มล่ะ? สิ่งนี้อาจก่อให้เกิดการเป็นตัวแทนเกินหรือขาดในกลุ่มลักษณะอ่อนไหวเหล่านี้ ส่งผลให้เกิดปัญหาเรื่องความยุติธรรม ความรวมเป็นหนึ่งเดียว หรือความน่าเชื่อถือจากแบบจำลอง อีกปัจจัยหนึ่งคือ แบบจำลองการเรียนรู้ของเครื่องถือเป็นกล่องดำ ซึ่งทำให้ยากที่จะเข้าใจและอธิบายว่าอะไรเป็นแรงขับเคลื่อนการพยากรณ์ของแบบจำลอง ทั้งหมดนี้เป็นความท้าทายที่นักวิทยาศาสตร์ข้อมูลและนักพัฒนา AI เผชิญเมื่อไม่มีเครื่องมือที่เหมาะสมในการดีบักและประเมินความยุติธรรมหรือความน่าเชื่อถือของแบบจำลอง -ในบทเรียนนี้ คุณจะได้เรียนรู้เกี่ยวกับการดีบักโมเดลของคุณโดยใช้: +ในบทเรียนนี้ คุณจะได้เรียนรู้เกี่ยวกับการดีบักแบบจำลองของคุณโดยใช้: -- **Error Analysis**: ระบุว่าบริเวณใดในการกระจายข้อมูลที่โมเดลมีอัตราความผิดพลาดสูง -- **Model Overview**: วิเคราะห์เปรียบเทียบระหว่างกลุ่มข้อมูลต่าง ๆ เพื่อค้นหาความแตกต่างในเมตริกประสิทธิภาพของโมเดล -- **Data Analysis**: ตรวจสอบว่ามีการแสดงข้อมูลมากเกินไปหรือน้อยเกินไปที่อาจทำให้โมเดลของคุณเอนเอียงไปยังกลุ่มประชากรหนึ่งมากกว่ากลุ่มอื่น -- **Feature Importance**: เข้าใจว่าคุณลักษณะใดเป็นตัวขับเคลื่อนการคาดการณ์ของโมเดลในระดับโลกหรือระดับเฉพาะกรณี +- **การวิเคราะห์ข้อผิดพลาด**: ระบุว่าภายในการแจกแจงข้อมูลของคุณ ส่วนใดที่แบบจำลองมีอัตราข้อผิดพลาดสูง +- **ภาพรวมแบบจำลอง**: ทำการวิเคราะห์เปรียบเทียบในกลุ่มข้อมูลต่างๆ เพื่อค้นหาความแตกต่างในเมตริกประสิทธิภาพของแบบจำลองของคุณ +- **การวิเคราะห์ข้อมูล**: ตรวจสอบบริเวณที่มีการเป็นตัวแทนเกินหรือขาดในข้อมูลของคุณที่อาจทำให้แบบจำลองมีความโน้มเอียงไปสนับสนุนกลุ่มประชากรรายใดรายหนึ่ง +- **ความสำคัญของฟีเจอร์**: เข้าใจว่าฟีเจอร์ใดผลักดันการทำนายของแบบจำลองในระดับทั่วโลกหรือละเอียดท้องถิ่น -## ความต้องการเบื้องต้น +## ความรู้พื้นฐานที่ต้องมี -ก่อนเริ่มต้น โปรดทบทวน [เครื่องมือ Responsible AI สำหรับนักพัฒนา](https://www.microsoft.com/ai/ai-lab-responsible-ai-dashboard) +เป็นความรู้พื้นฐาน กรุณารีวิว [เครื่องมือ Responsible AI สำหรับนักพัฒนา](https://www.microsoft.com/ai/ai-lab-responsible-ai-dashboard) -> ![Gif เกี่ยวกับเครื่องมือ Responsible AI](../../../../9-Real-World/2-Debugging-ML-Models/images/rai-overview.gif) +> ![Gif on Responsible AI Tools](../../../../9-Real-World/2-Debugging-ML-Models/images/rai-overview.gif) -## การวิเคราะห์ข้อผิดพลาด (Error Analysis) +## การวิเคราะห์ข้อผิดพลาด -เมตริกประสิทธิภาพของโมเดลแบบดั้งเดิมที่ใช้วัดความแม่นยำมักเป็นการคำนวณที่อิงกับการคาดการณ์ที่ถูกต้องและผิดพลาด ตัวอย่างเช่น การพิจารณาว่าโมเดลมีความแม่นยำ 89% และมีการสูญเสียข้อผิดพลาด 0.001 อาจถือว่าเป็นประสิทธิภาพที่ดี อย่างไรก็ตาม ข้อผิดพลาดมักไม่ได้กระจายอย่างสม่ำเสมอในชุดข้อมูลพื้นฐาน คุณอาจได้คะแนนความแม่นยำของโมเดล 89% แต่พบว่ามีบางส่วนของข้อมูลที่โมเดลล้มเหลวถึง 42% ผลกระทบของรูปแบบความล้มเหลวเหล่านี้ในกลุ่มข้อมูลบางกลุ่มอาจนำไปสู่ปัญหาด้านความยุติธรรมหรือความน่าเชื่อถือ การเข้าใจพื้นที่ที่โมเดลทำงานได้ดีหรือไม่ดีจึงเป็นสิ่งสำคัญ บริเวณข้อมูลที่มีความไม่ถูกต้องสูงในโมเดลของคุณอาจกลายเป็นกลุ่มประชากรข้อมูลที่สำคัญ +เมตริกประสิทธิภาพแบบจำลองแบบดั้งเดิมที่ใช้ในการวัดความถูกต้องมักเป็นการคำนวณตามการทำนายถูกหรือผิดเป็นหลัก ยกตัวอย่างเช่น การกำหนดว่าแบบจำลองมีความแม่นยำ 89% พร้อมกับการสูญเสียข้อผิดพลาด 0.001 ถือว่าเป็นผลการทำงานที่ดี ข้อผิดพลาดมักไม่กระจายอย่างเท่าเทียมกันในชุดข้อมูลพื้นฐานของคุณ คุณอาจได้คะแนนความแม่นยำของแบบจำลอง 89% แต่พบว่ามีบางพื้นที่ข้อมูลที่แบบจำลองทำงานผิดพลาด 42% ของเวลา ผลลัพธ์จากรูปแบบความล้มเหลวในกลุ่มข้อมูลบางกลุ่มอาจนำไปสู่ปัญหาความยุติธรรมหรือความน่าเชื่อถือ จึงเป็นสิ่งสำคัญที่จะเข้าใจพื้นที่ที่แบบจำลองทำงานได้ดีหรือล้มเหลว พื้นที่ข้อมูลที่มีจำนวนข้อผิดพลาดสูงในแบบจำลองของคุณอาจกลายเป็นกลุ่มประชากรข้อมูลที่สำคัญ -![วิเคราะห์และดีบักข้อผิดพลาดของโมเดล](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-error-distribution.png) +![วิเคราะห์และดีบักข้อผิดพลาดของแบบจำลอง](../../../../translated_images/th/ea-error-distribution.117452e1177c1dd8.webp) -ส่วนประกอบ Error Analysis บน RAI Dashboard แสดงให้เห็นว่าความล้มเหลวของโมเดลกระจายอยู่ในกลุ่มต่าง ๆ อย่างไรผ่านการแสดงผลแบบต้นไม้ สิ่งนี้มีประโยชน์ในการระบุคุณลักษณะหรือพื้นที่ที่มีอัตราความผิดพลาดสูงในชุดข้อมูลของคุณ โดยการดูว่าความไม่ถูกต้องของโมเดลส่วนใหญ่มาจากที่ใด คุณสามารถเริ่มต้นการตรวจสอบสาเหตุที่แท้จริงได้ คุณยังสามารถสร้างกลุ่มข้อมูลเพื่อทำการวิเคราะห์ได้ กลุ่มข้อมูลเหล่านี้ช่วยในกระบวนการดีบักเพื่อพิจารณาว่าทำไมประสิทธิภาพของโมเดลจึงดีในกลุ่มหนึ่ง แต่ผิดพลาดในอีกกลุ่มหนึ่ง +ส่วนประกอบการวิเคราะห์ข้อผิดพลาดบนแดชบอร์ด RAI แสดงให้เห็นว่าความล้มเหลวของแบบจำลองกระจายอยู่ในกลุ่มย่อยอย่างไรผ่านการแสดงผลแบบต้นไม้ (tree visualization) ซึ่งมีประโยชน์ในการระบุฟีเจอร์หรือพื้นที่ที่มีอัตราข้อผิดพลาดสูงในชุดข้อมูลของคุณ ด้วยการเห็นว่าเกิดข้อผิดพลาดส่วนใหญ่ของแบบจำลองมาจากที่ใด คุณสามารถเริ่มต้นตรวจสอบหาสาเหตุรากฐานได้ นอกจากนี้ยังสามารถสร้างกลุ่มย่อยข้อมูลเพื่อทำการวิเคราะห์ด้วย กลุ่มย่อยข้อมูลเหล่านี้ช่วยในกระบวนการดีบัก เพื่อค้นหาว่าทำไมแบบจำลองถึงทำงานได้ดีในกลุ่มหนึ่ง แต่ล้มเหลวในอีกกลุ่มหนึ่ง -![Error Analysis](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-error-cohort.png) +![การวิเคราะห์ข้อผิดพลาด](../../../../translated_images/th/ea-error-cohort.6886209ea5d438c4.webp) -ตัวบ่งชี้ภาพบนแผนที่ต้นไม้ช่วยให้ค้นหาพื้นที่ปัญหาได้เร็วขึ้น ตัวอย่างเช่น โหนดต้นไม้ที่มีสีแดงเข้มแสดงถึงอัตราความผิดพลาดที่สูงขึ้น +ตัวชี้วัดเชิงภาพบนแผนที่ต้นไม้ช่วยให้หาแหล่งปัญหาได้รวดเร็วขึ้น ตัวอย่างเช่น โหนดบนต้นไม้ที่มีเฉดสีแดงเข้มกว่าจะมีอัตราข้อผิดพลาดสูงขึ้น -Heat map เป็นอีกหนึ่งฟังก์ชันการแสดงผลที่ผู้ใช้สามารถใช้ในการตรวจสอบอัตราความผิดพลาดโดยใช้หนึ่งหรือสองคุณลักษณะเพื่อค้นหาปัจจัยที่ส่งผลต่อข้อผิดพลาดของโมเดลในชุดข้อมูลทั้งหมดหรือกลุ่มข้อมูล +แผนที่ความร้อนเป็นฟังก์ชันการแสดงผลอีกอย่างหนึ่งที่ผู้ใช้สามารถใช้ตรวจสอบอัตราข้อผิดพลาดโดยใช้หนึ่งหรือสองฟีเจอร์เพื่อค้นหาสาเหตุที่ทำให้เกิดข้อผิดพลาดของแบบจำลองทั่วชุดข้อมูลหรือกลุ่มย่อย -![Error Analysis Heatmap](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-heatmap.png) +![แผนที่ความร้อนของการวิเคราะห์ข้อผิดพลาด](../../../../translated_images/th/ea-heatmap.8d27185e28cee383.webp) ใช้การวิเคราะห์ข้อผิดพลาดเมื่อคุณต้องการ: -* เข้าใจอย่างลึกซึ้งว่าความล้มเหลวของโมเดลกระจายอยู่ในชุดข้อมูลและมิติของคุณลักษณะต่าง ๆ อย่างไร -* แยกเมตริกประสิทธิภาพรวมเพื่อค้นพบกลุ่มข้อมูลที่มีข้อผิดพลาดโดยอัตโนมัติเพื่อแจ้งขั้นตอนการแก้ไขเป้าหมายของคุณ +* เข้าใจอย่างลึกซึ้งว่าความล้มเหลวของแบบจำลองกระจายตัวในชุดข้อมูลและมิติต่างๆ ของฟีเจอร์อย่างไร +* แยกเมตริกการทำงานรวมเพื่อค้นหากลุ่มข้อมูลที่ผิดพลาดโดยอัตโนมัติเพื่อวางแผนมาตรการแก้ไขเป้าหมาย + +## ภาพรวมแบบจำลอง -## ภาพรวมของโมเดล (Model Overview) +การประเมินประสิทธิภาพของแบบจำลองการเรียนรู้ของเครื่องต้องการความเข้าใจแบบองค์รวมเกี่ยวกับพฤติกรรมของมัน ซึ่งทำได้โดยการทบทวนมากกว่าหนึ่งเมตริก เช่น อัตราข้อผิดพลาด ความถูกต้อง Recall Precision หรือ MAE (ค่าเฉลี่ยของความผิดพลาดสัมบูรณ์) เพื่อค้นหาความแตกต่างในเมตริกประสิทธิภาพ เมตริกบางตัวอาจดูดี แต่ความผิดพลาดอาจถูกเปิดเผยในเมตริกอื่น นอกจากนี้ การเปรียบเทียบเมตริกที่แตกต่างกันในชุดข้อมูลทั้งหมดหรือกลุ่มย่อยช่วยส่องให้เห็นว่ารูปแบบทำงานได้ดีหรือล้มเหลวตรงจุดใด สิ่งนี้สำคัญอย่างยิ่งในการดูประสิทธิภาพของแบบจำลองในฟีเจอร์ที่ละเอียดอ่อน (เช่น เชื้อชาติ เพศ หรืออายุของผู้ป่วย) เพื่อเปิดเผยความไม่ยุติธรรมที่อาจเกิดขึ้น ตัวอย่างเช่น การพบว่าแบบจำลองผิดพลาดมากในกลุ่มข้อมูลที่มีฟีเจอร์ละเอียดอ่อนสามารถเปิดเผยความไม่ยุติธรรมที่แบบจำลองอาจมีได้ -การประเมินประสิทธิภาพของโมเดล Machine Learning ต้องการความเข้าใจที่ครอบคลุมเกี่ยวกับพฤติกรรมของมัน สิ่งนี้สามารถทำได้โดยการตรวจสอบเมตริกมากกว่าหนึ่งตัว เช่น อัตราความผิดพลาด ความแม่นยำ การเรียกคืน ความแม่นยำ หรือ MAE (Mean Absolute Error) เพื่อค้นหาความแตกต่างระหว่างเมตริกประสิทธิภาพ เมตริกประสิทธิภาพหนึ่งอาจดูดี แต่ความไม่ถูกต้องอาจถูกเปิดเผยในเมตริกอื่น นอกจากนี้ การเปรียบเทียบเมตริกเพื่อค้นหาความแตกต่างในชุดข้อมูลทั้งหมดหรือกลุ่มข้อมูลช่วยให้เห็นว่าโมเดลทำงานได้ดีหรือไม่ดีในพื้นที่ใด สิ่งนี้มีความสำคัญอย่างยิ่งในการดูประสิทธิภาพของโมเดลในคุณลักษณะที่ละเอียดอ่อนเทียบกับคุณลักษณะที่ไม่ละเอียดอ่อน (เช่น เชื้อชาติ เพศ หรืออายุของผู้ป่วย) เพื่อเปิดเผยความไม่ยุติธรรมที่โมเดลอาจมี ตัวอย่างเช่น การค้นพบว่าโมเดลมีข้อผิดพลาดมากกว่าในกลุ่มที่มีคุณลักษณะละเอียดอ่อนสามารถเปิดเผยความไม่ยุติธรรมที่โมเดลอาจมี +ส่วนประกอบภาพรวมแบบจำลองบนแดชบอร์ด RAI ช่วยไม่เพียงแต่ในการวิเคราะห์เมตริกประสิทธิภาพของข้อมูลในกลุ่มย่อยเท่านั้น แต่ยังให้ผู้ใช้เปรียบเทียบพฤติกรรมของแบบจำลองในกลุ่มย่อยที่แตกต่างกันได้ด้วย -ส่วนประกอบ Model Overview บน RAI Dashboard ช่วยไม่เพียงแต่ในการวิเคราะห์เมตริกประสิทธิภาพของการแสดงข้อมูลในกลุ่ม แต่ยังให้ความสามารถแก่ผู้ใช้ในการเปรียบเทียบพฤติกรรมของโมเดลในกลุ่มต่าง ๆ +![กลุ่มข้อมูล - ภาพรวมแบบจำลองในแดชบอร์ด RAI](../../../../translated_images/th/model-overview-dataset-cohorts.dfa463fb527a35a0.webp) -![กลุ่มข้อมูล - ภาพรวมโมเดลใน RAI Dashboard](../../../../9-Real-World/2-Debugging-ML-Models/images/model-overview-dataset-cohorts.png) +ฟังก์ชันวิเคราะห์แบบฟีเจอร์ของส่วนประกอบนี้ช่วยให้ผู้ใช้สามารถเจาะลึกกลุ่มข้อมูลย่อยในฟีเจอร์เฉพาะเพื่อระบุความผิดปกติในระดับรายละเอียด ตัวอย่างเช่น แดชบอร์ดมีระบบอัจฉริยะในตัวที่สร้างกลุ่มย่อยโดยอัตโนมัติสำหรับฟีเจอร์ที่ผู้ใช้เลือก (เช่น "*time_in_hospital < 3*" หรือ "*time_in_hospital >= 7*") นี้ช่วยให้ผู้ใช้แยกฟีเจอร์เฉพาะออกจากกลุ่มข้อมูลใหญ่เพื่อดูว่าฟีเจอร์นี้มีอิทธิพลสำคัญต่อผลลัพธ์ผิดพลาดของแบบจำลองหรือไม่ -ฟังก์ชันการวิเคราะห์ตามคุณลักษณะของส่วนประกอบช่วยให้ผู้ใช้สามารถเจาะลึกกลุ่มข้อมูลย่อยภายในคุณลักษณะเฉพาะเพื่อระบุความผิดปกติในระดับละเอียด ตัวอย่างเช่น Dashboard มีความฉลาดในตัวเพื่อสร้างกลุ่มข้อมูลโดยอัตโนมัติสำหรับคุณลักษณะที่ผู้ใช้เลือก (เช่น *"time_in_hospital < 3"* หรือ *"time_in_hospital >= 7"*) สิ่งนี้ช่วยให้ผู้ใช้สามารถแยกคุณลักษณะเฉพาะออกจากกลุ่มข้อมูลขนาดใหญ่เพื่อดูว่ามันเป็นตัวขับเคลื่อนสำคัญของผลลัพธ์ที่ผิดพลาดของโมเดลหรือไม่ +![กลุ่มฟีเจอร์ - ภาพรวมแบบจำลองในแดชบอร์ด RAI](../../../../translated_images/th/model-overview-feature-cohorts.c5104d575ffd0c80.webp) -![กลุ่มคุณลักษณะ - ภาพรวมโมเดลใน RAI Dashboard](../../../../9-Real-World/2-Debugging-ML-Models/images/model-overview-feature-cohorts.png) +ส่วนประกอบภาพรวมแบบจำลองรองรับเมตริกความแตกต่างสองประเภท: -ส่วนประกอบ Model Overview รองรับเมตริกความแตกต่างสองประเภท: +**ความแตกต่างในประสิทธิภาพของแบบจำลอง**: ชุดเมตริกเหล่านี้คำนวณความแตกต่าง (difference) ในค่าของเมตริกประสิทธิภาพที่เลือกในกลุ่มย่อยของข้อมูล ตัวอย่างบางส่วนมีดังนี้: -**ความแตกต่างในประสิทธิภาพของโมเดล**: เมตริกเหล่านี้คำนวณความแตกต่าง (difference) ในค่าของเมตริกประสิทธิภาพที่เลือกในกลุ่มข้อมูลย่อย ตัวอย่างเช่น: +* ความแตกต่างในอัตราความถูกต้อง +* ความแตกต่างในอัตราข้อผิดพลาด +* ความแตกต่างใน Precision +* ความแตกต่างใน Recall +* ความแตกต่างในค่าเฉลี่ยความผิดพลาดสัมบูรณ์ (MAE) -* ความแตกต่างในอัตราความแม่นยำ -* ความแตกต่างในอัตราความผิดพลาด -* ความแตกต่างในความแม่นยำ -* ความแตกต่างในการเรียกคืน -* ความแตกต่างในค่า MAE (Mean Absolute Error) +**ความแตกต่างในอัตราการเลือก**: เมตริกนี้คือความแตกต่างในอัตราการเลือก (การทำนายที่เป็นผลลัพธ์ในเชิงบวก) ในกลุ่มย่อย ตัวอย่างเช่น ความแตกต่างในอัตราการอนุมัติสินเชื่อ อัตราการเลือกคือสัดส่วนของจุดข้อมูลในแต่ละคลาสที่จัดประเภทเป็น 1 (ในกรณีการจำแนกแบบไบนารี) หรือการแจกแจงของค่าการทำนายในกรณีการถดถอย -**ความแตกต่างในอัตราการเลือก**: เมตริกนี้แสดงความแตกต่างในอัตราการเลือก (การคาดการณ์ที่เป็นผลดี) ในกลุ่มข้อมูลย่อย ตัวอย่างเช่น ความแตกต่างในอัตราการอนุมัติสินเชื่อ อัตราการเลือกหมายถึงเศษส่วนของจุดข้อมูลในแต่ละคลาสที่ถูกจัดประเภทเป็น 1 (ในการจัดประเภทแบบไบนารี) หรือการกระจายค่าการคาดการณ์ (ในการถดถอย) +## การวิเคราะห์ข้อมูล -## การวิเคราะห์ข้อมูล (Data Analysis) +> "ถ้าคุณทรมานข้อมูลนานพอ ข้อมูลยอมรับสารภาพได้ทุกอย่าง" - Ronald Coase -> "ถ้าคุณทรมานข้อมูลนานพอ มันจะสารภาพทุกอย่าง" - Ronald Coase +ประโยคนี้ฟังดูรุนแรง แต่ก็เป็นเรื่องจริงที่ข้อมูลสามารถถูกจัดการเพื่อสนับสนุนข้อสรุปใดก็ได้ การจัดการเช่นนี้บางครั้งเกิดขึ้นโดยไม่ตั้งใจ ในฐานะมนุษย์ เราทุกคนมีอคติ และมักเป็นเรื่องยากที่จะรู้ตัวว่าเมื่อใดที่คุณกำลังนำอคติเข้าสู่ข้อมูล การรับประกันความยุติธรรมใน AI และการเรียนรู้ของเครื่องยังคงเป็นความท้าทายที่ซับซ้อน -คำกล่าวนี้อาจฟังดูรุนแรง แต่เป็นความจริงที่ว่าข้อมูลสามารถถูกจัดการเพื่อสนับสนุนข้อสรุปใด ๆ การจัดการดังกล่าวบางครั้งอาจเกิดขึ้นโดยไม่ตั้งใจ ในฐานะมนุษย์ เราทุกคนมีอคติ และมักยากที่จะรู้ตัวเมื่อเราแนะนำอคติในข้อมูล การรับประกันความยุติธรรมใน AI และ Machine Learning ยังคงเป็นความท้าทายที่ซับซ้อน +ข้อมูลเป็นจุดบอดที่ใหญ่มากสำหรับเมตริกประสิทธิภาพแบบจำลองแบบดั้งเดิม คุณอาจได้คะแนนความแม่นยำสูง แต่ไม่แน่ว่าจะสะท้อนอคติที่มีอยู่ในชุดข้อมูลของคุณหรือไม่ ตัวอย่างเช่น ถ้าชุดข้อมูลของพนักงานประกอบด้วยผู้หญิง 27% ในตำแหน่งบริหารของบริษัท และผู้ชาย 73% ในตำแหน่งเดียวกัน แบบจำลอง AI ที่ฝึกจากข้อมูลนี้อาจมุ่งเป้าไปที่กลุ่มชายเป็นส่วนใหญ่สำหรับตำแหน่งงานระดับสูง การมีความไม่สมดุลนี้ในข้อมูลทำให้แบบจำลองมีแนวโน้มทำนายที่สนับสนุนเพศหนึ่งมากกว่าอีกเพศหนึ่ง เปิดเผยปัญหาความยุติธรรมที่มีอคติเกี่ยวกับเพศในแบบจำลอง AI -ข้อมูลเป็นจุดบอดขนาดใหญ่สำหรับเมตริกประสิทธิภาพของโมเดลแบบดั้งเดิม คุณอาจมีคะแนนความแม่นยำสูง แต่สิ่งนี้ไม่ได้สะท้อนถึงอคติในข้อมูลพื้นฐานที่อาจอยู่ในชุดข้อมูลของคุณ ตัวอย่างเช่น หากชุดข้อมูลของพนักงานมีผู้หญิง 27% ในตำแหน่งผู้บริหารในบริษัท และผู้ชาย 73% ในระดับเดียวกัน โมเดล AI ที่โฆษณางานซึ่งถูกฝึกด้วยข้อมูลนี้อาจมุ่งเป้าหมายไปยังผู้ชายเป็นส่วนใหญ่สำหรับตำแหน่งงานระดับสูง การมีความไม่สมดุลในข้อมูลนี้ทำให้การคาดการณ์ของโมเดลเอนเอียงไปยังเพศหนึ่งมากกว่าอีกเพศหนึ่ง สิ่งนี้เผยให้เห็นปัญหาความยุติธรรมที่มีอคติทางเพศในโมเดล AI +ส่วนประกอบการวิเคราะห์ข้อมูลบนแดชบอร์ด RAI ช่วยระบุพื้นที่ที่มีการเป็นตัวแทนเกินหรือต่ำกว่าที่ควรในชุดข้อมูล ช่วยให้ผู้ใช้วินิจฉัยสาเหตุหลักของข้อผิดพลาดและปัญหาความยุติธรรมที่เกิดจากความไม่สมดุลของข้อมูลหรือการขาดตัวแทนในกลุ่มข้อมูลหนึ่งๆ ซึ่งช่วยให้ผู้ใช้สามารถแสดงภาพชุดข้อมูลตามผลลัพธ์ที่คาดการณ์และจริง กลุ่มข้อผิดพลาด และฟีเจอร์เฉพาะบางอย่าง บางครั้งการค้นพบกลุ่มข้อมูลที่เป็นตัวแทนน้อยเกินไปยังช่วยเปิดเผยว่าแบบจำลองไม่ได้เรียนรู้ดีนัก จึงมีข้อผิดพลาดสูง การที่แบบจำลองมีอคติข้อมูลไม่ใช่แค่ปัญหาความยุติธรรมเท่านั้น แต่แสดงว่าแบบจำลองไม่ครอบคลุมและไม่น่าเชื่อถือ -ส่วนประกอบ Data Analysis บน RAI Dashboard ช่วยระบุพื้นที่ที่มีการแสดงข้อมูลมากเกินไปหรือน้อยเกินไปในชุดข้อมูล มันช่วยให้ผู้ใช้วินิจฉัยสาเหตุของข้อผิดพลาดและปัญหาความยุติธรรมที่เกิดจากความไม่สมดุลของข้อมูลหรือการขาดการแสดงผลของกลุ่มข้อมูลเฉพาะ สิ่งนี้ช่วยให้ผู้ใช้สามารถแสดงภาพชุดข้อมูลตามผลลัพธ์ที่คาดการณ์และผลลัพธ์จริง กลุ่มข้อผิดพลาด และคุณลักษณะเฉพาะ บางครั้งการค้นพบกลุ่มข้อมูลที่มีการแสดงผลน้อยเกินไปยังสามารถเปิดเผยว่าโมเดลไม่ได้เรียนรู้ได้ดี ส่งผลให้เกิดความไม่ถูกต้องสูง การมีโมเดลที่มีอคติในข้อมูลไม่เพียงแต่เป็นปัญหาความยุติธรรม แต่ยังแสดงว่าโมเดลไม่ครอบคลุมหรือเชื่อถือได้ +![ส่วนประกอบการวิเคราะห์ข้อมูลบนแดชบอร์ด RAI](../../../../translated_images/th/dataanalysis-cover.8d6d0683a70a5c1e.webp) -![ส่วนประกอบ Data Analysis บน RAI Dashboard](../../../../9-Real-World/2-Debugging-ML-Models/images/dataanalysis-cover.png) ใช้การวิเคราะห์ข้อมูลเมื่อคุณต้องการ: -* สำรวจสถิติของชุดข้อมูลของคุณโดยเลือกตัวกรองต่าง ๆ เพื่อแบ่งข้อมูลของคุณออกเป็นมิติที่แตกต่างกัน (หรือที่เรียกว่ากลุ่มข้อมูล) -* เข้าใจการกระจายของชุดข้อมูลของคุณในกลุ่มข้อมูลและกลุ่มคุณลักษณะต่าง ๆ -* พิจารณาว่าการค้นพบของคุณที่เกี่ยวข้องกับความยุติธรรม การวิเคราะห์ข้อผิดพลาด และความเป็นเหตุเป็นผล (ที่ได้จากส่วนประกอบอื่น ๆ ของ Dashboard) เป็นผลมาจากการกระจายของชุดข้อมูลของคุณหรือไม่ -* ตัดสินใจว่าจะรวบรวมข้อมูลเพิ่มเติมในพื้นที่ใดเพื่อแก้ไขข้อผิดพลาดที่เกิดจากปัญหาการแสดงผล การรบกวนของป้ายกำกับ การรบกวนของคุณลักษณะ อคติของป้ายกำกับ และปัจจัยที่คล้ายกัน +* สำรวจสถิติชุดข้อมูลของคุณโดยการเลือกตัวกรองต่างๆ เพื่อแยกข้อมูลออกเป็นมิติต่างๆ (ซึ่งเรียกว่ากลุ่มย่อย) +* เข้าใจการแจกแจงของชุดข้อมูลในกลุ่มย่อยและกลุ่มฟีเจอร์ต่างๆ +* ตัดสินใจว่าข้อค้นพบเกี่ยวกับความยุติธรรม การวิเคราะห์ข้อผิดพลาด และความสัมพันธ์เชิงสาเหตุ (ที่ได้จากส่วนประกอบแดชบอร์ดอื่น ๆ) เกิดจากการแจกแจงของชุดข้อมูลหรือไม่ +* ตัดสินใจว่าจะเก็บข้อมูลเพิ่มเติมในส่วนใดเพื่อแก้ไขข้อผิดพลาดที่เกิดจากปัญหาการเป็นตัวแทน เสียงรบกวนฉลาก ข้อมูลฟีเจอร์ เสียงรบกวนฉลากอคติ และปัจจัยคล้ายกัน -## การตีความโมเดล (Model Interpretability) +## ความสามารถในการตีความแบบจำลอง -โมเดล Machine Learning มักถูกมองว่าเป็นกล่องดำ การเข้าใจว่าคุณลักษณะข้อมูลสำคัญใดเป็นตัวขับเคลื่อนการคาดการณ์ของโมเดลอาจเป็นเรื่องท้าทาย สิ่งสำคัญคือต้องให้ความโปร่งใสว่าเหตุใดโมเดลจึงทำการคาดการณ์บางอย่าง ตัวอย่างเช่น หากระบบ AI คาดการณ์ว่าผู้ป่วยเบาหวานมีความเสี่ยงที่จะกลับเข้ารักษาในโรงพยาบาลภายใน 30 วัน ควรสามารถให้ข้อมูลสนับสนุนที่นำไปสู่การคาดการณ์นั้นได้ การมีตัวบ่งชี้ข้อมูลสนับสนุนช่วยให้เกิดความโปร่งใสเพื่อช่วยให้แพทย์หรือโรงพยาบาลสามารถตัดสินใจได้อย่างมีข้อมูล นอกจากนี้ การสามารถอธิบายว่าเหตุใดโมเดลจึงทำการคาดการณ์สำหรับผู้ป่วยรายบุคคลช่วยให้เกิดความรับผิดชอบต่อกฎระเบียบด้านสุขภาพ เมื่อคุณใช้โมเดล Machine Learning ในวิธีที่ส่งผลต่อชีวิตของผู้คน การเข้าใจและอธิบายว่าอะไรเป็นตัวขับเคลื่อนพฤติกรรมของโมเดลจึงเป็นสิ่งสำคัญ การอธิบายและตีความโมเดลช่วยตอบคำถามในสถานการณ์ เช่น: +แบบจำลองการเรียนรู้ของเครื่องมักเป็นกล่องดำ การเข้าใจว่าฟีเจอร์ข้อมูลสำคัญใดเป็นตัวขับเคลื่อนการทำนายของแบบจำลองนั้นเป็นเรื่องท้าทาย จึงสำคัญที่ต้องมีความโปร่งใสว่าทำไมแบบจำลองจึงทำการทำนายเช่นนั้น ตัวอย่างเช่น หากระบบ AI ทำนายว่าผู้ป่วยเบาหวานมีความเสี่ยงที่จะถูกนำกลับเข้าโรงพยาบาลภายในเวลาไม่ถึง 30 วัน ควรสามารถให้ข้อมูลสนับสนุนที่นำไปสู่การทำนายนี้ได้ การมีตัวบ่งชี้ข้อมูลสนับสนุนช่วยสร้างความโปร่งใส เพื่อช่วยให้แพทย์หรือโรงพยาบาลสามารถตัดสินใจได้อย่างมีข้อมูล นอกจากนี้ การสามารถอธิบายว่าทำไมแบบจำลองจึงทำการทำนายสำหรับผู้ป่วยแต่ละรายช่วยให้สามารถรับผิดชอบตามข้อกำหนดด้านสุขภาพ เมื่อใช้แบบจำลองการเรียนรู้ของเครื่องในวิธีที่ส่งผลกระทบต่อชีวิตคน จึงเป็นเรื่องสำคัญที่จะต้องเข้าใจและอธิบายว่าสิ่งใดมีอิทธิพลต่อพฤติกรรมของแบบจำลอง ความสามารถในการอธิบายและตีความแบบจำลองช่วยตอบคำถามในสถานการณ์ต่างๆ เช่น: -* การดีบักโมเดล: ทำไมโมเดลของฉันถึงทำผิดพลาด? ฉันจะปรับปรุงโมเดลของฉันได้อย่างไร? -* การทำงานร่วมกันระหว่างมนุษย์และ AI: ฉันจะเข้าใจและเชื่อมั่นในการตัดสินใจของโมเดลได้อย่างไร? -* การปฏิบัติตามกฎระเบียบ: โมเดลของฉันเป็นไปตามข้อกำหนดทางกฎหมายหรือไม่? +* การดีบักแบบจำลอง: ทำไมแบบจำลองของฉันถึงทำผิดพลาดนี้? ฉันจะแก้ไขแบบจำลองอย่างไร? +* การทำงานร่วมกันระหว่างมนุษย์และ AI: ฉันจะเข้าใจและเชื่อใจการตัดสินใจของแบบจำลองได้อย่างไร? +* การปฏิบัติตามข้อกำหนด: แบบจำลองของฉันเป็นไปตามข้อกฎหมายหรือไม่? -ส่วนประกอบ Feature Importance บน RAI Dashboard ช่วยให้คุณดีบักและเข้าใจอย่างครอบคลุมว่าโมเดลทำการคาดการณ์อย่างไร นอกจากนี้ยังเป็นเครื่องมือที่มีประโยชน์สำหรับมืออาชีพด้าน Machine Learning และผู้ตัดสินใจในการอธิบายและแสดงหลักฐานของคุณลักษณะที่มีอิทธิพลต่อพฤติกรรมของโมเดลเพื่อการปฏิบัติตามกฎระเบียบ ผู้ใช้สามารถสำรวจคำอธิบายทั้งในระดับโลกและระดับเฉพาะกรณีเพื่อยืนยันว่าคุณลักษณะใดเป็นตัวขับเคลื่อนการคาดการณ์ของโมเดล คำอธิบายระดับโลกแสดงรายการคุณลักษณะสำคัญที่ส่งผลต่อการคาดการณ์โดยรวมของโมเดล คำอธิบายระดับเฉพาะกรณีแสดงว่าคุณลักษณะใดนำไปสู่การคาดการณ์ของโมเดลสำหรับกรณีเฉพาะ ความสามารถในการประเมินคำอธิบายระดับเฉพาะกรณีมีประโยชน์ในการดีบักหรือการตรวจสอบกรณีเฉพาะเพื่อเข้าใจและตีความว่าเหตุใดโมเดลจึงทำการคาดการณ์ที่ถูกต้องหรือผิดพลาด +ส่วนประกอบความสำคัญของฟีเจอร์บนแดชบอร์ด RAI ช่วยให้คุณดีบักและเข้าใจอย่างครอบคลุมว่าแบบจำลองทำการทำนายอย่างไร นอกจากนี้ยังเป็นเครื่องมือที่มีประโยชน์สำหรับผู้เชี่ยวชาญด้านการเรียนรู้ของเครื่องและผู้ตัดสินใจเพื่ออธิบายและแสดงหลักฐานของฟีเจอร์ที่มีอิทธิพลต่อพฤติกรรมของแบบจำลองเพื่อการปฏิบัติตามข้อกำหนด ผู้ใช้สามารถสำรวจคำอธิบายแบบทั่วโลกและแบบท้องถิ่นเพื่อยืนยันว่าฟีเจอร์ใดผลักดันการทำนายของแบบจำลอง คำอธิบายแบบทั่วโลกจะแสดงฟีเจอร์สำคัญอันดับต้นๆ ที่มีผลต่อการทำนายโดยรวมของแบบจำลอง ในขณะที่คำอธิบายแบบท้องถิ่นจะแสดงฟีเจอร์ที่นำไปสู่การทำนายของแบบจำลองสำหรับกรณีเฉพาะ ความสามารถนี้ช่วยในการดีบักหรือตรวจสอบกรณีเฉพาะเพื่อเข้าใจและตีความว่าทำไมแบบจำลองถึงทำการทำนายถูกหรือผิดแม่นยำ -![ส่วนประกอบ Feature Importance บน RAI Dashboard](../../../../9-Real-World/2-Debugging-ML-Models/images/9-feature-importance.png) +![ส่วนประกอบความสำคัญของฟีเจอร์บนแดชบอร์ด RAI](../../../../translated_images/th/9-feature-importance.cd3193b4bba3fd4b.webp) -* คำอธิบายระดับโลก: ตัวอย่างเช่น คุณลักษณะใดส่งผลต่อพฤติกรรมโดยรวมของโมเดลการกลับเข้ารักษาในโรงพยาบาลของผู้ป่วยเบาหวาน? -* คำอ -- **การแสดงผลที่มากเกินไปหรือน้อยเกินไป** แนวคิดคือกลุ่มคนบางกลุ่มไม่ได้รับการมองเห็นในอาชีพบางประเภท และบริการหรือฟังก์ชันใด ๆ ที่ยังคงส่งเสริมสิ่งนี้ถือเป็นการสร้างความเสียหาย +* คำอธิบายแบบทั่วโลก: ตัวอย่างเช่น ฟีเจอร์ใดมีผลต่อพฤติกรรมโดยรวมของแบบจำลองการนำผู้ป่วยเบาหวานกลับเข้าโรงพยาบาล? +* คำอธิบายแบบท้องถิ่น: ตัวอย่างเช่น ทำไมผู้ป่วยเบาหวานที่มีอายุมากกว่า 60 ปีที่เคยเข้ารักษาตัวมาก่อน จึงถูกทำนายว่าจะถูกนำกลับเข้าโรงพยาบาลหรืแไม่ภายใน 30 วัน? -### Azure RAI dashboard +ในกระบวนการดีบักการพิจารณาผลการทำงานของแบบจำลองในกลุ่มย่อยต่างๆ Feature Importance แสดงระดับผลกระทบของฟีเจอร์ในกลุ่มย่อยนั้น ช่วยเปิดเผยความผิดปกติเมื่อเปรียบเทียบระดับอิทธิพลของฟีเจอร์ที่ผลักดันข้อผิดพลาดของแบบจำลอง ส่วนประกอบนี้แสดงให้เห็นว่า ค่าฟีเจอร์ใดบ้างที่มีอิทธิพลทั้งในแง่บวกและลบต่อผลลัพธ์ของแบบจำลอง ตัวอย่างเช่น หากแบบจำลองทำการทำนายผิดพลาด ส่วนประกอบนี้ให้คุณเจาะลึกและระบุว่าฟีเจอร์ใดหรือค่าฟีเจอร์ใดเป็นสาเหตุของการทำนายนั้น รายละเอียดในระดับนี้ไม่เพียงแต่ช่วยในการดีบัก แต่ยังสร้างความโปร่งใสและความรับผิดชอบในสถานการณ์การตรวจสอบด้วย สุดท้าย ส่วนประกอบนี้ยังช่วยให้คุณระบุปัญหาความยุติธรรม เช่น หากฟีเจอร์ละเอียดอ่อนอย่างเชื้อชาติหรือเพศมีอิทธิพลสูงในการผลักดันการทำนายของแบบจำลอง อาจเป็นสัญญาณว่ามีอคติเรื่องเชื้อชาติหรือเพศในแบบจำลอง -[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 +![ความสำคัญของฟีเจอร์](../../../../translated_images/th/9-features-influence.3ead3d3f68a84029.webp) -- เรียนรู้วิธีการใช้ส่วนประกอบต่าง ๆ โดยดูเอกสารของ 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 +* กำหนดความน่าเชื่อถือของการทำนายของระบบ 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 + +- เรียนรู้วิธีใช้ส่วนประกอบต่าง ๆ ได้โดยการตรวจสอบเอกสารแดชบอร์ด 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 + +--- +## 🚀 ความท้าทาย + +เพื่อป้องกันไม่ให้มีอคติทางสถิติหรือข้อมูลเกิดขึ้นตั้งแต่แรก เราควร: -## [แบบทดสอบหลังการบรรยาย](https://ff-quizzes.netlify.app/en/ml/) -## ทบทวนและศึกษาด้วยตนเอง +- มีความหลากหลายในพื้นฐานและมุมมองของคนที่ทำงานกับระบบ +- ลงทุนในชุดข้อมูลที่สะท้อนความหลากหลายของสังคมของเรา +- พัฒนาวิธีการที่ดีกว่าในการตรวจจับและแก้ไขอคติเมื่อเกิดขึ้น -ในบทเรียนนี้ คุณได้เรียนรู้เครื่องมือที่ใช้งานได้จริงบางส่วนในการนำ AI ที่มีความรับผิดชอบมารวมเข้ากับการเรียนรู้ของเครื่อง +คิดถึงสถานการณ์ในชีวิตจริงที่ความไม่เป็นธรรมชัดเจนในการสร้างและใช้งานโมเดล เราควรพิจารณาอะไรเพิ่มเติมอีก? -ดูเวิร์กช็อปนี้เพื่อเจาะลึกในหัวข้อเพิ่มเติม: +## [แบบทดสอบหลังบรรยาย](https://ff-quizzes.netlify.app/en/ml/) +## ทบทวน & ศึกษาด้วยตนเอง + +ในบทเรียนนี้ คุณได้เรียนรู้เครื่องมือที่ใช้ได้จริงบางส่วนในการบูรณาการ AI ที่รับผิดชอบในงานเรียนรู้ของเครื่อง -- Responsible AI Dashboard: ศูนย์รวมสำหรับการนำ RAI ไปใช้ในทางปฏิบัติ โดย Besmira Nushi และ Mehrnoosh Sameki +ชมเวิร์กช็อปนี้เพื่อเจาะลึกหัวข้อเพิ่มเติม: -[![Responsible AI Dashboard: ศูนย์รวมสำหรับการนำ RAI ไปใช้ในทางปฏิบัติ](https://img.youtube.com/vi/f1oaDNl3djg/0.jpg)](https://www.youtube.com/watch?v=f1oaDNl3djg "Responsible AI Dashboard: ศูนย์รวมสำหรับการนำ RAI ไปใช้ในทางปฏิบัติ") +- แดชบอร์ด Responsible AI: ศูนย์รวมสำหรับการปฏิบัติใช้งาน RAI โดย Besmira Nushi และ Mehrnoosh Sameki -> 🎥 คลิกที่ภาพด้านบนเพื่อดูวิดีโอ: Responsible AI Dashboard: ศูนย์รวมสำหรับการนำ RAI ไปใช้ในทางปฏิบัติ โดย Besmira Nushi และ Mehrnoosh Sameki +[![แดชบอร์ด Responsible AI: ศูนย์รวมสำหรับการปฏิบัติใช้งาน RAI](https://img.youtube.com/vi/f1oaDNl3djg/0.jpg)](https://www.youtube.com/watch?v=f1oaDNl3djg "แดชบอร์ด Responsible AI: ศูนย์รวมสำหรับการปฏิบัติใช้งาน RAI") -อ้างอิงเอกสารต่อไปนี้เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับ AI ที่มีความรับผิดชอบและวิธีสร้างโมเดลที่น่าเชื่อถือมากขึ้น: +> 🎥 คลิกภาพด้านบนเพื่อดูวิดีโอ: แดชบอร์ด Responsible AI: ศูนย์รวมสำหรับการปฏิบัติใช้งาน RAI โดย Besmira Nushi และ Mehrnoosh Sameki + +อ้างอิงเอกสารต่อไปนี้เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับ AI ที่รับผิดชอบและวิธีการสร้างโมเดลที่น่าเชื่อถือมากขึ้น: -- เครื่องมือ RAI dashboard ของ Microsoft สำหรับการแก้ไขข้อบกพร่องในโมเดล ML: [Responsible AI tools resources](https://aka.ms/rai-dashboard) +- เครื่องมือแดชบอร์ด RAI ของ Microsoft สำหรับดีบักโมเดล ML: [แหล่งข้อมูลเครื่องมือ Responsible AI](https://aka.ms/rai-dashboard) - สำรวจชุดเครื่องมือ Responsible AI: [Github](https://github.com/microsoft/responsible-ai-toolbox) -- ศูนย์ทรัพยากร RAI ของ Microsoft: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) +- ศูนย์ทรัพยากร RAI ของ Microsoft: [ทรัพยากร Responsible 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 dashboard](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/tl/.co-op-translator.json b/translations/tl/.co-op-translator.json index 203687e33..051e6ab03 100644 --- a/translations/tl/.co-op-translator.json +++ b/translations/tl/.co-op-translator.json @@ -24,8 +24,8 @@ "language_code": "tl" }, "1-Introduction/3-fairness/README.md": { - "original_hash": "9a6b702d1437c0467e3c5c28d763dac2", - "translation_date": "2025-09-05T18:17:24+00:00", + "original_hash": "0f00d72169a0d37eecfd16d71e01700a", + "translation_date": "2026-07-14T06:59:07+00:00", "source_file": "1-Introduction/3-fairness/README.md", "language_code": "tl" }, @@ -54,8 +54,8 @@ "language_code": "tl" }, "2-Regression/1-Tools/README.md": { - "original_hash": "fa81d226c71d5af7a2cade31c1c92b88", - "translation_date": "2025-09-05T18:11:11+00:00", + "original_hash": "0b8635427b582d03ea4ab7089b93e505", + "translation_date": "2026-07-14T06:53:52+00:00", "source_file": "2-Regression/1-Tools/README.md", "language_code": "tl" }, @@ -72,8 +72,8 @@ "language_code": "tl" }, "2-Regression/2-Data/README.md": { - "original_hash": "7c077988328ebfe33b24d07945f16eca", - "translation_date": "2025-09-05T18:11:53+00:00", + "original_hash": "a58b2c4d16c6b122643391745ac15af6", + "translation_date": "2026-07-14T06:55:11+00:00", "source_file": "2-Regression/2-Data/README.md", "language_code": "tl" }, @@ -89,6 +89,12 @@ "source_file": "2-Regression/2-Data/solution/Julia/README.md", "language_code": "tl" }, + "2-Regression/2-Data/solution/notebook.ipynb": { + "original_hash": "96b95f8cf473481f2f371de8156f1571", + "translation_date": "2026-07-14T06:28:57+00:00", + "source_file": "2-Regression/2-Data/solution/notebook.ipynb", + "language_code": "tl" + }, "2-Regression/3-Linear/README.md": { "original_hash": "8b776e731c35b171d316d01d0e7b1369", "translation_date": "2026-04-26T19:45:17+00:00", @@ -457,7 +463,7 @@ }, "8-Reinforcement/1-QLearning/README.md": { "original_hash": "911efd5e595089000cb3c16fce1beab8", - "translation_date": "2025-09-05T18:23:22+00:00", + "translation_date": "2026-07-14T06:56:36+00:00", "source_file": "8-Reinforcement/1-QLearning/README.md", "language_code": "tl" }, @@ -481,7 +487,7 @@ }, "8-Reinforcement/2-Gym/README.md": { "original_hash": "107d5bb29da8a562e7ae72262d251a75", - "translation_date": "2025-09-05T18:24:05+00:00", + "translation_date": "2026-07-14T06:57:55+00:00", "source_file": "8-Reinforcement/2-Gym/README.md", "language_code": "tl" }, @@ -581,6 +587,19 @@ "source_file": "TROUBLESHOOTING.md", "language_code": "tl" }, + "__translation_failures__": { + "sketchnotes/LICENSE.md": { + "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f", + "source_file": "sketchnotes/LICENSE.md", + "language_code": "tl", + "failure_date": "2026-07-14T06:52:47+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-08-29T13:28:47+00:00", diff --git a/translations/tl/1-Introduction/3-fairness/README.md b/translations/tl/1-Introduction/3-fairness/README.md index 1b16aa4bf..402236353 100644 --- a/translations/tl/1-Introduction/3-fairness/README.md +++ b/translations/tl/1-Introduction/3-fairness/README.md @@ -1,149 +1,167 @@ -# Paggawa ng Solusyon sa Machine Learning gamit ang Responsible AI - -![Buod ng Responsible AI sa Machine Learning sa isang sketchnote](../../../../sketchnotes/ml-fairness.png) +# Paggawa ng mga Solusyon sa Machine Learning gamit ang responsable na AI + +![Buod ng responsable na AI sa Machine Learning sa isang sketchnote](../../../../translated_images/tl/ml-fairness.ef296ebec6afc98a.webp) > Sketchnote ni [Tomomi Imura](https://www.twitter.com/girlie_mac) ## [Pre-lecture quiz](https://ff-quizzes.netlify.app/en/ml/) - + ## Panimula -Sa kurikulum na ito, sisimulan mong tuklasin kung paano nakakaapekto ang machine learning sa ating pang-araw-araw na buhay. Sa kasalukuyan, ang mga sistema at modelo ay ginagamit sa mga desisyon sa araw-araw tulad ng mga diagnosis sa pangangalaga ng kalusugan, pag-apruba ng pautang, o pagtuklas ng pandaraya. Kaya mahalaga na ang mga modelong ito ay gumana nang maayos upang magbigay ng mga resulta na mapagkakatiwalaan. Tulad ng anumang software application, ang mga sistema ng AI ay maaaring hindi umabot sa inaasahan o magdulot ng hindi kanais-nais na resulta. Kaya mahalaga na maunawaan at maipaliwanag ang pag-uugali ng isang AI model. +Sa kurikulm na ito, sisimulan mong tuklasin kung paano nakakaapekto ang machine learning sa ating pang-araw-araw na buhay. Kahit ngayon, ang mga sistema at modelo ay kasali sa mga gawain ng pang-araw-araw na paggawa ng desisyon, tulad ng mga diagnosis sa pangangalagang pangkalusugan, pag-apruba ng mga pautang o pagtukoy ng pandaraya. Kaya mahalaga na ang mga modelong ito ay gumana nang maayos upang makapagbigay ng mga resulta na mapagkakatiwalaan. Katulad ng anumang aplikasyon ng software, ang mga sistema ng AI ay maaaring hindi makamit ang mga inaasahan o magkaroon ng hindi kanais-nais na resulta. Kaya mahalaga na maunawaan at maipaliwanag ang pag-uugali ng isang AI na modelo. -Isipin kung ano ang maaaring mangyari kapag ang data na ginagamit mo upang bumuo ng mga modelong ito ay kulang sa ilang demograpiko tulad ng lahi, kasarian, pananaw sa politika, relihiyon, o hindi pantay na kinakatawan ang mga demograpikong ito. Paano kung ang output ng modelo ay pabor sa isang demograpiko? Ano ang magiging epekto nito sa aplikasyon? Bukod dito, ano ang mangyayari kapag ang modelo ay nagkaroon ng masamang resulta at nakapinsala sa mga tao? Sino ang may pananagutan sa pag-uugali ng mga sistema ng AI? Ito ang ilan sa mga tanong na ating susuriin sa kurikulum na ito. +Isipin kung ano ang maaaring mangyari kapag ang datos na ginagamit mo upang gumawa ng mga modelong ito ay kulang sa ilang demograpiko, tulad ng lahi, kasarian, pananaw pampolitika, relihiyon, o hindi pantay na kinakatawan ang mga demograpikong ito. Paano kung ang output ng modelo ay naipakahulugan upang paboran ang ilang demograpiko? Ano ang magiging epekto nito sa aplikasyon? Bukod dito, ano ang mangyayari kapag ang modelo ay nagkaroon ng masamang resulta at nakapipinsala sa mga tao? Sino ang may pananagutan sa pag-uugali ng mga sistema ng AI? Ito ang ilan sa mga tanong na tatalakayin natin sa kurikulm na ito. Sa araling ito, ikaw ay: -- Magkakaroon ng kamalayan sa kahalagahan ng pagiging patas sa machine learning at mga pinsalang kaugnay nito. -- Malalaman ang kahalagahan ng pagsusuri sa mga outliers at hindi pangkaraniwang sitwasyon upang matiyak ang pagiging maaasahan at kaligtasan. -- Mauunawaan ang pangangailangan na bigyang kapangyarihan ang lahat sa pamamagitan ng pagdidisenyo ng mga inklusibong sistema. -- Susuriin ang kahalagahan ng pagprotekta sa privacy at seguridad ng data at mga tao. -- Makikita ang kahalagahan ng "glass box" na diskarte upang maipaliwanag ang pag-uugali ng mga modelo ng AI. -- Magiging maingat sa kung paano mahalaga ang pananagutan upang makabuo ng tiwala sa mga sistema ng AI. +- Magpapataas ng iyong kamalayan sa kahalagahan ng katarungan sa machine learning at mga pinsalang may kaugnayan sa katarungan. +- Maging pamilyar sa pagsasanay ng pagsusuri sa mga outliers at mga hindi pangkaraniwang senaryo upang matiyak ang pagiging maaasahan at kaligtasan +- Makakakuha ng pag-unawa sa pangangailangan na bigyang kapangyarihan ang lahat sa pamamagitan ng pagdidisenyo ng mga inklusibong sistema +- Tuklasin kung gaano kahalaga ang protektahan ang privacy at seguridad ng datos at mga tao +- Makita ang kahalagahan ng pagkakaroon ng glass box na pamamaraan upang ipaliwanag ang pag-uugali ng mga AI na modelo +- Maging maingat kung paano mahalaga ang pananagutan upang makabuo ng tiwala sa mga sistema ng AI ## Paunang Kaalaman Bilang paunang kaalaman, mangyaring kunin ang "Responsible AI Principles" Learn Path at panoorin ang video sa ibaba tungkol sa paksa: -Matuto pa tungkol sa Responsible AI sa pamamagitan ng pagsunod sa [Learning Path](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) +Matuto pa tungkol sa Responsable na AI sa pamamagitan ng pagsunod sa [Learning Path](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) [![Microsoft's Approach to Responsible AI](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoft's Approach to Responsible AI") -> 🎥 I-click ang imahe sa itaas para sa video: Microsoft's Approach to Responsible AI +> 🎥 Pindutin ang larawan sa itaas para sa video: Microsoft's Approach to Responsible AI -## Pagiging Patas +## Katarungan -Ang mga sistema ng AI ay dapat tratuhin ang lahat nang patas at iwasan ang pag-apekto sa mga katulad na grupo ng tao sa iba't ibang paraan. Halimbawa, kapag ang mga sistema ng AI ay nagbibigay ng gabay sa paggamot sa medikal, aplikasyon ng pautang, o trabaho, dapat silang magbigay ng parehong rekomendasyon sa lahat ng may magkatulad na sintomas, kalagayan sa pananalapi, o kwalipikasyon sa propesyon. Bawat isa sa atin bilang tao ay may dalang likas na bias na nakakaapekto sa ating mga desisyon at aksyon. Ang mga bias na ito ay maaaring makita sa data na ginagamit natin upang sanayin ang mga sistema ng AI. Ang ganitong manipulasyon ay minsan nangyayari nang hindi sinasadya. Madalas mahirap malaman nang may kamalayan kung kailan ka nagdadala ng bias sa data. +Dapat tratuhin nang patas ng mga sistema ng AI ang lahat at iwasan ang pagapekto nang magkakaibang paraan sa mga magkakatulad na grupo ng mga tao. Halimbawa, kapag ang mga sistema ng AI ay nagbibigay ng gabay sa medikal na paggamot, aplikasyon ng pautang, o trabaho, dapat silang magbigay ng parehong rekomendasyon sa lahat na may magkakaparehong sintomas, kalagayan sa pananalapi, o kwalipikasyon sa propesyon. Bawat isa sa atin bilang tao ay may dala-dalang mga pinanggalingang pagkiling na nakakaapekto sa ating mga desisyon at kilos. Ang mga pagkiling na ito ay maaaring makikita sa datos na ginagamit natin upang sanayin ang mga sistema ng AI. Ang ganitong manipulasyon ay maaaring mangyari nang hindi sinasadya. Madalas mahirap malay-tao na malaman kung kailan ka nagdadagdag ng pagkiling sa datos. -Ang **“Kawalan ng Pagiging Patas”** ay sumasaklaw sa mga negatibong epekto, o “pinsala”, para sa isang grupo ng tao, tulad ng mga tinukoy batay sa lahi, kasarian, edad, o kalagayan ng kapansanan. Ang mga pangunahing pinsalang kaugnay ng pagiging patas ay maaaring uriin bilang: +**“Hindi patas”** ay sumasaklaw sa mga negatibong epekto, o "pinsala", para sa isang grupo ng mga tao, tulad ng mga tinutukoy ayon sa lahi, kasarian, edad, o katayuan sa kapansanan. Ang mga pangunahing pinsalang may kaugnayan sa katarungan ay maaaring iklase bilang: -- **Paglalaan**, kung ang isang kasarian o etnisidad ay pinapaboran kaysa sa iba. -- **Kalidad ng serbisyo**. Kung sinanay mo ang data para sa isang partikular na sitwasyon ngunit mas kumplikado ang realidad, nagdudulot ito ng mahinang serbisyo. Halimbawa, isang dispenser ng sabon na hindi makadetect ng mga taong may maitim na balat. [Sanggunian](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773) -- **Pagkakalait**. Hindi patas na pagbatikos o pag-label sa isang bagay o tao. Halimbawa, isang teknolohiya sa pag-label ng imahe na maling tinukoy ang mga imahe ng mga taong may maitim na balat bilang gorilya. -- **Sobra o kulang na representasyon**. Ang ideya na ang isang grupo ay hindi nakikita sa isang partikular na propesyon, at anumang serbisyo o function na patuloy na nagpo-promote nito ay nagdudulot ng pinsala. -- **Stereotyping**. Pag-uugnay ng isang grupo sa mga pre-assigned na katangian. Halimbawa, isang sistema ng pagsasalin ng wika sa pagitan ng Ingles at Turkish ay maaaring magkaroon ng mga kamalian dahil sa mga salitang may stereotypical na kaugnayan sa kasarian. +- **Alokasyon**, kung halimbawa ay pinapaboran ang isang kasarian o etnisidad kaysa sa iba. +- **Kalidad ng serbisyo**. Kapag sinanay mo ang datos para sa isang tiyak na senaryo subalit mas komplikado ang realidad, magreresulta ito sa mahina na serbisyo. Halimbawa, isang dispenser ng sabon sa kamay na hindi makita ang mga taong may maitim na balat. [Reference](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773) +- **Pang-iinsulto**. Hindi patas na pagsaway at paglalagay ng label sa isang bagay o tao. Halimbawa, ang teknolohiya sa pag-label ng imahe ay kilalang maling inilalagay ang label sa mga larawan ng mga taong may maitim na balat bilang mga gorilya. +- **Sobra o kulang na representasyon**. Ang ideya ay may isang grupo na hindi nakikita sa isang tiyak na propesyon, at anumang serbisyo o tungkuling nagpapatuloy sa ganito ay nagdudulot ng pinsala. +- **Stereotyping**. Pag-uugnay sa isang grupo ng mga pre-natukoy na mga katangian. Halimbawa, isang sistema ng pagsasalin ng wika sa pagitan ng Ingles at Turkish ay maaaring magkaroon ng mga kamalian dahil sa mga salita na may stereotypical na kaugnayan sa kasarian. -![pagsasalin sa Turkish](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) +![pagsasalin sa Turkish](../../../../translated_images/tl/gender-bias-translate-en-tr.f185fd8822c2d437.webp) > pagsasalin sa Turkish -![pagsasalin pabalik sa Ingles](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) +![pagsasalin pabalik sa Ingles](../../../../translated_images/tl/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) > pagsasalin pabalik sa Ingles -Kapag nagdidisenyo at sumusubok ng mga sistema ng AI, kailangan nating tiyakin na ang AI ay patas at hindi naka-program upang gumawa ng biased o diskriminatoryong desisyon, na ipinagbabawal din sa mga tao. Ang pagtiyak ng pagiging patas sa AI at machine learning ay nananatiling isang kumplikadong hamon sa teknolohiya at lipunan. +Kapag nagdidisenyo at sumusubok ng mga sistema ng AI, kailangan nating matiyak na ang AI ay patas at hindi naka-program upang gumawa ng mga pagkiling o mapanirang desisyon, na ipinagbabawal din sa mga tao. Ang pagtiyak ng katarungan sa AI at machine learning ay nananatiling isang kumplikadong sociotechnical na hamon. -### Pagiging Maaasahan at Kaligtasan +### Pagiging maaasahan at kaligtasan -Upang makabuo ng tiwala, ang mga sistema ng AI ay kailangang maging maaasahan, ligtas, at pare-pareho sa normal at hindi inaasahang mga kondisyon. Mahalagang malaman kung paano mag-uugali ang mga sistema ng AI sa iba't ibang sitwasyon, lalo na kapag may mga outliers. Kapag gumagawa ng mga solusyon sa AI, kailangang magbigay ng malaking pansin sa kung paano haharapin ang iba't ibang sitwasyon na maaaring maranasan ng mga solusyon sa AI. Halimbawa, ang isang self-driving car ay kailangang unahin ang kaligtasan ng mga tao. Bilang resulta, ang AI na nagpapatakbo ng kotse ay kailangang isaalang-alang ang lahat ng posibleng senaryo na maaaring maranasan ng kotse tulad ng gabi, bagyo, o snowstorm, mga bata na tumatakbo sa kalsada, mga alagang hayop, mga konstruksyon sa kalsada, at iba pa. Ang kakayahan ng isang sistema ng AI na maayos na makayanan ang malawak na hanay ng mga kondisyon ay sumasalamin sa antas ng anticipation na isinasaalang-alang ng data scientist o AI developer sa disenyo o pagsubok ng sistema. +Upang makabuo ng tiwala, ang mga sistema ng AI ay kailangang maging maaasahan, ligtas, at pare-pareho sa ilalim ng mga normal at hindi inaasahang mga kundisyon. Mahalaga na malaman kung paano kikilos ang mga sistema ng AI sa iba't ibang mga sitwasyon, lalo na kapag sila ay mga outliers. Kapag gumagawa ng mga solusyon sa AI, kailangan ng malaking pokus kung paano haharapin ang iba't ibang mga sitwasyon na maaaring maranasan ng mga solusyong ito. Halimbawa, ang isang self-driving na kotse ay kailangang unahin ang kaligtasan ng mga tao. Bilang resulta, ang AI na nagpapatakbo sa kotse ay kailangang isaalang-alang ang lahat ng posibleng senaryo na maaaring maranasan ng kotse tulad ng gabi, malalakas na bagyo o snowstorm, mga batang tumatakbo sa kalsada, mga alagang hayop, mga konstruksyon ng kalsada, atbp. Kung gaano kahusay ang kayang hawakan ng isang sistema ng AI sa malawak na hanay ng mga kundisyon nang maaasahan at ligtas ay nagpapakita ng antas ng pag-asang isinasaalang-alang ng data scientist o AI developer sa panahon ng disenyo o pagsubok ng sistema. -> [🎥 I-click dito para sa video: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl) +> [🎥 Pindutin dito para sa isang video: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl) ### Inklusibidad -Ang mga sistema ng AI ay dapat idisenyo upang makisali at magbigay kapangyarihan sa lahat. Kapag nagdidisenyo at nagpapatupad ng mga sistema ng AI, ang mga data scientist at AI developer ay tumutukoy at tinutugunan ang mga potensyal na hadlang sa sistema na maaaring hindi sinasadyang mag-exclude ng mga tao. Halimbawa, mayroong 1 bilyong tao na may kapansanan sa buong mundo. Sa pag-unlad ng AI, mas madali nilang ma-access ang malawak na hanay ng impormasyon at mga oportunidad sa kanilang pang-araw-araw na buhay. Sa pamamagitan ng pagtugon sa mga hadlang, nagkakaroon ng pagkakataon na mag-innovate at bumuo ng mga produkto ng AI na may mas mahusay na karanasan na kapaki-pakinabang para sa lahat. +Ang mga sistema ng AI ay dapat idisenyo upang makisali at bigyang kapangyarihan ang lahat. Kapag nagdidisenyo at nagpapatupad ng mga sistema ng AI, tinutukoy at tinutugunan ng mga data scientist at AI developer ang mga potensyal na hadlang sa sistema na maaaring hindi sinasadyang mag-iwan ng mga tao. Halimbawa, mayroong 1 bilyong tao na may kapansanan sa buong mundo. Sa pag-unlad ng AI, maaari nilang mas madaling ma-access ang malawak na saklaw ng impormasyon at mga oportunidad sa kanilang pang-araw-araw na buhay. Sa pamamagitan ng pagtugon sa mga hadlang, lumilikha ito ng mga oportunidad upang mag-imbento at bumuo ng mga produktong AI na may mas mahusay na karanasan na kapaki-pakinabang sa lahat. -> [🎥 I-click dito para sa video: inclusiveness in AI](https://www.microsoft.com/videoplayer/embed/RE4vl9v) +> [🎥 Pindutin dito para sa isang video: inklusibidad sa AI](https://www.microsoft.com/videoplayer/embed/RE4vl9v) -### Seguridad at Privacy +### Seguridad at privacy -Ang mga sistema ng AI ay dapat maging ligtas at igalang ang privacy ng mga tao. Ang mga tao ay mas kaunti ang tiwala sa mga sistema na naglalagay sa kanilang privacy, impormasyon, o buhay sa panganib. Kapag nagsasanay ng mga modelo ng machine learning, umaasa tayo sa data upang makabuo ng pinakamahusay na resulta. Sa paggawa nito, ang pinagmulan ng data at integridad nito ay dapat isaalang-alang. Halimbawa, ang data ba ay isinumite ng user o pampublikong magagamit? Susunod, habang nagtatrabaho sa data, mahalagang bumuo ng mga sistema ng AI na maaaring protektahan ang kumpidensyal na impormasyon at labanan ang mga pag-atake. Habang nagiging mas laganap ang AI, ang pagprotekta sa privacy at pag-secure ng mahalagang personal at impormasyon ng negosyo ay nagiging mas kritikal at kumplikado. Ang mga isyu sa privacy at seguridad ng data ay nangangailangan ng espesyal na pansin para sa AI dahil ang access sa data ay mahalaga para sa mga sistema ng AI upang makagawa ng tumpak at may kaalamang mga hula at desisyon tungkol sa mga tao. +Ang mga sistema ng AI ay dapat na ligtas at igalang ang privacy ng mga tao. Mas malaki ang kawalan ng tiwala ng mga tao sa mga sistema na inilalagay sa panganib ang kanilang privacy, impormasyon, o buhay. Kapag nagsasanay ng mga machine learning na modelo, umaasa tayo sa datos upang makagawa ng pinakamahuhusay na resulta. Sa paggawa nito, dapat isaalang-alang ang pinagmulan ng datos at integridad nito. Halimbawa, ang datos ba ay isinumite ng user o pampublikong available? Sunod, habang nagtatrabaho sa datos, mahalaga ang pagbuo ng mga sistema ng AI na makakaprotekta sa kumpidensyal na impormasyon at makatatagal sa mga pag-atake. Habang mas laganap ang AI, ang pagprotekta sa privacy at seguridad ng mahahalagang personal at pang-negosyong impormasyon ay nagiging mas kritikal at kumplikado. Ang mga isyu sa privacy at seguridad ng datos ay nangangailangan ng masusing pansin para sa AI dahil ang access sa datos ay mahalaga upang makagawa ang mga sistema ng AI ng tumpak at may batayan na mga prediksyon at desisyon tungkol sa mga tao. -> [🎥 I-click dito para sa video: security in AI](https://www.microsoft.com/videoplayer/embed/RE4voJF) +> [🎥 Pindutin dito para sa isang video: seguridad sa AI](https://www.microsoft.com/videoplayer/embed/RE4voJF) -- Bilang isang industriya, nakagawa tayo ng makabuluhang pag-unlad sa Privacy & Security, na pinasigla ng mga regulasyon tulad ng GDPR (General Data Protection Regulation). -- Gayunpaman, sa mga sistema ng AI, kailangan nating kilalanin ang tensyon sa pagitan ng pangangailangan para sa mas personal na data upang gawing mas personal at epektibo ang mga sistema – at privacy. -- Tulad ng sa pagsilang ng mga konektadong computer sa internet, nakikita rin natin ang malaking pagtaas sa bilang ng mga isyu sa seguridad na nauugnay sa AI. -- Kasabay nito, nakikita natin ang AI na ginagamit upang mapabuti ang seguridad. Halimbawa, karamihan sa mga modernong anti-virus scanner ay pinapagana ng AI heuristics ngayon. -- Kailangan nating tiyakin na ang ating mga proseso sa Data Science ay maayos na nakikiayon sa pinakabagong mga kasanayan sa privacy at seguridad. +- Bilang isang industriya nakagawa kami ng malalaking pag-unlad sa Privacy at seguridad, na lubos na pinatibay ng mga regulasyon tulad ng GDPR (General Data Protection Regulation). +- Ngunit sa mga sistema ng AI kailangan nating kilalanin ang tensyon sa pagitan ng pangangailangan para sa mas maraming personal na datos upang gawing mas personal at epektibo ang mga sistema – at ang privacy. +- Katulad ng pagsilang ng mga nakakonektang computer sa internet, nakikita rin natin ang malaking pagdami ng mga isyu sa seguridad na may kaugnayan sa AI. +- Kasabay nito, nakita natin ang paggamit ng AI upang mapabuti ang seguridad. Halimbawa, karamihan sa mga modernong anti-virus scanners ay pinapatakbo ng mga AI heuristics ngayon. +- Kailangan nating matiyak na ang ating mga proseso sa Data Science ay naghahalo nang mapayapa sa pinakabagong mga kasanayan sa privacy at seguridad. -### Transparency -Ang mga sistema ng AI ay dapat na naiintindihan. Isang mahalagang bahagi ng transparency ay ang pagpapaliwanag sa pag-uugali ng mga sistema ng AI at kanilang mga bahagi. Ang pagpapabuti ng pag-unawa sa mga sistema ng AI ay nangangailangan na maunawaan ng mga stakeholder kung paano at bakit gumagana ang mga ito upang matukoy ang mga potensyal na isyu sa pagganap, mga alalahanin sa kaligtasan at privacy, bias, mga eksklusibong kasanayan, o hindi inaasahang resulta. Naniniwala rin kami na ang mga gumagamit ng mga sistema ng AI ay dapat maging tapat at bukas tungkol sa kung kailan, bakit, at paano nila pinipili na i-deploy ang mga ito, pati na rin ang mga limitasyon ng mga sistemang ginagamit nila. Halimbawa, kung ang isang bangko ay gumagamit ng isang sistema ng AI upang suportahan ang mga desisyon sa pagpapautang sa consumer, mahalagang suriin ang mga resulta at maunawaan kung aling data ang nakakaimpluwensya sa mga rekomendasyon ng sistema. Ang mga gobyerno ay nagsisimulang mag-regulate ng AI sa iba't ibang industriya, kaya ang mga data scientist at organisasyon ay dapat ipaliwanag kung ang isang sistema ng AI ay nakakatugon sa mga kinakailangan sa regulasyon, lalo na kapag may hindi kanais-nais na resulta. +### Transparency +Dapat na maintindihan ang mga sistema ng AI. Isang mahalagang bahagi ng transparency ay ang pagpapaliwanag sa pag-uugali ng mga sistema ng AI at mga bahagi nito. Ang pagpapahusay sa pag-unawa sa mga sistema ng AI ay nangangailangan na maintindihan ng mga stakeholder kung paano at bakit ito gumagana upang matukoy kung may mga potensyal na isyu sa pagganap, mga alalahanin sa kaligtasan at privacy, mga pagkiling, mga gawi ng pagsasantabi, o hindi inaasahang mga resulta. Naniniwala rin kami na ang mga gumagamit ng mga sistema ng AI ay dapat maging tapat at bukas tungkol sa kung kailan, bakit, at paano nila pinipili gamitin ang mga ito, pati na rin ang mga limitasyon ng mga sistemang ginagamit nila. Halimbawa, kung ang isang bangko ay gumagamit ng isang sistema ng AI upang suportahan ang mga desisyon nito sa pautang sa mga consumer, mahalaga na suriin ang mga resulta at maunawaan kung aling datos ang nakakaimpluwensya sa mga rekomendasyon ng sistema. Nagsisimula nang i-regulate ng mga gobyerno ang AI sa iba't ibang industriya, kaya ang mga data scientist at mga organisasyon ay kailangang ipaliwanag kung ang isang AI na sistema ay sumusunod sa mga regulasyon, lalo na kung may hindi kanais-nais na resulta. -> [🎥 I-click dito para sa video: transparency in AI](https://www.microsoft.com/videoplayer/embed/RE4voJF) +> [🎥 Pindutin dito para sa isang video: transparency sa AI](https://www.microsoft.com/videoplayer/embed/RE4voJF) -- Dahil ang mga sistema ng AI ay napakakomplikado, mahirap maunawaan kung paano gumagana ang mga ito at ma-interpret ang mga resulta. -- Ang kakulangan ng pag-unawa na ito ay nakakaapekto sa paraan ng pamamahala, pagpapatakbo, at dokumentasyon ng mga sistemang ito. -- Ang kakulangan ng pag-unawa na ito ay mas mahalaga dahil nakakaapekto ito sa mga desisyon na ginawa gamit ang mga resulta na ginawa ng mga sistemang ito. +- Dahil napakakomplekado ng mga sistema ng AI, mahirap maintindihan kung paano sila gumagana at bigyang-kahulugan ang mga resulta. +- Ang kakulangan ng pag-unawa na ito ay nakakaapekto sa paraan ng pamamahala, pagpapatakbo, at pagdodokumento sa mga sistemang ito. +- Ang kakulangan ng pag-unawang ito ay higit na nakakaapekto sa mga desisyong ginawa gamit ang mga resulta na nilalabas ng mga sistemang ito. ### Pananagutan + +Ang mga taong nagdidisenyo at nagpapatupad ng mga sistema ng AI ay dapat managot kung paano gumagana ang kanilang mga sistema. Ang pangangailangan para sa pananagutan ay lalong mahalaga sa mga sensitibong teknolohiya tulad ng facial recognition. Kamakailan lamang, lumalaki ang demand para sa facial recognition technology, lalo na mula sa mga organisasyon ng batas na nakikita ang potensyal ng teknolohiya sa mga gamit tulad ng paghahanap sa mga nawawalang bata. Gayunpaman, ang mga teknolohiyang ito ay maaaring gamitin ng isang gobyerno upang ilagay sa panganib ang mga pangunahing kalayaan ng kanilang mga mamamayan sa pamamagitan ng, halimbawa, pagpapa-igting ng tuloy-tuloy na pagmamanman sa mga partikular na indibidwal. Kaya, kailangang maging responsable ang mga data scientist at mga organisasyon sa kung paano nakaaapekto ang kanilang sistema ng AI sa mga indibidwal o lipunan. + +[![Pangunahing AI Researcher Nagbabala sa Mass Surveillance sa Pamamagitan ng Facial Recognition](../../../../translated_images/tl/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft's Approach to Responsible AI") -Ang mga tao na nagdidisenyo at nag-deploy ng mga sistema ng AI ay dapat managot sa kung paano gumagana ang kanilang mga sistema. Ang pangangailangan para sa pananagutan ay partikular na mahalaga sa mga sensitibong teknolohiya tulad ng facial recognition. Kamakailan, nagkaroon ng lumalaking demand para sa facial recognition technology, lalo na mula sa mga organisasyon ng pagpapatupad ng batas na nakikita ang potensyal ng teknolohiya sa mga gamit tulad ng paghahanap ng mga nawawalang bata. Gayunpaman, ang mga teknolohiyang ito ay maaaring potensyal na gamitin ng isang gobyerno upang ilagay sa panganib ang mga pangunahing kalayaan ng kanilang mga mamamayan, halimbawa, sa pamamagitan ng pagpapagana ng tuloy-tuloy na surveillance ng mga partikular na indibidwal. Kaya, ang mga data scientist at organisasyon ay kailangang maging responsable sa kung paano nakakaapekto ang kanilang sistema ng AI sa mga indibidwal o lipunan. +> 🎥 Pindutin ang larawan sa itaas para sa video: Mga Babala tungkol sa Mass Surveillance sa Pamamagitan ng Facial Recognition -[![Leading AI Researcher Warns of Mass Surveillance Through Facial Recognition](../../../../1-Introduction/3-fairness/images/accountability.png)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft's Approach to Responsible AI") +Sa huli, isa sa pinakamalaking tanong para sa ating henerasyon, bilang unang henerasyon na nagdadala ng AI sa lipunan, ay paano matitiyak na mananatiling may pananagutan ang mga computer sa mga tao at paano matitiyak na ang mga tao na nagdidisenyo ng computer ay mananatiling may pananagutan sa lahat ng iba pa. -> 🎥 I-click ang imahe sa itaas para sa video: Warnings of Mass Surveillance Through Facial Recognition +## Pagsusuri ng Epekto -Sa huli, isa sa pinakamalaking tanong para sa ating henerasyon, bilang unang henerasyon na nagdadala ng AI sa lipunan, ay kung paano masisiguro na ang mga computer ay mananatiling accountable sa mga tao at kung paano masisiguro na ang mga tao na nagdidisenyo ng mga computer ay mananatiling accountable sa lahat. +Bago sanayin ang isang machine learning na modelo, mahalaga na magsagawa ng pagsusuri ng epekto upang maunawaan ang layunin ng AI system; kung ano ang inaasahang gamit nito; saan ito ilalagay; at sino ang makikipag-ugnayan sa sistema. Mahalaga ito para sa mga tagasuri o tagasubok na nag-evaluate sa sistema upang malaman kung anu-anong mga salik ang isasaalang-alang sa pagtukoy ng mga potensyal na panganib at inaasahang mga epekto. -## Pagtatasa ng Epekto +Ang mga sumusunod ay mga pokus kapag nagsasagawa ng pagsusuri ng epekto: -Bago sanayin ang isang modelo ng machine learning, mahalagang magsagawa ng impact assessment upang maunawaan ang layunin ng sistema ng AI; kung ano ang nilalayong paggamit nito; kung saan ito ide-deploy; at sino ang makikipag-ugnayan sa sistema. Ang mga ito ay kapaki-pakinabang para sa reviewer(s) o tester na nag-evaluate sa sistema upang malaman kung anong mga salik ang dapat isaalang-alang kapag tinutukoy ang mga potensyal na panganib at inaasahang kahihinatnan. +* **Masamang epekto sa mga indibidwal**. Ang pagiging mulat sa anumang paghihigpit o kinakailangan, di-suportadong paggamit o anumang kilalang limitasyon na nakahahadlang sa pagganap ng sistema ay mahalaga upang matiyak na hindi ginagamit ang sistema sa paraang maaaring makasama sa mga indibidwal. +* **Mga pangangailangan sa datos**. Ang pag-unawa kung paano at saan gagamitin ng sistema ang datos ay nagbibigay-daan sa mga tagasuri na tuklasin ang anumang kinakailangang datos na dapat isaalang-alang (hal., GDPR o HIPAA na mga regulasyon sa datos). Bukod dito, suriin kung sapat ang pinagmulan o dami ng datos para sa pagsasanay. +* **Buod ng epekto**. Magtipon ng listahan ng mga potensyal na pinsala na maaaring lumitaw mula sa paggamit ng sistema. Sa buong lifecycle ng ML, suriin kung ang mga isyung natukoy ay naiiwasan o natutugunan. +* **Nalalapat na mga layunin** para sa bawat isa sa anim na pangunahing prinsipyo. Suriin kung natutupad ang mga layunin mula sa bawat prinsipyo at kung may mga puwang. -Ang mga sumusunod ay mga lugar ng pokus kapag nagsasagawa ng impact assessment: -* **Masamang epekto sa mga indibidwal**. Ang pagiging maalam sa anumang limitasyon o kinakailangan, hindi suportadong paggamit, o anumang kilalang limitasyon na humahadlang sa pagganap ng sistema ay mahalaga upang matiyak na ang sistema ay hindi ginagamit sa paraang maaaring magdulot ng pinsala sa mga indibidwal. -* **Mga kinakailangan sa data**. Ang pag-unawa kung paano at saan gagamitin ng sistema ang data ay nagbibigay-daan sa mga reviewer na tuklasin ang anumang mga kinakailangan sa data na dapat mong tandaan (hal., GDPR o HIPPA data regulations). Bukod dito, suriin kung ang pinagmulan o dami ng data ay sapat para sa pagsasanay. -* **Buod ng epekto**. Magtipon ng listahan ng mga potensyal na pinsala na maaaring lumitaw mula sa paggamit ng sistema. Sa buong lifecycle ng ML, suriin kung ang mga isyung natukoy ay naibsan o natugunan. -* **Mga naaangkop na layunin** para sa bawat isa sa anim na pangunahing prinsipyo. Suriin kung ang mga layunin mula sa bawat prinsipyo ay natutugunan at kung mayroong anumang mga puwang. +## Pag-debug gamit ang responsable na AI -## Pag-debug gamit ang Responsible AI +Katulad ng pag-debug ng isang software application, ang pag-debug ng isang sistema ng AI ay isang kinakailangang proseso ng pagtukoy at paglutas ng mga isyu sa sistema. Maraming salik ang maaaring makaapekto sa isang modelo na hindi gumana ayon sa inaasahan o responsableng paraan. Karamihan sa mga tradisyunal na sukatan ng pagganap ng modelo ay mga quantitavive na buod ng pagganap ng modelo, na hindi sapat upang suriin kung paano nilalabag ng modelo ang mga prinsipyo ng responsable na AI. Bukod dito, ang isang machine learning na modelo ay isang itim na kahon na nagpapahirap na maintindihan kung ano ang nagtutulak ng resulta nito o magbigay ng paliwanag kapag nagkamali ito. Sa kalaunan ng kursong ito, matututuhan natin kung paano gamitin ang Responsible AI dashboard upang makatulong sa pag-debug ng mga sistema ng AI. Ang dashboard ay nagbibigay ng holistikong kasangkapan para sa mga data scientist at AI developer upang magsagawa ng: -Katulad ng pag-debug ng isang software application, ang pag-debug ng isang sistema ng AI ay isang kinakailangang proseso ng pagtukoy at paglutas ng mga isyu sa sistema. Maraming mga salik ang maaaring makaapekto sa isang modelo na hindi gumagana ayon sa inaasahan o responsable. Karamihan sa mga tradisyunal na sukatan ng pagganap ng modelo ay mga dami ng aggregate ng pagganap ng modelo, na hindi sapat upang suriin kung paano nilalabag ng isang modelo ang mga prinsipyo ng Responsible AI. Bukod dito, ang isang modelo ng machine learning ay isang black box na nagpapahirap na maunawaan kung ano ang nagdudulot ng resulta nito o magbigay ng paliwanag kapag nagkamali ito. Sa susunod na bahagi ng kursong ito, matutunan natin kung paano gamitin ang Responsible AI dashboard upang makatulong sa pag-debug ng mga sistema ng AI. Ang dashboard ay nagbibigay ng holistic na tool para sa mga data scientist at AI developer upang magsagawa ng: +* **Pagsusuri ng error**. Upang tukuyin ang pamamahagi ng error ng modelo na maaaring makaapekto sa katarungan o pagiging maaasahan ng sistema. +* **Pangkalahatang-ideya ng modelo**. Upang matuklasan kung saan may mga hindi pagkakapantay-pantay sa pagganap ng modelo sa iba't ibang cohort ng datos. +* **Pagsusuri ng datos**. Upang maunawaan ang pamamahagi ng datos at matukoy ang anumang potensyal na pagkiling sa datos na maaaring magdala sa mga isyu sa katarungan, inklusibidad, at pagiging maaasahan. +* **Paliwanag sa modelo**. Upang maunawaan kung ano ang nakakaapekto o nakakaimpluwensya sa mga prediksyon ng modelo. Nakakatulong ito sa pagpapaliwanag ng pag-uugali ng modelo, na mahalaga para sa transparency at pananagutan. -* **Error analysis**. Upang matukoy ang pamamahagi ng error ng modelo na maaaring makaapekto sa pagiging patas o pagiging maaasahan ng sistema. -* **Model overview**. Upang matuklasan kung saan may mga pagkakaiba sa pagganap ng modelo sa iba't ibang data cohorts. -* **Data analysis**. Upang maunawaan ang pamamahagi ng data at matukoy ang anumang potensyal na bias sa data na maaaring magdulot ng mga isyu sa pagiging patas, inklusibidad, at pagiging maaasahan. -* **Model interpretability**. Upang maunawaan kung ano ang nakakaapekto o nakakaimpluwensya sa mga hula ng modelo. Nakakatulong ito sa pagpapaliwanag ng pag-uugali ng modelo, na mahalaga para sa transparency at pananagutan. ## 🚀 Hamon + +Upang maiwasan ang mga pinsala na maipakilala sa unang pagkakataon, dapat tayong: + +- magkaroon ng pagkakaiba-iba ng mga pinagmulan at pananaw sa mga taong nagtatrabaho sa mga sistema +- mamuhunan sa mga dataset na sumasalamin sa pagkakaiba-iba ng ating lipunan +- bumuo ng mas mahusay na mga pamamaraan sa buong lifecycle ng machine learning upang tuklasin at itama ang responsable na AI kapag ito ay nangyayari + +Isipin ang mga totoong buhay na senaryo kung saan maliwanag ang kawalan ng tiwala sa isang modelo sa paggawa at paggamit ng modelo. Ano pa ang dapat nating isaalang-alang? + +## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ml/) + +## Pagrepaso at Sariling Pag-aaral + -Upang maiwasan ang mga pinsala na maipakilala sa -Panoorin ang workshop na ito para mas maintindihan ang mga paksa: +Sa araling ito, natutunan mo ang ilang batayan ng mga konsepto ng katarungan at hindi katarungan sa machine learning. + +Panoorin ang workshop na ito upang mas malalim na tuklasin ang mga paksa: -- Sa paghahangad ng responsableng AI: Paglalapat ng mga prinsipyo sa praktika nina Besmira Nushi, Mehrnoosh Sameki, at Amit Sharma +- Sa pagsisikap para sa responsableng AI: Pagsasagawa ng mga prinsipyo sa praktika nina Besmira Nushi, Mehrnoosh Sameki at Amit Sharma -[![Responsible AI Toolbox: Isang open-source framework para sa paggawa ng responsableng AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: Isang open-source framework para sa paggawa ng responsableng AI") +[![Responsible AI Toolbox: An open-source framework for building responsible AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") -> 🎥 I-click ang imahe sa itaas para sa video: RAI Toolbox: Isang open-source framework para sa paggawa ng responsableng AI nina Besmira Nushi, Mehrnoosh Sameki, at Amit Sharma +> 🎥 I-click ang larawan sa itaas para sa isang video: RAI Toolbox: Isang open-source na balangkas para sa paggawa ng responsableng AI nina Besmira Nushi, Mehrnoosh Sameki, at Amit Sharma -Basahin din: +Basahin din: -- Resource center ng Microsoft para sa RAI: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) +- Sentro ng mga mapagkukunan ng RAI ng Microsoft: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) -- FATE research group ng Microsoft: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/) +- Pangkat ng pananaliksik ng FATE ng Microsoft: [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) -Basahin ang tungkol sa mga tools ng Azure Machine Learning para masiguro ang pagiging patas: +Basahin tungkol sa mga kasangkapan ng Azure Machine Learning upang matiyak ang katarungan: -- [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) -## Gawain +## Takdang Aralin [Galugarin ang RAI Toolbox](assignment.md) --- -**Paunawa**: -Ang dokumentong ito ay isinalin gamit ang AI translation service na [Co-op Translator](https://github.com/Azure/co-op-translator). Bagama't sinisikap naming maging tumpak, tandaan na ang mga awtomatikong pagsasalin ay maaaring maglaman ng mga pagkakamali o hindi pagkakatugma. Ang orihinal na dokumento sa kanyang katutubong wika ang dapat ituring na opisyal na sanggunian. Para sa mahalagang impormasyon, inirerekomenda ang propesyonal na pagsasalin ng tao. Hindi kami mananagot sa anumang hindi pagkakaunawaan o maling interpretasyon na maaaring magmula sa paggamit ng pagsasaling ito. \ No newline at end of file + +**Pagtatanggi**: +Ang dokumentong ito ay isinalin gamit ang serbisyo ng AI translation na [Co-op Translator](https://github.com/Azure/co-op-translator). Bagama't nagsusumikap kami para sa katumpakan, pakatandaan na ang awtomatikong pagsasalin ay maaaring maglaman ng mga pagkakamali o hindi pagkakatugma. Ang orihinal na dokumento sa orihinal nitong wika ang dapat ituring na pangunahing sanggunian. Para sa mahahalagang impormasyon, inirerekomenda ang propesyonal na pagsasalin ng tao. Hindi kami mananagot sa anumang maling pagkakaintindi o maling interpretasyon na nagmula sa paggamit ng pagsasaling ito. + \ No newline at end of file diff --git a/translations/tl/2-Regression/1-Tools/README.md b/translations/tl/2-Regression/1-Tools/README.md index b852160ec..bacd65505 100644 --- a/translations/tl/2-Regression/1-Tools/README.md +++ b/translations/tl/2-Regression/1-Tools/README.md @@ -1,120 +1,121 @@ -# Magsimula sa Python at Scikit-learn para sa mga regression model +# Magsimula sa Python at Scikit-learn para sa mga modelo ng regression -![Buod ng mga regression sa isang sketchnote](../../../../sketchnotes/ml-regression.png) +![Buod ng mga regression sa isang sketchnote](../../../../translated_images/tl/ml-regression.4e4f70e3b3ed446e.webp) > Sketchnote ni [Tomomi Imura](https://www.twitter.com/girlie_mac) ## [Pre-lecture quiz](https://ff-quizzes.netlify.app/en/ml/) -> ### [Ang araling ito ay available sa R!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html) +> ### [Available ang leksyong ito sa R!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html) -## Panimula +## Introduksyon -Sa apat na araling ito, matutuklasan mo kung paano bumuo ng mga regression model. Tatalakayin natin kung para saan ang mga ito sa madaling panahon. Ngunit bago ka magsimula, tiyakin na mayroon kang tamang mga tool upang simulan ang proseso! +Sa apat na araling ito, matutuklasan mo kung paano bumuo ng mga regression model. Tatalakayin natin kung para saan ang mga ito pagkatapos. Ngunit bago ka gumawa ng anumang bagay, siguraduhing meron kang tamang mga kagamitan upang simulan ang proseso! -Sa araling ito, matututunan mo kung paano: +Sa araling ito, matututuhan mo kung paano: -- I-configure ang iyong computer para sa mga lokal na machine learning na gawain. -- Gumamit ng Jupyter notebooks. +- I-configure ang iyong computer para sa mga lokal na gawain sa machine learning. +- Gumamit ng Jupyter Notebooks. - Gumamit ng Scikit-learn, kabilang ang pag-install. -- Tuklasin ang linear regression sa pamamagitan ng isang praktikal na ehersisyo. +- Suriin ang linear regression sa isang praktikal na pagsasanay. -## Mga Pag-install at Konfigurasyon +## Mga pag-install at konfigurasyon -[![ML para sa mga nagsisimula - I-set up ang iyong mga tool para sa pagbuo ng Machine Learning models](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML para sa mga nagsisimula - I-set up ang iyong mga tool para sa pagbuo ng Machine Learning models") +[![ML para sa mga baguhan - I-set up ang iyong mga kagamitan para makapagsimula sa pagbuo ng Machine Learning models](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML para sa mga baguhan - I-set up ang iyong mga kagamitan para makapagsimula sa pagbuo ng Machine Learning models") -> 🎥 I-click ang imahe sa itaas para sa isang maikling video tungkol sa pag-configure ng iyong computer para sa ML. +> 🎥 Pindutin ang larawan sa itaas para sa maikling video tungkol sa pag-configure ng iyong computer para sa ML. -1. **I-install ang Python**. Tiyakin na ang [Python](https://www.python.org/downloads/) ay naka-install sa iyong computer. Gagamitin mo ang Python para sa maraming data science at machine learning na gawain. Karamihan sa mga computer system ay mayroon nang naka-install na Python. Mayroon ding mga kapaki-pakinabang na [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) na magpapadali sa setup para sa ilang user. +1. **I-install ang Python**. Siguraduhing naka-install ang [Python](https://www.python.org/downloads/) sa iyong computer. Gagamitin mo ang Python para sa maraming gawain sa data science at machine learning. Karamihan sa mga sistema ng computer ay may nakalaang pag-install ng Python. Meron ding mga kapaki-pakinabang na [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) na makakatulong para mas madali ang setup para sa ilan. - Gayunpaman, ang ilang paggamit ng Python ay nangangailangan ng isang partikular na bersyon ng software, habang ang iba ay nangangailangan ng ibang bersyon. Dahil dito, kapaki-pakinabang na gumamit ng [virtual environment](https://docs.python.org/3/library/venv.html). + Gayunpaman, may ilang gamit ng Python na nangangailangan ng isang bersyon ng software, habang ang iba naman ay ibang bersyon. Dahil dito, kapaki-pakinabang ang gumamit ng [virtual environment](https://docs.python.org/3/library/venv.html). -2. **I-install ang Visual Studio Code**. Tiyakin na mayroon kang Visual Studio Code na naka-install sa iyong computer. Sundin ang mga tagubilin upang [i-install ang Visual Studio Code](https://code.visualstudio.com/) para sa pangunahing pag-install. Gagamitin mo ang Python sa Visual Studio Code sa kursong ito, kaya maaaring gusto mong mag-review kung paano [i-configure ang Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) para sa Python development. +2. **I-install ang Visual Studio Code**. Siguraduhing naka-install ang Visual Studio Code sa iyong computer. Sundin ang mga tagubiling ito para sa [pag-install ng Visual Studio Code](https://code.visualstudio.com/) para sa pangunahing pag-install. Gagamitin mo ang Python sa Visual Studio Code sa kursong ito, kaya maaaring gusto mong aralin kung paano [i-configure ang Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) para sa pag-develop ng Python. - > Maging komportable sa Python sa pamamagitan ng pagdaan sa koleksyong ito ng [Learn modules](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) + > Masanay sa Python sa pamamagitan ng pagdaan sa koleksyon ng mga [Learn modules](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) > - > [![I-set up ang Python gamit ang Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "I-set up ang Python gamit ang Visual Studio Code") + > [![I-setup ang Python gamit ang Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "I-setup ang Python gamit ang Visual Studio Code") > - > 🎥 I-click ang imahe sa itaas para sa isang video: paggamit ng Python sa loob ng VS Code. + > 🎥 Pindutin ang larawan sa itaas para sa video: paggamit ng Python sa loob ng VS Code. -3. **I-install ang Scikit-learn**, sa pamamagitan ng pagsunod sa [mga tagubilin na ito](https://scikit-learn.org/stable/install.html). Dahil kailangan mong tiyakin na gumagamit ka ng Python 3, inirerekomenda na gumamit ka ng virtual environment. Tandaan, kung ini-install mo ang library na ito sa isang M1 Mac, may mga espesyal na tagubilin sa pahinang naka-link sa itaas. +3. **I-install ang Scikit-learn**, sundin ang [mga tagubilin na ito](https://scikit-learn.org/stable/install.html). Dahil kailangan mong tiyakin na gagamit ka ng Python 3, inirerekomenda na gumamit ka ng virtual environment. Tandaan, kung ini-install mo ang library na ito sa M1 Mac, may espesyal na mga tagubilin sa pahinang naka-link sa itaas. -4. **I-install ang Jupyter Notebook**. Kailangan mong [i-install ang Jupyter package](https://pypi.org/project/jupyter/). +1. **I-install ang Jupyter Notebook**. Kakailanganin mong [i-install ang Jupyter package](https://pypi.org/project/jupyter/). -## Ang Iyong ML Authoring Environment +## Ang iyong ML authoring environment -Gagamit ka ng **notebooks** upang bumuo ng iyong Python code at lumikha ng mga machine learning model. Ang ganitong uri ng file ay karaniwang tool para sa mga data scientist, at makikilala sila sa pamamagitan ng kanilang suffix o extension `.ipynb`. +Gagamit ka ng **notebooks** para i-develop ang iyong Python code at gumawa ng mga machine learning model. Ang ganitong uri ng file ay isang karaniwang kagamitan para sa mga data scientist, at makikilala ito sa kanilang suffix o extension na `.ipynb`. -Ang notebooks ay isang interactive na environment na nagbibigay-daan sa developer na parehong mag-code at magdagdag ng mga tala at magsulat ng dokumentasyon sa paligid ng code, na kapaki-pakinabang para sa mga experimental o research-oriented na proyekto. +Ang mga notebook ay isang interactive na kapaligiran na nagpapahintulot sa developer na parehong mag-code at magdagdag ng mga tala at magsulat ng dokumentasyon sa paligid ng code na napaka-kapaki-pakinabang para sa mga eksperimento o research-oriented na proyekto. -[![ML para sa mga nagsisimula - I-set up ang Jupyter Notebooks upang simulan ang pagbuo ng regression models](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML para sa mga nagsisimula - I-set up ang Jupyter Notebooks upang simulan ang pagbuo ng regression models") +[![ML para sa mga baguhan - I-setup ang Jupyter Notebooks upang makapagsimula sa paggawa ng mga regression models](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML para sa mga baguhan - I-setup ang Jupyter Notebooks upang makapagsimula sa paggawa ng mga regression models") -> 🎥 I-click ang imahe sa itaas para sa isang maikling video tungkol sa ehersisyong ito. +> 🎥 Pindutin ang larawan sa itaas para sa maikling video na nagtuturo sa pagsasanay na ito. -### Ehersisyo - Gumamit ng Notebook +### Pagsasanay - gumamit ng notebook Sa folder na ito, makikita mo ang file na _notebook.ipynb_. 1. Buksan ang _notebook.ipynb_ sa Visual Studio Code. - Magsisimula ang isang Jupyter server gamit ang Python 3+. Makikita mo ang mga bahagi ng notebook na maaaring `run`, mga piraso ng code. Maaari mong patakbuhin ang isang code block sa pamamagitan ng pagpili sa icon na mukhang play button. + Mag-uumpisa ang Jupyter server na may Python 3+ na naka-start. Makikita mo ang mga bahagi ng notebook na maaaring `run`, mga piraso ng code. Maaari mong patakbuhin ang isang code block sa pamamagitan ng pagpili ng icon na mukhang play button. -2. Piliin ang `md` icon at magdagdag ng kaunting markdown, at ang sumusunod na teksto **# Welcome to your notebook**. +1. Piliin ang `md` icon at magdagdag ng ilang markdown, at ang sumusunod na teksto **# Welcome to your notebook**. - Susunod, magdagdag ng ilang Python code. + Pagkatapos, magdagdag ng ilang Python code. -3. I-type ang **print('hello notebook')** sa code block. -4. Piliin ang arrow upang patakbuhin ang code. +1. I-type ang **print('hello notebook')** sa code block. +1. Piliin ang arrow para patakbuhin ang code. - Makikita mo ang naka-print na pahayag: + Dapat mong makita ang naka-print na pahayag: ```output hello notebook ``` -![VS Code na may notebook na bukas](../../../../2-Regression/1-Tools/images/notebook.jpg) +![VS Code na may bukas na notebook](../../../../translated_images/tl/notebook.4a3ee31f396b8832.webp) -Maaari mong pagsamahin ang iyong code sa mga komento upang i-self-document ang notebook. +Maaari mong salin-salin ang iyong code sa mga komentaryo para sa sarili mong dokumentasyon ng notebook. -✅ Mag-isip ng sandali kung gaano kaiba ang working environment ng isang web developer kumpara sa isang data scientist. +✅ Isipin ng sandali kung gaano kaiba ang working environment ng isang web developer kumpara sa isang data scientist. -## Pagsisimula sa Scikit-learn +## Naka-set up na gamit ang Scikit-learn -Ngayon na ang Python ay naka-set up sa iyong lokal na environment, at komportable ka sa Jupyter notebooks, magpakomportable din tayo sa Scikit-learn (binibigkas na `sci` tulad ng `science`). Ang Scikit-learn ay nagbibigay ng [malawak na API](https://scikit-learn.org/stable/modules/classes.html#api-ref) upang tulungan kang magsagawa ng mga ML na gawain. +Ngayon na naka-setup na ang Python sa iyong lokal na kapaligiran, at komportable ka na sa Jupyter Notebooks, maging komportable na rin tayo sa Scikit-learn (bigkasin itong `sci` tulad ng sa `science`). Nagbibigay ang Scikit-learn ng [malawak na API](https://scikit-learn.org/stable/modules/classes.html#api-ref) para tulungan kang magsagawa ng mga gawain sa ML. -Ayon sa kanilang [website](https://scikit-learn.org/stable/getting_started.html), "Ang Scikit-learn ay isang open source machine learning library na sumusuporta sa supervised at unsupervised learning. Nagbibigay din ito ng iba't ibang tool para sa model fitting, data preprocessing, model selection at evaluation, at marami pang ibang utilities." +Ayon sa kanilang [website](https://scikit-learn.org/stable/getting_started.html), "Ang Scikit-learn ay isang open source na machine learning library na sumusuporta sa supervised at unsupervised learning. Nagbibigay din ito ng iba’t ibang mga kasangkapan para sa model fitting, data preprocessing, model selection at evaluation, at marami pang iba." -Sa kursong ito, gagamitin mo ang Scikit-learn at iba pang mga tool upang bumuo ng mga machine learning model para magsagawa ng tinatawag nating 'traditional machine learning' tasks. Sadyang iniwasan namin ang neural networks at deep learning, dahil mas mahusay itong saklawin sa aming paparating na 'AI for Beginners' curriculum. +Sa kursong ito, gagamitin mo ang Scikit-learn at iba pang mga tool upang bumuo ng machine learning models para maisagawa ang tinatawag nating 'traditional machine learning' na mga gawain. Sadyang kinaiwasan namin ang neural networks at deep learning, dahil mas mahusay itong tinatalakay sa paparating na 'AI for Beginners' na kurikulum namin. -Ginagawang simple ng Scikit-learn ang pagbuo ng mga model at ang pagsusuri sa mga ito para magamit. Pangunahing nakatuon ito sa paggamit ng numeric data at naglalaman ng ilang ready-made datasets para magamit bilang mga learning tool. Kasama rin dito ang mga pre-built model na maaaring subukan ng mga estudyante. Tuklasin natin ang proseso ng pag-load ng prepackaged data at paggamit ng built-in estimator para sa unang ML model gamit ang Scikit-learn gamit ang ilang basic na data. +Pinapadali ng Scikit-learn ang pagbuo ng mga modelo at kanilang pagsusuri para magamit. Nakatuon ito lalo na sa paggamit ng numeric na data at naglalaman ng ilang mga handang-gamitin na datasets bilang mga tool sa pag-aaral. Mayroon din itong mga pre-built na modelo na pwedeng subukan ng mga estudyante. Tuklasin muna natin ang proseso ng paglo-load ng prepackaged data at paggamit ng isang built-in estimator bilang unang ML model gamit ang Scikit-learn na may simpleng data. -## Ehersisyo - Ang Iyong Unang Scikit-learn Notebook +## Pagsasanay - ang iyong unang Scikit-learn notebook -> Ang tutorial na ito ay inspirasyon ng [linear regression example](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) sa website ng Scikit-learn. +> Ang tutorial na ito ay hango sa [linear regression example](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) sa website ng Scikit-learn. -[![ML para sa mga nagsisimula - Ang Iyong Unang Linear Regression Project sa Python](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "ML para sa mga nagsisimula - Ang Iyong Unang Linear Regression Project sa Python") -> 🎥 I-click ang imahe sa itaas para sa isang maikling video tungkol sa ehersisyong ito. +[![ML para sa mga baguhan - Ang iyong Unang Linear Regression Project sa Python](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "ML para sa mga baguhan - Ang iyong Unang Linear Regression Project sa Python") -Sa file na _notebook.ipynb_ na nauugnay sa araling ito, i-clear ang lahat ng mga cell sa pamamagitan ng pagpindot sa 'trash can' icon. +> 🎥 Pindutin ang larawan sa itaas para sa maikling video na nagtuturo sa pagsasanay na ito. -Sa seksyong ito, gagamit ka ng isang maliit na dataset tungkol sa diabetes na built-in sa Scikit-learn para sa mga layunin ng pag-aaral. Isipin na gusto mong subukan ang isang paggamot para sa mga pasyenteng may diabetes. Ang mga Machine Learning model ay maaaring makatulong sa iyo na matukoy kung aling mga pasyente ang mas mahusay na tutugon sa paggamot, batay sa mga kumbinasyon ng mga variable. Kahit na isang napaka-basic na regression model, kapag na-visualize, ay maaaring magpakita ng impormasyon tungkol sa mga variable na makakatulong sa iyo na ayusin ang iyong mga teoretikal na clinical trials. +Sa _notebook.ipynb_ na file na kaugnay ng araling ito, tanggalin ang lahat ng mga selula sa pamamagitan ng pagpindot sa icon na 'trash can'. -✅ Maraming uri ng regression methods, at kung alin ang pipiliin mo ay nakadepende sa sagot na hinahanap mo. Kung gusto mong hulaan ang posibleng taas ng isang tao batay sa edad, gagamit ka ng linear regression, dahil naghahanap ka ng **numeric value**. Kung interesado kang tuklasin kung ang isang uri ng pagkain ay dapat ituring na vegan o hindi, naghahanap ka ng **category assignment** kaya gagamit ka ng logistic regression. Matututo ka pa tungkol sa logistic regression sa susunod. Mag-isip ng kaunti tungkol sa ilang tanong na maaari mong itanong sa data, at kung alin sa mga pamamaraang ito ang mas angkop. +Sa seksyong ito, magtatrabaho ka gamit ang maliit na dataset tungkol sa diabetes na naka-built in sa Scikit-learn para sa layuning pampag-aaral. Isipin na gusto mong subukan ang isang paggamot para sa mga diabetic na pasyente. Makakatulong ang mga machine learning model upang tukuyin kung alin sa mga pasyente ang mas mahusay na tumugon sa paggamot, batay sa kombinasyon ng mga variable. Kahit ang isang napakasimpleng regression model, kapag na-visualize, ay maaaring magpakita ng impormasyon tungkol sa mga variable na makakatulong sa iyo na ayusin ang iyong mga teoretikal na clinical trials. -Simulan na natin ang gawain. +✅ Maraming uri ng mga pamamaraan ng regression, at nakadepende kung alin ang pipiliin mo sa sagot na hinahanap mo. Kung nais mong tukuyin ang malamang na taas para sa isang tao ng isang partikular na edad, gagamit ka ng linear regression, dahil naghahanap ka ng **numeric value**. Kung interesado kang malaman kung ang isang uri ng lutuin ay dapat ituring na vegan o hindi, naghahanap ka ng **category assignment** kaya gagamit ka ng logistic regression. Matututuhan mo pa ang tungkol sa logistic regression sa susunod. Isipin ng kaunti ang ilang mga tanong na maaari mong itanong sa data, at alin sa mga pamamaraang ito ang mas angkop. -### I-import ang mga Library +Tara, simulan na natin ang gawain na ito. -Para sa gawain na ito, mag-i-import tayo ng ilang library: +### Import ng mga library -- **matplotlib**. Isang kapaki-pakinabang na [tool para sa graphing](https://matplotlib.org/) at gagamitin natin ito upang lumikha ng line plot. +Para sa gawaing ito, mag-import tayo ng ilang mga library: + +- **matplotlib**. Isang kapaki-pakinabang na [graphing tool](https://matplotlib.org/) at gagamitin natin ito upang gumawa ng line plot. - **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) ay isang kapaki-pakinabang na library para sa paghawak ng numeric data sa Python. - **sklearn**. Ito ang [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) library. -Mag-import ng ilang library upang makatulong sa iyong mga gawain. +Mag-import ng ilang mga library upang makatulong sa iyong mga gawain. -1. Magdagdag ng imports sa pamamagitan ng pag-type ng sumusunod na code: +1. Magdagdag ng mga import sa pamamagitan ng pag-type ng sumusunod na code: ```python import matplotlib.pyplot as plt @@ -122,26 +123,26 @@ Mag-import ng ilang library upang makatulong sa iyong mga gawain. from sklearn import datasets, linear_model, model_selection ``` - Sa itaas, nag-i-import ka ng `matplotlib`, `numpy` at nag-i-import ka ng `datasets`, `linear_model` at `model_selection` mula sa `sklearn`. Ang `model_selection` ay ginagamit para sa paghahati ng data sa training at test sets. + Sa itaas, ini-import mo ang `matplotlib`, `numpy` at ini-import mo ang `datasets`, `linear_model` at `model_selection` mula sa `sklearn`. Ginagamit ang `model_selection` para hatiin ang data sa training at test sets. -### Ang Diabetes Dataset +### Ang diabetes dataset -Ang built-in na [diabetes dataset](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) ay naglalaman ng 442 na sample ng data tungkol sa diabetes, na may 10 feature variables, ilan sa mga ito ay: +Ang naka-built in na [diabetes dataset](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) ay may 442 halimbawa ng data tungkol sa diabetes, na may 10 feature variables, ilan sa mga ito ay kinabibilangan ng: - age: edad sa taon - bmi: body mass index - bp: average blood pressure -- s1 tc: T-Cells (isang uri ng white blood cells) +- s1 tc: T-Cells (isang uri ng puting selula ng dugo) -✅ Ang dataset na ito ay naglalaman ng konsepto ng 'sex' bilang isang feature variable na mahalaga sa pananaliksik tungkol sa diabetes. Maraming medical datasets ang naglalaman ng ganitong uri ng binary classification. Mag-isip ng kaunti tungkol sa kung paano maaaring maalis ng mga ganitong klasipikasyon ang ilang bahagi ng populasyon mula sa mga paggamot. +✅ Kasama sa dataset na ito ang konsepto ng 'sex' bilang isang feature variable na mahalaga sa pananaliksik tungkol sa diabetes. Maraming mga medikal na dataset ang may ganitong binary classification. Isipin ng kaunti kung paano maaaring mapag-iiwanan ang ilang bahagi ng populasyon sa mga paggamot dahil sa ganitong mga kategorizasyon. -Ngayon, i-load ang X at y data. +Ngayon, i-load ang X at y na data. -> 🎓 Tandaan, ito ay supervised learning, at kailangan natin ng pinangalanang 'y' target. +> 🎓 Tandaan, ito ay supervised learning, kaya kailangan natin ang isang tinatawag na 'y' target. -Sa isang bagong code cell, i-load ang diabetes dataset sa pamamagitan ng pagtawag sa `load_diabetes()`. Ang input na `return_X_y=True` ay nagpapahiwatig na ang `X` ay magiging isang data matrix, at ang `y` ay magiging regression target. +Sa isang bagong code cell, i-load ang diabetes dataset sa pamamagitan ng pagtawag sa `load_diabetes()`. Ang input na `return_X_y=True` ay nagsasaad na ang `X` ay magiging data matrix, at ang `y` ang regression target. -1. Magdagdag ng ilang print commands upang ipakita ang hugis ng data matrix at ang unang elemento nito: +1. Magdagdag ng mga print command upang ipakita ang hugis ng data matrix at ang unang elemento nito: ```python X, y = datasets.load_diabetes(return_X_y=True) @@ -149,9 +150,9 @@ Sa isang bagong code cell, i-load ang diabetes dataset sa pamamagitan ng pagtawa print(X[0]) ``` - Ang nakukuha mo bilang tugon ay isang tuple. Ang ginagawa mo ay i-assign ang dalawang unang halaga ng tuple sa `X` at `y` ayon sa pagkakabanggit. Matuto pa [tungkol sa tuples](https://wikipedia.org/wiki/Tuple). + Ang babalik sa iyo bilang tugon ay isang tuple. Ang ginagawa mo ay itinatakda ang unang dalawang halaga ng tuple bilang `X` at `y` ayon sa pagkakasunod. - Makikita mo na ang data na ito ay may 442 na item na nakaayos sa arrays ng 10 elemento: + Makikita mo na ang data ay may 442 items na hugis mga array na may 10 elemento: ```text (442, 10) @@ -159,39 +160,39 @@ Sa isang bagong code cell, i-load ang diabetes dataset sa pamamagitan ng pagtawa -0.04340085 -0.00259226 0.01990842 -0.01764613] ``` - ✅ Mag-isip ng kaunti tungkol sa relasyon sa pagitan ng data at ng regression target. Ang linear regression ay nagpo-predict ng mga relasyon sa pagitan ng feature X at target variable y. Mahahanap mo ba ang [target](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) para sa diabetes dataset sa dokumentasyon? Ano ang ipinapakita ng dataset na ito, batay sa target? + ✅ Isipin ng kaunti ang relasyon sa pagitan ng data at ng regression target. Nagtataya ang linear regression ng mga relasyon sa pagitan ng feature X at target variable y. Makikita mo ba ang [target](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) para sa diabetes dataset sa dokumentasyon? Ano ang ipinapakita ng dataset na ito, batay sa target na iyon? -2. Susunod, pumili ng bahagi ng dataset na ito upang i-plot sa pamamagitan ng pagpili sa ika-3 column ng dataset. Magagawa mo ito sa pamamagitan ng paggamit ng `:` operator upang piliin ang lahat ng rows, at pagkatapos ay piliin ang ika-3 column gamit ang index (2). Maaari mo ring i-reshape ang data upang maging isang 2D array - na kinakailangan para sa pag-plot - sa pamamagitan ng paggamit ng `reshape(n_rows, n_columns)`. Kung ang isa sa mga parameter ay -1, ang kaukulang dimensyon ay awtomatikong kinakalkula. +2. Sunod, piliin ang bahagi ng dataset na ito na ipaplot sa pamamagitan ng pagpili sa 3rd na kolum ng dataset. Magagawa ito gamit ang operator na `:` para piliin ang lahat ng hanay, at pagkatapos ay piliin ang 3rd na kolum gamit ang index (2). Maaari mo ring baguhin ang hugis ng data para maging 2D array - na kailangan sa pag-plot - gamit ang `reshape(n_rows, n_columns)`. Kapag ang isa sa mga parameter ay -1, awtomatikong kinakalkula ang dimensiyong iyon. ```python X = X[:, 2] X = X.reshape((-1,1)) ``` - ✅ Sa anumang oras, i-print ang data upang suriin ang hugis nito. + ✅ Sa anumang oras, i-print ang data upang macheck ang hugis nito. -3. Ngayon na mayroon kang data na handa nang i-plot, maaari mong tingnan kung makakatulong ang isang machine upang matukoy ang lohikal na paghahati sa pagitan ng mga numero sa dataset na ito. Upang gawin ito, kailangan mong hatiin ang parehong data (X) at ang target (y) sa test at training sets. Ang Scikit-learn ay may simpleng paraan upang gawin ito; maaari mong hatiin ang iyong test data sa isang ibinigay na punto. +3. Ngayon na may handang data na ipaplot, tingnan natin kung makakatulong ang makina sa pagtukoy ng lohikal na paghahati sa mga numero sa dataset na ito. Para gawin ito, kailangan mong hatiin ang data (X) at ang target (y) sa test at training sets. May directang paraan ang Scikit-learn para gawin ito; maaari mong hatiin ang iyong test data sa isang tiyak na punto. ```python X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33) ``` -4. Ngayon handa ka nang i-train ang iyong model! I-load ang linear regression model at i-train ito gamit ang iyong X at y training sets gamit ang `model.fit()`: +4. Ngayon ay handa ka nang sanayin ang iyong modelo! I-load ang linear regression na modelo at sanayin ito gamit ang X at y training sets gamit ang `model.fit()`: ```python model = linear_model.LinearRegression() model.fit(X_train, y_train) ``` - ✅ Ang `model.fit()` ay isang function na makikita mo sa maraming ML libraries tulad ng TensorFlow. + ✅ Ang `model.fit()` ay isang function na makikita mo sa maraming ML libraries tulad ng TensorFlow -5. Pagkatapos, lumikha ng prediction gamit ang test data, gamit ang function na `predict()`. Ito ay gagamitin upang gumuhit ng linya sa pagitan ng mga grupo ng data. +5. Pagkatapos, gumawa ng prediction gamit ang test data, gamit ang function na `predict()`. Gagamitin ito para iguhit ang linya sa pagitan ng mga grupo ng data ```python y_pred = model.predict(X_test) ``` -6. Ngayon ay oras na upang ipakita ang data sa isang plot. Ang Matplotlib ay isang napaka-kapaki-pakinabang na tool para sa gawaing ito. Gumawa ng scatterplot ng lahat ng X at y test data, at gamitin ang prediction upang gumuhit ng linya sa pinaka-angkop na lugar, sa pagitan ng mga grupo ng data ng model. +6. Ngayon ay oras na para ipakita ang data sa isang plot. Ang Matplotlib ay isang napaka-kapaki-pakinabang na kasangkapan para sa gawaing ito. Gumawa ng scatterplot ng lahat ng X at y test data, at gamitin ang prediction para gumuhit ng linya sa pinaka-angkop na lugar, sa pagitan ng mga grupo ng data ng modelo. ```python plt.scatter(X_test, y_test, color='black') @@ -202,29 +203,32 @@ Sa isang bagong code cell, i-load ang diabetes dataset sa pamamagitan ng pagtawa plt.show() ``` - ![isang scatterplot na nagpapakita ng mga datapoint tungkol sa diabetes](../../../../2-Regression/1-Tools/images/scatterplot.png) -✅ Pag-isipan mo nang mabuti kung ano ang nangyayari dito. Isang tuwid na linya ang dumadaan sa maraming maliliit na tuldok ng datos, pero ano nga ba ang ginagawa nito? Nakikita mo ba kung paano mo magagamit ang linyang ito upang mahulaan kung saan dapat ilagay ang isang bagong, hindi pa nakikitang punto ng datos kaugnay sa y axis ng plot? Subukang ilarawan sa mga salita ang praktikal na gamit ng modelong ito. + ![isang scatterplot na nagpapakita ng mga datapoint tungkol sa diabetes](../../../../translated_images/tl/scatterplot.ad8b356bcbb33be6.webp) -Binabati kita, nakagawa ka ng iyong unang linear regression model, nakalikha ng prediksyon gamit ito, at naipakita ito sa isang plot! ---- -## 🚀Hamunin + ✅ Mag-isip ng kaunti tungkol sa nangyayari dito. Isang tuwid na linya ang dumaraan sa maraming maliliit na tuldok ng data, pero ano ba talaga ang ginagawa nito? Nakikita mo ba kung paano mo dapat magagamit ang linyang ito para mahulaan kung saan dapat magkasya ang isang bagong, hindi pa nakikitang punto ng data kaugnay sa y axis ng plot? Subukang ilahad sa mga salita ang praktikal na gamit ng modelong ito. -I-plot ang ibang variable mula sa dataset na ito. Pahiwatig: i-edit ang linyang ito: `X = X[:,2]`. Batay sa target ng dataset na ito, ano ang kaya mong matuklasan tungkol sa pag-usad ng diabetes bilang isang sakit? +Congratulations, nakabuo ka ng iyong unang linear regression model, gumawa ng prediction gamit ito, at naipakita ito sa isang plot! + +--- +## 🚀Challenge +I-plot ang isang ibang variable mula sa dataset na ito. Pahiwatig: i-edit ang linyang ito: `X = X[:,2]`. Sa target ng dataset na ito, ano ang iyong matutuklasan tungkol sa pag-usad ng diabetes bilang isang sakit? ## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ml/) -## Review & Pag-aaral sa Sarili +## Review & Self Study -Sa tutorial na ito, gumamit ka ng simpleng linear regression, sa halip na univariate o multiple linear regression. Magbasa nang kaunti tungkol sa mga pagkakaiba ng mga pamamaraang ito, o panoorin ang [video na ito](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef). +Sa tutorial na ito, gumamit ka ng simple linear regression, sa halip na univariate o multiple linear regression. Basahin nang kaunti tungkol sa pagkakaiba ng mga metodong ito, o tingnan ang [video na ito](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) -Magbasa pa tungkol sa konsepto ng regression at pag-isipan kung anong mga uri ng tanong ang maaaring masagot gamit ang teknik na ito. Kunin ang [tutorial na ito](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) upang palalimin ang iyong kaalaman. +Magbasa pa tungkol sa konsepto ng regression at pag-isipan kung anong mga uri ng tanong ang maaaring masagot gamit ang teknik na ito. Gawin ang [tutorial na ito](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) upang palalimin ang iyong pag-unawa. -## Takdang Aralin +## Assignment -[A different dataset](assignment.md) +[Isang ibang dataset](assignment.md) --- -**Paunawa**: -Ang dokumentong ito ay isinalin gamit ang AI translation service na [Co-op Translator](https://github.com/Azure/co-op-translator). Bagama't sinisikap naming maging tumpak, tandaan na ang mga awtomatikong pagsasalin ay maaaring maglaman ng mga pagkakamali o hindi pagkakatugma. Ang orihinal na dokumento sa kanyang katutubong wika ang dapat ituring na opisyal na sanggunian. Para sa mahalagang impormasyon, inirerekomenda ang propesyonal na pagsasalin ng tao. Hindi kami mananagot sa anumang hindi pagkakaunawaan o maling interpretasyon na maaaring magmula sa paggamit ng pagsasaling ito. \ No newline at end of file + +**Pagtatanggi**: +Ang dokumentong ito ay isinalin gamit ang serbisyo ng AI translation na [Co-op Translator](https://github.com/Azure/co-op-translator). Bagama't nagsusumikap kami para sa katumpakan, pakatandaan na ang awtomatikong pagsasalin ay maaaring maglaman ng mga pagkakamali o hindi pagkakatugma. Ang orihinal na dokumento sa orihinal nitong wika ang dapat ituring na pangunahing sanggunian. Para sa mahahalagang impormasyon, inirerekomenda ang propesyonal na pagsasalin ng tao. Hindi kami mananagot sa anumang maling pagkakaintindi o maling interpretasyon na nagmula sa paggamit ng pagsasaling ito. + \ No newline at end of file diff --git a/translations/tl/2-Regression/2-Data/README.md b/translations/tl/2-Regression/2-Data/README.md index 3788020b0..926882e9a 100644 --- a/translations/tl/2-Regression/2-Data/README.md +++ b/translations/tl/2-Regression/2-Data/README.md @@ -1,62 +1,62 @@ -# Bumuo ng regression model gamit ang Scikit-learn: ihanda at i-visualize ang data +# Gumawa ng regression model gamit ang Scikit-learn: ihanda at ipakita ang data -![Infographic ng data visualization](../../../../2-Regression/2-Data/images/data-visualization.png) +![Infographic ng pag-visualize ng data](../../../../translated_images/tl/data-visualization.54e56dded7c1a804.webp) Infographic ni [Dasani Madipalli](https://twitter.com/dasani_decoded) ## [Pre-lecture quiz](https://ff-quizzes.netlify.app/en/ml/) -> ### [Ang araling ito ay available sa R!](../../../../2-Regression/2-Data/solution/R/lesson_2.html) +> ### [Available ang leksyong ito sa R!](../../../../2-Regression/2-Data/solution/R/lesson_2.html) ## Panimula -Ngayon na mayroon ka nang mga tool na kailangan upang simulan ang pagbuo ng machine learning model gamit ang Scikit-learn, handa ka nang magsimulang magtanong tungkol sa iyong data. Habang nagtatrabaho ka sa data at nag-aaplay ng mga solusyon sa ML, napakahalaga na maunawaan kung paano magtanong ng tamang tanong upang ma-unlock nang maayos ang potensyal ng iyong dataset. +Ngayon na naka-setup ka na gamit ang mga kailangang tools para simulan ang paggawa ng machine learning model gamit ang Scikit-learn, handa ka nang magtanong tungkol sa iyong data. Habang nagtatrabaho ka sa data at nag-aapply ng ML solutions, napakahalaga na maintindihan kung paano magtanong nang tama upang ma-unlock ng maayos ang potensyal ng iyong dataset. -Sa araling ito, matututunan mo: +Sa leksyong ito, matututuhan mo ang: -- Paano ihanda ang iyong data para sa pagbuo ng modelo. -- Paano gamitin ang Matplotlib para sa data visualization. +- Paano ihanda ang iyong data para sa paggawa ng modelo. +- Paano gamitin ang Matplotlib para sa pag-visualize ng data. +- Paano gamitin ang Seaborn para sa mas masining na pag-visualize ng data. ## Pagtatanong ng tamang tanong sa iyong data -Ang tanong na kailangan mong sagutin ang magtatakda kung anong uri ng ML algorithms ang iyong gagamitin. At ang kalidad ng sagot na makukuha mo ay lubos na nakadepende sa kalikasan ng iyong data. +Ang tanong na kailangang masagot ay magtatakda kung anong klase ng ML algorithms ang gagamitin mo. At ang kalidad ng sagot na matatanggap mo ay lubhang naka-depende sa kalikasan ng iyong data. -Tingnan ang [data](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) na ibinigay para sa araling ito. Maaari mong buksan ang .csv file na ito sa VS Code. Sa mabilisang pagtingin, makikita agad na may mga blangko at halo ng mga string at numeric na data. Mayroon ding kakaibang column na tinatawag na 'Package' kung saan ang data ay halo ng 'sacks', 'bins' at iba pang mga halaga. Sa katunayan, medyo magulo ang data. +Tingnan ang [data](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) na ibinigay para sa leksyong ito. Maaari mong buksan ang .csv file na ito sa VS Code. Sa mabilis na pagtingin, makikita mong may mga blanks at halo ng string at numeric na data. Mayroon ding kakaibang column na tinatawag na 'Package' kung saan ang data ay halo ng 'sacks', 'bins' at iba pang mga halaga. Ang data, sa katunayan, ay medyo magulo. -[![ML para sa mga nagsisimula - Paano Suriin at Linisin ang Dataset](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML para sa mga nagsisimula - Paano Suriin at Linisin ang Dataset") +[![ML para sa mga nagsisimula - Paano Mag-Analyze at Mag-Clean ng Dataset](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML para sa mga nagsisimula - Paano Mag-Analyze at Mag-Clean ng Dataset") -> 🎥 I-click ang imahe sa itaas para sa maikling video na nagpapakita kung paano ihanda ang data para sa araling ito. +> 🎥 I-click ang larawan sa itaas para sa isang maikling video na nagpapakita ng paghahanda ng data para sa leksyong ito. -Sa katunayan, hindi karaniwan na makakuha ng dataset na ganap na handa para gamitin sa paglikha ng ML model. Sa araling ito, matututunan mo kung paano ihanda ang raw dataset gamit ang mga karaniwang Python libraries. Matututunan mo rin ang iba't ibang teknik sa pag-visualize ng data. +Sa katunayan, hindi karaniwan na agad mong makuha ang dataset na handa nang gamitin para gumawa ng ML model. Sa leksyong ito, matututuhan mo kung paano maghanda ng raw dataset gamit ang mga standard Python libraries. Matututuhan mo rin ang iba't ibang teknik para i-visualize ang data. -## Case study: 'ang merkado ng kalabasa' +## Case study: 'ang pamilihan ng kalabasa' -Sa folder na ito, makakakita ka ng .csv file sa root `data` folder na tinatawag na [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) na naglalaman ng 1757 linya ng data tungkol sa merkado ng kalabasa, na nakaayos ayon sa lungsod. Ito ay raw data na kinuha mula sa [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) na ipinamamahagi ng United States Department of Agriculture. +Sa folder na ito makikita mo ang isang .csv file sa root `data` folder na tinatawag na [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) na may 1757 na linya ng data tungkol sa pamilihan ng kalabasa, na nakaayos sa mga pangkat ayon sa lungsod. Ito ay raw data na kinuha mula sa [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) na ipinamamahagi ng United States Department of Agriculture. ### Paghahanda ng data -Ang data na ito ay nasa public domain. Maaari itong i-download sa maraming magkakahiwalay na file, bawat lungsod, mula sa website ng USDA. Upang maiwasan ang masyadong maraming magkakahiwalay na file, pinagsama-sama namin ang lahat ng data ng lungsod sa isang spreadsheet, kaya't medyo _naihanda_ na namin ang data. Susunod, tingnan natin nang mas malapit ang data. +Ang data na ito ay nasa public domain. Maaari itong i-download sa maraming hiwalay na files, bawat lungsod, mula sa website ng USDA. Upang maiwasan ang sobrang dami ng hiwalay na files, pinag-isa namin ang lahat ng data ng lungsod sa isang spreadsheet, kaya medyo _naihanda_ na ang data. Susunod, tingnan natin nang mabuti ang data. -### Ang data ng kalabasa - mga maagang konklusyon +### Ang data ng kalabasa - mga unang konklusyon -Ano ang napapansin mo tungkol sa data na ito? Nakita mo na may halo ng mga string, numero, blangko, at kakaibang mga halaga na kailangan mong unawain. - -Anong tanong ang maaari mong itanong sa data na ito gamit ang Regression technique? Halimbawa, "I-predict ang presyo ng kalabasa na ibinebenta sa isang partikular na buwan". Sa muling pagtingin sa data, may ilang pagbabago kang kailangang gawin upang makabuo ng tamang istruktura ng data para sa gawain. +Ano ang napansin mo tungkol sa data na ito? Nakita mo na may halo ng string, numero, blanks at kakaibang mga halaga na kailangan mong maintindihan. +Anong tanong ang maaari mong itanong sa data na ito gamit ang regression technique? Paano ang "I-predict ang presyo ng kalabasa na binebenta sa isang takdang buwan". Sa muling pagtingin sa data, may ilang pagbabago kang kailangang gawin upang malikha ang tamang istraktura ng data para sa gawain. ## Ehersisyo - suriin ang data ng kalabasa -Gamitin natin ang [Pandas](https://pandas.pydata.org/), (ang pangalan ay nangangahulugang `Python Data Analysis`) isang tool na napaka-kapaki-pakinabang para sa paghubog ng data, upang suriin at ihanda ang data ng kalabasa. +Gamitin natin ang [Pandas](https://pandas.pydata.org/), (ang pangalan ay nangangahulugang `Python Data Analysis`) isang tool na napakabisa para sa paghulma ng data, upang suriin at ihanda ang data ng kalabasa. -### Una, suriin ang nawawalang mga petsa +### Una, suriin ang mga nawawalang petsa -Kailangan mo munang gumawa ng mga hakbang upang suriin ang nawawalang mga petsa: +Kailangan mo munang gumawa ng mga hakbang para suriin ang mga nawawalang petsa: -1. I-convert ang mga petsa sa format ng buwan (ang mga ito ay US dates, kaya ang format ay `MM/DD/YYYY`). +1. I-convert ang mga petsa sa format ng buwan (ito ay mga petsa sa US, kaya ang format ay `MM/DD/YYYY`). 2. I-extract ang buwan sa isang bagong column. Buksan ang _notebook.ipynb_ file sa Visual Studio Code at i-import ang spreadsheet sa isang bagong Pandas dataframe. -1. Gamitin ang `head()` function upang makita ang unang limang linya. +1. Gamitin ang `head()` function upang makita ang unang limang hanay. ```python import pandas as pd @@ -64,7 +64,7 @@ Buksan ang _notebook.ipynb_ file sa Visual Studio Code at i-import ang spreadshe pumpkins.head() ``` - ✅ Anong function ang gagamitin mo upang makita ang huling limang linya? + ✅ Anong function ang gagamitin mo para makita ang huling limang hanay? 1. Suriin kung may nawawalang data sa kasalukuyang dataframe: @@ -72,9 +72,9 @@ Buksan ang _notebook.ipynb_ file sa Visual Studio Code at i-import ang spreadshe pumpkins.isnull().sum() ``` - May nawawalang data, ngunit maaaring hindi ito mahalaga para sa gawain. + May nawawalang data, pero maaaring hindi ito mahalaga para sa task na ito. -1. Upang gawing mas madaling gamitin ang iyong dataframe, piliin lamang ang mga column na kailangan mo, gamit ang `loc` function na nag-eextract mula sa orihinal na dataframe ng isang grupo ng mga linya (ipinasa bilang unang parameter) at mga column (ipinasa bilang pangalawang parameter). Ang expression na `:` sa kaso sa ibaba ay nangangahulugang "lahat ng linya". +1. Para gawing mas madali ang paggamit sa iyong dataframe, piliin lamang ang mga columns na kailangan mo, gamit ang `loc` function na kumukuha mula sa orihinal na dataframe ng grupo ng mga row (bilang unang parameter) at mga column (bilang pangalawang parameter). Ang expression na `:` sa ibaba ay nangangahulugang "lahat ng rows". ```python columns_to_select = ['Package', 'Low Price', 'High Price', 'Date'] @@ -83,11 +83,11 @@ Buksan ang _notebook.ipynb_ file sa Visual Studio Code at i-import ang spreadshe ### Pangalawa, tukuyin ang average na presyo ng kalabasa -Pag-isipan kung paano tukuyin ang average na presyo ng kalabasa sa isang partikular na buwan. Anong mga column ang pipiliin mo para sa gawain na ito? Pahiwatig: kakailanganin mo ng 3 column. +Isipin kung paano matutukoy ang average na presyo ng kalabasa sa isang tiyak na buwan. Anong mga column ang pipiliin mo para sa gawain? Pahiwatig: kailangan mo ng 3 column. -Solusyon: kunin ang average ng `Low Price` at `High Price` columns upang punan ang bagong Price column, at i-convert ang Date column upang ipakita lamang ang buwan. Sa kabutihang-palad, ayon sa pagsusuri sa itaas, walang nawawalang data para sa mga petsa o presyo. +Solusyon: kunin ang average ng `Low Price` at `High Price` columns upang mapunan ang bagong Price column, at i-convert ang Date column upang ipakita lamang ang buwan. Sa kabutihang-palad, ayon sa pagsusuri sa itaas, walang nawawalang data para sa mga petsa o presyo. -1. Upang kalkulahin ang average, idagdag ang sumusunod na code: +1. Para kalkulahin ang average, idagdag ang sumusunod na code: ```python price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2 @@ -98,35 +98,35 @@ Solusyon: kunin ang average ng `Low Price` at `High Price` columns upang punan a ✅ Malaya kang mag-print ng anumang data na gusto mong suriin gamit ang `print(month)`. -2. Ngayon, kopyahin ang iyong na-convert na data sa isang bagong Pandas dataframe: +2. Ngayon, kopyahin ang iyong naka-convert na data sa isang bagong Pandas dataframe: ```python new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price}) ``` - Ang pag-print ng iyong dataframe ay magpapakita sa iyo ng malinis, maayos na dataset kung saan maaari kang bumuo ng iyong bagong regression model. + Ipinapakita ng pagpi-print ng iyong dataframe ang isang malinis at maayos na dataset na maaari mong gamitin para buuin ang bagong regression model. -### Ngunit sandali! May kakaiba dito +### Pero teka! May kakaiba dito -Kung titingnan mo ang `Package` column, ang mga kalabasa ay ibinebenta sa iba't ibang mga configuration. Ang ilan ay ibinebenta sa '1 1/9 bushel' na sukat, ang ilan sa '1/2 bushel' na sukat, ang ilan bawat kalabasa, ang ilan bawat pound, at ang ilan sa malalaking kahon na may iba't ibang lapad. +Kung titingnan mo ang `Package` column, ang mga kalabasa ay binebenta sa iba't ibang paraan. Ang ilan ay binebenta sa '1 1/9 bushel' sukat, ang ilan sa '1/2 bushel', ilan bawat kalabasa, ilan bawat pound, at ilan sa malalaking kahon na may iba't ibang lapad. -> Mukhang napakahirap timbangin nang pare-pareho ang mga kalabasa +> Mahirap timbangin nang konsistent ang mga kalabasa -Sa pag-usisa sa orihinal na data, kawili-wili na ang anumang may `Unit of Sale` na katumbas ng 'EACH' o 'PER BIN' ay mayroon ding `Package` type na bawat inch, bawat bin, o 'each'. Mukhang napakahirap timbangin nang pare-pareho ang mga kalabasa, kaya't i-filter natin ang mga ito sa pamamagitan ng pagpili lamang ng mga kalabasa na may string na 'bushel' sa kanilang `Package` column. +Sa pagsusuri ng orihinal na data, kawili-wili na anumang may `Unit of Sale` na 'EACH' o 'PER BIN' ay mayroon ding uri ng `Package` na per inch, per bin, o 'each'. Mahirap timbangin nang konsistent ang mga kalabasa, kaya't salain natin ang data sa pamamagitan ng pagpili lamang ng mga kalabasa na may string na 'bushel' sa kanilang `Package` column. -1. Magdagdag ng filter sa itaas ng file, sa ilalim ng initial .csv import: +1. Magdagdag ng filter sa itaas ng file, sa ilalim ng paunang pag-import ng .csv: ```python pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)] ``` - Kung i-print mo ang data ngayon, makikita mo na nakakakuha ka lamang ng mga 415 linya ng data na naglalaman ng mga kalabasa ayon sa bushel. + Kung ipi-print mo ang data ngayon, makikita mo na nakuha mo lamang ang mga 415 na linya ng data na naglalaman ng mga kalabasa sa bushel. -### Ngunit sandali! May isa pang bagay na kailangang gawin +### Pero teka! May isa pang kailangang gawin -Napansin mo ba na ang dami ng bushel ay nag-iiba bawat linya? Kailangan mong gawing normal ang pagpepresyo upang ipakita ang pagpepresyo bawat bushel, kaya't gumawa ng ilang math upang gawing standard ito. +Napansin mo ba na nag-iiba ang dami ng bushel sa bawat hanay? Kailangan mong i-normalize ang pagpe-presyo upang ipakita ang presyo kada bushel, kaya gumawa ng kaunting math para i-standardize ito. -1. Idagdag ang mga linyang ito pagkatapos ng block na gumagawa ng bagong_pumpkins dataframe: +1. Idagdag ang mga linya na ito pagkatapos ng block na lumilikha ng bagong_pumpkins dataframe: ```python new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9) @@ -134,38 +134,38 @@ Napansin mo ba na ang dami ng bushel ay nag-iiba bawat linya? Kailangan mong gaw new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2) ``` -✅ Ayon sa [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), ang timbang ng isang bushel ay nakadepende sa uri ng produkto, dahil ito ay isang sukat ng volume. "Ang isang bushel ng mga kamatis, halimbawa, ay dapat na tumimbang ng 56 pounds... Ang mga dahon at gulay ay kumukuha ng mas maraming espasyo na may mas kaunting timbang, kaya't ang isang bushel ng spinach ay 20 pounds lamang." Medyo komplikado ito! Huwag na nating alalahanin ang paggawa ng conversion ng bushel-to-pound, at sa halip ay magpresyo bawat bushel. Ang lahat ng pag-aaral na ito tungkol sa bushel ng mga kalabasa, gayunpaman, ay nagpapakita kung gaano kahalaga ang maunawaan ang kalikasan ng iyong data! +✅ Ayon sa [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), ang bigat ng isang bushel ay depende sa uri ng produkto, dahil ito ay pagsukat ng volume. "Ang isang bushel ng kamatis, halimbawa, ay dapat tumimbang ng 56 pounds... Ang mga dahon at gulay ay kumukuha ng mas maraming espasyo ngunit mababa ang timbang, kaya ang isang bushel ng spinach ay 20 pounds lamang." Medyo kumplikado lahat ito! Huwag na nating alalahanin ang conversion ng bushel-pounds, at tumuon na lamang sa pagpepresyo sa bushel. Ang pag-aaral ng bushel ng kalabasa na ito ay nagpapakita kung gaano kahalaga ang maintindihan ang kalikasan ng iyong data! -Ngayon, maaari mong suriin ang pagpepresyo bawat unit batay sa kanilang bushel measurement. Kung i-print mo ang data muli, makikita mo kung paano ito na-standardize. +Ngayon, maaari mo nang suriin ang presyo kada yunit batay sa kanilang sukat ng bushel. Kung ipi-print mo muli ang data, makikita mo kung paano ito naging standardized. -✅ Napansin mo ba na ang mga kalabasa na ibinebenta sa kalahating bushel ay napakamahal? Kaya mo bang alamin kung bakit? Pahiwatig: ang maliliit na kalabasa ay mas mahal kaysa sa malalaki, marahil dahil mas marami ang mga ito bawat bushel, dahil sa espasyong hindi nagagamit na kinukuha ng isang malaking hollow pie pumpkin. +✅ Napansin mo ba na ang mga kalabasa na binebenta ng half-bushel ay napakamahal? Kaya mo bang hulaan kung bakit? Pahiwatig: Ang maliliit na kalabasa ay mas mahal kumpara sa malalaki, marahil dahil mas marami sila kada bushel, dahil sa puwang na hindi nagagamit na sinasakop ng isang malaking lukbutan na kalabasa. -## Mga Estratehiya sa Visualization +## Estratehiya sa Pag-visualize -Bahagi ng tungkulin ng data scientist ang ipakita ang kalidad at kalikasan ng data na kanilang pinagtatrabahuhan. Upang gawin ito, madalas silang gumagawa ng mga kawili-wiling visualization, o mga plots, graphs, at charts, na nagpapakita ng iba't ibang aspeto ng data. Sa ganitong paraan, nagagawa nilang ipakita nang biswal ang mga relasyon at gaps na kung hindi man ay mahirap matuklasan. +Bahagi ng tungkulin ng data scientist ay ipakita ang kalidad at kalikasan ng data na kanilang pinagtatrabahuhan. Para dito, madalas silang gumagawa ng mga interesanteng visualizations, o mga plots, graphs, at charts, na nagpapakita ng iba't ibang aspeto ng data. Sa ganitong paraan, naipapakita nila sa visual na paraan ang mga relasyon at mga puwang na mahirap makita nang iba. -[![ML para sa mga nagsisimula - Paano I-visualize ang Data gamit ang Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML para sa mga nagsisimula - Paano I-visualize ang Data gamit ang Matplotlib") +[![ML para sa mga nagsisimula - Paano Mag-Visualize ng Data gamit ang Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML para sa mga nagsisimula - Paano Mag-Visualize ng Data gamit ang Matplotlib") -> 🎥 I-click ang imahe sa itaas para sa maikling video na nagpapakita kung paano i-visualize ang data para sa araling ito. +> 🎥 I-click ang larawan sa itaas para sa maikling video na nagpapakita ng pag-visualize ng data para sa leksyong ito. -Ang mga visualization ay maaari ring makatulong sa pagtukoy ng pinaka-angkop na machine learning technique para sa data. Halimbawa, ang isang scatterplot na tila sumusunod sa isang linya ay nagpapahiwatig na ang data ay isang mahusay na kandidato para sa linear regression exercise. +Makakatulong din ang mga visualization para matukoy ang pinaka-angkop na machine learning technique para sa data. Ang isang scatterplot na tila sumusunod sa isang linya, halimbawa, ay nagpapahiwatig na ang data ay magandang kandidato para sa linear regression exercise. -Ang isang data visualization library na mahusay gumagana sa Jupyter notebooks ay [Matplotlib](https://matplotlib.org/) (na nakita mo rin sa nakaraang aralin). +Isang data visualization library na mahusay gamitin sa Jupyter notebooks ay ang [Matplotlib](https://matplotlib.org/) (na nakita mo rin sa nakaraang leksyon). -> Magkaroon ng mas maraming karanasan sa data visualization sa [mga tutorial na ito](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott). +> Magkaroon ng karagdagang karanasan sa data visualization sa [mga tutorial na ito](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott). -## Ehersisyo - mag-eksperimento gamit ang Matplotlib +## Ehersisyo - subukan ang Matplotlib -Subukang gumawa ng ilang basic plots upang ipakita ang bagong dataframe na iyong ginawa. Ano ang ipapakita ng isang basic line plot? +Subukang gumawa ng mga pangunahing plots upang ipakita ang bagong dataframe na kakagawa mo lang. Ano kaya ang ipapakita ng isang basic line plot? -1. I-import ang Matplotlib sa itaas ng file, sa ilalim ng Pandas import: +1. I-import ang Matplotlib sa itaas ng file, sa ilalim ng import ng Pandas: ```python import matplotlib.pyplot as plt ``` -1. I-re-run ang buong notebook upang ma-refresh. -1. Sa ibaba ng notebook, magdagdag ng cell upang i-plot ang data bilang isang box: +1. I-run muli ang buong notebook para ma-refresh. +1. Sa ibaba ng notebook, magdagdag ng cell para i-plot ang data bilang isang box: ```python price = new_pumpkins.Price @@ -174,44 +174,121 @@ Subukang gumawa ng ilang basic plots upang ipakita ang bagong dataframe na iyong plt.show() ``` - ![Isang scatterplot na nagpapakita ng relasyon ng presyo sa buwan](../../../../2-Regression/2-Data/images/scatterplot.png) + ![Isang scatterplot na nagpapakita ng relasyon ng presyo at buwan](../../../../translated_images/tl/scatterplot.b6868f44cbd2051c.webp) - Kapaki-pakinabang ba ang plot na ito? Mayroon bang bagay na ikinagulat mo? + Kapaki-pakinabang ba ang plot na ito? May nakakagulat ba dito sa iyo? - Hindi ito partikular na kapaki-pakinabang dahil ang ginagawa lamang nito ay ipakita ang iyong data bilang isang kalat ng mga puntos sa isang partikular na buwan. + Hindi ito gaanong kapaki-pakinabang dahil ipinapakita lamang nito ang iyong data bilang isang kalat ng mga puntos sa isang takdang buwan. ### Gawing kapaki-pakinabang -Upang makagawa ng mga chart na nagpapakita ng kapaki-pakinabang na data, karaniwang kailangan mong i-group ang data sa isang paraan. Subukan nating gumawa ng plot kung saan ang y axis ay nagpapakita ng mga buwan at ang data ay nagpapakita ng distribution ng data. +Para maging kapaki-pakinabang ang mga chart, kadalasan kailangan mong i-groups ang data. Subukan nating gumawa ng plot kung saan ang y axis ay nagpapakita ng mga buwan at ang data ay nagpapakita ng distribusyon ng data. -1. Magdagdag ng cell upang gumawa ng grouped bar chart: +1. Magdagdag ng cell para gumawa ng grouped bar chart: ```python new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') plt.ylabel("Pumpkin Price") ``` - ![Isang bar chart na nagpapakita ng relasyon ng presyo sa buwan](../../../../2-Regression/2-Data/images/barchart.png) + ![Isang bar chart na nagpapakita ng relasyon ng presyo at buwan](../../../../translated_images/tl/barchart.a833ea9194346d76.webp) + + Mas kapaki-pakinabang na data visualization ito! Tila nagpapahiwatig na ang pinakamataas na presyo ng kalabasa ay nangyayari sa Setyembre at Oktubre. Tumutugma ba ito sa iyong inaasahan? Bakit o bakit hindi? + +## Ehersisyo - subukan ang Seaborn + +Malakas ang Matplotlib, pero nangangailangan ng maraming code para makagawa ng isang pulidong chart. Ang [Seaborn](https://seaborn.pydata.org/) ay isang library na ginawa _sa ibabaw ng_ Matplotlib na disenyo para sa statistical data visualization. Gumagana ito nang direkta sa Pandas dataframes, nag-aapply ng magagandang default styles, at nagbibigay-daan sa paggawa ng mga nakaka-inform na plot gamit ang mas konting code. Dahil nagbabalik ang Seaborn ng mga Matplotlib objects, magagamit mo pa rin ang lahat ng alam mo tungkol sa Matplotlib para i-fine-tune ang resulta. + +> Kung wala ka pang Seaborn, i-install ito gamit ang `pip install seaborn`. + +1. I-import ang Seaborn sa itaas ng notebook, sa ilalim ng ibang mga import. Karaniwan itong ino-import bilang `sns`: + + ```python + import seaborn as sns + ``` + +### Scatter plots para ipakita ang mga relasyon + +Malaking bahagi ng pag-explore ng data bago gumawa ng modelo ay ang paghahanap ng _relasyon_ sa pagitan ng mga variable. Ang [scatter plot](https://en.wikipedia.org/wiki/Scatter_plot) ay isa sa pinakamahusay na mga gamit dito: kung ang mga puntos ay tila sumusunod sa isang linya, maaaring correlated ang dalawang variables, na magandang palatandaan na maaaring gumana ang linear regression model. + +1. Gawing muli ang price-to-month scatter plot mula noon, gamit ang Seaborn's [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) (relational plot), na direktang gumagamit ng iyong mga column sa dataframe: + + ```python + sns.relplot(x="Price", y="Month", data=new_pumpkins) + ``` + + ![Isang Seaborn scatterplot na nagpapakita ng relasyon ng presyo at buwan](../../../../translated_images/tl/relplot.a03837d8f0329cec.webp) + + Pansinin kung paano mo ipinapasa ang _mga pangalan ng column_ at ang dataframe, at ang Seaborn ang bahala sa mga labels ng axis. + +2. Maaari kang lumipat sa line plot sa pamamagitan ng paglalagay ng `kind="line"`. Nagdodrawing pa ang Seaborn ng shaded band na nagpapakita ng confidence interval sa paligid ng linya: + + ```python + sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins) + ``` + + ![Isang Seaborn line plot na nagpapakita ng relasyon ng presyo at buwan](../../../../translated_images/tl/lineplot.f9034ba47b1e30ee.webp) + + Medyo maingay ang data na ito kaya hindi ito ang pinakamalinaw na pagpipilian — pero ipinapakita nito kung gaano kadaling palitan ang uri ng chart sa Seaborn. + +### Bar charts para ipakita ang distribusyon + + +Kanina ay ikaw ang nag-grupo ng data nang mano-mano upang gumawa ng bar chart gamit ang Matplotlib. Ang [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) (categorical plot) ng Seaborn ay kayang gawin ang pag-grupo at pag-aggregate para sa iyo. Sa default, `kind="bar"` nagpapakita ng mean ng bawat kategorya kasama ang itim na linya na nagpapahiwatig ng confidence interval. + +1. Gumawa ng bar chart ng average na presyo kada buwan: + + ```python + sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar") + ``` + + ![A Seaborn bar chart showing the price distribution per month](../../../../translated_images/tl/catplot.e73fc35fdf96242b.webp) + + Pinapatunayan nito ang nakita mo gamit ang Matplotlib — tumataas ang presyo mga Setyembre at Oktubre — ngunit visual din ng Seaborn kung gaano kalaki ang _pagkakaiba_ ng presyo sa bawat buwan. + +### Heatmaps upang ipakita ang mga korelasyon + +Ang scatter plots ay naghahambing ng dalawang variable sa isang pagkakataon. Kapag mayroon kang maraming numeric na kolum, ang [heatmap](https://en.wikipedia.org/wiki/Heat_map) ay nagpapakita ng lakas ng ugnayan sa pagitan ng _lahat_ ng pares ng kolum ng sabay-sabay. Ito ay isang karaniwang paraan upang makita kung aling mga feature ang pinaka-kaugnay bago pumili kung ano ang ipapakain sa modelo (at ang parehong uri ng tsart ay ginagamit din upang ipakita ang confusion matrices sa classification). + +1. Gumawa ng correlation matrix gamit ang Pandas, pagkatapos iguhit ito gamit ang [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html) ng Seaborn. Ang opsyong `annot=True` ay naglalagay ng mga halaga ng korelasyon sa bawat selda: + + ```python + correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr() + sns.heatmap(correlations, annot=True, cmap="coolwarm") + ``` + + ![A Seaborn heatmap showing correlations between the numeric columns](../../../../translated_images/tl/heatmap.bd98dce43b404c57.webp) + + Ang mga halagang malapit sa `1` (o `-1`) ay nangangahulugang malakas na _linear_ ang korelasyon ng mga kolum. Pansinin kung paano halos perpektong magkaugnay ang `Low Price` at `High Price`. Sa kabilang banda, ang `Month` ay nagpapakita lamang ng mahina na linear na korelasyon sa presyo — kahit na ipinakita ng bar chart sa itaas ang malinaw na pana-panahong pagtaas sa Setyembre at Oktubre. Isang mahalagang aral ito: ang correlation coefficient ay sumusukat lamang ng _diretsong-linya_ na ugnayan, kaya maaari nitong hindi makita ang mga pana-panahong o hindi linear na mga pattern. ✅ Bakit kapaki-pakinabang na tingnan ang heatmap *at* mga tsart tulad ng bar chart bago magpasya kung aling mga kolum ang gagamitin? + +### Matplotlib o Seaborn? + +Parehong kagiliw-giliw na malaman ang dalawang library: + +- **Matplotlib** ay nagbibigay ng detalyadong kontrol sa bawat elemento ng tsart at ito ang pundasyon ng halos lahat ng iba pang Python plotting library. +- **Seaborn** ay nagbibigay ng mas mataas na antas ng mga function at magagandang default para sa mga estadistikal na tsart, direktang gumagana sa mga dataframe, at kadalasang mas mabilis para sa exploratory data analysis. - Ito ay mas kapaki-pakinabang na data visualization! Mukhang ipinapakita nito na ang pinakamataas na presyo para sa mga kalabasa ay nangyayari sa Setyembre at Oktubre. Tugma ba ito sa iyong inaasahan? Bakit o bakit hindi? +Karaniwang workflow ay gamitin ang Seaborn upang mabilis na siyasatin ang data, pagkatapos bumaba sa Matplotlib kapag kailangan ng pag-customize ng mga detalye. --- ## 🚀Hamunin -Galugarin ang iba't ibang uri ng visualization na inaalok ng Matplotlib. Alin sa mga uri ang pinaka-angkop para sa regression problems? +Siyasatin ang iba't ibang uri ng visualisasyon na inaalok ng Matplotlib at Seaborn. Alin sa mga uri ang pinakaangkop para sa mga problema sa regression? ## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ml/) -## Review at Pag-aaral sa Sarili +## Suriin at Pag-aralan Mag-isa -Tingnan ang maraming paraan upang i-visualize ang data. Gumawa ng listahan ng iba't ibang libraries na available at tandaan kung alin ang pinakamahusay para sa mga partikular na uri ng gawain, halimbawa 2D visualizations vs. 3D visualizations. Ano ang natuklasan mo? +Tingnan ang maraming paraan ng pag-visualize ng data. Gumawa ng listahan ng iba't ibang library na available at tandaan kung alin ang pinakamahusay para sa ibat ibang uri ng mga gawain, halimbawa 2D visualizations vs. 3D visualizations. Ano ang iyong nadiskubre? -## Takdang Aralin +## Takdang-Aralin -[Paggalugad sa visualization](assignment.md) +[Paggalugad sa visualisasyon](assignment.md) --- -**Paunawa**: -Ang dokumentong ito ay isinalin gamit ang AI translation service na [Co-op Translator](https://github.com/Azure/co-op-translator). Bagama't sinisikap naming maging tumpak, tandaan na ang mga awtomatikong pagsasalin ay maaaring maglaman ng mga pagkakamali o hindi pagkakatugma. Ang orihinal na dokumento sa kanyang katutubong wika ang dapat ituring na opisyal na sanggunian. Para sa mahalagang impormasyon, inirerekomenda ang propesyonal na pagsasalin ng tao. Hindi kami mananagot sa anumang hindi pagkakaunawaan o maling interpretasyon na dulot ng paggamit ng pagsasaling ito. \ No newline at end of file + +**Pagtatanggi**: +Ang dokumentong ito ay isinalin gamit ang serbisyo ng AI translation na [Co-op Translator](https://github.com/Azure/co-op-translator). Bagama't nagsusumikap kami para sa katumpakan, pakatandaan na ang awtomatikong pagsasalin ay maaaring maglaman ng mga pagkakamali o hindi pagkakatugma. Ang orihinal na dokumento sa orihinal nitong wika ang dapat ituring na pangunahing sanggunian. Para sa mahahalagang impormasyon, inirerekomenda ang propesyonal na pagsasalin ng tao. Hindi kami mananagot sa anumang maling pagkakaintindi o maling interpretasyon na nagmula sa paggamit ng pagsasaling ito. + \ No newline at end of file diff --git a/translations/tl/2-Regression/2-Data/solution/notebook.ipynb b/translations/tl/2-Regression/2-Data/solution/notebook.ipynb index 76f256223..e5b1726c9 100644 --- a/translations/tl/2-Regression/2-Data/solution/notebook.ipynb +++ b/translations/tl/2-Regression/2-Data/solution/notebook.ipynb @@ -3,7 +3,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "## Linear Regression para sa Mga Kalabasa - Aralin 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": [ + "## Pagpapakita gamit ang Seaborn\n", + "\n", + "[Seaborn](https://seaborn.pydata.org/) ay itinayo sa ibabaw ng Matplotlib at direktang gumagana sa mga dataframe, na ginagawang mabilis ang paggawa ng mga kaakit-akit na estadistikal na mga grap gamit ang napakakaunting code.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Mga scatter plot upang ipakita ang mga ugnayan\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": [ + "### Mga bar chart para ipakita ang mga distribusyon\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**Paunawa**: \nAng dokumentong ito ay isinalin gamit ang AI translation service na [Co-op Translator](https://github.com/Azure/co-op-translator). Bagama't sinisikap naming maging tumpak, pakitandaan na ang mga awtomatikong pagsasalin ay maaaring maglaman ng mga pagkakamali o hindi pagkakatugma. Ang orihinal na dokumento sa orihinal nitong wika ang dapat ituring na opisyal na sanggunian. Para sa mahalagang impormasyon, inirerekomenda ang propesyonal na pagsasalin ng tao. Hindi kami mananagot sa anumang hindi pagkakaunawaan o maling interpretasyon na maaaring magmula sa paggamit ng pagsasaling ito.\n" + "### Mga Heatmap upang ipakita ang mga korelasyon\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**Pagtatanggi**:\nAng dokumentong ito ay isinalin gamit ang serbisyo ng AI translation na [Co-op Translator](https://github.com/Azure/co-op-translator). Bagama't nagsusumikap kami para sa katumpakan, pakatandaan na ang awtomatikong pagsasalin ay maaaring maglaman ng mga pagkakamali o hindi pagkakatugma. Ang orihinal na dokumento sa orihinal nitong wika ang dapat ituring na pangunahing sanggunian. Para sa mahahalagang impormasyon, inirerekomenda ang propesyonal na pagsasalin ng tao. Hindi kami mananagot sa anumang maling pagkakaintindi o maling interpretasyon na nagmula sa paggamit ng pagsasaling ito.\n\n" ] } ], @@ -424,13 +487,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "95726f0b8283628d5356a4f8eb8b4b76", - "translation_date": "2025-08-29T14:58:20+00:00", - "source_file": "2-Regression/2-Data/solution/notebook.ipynb", - "language_code": "tl" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/tl/8-Reinforcement/1-QLearning/README.md b/translations/tl/8-Reinforcement/1-QLearning/README.md index ccd3f1b49..743ee3475 100644 --- a/translations/tl/8-Reinforcement/1-QLearning/README.md +++ b/translations/tl/8-Reinforcement/1-QLearning/README.md @@ -1,47 +1,47 @@ # Panimula sa Reinforcement Learning at Q-Learning -![Buod ng reinforcement sa machine learning sa isang sketchnote](../../../../sketchnotes/ml-reinforcement.png) +![Buod ng reinforcement sa machine learning sa isang sketchnote](../../../../translated_images/tl/ml-reinforcement.94024374d63348db.webp) > Sketchnote ni [Tomomi Imura](https://www.twitter.com/girlie_mac) -Ang reinforcement learning ay may tatlong mahalagang konsepto: ang agent, ilang estado, at isang hanay ng mga aksyon sa bawat estado. Sa pamamagitan ng pagsasagawa ng isang aksyon sa isang tiyak na estado, binibigyan ang agent ng gantimpala. Isipin muli ang laro sa computer na Super Mario. Ikaw si Mario, nasa isang antas ng laro, nakatayo sa gilid ng bangin. Sa itaas mo ay may barya. Ikaw bilang si Mario, nasa isang antas ng laro, sa isang tiyak na posisyon ... iyon ang iyong estado. Ang paggalaw ng isang hakbang pakanan (isang aksyon) ay magdadala sa iyo sa gilid, at magbibigay iyon sa iyo ng mababang numerong puntos. Gayunpaman, ang pagpindot sa pindutan ng pagtalon ay magbibigay-daan sa iyo na makakuha ng puntos at manatiling buhay. Iyon ay isang positibong resulta at dapat kang gantimpalaan ng positibong numerong puntos. +Kinasasangkutan ng reinforcement learning ang tatlong mahahalagang konsepto: ang ahente, ilang estado, at isang set ng mga aksyon bawat estado. Sa pamamagitan ng pagsasagawa ng isang aksyon sa isang tinukoy na estado, ang ahente ay binibigyan ng gantimpala. Isipin muli ang laro sa computer na Super Mario. Ikaw si Mario, nasa isang antas ng laro, nakatayo sa tabi ng gilid ng bangin. Sa itaas mo ay isang barya. Ikaw bilang Mario, sa isang antas ng laro, sa isang tiyak na posisyon ... iyon ang iyong estado. Ang paglipat ng isang hakbang pakanan (isang aksyon) ay magtutulak sa iyo na malaglag sa gilid, at iyon ay magbibigay sa iyo ng mababang numerikal na puntos. Gayunpaman, ang pagpindot sa jump button ay magbibigay-daan sa iyo upang makakuha ng puntos at mananatili kang buhay. Iyon ay isang positibong kinalabasan at dapat kang bigyan ng positibong numerikal na puntos. -Sa pamamagitan ng paggamit ng reinforcement learning at isang simulator (ang laro), maaari mong matutunan kung paano laruin ang laro upang mapakinabangan ang gantimpala, na ang pananatiling buhay at pagkamit ng pinakamaraming puntos hangga't maaari. +Sa pamamagitan ng paggamit ng reinforcement learning at isang simulator (ang laro), maaari mong matutunan kung paano laruin ang laro upang makatanggap ng pinakadakilang gantimpala na nananatiling buhay at nakakakuha ng maraming puntos hangga't maaari. -[![Panimula sa Reinforcement Learning](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) +[![Intro sa Reinforcement Learning](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) -> 🎥 I-click ang imahe sa itaas upang marinig si Dmitry na talakayin ang Reinforcement Learning +> 🎥 I-click ang larawan sa itaas upang pakinggan si Dmitry na tinatalakay ang Reinforcement Learning ## [Pre-lecture quiz](https://ff-quizzes.netlify.app/en/ml/) -## Mga Paunang Kailangan at Setup +## Mga Kinakailangan at Setup -Sa araling ito, mag-eeksperimento tayo gamit ang ilang code sa Python. Dapat mong magawang patakbuhin ang Jupyter Notebook code mula sa araling ito, alinman sa iyong computer o sa cloud. +Sa leksyong ito, mag-eeksperimento tayo gamit ang ilang code sa Python. Dapat kang makapagpatakbo ng Jupyter Notebook code mula sa leksyon na ito, alinman sa iyong computer o sa cloud. -Maaari mong buksan ang [notebook ng aralin](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) at sundan ang araling ito upang bumuo. +Maaari mong buksan ang [lesson notebook](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) at sundan ang leksyon upang makabuo. -> **Note:** Kung binubuksan mo ang code na ito mula sa cloud, kailangan mo ring kunin ang file na [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), na ginagamit sa notebook code. Idagdag ito sa parehong direktoryo ng notebook. +> **Tandaan:** Kung binubuksan mo ang code na ito mula sa cloud, kailangan mo ring kunin ang [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) na file, na ginagamit sa notebook code. Idagdag ito sa parehong direktoryo ng notebook. ## Panimula -Sa araling ito, susuriin natin ang mundo ng **[Peter and the Wolf](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)**, na inspirasyon ng isang musikal na kwento ng isang Russian composer, [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev). Gagamit tayo ng **Reinforcement Learning** upang tulungan si Peter na tuklasin ang kanyang kapaligiran, mangolekta ng masasarap na mansanas, at iwasan ang makaharap ang lobo. +Sa leksyong ito, susuriin natin ang mundo ng **[Peter and the Wolf](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)**, na inspirasyon mula sa isang musikal na kuwentong-bayang isinulat ng isang Ruso na kompositor, si [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev). Gagamitin natin ang **Reinforcement Learning** upang hayaan si Peter na tuklasin ang kanyang paligid, mangalap ng mga masasarap na mansanas at iwasan ang pagharap sa lobo. -Ang **Reinforcement Learning** (RL) ay isang teknik sa pag-aaral na nagbibigay-daan sa atin na matutunan ang optimal na pag-uugali ng isang **agent** sa isang **environment** sa pamamagitan ng pagsasagawa ng maraming eksperimento. Ang agent sa environment na ito ay dapat mayroong **layunin**, na tinutukoy ng isang **reward function**. +**Reinforcement Learning** (RL) ay isang teknik ng pagkatuto na nagbibigay-daan sa atin na matutunan ang pinakamainam na kilos ng isang **ahente** sa ilang **kapaligiran** sa pamamagitan ng maraming eksperimento. Ang isang ahente sa kapaligiran na ito ay dapat magkaroon ng **layunin**, na tinutukoy ng isang **reward function**. -## Ang Kapaligiran +## Ang kapaligiran -Para sa pagiging simple, isipin natin ang mundo ni Peter bilang isang square board na may sukat na `width` x `height`, tulad nito: +Para sa kasimplehan, isipin natin ang mundo ni Peter bilang isang parisukat na board na may sukat na `width` x `height`, ganito: -![Kapaligiran ni Peter](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![Kapaligiran ni Peter](../../../../translated_images/tl/environment.40ba3cb66256c93f.webp) -Ang bawat cell sa board na ito ay maaaring: +Bawat cell sa board na ito ay maaaring: -* **lupa**, kung saan maaaring maglakad si Peter at iba pang nilalang. -* **tubig**, kung saan malinaw na hindi ka maaaring maglakad. -* isang **puno** o **damo**, isang lugar kung saan maaari kang magpahinga. -* isang **mansanas**, na kumakatawan sa isang bagay na ikatutuwa ni Peter na makita upang pakainin ang sarili. -* isang **lobo**, na mapanganib at dapat iwasan. +* **lupa**, kung saan maaaring maglakad si Peter at iba pang mga nilalang. +* **tubig**, na syempre ay hindi maaaring lakaran. +* isang **puno** o **damo**, isang lugar kung saan maaaring magpahinga. +* isang **mansanas**, na kumakatawan sa isang bagay na ikalulugod ni Peter na matagpuan upang mapakain ang kanyang sarili. +* isang **lobo**, na delikado at dapat iwasan. -May hiwalay na Python module, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), na naglalaman ng code upang magtrabaho sa kapaligirang ito. Dahil ang code na ito ay hindi mahalaga para sa pag-unawa sa ating mga konsepto, i-import natin ang module at gamitin ito upang lumikha ng sample board (code block 1): +Mayroong hiwalay na Python module, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), na naglalaman ng code para makatrabaho ang kapaligirang ito. Dahil hindi mahalaga ang code na ito para sa pag-unawa sa ating mga konsepto, i-import natin ang module at gagamitin ito upang gumawa ng sample board (code block 1): ```python from rlboard import * @@ -52,63 +52,63 @@ m.randomize(seed=13) m.plot() ``` -Ang code na ito ay dapat mag-print ng larawan ng kapaligiran na katulad ng nasa itaas. +Dapat ipakita ng code na ito ang isang larawan ng kapaligiran na katulad ng nasa itaas. -## Mga Aksyon at Patakaran +## Mga aksyon at polisiya -Sa ating halimbawa, ang layunin ni Peter ay makahanap ng mansanas, habang iniiwasan ang lobo at iba pang hadlang. Upang magawa ito, maaari siyang maglakad-lakad hanggang sa makita niya ang mansanas. +Sa ating halimbawa, layunin ni Peter na matagpuan ang isang mansanas, habang iniiwasan ang lobo at iba pang mga balakid. Upang magawa ito, maaari siyang maglakad hanggang matagpuan niya ang mansanas. -Samakatuwid, sa anumang posisyon, maaari siyang pumili sa isa sa mga sumusunod na aksyon: pataas, pababa, pakaliwa, at pakanan. +Kaya, sa anumang posisyon, maaari siyang pumili mula sa mga sumusunod na aksyon: pataas, pababa, pakaliwa at pakanan. -Itatakda natin ang mga aksyon bilang isang diksyunaryo, at i-map ang mga ito sa mga pares ng kaukulang pagbabago sa coordinate. Halimbawa, ang paggalaw pakanan (`R`) ay tumutugma sa pares `(1,0)`. (code block 2): +Itutukoy natin ang mga aksyon na ito bilang isang diksyunaryo, at ima-map ang mga ito sa mga pares ng kaukulang pagbabago sa koordinado. Halimbawa, ang paggalaw pakanan (`R`) ay tumutugma sa pares na `(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()) } ``` -Sa kabuuan, ang estratehiya at layunin ng senaryong ito ay ang mga sumusunod: +Upang ibuod, ang estratehiya at layunin ng senaryong ito ay ang mga sumusunod: -- **Ang estratehiya**, ng ating agent (Peter) ay tinutukoy ng tinatawag na **policy**. Ang policy ay isang function na nagbabalik ng aksyon sa anumang ibinigay na estado. Sa ating kaso, ang estado ng problema ay kinakatawan ng board, kabilang ang kasalukuyang posisyon ng player. +- **Ang estratehiya**, ng ating ahente (si Peter) ay tinutukoy ng tinatawag na **polisiya**. Ang polisiya ay isang function na nagbabalik ng aksyon sa anumang ibinigay na estado. Sa ating kaso, ang estado ng problema ay kinakatawan ng board, kabilang ang kasalukuyang posisyon ng manlalaro. -- **Ang layunin**, ng reinforcement learning ay sa huli matutunan ang isang mahusay na policy na magpapahintulot sa atin na malutas ang problema nang mahusay. Gayunpaman, bilang baseline, isaalang-alang natin ang pinakasimpleng policy na tinatawag na **random walk**. +- **Ang layunin**, ng reinforcement learning ay sa huli ay matutunan ang isang mabuting polisiya na magpapahintulot sa atin na malutas ang problema nang episyente. Gayunpaman, bilang panimulang punto, isaalang-alang natin ang pinakasimpleng polisiya na tinatawag na **random walk**. ## Random walk -Unahin nating lutasin ang ating problema sa pamamagitan ng pagpapatupad ng random walk strategy. Sa random walk, pipiliin natin nang random ang susunod na aksyon mula sa mga pinapayagang aksyon, hanggang sa maabot natin ang mansanas (code block 3). +Unahin nating lutasin ang ating problema sa pamamagitan ng pagpapatupad ng isang estratehiya ng random walk. Sa random walk, pipili tayo nang random ng susunod na aksyon mula sa mga pinapahintulutang aksyon, hanggang sa maabot natin ang mansanas (code block 3). -1. Ipatupad ang random walk gamit ang code sa ibaba: +1. Ipatupad ang random walk gamit ang kodigo sa ibaba: ```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 # bilang ng mga hakbang + # itakda ang panimulang posisyon if start_position: m.human = start_position else: m.random_start() while True: if m.at() == Board.Cell.apple: - return n # success! + return n # tagumpay! if m.at() in [Board.Cell.wolf, Board.Cell.water]: - return -1 # eaten by wolf or drowned + return -1 # kinain ng lobo o nalunod 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) # isagawa ang aktwal na galaw break n+=1 walk(m,random_policy) ``` - Ang tawag sa `walk` ay dapat magbalik ng haba ng kaukulang landas, na maaaring mag-iba mula sa isang run patungo sa isa pa. + Ang tawag sa `walk` ay dapat bumalik ng haba ng kaukulang landas, na maaaring mag-iba sa bawat pagtakbo. -1. Patakbuhin ang walk experiment nang ilang beses (sabihin, 100), at i-print ang mga resulta ng istatistika (code block 4): +1. Patakbuhin ang walk experiment ng ilang ulit (halimbawa, 100), at i-print ang mga resulta ng estadistika (code block 4): ```python def print_statistics(policy): @@ -125,17 +125,17 @@ Unahin nating lutasin ang ating problema sa pamamagitan ng pagpapatupad ng rando print_statistics(random_policy) ``` - Tandaan na ang average na haba ng landas ay nasa paligid ng 30-40 hakbang, na medyo marami, kung isasaalang-alang ang katotohanan na ang average na distansya sa pinakamalapit na mansanas ay nasa paligid ng 5-6 hakbang. + Pansinin na ang average na haba ng isang landas ay nasa paligid ng 30-40 hakbang, na medyo marami, kung ikukumpara na ang average na distansya sa pinakamalapit na mansanas ay nasa 5-6 hakbang lamang. - Maaari mo ring makita kung ano ang hitsura ng galaw ni Peter sa random walk: + Maaari mo ring makita kung ano ang hitsura ng paggalaw ni Peter habang nasa random walk: ![Random Walk ni Peter](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) ## Reward function -Upang gawing mas matalino ang ating policy, kailangan nating maunawaan kung aling mga galaw ang "mas mabuti" kaysa sa iba. Upang magawa ito, kailangan nating tukuyin ang ating layunin. +Upang maging mas matalino ang ating polisiya, kailangan nating maunawaan kung alin sa mga galaw ang "mas mabuti" kaysa sa iba. Upang magawa ito, kailangan nating tukuyin ang ating layunin. -Ang layunin ay maaaring tukuyin sa mga tuntunin ng isang **reward function**, na magbabalik ng ilang halaga ng puntos para sa bawat estado. Ang mas mataas na numero, mas maganda ang reward function. (code block 5) +Maaari nating tukuyin ang layunin sa pamamagitan ng isang **reward function**, na magbabalik ng ilang halaga ng puntos para sa bawat estado. Mas mataas ang numero, mas mabuti ang reward function. (code block 5) ```python move_reward = -0.1 @@ -154,39 +154,115 @@ def reward(m,pos=None): return move_reward ``` -Isang kawili-wiling bagay tungkol sa reward functions ay sa karamihan ng mga kaso, *binibigyan lamang tayo ng makabuluhang gantimpala sa dulo ng laro*. Nangangahulugan ito na ang ating algorithm ay dapat na alalahanin ang "magagandang" hakbang na humantong sa positibong gantimpala sa dulo, at dagdagan ang kanilang kahalagahan. Katulad nito, ang lahat ng galaw na humantong sa masamang resulta ay dapat na iwasan. +Isang kawili-wiling bagay tungkol sa mga reward functions ay sa karamihan ng mga kaso, *binibigyan lang tayo ng malaking gantimpala sa dulo ng laro*. Nangangahulugan ito na ang ating algorithm ay dapat may kakayahang tandaan ang mga "magandang" hakbang na nagdala sa positibong gantimpala sa dulo, at dagdagan ang kahalagahan nito. Gayundin, lahat ng galaw na nagdala sa masamang resulta ay dapat na hadlangan. ## Q-Learning -Ang algorithm na tatalakayin natin dito ay tinatawag na **Q-Learning**. Sa algorithm na ito, ang policy ay tinutukoy ng isang function (o isang data structure) na tinatawag na **Q-Table**. Itinatala nito ang "kabutihan" ng bawat aksyon sa isang ibinigay na estado. +Ang isang algorithm na tatalakayin natin dito ay tinatawag na **Q-Learning**. Sa algorithm na ito, ang polisiya ay tinutukoy ng isang function (o isang istraktura ng data) na tinatawag na **Q-Table**. Itinatala nito ang "kabutihan" ng bawat isa sa mga aksyon sa isang partikular na estado. -Tinatawag itong Q-Table dahil madalas na maginhawa itong i-representa bilang isang table, o multi-dimensional array. Dahil ang ating board ay may sukat na `width` x `height`, maaari nating i-representa ang Q-Table gamit ang isang numpy array na may hugis na `width` x `height` x `len(actions)`: (code block 6) +Tinawag itong Q-Table dahil madalas itong isinasalarawan bilang isang table, o multi-dimensional array. Dahil ang ating board ay may sukat na `width` x `height`, maaari nating ilarawan ang Q-Table gamit ang isang numpy array na may hugis na `width` x `height` x `len(actions)`: (code block 6) ```python Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions) ``` -Pansinin na ini-initialize natin ang lahat ng mga halaga ng Q-Table sa pantay na halaga, sa ating kaso - 0.25. Ito ay tumutugma sa "random walk" policy, dahil ang lahat ng galaw sa bawat estado ay pantay na mabuti. Maaari nating ipasa ang Q-Table sa `plot` function upang i-visualize ang table sa board: `m.plot(Q)`. +Pansinin na ini-initialize natin ang lahat ng mga halaga ng Q-Table sa pantay na halaga, sa ating kaso - 0.25. Ito ay tumutugma sa polisiya ng "random walk", dahil lahat ng galaw sa bawat estado ay pantay na mabuti. Maaari nating ipasa ang Q-Table sa function na `plot` upang makita ang talahanayan sa board: `m.plot(Q)`. -![Kapaligiran ni Peter](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![Kapaligiran ni Peter](../../../../translated_images/tl/env_init.04e8f26d2d60089e.webp) -Sa gitna ng bawat cell ay may "arrow" na nagpapahiwatig ng ginustong direksyon ng paggalaw. Dahil pantay ang lahat ng direksyon, isang tuldok ang ipinapakita. +Sa gitna ng bawat cell ay mayroong isang "pana" na nagpapahiwatig ng pinaprefer na direksyon ng pagkilos. Dahil pantay-pantay ang lahat ng direksyon, isang tuldok ang ipinapakita. -Ngayon kailangan nating patakbuhin ang simulation, tuklasin ang ating kapaligiran, at matutunan ang mas mahusay na distribusyon ng mga halaga ng Q-Table, na magpapahintulot sa atin na mahanap ang landas patungo sa mansanas nang mas mabilis. +Ngayon kailangan nating patakbuhin ang simulasyon, tuklasin ang ating kapaligiran, at matutunan ang mas mahusay na distribusyon ng halaga ng Q-Table, na magpapahintulot sa atin na mabilis na mahanap ang landas patungo sa mansanas. -## Ang Esensya ng Q-Learning: Bellman Equation +## Kahulugan ng Q-Learning: Bellman Equation -Kapag nagsimula na tayong gumalaw, ang bawat aksyon ay magkakaroon ng kaukulang gantimpala, ibig sabihin maaari nating teoretikal na piliin ang susunod na aksyon batay sa pinakamataas na agarang gantimpala. Gayunpaman, sa karamihan ng mga estado, ang galaw ay hindi makakamit ang ating layunin na maabot ang mansanas, at sa gayon hindi natin agad matutukoy kung aling direksyon ang mas mabuti. +Kapag nagsimula na tayong gumalaw, ang bawat aksyon ay magkakaroon ng kaukulang gantimpala, i.e. teoritikal na maaari nating piliin ang susunod na aksyon batay sa pinakamataas na agarang gantimpala. Gayunpaman, sa karamihan ng mga estado, ang galaw ay hindi makakamit ang ating layunin na maabot ang mansanas, kaya hindi natin agarang matutukoy kung aling direksyon ang mas mahusay. -> Tandaan na hindi ang agarang resulta ang mahalaga, kundi ang panghuling resulta, na makukuha natin sa dulo ng simulation. +> Tandaan na hindi ang agarang resulta ang mahalaga, kundi ang huling resulta, na makukuha natin sa pagtatapos ng simulasyon. -Upang isaalang-alang ang naantalang gantimpala, kailangan nating gamitin ang mga prinsipyo ng **[dynamic programming](https://en.wikipedia.org/wiki/Dynamic_programming)**, na nagbibigay-daan sa atin na isipin ang ating problema nang recursive. +Upang isaalang-alang ang delayed reward na ito, kailangan nating gamitin ang mga prinsipyo ng **[dynamic programming](https://en.wikipedia.org/wiki/Dynamic_programming)**, na nagbibigay-daan sa atin na pag-isipan ang ating problema nang recursive. -Ipagpalagay na tayo ay nasa estado *s* ngayon, at nais nating lumipat sa susunod na estado *s'*. Sa paggawa nito, makakatanggap tayo ng agarang gantimpala *r(s,a)*, na tinutukoy ng reward function, kasama ang ilang hinaharap na gantimpala. Kung ipagpalagay natin na ang ating Q-Table ay tama na sumasalamin sa "kaakit-akit" ng bawat aksyon, kung gayon sa estado *s'* pipili tayo ng aksyon *a* na tumutugma sa maximum na halaga ng *Q(s',a')*. Kaya, ang pinakamahusay na posibleng hinaharap na gantimpala na maaari nating makuha sa estado *s* ay tinutukoy bilang `max` +Ipinalagay na tayo ay nasa estado *s* ngayon, at nais nating lumipat sa susunod na estado *s'*. Sa paggawa nito, makakatanggap tayo ng agarang gantimpala *r(s,a)*, na tinukoy ng reward function, kasama ng ilang gantimpala sa hinaharap. Kung ipagpapalagay nating tama ang representasyon ng ating Q-Table sa "kapakipakinabang" ng bawat aksyon, sa estado *s'* pipili tayo ng aksyon *a* na tumutugma sa maximum na halaga ng *Q(s',a')*. Kaya, ang pinakamainam na gantimpala sa hinaharap na maaari nating makuha sa estado *s* ay itutukoy bilang `max`a'*Q(s',a')* (ang maximum dito ay kinakalkula sa lahat ng posibleng aksyon *a'* sa estado *s'*). -## Pagsusuri ng polisiya +Ito ang nagbibigay ng **Bellman formula** para sa pagkalkula ng halaga ng Q-Table sa estado *s*, ibinigay ang aksyon *a*: -Dahil ang Q-Table ay naglilista ng "kaakit-akit" ng bawat aksyon sa bawat estado, madali itong gamitin upang tukuyin ang epektibong pag-navigate sa ating mundo. Sa pinakasimpleng kaso, maaari nating piliin ang aksyon na may pinakamataas na Q-Table value: (code block 9) + + +Dito γ ay ang tinatawag na **discount factor** na tumutukoy kung hanggang saan mo gustong pahalagahan ang kasalukuyang gantimpala kumpara sa gantimpala sa hinaharap at vice versa. + +## Algorithm ng Pagkatuto + +Batay sa ekwasyon sa itaas, maaari na nating isulat ang pseudo-code para sa ating learning algorithm: + +* I-initialize ang Q-Table Q na may pantay-pantay na numero para sa lahat ng estado at aksyon +* Itakda ang learning rate α ← 1 +* Ulitin ang simulasyon nang maraming beses + 1. Magsimula sa random na posisyon + 1. Ulitin + 1. Pumili ng aksyon *a* sa estado *s* + 2. Isagawa ang aksyon sa pamamagitan ng paglipat sa bagong estado *s'* + 3. Kung makaharap tayo ng end-of-game condition, o maliit lang ang kabuuang gantimpala - lumabas sa simulasyon + 4. Kalkulahin ang gantimpala *r* sa bagong estado + 5. I-update ang Q-Function ayon sa Bellman equation: *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ maxa'Q(s',a'))* + 6. *s* ← *s'* + 7. I-update ang kabuuang gantimpala at bawasan ang α. + +## Exploit kumpara sa explore + +Sa algorithm sa itaas, hindi natin tinukoy kung paano eksaktong pipili ng aksyon sa hakbang 2.1. Kung pipili tayo ng aksyon nang random, mag-eexplore tayo nang random sa kapaligiran, at malamang na madalas tayong mamatay gayundin mag-eexplore ng mga lugar na hindi natin karaniwang pupuntahan. Isang alternatibong paraan ay ang **exploit** ng Q-Table values na alam na natin, at kaya pipiliin ang pinakamahusay na aksyon (na may mas mataas na Q-Table value) sa estado *s*. Gayunpaman, pipigilan tayo nito mula sa pag-explore ng ibang mga estado, at malamang na hindi natin mahahanap ang pinakamainam na solusyon. + +Kaya, ang pinakamahusay na paraan ay magkaroon ng balanse sa pagitan ng exploration at exploitation. Magagawa ito sa pamamagitan ng pagpili ng aksyon sa estado *s* na may mga probabilidad na proporsyonal sa mga halaga sa Q-Table. Sa simula, kapag pantay-pantay ang mga halaga ng Q-Table, ito ay magiging katulad ng random na pagpili, ngunit habang mas maraming nalalaman natin tungkol sa ating kapaligiran, magiging mas malamang na sundan natin ang pinakamainam na ruta habang pinapayagan ang ahente na paminsan-minsang pumili ng hindi pa natutuklasang landas. + +## Implementasyon sa Python + +Handa na tayo ngayon upang ipatupad ang learning algorithm. Bago natin gawin iyon, kailangan din natin ng isang function na magko-convert ng arbitraryong mga numero sa Q-Table sa isang vector ng mga probabilidad para sa mga kaukulang aksyon. + +1. Gumawa ng function na `probs()`: + + ```python + def probs(v,eps=1e-4): + v = v-v.min()+eps + v = v/v.sum() + return v + ``` + + Nagdagdag tayo ng ilang `eps` sa orihinal na vector upang maiwasan ang paghahati sa 0 sa unang kaso, kung saan lahat ng bahagi ng vector ay magkapareho. + +Patakbuhin ang learning algorithm sa pamamagitan ng 5000 eksperimento, na tinatawag ding **epochs**: (code block 8) +```python + for epoch in range(5000): + + # Pumili ng panimulang punto + m.random_start() + + # Magsimulang maglakbay + 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) # Pinapayagan naming lumabas ang manlalaro sa board, na nagtatapos sa 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 +``` + +Pagkatapos patakbuhin ang algorithm na ito, ang Q-Table ay dapat na na-update ng mga halagang naglalarawan ng atraksyon ng iba't ibang aksyon sa bawat hakbang. Maaari nating subukang biswal na ipakita ang Q-Table sa pamamagitan ng pagplor ng vector sa bawat cell na magtuturo sa nais na direksyon ng pagkilos. Para sa kasimplehan, gumuhit tayo ng maliit na bilog imbis na arrow head. + + + +## Pag-check ng polisiya + +Dahil ang Q-Table ay naglilista ng "kapakinabangan" ng bawat aksyon sa bawat estado, madali itong gamitin upang tukuyin ang episyenteng paglalakbay sa ating mundo. Sa pinakasimpleng kaso, maaari nating piliin ang aksyon na may pinakamataas na halaga sa Q-Table: (code block 9) ```python def qpolicy_strict(m): @@ -198,17 +274,18 @@ def qpolicy_strict(m): walk(m,qpolicy_strict) ``` -> Kapag sinubukan mo ang code sa itaas nang ilang beses, mapapansin mo na minsan ito ay "naghahang", at kailangan mong pindutin ang STOP button sa notebook upang ihinto ito. Nangyayari ito dahil maaaring may mga sitwasyon kung saan ang dalawang estado ay "nagtuturo" sa isa't isa batay sa optimal na Q-Value, na nagreresulta sa agent na paulit-ulit na gumagalaw sa pagitan ng mga estadong iyon. + +> Kung susubukan mo ang code sa itaas nang ilang ulit, maaaring mapansin mo na minsan ito ay "nahuhuli", at kailangan mong pindutin ang STOP button sa notebook upang interrupt ito. Nangyayari ito dahil maaaring may mga sitwasyon kung saan ang dalawang estado ay "nagtuturo" sa isa't isa sa terminong ng optimal na Q-Value, kung saan ang ahente ay nauuwi sa paggalaw sa pagitan ng mga estadong iyon nang walang katapusan. ## 🚀Hamunin -> **Gawain 1:** Baguhin ang `walk` function upang limitahan ang maximum na haba ng landas sa isang tiyak na bilang ng mga hakbang (halimbawa, 100), at panoorin ang code sa itaas na bumalik sa halagang ito paminsan-minsan. +> **Gawain 1:** Baguhin ang `walk` function upang limitahan ang maximum na haba ng landas sa isang tiyak na bilang ng mga hakbang (sabihin nating 100), at panoorin ang code sa itaas na ibalik ang halagang ito paminsan-minsan. -> **Gawain 2:** Baguhin ang `walk` function upang hindi ito bumalik sa mga lugar na napuntahan na nito dati. Maiiwasan nito ang `walk` na mag-loop, ngunit maaari pa ring ma-"trap" ang agent sa isang lokasyon na hindi nito matakasan. +> **Gawain 2:** Baguhin ang `walk` function upang hindi ito bumalik sa mga lugar kung saan ito ay nakapunta na dati. Mapipigilan nito ang `walk` na paulit-ulit, ngunit maaari pa rin ang ahente na "mapitik" sa isang lokasyon kung saan hindi ito makakatakas. -## Pag-navigate +## Navigasyon -Mas magandang polisiya sa pag-navigate ang ginamit natin noong training, na pinagsasama ang exploitation at exploration. Sa polisiya na ito, pipiliin natin ang bawat aksyon na may tiyak na probabilidad, na proporsyonal sa mga halaga sa Q-Table. Ang estratehiyang ito ay maaaring magresulta pa rin sa agent na bumalik sa posisyon na napuntahan na nito, ngunit, tulad ng makikita mo sa code sa ibaba, nagreresulta ito sa napakaikling average na landas patungo sa nais na lokasyon (tandaan na ang `print_statistics` ay nagpapatakbo ng simulation nang 100 beses): (code block 10) +Ang mas mabuting patakaran sa navigasyon ay ang ginamit natin sa panahon ng pagsasanay, na pinagsasama ang exploitation at exploration. Sa patakarang ito, pipili tayo ng bawat aksyon na may tiyak na probabilidad, na proporsyonal sa mga halaga sa Q-Table. Ang estrategiyang ito ay maaari pa ring magresulta sa pagbabalik ng ahente sa isang posisyon na kanyang nasiyasat na, ngunit, tulad ng makikita mo sa code sa ibaba, nagreresulta ito sa napakaikling karaniwang landas patungo sa nais na lokasyon (tandaan na ang `print_statistics` ay nagpapatakbo ng simulation nang 100 beses): (code block 10) ```python def qpolicy(m): @@ -222,26 +299,30 @@ print_statistics(qpolicy) Pagkatapos patakbuhin ang code na ito, dapat kang makakuha ng mas maliit na average na haba ng landas kaysa dati, sa saklaw na 3-6. -## Pagsisiyasat sa proseso ng pag-aaral +## Pagsusuri sa proseso ng pagkatuto + +Tulad ng nabanggit namin, ang proseso ng pagkatuto ay isang balanse sa pagitan ng exploration at exploitation ng nalinang na kaalaman tungkol sa estruktura ng espasyo ng problema. Nakita natin na ang mga resulta ng pagkatuto (ang kakayahan na tulungan ang isang ahente na makahanap ng maikling landas patungo sa layunin) ay bumuti, ngunit kawili-wili ring obserbahan kung paano kumikilos ang average na haba ng landas sa panahon ng proseso ng pagkatuto: -Tulad ng nabanggit, ang proseso ng pag-aaral ay balanse sa pagitan ng exploration at paggamit ng nakuha nang kaalaman tungkol sa istruktura ng problem space. Nakita natin na ang resulta ng pag-aaral (ang kakayahang tulungan ang agent na makahanap ng maikling landas patungo sa layunin) ay bumuti, ngunit interesante ring obserbahan kung paano nagbabago ang average na haba ng landas sa panahon ng proseso ng pag-aaral: + -## Mga natutunan +Ang mga natutunan ay maaaring ibuod bilang: -- **Tumataas ang average na haba ng landas**. Sa simula, ang average na haba ng landas ay tumataas. Malamang ito ay dahil kapag wala tayong alam tungkol sa kapaligiran, mas malamang na ma-trap tayo sa masamang estado, tulad ng tubig o lobo. Habang natututo tayo at nagsisimulang gamitin ang kaalamang ito, mas matagal nating ma-explore ang kapaligiran, ngunit hindi pa rin natin alam nang maayos kung nasaan ang mga mansanas. +- **Tumataas ang average na haba ng landas**. Nakikita natin dito na sa simula, tumataas ang average na haba ng landas. Marahil ito ay dahil kapag wala tayong alam tungkol sa kapaligiran, malamang na maipit tayo sa mga hindi magandang estado, tubig o lobo. Habang natututo tayo nang higit pa at nagsisimulang gamitin ang kaalamang ito, maaari nating tuklasin ang kapaligiran nang mas matagal, ngunit hindi pa rin natin masyadong alam kung saan ang mga mansanas. -- **Bumaba ang haba ng landas habang natututo**. Kapag sapat na ang natutunan, mas madali para sa agent na maabot ang layunin, at nagsisimulang bumaba ang haba ng landas. Gayunpaman, bukas pa rin tayo sa exploration, kaya madalas tayong lumihis mula sa pinakamahusay na landas at mag-explore ng mga bagong opsyon, na nagpapahaba sa landas kaysa sa optimal. +- **Bumababa ang haba ng landas, habang mas natututo tayo**. Kapag natututo na tayo nang sapat, mas madali para sa ahente na marating ang layunin, at nagsisimulang bumaba ang haba ng landas. Gayunpaman, bukas pa rin tayo sa exploration, kaya madalas tayong lumalayo sa pinakamahusay na landas, at sumusubok ng mga bagong opsyon, na nagpapahaba ng landas kaysa optimal. -- **Biglang tumataas ang haba**. Mapapansin din natin sa graph na sa isang punto, biglang tumataas ang haba. Ipinapakita nito ang stochastic na kalikasan ng proseso, at na maaari nating "masira" ang mga coefficient ng Q-Table sa pamamagitan ng pag-overwrite ng mga ito ng mga bagong halaga. Dapat itong mabawasan sa pamamagitan ng pagpapababa ng learning rate (halimbawa, sa pagtatapos ng training, ina-adjust lang natin ang mga halaga ng Q-Table nang kaunti). +- **Biglang tumataas ang haba**. Napapansin din natin sa grap na ito na sa ilang punto, biglang tumaas ang haba. Ito ay nagpapahiwatig ng stochastic na katangian ng proseso, at na maaari nating "masira" ang mga coefficient ng Q-Table sa ilang punto sa pamamagitan ng pagsulat ng mga ito gamit ang mga bagong halaga. Dapat itong mabawasan sa pamamagitan ng pagbaba ng learning rate (halimbawa, sa pagtatapos ng pagsasanay, binabago lang natin ang mga halaga ng Q-Table sa maliit na halaga). -Sa kabuuan, mahalagang tandaan na ang tagumpay at kalidad ng proseso ng pag-aaral ay malaki ang nakadepende sa mga parameter, tulad ng learning rate, learning rate decay, at discount factor. Ang mga ito ay madalas tawaging **hyperparameters**, upang maiba sa **parameters**, na ina-optimize natin sa panahon ng training (halimbawa, mga coefficient ng Q-Table). Ang proseso ng paghahanap ng pinakamahusay na halaga ng hyperparameters ay tinatawag na **hyperparameter optimization**, at ito ay karapat-dapat sa hiwalay na paksa. +Sa pangkalahatan, mahalagang tandaan na ang tagumpay at kalidad ng proseso ng pagkatuto ay malaki ang nakasalalay sa mga parameter, gaya ng learning rate, learning rate decay, at discount factor. Karaniwang tinatawag ang mga ito na **hyperparameters**, upang maiba ito sa mga **parameters**, na ina-optimize natin sa panahon ng pagsasanay (halimbawa, mga coefficient ng Q-Table). Ang proseso ng paghahanap ng pinakamagandang halaga ng hyperparameter ay tinatawag na **hyperparameter optimization**, at ito ay nararapat ng hiwalay na paksa. ## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ml/) -## Takdang-Aralin -[A Mas Realistikong Mundo](assignment.md) +## Takdang Aralin +[Isang Mas Realistikong Mundo](assignment.md) --- -**Paunawa**: -Ang dokumentong ito ay isinalin gamit ang AI translation service na [Co-op Translator](https://github.com/Azure/co-op-translator). Bagama't sinisikap naming maging tumpak, tandaan na ang mga awtomatikong pagsasalin ay maaaring maglaman ng mga pagkakamali o hindi pagkakatugma. Ang orihinal na dokumento sa kanyang katutubong wika ang dapat ituring na opisyal na sanggunian. Para sa mahalagang impormasyon, inirerekomenda ang propesyonal na pagsasalin ng tao. Hindi kami mananagot sa anumang hindi pagkakaunawaan o maling interpretasyon na maaaring magmula sa paggamit ng pagsasaling ito. \ No newline at end of file + +**Pagtatanggi**: +Ang dokumentong ito ay isinalin gamit ang serbisyo ng AI translation na [Co-op Translator](https://github.com/Azure/co-op-translator). Bagama't nagsusumikap kami para sa katumpakan, pakatandaan na ang awtomatikong pagsasalin ay maaaring maglaman ng mga pagkakamali o hindi pagkakatugma. Ang orihinal na dokumento sa orihinal nitong wika ang dapat ituring na pangunahing sanggunian. Para sa mahahalagang impormasyon, inirerekomenda ang propesyonal na pagsasalin ng tao. Hindi kami mananagot sa anumang maling pagkakaintindi o maling interpretasyon na nagmula sa paggamit ng pagsasaling ito. + \ No newline at end of file diff --git a/translations/tl/8-Reinforcement/2-Gym/README.md b/translations/tl/8-Reinforcement/2-Gym/README.md index 63c41202b..af6a982bb 100644 --- a/translations/tl/8-Reinforcement/2-Gym/README.md +++ b/translations/tl/8-Reinforcement/2-Gym/README.md @@ -1,14 +1,34 @@ -## Mga Paunang Kaalaman +# CartPole Skating -Sa araling ito, gagamit tayo ng library na tinatawag na **OpenAI Gym** upang mag-simulate ng iba't ibang **kapaligiran**. Maaari mong patakbuhin ang code ng araling ito nang lokal (halimbawa, mula sa Visual Studio Code), kung saan magbubukas ang simulation sa isang bagong window. Kapag pinapatakbo ang code online, maaaring kailanganin mong gumawa ng ilang pagbabago sa code, tulad ng inilarawan [dito](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7). +Ang problemang tinutugunan natin sa nakaraang aralin ay maaaring parang larong laro lamang, hindi talaga naaangkop sa mga totoong sitwasyon sa buhay. Ngunit hindi ito ang kaso, dahil maraming totoong problema sa mundo ang may katulad na sitwasyon - kabilang ang paglalaro ng Chess o Go. Magkakatulad sila, dahil mayroon din tayong board na may mga itinakdang patakaran at isang **diskretong estado**. + +## [Pre-lecture quiz](https://ff-quizzes.netlify.app/en/ml/) + +## Panimula + +Sa araling ito ay gagamitin natin ang parehong mga prinsipyo ng Q-Learning sa isang problemang may **tuloy-tuloy na estado**, ibig sabihin, ang estado ay ibinibigay ng isa o higit pang mga totoong numero. Tututukan natin ang sumusunod na problema: + +> **Problema**: Kung nais ni Peter na makatakas mula sa lobo, kailangan niyang makagalaw nang mas mabilis. Makikita natin kung paano matututo si Peter na mag-skate, partikular, kung paano mapanatili ang balanse, gamit ang Q-Learning. + +![The great escape!](../../../../translated_images/tl/escape.18862db9930337e3.webp) + +> Nagiging malikhain si Peter at ang kanyang mga kaibigan para makatakas sa lobo! Larawan mula kay [Jen Looper](https://twitter.com/jenlooper) + +Gagamit tayo ng isang pinaikling bersyon ng pagbalanse na kilala bilang **CartPole** problema. Sa mundo ng cartpole, mayroon tayong pahalang na slider na maaaring ilipat pakaliwa o pakanan, at ang layunin ay balansehin ang isang patayong poste sa ibabaw ng slider. + +a cartpole + +## Mga Kinakailangan + +Sa araling ito, gagamit tayo ng isang library na tinatawag na **OpenAI Gym** upang simulahin ang iba't ibang **kapaligiran**. Maaari mong patakbuhin ang code ng araling ito nang lokal (hal., mula sa Visual Studio Code), kung saan ang simulation ay magbubukas sa bagong bintana. Kapag tumakbo ang code online, maaaring kailangan mong gumawa ng ilang pagbabago sa code, gaya ng nakasaad [dito](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7). ## OpenAI Gym -Sa nakaraang aralin, ang mga patakaran ng laro at ang estado ay ibinigay ng `Board` class na tayo mismo ang nagtakda. Dito, gagamit tayo ng isang espesyal na **simulation environment**, na magsi-simulate ng pisika sa likod ng balancing pole. Isa sa mga pinakasikat na simulation environment para sa pagsasanay ng reinforcement learning algorithms ay tinatawag na [Gym](https://gym.openai.com/), na pinapanatili ng [OpenAI](https://openai.com/). Sa pamamagitan ng paggamit ng gym na ito, maaari tayong lumikha ng iba't ibang **kapaligiran** mula sa cartpole simulation hanggang sa mga laro ng Atari. +Sa nakaraang aralin, ang mga patakaran ng laro at ang estado ay ibinigay ng `Board` na klase na ating inilagay. Dito gagamit tayo ng isang espesyal na **simulation environment**, na magsisimula ng pisika sa likod ng balanse ng poste. Isa sa mga pinakasikat na simulation environment para sa pagsasanay ng mga reinforcement learning algorithm ay tinatawag na [Gym](https://gym.openai.com/), na pinangangasiwaan ng [OpenAI](https://openai.com/). Sa pamamagitan ng paggamit ng gym na ito, maaari tayong gumawa ng iba't ibang **kapaligiran** mula sa simulation ng cartpole hanggang sa mga larong Atari. -> **Note**: Makikita mo ang iba pang mga kapaligiran na available mula sa OpenAI Gym [dito](https://gym.openai.com/envs/#classic_control). +> **Tandaan**: Maaari mong makita ang iba pang mga kapaligiran mula sa OpenAI Gym [dito](https://gym.openai.com/envs/#classic_control). -Una, mag-install ng gym at i-import ang mga kinakailangang library (code block 1): +Una, i-install natin ang gym at i-import ang mga kinakailangang library (code block 1): ```python import sys @@ -20,15 +40,15 @@ import numpy as np import random ``` -## Ehersisyo - I-initialize ang isang cartpole environment +## Ehersisyo - i-initialize ang cartpole environment -Upang magtrabaho sa problema ng cartpole balancing, kailangan nating i-initialize ang kaukulang kapaligiran. Ang bawat kapaligiran ay nauugnay sa: +Para magtrabaho sa problemang pagbalanse ng cartpole, kailangan nating i-initialize ang kaukulang environment. Ang bawat environment ay may kaugnayan sa isang: -- **Observation space** na tumutukoy sa istruktura ng impormasyon na natatanggap natin mula sa kapaligiran. Para sa problema ng cartpole, natatanggap natin ang posisyon ng pole, bilis, at ilang iba pang mga halaga. +- **Observation space** na nagtutukoy ng istruktura ng impormasyong natatanggap natin mula sa environment. Sa cartpole na problema, natatanggap natin ang posisyon ng poste, bilis, at ilan pang mga halaga. -- **Action space** na tumutukoy sa mga posibleng aksyon. Sa ating kaso, ang action space ay discrete, at binubuo ng dalawang aksyon - **kaliwa** at **kanan**. (code block 2) +- **Action space** na nagtutukoy ng mga posibleng aksyon. Sa ating kaso, ang action space ay discrete, at binubuo ng dalawang aksyon - **kaliwa** at **kanan**. (code block 2) -1. Upang mag-initialize, i-type ang sumusunod na code: +1. Para i-initialize, i-type ang sumusunod na code: ```python env = gym.make("CartPole-v1") @@ -37,11 +57,11 @@ Upang magtrabaho sa problema ng cartpole balancing, kailangan nating i-initializ print(env.action_space.sample()) ``` -Upang makita kung paano gumagana ang kapaligiran, magpatakbo ng maikling simulation para sa 100 hakbang. Sa bawat hakbang, nagbibigay tayo ng isa sa mga aksyon na gagawin - sa simulation na ito, random lang nating pinipili ang isang aksyon mula sa `action_space`. +Para makita kung paano gumagana ang environment, patakbuhin natin ang isang maikling simulation na may 100 hakbang. Sa bawat hakbang, magbibigay tayo ng isa sa mga aksyon na gagawin - sa simulation na ito ay pipili lamang tayo nang random ng aksyon mula sa `action_space`. -1. Patakbuhin ang code sa ibaba at tingnan kung ano ang resulta. +1. Patakbuhin ang code sa ibaba at tingnan kung ano ang mangyayari. - ✅ Tandaan na mas mainam na patakbuhin ang code na ito sa lokal na Python installation! (code block 3) + ✅ Tandaan na mas mainam patakbuhin ang code na ito sa lokal na pag-install ng Python! (code block 3) ```python env.reset() @@ -52,11 +72,11 @@ Upang makita kung paano gumagana ang kapaligiran, magpatakbo ng maikling simulat env.close() ``` - Dapat kang makakita ng isang bagay na katulad ng larawang ito: + Makikita mo ng halos ganito ang imahe: ![non-balancing cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) -1. Sa panahon ng simulation, kailangan nating makuha ang mga obserbasyon upang magpasya kung paano kumilos. Sa katunayan, ang step function ay nagbabalik ng kasalukuyang obserbasyon, isang reward function, at ang done flag na nagpapahiwatig kung may saysay pa bang ipagpatuloy ang simulation o hindi: (code block 4) +1. Sa panahon ng simulation, kailangan natin kumuha ng mga obserbasyon upang makapagdesisyon kung paano kumilos. Sa katunayan, ang step function ay nagbabalik ng kasalukuyang mga obserbasyon, isang reward function, at ang done flag na nagsasaad kung may saysay pa ba na ipagpatuloy ang simulation o hindi: (code block 4) ```python env.reset() @@ -69,7 +89,7 @@ Upang makita kung paano gumagana ang kapaligiran, magpatakbo ng maikling simulat env.close() ``` - Makakakita ka ng isang bagay na ganito sa output ng notebook: + Makikita mo ito sa output ng notebook na ganito: ```text [ 0.03403272 -0.24301182 0.02669811 0.2895829 ] -> 1.0 @@ -85,40 +105,40 @@ Upang makita kung paano gumagana ang kapaligiran, magpatakbo ng maikling simulat Ang observation vector na ibinabalik sa bawat hakbang ng simulation ay naglalaman ng mga sumusunod na halaga: - Posisyon ng cart - Bilis ng cart - - Anggulo ng pole - - Bilis ng pag-ikot ng pole + - Anggulo ng poste + - Bilis ng pag-ikot ng poste -1. Kunin ang minimum at maximum na halaga ng mga numerong ito: (code block 5) +1. Kunin ang pinakamababa at pinakamataas na halaga ng mga numerong iyon: (code block 5) ```python print(env.observation_space.low) print(env.observation_space.high) ``` - Mapapansin mo rin na ang reward value sa bawat hakbang ng simulation ay palaging 1. Ito ay dahil ang ating layunin ay mabuhay nang mas matagal hangga't maaari, ibig sabihin, panatilihin ang pole sa isang makatwirang patayong posisyon sa pinakamahabang panahon. + Mapapansin mo rin na ang reward na halaga sa bawat hakbang ng simulation ay palaging 1. Ito ay dahil ang ating layunin ay mabuhay nang pinakamatagal, ibig sabihin, panatilihin ang poste sa makatwirang patayong posisyon sa pinakamahabang panahon. - ✅ Sa katunayan, ang CartPole simulation ay itinuturing na nalutas kung makakakuha tayo ng average reward na 195 sa loob ng 100 sunod-sunod na pagsubok. + ✅ Sa katunayan, ang CartPole simulation ay itinuturing na nalutas kung makakakuha tayo ng average reward na 195 sa loob ng 100 magkasunod na pagsubok. -## State Discretization +## Pagdiskreto ng Estado -Sa Q-Learning, kailangan nating bumuo ng Q-Table na tumutukoy kung ano ang gagawin sa bawat estado. Upang magawa ito, kailangan ang estado ay **discreet**, mas partikular, dapat itong maglaman ng limitadong bilang ng mga discrete na halaga. Kaya, kailangan nating **i-discretize** ang ating mga obserbasyon, i-map ang mga ito sa isang limitadong set ng mga estado. +Sa Q-Learning, kailangan nating bumuo ng Q-Table na nagtutukoy kung ano ang gagawin sa bawat estado. Upang magawa ito, kailangan nating gawing **diskreto** ang estado, mas partikular, dapat itong magkaroon ng hangganang bilang ng mga diskretong halaga. Kaya, kailangan nating **i-diskreto** ang ating mga obserbasyon, inilalapat ito sa isang hangganang hanay ng mga estado. -May ilang paraan upang magawa ito: +May ilang paraan para gawin ito: -- **Hatiin sa mga bins**. Kung alam natin ang interval ng isang tiyak na halaga, maaari nating hatiin ang interval na ito sa isang bilang ng **bins**, at pagkatapos ay palitan ang halaga ng numero ng bin kung saan ito kabilang. Magagawa ito gamit ang numpy [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html) method. Sa kasong ito, tiyak nating malalaman ang laki ng estado, dahil ito ay depende sa bilang ng bins na pinili natin para sa digitalization. +- **Hatiin sa mga bins**. Kung alam natin ang pagitan ng isang partikular na halaga, maaari nating hatiin ang pagitan na ito sa ilang bilang ng mga **bins**, at pagkatapos ay palitan ang halaga ng bilang ng bin kung saan ito kabilang. Maaari itong gawin gamit ang numpy [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html) na paraan. Sa ganitong kaso, eksaktong malalaman natin ang laki ng estado, dahil ito ay nakasalalay sa bilang ng mga bin na pinili natin para sa digitalization. -✅ Maaari tayong gumamit ng linear interpolation upang dalhin ang mga halaga sa isang limitadong interval (halimbawa, mula -20 hanggang 20), at pagkatapos ay i-convert ang mga numero sa integers sa pamamagitan ng pag-round. Nagbibigay ito sa atin ng kaunting kontrol sa laki ng estado, lalo na kung hindi natin alam ang eksaktong saklaw ng mga input na halaga. Halimbawa, sa ating kaso, 2 sa 4 na halaga ay walang upper/lower bounds sa kanilang mga halaga, na maaaring magresulta sa walang katapusang bilang ng mga estado. +✅ Maaari tayong gumamit ng linear interpolation upang ilagay ang mga halaga sa isang hangganang pagitan (halimbawa, mula -20 hanggang 20), at pagkatapos ay gawing integer ang mga numero sa pamamagitan ng pag-round. Nagbibigay ito ng kaunting mas kaunting kontrol sa laki ng estado, lalo na kung hindi natin alam ang eksaktong saklaw ng mga input na halaga. Halimbawa, sa ating kaso, 2 sa 4 na halaga ay walang mga itinatakdang itaas/ibabang hangganan ng mga halaga, na maaaring magresulta sa walang katapusang bilang ng mga estado. -Sa ating halimbawa, gagamitin natin ang pangalawang paraan. Tulad ng mapapansin mo mamaya, sa kabila ng hindi tinukoy na upper/lower bounds, ang mga halagang iyon ay bihirang kumuha ng mga halaga sa labas ng ilang limitadong interval, kaya ang mga estado na may matinding halaga ay magiging napakabihira. +Sa ating halimbawa, pipiliin natin ang pangalawang paraan. Tulad ng mapapansin mo mamaya, sa kabila ng hindi itinatakdang mga itaas/ibabang hangganan, bihira lamang kuhanin ng mga halagang iyon ang mga halaga sa labas ng tiyak na mga hangganang interval, kaya ang mga estado na may matinding mga halaga ay magiging bihira. -1. Narito ang function na kukuha ng obserbasyon mula sa ating modelo at magpo-produce ng tuple ng 4 na integer na halaga: (code block 6) +1. Narito ang function na tatanggap ng obserbasyon mula sa ating modelo at gagawa ng tuple ng 4 na integer na halaga: (code block 6) ```python def discretize(x): return tuple((x/np.array([0.25, 0.25, 0.01, 0.1])).astype(np.int)) ``` -1. Tuklasin din natin ang isa pang paraan ng discretization gamit ang bins: (code block 7) +1. Tuklasin natin ang isa pang paraan ng pagdiskreto gamit ang mga bins: (code block 7) ```python def create_bins(i,num): @@ -126,39 +146,39 @@ Sa ating halimbawa, gagamitin natin ang pangalawang paraan. Tulad ng mapapansin 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)] # mga pagitan ng mga halaga para sa bawat parametro + nbins = [20,20,10,10] # bilang ng mga lalagyan para sa bawat 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. Ngayon, magpatakbo ng maikling simulation at obserbahan ang mga discrete na halaga ng kapaligiran. Subukan ang parehong `discretize` at `discretize_bins` at tingnan kung may pagkakaiba. +1. Patakbuhin natin ngayon ang isang maikling simulation at obserbahan ang mga diskretong halaga ng environment. Subukan mo ang pareho `discretize` at `discretize_bins` at tingnan kung may pagkakaiba. - ✅ Ang `discretize_bins` ay nagbabalik ng numero ng bin, na 0-based. Kaya para sa mga halaga ng input variable sa paligid ng 0, nagbabalik ito ng numero mula sa gitna ng interval (10). Sa `discretize`, hindi natin inalagaan ang saklaw ng mga output na halaga, na pinapayagan silang maging negatibo, kaya ang mga halaga ng estado ay hindi na-shift, at ang 0 ay tumutugma sa 0. (code block 8) + ✅ Ang discretize_bins ay nagbabalik ng bilang ng bin, na 0-based. Kaya para sa mga halaga ng input variable na malapit sa 0, ibinabalik nito ang numero mula sa gitna ng interval (10). Sa discretize, hindi natin pinansin ang saklaw ng output values, kaya maaari itong maging negatibo, kaya ang mga estado ay hindi na-shift, at ang 0 ay tumutugma sa 0. (code block 8) ```python env.reset() done = False while not done: - #env.render() + #ipakita.env() obs, rew, done, info = env.step(env.action_space.sample()) - #print(discretize_bins(obs)) + #print(paghati_hati_bins(obs)) print(discretize(obs)) env.close() ``` - ✅ I-uncomment ang linya na nagsisimula sa env.render kung nais mong makita kung paano isinasagawa ang kapaligiran. Kung hindi, maaari mo itong isagawa sa background, na mas mabilis. Gagamitin natin ang "invisible" na pagpapatupad na ito sa panahon ng ating Q-Learning process. + ✅ I-uncomment ang linya na nagsisimula sa env.render kung gusto mong makita kung paano gumagana ang environment. Kung hindi, maaari mo itong patakbuhin sa background, na mas mabilis. Gagamitin natin ang "invisible" na pagpapatakbo na ito sa ating proseso ng Q-Learning. -## Ang Istruktura ng Q-Table +## Ang istruktura ng Q-Table -Sa nakaraang aralin, ang estado ay isang simpleng pares ng mga numero mula 0 hanggang 8, kaya't maginhawa itong i-represent ang Q-Table gamit ang isang numpy tensor na may hugis na 8x8x2. Kung gagamit tayo ng bins discretization, ang laki ng ating state vector ay kilala rin, kaya maaari nating gamitin ang parehong paraan at i-represent ang estado gamit ang isang array na may hugis na 20x20x10x10x2 (dito ang 2 ay ang dimensyon ng action space, at ang mga unang dimensyon ay tumutugma sa bilang ng bins na pinili natin para sa bawat parameter sa observation space). +Sa nakaraang aralin, ang estado ay isang simpleng pares ng numero mula 0 hanggang 8, kaya naging madali na i-representa ang Q-Table bilang isang numpy tensor na may hugis na 8x8x2. Kung gagamit tayo ng bins discretization, ang laki ng ating state vector ay kilala rin, kaya maaari nating gamitin ang parehong pamamaraang ito at i-representa ang estado bilang isang array ng hugis 20x20x10x10x2 (dito, ang 2 ay dimensyon ng action space, at ang mga pangunahing dimensyon ay tumutukoy sa bilang ng mga bin na pinili nating gamitin para sa bawat parameter sa observation space). -Gayunpaman, kung minsan ang eksaktong dimensyon ng observation space ay hindi alam. Sa kaso ng `discretize` function, maaaring hindi tayo sigurado na ang ating estado ay nananatili sa loob ng ilang limitasyon, dahil ang ilan sa mga orihinal na halaga ay hindi bound. Kaya, gagamit tayo ng bahagyang naiibang paraan at i-represent ang Q-Table gamit ang isang dictionary. +Gayunpaman, minsan hindi alam ang tumpak na dimensyon ng observation space. Sa kaso ng `discretize` na function, maaaring hindi tayo sigurado na ang ating estado ay mananatili sa loob ng ilang limitasyon, dahil ang ilan sa mga orihinal na halaga ay walang hangganan. Kaya, gagamit tayo ng ibang pamamaraan at i-representa ang Q-Table bilang isang diksyunaryo. -1. Gamitin ang pares *(state,action)* bilang key ng dictionary, at ang value ay tumutugma sa Q-Table entry value. (code block 9) +1. Gamitin ang pares na *(state, action)* bilang susi ng diksyunaryo, at ang halaga ay magiging kaugnay na Q-Table entry. (code block 9) ```python Q = {} @@ -168,38 +188,38 @@ Gayunpaman, kung minsan ang eksaktong dimensyon ng observation space ay hindi al return [Q.get((state,a),0) for a in actions] ``` - Dito, nagde-define din tayo ng function na `qvalues()`, na nagbabalik ng listahan ng mga Q-Table value para sa isang ibinigay na estado na tumutugma sa lahat ng posibleng aksyon. Kung ang entry ay wala sa Q-Table, magbabalik tayo ng 0 bilang default. + Dito rin tayo nagtatakda ng function na `qvalues()`, na nagbabalik ng listahan ng mga halaga ng Q-Table para sa isang ibinigay na estado na tumutugma sa lahat ng posibleng mga aksyon. Kapag wala ang entry sa Q-Table, magbabalik tayo ng 0 bilang default. -## Simulan ang Q-Learning +## Simulan natin ang Q-Learning -Ngayon, handa na tayong turuan si Peter na magbalanse! +Handa na tayong turuan si Peter na magbalanse! -1. Una, mag-set ng ilang hyperparameters: (code block 10) +1. Una, itakda natin ang ilang hyperparameters: (code block 10) ```python - # hyperparameters + # mga hyperparameter alpha = 0.3 gamma = 0.9 epsilon = 0.90 ``` - Dito, ang `alpha` ay ang **learning rate** na tumutukoy kung hanggang saan natin dapat i-adjust ang kasalukuyang mga halaga ng Q-Table sa bawat hakbang. Sa nakaraang aralin, nagsimula tayo sa 1, at pagkatapos ay binawasan ang `alpha` sa mas mababang mga halaga sa panahon ng pagsasanay. Sa halimbawang ito, panatilihin natin itong constant para sa pagiging simple, at maaari kang mag-eksperimento sa pag-adjust ng mga halaga ng `alpha` sa ibang pagkakataon. + Dito, ang `alpha` ay ang **learning rate** na nagtutukoy kung hanggang saan natin dapat baguhin ang kasalukuyang mga halaga ng Q-Table sa bawat hakbang. Sa nakaraang aralin nagsimula tayo sa 1, at pagkatapos ay unti-unting binawasan ang `alpha` habang ang pagsasanay ay nagpapatuloy. Sa halimbawa na ito, panatilihin natin itong constant para sa pagiging simple, at maaari kang mag-eksperimento sa pag-adjust ng mga halaga ng `alpha` mamaya. - Ang `gamma` ay ang **discount factor** na nagpapakita kung hanggang saan natin dapat bigyang-priyoridad ang hinaharap na reward kaysa sa kasalukuyang reward. + Ang `gamma` ay ang **discount factor** na nagpapakita kung hanggang kailan natin priyoridadin ang hinaharap na reward kaysa sa kasalukuyang reward. - Ang `epsilon` ay ang **exploration/exploitation factor** na tumutukoy kung dapat nating paboran ang exploration kaysa sa exploitation o vice versa. Sa ating algorithm, sa `epsilon` na porsyento ng mga kaso, pipiliin natin ang susunod na aksyon ayon sa mga halaga ng Q-Table, at sa natitirang bilang ng mga kaso, magsasagawa tayo ng random na aksyon. Papayagan tayo nitong galugarin ang mga bahagi ng search space na hindi pa natin nakikita. + Ang `epsilon` ay ang **exploration/exploitation factor** na tumutukoy kung mas gusto natin ang exploration kaysa exploitation o kabaligtaran. Sa ating algorithm, sa `epsilon` porsyento ng mga kaso ay pipili tayo ng susunod na aksyon ayon sa mga halaga ng Q-Table, at sa natitirang mga kaso ay magsasagawa tayo ng random na aksyon. Pinapayagan tayo nitong tuklasin ang mga bahagi ng search space na hindi pa natin nasusubukan. - ✅ Sa usapin ng pagbalanse - ang pagpili ng random na aksyon (exploration) ay kikilos bilang isang random na suntok sa maling direksyon, at ang pole ay kailangang matutong bumawi ng balanse mula sa mga "pagkakamali" na iyon. + ✅ Sa konteksto ng pagbalanse - ang pagpili ng random na aksyon (exploration) ay magsisilbing isang random na palo sa maling direksyon, at kailangang matuto ang poste kung paano ibalik ang balanse mula sa mga "pagkakamaling" iyon. -### Pagbutihin ang Algorithm +### Pagbutihin ang algorithm Maaari rin nating gawin ang dalawang pagpapabuti sa ating algorithm mula sa nakaraang aralin: -- **Kalkulahin ang average cumulative reward**, sa loob ng ilang simulation. Ipi-print natin ang progreso bawat 5000 iterations, at i-average natin ang ating cumulative reward sa panahong iyon. Nangangahulugan ito na kung makakakuha tayo ng higit sa 195 puntos - maaari nating ituring na nalutas ang problema, na may mas mataas na kalidad kaysa sa kinakailangan. +- **Kalkulahin ang average cumulative reward**, sa isang bilang ng mga simulation. Ipi-print natin ang progreso bawat 5000 na iterasyon, at aaralin ang average ng ating cumulative reward sa loob ng panahong iyon. Nangangahulugan ito na kung makakakuha tayo ng higit sa 195 na puntos - maaari nating ituring na nalutas ang problema, na may mas mataas na kalidad kaysa sa kinakailangan. -- **Kalkulahin ang maximum average cumulative result**, `Qmax`, at i-store natin ang Q-Table na tumutugma sa resulta na iyon. Kapag pinatakbo mo ang training, mapapansin mo na minsan ang average cumulative result ay nagsisimulang bumaba, at gusto nating panatilihin ang mga halaga ng Q-Table na tumutugma sa pinakamahusay na modelo na naobserbahan sa panahon ng pagsasanay. +- **Kalkulahin ang maximum average cumulative result**, `Qmax`, at itatago natin ang Q-Table na tumutugma sa resulta na iyon. Kapag pinatakbo mo ang training mapapansin mo na minsan ang average cumulative result ay nagsisimulang bumaba, kaya nais nating panatilihin ang mga halaga ng Q-Table na tumutukoy sa pinakamahusay na modelong naobserbahan sa panahon ng pagsasanay. -1. Kolektahin ang lahat ng cumulative rewards sa bawat simulation sa `rewards` vector para sa karagdagang pag-plot. (code block 11) +1. Kolektahin lahat ng cumulative rewards sa bawat simulation sa `rewards` vector para sa susunod na pag-plot. (code block 11) ```python def probs(v,eps=1e-4): @@ -214,15 +234,15 @@ Maaari rin nating gawin ang dalawang pagpapabuti sa ating algorithm mula sa naka obs = env.reset() done = False cum_reward=0 - # == do the simulation == + # == gawin ang simulasyon == while not done: s = discretize(obs) if random.random() Qmax: @@ -242,23 +262,23 @@ Maaari rin nating gawin ang dalawang pagpapabuti sa ating algorithm mula sa naka Ano ang maaaring mapansin mula sa mga resulta: -- **Malapit sa ating layunin**. Napakalapit na natin sa pagkamit ng layunin na makakuha ng 195 cumulative rewards sa loob ng 100+ sunod-sunod na pagtakbo ng simulation, o maaaring naabot na natin ito! Kahit na makakuha tayo ng mas maliit na mga numero, hindi pa rin natin alam, dahil nag-a-average tayo sa loob ng 5000 pagtakbo, at 100 pagtakbo lamang ang kinakailangan sa pormal na pamantayan. +- **Malapit sa ating layunin**. Malapit na tayong maabot ang layuning makakuha ng 195 cumulative rewards sa loob ng higit sa 100 magkasunod na pagtakbo ng simulation, o maaaring nakamit na natin ito! Kahit pa makakuha tayo ng mas maliit na mga numero, hindi pa natin tiyak, dahil ang average ay kinuwenta sa 5000 na pagtakbo, at 100 lamang ang kinakailangan sa pormal na pamantayan. -- **Reward nagsisimulang bumaba**. Minsan ang reward ay nagsisimulang bumaba, na nangangahulugan na maaari nating "sirain" ang mga natutunang halaga sa Q-Table gamit ang mga bago na nagpapalala sa sitwasyon. +- **Nagsisimulang bumaba ang reward**. Minsan nagsisimulang bumaba ang reward, na nangangahulugang maaari nating "sirain" ang mga natutunan nang mga halaga sa Q-Table gamit ang iba na nagpapalala ng sitwasyon. -Ang obserbasyong ito ay mas malinaw na makikita kung i-plot natin ang progreso ng pagsasanay. +Mas malinaw na mapapansin ito kung ipi-plot natin ang progreso ng training. ## Pag-plot ng Progreso ng Pagsasanay -Sa panahon ng pagsasanay, nakolekta natin ang cumulative reward value sa bawat iteration sa `rewards` vector. Ganito ang hitsura nito kapag na-plot laban sa iteration number: +Sa panahon ng pagsasanay, nakolekta natin ang halaga ng cumulative reward sa bawat iterasyon sa loob ng `rewards` vector. Ganito ang hitsura kapag ipini-plot ito laban sa bilang ng iterasyon: ```python plt.plot(rewards) ``` -![raw progress](../../../../8-Reinforcement/2-Gym/images/train_progress_raw.png) +![raw progress](../../../../translated_images/tl/train_progress_raw.2adfdf2daea09c59.webp) -Mula sa graph na ito, hindi posible na masabi ang anumang bagay, dahil sa likas na katangian ng stochastic training process, ang haba ng mga session ng pagsasanay ay lubos na nag-iiba. Upang mas magkaroon ng kahulugan ang graph na ito, maaari nating kalkulahin ang **running average** sa isang serye ng mga eksperimento, sabihin nating 100. Magagawa ito nang maginhawa gamit ang `np.convolve`: (code block 12) +Mula sa grap na ito, hindi posible na malaman ang anumang bagay, dahil dulot ng kalikasan ng stochastic training process, ang haba ng mga session ng training ay napakahaba ang pagkakaiba. Para magkaroon ng mas malinaw na pagkakaintindi sa grap, maaari nating kalkulahin ang **running average** sa serye ng mga eksperimento, sabihin natin 100. Maaari itong gawin nang madaling gamit ang `np.convolve`: (code block 12) ```python def running_average(x,window): @@ -267,21 +287,24 @@ def running_average(x,window): plt.plot(running_average(rewards,100)) ``` -![training progress](../../../../8-Reinforcement/2-Gym/images/train_progress_runav.png) +![training progress](../../../../translated_images/tl/train_progress_runav.c71694a8fa9ab359.webp) + +## Pagbabago ng hyperparameters + +Para gawing mas matatag ang pagkatuto, makatuwiran na i-adjust ang ilan sa ating mga hyperparameters habang nagpapatuloy ang pagsasanay. Partikular: + +- **Para sa learning rate**, `alpha`, maaari tayong magsimula sa mga halagang malapit sa 1, at pagkatapos ay unti-unting babaan ang parametro. Sa paglipas ng panahon, magkakaroon tayo ng magagandang probabilidad sa Q-Table, kaya dapat natin itong i-adjust nang bahagya, at huwag ganap na palitan ng mga bagong halaga. -## Pag-iiba ng Hyperparameters +- **Dagdagan ang epsilon**. Maaaring gusto nating unti-unting dagdagan ang `epsilon`, upang mas konti ang exploration at mas marami ang exploitation. Mukhang makatuwiran na magsimula sa mababang halaga ng `epsilon`, at unti-unting itaas ito hanggang halos 1. -Upang gawing mas matatag ang pag-aaral, makatuwiran na i-adjust ang ilan sa ating mga hyperparameters sa panahon ng pagsasanay. Partikular: +> **Gawain 1**: Maglaro sa mga halaga ng hyperparameter at tingnan kung makakamit mo ang mas mataas na cumulative reward. Nakukuha mo ba ang higit sa 195? -- **Para sa learning rate**, `alpha`, maaari tayong magsimula sa mga halaga na malapit sa 1, at pagkatapos ay patuloy na bawasan ang parameter. Sa paglipas ng panahon, makakakuha tayo ng magagandang probability values sa Q-Table, kaya't dapat nating i-adjust ang mga ito nang bahagya, at hindi ganap na i-overwrite gamit ang mga bagong halaga. -- **Dagdagan ang epsilon**. Maaaring gusto nating unti-unting taasan ang `epsilon`, upang mas kaunti ang pag-explore at mas marami ang pag-exploit. Malamang na makatuwiran na magsimula sa mas mababang halaga ng `epsilon`, at pataasin ito hanggang halos 1. -> **Gawain 1**: Subukan ang iba't ibang halaga ng hyperparameter at tingnan kung makakamit mo ang mas mataas na kabuuang gantimpala. Nakakakuha ka ba ng higit sa 195? -> **Task 2**: Upang pormal na malutas ang problema, kailangan mong makakuha ng 195 average na gantimpala sa loob ng 100 magkakasunod na takbo. Sukatin ito habang nagsasanay at tiyaking pormal mong nalutas ang problema! +> **Gawain 2**: Upang pormal na malutas ang problema, kailangan mong makakuha ng average na gantimpala na 195 sa loob ng 100 sunod-sunod na pagsubok. Sukatin iyon habang nagsasanay at tiyaking pormal mo nang nalutas ang problema! -## Pagtingin sa resulta sa aksyon +## Makita ang resulta sa aksyon -Magiging interesante na makita kung paano kumikilos ang na-train na modelo. Patakbuhin natin ang simulation at sundin ang parehong estratehiya sa pagpili ng aksyon tulad ng ginawa sa training, gamit ang sampling ayon sa probability distribution sa Q-Table: (code block 13) +Magiging kawili-wili na talagang makita kung paano kumikilos ang sinanay na modelo. Patakbuhin natin ang simulasyon at sundin ang parehong estratehiya ng pagpili ng aksyon gaya ng sa panahon ng pagsasanay, sampling ayon sa probability distribution sa Q-Table: (code block 13) ```python obs = env.reset() @@ -295,30 +318,32 @@ while not done: env.close() ``` -Makikita mo ang ganito: +Dapat kang makakita ng isang bagay na tulad nito: -![isang balancing cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) +![a balancing cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) --- ## 🚀Hamunin -> **Task 3**: Dito, ginamit natin ang huling kopya ng Q-Table, na maaaring hindi ang pinakamainam. Tandaan na iniimbak natin ang pinakamahusay na Q-Table sa `Qbest` na variable! Subukan ang parehong halimbawa gamit ang pinakamahusay na Q-Table sa pamamagitan ng pagkopya ng `Qbest` papunta sa `Q` at tingnan kung mapapansin mo ang pagkakaiba. +> **Gawain 3**: Dito, ginagamit natin ang huling kopya ng Q-Table, na maaaring hindi ang pinakamainam. Tandaan na itinatago natin ang pinakamagandang gumaganang Q-Table sa variable na `Qbest`! Subukan ang parehong halimbawa gamit ang pinakamagandang gumaganang Q-Table sa pamamagitan ng pagkopya ng `Qbest` papunta sa `Q` at tingnan kung mapapansin mo ang pagkakaiba. -> **Task 4**: Dito, hindi natin pinipili ang pinakamahusay na aksyon sa bawat hakbang, kundi nagsa-sample tayo gamit ang kaukulang probability distribution. Mas makatuwiran ba na palaging piliin ang pinakamahusay na aksyon, na may pinakamataas na halaga sa Q-Table? Magagawa ito gamit ang `np.argmax` na function upang malaman ang numero ng aksyon na may pinakamataas na halaga sa Q-Table. Ipatupad ang estratehiyang ito at tingnan kung mas mapapabuti ang balancing. +> **Gawain 4**: Dito, hindi tayo pumipili ng pinakamainam na aksyon sa bawat hakbang, kundi sampling ayon sa katumbas na probability distribution. Mas makatuwiran ba na palaging piliin ang pinakamainam na aksyon, na may pinakamataas na halaga sa Q-Table? Maaaring gawin ito gamit ang `np.argmax` na function para malaman ang numero ng aksyon na may pinakamataas na halaga sa Q-Table. Ipatupad ang estratehiyang ito at tingnan kung napapabuti nito ang pagbalanse. ## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ml/) -## Takdang-Aralin +## Takdang Aralin [Sanayin ang Mountain Car](assignment.md) ## Konklusyon -Natutunan na natin kung paano sanayin ang mga ahente upang makamit ang magagandang resulta sa pamamagitan lamang ng pagbibigay sa kanila ng reward function na nagtatakda ng nais na estado ng laro, at pagbibigay sa kanila ng pagkakataong matalinong mag-explore sa search space. Matagumpay nating naipatupad ang Q-Learning algorithm sa mga kaso ng discrete at continuous na environment, ngunit may discrete na mga aksyon. +Natutunan na natin ngayon kung paano sanayin ang mga ahente upang makamit ang magagandang resulta sa pamamagitan lamang ng pagbibigay sa kanila ng reward function na naglalarawan ng ninanais na estado ng laro, at sa pagbibigay ng pagkakataon sa kanila na matalinhagang tuklasin ang search space. Matagumpay nating naipinatupad ang Q-Learning algorithm sa mga kaso ng discrete at continuous na mga kapaligiran, pero may discrete na mga aksyon. -Mahalaga ring pag-aralan ang mga sitwasyon kung saan ang estado ng aksyon ay tuloy-tuloy, at kapag ang observation space ay mas kumplikado, tulad ng imahe mula sa screen ng Atari game. Sa mga ganitong problema, madalas nating kailangang gumamit ng mas makapangyarihang mga teknik sa machine learning, tulad ng neural networks, upang makamit ang magagandang resulta. Ang mga mas advanced na paksa na ito ang magiging laman ng ating susunod na mas advanced na kurso sa AI. +Mahalaga ring pag-aralan ang mga sitwasyon kung saan ang action state ay continuous din, at kung ang observation space ay mas kumplikado, gaya ng imahe mula sa screen ng laro sa Atari. Sa mga problemang iyon, madalas nating kailanganing gumamit ng mas makapangyarihang mga teknik sa machine learning, gaya ng neural networks, upang makamit ang magagandang resulta. Ang mga mas advanced na paksa na iyon ay bahagi ng ating paparating na mas advanced na kurso sa AI. --- -**Paunawa**: -Ang dokumentong ito ay isinalin gamit ang AI translation service na [Co-op Translator](https://github.com/Azure/co-op-translator). Bagama't sinisikap naming maging tumpak, tandaan na ang mga awtomatikong pagsasalin ay maaaring maglaman ng mga pagkakamali o hindi pagkakatugma. Ang orihinal na dokumento sa kanyang katutubong wika ang dapat ituring na opisyal na sanggunian. Para sa mahalagang impormasyon, inirerekomenda ang propesyonal na pagsasalin ng tao. Hindi kami mananagot sa anumang hindi pagkakaunawaan o maling interpretasyon na maaaring magmula sa paggamit ng pagsasaling ito. \ No newline at end of file + +**Pagtatanggi**: +Ang dokumentong ito ay isinalin gamit ang serbisyo ng AI translation na [Co-op Translator](https://github.com/Azure/co-op-translator). Bagama't nagsusumikap kami para sa katumpakan, pakatandaan na ang awtomatikong pagsasalin ay maaaring maglaman ng mga pagkakamali o hindi pagkakatugma. Ang orihinal na dokumento sa orihinal nitong wika ang dapat ituring na pangunahing sanggunian. Para sa mahahalagang impormasyon, inirerekomenda ang propesyonal na pagsasalin ng tao. Hindi kami mananagot sa anumang maling pagkakaintindi o maling interpretasyon na nagmula sa paggamit ng pagsasaling ito. + \ No newline at end of file diff --git a/translations/tr/.co-op-translator.json b/translations/tr/.co-op-translator.json index d23cb1fe4..172cde836 100644 --- a/translations/tr/.co-op-translator.json +++ b/translations/tr/.co-op-translator.json @@ -24,8 +24,8 @@ "language_code": "tr" }, "1-Introduction/3-fairness/README.md": { - "original_hash": "9a6b702d1437c0467e3c5c28d763dac2", - "translation_date": "2025-09-06T07:54:44+00:00", + "original_hash": "0f00d72169a0d37eecfd16d71e01700a", + "translation_date": "2026-07-14T08:48:41+00:00", "source_file": "1-Introduction/3-fairness/README.md", "language_code": "tr" }, @@ -54,8 +54,8 @@ "language_code": "tr" }, "2-Regression/1-Tools/README.md": { - "original_hash": "fa81d226c71d5af7a2cade31c1c92b88", - "translation_date": "2025-09-06T07:46:52+00:00", + "original_hash": "0b8635427b582d03ea4ab7089b93e505", + "translation_date": "2026-07-14T08:43:34+00:00", "source_file": "2-Regression/1-Tools/README.md", "language_code": "tr" }, @@ -72,8 +72,8 @@ "language_code": "tr" }, "2-Regression/2-Data/README.md": { - "original_hash": "7c077988328ebfe33b24d07945f16eca", - "translation_date": "2025-09-06T07:47:42+00:00", + "original_hash": "a58b2c4d16c6b122643391745ac15af6", + "translation_date": "2026-07-14T08:44:52+00:00", "source_file": "2-Regression/2-Data/README.md", "language_code": "tr" }, @@ -89,6 +89,12 @@ "source_file": "2-Regression/2-Data/solution/Julia/README.md", "language_code": "tr" }, + "2-Regression/2-Data/solution/notebook.ipynb": { + "original_hash": "96b95f8cf473481f2f371de8156f1571", + "translation_date": "2026-07-14T08:13:50+00:00", + "source_file": "2-Regression/2-Data/solution/notebook.ipynb", + "language_code": "tr" + }, "2-Regression/3-Linear/README.md": { "original_hash": "8b776e731c35b171d316d01d0e7b1369", "translation_date": "2026-04-26T20:28:38+00:00", @@ -457,7 +463,7 @@ }, "8-Reinforcement/1-QLearning/README.md": { "original_hash": "911efd5e595089000cb3c16fce1beab8", - "translation_date": "2025-09-06T08:03:43+00:00", + "translation_date": "2026-07-14T08:46:12+00:00", "source_file": "8-Reinforcement/1-QLearning/README.md", "language_code": "tr" }, @@ -481,7 +487,7 @@ }, "8-Reinforcement/2-Gym/README.md": { "original_hash": "107d5bb29da8a562e7ae72262d251a75", - "translation_date": "2025-09-06T08:04:44+00:00", + "translation_date": "2026-07-14T08:47:30+00:00", "source_file": "8-Reinforcement/2-Gym/README.md", "language_code": "tr" }, @@ -581,6 +587,19 @@ "source_file": "TROUBLESHOOTING.md", "language_code": "tr" }, + "__translation_failures__": { + "sketchnotes/LICENSE.md": { + "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f", + "source_file": "sketchnotes/LICENSE.md", + "language_code": "tr", + "failure_date": "2026-07-14T08:42:24+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-06T07:52:38+00:00", diff --git a/translations/tr/1-Introduction/3-fairness/README.md b/translations/tr/1-Introduction/3-fairness/README.md index 940fdd8de..83c1c3cac 100644 --- a/translations/tr/1-Introduction/3-fairness/README.md +++ b/translations/tr/1-Introduction/3-fairness/README.md @@ -1,162 +1,167 @@ -# Sorumlu Yapay Zeka ile Makine Öğrenimi Çözümleri Oluşturma - -![Makine Öğreniminde sorumlu yapay zekanın özetini içeren bir sketchnote](../../../../sketchnotes/ml-fairness.png) +# Sorumlu Yapay Zeka ile Makine Öğrenimi çözümleri oluşturmak + +![Makine Öğreniminde sorumlu yapay zekanın özeti olan bir sketchnote](../../../../translated_images/tr/ml-fairness.ef296ebec6afc98a.webp) > Sketchnote: [Tomomi Imura](https://www.twitter.com/girlie_mac) -## [Ders Öncesi Test](https://ff-quizzes.netlify.app/en/ml/) - +## [Ders öncesi quiz](https://ff-quizzes.netlify.app/en/ml/) + ## Giriş -Bu müfredatta, makine öğreniminin günlük hayatımızı nasıl etkilediğini ve etkilemeye devam ettiğini keşfetmeye başlayacaksınız. Şu anda bile, sistemler ve modeller sağlık teşhisleri, kredi onayları veya dolandırıcılığı tespit etme gibi günlük karar verme görevlerinde yer alıyor. Bu nedenle, bu modellerin güvenilir sonuçlar sunmak için iyi çalışması önemlidir. Her yazılım uygulaması gibi, yapay zeka sistemleri de beklentileri karşılamayabilir veya istenmeyen sonuçlar doğurabilir. Bu yüzden bir yapay zeka modelinin davranışını anlamak ve açıklamak çok önemlidir. +Bu müfredatta, makine öğreniminin hayatımızı nasıl etkilediğini keşfetmeye başlayacaksınız. Hâlihazırda, sistemler ve modeller sağlık teşhisleri, kredi onayları veya dolandırıcılık tespiti gibi günlük karar verme görevlerinde yer almaktadır. Bu nedenle, bu modellerin güvenilir sonuçlar sağlamak için iyi çalışması önemlidir. Herhangi bir yazılım uygulaması gibi, yapay zeka sistemleri beklentileri karşılamayabilir veya istenmeyen sonuçlar doğurabilir. Bu yüzden, bir yapay zeka modelinin davranışını anlamak ve açıklamak çok önemlidir. -Bu modelleri oluşturmak için kullandığınız veriler belirli demografik grupları (ırk, cinsiyet, siyasi görüş, din gibi) içermediğinde veya bu demografik grupları orantısız bir şekilde temsil ettiğinde neler olabileceğini hayal edin. Peki ya modelin çıktısı bazı demografik grupları kayıracak şekilde yorumlandığında ne olur? Uygulama için sonuçları nelerdir? Ayrıca, modelin olumsuz bir sonucu olduğunda ve insanlara zarar verdiğinde ne olur? Yapay zeka sistemlerinin davranışından kim sorumludur? Bu müfredatta bu tür soruları inceleyeceğiz. +Bu modelleri oluşturmak için kullandığınız veriler belli demografik grupları, örneğin ırk, cinsiyet, politik görüş, din gibi özellikleri eksik barındırıyorsa ya da bu demografileri orantısız şekilde temsil ediyorsa ne olur? Modelin çıktısı bazı demografik grupları kayıracak şekilde yorumlanırsa ne olur? Uygulamanın sonucu ne olur? Ayrıca, model olumsuz bir sonuç üretip insanlara zarar verirse ne olur? Yapay zeka sistemlerinin davranışından kim sorumludur? Bu müfredatta bu gibi soruları keşfedeceğiz. -Bu derste şunları öğreneceksiniz: +Bu derste: -- Makine öğreniminde adaletin önemi ve adaletle ilgili zararlar hakkında farkındalık oluşturmak. -- Güvenilirlik ve güvenliği sağlamak için aykırı değerleri ve olağandışı senaryoları keşfetme pratiğini öğrenmek. -- Herkesin kapsayıcı sistemler tasarlayarak güçlendirilmesi gerektiğini anlamak. -- Verilerin ve insanların gizliliğini ve güvenliğini korumanın ne kadar önemli olduğunu keşfetmek. -- Yapay zeka modellerinin davranışını açıklamak için şeffaf bir yaklaşımın önemini görmek. -- Yapay zeka sistemlerinde güven oluşturmak için hesap verebilirliğin ne kadar önemli olduğunu anlamak. +- Makine öğreniminde adaletin ve adaletle ilgili zararların önemine farkındalık kazanacaksınız. +- Güvenilirlik ve güvenliği sağlamak için sıra dışı durumları ve aykırı değerleri keşfetme pratiğine alışacaksınız. +- Herkesi güçlendiren kapsayıcı sistemler tasarlamanın gerekliliğini anlayacaksınız. +- Verilerin ve insanların gizliliği ile güvenliğinin korunmasının ne denli hayati olduğunu keşfedeceksiniz. +- Yapay zeka modellerinin davranışını açıklayan bir cam kutu yaklaşımının önemini göreceksiniz. +- Yapay zeka sistemlerine olan güvenin temelinde sorumluluğun ne kadar hayati olduğunu fark edeceksiniz. -## Ön Koşul +## Önkoşul -Ön koşul olarak, "Sorumlu Yapay Zeka İlkeleri" öğrenme yolunu tamamlayın ve aşağıdaki videoyu izleyin: +Önkoşul olarak, lütfen "Sorumlu Yapay Zeka İlkeleri" Öğrenme Yolunu tamamlayın ve aşağıdaki videoyu izleyin: -Sorumlu Yapay Zeka hakkında daha fazla bilgi edinmek için bu [Öğrenme Yolunu](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) takip edin. +Bu [Öğrenme Yolunu](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) takip ederek Sorumlu Yapay Zeka hakkında daha fazla bilgi edinin -[![Microsoft'un Sorumlu Yapay Zeka Yaklaşımı](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoft'un Sorumlu Yapay Zeka Yaklaşımı") +[![Microsoft'un Sorumlu Yapay Zekaya Yaklaşımı](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoft'un Sorumlu Yapay Zekaya Yaklaşımı") -> 🎥 Yukarıdaki görüntüye tıklayarak videoyu izleyin: Microsoft'un Sorumlu Yapay Zeka Yaklaşımı +> 🎥 Yukarıdaki resme tıklayarak videoyu izleyin: Microsoft'un Sorumlu Yapay Zekaya Yaklaşımı ## Adalet -Yapay zeka sistemleri herkese adil davranmalı ve benzer grupları farklı şekillerde etkilemekten kaçınmalıdır. Örneğin, yapay zeka sistemleri tıbbi tedavi, kredi başvuruları veya istihdam konusunda rehberlik sağladığında, benzer semptomlara, finansal koşullara veya mesleki niteliklere sahip herkese aynı önerileri sunmalıdır. Hepimiz, kararlarımızı ve eylemlerimizi etkileyen kalıtsal önyargılar taşırız. Bu önyargılar, yapay zeka sistemlerini eğitmek için kullandığımız verilere yansıyabilir. Bu tür manipülasyonlar bazen istemeden gerçekleşebilir. Verilere önyargı eklediğinizi bilinçli olarak fark etmek genellikle zordur. +Yapay zeka sistemleri herkese adil davranmalı ve benzer grupları farklı şekillerde etkilemekten kaçınmalıdır. Örneğin, yapay zeka sistemleri tıbbi tedavi, kredi başvuruları ya da istihdam konularında rehberlik sağlarken, benzer semptomları, finansal durumu veya mesleki nitelikleri olan herkese aynı önerileri yapmalıdır. İnsanlar olarak hepimizin kararlarımızı ve eylemlerimizi etkileyen doğuştan gelen önyargılarımız vardır. Bu önyargılar, yapay zeka sistemlerini eğitirken kullandığımız verilerde görülebilir. Bu tür manipülasyon bazen farkında olmadan gerçekleşebilir. Veriye bilinçli olarak ne zaman önyargı eklediğinizi anlamak çoğu zaman zordur. -**“Adaletsizlik”**, bir grup insan için (örneğin ırk, cinsiyet, yaş veya engellilik durumu açısından tanımlanan) olumsuz etkileri veya “zararları” kapsar. Adaletle ilgili başlıca zararlar şu şekilde sınıflandırılabilir: +**“Adaletsizlik”**, ırk, cinsiyet, yaş veya engellilik durumu gibi tanımlanan bir grup insan için ortaya çıkan olumsuz etkileri veya “zararları” kapsar. Temel adaletle ilgili zararlar şu şekilde sınıflandırılabilir: -- **Tahsis**: Örneğin, bir cinsiyet veya etnik kökenin diğerine tercih edilmesi. -- **Hizmet kalitesi**: Verileri yalnızca belirli bir senaryo için eğitmek, ancak gerçekliğin çok daha karmaşık olması, kötü performans gösteren bir hizmete yol açar. Örneğin, koyu tenli insanları algılayamayan bir el sabunu dağıtıcısı. [Referans](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773) -- **Aşağılama**: Bir şeyi veya birini haksız yere eleştirmek ve etiketlemek. Örneğin, bir görüntü etiketleme teknolojisi koyu tenli insanları goril olarak yanlış etiketlemiştir. -- **Aşırı veya yetersiz temsil**: Belirli bir grubun belirli bir meslekte görülmemesi fikri ve bu durumu sürekli olarak teşvik eden herhangi bir hizmet veya işlev zarara katkıda bulunur. -- **Stereotipleme**: Belirli bir grubu önceden atanmış özelliklerle ilişkilendirme. Örneğin, İngilizce ve Türkçe arasında çeviri yapan bir dil sistemi, cinsiyetle ilgili stereotipik ilişkilere dayalı hatalar içerebilir. +- **Tahsis**: Örneğin, bir cinsiyet veya etnik grubun diğerine kıyasla tercih edilmesi. +- **Hizmet kalitesi**: Eğer veri yalnızca belirli bir senaryo için eğitilir ama gerçeklik çok daha karmaşıksa, bu kötü çalışan bir hizmete yol açar. Örneğin, koyu tenli insanları algılayamayan bir el sabunluğu. [Referans](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773) +- **Aşağılama**: Adaletsiz şekilde bir şeyi veya birini eleştirmek ve etiketlemek. Örneğin, bir görüntü etiketleme teknolojisi koyu tenli insanları maymun olarak yanlış etiketlemesiyle ünlüdür. +- **Aşırı veya az temsil**: Belirli bir grubun belli bir meslekte görülmemesi ve hizmetlerin veya fonksiyonların bunu sürdürmesi zarar vericidir. +- **Klişeleştirme**: Bir grubu önceden atanmış özelliklerle ilişkilendirmek. Örneğin, İngilizce-Türkçe çeviri sisteminde cinsiyetle ilgili klişeler nedeniyle yanlışlar oluşabilir. -![Türkçeye çeviri](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) -> Türkçeye çeviri +![türkçeye çeviri](../../../../translated_images/tr/gender-bias-translate-en-tr.f185fd8822c2d437.webp) +> türkçeye çeviri -![İngilizceye geri çeviri](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) -> İngilizceye geri çeviri +![ingilizceye geri çeviri](../../../../translated_images/tr/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) +> ingilizceye geri çeviri -Yapay zeka sistemlerini tasarlarken ve test ederken, yapay zekanın adil olmasını ve önyargılı veya ayrımcı kararlar vermek üzere programlanmamasını sağlamamız gerekir. Yapay zekada ve makine öğreniminde adaleti garanti altına almak, karmaşık bir sosyo-teknik zorluk olmaya devam ediyor. +Yapay zeka sistemleri tasarlanırken ve test edilirken, yapay zekanın adil olması ve insanlara yasaklanan önyargılı veya ayrımcı kararlar vermeye programlanmadığından emin olunmalıdır. Yapay zekada ve makine öğreniminde adaletin garantilenmesi karmaşık bir sosyoteknik zorluktur. -### Güvenilirlik ve Güvenlik +### Güvenilirlik ve güvenlik -Güven oluşturmak için yapay zeka sistemlerinin normal ve beklenmedik koşullar altında güvenilir, güvenli ve tutarlı olması gerekir. Yapay zeka sistemlerinin çeşitli durumlarda nasıl davranacağını bilmek önemlidir, özellikle de aykırı değerler söz konusu olduğunda. Yapay zeka çözümleri oluştururken, yapay zeka çözümlerinin karşılaşabileceği çeşitli koşulları ele alma konusunda önemli bir odaklanma gereklidir. Örneğin, bir otonom araç insanların güvenliğini en öncelikli olarak ele almalıdır. Sonuç olarak, aracı çalıştıran yapay zeka, gece, fırtına, kar fırtınası, yola koşan çocuklar, evcil hayvanlar, yol çalışmaları gibi aracın karşılaşabileceği tüm olası senaryoları dikkate almalıdır. Bir yapay zeka sisteminin geniş bir koşul yelpazesini ne kadar güvenilir ve güvenli bir şekilde ele alabildiği, veri bilimci veya yapay zeka geliştiricisinin tasarım veya test sırasında ne kadar öngörüde bulunduğunu yansıtır. +Güveni inşa etmek için yapay zeka sistemlerinin normal ve beklenmedik koşullar altında güvenilir, güvenli ve tutarlı olması gerekir. Yapay zeka sistemlerinin çeşitli durumlarda, özellikle sıra dışı durumlarda nasıl davranacağını bilmek önemlidir. Yapay zeka çözümleri oluştururken, bu çözümlerin karşılaşacağı geniş bir koşullar yelpazesine nasıl uyum sağlayacağına önemli ölçüde dikkat edilmelidir. Örneğin, otonom bir aracın insanların güvenliğini en öncelikle tutması gerekir. Bu nedenle, aracı besleyen yapay zekanın gece, fırtına, tipi, sokaktan koşan çocuklar, evcil hayvanlar, yol çalışmaları gibi tüm olası senaryoları dikkate alması gerekir. Bir yapay zeka sisteminin çok geniş koşulları ne kadar güvenilir ve güvenli şekilde yönetebildiği, veri bilimcisinin veya yapay zeka geliştiricisinin sistemi tasarlarken veya test ederken ne kadar öngördüğünü yansıtır. -> [🎥 Video için buraya tıklayın: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl) +> [🎥 Bir video için buraya tıklayın: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl) ### Kapsayıcılık -Yapay zeka sistemleri herkesin katılımını sağlamalı ve güçlendirmelidir. Yapay zeka sistemlerini tasarlarken ve uygularken, veri bilimciler ve yapay zeka geliştiriciler, sistemi istemeden insanları dışlayabilecek potansiyel engelleri belirler ve ele alır. Örneğin, dünya genelinde 1 milyar engelli insan bulunmaktadır. Yapay zekanın ilerlemesiyle, günlük yaşamlarında bilgiye ve fırsatlara daha kolay erişebilirler. Engelleri ele alarak, herkes için daha iyi deneyimler sunan yapay zeka ürünlerini yenilikçi bir şekilde geliştirme fırsatları yaratılır. +Yapay zeka sistemleri herkesi kapsayacak ve güçlendirecek şekilde tasarlanmalıdır. Tasarım ve uygulama süreçlerinde veri bilimciler ve yapay zeka geliştiriciler, sistemi istemeden dışlayıcı kılabilecek potansiyel engelleri tanır ve çözerler. Örneğin dünyada 1 milyar engelli insan var. Yapay zeka ilerledikçe, bu kişiler günlük yaşamlarında bilgiye ve fırsatlara daha kolay erişebilirler. Engelleri çözerek, daha iyi deneyimlere sahip yapay zeka ürünleri geliştirme ve yenilik yapma fırsatları yaratılır ve bu herkesin yararına olur. -> [🎥 Video için buraya tıklayın: yapay zekada kapsayıcılık](https://www.microsoft.com/videoplayer/embed/RE4vl9v) +> [🎥 Yapay zekada kapsayıcılık videosu için buraya tıklayın](https://www.microsoft.com/videoplayer/embed/RE4vl9v) -### Güvenlik ve Gizlilik +### Güvenlik ve gizlilik -Yapay zeka sistemleri güvenli olmalı ve insanların gizliliğine saygı göstermelidir. Gizliliği, bilgileri veya hayatları riske atan sistemlere insanlar daha az güvenir. Makine öğrenimi modellerini eğitirken, en iyi sonuçları elde etmek için verilere güveniriz. Bunu yaparken, verilerin kaynağı ve bütünlüğü dikkate alınmalıdır. Örneğin, veriler kullanıcı tarafından mı gönderildi yoksa kamuya açık mıydı? Ardından, verilerle çalışırken, gizli bilgileri koruyabilen ve saldırılara karşı dirençli yapay zeka sistemleri geliştirmek önemlidir. Yapay zeka daha yaygın hale geldikçe, gizliliği korumak ve önemli kişisel ve iş bilgilerini güvence altına almak giderek daha kritik ve karmaşık hale geliyor. Gizlilik ve veri güvenliği sorunları, yapay zeka için özellikle dikkat gerektirir çünkü verilere erişim, yapay zeka sistemlerinin insanlar hakkında doğru ve bilgilendirilmiş tahminler ve kararlar vermesi için gereklidir. +Yapay zeka sistemleri güvenli olmalı ve insanların gizliliğine saygı göstermelidir. Gizliliklerini, bilgilerini veya hayatlarını riske atan sistemlere insanların güveni daha azdır. Makine öğrenimi modellerini eğitirken en iyi sonuçları almaya çalışırız. Bu süreçte verinin kaynağı ve bütünlüğü göz önünde bulundurulmalıdır. Örneğin, veri kullanıcılardan mı yoksa kamuya açık mı? Devamında, veriler üzerinde çalışırken gizli bilgileri koruyabilen ve saldırılara dayanabilen yapay zeka sistemleri geliştirmek kritik önem taşır. Yapay zeka yaygınlaştıkça gizliliğin korunması ve önemli kişisel ve ticari bilgilerin güvenliği daha kritik ve karmaşık hale gelir. Yapay zeka için gizlilik ve veri güvenliği sorunlarına özellikle dikkat edilmelidir çünkü yapay zeka sistemlerinin doğru ve bilinçli tahminler ve kararlar verebilmesi için verilere erişim gereklidir. -> [🎥 Video için buraya tıklayın: yapay zekada güvenlik](https://www.microsoft.com/videoplayer/embed/RE4voJF) +> [🎥 Yapay zekada güvenlik videosu için buraya tıklayın](https://www.microsoft.com/videoplayer/embed/RE4voJF) -- Endüstri olarak, GDPR (Genel Veri Koruma Yönetmeliği) gibi düzenlemelerle önemli ilerlemeler kaydettik. -- Ancak yapay zeka sistemleriyle, sistemleri daha kişisel ve etkili hale getirmek için daha fazla kişisel veri ihtiyacı ile gizlilik arasındaki gerilimi kabul etmeliyiz. -- İnternetle bağlantılı bilgisayarların doğuşunda olduğu gibi, yapay zeka ile ilgili güvenlik sorunlarında da büyük bir artış görüyoruz. -- Aynı zamanda, yapay zekanın güvenliği artırmak için kullanıldığını da görüyoruz. Örneğin, modern antivirüs tarayıcılarının çoğu bugün yapay zeka sezgileriyle çalışıyor. -- Veri Bilimi süreçlerimizin en son gizlilik ve güvenlik uygulamalarıyla uyum içinde olmasını sağlamalıyız. +- Endüstri olarak, GDPR (Genel Veri Koruma Yönetmeliği) gibi düzenlemelerle önemli gizlilik ve güvenlik ilerlemeleri kaydettik. +- Ancak yapay zeka sistemlerinde, sistemleri daha kişisel ve etkili yapmak için daha fazla kişisel veriye ihtiyaç ile gizlilik arasında bir gerilim olduğunu kabul etmeliyiz. +- İnternetle bağlı bilgisayarların doğuşu gibi, yapay zekayla ilişkili güvenlik sorunlarında da büyük bir artış görüyoruz. +- Aynı zamanda yapay zekanın güvenliği iyileştirmek için kullanıldığını görüyoruz. Örneğin, çoğu modern antivirüs tarayıcısı artık yapay zeka sezgileriyle çalışıyor. +- Veri Bilimi süreçlerimizin en son gizlilik ve güvenlik uygulamalarıyla uyumlu olması gerekiyor. -### Şeffaflık -Yapay zeka sistemleri anlaşılabilir olmalıdır. Şeffaflığın önemli bir kısmı, yapay zeka sistemlerinin ve bileşenlerinin davranışını açıklamaktır. Yapay zeka sistemlerinin anlaşılmasını geliştirmek, paydaşların nasıl ve neden çalıştıklarını anlamalarını gerektirir, böylece potansiyel performans sorunlarını, güvenlik ve gizlilik endişelerini, önyargıları, dışlayıcı uygulamaları veya istenmeyen sonuçları belirleyebilirler. Ayrıca, yapay zeka sistemlerini kullananların, bunları ne zaman, neden ve nasıl kullanmayı seçtikleri konusunda dürüst ve açık olmaları gerektiğine inanıyoruz. Kullandıkları sistemlerin sınırlamaları hakkında da bilgi vermelidirler. Örneğin, bir banka tüketici kredi kararlarını desteklemek için bir yapay zeka sistemi kullanıyorsa, sonuçları incelemek ve sistemin önerilerini hangi verilerin etkilediğini anlamak önemlidir. Hükümetler, endüstrilerde yapay zekayı düzenlemeye başladığından, veri bilimciler ve kuruluşlar, bir yapay zeka sisteminin düzenleyici gereklilikleri karşılayıp karşılamadığını, özellikle istenmeyen bir sonuç olduğunda açıklamalıdır. - -> [🎥 Video için buraya tıklayın: yapay zekada şeffaflık](https://www.microsoft.com/videoplayer/embed/RE4voJF) +### Şeffaflık +Yapay zeka sistemleri anlaşılabilir olmalıdır. Şeffaflığın kritik bir parçası, yapay zeka sistemlerinin ve bileşenlerinin davranışını açıklamaktır. Yapay zeka sistemlerinin anlaşılmasını geliştirmek, paydaşların sistemlerin nasıl ve neden işlediğini anlamasını gerektirir; bu sayede performans sorunlarını, güvenlik ve gizlilik endişelerini, önyargıları, dışlayıcı uygulamaları veya istenmeyen sonuçları tespit edebilirler. Ayrıca yapay zeka sistemlerini kullananların, bunları ne zaman, neden ve nasıl devreye aldıklarını ve hangi sınırlamalara sahip olduklarını dürüstçe açıklamaları gerektiğine inanıyoruz. Örneğin, bir banka yapay zeka sistemi kullanarak kredi kararlarını destekliyorsa, sonuçları inceleyip hangi verilerin sistemin önerilerini etkilediğini anlamak önemlidir. Hükümetler yapay zekayı düzenlemeye başladığı için, veri bilimciler ve kurumlar, bir yapay zeka sisteminin düzenleyici gereklilikleri karşılayıp karşılamadığını, özellikle istenmeyen sonuçlarda açıklamak zorundadır. -- Yapay zeka sistemleri çok karmaşık olduğu için nasıl çalıştıklarını anlamak ve sonuçları yorumlamak zordur. -- Bu anlayış eksikliği, bu sistemlerin nasıl yönetildiğini, işletildiğini ve belgelenmesini etkiler. -- Daha da önemlisi, bu anlayış eksikliği, bu sistemlerin ürettiği sonuçlara dayanarak alınan kararları etkiler. +> [🎥 Yapay zekada şeffaflık videosu için buraya tıklayın](https://www.microsoft.com/videoplayer/embed/RE4voJF) -### Hesap Verebilirlik +- Yapay zeka sistemleri çok karmaşık olduğundan, nasıl çalıştıklarını anlamak ve sonuçları yorumlamak zordur. +- Bu anlayış eksikliği, bu sistemlerin yönetilişi, uygulanışı ve belgelenişini etkiler. +- Daha da önemlisi, bu anlayış eksikliği, bu sistemlerin ürettiği sonuçlarla yapılan kararları etkiler. -Yapay zeka sistemlerini tasarlayan ve uygulayan kişiler, sistemlerinin nasıl çalıştığı konusunda hesap verebilir olmalıdır. Hesap verebilirlik ihtiyacı, özellikle yüz tanıma gibi hassas teknolojilerde çok önemlidir. Son zamanlarda, özellikle kayıp çocukları bulmak gibi kullanımlarda teknolojinin potansiyelini gören kolluk kuvvetleri tarafından yüz tanıma teknolojisine olan talep artmıştır. Ancak, bu teknolojiler bir hükümet tarafından vatandaşlarının temel özgürlüklerini riske atmak için kullanılabilir, örneğin belirli bireylerin sürekli gözetimini sağlamak için. Bu nedenle, veri bilimciler ve kuruluşlar, yapay zeka sistemlerinin bireyler veya toplum üzerindeki etkisinden sorumlu olmalıdır. +### Sorumluluk + +Yapay zeka sistemlerini tasarlayan ve kullanan insanlar, sistemlerinin nasıl çalıştığından sorumlu olmalıdır. Yüz tanıma gibi hassas teknolojilerde sorumluluk özellikle önemlidir. Son zamanlarda, çalıntı çocukları bulmak gibi kullanımlarda potansiyel görülen bu teknolojiye, özellikle güvenlik güçlerinden yoğun talep artışı olmuştur. Ancak bu teknolojiler, örneğin belirli bireylerin sürekli gözetilmesini mümkün kılarak, bir hükümetin vatandaşlarının temel özgürlüklerini riske atacak şekilde kullanılabilir. Bu nedenle, veri bilimciler ve kurumlar, yapay zeka sistemlerinin bireyler veya toplum üzerindeki etkileri için sorumlu olmalıdır. -[![Önde Gelen Yapay Zeka Araştırmacısı Yüz Tanıma Yoluyla Toplu Gözetim Uyarısı](../../../../1-Introduction/3-fairness/images/accountability.png)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft'un Sorumlu Yapay Zeka Yaklaşımı") +[![Lider Yapay Zeka Araştırmacısı Yüz Tanıma ile Kitlesel Gözetim Uyarısı](../../../../translated_images/tr/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft'un Sorumlu Yapay Zekaya Yaklaşımı") -> 🎥 Yukarıdaki görüntüye tıklayarak videoyu izleyin: Yüz Tanıma Yoluyla Toplu Gözetim Uyarısı +> 🎥 Yukarıdaki resme tıklayarak videoyu izleyin: Yüz Tanıma ile Kitlesel Gözetim Uyarısı -Sonuç olarak, yapay zekayı topluma getiren ilk nesil olarak, bilgisayarların insanlara karşı hesap verebilir olmasını nasıl sağlayacağımız ve bilgisayarları tasarlayan insanların diğer herkese karşı hesap verebilir olmasını nasıl sağlayacağımız, neslimizin en büyük sorularından biridir. +Sonuç olarak, AI'yı topluma getiren ilk nesil olarak bizim neslimize yönelen en büyük sorulardan biri, bilgisayarların insanlara karşı sorumlu kalmasını ve bilgisayarları tasarlayanların herkes karşısında sorumlu olmasını nasıl sağlayacağımızdır. -## Etki Değerlendirmesi +## Etki değerlendirmesi -Bir makine öğrenimi modelini eğitmeden önce, yapay zeka sisteminin amacını, planlanan kullanımını, nerede uygulanacağını ve sistemle kimlerin etkileşimde bulunacağını anlamak için bir etki değerlendirmesi yapmak önemlidir. Bunlar, sistemi değerlendiren inceleyiciler veya test edenler için potansiyel riskleri ve beklenen sonuçları belirlerken dikkate alınması gereken faktörleri anlamalarına yardımcı olur. +Bir makine öğrenimi modeli eğitmeden önce, yapay zeka sisteminin amacını; kullanım şeklinin ne olduğunu; nerede uygulanacağını; ve sistemle kimlerin etkileşimde bulunacağını anlamak için etki değerlendirmesi yapmak önemlidir. Bu, sistemi inceleyen veya test eden kişilerin potansiyel riskleri ve beklenen sonuçları belirlerken hangi faktörleri göz önünde bulundurması gerektiğini bilmelerine yardımcı olur. -Etki değerlendirmesi yaparken odaklanılması gereken alanlar şunlardır: +Etki değerlendirmesi yapılırken odaklanılan alanlar şunlardır: -* **Bireyler üzerindeki olumsuz etkiler**. Sistemin performansını engelleyen herhangi bir kısıtlama veya gereklilik, desteklenmeyen kullanım veya bilinen sınırlamaların farkında olmak, sistemin bireylere zarar verebilecek şekilde kullanılmamasını sağlamak için önemlidir. -* **Veri gereksinimleri**. Sistemin verileri nasıl ve nerede kullanacağını anlamak, inceleyicilerin dikkate alması gereken veri gereksinimlerini (örneğin, GDPR veya HIPPA veri düzenlemeleri) keşfetmelerini sağlar. Ayrıca, verilerin kaynağı veya miktarının eğitim için yeterli olup olmadığını inceleyin. -* **Etki özeti**. Sistemin kullanımından kaynaklanabilecek potansiyel zararların bir listesini toplayın. Makine öğrenimi yaşam döngüsü boyunca, belirlenen sorunların azaltılıp azaltılmadığını veya ele alınıp alınmadığını gözden geçirin. -* **Altı temel ilke için uygulanabilir hedefler**. Her bir ilkenin hedeflerinin karşılanıp karşılanmadığını ve herhangi bir boşluk olup olmadığını değerlendirin. +* **Bireyler üzerindeki olumsuz etkiler**. Sistemin performansını engelleyen kısıtlamalar, desteklenmeyen kullanımlar veya bilinen sınırlamalar konusunda farkındalık, bireylere zarar verilmemesi için kritik öneme sahiptir. +* **Veri gereksinimleri**. Sistemin veriyi nasıl ve nerede kullanacağını anlamak, inceleyenlerin uyulması gereken veri gereksinimlerini (örneğin GDPR veya HIPAA gibi) araştırmasına olanak verir. Ayrıca, veri kaynağı ve miktarının eğitime yeterli olup olmadığını kontrol etmek gerekir. +* **Etki özeti**. Sistem kullanımından ortaya çıkabilecek olası zararların listesini toplamak. Makine öğrenimi yaşam döngüsü boyunca, belirlenen sorunların önlenip önlenmediğini incelemek. +* **Altı temel ilkenin her biri için uygulanabilir hedefler**. Her ilkenin hedeflerinin karşılanıp karşılanmadığını değerlendirmek ve varsa eksiklikleri belirlemek. -## Sorumlu Yapay Zeka ile Hata Ayıklama -Bir yazılım uygulamasını hata ayıklamak gibi, bir yapay zeka sistemini hata ayıklamak, sistemdeki sorunları belirleme ve çözme sürecidir. Bir modelin beklenildiği gibi veya sorumlu bir şekilde performans göstermemesine neden olan birçok faktör vardır. Çoğu geleneksel model performans metriği, bir modelin performansının nicel toplamlarıdır ve bir modelin sorumlu yapay zeka ilkelerini nasıl ihlal ettiğini analiz etmek için yeterli değildir. Ayrıca, bir makine öğrenimi modeli, sonuçlarını neyin yönlendirdiğini anlamayı veya hata yaptığında açıklama sağlamayı zorlaştıran bir kara kutudur. Bu kursta daha sonra, yapay zeka sistemlerini hata ayıklamak için Sorumlu Yapay Zeka panosunu nasıl kullanacağımızı öğreneceğiz. Pano, veri bilimciler ve yapay zeka geliştiriciler için şu işlemleri gerçekleştirmek üzere kapsamlı bir araç sağlar: +## Sorumlu yapay zeka ile hata ayıklama -* **Hata analizi**. Modelin adalet veya güvenilirliği etkileyebilecek hata dağılımını belirlemek. -* **Model genel görünümü**. Modelin performansında veri grupları arasında nerede farklılıklar olduğunu keşfetmek. -* **Veri analizi**. Veri dağılımını anlamak ve adalet, kapsayıcılık ve güvenilirlik sorunlarına yol açabilecek olası önyargıları belirlemek. -* **Model yorumlanabilirliği**. Modelin tahminlerini neyin etkilediğini veya yönlendirdiğini anlamak. Bu, modelin davranışını açıklamak için önemlidir ve şeffaflık ve hesap verebilirlik açısından kritiktir. +Bir yazılım uygulamasına hata ayıklama yapılması gibi, bir yapay zeka sistemine hata ayıklama yapmak da sistemi etkileyen hataları belirleme ve çözme sürecidir. Bir modelin beklenen veya sorumlu şekilde çalışmamasını etkileyen birçok faktör vardır. Geleneksel performans metrikleri genellikle modelin performansının niceliksel toplamlarıdır ve modelin sorumlu yapay zeka ilkelerini nasıl ihlal ettiğini analiz etmek için yeterli değildir. Ayrıca, makine öğrenimi modeli çıktısını neyin etkilediğini anlamayı zorlaştıran kara kutu gibidir ve hata yaptığında açıklama yapmak zordur. Bu derste, yapay zeka sistemlerini hata ayıklamada yardımcı olan Sorumlu Yapay Zeka kontrol panelini nasıl kullanacağımızı öğreneceğiz. Kontrol paneli, veri bilimciler ve yapay zeka geliştiricileri için şu kapsamlı araçları sunar: -## 🚀 Zorluk +* **Hata analizi**. Sistemin adaletini veya güvenilirliğini etkileyebilecek hata dağılımının tespiti. +* **Model genel görünümü**. Modelin performansındaki farklılıkların veri kümeleri arasında nerede olduğunu keşfetmek. +* **Veri analizi**. Veri dağılımını anlayarak, adalet, kapsayıcılık ve güvenilirlik sorunlarına yol açabilecek önyargıları tespit etmek. +* **Model yorumlanabilirliği**. Modelin tahminlerini etkileyen faktörleri anlamak. Bu, şeffaflık ve sorumluluk için modelin davranışını açıklamada yardımcı olur. -Zararların baştan önlenmesi için şunları yapmalıyız: -- sistemler üzerinde çalışan insanlar arasında farklı geçmişlere ve bakış açılarına sahip olmak -- toplumumuzun çeşitliliğini yansıtan veri setlerine yatırım yapmak -- makine öğrenimi yaşam döngüsü boyunca sorumlu yapay zekayı tespit etmek ve düzeltmek için daha iyi yöntemler geliştirmek +## 🚀 Meydan okuma + +Zararların baştan engellenmesi için: -Model oluşturma ve kullanımı sırasında bir modelin güvenilmezliğinin açıkça görüldüğü gerçek yaşam senaryolarını düşünün. Başka neleri dikkate almalıyız? +- Sistemler üzerinde çalışan kişiler arasında çeşitli geçmişler ve bakış açıları olsun +- Toplumumuzun çeşitliliğini yansıtan veri setlerine yatırım yapılsın +- Makine öğrenimi yaşam döngüsü boyunca sorumlu yapay zekayı tespit edip düzeltmek için daha iyi yöntemler geliştirilsin -## [Ders Sonrası Test](https://ff-quizzes.netlify.app/en/ml/) +Model oluşturma ve kullanımı aşamalarında güvenilmezlik belirgin olduğu gerçek yaşam senaryolarını düşünün. Başka neleri dikkate almalıyız? -## Gözden Geçirme ve Kendi Kendine Çalışma +## [Ders sonrası quiz](https://ff-quizzes.netlify.app/en/ml/) -Bu derste, makine öğreniminde adalet ve adaletsizlik kavramlarının temellerini öğrendiniz. -Bu atölyeyi izleyerek konulara daha derinlemesine dalın: +## Gözden geçirme ve kendi kendine çalışma + -- Sorumlu yapay zeka arayışı: İlkeleri uygulamaya dökmek - Besmira Nushi, Mehrnoosh Sameki ve Amit Sharma tarafından +Bu derste, makine öğreniminde adalet ve adaletsizlik kavramlarının bazı temel bilgilerini öğrendiniz. + +Konulara daha derinlemesine dalmak için bu atölyeyi izleyin: -[![Sorumlu AI Araç Kutusu: Sorumlu yapay zeka oluşturmak için açık kaynaklı bir çerçeve](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: Sorumlu yapay zeka oluşturmak için açık kaynaklı bir çerçeve") +- Sorumlu Yapay Zekanın Peşinde: İlkeleri Pratiğe Dökmek, Besmira Nushi, Mehrnoosh Sameki ve Amit Sharma tarafından +[![Sorumlu Yapay Zeka Araç Kutusu: Sorumlu yapay zeka oluşturmak için açık kaynaklı bir çerçeve](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: Sorumlu yapay zeka oluşturmak için açık kaynaklı bir çerçeve") -> 🎥 Yukarıdaki görsele tıklayarak videoyu izleyin: RAI Toolbox: Sorumlu yapay zeka oluşturmak için açık kaynaklı bir çerçeve - Besmira Nushi, Mehrnoosh Sameki ve Amit Sharma tarafından +> 🎥 Video için yukarıdaki resme tıklayın: RAI Toolbox: Besmira Nushi, Mehrnoosh Sameki ve Amit Sharma tarafından hazırlanan sorumlu yapay zeka oluşturmak için açık kaynaklı bir çerçeve -Ayrıca okuyun: +Ayrıca, okuyun: -- Microsoft’un Sorumlu AI kaynak merkezi: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) +- Microsoft’un RAI kaynak merkezi: [Sorumlu Yapay Zeka Kaynakları – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) -- Microsoft’un FATE araştırma grubu: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/) +- Microsoft’un FATE araştırma grubu: [FATE: Yapay Zekada Adalet, Hesap Verebilirlik, Şeffaflık ve Etik - Microsoft Araştırma](https://www.microsoft.com/research/theme/fate/) RAI Araç Kutusu: -- [Responsible AI Toolbox GitHub deposu](https://github.com/microsoft/responsible-ai-toolbox) +- [Sorumlu Yapay Zeka Araç Kutusu GitHub deposu](https://github.com/microsoft/responsible-ai-toolbox) -Azure Machine Learning'in adalet sağlama araçları hakkında okuyun: +Azure Machine Learning'in adaleti sağlamak için araçları hakkında bilgi edinin: - [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott) ## Ödev -[RAI Toolbox’u Keşfedin](assignment.md) +[RAI Araç Kutusunu Keşfet](assignment.md) --- -**Feragatname**: -Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluğu sağlamak için çaba göstersek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file + +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba sarf etsek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayınız. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımı sonucu ortaya çıkabilecek yanlış anlamalardan veya yanlış yorumlamalardan sorumlu değiliz. + \ No newline at end of file diff --git a/translations/tr/2-Regression/1-Tools/README.md b/translations/tr/2-Regression/1-Tools/README.md index 70f75a47f..3dba508fc 100644 --- a/translations/tr/2-Regression/1-Tools/README.md +++ b/translations/tr/2-Regression/1-Tools/README.md @@ -1,120 +1,121 @@ -# Python ve Scikit-learn ile Regresyon Modellerine Başlangıç +# Regresyon modelleri için Python ve Scikit-learn ile başlayın -![Bir sketchnote'ta regresyonların özeti](../../../../sketchnotes/ml-regression.png) +![Bir sketchnote içinde regresyonların özeti](../../../../translated_images/tr/ml-regression.4e4f70e3b3ed446e.webp) > Sketchnote: [Tomomi Imura](https://www.twitter.com/girlie_mac) -## [Ders Öncesi Test](https://ff-quizzes.netlify.app/en/ml/) +## [Ders öncesi quiz](https://ff-quizzes.netlify.app/en/ml/) -> ### [Bu ders R dilinde de mevcut!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html) +> ### [Bu ders R dilinde de mevcuttur!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html) ## Giriş -Bu dört derste, regresyon modelleri oluşturmayı öğreneceksiniz. Bunların ne işe yaradığını birazdan tartışacağız. Ancak başlamadan önce, sürece başlamak için doğru araçlara sahip olduğunuzdan emin olun! +Bu dört derste, regresyon modelleri oluşturmayı keşfedeceksiniz. Bunun ne işe yaradığını kısa bir süre içinde tartışacağız. Fakat herhangi bir şeye başlamadan önce, süreci başlatmak için doğru araçlara sahip olduğunuzdan emin olun! -Bu derste şunları öğreneceksiniz: +Bu derste, nasıl yapılacağını öğreneceksiniz: -- Bilgisayarınızı yerel makine öğrenimi görevleri için yapılandırmayı. -- Jupyter defterleriyle çalışmayı. -- Scikit-learn'ü kullanmayı ve kurulumunu. -- Uygulamalı bir egzersizle doğrusal regresyonu keşfetmeyi. +- Yerel makine öğrenimi görevleri için bilgisayarınızı yapılandırmak. +- Jupyter Notebooks ile çalışmak. +- Kurulum dahil olmak üzere Scikit-learn kullanmak. +- Uygulamalı bir egzersizle doğrusal regresyonu keşfetmek. -## Kurulumlar ve Yapılandırmalar +## Kurulumlar ve yapılandırmalar -[![Başlangıç için Araçlarınızı Hazırlayın - Makine Öğrenimi Modelleri Oluşturma](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "Başlangıç için Araçlarınızı Hazırlayın - Makine Öğrenimi Modelleri Oluşturma") +[![Yeni başlayanlar için ML - Makine Öğrenimi modelleri oluşturmak için araçlarınızı hazırlayın](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "Yeni başlayanlar için ML - Makine Öğrenimi modelleri oluşturmak için araçlarınızı hazırlayın") -> 🎥 Yukarıdaki görsele tıklayarak bilgisayarınızı ML için yapılandırma sürecini anlatan kısa bir videoyu izleyebilirsiniz. +> 🎥 Bilgisayarınızı ML için yapılandırmayı anlatan kısa video için yukarıdaki görsele tıklayın. -1. **Python'u Kurun**. Bilgisayarınızda [Python](https://www.python.org/downloads/) yüklü olduğundan emin olun. Python, birçok veri bilimi ve makine öğrenimi görevi için kullanılacaktır. Çoğu bilgisayar sisteminde zaten bir Python kurulumu bulunur. Bazı kullanıcılar için kurulumu kolaylaştıran [Python Kodlama Paketleri](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) de mevcuttur. +1. **Python kurun**. Bilgisayarınızda [Python](https://www.python.org/downloads/) yüklü olduğundan emin olun. Python'u birçok veri bilimi ve makine öğrenimi görevi için kullanacaksınız. Çoğu bilgisayar sistemi zaten Python kurulumu içerir. Bazı kullanıcıların kurulumu kolaylaştırması için kullanışlı [Python Kodlama Paketleri](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) de mevcuttur. - Ancak, Python'un bazı kullanımları bir yazılım sürümünü gerektirirken, diğerleri farklı bir sürüm gerektirir. Bu nedenle, bir [sanallaştırılmış ortam](https://docs.python.org/3/library/venv.html) içinde çalışmak faydalı olabilir. + Python'un bazı kullanımları yazılımın bir sürümünü gerektirirken, diğerleri başka bir sürümünü gerektirir. Bu nedenle, bir [sanal ortam](https://docs.python.org/3/library/venv.html) içinde çalışmak faydalıdır. -2. **Visual Studio Code'u Kurun**. Bilgisayarınızda Visual Studio Code'un yüklü olduğundan emin olun. [Visual Studio Code'u kurma](https://code.visualstudio.com/) talimatlarını izleyerek temel kurulumu gerçekleştirin. Bu kursta Python'u Visual Studio Code'da kullanacağınız için, Python geliştirme için [Visual Studio Code'u yapılandırma](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) konusunda bilgi edinmek isteyebilirsiniz. +2. **Visual Studio Code yükleyin**. Bilgisayarınızda Visual Studio Code yüklü olduğundan emin olun. Temel kurulum için bu talimatları izleyerek [Visual Studio Code'u yükleyin](https://code.visualstudio.com/). Bu derste Python'u Visual Studio Code içinde kullanacağınız için, Python geliştirmesi için VS Code'u nasıl [yapılandıracağınızı gözden geçirmek](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) isteyebilirsiniz. - > Python ile rahat çalışmak için bu [öğrenme modülleri](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) koleksiyonunu inceleyin. + > Python'u öğrenmek için bu [Learn modülleri koleksiyonunu](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) inceleyin > - > [![Visual Studio Code ile Python Kurulumu](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Visual Studio Code ile Python Kurulumu") + > [![Visual Studio Code ile Python kurulumu](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Visual Studio Code ile Python kurulumu") > - > 🎥 Yukarıdaki görsele tıklayarak Visual Studio Code'da Python kullanımıyla ilgili bir video izleyebilirsiniz. + > 🎥 Yukarıdaki görsele tıklayarak VS Code içinde Python kullanımını gösteren videoyu izleyin. -3. **Scikit-learn'ü Kurun**, [bu talimatları](https://scikit-learn.org/stable/install.html) izleyerek. Python 3 kullanmanız gerektiğinden, bir sanallaştırılmış ortam kullanmanız önerilir. Eğer bu kütüphaneyi bir M1 Mac'te kuruyorsanız, yukarıdaki bağlantıda özel talimatlar bulunmaktadır. +3. **Scikit-learn yükleyin**, [bu talimatları](https://scikit-learn.org/stable/install.html) takip ederek. Python 3 kullandığınızdan emin olmanız gerektiği için, bir sanal ortam kullanmanız önerilir. M1 Mac üzerinde bu kütüphaneyi yükliyorsanız, yukarıdaki bağlantıdaki sayfada özel talimatlar bulunmaktadır. -4. **Jupyter Notebook'u Kurun**. [Jupyter paketini kurmanız](https://pypi.org/project/jupyter/) gerekecek. +1. **Jupyter Notebook yükleyin**. [Jupyter paketini](https://pypi.org/project/jupyter/) yüklemeniz gerekecek. -## Makine Öğrenimi Geliştirme Ortamınız +## Makine Öğrenimi geliştirme ortamınız -Python kodunuzu geliştirmek ve makine öğrenimi modelleri oluşturmak için **defterler** kullanacaksınız. Bu tür dosyalar veri bilimciler için yaygın bir araçtır ve `.ipynb` uzantısıyla tanınabilirler. +Python kodunuzu geliştirmek ve makine öğrenimi modelleri oluşturmak için **notebook'ları** kullanacaksınız. Bu dosya türü veri bilimciler için yaygın bir araçtır ve `.ipynb` uzantısı ile tanımlanır. -Defterler, geliştiricinin hem kod yazmasına hem de kodun etrafında notlar ve belgeler oluşturmasına olanak tanıyan etkileşimli bir ortamdır. Bu, deneysel veya araştırma odaklı projeler için oldukça faydalıdır. +Notebooks, geliştiricinin kod yazması kadar kod etrafına notlar, belgeler de ekleyebileceği interaktif bir ortamdır. Bu, deneysel veya araştırma odaklı projeler için oldukça faydalıdır. -[![Başlangıç için Jupyter Defterlerini Ayarlayın - Regresyon Modelleri Oluşturma](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "Başlangıç için Jupyter Defterlerini Ayarlayın - Regresyon Modelleri Oluşturma") +[![Yeni başlayanlar için ML - Regresyon modelleri oluşturmayı başlatmak için Jupyter Notebooks kurun](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "Yeni başlayanlar için ML - Regresyon modelleri oluşturmayı başlatmak için Jupyter Notebooks kurun") -> 🎥 Yukarıdaki görsele tıklayarak bu egzersizi anlatan kısa bir video izleyebilirsiniz. +> 🎥 Bu egzersizi adım adım anlatan kısa video için yukarıdaki görsele tıklayın. -### Egzersiz - Bir Defterle Çalışma +### Egzersiz - bir notebook ile çalışın Bu klasörde _notebook.ipynb_ dosyasını bulacaksınız. -1. _notebook.ipynb_ dosyasını Visual Studio Code'da açın. +1. _notebook.ipynb_'yi Visual Studio Code'da açın. - Bir Jupyter sunucusu Python 3+ ile başlatılacaktır. Defterde `çalıştırılabilir` kod parçaları bulacaksınız. Bir kod bloğunu çalıştırmak için, oynat düğmesine benzeyen simgeyi seçebilirsiniz. + Python 3+ çalışan bir Jupyter sunucusu başlatılacak. Notebook içinde `çalıştırılabilir` alanlar yani kod parçacıkları vardır. Bir kod bloğunu, oynat simgesine benzeyen ikona tıklayarak çalıştırabilirsiniz. -2. `md` simgesini seçin ve biraz markdown ekleyin, ardından şu metni yazın: **# Defterinize Hoş Geldiniz**. +1. `md` ikonunu seçin ve biraz markdown ekleyin, aşağıdaki metni yazın **# Notebook'unuza Hoş Geldiniz**. - Şimdi biraz Python kodu ekleyin. + Sonra biraz Python kodu ekleyin. -3. Kod bloğuna **print('hello notebook')** yazın. -4. Kodu çalıştırmak için oku seçin. +1. Kod bloğuna **print('hello notebook')** yazın. +1. Kodu çalıştırmak için ok işaretini seçin. - Yazdırılan ifadeyi görmelisiniz: + Yazdırılan ifade görünmeli: ```output hello notebook ``` -![Bir defter açıkken VS Code](../../../../2-Regression/1-Tools/images/notebook.jpg) +![VS Code içinde açık bir notebook](../../../../translated_images/tr/notebook.4a3ee31f396b8832.webp) -Kodunuzu yorumlarla birleştirerek defteri kendi kendine belgeleyebilirsiniz. +Kodunuzu kendinizi belgelemek için yorumlarla harmanlayabilirsiniz. -✅ Bir web geliştiricisinin çalışma ortamı ile bir veri bilimcinin çalışma ortamı arasındaki farkları bir dakika düşünün. +✅ Bir web geliştiricinin çalışma ortamının veri bilimcisinden ne kadar farklı olduğunu bir dakika düşünün. -## Scikit-learn ile Çalışmaya Başlama +## Scikit-learn ile çalışmaya başlamak -Artık Python yerel ortamınızda kurulu olduğuna ve Jupyter defterleriyle rahat olduğunuza göre, Scikit-learn ile de aynı rahatlığa ulaşalım (bunu `sci` olarak, `science` kelimesindeki gibi telaffuz edin). Scikit-learn, ML görevlerini gerçekleştirmenize yardımcı olacak [kapsamlı bir API](https://scikit-learn.org/stable/modules/classes.html#api-ref) sağlar. +Python yerel ortamınızda kuruldu ve Jupyter Notebooks ile rahat olduğunuz için, şimdi Scikit-learn (telaffuzu `sci` ‘science’ gibi) ile de aynı rahatlığa ulaşalım. Scikit-learn size ML görevlerini gerçekleştirmek için [kapsamlı bir API](https://scikit-learn.org/stable/modules/classes.html#api-ref) sağlar. -Web sitelerine göre ([kaynak](https://scikit-learn.org/stable/getting_started.html)), "Scikit-learn, denetimli ve denetimsiz öğrenmeyi destekleyen açık kaynaklı bir makine öğrenimi kütüphanesidir. Ayrıca model uyumu, veri ön işleme, model seçimi ve değerlendirme gibi çeşitli araçlar sunar." +[web sitelerine](https://scikit-learn.org/stable/getting_started.html) göre, "Scikit-learn, denetimli ve denetimsiz öğrenmeyi destekleyen açık kaynaklı bir makine öğrenimi kütüphanesidir. Ayrıca model uyumu, veri ön işleme, model seçimi ve değerlendirme ve pek çok başka araç sağlar." -Bu kursta, Scikit-learn ve diğer araçları kullanarak 'geleneksel makine öğrenimi' görevlerini gerçekleştirecek modeller oluşturacaksınız. Sinir ağları ve derin öğrenmeyi özellikle dahil etmedik, çünkü bunlar yakında çıkacak olan 'Başlangıç için Yapay Zeka' müfredatımızda daha iyi ele alınacaktır. +Bu derste 'geleneksel makine öğrenimi' görevleri olarak adlandırdığımız modelleri oluşturmak için Scikit-learn ve diğer araçları kullanacaksınız. Nöral ağlar ve derin öğrenmeden bilinçli olarak uzak durduk, zira bunlar yakında yayınlanacak 'Yeni Başlayanlar için AI' müfredatımızda kapsamlı şekilde ele alınacak. -Scikit-learn, modeller oluşturmayı ve bunları değerlendirmeyi kolaylaştırır. Öncelikli olarak sayısal verilerle çalışır ve öğrenme araçları olarak kullanılabilecek birkaç hazır veri seti içerir. Ayrıca, öğrencilerin denemesi için önceden oluşturulmuş modeller de içerir. Şimdi, önceden paketlenmiş verileri yükleme ve yerleşik bir tahminci kullanarak ilk ML modelimizi oluşturma sürecini keşfedelim. +Scikit-learn, modeller oluşturmayı ve değerlendirmeyi kolaylaştırır. Öncelikle sayısal verilerle çalışmaya odaklanmıştır ve öğrenme araçları olarak kullanılabilecek hazır birden fazla veri seti içerir. Ayrıca öğrencilerin deneyebileceği önceden hazırlanmış modeller sağlar. Öncelikle paketlenmiş veri yükleme ve yerleşik bir tahminci kullanarak Scikit-learn ile temel bir ML modeli kurma sürecini keşfedelim. -## Egzersiz - İlk Scikit-learn Defteriniz +## Egzersiz - ilk Scikit-learn notebook'unuz -> Bu eğitim, Scikit-learn'ün web sitesindeki [doğrusal regresyon örneğinden](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) ilham alınarak hazırlanmıştır. +> Bu öğretici, Scikit-learn web sitesindeki [doğrusal regresyon örneği](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) tarafından esinlenmiştir. -[![Başlangıç için Python'da İlk Doğrusal Regresyon Projeniz](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "Başlangıç için Python'da İlk Doğrusal Regresyon Projeniz") -> 🎥 Yukarıdaki görsele tıklayarak bu egzersizi anlatan kısa bir video izleyebilirsiniz. +[![Yeni başlayanlar için ML - Python'da İlk Doğrusal Regresyon Projeniz](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "Yeni başlayanlar için ML - Python'da İlk Doğrusal Regresyon Projeniz") -Bu derse ait _notebook.ipynb_ dosyasında, tüm hücreleri 'çöp kutusu' simgesine basarak temizleyin. +> 🎥 Bu egzersizi adım adım anlatan kısa video için yukarıdaki görsele tıklayın. -Bu bölümde, öğrenme amaçlı Scikit-learn'e dahil edilmiş diyabetle ilgili küçük bir veri setiyle çalışacaksınız. Diyabet hastaları için bir tedaviyi test etmek istediğinizi hayal edin. Makine öğrenimi modelleri, değişkenlerin kombinasyonlarına bağlı olarak hangi hastaların tedaviye daha iyi yanıt vereceğini belirlemenize yardımcı olabilir. Görselleştirildiğinde, çok temel bir regresyon modeli bile teorik klinik denemelerinizi organize etmenize yardımcı olacak değişkenler hakkında bilgi gösterebilir. +_notebook.ipynb_ dosyasında, tüm hücreleri 'çöp kutusu' ikonuna basarak temizleyin. -✅ Birçok regresyon yöntemi vardır ve hangisini seçeceğiniz, aradığınız cevaba bağlıdır. Örneğin, belirli bir yaşta bir kişinin muhtemel boyunu tahmin etmek istiyorsanız, **sayısal bir değer** aradığınız için doğrusal regresyon kullanırsınız. Eğer bir mutfağın vegan olup olmadığını belirlemek istiyorsanız, bir **kategori ataması** arıyorsunuz demektir ve lojistik regresyon kullanırsınız. Lojistik regresyonu daha sonra öğreneceksiniz. Verilerden sorabileceğiniz bazı soruları ve bu yöntemlerden hangisinin daha uygun olacağını düşünün. +Bu bölümde, Scikit-learn'e öğrenme amaçlı olarak dahil edilmiş küçük bir diyabet veri kümesiyle çalışacaksınız. Diyabet hastaları için bir tedavi test etmek istediğinizi hayal edin. Makine Öğrenimi modelleri, değişken kombinasyonlarına göre hangi hastaların tedaviye daha iyi yanıt vereceğini belirlemenize yardımcı olabilir. Çok temel bir regresyon modeli bile görselleştirildiğinde, teorik klinik deneylerinizi organize etmekte yardımcı olacak değişkenler hakkında bilgi verebilir. -Hadi bu göreve başlayalım. +✅ Birçok regresyon yöntemi türü vardır ve hangisini seçeceğiniz, aradığınız yanıta bağlıdır. Belirli bir yaş için muhtemel uzunluğu tahmin etmek istiyorsanız, **sayısal bir değer** aradığınız için doğrusal regresyon kullanırsınız. Diyet olarak vegan kabul edilip edilmemesi gibi bir tür yiyecek sınıflandırması ilgilendiriyorsa, **kategori ataması** arıyorsunuz demektir ve lojistik regresyon kullanırsınız. Lojistik regresyonu daha sonra öğreneceksiniz. Veriden sorabileceğiniz bazı soruları ve hangi yöntemin daha uygun olacağını biraz düşünün. -### Kütüphaneleri İçe Aktarma +Bu göreve başlayalım. + +### Kütüphaneleri içe aktar Bu görev için bazı kütüphaneleri içe aktaracağız: -- **matplotlib**. [Grafik oluşturma aracı](https://matplotlib.org/) ve bir çizgi grafiği oluşturmak için kullanacağız. -- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html), Python'da sayısal verilerle çalışmak için kullanışlı bir kütüphanedir. +- **matplotlib**. Faydalı bir [grafik aracı](https://matplotlib.org/)dır ve çizgi grafiği oluşturmak için kullanacağız. +- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html), Python'da sayısal veri ile çalışmak için yararlı bir kütüphanedir. - **sklearn**. Bu, [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) kütüphanesidir. -Görevlerinize yardımcı olması için bazı kütüphaneleri içe aktarın. +Görevlerinize yardımcı olacak bazı kütüphaneleri içe aktarın. -1. Aşağıdaki kodu yazarak içe aktarmaları ekleyin: +1. Aşağıdaki kodu yazarak içe aktarımları ekleyin: ```python import matplotlib.pyplot as plt @@ -122,26 +123,26 @@ Görevlerinize yardımcı olması için bazı kütüphaneleri içe aktarın. from sklearn import datasets, linear_model, model_selection ``` - Yukarıda `matplotlib`, `numpy` ve `sklearn`'den `datasets`, `linear_model` ve `model_selection` içe aktarılıyor. `model_selection`, verileri eğitim ve test setlerine ayırmak için kullanılır. + Yukarıda `matplotlib`, `numpy` içe aktarılıyor ve `sklearn`den `datasets`, `linear_model` ve `model_selection` içe aktarılıyor. `model_selection`, veriyi eğitim ve test setlerine bölmek için kullanılır. -### Diyabet Veri Seti +### Diyabet veri kümesi -Yerleşik [diyabet veri seti](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset), diyabetle ilgili 442 veri örneği içerir ve 10 özellik değişkeni içerir. Bunlardan bazıları şunlardır: +Dahili [diyabet veri kümesi](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset), diyabet çevresinde 442 örnek veri içerir ve 10 özellik değişkeni vardır, bunlardan bazıları: - age: yaş (yıl olarak) -- bmi: vücut kitle indeksi +- bmi: beden kitle indeksi - bp: ortalama kan basıncı - s1 tc: T-Hücreleri (bir tür beyaz kan hücresi) -✅ Bu veri seti, diyabetle ilgili araştırmalarda önemli bir özellik değişkeni olarak 'cinsiyet' kavramını içerir. Birçok tıbbi veri seti, bu tür ikili sınıflandırmaları içerir. Bu tür sınıflandırmaların, bir nüfusun belirli bölümlerini tedavilerden nasıl dışlayabileceğini biraz düşünün. +✅ Bu veri setinde, diyabet araştırmalarında önemli bir özellik değişken olan 'cinsiyet' kavramı vardır. Birçok tıbbi veri seti bu tür ikili sınıflandırmalar içerir. Bu tür sınıflandırmaların nüfusun bazı bölümlerini tedavilerden nasıl dışlayabileceğini biraz düşünün. Şimdi, X ve y verilerini yükleyin. -> 🎓 Unutmayın, bu denetimli bir öğrenmedir ve adlandırılmış bir 'y' hedefi gereklidir. +> 🎓 Unutmayın, bu denetimli öğrenmedir ve adlandırılmış bir 'y' hedefi gerekir. -Yeni bir kod hücresinde, `load_diabetes()` fonksiyonunu çağırarak diyabet veri setini yükleyin. `return_X_y=True` girdisi, `X`'in bir veri matrisi ve `y`'nin regresyon hedefi olacağını belirtir. +Yeni bir kod hücresinde, diyabet veri setini `load_diabetes()` çağırarak yükleyin. `return_X_y=True` girişi, `X`in veri matrisi ve `y`nin regresyon hedefi olacağını belirtir. -1. Veri matrisinin şeklini ve ilk elemanını göstermek için bazı print komutları ekleyin: +1. Veri matrisinin şekli ve ilk öğesini göstermek için birkaç yazdırma komutu ekleyin: ```python X, y = datasets.load_diabetes(return_X_y=True) @@ -149,9 +150,9 @@ Yeni bir kod hücresinde, `load_diabetes()` fonksiyonunu çağırarak diyabet ve print(X[0]) ``` - Aldığınız yanıt bir tuple'dır. Tuple'ın ilk iki değerini sırasıyla `X` ve `y`'ye atıyorsunuz. Daha fazla bilgi için [tuple'lar hakkında bilgi edinin](https://wikipedia.org/wiki/Tuple). + Dönen yanıt bir demet (tuple) olup, ona göre ilk iki değer sırasıyla `X` ve `y`ye atanır. Demetler hakkında daha fazla bilgi için [demetlere](https://wikipedia.org/wiki/Tuple) bakabilirsiniz. - Bu verilerin, 10 elemanlı diziler halinde şekillendirilmiş 442 öğeye sahip olduğunu görebilirsiniz: + Bu verinin 442 öğeden oluştuğunu ve bunların her birinin 10 elemanlı diziler şeklinde olduğunu görebilirsiniz: ```text (442, 10) @@ -159,39 +160,39 @@ Yeni bir kod hücresinde, `load_diabetes()` fonksiyonunu çağırarak diyabet ve -0.04340085 -0.00259226 0.01990842 -0.01764613] ``` - ✅ Veriler ile regresyon hedefi arasındaki ilişkiyi biraz düşünün. Doğrusal regresyon, özellik X ile hedef değişken y arasındaki ilişkileri tahmin eder. Diyabet veri seti için [hedefi](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) belgelerde bulabilir misiniz? Bu veri seti neyi gösteriyor? + ✅ Veriler ile regresyon hedefi arasındaki ilişkiyi biraz düşünün. Doğrusal regresyon, özellik X ile hedef değişken y arasındaki ilişkiyi tahmin eder. Diyabet veri kümesi için [hedefi](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) dokümantasyonda bulabilir misiniz? Bu veri seti verilen hedefle ne gösteriyor? -2. Daha sonra, bu veri setinin bir kısmını seçerek çizim yapın. Veri setinin 3. sütununu seçmek için `:` operatörünü kullanarak tüm satırları seçin ve ardından 3. sütunu (2. indeks) seçin. Verileri, çizim için gerekli olan 2D bir diziye dönüştürmek için `reshape(n_rows, n_columns)` kullanabilirsiniz. Parametrelerden biri -1 ise, ilgili boyut otomatik olarak hesaplanır. +2. Sonra, bu veri setinin bir kısmını çizdirmek için 3. sütunu seçin. Bunu tüm satırları seçmek için `:` operatörü ile ve daha sonra (2) indeksi ile 3. sütunu seçerek yapabilirsiniz. Veriyi çizim için gereken 2 boyutlu dizi haline getirmek için `reshape(n_rows, n_columns)` fonksiyonunu kullanabilirsiniz. Parametrelerden biri -1 ise, o boyut otomatik hesaplanır. ```python X = X[:, 2] X = X.reshape((-1,1)) ``` - ✅ İstediğiniz zaman, verilerin şeklini kontrol etmek için yazdırabilirsiniz. + ✅ Herhangi bir zamanda verinin şeklini kontrol etmek için yazdırın. -3. Artık çizim için hazır olan verilere sahipsiniz. Şimdi, bu veri setindeki sayılar arasında mantıklı bir ayrım yapıp yapamayacağını görmek için bir makine kullanabilirsiniz. Bunu yapmak için, hem verileri (X) hem de hedefi (y) test ve eğitim setlerine ayırmanız gerekir. Scikit-learn, bunu yapmak için basit bir yol sunar; test verilerinizi belirli bir noktada bölebilirsiniz. +3. Artık çizime hazır veriniz var, bir makinenin veri setindeki sayılar arasında mantıklı bir sınır belirlemesine izin verip vermediğine bakabilirsiniz. Bunu yapmak için, veri (X) ve hedef (y) test ve eğitim setlerine bölünmelidir. Scikit-learn bunu kolayca yapmanızı sağlar; test verinizi belirli bir noktada bölebilirsiniz. ```python X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33) ``` -4. Şimdi modelinizi eğitmeye hazırsınız! Doğrusal regresyon modelini yükleyin ve `model.fit()` kullanarak X ve y eğitim setlerinizle eğitin: +4. Şimdi modelinizi eğitmeye hazırsınız! Doğrusal regresyon modelini yükleyin ve `model.fit()` kullanarak X ve y eğitim setleriniz ile eğitin: ```python model = linear_model.LinearRegression() model.fit(X_train, y_train) ``` - ✅ `model.fit()` TensorFlow gibi birçok ML kütüphanesinde göreceğiniz bir fonksiyondur. + ✅ `model.fit()` fonksiyonu, TensorFlow gibi birçok ML kütüphanesinde gördüğünüz bir işlevdir -5. Daha sonra, test verilerini kullanarak bir tahmin oluşturun. Bu, veri grupları arasındaki çizgiyi çizmek için kullanılacaktır. +5. Sonra test verisini kullanarak `predict()` fonksiyonu ile tahmin oluşturun. Bu, veri grupları arasında bir çizgi çizmek için kullanılacak. ```python y_pred = model.predict(X_test) ``` -6. Şimdi verileri bir grafikte gösterme zamanı. Matplotlib bu görev için çok kullanışlı bir araçtır. Tüm X ve y test verilerinin bir dağılım grafiğini oluşturun ve modelin veri grupları arasındaki en uygun yere bir çizgi çizmek için tahmini kullanın. +6. Şimdi veriyi bir grafikte gösterme zamanı. Bu görev için matplotlib çok faydalı bir araçtır. Tüm X ve y test verilerinin bir saçılım grafiğini oluşturun ve tahmini kullanarak modelin veri grupları arasında en uygun yere bir çizgi çizin. ```python plt.scatter(X_test, y_test, color='black') @@ -202,28 +203,32 @@ Yeni bir kod hücresinde, `load_diabetes()` fonksiyonunu çağırarak diyabet ve plt.show() ``` - ![diyabetle ilgili veri noktalarını gösteren bir dağılım grafiği](../../../../2-Regression/1-Tools/images/scatterplot.png) -✅ Burada neler olduğunu biraz düşünün. Bir düz çizgi, birçok küçük veri noktasının arasından geçiyor, ancak tam olarak ne yapıyor? Bu çizgiyi, yeni ve daha önce görülmemiş bir veri noktasının, grafiğin y ekseniyle olan ilişkisini tahmin etmek için nasıl kullanabileceğinizi görebiliyor musunuz? Bu modelin pratik kullanımını kelimelere dökmeye çalışın. + ![diyabet verileri etrafında veri noktalarını gösteren saçılım grafiği](../../../../translated_images/tr/scatterplot.ad8b356bcbb33be6.webp) + + + ✅ Burada neler olup bittiği hakkında biraz düşünün. Bir doğru, birçok küçük veri noktasından geçiyor, peki tam olarak ne yapıyor? Yeni, görülmemiş bir veri noktasının grafiğin y eksenine göre nerede yer alması gerektiğini tahmin etmek için bu doğruyu nasıl kullanabileceğinizi görebiliyor musunuz? Bu modelin pratik kullanımını kelimelere dökmeye çalışın. -Tebrikler, ilk doğrusal regresyon modelinizi oluşturdunuz, bununla bir tahmin yaptınız ve bunu bir grafikte gösterdiniz! +Tebrikler, ilk doğrusal regresyon modelinizi oluşturdunuz, onunla bir tahmin yaptınız ve bunu bir grafikte gösterdiniz! --- ## 🚀Meydan Okuma -Bu veri kümesinden farklı bir değişkeni görselleştirin. İpucu: Şu satırı düzenleyin: `X = X[:,2]`. Bu veri kümesinin hedefi göz önüne alındığında, diyabetin bir hastalık olarak ilerleyişi hakkında neler keşfedebilirsiniz? -## [Ders sonrası sınav](https://ff-quizzes.netlify.app/en/ml/) +Bu veri setinden farklı bir değişkeni grafikle gösterin. İpucu: bu satırı düzenleyin: `X = X[:,2]`. Bu veri setinin hedefi göz önüne alındığında, diyabet hastalığının ilerleyişi hakkında neler keşfedebilirsiniz? +## [Ders sonrası quiz](https://ff-quizzes.netlify.app/en/ml/) -## Gözden Geçirme ve Kendi Kendine Çalışma +## Genel Bakış & Kendi Kendine Çalışma -Bu derste, basit doğrusal regresyon ile çalıştınız, tek değişkenli veya çok değişkenli doğrusal regresyon ile değil. Bu yöntemler arasındaki farklar hakkında biraz okuyun veya [bu videoya](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) göz atın. +Bu öğreticide, tek değişkenli veya çoklu doğrusal regresyon yerine basit doğrusal regresyon ile çalıştınız. Bu yöntemler arasındaki farklılıklar hakkında biraz okuyun veya [bu videoya](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) göz atın. -Regresyon kavramı hakkında daha fazla bilgi edinin ve bu teknikle hangi tür soruların yanıtlanabileceğini düşünün. Anlayışınızı derinleştirmek için [bu eğitimi](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) alın. +Regresyon kavramı hakkında daha fazla okuyun ve bu teknikle hangi tür soruların cevaplanabileceğini düşünün. Anlayışınızı derinleştirmek için bu [öğreticiyi](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) yapın. ## Ödev -[Farklı bir veri kümesi](assignment.md) +[Farklı bir veri seti](assignment.md) --- -**Feragatname**: -Bu belge, [Co-op Translator](https://github.com/Azure/co-op-translator) adlı yapay zeka çeviri hizmeti kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlıklar içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlama veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file + +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba sarf etsek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayınız. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımı sonucu ortaya çıkabilecek yanlış anlamalardan veya yanlış yorumlamalardan sorumlu değiliz. + \ No newline at end of file diff --git a/translations/tr/2-Regression/2-Data/README.md b/translations/tr/2-Regression/2-Data/README.md index c7b3b51e3..2b4a2b58b 100644 --- a/translations/tr/2-Regression/2-Data/README.md +++ b/translations/tr/2-Regression/2-Data/README.md @@ -1,62 +1,62 @@ -# Scikit-learn ile Bir Regresyon Modeli Oluşturma: Veriyi Hazırlama ve Görselleştirme +# Scikit-learn kullanarak bir regresyon modeli oluşturun: verileri hazırlayın ve görselleştirin -![Veri görselleştirme infografiği](../../../../2-Regression/2-Data/images/data-visualization.png) +![Veri görselleştirme infografiği](../../../../translated_images/tr/data-visualization.54e56dded7c1a804.webp) -İnfografik: [Dasani Madipalli](https://twitter.com/dasani_decoded) +Infografik [Dasani Madipalli](https://twitter.com/dasani_decoded) tarafından -## [Ders Öncesi Test](https://ff-quizzes.netlify.app/en/ml/) +## [Ders öncesi quiz](https://ff-quizzes.netlify.app/en/ml/) -> ### [Bu ders R dilinde de mevcut!](../../../../2-Regression/2-Data/solution/R/lesson_2.html) +> ### [Bu ders R dilinde mevcut!](../../../../2-Regression/2-Data/solution/R/lesson_2.html) ## Giriş -Scikit-learn ile makine öğrenimi modeli oluşturmak için gerekli araçları kurduğunuza göre, artık verilerinizle ilgili sorular sormaya hazırsınız. Verilerle çalışırken ve makine öğrenimi çözümleri uygularken, doğru soruları sormanın, veri setinizin potansiyelini doğru bir şekilde ortaya çıkarmak için çok önemli olduğunu anlamak önemlidir. +Artık Scikit-learn ile makine öğrenimi modeli oluşturmaya başlamak için ihtiyaç duyduğunuz araçlara sahipsiniz, verilerinize soru sormaya başlayabilirsiniz. Verilerle çalışırken ve ML çözümleri uygularken, veri setinizin potansiyellerini doğru şekilde açığa çıkarmak için doğru soruyu sormanın çok önemli olduğunu anlamak gereklidir. Bu derste şunları öğreneceksiniz: -- Verilerinizi model oluşturma için nasıl hazırlayacağınızı. -- Matplotlib kullanarak veri görselleştirmeyi. +- Model oluşturmak için verilerinizi nasıl hazırlayacağınızı. +- Verileri görselleştirmek için Matplotlib'i nasıl kullanacağınızı. +- Daha etkili veri görselleştirmesi için Seaborn'u nasıl kullanacağınızı. -## Verilerinizle Doğru Soruyu Sormak +## Verilerinize doğru soruyu sormak -Cevaplanmasını istediğiniz soru, hangi tür makine öğrenimi algoritmalarını kullanacağınızı belirleyecektir. Aldığınız cevabın kalitesi ise büyük ölçüde verilerinizin doğasına bağlı olacaktır. +Cevaplamanız gereken soru, nasıl bir ML algoritması kullanacağınızı belirleyecektir. Ve aldığınız cevabın kalitesi, verilerinizin doğasına büyük ölçüde bağlıdır. -Bu ders için sağlanan [verilere](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) bir göz atın. Bu .csv dosyasını VS Code'da açabilirsiniz. Hızlı bir inceleme, boşluklar, metin ve sayısal verilerin bir karışımı olduğunu hemen gösteriyor. Ayrıca, 'Package' adında, verilerin 'sacks', 'bins' ve diğer değerlerin bir karışımı olduğu garip bir sütun var. Aslında, bu veri biraz dağınık. +Bu derste verilen [veriye](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) bir göz atın. Bu .csv dosyasını VS Code'da açabilirsiniz. Hızlıca bakıldığında boşluklar ve hem metin hem sayı içeren karışık veri olduğu görülür. Ayrıca 'Package' adında tuhaf bir sütun var; veriler burada 'sacks', 'bins' ve diğer değerlerin karışımı. Aslında veri biraz karışık. -[![Başlangıç Seviyesi ML - Bir Veri Setini Analiz Etme ve Temizleme](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "Başlangıç Seviyesi ML - Bir Veri Setini Analiz Etme ve Temizleme") +[![ML for beginners - Nasıl Veri Seti Analiz Edilir ve Temizlenir](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML for beginners - Nasıl Veri Seti Analiz Edilir ve Temizlenir") -> 🎥 Yukarıdaki görsele tıklayarak bu ders için veriyi hazırlama sürecini içeren kısa bir videoyu izleyebilirsiniz. +> 🎥 Bu ders için verilerin hazırlanmasını gösteren kısa video için yukarıdaki resme tıklayın. -Aslında, kutudan çıktığı gibi bir makine öğrenimi modeli oluşturmak için tamamen hazır bir veri seti elde etmek pek yaygın değildir. Bu derste, standart Python kütüphanelerini kullanarak ham bir veri setini nasıl hazırlayacağınızı öğreneceksiniz. Ayrıca, veriyi görselleştirmek için çeşitli teknikler öğreneceksiniz. +Aslında, kutudan çıkar çıkmaz kullanıma tamamen hazır bir veri seti almak çok yaygın değildir. Bu derste, standart Python kütüphaneleri kullanarak ham bir veri setini nasıl hazırlayacağınızı öğreneceksiniz. Ayrıca verileri görselleştirmek için çeşitli teknikleri öğreneceksiniz. -## Vaka Çalışması: 'Balkabağı Pazarı' +## Vaka çalışması: 'kabak pazarı' -Bu klasörde, kök `data` klasöründe [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) adlı bir .csv dosyası bulacaksınız. Bu dosya, şehir bazında gruplandırılmış, balkabağı pazarına dair 1757 satır veri içeriyor. Bu, Amerika Birleşik Devletleri Tarım Bakanlığı tarafından dağıtılan [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) raporlarından çıkarılmış ham bir veridir. +Bu klasörde, kök `data` klasörü içinde [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) adlı, şehir bazında gruplandırılmış kabak pazarı hakkında 1757 satırlık veri içeren bir .csv dosyası bulacaksınız. Bu, Amerika Birleşik Devletleri Tarım Bakanlığı tarafından dağıtılan [Özel Ürünler Terminal Pazarları Standart Raporlarından](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) çıkarılan ham veridir. -### Veriyi Hazırlama +### Verileri hazırlama -Bu veri kamuya açık bir alandadır. USDA web sitesinden şehir başına birçok ayrı dosya olarak indirilebilir. Çok fazla ayrı dosyadan kaçınmak için, tüm şehir verilerini tek bir elektronik tabloya birleştirdik, bu nedenle veriyi biraz _hazırlamış_ olduk. Şimdi, veriye daha yakından bakalım. +Bu veri kamu malıdır. USDA web sitesinden şehir başına çok sayıda ayrı dosya olarak indirilebilir. Çok fazla dosya olmasını önlemek için tüm şehir verilerini tek bir tabloya birleştirdik, böylece veriyi zaten biraz _hazırlamış_ olduk. Şimdi veriye daha yakından bakalım. -### Balkabağı Verisi - İlk Sonuçlar +### Kabak verisi - ilk çıkarımlar -Bu veri hakkında ne fark ettiniz? Zaten metin, sayılar, boşluklar ve anlamlandırmanız gereken garip değerlerin bir karışımı olduğunu gördünüz. +Bu veride ne fark ettiniz? Zaten içinde metinler, sayılar, boşluklar ve anlamlandırmanız gereken tuhaf değerler olduğunu gördünüz. -Bu veriye bir Regresyon tekniği kullanarak hangi soruyu sorabilirsiniz? Örneğin, "Belirli bir ayda satışa sunulan bir balkabağının fiyatını tahmin et." Veriye tekrar bakıldığında, bu göreve uygun bir veri yapısı oluşturmak için bazı değişiklikler yapmanız gerektiği görülüyor. +Bu veriye bir Regresyon tekniği kullanarak hangi soruyu sorabilirsiniz? Mesela "Belirli bir ayda satılan kabak fiyatını tahmin et". Veriye tekrar baktığınızda, görevi gerçekleştirmek için veri yapısında yapmanız gereken bazı değişiklikler var. +## Alıştırma - kabak verisini analiz et -## Egzersiz - Balkabağı Verisini Analiz Etme +Bu kabak verisini analiz etmek ve hazırlamak için verileri şekillendirmede çok faydalı olan [Pandas](https://pandas.pydata.org/) (adı `Python Veri Analizi` anlamına gelir) aracını kullanalım. -Balkabağı verisini analiz etmek ve hazırlamak için, verileri şekillendirmede çok kullanışlı bir araç olan [Pandas](https://pandas.pydata.org/) kütüphanesini kullanacağız. +### İlk olarak, eksik tarihler için kontrol yapın -### İlk Olarak, Eksik Tarihleri Kontrol Edin +Öncelikle eksik tarih olup olmadığını kontrol etmek için adımlar atmanız gerekiyor: -Öncelikle eksik tarihleri kontrol etmek için şu adımları izleyin: +1. Tarihleri ay formatına dönüştürün (bunlar ABD tarihleri, format `MM/DD/YYYY`). +2. Ay bilgisini yeni bir sütuna çıkarın. -1. Tarihleri ay formatına dönüştürün (bu tarihler ABD formatında, yani `AA/GG/YYYY`). -2. Ayı yeni bir sütuna çıkarın. +Visual Studio Code'da _notebook.ipynb_ dosyasını açın ve tabloyu yeni bir Pandas dataframe'ine aktarın. -_VS Code_ içinde _notebook.ipynb_ dosyasını açın ve elektronik tabloyu yeni bir Pandas dataframe'ine aktarın. - -1. İlk beş satırı görüntülemek için `head()` fonksiyonunu kullanın. +1. İlk beş satırı görmek için `head()` fonksiyonunu kullanın. ```python import pandas as pd @@ -64,7 +64,7 @@ _VS Code_ içinde _notebook.ipynb_ dosyasını açın ve elektronik tabloyu yeni pumpkins.head() ``` - ✅ Son beş satırı görüntülemek için hangi fonksiyonu kullanırdınız? + ✅ Son beş satırı görmek için hangi fonksiyonu kullanırsınız? 1. Mevcut dataframe'de eksik veri olup olmadığını kontrol edin: @@ -72,22 +72,22 @@ _VS Code_ içinde _notebook.ipynb_ dosyasını açın ve elektronik tabloyu yeni pumpkins.isnull().sum() ``` - Eksik veri var, ancak bu belki de ele alınan görev için önemli olmayabilir. + Eksik veri var, ancak belki mevcut görev için önemli olmayabilir. -1. Dataframe'inizi daha kolay çalışılabilir hale getirmek için, yalnızca ihtiyacınız olan sütunları seçin. Bunun için `loc` fonksiyonunu kullanabilirsiniz. Bu fonksiyon, orijinal dataframe'den bir grup satır (ilk parametre) ve sütun (ikinci parametre) çıkarır. Aşağıdaki durumda `:` ifadesi "tüm satırlar" anlamına gelir. +1. Dataframe ile çalışmayı kolaylaştırmak için, yalnızca ihtiyacınız olan sütunları `loc` fonksiyonunu kullanarak seçin; bu fonksiyon orijinal dataframe'den satır grubunu (birinci parametre) ve sütun grubunu (ikinci parametre) ayıklar. Aşağıdaki durumda `:` ifadesi "tüm satırlar" anlamındadır. ```python columns_to_select = ['Package', 'Low Price', 'High Price', 'Date'] pumpkins = pumpkins.loc[:, columns_to_select] ``` -### İkinci Olarak, Balkabağının Ortalama Fiyatını Belirleyin +### İkinci olarak, kabak fiyatının ortalamasını belirleyin -Belirli bir ayda bir balkabağının ortalama fiyatını belirlemek için hangi sütunları seçerdiniz? İpucu: 3 sütuna ihtiyacınız olacak. +Belirli bir ayda bir kabağın ortalama fiyatını nasıl belirleyeceğinizi düşünün. Bu görev için hangi sütunları seçersiniz? İpucu: 3 sütuna ihtiyacınız olacak. -Çözüm: `Low Price` ve `High Price` sütunlarının ortalamasını alarak yeni bir `Price` sütununu doldurun ve `Date` sütununu yalnızca ayı gösterecek şekilde dönüştürün. Neyse ki, yukarıdaki kontrol sonucuna göre, tarihler veya fiyatlar için eksik veri yok. +Çözüm: Yeni Fiyat sütununu doldurmak için `Low Price` ve `High Price` sütunlarının ortalamasını alın ve Tarih sütununu sadece ay gösterecek şekilde dönüştürün. Neyse ki yukarıdaki kontrole göre, tarihler veya fiyatlar için eksik veri yok. -1. Ortalamayı hesaplamak için şu kodu ekleyin: +1. Ortalamayı hesaplamak için aşağıdaki kodu ekleyin: ```python price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2 @@ -96,37 +96,37 @@ Belirli bir ayda bir balkabağının ortalama fiyatını belirlemek için hangi ``` - ✅ Kontrol etmek istediğiniz herhangi bir veriyi `print(month)` kullanarak yazdırabilirsiniz. + ✅ Kontrol etmek istediğiniz verileri `print(month)` ile yazdırmakta özgürsünüz. -2. Şimdi, dönüştürdüğünüz veriyi yeni bir Pandas dataframe'ine kopyalayın: +2. Şimdi, dönüştürdüğünüz verileri yeni bir Pandas dataframe'ine kopyalayın: ```python new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price}) ``` - Dataframe'inizi yazdırdığınızda, yeni regresyon modelinizi oluşturabileceğiniz temiz ve düzenli bir veri seti göreceksiniz. + Dataframe'inizi yazdırmak, üzerine yeni regresyon modelinizi kurabileceğiniz temiz bir veri seti gösterecektir. -### Ama Durun! Burada Garip Bir Şey Var +### Ama durun! Burada tuhaf bir şey var -`Package` sütununa bakarsanız, balkabaklarının birçok farklı şekilde satıldığını görebilirsiniz. Bazıları '1 1/9 bushel' ölçülerinde, bazıları '1/2 bushel' ölçülerinde, bazıları balkabağı başına, bazıları pound başına ve bazıları da genişlikleri değişen büyük kutularda satılıyor. +`Package` sütununa bakarsanız, kabaklar birçok farklı şekilde satılıyor. Bazıları '1 1/9 bushel' ölçüsünde, bazıları '1/2 bushel' ölçüsünde, bazıları tane başına, bazıları pound başına ve bazıları değişen genişlikte büyük kutularda satılıyor. -> Balkabaklarını tutarlı bir şekilde tartmak oldukça zor görünüyor. +> Kabakların tartılması tutarlı şekilde çok zor görünüyor -Orijinal veriye bakıldığında, `Unit of Sale` değeri 'EACH' veya 'PER BIN' olan her şeyin `Package` türü de inç başına, kutu başına veya 'her biri' olarak görünüyor. Balkabaklarını tutarlı bir şekilde tartmak oldukça zor görünüyor, bu yüzden `Package` sütununda 'bushel' kelimesini içeren balkabaklarını seçerek filtreleme yapalım. +Orijinal veriye daha yakından baktığınızda, `Unit of Sale` 'EACH' veya 'PER BIN' olan kayıtların `Package` türü de inç başına, porsiyon başına ya da 'her biri' olarak gözüküyor. Kabaklar tutarlı tartılması zor görünüyor, o yüzden sadece `Package` sütununda 'bushel' geçen kabakları seçerek filtreleyelim. -1. Dosyanın başında, ilk .csv içe aktarma işleminin altına bir filtre ekleyin: +1. Dosyanın en üstüne, ilk .csv aktarımının altına bir filtre ekleyin: ```python pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)] ``` - Şimdi veriyi yazdırırsanız, yalnızca 'bushel' içeren yaklaşık 415 satır veriyi aldığınızı görebilirsiniz. + Verileri şimdi yazdırırsanız sadece bushel bazında kabak içeren yaklaşık 415 satırı aldığınızı göreceksiniz. -### Ama Durun! Yapılacak Bir Şey Daha Var +### Ama durun! Daha yapılacak bir şey var -Bushel miktarının satır başına değiştiğini fark ettiniz mi? Fiyatlandırmayı normalize etmeniz ve bushel başına fiyatı göstermeniz gerekiyor, bu yüzden standartlaştırmak için biraz matematik yapın. +Bushel miktarının satır satır değiştiğini fark ettiniz mi? Fiyatlandırmayı normalize etmeniz gerekiyor, böylece fiyatları bushel başına gösterebilirsiniz, bunu standart hale getirmek için biraz matematik yapın. -1. Yeni dataframe'inizi oluşturduğunuz bloğun altına şu satırları ekleyin: +1. Aşağıdaki satırları new_pumpkins dataframe'i oluşturma bloğunun sonrasına ekleyin: ```python new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9) @@ -134,38 +134,38 @@ Bushel miktarının satır başına değiştiğini fark ettiniz mi? Fiyatlandır 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) sitesine göre, bir bushel'in ağırlığı ürün türüne bağlıdır, çünkü bu bir hacim ölçüsüdür. "Örneğin, bir bushel domatesin ağırlığı 56 pound olmalıdır... Yapraklar ve yeşillikler daha az ağırlıkla daha fazla yer kaplar, bu yüzden bir bushel ıspanak sadece 20 pound'dur." Bu oldukça karmaşık! Bushel'den pound'a dönüşüm yapmaya zahmet etmeyelim ve bunun yerine bushel başına fiyatlandırma yapalım. Ancak, tüm bu bushel çalışması, verilerinizin doğasını anlamanın ne kadar önemli olduğunu gösteriyor! +✅ [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) sitesine göre, bir bushelin ağırlığı ürün türüne bağlıdır çünkü bu bir hacim ölçüsüdür. "Örneğin bir bushel domatesin ağırlığı 56 pound olmalıdır... Yapraklar ve yeşillikler daha az ağırlıkla daha fazla yer kaplar, bu yüzden bir bushel ıspanak sadece 20 pounddur." Bu iş oldukça karmaşık! Bushel'den pound'a dönüşüm yapmaya çalışma, bunun yerine bushel bazında fiyatlandır. Yine de bu kabak bushel çalışması, verinizin doğasını anlamanın ne kadar önemli olduğunu gösterir! -Şimdi, bushel ölçümüne dayalı birim başına fiyatlandırmayı analiz edebilirsiniz. Veriyi bir kez daha yazdırırsanız, nasıl standartlaştırıldığını görebilirsiniz. +Artık bushel ölçümüne göre birim fiyatlandırmayı analiz edebilirsiniz. Veriyi yeniden yazdırdığınızda nasıl standart hale geldiğini görebilirsiniz. -✅ Yarım bushel ile satılan balkabaklarının çok pahalı olduğunu fark ettiniz mi? Bunun nedenini anlayabilir misiniz? İpucu: Küçük balkabakları büyük olanlardan çok daha pahalıdır, muhtemelen bir bushel başına çok daha fazla küçük balkabağı sığdığı için. +✅ Yarım bushel ile satılan kabakların çok pahalı olduğunu fark ettiniz mi? Nedenini çözebilir misiniz? İpucu: Küçük kabaklar büyük olanlardan çok daha pahalı, muhtemelen bushel başına çok daha fazla olmalarından dolayı, çünkü büyük boşluklu bir kabak bushel'ü kullanışsız hale getiriyor. ## Görselleştirme Stratejileri -Bir veri bilimcisinin rolü, üzerinde çalıştığı verilerin kalitesini ve doğasını göstermektir. Bunu yapmak için genellikle ilginç görselleştirmeler, yani grafikler, çizimler ve tablolar oluştururlar. Bu şekilde, görsel olarak ilişkileri ve aksi takdirde ortaya çıkması zor olan boşlukları gösterebilirler. +Veri bilimcisinin görevlerinden biri, üzerinde çalıştığı verilerin kalitesini ve doğasını göstermektir. Bunu yapmak için genellikle verinin farklı yönlerini gösteren ilginç görselleştirmeler, grafikler ve çizelgeler oluştururlar. Bu yolla, görsel olarak başka türlü keşfedilmesi zor olan ilişkileri ve boşlukları gösterebilirler. -[![Başlangıç Seviyesi ML - Matplotlib ile Veri Görselleştirme](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "Başlangıç Seviyesi ML - Matplotlib ile Veri Görselleştirme") +[![ML for beginners - Matplotlib ile Veriyi Görselleştirme](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML for beginners - Matplotlib ile Veriyi Görselleştirme") -> 🎥 Yukarıdaki görsele tıklayarak bu ders için veriyi görselleştirme sürecini içeren kısa bir videoyu izleyebilirsiniz. +> 🎥 Bu ders için veriyi görselleştirmeyi anlatan kısa video için yukarıdaki resme tıklayın. -Görselleştirmeler ayrıca, veri için en uygun makine öğrenimi tekniğini belirlemeye yardımcı olabilir. Örneğin, bir çizgiyi takip ediyor gibi görünen bir dağılım grafiği, verinin doğrusal regresyon çalışması için iyi bir aday olduğunu gösterebilir. +Görselleştirmeler ayrıca veriye en uygun makine öğrenimi tekniğini belirlemeye yardımcı olabilir. Örneğin bir dağılım grafiğinin bir çizgiyi takip ediyormuş gibi görünmesi, verinin doğrusal regresyon için iyi bir aday olduğunu gösterir. -Jupyter defterlerinde iyi çalışan bir veri görselleştirme kütüphanesi [Matplotlib](https://matplotlib.org/) (önceki derste de gördüğünüz) kütüphanesidir. +Jupyter notebok'larında iyi çalışan veri görselleştirme kütüphanelerinden biri [Matplotlib](https://matplotlib.org/)'dir (önceki derslerde de gördünüz). -> Veri görselleştirme konusunda daha fazla deneyim kazanmak için [bu eğitimlere](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott) göz atın. +> Veri görselleştirme konusunda daha fazla deneyim kazanmak için [bu öğreticilere](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott) bakın. -## Egzersiz - Matplotlib ile Deney Yapın +## Alıştırma - Matplotlib ile denemeler yapın -Yeni oluşturduğunuz dataframe'i görüntülemek için bazı temel grafikler oluşturmaya çalışın. Basit bir çizgi grafiği ne gösterir? +Az önce oluşturduğunuz yeni dataframe'i göstermek için bazı temel grafikler oluşturmaya çalışın. Basit bir çizgi grafiği ne gösterirdi? -1. Dosyanın başında, Pandas içe aktarma işleminin altına Matplotlib'i ekleyin: +1. Dosyanın başında, Pandas importundan sonra Matplotlib'i içe aktarın: ```python import matplotlib.pyplot as plt ``` -1. Tüm defteri yeniden çalıştırarak yenileyin. -1. Defterin altına, veriyi bir kutu grafiği olarak çizmek için bir hücre ekleyin: +1. Tüm not defterini tekrar çalıştırarak yenileyin. +1. Not defterinin en altına, veriyi bir kutu grafiği olarak çizdirmek için bir hücre ekleyin: ```python price = new_pumpkins.Price @@ -174,15 +174,15 @@ Yeni oluşturduğunuz dataframe'i görüntülemek için bazı temel grafikler ol plt.show() ``` - ![Fiyat ve ay ilişkisini gösteren bir dağılım grafiği](../../../../2-Regression/2-Data/images/scatterplot.png) + ![Ay-fiyat ilişkisini gösteren bir dağılım grafiği](../../../../translated_images/tr/scatterplot.b6868f44cbd2051c.webp) - Bu faydalı bir grafik mi? Sizi şaşırtan bir şey var mı? + Bu kullanışlı bir grafik mi? Size şaşırtıcı gelen herhangi bir şey var mı? - Bu grafik pek faydalı değil, çünkü yalnızca verilerinizi belirli bir ayda bir dizi nokta olarak gösteriyor. + Bu çok kullanışlı değil çünkü sadece verilerinizin belirli ayda yayılmış noktalar olarak gösterilmesini sağlıyor. -### Daha Faydalı Hale Getirin +### Daha kullanışlı hale getirin -Grafiklerin faydalı veriler göstermesi için genellikle verileri bir şekilde gruplamanız gerekir. Y ekseninin ayları gösterdiği ve verilerin dağılımını gösterdiği bir grafik oluşturalım. +Grafiklerde faydalı veri göstermek için genellikle verileri bir şekilde gruplamanız gerekir. Y ekseninde ayların gösterildiği ve verilerin dağılımını ortaya koyan bir grafik oluşturalım. 1. Gruplandırılmış bir çubuk grafik oluşturmak için bir hücre ekleyin: @@ -191,27 +191,104 @@ Grafiklerin faydalı veriler göstermesi için genellikle verileri bir şekilde plt.ylabel("Pumpkin Price") ``` - ![Fiyat ve ay ilişkisini gösteren bir çubuk grafik](../../../../2-Regression/2-Data/images/barchart.png) + ![Ay-fiyat ilişkisini gösteren bir çubuk grafik](../../../../translated_images/tr/barchart.a833ea9194346d76.webp) + + Bu daha faydalı bir veri görselleştirmesi! Kabak fiyatlarının en yüksek olduğu ayların Eylül ve Ekim gibi görünüyor. Bu beklediğinizle uyuşuyor mu? Neden ya da neden değil? + +## Alıştırma - Seaborn ile denemeler yapın + +Matplotlib güçlüdür, ancak şık grafikler oluşturmak için çok kod gerekebilir. [Seaborn](https://seaborn.pydata.org/), Matplotlib üzerine inşa edilmiş istatistiksel veri görselleştirme için tasarlanmış bir kütüphanedir. Pandas dataframe'leriyle doğrudan çalışır, çekici varsayılan stiller uygular ve çok daha az kodla bilgilendirici grafikler oluşturmanızı sağlar. Seaborn Matplotlib nesneleri döndürdüğü için Matplotlib ile bildiğiniz her şeyi sonuçları ince ayar yapmak için hala kullanabilirsiniz. + +> Eğer henüz Seaborn yüklü değilse, `pip install seaborn` komutuyla yükleyin. + +1. Not defterinin başında, diğer importların altına Seaborn'u import edin. Geleneksel olarak `sns` olarak import edilir: + + ```python + import seaborn as sns + ``` + +### İlişkileri göstermek için dağılım grafikleri + +Model oluşturmadan önce veriyi keşfetmenin önemli bir parçası değişkenler arasındaki _ilişkileri_ aramaktır. [Dağılım grafiği](https://en.wikipedia.org/wiki/Scatter_plot) bunun en iyi araçlarından biridir: eğer noktalar bir çizgiyi takip ediyorsa, iki değişken korele olabilir ve bu, doğrusal regresyon modeli çalıştırmaya uygun bir işarettir. + +1. Önceden oluşturduğunuz ay-fiyat dağılım grafiğini bu kez Seaborn'un dataframe sütunlarıyla direkt çalışan [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) (ilişkisel grafik) fonksiyonunu kullanarak yeniden oluşturun: + + ```python + sns.relplot(x="Price", y="Month", data=new_pumpkins) + ``` + + ![Seaborn dağılım grafiği ile ay-fiyat ilişkisi](../../../../translated_images/tr/relplot.a03837d8f0329cec.webp) + + Sütun adlarını ve dataframe'i nasıl verdiğinize dikkat edin, Seaborn eksen etiketlerini sizin için otomatik ayarlıyor. + +2. `kind="line"` parametresi vererek çizgi grafik geçişi yapabilirsiniz. Seaborn ayrıca çizginin etrafında güven aralığını gösteren gölgeli bir bant çizer: + + ```python + sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins) + ``` + + ![Seaborn çizgi grafiği ile ay-fiyat ilişkisi](../../../../translated_images/tr/lineplot.f9034ba47b1e30ee.webp) + + Bu veri biraz gürültülü olduğu için çizgi grafik en net tercih değil — ancak Seaborn'da grafik türlerini ne kadar kolay değiştirebileceğinizi gösteriyor. + +### Dağılımları göstermek için çubuk grafikler + + +Önceden Matplotlib ile bir çubuk grafik oluşturmak için verileri elle gruplayıp toplamıştınız. Seaborn'un [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) (kategorik grafik) fonksiyonu gruplama ve toplama işlemlerini sizin için yapabilir. Varsayılan olarak `kind="bar"` her kategorinin ortalamasını gösterirken, güven aralığını belirten siyah bir çizgi de yer alır. + +1. Aylık ortalama fiyatın çubuk grafiğini oluşturun: + + ```python + sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar") + ``` + + ![Aylık fiyat dağılımını gösteren bir Seaborn çubuk grafiği](../../../../translated_images/tr/catplot.e73fc35fdf96242b.webp) + + Bu, Matplotlib ile gördüğünüzü doğrular — fiyatlar Eylül ve Ekim civarında zirve yapar — ancak Seaborn ayrıca her ay içindeki fiyat _değişkenliğini_ görselleştirir. + +### Korelasyonları göstermek için Isı Haritaları + +Serpilmiş grafikler aynı anda iki değişkeni karşılaştırır. Birden fazla sayısal sütun olduğunda, bir [ısı haritası](https://en.wikipedia.org/wiki/Heat_map) aynı anda _her_ sütun çiftinin ilişkisini görmenizi sağlar. Bu, modele hangi sütunların besleneceğine karar verirken en çok ilişkilendirilen özellikleri bulmak için yaygın bir yöntemdir (ayrıca benzer bir grafik sınıflandırmada karışıklık matrislerini göstermek için kullanılır). + +1. Pandas ile bir korelasyon matrisi oluşturun, sonra Seaborn'un [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html) fonksiyonuyla çizin. `annot=True` seçeneği her hücreye korelasyon değerlerini yazdırır: + + ```python + correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr() + sns.heatmap(correlations, annot=True, cmap="coolwarm") + ``` + + ![Sayısal sütunlar arasındaki korelasyonları gösteren bir Seaborn ısı haritası](../../../../translated_images/tr/heatmap.bd98dce43b404c57.webp) + + `1` (veya `-1`) değerine yakın olanlar, sütunların güçlü _doğrusal_ ilişki içinde olduğunu gösterir. `Low Price` ve `High Price` neredeyse mükemmel şekilde korelasyonludur. Öte yandan, `Month`, fiyat ile ancak zayıf bir doğrusal ilişkiye sahiptir — üstteki çubuk grafik Eylül ve Ekim’de belirgin bir mevsimlik zirveyi ortaya koysa da. Bu önemli bir derstir: korelasyon katsayısı yalnızca _düz çizgi_ ilişkilerini ölçer, bu yüzden mevsimsel ya da doğrusal olmayan desenleri kaçırabilir. ✅ Hangi sütunların kullanılacağına karar vermeden önce hem ısı haritasına *hem* çubuk grafik gibi görsellere bakmak neden faydalıdır? + +### Matplotlib mi Seaborn mu? + +İki kütüphane de bilinmeye değerdir: + +- **Matplotlib** her grafik elemanını ince detaylı kontrol etmenizi sağlar ve neredeyse diğer tüm Python grafik kütüphanelerinin temelidir. +- **Seaborn** istatistiksel grafikler için daha üst seviye fonksiyonlar ve çekici varsayılanlar sunar, doğrudan dataframe'lerle çalışır ve keşifsel veri analizinde genellikle daha hızlıdır. - Bu daha faydalı bir veri görselleştirme! Balkabaklarının en yüksek fiyatının Eylül ve Ekim aylarında olduğunu gösteriyor gibi görünüyor. Bu beklentinizi karşılıyor mu? Neden veya neden değil? +Yaygın bir iş akışı, verinizi hızlıca keşfetmek için Seaborn'u kullanmak, sonra detayları özelleştirmek gerektiğinde Matplotlib'e geçmektir. --- -## 🚀Meydan Okuma +## 🚀Zorluk -Matplotlib'in sunduğu farklı görselleştirme türlerini keşfedin. Hangi türler regresyon problemleri için daha uygundur? +Matplotlib ve Seaborn’un sunduğu farklı görselleştirme türlerini keşfedin. Regresyon problemleri için hangi türler daha uygundur? -## [Ders Sonrası Test](https://ff-quizzes.netlify.app/en/ml/) +## [Ders sonrası quiz](https://ff-quizzes.netlify.app/en/ml/) -## Gözden Geçirme ve Kendi Kendine Çalışma +## Gözden Geçirme & Kendi Kendine Çalışma -Verileri görselleştirmenin birçok yoluna göz atın. Mevcut çeşitli kütüphanelerin bir listesini yapın ve hangilerinin belirli görev türleri için en iyi olduğunu not edin, örneğin 2D görselleştirmeler ve 3D görselleştirmeler. Ne keşfediyorsunuz? +Veriyi görselleştirmenin pek çok yoluna bir bakın. Kullanılabilir çeşitli kütüphanelerin bir listesini yapın ve belirli görevler için (örneğin 2D görselleştirmeler vs 3D görselleştirmeler) hangilerinin en uygun olduğunu not edin. Neler keşfediyorsunuz? ## Ödev -[Veri görselleştirme keşfi](assignment.md) +[Görselleştirme keşfi](assignment.md) --- -**Feragatname**: -Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluğu sağlamak için çaba göstersek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul edilmez. \ No newline at end of file + +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba sarf etsek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayınız. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımı sonucu ortaya çıkabilecek yanlış anlamalardan veya yanlış yorumlamalardan sorumlu değiliz. + \ No newline at end of file diff --git a/translations/tr/2-Regression/2-Data/solution/notebook.ipynb b/translations/tr/2-Regression/2-Data/solution/notebook.ipynb index 1e0cf5a57..1ab23de30 100644 --- a/translations/tr/2-Regression/2-Data/solution/notebook.ipynb +++ b/translations/tr/2-Regression/2-Data/solution/notebook.ipynb @@ -3,7 +3,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "## Kabaklar için Doğrusal Regresyon - Ders 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 ile Görselleştirme\n", + "\n", + "[Seaborn](https://seaborn.pydata.org/) Matplotlib üzerine inşa edilmiştir ve doğrudan veri çerçeveleri ile çalışır, bu da çok az kodla çekici istatistiksel grafikler oluşturmayı hızlı hale getirir.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### İlişkileri göstermek için dağılım grafikleri\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": [ + "### Dağılımları göstermek için sütun grafikleri\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**Feragatname**: \nBu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluğu sağlamak için çaba göstersek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz.\n" + "### Korelasyonları göstermek için Isı Haritaları\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**Feragatname**:\nBu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba sarf etsek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayınız. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımı sonucu ortaya çıkabilecek yanlış anlamalardan veya yanlış yorumlamalardan sorumlu değiliz.\n\n" ] } ], @@ -424,13 +487,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "95726f0b8283628d5356a4f8eb8b4b76", - "translation_date": "2025-09-06T13:46:31+00:00", - "source_file": "2-Regression/2-Data/solution/notebook.ipynb", - "language_code": "tr" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/tr/8-Reinforcement/1-QLearning/README.md b/translations/tr/8-Reinforcement/1-QLearning/README.md index 64f5ea0dd..1edac0821 100644 --- a/translations/tr/8-Reinforcement/1-QLearning/README.md +++ b/translations/tr/8-Reinforcement/1-QLearning/README.md @@ -1,47 +1,47 @@ -# Pekiştirmeli Öğrenme ve Q-Öğrenme'ye Giriş +# Takviye Öğrenmeye ve Q-Öğrenmeye Giriş -![Makine öğreniminde pekiştirme özetini içeren bir sketchnote](../../../../sketchnotes/ml-reinforcement.png) -> Sketchnote: [Tomomi Imura](https://www.twitter.com/girlie_mac) +![Makine öğreniminde takviyenin özeti bir çizim notunda](../../../../translated_images/tr/ml-reinforcement.94024374d63348db.webp) +> Çizim notu [Tomomi Imura](https://www.twitter.com/girlie_mac) tarafından yapıldı -Pekiştirmeli öğrenme üç önemli kavram içerir: ajan, bazı durumlar ve her durum için bir dizi eylem. Belirli bir durumda bir eylem gerçekleştirerek, ajana bir ödül verilir. Yine Super Mario bilgisayar oyununu hayal edin. Siz Mario'sunuz, bir oyun seviyesindesiniz ve uçurumun kenarında duruyorsunuz. Üstünüzde bir altın var. Mario olarak, bir oyun seviyesinde, belirli bir pozisyonda olmanız... bu sizin durumunuzdur. Sağa bir adım atmak (bir eylem) sizi uçurumdan aşağıya götürür ve bu size düşük bir sayısal puan verir. Ancak zıplama tuşuna basmak size bir puan kazandırır ve hayatta kalırsınız. Bu olumlu bir sonuçtur ve size olumlu bir sayısal puan kazandırmalıdır. +Takviye öğrenme üç önemli kavramı içerir: ajan, bazı durumlar ve durum başına bir eylem kümesi. Belirli bir durumda bir eylem gerçekleştirildiğinde, ajana bir ödül verilir. Tekrar düşünün, bilgisayar oyunu Super Mario. Siz Mario'sunuz, bir oyun seviyesindesiniz ve bir uçurumun kenarında duruyorsunuz. Üstünüzde bir madeni para var. Siz Mario olarak, bir oyun seviyesinde, belirli bir pozisyondasınız ... bu sizin durumunuzdur. Bir adım sağa hareket etmek (bir eylem) sizi uçurumdan aşağı düşürecek ve bu size düşük sayısal bir puan verecektir. Ancak, zıplama düğmesine basmak size bir puan kazandıracak ve hayatta kalmanızı sağlayacaktır. Bu olumlu bir sonuçtur ve size pozitif sayısal bir puan vermelidir. -Pekiştirmeli öğrenme ve bir simülatör (oyun) kullanarak, hayatta kalmayı ve mümkün olduğunca çok puan toplamayı hedefleyerek oyunu nasıl oynayacağınızı öğrenebilirsiniz. +Takviye öğrenmeyi ve bir simülatörü (oyunu) kullanarak, hayatta kalmak ve mümkün olduğunca çok puan kazanmak için nasıl oynanacağını öğrenebilirsiniz. -[![Pekiştirmeli Öğrenmeye Giriş](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) +[![Takviye Öğrenmeye Giriş](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) -> 🎥 Yukarıdaki görsele tıklayarak Dmitry'nin Pekiştirmeli Öğrenme hakkındaki konuşmasını dinleyin +> 🎥 Dmitry'nin Takviye Öğrenme konusunu tartışmasını dinlemek için yukarıdaki resme tıklayın -## [Ders Öncesi Test](https://ff-quizzes.netlify.app/en/ml/) +## [Ders Öncesi Quiz](https://ff-quizzes.netlify.app/en/ml/) -## Ön Koşullar ve Kurulum +## Önkoşullar ve Kurulum -Bu derste, Python'da bazı kodlarla denemeler yapacağız. Bu dersteki Jupyter Notebook kodunu bilgisayarınızda veya bulutta çalıştırabilmelisiniz. +Bu derste Python'da bazı kodlar ile deney yapacağız. Bu dersteki Jupyter Notebook kodlarını ya kendi bilgisayarınızda ya da bulutta bir yerde çalıştırabilmelisiniz. -[Ders not defterini](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) açabilir ve bu dersi adım adım takip edebilirsiniz. +[ders not defterini](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) açabilir ve bu dersi takip ederek kodları oluşturabilirsiniz. -> **Not:** Bu kodu buluttan açıyorsanız, not defteri kodunda kullanılan [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) dosyasını da almanız gerekir. Bu dosyayı not defteriyle aynı dizine ekleyin. +> **Not:** Bu kodu buluttan açıyorsanız, ayrıca not defteri kodunda kullanılan [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) dosyasını da indirmeniz gerekir. Not defteri ile aynı dizine ekleyin. ## Giriş -Bu derste, Rus besteci [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev) tarafından yazılmış bir müzikal masaldan esinlenilen **[Peter ve Kurt](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)** dünyasını keşfedeceğiz. Peter'ın çevresini keşfetmesine, lezzetli elmalar toplamasına ve kurtla karşılaşmaktan kaçınmasına olanak tanımak için **Pekiştirmeli Öğrenme** kullanacağız. +Bu derste, Rus besteci [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev)'in müzikal masalından esinlenerek, **[Peter ve Kurt](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)** dünyasını keşfedeceğiz. Peter'ın çevresini keşfetmesi, lezzetli elmalar toplaması ve kurttan kaçınması için **Takviye Öğrenme** kullanacağız. -**Pekiştirmeli Öğrenme** (RL), bir **ajan**ın bir **çevrede** optimal davranışını öğrenmesine olanak tanıyan bir öğrenme tekniğidir. Bu çevredeki bir ajanın bir **hedefi** olmalıdır ve bu hedef bir **ödül fonksiyonu** ile tanımlanır. +**Takviye Öğrenme** (RL), birçok deney yaparak bir **ajanın** bir **çevrede** en iyi davranışı öğrenmesini sağlayan bir öğrenme tekniğidir. Bu çevredeki ajanın bir **hedefi** olmalı, bu hedef bir **ödül fonksiyonu** ile tanımlanır. ## Çevre -Basitlik açısından, Peter'ın dünyasını `genişlik` x `yükseklik` boyutlarında bir kare tahta olarak düşünelim: +Basitlik için, Peter’ın dünyasını `genişlik` x `yükseklik` boyutlarında kare bir tahta gibi düşünelim: -![Peter'ın Çevresi](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![Peter'ın Çevresi](../../../../translated_images/tr/environment.40ba3cb66256c93f.webp) -Bu tahtadaki her hücre şu şekilde olabilir: +Bu tahtadaki her hücre: -* **zemin**, Peter ve diğer canlıların üzerinde yürüyebileceği yer. -* **su**, üzerinde yürüyemeyeceğiniz yer. -* bir **ağaç** veya **çimen**, dinlenebileceğiniz bir yer. -* bir **elma**, Peter'ın kendini beslemek için bulmaktan memnun olacağı bir şey. -* bir **kurt**, tehlikeli ve kaçınılması gereken bir şey. +* Peter ve diğer canlıların yürüyebileceği **yeryüzü** +* Elbette yürüyemeyeceğiniz **su** +* Dinlenebileceğiniz bir yer olan **ağaç** veya **ot** +* Peter'ın kendini beslemek için bulmayı çok isteyeceği bir **elma** +* Tehlikeli olan ve kaçınılması gereken bir **kurt** -Bu çevreyle çalışmak için kod içeren ayrı bir Python modülü olan [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) bulunmaktadır. Bu kod, kavramlarımızı anlamak için önemli olmadığından, modülü içe aktaracağız ve örnek tahtayı oluşturmak için kullanacağız (kod bloğu 1): +Bu çevre ile çalışmak için kod içeren ayrı bir Python modülü vardır, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py). Bu kod konuyu anlamak için önemli olmadığından modülü içe aktaracağız ve örnek tahtayı oluşturmak için kullanacağız (kod bloğu 1): ```python from rlboard import * @@ -52,63 +52,63 @@ m.randomize(seed=13) m.plot() ``` -Bu kod, yukarıdaki resme benzer bir çevre görüntüsü yazdırmalıdır. +Bu kod, yukarıdaki çevre resmine benzer bir çıktı vermelidir. -## Eylemler ve Politika +## Eylemler ve politika -Örneğimizde, Peter'ın hedefi bir elma bulmak, kurt ve diğer engellerden kaçınmak olacaktır. Bunu yapmak için, elmayı bulana kadar etrafta dolaşabilir. +Örneğimizde, Peter’ın hedefi elmayı bulabilmek, kurt ve diğer engellerden kaçınmak olacaktır. Bunu yapmak için, aslında etrafta yürüyerek elmayı bulmalıdır. -Bu nedenle, herhangi bir pozisyonda yukarı, aşağı, sola ve sağa hareket etmek gibi eylemlerden birini seçebilir. +Bu nedenle, herhangi bir konumda aşağıdaki eylemlerden birini seçebilir: yukarı, aşağı, sola ve sağa. -Bu eylemleri bir sözlük olarak tanımlayacağız ve bunları ilgili koordinat değişiklikleriyle eşleyeceğiz. Örneğin, sağa hareket etmek (`R`) `(1,0)` çiftine karşılık gelir. (kod bloğu 2): +Bu eylemleri bir sözlük olarak tanımlayacağız ve bunları karşılık gelen koordinat değişim çiftlerine eşleyeceğiz. Örneğin, sağa hareket (`R`) `(1,0)` çiftine karşılık gelir. (kod bloğu 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()) } ``` -Bu senaryonun stratejisi ve hedefi şu şekilde özetlenebilir: +Özetle, bu senaryonun stratejisi ve hedefi şunlardır: -- **Strateji**, ajanımızın (Peter) stratejisi, **politika** olarak adlandırılan bir fonksiyonla tanımlanır. Politika, herhangi bir durumda eylemi döndüren bir fonksiyondur. Bizim durumumuzda, problemin durumu, oyuncunun mevcut pozisyonu dahil olmak üzere tahtayla temsil edilir. +- Ajanımızın (Peter) **stratejisi**, **politikası** olarak adlandırılan bir fonksiyonla tanımlanır. Politika, verilen bir durumda hangi eylemin seçileceğini döndürür. Bizim durumumuzda, problemin durumu, oyuncunun mevcut pozisyonu da dahil olmak üzere tahtayla temsil edilir. -- **Hedef**, pekiştirmeli öğrenmenin nihai hedefi, problemi verimli bir şekilde çözmemizi sağlayacak iyi bir politika öğrenmektir. Ancak, temel olarak, **rastgele yürüyüş** adı verilen en basit politikayı ele alalım. +- Takviye öğrenmenin **hedefi** ise problemi verimli şekilde çözmemizi sağlayacak iyi bir politika öğrenmektir. Ancak başlangıç olarak en basit politika olan **rastgele yürüyüş**ü ele alalım. -## Rastgele Yürüyüş +## Rastgele yürüyüş -Öncelikle rastgele yürüyüş stratejisini uygulayarak problemimizi çözelim. Rastgele yürüyüşte, elmaya ulaşana kadar izin verilen eylemlerden birini rastgele seçeriz (kod bloğu 3). +İlk olarak, rastgele yürüyüş stratejisini uygulayarak problemimizi çözelim. Rastgele yürüyüşte, izin verilen eylemler arasından rastgele bir sonraki eylemi seçeriz, ta ki elmaya ulaşana kadar (kod bloğu 3). -1. Aşağıdaki kodla rastgele yürüyüşü uygulayın: +1. Aşağıdaki kod ile rastgele yürüyüşü uygulayı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 # adım sayısı + # başlangıç konumunu ayarla if start_position: m.human = start_position else: m.random_start() while True: if m.at() == Board.Cell.apple: - return n # success! + return n # başarı! if m.at() in [Board.Cell.wolf, Board.Cell.water]: - return -1 # eaten by wolf or drowned + return -1 # kurt tarafından yenildi veya boğuldu 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) # gerçek hareketi yap break n+=1 walk(m,random_policy) ``` - `walk` çağrısı, bir çalıştırmadan diğerine değişebilen ilgili yolun uzunluğunu döndürmelidir. + `walk` çağrısı, her çalıştırmada farklı olabilir, karşılık gelen yol uzunluğunu döndürmelidir. -1. Yürüyüş deneyini birkaç kez (örneğin, 100 kez) çalıştırın ve elde edilen istatistikleri yazdırın (kod bloğu 4): +1. Yürüyüş deneyini belirli sayıda (örneğin 100) tekrarlayın ve elde edilen istatistikleri yazdırın (kod bloğu 4): ```python def print_statistics(policy): @@ -125,17 +125,17 @@ Bu senaryonun stratejisi ve hedefi şu şekilde özetlenebilir: print_statistics(random_policy) ``` - Ortalama yol uzunluğunun yaklaşık 30-40 adım olduğunu unutmayın, bu oldukça fazladır, çünkü en yakın elmaya olan ortalama mesafe yaklaşık 5-6 adımdır. + Yolun ortalama uzunluğu yaklaşık 30-40 adım civarındadır ki bu oldukça fazladır. En yakın elmaya ortalama mesafe yaklaşık 5-6 adımdır. - Ayrıca Peter'ın rastgele yürüyüş sırasında hareketinin nasıl göründüğünü görebilirsiniz: + Peter’ın rastgele yürüyüş sırasında hareketi şöyle görünür: - ![Peter'ın Rastgele Yürüyüşü](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) + ![Peter’ın Rastgele Yürüyüşü](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) -## Ödül Fonksiyonu +## Ödül fonksiyonu -Politikamızı daha akıllı hale getirmek için hangi hareketlerin diğerlerinden "daha iyi" olduğunu anlamamız gerekir. Bunu yapmak için hedefimizi tanımlamamız gerekir. +Politikamızı daha akıllı yapmak için hangi hareketlerin diğerlerinden "daha iyi" olduğunu anlamamız gerekir. Bunun için amacımızı tanımlamalıyız. -Hedef, her durum için bir puan değeri döndüren bir **ödül fonksiyonu** ile tanımlanabilir. Sayı ne kadar yüksekse, ödül fonksiyonu o kadar iyidir. (kod bloğu 5) +Amaç, her durum için bir puan değeri döndürecek bir **ödül fonksiyonu** olarak tanımlanabilir. Sayı ne kadar büyükse, ödül fonksiyonu o kadar iyidir. (kod bloğu 5) ```python move_reward = -0.1 @@ -154,39 +154,115 @@ def reward(m,pos=None): return move_reward ``` -Ödül fonksiyonlarıyla ilgili ilginç bir şey, çoğu durumda *oyunun sonunda yalnızca önemli bir ödül verilmesidir*. Bu, algoritmamızın olumlu bir ödüle yol açan "iyi" adımları bir şekilde hatırlaması ve önemlerini artırması gerektiği anlamına gelir. Benzer şekilde, kötü sonuçlara yol açan tüm hareketler caydırılmalıdır. +Ödül fonksiyonları ile ilgili ilginç olan şey, çoğu durumda *önemli ödülün oyunun sonunda verilmesidir*. Bu, algoritmamızın sonunda pozitif ödüle götüren "iyi" adımları hatırlaması ve önemini artırması gerekir anlamına gelir. Benzer şekilde, kötü sonuçlara götüren tüm hareketler caydırılmalıdır. ## Q-Öğrenme -Burada tartışacağımız algoritma **Q-Öğrenme** olarak adlandırılır. Bu algoritmada politika, bir **Q-Tablosu** adı verilen bir fonksiyon (veya veri yapısı) ile tanımlanır. Bu tablo, belirli bir durumdaki her bir eylemin "iyiliğini" kaydeder. +Burada tartışacağımız algoritmanın adı **Q-Öğrenme**dir. Bu algoritmada politika, **Q-Tablosu** adı verilen bir fonksiyon (veya veri yapısı) ile tanımlanır. Bu tablo, verilen bir durumdaki her eylemin "iyiliğini" kaydeder. -Q-Tablosu olarak adlandırılır çünkü genellikle bir tablo veya çok boyutlu bir dizi olarak temsil etmek uygundur. Tahtamızın boyutları `genişlik` x `yükseklik` olduğundan, Q-Tablosunu `genişlik` x `yükseklik` x `len(actions)` şeklinde bir numpy dizisi kullanarak temsil edebiliriz: (kod bloğu 6) +Q-Tablosu denmesinin nedeni, genellikle bir tablo veya çok boyutlu dizi olarak temsil edilmesinin uygun olmasıdır. Tahtamız `genişlik` x `yükseklik` boyutunda olduğundan, Q-Tablosunu `genişlik` x `yükseklik` x `len(actions)` şekline sahip bir numpy dizisi olarak temsil edebiliriz: (kod bloğu 6) ```python Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions) ``` -Q-Tablosunun tüm değerlerini eşit bir değerle, bizim durumumuzda - 0.25 ile başlatıyoruz. Bu, her durumda tüm hareketlerin eşit derecede iyi olduğu "rastgele yürüyüş" politikasına karşılık gelir. Q-Tablosunu tahtada görselleştirmek için `plot` fonksiyonuna geçirebiliriz: `m.plot(Q)`. +Q-Tablosundaki tüm değerleri eşit bir değerle, bizim durumumuzda 0.25 ile başlatıyoruz. Bu, her durumda tüm hareketlerin eşit iyi olduğu "rastgele yürüyüş" politikasına karşılık gelir. Q-Tablosunu tahtada görselleştirmek için `plot` fonksiyonuna geçebiliriz: `m.plot(Q)`. -![Peter'ın Çevresi](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![Peter'ın Çevresi](../../../../translated_images/tr/env_init.04e8f26d2d60089e.webp) -Her hücrenin ortasında, hareket yönünü gösteren bir "ok" vardır. Tüm yönler eşit olduğundan, bir nokta gösterilir. +Her hücrenin merkezinde, tercih edilen hareket yönünü gösteren bir "ok" vardır. Tüm yönler eşit olduğundan bir nokta görüntülenir. -Şimdi simülasyonu çalıştırmamız, çevremizi keşfetmemiz ve Q-Tablosu değerlerinin daha iyi bir dağılımını öğrenmemiz gerekiyor, bu da elmaya giden yolu çok daha hızlı bulmamızı sağlayacaktır. +Şimdi simülasyonu çalıştırıp çevremizi keşfetmeli ve Q-Tablosu değerlerinin daha iyi dağılımını öğrenmeliyiz; bu da elmaya giden yolu çok daha hızlı bulmamızı sağlar. ## Q-Öğrenmenin Özeti: Bellman Denklemi -Hareket etmeye başladığımızda, her eylemin karşılık gelen bir ödülü olacaktır, yani teorik olarak en yüksek anlık ödüle göre bir sonraki eylemi seçebiliriz. Ancak, çoğu durumda, hareket hedefimize ulaşmamızı sağlamayacak ve bu nedenle hangi yönün daha iyi olduğunu hemen karar veremeyiz. +Hareket etmeye başladığımızda, her eylemin karşılık geldiği bir ödül olur, yani teorik olarak bir sonraki eylemi en yüksek anlık ödüle göre seçebiliriz. Ancak, çoğu durumda bu hareket elmaya ulaşmamızı sağlamaz, bu nedenle hemen hangi yönün daha iyi olduğunu belirleyemeyiz. -> Önemli olan anlık sonuç değil, simülasyonun sonunda elde edeceğimiz nihai sonuçtur. +> Unutmayın ki önemli olan anlık sonuç değil, simülasyonun sonunda elde edeceğimiz nihai sonuçtur. -Bu gecikmiş ödülü hesaba katmak için, problemimizi özyinelemeli olarak düşünmemize olanak tanıyan **[dinamik programlama](https://en.wikipedia.org/wiki/Dynamic_programming)** ilkelerini kullanmamız gerekir. +Bu gecikmeli ödülü hesaba katmak için **[dinamik programlama](https://en.wikipedia.org/wiki/Dynamic_programming)** prensiplerini kullanmamız gerekir, böylece problemimizi özyinelemeli olarak düşünebiliriz. -Şimdi *s* durumundayız ve bir sonraki *s'* durumuna geçmek istiyoruz. Bunu yaparak, ödül fonksiyonu tarafından tanımlanan *r(s,a)* anlık ödülünü ve gelecekteki bir ödülü alacağız. Eğer Q-Tablomuzun her eylemin "çekiciliğini" doğru bir şekilde yansıttığını varsayarsak, *s'* durumunda *Q(s',a')*'nin maksimum değerine karşılık gelen bir eylem *a* seçeceğiz. Böylece, *s* durumunda alabileceğimiz en iyi olası gelecekteki ödül şu şekilde tanımlanacaktır: `max` +Diyelim şimdi *s* durumundayız ve bir sonraki durumda *s'* gitmek istiyoruz. Böyle yaparak ödül fonksiyonuyla tanımlanan anlık ödül *r(s,a)* ve bazı gelecekteki ödüller alacağız. Q-Tablomuz her eylemin "çekiciliğini" doğru yansıtıyorsa, *s'* durumunda *Q(s',a')* değerinin maksimum olduğu eylemi *a* olarak seçeceğiz. Böylece, *s* durumunda alabileceğimiz en iyi gelecekteki ödül `max`a'*Q(s',a')* olarak tanımlanır (maksimum burada *s'* durumundaki tüm olası *a'* eylemleri üzerinden hesaplanır). -## Politikayı Kontrol Etme +Bu, durum *s* ve eylem *a* için Q-Tablosu değerini hesaplayan **Bellman formülünü** verir: -Q-Tablosu, her durumdaki her bir eylemin "çekiciliğini" listelediği için, dünyamızda verimli bir gezinmeyi tanımlamak için kullanılması oldukça kolaydır. En basit durumda, en yüksek Q-Tablo değerine karşılık gelen eylemi seçebiliriz: (kod bloğu 9) + + +Burada γ, şu anlama gelen **indirim faktörü**dür: mevcut ödülü gelecekteki ödüle kıyasla ne ölçüde tercih edeceğinizi belirler. + +## Öğrenme Algoritması + +Yukarıdaki denklemi kullanarak öğrenme algoritmamızın sözde kodunu yazabiliriz: + +* Q-Tablosu Q'yu tüm durumlar ve eylemler için eşit sayılar ile başlat +* Öğrenme oranı α ← 1 olarak ayarla +* Simülasyonu birçok kez tekrarla + 1. Rastgele konumda başla + 1. Tekrarla + 1. *s* durumunda bir eylem *a* seç + 2. Yeni bir durum *s'* hareket ederek eylemi gerçekleştir + 3. Oyun sonu koşulu varsa veya toplam ödül çok düşükse - simülasyondan çık + 4. Yeni durumda ödül *r* hesapla + 5. Bellman denklemine göre Q-Fonksiyonunu güncelle: *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ maxa'Q(s',a'))* + 6. *s* ← *s'* + 7. Toplam ödülü güncelle ve α’yı azalt. + +## Sömürme vs. keşif + +Yukarıdaki algoritmada, 2.1 adımında eylemin nasıl seçileceğini belirtmedik. Eğer eylemi rastgele seçersek, rastgele **keşif** yapacağız ve büyük olasılıkla sık öleceğiz ve normalde gitmeyeceğimiz yerleri keşfedeceğiz. Alternatif olarak, zaten bildiğimiz Q-Tablosu değerlerini **sömürerek** (en yüksek Q değeri ile) en iyi eylemi seçebiliriz. Ancak bu, diğer durumları keşfetmemizi engeller ve optimal çözümü bulamayabiliriz. + +Bu nedenle, en iyi yaklaşım keşif ile sömürme arasında denge kurmaktır. Bu, *s* durumunda eylemi Q-Tablosundaki değerlere oranla seçerek yapılabilir. Başlangıçta, Q-Tablosu değerleri eşit olduğunda seçim rastgele olur, ancak çevreyi öğrendikçe ajan zaman zaman keşfedilmemiş yola gitmesine izin vererek optimal rotayı takip eder. + +## Python uygulaması + +Şimdi öğrenme algoritmasını uygulamaya hazırız. Bunu yapmadan önce Q-Tablosundaki keyfi sayıları uygun eylemlerin olasılık vektörüne dönüştürecek bir fonksiyona ihtiyacımız var. + +1. `probs()` fonksiyonunu oluşturun: + + ```python + def probs(v,eps=1e-4): + v = v-v.min()+eps + v = v/v.sum() + return v + ``` + + Başlangıçta vektörün tüm bileşenleri aynı olduğunda 0’a bölmeyi önlemek için orijinal vektöre birkaç `eps` ekliyoruz. + +Öğrenme algoritmasını 5000 deney, yani **epoch** boyunca çalıştırın: (kod bloğu 8) +```python + for epoch in range(5000): + + # Başlangıç noktasını seç + m.random_start() + + # Seyahate başla + 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) # Oyuncunun tahtanın dışına çıkmasına izin veriyoruz, bu bölümün sonlanmasına neden olur + 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 +``` + +Bu algoritmayı çalıştırdıktan sonra Q-Tablosu, her adımdaki farklı eylemlerin çekiciliğini define eden değerlerle güncellenmiş olmalıdır. Q-Tablosunu görselleştirerek, her hücreye hareket yönünü gösterecek bir vektör çizebiliriz. Basitlik için ok yerine küçük bir daire çizeriz. + + + +## Politikayı kontrol etme + +Q-Tablosu her durumdaki eylemin "çekiciliğini" listelediği için, bunu dünyamızda etkin navigasyon tanımlamak için kullanmak oldukça kolaydır. En basit durumda, en yüksek Q-Tablosu değerine karşılık gelen eylemi seçebiliriz: (kod bloğu 9) ```python def qpolicy_strict(m): @@ -198,17 +274,18 @@ def qpolicy_strict(m): walk(m,qpolicy_strict) ``` -> Yukarıdaki kodu birkaç kez denerseniz, bazen "takıldığını" fark edebilirsiniz ve bunu durdurmak için not defterindeki STOP düğmesine basmanız gerekir. Bu, iki durumun optimal Q-Değeri açısından birbirine "işaret ettiği" durumlarda meydana gelir; bu durumda ajan, bu durumlar arasında sonsuz bir şekilde hareket eder. + +> Yukarıdaki kodu birkaç kez denerseniz, bazen "takıldığını" fark edebilirsiniz ve durdurmak için defterdeki STOP düğmesine basmanız gerekebilir. Bu, iki durumun optimal Q-Değeri açısından birbirine "işaret ettiği" durumlar olabileceği için olur ve bu durumda ajanlar bu durumlar arasında sonsuza kadar gezinir. ## 🚀Meydan Okuma -> **Görev 1:** `walk` fonksiyonunu, yolun maksimum uzunluğunu belirli bir adım sayısıyla (örneğin, 100) sınırlayacak şekilde değiştirin ve yukarıdaki kodun bu değeri zaman zaman döndürdüğünü gözlemleyin. +> **Görev 1:** `walk` fonksiyonunu, yolun maksimum uzunluğunu belirli bir adım sayısıyla (örneğin 100) sınırlayacak şekilde değiştirin ve yukarıdaki kodun zaman zaman bu değeri döndürdüğünü gözlemleyin. -> **Görev 2:** `walk` fonksiyonunu, daha önce bulunduğu yerlere geri dönmemesini sağlayacak şekilde değiştirin. Bu, `walk`'un döngüye girmesini engelleyecektir, ancak ajan yine de kaçamayacağı bir konumda "sıkışıp" kalabilir. +> **Görev 2:** `walk` fonksiyonunu, daha önce bulunduğu yerlere geri gitmemesi için değiştirin. Bu, `walk`'un döngüye girmesini önleyecektir, ancak ajan yine de kaçamayacağı bir konumda "tuzaklanabilir". -## Gezinme +## Navigasyon -Daha iyi bir gezinme politikası, eğitim sırasında kullandığımız ve sömürü ile keşfi birleştiren politika olacaktır. Bu politikada, her bir eylemi belirli bir olasılıkla, Q-Tablosundaki değerlere orantılı olarak seçiyoruz. Bu strateji, ajanın daha önce keşfettiği bir konuma geri dönmesine neden olabilir, ancak aşağıdaki koddan görebileceğiniz gibi, istenen konuma çok kısa bir ortalama yol ile sonuçlanır (unutmayın ki `print_statistics` simülasyonu 100 kez çalıştırır): (kod bloğu 10) +Daha iyi bir navigasyon politikası, eğitim sırasında kullandığımız, sömürü ve keşfi birleştiren politika olurdu. Bu politikada, Q-Tablosundaki değerlere orantılı olarak her eylemi belirli bir olasılıkla seçeriz. Bu strateji, ajanın zaten keşfettiği bir konuma geri dönmesine neden olabilir, ancak aşağıdaki koddaki gibi, istenen konuma çok kısa ortalama yol ile ulaşmayı sağlar (unutmayın, `print_statistics` simülasyonu 100 kez çalıştırır): (kod bloğu 10) ```python def qpolicy(m): @@ -220,28 +297,32 @@ def qpolicy(m): print_statistics(qpolicy) ``` -Bu kodu çalıştırdıktan sonra, önceki ortalama yol uzunluğundan çok daha küçük bir değer elde etmelisiniz, genellikle 3-6 aralığında. +Bu kodu çalıştırdıktan sonra, öncekine kıyasla çok daha küçük bir ortalama yol uzunluğu elde etmelisiniz, yaklaşık 3-6 arasında. + +## Öğrenme sürecini incelemek -## Öğrenme Sürecini İnceleme +Belirttiğimiz gibi, öğrenme süreci, keşif ve problem alanının yapısı hakkındaki kazanılmış bilgiyi kullanma arasında bir dengedir. Öğrenmenin sonuçlarının (ajanın hedefe kısa yol bulmasına yardımcı olma yeteneği) geliştiğini gördük, ancak ortalama yol uzunluğunun öğrenme sürecinde nasıl davrandığını gözlemlemek de ilginçtir: -Bahsettiğimiz gibi, öğrenme süreci, problem alanının yapısı hakkında kazanılan bilginin keşfi ve kullanımı arasında bir dengedir. Öğrenme sonuçlarının (ajanın hedefe kısa bir yol bulmasına yardımcı olma yeteneği) iyileştiğini gördük, ancak öğrenme süreci sırasında ortalama yol uzunluğunun nasıl davrandığını gözlemlemek de ilginçtir: + -## Öğrenilenler şu şekilde özetlenebilir: +Öğrenmeler şu şekilde özetlenebilir: -- **Ortalama yol uzunluğu artar**. Burada gördüğümüz şey, başlangıçta ortalama yol uzunluğunun arttığıdır. Bu muhtemelen, çevre hakkında hiçbir şey bilmediğimizde kötü durumlarda, su veya kurt gibi, sıkışma olasılığımızın yüksek olmasından kaynaklanmaktadır. Daha fazla bilgi edindikçe ve bu bilgiyi kullanmaya başladıkça, çevreyi daha uzun süre keşfedebiliriz, ancak elmaların nerede olduğunu hala çok iyi bilmiyoruz. +- **Ortalama yol uzunluğu artar**. Burada gördüğümüz, başlangıçta ortalama yol uzunluğunun arttığıdır. Bu muhtemelen çevre hakkında hiçbir şey bilmediğimizde, kötü durumlara, suya veya kurda takılma ihtimalimizin yüksek olmasından kaynaklanır. Daha çok şey öğrendikçe ve bu bilgiyi kullanmaya başladıkça, çevreyi daha uzun süre keşfedebiliriz, ancak hala elmaların nerede olduğunu çok iyi bilmiyoruz. -- **Yol uzunluğu, daha fazla öğrendikçe azalır**. Yeterince öğrendikten sonra, ajanın hedefe ulaşması daha kolay hale gelir ve yol uzunluğu azalmaya başlar. Ancak, hala keşfe açık olduğumuz için, genellikle en iyi yoldan saparız ve yeni seçenekleri keşfederek yolu optimalden daha uzun hale getiririz. +- **Öğrendikçe yol uzunluğu azalır**. Yeterince öğrendiğimizde, ajanın hedefe ulaşması kolaylaşır ve yol uzunluğu azalmaya başlar. Ancak hala keşfe açığız, bu yüzden genellikle en iyi yoldan sapar ve yeni seçenekleri keşfederiz, bu da yolu optimalden daha uzun yapar. -- **Uzunluk aniden artar**. Grafikte ayrıca uzunluğun bir noktada aniden arttığını gözlemliyoruz. Bu, sürecin stokastik doğasını ve Q-Tablo katsayılarını yeni değerlerle üzerine yazmak suretiyle "bozabileceğimizi" gösterir. Bu, ideal olarak öğrenme oranını azaltarak (örneğin, eğitimin sonlarına doğru Q-Tablo değerlerini yalnızca küçük bir değerle ayarlayarak) en aza indirgenmelidir. +- **Uzunluk ani artış gösterir**. Bu grafikte ayrıca şu anlaşılıyor ki, belirli bir zamanda uzunluk ani şekilde artmıştır. Bu, sürecin stokastik doğasını ve Q-Tablosu katsayılarının yeni değerlerle üzerine yazılarak "bozulabileceğini" gösterir. Bu ideal olarak öğrenme oranını azaltarak en aza indirilmelidir (örneğin, eğitim sonunda Q-Tablo değerlerini sadece küçük bir değerle güncelleriz). -Genel olarak, öğrenme sürecinin başarısı ve kalitesi, öğrenme oranı, öğrenme oranı azalması ve indirim faktörü gibi parametrelere önemli ölçüde bağlıdır. Bunlar genellikle **hiperparametreler** olarak adlandırılır, çünkü eğitim sırasında optimize ettiğimiz **parametrelerden** (örneğin, Q-Tablo katsayıları) farklıdırlar. En iyi hiperparametre değerlerini bulma sürecine **hiperparametre optimizasyonu** denir ve bu ayrı bir konuyu hak eder. +Genel olarak, öğrenme sürecinin başarısı ve kalitesi, öğrenme oranı, öğrenme oranı azalışı ve indirim faktörü gibi parametrelere önemli ölçüde bağlıdır. Bunlar genellikle **hiperparametreler** olarak adlandırılır ve eğitim sırasında optimize ettiğimiz **parametre**lerden (örneğin Q-Tablosu katsayıları) ayrılır. En iyi hiperparametre değerlerini bulma sürecine **hiperparametre optimizasyonu** denir ve ayrı bir konudur. -## [Ders Sonrası Test](https://ff-quizzes.netlify.app/en/ml/) +## [Ders sonrası sınav](https://ff-quizzes.netlify.app/en/ml/) ## Ödev [Daha Gerçekçi Bir Dünya](assignment.md) --- -**Feragatname**: -Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz. \ No newline at end of file + +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba sarf etsek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayınız. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımı sonucu ortaya çıkabilecek yanlış anlamalardan veya yanlış yorumlamalardan sorumlu değiliz. + \ No newline at end of file diff --git a/translations/tr/8-Reinforcement/2-Gym/README.md b/translations/tr/8-Reinforcement/2-Gym/README.md index b8e8d36b8..b93c44a7b 100644 --- a/translations/tr/8-Reinforcement/2-Gym/README.md +++ b/translations/tr/8-Reinforcement/2-Gym/README.md @@ -1,14 +1,34 @@ -## Ön Koşullar +# CartPole Pateni -Bu derste, farklı **ortamları** simüle etmek için **OpenAI Gym** adlı bir kütüphane kullanacağız. Bu dersin kodunu yerel olarak (örneğin, Visual Studio Code'dan) çalıştırabilirsiniz; bu durumda simülasyon yeni bir pencerede açılacaktır. Kodu çevrimiçi çalıştırırken, [burada](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7) açıklandığı gibi kodda bazı değişiklikler yapmanız gerekebilir. +Önceki derste çözdüğümüz problem oyuncak bir problem gibi görünebilir, gerçek yaşam senaryoları için gerçekten uygulanabilir değilmiş gibi. Bu durum böyle değil, çünkü birçok gerçek dünya problemi de bu senaryoyu paylaşır - Satranç veya Go oynama dahil. Benzerler çünkü elimizde verilen kurallara sahip bir tahta ve **kesikli bir durum** bulunur. + +## [Ders öncesi quiz](https://ff-quizzes.netlify.app/en/ml/) + +## Giriş + +Bu derste Q-Öğrenmenin aynı ilkelerini **sürekli durum** problemlerine uygulayacağız, yani durumu bir veya daha fazla gerçek sayıyla verilen bir problemdir. Aşağıdaki problemle ilgileneceğiz: + +> **Problem**: Eğer Peter kurttan kaçmak istiyorsa, daha hızlı hareket edebilmesi gerekir. Peter'ın nasıl kaymayı, özellikle dengeyi nasıl koruyabileceğini Q-Öğrenme kullanarak göreceğiz. + +![Büyük kaçış!](../../../../translated_images/tr/escape.18862db9930337e3.webp) + +> Peter ve arkadaşları kurtlardan kaçmak için yaratıcı oluyor! Görsel: [Jen Looper](https://twitter.com/jenlooper) + +Deneyimde, dengelemeyle ilgili basitleştirilmiş bir versiyon olan **CartPole** probleminden faydalanacağız. Cartpole dünyasında, yatay hareket edebilen bir kaydırıcı var ve hedef bu kaydırıcının üzerinde dikey bir direği dengelemektir. + +bir cartpole + +## Önkoşullar + +Bu derste, farklı **ortamları** simüle etmek için **OpenAI Gym** adlı bir kütüphane kullanacağız. Bu dersin kodunu yerel olarak (örneğin Visual Studio Code'dan) çalıştırabilirsiniz; bu durumda simülasyon yeni bir pencerede açılır. Çevrimiçi kod çalıştırırken, burada açıklandığı gibi [birkaç ayar yapmanız](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7) gerekebilir. ## OpenAI Gym -Önceki derste, oyunun kuralları ve durum, kendimiz tanımladığımız `Board` sınıfı tarafından belirlenmişti. Burada, dengeleyen direğin fiziğini simüle edecek özel bir **simülasyon ortamı** kullanacağız. Takviye öğrenme algoritmalarını eğitmek için en popüler simülasyon ortamlarından biri, [Gym](https://gym.openai.com/) olarak adlandırılır ve [OpenAI](https://openai.com/) tarafından geliştirilmiştir. Bu gym'i kullanarak, bir cartpole simülasyonundan Atari oyunlarına kadar farklı **ortamlar** oluşturabiliriz. +Önceki derste, oyunun kuralları ve durum, kendimizin tanımladığı `Board` sınıfı tarafından sağlanıyordu. Burada ise denge direğinin fiziksel simülasyonunu sağlayan özel bir **simülasyon ortamı** kullanacağız. Takviye öğrenme algoritmalarını eğitmek için en popüler simülasyon ortamlarından biri [Gym](https://gym.openai.com/) olarak adlandırılır ve [OpenAI](https://openai.com/) tarafından sürdürülür. Bu gym'i kullanarak cartpole simülasyonundan Atari oyunlarına kadar çeşitli **ortamlar** oluşturabiliriz. > **Not**: OpenAI Gym tarafından sunulan diğer ortamları [buradan](https://gym.openai.com/envs/#classic_control) görebilirsiniz. -Öncelikle gym'i yükleyelim ve gerekli kütüphaneleri içe aktaralım (kod bloğu 1): +Öncelikle, gym'i yükleyelim ve gerekli kütüphaneleri içe aktaralım (kod bloğu 1): ```python import sys @@ -20,15 +40,15 @@ import numpy as np import random ``` -## Alıştırma - bir cartpole ortamı başlatma +## Alıştırma - Cartpole ortamını başlatmak -Cartpole dengeleme problemiyle çalışmak için ilgili ortamı başlatmamız gerekiyor. Her ortam şu özelliklere sahiptir: +Cartpole dengeleme problemiyle çalışmak için ilgili ortamı başlatmamız gerekir. Her ortam aşağıdakilerle ilişkilidir: -- **Gözlem alanı**: Ortamdan aldığımız bilgilerin yapısını tanımlar. Cartpole probleminde, direğin pozisyonu, hızı ve diğer bazı değerleri alırız. +- Çevreden aldığımız bilgilerin yapısını tanımlayan **Gözlem uzayı**. Cartpole probleminde, direğin konumu, hızı ve bazı diğer değerleri alırız. -- **Eylem alanı**: Olası eylemleri tanımlar. Bizim durumumuzda eylem alanı ayrık olup iki eylemden oluşur - **sol** ve **sağ**. (kod bloğu 2) +- Olası eylemleri tanımlayan **Eylem uzayı**. Bizim durumumuzda eylem uzayı kesiklidir ve iki eylemden oluşur - **sol** ve **sağ**. (kod bloğu 2) -1. Başlatmak için şu kodu yazın: +1. Başlatmak için aşağıdaki kodu yazın: ```python env = gym.make("CartPole-v1") @@ -37,11 +57,11 @@ Cartpole dengeleme problemiyle çalışmak için ilgili ortamı başlatmamız ge print(env.action_space.sample()) ``` -Ortamın nasıl çalıştığını görmek için 100 adımlık kısa bir simülasyon çalıştıralım. Her adımda, yapılacak bir eylemi sağlıyoruz - bu simülasyonda `action_space`'den rastgele bir eylem seçiyoruz. +Ortamın nasıl çalıştığını görmek için 100 adımlık kısa bir simülasyon yapalım. Her adımda yapılacak eylemlerden biri sağlanır - bu simülasyonda `action_space` içinden rastgele bir eylem seçiyoruz. -1. Aşağıdaki kodu çalıştırın ve ne sonuç verdiğini görün. +1. Aşağıdaki kodu çalıştırın ve neye yol açtığını görün. - ✅ Bu kodu yerel bir Python kurulumunda çalıştırmanız önerilir! (kod bloğu 3) + ✅ Bu kodu yerel Python kurulumunda çalıştırmanız tercih edilir! (kod bloğu 3) ```python env.reset() @@ -52,11 +72,11 @@ Ortamın nasıl çalıştığını görmek için 100 adımlık kısa bir simüla env.close() ``` - Şuna benzer bir şey görmelisiniz: + Benzer bir görüntü görmelisiniz: - ![dengelemeyen cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) + ![dengelenmeyen cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) -1. Simülasyon sırasında, nasıl hareket edeceğimize karar vermek için gözlemler almamız gerekiyor. Aslında, step fonksiyonu mevcut gözlemleri, bir ödül fonksiyonunu ve simülasyona devam etmenin mantıklı olup olmadığını gösteren bir done bayrağını döndürür: (kod bloğu 4) +1. Simülasyon esnasında, nasıl hareket edeceğimize karar vermek için gözlemler almalıyız. Aslında step fonksiyonu mevcut gözlemleri, ödül fonksiyonunu ve simülasyonun devam ettirilip ettirilmemesi gerektiğini gösteren done bayrağını döndürür: (kod bloğu 4) ```python env.reset() @@ -69,7 +89,7 @@ Ortamın nasıl çalıştığını görmek için 100 adımlık kısa bir simüla env.close() ``` - Notebook çıktısında buna benzer bir şey göreceksiniz: + Defter çıktısında aşağıdaki gibi bir şey göreceksiniz: ```text [ 0.03403272 -0.24301182 0.02669811 0.2895829 ] -> 1.0 @@ -83,10 +103,10 @@ Ortamın nasıl çalıştığını görmek için 100 adımlık kısa bir simüla ``` Simülasyonun her adımında döndürülen gözlem vektörü şu değerleri içerir: - - Kartın pozisyonu - - Kartın hızı + - Arabacığın pozisyonu + - Arabacığın hız vektörü - Direğin açısı - - Direğin dönüş hızı + - Direğin dönme hızı 1. Bu sayıların minimum ve maksimum değerlerini alın: (kod bloğu 5) @@ -95,30 +115,30 @@ Ortamın nasıl çalıştığını görmek için 100 adımlık kısa bir simüla print(env.observation_space.high) ``` - Ayrıca, her simülasyon adımında ödül değerinin her zaman 1 olduğunu fark edebilirsiniz. Bunun nedeni, amacımızın mümkün olduğunca uzun süre hayatta kalmak, yani direği makul bir dikey pozisyonda en uzun süre tutmak olmasıdır. + Ayrıca her simülasyon adımında ödülün daima 1 olduğunu görebilirsiniz. Bunun sebebi hedefimizin mümkün olduğunca uzun yaşamak, yani direği makul bir dik pozisyonda olabildiğince uzun tutmak olmasıdır. - ✅ Aslında, CartPole simülasyonu, 100 ardışık deneme boyunca ortalama 195 ödül almayı başardığımızda çözülmüş kabul edilir. + ✅ Aslında, CartPole simülasyonu, 100 ardışık denemde ortalama 195 ödüle ulaşılırsa çözüldü olarak kabul edilir. -## Durum Ayrıklaştırma +## Durumun kesik hale getirilmesi -Q-Öğrenme'de, her durumda ne yapılacağını tanımlayan bir Q-Tablosu oluşturmamız gerekiyor. Bunu yapabilmek için, durumun **ayrık** olması, daha doğrusu, sonlu sayıda ayrık değer içermesi gerekir. Bu nedenle, gözlemlerimizi bir şekilde **ayrıklaştırmamız**, onları sonlu bir durum kümesine eşlememiz gerekiyor. +Q-Öğrenmede, her durumda ne yapılacağını tanımlayan Q-Tablosu oluşturmalıyız. Bunu yapabilmek için, durumun **kesikli** olması gerekir, yani sonlu sayıda kesikli değeri içermelidir. Bu nedenle gözlemlerimizi finİt bir dizi duruma eşleyerek bir şekilde **kesikli hale getirmemiz** gerekir. -Bunu yapmanın birkaç yolu vardır: +Bunun birkaç yolu vardır: -- **Aralıklara bölmek**. Belirli bir değerin aralığını biliyorsak, bu aralığı bir dizi **aralığa** bölebilir ve ardından değeri ait olduğu aralık numarasıyla değiştirebiliriz. Bu, numpy [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html) yöntemi kullanılarak yapılabilir. Bu durumda, durum boyutunu kesin olarak bileceğiz, çünkü dijitalleştirme için seçtiğimiz aralık sayısına bağlı olacaktır. +- **Bölgelere ayırmak**. Belirli bir değerin aralığını biliyorsak, bu aralığı birkaç **bölgeye** ayırabilir ve ardından değeri ait olduğu bölge numarası ile değiştirebiliriz. Bu numpy [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html) metodu ile yapılabilir. Bu durumda durum boyutunu tam olarak biliriz çünkü seçtiğimiz dijitalizasyon bölgelerinin sayısına bağlıdır. -✅ Değerleri belirli bir sonlu aralığa (örneğin, -20 ile 20 arasında) getirmek için doğrusal interpolasyon kullanabilir ve ardından sayıları yuvarlayarak tam sayılara dönüştürebiliriz. Bu, durum boyutunun büyüklüğü üzerinde biraz daha az kontrol sağlar, özellikle de giriş değerlerinin kesin aralıklarını bilmiyorsak. Örneğin, bizim durumumuzda 4 değerden 2'sinin üst/alt sınırları yoktur, bu da sonsuz sayıda duruma yol açabilir. +✅ Değerleri sonlu bir aralığa (örneğin -20 ile 20 arası) getirmek için lineer enterpolasyon kullanabiliriz, ardından sayıları yuvarlayarak tam sayılara dönüştürebiliriz. Bu, özellikle giriş değerlerinin tam aralıklarını bilmiyorsak durum boyutunu tam kontrol etmede biraz daha az esneklik sağlar. Örneğin, bizim durumumuzda 4 değerden 2'sinin üst/alt sınırları yoktur, bu da sonsuz sayıda durum olmasına yol açabilir. -Bizim örneğimizde ikinci yaklaşımı kullanacağız. Daha sonra fark edeceğiniz gibi, tanımsız üst/alt sınırlara rağmen, bu değerler nadiren belirli sonlu aralıkların dışına çıkar, bu nedenle aşırı değerlerle durumlar çok nadir olacaktır. +Örneğimizde, ikinci yaklaşımı kullanacağız. Daha sonra fark edebileceğiniz gibi, tanımsız üst/alt sınırlarına rağmen, bu değerler nadiren belirli sonlu aralıkların dışına çıkar, bu nedenle aşırı değerli durumlar çok nadir olacaktır. -1. İşte modelimizden gözlemi alacak ve 4 tam sayı değerinden oluşan bir tuple üretecek fonksiyon: (kod bloğu 6) +1. Modelimizden aldığı gözlemi alıp 4 tam sayıdan oluşan bir tuple döndürecek fonksiyon: (kod bloğu 6) ```python def discretize(x): return tuple((x/np.array([0.25, 0.25, 0.01, 0.1])).astype(np.int)) ``` -1. Aralıklar kullanarak başka bir ayrıklaştırma yöntemini de keşfedelim: (kod bloğu 7) +1. Bölgelere ayırma yöntemini kullanarak başka bir kesik hale getirme yöntemi de keşfedelim: (kod bloğu 7) ```python def create_bins(i,num): @@ -126,17 +146,17 @@ Bizim örneğimizde ikinci yaklaşımı kullanacağız. Daha sonra fark edeceği 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)] # her parametre için değer aralıkları + nbins = [20,20,10,10] # her parametre için kutu sayısı 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. Şimdi kısa bir simülasyon çalıştıralım ve bu ayrık ortam değerlerini gözlemleyelim. `discretize` ve `discretize_bins` yöntemlerini denemekten çekinmeyin ve aralarında bir fark olup olmadığını görün. +1. Kısa bir simülasyon yapalım ve bu kesikli ortam değerlerine bakalım. Her iki fonksiyonu da deneyip arada fark olup olmadığını gözlemleyebilirsiniz. - ✅ discretize_bins, 0 tabanlı olan aralık numarasını döndürür. Bu nedenle, giriş değişkeninin 0 civarındaki değerleri için aralığın ortasındaki numarayı (10) döndürür. Discretize'de, çıktı değerlerinin aralığıyla ilgilenmedik, onların negatif olmasına izin verdik, bu nedenle durum değerleri kaydırılmadı ve 0, 0'a karşılık gelir. (kod bloğu 8) + ✅ discretize_bins, 0 tabanlı bölge numarasını döndürür. Bu nedenle giriş değişkeni 0 civarında olanlar için aralığın ortasından bir sayı (10) verir. discretize'de ise çıktı değerlerinin aralığı ile ilgilenmedik, negatif olabilir, bu yüzden durum değerleri kaydırılmaz ve 0, 0'a karşılık gelir. (kod bloğu 8) ```python env.reset() @@ -150,15 +170,15 @@ Bizim örneğimizde ikinci yaklaşımı kullanacağız. Daha sonra fark edeceği env.close() ``` - ✅ Ortamın nasıl çalıştığını görmek istiyorsanız, env.render ile başlayan satırı yorumdan çıkarabilirsiniz. Aksi takdirde, bunu arka planda çalıştırabilirsiniz, bu daha hızlıdır. Q-Öğrenme sürecimiz sırasında bu "görünmez" yürütmeyi kullanacağız. + ✅ Ortamın nasıl çalıştığını görmek isterseniz env.render ile başlayan satırı açabilirsiniz. Aksi halde arka planda çalıştırabilirsiniz, bu daha hızlıdır. Q-Öğrenme sürecimiz boyunca bu "görünmez" çalıştırmayı kullanacağız. -## Q-Tablosu Yapısı +## Q-Tablo yapısı -Önceki dersimizde, durum 0'dan 8'e kadar olan basit bir sayı çiftiydi ve bu nedenle Q-Tablosunu 8x8x2 şekline sahip bir numpy tensörü ile temsil etmek uygundu. Aralık ayrıklaştırmasını kullanırsak, durum vektörümüzün boyutu da bilinir, bu nedenle aynı yaklaşımı kullanabilir ve durumu 20x20x10x10x2 şeklinde bir dizi ile temsil edebiliriz (burada 2, eylem alanının boyutudur ve ilk boyutlar gözlem alanındaki her parametre için seçtiğimiz aralık sayısına karşılık gelir). +Önceki dersimizde durum, 0 ile 8 arasında basit bir sayı çiftiydi, bu yüzden Q-Tablosunu 8x8x2 şekline sahip numpy tensörü olarak temsil etmek uygundu. Bölgelere ayırma kullanırsak durum vektörünün boyutu da bilinir, aynı yaklaşımı kullanabiliriz ve durumu 20x20x10x10x2 şekline sahip bir dizi olarak gösterebiliriz (burada 2, eylem uzayının boyutu ve diğer boyutlar gözlem uzayındaki parametreler için seçilen bölge sayısına karşılık gelir). -Ancak, bazen gözlem alanının kesin boyutları bilinmez. `discretize` fonksiyonu durumunda, durumumuzun belirli sınırlar içinde kalacağından asla emin olamayabiliriz, çünkü bazı orijinal değerler sınırlı değildir. Bu nedenle, biraz farklı bir yaklaşım kullanacağız ve Q-Tablosunu bir sözlükle temsil edeceğiz. +Ancak bazen gözlem uzayının kesin boyutları bilinmez. `discretize` fonksiyonunda durumumuz belirli limitler içinde kalmayabilir, çünkü bazı orijinal değerler sınırlı değildir. Bu nedenle, Q-Tablosunu sözlük olarak temsil ederek biraz farklı bir yaklaşım kullanacağız. -1. *(state,action)* çiftini sözlük anahtarı olarak kullanın ve değer Q-Tablosu giriş değerine karşılık gelir. (kod bloğu 9) +1. * (durum, eylem) * çiftini sözlük anahtarı olarak kullanın, değer ise Q-Tablo girişi olacaktır. (kod bloğu 9) ```python Q = {} @@ -168,38 +188,38 @@ Ancak, bazen gözlem alanının kesin boyutları bilinmez. `discretize` fonksiyo return [Q.get((state,a),0) for a in actions] ``` - Burada ayrıca, bir duruma karşılık gelen tüm olası eylemler için Q-Tablosu değerlerinin bir listesini döndüren `qvalues()` fonksiyonunu tanımlıyoruz. Giriş Q-Tablosunda mevcut değilse, varsayılan olarak 0 döndüreceğiz. + Burada ayrıca verilen durum için tüm olası eylemleri karşılayan Q-Tablo değerlerinin listesini döndüren `qvalues()` fonksiyonunu tanımlıyoruz. Eğer Q-Tabloda giriş yoksa varsayılan olarak 0 döndüreceğiz. -## Q-Öğrenmeye Başlayalım +## Q-Öğrenme başlıyor Şimdi Peter'a dengeyi öğretmeye hazırız! -1. İlk olarak, bazı hiperparametreler belirleyelim: (kod bloğu 10) +1. Öncelikle bazı hiperparametreleri ayarlayalım: (kod bloğu 10) ```python - # hyperparameters + # hiperparametreler alpha = 0.3 gamma = 0.9 epsilon = 0.90 ``` - Burada, `alpha`, Q-Tablosunun mevcut değerlerini her adımda ne ölçüde ayarlamamız gerektiğini tanımlayan **öğrenme oranıdır**. Önceki derste 1 ile başladık ve ardından `alpha` değerlerini eğitim sırasında daha düşük değerlere düşürdük. Bu örnekte basitlik adına sabit tutacağız ve daha sonra `alpha` değerlerini ayarlamayı deneyebilirsiniz. + Burada `alpha`, her adımda Q-Tablodaki mevcut değerlerin ne ölçüde ayarlanacağını belirleyen **öğrenme oranıdır**. Önceki derste 1 ile başlıyorduk ve eğitim sırasında `alpha` değerini düşürüyorduk. Bu örnekte basitlik için sabit tutacağız, ancak daha sonra `alpha` değerleriyle denemeler yapabilirsiniz. - `gamma`, gelecekteki ödülü mevcut ödüle göre ne ölçüde önceliklendirmemiz gerektiğini gösteren **indirim faktörüdür**. + `gamma`, gelecekteki ödülü mevcut ödüle tercih etme derecesini gösteren **indirim faktörüdür**. - `epsilon`, keşif/istismar faktörüdür ve keşfi mi yoksa istismarı mı tercih etmemiz gerektiğini belirler. Algoritmamızda, `epsilon` yüzdesinde bir sonraki eylemi Q-Tablosu değerlerine göre seçeceğiz ve kalan durumlarda rastgele bir eylem gerçekleştireceğiz. Bu, daha önce hiç görmediğimiz arama alanı bölgelerini keşfetmemizi sağlayacaktır. + `epsilon`, keşif/sömürü faktörüdür ve keşfi sömürüye tercih edip etmeyeceğimizi belirler. Algoritmamızda, `epsilon` yüzdesi kadar durumda Q-Tablosuna göre sonraki eylemi seçeceğiz, kalan durumda ise rastgele eylem gerçekleştireceğiz. Böylece daha önce keşfetmediğimiz arama alanlarını keşfetme şansımız olur. - ✅ Denge açısından - rastgele bir eylem seçmek (keşif), yanlış yönde rastgele bir darbe gibi davranır ve direk bu "hatalardan" dengeyi nasıl kurtaracağını öğrenmek zorunda kalır. + ✅ Dengeleme açısından, rastgele eylem seçmek (keşif), yanlış yöne rastgele bir hamle yapmak gibi olur ve direk bu "hatalardan" nasıl dengeyi yeniden sağlayacağını öğrenir. -### Algoritmayı Geliştirme +### Algoritmayı geliştirin Önceki dersten algoritmamıza iki iyileştirme yapabiliriz: -- **Ortalama kümülatif ödülü hesaplama**, bir dizi simülasyon boyunca. İlerlemeyi her 5000 iterasyonda yazdıracağız ve kümülatif ödülümüzü bu süre boyunca ortalama alacağız. Bu, 195 puandan fazla alırsak - problemi çözmüş kabul edebiliriz, hatta gereken kaliteden daha yüksek bir şekilde. - -- **Maksimum ortalama kümülatif sonucu hesaplama**, `Qmax`, ve bu sonuca karşılık gelen Q-Tablosunu saklayacağız. Eğitimi çalıştırdığınızda, bazen ortalama kümülatif sonucun düşmeye başladığını fark edeceksiniz ve bu durumda, Q-Tablosunda durumu daha kötü hale getiren değerlerle zaten öğrenilmiş değerleri "bozabiliriz". +- Belirli bir sayıda simülasyondaki **ortalama kümülatif ödülü hesaplayın**. Her 5000 iterasyonda ilerlemeyi yazdıracağız ve o süre boyunca kümülatif ödüllerimizi ortalayacağız. Yani 195 puandan fazla alırsak problemi çözülmüş sayabiliriz, hatta gerekenin üzerinde kaliteyle. + +- **Maksimum ortalama kümülatif sonucu**, `Qmax` hesaplayacağız ve bu sonuca karşılık gelen Q-Tablosunu saklayacağız. Eğitimi çalıştırdığınızda bazen ortalama kümülatif sonucun azaldığını gözlemlersiniz ve eğitim sırasında gözlemlenen en iyi modele karşılık gelen Q-Tablosu değerlerini korumak isteriz. -1. Her simülasyondaki kümülatif ödülleri `rewards` vektöründe toplayın ve daha sonra grafik çizmek için kullanın. (kod bloğu 11) +1. Grafik çizmek için her simülasyondaki kümülatif ödülleri `rewards` vektöründe toplayın. (kod bloğu 11) ```python def probs(v,eps=1e-4): @@ -214,15 +234,15 @@ Ancak, bazen gözlem alanının kesin boyutları bilinmez. `discretize` fonksiyo obs = env.reset() done = False cum_reward=0 - # == do the simulation == + # == simülasyonu yap == while not done: s = discretize(obs) if random.random() Qmax: @@ -240,25 +260,25 @@ Ancak, bazen gözlem alanının kesin boyutları bilinmez. `discretize` fonksiyo cum_rewards=[] ``` -Bu sonuçlardan fark edebileceğiniz şeyler: - -- **Hedefimize çok yakınız**. 100+ ardışık simülasyon çalıştırması boyunca 195 kümülatif ödül alma hedefimize çok yakınız veya aslında bunu başarmış olabiliriz! Daha küçük sayılar alsak bile, hala bilmiyoruz, çünkü 5000 çalıştırma boyunca ortalama alıyoruz ve resmi kriterde yalnızca 100 çalıştırma gerekiyor. +Bu sonuçlardan fark edebileceğiniz: -- **Ödül düşmeye başlıyor**. Bazen ödül düşmeye başlar, bu da Q-Tablosunda zaten öğrenilmiş değerleri daha kötü hale getiren değerlerle "bozabileceğimiz" anlamına gelir. +- **Hedefimize yakınız**. 100'den fazla ardışık simülasyonda 195 kümülatif ödül alma hedefine çok yakınız veya belki de tam olarak başardık! Daha düşük sayılar alsak bile henüz bilmiyoruz, çünkü ortalamayı 5000 koşu üzerinden alıyoruz ve resmi kriterde sadece 100 koşu isteniyor. + +- **Ödül düşmeye başlıyor**. Bazen ödül azalmaya başlıyor, bu da Q-Tablosundaki daha önce öğrenilmiş değerleri durumu kötüleştirenlerle "bozabileceğimiz" anlamına geliyor. -Bu gözlem, eğitim ilerlemesini grafikle gösterdiğimizde daha net bir şekilde görülebilir. +Bu gözlem, eğitim ilerlemesini grafikle gösterdiğimizde daha net görünür. -## Eğitim İlerlemesini Grafikle Gösterme +## Eğitim İlerlemesini Grafikle Görüntüleme -Eğitim sırasında, her iterasyondaki kümülatif ödül değerini `rewards` vektörüne topladık. İşte bunu iterasyon numarasına karşı grafikle gösterdiğimizde nasıl göründüğü: +Eğitim sırasında, her iterasyondaki kümülatif ödül değerlerini `rewards` vektörüne kaydettik. Burada iterasyon numarasına karşı grafiği: ```python plt.plot(rewards) ``` -![ham ilerleme](../../../../8-Reinforcement/2-Gym/images/train_progress_raw.png) +![ham ilerleme](../../../../translated_images/tr/train_progress_raw.2adfdf2daea09c59.webp) -Bu grafikten bir şey söylemek mümkün değil, çünkü stokastik eğitim sürecinin doğası gereği eğitim oturumlarının uzunluğu büyük ölçüde değişiyor. Bu grafiği daha anlamlı hale getirmek için, bir dizi deney boyunca **hareketli ortalama** hesaplayabiliriz, örneğin 100. Bu, `np.convolve` kullanılarak kolayca yapılabilir: (kod bloğu 12) +Bu grafikle bir şey söylemek mümkün değil, çünkü stohastik eğitim sürecinin doğası gereği eğitim süresi çok değişkendir. Bu grafiğin daha anlamlı olması için deneylerin üzerinde **koşan ortalama** hesaplayabiliriz, örneğin 100 deney üzerinden. Bu, `np.convolve` ile kolayca yapılabilir: (kod bloğu 12) ```python def running_average(x,window): @@ -267,21 +287,24 @@ def running_average(x,window): plt.plot(running_average(rewards,100)) ``` -![eğitim ilerlemesi](../../../../8-Reinforcement/2-Gym/images/train_progress_runav.png) +![eğitim ilerlemesi](../../../../translated_images/tr/train_progress_runav.c71694a8fa9ab359.webp) + +## Hiperparametreleri değiştirmek + +Öğrenmeyi daha kararlı hale getirmek için hiperparametrelerimizden bazılarını eğitim sırasında değiştirmek mantıklıdır. Özellikle: + +- **Öğrenme oranı** `alpha` için başlangıçta 1'e yakın değerler ile başlayabilir ve sonra bu parametreyi azaltabiliriz. Zamanla Q-Tablosunda iyi olasılık değerleri elde edeceğiz, dolayısıyla onları sadece biraz ayarlamalı, tamamen yenileriyle değiştirmemeliyiz. -## Hiperparametreleri Değiştirme +- **Epsilon'u artırmak**. `epsilon`'u yavaşça artırmak isteyebiliriz, böylece keşif daha az, sömürü daha fazla olur. Muhtemelen düşük `epsilon` ile başlayıp neredeyse 1'e kadar çıkarız. -Öğrenmeyi daha istikrarlı hale getirmek için, eğitim sırasında bazı hiperparametrelerimizi ayarlamak mantıklı olabilir. Özellikle: +> **Görev 1**: Hiperparametre değerleriyle oynayın ve daha yüksek kümülatif ödül elde edip edemediğinizi görün. 195'in üzerinde alıyor musunuz? -- **Öğrenme oranı** için, `alpha`, 1'e yakın değerlerle başlayabilir ve ardından bu parametreyi düşürmeye devam edebiliriz. Zamanla, Q-Tablosunda iyi olasılık değerleri elde edeceğiz ve bu nedenle onları hafifçe ayarlamalı, tamamen yeni değerlerle üzerine yazmamalıyız. -- **Epsilon'u artırma**. `epsilon`'u yavaşça artırmak isteyebiliriz, böylece daha az keşif yapıp daha fazla istismar yapabiliriz. Muhtemelen daha düşük bir `epsilon` değeriyle başlamak ve neredeyse 1'e kadar çıkarmak mantıklı olacaktır. -> **Görev 1**: Hiperparametre değerleriyle oynayın ve daha yüksek toplam ödül elde edip edemeyeceğinizi görün. 195'in üzerine çıkabiliyor musunuz? -> **Görev 2**: Problemi resmi olarak çözmek için, 100 ardışık çalışmada 195 ortalama ödül almanız gerekiyor. Bunu eğitim sırasında ölçün ve problemi resmi olarak çözdüğünüzden emin olun! +> **Görev 2**: Problemi resmi olarak çözmek için, 100 ardışık denemede ortalama 195 ödül almanız gerekiyor. Bunu eğitim sırasında ölçün ve problemin resmi olarak çözüldüğünden emin olun! -## Sonucu eylemde görmek +## Sonucu eylem halinde görmek -Eğitilmiş modelin nasıl davrandığını görmek ilginç olurdu. Simülasyonu çalıştıralım ve eğitim sırasında olduğu gibi aynı eylem seçme stratejisini izleyelim, Q-Tablosundaki olasılık dağılımına göre örnekleme yapalım: (kod bloğu 13) +Eğitilmiş modelin nasıl davrandığını gerçekten görmek ilginç olurdu. Simülasyonu çalıştıralım ve eğitim sırasında kullandığımız aynı eylem seçme stratejisini izleyelim, Q-Tablosundaki olasılık dağılımına göre örneklem yapalım: (kod bloğu 13) ```python obs = env.reset() @@ -295,30 +318,32 @@ while not done: env.close() ``` -Şuna benzer bir şey görmelisiniz: +Şunun gibi bir şey görmelisiniz: -![dengeleyen bir cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) +![bir dengeleyen cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) --- ## 🚀Meydan Okuma -> **Görev 3**: Burada, Q-Tablosunun son kopyasını kullanıyorduk, ancak bu en iyi olanı olmayabilir. Unutmayın ki en iyi performans gösteren Q-Tablosunu `Qbest` değişkenine kaydettik! `Qbest`'i `Q` üzerine kopyalayarak en iyi performans gösteren Q-Tablosuyla aynı örneği deneyin ve farkı fark edip etmediğinizi görün. +> **Görev 3**: Burada en son kopya Q-Tablosunu kullanıyorduk, bu en iyi olanı olmayabilir. En iyi performans gösteren Q-Tablosunu `Qbest` değişkenine kaydettiğimizi unutmayın! Aynı örneği en iyi performans gösteren Q-Tablosu ile deneyin, `Qbest`i `Q` üzerine kopyalayarak farkı görüp görmediğinizi kontrol edin. -> **Görev 4**: Burada her adımda en iyi eylemi seçmiyorduk, bunun yerine ilgili olasılık dağılımıyla örnekleme yapıyorduk. Her zaman en iyi eylemi, en yüksek Q-Tablosu değerine sahip olanı seçmek daha mantıklı olur mu? Bu, en yüksek Q-Tablosu değerine karşılık gelen eylem numarasını bulmak için `np.argmax` fonksiyonu kullanılarak yapılabilir. Bu stratejiyi uygulayın ve dengelemeyi iyileştirip iyileştirmediğini görün. +> **Görev 4**: Burada her adımda en iyi eylemi seçmiyorduk, ancak karşılık gelen olasılık dağılımıyla örneklem yapıyorduk. Her zaman en yüksek Q-Tablo değerine sahip olan en iyi eylemi seçmek daha mantıklı olur mu? Bu, `np.argmax` fonksiyonunu kullanarak en yüksek Q-Tablo değerine karşılık gelen eylem numarasını bulmakla yapılabilir. Bu stratejiyi uygulayın ve dengelemenin iyileşip iyileşmediğine bakın. -## [Ders sonrası sınav](https://ff-quizzes.netlify.app/en/ml/) +## [Ders sonrası quiz](https://ff-quizzes.netlify.app/en/ml/) ## Ödev -[Bir Mountain Car Eğitin](assignment.md) +[Bir Dağ Arabası Eğitin](assignment.md) ## Sonuç -Artık ajanları, oyunun istenen durumunu tanımlayan bir ödül fonksiyonu sağlayarak ve arama alanını akıllıca keşfetme fırsatı vererek iyi sonuçlar elde etmeleri için nasıl eğiteceğimizi öğrendik. Q-Öğrenme algoritmasını, ayrık ve sürekli ortamlar durumunda, ancak ayrık eylemlerle başarıyla uyguladık. +Artık, oyunun istenen durumunu tanımlayan bir ödül fonksiyonu sağlayarak ve arama alanını akıllıca keşfetmelerine fırsat vererek, ajanları iyi sonuçlar elde edecek şekilde nasıl eğiteceğimizi öğrendik. Q-Öğrenme algoritmasını hem ayrık hem de sürekli ortamlarda, ancak ayrık eylemlerle başarıyla uyguladık. -Eylem durumunun da sürekli olduğu ve gözlem alanının çok daha karmaşık olduğu, örneğin Atari oyun ekranından bir görüntü gibi durumları incelemek de önemlidir. Bu tür problemler için genellikle iyi sonuçlar elde etmek amacıyla daha güçlü makine öğrenimi tekniklerini, örneğin sinir ağlarını kullanmamız gerekir. Bu daha ileri düzey konular, yaklaşan daha gelişmiş AI kursumuzun konusudur. +Eylem durumunun da sürekli olduğu ve gözlem alanının Atari oyun ekranından gelen görüntü gibi çok daha karmaşık olduğu durumları incelemek de önemlidir. Bu tür problemlerde genellikle iyi sonuçlar elde etmek için sinir ağları gibi daha güçlü makine öğrenme tekniklerini kullanmamız gerekir. Bu daha ileri konular, yaklaşmakta olan daha ileri seviye Yapay Zeka dersimizin konusudur. --- -**Feragatname**: -Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluğu sağlamak için çaba göstersek de, otomatik çeviriler hata veya yanlışlıklar içerebilir. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz. \ No newline at end of file + +**Feragatname**: +Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba sarf etsek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayınız. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımı sonucu ortaya çıkabilecek yanlış anlamalardan veya yanlış yorumlamalardan sorumlu değiliz. + \ No newline at end of file diff --git a/translations/uk/.co-op-translator.json b/translations/uk/.co-op-translator.json index 40c5e9216..b3cffc13a 100644 --- a/translations/uk/.co-op-translator.json +++ b/translations/uk/.co-op-translator.json @@ -24,8 +24,8 @@ "language_code": "uk" }, "1-Introduction/3-fairness/README.md": { - "original_hash": "9a6b702d1437c0467e3c5c28d763dac2", - "translation_date": "2025-09-05T12:39:07+00:00", + "original_hash": "0f00d72169a0d37eecfd16d71e01700a", + "translation_date": "2026-07-14T01:27:31+00:00", "source_file": "1-Introduction/3-fairness/README.md", "language_code": "uk" }, @@ -54,8 +54,8 @@ "language_code": "uk" }, "2-Regression/1-Tools/README.md": { - "original_hash": "fa81d226c71d5af7a2cade31c1c92b88", - "translation_date": "2025-09-05T11:42:11+00:00", + "original_hash": "0b8635427b582d03ea4ab7089b93e505", + "translation_date": "2026-07-14T01:25:01+00:00", "source_file": "2-Regression/1-Tools/README.md", "language_code": "uk" }, @@ -72,8 +72,8 @@ "language_code": "uk" }, "2-Regression/2-Data/README.md": { - "original_hash": "7c077988328ebfe33b24d07945f16eca", - "translation_date": "2025-09-05T11:47:09+00:00", + "original_hash": "a58b2c4d16c6b122643391745ac15af6", + "translation_date": "2026-07-14T01:25:51+00:00", "source_file": "2-Regression/2-Data/README.md", "language_code": "uk" }, @@ -89,6 +89,12 @@ "source_file": "2-Regression/2-Data/solution/Julia/README.md", "language_code": "uk" }, + "2-Regression/2-Data/solution/notebook.ipynb": { + "original_hash": "96b95f8cf473481f2f371de8156f1571", + "translation_date": "2026-07-14T01:06:37+00:00", + "source_file": "2-Regression/2-Data/solution/notebook.ipynb", + "language_code": "uk" + }, "2-Regression/3-Linear/README.md": { "original_hash": "8b776e731c35b171d316d01d0e7b1369", "translation_date": "2026-04-26T19:18:00+00:00", @@ -457,7 +463,7 @@ }, "8-Reinforcement/1-QLearning/README.md": { "original_hash": "911efd5e595089000cb3c16fce1beab8", - "translation_date": "2025-09-05T13:38:44+00:00", + "translation_date": "2026-07-14T01:26:47+00:00", "source_file": "8-Reinforcement/1-QLearning/README.md", "language_code": "uk" }, @@ -523,7 +529,7 @@ }, "9-Real-World/2-Debugging-ML-Models/README.md": { "original_hash": "df2b538e8fbb3e91cf0419ae2f858675", - "translation_date": "2025-09-05T12:32:04+00:00", + "translation_date": "2026-07-14T01:28:22+00:00", "source_file": "9-Real-World/2-Debugging-ML-Models/README.md", "language_code": "uk" }, @@ -581,6 +587,19 @@ "source_file": "TROUBLESHOOTING.md", "language_code": "uk" }, + "__translation_failures__": { + "sketchnotes/LICENSE.md": { + "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f", + "source_file": "sketchnotes/LICENSE.md", + "language_code": "uk", + "failure_date": "2026-07-14T01:24: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:28+00:00", diff --git a/translations/uk/1-Introduction/3-fairness/README.md b/translations/uk/1-Introduction/3-fairness/README.md index 7d51621dd..90cb4558d 100644 --- a/translations/uk/1-Introduction/3-fairness/README.md +++ b/translations/uk/1-Introduction/3-fairness/README.md @@ -1,140 +1,167 @@ -# Створення рішень машинного навчання з відповідальним AI - -![Резюме відповідального AI у машинному навчанні у вигляді скетчноту](../../../../sketchnotes/ml-fairness.png) -> Скетчнот від [Tomomi Imura](https://www.twitter.com/girlie_mac) +# Створення рішень машинного навчання з відповідальним ШІ + +![Підсумок відповідального ШІ в машинному навчанні у вигляді скетчноуту](../../../../translated_images/uk/ml-fairness.ef296ebec6afc98a.webp) +> Скетчноут від [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) -[![Підхід Microsoft до відповідального AI](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Підхід Microsoft до відповідального AI") +[![Підхід Microsoft до відповідального ШІ](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](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) +- **Приниження.** Несправедливе критикування чи маркування чогось або когось. Наприклад, технологія маркування зображень сумно помилково позначила темношкірих людей як горил. +- **Надмірна або недостатня представленість.** Ідея полягає в тому, що певна група не представлена у певній професії, і будь-який сервіс чи функція, які сприяють цьому стану, спричиняють шкоду. +- **Стереотипізація.** Пов’язання певної групи з визначеними заздалегідь характеристиками. Наприклад, система перекладу між англійською та турецькою може мати помилки через слова з гендерними стереотипами. -![переклад на турецьку](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) -> переклад на турецьку +![переклад турецькою](../../../../translated_images/uk/gender-bias-translate-en-tr.f185fd8822c2d437.webp) +> переклад турецькою -![переклад назад на англійську](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) -> переклад назад на англійську +![переклад назад англійською](../../../../translated_images/uk/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) +> переклад назад англійською -Під час розробки та тестування систем 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 (Загальний регламент захисту даних). +- Але в системах ШІ необхідно враховувати напругу між потребою у більшій кількості персональних даних для підвищення персоналізації та ефективності – і приватністю. +- Подібно до народження підключених комп'ютерів з інтернетом, ми також спостерігаємо значне зростання кількості проблем з безпекою, що пов’язані із ШІ. +- Водночас ми бачимо, що ШІ використовується для покращення безпеки. Наприклад, більшість сучасних антивірусних сканерів працюють на основі евристики ШІ. +- Потрібно забезпечити, щоб наші процеси Data Science гармонійно поєднувалися з найсучаснішими практиками приватності та безпеки. -### Прозорість -Системи 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 впливає на окремих осіб або суспільство. +[![Відомий дослідник ШІ попереджає про масове спостереження за допомогою розпізнавання облич](../../../../translated_images/uk/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Підхід Microsoft до відповідального ШІ") -[![Попередження провідного дослідника AI про масове спостереження через розпізнавання облич](../../../../1-Introduction/3-fairness/images/accountability.png)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Підхід Microsoft до відповідального AI") +> 🎥 Натисніть на зображення вище для відео: Попередження про масове спостереження за допомогою розпізнавання облич -> 🎥 Натисніть на зображення вище, щоб переглянути відео: Попередження про масове спостереження через розпізнавання облич - -Зрештою, одне з найбільших питань для нашого покоління, як першого покоління, яке впроваджує AI у суспільство, полягає в тому, як гарантувати, що комп’ютери залишатимуться підзвітними людям, і як гарантувати, що люди, які розробляють комп’ютери, залишатимуться підзвітними всім іншим. +Зрештою, одне з найбільших питань для нашого покоління, як першого покоління, що впроваджує ШІ у суспільство, полягає в тому, як забезпечити, щоб комп’ютери залишалися підзвітними людям і як гарантувати, що ті, хто проєктує комп’ютери, залишаються відповідальними перед усіма. ## Оцінка впливу -Перед навчанням моделі машинного навчання важливо провести оцінку впливу, щоб зрозуміти мету системи AI; її передбачуване використання; де вона буде впроваджена; і хто буде взаємодіяти із системою. Це корисно для рецензентів або тестувальників, які оцінюють систему, щоб знати, які фактори слід враховувати під час визначення потенційних ризиків і очікуваних наслідків. +Перед навчанням моделі машинного навчання важливо провести оцінку впливу, щоб зрозуміти призначення системи ШІ; її очікуване використання; де вона буде застосовуватися; і хто буде взаємодіяти із системою. Це допомагає рецензентам або тестувальникам системи знати, які фактори слід враховувати при виявленні потенційних ризиків і очікуваних наслідків. + +Наступні сфери є предметом уваги під час проведення оцінки впливу: + +* **Негативний вплив на окремих осіб.** Необхідно враховувати будь-які обмеження чи вимоги, нерекомендоване використання або будь-які відомі обмеження, що можуть перешкоджати роботі системи, щоб забезпечити, що система не використовується таким чином, що може зашкодити людям. +* **Вимоги до даних.** Розуміння того, як і де система використовуватиме дані, дозволяє рецензентам вивчити всі вимоги до даних (наприклад, регулювання GDPR чи HIPAA). Крім того, слід оцінити, чи є джерело або обсяг даних достатніми для навчання. +* **Підсумок впливу.** Зібрати список потенційних шкод, які можуть виникнути при використанні системи. Протягом життєвого циклу машинного навчання перевірте, чи вирішуються або пом’якшуються виявлені проблеми. +* **Застосовні цілі** для кожного з шести основних принципів. Оцініть, чи досягаються цілі кожного з принципів і чи є прогалини. + + +## Налагодження з відповідальним ШІ + +Подібно до налагодження програмного додатку, налагодження системи ШІ є необхідним процесом виявлення та усунення проблем у системі. Існує багато факторів, що можуть вплинути на те, що модель не працює як очікувалося або відповідально. Більшість традиційних метрик продуктивності моделі є кількісними агрегатами, які недостатні для аналізу того, як модель порушує принципи відповідального ШІ. Крім того, модель машинного навчання є «чорною скринькою», що ускладнює розуміння причин її результатів або пояснення помилок. Пізніше в цьому курсі ми навчимося використовувати панель інструментів Responsible AI для допомоги у налагодженні систем ШІ. Ця панель надає цілісний інструмент для дата-сайентістів та розробників ШІ для виконання: + +* **Аналізу помилок.** Для виявлення розподілу помилок моделі, що можуть впливати на справедливість або надійність системи. +* **Огляду моделі.** Щоб виявити, де існують розбіжності у продуктивності моделі між різними когортами даних. +* **Аналізу даних.** Щоб зрозуміти розподіл даних і виявити потенційну упередженість, що може призвести до проблем зі справедливістю, інклюзивністю та надійністю. +* **Інтерпретованості моделі.** Щоб зрозуміти, що впливає чи визначає прогнози моделі. Це допомагає пояснити поведінку моделі, що важливо для прозорості та відповідальності. + + +## 🚀 Виклик + +Щоб запобігти запровадженню шкоди спочатку, ми повинні: + +- мати різноманітність фонів і поглядів серед людей, що працюють над системами +- інвестувати у набори даних, які відображають різноманіття нашого суспільства +- розробляти кращі методи протягом життєвого циклу машинного навчання для виявлення та виправлення відповідального ШІ, коли він виникає -Наступні аспекти є ключовими під час проведення оцінки впливу: +Подумайте про реальні сценарії, коли недовіра до моделі є очевидною в процесі створення та використання моделі. Що ще слід врахувати? -* **Негативний вплив на окремих осіб**. Усвідомлення будь-яких обмежень або вимог, невідповідного використання чи будь-яких відомих обмежень, які перешкоджають продуктивності системи, є важливим для забезпечення того, щоб система не використовувалася таким чином, який може завдати шкоди окремим особам. -* **Вимоги до даних**. Розуміння того, як і де система буде використовувати дані, дозволяє рецензентам досліджувати будь-які вимоги до даних, які потрібно враховувати (наприклад, регулювання даних GDPR або HIPPA). Крім того, перевірте, чи є джерело або кількість даних достатніми для навчання. -* **Резюме впливу**. Зберіть список потенційної шкоди, яка може виникнути внаслідок використання системи. Протягом життєвого циклу ML перевіряйте, чи вирішені або усунені виявлені проблеми. -* **Відповідні цілі** для кожного з шести основних принципів. Оцініть, чи досягнуті цілі кожного принципу та чи є якісь прогалини. +## [Тест після лекції](https://ff-quizzes.netlify.app/en/ml/) -## Відлагодження з відповідальним AI +## Підсумок і самостійне вивчення + -Подібно до відлагодження програмного забезпечення, відлагодження системи AI є необхідним процесом виявлення та вирішення проблем у системі. Існує багато факторів, які можуть вплинути на те, що модель не працює так, як очікувалося або відповідально. Більшість традиційних метрик продуктивності моделі є кількісними агрегатами продуктивності моделі, які недостатні для аналізу того, як модель порушує принципи відповідального AI. Крім того, модель машинного навчання є "чорною скринькою", що ускладнює розуміння того, що впливає на її результати, або пояснення, коли вона робить -Дивіться цей воркшоп, щоб глибше зануритися в теми: +У цьому уроці ви ознайомилися з основами концепцій справедливості та несправедливості в машинному навчанні. + +Перегляньте цей семінар, щоб поглибити знання з цих тем: -- У пошуках відповідального ШІ: Втілення принципів у практику від Бесміри Нуші, Мехрнуш Самекі та Аміта Шарми +- У прагненні до відповідального ШІ: впровадження принципів у практику від Бесміри Нуші, Мехрнуш Самекі та Аміта Шарми -[![Responsible AI Toolbox: Відкрита платформа для створення відповідального ШІ](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: Відкрита платформа для створення відповідального ШІ") +[![Responsible AI Toolbox: An open-source framework for building responsible AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") -> 🎥 Натисніть на зображення вище, щоб переглянути відео: RAI Toolbox: Відкрита платформа для створення відповідального ШІ від Бесміри Нуші, Мехрнуш Самекі та Аміта Шарми +> 🎥 Натисніть на зображення вище, щоб переглянути відео: RAI Toolbox: An open-source framework for building responsible AI від Бесміри Нуші, Мехрнуш Самекі та Аміта Шарми -Також прочитайте: +Також читайте: -- Центр ресурсів Microsoft з відповідального ШІ: [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/) +- Дослідницька група FATE від Microsoft: [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) +[Вивчіть 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/uk/2-Regression/1-Tools/README.md b/translations/uk/2-Regression/1-Tools/README.md index 86ead4a07..fad2a9bd4 100644 --- a/translations/uk/2-Regression/1-Tools/README.md +++ b/translations/uk/2-Regression/1-Tools/README.md @@ -1,120 +1,121 @@ # Початок роботи з Python та Scikit-learn для регресійних моделей -![Резюме регресій у вигляді скетчноту](../../../../sketchnotes/ml-regression.png) +![Підсумок регресій у скетчноті](../../../../translated_images/uk/ml-regression.4e4f70e3b3ed446e.webp) > Скетчнот від [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 Notebook. -- Використовувати Scikit-learn, включаючи встановлення. -- Досліджувати лінійну регресію через практичну вправу. +- Використовувати Scikit-learn, у тому числі встановлення. +- Вивчати лінійну регресію на практичному прикладі. ## Встановлення та налаштування [![ML для початківців - Налаштуйте свої інструменти для створення моделей машинного навчання](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](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 вимагають однієї версії програмного забезпечення, тоді як інші — іншої. Тому корисно працювати у [віртуальному середовищі](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](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) > - > [![Налаштування Python у Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Налаштування Python у Visual Studio Code") + > [![Налаштування Python з Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](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 +## Ваше середовище для розробки ML -Ви будете використовувати **ноутбуки** для розробки коду на Python і створення моделей машинного навчання. Цей тип файлу є поширеним інструментом для науковців, які працюють з даними, і його можна ідентифікувати за суфіксом або розширенням `.ipynb`. +Ви будете використовувати **ноутбуки** для розробки коду на Python і створення моделей машинного навчання. Цей тип файлів є популярним інструментом для науковців-дослідників даних, їх можна впізнати за розширенням `.ipynb`. -Ноутбуки — це інтерактивне середовище, яке дозволяє розробнику як писати код, так і додавати нотатки та документацію навколо коду, що дуже корисно для експериментальних або дослідницьких проектів. +Ноутбуки являють собою інтерактивне середовище, яке дозволяє розробнику і кодувати, і додавати нотатки, писати документацію навколо коду — це дуже корисно для експериментальних або дослідницьких проектів. -[![ML для початківців - Налаштуйте Jupyter Notebook для створення регресійних моделей](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML для початківців - Налаштуйте Jupyter Notebook для створення регресійних моделей") +[![ML для початківців - Налаштуйте Jupyter Notebook для початку побудови регресійних моделей](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML для початківців - Налаштуйте Jupyter Notebook для початку побудови регресійних моделей") -> 🎥 Натисніть на зображення вище, щоб переглянути коротке відео про виконання цієї вправи. +> 🎥 Натисніть зображення вище, щоб переглянути коротке відео з цього вправи. -### Вправа - робота з ноутбуком +### Вправа — робота з ноутбуком У цій папці ви знайдете файл _notebook.ipynb_. 1. Відкрийте _notebook.ipynb_ у Visual Studio Code. - Jupyter сервер запуститься з Python 3+. Ви знайдете області ноутбука, які можна `запустити`, тобто блоки коду. Ви можете запустити блок коду, вибравши значок, який виглядає як кнопка відтворення. + Запуститься сервер Jupyter з Python 3+. Ви побачите частини ноутбука, які можна `запустити`, це блоки коду. Ви можете запустити блок коду, вибравши значок, що нагадує кнопку «play». -2. Виберіть значок `md` і додайте трохи markdown, а також наступний текст **# Ласкаво просимо до вашого ноутбука**. +1. Виберіть значок `md` і додайте трохи markdown із наступним текстом **# Welcome to your notebook**. Далі додайте трохи коду на Python. -3. Введіть **print('hello notebook')** у блоці коду. -4. Виберіть стрілку, щоб запустити код. +1. Введіть **print('hello notebook')** у блоці коду. +1. Виберіть стрілку, щоб виконати код. - Ви повинні побачити надруковане повідомлення: + Ви маєте побачити надрукований рядок: ```output hello notebook ``` -![VS Code з відкритим ноутбуком](../../../../2-Regression/1-Tools/images/notebook.jpg) +![VS Code з відкритим ноутбуком](../../../../translated_images/uk/notebook.4a3ee31f396b8832.webp) -Ви можете чергувати свій код із коментарями, щоб самодокументувати ноутбук. +Ви можете переплітати свій код з коментарями для самодокументування ноутбука. -✅ Подумайте хвилину, наскільки відрізняється робоче середовище веб-розробника від середовища науковця, який працює з даними. +✅ Подумайте на хвилину, наскільки відрізняється робоче середовище веб-розробника від середовища дослідника даних. -## Початок роботи з Scikit-learn +## Запуск Scikit-learn -Тепер, коли Python налаштований у вашому локальному середовищі, і ви комфортно працюєте з Jupyter Notebook, давайте так само комфортно освоїмо Scikit-learn (вимовляється як `sci`, як у `science`). Scikit-learn надає [широкий API](https://scikit-learn.org/stable/modules/classes.html#api-ref), який допоможе вам виконувати завдання машинного навчання. +Тепер, коли Python налаштований у вашому локальному середовищі, і ви почуваєтеся комфортно з Jupyter Notebook, давайте так само освоїмо 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. -[![ML для початківців - Ваш перший проект лінійної регресії на Python](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "ML для початківців - Ваш перший проект лінійної регресії на Python") -> 🎥 Натисніть на зображення вище, щоб переглянути коротке відео про виконання цієї вправи. +[![ML для початківців — Ваш перший проект лінійної регресії на Python](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](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. Додайте імпорти, набравши наступний код: ```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` використовується для розбиття даних на навчальні та тестові набори. ### Набір даних про діабет -Вбудований [набір даних про діабет](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: Т-клітини (тип білих кров'яних клітин) +- bp: середній кров’яний тиск +- s1 tc: Т-клітини (тип білих кров’яних клітин) -✅ Цей набір даних включає концепцію "статі" як змінної, важливої для досліджень діабету. Багато медичних наборів даних включають цей тип бінарної класифікації. Подумайте трохи про те, як такі категоризації можуть виключати певні частини населення з лікування. +✅ Цей набір даних включає поняття 'стать' як важливу змінну-признак у дослідженнях діабету. Багато медичних наборів даних мають такого роду бінарну класифікацію. Подумайте, як такі категорії можуть виключати певні частини населення з лікувальних процедур. Тепер завантажте дані X та y. -> 🎓 Пам'ятайте, це навчання з учителем, і нам потрібна цільова змінна '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]) ``` - Те, що ви отримуєте у відповідь, — це кортеж. Ви призначаєте два перші значення кортежу відповідно до `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-й стовпець набору даних. Ви можете зробити це, використовуючи оператор `:`, щоб вибрати всі рядки, а потім вибрати 3-й стовпець за допомогою індексу (2). Ви також можете змінити форму даних на 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) на тестові та навчальні набори. 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()` — це функція, яку ви побачите в багатьох бібліотеках ML, таких як 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,22 +203,24 @@ Scikit-learn робить створення моделей та їх оцінк plt.show() ``` - ![діаграма розсіювання, що показує точки даних про діабет](../../../../2-Regression/1-Tools/images/scatterplot.png) -✅ Подумайте трохи над тим, що тут відбувається. Пряма лінія проходить через багато маленьких точок даних, але що саме вона робить? Чи можете ви побачити, як ця лінія може допомогти передбачити, де нова, невидима точка даних повинна розташуватися відносно осі y графіка? Спробуйте сформулювати практичне застосування цієї моделі. + ![розсіяний графік, що показує точки даних про діабет](../../../../translated_images/uk/scatterplot.ad8b356bcbb33be6.webp) + + + ✅ Трохи подумайте про те, що тут відбувається. Пряма лінія проходить через багато маленьких точок даних, але що саме вона робить? Чи бачите ви, як можна використовувати цю лінію, щоб передбачити, де має розташовуватися нова, невідома точка даних відносно осі 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), щоб поглибити свої знання. ## Завдання @@ -225,5 +228,7 @@ Scikit-learn робить створення моделей та їх оцінк --- -**Відмова від відповідальності**: -Цей документ було перекладено за допомогою сервісу автоматичного перекладу [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/uk/2-Regression/2-Data/README.md b/translations/uk/2-Regression/2-Data/README.md index 7893e3890..dada21b28 100644 --- a/translations/uk/2-Regression/2-Data/README.md +++ b/translations/uk/2-Regression/2-Data/README.md @@ -1,62 +1,62 @@ # Побудова регресійної моделі за допомогою Scikit-learn: підготовка та візуалізація даних -![Інфографіка візуалізації даних](../../../../2-Regression/2-Data/images/data-visualization.png) +![Інфографіка візуалізації даних](../../../../translated_images/uk/data-visualization.54e56dded7c1a804.webp) Інфографіка від [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 для візуалізації даних. +- Як використовувати 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', де дані є сумішшю 'сумок', 'ящиків' та інших значень. Дані, певно, трохи заплутані. -[![ML для початківців - Як аналізувати та очищати набір даних](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML для початківців - Як аналізувати та очищати набір даних") +[![ML для початківців - Як аналізувати і чистити набір даних](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML для початківців - Як аналізувати і чистити набір даних") -> 🎥 Натисніть на зображення вище, щоб переглянути коротке відео про підготовку даних для цього уроку. +> 🎥 Натисніть на зображення вище для короткого відео про підготовку даних для цього уроку. -Насправді, рідко трапляється, щоб набір даних був повністю готовий для створення моделі ML "з коробки". У цьому уроці ви дізнаєтесь, як підготувати сирий набір даних за допомогою стандартних бібліотек Python. Ви також ознайомитеся з різними техніками візуалізації даних. +Насправді не дуже часто вам дають набір даних, який повністю готовий для побудови моделі 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 рядків даних про ринок гарбузів, згрупованих за містами. Це необроблені дані, отримані з [Standard Reports Specialty Crops Terminal Markets](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. +Відкрийте файл _notebook.ipynb_ у Visual Studio Code і імпортуйте електронну таблицю у новий dataframe 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`, щоб заповнити новий стовпець Price, а стовпець Date конвертуйте, щоб показувати лише місяць. На щастя, як показала перевірка, відсутніх даних за датами чи цінами немає. -1. Щоб обчислити середнє значення, додайте наступний код: +1. Для обчислення середнього додайте такий код: ```python price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2 @@ -96,23 +96,23 @@ ``` - ✅ Ви можете вивести будь-які дані для перевірки, використовуючи `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 бушеля', деякі — '1/2 бушеля', деякі — за штук, деякі — за фунт, а деякі у великих коробках різної ширини. -> Гарбузи, здається, дуже важко зважувати послідовно +> Гарбуза здається дуже складно зважувати послідовно -Заглиблюючись в оригінальні дані, цікаво, що все, що має `Unit of Sale`, рівне 'EACH' або 'PER BIN', також має тип `Package` у дюймах, бін або 'each'. Гарбузи, здається, дуже важко зважувати послідовно, тому давайте відфільтруємо їх, вибравши лише гарбузи зі словом 'bushel' у стовпці `Package`. +Заглиблюючись в оригінальні дані, помітно, що все, що має `Unit of Sale`, рівне 'EACH' або 'PER BIN', також має тип `Package` "на дюйм", "на ящик" або 'кожен'. Гарбузи здаються дуже складними для послідовного зважування, тож давайте відфільтруємо їх, вибравши лише ті, у яких в стовпці `Package` є рядок 'bushel'. 1. Додайте фільтр на початку файлу, під початковим імпортом .csv: @@ -120,13 +120,13 @@ 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,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), вага бушеля залежить від типу продукту, оскільки ця міра об’єму. «Наприклад, бушель томатів має важити 56 фунтів... Листя та зелень займають більше об’єму при меншій вазі, тому бушель шпинату важить лише 20 фунтів.» Це досить складно! Тож давайте не перейматимемось конвертацією бушель-фунт, а цінуватимемо за бушель. Вивчення бушелів гарбузів показує, наскільки важливо розуміти природу ваших даних! -Тепер ви можете аналізувати ціни за одиницю на основі їхнього вимірювання в бушелях. Якщо ви ще раз виведете дані, ви побачите, як вони стандартизовані. +Тепер ви можете аналізувати ціну за одиницю на основі їхнього значення у бушелях. Якщо вивести дані ще раз, побачите, як вони стандартизовані. -✅ Чи помітили ви, що гарбузи, які продаються за півбушеля, дуже дорогі? Чи можете ви зрозуміти, чому? Підказка: маленькі гарбузи набагато дорожчі за великі, ймовірно, тому що їх набагато більше в одному бушелі, враховуючи невикористаний простір, який займає один великий порожнистий гарбуз для пирога. +✅ Помітили, що гарбузи, що продаються по півбушеля, дуже дорогі? Чи можете зрозуміти чому? Підказка: маленькі гарбузи значно дорожчі за великі, ймовірно тому, що їх набагато більше на бушель, через невикористаний простір, зайнятий одним великим порожнистим гарбузом для пирога. ## Стратегії візуалізації -Частина роботи дата-сайєнтиста полягає в демонстрації якості та характеру даних, з якими він працює. Для цього часто створюють цікаві візуалізації, такі як графіки, діаграми та схеми, які показують різні аспекти даних. Таким чином, вони можуть візуально показати взаємозв'язки та прогалини, які інакше важко виявити. +Частина ролі дата-сайентіста полягає у демонстрації якості та природи даних, з якими вони працюють. Для цього вони часто створюють цікаві візуалізації — діаграми, графіки, графіки, що демонструють різні аспекти даних. Таким чином вони можуть візуально показати взаємозв’язки та прогалини, які іншим чином важко виявити. [![ML для початківців - Як візуалізувати дані за допомогою Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML для початківців - Як візуалізувати дані за допомогою Matplotlib") -> 🎥 Натисніть на зображення вище, щоб переглянути коротке відео про візуалізацію даних для цього уроку. +> 🎥 Натисніть на зображення вище для короткого відео про візуалізацію даних для цього уроку. -Візуалізації також можуть допомогти визначити техніку машинного навчання, яка найбільше підходить для даних. Наприклад, діаграма розсіювання, яка здається лінійною, вказує на те, що дані є хорошим кандидатом для вправи з лінійної регресії. +Візуалізації також допомагають визначити найвдалішу техніку машинного навчання для даних. Наприклад, діаграма розсіювання, яка здається лінійною, вказує, що дані є хорошим кандидатом для лінійної регресії. -Одна з бібліотек для візуалізації даних, яка добре працює в 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 +## Вправа – експериментуйте з Matplotlib -Спробуйте створити базові графіки для відображення нового датафрейму, який ви щойно створили. Що покаже базовий лінійний графік? +Спробуйте створити прості графіки, щоб відобразити новий dataframe, який ви щойно створили. Що покаже базовий лінійний графік? 1. Імпортуйте Matplotlib на початку файлу, під імпортом Pandas: @@ -164,8 +164,8 @@ import matplotlib.pyplot as plt ``` -1. Перезапустіть весь ноутбук, щоб оновити. -1. У нижній частині ноутбука додайте комірку для побудови графіка у вигляді коробки: +1. Запустіть знову весь notebook, щоб оновити. +1. Додайте у кінці notebook клітинку для побудови графіка типу box: ```python price = new_pumpkins.Price @@ -174,38 +174,113 @@ plt.show() ``` - ![Діаграма розсіювання, що показує зв'язок між ціною та місяцем](../../../../2-Regression/2-Data/images/scatterplot.png) + ![Діаграма розсіювання, що показує зв’язок ціни з місяцем](../../../../translated_images/uk/scatterplot.b6868f44cbd2051c.webp) Чи є цей графік корисним? Чи щось у ньому вас здивувало? - Він не особливо корисний, оскільки лише відображає ваші дані як розкид точок у певному місяці. + Він не надто корисний, бо лише відображає ваші дані як розкидані точки у певному місяці. -### Зробіть це корисним +### Зробіть його корисним -Щоб графіки відображали корисні дані, зазвичай потрібно якось згрупувати дані. Спробуймо створити графік, де вісь y показує місяці, а дані демонструють розподіл. +Щоб графіки показували корисні дані, зазвичай потрібно згрупувати їх якимось чином. Спробуємо створити графік, де вісь y показує місяці, а дані демонструють розподіл. -1. Додайте комірку для створення згрупованої стовпчастої діаграми: +1. Додайте клітинку для створення групованої стовпчикової діаграми: ```python new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') plt.ylabel("Pumpkin Price") ``` - ![Стовпчаста діаграма, що показує зв'язок між ціною та місяцем](../../../../2-Regression/2-Data/images/barchart.png) + ![Стовпчикова діаграма, що показує зв’язок ціни з місяцем](../../../../translated_images/uk/barchart.a833ea9194346d76.webp) + + Це більш корисна візуалізація даних! Вона здається свідченням того, що найвища ціна на гарбузи припадає на вересень та жовтень. Чи відповідає це вашим очікуванням? Чому так або ні? + +## Вправа – експериментуйте з Seaborn + +Matplotlib є потужним, але для створення відполірованих графіків може знадобитися багато коду. [Seaborn](https://seaborn.pydata.org/) — це бібліотека, побудована _на основі_ Matplotlib, розроблена для статистичної візуалізації даних. Вона працює напряму з dataframe 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) (реляційний графік), який безпосередньо працює зі стовпцями вашого dataframe: + + ```python + sns.relplot(x="Price", y="Month", data=new_pumpkins) + ``` + + ![Діаграма розсіювання Seaborn, що показує зв’язок ціни з місяцем](../../../../translated_images/uk/relplot.a03837d8f0329cec.webp) + + Зверніть увагу, що ви передаєте _імена стовпців_ та dataframe, а Seaborn сам опрацьовує підписи осей. + +2. Ви можете переключитись на лінійний графік, передавши `kind="line"`. Seaborn також малює затінений діапазон, що показує довірчий інтервал навколо лінії: + + ```python + sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins) + ``` + + ![Лінійний графік Seaborn, що показує зв’язок ціни з місяцем](../../../../translated_images/uk/lineplot.f9034ba47b1e30ee.webp) + + Ці дані доволі шумні, тому лінійний графік тут не найчіткіший вибір — але він ілюструє, наскільки легко можна змінювати тип графіка в 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") + ``` + + ![Стовпчикова діаграма Seaborn, що показує розподіл цін за місяцями](../../../../translated_images/uk/catplot.e73fc35fdf96242b.webp) + + Це підтверджує те, що ви бачили з Matplotlib — ціни досягають піку приблизно у вересні та жовтні — але Seaborn також візуалізує, наскільки _варіюється_ ціна в кожному місяці. + +### Теплові карти для показу кореляцій + +Точкові діаграми порівнюють дві змінні одночасно. Коли у вас є декілька числових стовпців, [теплова карта](https://en.wikipedia.org/wiki/Heat_map) дозволяє побачити силу взаємозв’язку між _кожною_ парою стовпців одночасно. Це поширений спосіб визначити, які ознаки найкорельованіші перед вибором того, що вводити в модель (такий же вид діаграми пізніше використовується для відображення матриць плутанини в класифікації). + +1. Побудуйте матрицю кореляцій за допомогою Pandas, а потім намалюйте її за допомогою Seaborn's [`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") + ``` + + ![Теплова карта Seaborn, що показує кореляції між числовими стовпцями](../../../../translated_images/uk/heatmap.bd98dce43b404c57.webp) + + Значення, близькі до `1` (або `-1`), означають, що стовпці сильно _лінійно_ корельовані. Зверніть увагу, як `Low Price` та `High Price` майже ідеально корельовані. `Month`, натомість, показує лише слабку лінійну кореляцію з ціною — хоча стовпчикова діаграма вище виявила чіткий сезонний пік у вересні та жовтні. Це важливий урок: коефіцієнт кореляції вимірює лише _лінійні_ залежності, тож він може пропускати сезонні або інші нелінійні закономірності. ✅ Чому корисно дивитись і на теплову карту, *і* на діаграми на кшталт стовпчикової перед тим, як вирішувати, які стовпці використовувати? + +### Matplotlib чи Seaborn? + +Обидві бібліотеки варто знати: + +- **Matplotlib** надає тонкий контроль над кожним елементом графіка і є основою, на якій побудовано майже всі інші бібліотеки для побудови графіків у Python. +- **Seaborn** надає функції вищого рівня і привабливі налаштування за замовчуванням для статистичних графіків, працює безпосередньо з датафреймами і часто швидший для дослідницького аналізу даних. - Це більш корисна візуалізація даних! Здається, вона вказує на те, що найвища ціна на гарбузи припадає на вересень і жовтень. Чи відповідає це вашим очікуванням? Чому або чому ні? +Поширений робочий процес — спочатку звертатись до Seaborn, щоб швидко дослідити дані, а потім переходити до Matplotlib для налаштування деталей. --- ## 🚀Виклик -Дослідіть різні типи візуалізацій, які пропонує Matplotlib. Які типи найбільше підходять для задач регресії? +Дослідіть різні типи візуалізації, які пропонують Matplotlib і Seaborn. Які типи найбільше підходять для задач регресії? -## [Тест після лекції](https://ff-quizzes.netlify.app/en/ml/) +## [Післялекційний тест](https://ff-quizzes.netlify.app/en/ml/) -## Огляд і самостійне навчання +## Огляд і самоосвіта -Ознайомтеся з багатьма способами візуалізації даних. Складіть список різних бібліотек, доступних для цього, і зазначте, які з них найкраще підходять для певних типів завдань, наприклад, для 2D-візуалізацій проти 3D-візуалізацій. Що ви виявите? +Ознайомтеся з численними способами візуалізації даних. Складіть перелік різних бібліотек і відмітьте, які найкраще підходять для певних типів завдань, наприклад 2D візуалізації проти 3D-візуалізації. Що ви виявите? ## Завдання @@ -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/uk/2-Regression/2-Data/solution/notebook.ipynb b/translations/uk/2-Regression/2-Data/solution/notebook.ipynb index ea47ac915..13b06a212 100644 --- a/translations/uk/2-Regression/2-Data/solution/notebook.ipynb +++ b/translations/uk/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 і працює безпосередньо з dataframe, що дозволяє швидко створювати привабливі статистичні графіки з мінімумом коду.\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Цей документ був перекладений за допомогою сервісу автоматичного перекладу [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:46+00:00", - "source_file": "2-Regression/2-Data/solution/notebook.ipynb", - "language_code": "uk" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/uk/8-Reinforcement/1-QLearning/README.md b/translations/uk/8-Reinforcement/1-QLearning/README.md index 9ceb79bf4..e05895ded 100644 --- a/translations/uk/8-Reinforcement/1-QLearning/README.md +++ b/translations/uk/8-Reinforcement/1-QLearning/README.md @@ -1,47 +1,47 @@ -# Вступ до навчання з підкріпленням та Q-Learning +# Вступ до навчання з підкріпленням і Q-навчання -![Резюме навчання з підкріпленням у машинному навчанні у вигляді скетчноту](../../../../sketchnotes/ml-reinforcement.png) -> Скетчнот від [Tomomi Imura](https://www.twitter.com/girlie_mac) +![Підсумок підкріплення в машинному навчанні у вигляді скетчноуту](../../../../translated_images/uk/ml-reinforcement.94024374d63348db.webp) +> Скетчноут від [Tomomi Imura](https://www.twitter.com/girlie_mac) -Навчання з підкріпленням включає три важливі концепції: агент, деякі стани та набір дій для кожного стану. Виконуючи дію в заданому стані, агент отримує винагороду. Уявіть комп'ютерну гру Super Mario. Ви — Маріо, знаходитеся на рівні гри, стоїте поруч із краєм обриву. Над вами монета. Ви, як Маріо, на рівні гри, у певній позиції — це ваш стан. Переміщення на один крок вправо (дія) призведе до падіння з обриву, і це дасть вам низький числовий бал. Однак натискання кнопки стрибка дозволить вам отримати очко і залишитися живим. Це позитивний результат, і він повинен нагородити вас позитивним числовим балом. +Навчання з підкріпленням включає три важливі поняття: агент, деякі стани та набір дій для кожного стану. Виконуючи дію в певному стані, агент отримує винагороду. Знову уявіть комп’ютерну гру Super Mario. Ви — Маріо, ви знаходитеся на рівні гри, стоїте біля краю обриву. Над вами висить монета. Ви, як Маріо, на рівні гри, в конкретній позиції ... це і є ваш стан. Рух на один крок вправо (дія) призведе до падіння з обриву, що дасть вам низький числовий бал. Однак натискання кнопки стрибка дозволить вам набрати очко і залишитися в живих. Це позитивний результат, і він має дати позитивний числовий бал. -Використовуючи навчання з підкріпленням і симулятор (гру), ви можете навчитися грати в гру, щоб максимізувати винагороду, тобто залишатися живим і набирати якомога більше очок. +Використовуючи навчання з підкріпленням і симулятор (гру), ви можете навчитися грати так, щоб максимізувати винагороду — виживання і набір якомога більшої кількості очок. [![Вступ до навчання з підкріпленням](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) -> 🎥 Натисніть на зображення вище, щоб почути Дмитра, який розповідає про навчання з підкріпленням +> 🎥 Натисніть на зображення вище, щоб послухати Дмитра про навчання з підкріпленням -## [Квіз перед лекцією](https://ff-quizzes.netlify.app/en/ml/) +## [Попередній тест перед лекцією](https://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://uk.wikipedia.org/wiki/%D0%9F%D0%B5%D1%82%D1%80%D0%B8%D0%BA_%D1%82%D0%B0_%D0%B2%D0%BE%D0%B2%D0%BA)**, натхненний музичною казкою російського композитора [Сергія Прокоф’єва](https://uk.wikipedia.org/wiki/%D0%A1%D0%B5%D1%80%D0%B3%D1%96%D0%B9_%D0%9F%D1%80%D0%BE%D0%BA%D0%BE%D1%84%E2%80%99%D1%94%D0%B2). Ми використовуватимемо **Навчання з підкріпленням**, щоб дозволити Петрику досліджувати своє оточення, збирати смачні яблука й уникати зустрічі з вовком. -**Навчання з підкріпленням** (RL) — це техніка навчання, яка дозволяє нам навчитися оптимальній поведінці **агента** в певному **середовищі**, проводячи багато експериментів. Агент у цьому середовищі повинен мати **мету**, визначену **функцією винагороди**. +**Навчання з підкріпленням** (RL) — це метод навчання, який дозволяє нам навчатися оптимальній поведінці **агента** в певному **оточенні** шляхом проведення численних експериментів. Агент у цьому оточенні повинен мати якусь **мету**, визначену за допомогою **функції винагороди**. -## Середовище +## Оточення -Для простоти уявімо світ Петрика як квадратну дошку розміром `width` x `height`, як на цьому зображенні: +Для спрощення розглянемо світ Петрика як квадратну дошку розміром `width` x `height`, як от так: -![Середовище Петрика](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![Оточення Петрика](../../../../translated_images/uk/environment.40ba3cb66256c93f.webp) -Кожна клітинка на цій дошці може бути: +Кожна клітинка цієї дошки може бути: -* **землею**, по якій Петрик та інші створіння можуть ходити. -* **водою**, по якій, очевидно, ходити не можна. -* **деревом** або **травою**, місцем, де можна відпочити. -* **яблуком**, яке Петрик буде радий знайти, щоб нагодувати себе. -* **вовком**, який небезпечний і якого слід уникати. +* **ґрунтом**, по якому можуть ходити Петрик та інші істоти. +* **водою**, по якій, звичайно, ходити не можна. +* **деревом** або **травою**, місцем для відпочинку. +* **яблуком**, яке символізує щось, що Петрик із задоволенням знайшов би, щоб поїсти. +* **вовком**, який є небезпечним і якого слід уникати. -Існує окремий модуль 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 кроків. - Ви також можете побачити, як виглядає рух Петрика під час випадкової прогулянки: + Також ви можете побачити, як виглядає рух Петрика під час випадкового кроку: - ![Випадкова прогулянка Петрика](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) + ![Випадковий крок Петрика](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) ## Функція винагороди -Щоб зробити нашу політику більш розумною, нам потрібно зрозуміти, які кроки є "кращими" за інші. Для цього нам потрібно визначити нашу мету. +Щоб зробити нашу політику розумнішою, потрібно зрозуміти, які ходи "кращі" за інші. Для цього слід визначити нашу мету. -Мета може бути визначена у вигляді **функції винагороди**, яка повертає певне значення оцінки для кожного стану. Чим більше число, тим краща функція винагороди. (блок коду 5) +Мету можна визначити за допомогою **функції винагороди**, яка повертатиме значення балу для кожного стану. Чим більше число, тим краща функція винагороди. (код блок 5) ```python move_reward = -0.1 @@ -154,41 +154,115 @@ def reward(m,pos=None): return move_reward ``` -Цікаво, що у більшості випадків *ми отримуємо значну винагороду лише наприкінці гри*. Це означає, що наш алгоритм повинен якось запам’ятовувати "хороші" кроки, які призводять до позитивної винагороди в кінці, і збільшувати їх важливість. Аналогічно, всі кроки, які призводять до поганих результатів, слід знеохочувати. +Цікаво, що у більшості випадків *значуща винагорода з’являється лише в кінці гри*. Це означає, що наш алгоритм повинен якось запам'ятовувати "хороші" кроки, які призводять до позитивної винагороди в кінці, і збільшувати їх вагу. Аналогічно, усі ходи, що ведуть до поганих результатів, слід уникати. -## Q-Learning +## Q-навчання -Алгоритм, який ми тут обговоримо, називається **Q-Learning**. У цьому алгоритмі політика визначається функцією (або структурою даних), яка називається **Q-таблиця**. Вона записує "корисність" кожної дії в даному стані. +Алгоритм, який ми розглянемо, називається **Q-навчанням**. У цьому алгоритмі політика визначається функцією (або структурую даних), яка називається **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)`. -![Середовище Петрика](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![Оточення Петрика](../../../../translated_images/uk/env_init.04e8f26d2d60089e.webp) -У центрі кожної клітинки є "стрілка", яка вказує на бажаний напрямок руху. Оскільки всі напрямки рівні, відображається точка. +У центрі кожної клітинки є "стрілка", яка вказує бажаний напрямок руху. Оскільки всі напрямки рівні, відображається крапка. -Тепер нам потрібно запустити симуляцію, дослідити наше середовище та навчитися кращому розподілу значень Q-таблиці, що дозволить нам набагато швидше знайти шлях до яблука. +Тепер нам потрібно запустити симуляцію, дослідити наше оточення і навчитися кращому розподілу значень Q-таблиці, що дозволить швидше знаходити шлях до яблука. -## Суть Q-Learning: рівняння Беллмана +## Суть Q-навчання: рівняння Беллмана -Як тільки ми починаємо рухатися, кожна дія матиме відповідну винагороду, тобто теоретично ми можемо вибрати наступну дію на основі найвищої миттєвої винагороди. Однак у більшості станів цей крок не досягне нашої мети — досягти яблука, і тому ми не можемо одразу вирішити, який напрямок кращий. +Щойно ми почнемо рух, кожна дія матиме відповідну винагороду, тобто ми теоретично можемо обирати наступну дію за максимальною негайною винагородою. Проте в більшості станів хід не приведе до нашої мети — досягнення яблука, і ми не можемо одразу визначити, який напрямок кращий. -> Пам’ятайте, що важливий не миттєвий результат, а кінцевий результат, який ми отримаємо наприкінці симуляції. +> Пам’ятайте, важливий не негайний результат, а фінальний, який ми отримаємо в кінці симуляції. -Щоб врахувати цю відкладену винагороду, нам потрібно використовувати принципи **[динамічного програмування](https://en.wikipedia.org/wiki/Dynamic_programming)**, які дозволяють мислити про нашу проблему рекурсивно. +Щоб врахувати цю відкладену винагороду, потрібно застосувати принципи **[динамічного програмування](https://uk.wikipedia.org/wiki/%D0%94%D0%B8%D0%BD%D0%B0%D0%BC%D1%96%D1%87%D0%BD%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F)**, які дозволяють рекурсивно мислити над задачею. -Припустимо, що зараз ми знаходимося в стані *s*, і хочемо перейти до наступного стану *s'*. Роблячи це, ми отримаємо миттєву винагороду *r(s,a)*, визначену функцією винагороди, плюс певну майбутню винагороду. Якщо припустити, що наша Q-таблиця правильно відображає "привабливість" кожної дії, то в стані *s'* ми виберемо дію *a*, яка відповідає максимальному значенню *Q(s',a')*. Таким чином, найкраща можлива майбутня винагорода, яку ми могли б отримати в стані *s*, буде визначена як `max` *Q(s',a')* (максимум тут обчислюється для всіх можливих дій *a'* у стані *s'*). +Припустимо, ми зараз у стані *s* і хочемо перейти до наступного стану *s'*. Виконуючи це, ми отримаємо негайну винагороду *r(s,a)*, задану функцією винагороди, плюс деяку майбутню винагороду. Якщо припустити, що наша Q-таблиця правильно відображає "привабливість" кожної дії, то в стані *s'* ми оберемо дію *a*, яка відповідає максимальному значенню *Q(s',a')*. Тож найкраща можлива майбутня винагорода в стані *s* визначається як `max`a'*Q(s',a')* (максимум обчислюється серед усіх можливих дій *a'* у стані *s'*). -Це дає **формулу Беллмана** для обчислення значення Q-таблиці в стані *s*, враховуючи дію *a*: +Це дає **формулу Беллмана** для обчислення значення 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. Оновити загальну винагороду та зменшити α. + +## Використання 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-Table містить "привабливість" кожної дії в кожному стані, її досить легко використовувати для визначення ефективної навігації у нашому світі. У найпростішому випадку ми можемо вибрати дію, що відповідає найвищому значенню в Q-Table: (блок коду 9) +Оскільки Q-таблиця містить "привабливість" кожної дії для кожного стану, за її допомогою досить легко визначити ефективну навігацію нашим світом. У найпростішому випадку ми можемо вибрати дію з максимальним значенням Q-таблиці: (код блок 9) ```python def qpolicy_strict(m): @@ -200,17 +274,18 @@ def qpolicy_strict(m): walk(m,qpolicy_strict) ``` -> Якщо ви спробуєте код вище кілька разів, то можете помітити, що іноді він "зависає", і вам потрібно натиснути кнопку STOP у ноутбуці, щоб перервати виконання. Це відбувається через те, що можуть виникати ситуації, коли два стани "вказують" один на одного з точки зору оптимального Q-Value, у результаті чого агент безкінечно переміщується між цими станами. + +> Якщо ви кілька разів спробуєте код вище, ви можете помітити, що іноді він "зависає", і вам потрібно натиснути кнопку СТОП у записнику, щоб перервати його. Це відбувається тому, що можуть бути ситуації, коли два стани "вказують" один на одного з точки зору оптимального 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): @@ -226,24 +301,28 @@ print_statistics(qpolicy) ## Дослідження процесу навчання -Як ми вже згадували, процес навчання — це баланс між дослідженням і використанням отриманих знань про структуру простору задачі. Ми побачили, що результати навчання (здатність допомогти агенту знайти короткий шлях до мети) покращилися, але також цікаво спостерігати, як середня довжина шляху змінюється під час процесу навчання: +Як ми вже згадували, процес навчання — це баланс між дослідженням і використанням набутого знання про структуру простору задачі. Ми бачили, що результати навчання (здатність допомогти агенту знайти короткий шлях до мети) покращились, але також цікаво спостерігати, як поведінка середньої довжини шляху змінюється під час навчання: + + -Висновки з навчання можна підсумувати так: +Навчання можна підсумувати так: -- **Середня довжина шляху збільшується**. На початку середня довжина шляху зростає. Це, ймовірно, пов'язано з тим, що коли ми нічого не знаємо про середовище, ми, швидше за все, потрапляємо в погані стани, наприклад, у воду або до вовка. Коли ми дізнаємося більше і починаємо використовувати ці знання, ми можемо довше досліджувати середовище, але все ще не дуже добре знаємо, де знаходяться яблука. +- **Середня довжина шляху зростає**. Ми бачимо, що спочатку середня довжина шляху зростає. Це, ймовірно, пов’язано з тим, що коли ми нічого не знаємо про середовище, ми, найімовірніше, потрапляємо у погані стани, воду або вовка. Коли ми вчимося більше і починаємо використовувати це знання, ми можемо довше досліджувати середовище, але все ще не дуже добре знаємо, де знаходяться яблука. -- **Довжина шляху зменшується, коли ми дізнаємося більше**. Як тільки ми дізнаємося достатньо, агенту стає легше досягати мети, і довжина шляху починає зменшуватися. Однак ми все ще відкриті до досліджень, тому часто відхиляємося від найкращого шляху і досліджуємо нові варіанти, що робить шлях довшим за оптимальний. +- **Довжина шляху зменшується, коли ми вчимося більше**. Як тільки ми вчимося достатньо, агенту стає легше досягти мети, і довжина шляху починає зменшуватись. Однак ми все ще відкриті для досліджень, тому часто відходимо від найкращого шляху й досліджуємо нові варіанти, що робить шлях довшим за оптимальний. -- **Довжина різко збільшується**. На графіку також видно, що в певний момент довжина різко збільшується. Це вказує на стохастичну природу процесу і на те, що ми можемо в якийсь момент "зіпсувати" коефіцієнти 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) --- -**Відмова від відповідальності**: -Цей документ було перекладено за допомогою сервісу автоматичного перекладу [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/uk/9-Real-World/2-Debugging-ML-Models/README.md b/translations/uk/9-Real-World/2-Debugging-ML-Models/README.md index 6f1e9a53d..99a2f2acc 100644 --- a/translations/uk/9-Real-World/2-Debugging-ML-Models/README.md +++ b/translations/uk/9-Real-World/2-Debugging-ML-Models/README.md @@ -1,155 +1,179 @@ -# Постскриптум: Налагодження моделей машинного навчання за допомогою компонентів панелі відповідального AI - -## [Тест перед лекцією](https://ff-quizzes.netlify.app/en/ml/) +# Постскриптум: відладка моделей машинного навчання за допомогою компонентів інформаційної панелі Responsible AI + +## [Попередній тест перед лекцією](https://ff-quizzes.netlify.app/en/ml/) + ## Вступ -Машинне навчання впливає на наше повсякденне життя. Штучний інтелект проникає в найважливіші системи, які впливають на нас як особистостей і на суспільство загалом — від охорони здоров’я, фінансів, освіти до працевлаштування. Наприклад, системи та моделі залучені до щоденних процесів прийняття рішень, таких як діагностика в медицині або виявлення шахрайства. У результаті, розвиток штучного інтелекту та його швидке впровадження супроводжуються зростаючими суспільними очікуваннями та регулюванням. Ми постійно бачимо випадки, коли системи штучного інтелекту не відповідають очікуванням, створюють нові виклики, а уряди починають регулювати AI-рішення. Тому важливо аналізувати ці моделі, щоб забезпечити справедливі, надійні, інклюзивні, прозорі та відповідальні результати для всіх. +Машинне навчання впливає на наше повсякденне життя. ШІ знаходить застосування в одних із найважливіших систем, що впливають на нас як на окремих людей, так і на суспільство в цілому, від охорони здоров’я, фінансів, освіти до працевлаштування. Наприклад, системи та моделі залучені до щоденних завдань прийняття рішень, таких як діагностика здоров’я або виявлення шахрайства. Відповідно, досягнення в галузі ШІ разом із прискореним впровадженням супроводжуються зміною суспільних очікувань і зростаючим регулюванням. Ми постійно бачимо сфери, де системи ШІ не відповідають очікуванням; вони викривають нові виклики; і уряди починають регулювати рішення ШІ. Тож важливо, щоб ці моделі аналізувалися задля забезпечення справедливих, надійних, інклюзивних, прозорих і відповідальних результатів для всіх. -У цьому курсі ми розглянемо практичні інструменти, які можна використовувати для оцінки наявності проблем відповідального AI у моделі. Традиційні методи налагодження машинного навчання зазвичай базуються на кількісних розрахунках, таких як загальна точність або середня втрата помилки. Уявіть, що може статися, якщо дані, які ви використовуєте для створення моделей, не містять певних демографічних груп, таких як раса, стать, політичні погляди, релігія, або непропорційно представляють ці групи. Або якщо результати моделі інтерпретуються так, що вони надають перевагу одній демографічній групі над іншою. Це може призвести до надмірного або недостатнього представлення чутливих груп ознак, що викликає проблеми справедливості, інклюзивності або надійності моделі. Ще один фактор — моделі машинного навчання часто вважаються "чорними ящиками", що ускладнює розуміння та пояснення того, що впливає на їхні прогнози. Усі ці виклики постають перед дата-сайєнтистами та розробниками AI, коли вони не мають достатніх інструментів для налагодження та оцінки справедливості чи надійності моделі. +У цьому навчальному курсі ми розглянемо практичні інструменти, які можна використовувати для оцінки моделі на предмет проблем відповідального ШІ. Традиційні методи відладки моделей машинного навчання зазвичай базуються на кількісних обчисленнях, таких як агрегована точність або середня втрата помилки. Уявіть, що може статися, коли дані, які ви використовуєте для побудови цих моделей, не враховують певні демографічні групи, такі як раса, стать, політичні погляди, релігія, або ж істотно представляють їх непропорційно. А що, якщо інтерпретація результатів моделі віддає перевагу одній демографічній групі? Це може призвести до надто високого або недостатнього представлення цих чутливих груп ознак, викликаючи проблеми зі справедливістю, інклюзивністю або надійністю моделі. Іншим фактором є те, що моделі машинного навчання вважаються «чорними скриньками», що ускладнює розуміння і пояснення причин прогнозу моделі. Усі ці виклики виникають у дата-сайєнтистів та розробників ШІ тоді, коли у них немає достатніх інструментів для відладки та оцінки справедливості або надійності моделі. -У цьому уроці ви дізнаєтеся, як налагоджувати свої моделі за допомогою: +У цьому уроці ви дізнаєтеся про відладку моделей за допомогою: -- **Аналізу помилок**: визначення областей у розподілі даних, де модель має високі показники помилок. -- **Огляд моделі**: порівняльний аналіз різних когорт даних для виявлення розбіжностей у метриках продуктивності моделі. -- **Аналізу даних**: дослідження областей, де може бути надмірне або недостатнє представлення даних, що може вплинути на упередженість моделі. -- **Важливості ознак**: розуміння, які ознаки впливають на прогнози моделі на глобальному або локальному рівні. +- **Аналізу помилок**: визначення ділянок у вашому розподілі даних, де модель має високий рівень помилок. +- **Огляду моделі**: виконання порівняльного аналізу між різними когортами даних для виявлення розбіжностей у показниках продуктивності моделі. +- **Аналізу даних**: дослідження можливого над- або недопредставлення у ваших даних, що може спотворювати модель на користь однієї демографічної групи порівняно з іншою. +- **Важливості ознак**: розуміння, які ознаки впливають на прогнозування моделі на глобальному або локальному рівні. -## Передумови +## Попередні знання -Як передумову, перегляньте [Інструменти відповідального AI для розробників](https://www.microsoft.com/ai/ai-lab-responsible-ai-dashboard) +Перед початком рекомендовано ознайомитися з матеріалом [Інструменти відповідального ШІ для розробників](https://www.microsoft.com/ai/ai-lab-responsible-ai-dashboard) -> ![Gif про інструменти відповідального AI](../../../../9-Real-World/2-Debugging-ML-Models/images/rai-overview.gif) +> ![Gif on Responsible AI Tools](../../../../9-Real-World/2-Debugging-ML-Models/images/rai-overview.gif) ## Аналіз помилок -Традиційні метрики продуктивності моделі, які використовуються для вимірювання точності, здебільшого базуються на розрахунках правильних і неправильних прогнозів. Наприклад, визначення того, що модель є точною на 89% із втратою помилки 0.001, може вважатися хорошим результатом. Однак помилки часто не розподіляються рівномірно в базовому наборі даних. Ви можете отримати оцінку точності моделі 89%, але виявити, що в різних областях даних модель помиляється 42% часу. Наслідки таких шаблонів помилок для певних груп даних можуть призвести до проблем справедливості або надійності. Важливо розуміти області, де модель працює добре або погано. Області даних, де є велика кількість неточностей моделі, можуть виявитися важливими демографічними даними. +Традиційні метрики продуктивності моделі для вимірювання точності, як правило, базуються на обчисленнях правильних і неправильних прогнозів. Наприклад, визнати модель такою, що має точність 89% із втратою помилки 0,001, можна за добре працюючу. Проте помилки часто не розподілені рівномірно у підлягаючому наборі даних. Ви можете мати оцінку точності моделі 89%, але виявити, що в окремих регіонах ваших даних модель помиляється 42% часу. Наслідки таких зразків помилок у певних групах даних можуть призводити до проблем із справедливістю або надійністю. Важливо зрозуміти області, де модель працює добре, або ні. Регіони даних із великою кількістю неточностей у вашій моделі можуть виявитися важливою демографічною групою. -![Аналіз і налагодження помилок моделі](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-error-distribution.png) +![Analyze and debug model errors](../../../../translated_images/uk/ea-error-distribution.117452e1177c1dd8.webp) -Компонент "Аналіз помилок" на панелі RAI показує, як помилки моделі розподіляються серед різних когорт за допомогою візуалізації дерева. Це корисно для визначення ознак або областей, де є високий рівень помилок у вашому наборі даних. Побачивши, звідки походить більшість неточностей моделі, ви можете почати досліджувати причину. Ви також можете створювати когорти даних для аналізу. Ці когорти даних допомагають у процесі налагодження, щоб визначити, чому продуктивність моделі хороша в одній когорті, але помилкова в іншій. +Компонент Аналізу помилок на інформаційній панелі RAI відображає, як неуспішність моделі розподіляється між різними когортами за допомогою візуалізації у вигляді дерева. Це корисно для визначення ознак або ділянок із високим рівнем помилок у вашому наборі даних. Спостерігаючи, звідки надходить більшість неточностей моделі, ви можете почати досліджувати корінь проблеми. Ви також можете створювати когорти даних для виконання аналізу. Ці когорти допомагають у процесі відладки визначити, чому модель показує кращі результати у одній когорті, але робить помилки в іншій. -![Аналіз помилок](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-error-cohort.png) +![Error Analysis](../../../../translated_images/uk/ea-error-cohort.6886209ea5d438c4.webp) -Візуальні індикатори на карті дерева допомагають швидше знаходити проблемні області. Наприклад, чим темніший червоний колір вузла дерева, тим вищий рівень помилок. +Візуальні індикатори на карті дерева допомагають швидше знайти проблемні ділянки. Наприклад, чим темніший відтінок червоного кольору у вузлі дерева, тим вищий рівень помилок. -Теплова карта — це ще одна функція візуалізації, яку користувачі можуть використовувати для дослідження рівня помилок за допомогою однієї або двох ознак, щоб знайти фактори, що сприяють помилкам моделі в усьому наборі даних або когорті. +Теплова карта — ще один інструмент візуалізації, який можуть використовувати користувачі для дослідження рівня помилок за однією чи двома ознаками, щоб знайти причину помилок моделі по всьому набору даних або когортам. -![Теплова карта аналізу помилок](../../../../9-Real-World/2-Debugging-ML-Models/images/ea-heatmap.png) +![Error Analysis Heatmap](../../../../translated_images/uk/ea-heatmap.8d27185e28cee383.webp) -Використовуйте аналіз помилок, коли вам потрібно: +Використовуйте аналіз помилок, коли потрібно: -* Глибоко зрозуміти, як помилки моделі розподіляються в наборі даних і серед кількох вхідних і ознакових вимірів. -* Розбити агреговані метрики продуктивності, щоб автоматично виявити помилкові когорти для інформування про ваші цільові кроки з пом’якшення. +* Отримати глибоке розуміння того, як розподіляються помилки моделей у наборі даних та за різними вхідними й ознаковими вимірами. +* Розкласти агреговані показники продуктивності, щоб автоматично виявляти когортні помилки та визначати цільові кроки усунення. ## Огляд моделі -Оцінка продуктивності моделі машинного навчання вимагає отримання цілісного розуміння її поведінки. Це можна досягти, переглянувши більше ніж одну метрику, таку як рівень помилок, точність, відгук, точність або MAE (середня абсолютна помилка), щоб знайти розбіжності серед метрик продуктивності. Одна метрика продуктивності може виглядати чудово, але неточності можуть бути виявлені в іншій метриці. Крім того, порівняння метрик для розбіжностей у всьому наборі даних або когорті допомагає пролити світло на те, де модель працює добре або погано. Це особливо важливо для оцінки продуктивності моделі серед чутливих і нечутливих ознак (наприклад, раса пацієнта, стать або вік), щоб виявити потенційну несправедливість моделі. Наприклад, виявлення того, що модель є більш помилковою в когорті з чутливими ознаками, може виявити потенційну несправедливість моделі. +Оцінка продуктивності моделі машинного навчання потребує цілісного розуміння її поведінки. Це можна досягти, переглянувши більше ніж один показник, як-от рівень помилок, точність, відзив, точність класифікації чи MAE (середня абсолютна помилка), щоб виявити розбіжності у показниках продуктивності. Один показник може виглядати добре, але інший може виявити неточності. Крім того, порівняння показників по всьому набору даних або когортам допомагає зрозуміти, де модель показує хороші результати, а де ні. Особливо це важливо для оцінки продуктивності моделі серед чутливих і нечутливих ознак (наприклад, раса, стать чи вік пацієнта), щоб виявити потенційну несправедливість моделі. Наприклад, якщо модель є більш помилковою у когорті із чутливими ознаками, це може свідчити про несправедливість моделі. -Компонент "Огляд моделі" на панелі RAI допомагає не лише аналізувати метрики продуктивності представлення даних у когорті, але й дає користувачам можливість порівнювати поведінку моделі серед різних когорт. +Компонент Огляду моделі на інформаційній панелі RAI допомагає не лише аналізувати показники продуктивності для групи даних у когорті, а й дає користувачам можливість порівнювати поведінку моделі між різними когортами. -![Когорти набору даних — огляд моделі на панелі RAI](../../../../9-Real-World/2-Debugging-ML-Models/images/model-overview-dataset-cohorts.png) +![Dataset cohorts - model overview in RAI dashboard](../../../../translated_images/uk/model-overview-dataset-cohorts.dfa463fb527a35a0.webp) -Функціональність аналізу на основі ознак компонента дозволяє користувачам звужувати підгрупи даних у межах певної ознаки, щоб виявляти аномалії на детальному рівні. Наприклад, панель має вбудований інтелект для автоматичного створення когорт для ознаки, вибраної користувачем (наприклад, *"time_in_hospital < 3"* або *"time_in_hospital >= 7"*). Це дозволяє користувачеві ізолювати певну ознаку з більшої групи даних, щоб побачити, чи є вона ключовим фактором помилкових результатів моделі. +Функціонал аналізу за ознаками дозволяє користувачам звужувати підгрупи даних у межах конкретної ознаки для виявлення аномалій на детальному рівні. Наприклад, інформаційна панель має вбудований інтелект для автоматичного створення когорт за обраною користувачем ознакою (наприклад, *"time_in_hospital < 3"* або *"time_in_hospital >= 7"*). Це дозволяє користувачу виділити певну ознаку з більшої групи даних і зрозуміти, чи є вона ключовим фактором помилкових результатів моделі. -![Когорти ознак — огляд моделі на панелі RAI](../../../../9-Real-World/2-Debugging-ML-Models/images/model-overview-feature-cohorts.png) +![Feature cohorts - model overview in RAI dashboard](../../../../translated_images/uk/model-overview-feature-cohorts.c5104d575ffd0c80.webp) -Компонент "Огляд моделі" підтримує два класи метрик розбіжностей: +Компонент Огляду моделі підтримує два класи метрик диспропорцій: -**Розбіжність у продуктивності моделі**: Ці набори метрик обчислюють розбіжність (різницю) у значеннях вибраної метрики продуктивності серед підгруп даних. Ось кілька прикладів: +**Різниця у продуктивності моделі**: цей набір метрик обчислює різницю (диспропорцію) у значеннях вибраного показника продуктивності між підгрупами даних. Ось кілька прикладів: -* Розбіжність у рівні точності -* Розбіжність у рівні помилок -* Розбіжність у точності -* Розбіжність у відгуку -* Розбіжність у середній абсолютній помилці (MAE) +* Різниця у рівні точності +* Різниця у рівні помилок +* Різниця у точності класифікації +* Різниця у відзиві +* Різниця у середній абсолютній помилці (MAE) -**Розбіжність у рівні вибору**: Ця метрика містить різницю в рівні вибору (сприятливий прогноз) серед підгруп. Наприклад, розбіжність у рівнях схвалення кредитів. Рівень вибору означає частку точок даних у кожному класі, класифікованих як 1 (у бінарній класифікації) або розподіл значень прогнозу (у регресії). +**Різниця в рівні вибору**: ця метрика містить різницю у рівні вибору (сприятливого прогнозу) серед підгруп. Прикладом є різниця у рівнях схвалення кредитів. Рівень вибору — це частка даних у кожному класі, які класифіковані як 1 (у бінарній класифікації) або розподіл прогнозованих значень (у регресії). ## Аналіз даних -> "Якщо достатньо довго катувати дані, вони зізнаються у всьому" — Рональд Коуз +> "Якщо довго мучити дані, вони зізнаються у чому завгодно" – Рональд Коуз -Це твердження звучить радикально, але правда в тому, що дані можна маніпулювати для підтримки будь-якого висновку. Така маніпуляція іноді може відбуватися ненавмисно. Як люди, ми всі маємо упередження, і часто важко свідомо усвідомлювати, коли ви вводите упередження в дані. Гарантування справедливості в AI і машинному навчанні залишається складним завданням. +Це твердження звучить радикально, але воно правдиве: дані можна маніпулювати, щоб підтвердити будь-який висновок. Такі маніпуляції іноді відбуваються ненавмисно. Як люди, усі ми маємо упередження, і часто складно усвідомлено визначити, коли ви вводите упередження в дані. Забезпечення справедливості в ШІ та машинному навчанні залишається складним викликом. -Дані є великою "сліпою зоною" для традиційних метрик продуктивності моделі. Ви можете мати високі показники точності, але це не завжди відображає базове упередження даних, яке може бути у вашому наборі даних. Наприклад, якщо набір даних співробітників містить 27% жінок на керівних посадах у компанії та 73% чоловіків на тому ж рівні, модель AI для реклами вакансій, навчена на цих даних, може орієнтуватися переважно на чоловічу аудиторію для вакансій високого рівня. Ця диспропорція в даних вплинула на прогноз моделі, надаючи перевагу одній статі. Це виявляє проблему справедливості, де є гендерне упередження в моделі AI. +Дані є великою сліпою зоною для традиційних метрик продуктивності моделі. Ви можете мати високі показники точності, але це не завжди відображає приховану упередженість у вашому наборі даних. Наприклад, якщо у наборі даних працівників жінки складають 27% на керівних посадах у компанії, а чоловіки — 73% на тому ж рівні, модель AI, навчена на цих даних для рекламування вакансій, може переважно орієнтуватися на чоловічу аудиторію для старших посад. Такий дисбаланс у даних збиває прогнози моделі, надаючи перевагу одній статі. Це виявляє проблему справедливості, пов’язану з гендерною упередженістю в моделі ШІ. -Компонент "Аналіз даних" на панелі RAI допомагає визначити області, де є надмірне або недостатнє представлення в наборі даних. Він допомагає користувачам діагностувати причину помилок і проблем справедливості, спричинених дисбалансом даних або відсутністю представлення певної групи даних. Це дає користувачам можливість візуалізувати набори даних на основі прогнозованих і фактичних результатів, груп помилок і конкретних ознак. Іноді виявлення недостатньо представленої групи даних також може показати, що модель не навчається належним чином, що призводить до високих неточностей. Модель із упередженістю даних — це не лише проблема справедливості, але й показник того, що модель не є інклюзивною чи надійною. +Компонент Аналізу даних на інформаційній панелі RAI допомагає виявити ділянки з надмірним або недостатнім представленням у наборі даних. Він допомагає користувачам діагностувати корінь помилок і проблем справедливості через дисбаланс даних або відсутність представлення окремої групи даних. Це дає змогу візуалізувати набори даних на основі прогнозованих і фактичних результатів, груп помилок і конкретних ознак. Іноді виявлення недостатньо представленої групи даних також дозволяє побачити, що модель погано навчається, тому має багато неточностей. Наявність упередження в даних моделі — це не лише проблема справедливості, а й доказ того, що модель не є інклюзивною або надійною. -![Компонент "Аналіз даних" на панелі RAI](../../../../9-Real-World/2-Debugging-ML-Models/images/dataanalysis-cover.png) +![Data Analysis component on RAI Dashboard](../../../../translated_images/uk/dataanalysis-cover.8d6d0683a70a5c1e.webp) -Використовуйте аналіз даних, коли вам потрібно: -* Досліджувати статистику вашого набору даних, вибираючи різні фільтри для розбиття даних на різні виміри (також відомі як когорти). -* Зрозуміти розподіл вашого набору даних серед різних когорт і груп ознак. -* Визначити, чи є ваші висновки, пов’язані зі справедливістю, аналізом помилок і причинністю (отримані з інших компонентів панелі), результатом розподілу вашого набору даних. -* Вирішити, в яких областях потрібно зібрати більше даних, щоб зменшити помилки, спричинені проблемами представлення, шумом міток, шумом ознак, упередженням міток та іншими факторами. +Використовуйте аналіз даних, коли потрібно: -## Інтерпретація моделі +* Досліджувати статистику вашого набору даних, вибираючи різні фільтри для поділу даних на різні виміри (так звані когорти). +* Розуміти розподіл набору даних між різними когортами та групами ознак. +* Визначати, чи є ваші висновки щодо справедливості, аналізу помилок і причинності (отримані з інших компонентів панелі) результатом розподілу вашого набору даних. +* Приймати рішення, у яких галузях збирати більше даних, щоб усунути помилки, що виникають через проблеми представлення, шум у мітках, шум ознак, упередження міток та подібні фактори. -Моделі машинного навчання часто вважаються "чорними ящиками". Розуміння того, які ключові ознаки даних впливають на прогноз моделі, може бути складним завданням. Важливо забезпечити прозорість того, чому модель робить певний прогноз. Наприклад, якщо система AI прогнозує, що пацієнт із діабетом має ризик повторної госпіталізації протягом менше ніж 30 днів, вона повинна надати підтверджуючі дані, які привели до цього прогнозу. Наявність підтверджуючих даних забезпечує прозорість, допомагаючи лікарям або лікарням приймати обґрунтовані рішення. Крім того, можливість пояснити, чому модель зробила прогноз для окремого пацієнта, забезпечує відповідність медичним регуляціям. Коли ви використовуєте моделі машинного навчання в способах, які впливають на життя людей, важливо розуміти та пояснювати, що впливає на поведінку моделі. Інтерпретація та пояснення моделі допомагають відповісти на запитання в таких сценаріях: +## Інтерпретованість моделі -* Налагодження моделі: Чому моя модель зробила цю помилку? Як я можу покращити свою модель? -* Співпраця людини та AI: Як я можу зрозуміти та довіряти рішенням моделі? -* Відповідність регуляціям: Чи відповідає моя модель юридичним вимогам? +Моделі машинного навчання, як правило, є «чорними скриньками». Зрозуміти, які ключові ознаки даних впливають на прогноз моделі, може бути складно. Важливо забезпечити прозорість у тому, чому модель робить певний прогноз. Наприклад, якщо система ШІ прогнозує, що діабетичний пацієнт має ризик бути повторно госпіталізованим менш ніж за 30 днів, вона повинна надати підтримуючі дані, що привели до такого прогнозу. Наявність індикаторів підтримки даних підвищує прозорість і допомагає клініцистам або лікарням приймати обґрунтовані рішення. Крім того, здатність пояснювати, чому модель дала прогноз для окремого пацієнта, забезпечує підзвітність відповідно до нормативних вимог охорони здоров’я. Коли ви використовуєте моделі машинного навчання у сферах, що впливають на життя людей, критично важливо розуміти та пояснювати, що впливає на поведінку моделі. Пояснюваність і інтерпретованість моделі допомагає відповісти на питання в таких сценаріях, як: -Компонент "Важливість ознак" на панелі RAI допомагає налагоджувати та отримувати всебічне розуміння того, як модель робить прогнози. Це також корисний інструмент для професіоналів машинного навчання та осіб, які приймають рішення, щоб пояснити та показати докази впливу ознак на поведінку моделі для відповідності регуляціям. Далі користувачі можуть досліджувати як глобальні, так і локальні пояснення, щоб перевірити, які ознаки впливають на прогнози моделі. Глобальні пояснення показують основні ознаки, які вплинули на загальний прогноз моделі. Локальні пояснення показують, які ознаки привели до прогнозу моделі для окремого випадку. Можливість оцінювати локальні пояснення також корисна для налагодження або аудиту конкретного випадку, щоб краще зрозуміти та інтерпретувати, чому модель зробила точний або неточний прогноз. +* Відладка моделі: Чому моя модель зробила цю помилку? Як я можу покращити модель? +* Співпраця людина-ШІ: Як мені розуміти і довіряти рішенням моделі? +* Відповідність регуляторним вимогам: Чи відповідає моя модель юридичним нормам? -![Компонент "Важливість ознак" на панелі RAI](../../../../9-Real-World/2-Debugging-ML-Models/images/9-feature-importance.png) +Компонент Важливості ознак на панелі RAI допомагає відлагоджувати і отримувати комплексне розуміння того, як модель робить прогнози. Це також корисний інструмент для фахівців з машинного навчання та приймаючих рішення, щоб пояснювати і демонструвати докази впливу ознак на поведінку моделі для відповідності регуляторним вимогам. Далі користувачі можуть досліджувати як глобальні, так і локальні пояснення, щоб перевірити, які ознаки впливають на прогноз моделі. Глобальні пояснення перераховують головні ознаки, які вплинули на загальний прогноз моделі. Локальні пояснення показують, які ознаки вплинули на прогноз моделі для окремого випадку. Можливість оцінювати локальні пояснення також корисна для відладки або аудиту конкретного випадку, щоб краще зрозуміти і пояснити, чому модель зробила точний або неточний прогноз. -* Глобальні пояснення: Наприклад, які ознаки впливають на загальну поведінку моделі повторної госпіталізації пацієнтів із діабетом? -* Локальні пояснення: Наприклад, чому пацієнт із діабетом старше 60 років із попередніми госпіталізаціями був прогнозований як повторно госпіталізований або не госпіталізований протягом 30 днів? +![Feature Importance component of the RAI dashboard](../../../../translated_images/uk/9-feature-importance.cd3193b4bba3fd4b.webp) -У процесі налагодження продуктивності моделі серед різних когорт "Важливість ознак" показує, який рівень впливу має ознака серед когорт. Це допомагає виявляти аномалії при порівнянні рівня впливу ознаки на помилкові прогнози моделі. Компонент "Важливість ознак" може показати, які значення в ознаці позитивно або негативно вплинули на результат моделі. Наприклад, якщо модель зробила неточний прогноз, компонент дає змогу деталізувати та визначити, які ознаки або значення ознак вплинули на прогноз. Такий рівень деталізації допомагає не лише в налагодженні, але й забезпечує прозорість і -- **Надмірне або недостатнє представлення**. Ідея полягає в тому, що певна група не представлена в певній професії, і будь-яка послуга чи функція, яка продовжує це підтримувати, сприяє завданню шкоди. +* Глобальні пояснення: наприклад, які ознаки впливають на загальну поведінку моделі прогнозування повторної госпіталізації діабетичних пацієнтів? +* Локальні пояснення: наприклад, чому діабетичний пацієнт віком понад 60 років із попередніми госпіталізаціями був чи не був прогнозований на повторну госпіталізацію протягом 30 днів? -### Панель інструментів Azure RAI +У процесі відладки, аналізуючи продуктивність моделі в різних когортах, Важливість ознак показує рівень впливу ознаки у цих когорт. Це допомагає виявляти аномалії при порівнянні ступеня впливу ознаки на помилкові прогнози моделі. Компонент Важливості ознак може показати, які значення в ознаці позитивно чи негативно впливали на результат моделі. Наприклад, якщо модель зробила неточний прогноз, цей компонент дає змогу детально дослідити і встановити, які саме ознаки чи значення ознак вплинули на прогноз. Такий рівень деталізації допомагає не лише у відладці, але й забезпечує прозорість і підзвітність під час аудитів. Нарешті, компонент допомагає виявляти проблеми зі справедливістю. Наприклад, якщо чутлива ознака, як-от етнічність або стать, має великий вплив на прогноз моделі, це може свідчити про упередженість за расовою або гендерною ознакою в моделі. -[Панель інструментів Azure RAI](https://learn.microsoft.com/en-us/azure/machine-learning/concept-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) побудована на основі інструментів з відкритим кодом, розроблених провідними академічними установами та організаціями, включаючи Microsoft. Вона є важливим інструментом для науковців з даних та розробників штучного інтелекту, щоб краще розуміти поведінку моделей, виявляти та усувати небажані проблеми в моделях штучного інтелекту. +![Feature importance](../../../../translated_images/uk/9-features-influence.3ead3d3f68a84029.webp) -- Дізнайтеся, як використовувати різні компоненти, переглянувши [документацію панелі інструментів 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) для налагодження більш відповідальних сценаріїв штучного інтелекту в Azure Machine Learning. +* Визначати, наскільки надійними є прогнози вашої системи ШІ, розуміючи, які ознаки є найважливішими для прогнозів. +* Розпочати відладку моделі, спочатку розуміючи її та визначаючи, чи використовує модель здорові ознаки чи лише хибні кореляції. +* Виявляти потенційні джерела несправедливості, розуміючи, чи базує модель прогнози на чутливих ознаках або на ознаках, тісно з ними пов’язаних. +* Формувати довіру користувачів до рішень моделі, створюючи локальні пояснення для ілюстрації їхніх результатів. +* Провести регуляторний аудит системи ШІ для валідації моделей та моніторингу впливу рішень моделі на людей. ---- -## 🚀 Виклик +## Висновок + +Усі компоненти інформаційної панелі 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, які є незамінними для дата-сайентистів і розробників ШІ для кращого розуміння поведінки моделей, виявлення та усунення небажаних проблем у моделях штучного інтелекту. + +- Дізнайтеся, як користуватися різними компонентами, переглянувши документацію до приладової панелі RAI [docs.](https://learn.microsoft.com/en-us/azure/machine-learning/how-to-responsible-ai-dashboard?WT.mc_id=aiml-90525-ruyakubu) + +- Перегляньте кілька прикладів [записних книжок](https://github.com/Azure/RAI-vNext-Preview/tree/main/examples/notebooks) до приладової панелі RAI для налагодження більш відповідальних сценаріїв ШІ у Azure Machine Learning. + +--- +## 🚀 Виклик + +Щоб запобігти внесенню статистичних чи даних упереджень з самого початку, ми повинні: -## [Тест після лекції](https://ff-quizzes.netlify.app/en/ml/) -## Огляд і самостійне навчання +- мати різноманітні бекграунди та погляди серед людей, які працюють над системами +- інвестувати у набори даних, що відображають різноманітність нашого суспільства +- розробляти кращі методи для виявлення й виправлення упереджень у разі їх появи -У цьому уроці ви дізналися про деякі практичні інструменти для впровадження відповідального штучного інтелекту в машинне навчання. +Подумайте про реальні сценарії, де несправедливість очевидна при створенні моделей і їх використанні. Що ще слід врахувати? -Перегляньте цей семінар, щоб глибше зануритися в тему: +## [Вікторина після лекції](https://ff-quizzes.netlify.app/en/ml/) +## Підсумок і самонавчання + +У цьому уроці ви дізналися про деякі практичні інструменти впровадження відповідального ШІ у машинне навчання. -- Панель інструментів відповідального штучного інтелекту: універсальне рішення для впровадження RAI на практиці від Бесміри Нуші та Мехрнуш Самекі +Перегляньте цей воркшоп, щоб поглибити знання з теми: -[![Панель інструментів відповідального штучного інтелекту: універсальне рішення для впровадження RAI на практиці](https://img.youtube.com/vi/f1oaDNl3djg/0.jpg)](https://www.youtube.com/watch?v=f1oaDNl3djg "Панель інструментів відповідального штучного інтелекту: універсальне рішення для впровадження RAI на практиці") +- Приладова панель Responsible AI: універсальне рішення для впровадження RAI на практиці від Бесміри Нуші та Мехрнуш Самекі -> 🎥 Натисніть на зображення вище, щоб переглянути відео: Панель інструментів відповідального штучного інтелекту: універсальне рішення для впровадження RAI на практиці від Бесміри Нуші та Мехрнуш Самекі +[![Приладова панель Responsible AI: універсальне рішення для впровадження RAI на практиці](https://img.youtube.com/vi/f1oaDNl3djg/0.jpg)](https://www.youtube.com/watch?v=f1oaDNl3djg "Responsible AI Dashboard: One-stop shop for operationalizing RAI in practice") -Ознайомтеся з наступними матеріалами, щоб дізнатися більше про відповідальний штучний інтелект і як створювати більш надійні моделі: +> 🎥 Клікніть на зображення вище, щоб подивитись відео: Приладова панель Responsible AI: універсальне рішення для впровадження RAI на практиці від Бесміри Нуші та Мехрнуш Самекі + +Ознайомтеся з наступними матеріалами, щоб більше дізнатися про відповідальний ШІ та як будувати більш надійні моделі: -- Інструменти панелі інструментів Microsoft RAI для налагодження моделей машинного навчання: [Ресурси інструментів відповідального штучного інтелекту](https://aka.ms/rai-dashboard) +- Інструменти панелі RAI від Microsoft для налагодження моделей машинного навчання: [Відповідальні інструменти ШІ](https://aka.ms/rai-dashboard) -- Досліджуйте набір інструментів відповідального штучного інтелекту: [Github](https://github.com/microsoft/responsible-ai-toolbox) +- Вивчайте набір інструментів Responsible AI: [Github](https://github.com/microsoft/responsible-ai-toolbox) -- Центр ресурсів Microsoft RAI: [Ресурси відповідального штучного інтелекту – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) +- Центр ресурсів Responsible AI від Microsoft: [Відповідальні ресурси ШІ – 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/) +- Дослідницька група FATE від Microsoft: [FATE: Справедливість, Відповідальність, Прозорість та Етика в ШІ - 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/ur/.co-op-translator.json b/translations/ur/.co-op-translator.json index f86ae0e59..2df3f3a1b 100644 --- a/translations/ur/.co-op-translator.json +++ b/translations/ur/.co-op-translator.json @@ -24,8 +24,8 @@ "language_code": "ur" }, "1-Introduction/3-fairness/README.md": { - "original_hash": "9a6b702d1437c0467e3c5c28d763dac2", - "translation_date": "2025-09-06T08:51:44+00:00", + "original_hash": "0f00d72169a0d37eecfd16d71e01700a", + "translation_date": "2026-07-14T03:33:55+00:00", "source_file": "1-Introduction/3-fairness/README.md", "language_code": "ur" }, @@ -54,8 +54,8 @@ "language_code": "ur" }, "2-Regression/1-Tools/README.md": { - "original_hash": "fa81d226c71d5af7a2cade31c1c92b88", - "translation_date": "2025-09-06T08:45:16+00:00", + "original_hash": "0b8635427b582d03ea4ab7089b93e505", + "translation_date": "2026-07-14T03:30:32+00:00", "source_file": "2-Regression/1-Tools/README.md", "language_code": "ur" }, @@ -72,8 +72,8 @@ "language_code": "ur" }, "2-Regression/2-Data/README.md": { - "original_hash": "7c077988328ebfe33b24d07945f16eca", - "translation_date": "2025-09-06T08:46:01+00:00", + "original_hash": "a58b2c4d16c6b122643391745ac15af6", + "translation_date": "2026-07-14T03:31:20+00:00", "source_file": "2-Regression/2-Data/README.md", "language_code": "ur" }, @@ -89,6 +89,12 @@ "source_file": "2-Regression/2-Data/solution/Julia/README.md", "language_code": "ur" }, + "2-Regression/2-Data/solution/notebook.ipynb": { + "original_hash": "96b95f8cf473481f2f371de8156f1571", + "translation_date": "2026-07-14T03:19:46+00:00", + "source_file": "2-Regression/2-Data/solution/notebook.ipynb", + "language_code": "ur" + }, "2-Regression/3-Linear/README.md": { "original_hash": "8b776e731c35b171d316d01d0e7b1369", "translation_date": "2026-04-26T19:50:52+00:00", @@ -457,7 +463,7 @@ }, "8-Reinforcement/1-QLearning/README.md": { "original_hash": "911efd5e595089000cb3c16fce1beab8", - "translation_date": "2025-09-06T08:57:34+00:00", + "translation_date": "2026-07-14T03:32:16+00:00", "source_file": "8-Reinforcement/1-QLearning/README.md", "language_code": "ur" }, @@ -481,7 +487,7 @@ }, "8-Reinforcement/2-Gym/README.md": { "original_hash": "107d5bb29da8a562e7ae72262d251a75", - "translation_date": "2025-09-06T08:58:16+00:00", + "translation_date": "2026-07-14T03:33:12+00:00", "source_file": "8-Reinforcement/2-Gym/README.md", "language_code": "ur" }, @@ -581,6 +587,19 @@ "source_file": "TROUBLESHOOTING.md", "language_code": "ur" }, + "__translation_failures__": { + "sketchnotes/LICENSE.md": { + "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f", + "source_file": "sketchnotes/LICENSE.md", + "language_code": "ur", + "failure_date": "2026-07-14T03:29:47+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:33+00:00", diff --git a/translations/ur/1-Introduction/3-fairness/README.md b/translations/ur/1-Introduction/3-fairness/README.md index 6cf3a53ad..3053110ab 100644 --- a/translations/ur/1-Introduction/3-fairness/README.md +++ b/translations/ur/1-Introduction/3-fairness/README.md @@ -1,161 +1,167 @@ -# مشین لرننگ کے حل کو ذمہ دارانہ AI کے ساتھ بنانا - -![مشین لرننگ میں ذمہ دارانہ AI کا خلاصہ ایک خاکے میں](../../../../sketchnotes/ml-fairness.png) -> خاکہ: [Tomomi Imura](https://www.twitter.com/girlie_mac) - -## [لیکچر سے پہلے کا کوئز](https://ff-quizzes.netlify.app/en/ml/) +# ذمہ دار AI کے ساتھ مشین لرننگ حل تیار کرنا + +![مشین لرننگ میں ذمہ دار AI کا خلاصہ ایک سکیچ نوٹ میں](../../../../translated_images/ur/ml-fairness.ef296ebec6afc98a.webp) +> سکیچنوٹ از [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) +ذمہ دار AI کے بارے میں مزید جاننے کے لیے اس [لرننگ پاتھ](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) کی پیروی کریں۔ -[![Microsoft کا ذمہ دارانہ AI کے لیے نقطہ نظر](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoft کا ذمہ دارانہ AI کے لیے نقطہ نظر") +[![Microsoft کا ذمہ دار AI کیلئے طریقہ](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](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) +- **توہین آمیز رویہ**۔ کسی چیز یا کسی شخص پر ناجائز تنقید کرنا اور اسے غلط لیبل کرنا۔ مثال کے طور پر، ایک امیج لیبلنگ ٹیکنالوجی نے بدنامی سے گہرے جلد والے لوگوں کی تصاویر کو گوریل کے طور پر لیبل کیا تھا۔ +- **زیادہ یا کم نمائندگی**۔ تصور یہ ہے کہ کسی مخصوص گروپ کو کسی مخصوص پیشے میں نہیں دیکھا جاتا، اور کوئی بھی سروس یا فنکشن جو اس کی ترویج کرتا ہے وہ نقصان میں حصہ ڈال رہا ہوتا ہے۔ +- **سٹیریو ٹائپنگ**۔ کسی گروپ کو پہلے سے طے شدہ خصوصیات سے منسوب کرنا۔ مثال کے طور پر، انگریزی اور ترکی زبان کے ترجمے کے نظام میں جنس سے متعلق سٹیریو ٹائپیکل الفاظ کی وجہ سے غلطیاں ہو سکتی ہیں۔ -![ترکی زبان میں ترجمہ](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) -> ترکی زبان میں ترجمہ +![ترکی زبان میں ترجمہ](../../../../translated_images/ur/gender-bias-translate-en-tr.f185fd8822c2d437.webp) +> ترکی میں ترجمہ -![انگریزی میں واپس ترجمہ](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) +![انگریزی میں واپس ترجمہ](../../../../translated_images/ur/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) > انگریزی میں واپس ترجمہ -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 ڈیویلپر ممکنہ رکاوٹوں کی نشاندہی اور حل کرتے ہیں جو افراد کو غیر ارادی طور پر خارج کر سکتی ہیں۔ مثال کے طور پر، دنیا بھر میں ایک بلین سے زائد معذور افراد ہیں۔ 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 میں سیکیورٹی](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 میں شفافیت](https://www.microsoft.com/videoplayer/embed/RE4voJF) +> [🎥 ویڈیو کے لیے یہاں کلک کریں: AI میں شفافیت](https://www.microsoft.com/videoplayer/embed/RE4voJF) -- AI سسٹمز اتنے پیچیدہ ہیں کہ یہ سمجھنا مشکل ہے کہ وہ کیسے کام کرتے ہیں اور ان کے نتائج کی تشریح کیسے کی جائے۔ -- اس عدم تفہیم کا اثر ان سسٹمز کے انتظام، آپریشن، اور دستاویزات پر پڑتا ہے۔ -- اس سے زیادہ اہم بات یہ ہے کہ یہ عدم تفہیم ان فیصلوں پر اثر ڈالتی ہے جو ان سسٹمز کے نتائج کی بنیاد پر کیے جاتے ہیں۔ +- چونکہ AI سسٹمز بہت پیچیدہ ہیں، ان کو سمجھنا اور نتائج کی تشریح کرنا مشکل ہوتا ہے۔ +- اس کمی کی وجہ سے ان سسٹمز کا انتظام، آپریشن، اور دستاویزات متاثر ہوتی ہیں۔ +- اور بھی اہم، اس کمی کی وجہ سے ان نتائج کی بنیاد پر کیے جانے والے فیصلے متاثر ہوتے ہیں جو یہ سسٹمز پیدا کرتے ہیں۔ -### جوابدہی +### احتساب + +وہ لوگ جو AI سسٹمز ڈیزائن اور لگاتے ہیں انہیں اپنے سسٹمز کے کام کرنے کے طریقے کے لیے جوابدہ ہونا چاہیے۔ احتساب کی ضرورت حساس ٹیکنالوجیز جیسے چہرے کی پہچان کے ساتھ خاص طور پر اہم ہے۔ حال ہی میں، چہرے کی پہچان کی ٹیکنالوجی کی مانگ بڑھ رہی ہے، خاص طور پر قانون نافذ کرنے والے اداروں کی طرف سے جو اس ٹیکنالوجی کو لاپتہ بچوں کو تلاش کرنے جیسے استعمالات میں ممکنہ نظر آتی ہیں۔ تاہم، یہ ٹیکنالوجیز ممکنہ طور پر حکومت کی طرف سے اپنے شہریوں کی بنیادی آزادیوں کو خطرے میں ڈالنے کے لیے استعمال ہو سکتی ہیں، جیسے مخصوص افراد کی مسلسل نگرانی کو فعال کرنا۔ اس لیے ڈیٹا سائنسدانوں اور تنظیموں کو یہ ذمہ داری اٹھانی ہوگی کہ ان کا AI نظام افراد یا معاشرے پر کس طرح اثر انداز ہوتا ہے۔ -جو لوگ AI سسٹمز کو ڈیزائن اور نافذ کرتے ہیں، انہیں ان کے کام کرنے کے طریقے کے لیے جوابدہ ہونا چاہیے۔ جوابدہی کی ضرورت خاص طور پر حساس ٹیکنالوجیز جیسے چہرے کی شناخت کے لیے اہم ہے۔ حالیہ دنوں میں، چہرے کی شناخت کی ٹیکنالوجی کی مانگ میں اضافہ ہوا ہے، خاص طور پر قانون نافذ کرنے والے اداروں کی طرف سے جو اس ٹیکنالوجی کو گمشدہ بچوں کو تلاش کرنے جیسے استعمالات میں ممکنہ طور پر دیکھتے ہیں۔ تاہم، یہ ٹیکنالوجیز حکومت کے ذریعے شہریوں کی بنیادی آزادیوں کو خطرے میں ڈال سکتی ہیں، جیسے مخصوص افراد کی مسلسل نگرانی کو فعال کرنا۔ اس لیے، ڈیٹا سائنسدانوں اور تنظیموں کو اس بات کے لیے ذمہ دار ہونا چاہیے کہ ان کے AI سسٹمز افراد یا معاشرے پر کیا اثر ڈال رہے ہیں۔ +[![مہم والی AI ماہر چہرے کی پہچان کے ذریعے وسیع نگرانی کے بارے میں انتباہ دیتی ہیں](../../../../translated_images/ur/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft کا ذمہ دار AI کیلئے طریقہ") -[![AI کے ذریعے نگرانی کے خطرات](../../../../1-Introduction/3-fairness/images/accountability.png)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft کا ذمہ دارانہ AI کے لیے نقطہ نظر") +> 🎥 ویڈیو کے لیے اوپر تصویر پر کلک کریں: چہرے کی پہچان کے ذریعے وسیع نگرانی کے انتبہات -> 🎥 اوپر دی گئی تصویر پر کلک کریں: چہرے کی شناخت کے ذریعے نگرانی کے خطرات +آخرکار، ہماری نسل کے لیے سب سے بڑے سوالات میں سے ایک یہ ہے کہ چونکہ ہم پہلی نسل ہیں جو AI کو معاشرے میں لا رہی ہے، تو یہ کس طرح یقینی بنایا جائے کہ کمپیوٹر لوگو ں کے لیے جوابدہ رہیں گے اور جو لوگ کمپیوٹر ڈیزائن کرتے ہیں وہ باقی سب کے لیے جوابدہ رہیں۔ -آخرکار، ہماری نسل کے لیے سب سے بڑے سوالات میں سے ایک یہ ہے کہ ہم یہ کیسے یقینی بنائیں کہ کمپیوٹرز لوگوں کے لیے جوابدہ رہیں گے اور یہ کہ کمپیوٹرز کو ڈیزائن کرنے والے لوگ سب کے لیے جوابدہ رہیں۔ +## اثرات کا جائزہ -## اثرات کی تشخیص +مشین لرننگ ماڈل کی تربیت سے پہلے، ضروری ہے کہ ایک اثرات کا جائزہ لیا جائے تاکہ AI نظام کے مقصد کو سمجھا جا سکے؛ اس کا متوقع استعمال کیا ہے؛ یہ کہاں نافذ کیا جائے گا؛ اور کون اس نظام کے ساتھ تعامل کرے گا۔ یہ جائزہ کار(وں) یا ٹیسٹرز کو خود نظام کے جائزہ لینے میں مدد دیتا ہے تاکہ وہ ممکنہ خطرات اور متوقع نتائج کے عوامل کو مدنظر رکھ سکیں۔ -مشین لرننگ ماڈل کو تربیت دینے سے پہلے، یہ ضروری ہے کہ AI سسٹم کے مقصد کو سمجھنے کے لیے اثرات کی تشخیص کی جائے؛ اس کا ارادہ کیا ہے؛ یہ کہاں تعینات ہوگا؛ اور کون اس سسٹم کے ساتھ تعامل کرے گا۔ یہ جائزہ لینے والوں یا ٹیسٹرز کے لیے مددگار ثابت ہوتا ہے تاکہ وہ ان عوامل کو جان سکیں جن پر ممکنہ خطرات اور متوقع نتائج کی نشاندہی کرتے وقت غور کرنا چاہیے۔ +اثرات کے جائزے کے دوران درج ذیل امور پر توجہ دی جاتی ہے: -اثرات کی تشخیص کرتے وقت درج ذیل نکات پر توجہ مرکوز کریں: +* **افراد پر منفی اثر**۔ کسی بھی بندش یا ضروریات، غیر معاون استعمال یا کسی معلوم حدود سے آگاہ ہونا ضروری ہے تاکہ نظام کا استعمال ایسے طریقے سے نہ ہو جو افراد کو نقصان پہنچا سکے۔ +* **ڈیٹا کی ضروریات**۔ یہ سمجھنا کہ نظام ڈیٹا کو کیسے اور کہاں استعمال کرے گا، جائزہ لینے والوں کو کسی بھی ڈیٹا کی ضروریات پر غور کرنے میں مدد دیتا ہے (مثلاً GDPR یا HIPAA ڈیٹا کے قوانین)۔ اس کے علاوہ، یہ دیکھنا کہ آیا ڈیٹا کا ماخذ یا مقدار تربیت کے لیے کافی ہے۔ +* **اثرات کا خلاصہ**۔ نظام کے استعمال سے پیدا ہونے والے ممکنہ نقصانات کی فہرست جمع کریں۔ مشین لرننگ کے پورے لائف سائیکل کے دوران، طے شدہ مسائل کی جانچ کریں کہ آیا انہیں کم یا حل کیا گیا ہے۔ +* **مطلوبہ اہداف** ہر چھ بنیادی اصولوں کے لیے۔ یہ اندازہ لگائیں کہ اصولوں سے وابستہ اہداف پورے ہوئے یا نہیں اور کہیں کہیں فرق تو نہیں۔ -- **افراد پر منفی اثرات**: کسی بھی پابندی یا ضرورت، غیر معاون استعمال، یا کسی معلوم حدود سے آگاہ ہونا ضروری ہے تاکہ یہ یقینی بنایا جا سکے کہ سسٹم کو اس طرح استعمال نہ کیا جائے جو افراد کو نقصان پہنچا سکے۔ -- **ڈیٹا کی ضروریات**: یہ سمجھنا کہ سسٹم ڈیٹا کو کیسے اور کہاں استعمال کرے گا، جائزہ لینے والوں کو ان ڈیٹا کی ضروریات کو تلاش کرنے میں مدد دیتا ہے جن کا آپ کو خیال رکھنا ہوگا (مثلاً، GDPR یا HIPPA ڈیٹا کے ضوابط)۔ مزید برآں، یہ جانچنا کہ آیا ڈیٹا کا ماخذ یا مقدار تربیت کے لیے کافی ہے۔ -- **اثرات کا خلاصہ**: ان ممکنہ نقصانات کی فہرست جمع کریں جو سسٹم کے استعمال سے پیدا ہو سکتے ہیں۔ ML کے پورے لائف سائیکل کے دوران، یہ جائزہ لیں کہ آیا شناخت شدہ مسائل کو کم کیا گیا ہے یا حل کیا گیا ہے۔ -- **چھ بنیادی اصولوں کے لیے قابل اطلاق اہداف**: جائزہ لیں کہ آیا ہر اصول کے اہداف پورے کیے گئے ہیں اور کیا کوئی خلا موجود ہے۔ -## ذمہ دارانہ AI کے ساتھ ڈیبگنگ +## ذمہ دار 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 کی تلاش: اصولوں کو عملی جامہ پہنانا، پیشکش از بسمیرا نوشی، مہرنوش سمیقی اور امت شرما +- ذمہ دار AI کی تلاش میں: اصولوں کو عملی جامہ پہنانا از بسمیرا نوشی، مهرنوش سامیکی اور امت شرما -[![ذمہ دار AI ٹول باکس: ذمہ دار AI بنانے کے لیے ایک اوپن سورس فریم ورک](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: ذمہ دار AI بنانے کے لیے ایک اوپن سورس فریم ورک") +[![Responsible AI Toolbox: An open-source framework for building responsible AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") -> 🎥 اوپر دی گئی تصویر پر کلک کریں ویڈیو کے لیے: RAI Toolbox: ذمہ دار AI بنانے کے لیے ایک اوپن سورس فریم ورک، پیشکش از بسمیرا نوشی، مہرنوش سمیقی اور امت شرما +> 🎥 ویڈیو کے لیے اوپر تصویر پر کلک کریں: RAI Toolbox: Besmira Nushi، Mehrnoosh Sameki، اور Amit Sharma کے ذریعہ ذمہ دار AI کی تعمیر کے لیے ایک اوپن سورس فریم ورک -یہ بھی پڑھیں: +مزید یہ بھی پڑھیں: -- مائیکروسافٹ کا 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 کے آلات کے بارے میں پڑھیں: -- [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/ur/2-Regression/1-Tools/README.md b/translations/ur/2-Regression/1-Tools/README.md index eaef4abb6..2893af624 100644 --- a/translations/ur/2-Regression/1-Tools/README.md +++ b/translations/ur/2-Regression/1-Tools/README.md @@ -1,106 +1,107 @@ -# Python اور Scikit-learn کے ساتھ ریگریشن ماڈلز کے لیے شروعات کریں +# Python اور Scikit-learn کے ساتھ ریگریشن ماڈلز کے لیے شروع کریں -![ریگریشنز کا خلاصہ ایک خاکہ میں](../../../../sketchnotes/ml-regression.png) +![ریگریشنز کا خلاصہ ایک سکیتچنوٹ میں](../../../../translated_images/ur/ml-regression.4e4f70e3b3ed446e.webp) -> خاکہ [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 کا استعمال کریں، بشمول انسٹالیشن۔ -- ایک عملی مشق کے ذریعے لینیئر ریگریشن کو دریافت کریں۔ +- Scikit-learn استعمال کریں، بشمول تنصیب۔ +- ایک عملی مشق کے ذریعے لینیئر ریگریشن کا جائزہ لیں۔ -## انسٹالیشنز اور ترتیب +## تنصیبات اور ترتیبات -[![مشین لرننگ کے لیے ابتدائی - مشین لرننگ ماڈلز بنانے کے لیے اپنے ٹولز تیار کریں](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "مشین لرننگ کے لیے ابتدائی - مشین لرننگ ماڈلز بنانے کے لیے اپنے ٹولز تیار کریں") +[![نئے آنے والوں کے لیے ML - اپنے اوزار تیار کریں تاکہ مشین لرننگ ماڈلز بنائیں](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](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 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/) کے بنیادی ہدایات پر عمل کریں۔ اس کورس میں آپ Python کو Visual Studio Code میں استعمال کریں گے، لہذا آپ [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 کے ساتھ آرام دہ ہونے کے لیے اس [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) سے گزر کر کام کریں۔ > - > [![Visual Studio Code کے ساتھ Python ترتیب دیں](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Visual Studio Code کے ساتھ Python ترتیب دیں") + > [![Visual Studio Code کے ساتھ Python سیٹ اپ کریں](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Visual Studio Code کے ساتھ Python سیٹ اپ کریں") > - > 🎥 اوپر دی گئی تصویر پر کلک کریں تاکہ Visual Studio 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/) کرنے کی ضرورت ہوگی۔ +1. **Jupyter Notebook انسٹال کریں**۔ آپ کو [Jupyter پیکیج انسٹال کرنا](https://pypi.org/project/jupyter/) ہوگا۔ -## آپ کا مشین لرننگ تخلیقی ماحول +## آپ کا ML مصنف ماحول -آپ **نوٹ بکس** استعمال کریں گے تاکہ Python کوڈ تیار کریں اور مشین لرننگ ماڈلز بنائیں۔ یہ فائل کی قسم ڈیٹا سائنسدانوں کے لیے ایک عام ٹول ہے، اور انہیں ان کے لاحقہ یا توسیع `.ipynb` سے پہچانا جا سکتا ہے۔ +آپ **نوٹ بکس** استعمال کریں گے اپنی Python کوڈنگ اور مشین لرننگ ماڈلز بنانے کے لیے۔ یہ قسم کا فائل ڈیٹا سائنسدانوں کے لیے ایک عام آلہ ہے، اور انہیں ان کے پسوند یا توسیع `.ipynb` سے پہچانا جا سکتا ہے۔ -نوٹ بکس ایک انٹرایکٹو ماحول فراہم کرتی ہیں جو ڈیولپر کو کوڈ لکھنے اور اس کے ارد گرد نوٹس اور دستاویزات شامل کرنے کی اجازت دیتی ہیں، جو تجرباتی یا تحقیقی منصوبوں کے لیے کافی مددگار ثابت ہوتی ہیں۔ +نوٹ بکس ایک تعاملی ماحول ہیں جو ڈویلپر کو نہ صرف کوڈ لکھنے بلکہ اس کے گرد نوٹس اور دستاویزات شامل کرنے کی اجازت دیتے ہیں، جو تحقیقی یا تجرباتی منصوبوں کے لیے مفید ہے۔ -[![مشین لرننگ کے لیے ابتدائی - Jupyter نوٹ بکس ترتیب دیں تاکہ ریگریشن ماڈلز بنانا شروع کریں](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "مشین لرننگ کے لیے ابتدائی - Jupyter نوٹ بکس ترتیب دیں تاکہ ریگریشن ماڈلز بنانا شروع کریں") +[![نئے آنے والوں کے لیے ML - ریگریشن ماڈلز بنانے کے لیے Jupyter نوٹ بکس تیار کریں](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "نئے آنے والوں کے لیے ML - ریگریشن ماڈلز بنانے کے لیے Jupyter نوٹ بکس تیار کریں") -> 🎥 اوپر دی گئی تصویر پر کلک کریں تاکہ اس مشق کے عمل کو دیکھ سکیں۔ +> 🎥 اس مشق کو کرتے ہوئے ایک مختصر ویڈیو کے لیے اوپر تصویر پر کلک کریں۔ -### مشق - نوٹ بک کے ساتھ کام کریں +### مشق - ایک نوٹ بک کے ساتھ کام کریں اس فولڈر میں، آپ کو فائل _notebook.ipynb_ ملے گی۔ -1. _notebook.ipynb_ کو Visual Studio Code میں کھولیں۔ +1. Visual Studio Code میں _notebook.ipynb_ کھولیں۔ - ایک Jupyter سرور Python 3+ کے ساتھ شروع ہوگا۔ آپ کو نوٹ بک کے وہ حصے ملیں گے جو `run` کیے جا سکتے ہیں، یعنی کوڈ کے ٹکڑے۔ آپ کوڈ بلاک کو چلانے کے لیے اس آئیکن کو منتخب کر سکتے ہیں جو پلے بٹن کی طرح دکھائی دیتا ہے۔ + Python 3+ کے ساتھ ایک Jupyter سرور شروع ہوگا۔ آپ نوٹ بک کے حصے دیکھیں گے جنہیں `run` کیا جا سکتا ہے، یعنی کوڈ کے ٹکڑے۔ آپ کوڈ بلاک کو اس کے پلے بٹن نما آئیکن کو منتخب کر کے چلا سکتے ہیں۔ -2. `md` آئیکن منتخب کریں اور تھوڑا سا مارک ڈاؤن شامل کریں، اور درج ذیل متن **# اپنی نوٹ بک میں خوش آمدید** لکھیں۔ +1. `md` آئیکن منتخب کریں اور تھوڑا سا مارک ڈاؤن اور مندرجہ ذیل متن شامل کریں **# Welcome to your notebook**۔ - اس کے بعد کچھ Python کوڈ شامل کریں۔ + پھر، کچھ Python کوڈ شامل کریں۔ -3. کوڈ بلاک میں **print('hello notebook')** لکھیں۔ -4. کوڈ چلانے کے لیے تیر کو منتخب کریں۔ +1. کوڈ بلاک میں ٹائپ کریں **print('hello notebook')**۔ +1. کوڈ چلانے کے لیے تیر پر کلک کریں۔ - آپ کو پرنٹ شدہ بیان نظر آنا چاہیے: + آپ کو یہ پرنٹ شدہ عبارت دکھنی چاہیے: ```output hello notebook ``` -![VS Code میں ایک نوٹ بک کھلی ہوئی](../../../../2-Regression/1-Tools/images/notebook.jpg) +![VS Code کے ساتھ ایک نوٹ بک کھلا ہوا](../../../../translated_images/ur/notebook.4a3ee31f396b8832.webp) -آپ اپنے کوڈ کے ساتھ تبصرے شامل کر سکتے ہیں تاکہ نوٹ بک کو خود دستاویز کریں۔ +آپ اپنے کوڈ کے ساتھ تبصرے شامل کر کے نوٹ بک خود دستاویزی بنا سکتے ہیں۔ -✅ ایک لمحے کے لیے سوچیں کہ ویب ڈیولپر کے کام کرنے کے ماحول اور ڈیٹا سائنسدان کے کام کرنے کے ماحول میں کتنا فرق ہے۔ +✅ ایک لمحہ سوچیں کہ ویب ڈویلپر کا کام کرنے کا ماحول ڈیٹا سائنسدان کے ماحول سے کتنا مختلف ہوتا ہے۔ -## 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 ایک [وسیع 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 کے ساتھ کچھ بنیادی ڈیٹا کے ساتھ پہلے ML ماڈل کو دریافت کریں۔ +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) سے متاثر ہو کر بنایا گیا ہے۔ -[![مشین لرننگ کے لیے ابتدائی - Python میں آپ کا پہلا لینیئر ریگریشن پروجیکٹ](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "مشین لرننگ کے لیے ابتدائی - Python میں آپ کا پہلا لینیئر ریگریشن پروجیکٹ") -> 🎥 اوپر دی گئی تصویر پر کلک کریں تاکہ اس مشق کے عمل کو دیکھ سکیں۔ +[![نئے آنے والوں کے لیے ML - Python میں آپ کا پہلا لینیئر ریگریشن پروجیکٹ](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "نئے آنے والوں کے لیے ML - Python میں آپ کا پہلا لینیئر ریگریشن پروجیکٹ") -_نوٹ بک.ipynb_ فائل میں، تمام سیلز کو 'trash can' آئیکن دباکر صاف کریں۔ +> 🎥 اس مشق کو کرتے ہوئے ایک مختصر ویڈیو کے لیے اوپر تصویر پر کلک کریں۔ -اس سیکشن میں، آپ Scikit-learn میں سیکھنے کے مقاصد کے لیے شامل ایک چھوٹے ڈیٹاسیٹ کے ساتھ کام کریں گے جو ذیابیطس کے بارے میں ہے۔ تصور کریں کہ آپ ذیابیطس کے مریضوں کے لیے علاج کی جانچ کرنا چاہتے ہیں۔ مشین لرننگ ماڈلز آپ کو یہ تعین کرنے میں مدد دے سکتے ہیں کہ کون سے مریض علاج کے لیے بہتر ردعمل دیں گے، متغیرات کے امتزاج کی بنیاد پر۔ یہاں تک کہ ایک بہت ہی بنیادی ریگریشن ماڈل، جب بصری بنایا جائے، متغیرات کے بارے میں معلومات دکھا سکتا ہے جو آپ کو اپنے نظریاتی کلینیکل ٹرائلز کو منظم کرنے میں مدد دے سکتے ہیں۔ +_notebook.ipynb_ فائل جو اس سبق سے منسلک ہے، کی تمام سیلز کو 'ٹراش کین' آئیکن دباکر صاف کریں۔ -✅ ریگریشن کے کئی طریقے ہیں، اور آپ کون سا منتخب کرتے ہیں اس کا انحصار اس جواب پر ہوتا ہے جس کی آپ تلاش کر رہے ہیں۔ اگر آپ کسی دیے گئے عمر کے شخص کے لیے ممکنہ قد کی پیش گوئی کرنا چاہتے ہیں، تو آپ لینیئر ریگریشن استعمال کریں گے، کیونکہ آپ ایک **عددی قدر** تلاش کر رہے ہیں۔ اگر آپ یہ دریافت کرنا چاہتے ہیں کہ آیا کسی قسم کے کھانے کو ویگن سمجھا جانا چاہیے یا نہیں، تو آپ ایک **زمرہ تفویض** تلاش کر رہے ہیں، لہذا آپ لاجسٹک ریگریشن استعمال کریں گے۔ آپ لاجسٹک ریگریشن کے بارے میں بعد میں مزید سیکھیں گے۔ ڈیٹا سے کچھ سوالات کے بارے میں سوچیں، اور ان طریقوں میں سے کون سا زیادہ مناسب ہوگا۔ +اس سیکشن میں، آپ اس چھوٹے ڈیٹاسیٹ کے ساتھ کام کریں گے جو ڈایابیٹیز کے بارے میں ہے اور Scikit-learn میں سیکھنے کے لیے بنایا گیا ہے۔ تصور کریں کہ آپ ذیابیطس کے مریضوں کے علاج کی جانچ کرنا چاہتے ہیں۔ مشین لرننگ ماڈلز آپ کو مدد دے سکتے ہیں کہ کون سے مریض علاج کا بہتر جواب دیں گے، مختلف متغیرات کے امتزاج کی بنیاد پر۔ ایک بہت سادہ ریگریشن ماڈل بھی جب بصری شکل میں دکھایا جائے، تو ایسے متغیرات کی معلومات فراہم کر سکتا ہے جو آپ کے نظریاتی کلینیکل ٹرائلز کو بہتر منظم کرنے میں مددگار ہوں۔ + +✅ ریگریشن کے کئی طریقے ہیں، اور آپ کون سا منتخب کرتے ہیں یہ آپ کے مطلوبہ جواب پر منحصر ہے۔ اگر آپ کسی دیے گئے عمر کے شخص کی ممکنہ قد کی پیش گوئی کرنا چاہتے ہیں، تو آپ لینیئر ریگریشن استعمال کریں گے کیونکہ آپ ایک **عددی قدر** تلاش کر رہے ہیں۔ اگر آپ یہ جاننا چاہتے ہیں کہ کسی کھانے کی قسم ویگن کہلانی چاہیے یا نہیں، تو آپ ایک **زمرہ بندی** چاہتے ہیں، تو آپ لاجسٹک ریگریشن استعمال کریں گے۔ آپ لاجسٹک ریگریشن کے بارے میں بعد میں مزید سیکھیں گے۔ ڈیٹا سے پوچھے جانے والے کچھ سوالات کے بارے میں تھوڑا سوچیں، اور ان میں سے کون سا طریقہ زیادہ مناسب ہو گا۔ آئیے اس کام کو شروع کریں۔ @@ -108,13 +109,13 @@ _نوٹ بک.ipynb_ فائل میں، تمام سیلز کو 'trash can' آئی اس کام کے لیے ہم کچھ لائبریریاں درآمد کریں گے: -- **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,24 +123,24 @@ _نوٹ بک.ipynb_ فائل میں، تمام سیلز کو 'trash can' آئی 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) میں ذیابیطس کے بارے میں 442 نمونے شامل ہیں، جن میں 10 فیچر متغیرات ہیں، جن میں سے کچھ یہ ہیں: -- عمر: سالوں میں عمر -- bmi: باڈی ماس انڈیکس +- عمر: عمر سالوں میں +- bmi: جسمانی ماس انڈیکس - bp: اوسط بلڈ پریشر -- s1 tc: ٹی سیلز (سفید خون کے خلیوں کی ایک قسم) +- s1 tc: ٹی سیلز (سفید خون کے خلیات کی ایک قسم) -✅ اس ڈیٹاسیٹ میں ذیابیطس کے ارد گرد تحقیق کے لیے ایک اہم فیچر متغیر کے طور پر 'جنس' کا تصور شامل ہے۔ بہت سے طبی ڈیٹاسیٹس میں اس قسم کی بائنری درجہ بندی شامل ہوتی ہے۔ اس بارے میں تھوڑا سوچیں کہ اس طرح کی درجہ بندی علاج سے آبادی کے کچھ حصوں کو کیسے خارج کر سکتی ہے۔ +✅ اس ڈیٹاسیٹ میں 'جنس' کا تصور بھی بطور فیچر متغیر شامل ہے جو ذیابیطس کی تحقیق کے لیے اہم ہے۔ بہت سے طبی ڈیٹاسیٹس میں اس قسم کی بائنری درجہ بندی شامل ہوتی ہے۔ تھوڑا سوچیں کہ اس طرح کی درجہ بندیاں کسی آبادی کے کچھ حصے کو علاج سے کیسے خارج کر سکتی ہیں۔ اب، X اور y ڈیٹا لوڈ کریں۔ > 🎓 یاد رکھیں، یہ سپروائزڈ لرننگ ہے، اور ہمیں ایک نامزد 'y' ہدف کی ضرورت ہے۔ -ایک نئے کوڈ سیل میں، ذیابیطس ڈیٹاسیٹ کو `load_diabetes()` کال کرکے لوڈ کریں۔ ان پٹ `return_X_y=True` اشارہ دیتا ہے کہ `X` ایک ڈیٹا میٹرکس ہوگا، اور `y` ریگریشن ہدف ہوگا۔ +ایک نئے کوڈ سیل میں، `load_diabetes()` کال کر کے ذیابیطس ڈیٹاسیٹ لوڈ کریں۔ ان پٹ `return_X_y=True` سے اشارہ ملتا ہے کہ `X` ایک ڈیٹا میٹرکس ہوگا، اور `y` ریگریشن کا ہدف ہوگا۔ 1. ڈیٹا میٹرکس کی شکل اور اس کے پہلے عنصر کو دکھانے کے لیے کچھ پرنٹ کمانڈز شامل کریں: @@ -149,9 +150,9 @@ _نوٹ بک.ipynb_ فائل میں، تمام سیلز کو 'trash can' آئی 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 @@ _نوٹ بک.ipynb_ فائل میں، تمام سیلز کو 'trash can' آئی -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) سے تیسرا کالم منتخب کریں۔ آپ اسے 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. اب آپ اپنے ماڈل کو تربیت دینے کے لیے تیار ہیں! لینیئر ریگریشن ماڈل لوڈ کریں اور `model.fit()` استعمال کر کے اپنے X اور y کے ٹریننگ سیٹ پر اس کی تربیت کریں: ```python model = linear_model.LinearRegression() model.fit(X_train, y_train) ``` - ✅ `model.fit()` ایک فنکشن ہے جو آپ کو TensorFlow جیسے کئی ML لائبریریوں میں نظر آئے گا۔ + ✅ `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,23 +203,24 @@ _نوٹ بک.ipynb_ فائل میں، تمام سیلز کو 'trash can' آئی plt.show() ``` - ![ذیابیطس کے ارد گرد ڈیٹا پوائنٹس دکھانے والا ایک اسکیٹر پلاٹ](../../../../2-Regression/1-Tools/images/scatterplot.png) -✅ سوچیں کہ یہاں کیا ہو رہا ہے۔ ایک سیدھی لکیر کئی چھوٹے ڈیٹا پوائنٹس کے درمیان سے گزر رہی ہے، لیکن یہ اصل میں کیا کر رہی ہے؟ کیا آپ دیکھ سکتے ہیں کہ آپ اس لکیر کو کیسے استعمال کر سکتے ہیں تاکہ اندازہ لگا سکیں کہ ایک نیا، غیر دیکھے گئے ڈیٹا پوائنٹ کو پلاٹ کے y محور کے ساتھ کس تعلق میں ہونا چاہیے؟ اس ماڈل کے عملی استعمال کو الفاظ میں بیان کرنے کی کوشش کریں۔ + ![ذیابیطس کے گرد ڈیٹا پوائنٹس دکھانے والا اسکٹرپلاٹ](../../../../translated_images/ur/scatterplot.ad8b356bcbb33be6.webp) + -مبارک ہو، آپ نے اپنا پہلا لینیئر ریگریشن ماڈل بنایا، اس کے ساتھ ایک پیش گوئی کی، اور اسے ایک پلاٹ میں دکھایا! + ✅ یہاں جو کچھ ہو رہا ہے اس کے بارے میں تھوڑی سوچیں۔ ایک سیدھی لائن بہت سے چھوٹے ڈیٹا پوائنٹس کے ایک راستے سے گزر رہی ہے، لیکن یہ بالکل کیا کر رہی ہے؟ کیا آپ دیکھ سکتے ہیں کہ آپ کو اس لائن کو کیسے استعمال کرنا چاہیے تاکہ پیش گوئی کی جا سکے کہ ایک نیا، نا دیکھا ہوا ڈیٹا پوائنٹ پلاٹ کی 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 @@ _نوٹ بک.ipynb_ فائل میں، تمام سیلز کو 'trash can' آئی --- -**ڈسکلیمر**: -یہ دستاویز 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/ur/2-Regression/2-Data/README.md b/translations/ur/2-Regression/2-Data/README.md index 53ae51169..a1745d0b1 100644 --- a/translations/ur/2-Regression/2-Data/README.md +++ b/translations/ur/2-Regression/2-Data/README.md @@ -1,62 +1,62 @@ -# سکائٹ لرن کے ذریعے ریگریشن ماڈل بنائیں: ڈیٹا تیار کریں اور بصری بنائیں +# Scikit-learn استعمال کرتے ہوئے ریگریشن ماڈل بنائیں: ڈیٹا کی تیاری اور بصری نمائندگی -![ڈیٹا بصری انفوگرافک](../../../../2-Regression/2-Data/images/data-visualization.png) +![ڈیٹا کی بصری نمائندگی کا انفو گرافک](../../../../translated_images/ur/data-visualization.54e56dded7c1a804.webp) -انفوگرافک از [دسانی مڈیپالی](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 کے ساتھ مشین لرننگ ماڈل بنانے کے لیے درکار آلات موجود ہیں، آپ اپنے ڈیٹا سے سوالات کرنا شروع کرنے کے لیے تیار ہیں۔ جب آپ ڈیٹا کے ساتھ کام کرتے ہیں اور مشین لرننگ کے حل لاگو کرتے ہیں، تو یہ سمجھنا بہت ضروری ہے کہ صحیح سوال کیسے پوچھا جائے تاکہ آپ کے ڈیٹا سیٹ کی صلاحیتوں کو مناسب طریقے سے کھولا جا سکے۔ اس سبق میں، آپ سیکھیں گے: -- ماڈل بنانے کے لیے اپنے ڈیٹا کو کیسے تیار کریں۔ -- ڈیٹا بصری کے لیے میٹپلاٹ لائبریری کا استعمال کیسے کریں۔ +- اپنے ماڈل بنانے کے لیے ڈیٹا کیسے تیار کریں۔ +- ڈیٹا کی بصری نمائندگی کے لیے Matplotlib کا استعمال کیسے کریں۔ +- زیادہ موثر ڈیٹا بصری نمائندگی کے لیے Seaborn کا استعمال کیسے کریں۔ ## اپنے ڈیٹا سے صحیح سوال پوچھنا -جو سوال آپ کے جواب کا منتظر ہے وہ طے کرے گا کہ آپ کس قسم کے ایم ایل الگورتھم استعمال کریں گے۔ اور جو جواب آپ کو واپس ملے گا اس کا معیار آپ کے ڈیٹا کی نوعیت پر بہت زیادہ منحصر ہوگا۔ +جس سوال کا جواب آپ چاہتے ہیں وہ اس بات کا تعین کرے گا کہ آپ کون سے مشین لرننگ الگورتھمز استعمال کریں گے۔ اور جو جواب آپ کو ملے گا اس کی کیفیت آپ کے ڈیٹا کی نوعیت پر بہت زیادہ منحصر ہوگی۔ -اس سبق کے لیے فراہم کردہ [ڈیٹا](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 Code میں کھول سکتے ہیں۔ ایک فوری نظر سے ظاہر ہوتا ہے کہ خانے خالی ہیں اور ڈیٹا میں سٹرنگز اور عددی ڈیٹا دونوں موجود ہیں۔ ایک عجیب کالم 'Package' بھی ہے جہاں ڈیٹا 'sacks'، 'bins' اور دیگر اقدار کا مرکب ہے۔ حقیقت میں، یہ ڈیٹا کچھ حد تک بے ترتیبی ہے۔ -[![مشین لرننگ کے ابتدائی افراد کے لیے - ڈیٹا سیٹ کا تجزیہ اور صفائی کیسے کریں](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "مشین لرننگ کے ابتدائی افراد کے لیے - ڈیٹا سیٹ کا تجزیہ اور صفائی کیسے کریں") +[![بیگنرز کے لیے ML - ڈیٹا سیٹ کا تجزیہ اور صفائی کیسے کریں](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "بیگنرز کے لیے ML - ڈیٹا سیٹ کا تجزیہ اور صفائی کیسے کریں") -> 🎥 اوپر دی گئی تصویر پر کلک کریں تاکہ اس سبق کے لیے ڈیٹا تیار کرنے پر ایک مختصر ویڈیو دیکھ سکیں۔ +> 🎥 اس سبق کے لیے ڈیٹا کی تیاری کے طریقہ کار پر مختصر ویڈیو دیکھنے کے لیے اوپر دی گئی تصویر پر کلک کریں۔ -حقیقت میں، یہ بہت عام نہیں ہے کہ آپ کو ایک ایسا ڈیٹا سیٹ دیا جائے جو ایم ایل ماڈل بنانے کے لیے مکمل طور پر تیار ہو۔ اس سبق میں، آپ سیکھیں گے کہ معیاری پائتھن لائبریریوں کا استعمال کرتے ہوئے ایک خام ڈیٹا سیٹ کو کیسے تیار کیا جائے۔ آپ ڈیٹا کو بصری بنانے کے مختلف طریقے بھی سیکھیں گے۔ +حقیقت میں، یہ بہت عام نہیں کہ آپ کو ایسا ڈیٹا سیٹ ملے جو بالکل استعمال کے لیے تیار ہو اور اسے فوراً مشین لرننگ ماڈل بنانے کے لیے استعمال کیا جا سکے۔ اس سبق میں، آپ سیکھیں گے کہ کس طرح عام Python لائبریریوں کا استعمال کرتے ہوئے خام ڈیٹا سیٹ کو تیار کیا جائے۔ آپ مختلف تکنیکیں بھی سیکھیں گے جو ڈیٹا کی بصری نمائندگی کے لیے استعمال ہوتی ہیں۔ -## کیس اسٹڈی: 'کدو کی مارکیٹ' +## کیس اسٹڈی: 'کدو کا بازار' -اس فولڈر میں آپ کو روٹ `data` فولڈر میں ایک .csv فائل ملے گی جسے [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) سے نکالا گیا ہے، جو کہ ریاستہائے متحدہ کے محکمہ زراعت کی طرف سے تقسیم کیا گیا ہے۔ +اس فولڈر میں آپ کو روٹ `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 کی ویب سائٹ سے ہر شہر کے لیے الگ الگ فائلوں میں ڈاؤن لوڈ کیا جا سکتا ہے۔ بہت سی الگ فائلز سے بچنے کے لیے ہم نے تمام شہر کے ڈیٹا کو ایک اسپریڈشیٹ میں جوڑ دیا ہے، لہذا ہم نے کچھ حد تک ڈیٹا کو پہلے ہی _تیار_ کر لیا ہے۔ آئیں اب ڈیٹا کو قریب سے دیکھتے ہیں۔ -### کدو کا ڈیٹا - ابتدائی نتائج +### کدو کے ڈیٹا پر ابتدائی نتائج -آپ اس ڈیٹا کے بارے میں کیا نوٹ کرتے ہیں؟ آپ نے پہلے ہی دیکھا ہے کہ اس میں سٹرنگز، نمبرز، خالی جگہیں اور عجیب اقدار کا امتزاج ہے جنہیں آپ کو سمجھنا ہوگا۔ - -آپ اس ڈیٹا سے ریگریشن تکنیک کا استعمال کرتے ہوئے کون سا سوال پوچھ سکتے ہیں؟ کیا "کسی دیے گئے مہینے کے دوران فروخت کے لیے کدو کی قیمت کی پیش گوئی کریں" مناسب ہوگا؟ ڈیٹا کو دوبارہ دیکھتے ہوئے، آپ کو ڈیٹا اسٹرکچر بنانے کے لیے کچھ تبدیلیاں کرنے کی ضرورت ہے جو اس کام کے لیے ضروری ہے۔ +آپ نے اس ڈیٹا میں کیا دیکھا؟ آپ نے پہلے ہی دیکھا تھا کہ یہاں سٹرنگز، نمبرز، خالی خانے اور عجیب و غریب اقدار کا مرکب ہے جنہیں آپ کو سمجھنا ہے۔ +آپ اس ڈیٹا سے ریگریشن تکنیک استعمال کرتے ہوئے کیا سوال پوچھ سکتے ہیں؟ مثلا "کسی دیے گئے مہینے میں فروخت کے لیے کدو کی قیمت کی پیش گوئی۔" دوبارہ ڈیٹا کو دیکھتے ہوئے، آپ کو کام کے لیے مطلوبہ ڈیٹا سٹرکچر بنانے کے لیے کچھ تبدیلیاں کرنی ہوں گی۔ ## مشق - کدو کے ڈیٹا کا تجزیہ کریں -آئیے [پینڈاز](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. مہینہ ایک نئے کالم میں نکالیں۔ -_نوٹ بک.ipynb_ فائل کو ویژول اسٹوڈیو کوڈ میں کھولیں اور اسپریڈشیٹ کو ایک نئے پینڈاز ڈیٹا فریم میں درآمد کریں۔ +Visual Studio Code میں _notebook.ipynb_ فائل کھولیں اور اسپریڈشیٹ کو Pandas کے نئے dataframe میں درآمد کریں۔ -1. پہلے پانچ قطاروں کو دیکھنے کے لیے `head()` فنکشن استعمال کریں۔ +1. `head()` فنکشن کا استعمال کرتے ہوئے پہلے پانچ قطاریں دیکھیں۔ ```python import pandas as pd @@ -64,30 +64,30 @@ _نوٹ بک.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 @@ _نوٹ بک.ipynb_ فائل کو ویژول اسٹوڈیو کوڈ میں کھو ``` - ✅ آپ `print(month)` کا استعمال کرتے ہوئے کسی بھی ڈیٹا کو چیک کرنے کے لیے پرنٹ کر سکتے ہیں۔ + ✅ آپ چاہیں تو `print(month)` سے کسی بھی ڈیٹا کی پڑتال کر سکتے ہیں۔ -2. اب، اپنے تبدیل شدہ ڈیٹا کو ایک نئے پینڈاز ڈیٹا فریم میں کاپی کریں: +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 بسشل' پیمائش میں فروخت ہوتے ہیں، اور کچھ '1/2 بسشل' پیمائش میں، کچھ فی کدو، کچھ فی پاؤنڈ، اور کچھ بڑے بکسوں میں مختلف چوڑائیوں کے ساتھ۔ +اگر آپ `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` dataframe بنانے والے بلاک کے بعد یہ سطریں شامل کریں: ```python new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9) @@ -134,38 +134,38 @@ _نوٹ بک.ipynb_ فائل کو ویژول اسٹوڈیو کوڈ میں کھو new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2) ``` -✅ [دی سپروس ایٹس](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://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "مشین لرننگ کے ابتدائی افراد کے لیے - میٹپلاٹ لائبریری کے ساتھ ڈیٹا کو بصری بنانا") +[![بیگنرز کے لیے ML - Matplotlib کے ساتھ ڈیٹا کی بصری نمائندگی](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "بیگنرز کے لیے ML - 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. فائل کے اوپر، پینڈاز درآمد کے تحت میٹپلاٹ درآمد کریں: +1. فائل کے اوپر، Pandas درآمد کے نیچے Matplotlib درآمد کریں: ```python import matplotlib.pyplot as plt ``` -1. پورے نوٹ بک کو دوبارہ چلائیں تاکہ تازہ کاری ہو۔ -1. نوٹ بک کے نیچے ایک سیل شامل کریں تاکہ ڈیٹا کو ایک باکس کے طور پر پلاٹ کریں: +1. پورا نوٹ بک دوبارہ چلائیں تاکہ تازہ کاری ہو جائے۔ +1. نوٹ بک کے آخر میں ایک سیل شامل کریں جو ڈیٹا کو باکس کے طور پر پلاٹ کرے: ```python price = new_pumpkins.Price @@ -174,44 +174,121 @@ _نوٹ بک.ipynb_ فائل کو ویژول اسٹوڈیو کوڈ میں کھو plt.show() ``` - ![ایک اسکیٹر پلاٹ جو قیمت اور مہینے کے تعلق کو ظاہر کرتا ہے](../../../../2-Regression/2-Data/images/scatterplot.png) + ![مہینے کے لحاظ سے قیمت ظاہر کرنے والا اسکیٹر پلاٹ](../../../../translated_images/ur/scatterplot.b6868f44cbd2051c.webp) - کیا یہ ایک مفید پلاٹ ہے؟ کیا اس کے بارے میں کچھ آپ کو حیران کرتا ہے؟ + کیا یہ مفید پلاٹ ہے؟ کیا اس میں کوئی خاص بات آپ کو حیران کرتی ہے؟ - یہ خاص طور پر مفید نہیں ہے کیونکہ یہ صرف آپ کے ڈیٹا کو ایک دیے گئے مہینے میں پوائنٹس کے پھیلاؤ کے طور پر ظاہر کرتا ہے۔ + یہ خاص طور پر مفید نہیں ہے کیونکہ یہ صرف آپ کے ڈیٹا کو مہینے میں پھیلے ہوئے نقاط کے طور پر دکھاتا ہے۔ ### اسے مفید بنائیں -چارٹس کو مفید ڈیٹا ظاہر کرنے کے لیے، آپ کو عام طور پر کسی نہ کسی طرح ڈیٹا کو گروپ کرنے کی ضرورت ہوتی ہے۔ آئیے ایک پلاٹ بنانے کی کوشش کرتے ہیں جہاں y محور مہینے دکھاتا ہے اور ڈیٹا ڈیٹا کی تقسیم کو ظاہر کرتا ہے۔ +مفید ڈیٹا دکھانے کے لیے، عام طور پر آپ کو ڈیٹا کو گروپ کرنا ہوتا ہے۔ آئیے ایک ایسا پلاٹ بناتے ہیں جہاں y محور مہینے دکھائے اور ڈیٹا تقسیم کو ظاہر کرے۔ -1. ایک گروپڈ بار چارٹ بنانے کے لیے ایک سیل شامل کریں: +1. ایک سیل شامل کریں جو گروپڈ بار چارٹ بنائے: ```python new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') plt.ylabel("Pumpkin Price") ``` - ![ایک بار چارٹ جو قیمت اور مہینے کے تعلق کو ظاہر کرتا ہے](../../../../2-Regression/2-Data/images/barchart.png) + ![مہینے کے لحاظ سے قیمت ظاہر کرنے والا بار چارٹ](../../../../translated_images/ur/barchart.a833ea9194346d76.webp) + + یہ زیادہ مفید ڈیٹا بصری نمائندگی ہے! ایسا لگتا ہے کہ کدو کی سب سے زیادہ قیمت ستمبر اور اکتوبر میں ہوتی ہے۔ کیا یہ آپ کی توقع کے مطابق ہے؟ کیوں یا کیوں نہیں؟ + +## مشق - 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 + ``` + +### تعلقات دکھانے کے لیے اسکیٹر پلاٹس + +ماڈل بنانے سے پہلے ڈیٹا کو جانچنے کا ایک بڑا حصہ یہ تلاش کرنا ہے کہ متغیرات کے درمیان کیا _تعلقات_ ہیں۔ [اسکیٹر پلاٹ](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 اسکیٹر پلاٹ جو مہینے کے حساب سے قیمت دکھاتا ہے](../../../../translated_images/ur/relplot.a03837d8f0329cec.webp) + + دیکھیں کہ آپ _کالم کے نام_ اور dataframe کو کیسے پاس کرتے ہیں، اور Seaborn آپ کے لیے محور کی لیبلز خود سنبھال لیتا ہے۔ + +2. آپ لائن پلاٹ پر بھی جا سکتے ہیں `kind="line"` پاس کر کے۔ Seaborn ایک سایہ دار بینڈ بھی بناتا ہے جو لائن کے ارد گرد اعتماد کا وقفہ دکھاتا ہے: + + ```python + sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins) + ``` + + ![Seaborn لائن پلاٹ جو مہینے کے حساب سے قیمت دکھاتا ہے](../../../../translated_images/ur/lineplot.f9034ba47b1e30ee.webp) + + یہ مخصوص ڈیٹا کافی شور والا ہے، اس لیے لائن پلاٹ سب سے واضح انتخاب نہیں ہے — لیکن یہ دکھاتا ہے کہ 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") + ``` + + ![ہر مہینے کی قیمت کی تقسیم دکھانے والا سی بورن بار چارٹ](../../../../translated_images/ur/catplot.e73fc35fdf96242b.webp) + + یہ اس بات کی تصدیق کرتا ہے جو آپ نے Matplotlib کے ساتھ دیکھا تھا — قیمتیں ستمبر اور اکتوبر کے آس پاس چوٹی پر ہوتی ہیں — لیکن Seaborn یہ بھی ظاہر کرتا ہے کہ ہر مہینے کے اندر قیمت کتنی _متغیر_ ہوتی ہے۔ + +### تعلقات دکھانے کے لیے ہیٹ میپس + +اسکیٹر پلاٹس ایک وقت میں دو متغیرات کا موازنہ کرتے ہیں۔ جب آپ کے پاس کئی عددی کالم ہوں، تو ایک [heatmap](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") + ``` + + ![عدد کالمز کے درمیان تعلقات دکھانے والا Seaborn ہیٹ میپ](../../../../translated_images/ur/heatmap.bd98dce43b404c57.webp) + + `1` (یا `-1`) کے قریب اقدار ظاہر کرتی ہیں کہ کالمز مضبوطی سے _خطی طور پر_ مربوط ہیں۔ دیکھیے `Low Price` اور `High Price` تقریباً مکمل طور پر مربوط ہیں۔ دوسری طرف، `Month` قیمت کے ساتھ ایک کمزور خطی تعلق ظاہر کرتا ہے — حالانکہ اوپر کے بار چارٹ نے ستمبر اور اکتوبر میں واضح موسمی چوٹی کو دکھایا تھا۔ یہ ایک اہم سبق ہے: تعلقاتی کوایفیشینٹ صرف _براہ راست-خط_ تعلقات کو ناپتا ہے، لہٰذا یہ موسمی یا غیر خطی پیٹرنز کو نظر انداز کر سکتا ہے۔ ✅ یہ دیکھنا کیوں مفید ہے کہ ساتھ ہی ہیٹ میپ *اور* بار چارٹ جیسے چارٹس کو دیکھیں اس سے پہلے کہ یہ فیصلہ کریں کہ کون سے کالم استعمال کرنے ہیں؟ + +### Matplotlib یا Seaborn؟ + +دونوں لائبریریاں جاننا فائدہ مند ہیں: + +- **Matplotlib** آپ کو چارٹ کے ہر عنصر پر باریک کنٹرول دیتا ہے اور تقریباً ہر دوسرے Python پلاٹنگ لائبریری کی بنیاد ہے۔ +- **Seaborn** شماریاتی چارٹس کے لیے اعلی سطحی فنکشنز اور دلکش ڈیفالٹس فراہم کرتا ہے، ڈیٹافریمز کے ساتھ براہ راست کام کرتا ہے، اور عموماً تیز ہوتا ہے استقصائی ڈیٹا تجزیے کے لیے۔ - یہ ایک زیادہ مفید ڈیٹا بصری ہے! ایسا لگتا ہے کہ کدو کی سب سے زیادہ قیمت ستمبر اور اکتوبر میں ہوتی ہے۔ کیا یہ آپ کی توقعات پر پورا اترتا ہے؟ کیوں یا کیوں نہیں؟ +ایک عام ورک فلو یہ ہے کہ تیزی سے اپنے ڈیٹا کو جانچنے کے لیے Seaborn اٹھائیں، پھر جب تفصیلات کو تخصیص کرنا ہو تو 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/ur/2-Regression/2-Data/solution/notebook.ipynb b/translations/ur/2-Regression/2-Data/solution/notebook.ipynb index 6c46a11d5..922dcf3f6 100644 --- a/translations/ur/2-Regression/2-Data/solution/notebook.ipynb +++ b/translations/ur/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/) میٹ پلوٹ لِب کے اوپر بنایا گیا ہے اور ڈیٹا فریمز کے ساتھ براہ راست کام کرتا ہے، جس سے بہت کم کوڈ کے ساتھ خوبصورت شماریاتی گراف بنانا آسان ہو جاتا ہے۔\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-29T14:58:16+00:00", - "source_file": "2-Regression/2-Data/solution/notebook.ipynb", - "language_code": "ur" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/ur/8-Reinforcement/1-QLearning/README.md b/translations/ur/8-Reinforcement/1-QLearning/README.md index c08520468..793c7c4d5 100644 --- a/translations/ur/8-Reinforcement/1-QLearning/README.md +++ b/translations/ur/8-Reinforcement/1-QLearning/README.md @@ -1,47 +1,47 @@ -# تعارف ری انفورسمنٹ لرننگ اور کیو لرننگ +# ری انفورسمنٹ لرننگ اور کیو-لرننگ کا تعارف -![مشین لرننگ میں ری انفورسمنٹ کا خلاصہ ایک خاکے میں](../../../../sketchnotes/ml-reinforcement.png) -> خاکہ: [Tomomi Imura](https://www.twitter.com/girlie_mac) +![مشین لرننگ میں ری انفورسمنٹ کا خلاصہ ایک اسکیچ نوٹ میں](../../../../translated_images/ur/ml-reinforcement.94024374d63348db.webp) +> اسکیچ نوٹ بذریعہ [ٹومومی ایمورا](https://www.twitter.com/girlie_mac) -ری انفورسمنٹ لرننگ تین اہم تصورات پر مشتمل ہے: ایجنٹ، کچھ حالتیں، اور ہر حالت کے لیے اعمال کا ایک مجموعہ۔ کسی مخصوص حالت میں عمل انجام دے کر، ایجنٹ کو انعام دیا جاتا ہے۔ ایک بار پھر کمپیوٹر گیم سپر ماریو کا تصور کریں۔ آپ ماریو ہیں، آپ ایک گیم لیول میں ہیں، اور ایک کھائی کے کنارے پر کھڑے ہیں۔ آپ کے اوپر ایک سکہ ہے۔ آپ، ماریو، ایک گیم لیول میں، ایک خاص مقام پر ... یہ آپ کی حالت ہے۔ دائیں طرف ایک قدم بڑھانا (ایک عمل) آپ کو کھائی میں لے جائے گا، اور یہ آپ کو کم عددی اسکور دے گا۔ تاہم، جمپ بٹن دبانے سے آپ کو ایک پوائنٹ ملے گا اور آپ زندہ رہیں گے۔ یہ ایک مثبت نتیجہ ہے اور اس کے لیے آپ کو ایک مثبت عددی اسکور ملنا چاہیے۔ +ری انفورسمنٹ لرننگ میں تین اہم تصورات شامل ہیں: ایجنٹ، کچھ اسٹیٹس، اور ہر اسٹیٹ کے لئے ایکشنز کا ایک مجموعہ۔ کسی مخصوص اسٹیٹ میں کسی ایکشن کو انجام دے کر، ایجنٹ کو انعام دیا جاتا ہے۔ دوبارہ کمپیوٹر گیم سپر ماریو کا تصور کریں۔ آپ ماریو ہیں، آپ ایک گیم لیول میں ہیں، ایک چٹان کے کنارے کھڑے ہیں۔ آپ کے اوپر ایک سکے ہیں۔ آپ، ماریو ہونے کے ناطے، گیم لیول میں، ایک مخصوص مقام پر ... یہ آپ کی حالت ہے۔ دائیں ایک قدم چلنا (ایکشن) آپ کو کنارے سے نیچے لے جائے گا، اور یہ آپ کو کم عددی سکور دے گا۔ لیکن اگر آپ جمپ بٹن دبائیں تو آپ ایک پوائنٹ حاصل کریں گے اور زندہ رہیں گے۔ یہ ایک مثبت نتیجہ ہے اور اس کو مثبت عددی سکور ملنا چاہئے۔ -ری انفورسمنٹ لرننگ اور ایک سمیولیٹر (گیم) کا استعمال کرتے ہوئے، آپ یہ سیکھ سکتے ہیں کہ گیم کو کیسے کھیلا جائے تاکہ انعام کو زیادہ سے زیادہ کیا جا سکے، جو کہ زندہ رہنا اور زیادہ سے زیادہ پوائنٹس حاصل کرنا ہے۔ +ری انفورسمنٹ لرننگ اور ایک سمولیٹر (گیم) استعمال کرکے، آپ سیکھ سکتے ہیں کہ گیم کیسے کھیلنا ہے تاکہ زیادہ سے زیادہ انعام حاصل کیا جا سکے جو زندہ رہنا اور زیادہ سے زیادہ پوائنٹس حاصل کرنا ہے۔ [![ری انفورسمنٹ لرننگ کا تعارف](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) -> 🎥 اوپر دی گئی تصویر پر کلک کریں تاکہ دمتری کی ری انفورسمنٹ لرننگ پر گفتگو سن سکیں۔ +> 🎥 اوپر تصویر پر کلک کریں تاکہ دمتری کو ری انفورسمنٹ لرننگ کے بارے میں بات کرتے سنا جا سکے -## [لیکچر سے پہلے کا کوئز](https://ff-quizzes.netlify.app/en/ml/) +## [پری لیکچر کوئز](https://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) ایک ایسی تکنیک ہے جو ہمیں بہت سے تجربات کرکے ایک **ایجنٹ** کا ایک بہترین رویہ سیکھنے دیتی ہے ایک خاص **ماحول** میں۔ اس ماحول میں ایجنٹ کا کچھ **مقصد** ہونا چاہئے، جو ایک **ریوارڈ فنکشن** کے ذریعے بیان کیا جاتا ہے۔ ## ماحول -سادگی کے لیے، آئیے پیٹر کی دنیا کو `width` x `height` کے سائز کے ایک مربع بورڈ کے طور پر تصور کریں، جیسے یہ: +آسانی کے لیے، آئیے پیٹر کی دنیا کو ایک مربع بورڈ سمجھیں جس کا سائز `width` x `height` ہو، جیسا کہ یہ: -![پیٹر کا ماحول](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![پیٹر کا ماحول](../../../../translated_images/ur/environment.40ba3cb66256c93f.webp) -اس بورڈ میں ہر سیل یا تو: +اس بورڈ میں ہر خانہ درج ذیل ہو سکتا ہے: -* **زمین**، جس پر پیٹر اور دیگر مخلوقات چل سکتی ہیں۔ -* **پانی**، جس پر آپ ظاہر ہے نہیں چل سکتے۔ -* ایک **درخت** یا **گھاس**، ایک جگہ جہاں آپ آرام کر سکتے ہیں۔ -* ایک **سیب**، جو پیٹر کے لیے خوشی کا باعث ہوگا۔ -* ایک **بھیڑیا**، جو خطرناک ہے اور اس سے بچنا چاہیے۔ +* **زمین**، جس پر پیٹر اور دوسری مخلوق چل سکتے ہیں۔ +* **پانی**، جس پر آپ واضح طور پر نہیں چل سکتے۔ +* ایک **درخت** یا **گھاس**، جہاں آپ آرام کر سکتے ہیں۔ +* ایک **سیب**، جو کچھ ایسا ہے جسے پیٹر خوشی خوشی تلاش کرے گا تاکہ خود کو کھلا سکے۔ +* ایک **بھیڑیا**، جو خطرناک ہے اور اجتناب کرنا چاہئے۔ -ایک علیحدہ 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 قدم ہے۔ - آپ یہ بھی دیکھ سکتے ہیں کہ بے ترتیب چال کے دوران پیٹر کی حرکت کیسی لگتی ہے: + آپ پیٹر کی حرکت بھی دیکھ سکتے ہیں رینڈم واک کے دوران: - ![پیٹر کی بے ترتیب چال](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) + ![پیٹر کی رینڈم واک](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) -## انعامی فنکشن +## ریوارڈ فنکشن -ہماری پالیسی کو زیادہ ذہین بنانے کے لیے، ہمیں یہ سمجھنے کی ضرورت ہے کہ کون سی حرکتیں دوسروں سے "بہتر" ہیں۔ ایسا کرنے کے لیے، ہمیں اپنے مقصد کی وضاحت کرنے کی ضرورت ہے۔ +اپنی پالیسی کو زیادہ ذہین بنانے کے لیے، ہمیں یہ سمجھنا ہوگا کہ کون سی حرکت "بہتر" ہے۔ اس کے لیے ہمیں اپنا مقصد تعریف کرنا ہوگا۔ -مقصد کو ایک **انعامی فنکشن** کے لحاظ سے بیان کیا جا سکتا ہے، جو ہر حالت کے لیے کچھ اسکور ویلیو واپس کرے گا۔ جتنا زیادہ نمبر ہوگا، انعامی فنکشن اتنا ہی بہتر ہوگا۔ (کوڈ بلاک 5) +مقصد کو ایک **ریوارڈ فنکشن** کی صورت میں بیان کیا جا سکتا ہے، جو ہر حالت کے لیے کچھ اسکور کی قیمت واپس کرے گا۔ جتنا نمبر زیادہ ہوگا، ریوارڈ فنکشن اتنا ہی بہتر ہوگا۔ (کوڈ بلاک 5) ```python move_reward = -0.1 @@ -154,39 +154,115 @@ def reward(m,pos=None): return move_reward ``` -انعامی فنکشنز کے بارے میں دلچسپ بات یہ ہے کہ زیادہ تر معاملات میں، *ہمیں صرف کھیل کے اختتام پر ایک اہم انعام دیا جاتا ہے*۔ اس کا مطلب یہ ہے کہ ہمارا الگورتھم کسی طرح ان "اچھی" حرکتوں کو یاد رکھے جو آخر میں مثبت انعام کی طرف لے جاتی ہیں، اور ان کی اہمیت کو بڑھائے۔ اسی طرح، وہ تمام حرکتیں جو برے نتائج کی طرف لے جاتی ہیں، ان کی حوصلہ شکنی کی جانی چاہیے۔ +ریوارڈ فنکشنز کی ایک دلچسپ بات یہ ہے کہ زیادہ تر صورتوں میں، *ہمیں صرف گیم کے آخر میں اہم انعام دیا جاتا ہے*۔ اس کا مطلب ہے کہ ہمارا الگورتھم "اچھے" قدم یاد رکھے جو کہ آخر میں مثبت انعام کی طرف لے جاتے ہیں، اور ان کی اہمیت بڑھائے۔ اسی طرح، تمام حرکتیں جو منفی نتائج کی طرف لے جائیں، انہیں مایوس کرنا چاہیے۔ -## کیو لرننگ +## کیو-لرننگ -ایک الگورتھم جس پر ہم یہاں بات کریں گے اسے **کیو لرننگ** کہا جاتا ہے۔ اس الگورتھم میں، پالیسی ایک فنکشن (یا ڈیٹا اسٹرکچر) کے ذریعے متعین کی جاتی ہے جسے **کیو ٹیبل** کہا جاتا ہے۔ یہ ہر حالت میں اعمال کی "اچھی" ہونے کی ریکارڈنگ کرتا ہے۔ +جو الگورتھم ہم یہاں بحث کریں گے اسے **کیو-لرننگ** کہا جاتا ہے۔ اس الگورتھم میں، پالیسی ایک فنکشن (یا ڈیٹا ڈھانچہ) کے ذریعے بیان کی جاتی ہے جسے **Q-Table** کہتے ہیں۔ یہ کسی دی گئی حالت میں ہر ایکشن کی "اچھی خاصیت" کو ریکارڈ کرتا ہے۔ -یہ کیو ٹیبل کہلاتا ہے کیونکہ اسے اکثر ایک ٹیبل یا کثیر جہتی صف کے طور پر پیش کرنا آسان ہوتا ہے۔ چونکہ ہمارے بورڈ کے ابعاد `width` x `height` ہیں، ہم کیو ٹیبل کو ایک numpy صف کے طور پر پیش کر سکتے ہیں جس کی شکل `width` x `height` x `len(actions)` ہے: (کوڈ بلاک 6) +اسے Q-Table اس لیے کہتے ہیں کیونکہ اسے عام طور پر ایک ٹیبل یا کثیر جہتی ارے کے طور پر ظاہر کرنا آسان ہوتا ہے۔ کیونکہ ہمارا بورڈ `width` x `height` کے ابعاد رکھتا ہے، ہم کیو ٹیبل کو numpy ارے کے ذریعے ظاہر کر سکتے ہیں جس کا سائز `width` x `height` x `len(actions)` ہو: (کوڈ بلاک 6) ```python Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions) ``` -نوٹ کریں کہ ہم کیو ٹیبل کی تمام قدروں کو برابر ویلیو سے شروع کرتے ہیں، ہمارے معاملے میں - 0.25۔ یہ "بے ترتیب چال" پالیسی کے مطابق ہے، کیونکہ ہر حالت میں تمام حرکتیں یکساں طور پر اچھی ہیں۔ ہم کیو ٹیبل کو بورڈ پر دیکھنے کے لیے `plot` فنکشن کو پاس کر سکتے ہیں: `m.plot(Q)`۔ +نوٹ کریں کہ ہم کیو ٹیبل کی تمام قدریں ایک جیسی قیمت سے شروع کرتے ہیں، ہمارے معاملے میں 0.25۔ یہ "رینڈم واک" پالیسی کے مطابق ہے، کیونکہ ہر حالت میں تمام حرکتیں برابر اچھی ہیں۔ ہم Q-Table کو `plot` فنکشن میں دے سکتے ہیں تاکہ بورڈ پر ٹیبل کو بصری شکل میں دکھایا جا سکے: `m.plot(Q)`. -![پیٹر کا ماحول](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![پیٹر کا ماحول](../../../../translated_images/ur/env_init.04e8f26d2d60089e.webp) -ہر سیل کے مرکز میں ایک "تیر" ہے جو حرکت کی ترجیحی سمت کی نشاندہی کرتا ہے۔ چونکہ تمام سمتیں برابر ہیں، ایک نقطہ دکھایا گیا ہے۔ +ہر سیل کے مرکز میں ایک "تیرأ" ہوتا ہے جو پسندیدہ سمت کی نشاندہی کرتا ہے۔ چونکہ تمام سمتیں برابر ہیں، ایک نقطہ دکھایا جاتا ہے۔ -اب ہمیں سمیولیشن چلانے، اپنے ماحول کو دریافت کرنے، اور کیو ٹیبل کی قدروں کی ایک بہتر تقسیم سیکھنے کی ضرورت ہے، جو ہمیں سیب تک پہنچنے کے لیے زیادہ تیزی سے راستہ تلاش کرنے کی اجازت دے گی۔ +اب ہمیں سمولیشن چلانی ہے، اپنے ماحول کو دریافت کرنا ہے، اور کیو ٹیبل کی قدروں کی بہتر تقسیم سیکھنی ہے، جو ہمیں سیب تک پہنچنے کے راستے کو بہت تیز تر ڈھونڈنے میں مدد دے گی۔ -## کیو لرننگ کا نچوڑ: بیل مین مساوات +## کیو-لرننگ کا جوہر: بیل مین مساوات -ایک بار جب ہم حرکت شروع کرتے ہیں، تو ہر عمل کا ایک متعلقہ انعام ہوگا، یعنی ہم نظریاتی طور پر سب سے زیادہ فوری انعام کی بنیاد پر اگلا عمل منتخب کر سکتے ہیں۔ تاہم، زیادہ تر حالات میں، حرکت ہمارے مقصد کو حاصل نہیں کرے گی، اور اس طرح ہم فوری طور پر فیصلہ نہیں کر سکتے کہ کون سی سمت بہتر ہے۔ +جب ہم حرکت شروع کرتے ہیں، ہر ایکشن کا ایک متعلقہ انعام ہوگا، یعنی ہم تھیوریٹیکل طور پر اگلے ایکشن کو فوری سب سے زیادہ انعام کی بنیاد پر منتخب کر سکتے ہیں۔ تاہم، زیادہ تر حالتوں میں، حرکت ہمارا سیب تک پہنچنے کا مقصد حاصل نہیں کرے گی، لہٰذا ہم فوراً فیصلہ نہیں کر سکتے کہ کون سی سمت بہتر ہے۔ -> یاد رکھیں کہ فوری نتیجہ اہم نہیں ہے، بلکہ حتمی نتیجہ اہم ہے، جو ہمیں سمیولیشن کے اختتام پر حاصل ہوگا۔ +> یاد رکھیں کہ فوری نتیجہ اہم نہیں، بلکہ حتمی نتیجہ ہے جو ہم سمولیشن کے آخر میں حاصل کریں گے۔ -تاخیر شدہ انعام کو مدنظر رکھنے کے لیے، ہمیں **[ڈائنامک پروگرامنگ](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)* ملے گا، جو ریوارڈ فنکشن سے متعین ہوتا ہے، نیز کچھ مستقبل کا انعام بھی۔ اگر ہم فرض کریں کہ ہمارا Q-Table ہر ایکشن کی "دلکشی" کو صحیح طریقے سے ظاہر کرتا ہے، تو حالت *s'* پر ہم ایکشن *a* منتخب کریں گے جو زیادہ سے زیادہ *Q(s',a')* کی قیمت دیتا ہے۔ یوں، حالت *s* پر ممکنہ بہترین مستقبل کا انعام `max`a'*Q(s',a')* ہوگا (یہاں زیادہ سے زیادہ تمام ممکنہ ایکشنز *a'* پر حساب کی جاتی ہے جو حالت *s'* میں ہوسکتے ہیں)۔ + +یہ Q-Table کی قیمت کو حالت *s* اور ایکشن *a* کے لیے حساب کرنے کا **بیل مین فارمولہ** دیتا ہے: + + + +یہاں γ وہ **ڈسکاؤنٹ فیکٹر** ہے جو یہ طے کرتا ہے کہ آپ کو موجودہ انعام کو مستقبل کے انعام کے مقابلے میں کتنا اہمیت دینی چاہیے اور بالعکس۔ + +## لرننگ الگورتھم + +مذکورہ مساوات کی بنیاد پر، ہم اب اپنے سیکھنے والے الگورتھم کے لیے جعلی کوڈ لکھ سکتے ہیں: + +* 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 میں ایکشن کیسے منتخب کرنا ہے۔ اگر ہم ایکشن اتفاقی طور پر منتخب کریں تو ہم ماحول کو اتفاقی طور پر **تلاش** کر رہے ہوں گے، اور بہت ممکن ہے کہ ہم اکثر مر جائیں اور ایسی جگہوں کی تلاش کریں جہاں عام طور پر نہیں جاتے۔ دوسرا طریقہ یہ ہوگا کہ ہم پہلے سے معلوم شدہ کیو ٹیبل کی قدروں کو **استحصال** کریں، اور اس طرح حال *s* پر سب سے بہترین ایکشن منتخب کریں (جو کیو ٹیبل کی زیادہ قدر رکھتا ہو)۔ لیکن یہ ہمیں دوسری ریاستوں کی تلاش سے روکے گا، اور ہمیں ممکنہ طور پر بہترین حل نہ مل سکے گا۔ + +اسی لیے، بہترین طریقہ دریافت اور استحصال کے درمیان توازن قائم کرنا ہے۔ یہ کیا جا سکتا ہے اس طرح کہ حالت *s* پر ایکشن کو 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 + ``` + + ہم اصل ویکٹر میں کچھ `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) +چونکہ 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 کے لحاظ سے، جس صورت میں ایجنٹ ان حالتوں کے درمیان غیر معینہ مدت تک حرکت کرتا رہتا ہے۔ + +> اگر آپ اوپر دیا گیا کوڈ کئی بار آزمائیں تو آپ نوٹس کر سکتے ہیں کہ کبھی کبھار یہ "فریز" ہو جاتا ہے، اور آپ کو اسے روکنے کے لیے نوٹ بک میں STOP بٹن دبانا پڑتا ہے۔ ایسا اس لیے ہوتا ہے کیونکہ بعض اوقات دو ریاستیں آپس میں Q-Value کے اعتبار سے "ایک دوسرے کی طرف اشارہ" کر رہی ہوتی ہیں، جس صورت میں ایجنٹ ان ریاستوں کے درمیان لا محدود حرکت کرتا رہتا ہے۔ ## 🚀چیلنج -> **ٹاسک 1:** `walk` فنکشن میں ترمیم کریں تاکہ راستے کی زیادہ سے زیادہ لمبائی کو ایک خاص تعداد کے قدموں (مثلاً 100) تک محدود کیا جا سکے، اور اوپر دیا گیا کوڈ وقتاً فوقتاً یہ قدر واپس کرے۔ +> **ٹاسک 1:** `walk` فنکشن کو اس طرح تبدیل کریں کہ راستے کی زیادہ سے زیادہ لمبائی کو کسی مخصوص قدموں کی تعداد (مثلاً 100) تک محدود کرے، اور اوپر دیا گیا کوڈ وقتاً فوقتاً اس قدر کو واپس لوٹے۔ -> **ٹاسک 2:** `walk` فنکشن میں ترمیم کریں تاکہ وہ ان جگہوں پر واپس نہ جائے جہاں وہ پہلے جا چکا ہو۔ یہ `walk` کو لوپنگ سے روک دے گا، تاہم، ایجنٹ پھر بھی ایسی جگہ پر "پھنس" سکتا ہے جہاں سے وہ باہر نکلنے کے قابل نہ ہو۔ +> **ٹاسک 2:** `walk` فنکشن کو اس طرح تبدیل کریں کہ یہ اُن جگہوں پر واپس نہ جائے جہاں یہ پہلے ہی جا چکا ہو۔ اس سے `walk` کے لوپ میں پھنسنے سے بچاؤ ہوگا، تاہم، ایجنٹ پھر بھی کسی ایسی جگہ پھنس سکتا ہے جہاں سے نکلنا ممکن نہ ہو۔ ## نیویگیشن -ایک بہتر نیویگیشن پالیسی وہ ہوگی جو ہم نے تربیت کے دوران استعمال کی تھی، جو استحصال اور دریافت کو یکجا کرتی ہے۔ اس پالیسی میں، ہم ہر عمل کو ایک خاص احتمال کے ساتھ منتخب کریں گے، جو Q-Table میں موجود قدروں کے تناسب سے ہوگا۔ یہ حکمت عملی ایجنٹ کو پہلے سے دریافت شدہ مقام پر واپس جانے کا نتیجہ دے سکتی ہے، لیکن جیسا کہ آپ نیچے دیے گئے کوڈ سے دیکھ سکتے ہیں، یہ مطلوبہ مقام تک بہت مختصر اوسط راستہ فراہم کرتی ہے (یاد رکھیں کہ `print_statistics` 100 بار سیمولیشن چلاتا ہے): (کوڈ بلاک 10) +ایک بہتر نیویگیشن پالیسی وہ ہوگی جو ہم نے تربیت کے دوران استعمال کی، جو exploitation اور exploration کو یکجا کرتی ہے۔ اس پالیسی میں، ہم ہر عمل کو مخصوص احتمال کے ساتھ منتخب کریں گے، جو Q-Table میں موجود قدروں کے متناسب ہو۔ اس حکمت عملی کے باوجود ایجنٹ اکثر اپنی پہلے کی دریافت کی ہوئی جگہوں پر واپس آ سکتا ہے، لیکن جیسا کہ نیچے کوڈ سے آپ دیکھ سکتے ہیں، یہ مطلوبہ مقام تک بہت کم اوسط راستہ فراہم کرتی ہے (یاد رہے کہ `print_statistics` 100 بار سمولیشن چلاتا ہے): (کوڈ بلاک 10) ```python def qpolicy(m): @@ -220,28 +297,32 @@ def qpolicy(m): print_statistics(qpolicy) ``` -اس کوڈ کو چلانے کے بعد، آپ کو پہلے کے مقابلے میں بہت چھوٹا اوسط راستہ ملنا چاہیے، جو 3-6 کی حد میں ہوگا۔ +اس کوڈ کو چلانے کے بعد، آپ کو پہلے کے مقابلے میں کہیں کم اوسط راستہ ملے گا، تقریباً 3-6 قدموں کے درمیان۔ + +## سیکھنے کے عمل کی تحقیقات -## سیکھنے کے عمل کی تحقیق +جیسا کہ ہم نے ذکر کیا ہے، سیکھنے کا عمل exploration اور حاصل کردہ معلومات کی exploitation کے درمیان توازن ہے۔ ہم نے دیکھا ہے کہ سیکھنے کے نتائج (ایجنٹ کو مقصد تک مختصر راستہ تلاش کرنے کی صلاحیت) میں بہتری آئی ہے، لیکن یہ دیکھنا بھی دلچسپ ہے کہ سیکھنے کے دوران اوسط راستے کی لمبائی کیسے برتاؤ کرتی ہے: -جیسا کہ ہم نے ذکر کیا، سیکھنے کا عمل دریافت اور مسئلے کی جگہ کے ڈھانچے کے بارے میں حاصل کردہ علم کے استحصال کے درمیان توازن ہے۔ ہم نے دیکھا کہ سیکھنے کے نتائج (ایجنٹ کو ہدف تک مختصر راستہ تلاش کرنے کی صلاحیت) بہتر ہوئے ہیں، لیکن یہ بھی دلچسپ ہے کہ سیکھنے کے عمل کے دوران اوسط راستے کی لمبائی کیسے تبدیل ہوتی ہے: + -## سیکھنے کے خلاصے +سیکھنے کو یوں سمری کیا جا سکتا ہے: -- **اوسط راستے کی لمبائی بڑھتی ہے**۔ شروع میں، اوسط راستے کی لمبائی بڑھتی ہے۔ اس کی وجہ یہ ہے کہ جب ہمیں ماحول کے بارے میں کچھ معلوم نہیں ہوتا، تو ہم ممکنہ طور پر خراب حالتوں، پانی یا بھیڑیے میں پھنس جاتے ہیں۔ جیسے جیسے ہم زیادہ سیکھتے ہیں اور اس علم کو استعمال کرتے ہیں، ہم ماحول کو زیادہ دیر تک دریافت کر سکتے ہیں، لیکن ہمیں ابھی بھی سیبوں کے مقام کا اچھی طرح علم نہیں ہوتا۔ +- **اوسط راستے کی لمبائی بڑھتی ہے۔** یہاں ہم دیکھتے ہیں کہ ابتدا میں اوسط راستے کی لمبائی بڑھتی ہے۔ یہ اس لیے ہو سکتا ہے کیونکہ جب ہمیں ماحول کے بارے میں کچھ معلوم نہیں ہوتا، تو ہم اکثر خراب حالتوں، پانی یا بھیڑیا میں پھنس جاتے ہیں۔ جیسے جیسے ہم زیادہ سیکھتے ہیں اور اس معلومات کو استعمال کرنا شروع کرتے ہیں، ہم طویل وقت تک ماحول کی سیر کر سکتے ہیں، لیکن ہمیں اب بھی سیبوں کی جگہ کا مکمل علم نہیں ہوتا۔ -- **راستے کی لمبائی کم ہوتی ہے، جیسے جیسے ہم زیادہ سیکھتے ہیں**۔ جب ہم کافی سیکھ لیتے ہیں، تو ایجنٹ کے لیے ہدف حاصل کرنا آسان ہو جاتا ہے، اور راستے کی لمبائی کم ہونے لگتی ہے۔ تاہم، ہم ابھی بھی دریافت کے لیے کھلے ہیں، اس لیے ہم اکثر بہترین راستے سے ہٹ جاتے ہیں اور نئے اختیارات دریافت کرتے ہیں، جس سے راستہ مثالی سے زیادہ لمبا ہو جاتا ہے۔ +- **جیسے جیسے ہم زیادہ سیکھتے ہیں، راستے کی لمبائی کم ہوتی ہے۔** جب ہم کافی سیکھ لیتے ہیں، تو ایجنٹ کے لیے مقصد حاصل کرنا آسان ہو جاتا ہے، اور راستے کی لمبائی گھٹنا شروع ہو جاتی ہے۔ البتہ، ہم اب بھی exploration کے لیے کھلے ہیں، اس لیے ہم اکثر بہترین راستے سے ہٹ کر نئی راہیں دریافت کرتے ہیں، جس سے راستہ مثالی سے لمبا ہو جاتا ہے۔ -- **لمبائی اچانک بڑھتی ہے**۔ ہم اس گراف پر یہ بھی دیکھتے ہیں کہ کسی وقت، لمبائی اچانک بڑھ گئی۔ یہ عمل کی غیر یقینی نوعیت کو ظاہر کرتا ہے، اور یہ کہ ہم کسی وقت Q-Table کے coefficients کو نئے قدروں سے اووررائٹ کر کے "خراب" کر سکتے ہیں۔ اس کو کم سے کم کرنے کے لیے، سیکھنے کی شرح کو کم کرنا ضروری ہے (مثال کے طور پر، تربیت کے آخر میں، ہم Q-Table کی قدروں کو صرف ایک چھوٹے قدر سے ایڈجسٹ کرتے ہیں)۔ +- **لمبائی اچانک بڑھ جاتی ہے۔** اس گراف میں ہم یہ بھی دیکھتے ہیں کہ ایک موقع پر لمبائی اچانک بڑھ گئی۔ یہ عمل کی تصادفی نوعیت کو ظاہر کرتا ہے، اور یہ کہ ہم کسی وقت Q-Table کے کوایفیشینٹس کو نئے قدروں سے اووررائٹ کر کے "خراب" کر سکتے ہیں۔ یہ مثالی طور پر لرننگ ریٹ کو کم کر کے کم کیا جانا چاہیے (مثلاً، تربیت کے آخر میں ہم Q-Table کی قدروں کو صرف معمولی مقدار سے ایڈجسٹ کرتے ہیں)۔ -مجموعی طور پر، یہ یاد رکھنا ضروری ہے کہ سیکھنے کے عمل کی کامیابی اور معیار کا انحصار پیرامیٹرز پر ہوتا ہے، جیسے سیکھنے کی شرح، سیکھنے کی شرح میں کمی، اور ڈسکاؤنٹ فیکٹر۔ ان کو اکثر **ہائپرپیرامیٹرز** کہا جاتا ہے، تاکہ انہیں **پیرامیٹرز** سے الگ کیا جا سکے، جنہیں ہم تربیت کے دوران بہتر بناتے ہیں (مثال کے طور پر، Q-Table coefficients)۔ بہترین ہائپرپیرامیٹر قدروں کو تلاش کرنے کے عمل کو **ہائپرپیرامیٹر آپٹیمائزیشن** کہا جاتا ہے، اور یہ ایک الگ موضوع کا مستحق ہے۔ +مجموعی طور پر، یہ یاد رکھنا ضروری ہے کہ سیکھنے کے عمل کی کامیابی اور معیار کا انحصار خاص طور پر ایسے پیرامیٹرز پر ہوتا ہے، جیسے لرننگ ریٹ، لرننگ ریٹ کی کمی، اور ڈسکاؤنٹ فیکٹر۔ انہیں اکثر **ہائپرپیرامیٹرز** کہا جاتا ہے، تاکہ انہیں **پیرامیٹرز** سے الگ کیا جا سکے جنہیں ہم تربیت کے دوران بہتر بناتے ہیں (جیسے، Q-Table کے کوایفیشینٹس)۔ بہترین ہائپرپیرامیٹر ویلیوز تلاش کرنے کے عمل کو **ہائپرپیرامیٹر آپٹیمائزیشن** کہا جاتا ہے، اور یہ ایک الگ موضوع کا مستحق ہے۔ ## [لیکچر کے بعد کا کوئز](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/ur/8-Reinforcement/2-Gym/README.md b/translations/ur/8-Reinforcement/2-Gym/README.md index 731b2369d..833c79bf2 100644 --- a/translations/ur/8-Reinforcement/2-Gym/README.md +++ b/translations/ur/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-لرننگ استعمال کرتے ہوئے۔ + +![عظیم فرار!](../../../../translated_images/ur/escape.18862db9930337e3.webp) + +> پیٹر اور اس کے دوست بھیڑیا سے بچنے کے لیے تخلیقی حل نکالتے ہیں! تصویر از [جین لوپر](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/) نے بنایا ہے۔ اس جم کا استعمال کرتے ہوئے ہم مختلف **ماحول** بنا سکتے ہیں، جیسے کہ کارٹ پول سیمولیشن یا اٹاری گیمز۔ +پچھلے سبق میں، کھیل کے قواعد اور حالت `Board` کلاس کے ذریعے دی گئی تھی جو ہم نے خود بنائی تھی۔ یہاں ہم ایک خاص **سمولیشن ماحول** استعمال کریں گے، جو کھمبے کے توازن کے پیچھے طبیعیات کی نقل کرے گا۔ تربیتی تقویتی سیکھنے کے الگورتھمز کے لیے ایک مقبول سمولیشن ماحول کو [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,15 +40,15 @@ import numpy as np 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() @@ -54,9 +74,9 @@ import random آپ کو کچھ اس طرح کی تصویر نظر آنی چاہیے: - ![غیر متوازن کارٹ پول](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) + ![بے توازن کارٹپول](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) -1. سیمولیشن کے دوران، ہمیں مشاہدات حاصل کرنے کی ضرورت ہوتی ہے تاکہ فیصلہ کیا جا سکے کہ کیا کرنا ہے۔ درحقیقت، `step` فنکشن موجودہ مشاہدات، ایک انعامی فنکشن، اور `done` فلیگ واپس کرتا ہے جو یہ ظاہر کرتا ہے کہ آیا سیمولیشن جاری رکھنا مناسب ہے یا نہیں: (کوڈ بلاک 4) +1. سمولیشن کے دوران، ہمیں مشاہدات لینے کی ضرورت ہے تاکہ عمل کرنے کا فیصلہ کیا جا سکے۔ حقیقت میں، قدم کا فعل موجودہ مشاہدات، انعامی فعل، اور "ہو گیا" جھنڈا واپس کرتا ہے جو بتاتا ہے کہ آیا سمولیشن جاری رکھنا معنی رکھتا ہے یا نہیں: (کوڈ بلاک 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-Table بنانا ہوتا ہے جو یہ بیان کرتا ہے کہ ہر حالت میں کیا کرنا ہے۔ ایسا کرنے کے لیے، ہمیں حالت کو **غیر مسلسل** بنانا ہوتا ہے، زیادہ درست طور پر، اس میں غیر مسلسل اقدار کی محدود تعداد ہونی چاہیے۔ لہذا، ہمیں کسی طرح اپنے مشاہدات کو **تقسیم** کرنا ہوگا، انہیں محدود حالتوں کے سیٹ میں نقشہ بنانا ہوگا۔ +Q-لرننگ میں، ہمیں Q-Table بنانا ہوتا ہے جو بتاتی ہے کہ ہر حالت میں کیا کرنا ہے۔ ایسا کرنے کے لیے، ہمیں حالت کو **معین** ہونا چاہیے، یعنی اس میں محدود تعداد میں معین اقدار ہونی چاہئیں۔ لہٰذا، ہمیں کسی نہ کسی طرح اپنے مشاہدات کو **معین** بنانا ہوگا، تاکہ وہ ایک محدود سیٹ کی حالتوں میں نقش ہو جائیں۔ اس کے لیے چند طریقے ہیں: -- **حصوں میں تقسیم کریں**۔ اگر ہمیں کسی خاص قدر کے وقفے کا علم ہو، تو ہم اس وقفے کو کئی **حصوں** میں تقسیم کر سکتے ہیں، اور پھر قدر کو اس حصے کے نمبر سے بدل سکتے ہیں جس سے یہ تعلق رکھتی ہے۔ یہ 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) میں لایا جا سکے، اور پھر اعداد کو گول کر کے integers میں تبدیل کریں۔ یہ حالت کے سائز پر کم کنٹرول دیتا ہے، خاص طور پر اگر ہمیں ان پٹ اقدار کی صحیح رینجز معلوم نہ ہوں۔ مثال کے طور پر، ہمارے کیس میں 4 میں سے 2 اقدار کی بالائی یا نچلی حدود مقرر نہیں ہیں، جس کی وجہ سے ممکنہ حالتیں لامحدود ہو سکتی ہیں۔ -✅ ہم لکیری انٹرپولیشن استعمال کر سکتے ہیں تاکہ اقدار کو کسی محدود وقفے (مثلاً -20 سے 20 تک) میں لایا جا سکے، اور پھر نمبروں کو گول کر کے انٹیجرز میں تبدیل کر سکتے ہیں۔ اس سے حالت کے سائز پر تھوڑا کم کنٹرول ملتا ہے، خاص طور پر اگر ہمیں ان پٹ اقدار کی بالکل حد معلوم نہ ہو۔ مثال کے طور پر، ہمارے معاملے میں 4 میں سے 2 اقدار کی اوپر/نیچے کی حد نہیں ہے، جو حالتوں کی لامحدود تعداد کا نتیجہ دے سکتی ہے۔ +ہمارے مثال میں، ہم دوسرا طریقہ منتخب کریں گے۔ جیسا کہ آپ بعد میں دیکھیں گے، باوجود نامعلوم بالائی/نچلی حدوں کے، وہ قیمتیں عام طور پر مخصوص محدود وقفوں سے باہر نہیں جاتیں، لہٰذا انتہائی قیمتوں والی حالتیں بہت کم ہوں گی۔ -ہمارے مثال میں، ہم دوسرے طریقے کے ساتھ جائیں گے۔ جیسا کہ آپ بعد میں نوٹ کریں گے، غیر متعین اوپر/نیچے کی حدود کے باوجود، وہ اقدار شاذ و نادر ہی کچھ محدود وقفوں سے باہر جاتی ہیں، لہذا وہ حالتیں جن کی انتہائی اقدار ہوں گی بہت کم ہوں گی۔ - -1. یہاں وہ فنکشن ہے جو ہمارے ماڈل سے مشاہدہ لے گا اور 4 انٹیجر اقدار کے ایک جوڑے تیار کرے گا: (کوڈ بلاک 6) +1. یہاں وہ فعل ہے جو ہمارے ماڈل سے مشاہدات لے کر 4 عددی integer قیمتوں کا جوڑا بنائے گا: (کوڈ بلاک 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 @@ 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() 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` سے شروع ہونے والی لائن کو uncomment کریں۔ ورنہ آپ اسے پس منظر میں چلا سکتے ہیں، جو تیز تر ہے۔ ہم اپنے Q-لرننگ کے عمل کے دوران اس "غیر مرئی" عمل درآمد کو استعمال کریں گے۔ ## Q-Table کی ساخت -پچھلے سبق میں، حالت ایک سادہ جوڑے پر مشتمل تھی جس میں 0 سے 8 تک کے نمبر تھے، اور اس لیے Q-Table کو numpy tensor کے ذریعے 8x8x2 کی شکل میں ظاہر کرنا آسان تھا۔ اگر ہم حصوں کی تقسیم استعمال کریں، تو ہمارے حالت ویکٹر کا سائز بھی معلوم ہے، لہذا ہم وہی طریقہ استعمال کر سکتے ہیں اور حالت کو 20x20x10x10x2 کی شکل کے ایک صف کے ذریعے ظاہر کر سکتے ہیں (یہاں 2 عمل کی جگہ کا طول و عرض ہے، اور پہلی طول و عرض مشاہدہ کی جگہ میں ہر پیرامیٹر کے لیے منتخب کردہ حصوں کی تعداد سے مطابقت رکھتی ہے)۔ +پچھلے سبق میں، حالت 0 سے 8 تک کے آسان جوڑے کی صورت میں تھی، لہٰذا numpy ٹینسر کا استعمال کرتے ہوئے Q-Table کو 8x8x2 کی شکل میں ظاہر کرنا آسان تھا۔ اگر ہم بنز کے ذریعے تقسیم استعمال کریں تو ہمارے حالت ویکٹر کا سائز بھی معلوم ہوتا ہے، لہٰذا ہم اسی طریقہ کو استعمال کر کے حالت کو 20x20x10x10x2 کی شکل میں پیش کر سکتے ہیں (یہاں 2 عمل کی جگہ کی جہت ہے، اور پہلی جہتیں مشاہدہ کی جگہ کے ہر پیرامیٹر کے لیے منتخب کردہ بنز کی تعداد کو ظاہر کرتی ہیں)۔ -تاہم، بعض اوقات مشاہدہ کی جگہ کے درست طول و عرض معلوم نہیں ہوتے۔ `discretize` فنکشن کے معاملے میں، ہم کبھی بھی یقین سے نہیں کہہ سکتے کہ ہماری حالت کچھ حدود کے اندر رہتی ہے، کیونکہ کچھ اصل اقدار محدود نہیں ہیں۔ لہذا، ہم تھوڑا مختلف طریقہ استعمال کریں گے اور Q-Table کو ایک ڈکشنری کے ذریعے ظاہر کریں گے۔ +تاہم، کبھی کبھار مشاہدہ کی جگہ کی درست جہتیں معلوم نہیں ہوتیں۔ `discretize` فعل کی صورت میں، ہم کبھی یقین نہیں کر سکتے کہ ہمارا حالت مخصوص حدود میں رہے گا، کیونکہ کچھ اصل قدرین آزاد ہوتی ہیں۔ لہٰذا، ہم تھوڑا مختلف طریقہ استعمال کریں گے اور Q-Table کو ایک لغت (dictionary) سے ظاہر کریں گے۔ -1. جوڑے *(state,action)* کو ڈکشنری کی کلید کے طور پر استعمال کریں، اور قدر Q-Table کے اندراج کی قدر سے مطابقت رکھے گی۔ (کوڈ بلاک 9) +1. جوڑا *(state, action)* لغت کی کنجی کے طور پر استعمال کریں، اور قیمت Q-Table کی اندراج کی قیمت ہوگی۔ (کوڈ بلاک 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-Table کی ایک فہرست واپس کرتا ہے۔ اگر Q-Table میں اندراج موجود نہ ہو، تو ہم ڈیفالٹ طور پر 0 واپس کریں گے۔ -## آئیے Q-Learning شروع کریں +## آئیے Q-لرننگ شروع کریں -اب ہم پیٹر کو بیلنس کرنا سکھانے کے لیے تیار ہیں! +اب ہم پیٹر کو توازن قائم رکھنا سکھانے کے لیے تیار ہیں! -1. سب سے پہلے، کچھ ہائپر پیرامیٹرز سیٹ کریں: (کوڈ بلاک 10) +1. سب سے پہلے، چند ہائپر پیرامیٹرز سیٹ کریں: (کوڈ بلاک 10) ```python - # hyperparameters + # ہائپر پیرا میٹرز alpha = 0.3 gamma = 0.9 epsilon = 0.90 ``` - یہاں، `alpha` **لرننگ ریٹ** ہے جو یہ بیان کرتا ہے کہ ہمیں Q-Table کی موجودہ اقدار کو ہر قدم پر کس حد تک ایڈجسٹ کرنا چاہیے۔ پچھلے سبق میں ہم نے 1 سے شروع کیا، اور پھر تربیت کے دوران `alpha` کو کم اقدار پر لے گئے۔ اس مثال میں ہم اسے سادگی کے لیے مستقل رکھیں گے، اور آپ بعد میں `alpha` اقدار کو ایڈجسٹ کرنے کے ساتھ تجربہ کر سکتے ہیں۔ + یہاں، `alpha` **سیکھنے کی شرح** ہے جو بتاتی ہے کہ ہر قدم پر Q-Table کی موجودہ قدروں کو کس حد تک ایڈجسٹ کرنا چاہیے۔ پچھلے سبق میں ہم نے 1 سے شروع کیا، پھر تربیت کے دوران `alpha` کو کم کیا۔ اس مثال میں ہم اسے آسانی کے لیے مستقل رکھیں گے، اور آپ بعد میں `alpha` کی قدروں کو ایڈجسٹ کرنے پر تجربہ کر سکتے ہیں۔ - `gamma` **ڈسکاؤنٹ فیکٹر** ہے جو یہ ظاہر کرتا ہے کہ ہمیں موجودہ انعام کے مقابلے میں مستقبل کے انعام کو کس حد تک ترجیح دینی چاہیے۔ + `gamma` **رعایتی عنصر** ہے جو دکھاتا ہے کہ ہمیں مستقبل کے انعام کو موجودہ انعام پر کس حد تک ترجیح دینی چاہیے۔ - `epsilon` **ایکسپلوریشن/ایکسپلائیٹیشن فیکٹر** ہے جو یہ طے کرتا ہے کہ ہمیں ایکسپلوریشن کو ایکسپلائیٹیشن پر ترجیح دینی چاہیے یا اس کے برعکس۔ ہمارے الگورتھم میں، ہم `epsilon` فیصد معاملات میں اگلا عمل Q-Table کی اقدار کے مطابق منتخب کریں گے، اور باقی معاملات میں ہم ایک تصادفی عمل انجام دیں گے۔ یہ ہمیں تلاش کی جگہ کے ان علاقوں کو دریافت کرنے کی اجازت دے گا جنہیں ہم نے پہلے کبھی نہیں دیکھا۔ + `epsilon` **تجربہ/استعمال کا عنصر** ہے جو تعین کرتا ہے کہ ہمیں تجربہ (انویسٹیگیشن) پر ترجیح دینی چاہیے یا استعمال (exploitation) پر۔ ہمارے الگورتھم میں، ہم `epsilon` فیصد مواقع پر Q-Table کی قدروں کے مطابق اگلا عمل منتخب کریں گے، اور باقی مواقع پر ایک اتفاقی عمل انجام دیں گے۔ یہ ہمیں تلاش کے اس جگہ کو دریافت کرنے کی اجازت دے گا جو پہلے کبھی نہیں دیکھا گیا۔ - ✅ بیلنسنگ کے لحاظ سے - تصادفی عمل کا انتخاب (ایکسپلوریشن) غلط سمت میں ایک تصادفی دھکا کے طور پر کام کرے گا، اور پول کو ان "غلطیوں" سے بیلنس بحال کرنا سیکھنا ہوگا۔ + ✅ توازن برقرار رکھنے کے لحاظ سے - اتفاقی عمل کا انتخاب (تجربہ) ایک غلط سمت میں اتفاقی دھکا کی طرح ہوگا، اور کھمبے کو ان "غلطیوں" سے توازن برقرار رکھنا سیکھنا پڑے گا۔ ### الگورتھم کو بہتر بنائیں ہم اپنے پچھلے سبق کے الگورتھم میں دو بہتریاں بھی کر سکتے ہیں: -- **اوسط مجموعی انعام کا حساب لگائیں**، کئی سیمولیشنز پر۔ ہم ہر 5000 تکرار پر پیش رفت پرنٹ کریں گے، اور ہم اس وقت کے دوران اپنے مجموعی انعام کو اوسط کریں گے۔ اس کا مطلب ہے کہ اگر ہمیں 195 سے زیادہ پوائنٹس ملتے ہیں - ہم مسئلے کو حل شدہ سمجھ سکتے ہیں، مطلوبہ معیار سے بھی زیادہ معیار کے ساتھ۔ - -- **زیادہ سے زیادہ اوسط مجموعی نتیجہ کا حساب لگائیں**، `Qmax`، اور ہم اس نتیجے سے مطابقت رکھنے والے Q-Table کو محفوظ کریں گے۔ جب آپ تربیت چلائیں گے تو آپ نوٹ کریں گے کہ کبھی کبھی اوسط مجموعی نتیجہ کم ہونا شروع ہو جاتا ہے، اور ہم تربیت کے دوران مشاہدہ کیے گئے بہترین ماڈل سے مطابقت رکھنے والے Q-Table کی اقدار کو محفوظ رکھنا چاہتے ہیں۔ +- **اوسط مجموعی انعام** کا حساب لگائیں، کئی سمولیشنز پر۔ ہم ہر 5000 دورانیوں پر پیش رفت پرنٹ کریں گے، اور اس مدت کے دوران اپنے مجموعی انعام کا اوسط نکالیں گے۔ اس کا مطلب ہے کہ اگر ہمیں 195 پوائنٹس سے زیادہ مل جائیں تو ہم مسئلہ کو حل شدہ سمجھ سکتے ہیں، یہاں تک کہ مطلوبہ معیار سے بھی بہتر۔ + +- **زیادہ سے زیادہ اوسط مجموعی نتیجہ** `Qmax` کا حساب لگائیں، اور ہم اس نتیجہ سے متعلق Q-Table کو محفوظ کریں گے۔ جب آپ تربیت چلائیں گے، تو آپ دیکھیں گے کہ کچھ وقتوں میں اوسط مجموعی نتیجہ کم ہونا شروع ہو جاتا ہے، اور ہم Q-Table کی ایسی قدریں رکھنا چاہتے ہیں جو تربیت کے دوران بہترین ماڈل کے متعلق ہوں۔ -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-Table میں پہلے سے سیکھے ہوئے اقدار کو ان قدروں سے "تباہ" کر سکتے ہیں جو صورت حال کو خراب کر دیں۔ -- **انعام کم ہونا شروع ہوتا ہے**۔ کبھی کبھی انعام کم ہونا شروع ہو جاتا ہے، جس کا مطلب ہے کہ ہم Q-Table میں پہلے سے سیکھے گئے اقدار کو ان اقدار کے ساتھ "تباہ" کر سکتے ہیں جو صورتحال کو خراب کرتے ہیں۔ +یہ مشاہدہ تربیتی پیش رفت کا گراف بنانا زیادہ واضح کر دیتا ہے۔ -یہ مشاہدہ زیادہ واضح طور پر نظر آتا ہے اگر ہم تربیت کی پیش رفت کا گراف بنائیں۔ +## تربیتی پیش رفت کا گراف -## تربیت کی پیش رفت کا گراف بنانا - -تربیت کے دوران، ہم نے ہر تکرار پر مجموعی انعام کی قدر کو `rewards` ویکٹر میں جمع کیا۔ یہاں یہ گراف ہے جب ہم اسے تکرار نمبر کے خلاف بناتے ہیں: +تربیت کے دوران، ہم نے ہر چکر میں مجموعی انعام کی مقدار `rewards` ویکٹر میں جمع کی ہے۔ یہ گراف ہے جب ہم اسے چکر نمبر کے خلاف پیش کریں: ```python plt.plot(rewards) ``` -![خام پیش رفت](../../../../8-Reinforcement/2-Gym/images/train_progress_raw.png) +![خام پیش رفت](../../../../translated_images/ur/train_progress_raw.2adfdf2daea09c59.webp) -اس گراف سے کچھ بھی کہنا ممکن نہیں ہے، کیونکہ اسٹاکاسٹک تربیتی عمل کی نوعیت کی وجہ سے تربیتی سیشنز کی لمبائی بہت مختلف ہوتی ہے۔ اس گراف کو زیادہ معنی دینے کے لیے، ہم تجربات کی ایک سیریز پر **چلتی اوسط** کا حساب لگا سکتے ہیں، مثلاً 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)) ``` -![تربیت کی پیش رفت](../../../../8-Reinforcement/2-Gym/images/train_progress_runav.png) +![تربیتی پیش رفت](../../../../translated_images/ur/train_progress_runav.c71694a8fa9ab359.webp) ## ہائپر پیرامیٹرز میں تبدیلی -تربیت کو زیادہ مستحکم بنانے کے لیے، تربیت کے دوران ہمارے کچھ ہائپر پیرامیٹرز کو ایڈجسٹ کرنا سمجھ میں آتا ہے۔ خاص طور پر: +سیکھنے کو زیادہ مستحکم بنانے کے لیے، تربیت کے دوران اپنے کچھ ہائپر پیرامیٹرز کو ایڈجسٹ کرنا منطقی ہے۔ خاص طور پر: + +- **سیکھنے کی شرح** `alpha` کے لیے، ہم ممکنہ طور پر ابتدائی طور پر 1 کے قریب قابلِ قدر لے سکتے ہیں، اور پھر اس پیرامیٹر کو کم کرتے جائیں۔ وقت کے ساتھ، Q-Table میں ہمیں اچھے احتمال کی قدریں ملیں گی، اس لیے ہمیں انہیں تھوڑا سا ایڈجسٹ کرنا چاہیے، مکمل طور پر نئی قدروں سے تبدیل نہیں کرنا چاہیے۔ + +- **epsilon بڑھائیں**۔ ہم آہستہ آہستہ `epsilon` کو بڑھانا چاہیں گے تاکہ تحقیق کم اور استعمال زیادہ ہو۔ احتمال ہے کہ ہمیں `epsilon` کی کم قیمت سے شروع کر کے تقریباً 1 تک لے جانا چاہیے۔ + +> **ٹاسک 1**: ہائپر پیرامیٹرز کی قدروں کے ساتھ تجربہ کریں اور دیکھیں کیا آپ زیادہ مجموعی انعام حاصل کر سکتے ہیں۔ کیا آپ 195 سے اوپر جا پا رہے ہیں؟ -- **لرننگ ریٹ کے لیے**، `alpha`، ہم 1 کے قریب اقدار سے شروع کر سکتے ہیں، اور پھر پیرامیٹر کو کم کرتے رہ سکتے ہیں۔ وقت کے ساتھ، ہمیں Q-Table میں اچھی احتمال کی اقدار ملیں گی، اور اس لیے ہمیں انہیں تھوڑا سا ایڈجسٹ کرنا چاہیے، اور نئی اقدار کے ساتھ مکمل طور پر اوور رائٹ نہیں کرنا چاہیے۔ -- **epsilon بڑھائیں**۔ ہم `epsilon` کو آہستہ آہستہ بڑھانا چاہیں گے، تاکہ کم دریافت کریں اور زیادہ فائدہ اٹھائیں۔ شاید کم قدر کے ساتھ شروع کرنا اور اسے تقریباً 1 تک لے جانا سمجھ میں آتا ہے۔ -> **ٹاسک 1**: ہائپر پیرامیٹرز کی قدروں کے ساتھ تجربہ کریں اور دیکھیں کہ کیا آپ زیادہ مجموعی انعام حاصل کر سکتے ہیں۔ کیا آپ 195 سے اوپر جا رہے ہیں؟ -> **کام 2**: مسئلے کو باضابطہ طور پر حل کرنے کے لیے، آپ کو 100 مسلسل رنز کے دوران 195 اوسط انعام حاصل کرنا ہوگا۔ تربیت کے دوران اس کی پیمائش کریں اور یقینی بنائیں کہ آپ نے مسئلے کو باضابطہ طور پر حل کر لیا ہے! +> **کام 2**: مسئلہ کو باقاعدگی سے حل کرنے کے لیے، آپ کو 100 مسلسل رنز میں 195 اوسط انعام حاصل کرنا ہوگا۔ اسے تربیت کے دوران ماپیں اور یقینی بنائیں کہ آپ نے باضابطہ طور پر مسئلہ حل کر لیا ہے! -## نتیجہ عملی طور پر دیکھنا +## نتیجہ عمل میں دیکھنا -یہ دلچسپ ہوگا کہ تربیت یافتہ ماڈل کیسے کام کرتا ہے۔ آئیے سیمولیشن چلائیں اور تربیت کے دوران استعمال کی گئی ایکشن سلیکشن حکمت عملی کو اپنائیں، Q-Table میں موجود احتمال تقسیم کے مطابق نمونے لیں: (کوڈ بلاک 13) +یہ واقعی دلچسپ ہوگا کہ ہم دیکھیں کہ تربیت یافتہ ماڈل کیسے برتاؤ کرتا ہے۔ آئیں ہم سیمولیشن چلائیں اور آموزش کے دوران کی طرح ہی کارروائی کے انتخاب کی حکمت عملی اپنائیں، یعنی Q-Table میں احتمال کی تقسیم کے مطابق سیمپلنگ کریں: (کوڈ بلاک 13) ```python obs = env.reset() @@ -295,30 +318,32 @@ while not done: env.close() ``` -آپ کو کچھ ایسا نظر آنا چاہیے: +آپ کو کچھ ایسا دیکھنا چاہیے: -![ایک بیلنسنگ کارٹپول](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) +![ایک متوازن کارٹپول](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) --- ## 🚀چیلنج -> **کام 3**: یہاں ہم Q-Table کی آخری کاپی استعمال کر رہے تھے، جو شاید بہترین نہ ہو۔ یاد رکھیں کہ ہم نے بہترین کارکردگی دکھانے والے Q-Table کو `Qbest` ویریبل میں محفوظ کیا ہے! اسی مثال کو بہترین Q-Table کے ساتھ آزمائیں، `Qbest` کو `Q` پر کاپی کریں اور دیکھیں کہ کیا فرق محسوس ہوتا ہے۔ +> **کام 3**: یہاں ہم Q-Table کی آخری کاپی استعمال کر رہے تھے، جو شاید بہترین نہ ہو۔ یاد رکھیں کہ ہم نے بہترین کارکردگی دکھانے والی Q-Table کو `Qbest` متغیر میں محفوظ کیا ہے! اسی مثال کو بہترین کارکردگی دکھانے والی Q-Table کے ساتھ آزما کر دیکھیں، `Qbest` کو `Q` پر کاپی کریں اور فرق دیکھیں۔ -> **کام 4**: یہاں ہم ہر قدم پر بہترین ایکشن منتخب نہیں کر رہے تھے، بلکہ متعلقہ احتمال تقسیم کے ساتھ نمونے لے رہے تھے۔ کیا یہ زیادہ مناسب ہوگا کہ ہمیشہ بہترین ایکشن منتخب کریں، جس کی Q-Table ویلیو سب سے زیادہ ہو؟ یہ `np.argmax` فنکشن استعمال کر کے کیا جا سکتا ہے تاکہ سب سے زیادہ Q-Table ویلیو کے مطابق ایکشن نمبر معلوم کیا جا سکے۔ اس حکمت عملی کو نافذ کریں اور دیکھیں کہ کیا بیلنسنگ میں بہتری آتی ہے۔ +> **کام 4**: یہاں ہم ہر قدم پر بہترین عمل کا انتخاب نہیں کر رہے تھے، بلکہ احتمال کی تقسیم کے مطابق سیمپلنگ کر رہے تھے۔ کیا یہ زیادہ معنی خیز نہیں ہوگا کہ ہم ہمیشہ بہترین عمل منتخب کریں، جو Q-Table کی سب سے زیادہ قدر رکھتا ہو؟ یہ `np.argmax` فنکشن استعمال کر کے کیا جا سکتا ہے تاکہ وہ عمل نمبر معلوم ہو جو سب سے زیادہ Q-Table ویلیو کے مطابق ہو۔ اس حکمت عملی کو نافذ کریں اور دیکھیں کہ کیا اس سے توازن بہتر ہوتا ہے۔ ## [لیکچر کے بعد کا کوئز](https://ff-quizzes.netlify.app/en/ml/) ## اسائنمنٹ -[ایک ماؤنٹین کار کو تربیت دیں](assignment.md) +[Train a Mountain Car](assignment.md) ## نتیجہ -ہم نے اب سیکھ لیا ہے کہ ایجنٹس کو اچھے نتائج حاصل کرنے کے لیے کیسے تربیت دی جائے، صرف انعامی فنکشن فراہم کر کے جو کھیل کی مطلوبہ حالت کو بیان کرتا ہے، اور انہیں تلاش کے دائرے کو ذہانت سے دریافت کرنے کا موقع دے کر۔ ہم نے Q-Learning الگورتھم کو کامیابی سے لاگو کیا ہے، چاہے وہ ڈسکریٹ ماحول ہو یا مسلسل، لیکن ڈسکریٹ ایکشنز کے ساتھ۔ +ہم نے اب سیکھ لیا ہے کہ ایجنٹس کو اچھے نتائج حاصل کرنے کے لیے کیسے تربیت دی جائے، صرف انہیں ایک انعامی فنکشن دے کر جو کھیل کی مطلوبہ حالت کی تعریف کرتا ہے، اور انہیں تلاش کی جگہ کو ذہانت سے دریافت کرنے کا موقع دے کر۔ ہم نے کامیابی سے Q-Learning الگورتھم کو متقطع اور مسلسل ماحول دونوں میں لاگو کیا ہے، لیکن متقطع اعمال کے ساتھ۔ -یہ بھی ضروری ہے کہ ان حالات کا مطالعہ کریں جہاں ایکشن اسٹیٹ بھی مسلسل ہو، اور جب مشاہداتی جگہ زیادہ پیچیدہ ہو، جیسے کہ اٹاری گیم اسکرین کی تصویر۔ ان مسائل میں ہمیں اکثر زیادہ طاقتور مشین لرننگ تکنیکوں، جیسے نیورل نیٹ ورکس، کی ضرورت ہوتی ہے تاکہ اچھے نتائج حاصل کیے جا سکیں۔ یہ مزید جدید موضوعات ہمارے آنے والے اعلی درجے کے 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/vi/.co-op-translator.json b/translations/vi/.co-op-translator.json index 9561995db..5f22ca5d8 100644 --- a/translations/vi/.co-op-translator.json +++ b/translations/vi/.co-op-translator.json @@ -24,8 +24,8 @@ "language_code": "vi" }, "1-Introduction/3-fairness/README.md": { - "original_hash": "9a6b702d1437c0467e3c5c28d763dac2", - "translation_date": "2025-09-05T19:31:55+00:00", + "original_hash": "0f00d72169a0d37eecfd16d71e01700a", + "translation_date": "2026-07-14T04:05:36+00:00", "source_file": "1-Introduction/3-fairness/README.md", "language_code": "vi" }, @@ -54,8 +54,8 @@ "language_code": "vi" }, "2-Regression/1-Tools/README.md": { - "original_hash": "fa81d226c71d5af7a2cade31c1c92b88", - "translation_date": "2025-09-05T18:51:21+00:00", + "original_hash": "0b8635427b582d03ea4ab7089b93e505", + "translation_date": "2026-07-14T04:03:00+00:00", "source_file": "2-Regression/1-Tools/README.md", "language_code": "vi" }, @@ -72,8 +72,8 @@ "language_code": "vi" }, "2-Regression/2-Data/README.md": { - "original_hash": "7c077988328ebfe33b24d07945f16eca", - "translation_date": "2025-09-05T18:55:18+00:00", + "original_hash": "a58b2c4d16c6b122643391745ac15af6", + "translation_date": "2026-07-14T04:03:51+00:00", "source_file": "2-Regression/2-Data/README.md", "language_code": "vi" }, @@ -89,6 +89,12 @@ "source_file": "2-Regression/2-Data/solution/Julia/README.md", "language_code": "vi" }, + "2-Regression/2-Data/solution/notebook.ipynb": { + "original_hash": "96b95f8cf473481f2f371de8156f1571", + "translation_date": "2026-07-14T03:42:56+00:00", + "source_file": "2-Regression/2-Data/solution/notebook.ipynb", + "language_code": "vi" + }, "2-Regression/3-Linear/README.md": { "original_hash": "8b776e731c35b171d316d01d0e7b1369", "translation_date": "2026-04-26T20:06:44+00:00", @@ -457,7 +463,7 @@ }, "8-Reinforcement/1-QLearning/README.md": { "original_hash": "911efd5e595089000cb3c16fce1beab8", - "translation_date": "2025-09-05T20:13:42+00:00", + "translation_date": "2026-07-14T04:04:47+00:00", "source_file": "8-Reinforcement/1-QLearning/README.md", "language_code": "vi" }, @@ -581,6 +587,19 @@ "source_file": "TROUBLESHOOTING.md", "language_code": "vi" }, + "__translation_failures__": { + "sketchnotes/LICENSE.md": { + "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f", + "source_file": "sketchnotes/LICENSE.md", + "language_code": "vi", + "failure_date": "2026-07-14T04:01:32+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:06+00:00", diff --git a/translations/vi/1-Introduction/3-fairness/README.md b/translations/vi/1-Introduction/3-fairness/README.md index bde68a7fc..20227c9bf 100644 --- a/translations/vi/1-Introduction/3-fairness/README.md +++ b/translations/vi/1-Introduction/3-fairness/README.md @@ -1,159 +1,167 @@ -# Xây dựng giải pháp Machine Learning với AI có trách nhiệm - -![Tóm tắt về AI có trách nhiệm trong Machine Learning qua sketchnote](../../../../sketchnotes/ml-fairness.png) +# Xây dựng các giải pháp Machine Learning với AI có trách nhiệm + +![Tóm tắt AI có trách nhiệm trong Machine Learning dưới dạng sketchnote](../../../../translated_images/vi/ml-fairness.ef296ebec6afc98a.webp) > Sketchnote bởi [Tomomi Imura](https://www.twitter.com/girlie_mac) -## [Câu hỏi trước bài giảng](https://ff-quizzes.netlify.app/en/ml/) - +## [Trắc nghiệm trước bài học](https://ff-quizzes.netlify.app/en/ml/) + ## Giới thiệu -Trong chương trình học này, bạn sẽ bắt đầu khám phá cách mà machine learning có thể và đang ảnh hưởng đến cuộc sống hàng ngày của chúng ta. Ngay cả hiện tại, các hệ thống và mô hình đã tham gia vào các nhiệm vụ ra quyết định hàng ngày, chẳng hạn như chẩn đoán y tế, phê duyệt khoản vay hoặc phát hiện gian lận. Vì vậy, điều quan trọng là các mô hình này phải hoạt động tốt để cung cấp kết quả đáng tin cậy. Giống như bất kỳ ứng dụng phần mềm nào, các hệ thống AI cũng có thể không đáp ứng được kỳ vọng hoặc tạo ra kết quả không mong muốn. Đó là lý do tại sao việc hiểu và giải thích hành vi của một mô hình AI là rất cần thiết. +Trong chương trình này, bạn sẽ bắt đầu khám phá cách mà machine learning có thể và đang ảnh hưởng đến cuộc sống hàng ngày của chúng ta. Ngay cả bây giờ, các hệ thống và mô hình đã tham gia vào các nhiệm vụ ra quyết định hàng ngày, như chẩn đoán y tế, phê duyệt khoản vay hoặc phát hiện gian lận. Vì vậy, việc các mô hình này hoạt động tốt để cung cấp kết quả đáng tin cậy là rất quan trọng. Giống như bất kỳ ứng dụng phần mềm nào, hệ thống AI cũng có thể không đáp ứng được kỳ vọng hoặc có kết quả không mong muốn. Đó là lý do tại sao điều quan trọng là phải có khả năng hiểu và giải thích hành vi của một mô hình AI. -Hãy tưởng tượng điều gì có thể xảy ra khi dữ liệu bạn sử dụng để xây dựng các mô hình này thiếu các nhóm nhân khẩu học nhất định, chẳng hạn như chủng tộc, giới tính, quan điểm chính trị, tôn giáo, hoặc đại diện không cân đối cho các nhóm nhân khẩu học đó. Điều gì xảy ra khi đầu ra của mô hình được diễn giải để ưu tiên một số nhóm nhân khẩu học? Hậu quả đối với ứng dụng là gì? Ngoài ra, điều gì xảy ra khi mô hình có kết quả bất lợi và gây hại cho con người? Ai sẽ chịu trách nhiệm cho hành vi của hệ thống AI? Đây là một số câu hỏi mà chúng ta sẽ khám phá trong chương trình học này. +Hãy tưởng tượng điều gì có thể xảy ra khi dữ liệu bạn sử dụng để xây dựng các mô hình này thiếu một số nhóm dân số nhất định, chẳng hạn như chủng tộc, giới tính, quan điểm chính trị, tôn giáo, hoặc đại diện không cân đối các nhóm dân số đó. Sẽ ra sao khi kết quả của mô hình bị diễn giải để ưu tiên một nhóm dân số nào đó? Hậu quả đối với ứng dụng là gì? Thêm vào đó, chuyện gì xảy ra khi mô hình có kết quả tiêu cực và gây hại cho con người? Ai sẽ chịu trách nhiệm về hành vi của hệ thống AI? Đây là một số câu hỏi mà chúng ta sẽ khám phá trong chương trình này. Trong bài học này, bạn sẽ: -- Nâng cao nhận thức về tầm quan trọng của sự công bằng trong machine learning và các tác hại liên quan đến sự không công bằng. -- Làm quen với việc khám phá các trường hợp ngoại lệ và tình huống bất thường để đảm bảo độ tin cậy và an toàn. -- Hiểu rõ về nhu cầu trao quyền cho mọi người bằng cách thiết kế các hệ thống toàn diện. +- Nâng cao nhận thức về tầm quan trọng của sự công bằng trong machine learning và các tác hại liên quan đến công bằng. +- Làm quen với việc khám phá các ngoại lệ và các kịch bản bất thường để đảm bảo độ tin cậy và an toàn. +- Hiểu về nhu cầu trao quyền cho mọi người bằng cách thiết kế các hệ thống bao gồm. - Khám phá tầm quan trọng của việc bảo vệ quyền riêng tư và an ninh của dữ liệu và con người. -- Thấy được sự cần thiết của cách tiếp cận "hộp kính" để giải thích hành vi của các mô hình AI. -- Nhận thức rằng trách nhiệm là yếu tố thiết yếu để xây dựng niềm tin vào các hệ thống AI. +- Thấy được tầm quan trọng của cách tiếp cận hộp kính để giải thích hành vi của các mô hình AI. +- Nhận thức về tầm quan trọng của trách nhiệm giải trình để xây dựng niềm tin trong các hệ thống AI. -## Điều kiện tiên quyết +## Yêu cầu trước -Trước khi bắt đầu, hãy tham gia lộ trình học "Nguyên tắc AI có trách nhiệm" và xem video dưới đây về chủ đề này: +Là yêu cầu trước, vui lòng hoàn thành "Nguyên tắc AI có trách nhiệm" trong Hành trình Học tập và xem video dưới đây về chủ đề này: -Tìm hiểu thêm về AI có trách nhiệm qua [Lộ trình học](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) +Tìm hiểu thêm về AI có trách nhiệm bằng cách theo dõi [Hành trình Học tập](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) -[![Cách tiếp cận của Microsoft đối với AI có trách nhiệm](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Cách tiếp cận của Microsoft đối với AI có trách nhiệm") +[![Cách tiếp cận AI có trách nhiệm của Microsoft](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Cách tiếp cận AI có trách nhiệm của Microsoft") -> 🎥 Nhấp vào hình ảnh trên để xem video: Cách tiếp cận của Microsoft đối với AI có trách nhiệm +> 🎥 Nhấn vào hình trên để xem video: Cách tiếp cận AI có trách nhiệm của Microsoft ## Công bằng -Các hệ thống AI nên đối xử công bằng với mọi người và tránh ảnh hưởng đến các nhóm tương tự theo cách khác nhau. Ví dụ, khi các hệ thống AI cung cấp hướng dẫn về điều trị y tế, đơn xin vay vốn, hoặc việc làm, chúng nên đưa ra các khuyến nghị giống nhau cho mọi người có triệu chứng, hoàn cảnh tài chính, hoặc trình độ chuyên môn tương tự. Mỗi chúng ta, với tư cách là con người, đều mang theo những định kiến di truyền ảnh hưởng đến quyết định và hành động của mình. Những định kiến này có thể xuất hiện trong dữ liệu mà chúng ta sử dụng để huấn luyện các hệ thống AI. Đôi khi, sự thao túng này xảy ra một cách vô tình. Thường rất khó để nhận thức rõ ràng khi bạn đang đưa định kiến vào dữ liệu. +Hệ thống AI nên đối xử công bằng với mọi người và tránh ảnh hưởng đến các nhóm người tương tự theo các cách khác nhau. Ví dụ, khi hệ thống AI cung cấp hướng dẫn về điều trị y tế, hồ sơ vay vốn hoặc tuyển dụng, chúng nên đưa ra các khuyến nghị giống nhau cho tất cả mọi người có các triệu chứng, hoàn cảnh tài chính hoặc trình độ chuyên môn tương tự. Mỗi chúng ta, với tư cách là con người, mang trong mình những thiên kiến thừa kế ảnh hưởng đến quyết định và hành động của mình. Những thiên kiến này có thể hiển nhiên trong dữ liệu mà chúng ta sử dụng để huấn luyện các hệ thống AI. Việc thao túng như vậy đôi khi xảy ra một cách vô ý. Thường thì rất khó để nhận biết một cách có ý thức khi bạn đang thêm thiên kiến vào dữ liệu. -**“Sự không công bằng”** bao gồm các tác động tiêu cực, hay “tác hại”, đối với một nhóm người, chẳng hạn như những người được định nghĩa theo chủng tộc, giới tính, tuổi tác, hoặc tình trạng khuyết tật. Các tác hại chính liên quan đến sự không công bằng có thể được phân loại như sau: +**“Sự không công bằng”** bao gồm các tác động tiêu cực, hay “tác hại”, đối với một nhóm người, chẳng hạn như những người được xác định theo chủng tộc, giới tính, tuổi tác hoặc tình trạng khuyết tật. Các tác hại liên quan đến công bằng chính có thể được phân loại như: -- **Phân bổ**, nếu một giới tính hoặc dân tộc, chẳng hạn, được ưu tiên hơn nhóm khác. -- **Chất lượng dịch vụ**. Nếu bạn huấn luyện dữ liệu cho một kịch bản cụ thể nhưng thực tế phức tạp hơn nhiều, điều này dẫn đến dịch vụ hoạt động kém. Ví dụ, một máy phân phối xà phòng không thể nhận diện người có làn da tối màu. [Tham khảo](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773) -- **Phỉ báng**. Chỉ trích và gán nhãn không công bằng cho một thứ hoặc một người. Ví dụ, công nghệ gán nhãn hình ảnh từng gán nhãn sai hình ảnh của người da tối màu là khỉ đột. -- **Đại diện quá mức hoặc thiếu đại diện**. Ý tưởng rằng một nhóm nhất định không được nhìn thấy trong một nghề nghiệp nào đó, và bất kỳ dịch vụ hoặc chức năng nào tiếp tục thúc đẩy điều đó đều góp phần gây hại. -- **Định kiến**. Gắn một nhóm nhất định với các thuộc tính được gán trước. Ví dụ, một hệ thống dịch ngôn ngữ giữa tiếng Anh và tiếng Thổ Nhĩ Kỳ có thể gặp sai sót do các từ có liên kết định kiến với giới tính. +- **Phân bổ**, nếu một giới tính hoặc dân tộc nào đó được ưu tiên hơn những người khác. +- **Chất lượng dịch vụ**. Nếu bạn huấn luyện dữ liệu cho một kịch bản cụ thể nhưng thực tế phức tạp hơn nhiều, dẫn đến dịch vụ hoạt động kém. Ví dụ, một vòi xà phòng tự động không thể nhận biết được những người có làn da tối màu. [Tham khảo](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773) +- **Gièm pha**. Phê bình và gán nhãn không công bằng cho điều gì đó hoặc ai đó. Ví dụ, công nghệ gán nhãn hình ảnh đã bị chỉ trích khi gán nhãn sai các hình ảnh người da đen thành khỉ đột. +- **Đại diện quá mức hoặc thiếu đại diện**. Ý tưởng là một nhóm người nào đó không được nhìn thấy trong một nghề nghiệp nhất định, và bất kỳ dịch vụ hoặc chức năng nào cứ tiếp tục thúc đẩy điều này đều góp phần gây hại. +- **Định kiến**. Liên kết một nhóm người với các thuộc tính được gán sẵn. Ví dụ, một hệ thống dịch ngôn ngữ giữa tiếng Anh và tiếng Thổ Nhĩ Kỳ có thể có sự không chính xác do các từ có liên quan đến các định kiến giới tính. -![dịch sang tiếng Thổ Nhĩ Kỳ](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) +![dịch sang tiếng Thổ Nhĩ Kỳ](../../../../translated_images/vi/gender-bias-translate-en-tr.f185fd8822c2d437.webp) > dịch sang tiếng Thổ Nhĩ Kỳ -![dịch lại sang tiếng Anh](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) -> dịch lại sang tiếng Anh +![dịch ngược lại tiếng Anh](../../../../translated_images/vi/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) +> dịch ngược lại tiếng Anh -Khi thiết kế và kiểm tra các hệ thống AI, chúng ta cần đảm bảo rằng AI công bằng và không được lập trình để đưa ra các quyết định thiên vị hoặc phân biệt đối xử, điều mà con người cũng bị cấm thực hiện. Đảm bảo sự công bằng trong AI và machine learning vẫn là một thách thức xã hội-kỹ thuật phức tạp. +Khi thiết kế và thử nghiệm các hệ thống AI, ta cần đảm bảo AI công bằng và không bị lập trình để đưa ra các quyết định thiên vị hoặc phân biệt đối xử, điều mà con người cũng bị cấm làm. Đảm bảo công bằng trong AI và machine learning vẫn là một thách thức xã hội-kỹ thuật phức tạp. ### Độ tin cậy và an toàn -Để xây dựng niềm tin, các hệ thống AI cần phải đáng tin cậy, an toàn, và nhất quán trong điều kiện bình thường và bất ngờ. Điều quan trọng là phải biết các hệ thống AI sẽ hoạt động như thế nào trong nhiều tình huống khác nhau, đặc biệt là khi chúng gặp các trường hợp ngoại lệ. Khi xây dựng các giải pháp AI, cần tập trung đáng kể vào cách xử lý một loạt các tình huống mà các giải pháp AI có thể gặp phải. Ví dụ, một chiếc xe tự lái cần đặt sự an toàn của con người lên hàng đầu. Do đó, AI điều khiển xe cần xem xét tất cả các kịch bản có thể xảy ra như ban đêm, giông bão, bão tuyết, trẻ em chạy qua đường, thú cưng, công trình đường bộ, v.v. Mức độ mà một hệ thống AI có thể xử lý một loạt các điều kiện một cách đáng tin cậy và an toàn phản ánh mức độ dự đoán mà nhà khoa học dữ liệu hoặc nhà phát triển AI đã xem xét trong quá trình thiết kế hoặc kiểm tra hệ thống. - -> [🎥 Nhấp vào đây để xem video: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl) +Để xây dựng lòng tin, các hệ thống AI cần đáng tin cậy, an toàn và nhất quán dưới các điều kiện bình thường và bất ngờ. Việc biết hệ thống AI sẽ hoạt động như thế nào trong nhiều tình huống khác nhau, đặc biệt là khi có ngoại lệ, rất quan trọng. Khi xây dựng các giải pháp AI, cần tập trung lớn vào cách xử lý đa dạng các hoàn cảnh mà giải pháp AI có thể gặp phải. Ví dụ, một chiếc xe tự lái cần đặt an toàn của người dân lên hàng đầu. Do đó, AI điều khiển xe cần cân nhắc tất cả các kịch bản có thể xảy ra như ban đêm, giông bão hoặc bão tuyết, trẻ con chạy qua đường, thú cưng, công trường xây dựng v.v. Mức độ tốt của hệ thống AI trong việc xử lý nhiều điều kiện đa dạng một cách tin cậy và an toàn phản ánh mức độ tiên liệu mà nhà khoa học dữ liệu hay nhà phát triển AI đã cân nhắc trong quá trình thiết kế hoặc thử nghiệm hệ thống. -### Tính toàn diện +> [🎥 Nhấn vào đây để xem video: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl) -Các hệ thống AI nên được thiết kế để thu hút và trao quyền cho mọi người. Khi thiết kế và triển khai các hệ thống AI, các nhà khoa học dữ liệu và nhà phát triển AI cần xác định và giải quyết các rào cản tiềm năng trong hệ thống có thể vô tình loại trừ một số người. Ví dụ, có 1 tỷ người khuyết tật trên toàn thế giới. Với sự phát triển của AI, họ có thể dễ dàng tiếp cận một loạt thông tin và cơ hội trong cuộc sống hàng ngày. Bằng cách giải quyết các rào cản, điều này tạo ra cơ hội đổi mới và phát triển các sản phẩm AI với trải nghiệm tốt hơn, mang lại lợi ích cho tất cả mọi người. +### Tính bao gồm -> [🎥 Nhấp vào đây để xem video: tính toàn diện trong AI](https://www.microsoft.com/videoplayer/embed/RE4vl9v) +Hệ thống AI nên được thiết kế để thu hút và trao quyền cho mọi người. Khi thiết kế và triển khai hệ thống AI, các nhà khoa học dữ liệu và nhà phát triển AI xác định và giải quyết các rào cản tiềm ẩn trong hệ thống có thể vô tình loại trừ mọi người. Ví dụ, trên thế giới có 1 tỷ người khuyết tật. Với sự tiến bộ của AI, họ có thể tiếp cận nhiều thông tin và cơ hội hơn trong cuộc sống hàng ngày dễ dàng hơn. Bằng cách xử lý các rào cản này, nó tạo ra cơ hội đổi mới và phát triển các sản phẩm AI với trải nghiệm tốt hơn mang lại lợi ích cho tất cả mọi người. -### An ninh và quyền riêng tư +> [🎥 Nhấn vào đây để xem video: tính bao gồm trong AI](https://www.microsoft.com/videoplayer/embed/RE4vl9v) -Các hệ thống AI nên an toàn và tôn trọng quyền riêng tư của mọi người. Mọi người ít tin tưởng vào các hệ thống đặt quyền riêng tư, thông tin, hoặc cuộc sống của họ vào rủi ro. Khi huấn luyện các mô hình machine learning, chúng ta dựa vào dữ liệu để tạo ra kết quả tốt nhất. Trong quá trình này, nguồn gốc và tính toàn vẹn của dữ liệu phải được xem xét. Ví dụ, dữ liệu có được người dùng cung cấp hay công khai? Tiếp theo, trong khi làm việc với dữ liệu, điều quan trọng là phải phát triển các hệ thống AI có thể bảo vệ thông tin bí mật và chống lại các cuộc tấn công. Khi AI trở nên phổ biến hơn, việc bảo vệ quyền riêng tư và đảm bảo an ninh cho thông tin cá nhân và doanh nghiệp quan trọng ngày càng trở nên cấp thiết và phức tạp. Các vấn đề về quyền riêng tư và bảo mật dữ liệu đòi hỏi sự chú ý đặc biệt đối với AI vì việc truy cập dữ liệu là rất cần thiết để các hệ thống AI đưa ra dự đoán và quyết định chính xác, có thông tin về con người. +### Bảo mật và quyền riêng tư -> [🎥 Nhấp vào đây để xem video: an ninh trong AI](https://www.microsoft.com/videoplayer/embed/RE4voJF) +Hệ thống AI cần an toàn và tôn trọng quyền riêng tư của con người. Mọi người ít tin tưởng vào những hệ thống mà đặt quyền riêng tư, thông tin hoặc cuộc sống của họ vào nguy cơ. Khi huấn luyện các mô hình machine learning, ta dựa vào dữ liệu để tạo ra kết quả tốt nhất. Do đó, nguồn gốc dữ liệu và tính toàn vẹn phải được xem xét. Ví dụ, dữ liệu có phải do người dùng cung cấp hay là dữ liệu công khai? Tiếp theo, khi làm việc với dữ liệu, việc phát triển các hệ thống AI có thể bảo vệ thông tin bảo mật và chống lại các cuộc tấn công là rất quan trọng. Khi AI trở nên phổ biến hơn, việc bảo vệ quyền riêng tư và bảo mật thông tin cá nhân và kinh doanh quan trọng càng trở nên phức tạp hơn. Các vấn đề về quyền riêng tư và bảo mật dữ liệu đòi hỏi sự chú ý đặc biệt đối với AI vì việc truy cập dữ liệu là cần thiết để các hệ thống AI đưa ra các dự đoán và quyết định chính xác, có căn cứ về con người. -- Ngành công nghiệp đã đạt được những tiến bộ đáng kể trong quyền riêng tư và bảo mật, được thúc đẩy đáng kể bởi các quy định như GDPR (Quy định chung về bảo vệ dữ liệu). -- Tuy nhiên, với các hệ thống AI, chúng ta phải thừa nhận sự căng thẳng giữa nhu cầu về dữ liệu cá nhân để làm cho các hệ thống trở nên cá nhân hóa và hiệu quả hơn – và quyền riêng tư. -- Giống như sự ra đời của máy tính kết nối với internet, chúng ta cũng đang chứng kiến sự gia tăng lớn về số lượng các vấn đề bảo mật liên quan đến AI. -- Đồng thời, chúng ta đã thấy AI được sử dụng để cải thiện an ninh. Ví dụ, hầu hết các trình quét virus hiện đại đều được điều khiển bởi các thuật toán AI. -- Chúng ta cần đảm bảo rằng các quy trình khoa học dữ liệu của mình hòa hợp với các thực tiễn bảo mật và quyền riêng tư mới nhất. +> [🎥 Nhấn vào đây để xem video: bảo mật trong AI](https://www.microsoft.com/videoplayer/embed/RE4voJF) -### Tính minh bạch +- Là một ngành, chúng ta đã đạt được tiến bộ quan trọng trong quyền riêng tư & bảo mật, được thúc đẩy đáng kể bởi các quy định như GDPR (Quy định Bảo vệ Dữ liệu Chung). +- Tuy nhiên với các hệ thống AI, chúng ta phải thừa nhận sự căng thẳng giữa nhu cầu có nhiều dữ liệu cá nhân hơn để làm hệ thống cá nhân hóa và hiệu quả hơn – và quyền riêng tư. +- Cũng giống như với sự ra đời của các máy tính kết nối internet, chúng ta cũng đang thấy sự gia tăng lớn các vấn đề bảo mật liên quan đến AI. +- Đồng thời, AI cũng được dùng để cải thiện bảo mật. Ví dụ, hầu hết các phần mềm quét virus hiện đại ngày nay được điều khiển bằng các thuật toán AI. +- Chúng ta cần đảm bảo quy trình Khoa học Dữ liệu của mình kết hợp hài hòa với các thực hành bảo mật và quyền riêng tư mới nhất. -Các hệ thống AI nên dễ hiểu. Một phần quan trọng của tính minh bạch là giải thích hành vi của các hệ thống AI và các thành phần của chúng. Việc cải thiện sự hiểu biết về các hệ thống AI đòi hỏi các bên liên quan phải hiểu cách thức và lý do chúng hoạt động để có thể xác định các vấn đề về hiệu suất tiềm năng, lo ngại về an toàn và quyền riêng tư, định kiến, các thực tiễn loại trừ, hoặc kết quả không mong muốn. Chúng tôi cũng tin rằng những người sử dụng các hệ thống AI nên trung thực và cởi mở về thời điểm, lý do, và cách họ chọn triển khai chúng, cũng như những hạn chế của các hệ thống mà họ sử dụng. Ví dụ, nếu một ngân hàng sử dụng hệ thống AI để hỗ trợ các quyết định cho vay tiêu dùng, điều quan trọng là phải kiểm tra kết quả và hiểu dữ liệu nào ảnh hưởng đến các khuyến nghị của hệ thống. Các chính phủ đang bắt đầu điều chỉnh AI trong các ngành công nghiệp, vì vậy các nhà khoa học dữ liệu và tổ chức phải giải thích liệu hệ thống AI có đáp ứng các yêu cầu quy định hay không, đặc biệt là khi có kết quả không mong muốn. -> [🎥 Nhấp vào đây để xem video: tính minh bạch trong AI](https://www.microsoft.com/videoplayer/embed/RE4voJF) +### Minh bạch +Các hệ thống AI cần dễ hiểu. Một phần thiết yếu của minh bạch là giải thích hành vi của các hệ thống AI và các thành phần của chúng. Cải thiện sự hiểu biết về các hệ thống AI yêu cầu các bên liên quan nhận thức được cách và lý do hoạt động của chúng để có thể xác định các vấn đề tiềm ẩn về hiệu suất, an toàn và quyền riêng tư, thiên kiến, các thực hành loại trừ, hoặc kết quả không mong muốn. Chúng tôi cũng tin rằng những người sử dụng hệ thống AI nên trung thực và minh bạch về khi nào, tại sao và cách họ chọn triển khai chúng, cũng như các giới hạn của hệ thống họ sử dụng. Ví dụ, nếu một ngân hàng sử dụng hệ thống AI để hỗ trợ quyết định cho vay tiêu dùng, thì việc xem xét kết quả và hiểu biết dữ liệu nào ảnh hưởng đến các khuyến nghị của hệ thống là rất quan trọng. Chính phủ đang bắt đầu điều chỉnh AI trên nhiều ngành, vì vậy các nhà khoa học dữ liệu và tổ chức phải giải thích liệu hệ thống AI có đáp ứng các yêu cầu về quy định hay không, đặc biệt khi có kết quả không mong muốn. -- Vì các hệ thống AI rất phức tạp, nên rất khó để hiểu cách chúng hoạt động và diễn giải kết quả. -- Sự thiếu hiểu biết này ảnh hưởng đến cách các hệ thống này được quản lý, vận hành, và ghi chép. -- Quan trọng hơn, sự thiếu hiểu biết này ảnh hưởng đến các quyết định được đưa ra dựa trên kết quả mà các hệ thống này tạo ra. +> [🎥 Nhấn vào đây để xem video: minh bạch trong AI](https://www.microsoft.com/videoplayer/embed/RE4voJF) -### Trách nhiệm +- Vì các hệ thống AI rất phức tạp, nên rất khó hiểu cách thức chúng hoạt động và giải thích kết quả. +- Thiếu hiểu biết này ảnh hưởng đến cách các hệ thống được quản lý, vận hành và ghi chép. +- Thiếu hiểu biết này, quan trọng hơn, ảnh hưởng đến các quyết định được đưa ra dựa trên kết quả mà các hệ thống này tạo ra. -Những người thiết kế và triển khai các hệ thống AI phải chịu trách nhiệm về cách các hệ thống của họ hoạt động. Nhu cầu về trách nhiệm đặc biệt quan trọng với các công nghệ nhạy cảm như nhận diện khuôn mặt. Gần đây, đã có nhu cầu ngày càng tăng đối với công nghệ nhận diện khuôn mặt, đặc biệt từ các tổ chức thực thi pháp luật, những người thấy tiềm năng của công nghệ này trong các ứng dụng như tìm kiếm trẻ em mất tích. Tuy nhiên, các công nghệ này có thể được sử dụng bởi một chính phủ để đặt các quyền tự do cơ bản của công dân vào rủi ro, chẳng hạn như cho phép giám sát liên tục các cá nhân cụ thể. Do đó, các nhà khoa học dữ liệu và tổ chức cần chịu trách nhiệm về cách hệ thống AI của họ ảnh hưởng đến cá nhân hoặc xã hội. +### Trách nhiệm giải trình + +Những người thiết kế và triển khai hệ thống AI phải chịu trách nhiệm về cách hệ thống của họ vận hành. Nhu cầu về trách nhiệm giải trình là đặc biệt quan trọng với các công nghệ sử dụng nhạy cảm như nhận diện khuôn mặt. Gần đây, có sự gia tăng nhu cầu về công nghệ nhận diện khuôn mặt, đặc biệt từ các tổ chức thực thi pháp luật, những người thấy tiềm năng của công nghệ trong các ứng dụng như tìm kiếm trẻ em mất tích. Tuy nhiên, công nghệ này có thể bị chính phủ dùng để đe dọa các quyền tự do cơ bản của công dân, ví dụ như cho phép giám sát liên tục những cá nhân cụ thể. Do đó, các nhà khoa học dữ liệu và tổ chức cần chịu trách nhiệm về cách hệ thống AI của họ ảnh hưởng đến cá nhân hoặc xã hội. -[![Nhà nghiên cứu AI hàng đầu cảnh báo về giám sát hàng loạt qua nhận diện khuôn mặt](../../../../1-Introduction/3-fairness/images/accountability.png)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Cách tiếp cận của Microsoft đối với AI có trách nhiệm") +[![Nhà nghiên cứu AI hàng đầu cảnh báo về giám sát hàng loạt qua nhận diện khuôn mặt](../../../../translated_images/vi/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Cách tiếp cận AI có trách nhiệm của Microsoft") -> 🎥 Nhấp vào hình ảnh trên để xem video: Cảnh báo về giám sát hàng loạt qua nhận diện khuôn mặt +> 🎥 Nhấn vào hình trên để xem video: Cảnh báo về giám sát hàng loạt qua nhận diện khuôn mặt -Cuối cùng, một trong những câu hỏi lớn nhất cho thế hệ của chúng ta, với tư cách là thế hệ đầu tiên đưa AI vào xã hội, là làm thế nào để đảm bảo rằng máy tính sẽ luôn chịu trách nhiệm trước con người và làm thế nào để đảm bảo rằng những người thiết kế máy tính chịu trách nhiệm trước tất cả mọi người. +Cuối cùng, một trong những câu hỏi lớn nhất đối với thế hệ chúng ta, là thế hệ đầu tiên đưa AI vào xã hội, là làm thế nào để chắc chắn rằng máy tính sẽ luôn chịu trách nhiệm với con người và làm thế nào để đảm bảo những người thiết kế máy tính luôn chịu trách nhiệm với tất cả mọi người. ## Đánh giá tác động -Trước khi huấn luyện một mô hình machine learning, điều quan trọng là phải thực hiện đánh giá tác động để hiểu mục đích của hệ thống AI; mục đích sử dụng dự kiến; nơi nó sẽ được triển khai; và ai sẽ tương tác với hệ thống. Những điều này rất hữu ích cho người đánh giá hoặc kiểm tra hệ thống để biết các yếu tố cần xem xét khi xác định các rủi ro tiềm năng và hậu quả dự kiến. +Trước khi huấn luyện một mô hình machine learning, việc tiến hành đánh giá tác động là rất quan trọng để hiểu mục đích của hệ thống AI; mục đích sử dụng dự định; nơi nó sẽ được triển khai; và ai sẽ tương tác với hệ thống. Điều này giúp người đánh giá hoặc kiểm thử hiểu các yếu tố cần cân nhắc khi xác định các rủi ro tiềm ẩn và hậu quả mong đợi. -Các lĩnh vực cần tập trung khi thực hiện đánh giá tác động bao gồm: +Các lĩnh vực cần tập trung khi tiến hành đánh giá tác động bao gồm: + +* **Tác động bất lợi đến cá nhân**. Nhận thức về bất kỳ hạn chế hoặc yêu cầu nào, việc sử dụng không được hỗ trợ hoặc bất kỳ giới hạn nào biết đến cản trở hiệu suất hệ thống là rất quan trọng để đảm bảo hệ thống không được sử dụng theo cách có thể gây hại cho cá nhân. +* **Yêu cầu dữ liệu**. Hiểu cách và nơi hệ thống sẽ sử dụng dữ liệu giúp người đánh giá khám phá bất kỳ yêu cầu dữ liệu nào cần lưu ý (ví dụ, các quy định dữ liệu GDPR hoặc HIPAA). Thêm vào đó, xem xét nguồn gốc hoặc số lượng dữ liệu có đủ lớn để đào tạo không. +* **Tóm tắt tác động**. Tập hợp danh sách các tổn hại tiềm ẩn có thể phát sinh từ việc sử dụng hệ thống. Trong suốt vòng đời ML, kiểm tra xem các vấn đề đã được giảm thiểu hoặc xử lý chưa. +* **Mục tiêu áp dụng** cho mỗi sáu nguyên tắc cốt lõi. Đánh giá xem các mục tiêu của từng nguyên tắc có được đáp ứng không và có khoảng trống nào không. -* **Tác động bất lợi đối với cá nhân**. Nhận thức về bất kỳ hạn chế hoặc yêu cầu nào, việc sử dụng không được hỗ trợ hoặc bất kỳ giới hạn nào đã biết cản trở hiệu suất của hệ thống là rất quan trọng để đảm bảo rằng hệ thống không được sử dụng theo cách có thể gây hại cho cá nhân. -* **Yêu cầu dữ liệu**. Hiểu cách và nơi hệ thống sẽ sử dụng dữ liệu cho phép người đánh giá khám phá bất kỳ yêu cầu dữ liệu nào cần lưu ý (ví dụ: các quy định về dữ liệu GDPR hoặc HIPPA). Ngoài ra, kiểm tra xem nguồn hoặc số lượng dữ liệu có đủ để huấn luyện hay không. -* **Tóm tắt tác động**. Thu thập danh sách các tác hại tiềm năng có thể phát sinh từ việc sử dụng hệ thống. Trong suốt vòng đời ML, xem xét liệu các vấn đề đã xác định có được giảm thiểu hoặc giải quyết hay không. -* **Mục tiêu áp dụng** cho từng nguyên tắc cốt lõi. Đánh giá xem các mục tiêu từ mỗi nguyên tắc có được đáp ứng hay không và liệu có bất kỳ khoảng trống nào. ## Gỡ lỗi với AI có trách nhiệm -Tương tự như việc gỡ lỗi một ứng dụng phần mềm, gỡ lỗi một hệ thống AI là một quá trình cần thiết để xác định và giải quyết các vấn đề trong hệ thống. Có nhiều yếu tố có thể ảnh hưởng đến việc một mô hình không hoạt động như mong đợi hoặc không có trách nhiệm. Hầu hết các chỉ số hiệu suất mô hình truyền thống là các tổng hợp định lượng về hiệu suất của mô hình, không đủ để phân tích cách một mô hình vi phạm các nguyên tắc AI có trách nhiệm. Hơn nữa, một mô hình machine learning là một hộp đen, khiến việc hiểu điều gì thúc đẩy kết quả của nó hoặc cung cấp lời giải thích khi nó mắc lỗi trở nên khó khăn. Sau này trong khóa học, chúng ta sẽ học cách sử dụng bảng điều khiển AI có trách nhiệm để giúp gỡ lỗi các hệ thống AI. Bảng điều khiển cung cấp một công cụ toàn diện cho các nhà khoa học dữ liệu và nhà phát triển AI để thực hiện: +Tương tự như gỡ lỗi một ứng dụng phần mềm, gỡ lỗi hệ thống AI là quá trình cần thiết để xác định và giải quyết các vấn đề trong hệ thống. Có nhiều yếu tố ảnh hưởng đến việc một mô hình không hoạt động như mong đợi hoặc không có trách nhiệm. Hầu hết các chỉ số hiệu suất mô hình truyền thống là tổng hợp định lượng hiệu suất mô hình, không đủ để phân tích cách mô hình vi phạm các nguyên tắc AI có trách nhiệm. Hơn nữa, một mô hình machine learning là một hộp đen khiến khó hiểu điều gì thúc đẩy kết quả hoặc cung cấp lời giải thích khi nó mắc sai lầm. Trong khóa học này, chúng ta sẽ học cách sử dụng bảng điều khiển Responsible AI để giúp gỡ lỗi các hệ thống AI. Bảng điều khiển cung cấp công cụ toàn diện cho các nhà khoa học dữ liệu và nhà phát triển AI thực hiện: * **Phân tích lỗi**. Để xác định phân bố lỗi của mô hình có thể ảnh hưởng đến sự công bằng hoặc độ tin cậy của hệ thống. -* **Tổng quan về mô hình**. Để khám phá nơi có sự chênh lệch trong hiệu suất của mô hình trên các nhóm dữ liệu. -* **Phân tích dữ liệu**. Để hiểu phân bố dữ liệu và xác định bất kỳ định kiến tiềm năng nào trong dữ liệu có thể dẫn đến các vấn đề về công bằng, tính toàn diện, và độ tin cậy. -* **Giải thích mô hình**. Để hiểu điều gì ảnh hưởng hoặc tác động đến các dự đoán của mô hình. Điều này giúp giải thích hành vi của mô hình, điều quan trọng đối với tính minh bạch và trách nhiệm. +* **Tổng quan mô hình**. Để phát hiện nơi có sự chênh lệch về hiệu suất của mô hình trên các nhóm dữ liệu. +* **Phân tích dữ liệu**. Để hiểu phân bố dữ liệu và xác định bất kỳ thiên kiến tiềm ẩn nào trong dữ liệu có thể dẫn đến các vấn đề về công bằng, bao gồm, và độ tin cậy. +* **Khả năng giải thích mô hình**. Để hiểu điều gì ảnh hưởng hoặc tác động đến dự đoán của mô hình. Điều này giúp giải thích hành vi của mô hình, rất quan trọng cho tính minh bạch và trách nhiệm giải trình. -## 🚀 Thử thách -Để ngăn chặn các tác hại được đưa vào ngay từ đầu, chúng ta nên: +## 🚀 Thử thách + +Để ngăn chặn các tác hại được tạo ra ngay từ đầu, chúng ta nên: -- có sự đa dạng về nền tảng và quan điểm giữa những người làm việc trên các hệ thống -- đầu tư vào các tập dữ liệu phản ánh sự đa dạng của xã hội chúng ta -- phát triển các phương pháp tốt hơn trong suốt vòng đời machine learning để phát hiện và sửa chữa AI có trách nhiệm khi nó xảy ra +- có sự đa dạng về nền tảng và quan điểm trong những người làm việc trên các hệ thống +- đầu tư vào các bộ dữ liệu phản ánh sự đa dạng của xã hội chúng ta +- phát triển các phương pháp tốt hơn trong suốt vòng đời machine learning để phát hiện và sửa chữa AI có trách nhiệm khi xảy ra -Hãy nghĩ về các tình huống thực tế nơi sự không đáng tin cậy của mô hình trở nên rõ ràng trong việc xây dựng và sử dụng mô hình. Chúng ta còn cần xem xét điều gì nữa? +Hãy nghĩ về các kịch bản thực tế nơi sự không đáng tin cậy của một mô hình trở nên rõ ràng trong việc xây dựng và sử dụng mô hình. Chúng ta còn nên cân nhắc điều gì khác? -## [Câu hỏi sau bài giảng](https://ff-quizzes.netlify.app/en/ml/) +## [Trắc nghiệm sau bài học](https://ff-quizzes.netlify.app/en/ml/) +## Ôn tập & Tự học + -Xem hội thảo này để tìm hiểu sâu hơn về các chủ đề: +Trong bài học này, bạn đã học được một số kiến thức cơ bản về các khái niệm công bằng và không công bằng trong học máy. + +Xem hội thảo này để tìm hiểu sâu hơn về các chủ đề: -- Theo đuổi AI có trách nhiệm: Đưa các nguyên tắc vào thực tiễn bởi Besmira Nushi, Mehrnoosh Sameki và Amit Sharma +- Theo đuổi AI có trách nhiệm: Đem các nguyên tắc vào thực tiễn bởi Besmira Nushi, Mehrnoosh Sameki và Amit Sharma -[![Responsible AI Toolbox: Một khung nguồn mở để xây dựng AI có trách nhiệm](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: Một khung nguồn mở để xây dựng AI có trách nhiệm") +[![Responsible AI Toolbox: An open-source framework for building responsible AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") -> 🎥 Nhấp vào hình ảnh trên để xem video: RAI Toolbox: Một khung nguồn mở để xây dựng AI có trách nhiệm bởi Besmira Nushi, Mehrnoosh Sameki và Amit Sharma +> 🎥 Nhấp vào hình ảnh trên để xem video: RAI Toolbox: Một khung làm việc mã nguồn mở để xây dựng AI có trách nhiệm bởi Besmira Nushi, Mehrnoosh Sameki và Amit Sharma -Ngoài ra, hãy đọc: +Ngoài ra, hãy đọc: -- Trung tâm tài nguyên RAI của Microsoft: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) +- Trung tâm tài nguyên RAI của Microsoft: [Responsible AI Resources – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) -- Nhóm nghiên cứu FATE của Microsoft: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/) +- Nhóm nghiên cứu FATE của Microsoft: [FATE: Fairness, Accountability, Transparency, and Ethics in AI - Microsoft Research](https://www.microsoft.com/research/theme/fate/) -RAI Toolbox: +Hộp công cụ RAI: -- [Kho lưu trữ GitHub của Responsible AI Toolbox](https://github.com/microsoft/responsible-ai-toolbox) +- [Kho GitHub Responsible AI Toolbox](https://github.com/microsoft/responsible-ai-toolbox) -Tìm hiểu về các công cụ của Azure Machine Learning để đảm bảo tính công bằng: +Đọc về các công cụ của Azure Machine Learning để đảm bảo công bằng: -- [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) ## Bài tập -[Khám phá RAI Toolbox](assignment.md) +[Khám phá Hộp công cụ RAI](assignment.md) --- -**Tuyên bố miễn trừ trách nhiệm**: -Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp bởi con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng bản dịch tự động có thể chứa lỗi hoặc sai sót. Tài liệu gốc bằng ngôn ngữ gốc nên được coi là nguồn tin chính thức. Đối với thông tin quan trọng, nên sử dụng dịch vụ dịch thuật chuyên nghiệp bởi con người. Chúng tôi không chịu trách nhiệm về bất kỳ hiểu lầm hoặc giải thích sai nào phát sinh từ việc sử dụng bản dịch này. + \ No newline at end of file diff --git a/translations/vi/2-Regression/1-Tools/README.md b/translations/vi/2-Regression/1-Tools/README.md index 920f9910f..daa27a97e 100644 --- a/translations/vi/2-Regression/1-Tools/README.md +++ b/translations/vi/2-Regression/1-Tools/README.md @@ -1,53 +1,53 @@ # Bắt đầu với Python và Scikit-learn cho các mô hình hồi quy -![Tóm tắt về hồi quy trong một sketchnote](../../../../sketchnotes/ml-regression.png) +![Tóm tắt các hồi quy trong một sketchnote](../../../../translated_images/vi/ml-regression.4e4f70e3b3ed446e.webp) > Sketchnote bởi [Tomomi Imura](https://www.twitter.com/girlie_mac) -## [Câu hỏi trước bài giảng](https://ff-quizzes.netlify.app/en/ml/) +## [Bài kiểm tra trước bài học](https://ff-quizzes.netlify.app/en/ml/) -> ### [Bài học này có sẵn bằng R!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html) +> ### [Bài học này có phiên bản bằng R!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html) ## Giới thiệu -Trong bốn bài học này, bạn sẽ khám phá cách xây dựng các mô hình hồi quy. Chúng ta sẽ thảo luận về mục đích của chúng trong thời gian ngắn. Nhưng trước khi bắt đầu, hãy đảm bảo rằng bạn đã chuẩn bị đúng công cụ để bắt đầu quá trình! +Trong bốn bài học này, bạn sẽ khám phá cách xây dựng các mô hình hồi quy. Chúng ta sẽ nói về mục đích sử dụng của chúng trong chốc lát. Nhưng trước khi bạn làm bất cứ điều gì, hãy đảm bảo bạn có các công cụ phù hợp để bắt đầu quá trình! Trong bài học này, bạn sẽ học cách: - Cấu hình máy tính của bạn cho các tác vụ học máy cục bộ. -- Làm việc với Jupyter notebooks. -- Sử dụng Scikit-learn, bao gồm cả việc cài đặt. -- Khám phá hồi quy tuyến tính thông qua một bài tập thực hành. +- Làm việc với Jupyter Notebooks. +- Sử dụng Scikit-learn, bao gồm cả cài đặt. +- Khám phá hồi quy tuyến tính với một bài tập thực hành. ## Cài đặt và cấu hình -[![ML cho người mới bắt đầu - Cài đặt công cụ để xây dựng mô hình học máy](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML cho người mới bắt đầu - Cài đặt công cụ để xây dựng mô hình học máy") +[![ML dành cho người mới - Thiết lập công cụ sẵn sàng xây dựng các mô hình Machine Learning](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "ML dành cho người mới - Thiết lập công cụ sẵn sàng xây dựng các mô hình Machine Learning") -> 🎥 Nhấp vào hình ảnh trên để xem video ngắn hướng dẫn cấu hình máy tính của bạn cho ML. +> 🎥 Nhấp vào hình ảnh trên để xem video ngắn hướng dẫn cấu hình máy tính cho ML. -1. **Cài đặt Python**. Đảm bảo rằng [Python](https://www.python.org/downloads/) đã được cài đặt trên máy tính của bạn. Bạn sẽ sử dụng Python cho nhiều tác vụ khoa học dữ liệu và học máy. Hầu hết các hệ thống máy tính đều đã có sẵn Python. Ngoài ra, có các [Python Coding Packs](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) hữu ích để giúp một số người dùng dễ dàng cài đặt. +1. **Cài đặt Python**. Đảm bảo rằng [Python](https://www.python.org/downloads/) đã được cài đặt trên máy tính của bạn. Bạn sẽ sử dụng Python cho nhiều tác vụ khoa học dữ liệu và học máy. Hầu hết các hệ thống máy tính đã bao gồm sẵn một phiên bản Python. Có các [Bộ công cụ Mã Python](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) hữu ích để hỗ trợ thiết lập cho một số người dùng. - Tuy nhiên, một số ứng dụng của Python yêu cầu một phiên bản cụ thể của phần mềm, trong khi các ứng dụng khác yêu cầu phiên bản khác. Vì lý do này, việc làm việc trong một [môi trường ảo](https://docs.python.org/3/library/venv.html) là rất hữu ích. +Một số cách sử dụng Python, tuy nhiên, đòi hỏi phiên bản phần mềm khác nhau. Vì lý do đó, việc làm việc trong một [môi trường ảo](https://docs.python.org/3/library/venv.html) là hữu ích. -2. **Cài đặt Visual Studio Code**. Đảm bảo rằng bạn đã cài đặt Visual Studio Code trên máy tính của mình. Làm theo hướng dẫn này để [cài đặt Visual Studio Code](https://code.visualstudio.com/) cơ bản. Bạn sẽ sử dụng Python trong Visual Studio Code trong khóa học này, vì vậy bạn có thể muốn tìm hiểu cách [cấu hình Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) cho phát triển Python. +2. **Cài đặt Visual Studio Code**. Đảm bảo bạn đã cài đặt Visual Studio Code trên máy tính. Làm theo hướng dẫn để [cài đặt Visual Studio Code](https://code.visualstudio.com/) cho việc cài đặt cơ bản. Bạn sẽ sử dụng Python trong Visual Studio Code trong khóa học này, vì vậy bạn có thể muốn làm quen cách [cấu hình Visual Studio Code](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) cho phát triển Python. - > Làm quen với Python bằng cách làm theo bộ sưu tập [Learn modules](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) - > - > [![Cài đặt Python với Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Cài đặt Python với Visual Studio Code") - > - > 🎥 Nhấp vào hình ảnh trên để xem video: sử dụng Python trong VS Code. +> Làm quen với Python bằng cách làm qua bộ sưu tập [các modul học tập](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) +> +> [![Cài đặt Python với Visual Studio Code](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Cài đặt Python với Visual Studio Code") +> +> 🎥 Nhấp vào hình ảnh trên để xem video: sử dụng Python trong VS Code. -3. **Cài đặt Scikit-learn**, bằng cách làm theo [hướng dẫn này](https://scikit-learn.org/stable/install.html). Vì bạn cần đảm bảo rằng mình sử dụng Python 3, nên khuyến nghị sử dụng môi trường ảo. Lưu ý, nếu bạn đang cài đặt thư viện này trên Mac M1, có các hướng dẫn đặc biệt trên trang liên kết ở trên. +3. **Cài đặt Scikit-learn**, theo [hướng dẫn này](https://scikit-learn.org/stable/install.html). Vì bạn cần đảm bảo sử dụng Python 3, nên khuyến nghị sử dụng môi trường ảo. Lưu ý, nếu bạn cài thư viện này trên Mac M1, có hướng dẫn đặc biệt trên trang liên kết bên trên. -4. **Cài đặt Jupyter Notebook**. Bạn sẽ cần [cài đặt gói Jupyter](https://pypi.org/project/jupyter/). +1. **Cài đặt Jupyter Notebook**. Bạn sẽ cần [cài gói Jupyter](https://pypi.org/project/jupyter/). -## Môi trường tác giả ML của bạn +## Môi trường soạn thảo ML của bạn -Bạn sẽ sử dụng **notebooks** để phát triển mã Python và tạo các mô hình học máy. Loại tệp này là công cụ phổ biến cho các nhà khoa học dữ liệu, và chúng có thể được nhận diện bởi phần mở rộng `.ipynb`. +Bạn sẽ sử dụng **notebooks** để phát triển mã Python và tạo các mô hình học máy. Đây là loại tệp phổ biến cho các nhà khoa học dữ liệu, và chúng được nhận diện bằng phần hậu tố hoặc phần mở rộng `.ipynb`. -Notebooks là môi trường tương tác cho phép nhà phát triển vừa viết mã vừa thêm ghi chú và tài liệu xung quanh mã, rất hữu ích cho các dự án thử nghiệm hoặc nghiên cứu. +Notebooks là môi trường tương tác cho phép nhà phát triển vừa viết mã vừa thêm ghi chú và tài liệu xung quanh mã, rất hữu ích cho các dự án nghiên cứu hoặc thử nghiệm. -[![ML cho người mới bắt đầu - Cài đặt Jupyter Notebooks để bắt đầu xây dựng mô hình hồi quy](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML cho người mới bắt đầu - Cài đặt Jupyter Notebooks để bắt đầu xây dựng mô hình hồi quy") +[![ML cho người mới - Thiết lập Jupyter Notebooks để bắt đầu xây dựng mô hình hồi quy](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "ML cho người mới - Thiết lập Jupyter Notebooks để bắt đầu xây dựng mô hình hồi quy") > 🎥 Nhấp vào hình ảnh trên để xem video ngắn hướng dẫn bài tập này. @@ -57,64 +57,65 @@ Trong thư mục này, bạn sẽ tìm thấy tệp _notebook.ipynb_. 1. Mở _notebook.ipynb_ trong Visual Studio Code. - Một máy chủ Jupyter sẽ khởi động với Python 3+. Bạn sẽ thấy các khu vực của notebook có thể `chạy`, các đoạn mã. Bạn có thể chạy một khối mã bằng cách chọn biểu tượng giống nút phát. +Một máy chủ Jupyter sẽ khởi động với Python 3+ được bật. Bạn sẽ thấy các phần của notebook có thể `chạy`, là các đoạn mã. Bạn có thể chạy một đoạn mã bằng cách chọn biểu tượng giống nút phát. -2. Chọn biểu tượng `md` và thêm một chút markdown, với văn bản sau **# Chào mừng bạn đến với notebook của mình**. +1. Chọn biểu tượng `md` và thêm một chút markdown, với đoạn văn bản sau **# Welcome to your notebook**. - Tiếp theo, thêm một số mã Python. +Tiếp theo, thêm một số mã Python. -3. Gõ **print('hello notebook')** trong khối mã. -4. Chọn mũi tên để chạy mã. +1. Gõ **print('hello notebook')** trong đoạn mã. +1. Chọn mũi tên để chạy mã. - Bạn sẽ thấy câu lệnh được in ra: +Bạn sẽ thấy câu in ra: ```output hello notebook ``` -![VS Code với một notebook đang mở](../../../../2-Regression/1-Tools/images/notebook.jpg) +![VS Code với notebook đang mở](../../../../translated_images/vi/notebook.4a3ee31f396b8832.webp) -Bạn có thể xen kẽ mã của mình với các nhận xét để tự tài liệu hóa notebook. +Bạn có thể xen kẽ mã của bạn với các bình luận để tự tài liệu hóa notebook. -✅ Hãy nghĩ một chút về sự khác biệt giữa môi trường làm việc của nhà phát triển web và của nhà khoa học dữ liệu. +✅ Hãy suy nghĩ một chút về môi trường làm việc của một nhà phát triển web so với một nhà khoa học dữ liệu. -## Bắt đầu với Scikit-learn +## Khởi động với Scikit-learn -Bây giờ Python đã được thiết lập trong môi trường cục bộ của bạn, và bạn đã quen thuộc với Jupyter notebooks, hãy làm quen với Scikit-learn (phát âm là `sci` như trong `science`). Scikit-learn cung cấp một [API phong phú](https://scikit-learn.org/stable/modules/classes.html#api-ref) để giúp bạn thực hiện các tác vụ ML. +Bây giờ Python đã được thiết lập trên môi trường cục bộ của bạn, và bạn đã quen với Jupyter Notebooks, hãy cùng làm quen với Scikit-learn (phát âm là `sci` như trong `science`). Scikit-learn cung cấp một [API phong phú](https://scikit-learn.org/stable/modules/classes.html#api-ref) để hỗ trợ bạn thực hiện các tác vụ ML. -Theo [trang web của họ](https://scikit-learn.org/stable/getting_started.html), "Scikit-learn là một thư viện học máy mã nguồn mở hỗ trợ học có giám sát và không giám sát. Nó cũng cung cấp nhiều công cụ cho việc xây dựng mô hình, tiền xử lý dữ liệu, lựa chọn và đánh giá mô hình, cùng nhiều tiện ích khác." +Theo [trang web](https://scikit-learn.org/stable/getting_started.html) của họ, "Scikit-learn là một thư viện học máy mã nguồn mở hỗ trợ học có giám sát và không giám sát. Nó cũng cung cấp các công cụ để điều chỉnh mô hình, tiền xử lý dữ liệu, lựa chọn và đánh giá mô hình, cùng nhiều tiện ích khác." -Trong khóa học này, bạn sẽ sử dụng Scikit-learn và các công cụ khác để xây dựng các mô hình học máy nhằm thực hiện các tác vụ 'học máy truyền thống'. Chúng tôi đã cố tình tránh các mạng nơ-ron và học sâu, vì chúng sẽ được đề cập trong chương trình 'AI cho người mới bắt đầu' sắp tới của chúng tôi. +Trong khóa học này, bạn sẽ sử dụng Scikit-learn và các công cụ khác để xây dựng các mô hình học máy thực hiện các tác vụ mà chúng ta gọi là 'học máy truyền thống'. Chúng tôi cố ý tránh các mạng nơ-ron và học sâu, vì những chủ đề đó được trình bày tốt hơn trong chương trình 'AI dành cho người mới' sắp tới. -Scikit-learn giúp việc xây dựng mô hình và đánh giá chúng trở nên đơn giản. Nó chủ yếu tập trung vào việc sử dụng dữ liệu số và chứa một số bộ dữ liệu sẵn có để sử dụng như công cụ học tập. Nó cũng bao gồm các mô hình được xây dựng sẵn để sinh viên thử nghiệm. Hãy khám phá quy trình tải dữ liệu được đóng gói sẵn và sử dụng một bộ ước lượng để tạo mô hình ML đầu tiên với Scikit-learn bằng một số dữ liệu cơ bản. +Scikit-learn giúp việc xây dựng và đánh giá mô hình trở nên đơn giản. Nó tập trung chủ yếu vào dữ liệu số và bao gồm một số bộ dữ liệu sẵn có làm công cụ học tập. Nó cũng bao gồm các mô hình được xây dựng sẵn để học viên thử nghiệm. Hãy khám phá quá trình tải dữ liệu đóng gói sẵn và sử dụng một bộ ước lượng tích hợp mô hình ML đầu tiên với Scikit-learn cùng dữ liệu cơ bản. ## Bài tập - notebook Scikit-learn đầu tiên của bạn -> Hướng dẫn này được lấy cảm hứng từ [ví dụ hồi quy tuyến tính](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) trên trang web của Scikit-learn. +> Bài hướng dẫn này lấy cảm hứng từ [ví dụ hồi quy tuyến tính](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) trên trang web Scikit-learn. -[![ML cho người mới bắt đầu - Dự án hồi quy tuyến tính đầu tiên của bạn trong Python](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "ML cho người mới bắt đầu - Dự án hồi quy tuyến tính đầu tiên của bạn trong Python") + +[![ML dành cho người mới - Dự án Hồi quy Tuyến tính Đầu tiên của Bạn bằng Python](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "ML dành cho người mới - Dự án Hồi quy Tuyến tính Đầu tiên của Bạn bằng Python") > 🎥 Nhấp vào hình ảnh trên để xem video ngắn hướng dẫn bài tập này. -Trong tệp _notebook.ipynb_ liên quan đến bài học này, xóa tất cả các ô bằng cách nhấn vào biểu tượng 'thùng rác'. +Trong tệp _notebook.ipynb_ kèm bài học này, xóa hết tất cả các ô bằng cách nhấn biểu tượng 'thùng rác'. -Trong phần này, bạn sẽ làm việc với một bộ dữ liệu nhỏ về bệnh tiểu đường được tích hợp trong Scikit-learn để học tập. Hãy tưởng tượng rằng bạn muốn thử nghiệm một phương pháp điều trị cho bệnh nhân tiểu đường. Các mô hình học máy có thể giúp bạn xác định bệnh nhân nào sẽ phản ứng tốt hơn với phương pháp điều trị, dựa trên sự kết hợp của các biến. Ngay cả một mô hình hồi quy rất cơ bản, khi được trực quan hóa, cũng có thể cung cấp thông tin về các biến giúp bạn tổ chức các thử nghiệm lâm sàng lý thuyết. +Trong phần này, bạn sẽ làm việc với một bộ dữ liệu nhỏ về bệnh tiểu đường được tích hợp trong Scikit-learn cho mục đích học tập. Hãy tưởng tượng bạn muốn thử nghiệm một phương pháp điều trị cho bệnh nhân tiểu đường. Các mô hình học máy có thể giúp xác định bệnh nhân nào sẽ phản ứng tốt hơn dựa trên sự kết hợp các biến số. Ngay cả một mô hình hồi quy rất cơ bản, khi được trực quan hóa, có thể cho thấy thông tin về các biến số giúp bạn tổ chức các thử nghiệm lâm sàng giả thuyết. -✅ Có nhiều loại phương pháp hồi quy, và việc chọn loại nào phụ thuộc vào câu trả lời bạn đang tìm kiếm. Nếu bạn muốn dự đoán chiều cao có thể xảy ra của một người ở một độ tuổi nhất định, bạn sẽ sử dụng hồi quy tuyến tính, vì bạn đang tìm kiếm một **giá trị số**. Nếu bạn muốn xác định liệu một loại ẩm thực có nên được coi là thuần chay hay không, bạn đang tìm kiếm một **phân loại danh mục**, vì vậy bạn sẽ sử dụng hồi quy logistic. Bạn sẽ học thêm về hồi quy logistic sau này. Hãy nghĩ một chút về các câu hỏi bạn có thể đặt ra với dữ liệu, và phương pháp nào sẽ phù hợp hơn. +✅ Có nhiều phương pháp hồi quy khác nhau, và bạn chọn phương pháp nào phụ thuộc vào câu trả lời bạn tìm kiếm. Nếu bạn muốn dự đoán chiều cao có thể của một người ở độ tuổi xác định, bạn dùng hồi quy tuyến tính vì bạn đang tìm một **giá trị số**. Nếu bạn muốn biết liệu một loại ẩm thực có nên coi là thuần chay hay không, bạn đang tìm một **phân loại nhóm** nên dùng hồi quy logistic. Bạn sẽ học về hồi quy logistic sau. Hãy suy nghĩ về một số câu hỏi bạn có thể hỏi dữ liệu, và phương pháp nào sẽ phù hợp hơn. -Hãy bắt đầu nhiệm vụ này. +Hãy bắt đầu với nhiệm vụ này. -### Nhập thư viện +### Nhập các thư viện -Đối với nhiệm vụ này, chúng ta sẽ nhập một số thư viện: +Cho nhiệm vụ này, chúng ta sẽ nhập một số thư viện: -- **matplotlib**. Đây là một [công cụ vẽ đồ thị](https://matplotlib.org/) hữu ích và chúng ta sẽ sử dụng nó để tạo biểu đồ đường. -- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) là một thư viện hữu ích để xử lý dữ liệu số trong Python. +- **matplotlib**. Đây là công cụ [vẽ đồ thị](https://matplotlib.org/) hữu ích và chúng ta sẽ dùng để tạo biểu đồ đường. +- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) là thư viện xử lý dữ liệu số trong Python. - **sklearn**. Đây là thư viện [Scikit-learn](https://scikit-learn.org/stable/user_guide.html). Nhập một số thư viện để hỗ trợ nhiệm vụ của bạn. -1. Thêm các lệnh nhập bằng cách gõ mã sau: +1. Thêm các lệnh nhập bằng cách gõ đoạn mã sau: ```python import matplotlib.pyplot as plt @@ -122,26 +123,26 @@ Nhập một số thư viện để hỗ trợ nhiệm vụ của bạn. from sklearn import datasets, linear_model, model_selection ``` - Ở trên, bạn đang nhập `matplotlib`, `numpy` và bạn đang nhập `datasets`, `linear_model` và `model_selection` từ `sklearn`. `model_selection` được sử dụng để chia dữ liệu thành tập huấn luyện và tập kiểm tra. +Ở trên bạn đang nhập `matplotlib`, `numpy` và nhập `datasets`, `linear_model` và `model_selection` từ `sklearn`. `model_selection` dùng để phân tách dữ liệu thành tập huấn luyện và kiểm thử. -### Bộ dữ liệu tiểu đường +### Bộ dữ liệu diabetes -Bộ dữ liệu [tiểu đường](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) tích hợp bao gồm 442 mẫu dữ liệu về bệnh tiểu đường, với 10 biến đặc trưng, một số trong đó bao gồm: +Bộ dữ liệu tích hợp sẵn [diabetes dataset](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) chứa 442 mẫu dữ liệu về bệnh tiểu đường, với 10 biến đặc trưng, một số biến bao gồm: - age: tuổi tính bằng năm -- bmi: chỉ số khối cơ thể +- bmi: chỉ số cơ thể (body mass index) - bp: huyết áp trung bình - s1 tc: T-Cells (một loại tế bào bạch cầu) -✅ Bộ dữ liệu này bao gồm khái niệm 'giới tính' như một biến đặc trưng quan trọng trong nghiên cứu về bệnh tiểu đường. Nhiều bộ dữ liệu y tế bao gồm loại phân loại nhị phân này. Hãy nghĩ một chút về cách các phân loại như vậy có thể loại trừ một số phần của dân số khỏi các phương pháp điều trị. +✅ Bộ dữ liệu này bao gồm khái niệm 'giới tính' như một biến đặc trưng quan trọng trong nghiên cứu về tiểu đường. Nhiều bộ dữ liệu y tế chứa loại phân loại nhị phân như thế này. Hãy suy nghĩ về cách các phân loại như vậy có thể loại trừ một số nhóm dân cư khỏi các phương pháp điều trị. Bây giờ, hãy tải dữ liệu X và y. -> 🎓 Nhớ rằng, đây là học có giám sát, và chúng ta cần một mục tiêu 'y' được đặt tên. +> 🎓 Hãy nhớ, đây là học có giám sát, và cần một mục tiêu 'y' được đặt tên. -Trong một ô mã mới, tải bộ dữ liệu tiểu đường bằng cách gọi `load_diabetes()`. Đầu vào `return_X_y=True` báo hiệu rằng `X` sẽ là ma trận dữ liệu, và `y` sẽ là mục tiêu hồi quy. +Trong một ô mã mới, tải bộ dữ liệu diabetes bằng cách gọi `load_diabetes()`. Tham số `return_X_y=True` báo `X` sẽ là ma trận dữ liệu, và `y` sẽ là mục tiêu hồi quy. -1. Thêm một số lệnh in để hiển thị hình dạng của ma trận dữ liệu và phần tử đầu tiên của nó: +1. Thêm một số lệnh in để hiển thị kích thước của ma trận dữ liệu và phần tử đầu tiên: ```python X, y = datasets.load_diabetes(return_X_y=True) @@ -149,9 +150,9 @@ Trong một ô mã mới, tải bộ dữ liệu tiểu đường bằng cách g print(X[0]) ``` - Những gì bạn nhận được là một tuple. Bạn đang gán hai giá trị đầu tiên của tuple cho `X` và `y` tương ứng. Tìm hiểu thêm [về tuple](https://wikipedia.org/wiki/Tuple). +Bạn nhận về một tuple. Bạn đang gán hai giá trị đầu của tuple cho `X` và `y` tương ứng. Tìm hiểu thêm về [tuple](https://wikipedia.org/wiki/Tuple). - Bạn có thể thấy rằng dữ liệu này có 442 mục được định hình trong các mảng gồm 10 phần tử: +Bạn có thể thấy dữ liệu này có 442 mẫu, mỗi mẫu là mảng 10 phần tử: ```text (442, 10) @@ -159,39 +160,39 @@ Trong một ô mã mới, tải bộ dữ liệu tiểu đường bằng cách g -0.04340085 -0.00259226 0.01990842 -0.01764613] ``` - ✅ Hãy nghĩ một chút về mối quan hệ giữa dữ liệu và mục tiêu hồi quy. Hồi quy tuyến tính dự đoán mối quan hệ giữa đặc trưng X và biến mục tiêu y. Bạn có thể tìm thấy [mục tiêu](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) cho bộ dữ liệu tiểu đường trong tài liệu không? Bộ dữ liệu này đang thể hiện điều gì, dựa trên mục tiêu? +✅ Nghĩ về mối quan hệ giữa dữ liệu và mục tiêu hồi quy. Hồi quy tuyến tính dự đoán mối quan hệ giữa đặc trưng X và biến mục tiêu y. Bạn có thể tìm thấy [mục tiêu](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) của bộ dữ liệu diabetes trong tài liệu không? Bộ dữ liệu này đang minh họa gì, dựa trên mục tiêu đó? -2. Tiếp theo, chọn một phần của bộ dữ liệu này để vẽ bằng cách chọn cột thứ 3 của bộ dữ liệu. Bạn có thể làm điều này bằng cách sử dụng toán tử `:` để chọn tất cả các hàng, và sau đó chọn cột thứ 3 bằng cách sử dụng chỉ số (2). Bạn cũng có thể định hình lại dữ liệu thành mảng 2D - như yêu cầu để vẽ - bằng cách sử dụng `reshape(n_rows, n_columns)`. Nếu một trong các tham số là -1, kích thước tương ứng sẽ được tính tự động. +2. Tiếp theo, chọn một phần của bộ dữ liệu để vẽ bằng cách chọn cột thứ 3 của bộ dữ liệu. Bạn có thể dùng toán tử `:` để chọn tất cả các hàng, rồi chọn cột thứ 3 bằng chỉ mục (2). Bạn cũng có thể chuyển đổi dữ liệu thành mảng 2D - cần thiết cho việc vẽ - bằng cách dùng `reshape(n_rows, n_columns)`. Nếu một tham số là -1, chiều tương ứng sẽ được tính tự động. ```python X = X[:, 2] X = X.reshape((-1,1)) ``` - ✅ Bất cứ lúc nào, hãy in dữ liệu ra để kiểm tra hình dạng của nó. +✅ Bất cứ lúc nào, in dữ liệu ra để kiểm tra kích thước. -3. Bây giờ bạn đã có dữ liệu sẵn sàng để vẽ, bạn có thể xem liệu máy có thể giúp xác định một đường phân chia hợp lý giữa các số trong bộ dữ liệu này hay không. Để làm điều này, bạn cần chia cả dữ liệu (X) và mục tiêu (y) thành tập kiểm tra và tập huấn luyện. Scikit-learn có cách đơn giản để làm điều này; bạn có thể chia dữ liệu kiểm tra của mình tại một điểm nhất định. +3. Bây giờ dữ liệu đã sẵn sàng để vẽ, bạn có thể xem liệu máy có thể giúp xác định một ngưỡng hợp lý chia các số trong bộ dữ liệu không. Để làm điều này, bạn cần chia cả dữ liệu (X) và mục tiêu (y) thành tập kiểm thử và huấn luyện. Scikit-learn có cách đơn giản để làm điều này, bạn có thể chia dữ liệu kiểm thử tại một điểm xác định. ```python X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33) ``` -4. Bây giờ bạn đã sẵn sàng để huấn luyện mô hình của mình! Tải mô hình hồi quy tuyến tính và huấn luyện nó với các tập huấn luyện X và y của bạn bằng cách sử dụng `model.fit()`: +4. Bây giờ bạn đã sẵn sàng huấn luyện mô hình! Tải mô hình hồi quy tuyến tính và huấn luyện với tập huấn luyện X và y bằng `model.fit()`: ```python model = linear_model.LinearRegression() model.fit(X_train, y_train) ``` - ✅ `model.fit()` là một hàm bạn sẽ thấy trong nhiều thư viện ML như TensorFlow. +✅ `model.fit()` là hàm bạn sẽ thấy trong nhiều thư viện ML như TensorFlow -5. Sau đó, tạo một dự đoán bằng cách sử dụng dữ liệu kiểm tra, sử dụng hàm `predict()`. Điều này sẽ được sử dụng để vẽ đường giữa các nhóm dữ liệu. +5. Sau đó, tạo dự đoán dùng dữ liệu kiểm thử với hàm `predict()`. Kết quả này sẽ dùng để vẽ đường phân chia giữa các nhóm dữ liệu ```python y_pred = model.predict(X_test) ``` -6. Bây giờ là lúc hiển thị dữ liệu trong một biểu đồ. Matplotlib là một công cụ rất hữu ích cho nhiệm vụ này. Tạo biểu đồ scatterplot của tất cả dữ liệu kiểm tra X và y, và sử dụng dự đoán để vẽ một đường ở vị trí thích hợp nhất, giữa các nhóm dữ liệu của mô hình. +6. Giờ là lúc hiển thị dữ liệu trên biểu đồ. Matplotlib là công cụ rất hữu ích cho việc này. Tạo biểu đồ điểm (scatterplot) của tất cả dữ liệu thử nghiệm X và y, rồi dùng dự đoán để vẽ một đường kẻ ở vị trí phù hợp nhất, phân tách các nhóm dữ liệu của mô hình. ```python plt.scatter(X_test, y_test, color='black') @@ -202,29 +203,32 @@ Trong một ô mã mới, tải bộ dữ liệu tiểu đường bằng cách g plt.show() ``` - ![biểu đồ scatterplot hiển thị các điểm dữ liệu về bệnh tiểu đường](../../../../2-Regression/1-Tools/images/scatterplot.png) -✅ Hãy suy nghĩ một chút về điều đang diễn ra ở đây. Một đường thẳng đang chạy qua nhiều điểm dữ liệu nhỏ, nhưng nó thực sự đang làm gì? Bạn có thể thấy cách sử dụng đường thẳng này để dự đoán vị trí của một điểm dữ liệu mới, chưa được nhìn thấy, trong mối quan hệ với trục y của biểu đồ không? Hãy thử diễn đạt bằng lời về ứng dụng thực tế của mô hình này. +![biểu đồ scatterplot hiển thị điểm dữ liệu về bệnh tiểu đường](../../../../translated_images/vi/scatterplot.ad8b356bcbb33be6.webp) + -Chúc mừng bạn, bạn đã xây dựng mô hình hồi quy tuyến tính đầu tiên, tạo ra một dự đoán với nó, và hiển thị nó trên biểu đồ! + ✅ Hãy nghĩ một chút về những gì đang xảy ra ở đây. Một đường thẳng đang chạy qua nhiều điểm dữ liệu nhỏ, nhưng nó đang làm gì chính xác? Bạn có thể thấy làm thế nào bạn nên sử dụng đường thẳng này để dự đoán nơi một điểm dữ liệu mới, chưa thấy, nên nằm ở đâu trong mối quan hệ với trục y của biểu đồ không? Hãy thử diễn đạt bằng lời về mục đích thực tiễn của mô hình này. + +Chúc mừng, bạn đã xây dựng mô hình hồi quy tuyến tính đầu tiên, tạo ra một dự đoán với nó và hiển thị nó trong biểu đồ! --- ## 🚀Thử thách -Vẽ biểu đồ cho một biến khác từ tập dữ liệu này. Gợi ý: chỉnh sửa dòng này: `X = X[:,2]`. Với mục tiêu của tập dữ liệu này, bạn có thể khám phá được điều gì về sự tiến triển của bệnh tiểu đường? - -## [Câu hỏi sau bài giảng](https://ff-quizzes.netlify.app/en/ml/) +Vẽ biểu đồ một biến khác từ bộ dữ liệu này. Gợi ý: chỉnh sửa dòng này: `X = X[:,2]`. Với mục tiêu của bộ dữ liệu này, bạn có thể khám phá điều gì về tiến triển của bệnh tiểu đường như một căn bệnh? +## [Trắc nghiệm sau bài giảng](https://ff-quizzes.netlify.app/en/ml/) ## Ôn tập & Tự học -Trong hướng dẫn này, bạn đã làm việc với hồi quy tuyến tính đơn giản, thay vì hồi quy đơn biến hoặc hồi quy đa biến. Hãy đọc thêm một chút về sự khác biệt giữa các phương pháp này, hoặc xem [video này](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef). +Trong hướng dẫn này, bạn đã làm việc với hồi quy tuyến tính đơn giản, thay vì hồi quy tuyến tính đơn biến hay đa biến. Hãy đọc một chút về sự khác biệt giữa các phương pháp này, hoặc xem [video này](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) -Tìm hiểu thêm về khái niệm hồi quy và suy nghĩ về những loại câu hỏi có thể được trả lời bằng kỹ thuật này. Hãy tham gia [hướng dẫn này](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) để nâng cao hiểu biết của bạn. +Đọc thêm về khái niệm hồi quy và suy nghĩ về những loại câu hỏi nào có thể được trả lời bằng kỹ thuật này. Tham khảo [hướng dẫn này](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) để tăng cường hiểu biết của bạn. ## Bài tập -[Một tập dữ liệu khác](assignment.md) +[Một bộ dữ liệu khác](assignment.md) --- -**Tuyên bố miễn trừ trách nhiệm**: -Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp bởi con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng bản dịch tự động có thể chứa lỗi hoặc sai sót. Tài liệu gốc bằng ngôn ngữ gốc nên được coi là nguồn tin chính thức. Đối với thông tin quan trọng, nên sử dụng dịch vụ dịch thuật chuyên nghiệp bởi con người. Chúng tôi không chịu trách nhiệm về bất kỳ hiểu lầm hoặc giải thích sai nào phát sinh từ việc sử dụng bản dịch này. + \ No newline at end of file diff --git a/translations/vi/2-Regression/2-Data/README.md b/translations/vi/2-Regression/2-Data/README.md index 740aba761..b29b3c113 100644 --- a/translations/vi/2-Regression/2-Data/README.md +++ b/translations/vi/2-Regression/2-Data/README.md @@ -1,62 +1,62 @@ # Xây dựng mô hình hồi quy sử dụng Scikit-learn: chuẩn bị và trực quan hóa dữ liệu -![Infographic trực quan hóa dữ liệu](../../../../2-Regression/2-Data/images/data-visualization.png) +![Đồ họa trực quan hóa dữ liệu](../../../../translated_images/vi/data-visualization.54e56dded7c1a804.webp) -Infographic bởi [Dasani Madipalli](https://twitter.com/dasani_decoded) +Đồ họa do [Dasani Madipalli](https://twitter.com/dasani_decoded) thực hiện -## [Câu hỏi trước bài học](https://ff-quizzes.netlify.app/en/ml/) +## [Bài kiểm tra trước bài học](https://ff-quizzes.netlify.app/en/ml/) > ### [Bài học này có sẵn bằng R!](../../../../2-Regression/2-Data/solution/R/lesson_2.html) ## Giới thiệu -Bây giờ bạn đã có các công cụ cần thiết để bắt đầu xây dựng mô hình học máy với Scikit-learn, bạn đã sẵn sàng để bắt đầu đặt câu hỏi về dữ liệu của mình. Khi làm việc với dữ liệu và áp dụng các giải pháp ML, điều rất quan trọng là phải hiểu cách đặt câu hỏi đúng để khai thác tiềm năng của tập dữ liệu một cách hiệu quả. +Giờ bạn đã sẵn sàng với các công cụ cần thiết để bắt đầu xây dựng mô hình học máy với Scikit-learn, bạn đã sẵn sàng để bắt đầu đặt câu hỏi cho dữ liệu của mình. Khi bạn làm việc với dữ liệu và áp dụng giải pháp ML, điều rất quan trọng là hiểu cách đặt câu hỏi đúng để khai thác tiềm năng của bộ dữ liệu. Trong bài học này, bạn sẽ học: -- Cách chuẩn bị dữ liệu cho việc xây dựng mô hình. +- Cách chuẩn bị dữ liệu của bạn để xây dựng mô hình. - Cách sử dụng Matplotlib để trực quan hóa dữ liệu. +- Cách sử dụng Seaborn để trực quan hóa dữ liệu sinh động hơn. -## Đặt câu hỏi đúng về dữ liệu của bạn +## Đặt câu hỏi đúng đối với dữ liệu của bạn -Câu hỏi bạn cần trả lời sẽ quyết định loại thuật toán ML mà bạn sẽ sử dụng. Và chất lượng của câu trả lời bạn nhận được sẽ phụ thuộc rất nhiều vào bản chất của dữ liệu. +Câu hỏi bạn cần trả lời sẽ quyết định loại thuật toán ML bạn sẽ sử dụng. Và chất lượng câu trả lời bạn nhận được sẽ phụ thuộc lớn vào tính chất dữ liệu của bạn. -Hãy xem [dữ liệu](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) được cung cấp cho bài học này. Bạn có thể mở tệp .csv này trong VS Code. Một cái nhìn nhanh sẽ cho thấy rằng có các ô trống và sự pha trộn giữa dữ liệu dạng chuỗi và số. Ngoài ra còn có một cột kỳ lạ gọi là 'Package' với dữ liệu là sự pha trộn giữa 'sacks', 'bins' và các giá trị khác. Thực tế, dữ liệu này khá lộn xộn. +Hãy xem qua [dữ liệu](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) cung cấp cho bài học này. Bạn có thể mở tệp .csv này trong VS Code. Quan sát sơ qua cho thấy có những chỗ trống và một hỗn hợp giữa chuỗi và dữ liệu số. Cũng có một cột lạ tên 'Package' nơi dữ liệu là sự pha trộn giữa 'sacks', 'bins' và các giá trị khác. Dữ liệu, thực ra, hơi lộn xộn một chút. -[![ML cho người mới bắt đầu - Cách phân tích và làm sạch tập dữ liệu](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML cho người mới bắt đầu - Cách phân tích và làm sạch tập dữ liệu") +[![ML for beginners - Cách Phân tích và Làm sạch Bộ dữ liệu](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML for beginners - Cách Phân tích và Làm sạch Bộ dữ liệu") -> 🎥 Nhấp vào hình ảnh trên để xem video ngắn về cách chuẩn bị dữ liệu cho bài học này. +> 🎥 Nhấn vào hình trên để xem video ngắn hướng dẫn chuẩn bị dữ liệu cho bài học này. -Thực tế, không thường xuyên bạn nhận được một tập dữ liệu hoàn toàn sẵn sàng để sử dụng để tạo mô hình ML ngay lập tức. Trong bài học này, bạn sẽ học cách chuẩn bị một tập dữ liệu thô bằng cách sử dụng các thư viện Python tiêu chuẩn. Bạn cũng sẽ học các kỹ thuật khác nhau để trực quan hóa dữ liệu. +Thực tế, hiếm khi nào bạn được tặng một bộ dữ liệu hoàn toàn sẵn sàng để dùng ngay cho việc tạo mô hình ML. Trong bài học này, bạn sẽ học cách chuẩn bị bộ dữ liệu thô bằng các thư viện Python tiêu chuẩn. Bạn cũng sẽ học các kỹ thuật khác nhau để trực quan hóa dữ liệu. -## Nghiên cứu trường hợp: 'thị trường bí ngô' +## Nghiên cứu tình huống: 'thị trường bí ngô' -Trong thư mục này, bạn sẽ tìm thấy một tệp .csv trong thư mục gốc `data` có tên [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) bao gồm 1757 dòng dữ liệu về thị trường bí ngô, được phân loại theo thành phố. Đây là dữ liệu thô được trích xuất từ [Báo cáo Tiêu chuẩn Thị trường Cây Trồng Đặc Biệt](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) do Bộ Nông nghiệp Hoa Kỳ phân phối. +Trong thư mục này bạn sẽ tìm thấy một tệp .csv ở thư mục gốc `data` tên là [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) chứa 1757 dòng dữ liệu về thị trường bí ngô, được phân loại theo nhóm theo thành phố. Đây là dữ liệu thô được trích xuất từ các [Báo cáo Chuẩn Thị trường Chuyên ngành](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) do Bộ Nông nghiệp Hoa Kỳ phân phối. ### Chuẩn bị dữ liệu -Dữ liệu này thuộc phạm vi công cộng. Nó có thể được tải xuống dưới dạng nhiều tệp riêng biệt, theo từng thành phố, từ trang web USDA. Để tránh quá nhiều tệp riêng biệt, chúng tôi đã gộp tất cả dữ liệu thành phố vào một bảng tính, do đó chúng tôi đã _chuẩn bị_ dữ liệu một chút. Tiếp theo, hãy xem xét kỹ hơn dữ liệu. +Dữ liệu này thuộc phạm vi công cộng. Có thể tải xuống nhiều tệp riêng biệt, theo từng thành phố, từ trang web USDA. Để tránh quá nhiều tệp riêng lẻ, chúng tôi đã gộp dữ liệu của tất cả các thành phố thành một bảng tính duy nhất, do đó chúng tôi đã có một chút chuẩn bị dữ liệu rồi. Tiếp theo, hãy cùng xem kỹ hơn dữ liệu. ### Dữ liệu bí ngô - kết luận ban đầu -Bạn nhận thấy gì về dữ liệu này? Bạn đã thấy rằng có sự pha trộn giữa chuỗi, số, ô trống và các giá trị kỳ lạ mà bạn cần hiểu. - -Bạn có thể đặt câu hỏi nào về dữ liệu này, sử dụng kỹ thuật hồi quy? Ví dụ: "Dự đoán giá của một quả bí ngô được bán trong một tháng cụ thể". Nhìn lại dữ liệu, có một số thay đổi bạn cần thực hiện để tạo cấu trúc dữ liệu cần thiết cho nhiệm vụ này. +Bạn nhận thấy gì về dữ liệu này? Bạn đã thấy nó là sự pha trộn giữa chuỗi, số, giá trị trống và những giá trị lạ mà bạn cần hiểu rõ. +Bạn có thể đặt câu hỏi gì cho dữ liệu này, sử dụng kỹ thuật Hồi quy? Chẳng hạn: "Dự đoán giá của một quả bí ngô được bán trong một tháng nhất định". Nhìn lại dữ liệu, bạn cần thực hiện một số thay đổi để tạo cấu trúc dữ liệu cần thiết cho nhiệm vụ này. ## Bài tập - phân tích dữ liệu bí ngô -Hãy sử dụng [Pandas](https://pandas.pydata.org/) (tên viết tắt của `Python Data Analysis`), một công cụ rất hữu ích để định hình dữ liệu, để phân tích và chuẩn bị dữ liệu bí ngô này. +Hãy sử dụng [Pandas](https://pandas.pydata.org/), (viết tắt của `Python Data Analysis`) một công cụ rất hữu ích để định hình dữ liệu, để phân tích và chuẩn bị dữ liệu bí ngô này. -### Đầu tiên, kiểm tra các ngày bị thiếu +### Trước tiên, kiểm tra ngày tháng bị thiếu -Bạn sẽ cần thực hiện các bước để kiểm tra các ngày bị thiếu: +Trước tiên bạn cần thực hiện các bước kiểm tra các ngày tháng bị thiếu: -1. Chuyển đổi các ngày sang định dạng tháng (đây là ngày tháng kiểu Mỹ, nên định dạng là `MM/DD/YYYY`). +1. Chuyển đổi các ngày tháng về định dạng tháng (đây là dữ liệu ngày tháng của Mỹ, nên định dạng là `MM/DD/YYYY`). 2. Trích xuất tháng vào một cột mới. Mở tệp _notebook.ipynb_ trong Visual Studio Code và nhập bảng tính vào một dataframe Pandas mới. -1. Sử dụng hàm `head()` để xem năm hàng đầu tiên. +1. Dùng hàm `head()` để xem năm dòng đầu tiên. ```python import pandas as pd @@ -64,17 +64,17 @@ Mở tệp _notebook.ipynb_ trong Visual Studio Code và nhập bảng tính và pumpkins.head() ``` - ✅ Bạn sẽ sử dụng hàm nào để xem năm hàng cuối cùng? + ✅ Bạn sẽ dùng hàm nào để xem năm dòng cuối cùng? -1. Kiểm tra xem có dữ liệu bị thiếu trong dataframe hiện tại không: +1. Kiểm tra xem có dữ liệu nào bị thiếu trong dataframe hiện tại không: ```python pumpkins.isnull().sum() ``` - Có dữ liệu bị thiếu, nhưng có thể nó sẽ không ảnh hưởng đến nhiệm vụ hiện tại. + Có dữ liệu bị thiếu, nhưng có thể nó không ảnh hưởng đến nhiệm vụ hiện tại. -1. Để làm cho dataframe của bạn dễ làm việc hơn, chỉ chọn các cột bạn cần, sử dụng hàm `loc` để trích xuất từ dataframe gốc một nhóm hàng (được truyền làm tham số đầu tiên) và cột (được truyền làm tham số thứ hai). Biểu thức `:` trong trường hợp dưới đây có nghĩa là "tất cả các hàng". +1. Để làm dataframe dễ làm việc hơn, hãy chọn chỉ các cột cần thiết, sử dụng hàm `loc` để trích xuất từ dataframe gốc một nhóm các dòng (tham số đầu tiên) và các cột (tham số thứ hai). Biểu thức `:` trong trường hợp dưới đây có nghĩa là "tất cả các dòng". ```python columns_to_select = ['Package', 'Low Price', 'High Price', 'Date'] @@ -83,11 +83,11 @@ Mở tệp _notebook.ipynb_ trong Visual Studio Code và nhập bảng tính và ### Thứ hai, xác định giá trung bình của bí ngô -Hãy nghĩ về cách xác định giá trung bình của một quả bí ngô trong một tháng cụ thể. Bạn sẽ chọn những cột nào cho nhiệm vụ này? Gợi ý: bạn sẽ cần 3 cột. +Hãy suy nghĩ xem làm thế nào để xác định giá trung bình của một quả bí ngô trong một tháng nhất định. Bạn sẽ chọn những cột nào cho nhiệm vụ này? Gợi ý: bạn sẽ cần 3 cột. -Giải pháp: lấy trung bình của các cột `Low Price` và `High Price` để điền vào cột Price mới, và chuyển đổi cột Date để chỉ hiển thị tháng. May mắn thay, theo kiểm tra ở trên, không có dữ liệu bị thiếu cho ngày tháng hoặc giá cả. +Giải pháp: lấy trung bình của hai cột `Low Price` và `High Price` để điền vào cột Giá mới, và chuyển đổi cột Ngày để chỉ hiển thị tháng. May mắn thay, theo kiểm tra ở trên, không có dữ liệu bị thiếu về ngày tháng hay giá cả. -1. Để tính trung bình, thêm đoạn mã sau: +1. Để tính giá trung bình, thêm đoạn mã sau: ```python price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2 @@ -96,23 +96,23 @@ Giải pháp: lấy trung bình của các cột `Low Price` và `High Price` đ ``` - ✅ Bạn có thể in bất kỳ dữ liệu nào bạn muốn kiểm tra bằng cách sử dụng `print(month)`. + ✅ Bạn có thể in ra bất cứ dữ liệu nào bạn muốn kiểm tra bằng `print(month)`. -2. Bây giờ, sao chép dữ liệu đã chuyển đổi của bạn vào một dataframe Pandas mới: +2. Bây giờ, sao chép dữ liệu đã chuyển đổi vào một dataframe Pandas mới: ```python new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price}) ``` - In dataframe của bạn sẽ hiển thị một tập dữ liệu sạch sẽ, gọn gàng mà bạn có thể sử dụng để xây dựng mô hình hồi quy mới. + In ra dataframe sẽ cho bạn thấy một bộ dữ liệu gọn gàng, sạch sẽ để bạn xây dựng mô hình hồi quy mới. ### Nhưng khoan đã! Có điều gì đó kỳ lạ ở đây -Nếu bạn nhìn vào cột `Package`, bí ngô được bán theo nhiều cấu hình khác nhau. Một số được bán theo đơn vị '1 1/9 bushel', một số theo '1/2 bushel', một số theo quả, một số theo pound, và một số trong các hộp lớn với các kích thước khác nhau. +Nếu bạn nhìn vào cột `Package`, bí ngô được bán theo nhiều cách khác nhau. Một số được bán với đơn vị đo '1 1/9 bushel', một số với '1/2 bushel', một số tính theo quả, một số tính theo pound, và một số đóng trong những hộp lớn với kích thước khác nhau. -> Bí ngô dường như rất khó để cân đo một cách nhất quán +> Bí ngô dường như rất khó để cân nhất quán -Đào sâu vào dữ liệu gốc, thật thú vị khi bất kỳ mục nào có `Unit of Sale` bằng 'EACH' hoặc 'PER BIN' cũng có kiểu `Package` theo inch, theo bin, hoặc 'each'. Bí ngô dường như rất khó để cân đo một cách nhất quán, vì vậy hãy lọc chúng bằng cách chỉ chọn bí ngô có chuỗi 'bushel' trong cột `Package`. +Xem kỹ dữ liệu gốc, điều thú vị là bất cứ sản phẩm nào có `Unit of Sale` là 'EACH' hoặc 'PER BIN' cũng có kiểu `Package` là theo inch, theo thùng, hoặc 'each'. Bí ngô có vẻ rất khó để cân nhất quán, vì vậy hãy lọc chỉ những bí ngô có chuỗi 'bushel' trong cột `Package`. 1. Thêm bộ lọc ở đầu tệp, dưới phần nhập .csv ban đầu: @@ -120,13 +120,13 @@ Nếu bạn nhìn vào cột `Package`, bí ngô được bán theo nhiều cấ pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)] ``` - Nếu bạn in dữ liệu bây giờ, bạn có thể thấy rằng bạn chỉ nhận được khoảng 415 dòng dữ liệu chứa bí ngô theo bushel. + Nếu bạn in dữ liệu bây giờ, bạn có thể thấy chỉ những dòng khoảng 415 dữ liệu chứa bí ngô tính theo bushel. ### Nhưng khoan đã! Còn một việc nữa cần làm -Bạn có nhận thấy rằng lượng bushel thay đổi theo từng dòng không? Bạn cần chuẩn hóa giá để hiển thị giá theo bushel, vì vậy hãy thực hiện một số phép toán để chuẩn hóa. +Bạn có nhận thấy lượng bushel khác nhau theo từng dòng không? Bạn cần chuẩn hóa giá để thể hiện giá theo từng bushel, vì thế hãy làm một số phép toán để chuẩn hóa. -1. Thêm các dòng sau sau khối tạo dataframe new_pumpkins: +1. Thêm các dòng sau sau đoạn tạo dataframe new_pumpkins: ```python new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9) @@ -134,29 +134,29 @@ Bạn có nhận thấy rằng lượng bushel thay đổi theo từng dòng kh new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2) ``` -✅ Theo [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), trọng lượng của một bushel phụ thuộc vào loại sản phẩm, vì đây là một phép đo thể tích. "Một bushel cà chua, ví dụ, được cho là nặng 56 pound... Lá và rau xanh chiếm nhiều không gian hơn với ít trọng lượng hơn, vì vậy một bushel rau bina chỉ nặng 20 pound." Điều này khá phức tạp! Hãy không chuyển đổi bushel sang pound, thay vào đó tính giá theo bushel. Tất cả nghiên cứu về bushel bí ngô này, tuy nhiên, cho thấy việc hiểu rõ bản chất của dữ liệu là rất quan trọng! +✅ Theo [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308), trọng lượng một bushel phụ thuộc vào loại sản phẩm, vì đây là đơn vị đo thể tích. "Một bushel cà chua, ví dụ, nặng 56 pounds... Lá xanh chiếm nhiều không gian hơn nhưng ít trọng lượng hơn, nên một bushel rau bina chỉ nặng 20 pounds." Tất cả khá phức tạp! Chúng ta không cần làm phép chuyển đổi bushel sang pound, thay vào đó giá bán theo bushel. Tất cả nghiên cứu về bushel bí ngô này cho thấy tầm quan trọng của việc hiểu bản chất dữ liệu của bạn! -Bây giờ, bạn có thể phân tích giá theo đơn vị dựa trên đo lường bushel của chúng. Nếu bạn in dữ liệu một lần nữa, bạn có thể thấy cách nó được chuẩn hóa. +Bây giờ, bạn có thể phân tích giá theo đơn vị dựa trên đo bushel của chúng. Nếu in dữ liệu lần nữa, bạn sẽ thấy cách chúng đã được chuẩn hóa. -✅ Bạn có nhận thấy rằng bí ngô được bán theo nửa bushel rất đắt không? Bạn có thể tìm ra lý do tại sao không? Gợi ý: bí ngô nhỏ thường đắt hơn bí ngô lớn, có lẽ vì có nhiều quả hơn trong một bushel, do không gian trống bị chiếm bởi một quả bí ngô lớn rỗng. +✅ Bạn có nhận thấy bí ngô bán theo nửa bushel rất đắt không? Bạn có đoán được lý do không? Gợi ý: những quả bí nhỏ có giá cao hơn nhiều so với quả to, có lẽ vì có nhiều quả nhỏ hơn trong một bushel kể cả khoảng không gian không dùng được bởi quả bí lớn rỗng bên trong. ## Chiến lược trực quan hóa -Một phần vai trò của nhà khoa học dữ liệu là thể hiện chất lượng và bản chất của dữ liệu mà họ đang làm việc. Để làm điều này, họ thường tạo ra các hình ảnh trực quan thú vị, hoặc biểu đồ, đồ thị, và sơ đồ, hiển thị các khía cạnh khác nhau của dữ liệu. Bằng cách này, họ có thể trực quan hóa các mối quan hệ và khoảng trống mà nếu không sẽ khó phát hiện. +Một phần công việc của nhà khoa học dữ liệu là trình bày chất lượng và tính chất của dữ liệu mà họ làm việc. Để làm điều này, họ thường tạo các trực quan đồ họa thú vị, biểu đồ, đồ thị, minh họa các khía cạnh khác nhau của dữ liệu. Bằng cách này, họ có thể hiển thị trực quan các mối quan hệ và khoảng trống mà nếu không sẽ rất khó phát hiện. -[![ML cho người mới bắt đầu - Cách trực quan hóa dữ liệu với Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML cho người mới bắt đầu - Cách trực quan hóa dữ liệu với Matplotlib") +[![ML for beginners - Cách Trực quan hóa Dữ liệu với Matplotlib](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML for beginners - Cách Trực quan hóa Dữ liệu với Matplotlib") -> 🎥 Nhấp vào hình ảnh trên để xem video ngắn về cách trực quan hóa dữ liệu cho bài học này. +> 🎥 Nhấn vào hình trên để xem video ngắn hướng dẫn trực quan hóa dữ liệu cho bài học này. -Các hình ảnh trực quan cũng có thể giúp xác định kỹ thuật học máy phù hợp nhất với dữ liệu. Một biểu đồ phân tán có vẻ theo một đường thẳng, ví dụ, cho thấy rằng dữ liệu là ứng viên tốt cho bài tập hồi quy tuyến tính. +Trực quan hóa cũng giúp xác định kỹ thuật học máy phù hợp nhất với dữ liệu. Ví dụ, một biểu đồ phân tán (scatterplot) có vẻ theo một đường thẳng có thể chỉ ra rằng dữ liệu phù hợp cho bài tập hồi quy tuyến tính. -Một thư viện trực quan hóa dữ liệu hoạt động tốt trong Jupyter notebooks là [Matplotlib](https://matplotlib.org/) (mà bạn cũng đã thấy trong bài học trước). +Một thư viện trực quan hóa dữ liệu hoạt động tốt trong các notebook Jupyter là [Matplotlib](https://matplotlib.org/) (mà bạn cũng đã thấy trong bài học trước). -> Tìm hiểu thêm về trực quan hóa dữ liệu trong [các hướng dẫn này](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott). +> Tăng kinh nghiệm trực quan hóa dữ liệu của bạn trong [những bài hướng dẫn này](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott). ## Bài tập - thử nghiệm với Matplotlib -Hãy thử tạo một số biểu đồ cơ bản để hiển thị dataframe mới mà bạn vừa tạo. Một biểu đồ đường cơ bản sẽ hiển thị điều gì? +Hãy thử tạo một số biểu đồ cơ bản để hiển thị dataframe mới bạn vừa tạo. Một biểu đồ đường cơ bản sẽ thể hiện điều gì? 1. Nhập Matplotlib ở đầu tệp, dưới phần nhập Pandas: @@ -165,7 +165,7 @@ Hãy thử tạo một số biểu đồ cơ bản để hiển thị dataframe ``` 1. Chạy lại toàn bộ notebook để làm mới. -1. Ở cuối notebook, thêm một ô để vẽ dữ liệu dưới dạng hộp: +1. Ở cuối notebook, thêm một ô để biểu diễn dữ liệu dưới dạng hộp (box): ```python price = new_pumpkins.Price @@ -174,38 +174,113 @@ Hãy thử tạo một số biểu đồ cơ bản để hiển thị dataframe plt.show() ``` - ![Biểu đồ phân tán hiển thị mối quan hệ giữa giá và tháng](../../../../2-Regression/2-Data/images/scatterplot.png) + ![Biểu đồ phân tán thể hiện mối quan hệ giá theo tháng](../../../../translated_images/vi/scatterplot.b6868f44cbd2051c.webp) - Đây có phải là biểu đồ hữu ích không? Có điều gì về nó làm bạn ngạc nhiên không? + Biểu đồ này có hữu ích không? Có gì làm bạn ngạc nhiên không? - Nó không đặc biệt hữu ích vì tất cả những gì nó làm là hiển thị dữ liệu của bạn dưới dạng một loạt các điểm trong một tháng nhất định. + Nó không quá hữu ích vì chỉ hiển thị dữ liệu của bạn như một tập điểm phân bố theo tháng. ### Làm cho nó hữu ích -Để các biểu đồ hiển thị dữ liệu hữu ích, bạn thường cần nhóm dữ liệu theo cách nào đó. Hãy thử tạo một biểu đồ mà trục y hiển thị các tháng và dữ liệu thể hiện sự phân bố của dữ liệu. +Để các biểu đồ thể hiện dữ liệu có ích, bạn thường cần nhóm dữ liệu theo một cách nào đó. Hãy thử tạo một biểu đồ nhóm nơi trục y thể hiện các tháng và dữ liệu biểu diễn phân phối dữ liệu. -1. Thêm một ô để tạo biểu đồ cột nhóm: +1. Thêm một ô để tạo biểu đồ cột theo nhóm: ```python new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') plt.ylabel("Pumpkin Price") ``` - ![Biểu đồ cột hiển thị mối quan hệ giữa giá và tháng](../../../../2-Regression/2-Data/images/barchart.png) + ![Biểu đồ cột thể hiện mối quan hệ giá theo tháng](../../../../translated_images/vi/barchart.a833ea9194346d76.webp) + + Đây là trực quan hóa dữ liệu hữu ích hơn! Nó dường như chỉ ra rằng giá cao nhất của bí ngô xảy ra vào tháng Chín và tháng Mười. Điều này có đúng với kỳ vọng của bạn không? Tại sao hoặc tại sao không? + +## Bài tập - thử nghiệm với Seaborn + +Matplotlib rất mạnh, nhưng có thể cần nhiều mã để tạo biểu đồ tinh tế. [Seaborn](https://seaborn.pydata.org/) là thư viện xây dựng _trên nền_ Matplotlib được thiết kế cho trực quan hóa dữ liệu thống kê. Nó làm việc trực tiếp với các dataframe Pandas, áp dụng các kiểu mặc định hấp dẫn và cho phép bạn tạo biểu đồ thông tin chỉ với rất ít mã. Vì Seaborn trả về các đối tượng Matplotlib, bạn vẫn có thể sử dụng mọi thứ bạn biết về Matplotlib để tinh chỉnh kết quả. + +> Nếu bạn chưa cài Seaborn, hãy cài bằng lệnh `pip install seaborn`. + +1. Nhập Seaborn ở đầu notebook, dưới các import khác. Thông thường nó được nhập dưới tên `sns`: + + ```python + import seaborn as sns + ``` + +### Biểu đồ phân tán để thể hiện các mối quan hệ + +Một phần lớn của việc khám phá dữ liệu trước khi xây dựng mô hình là tìm kiếm các _mối quan hệ_ giữa các biến. Một [biểu đồ phân tán](https://en.wikipedia.org/wiki/Scatter_plot) là một trong những công cụ tốt nhất cho việc này: nếu các điểm dường như theo một đường thẳng, hai biến có thể tương quan, đây là dấu hiệu tốt rằng mô hình hồi quy tuyến tính có thể hiệu quả. + +1. Tạo lại biểu đồ phân tán giá theo tháng trước đây, lần này sử dụng [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html) của Seaborn (biểu đồ quan hệ), làm việc trực tiếp với các cột dataframe của bạn: + + ```python + sns.relplot(x="Price", y="Month", data=new_pumpkins) + ``` + + ![Biểu đồ phân tán Seaborn thể hiện mối quan hệ giá theo tháng](../../../../translated_images/vi/relplot.a03837d8f0329cec.webp) + + Lưu ý bạn truyền _tên cột_ và dataframe, Seaborn sẽ tự động tạo nhãn trục cho bạn. + +2. Bạn có thể chuyển sang biểu đồ đường bằng cách truyền `kind="line"`. Seaborn còn vẽ băng bóng thể hiện khoảng tin cậy quanh đường: + + ```python + sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins) + ``` + + ![Biểu đồ đường Seaborn thể hiện quan hệ giá theo tháng](../../../../translated_images/vi/lineplot.f9034ba47b1e30ee.webp) + + Dữ liệu này khá nhiễu, nên biểu đồ đường không phải là lựa chọn rõ ràng ở đây — nhưng nó cho thấy bạn có thể dễ dàng thay đổi loại biểu đồ trong Seaborn. + +### Biểu đồ cột để thể hiện phân bố + + +Trước đó bạn đã nhóm dữ liệu thủ công để tạo biểu đồ cột với Matplotlib. Hàm [`catplot()`](https://seaborn.pydata.org/generated/seaborn.catplot.html) (biểu đồ phân loại) của Seaborn có thể thực hiện việc nhóm và tổng hợp cho bạn. Mặc định `kind="bar"` hiển thị giá trị trung bình của mỗi nhóm cùng với một đường màu đen chỉ khoảng tin cậy. + +1. Tạo biểu đồ cột giá trung bình theo từng tháng: + + ```python + sns.catplot(x="Month", y="Price", data=new_pumpkins, kind="bar") + ``` + + ![Một biểu đồ cột Seaborn hiển thị phân bố giá theo tháng](../../../../translated_images/vi/catplot.e73fc35fdf96242b.webp) + + Điều này xác nhận điều bạn đã thấy với Matplotlib — giá đạt đỉnh quanh tháng Chín và tháng Mười — nhưng Seaborn cũng trực quan hóa mức độ _biến động_ giá trong từng tháng. + +### Biểu đồ nhiệt để hiển thị mối tương quan + +Biểu đồ phân tán so sánh hai biến tại một thời điểm. Khi bạn có nhiều cột số, một [biểu đồ nhiệt](https://en.wikipedia.org/wiki/Heat_map) cho phép bạn nhìn thấy sức mạnh mối quan hệ giữa _mọi_ cặp cột cùng lúc. Đây là cách phổ biến để phát hiện những đặc trưng có tương quan mạnh nhất trước khi chọn dữ liệu cho mô hình (và loại biểu đồ này cũng được dùng sau đó để hiển thị ma trận nhầm lẫn trong phân loại). + +1. Xây dựng ma trận tương quan với Pandas, rồi vẽ nó bằng [`heatmap()`](https://seaborn.pydata.org/generated/seaborn.heatmap.html) của Seaborn. Tùy chọn `annot=True` in ra các giá trị tương quan trên từng ô: + + ```python + correlations = new_pumpkins[['Month', 'Low Price', 'High Price', 'Price']].corr() + sns.heatmap(correlations, annot=True, cmap="coolwarm") + ``` + + ![Một biểu đồ nhiệt Seaborn hiển thị các tương quan giữa các cột số](../../../../translated_images/vi/heatmap.bd98dce43b404c57.webp) + + Các giá trị gần `1` (hoặc `-1`) nghĩa là các cột có tương quan _tuyến tính_ mạnh. Chú ý cách `Low Price` và `High Price` gần như tương quan hoàn hảo. Còn `Month` chỉ thể hiện tương quan tuyến tính yếu với giá — mặc dù biểu đồ cột phía trên đã tiết lộ một đỉnh mùa vụ rõ ràng vào tháng Chín và tháng Mười. Đây là bài học quan trọng: hệ số tương quan chỉ đo các mối quan hệ _trực tuyến_ nên có thể bỏ sót các mẫu mùa vụ hoặc phi tuyến tính khác. ✅ Tại sao việc quan sát cả biểu đồ nhiệt *và* các biểu đồ như biểu đồ cột lại hữu dụng trước khi quyết định sử dụng cột nào? + +### Matplotlib hay Seaborn? + +Cả hai thư viện đều đáng để biết: + +- **Matplotlib** cho bạn kiểm soát chi tiết từng phần tử của biểu đồ và là nền tảng mà gần như mọi thư viện vẽ biểu đồ Python khác xây dựng dựa vào. +- **Seaborn** cung cấp các hàm cấp cao hơn với cấu hình mặc định đẹp cho biểu đồ thống kê, làm việc trực tiếp với dataframe, và thường nhanh hơn cho phân tích dữ liệu khám phá. - Đây là một hình ảnh trực quan dữ liệu hữu ích hơn! Dường như nó chỉ ra rằng giá cao nhất cho bí ngô xảy ra vào tháng 9 và tháng 10. Điều này có đúng với mong đợi của bạn không? Tại sao hoặc tại sao không? +Một quy trình phổ biến là sử dụng Seaborn để khám phá dữ liệu nhanh, rồi chuyển xuống Matplotlib khi cần tùy chỉnh chi tiết. --- ## 🚀Thử thách -Khám phá các loại hình ảnh trực quan khác nhau mà Matplotlib cung cấp. Loại nào phù hợp nhất cho các bài toán hồi quy? +Khám phá các loại trực quan hóa khác nhau mà Matplotlib và Seaborn cung cấp. Loại nào thích hợp nhất cho các bài toán hồi quy? -## [Câu hỏi sau bài học](https://ff-quizzes.netlify.app/en/ml/) +## [Bài kiểm tra sau bài giảng](https://ff-quizzes.netlify.app/en/ml/) ## Ôn tập & Tự học -Hãy xem xét các cách khác nhau để trực quan hóa dữ liệu. Lập danh sách các thư viện khác nhau có sẵn và ghi chú loại nào tốt nhất cho các loại nhiệm vụ cụ thể, ví dụ trực quan hóa 2D so với trực quan hóa 3D. Bạn phát hiện ra điều gì? +Hãy xem qua nhiều cách khác nhau để trực quan hóa dữ liệu. Lập danh sách các thư viện khả dụng và ghi chú thư viện nào phù hợp với nhiệm vụ nào, ví dụ trực quan hóa 2D so với trực quan hóa 3D. Bạn khám phá được gì? ## Bài tập @@ -213,5 +288,7 @@ Hãy xem xét các cách khác nhau để trực quan hóa dữ liệu. Lập da --- -**Tuyên bố miễn trừ trách nhiệm**: -Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp bởi con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng bản dịch tự động có thể chứa lỗi hoặc sai sót. Tài liệu gốc bằng ngôn ngữ gốc nên được coi là nguồn tin chính thức. Đối với thông tin quan trọng, nên sử dụng dịch vụ dịch thuật chuyên nghiệp bởi con người. Chúng tôi không chịu trách nhiệm về bất kỳ hiểu lầm hoặc giải thích sai nào phát sinh từ việc sử dụng bản dịch này. + \ No newline at end of file diff --git a/translations/vi/2-Regression/2-Data/solution/notebook.ipynb b/translations/vi/2-Regression/2-Data/solution/notebook.ipynb index 0cde53f4d..64db1d123 100644 --- a/translations/vi/2-Regression/2-Data/solution/notebook.ipynb +++ b/translations/vi/2-Regression/2-Data/solution/notebook.ipynb @@ -3,7 +3,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "## Hồi Quy Tuyến Tính cho Bí Ngô - Bài Học 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": [ + "## Trực quan hóa với Seaborn\n", + "\n", + "[Seaborn](https://seaborn.pydata.org/) được xây dựng trên Matplotlib và hoạt động trực tiếp với dataframes, giúp nhanh chóng tạo các biểu đồ thống kê hấp dẫn chỉ với rất ít mã.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Biểu đồ phân tán để hiển thị mối quan hệ\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": [ + "### Biểu đồ cột để hiển thị phân phối\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**Tuyên bố miễn trừ trách nhiệm**: \nTài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn tham khảo chính thức. Đối với các thông tin quan trọng, nên sử dụng dịch vụ dịch thuật chuyên nghiệp từ con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này.\n" + "### Bản đồ nhiệt để hiển thị tương quan\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**Tuyên bố miễn trừ trách nhiệm**:\nTài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng bản dịch tự động có thể chứa lỗi hoặc sai sót. Tài liệu gốc bằng ngôn ngữ gốc nên được coi là nguồn tin chính thức. Đối với thông tin quan trọng, nên sử dụng dịch vụ dịch thuật chuyên nghiệp bởi con người. Chúng tôi không chịu trách nhiệm về bất kỳ hiểu lầm hoặc giải thích sai nào phát sinh từ việc sử dụng bản dịch này.\n\n" ] } ], @@ -424,13 +487,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "95726f0b8283628d5356a4f8eb8b4b76", - "translation_date": "2025-09-06T13:46:35+00:00", - "source_file": "2-Regression/2-Data/solution/notebook.ipynb", - "language_code": "vi" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/vi/8-Reinforcement/1-QLearning/README.md b/translations/vi/8-Reinforcement/1-QLearning/README.md index 6960e9b2e..7df417cd0 100644 --- a/translations/vi/8-Reinforcement/1-QLearning/README.md +++ b/translations/vi/8-Reinforcement/1-QLearning/README.md @@ -1,47 +1,47 @@ -# Giới thiệu về Học Tăng Cường và Q-Learning +# Giới thiệu về Học tăng cường và Q-Learning -![Tóm tắt về học tăng cường trong học máy qua sketchnote](../../../../sketchnotes/ml-reinforcement.png) +![Tóm tắt về học tăng cường trong máy học dưới dạng sketchnote](../../../../translated_images/vi/ml-reinforcement.94024374d63348db.webp) > Sketchnote bởi [Tomomi Imura](https://www.twitter.com/girlie_mac) -Học tăng cường liên quan đến ba khái niệm quan trọng: tác nhân, các trạng thái, và một tập hợp các hành động cho mỗi trạng thái. Bằng cách thực hiện một hành động trong một trạng thái cụ thể, tác nhân sẽ nhận được phần thưởng. Hãy tưởng tượng trò chơi điện tử Super Mario. Bạn là Mario, bạn đang ở một cấp độ trong trò chơi, đứng cạnh mép vực. Phía trên bạn là một đồng xu. Bạn là Mario, ở một cấp độ trò chơi, tại một vị trí cụ thể... đó là trạng thái của bạn. Di chuyển một bước sang phải (một hành động) sẽ khiến bạn rơi xuống vực, và điều đó sẽ cho bạn một điểm số thấp. Tuy nhiên, nhấn nút nhảy sẽ giúp bạn ghi điểm và bạn sẽ sống sót. Đó là một kết quả tích cực và điều đó sẽ thưởng cho bạn một điểm số cao. +Học tăng cường bao gồm ba khái niệm quan trọng: tác nhân, một số trạng thái, và một tập các hành động cho mỗi trạng thái. Bằng cách thực hiện một hành động trong trạng thái cụ thể, tác nhân sẽ nhận được phần thưởng. Hãy tưởng tượng trò chơi điện tử Super Mario. Bạn là Mario, bạn ở trong một màn chơi, đứng cạnh mép vách đá. Phía trên bạn là một đồng xu. Bạn, với vai trò Mario, trong một màn chơi, tại vị trí cụ thể ... đó là trạng thái của bạn. Di chuyển một bước sang phải (một hành động) sẽ khiến bạn rơi xuống, và điều đó sẽ cho bạn điểm số thấp. Tuy nhiên, nhấn nút nhảy sẽ giúp bạn ghi một điểm và bạn sẽ sống sót. Đó là một kết quả tích cực và bạn nên được thưởng điểm số dương. -Bằng cách sử dụng học tăng cường và một trình mô phỏng (trò chơi), bạn có thể học cách chơi trò chơi để tối đa hóa phần thưởng, đó là sống sót và ghi được càng nhiều điểm càng tốt. +Bằng cách sử dụng học tăng cường và một bộ mô phỏng (trò chơi), bạn có thể học cách chơi trò chơi để tối đa hóa phần thưởng là sống sót và kiếm thật nhiều điểm. -[![Giới thiệu về Học Tăng Cường](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) +[![Giới thiệu về Học tăng cường](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) -> 🎥 Nhấn vào hình ảnh trên để nghe Dmitry thảo luận về Học Tăng Cường +> 🎥 Nhấn vào hình trên để nghe Dmitry thảo luận về Học tăng cường -## [Câu hỏi trước bài giảng](https://ff-quizzes.netlify.app/en/ml/) +## [Đề kiểm tra trước bài giảng](https://ff-quizzes.netlify.app/en/ml/) ## Yêu cầu và Cài đặt -Trong bài học này, chúng ta sẽ thử nghiệm một số đoạn mã trong Python. Bạn cần có khả năng chạy mã Jupyter Notebook từ bài học này, trên máy tính của bạn hoặc trên đám mây. +Trong bài học này, chúng ta sẽ thử nghiệm với một số đoạn mã Python. Bạn nên có khả năng chạy mã trong Jupyter Notebook của bài học này, trên máy tính của bạn hoặc ở đâu đó trên đám mây. -Bạn có thể mở [notebook bài học](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) và đi qua bài học này để xây dựng. +Bạn có thể mở [notebook bài học](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) và theo dõi bài học này để xây dựng. -> **Lưu ý:** Nếu bạn mở mã này từ đám mây, bạn cũng cần lấy tệp [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), được sử dụng trong mã notebook. Thêm nó vào cùng thư mục với notebook. +> **Lưu ý:** Nếu bạn mở mã này từ đám mây, bạn cũng cần tải file [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), được sử dụng trong mã notebook. Thêm nó vào cùng thư mục với notebook. ## Giới thiệu -Trong bài học này, chúng ta sẽ khám phá thế giới của **[Peter và con sói](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)**, lấy cảm hứng từ câu chuyện cổ tích âm nhạc của nhà soạn nhạc người Nga, [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev). Chúng ta sẽ sử dụng **Học Tăng Cường** để giúp Peter khám phá môi trường của mình, thu thập những quả táo ngon và tránh gặp con sói. +Trong bài học này, chúng ta sẽ khám phá thế giới của **[Peter và Con Sói](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)**, lấy cảm hứng từ câu chuyện nhạc cổ tích do nhà soạn nhạc người Nga, [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev), sáng tác. Chúng ta sẽ sử dụng **Học tăng cường** để cho Peter khám phá môi trường, thu thập táo ngon và tránh gặp con sói. -**Học Tăng Cường** (RL) là một kỹ thuật học cho phép chúng ta học hành vi tối ưu của một **tác nhân** trong một **môi trường** bằng cách thực hiện nhiều thử nghiệm. Một tác nhân trong môi trường này cần có một **mục tiêu**, được định nghĩa bởi một **hàm phần thưởng**. +**Học tăng cường** (RL) là một kỹ thuật học tập cho phép ta học hành vi tối ưu của một **tác nhân** trong một **môi trường** nào đó bằng cách thực hiện nhiều thử nghiệm. Một tác nhân trong môi trường này sẽ có một **mục tiêu**, được xác định bởi một **hàm phần thưởng**. ## Môi trường -Để đơn giản, hãy xem thế giới của Peter là một bảng vuông có kích thước `width` x `height`, như sau: +Để đơn giản, ta coi thế giới của Peter là một bàn cờ vuông có kích thước `width` x `height`, như sau: -![Môi trường của Peter](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![Môi trường của Peter](../../../../translated_images/vi/environment.40ba3cb66256c93f.webp) -Mỗi ô trong bảng này có thể là: +Mỗi ô trong bàn cờ này có thể là: -* **mặt đất**, nơi Peter và các sinh vật khác có thể đi lại. -* **nước**, nơi bạn rõ ràng không thể đi lại. -* một **cây** hoặc **cỏ**, nơi bạn có thể nghỉ ngơi. -* một **quả táo**, thứ mà Peter sẽ rất vui khi tìm thấy để ăn. -* một **con sói**, thứ nguy hiểm và cần tránh. +* **đất**, nơi mà Peter và các sinh vật khác có thể đi lại. +* **nước**, nơi mà rõ ràng bạn không thể đi lại. +* một **cây** hoặc **cỏ**, nơi để bạn nghỉ ngơi. +* một **quả táo**, đại diện cho thứ mà Peter sẽ vui mừng tìm thấy để tự nuôi mình. +* một **con sói**, rất nguy hiểm và cần tránh. -Có một module Python riêng biệt, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), chứa mã để làm việc với môi trường này. Vì mã này không quan trọng để hiểu các khái niệm của chúng ta, chúng ta sẽ nhập module và sử dụng nó để tạo bảng mẫu (code block 1): +Có một module Python riêng, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py), chứa mã xử lý môi trường này. Vì mã này không quan trọng cho việc hiểu các khái niệm của ta, ta sẽ nhập module này và dùng nó để tạo bàn cờ mẫu (khối mã 1): ```python from rlboard import * @@ -52,15 +52,15 @@ m.randomize(seed=13) m.plot() ``` -Mã này sẽ in ra hình ảnh của môi trường tương tự như hình trên. +Mã này sẽ in ra hình ảnh của môi trường tương tự như hình ở trên. ## Hành động và chính sách -Trong ví dụ của chúng ta, mục tiêu của Peter là tìm được quả táo, đồng thời tránh con sói và các chướng ngại vật khác. Để làm điều này, anh ta có thể đi lại cho đến khi tìm thấy quả táo. +Trong ví dụ của ta, mục tiêu của Peter là tìm được quả táo, đồng thời tránh con sói và các chướng ngại khác. Để làm điều này, anh ta có thể đi lang thang cho đến khi tìm thấy quả táo. Do đó, tại bất kỳ vị trí nào, anh ta có thể chọn một trong các hành động sau: lên, xuống, trái và phải. -Chúng ta sẽ định nghĩa các hành động đó dưới dạng một từ điển và ánh xạ chúng tới các cặp thay đổi tọa độ tương ứng. Ví dụ, di chuyển sang phải (`R`) sẽ tương ứng với cặp `(1,0)`. (code block 2): +Ta sẽ định nghĩa những hành động này dưới dạng một từ điển, và ánh xạ chúng thành các cặp thay đổi tọa độ tương ứng. Ví dụ, di chuyển sang phải (`R`) sẽ tương ứng với cặp `(1,0)`. (khối mã 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()) } Tóm lại, chiến lược và mục tiêu của kịch bản này như sau: -- **Chiến lược**, của tác nhân (Peter) được định nghĩa bởi một cái gọi là **chính sách**. Chính sách là một hàm trả về hành động tại bất kỳ trạng thái nào. Trong trường hợp của chúng ta, trạng thái của vấn đề được biểu diễn bởi bảng, bao gồm vị trí hiện tại của người chơi. +- **Chiến lược**, của tác nhân ta (Peter) được xác định bởi cái gọi là **chính sách**. Chính sách là một hàm trả về hành động tại bất kỳ trạng thái nào. Trong trường hợp của ta, trạng thái của bài toán được biểu diễn bằng bàn cờ, bao gồm vị trí hiện tại của người chơi. -- **Mục tiêu**, của học tăng cường là cuối cùng học được một chính sách tốt cho phép chúng ta giải quyết vấn đề một cách hiệu quả. Tuy nhiên, như một cơ sở, hãy xem xét chính sách đơn giản nhất gọi là **đi bộ ngẫu nhiên**. +- **Mục tiêu**, của học tăng cường là cuối cùng học được một chính sách tốt cho phép ta giải quyết bài toán hiệu quả. Tuy nhiên, như một điểm khởi đầu, ta sẽ xem xét chính sách đơn giản nhất gọi là **đi lang thang ngẫu nhiên**. -## Đi bộ ngẫu nhiên +## Đi lang thang ngẫu nhiên -Hãy giải quyết vấn đề của chúng ta bằng cách triển khai chiến lược đi bộ ngẫu nhiên. Với đi bộ ngẫu nhiên, chúng ta sẽ chọn ngẫu nhiên hành động tiếp theo từ các hành động được phép, cho đến khi chúng ta đạt được quả táo (code block 3). +Trước hết, hãy giải bài toán bằng cách triển khai chiến lược đi lang thang ngẫu nhiên. Với đi lang thang ngẫu nhiên, ta sẽ chọn ngẫu nhiên hành động tiếp theo từ các hành động được phép, cho đến khi ta đến được quả táo (khối mã 3). -1. Triển khai đi bộ ngẫu nhiên với mã dưới đây: +1. Triển khai đi lang thang ngẫu nhiên với đoạn mã bên dưới: ```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 # số bước + # đặt vị trí ban đầu if start_position: m.human = start_position else: m.random_start() while True: if m.at() == Board.Cell.apple: - return n # success! + return n # thành công! if m.at() in [Board.Cell.wolf, Board.Cell.water]: - return -1 # eaten by wolf or drowned + return -1 # bị sói ăn hoặc chết đuối 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) # thực hiện di chuyển thực tế break n+=1 walk(m,random_policy) ``` - Lệnh gọi `walk` sẽ trả về độ dài của đường đi tương ứng, có thể thay đổi từ lần chạy này sang lần chạy khác. + Lời gọi hàm `walk` sẽ trả về chiều dài của đường đi tương ứng, có thể thay đổi trong mỗi lần chạy. -1. Thực hiện thử nghiệm đi bộ một số lần (ví dụ, 100 lần), và in ra thống kê kết quả (code block 4): +1. Chạy thí nghiệm đi lang thang nhiều lần (ví dụ 100 lần), và in ra thống kê kết quả (khối mã 4): ```python def print_statistics(policy): @@ -125,17 +125,17 @@ Hãy giải quyết vấn đề của chúng ta bằng cách triển khai chiế print_statistics(random_policy) ``` - Lưu ý rằng độ dài trung bình của một đường đi là khoảng 30-40 bước, khá nhiều, trong khi khoảng cách trung bình đến quả táo gần nhất là khoảng 5-6 bước. + Lưu ý rằng chiều dài trung bình của một đường đi khoảng 30-40 bước, khá lớn, trong khi khoảng cách trung bình đến quả táo gần nhất là khoảng 5-6 bước. - Bạn cũng có thể xem chuyển động của Peter trong quá trình đi bộ ngẫu nhiên: + Bạn cũng có thể xem chuyển động của Peter trong quá trình đi lang thang ngẫu nhiên: - ![Đi bộ ngẫu nhiên của Peter](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) + ![Đi lang thang ngẫu nhiên của Peter](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) ## Hàm phần thưởng -Để làm cho chính sách của chúng ta thông minh hơn, chúng ta cần hiểu hành động nào "tốt hơn" hành động khác. Để làm điều này, chúng ta cần định nghĩa mục tiêu của mình. +Để làm cho chính sách của ta thông minh hơn, ta cần hiểu hành động nào "tốt hơn" những hành động khác. Để làm điều này, ta cần xác định mục tiêu của mình. -Mục tiêu có thể được định nghĩa dưới dạng một **hàm phần thưởng**, hàm này sẽ trả về một giá trị điểm cho mỗi trạng thái. Số càng cao, hàm phần thưởng càng tốt. (code block 5) +Mục tiêu có thể được định nghĩa qua một **hàm phần thưởng**, hàm này sẽ trả về giá trị điểm cho mỗi trạng thái. Số càng cao, phần thưởng càng tốt. (khối mã 5) ```python move_reward = -0.1 @@ -154,39 +154,115 @@ def reward(m,pos=None): return move_reward ``` -Một điều thú vị về các hàm phần thưởng là trong hầu hết các trường hợp, *chúng ta chỉ nhận được phần thưởng đáng kể vào cuối trò chơi*. Điều này có nghĩa là thuật toán của chúng ta cần phải nhớ các bước "tốt" dẫn đến phần thưởng tích cực ở cuối, và tăng tầm quan trọng của chúng. Tương tự, tất cả các bước dẫn đến kết quả xấu cần bị giảm giá trị. +Một điều thú vị về hàm phần thưởng là trong hầu hết các trường hợp, *ta chỉ nhận được phần thưởng lớn vào cuối trò chơi*. Điều này nghĩa là thuật toán của ta phải nhớ lại những bước "tốt" dẫn đến phần thưởng tích cực ở cuối, và tăng tầm quan trọng của chúng. Tương tự, tất cả các bước đi dẫn đến kết quả xấu nên bị hạn chế. ## Q-Learning -Thuật toán mà chúng ta sẽ thảo luận ở đây được gọi là **Q-Learning**. Trong thuật toán này, chính sách được định nghĩa bởi một hàm (hoặc cấu trúc dữ liệu) gọi là **Q-Table**. Nó ghi lại "mức độ tốt" của mỗi hành động trong một trạng thái nhất định. +Một thuật toán mà ta sẽ thảo luận ở đây gọi là **Q-Learning**. Trong thuật toán này, chính sách được định nghĩa bởi một hàm (hoặc cấu trúc dữ liệu) gọi là **Bảng Q**. Nó ghi lại mức độ "tốt" của mỗi hành động trong một trạng thái nhất định. -Nó được gọi là Q-Table vì thường tiện lợi để biểu diễn nó dưới dạng một bảng, hoặc mảng đa chiều. Vì bảng của chúng ta có kích thước `width` x `height`, chúng ta có thể biểu diễn Q-Table bằng một mảng numpy với hình dạng `width` x `height` x `len(actions)`: (code block 6) +Nó được gọi là Bảng Q vì thường thuận tiện khi biểu diễn nó dưới dạng bảng hoặc mảng đa chiều. Vì bàn cờ của ta có kích thước `width` x `height`, ta có thể biểu diễn Bảng Q bằng một numpy array có hình dạng `width` x `height` x `len(actions)`: (khối mã 6) ```python Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions) ``` -Lưu ý rằng chúng ta khởi tạo tất cả các giá trị của Q-Table với một giá trị bằng nhau, trong trường hợp của chúng ta là 0.25. Điều này tương ứng với chính sách "đi bộ ngẫu nhiên", vì tất cả các hành động trong mỗi trạng thái đều tốt như nhau. Chúng ta có thể truyền Q-Table vào hàm `plot` để trực quan hóa bảng trên bảng: `m.plot(Q)`. +Lưu ý rằng ta khởi tạo tất cả giá trị của Bảng Q với giá trị bằng nhau, trong trường hợp này là 0.25. Điều này tương ứng với chính sách "đi lang thang ngẫu nhiên", vì tất cả các hành động trong mỗi trạng thái đều như nhau. Ta có thể truyền Bảng Q cho hàm `plot` để trực quan hóa bảng trên bàn cờ: `m.plot(Q)`. -![Môi trường của Peter](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![Môi trường của Peter](../../../../translated_images/vi/env_init.04e8f26d2d60089e.webp) -Ở trung tâm của mỗi ô có một "mũi tên" chỉ hướng di chuyển ưu tiên. Vì tất cả các hướng đều bằng nhau, một dấu chấm được hiển thị. +Ở trung tâm mỗi ô có một "mũi tên" chỉ hướng di chuyển được ưu tiên. Vì tất cả các hướng bằng nhau, một dấu chấm được hiển thị. -Bây giờ chúng ta cần chạy mô phỏng, khám phá môi trường của mình, và học một phân phối giá trị Q-Table tốt hơn, điều này sẽ cho phép chúng ta tìm đường đến quả táo nhanh hơn nhiều. +Giờ ta cần chạy mô phỏng, khám phá môi trường và học một phân bố giá trị Bảng Q tốt hơn, giúp ta tìm đường đến quả táo nhanh hơn nhiều. ## Bản chất của Q-Learning: Phương trình Bellman -Khi chúng ta bắt đầu di chuyển, mỗi hành động sẽ có một phần thưởng tương ứng, tức là chúng ta có thể lý thuyết chọn hành động tiếp theo dựa trên phần thưởng ngay lập tức cao nhất. Tuy nhiên, trong hầu hết các trạng thái, hành động sẽ không đạt được mục tiêu của chúng ta là đến quả táo, và do đó chúng ta không thể ngay lập tức quyết định hướng nào tốt hơn. +Khi ta bắt đầu di chuyển, mỗi hành động sẽ có phần thưởng tương ứng, tức là ta có thể chọn hành động tiếp theo dựa trên phần thưởng tức thì cao nhất. Tuy nhiên, trong hầu hết trạng thái, bước đi sẽ không đạt mục tiêu là tìm được quả táo, nên ta không thể ngay lập tức quyết định hướng nào tốt hơn. -> Hãy nhớ rằng điều quan trọng không phải là kết quả ngay lập tức, mà là kết quả cuối cùng, mà chúng ta sẽ đạt được vào cuối mô phỏng. +> Hãy nhớ rằng điều quan trọng không phải kết quả tức thì, mà là kết quả cuối cùng mà ta sẽ thu được khi kết thúc mô phỏng. -Để tính đến phần thưởng bị trì hoãn này, chúng ta cần sử dụng các nguyên tắc của **[lập trình động](https://en.wikipedia.org/wiki/Dynamic_programming)**, cho phép chúng ta suy nghĩ về vấn đề của mình một cách đệ quy. +Để tính đến phần thưởng trì hoãn này, ta cần sử dụng nguyên lý của **[lập trình động](https://en.wikipedia.org/wiki/Dynamic_programming)**, cho phép suy nghĩ bài toán một cách đệ quy. -Giả sử chúng ta đang ở trạng thái *s*, và chúng ta muốn di chuyển đến trạng thái tiếp theo *s'*. Bằng cách làm như vậy, chúng ta sẽ nhận được phần thưởng ngay lập tức *r(s,a)*, được định nghĩa bởi hàm phần thưởng, cộng với một phần thưởng tương lai. Nếu chúng ta giả sử rằng Q-Table của chúng ta phản ánh chính xác "sự hấp dẫn" của mỗi hành động, thì tại trạng thái *s'* chúng ta sẽ chọn một hành động *a* tương ứng với giá trị tối đa của *Q(s',a')*. Do đó, phần thưởng tương lai tốt nhất có thể mà chúng ta có thể nhận được tại trạng thái *s* sẽ được định nghĩa là `max` +Giả sử ta đang ở trạng thái *s*, và muốn di chuyển sang trạng thái tiếp theo *s'*. Khi làm vậy, ta sẽ nhận phần thưởng tức thì *r(s,a)*, do hàm phần thưởng xác định, cộng với một phần thưởng trong tương lai. Nếu giả sử Bảng Q của ta phản ánh đúng "sức hấp dẫn" của mỗi hành động, thì tại trạng thái *s'* ta sẽ chọn hành động *a* tương ứng với giá trị tối đa của *Q(s',a')*. Do đó, phần thưởng tương lai tốt nhất tại trạng thái *s* được định nghĩa là `max`a'*Q(s',a')* (giá trị tối đa ở đây được tính trên tất cả các hành động *a'* có thể tại trạng thái *s'*). + +Điều này dẫn đến **công thức Bellman** để tính giá trị Bảng Q tại trạng thái *s*, với hành động *a*: + + + +Ở đây γ là hệ số giảm giá (**discount factor**) xác định mức độ bạn ưu tiên phần thưởng hiện tại hơn phần thưởng tương lai và ngược lại. + +## Thuật toán học + +Với phương trình trên, ta có thể viết mã giả cho thuật toán học: + +* Khởi tạo Bảng Q với các giá trị bằng nhau cho tất cả trạng thái và hành động +* Đặt tốc độ học α ← 1 +* Lặp lại mô phỏng nhiều lần + 1. Bắt đầu tại vị trí ngẫu nhiên + 1. Lặp lại + 1. Chọn hành động *a* tại trạng thái *s* + 2. Thực thi hành động bằng cách di chuyển đến trạng thái mới *s'* + 3. Nếu đạt điều kiện kết thúc trò chơi, hoặc phần thưởng tổng quá nhỏ - thoát mô phỏng + 4. Tính phần thưởng *r* tại trạng thái mới + 5. Cập nhật hàm Q theo phương trình Bellman: *Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ maxa'Q(s',a'))* + 6. *s* ← *s'* + 7. Cập nhật phần thưởng tổng và giảm α. + +## Khám phá vs. lợi dụng + +Trong thuật toán trên, ta chưa chỉ rõ cách chọn hành động tại bước 2.1. Nếu chọn hành động ngẫu nhiên, ta sẽ **khám phá** môi trường ngẫu nhiên, và có khả năng chết nhiều cũng như vào những khu vực thông thường ta không đi đến. Phương án khác là **lợi dụng** các giá trị trong Bảng Q đã biết, để chọn hành động tốt nhất (có giá trị Q cao hơn) tại trạng thái *s*. Tuy nhiên, điều này sẽ ngăn ta khám phá các trạng thái khác và có thể không tìm được giải pháp tối ưu. + +Do đó, cách tốt nhất là cân bằng giữa khám phá và lợi dụng. Điều này có thể thực hiện bằng cách chọn hành động tại trạng thái *s* với xác suất tỉ lệ thuận với giá trị trong Bảng Q. Ban đầu, khi các giá trị trong Bảng Q đều bằng nhau, đó là chọn ngẫu nhiên, nhưng khi ta học được nhiều hơn về môi trường, ta có xu hướng theo đường đi tối ưu đồng thời cho phép tác nhân thỉnh thoảng chọn các đường chưa được khám phá. + +## Triển khai trong Python + +Bây giờ ta sẵn sàng triển khai thuật toán học. Trước đó ta cần một hàm chuyển các giá trị bất kỳ trong Bảng Q thành một vector xác suất cho các hành động tương ứng. + +1. Tạo hàm `probs()`: + + ```python + def probs(v,eps=1e-4): + v = v-v.min()+eps + v = v/v.sum() + return v + ``` + + Ta thêm vài giá trị `eps` vào vector gốc để tránh chia cho 0 trong trường hợp ban đầu, khi tất cả thành phần vector giống nhau. + +Chạy thuật toán học qua 5000 lần thí nghiệm, còn gọi là **epochs**: (khối mã 8) +```python + for epoch in range(5000): + + # Chọn điểm khởi đầu + m.random_start() + + # Bắt đầu di chuyển + 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) # chúng tôi cho phép người chơi di chuyển ra ngoài bàn cờ, điều này sẽ kết thúc tập phim + 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 +``` + +Sau khi thực hiện thuật toán này, Bảng Q sẽ được cập nhật với các giá trị xác định sức hấp dẫn của các hành động khác nhau ở mỗi bước. Ta có thể thử trực quan hóa Bảng Q bằng cách vẽ một vector tại mỗi ô, chỉ vào hướng di chuyển mong muốn. Để đơn giản, ta vẽ một vòng tròn nhỏ thay vì mũi tên. + + ## Kiểm tra chính sách -Vì Q-Table liệt kê "mức độ hấp dẫn" của mỗi hành động tại mỗi trạng thái, nên rất dễ sử dụng nó để xác định cách điều hướng hiệu quả trong thế giới của chúng ta. Trong trường hợp đơn giản nhất, chúng ta có thể chọn hành động tương ứng với giá trị Q-Table cao nhất: (code block 9) +Vì Bảng Q liệt kê mức độ "hấp dẫn" của mỗi hành động tại mỗi trạng thái, ta dễ dàng dùng nó để xác định cách điều hướng hiệu quả trong thế giới của ta. Trong trường hợp đơn giản nhất, ta chọn hành động tương ứng với giá trị Bảng Q cao nhất: (khối mã 9) ```python def qpolicy_strict(m): @@ -198,17 +274,18 @@ def qpolicy_strict(m): walk(m,qpolicy_strict) ``` -> Nếu bạn thử đoạn mã trên nhiều lần, bạn có thể nhận thấy rằng đôi khi nó "bị treo", và bạn cần nhấn nút STOP trong notebook để dừng lại. Điều này xảy ra vì có thể có những tình huống khi hai trạng thái "chỉ" vào nhau về mặt giá trị Q tối ưu, dẫn đến việc agent di chuyển qua lại giữa các trạng thái đó vô thời hạn. + +> Nếu bạn thử chạy mã trên nhiều lần, bạn có thể nhận thấy rằng đôi khi nó "đơ", và bạn cần nhấn nút STOP trong notebook để dừng nó lại. Điều này xảy ra vì có thể có những tình huống khi hai trạng thái "chỉ" vào nhau về giá trị Q tối ưu, trong trường hợp đó tác nhân sẽ di chuyển giữa các trạng thái đó mãi mãi. ## 🚀Thử thách -> **Nhiệm vụ 1:** Sửa đổi hàm `walk` để giới hạn độ dài tối đa của đường đi bằng một số bước nhất định (ví dụ, 100), và xem đoạn mã trên trả về giá trị này theo thời gian. +> **Nhiệm vụ 1:** Sửa đổi hàm `walk` để giới hạn độ dài tối đa của đường đi bằng một số bước nhất định (ví dụ, 100 bước), và quan sát mã trên trả về giá trị này theo thời gian. -> **Nhiệm vụ 2:** Sửa đổi hàm `walk` để không quay lại những nơi mà nó đã từng đi qua trước đó. Điều này sẽ ngăn `walk` lặp lại, tuy nhiên, agent vẫn có thể bị "mắc kẹt" ở một vị trí mà nó không thể thoát ra. +> **Nhiệm vụ 2:** Sửa đổi hàm `walk` sao cho nó không quay lại những nơi đã từng đến trước đó. Điều này sẽ ngăn không cho `walk` bị lặp vòng, tuy nhiên, tác nhân vẫn có thể bị "mắc kẹt" ở một vị trí mà nó không thể thoát ra được. ## Điều hướng -Một chính sách điều hướng tốt hơn sẽ là chính sách mà chúng ta đã sử dụng trong quá trình huấn luyện, kết hợp giữa khai thác và khám phá. Trong chính sách này, chúng ta sẽ chọn mỗi hành động với một xác suất nhất định, tỷ lệ thuận với các giá trị trong Q-Table. Chiến lược này vẫn có thể dẫn đến việc agent quay lại một vị trí mà nó đã khám phá, nhưng như bạn có thể thấy từ đoạn mã dưới đây, nó dẫn đến một đường đi trung bình rất ngắn đến vị trí mong muốn (hãy nhớ rằng `print_statistics` chạy mô phỏng 100 lần): (code block 10) +Chính sách điều hướng tốt hơn là chính sách mà chúng ta đã dùng trong quá trình đào tạo, kết hợp giữa khai thác và khám phá. Trong chính sách này, chúng ta sẽ chọn mỗi hành động với một xác suất nhất định, tỷ lệ thuận với các giá trị trong Bảng Q. Chiến lược này vẫn có thể khiến tác nhân quay lại vị trí đã khám phá, nhưng như bạn có thể thấy từ mã dưới đây, nó dẫn đến độ dài đường đi trung bình rất ngắn đến vị trí mong muốn (hãy nhớ rằng `print_statistics` chạy mô phỏng 100 lần): (khối mã 10) ```python def qpolicy(m): @@ -220,28 +297,32 @@ def qpolicy(m): print_statistics(qpolicy) ``` -Sau khi chạy đoạn mã này, bạn sẽ nhận được độ dài đường đi trung bình nhỏ hơn nhiều so với trước, trong khoảng từ 3-6. +Sau khi chạy đoạn mã này, bạn sẽ nhận được độ dài đường đi trung bình nhỏ hơn nhiều so với trước đây, trong khoảng từ 3-6. + +## Điều tra quá trình học -## Khám phá quá trình học +Như chúng ta đã đề cập, quá trình học là sự cân bằng giữa khám phá và khai thác kiến thức đã thu được về cấu trúc không gian vấn đề. Chúng ta đã thấy kết quả học tập (khả năng giúp tác nhân tìm đường ngắn đến mục tiêu) được cải thiện, nhưng cũng rất thú vị để quan sát cách độ dài đường đi trung bình thay đổi trong quá trình học: -Như chúng ta đã đề cập, quá trình học là sự cân bằng giữa việc khám phá và khai thác kiến thức đã thu được về cấu trúc không gian vấn đề. Chúng ta đã thấy rằng kết quả của việc học (khả năng giúp agent tìm đường ngắn đến mục tiêu) đã được cải thiện, nhưng cũng rất thú vị khi quan sát cách độ dài đường đi trung bình thay đổi trong quá trình học: + -## Tóm tắt bài học: +Các bài học có thể được tóm tắt như sau: -- **Độ dài đường đi trung bình tăng lên**. Điều chúng ta thấy ở đây là ban đầu, độ dài đường đi trung bình tăng lên. Điều này có thể là do khi chúng ta chưa biết gì về môi trường, chúng ta có khả năng bị mắc kẹt ở các trạng thái xấu, như nước hoặc sói. Khi chúng ta học được nhiều hơn và bắt đầu sử dụng kiến thức này, chúng ta có thể khám phá môi trường lâu hơn, nhưng vẫn chưa biết rõ vị trí của những quả táo. +- **Độ dài đường đi trung bình tăng lên**. Những gì ta thấy ở đây là ban đầu, độ dài đường đi trung bình tăng lên. Điều này có thể do khi ta không biết gì về môi trường, ta dễ bị mắc kẹt ở các trạng thái xấu, như nước hay sói. Khi ta học nhiều hơn và bắt đầu sử dụng kiến thức này, ta có thể khám phá môi trường lâu hơn, nhưng vẫn chưa biết rõ vị trí các quả táo. -- **Độ dài đường đi giảm khi học được nhiều hơn**. Khi chúng ta học đủ, việc đạt được mục tiêu trở nên dễ dàng hơn đối với agent, và độ dài đường đi bắt đầu giảm. Tuy nhiên, chúng ta vẫn mở rộng khám phá, vì vậy chúng ta thường đi lệch khỏi đường đi tốt nhất và khám phá các lựa chọn mới, làm cho đường đi dài hơn mức tối ưu. +- **Độ dài đường đi giảm dần khi ta học nhiều hơn**. Khi ta học đủ nhiều, việc đạt mục tiêu trở nên dễ dàng hơn cho tác nhân, và độ dài đường đi bắt đầu giảm. Tuy nhiên, ta vẫn mở rộng khám phá, nên thường xuyên đi lệch khỏi đường đi tốt nhất, và thử các lựa chọn mới, làm đường đi dài hơn mức tối ưu. -- **Độ dài tăng đột ngột**. Điều chúng ta cũng quan sát được trên biểu đồ này là tại một số thời điểm, độ dài tăng đột ngột. Điều này cho thấy tính ngẫu nhiên của quá trình, và rằng chúng ta có thể "làm hỏng" các hệ số Q-Table bằng cách ghi đè chúng với các giá trị mới. Điều này lý tưởng nên được giảm thiểu bằng cách giảm tốc độ học (ví dụ, về cuối quá trình huấn luyện, chúng ta chỉ điều chỉnh các giá trị Q-Table bằng một giá trị nhỏ). +- **Độ dài tăng đột ngột**. Ta cũng quan sát thấy trong biểu đồ này là vào một số thời điểm, độ dài tăng đột ngột. Điều này cho thấy tính ngẫu nhiên của quá trình, và ta có thể "làm hỏng" các hệ số trong Bảng Q bằng cách ghi đè chúng với các giá trị mới. Việc này lý tưởng nên được giảm thiểu bằng cách giảm tốc độ học (ví dụ, về cuối khóa đào tạo, ta chỉ điều chỉnh các giá trị trong Bảng Q một lượng nhỏ). -Nhìn chung, điều quan trọng cần nhớ là sự thành công và chất lượng của quá trình học phụ thuộc đáng kể vào các tham số, như tốc độ học, sự giảm tốc độ học, và hệ số chiết khấu. Những tham số này thường được gọi là **siêu tham số**, để phân biệt với **tham số**, mà chúng ta tối ưu trong quá trình huấn luyện (ví dụ, các hệ số Q-Table). Quá trình tìm giá trị siêu tham số tốt nhất được gọi là **tối ưu hóa siêu tham số**, và nó xứng đáng là một chủ đề riêng. +Tổng thể, quan trọng để nhớ rằng thành công và chất lượng của quá trình học phụ thuộc rất nhiều vào các tham số, như tốc độ học, sự suy giảm tốc độ học, và hệ số chiết khấu. Những tham số này thường gọi là **siêu tham số**, để phân biệt với **tham số**, là các giá trị chúng ta tối ưu trong quá trình đào tạo (ví dụ, các hệ số trong Bảng Q). Quá trình tìm giá trị siêu tham số tốt nhất được gọi là **tối ưu hóa siêu tham số**, và đây là một chủ đề riêng biệt. -## [Câu hỏi sau bài giảng](https://ff-quizzes.netlify.app/en/ml/) +## [Bài kiểm tra sau bài giảng](https://ff-quizzes.netlify.app/en/ml/) ## Bài tập [Một thế giới thực tế hơn](assignment.md) --- -**Tuyên bố miễn trừ trách nhiệm**: -Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp bởi con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng bản dịch tự động có thể chứa lỗi hoặc sai sót. Tài liệu gốc bằng ngôn ngữ gốc nên được coi là nguồn tin chính thức. Đối với thông tin quan trọng, nên sử dụng dịch vụ dịch thuật chuyên nghiệp bởi con người. Chúng tôi không chịu trách nhiệm về bất kỳ hiểu lầm hoặc giải thích sai nào phát sinh từ việc sử dụng bản dịch này. + \ No newline at end of file diff --git a/translations/zh-CN/.co-op-translator.json b/translations/zh-CN/.co-op-translator.json index 190501caf..5bce0be2d 100644 --- a/translations/zh-CN/.co-op-translator.json +++ b/translations/zh-CN/.co-op-translator.json @@ -24,8 +24,8 @@ "language_code": "zh-CN" }, "1-Introduction/3-fairness/README.md": { - "original_hash": "9a6b702d1437c0467e3c5c28d763dac2", - "translation_date": "2025-09-05T09:04:06+00:00", + "original_hash": "0f00d72169a0d37eecfd16d71e01700a", + "translation_date": "2026-07-14T03:40:24+00:00", "source_file": "1-Introduction/3-fairness/README.md", "language_code": "zh-CN" }, @@ -54,8 +54,8 @@ "language_code": "zh-CN" }, "2-Regression/1-Tools/README.md": { - "original_hash": "fa81d226c71d5af7a2cade31c1c92b88", - "translation_date": "2025-09-05T08:58:09+00:00", + "original_hash": "0b8635427b582d03ea4ab7089b93e505", + "translation_date": "2026-07-14T03:37:00+00:00", "source_file": "2-Regression/1-Tools/README.md", "language_code": "zh-CN" }, @@ -72,8 +72,8 @@ "language_code": "zh-CN" }, "2-Regression/2-Data/README.md": { - "original_hash": "7c077988328ebfe33b24d07945f16eca", - "translation_date": "2025-09-05T08:58:47+00:00", + "original_hash": "a58b2c4d16c6b122643391745ac15af6", + "translation_date": "2026-07-14T03:38:52+00:00", "source_file": "2-Regression/2-Data/README.md", "language_code": "zh-CN" }, @@ -89,6 +89,12 @@ "source_file": "2-Regression/2-Data/solution/Julia/README.md", "language_code": "zh-CN" }, + "2-Regression/2-Data/solution/notebook.ipynb": { + "original_hash": "96b95f8cf473481f2f371de8156f1571", + "translation_date": "2026-07-14T03:19:58+00:00", + "source_file": "2-Regression/2-Data/solution/notebook.ipynb", + "language_code": "zh-CN" + }, "2-Regression/3-Linear/README.md": { "original_hash": "8b776e731c35b171d316d01d0e7b1369", "translation_date": "2026-04-26T19:52:07+00:00", @@ -115,7 +121,7 @@ }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", - "translation_date": "2025-09-05T08:57:14+00:00", + "translation_date": "2026-07-14T03:37:54+00:00", "source_file": "2-Regression/4-Logistic/README.md", "language_code": "zh-CN" }, @@ -457,7 +463,7 @@ }, "8-Reinforcement/1-QLearning/README.md": { "original_hash": "911efd5e595089000cb3c16fce1beab8", - "translation_date": "2025-09-05T09:09:02+00:00", + "translation_date": "2026-07-14T03:39:43+00:00", "source_file": "8-Reinforcement/1-QLearning/README.md", "language_code": "zh-CN" }, @@ -581,6 +587,19 @@ "source_file": "TROUBLESHOOTING.md", "language_code": "zh-CN" }, + "__translation_failures__": { + "sketchnotes/LICENSE.md": { + "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f", + "source_file": "sketchnotes/LICENSE.md", + "language_code": "zh-CN", + "failure_date": "2026-07-14T03:36: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-03T17:21:14+00:00", diff --git a/translations/zh-CN/1-Introduction/3-fairness/README.md b/translations/zh-CN/1-Introduction/3-fairness/README.md index d1c37b637..0d5070632 100644 --- a/translations/zh-CN/1-Introduction/3-fairness/README.md +++ b/translations/zh-CN/1-Introduction/3-fairness/README.md @@ -1,161 +1,167 @@ -# 构建负责任的人工智能的机器学习解决方案 - -![机器学习中负责任人工智能的概要图](../../../../sketchnotes/ml-fairness.png) -> 由 [Tomomi Imura](https://www.twitter.com/girlie_mac) 绘制的概要图 +# 使用负责任的 AI 构建机器学习解决方案 + +![机器学习中负责任的 AI 摘要的手绘笔记](../../../../translated_images/zh-CN/ml-fairness.ef296ebec6afc98a.webp) +> 手绘笔记作者:[Tomomi Imura](https://www.twitter.com/girlie_mac) ## [课前测验](https://ff-quizzes.netlify.app/en/ml/) + +## 介绍 -## 简介 - -在本课程中,您将开始了解机器学习如何以及正在影响我们的日常生活。即使是现在,系统和模型已经参与了日常决策任务,例如医疗诊断、贷款审批或欺诈检测。因此,确保这些模型能够提供值得信赖的结果非常重要。与任何软件应用程序一样,人工智能系统可能会未达到预期或产生不理想的结果。这就是为什么理解和解释人工智能模型的行为至关重要。 +在本课程中,你将开始了解机器学习如何以及正在影响我们的日常生活。即使在现在,系统和模型也参与日常决策任务,比如医疗诊断、贷款审批或欺诈检测。因此,这些模型能够良好运行并提供可信结果是非常重要的。就像任何软件应用一样,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://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "微软的负责任人工智能方法") +[![微软的负责任 AI 方法](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "微软的负责任 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) +- 诋毁。不公平地批评并给某物或某人贴标签。例如,某图像标签技术臭名昭著地将深色皮肤的人错误标注为猩猩。 +- 过度或不足代表。某一群体在某职业中不被看到,而任何持续促进这种状况的服务或功能都会造成伤害。 +- 刻板印象。将某一群体与预设属性关联。例如,英土语言翻译系统因词语存在性别刻板联想而产生不准确。 -![翻译成土耳其语](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) +![翻译成土耳其语](../../../../translated_images/zh-CN/gender-bias-translate-en-tr.f185fd8822c2d437.webp) > 翻译成土耳其语 -![翻译回英语](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) -> 翻译回英语 +![再翻译回英语](../../../../translated_images/zh-CN/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) +> 再翻译回英语 -在设计和测试人工智能系统时,我们需要确保人工智能是公平的,并且不会被编程为做出偏见或歧视性的决策,这些决策也是人类被禁止做出的。确保人工智能和机器学习的公平性仍然是一个复杂的社会技术挑战。 +在设计和测试 AI 系统时,我们需要确保 AI 公平且不被编程为做出偏见或歧视性决策,这些行为对人类也是被禁止的。保证 AI 和机器学习中的公平性仍然是复杂的社会技术挑战。 ### 可靠性与安全性 -为了建立信任,人工智能系统需要在正常和意外情况下保持可靠、安全和一致。了解人工智能系统在各种情况下的行为尤其重要,特别是当它们处于异常值时。在构建人工智能解决方案时,需要重点关注如何处理人工智能解决方案可能遇到的各种情况。例如,一辆自动驾驶汽车需要将人的安全作为首要任务。因此,驱动汽车的人工智能需要考虑汽车可能遇到的所有可能场景,例如夜晚、雷暴或暴风雪、孩子跑过街道、宠物、道路施工等。人工智能系统在各种条件下可靠安全地处理问题的能力反映了数据科学家或人工智能开发人员在设计或测试系统时的预见水平。 +为建立信任,AI 系统需要在正常和异常情况下可靠、安全且一致。重要的是了解 AI 系统在各种情况下,尤其是异常情况下的表现。当构建 AI 解决方案时,必须重点关注如何处理 AI 解决方案可能遇到的各种情况。例如,自动驾驶汽车必须将人们的安全作为首要任务。因此,驱动汽车的 AI 需要考虑汽车可能遇到的所有场景,比如夜晚、雷暴或暴风雪、街上奔跑的孩子、宠物、道路施工等。AI 系统在各种条件下能多好地可靠安全地运行,反映了数据科学家或 AI 开发人员在设计或测试系统时的预见程度。 -> [🎥 点击此处观看视频:](https://www.microsoft.com/videoplayer/embed/RE4vvIl) +> [🎥 点击这里观看视频:](https://www.microsoft.com/videoplayer/embed/RE4vvIl) ### 包容性 -人工智能系统应设计为能够吸引和赋能所有人。在设计和实施人工智能系统时,数据科学家和人工智能开发人员需要识别并解决系统中可能无意间排除某些人的潜在障碍。例如,全球有10亿残疾人。随着人工智能的进步,他们可以更轻松地获取广泛的信息和机会。通过解决这些障碍,可以创造创新机会,开发具有更好体验的人工智能产品,从而惠及所有人。 +AI 系统应设计为能够吸引并赋能所有人。在设计和实施 AI 系统时,数据科学家和 AI 开发人员会识别并解决系统中可能无意间排斥特定人群的障碍。例如,全球有 10 亿残疾人。随着 AI 进步,他们可以更容易地在日常生活中访问各种信息和机会。通过解决这些障碍,创造机会创新并开发出更好体验的 AI 产品,造福所有人。 -> [🎥 点击此处观看视频:人工智能中的包容性](https://www.microsoft.com/videoplayer/embed/RE4vl9v) +> [🎥 点击这里观看视频:AI 中的包容性](https://www.microsoft.com/videoplayer/embed/RE4vl9v) ### 安全与隐私 -人工智能系统应安全并尊重个人隐私。人们对那些可能危及隐私、信息或生命的系统信任度较低。在训练机器学习模型时,我们依赖数据以获得最佳结果。在此过程中,必须考虑数据的来源和完整性。例如,数据是用户提交的还是公开可用的?接下来,在处理数据时,开发人工智能系统时必须能够保护机密信息并抵御攻击。随着人工智能的普及,保护隐私和确保重要的个人和商业信息的安全变得越来越重要和复杂。隐私和数据安全问题需要特别关注人工智能,因为数据访问对于人工智能系统做出准确和知情的预测以及关于人的决策至关重要。 - -> [🎥 点击此处观看视频:人工智能中的安全性](https://www.microsoft.com/videoplayer/embed/RE4voJF) +AI 系统应安全可靠并尊重人们的隐私。人们对可能危及其隐私、信息或生命安全的系统信任较低。在训练机器学习模型时,我们依赖数据以获取最佳结果。在此过程中,必须考虑数据的来源和完整性。例如,数据是用户提交的还是公开可用的?其次,在处理数据时,开发 AI 系统保护机密信息、抵御攻击至关重要。随着 AI 更加普及,保护隐私和重要个人及商业信息的安全变得越发关键且复杂。隐私和数据安全问题对 AI 尤为重要,因为 AI 需要访问数据才能对人们做出准确且有信息支持的预测和决策。 -- 在行业中,我们在隐私和安全方面取得了显著进展,这在很大程度上得益于像GDPR(通用数据保护条例)这样的法规。 -- 然而,对于人工智能系统,我们必须承认需要更多个人数据以使系统更个性化和有效——与隐私之间的紧张关系。 -- 就像互联网连接的计算机诞生一样,我们也看到了与人工智能相关的安全问题数量的巨大增长。 -- 同时,我们也看到人工智能被用于改善安全性。例如,大多数现代杀毒扫描器今天都由人工智能启发式驱动。 -- 我们需要确保我们的数据科学流程与最新的隐私和安全实践和谐融合。 +> [🎥 点击这里观看视频:AI 中的安全](https://www.microsoft.com/videoplayer/embed/RE4voJF) -### 透明性 +- 作为行业,我们在隐私与安全上取得了重大进展,这在很大程度上得益于诸如 GDPR(通用数据保护条例)等法规。 +- 然而在 AI 系统中,我们必须承认使系统更个性化、更有效所需的更多个人数据与隐私保护之间存在紧张关系。 +- 就像互联网诞生时连接计算机的兴起,我们也看到与 AI 相关的安全问题数量大幅增加。 +- 同时,我们看到 AI 被用于提升安全性。例如,大多数现代杀毒扫描器如今都依赖 AI 启发式技术。 +- 我们需要确保数据科学流程与最新的隐私及安全实践和谐融合。 -人工智能系统应易于理解。透明性的一个关键部分是解释人工智能系统及其组件的行为。提高对人工智能系统的理解需要利益相关者能够理解它们的功能和原因,以便识别潜在的性能问题、安全和隐私问题、偏见、排他性实践或意外结果。我们还认为,使用人工智能系统的人应该诚实并坦率地说明何时、为何以及如何选择部署它们,以及所使用系统的局限性。例如,如果一家银行使用人工智能系统来支持其消费者贷款决策,那么审查结果并了解哪些数据影响系统的推荐是很重要的。政府开始对各行业的人工智能进行监管,因此数据科学家和组织必须解释人工智能系统是否符合监管要求,特别是在出现不理想结果时。 -> [🎥 点击此处观看视频:人工智能中的透明性](https://www.microsoft.com/videoplayer/embed/RE4voJF) +### 透明度 +AI 系统应当易于理解。透明度的关键部分是解释 AI 系统及其组件的行为。提升对 AI 系统的理解要求利益相关者明白它们如何以及为何工作,这样能识别潜在的性能问题、安全与隐私担忧、偏见、排他性做法或意外结果。我们还认为,使用 AI 系统的人应坦诚公开何时、为何及如何选择部署它们,以及所用系统的局限性。例如,银行若使用 AI 系统支持其消费贷款决策,重要的是审查结果并了解哪些数据影响系统建议。政府正开始对行业中的 AI 进行监管,因此数据科学家和组织必须解释 AI 系统是否符合监管要求,尤其当出现不良结果时。 -- 由于人工智能系统非常复杂,很难理解它们的工作原理并解释结果。 -- 这种理解的缺乏影响了这些系统的管理、操作化和文档化方式。 -- 更重要的是,这种理解的缺乏影响了使用这些系统产生的结果所做出的决策。 +> [🎥 点击这里观看视频:AI 中的透明度](https://www.microsoft.com/videoplayer/embed/RE4voJF) -### 责任感 +- 由于 AI 系统十分复杂,难以理解其工作原理并解释结果。 +- 这种理解缺失影响系统的管理、运营和文档化。 +- 更重要的是,这种缺失影响基于系统结果所做的决策。 -设计和部署人工智能系统的人必须对其系统的运行负责。责任感对于敏感技术的使用尤其重要,例如面部识别技术。最近,面部识别技术的需求不断增长,尤其是执法机构,他们看到了该技术在寻找失踪儿童等用途上的潜力。然而,这些技术可能会被政府用于威胁公民的基本自由,例如对特定个人进行持续监控。因此,数据科学家和组织需要对其人工智能系统对个人或社会的影响负责。 +### 问责制 + +设计和部署 AI 系统的人必须对其系统的运行负责。对于诸如面部识别这样的敏感技术,问责制尤为重要。最近,对面部识别技术的需求增长,特别是在执法机构中,他们看到这项技术在寻找失踪儿童等用途的潜力。然而,政府可能利用这些技术威胁公民的基本自由,如启用对特定个人的持续监控。因此,数据科学家和组织需要对其 AI 系统对个人或社会的影响负责。 -[![领先的人工智能研究人员警告面部识别可能导致大规模监控](../../../../1-Introduction/3-fairness/images/accountability.png)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "微软的负责任人工智能方法") +[![领先的 AI 研究者警告通过面部识别进行大规模监控](../../../../translated_images/zh-CN/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "微软的负责任 AI 方法") -> 🎥 点击上方图片观看视频:面部识别可能导致大规模监控的警告 +> 🎥 点击上图观看视频:通过面部识别进行大规模监控的警告 -最终,对于我们这一代人来说,作为将人工智能引入社会的第一代人,最大的一个问题是如何确保计算机始终对人类负责,以及如何确保设计计算机的人对其他人负责。 +归根结底,对我们这一代(作为推动 AI 进入社会的第一代人)来说,最大的一个问题是如何确保计算机对人类负责,以及如何保证设计计算机的人们对其他所有人负责。 ## 影响评估 -在训练机器学习模型之前,进行影响评估以了解人工智能系统的目的、预期用途、部署地点以及与系统交互的人非常重要。这些评估有助于评审者或测试人员在识别潜在风险和预期后果时知道需要考虑哪些因素。 +在训练机器学习模型之前,进行影响评估很重要,以了解 AI 系统的目的;预期用途;部署地点;以及系统将与谁交互。对于评审员或测试人员评估系统时,了解这些有助于确定识别潜在风险和预期后果时应考虑的因素。 -以下是进行影响评估时的重点领域: +进行影响评估时关注的领域包括: -* **对个人的不利影响**:意识到任何限制或要求、不支持的用途或任何已知限制影响系统性能至关重要,以确保系统不会以可能对个人造成伤害的方式使用。 -* **数据要求**:了解系统如何以及在哪里使用数据使评审者能够探索需要注意的任何数据要求(例如GDPR或HIPPA数据法规)。此外,检查数据的来源或数量是否足够用于训练。 -* **影响摘要**:收集使用系统可能产生的潜在危害列表。在机器学习生命周期中,审查是否解决或处理了识别的问题。 -* **六项核心原则的适用目标**:评估每项原则的目标是否达成,以及是否存在任何差距。 +* 对个体的负面影响。意识到任何限制或要求、不支持的用途或已知限制影响系统性能,确保系统不会以可能对个体造成伤害的方式使用。 +* 数据需求。了解系统如何以及从哪里使用数据,帮助评审员探讨应注意的数据要求(例如 GDPR 或 HIPAA)。此外,检视数据来源或数量是否足够训练使用。 +* 影响总结。收集使用系统可能引发的潜在伤害列表。在机器学习生命周期中,检查已识别的问题是否得到缓解或解决。 +* 适用目标。评估六大核心原则中每项的目标是否达成,以及是否存在缺口。 -## 使用负责任人工智能进行调试 -与调试软件应用程序类似,调试人工智能系统是识别和解决系统问题的必要过程。许多因素会影响模型未按预期或负责任地运行。大多数传统模型性能指标是模型性能的定量汇总,这不足以分析模型如何违反负责任人工智能原则。此外,机器学习模型是一个黑箱,难以理解其结果的驱动因素或在出现错误时提供解释。在本课程后续部分,我们将学习如何使用负责任人工智能仪表板来帮助调试人工智能系统。该仪表板为数据科学家和人工智能开发人员提供了一个全面的工具,用于执行以下操作: +## 用负责任的 AI 进行调试 -* **错误分析**:识别模型的错误分布,这可能影响系统的公平性或可靠性。 -* **模型概览**:发现模型在不同数据群体中的性能差异。 -* **数据分析**:了解数据分布并识别数据中可能导致公平性、包容性和可靠性问题的潜在偏见。 -* **模型可解释性**:了解影响或驱动模型预测的因素。这有助于解释模型的行为,这对透明性和责任感至关重要。 +类似于调试软件应用,调试 AI 系统是识别和解决系统中问题的必要过程。许多因素可能导致模型未按预期或负责任地运行。大多数传统模型性能指标是模型表现的定量汇总,但不足以分析模型如何违反负责任 AI 原则。另外,机器学习模型是黑盒子,难以理解其输出背后的驱动因素,也难以在出现错误时解释。后续课程中,我们将学习如何使用负责任 AI 仪表盘帮助调试 AI 系统。该仪表盘为数据科学家和 AI 开发人员提供全面的工具来执行: + +* 错误分析。识别模型错误分布,这些错误可能影响系统的公平性或可靠性。 +* 模型概览。发现在数据子群中模型性能存在的差异。 +* 数据分析。理解数据分布,识别可能导致公平性、包容性和可靠性问题的潜在偏见。 +* 模型可解释性。理解影响或驱动模型预测的因素。帮助解释模型行为,这对透明度和问责制很重要。 -## 🚀 挑战 -为了防止危害的引入,我们应该: +## 🚀 挑战 + +为了从一开始防止伤害,我们应该: -- 确保参与系统开发的人员具有多样化的背景和观点 +- 吸纳拥有多样背景和观点的人参与系统开发 - 投资于反映社会多样性的数据集 -- 在整个机器学习生命周期中开发更好的方法,以检测和纠正负责任人工智能问题 +- 在整个机器学习生命周期中开发更好的检测和纠正负责任 AI 问题的方法 -思考现实生活中模型在构建和使用过程中显现不可信的场景。我们还应该考虑什么? +思考一下在模型构建和使用中模型不可信的真实场景。我们还应考虑什么? ## [课后测验](https://ff-quizzes.netlify.app/en/ml/) ## 复习与自学 + -在本课中,您已经学习了机器学习中公平性和不公平性概念的一些基础知识。 -观看此研讨会,深入了解相关主题: +在本课中,您已经学习了一些关于机器学习中公平与不公平概念的基础知识。 + +观看本次研讨会,深入了解这些主题: -- 追求负责任的人工智能:将原则付诸实践,由 Besmira Nushi、Mehrnoosh Sameki 和 Amit Sharma 主讲 +- 追求负责任的人工智能:由 Besmira Nushi、Mehrnoosh Sameki 和 Amit Sharma 讲解如何将原则付诸实践 -[![负责任的人工智能工具箱:构建负责任人工智能的开源框架](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: 构建负责任人工智能的开源框架") +[![Responsible AI Toolbox: An open-source framework for building responsible AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") -> 🎥 点击上方图片观看视频:RAI Toolbox: 构建负责任人工智能的开源框架,由 Besmira Nushi、Mehrnoosh Sameki 和 Amit Sharma 主讲 +> 🎥 点击上方图片观看视频:由 Besmira Nushi、Mehrnoosh Sameki 和 Amit Sharma 讲解的 RAI Toolbox:用于构建负责任人工智能的开源框架 -此外,阅读以下内容: +另请阅读: -- 微软的负责任人工智能资源中心:[负责任人工智能资源 – 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: 公平性、问责性、透明性和人工智能伦理 - 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 工具箱: -- [负责任人工智能工具箱 GitHub 仓库](https://github.com/microsoft/responsible-ai-toolbox) +- [Responsible AI Toolbox GitHub 仓库](https://github.com/microsoft/responsible-ai-toolbox) -了解 Azure 机器学习工具如何确保公平性: +阅读有关 Azure 机器学习确保公平性的工具: -- [Azure 机器学习](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/zh-CN/2-Regression/1-Tools/README.md b/translations/zh-CN/2-Regression/1-Tools/README.md index c076da040..ff70c4595 100644 --- a/translations/zh-CN/2-Regression/1-Tools/README.md +++ b/translations/zh-CN/2-Regression/1-Tools/README.md @@ -1,120 +1,121 @@ -# 使用 Python 和 Scikit-learn 构建回归模型 +# 使用 Python 和 Scikit-learn 入门回归模型 -![回归模型的简要概述](../../../../sketchnotes/ml-regression.png) +![回归的草图总结](../../../../translated_images/zh-CN/ml-regression.4e4f70e3b3ed446e.webp) -> 由 [Tomomi Imura](https://www.twitter.com/girlie_mac) 绘制的手绘笔记 +> 草图作者:[Tomomi Imura](https://www.twitter.com/girlie_mac) ## [课前测验](https://ff-quizzes.netlify.app/en/ml/) -> ### [本课程也提供 R 版本!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html) +> ### [本课也提供 R 语言版本!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html) -## 简介 +## 介绍 -在这四节课中,您将学习如何构建回归模型。我们很快会讨论这些模型的用途。但在开始之前,请确保您已准备好正确的工具来进行学习! +在这四节课中,您将学会如何构建回归模型。稍后我们将讨论它们的用途。但在开始之前,请确保您已经准备好适当的工具! -在本课中,您将学习: +在本课中,您将学习如何: -- 配置您的计算机以进行本地机器学习任务。 +- 为本地机器学习任务配置计算机。 - 使用 Jupyter 笔记本。 -- 安装并使用 Scikit-learn。 -- 通过动手练习探索线性回归。 +- 使用 Scikit-learn,包括安装过程。 +- 通过实践练习探索线性回归。 -## 安装和配置 +## 安装与配置 -[![机器学习入门 - 配置工具以构建机器学习模型](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "机器学习入门 - 配置工具以构建机器学习模型") +[![面向初学者的机器学习 - 准备好你的工具以构建机器学习模型](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](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. **安装 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/)的说明完成基本安装。本课程将使用 Visual Studio Code 运行 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),熟悉 Python。 + > 通过本集合中的[学习模块](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)熟悉 Python。 > - > [![使用 Visual Studio Code 设置 Python](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "使用 Visual Studio Code 设置 Python") + > [![在 Visual Studio Code 中设置 Python](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](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/)。 +1. **安装 Jupyter Notebook**。你需要[安装 Jupyter 包](https://pypi.org/project/jupyter/)。 -## 您的机器学习开发环境 +## 你的机器学习创作环境 -您将使用 **笔记本** 来开发 Python 代码并创建机器学习模型。这种文件类型是数据科学家常用的工具,其文件后缀为 `.ipynb`。 +你将使用 笔记本 来编写 Python 代码和创建机器学习模型。这类文件是数据科学家的常用工具,文件后缀是 `.ipynb`。 -笔记本是一种交互式环境,允许开发者编写代码并添加注释和文档,非常适合实验或研究项目。 +笔记本是交互式环境,允许开发者编写代码的同时添加注释和文档,对于实验或研究项目非常有用。 -[![机器学习入门 - 设置 Jupyter 笔记本以开始构建回归模型](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "机器学习入门 - 设置 Jupyter 笔记本以开始构建回归模型") +[![面向初学者的机器学习 - 设置 Jupyter 笔记本开始构建回归模型](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "面向初学者的机器学习 - 设置 Jupyter 笔记本开始构建回归模型") -> 🎥 点击上方图片观看短视频,了解如何完成此练习。 +> 🎥 点击上方图片观看本练习的短视频。 ### 练习 - 使用笔记本 -在此文件夹中,您会找到文件 _notebook.ipynb_。 +在此文件夹中,你会找到文件 _notebook.ipynb_。 1. 在 Visual Studio Code 中打开 _notebook.ipynb_。 - 一个 Jupyter 服务器将启动,并使用 Python 3+。您会发现笔记本中可以运行的代码块。您可以通过选择播放按钮图标运行代码块。 + 一个 Jupyter 服务器会启动,运行 Python 3+。你会看到笔记本中可以 `run` 的代码块。点击看起来像播放按钮的图标即可运行代码块。 -2. 选择 `md` 图标并添加一些 markdown,输入以下文本 **# 欢迎来到您的笔记本**。 +1. 选择 `md` 图标,添加一些 markdown 内容,写入以下文本 **# 欢迎使用你的笔记本**。 - 接下来,添加一些 Python 代码。 + 接着,添加一些 Python 代码。 -3. 在代码块中输入 **print('hello notebook')**。 -4. 选择箭头运行代码。 +1. 在代码块中输入 **print('hello notebook')**。 +1. 点击箭头运行代码。 - 您应该会看到打印的结果: + 你应该会看到输出: ```output hello notebook ``` -![在 VS Code 中打开的笔记本](../../../../2-Regression/1-Tools/images/notebook.jpg) +![VS Code 中打开的笔记本](../../../../translated_images/zh-CN/notebook.4a3ee31f396b8832.webp) -您可以在代码中插入注释,以便自我记录笔记本内容。 +你可以在代码中夹杂注释,自我文档化你的笔记本。 -✅ 思考一下,网页开发者的工作环境与数据科学家的工作环境有何不同。 +✅ 想一想,网页开发者和数据科学家的工作环境有多大不同。 -## 使用 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 提供了一个[丰富的 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 使构建模型并评估其使用变得简单。它主要专注于使用数值数据,并包含几个现成的数据集供学习使用。它还包括一些预构建的模型供学生尝试。让我们探索加载预打包数据并使用内置估算器构建第一个机器学习模型的过程。 +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)。 -[![机器学习入门 - 您的第一个 Python 线性回归项目](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "机器学习入门 - 您的第一个 Python 线性回归项目") -> 🎥 点击上方图片观看短视频,了解如何完成此练习。 +[![面向初学者的机器学习 - 你的第一个 Python 线性回归项目](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "面向初学者的机器学习 - 你的第一个 Python 线性回归项目") -在与本课相关的 _notebook.ipynb_ 文件中,按下“垃圾桶”图标清空所有单元格。 +> 🎥 点击上方图片观看本练习的短视频。 -在本节中,您将使用 Scikit-learn 中内置的一个关于糖尿病的小型数据集进行学习。假设您想测试一种针对糖尿病患者的治疗方法。机器学习模型可能会帮助您根据变量的组合确定哪些患者对治疗的反应更好。即使是一个非常基础的回归模型,当可视化时,也可能显示有关变量的信息,帮助您组织理论临床试验。 +在本课对应的 _notebook.ipynb_ 文件中,通过点击“垃圾桶”图标清空所有单元格。 -✅ 回归方法有很多种,选择哪一种取决于您想要回答的问题。如果您想预测某个年龄段的人的可能身高,您可以使用线性回归,因为您在寻找一个 **数值**。如果您想确定某种菜肴是否应该被归类为素食,您在寻找一个 **类别分配**,因此您可以使用逻辑回归。稍后您将学习更多关于逻辑回归的内容。思考一下,您可以向数据提出哪些问题,以及哪种方法更适合回答这些问题。 +在本节中,你将使用一个关于糖尿病的内置小型数据集,它为学习而设计。假设你想测试糖尿病患者的某种治疗方案。机器学习模型可以帮助你根据变量组合预测哪些患者能更好地响应治疗。即使是非常基础的回归模型,经过可视化,也可能揭示有助于设计理论临床试验的变量信息。 -让我们开始这个任务。 +✅ 回归方法有多种,选用哪一种取决于你想回答的问题。如果你想预测某年龄段的人的可能身高,你会用线性回归,因为你在寻找一个数值。如果你想判断某种菜肴是否为素食,你在做类别归属的判断,会用逻辑回归。稍后你会学到更多逻辑回归知识。想想你可以向数据询问哪些问题,以及哪种方法更合适。 + +让我们开始这个任务吧。 ### 导入库 -在此任务中,我们将导入一些库: +本任务我们将导入一些库: -- **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 细胞(白细胞的一种) +- 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,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)` 将数据重塑为二维数组(绘图所需)。如果其中一个参数为 -1,则对应的维度会自动计算。 +2. 接下来,选取数据集的一个部分绘图,选择第 3 列数据。你可以使用冒号操作符选取所有行,然后用索引(2)选取第 3 列。你也可以使用 `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. 现在你可以训练模型了!加载线性回归模型,用你的 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 @@ Scikit-learn 使构建模型并评估其使用变得简单。它主要专注于 plt.show() ``` - ![显示糖尿病数据点的散点图](../../../../2-Regression/1-Tools/images/scatterplot.png) -✅ 想一想这里发生了什么。一条直线穿过许多小数据点,但它究竟在做什么?你能看出如何利用这条线来预测一个新的、未见过的数据点在图表的 y 轴上的位置吗?试着用语言描述这个模型的实际用途。 + ![展示糖尿病数据点的散点图](../../../../translated_images/zh-CN/scatterplot.ad8b356bcbb33be6.webp) + -恭喜你!你已经构建了第一个线性回归模型,用它进行了预测,并将结果显示在图表中! + ✅ 想一想这里到底发生了什么。一条直线穿过了许多小数据点,但它到底在做什么?你能看出怎样利用这条直线来预测一个未见新数据点应该如何相对于图的 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)进行翻译。尽管我们努力确保准确性,但请注意,自动翻译可能包含错误或不准确之处。应以原始语言的文档作为权威来源。对于关键信息,建议使用专业人工翻译。因使用本翻译而导致的任何误解或误读,我们概不负责。 \ 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/zh-CN/2-Regression/2-Data/README.md b/translations/zh-CN/2-Regression/2-Data/README.md index 1b56a35dd..e201e2cd8 100644 --- a/translations/zh-CN/2-Regression/2-Data/README.md +++ b/translations/zh-CN/2-Regression/2-Data/README.md @@ -1,60 +1,60 @@ # 使用 Scikit-learn 构建回归模型:准备和可视化数据 -![数据可视化信息图](../../../../2-Regression/2-Data/images/data-visualization.png) +![数据可视化信息图](../../../../translated_images/zh-CN/data-visualization.54e56dded7c1a804.webp) -信息图作者:[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 开始构建机器学习模型,可以开始向数据提出问题了。在处理数据并应用机器学习解决方案时,了解如何提出正确的问题以充分挖掘数据的潜力非常重要。 +现在你已经准备好使用 Scikit-learn 进行机器学习模型构建的工具,能够开始对数据提出问题了。在处理数据并应用机器学习解决方案时,理解如何提出正确的问题以充分发挥数据集潜力非常重要。 -在本课中,你将学习: +本课你将学习: - 如何为模型构建准备数据。 - 如何使用 Matplotlib 进行数据可视化。 +- 如何使用 Seaborn 进行更具表现力的数据可视化。 ## 向数据提出正确的问题 -你需要回答的问题将决定你使用哪种类型的机器学习算法。而你得到答案的质量将很大程度上取决于数据的性质。 +你需要回答的问题将决定你采用哪种类型的机器学习算法。而你得到答案的质量很大程度上取决于数据的性质。 -看看为本课提供的[数据](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv)。你可以在 VS Code 中打开这个 .csv 文件。快速浏览会发现其中有空白值,还有字符串和数值数据的混合。此外,还有一个名为“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://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "机器学习入门 - 如何分析和清理数据集") +[![初学者机器学习 - 如何分析和清洗数据集](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "初学者机器学习 - 如何分析和清洗数据集") -> 🎥 点击上方图片观看准备本课数据的简短视频。 +> 🎥 点击上图观看本课数据准备过程的简短视频。 -事实上,很少会直接获得一个完全准备好用于创建机器学习模型的数据集。在本课中,你将学习如何使用标准 Python 库准备原始数据集。你还将学习各种数据可视化技术。 +实际上,开箱即用且完全准备好的数据集进行机器学习建模并不常见。在本课中,你将学习如何使用标准 Python 库来准备原始数据集,也会学习多种数据可视化技术。 ## 案例研究:“南瓜市场” -在本文件夹中,你会发现根目录 `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)中提取的原始数据。 +在本文件夹的根目录 `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 网站按城市下载多个单独文件。为避免过多文件,我们已将所有城市数据合并为一个表格,因此已经对数据做了一些_准备_。接下来,仔细看看数据。 -### 南瓜数据 - 初步结论 +### 南瓜数据 —— 初步结论 -你对这些数据有什么发现?你可能已经注意到其中有字符串、数字、空白和一些需要理解的奇怪值。 +你注意到这数据有什么吗?你已经看到字符串、数字、空白和奇怪的值混杂,需要理清。 -使用回归技术,你可以向这些数据提出什么问题?比如“预测某个月份出售南瓜的价格”。再次查看数据,你需要进行一些更改以创建适合任务的数据结构。 +使用回归技术,你能针对这数据提出什么问题?比如“预测某个月份中南瓜的售价”。再看数据,需要做一些改动以创建任务所需的数据结构。 +## 练习 —— 分析南瓜数据 -## 练习 - 分析南瓜数据 - -让我们使用 [Pandas](https://pandas.pydata.org/)(名称代表 `Python Data Analysis`),一个非常有用的数据处理工具,来分析和准备这些南瓜数据。 +我们采用 [Pandas](https://pandas.pydata.org/)(意为“Python 数据分析”)这款对数据整形非常有用的工具,来分析并准备这份南瓜数据。 ### 首先,检查缺失日期 -你首先需要采取步骤检查是否有缺失日期: +你首先需要做的步骤是检查是否有缺失日期: -1. 将日期转换为月份格式(这些是美国日期,格式为 `MM/DD/YYYY`)。 -2. 提取月份到一个新列。 +1. 将日期转换为月份格式(这是美国日期格式,格式为 `MM/DD/YYYY`)。 +2. 将月份提取到新列。 -在 Visual Studio Code 中打开 _notebook.ipynb_ 文件,并将电子表格导入到一个新的 Pandas 数据框中。 +在 Visual Studio Code 中打开 _notebook.ipynb_ 文件,并导入电子表格到新的 Pandas 数据框。 1. 使用 `head()` 函数查看前五行。 @@ -64,7 +64,7 @@ pumpkins.head() ``` - ✅ 你会使用什么函数来查看最后五行? + ✅ 你会用什么函数查看最后五行? 1. 检查当前数据框中是否有缺失数据: @@ -72,9 +72,9 @@ pumpkins.isnull().sum() ``` - 存在缺失数据,但可能对当前任务没有影响。 + 有缺失数据,但可能对当前任务影响不大。 -1. 为了让数据框更易于操作,使用 `loc` 函数选择你需要的列。`loc` 函数从原始数据框中提取一组行(作为第一个参数传递)和列(作为第二个参数传递)。下面的表达式 `:` 表示“所有行”。 +1. 为简化操作,只选取需要的列,使用 `loc` 函数从原始数据框中提取一组行(作为第一个参数)和列(作为第二个参数)。下面表达式中的 `:` 表示“所有行”。 ```python columns_to_select = ['Package', 'Low Price', 'High Price', 'Date'] @@ -83,11 +83,11 @@ ### 其次,确定南瓜的平均价格 -思考如何确定某个月份南瓜的平均价格。你会选择哪些列来完成这个任务?提示:你需要 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,7 +96,7 @@ ``` - ✅ 随时使用 `print(month)` 打印任何数据以进行检查。 + ✅ 你可以随意用 `print(month)` 打印数据检查。 2. 现在,将转换后的数据复制到一个新的 Pandas 数据框中: @@ -104,29 +104,29 @@ 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` 类型也为每英寸、每箱或“每个”。南瓜似乎很难一致地称重,因此我们通过选择 `Package` 列中包含字符串 'bushel' 的南瓜来进行过滤。 +深入分析原始数据发现,所有 `Unit of Sale` 为 'EACH' 或 'PER BIN' 的数据,其 `Package` 类型为每英寸、每箱或“每个”。南瓜的标准称重相当复杂,因此我们通过筛选,仅选择 `Package` 列中包含 'bushel' 字符串的南瓜。 -1. 在文件顶部的初始 .csv 导入下添加过滤器: +1. 在文件顶部原始 .csv 导入后添加筛选: ```python pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)] ``` - 如果现在打印数据,你会发现只剩下约 415 行按 bushel 销售的南瓜数据。 + 如果现在打印数据,就只看到大约 415 行以“bushel”计量的南瓜数据了。 -### 等等!还有一件事要做 +### 还有一件事要做 -你是否注意到每行的 bushel 数量不同?你需要对价格进行标准化,以显示每 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,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 定价。然而,所有这些关于南瓜 bushel 的研究表明,了解数据的性质是多么重要! +✅ 根据 [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308),“bushel”的重量取决于农产品种类,因为它是体积单位。“例如,一斗西红柿大约重 56 磅……叶菜占据的空间多但重量轻,所以一斗菠菜只有 20 磅。”这都相当复杂!我们不必将“bushel”转换为磅,而是按“bushel”计价。对南瓜以“bushel”计价的研究说明,了解数据性质非常重要! -现在,你可以根据 bushel 测量分析每单位的定价。如果再打印一次数据,你会看到它已经标准化。 +现在你可以基于“bushel”计量分析单价。如果再次打印数据,你会看到已标准化的结果。 -✅ 你是否注意到按半 bushel 销售的南瓜非常昂贵?你能找出原因吗?提示:小南瓜比大南瓜贵得多,可能是因为每 bushel 中小南瓜的数量更多,而大空心南瓜占据了更多未使用的空间。 +✅ 你注意到按半斗计价的南瓜非常贵吗?能猜出原因吗?提示:小南瓜比大南瓜贵得多,可能是因为每斗内的小南瓜数量远多于一个大的空心南瓜,空隙占用空间大。 ## 可视化策略 -数据科学家的部分职责是展示他们正在处理的数据的质量和性质。为此,他们通常会创建有趣的可视化,例如图表、图形和表格,展示数据的不同方面。通过这种方式,他们能够直观地展示关系和差距,这些关系和差距可能很难通过其他方式发现。 +数据科学家的职责之一是展示他们所处理数据的质量和特性。为此,他们通常创建有趣的可视化图——包括图形、图表和表格,显示数据的不同方面。通过可视化,他们能够直观展示难以发现的关系和空白。 -[![机器学习入门 - 如何使用 Matplotlib 可视化数据](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "机器学习入门 - 如何使用 Matplotlib 可视化数据") +[![初学者机器学习 - 如何使用 Matplotlib 可视化数据](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "初学者机器学习 - 如何使用 Matplotlib 可视化数据") -> 🎥 点击上方图片观看本课数据可视化的简短视频。 +> 🎥 点击上图观看本课数据可视化的简短视频。 -可视化还可以帮助确定最适合数据的机器学习技术。例如,一个看起来沿着一条线分布的散点图表明数据非常适合线性回归练习。 +可视化还帮助确定最适合数据的机器学习技术。例如,散点图呈线性趋势则表明该数据适合线性回归。 -一个在 Jupyter 笔记本中表现良好的数据可视化库是 [Matplotlib](https://matplotlib.org/)(你在上一课中也见过它)。 +一个在 Jupyter notebook 中表现良好的数据可视化库是 [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. 重新运行整个 notebook 以刷新。 +1. 在 notebook 底部添加一个单元格,以箱线图形式绘制数据: ```python price = new_pumpkins.Price @@ -174,44 +174,121 @@ plt.show() ``` - ![一个显示价格与月份关系的散点图](../../../../2-Regression/2-Data/images/scatterplot.png) + ![展示价格与月份关系的散点图](../../../../translated_images/zh-CN/scatterplot.b6868f44cbd2051c.webp) - 这是一个有用的图表吗?它是否让你感到惊讶? + 这是个有用的图吗?图中有什么让你感到意外吗? - 它并不是特别有用,因为它只是显示了某个月份的数据点分布。 + 其实,它没多大用处,图中数据仅以点的形式在各月散布。 -### 让它更有用 +### 让它有用起来 -为了让图表显示有用的数据,你通常需要以某种方式对数据进行分组。让我们尝试创建一个图表,其中 y 轴显示月份,数据展示数据的分布。 +想让图表展示有用信息,通常需要对数据进行分组。让我们尝试创建一个图,y 轴显示月份,图中显示数据分布情况。 -1. 添加一个单元格以创建分组柱状图: +1. 添加单元格创建分组柱状图: ```python new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') plt.ylabel("Pumpkin Price") ``` - ![一个显示价格与月份关系的柱状图](../../../../2-Regression/2-Data/images/barchart.png) + ![展示价格与月份关系的柱状图](../../../../translated_images/zh-CN/barchart.a833ea9194346d76.webp) + + 这是更有用的数据可视化!看似表明南瓜最高价出现在9月和10月。你认同吗?为什么? + +## 练习 —— 试验 Seaborn + +Matplotlib 功能强大,但绘制精美图表往往需要较多代码。 [Seaborn](https://seaborn.pydata.org/) 是建立在 Matplotlib 之上的库,专为统计数据可视化设计。它直接支持 Pandas 数据框,应用美观默认样式,让你用更少代码创建信息丰富的图表。由于 Seaborn 返回的是 Matplotlib 对象,你仍可运用已有的 Matplotlib 知识精细调整结果。 + +> 如果还没安装 Seaborn,使用 `pip install seaborn` 安装。 + +1. 在 notebook 顶部其他导入语句下面导入 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 散点图展示价格与月份关系](../../../../translated_images/zh-CN/relplot.a03837d8f0329cec.webp) + + 注意这里你传入的是_列名_和数据框,由 Seaborn 自动处理轴标签。 + +2. 通过传入 `kind="line"` 可切换为折线图。Seaborn 甚至会绘制带有置信区间的阴影带: + + ```python + sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins) + ``` + + ![Seaborn 折线图展示价格与月份关系](../../../../translated_images/zh-CN/lineplot.f9034ba47b1e30ee.webp) + + 这组数据较为嘈杂,所以折线图不是最清晰的选择——但展示了如何轻松切换 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") + ``` + + ![A Seaborn bar chart showing the price distribution per month](../../../../translated_images/zh-CN/catplot.e73fc35fdf96242b.webp) + + 这验证了你用 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") + ``` + + ![A Seaborn heatmap showing correlations between the numeric columns](../../../../translated_images/zh-CN/heatmap.bd98dce43b404c57.webp) + + 接近 `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/) ## 复习与自学 -看看可视化数据的各种方法。列出可用的各种库,并记录哪些库最适合特定类型的任务,例如 2D 可视化与 3D 可视化。你发现了什么? +看看各种不同的数据可视化方法。列出各种可用的库,并注明哪些库适合处理特定类型的任务,例如二维可视化 vs. 三维可视化。你的发现是什么? -## 作业 +## 任务 [探索可视化](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/zh-CN/2-Regression/2-Data/solution/notebook.ipynb b/translations/zh-CN/2-Regression/2-Data/solution/notebook.ipynb index 3e189f692..1f526bbed 100644 --- a/translations/zh-CN/2-Regression/2-Data/solution/notebook.ipynb +++ b/translations/zh-CN/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-03T19:45:01+00:00", - "source_file": "2-Regression/2-Data/solution/notebook.ipynb", - "language_code": "zh" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/zh-CN/2-Regression/4-Logistic/README.md b/translations/zh-CN/2-Regression/4-Logistic/README.md index 5fdcd816a..1f976699c 100644 --- a/translations/zh-CN/2-Regression/4-Logistic/README.md +++ b/translations/zh-CN/2-Regression/4-Logistic/README.md @@ -1,77 +1,77 @@ -# 使用逻辑回归预测类别 +# 逻辑回归用于预测类别 -![逻辑回归与线性回归信息图](../../../../2-Regression/4-Logistic/images/linear-vs-logistic.png) +![逻辑回归与线性回归信息图](../../../../translated_images/zh-CN/linear-vs-logistic.ba180bf95e7ee667.webp) ## [课前测验](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) ## 简介 -在本课程中,我们将学习逻辑回归,这是经典机器学习技术之一。你可以使用这种技术发现模式以预测二元类别。例如,这颗糖果是巧克力还是不是巧克力?这种疾病是否具有传染性?这个顾客会选择这个产品还是不会? +在本回归课的最后一个单元中,我们将学习逻辑回归(Logistic Regression),这是基础且经典的机器学习技术之一。您可以使用此技术发现模式以预测二元类别。这个糖果是巧克力吗?这种疾病会传染吗?这个客户会选择这个产品吗? -在本课程中,你将学习: +本课您将学到: -- 一个新的数据可视化库 -- 逻辑回归的技术 +- 一个用于数据可视化的新库 +- 逻辑回归的相关技术 -✅ 在这个 [学习模块](https://docs.microsoft.com/learn/modules/train-evaluate-classification-models?WT.mc_id=academic-77952-leestott) 中深入了解如何使用这种回归方法。 +✅ 在此 [学习模块](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),只是基于线性模型。下一组课程将介绍其他分类数据的方法。 -## 定义问题 +## 确定问题 -对于我们的目的,我们将问题表达为一个二元类别:“白色”或“非白色”。数据集中还有一个“条纹”类别,但实例较少,因此我们不会使用它。实际上,在移除数据集中的空值后,它也会消失。 +本次我们将把它表示为二元:“白色”或“非白色”。数据里还有“条纹”类别,但数量很少,我们不会使用它。且删除缺失值后它会消失。 -> 🎃 有趣的事实:我们有时称白色南瓜为“幽灵”南瓜。它们不太容易雕刻,因此不像橙色南瓜那么受欢迎,但它们看起来很酷!所以我们也可以将问题重新表述为:“幽灵”或“非幽灵”。👻 +> 🎃 有趣的事实:我们有时称白南瓜为“鬼南瓜”。它们不易雕刻,所以没有橘色南瓜那么受欢迎,但外形很酷!因此,我们的提问也可以改成“鬼”或“非鬼”。👻 ## 关于逻辑回归 -逻辑回归与之前学习的线性回归有几个重要的不同点。 +逻辑回归与之前讲过的线性回归在几个重要方面不同。 -[![机器学习初学者 - 理解逻辑回归用于分类](https://img.youtube.com/vi/KpeCT6nEpBY/0.jpg)](https://youtu.be/KpeCT6nEpBY "机器学习初学者 - 理解逻辑回归用于分类") +[![初学者机器学习 - 理解用于分类的逻辑回归](https://img.youtube.com/vi/KpeCT6nEpBY/0.jpg)](https://youtu.be/KpeCT6nEpBY "初学者机器学习 - 理解用于分类的逻辑回归") -> 🎥 点击上方图片观看关于逻辑回归的简短视频概述。 +> 🎥 点击上图观看逻辑回归简短视频概述。 ### 二元分类 -逻辑回归与线性回归的功能不同。前者预测二元类别(例如“白色或非白色”),而后者能够预测连续值,例如根据南瓜的产地和收获时间,_价格将上涨多少_。 +逻辑回归不具备线性回归的所有特性。前者针对二元类别(“白色或非白色”)进行预测,而后者能够预测连续数值,例如给出南瓜产地和收获时间,预测_价格会上涨多少_。 -![南瓜分类模型](../../../../2-Regression/4-Logistic/images/pumpkin-classifier.png) -> 信息图由 [Dasani Madipalli](https://twitter.com/dasani_decoded) 提供 +![南瓜分类模型](../../../../translated_images/zh-CN/pumpkin-classifier.562771f104ad5436.webp) +> 信息图由 [Dasani Madipalli](https://twitter.com/dasani_decoded) 制作 ### 其他分类 -逻辑回归还有其他类型,包括多项式和有序分类: +逻辑回归还有其他类型,包含多项式回归和有序回归: -- **多项式分类**:涉及多个类别,例如“橙色、白色和条纹”。 -- **有序分类**:涉及有序类别,适用于逻辑排序的结果,例如按有限大小排序的南瓜(迷你、小、中、大、特大、超大)。 +- 多项式回归,存在多个类别——“橙色、白色和条纹”。 +- 有序回归,类别有顺序,适用于如我们按尺寸(迷你、小、中、大、加大、加加大)排序的南瓜。 -![多项式分类与有序分类](../../../../2-Regression/4-Logistic/images/multinomial-vs-ordinal.png) +![多项式与有序回归](../../../../translated_images/zh-CN/multinomial-vs-ordinal.36701b4850e37d86.webp) -### 变量不需要相关 +### 变量不必相关 -还记得线性回归在变量相关性较高时效果更好吗?逻辑回归正好相反——变量不需要相关性。这适用于数据中相关性较弱的情况。 +记得线性回归变量越相关表现越好吗?逻辑回归正好相反——变量不必对齐。这适合本数据,相关性较弱。 -### 需要大量干净数据 +### 你需要大量干净数据 -逻辑回归在使用更多数据时会给出更准确的结果;我们的数据集较小,因此并不理想。 +逻辑回归使用越多数据结果越准确;我们的数据集较小,不是最优,需注意。 -[![机器学习初学者 - 数据分析与准备用于逻辑回归](https://img.youtube.com/vi/B2X4H9vcXTs/0.jpg)](https://youtu.be/B2X4H9vcXTs "机器学习初学者 - 数据分析与准备用于逻辑回归") +[![初学者机器学习 - 逻辑回归数据分析与准备](https://img.youtube.com/vi/B2X4H9vcXTs/0.jpg)](https://youtu.be/B2X4H9vcXTs "初学者机器学习 - 逻辑回归数据分析与准备") -> 🎥 点击上方图片观看关于准备线性回归数据的简短视频概述。 +> 🎥 点击上图观看线性回归数据准备简短视频概述 -✅ 思考哪些类型的数据适合逻辑回归。 +✅ 思考哪些数据适合用逻辑回归 ## 练习 - 整理数据 -首先,清理数据,删除空值并选择部分列: +先稍作清理,删除缺失值,选取部分列: 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) 在笔记本中可视化数据框。Seaborn 是基于我们之前使用的 Matplotlib 构建的。 +现在你已经再次加载了 [starter notebook](./notebook.ipynb) 的南瓜数据,并清理了数据以保留一些变量,包括`Color`。让我们用另一个基于 Matplotlib 的库 [Seaborn](https://seaborn.pydata.org/index.html) 在笔记本中可视化数据框。 -Seaborn 提供了一些很棒的方式来可视化数据。例如,你可以在分类图中比较 `Variety` 和 `Color` 数据的分布。 +Seaborn 提供了非常棒的数据可视化方式。例如,使用类别绘图比较每个`Variety`和`Color`的分布。 -1. 使用 `catplot` 函数创建这样的图,使用南瓜数据 `pumpkins`,并为每个南瓜类别(橙色或白色)指定颜色映射: +1. 使用`catplot`函数创建该图,使用我们的南瓜数据`pumpkins`,并为每个南瓜类别(橘色或白色)指定颜色映射: ```python import seaborn as sns @@ -111,19 +111,18 @@ Seaborn 提供了一些很棒的方式来可视化数据。例如,你可以在 ) ``` - ![数据可视化网格](../../../../2-Regression/4-Logistic/images/pumpkins_catplot_1.png) + ![可视化数据网格](../../../../translated_images/zh-CN/pumpkins_catplot_1.c55c409b71fea2ec.webp) - 通过观察数据,你可以看到 `Color` 数据与 `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` 之外的所有特征。它是一种独热编码,这意味着每个类别由一个二进制列表示:如果南瓜属于该类别,则编码变量为 1,否则为 0。 +2. 类别编码器:适用于无序分类变量,如我们数据集中除`Item Size`外的特征。它是独热编码,即每个类别用一个二元列表示:如果某南瓜属于该品种,编码变量为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` 将多个编码器合并为一个步骤,并将其应用于适当的列。 +然后,用`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)之间的值。 +另一方面,对标签编码,我们用 Scikit-learn 的`LabelEncoder`类工具,把标签规范化为只包含0和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,16 +190,15 @@ Seaborn 提供了一些很棒的方式来可视化数据。例如,你可以在 g.set(xlabel="Item Size", ylabel="").set(xlim=(0,6)) g.set_titles(row_template="{row_name}") ``` +![可视化数据的类别图](../../../../translated_images/zh-CN/pumpkins_catplot_2.87a354447880b388.webp) -![数据分类图](../../../../2-Regression/4-Logistic/images/pumpkins_catplot_2.png) +### 使用 swarm plot -### 使用蜂群图 +因为颜色是二元类别(白或非白),它需要“[特殊方法](https://seaborn.pydata.org/tutorial/categorical.html?highlight=bar) 可视化”。还有其他方式展示该分类与变量的关系。 -由于 `Color` 是一个二元类别(白色或非白色),它需要“[一种专门的方法](https://seaborn.pydata.org/tutorial/categorical.html?highlight=bar)来可视化”。还有其他方法可以可视化此类别与其他变量的关系。 +你可以用 Seaborn 的图表并排可视化变量。 -你可以使用 Seaborn 图表并排可视化变量。 - -1. 尝试使用“蜂群图”来显示值的分布: +1. 试试“swarm”图,显示数值分布: ```python palette = { @@ -215,27 +208,28 @@ Seaborn 提供了一些很棒的方式来可视化数据。例如,你可以在 sns.swarmplot(x="Color", y="ord__Item Size", data=encoded_pumpkins, palette=palette) ``` - ![数据蜂群图](../../../../2-Regression/4-Logistic/images/swarm_2.png) + ![数据分布的群聚图](../../../../translated_images/zh-CN/swarm_2.efeacfca536c2b57.webp) + +注意:上述代码可能产生警告,因为 seaborn 无法很好地将大量数据点放入 swarm 图。解决方案是用“size”参数减小标记尺寸,但这会影响图的可读性。 -**注意**:上述代码可能会生成警告,因为 Seaborn 无法在蜂群图中表示如此多的数据点。一个可能的解决方案是通过使用 `size` 参数减小标记的大小。然而,请注意,这会影响图表的可读性。 -> **🧮 数学原理** +> **🧮 给我数学原理** > -> 逻辑回归依赖于“最大似然”概念,使用[Sigmoid 函数](https://wikipedia.org/wiki/Sigmoid_function)。在图表上,Sigmoid 函数看起来像一个“S”形。它将一个值映射到 0 和 1 之间的某个位置。它的曲线也被称为“逻辑曲线”。其公式如下: +> 逻辑回归基于“最大似然”概念,使用[Sigmoid函数](https://wikipedia.org/wiki/Sigmoid_function)。Sigmoid函数的图形像S形。它把一个值映射到0到1之间。其曲线又叫“逻辑曲线”。公式如下: > -> ![逻辑函数](../../../../2-Regression/4-Logistic/images/sigmoid.png) +> ![逻辑函数](../../../../translated_images/zh-CN/sigmoid.8b7ba9d095c789cf.webp) > -> 其中,Sigmoid 的中点位于 x 的 0 点,L 是曲线的最大值,k 是曲线的陡度。如果函数的结果大于 0.5,则该标签将被归类为二元选择中的“1”。否则,将被归类为“0”。 +> 其中 Sigmoid 中点在 x=0 处,L 是曲线最大值,k 是曲线陡峭程度。若函数值大于0.5,则该二元分类标签为概率的“1”;否则归为“0”。 ## 构建模型 -在 Scikit-learn 中构建一个用于二元分类的模型非常简单。 +在 Scikit-learn 中构建此类二元分类模型异常简便。 -[![机器学习初学者 - 用逻辑回归进行数据分类](https://img.youtube.com/vi/MmZS2otPrQ8/0.jpg)](https://youtu.be/MmZS2otPrQ8 "机器学习初学者 - 用逻辑回归进行数据分类") +[![初学者机器学习 - 逻辑回归分类](https://img.youtube.com/vi/MmZS2otPrQ8/0.jpg)](https://youtu.be/MmZS2otPrQ8 "初学者机器学习 - 逻辑回归分类") -> 🎥 点击上方图片观看关于构建线性回归模型的简短视频概述。 +> 🎥 点击上图观看构建线性回归模型简短视频 -1. 选择你想在分类模型中使用的变量,并调用 `train_test_split()` 分割训练集和测试集: +1. 选择要用在分类模型中的变量,并使用`train_test_split()`拆分训练集和测试集: ```python from sklearn.model_selection import train_test_split @@ -247,7 +241,7 @@ Seaborn 提供了一些很棒的方式来可视化数据。例如,你可以在 ``` -2. 现在你可以通过调用 `fit()` 使用训练数据训练模型,并打印结果: +2. 通过调用`fit()`训练模型,然后打印结果: ```python from sklearn.metrics import f1_score, classification_report @@ -262,7 +256,7 @@ Seaborn 提供了一些很棒的方式来可视化数据。例如,你可以在 print('F1-score: ', f1_score(y_test, predictions)) ``` - 查看模型的评分。考虑到数据只有大约 1000 行,结果还不错: + 查看模型得分情况,考虑到只有约1000行数据,这表现不错: ```output precision recall f1-score support @@ -283,13 +277,13 @@ Seaborn 提供了一些很棒的方式来可视化数据。例如,你可以在 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 @@ -303,62 +297,56 @@ Seaborn 提供了一些很棒的方式来可视化数据。例如,你可以在 [ 11, 22]]) ``` -在 Scikit-learn 中,混淆矩阵的行(轴 0)是实际标签,列(轴 1)是预测标签。 +在 Scikit-learn 中,混淆矩阵的行(轴0)是实际标签,列(轴1)是预测标签。 | | 0 | 1 | | :---: | :---: | :---: | | 0 | TN | FP | | 1 | FN | TP | -这里发生了什么?假设我们的模型被要求在两个二元类别之间对南瓜进行分类,“白色”和“非白色”。 +这里发生了什么?假设模型要在两个类别中分类南瓜,“白色”和“非白色”。 + +- 如果模型预测为非白色,且实际上确实是非白色,我们称其为真阴性,即左上数字。 +- 如果模型预测为白色,但实际上是非白色,我们称其为假阳性,即左下数字。 +- 如果模型预测为非白色,但实际上是白色,我们称其为假阴性,即右上数字。 +- 如果模型预测为白色,且实际上是白色,我们称其为真阳性,即右下数字。 -- 如果模型预测南瓜为非白色,而实际上属于“非白色”类别,我们称之为真负(True Negative),显示在左上角。 -- 如果模型预测南瓜为白色,而实际上属于“非白色”类别,我们称之为假负(False Negative),显示在左下角。 -- 如果模型预测南瓜为非白色,而实际上属于“白色”类别,我们称之为假正(False Positive),显示在右上角。 -- 如果模型预测南瓜为白色,而实际上属于“白色”类别,我们称之为真正(True Positive),显示在右下角。 -正如你可能猜到的,较多的真正和真负以及较少的假正和假负表明模型表现更好。 -混淆矩阵如何与精确率和召回率相关联?请记住,上面打印的分类报告显示精确率为 0.85,召回率为 0.67。 +如你所料,拥有较多的真正例和真负例以及较少的假正例和假负例是更理想的,这意味着模型表现更好。 + +混淆矩阵是如何与精确率和召回率相关联的?请记住,上面打印的分类报告显示了精确率(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 的映射关系: -🎓 精确率(Precision):TP/(TP + FP) -检索到的实例中,相关实例的比例(例如,哪些标签被正确标记)。 +🎓 精确率:TP/(TP + FP) 在检索的实例中相关实例的比例(例如哪些标签被准确标注) -🎓 召回率(Recall):TP/(TP + FN) -相关实例中被检索到的比例,无论是否被正确标记。 +🎓 召回率:TP/(TP + FN) 检索到的相关实例的比例,无论是否标注正确 -🎓 F1 分数(f1-score):(2 * precision * recall)/(precision + recall) -精确率和召回率的加权平均值,最佳值为 1,最差值为 0。 +🎓 f1-score: (2 * 精确率 * 召回率)/(精确率 + 召回率) 精确率和召回率的加权平均,最佳值为1,最差为0 -🎓 支持度(Support): -每个标签被检索到的次数。 +🎓 支持度:检索到的每个标签的出现次数 -🎓 准确率(Accuracy):(TP + TN)/(TP + TN + FP + FN) -样本中标签被正确预测的百分比。 +🎓 准确率:(TP + TN)/(TP + TN + FP + FN) 对样本的标签预测准确的百分比。 -🎓 宏平均(Macro Avg): -对每个标签的指标进行无权重平均的计算,不考虑标签的不平衡。 +🎓 宏平均:为每个标签计算未加权的平均指标,不考虑标签不平衡。 -🎓 加权平均(Weighted Avg): -对每个标签的指标进行加权平均的计算,权重由支持度(每个标签的真实实例数)决定。 +🎓 加权平均:为每个标签计算的平均指标,通过其支持度(每个标签的真实实例数量)加权,考虑标签不平衡。 -✅ 你能想到如果想减少假负例的数量,应该关注哪个指标吗? +✅ 如果你想让模型减少假负例的数量,你会关注哪个指标? ## 可视化该模型的 ROC 曲线 -[![机器学习入门 - 使用 ROC 曲线分析逻辑回归性能](https://img.youtube.com/vi/GApO575jTA0/0.jpg)](https://youtu.be/GApO575jTA0 "机器学习入门 - 使用 ROC 曲线分析逻辑回归性能") +[![ML 入门 - 使用 ROC 曲线分析逻辑回归性能](https://img.youtube.com/vi/GApO575jTA0/0.jpg)](https://youtu.be/GApO575jTA0 "ML 入门 - 使用 ROC 曲线分析逻辑回归性能") -> 🎥 点击上方图片观看关于 ROC 曲线的简短视频概述 +> 🎥 点击上方图片观看关于 ROC 曲线的简短视频介绍 -让我们再做一个可视化,看看所谓的“ROC”曲线: +我们再做一个可视化,来看看所谓的“ROC”曲线: ```python from sklearn.metrics import roc_curve, roc_auc_score @@ -378,37 +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 轴表示假正例率。”因此,曲线的陡峭程度以及中间线与曲线之间的空间很重要:你想要一条快速上升并越过这条线的曲线。在我们的例子中,起始处存在假正例,然后曲线正常上升并且越过了那条线: -![ROC](../../../../2-Regression/4-Logistic/images/ROC_2.png) +![ROC](../../../../translated_images/zh-CN/ROC_2.777f20cdfc4988ca.webp) -最后,使用 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,分数越大越好,因为预测完全正确的模型的 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) 的前几页,了解逻辑回归的一些实际应用。思考哪些任务更适合我们到目前为止学习的回归类型。哪种方法效果更好? +阅读 [斯坦福大学的这篇论文](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/zh-CN/8-Reinforcement/1-QLearning/README.md b/translations/zh-CN/8-Reinforcement/1-QLearning/README.md index 827398ac5..3e0f26b48 100644 --- a/translations/zh-CN/8-Reinforcement/1-QLearning/README.md +++ b/translations/zh-CN/8-Reinforcement/1-QLearning/README.md @@ -1,47 +1,47 @@ -# 强化学习与Q学习简介 +# 强化学习与 Q 学习简介 -![机器学习中强化学习的总结图](../../../../sketchnotes/ml-reinforcement.png) -> Sketchnote by [Tomomi Imura](https://www.twitter.com/girlie_mac) +![机器学习中强化学习的概要手绘笔记](../../../../translated_images/zh-CN/ml-reinforcement.94024374d63348db.webp) +> 手绘笔记作者:[Tomomi Imura](https://www.twitter.com/girlie_mac) -强化学习涉及三个重要概念:代理、状态和每个状态的一组动作。通过在指定状态下执行一个动作,代理会获得奖励。想象一下电脑游戏《超级马里奥》。你是马里奥,处于一个游戏关卡中,站在悬崖边上。你的上方有一个金币。你作为马里奥,处于游戏关卡中的特定位置……这就是你的状态。向右移动一步(一个动作)会让你掉下悬崖,这会给你一个较低的数值分数。然而,按下跳跃按钮会让你得分并保持存活。这是一个积极的结果,应该奖励你一个正数分数。 +强化学习包含三个重要概念:智能体(agent)、一些状态(states)以及每个状态下的一组动作(actions)。通过在指定状态下执行动作,智能体会获得一个奖励。再想象一下电脑游戏超级马里奥。你是马里奥,处在游戏关卡中,站在悬崖边上。你的上方有一枚金币。你作为马里奥,在游戏关卡中的一个具体位置……这就是你的状态。向右迈一步(动作)会让你跌落悬崖,这会给你较低的分数。然而,按跳跃键会让你得分并保持存活。这是一个积极的结果,应当奖励你一个正分。 -通过使用强化学习和模拟器(游戏),你可以学习如何玩游戏以最大化奖励,即保持存活并尽可能多地得分。 +通过使用强化学习和模拟器(游戏),你能学习如何玩游戏以最大化奖励,即保持存活并尽可能多地得分。 [![强化学习简介](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](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) 文件,并将它放在与笔记本相同的目录。 -## 简介 +## 介绍 -在本课中,我们将探索**《彼得与狼》**的世界,这个故事灵感来源于俄罗斯作曲家[谢尔盖·普罗科菲耶夫](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` 的方形棋盘,如下所示: +简化起见,我们将彼得的世界视为一个 `宽度` x `高度` 的方形棋盘,如下: -![彼得的环境](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![彼得的环境](../../../../translated_images/zh-CN/environment.40ba3cb66256c93f.webp) -棋盘中的每个单元格可以是: +棋盘中的每个格子可能是: -* **地面**,彼得和其他生物可以在上面行走。 -* **水域**,显然无法在上面行走。 -* **树**或**草地**,可以休息的地方。 -* **苹果**,彼得很高兴找到的食物。 -* **狼**,危险的生物,应避免接触。 +* 地面,彼得和其他生物可以在其上行走。 +* 水域,显然无法行走。 +* 树木草地,可以休息的地方。 +* 苹果,代表彼得高兴找到用以喂养自己的东西。 +* ,危险且应躲避。 -有一个单独的 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()) } ``` -总结一下,这个场景的策略和目标如下: +总结来说,此场景的策略和目标如下: -- **策略**:我们的代理(彼得)的策略由所谓的**策略函数**定义。策略函数在任何给定状态下返回动作。在我们的例子中,问题的状态由棋盘表示,包括玩家的当前位置。 +- 策略,由所谓的策略函数(policy)定义。策略是一个函数,给定任意状态返回采取的动作。在本例中,状态由棋盘表示,含玩家当前位置。 -- **目标**:强化学习的目标是最终学习一个好的策略,使我们能够高效地解决问题。然而,作为基线,我们可以考虑最简单的策略,称为**随机游走**。 +- 目标,强化学习的目的是最终学习一个良好策略,能高效解决问题。但作为基线,先考虑最简单的策略——随机游走。 ## 随机游走 -首先,我们通过实现随机游走策略来解决问题。在随机游走中,我们会随机选择允许的动作,直到到达苹果(代码块 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 步。 - 你还可以看到彼得在随机游走中的移动情况: + 你也可以看到彼得随机游走时的移动轨迹: ![彼得的随机游走](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) ## 奖励函数 -为了让我们的策略更智能,我们需要了解哪些动作比其他动作“更好”。为此,我们需要定义目标。 +为了让策略更加智能,我们需要理解哪些移动比其他的“更好”。为此,我们需要定义目标。 -目标可以通过**奖励函数**定义,该函数为每个状态返回一些分数值。分数越高,奖励函数越好。(代码块 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`,我们可以使用形状为 `width` x `height` x `len(actions)` 的 numpy 数组来表示 Q表:(代码块 6) +因为方便起见,它通常被表示为表格或多维数组。由于棋盘尺寸为 `宽度` x `高度`,我们可以用形状为 `宽度` x `高度` x `动作数` 的 numpy 数组表示 Q 表:(代码块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)`。 -![彼得的环境](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![彼得的环境](../../../../translated_images/zh-CN/env_init.04e8f26d2d60089e.webp) -每个单元格的中心有一个“箭头”,指示移动的优选方向。由于所有方向都相等,显示的是一个点。 +每个格子中心有个“箭头”指示优选移动方向。所有方向等值时显示为点。 -现在我们需要运行模拟,探索环境,并学习 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')*(最大值在状态 *s'* 的所有动作 *a'* 中计算)。 + +这给出了状态 *s* 下动作 *a* 的 Q 表计算的贝尔曼公式: + + + +其中 γ 是所谓的折扣因子,决定你应该多大程度上倾向当前奖励而非未来奖励,反之亦然。 + +## 学习算法 + +根据上面公式,我们现在可以写出我们的学习算法的伪代码: + +* 用相等数字初始化 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. 更新总奖励并减小 α。 + +## 利用与探索 + +在上面算法中,我们没具体说明如何选择步骤 2.1 的动作。如果随机选择动作,我们会随机探索环境,可能频繁死亡且进入通常不会去的区域。另一种方法是利用已知 Q 表值,选择最佳动作(Q 值高的动作)在状态 *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 + ``` + + 为避免初始向量所有分量相同时除以 0,向原始向量添加少量 `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/) -## 作业 -[一个更真实的世界](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/zh-HK/.co-op-translator.json b/translations/zh-HK/.co-op-translator.json index 5a5cc9055..4edfd9473 100644 --- a/translations/zh-HK/.co-op-translator.json +++ b/translations/zh-HK/.co-op-translator.json @@ -24,8 +24,8 @@ "language_code": "zh-HK" }, "1-Introduction/3-fairness/README.md": { - "original_hash": "9a6b702d1437c0467e3c5c28d763dac2", - "translation_date": "2025-09-05T09:24:32+00:00", + "original_hash": "0f00d72169a0d37eecfd16d71e01700a", + "translation_date": "2026-07-14T08:02:45+00:00", "source_file": "1-Introduction/3-fairness/README.md", "language_code": "zh-HK" }, @@ -54,8 +54,8 @@ "language_code": "zh-HK" }, "2-Regression/1-Tools/README.md": { - "original_hash": "fa81d226c71d5af7a2cade31c1c92b88", - "translation_date": "2025-09-05T09:17:57+00:00", + "original_hash": "0b8635427b582d03ea4ab7089b93e505", + "translation_date": "2026-07-14T07:57:16+00:00", "source_file": "2-Regression/1-Tools/README.md", "language_code": "zh-HK" }, @@ -72,8 +72,8 @@ "language_code": "zh-HK" }, "2-Regression/2-Data/README.md": { - "original_hash": "7c077988328ebfe33b24d07945f16eca", - "translation_date": "2025-09-05T09:18:49+00:00", + "original_hash": "a58b2c4d16c6b122643391745ac15af6", + "translation_date": "2026-07-14T07:58:38+00:00", "source_file": "2-Regression/2-Data/README.md", "language_code": "zh-HK" }, @@ -89,6 +89,12 @@ "source_file": "2-Regression/2-Data/solution/Julia/README.md", "language_code": "zh-HK" }, + "2-Regression/2-Data/solution/notebook.ipynb": { + "original_hash": "96b95f8cf473481f2f371de8156f1571", + "translation_date": "2026-07-14T07:42:25+00:00", + "source_file": "2-Regression/2-Data/solution/notebook.ipynb", + "language_code": "zh-HK" + }, "2-Regression/3-Linear/README.md": { "original_hash": "8b776e731c35b171d316d01d0e7b1369", "translation_date": "2026-04-26T20:34:13+00:00", @@ -457,7 +463,7 @@ }, "8-Reinforcement/1-QLearning/README.md": { "original_hash": "911efd5e595089000cb3c16fce1beab8", - "translation_date": "2025-09-05T09:33:22+00:00", + "translation_date": "2026-07-14T08:00:07+00:00", "source_file": "8-Reinforcement/1-QLearning/README.md", "language_code": "zh-HK" }, @@ -481,7 +487,7 @@ }, "8-Reinforcement/2-Gym/README.md": { "original_hash": "107d5bb29da8a562e7ae72262d251a75", - "translation_date": "2025-09-05T09:34:21+00:00", + "translation_date": "2026-07-14T08:01:40+00:00", "source_file": "8-Reinforcement/2-Gym/README.md", "language_code": "zh-HK" }, @@ -581,6 +587,19 @@ "source_file": "TROUBLESHOOTING.md", "language_code": "zh-HK" }, + "__translation_failures__": { + "sketchnotes/LICENSE.md": { + "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f", + "source_file": "sketchnotes/LICENSE.md", + "language_code": "zh-HK", + "failure_date": "2026-07-14T07:55:57+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:21:23+00:00", diff --git a/translations/zh-HK/1-Introduction/3-fairness/README.md b/translations/zh-HK/1-Introduction/3-fairness/README.md index a5e1100b0..db19b1451 100644 --- a/translations/zh-HK/1-Introduction/3-fairness/README.md +++ b/translations/zh-HK/1-Introduction/3-fairness/README.md @@ -1,161 +1,167 @@ -# 使用負責任的人工智能構建機器學習解決方案 - -![機器學習中負責任人工智能的摘要草圖](../../../../sketchnotes/ml-fairness.png) -> 草圖由 [Tomomi Imura](https://www.twitter.com/girlie_mac) 提供 +# 用負責任的 AI 建立機器學習解決方案 + +![機器學習中負責任 AI 的概要示意圖](../../../../translated_images/zh-HK/ml-fairness.ef296ebec6afc98a.webp) +> 示意圖來源:[Tomomi Imura](https://www.twitter.com/girlie_mac) ## [課前測驗](https://ff-quizzes.netlify.app/en/ml/) - + ## 簡介 -在這個課程中,你將開始了解機器學習如何以及正在影響我們的日常生活。即使是現在,系統和模型已經參與了日常的決策任務,例如醫療診斷、貸款批准或欺詐檢測。因此,確保這些模型能夠提供值得信賴的結果是非常重要的。就像任何軟件應用程序一樣,人工智能系統可能會未達預期或產生不理想的結果。因此,理解和解釋人工智能模型的行為是至關重要的。 +在本課程中,你將開始了解機器學習如何影響並正在影響我們的日常生活。即使是現在,系統和模型已經參與了每天的決策任務,例如醫療診斷、貸款審批或詐騙偵測。因此,確保這些模型運作良好,提供值得信賴的結果非常重要。就像任何軟件應用程序一樣,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://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "微軟的負責任人工智能方法") +[![Microsoft's Approach to Responsible AI](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoft's Approach to Responsible AI") -> 🎥 點擊上方圖片觀看視頻:微軟的負責任人工智能方法 +> 🎥 點擊上方圖片觀賞影片:Microsoft 的負責任 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) +- 污名化。不公平地批評和標籤某人或某物。例如,有影像標籤技術惡名昭彰地將深色皮膚人的影像誤標為猩猩。 +- 過度或不足代表。例如某團體在某職業中鮮少出現,而任何持續促進該情況的服務或功能都會造成傷害。 +- 刻板印象。將特定群體與預設屬性聯結。例如,英土語言翻譯系統可能因有男女刻板聯想的詞語而產生不準確。 -![翻譯成土耳其語](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) +![翻譯成土耳其語](../../../../translated_images/zh-HK/gender-bias-translate-en-tr.f185fd8822c2d437.webp) > 翻譯成土耳其語 -![翻譯回英語](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) -> 翻譯回英語 +![再翻譯回英文](../../../../translated_images/zh-HK/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) +> 再翻譯回英文 -在設計和測試人工智能系統時,我們需要確保人工智能是公平的,並且不會被編程為做出偏見或歧視性的決策,這些決策是人類也被禁止做出的。保證人工智能和機器學習的公平性仍然是一個複雜的社會技術挑戰。 +在設計和測試 AI 系統時,我們需要確保 AI 公平且未被編程以做出偏見或歧視決策,這些也是人類被禁止的行為。保證 AI 和機器學習的公平性依然是個複雜的社會技術難題。 ### 可靠性與安全性 -為了建立信任,人工智能系統需要在正常和意外情況下保持可靠、安全和一致。了解人工智能系統在各種情況下的行為,尤其是在異常情況下的行為,是非常重要的。在構建人工智能解決方案時,需要大量關注如何處理人工智能解決方案可能遇到的各種情況。例如,自動駕駛汽車需要將人們的安全放在首位。因此,為汽車提供動力的人工智能需要考慮汽車可能遇到的所有可能情況,例如夜晚、雷暴或暴風雪、孩子橫穿馬路、寵物、道路施工等。人工智能系統能夠可靠、安全地處理廣泛條件的能力,反映了數據科學家或人工智能開發者在設計或測試系統時考慮的預見性水平。 +為建立信任,AI 系統需在正常與異常條件下均可靠、安全且一致。了解 AI 系統在各種情況,尤其是異常值下的行為至關重要。建立 AI 解決方案時,需高度關注如何處理 AI 解決方案可能遇到的各種情況。例如,自駕車必須將人員安全擺在首位。因此,驅動該車的 AI 需要考慮所有可能遇到的場景,如夜間、雷暴大風雪、街上奔跑的孩童、寵物、道路施工等。AI 系統能可靠且安全處理多樣情況,反映出資料科學家或 AI 開發者在設計或測試系統時的預期程度。 -> [🎥 點擊這裡觀看視頻:](https://www.microsoft.com/videoplayer/embed/RE4vvIl) +> [🎥 點擊此處觀看影片:](https://www.microsoft.com/videoplayer/embed/RE4vvIl) ### 包容性 -人工智能系統應該被設計為能夠吸引並賦能每個人。在設計和實施人工智能系統時,數據科學家和人工智能開發者需要識別並解決系統中可能無意中排除某些人的潛在障礙。例如,全球有10億殘疾人士。隨著人工智能的進步,他們可以更輕鬆地獲取廣泛的信息和機會。通過解決這些障礙,可以創造創新機會,並開發出能為每個人帶來更好體驗的人工智能產品。 - -> [🎥 點擊這裡觀看視頻:人工智能中的包容性](https://www.microsoft.com/videoplayer/embed/RE4vl9v) +AI 系統應設計為能讓每個人參與並獲得賦能。資料科學家與 AI 開發者在設計和實作 AI 系統時會辨識並解決可能無意中排除某些人的潛在障礙。例如,全球有十億名身心障礙者,隨著 AI 的進步,他們能更輕鬆取得資訊和機會。克服障礙能創造創新機會,開發出改善體驗且惠及所有人的 AI 產品。 -### 安全性與隱私 +> [🎥 點擊此處觀看影片:AI 的包容性](https://www.microsoft.com/videoplayer/embed/RE4vl9v) -人工智能系統應該是安全的,並尊重人們的隱私。如果系統威脅到人們的隱私、信息或生命,人們對其的信任就會減少。在訓練機器學習模型時,我們依賴數據來產生最佳結果。在此過程中,必須考慮數據的來源和完整性。例如,數據是用戶提交的還是公開可用的?接下來,在處理數據時,開發能夠保護機密信息並抵禦攻擊的人工智能系統至關重要。隨著人工智能的普及,保護隱私和確保重要的個人和商業信息的安全變得越來越重要和複雜。隱私和數據安全問題對於人工智能尤為重要,因為人工智能系統需要訪問數據來對人們做出準確且有根據的預測和決策。 +### 安全與隱私 -> [🎥 點擊這裡觀看視頻:人工智能中的安全性](https://www.microsoft.com/videoplayer/embed/RE4voJF) +AI 系統應安全且尊重個人隱私。人們對那些危及隱私、資訊或生命的系統信任度較低。訓練機器學習模型時,我們仰賴資料來產生最佳結果,因此需考慮資料的來源與完整性。例如,資料是用戶提交的還是公開可用?在處理資料時,也必須開發能保護機密資訊並抵禦攻擊的 AI 系統。隨著 AI 越來越普及,保護隱私和資訊安全變得更為重要且複雜。對 AI 而言,隱私與資料安全議題需特別注意,因為 AI 依賴資料來做出準確且有根據的預測和決策。 -- 作為一個行業,我們在隱私和安全性方面取得了顯著進展,這在很大程度上得益於如GDPR(通用數據保護條例)等法規的推動。 -- 然而,對於人工智能系統,我們必須承認在需要更多個人數據以使系統更加個性化和有效與隱私之間的緊張關係。 -- 就像互聯網誕生時連接計算機一樣,我們也看到了與人工智能相關的安全問題數量的急劇增加。 -- 同時,我們也看到了人工智能被用於改善安全性的例子。例如,大多數現代防病毒掃描器今天都由人工智能啟發的啟發式方法驅動。 -- 我們需要確保我們的數據科學流程與最新的隱私和安全實踐和諧融合。 +> [🎥 點擊此處觀看影片:AI 中的安全](https://www.microsoft.com/videoplayer/embed/RE4voJF) -### 透明性 +- 我們產業在隱私及安全方面已取得重大進展,受 GDPR(一般資料保護條例)等規範大力推動。 +- 然而在 AI 系統中,我們必須承認在需要更多個人資料以提升系統個人化與效能與隱私之間的矛盾。 +- 正如連結電腦和網際網路誕生時產生大量安全問題,我們也看到與 AI 相關的安全問題急劇增加。 +- 同時,我們也看到 AI 被用來提升安全。例如,現代多數防毒掃描器均由 AI 啟發式技術驅動。 +- 我們需要確保資料科學流程與最新隱私及安全實務和諧融合。 -人工智能系統應該是可理解的。透明性的一個關鍵部分是解釋人工智能系統及其組件的行為。提高對人工智能系統的理解需要利益相關者了解它們如何以及為什麼運作,以便能夠識別潛在的性能問題、安全和隱私問題、偏見、排他性做法或意外結果。我們還認為,那些使用人工智能系統的人應該誠實並坦率地說明何時、為什麼以及如何選擇部署它們,以及它們使用的系統的局限性。例如,如果一家銀行使用人工智能系統來支持其消費者貸款決策,則需要檢查結果並了解哪些數據影響了系統的建議。隨著政府開始對各行業的人工智能進行監管,數據科學家和組織必須解釋人工智能系統是否符合監管要求,尤其是在出現不良結果時。 -> [🎥 點擊這裡觀看視頻:人工智能中的透明性](https://www.microsoft.com/videoplayer/embed/RE4voJF) +### 透明度 +AI 系統應易於理解。透明度的關鍵部分是解釋 AI 系統及其組件的行為。提升對 AI 系統的理解,需要持份者明白系統如何運作以及背後原因,以識別潛在的性能問題、安全與隱私疑慮、偏見、排他性慣例或非預期結果。我們也相信 AI 使用者應誠實並公開說明何時、為何及如何選擇部署 AI 系統,以及他們使用系統的限制。例如,銀行使用 AI 系統支援消費貸款決策時,檢視結果並了解哪些資料影響系統建議非常重要。政府正開始跨產業對 AI 進行監管,資料科學家和組織必須說明 AI 系統是否符合監管要求,尤其是在出現不理想結果時。 -- 由於人工智能系統非常複雜,很難理解它們的工作原理並解釋結果。 -- 這種缺乏理解影響了這些系統的管理、運營和文檔化方式。 -- 更重要的是,這種缺乏理解影響了基於這些系統產生的結果所做的決策。 +> [🎥 點擊此處觀看影片:AI 中的透明度](https://www.microsoft.com/videoplayer/embed/RE4voJF) -### 責任 +- 由於 AI 系統非常複雜,很難理解其運作方式及結果解讀。 +- 這種理解不足影響系統的管理、運營和紀錄。 +- 更重要的是,這種缺乏理解影響使用這些系統產出結果時的決策。 -設計和部署人工智能系統的人必須對其系統的運作負責。責任的必要性在敏感技術(如面部識別)中尤為重要。最近,對面部識別技術的需求不斷增長,尤其是來自執法機構,他們看到了該技術在尋找失蹤兒童等用途中的潛力。然而,這些技術可能會被政府用來威脅公民的基本自由,例如,通過對特定個體進行持續監控。因此,數據科學家和組織需要對其人工智能系統對個人或社會的影響負責。 +### 責任制 + +設計和部署 AI 系統的人必須對系統的運作負責。責任制尤其在敏感技術(如臉部辨識)中尤為重要。近年來,臉部辨識技術需求日增,尤其是執法機構視其可用於尋找失蹤兒童等用途。然而,這項技術可能被政府用來危害公民的基本自由,例如對特定個體實施持續監控。因此,資料科學家與組織需要對 AI 系統對個人或社會的影響負責。 -[![領先的人工智能研究人員警告面部識別可能導致大規模監控](../../../../1-Introduction/3-fairness/images/accountability.png)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "微軟的負責任人工智能方法") +[![前沿 AI 研究者警告臉部辨識造成大規模監控](../../../../translated_images/zh-HK/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft's Approach to Responsible AI") -> 🎥 點擊上方圖片觀看視頻:面部識別可能導致大規模監控的警告 +> 🎥 點擊上方圖片觀看影片:臉部辨識帶來大規模監控的警告 -最終,作為第一代將人工智能帶入社會的世代,我們面臨的最大問題之一是如何確保計算機始終對人類負責,以及如何確保設計計算機的人對其他人負責。 +對我們這代人來說(首批將 AI 帶入社會的一代),最大問題之一就是如何確保電腦對人負責,以及設計電腦的人對所有人負責。 ## 影響評估 -在訓練機器學習模型之前,進行影響評估以了解人工智能系統的目的、預期用途、部署地點以及與系統交互的人是非常重要的。這些評估對於評審者或測試者來說非常有幫助,因為它們可以知道在識別潛在風險和預期後果時需要考慮哪些因素。 +在訓練機器學習模型之前,進行影響評估非常重要,以了解 AI 系統的目的、預期用途、部署地點及使用者。這有助於審查者或測試者在評估系統時,了解辨識潛在風險及預期後果時應考慮的因素。 進行影響評估時的重點領域包括: -* **對個人的不利影響**。意識到任何限制或要求、不支持的用途或任何已知的限制會妨礙系統性能,對於確保系統不會以可能對個人造成傷害的方式使用至關重要。 -* **數據要求**。了解系統如何以及在哪裡使用數據,使評審者能夠探索需要注意的任何數據要求(例如GDPR或HIPPA數據法規)。此外,檢查數據的來源或數量是否足夠用於訓練。 -* **影響摘要**。收集使用系統可能產生的潛在傷害清單。在機器學習生命周期中,檢查是否已緩解或解決識別出的問題。 -* **每個六大核心原則的適用目標**。評估是否達到了每個原則的目標,以及是否存在任何差距。 +* 對個人的不利影響。了解任何限制或需求、不支持的用途或已知限制,對確保系統不以可能傷害個人的方式使用至關重要。 +* 資料需求。了解系統如何以及在哪裡使用資料,能讓審查者檢視需留意的資料需求(例如 GDPR 或 HIPAA 規定)。此外,也要審查資料來源及量是否足夠訓練。 +* 影響摘要。蒐集使用系統可能產生的潛在傷害清單。於機器學習生命週期中檢視所辨識問題是否被緩解或解決。 +* 適用目標,針對六項核心原則,評估是否達到各目標,並找出任何缺口。 -## 使用負責任人工智能進行調試 -與調試軟件應用程序類似,調試人工智能系統是識別和解決系統問題的必要過程。許多因素可能導致模型未按預期或負責任地運行。大多數傳統的模型性能指標是模型性能的定量匯總,這不足以分析模型如何違反負責任人工智能原則。此外,機器學習模型是一個黑箱,難以理解其結果的驅動因素或在出錯時提供解釋。在本課程的後續部分,我們將學習如何使用負責任人工智能儀表板來幫助調試人工智能系統。該儀表板為數據科學家和人工智能開發者提供了一個全面的工具,用於執行以下操作: +## 負責任的 AI 除錯 -* **錯誤分析**。識別可能影響系統公平性或可靠性的模型錯誤分佈。 -* **模型概覽**。發現模型在數據群體中的性能差異。 -* **數據分析**。了解數據分佈並識別數據中可能導致公平性、包容性和可靠性問題的潛在偏見。 -* **模型可解釋性**。了解影響或影響模型預測的因素。這有助於解釋模型的行為,這對於透明性和責任感至關重要。 +如同除錯軟體應用程序,AI 系統除錯是識別及解決系統問題的必要過程。多種因素會影響模型表現不符合預期或負責任。大多數傳統模型性能指標是模型表現的量化彙總,無法充分分析模型如何違反負責任 AI 原則。此外,機器學習模型是黑盒,難以理解驅動結果的原因或當出錯時解釋原因。本課程稍後我們將學習如何使用負責任 AI 儀表板協助除錯 AI 系統。該儀表板為資料科學家和 AI 開發者提供全面工具,以進行: + +* 錯誤分析。識別模型錯誤分佈,可能影響系統公平性或可靠性。 +* 模型總覽。發現不同資料群體中模型表現差異。 +* 資料分析。了解資料分布並辨識可能導致公平性、包容性和可靠性問題的偏見。 +* 模型可解釋性。了解影響模型預測的因素,協助解釋模型行為,對透明度和責任制很重要。 -## 🚀 挑戰 -為了防止傷害的產生,我們應該: +## 🚀 挑戰 + +為避免傷害的產生,我們應: -- 確保參與系統工作的團隊成員具有多樣化的背景和觀點 -- 投資於反映我們社會多樣性的數據集 -- 在機器學習生命周期中開發更好的方法來檢測和糾正負責任人工智能問題 +- 團隊成員背景與觀點多元化 +- 投資反映社會多樣性的資料集 +- 在整個機器學習生命週期內,開發更佳方法檢測並糾正責任 AI 相關問題 -思考一些現實生活中的場景,這些場景中模型的不可信性在模型構建和使用中顯而易見。我們還應該考慮什麼? +思考現實情境中模型不可靠的具體表現及其帶來的影響。我們還應考慮什麼? ## [課後測驗](https://ff-quizzes.netlify.app/en/ml/) ## 回顧與自學 + -在這節課中,你已經學習了機器學習中公平性和不公平性概念的一些基礎知識。 -觀看這個工作坊以深入了解相關主題: +在本課程中,您已經學習了一些機器學習中公平與不公平概念的基礎知識。 + +觀看此工作坊以深入了解這些主題: -- 追求負責任的人工智能:將原則付諸實踐,由 Besmira Nushi、Mehrnoosh Sameki 和 Amit Sharma 主講 +- 追求負責任的 AI:將原則付諸實踐,講者 Besmira Nushi、Mehrnoosh Sameki 和 Amit Sharma -[![負責任的人工智能工具箱:建立負責任人工智能的開源框架](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: 建立負責任人工智能的開源框架") +[![Responsible AI Toolbox: An open-source framework for building responsible AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") -> 🎥 點擊上方圖片觀看影片:RAI Toolbox: 建立負責任人工智能的開源框架,由 Besmira Nushi、Mehrnoosh Sameki 和 Amit Sharma 主講 +> 🎥 點擊上方圖片觀看影片:RAI Toolbox:一個用於構建負責任 AI 的開源框架,講者 Besmira Nushi、Mehrnoosh Sameki 與 Amit Sharma -此外,閱讀以下資源: +另外,請閱讀: -- 微軟的負責任人工智能資源中心:[負責任人工智能資源 – 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:人工智能中的公平性、問責性、透明性和倫理 - 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: -- [負責任人工智能工具箱 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 工具箱](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/zh-HK/2-Regression/1-Tools/README.md b/translations/zh-HK/2-Regression/1-Tools/README.md index 2024b8807..698842726 100644 --- a/translations/zh-HK/2-Regression/1-Tools/README.md +++ b/translations/zh-HK/2-Regression/1-Tools/README.md @@ -1,120 +1,121 @@ -# 使用 Python 和 Scikit-learn 建立回歸模型 +# 使用 Python 和 Scikit-learn 開始迴歸模型之旅 -![回歸模型的手繪筆記摘要](../../../../sketchnotes/ml-regression.png) +![迴歸總結手繪筆記](../../../../translated_images/zh-HK/ml-regression.4e4f70e3b3ed446e.webp) -> 手繪筆記由 [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 notebooks。 -- 安裝並使用 Scikit-learn。 -- 通過實際操作探索線性回歸。 +- 配置你的電腦進行本地機器學習任務。 +- 使用 Jupyter 筆記本。 +- 使用 Scikit-learn,包括安裝步驟。 +- 通過實作練習探索線性迴歸。 -## 安裝與配置 +## 安裝與設定 -[![機器學習初學者 - 配置工具以建立機器學習模型](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "機器學習初學者 - 配置工具以建立機器學習模型") +[![為初學者準備的 ML - 配置你的工具開始建立機器學習模型](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "為初學者準備的 ML - 配置你的工具開始建立機器學習模型") -> 🎥 點擊上方圖片觀看一段短片,了解如何配置你的電腦以進行機器學習。 +> 🎥 點擊上方圖片觀看短片,學習如何配置電腦以進行 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**。確保你的電腦已安裝好 [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/)。在本課程中,你將在 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/)完成基礎安裝。因為你會在這課程中使用 Python,所以建議熟悉如何[為 Python 開發設定 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) 來熟悉 Python。 + > 透過一系列 [Learn 模組](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)熟悉 Python。 > - > [![使用 Visual Studio Code 配置 Python](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "使用 Visual Studio Code 配置 Python") + > [![使用 Visual Studio Code 設定 Python](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](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/)。 +1. **安裝 Jupyter Notebook**。你需要 [安裝 Jupyter 軟件包](https://pypi.org/project/jupyter/)。 ## 你的機器學習開發環境 -你將使用 **notebooks** 來開發 Python 程式碼並建立機器學習模型。這種文件格式是數據科學家常用的工具,其文件副檔名為 `.ipynb`。 +你將使用 筆記本 來編寫 Python 程式碼和建立機器學習模型。這類文件是數據科學家常用工具,可以透過副檔名 `.ipynb` 識別。 -Notebooks 是一種互動式環境,允許開發者撰寫程式碼並添加註解或文件,這對於實驗性或研究導向的項目非常有幫助。 +筆記本是互動環境,開發者可同時撰寫程式碼、添加註解與文件,非常適合實驗或研究型項目。 -[![機器學習初學者 - 配置 Jupyter Notebooks 開始建立回歸模型](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "機器學習初學者 - 配置 Jupyter Notebooks 開始建立回歸模型") +[![為初學者準備的 ML - 設置 Jupyter 筆記本開始建立迴歸模型](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "為初學者準備的 ML - 設置 Jupyter 筆記本開始建立迴歸模型") -> 🎥 點擊上方圖片觀看一段短片,了解如何進行此操作。 +> 🎥 點擊上方圖片觀看此練習的教學短片。 -### 練習 - 使用 Notebook +### 練習 - 使用筆記本 -在此資料夾中,你會找到檔案 _notebook.ipynb_。 +在此資料夾中,你會找到 _notebook.ipynb_ 檔案。 1. 在 Visual Studio Code 中打開 _notebook.ipynb_。 - Jupyter 伺服器將啟動,並使用 Python 3+。你會看到 Notebook 中可以執行的程式碼區塊。點擊類似播放按鈕的圖標即可執行程式碼區塊。 + Jupyter 服務會以 Python 3+ 启动。你會看到筆記本中可 `執行` 的程式碼區塊。點擊類似播放按鈕的圖示即可執行區塊。 -2. 選擇 `md` 圖標,添加一些 Markdown,並輸入以下文字:**# Welcome to your notebook**。 +1. 選擇 `md` 圖標並添加一些 markdown,寫入以下文字 **# 歡迎使用你的筆記本**。 - 接著,添加一些 Python 程式碼。 + 接著,加入一些 Python 程式碼。 -3. 在程式碼區塊中輸入 **print('hello notebook')**。 -4. 點擊箭頭執行程式碼。 +1. 在程式碼區塊中輸入 **print('hello notebook')**。 +1. 點擊箭頭執行程式碼。 - 你應該會看到以下輸出: + 你應該會看到列印的訊息: ```output hello notebook ``` -![VS Code 中打開的 Notebook](../../../../2-Regression/1-Tools/images/notebook.jpg) +![VS Code 中開啟的筆記本](../../../../translated_images/zh-HK/notebook.4a3ee31f396b8832.webp) -你可以在程式碼中穿插註解,為 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),幫助你執行機器學習任務。 +現在你的本地環境已安裝好 Python,且熟悉 Jupyter 筆記本,接下來讓我們來熟悉 Scikit-learn(發音為「sci」就像「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 和其他工具,建立所謂「傳統機器學習」的模型。我們有意避開神經網絡與深度學習,這些會在即將推出的「初學者 AI」課程中深入介紹。 -Scikit-learn 使得建立模型並評估其使用變得簡單。它主要專注於處理數值數據,並包含多個現成的數據集作為學習工具。它還提供了預建模型供學生嘗試。接下來,我們將探索如何加載預打包數據並使用內建的估算器來建立第一個機器學習模型。 +Scikit-learn 讓建立與評估模型變得簡單方便。它主要聚焦於使用數值資料,並內建多個現成數據集作學習範例,也包含已建好的模型供學生嘗試。讓我們先探索如何載入內建數據,使用 Scikit-learn 的預建估計器建立第一個機器學習模型,並分析簡單的數據。 -## 練習 - 你的第一個 Scikit-learn Notebook +## 練習 - 你的第一個 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)。 -[![機器學習初學者 - 在 Python 中的第一個線性回歸項目](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "機器學習初學者 - 在 Python 中的第一個線性回歸項目") -> 🎥 點擊上方圖片觀看一段短片,了解如何進行此練習。 +[![為初學者準備的 ML - 你的第一個 Python 線性迴歸專案](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](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. 輸入以下代碼以加入引用: ```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:T 細胞(白血球的一種類型) +- 年齡:years +- 體重指數 (bmi) +- 血壓平均值 (bp) +- 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]) ``` - 你得到的回應是一個元組。你將元組的前兩個值分別賦值給 `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 欄。為符合繪圖需求,可以用 `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. 現在準備訓練模型!載入線性迴歸模型並用 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() ``` - ![顯示糖尿病數據點的散點圖](../../../../2-Regression/1-Tools/images/scatterplot.png) -✅ 想一想這裡發生了什麼。一條直線穿過了許多小數據點,但它究竟在做什麼?你能否看出應該如何利用這條直線來預測一個新的、未見過的數據點應該在圖表的 y 軸上對應的位置?試著用語言描述這個模型的實際用途。 + ![展示糖尿病資料點的散點圖](../../../../translated_images/zh-HK/scatterplot.ad8b356bcbb33be6.webp) + -恭喜你!你已經建立了你的第一個線性回歸模型,使用它進行了預測,並將結果顯示在圖表中! + ✅ 想一想這裡發生了什麼。一條直線穿過許多小點資料,但它到底在做什麼?你能否看到如何利用這條線去預測一個新的、未見過的資料點應該在圖上的 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/zh-HK/2-Regression/2-Data/README.md b/translations/zh-HK/2-Regression/2-Data/README.md index c87eaa669..1be3eebee 100644 --- a/translations/zh-HK/2-Regression/2-Data/README.md +++ b/translations/zh-HK/2-Regression/2-Data/README.md @@ -1,62 +1,62 @@ -# 使用 Scikit-learn 建立回歸模型:準備及視覺化數據 +# 使用 Scikit-learn 建立迴歸模型:準備與視覺化數據 -![數據視覺化資訊圖表](../../../../2-Regression/2-Data/images/data-visualization.png) +![數據視覺化資訊圖表](../../../../translated_images/zh-HK/data-visualization.54e56dded7c1a804.webp) -資訊圖表由 [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 開始建立機器學習模型,接下來可以開始向數據提出問題。在處理數據並應用機器學習解決方案時,了解如何提出正確的問題以充分發揮數據的潛力是非常重要的。 +現在你已經準備好所需工具,可以開始使用 Scikit-learn 進行機器學習模型的建立,準備好向你的數據提問。當你處理數據並應用機器學習解決方案時,非常重要的是要了解如何提出正確的問題,才能恰當地發掘數據集的潛力。 -在本課程中,你將學到: +在本課程中,你將學習: -- 如何為模型建立準備數據。 +- 如何準備數據以建立模型。 - 如何使用 Matplotlib 進行數據視覺化。 +- 如何使用 Seaborn 進行更具表現力的數據視覺化。 ## 向數據提出正確的問題 -你需要回答的問題將決定你使用哪種類型的機器學習算法。而你得到答案的質量將很大程度上取決於數據的性質。 +你需要回答的問題將決定你會使用哪種類型的機器學習算法。你得到的答案品質,也會很大程度取決於你的數據本質。 -看看本課程提供的[數據](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv)。你可以在 VS Code 中打開這個 .csv 文件。快速瀏覽後可以看到有空白值以及字符串和數字數據的混合。還有一個奇怪的名為 "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://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "機器學習初學者 - 如何分析和清理數據集") +[![機器學習入門 - 如何分析與清理資料集](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "機器學習入門 - 如何分析與清理資料集") -> 🎥 點擊上方圖片觀看一段短片,了解如何準備本課程的數據。 +> 🎥 點擊上圖觀看本課程準備數據的短片教學。 -事實上,很少能直接獲得完全準備好的數據集來建立機器學習模型。在本課程中,你將學習如何使用標準 Python 庫準備原始數據集。你還將學習各種視覺化數據的技術。 +事實上,很少會拿到一個完全準備好可直接用來建立機器學習模型的數據集。在本課中,你將學習如何使用標準 Python 函式庫來準備原始數據集,同時學習多種數據視覺化技巧。 -## 案例研究:'南瓜市場' +## 個案研究:「南瓜市場」 -在此文件夾中,你會在根目錄的 `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)中提取的原始數據。 +在此資料夾的根目錄 `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 網站可分城市下載多個獨立檔案。為避免過多分檔,我們已將所有城市數據合併到一份試算表中,因此資料已經做了一點「準備」。接下來,我們深入查看數據本身。 -### 南瓜數據 - 初步結論 +### 南瓜數據:初步結論 -你對這些數據有什麼觀察?你可能已經注意到這些數據混合了字符串、數字、空白值和一些奇怪的值。 - -使用回歸技術,你可以向這些數據提出什麼問題?例如:"預測某個月份出售的南瓜價格"。再次查看數據,你需要進行一些更改以創建適合此任務的數據結構。 +你對這些數據有什麼觀察?你已經看到,裡面混合了字串、數字、空白和奇怪的值,需要你去理解。 +使用迴歸技術,你可以問數據什麼問題?例如「預測給定月份內南瓜的售價」。再看數據,你需要對結構做一些調整來完成這個任務所需的數據架構。 ## 練習 - 分析南瓜數據 -讓我們使用 [Pandas](https://pandas.pydata.org/)(名稱代表 `Python Data Analysis`),這是一個非常有用的工具,用於整理數據,來分析和準備這些南瓜數據。 +我們用 [Pandas](https://pandas.pydata.org/)(意指「Python 數據分析」)這個非常適合整理數據的工具,來分析並準備這份南瓜數據。 -### 首先,檢查是否有缺失日期 +### 首先,檢查缺少日期 -你需要首先檢查是否有缺失日期: +你需要先進行以下步驟檢查缺少的日期: -1. 將日期轉換為月份格式(這些是美國日期,格式為 `MM/DD/YYYY`)。 -2. 提取月份到新列。 +1. 將日期轉為月份格式(這裡為美式日期格式,`MM/DD/YYYY`)。 +2. 將月份擷取到一個新欄位。 -在 Visual Studio Code 中打開 _notebook.ipynb_ 文件,並將電子表格導入到新的 Pandas dataframe 中。 +在 Visual Studio Code 中開啟 _notebook.ipynb_ 檔案,並將試算表匯入新的 Pandas 資料框架(dataframe)。 -1. 使用 `head()` 函數查看前五行。 +1. 使用 `head()` 函式查看前五行數據。 ```python import pandas as pd @@ -64,30 +64,30 @@ pumpkins.head() ``` - ✅ 你會使用什麼函數來查看最後五行? + ✅ 你會用什麼函式來查看最後五行? -1. 檢查當前 dataframe 中是否有缺失數據: +1. 檢查目前 dataframe 中是否有遺失資料: ```python pumpkins.isnull().sum() ``` - 有缺失數據,但可能對當前任務影響不大。 + 有遺失資料,但可能對當前任務影響不大。 -1. 為了使 dataframe 更易於操作,使用 `loc` 函數選擇你需要的列。`loc` 函數從原始 dataframe 中提取一組行(作為第一個參數)和列(作為第二個參數)。以下表達式中的 `:` 表示 "所有行"。 +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 欄;同時將日期欄位轉換為月份。幸運的是,前面檢查結果顯示日期與價格欄無遺失資料。 -1. 要計算平均值,添加以下代碼: +1. 計算平均價格,添加以下程式碼: ```python price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2 @@ -96,37 +96,37 @@ ``` - ✅ 隨時使用 `print(month)` 打印任何數據以進行檢查。 + ✅ 如果想確認數據,可以用 `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"。南瓜似乎很難一致地稱重,因此讓我們通過選擇 `Package` 列中包含字符串 "bushel" 的南瓜來進行篩選。 +深入看原始數據,`Unit of Sale` 欄為 'EACH' 或 'PER BIN' 的記錄裡,`Package` 欄的值往往是按英寸、箱或「個」數量記錄。南瓜很難秤重一致,因此我們先只挑選 `Package` 欄包含「bushel」字串的南瓜篩選出來。 -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. 在建立 new_pumpkins dataframe 之後添加這段程式碼: ```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 定價。然而,所有這些對南瓜 bushel 的研究表明,了解數據的性質是多麼重要! +✅ 根據 [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) 的說法,公頃桶的重量依作物種類不同而有差異,因為它是體積單位。例如,一公頃桶番茄重 56 磅……葉菜類空間大但重量輕,所以菠菜一公頃桶約 20 磅。相當複雜!我們不做公頃桶到磅的換算,改按公頃桶計價。但這說明理解數據性質有多重要! -現在,你可以根據 bushel 測量分析每單位的定價。如果你再打印一次數據,你會看到它已經標準化。 +現在可以分析以公頃桶為單位的價格。再列印一次資料,你會看到價格已標準化。 -✅ 你是否注意到按半 bushel 銷售的南瓜非常昂貴?你能找出原因嗎?提示:小南瓜比大南瓜更昂貴,可能是因為每 bushel 的小南瓜數量更多,而大南瓜的空心部分佔用了更多空間。 +✅ 你注意到按半公頃桶賣的南瓜非常貴嗎?能猜出原因嗎?提示:小南瓜比大南瓜每公頃桶貴許多,可能是因為小南瓜數量多,大南瓜佔據了許多未利用的空間。 ## 視覺化策略 -數據科學家的部分角色是展示他們正在處理的數據的質量和性質。為此,他們通常會創建有趣的視覺化,例如圖表、折線圖和柱狀圖,展示數據的不同方面。通過這種方式,他們能夠以視覺方式展示關係和差距,這些通常很難發現。 +資料科學家的部分工作,是展示所處理資料的品質與狀況。他們常利用有趣的視覺化圖像、圖表和曲線圖,呈現資料的不同面向。如此就可以直觀地顯示資料之間的關係與空白,這些往往是難以直接察覺的。 -[![機器學習初學者 - 如何使用 Matplotlib 視覺化數據](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "機器學習初學者 - 如何使用 Matplotlib 視覺化數據") +[![機器學習入門 - 如何用 Matplotlib 視覺化數據](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "機器學習入門 - 如何用 Matplotlib 視覺化數據") -> 🎥 點擊上方圖片觀看一段短片,了解如何視覺化本課程的數據。 +> 🎥 點擊上圖觀看本課程數據視覺化的短片教學。 -視覺化還可以幫助確定最適合數據的機器學習技術。例如,似乎遵循一條線的散點圖表明該數據非常適合線性回歸練習。 +視覺化也有助於判斷哪種機器學習技術最適合該數據。例如,散佈圖若呈線狀分布,代表資料適合進行線性迴歸。 -一個在 Jupyter notebooks 中表現良好的數據視覺化庫是 [Matplotlib](https://matplotlib.org/)(你在上一課中也見過)。 +Jupyter notebook 中常用的數據視覺化函式庫之一是 [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。一個基本的折線圖會顯示什麼? +嘗試創建一些基本圖表來顯示你新建立的 dataframe。基本的線形圖會顯示什麼? -1. 在文件頂部的 Pandas 導入下導入 Matplotlib: +1. 在檔案開頭,Pandas 匯入後,匯入 Matplotlib: ```python import matplotlib.pyplot as plt ``` -1. 重新運行整個 notebook 以刷新。 -1. 在 notebook 底部添加一個單元格,將數據繪製為框圖: +1. 重新運行整個 notebook 以刷新數據。 +1. 在 notebook 底部新增一個儲存格,繪製箱型圖: ```python price = new_pumpkins.Price @@ -174,38 +174,113 @@ plt.show() ``` - ![一個顯示價格與月份關係的散點圖](../../../../2-Regression/2-Data/images/scatterplot.png) + ![顯示價格與月份關係的散佈圖](../../../../translated_images/zh-HK/scatterplot.b6868f44cbd2051c.webp) - 這是一個有用的圖表嗎?有什麼讓你感到驚訝嗎? + 這個圖有用嗎?有何驚喜? - 它並不是特別有用,因為它只是顯示了某個月份的數據點分佈。 + 它其實用處不大,因為僅呈現出資料在每月內的分散點。 -### 讓它更有用 +### 讓它有用一些 -要讓圖表顯示有用的數據,通常需要以某種方式對數據進行分組。讓我們嘗試創建一個圖表,其中 y 軸顯示月份,數據展示數據的分佈。 +要做出有用的圖表,一般要對數據進行分組。試著製作一個圖,y 軸為月份,顯示資料分佈情形。 -1. 添加一個單元格以創建分組柱狀圖: +1. 加一個儲存格,創建分組長條圖: ```python new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') plt.ylabel("Pumpkin Price") ``` - ![一個顯示價格與月份關係的柱狀圖](../../../../2-Regression/2-Data/images/barchart.png) + ![顯示價格與月份關係的長條圖](../../../../translated_images/zh-HK/barchart.a833ea9194346d76.webp) + + 這是較有用的視覺化!它顯示南瓜價格九月、十月最高。你的預期符合嗎?為什麼? + +## 練習 - 嘗試 Seaborn + +Matplotlib 功能強大,但生成精美圖表可能需寫較多代碼。[Seaborn](https://seaborn.pydata.org/) 是建立在 Matplotlib 之上的函式庫,專為統計數據視覺化設計。它直接配合 Pandas dataframe,提供美觀預設樣式,且能用較少代碼創建資訊豐富的圖表。因為 Seaborn 傳回 Matplotlib 物件,你仍可用已有的 Matplotlib 經驗微調結果。 + +> 如果你還沒有安裝 Seaborn,請用 `pip install seaborn` 安裝。 + +1. 在 notebook 頂部其他匯入後加入 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 散佈圖顯示價格與月份關係](../../../../translated_images/zh-HK/relplot.a03837d8f0329cec.webp) + + 注意你只傳入 _欄位名稱_ 和 dataframe,Seaborn 能自動處理軸標籤。 + +2. 可以傳入 `kind="line"` 參數切換成線圖。Seaborn 還會畫出反映線周置信區間的藍色陰影帶: + + ```python + sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins) + ``` + + ![Seaborn 線圖顯示價格與月份關係](../../../../translated_images/zh-HK/lineplot.f9034ba47b1e30ee.webp) + + 該數據較嘈雜,線圖不算最清楚,但示範了如何輕鬆切換 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") + ``` + + ![顯示每月價格分布的 Seaborn 條形圖](../../../../translated_images/zh-HK/catplot.e73fc35fdf96242b.webp) + + 這證實了你用 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") + ``` + + ![顯示數值欄位間相關性的 Seaborn 熱力圖](../../../../translated_images/zh-HK/heatmap.bd98dce43b404c57.webp) + + 接近 `1`(或 `-1`)的值意味著欄位間具有強烈的 _線性_ 相關性。注意 `Low Price` 和 `High Price` 幾乎完全相關。另一方面,`Month` 與價格的線性相關性很弱 — 儘管上面的條形圖展現了九月和十月明顯的季節高峰。這是一個重要的教訓:相關係數只衡量 _直線_ 關係,因此可能忽略季節性或其它非線性模式。✅ 為什麼在決定使用哪些欄位前,既看熱力圖 看像條形圖這樣的圖表很有用? + +### Matplotlib 還是 Seaborn? + +兩個庫都值得了解: + +- **Matplotlib** 讓你精細控制圖表的每個元素,是幾乎所有其他 Python 繪圖庫的基礎。 +- **Seaborn** 提供更高階的函數和吸引人的預設統計圖表樣式,直接支持資料框,且在探索性資料分析時通常更快。 - 這是一個更有用的數據視覺化!它似乎表明南瓜的最高價格出現在九月和十月。這符合你的預期嗎?為什麼? +常見工作流程是先用 Seaborn 快速探索數據,再在需要自訂細節時退回 Matplotlib。 --- ## 🚀挑戰 -探索 Matplotlib 提供的不同類型的視覺化。哪些類型最適合回歸問題? +探索 Matplotlib 和 Seaborn 提供的不同視覺化類型。哪些類型最適合迴歸問題? -## [課後測驗](https://ff-quizzes.netlify.app/en/ml/) +## [課後小測驗](https://ff-quizzes.netlify.app/en/ml/) -## 回顧與自學 +## 複習與自學 -看看數據視覺化的多種方式。列出可用的各種庫,並記下哪些庫最適合特定類型的任務,例如 2D 視覺化與 3D 視覺化。你發現了什麼? +查看多種資料視覺化方式。列出可用的各種庫,並註明哪些最適合特定任務,如 2D 視覺化與 3D 視覺化。你發現了什麼? ## 作業 @@ -213,5 +288,7 @@ --- -**免責聲明**: -本文件已使用人工智能翻譯服務 [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/zh-HK/2-Regression/2-Data/solution/notebook.ipynb b/translations/zh-HK/2-Regression/2-Data/solution/notebook.ipynb index 911ede54a..5690df7c8 100644 --- a/translations/zh-HK/2-Regression/2-Data/solution/notebook.ipynb +++ b/translations/zh-HK/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本文件已使用人工智能翻譯服務 [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-03T19:45:04+00:00", - "source_file": "2-Regression/2-Data/solution/notebook.ipynb", - "language_code": "hk" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/zh-HK/8-Reinforcement/1-QLearning/README.md b/translations/zh-HK/8-Reinforcement/1-QLearning/README.md index cf0b00933..500a4cb3e 100644 --- a/translations/zh-HK/8-Reinforcement/1-QLearning/README.md +++ b/translations/zh-HK/8-Reinforcement/1-QLearning/README.md @@ -1,47 +1,47 @@ -# 簡介:強化學習與 Q-Learning +# 強化學習和Q學習簡介 -![機器學習中強化學習的摘要示意圖](../../../../sketchnotes/ml-reinforcement.png) -> 示意圖由 [Tomomi Imura](https://www.twitter.com/girlie_mac) 提供 +![機器學習中強化學習的摘要手繪筆記](../../../../translated_images/zh-HK/ml-reinforcement.94024374d63348db.webp) +> 手繪筆記由 [Tomomi Imura](https://www.twitter.com/girlie_mac) 製作 -強化學習涉及三個重要概念:代理(agent)、一些狀態(states)以及每個狀態的一組行動(actions)。通過在指定狀態下執行某個行動,代理會獲得一個獎勵。想像一下電腦遊戲《超級瑪利歐》。你是瑪利歐,處於遊戲關卡中,站在懸崖邊上。你的上方有一枚硬幣。你作為瑪利歐,處於遊戲關卡中的特定位置……這就是你的狀態。向右移動一步(行動)會讓你掉下懸崖,這會給你一個低的數值分數。然而,按下跳躍按鈕可以讓你得分並保持存活。這是一個正面的結果,應該給你一個正的數值分數。 +強化學習包含三個重要概念:代理人、一些狀態,以及每個狀態的動作集。通過在指定的狀態執行一個動作,代理人會獲得獎勵。再次想像電腦遊戲超級瑪利歐。你是瑪利歐,你在遊戲關卡中,站在懸崖邊緣。你上面有一個金幣。你作為瑪利歐,在遊戲關卡中,處於一個特定位置...這就是你的狀態。向右邁一步(一個動作)會讓你掉下懸崖,這會給你一個較低的分數。然而,按跳躍按鈕會讓你得分並存活。那是正面結果,應該給你一個正數分數。 -通過使用強化學習和模擬器(遊戲),你可以學習如何玩遊戲以最大化獎勵,即保持存活並盡可能多地得分。 +使用強化學習和模擬器(遊戲),你可以學會如何玩這款遊戲,最大化獎勵,即保持存活並盡可能得分。 -[![強化學習簡介](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) +[![強化學習介紹](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](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)檔案,此檔案用於筆記本程式碼中。把它放在與筆記本相同目錄。 -## 簡介 +## 介紹 -在本課程中,我們將探索 **[彼得與狼](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)** 的世界,靈感來自俄羅斯作曲家 [Sergei Prokofiev](https://en.wikipedia.org/wiki/Sergei_Prokofiev) 的音樂童話。我們將使用 **強化學習** 讓彼得探索他的環境,收集美味的蘋果並避免遇到狼。 +本課將探討受俄羅斯作曲家[謝爾蓋·普羅科菲耶夫](https://en.wikipedia.org/wiki/Sergei_Prokofiev)的音樂童話故事[彼得與狼](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)啟發的世界。我們將使用強化學習讓彼得探索環境,收集美味蘋果,並避免遇見狼。 -**強化學習**(RL)是一種學習技術,通過多次實驗讓我們學習代理在某個**環境**中的最佳行為。代理在這個環境中應該有某些**目標**,由**獎勵函數**定義。 +強化學習(RL)是一種學習技術,允許我們通過多次實驗學習一個代理人在某個環境中的最佳行為。代理人在此環境中應有某個由獎勵函數定義的目標。 ## 環境 -為了簡化,我們將彼得的世界視為一個大小為 `width` x `height` 的方形棋盤,如下所示: +為簡化起見,將彼得的世界視為一個 `width` x `height` 的方格棋盤,如下所示: -![彼得的環境](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![彼得的環境](../../../../translated_images/zh-HK/environment.40ba3cb66256c93f.webp) -棋盤中的每個格子可以是: +這棋盤中的每個格子可以是: -* **地面**,彼得和其他生物可以在上面行走。 -* **水域**,顯然不能行走。 -* **樹木**或**草地**,可以休息的地方。 -* **蘋果**,彼得希望找到以餵飽自己。 -* **狼**,危險且應該避免。 +* 地面,彼得和其他生物可以行走。 +* 水域,顯然無法行走。 +* 草地,可作休息之處。 +* 蘋果,代表彼得非常樂意找到來餵養自己。 +* ,危險且應避免。 -有一個單獨的 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()) } ``` -總結一下,此場景的策略和目標如下: +總結而言,此情境的策略和目標如下: -- **策略**:代理(彼得)的策略由所謂的**策略函數**(policy)定義。策略函數在任何給定狀態下返回行動。在我們的例子中,問題的狀態由棋盤表示,包括玩家的當前位置。 +- 策略,我們的代理人(彼得)由所謂的策略(policy)定義。策略是一個函數,對任一狀態給予所採取的動作。在此例中,問題的狀態由棋盤的整體情況表示,包括玩家當前位置。 -- **目標**:強化學習的目標是最終學習一個良好的策略,能夠高效地解決問題。然而,作為基準,我們先考慮最簡單的策略,稱為**隨機行走**。 +- 目標,強化學習的目標是最終學習出一套好的策略,使得問題能有效解決。然而,作為基線,讓我們考慮最簡單的策略,稱為隨機漫步。 -## 隨機行走 +## 隨機漫步 -首先,我們通過實現隨機行走策略來解決問題。在隨機行走中,我們將從允許的行動中隨機選擇下一步,直到到達蘋果(代碼塊 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步,數量相當多。 - 你還可以看到彼得在隨機行走中的移動情況: + 你還可以看到彼得在隨機漫步時的移動模樣: - ![彼得的隨機行走](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) + ![彼得的隨機漫步](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) ## 獎勵函數 -為了讓我們的策略更智能,我們需要了解哪些移動比其他移動“更好”。為此,我們需要定義我們的目標。 +為了使策略更智慧,我們需要了解哪些動作比較“好”。為此,我們要定義目標。 -目標可以通過**獎勵函數**來定義,該函數會為每個狀態返回一些分數值。數值越高,獎勵函數越好。(代碼塊 5) +目標可用獎勵函數來定義,它對每個狀態返回一個分數值。數字越高,獎勵函數越好。(代碼塊5) ```python move_reward = -0.1 @@ -154,52 +154,175 @@ def reward(m,pos=None): return move_reward ``` -獎勵函數的一個有趣之處在於,大多數情況下,*只有在遊戲結束時才會給予實質性獎勵*。這意味著我們的算法應該以某種方式記住導致正面獎勵的“好”步驟,並增加它們的重要性。同樣,所有導致不良結果的移動應該被抑制。 +獎勵函數的一個有趣特點是,在大多數情況下,我們只在遊戲結束時得到重要獎勵。這意味著演算法應記住那些導致最終正面獎勵的“好”步驟,並增強它們的重要性。相似地,所有導致負面結果的動作應該被抑制。 -## Q-Learning +## Q學習 -我們將討論的算法稱為 **Q-Learning**。在此算法中,策略由一個函數(或數據結構)定義,稱為 **Q-Table**。它記錄了在給定狀態下每個行動的“好壞程度”。 +我們將討論的演算法叫做Q學習。在此演算法中,策略由一個名為Q表的函數(或資料結構)定義。它記錄給定狀態中每個動作的“好壞”。 -之所以稱為 Q-Table,是因為將其表示為表格或多維數組通常很方便。由於我們的棋盤尺寸為 `width` x `height`,我們可以使用形狀為 `width` x `height` x `len(actions)` 的 numpy 數組來表示 Q-Table:(代碼塊 6) +它叫Q表,是因為通常將其表示成表格或多維陣列比較方便。由於我們的棋盤尺寸為 `width` x `height`,我們可以用形狀為 `width` x `height` x `len(actions)` 的numpy陣列表示Q表:(代碼塊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)`。 +注意,我們用相同數值(此處為0.25)初始化Q表所有值。這代表“隨機漫步”策略,因為在每個狀態中所有動作的好壞相等。我們可以呼叫 `m.plot(Q)` 函數,視覺化棋盤上的Q表。 -![彼得的環境](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![彼得的環境](../../../../translated_images/zh-HK/env_init.04e8f26d2d60089e.webp) -在每個格子的中心有一個“箭頭”,指示移動的首選方向。由於所有方向都是相等的,因此顯示為一個點。 +在每個格子中央有個「箭頭」,顯示偏好的移動方向。由於所有方向相等,顯示為一個點。 -現在我們需要運行模擬,探索環境,並學習 Q-Table 值的更好分佈,這將使我們能夠更快地找到蘋果的路徑。 +現在我們需要運行模擬,探索環境,學習更佳的Q表分布,這將幫助我們更快找到蘋果的路徑。 -## Q-Learning 的核心:貝爾曼方程 +## Q學習的本質:貝爾曼方程 -一旦我們開始移動,每個行動都會有相應的獎勵,即我們理論上可以根據最高的即時獎勵選擇下一個行動。然而,在大多數狀態下,移動並不能實現我們到達蘋果的目標,因此我們無法立即決定哪個方向更好。 +一旦開始移動,每個動作會有對應的獎勵,即我們理論上可以根據最高即時獎勵選擇下一步動作。但在多數狀態下,移動不會立即達成找到蘋果的目標,因此我們不能立即判斷哪方向較好。 -> 記住,重要的不是即時結果,而是最終結果,即我們在模擬結束時獲得的結果。 +> 請記住,重要的不是立刻結果,而是我們在模擬結束時獲得的最終結果。 -為了考慮這種延遲獎勵,我們需要使用 **[動態規劃](https://en.wikipedia.org/wiki/Dynamic_programming)** 的原則,這使我們能夠以遞歸方式思考問題。 +為了解決這個延遲獎勵問題,我們需使用[動態規劃](https://en.wikipedia.org/wiki/Dynamic_programming)原理,使我們能對問題進行遞歸思考。 -假設我們現在處於狀態 *s*,並希望移動到下一個狀態 *s'*。通過這樣做,我們將獲得由獎勵函數定義的即時獎勵 *r(s,a)*,加上一些未來的獎勵。如果我們假設 Q-Table 正確反映了每個行動的“吸引力”,那麼在狀態 *s'* 我們將選擇對應於 *Q(s',a')* 最大值的行動 *a*。因此,我們在狀態 *s* 能夠獲得的最佳未來獎勵將由 `max` 定義。 +假設我們當前在狀態 *s*,想移動到下一狀態 *s'*。如此,我們將獲得即時獎勵 *r(s,a)*,由獎勵函數定義,加上一些未來獎勵。如果Q表已正確反映每個動作的「吸引力」,在狀態 *s'* 我們會選擇使值 *Q(s',a')* 最大的動作 *a'*。因此,在狀態 *s* 所能獲得的最佳未來獎勵定義為對所有可能動作 *a'* 的 `max`a'*Q(s',a')*。 -學習過程可以總結如下: +這便得到以貝爾曼公式計算狀態 *s*,行動 *a* 的Q表值: -- **平均路徑長度增加**。我們觀察到,起初平均路徑長度會增加。這可能是因為當我們對環境一無所知時,很容易陷入不良狀態,例如水或狼。隨著我們學到更多並開始利用這些知識,我們可以探索更久的環境,但仍然不太清楚蘋果的位置。 + -- **隨著學習的深入,路徑長度減少**。當我們學到足夠多時,代理更容易達成目標,路徑長度開始減少。然而,我們仍然保持探索的開放性,因此經常偏離最佳路徑,探索新的選項,導致路徑比最佳路徑更長。 +其中 γ 是所謂的折扣因子,決定你應偏好現有獎勵還是未來獎勵的程度。 -- **路徑長度突然增加**。我們在圖表中還觀察到某些時候路徑長度突然增加。這表明過程的隨機性,並且我們可能在某些時候通過覆寫新的值來“破壞”Q-Table的係數。理想情況下,這應該通過降低學習率來最小化(例如,在訓練的後期,我們僅以小幅度調整Q-Table的值)。 +## 學習演算法 -總體而言,重要的是要記住,學習過程的成功和質量在很大程度上取決於參數,例如學習率、學習率衰減和折扣因子。這些通常被稱為**超參數**,以區分於**參數**,後者是在訓練過程中優化的(例如Q-Table的係數)。尋找最佳超參數值的過程被稱為**超參數優化**,這是一個值得單獨討論的主題。 +根據上述公式,我們可寫出演算法偽碼: + +* 初始化Q表Q,狀態和行動均設相同數值 +* 設學習率α ← 1 +* 重複多次模擬 + 1. 從隨機位置開始 + 1. 重複 + 1. 在狀態s選擇動作a + 2. 執行動作,移至新狀態s' + 3. 若遇遊戲結束條件或總獎勵太低—結束模擬 + 4. 計算新狀態下的獎勵r + 5. 根據貝爾曼方程更新Q函數:*Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ maxa'Q(s',a'))* + 6. *s* ← *s'* + 7. 更新總獎勵並減少α。 + +## 利用 vs 探索 + +在上面演算法中,未具體說明第2.1步如何選擇動作。如果我們隨機選擇動作,會隨機探索環境,也很可能經常死亡並探索不常去的區域。另一方式是利用已知Q表值,選擇在狀態s中Q值最高的動作,然而這可能阻礙我們探索其他狀態,因而可能無法找到最佳解。 + +因此,最佳方案是在探索與利用間取得平衡。可透過依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次實驗,稱為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): + x,y = m.human + v = probs(Q[x,y]) + a = list(actions)[np.argmax(v)] + return a + +walk(m,qpolicy_strict) +``` + + +> 如果你多次嘗試上面的程式碼,你可能會注意到有時它會「停頓」,你需要按筆記本上的停止按鈕來中斷它。這是因為可能存在兩個狀態在最佳 Q 值方面「互相指向」的情況,導致代理無限地在這些狀態之間移動。 + +## 🚀挑戰 + +> **任務 1:** 修改 `walk` 函數,以限制路徑的最大長度(例如 100 步),並觀察上面的程式碼不時返回該值。 + +> **任務 2:** 修改 `walk` 函數使其不會返回之前已經去過的地方。這會防止 `walk` 產生迴圈,但代理仍然有可能被「困」在無法逃脫的位置。 + +## 導航 + +一個更好的導航策略是我們訓練時使用的策略,結合了利用和探索。在此策略中,我們將以與 Q 表中的值成比例的某個概率選擇每個動作。這種策略仍可能導致代理返回已探索過的位置,但如下面的程式碼所示,它能產生到目標位置非常短的平均路徑長度(記住 `print_statistics` 是執行了 100 次模擬):(程式碼區塊 10) + +```python +def qpolicy(m): + x,y = m.human + v = probs(Q[x,y]) + a = random.choices(list(actions),weights=v)[0] + return a + +print_statistics(qpolicy) +``` + +執行此程式碼後,你應該會得到明顯比之前更短的平均路徑長度,約在 3-6 之間。 + +## 探究學習過程 + +如前所述,學習過程是在對問題空間結構已獲得知識的探索與利用之間取得平衡。我們看到學習結果(幫助代理找到目標的短路徑能力)有所改善,但觀察學習過程中平均路徑長度的變化也很有趣: + + + +學習過程可總結為: + +- 平均路徑長度上升。我們看到一開始平均路徑長度會增加。這很可能是因為當我們對環境一無所知時,代理很可能卡在不利狀態,比如水域或狼身邊。隨著學習增多並開始利用這些知識,我們可以探索環境更久,但仍不完全知道蘋果在哪裡。 + +- 學習更多後路徑長度下降。當學習足夠後,代理更容易達成目標,路徑長度開始減少。不過我們仍持續探索,因此經常會偏離最佳路徑,嘗試新選項,使路徑長度比理想狀況長。 + +- 路徑長度突然增加。我們還看到圖中某些點路徑長度突然增加,這體現了過程的隨機性,意味著有時會用新值覆寫 Q 表係數,對它們造成「損害」。理想情況下可透過減小學習率(例如訓練後期只做小幅度調整)來降低此影響。 + +總體來說,要記住學習過程的成功與質量很大程度上取決於參數,例如學習率、學習率衰減和折扣因子。這些通常稱為超參數,以區別於訓練中優化的參數(例如 Q 表係數)。尋找最佳超參數值的過程稱為超參數優化,是值得獨立探討的主題。 ## [課後測驗](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 + +**免責聲明**: +本文件由 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 翻譯而成。雖然我們致力於確保準確性,但請注意,機器自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於重要資訊,建議進行專業人工翻譯。我們不對因使用本翻譯而產生的任何誤解或誤釋承擔責任。 + \ No newline at end of file diff --git a/translations/zh-HK/8-Reinforcement/2-Gym/README.md b/translations/zh-HK/8-Reinforcement/2-Gym/README.md index 3bab34db8..fa4c9364f 100644 --- a/translations/zh-HK/8-Reinforcement/2-Gym/README.md +++ b/translations/zh-HK/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-Learning 原則應用於一個具有連續狀態的問題,也就是由一個或多個實數表示的狀態。我們將處理以下問題: + +> 問題:如果 Peter 想要逃離狼群,他需要能夠更快移動。我們將看看 Peter 如何通過 Q-Learning 學會滑冰,尤其是如何保持平衡。 + +![偉大的逃脫!](../../../../translated_images/zh-HK/escape.18862db9930337e3.webp) + +> Peter 和朋友們發揮創意以逃離狼群!圖片來自 [Jen Looper](https://twitter.com/jenlooper) + +我們將使用一個簡化版本的平衡問題,稱為 **賽車桿(CartPole)** 問題。在賽車桿世界中,我們有一個可左右移動的水平滑軌,目標是在滑軌上平衡一根垂直桿。 + +a cartpole + +## 前置知識 + +本課中,我們將使用一個叫做 **OpenAI Gym** 的庫來模擬不同的環境。你可以在本地執行本課代碼(例如,從 Visual Studio Code 中),此時模擬會在新視窗中打開。若在網上執行代碼,你可能需要對代碼做一些調整,具體說明見[這裡](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7)。 ## OpenAI Gym -在上一課中,遊戲的規則和狀態是由我們自己定義的 `Board` 類提供的。在這裡,我們將使用一個特殊的 **模擬環境**,它將模擬平衡杆的物理行為。最受歡迎的用於訓練強化學習算法的模擬環境之一叫做 [Gym](https://gym.openai.com/),由 [OpenAI](https://openai.com/) 維護。通過使用這個 Gym,我們可以創建不同的 **環境**,從平衡杆模擬到 Atari 遊戲。 +在上一課中,遊戲規則和狀態由我們自定義的 `Board` 類給出。這裡我們會使用一個特殊的模擬環境,模擬平衡桿背後的物理。OpenAI 維護的一個非常流行的強化學習訓練模擬環境叫做 [Gym](https://gym.openai.com/),使用該 Gym,我們可以創建從賽車桿模擬到街機遊戲等不同的環境。 -> **注意**:你可以在 [這裡](https://gym.openai.com/envs/#classic_control) 查看 OpenAI Gym 提供的其他環境。 +> 注意:你可以在 [這裡](https://gym.openai.com/envs/#classic_control) 查看 OpenAI Gym 的其他可用環境。 -首先,讓我們安裝 Gym 並導入所需的庫(代碼塊 1): +首先,讓我們安裝 gym 並導入所需庫(代碼塊 1): ```python import sys @@ -20,15 +40,15 @@ import numpy as np 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) + ✅ 請記住,最好在本地 Python 環境運行此代碼!(代碼塊 3) ```python env.reset() @@ -52,11 +72,11 @@ import random env.close() ``` - 你應該會看到類似於以下圖片的效果: + 你應該會看到類似下圖的畫面: - ![未平衡的平衡杆](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) + ![未平衡的賽車桿](../../../../8-Reinforcement/2-Gym/images/cartpole-nobalance.gif) -1. 在模擬過程中,我們需要獲取觀察值以決定如何行動。事實上,`step` 函數返回當前的觀察值、獎勵函數以及一個 `done` 標誌,指示是否應繼續模擬:(代碼塊 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分時,CartPole 模擬被認為已經解決。 ## 狀態離散化 -在 Q-Learning 中,我們需要構建 Q-表,定義在每個狀態下應採取的行動。為了做到這一點,我們需要狀態是 **離散的**,更準確地說,它應包含有限數量的離散值。因此,我們需要以某種方式 **離散化** 我們的觀察值,將它們映射到有限的狀態集合。 +在 Q-Learning 中,我們需要構建 Q-Table,定義在每個狀態下該怎麼做。為此,我們需要狀態是離散的,更精確說,應包含有限數量的離散值。因此,我們需要將觀察值離散化,映射到一個有限的狀態集合。 -有幾種方法可以做到這一點: +有幾種方法可以做到這點: -- **分割成區間**:如果我們知道某個值的範圍,我們可以將該範圍分割成若干 **區間**,然後用該值所屬的區間編號替代原值。這可以使用 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 @@ 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() @@ -150,15 +170,15 @@ import random env.close() ``` - ✅ 如果你想查看環境的執行效果,可以取消註釋以 `env.render` 開頭的行。否則,你可以在後台執行,這樣速度更快。在我們的 Q-Learning 過程中,我們將使用這種“隱形”執行。 + ✅ 如果你想看到環境如何執行,可取消註釋以 `env.render` 開頭的行。否則你也可以讓它在後台執行,速度更快。我們在 Q-Learning 過程中將使用這種“隱形”執行方式。 -## Q-表結構 +## Q-Table 結構 -在上一課中,狀態是一個簡單的數字對,範圍從 0 到 8,因此用形狀為 8x8x2 的 numpy 張量表示 Q-表非常方便。如果我們使用區間離散化,狀態向量的大小也是已知的,因此我們可以使用相同的方法,將狀態表示為形狀為 20x20x10x10x2 的數組(其中 2 是動作空間的維度,前幾個維度對應於我們為觀察空間中每個參數選擇的區間數量)。 +在上一課中,狀態是從0到8的簡單數字對,因此我們用形狀為 8x8x2 的 numpy 張量方便地表示 Q-Table。如果我們使用分箱離散化,狀態向量大小也是已知的,因此我們可以用形狀為 20x20x10x10x2 的陣列表示狀態(其中 2 是動作空間維度,前幾維是對應每個觀察空間參數選定的分箱數)。 -然而,有時觀察空間的精確維度是未知的。在使用 `discretize` 函數的情況下,我們可能無法確定狀態是否保持在某些限制範圍內,因為某些原始值是無界的。因此,我們將使用稍微不同的方法,通過字典來表示 Q-表。 +但有時候,觀察空間確切維度不明。對 `discretize` 函數而言,我們始終無法保證狀態會保持在一定限制內,因為原始值中有些沒有限定上下限。因此,我們將採用稍微不同的方法,用字典來表示 Q-Table。 -1. 使用 *(state, action)* 作為字典鍵,值則對應於 Q-表的條目值。(代碼塊 9) +1. 使用 *(state,action)* 對作為字典的鍵,對應值即 Q-Table 的條目值。(代碼塊 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-Table 值列表。若 Q-Table 中沒有該條目,預設回傳 0。 ## 開始 Q-Learning -現在我們準備教 Peter 如何保持平衡了! +現在我們準備教 Peter 平衡了! 1. 首先,設置一些超參數:(代碼塊 10) ```python - # hyperparameters + # 超參數 alpha = 0.3 gamma = 0.9 epsilon = 0.90 ``` - 其中,`alpha` 是 **學習率**,定義了我們在每一步中應調整 Q-表當前值的程度。在上一課中,我們從 1 開始,然後在訓練過程中將 `alpha` 降低到較低的值。在本例中,為了簡化,我們將保持其不變,你可以稍後嘗試調整 `alpha` 值。 - - `gamma` 是 **折扣因子**,顯示了我們應優先考慮未來獎勵而非當前獎勵的程度。 + 這裡,`alpha` 是學習率,定義每步調整 Q-Table 當前值的幅度。上一課我們從1開始,然後在訓練過程中將 `alpha` 降到較低值。這裡為簡便起見,我們保持其恒定,後續你可以試試調整 `alpha`。 - `epsilon` 是 **探索/利用因子**,決定了我們應偏向探索還是利用。在我們的算法中,我們將在 `epsilon` 百分比的情況下根據 Q-表值選擇下一個動作,而在剩餘情況下執行隨機動作。這將允許我們探索以前未見過的搜索空間區域。 + `gamma` 是折扣因子,表示我們對未來獎勵相比於當前獎勵的重視程度。 - ✅ 就平衡而言,選擇隨機動作(探索)就像是隨機地向錯誤方向推了一下,杆需要學會如何從這些“錯誤”中恢復平衡。 + `epsilon` 是探索/利用因子,決定我們應該優先探索還是利用。在算法中,我們會在 `epsilon` 百分比情況下根據 Q-Table 選擇下一步動作,剩餘情況隨機選擇動作。這可以讓我們探索搜索空間中未曾見過的區域。 -### 改進算法 + ✅ 對平衡問題而言,隨機選擇動作(探索)就像隨機向錯誤方向用力,桿子必須學會如何從這些“錯誤”中恢復平衡。 -我們還可以對上一課的算法進行兩項改進: +### 優化算法 -- **計算平均累積獎勵**:在多次模擬中計算平均累積獎勵。我們將每 5000 次迭代打印一次進度,並將累積獎勵平均分配到這段時間內。這意味著如果我們獲得超過 195 分,我們可以認為問題已解決,並且質量甚至高於要求。 +我們可以對上一課的算法作兩個改進: -- **計算最大平均累積結果**:`Qmax`,並存儲對應於該結果的 Q-表值。當你運行訓練時,你會注意到有時平均累積結果開始下降,我們希望保留訓練過程中觀察到的最佳模型所對應的 Q-表值。 +- 計算平均累積獎勵,統計多次模擬。每5000次迭代我們輸出一次進度,並對累積獎勵取平均值。若平均超過 195 分,我們可認為問題已被解決,甚至優於要求質量。 + +- 記錄最大平均累積結果 `Qmax`,存儲對應該結果的 Q-Table。在訓練中你會發現,平均累積結果有時會下降,我們希望保留訓練中表現最好的 Q-Table。 -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=[] ``` -你可能會注意到以下結果: +你可能會注意到: -- **接近目標**:我們非常接近實現目標,即在 100 次以上的連續模擬中獲得 195 的累積獎勵,或者我們可能已經達到了目標!即使我們獲得較小的數值,我們仍然不知道,因為我們平均了 5000 次運行,而正式標準只需要 100 次運行。 +- 接近目標。我們很接近在100次連續模擬中獲得195累積獎勵的目標,甚至可能已經達成!即使數字較小,我們也無法判斷,因為取的是5000次的平均值,而正式判定只需100次。 + +- 獎勵開始下降。有時獎勵開始下降,表示我們的 Q-Table 中的值開始被更差的值覆蓋,導致模型退化。 -- **獎勵開始下降**:有時獎勵開始下降,這意味著我們可能用更糟糕的值覆蓋了 Q-表中已學到的值。 - -這一觀察在繪製訓練進度時更為明顯。 +這一現象在繪製訓練過程中更為明顯。 ## 繪製訓練進度 -在訓練過程中,我們將每次迭代的累積獎勵值收集到 `rewards` 向量中。以下是將其與迭代次數繪製的結果: +在訓練中,我們將每次迭代的累積獎勵值收集到了 `rewards` 向量中。當將其對迭代次數繪圖時: ```python plt.plot(rewards) ``` -![原始進度](../../../../8-Reinforcement/2-Gym/images/train_progress_raw.png) +![原始進度](../../../../translated_images/zh-HK/train_progress_raw.2adfdf2daea09c59.webp) -從這個圖表中,我們無法得出任何結論,因為由於隨機訓練過程的特性,訓練會話的長度差異很大。為了讓這個圖表更有意義,我們可以計算一系列實驗的 **移動平均值**,例如 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)) ``` -![訓練進度](../../../../8-Reinforcement/2-Gym/images/train_progress_runav.png) +![訓練進度](../../../../translated_images/zh-HK/train_progress_runav.c71694a8fa9ab359.webp) + +## 變化超參數 + +為使學習更穩定,調整訓練過程中的部分超參數是合理的。特別是: + +- 學習率 `alpha`,我們可以先設為接近1的值,然後不斷減小。隨著時間推移,Q-Table 中概率值會越來越好,我們只需稍作調整而非完全更新。 -## 調整超參數 +- **增加 epsilon**。我們可能想慢慢增大 `epsilon`,逐步減少探索、增多利用。大概先用較低 `epsilon` 值,逐漸增大到接近1較為合理。 -為了使學習更加穩定,我們可以在訓練過程中調整一些超參數。特別是: +> **任務1**: 嘗試調整超參數值,看是否能達到更高累積獎勵。你能超過195嗎? -- **對學習率 `alpha`**:我們可以從接近 1 的值開始,然後逐漸降低該參數。隨著時間的推移,我們將在 Q-表中獲得良好的概率值,因此我們應該稍微調整它們,而不是完全用新值覆蓋。 -- **增加 `epsilon`**:我們可能希望慢慢增加 `epsilon`,以便減少探索並增加利用。可能更合理的是從較低的 `epsilon` 值開始,然後逐漸增加到接近 1。 -> **任務 1**:嘗試調整超參數的值,看看能否獲得更高的累積回報。你能達到超過 195 嗎? -> **任務 2**:為了正式解決這個問題,你需要在連續 100 次運行中獲得平均 195 的回報。在訓練過程中測量這一點,並確保你已經正式解決了這個問題! +> **任務 2**:正式解決此問題,您需要在連續 100 次運行中取得平均獎勵 195。訓練期間測量該值,並確保您已正式解決此問題! -## 查看結果的實際效果 +## 看到結果的實際表現 -觀察訓練後的模型行為會很有趣。我們來運行模擬,並按照訓練時相同的行動選擇策略進行操作,根據 Q-Table 中的概率分佈進行採樣:(代碼塊 13) +實際看看訓練好的模型如何表現會很有趣。讓我們運行模擬,並且遵循與訓練時相同的動作選擇策略,根據 Q-Table 中的機率分布進行抽樣:(程式碼區塊 13) ```python obs = env.reset() @@ -295,30 +318,32 @@ while not done: env.close() ``` -你應該會看到類似這樣的畫面: +你應該會見到類似以下的畫面: -![a balancing cartpole](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) +![一個平衡的倒立擺小車](../../../../8-Reinforcement/2-Gym/images/cartpole-balance.gif) --- ## 🚀挑戰 -> **任務 3**:在這裡,我們使用的是 Q-Table 的最終版本,但這可能不是表現最好的版本。記得我們已經將表現最好的 Q-Table 存儲在 `Qbest` 變數中!嘗試將 `Qbest` 複製到 `Q` 中,並使用最佳表現的 Q-Table 來運行相同的例子,看看是否能發現差異。 +> **任務 3**:這裡我們使用的是最終版的 Q-Table,但這可能不是最佳版本。請記得我們已將表現最佳的 Q-Table 儲存在 `Qbest` 變數中!嘗試用這個表現最佳的 Q-Table 來做同樣的範例,把 `Qbest` 複製到 `Q`,並看看你是否能注意到不同。 -> **任務 4**:在這裡,我們並不是每一步都選擇最佳行動,而是根據相應的概率分佈進行採樣。是否更合理每次都選擇 Q-Table 值最高的最佳行動?這可以通過使用 `np.argmax` 函數來找到對應於最高 Q-Table 值的行動編號。實現這種策略,看看是否能改善平衡效果。 +> **任務 4**:這裡我們並非在每一步都選擇最佳動作,而是依照對應的機率分布進行抽樣。如果總是選擇 Q-Table 值最高的最佳動作會不會更合理?這可以透過 `np.argmax` 函數找出對應最高 Q-Table 值的動作編號來實現。請實作此策略,看看是否能改善平衡效果。 -## [課後測驗](https://ff-quizzes.netlify.app/en/ml/) +## [課後小測驗](https://ff-quizzes.netlify.app/en/ml/) ## 作業 [訓練一輛山地車](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 + +**免責聲明**: +本文件由 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 翻譯而成。雖然我們致力於確保準確性,但請注意,機器自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於重要資訊,建議進行專業人工翻譯。我們不對因使用本翻譯而產生的任何誤解或誤釋承擔責任。 + \ No newline at end of file diff --git a/translations/zh-MO/.co-op-translator.json b/translations/zh-MO/.co-op-translator.json index 786fc561e..e374a5dbd 100644 --- a/translations/zh-MO/.co-op-translator.json +++ b/translations/zh-MO/.co-op-translator.json @@ -24,8 +24,8 @@ "language_code": "zh-MO" }, "1-Introduction/3-fairness/README.md": { - "original_hash": "9a6b702d1437c0467e3c5c28d763dac2", - "translation_date": "2025-09-06T09:13:33+00:00", + "original_hash": "0f00d72169a0d37eecfd16d71e01700a", + "translation_date": "2026-07-14T07:52:00+00:00", "source_file": "1-Introduction/3-fairness/README.md", "language_code": "zh-MO" }, @@ -54,8 +54,8 @@ "language_code": "zh-MO" }, "2-Regression/1-Tools/README.md": { - "original_hash": "fa81d226c71d5af7a2cade31c1c92b88", - "translation_date": "2025-09-06T09:08:07+00:00", + "original_hash": "0b8635427b582d03ea4ab7089b93e505", + "translation_date": "2026-07-14T07:48:05+00:00", "source_file": "2-Regression/1-Tools/README.md", "language_code": "zh-MO" }, @@ -72,8 +72,8 @@ "language_code": "zh-MO" }, "2-Regression/2-Data/README.md": { - "original_hash": "7c077988328ebfe33b24d07945f16eca", - "translation_date": "2025-09-06T09:08:43+00:00", + "original_hash": "a58b2c4d16c6b122643391745ac15af6", + "translation_date": "2026-07-14T07:49:23+00:00", "source_file": "2-Regression/2-Data/README.md", "language_code": "zh-MO" }, @@ -89,6 +89,12 @@ "source_file": "2-Regression/2-Data/solution/Julia/README.md", "language_code": "zh-MO" }, + "2-Regression/2-Data/solution/notebook.ipynb": { + "original_hash": "96b95f8cf473481f2f371de8156f1571", + "translation_date": "2026-07-14T07:42:13+00:00", + "source_file": "2-Regression/2-Data/solution/notebook.ipynb", + "language_code": "zh-MO" + }, "2-Regression/3-Linear/README.md": { "original_hash": "8b776e731c35b171d316d01d0e7b1369", "translation_date": "2026-04-26T20:32:58+00:00", @@ -457,7 +463,7 @@ }, "8-Reinforcement/1-QLearning/README.md": { "original_hash": "911efd5e595089000cb3c16fce1beab8", - "translation_date": "2025-09-06T09:18:41+00:00", + "translation_date": "2026-07-14T07:50:46+00:00", "source_file": "8-Reinforcement/1-QLearning/README.md", "language_code": "zh-MO" }, @@ -581,6 +587,19 @@ "source_file": "TROUBLESHOOTING.md", "language_code": "zh-MO" }, + "__translation_failures__": { + "sketchnotes/LICENSE.md": { + "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f", + "source_file": "sketchnotes/LICENSE.md", + "language_code": "zh-MO", + "failure_date": "2026-07-14T07:46:40+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:30+00:00", diff --git a/translations/zh-MO/1-Introduction/3-fairness/README.md b/translations/zh-MO/1-Introduction/3-fairness/README.md index 1eb7747a3..19bfb771a 100644 --- a/translations/zh-MO/1-Introduction/3-fairness/README.md +++ b/translations/zh-MO/1-Introduction/3-fairness/README.md @@ -1,155 +1,159 @@ -# 使用負責任的人工智慧建構機器學習解決方案 - -![機器學習中負責任人工智慧的摘要草圖](../../../../sketchnotes/ml-fairness.png) -> 草圖由 [Tomomi Imura](https://www.twitter.com/girlie_mac) 提供 +# 使用負責任的 AI 建構機器學習解決方案 + +![機器學習中負責任 AI 的概要以手繪筆記呈現](../../../../translated_images/zh-MO/ml-fairness.ef296ebec6afc98a.webp) +> 手繪筆記作者:[Tomomi Imura](https://www.twitter.com/girlie_mac) ## [課前測驗](https://ff-quizzes.netlify.app/en/ml/) - + ## 簡介 -在這門課程中,您將開始探索機器學習如何影響我們的日常生活。即使是現在,系統和模型已經參與了日常的決策任務,例如醫療診斷、貸款審批或欺詐檢測。因此,確保這些模型能夠提供值得信賴的結果是非常重要的。就像任何軟體應用程式一樣,人工智慧系統可能無法達到預期或產生不理想的結果。因此,理解並解釋人工智慧模型的行為是至關重要的。 +在這個課程中,你將開始了解機器學習如何影響我們的日常生活。即使在現在,系統和模型已經參與到日常決策任務中,例如健康診斷、貸款審核或詐騙偵測。因此,這些模型必須運作良好,才能提供值得信賴的結果。就像任何軟體應用一樣,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://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "微軟的負責任人工智慧方法") +[![Microsoft 的負責任 AI 方法](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoft 的負責任 AI 方法") -> 🎥 點擊上方圖片觀看影片:微軟的負責任人工智慧方法 +> 🎥 點擊上方圖片觀看影片: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) +- 誹謗。不公正地批評和標籤某事物或某人。例如,某影像標籤技術惡名昭彰地將深膚色人的圖像標記為黑猩猩。 +- 過度或不足的代表性。某群體在某職業中不被看到,而任何持續推動此狀況的服務或功能都是有害的。 +- 刻板印象化。將特定群體與預設屬性連結。例如,英語與土耳其語的翻譯系統,因為詞彙帶有性別刻板印象而造成不準確。 -![翻譯成土耳其語](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) +![翻譯成土耳其語](../../../../translated_images/zh-MO/gender-bias-translate-en-tr.f185fd8822c2d437.webp) > 翻譯成土耳其語 -![翻譯回英語](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) -> 翻譯回英語 +![再翻譯回英語](../../../../translated_images/zh-MO/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) +> 再翻譯回英語 -在設計和測試人工智慧系統時,我們需要確保人工智慧是公平的,並且未被編程為做出偏見或歧視性的決策,這些決策是人類也被禁止做出的。保證人工智慧和機器學習的公平性仍然是一個複雜的社會技術挑戰。 +在設計與測試 AI 系統時,我們需要確保 AI 是公平的,不會被編程成做出偏見或歧視性的決定,而人類也被禁止做這類決策。確保 AI 及機器學習的公平性仍是一個複雜的社會技術挑戰。 ### 可靠性與安全性 -為了建立信任,人工智慧系統需要在正常和意外情況下保持可靠、安全和一致。我們需要了解人工智慧系統在各種情境下的行為,特別是當它們面對異常情況時。在構建人工智慧解決方案時,需要大量關注如何處理人工智慧可能遇到的各種情況。例如,自駕車需要將人們的安全放在首位。因此,驅動汽車的人工智慧需要考慮所有可能的情境,例如夜晚、雷暴或暴風雪、孩子橫穿馬路、寵物、道路施工等。人工智慧系統能否可靠、安全地處理廣泛的情況,反映了數據科學家或人工智慧開發者在設計或測試系統時的考量程度。 +為了建立信任,AI 系統需要在正常及異常狀況下都能可靠、安全且一致地運作。重要的是要知道 AI 系統在各種情境下如何表現,特別是異常狀況。在建構 AI 解決方案時,必須大量關注如何處理 AI 解決方案可能遇到的多樣化狀況。例如,一輛自駕車必須將人的安全列為首要任務。因此,推動該車的 AI 需考慮所有可能遇到的場景,如夜間、雷雨或暴風雪、小孩奔跑穿越街道、寵物、道路施工等。AI 系統能多可靠安全地處理廣泛條件,反映了資料科學家或 AI 開發者在設計或測試時的預見程度。 -> [🎥 點擊這裡觀看影片:](https://www.microsoft.com/videoplayer/embed/RE4vvIl) +> [🎥 點擊此處觀看影片:](https://www.microsoft.com/videoplayer/embed/RE4vvIl) ### 包容性 -人工智慧系統應該被設計為能夠吸引並賦能每個人。在設計和實施人工智慧系統時,數據科學家和人工智慧開發者需要識別並解決系統中可能無意間排除某些人的潛在障礙。例如,全球有10億人有殘疾。隨著人工智慧的進步,他們可以更輕鬆地獲取廣泛的信息和機會。通過解決這些障礙,可以創造創新機會,開發出能為所有人提供更好體驗的人工智慧產品。 - -> [🎥 點擊這裡觀看影片:人工智慧中的包容性](https://www.microsoft.com/videoplayer/embed/RE4vl9v) +AI 系統應設計成能夠讓每個人都能參與和賦能。在設計與部署 AI 系統時,資料科學家與 AI 開發者會辨識並解決系統中可能無意排除人群的障礙。例如,全球有 10 億殘疾人士。隨著 AI 的進步,他們能更輕鬆地在日常生活中獲取廣泛的資訊與機會。通過排除障礙,創造了創新並開發出更佳用戶體驗的 AI 產品,有益於所有人。 -### 安全性與隱私 +> [🎥 點擊此處觀看影片:AI 包容性](https://www.microsoft.com/videoplayer/embed/RE4vl9v) -人工智慧系統應該是安全的,並尊重人們的隱私。如果系統威脅到人們的隱私、信息或生命安全,人們對其的信任就會減少。在訓練機器學習模型時,我們依賴數據來產生最佳結果。在此過程中,必須考慮數據的來源和完整性。例如,數據是用戶提交的還是公開可用的?接下來,在處理數據時,開發能夠保護機密信息並抵禦攻擊的人工智慧系統至關重要。隨著人工智慧的普及,保護隱私和確保重要的個人和商業信息的安全變得越來越重要且複雜。隱私和數據安全問題對人工智慧尤為重要,因為數據的可用性對於人工智慧系統做出準確且知情的預測和決策至關重要。 +### 安全與隱私 -> [🎥 點擊這裡觀看影片:人工智慧中的安全性](https://www.microsoft.com/videoplayer/embed/RE4voJF) +AI 系統應安全且尊重個人隱私。人們對危及其隱私、資訊或生命安全的系統信任度較低。訓練機器學習模型時,我們依賴資料以取得最佳結果。這過程中必須考慮資料的來源和正確性。例如,資料是用戶提交或公開取得的?同時,使用資料時,開發能保護機密資訊且具抵抗攻擊能力的 AI 系統十分關鍵。隨著 AI 越來越普及,保護隱私並確保重要個人與商業資訊安全變得更為重要且複雜。隱私與資料安全問題在 AI 領域尤其需要嚴密關注,因為 AI 系統需存取資料才能對人民作出準確且明智的預測與決策。 -- 作為一個行業,我們在隱私和安全性方面取得了顯著進展,這在很大程度上得益於《通用數據保護條例》(GDPR)等法規。 -- 然而,對於人工智慧系統,我們必須承認在需要更多個人數據以使系統更加個性化和有效與隱私之間的緊張關係。 -- 就像互聯網誕生時連接的計算機一樣,我們也看到了與人工智慧相關的安全問題數量的急劇增加。 -- 同時,我們也看到人工智慧被用於改善安全性。例如,大多數現代防病毒掃描器今天都由人工智慧啟發的啟發式方法驅動。 -- 我們需要確保我們的數據科學流程與最新的隱私和安全實踐和諧融合。 +> [🎥 點擊此處觀看影片:AI 的安全性](https://www.microsoft.com/videoplayer/embed/RE4voJF) -### 透明性 +- 身為產業,我們在隱私與安全方面已取得重大進展,特別是受到 GDPR(一般資料保護規則)等法規的推動。 +- 然而,針對 AI 系統,我們必須承認在需要更多個人資料以提升系統個人化與效能與隱私之間的矛盾。 +- 正如互聯網連結電腦的誕生,我們也看到 AI 相關的安全問題急速上升。 +- 同時,AI 也被用於提升安全性。例如,現代多數防毒掃描器現在多由 AI 偵測法則驅動。 +- 我們需確保資料科學流程與最新隱私及安全實務和諧融合。 -人工智慧系統應該是可理解的。透明性的一個關鍵部分是解釋人工智慧系統及其組件的行為。提高對人工智慧系統的理解需要利益相關者了解它們如何以及為什麼運作,以便識別潛在的性能問題、安全和隱私問題、偏見、排他性實踐或意外結果。我們還認為,使用人工智慧系統的人應該誠實並坦率地說明何時、為什麼以及如何選擇部署它們,以及它們使用的系統的局限性。例如,如果一家銀行使用人工智慧系統來支持其消費者貸款決策,則需要檢查結果並了解哪些數據影響了系統的建議。隨著政府開始對各行業的人工智慧進行監管,數據科學家和組織必須解釋人工智慧系統是否符合監管要求,特別是在出現不良結果時。 -> [🎥 點擊這裡觀看影片:人工智慧中的透明性](https://www.microsoft.com/videoplayer/embed/RE4voJF) +### 透明度 +AI 系統應該是可理解的。透明度的重要部分是解釋 AI 系統及其組件的行為。提升對 AI 系統的理解需要相關利害關係者明白系統如何及為何運作,以便辨識潛在的效能問題、安全及隱私疑慮、偏見、排他性措施或非預期結果。我們也相信使用 AI 系統的人應誠實且公開何時、為何及如何選擇部署,並說明所使用系統的限制。例如,銀行若用 AI 系統支持其消費貸款決策,就必須檢視結果並理解哪些數據影響系統建議。政府開始對產業中的 AI 進行規管,因此資料科學家與組織必須說明 AI 系統是否符合監管要求,尤其在出現不良結果時。 -- 由於人工智慧系統非常複雜,很難理解它們的工作原理並解釋結果。 -- 這種缺乏理解影響了這些系統的管理、運營和文檔化方式。 -- 更重要的是,這種缺乏理解影響了基於這些系統產生的結果所做的決策。 +> [🎥 點擊此處觀看影片:AI 的透明度](https://www.microsoft.com/videoplayer/embed/RE4voJF) -### 責任 +- 由於 AI 系統非常複雜,很難理解其運作方式及解讀結果。 +- 這種缺乏理解影響了系統管理、運作和文件記錄的方式。 +- 更重要的是,這種缺乏理解影響了根據系統輸出結果所做的決策。 -設計和部署人工智慧系統的人必須對其系統的運作方式負責。責任的必要性在面部識別等敏感技術中尤為重要。最近,對面部識別技術的需求不斷增長,特別是來自執法機構的需求,他們看到了該技術在尋找失蹤兒童等用途中的潛力。然而,這些技術可能會被政府用來威脅其公民的基本自由,例如,通過對特定個體進行持續監控。因此,數據科學家和組織需要對其人工智慧系統對個人或社會的影響負責。 +### 問責制 + +設計與部署 AI 系統的人必須對系統的運作負起責任。問責制的必要性在敏感的使用技術如人臉識別中特別重要。近來,人臉識別技術的需求不斷增加,尤其是執法機構看到該技術在尋找失蹤兒童等用途的潛力。然而,這些技術也可能被政府用來危害公民的基本自由,例如對特定個體進行持續監視。因此,資料科學家與組織需要對其 AI 系統對個人或社會的影響負責。 -[![人工智慧研究者警告面部識別可能導致大規模監控](../../../../1-Introduction/3-fairness/images/accountability.png)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "微軟的負責任人工智慧方法") +[![領先 AI 研究人員警告人臉識別造成大規模監控](../../../../translated_images/zh-MO/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft 的負責任 AI 方法") -> 🎥 點擊上方圖片觀看影片:面部識別可能導致大規模監控的警告 +> 🎥 點擊上方圖片觀看影片:關於人臉識別引起的大規模監控警告 -最終,作為第一代將人工智慧引入社會的人,我們這一代面臨的最大問題之一是如何確保計算機始終對人類負責,以及如何確保設計計算機的人對其他人負責。 +對我們這一代而言,作為帶來 AI 給社會的第一代,最大的問題之一是如何確保電腦能對人負責,以及如何確保設計電腦的人對其他所有人負責。 ## 影響評估 -在訓練機器學習模型之前,進行影響評估以了解人工智慧系統的目的、預期用途、部署地點以及與系統互動的對象是非常重要的。這些評估對於評審者或測試者來說非常有幫助,因為它們可以知道在識別潛在風險和預期後果時需要考慮哪些因素。 +在訓練機器學習模型之前,進行影響評估非常重要,藉此了解 AI 系統的目的;其預期用途;部署地點;以及誰會與系統互動。這些對評審者或測試者評估系統時了解哪些因素需考慮,以辨識潛在風險及預期後果很有幫助。 進行影響評估時的重點領域包括: -* **對個人的不利影響**:了解任何限制或要求、不支持的用途或任何已知限制對系統性能的影響至關重要,以確保系統不會以可能對個人造成傷害的方式使用。 -* **數據需求**:了解系統如何以及在哪裡使用數據,使評審者能夠探索需要注意的任何數據需求(例如 GDPR 或 HIPPA 數據法規)。此外,檢查數據的來源或數量是否足夠用於訓練。 -* **影響摘要**:收集使用系統可能產生的潛在傷害清單。在機器學習生命周期中,檢查是否已緩解或解決識別出的問題。 -* **適用於六大核心原則的目標**:評估每個原則的目標是否達成,以及是否存在任何差距。 +* 對個人的不良影響。了解任何限制或要求、不支持的用途或已知限制可能影響系統效能,對防止系統以可能對個人造成傷害的方式被使用至關重要。 +* 資料需求。了解系統如何及在哪裡使用資料,讓評審者能探討需要注意的資料要求(如 GDPR 或 HIPAA 資料規則)。此外,檢查資料來源或數量是否足以支持訓練。 +* 影響摘要。彙整使用系統可能帶來的潛在傷害清單。在機器學習生命週期中,檢視已辨識問題是否已緩解或處理。 +* 每項六核心原則的適用目標。評估每項原則的目標是否達成及是否存在缺口。 -## 使用負責任人工智慧進行調試 -與調試軟體應用程式類似,調試人工智慧系統是識別和解決系統問題的必要過程。許多因素可能導致模型未按預期或負責任地運行。大多數傳統的模型性能指標是模型性能的定量匯總,這不足以分析模型如何違反負責任人工智慧原則。此外,機器學習模型是一個黑箱,難以理解其結果的驅動因素或在出錯時提供解釋。在本課程的後續部分,我們將學習如何使用負責任人工智慧儀表板來幫助調試人工智慧系統。該儀表板為數據科學家和人工智慧開發者提供了一個全面的工具,用於執行以下操作: +## 負責任 AI 的除錯 -* **錯誤分析**:識別模型的錯誤分佈,這可能影響系統的公平性或可靠性。 -* **模型概覽**:發現模型在數據群體中的性能差異。 -* **數據分析**:了解數據分佈並識別數據中可能導致公平性、包容性和可靠性問題的潛在偏見。 -* **模型可解釋性**:了解影響或影響模型預測的因素。這有助於解釋模型的行為,這對於透明性和責任感至關重要。 +與軟體應用除錯類似,除錯 AI 系統是辨識及解決系統問題的必要過程。有許多因素會影響模型未如期或不負責任地運作。多數傳統模型效能指標是模型整體表現的定量彙總,這不足以分析模型如何違反負責任 AI 原則。此外,機器學習模型是黑盒,難以理解其產出動因或錯誤時提供解釋。稍後本課程將學習如何利用負責任 AI 儀表板協助除錯 AI 系統。該儀表板為資料科學家與 AI 開發者提供整合工具,能執行: + +* 錯誤分析。辨識可能影響系統公平性或可靠性的模型錯誤分布。 +* 模型概覽。發現模型在各資料群體間效能差異的位置。 +* 資料分析。理解資料分布及辨識資料中可能導致公平性、包容性和可靠性問題的偏見。 +* 模型可解釋性。理解影響模型預測的因素,協助解釋模型行為,對透明度與問責制重要。 -## 🚀 挑戰 -為了防止傷害的產生,我們應該: +## 🚀 挑戰 + +為防止傷害的產生,應該: -- 確保參與系統工作的團隊成員具有多樣化的背景和觀點。 -- 投資於反映社會多樣性的數據集。 -- 在機器學習生命周期中開發更好的方法來檢測和糾正負責任人工智慧問題。 +- 讓從事系統開發的人員背景與觀點多元化 +- 投資反映我們社會多元性的資料集 +- 在整個機器學習生命週期中發展更好的方法來偵測並修正負責任 AI 中的問題 -思考一些現實生活中的情境,模型的不可信性在模型構建和使用中顯而易見。我們還應該考慮什麼? +思考真實情境中模型不可信的例子,無論是在模型建構或使用過程中。我們還應該考慮什麼? ## [課後測驗](https://ff-quizzes.netlify.app/en/ml/) -## 回顧與自學 +## 複習與自學 + -在本課中,您已經學習了機器學習中公平性和不公平性概念的一些基礎知識。 -觀看這場工作坊,深入了解相關主題: +在本課程中,您已學習了機器學習中公平與不公平概念的一些基礎知識。 + +觀看此工作坊以更深入探討相關主題: -- 追求負責任的人工智慧:將原則付諸實踐,由 Besmira Nushi、Mehrnoosh Sameki 和 Amit Sharma 主講 +- 追求負責任的 AI:將原則付諸實踐,講者 Besmira Nushi、Mehrnoosh Sameki 與 Amit Sharma -[![負責任的人工智慧工具箱:建立負責任人工智慧的開源框架](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: 建立負責任人工智慧的開源框架") +[![Responsible AI Toolbox: An open-source framework for building responsible AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") -> 🎥 點擊上方圖片觀看影片:RAI Toolbox: 建立負責任人工智慧的開源框架,由 Besmira Nushi、Mehrnoosh Sameki 和 Amit Sharma 主講 +> 🎥 點擊上方圖片觀看影片:RAI Toolbox:由 Besmira Nushi、Mehrnoosh Sameki 與 Amit Sharma 分享的開源負責任 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: 公平性、問責性、透明性與人工智慧倫理 - 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 工具箱: -- [負責任人工智慧工具箱 GitHub 儲存庫](https://github.com/microsoft/responsible-ai-toolbox) +- [Responsible AI Toolbox GitHub 存儲庫](https://github.com/microsoft/responsible-ai-toolbox) -了解 Azure 機器學習工具如何確保公平性: +閱讀關於 Azure 機器學習確保公平性的工具: -- [Azure 機器學習](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 @@ 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/zh-MO/2-Regression/1-Tools/README.md b/translations/zh-MO/2-Regression/1-Tools/README.md index 46c4a30c8..8eaba9d72 100644 --- a/translations/zh-MO/2-Regression/1-Tools/README.md +++ b/translations/zh-MO/2-Regression/1-Tools/README.md @@ -1,120 +1,121 @@ -# 使用 Python 和 Scikit-learn 建立回歸模型 +# 使用 Python 和 Scikit-learn 開始迴歸模型 -![回歸模型的概述手繪筆記](../../../../sketchnotes/ml-regression.png) +![迴歸總結手繪筆記](../../../../translated_images/zh-MO/ml-regression.4e4f70e3b3ed446e.webp) -> 手繪筆記由 [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。 -- 通過實際操作探索線性回歸。 +- 使用 Scikit-learn,包括安裝。 +- 透過實作探索線性迴歸。 ## 安裝與配置 -[![機器學習入門 - 配置工具以建立機器學習模型](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "機器學習入門 - 配置工具以建立機器學習模型") +[![機器學習初學者 - 安裝您的工具準備建立機器學習模型](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](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. **安裝 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/) 的基本設置。在本課程中,您將在 Visual Studio Code 中使用 Python,因此可以先熟悉如何 [配置 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 編寫 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) 熟悉 Python。 + > 透過這系列 [學習模組](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) 熟悉 Python。 > - > [![使用 Visual Studio Code 配置 Python](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "使用 Visual Studio Code 配置 Python") + > [![視覺工作室碼中設定 Python](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "視覺工作室碼中設定 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/)。 +1. **安裝 Jupyter Notebook**。您需要 [安裝 Jupyter 套件](https://pypi.org/project/jupyter/)。 -## 您的機器學習開發環境 +## 你的機器學習編輯環境 -您將使用 **筆記本** 來開發 Python 程式碼並建立機器學習模型。這種文件格式是數據科學家常用的工具,其文件擴展名為 `.ipynb`。 +你將使用 **notebooks** 來開發 Python 程式碼並建立機器學習模型。這類檔案是資料科學家常用工具,副檔名為 `.ipynb`。 -筆記本是一種互動式環境,允許開發者撰寫程式碼並添加註解或文件,這對於實驗性或研究導向的項目非常有幫助。 +筆記本是一個互動式環境,允許開發人員同時撰寫程式碼、加入筆記及撰寫程式說明,這對實驗性或研究導向專案非常有用。 -[![機器學習入門 - 配置 Jupyter 筆記本以開始建立回歸模型](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "機器學習入門 - 配置 Jupyter 筆記本以開始建立回歸模型") +[![機器學習初學者 - 設定 Jupyter 筆記本開始建立迴歸模型](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "機器學習初學者 - 設定 Jupyter 筆記本開始建立迴歸模型") -> 🎥 點擊上方圖片觀看短片,了解如何進行此操作。 +> 🎥 點擊上圖觀看示範本練習的短片。 -### 練習 - 使用筆記本 +### 練習 - 操作一個 notebook -在此文件夾中,您會找到文件 _notebook.ipynb_。 +在此資料夾中,你會找到檔案 _notebook.ipynb_。 -1. 在 Visual Studio Code 中打開 _notebook.ipynb_。 +1. 在 Visual Studio Code 中開啟 _notebook.ipynb_。 - Jupyter 伺服器將啟動,並使用 Python 3+。您會看到筆記本中的一些區塊可以 `執行`,這些是程式碼片段。您可以通過選擇播放按鈕圖標來執行程式碼區塊。 + 會啟動一個 Python 3+ 的 Jupyter 伺服器。你會看到可執行的程式碼區域。可按一個看似播放鍵的圖示,執行該程式碼區塊。 -2. 選擇 `md` 圖標並添加一些 Markdown,輸入以下文字 **# 歡迎來到您的筆記本**。 +1. 選擇 `md` 圖示,加入一些 markdown 語法和以下文字 **# Welcome to your notebook**。 - 接下來,添加一些 Python 程式碼。 + 接著,加入一些 Python 程式碼。 -3. 在程式碼區塊中輸入 **print('hello notebook')**。 -4. 選擇箭頭以執行程式碼。 +1. 在程式碼區塊鍵入 **print('hello notebook')**。 +1. 按箭頭執行程式碼。 - 您應該會看到以下輸出: + 你應該會看到輸出如下: ```output hello notebook ``` -![在 VS Code 中打開的筆記本](../../../../2-Regression/1-Tools/images/notebook.jpg) +![VS Code 開啟 notebook 的畫面](../../../../translated_images/zh-MO/notebook.4a3ee31f396b8832.webp) -您可以在程式碼中穿插註解,以自我記錄筆記本。 +你可以穿插程式碼與註解,自我記錄 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 提供了[完整的 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 使建立模型並評估其使用變得簡單。它主要專注於使用數值數據,並包含幾個現成的數據集供學習使用。它還包括一些預建模型供學生嘗試。讓我們探索如何加載預打包數據並使用內建估算器進行第一次機器學習模型的建立。 +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)。 -[![機器學習入門 - 您的第一個 Python 線性回歸項目](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "機器學習入門 - 您的第一個 Python 線性回歸項目") -> 🎥 點擊上方圖片觀看短片,了解如何進行此練習。 +[![機器學習初學者 - 你的第一個 Python 線性迴歸專案](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](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 數值數據的有用庫。 -- **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 @@ -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:年齡(以年為單位) +- age:年齡(歲) - bmi:身體質量指數 - bp:平均血壓 - s1 tc:T 細胞(一種白血球) -✅ 此數據集包含「性別」作為研究糖尿病的重要特徵變數。許多醫學數據集都包含這種二元分類。思考一下,這類分類可能如何排除某些群體的治療。 +✅ 此資料集中包含 'sex' 作為對糖尿病研究重要的特徵變數。許多醫療資料集都包含這類二元分類。思考一下這種分類是否可能導致部分族群被排除在治療之外。 -現在,載入 X 和 y 數據。 +接下來,載入 X 與 y 資料。 -> 🎓 記住,這是監督式學習,我們需要一個名為 '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. 接下來,選擇此數據集的一部分進行繪圖,選擇數據集的第三列。您可以使用 `:` 運算符選擇所有行,然後使用索引(2)選擇第三列。您還可以使用 `reshape(n_rows, n_columns)` 將數據重塑為 2D 數組——這是繪圖所需的格式。如果其中一個參數為 -1,則對應的維度會自動計算。 +2. 接著,挑選資料集其中一部分來繪圖,選取第 3 欄資料。使用 `:` 選取所有列,再用索引 (2) 選取第 3 欄。可用 `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. 準備好後開始訓練模型!載入線性迴歸模型,並用 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,29 +203,32 @@ Scikit-learn 使建立模型並評估其使用變得簡單。它主要專注於 plt.show() ``` - ![顯示糖尿病數據點的散點圖](../../../../2-Regression/1-Tools/images/scatterplot.png) -✅ 想一想這裡發生了什麼。一條直線穿過許多小數據點,但它究竟在做什麼?你能否看出如何利用這條直線來預測一個新的、未見過的數據點應該如何與圖表的 y 軸關係匹配?試著用語言描述這個模型的實際用途。 + ![顯示糖尿病資料點的散點圖](../../../../translated_images/zh-MO/scatterplot.ad8b356bcbb33be6.webp) + -恭喜你,完成了第一個線性回歸模型,用它進行了預測,並在圖表中展示了結果! + ✅ 想一想這裡發生了什麼。一直線穿過許多小點數據,但它到底在做什麼?你能否看出應該如何利用這條線來預測一個未見過的新數據點應該在圖中 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/zh-MO/2-Regression/2-Data/README.md b/translations/zh-MO/2-Regression/2-Data/README.md index 5eecb2be6..1e6edc9e6 100644 --- a/translations/zh-MO/2-Regression/2-Data/README.md +++ b/translations/zh-MO/2-Regression/2-Data/README.md @@ -1,62 +1,62 @@ -# 使用 Scikit-learn 建立回歸模型:準備並視覺化數據 +# 使用 Scikit-learn 建立迴歸模型:準備與視覺化數據 -![數據視覺化資訊圖表](../../../../2-Regression/2-Data/images/data-visualization.png) +![數據視覺化資訊圖](../../../../translated_images/zh-MO/data-visualization.54e56dded7c1a804.webp) -資訊圖表由 [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 開始建立機器學習模型,您可以開始向數據提出問題了。在處理數據並應用機器學習解決方案時,了解如何提出正確的問題以充分發揮數據的潛力是非常重要的。 +現在你已經準備好了開始使用 Scikit-learn 進行機器學習模型構建所需的工具,可以開始對你的數據提出問題。在處理數據並應用機器學習解決方案時,了解如何提出正確的問題以充分發掘資料潛力是非常重要的。 -在本課程中,您將學到: +在本課程中,你將學習: -- 如何為模型建立準備數據。 +- 如何準備數據以用於模型建構。 - 如何使用 Matplotlib 進行數據視覺化。 +- 如何使用 Seaborn 進行更具表現力的數據視覺化。 -## 向數據提出正確的問題 +## 對數據提出正確的問題 -您需要回答的問題將決定您使用哪種類型的機器學習算法。而您得到答案的質量將在很大程度上取決於數據的性質。 +你需要回答的問題會決定你將使用哪種類型的機器學習算法。且你得到的答案品質很大程度上取決於數據的特性。 -看看本課程提供的[數據](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv)。您可以在 VS Code 中打開這個 .csv 文件。快速瀏覽後,您會發現其中有空白值,並且混合了字符串和數字數據。此外,還有一個名為 "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://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "機器學習初學者 - 如何分析和清理數據集") +[![機器學習入門-如何分析與清理數據集](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "機器學習入門-如何分析與清理數據集") -> 🎥 點擊上方圖片觀看一段短片,了解如何準備本課程的數據。 +> 🎥 點擊上方圖片觀看簡短影片,講解本課程數據準備過程。 -事實上,很少能直接獲得完全準備好的數據集來建立機器學習模型。在本課程中,您將學習如何使用標準 Python 庫準備原始數據集。您還將學習各種視覺化數據的技術。 +事實上,直接拿到一個完全準備好用於建立機器學習模型的數據集並不常見。在本課程中,你將學習如何使用標準 Python 函式庫準備原始數據集,並學習各種視覺化數據的技巧。 -## 案例研究:'南瓜市場' +## 案例研究:“南瓜市場” -在此文件夾中,您會在根目錄的 `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)中提取的原始數據。 +在此資料夾的根目錄 `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. 將日期轉換為月份格式(這些是美國日期,格式為 `MM/DD/YYYY`)。 -2. 提取月份到新列。 +1. 將日期轉換為月份格式(這是美國日期格式,為 `MM/DD/YYYY`)。 +2. 將月份提取到新的欄位。 -在 Visual Studio Code 中打開 _notebook.ipynb_ 文件,並將電子表格導入到新的 Pandas dataframe 中。 +在 Visual Studio Code 中開啟 _notebook.ipynb_ 檔案,並將試算表導入新的 Pandas dataframe。 -1. 使用 `head()` 函數查看前五行。 +1. 使用 `head()` 函式查看前五行。 ```python import pandas as pd @@ -64,30 +64,30 @@ pumpkins.head() ``` - ✅ 您會使用什麼函數來查看最後五行? + ✅ 你會用什麼函式來查看最後五行? -1. 檢查當前 dataframe 中是否有缺失數據: +1. 檢查目前 dataframe 是否有缺資料: ```python pumpkins.isnull().sum() ``` - 有缺失數據,但可能對當前任務影響不大。 + 有缺資料,但可能對目前任務無大礙。 -1. 為了使 dataframe 更易於操作,使用 `loc` 函數選擇您需要的列。`loc` 函數從原始 dataframe 中提取一組行(作為第一個參數)和列(作為第二個參數)。以下表達式中的 `:` 表示 "所有行"。 +1. 為了讓 dataframe 更易於操作,使用 `loc` 函式選擇你需要的欄位。該函式會從原始 dataframe 中依參數抽取一組列(第一參數)和欄(第二參數)。“:” 表示「所有列」。 ```python columns_to_select = ['Package', 'Low Price', 'High Price', 'Date'] pumpkins = pumpkins.loc[:, columns_to_select] ``` -### 其次,確定南瓜的平均價格 +### 其次,計算南瓜平均價格 -思考如何確定某個月份南瓜的平均價格。您會選擇哪些列來完成此任務?提示:您需要 3 列。 +想想如何計算特定月份南瓜的平均價格。你會挑選哪些欄位?提示:你會需要三個欄位。 -解決方案:取 `Low Price` 和 `High Price` 列的平均值來填充新的 Price 列,並將 Date 列轉換為僅顯示月份。幸運的是,根據上述檢查,日期和價格沒有缺失數據。 +解法:取 `Low Price` 和 `High Price` 欄的平均值填入新 `Price` 欄,再將 `Date` 欄只顯示月份。幸好根據先前檢查,日期與價格無缺失資料。 -1. 要計算平均值,添加以下代碼: +1. 計算平均值時,加入下列程式碼: ```python price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2 @@ -96,37 +96,37 @@ ``` - ✅ 隨時使用 `print(month)` 打印任何您想檢查的數據。 + ✅ 你也可以用 `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"。南瓜似乎很難一致地稱重,因此讓我們通過選擇 `Package` 列中包含 "bushel" 字符串的南瓜來進行篩選。 +仔細研究原始資料,`Unit of Sale` 為 'EACH' 或 'PER BIN' 的數據,`Package` 一欄也是按英寸、箱或顆計量。南瓜很難一致稱重,因此我們用篩選條件,僅選出 `Package` 欄含有 "bushel" 描述的南瓜。 -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. 在建立 new_pumpkins dataframe 區塊後加入這些程式碼: ```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 定價。然而,所有這些對南瓜 bushel 的研究表明,了解數據的性質是多麼重要! +✅ 根據 [The Spruce Eats](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) 的說法,蒲式耳重量依農產類型而異,因為那是體積單位。「例如,一蒲式耳蕃茄重 56 磅……葉菜類因佔空間多而重量輕,例如一蒲式耳菠菜僅 20 磅。」這很複雜!我們不考慮蒲式耳和磅的轉換,而直接以蒲式耳定價。這樣對南瓜蒲式耳的研究,就是要提醒你理解數據本質的重要性! -現在,您可以根據 bushel 測量分析每單位的定價。如果您再次打印數據,您可以看到它已被標準化。 +現在你能按照蒲式耳單位分析價格。若再印出資料,你會看到已被標準化。 -✅ 您是否注意到按半 bushel 出售的南瓜非常昂貴?您能找出原因嗎?提示:小南瓜比大南瓜更昂貴,可能是因為每 bushel 中有更多的小南瓜,而大南瓜的空心部分佔用了更多空間。 +✅ 你有注意到半蒲式耳販售的南瓜非常昂貴嗎?能猜出原因嗎?提示:小南瓜比大南瓜貴很多,可能因為一蒲式耳內裝小南瓜數量多,而大中空派南瓜佔用未利用空間。 ## 視覺化策略 -數據科學家的部分職責是展示他們正在處理的數據的質量和性質。為此,他們通常會創建有趣的視覺化,例如圖表、折線圖和柱狀圖,展示數據的不同方面。通過這種方式,他們能夠直觀地展示數據中難以察覺的關係和差距。 +數據科學家的一部分工作就是展示他們處理資料的質量與特性。為此,他們常會製作有趣的視覺化圖表,如圖形、圖表和圖形,展現數據各面向。如此能讓人視覺化呈現關聯與空白,這些通常難以發現。 -[![機器學習初學者 - 如何使用 Matplotlib 視覺化數據](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "機器學習初學者 - 如何使用 Matplotlib 視覺化數據") +[![機器學習入門-如何用 Matplotlib 視覺化數據](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "機器學習入門-如何用 Matplotlib 視覺化數據") -> 🎥 點擊上方圖片觀看一段短片,了解如何視覺化本課程的數據。 +> 🎥 點擊圖片觀看簡短影片,示範本課程中數據視覺化。 -視覺化還可以幫助確定最適合數據的機器學習技術。例如,似乎遵循一條線的散點圖表明該數據非常適合線性回歸練習。 +視覺化也有助於判斷最適合資料的機器學習技術。例如若散佈圖看似線性,表示資料適合線性迴歸。 -一個在 Jupyter notebook 中效果良好的數據視覺化庫是 [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。基本折線圖會顯示什麼? +嘗試建立一些基本圖表來顯示你剛建立的新 dataframe。基本折線圖顯示什麼? -1. 在文件頂部的 Pandas 導入下導入 Matplotlib: +1. 在檔案頂端於 Pandas 導入下方加入 Matplotlib: ```python import matplotlib.pyplot as plt ``` -1. 重新運行整個 notebook 以刷新。 -1. 在 notebook 底部添加一個單元格,將數據繪製為框圖: +1. 重新執行整個筆記本來刷新。 +1. 在筆記本底部新增一個程式碼區塊,畫出箱型圖: ```python price = new_pumpkins.Price @@ -174,38 +174,113 @@ plt.show() ``` - ![顯示價格與月份關係的散點圖](../../../../2-Regression/2-Data/images/scatterplot.png) + ![一張散佈圖顯示價格與月份的關係](../../../../translated_images/zh-MO/scatterplot.b6868f44cbd2051c.webp) - 這是一個有用的圖表嗎?有什麼讓您感到驚訝嗎? + 這是有用的圖表嗎?有什麼讓你驚訝嗎? - 它並不是特別有用,因為它僅僅顯示了某個月份的數據分佈。 + 它並不特別有用,因為它只是將你資料以點的形式散佈在月份中。 -### 使其更有用 +### 讓它更有用 -要使圖表顯示有用的數據,通常需要以某種方式對數據進行分組。讓我們嘗試創建一個圖表,其中 y 軸顯示月份,數據展示數據的分佈。 +要讓圖表呈現有用的數據,通常需要以某種方式對數據分組。讓我們試著建立以月份為 y 軸,顯示數據分布的圖表。 -1. 添加一個單元格以創建分組柱狀圖: +1. 新增程式碼區建立分組條形圖: ```python new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') plt.ylabel("Pumpkin Price") ``` - ![顯示價格與月份關係的柱狀圖](../../../../2-Regression/2-Data/images/barchart.png) + ![一張條形圖顯示價格與月份的關係](../../../../translated_images/zh-MO/barchart.a833ea9194346d76.webp) + + 這是更有用的資料視覺化!它似乎表示九月和十月的南瓜價格最高。符合你的預期嗎?為什麼或為什麼不? + +## 練習 - 嘗試使用 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 + ``` + +### 散佈圖顯示關係 + +在建立模型前探索資料的一大重要步驟是尋找變數之間的 _關聯_。散佈圖是最佳工具之一:若點集看似沿線排列,表示兩變數可能相關,是使用線性迴歸模型的好跡象。 + +1. 重新利用 Seaborn 的 [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html)(關係圖)重繪價格與月份的散佈圖,此函式直接操作你的 dataframe 欄位: + + ```python + sns.relplot(x="Price", y="Month", data=new_pumpkins) + ``` + + ![一張用 Seaborn 繪製的價格與月份關係散佈圖](../../../../translated_images/zh-MO/relplot.a03837d8f0329cec.webp) + + 注意你傳入的是 _欄位名稱_ 及 dataframe,Seaborn 幫你標示軸標籤。 + +2. 傳入 `kind="line"` 可改成折線圖。Seaborn 還會繪製一個顯示信賴區間的陰影帶: + + ```python + sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins) + ``` + + ![一張用 Seaborn 繪製的價格與月份關係折線圖](../../../../translated_images/zh-MO/lineplot.f9034ba47b1e30ee.webp) + + 這組資料雜訊較多,因此折線圖不是最清晰的選擇 — 但它展示了如何輕鬆更換 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") + ``` + + ![一個 Seaborn 長條圖顯示每月價格分佈](../../../../translated_images/zh-MO/catplot.e73fc35fdf96242b.webp) + + 這確認了你用 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") + ``` + + ![一個 Seaborn 熱力圖顯示數值欄間的相關性](../../../../translated_images/zh-MO/heatmap.bd98dce43b404c57.webp) + + 數值接近 `1`(或 `-1`)代表欄位間是強烈的_線性_相關。注意 `Low Price` 和 `High Price` 幾乎完美相關。另一方面,`Month` 和價格呈現的線性相關性很弱──即使上述長條圖顯示了九月和十月有明顯的季節性高峰。這是個重要的教訓:相關係數只衡量_直線_關係,因此會忽略季節性或其他非線性模式。✅ 為什麼在決定使用哪些欄前,同時查看熱力圖像長條圖這種圖形是有用的? + +### Matplotlib 或 Seaborn? + +兩個函式庫都值得學習: + +- **Matplotlib** 讓你能精細控制圖表每個元素,是幾乎所有其他 Python 繪圖函式庫的基礎。 +- **Seaborn** 提供較高階的函式和吸引人的預設統計圖表,能直接操作資料框,且通常更快速用於探索性資料分析。 - 這是一個更有用的數據視覺化!它似乎表明南瓜的最高價格出現在九月和十月。這符合您的預期嗎?為什麼? +一般工作流程是先用 Seaborn 快速探索資料,當需要細部自訂時再使用 Matplotlib。 --- ## 🚀挑戰 -探索 Matplotlib 提供的不同類型的視覺化。哪些類型最適合回歸問題? +探索 Matplotlib 和 Seaborn 提供的不同視覺化類型。哪些類型最適合回歸問題? ## [課後測驗](https://ff-quizzes.netlify.app/en/ml/) -## 回顧與自學 +## 複習與自修 -看看數據視覺化的多種方式。列出可用的各種庫,並記錄哪些庫最適合特定類型的任務,例如 2D 視覺化與 3D 視覺化。您發現了什麼? +認識各種視覺化資料的方法,列出不同的函式庫,並註明它們各自在任務類型上的最佳用途,例如 2D 視覺化與 3D 視覺化。你有什麼發現? ## 作業 @@ -213,5 +288,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/zh-MO/2-Regression/2-Data/solution/notebook.ipynb b/translations/zh-MO/2-Regression/2-Data/solution/notebook.ipynb index 89162d978..d3424a5db 100644 --- a/translations/zh-MO/2-Regression/2-Data/solution/notebook.ipynb +++ b/translations/zh-MO/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-08-29T23:10:55+00:00", - "source_file": "2-Regression/2-Data/solution/notebook.ipynb", - "language_code": "mo" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/zh-MO/8-Reinforcement/1-QLearning/README.md b/translations/zh-MO/8-Reinforcement/1-QLearning/README.md index aa49d9a63..ccc00b267 100644 --- a/translations/zh-MO/8-Reinforcement/1-QLearning/README.md +++ b/translations/zh-MO/8-Reinforcement/1-QLearning/README.md @@ -1,47 +1,47 @@ # 強化學習與 Q-Learning 簡介 -![機器學習中強化學習的摘要示意圖](../../../../sketchnotes/ml-reinforcement.png) -> 示意圖由 [Tomomi Imura](https://www.twitter.com/girlie_mac) 提供 +![機器學習中強化學習的概念速寫](../../../../translated_images/zh-MO/ml-reinforcement.94024374d63348db.webp) +> 速寫作者:[Tomomi Imura](https://www.twitter.com/girlie_mac) -強化學習涉及三個重要概念:代理(agent)、一些狀態(states)以及每個狀態的一組行動(actions)。代理通過在特定狀態執行某個行動,會獲得一個獎勵。想像一下電腦遊戲《超級瑪利歐》。你是瑪利歐,處於遊戲的一個關卡中,站在懸崖邊上。你的上方有一枚金幣。你作為瑪利歐,處於遊戲關卡中的某個特定位置……這就是你的狀態。向右移動一步(行動)會讓你掉下懸崖,並獲得一個低分數。然而,按下跳躍按鈕可以讓你獲得一分並保持存活。這是一個正面的結果,應該給予你一個正的數值分數。 +強化學習涉及三個重要概念:代理人(agent)、一些狀態(states),以及每個狀態下的一組行動。透過在特定狀態執行一個行動,代理人會獲得一個獎勵。再次想像電腦遊戲《超級瑪利歐》。你是瑪利歐,你在一個遊戲關卡中,站在懸崖邊緣。上方有一個硬幣。你扮演的瑪利歐,在關卡內一個特定位置……這就是你的狀態。向右走一步(行動)會讓你掉下懸崖,這會給你一個低分數。然而,按下跳躍鍵會讓你獲得一分,並且你會繼續存活。這是一個正向的結果,應該給予你一個正的數值獎勵。 -通過使用強化學習和模擬器(遊戲),你可以學習如何玩遊戲以最大化獎勵,即保持存活並獲得盡可能多的分數。 +透過使用強化學習和模擬器(遊戲),你可以學習如何玩遊戲以最大化獎勵,也就是保持存活並盡可能多得分。 -[![強化學習簡介](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) +[![強化學習入門](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](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) 文件,此文件在筆記本代碼中會用到。將它放在與筆記本同一目錄下。 ## 簡介 -在本課程中,我們將探索 **[彼得與狼](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` 的方形棋盤,如下所示: +為簡化起見,我們假設彼得的世界是一個大小為 `寬度` x `高度` 的方形棋盤,如下所示: -![彼得的環境](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![彼得的環境](../../../../translated_images/zh-MO/environment.40ba3cb66256c93f.webp) 棋盤中的每個格子可以是: -* **地面**,彼得和其他生物可以在上面行走。 -* **水域**,顯然不能行走。 -* **樹木**或**草地**,可以休息的地方。 -* **蘋果**,彼得希望找到以餵飽自己。 -* **狼**,危險且應該避免。 +* 地面,彼得和其他生物可以行走的地方。 +* 水域,你顯然不能走在水上。 +* 樹木草地,可以休息的地方。 +* 蘋果,代表彼得會高興找到用來餵食自己的東西。 +* ,危險需避免。 -有一個單獨的 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()) } ``` -總結一下,此場景的策略和目標如下: +總結來說,此場景的策略與目標如下: -- **策略**:代理(彼得)的策略由所謂的**政策**定義。政策是一個函數,能在任何給定狀態下返回行動。在我們的例子中,問題的狀態由棋盤表示,包括玩家的當前位置。 +- 策略,代理人(彼得)的策略由所謂的策略函數(policy)定義。策略是一個函數,輸入任一狀態即返回該狀態下的行動。在此,我們的問題狀態由棋盤包括玩家當前位置表示。 -- **目標**:強化學習的目標是最終學習一個良好的政策,使我們能有效地解決問題。然而,作為基準,我們先考慮最簡單的政策,稱為**隨機行走**。 +- 目標,強化學習的目標是最終學到一個優良策略,能有效解決問題。然而,作為基準,先考慮最簡單的策略稱為隨機漫步。 -## 隨機行走 +## 隨機漫步 -首先,我們通過實現隨機行走策略來解決問題。在隨機行走中,我們將從允許的行動中隨機選擇下一個行動,直到到達蘋果(程式碼塊 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 步,這數量相當大。 - 你還可以看到彼得在隨機行走中的移動情況: + 你還可以看到彼得隨機漫步的移動樣貌: - ![彼得的隨機行走](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) + ![彼得的隨機漫步](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) ## 獎勵函數 -為了使我們的政策更智能,我們需要了解哪些移動比其他移動“更好”。為此,我們需要定義我們的目標。 +為了讓策略更聰明,我們需要了解哪些移動比其他「好」。為此,我們需要定義目標。 -目標可以通過**獎勵函數**來定義,該函數會為每個狀態返回一些分數值。數值越高,獎勵函數越好。(程式碼塊 5) +目標可用獎勵函數定義,該函數會對每個狀態回傳某分數值。數值越高,獎勵函數越好。(程式碼塊 5) ```python move_reward = -0.1 @@ -154,43 +154,115 @@ def reward(m,pos=None): return move_reward ``` -獎勵函數的一個有趣之處在於,大多數情況下,*只有在遊戲結束時才會給予實質性獎勵*。這意味著我們的算法應該以某種方式記住導致正面獎勵的“好”步驟,並增加它們的重要性。同樣,所有導致不良結果的移動應該被抑制。 +有趣的是,獎勵函數多數情況下,我們只會在遊戲結束時得到顯著的獎勵。這意味著我們的算法應該記憶導致結束時正面獎勵的「好」步驟,並加強它們的重要性。類似地,所有導致壞結果的移動應被削弱。 ## Q-Learning -我們將討論的算法稱為 **Q-Learning**。在此算法中,政策由一個函數(或數據結構)定義,稱為 **Q-Table**。它記錄了在給定狀態下每個行動的“好壞程度”。 +我們將介紹一個稱為 **Q-Learning** 的算法。在此算法中,策略由一個函數(或資料結構)稱為Q-表格定義。它記錄在給定狀態中各行動的「優劣」。 -之所以稱為 Q-Table,是因為將其表示為表格或多維數組通常很方便。由於我們的棋盤尺寸為 `width` x `height`,我們可以使用形狀為 `width` x `height` x `len(actions)` 的 numpy 數組來表示 Q-Table:(程式碼塊 6) +它稱為 Q-表,因為通常會以表格或多維陣列形式呈現。由於我們的棋盤是 `寬度` x `高度`,可用 numpy 陣列表示 Q-表,形狀為 `寬度` 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)`。 -![彼得的環境](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![彼得的環境](../../../../translated_images/zh-MO/env_init.04e8f26d2d60089e.webp) -在每個格子的中心有一個“箭頭”,指示移動的首選方向。由於所有方向都是相等的,因此顯示為一個點。 +每格中心有一個「箭頭」指示偏好的移動方向。若所有方向相等,則顯示點。 -現在我們需要運行模擬,探索環境,並學習更好的 Q-Table 值分佈,這將使我們能更快地找到蘋果的路徑。 +現在我們要運行模擬,探索環境,學習較佳的 Q-表值分布,讓我們更快找到蘋果路徑。 -## Q-Learning 的核心:貝爾曼方程 +## Q-Learning 的本質:Bellman 方程式 -一旦我們開始移動,每個行動都會有相應的獎勵,即我們理論上可以根據最高的即時獎勵選擇下一個行動。然而,在大多數狀態下,移動並不能實現我們到達蘋果的目標,因此我們無法立即決定哪個方向更好。 +一旦開始移動,每個行動會有相應獎勵,即理論上可依最高即時獎勵選擇下一行動。但在多數狀態,行動無法馬上達成找蘋果目標,因此無法立即決定較佳方向。 -> 記住,重要的不是即時結果,而是最終結果,即我們在模擬結束時獲得的結果。 +> 請記住,不是即時結果重要,而是模擬結束時取得的最終結果。 -為了考慮這種延遲獎勵,我們需要使用 **[動態規劃](https://en.wikipedia.org/wiki/Dynamic_programming)** 的原則,這使我們能以遞歸方式思考問題。 +為了考慮此延遲獎勵,我們需使用[動態規劃](https://en.wikipedia.org/wiki/Dynamic_programming)的原理,讓我們以遞迴思考問題。 -假設我們現在處於狀態 *s*,並希望移動到下一個狀態 *s'*。通過這樣做,我們將獲得由獎勵函數定義的即時獎勵 *r(s,a)*,加上一些未來的獎勵。如果我們假設 Q-Table 正確反映了每個行動的“吸引力”,那麼在狀態 *s'* 我們將選擇對應於 *Q(s',a')* 最大值的行動 *a'*。因此,我們在狀態 *s* 能夠獲得的最佳未來獎勵將由 `max` 定義: +假設我們處於狀態 *s*,想移動到下一狀態 *s'*;此時會得到即時獎勵 *r(s,a)* 為函數定義,再加上一些未來獎勵。若假設 Q-表正確反映每行動「吸引力」,則在狀態 *s'* 會選擇行動 *a*,使 *Q(s',a')* 達最大值。故狀態 *s* 可取得的最佳未來獎勵定義為 `max`a'*Q(s',a')*(此處最大化運算涵蓋狀態 *s'* 所有可能行動 *a'*)。 -*Q(s',a')*(此處的最大值是針對狀態 *s'* 下所有可能行動 *a'* 計算的)。 +這給出在狀態 *s*、行動 *a* 下計算 Q-表值的 **Bellman 公式**: -這給出了計算狀態 *s* 下行動 *a* 的 Q-Table 值的 **貝爾曼公式**: + -## 檢查政策 +這裡的 γ 是所謂的折扣因子,決定你應多偏好當前獎勵還是未來獎勵。 -由於 Q-Table 列出了每個狀態下每個行動的「吸引力」,因此使用它來定義我們世界中的高效導航非常簡單。在最簡單的情況下,我們可以選擇對應於最高 Q-Table 值的行動:(程式碼區塊 9) +## 學習算法 + +基於上述方程式,我們現在可以寫出學習算法的伪代碼: + +* 用相同數值初始化 Q-表 Q,涵蓋所有狀態和行動 +* 設定學習率 α ← 1 +* 重複多次模擬 + 1. 從隨機位置開始 + 1. 重複 + 1. 在狀態 *s* 選擇行動 *a* + 2. 執行行動,移動到新狀態 *s'* + 3. 若遇遊戲結束條件或總獎勵過小,退出模擬 + 4. 計算新狀態的獎勵 *r* + 5. 根據 Bellman 方程更新 Q 函數:*Q(s,a)* ← *(1-α)Q(s,a)+α(r+γ maxa'Q(s',a'))* + 6. *s* ← *s'* + 7. 更新總獎勵並降低 α。 + +## 利用(exploit)與探索(explore) + +在上述算法中,我們未指定在 2.1 步驟如何選擇行動。若隨機選擇行動,我們會隨機探索環境,可能經常死亡且探索不常去的區域;另一方法是利用我們已知的 Q-表值,在狀態 *s* 選擇最佳行動(Q-表值高)。但此舉會阻礙探索其他狀態,可能無法找到最優解。 + +因此,最佳策略是在探索和利用間取得平衡。可根據 Q-表值按比例選擇狀態 *s* 下的行動。起初當 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 次實驗(稱為 **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): @@ -202,17 +274,18 @@ def qpolicy_strict(m): walk(m,qpolicy_strict) ``` -> 如果多次嘗試上述程式碼,您可能會注意到有時它會「卡住」,需要按下筆記本中的 STOP 按鈕來中斷執行。這是因為可能存在某些情況,兩個狀態在最佳 Q-Value 上「指向」彼此,導致代理不斷在這些狀態之間移動。 + +> 如果你多次嘗試上述代碼,你可能會注意到有時它會「卡住」,你需要按下筆記本中的停止按鈕來中斷它。這是因為可能存在兩個狀態在最佳 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): @@ -224,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/zh-TW/.co-op-translator.json b/translations/zh-TW/.co-op-translator.json index 894528eaf..daf9f1a07 100644 --- a/translations/zh-TW/.co-op-translator.json +++ b/translations/zh-TW/.co-op-translator.json @@ -24,8 +24,8 @@ "language_code": "zh-TW" }, "1-Introduction/3-fairness/README.md": { - "original_hash": "9a6b702d1437c0467e3c5c28d763dac2", - "translation_date": "2025-09-05T09:52:29+00:00", + "original_hash": "0f00d72169a0d37eecfd16d71e01700a", + "translation_date": "2026-07-14T08:11:13+00:00", "source_file": "1-Introduction/3-fairness/README.md", "language_code": "zh-TW" }, @@ -54,8 +54,8 @@ "language_code": "zh-TW" }, "2-Regression/1-Tools/README.md": { - "original_hash": "fa81d226c71d5af7a2cade31c1c92b88", - "translation_date": "2025-09-05T09:44:11+00:00", + "original_hash": "0b8635427b582d03ea4ab7089b93e505", + "translation_date": "2026-07-14T08:07:25+00:00", "source_file": "2-Regression/1-Tools/README.md", "language_code": "zh-TW" }, @@ -72,8 +72,8 @@ "language_code": "zh-TW" }, "2-Regression/2-Data/README.md": { - "original_hash": "7c077988328ebfe33b24d07945f16eca", - "translation_date": "2025-09-05T09:45:20+00:00", + "original_hash": "a58b2c4d16c6b122643391745ac15af6", + "translation_date": "2026-07-14T08:08:50+00:00", "source_file": "2-Regression/2-Data/README.md", "language_code": "zh-TW" }, @@ -89,6 +89,12 @@ "source_file": "2-Regression/2-Data/solution/Julia/README.md", "language_code": "zh-TW" }, + "2-Regression/2-Data/solution/notebook.ipynb": { + "original_hash": "96b95f8cf473481f2f371de8156f1571", + "translation_date": "2026-07-14T07:42:36+00:00", + "source_file": "2-Regression/2-Data/solution/notebook.ipynb", + "language_code": "zh-TW" + }, "2-Regression/3-Linear/README.md": { "original_hash": "8b776e731c35b171d316d01d0e7b1369", "translation_date": "2026-04-26T20:35:22+00:00", @@ -457,7 +463,7 @@ }, "8-Reinforcement/1-QLearning/README.md": { "original_hash": "911efd5e595089000cb3c16fce1beab8", - "translation_date": "2025-09-05T09:58:52+00:00", + "translation_date": "2026-07-14T08:10:05+00:00", "source_file": "8-Reinforcement/1-QLearning/README.md", "language_code": "zh-TW" }, @@ -581,6 +587,19 @@ "source_file": "TROUBLESHOOTING.md", "language_code": "zh-TW" }, + "__translation_failures__": { + "sketchnotes/LICENSE.md": { + "original_hash": "fba3b94d88bfb9b81369b869a1e9a20f", + "source_file": "sketchnotes/LICENSE.md", + "language_code": "zh-TW", + "failure_date": "2026-07-14T08:06: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-03T17:21:34+00:00", diff --git a/translations/zh-TW/1-Introduction/3-fairness/README.md b/translations/zh-TW/1-Introduction/3-fairness/README.md index 93c93c666..2dc81114c 100644 --- a/translations/zh-TW/1-Introduction/3-fairness/README.md +++ b/translations/zh-TW/1-Introduction/3-fairness/README.md @@ -1,161 +1,167 @@ -# 使用負責任的人工智慧建構機器學習解決方案 - -![機器學習中負責任 AI 的摘要草圖](../../../../sketchnotes/ml-fairness.png) -> 草圖由 [Tomomi Imura](https://www.twitter.com/girlie_mac) 提供 +# 建立負責任 AI 的機器學習解決方案 + +![機器學習中負責任 AI 的摘要手繪筆記](../../../../translated_images/zh-TW/ml-fairness.ef296ebec6afc98a.webp) +> 手繪筆記作者:[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 -[![Microsoft 的負責任 AI 方法](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoft 的負責任 AI 方法") +[![微軟負責任 AI 方法](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "微軟負責任 AI 方法") -> 🎥 點擊上方圖片觀看影片:Microsoft 的負責任 AI 方法 +> 🎥 點擊上方圖片觀看影片:微軟負責任 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) +- 貶損。不公平地批評和標籤某人或某事。例如,有影像標記技術曾臭名昭著錯誤將深色皮膚者標記為猩猩。 +- 過度或不足代表。某群體在某職業中看似不存在,而任何維持這種現象的服務或功能都會造成傷害。 +- 刻板印象。將既定屬性與特定群體連結。例如,英土語言翻譯系統可能因具有性別刻板關聯詞而出錯。 -![翻譯成土耳其語](../../../../1-Introduction/3-fairness/images/gender-bias-translate-en-tr.png) +![翻譯成土耳其語](../../../../translated_images/zh-TW/gender-bias-translate-en-tr.f185fd8822c2d437.webp) > 翻譯成土耳其語 -![翻譯回英語](../../../../1-Introduction/3-fairness/images/gender-bias-translate-tr-en.png) -> 翻譯回英語 +![再翻譯回英文](../../../../translated_images/zh-TW/gender-bias-translate-tr-en.4eee7e3cecb8c70e.webp) +> 再翻譯回英文 -在設計和測試 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) ### 包容性 -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 特別需要密切關注隱私和資料安全議題,因為 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 系統對個人或社會的影響負責。 -[![領先的 AI 研究人員警告面部識別可能導致大規模監控](../../../../1-Introduction/3-fairness/images/accountability.png)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft 的負責任 AI 方法") +[![領先 AI 研究者警告臉部辨識引發大規模監控](../../../../translated_images/zh-TW/accountability.41d8c0f4b85b6231.webp)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "微軟負責任 AI 方法") -> 🎥 點擊上方圖片觀看影片:面部識別可能導致大規模監控的警告 +> 🎥 點擊上方圖片觀看影片:警告臉部辨識引起大規模監控 -最終,作為第一代將 AI 帶入社會的世代,我們面臨的最大問題之一是如何確保電腦始終對人類負責,以及如何確保設計電腦的人對其他人負責。 +最終,對於我們這一代—第一代將 AI 引入社會的人來說,最大的問題之一是如何確保電腦向人類負責,以及設計電腦的人對其他人負責。 ## 影響評估 -在訓練機器學習模型之前,進行影響評估以了解 AI 系統的目的、預期用途、部署地點以及與系統互動的對象是非常重要的。這些評估對於評審者或測試者來說非常有幫助,因為它們可以知道在識別潛在風險和預期後果時需要考慮哪些因素。 +在訓練機器學習模型之前,進行影響評估很重要,以了解 AI 系統的目的、預期用途、部署地點及使用者。這有助於評估者或測試者知道評估系統時需考慮的因素,從而識別潛在風險與預期結果。 進行影響評估時的重點領域包括: -* **對個人的不利影響**:了解任何限制或要求、不支持的用途或任何已知限制對系統性能的影響至關重要,以確保系統不會以可能對個人造成傷害的方式使用。 -* **數據需求**:了解系統如何以及在哪裡使用數據,使評審者能夠探索需要注意的任何數據需求(例如 GDPR 或 HIPPA 數據法規)。此外,檢查數據的來源或數量是否足夠用於訓練。 -* **影響摘要**:收集使用系統可能產生的潛在傷害清單。在 ML 生命週期中,檢查是否已緩解或解決識別出的問題。 -* **六大核心原則的適用目標**:評估每個原則的目標是否達成,以及是否存在任何差距。 +* 對個人的不良影響。了解任何限制或要求、不被支持的使用方式或已知性能限制,對避免系統被用於可能傷害個人的方式至關重要。 +* 數據需求。理解系統如何及在哪裡使用數據,讓評審能探討需顧慮的數據要求(如 GDPR 或 HIPAA 規定),並檢視數據來源與數量是否充足以訓練模型。 +* 影響摘要。收集可能因使用系統而產生的傷害清單。在 ML 生命週期中,不斷檢視是否已緩解或處理所識別問題。 +* 適用目標,對六大核心原則的評估。檢查是否達成各原則目標,並找出不足之處。 -## 使用負責任 AI 進行除錯 -與除錯軟體應用程式類似,除錯 AI 系統是識別和解決系統問題的必要過程。許多因素可能導致模型未按預期或負責任地運行。大多數傳統的模型性能指標是模型性能的定量匯總,這不足以分析模型如何違反負責任 AI 原則。此外,機器學習模型是一個黑箱,難以理解其結果的驅動因素,或者在出錯時提供解釋。在本課程的後續部分,我們將學習如何使用負責任 AI 儀表板來幫助除錯 AI 系統。該儀表板為數據科學家和 AI 開發者提供了一個全面的工具,用於執行以下操作: +## 負責任 AI 的除錯 -* **錯誤分析**:識別模型的錯誤分佈,這可能影響系統的公平性或可靠性。 -* **模型概覽**:發現模型在數據群體中的性能差異。 -* **數據分析**:了解數據分佈並識別數據中可能導致公平性、包容性和可靠性問題的潛在偏見。 -* **模型可解釋性**:了解影響或影響模型預測的因素。這有助於解釋模型的行為,這對於透明性和責任感至關重要。 +類似除錯軟體應用,除錯 AI 系統是找出並解決系統問題的必要過程。多種因素可能導致模型表現不如預期或不負責任。大多數傳統模型性能指標是模型表現的量化彙整,無法充分分析模型如何違反負責任 AI 原則。此外,機器學習模型是黑盒,難以理解其決策依據或在出錯時提供解釋。本課程後面將學習如何使用負責任 AI 儀表板來協助除錯 AI 系統。該儀表板為資料科學家與 AI 開發者提供整體工具以執行: + +* 錯誤分析。識別影響系統公平性或可靠性的模型誤差分布。 +* 模型概覽。發現模型於不同資料群組間的性能差異。 +* 數據分析。了解數據分布,識別可能導致公平性、包容性與可靠性問題的偏誤。 +* 模型可解釋性。理解影響模型預測的因素,有助解釋模型行為,對透明度與問責性至關重要。 -## 🚀 挑戰 -為了防止傷害的產生,我們應該: +## 🚀 挑戰 + +為防止初期即引入傷害,我們應該: -- 確保參與系統工作的團隊成員具有多樣化的背景和觀點。 -- 投資於反映我們社會多樣性的數據集。 -- 在機器學習生命週期中開發更好的方法來檢測和糾正負責任 AI 的問題。 +- 在系統開發團隊中具備多元背景與觀點 +- 投資反映社會多元性的數據集 +- 在機器學習生命週期中發展更佳方法以偵測並修正負責任 AI 問題 -思考一些現實生活中的情境,這些情境中模型的不可信性在模型構建和使用中顯而易見。我們還應該考慮什麼? +思考實際情況中模型不可信的例子,從模型建立與使用中可看出哪些問題?我們還應考慮什麼? ## [課後測驗](https://ff-quizzes.netlify.app/en/ml/) -## 回顧與自學 +## 複習與自學 + -在本課中,您已經學習了機器學習中公平性和不公平性概念的一些基礎知識。 -觀看這個工作坊以更深入了解相關主題: +在本課程中,您已經學習了機器學習中公平與不公平概念的一些基礎知識。 + +觀看此工作坊以深入探討相關主題: -- 追求負責任的人工智慧:將原則付諸實踐,由 Besmira Nushi、Mehrnoosh Sameki 和 Amit Sharma 主講 +- 追求負責任的 AI:將原則付諸實踐,由 Besmira Nushi、Mehrnoosh Sameki 和 Amit Sharma 主講 -[![負責任的人工智慧工具箱:一個用於構建負責任人工智慧的開源框架](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: 一個用於構建負責任人工智慧的開源框架") +[![Responsible AI Toolbox: An open-source framework for building responsible AI](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI Toolbox: An open-source framework for building responsible AI") -> 🎥 點擊上方圖片觀看影片:負責任的人工智慧工具箱:一個用於構建負責任人工智慧的開源框架,由 Besmira Nushi、Mehrnoosh Sameki 和 Amit Sharma 主講 +> 🎥 點擊上方圖片觀看影片:RAI Toolbox:由 Besmira Nushi、Mehrnoosh Sameki 和 Amit Sharma 主講的負責任 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:人工智慧中的公平性、問責性、透明性與倫理 - 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: -- [負責任人工智慧工具箱 GitHub 儲存庫](https://github.com/microsoft/responsible-ai-toolbox) +- [Responsible AI Toolbox GitHub 儲存庫](https://github.com/microsoft/responsible-ai-toolbox) -了解 Azure 機器學習的工具如何確保公平性: +閱讀關於 Azure Machine Learning 確保公平性的工具: -- [Azure 機器學習](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/zh-TW/2-Regression/1-Tools/README.md b/translations/zh-TW/2-Regression/1-Tools/README.md index 21b04bd09..c22c81cf1 100644 --- a/translations/zh-TW/2-Regression/1-Tools/README.md +++ b/translations/zh-TW/2-Regression/1-Tools/README.md @@ -1,120 +1,121 @@ -# 使用 Python 和 Scikit-learn 建立回歸模型 +# 使用 Python 和 Scikit-learn 開始建立回歸模型 -![回歸模型的手繪筆記摘要](../../../../sketchnotes/ml-regression.png) +![回歸模型的筆記總覽](../../../../translated_images/zh-TW/ml-regression.4e4f70e3b3ed446e.webp) -> 手繪筆記由 [Tomomi Imura](https://www.twitter.com/girlie_mac) 提供 +> 筆記作者 [Tomomi Imura](https://www.twitter.com/girlie_mac) ## [課前測驗](https://ff-quizzes.netlify.app/en/ml/) -> ### [本課程也有 R 語言版本!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html) +> ### [本課程亦提供 R 語言版本!](../../../../2-Regression/1-Tools/solution/R/lesson_1.html) -## 簡介 +## 介紹 -在這四節課中,您將學習如何建立回歸模型。我們稍後會討論這些模型的用途。但在開始之前,請確保您已準備好正確的工具來進行這個過程! +在這四課中,你將學會如何建立回歸模型。我們稍後會談談它們的用途。但在操作之前,請確保你已準備好所有正確的工具來開始此過程! -在本課程中,您將學習如何: +在本課程中,你將學會如何: -- 配置您的電腦以進行本地機器學習任務。 +- 為本機的機器學習任務設定電腦環境。 - 使用 Jupyter 筆記本。 -- 使用 Scikit-learn,包括安裝。 -- 通過實作練習探索線性回歸。 +- 使用 Scikit-learn,包含安裝步驟。 +- 透過實作練習了解線性回歸。 -## 安裝與配置 +## 安裝與設定 -[![機器學習初學者 - 配置工具以建立機器學習模型](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "機器學習初學者 - 配置工具以建立機器學習模型") +[![初學者機器學習 - 設定工具準備建構機器學習模型](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](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. **安裝 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/)。在本課程中,您將在 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](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) 來熟悉 Python。 + > 透過一系列[學習模組](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott)熟悉 Python。 > - > [![在 Visual Studio Code 中配置 Python](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "在 Visual Studio Code 中配置 Python") + > [![在 Visual Studio Code 中設定 Python](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](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/)。 +4. **安裝 Jupyter Notebook**。你需要[安裝 Jupyter 套件](https://pypi.org/project/jupyter/)。 -## 您的機器學習開發環境 +## 你的機器學習撰寫環境 -您將使用 **筆記本** 來開發 Python 程式碼並建立機器學習模型。這種類型的文件是數據科學家常用的工具,其文件副檔名為 `.ipynb`。 +你將使用 **筆記本(notebook)** 來撰寫 Python 程式碼並建立機器學習模型。這類檔案是資料科學家常用的工具,檔案副檔名為 `.ipynb`。 -筆記本是一種互動式環境,允許開發者撰寫程式碼並添加註解或文件,這對於實驗性或研究導向的專案非常有幫助。 +筆記本是一個互動式環境,允許開發者同時撰寫程式碼、加入註記與文件,對於實驗性或研究導向的專案非常有幫助。 -[![機器學習初學者 - 配置 Jupyter 筆記本以開始建立回歸模型](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "機器學習初學者 - 配置 Jupyter 筆記本以開始建立回歸模型") +[![初學者機器學習 - 設定 Jupyter 筆記本開始建構回歸模型](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "初學者機器學習 - 設定 Jupyter 筆記本開始建構回歸模型") -> 🎥 點擊上方圖片觀看一段短片,了解如何進行此練習。 +> 🎥 點擊上方圖片觀看本練習快速教學影片。 ### 練習 - 使用筆記本 -在此資料夾中,您會找到文件 _notebook.ipynb_。 +在此資料夾中,你會找到 _notebook.ipynb_ 檔案。 1. 在 Visual Studio Code 中打開 _notebook.ipynb_。 - Jupyter 伺服器將啟動,並使用 Python 3+。您會發現筆記本中有一些可以 `執行` 的程式碼區塊。您可以通過選擇類似播放按鈕的圖標來執行程式碼區塊。 + Jupyter 伺服器會啟動,使用 Python 3+。你會看到筆記本中有可執行的程式碼區塊。點擊類似播放按鈕的圖示,即可執行該區塊。 -2. 選擇 `md` 圖標並添加一些 Markdown,輸入以下文字 **# 歡迎來到您的筆記本**。 +1. 選取 `md` 圖示並加入 markdown,並輸入以下文字 **# Welcome to your notebook**。 - 接下來,添加一些 Python 程式碼。 + 接著,加入一些 Python 程式碼。 -3. 在程式碼區塊中輸入 **print('hello notebook')**。 -4. 選擇箭頭以執行程式碼。 +1. 在程式碼區塊中輸入 **print('hello notebook')**。 +1. 點擊箭頭執行程式碼。 - 您應該會看到以下輸出: + 你應該會看到輸出: ```output hello notebook ``` -![在 VS Code 中打開的筆記本](../../../../2-Regression/1-Tools/images/notebook.jpg) +![VS Code 開啟筆記本](../../../../translated_images/zh-TW/notebook.4a3ee31f396b8832.webp) -您可以在程式碼中穿插註解,以便自我記錄筆記本。 +你可以在程式碼中加入註解,以自我紀錄筆記本內容。 -✅ 想一想,網頁開發者的工作環境與數據科學家的工作環境有何不同。 +✅ 思考一下網頁開發者的工作環境和資料科學家的工作環境有何不同。 -## 使用 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 提供了[豐富的 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 使建立模型並評估其使用變得簡單。它主要專注於使用數值數據,並包含多個現成的數據集作為學習工具。它還包括一些預建模型供學生嘗試。讓我們先探索如何加載預設數據並使用內建的估算器來建立第一個機器學習模型。 +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)。 -[![機器學習初學者 - 在 Python 中的第一個線性回歸專案](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "機器學習初學者 - 在 Python 中的第一個線性回歸專案") -> 🎥 點擊上方圖片觀看一段短片,了解如何進行此練習。 +[![初學者機器學習 - 你的第一個 Python 線性回歸專案](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](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 數值數據的有用庫。 -- **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 @@ -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:身體質量指數(Body Mass Index) - 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. 加入列印指令,顯示資料矩陣的形狀及其第一筆元素: ```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 欄。你也可以用 `reshape(n_rows, n_columns)` 將資料重塑成 2D 陣列以便繪圖。如果其中一個參數是 -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. 接著準備訓練模型!載入線性回歸模型,並用你的 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() ``` - ![顯示糖尿病數據點的散點圖](../../../../2-Regression/1-Tools/images/scatterplot.png) -✅ 想一想這裡發生了什麼。一條直線穿過了許多小數據點,但它究竟在做什麼?你能看出如何利用這條直線來預測一個新的、未見過的數據點應該在圖表的 y 軸上對應的位置嗎?試著用語言描述這個模型的實際用途。 + ![一個展示糖尿病資料散佈點的圖形](../../../../translated_images/zh-TW/scatterplot.ad8b356bcbb33be6.webp) + -恭喜你!你已經建立了第一個線性回歸模型,使用它進行了預測,並將結果顯示在圖表中! + ✅ 想一想這裡發生了什麼。一條直線穿過了許多小點的資料,但它到底在做什麼?你能看出應該如何使用這條線來預測一個新的、未見過的資料點在圖表的 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) 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原始語言的文件作為權威來源。對於關鍵資訊,建議尋求專業人工翻譯。我們對於因使用本翻譯而引起的任何誤解或錯誤解讀概不負責。 \ 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/zh-TW/2-Regression/2-Data/README.md b/translations/zh-TW/2-Regression/2-Data/README.md index cd84e783d..31716914b 100644 --- a/translations/zh-TW/2-Regression/2-Data/README.md +++ b/translations/zh-TW/2-Regression/2-Data/README.md @@ -1,62 +1,62 @@ -# 使用 Scikit-learn 建立回歸模型:準備與視覺化數據 +# 使用 Scikit-learn 建立迴歸模型:準備及視覺化資料 -![數據視覺化資訊圖表](../../../../2-Regression/2-Data/images/data-visualization.png) +![資料視覺化資訊圖表](../../../../translated_images/zh-TW/data-visualization.54e56dded7c1a804.webp) -資訊圖表由 [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 開始建立機器學習模型,接下來可以開始對數據提出問題。在處理數據並應用機器學習解決方案時,了解如何提出正確的問題以充分發揮數據集的潛力是非常重要的。 +現在你已經安裝好開始使用 Scikit-learn 建置機器學習模型所需的工具,便可以開始探究資料中的問題了。當你操作資料並應用 ML 解決方案時,理解如何提出正確的問題以妥善開發資料潛力,是非常重要的。 -在本課程中,您將學到: +在本課程中,你將學到: -- 如何為模型建立準備數據。 -- 如何使用 Matplotlib 進行數據視覺化。 +- 如何準備你的資料以用於模型建立。 +- 如何使用 Matplotlib 進行資料視覺化。 +- 如何使用 Seaborn 進行更具表現力的資料視覺化。 -## 對數據提出正確的問題 +## 對資料提出正確的問題 -您需要回答的問題將決定您使用哪種類型的機器學習算法。而您獲得答案的質量將在很大程度上取決於數據的性質。 +你需要解決的問題將決定你會採用哪種類型的機器學習演算法。而你得到答案的品質很大程度取決於你的資料性質。 -看看為本課程提供的[數據](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv)。您可以在 VS Code 中打開這個 .csv 文件。快速瀏覽會發現其中有空白值,還有字符串和數字數據的混合。此外,還有一個奇怪的名為 "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://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "機器學習初學者 - 如何分析和清理數據集") +[![ML 新手 - 如何分析與清理資料集](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "ML 新手 - 如何分析與清理資料集") -> 🎥 點擊上方圖片觀看一段短視頻,了解如何準備本課程的數據。 +> 🎥 點擊上方圖片觀看短片,示範本課如何準備資料。 -事實上,很少能直接獲得一個完全準備好用於建立機器學習模型的數據集。在本課程中,您將學習如何使用標準 Python 庫準備原始數據集,並學習各種數據視覺化技術。 +事實上,通常不會直接拿到一組完全就緒可用來建立 ML 模型的資料集。在本課,你將學習如何使用標準 Python 函式庫準備原始資料。也會了解多種資料視覺化技巧。 -## 案例研究:'南瓜市場' +## 案例研究:「南瓜市場」 -在此文件夾中,您會在根目錄的 `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)中提取的原始數據。 +在本資料夾的根目錄 `data` 裡,有一個名為 [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) 的 .csv 檔案,包含 1757 行關於美國南瓜市場的資料,依城市分組排序。這是從美國農業部發布的 [Specialty Crops Terminal Markets Standard Reports](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) 取得的原始資料。 -### 準備數據 +### 資料準備 -這些數據屬於公共領域。它可以從 USDA 網站下載,並以每個城市為單位分成多個文件。為了避免過多的文件,我們已將所有城市數據合併到一個電子表格中,因此我們已經對數據進行了一些_準備_。接下來,讓我們仔細看看這些數據。 +這些資料屬於公有領域,能從美國農業部網站分城市以多個檔案下載。為避免太多分散檔案,我們已將所有城市的資料合併到一個活頁簿中,換句話說,我們已稍作「預備」。接著,我們仔細檢視這些資料。 -### 南瓜數據 - 初步結論 +### 南瓜資料 - 初步結論 -您對這些數據有什麼觀察?您可能已經注意到其中混合了字符串、數字、空白值和一些需要理解的奇怪值。 +你對這些資料有什麼觀察?你已看到它混合了字串、數字、空值及怪異的資料,需要分析清楚。 -使用回歸技術,您可以對這些數據提出什麼問題?例如,"預測某個月份出售的南瓜價格"。再次查看數據,您會發現需要進行一些更改,以創建適合此任務的數據結構。 +你能用迴歸方法,對此資料提出什麼問題?試想「預測某月份南瓜的售價」。再看資料,你需要先做幾個調整,製作出適合此任務的資料結構。 +## 練習 - 分析南瓜資料 -## 練習 - 分析南瓜數據 +我們來用 [Pandas](https://pandas.pydata.org/)(名稱代表 `Python Data Analysis`)這個相當實用的資料整理工具,分析並準備這份南瓜資料。 -讓我們使用 [Pandas](https://pandas.pydata.org/)(名稱代表 `Python Data Analysis`),這是一個非常有用的數據處理工具,來分析和準備這些南瓜數據。 +### 首先,檢查是否有缺少的日期 -### 首先,檢查是否有缺失日期 +你需要先採取以下步驟檢查資料中是否缺少日期: -您需要首先檢查是否有缺失的日期: +1. 將日期轉換成月份格式(這是美國日期,格式為 `MM/DD/YYYY`)。 +2. 從中擷取月份並存到新欄位。 -1. 將日期轉換為月份格式(這些是美國日期格式,為 `MM/DD/YYYY`)。 -2. 提取月份到一個新列中。 +在 Visual Studio Code 中開啟 _notebook.ipynb_ 檔,並將活頁簿導入新 Pandas dataframe。 -在 Visual Studio Code 中打開 _notebook.ipynb_ 文件,並將電子表格導入到一個新的 Pandas dataframe 中。 - -1. 使用 `head()` 函數查看前五行。 +1. 使用 `head()` 函數查看前五列。 ```python import pandas as pd @@ -64,30 +64,30 @@ 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] ``` -### 其次,確定南瓜的平均價格 +### 第二步,計算南瓜平均價格 -思考如何確定某個月份南瓜的平均價格。您會選擇哪些列來完成此任務?提示:您需要 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 @@ ``` - ✅ 您可以使用 `print(month)` 打印任何您想檢查的數據。 + ✅ 你可以用 `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"。南瓜似乎很難以一致的方式稱重,因此我們只選擇 `Package` 列中包含 "bushel" 字符串的南瓜。 +深入查看原始資料,凡 `Unit of Sale` 值為「EACH」或「PER BIN」者,`Package` 欄位都會以每英寸、每箱或「each」計。不過南瓜很難有固定的磅重,因此我們以「bushel」字串篩選,只挑選出以「bushel」售賣的南瓜。 -1. 在文件頂部的 .csv 導入下方添加一個篩選器: +1. 在檔案起始,csv 導入後,加入篩選條件: ```python pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)] ``` - 如果您現在打印數據,您會看到只剩下大約 415 行包含以 bushel 為單位的南瓜數據。 + 若你此時印出資料,可看到剩余約 415 筆以 bushel 計價的南瓜資料。 -### 但是等等!還有一件事要做 +### 等等!還有一件事 -您是否注意到每行的 bushel 數量不同?您需要對價格進行標準化,以顯示每 bushel 的價格,因此需要進行一些數學運算來標準化它。 +你有注意到不同列的 bushel 數量有差異嗎?你需要標準化價格,算出每 bushel 的價格,必須做些運算讓資料統一。 -1. 在創建 new_pumpkins dataframe 的代碼塊後添加以下行: +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 @@ 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 西紅柿大約重 56 磅……青葉類體積大但重量少,因此一 bushel 菠菜約 20 磅。」這相當複雜!我們不打算作 bushel 與磅的轉換,改以每 bushel 價格計算。對南瓜的這些研究,也凸顯理解資料本質的重要性! -現在,您可以根據 bushel 測量單位分析每單位的定價。如果您再打印一次數據,您會看到它已經標準化。 +現在,你可以根據 bushel 這個單位分析南瓜價格。再印出一次資料,即可看到標準化後的結果。 -✅ 您是否注意到按半 bushel 出售的南瓜非常昂貴?您能找出原因嗎?提示:小南瓜比大南瓜貴得多,可能是因為每 bushel 中小南瓜的數量更多,而大南瓜的空心部分佔用了更多空間。 +✅ 你注意到半 bushel 售價特別高嗎?你能猜出原因嗎?提示:小南瓜單價較高,因為半 bushel 中小顆數量較多,而大顆中間有空洞,使用空間較浪費。 -## 視覺化策略 +## 資料視覺化策略 -數據科學家的部分工作是展示他們正在處理的數據的質量和性質。為此,他們通常會創建有趣的視覺化圖表,例如散點圖、柱狀圖和折線圖,展示數據的不同方面。通過這種方式,他們能夠直觀地顯示數據中難以發現的關係和差距。 +資料科學家的工作之一是展現所處理資料的品質與性質。為此,他們會製作有趣的圖表、繪圖、圖形和圖表,展示資料的不同面貌。透過視覺化,他們能以直觀方式呈現關聯與缺口,這些關聯否則難以發現。 -[![機器學習初學者 - 如何使用 Matplotlib 視覺化數據](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "機器學習初學者 - 如何使用 Matplotlib 視覺化數據") +[![ML 新手 - 如何使用 Matplotlib 視覺化資料](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "ML 新手 - 如何使用 Matplotlib 視覺化資料") -> 🎥 點擊上方圖片觀看一段短視頻,了解如何視覺化本課程的數據。 +> 🎥 點擊上方圖片觀看短片,示範本課如何視覺化資料。 -視覺化還可以幫助確定最適合數據的機器學習技術。例如,看起來像一條線的散點圖表明該數據非常適合線性回歸練習。 +視覺化也有助於辨別最適合資料的機器學習方法。舉例來說,一個看來呈線狀分布的散點圖,表明資料較適合用線性迴歸。 -在 Jupyter notebook 中,一個非常好用的數據視覺化庫是 [Matplotlib](https://matplotlib.org/)(您在上一課中也見過它)。 +一款在 Jupyter notebook 中表現良好的資料視覺化函式庫是 [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。基本的折線圖會顯示什麼? +嘗試製作一些基本圖形,顯示你剛建立的新 dataframe。簡單的折線圖會呈現什麼結果? -1. 在文件頂部的 Pandas 導入下方導入 Matplotlib: +1. 在檔案頂部,在 Pandas 導入後面,導入 Matplotlib: ```python import matplotlib.pyplot as plt ``` -1. 重新運行整個 notebook 以刷新。 -1. 在 notebook 底部添加一個單元格,將數據繪製為箱形圖: +1. 重新執行整個 notebook 以更新。 +1. 在 notebook 底部新增儲存格,以箱形圖來繪製資料: ```python price = new_pumpkins.Price @@ -174,44 +174,121 @@ plt.show() ``` - ![顯示價格與月份關係的散點圖](../../../../2-Regression/2-Data/images/scatterplot.png) + ![一個展示價格與月份關係的散點圖](../../../../translated_images/zh-TW/scatterplot.b6868f44cbd2051c.webp) - 這是一個有用的圖表嗎?它有什麼讓您感到驚訝的地方嗎? + 這圖有用嗎?你覺得有什麼令人驚訝的地方嗎? - 它並不是特別有用,因為它只是在給定月份中顯示數據的分佈。 + 其實用途有限,因為它只把資料以點狀分布表現在某月份。 -### 讓它更有用 +### 讓它有用起來 -為了讓圖表顯示有用的數據,通常需要以某種方式對數據進行分組。我們來嘗試創建一個圖表,其中 y 軸顯示月份,數據顯示數據的分佈。 +通常,為了讓圖表呈現有用資訊,你需要對資料做某種分組。讓我們嘗試做一張 y 軸表示月份,並展示資料分布的圖表。 -1. 添加一個單元格來創建分組柱狀圖: +1. 新增儲存格,建立分組長條圖: ```python new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') plt.ylabel("Pumpkin Price") ``` - ![顯示價格與月份關係的柱狀圖](../../../../2-Regression/2-Data/images/barchart.png) + ![一張展示價格與月份關係的長條圖](../../../../translated_images/zh-TW/barchart.a833ea9194346d76.webp) + + 這是比較有用的資料視覺化!貌似最高南瓜價格出現在九月與十月。和你的預期吻合嗎?為什麼? + +## 練習 - 嘗試 Seaborn + +Matplotlib 很厲害,但繪製精美圖表程式碼量通常不少。[Seaborn](https://seaborn.pydata.org/) 是構建在 Matplotlib 之上的函式庫,專為統計資料視覺化而設計。它可直接與 Pandas dataframe 配合,提供漂亮的預設樣式,使你能用更少程式碼創建資訊豐富的圖表。而且因為 Seaborn 回傳的是 Matplotlib 物件,你仍可以用 Matplotlib 的方法微調結果。 + +> 若你尚未安裝 Seaborn,請用 `pip install seaborn` 安裝。 + +1. 在 notebook 頂部,其他導入後,導入 Seaborn。習慣以 `sns` 為代號: + + ```python + import seaborn as sns + ``` + +### 散點圖示變數間關係 + +建模型前,探索資料一大部分是尋找變數的 _關聯_。散點圖是最佳工具之一。如果點狀分布有線狀趨勢,兩項變數可能相關,說明線性迴歸模型有望適用。 + +1. 使用 Seaborn 的 [`relplot()`](https://seaborn.pydata.org/generated/seaborn.relplot.html)(關係圖)重製之前的月價散點圖。它直接使用 dataframe 欄位: + + ```python + sns.relplot(x="Price", y="Month", data=new_pumpkins) + ``` + + ![Seaborn 散點圖示價格對月份關係](../../../../translated_images/zh-TW/relplot.a03837d8f0329cec.webp) + + 注意你只要傳入 _欄位名稱_ 與 dataframe,Seaborn 會自動處理軸標籤。 + +2. 傳入 `kind="line"` 參數即可切換成折線圖。Seaborn 甚至會繪製一條代表信賴區間的陰影帶: + + ```python + sns.relplot(x="Price", y="Month", kind="line", data=new_pumpkins) + ``` + + ![Seaborn 折線圖示價格對月份關係](../../../../translated_images/zh-TW/lineplot.f9034ba47b1e30ee.webp) + + 這組資料干擾比較大,所以折線圖不一定是最佳選擇──但也說明你用 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") + ``` + + ![A Seaborn bar chart showing the price distribution per month](../../../../translated_images/zh-TW/catplot.e73fc35fdf96242b.webp) + + 這與你用 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") + ``` + + ![A Seaborn heatmap showing correlations between the numeric columns](../../../../translated_images/zh-TW/heatmap.bd98dce43b404c57.webp) + + 接近 `1`(或 `-1`)的值代表欄位間有強烈 _線性_ 相關。注意 `Low Price` 和 `High Price` 幾乎完美相關。另一方面,`Month` 與價格的線性相關較弱 — 儘管前面長條圖清楚顯示九月和十月有明顯季節高峰。這是一個重要的教訓:相關係數只衡量 _直線_ 關係,因此可能漏掉季節性或其他非線性模式。✅ 為什麼決定用哪些欄位前,同時看熱圖 長條圖很有用? + +### Matplotlib 還是 Seaborn? + +兩個函式庫都值得了解: + +- **Matplotlib** 提供對圖表每個元素的細緻控制,且幾乎所有 Python 繪圖庫都建立於其基礎上。 +- **Seaborn** 提供更高階的統計圖函式及吸睛的預設值,能直接操作資料框,常用於快速探索性資料分析。 - 這是一個更有用的數據視覺化!它似乎表明南瓜的最高價格出現在九月和十月。這符合您的預期嗎?為什麼或為什麼不符合? +一個常見工作流程是先用 Seaborn 快速探索資料,需求細節自定義時再切回 Matplotlib。 --- -## 🚀挑戰 +## 🚀 挑戰 -探索 Matplotlib 提供的不同類型的視覺化。哪些類型最適合回歸問題? +探索 Matplotlib 和 Seaborn 所提供的各種類型視覺化。哪幾種視覺化類型最適合用於回歸問題? -## [課後測驗](https://ff-quizzes.netlify.app/en/ml/) +## [課後小測驗](https://ff-quizzes.netlify.app/en/ml/) -## 回顧與自學 +## 複習與自學 -了解數據視覺化的多種方式。列出可用的各種庫,並記下哪些庫最適合特定類型的任務,例如 2D 視覺化與 3D 視覺化。您發現了什麼? +多看看可視化資料的各種方法,列出不同的函式庫並標示它們最適合哪類任務,例如 2D 視覺化 vs. 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/zh-TW/2-Regression/2-Data/solution/notebook.ipynb b/translations/zh-TW/2-Regression/2-Data/solution/notebook.ipynb index 825ff1b13..5934aa8d9 100644 --- a/translations/zh-TW/2-Regression/2-Data/solution/notebook.ipynb +++ b/translations/zh-TW/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 之上,並直接支援 DataFrame,使其能以非常少的程式碼快速創建美觀的統計圖表。\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-03T19:45:08+00:00", - "source_file": "2-Regression/2-Data/solution/notebook.ipynb", - "language_code": "tw" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/zh-TW/8-Reinforcement/1-QLearning/README.md b/translations/zh-TW/8-Reinforcement/1-QLearning/README.md index e8b6afd9b..b282a9958 100644 --- a/translations/zh-TW/8-Reinforcement/1-QLearning/README.md +++ b/translations/zh-TW/8-Reinforcement/1-QLearning/README.md @@ -1,47 +1,47 @@ -# 強化學習與 Q-Learning 簡介 +# 強化學習與 Q 學習簡介 -![機器學習中強化學習的摘要示意圖](../../../../sketchnotes/ml-reinforcement.png) -> 示意圖由 [Tomomi Imura](https://www.twitter.com/girlie_mac) 提供 +![機器學習中強化學習的摘要示意圖](../../../../translated_images/zh-TW/ml-reinforcement.94024374d63348db.webp) +> 示意圖作者為 [Tomomi Imura](https://www.twitter.com/girlie_mac) -強化學習涉及三個重要概念:代理(agent)、一些狀態(states)以及每個狀態的一組行動(actions)。通過在指定狀態下執行某個行動,代理會獲得一個獎勵。想像一下電腦遊戲《超級瑪利歐》。你是瑪利歐,處於遊戲關卡中,站在懸崖邊上。你的上方有一枚金幣。你作為瑪利歐,處於遊戲關卡中的特定位置……這就是你的狀態。向右移動一步(行動)會讓你掉下懸崖,這會給你一個低的數值分數。然而,按下跳躍按鈕可以讓你得分並保持存活。這是一個正面的結果,應該給你一個正的數值分數。 +強化學習包含三個重要概念:代理人(agent)、一些狀態(states),以及每個狀態下的一組動作(actions)。透過在指定狀態執行一個動作,代理人會獲得回饋(reward)。再次想像電腦遊戲超級瑪利歐(Super Mario)。你是瑪利歐,身處一個遊戲關卡,站在懸崖邊。你的上方有一個金幣。你身為瑪利歐,處於遊戲關卡中一個特定位置…這就是你的狀態(state)。向右走一步(一個動作)會讓你掉下懸崖,導致低分。但跳躍按鈕則會幫你得分且保持存活。這是一個正向結果,應該給予正向數值的分數。 -通過使用強化學習和模擬器(遊戲),你可以學習如何玩遊戲以最大化獎勵,即保持存活並盡可能多地得分。 +利用強化學習與模擬器(遊戲),你可以學會怎麼玩遊戲以最大化獎勵,也就是保持存活並取得盡可能多的分數。 -[![強化學習簡介](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo) +[![強化學習入門](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](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 代碼。 +在本課程中,我們會用 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)** 的世界,靈感來自俄羅斯作曲家 [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` 的方形棋盤,如下圖: -![彼得的環境](../../../../8-Reinforcement/1-QLearning/images/environment.png) +![彼得的環境](../../../../translated_images/zh-TW/environment.40ba3cb66256c93f.webp) -棋盤中的每個格子可以是: +這張棋盤上的每一格可為: -* **地面**,彼得和其他生物可以在上面行走。 -* **水域**,顯然不能行走。 -* **樹**或**草地**,可以休息的地方。 -* **蘋果**,彼得很高興找到的食物。 -* **狼**,危險且應該避免。 +* 陸地,彼得與其他生物可行走的地方。 +* 水域,顯然無法行走的地方。 +* 樹木草地,可供休息之處。 +* 蘋果,代表彼得會很高興找到的食物。 +* ,有危險應該避免。 -有一個單獨的 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()) } ``` -總結一下,此場景的策略和目標如下: +總結來說,本場景中策略與目標如下: -- **策略**:我們的代理(彼得)的策略由所謂的**策略函數**(policy)定義。策略是一個函數,能在任何給定狀態下返回行動。在我們的例子中,問題的狀態由棋盤表示,包括玩家的當前位置。 +- 策略:代理人(彼得)的策略由所謂的策略函數(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 步左右。 - 你還可以看到彼得在隨機行走中的移動情況: + 你也可以看到彼得在隨機行走時的移動樣貌: ![彼得的隨機行走](../../../../8-Reinforcement/1-QLearning/images/random_walk.gif) ## 獎勵函數 -為了讓我們的策略更智能,我們需要了解哪些移動比其他移動更“好”。為此,我們需要定義目標。 +為了讓我們的策略更智慧,我們需了解哪些動作比其他更「好」。為此,我們必須定義目標。 -目標可以通過**獎勵函數**定義,該函數會為每個狀態返回一些分數值。數值越高,獎勵函數越好。(代碼塊 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-表紀錄每個狀態下各動作的「好壞」程度。 -之所以稱為 Q-Table,是因為將其表示為表格或多維數組通常很方便。由於我們的棋盤尺寸為 `width` x `height`,我們可以使用形狀為 `width` x `height` x `len(actions)` 的 numpy 數組來表示 Q-Table:(代碼塊 6) +它稱為 Q-表,是因為常以表格或多維陣列形式呈現。由於我們的棋盤維度為 `width` x `height`,可用 shape 為 `width` x `height` x `len(actions)` 的 numpy 陣列來表示 Q-表:(程式碼區塊 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)`。 -![彼得的環境](../../../../8-Reinforcement/1-QLearning/images/env_init.png) +![彼得的環境](../../../../translated_images/zh-TW/env_init.04e8f26d2d60089e.webp) -在每個格子的中心有一個“箭頭”,指示移動的首選方向。由於所有方向都是相等的,因此顯示為一個點。 +在每一格中心都有一個「箭頭」指示偏好移動方向。因所有方向價值相同,所以會顯示一個點。 -現在我們需要運行模擬,探索環境,並學習更好的 Q-Table 值分佈,這將使我們更快地找到蘋果的路徑。 +現在我們需要執行模擬,探索環境並學習更好的 Q-表分佈,以便更快速找到蘋果的路徑。 -## Q-Learning 的核心:貝爾曼方程 +## Q 學習的核心:貝爾曼方程式 -一旦我們開始移動,每個行動都會有相應的獎勵,即我們理論上可以根據最高的即時獎勵選擇下一個行動。然而,在大多數狀態下,移動並不會實現我們到達蘋果的目標,因此我們無法立即決定哪個方向更好。 +一旦開始移動,每個動作會有對應的回饋,也就是理論上可根據即時回饋選擇下一步動作。然而,在大多數狀態下,該動作不會立即達成我們想找蘋果的目標,因此無法馬上判斷哪個方向較好。 -> 記住,重要的不是即時結果,而是最終結果,即我們在模擬結束時獲得的結果。 +> 請記得,重要的不是即時結果,而是最後的結果,也就是模擬結束時獲得的結果。 -為了考慮這種延遲獎勵,我們需要使用**[動態規劃](https://en.wikipedia.org/wiki/Dynamic_programming)**的原則,這使我們能以遞歸方式思考問題。 +為了因應這種延遲回饋,我們需要用到[動態規劃](https://en.wikipedia.org/wiki/Dynamic_programming) 的原理,讓我們能以遞迴方式思考問題。 -假設我們現在處於狀態 *s*,並希望移動到下一個狀態 *s'*。通過這樣做,我們將獲得由獎勵函數定義的即時獎勵 *r(s,a)*,加上一些未來的獎勵。如果我們假設 Q-Table 正確反映了每個行動的“吸引力”,那麼在狀態 *s'* 我們將選擇對應於最大值 *Q(s',a')* 的行動 *a'*。因此,我們在狀態 *s* 能夠獲得的最佳未來獎勵將定義為 `max` +假設我們目前處於狀態 *s*,想移動到下一狀態 *s'*。這麼做會拿到即時回饋 *r(s,a)*,由獎勵函數定義,外加未來的獎勵。如果假設 Q-表能正確反映每個動作的「誘因」,那麼在狀態 *s'* 我們會選擇動作 *a*,該動作使 *Q(s',a')* 最大。因此,在狀態 *s* 可取得的最佳未來回饋由 `max`a'*Q(s',a')* 定義(最大值基於狀態 *s'* 下的所有可能動作 *a'*)。 -## 檢查政策 +這樣我們得到對動作 *a* 在狀態 *s* 的 Q-表計算公式,即為以下 貝爾曼方程式: -由於 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. 更新總回饋並降低 α。 + +## 利用與探索 + +在以上演算法中,我們沒指定如何在步驟 2.1 選擇動作。若隨機選擇動作,會探索環境,也可能經常死亡並進入不常去的區域。另一種策略是利用既有的 Q-表數值,總是選擇狀態 *s* 下 Q 值最高的動作。但這會阻止探勘其它狀態,可能無法找到最佳解。 + +因此最佳方式是在探索與利用間取得平衡。這可作為以 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` 以避免初期向量成分完全一樣時的除零錯誤。 + +執行 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 上「指向」彼此,導致代理無限地在這些狀態之間移動。 + +> 如果你嘗試執行上面的程式碼好幾次,你可能會注意到有時它會「卡住」,這時你需要按下筆記本中的停止按鈕以中斷它。這是因為可能出現兩個狀態在最佳 Q-值的意義上「互相指向」的情況,在這種情況下,代理會不斷在那兩個狀態之間移動而無限循環。 ## 🚀挑戰 -> **任務 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,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/) -## 作業 -[更真實的世界](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