diff --git a/translations/km/.co-op-translator.json b/translations/km/.co-op-translator.json
index 019a22962..ae2dc36ff 100644
--- a/translations/km/.co-op-translator.json
+++ b/translations/km/.co-op-translator.json
@@ -36,8 +36,8 @@
"language_code": "km"
},
"1-Introduction/4-techniques-of-ML/README.md": {
- "original_hash": "9d91f3af3758fdd4569fb410575995ef",
- "translation_date": "2026-04-06T18:16:52+00:00",
+ "original_hash": "84b1715a6be62ef1697351dcc5d7b567",
+ "translation_date": "2026-04-26T19:38:59+00:00",
"source_file": "1-Introduction/4-techniques-of-ML/README.md",
"language_code": "km"
},
@@ -120,8 +120,8 @@
"language_code": "km"
},
"2-Regression/3-Linear/README.md": {
- "original_hash": "26c53a922f1f1e8542b0ea41ff52221a",
- "translation_date": "2026-04-20T18:00:58+00:00",
+ "original_hash": "8b776e731c35b171d316d01d0e7b1369",
+ "translation_date": "2026-04-26T19:38:14+00:00",
"source_file": "2-Regression/3-Linear/README.md",
"language_code": "km"
},
@@ -150,8 +150,8 @@
"language_code": "km"
},
"2-Regression/3-Linear/solution/notebook.ipynb": {
- "original_hash": "d77bd89ae7e79780c68c58bab91f13f8",
- "translation_date": "2026-04-06T19:06:48+00:00",
+ "original_hash": "6781223ffbe8cfdaa38d0200f08e1288",
+ "translation_date": "2026-04-26T19:37:05+00:00",
"source_file": "2-Regression/3-Linear/solution/notebook.ipynb",
"language_code": "km"
},
diff --git a/translations/km/1-Introduction/4-techniques-of-ML/README.md b/translations/km/1-Introduction/4-techniques-of-ML/README.md
index e324bf4c0..02fc98b98 100644
--- a/translations/km/1-Introduction/4-techniques-of-ML/README.md
+++ b/translations/km/1-Introduction/4-techniques-of-ML/README.md
@@ -1,125 +1,127 @@
# បច្ចេកទេសនៃការរៀនម៉ាស៊ីន
-ដំណើរការនៃការបង្កើត ប្រើប្រាស់ និងថែទាំម៉ូដែលការរៀនម៉ាស៊ីន និងទិន្នន័យដែលពួកវា ប្រើប្រាស់ គឺជាប្រភេទដំណើរការផ្សេងពីច្រើនដំណើរការអភិវឌ្ឍន៍ផ្សេងទៀត។ ក្នុងមេរៀននេះ យើងនឹងបំបែកអាថ៍កំបាំងនៃដំណើរការនេះ ហើយលើកសញ្ញាផ្នែកបច្ចេកទេសសំខាន់ៗដែលអ្នកត្រូវដឹង។ អ្នកនឹង៖
+ដំណើរការនៃការសាងសង់ ការប្រើប្រាស់ និងការថែរក្សាគំរូរៀនម៉ាស៊ីន និងទិន្នន័យដែលពួកវាប្រើ គឺជាដំណើរការផ្សេងលើសពីវឌ្ឍនកម្មផ្សេងទៀតជាច្រើន។ នៅក្នុងមេរៀននេះ យើងអាចអះអាងពីដំណើរការនេះ និងរៀបរាប់បច្ចេកទេសសំខាន់ៗដែលអ្នកត្រូវយល់ដឹង។ អ្នកនឹង៖
-- យល់ដឹងអំពីដំណើរការដែលគាំទ្រ ក្រោមកម្រិតខ្ពស់នៃការរៀនម៉ាស៊ីន។
-- សិក្សាពីគំនិតមូលដ្ឋានដូចជា 'ម៉ូដែល' 'ការព្យាករណ៍' និង 'ទិន្នន័យបណ្តុះបណ្តាល'។
+- យល់ដឹងពីដំណើរការដែលគាំទ្រដល់ការរៀនម៉ាស៊ីននៅកម្រិតខ្ពស់។
+- ស្វែងយល់អំពីគំនិតមូលដ្ឋានដូចជា 'គំរូ', 'ការព្យាករណ៍' និង 'ទិន្នន័យបណ្តុះបណ្តាល'។
-## [សំនួរត្រួតពិនិត្យមុនមេរៀន](https://ff-quizzes.netlify.app/en/ml/)
+## [ប្រលងមុនមេរៀន](https://ff-quizzes.netlify.app/en/ml/)
[](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning")
-> 🎥 ចុចរូបភាពខាងលើសម្រាប់វីដេអូខ្លីមួយនៃការប្រតិបត្តិមេរៀននេះ។
+> 🎥 ចុចរូបភាពខាងលើសម្រាប់វីដេអូខ្លីមួយអំពីការងារក្នុងមេរៀននេះ។
-## ការណែនាំ
+## បទដំបូន្មាន
-នៅកម្រិតខ្ពស់ សិប្បកម្មនៃការបង្កើតដំណើរការរៀនម៉ាស៊ីន (ML) ត្រូវបានបង្កប់ដោយជំហានច្រើន៖
+នៅកម្រិតខ្ពស់ សិល្បៈនៃការបង្កើតដំណើរការរៀនម៉ាស៊ីន (ML) មានជំហានជាច្រើន៖
-1. **សម្រេចចិត្តលើសំណួរ**។ ដំណើរការរៀនម៉ាស៊ីនភាគច្រើនចាប់ផ្តើមដើមដោយការសួរសំណួរដែលមិនអាចឆ្លើយតបដោយកម្មវិធីមានលក្ខខណ្ឌឬប្រព័ន្ធច្បាប់មួយ។ សំណួរទាំងនេះភាគច្រើនមានទំនាក់ទំនងនឹងការព្យាករណ៍ដែលផ្អែកលើយោគន័យទិន្នន័យមួយ។
-2. **រក្សាទិន្នន័យ និងរៀបចំទិន្នន័យ**។ ដើម្បីឆ្លើយសំណួររបស់អ្នក អ្នកត្រូវការទិន្នន័យ។ គុណភាព និងពេលខ្លះ បរិមាណទិន្នន័យរបស់អ្នកនឹងកំណត់ថាតើអ្នកអាចឆ្លើយសំណួរដើមបានល្អប៉ុណ្ណា។ ការមើលឃើញទិន្នន័យជារូបភាពគឺជាផ្នែកសំខាន់នៃជំហាននេះ។ ជំហាននេះរួមមានការបែងចែកទិន្នន័យទៅក្រុមបណ្តុះបណ្តាល និងតេស្ត ដើម្បីបង្កើតម៉ូដែល។
-3. **ជ្រើសរើសវិធីសាស្ត្របណ្តុះបណ្តាល**។ អាស្រ័យលើសំណួររបស់អ្នក និងធម្មជាតិទិន្នន័យ អ្នកត្រូវជ្រើសរើសរបៀបដែលអ្នកចង់បណ្តុះបណ្តាលម៉ូដែល ដើម្បីប្រតិបត្តិរូបភាពទិន្នន័យរបស់អ្នកឱ្យបានល្អបំផុត និងធ្វើការព្យាករណ៍បានត្រឹមត្រូវ។ នេះជាផ្នែកនៃដំណើរការរៀនម៉ាស៊ីនដែលទាមទារជំនាញជាក់លាក់ និងជាផ្នែកច្រើននៃការសាកល្បងយ៉ាងច្រើន។
-4. **បណ្តុះបណ្តាលម៉ូដែល**។ ប្រើប្រាស់ទិន្នន័យបណ្តុះបណ្តាលរបស់អ្នក អ្នកនឹងប្រើលេខាធិការកម្មវិធីនានាដើម្បីបណ្តុះបណ្តាលម៉ូដែល ដើម្បីស្គាល់លំនាំក្នុងទិន្នន័យ។ ម៉ូដែលអាចប្រើប្រាស់ទំងន់ផ្ទៃក្នុងដែលអាចប្តូរបាន ដើម្បីផ្តល់តម្លៃល្អជាងសម្រាប់ផ្នែកជាក់លាក់នៃទិន្នន័យ ដោយមានគោលបំណងបង្កើតម៉ូដែលល្អប្រសើរជាងមុន។
-5. **វាយតម្លៃម៉ូដែល**។ អ្នកប្រើទិន្នន័យដែលមិនដែលបានមើលមុន (ទិន្នន័យតេស្ត) ពីប្រភពទិន្នន័យដែលបានប្រមូល ដើម្បីមើលម៉ូដែលបញ្ចេញសមិទ្ធផលយ៉ាងដូចម្តេច។
-6. **កែតម្រូវប៉ារ៉ាម៉ែត្រ**។ យោងទៅលើសមត្ថភាពរបស់ម៉ូដែល អ្នកអាចធ្វើពន្លឿនដំណើរការឡើងវិញដោយប្រើប៉ារ៉ាម៉ែត្រ ឬអថេរដែលគ្រប់គ្រងអវកាសនៃលេខាធិការ ដែលបានប្រើបណ្តុះបណ្តាលម៉ូដែល។
-7. **ព្យាករណ៍**។ ប្រើបញ្ចូលថ្មីដើម្បីសាកល្បងភាពត្រឹមត្រូវរបស់ម៉ូដែលអ្នក។
+1. **សម្រេចចិត្តលើសំណួរ**។ ដំណើរការរៀនម៉ាស៊ីនភាគច្រើនចាប់ផ្តើមដោយសំណួរដែលមិនអាចឆ្លើយបានដោយកម្មវិធីលក្ខខណ្ឌឬវិស្វកម្មបែបច្បាប់។ សំណួរទាំងនេះវិលជុំជារឿងការព្យាករណ៍បន្ទាប់ពីមានការប្រមូលទិន្នន័យមួយ។
+2. **ប្រមូល និងរៀបចំទិន្នន័យ**។ ដើម្បីឆ្លើយសំណួររបស់អ្នក អ្នកត្រូវការទិន្នន័យ។ គុណភាព និងមុខងាររបស់ទិន្នន័យ រឺបរិមាណវា នឹងកំណត់ថាអ្នកអាចឆ្លើយសំណួរដំបូងបានល្អប៉ុណ្ណា។ ការបង្ហាញទិន្នន័យជារូបភាពគឺជាជំហានសំខាន់មួយនៅដំណាក់កាលនេះ។ ជំហាននេះរួមមានការបំបែកទិន្នន័យជាក្រុមបណ្តុះបណ្តាល និងសាកល្បងសម្រាប់បង្កើតគំរូ។
+3. **ជ្រើសរើសវិធីសាស្រ្តបណ្តុះបណ្តាល**។ អាស្រ័យលើសំណួររបស់អ្នក និងធម្មជាតិនៃទិន្នន័យ អ្នកត្រូវជ្រើសរើសរបៀបបណ្តុះបណ្តាលគំរូឲ្យសម្រួល និងបង្ហាញការព្យាករណ៍បានត្រឹមត្រូវ។ នេះជាផ្នែកដែលត្រូវការជំនាញពិសេស និងភាគច្រើនតម្រូវឲ្យមានការប្រកាសតេស្តជាច្រើន។
+4. **បណ្តុះបណ្តាលគំរូ**។ ប្រើទិន្នន័យបណ្តុះបណ្តាល អ្នកនឹងប្រើអាល់ហ្គូនិចផ្សេងៗដើម្បីបណ្តុះបណ្តាលគំរូឲ្យស្គាល់លំនាំនៅក្នុងទិន្នន័យ។ គំរូអាចប្រើទំងន់ផ្ទៃក្នុងដែលអាចកែប្រែដើម្បីផ្តល់អាទិភាពចំពោះផ្នែកជាក់លាក់នៃទិន្នន័យសម្រាប់បង្កើតគំរូល្អជាងមុន។
+5. **វាយតម្លៃគំរូ**។ អ្នកប្រើទិន្នន័យមិនដែលឃើញមុន (ទិន្នន័យសាកល្បង) ពីក្រុមទិន្នន័យដែលបានប្រមូលដើម្បីពិនិត្យមើលថាគំរូបង្ហាញការប្រតិបត្តិការយ៉ាងដូចម្តេច។
+6. **កំណត់ប៉ារ៉ាម៉ែត្រ**។ អាស្រ័យលើការប្រតិបត្តិរបស់គំរូ អ្នកអាចធ្វើវិធីវិញដោយប្រើប៉ារ៉ាម៉ែត្រ ឬអថេរ ផ្លាស់ប្តូរយ៉ាងមួយដែលគ្រប់គ្រងការប្រតិបត្តិនៃអាល់ហ្គូរីធម៍សម្រាប់បណ្តុះបណ្តាលគំរូ។
+7. **ការព្យាករណ៍**។ ប្រើinputថ្មីៗសម្រាប់សាកល្បងភាពត្រឹមត្រូវនៃគំរូរបស់អ្នក។
-## តើត្រូវសួរសំណួរអ្វី
+## ត្រូវសួរសំណួរអ្វី
-កុំព្យូទ័រមានជំនាញពិសេសក្នុងការរកឃើញលំនាំលាក់ក្នុងទិន្នន័យ។ អត្ថប្រយោជន៍នេះមានប្រយោជន៍សម្រាប់អ្នកស្រាវជ្រាវដែលមានសំណួរអំពីដែនដីមួយដែលមិនអាចឆ្លើយបានងាយដោយបង្កើតប្រព័ន្ធកំណត់លក្ខខ័ណ្ឌបែបច្បាប់។ ឧទាហរណ៍ ក្នុងភារកិច្ចអាគុយស្ត្រី ព័ត៌មានវិទ្យាទិន្នន័យថែមតម្រូវអាចបង្កើតច្បាប់ដូចគេច្នៃប្រឌិតអំពីភាពស្លាប់របស់អ្នកបារីប្រៀបធៀបនឹងអ្នកមិនបារី។
+កុំព្យូទ័រមានជំនាញពិសេសក្នុងការរកឃើញលំនាំលាក់នៅក្នុងទិន្នន័យ។ ប្រយោជន៍នេះមានសារៈសំខាន់សម្រាប់អ្នកស្រាវជ្រាវដែលមានសំណួរអំពីដែនកំណត់មួយដែលមិនអាចឆ្លើយបានដោយបង្កើតវិស្វកម្មច្បាប់លក្ខខណ្ឌឧបត្ថម្ភ។
-យ៉ាងไรก็ตามពេលបញ្ចូលអថេរច្រើនផ្សេងទៀតចូលក្នុងសមីការ ម៉ូដែល ML អាចមានប្រសិទ្ធភាពជាងក្នុងការព្យាករណ៍អត្រាស្លាប់អនាគតដោយផ្អែកលើប្រវត្តិសុខភាពចាស់ៗ។ ឧទាហរណ៍មួយដែលរីករាយជាងគេអាចជាការធ្វើការព្យាករណ៍អាកាសធាតុសម្រាប់ខែមេសា ក្នុងទីតាំងណាមួយដោយផ្អែកលើទិន្នន័យដែលរួមមានទិសដៅអាកាសធាតុ អំពីជាន់ទីតាំង, ផ្លាស់ប្តូរអាកាសធាតុ, ភាពជិតសមុទ្រ, លំនាំឯកសារចរណ៍ខ្យល់ និងច្រើនទៀត។
+ឧទាហរណ៍ក្នុងដំណោះស្រាយអចលនវាយនភណ្ឌ អ្នកវិទ្យាសាស្ត្រទិន្នន័យអាចបង្កើតច្បាប់ដេរដោយដៃអំពីអត្រាស្លាប់របស់អ្នកជក់បារីដោយប្រៀបធៀបនឹងអ្នកមិនជក់បារី។
-✅ ស្លាយឯកសារនេះ [slide deck](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) ពីម៉ូដែលអាកាសធាតុផ្ដល់ចំណុចមើលប្រវត្តិវិទ្យាសម្រាប់ការប្រើ ML ក្នុងការវិភាគអាកាសធាតុ។
+ពេលដែលអថេរច្រើនផ្សេងទៀតត្រូវបានដាក់ចូលក្នុងសមីការនោះ គំរូ ML អាចបង្ហាញបានប្រសើរជាងក្នុងការព្យាករណ៍អត្រាស្លាប់អនាគតដោយផ្អែកលើប្រវត្តិរឿងសុខភាពកន្លងមក។ ឧទាហរណ៍សប្បាយរីករាយជាងគឺការព្យាករណ៍អាកាសធាតុនៃខែមេសានៅទីតាំងណាមួយ ដោយផ្អែកលើទិន្នន័យរួមបញ្ចូលខ្សែរយៈទទឹង, បណ្តោយ, ប្រែប្រួលអាកាសធាតុ, ការរីកជិតសមុទ្រ, រលកភ្លៀងធំ, និងផ្សេងៗទៀត។
-## ភារកិច្ចមុនការបង្កើត
+✅ ស្លាយនេះ [slide deck](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) អំពីគំរូអាកាសធាតុផ្តល់ទស្សនៈប្រវត្តិសាស្ត្រក្នុងការប្រើប្រាស់ ML ក្នុងវិភាគអាកាសធាតុ។
-មុននឹងចាប់ផ្តើមបង្កើតម៉ូដែលរបស់អ្នក មានភារកិច្ចជាច្រើនដែលអ្នកត្រូវបញ្ចប់។ ដើម្បីសាកល្បងសំណួររបស់អ្នក និងបង្កើតសំនឹមយោងតាមការព្យាករណ៍របស់ម៉ូដែល អ្នកត្រូវកំណត់ និងកំណត់រចនាសម្ព័ន្ធធាតុជាច្រើន។
+## ការងារមុនសង់គំរូ
+
+មុនចាប់ផ្តើមសាងសង់គំរូរបស់អ្នក មានបំណងការងារច្រើនដែលអ្នកត្រូវបញ្ចប់។ ដើម្បីសាកល្បងសំណួររបស់អ្នក និងបង្កើតទ្រឹស្តីលើការព្យាករណ៍នៃគំរូ អ្នកត្រូវកំណត់ និងកំណត់រចនាសម្ព័ន្ធធាតុខ្លះៗ។
### ទិន្នន័យ
-ដើម្បីឆ្លើយសំណួររបស់អ្នកដោយប្រាកដ អ្នកត្រូវការទិន្នន័យច្រើនមានប្រភេទត្រឹមត្រូវ។ មានពីររឿងដែលអ្នកត្រូវធ្វើនៅឆ្នាំនេះ៖
+ដើម្បីឆ្លើយសំណួររបស់អ្នកដោយមានភាពច្បាស់លាស់ អ្នកត្រូវមានទិន្នន័យចំនួនមួយដែលមានប្រភេទត្រឹមត្រូវ។ មានរឿងពីរអ្វីដែល អ្នកត្រូវធ្វើនៅពេលនេះ៖
-- **ប្រមូលទិន្នន័យ**។ ការចងចាំមេរៀនមុនអំពីកិច្ចភាពយុត្តិធម៌ក្នុងការវិភាគទិន្នន័យ ចូរប្រមូលទិន្នន័យដោយប្រុងប្រយត្ន៍។ ត្រូវយល់ដឹងពីប្រភពទិន្នន័យនេះ ការបង្វិលបម្រែបម្រួលរបស់វា និងចុះបញ្ជីប្រភពដើម។
-- **រៀបចំទិន្នន័យ**។ មានជំហានជាច្រើនក្នុងដំណើរការរៀបចំទិន្នន័យ។ អ្នកអាចត្រូវដាក់ទិន្នន័យជាបន្ទាត់ និង normalize វាបើវាមកពីប្រភពផ្សេងៗ។ អ្នកអាចបង្កើនគុណភាព និងបរិមាណទិន្នន័យតាមវិធីផ្សេងៗ ដូចជាការបម្លែងខ្សែអក្សរទៅជាចំនួន (ដូចដែលយើងធ្វើក្នុង [Clustering](../../5-Clustering/1-Visualize/README.md))។ អ្នកអាចបង្កើតទិន្នន័យថ្មីពីមួលដើមបាន (ដូចដែលយើងធ្វើក្នុង [Classification](../../4-Classification/1-Introduction/README.md))។ អ្នកអាចសំអាតនិងកែប្រែទិន្នន័យ (ដូចដែលយើងនឹងធ្វើមុនមេរៀន [Web App](../../3-Web-App/README.md))។ បន្ថែមពីនេះ អ្នកអាចត្រូវ randomized និង shuffle វា តាមវិធីសាស្រ្តបណ្តុះបណ្តាលរបស់អ្នក។
+- **ប្រមូលទិន្នន័យ**។ ពោលពាក្យបន្ទាប់ពីមេរៀនមុនអំពីក្របខ័ណ្ឌនៃភាពមិនមានភាពធានាគូប្រជែង ក្នុងការវិភាគទិន្នន័យ ចូរប្រមូលទិន្នន័យរបស់អ្នកយ៉ាងប្រុងប្រយ័ត្ន។ ចាំបាច់ត្រូវយល់ពីប្រភពទិន្នន័យ នឹងអំពើលើកលែងពាក់ព័ន្ធលើវា និងសរសេរមកដើមវា។
+- **រៀបចំទិន្នន័យ**។ មានបញ្ហាច្រើនក្នុងដំណើរការរៀបចំទិន្នន័យ។ អ្នកអាចត្រូវប្រមូលផ្តុំទិន្នន័យ និងធ្វើការធម្មតាប្រសិនបើវាដាច់គ្នាពីប្រភពផ្សេងៗគ្នា។ អ្នកអាចបង្កើនគុណភាព និងបរិមាណទិន្នន័យដោយវិធីជាច្រើនដូចជាការបម្លែងអក្សរទៅជាលេខ (ដូចនៅក្នុង [Clustering](../../5-Clustering/1-Visualize/README.md))។ អ្នកអាចបង្កើតទិន្នន័យថ្មីពីទិន្នន័យដើម (ដូចនៅក្នុង [Classification](../../4-Classification/1-Introduction/README.md))។ អ្នកអាចសម្អាត និងកែសម្រួលទិន្នន័យ (ដូចដែលយើងនឹងធ្វើមុនមេរៀន [Web App](../../3-Web-App/README.md))។ យ៉ាងបញ្ចប់ អ្នកអាចត្រូវការតម្រៀបចៃដន្យ និងបម្លែងវា ដោយអាស្រ័យលើបច្ចេកទេសបណ្តុះបណ្តាលរបស់អ្នក។
-✅ បន្ទាប់ពីប្រមូល និងដំណើរការទិន្នន័យរបស់អ្នក សូមចំណាយពេលមើលថាទម្រង់របស់វា អាចឱ្យអ្នកដោះស្រាយសំណួរត្រូវបានមែនទេ។ អាចជាករណីដែលទិន្នន័យមិនអាចធ្វើបានល្អក្នុងភារកិច្ចរបស់អ្នក ដូចដែលយើងបានរកឃើញក្នុងមេរៀន [Clustering](../../5-Clustering/1-Visualize/README.md)។
+✅ បន្ទាប់ពីប្រមូល និងដំណើរការទិន្នន័យរួច សូមចំណាយពេលមួយសម្រាប់ពិនិត្យមើលថារូបរាងទិន្នន័យនឹងអាចបញ្ចេញចម្លើយសំណួររបស់អ្នកបានរឺទេ។ ប្រហែលជាទិន្នន័យមិនអាចដំណើរការបានល្អសម្រាប់កិច្ចការដែលអ្នកដាក់ជាក់លាក់ ដូចដែលយើងបានរកឃើញនៅក្នុងមេរៀន [Clustering](../../5-Clustering/1-Visualize/README.md)។
-### លក្ខណៈពិសេស និងគោលដៅ
+### លក្ខណៈ និងគោលដៅ
-[លក្ខណៈពិសេស](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) គឺជាសម្បត្តិនៃទិន្នន័យដែលអាចវាស់បាន។ នៅក្នុងតារាងទិន្នន័យជាច្រើនវាត្រូវបានបង្ហាញជាថ្មើរឈ្មោះជួរដេកដូចជា 'កាលបរិច្ឆេទ' 'ទំហំ' ឬ 'ពណ៌'។ អថេរលក្ខណៈពិសេសរបស់អ្នក ដែលភាគច្រើនតំណាងដោយ `X` នៅក្នុងកូដ តំណាងឱ្យអថេរបញ្ចូលដែលនឹងត្រូវប្រើសម្រាប់បណ្តុះបណ្តាលម៉ូដែល។
+[លក្ខណៈ](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) គឺជាគុណលក្ខណៈដែលអាចវាស់បាននៃទិន្នន័យរបស់អ្នក។ ក្នុងមុខងារទិន្នន័យជាច្រើន វាត្រូវបានបង្ហាញនៅជាភាសាស៊ុមថា 'ថ្ងៃ' 'ទំហំ' ឬ 'ពណ៌'។ អថេរលក្ខណៈរបស់អ្នក ធ្វើតំណាងជាទូទៅជា `X` ក្នុងកូដ ដែលជាការបញ្ចូលដែលនៅក្នុងការបណ្តុះបណ្តាលគំរូ។
-គោលដៅគឺជារឿងដែលអ្នកកំពុងព្យាករណ៍។ គោលដៅត្រូវបានតំណាងជាធម្មតា `y` នៅក្នុងកូដ ដើម្បីបង្ហាញចំលើយចំពោះសំណួរដែលអ្នកកំពុងសួរអំពីទិន្នន័យ៖ នៅខែធ្នូ ការពណ៌អំពៅណាដែលមានតម្លៃទាបបំផុត? នៅទីក្រុង San Francisco តំបន់ណាដែលមានតម្លៃអចលនទ្រព្យល្អបំផុត? ពេលខ្លះគោលដៅត្រូវបានហៅថា 'label attribute' ផងដែរ។
+គោលដៅគឺជារឿងដែលអ្នកកំពុងព្យាករ។ គោលដៅ ធ្វើតំណាងជា `y` នៅក្នុងកូដ ដែលជាចម្លើយសម្រាប់សំណួរដែលអ្នកកំពុងសួរពីទិន្នន័យ៖ ក្នុងខែធ្នូ តើ **ពណ៌** ទំពាំងបាយជ្រលក់ណាដែលថោកជាងគេ? នៅសានហ្វ្រង់ស៊ីស្កូ តើតំបន់ណាដែលមាន **តម្លៃ**អចលនទ្រព្យល្អបំផុត? ម្តងម្កាល គោលដៅក៏ត្រូវបានហៅថាជាលេខសម្គាល់។
-### ជ្រើសរើសអថេរលក្ខណៈពិសេសរបស់អ្នក
+### ជ្រើសរើសអថេរលក្ខណៈរបស់អ្នក
-🎓 **ការជ្រើសរើសលក្ខណៈពិសេស និងការបញ្ចេញលក្ខណៈពិសេស** តើធ្លាប់ដឹងរបៀបជ្រើសអថេរណាមួយក្នុងការបង្កើតម៉ូដែលរបស់អ្នក? ប្រហែលជាអ្នកនឹងត្រូវប្រើវិធីសាស្ត្រជ្រើសរើសលក្ខណៈពិសេស ឬបញ្ចេញលក្ខណៈពិសេស ដើម្បីជ្រើសអថេរដែលត្រឹមត្រូវសម្រាប់ម៉ូដែលមានសមត្ថភាពខ្ពស់បំផុត។ ទាំងពីរបានខុសគ្នា៖ "ការបញ្ចេញលក្ខណៈពិសេសបង្កើតលក្ខណៈថ្មីពីមុខងាររបស់លក្ខណៈដើម ខណៈពេលការជ្រើសរើសលក្ខណៈពិសេសបង្វិលបញ្ចេញជាសំណុំពីលក្ខណៈសញ្ញា" ([ប្រភព](https://wikipedia.org/wiki/Feature_selection))
+🎓 **ការជ្រើសរើសលក្ខណៈ និងការដកស្រង់លក្ខណៈ** តើយើងដឹងយ៉ាងដូចម្តេចថាអថេរណាមួយដែលគួរជ្រើសចាប់ផ្តើមនៅពេលសាងសង់គំរូ? អ្នកប្រហែលជាត្រូវធ្វើដំណើរការជ្រើសរើសលក្ខណៈឬដកស្រង់លក្ខណៈដើម្បីជ្រើសយកអថេរដែលត្រឹមត្រូវសម្រាប់គំរូមានប្រសិទ្ធភាពបំផុត។ ទាំងពីរមានភាពខុសគ្នា៖ "ការដកស្រង់លក្ខណៈបង្កើតលក្ខណៈថ្មីពីមុខងារនៃលក្ខណៈដើម ខណៈដែលការជ្រើសរើសលក្ខណៈសង្ស័យតែផ្នែកមួយនៃលក្ខណៈទាំងមូល។" ([ប្រភព](https://wikipedia.org/wiki/Feature_selection))
-### មើលឃើញទិន្នន័យរបស់អ្នក
+### សម្រង់ទិន្នន័យរបស់អ្នកជារូបភាព
-ផ្នែកសំខាន់មួយនៃឧបករណ៍អ្នកវិទ្យាសាស្ត្រទិន្នន័យគឺមានសមត្ថភាពក្នុងការមើលឃើញទិន្នន័យ ដោយប្រើបណ្ណាល័យល្អៗជាច្រើនដូចជា Seaborn ឬ MatPlotLib។ ការតំណាងទិន្នន័យជារូបភាព អាចអនុញ្ញាតឱ្យអ្នករកឃើញទំនាក់ទំនងលាក់ៗដែលអាចប្រើប្រាស់បាន។ ការមើលឃើញរបស់អ្នកអាចជួយរកឃើញការបង្វិលបម្រែបម្រួល ឬទិន្នន័យមិនត្រូវតម្រូវ (ដូចដែលយើងរកឃើញក្នុង [Classification](../../4-Classification/2-Classifiers-1/README.md))។
+មុខងារសំខាន់មួយរបស់ឧបករណ៍អ្នកវិទ្យាសាស្ត្រទិន្នន័យគឺថាមពលក្នុងការបង្ហាញទិន្នន័យជារូបភាពដោយប្រើបណ្ណាល័យល្អៗមួយចំនួនដូចជា Seaborn ឬ MatPlotLib។ ការផ្តល់តំណាងទិន្នន័យជារូបភាព នឹងអាចឲ្យអ្នកបង្កើតរួមគ្នាបានលំណាំដែលលាក់មិនឲ្យឃើញដែលអ្នកអាចយកប្រយោជន៍បាន។ ការបង្ហាញនេះក៏អាចជួយអ្នករកឃើញការមានទោស ឬទិន្នន័យមិនសមស្មើនឹង (ដូចដែលយើងបានរកឃើញនៅក្នុង [Classification](../../4-Classification/2-Classifiers-1/README.md))។
-### បែងចែកឈុតទិន្នន័យរបស់អ្នក
+### បំបែកឧទ្ឋរណ៍ទិន្នន័យរបស់អ្នក
-មុនបណ្តុះបណ្តាល អ្នកត្រូវបែងចែកឈុតទិន្នន័យទៅជាផ្នែកពីរឬច្រើនដែលមានទំហំមិនស្មើគ្នា តែក៏តំណាងឱ្យទិន្នន័យបានល្អ។
+មុនចាប់ផ្តើមបណ្តុះបណ្តាល អ្នកត្រូវបំបែកឧទ្ឋរណ៍ទិន្នន័យរបស់អ្នកជាពីរឬច្រើនផ្នែកដែលមានទំហំមិនស្មើគ្នានោះទេ ប៉ុន្តែត្រូវតំណាងឲ្យទិន្នន័យបានល្អ។
-- **បណ្តុះបណ្តាល**។ ផ្នែកនេះនៃឈុតទិន្នន័យត្រូវបានប្រើសម្រាប់បណ្តុះបណ្តាលម៉ូដែល។ ជាឈុតធំជាងគេនៃឈុតទិន្នន័យដើម។
-- **តេស្ត**។ ឈុតទិន្នន័យតេស្តគឺជាក្រុមទិន្នន័យឯករាជ្យ ដែលភាគច្រើនបានប្រមូលពីទិន្នន័យដើម ត្រូវបានប្រើប្រាស់សម្រាប់ផ្ទៀងផ្ទាត់សមត្ថភាពម៉ូដែលដែលបានបង្កើត។
-- **ផ្ទៀងផ្ទាត់**។ ឈុតផ្ទៀងផ្ទាត់គឺជាក្រុមតូចជាង នៃគំរូឯករាជ្យ ដែលអ្នកប្រើដើម្បីកែតម្រូវអាជ្ញាប័ណ្ណ hyperparameters ឬរចនាសម្ព័ន្ធម៉ូដែល ដើម្បីធ្វើឱ្យម៉ូដែលកាន់តែប្រសើរ។ អាស្រ័យទៅលើទំហំទិន្នន័យ និងសំណួររបស់អ្នក អ្នកអាចមិនត្រូវការបង្កើតឈុតទីបីនេះទេ (ដូចដែលយើងកត់សម្គាល់ក្នុង [ការព្យាករណ៍លំដាប់ពេលវេលា](../../7-TimeSeries/1-Introduction/README.md))។
+- **បណ្តុះបណ្តាល**។ ផ្នែកនេះនៃឧទ្ឋរណ៍ទិន្នន័យត្រូវបានឆមាសទៅគំរូរបស់អ្នកសម្រាប់បណ្តុះបណ្តាល។ សំណុំទិន្នន័យនេះមានភាគច្រើននៃទិន្នន័យដើម។
+- **សាកល្បង**។ សំណុំទិន្នន័យសាកល្បងគឺជាក្រុមដាច់ដោយឡែកនៃទិន្នន័យ ដែលភាគច្រើនត្រូវបានប្រមូលពីទិន្នន័យដើម ដែលអ្នកប្រើសម្រាប់បញ្ជាក់ពីភាពប្រតិបត្តិការនៃគំរូដែលបានបង្កើត។
+- **ផ្ទៀងផ្ទាត់**។ សំណុំផ្ទៀងផ្ទាត់គឺជាក្រុមតូចមួយនៃឧទ្ឋរណ៍ដោយឯករាជ្យ ដែលអ្នកប្រើសម្រាប់កែតម្រូវប៉ារ៉ាម៉ែត្រវិសាលភាព, ឬរចនាសម្ព័ន្ធ, ដើម្បីធ្វើឲ្យគំរូប្រសើរឡើង។ អាស្រ័យលើទំហំទិន្នន័យនិងសំណួររបស់អ្នក អ្នកអាចមិនចាំបាច់បង្កើតសំណុំទីបីនេះទេ (ដូចដែលយើងបានកំណត់នៅក្នុង [Time Series Forecasting](../../7-TimeSeries/1-Introduction/README.md))។
-## ការបង្កើតម៉ូដែល
+## សាងសង់គំរូ
-ប្រើអថេរគំរប់បណ្តុះបណ្តាលរបស់អ្នក គោលបំណងរបស់អ្នកគឺបង្កើតម៉ូដែល ឬតំណាងស្ថិតិរបស់ទិន្នន័យ ដោយប្រើលេខាធិការកម្មវិធីនានាដើម្បី **បណ្តុះបណ្តាល** វា។ ការបណ្តុះបណ្តាលម៉ូដែលអនុញ្ញាតឱ្យវាត្រូវបានបង្ហាញទៅកាន់ទិន្នន័យ និងធ្វើការទាយពីលំនាំដែលវារកឃើញ បញ្ជាក់ និងទទួលយកឬបដិសេធ។
+ប្រើទិន្នន័យបណ្តុះបណ្តាលរបស់អ្នក គោលបំណងរបស់អ្នកគឺសាងសង់គំរូ ឬតំណាងស្ថិតិមួយនៃទិន្នន័យដោយប្រើអាល់ហ្គូរីធម៍ផ្សេងៗដើម្បី **បណ្តុះបណ្តាល** វា។ ការបណ្តុះបណ្តាលគំរូធ្វើឲ្យវាបានស្គាល់ទិន្នន័យ ហើយអនុញ្ញាតឲ្យវាធ្វើការសន្មតពីលំនាំដែលវាពិចារណា បានផ្ទៀងផ្ទាត់ និងទទួលយក ឬបដិសេធ។
-### សម្រេចចិត្តលើវិធីសាស្ត្របណ្តុះបណ្តាល
+### សម្រេចលើវិធីបណ្តុះបណ្តាល
-អាស្រ័យលើសំណួរ និងធម្មជាតិនៃទិន្នន័យ អ្នកនឹងជ្រើសរើសវិធីសាស្ត្រមួយសម្រាប់បណ្តុះបណ្តាលវា។ ដំណើរឆ្លងកាត់ [ឯកសាររបស់ Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - ដែលយើងប្រើនៅក្នុងវគ្គសិក្សានេះ - អ្នកអាចស្វែងយល់ពីវិធីជាច្រើនក្នុងការបណ្តុះបណ្តាលម៉ូដែល។ អាស្រ័យលើបទពិសោធន៍របស់អ្នក អ្នកអាចត្រូវមានការសាកល្បងវិធីផ្សេងៗជាច្រើន ដោយករណីជាក់លាក់ក្រុមអ្នកវិទ្យាសាស្ត្រទិន្នន័យវាយតម្លៃសមត្ថភាពម៉ូដែល ដោយផ្តល់ទិន្នន័យមិនដែលបានមើល មើលភាពត្រឹមត្រូវ ការបង្វិលបម្រែបម្រួល និងបញ្ហាគុណភាពផ្សេងទៀត ហើយជ្រើសរើសវិធីសាស្ត្របណ្តុះបណ្តាលសមរម្យបំផុតសម្រាប់ភារកិច្ច។
+អាស្រ័យលើសំណួររបស់អ្នក និងធម្មជាតិនៃទិន្នន័យ អ្នកនឹងជ្រើសរើសវិធីសាស្ត្រមួយសម្រាប់បណ្តុះបណ្តាលវា។ ការដើរតាមឯកសាររបស់ [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) ដែលយើងប្រើនៅវគ្គនេះ អ្នកអាចស្វែងរកវិធីជាច្រើនសម្រាប់បណ្តុះបណ្តាលគំរូ។ អាស្រ័យលើបទពិសោធន៍របស់អ្នក អ្នកអាចត្រូវសាកល្បងវិធីផ្សេងៗគ្នាច្រើនដើម្បីសាងសង់គំរូល្អបំផុត។ អ្នកភាគច្រើននឹងត្រូវទៅតាមដំណើរការដែលអ្នកវិទ្យាសាស្ត្រទិន្នន័យវាយតម្លៃពីការប្រតិបត្តិរបស់គំរូ ដោយផ្តល់ទិន្ននយវអោយវាមើល ទិន្នន័យមិនដែលឃើញ មើលភាពត្រឹមត្រូវ ទំនោរបាន និងបញ្ហាផ្សេងៗដែលធ្វើឲ្យគុណភាពចុះខ្សោយ ហើយជ្រើសរើសវិធីបណ្តុះបណ្តាលសមរម្យបំផុតសម្រាប់កិច្ចការនេះ។
-### បណ្តុះបណ្តាលម៉ូដែល
+### បណ្តុះបណ្តាលគំរូ
-ជាប់ជាមួយទិន្នន័យបណ្តុះបណ្តាលរបស់អ្នក អ្នកបានរួចរាល់សម្រាប់ 'fit' វា ដើម្បីបង្កើតម៉ូដែល។ អ្នកនឹងសង្កេតឃើញថាក្នុងបណ្ណាល័យ ML ជាច្រើន អ្នកនឹងឃើញកូដ 'model.fit' - នៅពេលនេះ អ្នកផ្ញើរអថេរលក្ខណៈពិសេសជាអារេនៃតម្លៃ (ភាគច្រើនគឺ 'X') និងអថេរគោលដៅ (ភាគច្រើន 'y')។
+មានទិន្នន័យបណ្តុះបណ្តាលរបស់អ្នក អ្នករួចរាល់សម្រាប់ 'ផ្គាប់' វាដើម្បីបង្កើតគំរូ។ អ្នកនឹងសង្កេតឃើញថា នៅក្នុងបណ្ណាល័យ ML ច្រើន អ្នកនឹងឃើញកូដ 'model.fit' - នៅពេលនេះអ្នកបញ្ជូនអថេរលក្ខណៈរបស់អ្នកជាជួរប្រភេទតម្លៃ (ទូទៅជាទំព័រ 'X') និងអថេរកោលដៅ (ទូទៅជាទំព័រ 'y')។
-### វាយតម្លៃម៉ូដែល
+### វាយតម្លៃគំរូ
-ពេលដំណើរការបណ្តុះបណ្តាលបានបញ្ចប់ (វាអាចយកពេលជាច្រើន iteration ឬ 'epoch' ដើម្បីបណ្តុះម៉ូដែលធំមួយ) អ្នកអាចវាយតម្លៃគុណភាពម៉ូដែលដោយប្រើទិន្នន័យតេស្ត ដើម្បីវាស់សមត្ថភាពវា។ ទិន្នន័យនេះគឺជាផ្នែកតូចមួយនៃទិន្នន័យដើម ដែលម៉ូដែលមិនដែលវិភាគមុន។ អ្នកអាចបោះពុម្ពតារាងស្ថិតិអំពីគុណភាពម៉ូដែលរបស់អ្នក។
+បន្ទាប់ពីដំណើរការបណ្តុះបណ្តាលបានបញ្ចប់ (វាអាចប្រើពេលជាច្រើនជំហាន ឬ 'epochs' សម្រាប់បណ្តុះបណ្តាលគំរូធំ) អ្នកអាចវាយតម្លៃគុណភាពគំរូដោយប្រើទិន្នន័យសាកល្បងសម្រាប់វាស់ប្រតិបត្តិការ។ ទិន្នន័យនេះគឺជាផ្នែករងចំណែកមួយនៃទិន្នន័យដើមដែលគំរូមិនធ្លាប់វិភាគជាមុន។ អ្នកអាចបោះពុម្ពតារាងវាស់វឌ្ឍនភាពអំពីគុណភាពគំរូរបស់អ្នក។
-🎓 **ការផ្គុំម៉ូដែល**
+🎓 **ការផ្គាប់គំរូ**
-នៅបរិបទនៃការរៀនម៉ាស៊ីន ការផ្គុំម៉ូដែលមានន័យថា ភាពត្រឹមត្រូវនៃមុខងាររបស់ម៉ូដែល ពេលវាព្យាយាមវិភាជន៍ទិន្នន័យដែលវាមិនស្គាល់។
+នៅក្នុងបរិបទនៃការរៀនម៉ាស៊ីន ការផ្គាប់គំរូ មានន័យថាការត្រឹមត្រូវនៃមុខងារដែកខាងក្រោមរបស់គំរូ ខណៈវាកំពុងព្យាយាមវិភាគទិន្នន័យដែលវាមិនស្គាល់។
-🎓 **Underfitting** និង **overfitting** ជាបញ្ហាទូទៅដែលធ្វើឲ្យគុណភាពម៉ូដែលធ្លាក់ចុះ នោះហើយម៉ូដែលត្រូវបានផ្គុំបានមិនល្អគ្រប់គ្រាន់ ឬល្អពេក។ វានាំឲ្យម៉ូដែលប៉ាន់ប្រមាណពីទិន្នន័យបណ្តុះបណ្តាលបានយ៉ាងតិតទៅ ឬលំបាកពេកក្នុងការភ្ជាប់ជាមួយទិន្នន័យ។ ម៉ូដែល overfit នឹងព្យាករណ៍ទិន្នន័យបណ្តុះបណ្តាលបានល្អពេក ពីព្រោះវាបានរៀនលម្អិតនិងសំឡេងរំខានក្នុងទិន្នន័យយ៉ាងល្អ។ ម៉ូដែល underfit គឺមិនត្រឹមត្រូវ ពីព្រោះវាមិនអាចវិភាគទិន្នន័យបណ្តុះបណ្តាលឬទិន្នន័យមិនដែលបានមើលបានយ៉ាងត្រឹមត្រូវទេ។
+🎓 **Underfitting** និង **overfitting** ជាបញ្ហាទូទៅដែលធ្វើឲ្យគុណភាពគំរូធ្លាក់ចុះ ចប់សំរាប់ផ្នែកមួយដែលគំរូមិនបានផ្គាប់ល្អគ្រប់គ្រាន់ ឬផ្គាប់ល្អពេក។ វាបង្កើតឲ្យគំរូធ្វើការព្យាករណ៍ឲ្យណាស់ពេក ឬងាយលើពេកជាមួយទិន្នន័យបណ្តុះបណ្តាល។ គំរូ overfit ព្យាករណ៍ទិន្នន័យបណ្តុះបណ្តាលមានភាពត្រឹមត្រូវខ្ពស់ព្រោះវាបានរៀនលំដាប់លំដោយនិងសំឡេងរំខាននៃទិន្នន័យយ៉ាងល្អ ឯគំរូ underfit មិនត្រឹមត្រូវ ព្រោះវាមិនអាចវិភាគទិន្នន័យបណ្តុះបណ្តាលឬទិន្នន័យដែលមិនបានឃើញបានត្រឹមត្រូវទេ។

-> រូបតំណាងដោយ [Jen Looper](https://twitter.com/jenlooper)
+> រូបភាពដោយ [Jen Looper](https://twitter.com/jenlooper)
-## ការកែសម្រួលប៉ារ៉ាម៉ែត្រ
+## កំណត់ប៉ារ៉ាម៉ែត្រ
-នៅពេលដែលការបណ្តុះបណ្តាលដំបូងបានបញ្ចប់ ការសង្កេតគុណភាពម៉ូដែល និងពិចារណាកែលម្អវា ដោយកែសម្រួល 'hyperparameters' របស់វា។ អានបន្ថែមអំពីដំណើរការនេះ [ក្នុងឯកសារ](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott)។
+បន្ទាប់ពីបណ្តុះបណ្តាលដំបូងបានបញ្ចប់ សូមពិនិត្យគុណភាពគំរូ ហើយពិចារណាធ្វើឲ្យប្រសើរឡើងដោយកែប៉ារ៉ាម៉ែត្រ 'hyperparameters' របស់វា។ អានបន្ថែមអំពីដំណើរការនេះ [នៅក្នុងឯកសារ](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott)។
## ការព្យាករណ៍
-នេះគឺជាពេលវេលាដែលអ្នកអាចប្រើទិន្នន័យថ្មីទាំងស្រុង ដើម្បីសាកល្បងភាពត្រឹមត្រូវនៃម៉ូដែល។ ក្នុងបរិបទ ML 'បច្ចេកប្រតិបត្តិន៍' ដែលអ្នកកំពុងបង្កើតទ្រព្យសម្បត្តិនៅលើបណ្ដាញ ដើម្បីប្រើម៉ូដែលក្នុងផលិតកម្ម វាអាចមានលទ្ធភាពបង្រួមទិន្នន័យអ្នកប្រើ (ការចុចប៊ូតុង ឧទាហរណ៍) ដើម្បីកំណត់អថេរមួយ ហើយផ្ញើវាទៅម៉ូដែលសម្រាប់ការបកស្រាយ ឬវាយតម្លៃ។
+នេះជាពេលវេលាដែលអ្នកអាចប្រើទិន្នន័យថ្មីមួយទាំងស្រុងសម្រាប់សាកល្បងភាពត្រឹមត្រូវនៃគំរូ។ នៅក្នុងបរិបទ ML 'បច្ចេកទេស' ដែលអ្នកកំពុងសង់អចលនវត្ថុបណ្ដាញដើម្បីប្រើគំរូក្នុងការផលិត វិធីនេះអាចមានការប្រមូលទិន្នន័យអ្នកប្រើ (ដូចជាចុចប៊ូតុង) ដើម្បីកំណត់អថេរមួយ និងផ្ញើវាទៅគំរូសម្រាប់ការព្យាយាម ឬវាយតម្លៃ។
-នៅក្នុងមេរៀនទាំងនេះ អ្នកនឹងស្វែងយល់ពីរបៀបប្រើជំហានទាំងនេះ ដើម្បីរៀបចំ បង្កើត សាកល្បង វាយតម្លៃ និងព្យាករណ៍ — ជាការប្រតិបត្តិរបស់អ្នកវិទ្យាសាស្ត្រទិន្នន័យ និងពាណិជ្ជកម្មបន្ថែម ជាពេលដែលអ្នកបន្តផ្លូវទៅរកជំនាញ ML ‘full stack’។
+ក្នុងមេរៀនទាំងនេះ អ្នកនឹងរៀនពីវិធីប្រើជំហានទាំងនេះសម្រាប់រៀបចំ សង់ តេស្ត វាយតម្លៃ និងព្យាករ — រួមជាមួយកម្មវិធីទាំងអស់របស់អ្នកវិទ្យាសាស្ត្រទិន្នន័យ និងមិនត្រឹមតែប៉ុណ្ណោះ ខណៈដែលអ្នកបន្តផ្លូវដំណើររបស់អ្នកដើម្បីក្លាយជាវិស្វកររៀនម៉ាស៊ីន 'full stack'។
---
-## 🚀ការប្រកួតប្រជែង
+## 🚀បញ្ហា
-គូរជាតារាងបង្ហាញនៃជំហានរបស់អ្នកអនុវត្ត ML។ តើអ្នកឃើញខ្លួននៅកន្លែងណាក្នុងដំណើរការ? តើអ្នកគិតថាអ្នកនឹងមានការលំបាកនៅពេលណា? តើអ្វីដែលមើលទៅងាយស្រួលសម្រាប់អ្នក?
+គូរអត្រាដំណើរការលម្អិតបង្ហាញជំហានរបស់អ្នកអនុវត្ត ML។ តើអ្នកឃើញខ្លួននៅឯណាឥឡូវនេះក្នុងដំណើរការ? តើអ្នកព្យាករថានឹងមានកម្រិតលំបាកនៅឯណា? តើអ្វីដែលហាក់មើលទៅសាមញ្ញសម្រាប់អ្នក?
-## [សំនួរត្រួតពិនិត្យបន្ទាប់មេរៀន](https://ff-quizzes.netlify.app/en/ml/)
+## [ប្រលងបន្ទាប់ពីមេរៀន](https://ff-quizzes.netlify.app/en/ml/)
-## ទិដ្ឋភាពវិលត្រឡប់ & ការសិក្សាឯករាជ្យ
+## អនុវត្តន៍ & សិក្សាផ្ទាល់ខ្លួន
-ស្វែងរកនៅលើអ៊ីនធឺណិតសម្រាប់សម្ភាសន៍ជាមួយអ្នកវិទ្យាសាស្ត្រទិន្នន័យដែលពិភាក្សាអំពីការងារប្រចាំថ្ងៃរបស់ពួកគេ។ នេះគឺជា [មួយឯកសារ](https://www.youtube.com/watch?v=Z3IjgbbCEfs)។
+ស្វែងរកអនឡាញសម្រាប់សត្ថបទសំខាន់ៗពីអ្នកវិទ្យាសាស្ត្រទិន្នន័យដែលពិភាក្សាជាមួយការងារប្រចាំថ្ងៃរបស់ពួកគេ។ នេះគឺជា [មួយ](https://www.youtube.com/watch?v=Z3IjgbbCEfs)។
-## កិច្ចការផ្ទះ
+## ភារកិច្ច
[សម្ភាសអ្នកវិទ្យាសាស្ត្រទិន្នន័យ](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/3-Linear/README.md b/translations/km/2-Regression/3-Linear/README.md
index 8f0f4a2dc..e955b08b4 100644
--- a/translations/km/2-Regression/3-Linear/README.md
+++ b/translations/km/2-Regression/3-Linear/README.md
@@ -1,96 +1,96 @@
-# សាងសង់ម៉ូដែលរេសគ្រីស្យុងដោយប្រើ Scikit-learn: រេសគ្រីស្យុង ជាចំនួនបួនវិធី
+# បង្កើតម៉ូដែលកំណត់ត្រា regression ប្រើប្រាស់ Scikit-learn: regression ៤ របៀប
-## អសាមញ្ញករ Note
+## សម្គាល់សម្រាប់អ្នកចាប់ផ្ដើម
-រេសគ្រីស្យុងបន្ទាត់ត្រូវបានប្រើនៅពេលដែលយើងចង់ទាយទិន្នន័យ **តម្លៃលេខ** (ឧទាហរណ៍ តម្លៃផ្ទះ សីតុណ្ហភាព ឬការលក់)។ វាដំណើរការដោយស្វែងរកបន្ទាត់ស្របមួយ ដែលតំណាងល្អបំផុតសម្រាប់ទំនាក់ទំនងរវាងមុខងារបញ្ចូល និងចេញ។
+ការកំណត់ត្រា Linear regression ត្រូវបានប្រើពេលយើងចង់ទាយទោល **តម្លៃជាលេខ** (ឧទាហរណ៍, តម្លៃផ្ទះ, សីតុណ្ហភាព, ឬការលក់)។ វាធ្វើការដោយស្វែងរកខ្សែស្របមួយដែលតំណាងឱ្យទំនាក់ទំនងរវាងលក្ខណៈបញ្ចូល និងលទ្ធផលបានល្អបំផុត។
-ក្នុងមេរៀននេះ យើងផ្តោតសំខាន់លើការយល់ដឹងពីគំនិតមុនពេលស្វែងយល់បន្ថែមពីបច្ចេកទេសរេសគ្រីស្យុងខ្ពស់ជាងនេះ។
+នៅក្នុងមេរៀននេះ យើងផ្តោតលើការយល់ដឹងពីគំនិតមុនពេលស្វែងយល់បច្ចេកទេស regression ដែលមានភាពស្មុគស្មាញជាងនេះ។

-> គំនូរទាក់ទងដោយ [Dasani Madipalli](https://twitter.com/dasani_decoded)
-## [គន្លងប្រលងមុនមេរៀន](https://ff-quizzes.netlify.app/en/ml/)
+> រូបតំណាងដោយ [Dasani Madipalli](https://twitter.com/dasani_decoded)
+## [តេស្តមុខមាត់មេរៀន](https://ff-quizzes.netlify.app/en/ml/)
-> ### [មេរៀននេះមាននៅក្នុងភាសា R ផង!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
-### ការណែនាំ
+> ### [មេរៀននេះមានជាភាសា R ផងដែរ!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
+### ការណែនាំ
-រហូតមកដល់បច្ចុប្បន្ន អ្នកបានស្វែងយល់ពីអ្វីដែលរេសគ្រីស្យុងជាមួយទិន្នន័យគំរូដែលបានប្រមូលពីឃ្លាំងតម្លៃគ្រប់របស់ផ្កាយប័ន្តដែលយើងនឹងប្រើពេញមួយមេរៀននេះ។ អ្នកក៏បានបង្ហាញវាជាមួយ Matplotlib។
+រហូតដល់ពេលនេះ អ្នកបានស្វែងយល់អំពីអ្វីទៅជាកំណត់ត្រា regression ជាមួយទិន្នន័យគំរូពី dataset តម្លៃផ្លែគុជ ដែលយើងនឹងប្រើកន្លងមកក្នុងមេរៀននេះ។ អ្នកក៏បានបង្ហាញវាដោយប្រើ Matplotlib ផងដែរ។
-ឥឡូវនេះ អ្នកបានត្រៀមខ្លួនដើម្បីរំដោះចូលលើរេសគ្រីស្យុងសម្រាប់ ML។ ដំណើរការបង្ហាញភាពនេះអនុញ្ញាតឱ្យអ្នកចេះយល់ពីទិន្នន័យ ប៉ុន្តែអំណាចពិតនៃប្រព័ន្ធរៀនម៉ាស៊ីនមកពី _ការបណ្តុះម៉ូដែល_។ ម៉ូដែលត្រូវបានបណ្តុះលើទិន្នន័យប្រវត្តិសាស្ត្រដើម្បីទទួលយកទំនាក់ទំនងទិន្នន័យដោយស្វ័យប្រវត្តិ ហើយវាអនុញ្ញាតឱ្យអ្នកទាយបានលទ្ធផលសម្រាប់ទិន្នន័យថ្មីដែលម៉ូដែលមិនបានឃើញពីមុន។
+ឥឡូវនេះ អ្នករួចរាល់ក្នុងការចូលដល់ regression ជ្រាលជ្រៅសម្រាប់ ML។ ខណៈពេលការបង្ហាញអនុញ្ញាតឲ្យអ្នកយល់ដឹងទិន្នន័យ កម្លាំងពិតរបស់ Machine Learning មកពី _ការបណ្តុះបណ្តាលម៉ូដែល_។ ម៉ូដែលទាំងនេះត្រូវបានបណ្តុះបណ្តាលលើទិន្នន័យប្រវត្តិ ដើម្បីចាប់យកក្បួនពាក់ព័ន្ធរវាងទិន្នន័យបានដោយស្វ័យប្រវត្តិ ហើយវាអនុញ្ញាតឲ្យអ្នកទាយទ្ឋានលទ្ធផលសម្រាប់ទិន្នន័យថ្មី ដែលម៉ូដែលមិនទាន់ឃើញពីមុន។
-នៅក្នុងមេរៀននេះ អ្នកនឹងរៀនបន្ថែមអំពីប្រភេទរេសគ្រីស្យុងពីរប្រភេទ: _រេសគ្រីស្យុងបន្ទាត់មូលដ្ឋាន_ និង _រេសគ្រីស្យុងព៉ូលីណូមៀល_ ជាមួយនឹងគណិតវិទ្យាខ្លះៗដែលនៅក្រោមបច្ចេកទេសទាំងនេះ។ ម៉ូដែលទាំងនោះនឹងអនុញ្ញាតឲ្យយើងទាយតម្លៃផ្កាយប័ន្តអាស្រ័យលើទិន្នន័យបញ្ចូលខុសៗគ្នា។
+នៅក្នុងមេរៀននេះ អ្នកនឹងស្វែងយល់បន្ថែមពីប្រភេទនៃ regression ២ ប្រភេទ ៖ _linear regression ជាមូលដ្ឋាន_ និង _polynomial regression_, រួមជាមួយគណិតវិទ្យាមួយចំនួននៅពីក្រោយបច្ចេកទេសទាំងនេះ។ ម៉ូដែលទាំងនេះនឹងអនុញ្ញាតឲ្យយើងទាយតម្លៃផ្លែគុជដោយផ្អែកលើទិន្នន័យបញ្ចូលដ៏ខុសគ្នា។
[](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression")
-> 🎥 ចុចលើរូបភាពខាងលើសម្រាប់វីដេអូសង្ខេបអំពីរេសគ្រីស្យុងបន្ទាត់។
+> 🎥 ចុចរូបភាពខាងលើសម្រាប់មើលវីដេអូសង្ខេបពី linear regression។
-> ក្នុងអំឡុងពេលសិក្សាជំនាញនេះ យើងគិតថា ពុំទាមទារជំនាញគណិតវិទ្យាច្រើននោះទេ ហើយផ្តោតធ្វើឲ្យវាអាចចូលដល់បានសម្រាប់និស្សិតដែលមកពីដែនផ្សេងៗ ដូច្នេះសូមកត់សម្គាល់កំណត់ចំណាំ 🧮 ការហៅចេញ សៀវភៅរៀន និងឧបករណ៍សិក្សាផ្សេងៗ ដើម្បីជួយបង្រៀនយល់បានល្អ។
+> ក្នុងកម្រិតសិក្សាទាំងនេះ យើងសន្មតថាជំនាញគណិតវិទ្យាមិនខ្ពស់ ព្រមទាំងព្យាយាមធ្វើឲ្យវាអាចចូលដល់បានសម្រាប់សិស្សពីវិស័យផ្សេងៗ ដូច្នេះសូមមើលកំណត់សម្គាល់, 🧮 ការហៅ, រូបតំណាង និងឧបករណ៍រៀនផ្សេងទៀតសម្រាប់ជំនួយក្នុងការយល់ដឹង។
-### គួរដឹងជាមុន
+### តម្រូវការមុន
-អ្នកគួរតែស្គាល់រចនាសម្ព័ន្ធទិន្នន័យផ្កាយដែលយើងកំពុងពិនិត្យឥឡូវនេះ។ អ្នកអាចស្រាវជ្រាវវា ដែលបានរៀបចំរួចទៅហើយក្នុងឯកសារ _notebook.ipynb_ នៃមេរៀននេះ។ នៅក្នុងឯកសារ តម្លៃផ្កាយបង្ហាញចេញជាតម្លៃមួយទៅក្នុងឈុតទិន្នន័យថ្មី។ សូមប្រាកដថាអ្នកអាចរត់ឯកសារនេះនៅក្នុងកណ្តុរប្រតិបត្តិការ Visual Studio Code។
+អ្នកគួរតែលេខពេញចិត្តទៅនឹងរចនាសម្ព័ន្ធទិន្នន័យផ្លែគុជដែលយើងកំពុងពិនិត្យ។ អ្នកអាចរកឃើញវាត្រូវបានបញ្ចូលរួច និងបានបើកស្អាតក្នុងឯកសារ _notebook.ipynb_ របស់មេរៀននេះ។ ក្នុងឯកសារ តម្លៃផ្លែគុជត្រូវបានបង្ហាញជាតម្លៃភាគតំណាងមួយក្នុង DataFrame ថ្មី។ សូមប្រាកដថាអ្នកអាចរត់ notebooks ទាំងនេះនៅក្នុង kernel នៃ Visual Studio Code។
-### ការប្រៀបប្រដៅ
+### ការរៀបចំ
-ជាថ្មីវិញ អ្នកកំពុងផ្ទុកទិន្នន័យនេះដើម្បីសួរចម្ងល់ពីវា។
+ដើម្បីរំលឹក អ្នកកំពុងផ្ទុកទិន្នន័យនេះដើម្បីសួរចំលើយពីវា។
-- ពេលណាជាពេលល្អបំផុតក្នុងការជាវផ្កាយ?
-- តម្លៃដែលខ្ញុំអាចរំពឹងទុកសម្រាប់ប្រអប់ផ្កាយតូចតាចនេះ?
-- តើខ្ញុំគួរជាវវាទុកក្នុងធុងបាក់សែលកន្លះឬក្នុងប្រអប់ 1 1/9 បាសែលទេ?
-តោះបន្តស្គាល់ទិន្នន័យនេះ។
+- ពេលណាជាពេលល្អបំផុតក្នុងការទិញផ្លែគុជ?
+- តម្លៃដែលខ្ញុំអាចរំពឹងទុក្ខប្រអប់ផ្លែគុជតូចមួយជាអ្វី?
+- តើខ្ញុំគួរទិញវានៅក្នុងធុងកន្លែងកន្លះបាសែល ឬប្រអប់ ១ ១/៩ បាសែល?
+យើងសូមបន្តស្រាវជ្រាវក្នុងទិន្នន័យនេះ។
-ក្នុងមេរៀនមុន អ្នកបានបង្កើត DataFrame Pandas ហើយបំពេញវា ជាមួយផ្នែកមួយនៃទិន្នន័យដើម ដោយស្ដង់ដារតម្លៃតាមបាសែល។ ប៉ុន្តែតែតិច អ្នកបានប្រមូលបានប្រហែល ៤០០ចំនួនទិន្នន័យ ហើយសម្រាប់ខែរដូវស្លឹកឈើជ្រុះតែប៉ុណ្ណោះ។
+ក្នុងមេរៀនមុន អ្នកបានបង្កើត DataFrame របស់ Pandas ហើយបញ្ចូលវាជាមួយផ្នែកមួយនៃ dataset ដើម បម្រែបម្រួលតម្លៃដោយបាសែល។ ប៉ុន្តែដោយធ្វើការនេះ អ្នកអាចទទួលបានតែប្រហែល៤០០ចំណុចទិន្នន័យ និងសម្រាប់ខែរដូវស្លឹកឈើជ្រុះតែប៉ុណ្ណោះ។
-សូមមើលទិន្នន័យដែលបានបញ្ចូលរួចនៅក្នុងទំព័រនេះក្នុងឯកសារ notebook នៃមេរៀន។ ទិន្នន័យបានបញ្ចូលរួច និងបង្ហាញរាងចំណុចព្រាត់ដើម្បីបង្ហាញខែ ទំនងជាយើងអាចរកបានព័ត៌មានលម្អិតបន្ថែមអំពីធម្មជាតិទិន្នន័យ ដោយសម្រួលវាបន្ថែមទៀត។
+សូមមើលទៅទិន្នន័យដែលយើងបានបញ្ចូលរួចក្នុង notebook រួមជាមួយមេរៀននេះ។ ទិន្នន័យបានបញ្ចូលរួចហើយ និងមានការ scatterplot ដំបូងបង្ហាញតាមខែ។ ប្រហែលជាយើងអាចទទួលបានព័ត៌មានលម្អិតមួយចំនួនពីធម្មជាតិនៃទិន្នន័យដោយការសម្អាតវាបន្ថែមទៀត។
-## បន្ទាត់រេសគ្រីស្យុងបន្ទាត់មួយ
+## ខ្សែ regression ស្រប
-ដូចដែលអ្នកបានរៀនក្នុងមេរៀន ១ គោលគំនិតនៃលំហាត់រេសគ្រីស្យុងបន្ទាត់គឺដើម្បីអាចគូរបន្ទាត់មួយសម្រាប់៖
+ដូចដែលអ្នកបានរៀនក្នុងមេរៀនទី ១ គោលដៅនៃលំហាត់ linear regression គឺដើម្បីអាចគូសខ្សែដូចខាងក្រោម៖
- **បង្ហាញទំនាក់ទំនងអថេរ**។ បង្ហាញទំនាក់ទំនងរវាងអថេរ
-- **ធ្វើការទាយតម្លៃ**។ ទាយតម្លៃបានត្រឹមត្រូវថាចំណុចថ្មីនឹងស្ថិតនៅឯសន្លឹកណា។
+- **ធ្វើការទាយទោល**។ ធ្វើការទាយទោលបានត្រឹមត្រូវលើទីតាំងនៃចំណុចទិន្នន័យថ្មីមួយ ទាក់ទងទៅខ្សែស្របនោះ។
-វាជារឿងទូទៅនៃ **Least-Squares Regression** ដើម្បីគូរបែបនេះ។ ពាក្យ "Least-Squares" មានន័យថាផលបិទកំហុសរួមមិនធំ។ សម្រាប់ចំណុចទិន្នន័យមួយៗ យើងវាស់រយៈកន្លះកោងចុះ (ហៅថា residual) រវាងចំណុចពិត និងបន្ទាត់រេសគ្រីស្យុង។
+វាមានទំាងជាគន្លងនៃ **Least-Squares Regression** ដើម្បីគូសខ្សែបែបនេះ។ ពាក្យ "Least-Squares" មានន័យថា ជំហាននៃការកាត់បន្ថយកំហុសសរុបនៅក្នុងម៉ូដែល។ សម្រាប់ចំណុចទិន្នន័យរាល់ចំណុច យើងវាស់ចម្ងាយបញ្ឈរ (ហៅថា residual) រវាងចំណុចពិត និងខ្សែ regression។
-យើងធ្វើការការ៉េរយៈចន្លោះទាំងនេះដោយមានមូលហេតុសំខាន់ពីរគឺ:
+យើងធ្វើការលោតបន្ធោងចម្ងាយនេះសម្រាប់មូលហេតុសំខាន់ ២៖
-1. **ទំហំលើទិសដៅ:** យើងចង់ពិនិត្យកំហុស -5 ដូចគ្នានឹងកំហុស +5។ ការ� square បំរេ所有តម្លៃជាផ្កាយវិជ្ជមានទាំងអស់។
+1. **ទំហំជាងទិសដៅ៖** យើងចង់ចាត់ទុកកំហុស -៥ ដូចគ្នានឹងកំហុស +៥។ ការលោតបន្ធោងធ្វើឲ្យតម្លៃទាំងអស់ទៅជាអវិជ្ជមាន។
-2. **ពិនិត្យចំពោះចំណុចក្រៅ:** ការ square ផ្តល់តុល្យភាពលើកំហុសធំៗ បង្ខំឲ្យបន្ទាត់នៅជិតចំណុចដែលឆ្ងាយ។
+2. **ដាក់ពិន័យចំពោះចំណុចខុសប្លែក៖** ការលោតបន្ធោងធ្វើឲ្យកំហុសធំហើយមានទំងន់បន្ថែម ហើយជំរុញឲ្យខ្សែស្របនៅជិតចំណុចដែលឆ្ងាយ។
-យើងបន្ថែមតម្លៃការ square ទាំងនេះគ្នាទៅវិញ។ គោលបំណងគឺរកបន្ទាត់ដែលសរុបនេះតិចបំផុត (តម្លៃតិចបំផុត) ហេតុនេះហៅពីរការនេះថា "Least-Squares"។
+ក្រោយមក យើងនឹងបូករួមតម្លៃលោតបន្ធោងទាំងអស់ទាំងនេះ។គោលដៅរបស់យើងគឺរកឃើញខ្សែនូវកន្លែងដែលសរុបចុងក្រោយកើតមានតិចបំផុត (តម្លៃតិចបំផុតដែលអាចមាន)—អាស្រ័យពីឈ្មោះ "Least-Squares"។
-> **🧮 បង្ហាញគណិតវិទ្យា**
+> **🧮 បង្ហាញគណិតវិទ្យា**
>
-> បន្ទាត់នេះ ដែលហៅថា _បន្ទាត់សម្រង់ល្អបំផុត_ អាចបង្ហាញដោយ [សមីការ](https://en.wikipedia.org/wiki/Simple_linear_regression):
+> ខ្សែនេះហៅថា _line of best fit_ អាចបង្ហាញដោយ [សមីការ](https://en.wikipedia.org/wiki/Simple_linear_regression):
>
> ```
> Y = a + bX
> ```
>
-> `X` គឺជា 'អថេរពន្យល់'។ `Y` គឺជា 'អថេរនិយម'។ ជំហាននៃបន្ទាត់គឺ `b` ហើយ `a` គឺជាចំណុចកាត់បន្ទាត់ y ដែលធ្វើអោយ `Y` រក្សាតម្លៃនៅពេល `X = 0`។
+> `X` គឺជា "អថេរពន្យល់"។ `Y` គឺជា "អថេរអាស្រ័យ"។ ចំហាយខ្សែគឺ `b` ហើយ `a` គឺជា y-intercept ដែលមានន័យថាតម្លៃ `Y` នៅពេល `X = 0`។
>
>
>
-> ជំហាន `b` គណនា ជាមួយគំនូរ [Jen Looper](https://twitter.com/jenlooper)
+> ជំហានដំបូង គណនាចំហាយ `b`។ រូបតំណាងដោយ [Jen Looper](https://twitter.com/jenlooper)
+>
+> ក្នុងពាក្យផ្សេងៗ ហើយយោងទៅលើសំណួរដើមរបស់ទិន្នន័យផ្លែគុជ៖ "ទាយតម្លៃផ្លែគុជតាមបាសែលក្នុងមួយខែ", `X` នឹងបញ្ចេញតម្លៃតម្លៃ និង `Y` នឹងបញ្ចេញខែការលក់។
>
-> នៅក្នុងពាក្យផ្សេង ហើយយោងទៅតាមសំណួរដើមរបស់ទិន្នន័យផ្កាយ "ទាយតម្លៃផ្កាយតាមបាសែលដោយខែ" ការបញ្ចូល `X` នឹងយោងទៅតម្លៃ និង `Y` នឹងយោងទៅខែ។
-
>
>
-> គណនាតម្លៃ Y។ ប្រសិនបើអ្នកបង់ប្រហែល $៤ វាចាំបាច់ត្រូវ April! គំនូរដោយ [Jen Looper](https://twitter.com/jenlooper)
+> គណនាតម្លៃ Y។ បើអ្នកកំពុងបង់ប្រាក់ប្រហែល $4 វាគួរតែជាខែមេសា! រូបតំណាងដោយ [Jen Looper](https://twitter.com/jenlooper)
>
-> គណិតវិទ្យាដែលគណនាបន្ទាត់គួរតែបង្ហាញពីជំហាន `b` មានផ្ទៃមួយនៃការចាប់ផ្តើមតែម្តង នៅពេល `X = 0`។
+> គណិតវិទ្យាដែលគណនាចំពោះខ្សែនេះត្រូវបង្ហាញចំហាយខ្សែ ហើយវាក៏អាស្រ័យលើ intercept ឬទីតាំង `Y` នៅពេលដែល `X = 0`។
>
-> អ្នកអាចមើលវិធីសាស្រ្តគណនាបញ្ជាក់លម្អិតបាននៅលើវេបសាយ [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html)។ សូមចូលទៅកាន់ [កាលគណនា Least-squares នេះ](https://www.mathsisfun.com/data/least-squares-calculator.html) ដើម្បីមើលពីរបៀបលេខប៉ះពាល់បន្ទាត់។
+> អ្នកអាចមើលវិធីសាស្ត្រគណនាតម្លៃទាំងនេះក្រៅពី [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html)។ សូមទៅសំណេះសំណាល [Least-squares calculator](https://www.mathsisfun.com/data/least-squares-calculator.html) ដើម្បីមើលការប៉ះពាល់នៃតម្លៃចំនួនទៅលើខ្សែ។
-## សមាភាព/Correlation
+## ការចងក្រង
-ពាក្យមួយទៀតដែលត្រូវយល់គឺ **អាំងឃូផេរ៉េលេសិនកូអ៊ីហ្វ៊ីស្យង** រវាងអថេរ X និង Y ។ ប្រើ scatterplot អ្នកអាចមើលឃើញកូអ៊ីហ្វីស្យងនេះបានយ៉ាងរហ័ស។ ប្លង់ជាមួយចំណុចចំរៀងក្នុងបន្ទាត់ស្អាតនោះមានសមាភាពខ្ពស់ ប៉ុន្តែប្លង់ជាមួយចំណុចចំរាយនៅគ្រប់ទីកន្លែងរវាង X និង Y មានសមាភាពទាប។
+ពាក្យមួយទៀតដែលត្រូវយល់គឺ **អនុផលចងក្រង (Correlation Coefficient)** រវាងអថេរ X និង Y ប្រាប់។ ដោយប្រើ scatterplot អ្នកអាចឃើញអនុផលចងក្រងនេះបានរហ័ស។ ពេល scatterplot មានចំណុចកន្លងទៅតាមខ្សែស្រប មានអនុផលចងក្រងខ្ពស់ ប៉ុន្តែពេល scatterplot មានចំណុចចែកចាយជុំវិញលើទីលានសរុប មានអនុផលចងក្រងទាប។
-ម៉ូដែលរេសគ្រីស្យុងបន្ទាត់ល្អនឹងជាៈ ម៉ូដែលដែលមានកូអ៊ីហ្វីស្យង់សមាភាពខ្ពស់ (ជិត ១ ជាង ០) ប្រើវិធី Least-Squares Regression ជាមួយបន្ទាត់រេសគ្រីស្យុង។
+ម៉ូដែល linear regression ដែលល្អ គឺម៉ូដែលមានអនុផលចងក្រងខ្ពស់ (ជិត 1 មិនមែន 0) ដោយប្រើវិធី Least-Squares Regression ជាមួយខ្សែ regression ។
-✅ រត់ notebook ដែលផ្ដល់ជាមួយមេរៀននេះ និងមើល scatterplot រវាង Month និង Price ។ តើទិន្នន័យដែលភ្ជាប់រវាង Month និង Price សម្រាប់ការលក់ផ្កាយមានសមាភាពខ្ពស់ ឬទាប ដោយយោងទៅតាមការបកស្រាយរបស់អ្នកពី scatterplot? តើវាប្រែប្រួលដែរឬទេ ប្រសិនបើអ្នកប្រើមាត្រដ្ឋានលម្អិតជាងនេះជំនួស `Month` ឧ. *day of the year* (ចំនួនថ្ងៃចាប់ពីដើមឆ្នាំ)?
+✅ រាជធានី notebook ដែលបញ្ជាក់មេរៀននេះ និងមើល scatterplot រវាង ខែក្រោមតម្លៃ។ តើទិន្នន័យដែលភ្ជាប់ខែក្រោមតម្លៃសម្រាប់ការលក់ផ្លែគុជមានអនុផលចងក្រងខ្ពស់ ឬទាប តាមការបកស្រាយរូបភាពរបស់អ្នក? តើវាប្រែប្រួលបើប្រើវាស់វែងលម្អិតជាងខែដូចជា *ថ្ងៃឆ្នាំ* (ជាចំនួនថ្ងៃចាប់ពីដើមឆ្នាំ)?
-នៅលើកូដខាងក្រោម យើងនឹងកត់សម្គាល់ថា យើងបានសម្អាតទិន្នន័យរួចហើយ ហើយទទួលបាន DataFrame ដែលហៅថា `new_pumpkins` ដូចក្នុងតារាងដូចខាងក្រោម៖
+ក្នុងកូដខាងក្រោមវាយើងនឹងសន្មតថាយើងបានបន្ថែមសម្អាតទិន្នន័យ ហើយទទួលបាន DataFrame ឈ្មោះ `new_pumpkins` ដូចខាងក្រោម៖
ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price
---|-------|-----------|---------|------|---------|-----------|------------|-------
@@ -100,36 +100,36 @@ ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Pri
73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545
74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364
-> កូដសម្រាប់សម្អាតទិន្នន័យមាននៅក្នុង [`notebook.ipynb`](notebook.ipynb)។ យើងបានអនុវត្តជំហានសម្អាតដូចក្នុងមេរៀនមុន ហើយបានគណនាថ្នេរជួរឈរ `DayOfYear` ដោយប្រើបន្ទាត់នេះ៖
+> កូដសម្រាប់សម្អាតទិន្នន័យអាចរកបានក្នុង [`notebook.ipynb`](notebook.ipynb)។ យើងបានអនុវត្តជំហានសម្អាតដដែលដូចមេរៀនមុន ហើយបានគណនាគូបន្ទាត់ `DayOfYear` ដោយប្រើនិយមន័យខាងក្រោម៖
```python
day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days)
```
-ឥឡូវនេះដែលអ្នកមានយល់ដឹងពីគណិតវិទ្យារបស់រេសគ្រីស្យុងបន្ទាត់ អ្នកមកបង្កើតម៉ូដែល Regression ដើម្បីមើលថាតើយើងអាចទាយបានថាតើប្រអប់ផ្កាយណាដែលមានតម្លៃផ្កាយល្អបំផុត។ អ្នកដែលដែលជាវផ្កាយសម្រាប់តំបន់លំហែកាយថ្ងៃបុណ្យអាចចង់បានព័ត៌មាននេះ ដើម្បីអាចបឹតបញ្ចូលការជាវផ្កាយសម្រាប់តំបន់នោះ។
+ឥឡូវនេះដែលអ្នកមានការយល់ដឹងក្នងគណិតវិទ្យាក្រោយ linear regression យើងសាកល្បងបង្កើតម៉ូដែល Regression ដើម្បីមើលថាតើយើងអាចទាយថាតើកញ្ចប់ផ្លែគុជណាអាចមានតម្លៃល្អបំផុត។ មនុស្សដែលទិញផ្លែគុជសម្រាប់បរិវេទបុណ្យអាចចង់បានព័ត៌មាននេះដើម្បីអាចធ្វើអោយការទិញកញ្ចប់ផ្លែគុជមានប្រសិទ្ធភាពល្អបំផុតសម្រាប់បរិវេទ។
-## ស្វែងរកសមាភាព
+## ការស្វែងរកការចងក្រង
[](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression")
-> 🎥 ចុចលើរូបភាពខាងលើសម្រាប់វីដេអូសង្ខេបអំពីសមាភាព។
+> 🎥 ចុចរូបភាពខាងលើសម្រាប់មើលវីដេអូសង្ខេបពីការស្វែងរកការចងក្រង។
-ពីមេរៀនមុនអ្នកប្រហែលជាបានឃើញថាតម្លៃមធ្យមនៃខែផ្សេងៗមានរូបរាងដូចជា:
+ពីមេរៀនមុន អ្នកប្រហែលជាបានឃើញថាតម្លៃមធ្យមរបស់ខែផ្សេងៗមើលទៅដូចខាងក្រោម៖
-នេះបង្ហាញថាមានសមាភាពមួយ ហើយយើងអាចព្យាយាមបណ្តុះម៉ូដែលរេសគ្រីស្យុងបន្ទាត់ដើម្បីទាយទំនាក់ទំនងរវាង `Month` និង `Price` ឬរវាង `DayOfYear` និង `Price`។ នេះគឺជា scatter plot បង្ហាញទំនាក់ទំនងបន្ថែម:
+វាសម្លឹងបង្ហាញថា គួរតែមានការចងក្រងខ្លះ ហើយយើងអាចព្យាយាមបណ្តុះម៉ូដែល linear regression ដើម្បីទាយទំនាក់ទំនងរវាង `Month` និង `Price` ឬ `DayOfYear` និង `Price`។ នេះគឺជា scatter plot បង្ហាញទំនាក់ទំនងចុងក្រោយ៖
-មកមើលពី `corr` មុខងារថា មានសមាភាពម្តេច៖
+មកមើលថាតើមានការចងក្រងជាមួយ `corr` function មែនទេ៖
```python
print(new_pumpkins['Month'].corr(new_pumpkins['Price']))
print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price']))
```
-វាបង្ហាញថាសមាភាពតូចណាស់ - ប្រាំពីរយភាគរយដោយ `Month` និង -០.១៧ ដោយ `DayOfMonth` ប៉ុន្តែអាចមានទំនាក់ទំនងសំខាន់ផ្សេងទៀត។ វាហាក់ដូចជាមានក្រុមតម្លៃផ្សេងគ្នាដែលអាចទាក់ទងនឹងប្រភេទផ្កាយផ្សេងគ្នា។ ដើម្បីបញ្ជាក់ គោលដៅនេះ យើងចុះជ្រាប និងគូរផ្សេងគ្នាសម្រាប់ផ្កាយក្នុងប្រភេទតូចៗដោយបន្ទាត់ពណ៌ផ្សេងទៀត។ ដោយផ្តល់ប៉ារ៉ាម៉ែត្រ `ax` ទៅមុខងារ scatter ការគូរអាចបង្ហាញចំណុចទាំងអស់នៅលើក្រាបនេះបាន៖
+វាបង្ហាញថាការចងក្រងមានតិច (-0.15 សម្រាប់ `Month` និង -0.17 សម្រាប់ `DayOfYear`) ប៉ុន្តែអាចមានទំនាក់ទំនងសំខាន់ផ្សេងទៀត។ វាបង្ហាញថាមានក្រុមតម្លៃផ្សេងៗដែលទាក់ទងទៅនឹងប្រភេទផ្លែគុជផ្សេងគ្នា។ ដើម្បីបញ្ជាក់សំណងនេះ សូមគូសផ្ទាំងផ្តោតលើប្រភេទផ្លែគុជដោយពណ៌ផ្សេងៗ។ ដោយផ្តល់ផារាម៉ែត្រ `ax` ទៅ `scatter` អ្នកអាចគូសចំណុចទាំងអស់នៅលើក្រាហ្វមួយដូចគ្នា៖
```python
ax=None
@@ -141,7 +141,7 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()):
-ការស៊ើបអង្កេតបង្ហាញថាប្រភេទផ្កាយមានឥទ្ធិពលលើតម្លៃនៃការលក់ច្រើនជាងកាលបរិច្ឆេទលក់។ យើងអាចមើលឃើញនេះជាមួយក្រាបបារ:
+ការស៊ើបអង្កេតរបស់យើងបង្ហាញថាប្រភេទផ្លែគុជមានឥទ្ធិពលច្រើនជាងលើតម្លៃសរុបជាងថ្ងៃដែលលក់។ យើងអាចឃើញវាជាមួយក្រាហ្វបារ៖
```python
new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar')
@@ -149,7 +149,7 @@ new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar')
-ចូរយើងផ្ដោតលើប្រភេទផ្កាយតែមួយបច្ចុប្បន្ននេះ 'pie type' ហើយមើលឥទ្ធិពលនៃកាលបរិច្ឆេទលើតម្លៃ៖
+សូមផ្តោតសំខាន់បច្ចុប្បន្នលើប្រភេទផ្លែគុជតែមួយគត់ 'pie type' ហើយមើលថាតើថ្ងៃមានឥទ្ធិពលដូចម្ដេចចំពោះតម្លៃ៖
```python
pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE']
@@ -157,24 +157,24 @@ pie_pumpkins.plot.scatter('DayOfYear','Price')
```
-បើយើងគណនាសមាភាពរវាង `Price` និង `DayOfYear` ដោយប្រើ `corr` អ្នកនឹងបានប្រហែល `-0.27` - មានន័យថាការបណ្តុះម៉ូដែលទាយត្រូវមានអត្ថន័យ។
+បើយើងគណនាការចងក្រងរវាង `Price` និង `DayOfYear` ដោយប្រើ `corr` function ឥឡូវនេះ អ្នកនឹងបានតម្លៃប្រហែល `-0.27` - មានន័យថាការបណ្តុះម៉ូដែលទាយទោលរួចហើយមានហត្ថពលន៍។
-> មុនពេលបណ្តុះម៉ូដែលរេសគ្រីស្យុងបន្ទាត់ វាជារឿងសំខាន់ក្នុងការធ្វើអោយទិន្នន័យរបស់យើងបានស្អាត។ រេសគ្រីស្យុងបន្ទាត់មិនល្អសម្រាប់តម្លៃដែលខ្វះទេ ដូច្នេះវាមានអត្ថន័យក្នុងការដកចេញចំណុចទិន្នន័យខ្វះទាំងអស់៖
+> មុនពេលបណ្តុះម៉ូដែល linear regression វាម៉ត់ចត់ឲ្យប្រាកដថាទិន្នន័យស្អាត។ Linear regression មិនប្រសើរនៅពេលមានតម្លៃទំនេរ ដូច្នេះវាអាចមានអត្ថប្រយោជន៍ក្នុងការបោះបង់ជាសំណុំចំលងទាំងអស់៖
```python
pie_pumpkins.dropna(inplace=True)
pie_pumpkins.info()
```
-វិធីសាស្រ្តមួយផ្សេងទៀតគឺបំពេញតម្លៃទទេនោះជាមួយតម្លៃមធ្យមពីជួរឈរចំរៀង។
+វិធីមួយផ្សេងទៀតគឺបំពេញតម្លៃទំនេរទាំងនោះជាមួយតម្លៃមធ្យមពីជួរឈរដែលទាក់ទង។
-## រេសគ្រីស្យុងបន្ទាត់សាមញ្ញ
+## Regression ស្រួលៗ linear
[](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn")
-> 🎥 ចុចលើរូបភាពខាងលើសម្រាប់វីដេអូសង្ខេបអំពីរេសគ្រីស្យុងបន្ទាត់ និងព៉ូលីណូមៀល។
+> 🎥 ចុចរូបភាពខាងលើសម្រាប់មើលវីដេអូសង្ខេបពី linear និង polynomial regression។
-ដើម្បីបណ្តុះម៉ូដែលរេសគ្រីស្យុងបន្ទាត់របស់យើង យើងនឹងប្រើបណ្ណាល័យ **Scikit-learn**។
+ដើម្បីបណ្តុះម៉ូដែល Linear Regression របស់យើង យើងនឹងប្រើបណ្ណាល័យ **Scikit-learn** ។
```python
from sklearn.linear_model import LinearRegression
@@ -182,31 +182,31 @@ from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
```
-យើងចាប់ផ្តើមដោយបំបែកតម្លៃបញ្ចូល (Features) និងលទ្ធផលដែលរំពឹងទុក (Label) ទៅជា array numpy បំបែក:
+យើងចាប់ផ្ដើមដោយបំបែកកម្រិតបញ្ចូល (features) និងលទ្ធផលដែលរំពឹងទុក (label) ទៅក្នុង array numpy ផ្សេងៗ៖
```python
X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1)
y = pie_pumpkins['Price']
```
-> សូមចំណាំថា យើងបានធ្វើ `reshape` លើទិន្នន័យបញ្ចូល ដើម្បីឲ្យកញ្ចប់ Linear Regression យល់បានត្រឹមត្រូវ។ Linear Regression រំពឹងថានឹងទទួល array ទំហំ 2D ដែលជួរដេកនីមួយៗជាគេហ្មត់មុខងារបញ្ចូលមួយ។ ក្នុងករណីយើងមានតែមុខងារតែមួយ ដូច្នេះត្រូវការតម្រូវ array ទៅជា N×1 ដែល N គឺជាចំនួនទិន្នន័យ។
+> សូមចំណាំថាយើងត្រូវបានធ្វើ `reshape` លើទិន្នន័យបញ្ចូល ដើម្បីឲ្យ package Linear Regression យល់បានត្រឹមត្រូវ។ Linear Regression រងចាំ array 2D ជាកម្រិតបញ្ចូល ដែលជារៀងរាល់ជួរឈរនៃ array តំណាងថាលក្ខណៈបញ្ចូលមួយ vector។ សម្រាប់ករណីយើង មានតែបញ្ចូលមួយ ចាំបាច់ត្រូវមាន array ទំហំ N×1 ដែល N ជាចំនួនទិន្នន័យ។
-បន្ទាប់មកយើងត្រូវបំបែកទិន្នន័យជាកញ្ចប់ហ្វឹកហាត់ និងតេស្ត ដើម្បីអាចត្រួតពិនិត្យម៉ូដែលបន្ទាប់ពីបណ្តុះ:
+បន្ទាប់មក យើងត្រូវបំបែកទិន្នន័យជាក្រុមបណ្តុះបណ្តាលនិងសាកល្បង ដើម្បីពិនិត្យម៉ូដែលបន្ទាប់ពីបណ្តុះបណ្តាល៖
```python
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
```
-ចុងក្រោយ ការបណ្តុះម៉ូដែលរេសគ្រីស្យុងបន្ទាត់ពិតត្រឹមពីរជួរដេកកូដប៉ុណ្ណោះ។ យើងកំណត់វត្ថុ `LinearRegression` ហើយបង្វួលវាទៅលើទិន្នន័យដោយប្រើ `fit` វិធីសាស្រ្ត៖
+ចុងក្រោយ ការបណ្តុះណែនាំម៉ូដែល Linear Regression ពិតប្រាកដត្រូវការចំនួនកូដប៉ុន្មានជួរប៉ុណ្ណោះ។ យើងកំណត់អំពើ `LinearRegression` ហើយតភ្ជាប់វាជាមួយទិន្នន័យដោយវិធីសាស្ត្រ `fit`៖
```python
lin_reg = LinearRegression()
lin_reg.fit(X_train,y_train)
```
-វត្ថុ `LinearRegression` បន្ទាប់ពីធ្វើការ `fit` មានគ្រប់គ្រាន់នៃអនុគមន៍រាងក្រាបដែលអាចចូលដំណើរការបានដោយប្រើគុណលក្ខណៈ `.coef_`។ ក្នុងករណីរបស់យើង មានគ្រាន់តែអនុគមន៍រាងតែមួយ ដែលគួរតែនឹងទៅជាទីប្រហែល `-0.017`។ វាជាអត្ថន័យថា តម្លៃមានទំនងធ្លាក់ខ្សែពេលវេលាបន្តិចបន្តួច ប៉ុន្តែមិនច្រើនទេ ប្រមាណពីរចិនសសម្រាប់មួយថ្ងៃ។ យើងអាចចូលដំណើរការចំណុចកាត់នៃក្រាបជាមួយអ័ក្ស Y ដោយប្រើ `lin_reg.intercept_` - វានឹងនៅជិត `21` ក្នុងករណីរបស់យើង បង្ហាញពីតម្លៃនៅដើមឆ្នាំ។
+វត្ថុ `LinearRegression` បន្ទាប់ពីបានធ្វើការបណ្តុះបណ្តាល (`fit`-ting) មានគោលបំណងសមាមាត្រទាំងអស់នៃសមីការបញ្ចេញលទ្ធផល ដែលអាចចូលដំណើរការបានដោយប្រើអចលនវត្ថុ `.coef_`។ នៅក្នុងករណីរបស់យើង មានគោលបំណងតែមួយ ប៉ុន្តែគួរតែប្រហែលជា `-0.017`។ នេះមានន័យថាកម្លៃតម្លៃព្រៃដូចជានឹងធ្លាក់បន្តិចបន្តួចជាមួយពេលវេលា ប៉ុន្តែមិនច្រើនពេក យ៉ាងតិចប្រហែល 2 សេន្ទក្នុងមួយថ្ងៃ។ យើងក៏អាចចូលដំណើរការចំណុចឆ្លុះកាត់នៃសមីការបញ្ចេញលទ្ធផលជាមួយអ័ក្ស Y បានដោយប្រើ `lin_reg.intercept_` - វានឹងប្រហែលជា `21` ក្នុងករណីយើង បង្ហាញពីតម្លៃនៅដើមឆ្នាំ។
-ដើម្បីមើលថា ម៉ូឌែលរបស់យើងមានត្រឹមត្រូវប៉ុណ្ណា យើងអាចប៉ាន់ស្មានតម្លៃនៅលើទិន្នន័យសាកល្បង ហើយបន្ទាប់មកវាស់ថាតើការព្យាករណ៍របស់យើងនៅជិតតម្លៃដែលរំពឹងទុកយ៉ាងដូចម្តេច។ វាអាចធ្វើបានដោយប្រើសន្ទស្សន៍ root mean square error (RMSE) ដែលជាគម្លាតព្រំជាមួយមធ្យមនៃចំនួនឯកតាជាដើមរវាងតម្លៃរំពឹងទុក និងតម្លៃដែលបានព្យាករណ៍។
+ក្នុងការមើលថាតើម៉ូឌែលរបស់យើងមានភាពត្រឹមត្រូវប៉ុណ្ណា យើងអាចទាយតម្លៃលើទិន្នន័យសាកល្បង ហើយបន្ទាប់មកវាស់ឈរភាពជិតស្និទ្ធរបស់ការទាយរបស់យើងនឹងតម្លៃដែលរំពឹងទុក។ នេះអាចធ្វើបានដោយប្រើមាត្រដ្ឋាន root mean square error (RMSE) ដែលជាចម្ងាយរបស់មធ្យមនៃភាពខុសគ្នាប្រក់គ្នាជារូបបូកមួយរវាងតម្លៃរំពឹងនិងតម្លៃទាយ។
```python
pred = lin_reg.predict(X_test)
@@ -214,37 +214,38 @@ pred = lin_reg.predict(X_test)
rmse = np.sqrt(mean_squared_error(y_test,pred))
print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)')
```
-
-កំហុសរបស់យើងមានទំនងជាច្រើនជាង២ ពិន្ទុ ដែលប្រមាណជា ~17%។ មិនល្អពេកទេ។ ទាំងនេះគឺជាសន្ទស្សន៍ដាក់ទំនាក់ទំនងគុណភាពម៉ូឌែល អាចទទួលបានជា **coefficient of determination** ដូចខាងក្រោម៖
+
+កំហុសរបស់យើងហាក់ដូចជាប្រហែល 2 ពិន្ទុ ដែលប្រហែលជាគឺ ~17%។ មិនល្អធ្វើទេ។ មាត្រដ្ឋានជួនកាលទៀតនៃគុណភាពម៉ូឌែលគឺ **coefficient of determination** ដែលអាចទទួលបានដូចខាងក្រោម៖
```python
score = lin_reg.score(X_train,y_train)
print('Model determination: ', score)
```
- ប្រសិនបើតម្លៃគឺ 0 វាមានន័យថា ម៉ូឌែលមិនយកទិន្នន័យអោយបានជាការបញ្ចូល និងដំណើរការជា *predictor linear អាក្រក់បំផុត* ដែលជាមធ្យមតម្លៃលទ្ធផលប៉ុណ្ណោះ។ តម្លៃ 1 មានន័យថាយើងអាចព្យាករណ៍លទ្ធផលទាំងអស់បានយ៉ាងពេញលេញ។ ក្នុងករណីរបស់យើង អនុគមន៍សង្ខេបគឺជាទីប្រហែល 0.06 ដែលគឺទាបណាស់។
+
+បើតម្លៃគឺ 0 មានន័យថា ម៉ូឌែលមិនយកទិន្នន័យបញ្ចូលចូលក្នុងការគិតឡើយ ហើយដំណើរការជា *អ្នកទាយបន្ទាត់អាក្រក់បំផុត* ដែលគ្រាន់តែជាមធ្យមនៃលទ្ធផល។ តម្លៃ 1 មានន័យថាយើងអាចទាយបានអ្វីគ្រប់យ៉ាងយ៉ាងត្រឹមត្រូវ។ ក្នុងករណីយើង គុណហានិភ័យគឺប្រហែល 0.06 ដែលច្រើនទាប។
-យើងអាចគូសបង្ហាញទិន្នន័យសាកល្បងជាមួយខ្សែ regression ដើម្បីមើលឃើញថា regression ធ្វើការយ៉ាងដូចម្តេចក្នុងករណីរបស់យើងបានកាន់តែច្បាស់៖
+យើងក៏អាចគូរបង្ហាញទិន្នន័យសាកល្បងរួមជាមួយបន្ទាត់សមីការបញ្ចេញលទ្ធផល ដើម្បីមើលថាតើសមីការបញ្ចេញលទ្ធផលដំណើរការយ៉ាងដូចម្តេច៖
```python
plt.scatter(X_test,y_test)
plt.plot(X_test,pred)
```
-
+
-## Regression ប៉ូលីណូមី
+## សមីការបញ្ចេញលទ្ធផល Polynomial Regression
-ប្រភេទមួយផ្សេងទៀតនៃ Linear Regression គឺ Polynomial Regression។ ខណៈពេលពេលដែលពេលខ្លះ មានទំនាក់ទំនងបន្ទាត់រវាងអថេរណ៍ - ការរំលាយបំពងត្រូវបានវាស់ចំណុះកាន់តែធំ ទីផ្សារក៏កាន់តែល្អ - ពេលខ្លះទំនាក់ទំនងទាំងនេះមិនអាចត្រូវបានគូសបង្ហាញជាល្វែងឬបន្ទាត់តែមួយបានទេ។
+ប្រភេទមួយទៀតនៃសមីការបញ្ចេញលទ្ធផលបន្ទាត់គឺ សមីការ Polynomial Regression។ ខណៈពេលដែលខ្លះមានទំនាក់ទំនងបន្ទាត់រវាងអថេរផ្សេងៗ - ទំហំប៉ូមពេញមួយធំពីលទ្ធផលកាន់តែលើកម្លៃ យ៉ាងណាក៏ដោយ ទំនាក់ទំនងទាំងនេះមិនអាចគូរជាបន្ទាត់ផ្លាត់ ឬបន្ទាត់ត្រង់បានទេ។
-✅ សូមមើល [ឧទាហរណ៍បន្ថែម](https://online.stat.psu.edu/stat501/lesson/9/9.8) ទិន្នន័យដែលអាចប្រើបាន Polynomial Regression
+✅ នៅទីនេះមាន [ឧទាហរណ៍បន្ថែម](https://online.stat.psu.edu/stat501/lesson/9/9.8) នៃទិន្នន័យដែលអាចប្រើ Polynomial Regression
-មើលម្ដងទៀតលើទំនាក់ទំនងរវាង Date និង Price។ តើ scatterplot នេះមើលទៅដូចជាគួរត្រូវបានវិភាគតាមបន្ទាត់តែមួយទេ? តើតម្លៃនៃតម្លៃតម្លើងនឹងមានការធ្លាក់ឡើង? ក្នុងករណីនេះ អ្នកអាចសាកល្បង polynomial regression។
+សូមមើលទំនាក់ទំនងរវាង Date និង Price ជាទៀត។ តើ scatterplot នេះមើលទៅគួរត្រូវបានវិភាគដោយបន្ទាត់ត្រង់តែមួយ? តើតម្លៃអាចប្រែប្រួលបានទេ? ក្នុងករណីនេះ អ្នកអាចសាកល្បងសមីការ polynomial regression។
-✅ ប៉ូលីណូមីគឺជាការបង្ហាញគណិតវិទ្យាដែលអាចមានអថេរណ៍មួយឬច្រើន និងគុណលក្ខណៈ
+✅ Polynomials គឺជាអប្បបរមាណ គណិតវិទ្យា ដែលប្រហែលជាមានអថេរមួយ ឬច្រើន និងគោលបំណងជាសំណុំ
-Polynomial regression បង្កើតខ្សែជារបារោងក្រោងសម្រាប់ផ្គូរផ្គងទិន្នន័យប្លែកៗសម្រាប់ការព្យាករណ៍។ ក្នុងករណីរបស់យើង ប្រសិនបើយើងបញ្ចូលអថេរ `DayOfYear` កាយក្រិតទីពីរចូល ទិន្នន័យបញ្ចូល យើងអាចជួយឱ្យត្រូវបានផ្គូរផ្គងជាមួយខ្សែប្រមាណប៉ារ៉ាបល (parabolic curve) ដែលមានតម្លៃអប្បបរមានៅចំណុចមួយក្នុងឆ្នាំ។
+Polynomial regression បង្កើតបន្ទាត់ពោងដើម្បីផ្គួតផ្គងទិន្នន័យមិនបន្ទាត់បានល្អជាងមុន។ ក្នុងករណីរបស់យើង ប្រសិនបើបញ្ចូលអថេរ `DayOfYear` ការប្រកួតកំណត់ក្នុងទិន្នន័យចូលទាំងមូល យើងគួរតែអាចធ្វើការបណ្តុះក្នុងទិន្នន័យជាមួយព្រីលារតិសន្ទិលក្រោមរូបមន្ត Parabolic ដែលមានអប្បបរមានៅចំណុចមួយក្នុងឆ្នាំ។
-Scikit-learn មាន [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) ជំនួយសម្រាប់បង្រួមជំហាន ផលិតផលនៃដំណើរការទិន្នន័យជាមួយគ្នា។ **pipeline** ជាចំនងចងគ្នានៃ **estimators**។ ក្នុងករណីរបស់យើង យើងនឹងបង្កើត pipeline ដែលបន្ថែមលក្ខណៈ polynomial មុនបណ្តុះ regression:
+Scikit-learn មាន API [pipeline](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) ប្រយោជន៍ក្នុងការបញ្ចូលជំហ៊ានផ្សេងៗនៃការបញ្ចូលទិន្នន័យជាមួយគ្នា។ **pipeline** គឺជាច្រវាក់នៃ **estimators**។ ក្នុងករណីយើង យើងនឹងបង្កើត pipeline ដែលដំបូងបន្ថែមលក្ខណៈ polynomial ទៅម៉ូឌែល ហើយបន្ទាប់បណ្តុះ regression៖
```python
from sklearn.preprocessing import PolynomialFeatures
@@ -254,61 +255,83 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression())
pipeline.fit(X_train,y_train)
```
+
+ការប្រើ `PolynomialFeatures(2)` មានន័យថាយើងនឹងបញ្ចូល polynomials កំរិតទី ២ ទាំងអស់ពីទិន្នន័យបញ្ចូល។ ក្នុងករណីយើង នឹងមានតែមួយគឺគឺ `DayOfYear`2 ប៉ុន្តែជិតជាមួយអថេរចំនួនពីរ X និង Y វានឹងបន្ថែម X2, XY និង Y2។ យើងអាចប្រើ polynomials កំរិតខ្ពស់ជាងនេះបានផងដែរ ប្រសិនបើយើងចង់។
+
+Pipeline អាចប្រើបានយ៉ាងដូចគ្នាទៅនឹងវត្ថុ `LinearRegression` ដើម, គឺ៖ យើងអាច `fit` pipeline ហើយបន្ទាប់មកប្រើ `predict` ដើម្បីទទួលលទ្ធផលទាយ៖
+
+```python
+pred = pipeline.predict(X_test)
+
+rmse = np.sqrt(mean_squared_error(y_test,pred))
+print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)')
+
+score = pipeline.score(X_train,y_train)
+print('Model determination: ', score)
+```
+
+ដើម្បីគូរបន្ទាត់ពោងស្រទាប់ម៉ាត់ អ្នកប្រើ `np.linspace` ដើម្បីបង្កើតជួរចាប់ផ្តើមតម្លៃបញ្ចូលស្មើគ្នា ជាងការគូរតាមទិន្នន័យសាកល្បងដែលមិនមានលំដាប់ (ដែលនឹងបង្កើតបន្ទាត់ zigzag):
-ការប្រើប្រាស់ `PolynomialFeatures(2)` មានន័យថាយើងនឹងបញ្ចូលក polynomial ពីដំណើរការថ្នាក់ទីពីរទាំងអស់ ពីទិន្នន័យបញ្ចូល។ ក្នុងករណីរបស់យើង វានឹងមានតែ `DayOfYear`2 ប៉ុណ្ណោះ ប៉ុន្តែសម្រាប់អថេរឈ្មោះ X និង Y ខុសគ្នា វានឹងបន្ថែម X2 XY និង Y2។ យើងអាចប្រើ polynomial ថ្នាក់ខ្ពស់ជាងនេះប្រសិនបើចង់បាន។
+```python
+X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)
+y_range = pipeline.predict(X_range)
-Pipeline អាចប្រើដូចជាវត្ថុ `LinearRegression` ដើម គឺយើងអាច `fit` pipeline ហើយបន្ទាប់មកប្រើ `predict` ដើម្បីទទួលបានលទ្ធផល។ នេះជាក្រាផាងបង្ហាញទិន្នន័យសាកល្បង និងខ្សែប្រមាណ៖
+plt.scatter(X_test, y_test)
+plt.plot(X_range, y_range)
+```
+
+នេះគឺជាបន្ទាត់បង្ហាញទិន្នន័យសាកល្បង និងបន្ទាត់សន្និដ្ឋាន៖
-ដោយប្រើ Polynomial Regression យើងអាចទទួលបាន MSE ទាបបន្តិច និង coefficient determination ខ្ពស់ជាង ប៉ុន្តែមិនច្រើនខ្លាំងទេ។ យើងត្រូវយកចិត្តទុកដាក់ទៅលើលក្ខណៈផ្សេងទៀតផង!
+ប្រើ Polynomial Regression អាចទទួលបានកម្លាំង RMSE ទាបជាង និងឈរភាពកំណត់ខ្ពស់ជាង ប៉ុន្តែមិនច្រើនពេកទេ។ យើងត្រូវយកចិត្តទុកដាក់លើលក្ខណៈផ្សេងទៀត!
-> អ្នកអាចសង្កេតឃើញថា តម្លៃបណ្ដូលរបស់ កំបោរភាគច្រើនបង្ហាញនៅក្បែរបុណ្យ Halloween។ តើធ្វើដូចម្តេចដើម្បីពន្យល់ពីនេះ?
+> អ្នកអាចមើលឃើញថាតម្លៃបន្ទះប៉ូមគឺអប្បបរមា ខណៈពេលដែលនៅជិតបុណ្យ Halloween។ តើអ្នកអាចពន្យល់បែបណា?
-🎃 អបអរសាទរ អ្នកទើបបង្កើតម៉ូឌែលអាចជួយព្យាករណ៍តម្លៃកំបោរភាគបាយបាន។ អ្នកប្រហែលជាអាចធ្វើបែបនេះសម្រាប់ប្រភេទកំបោរទាំងអស់ ប៉ុន្តែវាអាចធ្វើឱ្យធុញនឿយ។ យើងនឹងរៀនពីរបៀបយកប្រភេទកំបោរចូលទៅក្នុងម៉ូឌែល!
+🎃 អបអរសាទរ! អ្នកបានបង្កើតម៉ូឌែលដែលអាចជួយទាយតម្លៃបន្ទះប៉ូមសម្រាប់នំបុ័ង។ អ្នកប្រហែលជាអាចធ្វើឡើងវិញសម្រាប់ប្រភេទប៉ូមទាំងអស់ ប៉ុន្តែវាជារឿងធុញនឿយ។ យើងត្រូវស្យៀនការយល់ពីរបៀបយកភាពខុសគ្នាប្រភេទប៉ូមចូលក្នុងម៉ូឌែលរបស់យើង!
-## លក្ខណៈប្រភេទ (Categorical Features)
+## លក្ខណៈកាតេហ្គរី
-នៅពិភពល្អ គួរតែមានសមត្ថភាពក្នុងការព្យាករណ៍តម្លៃសម្រាប់ប្រភេទកំបោរផ្សេងៗដោយប្រើម៉ូឌែលដូចគ្នា។ ក៏ប៉ុន្តែ បន្ទាត់ `Variety` ខុសគ្នាពីបន្ទាត់ដូចជា `Month` ពីព្រោះវាមានតម្លៃមិនមែនជាចំនួន។ បន្ទាត់ដូចនេះហៅថា **categorical**។
+នៅក្នុងពិភពដ៏ល្អបំផុត យើងចង់អាចទាយតម្លៃរបស់ប៉ូមប្រភេទផ្សេងៗ ដោយប្រើម៉ូឌែលដដែល។ ទោះយ៉ាងណា ជួរឈរដែលមានឈ្មោះ `Variety` មានភាពខុសពីជួរឈរដូចជា `Month` ពីព្រោះវាមានតម្លៃមិនមែនជាលេខ។ ជួរឈរដូចនេះហៅថា **categorical**។
[](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression")
-> 🎥 ចុចរូបភាពខាងលើដើម្បីមើលវីដេអូចង្អុលបង្ហាញខ្លីអំពីការប្រើលក្ខណៈ categorical។
+> 🎥 ចុចលើរូបភាពខាងលើសម្រាប់វីដេអូសង្ខេបអំពីការប្រើលក្ខណៈកាតេហ្គរី។
-នៅទីនេះ អ្នកអាចមើលឃើញថាតម្លៃមធ្យមនៃតម្លៃអាស្រ័យលើប្រភេទ៖
+នេះអ្នកអាចមើលឃើញថាតម្លៃមធ្យមពឹងផ្អែកលើប្រភេទ៖
-ដើម្បីយកប្រភេទគិតចូល ជាអង្គភាពចំនួន យើងត្រូវកំណត់វាទៅជាទ្រង់ទ្រាយចំនួនឬ **encode** វា។ មានវិធីខ្លះៗដូចនេះ៖
+ដើម្បីយកប្រភេទចូលក្នុងការគិតយើងត្រូវបំលែងវាទៅជាទម្រង់លេខ ឬ **encode** វា។ មានវិធីជាច្រើនដែលអាចធ្វើបាន៖
-* **numeric encoding** ងាយស្រួលបង្កើតតារាងប្រភេទផ្សេងៗ ហើយប្តូរឈ្មោះប្រភេទជាទីតាំងក្នុងតារាង។ នេះមិនល្អសម្រាប់ linear regression ព្រោះ linear regression ប្រើតម្លៃចំនួនជាក់លាក់របស់ index ហើយបូកលទ្ធផលដោយគុណនឹង coefficient មួយ។ នៅក្នុងករណីរបស់យើង ទំនាក់ទំនងរវាងលេខរៀងនិងតម្លៃមិនមែនជាបន្ទាត់ទេ ទោះបីយើងតម្រៀបតាមលំដាប់ជាការពិត។
-* **One-hot encoding** ជំនួបបន្ទាត់ `Variety` ជាមួយបន្ទាត់ ៤ ប្រភេទផ្សេងៗ បន្ទាត់មួយសម្រាប់ប្រភេទនីមួយៗ។ រាល់បន្ទាត់ នឹងមាន `1` ប្រសិនបើជាបន្ទាត់នៃប្រភេទនោះ និង `0` ប្រសិនបើមិនមែន។ នោះមានន័យថា មានគុណលក្ខណៈបួននៅក្នុង linear regression សម្រាប់ប្រភេទកំបោរផ្សេងៗ ដែលរួមបញ្ចូលតម្លៃចាប់ផ្តើម (ឬតម្លៃបន្ថែម) សម្រាប់ប្រភេទនោះ។
+* ការបំលែងលេខសាមញ្ញ (**numeric encoding**) នឹងបង្កើតតារាងនៃប្រភេទផ្សេងៗ ហើយបន្ទាប់មកប្តូរឈ្មោះប្រភេទជាកន្លែងក្នុងតារាង។ វាមិនមែនជាគំនិតល្អសម្រាប់សមីការបញ្ចេញលទ្ធផលបន្ទាត់ ទេ ព្រោះសមីការបញ្ចេញលទ្ធផលបន្ទាត់យកតម្លៃលេខនៃសន្ទស្សន៍ចូលរួមក្នុងការគណនា ហើយបូកបន្ថែមចូល ធ្វើការបូកគុណជាមួយគោលបំណងខ្លះ។ ក្នុងករណីយើង ទំនាក់ទំនងរវាងលេខសន្ទស្សន៍ និងតម្លៃពិតមិនបន្ទាត់ទេ ទោះបីយើងធ្វើអោយតំណាងលេខត្រូវត្រួតត្រាក្នុងលំដាប់ច្បាស់ក៏ដោយ។
+* ការបំលែងប្រភេទជា **one-hot encoding** នឹងប្តូរជួរឈរ `Variety` ទៅជាជួរឈរបួនផ្សេងៗ មួយសម្រាប់ប្រភេទនីមួយៗ។ ត្រង់ជួរឈរនីមួយនឹងមានតម្លៃ `1` ប្រសិនបើជួរដេកពាក់ព័ន្ធជាប្រភេទនោះ ហើយ `0` ផ្សេងៗគ្នា។ នេះមានន័យថានឹងមានគោលបំណងបួនក្នុងសមីការបញ្ចេញលទ្ធផលឲ្យតម្រូវតម្លៃចាប់ផ្តើម (ឬ “តម្លៃបន្ថែម”) សម្រាប់ប្រភេទប៉ូមនីមួយៗ។
-កូដខាងក្រោមបង្ហាញពីរបៀបបម្លែងប្រភេទទៅ one-hot encoding៖
+កូដខាងក្រោមបង្ហាញពីរបៀបដែលយើងអាចបំលែងប្រភេទជាទម្រង់ one-hot encoded៖
```python
pd.get_dummies(new_pumpkins['Variety'])
```
-
- ID | FAIRYTALE | MINIATURE | MIXED HEIRLOOM VARIETIES | PIE TYPE
-----|-----------|-----------|--------------------------|----------
-70 | 0 | 0 | 0 | 1
-71 | 0 | 0 | 0 | 1
-... | ... | ... | ... | ...
-1738 | 0 | 1 | 0 | 0
-1739 | 0 | 1 | 0 | 0
-1740 | 0 | 1 | 0 | 0
-1741 | 0 | 1 | 0 | 0
-1742 | 0 | 1 | 0 | 0
-
-ដើម្បីបណ្តុះ linear regression ជាមួយ one-hot encoded variety ជាដំណើរការបញ្ចូល បូកផ្សំពីការចាប់ផ្តើម `X` និង `y` ត្រូវបានកំណត់ត្រឹមត្រូវ៖
+
+ ID | FAIRYTALE | MINIATURE | MIXED HEIRLOOM VARIETIES | PIE TYPE
+----|-----------|-----------|--------------------------|----------
+70 | 0 | 0 | 0 | 1
+71 | 0 | 0 | 0 | 1
+... | ... | ... | ... | ...
+1738 | 0 | 1 | 0 | 0
+1739 | 0 | 1 | 0 | 0
+1740 | 0 | 1 | 0 | 0
+1741 | 0 | 1 | 0 | 0
+1742 | 0 | 1 | 0 | 0
+
+ដើម្បីបណ្តុះសមីការបញ្ចេញលទ្ធផលបន្ទាត់ប្រើបណ្តុះប្រភេទ one-hot encoded ជា input យើងគ្រាន់តែត្រូវផ្តល់ `X` និង `y` ដោយត្រឹមត្រូវ៖
```python
X = pd.get_dummies(new_pumpkins['Variety'])
y = new_pumpkins['Price']
```
-
-កូដដែលនៅសល់ដូចគ្នានឹងវាដែលបានប្រើខាងលើសម្រាប់បណ្តុះ Linear Regression។ ប្រសិនបើអ្នកសាកល្បង វានឹងបង្ហាញថា mean squared error ប្រហែលដូចគ្នា ប៉ុន្តែ coefficient determination ទទួលបានខ្ពស់ជាង (~77%)។ ដើម្បីទទួលបានការព្យាករណ៍ត្រឹមត្រូវច្រើនទៀត អ្នកអាចយកលក្ខណៈ categorical ផ្សេងៗ និងលក្ខណៈចំនួនដូចជា `Month` ឬ `DayOfYear` មកគិតរួម។ ដើម្បីទទួលបាន array លក្ខណៈធំមួយ អ្នកអាចប្រើ `join`៖
+
+Remaining កូដដូចគ្នានឹងអ្វីដែលយើងប្រើខាងលើសម្រាប់បណ្តុះ Linear Regression។ ប្រសិនបើអ្នកសាកល្បង អ្នកនឹងឃើញថាកំហុសគន្លងគំនូសមធ្យមនៃ squared error ជិតតំលៃដដែល ប៉ុន្តាយើងទទួលបាន coefficient of determination ខ្ពស់ជាង (~77%)។ ដើម្បីទទួលបានការទាយខ្ពស់ជាងនេះទៀត យើងអាចយកលក្ខណៈ categorical ជាច្រើនជាមួយ លក្ខណៈលេខ ដូចជា `Month` ឬ `DayOfYear`។ ដើម្បីធ្វើអោយជាសំណុំលក្ខណៈធំមួយ យើងអាចប្រើ `join`៖
```python
X = pd.get_dummies(new_pumpkins['Variety']) \
@@ -317,69 +340,69 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
.join(pd.get_dummies(new_pumpkins['Package']))
y = new_pumpkins['Price']
```
+
+នៅទីនេះយើងក៏យកចិត្តទុកដាក់លើ `City` និងប្រភេទ `Package` ផងដែរ ដែលផ្តល់ RMSE 2.84 (១០.៥%) និង coefficient determination 0.94!
-នៅទីនេះ យើងក៏នឹងយក `City` និងប្រភេទ `Package` ទៅគិតផង ដែលផ្តល់ឱ្យយើង MSE 2.84 (10%) និង coefficient determination 0.94!
-
-## បង្ហាប់គ្រប់យ៉ាងរួមគ្នា
+## សម្រង់ទាំងអស់ជាមួយគ្នា
-ដើម្បីបង្កើតម៉ូឌែលល្អបំផុត យើងអាចប្រើទិន្នន័យបញ្ចូលរួមគ្នា (categorical one-hot encoded + numeric) ពីឧទាហរណ៍ខាងលើជាមួយ Polynomial Regression។ រួចកូដពេញលេញសម្រាប់ការងាររបស់អ្នក៖
+ដើម្បីបង្កើតម៉ូឌែលល្អបំផុត យើងអាចប្រើទិន្នន័យរួម (categorical one-hot encoded + numeric) ពីឧទាហរណ៍ខាងលើ រួមជាមួយ Polynomial Regression។ នេះជាកូដពេញលេញសម្រាប់សម្រួលអ្នក៖
```python
-# ប្រើប្រាស់ទិន្នន័យសម្រាប់ហាត់ប្រាណ
+# បង្កើតទិន្នន័យសម្រាប់បណ្ដុះបណ្ដាល
X = pd.get_dummies(new_pumpkins['Variety']) \
.join(new_pumpkins['Month']) \
.join(pd.get_dummies(new_pumpkins['City'])) \
.join(pd.get_dummies(new_pumpkins['Package']))
y = new_pumpkins['Price']
-# បំបែកទិន្នន័យចេញជាបំណែកហាត់ប្រាណ និងសាកល្បង
+# បំបែកទិន្នន័យចេញជាក្រុមបណ្ដុះបណ្ដាល និងសំណួរប្រលង
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
-# រៀបចំ និងហាត់ប្រាណផ្លូវប្រតិបត្តិការ
+# កំណត់ និងបណ្ដុះបណ្ដាលបាយឡុង
pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression())
pipeline.fit(X_train,y_train)
-# ព្យាករណ៍លទ្ធផលសម្រាប់ទិន្នន័យសាកល្បង
+# ប្រោសចេញលទ្ធផលសម្រាប់ទិន្នន័យសាកល្បង
pred = pipeline.predict(X_test)
-# គណនារាង MSE និងកំណត់ការសម្រេច
-mse = np.sqrt(mean_squared_error(y_test,pred))
-print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)')
+# គណនាតម្លៃ RMSE និងកំណត់ការសំរេច
+rmse = mean_squared_error(y_test, pred, squared=False)
+print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)')
score = pipeline.score(X_train,y_train)
print('Model determination: ', score)
```
-
-នេះគួរតែផ្តល់ឱ្យយើងនូវ coefficient determination ខ្ពស់ជាងគេប្រមាណ 97% និង MSE=2.23 (~8% កំហុសព្យាករណ៍) ។
-
-| ម៉ូឌែល | MSE | Coefficient determination |
-|-------|-----|---------------------------|
-| `DayOfYear` Linear | 2.77 (17.2%) | 0.07 |
-| `DayOfYear` Polynomial | 2.73 (17.0%) | 0.08 |
-| `Variety` Linear | 5.24 (19.7%) | 0.77 |
-| លក្ខណៈទាំងអស់ Linear | 2.84 (10.5%) | 0.94 |
+
+នេះគួរតែផ្តល់ឲ្យយើងបាន coefficient determination ល្អបំផុតប្រហែល ៩៧% និង RMSE=2.23 (~៨% កំហុស).
+
+| ម៉ូឌែល | RMSE | coefficient determination |
+|-------|-----|-------------------------|
+| `DayOfYear` Linear | 2.77 (17.2%) | 0.07 |
+| `DayOfYear` Polynomial | 2.73 (17.0%) | 0.08 |
+| `Variety` Linear | 5.24 (19.7%) | 0.77 |
+| លក្ខណៈទាំងអស់ Linear | 2.84 (10.5%) | 0.94 |
| លក្ខណៈទាំងអស់ Polynomial | 2.23 (8.25%) | 0.97 |
-🏆 តើអ្នកបានធ្វើបានល្អ! អ្នកបង្កើតម៉ូឌែល Regression បួនក្នុងមួយមេរៀន ហើយបង្កើតគុណភាពម៉ូឌែលបានទៅដល់97%។ នៅក្នុងផ្នែកចុងក្រោយ នៃមេរៀន Regression អ្នកនឹងរៀនអំពី Logistic Regression ដើម្បីកំណត់ប្រភេទ។
+🏆 សូមអបអរសាទរ! អ្នកបានបង្កើតម៉ូឌែល Regression បួនប្រភេទក្នុងមេរៀនមួយ ហើយកែលម្អគុណភាពម៉ូឌែលដល់ ៩៧%។ នៅផ្នែកចុងក្រោយនៃមេរៀន Regression អ្នកនឹងរៀនអំពី Logistic Regression ដើម្បីកំណត់ប្រភេទ។
----
-## 🚀 បញ្ញើ
+---
+## 🚀ការប្រកួតប្រជែង
-សាកល្បងអថេរផ្សេងៗគ្នាក្នុងកំណត់ត្រានេះ ដើម្បីមើលថាតើការតភ្ជាប់ទំនាក់ទំនងសមរម្យទៅប៉ុណ្ណា ជាមួយគុណភាពម៉ូឌែល។
+សាកល្បងអថេរផ្សេងៗក្នុង notebook នេះ ដើម្បីមើលថាតើធរណីមាត្រភ្ជាប់សម្រាប់ការទាយម៉ូឌែលមានភាពទាក់ទងយ៉ាងដូចម្តេច។
-## [ការប្រលងក្រោយមេរៀន](https://ff-quizzes.netlify.app/en/ml/)
+## [សំណួរប្រឡងបន្ទាប់មេរៀន](https://ff-quizzes.netlify.app/en/ml/)
-## សិក្សាផ្ទាល់ខ្លួន
+## ការពិនិត្យឡើងវិញ និងរៀនដោយខ្លួនឯង
-នៅក្នុងមេរៀននេះ យើងបានរៀនអំពី Linear Regression។ មានប្រភេទ Regression ផ្សេងទៀតដែលសំខាន់។ សូមអានអំពី Stepwise, Ridge, Lasso និង Elasticnet។ វគ្គសិក្សាល្អសម្រាប់រៀនបន្ថែមគឺ [វគ្គសិក្សារបស់ Stanford Statistical Learning](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)
+នៅក្នុងមេរៀននេះ យើងបានរៀនអំពី Linear Regression។ មានប្រភេទសមីការបញ្ចេញលទ្ធផលសំខាន់ផ្សេងទៀត។ សូមអានអំពី Stepwise, Ridge, Lasso និង Elasticnet techniques។ មេរៀនល្អសម្រាប់អនុវត្តន៍បន្ថែមគឺ [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)
-## ការបង្រៀន
+## បេសកកម្ម
[បង្កើតម៉ូឌែល](assignment.md)
---
-**ការព្រមាន**៖
-ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាប្រែសម្រួល AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលដែលយើងខិតខំប្រឹងប្រែងចំពោះភាពត្រឹមត្រូវ សូមយកចិត្តទុកដាក់ថាការប្រែសម្រួលដោយស្វ័យប្រវត្តិនោះអាចមានកំហុសឬការខ្វះខាតបាន។ ឯកសារដើមក្នុងភាសាមាតុភូមិគួរត្រូវបានយកទៅពិចារណាជាតម្រូវការសំខាន់។ សម្រាប់ព័ត៌មានសំខាន់ៗ ការប្រែសម្រួលដោយអ្នកជំនាញមនុស្សគឺត្រូវបានផ្ដល់អនុសាសន៍។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកប្រែខុសចាប់ពីការប្រើប្រាស់ការប្រែសម្រួលនេះឡើយ។
+**ការបដិសេធ**:
+ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលដែលយើងខិតខំប្រឹងប្រែងសម្រាប់ភាពត្រឹមត្រូវ សូមយល់ឲ្យបានថាការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុស ឬភាពមិនត្រឹមត្រូវ។ ឯកសារដើមក្នុងភាសាមាតុភូមិគួរត្រូវបានគេយកជាជាតំណរ ម៉ោងសម្រាប់ព័ត៌មានសំខាន់ៗ គេណែនាំឲ្យប្រើការបកប្រែដោយអ្នកជំនាញ។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកស្រាយខុសកើតឡើងពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។
\ No newline at end of file
diff --git a/translations/km/2-Regression/3-Linear/solution/notebook.ipynb b/translations/km/2-Regression/3-Linear/solution/notebook.ipynb
index a81a7252e..e21ef9a3a 100644
--- a/translations/km/2-Regression/3-Linear/solution/notebook.ipynb
+++ b/translations/km/2-Regression/3-Linear/solution/notebook.ipynb
@@ -4,14 +4,14 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## ការធ្វើប្រតិកម្មរស្មី និងប៉ូលីណូម្យែលសម្រាប់ការកំណត់តម្លៃស្ពឺគ្រប់លក្ខណៈ - មេរៀនទី 3\n",
+ "## ការតម្រឹមបន្ទាត់ និងផលវិភាគពហុវិថីសម្រាប់តម្លៃទឹកដោះគោ - មេរៀនទី 3\n",
"\n",
- "ផ្ទុកបណ្ណាល័យនិងទិន្នន័យដែលត្រូវការ។ បម្លែងទិន្នន័យទៅជាតារាងដែលមានផ្នែកមួយនៃទិន្នន័យ៖\n",
+ "រុញបណ្ណាល័យដែលត្រូវការ និងកំពុងប្រើនូវឯកសារទិន្នន័យ។ បម្លែងទិន្នន័យទៅជា dataframe ដែលមានកំណត់ខ្លះនៃទិន្នន័យ៖\n",
"\n",
- "- តែចាប់យកស្ពឺដែលមានតម្លៃតាមប៊ែស៊ែលតែប៉ុណ្ណោះ \n",
- "- បម្លែងកាលបរិច្ឆេទទៅជាខែ \n",
- "- គណនាតម្លៃជាមធ្យមនៃតម្លៃខ្ពស់ និងទាប \n",
- "- បម្លែងតម្លៃឲ្យបង្ហាញតម្លៃតាមបរិមាណប៊ែស៊ែល\n"
+ "- យកតែទឹកដោះគោដែលមានតម្លៃលក់តាមប៊ូស៊ែលតែប៉ុណ្ណោះ\n",
+ "- បម្លែងកាលបរិច្ឆេទទៅជាខែ\n",
+ "- គណនាតម្លៃឲ្យជាជាក់ស្តែងមធ្យមនៃតម្លៃខ្ពស់ និងទាប\n",
+ "- បម្លែងតម្លៃដើម្បីបញ្ចូលតម្លៃតាមបរិមាណប៊ូស៊ែល\n"
]
},
{
@@ -377,7 +377,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "ប្លង់ចែកចាយរំឮកឲ្យយើងចាំថាយើងមានទិន្នន័យតែពីខែសីហារទៅដល់ខែធ្នូតែប៉ុណ្ណោះ។ យើងប្រហែលជាចាំបាច់ត្រូវការទិន្នន័យបន្ថែមដើម្បីអាចរើសសេចក្តីសន្និដ្ឋានក្នុងរបៀបបន្ទាត់បាន។\n"
+ "ផ្លុតចោលបង្ហាញយើងថាយើងមានទិន្នន័យខែត្រឹមតែពីខែសីហាររហូតដល់ខែធ្នូប៉ុណ្ណោះ។ យើងប្រហែលជាត្រូវការទិន្នន័យបន្ថែមទៀតដើម្បីអាចស្រាវជ្រាវផលិតផលបានយ៉ាងត្រួតត្រា។\n"
]
},
{
@@ -448,7 +448,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "មកមើលថាតើមានការតភ្ជាប់គ្នាឬអត់:\n"
+ "មកពិនិត្យមើលថាតើមានទំនាក់ទំនងឬអត់៖\n"
]
},
{
@@ -474,7 +474,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "ហាក់ដូចជាការតភ្ជាប់គ្នាមានតិចតួច ប៉ុន្តែមានសម្រង់ផ្សេងទៀតសំខាន់ជាងនេះ - ព្រោះចំណុចតម្លៃនៅក្នុងរូបភាពខាងលើមានក្រុមច្រើនផ្សេងគ្នា។ យើងចាំបាច់ត្រូវបង្កើតរូបភាពមួយដែលបង្ហាញពីប្រភេទផ្លែផលឪឡឹកផ្សេងៗ៖\n"
+ "ដូចជាការតភ្ជាប់គ្នាពិតប្រាកដមានតិចណាស់ ប៉ុន្តែក៏មានទំនាក់ទំនងសំខាន់បន្ថែមទៀតផង ព្រោះតម្លៃនៅក្នុងសម្រាំងខាងលើដូចជាមានក្រុមច្រើនចំនួនផ្សេងគ្នា។ យើងចង់បង្កើតសម្រាំងមួយដែលនឹងបង្ហាញប្រភេទផ្លែខ្ចប់ផ្សេងៗ:\n"
]
},
{
@@ -538,7 +538,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "សម្រាប់ពេលវេលានេះ មកផ្តោតលើកំណត់តែប្រភេទតែមួយគត់ - **ប្រភេទប៉ាយ**។\n"
+ "សម្រាប់ពេលនេះ យើងមកផ្តោតលើប្រភេទមួយតែប៉ុណ្ណោះ - **ប្រភេទប៉ាយ**។\n"
]
},
{
@@ -586,9 +586,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "### ព្រីរេស៊ីយ៉ុងវែគ្គ\n",
+ "### អនុគមន៍រៀងរាល់បន្ទាត់\n",
"\n",
- "យើងនឹងប្រើ Scikit Learn ដើម្បីបណ្តុះម៉ូឌែលព្រីរេស៊ីយ៉ុងវែគ្គ៖\n"
+ "យើងនឹងប្រើ Scikit Learn ដើម្បីហ្វឹកហាត់ម៉ូដែលអនុគមន៍រៀងរាល់បន្ទាត់៖\n"
]
},
{
@@ -666,7 +666,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "ចំនង់ជន្លង់នៃរបារអាចកំណត់បានពីមេគុណសមីការស្រប៖\n"
+ "ចំណេញប៉ារ៉ាលែលនៃខ្សែអាចកំណត់បានពីអនុបាគនៃការវិញ្ញាសាទ្រង់បូកដូចតទៅ៖\n"
]
},
{
@@ -693,7 +693,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "យើងអាចប្រើម៉ូដែលដែលបានបណ្តុះបណ្តាលដើម្បីព្យាករណ៍តម្លៃបាន៖\n"
+ "យើងអាចប្រើម៉ូដែលដែលបានបណ្តុះបណ្តាលក្នុងការព្យាករណ៍តម្លៃៈ\n"
]
},
{
@@ -722,11 +722,11 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "### ប្រតិកម្មPolynomial\n",
+ "### ព្រីហ្សេស្យុងប៉ូលីណូមី얼\n",
"\n",
- "ម្តងម្កាលទំនាក់ទំនងរវាងលក្ខណៈពិសេស និងលទ្ធផលគឺមិនមែនជាកំណត់រចនាសម្ព័ន្ធបន្ទាត់ទេ។ ឧទាហរណ៍ តម្លៃដូងអាចខ្ពស់នៅរដូវរងារ (ខែ=1,2) បន្ទាប់មកធ្លាក់ចុះនៅរដូវក្តៅ (ខែ=5-7) ហើយបន្ទាប់មកឡើងវិញ។ ការប្រែប្រួលបន្ទាត់មិនអាចរកបានទំនាក់ទំនងនេះយ៉ាងត្រឺតព្រាន់។\n",
+ "មួយចំនួន ពីព្រោះទំនាក់ទំនងរវាងលក្ខណៈពិសេស និងលទ្ធផល គឺជាបែបអត់បូណ៌។ ឧទាហរណ៍ តម្លៃកំពុងមានការឡើងខ្ពស់ក្នុងរដូវរងារប្រោះខែ(1,2) បន្ទាប់មកធ្លាក់ចុះក្នុងរដូវក្ដៅ(ខែ5-7) ហើយបន្ទាប់មកឡើងវិញ។ ព្រីហ្សេស្យុងបន្ទាត់មិនអាចរកបានទំនាក់ទំនងនេះយ៉ាងត្រឹមត្រូវទេ។\n",
"\n",
- "នៅក្នុងករណីនេះ យើងអាចពិចារណាបន្ថែមលក្ខណៈពិសេសបន្ថែម។ វិធីសាមញ្ញគឺប្រើរូបមន្តប៉ូលីណូមីពីលក្ខណៈបញ្ចូល ដែលនឹងនាំឱ្យមាន **ប្រតិកម្មPolynomial**។ នៅក្នុង Scikit Learn យើងអាចគណនាលក្ខណៈប៉ូលីណូមីជាមុនដោយស្វ័យប្រវត្តិនៅតាម pipeline: \n"
+ "នៅក្នុងករណីនេះ យើងអាចពិចារណាបន្ថែមលក្ខណៈពិសេសបន្ថែម។ វិធីសាមញ្ញគឺប្រើពូលីណូមីលពីលក្ខណៈបញ្ចូល ដែលនឹងនាំឱ្យមាន **ព្រីហ្សេស្យុងប៉ូលីណូមី얼**។ ក្នុង Scikit Learn យើងអាចគណនាពូលីណូមីលស្វ័យប្រវត្តិដោយប្រើបាព្លាយន៍: \n"
]
},
{
@@ -781,22 +781,25 @@
"score = pipeline.score(X_train,y_train)\n",
"print('Model determination: ', score)\n",
"\n",
- "plt.scatter(X_test,y_test)\n",
- "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))"
+ "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n",
+ "y_range = pipeline.predict(X_range)\n",
+ "\n",
+ "plt.scatter(X_test, y_test)\n",
+ "plt.plot(X_range, y_range)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "### ប្រភេទការអ៊ិនគូដ\n",
+ "### ចំលើយកូដផ្សេងៗ\n",
"\n",
- "នៅក្នុងពិភពលោកដ៏ល្អឥតខ្ចោះ យើងចង់អាចរំពឹងទុកតម្លៃសម្រាប់ប្រភេទផ្លែទំពាំងបាយជូផ្សេងៗដោយប្រើម៉ូដែលដដែល។ ដើម្បីគិតគូរប្រភេទ យើងត្រូវការបម្លែងវាទៅជាទម្រង់ខ្នាតលេខ ឬ **អ៊ិនគូដ**។ មានវិធីជាច្រើនដែលយើងអាចធ្វើបាន៖\n",
+ "នៅក្នុងពិភពដែលល្អបំផុត យើងចង់អាចទាយថ្លៃសម្រាប់ចំលើយកូដត pumpkin ផ្សេងៗដោយប្រើម៉ូដែលដដែល។ ដើម្បីយកចំលើយកូដទៅគិត គឺយើងត្រូវបម្លែងវាទៅជាទម្រង់គណ Orchardic ឬ **encode**។ មានវិធីជាច្រើនដែលយើងអាចធ្វើបាន៖\n",
"\n",
- "* ការអ៊ិនគូដខ្នាតលេខសាមញ្ញ ដែលនឹងបង្កើតតារាងនៃប្រភេទផ្សេងៗ ហើយបន្ទាប់មកជំនួសឈ្មោះប្រភេទដោយដាក់លេខលំដាប់ក្នុងតារាងនោះ។ នេះមិនមែនជាគំនិតល្អសម្រាប់ការត្រួតពិនិត្យបែបរូបមន្តស្រឡាញ់ សម្រាប់ linear regression ទេ ព្រោះ linear regression ស្រមៃថា តម្លៃខ្នាតលេខនៃលេខលំដាប់នោះមានទំនាក់ទំនងជាមួយតម្លៃតាមលេខ ហើយតម្លៃខ្នាតលេខនោះនឹងមិនបានសម្របសម្រួលជាលេខជាមួយតម្លៃតម្លៃទេ។\n",
- "* ការអ៊ិនគូដOne-hot ដែលនឹងជំនួសជួរឈរប្រភេទ `Variety` ជាជួរឈរពីរពណ៌ 4 មក 4 ជួរឈរ ភាគតែមួយសម្រាប់ប្រភេទនីមួយៗ ដែលនឹងមានលេខ 1 ប្រសិនបើជួរដេកនោះជាប្រភេទដែលបានកំណត់ ហើយ 0 ករណីផ្សេងទៀត។\n",
+ "* ការចំលើយកូដគណ Orchardic ដ៏សាមញ្ញ ដែលនឹងបង្កើតតារាងនៃចំលើយកូដផ្សេងៗ ហើយបន្ទាប់មកជំនួសឈ្មោះចំលើយកូដនោះដោយកន្លែងបន្ទាត់នៅក្នុងតារាងនោះ។ នេះមិនមែនជាគំនិតល្អបំផុតសម្រាប់វិធីសាស្រ្តរេហ្គ្រីស្យុងបន្ទាត់ទេ ពីព្រោះវិធីសាស្រ្តនោះគិតតម្លៃគណ Orchardic នៃកន្លែងបន្ទាត់ ដោយតម្លៃគណ Orchardic នោះមិនជាទំនាក់ទំនងគ្នាទៅនឹងតម្លៃតម្លៃនេះនោះទេ។\n",
+ "* ការចំលើយកូដមួយ-កំពូល (one-hot encoding) ដែលនឹងជំនួសជួរឈរឈ្មោះ `Variety` ដោយជួរឈរ ៤ ទៀត ផ្សេងៗគ្នា ដែលមួយសម្រាប់ចំលើយកូដនីមួយៗ ហើយនឹងផ្ទុកលេខ ១ ប្រសិនបើជួរបង្ហាញពីចំលើយនោះ និង ០ ផ្សេងទៀត។\n",
"\n",
- "កូដខាងក្រោមបង្ហាញពីរបៀបដែលយើងអាចអ៊ិនគូដដែលមានទម្រង់ one-hot សម្រាប់ប្រភេទ៖\n"
+ "កូដខាងក្រោមបង្ហាញពីរបៀបដែលយើងអាចធ្វើការចំលើយកូដមួយ-កំពូលសម្រាប់ចំលើយកូដមួយបាន៖\n"
]
},
{
@@ -944,9 +947,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "### រេស៊ែរស្យុងរېខប្រេសស្យុងលើប្រភេទ\n",
+ "### ការវិភាគបន្ទាត់លើចំរើន\n",
"\n",
- "ឥឡូវនេះយើងនឹងប្រើកូដដូចខាងលើ ប៉ុន្តែមិនប្រើ `DayOfYear` ទេ ប៉ុន្តែយើងនឹងប្រើប្រភេទដែលបានកូដជាមួយភាគទានមួយ:\n"
+ "ឥឡូវនេះយើងនឹងប្រើកូដដដែលដូចខាងលើ ប៉ុន្តែប្ដូរពី `DayOfYear` ទៅប្រើចំរើនដែលបាន encode មួយ-កម្រិតជាអាំងទឺរបែបមួយ:\n"
]
},
{
@@ -994,7 +997,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "យើងអាចសាកល្បងប្រើលក្ខណៈពិសេសផ្សេងទៀតដោយវិធីដូចគ្នានេះ ហើយបញ្ចូលវាជាមួយលក្ខណៈសារពើភ័ណ្ឌជាឈ្មេាះ គឺដូចជា `Month` ឬ `DayOfYear`:\n"
+ "យើងក៏អាចព្យាយាមប្រើលក្ខណៈផ្សេងទៀតក្នុងវិធីដូចគ្នាបែបនេះ រួមបញ្ចូលជាមួយលក្ខណៈគណនាតូចៗដូចជា `Month` ឬ `DayOfYear`:\n"
]
},
{
@@ -1025,9 +1028,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "### បន្ទាត់ពហុប៉ូលីណូមីយ៉ាល់\n",
+ "### ការប្រូកទំហំប៉ូលីណូមីយ៉ាល\n",
"\n",
- "បន្ទាត់ពហុប៉ូលីណូមីយ៉ាល់អាចត្រូវបានប្រើជាមួយលក្ខណៈប្រភេទដែលបានបម្លែងជារូបមន្តមួយ-កម្រិត។ កូដសម្រាប់បណ្តុះបណ្តាលបន្ទាត់ពហុប៉ូលីណូមីយ៉ាល់គឺស្អិតដូចជាដែលយើងបានឃើញខាងលើ។\n"
+ "ការប្រូកទំហំប៉ូលីណូមីយ៉ាលអាចត្រូវបានប្រើជាមួយលក្ខណៈប្រភេទដែលត្រូវបានកូដកម្មអ៊ុតទៅតែមួយក៏បាន។ កូដសម្រាប់បណ្តុះបណ្តាលការប្រូកទំហំប៉ូលីណូមីយ៉ាលវានឹងស្រដៀងគ្នានឹងអ្វីដែលយើងបានឃើញខាងលើ។\n"
]
},
{
@@ -1074,7 +1077,7 @@
"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"
]
}
],