chore(i18n): sync translations with latest source changes (chunk 3/3, 82 changes)

pull/761/head
localizeflow[bot] 3 months ago
parent 50a8750976
commit 99b18ade45

File diff suppressed because one or more lines are too long

@ -0,0 +1,24 @@
# មុខជំនាញទិន្នន័យ
![data in action](../../../translated_images/km/data.48e22bb7617d8d92.webp)
> រូបថតដោយ <a href="https://unsplash.com/@dawson2406?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Stephen Dawson</a> នៅលើ <a href="https://unsplash.com/s/photos/data?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Unsplash</a>
នៅក្នុងមេរៀនទាំងនេះ អ្នកនឹងស្វែងយល់ថាមុខជំនាញទិន្នន័យត្រូវបានកំណត់យ៉ាងដូចម្តេច ហើយរៀនអំពីការពិចារណាអំពីចរិតល្អវិជ្ជាជីវៈដែលត្រូវបានគេគិតទុកសម្រាប់អ្នកវិទ្យាសាស្ត្រទិន្នន័យ។ អ្នកនឹងរៀនផងដែរ របៀបកំណត់ន័យទិន្នន័យ និងរៀនរឿងខ្លីៗពាក់ព័ន្ធនឹងស្ថិតិសាស្ត្រ និងសម្បត្តិនៃកំហុស ឆ្លងកាត់ផ្នែកសិក្សាសំខាន់ៗនៃមុខជំនាញទិន្នន័យ។
### ប្រធានបទ
1. [ការកំណត់មុខជំនាញទិន្នន័យ](01-defining-data-science/README.md)
2. [ចរិតវិជ្ជាជីវៈនៃមុខជំនាញទិន្នន័យ](02-ethics/README.md)
3. [ការកំណត់ន័យទិន្នន័យ](03-defining-data/README.md)
4. [ការណែនាំអំពីស្ថិតិសាស្ត្រ និងសម្បត្តិនៃកំហុស](04-stats-and-probability/README.md)
### ការទទួលស្គាល់
មេរៀនទាំងនេះបានសរសេរដោយមាន❤️ដោយ [Nitya Narasimhan](https://twitter.com/nitya) និង [Dmitry Soshnikov](https://twitter.com/shwars)។
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការព្រមាន**៖
ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ពីព្រោះយើងខិតខំសម្រាប់ភាពត្រឹមត្រូវ សូមយកចិត្តទុកដាក់ថាការបកប្រែដោយស្វ័យប្រវត្តិនេះអាចមានកំហុស ឬក៏ភាពមិនត្រឹមត្រូវ។ ឯកសារដើមក្នុងភាសាម្ចាស់ភាគគឺជាផ្ទៃដីដ៏ត្រឹមត្រូវ។ សម្រាប់ព័ត៌មានសំខាន់ៗ សូមផ្នែកបកប្រែដោយអ្នកជំនាញមានបទពិសោធន៍ត្រូវបានផ្តល់អាទិភាព។ យើងមិនមានភារកិច្ចចំពោះការយល់ច្រឡំនិងការបកស្រាយខុសៗ កើតមានពីការប្រើប្រាស់ការបកប្រែនេះទេ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,190 @@
# ការធ្វើការ​ជាមួយ​ទិន្នន័យ៖ មូលដ្ឋាន​ទិន្នន័យ​ទំនាក់ទំនង
|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/05-RelationalData.png)|
|:---:|
| ការធ្វើការ​ជាមួយ​ទិន្នន័យ៖ មូលដ្ឋាន​ទិន្នន័យ​ទំនាក់ទំនង - _Sketchnote by [@nitya](https://twitter.com/nitya)_ |
ការសម្រួលភាព អ្នកប្រហែលជាបានប្រើប្រាស់សន្លឹកគណនា (spreadsheet) នៅអតីតកាលដើម្បីផ្ទុកព័ត៌មាន។ អ្នកមានជួរនិងកូឡាំ, ដែលជួរនោះមានព័ត៌មាន (ឬទិន្នន័យ), ហើយកូឡាំពិពណ៌នាព័ត៌មាន (ដែលម្តងម្កាលហៅថាmetadata)។ មូលដ្ឋានទិន្នន័យទំនាក់ទំនងត្រូវបានបង្កើតឡើងលើគ្រឹះស្នូលនេះនៃកូឡាំនិងជួរនៅក្នុងតារាង, អនុញ្ញាតឱ្យអ្នកមានព័ត៌មានចែកចាយក្នុងតារាងច្រើន។ នេះអនុញ្ញាតឱ្យអ្នកធ្វើការជាមួយទិន្នន័យផ្ទាល់ខ្លួនស្មុគស្មាញជាងនេះ, ជៀសវាងការបញ្ចេញចម្លង, ហើយមានភាពអាចបត់បែនក្នុងវិធីដែលអ្នកស្វែងរកទិន្នន័យ។ យើងមកស្វែងយល់ពីគំនិតនៃមូលដ្ឋានទិន្នន័យទំនាក់ទំនង។
## [ចម្លើយបឋមមុខវិទ្យាសាស្រ្ត](https://ff-quizzes.netlify.app/en/ds/quiz/8)
## វិធីគិតគ្រប់គ្រងចាប់ផ្តើមពីតារាង
មូលដ្ឋានទិន្នន័យទំនាក់ទំនងមាននៅចម្បងតារាង។ ដូចជា spreadsheet, តារាងគឺជាការប្រមូលផ្តុំកូឡាំនិងជួរ។ ជួរមានទិន្នន័យឬព័ត៌មានដែលយើងចង់ធ្វើការ ជាឧទាហរណ៍ឈ្មោះទីក្រុងឬបរិមាណភ្លៀងធ្លាក់។ កូឡាំពិពណ៌នាទិន្នន័យដែលពួកគេផ្ទុក។
យើងចាប់ផ្តើមស្វែងយល់ដោយបង្កើតតារាងដើម្បីផ្ទុកព័ត៌មានអំពីទីក្រុង។ យើងអាចចាប់ផ្តើមជាមួយឈ្មោះនិងប្រទេសរបស់ពួកវា។ អ្នកអាចផ្ទុកវានៅក្នុងតារាងដូចខាងក្រោម៖
| ទីក្រុង | ប្រទេស |
| -------- | --------------- |
| តូគ្យូ | ជប៉ុន |
| អាតឡានតា | សហរដ្ឋអាមេរិក |
| អូខ្លិន | នូវហ្សេឡង់ |
សម្គាល់ថា ឈ្មោះកូឡាំ **ទីក្រុង**, **ប្រទេស** និង **ប្រជាជន** ពិពណ៌នាទិន្នន័យដែលបានផ្ទុក ហើយជួរមួយៗមានព័ត៌មានអំពីទីក្រុងមួយ។
## មិនគ្រប់គ្រាន់នៃវិធីសាស្រ្តតារាងតែមួយ
ប្រហែលជាតារាងខាងលើមើលទៅស្គាល់ស្រដៀងគ្នា ។ យើងចាប់ផ្តើមបន្ថែមទិន្នន័យបន្ថែមទៅទៅមូលដ្ឋានទិន្នន័យកំពុង៖ ភ្លៀងប្រចាំឆ្នាំ (ជា មីល្លីម៉ែត្រ)។ យើងនឹងផ្តោតទៅលើឆ្នាំ 2018, 2019 និង 2020។ ប្រសិនបើយើងបន្ថែមវាសម្រាប់តូគ្យូ វាអាចរួមទាំងដូចខាងក្រោម៖
| ទីក្រុង | ប្រទេស | ឆ្នាំ | បរិមាណ |
| ------- | ------- | ------| ------- |
| តូគ្យូ | ជប៉ុន | 2020 | 1690 |
| តូគ្យូ | ជប៉ុន | 2019 | 1874 |
| តូគ្យូ | ជប៉ុន | 2018 | 1445 |
តើអ្នកចាប់អារម្មណ៍អ្វីខ្លះពីតារាងរបស់យើង? អ្នកប្រហែលជាមើលឃើញថាយើងកំពុងចម្លងឈ្មោះនិងប្រទេសរបស់ទីក្រុងម្ដងម្កាល។ ថ្លៃឈ្នួលផ្ទុកអាចបង្កេីតការចំណាយខ្លាំង ហើយវាមិនចាំបាច់ត្រូវមានចម្លងមួយចំនួនទេ។ ជាពិសេស តូគ្យូមានឈ្មោះតែម្ដងដែលយើងចាប់អារម្មណ៍។
ល្អហើយ ក្រោយមកយើងសាកល្បងរឿងផ្សេងទៀត។ យើងបន្ថែមកូឡាំថ្មីសម្រាប់គ្រប់ឆ្នាំៗ៖
| ទីក្រុង | ប្រទេស | 2018 | 2019 | 2020 |
| -------- | --------------- | ---- | ---- | ---- |
| តូគ្យូ | ជប៉ុន | 1445 | 1874 | 1690 |
| អាតឡានតា | សហរដ្ឋអាមេរិក | 1779 | 1111 | 1683 |
| អូខ្លិន | នូវហ្សេឡង់ | 1386 | 942 | 1176 |
បើទោះបីជាវាមិនបានចម្លងជួរផ្ទាល់, វាក៏បញ្ចូលបញ្ហាផ្សេងទៀតផងដែរ។ យើងត្រូវតែផ្លាស់ប្តូររចនាសម្ព័ន្ធតារាងរបស់យើងគ្រប់ពេលវេលាមានឆ្នាំថ្មីមួយ។ ហើយនៅពេលទិន្នន័យរីកចម្រើន ការមានឆ្នាំជាកូឡាំនឹងធ្វើឱ្យការទាញយកនិងគណនាតម្លៃកាន់តែពិបាក។
នេះហើយជាទីតាំងដែលយើងត្រូវតារាងច្រើននិងទំនាក់ទំនងរវាងពួកវា។ ដោយបំបែកទិន្នន័យយើងអាចជៀសវាងការបញ្ចេញចម្លង ហើយមានភាពបត់បែនក្នុងរបៀបធ្វើការជាមួយទិន្នន័យរបស់យើង។
## គំនិតនៃទំនាក់ទំនង
មកវិញទៅទិន្នន័យរបស់យើង ហើយសម្រេចចិត្តថាអ្នកចង់បំបែកវាយ៉ាងដូចម្តេច។ យើងដឹងថាយើងចង់ផ្ទុកឈ្មោះនិងប្រទេសសម្រាប់ទីក្រុងរបស់យើង, ដូច្នេះវានឹងដំណើរការល្អនៅក្នុងតារាងមួយ។
| ទីក្រុង | ប្រទេស |
| -------- | --------------- |
| តូគ្យូ | ជប៉ុន |
| អាតឡានតា | សហរដ្ឋអាមេរិក |
| អូខ្លិន | នូវហ្សេឡង់ |
មុននឹងបង្កើតតារាងបន្ទាប់, យើងត្រូវសម្រេចយ៉ាងដូចម្តេចក្នុងការរកឃើញទំនាក់ទំនងជាមួយពួកវា។ យើងត្រូវការសម្ភារណាមួយហៅថា អត្តសញ្ញាណ, ID ឬ (ក្នុងពាក្យបច្ចេកទេសរបស់មូលដ្ឋានទិន្នន័យ) គន្លឹះដើម(primary key)។ គន្លឹះដើមគឺតម្លៃមួយដែលប្រើសម្រាប់កំណត់ជួរតែមួយពិសេសក្នុងតារាងមួយ។ ខណៈដែលវាអាចផ្អែកលើតម្លៃក្នុងខ្លួនវា (យើងអាចប្រើឈ្មោះទីក្រុងបានឧទាហរណ៍), វាគួរតែជាលេខឬក៏សម្គាល់ផ្សេងទៀតជាច្រើនតែម្ដង។ យើងមិនចង់ឲ្យ id ផ្លាស់ប្តូរអ្វីៗទៀតព្រោះវានឹងបំបែកទំនាក់ទំនង។ អ្នកនឹងងាយស្រួលឃើញក្នុងករណីភាគច្រើនគន្លឹះដើមឬid ទៀងទាត់ជាលេខបង្កើតដោយស្វ័យប្រវត្តិ។
> ✅ គន្លឹះដើម តែងតែត្រូវបានចាត់ទុកថា ជា PK
### ទីក្រុង
| city_id | ទីក្រុង | ប្រទេស |
| ------- | --------- | --------------- |
| 1 | តូគ្យូ | ជប៉ុន |
| 2 | អាតឡានតា | សហរដ្ឋអាមេរិក |
| 3 | អូខ្លិន | នូវហ្សេឡង់ |
> ✅ អ្នកនឹងសម្គាល់ថាយើងប្រើពាក្យ "id" និង "primary key" ជាប្រភេទប្រេះប្រា ប្រជុំក្នុងមេរៀននេះ។ គំនិតនៅទីនេះយកទៅប្រើបានជាមួយ DataFrames ដែលអ្នកនឹងស្វែងយល់បន្តិចក្រោយ។ DataFrames មិនប្រើពាក្យ "primary key" ផ្ទាល់ទេ ប៉ុន្តែអ្នកនឹងមើលឃើញម៉េចវាប្រព្រឹត្តទៅដូចគ្នា។
ជាមួយតារាងទីក្រុង, យើងចាប់ផ្តើមផ្ទុកភ្លៀង។ បើវាមានការចម្លងព័ត៌មានពេញលេញអំពីទីក្រុង ត្រូវប្រើ id។ យើងត្រូវប្រាកដថាតារាងថ្មីក៏មានកូឡាំ *id* ផងដែរ ពីព្រោះតារាងទាំងអស់គួរតែមាន id ឬ primary key។
### ភ្លៀងធ្លាក់
| rainfall_id | city_id | ឆ្នាំ | បរិមាណ |
| ----------- | ------- | ---- | ------- |
| 1 | 1 | 2018 | 1445 |
| 2 | 1 | 2019 | 1874 |
| 3 | 1 | 2020 | 1690 |
| 4 | 2 | 2018 | 1779 |
| 5 | 2 | 2019 | 1111 |
| 6 | 2 | 2020 | 1683 |
| 7 | 3 | 2018 | 1386 |
| 8 | 3 | 2019 | 942 |
| 9 | 3 | 2020 | 1176 |
សម្គាល់កូឡាំ **city_id** ក្នុងតារាងថ្មី **rainfall**។ កូឡាំនេះមានតម្លៃដែលយោងទៅរក ID ក្នុងតារាង **cities**។ ក្នុងពាក្យបច្ចេកវិទ្យាទិន្នន័យទំនាក់ទំនង វាហៅថា **foreign key**; វាជាគន្លឹះដើមពីតារាងផ្សេងមួយ។ អ្នកអាចគិតថាវាជាការយោង ឬគោលបំណងមួយ។ **city_id** 1 យោងទៅ Tokyo។
> [!NOTE]
> foreign key តែងតែត្រូវបានចាត់ទុកថា ជា FK
## ការទាញយកទិន្នន័យ
ដោយមានទិន្នន័យបំបែកជា ២ តារាង អ្នកអាចចាប់អារម្មណ៍ថានឹងទាញយកវាយ៉ាងដូចម្តេច។ ប្រសិនបើយើងប្រើមូលដ្ឋានទិន្នន័យទំនាក់ទំនងដូចជា MySQL, SQL Server ឬ Oracle, យើងអាចប្រើភាសាមួយហៅថា Structured Query Language ឬ SQL។ SQL (មួយចំនួនហៅថា sequel) គឺជាភាសាមាត្រយោងសម្រាប់ទាញយកនិងកែប្រែទិន្នន័យក្នុងមូលដ្ឋានទិន្នន័យទំនាក់ទំនង។
មកទាញយកទិន្នន័យ អ្នកប្រើការបញ្ជា `SELECT`។ ដើមគេ, អ្នក **ជ្រើសរើស** កូឡាំដែលអ្នកចង់មើល **ពី** តារាងដែលវាផ្ទុកជុំវិញ។ ប្រសិនបើអ្នកចង់បង្ហាញតែឈ្មោះទីក្រុង អ្នកអាចប្រើដូចខាងក្រោម៖
```sql
SELECT city
FROM cities;
-- Output:
-- Tokyo
-- Atlanta
-- Auckland
```
`SELECT` គឺជាកន្លែងអ្នករាប់បញ្ជីកូឡាំ ហើយ `FROM` គឺជាកន្លែងបញ្ជីតារាង។
> [!NOTE]
> សំណុំបែបបទ SQL មិនប្រកាន់ខណ្ឌពុម្ពអក្សរទេ មានន័យថា `select` និង `SELECT` មានន័យដូចគ្នា។ ទោះយ៉ាងណា, ផ្អែកទៅលើប្រភេទមូលដ្ឋានទិន្នន័យ អ្នកប្រហែលជាអាចមានករណីកូឡាំនិងតារាងមានករណីពុម្ពអក្សរកំណត់។ ដូច្នេះ ជាការអនុវត្តល្អបំផុត ក្នុងការគ្រប់អ្នកវាយកូដគួរតែប្រើរបៀបរៀបចំធំលើពាក្យគន្លឹះSQL ។
សំណួរខាងលើនឹងបង្ហាញទីក្រុងទាំងអស់។ ដូច្នេះគិតថា យើងត្រូវបង្ហាញតែទីក្រុងដែលនៅក្នុង New Zealand។ យើងត្រូវការសំរាប់តម្រងមួយ។ ពាក្យ SQL សម្រាប់នេះគឺ `WHERE`, ឬ "នៅកន្លែងដែលអ្វីមួយពិត។"
```sql
SELECT city
FROM cities
WHERE country = 'New Zealand';
-- Output:
-- Auckland
```
## ការរួមបញ្ចូលទិន្នន័យ
រហូតមកដល់ពេលនេះយើងបានទាញយកទិន្នន័យ​ពីតារាងតែមួយ។ ឥឡូវនេះយើងចង់ដង្ហើយទិន្នន័យពីទាំងពីរ **cities** និង **rainfall**។ វាត្រូវបានអនុវត្តដោយ *joining* ពួកវារួមគ្នា។ អ្នកមានការបង្កើតចំណុចភ្ជាប់រវាងតារាងពីរនៅកន្លែងណាមួយ ហើយភ្ជាប់តម្លៃពីកូឡាំមួយពីតារាងមួយទៅកូឡាំពីតារាងមួយទៀត។
នៅក្នុងឧទាហរណ៍លំហូរយើងយួរយកកូឡាំ **city_id** នៅក្នុង **rainfall** ជាមួយកូឡាំ **city_id** នៅក្នុង **cities**។ វានឹងភ្ជាប់តម្លៃភ្លៀងជាមួយទីក្រុងពាក់ព័ន្ធរបស់វា។ ប្រភេទ join ដែលយើងនឹងធ្វើហៅថា *inner* join, មានន័យថាបើជួរណាមួយមិនប៉ះគ្នានឹងអ្វីមួយពីតារាងផ្សេង វានឹងមិនបង្ហាញឡើងទេ។ ក្នុងរឿងរបស់យើង តើមួយៗទីក្រុងមានភ្លៀងទេ, ដូច្នេះអ្វីៗគ្រប់យ៉ាងនឹងបង្ហាញ។
យើងសង់សំណូមពរទាញយកភ្លៀងរបស់ឆ្នាំ 2019 សម្រាប់ទីក្រុងទាំងអស់។
យើងនឹងធ្វើវាជាជំហានៗ។ ជំហានដំបូងគឺបញ្ចូលទិន្នន័យរួមគ្នា ដោយបង្ហាញកូឡាំសម្រាប់ចំណុចភ្ជាប់ - **city_id** ដូចដែលបានបង្ហាញខាងលើ។
```sql
SELECT cities.city
rainfall.amount
FROM cities
INNER JOIN rainfall ON cities.city_id = rainfall.city_id
```
យើងបានពណ៌បង្ហាញពីកូឡាំទាំងពីរដែលយើងចង់បាន ហើយត្រូវចូលរួមតារាងដោយ **city_id**។ ឥឡូវនេះអាចបន្ថែមប្រយោគ `WHERE` ដើម្បីតម្រងអំពីឆ្នាំ 2019 ប៉ុណ្ណោះ។
```sql
SELECT cities.city
rainfall.amount
FROM cities
INNER JOIN rainfall ON cities.city_id = rainfall.city_id
WHERE rainfall.year = 2019
-- Output
-- city | amount
-- -------- | ------
-- Tokyo | 1874
-- Atlanta | 1111
-- Auckland | 942
```
## សរុបមេរៀន
មូលដ្ឋានទិន្នន័យទំនាក់ទំនងផ្អែកលើការបំបែកព័ត៌មានជាច្រើនតារាងដែលបន្ទាប់មកត្រូវបានយកមកវិញសម្រាប់បង្ហាញនិងវិភាគ។ វាពិចារណាជាកម្រិតខ្ពស់នៃភាពបត់បែនដើម្បីគណនានិងគ្រប់គ្រងទិន្នន័យផ្សេងទៀត។ អ្នកបានឃើញមេរៀនគ្រឹះនៃមូលដ្ឋានទិន្នន័យទំនាក់ទំនង ហើយបានកិច្ចការបញ្ចូលគ្នារវាងតារាងពីរ។
## 🚀 챌린지
មានមូលដ្ឋានទិន្នន័យទំនាក់ទំនងជាច្រើនដែលមានស្រាប់នៅលើអ៊ីនធឺណិត។ អ្នកអាចស្វែងយល់ទិន្នន័យដោយប្រើជំនាញដែលបានរៀនខាងលើ។
## ការត្រួតពិនិត្យបន្ទាប់ពីមេរៀន
## [ចម្លើយបន្ទាប់ពីមេរៀន](https://ff-quizzes.netlify.app/en/ds/quiz/9)
## ការត្រួតពិនិត្យ និងការសិក្សាឯកឯក
មានធនធានជាច្រើនក្នុង [Microsoft Learn](https://docs.microsoft.com/learn?WT.mc_id=academic-77958-bethanycheum) សម្រាប់អ្នកដើម្បីបន្តស្វែងយល់អំពី SQL និងគំនិតមូលដ្ឋានទិន្នន័យទំនាក់ទំនង
- [ពណ៌នាគំនិតនៃទិន្នន័យទំនាក់ទំនង](https://docs.microsoft.com//learn/modules/describe-concepts-of-relational-data?WT.mc_id=academic-77958-bethanycheum)
- [ចាប់ផ្តើមស្វែងរកជាមួយ Transact-SQL](https://docs.microsoft.com//learn/paths/get-started-querying-with-transact-sql?WT.mc_id=academic-77958-bethanycheum) (Transact-SQL គឺជារស់ជ្រៅនៃ SQL)
- [មាតិការអំពី SQL នៅ Microsoft Learn](https://docs.microsoft.com/learn/browse/?products=azure-sql-database%2Csql-server&expanded=azure&WT.mc_id=academic-77958-bethanycheum)
## កិច្ចការ
[បង្ហាញទិន្នន័យអាកាសយានដ្ឋាន](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការបដិសេធ**៖
ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលដែលយើងខំប្រឹងប្រសិទ្ធភាពក្នុងការបន្សល់ភាពត្រឹមត្រូវ សូមដឹងថាការបកប្រែដោយស្វ័យប្រវត្តិនេះអាចមានកំហុស ឬភាពមិនត្រឹមត្រូវមួយចំនួន។ ឯកសារដើមនៅក្នុងភាសាតំណាងរបស់វាគួរត្រូវបានចាត់ទុកជាធនធានដែលមានអំណាច។ សម្រាប់ព័ត៌មានសំខាន់ៗ ការបកប្រែដោយមនុស្សជំនាញម្នាក់គឺត្រូវបានណែនាំ។ យើងមិនមានការទទួលខុសត្រូវចំពោះការយល់បញ្ចូលខុស ឬការបកប្រែមិនត្រឹមត្រូវណាមួយដែលបង្កើតឡើងពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,67 @@
# បង្ហាញទិន្នន័យអាកាសយានដ្ឋាន
អ្នកត្រូវបានផ្តល់ជូន [មូលដ្ឋានទិន្នន័យ](https://raw.githubusercontent.com/Microsoft/Data-Science-For-Beginners/main/2-Working-With-Data/05-relational-databases/airports.db) ដែលត្រូវបានបង្កើតលើ [SQLite](https://sqlite.org/index.html) ដែលមានព័ត៌មានអំពីអាកាសយានដ្ឋាន។ សchema ត្រូវបានបង្ហាញខាងក្រោម។ អ្នកនឹងប្រើ [ភាគបន្ថែម SQLite](https://marketplace.visualstudio.com/items?itemName=alexcvzz.vscode-sqlite&WT.mc_id=academic-77958-bethanycheum) នៅក្នុង [Visual Studio Code](https://code.visualstudio.com?WT.mc_id=academic-77958-bethanycheum) ដើម្បីបង្ហាញព័ត៌មានអំពីអាកាសយានដ្ឋាននៃទីក្រុងផ្សេងៗ។
## សេចក្តីណែនាំ
ដើម្បីចាប់ផ្តើមការងារ អ្នកត្រូវធ្វើជំហ៊ានពីរបី។ អ្នកត្រូវតែដំឡើងឧបករណ៍ខ្លះ និងទាញយកមូលដ្ឋានទិន្នន័យគំរូ។
### ដំឡើងប្រព័ន្ធរបស់អ្នក
អ្នកអាចប្រើ Visual Studio Code និងភាគបន្ថែម SQLite ដើម្បីធ្វើប្រតិបត្តិការជាមួយមូលដ្ឋានទិន្នន័យ។
1. ទៅកាន់ [code.visualstudio.com](https://code.visualstudio.com?WT.mc_id=academic-77958-bethanycheum) ហើយអនុវត្តន៍តាមការណែនាំដើម្បីដំឡើង Visual Studio Code
1. ដំឡើងភាគបន្ថែម [SQLite extension](https://marketplace.visualstudio.com/items?itemName=alexcvzz.vscode-sqlite&WT.mc_id=academic-77958-bethanycheum) ដោយតាមការណែនាំនៅលើទំព័រ Marketplace
### ទាញយក និងបើកមូលដ្ឋានទិន្នន័យ
បន្ទាប់មក អ្នកនឹងទាញយក និងបើកមូលដ្ឋានទិន្នន័យ។
1. ទាញយក [ឯកសារមូលដ្ឋានទិន្នន័យពី GitHub](https://raw.githubusercontent.com/Microsoft/Data-Science-For-Beginners/main/2-Working-With-Data/05-relational-databases/airports.db) ហើយរក្សាទុកវាទៅថតឯកសារ
1. បើក Visual Studio Code
1. បើកមូលដ្ឋានទិន្នន័យនៅក្នុងភាគបន្ថែម SQLite ដោយជ្រើស **Ctl-Shift-P** (ឬ **Cmd-Shift-P** លើ Mac) ហើយវាយ `SQLite: Open database`
1. ជ្រើស **Choose database from file** ហើយបើកឯកសារ **airports.db** ដែលអ្នកបានទាញយកមុននេះ
1. បន្ទាប់ពីបើកមូលដ្ឋានទិន្នន័យ (អ្នកនឹងមិនឃើញការផ្លាស់ប្ដូរនៅលើអេក្រង់ទេ) បង្កើតផ្ទាំងស៊ើបអង្កេតថ្មីដោយជ្រើស **Ctl-Shift-P** (ឬ **Cmd-Shift-P** លើ Mac) ហើយវាយ `SQLite: New query`
ពេលដែលបើករួច ផ្ទាំងស៊ើបអង្កេត ថ្មីអាចប្រើដើម្បីរត់ពាក្យបញ្ជា SQL ទៅលើមូលដ្ឋានទិន្នន័យ។ អ្នកអាចប្រើពាក្យបញ្ជា **Ctl-Shift-Q** (ឬ **Cmd-Shift-Q** លើ Mac) ដើម្បីរត់សំណួរទៅលើមូលដ្ឋានទិន្នន័យ។
> [!NOTE]
> សម្រាប់ព័ត៌មានបន្ថែមអំពីភាគបន្ថែម SQLite អ្នកអាចពិនិត្យមើល [ឯកសារ](https://marketplace.visualstudio.com/items?itemName=alexcvzz.vscode-sqlite&WT.mc_id=academic-77958-bethanycheum)
## សេចក្តីឆ្លងរបស់មូលដ្ឋានទិន្នន័យ
សេចក្តីឆ្លងរបស់មូលដ្ឋានទិន្នន័យគឺជារចនាសម្ព័ន្ធតារាងនិងរចនាបថ។ មូលដ្ឋានទិន្នន័យ **airports** មានតារាងពីរគឺ `cities` ដែលមានបញ្ជីទីក្រុងនៅចក្រភពអង់គ្លេស និងអៀរឡង់ និង `airports` ដែលមានបញ្ជីអាកាសយានដ្ឋានទាំងអស់។ ពីព្រោះមានទីក្រុងខ្លះមានអាកាសយានដ្ឋានច្រើនជាងមួយ តារាងពីរបានត្រូវបង្កើតឡើងដើម្បីរក្សាទុកព័ត៌មាន។ ក្នុងការហាត់នេះ អ្នកនឹងប្រើ joins ដើម្បីបង្ហាញព័ត៌មានសម្រាប់ទីក្រុងផ្សេងៗ។
| Cities |
| ---------------- |
| id (PK, integer) |
| city (text) |
| country (text) |
| Airports |
| -------------------------------- |
| id (PK, integer) |
| name (text) |
| code (text) |
| city_id (FK to id in **Cities**) |
## ការងារ
បង្កើតសំណួរដើម្បីត្រឡប់ព័ត៌មានដូចតទៅ៖
1. ឈ្មោះទីក្រុងទាំងអស់នៅក្នុងតារាង `Cities`
1. ទីក្រុងទាំងអស់នៅក្នុងប្រទេសអៀរឡង់នៅតារាង `Cities`
1. ឈ្មោះអាកាសយានដ្ឋានទាំងអស់ជាមួយទីក្រុង និងប្រទេសរបស់វា
1. អាកាសយានដ្ឋានទាំងអស់នៅទីក្រុងឡុងដ៍ ប្រទេសចក្រភពអង់គ្លេស
## គោលការណ៍វាយតម្លៃ
| ដំណើរការល្អ | គ្រប់គ្រាន់ | ត្រូវកែលម្អ |
| --------- | -------- | ----------------- |
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការបដិសេធ**:
ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ទោះយើងខ្ញុំខិតខំប្រឹងប្រែងសម្រាប់ភាពត្រឹមត្រូវ កុំភ្លេចថាការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុស ឬភាពមិនត្រឹមត្រូវ។ ឯកសារដើមនៅក្នុងភាសាមូលដ្ឋានគួរត្រូវបានគិតថាជាប្រេសកម្មដ៏មានអំណាច។ សម្រាប់ព័ត៌មានសំខាន់ៗ ការបកប្រែដោយមនុស្សជំនាញគឺត្រូវបានសំរាប់។ យើងខ្ញុំមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំនិងការបកប្រើខុសពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,154 @@
# ការដំណើរការជាមួយទិន្នន័យ: ទិន្នន័យមិនទាក់ទងគ្នា
|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/06-NoSQL.png)|
|:---:|
|ការដំណើរការជាមួយទិន្នន័យ NoSQL - _Sketchnote ដោយ [@nitya](https://twitter.com/nitya)_ |
## [សំណួរជាមុខសិក្សា](https://ff-quizzes.netlify.app/en/ds/quiz/10)
ទិន្នន័យមិនទាន់មានដែនកំណត់នៅក្នុងមូលដ្ឋានទិន្នន័យទាក់ទងគ្នា។មេរៀននេះផ្ដោតលើទិន្នន័យមិនទាក់ទងគ្នា និងនឹងគ្របដណ្ដប់គោលការណ៍មូលដ្ឋាននៃសៀវភៅបណ្ណាល័យ និង NoSQL។
## សៀវភៅបណ្ណាល័យ
សៀវភៅបណ្ណាល័យគឺជាវិធីដែលពេញនិយមសម្រាប់រក្សាទុកនិងស្វែងយល់ទិន្នន័យ ពីព្រោះវាត្រូវការការងារតិចក្នុងការតាំងពិចារណា និងចាប់ផ្តើម។ នៅក្នុងមេរៀននេះអ្នកនឹងរៀនពីធាតុមូលដ្ឋាននៃសៀវភៅបណ្ណាល័យ បន្ថែមបែបបទនិងមុខងារ។ ឧទាហរណ៍នឹងត្រូវបង្ហាញជាមួយ Microsoft Excel ប៉ុន្តែក្នុងបរិបទភាគ១ភាគច្រើននៃផ្នែក និងប្រធានបទនឹងមានឈ្មោះនិងដំណើរការដូចគ្នាទៅនឹងកម្មវិធីសៀវភៅបណ្ណាល័យផ្សេងទៀត។
![សៀវភៅ Microsoft Excel ទទេ ដែលមានផ្ទាំងការងារចំនួនពីរ](../../../../translated_images/km/parts-of-spreadsheet.120711c82aa18a45.webp)
សៀវភៅបណ្ណាល័យគឺជាឯកសារ ហើយនឹងអាចចូលដំណើរការបាននៅក្នុងប្រព័ន្ធឯកសាររបស់កុំព្យូទ័រ ឧបករណ៍ ឬប្រព័ន្ធឯកសារលើពពក។ កម្មវិធីខ្លួនវាអាចជាកម្មវិធីផ្ទាល់លើកម្មវិប័ន្ធ Browser ឬកម្មវិធីដែលត្រូវតែដំឡើងនៅលើកុំព្យូទ័រ ឬទាញយកជាកម្មវិធី។ ក្នុង Excel ឯកសារទាំងនេះត្រូវបានកំណត់ជាថ្មីថា **workbooks** ហើយពាក្យបញ្ញត្តិនេះនឹងត្រូវប្រើនៅក្នុងមេរៀននេះទៅមុខ។
កម្មវិធី一本រួមបញ្ចូលមានមួយ ឬច្រើន **worksheets**, ដែលក្នុងនោះ worksheet ទាំងអស់ត្រូវបានសម្គាល់ដោយផ្ទាំងស្លាបព្រិល។ ក្រៅពីនេះក្នុង worksheet មានរាងការេហៅថា **cells** ដែលផ្ទុកទិន្នន័យពិតប្រាកដ។ មួយ cell គឺជាចំណុចប្រទាក់រវាងជួរ និងជួរឈរ ដែលជួរឈរត្រូវបានសម្គាល់ដោយតួអក្សរអក្សរ និងជួរត្រូវបានសម្គាល់ដោយលេខ។ សៀវភៅបណ្ណាល័យខ្លះនឹងមានក្បាលនៅជួរដំបូងប៉ុន្មានជួរដើម្បីពិពណ៌នាទិន្នន័យនៅក្នុង cell។
ដោយឧទាហរណ៍ Excel workbook នេះ យើងនឹងប្រើឧទាហរណ៍មួយផ្តោតលើ [Microsoft Templates](https://templates.office.com/) សម្រាប់គ្រប់គ្រងសារពើភ័ណ្ឌ ដើម្បីដើរតួបន្ថែមផ្នែកផ្សេងទៀតនៃសៀវភៅបណ្ណាល័យ។
### ការគ្រប់គ្រងសារពើភ័ណ្ឌ
ឯកសារសៀវភៅបណ្ណាល័យដែលមានឈ្មោះ "InventoryExample" គឺជាសៀវភៅបណ្ណាល័យបានបំលែងរួចពីទ្រព្យសម្បត្តិនៅក្នុងសារពើភ័ណ្ឌ ដែលមាន worksheets បីឈ្មោះ "Inventory List", "Inventory Pick List" និង "Bin Lookup"។ ជួរ​ទី 4 នៃ worksheet Inventory List គឺជាក្បាល ដែលពិពណ៌នាថាតម្លៃនៃមួយមួយក្នុងជួរក្បាល។
![មុខងារត្រូវបានបន្លឺពីឧទាហរណ៍បញ្ជីសារពើភ័ណ្ឌនៅក្នុង Microsoft Excel](../../../../translated_images/km/formula-excel.ad1068c220892f5e.webp)
មានករណីដែលមួយ cell គួរត្រូវអាស្រ័យលើតម្លៃនៃក្រុម cell ផ្សេងទៀតដើម្បីបង្កើតតម្លៃរបស់វា។ សៀវភៅបញ្ជីសារពើភ័ណ្ឌកំពុងតាមដានតម្លៃកម្រៃរបស់មួយមុខទំនិញក្នុងសារពើភ័ណ្ឌ ប៉ុន្តែបើយើងត្រូវការដឹងតម្លៃទាំងអស់ក្នុងសារពើភ័ណ្ឌ? [**Formulas**](https://support.microsoft.com/en-us/office/overview-of-formulas-34519a4e-1e8d-4f4b-84d4-d642c4f63263) ធ្វើសកម្មភាពលើទិន្នន័យក្នុង cells ហើយប្រើសម្រាប់គណនាទៅលើតម្លៃសារពើភ័ណ្ឌក្នុងឧទាហរណ៍នេះ។ សៀវភៅបណ្ណាល័យនេះប្រើសមាសធាតុ នៅក្នុងជួរឈរ Inventory Value ដើម្បីគណនាតម្លៃមុខទំនិញក្នុងតម្លៃ ដែលគុណតម្លៃបរិមាណនៅក្រោមក្បាល QTY និងតម្លៃនៅក្រោមក្បាល COST។ ហោះរើស cell ឬចុចពីរដងលើ cell នឹងបង្ហាញសមាសធាតុនេះ។ អ្នកនឹងទទួលបានសមាសធាតុចាប់ផ្តើមជាមួយសញ្ញាស្មើ (=) បន្ទាប់ពីនេះជាការគណនាឬប្រតិបត្តិការ។
![មុខងារត្រូវបានបន្លឺពីឧទាហរណ៍បញ្ជីសារពើភ័ណ្ឌនៅក្នុង Microsoft Excel](../../../../translated_images/km/function-excel.be2ae4feddc10ca0.webp)
យើងអាចប្រើសមាសធាតុមួយទៀតដើម្បីបូកតម្លៃទាំងឡាយនៅក្នុងជួរឈរ Inventory Value រួមគ្នា ដើម្បីទទួលតម្លៃសរុប។ វាអាចគណនាបានដោយបូកមួយ cell មួយតែម្តង ប៉ុន្តែនោះអាចជាការងារលំបាក។ Excel មាន [**functions**](https://support.microsoft.com/en-us/office/sum-function-043e1c7d-7726-4e80-8f32-07b23e057f89) ឬ formula ដែលបានកំណត់ជាមុនសម្រាប់បំពេញការគណនាលើតម្លៃ cell។ មុខងារផ្ទុះតម្រូវអាគុយម៉ង មួយនេះគឺជាតម្លៃដែលត្រូវប្រើនៅក្នុងការគណនា។ នៅពេលដែលមុខងារ​ត្រូវការអាគុយម៉ង់ច្រើន ការតំរូវអាគុយម៉ង់ទាំងនេះត្រូវតែចុះបញ្ជីក្នុងលំដាប់ជាក់លាក់ មិនដូច្នេះមុខងារអាចគ្មានការគណនាតម្លៃបានត្រឹមត្រូវ។ ឧទាហរណ៍នេះប្រើមុខងារ SUM ហើយប្រើតម្លៃក្នុងជួរឈរ Inventory Value ជាអាគុយម៉ង់ដើម្បីបូកចេញតម្លៃសរុបដែលបង្ហាញនៅក្រោមជួរ 3 ជួរឈរ B (ដែលហៅថា B3)។
## NoSQL
NoSQL គឺជាពាក្យទូទៅសម្រាប់វិធីសាស្រ្តផ្សេងៗក្នុងការរក្សាទុកទិន្នន័យមិនទាក់ទងគ្នា និងអាចបកប្រែថា "មិន​មែន SQL", "មិន​ទាក់ទង", ឬ "មិនត្រឹមតែ SQL"។ ប្រភេទម៉ាស៊ីនទិន្នន័យនេះអាចចាត់ថ្នាក់ជាបួនប្រភេទ។
![តំណាងតាមប្រភេទ key-value data store បង្ហាញកូនសោលេខ៤ផ្ដល់តម្លៃ៤ខុសគ្នា](../../../../translated_images/km/kv-db.e8f2b75686bbdfcb.webp)
> ប្រភពពី [Michał Białecki Blog](https://www.michalbialecki.com/2018/03/18/azure-cosmos-db-key-value-database-cloud/)
មូលដ្ឋានទិន្នន័យ [Key-value](https://docs.microsoft.com/en-us/azure/architecture/data-guide/big-data/non-relational-data#keyvalue-data-stores) មានគូរមូលដ្ឋានទិន្នន័យជាមួយកូនសោតែមួយ ដែលជាផ្ទៃសម្គាល់តែមួយភ្ជាប់ជាមួយតម្លៃមួយ។ ចំណុចទាំងនេះត្រូវបានរក្សាទុកដោយប្រើ [hash table](https://www.hackerearth.com/practice/data-structures/hash-tables/basics-of-hash-tables/tutorial/) ដែលមានមុខងារបញ្ចូល hashing។
![តំណាងតាមប្រភេទ graph data store បង្ហាញទំនាក់ទំនងរវាងមនុស្ស ចំណង់ចំណូលចិត្ត និងទីតាំង](../../../../translated_images/km/graph-db.d13629152f79a9da.webp)
> ប្រភពពី [Microsoft](https://docs.microsoft.com/en-us/azure/cosmos-db/graph/graph-introduction#graph-database-by-example)
មូលដ្ឋានទិន្នន័យ [Graph](https://docs.microsoft.com/en-us/azure/architecture/data-guide/big-data/non-relational-data#graph-data-stores) ពិពណ៌នាឱ្យដឹងពីទំនាក់ទំនងក្នុងទិន្នន័យ និងតំណាងជាការប្រម្ទេសនៃក្បាល (nodes) និងបន្ទាត់ភ្ជាប់ (edges)។ ក្បាលជាតំណាងអង្គភាព មួយវត្ថុដែលមាននៅក្នុងពិភពពិតដូចជា និស្សិត ឬប្រតិបត្តិការ ធនាគារ។ បន្ទាត់ភ្ជាប់បង្ហាញពីទំនាក់ទំនងរវាងអង្គភាពពីរនេះ។ ក្បាលនិងបន្ទាត់ភ្ជាប់នីមួយៗមានលក្ខណៈដែលផ្តល់ព័ត៌មានបន្ថែមអំពីពួកវា។
![តំណាងតាមប្រភេទ columnar data store បង្ហាញមូលដ្ឋានទិន្នន័យអតិថិជនដែលមានគ្រួសារជួរឈរពីរឈ្មោះ Identity និង Contact Info](../../../../translated_images/km/columnar-db.ffcfe73c3e9063a8.webp)
មូលដ្ឋានទិន្នន័យ [Columnar](https://docs.microsoft.com/en-us/azure/architecture/data-guide/big-data/non-relational-data#columnar-data-stores) រៀបចំទិន្នន័យជាជួរឈរ និងជួរដូចជារចនាសម្ព័ន្ធទិន្នន័យទាក់ទងគ្នា ប៉ុន្តែលើក្រុមជួរឈរត្រូវបានចែកចេញជា "column family" ដែលទិន្នន័យទាំងមូលនៅក្រោមជួរឈរមួយទាក់ទងគ្នា ហើយអាចទាញយក និងផ្លាស់ប្តូរបានជារួមមួយត្រៀម។
### មូលដ្ឋានទិន្នន័យឯកសារជាមួយ Azure Cosmos DB
មូលដ្ឋានទិន្នន័យ [Document](https://docs.microsoft.com/en-us/azure/architecture/data-guide/big-data/non-relational-data#document-data-stores) អនុវត្តលើគំនិតនៃ key-value data store ហើយមានបណ្តុំវាល និងវត្ថុ។ ផ្នែកនេះនឹងស្វែងយល់អំពីមូលដ្ឋានទិន្នន័យឯកសារជាមួយ Cosmos DB emulator។
មូលដ្ឋានទិន្នន័យ Cosmos DB សម្របសម្រួលកម្មវិធី "Not Only SQL" (មិនមែនត្រឹមតែនៅ SQL) ដែល database ឯកសាររបស់ Cosmos DB អាស្រ័យលើ SQL ដើម្បីស្វែងរកទិន្នន័យ។ [មេរៀនមុន](../05-relational-databases/README.md) អំពី SQL គ្របដណ្ដប់គោលការណ៍មូលដ្ឋាន នឹងអាចអនុវត្តន៍សំណួរដូចគ្នាមួយចំនួនទៅមូលដ្ឋានទិន្នន័យឯកសារនៅទីនេះ។ យើងនឹងប្រើ Cosmos DB Emulator ដែលអនុញ្ញាតឱ្យចាប់ផ្តើម និងស្វែងយល់មូលដ្ឋានទិន្នន័យឯកសារបានក្នុងកុំព្យូទ័រផ្ទាល់ខ្លួន។ អានបន្ថែមអំពី Emulator [នៅទីនេះ](https://docs.microsoft.com/en-us/azure/cosmos-db/local-emulator?tabs=ssl-netstd21)។
ឯកសារជាបណ្ណាល័យមួយនៃវាល និងតម្លៃវត្ថុ ដែលវាលនីមួយៗពិពណ៌នាថាតម្លៃវត្ថុបង្ហាញអ្វី។ ខាងក្រោមគឺជាឧទាហរណ៍ឯកសារ។
```json
{
"firstname": "Eva",
"age": 44,
"id": "8c74a315-aebf-4a16-bb38-2430a9896ce5",
"_rid": "bHwDAPQz8s0BAAAAAAAAAA==",
"_self": "dbs/bHwDAA==/colls/bHwDAPQz8s0=/docs/bHwDAPQz8s0BAAAAAAAAAA==/",
"_etag": "\"00000000-0000-0000-9f95-010a691e01d7\"",
"_attachments": "attachments/",
"_ts": 1630544034
}
```
វាលដែលមានភាពចាប់អារម្មណ៍នៅក្នុងឯកសារនេះគឺ៖ `firstname`, `id`, និង `age`។ វាលផ្សេងទៀតដែលមានអន្ទាក់ ត្រូវបានបង្កើតឡើងដោយ Cosmos DB។
#### ស្វែងយល់ទិន្នន័យជាមួយ Cosmos DB Emulator
អ្នកអាចទាញយក និងដំឡើង emulator [សម្រាប់ Windows នៅទីនេះ](https://aka.ms/cosmosdb-emulator)។ សូមយោងទៅឯកសារនេះ [documentation](https://docs.microsoft.com/en-us/azure/cosmos-db/local-emulator?tabs=ssl-netstd21#run-on-linux-macos) សម្រាប់ជម្រើសរបៀបដំណើរការ Emulator សម្រាប់ macOS និង Linux។
Emulator បើកផ្ទាំងកម្មវិធី Browser ដែលចុះបញ្ជី Explorer អនុញ្ញាតឱ្យអ្នកស្វែងយល់ឯកសារ។
![ទិដ្ឋភាព Explorer របស់ Cosmos DB Emulator](../../../../translated_images/km/cosmosdb-emulator-explorer.a1c80b1347206fe2.webp)
ប្រសិនបើលោកអ្នកតាមដាន សូមចុច "Start with Sample" ដើម្បីបង្កើតមូលដ្ឋានទិន្នន័យគំរូដែលមានឈ្មោះ SampleDB។ ប្រសិនបើលាយ Sample DB ដោយចុចលើឥដ្ឋភ្នែក អ្នកនឹងឃើញcontainer ឈ្មោះ `Persons`, ធុង (container) មានអង្គភាពនៃធាតុ ដែលជាឯកសារក្នុងcontainer នោះ។ អ្នកអាចស្វែងយល់ឯកសារផ្ទាល់ខ្លួនបួនក្នុង `Items`
![ការស្វែងយល់ទិន្នន័យគំរូក្នុង Cosmos DB Emulator](../../../../translated_images/km/cosmosdb-emulator-persons.bf640586a7077c89.webp)
#### សំណួរទៅលើទិន្នន័យឯកសារជាមួយ Cosmos DB Emulator
យើងក៏អាចសួរទិន្នន័យគំរូដោយចុចប៊ូតុង SQL Query ថ្មី (ប៊ូតុងទីពីរពីខាងឆ្វេង)។
`SELECT * FROM c` ត្រឡប់មកឯកសារទាំងអស់នៅក្នុងcontainer។ នាំឱ្យបន្ថែមរូបភាព where និងស្វែងរកមនុស្សជាតំលៃអាយុតិចជាង 40 ។
`SELECT * FROM c where c.age < 40`
![ការរត់សំណួរ SELECT លើទិន្នន័យគំរូក្នុង Cosmos DB Emulator ដើម្បីស្វែងរកឯកសារដែលអាយុតិចជាង 40](../../../../translated_images/km/cosmosdb-emulator-persons-query.6905ebb497e3cd04.webp)
សំណួរត្រឡប់ឡើងឯកសារពីរមុខ ហើយបញ្ជាក់ថាតម្លៃអាយុសម្រាប់ឯកសារនីមួយៗតិចជាង 40។
#### JSON និងឯកសារ
ប្រសិនបើលោកអ្នកស្គាល់ JavaScript Object Notation (JSON) អ្នកនឹងសង្កេតឃើញឯកសារទាំងនេះមានរូបរាងដូច JSON។ មានឯកសារ `PersonsData.json` នៅក្នុងថតនេះ ដែលមានទិន្នន័យបន្ថែមដែលអ្នកអាចបញ្ចូលទៅ container Persons ក្នុង Emulator តាមរយៈប៊ូតុង `Upload Item`
នៅក្នុងករណីភាគច្រើន API ដែលត្រឡប់ JSON អាចផ្ទេរដោយផ្ទាល់ ហើយរក្សាទុកនៅក្នុងមូលដ្ឋានទិន្នន័យឯកសារ។ ខាងក្រោមជាឯកសារមួយផ្សេងទៀត ដែលតំណាងឱ្យ tweet ពីគណនី Twitter របស់ Microsoft ដែលបានទាញយកតាមរយៈ Twitter API រួចបញ្ចូលទៅ Cosmos DB។
```json
{
"created_at": "2021-08-31T19:03:01.000Z",
"id": "1432780985872142341",
"text": "Blank slate. Like this tweet if youve ever painted in Microsoft Paint before. https://t.co/cFeEs8eOPK",
"_rid": "dhAmAIUsA4oHAAAAAAAAAA==",
"_self": "dbs/dhAmAA==/colls/dhAmAIUsA4o=/docs/dhAmAIUsA4oHAAAAAAAAAA==/",
"_etag": "\"00000000-0000-0000-9f84-a0958ad901d7\"",
"_attachments": "attachments/",
"_ts": 1630537000
```
វាលដែលមានភាពចាប់អារម្មណ៍នៅក្នុងឯកសារនេះគឺ៖ `created_at`, `id`, និង `text`
## 🚀 챌린지 (បញ្ហាគំរូ)
​មានឯកសារ `TwitterData.json` ដែលអ្នកអាចបញ្ចូលទៅក្នុងមូលដ្ឋានទិន្នន័យ SampleDB។ ភាពឈរបានណែនាំឱ្យអ្នកបញ្ចូលវាទៅក្នុង container ផ្សេងឯណាមួយ។ អ្នកអាចធ្វើបានដោយ៖
1. ចុចប៊ូតុង container ថ្មី នៅខាងលើស្ដាំ
1. ជ្រើសរើសមូលដ្ឋានទិន្នន័យស្ថិតមានរួច (SampleDB) និងបង្កើត container id សម្រាប់container
1. កំណត់ partition key ទៅ `/id`
1. ចុច OK (អ្នកអាចមិនចាំបាច់ជួសជុលព័ត៌មាននៅក្នុងទិដ្ឋភាពនេះ ពីព្រោះវាជាដាតាស៊ែតតូចដែលដំណើរការលើម៉ាស៊ីនរបស់អ្នក)
1. បើកcontainer ថ្មីរបស់អ្នក និងបញ្ចូលឯកសារ Twitter Data ជាមួយប៊ូតុង `Upload Item`
ព្យាយាមបញ្ចូលសំណួរ few select ដើម្បីស្វែងរកឯកសារដែលមានពាក្យMicrosoft នៅក្នុងវាលអត្ថបទ។ សោចំណេះដឹង៖ សាកល្បងប្រើ [LIKE keyword](https://docs.microsoft.com/en-us/azure/cosmos-db/sql/sql-query-keywords#using-like-with-the--wildcard-character)
## [សំណួរបន្ទាប់បន្ទាប់បន្ទាន់ការសិក្សា](https://ff-quizzes.netlify.app/en/ds/quiz/11)
## ការត្រួតពិនិត្យ និងការសិក្សាឯកឯង
- មានការតុបតែងបន្ថែម និងមុខងារបន្ថែមក្នុងសៀវភៅបណ្ណាល័យនេះ ដែលមេរៀននេះមិនគ្របដណ្ដប់។ Microsoft មាន [បណ្ណាល័យឯកសារធំ និងវីដេអូ](https://support.microsoft.com/excel) អំពី Excel សម្រាប់អ្នកចូលចិត្តរៀនបន្ថែម។
- ឯកសាររៀបចំនេះពិពណ៌នាលក្ខណៈនៃប្រភេទទិន្នន័យមិនទាក់ទងគ្នាប្រភេទផ្សេងៗ៖ [ទិន្នន័យមិនទាក់ទង និង NoSQL](https://docs.microsoft.com/en-us/azure/architecture/data-guide/big-data/non-relational-data)
- Cosmos DB គឺជាមូលដ្ឋានទិន្នន័យមិនទាក់ទងគ្នា ដែលដំណើរការលើពពក។ វាក៏អាចរក្សាទុកប្រភេទ NoSQL ផ្សេងៗដែលបានលើកឡើងនៅក្នុងមេរៀននេះ។ សូមរៀនបន្ថែមអំពីប្រភេទទាំងនេះនៅក្នុង [មូឌុល Microsoft Learn Cosmos DB](https://docs.microsoft.com/en-us/learn/paths/work-with-nosql-data-in-azure-cosmos-db/)
## ការចាត់តាំង
[Soda Profits](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការបដិសេធ**៖
ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលយើងខិតខំសម្រាប់ភាពត្រឹមត្រូវ សូមយល់ព្រមថាការបកប្រែដោយស្វ័យប្រវត្តិនោះអាចមានកំហុស ឬភាពមិនត្រឹមត្រូវ។ ឯកសារដើមជាភាសារបស់ខ្លួនគួរត្រូវបានពិចារណាថាជាដេតាបេនសម្រាប់ប្រភពដ៏មានសុពលភាព។ សម្រាប់ព័ត៌មានសំខាន់ៗ ការបកប្រែដោយអ្នកវិជ្ជាជីវៈជាមនុស្សត្រូវបានផ្តល់អនុសាសន៍។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ព្រមខុស ឬការបកប្រែខុសផ្សេងៗណាមួយដែលកើតឡើងពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,26 @@
# ប្រយោជន៍សូដា
## សេចក្ដីណែនាំ
[តារាងគណនី Coca Cola Co](../../../../2-Working-With-Data/06-non-relational/CocaColaCo.xlsx) កំពុងខ្វះការគណនាមួយចំនួន។ ភារកិច្ចរបស់អ្នកគឺ៖
1. គណនាប្រាក់ចំណេញសរុប ក្នុងឆ្នាំហិរញ្ញវត្ថុ '15, '16, '17, និង '18
- ប្រាក់ចំណេញសរុប = ប្រាក់ចំណូលប net លើប្រតិបត្តការ - ចំណាយលើទំនិញ
1. គណនាមធ្យមនៃប្រាក់ចំណេញសរុបទាំងអស់។ ព្យាយាមធ្វើនេះដោយប្រើមុខងារ។
- មធ្យម = ផលបូកនៃប្រាក់ចំណេញសរុបចែកចាយដោយចំនួនឆ្នាំហិរញ្ញវត្ថុ (១០)
- ឯកសារពាក់ព័ន្ធនឹង [មុខងារ AVERAGE](https://support.microsoft.com/en-us/office/average-function-047bac88-d466-426c-a32b-8f33eb960cf6)
1. នេះជាឯកសារ Excel ប៉ុន្តែមួយនេះគួរតែអាចកែប្រែបាននៅលើវេទិកាតារាងគណនាណាមួយក៏បាន
[ឧទ្ទនិយមទិន្នន័យដោយ Yiyi Wang](https://www.kaggle.com/yiyiwang0826/cocacola-excel)
## វិចារណកថា
ល្អឧត្តម | គ្រប់គ្រាន់ | តម្រូវការកែលម្អ
--- | --- | -- |
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**បញ្ជាក់**៖
ឯកសារនេះត្រូវបានបកប្រែប្រើសេវាបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលដែលយើងខិតខំធ្វើឲ្យមានភាពត្រឹមត្រូវ សូមយល់ដឹងថាការបកប្រែដោយស្វ័យប្រវត្តិនេះអាចមានកំហុសឬមិនត្រឹមត្រូវ។ ឯកសារដើមនៅក្នុងភាសាមូលដ្ឋានគួរត្រូវបានគេចាត់ទុកថាជាដើមទရោមទ្រព្យដែលមានសុពលភាព។ សម្រាប់ព័ត៌មានសំខាន់ៗ ការបកប្រែដោយមនុស្សវិជ្ជាជីវៈត្រូវបានណែនាំ។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកស្រាយខុសដែលកើតមានពីការប្រើប្រាស់បកប្រែនេះឡើយ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

File diff suppressed because one or more lines are too long

@ -0,0 +1,294 @@
# ការធ្វើការ​ជាមួយទិន្នន័យ៖ Python និងបណ្ណាល័យ Pandas
| ![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/07-WorkWithPython.png) |
| :-------------------------------------------------------------------------------------------------------: |
| ការធ្វើការ​ជាមួយ Python - _Sketchnote by [@nitya](https://twitter.com/nitya)_ |
[![Intro Video](../../../../translated_images/km/video-ds-python.245247dc811db8e4.webp)](https://youtu.be/dZjWOGbsN4Y)
ខណៈដែលមូលដ្ឋានទិន្នន័យផ្តល់នូវវិធីសាស្រ្តមានប្រសិទ្ធភាពខ្ពស់ក្នុងការផ្ទុកទិន្នន័យ និងស្វែងរកតាមភាសាស្វែងរក គន្លឹះបត់បែនបំផុតក្នុងការដំណើរការទិន្នន័យ គឺការសរសេរ​កម្មវិធី​ដើម្បីប្រែក្លាយ​ទិន្នន័យ។ ក្នុង​ច្រើន​ពេលវេលា ការ​ស្វែងរក​មូលដ្ឋាន​ទិន្នន័យ នឹង​ជា​វិធីមាន​ប្រសិទ្ធភាព​ជាង។ ប៉ុន្តែក្នុងករណីខ្លះដែលត្រូវការ​ដំណើរការ​ទិន្នន័យ​ស្មុគស្មាញជាងនេះ វាមិនអាចធ្វើបាន​យ៉ាងងាយស្រួល​នៅ​តាមរយៈ SQL នោះទេ។
ការដំណើរការទិន្នន័យអាចត្រូវបានកម្មវិធីដោយភាសាបញ្ញាសិប្បនិម្មិតណាមួយក៏បាន ប៉ុន្តែមានភាសាខ្លះៗដែលមានកម្រិតខ្ពស់ជាងទាក់ទងនឹងការធ្វើការជាមួយទិន្នន័យ។ អ្នកវិទ្យាសាស្ត្រទិន្នន័យភាគច្រើនចូលចិត្តប្រើភាសាដូចខាងក្រោម៖
* **[Python](https://www.python.org/)**, ភាសាកម្មវិធីទូទៅមួយ ដែលជាញឹកញាប់ត្រូវបានគេចាត់ទុកថាជាជម្រើសល្អសម្រាប់អ្នកចាប់ផ្តើមដោយសារតែកែបំណងស្រាល។ Python មានបណ្ណាល័យបន្ថែម​ជាច្រើនដែលអាចជួយដោះស្រាយបញ្ហាទូទៅជាច្រើន ដូចជាការដកទិន្នន័យពីឯកសារ ZIP ឬបម្លែងរូបភាពទៅពណ៌ប្រផេះ។ បន្ថែមពីការវិទ្យាសាស្ត្រទិន្នន័យ Python ក៏ត្រូវបានប្រើសម្រាប់ការអភិវឌ្ឍបណ្ដាញគេហទំព័រផងដែរ។
* **[R](https://www.r-project.org/)** គឺជាឧបករណ៍ប្រអប់ធម្មតាមួយដែលបានបង្កើតសម្រាប់លទ្ធផលដំណើរការទិន្នន័យស្ថិតិ។ វាក៏មានបណ្ណាល័យធំមួយ (CRAN) ដែលធ្វើឱ្យវាជាជម្រើសល្អសម្រាប់ដំណើរការទិន្នន័យ។ តែក្រៅពីវិស័យវិទ្យាសាស្ត្រទិន្នន័យ R មិនមែនជាភាសាកម្មវិធីទូទៅទេ ហើយត្រូវបានប្រើប្រាស់តិចនៅក្រៅវិស័យនេះ។
* **[Julia](https://julialang.org/)** គឺជាភាសាមួយផ្សេងទៀតដែលបានបង្កើតឡើងជាពិសេសសម្រាប់វិជ្ជាវិទ្យាសាស្ត្រទិន្នន័យ។ វាត្រូវបានគោលបំណងដើម្បីផ្ដល់សមត្ថភាពល្អជាង Python ដែលធ្វើឱ្យវាជាឧបករណ៍ល្អសម្រាប់ការសាកល្បងវិទ្យាសាស្រ្ត។
ក្នុងមេរៀននេះ យើងនឹងផ្តោតលើការប្រើ Python សម្រាប់ដំណើរការទិន្នន័យសាមញ្ញ។ យើងនឹងសន្មត់ថាអ្នកមានការស្គាល់មូលដ្ឋានជាមួយភាសា។ ប្រសិនបើចង់ដឹងបន្ថែមអំពី Python អ្នកអាចយោងទៅកាន់ធនធានចំនួនមួយដូចខាងក្រោម៖
* [រៀន Python យ៉ាងរីករាយជាមួយក្រមសម្លេង Turtle និង Fractals](https://github.com/shwars/pycourse) - វគ្គសិក្សាទី១សម្រាប់ការណែនាំលឿន Python លើ GitHub
* [ជំហានទីមួយជាមួយ Python](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) ផ្លូវសិក្សានៅលើ [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
ទិន្នន័យអាចមានរាងដូចជាច្រើន។ ក្នុងមេរៀននេះ យើងនឹងពិចារណាទាំងបីរាងទិន្នន័យ - **ទិន្នន័យតារាង**, **អត្ថបទ** និង **រូបភាព**។
យើងនឹងផ្តោតលើឧទាហរណ៍ជាច្រើននៃការដំណើរការទិន្នន័យ ដោយមិនបង្ហាញរឿងទាំងអស់នៃបណ្ណាល័យដែលទាក់ទង។ វានឹងអនុញ្ញាតឱ្យអ្នកយល់ពីគំនិតសំខាន់នៃអ្វីដែលអាចធ្វើបាន និងទុកឲ្យអ្នកយល់ថាតើគួររកការជំនួយនៅកន្លែងណា ពេលអ្នកត្រូវការ។
> **របៀបណែនាំដ៏មានប្រយោជន៍​បំផុត**។ នៅពេលដែលអ្នកត្រូវការធ្វើប្រតិបត្តិការណ៍ណាមួយលើទិន្នន័យដែលអ្នកមិនដឹងធ្វើដូចម្តេច សូមស្វែងរកវាតាមអ៊ីនធឺណិត។ [Stackoverflow](https://stackoverflow.com/) ជាទូទៅមានគំរូកូដប្រើប្រាស់បានច្រើនក្នុង Python សម្រាប់ភារកិច្ចទូទៅជាច្រើន។
## [សំណួរផ្ទេរមុនមេរៀន](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## ទិន្នន័យតារាង និង Dataframes
អ្នកបានស្គាល់ទិន្នន័យតារាងរួចហើយនៅពេលដែលយើងបាននិយាយពីមូលដ្ឋានទិន្នន័យទំនាក់ទំនង។ នៅពេលអ្នកមានទិន្នន័យច្រើន ហើយវាត្រូវបានផ្ទុកក្នុងតារាងភ្ជាប់គ្នាច្រើន វាជាការសមរម្យក្នុងការប្រើ SQL ដើម្បីធ្វើការងារ។ ទោះយ៉ាងណា មានករណីជាច្រើនដែលយើងមានតារាងទិន្នន័យ ហើយយើងត្រូវការទទួលបាន **ការយល់ដឹង** ឬ **ការយល់កាន់តែល្អ** អំពីទិន្នន័យនេះ ដូចជា ចំណែកចាយ និងកការតភ្ជាប់រវាងតម្លៃ។ ក្នុងវិទ្យាសាស្ត្រទិន្នន័យ មានរឿងជាច្រើនដែលយើងត្រូវតែបំលែងទិន្នន័យដើមរួចបង្ហាញវា។ ទាំងពីរវិធីសាស្រ្តនោះអាចធ្វើបានយ៉ាងងាយស្រួលជាមួយ Python។
មានបណ្ណាល័យពីរដែលមានប្រយោជន៍ខ្លាំងក្នុង Python ជួយអ្នកគ្រប់គ្រងទិន្នន័យតារាង៖
* **[Pandas](https://pandas.pydata.org/)** អនុញ្ញាតឱ្យអ្នកដំណើរការ **Dataframes** ដែលដូចជាតារាងទំនាក់ទំនង។ អ្នកអាចមានជួរឈរឈ្មោះហើយអាចបំពេញប្រតិបត្តិការបានលើជួរដេក ជួរឈរ និង Dataframes ជាទូទៅ។
* **[Numpy](https://numpy.org/)** ជាបណ្ណាល័យសម្រាប់ការងារជាមួយ **tensor** គឺជា **arrays** ពហុវិមាត្រ។ Array មានតម្លៃពីប្រភេទដូចគ្នា ហើយវាងាយស្រួលជាង DataFrame ប៉ុន្តែផ្តល់នូវប្រតិបត្តិការគណិតវិជ្ជាជាង ហើយបង្កើតចំណាយរចនាសម្ព័ន្ធតិចជាង។
មានបណ្ណាល័យប្លែកៗមួយចំនួនដែលអ្នកគួរតែស្គាល់ផងដែរ៖
* **[Matplotlib](https://matplotlib.org/)** ជាបណ្ណាល័យប្រើសម្រាប់បង្ហាញទិន្នន័យ និងគូរសៀគ្វីក្រាប
* **[SciPy](https://www.scipy.org/)** ជាបណ្ណាល័យដែលមានមុខងារវិទ្យាសាស្រ្តបន្ថែម។ យើងបានប្រើបណ្ណាល័យនេះរួចនៅពេលពិភាក្សាអំពីប្រូបាបានិងស្ថិតិ។
នេះជាកូដដែលអ្នកប្រើប្រាស់បាទធម្មតាដើម្បីនាំចូលបណ្ណាល័យទាំងនេះនៅដើមកម្មវិធី Python របស់អ្នក៖
```python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy import ... # អ្នកត្រូវការបញ្ជាក់កញ្ចប់រងដែលច្បាស់លាស់ដែលអ្នកត្រូវការ
```
Pandas គឺផ្តោតលើគំនិតបន្ទាត់មូលដ្ឋានមួយចំនួន។
### Series
**Series** ជាជួរតម្លៃមួយ ស្រដៀងនឹងបញ្ជីឬ numpy array។ ខុសគ្នាពិសេសគឺ series មាន **index** ហើយនៅពេលយើងធ្វើប្រតិបត្តិការលើ series (ដូចជា បូករួម) អ្វីដែលកើតឡើងគឺយក index ចូលគិតផង។ Index អាចជាលេខចំនួនគត់ (ដែលគេប្រើលំនាំដើមនៅពេលបង្កើត series ពីបញ្ជី ឬ array) ឬច្រើនដូចជាគ្រាប់កាលបរិច្ឆេទ។
> **ចំណាំ**៖ មានកូដផ្តើមនៃ Pandas នៅក្នុងសៀវភៅសរសេរពិសេស [`notebook.ipynb`](notebook.ipynb)។ យើងបង្ហាញតែឧទាហរណ៍ខ្លះនៅទីនេះ ហើយអ្នកអាចចូលមើលសៀវភៅពេញលេញនេះបាន។
យកឧទាហរណ៍៖ យើងចង់វិភាគការលក់នៅកន្លែងលក់អයිស្ក្រីមរបស់យើង។ មកបង្កើត series សម្រាប់ចំនួនលក់ (ចំនួនទំនិញលក់បានមួយថ្ងៃ) ក្នុងរយៈពេលមួយ៖
```python
start_date = "Jan 1, 2020"
end_date = "Mar 31, 2020"
idx = pd.date_range(start_date,end_date)
print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![Time Series Plot](../../../../translated_images/km/timeseries-1.80de678ab1cf727e.webp)
ឥឡូវ suppose រាល់សប្តាហ៍យើងរៀបចំវេទិការីក៏និងយកថង់អයිស្ក្រីមបន្ថែម ១០ កញ្ចប់សម្រាប់បុណ្យ។ យើងអាចបង្កើត series ផ្សេងទៀត ដែល index គឺសប្តាហ៍ ដើម្បីបង្ហាញពីវា៖
```python
additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"))
```
ពេលយើងបូក series ពីរជាមួយគ្នា អ្នកទទួលបានចំនួនសរុប៖
```python
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![Time Series Plot](../../../../translated_images/km/timeseries-2.aae51d575c55181c.webp)
> **ចំណាំ** ថាយើងមិនបានប្រើសរសេរ​សាមញ្ញ `total_items+additional_items` ទេ។ ប្រសិនបើយើងធ្វើវា វានឹងមានតម្លៃ `NaN` (*Not a Number*) ច្រើននៅក្នុង series លទ្ធផល។ នេះដោយសារតែមានតម្លៃបាត់បង់នៅ index មួយចំនួនក្នុង series `additional_items` ហើយបូក `NaN` ជាមួយអ្វីគឺទទួលបាន `NaN`។ ដូច្នេះយើងត្រូវតែបញ្ជាក់តម្លៃ `fill_value` នៅពេលបូក។
ជាមួយ time series យើងអាចអនុវត្ត **resample** លើ series ជាមួយចន្លោះពេលវេលាផ្សេងៗបាន។ ឧទាហរណ៍ suppose យើងចង់គណនាមធ្យមការលក់ប្រចាំខែ។ យើងអាចប្រើកូដដូចខាងក្រោម៖
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![Monthly Time Series Averages](../../../../translated_images/km/timeseries-3.f3147cbc8c624881.webp)
### DataFrame
DataFrame ជាជាការប្រមួល series ដែលមាន index ដូចគ្នា។ យើងអាចបង្រួបបង្រួម series ជាច្រើនចូលទៅក្នុង DataFrame៖
```python
a = pd.Series(range(1,10))
b = pd.Series(["I","like","to","play","games","and","will","not","change"],index=range(0,9))
df = pd.DataFrame([a,b])
```
វានឹងបង្កើតតារាងបញ្ឈរ​ដូចខាងក្រោម៖
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| --- | --- | ---- | --- | --- | ------ | --- | ------ | ---- | ---- |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 1 | I | like | to | use | Python | and | Pandas | very | much |
យើងក៏អាចប្រើ Series ជាជួរឈរ និងបញ្ជាក់ឈ្មោះជួរឈរ ដោយប្រើ dictionary៖
```python
df = pd.DataFrame({ 'A' : a, 'B' : b })
```
វានឹងផ្តល់តារាងដូចខាងក្រោម៖
| | A | B |
| --- | --- | ------ |
| 0 | 1 | I |
| 1 | 2 | like |
| 2 | 3 | to |
| 3 | 4 | use |
| 4 | 5 | Python |
| 5 | 6 | and |
| 6 | 7 | Pandas |
| 7 | 8 | very |
| 8 | 9 | much |
**ចំណាំ** អ្នកក៏អាចទទួលបានចំណាត់ថ្នាក់តារាងនេះដោយប្ដូរទ្រង់ទ្រាយតារាងមុន ដូចជាសរសេរ
```python
df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
```
ដែល `.T` មានន័យថាជាប្រតិបត្តិការប្ដូរ​ជួរដេកនិងជួរឈរ DataFrame ហើយ `rename` អនុញ្ញាតឱ្យអ្នកប្ដូរឈ្មោះជួរឈរឱ្យសមល្អដូចឧទាហរណ៍មុន។
ខាងក្រោមជាប្រតិបត្តិការសំខាន់ៗដែលយើងអាចធ្វើបានលើ DataFrames៖
**ជ្រើសជួរឈរ**។ យើងអាចជ្រើសជួរឈរ​ដោយសរសេរ `df['A']` - ប្រតិបត្តិការនេះត្រឡប់ជាមួយ Series។ យើងក៏អាចជ្រើសជួរឈរផ្នែកខ្លះ ចេញជាទំនាក់ទំនងថ្មី ដោយសរសេរ `df[['B','A']]` - វាត្រឡប់ជាមួយ DataFrame ផ្សេងទៀត។
**តម្រង** ជួរដេកជាក់លាក់ដោយលក្ខខណ្ឌ។ ឧទាហរណ៍ ដើម្បីទុកតែជួរដេកដែលជួរឈរ `A` មានតម្លៃធំជាង 5 យើងអាចសរសេរ `df[df['A']>5]`
> **ចំណាំ** របៀបធ្វើការ​តម្រងគឺ៖ ការប៉ាឡេស្យុង `df['A']<5` ត្រឡប់ជាមួយ series ប៊ូលខាងមុខ បង្ហាញថាតើលក្ខខណ្ឌគឺពិត ឬមិនពិតសម្រាប់ធាតុទោលនីមួយៗក្នុង series ដើម `df['A']`។ នៅពេលដែល series ប៊ូលត្រូវបានប្រើជាអាំងឌិច វាត្រឡប់ជាមួយមាត្រដ្ឋានជួរដេកក្នុង DataFrame។ ដូច្នេះមិនអាចប្រើបញ្ញាពិត/មិនពិត Python ដូចជាសរសេរ `df[df['A']>5 and df['A']<7]` បានទេ។ ត្រូវប្រើប្រតិបត្តិការ `&` លើ boolean series ដូចជា `df[(df['A']>5) & (df['A']<7)]` (*សញ្ញាព័ណនេះចាំបាច់*។)
**បង្កើតជួរឈរថ្មីដែលគណនា​បាន**។ យើងអាចបង្កើតជួរឈរក្នុង DataFrame ជាមួយសមីការផ្សេងៗដោយសាមញ្ញ៖
```python
df['DivA'] = df['A']-df['A'].mean()
```
ឧទាហរណ៍នេះគណនាការប្រែប្រួលរបស់ A ពីតម្លៃមធ្យមរបស់វា។ អ្វីដែលកើតឡើងនៅទីនេះគឺ យើងកំពុងគណនា series មួយ ហើយបន្ទាប់មកចាត់តម្លៃទៅឈាត្បិចឆ្វេង បង្កើតជួរឈរថ្មី។ ដូច្នេះយើងមិនអាចប្រើប្រតិបត្តិការ​អ្វីដែលមិនសមត្ថភាពជាមួយ seriesបានទេ។ ឧទាហរណ៍កូដខាងក្រោមខុស៖
```python
# កូដខុស -> df['ADescr'] = "Low" ប្រសិនបើ df['A'] < 5 "Hi"
df['LenB'] = len(df['B']) # <-
```
ឧទាហរណ៍ចុងក្រោយទោះជាដោយលក្ខណៈវេយ្យាករណ៍គឺត្រឹមត្រូវ ប៉ុន្តែម្តងម៉ោងវាផ្ដល់លទ្ធផលខុសដោយសារតែវាវាយតម្លៃប្រវែងរបស់ series `B` ទៅកាន់តម្លៃទាំងអស់ នៅក្នុងជួរឈរនៃ DataFrame មិនមែនប្រវែងរបស់ធាតុមួយៗដូចដែលចង់បាន។
ប្រសិនបើយើងត្រូវបង្ហាញអនុគមន៍ស្មុគស្មាញដូចនេះ អាចប្រើមុខងារ `apply`។ ឧទាហរណ៍ចុងក្រោយអាចសរសេរ​ដូចខាងក្រោម៖
```python
df['LenB'] = df['B'].apply(lambda x : len(x))
# ឬ
df['LenB'] = df['B'].apply(len)
```
បន្ទាប់ពីអនុវត្តខាងលើ យើងបាន DataFrame ដូចខាងក្រោម៖
| | A | B | DivA | LenB |
| --- | --- | ------ | ---- | ---- |
| 0 | 1 | I | -4.0 | 1 |
| 1 | 2 | like | -3.0 | 4 |
| 2 | 3 | to | -2.0 | 2 |
| 3 | 4 | use | -1.0 | 3 |
| 4 | 5 | Python | 0.0 | 6 |
| 5 | 6 | and | 1.0 | 3 |
| 6 | 7 | Pandas | 2.0 | 6 |
| 7 | 8 | very | 3.0 | 4 |
| 8 | 9 | much | 4.0 | 4 |
**ជ្រើសជួរដេកដោយផ្អែកលើលេខ** អាចធ្វើបានដោយប្រើ `iloc`។ ឧទាហរណ៍ ជ្រើសជួរដេកចំនួន 5 ដំបូងពី DataFrame៖
```python
df.iloc[:5]
```
**ការបើកក្រុម** គឺជារឿងជាញឹកញាប់សម្រាប់ទទួលបានលទ្ធផលស្រដៀងនឹង *pivot tables* នៅក្នុង Excel។ suppose យើងចង់គណនាតម្លៃមធ្យមនៃជួរឈរ `A` សម្រាប់ជួរឈរ `LenB` មួយៗ។ ហើយយើងអាចបង្រួម DataFrame ដោយ `LenB` ហើយហៅ `mean`
```python
df.groupby(by='LenB')[['A','DivA']].mean()
```
ប្រសិនបើត្រូវការគណនាមធ្យម និងចំនួនធាតុនៅក្នុងក្រុម អ្នកអាចប្រើមុខងារ `aggregate` ស្មុគស្មាញ៖
```python
df.groupby(by='LenB') \
.aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \
.rename(columns={ 'DivA' : 'Count', 'A' : 'Mean'})
```
វាបង្ហាញតារាងដូចខាងក្រោម៖
| LenB | Count | Mean |
| ---- | ----- | -------- |
| 1 | 1 | 1.000000 |
| 2 | 1 | 3.000000 |
| 3 | 2 | 5.000000 |
| 4 | 3 | 6.333333 |
| 6 | 2 | 6.000000 |
### ការទទួលទិន្នន័យ
យើងបានឃើញថាវាងាយស្រួលយ៉ាងដូចម្តេចក្នុងការបង្កើត Series និង DataFrames ពីវត្ថុ Python។ ប៉ុន្តែទិន្នន័យភាគច្រើនមានឡើងក្នុងរូបមន្តនៃឯកសារច្បាប់ ឬតារាង Excel។ โชคดีที่ Pandas ផ្ដល់ជម្រើសមួយសាមញ្ញក្នុងការលោតទិន្នន័យពីឌីស។ ឧទាហរណ៍ ការអានឯកសារ CSV គឺសាមញ្ញដូចខាងក្រោមនេះ៖
```python
df = pd.read_csv('file.csv')
```
យើងនឹងឃើញឧទាហរណ៍បន្ថែមទៀតនៃការលោតទិន្នន័យ រួមទាំងការទាញយកវាពីតំបន់បណ្តាញខាងក្រៅ ក្នុងផ្នែក "ប្រលង"
### ការបោះពុម្ភ និងគំនូស
អ្នកវិទ្យាសាស្ត្រទិន្នន័យភាគច្រើនត្រូវស្វែងរកទិន្នន័យ ដូច្នេះវាជារឿងសំខាន់ក្នុងការអាចមើលឃើញវា។ នៅពេល DataFrame មានទំហំធំ មួយចំនួនយើងត្រូវការតែប្រាកដថាយើងកំពុងធ្វើអ្វីបានត្រឹមត្រូវដោយបោះពុម្ភជួរដើមៗមួយចំនួន។ វាអាចធ្វើបានដោយការហៅ `df.head()`។ ប្រសិនបើអ្នកបង្ហាញវាពី Jupyter Notebook វានឹងបោះពុម្ភ DataFrame ជាទម្រង់តារាងដ៏ស្អាតមួយ។
យើងបានឃើញការប្រើប្រាស់ `plot` ដើម្បីចាក់បង្ហាញជួរឈរមួយចំនួន។ ខណៈដែល `plot` មានប្រយោជន៍សម្រាប់ការងារជាច្រើន ហើយគាំទ្រប្រភេទគំនូសជាច្រើនតាមព្រមានុភាព `kind=` អ្នកអាចតែងតែប្រើបណ្ណាល័យ `matplotlib` ដើមដើម្បីគូរអ្វីដែលស្មុគស្មាញជាងនេះ។ យើងនឹងពិពណ៌នាអំពីការមើលទិន្នន័យយ៉ាងលម្អិតក្នុងមេរៀនវគ្គផ្សេងៗ។
ការពិចារណាទាំងនេះគ្របដណ្តប់គំនិតសំខាន់ៗភាគច្រើនរបស់ Pandas ប៉ុន្តែបណ្ណាល័យនេះមានភាពសម្បូរបែបខ្លាំង ហើយគ្មានដែនកំណត់អ្វីដែលអ្នកអាចធ្វើជាមួយវាទេ! ឥឡូវពួកយើងនឹងអនុវត្តចំណេះដឹងនេះដើម្បីដោះស្រាយបញ្ហាក់្បាស់លាស់មួយ។
## 🚀 ប្រលង ១៖ ការវិភាគការរីករាលដាល COVID
បញ្ហាប្រកាសដែលយើងនឹងផ្តោតទៅលើគឺការមោងម៉ូដែលការរីករាលដាលរោគរាតត្បាត COVID-19។ ដើម្បីធ្វើការនេះ យើងនឹងប្រើទិន្នន័យអំពីចំនួនមនុស្សដែលឆ្លងជួរ​នីមួយៗនៅប្រទេសផ្សេងៗ ដែលបានផ្តល់ដោយ [មជ្ឈមណ្ឌលសង្គមវិជ្ជាសាស្ត្រនិងវិស្វកម្ម](https://systems.jhu.edu/) (CSSE) នៅ [សាកលវិទ្យាល័យ Johns Hopkins](https://jhu.edu/)។ សំណុំទិន្នន័យនេះអាចរកបាននៅក្នុង [សារពើភ័ណ្ឌ GitHub នេះ](https://github.com/CSSEGISandData/COVID-19)។
ដោយសារយើងចង់បង្ហាញពីរបៀបដោះស្រាយទិន្នន័យ អ្នកត្រូវបើកបោះពុម្ភ [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) ហើយអានវាពីលើផ្ទាំងខាងលើទៅក្រោម។ អ្នកអាចប្រតិបត្តិការ cells ផងនិងធ្វើប្រលងខ្លះដែលយើងបានទុកសម្រាប់អ្នកនៅចុងក្រោយ។
![COVID Spread](../../../../translated_images/km/covidspread.f3d131c4f1d260ab.webp)
> ប្រសិនបើអ្នកមិនដឹងយ៉ាងដូចម្តេចក្នុងការរត់កូដនៅក្នុង Jupyter Notebook សូមមើល [អត្ថបទនេះ](https://soshnikov.com/education/how-to-execute-notebooks-from-github/)។
## ការធ្វើការជាមួយទិន្នន័យមិនមានរចនាសម្ព័ន្ធ
ខណៈដែលទិន្នន័យភាគច្រើនមានរូបមន្តក្នុងទម្រង់តារាង ករណីខ្លះយើងត្រូវប្រយ័ត្នជាមួយទិន្នន័យដែលមានរចនាសម្ព័ន្ធតិចជាង ដូចជាអត្ថបទឬរូបភាព។ ក្នុងករណីនេះ ដើម្បីអនុវត្តវិធីសាស្ត្របំពានទិន្នន័យដែលយើងបានឃើញខាងលើ អ្នកត្រូវការដកស្រង់ទិន្នន័យដែលមានរចនាសម្ព័ន្ធមួយយ៉ាងណាម្តង។ នេះគឺជាឧទាហរណ៍មួយចំនួន៖
* ដកពាក្យគន្លឹះពីអត្ថបទ ហើយមើលថាពាក្យគន្លឹះអាក្រក់កើតឡើងប៉ុន្មានដង
* ប្រើបណ្តាញប្រសាទដើម្បីលើកឡើងព័ត៌មានអំពីវត្ថុក្នុងរូបភាព
* ទទួលព័ត៌មានអារម្មណ៍របស់មនុស្សក្នុងវីដេអូជាបញ្ចូលពីកាមេរ៉ា
## 🚀 ប្រលង ២៖ ការវិភាគអត្ថបទ COVID
នៅក្នុងប្រលងនេះ យើងនឹងបន្តជាមួយប្រធានបទជំងឺរាតត្បាត COVID ហើយផ្តោតលើការបំពានក្រដាសវិទ្យាសាស្ត្រលើប្រធានបទនេះ។ មានសំណុំទិន្នន័យ [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) ដែលមានអត្ថបទលើសពី ៧០០០ (នៅពេលសរសេរ) អំពី COVID ដោយផ្ដល់ជាមួយព័ត៌មានមេតា និងសង្ខេប (និងសម្រាប់ប្រហែលពាក់កណ្តាលក្នុងចំណោមគេស្ថិតនៅមានអត្ថបទពេញ)។
ឧទាហរណ៍ពេញលេញនៃការវិភាគសំណុំនេះដោយប្រើសេវាកម្មការយល់ដឹង [Text Analytics for Health](https://docs.microsoft.com/azure/cognitive-services/text-analytics/how-tos/text-analytics-for-health/?WT.mc_id=academic-77958-bethanycheum) ត្រូវបានពិពណ៌នាជារបាយការណ៍ [នៅក្នុងប្លុកនេះ](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/)។ យើងនឹងពិភាក្សារបស់កំណែកំណត់ត្រឹមត្រូវនៃការវិភាគនេះ។
> **ចំណាំ**៖ យើងមិនផ្ដល់ចម្លងសំណុំទិន្នន័យជាផ្នែកនៃសារពើភ័ណ្ឌនេះទេ។ អ្នកប្រហែលជាត្រូវទាញយកឯកសារ [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) មុនពី [សំណុំទិន្នន័យនេះនៅ Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge)។ អ្នកប្រហែលជាត្រូវចុះឈ្មោះជាមួយ Kaggle ដើម្បីចូលប្រើ។ អ្នកអាចទាញយកសំណុំទិន្នន័យដោយមិនចាំបាច់ចុះឈ្មោះ [នៅទីនេះ](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html) បែបនេះបានទេ ប៉ុន្តែវានឹងរួមបញ្ចូលអត្ថបទពេញទាំងអស់ក្រៅពីឯកសារ metadata ។
បើក [`notebook-papers.ipynb`](notebook-papers.ipynb) ហើយអានវាពីលើទៅក្រោម។ អ្នកអាចប្រតិបត្តិការចន្លោះទាំងមូល និងធ្វើប្រលងខ្លះដែលយើងបានទុកឲ្យអ្នកនៅចុងក្រោយផងដែរ។
![Covid Medical Treatment](../../../../translated_images/km/covidtreat.b2ba59f57ca45fbc.webp)
## ការដំណើរការទិន្នន័យរូបភាព
នៅពេលថ្មីៗនេះ ម៉ូដែល AI មានអំណាចខ្លាំងត្រូវបានអភិវឌ្ឍដែលអនុញ្ញាតិឲ្យយើងយល់ពីរូបភាព។ មានកិច្ចការជាច្រើនដែលអាចដោះស្រាយបានដោយប្រើបណ្តាញប្រសាទដែលបានបណ្ដុះបណ្ដាលរួចហើយ ឬសេវាគ្លាពហោស័ណ្ឌ។ ឧទាហរណ៍តូចៗរួមមាន៖
* **ចំណាត់ថ្នាក់រូបភាព** ដែលជួយអោយអ្នកចាត់ថ្នាក់រូបភាពទៅក្នុងថ្នាក់ដែលបានកំណត់រួចមួយ។ អ្នកអាចបណ្ដុះបណ្ដាលម៉ូដែលចំណាត់ថ្នាក់រូបភាពជារបស់ខ្លួនយ៉ាងងាយស្រួលដោយប្រើសេវាកម្មដូចជា [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)
* **ការរកឃើញវត្ថុ** ដើម្បីរកវត្ថុផ្សេងៗនៅក្នុងរូបភាព។ សេវាកម្មដូចជា [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) អាចរកឃើញវត្ថុទូទៅជាច្រើន ហើយអ្នកអាចបណ្ដុះបណ្ដាលម៉ូដែល [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) ដើម្បីរកវត្ថុជាក់លាក់មួយចំនួនដែលចាប់អារម្មណ៍។
* **ការរកមុខ** រួមទាំង ការរកអាយុ ភេទ និងអារម្មណ៍។ វាអាចធ្វើបានតាមរយៈ [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum)។
សេវាកម្មគ្លាពทั้งหมดទាំងអស់ជាច្រើននេះអាចហៅប្រើបានដោយប្រើ [Python SDKs](https://docs.microsoft.com/samples/azure-samples/cognitive-services-python-sdk-samples/cognitive-services-python-sdk-samples/?WT.mc_id=academic-77958-bethanycheum) ហើយដូចនេះអាចបញ្ចូលបានយ៉ាងងាយស្រួលក្នុងដំណើរការស្វែងរកទិន្នន័យរបស់អ្នក។
នេះជាឧទាហរណ៍ខ្លះៗនៃការស្វែងរកទិន្នន័យពីប្រភពទិន្នន័យរូបភាព៖
* នៅក្នុងប្លុក [How to Learn Data Science without Coding](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) យើងស្វែងរករូបថត Instagram ព្យាយាមយល់ថាអ្វីធ្វើឲ្យមនុស្សចូលចិត្តរូបថតមួយច្រើនជាង។ យើងដកយកព័ត៌មានបានច្រើនបំផុតពីរូបភាពដោយប្រើប្រាស់ [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) ហើយបន្ទាប់មកប្រើ [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) ដើម្បីបង្កើតម៉ូដែលដែលអាចពន្យល់បាន។
* នៅក្នុង [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies) យើងប្រើ [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) ដើម្បីស្វែងយល់អារម្មណ៍លើមនុស្សក្នុងរូបថតពីព្រឹត្តិការណ៍ ដើម្បីព្យាយាមយល់ថាអ្វីធ្វើឲ្យមនុស្សសប្បាយចិត្ត។
## សេចក្ដីសន្និដ្ឋាន
មិនថា អ្នកមានទិន្នន័យដែលមានរចនាសម្ព័ន្ធ ឬមិនមានរចនាសម្ព័ន្ធ មុននឹងប្រើ Python អ្នកអាចអនុវត្តជំហានទាំងអស់ដែលពាក់ព័ន្ធនឹងការបំពានទិន្នន័យ និងការយល់ដឹងលើវា។ វាជារបៀបដែលរាបស្រាយបំផុតក្នុងការបំពានទិន្នន័យ ហើយនេះគឺជាហេតុផលដែលភាគច្រើនអ្នកវិទ្យាសាស្ត្រ ទិន្នន័យប្រើប្រាស់ Python ជាឧបករណ៍ដើមរបស់ពួកគេ។ ការរៀន Python ជ្រៅជាងគឺជាគំនិតល្អ ប្រសិនបើអ្នកចង់ធ្វើជាអ្នកវិទ្យាសាស្ត្រ ទិន្នន័យយ៉ាងស្មោះត្រង់!
## [សំនួរសរសេរបង្ហាញក្រោយមេរៀន](https://ff-quizzes.netlify.app/en/ds/quiz/13)
## ការពិនិត្យឡើងវិញ និងការសិក្សាផ្ទាល់ខ្លួន
**សៀវភៅ**
* [Wes McKinney. Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython](https://www.amazon.com/gp/product/1491957662)
**ធនធានអនឡាញ**
* មេរៀនផ្លូវការជាចំនួន [១០ នាទីទៅ Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html)
* [ឯកសារអំពីការមើលទិន្នន័យ Pandas Visualization](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
**ការរៀន Python**
* [រៀន Python ជាមួយកម្រងតុក្កតា និងរាង Fractals ដោយរីករាយ](https://github.com/shwars/pycourse)
* [ចាប់ផ្តើមជំហានដំបូងជាមួយ Python](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) ផ្លូវការសិក្សា នៅលើ [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
## បេសកកម្ម
[អនុវត្តការសិក្សាទិន្នន័យអោយលម្អិតជាងនេះសម្រាប់ប្រលងខាងលើ](assignment.md)
## អំណោយផល
មេរៀននេះត្រូវបានសរសេរជាមួយ ♥️ ដោយ [Dmitry Soshnikov](http://soshnikov.com)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការបដិសេធ**៖
ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលយើងខិតខំអោយបានភាពត្រឹមត្រូវ សូមយល់ថាការបកប្រែដោយស្វ័យប្រវត្តិក្ដីអាចមានកំហុស ឬភាពមិនត្រឹមត្រូវ។ ឯកសារដើមក្នុងភាសារដើមគួរត្រូវបានយកជាអនុស្សាវរីយ៍ដ៏ទាន់សម័យ។ សម្រាប់ព័ត៌មានដែលមានសារៈសំខាន់ ការបកប្រែដោយអ្នកជំនាញមនុស្សត្រូវបានណែនាំ។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកបفا្ציותខុសដែលកើតឡើងពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,30 @@
# ការបassignment សម្រាប់ដំណើរការទិន្នន័យក្នុង Python
ក្នុងការបassignmentនេះ យើងនឹងស្នើឲ្យអ្នកពិពណ៌នាពីកូដដែលយើងបានចាប់ផ្តើមអភិវឌ្ឍក្នុងការប្រកួតប្រជែងរបស់យើង។ ការបassignment សរុបមានពីរការផ្នែក៖
## ម៉ូឌែលចរន្តការរីករាលដាល COVID-19
- [ ] គូសគំនូសតាង *R<sub>t</sub>* សម្រាប់ប្រទេស 5-6 ផ្សេងៗគ្នា នៅលើគំនូសតាងតែមួយសម្រាប់ការប្រៀបធៀប ឬប្រើគំនូសតាងជាច្រើនបន្ទាប់គ្នា
- [ ] មើលថាចំនួនអ្នកស្លាប់ និងអ្នកស្ដារឡើងវិញមានទំនាក់ទំនងយ៉ាងដូចម្តេចជាមួយចំនួនករណីឆ្លង
- [ ] ស្វែងរកថា ជំងឺទូទៅយូរប៉ុន្មាន ដោយភ្ជាប់ទំនាក់ទំនងជាមួយអត្រាឆ្លង និងអត្រាស្លាប់ ហើយស្វែងរកករណីអស៊ីមេត្រ។ អ្នកអាចត្រូវមើលប្រទេសផ្សេងៗដើម្បីស្វែងរកនិយាយនេះ
- [ ] គណនាអត្រាស្លាប់ និងរបៀបផ្លាស់ប្តូររបស់វាតាមពេលវេលា *អ្នកអាចចង់យករយៈពេលជំងឺជាកត្តា ដើម្បីផ្លាស់ទីសន្ទស្សន៍ពេលវេលាដើម្បីធ្វើគណនា*
## វិភាគអត្ថបទ COVID-19
- [ ] រៀបចំម៉ាទ្រីសកើតប្រព័ន្ធរួមនៃការប្រើថ្នាំផ្សេងៗ ហើយមើលថាថ្នាំណាដែលតែងតែនៅតែមករួមគ្នា (ឧ. ដែលបានបញ្ជាក់ក្នុងអត្ថបទសង្ខេបមួយ) អ្នកអាចកែសម្រួលកូដសម្រាប់បង្កើតម៉ាទ្រីសកើតប្រព័ន្ធរួមសម្រាប់ថ្នាំ និងវាយតម្លៃ
- [ ] ទទួលបានការបង្ហាញពីម៉ាទ្រីសនេះដោយប្រើ heatmap
- [ ] ជាគោលដៅវែងជាងនេះ មើលការកើតប្រព័ន្ធរួមនៃថ្នាំដោយប្រើ [chord diagram](https://en.wikipedia.org/wiki/Chord_diagram)។ [បណ្ណាល័យនេះ](https://pypi.org/project/chord/) អាចជួយអ្នកគូស chord diagram បាន។
- [ ] ជាគោលដៅវែងជាងនេះទៀត បញ្ចេញការណាត់ទឹកថ្នាំផ្សេងៗ (ដូចជា **400mg** ក្នុង *take 400mg of chloroquine daily*) ដោយប្រើ regular expressions ហើយបង្កើត dataframe ដែលបង្ហាញពីអំឡុងដូចខាងលើសម្រាប់ថ្នាំផ្សេងៗ **សម្គាល់**៖ គិតរូបតម្លៃលេខដែលនៅជិតឈ្មោះថ្នាំក្នុងអក្សរជិតខាង។
## វិធានសម្រាប់ពិន្ទុ
ល្អឥតខ្ចោះ | ត្រឹមត្រូវ | ត្រូវការកែលម្អ
--- | --- | -- |
កិច្ចការទាំងអស់បានបញ្ចប់ ពណ៌ថា និងបកស្រាយយ៉ាងលំអិត រួមទាំងយ៉ាងហោចណាស់មួយក្នុងចំណោមគោលដៅវែងពីរយ៉ាង | កិច្ចការច្រើនជាង 5 បានបញ្ចប់ មិនមានគោលដៅវែងណាមួយបានធ្វើ បើមិនដូច្នោះលទ្ធផលមិនច្បាស់លាស់ | កិច្ចការទាបជាង 5 (ប៉ុន្តែច្រើនជាង 3) បានបញ្ចប់ ការបង្ហាញមិនជួយបង្ហាញចំណុចសំខាន់នោះទេ
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការក្រិតថ្លែង**៖
ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលដែលយើងខំប្រឹងប្រែងសម្រាប់ភាពត្រឹមត្រូវ សូមជួយយល់ថាការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុស ឬការខុសគ្នា។ ឯកសារដើមនៅក្នុងភាសាម្ចាស់របស់វាគួរត្រូវបានគេចាត់ទុកជាភស្តុតាងដើម។ សម្រាប់ព័ត៌មានសំខាន់ៗ ការបកប្រែដោយមនុស្សដែលមានជំនាញគឺត្រូវបានផ្ដល់អនុសាសន៍។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកផ្សារត្រូវបានបង្កើតឡើងពីការប្រើប្រាស់ការបកប្រែនេះនោះទេ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1,341 @@
# ការបំពេញទិន្នន័យ: ការរៀបចំទិន្នន័យ
|![ Sketchnote ដោយ [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/08-DataPreparation.png)|
|:---:|
|ការរៀបចំទិន្នន័យ - _Sketchnote ដោយ [@nitya](https://twitter.com/nitya)_ |
## [ការប្រឡងមុនមេរៀន](https://ff-quizzes.netlify.app/en/ds/quiz/14)
អាស្រ័យលើប្រភពរបស់វា ទិន្នន័យដើមអាចមានភាពមិនសំរុងសំរួលខ្លះៗ ដែលនឹងបង្កើតឱ្យមានការលំបាកក្នុងការវិភាគ និងការបោះពុម្ពម៉ូដែល។ ថិចពាក្យផ្សេងទៀត ទិន្នន័យនេះអាចត្រូវបានចាត់ថ្នាក់ជា "បរិញ្ញ" ហើយត្រូវការប្រមូលផ្តុំឡើងវិញ។ មេរៀននេះផ្តោតលើបច្ចេកទេសសំរាប់ការសម្អាត និងបម្លែងទិន្នន័យ ដើម្បីដោះស្រាយបញ្ហាក្នុងការខ្វះខាត ទិន្នន័យមិនច្បាស់លាស់ ឬមិនពេញលេញ។ ប្រធានបទដែលបានគ្របដណ្តប់ក្នុងមេរៀននេះ នឹងប្រើប្រាស់ Python និងបណ្ណាល័យ Pandas ហើយនឹងត្រូវបាន [បង្ហាញក្នុងសៀវភៅកំណត់ត្រា](notebook.ipynb) នៅក្នុងថតនេះ។
## សារៈសំខាន់នៃការសម្អាតទិន្នន័យ
- **ភាពងាយស្រួលក្នុងការប្រើ និងប្រើឡើងវិញ**: ពេលដែលទិន្នន័យត្រូវបានរៀបចំយ៉ាងម៉ត់ចត់ និងមានការផ្ទៀងផ្ទាត់ល្អ វាធ្វើឲ្យងាយស្រួលក្នុងការស្វែងរក ប្រើប្រាស់ និងចែករំលែកជាមួយអ្នកដទៃ។
- **ភាពស៊ីទាស់**: វិទ្យាសាស្ត្រទិន្នន័យភាគច្រើនតម្រូវឲ្យធ្វើការជាមួយឈុតទិន្នន័យច្រើនជាងមួយ ដែលឈុតទិន្នន័យពីប្រភពផ្សេងៗត្រូវតែត្រូវបានភ្ជាប់ជាមួយគ្នា។ មានការត្រួតពិនិត្យថា ឈុតទិន្នន័យនីមួយៗមានស្តង់ដាររួមគ្នា នឹងធានាថាទិន្នន័យនោះនៅតែមានប្រយោជន៍ នៅពេលដែលបញ្ចូលសរុបលើឈុតទិន្នន័យតែមួយ។
- **ភាពត្រឺមត្រូវនៃម៉ូដែល**: ទិន្នន័យដែលបានសម្អាតធ្វើឲ្យមានភាពត្រឺមត្រូវជាងមុនចំពោះម៉ូដែលដែលផ្អែកលើវា។
## គោលដៅ និងយុទ្ធសាស្ត្រសម្អាតទិន្នន័យដែលត្រូវបានប្រើប្រាស់ជាទូទៅ
- **ការស្វែងយល់អំពីឈុតទិន្នន័យ**: ការស្វែងយល់ទិន្នន័យ ដែលបានរៀបរាប់នៅក្នុង [មេរៀនបន្ទាប់](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/4-Data-Science-Lifecycle/15-analyzing) អាចជួយអ្នករកឃើញទិន្នន័យដែលត្រូវបានសម្អាត។ ការមើលតម្លៃក្នុងឈុតទិន្នន័យអាចបង្ហាញពីការរំពឹងទុកពីអ្វីដែលសល់នៅ ព្រមទាំងផ្តល់មួយយោបល់អំពីបញ្ហាណាដែលអាចដោះស្រាយ។ ការស្វែងយល់អាចរួមបញ្ចូលការស្វែងរកមូលដ្ឋាន ការនិម្មិត និងការរើសយកតម្លៃឯក.
- **ការប្រមូលផ្គុំទ្រង់ទ្រាយ**: អាស្រ័យលើប្រភពទិន្នន័យ អាចមានភាពមិនសមរម្យនៅក្នុងរបៀបបង្ហាញវា។ នេះអាចបង្កបញ្ហាក្នុងការស្វែងរក និងតំណាងតម្លៃ ដែលវាត្រូវបានគេឃើញនៅក្នុងឈុតទិន្នន័យ ប៉ុន្តែមិនបានតំណាងច្បាស់លាស់នៅក្នុងការបង្ហាញដូចជា និម្មិត ឬលទ្ធផលស្វែងរក។ បញ្ហាទ្រង់ទ្រាយទូទៅរួមមានការដោះស្រាយកន្លែងប្រែអាក្រាត យ៉ាងដូចជាពេលវេលា និងប្រភេទទិន្នន័យ។ ការដោះស្រាយបញ្ហាទ្រង់ទ្រាយភាគច្រើនត្រូវបានធ្វើដោយអ្នកប្រើប្រាស់ទិន្នន័យ។ ឧទាហរណ៍ ស្តង់ដារអំពីរបៀបបង្ហាញពេលវេលា និងលេខអាចខុសគ្នាតាមប្រទេស។
- **ការទទួលខុសត្រូវពីពហុចម្លង**: ទិន្នន័យដែលមានឈុតបញ្ជាក់ច្រើនជាងមួយអាចបង្កលទ្ធផលមិនត្រឹមត្រូវ ហើយភាគច្រើនត្រូវបានលុបចោល។ នេះជាបញ្ហាទូទៅនៅពេលភ្ជាប់ឈុតទិន្នន័យពីពីរឬច្រើនជាមួយគ្នា។ ទោះយ៉ាងណា មានករណីដែលការចម្លងក្នុងឈុតទិន្នន័យភ្ជាប់មានទ្រង់ទ្រាយដែលផ្តល់ព័ត៍មានបន្ថែម ហើយត្រូវការរក្សាទុក។
- **ទិន្នន័យខ្វះ**: ទិន្នន័យខ្វះអាចបង្កជាលទ្ធផលមិនត្រឹមត្រូវ និងលទ្ធផលខ្សោយ ឬមានការជម្រុញចំហ។ មួយចំនួនអាចដោះស្រាយដោយ "ផ្ទុកឡើងវិញ" ទិន្នន័យ បម្រុងតម្លៃខ្វះជាមួយកូដគណនា ដូចជា Python ឬគ្រាន់តែលុបបញ្ញត្តិ និងទិន្នន័យដដែលគ្នា។ មានមូលហេតុជាច្រើនដែលបណ្ដាលឲ្យទិន្នន័យខ្វះ ហើយសកម្មភាពបញ្ចប់ការខ្វះអាចអាស្រ័យលើរបៀប និងមូលហេតុដែលវាបាត់បង់។
## ស្វែងរកព័ត៌មាន DataFrame
> **គោលដៅសិក្សា:** នៅចុងផ្នែកនេះ អ្នកគួរតែមានភាពរលូនក្នុងការស្វែងរកព័ត៌មានទូទៅអំពីទិន្នន័យដែលបានផ្ទុកនៅក្នុង pandas DataFrames។
ពេលដែលអ្នកបានផ្ទុកទិន្នន័យរបស់អ្នកទៅ pandas វាធម្មតាបង្ហាញក្នុងរូបបែប DataFrame (សូមយោងទៅមេរៀនមុន [នេះ](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/2-Working-With-Data/07-python#dataframe) សម្រាប់ការពិពណ៌នាអំពីរូបមន្តពិសេស)។ ប៉ុន្តែបើសិនជាឈុតទិន្នន័យក្នុង DataFrame របស់អ្នកមានជួរដេក 60,000 និងជួរឈរ 400 ចេញវិញ តើអ្នកចាប់ផ្តើមយ៉ាងដូចម្តេចដើម្បីយល់ពីអ្វីដែលអ្នកកំពុងរក្សា? ករណីសំណាងមួយគឺ [pandas](https://pandas.pydata.org/) ផ្តល់ឧបករណ៍ងាយស្រួលមួយចំនួនក្នុងការមើលព័ត៌មានទាំងមូលអំពី DataFrame បូកនឹងបន្ទាត់ដើម និងបន្ទាត់ចុងក្រោយពីរបីជួរ។
ដើម្បីសាកល្បងមើលមុខងារ នេះ យើងនឹងនាំចូលបណ្ណាល័យ Python scikit-learn ហើយប្រើឈុតទិន្នន័យដ៏ល្បី: **ឈុតទិន្នន័យ Iris**។
```python
import pandas as pd
from sklearn.datasets import load_iris
iris = load_iris()
iris_df = pd.DataFrame(data=iris['data'], columns=iris['feature_names'])
```
| |sepal length (cm)|sepal width (cm)|petal length (cm)|petal width (cm)|
|----------------------------------------|-----------------|----------------|-----------------|----------------|
|0 |5.1 |3.5 |1.4 |0.2 |
|1 |4.9 |3.0 |1.4 |0.2 |
|2 |4.7 |3.2 |1.3 |0.2 |
|3 |4.6 |3.1 |1.5 |0.2 |
|4 |5.0 |3.6 |1.4 |0.2 |
- **DataFrame.info**: ដើម្បីចាប់ផ្តើម វិធីសាស្ត្រ `info()` ត្រូវបានប្រើសម្រាប់បោះពុម្ពសេចក្តីសង្ខេបពីមាតិកាដែលមានក្នុង `DataFrame`។ យើងសូមមើលឈុតទិន្នន័យនេះដើម្បីមើលអ្វីដែលយើងមាន៖
```python
iris_df.info()
```
```
RangeIndex: 150 entries, 0 to 149
Data columns (total 4 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 sepal length (cm) 150 non-null float64
1 sepal width (cm) 150 non-null float64
2 petal length (cm) 150 non-null float64
3 petal width (cm) 150 non-null float64
dtypes: float64(4)
memory usage: 4.8 KB
```
ពីនេះ យើងដឹងថា ឈុតទិន្នន័យ *Iris* មានការចុះបញ្ជី 150 ក្នុងជួរឈរ 4 ដោយគ្មានការចុះបញ្ជីណាមួយដែលទទេ។ ទិន្នន័យទាំងអស់ត្រូវបានផ្ទុកជាលេខចត់ខ្សែកោណ 64 ប៊ីត។
- **DataFrame.head()**: បន្ទាប់មក ដើម្បីពិនិត្យមើលមាតិកានៃ `DataFrame` យើងប្រើវិធីសាស្ត្រ `head()`។ មកមើលជួរដេកដំបូងៗរបស់ `iris_df`
```python
iris_df.head()
```
```
sepal length (cm) sepal width (cm) petal length (cm) petal width (cm)
0 5.1 3.5 1.4 0.2
1 4.9 3.0 1.4 0.2
2 4.7 3.2 1.3 0.2
3 4.6 3.1 1.5 0.2
4 5.0 3.6 1.4 0.2
```
- **DataFrame.tail()**: ក្នុងវិញវិញត្រូវការ ពិនិត្យមើលជួរដេកចុងក្រោយនៃ `DataFrame` យើងប្រើវិធីសាស្ត្រ `tail()`
```python
iris_df.tail()
```
```
sepal length (cm) sepal width (cm) petal length (cm) petal width (cm)
145 6.7 3.0 5.2 2.3
146 6.3 2.5 5.0 1.9
147 6.5 3.0 5.2 2.0
148 6.2 3.4 5.4 2.3
149 5.9 3.0 5.1 1.8
```
> **ការសង្ខេប**៖ ត្រឹមតែការមើលលម្អិតព័ត៌មានអំពីមាតិកានៅក្នុង DataFrame ឬតម្លៃដំបូងនិងចុងក្រោយ អ្នកអាចទទួលបានគំនិតមួយភ្លាមភ្លើយនៃទំហំ រាងរូប និងមាតិកានៃទិន្នន័យដែលអ្នកកំពុងដោះស្រាយ។
## ជួបប្រទៈនឹងទិន្នន័យខ្វះ
> **គោលដៅសិក្សា:** នៅចុងផ្នែកនេះ អ្នកគួរតែដឹងរបៀបជំនួស ឬដកចេញតម្លៃទទេពី DataFrames។
ភាគច្រើនពេលឈុតទិន្នន័យដែលអ្នកចង់ប្រើ ឬត្រូវប្រើ មានតម្លៃខ្វះនៅក្នុងវា។ របៀបដំណើរការទិន្នន័យខ្វះ មានការជួញដូរលំបាកដែលអាចប៉ះពាល់ទៅលើការវិភាគចុងក្រោយ និងលទ្ធផលពិតប្រាកដ។
Pandas ដំណើរការតម្លៃខ្វះពីរបៀប។ មួយដែលអ្នកបានឃើញនៅផ្នែកមុនគឺ `NaN` ឬ Not a Number។ នេះជាតម្លៃពិសេសមួយដែលជាផ្នែកនៃលក្ខណៈ IEEE ចត់ខ្សែកោណ ហើយត្រូវបានប្រើសម្រាប់បង្ហាញតម្លៃចត់ខ្សែកោណដែលខ្វះតែប៉ុណ្ណោះ។
សម្រាប់តម្លៃខ្វះដែលមិនមែនជាចត់ខ្សែកោណ pandas ប្រើអ объекта Python `None`។ ខណៈដែលវាអាចមានភាពស្មុគស្មាញថាអ្នកនឹងជួបប្រទៈតម្លៃពីប្រាំបីប្រភេទផ្សេងគ្នាដែលមានន័យដូចគ្នា តែមានហេតុផលកម្មវិធីដ៏ច្បាស់លាស់សម្រាប់ការរចនាតាមរយៈនេះ ហើយក្នុងអនុវត្ត វាជួយឲ្យ pandas ផ្តល់កំណត់សមស្របល្អសម្រាប់ករណីភាគច្រើន។ ទោះយ៉ាងណា ទាំង `None` និង `NaN` មានកំណត់ខ្លះៗ ដែលអ្នកត្រូវយកចិត្តទុកដាក់ទាក់ទងមានករណីអាចប្រើប្រាស់បាន។
សូមមើលបន្ថែមអំពី `NaN` និង `None` ពី [សៀវភៅកំណត់ត្រា](https://github.com/microsoft/Data-Science-For-Beginners/blob/main/4-Data-Science-Lifecycle/15-analyzing/notebook.ipynb)។
- **ការរកឃើញតម្លៃទទេ**: ក្នុង `pandas` វិធីសាស្ត្រ `isnull()` និង `notnull()` ជាវិធីសាស្ត្រដែលអ្នកប្រើសម្រាប់រកឃើញទិន្នន័យទទេ។ ទាំងពីរត្រឡប់ជាផ្ទាំងបឹនទិន្នន័យ Boolean នៅលើទិន្នន័យរបស់អ្នក។ យើងនឹងប្រើ `numpy` សម្រាប់តម្លៃ `NaN`:
```python
import numpy as np
example1 = pd.Series([0, np.nan, '', None])
example1.isnull()
```
```
0 False
1 True
2 False
3 True
dtype: bool
```
មើលយ៉ាងម៉ត់ចត់លទ្ធផល។ តើមានអ្វីដែលធ្វើឲ្យអ្នកភ្ញាក់ផ្អើលទេ? ខណៈ `0` គឺជាចំនួនសូន្យសម្រាប់គណិតវិទ្យា ប៉ុន្តែវាគឺជាចំនួនគត់ដែលមានតម្លៃត្រឹមត្រូវ ហើយ pandas ទទួលស្គាល់វា។ `''` (ខ្សែអក្សរពុំមានអ្វី) ពិបាកច្រើនជាង។ នៅផ្នែកមុនយើងបានប្រើវាសម្រាប់តំណាងតម្លៃខ្សែអក្សរដែលទទេ ប៉ុន្តែវាក៏ជាវត្ថុខ្សែអក្សរប្រើ និងមិនមែនតំណាងនៃតម្លៃទទេដូចជាកម្មវិធី pandas។
ឥឡូវនេះ ប្រើវាផ្ទៃមុខវិញ ខណៈនេះ អ្នកអាចប្រើផ្ទាំងបឹន Boolean ដូចជា ``Series`` ឬ ``DataFrame`` index ដោយផ្ទាល់ ដែលអាចមានប្រយោជន៍ពេលចង់ធ្វើការជាមួយតម្លៃខ្វះឯកាស (ឬតម្លៃមាន) ។
> **ការសង្ខេប**៖ ទាំងវិធីសាស្ត្រ `isnull()` និង `notnull()` ផ្តល់លទ្ធផលស្រដៀងគ្នាពេលអ្នកប្រើវានៅក្នុង `DataFrame`s៖ វាបង្ហាញលទ្ធផល និងតំណរភ្ជាប់របស់លទ្ធផល ពោលគឺជាឧបករណ៍ជួយដល់អ្នកយ៉ាងខ្លាំងក្នុងការគ្រប់គ្រងទិន្នន័យរបស់អ្នក។
- **ការលុបទិន្នន័យទទេ**: លើសពីការចាប់ផ្តើមរកតម្លៃខ្វះ pandas ផ្តល់វិធីងាយស្រួលមួយសម្រាប់លុបទិន្នន័យទទេពី `Series` និង `DataFrame`s។ (សម្រាប់ឈុតទិន្នន័យធំៗ ជាច្រើនពេល ល្អប្រសើរជាងក្នុងការលុបតម្លៃទទេ [NA] ពីការវិភាគរបស់អ្នកជាជម្រើសជាងវិធីផ្សេងៗ)។ ដើម្បីឃើញវាដំណើរការ ចុចត្រឡប់ទៅ `example1`:
```python
example1 = example1.dropna()
example1
```
```
0 0
2
dtype: object
```
សូមចងចាំថា វានឹងដូចជាលទ្ធផលរបស់អ្នកពី `example3[example3.notnull()]`។ ខុសគ្នាគឺ `dropna` បានលុបទិន្នន័យខ្វះនៅក្នុង `Series` `example1` រួច។
ដោយសារតែ `DataFrame`s មានទំហំពីរ វាអនុញ្ញាតឱ្យមានជម្រើសច្រើនសម្រាប់ការលុបទិន្នន័យ។
```python
example2 = pd.DataFrame([[1, np.nan, 7],
[2, 5, 8],
[np.nan, 6, 9]])
example2
```
| | 0 | 1 | 2 |
|------|---|---|---|
|0 |1.0|NaN|7 |
|1 |2.0|5.0|8 |
|2 |NaN|6.0|9 |
(តើអ្នកមើលឃើញទេថា pandas បានបំលែងជួរឈរពីរចំនួនមួយទៅជាចត់ខ្សែកោណ ដើម្បីផ្តល់គម្លាតទៅ `NaN`s?)
អ្នកមិនអាចលុបទតម្លៃតែមួយនៅក្នុង `DataFrame` បានទេ អ្នកត្រូវលុបជួរដេកឬជួរឈរ។ អាស្រ័យលើអ្វីដែលអ្នកកំពុងធ្វើ អ្នកអាចចង់ធ្វើមួយក្នុងពីរប្រភេទ ហើយ pandas ផ្ដល់ជម្រើសទាំងពីរឱ្យអ្នក។ ពីព្រោះនៅវិទ្យាសាស្រ្តទិន្នន័យ ជួរឈរបង្ហាញអថេរ ហើយជួរដេកបង្ហាញការសង្កេតមើល ខណៈលំនាំដើមសម្រាប់ `dropna()` គឺលុបជួរដេកទាំងអស់ដែលមានតម្លៃទទេណាមួយ៖
```python
example2.dropna()
```
```
0 1 2
1 2.0 5.0 8
```
បើតម្រូវ អ្នកអាចលុបទម្លៃ NA ពីជួរឈរ។ ប្រើ `axis=1` ដើម្បីធ្វើវា:
```python
example2.dropna(axis='columns')
```
```
2
0 7
1 8
2 9
```
ចាប់តាំងពីនេះ អ្នកអាចលុបទិន្នន័យច្រើនដែលអ្នកចង់រក្សាទុក ជាពិសេសសម្រាប់ឈុតទិន្នន័យតូចៗ។ ដូចម្តេចបើអ្នកចង់លុបតែជួរដេក ឬជួរឈរដែលមានតម្លៃទទេជាច្រើន ឬគ្រប់តែអស់? អ្នកអាចកំណត់ជម្រើសនោះនៅក្នុង `dropna` ជាមួយប៉ារ៉ាម៉ែត្រ `how` និង `thresh`
លំនាំដើម របស់ `how='any'` (បើអ្នកចង់ពិនិត្យផ្ទាល់ ឬមើលប៉ារ៉ាម៉ែត្រផ្សេងៗរបស់វិធីសាស្ត្រ អាចបញ្ចូល `example4.dropna?` ក្នុងកោដទ័រ)។ យើងអាចកំណត់ជំរឿន `how='all'` ដើម្បីលុបតែកំណត់តែជួរដេក ឬជួរឈរដែលមានតម្លៃទទេគ្រប់អស់ប៉ុណ្ណោះ។ យើងពង្រីកឧទាហរណ៍ `DataFrame` ដើម្បីមើលវាដំណើរការ។
```python
example2[3] = np.nan
example2
```
| |0 |1 |2 |3 |
|------|---|---|---|---|
|0 |1.0|NaN|7 |NaN|
|1 |2.0|5.0|8 |NaN|
|2 |NaN|6.0|9 |NaN|
ប៉ារ៉ាម៉ែត្រ `thresh` ផ្តល់ការគ្រប់គ្រងលំអិតជាង៖ អ្នកកំណត់ចំនួនតម្លៃ *មិនទទេ* ដែលជួរដេក ឬជួរឈរត្រូវមាន ដើម្បីរក្សាទុកវា:
```python
example2.dropna(axis='rows', thresh=3)
```
```
0 1 2 3
1 2.0 5.0 8 NaN
```
នៅទីនេះ ជួរដេកដំបូង និងចុងក្រោយ ត្រូវបានលុបចេញ ដោយសារតែវាមានត្រឹមតែលេខមិនទទេពីរតែប៉ុណ្ណោះ។
- **បំពេញតម្លៃទទេ**: អាស្រ័យលើឈុតទិន្នន័យរបស់អ្នក ផ្លាស់ប្តូរតម្លៃទទេទៅតម្លៃត្រឹមត្រូវអាចមានអត្ថិភាពជាងការលុបវា។ អ្នកអាចប្រើ `isnull` ដើម្បីធ្វើការនេះនៅកន្លែងដដែល ប៉ុន្តែវាអាចលំបាកជាពិសេសបើអ្នកមានតម្លៃជាច្រើនត្រូវបំពេញ។ ព្រោះនេះជាការងារសំខាន់មួយក្នុងវិទ្យាសាស្រ្តទិន្នន័យ pandas ផ្ដល់ `fillna` ដែលបង្វិលតម្លៃ `Series``DataFrame` ជាមួយតម្លៃថ្មីដែលអ្នកជ្រើសរើស។ យើងបង្កើត `Series` ឧទាហរណ៍មួយទៀតដើម្បីមើលរបៀបនេះដំណើរការ។
```python
example3 = pd.Series([1, np.nan, 2, None, 3], index=list('abcde'))
example3
```
```
a 1.0
b NaN
c 2.0
d NaN
e 3.0
dtype: float64
```
អ្នកអាចបំពេញតម្លៃទទេទាំងអស់ជាមួយតម្លៃតែមួយដូចជា `0`
```python
example3.fillna(0)
```
```
a 1.0
b 0.0
c 2.0
d 0.0
e 3.0
dtype: float64
```
អ្នកអាច **បំពេញជាដំណាក់កាលមុខ** ត្រូវគឺប្រើតម្លៃត្រឹមត្រូវចុងក្រោយសម្រាប់បំពេញតម្លៃទទេ៖
```python
example3.fillna(method='ffill')
```
```
a 1.0
b 1.0
c 2.0
d 2.0
e 3.0
dtype: float64
```
អ្នកអាច **បំពេញបិទក្រោយ** ដើម្បីបញ្ជូនតម្លៃត្រឹមត្រូវបន្ទាប់ទៅបំពេញតម្លៃទទេ៖
```python
example3.fillna(method='bfill')
```
```
a 1.0
b 2.0
c 2.0
d 3.0
e 3.0
dtype: float64
```
ដូចអ្នកអាចយល់បាន វាដំណើរការដូចគ្នាជាមួយ `DataFrame`s ហើយអ្នកអាចកំណត់ `axis` សម្រាប់បំពេញតម្លៃទទេក៏បាន។ យក `example2` ដែលបានប្រើជាមុនវិញ៖
```python
example2.fillna(method='ffill', axis=1)
```
```
0 1 2 3
0 1.0 1.0 7.0 7.0
1 2.0 5.0 8.0 8.0
2 NaN 6.0 9.0 9.0
```
សូមចំណាំថា ពេលមិនមានតម្លៃត្រឹមត្រូវពីមុនសម្រាប់បំពេញជាដំណាក់កាលមុខ តម្លៃទទេនៅតែស្ថិតនៅដដែល។
> **takeaway៖** មានវិធីជាច្រើនក្នុងការដោះស្រាយគុណតម្លៃដែលខ្វះនៅក្នុងឯកសារទិន្នន័យរបស់អ្នក។ ច្បាស់លាស់ នយោបាយជាក់លាក់ដែលអ្នកប្រើ (ការដកចេញ, ការជំនួស, ឬរបៀបដែលអ្នកជំនួស) ត្រូវតែត្រូវបានគ្រប់គ្រងដោយលក្ខខណ្ឌជាក់លាក់នៃទិន្នន័យនោះ។ អ្នកនឹងអភិវឌ្ឍអារម្មណ៍ល្អប្រសើរជាងមុនក្នុងការដោះស្រាយគុណតម្លៃដែលខ្វះដោយថែមទាំងអ្នកដំណើរការ និងអន្តរកម្មជាមួយឯកសារទិន្នន័យ។
## ការដកចេញទិន្នន័យចម្លង
> **គោលបំណងរៀន៖** នៅចុងផ្នែកនេះ អ្នកគួរតែធ្វើការរកមើល និងដកចេញគុណតម្លៃចម្លងពី DataFrames បានយ៉ាងងាយស្រួល។
ក្រៅពីទិន្នន័យដែលខ្វះ អ្នកគេជាញឹកញាប់ជួបប្រទៈទិន្នន័យចម្លងក្នុងឯកសារទិន្នន័យជាក់ស្តែង។ សំណាងល្អ `pandas` ផ្តល់នូវវិធីងាយស្រួលក្នុងការរកឃើញ និងដកចេញធាតុចម្លង។
- **ការរកមើលចម្លង៖ `duplicated`**៖ អ្នកអាចរកមើលគុណតម្លៃចម្លងបានយ៉ាងងាយដោយប្រើវិធីសាស្រ្ត `duplicated` នៅក្នុង pandas ដែលបញ្ជូនត្រឡប់ពីម៉ាស Boolean បង្ហាញថាប្រសិនបើធាតុនៅក្នុង `DataFrame` ជាចម្លងនៃធាតុមួយដែលមុនហើយ។ យើងនឹងបង្កើត `DataFrame` គំរូមួយទៀតដើម្បីមើលវាកំពុងបង្ហាញដូចម្តេច។
```python
example4 = pd.DataFrame({'letters': ['A','B'] * 2 + ['B'],
'numbers': [1, 2, 1, 3, 3]})
example4
```
| |letters|numbers|
|------|-------|-------|
|0 |A |1 |
|1 |B |2 |
|2 |A |1 |
|3 |B |3 |
|4 |B |3 |
```python
example4.duplicated()
```
```
0 False
1 False
2 True
3 False
4 True
dtype: bool
```
- **ការដកចេញចម្លង៖ `drop_duplicates`:** គ្រាន់តែត្រឡប់មកជាការចម្លងនៃទិន្នន័យដែលសម្រាប់វាល `duplicated` ទាំងអស់គឺ `False`:
```python
example4.drop_duplicates()
```
```
letters numbers
0 A 1
1 B 2
3 B 3
```
ទាំង `duplicated` និង `drop_duplicates` ធម្មតាជ្រើសរើសពិនិត្យគ្រប់ជួរឈរប៉ុន្តែអ្នកអាចកំណត់ឲ្យពិនិត្យតែខ្សែជួរឈរមួយចំនួននៅក្នុង `DataFrame` របស់អ្នកបាន:
```python
example4.drop_duplicates(['letters'])
```
```
letters numbers
0 A 1
1 B 2
```
> **takeaway៖** ការដកចេញទិន្នន័យចម្លងគឺជាផ្នែកសំខាន់នៃគម្រោងវិទ្យាសាស្ត្រទិន្នន័យរាល់គម្រោងជិតទាំងអស់។ ទិន្នន័យចម្លងអាចប្ដូរលទ្ធផលនៃការវិភាគរបស់អ្នក និងផ្តល់លទ្ធផលមិនត្រឹមត្រូវ!
## 🚀 ប្រកួតប្រជែង
សម្ភារៈទាំងអស់ដែលបានពិភាក្សាត្រូវបានផ្តល់ជាទំព័រជា [Jupyter Notebook](https://github.com/microsoft/Data-Science-For-Beginners/blob/main/2-Working-With-Data/08-data-preparation/notebook.ipynb)។ លើសពីនេះ សូមពិនិត្យមើលលំហាត់កីឡា ក្រោយផ្នែកនីមួយៗ បញ្ជាក់សូមសាកល្បង!
## [តេស្តបន្ទាប់មកពីការបង្រៀន](https://ff-quizzes.netlify.app/en/ds/quiz/15)
## ពិនិត្យឡើងវិញ និងសិក្សាដោយខ្លួនឯង
មានវិធីជាច្រើនក្នុងការស្វែងរក និងប្រើប្រាស់ដើម្បីរៀបចំទិន្នន័យរបស់អ្នកសម្រាប់ការវិភាគ និងគំរូ និងការសម្អាតទិន្នន័យគឺជជំហានសំខាន់ដែលជាបទពិសោធ "ដៃលើ"។ សាកល្បងកម្មវិធីប្រកួតប្រជែងទាំងនេះពី Kaggle ដើម្បីស្រាវជ្រាវបច្ចេកទេសដែលមេរៀននេះមិនបានគ្រប់គ្រាន់។
- [ភាពប្រកួតប្រជែងសម្អាតទិន្នន័យ៖ ការបំលែងកាលបរិច្ឆេទ](https://www.kaggle.com/rtatman/data-cleaning-challenge-parsing-dates/)
- [ភាពប្រកួតប្រជែងសម្អាតទិន្នន័យ៖ ការវាស់ស័យ និងការប្រកួតទិន្នន័យ](https://www.kaggle.com/rtatman/data-cleaning-challenge-scale-and-normalize-data)
## ការប្រឡង
[ការវាយតម្លៃទិន្នន័យពីបែបបទ](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការបដិសេធ**៖
ឯកសារនេះបានបកប្រែដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលដែលយើងខំប្រឹងប្រែងដើម្បីឲ្យបានភាពត្រឹមត្រូវ សូមយល់ថាការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុស ឬខុសប្លែកខ្លះៗបាន។ ឯកសារដើមក្នុងភាសាដើមគួរត្រូវបានដឹងថាជាធនធានផ្លូវការដោយផ្ទាល់។ សម្រាប់ព័ត៌មានសំខាន់ៗ សូមលើកទឹកចិត្តឲ្យមានការបកប្រែដោយអ្នកជំនាញមនុស្ស។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកស្រាយខុសណាមួយបណ្តាលមកពីការប្រើប្រាស់បកប្រែនេះឡើយ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

File diff suppressed because one or more lines are too long

@ -0,0 +1,21 @@
# ការវាយតម្លៃទិន្នន័យពីព្រំផ្សំហ្វូម
អតិថិជនម្នាក់បានសាកល្បង [ព្រំផ្សំតូច](../../../../2-Working-With-Data/08-data-preparation/index.html) ដើម្បីប្រមូលទិន្នន័យមូលដ្ឋានអំពីអតិថិជនរបស់ពួកគេ។ ពួកគេបាននាំយកការស្រាវជ្រាវរបស់ពួកគេទៅរកអ្នកដើម្បីផ្ទៀងផ្ទាត់ទិន្នន័យដែលពួកគេចងកបាន។ អ្នកអាចបើកទំព័រ `index.html` នៅក្នុងកម្មវិធីរុករកដើម្បីមើលព្រំផ្សំ។
អ្នកត្រូវបានផ្តល់ជូននូវ [សំណុំទិន្នន័យ CSV](../../../../data/form.csv) ដែលមានកំណត់ត្រារបស់ព្រំផ្សំ និងមានការតំណាងភាពមួយចំនួនប្រើ។ អតិថិជនបានបញ្ជាក់ថាការតំណាងភាពខ្លះមើលទៅមិនត្រឹមត្រូវទេ ប៉ុន្តែពួកគេមិនប្រាកដពីវិធីแก้បញ្ហាក្នុងករណីនេះឡើយ។ អ្នកអាចស្វែងយល់បន្ថែមនៅក្នុង [សៀវភៅបង្គោល](assignment.ipynb)។
## សេចក្ដីណែនាំ
ប្រើបច្ចេកទេសក្នុងមេរៀននេះដើម្បីផ្តល់អនុសាសន៍អំពីព្រំផ្សំឲ្យវាប្រមូលព័ត៌មានបានត្រឹមត្រូវ និងមានភាពស្នូលនូវភាពទៀងទាត់។
## រូបប្បទាន
ល្អឥតខ្ចោះ | ត្រឹមត្រូវ | ត្រូវការកែលម្អ
--- | --- | -- |
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការបដិសេធ**៖
ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលដែលយើងខិតខំសម្រាប់ភាពត្រឹមត្រូវ សូមយល់ដឹងថាការបកប្រែដោយស្វ័យប្រវត្តិក្នុងខ្លះករណីអាចមានកំហុស ឬភាពមិនត្រឹមត្រូវ។ ឯកសារដើមក្នុងភាសាមាតុភូមិគួរត្រូវបានចាត់ទុកជាចំណុចយោងដែលមានអំណាច។ សម្រាប់ព័ត៌មានសំខាន់ៗ សូមផ្ដល់អនុសាសន៍ឱ្យធ្វើការបកប្រែដោយអ្នកជំនាញមនុស្សវិជ្ជាជីវៈ។ យើងមិនមានភាពទទួលខុសត្រូវចំពោះការយល់ច្រឡំឬការបកប្រែខុសឆ្គងណាមួយដែលមានមកពីការប្រើប្រាស់ការបកប្រែនេះទេ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,23 @@
# ការធ្វើការ​ជាមួយទិន្នន័យ
![data love](../../../translated_images/km/data-love.a22ef29e6742c852.webp)
> រូបថតដោយ <a href="https://unsplash.com/@swimstaralex?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Alexander Sinn</a> នៅលើ <a href="https://unsplash.com/s/photos/data?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Unsplash</a>
នៅក្នុងមេរៀនទាំងនេះ អ្នកនឹងរៀនពីវិធីខ្លះៗដែលអាចគ្រប់គ្រង បំប្លែង និងប្រើទិន្នន័យក្នុងកម្មវិធីបាន។ អ្នកនឹងរៀនអំពីមូលដ្ឋានទិន្នន័យប្រភេទ​ខ្សែបញ្ជី និងមូលដ្ឋានទិន្នន័យមិនខ្សែបញ្ជី និងរបៀបដែលទិន្នន័យអាចធ្វើការផ្ទុកនៅក្នុងពួកវា។ អ្នកនឹងរៀនគ្រឹះមូលដ្ឋាននៃការធ្វើការជាមួយ Python សម្រាប់គ្រប់គ្រងទិន្នន័យ ហើយអ្នកនឹងរកឃើញពីវិធីជាច្រើនដែលអ្នកអាចធ្វើការជាមួយ Python ដើម្បីគ្រប់គ្រង និងស្វែងរកទិន្នន័យបាន។
### ប្រធានបទ
1. [មូលដ្ឋានទិន្នន័យប្រភេទខ្សែបញ្ជី](05-relational-databases/README.md)
2. [មូលដ្ឋានទិន្នន័យមិនខ្សែបញ្ជី](06-non-relational/README.md)
3. [ការធ្វើការជាមួយ Python](07-python/README.md)
4. [ការរៀបចំទិន្នន័យ](08-data-preparation/README.md)
### ឥណទាន
មេរៀនទាំងនេះត្រូវបានសរសេរជាមួយ❤️ដោយ [Christopher Harrison](https://twitter.com/geektrainer), [Dmitry Soshnikov](https://twitter.com/shwars) និង [Jasmine Greenaway](https://twitter.com/paladique)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការបដិសេធ**៖
ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលដែលយើងខិតខំប្រឹងប្រែងឱ្យបានភាពត្រឹមត្រូវ សូមយល់ដឹងថាបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុស ឬការមិនត្រឹមត្រូវ។ ឯកសារដើមក្នុងភាសាដើមគួរត្រូវបានទស្សនាថាជា​ប្រភព​ដែល​មាន​សិង្ហារឹកភាព។ សម្រាប់ព័ត៌មានសំខាន់ៗ គួរត្រូវបានបកប្រែដោយមនុស្សអ្នកជំនាញជំនួស។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកន្រ្តប់ខុសដែលកើតឡើងពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,217 @@
# ការមើលឃើញចំនួន
|![ Sketchnote ដោយ [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/09-Visualizing-Quantities.png)|
|:---:|
| ការមើលឃើញចំនួន - _Sketchnote ដោយ [@nitya](https://twitter.com/nitya)_ |
ក្នុងមេរៀននេះ អ្នកនឹងសិក្សាថាតើធ្វើដូចម្តេចដើម្បីប្រើប្រាស់មួយក្នុងន័យបណ្ណាល័យ Python ជាច្រើនដែលមានស្រាប់ ដើម្បីរៀនពីរបៀបបង្កើតការមើលឃើញដែលគួរឲ្យចាប់អារម្មណ៍ជុំវិញគំនិតនៃចំនួន។ ដោយប្រើតំណាងទិន្នន័យបានស្អាតពាក់ព័ន្ធនឹងសត្វបក្សីនៅ Minnesota អ្នកអាចស្វែងរកគំនិតច្រើនដែលគួរឲ្យចាប់អារម្មណ៍អំពីសត្វព្រៃក្នុងតំបន់។
## [សំនួរសាកល្បងមុនសម្ភាសន៍](https://ff-quizzes.netlify.app/en/ds/quiz/16)
## ពិនិត្យមើលទំហំនៃស្លាបជាមួយ Matplotlib
បណ្ណាល័យល្អមួយសម្រាប់បង្កើតក្រาฟសាមញ្ញ និងស្មុគស្មាញជាច្រើនគឺ [Matplotlib](https://matplotlib.org/stable/index.html)។ ជារួម វិធីសាស្ត្រនៃការគូរទិន្នន័យដោយប្រើបណ្ណាល័យទាំងនេះរួមមាន ការរកឃើញផ្នែកនៃអង់ត្រូសម្រាប់ដាតាដែលអ្នកចង់ផ្តោត, ការប្រែក្លាយទិន្នន័យដែលចាំបាច់, ការផ្ដល់តម្លៃ axis x និង y, ការជ្រើសរើសប្រភេទក្រាផត្រីដែលត្រូវបង្ហាញ ហើយបង្ហាញប្រាប់។ Matplotlib ផ្តល់ជូននូវការមើលឃើញជាច្រើនបំផុត ប៉ុន្តសម្រាប់មេរៀននេះបន្ទាប់មក តោះផ្ដោតទៅលើរូបមន្តដែលសមស្របសម្រាប់ការមើលឃើញចំនួន៖ គំនូរជួរឈរ រូប Scatter និងរូបបារ។
> ✅ ប្រើក្រាផត្រីល្អបំផុតសម្រាប់រចនាសម្ព័ន្ធទិន្នន័យរបស់អ្នក និងរឿងដែលអ្នកចង់ប្រាប់។
> - ដើម្បីវិភាគនិន្នាការជាមួួយបន្ទាត់ពេលវេលា: ជួរឈរ
> - ដើម្បីប្រៀបធៀបទិន្នន័យ: បារ, ជួរឈរ, ខ្នាតមូល, រូប scatterplot
> - ដើម្បីបង្ហាញពីរបៀបដែលផ្នែកផ្សេងទាក់ទងនឹងសរុប: ខ្នាតមូល
> - ដើម្បីបង្ហាញការចែកចាយនៃទិន្នន័យ: រូប scatterplot, បារ
> - ដើម្បីបង្ហាញនិន្នាការ: ជួរឈរ, ជួរឈរ
> - ដើម្បីបង្ហាញទំនាក់ទំនងនៃតម្លៃ: ជួរឈរ, រូប scatterplot, រ៉ុងប៊ុល
បើអ្នកមានតារាងទិន្នន័យ ហើយត្រូវការរកមើលថាតើមានប៉ុន្មាននៅក្នុងធាតុដែលបានផ្ដល់ អ្នកនឹងត្រូវចាប់ផ្តើមដោយការត្រួតពិនិត្យតម្លៃរបស់វា។
✅ មាន 'cheat sheets' ល្អមួយសម្រាប់ Matplotlib [នៅទីនេះ](https://matplotlib.org/cheatsheets/cheatsheets.pdf)។
## បង្កើតរូបជួរឈរអំពីតម្លៃទំហំនៃស្លាបសត្វបក្សី
បើកឯកសារ `notebook.ipynb` នៅទីតាំងដើមនៃថតមេរៀននេះ ហើយបន្ថែមកោសិកាចាស់មួយ។
> ទំនាក់ទំនង៖ ទិន្នន័យកាន់ទុកនៅដើម repo នេះក្នុងថត `/data`
```python
import pandas as pd
import matplotlib.pyplot as plt
birds = pd.read_csv('../../data/birds.csv')
birds.head()
```
ទិន្នន័យនេះជាចម្រុះនៃអក្សរ និងលេខ៖
| | Name | ScientificName | Category | Order | Family | Genus | ConservationStatus | MinLength | MaxLength | MinBodyMass | MaxBodyMass | MinWingspan | MaxWingspan |
| ---: | :--------------------------- | :--------------------- | :-------------------- | :----------- | :------- | :---------- | :----------------- | --------: | --------: | ----------: | ----------: | ----------: | ----------: |
| 0 | Black-bellied whistling-duck | Dendrocygna autumnalis | Ducks/Geese/Waterfowl | Anseriformes | Anatidae | Dendrocygna | LC | 47 | 56 | 652 | 1020 | 76 | 94 |
| 1 | Fulvous whistling-duck | Dendrocygna bicolor | Ducks/Geese/Waterfowl | Anseriformes | Anatidae | Dendrocygna | LC | 45 | 53 | 712 | 1050 | 85 | 93 |
| 2 | Snow goose | Anser caerulescens | Ducks/Geese/Waterfowl | Anseriformes | Anatidae | Anser | LC | 64 | 79 | 2050 | 4050 | 135 | 165 |
| 3 | Ross's goose | Anser rossii | Ducks/Geese/Waterfowl | Anseriformes | Anatidae | Anser | LC | 57.3 | 64 | 1066 | 1567 | 113 | 116 |
| 4 | Greater white-fronted goose | Anser albifrons | Ducks/Geese/Waterfowl | Anseriformes | Anatidae | Anser | LC | 64 | 81 | 1930 | 3310 | 130 | 165 |
យើងចាប់ផ្ដើមដោយគូរទិន្នន័យចំនួនមួយចំនួនដោយប្រើរូបជួរឈរមូលដ្ឋានមួយ។ សន្និដ្ឋានថាអ្នកចង់បានទេសភាពទំហំស្លាបអតិបរមារបស់បក្សីទាំងនេះ។
```python
wingspan = birds['MaxWingspan']
wingspan.plot()
```
![Max Wingspan](../../../../translated_images/km/max-wingspan-02.e79fd847b2640b89.webp)
តើអ្នកសង្កេតអ្វីបានខ្លះភ្លាមៗ? មានរាងមួយពិតជា outlier - នោះគឺទំហំស្លាបដ៏ធំមួយ! ទំហំនៃស្លាប 2300 សង់ទីម៉ែត្រ ស្មើនឹង 23 ម៉ែត្រ - តើមានសត្វ Pterodactyls រត់លេង នៅ Minnesota ទេ? តោះស៊ើបអង្កេត។
បើទោះបីអ្នកអាចធ្វើការតម្រៀបឆាប់ក្នុង Excel ដើម្បីស្វែងរកអ្នកនៅក្រៅស្តង់ដារ (outliers) ដែលប្រហែលជាជាកំហុស អ្នកបន្តធ្វើដំណើរការមើលឃើញដោយធ្វើការងារពីខាងក្នុងរូប។
បន្ថែមស្លាកចុះបញ្ជាក់ទៅលើរង-x ដើម្បីបង្ហាញថាសត្វបក្សីណាខ្លះដែលត្រូវបានពិចារណា៖
```
plt.title('Max Wingspan in Centimeters')
plt.ylabel('Wingspan (CM)')
plt.xlabel('Birds')
plt.xticks(rotation=45)
x = birds['Name']
y = birds['MaxWingspan']
plt.plot(x, y)
plt.show()
```
![wingspan with labels](../../../../translated_images/km/max-wingspan-labels-02.aa90e826ca49a9d1.webp)
ទោះបីមានការបង្វិលស្លាកបានកំណត់ទៅ ៤៥ កុំផ្នែក ក៏មានច្រើនពេកមិនអាចអានបាន។ តោះសាកល្បងយុទ្ធសាស្ត្រផ្សេងទៀត៖ ស្លាកគ្រាប់ថ្មីប៉ុណ្ណោះ ហើយកំណត់ស្លាកនៅក្នុងតារាង។ អ្នកអាចប្រើរូប scatter ដើម្បីធ្វើឲ្យមានកន្លែងសម្រាប់ស្លាកច្រើនជាងមុន៖
```python
plt.title('Max Wingspan in Centimeters')
plt.ylabel('Wingspan (CM)')
plt.tick_params(axis='both',which='both',labelbottom=False,bottom=False)
for i in range(len(birds)):
x = birds['Name'][i]
y = birds['MaxWingspan'][i]
plt.plot(x, y, 'bo')
if birds['MaxWingspan'][i] > 500:
plt.text(x, y * (1 - 0.05), birds['Name'][i], fontsize=12)
plt.show()
```
តើមានអ្វីកើតឡើងនៅទីនេះ? អ្នកបានប្រើ `tick_params` ដើម្បីលាក់ស្លាកខាងក្រោម ហើយបន្ទាប់មកបានបង្កើតរង្វិលលើសំណុំទិន្នន័យសត្វបក្សីរបស់អ្នក។ តាងរូបជាមួយចំណុចតូចពណ៌ខៀវ ដោយប្រើ `bo` អ្នកបានពិនិត្យមើលបក្សីណាមួយដែលមានទំហំស្លាបអតិបរមាច្រើនជាង ៥០០ ហើយបង្ហាញស្លាករបស់ពួកវាចាស់ជាប់ជាមួយចំណុចបើបើដូច្នេះ។ អ្នកបានផ្លាស់ទីស្លាកបន្តិចនៅលើអ័ក្ស y (`y * (1 - 0.05)`) ហើយប្រើឈ្មោះសត្វបក្សីជាស្លាក។
តើអ្នកបានរកឃើញអ្វី?
![outliers](../../../../translated_images/km/labeled-wingspan-02.6110e2d2401cd523.webp)
## ស្កេនទិន្នន័យរបស់អ្នក
ទាំង Bald Eagle និង Prairie Falcon ទោះបីជាមិនមែនបក្សីតូចទេក៏ដោយ ប្រហែលជា​បានដាក់ស្លាកខុស ដោយបញ្ចូល `0` ផ្សេងទៀតទៅក្នុងទំហំស្លាបអតិបរមា។ មិនសមរម្យទេដែលអ្នកជួប Bald Eagle ដែលមានទំហំស្លាប ២៥ ម៉ែត្រ បើបើដូច្នេះ សូមប្រាប់ឲ្យយើងដឹង! តោះបង្កើត dataframe ថ្មីមួយដោយគ្មានអ្នកមានចំណុចក្រៅស្តង់ដារទាំងពីរនេះ៖
```python
plt.title('Max Wingspan in Centimeters')
plt.ylabel('Wingspan (CM)')
plt.xlabel('Birds')
plt.tick_params(axis='both',which='both',labelbottom=False,bottom=False)
for i in range(len(birds)):
x = birds['Name'][i]
y = birds['MaxWingspan'][i]
if birds['Name'][i] not in ['Bald eagle', 'Prairie falcon']:
plt.plot(x, y, 'bo')
plt.show()
```
ដោយការសសៃចេញចំណុចក្រៅស្តង់ដា ទិន្នន័យរបស់អ្នកឥឡូវនេះមានសមាសភាពល្អ និងងាយស្រួលយល់។
![scatterplot of wingspans](../../../../translated_images/km/scatterplot-wingspan-02.1c33790094ce36a7.webp)
ឥឡូវនេះយើងមាន dataset ដែលបានជ្រៅស្អាតយ៉ាងហោចណាស់ក្នុងវិស័យទំហំស្លាប ចូររកឃើញព័ត៌មានបន្ថែមអំពីសត្វបក្សីទាំងនេះ។
ខណៈដែលរូបជួរឈរ និង scatterplot អាចបង្ហាញព័ត៌មានអំពីតម្លៃទិន្នន័យ និងការចែកចាយរបស់វា ប៉ុន្តា យើងចង់គិតអំពីតម្លៃដែលមាននៅក្នុង dataset នេះ។ អ្នកអាចបង្កើតការមើលឃើញដើម្បីឆ្លើយសំនួរបន្ថែមអំពីចំនួន៖
> តើមានប៉ុន្មានប្រភេទសត្វបក្សី និងតើពួកវាមានចំនួនប៉ុន្មាន?
> តើមានប៉ុន្មានជាបក្សីដែលស្រុតស្រយាល បញ្ហាទឹកជំនន់ កម្រ តន្ត្រី ឬធម្មតា?
> តើមានប៉ុន្មាននៅក្នុងចំណាត់ថ្នាក់ជិនិងការបញ្ជីលំដាប់តាមផែនការលីណេអូ?
## ស្រាវជ្រាវរូបបារ
រូបបារ មានប្រយោជន៍នៅពេលអ្នកត្រូវបង្ហាញក្រុមនៃទិន្នន័យ។ តោះស្រាវជ្រាវប្រភេទសត្វបក្សីដែលមាននៅក្នុង dataset ដើម្បីមើលថាតើប្រភេទណាមានច្រើនបំផុត។
នៅក្នុងឯកសារ notebook បង្កើតរូបបារសាមញ្ញមួយ។
✅ សម្គាល់ អ្នកអាចស្កីនចេញពីបក្សីចំណុចក្រោយណាមួយដែលបានកំណត់ពីមុន កែសម្រួលកំហុសនៅចំណុចទំហំស្លាបរបស់ពួកគេ ឬទុកពួកគេនៅក្នុងការប្រើប្រាស់ប្រឡងទាំងនេះដែលមិនគិតពីតម្លៃទំហំស្លាប។
បើអ្នកចង់បង្កើតរូបបារ អ្នកអាចជ្រើសរើសទិន្នន័យដែលចង់ផ្តោត។ រូបបារអាចបង្កើតពីទិន្នន័យដើម៖
```python
birds.plot(x='Category',
kind='bar',
stacked=True,
title='Birds of Minnesota')
```
![full data as a bar chart](../../../../translated_images/km/full-data-bar-02.aaa3fda71c63ed56.webp)
រូបបារនេះ ពិតមែន មិនអាចអានបាន ព្រោះមានទិន្នន័យមិនសម្រាប់ក្រុមច្រើនពេក។ អ្នកត្រូវលៃតម្រូវតែជ្រើសទិន្នន័យដែលចង់គូរតែប៉ុណ្ណោះ។ តោះមកមើលប្រវែងបក្សីផ្អែកលើប្រភេទ។
ស្កេនទិន្នន័យរបស់អ្នក ដើម្បីរួមបញ្ចូលតែប្រភេទសត្វបក្សី។
✅ សូមចំណាំថា អ្នកប្រើ Pandas ដើម្បីគ្រប់គ្រងទិន្នន័យ ហើយបន្ទាប់មកអោយ Matplotlib សម្រាប់បង្កើតរូប។
ដោយសារតែមានប្រភេទជាច្រើន អ្នកអាចបង្ហាញរូបនេះជាតំណើងឈររង្វ្រឹង ហើយកែទំងន់របស់វាដើម្បីគ្រប់គ្រងទិន្នន័យទាំងមូល៖
```python
category_count = birds.value_counts(birds['Category'].values, sort=True)
plt.rcParams['figure.figsize'] = [6, 12]
category_count.plot.barh()
```
![category and length](../../../../translated_images/km/category-counts-02.0b9a0a4de42275ae.webp)
រូបបារនេះបង្ហាញទស្សនៈល្អនៃចំនួនបក្សីនៅក្នុងប្រភេទនីមួយៗ។ ក្នុងមួយទស្សន៏ជូនភ្នែក អ្នកឃើញចំនួនសត្វបក្សីច្រើនបំផុតនៅតំបន់នេះស្ថិតនៅក្នុងប្រភេទ Ducks/Geese/Waterfowl។ Minnesota ត្រូវបានគេស្គាល់ថាជា 'ដីជ្រលងទឹក ១០,០០០' ដូច្នេះវាគ្មានអ្វីអាថ៌កំបាំងឡើយ!
✅ សាកល្បងគណនាផ្សេងៗលើ dataset នេះ។ តើមានអ្វីជាមិនចំអក្សរអ្នកទេ?
## ប្រៀបធៀបទិន្នន័យ
អ្នកអាចសាកល្បងប្រៀបធៀបទិន្នន័យក្រុមផ្សេងៗដោយបង្កើតអក្សផ្ទាល់ខ្លួនថ្មី។ សាកល្បងប្រៀបធៀបទិន្នន័យ MaxLength នៃសត្វផ្អែកលើប្រភេទរបស់វា៖
```python
maxlength = birds['MaxLength']
plt.barh(y=birds['Category'], width=maxlength)
plt.rcParams['figure.figsize'] = [6, 12]
plt.show()
```
![comparing data](../../../../translated_images/km/category-length-02.7304bf519375c980.webp)
គ្មានអ្វីដែលអស្ចារ្យនៅទីនេះទេ៖ សត្វ hummingbirds មាន MaxLength តិចជាង Pelicans ឬ Geese។ វាល្អប្រាកដនៅពេលដែលទិន្នន័យមានហេតុផលច្បាស់លាស់!
អ្នកអាចបង្កើតការមើលឃើញគួរឲ្យចាប់អារម្មណ៍ជាងនៅរូបបារ ដោយការលាយបញ្ចូលទិន្នន័យ។ តោះសំឡេងលើ Minimum និង Maximum Length ក្នុងប្រភេទសត្វឲ្យឃើញ៖
```python
minLength = birds['MinLength']
maxLength = birds['MaxLength']
category = birds['Category']
plt.barh(category, maxLength)
plt.barh(category, minLength)
plt.show()
```
នៅក្នុងរូបនេះ អ្នកអាចឃើញជួរតម្លៃក្នុងប្រភេទសត្វនីមួយនៃ Minimum Length និង Maximum Length។ អ្នកអាចនិយាយយ៉ាងស្ងប់ស្ងាត់ថា ដោយផ្អែកលើទិន្នន័យនេះ បក្សីធំនានឹងមានជួរត្រង់ប្រវែងធំបំផុត។ វាគួរឲ្យចាប់អារម្មណ៍ណាស់!
![superimposed values](../../../../translated_images/km/superimposed-02.f03058536baeb2ed.webp)
## 🚀 បញ្ហា
Dataset សត្វបក្សីនេះផ្តល់ព័ត៌មានច្រើនអំពីប្រភេទសត្វបក្សីផ្សេងៗនៅក្នុងបរិស្ថានជាក់លាក់មួយ។ ស្វែងរកនៅលើអ៊ីនធឺណិត បើអ្នកអាចរកឃើញ dataset ស្វាគមន៍ផ្សេងទៀតដែលទាក់ទងនឹងសត្វបក្សី។ ចូរប្រឡងបង្កើតក្រាផត្រីនិងក្រាហ្វនៅជុំវិញបក្សីទាំងនេះ ដើម្បីស្វែងរកបច្ចេកវិទ្យាដែលអ្នកមិនបានដឹងមុន។
## [សំនួរផ្នែកក្រោយសម្ភាសន៍](https://ff-quizzes.netlify.app/en/ds/quiz/17)
## ទិដ្ឋភាពទូទៅ និងសិក្សាផ្ទាល់ខ្លួន
មេរៀនដំបូងនេះបានផ្តល់ព័ត៌មានពីរបៀបប្រើ Matplotlib ដើម្បីមើលឃើញចំនួន ខណៈអធិប្បាយពីវិធីផ្សេងទៀតសម្រាប់ធ្វើការជាមួយ dataset ដើម្បីមើលឃើញ។ [Plotly](https://github.com/plotly/plotly.py) គឺជារបៀបមួយដែលយើងមិនលើកឡើងក្នុងមេរៀនទាំងនេះ ដូច្នេះសូមមើលវាថាតើវាផ្តល់អ្វីខ្លះ។
## សំណើការងារ
[ជួរ, Scatter និង បារ](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការបញ្ចាក់**៖
ឯកសារនេះត្រូវបានបកប្រែក្នុងការប្រើប្រាស់សេវាកម្មបកប្រែកាន់តែប្រសើរដោយAI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលដែលយើងខំប្រឹងរកការពិតប្រាកដ សូមចាប់អារម្មណ៍ថាការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុស ឬភាពមិនច្បាស់លាស់។ ឯកសារដើមក្នុងភាសា​ដើមគួรถูกមើលជាមូលដ្ឋានដែលមានអំណាច។ សម្រាប់ព័ត៌មានសំខាន់ៗ គួរតែមានការបកប្រែដោយមនុស្សជំនាញវិជ្ជាជីវៈ។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកស្រាយខុសពីការប្រើប្រាស់ការបកប្រែនេះទេ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,18 @@
# បន្ទាត់, ការបែកចែក និងក្បាល
## សេចក្ដីណែនាំ
ក្នុងមេរៀននេះ អ្នកបានធ្វើការជាមួយតារាងបន្ទាត់ ការបែកចែក និងតារាងក្បាល ដើម្បីបង្ហាញការពិតដែលគួរឱ្យចាប់អារម្មណ៍អំពីឯកសារទិន្នន័យនេះ។ ក្នុងភារកិច្ចនេះ សូមវែកវែងចូលទៅក្នុងឯកសារទិន្នន័យ ដើម្បីរកឃើញការពិតអំពីប្រភេទបក្សីមួយដែលបានផ្តល់។ ឧទាហរណ៍ បង្កើតកំណត់ចំណាំ សម្រាប់បង្ហាញទិន្នន័យគួរឱ្យចាប់អារម្មណ៍ទាំងអស់ដែលអ្នកអាចរកឃើញអំពីបក្សី Snow Geese។ ប្រើប្លង់ទាំងបីដែលបានលើកឡើងខាងលើ ដើម្បីរៀបរាប់រឿងក្នុងកំណត់ចំណាំរបស់អ្នក។
## គោលការណ៍វាយតម្លៃ
ល្អឥតខ្ចោះ | គ្រប់គ្រាន់ | ត្រូវការកែលម្អ
--- | --- | -- |
មានកំណត់ចំណាំមួយដែលមានអត្ថាធិប្បាយល្អ រឿងរ៉ាវរឹងមាំ និងក្រាហ្វទាក់ទាញ | កំណត់ចំណាំខ្វះធាតុមួយពីខាងលើ | កំណត់ចំណាំខ្វះធាតុពីរពីខាងលើ
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការសេចក្ដីប្រកាស**៖
ឯកសារនេះបានបកប្រែដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលយើងខិតខំរកភាពត្រឹមត្រូវ សូមយល់ព្រមថាការបកប្រែដោយស្វ័យប្រវត្តិនៅតែអាចមានកំហុសឬការមិនត្រឹមត្រូវបាន។ ឯកសារដើមជាភាសាដំបូងគួរត្រូវបានទទួលស្គាល់ថាជាអ្នកផ្គត់ផ្គង់ព័ត៌មានដែលពេញលេញ។ សម្រាប់ព័ត៌មានសំខាន់ៗ ការបកប្រែដោយអ្នកវិជ្ជាជីវៈមានក្រុមហ៊ុនបញ្ជាក់គឺត្រូវបានណែនាំ។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកប្រែខុសរាងណាមួយដែលកើតឡើងពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,42 @@
{
"cells": [
{
"cell_type": "markdown",
"source": [
"# មករៀនអំពីត្រចៀកបក្សីกันเถอะ\n"
],
"metadata": {}
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**ការបដិសេធ**៖ \nឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈដែលយើងខិតខំព្យាយាមសម្រាប់ភាពត្រឹមត្រូវ សូមយកចិត្តទុកដាក់ថាការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុស ឬភាពមិនត្រឹមត្រូវបានផ្តល់។ ឯកសារដើមក្នុងភាសាបណ្តើរដើមគួរត្រូវបានទទួលស្គាល់ជាព្រឹត្តិការណ៍ផ្លូវការបំផុត។ សម្រាប់ព័ត៌មានសំខាន់ៗ សូមណែនាំឱ្យប្រើការបកប្រែដោយមនុស្សជំនាញវិជ្ជាជីវៈ។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកប្រែដែលខុសពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
]
}
],
"metadata": {
"orig_nbformat": 4,
"language_info": {
"name": "python",
"version": "3.7.0",
"mimetype": "text/x-python",
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"pygments_lexer": "ipython3",
"nbconvert_exporter": "python",
"file_extension": ".py"
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3.7.0 64-bit"
},
"interpreter": {
"hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d"
}
},
"nbformat": 4,
"nbformat_minor": 2
}

File diff suppressed because one or more lines are too long

@ -0,0 +1,211 @@
# ការបង្ហាញចែកចាយទិន្នន័យ
|![ ស្កេតឈូកដោយ [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/10-Visualizing-Distributions.png)|
|:---:|
| ការបង្ហាញចែកចាយទិន្នន័យ - _ស្កេតឈូកដោយ [@nitya](https://twitter.com/nitya)_ |
ក្នុងមេរៀនមុន អ្នកបានរៀនពីព័ត៌មានចំណាប់អារម្មណ៍ខ្លះខាងលើសំណុំទិន្នន័យដែលពាក់ព័ន្ធនឹងបក្សីនៅរដ្ឋ Minnesota។ អ្នកបានរកឃើញទិន្នន័យដែលមានកំហុសដោយការបង្ហាញ outliers និងបានមើលភាគខុសគ្នារវាងប្រភេទបក្សីតាមប្រវែងអតិបរមារបស់ពួកវា។
## [សំណួរលំហាត់មុនវគ្គសិក្សា](https://ff-quizzes.netlify.app/en/ds/quiz/18)
## ស្រាវជ្រាវសំណុំទិន្នន័យបក្សី
វិធីមួយផ្សេងទៀតក្នុងការចូលទៅក្នុងទិន្នន័យគឺដោយមើលការចែកចាយរបស់វា ឬរបៀបដែលទិន្នន័យត្រូវបានរៀបចំតាមអ័ក្សមួយ។ ប្រហែលជាអ្នកចង់រៀនអំពីការចែកចាយទូទៅ សម្រាប់សំណុំទិន្នន័យនេះ អំពីកម្រិតអតិបរមានៃបណ្តោយ​ស្លាប ឬ massas សារពាង្គកាយអតិបរមាសម្រាប់បក្សីនៅ Minnesota។
យើងត្រូវស្វែងយល់ពីព័ត៌មានខ្លះក៏អំពីការចែកចាយទិន្នន័យក្នុងសំណុំទិន្នន័យនេះ។ នៅក្នុងឯកសារ _notebook.ipynb_ នៅដើមថតមេរៀននេះ សូមនាំចូល Pandas, Matplotlib និងទិន្នន័យរបស់អ្នក៖
```python
import pandas as pd
import matplotlib.pyplot as plt
birds = pd.read_csv('../../data/birds.csv')
birds.head()
```
| | Name | ScientificName | Category | Order | Family | Genus | ConservationStatus | MinLength | MaxLength | MinBodyMass | MaxBodyMass | MinWingspan | MaxWingspan |
| ---: | :--------------------------- | :--------------------- | :-------------------- | :----------- | :------- | :---------- | :----------------- | --------: | --------: | ----------: | ----------: | ----------: | ----------: |
| 0 | Black-bellied whistling-duck | Dendrocygna autumnalis | Ducks/Geese/Waterfowl | Anseriformes | Anatidae | Dendrocygna | LC | 47 | 56 | 652 | 1020 | 76 | 94 |
| 1 | Fulvous whistling-duck | Dendrocygna bicolor | Ducks/Geese/Waterfowl | Anseriformes | Anatidae | Dendrocygna | LC | 45 | 53 | 712 | 1050 | 85 | 93 |
| 2 | Snow goose | Anser caerulescens | Ducks/Geese/Waterfowl | Anseriformes | Anatidae | Anser | LC | 64 | 79 | 2050 | 4050 | 135 | 165 |
| 3 | Ross's goose | Anser rossii | Ducks/Geese/Waterfowl | Anseriformes | Anatidae | Anser | LC | 57.3 | 64 | 1066 | 1567 | 113 | 116 |
| 4 | Greater white-fronted goose | Anser albifrons | Ducks/Geese/Waterfowl | Anseriformes | Anatidae | Anser | LC | 64 | 81 | 1930 | 3310 | 130 | 165 |
ដោយទូទៅ អ្នកអាចមើលឲ្យឆាប់រហ័សពីរបៀបដែលទិន្នន័យត្រូវបានចែកចាយ ដោយប្រើរចនាប័ទ្ម scatter plot ដូចដែលយើងបានធ្វើក្នុងមេរៀនមុន៖
```python
birds.plot(kind='scatter',x='MaxLength',y='Order',figsize=(12,8))
plt.title('Max Length per Order')
plt.ylabel('Order')
plt.xlabel('Max Length')
plt.show()
```
![max length per order](../../../../translated_images/km/scatter-wb.9d98b0ed7f0388af.webp)
នេះផ្តល់ឱ្យនូវទិដ្ឋភាពទូទៅអំពីការចែកចាយរេសមាយប្រវែងសារពាង្គកាយក្នុងមួយបក្សី តាមក្រុម Order ប៉ុន្តែមិនមែនជារបៀបល្អបំផុតក្នុងការបង្ហាញការចែកចាយពិតប្រាកដទេ។ ការងារនេះភាគច្រើនត្រូវបានគ្រប់គ្រងដោយការបង្កើត Histogram។
## ការដំណើរការជាមួយ histograms
Matplotlib ផ្តល់នូវវិធីល្អណាស់ក្នុងការបង្ហាញការចែកចាយទិន្នន័យដោយប្រើ Histograms។ ប្រភេទតារាងនេះមានរូបរាងដូចជាតារាងបារ ដែលការចែកចាយអាចមើលឃើញតាមរបៀបឡើង និងចុះនៃបារ។ ដើម្បីបង្កើត histogram អ្នកត្រូវការទិន្នន័យជាតួចំនួន។ ដើម្បីបង្កើត Histogram អ្នកអាចគូសតារាងដោយកំណត់ប្រភេទជា 'hist' សម្រាប់ Histogram។ តារាងនេះបង្ហាញនូវការចែកចាយនៃ MaxBodyMass សម្រាប់ចន្លោះទិន្នន័យជាច្រើនរួមទាំងទាំងសំណុំទិន្នន័យ។ ដោយបែងចែកអារេនៃទិន្នន័យដែលបានផ្តល់ជាព្រំដែនតូចៗ វាអាចបង្ហាញការចែកចាយនៃតម្លៃទិន្នន័យ៖
```python
birds['MaxBodyMass'].plot(kind = 'hist', bins = 10, figsize = (12,12))
plt.show()
```
![distribution over the entire dataset](../../../../translated_images/km/dist1-wb.0d0cac82e2974fbb.webp)
ដូចដែលអ្នកអាចមើលឃើញ តួចំនួនភាគច្រើនពីបក្សីច្រើនជាង ៤០០ ត្រូវបានដាក់នៅក្នុងចន្លោះក្រោម ២០០០ សម្រាប់ Max Body Mass របស់ពួកវា។ សូមទទួលបានអំណាចកាន់តែច្រើនលើទិន្នន័យដោយការប្ដូរព៉ារ៉ាម៉ែត្រ `bins` ទៅចំនួនខ្ពស់ជាងនេះ ប្រហែល ៣០៖
```python
birds['MaxBodyMass'].plot(kind = 'hist', bins = 30, figsize = (12,12))
plt.show()
```
![distribution over the entire dataset with larger bins param](../../../../translated_images/km/dist2-wb.2c0a7a3499b2fbf5.webp)
តារាងនេះបង្ហាញការចែកចាយដោយមានលំអិតបន្ថែម។ តារាងមួយដែលមិនបត់ទៅឆ្វេងច្រើនអាចត្រូវបានបង្កើតដោយធ្វើឲ្យប្រាកដថាអ្នកជ្រើសតែទិន្នន័យត្រឹម​ក្នុងចន្លោះជាក់លាក់មួយ៖
ធ្វើតម្រងទិន្នន័យរបស់អ្នកឲ្យទទួលបានតែបក្សីដែល mass នៃរូបកាយមានតិចជាង ៦០ ហើយបង្ហាញ ៤០ `bins`
```python
filteredBirds = birds[(birds['MaxBodyMass'] > 1) & (birds['MaxBodyMass'] < 60)]
filteredBirds['MaxBodyMass'].plot(kind = 'hist',bins = 40,figsize = (12,12))
plt.show()
```
![filtered histogram](../../../../translated_images/km/dist3-wb.64b88db7f9780200.webp)
✅ សូមសាកល្បងតម្រង និងចំណុចទិន្នន័យផ្សេងទៀត។ ដើម្បីមើលការចែកចាយទិន្នន័យពេញលេញ សូមដកចេញតម្រង `['MaxBodyMass']` ដើម្បីបង្ហាញការចែកចាយដែលមានស្លាក។
histogram ផ្តល់នូវការពណ៌ និងស្លាកដែលស្អាតដើម្បីសាកល្បងផងដែរ៖
បង្កើត 2D histogram ដើម្បីប្រៀបធៀបទំនាក់ទំនងរវាងការចែកចាយពីរមុខ។ យើងប្រៀបធៀប `MaxBodyMass` ទល់នឹង `MaxLength`។ Matplotlib ផ្តល់វិធីក្នុងខ្លួនក្រោមដើម្បីបង្ហាញការប្រមូលផ្តុំដោយការប្រើពណ៌ភ្លឺ៖
```python
x = filteredBirds['MaxBodyMass']
y = filteredBirds['MaxLength']
fig, ax = plt.subplots(tight_layout=True)
hist = ax.hist2d(x, y)
```
​មានមួយចំនុចដែលទៅទំនាក់ទំនងគ្នាដែលរំពឹងទុកបានរវាងធាតុទាំងពីរនៅលើអ័ក្សដែលរំពឹងទុក មួយមានការប្រមូលផ្តុំខ្លាំងជាពិសេស៖
![2D plot](../../../../translated_images/km/2D-wb.ae22fdd33936507a.webp)
Histograms ដំណើរការល្អដោយលំនាំដើមសម្រាប់ទិន្នន័យជាតួចំនួន។ តើប្រសិនបើអ្នកចង់មើលការចែកចាយតាមព័ត៌មានអត្ថបទ?
## ស្រាវជ្រាវសំណុំទិន្នន័យសម្រាប់ការចែកចាយដោយប្រើទិន្នន័យអត្ថបទ
សំណុំទិន្នន័យនេះក៏មានព័ត៌មានល្អទាក់ទងនឹងប្រភេទបក្សី ហើយជាតិ (genus), ប្រភេទ (species), និងគ្រួសារ (family) រួមទាំងស្ថានភាពការការពារ។ យើងនឹងស្វែងយល់អំពីព័ត៌មានការការពារនេះ។ តើការចែកចាយបក្សីនៅតាមស្ថានភាពការការពាររបស់ពួកវាជាតម្លៃបែបណា?
> ✅ នៅក្នុងសំណុំទិន្នន័យនេះ មានអាក្រោមឡើងច្រើនដែលប្រើបញ្ជាក់ស្ថានភាពការការពារ។ អាក្រោមទាំងនេះមានមូលដ្ឋានមកពី [IUCN Red List Categories](https://www.iucnredlist.org/) ដែលជាស្ថាប័នដែលចំណាត់ថ្នាក់ស្ថានភាពប្រភេទសត្វ។
>
> - CR: Endangered ដ៏វឹកវរ
> - EN: Endangered
> - EX: និស្ស័យ
> - LC: បញ្ហាទាបបំផុត
> - NT: សេសសល់ជិតក្រៃលែង
> - VU: អាចផ្ទុកការប៉ះពាល់
តម្លៃទាំងនេះជាទ្រង់ទ្រាយអត្ថបទ ដូច្នេះអ្នកត្រូវធ្វើការបម្លែងដើម្បីបង្កើត histogram។ ដោយប្រើ dataframe filteredBirds បង្ហាញស្ថានភាពការពាររួមជាមួយនឹង Minimum Wingspan។ តើអ្នកមើលឃើញអ្វីខ្លះ?
```python
x1 = filteredBirds.loc[filteredBirds.ConservationStatus=='EX', 'MinWingspan']
x2 = filteredBirds.loc[filteredBirds.ConservationStatus=='CR', 'MinWingspan']
x3 = filteredBirds.loc[filteredBirds.ConservationStatus=='EN', 'MinWingspan']
x4 = filteredBirds.loc[filteredBirds.ConservationStatus=='NT', 'MinWingspan']
x5 = filteredBirds.loc[filteredBirds.ConservationStatus=='VU', 'MinWingspan']
x6 = filteredBirds.loc[filteredBirds.ConservationStatus=='LC', 'MinWingspan']
kwargs = dict(alpha=0.5, bins=20)
plt.hist(x1, **kwargs, color='red', label='Extinct')
plt.hist(x2, **kwargs, color='orange', label='Critically Endangered')
plt.hist(x3, **kwargs, color='yellow', label='Endangered')
plt.hist(x4, **kwargs, color='green', label='Near Threatened')
plt.hist(x5, **kwargs, color='blue', label='Vulnerable')
plt.hist(x6, **kwargs, color='gray', label='Least Concern')
plt.gca().set(title='Conservation Status', ylabel='Min Wingspan')
plt.legend();
```
![wingspan and conservation collation](../../../../translated_images/km/histogram-conservation-wb.3c40450eb072c14d.webp)
មើលទៅមិនមានទំនាក់ទំនងល្អណាមួយរវាងទំហំស្លាបអប្បបរមា និងស្ថានភាពការការពារទេ។ សាកល្បងធាតុផ្សេងទៀតនៅក្នុងសំណុំទិន្នន័យដោយប្រើវិធីនេះ។ អ្នកអាចសាកល្បងតម្រងផ្សេងៗបានផងដែរ។ តើអ្នកបានរកឃើញទំនាក់ទំនងមួយណា?
## រាងផ្ទុកដង់ស៊ីត្តី (Density plots)
អ្នកអាចបានសង្កេតឃើញថា histograms ដែលយើងបានមើលមកទល់បច្ចុប្បន្នគឺមានទ្រង់ទ្រាយ 'ងើកជំហាន' ហើយមិនរលោងជារមពោង។ ដើម្បីបង្ហាញតារាងផ្ទុកដង់ស៊ីត្តីដែលរលោង អ្នកអាចសាកល្បងរាងផ្ទុកដង់ស៊ីត្តី។
ដើម្បីធ្វើការដំណើរការជាមួយរាងផ្ទុកដង់ស៊ីត្តី សូមស្គាល់បណ្ណាល័យគូសតារាងថ្មីមួយ គឺ [Seaborn](https://seaborn.pydata.org/generated/seaborn.kdeplot.html)។
បន្ទាប់ពីនាំចូល Seaborn សូមសាកល្បងរាងផ្ទុកដង់ស៊ីត្តីមូលដ្ឋាន៖
```python
import seaborn as sns
import matplotlib.pyplot as plt
sns.kdeplot(filteredBirds['MinWingspan'])
plt.show()
```
![Density plot](../../../../translated_images/km/density1.8801043bd4af2567.webp)
អ្នកអាចមើលឃើញថាតារាងនេះមានការមានរបងទន់លើការបង្ហាញវាលស្លាបអប្បបរមា; វាត្រឡប់ទៅតារាងពីមុន ហើយគ្រាន់តែផ្ទាត់បន្តិចបន្តួច។ យោងតាមឯកសាររបស់ Seaborn, "ប្រៀបធៀបនឹង histogram, KDE អាចបង្កើតតារាងដែលមានចរាចរល្អ និងងាយក្នុងការបកស្រាយ ជាពិសេសនៅពេលគូសតារាងច្រើន។ ប៉ុន្តែវាអាចបង្កើតបំរែបំរួលបើការចែកចាយគោលដៅត្រូវបានដាក់ព្រំដែន ឬមិនរលោង។ ដូចជា histogram គុណភាពនៃការបង្ហាញក៏ពឹងផ្អែកលើការជ្រើសយកព៉ារ៉ាម៉ែត្រការស្ទង់ល្អ។" [ប្រភព](https://seaborn.pydata.org/generated/seaborn.kdeplot.html) ក្នុងន័យផ្សេង outliers តែងធ្វើឲ្យតារាងរបស់អ្នកប្រព្រឹត្ដខុស។
ប្រសិនបើអ្នកចង់ពិនិត្យមើលខ្សែកោង MaxBodyMass ដែលចំហាចេញនៅតារាងទីពីរដែលបានបង្កើត អ្នកអាចធ្វើឲ្យរលោងបានយ៉ាងល្អជាមួយវិធីនេះ៖
```python
sns.kdeplot(filteredBirds['MaxBodyMass'])
plt.show()
```
![smooth bodymass line](../../../../translated_images/km/density2.8e7647257060ff54.webp)
ប្រសិនបើអ្នកចង់បានខ្សែកោងរលោង ប៉ុន្តែមិនរលោងពេក អ្នកអាចកែប្រែព៉ារ៉ាម៉ែត្រ `bw_adjust`
```python
sns.kdeplot(filteredBirds['MaxBodyMass'], bw_adjust=.2)
plt.show()
```
![less smooth bodymass line](../../../../translated_images/km/density3.84ae27da82f31e6b.webp)
✅ អានអំពីព៉ារ៉ាម៉ែត្រដែលមានសម្រាប់តារាងនេះ ហើយសាកល្បងប្រើ!
ប្រភេទតារាងនេះផ្តល់នូវការបង្ហាញត្រចៀកស្រាលដែរ។ ជាមួយបណ្ដាលេខកូដមួយចំនួន អ្នកអាចបង្ហាញភាពងាយស្រួលក្នុងការមើលបរិមាណសារពាង្គកាយអតិបរមា នៃបក្សីតាមក្រុម Order:
```python
sns.kdeplot(
data=filteredBirds, x="MaxBodyMass", hue="Order",
fill=True, common_norm=False, palette="crest",
alpha=.5, linewidth=0,
)
```
![bodymass per order](../../../../translated_images/km/density4.e9d6c033f15c500f.webp)
អ្នកអាចផាត់មាំរាងដង់ស៊ីត្តីច្រើនផ្សំក្នុងតារាងតែមួយផងដែរ។ តេស្ត MaxLength និង MinLength នៃបក្សី ប្រៀបធៀបនឹងស្ថានភាពការការពាររបស់ពួកវា៖
```python
sns.kdeplot(data=filteredBirds, x="MinLength", y="MaxLength", hue="ConservationStatus")
```
![multiple densities, superimposed](../../../../translated_images/km/multi.56548caa9eae8d0f.webp)
ប្រហែលជាវាក៏មានតម្លៃក្នុងការស្រាវជ្រាវថាតើក្រុមបក្សី 'Vulnerable' ដែលតាមប្រវែងរបស់ពួកវាមានអត្ថន័យមានសារៈសំខាន់ ឬគ្មាន។
## 🚀 챌린지
Histograms គឺជាប្រភេទតារាងកាន់តែចំណុចខ្ពស់ជាង scatterplots បឋម, តារាង bar ឬ តារាងខ្សែ។ ស្វែងរកលើអ៊ីនធឺណេតដើម្បីស្វែងរកគំរូល្អៗនៃការប្រើ histograms។ តើវាត្រូវបានប្រើក្នុងរបៀបណា, វាបង្ហាញអ្វី, ហើយវាត្រូវបានប្រើនៅក្នុងវិស័យ ឬដែនកំណត់ស្រាវជ្រាវណាខ្លះ?
## [សំណួរលំហាត់បន្ទាប់វគ្គសិក្សា](https://ff-quizzes.netlify.app/en/ds/quiz/19)
## បទបង្ហាញ និងការសិក្សាឯករាជ្យ
ក្នុងមេរៀននេះ អ្នកបានប្រើ Matplotlib ហើយចាប់ផ្តើមការងារជាមួយ Seaborn ដើម្បីបង្ហាញតារាងកាន់តែចំណុចខ្ពស់។ សូមស្រាវជ្រាវអំពី `kdeplot` នៅក្នុង Seaborn ដែលជារាងកាយផ្ទុកប្រហាក់ប្រហែលបន្តបន្ទាប់មួយក្នុងវិមាត្រមួយ ឬច្រើន។ អានតាម [ឯកសារ](https://seaborn.pydata.org/generated/seaborn.kdeplot.html) ដើម្បីយល់ពីរបៀបដំណើរការ។
## កិច្ចការស្រីប
[អនុវត្តជំនាញរបស់អ្នក](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការបដិសេធ**៖
ឯកសារនេះបានបកប្រែដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ទោះយើងខំប្រឹងសម្រាប់ភាពត្រឹមត្រូវ ក៏សូមជ្រាបថាការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុសឬចុះខាត។ ឯកសារដើមជាភាសាមូលដ្ឋានគួរត្រូវបានពិចារណានូវលទ្ធផលដ៏មានអំណាច។ សម្រាប់ព័ត៌មានសំខាន់ៗ គួរតែប្រើការបកប្រែជាជំនាញដោយមនុស្សវិជ្ជាជីវៈ។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ថ្ងងឬការបកប្រែបែបមិនត្រឹមត្រូវណាមួយដែលកើតឡើងពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,18 @@
# អនុវត្តជំនាញរបស់អ្នក
## សេចក្ដីណែនាំ
រហូតមកទល់ពេលនេះ អ្នកបានធ្វើការជាមួយឃ្លាំងទិន្នន័យសត្វចៀម Minnesota ដើម្បីស្វែងរកព័ត៌មានអំពីបរិមាណសត្វចៀម និងចំនួនប្រជាជន។ អនុវត្តន៍ការដាក់ពាក្យនៃបច្ចេកទេសទាំងនេះដោយសាកល្បងជាមួយឃ្លាំងទិន្នន័យផ្សេងទៀត ប្រហែលជាដកមកពី [Kaggle](https://www.kaggle.com/)។ បង្កើតសៀវភៅកំណត់ត្រាដើម្បីប្រាប់រឿងអំពីឃ្លាំងទិន្នន័យនេះ ហើយប្រាកដថាប្រើតារាងហ៊ីស្តូក្រាមនៅពេលពិភាក្សាពីវា។
## គោលការណ៍វាយតម្លៃ
Exemplary | Adequate | Needs Improvement
--- | --- | -- |
សៀវភៅកំណត់ត្រនិងមានសេចក្ដីបកស្រាយអំពីឃ្លាំងទិន្នន័យនេះ រួមបញ្ចូលដើមកំណត់ និងប្រើតារាងហ៊ីស្តូក្រាមយ៉ាងតិច ៥ ដង ដើម្បីស្វែងរកពីការពិតអំពីទិន្នន័យ។ | សៀវភៅកំណត់ត្រនិងមានសេចក្ដីបកស្រាយមិនពេញលេញ ឬមានកំហុសមួយចំនួន។ | សៀវភៅកំណត់ត្រនិងគ្មានសេចក្ដីបកស្រាយ ហើយមានកំហុស។
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការបដិសេធ**៖
ឯកសារនេះត្រូវបានបកប្រែក្នុងវិធីសាស្រ្តដោយប្រើសេវាបកប្រែកម្មវិធី AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលដែលយើងខំប្រឹងប្រែងដើម្បីឱ្យបានភាពត្រឹមត្រូវ សូមយល់ដឹងថាការបកប្រែដោយស្វ័យប្រវត្តិនឹងអាចមានកំហុស ឬការមិនត្រឹមត្រូវ។ ឯកសារដើមក្នុងភាសាដើមគួរត្រូវបានទទួលស្គាល់ថាជាផ្នែកអំណាចផ្លូវការ។ សម្រាប់ព័ត៌មានសំខាន់ៗ យើងផ្តល់អនុសាសន៍ឱ្យប្រើការបកប្រែដោយមនុស្សជំនាញជាជម្រើសល្អបំផុត។ យើងមិនទទួលក្រ beyond ការទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកស្រាយខុសៗណាមួយដែលកើតមានពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,26 @@
{
"cells": [
{
"cell_type": "markdown",
"source": [
"# ការបែងចែកបក្សី\n"
],
"metadata": {}
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**បំណល់**៖ \nឯកសារនេះបានបកប្រែដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ បើទោះបីយើងខិតខំរកភាពច្បាស់លាស់ក៏ដោយ សូមដឹងថាការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុស ឬការបាក់បែកបាន។ ឯកសារដើមនៅក្នុងភាសាតំបន់ដើមគួរត្រូវបានគេយកមកជាមូលដ្ឋានដែលមានអំណាចបំផុត។ សម្រាប់ព័ត៌មានសំខាន់ៗ សូមផ្ដល់អនុសាសន៍ក្នុងការបកប្រែដោយមនុស្សជំនាញវិជ្ជាជីវៈ។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកស្រាយខុសពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
]
}
],
"metadata": {
"orig_nbformat": 4,
"language_info": {
"name": "python"
}
},
"nbformat": 4,
"nbformat_minor": 2
}

@ -0,0 +1,198 @@
# Visualizing Proportions
|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/11-Visualizing-Proportions.png)|
|:---:|
|ទិដ្ឋភាពអំពីសមurtle-កត់ភាគនៃទិន្នន័យ - _Sketchnote ដោយ [@nitya](https://twitter.com/nitya)_ |
នៅក្នុងមេរៀននេះ អ្នកនឹងប្រើឌាតាដែលផ្តោតលើធម្មជាតិខុសប្លែក ដើម្បីបង្ហាញភាគរយ ដូចជា ចំនួនប្រភេទផ្សេងៗនៃស្រូវឈើដែលមាននៅក្នុងដាតាដែលពាក់ព័ន្ធនឹងផ្សិត។ យើងនឹងស្វែងយល់អំពីផ្សិតទាំងនេះដោយប្រើឌាតា ដែលយកពី Audubon ដែលរាយការណ៍ព័ត៌មានអំពីប្រភេទផ្សិតស្រមោល ២៣ប្រភេទក្នុងគ្រួសារ Agaricus និង Lepiota។ អ្នកនឹងសាកល្បងបង្ហាញទិន្នន័យស្រដៀងៗនេះជាគំនូរដូចជា៖
- ក្រឡាចត្រង្គគ្រាប់បាយ 🥧
- ក្រឡាចត្រង្គដូណាត់ 🍩
- ក្រឡាចត្រង្គវ៉ាហ្វន 🧇
> 💡 គម្រោងចំណាប់អារម្មណ៍មួយមានឈ្មោះថា [Charticulator](https://charticulator.com) របស់ Microsoft Research ផ្តល់នូវចំណុចបញ្ចូល-ចាប់យកដោយឥតគិតថ្លៃសម្រាប់ការបង្ហាញទិន្នន័យ។ ក្នុងមេរៀនមួយរបស់ពួកគេ ក៏បានប្រើ dataset ផ្សិតនេះដែរ! រួចអ្នកអាចស្វែងយល់ទិន្នន័យនិងរៀនបណ្ណាល័យជាមួយគ្នាបាន៖ [Charticulator tutorial](https://charticulator.com/tutorials/tutorial4.html)។
## [ការសាកល្បងមុនវគ្គសិក្សា](https://ff-quizzes.netlify.app/en/ds/quiz/20)
## ស្គាល់បំពង់ផ្សិតរបស់អ្នក 🍄
ផ្សិតគឺគួរឱ្យចាប់អារម្មណ៍ខ្លាំងណាស់។ យើងនាំចូលដាតាដើម្បីសិក្សាពីពួកវា៖
```python
import pandas as pd
import matplotlib.pyplot as plt
mushrooms = pd.read_csv('../../data/mushrooms.csv')
mushrooms.head()
```
តារាងមួយត្រូវបានបោះពុម្ពជាមួយទិន្នន័យល្អសម្រាប់វិភាគ៖
| ចំណាត់ថ្នាក់ | រូបរាងក្បាល | ផ្ទៃក្បាល | ពណ៌ក្បាល | មានស្នាម | ក្លិន | តំណភ្ជាប់ស្លា | ចម្ងាយស្លា | ទំហំស្លា | ពណ៌ស្លា | រូបរាងដោះ | មូលដោះ | ផ្ទៃដោះលើច្រវ៉ាក់ | ផ្ទៃដោះក្រោមច្រវ៉ាក់ | ពណ៌ដោះលើច្រវ៉ាក់ | ពណ៌ដោះក្រោមច្រវ៉ាក់ | ប្រភេទមួក | ពណ៌មួក | ចំនួនខ្សែកោង | ប្រភេទខ្សែកោង | ពណ៌ស្នាមអង្កាម | បរិយាយពាណិជ្ជកម្ម | តំបន់រស់នៅ |
| --------- | --------- | ----------- | --------- | ------- | ------- | --------------- | ------------ | --------- | ---------- | ----------- | ---------- | ------------------------ | ------------------------ | ---------------------- | ---------------------- | --------- | ---------- | ----------- | --------- | ----------------- | ---------- | ------- |
| ពុល | ខ្ពស់កោង | មានផ្ទៃស្រួយ | ពណ៌ត្នោត | មានស្នាម | ខ្លាញ់ខ្លា | បានសេរី | នៅជិត | ស្តាំតិច | ពណ៌ខ្មៅ | កំពស់ឡើង | តុល្យ | មានផ្ទៃស្រួយ | មានផ្ទៃស្រួយ | ពណ៌ស ពណ៌ស | ពណ៌ស ពណ៌ស | ផ្នែកខ្នាត | ពណ៌ស | មួយ | ពីរដង | ពណ៌ខ្មៅ | រឹងស៊ីន | ភូមិទីក្រុង |
| អាចបរិភោគបាន | ខ្ពស់កោង | មានផ្ទៃស្រួយ | លឿង | មានស្នាម | ដំណក់ដំណាប់ | បានសេរី | នៅជិត | ធំ | ពណ៌ខ្មៅ | កំពស់ឡើង | ឈើភ្លៅ | មានផ្ទៃស្រួយ | មានផ្ទៃស្រួយ | ពណ៌ស ពណ៌ស | ពណ៌ស ពណ៌ស | ផ្នែកខ្នាត | ពណ៌ស | មួយ | ពីរដង | ពណ៌ត្នោត | ច្រើន | ស្មៅ |
| អាចបរិភោគបាន | រង្វង់ | មានផ្ទៃស្រួយ | ពណ៌ស | មានស្នាម | ថ្នាំ | បានសេរី | នៅជិត | ធំ | ពណ៌ត្នោត | កំពស់ឡើង | ឈើភ្លៅ | មានផ្ទៃស្រួយ | មានផ្ទៃស្រួយ | ពណ៌ស ពណ៌ស | ពណ៌ស ពណ៌ស | ផ្នែកខ្នាត | ពណ៌ស | មួយ | ពីរដង | ពណ៌ត្នោត | ច្រើន | ទំនាប |
| ពុល | ខ្ពស់កោង | មានស្បែកក្រហម | ពណ៌ស | មានស្នាម | ខ្លាញ់ខ្លា | បានសេរី | នៅជិត | ស្តាំតិច | ពណ៌ត្នោត | កំពស់ឡើង | តុល្យ | មានផ្ទៃស្រួយ | មានផ្ទៃស្រួយ | ពណ៌ស ពណ៌ស | ពណ៌ស ពណ៌ស | ផ្នែកខ្នាត | ពណ៌ស | មួយ | ពីរដង | ពណ៌ខ្មៅ | រឹងស៊ីន | ភូមិទីក្រុង |
ភ្លាមៗ អ្នកមើលឃើញថាទិន្នន័យទាំងអស់គឺជាអក្សរទេ។ អ្នកត្រូវបម្លែងទិន្នន័យនេះសម្រាប់ប្រើក្នុងក្រឡាចត្រង្គ។ ភាគច្រើនរបស់ទិន្នន័យ ក្រៅតែពិតប្រាកដ គឺតំណាងដោយវត្ថុ៖
```python
print(mushrooms.select_dtypes(["object"]).columns)
```
លទ្ធផលដែលបាន៖
```output
Index(['class', 'cap-shape', 'cap-surface', 'cap-color', 'bruises', 'odor',
'gill-attachment', 'gill-spacing', 'gill-size', 'gill-color',
'stalk-shape', 'stalk-root', 'stalk-surface-above-ring',
'stalk-surface-below-ring', 'stalk-color-above-ring',
'stalk-color-below-ring', 'veil-type', 'veil-color', 'ring-number',
'ring-type', 'spore-print-color', 'population', 'habitat'],
dtype='object')
```
យកទិន្នន័យនេះ ហើយបម្លែងជួរឈរដែលមានឈ្មោះ 'class' ទៅជាប្រភេទ category៖
```python
cols = mushrooms.select_dtypes(["object"]).columns
mushrooms[cols] = mushrooms[cols].astype('category')
```
```python
edibleclass=mushrooms.groupby(['class']).count()
edibleclass
```
ឥឡូវនេះ ប្រសិនបើអ្នកបោះពុម្ពទិន្នន័យផ្សិត អ្នកអាចមើលឃើញថា វាត្រូវបានក្រុមតាមប្រភេទប Poisonous/Edible៖
| | រូបរាងក្បាល | ផ្ទៃក្បាល | ពណ៌ក្បាល | មានស្នាម | ក្លិន | តំណភ្ជាប់ស្លា | ចម្ងាយស្លា | ទំហំស្លា | ពណ៌ស្លា | រូបរាងដោះ | ... | ផ្ទៃដោះក្រោមច្រវ៉ាក់ | ពណ៌ដោះលើច្រវ៉ាក់ | ពណ៌ដោះក្រោមច្រវ៉ាក់ | ប្រភេទមួក | ពណ៌មួក | ចំនួនខ្សែកោង | ប្រភេទខ្សែកោង | ពណ៌ស្នាមអង្កាម | បរិយាយពាណិជ្ជកម្ម | តំបន់រស់នៅ |
| --------- | --------- | ----------- | --------- | ------- | ---- | --------------- | ------------ | --------- | ---------- | ----------- | --- | ------------------------ | ---------------------- | ---------------------- | --------- | ---------- | ----------- | --------- | ----------------- | ---------- | ------- |
| class | | | | | | | | | | | | | | | | | | | | | |
| អាចបរិភោគបាន | ៤២០៨ | ៤២០៨ | ៤២០៨ | ៤២០៨ | ៤២០៨ | ៤២០៨ | ៤២០៨ | ៤២០៨ | ៤២០៨ | ៤២០៨ | ... | ៤២០៨ | ៤២០៨ | ៤២០៨ | ៤២០៨ | ៤២០៨ | ៤២០៨ | ៤២០៨ | ៤២០៨ | ៤២០៨ | ៤២០៨ |
| ពុល | ៣៩១៦ | ៣៩១៦ | ៣៩១៦ | ៣៩១៦ | ៣៩១៦ | ៣៩១៦ | ៣៩១៦ | ៣៩១៦ | ៣៩១៦ | ៣៩១៦ | ... | ៣៩១៦ | ៣៩១៦ | ៣៩១៦ | ៣៩១៦ | ៣៩១៦ | ៣៩១៦ | ៣៩១៦ | ៣៩១៦ | ៣៩១៦ | ៣៩១៦ |
ប្រសិនបើអ្នកធ្វើតាមលំដាប់ដែលបង្ហាញក្នុងតារាងនេះ ដើម្បីបង្កើតស្លាកចំណាត់ថ្នាក់ អ្នកអាចបង្កើតក្រឡាចត្រង្គគ្រាប់បាយបាន៖
## ក្រឡាចត្រង្គគ្រាប់បាយ!
```python
labels=['Edible','Poisonous']
plt.pie(edibleclass['population'],labels=labels,autopct='%.1f %%')
plt.title('Edible?')
plt.show()
```
Voila, ក្រឡាចត្រង្គគ្រាប់បាយបង្ហាញអត្រាតាមភាគរយនៃទិន្នន័យនេះ តាមរយៈចំណាត់ថ្នាក់ពីរនេះនៃផ្សិត។ វាសំខាន់ណាស់ក្នុងការកំណត់លំដាប់ស្លាកឲ្យត្រឹមត្រូវ ដូច្នេះសូមផ្ទៀងផ្ទាត់លំដាប់ដែលបង្កើតស្លាកជាប្រចាំមួយ!
![pie chart](../../../../translated_images/km/pie1-wb.e201f2fcc3354131.webp)
## ក្រឡាចត្រង្គដូណាត់!
ក្រោយមក ក្រឡាចត្រង្គដូណាត់គឺជាក្រឡាចត្រង្គគ្រាប់បាយដែលមានរនាំងនៅចំកណ្ដាល។ យើងមកមើលទិន្នន័យរបស់យើងជារបៀបនេះ។
សូមមើលតំបន់រស់នៅផ្សេងៗដែលផ្សិតដាំដុះ៖
```python
habitat=mushrooms.groupby(['habitat']).count()
habitat
```
នៅទីនេះ អ្នកកំពុងក្រុមទិន្នន័យរបស់អ្នកតាមតំបន់រស់នៅ។ មានចំនួន ៧ តំបន់ បើកនេះជាស្លាកសម្រាប់ក្រឡាចត្រង្គដូណាត់របស់អ្នក៖
```python
labels=['Grasses','Leaves','Meadows','Paths','Urban','Waste','Wood']
plt.pie(habitat['class'], labels=labels,
autopct='%1.1f%%', pctdistance=0.85)
center_circle = plt.Circle((0, 0), 0.40, fc='white')
fig = plt.gcf()
fig.gca().add_artist(center_circle)
plt.title('Mushroom Habitats')
plt.show()
```
![donut chart](../../../../translated_images/km/donut-wb.be3c12a22712302b.webp)
កូដនេះគូរក្រឡាចត្រង្គ និងរង្វង់កណ្តាលមួយ បន្ទាប់មកបន្ថែមរង្វង់កណ្តាលនោះក្នុងក្រឡាចត្រង្គ។ អ្នកអាចកែទំហំនៃរង្វង់កណ្តាលដោយផ្លាស់ប្តូរ `0.40` ទៅតម្លៃផ្សេង។
ក្រឡាចត្រង្គដូណាត់អាចកែសម្រួលបានជាច្រើនមុខ ដើម្បីផ្លាស់ប្តូរស្លាក។ ស្លាកអាចត្រូវបានសម្គាល់សម្រាប់ភាពងាយជ្រាប។ រៀនបន្ថែមនៅ [ឯកសារ](https://matplotlib.org/stable/gallery/pie_and_polar_charts/pie_and_donut_labels.html?highlight=donut)។
ឥឡូវដែលអ្នកបានស្គាល់របៀបក្រុមទិន្នន័យ រួចបង្ហាញវាជាក្រឡាចត្រង្គគ្រាប់បាយឬដូណាត់ អ្នកអាចស្វែងរកក្រឡាចត្រង្គប្រភេទផ្សេងទៀត។ សាកល្បងក្រឡាចត្រង្គវ៉ាហ្វន ដែលជារបៀបផ្សេងក្នុងការស្វែងយល់ពីបរិមាណ។
## ក្រឡាចត្រង្គវ៉ាហ្វន!
គំរូ​ក្រឡាចត្រង្គ​ប្រភេទ 'វ៉ាហ្វន' គឺជា វិធីផ្សេងសម្រាប់បំពេញបរិមាណជារាងជួរផ្ទាំង ២D នៃជ្រុងតិចៗ។ សាកល្បងបង្ហាញបរិមាណពណ៌ក្បាលផ្សិតផ្សេងៗក្នុង dataset នេះ។ ដើម្បីធ្វើបែបនេះ អ្នកត្រូវដំឡើងបណ្ណាល័យជំនួយមួយជា [PyWaffle](https://pypi.org/project/pywaffle/) និងប្រើ Matplotlib៖
```python
pip install pywaffle
```
ជ្រើសរើសផ្នែកមួយនៃទិន្នន័យរបស់អ្នកសម្រាប់ក្រុម៖
```python
capcolor=mushrooms.groupby(['cap-color']).count()
capcolor
```
បង្កើតក្រឡាចត្រង្គវ៉ាហ្វនដោយបង្កើតស្លាក ហើយបន្ទាប់មកក្រុមទិន្នន័យរបស់អ្នក៖
```python
import pandas as pd
import matplotlib.pyplot as plt
from pywaffle import Waffle
data ={'color': ['brown', 'buff', 'cinnamon', 'green', 'pink', 'purple', 'red', 'white', 'yellow'],
'amount': capcolor['class']
}
df = pd.DataFrame(data)
fig = plt.figure(
FigureClass = Waffle,
rows = 100,
values = df.amount,
labels = list(df.color),
figsize = (30,30),
colors=["brown", "tan", "maroon", "green", "pink", "purple", "red", "whitesmoke", "yellow"],
)
```
ដោយប្រើក្រឡាចត្រង្គវ៉ាហ្វន អ្នកអាចឃើញថាពណ៌ក្បាលផ្សិតក្នុង dataset នេះមានអត្រាពីរបីមិនទ្បឿន។ គួរឱ្យចាប់អារម្មណ៍ដែលមានផ្សិតពណ៌បៃតងច្រើន។
![waffle chart](../../../../translated_images/km/waffle.5455dbae4ccf17d5.webp)
✅ Pywaffle គាំទ្ររូបតំណាងនៅក្នុងក្រឡាចត្រង្គ ដែលប្រើរូបតំណាងណាមួយដែលមាននៅ [Font Awesome](https://fontawesome.com/). សាកល្បងបន្ថែម ដើម្បីបង្កើតក្រឡាចត្រង្គវ៉ាហ្វនកាន់តែគួរឱ្យចាប់អារម្មណ៍ដោយប្រើរូបតំណាងជំនួសជ្រុង។
ក្នុងមេរៀននេះ អ្នកបានរៀនពីវិធីបង្ហាញភាគរយចំនួនបី។ ជាចម្បង អ្នកត្រូវក្រុមទិន្នន័យជាប្រភេទ រួចសម្រេចថាតើវិធីណាដែលល្អបំផុតសម្រាប់បង្ហាញទិន្នន័យ - ក្រឡាចត្រង្គគ្រាប់បាយ, ដូណាត់, ឬវ៉ាហ្វន។ ទាំងអស់គឺឆ្ងាញ់ និងផ្តល់ឱ្យអ្នកប្រើនូវការមើលឃើញភ្លាមភ្លាមលើ dataset។
## 🚀 thách thức
សូមព្យាយាមបង្កើតក្រឡាចត្រង្គឆ្ងាញ់ៗទាំងនេះនៅ [Charticulator](https://charticulator.com)។
## [ការសាកល្បងបន្ទាប់វគ្គសិក្សា](https://ff-quizzes.netlify.app/en/ds/quiz/21)
## សង្គ្រោះវិញ និងសិក្សាផ្ទាល់ខ្លួន
មួយចំនួនពេលវេលា វាជាពិបាកក្នុងការជ្រើសរើសប្រើក្រឡាចត្រង្គគ្រាប់បាយ ដូណាត់ ឬវ៉ាហ្វន។ នេះជាបទអានខ្លះសម្រាប់អានអំពីប្រធានបទនេះ៖
https://www.beautiful.ai/blog/battle-of-the-charts-pie-chart-vs-donut-chart
https://medium.com/@hypsypops/pie-chart-vs-donut-chart-showdown-in-the-ring-5d24fd86a9ce
https://www.mit.edu/~mbarker/formula1/f1help/11-ch-c6.htm
https://medium.datadriveninvestor.com/data-visualization-done-the-right-way-with-tableau-waffle-chart-fdf2a19be402
សូមស្វែងយល់បន្ថែមដើម្បីរកព័ត៌មានលម្អិតអំពីការជ្រើសរើសវេលានេះ។
## កិច្ចការសិក្សា
[សាកល្បងវានៅ Excel](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**សេចក្ដីប្រកាស**៖
ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)। ខណៈពេលយើងខិតខំប្រឹងប្រែងសម្រាប់ភាពត្រឹមត្រូវ សូមយកចិត្តទុកដាក់ថាការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុសឬភាពមិនត្រឹមត្រូវ។ ឯកសារដើមនៅក្នុងភាសាមុខងារដើមគួរត្រូវបានយកជាផ្លូវការជាអ្នកផ្តល់ព័ត៌មាន។ សម្រាប់ព័ត៌មានសំខាន់ ចាត់ទុកការបកប្រែដោយអ្នកជំនាញជាអ្នកណែនាំជាលក្ខណៈផ្លូវការ។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកប្រែខុសពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,18 @@
# សាកល្បងវានៅក្នុង Excel
## សេចក្តីណែនាំ
តើអ្នកដឹងទេថាអ្នកអាចបង្កើតតារាងដូណាត់ ពី និងវ៉ាហ្វខលបាននៅក្នុង Excel? ប្រើប្រភពទិន្នន័យដែលអ្នកចូលចិត្ត ដើម្បីបង្កើតតារាងទាំងបីនេះនៅក្នុងសន្លឹកព្រៃ Excel។
## គោលការណ៍វាយតម្លៃ
| ល្អឯក | គ្រប់គ្រាន់ | ត្រូវការកែលម្អ |
| ------------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------------ |
| សន្លឹកព្រៃ Excel ត្រូវបានបង្ហាញជាមួយតារាងទាំងបី | សន្លឹកព្រៃ Excel ត្រូវបានបង្ហាញជាមួយតារាងពីរ | សន្លឹកព្រៃ Excel ត្រូវបានបង្ហាញជាមួយតារាងតែមួយ |
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការបដិសេធ**៖
ឯកសារនេះត្រូវបានបកប្រែ ជាមួយនឹងសេវាបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលដែលយើងខិតខំប្រឹងប្រែងសម្រាប់ភាពត្រឹមត្រូវ សូមយកចិត្តទុកដាក់ថា ការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុស ឬក៏ភាពមិនមែនត្រឹមត្រូវខ្លះ។ ឯកសារដើមនៅភាសាម្ចាស់ដើមគួរត្រូវបានពិចារណាជា ប្រភពដែលមានអំណាច។ ចំពោះព័ត៌មានសំខាន់ៗ សូមណែនាំឲ្យប្រើការបកប្រែដោយមនុស្សជំនាញវិជ្ជាជីវៈ។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកស្រាយខុសៗដែលកើតមានពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,26 @@
{
"cells": [
{
"cell_type": "markdown",
"source": [
"# 🍄 អនុপাতឱ្យគ្រឿងផ្សំម្សៅភេ​រម្មា​ដែល\n"
],
"metadata": {}
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**ការបដិសេធ**៖ \nឯកសារនេះត្រូវបានបកប្រែកម្មវិធីបកប្រែ AI តាមសេវាកម្ម [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលដែលយើងខិតខំរក្សានូវភាពច្បាស់លាស់ សូមយកចិត្តទុកដាក់ថាបកប្រែដោយស្វ័យប្រវត្តិក្នុងអាចមានកំហុស ឬមិនត្រឹមត្រូវ។ ឯកសារដើមក្នុងភាសាទៅដើមគួរត្រូវបានគេចាត់ទុកជាអ្នកផ្ដល់ព័ត៌មានផ្លូវការជាធរមាន។ សម្រាប់ព័ត៌មានសំខាន់ សូមណែនាំឱ្យធ្វើការបកប្រែដោយអ្នកមានជំនាញមនុស្ស។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកស្រាយខុសៗដែលកើតឡើងពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
]
}
],
"metadata": {
"orig_nbformat": 4,
"language_info": {
"name": "python"
}
},
"nbformat": 4,
"nbformat_minor": 2
}

File diff suppressed because one or more lines are too long

@ -0,0 +1,182 @@
# ការមើលឃើញទំនាក់ទំនង៖ ទាំងអំពីទឹកឃ្មុំ 🍯
|![ សេចក្ដីសង្ខេបគំនូរសៀង្ការ ដោយ [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/12-Visualizing-Relationships.png)|
|:---:|
|ការមើលឃើញទំនាក់ទំនង - _សេចក្ដីសង្ខេបគំនូរសៀង្ការ ដោយ [@nitya](https://twitter.com/nitya)_ |
បន្តការយកចំណុចផ្តោតលើធម្មជាតិក្នុងការស្រាវជ្រាវរបស់យើង មកស្វែងរកការមើលឃើញដែលគួរឲ្យចាប់អារម្មណ៍ដើម្បីបង្ហាញទំនាក់ទំនងរវាងប្រភេទទឹកឃ្មុំផ្សេងៗគ្នា គិតតាមទិន្នន័យដែលបានរៀបចំចេញពី [ក្រសួងកសិកម្មសហរដ្ឋអាមេរិក](https://www.nass.usda.gov/About_NASS/index.php)។
ទិន្នន័យនេះមានប្រហែល 600 ធាតុបង្ហាញការផលិតទឹកឃ្មុំ ក្នុងមួយរដ្ឋជាច្រើនរបស់សហរដ្ឋអាមេរិក។ ដូច្នេះ ឧទាហរណ៍ អ្នកអាចមើលឃើញចំនួនប្រូនសត្វមេឃ្មុំ ផលចំណេញក្នុងមួយប្រូនសត្វមេឃ្មុំ ការផលិតសរុប ស្តុក តម្លៃក្នុងមួយផោន និងតម្លៃទឹកឃ្មុំដែលផលិតក្នុងរដ្ឋណាមួយពីឆ្នាំ 1998 ដល់ 2012 ដែលមានមួយជាប់ជាជួរដើម្បីផ្ដល់សំណុំទិន្នន័យក្នុងមួយឆ្នាំសម្រាប់រាជរដ្ឋានីយ៍នីមួយៗ។
វានឹងគួរឲ្យចាប់អារម្មណ៍ក្នុងការមើលឃើញទំនាក់ទំនងរវាងការផលិតក្នុងមួយឆ្នាំរបស់រដ្ឋណាមួយ និង, ឧទាហរណ៍, តម្លៃទឹកឃ្មុំក្នុងរដ្ឋនោះ។ ជំនួស អ្នកអាចមើលឃើញទំនាក់ទំនងរវាងផលចំណេញទឹកឃ្មុំក្នុងមួយប្រូនសត្វមេឃ្មុំរបស់រដ្ឋផ្សេងៗគ្នា។ រយៈពេលឆ្នាំនេះគ្របដណ្តប់សំរាប់ជំងឺសម្លាប់ប្រូនសត្វ 'CCD' ឬ 'Colony Collapse Disorder' ដែលបានមើលឃើញជាលើកដំបូងនៅឆ្នាំ 2006 (http://npic.orst.edu/envir/ccd.html) ដែលជាទិន្នន័យសម្រាប់សិក្សាដ៏មានតម្លៃ។ 🐝
## [​សំណួរប្រឡងមុនការបង្រៀន](https://ff-quizzes.netlify.app/en/ds/quiz/22)
ក្នុងមេរៀននេះ អ្នកអាចប្រើ Seaborn ដែលអ្នកបានប្រើមុននោះជាគ្រឿងសំអាងល្អសម្រាប់មើលឃើញទំនាក់ទំនងរវាងអថេរ។ អ្វីដែលគួរឱ្យចាប់អារម្មណ៍ជាពិសេសគឺការប្រើប្រាស់មុខងារ `relplot` របស់ Seaborn ដែលអនុញ្ញាតឲ្យបង្កើតផ្ទាំងសៀវភៅចុចសារ (scatter plots) និងផ្ទាំងខ្សែ (line plots) ដើម្បីមើលឃើញនូវ '[ទំនាក់ទំនងស្ថិតិ](https://seaborn.pydata.org/tutorial/relational.html?highlight=relationships)' ដែលអនុញ្ញាតឱ្យអ្នកវិទ្យាសាស្រ្តទិន្នន័យយល់ដឹងពីរបៀបការទំនាក់ទំនងរវាងអថេរ។
## ផ្ទាំងចុចសារ (Scatterplots)
ប្រើផ្ទាំងចុចសារដើម្បីបង្ហាញពីរបៀបដែលតម្លៃទឹកឃ្មុំបានបំលែង ជារៀងរាល់ឆ្នាំ សម្រាប់ក្នុងមួយរដ្ឋ។ Seaborn ដែលប្រើ `relplot` ចំណាយថាមពលក្នុងការបែងចែកទិន្នន័យរដ្ឋ និងបង្ហាញចំណុចទិន្នន័យសម្រាប់ទិន្នន័យប្រភេទកាតេហ្គរី និងលេខ។
ចូរចាប់ផ្តើមដោយនាំចូលទិន្នន័យ និង Seaborn៖
```python
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
honey = pd.read_csv('../../data/honey.csv')
honey.head()
```
អ្នកជ្រាបថាទិន្នន័យទឹកឃ្មុំមានជួរឈរ ដែលគួរឲ្យចាប់អារម្មណ៍ជាច្រើន រួមមានឆ្នាំ និងតម្លៃក្នុងមួយផោន។ មកស្វែងយល់ពីទិន្នន័យនេះ បែងចែកតាមរដ្ឋសហរដ្ឋអាមេរិក៖
| រដ្ឋ | numcol | yieldpercol | totalprod | stocks | priceperlb | prodvalue | ឆ្នាំ |
| ----- | ------ | ----------- | --------- | -------- | ---------- | --------- | ---- |
| AL | 16000 | 71 | 1136000 | 159000 | 0.72 | 818000 | 1998 |
| AZ | 55000 | 60 | 3300000 | 1485000 | 0.64 | 2112000 | 1998 |
| AR | 53000 | 65 | 3445000 | 1688000 | 0.59 | 2033000 | 1998 |
| CA | 450000 | 83 | 37350000 | 12326000 | 0.62 | 23157000 | 1998 |
| CO | 27000 | 72 | 1944000 | 1594000 | 0.7 | 1361000 | 1998 |
បង្កើតផ្ទាំងចុចសារជាមូលដ្ឋានដើម្បីបង្ហាញទំនាក់ទំនងរវាងតម្លៃក្នុងមួយផោននៃទឹកឃ្មុំ និងរដ្ឋដែលផលិតវា។ ចូរធ្វើឱ្យតំបន់អក្សរតំណាង `y` មានកម្ពស់គ្រប់គ្រាន់ដើម្បីបង្ហាញរដ្ឋទាំងអស់៖
```python
sns.relplot(x="priceperlb", y="state", data=honey, height=15, aspect=.5);
```
![scatterplot 1](../../../../translated_images/km/scatter1.5e1aa5fd6706c5d1.webp)
ឥឡូវនេះ បង្ហាញទិន្នន័យដូចគ្នាជាមួយផ្ទាំងពណ៌ទឹកឃ្មុំ ដើម្បីបង្ហាញពីរបៀបដែលតម្លៃបានបំលែងជារៀងរាល់ឆ្នាំ។ អ្នកអាចធ្វើវាដោយបន្ថែមប៉ារ៉ាម៉ែត្រ 'hue' ដើម្បីបង្ហាញការផ្លាស់ប្ដូរ ជារៀងរាល់ឆ្នាំ៖
> ✅ រៀនបន្ថែមអំពី [ពណ៌ផ្លាស់ប្ដូរដែលអ្នកអាចប្រើជាមួយ Seaborn](https://seaborn.pydata.org/tutorial/color_palettes.html) សាកល្បងពណ៌រ៉ែនប៉ាក់ដ៏ស្រស់ស្អាត!
```python
sns.relplot(x="priceperlb", y="state", hue="year", palette="YlOrBr", data=honey, height=15, aspect=.5);
```
![scatterplot 2](../../../../translated_images/km/scatter2.c0041a58621ca702.webp)
ជាមួយការផ្លាស់ប្ដូរផ្ទាំងពណ៌នេះ អ្នកអាចមើលឃើញថា មានការវិវឌ្ឍមាំមួននៅរយៈពេលជាច្រើនឆ្នាំក្នុងទំហំនៃតម្លៃទឹកឃ្មុំក្នុងមួយផោន។ ជាក់ស្តែង បើអ្នកមើលឃើញដែលជាគំរូមួយពីទិន្នន័យ ដើម្បីផ្ទៀងផ្ទាត់ (ជ្រើសរើសរដ្ឋណាមួយ, ដូចជា Arizona) អ្នកអាចឃើញលំនាំតម្លៃកើនឡើងជារៀងរាល់ឆ្នាំ មានតែខ្លះតែប៉ុណ្ណោះដែលជាប់ខុសត្រូវ៖
| រដ្ឋ | numcol | yieldpercol | totalprod | stocks | priceperlb | prodvalue | ឆ្នាំ |
| ----- | ------ | ----------- | --------- | ------- | ---------- | --------- | ---- |
| AZ | 55000 | 60 | 3300000 | 1485000 | 0.64 | 2112000 | 1998 |
| AZ | 52000 | 62 | 3224000 | 1548000 | 0.62 | 1999000 | 1999 |
| AZ | 40000 | 59 | 2360000 | 1322000 | 0.73 | 1723000 | 2000 |
| AZ | 43000 | 59 | 2537000 | 1142000 | 0.72 | 1827000 | 2001 |
| AZ | 38000 | 63 | 2394000 | 1197000 | 1.08 | 2586000 | 2002 |
| AZ | 35000 | 72 | 2520000 | 983000 | 1.34 | 3377000 | 2003 |
| AZ | 32000 | 55 | 1760000 | 774000 | 1.11 | 1954000 | 2004 |
| AZ | 36000 | 50 | 1800000 | 720000 | 1.04 | 1872000 | 2005 |
| AZ | 30000 | 65 | 1950000 | 839000 | 0.91 | 1775000 | 2006 |
| AZ | 30000 | 64 | 1920000 | 902000 | 1.26 | 2419000 | 2007 |
| AZ | 25000 | 64 | 1600000 | 336000 | 1.26 | 2016000 | 2008 |
| AZ | 20000 | 52 | 1040000 | 562000 | 1.45 | 1508000 | 2009 |
| AZ | 24000 | 77 | 1848000 | 665000 | 1.52 | 2809000 | 2010 |
| AZ | 23000 | 53 | 1219000 | 427000 | 1.55 | 1889000 | 2011 |
| AZ | 22000 | 46 | 1012000 | 253000 | 1.79 | 1811000 | 2012 |
វិធីមួយផ្សេងទៀតនៃការមើលឃើញការវិវឌ្ឍនេះគឺប្រើទ្រង់ទ្រាយទំហំ ផ្ទុយពីពណ៌។ សម្រាប់អ្នកដែលមានមើលមិនឃើញពណ៌ ពួកគេអាចរកមើលជម្រើសនេះបានល្អ។ កែសម្រួលការមើលឃើញរបស់អ្នក ដើម្បីបង្ហាញការកើនឡើងនៃតម្លៃដោយការកើនឡើងនៃចំនួនជុំវិញចំណុច៖
```python
sns.relplot(x="priceperlb", y="state", size="year", data=honey, height=15, aspect=.5);
```
អ្នកអាចមើលឃើញទំហំចំណុចកើនឡើងមែន។
![scatterplot 3](../../../../translated_images/km/scatter3.3c160a3d1dcb36b3.webp)
តើនេះជាគ្រាឌីមងាយស្រួលរបស់ការផ្គត់ផ្គង់ និងសំណើរឬ? ដោយសាររឿងដូចជា អាកាសធាតុបម្លាស់ប្តូរ និងជំងឺសម្លាប់ប្រូនសត្វមេឃ្មុំ កើតមានថាតើមានទឹកឃ្មុំតិចជាងសម្រាប់ការជាវមួយជារៀងរាល់ឆ្នាំ ហើយដូច្នេះតម្លៃកើនឡើង?
ដើម្បីរកមើលការតភ្ជាប់រវាងអថេរក្នុងទិន្នន័យនេះ មកស្វែងយល់ពីផ្ទាំងខ្សែខាងក្រោម។
## ផ្ទាំងខ្សែ
សំណួរ៖ តើមានការកើនឡើងច្បាស់លាស់ក្នុងតម្លៃទឹកឃ្មុំក្នុងមួយផោន ជារៀងរាល់ឆ្នាំទេ? អ្នកអាចរកឃើញវាប្រសើរបំផុតដោយបង្កើតផ្ទាំងខ្សែតែមួយ ៖
```python
sns.relplot(x="year", y="priceperlb", kind="line", data=honey);
```
ចម្លើយ៖ បាទ/ចាស មាន ទោះបីមានករណីខុសប្លែកនៅឆ្នាំ 2003 ក៏ដោយ៖
![line chart 1](../../../../translated_images/km/line1.f36eb465229a3b1f.webp)
✅ ពីព្រោះ Seaborn រួមបញ្ចូលទិន្នន័យជុំវិញខ្សែខាងលើ មើលឃើញ "ការវាស់វែងច្រើននៅតំលៃ x រៀងៗគ្នា ដោយបង្ហាញចំណុចមធ្យម និងចន្លោះទំនុកចិត្ត 95% រំលងចំណុចមធ្យម"។ [ប្រភព](https://seaborn.pydata.org/tutorial/relational.html)។ អាកប្បកិរិយានេះដែលចំណាយពេលអាចបិទបានដោយបន្ថែម `ci=None`
សំណួរ៖ តើនៅឆ្នាំ 2003 ក៏អាចឃើញការកើនឡើងនៃការផ្គត់ផ្គង់ទឹកឃ្មុំផងដែរឬ? តើអ្នកមើលការផលិតសរុបជារៀងរាល់ឆ្នាំដូចម្តេច?
```python
sns.relplot(x="year", y="totalprod", kind="line", data=honey);
```
![line chart 2](../../../../translated_images/km/line2.a5b3493dc01058af.webp)
ចម្លើយ៖ មិនមែនទេ។ ប្រសិនបើអ្នកមើលការផលិតសរុប វាត្រូវបានគេចាត់ទុកថាបានកើនឡើងនៅឆ្នាំនោះប៉ុន្តែលើកលែងតែមួយ បើប្រៀបធៀបទៅតាមទូទៅបរិមាណទឹកឃ្មុំដែលបានផលិតកំពុងធ្លាក់ចុះក្នុងរយៈពេលនេះ។
សំណួរ៖ ក្នុងករណីនេះ តើអ្វីដែលអាចបណ្តាលឲ្យមានការកើនឡើងតម្លៃទឹកឃ្មុំនៅឆ្នាំ 2003?
ដើម្បីស្វែងរកវា អ្នកអាចស្វែងយល់ពី grid បង្ហាញផ្នែក។
## ផ្នែក grid
ផ្នែក grid ស្ទួនគ្នាផ្នែកមួយនៃទិន្នន័យរបស់អ្នក (ក្នុងករណីនេះ អ្នកអាចជ្រើសរើស 'ឆ្នាំ' ដ כדיចៀសវាងការបង្កើតផ្នែក grid ច្រើនពេក)។ Seaborn អាចបង្កើតផ្ទាំងចងក្រងសម្រាប់ផ្នែកនីមួយៗនៃបន្ទាត់គូ x និង y ដែលបានជ្រើសរើសសម្រាប់កាត់បៀបកំណត់ផ្ទាំងភាគរយប្រសើរឡើង។ តើឆ្នាំ 2003 មានcl គឺមានភាពច្បាស់លាស់ក្នុងការប្រៀបធៀបប្រភេទនេះឬ?
បង្កើតផ្នែក grid ដោយបន្តប្រើ `relplot` ដូចដែលបានផ្តល់អនុសាសន៍ដោយ [ឯកសាររបស់ Seaborn](https://seaborn.pydata.org/generated/seaborn.FacetGrid.html?highlight=facetgrid#seaborn.FacetGrid) ។
```python
sns.relplot(
data=honey,
x="yieldpercol", y="numcol",
col="year",
col_wrap=3,
kind="line"
)
```
នៅក្នុងការមើលឃើញនេះ អ្នកអាចប្រៀបធៀបផលចំណេញក្នុងមួយប្រូនសត្វមេឃ្មុំ និងចំនួនប្រូនសត្វមេឃ្មុំ ជារៀងរាល់ឆ្នាំ នៅជាប់ជាមួយការតម្រៀបប៉ះពាល់នៅជួរឈរ 3៖
![facet grid](../../../../translated_images/km/facet.6a34851dcd540050.webp)
សម្រាប់ទិន្នន័យនេះ មិនមានអ្វីបង្ហាញឲ្យដឹងជាក់ស្តែងទាក់ទងនឹងចំនួនប្រូនសត្វមេឃ្មុំ និងផលចំណេញរបស់ពួកវា ជារៀងរាល់ឆ្នាំ និងសម្រាប់រាជរដ្ឋានីយ៍នីមួយៗទេ។ តើមានវិធីផ្សេងទៀតដើម្បីស្វែងរកការតភ្ជាប់រវាងអថេរទាំងពីរទេ?
## ផ្ទាំងខ្សែពីរជាប់គ្នា (Dual-line Plots)
សាកល្បងបង្កើតផ្ទាំងខ្សែច្រើនជាមួយការវាស់វែងពីរដែលរំលេចលើគ្នា ប្រើ 'despine' របស់ Seaborn ដើម្បីដករាំងខ្សែចងក្រងខាងលើ និង ខាងស្ដាំ និងប្រើ `ax.twinx` [ដែលបានយកចេញពី Matplotlib](https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.twinx.html)។ Twinx អនុញ្ញាតឲ្យផ្ទាំងបង្ហាញចែករំលែកតំបន់ x ហើយបង្ហាញតំបន់ y ប្ដូរពីរប្រភេទ។ ដូច្នេះ បង្ហាញផលចំណេញក្នុងមួយប្រូនសត្វមេឃ្មុំ និងចំនួនប្រូនសត្វមេឃ្មុំ រំលេចលើគ្នា៖
```python
fig, ax = plt.subplots(figsize=(12,6))
lineplot = sns.lineplot(x=honey['year'], y=honey['numcol'], data=honey,
label = 'Number of bee colonies', legend=False)
sns.despine()
plt.ylabel('# colonies')
plt.title('Honey Production Year over Year');
ax2 = ax.twinx()
lineplot2 = sns.lineplot(x=honey['year'], y=honey['yieldpercol'], ax=ax2, color="r",
label ='Yield per colony', legend=False)
sns.despine(right=False)
plt.ylabel('colony yield')
ax.figure.legend();
```
![superimposed plots](../../../../translated_images/km/dual-line.a4c28ce659603fab.webp)
ទោះបីជាមិនមានអ្វីដែលមើលទៅបំភ្លឺច្បាស់នៅឆ្នាំ 2003 ក៏ដោយ វាក៏អនុញ្ញាតឲ្យយើងបញ្ចប់មេរៀននេះជាមួយពាក្យប្លែកៗថា ទោះបីជាចំនួនប្រូនសត្វមេឃ្មុំកំពុងធ្លាក់ចុះទូទៅ ក៏ប៉ុន្តែចំនួនប្រូនសត្វមេឃ្មុំបានមានស្ថេរភាព ទោះបីជាផលចំណេញក្នុងមួយប្រូនសត្វមេឃ្មុំកំពុងធ្លាក់ចុះ។
ចូរចេញដំណើរ តាតាតា!
🐝❤️
## 🚀 챌린지
ក្នុងមេរៀននេះ អ្នកបានរៀនអំពីការប្រើប្រាស់ផ្ទាំងចុចសារ និង grid ខ្សែជាច្រើនរួមទាំង grid ផ្នែកផងដែរ។ តេស្តខ្លួនឯង ដោយបង្កើត grid ផ្នែកតាមការប្រើប្រាស់ទិន្នន័យផ្សេងទៀត ខាងលើបើត្រូវ តើគួរឲ្យប្រសើរឬ? ចំណាំវេលានិងការប៉ះពាល់ពេលបង្កើតវាប្រើបច្ចេកទេសទាំងនេះ។
## [សំណួរប្រឡងបន្ទាប់ពីបង្រៀន](https://ff-quizzes.netlify.app/en/ds/quiz/23)
## ការពិនិត្យឡើងវិញ និងរៀនដោយខ្លួនឯង
ផ្ទាំងខ្សែអាចមានភាពសាមញ្ញ ឬស្មុគស្មាញកម្រិតខ្ពស់។ សូមអានបន្ថែមក្នុង [ឯកសាររបស់ Seaborn](https://seaborn.pydata.org/generated/seaborn.lineplot.html) អំពីវិធីផ្សេងៗក្នុងការបង្កើតវា។ ព្យាយាមបន្ថែមលទ្ធផលទាំងនេះខាងលើដោយរបៀបផ្សេងទៀតដែលមានក្នុងឯកសារ។
## ការចាត់ការងារ
[ចូលទៅក្នុងគំនរមែកោះ](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការបដិសេធ**:
ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ បើទោះបីយើងខិតខំផ្តល់ភាពត្រឹមត្រូវក៏ដោយ សូមយល់ថាការបកប្រែដោយស្វ័យប្រវត្តិក្នុងឯកសារនេះអាចមានកំហុសឬភាពមិនត្រឹមត្រូវ។ ឯកសារដើមជាភាសាដើមគួรถ្រូវបានគេចាត់ទុកជាដើមកំណត់។ សម្រាប់ព័ត៌មានសំខាន់ៗ ផ្តល់ជូននូវការបកប្រែដោយមនុស្សជំនាញអាជីពគឺល្អជាង។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការពន្យល់ខុសដែលកើតមានពីការប្រើប្រាស់បកប្រែនេះទេ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,18 @@
# ជ្រៀតចូលក្នុងឃ្មុំ
## សេចក្ដីណែនាំ
ក្នុងមេរៀននេះ អ្នកបានចាប់ផ្តើមមើលទៅកាន់ទិន្នន័យដែលពាក់ព័ន្ធនឹងឃ្មុំ និងការផលិតទឹកឃ្មុំរបស់ពួកគេលើរយៈពេលមួយ ដែលឃើញការបាត់បង់ចំនួនជម្លោះឃ្មុំនៅទូទាំងរដ្ឋ។ សូមស្ទួចស្ទើរកាន់តែជ្រៅទៅក្នុងទិន្នន័យនេះ ហើយសាងសង់សៀវភៅកំណត់ត្រាដែលអាចប្រាប់រឿងរបស់សុខភាពរបស់ជម្លោះឃ្មុំ ជារាជធានី និងជារយៈឆ្នាំមួយៗ។ តើអ្នកបានរកឃើញអ្វីដែលចាប់អារម្មណ៍អំពីទិន្នន័យនេះទេ?
## សន្និដ្ឋាន
| ឧទាហរណ៍ល្អបំផុត | គ្រប់គ្រាន់ | ត្រូវការកែលម្អ |
| ------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------- | ---------------------------------------- |
| សៀវភៅកំណត់ត្រាត្រូវបានបង្ហាញជាមួយរឿងជាក់លាក់ដែលបានបញ្ចូលជាមួយតារាងបីផ្សេងៗដែលបង្ហាញពីសក្តានុពលនៃទិន្នន័យ រាជធានីដោយរាជធានី និងឆ្នាំដោយឆ្នាំ | សៀវភៅកំណត់ត្រាមិនមានមួយក្នុងចំណោមធាតុទាំងនេះ | សៀវភៅកំណត់ត្រាមិនមានពីរពីធាតុនេះទេ |
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការបដិសេធ**៖
ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ យើងខិតខំធ្វើឲ្យមានភាពត្រឹមត្រូវ ប៉ុន្តែសូមយកចិត្តទុកដាក់ថាការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុស ឬភាពមិនត្រឹមត្រូវ។ ឯកសារដើមដែលមានជាភាសាតាមដើម គួរត្រូវបានយកជាអ្វីដែលមានអំណាចសិទ្ធិ។ សម្រាប់ព័ត៌មានសំខាន់ៗ សូមប្រើសេវាបកប្រែដោយមនុស្សដែលមានជំនាញវិជ្ជាជីវៈ។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការពន្យល់ខុសចេញពីការប្រើប្រាស់ការបកប្រែនេះទេ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,26 @@
{
"cells": [
{
"cell_type": "markdown",
"source": [
"# ការបង្ហាញទិន្នន័យផលិតឃ្មុំ 🍯 🐝\n"
],
"metadata": {}
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**ការបដិសេធ**៖ \nឯកសារនេះត្រូវបានបំលែងជាភាសាខ្មែរ ដោយប្រើសេវាកម្មបំលែងភាសាដោយ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ នៅពេលដែលយើងខិតខំរកភាពត្រឹមត្រូវ សូមយល់ដឹងថាការបំលែងអូតូម៉ាតិកអាចមានកំហុសឬភាពមិនត្រូវគ្នា។ ឯកសារដើមជាភាសមូលដ្ឋាន គួរត្រូវបានគិតថាជាទិន្នន័យដោយផ្លូវការជាមូលដ្ឋាន។ សម្រាប់ព័ត៌មានសំខាន់ៗ យើងណែនាំឲ្យប្រើការបំលែងភាសាដោយមនុស្សជំនាញ។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកស្រាយខុសពីការប្រើប្រាស់ការបំលែងភាសានេះទេ។\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
]
}
],
"metadata": {
"orig_nbformat": 4,
"language_info": {
"name": "python"
}
},
"nbformat": 4,
"nbformat_minor": 2
}

@ -0,0 +1,176 @@
# ការធ្វើ ដាក់បង្ហាញទិន្នន័យមានអត្ថន័យ
|![ Sketchnote ដោយ [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/13-MeaningfulViz.png)|
|:---:|
| ការដាក់បង្ហាញទិន្នន័យមានអត្ថន័យ - _Sketchnote ដោយ [@nitya](https://twitter.com/nitya)_ |
> "បើអ្នកทรมานครデータគ្រប់រយៈពេលគ្រប់យ៉ាងវានឹងសារភាពអ្វីគ្រប់យ៉ាង" -- [Ronald Coase](https://en.wikiquote.org/wiki/Ronald_Coase)
មួយក្នុងចំណាត់ថ្នាក់ជំនាញមូលដ្ឋានរបស់អ្នកវិទ្យាសាស្ត្រទិន្នន័យគឺសមត្ថភាពក្នុងការបង្កើតការដាក់បង្ហាញទិន្នន័យដែលមានអត្ថន័យជួយឆ្លើយសំណួរដែលអ្នកប្រហែលជាមាន។ មុននឹងដាក់បង្ហាញទិន្នន័យរបស់អ្នក អ្នកត្រូវប្រាកដថាវាត្រូវបានសំអាត និងរៀបចំរួចហើយ ដូចដែលអ្នកបានធ្វើនៅមេរៀនមុនៗ។ បន្ទាប់មក អ្នកអាចចាប់ផ្តើមសម្រេចចិត្តពីវិធីដ៏ល្អបំផុតក្នុងការបង្ហាញទិន្នន័យ។
នៅក្នុងមេរៀននេះ អ្នកនឹងសិក្សា៖
1. របៀបជ្រើសរើសប្រភេទផែនតារូបភាពត្រឹមត្រូវ
2. របៀបជៀសវាងការបង្ហាញខុសប្លែក
3. របៀបធ្វើការជាមួយពណ៌
4. របៀបបង្កើតរចនាបថផែនតារបស់អ្នកសម្រាប់ការអានបានងាយ
5. របៀបសាងសង់ដំណោះស្រាយផែនតារផ្សាយរូបចលនា ឬមានរូបភាព3D
6. របៀបបង្កើតការដាក់បង្ហាញបែបច្នៃប្រឌិត
## [ប.quiz មុនមេរៀន](https://ff-quizzes.netlify.app/en/ds/quiz/24)
## ជ្រើសរើសប្រភេទផែនតារូបភាពត្រឹមត្រូវ
នៅមេរៀនមុនៗ អ្នកបានសាកល្បងបង្កើតការដាក់បង្ហាញទិន្នន័យដែលគួរឱ្យចាប់អារម្មណ៏គ្រប់ប្រភេទដោយប្រើ Matplotlib និង Seaborn សម្រាប់ធ្វើផែនតា។ ជាទូទៅ អ្នកអាចជ្រើសរើស [ប្រភេទផែនតារូបភាពត្រឹមត្រូវ](https://chartio.com/learn/charts/how-to-select-a-data-vizualization/) សម្រាប់សំណួរដែលអ្នកសួរបាន ដោយប្រើតារាងនេះ៖
| អ្នកត្រូវការ: | អ្នកគួរប្រើ: |
| -------------------------- | ------------------------------ |
| បង្ហាញនិន្នាការទិន្នន័យតាមរយៈពេលវេលា | ខ្សែ |
| ប្រៀបធៀបប្រភេទ | បារ, ពាយ |
| ប្រៀបធៀបសរុប | ពាយ, បារ ដែលស្តុក |
| បង្ហាញទំនាក់ទំនង | ចំណុចរាក់ទាក់, ខ្សែ, ផ្នែក, ខ្សែទ្វេ |
| បង្ហាញចែកចាយ | ចំណុចរាក់ទាក់, ប្រវត្តិ, ប្រអប់ |
| បង្ហាញនៃសមាហរណៈ | ពាយ, ដូណាត់, វ៉ាហ្វហ្វ |
> ✅ សម្រាប់ទម្រង់តំណាងទិន្នន័យ អ្នកប្រហែលជាត្រូវបម្លែងវាពីអត្ថបទទៅលេខ ដើម្បីឲ្យផែនតារូបភាពជួយគាំទ្រវា។
## ជៀសវាងការលំលំហ
ព្រោះថាមានច្រើនវិធីដែលទិន្នន័យអាចត្រូវបានបង្ហាញដើម្បីបញ្ជាក់មតិ ឬបង្កើតតំរូវការមិនត្រឹមត្រូវ ហើយនៅពេលជាក់ស្តែងគឺធ្វើឲ្យទិន្នន័យខូច។ មាន ឧទាហរណ៍ជាច្រើននៃផែនតារូបភាព និងព័ត៌មានមិនត្រឹមត្រូវ!
[![របៀបផែនតារូបភាពក្លែងក្លាយដោយ Alberto Cairo](../../../../translated_images/km/tornado.9f42168791208f97.webp)](https://www.youtube.com/watch?v=oX74Nge8Wkw "How charts lie")
> 🎥 ចុចរូបខាងលើសម្រាប់សុន្ទរកថាស្តីពីផែនតារូបភាពមិនត្រឹមត្រូវ
ផែនតានេះប្ដូរតម្លៃអ័ក្ស X ឲ្យវិលត្រឡប់ក្នុងការបង្ហាញវាលេងផ្សេងពីការពិត ពឹងផ្អែកលើកាលបរិច្ឆេទ៖
![ផែនតាមិនល្អ 1](../../../../translated_images/km/bad-chart-1.93130f495b748bed.webp)
[ផែនតានេះ](https://media.firstcoastnews.com/assets/WTLV/images/170ae16f-4643-438f-b689-50d66ca6a8d8/170ae16f-4643-438f-b689-50d66ca6a8d8_1140x641.jpg) គ្រប់គ្រាន់លំបាកជាងនេះ ព្រោះភ្នែកត្រូវទាញទៅស្តាំដើម្បីសន្និដ្ឋានថា ទីកន្លែងផ្សេងៗមានករណី COVID កាត់បន្ថយ។ តាមពិត ប្រសិនបើអ្នកមើលកាលបរិច្ឆេទយ៉ាងហ្មត់ចត់ អ្នកនឹងឃើញថាវាត្រូវបានផ្លាស់ប្តូរជារបៀបដែលបង្កើតនិន្នាការចុះ។
![ផែនតាមិនល្អ 2](../../../../translated_images/km/bad-chart-2.c20e36dd4e6f617c.webp)
ឧទាហរណ៍ដ៏ល្បីនោះប្រើពណ៌ និងប្រែតម្លៃអ័ក្ស Y ដោយបង្ខំ៖ ជំនួសនឹងបញ្ជាក់ថាចំនួនស្លាប់ពីកាំភ្លើងកើនឡើងបន្ទាប់ពីច្បាប់រដ្ឋាភិបាលដែលគាំទ្រកាំភ្លើង តាមពិតភ្នែកត្រូវបានគួរឱ្យភ្លក់គិតថាពីព្រោះទេបង្កើតការច្រៀង។
![ផែនតាមិនល្អ 3](../../../../translated_images/km/bad-chart-3.6865d0afac4108d7.webp)
ផែនតាពិសេសនេះបង្ហាញពីរបៀបដែលអាចគ្រប់គ្រងភាគរយ ដើម្បីផលប៉ះពាល់សើចសើច៖
![ផែនតាមិនល្អ 4](../../../../translated_images/km/bad-chart-4.68cfdf4011b45447.webp)
ការប្រៀបធៀបរបស់អ្វីដែលមិនអាចប្រៀបធៀបគ្នា បានជាសកម្មភាពមួយផ្សេងទៀត។ មាន [គេហទំព័រអស្ចារ្យមួយ](https://tylervigen.com/spurious-correlations) ស្តីពី 'ការតភ្ជាប់មិនពិត' រួមបញ្ចូល 'ការពិត' ដែលភ្ជាប់ទៅនឹងអត្រាពិលនាពិលនានិងការបរិភោគផលិតផល margarine។ ក្រុម Reddit អ្នកក៏រកគ្នា [ការប្រើប្រាស់មិនស្អាត](https://www.reddit.com/r/dataisugly/top/?t=all) នៃទិន្នន័យផងដែរ។
សំខាន់ក្នុងការយល់ថាការភ្នែកុមភ្លេចដោយផែនតាគំនូរបន្លំនោះយ៉ាងងាយស្រួល។ ទោះបីជាគោលបំណងរបស់អ្នកវិទ្យាសាស្ត្រទិន្នន័យល្អ ក៏សំណួរជ្រើសរើសបែបផែនតាល្អមិនបាន ក៏អាចបង្កើតចំនុចច្របូកច្របល់។
## ពណ៌
អ្នកបានឃើញនៅក្នុងផែនតា 'ហិង្សាអាវុធនៅ Florida' ខាងលើថាពណ៌អាចផ្តល់ស្រទាប់ន័យបន្ថែមសម្រាប់ផែនតា ជាពិសេសដែលមិនបានរចនាគ្រប់គ្រងដោយបណ្ណាល័យដូចជា Matplotlib និង Seaborn ដែលមានបណ្ណាល័យពណ៌ និងពណ៌ភ្លឺដែលត្រូវបានត្រួតពិនិត្យ។ ប្រសិនបើអ្នកបង្កើតផែនតាដោយដៃ សូមសិក្សាថ្នាក់ [ទ្រឹស្តីពណ៌](https://colormatters.com/color-and-design/basic-color-theory)
> ✅ ត្រូវមានការយកចិត្តទុកដាក់ ពេលរចនាផែនតា អំពីការចូលដំណើរការអ្នកប្រើប្រាស់ ជាជំងឺមួយក្នុងការបង្ហាញ។ មនុស្សខ្លះអាចមានជំងឺភ្នែកមិនឃើញពណ៌ - តើផែនតារបស់អ្នកបង្ហាញល្អសម្រាប់អ្នកមានបញ្ហាជំនួសការមើល?
ប្រុងប្រយ័ត្នពេលជ្រើសរើសពណ៌សម្រាប់ផែនតារបស់អ្នក ព្រោះពណ៌អាចផ្ដល់ន័យដែលអ្នកមិនចង់ដូច។ 'ស្រីសោភា' ក្នុងផែនតា 'កម្ពស់' ខាងលើ ផ្ដល់ន័យផ្លូវភេទ ស្រី ដែលបន្ថែមភាពអស្ចារ្យនៃផែនតា។
ក្នុងពិភពលោក ខួបផែនពណ៌ អាចខុសគ្នា និយាយតាមតំបន់ និងផ្លាស់ប្តូរន័យរបស់ពណ៌តាមបំណែករលោងរបស់វា។ ជាទូទៅ ន័យពណ៌រួមមាន:
| ពណ៌ | ន័យ |
| -------- | ------------------------- |
| ក្រហម | ពលកម្ម |
| ខៀវ | ការជឿទុកចិត្ត, ឧស្សាហិរណ៍ |
| លឿង | សេចក្តីសុខ, ការប្រុងប្រយ័ត្ន |
| បៃតង | អេកូឡូជី, ជោគជ័យ, ការជ្រួលជ្រេរ |
| ទឹកក្រូច | សេចក្តីរីករាយ |
| ពណ៌ទឹកក្រូច | ការរីករាយ |
បើអ្នកត្រូវបង្កើតផែនតាដោយពណ៌ផ្ទាល់ខ្លួន សូមប្រាកដថាផែនតារបស់អ្នកអាចចូលដំណើរការបាន និងពណ៌ដែលអ្នកជ្រើសបានផ្គូរផ្គងទៅនឹងន័យដែលអ្នកចង់បង្ហាញ។
## រៀបចំបំពាក់ផែនតារបស់អ្នកសម្រាប់ការអានបានងាយ
ផែនតាមិនមានអត្ថន័យទេ ប្រសិនបើវាមិនអានបាន! ចំណាយពេលបន្តិចក្នុងការយកចិត្តទុកដាក់លើការរៀបចំទំហំទទឹងនិងកម្ពស់ផែនតារបស់អ្នកឲ្យសមរម្យជាមួយទិន្នន័យរបស់អ្នក។ ប្រសិនបើខ្លឹមសារមួយ (ដូចជា រដ្ឋទាំង ៥០) ត្រូវបង្ហាញ សូមបង្ហាញវាឲ្យឈរ បង្ហាញនៅអ័ក្ស Y បើអាច ដើម្បីជៀសវាងការច្រាសដំណើរការ horizontally ។
សរសេរឈ្មោះអ័ក្ស រួមបញ្ចូលជូនសញ្ញាសម្គាល់ប្រសិនបើត្រូវការ ហើយផ្តល់ឧបករណ៍សម្រាប់ពណ៌នាទិន្នន័យឲ្យច្បាស់ល្អ។
ប្រសិនបើទិន្នន័យរបស់អ្នកជាអត្ថបទវែងលើអ័ក្ស X អ្នកអាចបត់អត្ថបទសម្រាប់អានបានល្អឡើង។ [Matplotlib](https://matplotlib.org/stable/tutorials/toolkits/mplot3d.html) ផ្ដល់ជូនការគូរផែនតា3D ប្រសិនបើទិន្នន័យរបស់អ្នកគាំទ្រ។ ការដាក់បង្ហាញទិន្នន័យមានផាសុខភាពអាចបង្កើតបានដោយប្រើ `mpl_toolkits.mplot3d`
![ផែនតា3d](../../../../translated_images/km/3d.0cec12bcc60f0ce7.webp)
## ផ្សាយរូបចលនា និងផែនតា3D
ខ្លះនៃការដាក់បង្ហាញទិន្នន័យល្អបំផុតសព្វថ្ងៃគឺមានរូបចលនា។ Shirley Wu មានផែនតាល្អៗដែលបង្កើតជាមួយ D3 ដូចជា '[ផ្កាភ្នំពេញ](http://bl.ocks.org/sxywu/raw/d612c6c653fb8b4d7ff3d422be164a5d/)' ដែលផ្កាផ្សេងៗគ្នារបស់មួយៗពាក់ព័ន្ធទៅនឹងភាពយន្តមួយ។ ឧទាហរណ៍ផ្សេងទៀតសម្រាប់រុក្ខជាតិ Guardian គឺ 'bussed out' ដែលជាបទពិសោធន៍អន្តរកម្មផ្ដល់បទពិសោធន៍បង្ហាញរូបភាពជារួមជាមួយ Greensock និង D3 បូកជាមួយអត្ថបទ scrollytelling ដើម្បីបង្ហាញពីរបៀប NYC គ្រប់គ្រងបញ្ហាឧត្តមភាពដោយបញ្ជូនមនុស្សជាពលរដ្ឋក្រៅទីក្រុង។
![ការដឹកជញ្ជូន](../../../../translated_images/km/busing.7b9e3b41cd4b981c.webp)
> "Bussed Out: ម៉ាយ៉ាងអាមេរិកាដឹកនាំមនុស្សគ្មានលំនៅដ្ឋានរបស់ខ្លួន" ពី [the Guardian](https://www.theguardian.com/us-news/ng-interactive/2017/dec/20/bussed-out-america-moves-homeless-people-country-study)។ បង្ហាញរូបភាពដោយ Nadieh Bremer & Shirley Wu
នៅពេលនេះមេរៀនមិនគ្រប់គ្រាន់សម្រាប់បង្រៀនជម្រៅអំពីបណ្ណាល័យដាក់បង្ហាញរូបភាពមានសក្ដានុពលទាំងនេះទេ។ សូមសាកល្បងប្រើ D3 ក្នុងកម្មវិធី Vue.js ដោយប្រើបណ្ណាល័យដើម្បីបង្ហាញ visualisation របស់សៀវភៅ "Dangerous Liaisons" ជាបណ្ដាញសង្គមរូបចលនា។
> "Les Liaisons Dangereuses" គឺជារឿងរ៉ាវលិខិត នៅក្នុងកន្លែងជាបណ្ដារនៃលិខិត។ សរសេរឡើងនៅឆ្នាំ ១៧៨២ ដោយ Choderlos de Laclos វាបាននិយាយពីរឿងរ៉ាវនៃការគារតកម្មសង្គមផ្សេងគ្នារបស់អ្នកចម្បងពីរនាក់នៃថ្នាក់អាណាចក្របារាំងនាពេលចុងសតវត្សទី ១៨ គឺ Vicomte de Valmont និង Marquise de Merteuil។ ទាំងពីរបញ្ចប់ជាពួកខាន ដោយមានការខូចខាតសង្គមធ្ងន់ធ្ងរ។ រឿងរ៉ាវបង្ហាញជា បណ្ដារបស់លិខិតចំនួនជូនមនុស្សផ្សេងៗក្នុងជុំវិញពួកគេ ដែលគំរោងសម្រាប់បន្លំឬធ្វើបញ្ហា។ បង្កើតការបង្ហាញរូបភាពនៃលិខិតទាំងនេះដើម្បីរកឃើញអ្នកសំខាន់ក្នុងរឿងយ៉ាងច្រើន គិតតាមរូបភាព។
អ្នកនឹងបញ្ចប់កម្មវិធីបណ្ដាញមួយដែលបង្ហាញចំណុចបណ្ដាញសង្គមដែលមានរូបចលនា។ វាប្រើបណ្ណាល័យមួយដែលត្រូវបានបង្កើតសម្រាប់បង្កើត [រូបបណ្ដាញមួយ](https://github.com/emiliorizzo/vue-d3-network) ដោយប្រើ Vue.js និង D3។ នៅពេលកម្មវិធីដំណើរការ អ្នកអាចរុញចំណុចនៅលើអេក្រង់ដើម្បីបញ្ច្រាសទិន្នន័យ។
![liaisons](../../../../translated_images/km/liaisons.7b440b28f6d07ea4.webp)
## គម្រោង៖ បង្កើតផែនតាដើម្បីបង្ហាញបណ្ដាញដោយប្រើ D3.js
> ថតមេរៀននេះរួមបញ្ចូលថត `solution` ដែលអ្នកអាចរកមើលគំរូគម្រោងរួចហើយ សម្រាប់យោង។
1. អនុវត្តតាមសេចក្ដីណែនាំក្នុងឯកសារ README.md នៅក្នុងថត starter។ ប្រាកដថាអ្នកមាន NPM និង Node.js ដំណើរការលើម៉ាស៊ីនរបស់អ្នក មុនពេលដំឡើងផ្នែកអង្កេតរបស់គម្រោង។
2. បើកថត `starter/src`។ អ្នកនឹងរកឃើញថត `assets` ដែលមានឯកសារ .json ដែលផ្ទុកលិខិតទាំងអស់ពីរឿង ខណៈសម្គាល់លេខ និង 'to' និង 'from'។
3. បញ្ចប់កូដនៅក្នុង `components/Nodes.vue` ដើម្បីអនុញ្ញាតឲ្យបង្ហាញ។ ស្វែងរកមុខងារ `createLinks()` ហើយបន្ថែម loop ស្វៃស្វាយខាងក្រោម។
រុញតាមអ្វីដែលមានក្នុង .json ដើម្បីយក 'to' និង 'from' សម្រាប់លិខិត ហើយកសាង `links` ដើម្បីបណ្ណាល័យបង្ហាញអាចប្រើប្រាស់វា៖
```javascript
//គូរ​លើតួ​អក្សរ
let f = 0;
let t = 0;
for (var i = 0; i < letters.length; i++) {
for (var j = 0; j < characters.length; j++) {
if (characters[j] == letters[i].from) {
f = j;
}
if (characters[j] == letters[i].to) {
t = j;
}
}
this.links.push({ sid: f, tid: t });
}
```
រត់កម្មវិធីរបស់អ្នកពី terminal (npm run serve) ហើយរីករាយជាមួយការបង្ហាញ!
## 🚀 ការប្រកួតប្រជែង
ធ្វើដំណើរជុំវិញអ៊ីនធឺណិតដើម្បីរកការបង្ហាញរូបភាពបន្លំ។ តើអ្នកនិពន្ធបន្លំអ្នកប្រើ បើសិនជាជាសំណើរមែនទេ? សាកល្បងកែប្រែការបង្ហាញ ដើម្បីបង្ហាញវាឲ្យបានត្រឹមត្រូវ។
## [ប.quiz បន្ទាប់មេរៀន](https://ff-quizzes.netlify.app/en/ds/quiz/25)
## សិក្សាពិនិត្យឡើងវិញ និងរៀនដាច់ដោយខ្លួនឯង
នេះជាបទความមួយចំនួនសម្រាប់អានអំពីការបង្ហាញទិន្នន័យបន្លំ៖
https://gizmodo.com/how-to-lie-with-data-visualization-1563576606
http://ixd.prattsi.org/2017/12/visual-lies-usability-in-deceptive-data-visualizations/
មើលការបង្ហាញផែនតាដែលគួរឱ្យចាប់អារម្មណ៍សម្រាប់ទ្រព្យសម្បត្តិ និងគ្រឿងអលង្ការ ប្រវត្តិសាស្ត្រ៖
https://handbook.pubpub.org/
មើលអត្ថបទនេះអំពីរបៀបដែលរូបចលនាអាចបង្កើនការដាក់បង្ហាញរបស់អ្នក៖
https://medium.com/@EvanSinar/use-animation-to-supercharge-data-visualization-cd905a882ad4
## កិច្ចការ
[បង្កើតការបង្ហាញផ្ទាល់ខ្លួនរបស់អ្នក](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការបដិសេធ**៖
ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ក្រៅពីការតស៊ូមតិដើម្បីទទួលបានភាពត្រឹមត្រូវ សូមដឹងថាការបកប្រែដោយស្វ័យប្រវត្តិក្នុងឯកសារនេះអាចមានកំហុស ឬ ភាពមិនត្រឹមត្រូវ។ ឯកសារដើមក្នុងភាសាតិចតាំងដើមគួរត្រូវបានគេយកជាតំណាងឯកសារដែលមានអំណាចខ្លាំងបំផុត។ សម្រាប់ព័ត៌មានសំខាន់ៗ យើងសូមណែនាំឱ្យប្រើការបកប្រែដោយអ្នកជំនាញមនុស្ស។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬ ការបកប្រែខុសពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,18 @@
# បង្កើតការមើលឃើញផ្ទាល់ខ្លួនរបស់អ្នក
## ជំហានបង្រៀន
ប្រើឧទាហរណ៍កូដក្នុងគម្រោងនេះដើម្បីបង្កើតបណ្តាញសង្គម មើលទិន្នន័យគំនិតរបស់អ្នកអំពីអន្តរកម្មសង្គមរបស់អ្នក។ អ្នកអាចផែនទីការប្រើប្រាស់បណ្តាញសង្គមរបស់អ្នក ឬបង្កើតគោលវិធីនៃសមាជិកគ្រួសាររបស់អ្នក។ បង្កើតកម្មវិធីវេបដែលមានចំណាប់អារម្មណ៍ដែលបង្ហាញការមើលឃើញឯកសារផ្ទាល់ខ្លួនមួយនៃបណ្តាញសង្គម។
## គោលការណ៍វាយតម្លៃ
ល្អឥតខ្ចោះ | គ្រប់គ្រាន់ | ត្រូវការកែលម្អ
--- | --- | -- |
Repo GitHub មានកូដដំនើរការល្អ (សាកល្បងដាក់វាជាកម្មវិធីវេបស្ថិតស្ថេរ) ហើយមាន README ពន្យល់ព្រំប្រទាលគម្រោង | Repo មិនដំណើរការល្អ ឬមិនមានឯកសារពន្យល់ល្អ | Repo មិនដំណើរការល្អ និងមិនមានឯកសារពន្យល់ល្អ
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការបដិសេធ**៖
ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ប៉ុន្ដែទោះយើងខិតខំរកសុចរិតភាព ក៏សូមគោរពថាការបកប្រែដោយស្វ័យប្រវត្តិក៏អាចមានកំហុស ឬភាពមិនត្រឹមត្រូវ។ ឯកសារដើមនៅភាសាមូលដ្ឋានរបស់វាគួរត្រូវបានគិតថាជា​ប្រភព​ផ្លូវការ។ សម្រាប់ព័ត៌មានសំខាន់ៗ សូមផ្ដល់អនុសាសន៍ឱ្យប្រើការបកប្រែដោយអ្នកជំនាញមនុស្ស។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកប្រែចំពោះភាពមិនត្រឹមត្រូវដែលកើតមានពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,33 @@
# Dangerous Liaisons គម្រោងការមើលទិន្នន័យ
ដើម្បីចាប់ផ្តើម អ្នកត្រូវតែធានាថា អ្នកមាន NPM និង Node រត់នៅលើកុំព្យូទ័ររបស់អ្នក។ តម្លើងការគាំទ្រ (npm install) ហើយបន្ទាប់មករត់គម្រោងនៅក្នុងម៉ាស៊ីននៅក្នុងតំបន់ក្នុង (npm run serve):
## ការតំឡើងគម្រោង
```
npm install
```
### បកស្រាយ និងបញ្ចូលឡើងវិញសម្រាប់ការអភិវឌ្ឍន៍
```
npm run serve
```
### បកស្រាយ និងបង្រួមចំណុចសម្រាប់ផលិតកម្ម
```
npm run build
```
### ពិនិត្យ និងកែសម្រួលឯកសារ
```
npm run lint
```
### កំណត់រចនាសម្ព័ន្ធផ្ទាល់ខ្លួន
មើល [ការបញ្ជាក់រចនាសម្ព័ន្ធ](https://cli.vuejs.org/config/)。
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការដោះស្រាយចិត្ត**៖
ឯកសារនេះត្រូវបានបកប្រែដោយការបំពេញការងារបកប្រែដោយ AI តាមសេវាកម្ម [Co-op Translator](https://github.com/Azure/co-op-translator)។ ដោយយើងព្យាយាមឲ្យបានត្រឹមត្រូវបំផុត សូមយល់ដឹងថាការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុស ឬអាំងចិត្ដខុសបាន។ ឯកសារដើមនៅក្នុងភាសាទីដើមគួរត្រូវបានចាត់ទុកថាជាតំណាងដ៏ត្រឹមត្រូវ។ សម្រាប់ព័ត៌មានសំខាន់ៗ គួរត្រូវបានបកប្រែដោយអ្នកជំនាញមនុស្ស។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកអត្ថន័យខុសពាក់ព័ន្ធនឹងការប្រើប្រាស់ការបកប្រែនេះទេ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,33 @@
# គម្រោងការតាក់តែងទិន្នន័យ Dangerous Liaisons
ដើម្បីចាប់ផ្តើម អ្នកត្រូវប្រាកដថា អ្នកមាន NPM និង Node កំពុងរត់លើម៉ាស៊ីនរបស់អ្នក។ ធ្វើការតម្លើងអាស្រ័យភាព (npm install) បន្ទាប់មករត់គម្រោងនៅក្នុងកន្លែងស្រុក (npm run serve):
## ការតម្លើងគម្រោង
```
npm install
```
### កូដបញ្ចូល និងបញ្ចូលឡើងវិញសម្រាប់ការអភិវឌ្ឍ
```
npm run serve
```
### កូដបញ្ចូល និងបង្រួមសម្រាប់ការផលិត
```
npm run build
```
### ពិនិត្យកូដ និងកែតម្រូវឯកសារ
```
npm run lint
```
### កំណត់រចនាសម្ព័ន្ធផ្ទាល់ខ្លួន
មើល [Configuration Reference](https://cli.vuejs.org/config/).
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការបដិសេធ**៖
ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាផ្លាស់ប្ដូរភាសា AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលដែលយើងខិតខំប្រឹងប្រែងសម្រាប់ភាពត្រឹមត្រូវ សូមយល់ថាការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុស ឬភាពមិនត្រឹមត្រូវ។ ឯកសារដើមជាភាសាពុទ្ធសម្រាប់ត្រូវបានគេចាត់ទុកជាដើមទិន្នន័យដែលមានន័យអំណាច។ សម្រាប់ព័ត៌មានសំខាន់ៗ សូមផ្ដល់អនុសាសន៍ឱ្យមានការបកប្រែដោយអ្នកជំនាញមនុស្ស។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកប្រែខុសដែលកើតមានពីការប្រើប្រាស់ការបកប្រែនេះទេ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,227 @@
# ការមើលឃើញបរិមាណ
|![ Sketchnote ការងារដោយ [(@sketchthedocs)](https://sketchthedocs.dev) ](https://github.com/microsoft/Data-Science-For-Beginners/blob/main/sketchnotes/09-Visualizing-Quantities.png)|
|:---:|
| ការមើលឃើញបរិមាណ - _Sketchnote ដោយ [@nitya](https://twitter.com/nitya)_ |
នៅក្នុងមេរៀននេះ អ្នកនឹងស្វែងយល់ពីរបៀបប្រើប្រាស់កញ្ចប់បណ្ណាល័យ R ច្រើនដែលមានស្រាប់ ដើម្បីរៀនពីរបៀបបង្កើតការមើលឃើញដ៏គួរឱ្យចាប់អារម្មណ៍ជុំវិញមូលដ្ឋាននៃមាត្រដ្ឋានបរិមាណ។ ដោយប្រើសំណុំទិន្នន័យបានសំអាតអំពីបក្សីក្នុងរដ្ឋ Minnesota អ្នកអាចរៀនព័ត៌មានច្រើនគួរឱ្យចាប់អារម្មណ៍អំពីសត្វព្រៃក្នុងតំបន់។
## [តេស្តមុនមេរៀន](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/16)
## សង្កេត wingspan ជាមួយ ggplot2
បណ្ណាល័យល្អបំផុតមួយសម្រាប់បង្កើតគំនូស និងតារាងសាមញ្ញក៏ដូចជាស្មុគស្មាញមានប្រភេទផ្សេងៗគ្នា គឺ [ggplot2](https://cran.r-project.org/web/packages/ggplot2/index.html)។ ជាទូទៅ ការបង្កើតគំនូសជាមួយបណ្ណាល័យទាំងនេះរួមមាន ការបញ្ជាក់ពីផ្នែកនៃទិន្នន័យដែលអ្នកចង់ចំណេញ ការប្រតិបត្តិការបំលែងលើទិន្នន័យតាមតម្រូវការ ការបែងចែកតម្លៃអ័ក្ស x និង y ការជ្រើសរើសប្រភេទគំនូសដែលចង់បង្ហាញ ហើយបង្ហាញគំនូស។
`ggplot2` គឺជារបៀបសម្រាប់បង្កើតក្រាហ្វិកដោយប្រកាសដោយផ្អែកលើ The Grammar of Graphics។ The [Grammar of Graphics](https://en.wikipedia.org/wiki/Ggplot2) គឺជារៀបចំទូទៅមួយសម្រាប់ការមើលឃើញទិន្នន័យដែលបំបែកក្រាហ្វិកទៅជាផ្នែកសម័យផ្សេងៗដូចជាជម្រក និងស្រទាប់។ ផ្សេងទៀត ការងាយស្រួលក្នុងការបង្កើតគំនូស និងក្រាហ្វិកសម្រាប់ទិន្នន័យមួយឬច្រើនជាមួយកូដតិចបំផុតធ្វើឲ្យ `ggplot2` ជាកញ្ចប់ដែលពេញនិយមបំផុតសម្រាប់ការមើលឃើញទិន្នន័យក្នុង R ។ អ្នកប្រើប្រាស់ប្រាប់ `ggplot2` ដើម្បីផ្គូផ្គងអថេរ ទៅកាន់អេស្ថេតិក គំនូសក្រាហ្វិកត្រូវប្រើ ហើយ `ggplot2` នឹងថែរក្សាផ្នែកនៅសល់។
> ✅ គំនូស = ទិន្នន័យ + អេស្ថេតិក + រូបវិទ្យា
> - ទិន្នន័យឈ្មោះដល់សំណុំទិន្នន័យ
> - អេស្ថេតិក ប្រាប់ពីអថេរដែលត្រូវសិក្សា (អ័ក្ស x និង y)
> - រូបវិទ្យា ជាប្រភេទនៃគំនូស (គំនូសបន្ទាត់, គំនូសបារ, ល។)
ជ្រើសរើសរូបវិទ្យាដែលល្អបំផុត (ប្រភេទគំនូស) នៅតាមទិន្នន័យរបស់អ្នក និងរឿងដែលអ្នកចង់ប្រាប់តាមរយៈគំនូស។
> - ដើម្បីវិភាគនិន្នាការ៖ បន្ទាត់, ជួរឈរ
> - ដើម្បីប្រៀបធៀបតម្លៃ៖ បារ, ជួរឈរ, ផ្គុំផែនទី, គំនូសចែកចាយចុចចំលើយ
> - ដើម្បីបង្ហាញរបៀបផ្នែកជាប់នឹងទីបំផុត៖ ផ្គុំផែនទី
> - ដើម្បីបង្ហាញការបែងចែកទិន្នន័យ៖ គំនូសចែកចាយចុចចំលើយ, បារ
> - ដើម្បីបង្ហាញទំនាក់ទំនងរវាងតម្លៃ៖ បន្ទាត់, គំនូសចែកចាយចុចចំលើយ, គំនូសរំញ័រ
✅ អ្នកអាចពិនិត្យមើល [cheatsheet ពណ៌នានេះ](https://nyu-cdsc.github.io/learningr/assets/data-visualization-2.1.pdf) សម្រាប់ ggplot2។
## បង្កើតគំនូសបន្ទាត់អំពីតម្លៃ wingspan របស់បក្សី
បើករបាយការណ៍ R និងនាំចូលសំណុំទិន្នន័យ។
> ចំណាំ៖ សំណុំទិន្នន័យត្រូវរក្សាទុកនៅថតគោលនៃប្រភពនេះក្នុងថត `/data`
យើងនាំចូលសំណុំទិន្នន័យ ហើយសង្កេតមើលក្បាល (5ជួរដេកលើសម្រាប់ទិន្នន័យ)។
```r
birds <- read.csv("../../data/birds.csv",fileEncoding="UTF-8-BOM")
head(birds)
```
ក្បាលទិន្នន័យមានការលាយបញ្ចូលរវាងអក្សរនិងលេខ៖
| | ឈ្មោះ | ឈ្មោះវិទ្យាសាស្ត្រ | ប្រភេទ | លំដាប់ | គ្រួសារ | និយមន័យ | ស្ថានភាពការការពារ | ប្រវែងតិចបំផុត | ប្រវែងធំបំផុត | ទំងន់រាងកាយតិចបំផុត | ទំងន់រាងកាយធំបំផុត | Wingspan តិចបំផុត | Wingspan ធំបំផុត |
| ---: | :--------------------------- | :--------------------- | :-------------------- | :----------- | :------- | :---------- | :----------------- | --------: | --------: | ----------: | ----------: | ----------: | ----------: |
| 0 | ក្មេងទន្សាយខ្មៅ-ខ្លា | Dendrocygna autumnalis | ទូតទេរ/ទេស្ដ/ទឹកសម្រាប់ | Anseriformes | Anatidae | Dendrocygna | LC | 47 | 56 | 652 | 1020 | 76 | 94 |
| 1 | ក្មេងទន្សាយលឿង | Dendrocygna bicolor | ទូតទេរ/ទេស្ដ/ទឹកសម្រាប់ | Anseriformes | Anatidae | Dendrocygna | LC | 45 | 53 | 712 | 1050 | 85 | 93 |
| 2 | ទន្សាយពណ៌ស | Anser caerulescens | ទូតទេរ/ទេស្ដ/ទឹកសម្រាប់ | Anseriformes | Anatidae | Anser | LC | 64 | 79 | 2050 | 4050 | 135 | 165 |
| 3 | ទន្សាយរ៉ូស | Anser rossii | ទូតទេរ/ទេស្ដ/ទឹកសម្រាប់ | Anseriformes | Anatidae | Anser | LC | 57.3 | 64 | 1066 | 1567 | 113 | 116 |
| 4 | ទន្សាយសន្និបាតធំ | Anser albifrons | ទូតទេរ/ទេស្ដ/ទឹកសម្រាប់ | Anseriformes | Anatidae | Anser | LC | 64 | 81 | 1930 | 3310 | 130 | 165 |
ចាប់ផ្តើមដោយបង្កើតគំនូសខ្លះៗនៃទិន្នន័យលេខដោយគំនូសបន្ទាត់មូលដ្ឋាន។ សន្មត់ថាអ្នកចង់មើលទិសដៅពី wingspan ខ្ពស់បំផុតសម្រាប់បក្សីទាំងនេះ។
```r
install.packages("ggplot2")
library("ggplot2")
ggplot(data=birds, aes(x=Name, y=MaxWingspan,group=1)) +
geom_line()
```
នៅទីនេះ អ្នកដំឡើងកញ្ចប់ `ggplot2` ហើយនាំចូលវាទៅកាន់ផ្ទៃការងារ ដោយប្រើពាក្យបញ្ជា `library("ggplot2")`។ ដើម្បីគូសគំនូសណាមួយក្នុង ggplot អ្នកប្រើមុខងារ `ggplot()` ហើយបញ្ជាក់សំណុំទិន្នន័យ អ័ក្ស x, y ជាទ្រព្យសម្បត្តិ។ ក្នុងករណីនេះ យើងប្រើមុខងារ `geom_line()` ពីព្រោះមានគោលដៅបង្ហាញគំនូសបន្ទាត់។
![MaxWingspan-lineplot](../../../../../translated_images/km/MaxWingspan-lineplot.b12169f99d26fdd2.webp)
តើអ្នកចាប់អារម្មណ៍អ្វីភ្លាមៗ? មានប្រហែលករណីចេញក្រៅអង្គការ ១ករណីមួយណាមួយ - នោះគឺ wingspan ធំបំផុតខ្លាំងណាស់! wingspan 2000+ សង់ទីម៉ែត្រ មានប្រវែងលើស 20 ម៉ែត្រហើយដែរ - តើមាន Pterodactyls ឡើងដើរនៅ Minnesota? មកវិភាគច្បាស់។
ក្នុងខណៈដែលអ្នកអាចធ្វើការតម្រៀបក្នុង Excel ដើម្បីរកករណីចេញក្រៅ មួយនេះដែលប្រហែលជាការខុសត្រូវបានវាយតម្លៃ បន្តដំណើរការមើលឃើញដោយធ្វើការងាយក្នុងគំនូស។
បញ្ចូលស្លាកទៅអ័ក្ស x ដើម្បីបង្ហាញថាបក្សីណាខ្លះខ្លះត្រូវបានពិចារណា៖
```r
ggplot(data=birds, aes(x=Name, y=MaxWingspan,group=1)) +
geom_line() +
theme(axis.text.x = element_text(angle = 45, hjust=1))+
xlab("Birds") +
ylab("Wingspan (CM)") +
ggtitle("Max Wingspan in Centimeters")
```
យើងបញ្ជាក់មុំក្នុង `theme` ហើយបញ្ជាក់ស្លាកអ័ក្ស x និង y ជាផ្ទាំងស្លាកក្នុង `xlab()` និង `ylab()` តាមលំដាប់។ `ggtitle()` ផ្តល់ឈ្មោះដល់ក្រាហ្វ/គំនូស។
![MaxWingspan-lineplot-improved](../../../../../translated_images/km/MaxWingspan-lineplot-improved.04b73b4d5a59552a.webp)
ទោះបីជាបានបង្វិលស្លាកទៅ 45 ដឺក្រេ ក៏ប៉ុន្តែមានច្រើនពេកដើម្បីអាន។ តោះសាកល្បងយុទ្ធសាស្រ្តផ្សេង៖ ស្លាកមានតែចេញក្រៅប៉ុណ្ណោះ ហើយកំណត់ស្លាកនៅក្នុងតារាង។ អ្នកអាចប្រើគំនូសចែកចាយចុចចំលើយដើម្បីធ្វើផ្លូវសម្រាប់ស្លាកជា​ច្រើន៖
```r
ggplot(data=birds, aes(x=Name, y=MaxWingspan,group=1)) +
geom_point() +
geom_text(aes(label=ifelse(MaxWingspan>500,as.character(Name),'')),hjust=0,vjust=0) +
theme(axis.title.x=element_blank(), axis.text.x=element_blank(), axis.ticks.x=element_blank())
ylab("Wingspan (CM)") +
ggtitle("Max Wingspan in Centimeters") +
```
តើមានអ្វីកើតឡើងនៅទីនេះ? អ្នកប្រើមុខងារ `geom_point()` ដើម្បីគូសចំណុចចែកចាយ។ តាមនេះ អ្នកបានបន្ថែមស្លាកសម្រាប់បក្សីដែលមាន `MaxWingspan > 500` ហើយលាក់ស្លាកនៅអ័ក្ស x ដើម្បីអោយគំនូសស្អាតក្នុងវិស័យតូចម្ដង។
តើអ្នករកឃើញអ្វី?
![MaxWingspan-scatterplot](../../../../../translated_images/km/MaxWingspan-scatterplot.60dc9e0e19d32700.webp)
## កែលម្អទិន្នន័យរបស់អ្នក
ទាំង Bald Eagle និង Prairie Falcon ទោះបីជាបង្ហាញថា ត្រូវបង្កើនតម្លៃតែម្ដង ទោះបីវាលំបាកប៉ុន្តែក៏មានទីតាំងត្រឹមត្រូវ ដែលមានការបន្ថែម 0 មួយទៀតទៅក្នុង wingspan សំខាន់របស់ពួកវា។ មិនសូវមានសង្ឃឹមថាអ្នកនឹងជួប Bald Eagle ដែលមាន wingspan 25 ម៉ែត្រ, ប៉ុន្តែប្រសិនបើមាន សូមប្រាប់យើង! តោះបង្កើត dataframe ថ្មីដែលមិនមានករណីចេញក្រៅទាំងពីរ៖
```r
birds_filtered <- subset(birds, MaxWingspan < 500)
ggplot(data=birds_filtered, aes(x=Name, y=MaxWingspan,group=1)) +
geom_point() +
ylab("Wingspan (CM)") +
xlab("Birds") +
ggtitle("Max Wingspan in Centimeters") +
geom_text(aes(label=ifelse(MaxWingspan>500,as.character(Name),'')),hjust=0,vjust=0) +
theme(axis.text.x=element_blank(), axis.ticks.x=element_blank())
```
យើងបានបង្កើត dataframe ថ្មី `birds_filtered` ហើយក៏គូសគំនូសចែកចាយចុចចំលើយមួយ។ ដោយច្រោះចេញពីករណីចេញក្រៅ ទិន្នន័យរបស់អ្នកឥឡូវនេះមានភាពសន្តិសុខ និងយល់បានល្អ។
![MaxWingspan-scatterplot-improved](../../../../../translated_images/km/MaxWingspan-scatterplot-improved.7d0af81658c65f3e.webp)
ឥឡូវនេះដែលយើងមានសំណុំទិន្នន័យបានសម្អាតយ៉ាងហោចណាស់ក្នុងវិស័យ wingspan យើងមកស្វែងយល់បន្ថែមអំពីបក្សីទាំងនេះ។
ក្នុងខណៈដែលគំនូសបន្ទាត់ និងគំនូសចែកចាយចុចចំលើយអាចបង្ហាញព័ត៌មានអំពីតម្លៃទិន្នន័យ និងការបែងចែកទិន្នន័យ ប៉ុន្តែយើងចង់គិតអំពីតម្លៃដែលស្ថិតក្នុងសំណុំទិន្នន័យនេះ។ អ្នកអាចបង្កើតការមើលឃើញដើម្បីឆ្លើយសំណួរខាងក្រោមអំពីបរិមាណ៖
> តើមានប៉ុន្មានប្រភេទបក្សី ហើយតើមានចំនួនប៉ុន្មាន?
> តើមានប៉ុន្មានបក្សីបានបាត់បង់, មានគ្រោះថ្នាក់, មានកំណត់ត្រាច្រើន, ឬធម្មតា?
> តើមានប៉ុន្មាននៃក្រុម genus និងលំដាប់នៅក្នុងប្រព័ន្ធ Linnaeus?
## សិក្សា គំនូសបារ
គំនូសបារ អាចប្រើបានយ៉ាងមានប្រយោជន៍នៅពេលដែលអ្នកត្រូវបង្ហាញក្រុមទិន្នន័យ។ តោះស្រាវជ្រាវប្រភេទបក្សីដែលមាននៅក្នុងសំណុំទិន្នន័យនេះ ដើម្បីមើលថាតើប្រភេទណាគឺពេញនិយមបំផុតតាមចំនួន។
តោះបង្កើតគំនូសបារ លើទិន្នន័យបានច្រោះចេញ។
```r
install.packages("dplyr")
install.packages("tidyverse")
library(lubridate)
library(scales)
library(dplyr)
library(ggplot2)
library(tidyverse)
birds_filtered %>% group_by(Category) %>%
summarise(n=n(),
MinLength = mean(MinLength),
MaxLength = mean(MaxLength),
MinBodyMass = mean(MinBodyMass),
MaxBodyMass = mean(MaxBodyMass),
MinWingspan=mean(MinWingspan),
MaxWingspan=mean(MaxWingspan)) %>%
gather("key", "value", - c(Category, n)) %>%
ggplot(aes(x = Category, y = value, group = key, fill = key)) +
geom_bar(stat = "identity") +
scale_fill_manual(values = c("#D62728", "#FF7F0E", "#8C564B","#2CA02C", "#1F77B4", "#9467BD")) +
xlab("Category")+ggtitle("Birds of Minnesota")
```
ក្នុងខ័ណ្ឌនេះ យើងដំឡើងកញ្ចប់ [dplyr](https://www.rdocumentation.org/packages/dplyr/versions/0.7.8) និង [lubridate](https://www.rdocumentation.org/packages/lubridate/versions/1.8.0) ដើម្បីជួយដោះស្រាយ និងចែកចាយទិន្នន័យសម្រាប់គំនូសបារ stacked។ ជាលើកដំបូង អ្នកចែកក្រុមទិន្នន័យតាម `Category` នៃបក្សី ហើយបន្តស្សារតាមជួរឈរ `MinLength`, `MaxLength`, `MinBodyMass`, `MaxdyMass`, `MinWingspan`, `MaxWingspan`។ បន្ទាប់មក គូសគំនូសបារប្រើកញ្ចប់ `ggplot2` ហើយបញ្ជាក់ពណ៌សម្រាប់ប្រភេទផ្សេងៗនៃបក្សី និងស្លាក។
![Stacked bar chart](../../../../../translated_images/km/stacked-bar-chart.0c92264e89da7b39.webp)
គំនូសបារនេះ មិនអាចអានបានទេ ព្រោះមានទិន្នន័យមិនបានចែកក្រុមច្រើនពេក។ អ្នកត្រូវជ្រើសទិន្នន័យដែលចង់គូសប៉ុណ្ណោះ ដូច្នេះមកមើលប្រវែងនៃបក្សីដាក់លើមូលដ្ឋានប្រភេទរបស់ពួកវា។
ច្រោះចេញតែចំណាត់ថ្នាក់បក្សីប៉ុណ្ណោះ។
ដោយសារតែមានច្រើនប្រភេទ អ្នកអាចបង្ហាញគំនូសនេះឱ្យឈរឈរ ហើយកែសំរួលកម្ពស់វាឱ្យត្រូវនឹងទិន្នន័យទាំងអស់៖
```r
birds_count<-dplyr::count(birds_filtered, Category, sort = TRUE)
birds_count$Category <- factor(birds_count$Category, levels = birds_count$Category)
ggplot(birds_count,aes(Category,n))+geom_bar(stat="identity")+coord_flip()
```
អ្នករាប់តម្លៃតែម្តងក្នុងជួរឈរ `Category` ហើយតម្រៀបវាទៅក្នុង dataframe ថ្មីឈ្មោះ `birds_count`។ ទិន្នន័យតម្រៀបនេះត្រូវបានកំណត់ជាតម្លៃ factored នៅក្នុងកម្រិតដដែល ហើយបានគូសវាទៅក្នុងរបបតម្រៀប។ ប្រើ `ggplot2` អ្នកគូសគំនូសបារដោយបញ្ចូល `coord_flip()` ដើម្បីបង្ហាញបារ៉ាងហ្វូយហ្វូយ។
![category-length](../../../../../translated_images/km/category-length.7e34c296690e85d6.webp)
គំនូសបារនេះបង្ហាញទស្សនវិស័យល្អចំពោះចំនួនបក្សីក្នុងប្រភេទនីមួយៗ។ ក្នុងពេលខ្លី ទស្សនាវិទ្យាអ្នកមើលឃើញថាចំនួនបក្សីច្រើនបំផុតនៅតំបន់នេះស្ថិតនៅក្នុងប្រភេទ Ducks/Geese/Waterfowl។ Minnesota គឺជាដែនដីនៃបឹង ១០,០០០ ផ្ទាំង ដូច្នេះវាមិនអារម្មណ៍ភាពហោរាឡើយ!
✅ សាកល្បងរាប់តម្លៃផ្សេងទៀតលើសំណុំទិន្នន័យនេះ។ តើមានអ្វីដែលធ្វើអោយអ្នកភ្ញាក់ផ្អើលទេ?
## ការប្រៀបធៀបទិន្នន័យ
អ្នកអាចសាកល្បងការប្រៀបធៀបនៃទិន្នន័យបែងចែកដោយបង្កើតអ័ក្សថ្មីៗ។ សាកល្បងប្រៀបធៀប MaxLength នៃបក្សីមួយ ដោយផ្អែកលើប្រភេទរបស់វា៖
```r
birds_grouped <- birds_filtered %>%
group_by(Category) %>%
summarise(
MaxLength = max(MaxLength, na.rm = T),
MinLength = max(MinLength, na.rm = T)
) %>%
arrange(Category)
ggplot(birds_grouped,aes(Category,MaxLength))+geom_bar(stat="identity")+coord_flip()
```
យើងចែកក្រុមទិន្នន័យ `birds_filtered` តាម `Category` ហើយបន្ទាប់មកគូសគំនូសបារ។
![comparing data](../../../../../translated_images/km/comparingdata.f486a450d61c7ca5.webp)
គ្មានអ្វីអស្រូវទេ៖ បក្សី hummingbirds មាន MaxLength តិចជាង Pelicans ឬ Geese។ វាល្អពេលដែលទិន្នន័យមានអត្ថន័យត្រឹមត្រូវ!
អ្នកអាចបង្កើតការមើលឃើញគំនូសបារដ៏គួរឱ្យចាប់អារម្មណ៍ជាមួយការចំបាញ់ទិន្នន័យពីរដុំគ្នា។ អ្នកអាចចំបាញ់ប្រវែងតិចបំផុត និងប្រវែងធំបំផុតនៅលើប្រភេទបក្សីមួយ៖
```r
ggplot(data=birds_grouped, aes(x=Category)) +
geom_bar(aes(y=MaxLength), stat="identity", position ="identity", fill='blue') +
geom_bar(aes(y=MinLength), stat="identity", position="identity", fill='orange')+
coord_flip()
```
![តម្លៃចំបាញ់](../../../../../translated_images/km/superimposed-values.5363f0705a1da416.webp)
## 🚀 សម្រួល
សំណុំទិន្នន័យបក្សីនេះផ្តល់ព័ត៌មានជាច្រើនអំពីប្រភេទបក្សីនៅក្នុងប្រព័ន្ធបរិស្ថានជាក់លាក់ទេ។ ស្វែងរកនៅលើអ៊ីនធឺណិត ហើយមើលថាតើអ្នកអាចរកឃើញសំណុំទិន្នន័យផ្សេងៗទាក់ទងនឹងបក្សីទៀតប៉ុន្មាន។ ហាត់បង្កើតគំនូស និងក្រាហ្វិកជុំវិញបក្សីទាំងនេះ ដើម្បីរកឃើញកត្តាផ្សេងៗដែលអ្នកមិនធ្លាប់ដឹង។
## [តេស្តបន្ទាប់មេរៀន](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/17)
## ពិនិត្យឡើងវិញ និងសិក្សាឯកតាឯករាជ្យ
មេរៀនទី១នេះបានផ្តល់ព័ត៌មានមួយចំនួនអំពីរបៀបប្រើប្រាស់ `ggplot2` ដើម្បីមើលឃើញបរិមាណ។ ស្រាវជ្រាវបន្ថែមអំពីវិធីផ្សេងទៀតក្នុងការជំនួសទិន្នន័យសម្រាប់ការមើលឃើញ។ ស្រាវជ្រាវ និងតាមដានសំណុំទិន្នន័យដែលអាចបង្កើតការមើលឃើញដោយកញ្ចប់ផ្សេងទៀត ដូចជា [Lattice](https://stat.ethz.ch/R-manual/R-devel/library/lattice/html/Lattice.html) និង [Plotly](https://github.com/plotly/plotly.R#readme)
## បេសកកម្ម
[បន្ទាត់, ការបែកចែក និង បារ](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការព្រមាន**៖
ឯកសារនេះត្រូវបានបម្លែងជាភាសាដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលដែលយើងខំប្រឹងប្រែងដើម្បីភាពត្រឹមត្រូវ សូមយកចិត្តទុកដាក់ថាការបកប្រែដោយស្វ័យប្រវត្តិកើតមានកំហុស ឬភាពមិនត្រឹមត្រូវបាន។ ឯកសារដើមក្នុងភាសាមាតុភូមិនឹងត្រូវបានគិតជារម្មណ៍ឯកសារដែលមានអំណាច។ សម្រាប់ព័ត៌មានសំខាន់ៗ សូមណែនាំឲ្យមានការបកប្រែដោយអ្នកជំនាញដែលមានជំនាញ។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំហ ឬការបកប្រែខុសពីការប្រើប្រាស់បកប្រែក្នុងឯកសារនេះទេ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,18 @@
# បន្ទាត់ ការបម្រែបម្រួល និង បារ
## ការណែនាំ
នៅម៉ូឌុលនេះ អ្នកបានប្រើក្រាហ្វខ្សែ ប្លុចចាកចេញ និងក្រាហ្វបារ ដើម្បីបង្ហាញព័ត៌មានចំណាប់អារម្មណ៍អំពីទិន្នន័យនេះ។ ក្នុងភារកិច្ចនេះ សូមស្វែងរកជម្រៅក្នុងទិន្នន័យ ដើម្បីរកព័ត៌មានអំពីប្រភេទសត្វបក្សីជាក់លាក់មួយ។ ឧទាហរណ៍ សូមបង្កើតស្ក្រ្តិបមួយដែលបង្ហាញទិន្នន័យចំណាប់អារម្មណ៍ទាំងអស់ ដែលអ្នកអាចរកឃើញអំពី Snow Geese។ ប្រើក្រាហ្វបីប្រភេទដែលបានរាប់បញ្ជាក់ខាងលើ ដើម្បីប្រាប់រឿងនៅក្នុងសៀវភៅកំណត់ត្រារបស់អ្នក។
## ការវាយតម្លៃ
ល្អលើស | ល្អគ្រប់គ្រាន់ | ត្រូវការកែលម្អ
--- | --- | -- |
បានបង្ហាញស្ក្រ្តិបជាមួយនូវមតិយោបល់ល្អ ការប្រាប់រឿងជាក់លាក់ និងក្រាហ្វអគ្គិសនីទាក់ទាញ | ស្ក្រ្តិបខ្វះធាតុមួយក្នុងចំណោមធាតុเหล่านี้ | ស្ក្រ្តិបខ្វះធាតុពីរនៅក្នុងចំណោមធាតុเหล่านี้
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការបដិសេធ**៖
ឯកសារនេះត្រូវបានបម្រុងបម្លែងជាភាសាដោយប្រើសេវាកម្មបម្លែងភាសា AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលយើងខិតខំប្រឹងផលិតភាពចំចិត តែសូមយល់ពីការខុសឆ្គង ឬការមិនត្រឹមត្រូវអាចកើតមាននៅក្នុងការបកប្រែដោយស្វ័យប្រវត្តិ។ ឯកសារដើមក្នុងភាសាមូលដ្ឋានគឺជាអ្នកផ្តល់ដំណឹងផ្លូវការសម្រាប់ព័ត៌មាន។ សម្រាប់ព័ត៌មានសំខាន់ យើងផ្ដល់អនុសាសន៍ឱ្យប្រើការបកប្រែដោយអ្នកជំនាញ។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ រឺការបកប្រែខុសៗណាមួយដែលអាចកើតមានពីការប្រើប្រាស់ការបកប្រែនេះទេ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,177 @@
# Visualizing Distributions
|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](https://github.com/microsoft/Data-Science-For-Beginners/blob/main/sketchnotes/10-Visualizing-Distributions.png)|
|:---:|
| ការបង្ហាញចែកចាយ - _Sketchnote ដោយ [@nitya](https://twitter.com/nitya)_ |
នៅក្នុងមេរៀនមុន អ្នកបានរៀនពីការពិតចំនួនមួយអំពីឃ្លាំងទិន្នន័យអំពីសត្វបកប្រទេស Minnesota។ អ្នកបានរកឃើញទិន្នន័យកំហុសមួយចំនួន ដោយភ្លក្សមើលចំណុចខុសឆ្គង ហើយបានមើលឃើញភាពខុសគ្នារវាងប្រភេទសត្វបកតាមប្រវែងអតិបរមារបស់ពួកវា។
## [Pre-lecture quiz](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/18)
## ស្វែងយល់អំពីឃ្លាំងទិន្នន័យសត្វបក
វិធីមួយផ្សេងទៀតដើម្បីស្វែងយល់ចំពោះទិន្នន័យគឺមើលតាមចែកចាយរបស់វា ឬរបៀបដែលទិន្នន័យត្រូវបានរៀបចំតាមតួអក្សរ។ ប្រហែលជា អ្នកចង់ស្វែងយល់អំពីការចែកចាយទូទៅ សម្រាប់ឃ្លាំងទិន្នន័យនេះ នៃប្រវែងកែវស្លាបអតិបរមា ឬម៉ាសរាងកាយអតិបរមាសម្រាប់សត្វបករបស់ Minnesota។
យើងនឹងស្វែងរកការពិតអំពីចែកចាយទិន្នន័យនៅក្នុងឃ្លាំងទិន្នន័យនេះ។ នៅក្នុងម៉ាស៊ីន R របស់អ្នក នាំចូល `ggplot2` និងឃ្លាំងទិន្នន័យ។ ដកចេញចំណុចខុសឆ្គងពីឃ្លាំងទិន្នន័យដូចក្នុងប្រធានបទមុន។
```r
library(ggplot2)
birds <- read.csv("../../data/birds.csv",fileEncoding="UTF-8-BOM")
birds_filtered <- subset(birds, MaxWingspan < 500)
head(birds_filtered)
```
| | Name | ScientificName | Category | Order | Family | Genus | ConservationStatus | MinLength | MaxLength | MinBodyMass | MaxBodyMass | MinWingspan | MaxWingspan |
| ---: | :--------------------------- | :--------------------- | :-------------------- | :----------- | :------- | :---------- | :----------------- | --------: | --------: | ----------: | ----------: | ----------: | ----------: |
| 0 | Black-bellied whistling-duck | Dendrocygna autumnalis | Ducks/Geese/Waterfowl | Anseriformes | Anatidae | Dendrocygna | LC | 47 | 56 | 652 | 1020 | 76 | 94 |
| 1 | Fulvous whistling-duck | Dendrocygna bicolor | Ducks/Geese/Waterfowl | Anseriformes | Anatidae | Dendrocygna | LC | 45 | 53 | 712 | 1050 | 85 | 93 |
| 2 | Snow goose | Anser caerulescens | Ducks/Geese/Waterfowl | Anseriformes | Anatidae | Anser | LC | 64 | 79 | 2050 | 4050 | 135 | 165 |
| 3 | Ross's goose | Anser rossii | Ducks/Geese/Waterfowl | Anseriformes | Anatidae | Anser | LC | 57.3 | 64 | 1066 | 1567 | 113 | 116 |
| 4 | Greater white-fronted goose | Anser albifrons | Ducks/Geese/Waterfowl | Anseriformes | Anatidae | Anser | LC | 64 | 81 | 1930 | 3310 | 130 | 165 |
ទូទៅ អ្នកអាចមើលឃើញយ៉ាងរហ័សរបៀបដែលទិន្នន័យត្រូវបានចែកចាយ ដោយប្រើអ្នកគូរប្រភេទស្កាតទ័រ ដូចដែលយើងបានធ្វើក្នុងមេរៀនមុន៖
```r
ggplot(data=birds_filtered, aes(x=Order, y=MaxLength,group=1)) +
geom_point() +
ggtitle("Max Length per order") + coord_flip()
```
![max length per order](../../../../../translated_images/km/max-length-per-order.e5b283d952c78c12.webp)
នេះបង្ហាញទិដ្ឋភាពទូទៅនៃចែកចាយប្រវែងកាយខ្លួនប្រចាំលំដាប់សត្វបក ប៉ុន្តែវាមិនមែនជាវិធីល្អបំផុតសម្រាប់បង្ហាញចែកចាយពិតប្រាកដទេ។ ការប្រព្រឹត្តការនេះទូទៅត្រូវបានធ្វើដោយការ បង្កើតតារាងហ៊ីស្តូក្រាម។
## ការងារជាមួយហ៊ីស្តូក្រាម
`ggplot2` ផ្ដល់នូវវិធីល្អបំផុតសម្រាប់បង្ហាញចែកចាយទិន្នន័យដោយការប្រើប្រាស់ហ៊ីស្តូក្រាម។ ប្រភេទតារាងនេះគឺដូចជាតារាងកន្ទុយដែលអាចឃើញចែកចាយតាមរបៀបពីការកើនឡើងនិងធ្លាក់ចុះរបស់កន្ទុយ។ ដើម្បីបង្កើតហ៊ីស្តូក្រាម អ្នកត្រូវការទិន្នន័យគណិតវិទ្យា ។ ដើម្បីបង្កើតហ៊ីស្តូក្រាម អ្នកអាចគូរតារាងបានដោយកំណត់ប្រភេទជា 'hist' សម្រាប់ហ៊ីស្តូក្រាម។ តារាងនេះបង្ហាញចែកចាយនៃ MaxBodyMass សម្រាប់ជួរទិន្នន័យគណិតវិទ្យាទាំងមូលនៃឃ្លាំងទិន្នន័យ។ ដោយបែងចែកសំណុំទិន្នន័យដែលមានទៅជាធុងតូចៗ វាអាចបង្ហាញចែកចាយតម្លៃទិន្នន័យបាន៖
```r
ggplot(data = birds_filtered, aes(x = MaxBodyMass)) +
geom_histogram(bins=10)+ylab('Frequency')
```
![distribution over entire dataset](../../../../../translated_images/km/distribution-over-the-entire-dataset.d22afd3fa96be854.webp)
ដូចដែលអ្នកអាចមើលឃើញ សត្វបកជាង ៤០០ ត្រូវរុំខ្លួននៅក្នុងជួរទាបជាង ២០០០ សម្រាប់មាស់របស់ពួកវា។ ទទួលបានការយល់ដឹងបន្ថែមអំពីទិន្នន័យដោយប្តូរពារ៉ាម៉ែត្រ `bins` ទៅចំនួនខ្ពស់ជាងនេះ ប្រហែលជា ៣០៖
```r
ggplot(data = birds_filtered, aes(x = MaxBodyMass)) + geom_histogram(bins=30)+ylab('Frequency')
```
![distribution-30bins](../../../../../translated_images/km/distribution-30bins.6a3921ea7a421bf7.webp)
តារាងនេះបង្ហាញចែកចាយនៅក្នុងរបៀបលំអិតជាងមុន។ តារាងដែលមិនលំអៀងទៅឆ្វេងច្រើនអាចបង្កើតបានដោយធ្វើឲ្យប្រាកដថាអ្នកជ្រើសរើសទិន្នន័យក្នុងជួរមួយកំណត់៖
ចម្រាញ់ទិន្នន័យរបស់អ្នកសម្រាប់ត្រឹមតែសត្វបកដែលម៉ាសរាងកាយតិចជាង ៦០ ហើយបង្ហាញ ៣០ `bins`
```r
birds_filtered_1 <- subset(birds_filtered, MaxBodyMass > 1 & MaxBodyMass < 60)
ggplot(data = birds_filtered_1, aes(x = MaxBodyMass)) +
geom_histogram(bins=30)+ylab('Frequency')
```
![filtered histogram](../../../../../translated_images/km/filtered-histogram.6bf5d2bfd8253322.webp)
✅ សាកល្បងចម្រាញ់និងចំណុចទិន្នន័យផ្សេងទៀត។ ដើម្បីមើលចែកចាយទិន្នន័យបែបពេញលេញ សូមដកចេញថ្នាក់តម្រៀប `['MaxBodyMass']` ដើម្បីបង្ហាញចែកចាយដែលមានស្លាក។
ហ៊ីស្តូក្រាមផ្ដល់នូវពណ៌ និងស្លាកដែលមានលក្ខណៈល្អសម្រាប់សាកល្បងដែរ៖
បង្កើតហ៊ីស្តូក្រាម 2D ដើម្បីប្រៀបធៀបទំនាក់ទំនងរវាងចែកចាយពីរប្រភេទ។ យើងប្រៀបធៀบ `MaxBodyMass` និង `MaxLength``ggplot2` ផ្ដល់វិធីសាស្រ្តមួយដែលបង្កើតពណ៌ភ្លឺសម្រាប់បង្ហាញភាពប្រសើររួមបញ្ចូលគ្នា៖
```r
ggplot(data=birds_filtered_1, aes(x=MaxBodyMass, y=MaxLength) ) +
geom_bin2d() +scale_fill_continuous(type = "viridis")
```
មានបំណងមានទំនាក់ទំនងដែលគេរំពឹងទុករវាងធាតុទាំងពីរនៅលើតួអក្សរដែលរំពឹងទុក មួយចំណុចបង្ហាញសកម្មភាពរួមបញ្ចូលខ្លាំងពិសេសមួយ៖
![2d plot](../../../../../translated_images/km/2d-plot.c504786f439bd7eb.webp)
ហ៊ីស្តូក្រាមដំណើរការល្អសម្រាប់ទិន្នន័យគណិតវិទ្យា។ តើអ្នកត្រូវការមើលចែកចាយផ្អែកលើទិន្នន័យអក្សរតើដូចម្តេច?
## ស្វែងយល់ឃ្លាំងទិន្នន័យសម្រាប់ចែកចាយដោយប្រើទិន្នន័យអក្សរ
ឃ្លាំងទិន្នន័យនេះក៏មានព័ត៌មានល្អអំពីប្រភេទសត្វបក និងក្រុមជីវចម្រុះជាតិ គ្រួសារ និងស្ថានភាពការធ្វើអភិរក្សរបស់វា។ មកពិនិត្យពីព័ត៌មានស្តីអំពីការរក្សាសត្វនេះ។ តើមានចែកចាយយ៉ាងដូចម្តេចអំពីសត្វបក តាមស្ថានភាពការធ្វើអភិរក្សរបស់ពួកវា?
> ✅ ក្នុងឃ្លាំងទិន្នន័យនេះ វាក៏មានអក្សរកាត់ច្រើនប្រើសម្រាប់ពិពណ៌នាស្ថានភាពការធ្វើអភិរក្សផងដែរ។ អក្សកាត់ទាំងនេះមានមកពី [IUCN Red List Categories](https://www.iucnredlist.org/), អង្គការដែលកំណត់ស្ថានភាពប្រភេទសត្វ។
>
> - CR: មានអនាគតធ្ងន់ធ្ងរ
> - EN: កំពុងស្ថិតក្នុងហានិភ័យ
> - EX: សម្រាកសព
> - LC: មិនមានបញ្ហា
> - NT: ជិតមានហានិភ័យ
> - VU: ងាយរងហានិភ័យ
តម្លៃទាំងនេះមានលក្ខណៈអក្សរសម្រាប់អត្រាកំណត់ ទាក់ទងនឹងដង់ស៊ីតារបស់ Minimum Wingspan។ តើអ្នកមើលឃើញអ្វី?
```r
birds_filtered_1$ConservationStatus[birds_filtered_1$ConservationStatus == 'EX'] <- 'x1'
birds_filtered_1$ConservationStatus[birds_filtered_1$ConservationStatus == 'CR'] <- 'x2'
birds_filtered_1$ConservationStatus[birds_filtered_1$ConservationStatus == 'EN'] <- 'x3'
birds_filtered_1$ConservationStatus[birds_filtered_1$ConservationStatus == 'NT'] <- 'x4'
birds_filtered_1$ConservationStatus[birds_filtered_1$ConservationStatus == 'VU'] <- 'x5'
birds_filtered_1$ConservationStatus[birds_filtered_1$ConservationStatus == 'LC'] <- 'x6'
ggplot(data=birds_filtered_1, aes(x = MinWingspan, fill = ConservationStatus)) +
geom_histogram(position = "identity", alpha = 0.4, bins = 20) +
scale_fill_manual(name="Conservation Status",values=c("red","green","blue","pink"),labels=c("Endangered","Near Threathened","Vulnerable","Least Concern"))
```
![wingspan and conservation collation](../../../../../translated_images/km/wingspan-conservation-collation.4024e9aa6910866a.webp)
មិនមានទំនាក់ទំនងល្អណាមួយមាត់ស្លាបអប្បបរមា និងស្ថានភាពការធ្វើអភិរក្ស។ សាកល្បងធាតុផ្សេងទៀតពីឃ្លាំងទិន្នន័យដោយវិធីនេះ។ អ្នកអាចសាកល្បងចម្រាញ់ផ្សេងៗបានផងដែរ។ តើអ្នករកឃើញទំនាក់ទំនងដែរឬទេ?
## តារាងកម្រាស់ (Density plots)
អ្នកប្រហែលថាបានដឹងថា ហ៊ីស្តូក្រាមដែលយើងបានមើលមកដល់បច្ចុប្បន្នគឺ 'ជ પગបិតជំហាន' ហើយមិនរលូនទន់ត្រង់។ ដើម្បីបង្ហាញតារាងកម្រាស់ទន់ប្រសើរជាងនេះ អ្នកអាចសាកល្បងប្រើតារាងកម្រាស់ (density plot)។
មកធ្វើការជាមួយតារាងកម្រាស់ឥឡូវនេះ!
```r
ggplot(data = birds_filtered_1, aes(x = MinWingspan)) +
geom_density()
```
![density plot](../../../../../translated_images/km/density-plot.675ccf865b76c690.webp)
អ្នកអាចមើលឃើញថាតារាងនេះស្រដៀងទៅនឹងតារាងមុនសម្រាប់ទិន្នន័យ Minimum Wingspan; វាត្រឹមតែទន់ចិត្តជាងបន្តិច។ ប្រសិនបើអ្នកចង់ត្រឡប់ទៅមើលខ្សែ MaxBodyMass ដែលមានជំហានច្រើននៅក្នុងតារាងទីពីរ អ្នកអាចធ្វើឱ្យវាត្រង់ល្អជាងមុនដោយបង្កើតវាឡើងវិញដោយវិធីនេះ៖
```r
ggplot(data = birds_filtered_1, aes(x = MaxBodyMass)) +
geom_density()
```
![bodymass density](../../../../../translated_images/km/bodymass-smooth.d31ce526d82b0a1f.webp)
បើអ្នកចង់មានខ្សែធម្មតា តែមិនទន់លឿនពេក អ្នកអាចកែប្រែពារ៉ាម៉ែត្រ `adjust`:
```r
ggplot(data = birds_filtered_1, aes(x = MaxBodyMass)) +
geom_density(adjust = 1/5)
```
![less smooth bodymass](../../../../../translated_images/km/less-smooth-bodymass.10f4db8b683cc17d.webp)
✅ អានអំពីពារ៉ាម៉ែត្រដែលអាចប្រើបានសម្រាប់ប្រភេទតារាងនេះ ហើយសាកល្បង!
ប្រភេទតារាងនេះផ្តល់នូវការបង្ហាញដែលស្រួលយល់។ ជាមួយជួរដេកកូដមួយចំនួន អ្នកអាចបង្ហាញកម្រាស់ម៉ាសរាងកាយប៉ុណ្ណៃរបស់សត្វបកប្រចាំលំដាប់៖
```r
ggplot(data=birds_filtered_1,aes(x = MaxBodyMass, fill = Order)) +
geom_density(alpha=0.5)
```
![bodymass per order](../../../../../translated_images/km/bodymass-per-order.9d2b065dd931b928.webp)
## 🚀 챌린지
ហ៊ីស្តូក្រាមគឺជាប្រភេទតារាងដែលមានភាពស្មុគស្មាញជាងតារាងស្កាតទ័រ ឬតារាងកន្ទុយ ឬតារាងខ្សែធម្មតា។ ស្វែងរកតាមអ៊ីនធឺណិតសម្រាប់ឧទាហរណ៍ល្អៗនៃការប្រើប្រាស់ហ៊ីស្តូក្រាម។ តើពួកវាត្រូវបានប្រើប្រាស់យ៉ាងដូចម្តេច, បង្ហាញអ្វី, និងនៅក្នុងដែនកំណត់ ឬវិស័យស្រាវជ្រាវណាដែលពួកវាត្រូវបានប្រើប្រាស់ជាទូទៅ?
## [Post-lecture quiz](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/19)
## សារមន្ទីរ និងការសិក្សាឯករាជ្យ
នៅក្នុងមេរៀននេះ អ្នកបានប្រើ `ggplot2` ហើយបានចាប់ផ្តើមបង្ហាញតារាងប្រើប្រាស់ស្មុគស្មាញជាងមុន។ សូមស្រាវជ្រាវអំពី `geom_density_2d()` គឺជា "ខ្សែកង់កម្រាស់ប្រហាស់ឆាប់ដោយបន្តបន្ទាប់ក្នុងវិមាត្រមួយឬច្រើន"។ អានតាម [ឯកសារ](https://ggplot2.tidyverse.org/reference/geom_density_2d.html) ដើម្បីយល់ពីរបៀបដែលវាដំណើរការ។
## ការតែងការ
[អនុវត្តជំនាញរបស់អ្នក](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការបដិសេធ**៖
ឯកសារនេះត្រូវបានបកប្រែ ដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ បើទោះបីយើងខិតខំរកច្បាស់លាស់ក៏ដោយ សូមយល់ព្រមថា បកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុស ឬមិនត្រឹមត្រូវខ្លះ។ ឯកសារដើមជាភាសាពុទ្ធបុរាណ គួរត្រូវបានចាត់ទុកថាជាមូលដ្ឋានច្បាស់លាស់បំផុត។ សម្រាប់ព័ត៌មានសំខាន់ៗ យើងផ្តល់អនុសាសន៍ឱ្យប្រើការបកប្រែដោយអ្នកប្រាជ្ញមនុស្ស។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកប្រែខុសពីសេចក្តីដែលបណ្តាលមកពីការប្រើប្រាស់បកប្រែនេះទេ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,17 @@
# ប្រើជំនាញរបស់អ្នក
## សេចក្តីណែនាំ
រហូតមកដល់ពេលនេះ អ្នកបានធ្វើការជាមួយទិន្នន័យត្រចៀកបក្សី Minnesota ដើម្បីរកព័ត៌មានអំពីចំនួនបក្សី និងដង់សុីទីប្រជាជន។ អនុវត្តការផ្ដល់ដំណើរការនៃបច្ចេកទេសទាំងនេះដោយសាកល្បងជាមួយទិន្នន័យផ្សេងទៀត ប្រហែលមកពី [Kaggle](https://www.kaggle.com/). បង្កើតស្គ្រិប R មួយដើម្បីប្រាប់រឿងអំពីទិន្នន័យនេះ ហើយប្រាកដថាប្រើរូបតាងសន្ទស្សន៍ហ៊ីស្តូក្រាមនៅពេលពិភាក្សាអំពីវា។
## វាយតម្លៃ
ល្អឥតខ្ចោះ | គ្រប់គ្រាន់ | ត្រូវតែធ្វើការកែលម្អ
--- | --- | -- |
មានស្គ្រិបមួយដែលបានបង្ហាញជាមួយសម្គាល់អំពីទិន្នន័យនេះ រួមទាំងប្រភពរបស់វា ហើយប្រើហ៊ីស្តូក្រាមយ៉ាងហោចណាស់ 5 ដើម្បីស្វែងរកព័ត៌មានអំពីទិន្នន័យ។ | មានស្គ្រិបមួយដែលបានបង្ហាញជាមួយសម្គាល់ដែលមិនពេញលេញឬមានកំហុស។ | មានស្គ្រិបមួយដែលបានបង្ហាញដោយគ្មានសម្គាល់ និងមានកំហុស។
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការបដិសេធ**៖
ឯកសារនេះត្រូវបានបកប្រែ ដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈយើងខិតខំសម្រាប់ភាពត្រឹមត្រូវ សូមយល់ថាការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុស ឬមិនត្រឹមត្រូវ។ ឯកសារដើមនៅភាសាមូលដ្ឋានគួរត្រូវបាន xemថាជា ប្រភពជាក់ស្តែង។ សម្រាប់ព័ត៌មានសំខាន់ ការបកប្រែដោយអ្នកជំនាញមនុស្សត្រូវបានផ្តល់អនុសាសន៍។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកប្រែខុសពីការប្រើប្រាស់ការបកប្រែនេះនោះទេ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,198 @@
# ការចាក់បង្ហាញអំពីអត្រា​ភាគរយ
|![ Sketchnote ដោយ [(@sketchthedocs)](https://sketchthedocs.dev) ](../../../sketchnotes/11-Visualizing-Proportions.png)|
|:---:|
|ការចាក់បង្ហាញអំពីអត្រា​ភាគរយ - _Sketchnote ដោយ [@nitya](https://twitter.com/nitya)_ |
នៅក្នុងមេរៀននេះ អ្នកនឹងប្រើឈុតទិន្នន័យផ្សេងទៀតដែលផ្តោតលើធម្មជាតិ ដើម្បីបង្ហាញអត្រា​ភាគរយ ដូចជាចំនួនបែបបទផ្សេងៗនៃប្រភេទផ្សិតដែលរស់នៅក្នុងឈុតទិន្នន័យអំពីផ្សិត។ យើងចង់ស្វែងយល់អំពីផ្សិតដែលគួរឱ្យចាប់អារម្មណ៍ទាំងនេះដោយប្រើឈុតទិន្នន័យមួយដែលបានប្រមូលផ្តុំពី Audubon ដែលបញ្ជាក់ព័ត៌មានលម្អិតអំពីប្រភេទផ្សិត ២៣ ជាតិសត្វលក្ខណៈប្រភេទស្លាបក្នុងគ្រួសារ Agaricus និង Lepiota។ អ្នកនឹងសាកល្បងជាមួយការបង្ហាញដែលឆ្ងាញ់ៗដូចជា៖
- គំនូរជាតារាងមូល 🥧
- គំនូរស្លាបព្រីង 🍩
- គំនូរតារាងវ៉ាហ្វ៊ែ 🧇
> 💡 គម្រោងមួយដែលគួរឲ្យចាប់អារម្មណ៍ខ្លាំងដែលហៅថា [Charticulator](https://charticulator.com) ដោយ Microsoft Research ផ្តល់ឱ្យនូវចំណុចប្រទាក់ចាប់យកនិងទម្លាក់ដោយសេរីសម្រាប់ការបង្ហាញទិន្នន័យ។ ក្នុងមេរៀនមួយរបស់ពួកគេសព្វថ្ងៃ ខ្លួនពួកគេសម្តែងរៀបចំឈុតទិន្នន័យផ្សិតនេះផងដែរ! ដូច្នេះ អ្នកអាចស្វែងយល់ទិន្នន័យ និងសិក្សាបណ្ណាល័យនៅពេលតែមួយ: [មេរៀន Charticulator](https://charticulator.com/tutorials/tutorial4.html)។
## [សំណួរកម្រិតមុនបង្រៀន](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/20)
## ស្គាល់ពីផ្សិតរបស់អ្នក 🍄
ផ្សិតគឺគួរឱ្យចាប់អារម្មណ៍ខ្លាំង។ យើងមកនាំចូលឈុតទិន្នន័យដើម្បីសិក្សាទាំងនេះ៖
```r
mushrooms = read.csv('../../data/mushrooms.csv')
head(mushrooms)
```
តារាងមួយត្រូវបានបោះពុម្ពចេញជាមួយទិន្នន័យល្អសម្រាប់វិភាគ៖
| ថ្នាក់ | រូបរាងមួក | ភាពរលោងមួក | ពណ៌មួក | ប្រេះ | ផ្លែទែ | ការចងភ្លៅ | រង្វាស់គ្នាជិត | ទំហំភ្លៅ | ពណ៌ភ្លៅ | រូបរាងកំពង់ | ជើងកំពង់ | ភាពរលោងខាងលើកំពង់ | ភាពរលោងខាងក្រោមកំពង់ | ពណ៌ខាងលើកំពង់ | ពណ៌ខាងក្រោមកំពង់ | ប្រភេទវេល | ពណ៌វេល | ចំនួនរំលង | ប្រភេទរំលង | ពណ៌ព្រីនស្ពរ | ប្រជាជន | បរិយាកាស |
| --------- | --------- | ----------- | --------- | ------- | ------- | --------------- | ------------ | --------- | ---------- | ----------- | ---------- | ------------------------ | ------------------------ | ---------------------- | ---------------------- | --------- | ---------- | ----------- | --------- | ----------------- | ---------- | ------- |
| ពុលសកម្ម | ព្រួញរាងក្រោម | រលោង | សំឡីខ្មៅ | ប្រេះ | ក្លិនខ្លាញ់ | មិនចងភ្លៅ | ក្បែរ | ស្ពឹកតូច | ខ្មៅ | កំពង់តែងដល់ | ស្មើ | រលោង | រលោង | ស | ស | ផ្នែកមួយ | ស | មួយ | រំលង | ទីក្រុង |
| ដោះផ្លែបរិភោគ | ព្រួញរាងក្រោម | រលោង | លឿង | ប្រេះ | អាល់មល | មិនចងភ្លៅ | ក្បែរ | ក្បាលធំ | ខ្មៅ | កំពង់តែងដល់ | ក្លឹប | រលោង | រលោង | ស | ស | ផ្នែកមួយ | ស | មួយ | ច្រើន | ស្មៅ |
| ដោះផ្លែបរិភោគ | ខ្ទះ | រលោង | ស | ប្រេះ | ស្លឹកអាណី | មិនចងភ្លៅ | ក្បែរ | ក្បាលធំ | សំឡីខ្មៅ | កំពង់តែងដល់ | ក្លឹប | រលោង | រលោង | ស | ស | ផ្នែកមួយ | ស | មួយ | ច្រើន | ទីស្រែ |
| ពុលសកម្ម | ព្រួញរាងក្រោម | មានស្បែកលើ | ស | ប្រេះ | ក្លិនខ្លាញ់ | មិនចងភ្លៅ | ក្បែរ | ស្ពឹកតូច | សំឡីខ្មៅ | កំពង់តែងដល់ | ស្មើ | រលោង | រលោង | ស | ស | ផ្នែកមួយ | ស | មួយ | រំលង | ទីក្រុង
| ដោះផ្លែបរិភោគ | ព្រួញរាងក្រោម | រលោង | បៃតង | គ្មានប្រេះ | គ្មានក្លិន | មិនចងភ្លៅ | ក្បែរពេញ | ក្បាលធំ | ខ្មៅ | រាបចុះ | ស្មើ | រលោង | រលោង | ស | ស | ផ្នែកមួយ | ស | មួយ | ច្រើន | ស្មៅ
| ដោះផ្លែបរិភោគ | ព្រួញរាងក្រោម | មានស្បែកលើ | លឿង | ប្រេះ | អាល់មល | មិនចងភ្លៅ | ក្បែរ | ក្បាលធំ | សំឡីខ្មៅ | កំពង់តែងដល់ | ក្លឹប | រលោង | រលោង | ស | ស | ផ្នែកមួយ | ស | មួយ | ច្រើន | ស្មៅ
ភ្លាមៗ អ្នកនឹងសង្កេតឃើញថាទិន្នន័យទាំងអស់គឺជាច្រកអក្សរ។ អ្នកត្រូវតែកែប្រែទិន្នន័យនេះដើម្បីដាក់ក្នុងតារាង។ ភាគច្រើនទិន្នន័យនេះ ត្រូវបានបញ្ចេញជា​វត្ថុ​មួយ៖
```r
names(mushrooms)
```
លទ្ធផលគឺ៖
```output
[1] "class" "cap.shape"
[3] "cap.surface" "cap.color"
[5] "bruises" "odor"
[7] "gill.attachment" "gill.spacing"
[9] "gill.size" "gill.color"
[11] "stalk.shape" "stalk.root"
[13] "stalk.surface.above.ring" "stalk.surface.below.ring"
[15] "stalk.color.above.ring" "stalk.color.below.ring"
[17] "veil.type" "veil.color"
[19] "ring.number" "ring.type"
[21] "spore.print.color" "population"
[23] "habitat"
```
យកទិន្នន័យនេះហើយបំលែងជួរឈរលក្ខណៈ 'class' ទៅជាប្រភេទ៖
```r
library(dplyr)
grouped=mushrooms %>%
group_by(class) %>%
summarise(count=n())
```
ឥឡូវនេះ បើអ្នកបោះពុម្ពទិន្នន័យផ្សិតនេះចេញ អ្នកនឹងឃើញថាវាត្រូវបានចែកជាក្រុមតាមលក្ខណៈពុល/អាចប្រើបាន៖
```r
View(grouped)
```
| class | ចំនួន |
| --------- | --------- |
| ដោះផ្លែបរិភោគ | 4208 |
| ពុលសកម្ម | 3916 |
បើអ្នកធ្វើតាមលំដាប់បង្ហាញនៅក្នុងតារាងនេះ ដើម្បីបង្កើតស្លាកប្រភេទថ្នាក់ អ្នកអាចបង្កើតតារាងភាគរយបាន។
## ភាគរយ!
```r
pie(grouped$count,grouped$class, main="Edible?")
```
វ៉ា ឡា, គំនូរតារាងមូលបង្ហាញអត្រាសមាមាត្រនៃទិន្នន័យនេះដោយផ្អែកលើថ្នាក់ផ្សិតទាំងពីរ។ វារស់សំខាន់ក្នុងការត្រួតពិនិត្យលំដាប់នៃស្លាក ដូច្នេះចូរត្រួតពិនិត្យលំដាប់របស់ចំណងជើងដែលបង្កើតឡើងច្បាស់លាស់ណាស់!
![តារាងមូល](../../../../../translated_images/km/pie1-wb.685df063673751f4.webp)
## ស្លាបព្រីង!
គំនូរតារាងមូលមួយដែលគួរឲ្យចាប់អារម្មណ៍ visually ធ្វើបានជាស្លាបព្រីង ដែលបង្កើតដោយមានរន្ធនៅកណ្តាល។ យើងមកមើលទិន្នន័យរបស់យើងដោយរបៀបនេះ។
មើលទៅផ្ទៃនៅជុំវិញដែលផ្សិតធំឡើង៖
```r
library(dplyr)
habitat=mushrooms %>%
group_by(habitat) %>%
summarise(count=n())
View(habitat)
```
លទ្ធផលគឺ៖
| បរិយាកាស| ចំនួន |
| --------- | --------- |
| ស្មៅ | 2148 |
| ស្លឹក | 832 |
| ទីស្រែ | 292 |
| ផ្លូវ | 1144 |
| ទីក្រុង | 368 |
| ខូច | 192 |
| ឈើ | 3148 |
នៅទីនេះ អ្នកកំពុងចែកប្រភេទទិន្នន័យដោយផ្អែកលើបរិយាកាស។ មាន ៧ ប្រភេទដូច្នេះចូរប្រើវាជាស្លាកសម្រាប់គំនូរស្លាបព្រីងរបស់អ្នក៖
```r
library(ggplot2)
library(webr)
PieDonut(habitat, aes(habitat, count=count))
```
![ស្លាបព្រីង](../../../../../translated_images/km/donut-wb.34e6fb275da9d834.webp)
កូដនេះប្រើបណ្ណាល័យពីរ ggplot2 និង webr។ ដោយប្រើមុខងារ PieDonut ពីបណ្ណាល័យ webr អ្នកអាចបង្កើតគំនូរស្លាបព្រីងបានយ៉ាងងាយស្រួល!
គំនូរស្លាបព្រីងនៅក្នុងភាសា R អាចបង្កើតបានតែដោយប្រើបណ្ណាល័យ ggplot2 ផងដែរ។ អ្នកអាចស្វែងយល់បន្ថែមអំពីវា [នៅទីនេះ](https://www.r-graph-gallery.com/128-ring-or-donut-plot.html) ហើយសាកល្បងដោយខ្លួនឯង។
ឥឡូវនេះ អ្នកបានស្គាល់របៀបក្រុមទិន្នន័យរបស់អ្នក រួចបង្ហាញវាជាស្លាកភាគរយ ឬស្លាបព្រីង អ្នកអាចសាកល្បងមើលគំនូរផ្សេងទៀត។ សាកល្បងគំនូរតារាងវ៉ាហ្វ៊ែ ដែលជាវិធីផ្សេងទៀតក្នុងការបង្ហាញបរិមាណ។
## វ៉ាហ្វ៊ែ!
គំនូរប្រភេទ 'វ៉ាហ្វ៊ែ' គឺជាវិធីខុសគ្នាក្នុងការចាក់បង្ហាញបរិមាណជា ២D ជួរឈរ និងជួរឈរ។ សាកល្បងបង្ហាញបរិមាណពណ៌មួកផ្សិតផ្សេងគ្នាជាមួយឈុតទិន្នន័យនេះ។ ដើម្បីធ្វើបែបនេះ អ្នកត្រូវតែដំឡើងបណ្ណាល័យជំនួយមួយដែលហៅថា [waffle](https://cran.r-project.org/web/packages/waffle/waffle.pdf) ហើយប្រើវាដើម្បីបង្កើតការចាក់បង្ហាញរបស់អ្នក៖
```r
install.packages("waffle", repos = "https://cinc.rud.is")
```
ជ្រើសរើសផ្នែកមួយនៃទិន្នន័យរបស់អ្នកដើម្បីក្រុម៖
```r
library(dplyr)
cap_color=mushrooms %>%
group_by(cap.color) %>%
summarise(count=n())
View(cap_color)
```
បង្កើតគំនូរតារាងវ៉ាហ្វ៊ែដោយបង្កើតស្លាក ហើយបន្ទាប់មកក្រុមទិន្នន័យរបស់អ្នក៖
```r
library(waffle)
names(cap_color$count) = paste0(cap_color$cap.color)
waffle((cap_color$count/10), rows = 7, title = "Waffle Chart")+scale_fill_manual(values=c("brown", "#F0DC82", "#D2691E", "green",
"pink", "purple", "red", "grey",
"yellow","white"))
```
ដោយប្រើគំនូរតារាងវ៉ាហ្វ៊ែ អ្នកអាចមើលឃើញពីភាគរយពណ៌មួកក្នុងឈុតទិន្នន័យផ្សិតនេះយ៉ាងច្បាស់។ គួរឲ្យចាប់អារម្មណ៍មានផ្សិតពណ៌បៃតងច្រើន!
![តារាងវ៉ាហ្វ៊ែ](../../../../../translated_images/km/waffle.aaa75c5337735a6e.webp)
នៅក្នុងមេរៀននេះ អ្នកបានរៀនពីវិធីបង្ហាញអត្រា​ភាគរយឆេរបីវិធី។ ជាមុនសិន អ្នកត្រូវចែកទិន្នន័យជាក្រុមតាមប្រភេទ ហើយបន្ទាប់មកជ្រើសរើសវិធីល្អបំផុតសម្រាប់បង្ហាញទិន្នន័យ - គំនូរមូល ភាគរយស្លាបព្រីង ឬវ៉ាហ្វ៊ែ។ ទាំងអស់ទាំងនេះឆ្ងាញ់និងផ្តល់ចំណង់ចំណូលចិត្តឱ្យអ្នកប្រើដោយទទួលបានរូបភាពមួយភ្លាមៗពីឈុតទិន្នន័យ។
## 🚀 មេរៀនបញ្ញាត់
សាកល្បងបង្កើតវិញគំនូរឆ្ងាញ់ៗទាំងនេះនៅក្នុង [Charticulator](https://charticulator.com)។
## [សំណួរកម្រិតបន្ទាប់បង្រៀន](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/21)
## ពិនិត្យមើលឡើងវិញ និងអនុវត្តផ្ទាល់
មួយច្រើនពេលវាជារឿងពិបាកក្នុងការជ្រើសរើសពេលណាដែលត្រូវប្រើគំនូរមូល ស្លាបព្រីង ឬវ៉ាហ្វ៊ែ។ មានអង្គការសម្រាប់អានអត្ថបទនៅលើប្រធានបទនេះ៖
https://www.beautiful.ai/blog/battle-of-the-charts-pie-chart-vs-donut-chart
https://medium.com/@hypsypops/pie-chart-vs-donut-chart-showdown-in-the-ring-5d24fd86a9ce
https://www.mit.edu/~mbarker/formula1/f1help/11-ch-c6.htm
https://medium.datadriveninvestor.com/data-visualization-done-the-right-way-with-tableau-waffle-chart-fdf2a19be402
សូមស្រាវជ្រាវបន្ថែមសម្រាប់ព័ត៌មានបន្ថែមអំពីការសម្រេចចិត្តពិបាកនេះ។
## ការងារ
[សាកល្បងវាក្នុង Excel](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការព្រមាន**៖
ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ក្នុងខណៈពេលយើងខិតខំបំផុតដើម្បីឲ្យបានភាពត្រឹមត្រូវ សូមយល់ដឹងថាការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុស ឬភាពមិនត្រឹមត្រូវខ្លះ។ ឯកសារដើមនៅក្នុងភាសាមូលដ្ឋានគួរត្រូវបានគេចាត់ទុកជាមូលដ្ឋានដែលមានអំណាច។ សម្រាប់ព័ត៌មានសំខាន់ៗ ការបកប្រែដោយមនុស្សជំនាញត្រូវបានផ្តល់អនុសាសន៍។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកស្រាយខុសទៅពីការប្រើប្រាស់ការបកប្រែនេះទេ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,172 @@
# ការមើលឃើញទំនាក់ទំនង៖ អំពីទឹកឃ្មុំទាំងអស់ 🍯
|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../../sketchnotes/12-Visualizing-Relationships.png)|
|:---:|
|ការមើលឃើញទំនាក់ទំនង - _Sketchnote by [@nitya](https://twitter.com/nitya)_ |
បន្តជាមួយការផ្ដោតលើធម្មជាតិ ក្នុងការស្រាវជ្រាវរបស់យើង ចូរបង្ហាញការមើលឃើញដ៏គួរឲ្យចាប់អារម្មណ៍ ដើម្បីបង្ហាញទំនាក់ទំនងរវាងប្រភេទទឹកឃ្មុំផ្សេងៗគ្នា អាប់ដាតពីទិន្នន័យមួយដែលទទួលបានពី [ក្រសួងកសិកម្មសហរដ្ឋអាមេរិក](https://www.nass.usda.gov/About_NASS/index.php) ។
ទិន្នន័យនេះមានប្រហែល ៦០០ធាតុ បង្ហាញពីការផលិតទឹកឃ្មុំក្នុងរដ្ឋជាច្រើនរបស់អាមេរិក។ ដូច្នេះ ឧទាហរណ៍ អ្នកអាចមើលចំនួនពូជមហាធំ, ផលចំណេញលើមហាធំមួយ, ការផលិតសរុប, ផ្ទុកទុក, តម្លៃក្នុងមួយផោន អ្នកតម្លៃរបស់ទឹកឃ្មុំនៅក្នុងរដ្ឋនោះពីឆ្នាំ ១៩៩៨ ដល់ ២០១២ ក្នុងមួយជួរតួជាឆ្នាំសម្រាប់រដ្ឋនីមួយៗ។
វានឹងគួរឱ្យចាប់អារម្មណ៍ក្នុងការមើលឃើញទំនាក់ទំនងរវាងការផលិតរបស់រដ្ឋមួយក្នុងមួយឆ្នាំ និងឧទាហរណ៍តម្លៃទឹកឃមុំជារដ្ឋនោះ។ ជាជម្រើសផ្សេង អ្នកអាចមើលឃើញទំនាក់ទំនងរវាងផលចំណេញលើមហាធំរបស់រដ្ឋនីមួយៗ។ អំឡុងពេលឆ្នាំនេះគ្របដណ្តប់ការបញ្ហា 'CCD' ឬ 'Colony Collapse Disorder' ដែលអាចឃើញបានដំបូងនៅឆ្នាំ ២០០៦ (http://npic.orst.edu/envir/ccd.html) ហើយវា​គឺជាទិន្នន័យដ៏ចាស់សុក្រឹតសម្រាប់ការសិក្សា 🐝
## [ល្បែងវាយតម្លៃមុនមេរៀន](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/22)
នៅក្នុងមេរៀននេះ អ្នកអាចប្រើ ggplot2 ដែលអ្នកបានប្រើមុននោះជាយុលីបប្រើល្អក្នុងការមើលឃើញទំនាក់ទំនងរវាងអថេរ។ ខាងក្រោម ការប្រើ `geom_point` និង `qplot` របស់ ggplot2 ជារឿងគួរឱ្យចាប់អារម្មណ៍ ដែលអនុញ្ញាតឲ្យបង្ហាញក្រាភិកសាច់ញាតិកំណត់តាមចំណុច និងបន្ទាត់ ដើម្បីមើលឃើញ “[ទំនាក់ទំនងស្ថិតិ](https://ggplot2.tidyverse.org/)” ដែលជួយឲ្យអ្នកវិទ្យាសាស្ត្រទិន្នន័យយល់ដឹងពីរបៀបដែលអថេរតភ្ជាប់គ្នា។
## សាច់ញាតិកំណត់តាមចំណុច
ប្រើសាច់ញាតិកំណត់តាមចំណុច ដើម្បីបង្ហាញថាតម្លៃទឹកឃ្មុំនៅឆ្នាំក្នុងមួយឆ្នាំ តម្លៃលើរដ្ឋណាមួយ។ ggplot2 ប្រើ `ggplot` និង `geom_point` ជាការងាយស្រួលក្នុងការបំបែកទិន្នន័យរដ្ឋ និងបង្ហាញចំណុចទិន្នន័យទាំងសម្រាប់ទិន្នន័យចំណាត់ថ្នាក់ និងចំនួន។
ចាប់ផ្តើមដោយនាំចូលទិន្នន័យ និង Seaborn៖
```r
honey=read.csv('../../data/honey.csv')
head(honey)
```
អ្នកនឹងសង្កេតឃើញថាទិន្នន័យទឹកឃ្មុំមានជួរឈរច្រើនដ៏គួរឲ្យចាប់អារម្មណ៍ រួមមានឆ្នាំ និងតម្លៃក្នុងមួយផោន។ ចង់ស្វែងយល់ពីទិន្នន័យនេះ ដែលបានក្រុមតាមរដ្ឋអាមេរិក៖
| រដ្ឋ | numcol | yieldpercol | totalprod | stocks | priceperlb | prodvalue | ឆ្នាំ |
| ----- | ------ | ----------- | --------- | -------- | ---------- | --------- | ---- |
| AL | 16000 | 71 | 1136000 | 159000 | 0.72 | 818000 | 1998 |
| AZ | 55000 | 60 | 3300000 | 1485000 | 0.64 | 2112000 | 1998 |
| AR | 53000 | 65 | 3445000 | 1688000 | 0.59 | 2033000 | 1998 |
| CA | 450000 | 83 | 37350000 | 12326000 | 0.62 | 23157000 | 1998 |
| CO | 27000 | 72 | 1944000 | 1594000 | 0.7 | 1361000 | 1998 |
| FL | 230000 | 98 |22540000 | 4508000 | 0.64 | 14426000 | 1998 |
បង្កើតសាច់ញាតិកំណត់តាមចំណុចមួយ ដើម្បីបង្ហាញទំនាក់ទំនងរវាងតម្លៃក្នុងមួយផោននៃទឹកឃ្មុំ និងរដ្ឋអាមេរិកដើមកំណើត។ ប្រាកដថាអ័ក្ស `y` មានកម្ពស់គ្រប់គ្រងគ្រប់រដ្ឋទាំងអស់៖
```r
library(ggplot2)
ggplot(honey, aes(x = priceperlb, y = state)) +
geom_point(colour = "blue")
```
![scatterplot 1](../../../../../translated_images/km/scatter1.86b8900674d88b26.webp)
ឥឡូវនេះ បង្ហាញទិន្នន័យដូចគ្នានេះជាមួយផ្ទាំងពណ៌ទឹកឃ្មុំ ដើម្បីបង្ហាញពីការវិវឌ្ឍតម្លៃក្នុងរយៈពេលជាច្រើនឆ្នាំ។ អ្នកអាចធ្វើនេះដោយបន្ថែមអថេរ 'scale_color_gradientn' ដើម្បីបង្ហាញការផ្លាស់ប្តូរពីឆ្នាំមួយទៅឆ្នាំមួយ៖
> ✅ សូមរៀនបន្ថែមអំពី [scale_color_gradientn](https://www.rdocumentation.org/packages/ggplot2/versions/0.9.1/topics/scale_colour_gradientn) - សាកល្បងផ្ទាំងពណ៌ឥដ្ឋស្រស់ស្អាត!
```r
ggplot(honey, aes(x = priceperlb, y = state, color=year)) +
geom_point()+scale_color_gradientn(colours = colorspace::heat_hcl(7))
```
![scatterplot 2](../../../../../translated_images/km/scatter2.4d1cbc693bad20e2.webp)
ជាមួយការប្រែប្រួលផ្ទាំងពណ៌នេះ អ្នកអាចឃើញថាមានការទៅមុខយ៉ាងខ្លាំងតាមឆ្នាំពាក់ព័ន្ធនឹងតម្លៃទឹកឃ្មុំក្នុងមួយផោនពិតប្រាកដ។ ពិតណាស់ ប្រសិនបើអ្នកមើលទៅកន្លែងមួយក្នុងទិន្នន័យដើម្បីផ្ទៀងផ្ទាត់ (ជ្រើសរើសរដ្ឋមួយ, ឧទាហរណ៍ Arizona) អ្នកអាចឃើញលំនាំនៃការកើនឡើងតម្លៃរៀងរាល់ឆ្នាំ ជាមួយនឹងលក្ខណៈលើសខ្លះ៖
| រដ្ឋ | numcol | yieldpercol | totalprod | stocks | priceperlb | prodvalue | ឆ្នាំ |
| ----- | ------ | ----------- | --------- | ------- | ---------- | --------- | ---- |
| AZ | 55000 | 60 | 3300000 | 1485000 | 0.64 | 2112000 | 1998 |
| AZ | 52000 | 62 | 3224000 | 1548000 | 0.62 | 1999000 | 1999 |
| AZ | 40000 | 59 | 2360000 | 1322000 | 0.73 | 1723000 | 2000 |
| AZ | 43000 | 59 | 2537000 | 1142000 | 0.72 | 1827000 | 2001 |
| AZ | 38000 | 63 | 2394000 | 1197000 | 1.08 | 2586000 | 2002 |
| AZ | 35000 | 72 | 2520000 | 983000 | 1.34 | 3377000 | 2003 |
| AZ | 32000 | 55 | 1760000 | 774000 | 1.11 | 1954000 | 2004 |
| AZ | 36000 | 50 | 1800000 | 720000 | 1.04 | 1872000 | 2005 |
| AZ | 30000 | 65 | 1950000 | 839000 | 0.91 | 1775000 | 2006 |
| AZ | 30000 | 64 | 1920000 | 902000 | 1.26 | 2419000 | 2007 |
| AZ | 25000 | 64 | 1600000 | 336000 | 1.26 | 2016000 | 2008 |
| AZ | 20000 | 52 | 1040000 | 562000 | 1.45 | 1508000 | 2009 |
| AZ | 24000 | 77 | 1848000 | 665000 | 1.52 | 2809000 | 2010 |
| AZ | 23000 | 53 | 1219000 | 427000 | 1.55 | 1889000 | 2011 |
| AZ | 22000 | 46 | 1012000 | 253000 | 1.79 | 1811000 | 2012 |
វិធីមួយផ្សេងទៀតក្នុងការមើលឃើញការវិវឌ្ឍនេះ គឺប្រើទំហំ ជំនួសពណ៌។ សម្រាប់អ្នកដែលមានវិបត្តិពណ៌ បែបនេះអាចជាជម្រើសល្អប្រសើរជាង។ កែប្រែការមើលឃើញរបស់អ្នក ដើម្បីបង្ហាញកំណើនតម្លៃតាមការកើនជុំវិញជុំវិញនៃចំណុច៖
```r
ggplot(honey, aes(x = priceperlb, y = state)) +
geom_point(aes(size = year),colour = "blue") +
scale_size_continuous(range = c(0.25, 3))
```
អ្នកអាចឃើញទំហំចំណុចកើនឡើងយ៉ាងលំនាំ។
![scatterplot 3](../../../../../translated_images/km/scatter3.722d21e6f20b3ea2.webp)
តើនេះជាករណីធម្មតាជារឿងផ្គត់ផ្គង់ និងតម្រូវការឬ? ដោយសារបញ្ហាដូចជា ការប្រែប្រួលអាកាសធាតុ និងការបាត់បង់ពូជមហាធំ ទឹកឃ្មុំមានបរិមាណតិចជាងមុនក្នុងមួយឆ្នាំ ហើយតម្លៃកំពុងឡើង?
ដើម្បីស្វែងរកទំនាក់ទំនងរវាងអថេរមួយចំនួនក្នុងទិន្នន័យនេះ សូមស្វែងយល់ពីក្រាភិកបន្ទាត់ខ្លះ។
## ក្រាភិកបន្ទាត់
សំនួរ៖ តើមានការកើនឡើងច្បាស់លាស់ក្នុងតម្លៃទឹកឃ្មុំក្នុងមួយផោន រៀងរាល់ឆ្នាំឬ? អ្នកអាចស្វែងរកកម្រិតមិនលំបាក ដោយបង្កើតក្រាភិកបន្ទាត់តែមួយ៖
```r
qplot(honey$year,honey$priceperlb, geom='smooth', span =0.5, xlab = "year",ylab = "priceperlb")
```
ចម្លើយ៖ មែនហើយ មានករណីលើសខ្លះនៅឆ្នាំ ២០០៣៖
![line chart 1](../../../../../translated_images/km/line1.299b576fbb2a59e6.webp)
សំនួរ៖ នៅឆ្នាំ ២០០៣ តើយើងអាចឃើញកំណើនក្នុងការផ្គត់ផ្គង់ទឹកឃ្មុំដែរឬ? ប្រសិនបើអ្នកមើលការផលិតសរុប រៀងរាល់ឆ្នាំ?
```python
qplot(honey$year,honey$totalprod, geom='smooth', span =0.5, xlab = "year",ylab = "totalprod")
```
![line chart 2](../../../../../translated_images/km/line2.3b18fcda7176ceba.webp)
ចម្លើយ៖ មិនមែនទេ។ ប្រសិនបើអ្នកមើលកម្រិតការផលិតសរុប វាហាក់បីដូចជាបានកើនឡើងនៅឆ្នាំនោះ ចូរបញ្ជាក់ថា ជាទូទៅ ចំនួនទឹកឃ្មុំផលិតកំពុងធ្លាក់ចុះនៅក្នុងឆ្នាំទាំងនេះ។
សំនួរ៖ ក្នុងករណីនោះ អ្វីជាអ្វីដែលបណ្តាលឲ្យតម្លៃទឹកឃ្មុំកើនឡើងខ្លាំងនៅឆ្នាំ ២០០៣?
ដើម្បីស្វែងរកចម្លើយនេះ អ្នកអាចស្វែងយល់ក្រាភិក facet grid មួយ។
## Facet grids
Facet grids កាន់កាប់មុខងារមួយនៃទិន្នន័យរបស់អ្នក (សម្រាប់ករណីរបស់យើង អ្នកអាចជ្រើសរើស 'ឆ្នាំ' ដើម្បីជៀសវាងការបង្កើត facet ច្រើនពេក)។ Seaborn អាចបង្កើតក្រាភិកមួយសម្រាប់មុខងារនីមួយៗនៃកូអរដោនេត x និង y ដែលអ្នកជ្រើសរើស ដើម្បីបង្កើតការប្រៀបធៀបទាន់សម័យបានកាន់តែស្រួល។ តើឆ្នាំ ២០០៣ មានភាពខុសគ្នា ក្រោមការប្រៀបធៀបបែបនេះ?
បង្កើត facet grid ដោយប្រើ `facet_wrap` ដូចដែលបានណែនាំក្នុង [ឯកសាររបស់ ggplot2](https://ggplot2.tidyverse.org/reference/facet_wrap.html)។
```r
ggplot(honey, aes(x=yieldpercol, y = numcol,group = 1)) +
geom_line() + facet_wrap(vars(year))
```
ក្នុងការមើលឃើញនេះ អ្នកអាចប្រៀបធៀបផលចំណេញលើមហាធំ និងចំនួនពូជមហាធំ រៀងរាល់ឆ្នាំគ្នា ដោយមាន wrap 3 សម្រាប់ជួរឈរ៖
![facet grid](../../../../../translated_images/km/facet.491ad90d61c2a7cc.webp)
សម្រាប់ទិន្នន័យនេះ ពុំមានអ្វីសំខាន់ផ្ដល់អារម្មណ៍ពិសេសទាក់ទងនឹងចំនួនពូជ និងផលចំណេញរបស់ពួកគេ រៀងរាល់ឆ្នាំ និងរៀងរាល់រដ្ឋទេ។ តើមានវិធីផ្សេងណាមួយដើម្បីស្វែងរកទំនាក់ទំនងរវាងអថេរទាំងពីរនេះទេ?
## ក្រាភិកបន្ទាត់គូ
សាកល្បងក្រាភិកបន្ទាត់ច្រើន ដោយដាក់ចំលងក្រាភិកបន្ទាត់ពីរលើគ្នា ប្រើប្រាស់ `par` និង `plot` របស់ R។ យើងនឹងបង្ហាញឆ្នាំនៅអ័ក្ស x ហើយបង្ហាញអ័ក្ស y ពីរជាមួយគ្នា។ ដូច្នេះ បង្ហាញផលចំណេញលើមហាធំ និងចំនួនពូជមហាធំ ជាបន្ទាត់លើគ្នា៖
```r
par(mar = c(5, 4, 4, 4) + 0.3)
plot(honey$year, honey$numcol, pch = 16, col = 2,type="l")
par(new = TRUE)
plot(honey$year, honey$yieldpercol, pch = 17, col = 3,
axes = FALSE, xlab = "", ylab = "",type="l")
axis(side = 4, at = pretty(range(y2)))
mtext("colony yield", side = 4, line = 3)
```
![superimposed plots](../../../../../translated_images/km/dual-line.fc4665f360a54018.webp)
ខណៈពេលដែលគ្មានអ្វីបង្ហាញឡើងយ៉ាងច្បាស់នៅឆ្នាំ ២០០៣ វានៅតែមើលឃើញថាគម្ពីរនេះអាចបញ្ចប់មេរៀននេះដោយសំណើចមួយ៖ បើទោះជា ចំនួនពូជមហាធំពីរបៀបចុះតាមរយៈសរុប តែក៏ចំនួនពូជមហាធំពីរត្រូវបានអនុវត្តន៍ថ្កោលទុក ទោះបីផលចំណេញលើមហាធំកំពុងធ្លាក់ចុះមែន។
បាទ សិប្បនិម្មិត្តសូម្បី!
🐝❤️
## 🚀 ប្រវត្តិនេះជាការប្រកួតប្រជែង
នៅក្នុងមេរៀននេះ អ្នកបានរៀនបន្ថែមពីការប្រើប្រាស់សាច់ញាតិកំណត់តាមចំណុច និងក្រាភិកបន្ទាត់គូ រួមមាន facet grids។ ជួបប្រទៈខ្លួនអ្នកដោយបង្កើត facet grid មួយ ប្រើទិន្នន័យផ្សេងៗ ប្រហែលជា ទិន្នន័យដែលអ្នកបានប្រើមុនមេរៀនទាំងនេះ។ សូមចំណាំរយៈពេលដែលអ្នកចំណាយក្នុងការបង្កើត និងត្រូវប្រយ័ត្នចំនួន grid ដែលអ្នកត្រូវបង្ហាញដោយប្រើវិធីសាស្ត្រនេះ។
## [ល្បែងវាយតម្លៃបន្ទាប់មេរៀន](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/23)
## សង្ខេប និងសិក្សាដោយខ្លួនឯង
ក្រាភិកបន្ទាត់អាចជារឿងសាមញ្ញ ឬស្មុគស្មាញជាងនេះ។ សូមអានបន្ថែមនៅក្នុង [ឯកសារ ggplot2](https://ggplot2.tidyverse.org/reference/geom_path.html#:~:text=geom_line()%20connects%20them%20in,which%20cases%20are%20connected%20together) អំពីវិធីសាស្ត្រផ្សេងៗដែលអ្នកអាចសាងសំនង់បាន។ ព្យាយាមបង្កើនគុណភាពក្រាភិកបន្ទាត់ដែលអ្នកបានបង្កើតនៅក្នុងមេរៀននេះជាមួយវិធីសាស្ត្រផ្សេងៗដែលបានរាយនៅក្នុងឯកសារ។
## បំណងផ្ទាល់ខ្លួន
[ចូលទៅក្នុងរោងចក្រពូជមហាធំ](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការបដិសេធ**៖
ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ទន្ទឹមនឹងការខំប្រឹងធ្វើឲ្យមានភាពត្រឹមត្រូវ សូមដឹងថាការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុស ឬភាពមិនត្រឹមត្រូវ។ ឯកសារដើមនៅក្នុងភាសាម្ដងរបស់វាត្រូវបានគេចាត់ទុកថាជាឯកសារយោងដ៏សំខាន់។ សម្រាប់ព័ត៌មានសំខាន់ គួរតែប្រែដោយអ្នកជំនាញផ្នែក មនុស្ស។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកប្រែខុសទេដែលកើតឡើងពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,175 @@
# ការបង្កើតការមើលឃើញដែលមានអត្ថន័យ
|![ Sketchnote ដោយ [(@sketchthedocs)](https://sketchthedocs.dev) ](../../../sketchnotes/13-MeaningfulViz.png)|
|:---:|
| ការមើលឃើញដែលមានអត្ថន័យ - _Sketchnote ដោយ [@nitya](https://twitter.com/nitya)_ |
> "បើអ្នកដេញធ្វើសង្ស័យទិន្នន័យយូរប៉ុណ្ណោះ វានឹងស្គាល់ការពិតគ្រប់យ៉ាង" -- [Ronald Coase](https://en.wikiquote.org/wiki/Ronald_Coase)
មនុស្សវិទ្យាសាស្ត្រទិន្នន័យមួយមានជំនាញមូលដ្ឋានមួយគឺសមត្ថភាពបង្កើតការមើលឃើញទិន្នន័យដែលមានអត្ថន័យដែលជួយឲ្យមានការឆ្លើយសំណួរដែលអ្នកមាន។ មុនពេលបង្ហាញទិន្នន័យរបស់អ្នក អ្នកត្រូវតែធានាថាវាត្រូវបានសម្អាត និងរៀបចំរួចហើយ ដូចដែលអ្នកបានធ្វើនៅចំណែកមុន។ បន្ទាប់មក អ្នកអាចចាប់ផ្តើមសម្រេចចិត្តពីរបៀបល្អបំផុតក្នុងការបង្ហាញទិន្នន័យ។
ក្នុងមេរៀននេះ អ្នកនឹងពិនិត្យឡើងវិញ៖
1. របៀបជ្រើសរើសប្រភេទតារាងត្រឹមត្រូវ
2. របៀបចៀសវាងការបោកប្រាស់តារាង
3. របៀបប្រើពណ៌
4. របៀបប៊ិចបន្តាបតារាងឲ្យអាចអានបានងាយ
5. របៀបកសាងដំណោះស្រាយតារាងវីដេអូអនុវត្តឬ 3D
6. របៀបកសាងការមើលឃើញបែបច្នៃប្រឌិត
## [សំនួរប្រឡងមុនបង្រៀន](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/24)
## ជ្រើសរើសប្រភេទតារាងត្រឹមត្រូវ
នៅក្នុងមេរៀនមុនៗ អ្នកបានសាកល្បងបង្កើតការមើលឃើញទិន្នន័យគ្រប់ប្រភេទដ៏គួរឱ្យចាប់អារម្មណ៍ដោយប្រើ Matplotlib និង Seaborn សម្រាប់ការគូរសន្លឹក។ ទូទៅ អ្នកអាចជ្រើសប្រភេទតារាងត្រឹមត្រូវសម្រាប់សំណួរដែលអ្នកកំពុងសួរតាមតារាងនេះ៖
| អ្នកត្រូវការធ្វើ | អ្នកគួរតែប្រើ |
| -------------------------- | ------------------------ |
| បង្ហាញនិន្នាការទិន្នន័យកាលៈទេសៈ | បន្ទាត់ |
| ប្រៀបធៀបប្រភេទ | បារ, ឆេះ |
| ប្រៀបធៀបសរុប | ឆេះ, បារ stacked |
| បង្ហាញទំនាក់ទំនង | Scatter, បន្ទាត់, Facet, បន្ទាត់ទ្វេ |
| បង្ហាញការបែកចែកផ្សេងៗ | Scatter, ប្រភេទនៃធរណីមាត្រ, ប្រអប់ |
| បង្ហាញអត្រាភាគរយ | ឆេះ, ដូណាត់, វ៉ាហ្វភល |
> ✅ ផ្អែកលើរូបមន្តទិន្នន័យរបស់អ្នក អ្នកប្រហែលជាត្រូវបម្លែងវាពីអត្ថបទទៅលេខ ដើម្បីឲ្យតារាងគាំទ្រវា។
## ជៀសវាងការបោកប្រាស់
បើទោះប៉ុន្តិមនុស្សវិទ្យាសាស្ត្រទិន្នន័យមានការប្រុងប្រយ័ត្នក្នុងការជ្រើសរើសតារាងត្រឹមត្រូវសម្រាប់ទិន្នន័យត្រឹមត្រូវ ក៏មានវិធីជាច្រើនដែលទិន្នន័យអាចបង្ហាញដោយរបៀបមិនត្រឹមត្រូវ ដើម្បីបញ្ជាក់ចំណុចណាមួយ ជាចម្បងក្នុងការបំភ្លឺពីទិន្នន័យ។ មានឧទាហរណ៌ជាច្រើននៃតារាង និងរូបភាពបោកប្រាស់!
[![របៀបដែលតារាងធ្វើការគង់ល្មមដោយ Alberto Cairo](../../../../../translated_images/km/tornado.2880ffc7f135f82b.webp)](https://www.youtube.com/watch?v=oX74Nge8Wkw "របៀបដែលតារាងធ្វើការគង់ល្មម")
> 🎥 ចុចរូបភាពខាងលើសម្រាប់ការនិយាយសន្និសីទអំពីតារាងបោកប្រាស់
តារាងនេះបញ្ចេញ X axis ត្រឡប់ក្រោយដើម្បីបង្ហាញវិញនូវភាពមែនតែមិនត្រឹមត្រូវ ដោយផ្អែកលើកាលបរិច្ឆេទ៖
![bad chart 1](../../../../../translated_images/km/bad-chart-1.596bc93425a8ac30.webp)
[តារាងនេះ](https://media.firstcoastnews.com/assets/WTLV/images/170ae16f-4643-438f-b689-50d66ca6a8d8/170ae16f-4643-438f-b689-50d66ca6a8d8_1140x641.jpg) មានភាពបោកប្រាស់ខ្លាំងជាងនេះ ព្រោះភ្នែកត្រូវបានទាក់ទាញទៅពីសល់បញ្ចប់ក្នុងការសន្និដ្ឋានថា ករណី COVID បានបន្ថយចុះក្នុងខណ្ឌជាច្រើន។ ជាការពិត ប្រសិនបើអ្នកមើលជិតស្តាយនៅលើកាលបរិច្ឆេទ អ្នកនឹងឃើញថាវាត្រូវបានរៀបចំឡើងវិញ ដើម្បីបង្ហាញនិន្នាការកង្វះខាតនេះ។
![bad chart 2](../../../../../translated_images/km/bad-chart-2.62edf4d2f30f4e51.webp)
ឧទាហរណ៍ល្បីល្បាញនេះប្រើពណ៌ និងការបញ្ចេញ Y axis បញ្ច្រាស់ដើម្បីបោកប្រាស់៖ ជំនួសការសន្និដ្ឋានថា ករណីស្លាប់ដោយកាំភ្លើងបានកើនឡើងក្រោយពេលចេញច្បាប់ចេញលើកាំភ្លើង គឺភ្នែកត្រូវបានបោកប្រាស់ឲ្យគិតថាផ្ទុយគ្នា។
![bad chart 3](../../../../../translated_images/km/bad-chart-3.e201e2e915a230bc.webp)
តារាងរបៀបចម្លែកនេះបង្ហាញរបៀបដែលអាចប្តូរភាគរយបាន ដោយមានផលប៉ះពាល់គួរឲ្យសើច៖
![bad chart 4](../../../../../translated_images/km/bad-chart-4.8872b2b881ffa96c.webp)
ការប្រៀបធៀបអ្វីដែលមិនអាចប្រៀបបានគឺជាទន្លឹមមួយទៀតក្នុងការបោកប្រាស់។ មានវេបសាយមួយគួរឱ្យចាប់អារម្មណ៍ [wonderful web site](https://tylervigen.com/spurious-correlations) ស្តីពី 'សមាគមបែបក្លែងក្លាយ'(spurious correlations) បង្ហាញ 'ការពិត' ដែលពាក់ព័ន្ធដូចជាអត្រាការបែកគ្នាក្នុងរដ្ឋ Maine និងការបរិច្ឆេទមាស៊ីម៉ារីន។ ក្រុម Reddit ក៏បានប្រមូលប្រមាណ [ការប្រើប្រាស់មិនស្អាត](https://www.reddit.com/r/dataisugly/top/?t=all) នៃទិន្នន័យនេះផងដែរ។
វាមានសារៈសំខាន់ក្នុងការយល់ដឹងពីរបៀបដែលភ្នែកអាចត្រូវបានបោកប្រាស់យ៉ាងងាយស្រួលដោយតារាងបោកប្រាស់។ ទោះបីជាគោលបំណងមនុស្សវិទ្យាសាស្ត្រទិន្នន័យល្អ ការជ្រើសរើសប្រភេទតារាងមិនល្អ ដូចជា តារាងឆេះដែលបង្ហាញប្រភេទច្រើនពេក អាចផ្តល់ការបោកប្រាស់បាន។
## ពណ៌
អ្នកបានឃើញនៅក្នុងតារាង 'ហិង្សាកាំភ្លើង Florida' ខាងលើ ការប្រើពណ៌អាចផ្តល់ស្រទាប់អត្ថន័យបន្ថែមទៅលើតារាង រំពាក់ជាពិសេសនូវតារាងដែលមិនបានរចនាឡើងដោយបណ្ណាល័យដូចជា ggplot2 និង RColorBrewer ដែលមានបណ្ណាល័យពណ៌ និងផ្លែឈើនានាដែលបានអនុម័តជាប្រចាំ។ ប្រសិនបើអ្នកកំពុងបង្កើតតារាងដោយដៃ សូមសិក្សាពី [ទ្រឹស្តីពណ៌](https://colormatters.com/color-and-design/basic-color-theory) បន្ថែម។
> ✅ សូមយកចិត្តទុកដាក់ ពេលរចនាតារាងថា ចំណុចចូលដំណើរការត្រូវមានសារៈសំខាន់។ អ្នកប្រើប្រាស់ខ្លះរបស់អ្នកប្រហែលជា​មានភាពមិនអាចមើលឃើញពណ៌ តើតារាងរបស់អ្នកបង្ហាញល្អសម្រាប់អ្នកដែលមានភាពមិនឃើញពណ៌?
ប្រយ័ត្នពេលជ្រើសពណ៌សម្រាប់តារាងរបស់អ្នក ពីព្រោះពណ៌អាចបញ្ជាក់អត្ថន័យមួយដែលអ្នកប្រហែលជាមិនចង់បានទេ។ 'នារីផ្កាឈូក' នៅក្នុងតារាង 'រយៈបាត' ខាងលើបញ្ជាក់អត្ថន័យ 'ស្ត្រី' មួយដែលបន្ថែមភាពអស្ចារ្យទៅតារាង។
ខណៈពេលដែល [អត្ថន័យពណ៌](https://colormatters.com/color-symbolism/the-meanings-of-colors) ប្រហែលជាពីរពណ៌គ្នានៅតំបន់ផ្សេងៗនៃពិភពលោក ហើយមានការប្រែប្រួលក្នុងអត្ថន័យទៅតាមស្រទាប់ពណ៌របស់ពួកវា។ ជាភាគច្រើន អត្ថន័យពណ៌រួមមាន៖
| ពណ៌ | អត្ថន័យ |
| ------- | ------------------- |
| ក្រហម | អំណាច |
| ខៀវ | ទំនុកចិត្ត, ភាពស្មោះត្រង់ |
| លឿង | ភាពរីករាយ, ការប្រុងប្រយ័ត្ន |
| បៃតង | បរិស្ថាន, ផ្លូវ, ភាពស្ទះចិត្ត |
| ស្វាយ | ភាពរីករាយ |
| ក្រហមស្វាយ | ភាពរីករាយ |
បើអ្នកត្រូវបង្កើតតារាងដែលមានពណ៌ប៊ិចបន្តា ត្រូវអនុវត្តឲ្យតារាងមានចំណូលដំណើរ និងពណ៌ដែលអ្នកជ្រើសរើសត្រូវសមនឹងអត្ថន័យដែលអ្នកចង់ផ្តល់។
## ការប៊ិចបន្តាតារាងឲ្យអាចអានបានងាយ
តារាងមិនមានអត្ថន័យទេ ប្រសិនបើវាមិនអាចអានបាន! សូមយកពេលមើលទៅកាន់ការប៊ិចបន្តាបំផុតទទឹង និងកម្ពស់របស់តារាងឲ្យសមស្របជាមួយទិន្នន័យ។ ប្រសិនបើអថេរមួយ (ដូចជា រដ្ឋទាំង 50) ត្រូវបានបង្ហាញ សូមបង្ហាញវាឡើងលើ Y axis ប្រសិនបើអាចធ្វើបាន ដើម្បីចៀសវាងការស្ទូតទឹកដៃម្ខាង។
សរសេរឈ្មោះអក្ខរាវរណៈរបស់អ្នក, ផ្តល់ទ្រង្វង់ប្រសិនបើចាំបាច់ ហើយផ្តល់ឧបករណ៍ជំនួយសម្រាប់ការយល់ដឹងល្អប្រសើរជាងនេះ។
ប្រសិនបើទិន្នន័យរបស់អ្នកគឺអត្ថបទហើយវាយ៉ាងរំពេចលើ X axis អ្នកអាចមៀលអត្ថបទឲ្យមានកោងមួយសម្រាប់អានងាយ។ [plot3D](https://cran.r-project.org/web/packages/plot3D/index.html) ផ្តល់ជូននូវភាពសមហត្ថភាពក្នុងការគូរ 3d ប្រសិនបើទិន្នន័យរបស់អ្នកគាំទ្រវា។ ការមើលឃើញទិន្នន័យស្មុគស្មាញអាចបង្កើតបានដោយវា។
![3d plots](../../../../../translated_images/km/3d.db1734c151eee87d.webp)
## ការវិលតួ និងការបង្ហាញតារាង 3D
ខ្លះនៃការមើលឃើញទិន្នន័យល្អបំផុតសព្វថ្ងៃគឺមានការវិលតួ។ Shirley Wu មានការមើលឃើញដ៏អស្ចារ្យដែលបានធ្វើជាមួយ D3 ដូចជា '[ផ្កាភាពភាពខ្មៅ](http://bl.ocks.org/sxywu/raw/d612c6c653fb8b4d7ff3d422be164a5d/)' ដែលផ្កាទីមួយមួយជាការមើលឃើញនៃភាពយន្តមួយ។ ឧទាហរណ៍មួយទៀតសម្រាប់ Guardian គឺ 'bussed out', រឿងអន្តរកម្មបញ្ចូលការមើលឃើញជាមួយ Greensock និង D3 គ្រប់បែបបទអត្ថបទមានការវាយតម្លៃ scrollytelling ដើម្បីបង្ហាញពីរបៀប NYC ដោះស្រាយបញ្ហាអ្នកគ្មានផ្ទះដោយបញ្ជូនមនុស្សចេញពីទីក្រុង។
![busing](../../../../../translated_images/km/busing.8157cf1bc89a3f65.webp)
> "Bussed Out: របៀបដែលអាមេរិកចល័តមនុស្សគ្មានផ្ទះ" ពី [the Guardian](https://www.theguardian.com/us-news/ng-interactive/2017/dec/20/bussed-out-america-moves-homeless-people-country-study)។ ការមើលឃើញដោយ Nadieh Bremer & Shirley Wu
ខណៈពេលមេរៀននេះមិនគ្រប់គ្រាន់សម្រាប់បង្រៀនជម្រាលជាប្រវត្តិសាស្ត្រអំពីបណ្ណាល័យមើលឃើញដ៏មានឥទ្ធិពលទាំងនេះទេ សូមសាកល្បង D3 ក្នុងកម្មវិធី Vue.js ដោយប្រើបណ្ណាល័យមួយសម្រាប់បង្ហាញការមើលឃើញសៀវភៅ "Dangerous Liaisons" ជាបណ្ដាញសង្គមវិលតួ។
> "Les Liaisons Dangereuses" គឺជារឿងនិទានក្នុងរូបមន្ត epistolary novel, ឬជារឿងនិទានដែលបង្ហាញជាសំណុំលិខិតមួយ។ បានសរសេរឡើងក្នុងឆ្នាំ ១៧៨២ ដោយ Choderlos de Laclos ។ វាកាំកាត់រឿងរបស់ការចេញចលនាតាមសង្គមឥតលោភល័ក្ខពីមនុស្សច្រើនក្នុងអាថ៌កំបាំងសង្គមបែបរបស់អាណាព្យាបាលបារាំងនៅដើមទី ១៨ សតវត្ស Vicomte de Valmont និង Marquise de Merteuil។ ពួកគេស្លាប់នៅចុងបញ្ចប់ ប៉ុន្តែគ្មានការចោទថាបានបង្កឲ្យមានការប៉ះពាល់សង្គមយ៉ាងខ្លាំងមួយ។ រឿងនេះបែកខ្លួនជាសំណុំអក្សរដែលបានសរសេរដល់មនុស្សផ្សេងៗក្នុងវង់កូនក្រុមរបស់ពួកគេ រៀបចំផែនការសង្រ្គោះឬបង្កការេរ៉ុក។ បង្កើតភាពមើលឃើញនៃលិខិតទាំងនេះដើម្បីរកឃើញអ្នកសំខាន់ៗនៅក្នុងរឿង ដោយការមើលឃើញ។
អ្នកនឹងបញ្ចប់កម្មវិធីវេបមួយដែលបង្ហាញទិដ្ឋភាពវិលតួបណ្ដាញសង្គមនេះ។ វាប្រើបណ្ណាល័យដែលបានបង្កើតឡើងដើម្បីបង្កើត [រូបភាពបណ្ដាញ](https://github.com/emiliorizzo/vue-d3-network) ដោយប្រើ Vue.js និង D3។ ពេលកម្មវិធីដំណើរការ អ្នកអាចទាញកំណត់ចំណុចនៅលើអេក្រង់ដើម្បីរំកិលទិន្នន័យបាន។
![liaisons](../../../../../translated_images/km/liaisons.90ce7360bcf84765.webp)
## គំរោង៖ បង្កើតតារាងបង្ហាញបណ្ដាញដោយប្រើ D3.js
> ឯកសារហ្វូលឌ័រមេរៀននេះមានហ្វូលឌ័រមួយឈ្មោះ `solution` ដែលអ្នកអាចរកឃើញគំរោងបានបញ្ចប់សម្រាប់យោង។
1. អនុវត្តតាមការណែនាំនៅក្នុងឯកសារ README.md នៅក្នុងរុក្ខជាតិហ្វូលឌ័រចាប់ផ្តើម រួចប្រាកដថាអ្នកមាន NPM និង Node.js ដំណើរការលើម៉ាស៊ីនរបស់អ្នក មុននឹងតំឡើងផ្នែកពឹងផ្អែកនៃគំរោងរបស់អ្នក។
2. បើកហ្វូលឌ័រដូចជា `starter/src` ។ អ្នកនឹងរកឃើញហ្វូលឌ័រមួយឈ្មោះ `assets` ដែលនៅក្នុងនោះមានឯកសារ .json ដែលមានលិខិតទាំងអស់ពីរឿងនិទាន ចំនួនទាំងអស់ ហើយមានការ<E19EB6>ANNOTATED 'to' និង 'from'។
3. បញ្ចប់កូដនៅក្នុង `components/Nodes.vue` ដើម្បីបើកអនុញ្ញាតការមើលឃើញ។ ស្វែងរកមេធដ្ឋ called `createLinks()` ហើយបន្ថែមល្បង nested loop ខាងក្រោមនេះ។
រុងរឿងក្នុងវត្ថុ .json ដើម្បីចាប់យកទិន្នន័យ 'to' និង 'from' សម្រាប់លិខិត ហើយបង្កើតអាប់អject `links` ឲ្យបណ្ណាល័យវិចិត្រត្រូវបរិភោគវា៖
```javascript
//វិលជុំទៀតតាមអក្សរ
let f = 0;
let t = 0;
for (var i = 0; i < letters.length; i++) {
for (var j = 0; j < characters.length; j++) {
if (characters[j] == letters[i].from) {
f = j;
}
if (characters[j] == letters[i].to) {
t = j;
}
}
this.links.push({ sid: f, tid: t });
}
```
ដំណើរការកម្មវិធីរបស់អ្នកពី terminal (npm run serve) ហើយរីករាយជាមួយការមើលឃើញ!
## 🚀 챌린지
ទស្សនាក្នុងអ៊ីនធឺណិតដើម្បីរកការមើលឃើញខុសៗគ្នា។ តើអ្នកនិពន្ធបោកអ្នកប្រើប្រាស់ដោយរបៀបណា ហើយតើវាមានគោលបំណងមែនទេ? ជំរុញកែប្រែការមើលឃើញដើម្បីបង្ហាញពីរបៀបដែលគួរតែមាន។
## [សំនួរប្រឡងបន្ទាប់បង្រៀន](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/25)
## ការពិនិត្យឡើងវិញ និងសិក្សាឯករាជ្យ
នេះជាអត្ថបទមួយចំនួនសម្រាប់អានអំពីការបោកប្រាស់ការមើលឃើញទិន្នន័យ៖
https://gizmodo.com/how-to-lie-with-data-visualization-1563576606
http://ixd.prattsi.org/2017/12/visual-lies-usability-in-deceptive-data-visualizations/
សូមមើលការមើលឃើញគួរឱ្យចាប់អារម្មណ៍នេះសម្រាប់ទ្រព្យសម្បត្តិសាស្ដ្រ និងវត្ថុបុរាណ៖
https://handbook.pubpub.org/
អានអត្ថបទនេះស្តីពីរបៀបដែលវីដេអូអនុវត្តអាចបង្កើនការមើលឃើញរបស់អ្នក៖
https://medium.com/@EvanSinar/use-animation-to-supercharge-data-visualization-cd905a882ad4
## មុខងារ
[បង្កើតការមើលឃើញផ្ទាល់ខ្លួនរបស់អ្នក](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការបដិសេធ**៖
ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលដែលយើងខិតខំរកភាពត្រឹមត្រូវ សូមជ្រាបថាការបកប្រែដោយស្វ័យប្រវត្តិនៅតែមជ្រុលខុសឬមានកំហុសបាន។ ឯកសារដើមជាភាសាបំណើតគួរត្រូវបានគិតថាជា ប្រភពត្រឹមត្រូវ និងមានសមត្ថិ్యత។ សម្រាប់ព័ត៌មានសំខាន់ៗ ការបកប្រែមនុស្សវិជ្ជាជីវៈមានការផ្ដល់អនុសាសន៍។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកប្រែខុសណាមួយដែលកើតឡើងពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,36 @@
# Visualizations
![a bee on a lavender flower](../../../translated_images/km/bee.0aa1d91132b12e3a.webp)
> រូបថតដោយ <a href="https://unsplash.com/@jenna2980?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Jenna Lee</a> នៅលើ <a href="https://unsplash.com/s/photos/bees-in-a-meadow?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Unsplash</a>
ការបង្ហាញទិន្នន័យគឺជារឿងមួយសំខាន់បំផុតបំផុតសម្រាប់អ្នកវិទ្យាសាស្ត្រទិន្នន័យ។ រូបភាពមានតំលៃស្មើនឹងពាក្យ ១០០០ ពាក្យ ហើយការបង្ហាញអាចជួយអ្នកកំណត់ចំណុចគួរឲទាក់ទាញនានានៃទិន្នន័យរបស់អ្នកដូចជាឧបសគ្គ, ការប្រមាណខុស, ការបំបែកជាក្រុម, និន្ទានុប្បវត្តិ និងជាច្រើនទៀត ដែលអាចជួយអ្នកយល់ចាំបាច់ពីរឿងដែលទិន្នន័យរបស់អ្នកកំពុងព្យាយាមប្រាប់។
នៅក្នុងមេរៀន៥នេះ អ្នកនឹងត្រូវស្រាវជ្រាវទិន្នន័យដែលបានប្រមូលចំពោះធម្មជាតិ ហើយបង្កើតការបង្ហាញដែលគួរឲ្យចាប់អារម្មណ៍ និងស្អាត ប្រើបច្ចេកទេសជាច្រើនផ្សេងៗ។
| លេខប្រធានបទ | ប្រធានបទ | មេរៀនដែលភ្ជាប់ | អ្នកនិពន្ធ |
| :-----------: | :--: | :-----------: | :----: |
| 1. | ការបង្ហាញបរិមាណ | <ul> <li> [Python](09-visualization-quantities/README.md)</li> <li>[R](../../../3-Data-Visualization/R/09-visualization-quantities) </li> </ul>|<ul> <li> [Jen Looper](https://twitter.com/jenlooper)</li><li> [Vidushi Gupta](https://github.com/Vidushi-Gupta)</li> <li>[Jasleen Sondhi](https://github.com/jasleen101010)</li></ul> |
| 2. | ការបង្ហាញចែកចាយ | <ul> <li> [Python](10-visualization-distributions/README.md)</li> <li>[R](../../../3-Data-Visualization/R/10-visualization-distributions) </li> </ul>|<ul> <li> [Jen Looper](https://twitter.com/jenlooper)</li><li> [Vidushi Gupta](https://github.com/Vidushi-Gupta)</li> <li>[Jasleen Sondhi](https://github.com/jasleen101010)</li></ul> |
| 3. | ការបង្ហាញអត្រា | <ul> <li> [Python](11-visualization-proportions/README.md)</li> <li>[R](../../../3-Data-Visualization) </li> </ul>|<ul> <li> [Jen Looper](https://twitter.com/jenlooper)</li><li> [Vidushi Gupta](https://github.com/Vidushi-Gupta)</li> <li>[Jasleen Sondhi](https://github.com/jasleen101010)</li></ul> |
| 4. | ការបង្ហាញទំនាក់ទំនង | <ul> <li> [Python](12-visualization-relationships/README.md)</li> <li>[R](../../../3-Data-Visualization) </li> </ul>|<ul> <li> [Jen Looper](https://twitter.com/jenlooper)</li><li> [Vidushi Gupta](https://github.com/Vidushi-Gupta)</li> <li>[Jasleen Sondhi](https://github.com/jasleen101010)</li></ul> |
| 5. | ការបង្កើតការបង្ហាញដែលមានអត្ថន័យ | <ul> <li> [Python](13-meaningful-visualizations/README.md)</li> <li>[R](../../../3-Data-Visualization) </li> </ul>|<ul> <li> [Jen Looper](https://twitter.com/jenlooper)</li><li> [Vidushi Gupta](https://github.com/Vidushi-Gupta)</li> <li>[Jasleen Sondhi](https://github.com/jasleen101010)</li></ul> |
### ការសរសើរ
មេរៀនបង្ហាញទិន្នន័យទាំងនេះត្រូវបានសរសេរជាមួយ🌸 ដោយ [Jen Looper](https://twitter.com/jenlooper), [Jasleen Sondhi](https://github.com/jasleen101010) និង [Vidushi Gupta](https://github.com/Vidushi-Gupta)។
🍯 ទិន្នន័យសម្រាប់ការផលិតទឹកឃ្មុំនៅអាមេរិកត្រូវបានយកពីគម្រោងរបស់ Jessica Li នៅលើ [Kaggle](https://www.kaggle.com/jessicali9530/honey-production)។ [ទិន្នន័យ](https://usda.library.cornell.edu/concern/publications/rn301137d) ត្រូវបានទទួលពី [ការិយាល័យរដ្ឋអាមេរិកផ្នែកកសិកម្ម](https://www.nass.usda.gov/About_NASS/index.php)។
🍄 ទិន្នន័យសម្រាប់ផ្សិតក៏ត្រូវបានយកពី [Kaggle](https://www.kaggle.com/hatterasdunton/mushroom-classification-updated-dataset) ដែលបានកែប្រែដោយ Hatteras Dunton។ ទិន្នន័យនេះរួមមានការពិពណ៌នាអំពីគំរូកាល्पनिकទាក់ទងនឹងបំរែបំរួល ២៣ ប្រភេទផ្សិតដែលមានរាងក្រចកនៅក្នុងក្រុម Agaricus និង Lepiota។ ផ្សិតគារពីពហុមុខមាត់ Audubon Society ច្រើនបានចងក្រងនៅឆ្នាំ ១៩៨១។ ទិន្នន័យនេះបានអំណោយទៅ UCI ML 27 ឆ្នាំ ១៩៨៧។
🦆 ទិន្នន័យសម្រាប់បក្សី Minnesota មកពី [Kaggle](https://www.kaggle.com/hannahcollins/minnesota-birds) ដែលបានយកពី [Wikipedia](https://en.wikipedia.org/wiki/List_of_birds_of_Minnesota) ដោយ Hannah Collins។
ទិន្នន័យទាំងអស់នេះមានអាជ្ញាបណ្ណជា [CC0: Creative Commons](https://creativecommons.org/publicdomain/zero/1.0/).
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការបដិសេធ**៖
ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាកម្មបបូរសមាសភាដោយ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលយើងខ្ញុំខិតខំដើម្បីបានភាពត្រឹមត្រូវ សូមបញ្ចាក់ថាការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុស ឬមិនត្រឹមត្រូវ។ ឯកសារដើមក្នុងភាសាតំបន់គួរត្រូវបានគេយកមកជាថ្នាក់ដើម។ សម្រាប់ព័ត៌មានសំខាន់ៗ ការបកប្រែដោយមនុស្សជំនាញត្រូវបានណែនាំ។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកស្រាយខុសពីការប្រើប្រាស់ការបកប្រែនេះទេ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,112 @@
# ការណែនាំអំពីជីវចក្រ Data Science
|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/14-DataScience-Lifecycle.png)|
|:---:|
| ការណែនាំអំពីជីវចក្រ Data Science - _Sketchnote by [@nitya](https://twitter.com/nitya)_ |
## [Pre-Lecture Quiz](https://ff-quizzes.netlify.app/en/ds/quiz/26)
នៅពេលនេះ អ្នកប្រហែលជាធ្លាប់បានដឹងថា វិទ្យាសាស្ត្រទិន្នន័យគឺជាដំណើរការ។ ដំណើរការនេះអាចបំបែកជាពីរពីរក្នុងចំណោម 5 ជំហាន ៖
- ការកាន់កាប់
- ការប្រព្រឹត្តការ
- ការវិភាគ
- ការទំនាក់ទំនង
- ការថែទាំ
មេរៀននេះផ្តោតលើបីផ្នែកនៃជីវចក្រ៖ ការកាន់កាប់ ការប្រព្រឹត្តការ និងការថែទាំ។
![Diagram of the data science lifecycle](../../../../translated_images/km/data-science-lifecycle.a1e362637503c4fb.webp)
> រូបថតដោយ [Berkeley School of Information](https://ischoolonline.berkeley.edu/data-science/what-is-data-science/)
## ការកាន់កាប់
ជំហានដំបូងនៃជីវចក្រ មានសារៈសំខាន់ណាស់ ពីព្រោះជំហានបន្ទាប់ទាំងអស់ស្ថិតក្រោមការគ្រប់គ្រងរបស់វា។ វាជាផ្នែកពីរដែលរួមបញ្ចូលគ្នា៖ ការទទួលទិន្នន័យ និងការកំណត់គោលបំណង និងបញ្ហាដែលត្រូវបានដោះស្រាយ។
ការកំណត់គោលបំណងនៃគម្រោងត្រូវការព័ត៌មានជ្រៅជាងនៃបញ្ហាឬសំណួរ។ ជាទីបំផុត ត្រូវកំណត់ និងទទួលទិញជាអ្នកដែលត្រូវការដោះស្រាយបញ្ហារបស់ពួកគេ។ ពួកគេអាចជាអ្នកមានចំណាប់អារម្មណ៍ក្នុងអាជីវកម្មឬអ្នកឧបត្ថម្ភគម្រោង ដែលអាចជួយកំណត់តើនរណា ឬអ្វីនឹងទទួលអត្ថប្រយោជន៍ពីគម្រោងនេះ ដូចជាតើអ្វី និងហេតុអ្វីពួកគេចង់បានវា។ គោលបំណងដែលបានកំណត់ល្អគួរត្រូវមានការវាស់វែង និងកំណត់គុណភាពដើម្បីកំណត់លទ្ធផលដែលអាចទទួលបាន។
សំណួរដែលអ្នកវិទ្យាសាស្ត្រទិន្នន័យអាចសួរ៖
- តើបញ្ហានេះធ្លាប់ត្រូវបានជម្រះមុននេះទេ? តើបានរកឃើញអ្វីខ្លះ?
- តើគោលបំណងនិងគោលដៅត្រូវបានយល់ដោយអ្នកទាំងអស់ដែលពាក់ព័ន្ធទេ?
- តើមានភាពមិនច្បាស់ណាមួយទេ ហើយតើធ្វើដូចម្តេចដើម្បីកាត់បន្ថយវា?
- តើមានកម្រិតជាប់ដានអ្វីខ្លះ?
- តើលទ្ធផលចុងក្រោយអាចមានរូបរាងដូចម្តេចខ្លះ?
- តើមានធនធានប៉ុន្មាន (ពេលវេលា មនុស្ស កុំព្យូទ័រ) ដែលអាចប្រើបាន?
បន្ទាប់មក គឺការកំណត់ ប្រារព្ធ និងបញ្ចប់បង្ហាញទិន្នន័យដែលចាំបាច់ដើម្បីទទួលបានគោលបំណងទាំងនេះ។ នៅជំហានទទួលទិន្នន័យនេះ អ្នកវិទ្យាសាស្ត្រទិន្នន័យត្រូវតែវាយតម្លៃពីបរិមាណ និងគុណភាពនៃទិន្នន័យផងដែរ។ នេះត្រូវការប្រើការជ្រែកចេញទិន្នន័យដើម្បីបញ្ជាក់ថា អ្វីដែលបានទទួលនឹងគាំទ្រការសម្រេចបានលទ្ធផលដែលចង់បាន។
សំណួរដែលអ្នកវិទ្យាសាស្ត្រទិន្នន័យអាចសួរអំពីទិន្នន័យ៖
- តើមានទិន្នន័យអ្វីខ្លះដែលមាននៅចំពោះខ្ញុំ?
- នរណាជាម្ចាស់ទិន្នន័យនេះ?
- តើមានបញ្ហាអំពីភាពឯកជនដូចម្ដេចខ្លះ?
- តើខ្ញុំមានគ្រប់គ្រាន់ដើម្បីដោះស្រាយបញ្ហានេះទេ?
- តើទិន្នន័យមានគុណភាពដែលអាចទទួលយកសម្រាប់បញ្ហានេះដែរទេ?
- បើខ្ញុំរកឃើញព័ត៌មានបន្ថែមតាមរយៈទិន្នន័យនេះ តើយើងត្រូវគិតបម្លែង ឬកំណត់គោលបំណងឡើងវិញទេ?
## ការប្រព្រឹត្តការ
ជំហានប្រព្រឹត្តការនៃជីវចក្រ ផ្តោតលើការរកមើលលំនាំក្នុងទិន្នន័យ និងការបង្កើតម៉ូដែល។ បច្ចេកទេសខ្លះដែលប្រើនៅក្នុងជំហាននេះត្រូវការ វិធីសាស្រ្តស្ថិតិ ដើម្បីរកលំនាំ។ បែបបទធម្មតា នេះជាកិច្ចការដ៏ធ្ងន់ធ្ងរ និងពិបាកសម្រាប់មនុស្ស ប៉ុន្តែកុំព្យូទ័រជាឧបករណ៍ជួយលឿនកាន់តែអភិវឌ្ឍ។ ជំហាននេះក៏ជាកន្លែងដែលវិទ្យាសាស្ត្រទិន្នន័យ និងការសិក្សារៀនម៉ាស៊ីន (machine learning) ប្រសីលភាពគ្នា។ ដូចដែលអ្នកបានរៀននៅម៉េរៀនដំបូង ការសិក្សារៀនម៉ាស៊ីនគឺជាដំណើរការបង្កើតម៉ូដែលឲ្យយល់ពីទិន្នន័យ។ ម៉ូដែលជាការតំណាងឲ្យទំនាក់ទំនងរវាងអថេរនានា ក្នុងទិន្នន័យ ដែលជួយទស្សន៍ទាយលទ្ធផល។
បច្ចេកទេសទូទៅដែលប្រើនៅជំហាននេះ បានរៀបរៀងនៅក្នុងកម្មវិធីសិក្សា ML សម្រាប់អ្នកចាប់ផ្តើម។ តាមដានតំណខាងក្រោមដើម្បីស្វែងយល់បន្ថែម៖
- [Classification](https://github.com/microsoft/ML-For-Beginners/tree/main/4-Classification): ការរៀបចំទិន្នន័យតាមប្រភេទ ដើម្បីប្រើប្រាស់បានមានប្រសិទ្ធភាព។
- [Clustering](https://github.com/microsoft/ML-For-Beginners/tree/main/5-Clustering): ការបែងចែកទិន្នន័យជាក្រុមស្រដៀងគ្នា។
- [Regression](https://github.com/microsoft/ML-For-Beginners/tree/main/2-Regression): កំណត់ទំនាក់ទំនងនៃអថេរដើម្បីទស្សន៍ទាយ តម្លៃ ឬព្យាករណ៍។
## ការថែទាំ
នៅក្នុងរូបភាពជីវចក្រ អ្នកអាចឃើញថា ការថែទាំស្ថិតនៅចន្លោះការកាន់កាប់ និងការប្រព្រឹត្តការ។ ការថែទាំគឺជាដំណើរការនៃការគ្រប់គ្រង, រក្សាទុក និងការពារ ទិន្នន័យនៅលើដំណើរការនៃគម្រោង ហើយត្រូវត្រូវបានគិតគូរជារៀងរហូតទាំងមូលក្នុងគម្រោង។
### រក្សាទុកទិន្នន័យ
ការពិចារណារបៀប និងទីតាំងរក្សាទុកទិន្នន័យអាចមានឥទ្ធិពលដល់ថ្លៃដើមនៃការរក្សាទុក និងប្រសិទ្ធភាពនៃការចូលដំណើរការទិន្នន័យ។ ការសម្រេចចិត្តដូចនេះមិនអាចធ្វើដោយអ្នកវិទ្យាសាស្ត្រទិន្នន័យតែម្នាក់ឡើយ ប៉ុន្តែពួកគេអាចធ្វើជម្រើសដែលជាផ្នែកនៃការប្រើប្រាស់ទិន្នន័យ ដោយផ្អែកទៅលើប្រភេទនៃការរក្សាទុក។
នេះជាផ្នែកមួយចំនួនរបស់ប្រព័ន្ធរក្សាទុកទិន្នន័យសម័យទំនើបដែលអាចប៉ះពាល់ដល់ជម្រើសទាំងនេះ៖
**On premise vs off premise vs cloud សាធារណៈ ឬឯកជន**
On premise មានន័យថាការគ្រប់គ្រង និងទទួលទិន្នន័យនៅលើឧបករណ៍ផ្ទាល់ខ្លួនរបស់អ្នក ដូចជាការកាន់កាប់ម៉ាស៊ីនមេដែលផ្ទុកទិន្នន័យ ប្រហែលជាមានប្រភពផ្ទាល់ខ្លួន។ Off premise មានន័យថាភ្ជាប់ទៅឧបករណ៍ដែលមិនមែនមកពីអ្នកផ្ទាល់ ដូចជាការិយាល័យទិន្នន័យ (data center) មួយ។ Cloud សាធារណៈគឺជាជម្រើសពេញនិយមសម្រាប់រក្សាទិន្នន័យ ដែលមិនតម្រូវការយល់ដឹងពីរបៀប ឬទីតាំងទីប្រែអាចរកបាន ខណៈដែលសាធារណៈមានន័យថា មានប្រព័ន្ធផ្នែកខាងក្រោមរួមគ្នាដែលចែករំលែកគ្នា ដោយអ្នកប្រើ cloud ទាំងអស់។ អង្គការមួយចំនួនមានគោលនយោបាយសុវត្ថិភាពតឹងរឹង ដែលតម្រូវឲ្យពួកគេលទូទាត់ការចូលកាន់ឧបករណ៍ដែលទិន្នន័យត្រូវបានផ្ទុក ហើយពឹងផ្អែកទៅលើ cloud ឯកជន ដែលផ្តល់សេវាកម្ម cloud ផ្ទាល់ខ្លួន។ អ្នកនឹងរៀនពីទិន្នន័យក្នុង cloud ផ្សេងទៀតនៅ [មេរៀនបន្ទាប់](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/5-Data-Science-In-Cloud)។
**ទិន្នន័យត្រជាក់ vs ទិន្នន័យក្តៅ**
នៅពេលដែលអ្នកបណ្តុះបណ្តាលម៉ូដែល អ្នកអាចត្រូវការទិន្នន័យបណ្តុះបណ្តាលបន្ថែម។ ប្រសិនបើអ្នកពេញចិត្តនឹងម៉ូដែលរបស់អ្នក តែក៏មានទិន្នន័យបន្ថែមមកសម្រាប់ម៉ូដែលដើម្បីបំពេញគោលបំណងរបស់វា។ នៅគ្រប់ករណីថ្លៃដើមនៃការរក្សា និងចូលដំណើរការទិន្នន័យ នឹងកើនឡើង ពេលអ្នកផ្ទុកទិន្នន័យនៅច្រើន។ ការបំបែកទិន្នន័យដែលមិនត្រូវបានប្រើជាញឹកញាប់ ដែលហៅថា ទិន្នន័យត្រជាក់ ពីទិន្នន័យក្តៅ ដែលប្រើប្រាស់ច្រើន ជាជម្រើសដែលគិតថ្លៃសន្សំសំចៃតាមរយៈថ្នាំផ្តល់សេវាឧបករណ៍ ឬកម្មវិធី។ ប្រសិនបើទិន្នន័យត្រជាក់ត្រូវបានអោយចូលដំណើរការ វាក៏អាចចំណាយពេលខ្លះ ដើម្បីយកវាមក ប្រសិនបើប្រៀបធៀបទិន្នន័យក្តៅ។
### ការគ្រប់គ្រងទិន្នន័យ
នៅពេលអ្នកធ្វើការជាមួយទិន្នន័យ អ្នកអាចរកឃើញថា ទិន្នន័យខ្លះត្រូវបានសម្អាតដោយប្រើកិច្ចវិធីខ្លះៗដែលបានរៀបរាប់នៅមេរៀនដែលផ្ដោតលើ [ការប្រែធ្វើទិន្នន័យ](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/2-Working-With-Data/08-data-preparation) ដើម្បីបង្កើតម៉ូដែលមានភាពត្រឹមត្រូវ។ នៅពេលទិន្នន័យថ្មីមកដល់ វាចាំបាច់ត្រូវបានអនុវត្តកម្មវិធីមួយចំនួនដូចគ្នា ដើម្បីថែរក្សាគុណភាពឲ្យមានសមភាព។ គម្រោងខ្លះនឹងរួមបញ្ចូលការប្រើប្រាស់ឧបករណ៍ស្វ័យប្រវត្តិ សម្រាប់ការសម្អាត ការបញ្ជេញ និងកាត់បន្ថយទិន្នន័យ មុននាំទិន្នន័យទៅទីតាំងចុងក្រោយ។ Azure Data Factory គឺជាគំរូមួយនៃឧបករណ៍ទាំងនេះ។
### ការជៀសវាងទិន្នន័យ
គោលបំណងមួយចម្បងនៃការជៀសវាងទិន្នន័យ គឺធានាថាអ្នកដែលកំពុងប្រើវា មានការគ្រប់គ្រងលើអ្វីដែលបានប្រមូល និងបរិបទដែលវាត្រូវបានប្រើ។ ការកាន់កាប់ទិន្នន័យយ៉ាងសុវត្ថិ គឺរួមមានការកំណត់អោយមានការចូលប្រើតែមានសិទ្ធិប៉ុណ្ណោះ ការ​គោរពច្បាប់ក្នុងស្រុក និងបទបញ្ជា គ្រប់គ្រងសីលធម៌ ដូចដែលបង្ហាញក្នុង [មេរៀនសីលធម៌](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/1-Introduction/02-ethics)។
នេះជារឿងដែលក្រុមហ៊ុនមួយអាចធ្វើបាន ដើម្បីគិតពីសុវត្ថិភាព៖
- ធានាថាទិន្នន័យទាំងអស់ត្រូវបានបិទបាំង
- ផ្ដល់ព័ត៌មានដល់អតិថិជន អំពីរបៀបដែលទិន្នន័យរបស់ពួកគេត្រូវបានប្រើ
- ដកចេញការចូលប្រើទិន្នន័យពីអ្នកដែលបានចាកចេញពីគម្រោង
- អនុញ្ញាតឲ្យសមាជិកគម្រោងខ្លះៗតែប្តូរទិន្នន័យបាន
## 🚀 បទបង្ហើប
មានជំនាន់ជាច្រើននៃជីវចក្រ Data Science ដែលក្នុងនីមួយជំហាន អាចមានឈ្មោះ និងចំនួនជំហានខុសគ្នា ប៉ុន្តែស្រដៀងគ្នាទៅនឹងដំណើរការដូចបានបង្ហាញក្នុងមេរៀននេះ។
ស្វែងយល់អំពី [ជីវចក្រ Team Data Science Process](https://docs.microsoft.com/en-us/azure/architecture/data-science-process/lifecycle) និង [Cross-industry standard process for data mining](https://www.datascience-pm.com/crisp-dm-2/)។ ចុះបញ្ជី 3 ចំណុចស្រដៀង និងខុសគ្នារវាងទាំងពីរ។
|Team Data Science Process (TDSP)|Cross-industry standard process for data mining (CRISP-DM)|
|--|--|
|![Team Data Science Lifecycle](../../../../translated_images/km/tdsp-lifecycle2.e19029d598e2e73d.webp) | ![Data Science Process Alliance Image](../../../../translated_images/km/CRISP-DM.8bad2b4c66e62aa7.webp) |
| រូបភាពដោយ [Microsoft](https://docs.microsoft.comazure/architecture/data-science-process/lifecycle) | រូបភាពដោយ [Data Science Process Alliance](https://www.datascience-pm.com/crisp-dm-2/) |
## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ds/quiz/27)
## សង្ខេប និងសិក្សាផ្ទាល់ខ្លួន
ការអនុវត្តជីវចក្រ Data Science ត្រូវការភារកិច្ច និងការងារច្រើន មួយចំនួនអាចផ្តោតលើផ្នែកជាក់លាក់នៃជំហាននីមួយៗ។ Team Data Science Process ផ្តល់ធនធានមួយចំនួន ដែលពិពណ៌នាអំពីប្រភេទតួនាទី និងភារកិច្ចដែលនរណាម្នាក់អាចមាននៅក្នុងគម្រោង។
* [Team Data Science Process roles and tasks](https://docs.microsoft.com/en-us/azure/architecture/data-science-process/roles-tasks)
* [Execute data science tasks: exploration, modeling, and deployment](https://docs.microsoft.com/en-us/azure/architecture/data-science-process/execute-data-science-tasks)
## កិច្ចការផ្ដល់
[ការវាយតម្លៃ Dataset](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការ​ព្រមាន**៖
ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលដែលយើងខំប្រឹងប្រែងឱ្យមានភាពត្រឹមត្រូវ សូមជ្រាបថាការបកប្រែដោយស្វ័យប្រវត្តិនោះអាចមានកំហុស ឬ ការមិនត្រឹមត្រូវ។ ឯកសារដើមនៅក្នុងភាសាផ្ទាល់របស់វាគួរត្រូវបានគេរាប់អនុញ្ញាតជាធនធានមានអំណាច។ សម្រាប់ព័ត៌មានសំខាន់ៗ ការបកប្រែដោយអ្នកជំនាញបុគ្គលិកគឺបានផ្តល់អនុសាសន៍។ យើង​មិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬ ការបកស្រាយខុសពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,29 @@
# ការវាយតម្លៃ Dataset
តំណាងអតិថិជនបានមកកាន់ក្រុមរបស់អ្នកសម្រាប់ជំនួយក្នុងការស៊ើបអង្កេតអំពីទម្លាប់ចំណាយតាមរដូវរបស់អតិថិជនតាក់ស៊ីនៅទីក្រុងញូវយ៉ក។
ពួកគេចង់ដឹងថា៖ **តើអ្នកជិះតាក់ស៊ីពណ៌លឿងនៅទីក្រុងញូវយ៉ក អាម៉ាច់ថែមប្រាក់រង្វាន់បើកបរជាងគេនៅរដូវរងា ឬរដូវក្តៅ?**
ក្រុមរបស់អ្នកកំពុងស្ថិតនៅជំហាន [Capturing](Readme.md#Capturing) នៃជីវរង្វង់ជីវិតវិទ្យាសាស្ត្រ ទិន្នន័យ ហើយអ្នកទទួលបន្ទុកក្នុងការដោះស្រាយ dataset។ អ្នកត្រូវបានផ្ដល់ឲ្យនូវសៀវភៅកំណត់ត្រា និង [ទិន្នន័យ](../../../../data/taxi.csv) សម្រាប់សិក្សាស្រាវជ្រាវ។
នៅក្នុងថតនេះមាន [សៀវភៅកំណត់ត្រា](notebook.ipynb) ដែលប្រើប្រាស់ភាសា Python ដើម្បីបញ្ចូលទិន្នន័យដំណើរកម្សាន្តតាក់ស៊ីពណ៌លឿងពី [NYC Taxi & Limousine Commission](https://docs.microsoft.com/en-us/azure/open-datasets/dataset-taxi-yellow?tabs=azureml-opendatasets)។ អ្នកក៏អាចបើកឯកសារទិន្នន័យតាក់ស៊ីក្នុងកម្មវិធីកែសម្រួលអត្ថបទ ឬកម្មវិធីតារាងដូចជា Excel។
## ការណែនាំ
- វាយតម្លៃថាតើទិន្នន័យក្នុង dataset នេះអាចជួយឆ្លើយសំណួរបានឬអត់។
- ស្ទង់មើល [សេចក្តីបញ្ជីទិន្នន័យ NYC Open Data](https://data.cityofnewyork.us/browse?sortBy=most_accessed&utf8=%E2%9C%93)។ រកមើល dataset ផ្សេងទៀតដែលអាចជួយឆ្លើយសំណួររបស់អតិថិជនបាន។
- សរសេរសំណួរ 3 សំណួរ ដែលអ្នកនឹងសួរអតិថិជនសម្រាប់ការពន្យល់បន្ថែម និងការយល់ដឹងល្អប្រសើរជាងមុនអំពីបញ្ហា។
យោងទៅតាម [វចនានុក្រម dataset](https://www1.nyc.gov/assets/tlc/downloads/pdf/data_dictionary_trip_records_yellow.pdf) និង [មគ្គុទេសក៍អ្នកប្រើប្រាស់](https://www1.nyc.gov/assets/tlc/downloads/pdf/trip_record_user_guide.pdf) សម្រាប់ព័ត៌មានបន្ថែមអំពីទិន្នន័យ។
## Rubric
Exemplary | Adequate | Needs Improvement
--- | --- | -- |
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការព្រមាន៖**
ឯកសារនេះត្រូវបានបញ្ច្រាស់បញ្ចូលដោយប្រើសេវាកម្មបញ្ច្រាសបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលយើងខិតខំប្រឹងប្រែងដើម្បីភាពត្រឹមត្រូវ សូមយល់ដឹងថាការបកប្រែដោយយន្តហោះអាចមានកំហុសឬមិនត្រឹមត្រូវ។ ឯកសារដើមក្នុងភាសាទៅដើមគួរត្រូវបានទទួលស្គាល់ជាដើមទិន្នន័យផ្លូវការដែលត្រឹមត្រូវ។ សម្រាប់ព័ត៌មានសំខាន់ ការបកប្រែដោយមនុស្សជំនាញត្រូវបានផ្តល់អនុសាសន៍។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការប្រែប្រួលក្នុងការប្រើប្រាស់ការបកប្រែនេះឡើយ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,134 @@
{
"cells": [
{
"cell_type": "markdown",
"source": [
"# ទិន្នន័យរថយន្តជួល NYC ក្នុងរដូវរងារនិងរដូវក្តៅ\r\n",
"\r\n",
"យោងទៅកាន់ [Data dictionary](https://www1.nyc.gov/assets/tlc/downloads/pdf/data_dictionary_trip_records_yellow.pdf) ដើម្បីរៀនបន្ថែមអំពីជួរឈរដែលបានផ្តល់។\n"
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"#Install the pandas library\r\n",
"!pip install pandas"
],
"outputs": [],
"metadata": {
"scrolled": true
}
},
{
"cell_type": "code",
"execution_count": 7,
"source": [
"import pandas as pd\r\n",
"\r\n",
"path = '../../data/taxi.csv'\r\n",
"\r\n",
"#Load the csv file into a dataframe\r\n",
"df = pd.read_csv(path)\r\n",
"\r\n",
"#Print the dataframe\r\n",
"print(df)\r\n"
],
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
" VendorID tpep_pickup_datetime tpep_dropoff_datetime passenger_count \\\n",
"0 2.0 2019-07-15 16:27:53 2019-07-15 16:44:21 3.0 \n",
"1 2.0 2019-07-17 20:26:35 2019-07-17 20:40:09 6.0 \n",
"2 2.0 2019-07-06 16:01:08 2019-07-06 16:10:25 1.0 \n",
"3 1.0 2019-07-18 22:32:23 2019-07-18 22:35:08 1.0 \n",
"4 2.0 2019-07-19 14:54:29 2019-07-19 15:19:08 1.0 \n",
".. ... ... ... ... \n",
"195 2.0 2019-01-18 08:42:15 2019-01-18 08:56:57 1.0 \n",
"196 1.0 2019-01-19 04:34:45 2019-01-19 04:43:44 1.0 \n",
"197 2.0 2019-01-05 10:37:39 2019-01-05 10:42:03 1.0 \n",
"198 2.0 2019-01-23 10:36:29 2019-01-23 10:44:34 2.0 \n",
"199 2.0 2019-01-30 06:55:58 2019-01-30 07:07:02 5.0 \n",
"\n",
" trip_distance RatecodeID store_and_fwd_flag PULocationID DOLocationID \\\n",
"0 2.02 1.0 N 186 233 \n",
"1 1.59 1.0 N 141 161 \n",
"2 1.69 1.0 N 246 249 \n",
"3 0.90 1.0 N 229 141 \n",
"4 4.79 1.0 N 237 107 \n",
".. ... ... ... ... ... \n",
"195 1.18 1.0 N 43 237 \n",
"196 2.30 1.0 N 148 234 \n",
"197 0.83 1.0 N 237 263 \n",
"198 1.12 1.0 N 144 113 \n",
"199 2.41 1.0 N 209 107 \n",
"\n",
" payment_type fare_amount extra mta_tax tip_amount tolls_amount \\\n",
"0 1.0 12.0 1.0 0.5 4.08 0.0 \n",
"1 2.0 10.0 0.5 0.5 0.00 0.0 \n",
"2 2.0 8.5 0.0 0.5 0.00 0.0 \n",
"3 1.0 4.5 3.0 0.5 1.65 0.0 \n",
"4 1.0 19.5 0.0 0.5 5.70 0.0 \n",
".. ... ... ... ... ... ... \n",
"195 1.0 10.0 0.0 0.5 2.16 0.0 \n",
"196 1.0 9.5 0.5 0.5 2.15 0.0 \n",
"197 1.0 5.0 0.0 0.5 1.16 0.0 \n",
"198 2.0 7.0 0.0 0.5 0.00 0.0 \n",
"199 1.0 10.5 0.0 0.5 1.00 0.0 \n",
"\n",
" improvement_surcharge total_amount congestion_surcharge \n",
"0 0.3 20.38 2.5 \n",
"1 0.3 13.80 2.5 \n",
"2 0.3 11.80 2.5 \n",
"3 0.3 9.95 2.5 \n",
"4 0.3 28.50 2.5 \n",
".. ... ... ... \n",
"195 0.3 12.96 0.0 \n",
"196 0.3 12.95 0.0 \n",
"197 0.3 6.96 0.0 \n",
"198 0.3 7.80 0.0 \n",
"199 0.3 12.30 0.0 \n",
"\n",
"[200 rows x 18 columns]\n"
]
}
],
"metadata": {}
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**ការបដិសេធ**៖ \nឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ទោះយើងខ្ញុំខិតខំប្រឹងប្រែងក្នុងការជូនដំណឹងភាពត្រឹមត្រូវ ក៏សូមដឹងថាការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុស ឬការខុសពីភាពត្រឹមត្រូវ។ ឯកសារដើមដែលមានភាសាដើមគួរត្រូវបានគេចាត់ទុកថាជាអ្នកផ្តល់ព័ត៌មានមានអំណាច។ សម្រាប់ព័ត៌មានសំខាន់ៗ ការបកប្រែដោយអ្នកជំនាញមនុស្សគឺជាវិធីល្អបំផុត។ យើងខ្ញុំមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកបរាជ័យណាមួយដែលកើតឡើងពីការប្រើប្រាស់ការបកប្រែនេះទេ។\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
]
}
],
"metadata": {
"kernelspec": {
"name": "python3",
"display_name": "Python 3.9.7 64-bit ('venv': venv)"
},
"language_info": {
"mimetype": "text/x-python",
"name": "python",
"pygments_lexer": "ipython3",
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"version": "3.9.7",
"nbconvert_exporter": "python",
"file_extension": ".py"
},
"name": "04-nyc-taxi-join-weather-in-pandas",
"notebookId": 1709144033725344,
"interpreter": {
"hash": "6b9b57232c4b57163d057191678da2030059e733b8becc68f245de5a75abe84e"
}
},
"nbformat": 4,
"nbformat_minor": 2
}

@ -0,0 +1,50 @@
# ជីវចរណ៍វិទ្យាសាស្ត្រទិន្នន័យ៖ ការវិភាគ
|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/15-Analyzing.png)|
|:---:|
| ជីវចរណ៍វិទ្យាសាស្ត្រទិន្នន័យ៖ ការវិភាគ - _Sketchnote by [@nitya](https://twitter.com/nitya)_ |
## [ការប្រលងមុនការបង្រៀន](https://ff-quizzes.netlify.app/en/ds/quiz/28)
ការវិភាគនៅក្នុងជីវចរណ៍ទិន្នន័យបញ្ជាក់ថាទិន្នន័យអាចឆ្លើយតបនឹងសំណួរដែលបានដាក់ជាប្រធានបទ ឬក៏កំពុងដោះស្រាយបញ្ហាមួយណាមួយ។ ជំហាននេះក៏អាចផ្តោតលើការបញ្ជាក់ថាគំរូត្រូវបានដោះស្រាយសំណួរនិងបញ្ហាទាំងនោះត្រឹមត្រូវ។ មេរៀននេះផ្តោតលើការវិភាគទិន្នន័យស្វែងរក ឬ EDA ដែលជាបច្ចេកទេសសម្រាប់កំណត់លក្ខណៈ និងទំនាក់ទំនងនៅក្នុងទិន្នន័យ និងអាចប្រើបានសម្រាប់រៀបចំទិន្នន័យសម្រាប់គំរូ។
យើងនឹងប្រើឧទាហរណ៍នៃកំណត់ទិន្នន័យពី [Kaggle](https://www.kaggle.com/balaka18/email-spam-classification-dataset-csv/version/1) ដើម្បីបង្ហាញពីវិធីដែលអាចអនុវត្តជាមួយ Python និងបណ្ណាល័យ Pandas។ កំណត់ទិន្នន័យនេះមានការប្រាប់គំនាន់នៃពាក្យដែលគឺពេញនិយមមួយចំនួននៅក្នុងអ៊ីមែល ស្រាយដើមដូចជាអ៊ីមែលទាំងនេះមិនអាចសម្គាល់បាន។ ប្រើ [សៀវភៅសម្ភារៈ](notebook.ipynb) ក្នុងថតបច្ចុប្បន្ននេះដើម្បីដើរតួជាមួយ។
## ការវិភាគទិន្នន័យស្វែងរក
ដំណាក់កាលចាប់យកនៅក្នុងជីវចរណ៍គឺពេលដែលទិន្នន័យត្រូវបានទទួលយក និងបញ្ហានិងសំណួរត្រូវបានយកមក ពីរបៀបទទួលយកតើតើយើងដឹងថាទិន្នន័យអាចគាំទ្រចុងក្រោយត្រូវបានអ្វី?
ចងចាំថាអ្នកវិទ្យាសាស្ត្រទិន្នន័យអាចសួរសំនួរដូចតទៅពេលដែលពួកគេទទួលយកទិន្នន័យ៖
- តើខ្ញុំមានទិន្នន័យគ្រប់គ្រាន់ដើម្បីដោះស្រាយបញ្ហានេះទេ?
- តើគុណភាពទិន្នន័យគួរឱ្យទទួលយកសម្រាប់បញ្ហានេះទេ?
- ប្រសិនបើខ្ញុំរកឃើញព័ត៌មានបន្ថែមតាមរយៈទិន្នន័យនេះ យើងគួរតែរំពឹងថាត្រូវផ្លាស់ប្តូរឬកំណត់ទិសដៅគោលបំណងឡើងវិញទេ?
ការវិភាគទិន្នន័យស្វែងរកគឺជាដំណើរការដើម្បីស្គាល់ទិន្នន័យនោះ ហើយអាចប្រើដើម្បីឆ្លើយសំណួរទាំងនេះ ក៏ដូចជាកំណត់បញ្ហានៃការដំណើរការជាមួយកំណត់ទិន្នន័យ។ យើងនឹងផ្តោតលើបច្ចេកទេសខ្លះៗដែលបានប្រើសម្រាប់សម្រេចបានសារៈសំខាន់នេះ។
## ការពិពណ៌នាទិន្នន័យ, ស្ថិតិសង្ខេប និង Pandas
តើយើងវាយតម្លៃយ៉ាងដូចម្តេចថាយើងមានទិន្នន័យគ្រប់គ្រាន់ដើម្បីដោះស្រាយបញ្ហានេះ? ការពិពណ៌នាទិន្នន័យអាចសង្ខេប និងប្រមូលព័ត៌មានទូទៅអំពីកំណត់ទិន្នន័យរបស់យើងតាមរយៈបច្ចេកទេសនៃស្ថិតិសង្ខេប។ ការពិពណ៌នាទិន្នន័យជួយឱ្យយើងយល់ពីអ្វីដែលមានស្រាប់ និងស្ថិតិសង្ខេបជួយយើងយល់ថាមានច្រើនប៉ុន្មាន។
ក្នុងមេរៀនមួយចំនួនមុន យើងបានប្រើ Pandas ដើម្បីផ្តល់ស្ថិតិសង្ខេបជាមួយ [មុខងារ `describe()`]( https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.describe.html)។ វាបង្ហាញចំនួន, តម្លៃអតិបរមា និងអប្បបរមា, ค่าเฉลี่ย, ស្តង់ដាដាច់គេ ហើយគុណសម្បត្តិលើទិន្នន័យជាលេខ។ ការប្រើស្ថិតិសង្ខេបដូចមុខងារ `describe()` អាចជួយអ្នកវាយតម្លៃថាតើអ្នកមានប៉ុន្មាន និងតើអ្នកត្រូវតែមើលបន្ថែមទេ។
## ការជ្រើសតំណាង និងការស្នើសុំ
ការស្វែងយល់អ្វីៗទាំងអស់នៅក្នុងកំណត់ទិន្នន័យធំនឹងចំណាយពេលយ៉ាងច្រើន ហើយជារឿងដែលភាគច្រើនត្រូវបានទុកឱ្យកុំព្យូទ័រធ្វើ។ ទោះយ៉ាងណា ការជ្រើសតំណាងគឺជាបច្ចេកទេសជួយសម្រាប់យល់ពីទិន្នន័យ ហើយអនុញ្ញាតឱ្យយើងមានការយល់ដឹងល្អឡើងអំពីអ្វីដែលមានក្នុងកំណត់ទិន្នន័យ និងតំណាងរបស់វា។ ជាមួយការជ្រើសតំណាង អ្នកអាចអនុវត្តប្រូបាបលីតី និងស្ថិតិសម្រាប់រកចរន្តទូទៅពីទិន្នន័យរបស់អ្នក។ ខណៈដែលមិនមានច្បាប់ដែលកំណត់ថាតើអ្នកគួរជ្រើសតំណាងប៉ុន្មានទិន្នន័យ ទោះជាយ៉ាងណា វាអ្នកត្រូវចងចាំថា ទិន្នន័យដែលអ្នកជ្រើសបានច្រើនប៉ុណ្ណា ការសន្និដ្ធានទូទៅនឹងមានភាពច្បាស់លាស់បន្ថែមប៉ុណ្ណា។
Pandas មាន [មុខងារ `sample()` នៅក្នុងបណ្ណាល័យ](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.sample.html) ដែលអ្នកអាចបញ្ជូនអារក្យូម៉ង់ថាចង់បានការជ្រើសតំណាងចៃដន្យប៉ុន្មាន និងប្រើ។
ការស្វែងរកទូទៅពីទិន្នន័យអាចជួយឱ្យអ្នកឆ្លើយបញ្ហាទូទៅ និងទ្រឹស្ដីដែលអ្នកមាន។ ផ្ទុយពីការជ្រើសតំណាង, ការស្នើសុំអនុញ្ញាតឱ្យអ្នកគ្រប់គ្រង និងផ្តោតលើផ្នែកជាក់លាក់នៃទិន្នន័យដែលអ្នកមានសំណួរ។ មុខងារ [`query()`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.query.html) នៅក្នុងបណ្ណាល័យ Pandas អនុញ្ញាតឱ្យអ្នកជ្រើសកាឡុំនិងទទួលបានចម្លើយ​គំរូពីទិន្នន័យតាមរយៈជួរដេកដែលបានទាញ។
## ការស្វែងរកជាមួយការផ្តល់មើលនូវរូបភាព
អ្នកមិនចាំបាច់រង់ចាំរហូតដល់ទិន្នន័យត្រូវបានសំអាតនិងវិភាគយ៉ាងពេញលេញដើម្បីចាប់ផ្តើមបង្កើតការផ្តល់មើលនូវរូបភាពទេ។ ជាការពិត ការមានតំណាងវីស្វាល់នៅពេលស្វែងរកអាចជួយកំណត់លំនាំ, ទំនាក់ទំនង និងបញ្ហានៅក្នុងទិន្នន័យ។ លើសពីនេះ ការផ្តល់មើលនូវរូបភាពផ្តល់ជាឧបករណ៍ទំនាក់ទំនងជាមួយអ្នកដែលមិនពាក់ព័ន្ធនឹងការគ្រប់គ្រងទិន្នន័យ ហើយអាចជាឱកាសចែករំលែកនិងច្បាស់លាស់បន្ថែមសំណួរដែលមិនបានពិចារណាលើក្នុងដំណាក់កាលចាប់យក។ សូមយោងទៅកាន់ [ផ្នែកអំពីការផ្តល់មើលនូវរូបភាព](../../../../../../../../../3-Data-Visualization) ដើម្បីស្វែងយល់បន្ថែមអំពីវិធីពេញនិយមក្នុងការស្វែងរកតាមរូបភាព។
## ការស្វែងរកដើម្បីកំណត់ភាពមិនស្របគ្នា
ប្រធានបទទាំងអស់ក្នុងមេរៀននេះអាចជួយកំណត់តម្លៃដែលខ្វះឬមិនស្របគ្នា ហើយ Pandas ផ្តល់មុខងារដើម្បីពិនិត្យមើលខ្លះៗនេះ។ [isna() ឬ isnull()](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.isna.html) អាចពិនិត្យតម្លៃខ្វះខាតបាន។ ព័ត៌មានសំខាន់មួយនៅក្នុងការស្វែងរកតម្លៃទាំងនេះនៅក្នុងទិន្នន័យរបស់អ្នក គឺការស្វែងរកមូលហេតុដែលបានបណ្តាលអោយវាធ្វើដូច្នេះពីដំបូង។ វាអាចជួយអ្នកសម្រេចចិត្តលើ [សកម្មភាពដែលត្រូវអនុវត្តដើម្បីដោះស្រាយវា](/2-Working-With-Data/08-data-preparation/notebook.ipynb)។
## [ការប្រលងបន្ទាប់ការបង្រៀន](https://ff-quizzes.netlify.app/en/ds/quiz/29)
## ការងារ
[ស្វែងរកចម្លើយ](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការបដិសេធ**:
ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលយើងខំប្រឹងប្រទានភាពត្រឹមត្រូវ សូមជ្រាបថាការបកប្រែដោយស្វ័យប្រវត្តិនេះអាចមានកំហុស ឬភាពមិនត្រឹមត្រូវបាន។ ឯកសារដើមក្នុងភាសាមាតុភាគរបស់វាគួរត្រូវបានគេរាប់បញ្ចូលជាគន្លងដើមដែលត្រឹមត្រូវ។ សម្រាប់ព័ត៌មានសំខាន់ សូមផ្ដល់អាទិភាពកិច្ចការបកប្រែដោយមនុស្សជំនាញ។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ខុស ឬការបកប្រែខុសដែលកើតមានពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,148 @@
{
"cells": [
{
"cell_type": "markdown",
"source": [
"# ទិន្នន័យឡានជើងទីក្រុងយេនឃីរបស់ NYC ក្នុងរដូវរងាសិនិងរដូវក្ដៅ\r\n",
"\r\n",
"យោងទៅកាន់ [Data dictionary](https://www1.nyc.gov/assets/tlc/downloads/pdf/data_dictionary_trip_records_yellow.pdf) ដើម្បីស្វែងយល់បន្ថែមអំពីជួរឈរដែលបានផ្ដល់។\n"
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"#Install the pandas library\r\n",
"!pip install pandas"
],
"outputs": [],
"metadata": {
"scrolled": true
}
},
{
"cell_type": "code",
"execution_count": 7,
"source": [
"import pandas as pd\r\n",
"\r\n",
"path = '../../data/taxi.csv'\r\n",
"\r\n",
"#Load the csv file into a dataframe\r\n",
"df = pd.read_csv(path)\r\n",
"\r\n",
"#Print the dataframe\r\n",
"print(df)\r\n"
],
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
" VendorID tpep_pickup_datetime tpep_dropoff_datetime passenger_count \\\n",
"0 2.0 2019-07-15 16:27:53 2019-07-15 16:44:21 3.0 \n",
"1 2.0 2019-07-17 20:26:35 2019-07-17 20:40:09 6.0 \n",
"2 2.0 2019-07-06 16:01:08 2019-07-06 16:10:25 1.0 \n",
"3 1.0 2019-07-18 22:32:23 2019-07-18 22:35:08 1.0 \n",
"4 2.0 2019-07-19 14:54:29 2019-07-19 15:19:08 1.0 \n",
".. ... ... ... ... \n",
"195 2.0 2019-01-18 08:42:15 2019-01-18 08:56:57 1.0 \n",
"196 1.0 2019-01-19 04:34:45 2019-01-19 04:43:44 1.0 \n",
"197 2.0 2019-01-05 10:37:39 2019-01-05 10:42:03 1.0 \n",
"198 2.0 2019-01-23 10:36:29 2019-01-23 10:44:34 2.0 \n",
"199 2.0 2019-01-30 06:55:58 2019-01-30 07:07:02 5.0 \n",
"\n",
" trip_distance RatecodeID store_and_fwd_flag PULocationID DOLocationID \\\n",
"0 2.02 1.0 N 186 233 \n",
"1 1.59 1.0 N 141 161 \n",
"2 1.69 1.0 N 246 249 \n",
"3 0.90 1.0 N 229 141 \n",
"4 4.79 1.0 N 237 107 \n",
".. ... ... ... ... ... \n",
"195 1.18 1.0 N 43 237 \n",
"196 2.30 1.0 N 148 234 \n",
"197 0.83 1.0 N 237 263 \n",
"198 1.12 1.0 N 144 113 \n",
"199 2.41 1.0 N 209 107 \n",
"\n",
" payment_type fare_amount extra mta_tax tip_amount tolls_amount \\\n",
"0 1.0 12.0 1.0 0.5 4.08 0.0 \n",
"1 2.0 10.0 0.5 0.5 0.00 0.0 \n",
"2 2.0 8.5 0.0 0.5 0.00 0.0 \n",
"3 1.0 4.5 3.0 0.5 1.65 0.0 \n",
"4 1.0 19.5 0.0 0.5 5.70 0.0 \n",
".. ... ... ... ... ... ... \n",
"195 1.0 10.0 0.0 0.5 2.16 0.0 \n",
"196 1.0 9.5 0.5 0.5 2.15 0.0 \n",
"197 1.0 5.0 0.0 0.5 1.16 0.0 \n",
"198 2.0 7.0 0.0 0.5 0.00 0.0 \n",
"199 1.0 10.5 0.0 0.5 1.00 0.0 \n",
"\n",
" improvement_surcharge total_amount congestion_surcharge \n",
"0 0.3 20.38 2.5 \n",
"1 0.3 13.80 2.5 \n",
"2 0.3 11.80 2.5 \n",
"3 0.3 9.95 2.5 \n",
"4 0.3 28.50 2.5 \n",
".. ... ... ... \n",
"195 0.3 12.96 0.0 \n",
"196 0.3 12.95 0.0 \n",
"197 0.3 6.96 0.0 \n",
"198 0.3 7.80 0.0 \n",
"199 0.3 12.30 0.0 \n",
"\n",
"[200 rows x 18 columns]\n"
]
}
],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"# ប្រើក្រឡាសខាងក្រោមដើម្បីធ្វើការវិភាគទិន្នន័យស្រាវជ្រាវផ្ទាល់របស់អ្នក\n"
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": null,
"source": [],
"outputs": [],
"metadata": {}
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**ការថ្លែងការណ៍លើកឡើង**៖ \nឯកសារនេះត្រូវបានបំលាស់បម្លែងដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ បើទោះបីយើងខិតខំធ្វើឲ្យមានភាពត្រឹមត្រូវក៏ដោយ សូមយល់ថាការបកប្រែអូតូម៉ាទិចអាចមានកំហុស ឬមិនត្រឹមត្រូវ។ ឯកសារដើមដែលមាននៅក្នុងភាសាម្ដិតរបស់វា ត្រូវបានគិតថាជាឧទាហរណ៍គោលចម្បង។ សម្រាប់ព័ត៌មានសំខាន់ៗ សូមផ្ដល់អនុសាសន៍ឲ្យមានការបកប្រែក្នុងកម្រិតមនុស្សវិជ្ជាជីវៈ។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកប្រែខុសៗអ្វីដែលកើតឡើងពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
]
}
],
"metadata": {
"kernelspec": {
"name": "python3",
"display_name": "Python 3.9.7 64-bit ('venv': venv)"
},
"language_info": {
"mimetype": "text/x-python",
"name": "python",
"pygments_lexer": "ipython3",
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"version": "3.9.7",
"nbconvert_exporter": "python",
"file_extension": ".py"
},
"name": "04-nyc-taxi-join-weather-in-pandas",
"notebookId": 1709144033725344,
"interpreter": {
"hash": "6b9b57232c4b57163d057191678da2030059e733b8becc68f245de5a75abe84e"
}
},
"nbformat": 4,
"nbformat_minor": 2
}

@ -0,0 +1,29 @@
# ស្វែងរកចម្លើយ
នេះគឺជាការបន្តនៃ [កិច្ចការផ្សេងទៀត](../14-Introduction/assignment.md) នៃមេរៀនមុន, ដែលយើងបានមើលឃើញទិន្នន័យឱ្យខ្លីៗ។ ឥឡូវនេះយើងនឹងស្វែងរកទិន្នន័យជ្រៅជាងមុន។
ម្តងទៀត, សំណួរដែលអតិថិជនចង់ដឹង: **អ្នកដំណើរថាក់សែលោរកុងប៊ីពណ៌លឿងនៅទីក្រុងញូវយ៉កចេះបង់កម្រៃបន្ថែមជាងនៅរដូវរងារឬរដូវក្ដៅ?**
ក្រុមរបស់អ្នកកំពុងស្ថិតនៅហត្ថលេខា[Analyzing](README.md) នៃជីវចរិតវិទ្យាស្ថិតិទិន្នន័យ (Data Science Lifecycle), ដែលអ្នកទទួលខុសត្រូវធ្វើការវិភាគទិន្នន័យបឋមលើសំណុំទិន្នន័យ។ អ្នកបានផ្តល់អោយកាន់កាប់សៀវភៅកំណត់ហេតុ និងសំណុំទិន្នន័យដែលមានកាតាឡុក ២០០នៃការដឹកជញ្ជូនសែលោរឆ្នាំ ២០១៩ ខែមករា និងខែសីហា។
## សេចក្តីណែនាំ
នៅក្នុងថតនេះមានកំណត់ហេតុ [notebook](assignment.ipynb) និងទិន្នន័យពី [សាលាការបញ្ជា Taxi & Limousine Commission](https://docs.microsoft.com/en-us/azure/open-datasets/dataset-taxi-yellow?tabs=azureml-opendatasets)។ សូមពិនិត្យមើល [វចនានុក្រមសំណុំទិន្នន័យ](https://www1.nyc.gov/assets/tlc/downloads/pdf/data_dictionary_trip_records_yellow.pdf) និង [មគ្គុទេសក៍អ្នកប្រើ](https://www1.nyc.gov/assets/tlc/downloads/pdf/trip_record_user_guide.pdf) ដើម្បីទទួលបានព័ត៌មានបន្ថែមពីទិន្នន័យ។
ប្រើប្រាស់បច្ចេកទេសខ្លះក្នុងមេរៀននេះដើម្បីធ្វើការវិភាគទិន្នន័យបឋមជារបស់អ្នកក្នុងកំណត់ហេតុនេះ (អាចបន្ថែមកោសិកាប្រសិនបើចង់) ហើយឆ្លើយសំណួរដូចខាងក្រោម៖
- តើមានអ្វីផ្សេងទៀតក្នុងទិន្នន័យដែលអាចស្ថិតក្នុងប្រតិកម្មចំណាយកម្រៃបន្ថែម?
- តួរឈរណាខ្លះដែលប្រហែលមិនចាំបាច់ក្នុងការឆ្លើយសំណួរអតិថិជន?
- អាស្រ័យលើអ្វីដែលបានផ្តល់ឲ្យដល់ពេលនេះ, តើទិន្នន័យមានភស្តុតាងណាដែលបង្ហាញពីរបៀបវិនិយោគកម្រៃបន្ថែមតាមរដូវកាល?
## វិសាលភាពគោលការណ៍
ល្អឥតខ្ចោះ | គ្រប់គ្រាន់ | ត្រូវកែលម្អ
--- | --- | --
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការបញ្ជាក់**៖
ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាកម្មបកប្រែដោយបច្ចេកវិទ្យា AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលដែលយើងប្រឹងប្រែងសុវត្ថិភាព សូមយល់ដឹងថា ការបកប្រែដោយស្វ័យប្រវត្តិនេះអាចមានកំហុសឬភាពមិនត្រឹមត្រូវ។ ឯកសារដើមដែលមាននៅក្នុងភាសាដើមគួរត្រូវបានគេចាត់ទុកជាឧទាហរណ៍ត្រឹមត្រូវបំផុត។ សម្រាប់ព័ត៌មានសំខាន់ៗ គួរតែប្រើការបកប្រែដោយមនុស្សជំនាញវិជ្ជាជីវៈ។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ប្រែខុសឬការយល់ច្រឡំពីការប្រើប្រាស់ការបកប្រែនេះទេ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,187 @@
{
"cells": [
{
"cell_type": "markdown",
"source": [
"# វិភាគទិន្នន័យ \n",
"ឧទាហរណ៍នៃមុខងារ Pandas ដែលបានចេញមកក្នុង [មេរៀន](README.md)។\n"
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 1,
"source": [
"import pandas as pd\r\n",
"import glob\r\n",
"\r\n",
"#Loading the dataset\r\n",
"path = '../../data/emails.csv'\r\n",
"email_df = pd.read_csv(path)"
],
"outputs": [],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 2,
"source": [
"# Using Describe on the email dataset\r\n",
"print(email_df.describe())"
],
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
" the to ect and for of \\\n",
"count 406.000000 406.000000 406.000000 406.000000 406.000000 406.000000 \n",
"mean 7.022167 6.519704 4.948276 3.059113 3.502463 2.662562 \n",
"std 10.945522 9.801907 9.293820 6.267806 4.901372 5.443939 \n",
"min 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 \n",
"25% 1.000000 1.000000 1.000000 0.000000 1.000000 0.000000 \n",
"50% 3.000000 3.000000 2.000000 1.000000 2.000000 1.000000 \n",
"75% 9.000000 7.750000 4.000000 3.000000 4.750000 3.000000 \n",
"max 99.000000 88.000000 79.000000 69.000000 39.000000 57.000000 \n",
"\n",
" a you in on is this \\\n",
"count 406.000000 406.000000 406.000000 406.000000 406.000000 406.000000 \n",
"mean 57.017241 2.394089 10.817734 11.591133 5.901478 1.485222 \n",
"std 78.868243 4.067015 19.050972 16.407175 8.793103 2.912473 \n",
"min 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 \n",
"25% 15.000000 0.000000 1.250000 3.000000 1.000000 0.000000 \n",
"50% 29.000000 1.000000 5.000000 6.000000 3.000000 0.000000 \n",
"75% 61.000000 3.000000 12.000000 13.000000 7.000000 2.000000 \n",
"max 843.000000 31.000000 223.000000 125.000000 61.000000 24.000000 \n",
"\n",
" i be that will \n",
"count 406.000000 406.000000 406.000000 406.000000 \n",
"mean 47.155172 2.950739 1.034483 0.955665 \n",
"std 71.043009 4.297865 1.904846 2.042271 \n",
"min 0.000000 0.000000 0.000000 0.000000 \n",
"25% 11.000000 1.000000 0.000000 0.000000 \n",
"50% 24.000000 1.000000 0.000000 0.000000 \n",
"75% 50.750000 3.000000 1.000000 1.000000 \n",
"max 754.000000 40.000000 14.000000 24.000000 \n"
]
}
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 5,
"source": [
"# Sampling 10 emails\r\n",
"print(email_df.sample(10))"
],
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
" Email No. the to ect and for of a you in on is this i \\\n",
"150 Email 151 0 1 2 0 3 0 15 0 0 5 0 0 7 \n",
"380 Email 5147 0 3 2 0 0 0 7 0 1 1 0 0 3 \n",
"19 Email 20 3 4 11 0 4 2 32 1 1 3 9 5 25 \n",
"300 Email 301 2 1 1 0 1 1 15 2 2 3 2 0 8 \n",
"307 Email 308 0 0 1 0 0 0 1 0 1 0 0 0 2 \n",
"167 Email 168 2 2 2 1 5 1 24 2 5 6 4 0 30 \n",
"320 Email 321 10 12 4 6 8 6 187 5 26 28 23 2 171 \n",
"61 Email 62 0 1 1 0 4 1 15 4 4 3 3 0 19 \n",
"26 Email 27 5 4 1 1 4 4 51 0 8 6 6 2 44 \n",
"73 Email 74 0 0 1 0 0 0 7 0 4 3 0 0 6 \n",
"\n",
" be that will \n",
"150 1 0 0 \n",
"380 0 0 0 \n",
"19 3 0 1 \n",
"300 0 0 0 \n",
"307 0 0 0 \n",
"167 2 0 0 \n",
"320 5 1 1 \n",
"61 2 0 0 \n",
"26 6 0 0 \n",
"73 0 0 0 \n"
]
}
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 14,
"source": [
"# Returns rows where there are more occurrences of \"to\" than \"the\"\r\n",
"print(email_df.query('the < to'))"
],
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
" Email No. the to ect and for of a you in on is this i \\\n",
"1 Email 2 8 13 24 6 6 2 102 1 18 21 13 0 61 \n",
"3 Email 4 0 5 22 0 5 1 51 2 1 5 9 2 16 \n",
"5 Email 6 4 5 1 4 2 3 45 1 16 12 8 1 52 \n",
"7 Email 8 0 2 2 3 1 2 21 6 2 6 2 0 28 \n",
"13 Email 14 4 5 7 1 5 1 37 1 8 8 6 1 43 \n",
".. ... ... .. ... ... ... .. ... ... .. .. .. ... .. \n",
"390 Email 5157 4 13 1 0 3 1 48 2 8 26 9 1 45 \n",
"393 Email 5160 2 13 1 0 2 1 38 2 7 24 6 1 34 \n",
"396 Email 5163 2 3 1 2 1 2 32 0 7 3 2 0 26 \n",
"404 Email 5171 2 7 1 0 2 1 28 2 8 11 7 1 39 \n",
"405 Email 5172 22 24 5 1 6 5 148 8 23 13 5 4 99 \n",
"\n",
" be that will \n",
"1 4 2 0 \n",
"3 2 0 0 \n",
"5 2 0 0 \n",
"7 1 0 1 \n",
"13 1 0 1 \n",
".. .. ... ... \n",
"390 1 0 0 \n",
"393 1 0 0 \n",
"396 3 0 0 \n",
"404 1 0 0 \n",
"405 6 4 1 \n",
"\n",
"[169 rows x 17 columns]\n"
]
}
],
"metadata": {}
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**ការបដិសេធ**៖ \nឯកសារនេះបានបកប្រែដោយប្រើសេវាកម្មបកប្រែដោយ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ បើទោះបីជាយើងខិតខំរកភាពត្រឹមត្រូវក៏ដោយ សូមយល់ថាការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុស ឬការមិនត្រឹមត្រូវខ្លះ។ ឯកសារដើមជាភាសាទីបំផុតគួរត្រូវបានគេចាត់ទុកជាឯកសារដែលមានអំណាចអោយនគរ។ សម្រាប់ព័ត៌មានសំខាន់ៗ៖ ការបកប្រែការបរជាអ្នកជំនាញមនុស្សត្រូវបានផ្តល់អនុសាសន៍។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកស្រាយខុសដែលកើតឡើងពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
]
}
],
"metadata": {
"orig_nbformat": 4,
"language_info": {
"name": "python",
"version": "3.9.7",
"mimetype": "text/x-python",
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"pygments_lexer": "ipython3",
"nbconvert_exporter": "python",
"file_extension": ".py"
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3.9.7 64-bit ('venv': venv)"
},
"interpreter": {
"hash": "6b9b57232c4b57163d057191678da2030059e733b8becc68f245de5a75abe84e"
}
},
"nbformat": 4,
"nbformat_minor": 2
}

@ -0,0 +1,222 @@
# ជីវចលវដ្តវិទ្យា​ទិន្នន័យ៖ ការទំនាក់ទំនង
|![ សំនេររូបភាពដោយ [(@sketchthedocs)](https://sketchthedocs.dev)](../../sketchnotes/16-Communicating.png)|
|:---:|
| ជីវចលវដ្តវិទ្យា​ទិន្នន័យ៖ ការទំនាក់ទំនង - _សំនេររូបភាពដោយ [@nitya](https://twitter.com/nitya)_ |
## [មេរៀន​មុន​ជម្រាបសួរ](https://ff-quizzes.netlify.app/en/ds/quiz/30)
សាកល្បងចំណេះដឹងរបស់អ្នកអំពីអ្វីដែលនឹងមកដល់ជាមួយមេរៀន​មុន​ជម្រាបសួរខាងលើ!
# ការណែនាំ
### តើការទំនាក់ទំនង​​មានអ្វីខ្លះ?
ចាប់ផ្តើមមេរៀននេះដោយកំណត់ន័យនៃការទំនាក់ទំនង។ **ការទំនាក់ទំនងគឺជាការបញ្ជូនឬបម្លែងព័ត៌មាន។** ព័ត៌មានអាចជាគំនិត, គំនិតខាងក្នុង, អារម្មណ៍, សារ, សញ្ញាសម្ងាត់, ទិន្នន័យ អ្វីគ្រប់យ៉ាងដែលអ្នកផ្ញើ (អ្នកផ្ញើព័ត៌មាន) ចង់ឲ្យអ្នកទទួល (អ្នកទទួលព័ត៌មាន)យល់ដឹង។ ក្នុងមេរៀននេះ យើងនឹងហៅអ្នកផ្ញើថាជាអ្នកទំនាក់ទំនង និងអ្នកទទួលថាជាអ្នកស្តាប់។
### ការទំនាក់ទំនងទិន្នន័យ និងការរៀបរាប់រឿង
យើងយល់ថា នៅពេលទំនាក់ទំនង គោលបំណងគឺបញ្ជូនឬបម្លែងព័ត៌មាន។ ប៉ុន្តែក្នុងការទំនាក់ទំនងទិន្នន័យ គោលបំណងរបស់អ្នកមិនគួរតែត្រឹមតែផ្ញើសំងាត់លេខទៅឲ្យអ្នកទស្សនា។ គោលបំណងរបស់អ្នកគួរតែជាទំនាក់ទំនងរឿងរ៉ាវដែលបានផ្អែកលើទិន្នន័យរបស់អ្នក - ការទំនាក់ទំនងទិន្នន័យមានប្រសិទ្ធភាព និងការរៀបរាប់រឿងដើរចូលគ្នា។ អ្នកទស្សនារបស់អ្នកប្រហែលជានឹងចងចាំរឿងដែលអ្នកប្រាប់បានបានល្អជាងលេខដែលអ្នកផ្តល់។ នៅពេលក្រោយក្នុងមេរៀននេះ យើងនឹងពិភាក្សាពីវិធីខ្លះៗដែលអ្នកអាចប្រើការរៀបរាប់រឿងដើម្បីទំនាក់ទំនងទិន្នន័យបានប្រសើរជាងមុន។
### ប្រភេទនៃការទំនាក់ទំនង
ទីកន្លែងទាំងមូល នឹងពិភាក្សាពីប្រភេទនៃការទំនាក់ទំនង២យ៉ាង គឺ ការទំនាក់ទំនងមួយទិស និងការទំនាក់ទំនងពីរទិស។
**ការទំនាក់ទំនងមួយទិស** เกิดขึ้นเมื่อអ្នកផ្ញើផ្ញើព័ត៌មានទៅអ្នកទទួលដោយគ្មានមតិយោបល់ឬការឆ្លើយតបឡើយ។ យើងឃើញឧទាហរណ៍នៃការទំនាក់ទំនងមួយទិសរៀងរាល់ថ្ងៃ ក្នុងអ៊ីមែលជាបណ្ដុំ/ជាប្រជាតិការ, នៅពេលព័ត៌មានផ្តល់រឿងថ្មីៗ, ឬនៅពេលផ្សាយពាណិជ្ជកម្មទូរទស្សន៍មកបង្ហាញពីផលិតផលរបស់ពួកគេ។ ក្នុងករណីទាំងនេះ អ្នកផ្ញើមិនស្វែងរកការបម្លែងព័ត៌មានឡើយ ពួកគេចង់តែបញ្ជូនឲ្យបានទាន់ពេល។
**ការទំនាក់ទំនងពីរទិស** កើតឡើងនៅពេលបំណុលរួមគ្នាទាំងអស់ដើរនៅជាអ្នកផ្ញើនិងអ្នកទទួលទាំងពីរ។ អ្នកផ្ញើនឹងចាប់ផ្តើមទំនាក់ទំនងទៅអ្នកទទួល ហើយអ្នកទទួលនឹងផ្តល់មតិយោបល់ឬការឆ្លើយតប។ ការទំនាក់ទំនងពីរទិសគឺជាអ្វីដែលយើងគិតពីពេលនិយាយអំពីការទំនាក់ទំនង។ យើងភាគច្រើនគិតពីមនុស្សពិភាក្សារួមគ្នា - មានអ្នកមកជួបផ្ទាល់ ឬក៏តាមការហៅទូរស័ព្ទ បណ្ដាញសង្គម ឬសារសរសេរ។
នៅពេលទំនាក់ទំនងទិន្នន័យ នឹងមានករណីដែលអ្នកប្រើការទំនាក់ទំនងមួយទិស (គិតពីការដាក់បង្ហាញនៅកាន់សន្និសីទ ឬជាក្រុមធំដែលមិនប្រាប់សំណួរច្បាស់នៅមុន) និងករណីដែលអ្នកប្រើការទំនាក់ទំនងពីរទិស (គិតពីការប្រើទិន្នន័យដើម្បីទPersuade ក្រុមហ៊ុន ឬទទួលបានការគាំទ្រពីក្រុមការងារ)។
# ការទំនាក់ទំនងមានប្រសិទ្ធភាព
### តួនាទីរបស់អ្នកជាអ្នកទំនាក់ទំនង
នៅពេលទំនាក់ទំនង វាជាការងាររបស់អ្នកឱ្យប្រាកដថាអ្នកទទួលទទួលបានព័ត៌មានដែលអ្នកចង់ឲ្យពួកគេយល់ព្រម។ នៅពេលអ្នកទំនាក់ទំនងទិន្នន័យ អ្នកមិនត្រឹមតែចង់ឲ្យអ្នកទទួលយកលេខទេ ថែមទាំងចង់ឲ្យពួកគេចាប់យករឿងរ៉ាវដែលទិន្នន័យប្រាប់ថា។ អ្នកទំនaketទិន្នន័យល្អគឺជាអ្នករាប់រឿងល្អផងដែរ។
តើត្រូវរាប់រឿងជាមួយទិន្នន័យដូចម្តេច? មានវិធីរាប់រឿងមួយចំនួន - ប៉ុន្តែនេះគឺជាវិធី៦យ៉ាងដែលយើងនឹងនិយាយពីក្នុងមេរៀននេះ។
1. យល់ដឹងពីអ្នកទស្សនា, ផ្លូវទំនាក់ទំនង និងវិធីសាស្រ្តទំនាក់ទំនង
2. ចាប់ផ្តើមជាមួយគោលដៅចុងបញ្ចប់
3. ប្រើវាជារឿងពិត
4. ប្រើពាក្យ និងវាក្យបញ្ជាក់មានន័យ
5. ប្រើអារម្មណ៍
យុទ្ធសាស្ត្រនីមួយៗបានពិពណ៌នាបន្ថែមឆ្ងាយនៅក្រោម។
### 1. យល់ដឹងពីអ្នកទស្សនា ផ្លូវ និង វិធីសាស្រ្តទំនាក់ទំនងរបស់អ្នក
វិធីដែលអ្នកទំនាក់ទំនងជាមួយសមាជិកគ្រួសារអាចខុសពីវិធីដែលអ្នកទំនាក់ទំនងជាមួយមិត្តភក្តិ។ អ្នកប្រហែលជាប្រើពាក្យនិងវាក្យបញ្ជាក់ខុសគ្នាដែលមនុស្សដែលអ្នកនិយាយទៅកាន់ពួកគេសាកសមនឹងយល់។ អ្នកគួរតែអនុវត្តវិធីដូចគ្នានៅពេលទំនាក់ទំនងទិន្នន័យ។ គិតពីអ្នកដែលអ្នកកំពុងទំនាក់ទំនង។ សូមគិតអំពីគោលបំណង និងបរិបទដែលពួកគេមានអំពីស្ថានភាពដែលអ្នកពន្យល់។
អ្នកអាចកាត់ថ្នាក់អ្នកទស្សនាភាគច្រើននៅក្នុងប្រភេទមួយ។ នៅក្នុងអត្ថបទ _Harvard Business Review_ “\[របៀបរាប់រឿងជាមួយទិន្នន័យ\](http://blogs.hbr.org/2013/04/how-to-tell-a-story-with-data/)”, អ្នកយុទ្ធសាស្រ្ត Dell Jim Stikeleather បានកំណត់ប្រាំប្រភេទអ្នកទស្សនា។
- **អ្នកចាប់ផ្តើម**: ស្គាល់បានម្សៅលើប្រធានបទ ប៉ុន្តែមិនចង់ឲ្យមាន
ការរំលោភសាមញ្ញពេក
- **រួមទូទៅ**: ព័ត៌មានបឋម ប៉ុន្តែកំពុងស្វែងយល់រឿងទូលំទូលាយ
និងប្រធានបទសំខាន់ៗ
- **អ្នកគ្រប់គ្រង**: ការយល់ដឹងជ្រាលជ្រៅ អាចអនុវត្តបានពីលម្អិតនិងការជួបជាមួយ
ផ្នែកផ្សេងៗមានពត៌មានលម្អិត
- **អ្នកជំនាញ**: ការសិក្សា និងស្វែងរកច្រើនជាងការរាប់រឿង
ជាមួយលម្អិតធំទូលាយ
- **អ្នកบริหาร**: មានពេលត្រឹមតែយកលទ្ធផលនិងសេចក្តីសន្និដ្ឋាននៃ
ប៉ូលីទស្សន៍ដែលសំខាន់ៗ
ប្រភេទទាំងនេះអាចជួយអ្នករៀបចំរបៀបបង្ហាញទិន្នន័យដល់អ្នកទស្សនា។
ក្រៅពីគិតពីប្រភេទអ្នកទស្សនា អ្នកគួរបន្តស្វែងយល់ពីផ្លូវដែលអ្នកប្រើប្រាស់ក្នុងការទំនាក់ទំនង។ វិធីរបស់អ្នកគួរតែខុសប្លែកបន្តិច ប្រសិនបើអ្នកកំពុងសរសេរ memo ឬអ៊ីមែល ប្រៀបធៀបនឹងការជួបជាមួយក្រុមឬការដាក់បង្ហាញនៅសន្និសីទ។
លើសពីករណីយល់ដឹងអ្នកទស្សនា ការដឹងពីវិធីសាស្រ្តទំនាក់ទំនងដែលអ្នកប្រើ (មួយទិស ឬពីរទិស) ក៏សំខាន់ដែរ។
បើអ្នកទំនាក់ទំនងជាមួយភាគច្រើនជាអ្នកចាប់ផ្តើម និងប្រើការទំនាក់ទំនងមួយទិស អ្នកត្រូវអប់រំអ្នកទស្សនាមុន និងផ្តល់បរិបទត្រឹមត្រូវ។ បន្ទាប់មកអ្នកត្រូវបង្ហាញទិន្នន័យរបស់អ្នក ហើយប្រាប់ពួកគេថាទិន្នន័យមានន័យយ៉ាងដូចម្តេច ហើយហេតុអ្វីបានជាទិន្នន័យមានសារៈសំខាន់។ ក្នុងករណីនេះ អ្នកប្រហែលជាចង់ផ្តោតលើការបញ្ជាក់ច្បាស់ ព្រោះអ្នកទស្សនារបស់អ្នកមិនអាចសួរសំណួរច្បាស់ៗបានឡើយ។
បើអ្នកទំនាក់ទំនងជាមួយភាគច្រើនជាអ្នកគ្រប់គ្រង និងប្រើការទំនាក់ទំនងពីរទិស អ្នកប្រហែលជា​មិន​ត្រូវ​អប់រំ​អ្នកទស្សនាឬ​ផ្តល់​បរិបទ​ច្រើន​ទេ។ អ្នកអាចចូលទៅពិភាក្សាទិន្នន័យដែលបានប្រមូល និងហេតុផលដែលវាមានសារៈសំខាន់។ ក្នុងសេណារីយ៉ូនេះ អ្នកគួរតែបន្ថែមការតាមដានពេលវេលា និងគ្រប់គ្រងការដាក់បង្ហាញរបស់អ្នក។ នៅពេលប្រើការទំនាក់ទំនងពីរទិស (ជាពិសេសជាមួយអ្នកគ្រប់គ្រងដែលកំពុងស្វែងរក "ការយល់ដឹងអាចអនុវត្តពីលម្អិត និងទំនាក់ទំនងផ្នែកផ្សេងៗ") អ្នកអាចទទួលបានសំណួរនៅពេលកំពុងមានការពិភាក្សា ដែលអាចនាំឱ្យការពិភាក្សាចូលទៅកាន់ម្ខាងដែលមិនទាក់ទងនឹងរឿងដែលអ្នកកំពុងប្រាប់។ នៅពេលនេះ អ្នកអាចដំណើរការជំហាន និងយកការពិភាក្សាចូលទៅតាមរឿងរបស់អ្នកវិញ។
### 2. ចាប់ផ្តើមជាមួយគោលបំណងចុងក្រោយ
ចាប់ផ្តើមជាមួយគោលបំណងចុងក្រោយមានន័យថា ការយល់ដឹងពីអ្វីដែលអ្នកចង់ឲ្យអ្នកទស្សនាចាប់យកមុនពេលអ្នកចាប់ផ្តើមទំនាក់ទំនង។ ការគិតហ្វឹកហ្វឺនពីអ្វីដែលអ្នកចង់ឲ្យអ្នកទស្សនាស្វែងយកជាមុនអាចជួយអ្នកច្នៃរឿងដែលអ្នកអាចតាមដានបាន។ ចាប់ផ្តើមជាមួយគោលបំណងចុងក្រោយគឺសមរម្យសម្រាប់ទាំងការទំនាក់ទំនងមួយទិស និងពីរទិស។
តើត្រូវចាប់ផ្តើមដូចម្តេច? មុនពេលទំនាក់ទំនងទិន្នន័យ សរសេរចុះអំពីចំណុចសំខាន់ដែលអ្នកចង់ឲ្យអ្នកទស្សនាយល់។ បន្ទាប់មក ក្នុងគ្រប់ជំហាននៃការរៀបចំរឿងរបស់អ្នក ជាមួយទិន្នន័យ សួរខ្លួនឯងថា "វាសម្របសម្រួលដូចម្តេចទៅក្នុងរឿងដែលខ្ញុំកំពុងប្រាប់?"
ចាំបាច់ដឹង ខណៈដែលចាប់ផ្តើមដោយគោលបំណងចុងក្រោយគឺល្អ អ្នកមិនត្រូវការទំនាក់ទំនងតែនូវទិន្នន័យដែលគាំទ្រការយល់អំពីគោលបំណងរបស់អ្នកទេ។ អ្វីដែលហៅថា Cherry-Picking គឺបើអ្នកទំនាក់ទំនងតែទិន្នន័យដែលគាំទ្រដល់ចំណុចដែលពួកគេចង់បង្ហាញ ហើយមិនគិតទៅលើទិន្នន័យផ្សេងទៀត។
បើទិន្នន័យដែលអ្នកប្រមូលមកគាំទ្រចំពោះគោលបំណងរបស់អ្នក តាមរយៈល្អ។ ប៉ុន្តែបើមានទិន្នន័យមួយចំនួនដែលមិនគាំទ្រចំពោះគោលបំណងរបស់អ្នក ឬទំលាប់ផ្ទុយ ហើយអ្នកគួរតែទំនាក់ទំនងទិន្នន័យនោះផងដែរ។ ប្រសិនបើជាក់លាក់នេះ សូមប្រាប់អ្នកទស្សនាឱ្យដឹងថាហេតុអ្វីបានជាអ្នកជ្រើសរើសចងខ្សែរឿងរបស់អ្នក ដោយសារតែទិន្នន័យទាំងអស់មិនពិតជាគាំទ្រទេ។
### 3. ប្រើវាដូចជារឿងពិត
រឿងប្រពៃណីកើតឡើងក្នុង៥ដំណាក់កាល។ អ្នកអាចបានឮដំណាក់កាលទាំងនេះជាការលើកទង់ជាង Exposition, Rising Action, Climax, Falling Action, និង Denouncement។ ឬស្រួលជាងនេះគឺ Context, Conflict, Climax, Closure, Conclusion។ នៅពេលទំនាក់ទំនងទិន្នន័យ និងរឿងរបស់អ្នក អ្នកអាចប្រើវិធីសមរម្យដូចគ្នា។
អ្នកអាចចាប់ផ្តើមជាមួយបរិបទ ប្រកាសទីតាំង និងធានាថាអ្នកទស្សនាទាំងអស់នៅលើផ្ទាំងដូចគ្នា។ បន្ទាប់មកបង្ហាញដល់វិបត្តិ។ ហេតុអ្វីបានជាអ្នកត្រូវប្រមូលទិន្នន័យនេះ? តើបញ្ហាអ្វីដែលអ្នកចង់ដោះស្រាយ? បន្ទាប់មក Climax។ តើទិន្នន័យជាអ្វី? ព័ត៌មានទាំងនោះមានន័យដូចម្តេច? ដំណោះស្រាយអ្វីដែលទិន្នន័យប្រាប់យើងថាគួរតែធ្វើ? បន្ទាប់មកលោកអ្នកឈានដល់ Closure ដែលអ្នកអាចសារជាថ្មីបញ្ហានិងដំណោះស្រាយដែលបានផ្ដល់។ ចុងក្រោយ ជា Conclusion ដែលអ្នកអាចសង្ខេបចំណុចសំខាន់ៗ និងជំហានបន្ទាប់ដែលអ្នកណែនាំក្រុមធ្វើ។
### 4. ប្រើពាក្យ និងវាក្យមានន័យ
បើអ្នក និងខ្ញុំធ្វើការជាមួយគ្នានៅលើផលិតផលមួយ ហើយខ្ញុំបាននិយាយថា "អ្នកប្រើប្រាស់របស់យើងចំណាយពេលយូរដើម្បីចុះបញ្ជីលើវេទិកាយើង," តើអ្នកគិតថាពេល "យូរ" នេះប៉ុន្មានដល់? មួយម៉ោង? មួយសប្តាហ៍? វាពិបាកដឹង។ តើប្រសិនបើខ្ញុំប្រាប់រឿងនេះទៅមនុស្សគ្រប់រូប? អ្នកទស្សនាអាចមានគំនិតខុសៗគ្នាអំពីរយះពេលដែលអ្នកប្រើប្រាស់ចំណាយក្នុងការចុះបញ្ជីលើវេទិកាយើង។
ជំនួសវិញ ប្រសិនបើខ្ញុំបាននិយាយថា "អ្នកប្រើប្រាស់របស់យើងចំណាយពេលមធ្យម ៣ នាទីក្នុងការចុះឈ្មោះ និងចូលប្រើវេទិកាយើង។"
សារនោះច្បាស់លាស់ជាង។ នៅពេលទំនាក់ទំនងទិន្នន័យ វាអាចសាមញ្ញក្នុងការគិតថាមនុស្សគ្រប់គ្នានៅក្នុងអ្នកទស្សនាគិតដូចអ្នក។ ប៉ុន្តិនោះមិនមែនជាករណីជានិច្ចទេ។ ការជំរុញភាពច្បាស់លាស់ជុំវិញទិន្នន័យរបស់អ្នក និងន័យរបស់វាគឺជាទំនួលខុសត្រូវមួយរបស់អ្នកជាអ្នកទំនាក់ទំនង។ ប្រសិនបើទិន្នន័យឬរឿងរបស់អ្នកមិនច្បាស់ អ្នកទស្សនានឹងមានការលំបាកក្នុងការតាមដាន ហើយវាមិនមានហានិភ័យថាពួកគេនឹងយល់បានចំណុចសំខាន់បាន។
អ្នកអាចទំនាក់ទំនងទិន្នន័យបានច្បាស់ជាងពេលដែលអ្នកប្រើពាក្យនឹងវាក្យមានន័យ ជំនួសនឹងពាក្យមិនច្បាស់។ ខាងក្រោមនេះជាឧទាហរណ៍ខ្លះៗ៖
- យើងមានឆ្នាំដែល *គួររំភើប*!
- មនុស្សម្នាក់អាចគិតថាឆ្នាំគួររំភើបមានន័យថាការលូតលាស់ 2% - 3% ប្រាក់ចំណូល ហើយមនុស្សម្នាក់ទៀតអាចគិតថាយ៉ាងហោចណាស់ 50% - 60% ក៏ដូចជា។
- អតិថិជនរបស់យើងមានអត្រាអភិវឌ្ឍន៍ *យ៉ាងខ្លាំង*
- តើតំឡើងមួយចំនួនមានទំហំប៉ុន្មាន?
- ការចូលរួមនេះត្រូវការខ្យល់ *ច្រើន*
- តើអ្វីជាការខ្យល់ច្រើន?
ការប្រើពាក្យមិនច្បាស់ អាចមានភាពប្រយោជន៍ជារបៀបផ្ដើម សម្រាប់ទិន្នន័យដែលនឹងមក ឬជាសេចក្តីសង្ខេបរឿងដែលអ្នកទើបបង្ហាញ។ ប៉ុន្តែកុំភ្លេចថាត្រូវប្រាកដថាទាំងអស់នៃការនាំเสนอរបស់អ្នកច្បាស់សម្រាប់អ្នកទស្សនា។
### 5. ប្រើអារម្មណ៍
អារម្មណ៍គឺជាគន្លងសំខាន់នៅក្នុងការរៀបរាប់រឿង។ វាមានសារៈសំខាន់ជាងទៀតនៅពេលអ្នករាប់រឿងជាមួយទិន្នន័យ។ នៅពេលអ្នកទំនាក់ទំនងទិន្នន័យ អ្វីគ្រប់យ៉ាងផ្តោតទៅលើចំណុចដែលអ្នកចង់ឲ្យអ្នកទស្សនាមាន។ ពេលអ្នកបណ្តេញអារម្មណ៍ជាអ្នកទស្សនា វាជួយឲ្យពួកគេខឹង និងធ្វើឲ្យពួកគេស្រឡាញ់ការធ្វើសកម្មភាព។ អារម្មណ៍ក៏បង្កើនឱកាសដែលអ្នកទស្សនានឹងចងចាំសាររបស់អ្នក។
អ្នកអាចបានជួបប្រទះជាមួយនេះហើយជាមួយផ្សាយពាណិជ្ជកម្មទូរទស្សន៍។ ផ្សាយពាណិជ្ជកម្មខ្លះស្ងប់ស្ងាត់ណាស់ ហើយប្រើអារម្មណ៍សោកសៅ ដើម្បីភ្ជាប់ទៅអ្នកទស្សនានិងបង្ហាញទិន្នន័យដែលពួកគេបង្ហាញយ៉ាងច្បាស់។ ឬផ្សាយពាណិជ្ជកម្មខ្លះមានភាពរំភើបនិងរីករាយ ដែលអាចធ្វើឲ្យអ្នកភ្ជាប់ទិន្នន័យជាមួយអារម្មណ៍រីករាយ។
តើត្រូវប្រើអារម្មណ៍នៅក្នុងការទំនាក់ទំនងទិន្នន័យម៉េច? ខាងក្រោមជាវិធីខ្លះៗ៖
- ប្រើសក្ដីព្រមាន និងរឿងផ្ទាល់ខ្លួន
- នៅពេលប្រមូលទិន្នន័យ សាកល្បងប្រមូលទិន្នន័យបរិមាណ និងគុណភាពទាំងពីរ ហើយបញ្ចូលទាំងពីរប្រភេទទិន្នន័យនៅពេលអ្នកទំនាក់ទំនង។ ប្រសិនបើទិន្នន័យរបស់អ្នកភាគច្រើនជាបរិមាណ សូមស្វែងរករឿងពីមនុស្សដើម្បីយល់ពីបទពិសោធន៍របស់ពួកគេចំពោះអ្វីដែលទិន្នន័យប្រាប់
- ប្រើរូបភាព
- រូបភាពជួយអ្នកទស្សនាឱ្យមើលឃើញខ្លួននៅក្នុងស្ថានភាព។ នៅពេលអ្នកប្រើរូបភាព អ្នកអាចធ្វើឲ្យអ្នកទស្សនារស្រែកឡើងទៅកាន់អារម្មណ៍ដែលអ្នកគិតថាពួកគេគួរតែមានអំពីទិន្នន័យរបស់អ្នក។
- ប្រើពណ៌
- ពណ៌ផ្សេងៗបណ្តើរអារម្មណ៍ផ្សេងៗ។ ពណ៌ដែលពេញនិយម និងអារម្មណ៍ដែលពួកគេទទួលស្គាល់មាននៅក្រោម។ ត្រូវយកចិត្តទុកដាក់ថា ពណ៌អាចមានន័យខុសគ្នានៅក្នុងវប្បធម៌ផ្សេងៗ។
- ពណ៌ខៀវជាញឹកញាប់បណ្តើរអារម្មណ៍សុខសាន្ត និងទុកចិត្ត
- ពណ៌បៃតងភ្ជាប់ជាមួយធម្មជាតិ និងបរិស្ថាន
- ពណ៌ក្រហមភ្ជាប់ទៅការចាប់អារម្មណ៍ និងរំភើប
- ពណ៌លឿងភ្ជាប់ទៅភាពសង្ឃឹម និងសុខសប្បាយ
# ករណីសិក្សាការទំនាក់ទំនង
Emerson គឺជា​គ្រប់គ្រងផលិតផលសម្រាប់កម្មវិធីទូរស័ព្ទចល័តមួយ។ Emerson បានចាប់អារម្មណ៍ថាអតិថិជនបញ្ជូនការតវ៉ា និងរបាយការណ៍កំហុសច្រើនជាង 42% នៅចុងសប្តាហ៍។ Emerson ក៏បានចាប់អារម្មណ៍ថាអតិថិជនដែលបានបញ្ជូនការតវ៉ាដែលមិនទទួលការឆ្លើយតបទៅបន្ទាប់ពី 48 ម៉ោង មានឱកាស 32% ដែលនឹងផ្តល់ភាពវាយតម្លៃកម្មវិធីនៅស្មាតហ្វូននៅកម្រិត 1 ឬ 2។
បន្ទាប់ពីធ្វើការស្រាវជ្រាវ Emerson មានដំណោះស្រាយ២ចំនួនដែលអាចដោះស្រាយបញ្ហានេះ។ Emerson រៀបចំកិច្ចប្រជុំរយៈពេល 30 នាទីជាមួយអ្នកដឹកនាំក្រុម 3នាក់ ដើម្បីទំនាក់ទំនងទិន្នន័យ និងដំណោះស្រាយដែលបានផ្ដល់។
នៅក្នុងកិច្ចប្រជុំនេះ គោលបំណងរបស់ Emerson គឺឲ្យអ្នកដឹកនាំក្រុមយល់ថា ដំណោះស្រាយ២ខាងក្រោមអាចបង្កើនការវាយតម្លៃកម្មវិធី ដែលប្រហែលជានឹងបង្កើនប្រាក់ចំណូល។
**ដំណោះស្រាយទី 1.** ជួលបុគ្គលិកសេវាកម្មអតិថិជនធ្វើការនៅចុងសប្តាហ៍
**ដំណោះស្រាយទី 2.** ទិញប្រព័ន្ធត្រួតពិនិត្យសំបុត្រសេវាកម្មអតិថិជនថ្មី ដែលអនុញ្ញាតឲ្យបុគ្គលិកសេវាកម្មអតិថិជនអាចកំណត់ពីការតវ៉ាណាដែលនៅក្នុងជួរដែលមានរយៈពេលយូរបំផុត ដូច្នេះពួកគេអាចរៀបចំចម្លើយឲ្យបានភ្លាមៗជាងគេ។
នៅក្នុងកិច្ចប្រជុំ Emerson ចំណាយពេល 5 នាទីបង្ហាញហេតុផលថាហេតុអ្វីការវាយតម្លៃទាបនៅស្តុកកម្មវិធីពិបាក, 10 នាទីពន្យល់ពីដំណើរការស្រាវជ្រាវ និងរបៀបកំណត់ទំនោរទិន្នន័យ, 10 នាទីពិភាក្សាអំពីការតវ៉ាអតិថិជនថ្មីៗ និង 5 នាទីចុងក្រោយនិយាយខ្លីៗពីដំណោះស្រាយ 2 គ្រោង។
តើនេះជាវិធីដែលមានប្រសិទ្ធភាពសម្រាប់ Emerson ក្នុងការទំនាក់ទំនងក្នុងកិច្ចប្រជុំនេះទេ?
ក្នុងកំឡុងពេលប្រជុំ មេដឹកនាំក្រុមមានការយកចិត្តទុកដាក់លើរយៈពេល ១០ នាទីនៃការតវ៉ារបស់អតិថិជន ដែល Emerson បានពិភាក្សា។ បន្ទាប់ពីកិច្ចប្រជុំ ខណៈដែលមេដឹកនាំក្រុមនេះមានចងចាំតែការតវ៉ារបស់អតិថិជនទាំងនោះប៉ុណ្ណោះ។ មេដឹកនាំក្រុមមួយទៀតផ្តោតលើ Emerson ពិពណ៌នាអំពីដំណើរការស្រាវជ្រាវ។ មេដឹកនាំក្រុមទីបីចងចាំដំណោះស្រាយដែល Emerson បានសម្រេច ប៉ុន្តែមិនប្រាកដថាដំណោះស្រាយទាំងនោះអាចអនុវត្តបាន ដូចម្តេច។
ក្នុងស្ថានការណ៍ខាងលើ អ្នកអាចឃើញថាមានចន្លោះធំមួយរវាងអ្វីដែល Emerson ចង់ឲ្យមេដឹកនាំក្រុមទទួលស្គាល់ និងអ្វីដែលពួកគេបានយកចេញពីកិច្ចប្រជុំ។ ខាងក្រោមនេះជាវិធីផ្សេងទៀតដែល Emerson អាចពិចារណាបាន។
តើ Emerson អាចធ្វើឱ្យវិធីនេះប្រសើរឡើងបានយ៉ាងដូចម្តេច?
បរិបទ, הסתכסכות, កំពូល, ការបិទបញ្ចប់, សេចក្ដីសន្និដ្ឋាន
**បរិបទ** - Emerson អាចចំណាយពេល ៥ នាទីដំបូងក្នុងការណែនាំស្ថានភាពទាំងមូល និងធ្វើឲ្យប្រាកដថាមេដឹកនាំក្រុមយល់ពីរបៀបដែលបញ្ហាប៉ះពាល់ទៅលើមាត្រដ្ឋានសំខាន់ៗដែលមានសារៈសំខាន់ចំពោះក្រុមហ៊ុន ដូចជា ចំណូល។
វាអាចត្រូវបានបង្ហាញដូចជាវា៖ "បច្ចុប្បន្ននេះ, ពិន្ទុសម្រង់កម្មវិធីរបស់យើងនៅក្នុងហាងកម្មវិធីគឺ ២.៥។ ពិន្ទុនៅហាងកម្មវិធីមានសារៈសំខាន់ចំពោះការបង្កើតអត្ថប្រយោជន៍ក្នុងហាងកម្មវិធី (App Store Optimization), ដែលមានឥទ្ធិពលលើចំនួនអ្នកប្រើព្រមទាំងរបៀបដែលកម្មវិធីរបស់យើងត្រូវបានមើលឃើញចំពោះអ្នកប្រើប្រាស់ដែលមានសក្តានុពល។ ហើយតាមធម្មតា ចំនួនអ្នកប្រើប្រាស់ដែលយើងមានត្រូវបានភ្ជាប់ផ្ទាល់ទៅនឹងចំណូល។"
** הסתכסכות** Emerson អាចបន្តនិយាយរយៈពេលប្រហែល ៥ នាទីទៅលើជម្លោះ។
វាអាចទៅដូចជា៖ "អ្នកប្រើប្រាស់បានដាក់បណ្តឹងនិងរបាយការណ៍កំហុសច្រើនជាង ៤២% នៅចុងសប្តាហ៍។ អតិថិជនដែលបានដាក់បណ្តឹងដែលមិនបានទទួលការឆ្លើយតបក្រោយ ៤៨ ម៉ោងនោះមានភាគរយ ៣២% តិចជាងក្នុងការផ្តល់ពិន្ទុកកម្រិតលើ ២ របស់កម្មវិធីក្នុងហាងកម្មវិធី។ ការកែលម្អពិន្ទុកម្មវិធីរបស់យើងទៅរួចដល់ ៤ ក្នុងហាងកម្មវិធីនឹងបង្កើនឱកាសមើលឃើញរបស់យើងឡើងពី ២០ ដល់ ៣០% ដែលខ្ញុំគណនាថានឹងបង្កើនចំណូលឡើង ១០%។" ពិតណាស់ Emerson ត្រូវតែត្រៀមខ្លួនក្នុងការជំរុញចំនួនទាំងនេះ។
**កំពូល** បន្ទាប់ពីរៀបចំមូលដ្ឋាន Emerson អាចទៅកាន់កំពូលរយៈពេលប្រហែល ៥ នាទី។
Emerson អាចណែនាំដំណោះស្រាយដែលបានផ្ដល់ជូន បង្ហាញថាដំណោះស្រាយទាំងនោះនឹងដោះស្រាយបញ្ហាដែលបានរៀបរាប់ ដំណោះស្រាយទាំងនោះអាចត្រូវបានអនុវត្តនៅរបៀបប្រតិបត្តិដែលមានធម្មតា តើតម្លៃនៃដំណោះស្រាយមួយៗជាទឹកប្រាក់ប៉ុនណ្ណា តម្លៃវិនិយោគគួរបានលទ្ធផលជាអ្វី និងប្រហែលមើលរូបថតឬវិធីសាស្ត្រមួយចំនួននៃរបៀបដែលដំណោះស្រាយនឹងមើលទៅបើដំណោះស្រាយត្រូវបានអនុវត្ត។ Emerson ក៏អាចចែករំលែកយោបល់ពីអ្នកប្រើប្រាស់ដែលបានរង់ចាំលើយ៉ាងតិច ៤៨ ម៉ោងសម្រាប់ឲ្យបញ្ហារបស់ពួកគេត្រូវបានដោះស្រាយ មតិយោបល់នេះមកពីបុគ្គលិកសេវាកម្មអតិថិជនបច្ចុប្បន្នក្នុងក្រុមហ៊ុនដែលមានយោបល់លើប្រព័ន្ធសំបុត្របច្ចុប្បន្នផងដែរ។
**ការបិទបញ្ចប់** ឥឡូវនេះ Emerson អាចចំណាយពេល ៥ នាទីក្នុងការលើកឡើងម្ដងទៀតពីបញ្ហានានាដែលក្រុមហ៊ុនបានប្រឈមមុខ មើលវិញដំណោះស្រាយដែលបានផ្ដល់ជូន និងពិនិត្យមើលមូលហេតុថាដំណោះស្រាយទាំងនោះផ្លូវត្រឹមត្រូវ។
**សេចក្តីសន្និដ្ឋាន** ព្រោះវាជាកិច្ចប្រជុំជាមួយអ្នកផ្នែកពាក់ព័ន្ធមួយចំនួន ដែលប្រើប្រាស់ការទំនាក់ទំនងផ្លូវទ្វេ ខណៈ Emerson អាចរៀបចំចេញរយៈពេល ១០ នាទីសម្រាប់សំណួរដើម្បីធ្វើឲ្យប្រាកដថា អ្វីៗដែលលោកខំយល់ច្រឡំអាចត្រូវបានផលប្បភាពច្បាស់លាស់មុនពេលបញ្ចប់កិច្ចប្រជុំ។
បើ Emerson ប្រើវិធានការណ៍ទី២ វាអាចមានឱកាសខ្ពស់ជាងដែលមេដឹកនាំក្រុមនឹងយកនូវអ្វីដែល Emerson ចង់ឲ្យយកចេញពីកិច្ចប្រជុំ - នោះគឺរបៀបដោះស្រាយការតវ៉ានិងកំហុសអាចបានកែលម្អ ហើយមានដំណោះស្រាយ ២យ៉ាងដែលអាចដាក់ព្យួរក្នុងការដោះស្រាយបញ្ហានោះ។ វិធីនេះនឹងជាវិធីផ្សព្វផ្សាយទិន្នន័យ និងរឿងរ៉ាវដែល Emerson ចង់ទំនាក់ទំនងជាការផ្សព្វផ្សាយដែលមានប្រសិទ្ធភាពជាង។
# សេចក្តីសន្និដ្ឋាន
### សង្ខេបចំណុចសំខាន់ៗ
- ការទំនាក់ទំនងគឺជាការផ្ទេរឬប្តូរព័ត៌មាន។
- ពេលផ្សព្វផ្សាយទិន្នន័យ គោលបំណងរបស់អ្នកមិនគួរតែគ្រាន់តែបញ្ជូនលេខសំគាល់ទៅអ្នកស្ដាប់ទេ។ គោលបំណងគឺផ្តល់ស្រមោលរឿងដែលបានរៀបចំដោយទិន្នន័យរបស់អ្នក។
- មានប្រភេទទំនាក់ទំនងពីរប្រភេទ ការទំនាក់ទំនងផ្លូវមួយ (ព័ត៌មានត្រូវបានផ្ញើដោយគ្មានបំណងឲ្យមានការឆ្លើយតប) និងការទំនាក់ទំនងផ្លូវទ្វេ (ព័ត៌មានប្រែប្រួលតបទៅមក)។
- មានយុទ្ធសាស្រ្តជាច្រើនដែលអ្នកអាចប្រើប្រាស់ដើម្បីពណ៌នារឿងជាមួយទិន្នន័យ រយៈពេល ៥យុទ្ធសាស្រ្តដែលយើងបានចរចារមកមាន៖
- យល់ដឹងអ្នកស្ដាប់, ម៉ាទិក, និងវិធីសាស្រ្តទំនាក់ទំនងរបស់អ្នក
- ចាប់ផ្តើមពីចុងក្រោយ
- ប្រើវិធីសាស្រ្តដូចជាហេតុការណ៍ពិតប្រាកដ
- ប្រើពាក្យនិងវាក្យសព្ទមានអត្ថន័យ
- ប្រើអារម្មណ៍
### អ្នកត្រូវណែនាំនូវធនធានសម្រាប់រៀនដោយខ្លួនឯង
[The Five C's of Storytelling - Articulate Persuasion](http://articulatepersuasion.com/the-five-cs-of-storytelling/)
[1.4 Your Responsibilities as a Communicator Business Communication for Success (umn.edu)](https://open.lib.umn.edu/businesscommunication/chapter/1-4-your-responsibilities-as-a-communicator/)
[How to Tell a Story with Data (hbr.org)](https://hbr.org/2013/04/how-to-tell-a-story-with-data)
[Two-Way Communication: 4 Tips for a More Engaged Workplace (yourthoughtpartner.com)](https://www.yourthoughtpartner.com/blog/bid/59576/4-steps-to-increase-employee-engagement-through-two-way-communication)
[6 succinct steps to great data storytelling - BarnRaisers, LLC (barnraisersllc.com)](https://barnraisersllc.com/2021/05/02/6-succinct-steps-to-great-data-storytelling/)
[How to Tell a Story With Data | Lucidchart Blog](https://www.lucidchart.com/blog/how-to-tell-a-story-with-data)
[6 Cs of Effective Storytelling on Social Media | Cooler Insights](https://coolerinsights.com/2018/06/effective-storytelling-social-media/)
[The Importance of Emotions In Presentations | Ethos3 - A Presentation Training and Design Agency](https://ethos3.com/2015/02/the-importance-of-emotions-in-presentations/)
[Data storytelling: linking emotions and rational decisions (toucantoco.com)](https://www.toucantoco.com/en/blog/data-storytelling-dataviz)
[Emotional Advertising: How Brands Use Feelings to Get People to Buy (hubspot.com)](https://blog.hubspot.com/marketing/emotions-in-advertising-examples)
[Choosing Colors for Your Presentation Slides | Think Outside The Slide](https://www.thinkoutsidetheslide.com/choosing-colors-for-your-presentation-slides/)
[How To Present Data [10 Expert Tips] | ObservePoint](https://resources.observepoint.com/blog/10-tips-for-presenting-data)
[Microsoft Word - Persuasive Instructions.doc (tpsnva.org)](https://www.tpsnva.org/teach/lq/016/persinstr.pdf)
[The Power of Story for Your Data (thinkhdi.com)](https://www.thinkhdi.com/library/supportworld/2019/power-story-your-data.aspx)
[Common Mistakes in Data Presentation (perceptualedge.com)](https://www.perceptualedge.com/articles/ie/data_presentation.pdf)
[Infographic: Here are 15 Common Data Fallacies to Avoid (visualcapitalist.com)](https://www.visualcapitalist.com/here-are-15-common-data-fallacies-to-avoid/)
[Cherry Picking: When People Ignore Evidence that They Dislike Effectiviology](https://effectiviology.com/cherry-picking/#How_to_avoid_cherry_picking)
[Tell Stories with Data: Communication in Data Science | by Sonali Verghese | Towards Data Science](https://towardsdatascience.com/tell-stories-with-data-communication-in-data-science-5266f7671d7)
[1. Communicating Data - Communicating Data with Tableau [Book] (oreilly.com)](https://www.oreilly.com/library/view/communicating-data-with/9781449372019/ch01.html)
## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ds/quiz/31)
ពិនិត្យមើលអ្វីដែលអ្នកទើបរៀនរួចជាមួយលទ្ធផលសំណួរផ្សេងៗខាងលើ!
## កិច្ចការ
[Market Research](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការបដិសេធ**៖
ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលយើងខិតខំប្រឹងប្រែងសម្រាប់ភាពត្រឹមត្រូវ សូមយល់ដឹងថាការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុស ឬភាពមិនត្រឹមត្រូវ។ ឯកសារដើម ជាភាសាតំណើបណ្តាល គួរត្រូវបានគេចាត់ទុកជាឯកសារដើមដែលមានសុពលភាព។ សម្រាប់ព័ត៌មានសំខាន់ៗ យើងផ្តល់អនុសាសន៍ឱ្យប្រើការបកប្រែដោយមនុស្សជំនាញ។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកស្រាយខុសៗណាមួយដែលកើតឡើងពីការប្រើប្រាស់ការបកប្រែនេះទេ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,19 @@
# ប kể រឿង
## សេចក្តីណែនាំ
វិទ្យាសាស្ត្រទិន្នន័យគឺទាក់ទងនឹងការប kể រឿង។ ជ្រើសរើសមួយទិន្នន័យណាមួយ ហើយសរសេរឯកសារជាបណ្ដោះអាសន្នមួយអំពីរឿងដែលអ្នកអាចប kể អំពីវា។ អ្នកសង្ឃឹមអ្វីពីទិន្នន័យរបស់អ្នកដែលអាចបង្ហាញ? តើអ្នកនឹងធ្វើអ្វីបើការបង្ហាញរបស់វាមានបញ្ហា? តើធ្វើដូចម្តេចបើទិន្នន័យរបស់អ្នកមិនចេញឱ្យដឹងរឿងរ៉ាវបានយ៉ាងងាយស្រួល? គិតពីសេណារីយ៉ូដែលទិន្នន័យរបស់អ្នកអាចបង្ហាញ ហើយសរសេរពួកវាចុះ។
## ការវាយតម្លៃ
ល្អឧត្តម | ត្រឹមត្រូវ | តម្រូវការកែលម្អ
--- | --- | -- |
អត្ថបទមួយទំព័រត្រូវបង់ជាទ្រង់ទ្រាយ .doc ជាមួយទិន្នន័យបានពិពណ៌នា ឯកសារយោងបានផ្ដល់ ហើយមានរឿងរ៉ាវស្របតាមវាជាមួយឧទាហរណ៍លម្អិតពីទិន្នន័យ។| អត្ថបទខ្លីជាងនេះត្រូវបានដាក់បង្ហាញក្នុងទ្រង់ទ្រាយដែលមានពិន្ទុខ្សត់ | អត្ថបទគឺខ្វះខាតក្នុងមួយក្នុងចំណោមព័ត៌មានខាងលើ។
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការបដិសេធ**៖
ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលយើងខិតខំប្រឹងប្រែងឱ្យមានភាពត្រឹមត្រូវ សូមជ្រាបថាការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុស ឬភាពមិនត្រឹមត្រូវ។ ឯកសារដើមនៅភាសាម្ចាស់ដើមគួរត្រូវបានគេពិចារណាជាប្រភពដ៏មានសុពលភាព។ សម្រាប់ព័ត៌មានសំខាន់ៗ ការបកប្រែដោយមនុស្សជំនាញគឺត្រូវបានណែនាំ។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកប្រែខុសដែលកើតមានពីការប្រើប្រាស់ការបកប្រែលេខនេះ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,23 @@
# ជីវឆាកវិទ្យាសាស្ត្រទិន្នន័យ
![communication](../../../translated_images/km/communication.06d8e2a88d30d168.webp)
> រូបថតដោយ <a href="https://unsplash.com/@headwayio?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Headway</a> នៅលើ <a href="https://unsplash.com/s/photos/communication?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Unsplash</a>
ក្នុងមេរៀនទាំងនេះ អ្នកនឹងសិក្សាអំពីមុខម្ហូបខ្លះៗនៃជីវឆាកវិទ្យាសាស្ត្រទិន្នន័យ រួមទាំង ការវិភាគ និងការទំនាក់ទំនងជុំវិញទិន្នន័យ។
### หัวข้อ
1. [មួយការណ៍ប្រាប់ទូទៅ](14-Introduction/README.md)
2. [ការវិភាគ](15-analyzing/README.md)
3. [ការទំនាក់ទំនង](16-communication/README.md)
### សិទ្ធិ
មេរៀនទាំងនេះត្រូវបានសរសេរជាមួយ❤️ដោយ [Jalen McGee](https://twitter.com/JalenMCG) និង [Jasmine Greenaway](https://twitter.com/paladique)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការបដិសេធ**៖
ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលដែលយើងខិតខំប្រឹងប្រែងដើម្បីភាពត្រឹមត្រូវ សូមចងចាំថាបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុសឬភាពមិនត្រឹមត្រូវ។ ឯកសារដើមនៅក្នុងភាសាដើមគួរត្រូវបានយកប្រភពផ្លូវការជាមុនគេ។ សម្រាប់ព័ត៌មានសំខាន់ៗ ការបកប្រែដោយមនុស្សជំនាញគឺត្រូវបានណែនាំ។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំឬការបកប្រែក្នុងលក្ខខណ្ឌកើតមានពីការប្រើប្រាស់បកប្រែនេះទេ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,106 @@
# អធិប្បាយអំពីវិទ្យាសាស្រ្តទិន្នន័យនៅក្នុងពពក
|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/17-DataScience-Cloud.png)|
|:---:|
| វិទ្យាសាស្រ្តទិន្នន័យនៅក្នុងពពក៖ អធិប្បាយ - _Sketchnote ដោយ [@nitya](https://twitter.com/nitya)_ |
នៅក្នុងមេរៀននេះ អ្នកនឹងរៀនពីក្រុមការណ៍មូលដ្ឋាននៃពពក បន្ទាប់មកអ្នកនឹងឃើញថាហេតុអ្វីបានជាវាមានចំណាប់អារម្មណ៍សម្រាប់អ្នកក្នុងការប្រើប្រាស់សេវាកម្មពពកដើម្បីដំណើរការគម្រោងវិទ្យាសាស្រ្តទិន្នន័យរបស់អ្នក ហើយយើងនឹងមើលឧទាហរណ៍ខ្លះនៃគម្រោងវិទ្យាសាស្រ្តទិន្នន័យដែលដំណើរការនៅក្នុងពពក។
## [ប្រលងមុនមេរៀន](https://ff-quizzes.netlify.app/en/ds/quiz/32)
## តើពពកគឺជាអ្វី?
ពពក ឬ ការគណនាក្នុងពពក គឺជាការផ្ដល់សេវាកម្មគណនាដែលបង់ប្រាក់​តាមការប្រើប្រាស់ ដែលត្រូវបានផ្ដល់ជូននៅលើមហាអ៊ីនធឺណិតជាមួយហេដ្ឋារចនាសម្ព័ន្ធមួយ។ សេវាកម្មរួមមានដូចជា ដំណោះស្រាយទុកស្តុកទិន្នន័យ, មូលដ្ឋានទិន្នន័យ, បណ្ដាញ, សូហ្វវែរ, វិភាគ និងសេវាកម្មខាងបញ្ញា។
យើងភាគច្រើនបំបែកពពកឲ្យទៅជា ពពកសាធារណៈ, ពពកឯកជន និងពពកតម្រង់ដូចខាងក្រោម៖
* ពពកសាធារណៈ: ពពកសាធារណៈគឺជាដែលមានកម្មសិទ្ធិ និងគ្រប់គ្រងដោយអ្នកផ្ដល់សេវាកម្មពពកភាគីទីបី ដែលផ្ដល់ធនធានគណនារបស់ខ្លួនតាមអ៊ីនធឺណិតទៅសាធារណៈ
* ពពកឯកជន: មានន័យថាធនធានគណនាក្នុងពពកដែលប្រើប្រាស់ដោយអង្គការឬអាជីវកម្មតែម្នាក់ឯង មានសេវាកម្ម និងហេដ្ឋារចនាសម្ព័ន្ធត្រូវបានគ្រប់គ្រងលើបណ្ដាញឯកជន
* ពពកតម្រង់: ពពកតម្រង់គឺជាប្រព័ន្ធដែលបញ្ចូលពពកសាធារណៈ និងឯកជន។ អ្នកប្រើប្រាស់ជ្រើសរើសមជ្ឈមណ្ឌលទិន្នន័យនៅក្នុងកន្លែងដែលមាន ប៉ុន្តែអនុញ្ញាតឲ្យទិន្នន័យ និងកម្មវិធីដំណើរការទៅលើពពកសាធារណៈមួយឬច្រើន។
សេវាកម្មគណនាក្នុងពពកភាគច្រើនចែកចេញជាបីប្រភេទ៖ ហេដ្ឋារចនាសម្ព័ន្ធជាសេវាកម្ម (IaaS), វេទិកាជាសេវាកម្ម (PaaS) និងសូហ្វវែរជាសេវាកម្ម (SaaS)។
* ហេដ្ឋារចនាសម្ព័ន្ធជាសេវាកម្ម (IaaS): អ្នកប្រើជួលហេដ្ឋារចនាសម្ព័ន្ធ IT ដូចជាម៉ាស៊ីនបម្រើ និងម៉ាស៊ីនវឺឌួល (VMs), ទុកស្តុក, បណ្ដាញ, ប្រព័ន្ធប្រតិបត្តិការ
* វេទិកាជាសេវាកម្ម (PaaS): អ្នកប្រើជួលបរិយាកាសសម្រាប់អភិវឌ្ឍ, សាកល្បង, ចែកចាយ និងគ្រប់គ្រងកម្មវិធីសូហ្វវែរ។ អ្នកប្រើមិនចាំបាច់ការព្រួយបារម្ភអំពីការដំឡើង ឬគ្រប់គ្រងហេដ្ឋារចនាសម្ព័ន្ធរបស់ម៉ាស៊ីនបម្រើ ទុកស្តុក បណ្ដាញ និងមូលដ្ឋានទិន្នន័យដែលទាមទារសម្រាប់ការអភិវឌ្ឍន៍ឡើយ
* សូហ្វវែរជាសេវាកម្ម (SaaS): អ្នកប្រើទទួលបានការចូលប្រើកម្មវិធីសូហ្វវែរ តាមអ៊ីនធឺណិត ពេលដែលត្រូវការនិងភាគច្រើននៅលើមូលដ្ឋានជាសមាជិកជាប្រចាំ។ អ្នកប្រើមិនចាំបាច់បារម្ភអំពីការផ្ទុក និងគ្រប់គ្រងកម្មវិធីសូហ្វវែរ ហេដ្ឋារចនាសម្ព័ន្ធគាំទ្រ ឬការថែទាំ ដូចជាការអាប់ដេតកម្មវិធី និងការជួសជុលសុវត្ថិភាពឡើយ។
អ្នកផ្ដល់សេវាកម្មពពកធំនៅលើទីផ្សារមួយចំនួនគឺ包括<span>Amazon Web Services</span>, <span>Google Cloud Platform</span> និង <span>Microsoft Azure</span>
## ហេតុអ្វីជ្រើសរើសពពកសម្រាប់វិទ្យាសាស្រ្តទិន្នន័យ?
អ្នកអភិវឌ្ឍន៍ និងអ្នកជំនាញ IT ជ្រើសរើសធ្វើការជាមួយពពកដោយហេតុផលជាច្រើន រួមមាន៖
* នវានុវត្តន៍៖ អ្នកអាចបង្កើតកម្មវិធីរបស់អ្នកដោយបញ្ចូលសេវាកម្មនវានុវត្តន៍ដែលបានបង្កើតឡើងដោយអ្នកផ្ដល់សេវាកម្មពពកដោយផ្ទាល់ទៅក្នុងកម្មវិធីរបស់អ្នក
* ភាពបត់បែន៖ អ្នកបង់ប្រាក់សម្រាប់សេវាកម្មដែលអ្នកត្រូវការតែប៉ុណ្ណោះ ហើយអាចជ្រើសរើសពីសេវាកម្មជាច្រើន។ ភាគច្រើនអ្នកបង់តាមការប្រើប្រាស់ និងអាចធ្វើការប្រែប្រួលសេវាកម្មឲ្យសមរម្យទៅនឹងតម្រូវការដែលកំពុងអភិវឌ្ឍ
* ថវិកា៖ អ្នកមិនចាំបាច់វិនិយោគដំបូង ទិញរឹង និងសូហ្វវែរ ដំឡើង និងដំណើរការមជ្ឈមណ្ឌលទិន្នន័យក្នុងតំបន់ និងអ្នកអាចបង់ប្រាក់ទាំងអស់សម្រាប់អ្វីដែលអ្នកប្រើប្រាស់បានតែប៉ុណ្ណោះ
* ភាពសមរម្យក្នុងការលាយលំចិត្តនិងពង្រីក៖ ធនធានរបស់អ្នកអាចលាយឡំតាមតម្រូវការនៃគម្រោង ដែលមានន័យថាកម្មវិធីរបស់អ្នកអាចប្រើប្រាស់ថាមពលគណនាឬទុកស្តុក និងថាមពលបណ្តាញលើស ឬតិច ដោយតាមពេលវេលា និងបរិបទក្រៅ
* ផលិតភាព៖ អ្នកអាចផ្ដោតលើអាជីវកម្មរបស់អ្នកជាងចំណាយពេលលើភារកិច្ចដែលអ្នកផ្សេងអាចគ្រប់គ្រងបាន ដូចជា ការគ្រប់គ្រងមជ្ឈមណ្ឌលទិន្នន័យ
* ការជឿជាក់៖ ការគណនាក្នុងពពកផ្ដល់វិធីសាស្រ្តជាច្រើនក្នុងការបម្រុងទុកទិន្នន័យរបស់អ្នកជាបន្តបន្ទាប់ ហើយអ្នកអាចរៀបចំផែនការផ្ទៃព្រួតរងគ្រោះដើម្បីរក្សាអាជីវកម្ម និងសេវាកម្មរបស់អ្នក ដើម្បីបន្តដំណើរការនៅពេលមានវិបត្តិ
* សុវត្ថិភាព៖ អ្នកអាចទទួលបានអត្ថប្រយោជន៍ពីគោលនយោបាយ បច្ចេកវិទ្យា និងតុល្យភាពដែលពង្រឹងសុវត្ថិភាពគម្រោងរបស់អ្នក
នេះជាហេតុផលទូទៅមួយចំនួនដែលមនុស្សជ្រើសរើសប្រើសេវាកម្មពពក។ ឥឡូវនេះពេលយើងមានការយល់ដឹងល្អជាងមុនអំពីអ្វីដែលពពកជានិងអត្ថប្រយោជន៍សំខាន់របស់វា ពេលនេះយើងនឹងមើលឲ្យច្បាស់ល្អចំពោះការងាររបស់អ្នកវិទ្យាសាស្រ្តទិន្នន័យ និងអ្នកអភិវឌ្ឍន៍ធ្វើការជាមួយទិន្នន័យ ហើយតើពពកអាចជួយពួកគេទៅជាមួយបញ្ហាជាច្រើនដែលពួកគេប្រឈមមុខ៖
* ការផ្ទុកទិន្នន័យច្រើន៖ ជៀសវាងការទិញ គ្រប់គ្រង និងការពារម៉ាស៊ីនបម្រើធំនានា អ្នកអាចផ្ទុកទិន្នន័យរបស់អ្នកដោយផ្ទាល់នៅក្នុងពពក ជាមួយដំណោះស្រាយដូចជា Azure Cosmos DB, Azure SQL Database និង Azure Data Lake Storage។
* ការប្រតិបត្តិការសមាសភាពទិន្នន័យ៖ ការសមាសភាពទិន្នន័យគឺជាផ្នែកសំខាន់នៃវិទ្យាសាស្រ្តទិន្នន័យ ដែលអនុញ្ញាតឲ្យអ្នកធ្វើបម្លែងចេញពីការប្រមូលទិន្នន័យទៅការប្រឹងប្រែងអង្គការសកម្ម។ ជាមួយសេវាកម្មសមាសភាពទិន្នន័យដែលផ្ដល់នៅក្នុងពពក អ្នកអាចប្រមូល បម្លែង និងសមាសភាពទិន្នន័យពីប្រភពផ្សេងៗចូលទៅក្នុងឃ្លាំងទិន្នន័យតែមួយ ជាមួយ Data Factory។
* ការដំណើរការទិន្នន័យ៖ ការដំណើរការទិន្នន័យច្រើនទាមទារថាមពលគណនាច្រើន ហើយមនុស្សមិនម្នាក់ណាមានព្រលឹងគ្រឿងចក្រ ដែលមានថាមពលគ្រប់គ្រាន់សម្រាប់ការប្រតិបត្តិ នេះហើយជាហេតុផលដែលមនុស្សជាច្រើនជ្រើសរើសប្រើប្រាស់ថាមពលគណនាធំបំផុតក្នុងពពកជាផ្ទាល់ដើម្បីដំណើរការ និងចែកចាយដំណោះស្រាយរបស់ពួកគេ។
* ការប្រើប្រាស់សេវាកម្មវិភាគទិន្នន័យ៖ សេវាកម្មពពកដូចជា Azure Synapse Analytics, Azure Stream Analytics និង Azure Databricks ជួយអ្នកបំលែងទិន្នន័យរបស់អ្នកទៅជាជំនាញដែលអាចអនុវត្តបាន។
* ការប្រើប្រាស់សេវាកម្មរៀនម៉ាស៊ីន និងបញ្ញាទិន្នន័យ៖ ជំនួសចាប់ផ្តើមពីសូន្យ អ្នកអាចប្រើប៉ូឡិចម៉ាស៊ីនរៀនដែលផ្ដល់ដោយអ្នកផ្ដល់សេវាកម្មពពក ជាមួយសេវាកម្មដូចជា AzureML។ អ្នកក៏អាចប្រើសេវាកម្មបញ្ញាដូចជា ពាក្យនិយាយទៅជាអត្ថបទ អត្ថបទទៅជាពាក្យនិយាយ ការមើលឃើញកុំព្យូទ័រនិងផ្សេងៗទៀត។
## ឧទាហរណ៍នៃវិទ្យាសាស្រ្តទិន្នន័យនៅក្នុងពពក
មកធ្វើឲ្យវាច្បាស់ឡើងដោយមើលឧទាហរណ៍ពីករណីពីរបី៕
### វិភាគអារម្មណ៍បណ្ដាញសង្គមជាប្រព័ន្ធពេលវេលាពិតប្រាកដ
យើងនឹងចាប់ផ្តើមជាមួយករណីដែលមនុស្សភាគច្រើនសិក្សានៅពេលចាប់ផ្តើមរៀនលើម៉ាស៊ីនរៀន៖ វិភាគអារម្មណ៍បណ្ដាញសង្គមក្នុងពេលវេលាពិតប្រាកដ។
សន្ដិសុខថាអ្នកដំណើរការរបាយការណ៍ព័ត៌មានមួយ ហើយអ្នកចង់ប្រើទិន្នន័យផ្ទាល់នៅក្នុងលេីកដើម្បីយល់អំពីមាតិកាដែលអ្នកអានអាចមានចំណាប់អារម្មណ៍។ ដើម្បីដឹងពីអ្វីនេះ អ្នកអាចបង្កើតកម្មវិធីមួយដែលអនុវត្តវិភាគអារម្មណ៍បណ្ដាញសង្គមនៅពេលវេលាពិតប្រាកដពីការបង្ហោះ Twitter ពីប្រធានបទដែលពាក់ព័ន្ធទៅអ្នកអាន។
សញ្ញាចំបើងដែលអ្នកនឹងមើលគឺ បរិមាណសារTweetលើប្រធានបទជាក់លាក់ (hashtags) និងអារម្មណ៍ ដែលកំណត់ដោយការប្រើប្រាស់ឧបករណ៍វិភាគដែលអនុវត្តវិភាគអារម្មណ៍នៅជុំវិញប្រធានបទដែលបានកំណត់។
ជំហានដែលចាំបាច់សម្រាប់បង្កើតគម្រោងនេះមានដូចជា៖
* បង្កើត event hub សម្រាប់ស្ទ្រីមទិន្នន័យដែលនឹងប្រមូលទិន្នន័យពី Twitter
* ការកំណត់រចនាសម្ព័ន្ធ និងចាប់ផ្តើមកម្មវិធី Twitter client ដែលនឹងហៅ Twitter Streaming APIs
* បង្កើត Stream Analytics job
* កំណត់ការបញ្ចូលការងារ និងស្នើសុំ
* បង្កើត output sink និងកំណត់ការចេញការងារ
* ចាប់ផ្តើមការងារ
ដើម្បីមើលដំណើរការទាំងមូល សូមមើលនៅ [ឯកសារ](https://docs.microsoft.com/azure/stream-analytics/stream-analytics-twitter-sentiment-analysis-trends?WT.mc_id=academic-77958-bethanycheum&ocid=AID30411099)។
### វិភាគអត្ថបទវិទ្យាសាស្ត្រ
សូមយកឧទាហរណ៍មួយទៀតពីគម្រោងដែលបង្កើតដោយ [Dmitry Soshnikov](http://soshnikov.com) មួយក្នុងចំណោមអ្នកនិពន្ធនៃមេរៀននេះ។
Dmitry បានបង្កើតឧបករណ៍ដែលវិភាគឯកសារទាក់ទងជាមួយ COVID។ ដោយពិនិត្យការគម្រោងនេះ អ្នកនឹងមើលឃើញនូវរបៀបដែលអ្នកអាចបង្កើតឧបករណ៍ដកស្រង់ចំណេះដឹងពីអត្ថបទវិទ្យាសាស្ត្រ ទទួលបានចំណេះដឹង និងជួយស្រាវជ្រាវស្វែងរកតាមទិសដៅក្នុងការប្រមូលផ្តុំអត្ថបទច្រើនដោយមានប្រសិទ្ធភាព។
មកមើលជំហាននានា​ដែលបានប្រើសម្រាប់នេះ៖
* ដកស្រង់ និងអង្គភាពព័ត៌មានជាមុនជាមួយ [Text Analytics for Health](https://docs.microsoft.com/azure/cognitive-services/text-analytics/how-tos/text-analytics-for-health?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109)
* ប្រើ [Azure ML](https://azure.microsoft.com/services/machine-learning?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109) ដើម្បីដំណើរការជា​បួស
* ទុកស្តុក និងស្នើសុំព័ត៌មានជាមួយ [Cosmos DB](https://azure.microsoft.com/services/cosmos-db?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109)
* បង្កើតផ្ទាំងបង្ហាញទិន្នន័យអន្តរប្រតិបត្តិសម្រាប់ការស្វែងរកទិន្នន័យ និងការតំណាងទិន្នន័យប្រើ Power BI
ដើម្បីឃើញដំណើរការទាំងមូល សូមទៅកាន់ [ប្លុករបស់ Dmitry](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/)។
ដូចដែលអ្នកឃើញ យើងអាចប្រើប្រាស់សេវាកម្មពពកដោយមានវិធីជាច្រើនដើម្បីអនុវត្តវិទ្យាសាស្រ្តទិន្នន័យ។
## ចំណាំចុងក្រោយ
ប្រភព៖
* https://azure.microsoft.com/overview/what-is-cloud-computing?ocid=AID3041109
* https://docs.microsoft.com/azure/stream-analytics/stream-analytics-twitter-sentiment-analysis-trends?ocid=AID3041109
* https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/
## ប្រលងបន្ទាប់ពីមេរៀន
## [ប្រលងបន្ទាប់ពីមេរៀន](https://ff-quizzes.netlify.app/en/ds/quiz/33)
## កិច្ចការផ្ទះ
[Market Research](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការបដិសេធ**៖
ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាកម្ម​បកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ទោះយើងខិតខំប្រឹងប្រែងដើម្បីភាពត្រឹមត្រូវ សូមយល់ឱ្យបានច្បាស់ថាការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុស ឬមិនត្រឹមត្រូវ។ ឯកសារដើមដែលមានភាសាមាតុភូមិគួរត្រូវបានគេចាត់ទុកជាឯកសារដែលមានសិទ្ធិលើព័ត៌មានច្បាស់លាស់។ សម្រាប់ព័ត៌មានសំខាន់ៗ សូមណែនាំការបកប្រែដោយអ្នកជំនាញមនុស្សវិជ្ជាជីវៈ។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកស្រាយខុសប្លែកណាមួយដែលកើតឡើងចេញពីការប្រើប្រាស់ការបកប្រែនេះទេ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,18 @@
# ការស្រាវជ្រាវផ្សារ
## សារណូត
នៅក្នុងមេរៀននេះ អ្នកបានរៀនថាមានក្រុមហ៊ុនផ្ដល់សេវាអេក្លោដមួយចំនួនសំខាន់។ សូមធ្វើការស្រាវជ្រាវផ្សារដើម្បីរកឃើញថា ពួកវាអាចផ្ដល់អ្វីទៅដល់វិជ្ជាជីវៈទិន្នន័យ។ តើសេវាកម្មដែលផ្ដល់មានទំនូរទេ? សូមសរសេរអត្ថបទមួយ ដើម្បីពិពណ៌នាអំពីសេវាកម្មដែលផ្ដល់ដោយក្រុមហ៊ុនអេក្លោដបីខ្លះ ឬកាន់តែច្រើនទាំងនេះ។
## ការវាយតម្លៃ
Exemplary | Adequate | Needs Improvement
--- | --- | -- |
អត្ថបទមួយទំព័រពិពណ៌នាសេវាកម្មវិជ្ជាជីវៈទិន្នន័យរបស់ក្រុមហ៊ុនអេក្លោដបីរូប ឬច្រើនជាងនេះ ហើយបង្ហាញពីភាពខុសគ្នារវាងពួកវា។ | ត្រូវបានបង្កើតអត្ថបទខ្លីជាងនេះ | មានការបង្ហាញអត្ថបទមួយដោយមិនបានបញ្ចប់វិភាគ។
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការបដិសេធ**៖
ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលដែលយើងខិតខំប្រឹងប្រែងសម្រាប់ភាពត្រឹមត្រូវ សូមយកចិត្តទុកដាក់ថាការបកប្រែដោយស្វ័យប្រវត្តិក្នុងមួយចំនួនអាចមានកំហុស ឬភាពមិនត្រឹមត្រូវ។ ឯកសារដើមជាភាសាដើមគួรถูกដាក់ចិត្តនៅជាក្រដាសធ្វើជាធនធានមានអ រ ហ្គ បច្ចេកទេស។ សម្រាប់ព័ត៌មានសំខាន់ៗ មន្រ្តីបកប្រែដោយអ្នកជំនាញមិនានគឺត្រូវបានផ្ដល់អាទិភាព។ យើងមិនមានកាតព្វកិច្ចចំពោះការយល់ច្រឡំ ឬការបកស្រាយខុសនៃការប្រើប្រាស់ការបកប្រែនេះឡើយ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,346 @@
# វិទ្យាសាស្ត្រទិន្នន័យនៅលើពពក៖ វិធី "កូដទាប/គ្មានកូដ"
|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/18-DataScience-Cloud.png)|
|:---:|
| វិទ្យាសាស្ត្រទិន្នន័យនៅលើពពក៖ កូដទាប - _Sketchnote ដោយ [@nitya](https://twitter.com/nitya)_ |
តារាងមាតិកាៈ
- [វិទ្យាសាស្ត្រទិន្នន័យនៅលើពពក៖ វិធី "កូដទាប/គ្មានកូដ"](##data-science-in-the-cloud-the-low-codeno-code-way)
- [សំណួរប្រលងមុនមេរៀន](#សំណួរប្រលងមុនមេរៀន)
- [១. ដំណើរណើរ](#១-ដំណើរណើរ)
- [១.១ តើ Azure Machine Learning ជាអ្វី?](#១១-តើ-azure-machine-learning-ជាអ្វី)
- [១.២ គម្រោងសន្និដ្ឋានបរាជ័យបេះដូង៖](#១២-គម្រោងសន្និដ្ឋានបរាជ័យបេះដូង៖)
- [១.៣ សំណុំទិន្នន័យបរាជ័យបេះដូង៖](#១៣-សំណុំទិន្នន័យបរាជ័យបេះដូង)
- [២. ការបណ្ដុះបណ្ដាលម៉ូដែលជាកូដទាប/គ្មានកូដនៅ Azure ML Studio](#២-ការបណ្ដុះបណ្ដាលម៉ូដែលកូដទាបគ្មានកូដនៅ-azure-ml-studio)
- [២.១ បង្កើតកន្លែងធ្វើការ Azure ML](#២១-បង្កើតកន្លែងធ្វើការ-azure-ml)
- [២.២ ធនធានគណនា](#២២-ធនធានគណនា)
- [២.២.១ ជ្រើសរើសជម្រើសត្រូវសម្រាប់ធនធានគណនា​របស់អ្នក](#221-ជ្រើសរើសជម្រើសត្រឹមត្រូវសម្រាប់ធនធានកុំព្យូទ័របស់អ្នក)
- [២.២.២ បង្កើតក្លាស្ទ័រគណនា](#222-បង្កើត-compute-cluster)
- [២.៣ ដាក់បញ្ចូលសំណុំទិន្នន័យ](#23-បញ្ចូលគន្និកម្មទិន្នន័យ)
- [២.៤ ការបណ្ដុះបណ្ដាលកូដទាប/គ្មានកូដជាមួយ AutoML](#24-បង្រៀនម៉ូដែលដោយកូដតិចគ្មានកូដនឹង-automl)
- [៣. ការប្រតិបត្តិនៃម៉ូដែលកូដទាប/គ្មានកូដ និងការប្រើប្រាស់ចុងផ្លូវ](#3-ចេញផ្សាយម៉ូដែលដោយកូដតិចគ្មានកូដ-និងប្រើប្រាស់-endpoint)
- [៣.១ ការប្រតិបត្តិម៉ូដែល](#31-ចេញផ្សាយម៉ូដែល)
- [៣.២ ការប្រើប្រាស់ចុងផ្លូវ](#32-ប្រើប្រាស់-endpoint)
- [🚀 챌린지](#-challenge)
- [សំណួរប្រលងក្រោយមេរៀន](#វិញ្ញាសាបន្ទាប់មក)
- [សេចក្តីពិនិត្យ និងការសិក្សាឯករាជ្យ](#review--self-study)
- [ភារកិច្ច](#កិច្ចប្រឹងប្រែង)
## [សំណួរប្រលងមុនមេរៀន](https://ff-quizzes.netlify.app/en/ds/quiz/34)
## ១. ដំណើរណើរ
### ១.១ តើ Azure Machine Learning ជាអ្វី?
វេទិកាពពក Azure មានផលិតផលនិងសេវាកម្មពពកជាង ២០០ និយមដែលត្រូវបានរចនាឡើងដើម្បីជួយអ្នករៀបចំដំណោះស្រាយថ្មីៗ។
អ្នកវិទ្យាសាស្ត្រទិន្នន័យចំណាយពេលយ៉ាងច្រើនក្នុងការសិក្សានិងដំណើរការទិន្នន័យជាមុន និងព្យាយាមប្រើអាល់កិកម្យូរ ការបណ្ដុះបណ្ដាលម៉ូដែល តាមតំណាក់កាលដែលមានប្រសិទ្ធភាព ដើម្បីផលិតម៉ូដែលមានភាពត្រឹមត្រូវ។ ការងារទាំងនេះចំណាយពេលខ្លាំង និងជាងតម្រូវការប្រើប្រាស់ឧបករណ៍គណនាដែលមានថ្លៃជ្រាប។
[Azure ML](https://docs.microsoft.com/azure/machine-learning/overview-what-is-azure-machine-learning?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109) គឺជាវេទិកាពពកសម្រាប់ស្ថាបនា និងដំណើរការដំណោះស្រាយ machine learning នៅ Azure។ វាមានលក្ខណៈពិសេសជាច្រើនសម្រាប់ជួយអ្នកវិទ្យាសាស្ត្រទិន្នន័យរៀបចំទិន្នន័យ បណ្ដុះបណ្ដាលម៉ូដែល បោះពុម្ពសេវាកម្មទស្សន៍ទាយ និងត្រួតពិនិត្យការប្រើប្រាស់។ ចំបងជាងនេះ គឺដើម្បីបង្កើនប្រសិទ្ធភាពដោយស្វ័យប្រវត្តិកម្មចំពោះភារកិច្ចចំណាយពេលជាច្រើនពាក់ព័ន្ធនឹងការបណ្ដុះបណ្ដាលម៉ូដែល ហើយអនុញ្ញាតឱ្យប្រើបញ្ជីធនធានគណនាពពកដែលអាចបង្កើនសមត្ថភាព ដើម្បីដោះស្រាយទិន្នន័យបរិមាណធំៗ ខណៈដែលបង់ថ្លៃតែពេលដែលប្រើប្រាស់ពិត។
Azure ML ផ្តល់ឧបករណ៍ទាំងអស់ដែលអ្នកអភិវឌ្ឍន៍ និងអ្នកវិទ្យាសាស្ត្រទិន្នន័យត្រូវការ សម្រាប់ដំណើរការឈុតកូដ machine learning របស់ពួកគេ។ របស់ទាំងនេះរួមមាន៖
- **Azure Machine Learning Studio**: វាជាគេហទំព័រមួយនៅ Azure Machine Learning សម្រាប់ជម្រើសគូដទាប និងគ្មានកូដសម្រាប់បណ្ដុះបណ្ដាលម៉ូដែល ការប្រតិបត្តិ ការស្វ័យប្រវត្តិកម្ម ការតាមដាន និងការគ្រប់គ្រងទ្រព្យសម្បត្តិ។ Studio បានរួមបញ្ចូលជាមួយ Azure Machine Learning SDK ដើម្បីមានបទពិសោធន៍រលូន។
- **Jupyter Notebooks**: តូចវិភាគនិងសាកល្បងម៉ូដែល ML បានយ៉ាងរហ័ស។
- **Azure Machine Learning Designer**: អនុញ្ញាតឱ្យទាញនិងទម្លាក់មេធូដដើម្បីបង្កើតបទបង្ហាញហើយបន្ទាប់មកប្រតិបត្តិនូវផ្គុំបន្ទាត់នៅក្នុងបរិយាកាសកូដទាប។
- **UI ស្វ័យប្រវត្តិកម្មរំពឹងទុកម៉ូដែល (AutoML)**: ស្វ័យប្រវត្តិភារកិច្ចមួយចំនួនក្នុងការអភិវឌ្ឍម៉ូដែល machine learning ដើម្បីអនុញ្ញាតឱ្យបង្កើតម៉ូដែល ML មានមាត្រដ្ឋានខ្ពស់ ប្រសិទ្ធភាព និងផលិតភាព ខណៈការរក្សាគុណភាពម៉ូដែល។
- **ការដាក់ស្លាកទិន្នន័យ (Data Labelling)**: ឧបករណ៍ ML ជួយដើម្បីស្លាកទិន្នន័យដោយស្វ័យប្រវត្តិ។
- **ផ្នែកបន្ថែម machine learning សម្រាប់ Visual Studio Code**: ផ្តល់បរិយាកាសអភិវឌ្ឍន៍ពេញលេញសម្រាប់ស្ថាបនា និងគ្រប់គ្រងគម្រោង ML។
- **Command Line Interface machine learning**: ផ្តល់ពាក្យបញ្ជាដើម្បីគ្រប់គ្រងធនធាន Azure ML តាមបន្ទាត់ពាក្យបញ្ជា។
- **ការរួមបញ្ចូលជាមួយស៊ុមកម្មវិធីបើកប្រភព** ដូចជា PyTorch, TensorFlow, Scikit-learn និងបន្ថែមទៀតសម្រាប់ការបណ្ដុះបណ្ដាល ប្រតិបត្តិ និងគ្រប់គ្រងដំណើរការសរុប machine learning។
- **MLflow**: វាគឺជាបណ្ណាល័យបើកប្រភពសម្រាប់គ្រប់គ្រងជីវិតរបស់ការប្រមិទ្ធបទបង្ហាញ machine learning របស់អ្នក។ **MLFlow Tracking** ជា​ប្រ​ភាគ​មួយ​នៃ MLflow ដែលកត់ត្រា និងតាមដានមាត្រដ្ឋានការបណ្ដុះបណ្ដាលរបស់អ្នក និងអត្ថបទម៉ូដែល បើមិនគិតថាជំពូកបទបង្ហាញនៅក្នុងបរិដ្ឋានណា។
### ១.២ គម្រោងសន្និដ្ឋានបរាជ័យបេះដូង៖
គ្មានការសង្ស័យថាការបង្កើតគម្រោងជួបប្រទៈជាថ្មីគឺជាវិធីល្អបំផុតដើម្បីសាកល្បងជំនាញនិងចំណេះដឹងរបស់អ្នក។ ក្នុងមេរៀននេះ យើងនឹងសាកសួរពីពីរផ្លូវខុសគ្នានៃការបង្កើតគម្រោងវិទ្យាសាស្ត្រទិន្នន័យសម្រាប់សន្និដ្ឋានការបរាជ័យបេះដូងនៅ Azure ML Studio តាមរយៈ កូដទាប/គ្មានកូដ និងតាមរយៈ Azure ML SDK ដូចអត្ថាធិប្បាយក្នុងគំនូរសchematic ខាងក្រោម៖
![project-schema](../../../../translated_images/km/project-schema.736f6e403f321eb4.webp)
រៀងរាល់វិធីមានអត្ថប្រយោជន៍និងទិដ្ឋភាពខុសៗគ្នា។ វិធីកូដទាប/គ្មានកូដងាយស្រួលចាប់ផ្តើមព្រោះវាចូលរួមជាមួយ GUI (ចំណុចប្រទាក់អភិវឌ្ឍផ្តាច់មុខ) ដែលមិនត្រូវការជំនាញកូដមុនទេ។ វិធីនេះអាចសាកល្បងល្បឿនលឿនសម្រាប់ការផ្សព្វផ្សាយគម្រោង និងបង្កើត POC (ការបង្ហាញការយល់ដឹង)។ ប៉ុន្តែក្នុងពេលគម្រោងកើនឡើង និងត្រូវតែមានត្រៀមសម្រាប់ផលិតកម្ម វិធីនេះមិនផ្គួផ្គងសម្រាប់បង្កើតធនធានតាម GUI ទេ។ យើងត្រូវតែប្រើកម្មវិធីដើម្បីស្វ័យប្រវត្តិកម្មគ្រប់យ៉ាង ចាប់ពីការបង្កើតធនធាន ដល់ការប្រតិបត្តិម៉ូដែល។ នេះជាកន្លែងដែលការគិតដឹងពីរបៀបប្រើ Azure ML SDK មានសារៈសំខាន់។
| | កូដទាប/គ្មានកូដ | Azure ML SDK |
|-------------------|------------------|---------------------------|
| ជំនាញកូដ | មិនត្រូវការ | ត្រូវការ |
| ពេលវេលាអភិវឌ្ឍ | លឿន និងងាយស្រួល | អាស្រ័យលើជំនាញកូដ |
| ត្រៀមរួចសម្រាប់ផលិតកម្ម | ទេ | មាន |
### ១.៣ សំណុំទិន្នន័យបរាជ័យបេះដូង
ជំងឺបេះដូងនិងសរសៃឈាម (CVDs) ជាអង្គភាពមួយដែលបណ្តាលឲ្យអ្នកស្លាប់ច្រើនលេខ១លើពិភពលោក ដោយគិតជារយៈ ៣១% នៃការស្លាប់ទាំងអស់នៅលើពិភពលោក។ កត្តាជាស្រេចបរិយាកាស និងអាកប្បកិរិយា ដូចជា ការប្រើប្រាស់បារី អាហារមិនសមរម្យ និងទម្ងន់ក្រាស់ មានសក្តានុពលត្រូវបានប្រើនៅក្នុងម៉ូដែលកំណត់តម្លៃ។ ការអាចប៉ាន់ស្មានអាចនៃការអភិវឌ្ឍជំងឺ CVD នឹងមានប្រយោជន៍ដល់ការការពារ​ការវាយប្រហារនៅមនុស្សដែលមានហានិភ័យខ្ពស់។
Kaggle បានចេញផ្សាយ [សំណុំទិន្នន័យបរាជ័យបេះដូង](https://www.kaggle.com/andrewmvd/heart-failure-clinical-data) ដែលយើងនឹងប្រើសម្រាប់គម្រោងនេះ។ អ្នកអាចទាញយកសំណុំទិន្នន័យនេះឥឡូវនេះ។ វាជាសំណុំទិន្នន័យបែបតារាងដែលមាន ១៣ ដេប (១២ លក្ខណៈពិសេស និង ១ អថេរគោលដៅ) និង ២៩៩ ជួរ។
| | ឈ្មោះអថេរ | ប្រភេទ | ការពិពណ៌នា | ឧទាហរណ៍ |
|----|---------------------------|-----------------|---------------------------------------------------------|-------------------|
| ១ | អាយុ | ចំនួន | អាយុរបស់អ្នកជំងឺ | ២៥ |
| ២ | ឈឺស្ដើង | តម្លៃមាន/គ្មាន | ការថយចុះរបស់កោសិការឈាមក្រហម ឬ ហែលម៉ូហ្គ្លូប៊ីន | ០ ឬ ១ |
| ៣ | creatinine_phosphokinase | ចំនួន | សន្ទស្សន៍សន្សើមម៉ាស៊ីន CPK នៅក្នុងឈាម | ៥៤២ |
| ៤ | ទឹកនោមផ្អែម | តម្លៃមាន/គ្មាន | ប្រសិនបើអ្នកជំងឺមានទឹកនោមផ្អែម | ០ ឬ ១ |
| ៥ | ejection_fraction | ចំនួន | ភាគរយនៃឈាមចេញពីបេះដូងក្នុងលំហូរ | ៤៥ |
| ៦ | លើសសម្ពាធ | តម្លៃមាន/គ្មាន | ប្រសិនបើអ្នកជំងឺមានសម្ពាធឈាមខ្ពស់ | ០ ឬ ១ |
| ៧ | ផ្លាស្លែត | ចំនួន | ផ្លាស្លែតនៅក្នុងឈាម | ១៤៩០០០ |
| ៨ | serum_creatinine | ចំនួន | សន្ទស្សន៍សេរមក្រីអាទីនីន នៅក្នុងឈាម | ០.៥ |
| ៩ | serum_sodium | ចំនួន | សន្ទស្សន៍សេរមសូដ្យូមនៅក្នុងឈាម | jun |
| ១០ | ភេទ | តម្លៃមាន/គ្មាន | ស្រី ឬ ប្រុស | ០ ឬ ១ |
| ១១ | បារី | តម្លៃមាន/គ្មាន | ប្រសិនបើអ្នកជំងឺជ្រើសបារី | ០ ឬ ១ |
| ១២ | ពេលវេលា | ចំនួន | រយៈពេលតាមដាន (ថ្ងៃ) | ៤ |
|----|---------------------------|-----------------|---------------------------------------------------------|-------------------|
| ២១ | DEATH_EVENT [គោលដៅ] | តម្លៃមាន/គ្មាន | ប្រសិនបើអ្នកជំងឺស្លាប់ក្នុងរយៈពេលតាមដាន | ០ ឬ ១ |
ពេលដែលអ្នកមានសំណុំទិន្នន័យនេះរួចហើយ យើងអាចចាប់ផ្តើមគម្រោងនៅ Azure។
## ២. ការបណ្ដុះបណ្ដាលម៉ូដែលកូដទាប/គ្មានកូដនៅ Azure ML Studio
### ២.១ បង្កើតកន្លែងធ្វើការ Azure ML
ដើម្បីបណ្ដុះបណ្ដាលម៉ូដែលនៅ Azure ML អ្នកត្រូវបង្កើតកន្លែងធ្វើការ Azure ML ជាមុនសិន។ កន្លែងធ្វើការ គឺធនធានមួយកំពូលសម្រាប់ Azure Machine Learning ដែលផ្តល់កន្លែងកណ្តាលសម្រាប់ធ្វើការជាមួយអត្ថបទទាំងអស់ដែលអ្នកបង្កើតនៅពេលប្រើ Azure Machine Learning។ កន្លែងធ្វើកាសំខាន់ៗដូចជា រក្សាប្រវត្តិការបណ្ដុះបណ្ដាលរួមមានកំណត់ហេតុ សន្ទស្សន៍ លទ្ធផល និងការបាញ់ផ្ទុកស្ក្រីបរបស់អ្នក។ អ្នកប្រើព័ត៌មាននេះដើម្បីកំណត់ថាការបណ្ដុះបណ្ដាលណាផលិតម៉ូដែលល្អបំផុត។ [សូមរៀនបន្ថែម](https://docs.microsoft.com/azure/machine-learning/concept-workspace?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109)
មានការផ្តល់អនុសាសន៍ឲ្យប្រើកម្មវិធីរុករកបច្ចុប្បន្នដែលសមស្របជាមួយប្រព័ន្ធប្រតិបត្តិការរបស់អ្នក។ កម្មវិធីរុករកដូចខាងក្រោមត្រូវបានគាំទ្រ៖
- Microsoft Edge (Microsoft Edge ថ្មី ជំនាន់ចុងក្រោយ មិនមែន Microsoft Edge ប្រវត្តិសាស្ត្រ)
- Safari (ជំនាន់ចុងក្រោយ សម្រាប់ Mac តែប៉ុណ្ណោះ)
- Chrome (ជំនាន់ចុងក្រោយ)
- Firefox (ជំនាន់ចុងក្រោយ)
ដើម្បីប្រើ Azure Machine Learning សូមបង្កើតកន្លែងធ្វើការ​នៅក្នុងការជាវ Azure របស់អ្នក។ អ្នកអាចប្រើកន្លែងធ្វើការនេះដើម្បីគ្រប់គ្រងទិន្នន័យ ធនធានគណនា កូដ ម៉ូដែល និងអត្ថបទផ្សេងទៀតដែលទាក់ទងនឹងការងារ machine learning របស់អ្នក។
> **_វិចារណៈ:_** ការជាវ Azure របស់អ្នកនឹងត្រូវគិតថ្លៃសម្រាប់ការផ្ទុកទិន្នន័យតិចតួច ប៉ុន្តែត្រូវតែក្រោមល័ក្ខខ័ណ្ឌថាកន្លែងធ្វើការរបស់ Azure Machine Learning នៅក្នុងការជាវរបស់អ្នកនៅតែមាន។ ដូច្នេះយើងផ្តល់អនុសាសន៍ឲ្យលុបកន្លែងធ្វើការនេះពេលដែលអ្នកមិនប្រើហើយ។
១. ចូលទៅកាន់ [Azure portal](https://ms.portal.azure.com/) ដោយប្រើគណនី Microsoft ដែលភ្ជាប់ជាមួយការជាវ Azure របស់អ្នក។
២. ជ្រើស **Create a resource**
![workspace-1](../../../../translated_images/km/workspace-1.ac8694d60b073ed1.webp)
ស្វែងរកកុំព្យូទ័រ Machine Learning ហើយជ្រើសរើស Machine Learning tile
![workspace-2](../../../../translated_images/km/workspace-2.ae7c486db8796147.webp)
ចុចប៊ូតុងបង្កើត
![workspace-3](../../../../translated_images/km/workspace-3.398ca4a5858132cc.webp)
បំពេញការកំណត់ដូចខាងក្រោម៖
- Subscription: ការជាវ Azure របស់អ្នក
- Resource group: បង្កើត ឬ ជ្រើសក្រុមធនធាន
- Workspace name: បញ្ចូលឈ្មោះតែមួយសម្រាប់កន្លែងធ្វើការរបស់អ្នក
- Region: ជ្រើសតំបន់ភូមិសាស្ត្រដែលនៅជិតអ្នកបំផុត
- Storage account: ចំណាំអំពី storage account ថ្មីដែលនឹងត្រូវបង្កើតសម្រាប់កន្លែងធ្វើការរបស់អ្នក
- Key vault: ចំណាំអំពី key vault ថ្មីដែលនឹងត្រូវបង្កើតសម្រាប់កន្លែងធ្វើការរបស់អ្នក
- Application insights: ចំណាំអំពី application insights ថ្មីដែលនឹងត្រូវបង្កើតសម្រាប់កន្លែងធ្វើការរបស់អ្នក
- Container registry: គ្មាន (មួយនឹងត្រូវបង្កើតដោយស្វ័យប្រវត្តិពេលអ្នកប្រតិបត្តិម៉ូដែលដំបូងទៅ container)
![workspace-4](../../../../translated_images/km/workspace-4.bac87f6599c4df63.webp)
- ចុចបង្កើត + ពិនិត្យបន្ទាប់មកចុចបង្កើត
៣. រង់ចាំកន្លែងធ្វើការរបស់អ្នកត្រូវបានបង្កើត (អាចប្រហែលប៉ុន្មាននាទី) បន្ទាប់មកចូលទៅកាន់វានៅក្នុងផ្ទាំង portal។ អ្នកអាចរកវាតាមសេវាកម្ម Machine Learning Azure។
៤. នៅលើទំព័រ ទិដ្ឋភាពទូទៅសំរាប់កន្លែងធ្វើការ នាំចូល Azure Machine Learning studio (ឬបើកបន្ទាត់រុករកថ្មីហើយបញ្ចូលទៅ https://ml.azure.com) ហើយចូលទៅ Azure Machine Learning studio ដោយប្រើគណនី Microsoft របស់អ្នក។ ប្រសិនបើមានការស្នើឲ្យជ្រើសរើស ផ្ទាំង Azure និងការជាវ Azure របស់អ្នក។
![workspace-5](../../../../translated_images/km/workspace-5.a6eb17e0a5e64200.webp)
៥. នៅក្នុង Azure Machine Learning studio, ចុចរូបតំណាង ☰ នៅកំពូលខាងឆ្វេង ដើម្បីមើលទំព័រផ្សេងៗនៅក្នុងចំណុចប្រទាក់។ អ្នកអាចប្រើទំព័រទាំងនេះដើម្បីគ្រប់គ្រងធនធាននៅក្នុងកន្លែងធ្វើការរបស់អ្នក។
![workspace-6](../../../../translated_images/km/workspace-6.8dd81fe841797ee1.webp)
អ្នកអាចគ្រប់គ្រងកន្លែងធ្វើការរបស់អ្នកតាមរយៈ Azure portal តែសម្រាប់អ្នកវិទ្យាសាស្ត្រទិន្នន័យ និងវិស្វករបម្រែបម្រួល Machine Learning, Azure Machine Learning Studio ផ្តល់ចំណុចប្រទាក់សម្រាប់អ្នកប្រើដែលកំណត់បន្តិចបន្តួចសម្រាប់គ្រប់គ្រងធនធានកន្លែងធ្វើការ។
### ២.២ ធនធានគណនា
ធនធានគណนา គឺជាធនធាននៅលើពពកដែលអ្នកអាចប្រតិបត្តិការបណ្ដុះបណ្ដាលម៉ូដែល និងដំណើរការស្រាវជ្រាវទិន្នន័យ។ មានបួនប្រភេទធនធានគណនាដែលអ្នកអាចបង្កើតបាន៖
- **Compute Instances**: ស្ថានីយ៍អភិវឌ្ឍន៍ដែលអ្នកវិទ្យាសាស្ត្រទិន្នន័យអាចប្រើដើម្បីធ្វើការជាមួយទិន្នន័យនិងម៉ូដែល។ វា មានការបង្កើតម៉ាស៊ីនមេវីអិមមួយ (VM) ហើយចាប់ផ្តើមប្រើសៀវភៅកំណត់ត្រា។ បន្ទាប់មកអ្នកអាចបង្រៀនម៉ូដែលដោយហៅក្រុមកុំព្យូទ័រពីសៀវភៅកំណត់ត្រា។
- **Compute Clusters**: ក្រុមអ្នកវិញវំបណ្តាញម៉ាស៊ីនវីអិមដែលអាចធ្វើការក្នុងសំណងតាមតម្រូវការនៃកូដសាកល្បង។ អ្នកនឹងត្រូវការវា​ពេលបង្រៀនម៉ូដែល។ ក្រុមកុំព្យូទ័រនៃម៉ាស៊ីនវីអិមអាចប្រើធនធាន GPU ឬ CPU ជាពិសេស។
- **Inference Clusters**: គោលដៅការចេញផ្សាយសេវាកម្មប៉ុនប៉ងដែលប្រើម៉ូដែលដែលបានបង្រៀនរួច។
- **Attached Compute**: ភ្ជាប់ទៅនឹងធនធានកុំព្យូទ័រអាហ៊ឺរ Azure មានស្រាប់ដូចជា ម៉ាស៊ីនវីអិម ឬក្រុម Azure Databricks ។
#### 2.2.1 ជ្រើសរើសជម្រើសត្រឹមត្រូវសម្រាប់ធនធានកុំព្យូទ័របស់អ្នក
មានកត្តាសំខាន់ៗមួយចំនួនដែលត្រូវពិចារណានេលបង្កើតធនធានកុំព្យូទ័រ ហើយជម្រើសទាំងនោះអាចជាការសម្រេចចិត្តសំខាន់។
**តើអ្នកត្រូវការរបស់ CPU ឬ GPU ?**
CPU (Central Processing Unit) គឺជាសៀគ្វីអេឡិចត្រូនិកដែលអនុវត្តន៍ការណែនាំដែលមានក្នុងកម្មវិធីកុំព្យូទ័រ។ GPU (Graphics Processing Unit) គឺជាសៀគ្វីអេឡិចត្រូនិចជាក់លាក់មួយដែលអាចអនុវត្តកម្មវិធីដែលទាក់ទងនឹងក្រាហ្វិកបានយ៉ាងលឿនណាស់។
ភាពខុសគ្នាចម្បងរវាងស្ថាបត្យកម្ម CPU និង GPU គឺ CPU ត្រូវបានរចនាឡើងសម្រាប់ដោះស្រាយភារកិច្ចជាច្រើនយ៉ាងរហ័ស (វាស់ដោយល្បឿនម៉ោង CPU) ប៉ុន្តែមានកម្រិតកំណត់នៅក្នុងការរត់ភារកិច្ចច្រើននាក់ក្នុងពេលតែមួយ។ GPU ត្រូវបានរចនាសម្រាប់កុំព្យូទ័រជាគូរដោយសារច្រើន ហើយហេតុនេះវាអាចដំណើរការងារស្វ័យប្រវត្តិក្នុងការរៀនជ្រៅបានកាន់តែល្អ។
| CPU | GPU |
|-----------------------------------------|-----------------------------|
| ផ្សេងតិចក្នុងតម្លៃ | ថ្លៃខ្ពស់ជាង |
| កម្រិត concurrency តិច | កម្រិត concurrency ខ្ពស់ |
| យឺតជាងនៅក្នុងការបង្រៀនម៉ូដែលរៀនជ្រៅ | យុទ្ធសាស្រ្តសម្រាប់រៀនជ្រៅ |
**ទំហំក្រុម**
ក្រុមធំធេងមានតម្លៃថ្លៃជាង ប៉ុន្តែមានប្រសិទ្ធភាពបំលែងល្អជាង។ ហេតុដូច្នេះ ប្រសិនបើអ្នកមានពេលវេលាប៉ុន្តែមិនមានលុយគ្រប់គ្រាន់ អ្នកគួរចាប់ផ្តើមជាមួយក្រុមតូច។ ផ្ទុយឡើយ ប្រសិនបើអ្នកមានលុយប៉ុន្តែមិនមានពេលវេលាច្រើន អ្នកគួរចាប់ផ្តើមជាមួយក្រុមធំជាង។
**ទំហំ VM**
យោងទៅលើចំណុចព្រំដែនពេលវេលានិងថវិការបស់អ្នក អ្នកអាចបំលែងទំហំ RAM, ឌីស, ចំនួនក័រនិងល្បឿនម៉ោង។ ការពង្រីកប៉ារ៉ាមែត្រ​ទាំងនោះនឹងមានថ្លៃដូចគ្នា ប៉ុន្តែនឹងបង្កើតប្រសិទ្ធភាពកាន់តែប្រសើរ។
**ស្ថានីយ៍ផ្តោតបំរើ ឬ ស្ថានីយ៍អាទិភាពទាប ?**
ស្ថានីយ៍អាទិភាពទាបមានន័យថាវាអាចត្រូវផ្អាកបាន៖ មូលដ្ឋាន Microsoft Azure អាចយកធនធានទាំងនោះនិងផ្តល់ជូនភារកិច្ចផ្សេងទៀត ដូច្នេះធ្វើឲ្យការងារត្រូវបានផ្អាក។ ស្ថានីយ៍ផ្តោតបំរើ ឬមិនអាចផ្អាកបាន មានន័យថាការងារនឹងមិនត្រូវបញ្ចប់ដោយគ្មានការអនុញ្ញាតពីអ្នក។ នេះជាការពិចារណាផ្សេងទៀតរវាងពេលវេលានិងលុយ ព្រោះស្ថានីយ៍អាទិភាពទាបមានតម្លៃថ្លៃតិចជាងស្ថានីយ៍ផ្តោតបំរើ។
#### 2.2.2 បង្កើត Compute Cluster
នៅក្នុង [Azure ML workspace](https://ml.azure.com/) ដែលយើងបានបង្កើតពីមុន ចូលទៅកាន់ compute ហើយអ្នកនឹងឃើញធនធាន Compute ផ្សេងៗដែលយើងបានពិភាក្សាក្រោមនេះ (ដោយមាន compute instances, compute clusters, inference clusters និង attached compute)។ សម្រាប់គម្រោងនេះ យើងនឹងត្រូវការ compute cluster សម្រាប់បង្រៀនម៉ូដែល ក្នុង Studio ចុចលើមេនុយ "Compute" បន្ទាប់មកស្លាបព្រិល "Compute cluster" ហើយចុចលើប៊ូតុង "+ New" ដើម្បីបង្កើត compute cluster។
![22](../../../../translated_images/km/cluster-1.b78cb630bb543729.webp)
1. ជ្រើសរើសជម្រើសរបស់អ្នក៖ ផ្តោតបំរើ ទល់និងអាទិភាពទាប, CPU ឬ GPU, ទំហំ VM និងចំនួនក័រ (អ្នកអាចរក្សាប៉ារ៉ាមែត្រ លំនាំដើមសម្រាប់គម្រោងនេះ)។
2. ចុចប៊ូតុង Next។
![23](../../../../translated_images/km/cluster-2.ea30cdbc9f926bb9.webp)
3. ផ្ដល់ឈ្មោះ compute cluster
4. ជ្រើសរើសជម្រើសរបស់អ្នក៖ ចំនួនកណ្តាល/អតិបរមា នៃចំណុច, ជំហានអសកម្មមុនការកាត់បន្ថយទំហំ, ចូល​ប្រើ SSH។ សម្គាល់ថាបើចំនួនចំណុចអប្បបរមា គឺ 0 អ្នកនឹងសន្សំលុយពេល cluster មិនប្រើប្រាស់។ សម្គាល់ថាចំនួនកំណត់អតិបរមា ជាច្រើន អាចធ្វើឲ្យការបង្រៀនកាន់តែខ្លី។ ចំនួនកំណត់អតិបរមាដែលផ្តល់អនុស្សរណៈគឺ 3។
5. ចុចប៊ូតុង "Create"។ ជំហាននេះអាចយកពេលពីរបីនាទី។
![29](../../../../translated_images/km/cluster-3.8a334bc070ec173a.webp)
អស្ចារ្យ! ឥឡូវនេះយើងមាន Compute cluster ត្រូវបានបង្កើតហើយ យើងត្រូវបញ្ចូលទិន្នន័យទៅ Azure ML Studio។
### 2.3 បញ្ចូលគន្និកម្មទិន្នន័យ
1. នៅក្នុង [Azure ML workspace](https://ml.azure.com/) ដែលយើងបានបង្កើតពីមុន ចុចលើ "Datasets" នៅមេនុយខាងឆ្វេង ហើយចុចប៊ូតុង "+ Create dataset" ដើម្បីបង្កើតគណនីទិន្នន័យ។ ជ្រើសរើសជម្រើស "From local files" ហើយជ្រើសយក dataset Kaggle ដែលយើងបានទាញយកមុននេះ។
![24](../../../../translated_images/km/dataset-1.e86ab4e10907a6e9.webp)
2. ផ្ដល់ឈ្មោះ, ប្រភេទ និងការពិពណ៌នាដាក់ក្នុង dataset របស់អ្នក។ ចុចប៊ូតុង Next។ ផ្ទុកឡើងទិន្នន័យពីឯកសារ។ ចុចប៊ូតុង Next ។
![25](../../../../translated_images/km/dataset-2.f58de1c435d5bf9c.webp)
3. នៅក្នុង Schema ផ្លាស់ប្តូរប្រភេទទិន្នន័យទៅ Boolean សម្រាប់លក្ខណៈដូចជា anaemia, diabetes, high blood pressure, sex, smoking, និង DEATH_EVENT។ ចុចប៊ូតុង Next ហើយចុចប៊ូតុង Create ។
![26](../../../../translated_images/km/dataset-3.58db8c0eb783e892.webp)
ល្អណាស់! ឥឡូវ dataset បានមានរួចហើយ និង compute cluster បានបង្កើតរួចហើយ យើងអាចចាប់ផ្តើមបង្រៀនម៉ូដែលបាន!
### 2.4 បង្រៀនម៉ូដែលដោយកូដតិច/គ្មានកូដនឹង AutoML
ការអភិវឌ្ឍម៉ូដែលម៉ាស៊ីនរៀនបែបបុរាណ តម្រូវធនធានច្រើន, ត្រូវការជំនាញពិសេស និងពេលវេលាច្រើន ដើម្បីផលិតនិងប្រៀបធៀបម៉ូដែលជាច្រើន។
Automated machine learning (AutoML) គឺជាដំណើរការស្វ័យប្រវត្តិបំពេញភារកិច្ចដែលចំណាយពេលច្រើន និងមិនចប់ចុងនៃការអភិវឌ្ឍម៉ូដែលម៉ាស៊ីនរៀន។ វាអនុញ្ញាតឲ្យអ្នកវិទ្យាសាស្ត្រទិន្នន័យ អ្នកវិភាគ និងអ្នកអភិវឌ្ឍប្លង់កសាងម៉ូដែល ML ដោយមានទំហំ, ប្រសិទ្ធភាព និងផលិតភាពខ្ពស់ ខណះពេលរក្សាគុណភាពម៉ូដែល។ វាធ្វើឲ្យពេលវេលាដល់ការប្រើប្រាស់ម៉ូដែលក្នុងអាជីវកម្មតិចជាងនិងមានប្រសិទ្ធភាព។ [សូមស្វែងយល់បន្ថែម](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109)
1. នៅក្នុង [Azure ML workspace](https://ml.azure.com/) ដែលយើងបានបង្កើតពីមុន ចុចលើយ "Automated ML" នៅមេនុយខាងឆ្វេង ហើយជ្រើស dataset ដែលអ្នកទើបបញ្ចូល។ ចុចប៊ូតុង Next ។
![27](../../../../translated_images/km/aml-1.67281a85d3a1e2f3.webp)
2. បញ្ចូលឈ្មោះការសាកល្បងថ្មី, ជួរដាច់គោល(DEATH_EVENT) និង compute cluster ដែលបានបង្កើត។ ចុច Next ។
![28](../../../../translated_images/km/aml-2.c9fb9cffb39ccbbe.webp)
3. ជ្រើសរើស "Classification" ហើយចុច Finish។ ជំហាននេះអាចយកពេលពី 30 នាទី ទៅ 1 ម៉ោង អាស្រ័យលើទំហំ compute cluster របស់អ្នក។
![30](../../../../translated_images/km/aml-3.a7952e4295f38cc6.webp)
4. បន្ទាប់ពីការរត់បានបញ្ចប់ ចុចស្លាប "Automated ML" ចុចលើការរត់របស់អ្នក ហើយចុចលើ Algorithm ក្នុងកាត "Best model summary"។
![31](../../../../translated_images/km/aml-4.7a627e09cb6f16d0.webp)
នៅទីនេះ អ្នកអាចមើលការពិពណ៌នាប្រកបដោយភាសារព័ត៌មានលម្អិតស្តីពីម៉ូដែលល្អបំផុតដែល AutoML បង្កើត។ អ្នកអាចស្វែងយល់ម៉ូដែលផ្សេងទៀតក្នុងស្លាប Models។ ចំណាយពេលបន្តិចដើម្បីដឹងពីម៉ូដែលក្នុងប៊ូតុង Explanations (preview)។ បន្ទាប់ពីអ្នកបានជ្រើសម៉ូដែលដែលចង់ប្រើ (នៅទីនេះយើងនឹងជ្រើសម៉ូដែលល្អបំផុតដែល AutoML ជ្រើសរើស) យើងនឹងមើលថាតើធ្វើដូចម្តេចដើម្បីចេញផ្សាយវា។
## 3. ចេញផ្សាយម៉ូដែលដោយកូដតិច/គ្មានកូដ និងប្រើប្រាស់ endpoint
### 3.1 ចេញផ្សាយម៉ូដែល
ចំណុចចេញផ្សាយម៉ូដែលក្នុង Automated machine learning អនុញ្ញាតឲ្យអ្នកចេញផ្សាយម៉ូដែលល្អបំផុតជាសេវាកម្មវែបបានក្នុងប៉ុន្មានជំហាន។ ចេញផ្សាយមានន័យថាអតិថិជនអាចប្រើម៉ូដែលដើម្បីទស្សន៍ទាយពីទិន្នន័យថ្មី និងស្វែងរកឱកាស។ សម្រាប់គម្រោងនេះ ចេញផ្សាយទៅសេវាកម្មវែប មានន័យថាកម្មវិធីវេជ្ជសាស្ត្រ អាចប្រើម៉ូដែល ដើម្បីទស្សន៍ទាយការជួបទង្វើបេះដូងជាបច្ចុប្បន្ន។
នៅក្នុងការពិពណ៌នាម៉ូដែលល្អបំផុត ចុចប៊ូតុង "Deploy"។
![deploy-1](../../../../translated_images/km/deploy-1.ddad725acadc84e3.webp)
15. ផ្ដល់ឈ្មោះ, ការពិពណ៌នា, ប្រភេទកុំព្យូទ័រ (Azure Container Instance), បើកអត្តសញ្ញាណ និងចុច Deploy។ ជំហាននេះអាចយកពេល 20 នាទីក្នុងការបញ្ចប់។ ដំណើរការចេញផ្សាយរួមមានការចុះបញ្ជីម៉ូដែល, បង្កើតធនធាន និងកំណត់ការងារសម្រាប់សេវាវេប។ សារស្ថានភាពបង្ហាញនៅក្រោមស្ថានភាព Deploy។ ជ្រើស Refresh periodically ដើម្បីពិនិត្យស្ថានភាព។ វាត្រូវបានចេញផ្សាយ និងដំណើរការបានពេលដែលស្ថានភាពគឺ "Healthy"។
![deploy-2](../../../../translated_images/km/deploy-2.94dbb13f23908647.webp)
16. បន្ទាប់ពេលចេញផ្សាយរួច ចុចស្លាប Endpoint ហើយចុចលើ endpoint ដែលអ្នកទើបចេញផ្សាយ។ អ្នកអាចរកឃើញព័ត៌មានលម្អិតទាំងអស់ដែលអ្នកត្រូវបានដឹងអំពី endpoint នេះ។
![deploy-3](../../../../translated_images/km/deploy-3.fecefef070e8ef3b.webp)
អស្ចារ្យ! ឥឡូវនេះដែលយើងមានម៉ូដែលបានចេញផ្សាយហើយ យើងអាចចាប់ផ្តើមប្រើប្រាស់ endpoint បាន។
### 3.2 ប្រើប្រាស់ Endpoint
ចុចលើស្លាប "Consume"។ នៅទីនេះ អ្នកអាចរក endpoint REST និង script python ជាជម្រើសការប្រើប្រាស់។ ចំណាយពេលអានកូដ python។
script នេះអាចដំណើរការផ្ទាល់ពីម៉ាស៊ីនកុំព្យូទ័រផ្ទាល់ខ្លួនរបស់អ្នក ហើយនឹងប្រើប្រាស់ endpoint របស់អ្នក។
![35](../../../../translated_images/km/consumption-1.700abd196452842a.webp)
ចំណាយពេលពិនិត្យពីរកូដ៖
```python
url = 'http://98e3715f-xxxx-xxxx-xxxx-9ec22d57b796.centralus.azurecontainer.io/score'
api_key = '' # ជំនួសនេះជាមួយកូនសោ API សម្រាប់សេវាកម្មគេហទំព័រ
```
អថេរ `url` គឺ endpoint REST ដែលរកបាននៅស្លាបអតិថិជន និងអថេរ `api_key` គឺគន្លឹះដំបូងដែលបានរកនៅស្លាបអតិថិជន (តែក្នុងករណីអ្នកបានបើកការផ្ទៀងផ្ទាត់អត្តសញ្ញាណ)។ វាជាវិធីដែល script អាចប្រើប្រាស់ endpoint ។
18. បើ script ដំណើរការ អ្នកគួរមើលឃើញលទ្ធផលដូចខាងក្រោម៖
```python
b'"{\\"result\\": [true]}"'
```
ន័យថា ការទស្សន៍ទាយអំពីចម្ងាយបេះដូងប្រតិកម្មសម្រាប់ទិន្នន័យត្រូវបានអះអាង។ នេះយ៉ាងហោចណាស់ដោយសារតែប្រសិនបើអ្នកមើលជិតជិតទិន្នន័យដែលបានបង្កើតដោយស្វ័យប្រវត្តិនៅក្នុង script គឺស្វ័យប្រវត្តិដាក់រួចជា 0 និង false រួចហើយ។ អ្នកអាចផ្លាស់ប្តូរទិន្នន័យជាមួយគំរូបញ្ចូលដូចខាងក្រោម៖
```python
data = {
"data":
[
{
'age': "0",
'anaemia': "false",
'creatinine_phosphokinase': "0",
'diabetes': "false",
'ejection_fraction': "0",
'high_blood_pressure': "false",
'platelets': "0",
'serum_creatinine': "0",
'serum_sodium': "0",
'sex': "false",
'smoking': "false",
'time': "0",
},
{
'age': "60",
'anaemia': "false",
'creatinine_phosphokinase': "500",
'diabetes': "false",
'ejection_fraction': "38",
'high_blood_pressure': "false",
'platelets': "260000",
'serum_creatinine': "1.40",
'serum_sodium': "137",
'sex': "false",
'smoking': "false",
'time': "130",
},
],
}
```
script គួរត្រឡប់មក៖
```python
b'"{\\"result\\": [true, false]}"'
```
សូមអបអរសាទរ! អ្នកបានប្រើម៉ូដែលដែលបានចេញផ្សាយ ហើយបានបង្រៀនវាលើ Azure ML!
> **_ចំណាំ:_** បន្ទាប់ពីបញ្ចប់គម្រោង កុំភ្លេចលុបធនធានទាំងអស់។
## 🚀 thách thức
មើលលម្អិតអំពីការពន្យល់ម៉ូដែលនិងព័ត៌មានលម្អិតដែល AutoML បង្កើតសម្រាប់ម៉ូដែលល្អបំផុត។ ព្យាយាមយល់ថាហេតុអ្វីបានជា ម៉ូដែលល្អបំផុតល្អជាងម៉ូដែលផ្សេង? អ្វីជាអាល់ហ្គារីធម៍ដែលបានប្រៀបធៀប? តើភាពខុសគ្នារវាងពួកវាជាអ្វីខ្លះ? ហេតុអ្វីបានជាម៉ូដែលល្អបំផុតមានការសម្តែងកាន់តែប្រសើរជាងក្នុងករណីនេះ?
## [វិញ្ញាសាបន្ទាប់មក](https://ff-quizzes.netlify.app/en/ds/quiz/35)
## ពិនិត្យនិងសិក្សាផ្ទាល់ខ្លួន
ក្នុងមេរៀននេះ អ្នកបានរៀនរបៀបបង្រៀន, ចេញផ្សាយ និងប្រើម៉ូដែលសម្រាប់ទស្សន៍ទាយការប្រើប្រាស់បេះដូងក្នុងរបៀបកូដតិច/គ្មានកូដក្នុងពពក។ បើអ្នកមិនទាន់ធ្វើ ទៅស្វែងយល់បន្ថែមលើការពន្យល់ម៉ូដែលដែល AutoML បង្កើតសម្រាប់ម៉ូដែលល្អបំផុត ហើយព្យាយាមយល់ថាហេតុអ្វីបានជាម៉ូដែលល្អបំផុតល្អជាងផ្សេងៗ។
អ្នកអាចទៅជ្រាបជាលម្អិតជាងនេះក្នុង Low code/No code AutoML ដោយអាន [ឯកសារ](https://docs.microsoft.com/azure/machine-learning/tutorial-first-experiment-automated-ml?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109)។
## កិច្ចប្រឹងប្រែង
[គម្រោងវិទ្យាសាស្ត្រ ទិន្នន័យ Low code/No code នៅលើ Azure ML](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការបដិសេធ**៖
ឯកសារនេះបានបកប្រែក្នុងការប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ក្នុងខណៈពេលដែលយើងខិតខំរកត្រឹមត្រូវភាព សូមចំណាំថាការបកប្រែដោយស្វ័យប្រវត្តិនេះអាចមានកំហុស ឬភាពមិនត្រឹមត្រូវ។ ឯកសារដើមនៅក្នុងភាសាគំរូរបស់វាគួរត្រូវបានចាត់ទុកជាប្រភពផ្លូវការទាំងស្រុង។ សម្រាប់ព័ត៌មានសំខាន់ៗ ការបកប្រែដោយមនុស្សជំនាញត្រូវបានផ្ដល់អាទិភាព។ យើងមិនទទួលខុសត្រូវចំពោះភាពយល់ច្រឡំឬការបកប្រែមិនត្រឹមត្រូវណាមួយដែលកើតមានពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,18 @@
# គម្រោងវិទ្យាសាស្ត្រទិន្នន័យ អតិផរណា​កូដ / គ្មានកូដលើ Azure ML
## ការណែនាំ
យើងបានឃើញពីរបៀបប្រើប្រាស់វេទិកា Azure ML ដើម្បីបណ្តុះបណ្តាល ផ្សាយចេញ និងប្រើម៉ូដែលនៅក្នុងរបៀបអតិផរណាកូដ / គ្មានកូដ។ ឥឡូវនេះសូមស្វែងរកទិន្នន័យខ្លះដែលអ្នកអាចប្រើប្រាស់បណ្តុះបណ្តាលម៉ូដែលផ្សេងទៀត ផ្សាយចេញ និងប្រើវា។ អ្នកអាចស្វែងរកកំណត់ត្រាទិន្នន័យនៅលើ [Kaggle](https://kaggle.com) និង [Azure Open Datasets](https://azure.microsoft.com/services/open-datasets/catalog?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109)។
## ស្លាបព្រាបញ្ជាក់
| ល្អឧត្តម | ត្រឹមត្រូវ | ត្រូវការកែលម្អ |
|-----------|----------|-------------------|
| ពេលផ្ទុកឡើងទិន្នន័យ អ្នកបានយកចិត្តទុកដាក់បម្លែងប្រភេទលក្ខណៈបរិយាយ ប្រសិនបើចាំបាច់។ អ្នកក៏បានសម្អាតទិន្នន័យ ប្រសិនបើចាំបាច់។ អ្នកបានបើកការបណ្តុះបណ្តាលលើកំណត់ត្រាទិន្នន័យតាមរយៈ AutoML ហើយបានពិនិត្យការពន្យល់ម៉ូដែល។ អ្នកបានផ្សាយចេញម៉ូដែលល្អបំផុត ហើយអ្នកអាចប្រើវាបាន។ | ពេលផ្ទុកឡើងទិន្នន័យ អ្នកបានយកចិត្តទុកដាក់បម្លែងប្រភេទលក្ខណៈបរិយាយ ប្រសិនបើចាំបាច់។ អ្នកបានបើកការបណ្តុះបណ្តាលលើកំណត់ត្រាទិន្នន័យតាមរយៈ AutoML អ្នកបានផ្សាយចេញម៉ូដែលល្អបំផុត ហើយអ្នកអាចប្រើវាបាន។ | អ្នកបានផ្សាយចេញម៉ូដែលល្អបំផុតដែលបានបណ្តុះបណ្តាលដោយ AutoML ហើយអ្នកអាចប្រើវាបាន។ |
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ពាក្យបដិសេធ**៖
ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ បើទោះបីយើងខិតខំប្រឹងប្រែងរាល់ការត្រឹមត្រូវ ក៏ដោយ សូមជ្រាបថាការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុស ឬភាពមិនត្រឹមត្រូវបាន។ ឯកសារដើមជាភាសាដើមគួរត្រូវបានយកជាយោងដ៏មានសុពលភាព។ សម្រាប់ព័ត៌មានសំខាន់ ការបកប្រែមនុស្សវិជ្ជាជីវៈត្រូវបានផ្តល់អនុសាសន៍។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកស្រាយខុសដែលកើតមានពីការប្រើប្រាស់ការបកប្រែនេះទេ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,305 @@
# ទិន្នន័យវិទ្យានៅលើពពក៖ វិធី "Azure ML SDK"
|![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/19-DataScience-Cloud.png)|
|:---:|
| ទិន្នន័យវិទ្យានៅលើពពក៖ Azure ML SDK - _Sketchnote ដោយ [@nitya](https://twitter.com/nitya)_ |
វត្ថុតារាងមាតិកាៈ
- [ទិន្នន័យវិទ្យានៅលើពពក៖ វិធី "Azure ML SDK"]( #data-science-in-the-cloud-the-azure-ml-sdk-way)
- [សំណួរកម្រិតមុនការបង្រៀន](#សំណួរកម្រិតមុនការបង្រៀន)
- [1. ការណែនាំ](#1-ការណែនាំ)
- [1.1 Azure ML SDK គឺជាអ្វី?](#11-azure-ml-sdk-គឺជាអ្វី)
- [1.2 ព្រឹត្តិការណ៍ប៉ាន់ស្កាល់ជំងឺបរាជ័យបេះដូង និងការណែនាំអំពីទិន្នន័យ](#12-ព្រឹត្តិការណ៍ប៉ាន់ស្កាល់ជំងឺបរាជ័យបេះដូង-និងការណែនាំអំពីទិន្នន័យ)
- [2. ការបណ្តោះអាសន្នម៉ូដែលជាមួយ Azure ML SDK](#2-ការបណ្តោះអាសន្នម៉ូដែលជាមួយ-azure-ml-sdk)
- [2.1 បង្កើតកន្លែងធ្វើការ Azure ML](#21-បង្កើតកន្លែងធ្វើការ-azure-ml)
- [2.2 បង្កើតឧបករណ៍គណនា](#22-បង្កើតឧបករណ៍គណនា)
- [2.3 ការផ្ទុកទិន្នន័យ](#23-ការផ្ទុកទិន្នន័យ)
- [2.4 ការបង្កើតសៀវភៅកំណត់ត្រា](#24-ការបង្កើតសៀវភៅកំណត់ត្រា)
- [2.5 ការបណ្តោះអាសន្នម៉ូដែល](#25-ការបណ្តោះអាសន្នម៉ូដែល)
- [2.5.1 ការតំឡើង Workspace, experiment, compute cluster និងទិន្នន័យ](#251-ការតំឡើង-workspace-experiment-compute-cluster-និងទិន្នន័យ)
- [2.5.2 កំណត់រចនាសម្ព័ន្ធ AutoML និងការបណ្តោះអាសន្ន](#31-រក្សាទុកម៉ូដែលល្អបំផុត)
- [3. ការដាក់បញ្ចូលម៉ូដែល និងការប្រើប្រាស់ endpoint ជាមួយ Azure ML SDK](#33-ការប្រើប្រាស់-endpoint)
- [3.1 រក្សាទុកម៉ូដែលល្អបំផុត](#챌린지)
- [3.2 ការដាក់បញ្ចូលម៉ូដែល](#វினិច្ឆ័យបន្ទាប់មកមេរៀន)
- [3.3 ការប្រើប្រាស់ endpoint](#ត្រួតពិនិត្យ-និងរៀនផ្ទាល់ខ្លួន)
- [🚀 ការប្រកួតប្រជែង](#-challenge)
- [សំណួរកម្រិតបន្ទាប់ពីការបង្រៀន](#post-lecture-quiz)
- [ការត្រួតពិនិត្យ និងការសិក្សាដោយខ្លួនឯង](#review--self-study)
- [ការចាត់ចែងការងារ](#assignment)
## [សំណួរកម្រិតមុនការបង្រៀន](https://ff-quizzes.netlify.app/en/ds/quiz/36)
## 1. ការណែនាំ
### 1.1 Azure ML SDK គឺជាអ្វី?
អ្នកវិទ្យាសាស្ត្រទិន្នន័យ និងអ្នកអភិវឌ្ឍន៍ AI ប្រើ Azure Machine Learning SDK ដើម្បីបង្កើតនិងអនុវត្តវដ្ដការបណ្តោះអាសន្នម៉ាស៊ីនដែលមានក្នុងសេវា Azure Machine Learning។ អ្នកអាចធ្វើការទំនាក់ទំនងជាមួយសេវានេះនៅក្នុងបរិស្ថាន Python មួយណាៗ រួមមាន Jupyter Notebooks, Visual Studio Code ឬ Python IDE ពេញចិត្តរបស់អ្នក។
តំបន់សំខាន់ៗនៃ SDK រួមមាន៖
- ស្វែងរក រៀបចំ និងគ្រប់គ្រងជីវិតទាំងមូលនៃទិន្នន័យដែលអ្នកប្រើប្រាស់ក្នុងការបណ្តោះអាសន្នម៉ូដែល។
- គ្រប់គ្រងធនធានពពកសម្រាប់ត្រួតពិនិត្យ កំណត់ត្រា និងរៀបចំបទពិសោធន៍បណ្តោះអាសន្នម៉ូដែលរបស់អ្នក។
- បណ្តោះអាសន្នម៉ូដែលដោយផ្ទាល់ នៅក្នុងកុំព្យូទ័រផ្ទាល់ខ្លួនឬប្រើធនធានពពក រួមមានការបណ្តោះអាសន្នម៉ូដែលដែលល្បឿនលឿនជាមួយ GPU។
- ប្រើវដ្ដការបណ្តោះអាសន្នម៉ាស៊ីនដោយស្វ័យប្រវត្តិ ដែលទទួលបានប៉ារ៉ាម៉ែត្រកំណត់រចនាសម្ព័ន្ធ និងទិន្នន័យបណ្តោះអាសន្ន។ វាធ្វើការត្រឡប់មេធ្យោបាយ និងកំណត់តម្លៃ hyperparameters ដើម្បីស្វែងរកម៉ូដែលល្អបំផុតសម្រាប់ការប្រាស្រ័យទាក់ទងនូវការព្យាករណ៍។
- ដាក់បញ្ចូលសេវេប្វេបសម្រាប់បម្លែងម៉ូដែលដែលបានបណ្តោះអាសន្នទៅជាសេវា RESTful ដែលអាចប្រើប្រាស់បាននៅក្នុងកម្មវិធីណាមួយ។
[សូមស្វែងយល់បន្ថែមអំពី Azure Machine Learning SDK](https://docs.microsoft.com/python/api/overview/azure/ml?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109)
នៅក្នុង [មេរៀនមុន](../18-Low-Code/README.md) យើងបានឃើញរបៀបបណ្តោះអាសន្ន ដាក់បញ្ចូល និងប្រើម៉ូដែលក្នុងរបៀប Low code/No code។ យើងបានប្រើទិន្នន័យ Heart Failure ដើម្បីបង្កើត និងម៉ូដែលព្យាករណ៍បរាជ័យបេះដូង។ នៅក្នុងមេរៀននេះ យើងនឹងធ្វើដូចគ្នាទាំងស្រុង ប៉ុន្តប្រើ Azure Machine Learning SDK ។
![project-schema](../../../../translated_images/km/project-schema.420e56d495624541.webp)
### 1.2 ព្រឹត្តិការណ៍ប៉ាន់ស្កាល់ជំងឺបរាជ័យបេះដូង និងការណែនាំអំពីទិន្នន័យ
ពិនិត្យមើល [ទីនេះ](../18-Low-Code/README.md) សម្រាប់ព្រឹត្តិការណ៍ប៉ាន់ស្កាល់ជំងឺបរាជ័យបេះដូង និងការណែនាំពីទិន្នន័យជាមុន។
## 2. ការបណ្តោះអាសន្នម៉ូដែលជាមួយ Azure ML SDK
### 2.1 បង្កើតកន្លែងធ្វើការ Azure ML
ដើម្បីផ្ដល់ភាពសាមញ្ញ យើងនឹងធ្វើការនៅលើ jupyter notebook។ វាមានន័យថាអ្នកមាន Workspace និង compute instance រួចហើយ។ ប្រសិនបើអ្នកមាន Workspace រួច អ្នកអាចរំកិលទៅផ្នែក 2.3 ការបង្កើតសៀវភៅកំណត់ត្រាក្នុងភ្លាម។
បើមិនមាន សូមអនុវត្តតាមការណែនាំនៅផ្នែក **2.1 បង្កើតកន្លែងធ្វើការ Azure ML** នៅក្នុង [មេរៀនមុន](../18-Low-Code/README.md) ដើម្បីបង្កើត workspace។
### 2.2 បង្កើតឧបករណ៍គណនា
នៅក្នុង [កន្លែងធ្វើការ Azure ML](https://ml.azure.com/) ដែលយើងបានបង្កើតមុននេះ ចូលទៅម៉ឺនុយ compute ហើយអ្នកនឹងឃើញធនធានគណនាផ្សេងៗដែលមានស្រាប់
![compute-instance-1](../../../../translated_images/km/compute-instance-1.dba347cb199ca499.webp)
ចង់បង្កើតឧបករណ៍គណនាដើម្បីផ្ដល់សេវាទៅរៀបចំមួយសៀវភៅកំណត់ត្រា jupyter ។
1. ចុចប៊ូតុង + New។
2. បំពេញឈ្មោះឧបករណ៍គណនារបស់អ្នក។
3. ជ្រើសអង្គភាពភាគច្រើន៖ CPU ឬ GPU, ទំហំ VM និង ចំនួន core។
4. ចុចប៊ូតុង Create ។
អបអរសាទរ! អ្នកទើបបង្កើតឧបករណ៍គណនា។ យើងនឹងប្រើឧបករណ៍គណនានេះដើម្បីបង្កើតសៀវភៅកំណត់ត្រាក្នុងផ្នែក [ការបង្កើតសៀវភៅកំណត់ត្រា](#23-ការផ្ទុកទិន្នន័យ)។
### 2.3 ការផ្ទុកទិន្នន័យ
សូមយោងទៅ [មេរៀនមុន](../18-Low-Code/README.md) ក្នុងផ្នែក **2.3 ការផ្ទុកទិន្នន័យ** ប្រសិនបើអ្នកមិនទាន់ផ្ទុកទិន្នន័យឡើយ។
### 2.4 ការបង្កើតសៀវភៅកំណត់ត្រា
> **_កំណត់សម្គាល់:_** សម្រាប់ជំហានបន្ទាប់ អ្នកអាចបង្កើតសៀវភៅកំណត់ត្រាថ្មីពីដើម ឬអាចផ្ទុកឡើង [សៀវភៅកំណត់ត្រាដែលយើងបានបង្កើត](notebook.ipynb) ជាមួយ Azure ML Studio របស់អ្នក។ ដើម្បីផ្ទុកឡើង គ្រាន់តែចុចម៉ឺនុយ "Notebook" ហើយផ្ទុកសៀវភៅកំណត់ត្រាចូល។
សៀវភៅកំណត់ត្រាមានសារៈសំខាន់ខ្លាំងចំពោះដំណើរការទិន្នន័យវិទ្យា។ វាអាចប្រើសម្រាប់អនុវត្តការវិភាគទិន្នន័យស្វែងរក (EDA), ហៅគណនាកម្មសម្រាប់បណ្តោះអាសន្នម៉ូដែល, ហៅគណនាកម្មសម្រាប់ប្រើប្រាស់ endpoint ។
ដើម្បីបង្កើតសៀវភៅកំណត់ត្រា យើងត្រូវការ compute node ដែលបម្រើឧបករណ៍ jupyter notebook។ ត្រឡប់ទៅ [កន្លែងធ្វើការ Azure ML](https://ml.azure.com/) ហើយចុចលើ Compute instances។ ក្នុងបញ្ជី compute instances អ្នកគួរតែឃើញ [ឧបករណ៍គណនាដែលបានបង្កើតពីមុន](#22-បង្កើតឧបករណ៍គណនា)។
1. នៅក្នុងផ្នែក Applications ចុចលើជម្រើស Jupyter។
2. ត្រួតពិនិត្យប្រអប់ "Yes, I understand" ហើយចុចប៊ូតុង Continue។
![notebook-1](../../../../translated_images/km/notebook-1.12998af7b02c83f5.webp)
3. វានឹងបើកផ្ទាំងរុករកថ្មីជាមួយឧបករណ៍ jupyter notebook របស់អ្នក។ ចុចប៊ូតុង "New" ដើម្បីបង្កើតសៀវភៅកំណត់ត្រាថ្មី។
![notebook-2](../../../../translated_images/km/notebook-2.9a657c037e34f1cf.webp)
ពេលនេះដែលយើងមានសៀវភៅកំណត់ត្រា អាចចាប់ផ្ដើមបណ្តោះអាសន្នម៉ូដែលជាមួយ Azure ML SDK បាន។
### 2.5 ការបណ្តោះអាសន្នម៉ូដែល
ដើមគេ ប្រសិនបើអ្នកមានការសង្ស័យ។ សូមយោងទៅ [ឯកសារ Azure ML SDK](https://docs.microsoft.com/python/api/overview/azure/ml?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109)។ វាមានព័ត៌មានចាំបាច់ទាំងមូលសម្រាប់យល់អំពីម៉ូឌុលនៅក្នុងមេរៀននេះ។
#### 2.5.1 ការតំឡើង Workspace, experiment, compute cluster និងទិន្នន័យ
អ្នកត្រូវផ្ទុក `workspace` ពីឯកសារកំណត់រចនាសម្ព័ន្ធដោយប្រើកូដដូចខាងក្រោម៖
```python
from azureml.core import Workspace
ws = Workspace.from_config()
```
វាគណនាថាអតិថិជនធាតុប្រភេទ `Workspace` ដែលបង្ហាញសកម្មភាព workspace។ បន្ទាប់មក អ្នកត្រូវបង្កើត `experiment` ដោយប្រើកូដខាងក្រោម៖
```python
from azureml.core import Experiment
experiment_name = 'aml-experiment'
experiment = Experiment(ws, experiment_name)
```
ដើម្បីទទួលបាន ឬបង្កើត experiment ពី workspace អ្នកចាំបាច់ត្រូវស្នើសុំពិនិត្យ experiment ដោយប្រើឈ្មោះ experiment ។ ឈ្មោះ experiment ត្រូវមានចំនួនតួអក្សរ 3 ទៅ 36 តួ ចាប់ផ្តើមជាមួយអក្សរឬលេខ ហើយអាចមានតែអក្សរ លេខ ក្បៀសក្រោម និងខ្ទង់ (-) តែប៉ុណ្ណោះ។ ប្រសិនបើ experiment មិនត្រូវបានរកឃើញនៅក្នុង workspace នោះធ្វើការបង្កើត experiment ថ្មីមួយ។
ឥឡូវនេះ អ្នកត្រូវបង្កើតក្រុមគណនាសម្រាប់ការបណ្តោះអាសន្ន ដោយប្រើកូដខាងក្រោម។ ចំណាំថាជំហាននេះប្រហែលប្រាំនាទី។
```python
from azureml.core.compute import AmlCompute
aml_name = "heart-f-cluster"
try:
aml_compute = AmlCompute(ws, aml_name)
print('Found existing AML compute context.')
except:
print('Creating new AML compute context.')
aml_config = AmlCompute.provisioning_configuration(vm_size = "Standard_D2_v2", min_nodes=1, max_nodes=3)
aml_compute = AmlCompute.create(ws, name = aml_name, provisioning_configuration = aml_config)
aml_compute.wait_for_completion(show_output = True)
cts = ws.compute_targets
compute_target = cts[aml_name]
```
អ្នកអាចទទួលយកទិន្នន័យពី workspace ដោយប្រើឈ្មោះ dataset ដូចខាងក្រោម៖
```python
dataset = ws.datasets['heart-failure-records']
df = dataset.to_pandas_dataframe()
df.describe()
```
#### 2.5.2 កំណត់រចនាសម្ព័ន្ធ AutoML និងការបណ្តោះអាសន្ន
ដើម្បីកំណត់រចនាសម្ព័ន្ធ AutoML ប្រើថ្នាក់ [AutoMLConfig class](https://docs.microsoft.com/python/api/azureml-train-automl-client/azureml.train.automl.automlconfig(class)?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109)។
ដូចបានពណ៌នាក្នុងឯកសារ មានព៉ារ៉ាម៉ែត្រច្រើនដែលអ្នកអាចលេងបាន។ សម្រាប់គម្រោងនេះ យើងនឹងប្រើព៉ារ៉ាម៉ែត្រខាងក្រោម៖
- `experiment_timeout_minutes`: ពេលវេលាអតិបរមា (ជា នាទី) ដែលការប្រណាំងអនុញ្ញាតឲ្យដំណើរការមុនវាត្រូវផ្អាកដោយស្វ័យប្រវត្តិ និងលទ្ធផលត្រូវបានបង្ហាញ។
- `max_concurrent_iterations`: ចំនួនបន្ទាប់បន្សំបណ្តោះអាសន្នលើកដំបូងអាចមានបាន។
- `primary_metric`: មេត្រិកសំខាន់ដែលប្រើសម្រាប់កំណត់ស្ថានភាព experiment។
- `compute_target`: គោលដៅកុំព្យូទ័រដែលប្រើដើម្បីរត់ Automated Machine Learning experiment។
- `task`: ប្រភេទភារកិច្ចដែលត្រូវបើកដំណើរការ។ តម្លៃអាចជា 'classification', 'regression', ឬ 'forecasting' អាស្រ័យលើប្រភេទបញ្ហា Automated ML។
- `training_data`: ទិន្នន័យបណ្តោះអាសន្នដែលត្រូវប្រើនៅក្នុង experiment។ ត្រូវមានទាំងលក្ខណៈបណ្តាល និងជួរឈរបង្ហាញស្លាក (អាចមានជួរឈរសម្ងាត់ទំងន់)
- `label_column_name`: ឈ្មោះជួរឈរបង្ហាញស្លាក។
- `path`: ផ្លូវពេញទៅថតគម្រោង Azure Machine Learning។
- `enable_early_stopping`: ថាតើអនុញ្ញាតឲ្យបញ្ឈប់មុនពេលដោយស្វ័យប្រវត្តិកាលណាមួយ បើពិន្ទុនៅតែមិនកំពុងកើនឡើងក្នុងរយៈពេលខ្លី។
- `featurization`: សញ្ញាសំគាល់ថាតើជំហាន featurization គួរត្រូវធ្វើដោយស្វ័យប្រវត្តិ ឬមិនធ្វើ ឬប្រើ featurization បទពិសោធន៍ផ្ទាល់ខ្លួន។
- `debug_log`: ឯកសារបង្ហាញកំណត់ហេតុសម្រាប់ព័ត៌មានប្រើប្រាស់ក្នុងការត្រួតពិនិត្យកំហុស។
```python
from azureml.train.automl import AutoMLConfig
project_folder = './aml-project'
automl_settings = {
"experiment_timeout_minutes": 20,
"max_concurrent_iterations": 3,
"primary_metric" : 'AUC_weighted'
}
automl_config = AutoMLConfig(compute_target=compute_target,
task = "classification",
training_data=dataset,
label_column_name="DEATH_EVENT",
path = project_folder,
enable_early_stopping= True,
featurization= 'auto',
debug_log = "automl_errors.log",
**automl_settings
)
```
ឥឡូវអ្នកបានកំណត់រចនាសម្ព័ន្ធរួច អ្នកអាចបណ្តោះអាសន្នម៉ូដែលដោយប្រើកូដខាងក្រោម។ ជំហាននេះអាចចំណាយពេលដល់មួយម៉ោង អាស្រ័យលើទំហំ cluster របស់អ្នក។
```python
remote_run = experiment.submit(automl_config)
```
អ្នកអាចអនុវត្តដំណើរការជាមួយ widget RunDetails ដើម្បីបង្ហាញនូវបទពិសោធន៍នានា។
```python
from azureml.widgets import RunDetails
RunDetails(remote_run).show()
```
## 3. ការដាក់បញ្ចូលម៉ូដែល និងការប្រើប្រាស់ endpoint ជាមួយ Azure ML SDK
### 3.1 រក្សាទុកម៉ូដែលល្អបំផុត
`remote_run` ជាអតិថិជនប្រភេទ [AutoMLRun](https://docs.microsoft.com/python/api/azureml-train-automl-client/azureml.train.automl.run.automlrun?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109)។ អតិថិជននេះរួមមានវិធីសាស្រ្ត `get_output()` ដែលត្រឡប់មកនូវដោយរត់ល្អបំផុត និងម៉ូដែលបានរៀបចំស្រាប់។
```python
best_run, fitted_model = remote_run.get_output()
```
អ្នកអាចមើលប៉ារ៉ាម៉ែត្រដែលប្រើសម្រាប់ម៉ូដែលល្អបំផុតដោយការបោះពុម្ព `fitted_model` និងមើលលក្ខណ:ភាពរបស់ម៉ូដែលល្អបំផុតដោយប្រើវិធីសាស្រ្ត [get_properties()](https://docs.microsoft.com/python/api/azureml-core/azureml.core.run(class)?view=azure-ml-py#azureml_core_Run_get_properties?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109)។
```python
best_run.get_properties()
```
ឥឡូវនេះចុះបញ្ជីម៉ូដែលជាមួយវិធីសាស្រ្ត [register_model](https://docs.microsoft.com/python/api/azureml-train-automl-client/azureml.train.automl.run.automlrun?view=azure-ml-py#register-model-model-name-none--description-none--tags-none--iteration-none--metric-none-?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109)។
```python
model_name = best_run.properties['model_name']
script_file_name = 'inference/score.py'
best_run.download_file('outputs/scoring_file_v_1_0_0.py', 'inference/score.py')
description = "aml heart failure project sdk"
model = best_run.register_model(model_name = model_name,
model_path = './outputs/',
description = description,
tags = None)
```
### 3.2 ការដាក់បញ្ចូលម៉ូដែល
ក្រោយពេលម៉ូដែលល្អបំផុតត្រូវបានរក្សាទុក យើងអាចដាក់បញ្ចូលវាដោយប្រើថ្នាក់ [InferenceConfig](https://docs.microsoft.com/python/api/azureml-core/azureml.core.model.inferenceconfig?view=azure-ml-py?ocid=AID3041109)។ InferenceConfig ជារចនាសម្ព័ន្ធសម្រាប់បរិស្ថានផ្ទាល់ខ្លួន ដែលប្រើសម្រាប់ការដាក់បញ្ចូលម៉ូដែល។ ថ្នាក់ [AciWebservice](https://docs.microsoft.com/python/api/azureml-core/azureml.core.webservice.aciwebservice?view=azure-ml-py) ជាគំរូម៉ូដែលបណ្តោះអាសន្នដែលបានដាក់ជាសេវា endpoint នៅលើ Azure Container Instances។ សេវាដែលបានដាក់ជាមុខងារត្រូវបានបង្កើតពីម៉ូដែល script និងឯកសារភ្ជាប់ផ្សេងៗ។ សេវាវេបនោះគឺជាអ៊ីមភ័រ HTTP មានតុល្យភាពបន្ទុក និងមាន REST API។ អ្នកអាចផ្ញើទិន្នន័យទៅ API នេះ និងទទួលយកការព្យាករណ៍តាមម៉ូដែល។
ម៉ូដែលត្រូវបានដាក់បញ្ចូលដោយប្រើវិធីសាស្រ្ត [deploy](https://docs.microsoft.com/python/api/azureml-core/azureml.core.model(class)?view=azure-ml-py#deploy-workspace--name--models--inference-config-none--deployment-config-none--deployment-target-none--overwrite-false--show-output-false-?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109)។
```python
from azureml.core.model import InferenceConfig, Model
from azureml.core.webservice import AciWebservice
inference_config = InferenceConfig(entry_script=script_file_name, environment=best_run.get_environment())
aciconfig = AciWebservice.deploy_configuration(cpu_cores = 1,
memory_gb = 1,
tags = {'type': "automl-heart-failure-prediction"},
description = 'Sample service for AutoML Heart Failure Prediction')
aci_service_name = 'automl-hf-sdk'
aci_service = Model.deploy(ws, aci_service_name, [model], inference_config, aciconfig)
aci_service.wait_for_deployment(True)
print(aci_service.state)
```
ជំហាននេះគួរតែចំណាយពេលប៉ុន្មាននាទី។
### 3.3 ការប្រើប្រាស់ endpoint
អ្នកប្រើ endpoint ដោយបង្កើតការបញ្ចូលគំរូ៖
```python
data = {
"data":
[
{
'age': "60",
'anaemia': "false",
'creatinine_phosphokinase': "500",
'diabetes': "false",
'ejection_fraction': "38",
'high_blood_pressure': "false",
'platelets': "260000",
'serum_creatinine': "1.40",
'serum_sodium': "137",
'sex': "false",
'smoking': "false",
'time': "130",
},
],
}
test_sample = str.encode(json.dumps(data))
```
បន្ទាប់មកអ្នកអាចផ្ញើការបញ្ចូលនេះទៅម៉ូដែលរបស់អ្នកសម្រាប់ការព្យាករណ៍៖
```python
response = aci_service.run(input_data=test_sample)
response
```
នេះគួរត្រូវបញ្ចូន `'{"result": [false]}'`។ នេះមានន័យថាការបញ្ចូលអ្នកជំងឺដែលយើងបានផ្ញើទៅកាន់ចំនុចបញ្ចប់បានបង្កើតការព្យាករណ៍ `false` ដែលមានន័យថាបុគ្គលនេះមិនមានសមាជិកម្មជំងឺបេះដូងបានទេ។
សូមអបអរសាទរ! អ្នកទើបតែប្រើប្រាស់ម៉ូដែលដែលបានបង្ហោះនិងហ្វឹកហ្វឺនលើ Azure ML ជាមួយ Azure ML SDK បានជោគជ័យ!
> **_សម្គាល់:_** បន្ទាប់ពីអ្នកបញ្ចប់គម្រោង សូមកុំភ្លេចលុបធនធានទាំងអស់។
## 🚀 챌린지
មានរឿងផ្សេងទៀតជាច្រើនដែលអ្នកអាចធ្វើបានតាមរយៈ SDK តែសង្ឃឹមថាយើងមិនអាចមើលទាំងអស់នៅក្នុងមេរៀននេះទេ។ ប៉ុន្តែដំណឹងល្អគឺការរៀនរបៀបទៅផ្តួចផ្តើមមើលឯកសារ SDK អាចនាំអ្នកទៅឆ្ងាយទៀត។ សូមមើលឯកសារ Azure ML SDK ហើយស្វែងរកថ្នាក់ `Pipeline` ដែលអនុញ្ញាតឱ្យអ្នកបង្កើត pipeline បាន។ Pipeline គឺជាការប្រមូលផ្តុំជំហានដែលអាចដំណើរការជាការងារបាន។
**ដឹកនាំ៖** ចូលទៅទី [SDK documentation](https://docs.microsoft.com/python/api/overview/azure/ml/?view=azure-ml-py?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109) ហើយវាយពាក្យគន្លឹះក្នុងប្រអប់ស្វែងរកដូចជា "Pipeline"។ អ្នកគួរតែឃើញថ្នាក់ `azureml.pipeline.core.Pipeline` នៅក្នុងលទ្ធផលស្វែងរក។
## [វினិច្ឆ័យបន្ទាប់មកមេរៀន](https://ff-quizzes.netlify.app/en/ds/quiz/37)
## ត្រួតពិនិត្យ និងរៀនផ្ទាល់ខ្លួន
នៅមេរៀននេះ អ្នកបានរៀនពីរបៀបហ្វឹកហ្វឺន បង្ហោះ និងប្រើម៉ូដែលក្នុងការព្យាករណ៍ហានិភ័យឈឺបេះដូងជាមួយ Azure ML SDK នៅលើពពក។ សូមពិនិត្យមើលឯកសារ [ឯកសារ](https://docs.microsoft.com/python/api/overview/azure/ml/?view=azure-ml-py?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109) សម្រាប់ព័ត៌មានបន្ថែមអំពី Azure ML SDK។ សាកល្បងបង្កើតម៉ូដែលផ្ទាល់ខ្លួនជាមួយ Azure ML SDK។
## ទទួលខុសត្រូវ
[គម្រោងវិទ្យាសាស្រ្តទិន្នន័យដោយប្រើ Azure ML SDK](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការបោះពុម្ភផ្សាយ**៖
ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលយើងខិតខំសំរេចបានភាពត្រឹមត្រូវ សូមដឹងថាការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុសឬមិនត្រឹមត្រូវ។ ឯកសារដើមនៅភាសាពុម្ពដើម គួរត្រូវបានគេចាត់ទុកថាជាដើមតំណាងសម្រាប់ព័ត៌មានច្បាស់លាស់។ សម្រាប់ព័ត៌មានសំខាន់ៗ សូមណែនាំឲ្យប្រើការបកប្រែដោយអ្នកជំនាញមនុស្សវិជ្ជាជីវៈ។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបម្លែងអត្ថន័យណាមួយដែលចេញពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,18 @@
#គម្រោងវិទ្យាសាស្ត្រទិន្នន័យដោយប្រើ Azure ML SDK
## ណែនាំ
យើងបានឃើញរបៀបប្រើវេទិកា Azure ML ដើម្បីហ្វឹកហាត់ ដាក់បង្ហាញ និង ប្រើម៉ូដែលមួយជាមួយ Azure ML SDK ។ ឥឡូវនេះ សូមស្វែងរកទិន្នន័យមួយដែលអ្នកអាចប្រើសម្រាប់ហ្វឹកហាត់ម៉ូដែលផ្សេងទៀត ដាក់បង្ហាញ និង ប្រើវា។ អ្នកអាចស្វែងរកឯកសារទិន្នន័យលើ [Kaggle](https://kaggle.com) និង [Azure Open Datasets](https://azure.microsoft.com/services/open-datasets/catalog?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109)។
## ពិន្ទុវាយតម្លៃ
| ល្អឥតខ្ចោះ | គ្រប់គ្រាន់ | ត្រូវការកែលម្អ |
|-----------|----------|-------------------|
| ពេលបញ្ជាក់ទំរូវ AutoML អ្នកបានរុករកឯកសារអ្នកអាចប្រើបានក្នុង SDK ដើម្បីមើលថាតើមានប៉ារ៉ាម៉ែត្រអ្វីខ្លះដែលអ្នកអាចប្រើបាន។ អ្នកបានបញ្ជារហ្វឹកហាត់ក្រុមទិន្នន័យនៅតាមរយៈ AutoML ដោយប្រើ Azure ML SDK និងអ្នកបានពិនិត្យការពន្យល់លើម៉ូដែល។ អ្នកបានដាក់បង្ហាញម៉ូដែលល្អបំផុត ហើយអ្នកអាចប្រើវាតាមរយៈ Azure ML SDK។ | អ្នកបានបញ្ជារហ្វឹកហាត់ក្រុមទិន្នន័យនៅតាមរយៈ AutoML ដោយប្រើ Azure ML SDK និងអ្នកបានពិនិត្យការពន្យល់លើម៉ូដែល។ អ្នកបានដាក់បង្ហាញម៉ូដែលល្អបំផុត ហើយអ្នកអាចប្រើវាតាមរយៈ Azure ML SDK។ | អ្នកបានបញ្ជារហ្វឹកហាត់ក្រុមទិន្នន័យនៅតាមរយៈ AutoML ដោយប្រើ Azure ML SDK។ អ្នកបានដាក់បង្ហាញម៉ូដែលល្អបំផុត ហើយអ្នកអាចប្រើវាតាមរយៈ Azure ML SDK។ |
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ចំណាំ**:
ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលដែលយើងខិតខំរកភាពត្រឹមត្រូវ សូមយកចិត្តទុកដាក់ថា ការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុស ឬការមិនត្រឹមត្រូវ។ ឯកសារដើមក្នុងភាសាដើមគួរឱ្យត្រូវបានចាត់ទុកជាមូលដ្ឋានឯកសារដែលមានអំណាច។ សម្រាប់ព័ត៌មានសំខាន់ៗ សូមផ្ដល់អនុសាសន៍ឱ្យប្រើការបកប្រែដោយអ្នកជំនាញមនុស្ស។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកប្រែខុសដែលកើតឡើងពីការប្រើប្រាស់ការបកប្រែនេះទេ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,319 @@
{
"cells": [
{
"cell_type": "markdown",
"source": [
"# វិទ្យាសាស្ត្រទិន្នន័យនៅក្នុងពពក៖ វិធី \"Azure ML SDK\"\n",
"\n",
"## ការប្រកាសមុខ\n",
"\n",
"ក្នុងសៀវភៅកំណត់ត្រានេះ យើងនឹងរៀនពីរបៀបប្រើប្រាស់ Azure ML SDK ដើម្បីហ្វឹកហ្វឺន បញ្ចូន និងប្រើម៉ូដែលតាមរយៈ Azure ML។\n",
"\n",
"លក្ខខណ្ឌមុន៖ \n",
"1. អ្នកបានបង្កើតកន្លែងធ្វើការ Azure ML ។ \n",
"2. អ្នកបានផ្ទុក [ទិន្នន័យជំងឺបេះដូង](https://www.kaggle.com/andrewmvd/heart-failure-clinical-data) ទៅក្នុង Azure ML។ \n",
"3. អ្នកបានផ្ទុកសៀវភៅកំណត់ត្រានេះចូលក្នុង Azure ML Studio ។ \n",
"\n",
"ជំហានបន្ទាប់មាន៖\n",
"\n",
"1. បង្កើតការធ្វើតេស្តក្នុង Workspace មានស្រាប់។ \n",
"2. បង្កើតក្រុម Compute ។ \n",
"3. ផ្ទុកទិន្នន័យ។ \n",
"4. តំឡើង AutoML ដោយប្រើ AutoMLConfig។ \n",
"5. ប្រតិបត្តិការតេស្ត AutoML។ \n",
"6. ស្វែងរកលទ្ធផលនិងទទួលបានម៉ូដែលល្អបំផុត។ \n",
"7. ធ្វើការចុះបញ្ជីម៉ូដែលល្អបំផុត។ \n",
"8. បញ្ចូនម៉ូដែលល្អបំផុត។ \n",
"9. ប្រើប្រាស់ចំណុចចេញ។ \n",
"\n",
"## ការនាំចេញជាក់លាក់សម្រាប់ Azure Machine Learning SDK\n"
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"from azureml.core import Workspace, Experiment\n",
"from azureml.core.compute import AmlCompute\n",
"from azureml.train.automl import AutoMLConfig\n",
"from azureml.widgets import RunDetails\n",
"from azureml.core.model import InferenceConfig, Model\n",
"from azureml.core.webservice import AciWebservice"
],
"outputs": [],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"## Initialize Workspace\n",
"ចាប់ផ្ដើមអក្សរការងារពីការកំណត់ដែលបានរក្សាទុក។ សូមធានាថា​ឯកសារ​កំណត់​មាន​នៅ​ក្នុង .\\config.json\n"
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"ws = Workspace.from_config()\n",
"print(ws.name, ws.resource_group, ws.location, ws.subscription_id, sep = '\\n')"
],
"outputs": [],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"## បង្កើតការធ្វើតេស្ត Azure ML\n",
"\n",
"យើងចាប់ផ្តើមបង្កើតការធ្វើតេស្តដែលមានឈ្មោះ 'aml-experiment' ក្នុងកន្លែងធ្វើការដែលយើងទើបតែចាប់ផ្តើម។\n"
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"experiment_name = 'aml-experiment'\n",
"experiment = Experiment(ws, experiment_name)\n",
"experiment"
],
"outputs": [],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"## បង្កើតក្រុមកុំព្យូទ័រ\n",
"អ្នកនឹងត្រូវបង្កើត [គោលដៅកុំព្យូទ័រ](https://docs.microsoft.com/azure/machine-learning/concept-azure-machine-learning-architecture#compute-target) សម្រាប់ការប្រតិបត្តិ AutoML របស់អ្នក។\n"
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"aml_name = \"heart-f-cluster\"\n",
"try:\n",
" aml_compute = AmlCompute(ws, aml_name)\n",
" print('Found existing AML compute context.')\n",
"except:\n",
" print('Creating new AML compute context.')\n",
" aml_config = AmlCompute.provisioning_configuration(vm_size = \"Standard_D2_v2\", min_nodes=1, max_nodes=3)\n",
" aml_compute = AmlCompute.create(ws, name = aml_name, provisioning_configuration = aml_config)\n",
" aml_compute.wait_for_completion(show_output = True)\n",
"\n",
"cts = ws.compute_targets\n",
"compute_target = cts[aml_name]"
],
"outputs": [],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"## ទិន្នន័យ\n",
"ប្រាកដថាអ្នកបានផ្ទុកឡើងឯកសារទិន្នន័យទៅ Azure ML ហើយកូនសោមានឈ្មោះដូចគ្នានឹងឯកសារទិន្នន័យ។\n"
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"key = 'heart-failure-records'\n",
"dataset = ws.datasets[key]\n",
"df = dataset.to_pandas_dataframe()\n",
"df.describe()"
],
"outputs": [],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"## ការកំណត់ AutoML\n"
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"automl_settings = {\n",
" \"experiment_timeout_minutes\": 20,\n",
" \"max_concurrent_iterations\": 3,\n",
" \"primary_metric\" : 'AUC_weighted'\n",
"}\n",
"\n",
"automl_config = AutoMLConfig(compute_target=compute_target,\n",
" task = \"classification\",\n",
" training_data=dataset,\n",
" label_column_name=\"DEATH_EVENT\",\n",
" enable_early_stopping= True,\n",
" featurization= 'auto',\n",
" debug_log = \"automl_errors.log\",\n",
" **automl_settings\n",
" )"
],
"outputs": [],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"## រត់ AutoML\n"
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"remote_run = experiment.submit(automl_config)"
],
"outputs": [],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"RunDetails(remote_run).show()"
],
"outputs": [],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"## រក្សាទុកម៉ូដែលល្អបំផុត\n"
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"best_run, fitted_model = remote_run.get_output()"
],
"outputs": [],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"best_run.get_properties()"
],
"outputs": [],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"model_name = best_run.properties['model_name']\n",
"script_file_name = 'inference/score.py'\n",
"best_run.download_file('outputs/scoring_file_v_1_0_0.py', 'inference/score.py')\n",
"description = \"aml heart failure project sdk\"\n",
"model = best_run.register_model(model_name = model_name,\n",
" description = description,\n",
" tags = None)"
],
"outputs": [],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"## ចែកចាយម៉ូដែលល្អបំផុត\n",
"\n",
"រត់កូដខាងក្រោមដើម្បីចែកចាយម៉ូដែលល្អបំផុត។ អ្នកអាចមើលស្ថានភាពនៃការចែកចាយនៅក្នុងទំព័រផ្ទៃតាបន្ទាត់ Azure ML ។ ជំហ៊ាននេះអាចចំណាយពេលប៉ុន្មាននាទី។\n"
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"inference_config = InferenceConfig(entry_script=script_file_name, environment=best_run.get_environment())\n",
"\n",
"aciconfig = AciWebservice.deploy_configuration(cpu_cores = 1,\n",
" memory_gb = 1,\n",
" tags = {'type': \"automl-heart-failure-prediction\"},\n",
" description = 'Sample service for AutoML Heart Failure Prediction')\n",
"\n",
"aci_service_name = 'automl-hf-sdk'\n",
"aci_service = Model.deploy(ws, aci_service_name, [model], inference_config, aciconfig)\n",
"aci_service.wait_for_deployment(True)\n",
"print(aci_service.state)"
],
"outputs": [],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"## បរិច្ចាគចំណុចបញ្ចប់\n",
"អ្នកអាចបន្ថែមបញ្ចូលទៅលើគំរូបញ្ចូលខាងក្រោម។\n"
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"data = {\n",
" \"data\":\n",
" [\n",
" {\n",
" 'age': \"60\",\n",
" 'anaemia': \"false\",\n",
" 'creatinine_phosphokinase': \"500\",\n",
" 'diabetes': \"false\",\n",
" 'ejection_fraction': \"38\",\n",
" 'high_blood_pressure': \"false\",\n",
" 'platelets': \"260000\",\n",
" 'serum_creatinine': \"1.40\",\n",
" 'serum_sodium': \"137\",\n",
" 'sex': \"false\",\n",
" 'smoking': \"false\",\n",
" 'time': \"130\",\n",
" },\n",
" ],\n",
"}\n",
"\n",
"test_sample = str.encode(json.dumps(data))"
],
"outputs": [],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": null,
"source": [
"response = aci_service.run(input_data=test_sample)\n",
"response"
],
"outputs": [],
"metadata": {}
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**ការផ្តល់អត្ថបទដោះស្រាយ**៖ \nឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ទោះបីយើងខិតខំសំរាប់ភាពត្រឹមត្រូវក៏ដោយ សូមយល់ឲ្យបានថាការបកប្រែដោយស្វ័យប្រវត្តិនេះអាចមានកំហុស ឬការមិនត្រឹមត្រូវខ្លះ។ ឯកសារដើមនៅក្នុងភាសាមាតុភូមិគួរត្រូវបានគេសង្កេតជា ប្រភពមានសិទ្ធិ។ សម្រាប់ព័ត៌មានសំខាន់ណាស់ ការបកប្រែដោយអ្នកជំនាញដែលមានបទពិសោធន៍ត្រូវបានផ្តល់អនុសាសន៍។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកប្រែខុសពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
]
}
],
"metadata": {
"orig_nbformat": 4,
"language_info": {
"name": "python"
}
},
"nbformat": 4,
"nbformat_minor": 2
}

@ -0,0 +1,28 @@
# វិទ្យាសាស្ត្រទិន្នន័យនៅលើពពក
![cloud-picture](../../../translated_images/km/cloud-picture.f5526de3c6c6387b.webp)
> រូបថតដោយ [Jelleke Vanooteghem](https://unsplash.com/@ilumire) មកពី [Unsplash](https://unsplash.com/s/photos/cloud?orientation=landscape)
នៅពេលនិយាយពីការធ្វើវិទ្យាសាស្ត្រទិន្នន័យជាមួយទិន្នន័យធំ ពពកអាចជាឧបករណ៍ផ្លាស់ប្តូរហ្គេមមួយ។ ក្នុងមេរៀនបីខាងមុខនេះ យើងនឹងមើលថាពពកគឺជាអ្វីហើយហេតុអ្វីបានជាវាអាចមានប្រយោជន៍ខ្លាំង។ យើងក៏នឹងស្វែងយល់អំពីសំណុំទិន្នន័យជួររលាយបេះដូង និងបង្កើតម៉ូដែលមួយដើម្បីជួយឱ្យវាយតម្លៃឱ្យដឹងពីសក្តានុពលនៃមនុស្សម្នាក់មានជួររលាយបេះដូង។ យើងនឹងប្រើថាមពលពពកដើម្បីបណ្តុះបណ្តាល បញ្ចេញ និងប្រើម៉ូដែលនៅក្នុងវិធីពីរផ្សេងគ្នា។ វិធីមួយប្រើតែចំណុចប្រទាក់អ្នកប្រើប្រាស់ក្នុងរបៀប Low code/No code, វិធីមួយផ្សេងទៀតប្រើ Azure Machine Learning Software Developer Kit (Azure ML SDK)។
![project-schema](../../../translated_images/km/project-schema.420e56d495624541.webp)
### ប្រធានបទ
1. [ហេតុអ្វីបានជាប្រើពពកសម្រាប់វិទ្យាសាស្ត្រទិន្នន័យ?](17-Introduction/README.md)
2. [វិទ្យាសាស្ត្រទិន្នន័យនៅលើពពក៖ របៀប "Low code/No code"](18-Low-Code/README.md)
3. [វិទ្យាសាស្ត្រទិន្នន័យនៅលើពពក៖ របៀប "Azure ML SDK"](19-Azure/README.md)
### ការសរសើរ
មេរៀនទាំងនេះត្រូវបានសរសេរជាមួយ ☁️ និង 💕 ដោយ [Maud Levy](https://twitter.com/maudstweets) និង [Tiffany Souterre](https://twitter.com/TiffanySouterre)
ទិន្នន័យសម្រាប់គម្រោងការព្យាករណ៍ជួររលាយបេះដូងបានយកមកពី [
Larxel](https://www.kaggle.com/andrewmvd) នៅលើ [Kaggle](https://www.kaggle.com/andrewmvd/heart-failure-clinical-data)។ វាត្រូវ​បាន​លក្ខខណ្ឌ​តាម [Attribution 4.0 International (CC BY 4.0)](https://creativecommons.org/licenses/by/4.0/)។
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការរក្សាសិទ្ធិបដិសេធ**៖
ឯកសារនេះបានបកប្រែដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលយើងខិតខំរកភាពត្រឹមត្រូវ សូមជ្រាបថាការបកប្រែប្រាកដដោយស្វ័យប្រវត្តិអាចមានកំហុស ឬភាពមិនត្រឹមត្រូវ។ ឯកសារដើមក្នុងភាសាដើមគួរត្រូវបានគិតថាជាភាពសុពលភាពចម្បង។ សម្រាប់ព័ត៌មានសំខាន់ៗ សូមផ្តល់អនុសាសន៍ឱ្យប្រើការបកប្រែដោយមនុស្សជំនាញវិជ្ជាជីវៈ។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកស្រាយខុសចេញពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,146 @@
# វិទ្យាសាស្ត្រទិន្នន័យនៅក្នុងពិភពពិត
| ![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/20-DataScience-RealWorld.png) |
| :--------------------------------------------------------------------------------------------------------------: |
| វិទ្យាសាស្ត្រទិន្នន័យនៅក្នុងពិភពពិត - _Sketchnote by [@nitya](https://twitter.com/nitya)_ |
យើងស្ទើរតែមកដល់ចុងផ្លូវរៀននេះហើយ!
យើងបានចាប់ផ្តើមជាមួយនិយមន័យនៃវិទ្យាសាស្ត្រទិន្នន័យ និងសីលធម៌ ស្វែងយល់អំពីឧបករណ៍ និងបច្ចេកវិទ្យារបស់ការវិភាគទិន្នន័យ និងការបង្ហាញទិន្នន័យ ត្រួតពិនិត្យជីវចលនៃវិទ្យាសាស្ត្រទិន្នន័យ និងមើលពីការកំណត់ទំហំ និងធ្វើឱ្យដំណើរការវិទ្យាសាស្ត្រទិន្នន័យដោយស្វ័យប្រវត្តិជាមួយសេវាកម្មកម្តៅពពក។ ដូច្នេះ អ្នកប្រហែលជាកំពុងមានសំណួរ៖ _"តើតាមរយៈរបៀបណាខ្ញុំអាចផែនទីការសិក្សាទាំងនេះទៅឱ្យបរិបទក្នុងពិភពពិត?"_
នៅក្នុងមេរៀននេះ យើងនឹងស្វែងយល់អំពីកម្មវិធីក្នុងពិភពពិតនៃវិទ្យាសាស្ត្រទិន្នន័យនៅឧស្សាហកម្មផ្សេងៗ ហើយចូលទៅកាន់ឧទាហរណ៍ជាក់លាក់នៅក្នុងការស្រាវជ្រាវ មនុស្សវិទ្យាឌីជីថល និងបរិស្ថាននិយម។ យើងនឹងមើលឱកាសគំរោងសិស្ស និងបញ្ចប់ជាមួយធនធានមានប្រយោជន៍ដើម្បីជួយអ្នកបន្តដំណើររៀនរបស់អ្នក!
## ការប្រលងមុនមេរៀន
## [ការប្រលងមុនមេរៀន](https://ff-quizzes.netlify.app/en/ds/quiz/38)
## វិទ្យាសាស្ត្រទិន្នន័យ + ឧស្សាហកម្ម
អរគុណសម្រាប់ការចូលរួមទាំងមូលនៃ AI ឥឡូវនេះអ្នកអភិវឌ្ឍអាចរកឃើញរបៀបងាយស្រួលក្នុងការរចនា និងបញ្ចូលការសម្រេចចិត្តដោយ AI និងការបង្ហាញចំណេះដឹងផ្អែកលើទិន្នន័យទៅក្នុងបទពិសោធន៍អ្នកប្រើ និងដំណើរការអភិវឌ្ឍ។ មានឧទាហរណ៍មួយចំនួននៃរបៀបដែលវិទ្យាសាស្ត្រទិន្នន័យត្រូវបាន "អនុវត្ត" ចូលទៅក្នុងកម្មវិធីពិភពពិតនៅឧស្សាហកម្ម៖
* [Google Flu Trends](https://www.wired.com/2015/10/can-learn-epic-failure-google-flu-trends/) បានប្រើវិទ្យាសាស្ត្រទិន្នន័យដើម្បីភ្ជាប់ពាក្យស្វែងរកជាមួយនឹងបំណែករាគាខ្លាំង។ ទោះបីជាវិធីសាស្ត្រនេះមានកំហុស ក៏វាបានបង្កើនការយល់ដឹងអំពីអ្វីដែលអាចធ្វើបាន (និងការប្រឈមមុខ) នៃការទាយទំនងសុខាភិបាលផ្អែកលើទិន្នន័យ។
* [ការទាយសំរាប់ផ្លូវ UPS](https://www.technologyreview.com/2018/11/21/139000/how-ups-uses-ai-to-outsmart-bad-weather/) - ពន្យល់ពីរបៀបដែល UPS ប្រើវិទ្យាសាស្ត្រទិន្នន័យ និងម៉ាស៊ីនរៀនដើម្បីទាយផ្លូវដែលល្អបំផុតសម្រាប់ការដឹកជញ្ជូន ដោយគិតគូរពីអាកាសធាតុ ស្ថានភាពចរាចរណ៍ កាលបរិច្ឆេទដឹកជញ្ជូន និងច្រើនទៀត។
* [ការបង្ហាញផ្លូវ Taxicab ទីក្រុង NYC](http://chriswhong.github.io/nyctaxi/) - ទិន្នន័យបានប្រមូលដោយប្រើ [ច្បាប់សិទ្ធិនៃព័ត៌មាន](https://chriswhong.com/open-data/foil_nyc_taxi/) បានជួយបង្ហាញថ្ងៃមួយរបស់រថយន្តសេរី NYC ជួយឲ្យយើងយល់ពីរបៀបដែលពួកគេបើកបររដ្ឋធានាថាជិតនឹងទីក្រុងរំខាន ការរកស៊ី និងរយៈពេលធ្វើដំណើរពីរោហារពន្លឺមួយទៅមួយក្នុងរយៈពេល 24 ម៉ោង។
* [Uber Data Science Workbench](https://eng.uber.com/dsw/) - ប្រើទិន្នន័យ (ស្ថានទីយក និងទម្លាក់ កំឡុងដំណើរ ផ្លូវដែលស្រឡាញ់ជាដើម) ដែលបានប្រមូលពីការដើររាប់លានជាស្រើបរាយរបស់ uber *ប្រចាំថ្ងៃ* ដើម្បីបង្កើតឧបករណ៍វិភាគទិន្នន័យ ជួយក្នុងការកំណត់តម្លៃ សុវត្ថិភាព ការស្វែងរកការពក់ និងសម្រេចចិត្តផ្លូវ។
* [វិភាគកីឡា](https://towardsdatascience.com/scope-of-analytics-in-sports-world-37ed09c39860) - ផ្ដោតលើ _វិភាគទាយទំនង_ (វិភាគក្រុម និងអ្នកលេង - គិតអំពី [Moneyball](https://datasciencedegree.wisconsin.edu/blog/moneyball-proves-importance-big-data-big-ideas/) - និងការគ្រប់គ្រងអ្នកគាំទ្រ) និង _ការបង្ហាញទិន្នន័យ_ (ផ្ទាំងបង្ហាញក្រុម និងអ្នកគាំទ្រ ការប្រកួតជាដើម) ជាមួយកម្មវិធីដូចជាការស្ទង់មតិទេពកោសល្យ ការភ្នាល់កីឡា និងការគ្រប់គ្រងសារពើភ័ណ្ឌ/កន្លែង។
* [វិទ្យាសាស្ត្រទិន្នន័យនៅធនាគារ](https://data-flair.training/blogs/data-science-in-banking/) - បង្ហាញពីតម្លៃនៃវិទ្យាសាស្ត្រទិន្នន័យនៅឧស្សាហកម្មហិរញ្ញវត្ថុ ជាមួយកម្មវិធីចាប់ពីគំរូហានិភ័យ និងការស្វែងរកការពក់ ដល់ការចែកចាយអតិថិជន ការទាយទំនងពេលវេលាចាំបាច់ និងប្រព័ន្ធផ្តល់អនុសាសន៍។ វិភាគទាយទំនងក៏ជំរុញការវាស់វែងសំខាន់ៗដូចជា [ពិន្ទុលេខឥណទាន](https://dzone.com/articles/using-big-data-and-predictive-analytics-for-credit)។
* [វិទ្យាសាស្ត្រទិន្នន័យនៅក្នុងសុខាភិបាល](https://data-flair.training/blogs/data-science-in-healthcare/) - បង្ហាញកម្មវិធីដូចជា រូបភាពវេជ្ជសាស្ត្រ (ឧ. MRI, X-Ray, CT-Scan), ជីវវិទ្យាសាស្ត្រ DNA ស៊េរី, ការអភិវឌ្ឍថ្នាំ (ការវាយតម្លៃហានិភ័យ, ការទាយសម្គាល់ភាពជោគជ័យ), វិភាគទាយទំនង (ការថែរក្សាអ្នកជំងឺ និងរបៀបផ្គត់ផ្គង់), ការតាមដាន និងការការពារ ជម្ងឺ។
![កម្មវិធីវិទ្យាសាស្ត្រទិន្នន័យនៅក្នុងពិភពពិត](../../../../translated_images/km/data-science-applications.4e5019cd8790ebac.webp) ការិយាល័យរូបភាព៖ [Data Flair៖ 6 កម្មវិធីវីទ្យាសាស្ត្រទិន្នន័យអស្ចារ្យ](https://data-flair.training/blogs/data-science-applications/)
រូបនេះបង្ហាញពីដែនកន្លែង និងឧទាហរណ៍ផ្សេងទៀតសម្រាប់អនុវត្តបច្ចេកទេសវិទ្យាសាស្ត្រទិន្នន័យ។ ចង់ស្វែងយល់ពីកម្មវិធីផ្សេងទៀតទេ? ពិនិត្យមើលផ្នែក [ការត្រួតពិនិត្យ និងសិក្សាឯកជន](../../../../6-Data-Science-In-Wild/20-Real-World-Examples) ខាងក្រោម។
## វិទ្យាសាស្ត្រទិន្នន័យ + ការស្រាវជ្រាវ
| ![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/20-DataScience-Research.png) |
| :---------------------------------------------------------------------------------------------------------------: |
| វិទ្យាសាស្ត្រទិន្នន័យ & ការស្រាវជ្រាវ - _Sketchnote by [@nitya](https://twitter.com/nitya)_ |
ក្នុងពេលដែលកម្មវិធីក្នុងពិភពពិតពេញចិត្តលើករណីប្រើប្រាស់ឧស្សាហកម្មទំហំធំៗ ពាក្យសម្ងាត់នៃកម្មវិធី _ការស្រាវជ្រាវ_ និងគំរោងអាចមានប្រយោជន៍ពីចំណុចពីរបែបនេះ៖
* _ឱកាសច្នៃប្រឌិត_ - ស្វែងយល់ការ​បង្កើត​ខ្លីៗនៃគំនិតកម្រិតខ្ពស់ និងការប្រឡងប្រួលនៃបទពិសោធន៍អ្នកប្រើប្រាស់សម្រាប់កម្មវិធីជំនាន់ក្រោយ។
* _បញ្ហាការប្រើប្រាស់_ - សាកសួរពីហានិភ័យ ឬផលប៉ះពាល់មិនចង់បាននៃបច្ចេកវិទ្យាវិទ្យាសាស្ត្រទិន្នន័យនៅក្នុងបរិបទពិភពពិត។
សម្រាប់សិស្ស កម្មវិធីស្រាវជ្រាវទាំងនេះអាចផ្តល់ឱកាសរៀន និងសហការដែលអាចធ្វើឲ្យអ្នកយល់ដឹងពីប្រធានបទបានកាន់តែល្អ និងពង្រីកការយល់ដឹង និងការចូលរួមរបស់អ្នកជាមួយមនុស្ស ឬក្រុមដែលមានសក្ដានុពល ដែលកំពុងធ្វើការងារនៅក្នុងដែនកំណត់ដែលមានចំណាប់អារម្មណ៍។ តើគំរោងស្រាវជ្រាវមានរូបរាងយ៉ាងដូចម្តេច ហើយអាចមានឥទ្ធិពលយ៉ាងដូចម្តេច?
មកមើលឧទាហរណ៍មួយ - [ការសិក្សា MIT Gender Shades](http://gendershades.org/overview.html) ពី Joy Buolamwini (MIT Media Labs) ជាមួយ [អត្ថបទស្រាវជ្រាវ](http://proceedings.mlr.press/v81/buolamwini18a/buolamwini18a.pdf) ដែលបានសរសេរជាម្ចាស់សិលាចម និង Timnit Gebru (នៅ Microsoft Research ពេលនោះ) ដែលផ្ដោតលើ
* **អ្វី:** គោលបំណងនៃគំរោងស្រាវជ្រាវគឺ _វាយតម្លៃពីការជៀសវាងដែលមាននៅក្នុងអាល្គូរីតម facial analysis ដែលធ្វើការ​ហៅបែបស្វ័យប្រវត្តិ និងឯកសារទិន្នន័យ_ ដោយផ្អែកលើភេទ និងប្រភេទស្បែក។
* **ហេតុអ្វី:** វិភាគផ្ទៃមុខត្រូវបានប្រើនៅក្នុងដែនដូចជា អាជ្ញាធរវិស័យច្បាប់, សន្តិសុខព្រលានយន្តហោះ, ប្រព័ន្ធជួលបុគ្គលិក និងផ្សេងៗទៀត - បរិបទដែលការបែងចែកខុស (ដូចជាការជួនប្រយោលដោយសារជៀសវាង) អាចបង្កឲ្យមានហានិភ័យសេដ្ឋកិច្ច និងសង្គមសម្រាប់បុគ្គល ឬក្រុមដែលទាក់ទង។ ការយល់ដឹង (ហើយក៏ការលុបចោល ឬកាត់បន្ថយ) ជៀសវាងគឺជាចំណុចសំខាន់សម្រាប់ភាពស្មើរភាពនៃការប្រើប្រាស់។
* **របៀប:** អ្នកស្រាវជ្រាវបានឃើញថាសេចក្តីរាយការណ៍ដែលមានស្រាប់ប្រើជាមនុស្សដែលមានស្បែកសស្រស់ជាប់ផ្សេងៗជាច្រើន ហើយបានរើសស្រង់ឯកសារទិន្នន័យថ្មី (រូបភាពជាង 1000) ដែល _មានតុល្យភាព_ តាមភេទ និងប្រភេទស្បែក។ ឯកសារទិន្នន័យនេះបានប្រើសម្រាប់វាយតម្លៃភាពត្រឹមត្រូវនៃផលិតផលចំណាត់ថ្នាក់ភេទបី (ពី Microsoft, IBM និង Face++)។
លទ្ធផលបង្ហាញថា ទោះបីជាការបែងចែកទាំងមូលមានភាពត្រឹមត្រូវល្អ ក៏មានភាពខុសប្លែកក្នុងអត្រាកំហុសរវាងគណៈមនុស្សយ៉ាងតិចមួយ - ជាមួយ **ការជំពាក់ភេទខុស** មានកម្ពស់សម្រាប់ស្ត្រី ឬមនុស្សដែលមានស្បែកងងឹតកាន់តែលែងបង្ហាញពីភាពជៀសវាង។
**លទ្ធផលសំខាន់៖** បានបង្កើនការយល់ដឹងថាវិទ្យាសាស្ត្រទិន្នន័យត្រូវការឯកសារទិន្នន័យដែល _តំណាងសមរម្យ_ (ក្រុមតូចមានតុល្យភាព) និងក្រុមការងារ _រួមបញ្ចូល_ (ប្រវត្តិមុខទាំងអស់) ដើម្បីទទួលស្គាល់ និងលុបចោល ឬកាត់បន្ថយជៀសវាងនេះនៅដើម។ កិច្ចប្រឹងប្រែងស្រាវជ្រាវដូចនេះក៏មានសារៈសំខាន់ក្នុងស្ថាប័នជាច្រើនក្នុងការកំណត់គោលការណ៍ និងអនុប្រតិបត្តិការសម្រាប់ _AI មានទំនួលខុសត្រូវ_ ដើម្បីធ្វើឲ្យមានភាពស្មើរភាពលើផលិតផល និងដំណើរការវិទ្យាសាស្ត្រ AI របស់ពួកគេ។
**ចង់រៀនអំពីកិច្ចខិតខំស្រាវជ្រាវពាក់ព័ន្ធនៅ Microsoft ទេ?**
* ពិនិត្យមើល [គំរោងស្រាវជ្រាវ Microsoft](https://www.microsoft.com/research/research-area/artificial-intelligence/?facet%5Btax%5D%5Bmsr-research-area%5D%5B%5D=13556&facet%5Btax%5D%5Bmsr-content-type%5D%5B%5D=msr-project) នៅលើបញ្ហា បញ្ញាសិប្បនិម្មិត។
* ស្វែងយល់គំរោងសិស្សពី [Microsoft Research Data Science Summer School](https://www.microsoft.com/en-us/research/academic-program/data-science-summer-school/)។
* ពិនិត្យមើលគំរោង [Fairlearn](https://fairlearn.org/) និងការចាប់ផ្តើម _Responsible AI_ ([AI មានទំនួលខុសត្រូវ](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1%3aprimaryr6))។
## វិទ្យាសាស្ត្រទិន្នន័យ + មនុស្សវិទ្យាឌីជីថល
| ![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/20-DataScience-Humanities.png) |
| :---------------------------------------------------------------------------------------------------------------: |
| វិទ្យាសាស្ត្រទិន្នន័យ & មនុស្សវិទ្យាឌីជីថល - _Sketchnote by [@nitya](https://twitter.com/nitya)_ |
មនុស្សវិទ្យាឌីជីថល [ត្រូវបានកំណត់](https://digitalhumanities.stanford.edu/about-dh-stanford) ជា "ការប្រមូលផ្តុំរបស់អំពើនិងវិធីសាស្ត្រដែលផ្សំឡើងពីវិធីសាស្ត្រជាមួយសំណួរជាក់លាក់នៃមនុស្សវិទ្យា"។ គំរោង [Stanford](https://digitalhumanities.stanford.edu/projects) ដូចជា _"បើកប្រវត្តិសាស្ត្រ"_ និង _"ចិត្តវិជ្ជាពាណិជ្ជ"_ បង្ហាញពីការតភ្ជាប់រវាង [មនុស្សវិទ្យាឌីជីថល និងវិទ្យាសាស្ត្រទិន្នន័យ](https://digitalhumanities.stanford.edu/digital-humanities-and-data-science) - ផ្តោតលើបច្ចេកវិទ្យាដូចជា វិភាគបណ្តាញ, ការបង្ហាញព័ត៌មាន, វិភាគតំបន់ និងអត្ថបទ ដែលអាចជួយយើងវិលត្រឡប់ទៅឯកសារបុរាណ និងសរុបដោយវិភាគដើម្បីទទួលបានការយល់ដឹងថ្មី និងទស្សនៈថ្មី។
*ចង់ស្វែងយល់ និងពង្រីកគំរោងនៅលើកន្លែងនេះទេ?*
ពិនិត្យមើល ["Emily Dickinson and the Meter of Mood"](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671) - ជាឧទាហរណ៍ដ៏ល្អពី [Jen Looper](https://twitter.com/jenlooper) ដែលសួរថាតើយើងអាចប្រើវិទ្យាសាស្ត្រទិន្នន័យដើម្បីវិលត្រឡប់កវីភាសាដែលស្គាល់ហើយវាយតម្លៃម្តេចដោយជម្រុងន័យ និងអ្នកនិពន្ធនៅតំបន់ថ្មីៗ។ ឧទាហរណ៍ _តើយើងអាចទាយទំនងរដូវកាលដែលកវីត្រូវបាននិពន្ធដោយវិភាគអារម្មណ៍កំណត់សំឡេង ឬអារម្មណ៍_ - ហើយវា​និយាយអំពីអារម្មណ៍អ្នកនិពន្ធ​នៅក្នុងរយៈពេលខ្លះដូចម្តេច?
ដើម្បីឆ្លើយសំណួរនេះ យើងអនុវត្តជំហាននៃជីវចលវិទ្យាសាស្ត្រទិន្នន័យរបស់យើង៖
* [`ទទួលទិន្នន័យ`](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671#acquiring-the-dataset) - ដើម្បីប្រមូលឯកសារទិន្នន័យដែលពាក់ព័ន្ធសម្រាប់វិភាគ។ ជម្រើសរួមមានការប្រើ API (ឧ. [Poetry DB API](https://poetrydb.org/index.html)) ឬការច្របាច់គេហទំព័រ (ឧ. [Project Gutenberg](https://www.gutenberg.org/files/12242/12242-h/12242-h.htm)) ដោយប្រើឧបករណ៍ដូចជា [Scrapy](https://scrapy.org/)។
* [`សម្អាតទិន្នន័យ`](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671#clean-the-data) - ពន្យល់ពីរបៀបដែលអត្ថបទអាចត្រូវបានទម្លាប់ សម្អាត និងសម្រួលដោយប្រើឧបករណ៍មូលដ្ឋានដូចជា Visual Studio Code និង Microsoft Excel។
* [`វិភាគទិន្នន័យ`](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671#working-with-the-data-in-a-notebook) - ពន្យល់ពីរបៀបដែលយើងអាចនាំចូលឯកសារទិន្នន័យទៅក្នុង "កំណត់ត្រា" ដើម្បីវិភាគដោយប្រើកញ្ចប់ Python (ដូចជា pandas, numpy និង matplotlib) សម្រាប់រៀបចំ និងបង្ហាញទិន្នន័យ។
* [`វិភាគអារម្មណ៍`](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671#sentiment-analysis-using-cognitive-services) - ពន្យល់ពីរបៀបដែលយើងអាចបញ្ចូលសេវាកម្មពពកដូចជា Text Analytics ដោយប្រើឧបករណ៍កម្រិតទាបដូចជា [Power Automate](https://flow.microsoft.com/en-us/) សម្រាប់ដំណើរការទិន្នន័យស្វ័យប្រវត្តិ។
ដោយប្រើដំណើរការនេះ យើងអាចស្វែងយល់ពីឥទ្ធិពលរដូវលើអារម្មណ៍នៃកវី និងជួយយើងបង្កើតទស្សនៈផ្ទាល់ខ្លួនលើអ្នកនិពន្ធ។ សាកល្បងផ្ទាល់របស់អ្នក - បន្ទាប់មកបន្តបង្កើតកំណត់ត្រា ដើម្បីសួរសំណួរផ្សេងៗ ឬបង្ហាញទិន្នន័យដោយរបៀបថ្មីៗ!
> អ្នកអាចប្រើឧបករណ៍ខ្លះៗនៅក្នុង [ឧបករណ៍មនុស្សវិទ្យាឌីជីថល](https://github.com/Digital-Humanities-Toolkit) ដើម្បីធ្វើការស្រាវជ្រាវតាមផ្លូវទាំងនេះ
## វិទ្យាសាស្ត្រទិន្នន័យ + បរិស្ថាននិយម
| ![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/20-DataScience-Sustainability.png) |
| :---------------------------------------------------------------------------------------------------------------: |
| វិទ្យាសាស្ត្រទិន្នន័យ & បរិស្ថាននិយម - _Sketchnote by [@nitya](https://twitter.com/nitya)_ |
[យុទ្ធសាស្ត្រ 2030 សម្រាប់ការអភិវឌ្ឍន៍ដั่งគ្រា](https://sdgs.un.org/2030agenda) - ដែលត្រូវបានសមាជិកសមាគមជាតិសហគមន៍អង្គការសហប្រជាជាតិទាំងអស់ទទួលយកក្នុងឆ្នាំ 2015 - កំណត់គោលដៅ 17 រួមមានគោលដៅដែលផ្ដោតលើ **ការការពារផែនដី** ពីការបំផ្លាញ និងផលប៉ះពាល់នៃការប្រែប្រួលអាកាសធាតុ។ យូនីត Microsoft Sustainability [បានគាំទ្រគោលដៅទាំងនេះ](https://www.microsoft.com/en-us/sustainability) ដោយស្វែងរកវិធីដែលដំណោះស្រាយបច្ចេកវិទ្យាអាចជួយគាំទ្រនិងបង្កើតអនាគតដែលមានការរីកចម្រើនជាងមុនអោយកាន់តែធន់ដុម ជាមួយ [ផ្ដោតលើគោលដៅ 4](https://dev.to/azure/a-visual-guide-to-sustainable-software-engineering-53hh) - ធ្វើអោយមានកាបូនអវិជ្ជមាន ជាតិទឹកវិជ្ជមាន គ្មានសំរាម និងសកម្មភាពជីវចម្រុះ ដល់ឆ្នាំ 2030។
ការដោះស្រាយបញ្ហាទាំងនេះយ៉ាងទូលំទូលាយ និងទាន់ពេលវេលា តម្រូវឲ្យមានគំនិតវិសាលនិងទិន្នន័យទំហំធំនៅពពក។ យុទ្ធនាការ [Planetary Computer](https://planetarycomputer.microsoft.com/) ផ្តល់ជូនវត្ថុបត្រ 4 ដើម្បីជួយអ្នកវិទ្យាសាស្ត្រទិន្នន័យ និងអ្នកអភិវឌ្ឍន៍ក្នុងការប្រយុទ្ធនេះ៖
* [កាតាឡុកទិន្នន័យ](https://planetarycomputer.microsoft.com/catalog) - មានទិន្នន័យប្រព័ន្ធផែនដីជាពិតច្រើនតែប៉ុណ្ណោះ (ឥតគិតថ្លៃ និងបង្ហោះនៅលើ Azure)។
* [Planetary API](https://planetarycomputer.microsoft.com/docs/reference/stac/) - ជួយអ្នកប្រើស្វែងរកទិន្នន័យដែលពាក់ព័ន្ធជាប់លាប់ក្នុងលំហ និងពេលវេលា។
* [Hub](https://planetarycomputer.microsoft.com/docs/overview/environment/) - បរិវេណគ្រប់គ្រងសម្រាប់អ្នកវិទ្យាសាស្ត្រដើម្បីដំណើរការទិន្នន័យភូមិសាស្ត្រទំហំធំ។
* [កម្មវិធី](https://planetarycomputer.microsoft.com/applications) - សម្ដែងករណីប្រើប្រាស់ និងឧបករណ៍សម្រាប់ការយល់ដឹងយោងទៅកាន់បរិស្ថាននិយម។
**គម្រោងកុំព្យូទ័រផែនដីកំពុងនៅក្នុងដំណាក់កាលមើលជាមុន (ចាប់តាំងពីខែសីហា ២០២១)** - នេះគឺជាវិធីដែលអ្នកអាចចាប់ផ្តើមរួមចំណែកក្នុងដំណោះស្រាយចំណុចប្រទាក់នឹងនិរន្តរភាពដោយប្រើវិទ្យាសាស្ត្រទិន្នន័យ។
* [ស្នើរសុំការចូលប្រើ](https://planetarycomputer.microsoft.com/account/request) ដើម្បីចាប់ផ្តើមស្វែងយល់និងភ្ជាប់ជាមួយមិត្តរួមការងារ។
* [ស្វែងយល់ឯកសារ](https://planetarycomputer.microsoft.com/docs/overview/about) ដើម្បីយល់ពីឈុតទិន្នន័យ និង API ដែលគាំទ្រ។
* ស្វែងយល់ពាក់ព័ន្ធកម្មវិធីដូចជា [Ecosystem Monitoring](https://analytics-lab.org/ecosystemmonitoring/) សម្រាប់ចំណាប់អារម្មណ៍លើគំនិតកម្មវិធី។
គិតអំពីវិធីដែលអ្នកអាចប្រើការបង្ហាញទិន្នន័យ ដើម្បីបង្ហាញឬបង្កើតការយល់ដឹងពាក់ព័ន្ធក្នុងដែនដូចជាការប្រែប្រួលអាកាសធាតុនិងការកាត់បន្ថយព្រៃឈើ។ ឬគិតពីវិធីដែលការយល់ដឹងអាចត្រូវបានប្រើដើម្បីបង្កើតបទពិសោធន៍អ្នកប្រើថ្មីៗ ដែលជំរុញការផ្លាស់ប្ដូរប្រព្រឹត្តិការណ៍សម្រាប់ការរស់នៅយ៉ាងមានស្ថិរភាព។
## វិទ្យាសាស្ត្រទិន្នន័យ + សិស្ស
យើងបាននិយាយអំពីកម្មវិធីពិតប្រាកដនៅក្នុងឧស្សាហកម្ម និងការស្រាវជ្រាវ ហើយបានស្វែងយល់ពីឧទាហរណ៍កម្មវិធីវិទ្យាសាស្ត្រទិន្នន័យក្នុងមនុស្សវិទ្យឌីជីថល និងនិរន្តរភាព។ តើយ៉ាងដូចម្តេចដែលអ្នកអាចកសាងជំនាញ និងចែករំលែកជំនាញជាអ្នកចាប់ផ្តើមវិទ្យាសាស្ត្រទិន្នន័យ?
នេះគឺជាឧទាហរណ៍គម្រោងសិស្សវិទ្យាសាស្ត្រទិន្នន័យសម្រាប់ជំរុញអ្នក។
* [កម្មវិធីប្រឡងរដូវក្តៅវិទ្យាសាស្ត្រទិន្នន័យ MSR](https://www.microsoft.com/en-us/research/academic-program/data-science-summer-school/#!projects) ជាមួយ GitHub [គម្រោង](https://github.com/msr-ds3) ស្វែងយល់ប្រធានបទដូចជា:
- [ការវាយឆេះពូជសាសន៍ក្នុងការប្រើអំណាចប៉ូលីស](https://www.microsoft.com/en-us/research/video/data-science-summer-school-2019-replicating-an-empirical-analysis-of-racial-differences-in-police-use-of-force/) | [Github](https://github.com/msr-ds3/stop-question-frisk)
- [ភាពទុកចិត្តនៃប្រព័ន្ធរថភ្លើងក្រោមដី NYC](https://www.microsoft.com/en-us/research/video/data-science-summer-school-2018-exploring-the-reliability-of-the-nyc-subway-system/) | [Github](https://github.com/msr-ds3/nyctransit)
* [ការឌីជីថលវប្បធម៌សម្ភារៈ៖ ស្វែងយល់ពីការចែកចាយសង្គម-សេដ្ឋកិច្ចនៅ Sirkap](https://claremont.maps.arcgis.com/apps/Cascade/index.html?appid=bdf2aef0f45a4674ba41cd373fa23afc) - ពី [Ornella Altunyan](https://twitter.com/ornelladotcom) និងក្រុមនៅ Claremont, ប្រើ [ArcGIS StoryMaps](https://storymaps.arcgis.com/)។
## 🚀 도전
ស្វែងរកអត្ថបទដែលផ្តល់អនុសាសន៍គម្រោងវិទ្យាសាស្ត្រទិន្នន័យដែលសមស្របសម្រាប់អ្នកថ្មី - ដូចជា [៥០ ប្រធានបទទាំងនេះ](https://www.upgrad.com/blog/data-science-project-ideas-topics-beginners/) ឬ [២១ គំនិតគម្រោងទាំងនេះ](https://www.intellspot.com/data-science-project-ideas) ឬ [១៦ គម្រោងនេះជាមួយកូដប្រភព](https://data-flair.training/blogs/data-science-project-ideas/) ដែលអ្នកអាចបំបែក និងសរសេរឡើងវិញបាន។ ហើយកុំភ្លេចប្លុកអំពីដំណើររៀនរបស់អ្នក និងចែករំលែកការយល់ដឹងជាមួយយើងទាំងអស់គ្នា។
## សំណួរបន្ទាប់ពីមេរៀន
## [សំណួរបន្ទាប់ពីមេរៀន](https://ff-quizzes.netlify.app/en/ds/quiz/39)
## ការត្រួតពិនិត្យ & សិក្សាផ្ទាល់ខ្លួន
ចង់ស្វែងយល់បន្ថែមពីករណីប្រើប្រាស់ទេ? នេះគឺជាអត្ថបទពាក់ព័ន្ធមួយចំនួន៖
* [១៧ កម្មវិធី និងឧទាហរណ៍វិទ្យាសាស្ត្រទិន្នន័យ](https://builtin.com/data-science/data-science-applications-examples) - កក្កដា ២០២១
* [១១ កម្មវិធីវិទ្យាសាស្ត្រទិន្នន័យដ៏អស្ចារ្យក្នុងពិភពពិត](https://myblindbird.com/data-science-applications-real-world/) - ឧសភា ២០២១
* [វិទ្យាសាស្ត្រទិន្នន័យនៅក្នុងពិភពពិត](https://towardsdatascience.com/data-science-in-the-real-world/home) - ការប្រមួលអត្ថបទ
* [១២ កម្មវិធីវិទ្យាសាស្ត្រទិន្នន័យពិភពពិតជាមួយឧទាហរណ៍](https://www.scaler.com/blog/data-science-applications/) - ឧទាហរណ៍ ២០២៤
* វិទ្យាសាស្ត្រទិន្នន័យ ក្នុង៖ [ការអប់រំ](https://data-flair.training/blogs/data-science-in-education/), [កសិកម្ម](https://data-flair.training/blogs/data-science-in-agriculture/), [ហិរញ្ញវត្ថុ](https://data-flair.training/blogs/data-science-in-finance/), [ភាពយន្ត](https://data-flair.training/blogs/data-science-at-movies/), [សុខាភិបាល](https://onlinedegrees.sandiego.edu/data-science-health-care/) & ផ្សេងៗទៀត។
## បេសកកម្ម
[ស្វែងយល់ឈុតទិន្នន័យកុំព្យូទ័រផែនដី](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការបដិសេធ**៖
ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលដែលយើងខំប្រឹងរកភាពត្រឹមត្រូវ សូមយល់ឲ្យដឹងថាការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុសឬភាពមិនត្រឹមត្រូវបាន។ ឯកសារដើមនៅភាសាទ្រព្យសម្បត្តិគួរត្រូវបានចាត់ទុកជាតំបន់តែមួយដែលគួរជឿជាក់។ សម្រាប់ព័ត៌មានសំខាន់ៗ សូមណែនាំឲ្យប្រើការបកប្រែដោយមនុស្សដែលមានជំនាញវិជ្ជាជីវៈ។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកស្រាយខុសផ្សេងៗណាមួយដែលកើតមានពីការប្រើប្រាស់ការបកប្រែនេះទេ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,43 @@
# ស្វែងយល់អំពីធនធានទិន្នន័យកុំព្យូទ័រផែនដី
## សេចក្តីណែនាំ
ក្នុងមេរៀននេះ យើងបានពិភាក្សាអំពីដែនកម្មវិធីវិទ្យាសាស្ត្រទិន្នន័យជាច្រើន - ជាមួយការចូលចិត្ដជ្រាលជ្រៅទៅលើគំរូៗដែលទាក់ទងនឹងការស្រាវជ្រាវ ការរស់នៅប្រកបដោយចីរភាព និងមនុស្សវិទ្យាឌីជីថល។ នៅក្នុងភារកិច្ចនេះ អ្នកនឹងធ្វើការស្វែងយល់អំពីមួយក្នុងចំណោមគំរូទាំងនេះយ៉ាងលម្អិត និងអនុវត្តន៍ការសិក្សាជុំវិញការបង្ហាញទិន្នន័យ និងវិភាគ ដើម្បីទាញយកចំណេះដឹងអំពីទិន្នន័យចីរភាព។
គម្រោង [Planetary Computer](https://planetarycomputer.microsoft.com/) មានទិន្នន័យ និង API ដែលអាចចូលដំណើរការបានជាមួយគណនី - សូមស្នើសុំគណនីសម្រាប់ចូលប្រើប្រសិនបើអ្នកចង់សាកល្បងជំហានបុណ្យបន្ថែមក្នុងភារកិច្ចនេះ។ គេហទំព័រនេះក៏ផ្តល់ជូននូវមុខងារ [Explorer](https://planetarycomputer.microsoft.com/explore) ដែលអ្នកអាចប្រើបានដោយគ្មានការបង្កើតគណនី៕
`ជំហានៈ`
ចំណុចចុះបញ្ជី Explorer (បង្ហាញក្នុងរូបថតអេក្រង់ខាងក្រោម) អនុញ្ញាតឲ្យអ្នកជ្រើសរើសធនធានទិន្នន័យមួយ (ពីជម្រើសដែលបានផ្តល់) ជម្រើសសំណួរត្រៀមទុក (ដើម្បីតម្រៀបទិន្នន័យ) និងជម្រើសបង្ហាញ (សម្រាប់បង្កើតការបង្ហាញទិន្នន័យដែលពាក់ព័ន្ធ)។ ក្នុងភារកិច្ចនេះ ដំណើរការរបស់អ្នកគឺដូចតទៅ៖
1. អានឯកសារពី [Explorer documentation](https://planetarycomputer.microsoft.com/docs/overview/explorer/) - យល់ដឹងអំពីជម្រើស។
2. ស្វែងយល់អំពី [Catalog](https://planetarycomputer.microsoft.com/catalog) នៃធនធានទិន្នន័យ - រៀនពីគោលបំណងនៃនីមួយៗ។
3. ប្រើ Explorer - ជ្រើសរើសធនធានទិន្នន័យដែលអ្នកចាប់អារម្មណ៍ ជ្រើសរើសសំណួរត្រូវតាម និងជម្រើសបង្ហាញដែលពាក់ព័ន្ធ។
![The Planetary Computer Explorer](../../../../translated_images/km/planetary-computer-explorer.c1e95a9b053167d6.webp)
`ភារកិច្ចរបស់អ្នក៖`
ឥឡូវនេះសិក្សាការបង្ហាញដែលបានបង្ហាញនៅក្នុងកម្មវិធីរកមើល និងឆ្លើយសំណួរបង្ហាញដូចខាងក្រោម៖
* តើធនធានទិន្នន័យមាន _លក្ខណៈពិសេស_ អ្វីខ្លះ?
* តើការបង្ហាញព័ត៌មានផ្តល់ _មតិយោបល់_ ឬលទ្ធផលអ្វីខ្លះ?
* តើ _ផលប៉ះពាល់_ នៃមតិយោបល់ទាំងនោះដល់គោលបំណងចីរភាពនៃគម្រោងមានអ្វីខ្លះ?
* តើកំណត់ខូច _នៃការបង្ហាញ_ មានអ្វីខ្លះ (ឧ. តើអ្នកមិនទទួលបានមតិយោបល់អ្វី)?
* ប្រសិនបើអ្នកមានទិន្នន័យដើម តើអ្នកនឹងបង្កើតការបង្ហាញបរិច្ឆេទ _ជំនួស_ អ្វីខ្លះ ហើយហេតុអ្វី?
`ពិន្ទុបុណ្យ:`
ដាក់ពាក្យសុំគណនី - ហើយចុះបញ្ជីចូលពេលបានទទួល។
* ប្រើជម្រើស _Launch Hub_ ដើម្បីបើកទិន្នន័យដើមក្នុងកំណត់ត្រា Notebook។
* ស្វែងយល់ទិន្នន័យដោយធ្វើការបន្តអនឡាញ និងអនុវត្តការបង្ហាញបរិច្ឆេទជំនួសដែលអ្នកបានគិត។
* ឥឡូវវិភាគការបង្ហាញទិន្នន័យផ្ទាល់ខ្លួនរបស់អ្នក - តើអ្នកអាចទាញយកចំណេះដឹងដែលមិនបានទទួលមុននេះទេ?
## Rubric
Exemplary | Adequate | Needs Improvement
--- | --- | -- |
បានឆ្លើយសំណួរជាចំនួនប្រាំនៃគោលសំនួរគ្រប់។ សិស្សបានកំណត់យ៉ាងច្បាស់ថាតើការបង្ហាញបច្ចុប្បន្ន និងការបង្ហាញជំនួសអាចផ្តល់ចំណេះដឹងអំពីគោលបំណងឬលទ្ធផលចីរភាព។ | សិស្សបានឆ្លើយយ៉ាងយ៉ាងហោចណាស់ ៣ សំណួរលើប្រាកដរហើត ដោយបង្ហាញពីបទពិសោធន៍ជាក់លាក់ជាមួយ Explorer។ | សិស្សមិនបានឆ្លើយសំណួរច្រើនទេ ឬផ្តល់ព័ត៌មានមិនគ្រប់គ្រាន់ - បង្ហាញថាមិនមានការព្យាយាមយ៉ាងមហិមា សម្រាប់គម្រោង។ |
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការបដិសេធបន្ថែម**៖
ឯកសារនេះត្រូវបានបម្លែងភាសា​ដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលយើងខិតខំរកភាពត្រឹមត្រូវ សូមយល់ព្រមថាការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុសឬការមិនត្រឹមត្រូវ។ ឯកសារដើមក្នុងភាសារបស់ខ្លួន គួរត្រូវបានគេចាត់ទុកថាជា ប្រភពដ្ឋានដែលមានសុពលភាព។ សម្រាប់ព័ត៌មានសំខាន់ៗ ការបកប្រែដោយអ្នកជំនាញមនុស្សគឺត្រូវបានណែនាំ។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកស្រាយខុសៗដែលកើតមានពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,18 @@
# វិទ្យាសាស្ត្រទិន្នន័យក្នុងព្រឹត្តិការណ៍ពិត
ការប្រើប្រាស់វិទ្យាសាស្ត្រទិន្នន័យក្នុងព្រឹត្តិការណ៍ពិតទូទាំងឧស្សាហកម្ម។
### ប្រធានបទ
1. [វិទ្យាសាស្ត្រទិន្នន័យក្នុងពិភពពិត](20-Real-World-Examples/README.md)
### ការកោតសរសើរ
បានសរសេរជាមួយនូវសេចក្តីស្រលាញ់ ❤️ ដោយ [Nitya Narasimhan](https://twitter.com/nitya)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការបដិសេធ**៖
ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលដែលយើងខិតខំដើម្បីទុកចិត្តភាពត្រឹមត្រូវ សូមកត់សម្គាល់ថា ការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុស ឬភាពមិនត្រឹមត្រូវ។ ឯកសារដើមនៅក្នុងភាសាទាំងមូលគួរត្រូវបានចាត់ទុកជាឯកសារចម្លងឯកសារ ក្រុមប្រឹក្សាផ្លូវការមានសិទ្ធិ។ សម្រាប់ព័ត៌មានសំខាន់ៗ ការបកប្រែដោយអ្នកជំនាញជាមនុស្សគឺត្រូវបានផ្តល់អនុសាសន៍។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកស្រាយខុសដែលកើតឡើងពីការប្រើប្រាស់ការបកប្រែនេះ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,365 @@
# AGENTS.md
## ទិដ្ឋភាពគម្រោង
Data Science for Beginners គឺជាកម្មវិធីបណ្តុះបណ្តាលរយៈពេល ១០ សប្តាហ៍ និង ២០ មេរៀន ដែលបានបង្កើតឡើងដោយអ្នកអភិវឌ្ឍន៍ Microsoft Azure Cloud Advocates។ ឃ្លាំងកូដនេះជាធនធានការសិក្សាដែលបង្រៀនគំនិតមូលដ្ឋានវិទ្យាសាស្ត្រទិន្នន័យតាមរយៈមេរៀនផ្អែកលើគម្រោង រួមទាំងសៀវភៅចំណាំ Jupyter, ប្រលងអន្ដរកម្ម និងភារកិច្ចអនុវត្តដោយដៃ។
**បច្ចេកវិទ្យាសំខាន់ៗ៖**
- **សៀវភៅចំណាំ Jupyter**: ប្រព័ន្ធសិក្សាចម្បងដោយប្រើ Python 3
- **បណ្ណាល័យ Python**: pandas, numpy, matplotlib សម្រាប់វិភាគ និងតំណាងទិន្នន័យ
- **Vue.js 2**: កម្មវិធីប្រលង (ថតឌីរ quiz-app)
- **Docsify**: រក្សាទុកគេហទំព័រអត្ថបទអាចប្រើបានក្រៅបណ្តាញ
- **Node.js/npm**: គ្រប់គ្រងកញ្ចប់ផ្នែកកម្មវិធី JavaScript
- **Markdown**: អត្ថបទមេរៀន និងឯកសារ
**រចនាសម្ព័ន្ធ៖**
- ឃ្លាំងកូដសិក្សាបណ្ដាញភាសាច្រើនជាមួយការបញ្ចូលភាសាច្រើន
- រៀបចំជាម៉ូឌុលមេរៀន (១-បើកកម្មវិធី ដល់ ៦-វិទ្យាសាស្ត្រទិន្នន័យក្នុងធម្មជាតិ)
- មេរៀនមួយៗមាន README, សៀវភៅចំណាំ, ភារកិច្ច និងប្រលង
- កម្មវិធី Vue.js ប្រលងឯករাজ្យសម្រាប់វាស់វែងមុននិងក្រោយមេរៀន
- គាំទ្រដំណើរការជាមួយ GitHub Codespaces និង VS Code dev containers
## ពាក្យបញ្ជាសំណុំត្រា
### ការតំឡើងឃ្លាំងកូដ
```bash
# ចម្លងគម្រោងនេះ (ប្រសិនបើមិនបានចម្លងរួច)
git clone https://github.com/microsoft/Data-Science-For-Beginners.git
cd Data-Science-For-Beginners
```
### ការតំឡើងបរិស្ថាន Python
```bash
# បង្កើតបរិស្ថានវើចួអាល់ (ត្រូវបានណែនាំ)
python -m venv venv
source venv/bin/activate # លើ Windows: venv\Scripts\activate
# ធ្វើការដំឡើងបណ្ណាល័យវិទ្យាសាស្ត្រទិន្នន័យទូទៅ (មិនមាន requirements.txt)
pip install jupyter pandas numpy matplotlib seaborn scikit-learn
```
### ការតំឡើងកម្មវិធីប្រលង
```bash
# បញ្ជាទៅកម្មវិធីសំណួរ
cd quiz-app
# តំឡើងផ្នែកផ្គត់ផ្គង់
npm install
# ចាប់ផ្តើមម៉ាស៊ីនមេអភិវឌ្ឍន៍
npm run serve
# សង់សម្រាប់ផលិតកម្ម
npm run build
# ពិនិត្យ និងកែប្រែឯកសារ
npm run lint
```
### ម៉ាស៊ីនបម្រើឯកសារ Docsify
```bash
# តំឡើង Docsify ជាទូទៅ
npm install -g docsify-cli
# បម្រើឯកសារជាផ្ទាល់ក្នុងម៉ាស៊ីន
docsify serve
# ឯកសារនឹងមានស្រាប់នៅ localhost:3000
```
### ការតំឡើងគម្រោងតំណាងទិន្នន័យ
សម្រាប់គម្រោងដូចជា meaningful-visualizations (មេរៀនលេខ ១៣):
```bash
# ធ្វើដំណើរទៅថតស្តាតឬដំណោះស្រាយ
cd 3-Data-Visualization/13-meaningful-visualizations/starter
# តំឡើងការពឹងផ្អែក
npm install
# ចាប់ផ្តើមម៉ាស៊ីនបម្រើអភិវឌ្ឍន៍
npm run serve
# បង្កើតសម្រាប់ផលិតកម្ម
npm run build
# ពិនិត្យឯកសារ
npm run lint
```
## ដំណើរការអភិវឌ្ឍន៍
### ការប្រើប្រាស់សៀវភៅចំណាំ Jupyter
១. ចាប់ផ្តើម Jupyter នៅចំណុចគោលឃ្លាំងកូដ: `jupyter notebook`
២. ទៅកាន់ថតមេរៀនដែលចង់ធ្វើការ
៣. បើកឯកសារ `.ipynb` ដើម្បីអនុវត្តកិច្ចការផ្សេងៗ
៤. សៀវភៅចំណាំមានការពន្យល់និងក្រឡាចត្រង្គកូដដោយខ្លួនឯង
៥. សៀវភៅចំណាំភាគច្រើនប្រើ pandas, numpy និង matplotlib - ត្រូវប្រាកដថាតំឡើងរួច
### រចនាសម្ព័ន្ធមេរៀន
មេរៀនមួយៗទូទៅមាន៖
- `README.md` - អត្ថបទមេរៀនសំខាន់ ទ្រង់ទ្រាយ ទ្រឹស្តី និងឧទាហរណ៍
- `notebook.ipynb` - កិច្ចការអនុវត្តជាមួយ Jupyter notebook
- `assignment.ipynb``assignment.md` - ភារកិច្ចសម្រួល
- ថត `solution/` - សៀវភៅចំណាំនិងកូដដោះស្រាយ
- ថត `images/` - រូបភាពគាំទ្រ
### ការអភិវឌ្ឍកម្មវិធីប្រលង
- កម្មវិធី Vue.js 2 មានប្រព័ន្ធបញ្ចូលកូដបន្ត ដែលអាចកែបានភ្លាមៗពេលអភិវឌ្ឍ
- ប្រលងផ្ទុកនៅក្នុងថត `quiz-app/src/assets/translations/`
- ភាសាផ្សេងៗមានថតបកប្រែផ្ទាល់ខ្លួន (en, fr, es, ល។)
- លេខប្រលងចាប់ពី ០ ដល់ ៣៩ (មាន ៤០ ប្រលងសរុប)
### ការបញ្ចូលការបកប្រែ
- ការបកប្រែស្ថិតនៅក្នុងថត `translations/` នៅក្បែរគោលឃ្លាំងកូដ
- ភាសាផ្សេងគ្នាគឺមានរចនាសម្ព័ន្ធមេរៀនពេញលេញជាs តាមរយៈ English ដែលបានចំលង
- ការបកប្រែធ្វើដោយម៉ាស៊ីនតាម GitHub Actions (co-op-translator.yml)
## ការណែនាំសម្រាប់ធ្វើតេស្ត
### ការធ្វើតេស្តកម្មវិធីប្រលង
```bash
cd quiz-app
# បញ្ជា​លីន​ជ្រើស​រើស
npm run lint
# ពិនិត្យ​ដំណើរការសាងសង់
npm run build
# ការប្រឡងដោយដៃ: ចាប់ផ្តើមម៉ាស៊ីនបម្រើ dev និងផ្ទៀងផ្ទាត់មុខងារប្រលង
npm run serve
```
### ការធ្វើតេស្តសៀវភៅចំណាំ
- គ្មានស៊ុមតេស្តស្វ័យប្រវត្តសម្រាប់សៀវភៅចំណាំទេ
- តេស្តដោយដៃ៖ បើកក្រឡាចត្រង្គគ្រប់ផ្នែក ដើម្បីប្រាកដថាគ្មានកំហុស
- ពិនិត្យឯកសារទិន្នន័យអាចចូលប្រើបាន និងលទ្ធផលបានបង្កើតត្រឹមត្រូវ
- ពិនិត្យការតំណាងទិន្នន័យសមរម្យ
### ការធ្វើតេស្តឯកសារ
```bash
# បញ្ជាក់ថា Docsify បង្ហាញបានត្រឹមត្រូវ
docsify serve
# ពិនិត្យមើលតំណខូចដោយដៃតាមរយៈការស្វែងរកក្នុងមាតិកា
# បញ្ជាក់ថាតំណមេរៀនទាំងអស់ដំណើរការជាលម្អិតក្នុងឯកសារដែលបានបង្ហាញ
```
### ការត្រួតពិនិត្យគុណភាពកូដ
```bash
# គម្រោង Vue.js (កម្មវិធីសំណួរនិងគម្រោង Visualization)
cd quiz-app # ឬថតគម្រោង Visualization
npm run lint
# សៀវភៅកំណត់ត្រា Python - សូមផ្ដល់អនុសាសន៍ការត្រួតពិនិត្យដោយដៃ
# ធានាថាការនាំចូលដំណើរការត្រឹមត្រូវ និងកោសិកាធ្វើការបញ្ចប់ដោយគ្មានកំហុស
```
## ទ្រឹស្តីលីហ្គិសម្រាប់កូដ
### Python (សៀវភៅចំណាំ Jupyter)
- បន្តតាមមាត្រដ្ឋាន PEP 8 សម្រាប់កូដ Python
- ប្រើឈ្មោះអថេរល្អ ឱ្យប្រាប់ពីទិន្នន័យដែលកំពុងវិភាគ
- រួមបញ្ចូលte ផ្នែក markdown ដោយមានការពន្យល់មុនកុងតោងកូដ
- កូដនៅក្នុងក្រឡាចត្រង្គមានមនោសញ្ចេតនាតែមួយ
- ប្រើ pandas សម្រាប់កែប្រែទិន្នន័យ, matplotlib សម្រាប់គំនូស
- រូបមន្តនាំចូលទូទៅ៖
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
```
### JavaScript/Vue.js
- បន្តតាមមគ្គុទេសក៍ Vue.js 2 និងអនុវត្តល្អ
- កំណត់ប្រែ ESLint នៅក្នុង `quiz-app/package.json`
- ប្រើផ្សេង Vue ឯកសារតែមួយ (.vue)
- រក្សារចនាសម្ព័ន្ធមូលដ្ឋានតាមបែបតំបន់
- រត់ `npm run lint` មុនបញ្ចូលកូដ
### ឯកសារអត្ថបទ Markdown
- ប្រើកម្រិតមុខងារច្បាស់ (# ## ###)
- រួមបញ្ចូលកូដនៅក្នុងប្លុកជាមួយនិយមន័យភាសា
- បន្ថែមអត្ថបទជំនួសរូបភាព
- តំណភ្ជាប់ទៅមេរៀន និងធនធានទាក់ទង
- រក្សារវាងបន្ទាត់អាចអានបាន
### ការរៀបចំឯកសារ
- អត្ថបទមេរៀននៅក្នុងថតលេខ (01-defining-data-science ល។)
- ដោះស្រាយនៅក្នុងថត `solution/` ផ្ទាល់ខ្លួន
- បកប្រែតាមរចនាសម្ព័ន្ធ English នៅថត `translations/`
- រក្សា​ឯកសារទិន្នន័យ​នៅ​ក្នុងថត `data/` ឬថតមេរៀន
## ការសាងសង់ និងចែកចាយ
### ការចែកចាយកម្មវិធីប្រលង
```bash
cd quiz-app
# បង្កើតកំណែផលិតកម្ម
npm run build
# លទ្ធផលត្រូវបានរក្សាទុកនៅក្នុងថត dist/
# ការដាក់ឯកសារ dist/ ទៅកាន់ម៉ាស៊ីនផ្ទុកស្ថាបត្យកម្ម (Azure Static Web Apps, Netlify, ល។)
```
### ការចែកចាយក្នុង Azure Static Web Apps
កម្មវិធីប្រលងអាចចែកចាយទៅ Azure Static Web Apps៖
១. បង្កើតធនធាន Azure Static Web App
២. ភ្ជាប់ជាមួយឃ្លាំងកូដ GitHub
៣. រៀបចំការកំណត់សាងសង់៖
- ទីតាំងកម្មវិធី៖ `quiz-app`
- ទីតាំងលទ្ធផល៖ `dist`
៤. GitHub Actions នឹងធ្វើដំណើរចែកចាយដោយស្វ័យប្រវត្តិពេលឈ្នះ push
### គេហទំព័រឯកសារ
```bash
# សាងសង់ PDF ពី Docsify (ជាជម្រើស)
npm run convert
# ឯកសារ Docsify ត្រូវបានបម្រើដោយផ្ទាល់ពីឯកសារ markdown
# មិនត្រូវការជំហានសាងសង់សម្រាប់ការដាក់បង្ហាញ
# ដាក់បង្ហាញឃ្លាំងទៅបណ្តាញផ្តាំថេរជាមួយ Docsify
```
### GitHub Codespaces
- ឃ្លាំងកូដមានការកំណត់ dev container
- Codespaces រៀបចំពីលើ Python និង Node.js ដោយស្វ័យប្រវត្តិ
- បើកឃ្លាំងកូដក្នុង Codespace តាម UI GitHub
- ឯកតា dependencies ទាំងអស់ត្រូវបានដំឡើងដោយស្វ័យប្រវត្តិ
## ទ្រឹស្តីសម្រាប់ដាក់ស្នើ Pull Request
### មុនដាក់ស្នើ
```bash
# សម្រាប់ការផ្លាស់ប្តូរនៅក្នុង Vue.js ក្នុងកម្មវិធីប្រឡង
cd quiz-app
npm run lint
npm run build
# សាកល្បងការផ្លាស់ប្តូរប្រក្បុងក្រោម
npm run serve
```
### ទ្រង់ទ្រាយចំណងជើង PR
- ប្រើចំណងជើងច្បាស់ សង្ខេប
- ទ្រង់ទ្រាយ៖ `[Component] សង្ខេបខ្លី`
- ឧទាហរណ៍ៈ
- `[Lesson 7] ដោះស្រាយកំហុសនាំចូលសៀវភៅ Python`
- `[Quiz App] បន្ថែមការបកប្រែភាសាអាឡឺម៉ង់`
- `[Docs] បរិច្ចាគ README ជាមួយលក្ខណៈជាមុន`
### ការត្រួតពិនិត្យចាំបាច់
- ធ្វើការ Run កូដគ្រប់ខុសត្រូវ
- ប្រាកដថាសៀវភៅចំណាំរត់បានគ្រប់
- រត់កំណត់ Vue.js បានដោយជោគជ័យ
- ពិនិត្យតំណរ ឯកសារ ងាយស្រួលចូលប្រើ
- ប្រាកដថាកម្មវិធីប្រលងបញ្ចូលបញ្ហាឫក្រេប
- អះអាងថាការបកប្រែមានរចនាសម្ព័ន្ធខ្ពស់
### ទ្រឹស្តីចូលរួម
- អនុវត្តលីហ្គិចកូដ និងតម្រូវការគោលបំណង
- បន្ថែមមតិពន្យល់លម្អិតសម្រាប់លក្ខណៈស្មុគស្មាញ
- បន្ថែមឯកសារតម្រូវទាក់ព័ន្ធ
- ពិនិត្យការផ្លាស់ប្តូរនៅមេរៀនផ្សេងៗ
- បរិចារណាឯកសារ CONTRIBUTING.md
## របៀបលម្អិតបន្ថែម
### បណ្ណាល័យដែលប្រើឥតខ្ចោះ
- **pandas**: ការបំលែង និងវិភាគទិន្នន័យ
- **numpy**: គណនាលេខ
- **matplotlib**: ការតំណាងទិន្នន័យ និងគំនូស
- **seaborn**: ការតំណាងទិន្នន័យស្ថិតិ (មេរៀនខ្លះ)
- **scikit-learn**: មេរៀនម៉ាស៊ីនរៀន (កម្រិតខ្ពស់)
### ការប្រើប្រាស់ឯកសារទិន្នន័យ
- ឯកសារទិន្នន័យមាននៅក្នុងថត `data/` ឬថតរបស់មេរៀន
- សៀវភៅចំណាំភាគច្រើនរំពឹងឯកសារទិន្នន័យជាភាពទាក់ទង
- ឯកសារ CSV ជាទ្រង់ទ្រាយទិន្នន័យចម្បង
- មេរៀនខ្លះប្រើ JSON សម្រាប់ឧទាហរណ៍ទិន្នន័យអ្វីដែលមិនស្មើ
### ការគាំទ្រភាសាច្រើន
- បកប្រែជាង ៤០ ភាសាតាមរយៈ GitHub Actions
- ដំណើរការបកប្រែក្នុង `.github/workflows/co-op-translator.yml`
- ឃ្លាំង `translations/` មានកូដភាសា
- បកប្រែប្រលងនៅ `quiz-app/src/assets/translations/`
### ជម្រើសបរិស្ថានអភិវឌ្ឍន៍
១. **អភិវឌ្ឍន៍ក្នុងស្រុក**៖ តំឡើង Python, Jupyter, Node.js នៅក្នុងម៉ាស៊ីន
២. **GitHub Codespaces**៖ បរិស្ថានអភិវឌ្ឍន៍គ្រឿងប្រព័ន្ធម៉ោនពពក
៣. **VS Code Dev Containers**៖ បរិស្ថានអភិវឌ្ឍន៍ក្នុងកុងតឺន័រ
៤. **Binder**៖ បើកសៀវភៅចំណាំក្នុងពពក (បើបានកំណត់)
### ទ្រឹស្តីមេរៀន
- មេរៀនមួយៗឯករាជ្យ ប៉ុន្តែបង្កើតលើគំនិតមុន
- ប្រលងមុនមេរៀនវាស់វែងចំណេះដឹងមុន
- ប្រលងក្រោយមេរៀនពង្រឹងការសិក្សា
- ភារកិច្ចផ្តល់ការអនុវត្ត
- សេចក្ដីសង្ខេបជារូបតំណាង
### ដោះស្រាយបញ្ហាទូទៅ
**បញ្ហា Kernel Jupyter:**
```bash
# ប្រាកដថាម៉ាស៊ីនចំណុចស្នូលត្រូវបានដំឡើងត្រឹមត្រូវ
python -m ipykernel install --user --name=datascience
```
**កំហុស npm Install:**
```bash
# សម្អាតប្រអប់ផ្ទុករបស់ npm ហើយសាកល្បងម្តងទៀត
npm cache clean --force
rm -rf node_modules package-lock.json
npm install
```
**កំហុសនាំចូលក្នុងសៀវភៅចំណាំ:**
- ត្រួតពិនិត្យបណ្ណាល័យទាំងអស់បានដំឡើង
- ពិនិត្យកំណែ Python (Python 3.7+ និយាយល្អ)
- ប្រាកដថាបរិស្ថាន virtual បានបើក
**Docsify មិនផ្ទុក:**
- ប្រាកដថាកំពុងបម្រើពីគោលឃ្លាំងកូដ
- ពិនិត្យឯកសារ `index.html` មាន
- ប្រាកដថាប្រើបណ្តាញត្រឹមត្រូវ (ច្រក 3000)
### ការពិចារណាអំពីប្រសិទ្ធភាព
- ទិន្នន័យធំអាចយឺតក្នុងការផ្ទុកនៅសៀវភៅចំណាំ
- ការតំណាងអាចយឺតសម្រាប់គំនូសស្មុគស្មាញ
- Vue.js dev server កសាងប្រព័ន្ធបញ្ចូលកូដភ្លាមៗ
- ការសាងសង់ផលិតកម្មបានបំពេញល្អ និងកាត់បន្ថយទំហំ
### សម្គាល់សុវត្ថិភាព
- មិនមានទិន្នន័យនីមួយៗឬ លេខសម្ងាត់ បញ្ចូលលើកូដ
- ប្រើអថេរបរិស្ថានសម្រាប់កូនសោ API នៅមេរៀនពពក
- មេរៀន Azure ត្រូវការគណនី Azure
- អាប់ដេត dependencies តែងតែរក្សាសុវត្ថិភាព
## របៀបចូលរួមបកប្រែ
- បកប្រែដោយម៉ាស៊ីនគ្រប់គ្រងតាម GitHub Actions
- ត្រួតពិនិត្យដោយដៃសម្រាប់ភាពត្រឹមត្រូវការបកប្រែ
- បន្តការដាក់ថតបកប្រែដូចបែបតម្លើង
- បន្ថែមតំណភ្ជាប់ប្រលងភាសា: `?loc=fr`
- តេស្តមេរៀនបកប្រែឱ្យបង្ហាញត្រឹមត្រូវ
## ធនធានដែលទាក់ទង
- កម្មវិធីសិក្សាចម្បង: https://aka.ms/datascience-beginners
- សិក្សាជាមួយ Microsoft Learn: https://docs.microsoft.com/learn/
- មជ្ឈមណ្ឌលសិស្ស: https://docs.microsoft.com/learn/student-hub
- វេទិកាចែករំលែកគំនិត: https://github.com/microsoft/Data-Science-For-Beginners/discussions
- កម្មវិធី Microsoft ផ្សេងៗ: ML for Beginners, AI for Beginners, Web Dev for Beginners
## ការថែរក្សាគម្រោង
- ធ្វើអាប់ដេតទៀងទាត់ដើម្បីរក្សាសម័យ
- ស្វាគមន៍ការចូលរួមពីសហគមន៍
- ការតាមដានបញ្ហាក្នុង GitHub
- ពិនិត្យ PR ដោយអ្នកថែរក្សាគម្រោង
- សម្រេចការត្រួតពិនិត្យ និងធ្វើអាប់ដេតប្រចាំខែ
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការបដិសេធ**៖
ឯកសារ​នេះ​ត្រូវ​បាន​ប្រែ​សម្រួល​ដោយប្រើសេវាកម្ម​ប្រែសម្រួល AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេល​យើង​ព្យាយាម​ផ្តល់ភាព​ត្រឹមត្រូវ​ សូម​យល់ដឹង​ថា​ការ​ប្រែសម្រួល​ដោយស្វ័យប្រវត្តិ​អាច​មាន​កំហុស ឬ​ការ​មិន​ត្រឹមត្រូវ។ ឯកសារ​ដើម​នៅ​ក្នុង​ភាសា​ដើម​ត្រូវបាន​គេ​ចាត់ទុក​ជា​ប្រភព​ដែល​មាន​អធិបតីភាព។ សម្រាប់​ព័ត៌មាន​សំខាន់ៗ ការ​ប្រែសម្រួល​ដោយ​មនុស្ស​ដោយ​ជំនាញ​គឺ​ត្រូវ​បាន​អនុម័ត។ យើង​មិន​ទទួល​ខុសត្រូវ​ចំពោះ​ការ​យល់​ព្រួយ ឬ​ការ​បក​ស្រាយ​ខុស ដែល​ដើម​មក​ពី​ការ​ប្រើប្រាស់​ការ​ប្រែសម្រួល​នេះ​ទេ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,16 @@
# កូដអចិន្រ្តៃយ៍កូដដោយប្រាក់របស់ Microsoft
គម្រោងនេះបានទទួលយក [កូដអចិន្រ្តៃយ៍កូដដោយប្រាក់របស់ Microsoft](https://opensource.microsoft.com/codeofconduct/)។
ធនធានៈ:
- [កូដអចិន្រ្តៃយ៍កូដដោយប្រាក់របស់ Microsoft](https://opensource.microsoft.com/codeofconduct/)
- [សំណួរដែលសួរញឹកញាប់អំពីកូដឆ្ងល់ Microsoft](https://opensource.microsoft.com/codeofconduct/faq/)
- ទាក់ទង [opencode@microsoft.com](mailto:opencode@microsoft.com) ប្រសិនបើមានសំណួរឬកង្វល់
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ចំណាក់បញ្ជាក់**៖
ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ទោះយើងខ្ញុំខិតខំរកការត្រឹមត្រូវ ក៏ដោយ សូមចេះព្រមានថាការបកប្រែដោយស្វ័យប្រវត្តិក្នុងខ្លីអាចមានកំហុស ឬការខុសប្លែកខ្លះៗ។ ឯកសារដើមក្នុងភាសាតែមួយគត់គួរត្រូវបានគេចាត់ទុកជាមូលដ្ឋានទិន្ន័យផ្លូវការដែលបញ្ជាក់។ សម្រាប់ព័ត៌មានសំខាន់ៗ និយោជកអ្នកបកប្រែជាមនុស្សវិជ្ជាជីវៈត្រូវបានណែនាំ។ យើងខ្ញុំមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកផ្ទុយណាមួយដែលកើតមានពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,359 @@
# ការរួមចំណែកក្នុង Data Science សម្រាប់អ្នកចាប់ផ្ដើម
សូមអរគុណសម្រាប់ការចាប់អារម្មណ៍របស់អ្នកក្នុងការរួមចំណែកទៅកាន់វគ្គសិក្សា Data Science សម្រាប់អ្នកចាប់ផ្ដើម! យើងសូមស្វាគមន៍ការរួមចំណែកពីសហគមន៍។
## តារាងមាតិកា
- [វិន័យអំពើ](#វិន័យអំពើ)
- [តើខ្ញុំអាចរួមចំណែកបានយ៉ាងដូចម្តេច?](#តើខ្ញុំអាចរួមចំណែកបានយ៉ាងដូចម្តេច)
- [ការចាប់ផ្ដើម](#ការចាប់ផ្ដើម)
- [មគ្គុទេសក៍ការរួមចំណែក](#មគ្គុទេសក៍ការរួមចំណែក)
- [ដំណើរការការស្នើសុំ Pull Request](#ដំណើរការជូនពរ-pull-request)
- [មគ្គុទេសក៍រចនាបថ](#មគ្គុទេសក៍រចនាបថ)
- [សន្ធិសញ្ញាប័ណ្ណអ្នករួមចំណែក](#សន្ធិសញ្ញាប័ណ្ណអ្នករួមចំណែក)
## វិន័យអំពើ
គម្រោងនេះបានអនុម័ត [កូដវិន័យប្រើប្រាស់មូលដ្ឋានមើលដោយ Microsoft](https://opensource.microsoft.com/codeofconduct/)។
សម្រាប់ព័ត៌មានបន្ថែម សូមមើល [សំណួរដែលសួរញឹកញាប់អំពីកូដវិន័យ](https://opensource.microsoft.com/codeofconduct/faq/)
ឬទាក់ទង [opencode@microsoft.com](mailto:opencode@microsoft.com) សម្រាប់សំណួរឬមតិយោបល់បន្ថែម។
## តើខ្ញុំអាចរួមចំណែកបានយ៉ាងដូចម្តេច?
### ការរាយការណ៍បញ្ហា
មុនបង្កើតរបាយការណ៍កំហុស សូមពិនិត្យមើលបញ្ហាជាប់ទាក់ទងដែលមានស្រាប់ដើម្បីជៀសវាងការបំលែងដង។ ពេលអ្នកបង្កើតរបាយការណ៍កំហុស សូមបញ្ចូលព័ត៌មានលម្អិតច្រើនបំផុតដែលអាចធ្វើទៅបាន៖
- **ប្រើចំណងជើងច្បាស់លាស់ និងពិពណ៌នាបញ្ជាក់**
- **ពិពណ៌នាជំហានច្បាស់លាស់ដើម្បីធ្វើឲ្យបញ្ហាឡើងវិញ**
- **ផ្តល់ឧទាហរណ៍ច្បាស់លាស់** (កូដនិងរូបភាពបង្ហាញ)
- **ពិពណ៌នាពីអាកប្បកិរិយាដែលអ្នកបានសង្កេត និងអ្វីដែលអ្នករំពឹងទុក**
- **បញ្ចូលព័ត៌មានបរិបទរបស់អ្នក** (ប្រព័ន្ធប្រតិបត្តិការ, កំណែ Python, កម្មវិធីរុករក)
### ផ្តល់យោបល់បន្ថែម
យោបល់បន្ថែមសូមស្វាគមន៍! ពេលផ្តល់យោបល់:
- **ប្រើចំណងជើងច្បាស់លាស់ និងពិពណ៌នាបញ្ជាក់**
- **ផ្តល់ពិពណ៌នាពីការកែលម្អដែលអ្នកស្នើសុំ**
- **ពន្យល់មូលហេតុដែលការកែប្រែនេះមានប្រយោជន៍**
- **រាយបញ្ជីលក្ខណៈសម្បត្តិដូចគ្នានៅក្នុងគម្រោងផ្សេងទៀត ប្រសិនបើមាន**
### រួមចំណែកក្នុងឯកសារយោង
ការកែលម្អឯកសារយោងគឺតែងតែទទួលស្គាល់:
- **ជួសជុលកំហុសអក្ខរកម្ម និងវេយ្យាករណ៍**
- **ធ្វើឲ្យការពន្យល់មានភាពច្បាស់ផងដែរ**
- **បន្ថែមឯកសារយោងដែលខ្វះ**
- **ធ្វើឲ្យព័ត៌មានអាប់ដេតឲ្យទាន់សម័យ**
- **បន្ថែមឧទាហរណ៍ ឬករណីប្រើប្រាស់**
### រួមចំណែកក្នុងកូដ
យើងសូមស្វាគមន៍ការរួមចំណែកកូដរួមមាន៖
- **មេរៀន ឬលំហាត់ថ្មីៗ**
- **ជួសជុលកំហុស**
- **កែលម្អសៀវភៅតំណភ្ជាប់ដែលមានស្រាប់**
- **ដាតាដុំ ឬឧទាហរណ៍ថ្មីៗ**
- **កែលម្អកម្មវិធីសំណួរ**
## ការចាប់ផ្ដើម
### ការត្រូវមានមុន
មុនរួមចំណែក សូមធ្វើការ:
1. មានគណនី GitHub
2. តំឡើង Git នៅលើប្រព័ន្ធរបស់អ្នក
3. តំឡើង Python 3.7+ និង Jupyter
4. តំឡើង Node.js និង npm (សម្រាប់ការរួមចំណែកកម្មវិធីសំណួរ)
5. របស់ភ្ជាប់ជាមួយរចនាសម្ព័ន្ធវគ្គសិក្សា
មើល [INSTALLATION.md](INSTALLATION.md) សម្រាប់ការណែនាំបំផុត។
### Fork និង Clone
1. **Fork ឃ្លាំងទិន្នន័យ** នៅលើ GitHub
2. **Clone Fork របស់អ្នក មកលើកុំព្យូទ័រ**
```bash
git clone https://github.com/YOUR-USERNAME/Data-Science-For-Beginners.git
cd Data-Science-For-Beginners
```
3. **បន្ថែម upstream remote**៖
```bash
git remote add upstream https://github.com/microsoft/Data-Science-For-Beginners.git
```
### បង្កើតសាខាថ្មី
បង្កើតសាខាថ្មីសម្រាប់ការងាររបស់អ្នក៖
```bash
git checkout -b feature/your-feature-name
# ឬ
git checkout -b fix/your-bug-fix
```
បទបញ្ជាសម្រាប់ឈ្មោះសាខា៖
- `feature/` - លក្ខណៈសម្បត្តិ ឬមេរៀនថ្មី
- `fix/` - ជួសជុលកំហុស
- `docs/` - ការផ្លាស់ប្តូរឯកសារ
- `refactor/` - ការផ្លាស់ប្តូរកូដ
## មគ្គុទេសក៍ការរួមចំណែក
### សម្រាប់មាតិកាមេរៀន
ពេលរួមចំណែកឬកែលម្អមេរៀនដែលមានស្រាប់៖
1. **អនុវត្តរចនាសម្ព័ន្ធដែលមានស្រាប់**៖
- README.md ជាមួយមាតិកាមេរៀន
- សៀវភៅ Jupyter ជាមួយលំហាត់
- ការបែងចែក (បើមាន)
- តំណភ្ជាប់ទៅការសាកល្បងមុន និងក្រោយ
2. **រួមបញ្ចូលធាតុទាំងនេះ**៖
- គោលបំណងរៀនដែលច្បាស់
- ពិពណ៌នាដំណាក់កាលជាដំណាក់កាល
- ឧទាហរណ៍កូដជាសេចក្ដីយល់ឃើញ
- លំហាត់សម្រាប់អនុវត្ត
- តំណភ្ជាប់ទៅធនធានបន្ថែម
3. **ធានាការចូលដំណើរការ**៖
- ប្រើភាសាដែលធម្មតា និងច្បាស់
- បញ្ចូលអត្ថបទ alt សម្រាប់រូបភាព
- រួមបញ្ចូលចំណាំកូដ
- អនុវត្តចំពោះលក្ខណៈរៀនដ៏ខុសគ្នា
### សម្រាប់សៀវភៅ Jupyter
1. **សម្អាតចេញពីលទ្ធផលទាំងអស់ មុនពេលប្តូរ**៖
```bash
jupyter nbconvert --clear-output --inplace notebook.ipynb
```
2. **រួមបញ្ចូលផ្នែក markdown ជាមួយពិពណ៌នា**
3. **ប្រើរចនាបថស៊ីជម្រៅកំណត់**៖
```python
# នាំចូលបណ្ណាល័យនៅខាងលើ
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# ប្រើឈ្មោះអថេរដែលមានន័យ
# បន្ថែមកំណត់ចំណាំសម្រាប់ប្រតិបត្តិការដ៏ពិបាក
# តាមដានមីស្តង់រចនាបថ PEP 8
```
4. **សាកល្បងសៀវភៅរបស់អ្នកយ៉ាងពេញលេញ មុនពេលដាក់ស្នើ**
### សម្រាប់កូដ Python
អនុវត្តតាមមគ្គុទេសក៍រចនាបថ [PEP 8](https://www.python.org/dev/peps/pep-0008/)៖
```python
# ប៉ាត់ប៉ូលល្អ
import pandas as pd
def calculate_mean(data):
"""Calculate the mean of a dataset.
Args:
data (list): List of numerical values
Returns:
float: Mean of the dataset
"""
return sum(data) / len(data)
```
### សម្រាប់ការរួមចំណែកកម្មវិធីសំណួរ
ពេលកែលម្អកម្មវិធីសំណួរ៖
1. **សាកល្បងបណ្ដាច់មូលដ្ឋាន**៖
```bash
cd quiz-app
npm install
npm run serve
```
2. **បើកដំណើរការ linter**៖
```bash
npm run lint
```
3. **សាងសង់ដោយជោគជ័យ**៖
```bash
npm run build
```
4. **អនុវត្តមាគ៌ារចនាបថ Vue.js និងគំរូដែលមានស្រាប់**
### សម្រាប់ការបកប្រែ
ពេលបន្ថែម ឬកែលម្អការបកប្រែ៖
1. អនុវត្តរចនាសម្ព័ន្ធក្នុងថត `translations/`
2. ប្រើកូដភាសាជាឈ្មោះថត (ឧ. `fr` សម្រាប់ភាសាបារាំង)
3. រក្សារចនាសម្ព័ន្ធឯកសារដូចជាភាសាអង់គ្លេស
4. បច្ចុប្បន្នភាពតំណភ្ជាប់ជាមួយប៉ារ៉ាម៉ែត្រភាសា៖ `?loc=fr`
5. សាកល្បងតំណទាំងអស់ និងរចនាបថ
## ដំណើរការជូនពរ Pull Request
### មុនបញ្ជូន
1. **ធ្វើឲ្យសាខារបស់អ្នកទាន់សម័យជាមួយការផ្លាស់ប្តូរទំនើបបំផុត**៖
```bash
git fetch upstream
git rebase upstream/main
```
2. **សាកល្បងការផ្លាស់ប្តូររបស់អ្នក**៖
- បើកទស្សនាវិជ្ជាបានបង្កើតបានទាំងឡាយ
- សាកល្បងកម្មវិធីសំណួរចំពោះការកែប្រែ
- ផ្ទៀងផ្ទាត់តំណទាំងអស់
- ពិនិត្យកំហុសសរសេរពាក្យ និងវេយ្យាករណ៍
3. **Commit ការផ្លាស់ប្តូររបស់អ្នក**
```bash
git add .
git commit -m "Brief description of changes"
```
សរសេរពាក្យ commit ឲ្យច្បាស់៖
- ប្រើសព្ទវេលាបច្ចុប្បន្ន ("Add feature" មិនមែន "Added feature")
- ប្រើបំពានបរិបទ ("Move cursor to..." មិនមែន "Moves cursor to...")
- កំណត់បន្ទាត់ទីមួយមិនឲ្យលើស 72 តួអក្សរ
- ឧបករណ៍បញ្ហា និង pull requests ដែលពាក់ព័ន្ធ
4. **បញ្ចូនទៅ fork របស់អ្នក**៖
```bash
git push origin feature/your-feature-name
```
### ការបង្កើត Pull Request
1. ទៅកាន់ [repository](https://github.com/microsoft/Data-Science-For-Beginners)
2. ចុច "Pull requests" → "New pull request"
3. ចុច "compare across forks"
4. ជ្រើស fork និងសាខារបស់អ្នក
5. ចុច "Create pull request"
### ទ្រង់ទ្រាយចំណងជើង PR
ប្រើចំណងជើងច្បាស់លាស់ តាមទ្រង់ទ្រាយដូចខាងក្រោម៖
```
[Component] Brief description
```
ឧទាហរណ៍៖
- `[Lesson 7] ជួសជុលកំហុសនាំចូលសៀវភៅ Python`
- `[Quiz App] បន្ថែមការបកប្រែ ភាសាអាល្លឺម៉ង់`
- `[Docs] ថ្មីសម័យ README ជាមួយការទាមទារថ្មីៗ`
- `[Fix] កែប្រែផ្លូវទិន្នន័យនៅ មេរៀនបង្ហាញទិន្នន័យ`
### ការពិពណ៌នាប្រកាស PR
រួមបញ្ចូលក្នុងការពិពណ៌នាប្រកាស PR របស់អ្នក៖
- **អ្វី**៖ តើអ្នកបានផ្លាស់ប្តូរអ្វី?
- **ហេតុអ្វី**៖ ហេតុអ្វីការផ្លាស់ប្តូរនេះចាំបាច់?
- **របៀប**៖ តើធ្វើការផ្លាស់ប្តូរយ៉ាងដូចម្តេច?
- **ការសាកល្បង**៖ តើអ្នកបានសាកល្បងការផ្លាស់ប្តូរដូចម្តេច?
- **រូបថតអេក្រង់**៖ បញ្ចូលរូបថតអេក្រង់សម្រាប់ការផ្លាស់ប្តូរក្នុងចក្ខុវិស័យ
- **បញ្ហាដែលពាក់ព័ន្ធ**៖ តំណបញ្ហាដែលពាក់ព័ន្ធ (ឧ. "Fixes #123")
### ដំណើរការត្រួតពិនិត្យ
1. **ការត្រួតពិនិត្យស្វ័យប្រវត្តិ** នឹងដំណើរការលេី PR របស់អ្នក
2. **អ្នកថែទាំនឹងពិនិត្យការរួមចំណែករបស់អ្នក**
3. **ដោះស្រាយមតិយោបល់** ដោយបង្កើត commit បន្ថែម
4. ពេលទទួលស្គាល់ ហើយអ្នកថែទាំនឹងបញ្ចូល PR របស់អ្នក
### បន្ទាប់ពី PR របស់អ្នកត្រូវបានបញ្ចូល
1. លុបសាខាររបស់អ្នក៖
```bash
git branch -d feature/your-feature-name
git push origin --delete feature/your-feature-name
```
2. ផ្ទុះសាខា fork របស់អ្នក៖
```bash
git checkout main
git pull upstream main
git push origin main
```
## មគ្គុទេសក៍រចនាបថ
### Markdown
- ប្រើកម្រិតជំពូកយ៉ាងរឹងមាំ
- រក្សាបន្ទាត់ទទេ រវាងផ្នែក
- ប្រើទ្រង់ទ្រាយកូដជាមួយនៃភាសាបញ្ជាក់៖
````markdown
```python
import pandas as pd
```
````
- បន្ថែមអត្ថបទ alt ទៅរូបភាព៖ `![Alt text](../../translated_images/km/image.4ee84a82b5e4c9e6.webp)`
- រក្សាប្រវែងបន្ទាត់សមរម្យ (ប្រហែល ៨០-១០០ តួអក្សរ)
### Python
- អនុវត្តមគ្គុទេសក៍រចនាបថ PEP 8
- ប្រើឈ្មោះផ្ទុកមានន័យ
- បន្ថែម docstrings ទៅមុខងារ
- រួមបញ្ចូលសញ្ញាប្រភេទពេលដែលសមស្រប៖
```python
def process_data(df: pd.DataFrame) -> pd.DataFrame:
"""Process the input dataframe."""
return df
```
### JavaScript/Vue.js
- អនុវត្តមគ្គុទេសក៍រចនាបថ Vue.js 2
- ប្រើការកំណត់ ESLint ដែលបានផ្តល់
- សរសេរតំបន់មេធ្វើបានច្រើន និងអាចប្រើឡើងវិញ
- បន្ថែមចំណាំសម្រាប់តុល្យភាពស្មុគស្មាញ
### ការរៀបចំឯកសារ
- រក្សាឯកសារដែលពាក់ព័ន្ធជាក្រុម
- ប្រើឈ្មោះឯកសារដែលពិពណ៌នា
- អនុវត្តរចនាសម្ព័ន្ធថតដែលមានស្រាប់
- អត់ commit ឯកសារដែលមិនចាំបាច់ (.DS_Store, .pyc, node_modules, ល។)
## សន្ធិសញ្ញាប័ណ្ណអ្នករួមចំណែក
គម្រោងនេះស្វាគមន៍ការរួមចំណែក និងយោបល់។ ការរួមចំណែកច្រើនត្រូវការអ្នកព្រមព្រៀងទៅលើ សន្ធិសញ្ញាប័ណ្ណអ្នករួមចំណែក (CLA) ដែលថ្លែងថាអ្នកមានសិទ្ធ និងពិតជាផ្តាច់សិទ្ធិឲ្យយើងប្រើប្រាស់ការរួមចំណែករបស់អ្នក។ សម្រាប់ព័ត៌មានលម្អិត ចូលទៅ https://cla.microsoft.com។
ពេលអ្នកបញ្ជូន pull request មួយ CLA-bot នឹងកំណត់ដោយស្វ័យប្រវត្តិថាតើអ្នកត្រូវការផ្តល់ CLA ឬអត់ និងតភ្ជាប់ស្លាកត្រឹមត្រូវ (ឧ. ស្លាក, មតិ)។ សូមអនុវត្តតាមការណែនាំដែលបានផ្ដល់ដោយ bot។ អ្នកត្រូវតែធ្វើម្ដងតែតែមួយគត់ សម្រាប់គ្រប់ឃ្លាំងដែលប្រើ CLA របស់យើង។
## មានសំណួរទៀត?
- ពិនិត្យមើល [ឆានែល Discord #data-science-for-beginners](https://aka.ms/ds4beginners/discord)
- ចូលរួមសហគមន៍ Discord របស់យើង៖ https://aka.ms/ds4beginners/discord
- ពិនិត្យមើលបញ្ហា​ដែលមានស្រាប់ និង pull requests ៖ https://github.com/microsoft/Data-Science-For-Beginners/issues និង https://github.com/microsoft/Data-Science-For-Beginners/pulls
## អរគុណ!
ការរួមចំណែករបស់អ្នកធ្វើឲ្យវគ្គសិក្សានេះកាន់តែល្អសម្រាប់មនុស្សគ្រប់រូប។ សូមអរគុណដែលបានចំណាយពេលក្នុងការរួមចំណែក!
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការបដិសេធ**:
ឯកសារនេះត្រូវបានបម្រើប្រាស់ដោយសេវាកម្មបកប្រែ AI ដែលមានឈ្មោះ [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលដែលយើងខិតខំប្រឹងប្រែងដើម្បីភាពត្រឹមត្រូវ សូមយល់ដឹងថាការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុស ឬភាពមិនត្រឹមត្រូវមួយចំនួន។ ឯកសារដើមក្នុងភាសាមាតុភូមិគួរត្រូវបានយកទៅជាប្រភពចម្បង។ សម្រាប់ព័ត៌មានសំខាន់ៗ, គ្រាន់តែបកប្រែដោយអ្នកជំនាញមនុស្សត្រូវបានផ្តល់អនុសាសន៍។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំណាស់ ឬការបកប្រែខុសពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,254 @@
# កម្មវិធីដំឡើង
មគ្គុទេសក៍នេះនឹងជួយអ្នកដំឡើងបរិបទសម្រាប់ធ្វើការជាមួយមេរៀន Data Science សម្រាប់អ្នកចាប់ផ្ដើម។
## តារាងមាតិកា
- [លក្ខខណ្ឌដំបូង](#លក្ខខណ្ឌដំបូង)
- [ជម្រើសចាប់ផ្ដើមយ៉ាងលឿន](#ជម្រើសចាប់ផ្ដើមយ៉ាងលឿន)
- [ការដំឡើងក្នុងផ្ទៃ](#ការដំឡើងក្នុងផ្ទៃ)
- [ពិនិត្យការដំឡើងរបស់អ្នក](#ពិនិត្យការដំឡើងរបស់អ្នក)
## លក្ខខណ្ឌដំបូង
មុនពេលអ្នកចាប់ផ្ដើម អ្នកគួរតែមាន៖
- ការជ្រាបខ្លះអំពីបន្ទាត់បញ្ជា/ទំរង់បញ្ជា
- គណនី GitHub (ឥតគិតថ្លៃ)
- ការតភ្ជាប់អ៊ីនធឺណិតមានស្ថិរភាពសម្រាប់ការដំឡើងដំបូង
## ជម្រើសចាប់ផ្ដើមយ៉ាងលឿន
### ជម្រើស 1: GitHub Codespaces (ផ្ញើសម្រាប់អ្នកចាប់ផ្ដើម)
វិធីងាយស្រួលបំផុតក្នុងការចាប់ផ្ដើមគឺប្រើ GitHub Codespaces ដែលផ្ដល់បរិយាកាសអភិវឌ្ឍន៍ពេញលេញនៅក្នុងកម្មវិធីរុករករបស់អ្នក។
1. ទៅកាន់ [repository](https://github.com/microsoft/Data-Science-For-Beginners)
2. ចុចម៉ឺនុយបាញ់ចុច **Code**
3. ជ្រើសរើសផ្ទាំង **Codespaces**
4. ចុច **Create codespace on main**
5. រង់ចាំបរិយាកាសឱ្យចាប់ផ្ដើម (2-3 នាទី)
បរិយាកាសរបស់អ្នកបានរួចរាល់ជាមួយគ្រឿងចម្អិនទាំងអស់ដែលបានដំឡើងមុនហើយ!
### ជម្រើស 2: ការអភិវឌ្ឍក្នុងផ្ទៃ
សម្រាប់ធ្វើការដោយកុំព្យូទ័រផ្ទាល់ខ្លួន សូមអនុវត្តការណែនាំលម្អិតខាងក្រោម។
## ការដំឡើងក្នុងផ្ទៃ
### ជំហាន 1: ដំឡើង Git
Git ត្រូវការដើម្បីបម្លែង repository និងតាមដានការផ្លាស់ប្តូររបស់អ្នក។
**Windows:**
- ទាញយកពី [git-scm.com](https://git-scm.com/download/win)
- ប្រតិបត្តិកម្មវិធីដំឡើងដោយប្រើការកំណត់លំនាំដើម
**macOS:**
- ដំឡើងតាមរយៈ Homebrew: `brew install git`
- ឬទាញយកពី [git-scm.com](https://git-scm.com/download/mac)
**Linux:**
```bash
# Debian/Ubuntu
sudo apt-get update
sudo apt-get install git
# Fedora
sudo dnf install git
# Arch
sudo pacman -S git
```
### ជំហាន 2: បម្លែង Repository
```bash
# ចម្លងហាងទំនិញ
git clone https://github.com/microsoft/Data-Science-For-Beginners.git
# ទៅកាន់ថតឯកសារ
cd Data-Science-For-Beginners
```
### ជំហាន 3: ដំឡើង Python និង Jupyter
Python 3.7 ឬខ្ពស់ជាងនេះ ត្រូវការសម្រាប់មេរៀនវិទ្យាសាស្ត្រទិន្នន័យ។
**Windows:**
1. ទាញយក Python ពី [python.org](https://www.python.org/downloads/)
2. ក្នុងអំឡុងដំឡើង សូមពិនិត្យ "Add Python to PATH"
3. ពិនិត្យការដំឡើង:
```bash
python --version
```
**macOS:**
```bash
# ការប្រើប្រាស់ Homebrew
brew install python3
# បញ្ជាក់ការដំឡើង
python3 --version
```
**Linux:**
```bash
# បំពាក់ Python រួចជាលំនាំនៅក្នុងច្រើនចេញផ្សាយលីនុចទាំងអស់
python3 --version
# ប្រសិនបើមិនបានដំឡើង៖
# Debian/Ubuntu
sudo apt-get install python3 python3-pip
# Fedora
sudo dnf install python3 python3-pip
```
### ជំហាន 4: កំណត់បរិយាកាស Python
ផ្ដល់អធិប្បាយឲ្យប្រើបរិយាកាសវិនិយោគផ្ទាល់ខ្លួនដើម្បីរក្សាគ្រឿងចម្អិនឲ្យឡែកពីគ្នា។
```bash
# បង្កើតបរិយាកាសវត្ថុតំណាង
python -m venv venv
# បើកបរិយាកាសវត្ថុតំណាង
# នៅលើ Windows:
venv\Scripts\activate
# នៅលើ macOS/Linux:
source venv/bin/activate
```
### ជំហាន 5: ដំឡើងកញ្ចប់ Python
ដំឡើងបណ្ណាល័យទិន្នន័យដែលត្រូវការ៖
```bash
pip install jupyter pandas numpy matplotlib seaborn scikit-learn
```
### ជំហាន 6: ដំឡើង Node.js និង npm (សម្រាប់កម្មវិធី Quiz)
កម្មវិធីសំនួរឡើងចាំបាច់ត្រូវការដំឡើង Node.js និង npm។
**Windows/macOS:**
- ទាញយកពី [nodejs.org](https://nodejs.org/) (ជ្រើសរើស LTS សម្រាប់អ្នកចាប់ផ្ដើម)
- ប្រតិបត្តិកម្មវិធីដំឡើង
**Linux:**
```bash
# Debian/Ubuntu
# ការព្រមាន៖ ការធ្វើបាញ់ script ពីអ៊ីនធើណិតចូលនៅក្នុង bash ប្លែកៗអាចមានហានិភ័យសុវត្ថិភាព។
# គួរតែពិនិត្យ script មុននឹងដំណើរការ៖
# curl -fsSL https://deb.nodesource.com/setup_lts.x -o setup_lts.x
# less setup_lts.x
# បន្ទាប់មករត់៖
# sudo -E bash setup_lts.x
#
# ជាជម្រើសមួយ អ្នកអាចប្រើបន្ទាត់តែមួយខាងក្រោមដោយហានិភ័យផ្ទាល់ខ្លួន៖
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt-get install -y nodejs
# Fedora
sudo dnf install nodejs
# បញ្ជាក់ការដំឡើង
node --version
npm --version
```
### ជំហាន 7: ដំឡើងចំណាំផ្នែក Quiz App
```bash
# ទៅកាន់ថតកម្មវិធីវាយបញ្ចូល
cd quiz-app
# ដំឡើងឧបករណ៍បន្ទាប់
npm install
# ត្រឡប់ទៅថតឫស
cd ..
```
### ជំហាន 8: ដំឡើង Docsify (ទៅលើវិធីបំពាះ)
សម្រាប់ចូលប្រើឯកសារបានក្រៅបណ្តាញ៖
```bash
npm install -g docsify-cli
```
## ពិនិត្យការដំឡើងរបស់អ្នក
### សាកល្បង Python និង Jupyter
```bash
# បើកបរិស្ថានវេររ៉ូរបស់អ្នក ប្រសិនបើមិនទាន់បើក
# នៅលើ Windows:
venv\Scripts\activate
# នៅលើ macOS/Linux:
source venv/bin/activate
# ចាប់ផ្តើម Jupyter Notebook
jupyter notebook
```
កម្មវិធីរុករករបស់អ្នកគួរតែបើកនូវចំណុចចូល Jupyter។ អ្នកអាចរុករកទៅឯកសារ `.ipynb` នៃម៉ូដែលណាមួយ។
### សាកល្បងកម្មវិធី Quiz
```bash
# បើកទៅកម្មវិធីសំណួរ
cd quiz-app
# ចាប់ផ្តើមម៉ាស៊ីនមេអភិវឌ្ឍន៍
npm run serve
```
កម្មវិធី Quiz គ្រាន់តែមាននៅ `http://localhost:8080` (ឬថែមទៀតដោយច្រកផ្សេងប្រសិនបើ 8080 ត្រូវបានប្រើប្រាស់)។
### សាកល្បងម៉ាស៊ីនបម្រើឯកសារ
```bash
# ចាប់ពីថតដើមនៃឃ្លាំងកូដ
docsify serve
```
ឯកសារគួរតែអាចប្រើបាននៅ `http://localhost:3000`
## ប្រើ VS Code Dev Containers
ប្រសិនបើអ្នកមានការដំឡើង Docker អ្នកអាចប្រើ VS Code Dev Containers ដូចខាងក្រោម៖
1. ដំឡើង [Docker Desktop](https://www.docker.com/products/docker-desktop)
2. ដំឡើង [Visual Studio Code](https://code.visualstudio.com/)
3. ដំឡើងកម្មវិធីបន្ថែម [Remote - Containers extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers)
4. បើក repository ក្នុង VS Code
5. ចុច `F1` ហើយជ្រើស "Remote-Containers: Reopen in Container"
6. រង់ចាំឲ្យកម្មវិធីកោនតឺន័របង្កើតចប់ (គ្រាន់តែដំណើរការក្នុងលើកដំបូងប៉ុណ្ណោះ)
## ជំហានបន្ទាប់
- ស្វែងយល់ពី [README.md](README.md) សម្រាប់មើលទិដ្ឋភាពទូទៅរបស់មេរៀន
- អាន [USAGE.md](USAGE.md) សម្រាប់ច្បាប់ប្រើប្រាស់ទូទៅ និងឧទាហរណ៍
- ពិនិត្យ [TROUBLESHOOTING.md](TROUBLESHOOTING.md) ប្រសិនបើអ្នកជួបបញ្ហា
- សំរាប់តំរូវចង់ចូលរួម អាន [CONTRIBUTING.md](CONTRIBUTING.md)
## ស្វែងរកជំនួយ
ប្រសិនបើអ្នកជួបបញ្ហា៖
1. ពិនិត្យមើលមគ្គុទេសក៍ [TROUBLESHOOTING.md](TROUBLESHOOTING.md)
2. ស្វែងរកបញ្ហាមានស្រាប់នៅ [GitHub Issues](https://github.com/microsoft/Data-Science-For-Beginners/issues)
3. ចូលរួមក្នុងសហគមន៍ [Discord](https://aka.ms/ds4beginners/discord)
4. បង្កើតបញ្ហាថ្មីដោយមានព័ត៌មានលម្អិតអំពីបញ្ហារបស់អ្នក
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការបដិសេធ**៖
ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលដែលយើងខិតខំរកភាពត្រឹមត្រូវ សូមយល់ថាការបកប្រែដោយស្វ័យប្រវត្តិក្នុងខ្លះអាចមានកំហុស ឬការខ្វះត្រូវបានខ្លះ។ ឯកសារដើមក្នុងភាសាដើមគួរត្រូវបានគេសម្លឹងជារុក្ខជាតិឯកសារដ៏មានសុពលភាព។ សម្រាប់ព័ត៌មានសំខាន់ៗ ការបកប្រែនៅដោយមនុស្សជំនាញគឺត្រូវបានផ្ដល់អនុសាសន៍។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកប្រែបញ្ហាដែលកើតឡើងពីការប្រើប្រាស់ការបកប្រែនេះទេ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,263 @@
# វិទ្យាសាស្ត្រទិន្នន័យ​សម្រាប់អ្នកចាប់ផ្ដើម - មាតិកាកម្មវិធី​សិក្សា
[![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://github.com/codespaces/new?hide_repo_select=true&ref=main&repo=344191198)
[![GitHub license](https://img.shields.io/github/license/microsoft/Data-Science-For-Beginners.svg)](https://github.com/microsoft/Data-Science-For-Beginners/blob/master/LICENSE)
[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/Data-Science-For-Beginners.svg)](https://GitHub.com/microsoft/Data-Science-For-Beginners/graphs/contributors/)
[![GitHub issues](https://img.shields.io/github/issues/microsoft/Data-Science-For-Beginners.svg)](https://GitHub.com/microsoft/Data-Science-For-Beginners/issues/)
[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/Data-Science-For-Beginners.svg)](https://GitHub.com/microsoft/Data-Science-For-Beginners/pulls/)
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)
[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/Data-Science-For-Beginners.svg?style=social&label=Watch)](https://GitHub.com/microsoft/Data-Science-For-Beginners/watchers/)
[![GitHub forks](https://img.shields.io/github/forks/microsoft/Data-Science-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/Data-Science-For-Beginners/network/)
[![GitHub stars](https://img.shields.io/github/stars/microsoft/Data-Science-For-Beginners.svg?style=social&label=Star)](https://GitHub.com/microsoft/Data-Science-For-Beginners/stargazers/)
[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG)
[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum)
ក្រុម Azure Cloud Advocates នៅ Microsoft មានសេចក្តីរីករាយផ្តល់ជូនមាតិកាកម្មវិធីសិក្សា ១០ សប្តាហ៍ ២០ មេរៀន ដែលទាក់ទងទៅនឹងវិទ្យាសាស្ត្រទិន្នន័យ។ មេរៀននីមួយៗមានការប្រលងមុននិងក្រោយមេរៀន, សេចក្តីណែនាំសរសេរដើម្បីបញ្ចប់មេរៀន, ដំណោះស្រាយ និងការប្រលងភារកិច្ច។ វិធីសាស្ត្របង្ហាត់បង្ហាញដោយផ្អែកលើគម្រោងរបស់យើងអាចអនុញ្ញាតឱ្យអ្នករៀនក្នុងពេលកំពុងស្ថាបនារឿងមួយ ដែលជាវិធីដែលបានបញ្ជាក់ថាជួយអោយជំនាញថ្មីធន់ទ្រាំបានល្អ។
**សូមអរគុណយ៉ាងជ្រាលជ្រៅចំពោះអ្នកនិពន្ធរបស់យើង:** [Jasmine Greenaway](https://www.twitter.com/paladique), [Dmitry Soshnikov](http://soshnikov.com), [Nitya Narasimhan](https://twitter.com/nitya), [Jalen McGee](https://twitter.com/JalenMcG), [Jen Looper](https://twitter.com/jenlooper), [Maud Levy](https://twitter.com/maudstweets), [Tiffany Souterre](https://twitter.com/TiffanySouterre), [Christopher Harrison](https://www.twitter.com/geektrainer)។
**🙏 អរគុណពិសេស 🙏 ចំពោះអ្នកនិពន្ធ, អ្នកពិនិត្យ និងអ្នកចូលរួមក្នុងមាតិកា ជាសមាជិក [Microsoft Student Ambassador](https://studentambassadors.microsoft.com/),** ជាលក្ខណៈពិសេសរួមមាន Aaryan Arora, [Aditya Garg](https://github.com/AdityaGarg00), [Alondra Sanchez](https://www.linkedin.com/in/alondra-sanchez-molina/), [Ankita Singh](https://www.linkedin.com/in/ankitasingh007), [Anupam Mishra](https://www.linkedin.com/in/anupam--mishra/), [Arpita Das](https://www.linkedin.com/in/arpitadas01/), ChhailBihari Dubey, [Dibri Nsofor](https://www.linkedin.com/in/dibrinsofor), [Dishita Bhasin](https://www.linkedin.com/in/dishita-bhasin-7065281bb), [Majd Safi](https://www.linkedin.com/in/majd-s/), [Max Blum](https://www.linkedin.com/in/max-blum-6036a1186/), [Miguel Correa](https://www.linkedin.com/in/miguelmque/), [Mohamma Iftekher (Iftu) Ebne Jalal](https://twitter.com/iftu119), [Nawrin Tabassum](https://www.linkedin.com/in/nawrin-tabassum), [Raymond Wangsa Putra](https://www.linkedin.com/in/raymond-wp/), [Rohit Yadav](https://www.linkedin.com/in/rty2423), Samridhi Sharma, [Sanya Sinha](https://www.linkedin.com/mwlite/in/sanya-sinha-13aab1200),
[Sheena Narula](https://www.linkedin.com/in/sheena-narua-n/), [Tauqeer Ahmad](https://www.linkedin.com/in/tauqeerahmad5201/), Yogendrasingh Pawar , [Vidushi Gupta](https://www.linkedin.com/in/vidushi-gupta07/), [Jasleen Sondhi](https://www.linkedin.com/in/jasleen-sondhi/)
|![Sketchnote by @sketchthedocs https://sketchthedocs.dev](../../translated_images/km/00-Title.8af36cd35da1ac55.webp)|
|:---:|
| វិទ្យាសាស្ត្រទិន្នន័យសម្រាប់អ្នកចាប់ផ្ដើម - _Sketchnote ដោយ [@nitya](https://twitter.com/nitya)_ |
### 🌐 គាំទ្រភាសាច្រើន
#### គាំទ្រ​តាមរយៈ GitHub Action (ស្វ័យប្រវត្តិ និងតែងតែទាន់សម័យ)
<!-- CO-OP TRANSLATOR LANGUAGES TABLE START -->
[Arabic](../ar/README.md) | [Bengali](../bn/README.md) | [Bulgarian](../bg/README.md) | [Burmese (Myanmar)](../my/README.md) | [Chinese (Simplified)](../zh-CN/README.md) | [Chinese (Traditional, Hong Kong)](../zh-HK/README.md) | [Chinese (Traditional, Macau)](../zh-MO/README.md) | [Chinese (Traditional, Taiwan)](../zh-TW/README.md) | [Croatian](../hr/README.md) | [Czech](../cs/README.md) | [Danish](../da/README.md) | [Dutch](../nl/README.md) | [Estonian](../et/README.md) | [Finnish](../fi/README.md) | [French](../fr/README.md) | [German](../de/README.md) | [Greek](../el/README.md) | [Hebrew](../he/README.md) | [Hindi](../hi/README.md) | [Hungarian](../hu/README.md) | [Indonesian](../id/README.md) | [Italian](../it/README.md) | [Japanese](../ja/README.md) | [Kannada](../kn/README.md) | [Khmer](./README.md) | [Korean](../ko/README.md) | [Lithuanian](../lt/README.md) | [Malay](../ms/README.md) | [Malayalam](../ml/README.md) | [Marathi](../mr/README.md) | [Nepali](../ne/README.md) | [Nigerian Pidgin](../pcm/README.md) | [Norwegian](../no/README.md) | [Persian (Farsi)](../fa/README.md) | [Polish](../pl/README.md) | [Portuguese (Brazil)](../pt-BR/README.md) | [Portuguese (Portugal)](../pt-PT/README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Romanian](../ro/README.md) | [Russian](../ru/README.md) | [Serbian (Cyrillic)](../sr/README.md) | [Slovak](../sk/README.md) | [Slovenian](../sl/README.md) | [Spanish](../es/README.md) | [Swahili](../sw/README.md) | [Swedish](../sv/README.md) | [Tagalog (Filipino)](../tl/README.md) | [Tamil](../ta/README.md) | [Telugu](../te/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md)
> **ចូលចិត្ត Clone លើកុំព្យូទ័រៈ**
>
> របៀបចម្លងនេះរួមបញ្ចូលការបកប្រែជាង ៥០ ភាសា ដែលបង្កើនទំហំទាញយកយ៉ាងខ្លាំង។ ដើម្បីចម្លងដោយគ្មានការបកប្រែ អ្នកអាចប្រើសកម្មភាព sparse checkout៖
>
> **Bash / macOS / Linux:**
> ```bash
> git clone --filter=blob:none --sparse https://github.com/microsoft/Data-Science-For-Beginners.git
> cd Data-Science-For-Beginners
> git sparse-checkout set --no-cone '/*' '!translations' '!translated_images'
> ```
>
> **CMD (Windows):**
> ```cmd
> git clone --filter=blob:none --sparse https://github.com/microsoft/Data-Science-For-Beginners.git
> cd Data-Science-For-Beginners
> git sparse-checkout set --no-cone "/*" "!translations" "!translated_images"
> ```
>
> វានឹងផ្តល់អោយអ្នកមានគ្រប់យ៉ាងដែលត្រូវការដើម្បីបញ្ចប់វគ្គនេះជាមួយទាញយករហ័សជាងមុន។
<!-- CO-OP TRANSLATOR LANGUAGES TABLE END -->
**ប្រសិនបើអ្នកចង់បានការគាំទ្រភាសាបន្ថែម សូមមើល [ទីនេះ](https://github.com/Azure/co-op-translator/blob/main/getting_started/supported-languages.md)**
#### ចូលរួមសហគមន៍របស់យើង
[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG)
យើងមានសកម្មភាព Discord ស្វែងយល់ជាមួយ AI នៅតែបន្ត ប្រសិនបើចង់ស្វែងយល់បន្ថែម និងចូលរួម សូមចូលមកនៅ [Learn with AI Series](https://aka.ms/learnwithai/discord) ចាប់ពី 18 - 30 ខែកញ្ញា ២០២៥។ អ្នកនឹងទទួលបានយុទ្ធនាការនិងបច្ចេកទេសក្នុងការប្រើប្រាស់ GitHub Copilot សម្រាប់វិទ្យាសាស្ត្រទិន្នន័យ។
![Learn with AI series](../../translated_images/km/1.2b28cdc6205e26fe.webp)
# តើអ្នកជាសិស្សរឺ?
ចាប់ផ្ដើមជាមួយធនធានខាងក្រោម៖
- [Student Hub page](https://docs.microsoft.com/en-gb/learn/student-hub?WT.mc_id=academic-77958-bethanycheum) នៅទំព័រនេះ អ្នកនឹងរកឃើញធនធានសម្រាប់អ្នកផ្ដើម សំបុត្រសិស្ស និងវិធីសាស្ត្រដើម្បីទទួលបានសម័យវិញ្ញាបនប័ត្រមនុស្សឥតគិតថ្លៃ។ នេះជាទំព័រដែលអ្នកចង់រក្សាទុកហើយត្រួតពិនិត្យជាប្រចាំព្រោះយើងចម្លងមាតិកាថ្មីយ៉ាងហោចណាស់មួយខែម្តង។
- [Microsoft Learn Student Ambassadors](https://studentambassadors.microsoft.com?WT.mc_id=academic-77958-bethanycheum) ចូលរួមជាសហគមន៍សិស្សជាសកល នេះអាចជាជំហានរបស់អ្នកក្នុងការចូលទៅកាន់ Microsoft។
# ការចាប់ផ្ដើម
## 📚 ឯកសារ
- **[Installation Guide](INSTALLATION.md)** - សេចក្តីណែនាំដំឡើងជាលំដាប់ជំហានសំរាប់អ្នកចាប់ផ្ដើម
- **[Usage Guide](USAGE.md)** - ឧទាហរណ៍ និងបច្ចេកវិទ្យាទូទៅ
- **[Troubleshooting](TROUBLESHOOTING.md)** - ដំណោះស្រាយចំពោះបញ្ហាទូទៅ
- **[Contributing Guide](CONTRIBUTING.md)** - របៀបធ្វើការរួមចំណែកក្នុងគម្រោងនេះ
- **[For Teachers](for-teachers.md)** - មេរៀនសម្រាប់គ្រូបង្រៀន និងធនធានក្នុងថ្នាក់
## 👨‍🎓 សម្រាប់សិស្ស
> **អ្នកចាប់ផ្ដើមពេញលេញ**៖ ថ្មីក្នុងវិទ្យាសាស្ត្រទិន្នន័យទេ? ចាប់ផ្ដើមជាមួយ [ឧទាហរណ៍សម្រួលសម្រាប់អ្នកដំណើរចាប់ផ្ដើម](examples/README.md)! ឧទាហរណ៍តូចៗ និងមានការពន្យល់លម្អិតទាំងនេះ នឹងជួយឱ្យអ្នកយល់ពីមូលដ្ឋានមុនចូលទៅវគ្គសិក្សាគ្រប់មុខ។
> **[សិស្ស](https://aka.ms/student-page)**៖ ដើម្បីប្រើកម្មវិធីនេះដោយខ្លួនឯង សូមបំលែងឃ្លាំងទាំងមូលហើយបញ្ចប់លំហាត់ដោយខ្លួនឯង ចាប់ផ្ដើមជាមួយតេស្តមុនមេរៀន។ បន្ទាប់មកអានមេរៀនហើយបំពេញសកម្មភាពក្នុងវគ្គ។ ព្យាយាមបង្កើតគម្រោងដោយយល់ពីមេរៀនជាជាងចំលងកូដដោះស្រាយ ប៉ុន្តែកូដនោះមានផ្តល់នៅក្នុងថត /solutions ក្នុងមេរៀនមួយៗដែលផ្តោតលើគម្រោង។ គំនិតមួយទៀតគឺបង្កើតក្រុមសិក្សាជាមួយមិត្តភក្តិ ហើយរៀនមាតិកាដោយរួមគ្នា។ សម្រាប់ការសិក្សាបន្ថែម យើងណែនាំ [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/qprpajyoy3x0g7?WT.mc_id=academic-77958-bethanycheum)។
**ចាប់ផ្ដើមយ៉ាងរហ័ស៖**
1. ពិនិត្យ [Installation Guide](INSTALLATION.md) ដើម្បីដំឡើងបរិយាកាសរបស់អ្នក
2. ពិនិត្យ [Usage Guide](USAGE.md) ដើម្បីរៀនពីរបៀបប្រើកម្មវិធីសិក្សា
3. ចាប់ផ្ដើមជាមួយមេរៀនទី ១ ហើយ រៀនតាមលំដាប់
4. ចូលរួមក្នុង [សហគមន៍ Discord](https://aka.ms/ds4beginners/discord) របស់យើងសម្រាប់ការជួយគាំទ្រ
## 👩‍🏫 សម្រាប់គ្រូបង្រៀន
> **គ្រូបង្រៀន**៖ យើងបាន [បញ្ចូលយោបល់ខ្លះៗ](for-teachers.md) អំពីរបៀបប្រើវគ្គបណ្ដុះបណ្ដាលនេះ។ យើងសប្បាយចិត្តទទួលយកមតិយោបល់របស់អ្នក [នៅក្នុងវេទិកាការពិភាក្សារបស់យើង](https://github.com/microsoft/Data-Science-For-Beginners/discussions)។
## សូមស្គាល់ក្រុម
[![វីដេអូផ្សព្វផ្សាយ](../../ds-for-beginners.gif)](https://youtu.be/8mzavjQSMM4 "វីដេអូផ្សព្វផ្សាយ")
**Gif ដោយ** [Mohit Jaisal](https://www.linkedin.com/in/mohitjaisal)
> 🎥 ចុចលើរូបភាពខាងលើសម្រាប់វីដេអូអំពីគម្រោងនិងមនុស្សដែលបង្កើតវា!
## វិធីសាស្ត្របង្រៀន
យើងបានជ្រើសរើសគោលការណ៍បង្រៀនពីរនាក់នៅពេលបង្កើតវគ្គសិក្សានេះ៖ ប្រាកដថាវាគឺមានមូលដ្ឋានលើគម្រោង និងថាបង្ហាញការប្រលងធម្មតាបង្ហាញជាញឹកញាប់។ នៅចុងបញ្ចប់នៃស៊េរីនេះ សិស្សានុសិស្សនឹងបានរៀនគោលការណ៍មូលដ្ឋាននៃវិទ្យាសាស្ត្រទិន្នន័យ រួមមានគំនិតផ្នែកទ្រឹស្តីសីលធម៌ ការរៀបចំទិន្នន័យ វិធីជាច្រើនក្នុងការដំណើរការទិន្នន័យ ការបង្ហាញទិន្នន័យ ការវិភាគទិន្នន័យ ករណីការប្រើប្រាស់ទិន្នន័យជាក់ស្តែង និងផ្សេងៗទៀត។
បន្ថែមទៀត ការប្រលងតិចមួយមុនថ្នាក់សិក្សារក្សាគោលបំណងរបស់សិស្សបន្តទៅកាន់ការរៀនប្រធានបទមួយ ខណៈដែលការប្រលងទីពីរបន្ទាប់ពីថ្នាក់សិក្សាប្រាកដថា សម្រាប់ការចងចាំបន្ថែម។ វគ្គសិក្សានេះត្រូវបានរចនាឡើងឲ្យមានភាពទន់ខ្សោយ និងរីករាយ ហើយអាចយកទៅរៀនទាំងមូល ឬជាផ្នែកបាន។ គម្រោងចាប់ផ្ដើមតូច ហើយកើនឡើងស្មុគស្មាញច្រើននៅចុងរយៈពេល១០សប្ដាហ៍។
> រកមើល [កូដអនុលោម](CODE_OF_CONDUCT.md), [ការចូលរួម](CONTRIBUTING.md), [ការប្រែសម្រួល](TRANSLATIONS.md) របស់យើង។ យើងសូមទទួលយកមតិយោបល់កែលម្អរបស់អ្នក!
## មេរៀននិមួយៗមាន៖
- សេចក្តីសង្ខេបជាសម្លេងអាចជ្រើសរើសបាន
- វីដេអូបន្ថែមជាជម្រើស
- ការប្រលងកម្រិតកំរឹងមុនមេរៀន
- មេរៀនដោយសរសេរ
- សម្រាប់មេរៀនគម្រោង មានមគ្គុទេសក៍ជំហានតាមជំហានពីរបៀបបង្កើតគម្រោង
- ការត្រួតពិនិត្យចំណេះដឹង
- បញ្ហ 챌ែល្លែន
- អានបន្ថែម
- ការងារ
- [ការប្រលងបន្ទាប់ពីមេរៀន](https://ff-quizzes.netlify.app/en/)
> **កំណត់ចំណាំអំពីការប្រលង**៖ ការប្រលងទាំងអស់ត្រូវបានរក្សាទុកក្នុងថត Quiz-App សម្រាប់ការប្រលង ៤០ ក្នុងកម្រិតសំណួរបីនៅក្នុងមួយប្រលង។ ពួកវាត្រូវបានភ្ជាប់ពីក្នុងមេរៀន ប៉ុន្តែកម្មវិធីប្រលងអាចរត់បានក្នុងម៉ាស៊ីនក្នុងស្រុក ឬដាក់ឲ្យដំណើរការលើ Azure; អនុវត្តតាមការណែនាំនៅក្នុងថត `quiz-app`។ ពួកវាត្រូវបានបំលែងភាសាដោយដំណាក់កាល។
## 🎓 ឧទាហរណ៍សម្រាប់អ្នកចាប់ផ្ដើម
**ថ្មីចំពោះវិទ្យាសាស្ត្រទិន្នន័យ?** យើងបានបង្កើត [ថតឧទាហរណ៍](examples/README.md) ជាពិសេសដែលមានកូដសាមញ្ញស្រួលយល់ ដើម្បីជួយអ្នកចាប់ផ្ដើម៖
- 🌟 **Hello World** - កម្មវិធីវិទ្យាសាស្ត្រទិន្នន័យដំបូងរបស់អ្នក
- 📂 **ការផ្ទុកទិន្នន័យ** - រៀនអាន និងស្វែងយល់អំពីឯកសារទិន្នន័យ
- 📊 **វិភាគសាមញ្ញ** - គណនាស្ថិតិ និងស្វែងរកលំនាំ
- 📈 **ការបង្ហាញទិន្នន័យមូលដ្ឋាន** - បង្កើតតារាង និងក្រាហ្វ
- 🔬 **គម្រោងជាក់ស្តែង** - ដំណើរការពេញលេញពីដំណើរការចាប់ផ្ដើមដល់បញ្ចប់
ឧទាហរណ៍និមួយៗមានកំណត់ចំណាំលម្អិតណែនាំពីជំហានទាំងអស់ ដូច្នេះវាសាកសមសម្រាប់អ្នកចាប់ផ្ដើមតែម្តង!
👉 **[ចាប់ផ្ដើមជាមួយឧទាហរណ៍](examples/README.md)** 👈
## មេរៀន
|![ សេចក្តីសង្ខេបដោយ @sketchthedocs https://sketchthedocs.dev](../../translated_images/km/00-Roadmap.4905d6567dff4753.webp)|
|:---:|
| Data Science For Beginners: ផែនទីផ្លូវ - _សេចក្តីសង្ខេបដោយ [@nitya](https://twitter.com/nitya)_ |
| លេខមេរៀន | ប្រធានបទ | ក្រុមមេរៀន | គោលបំណងការសិក្សា | មេរៀនដែលភ្ជាប់ | អ្នកនិពន្ធ |
| :-----------: | :----------------------------------------: | :--------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------: | :----: |
| 01 | ការបកស្រាយវិទ្យាសាស្ត្រទិន្នន័យ | [ការណែនាំ](1-Introduction/README.md) | រៀនពីគំនិតមូលដ្ឋាននៅពីក្រោយវិទ្យាសាស្ត្រទិន្នន័យ និងរបៀបដែលវាដាក់ទំនាក់ទំនងទៅជាមួយបញ្ញាសិប្បនិម្មិត ឧបករណ៍រៀនម៉ាស៊ីន និងទិន្នន័យធំ។ | [មេរៀន](1-Introduction/01-defining-data-science/README.md) [វីដេអូ](https://youtu.be/beZ7Mb_oz9I) | [Dmitry](http://soshnikov.com) |
| 02 | សីលធម៌វិទ្យាសាស្ត្រទិន្នន័យ | [ការណែនាំ](1-Introduction/README.md) | គំនិត សេចក្តីបន្ទោស និងស៊ុមសុទ្ធភាពសីលធម៌ទិន្នន័យ។ | [មេរៀន](1-Introduction/02-ethics/README.md) | [Nitya](https://twitter.com/nitya) |
| 03 | ការបកស្រាយទិន្នន័យ | [ការណែនាំ](1-Introduction/README.md) | របៀបចាត់ថ្នាក់ទិន្នន័យ និងប្រភពទិន្នន័យទូទៅរបស់វា។ | [មេរៀន](1-Introduction/03-defining-data/README.md) | [Jasmine](https://www.twitter.com/paladique) |
| 04 | ការណែនាំអំពីស្ថិតិ និងសមាភាគ | [ការណែនាំ](1-Introduction/README.md) | បច្ចេកទេសគណិតវិទ្យាដូចជាសមាភាគ និងស្ថិតិក្នុងការយល់ពីទិន្នន័យ។ | [មេរៀន](1-Introduction/04-stats-and-probability/README.md) [វីដេអូ](https://youtu.be/Z5Zy85g4Yjw) | [Dmitry](http://soshnikov.com) |
| 05 | ការធ្វើការជាមួយទិន្នន័យទំនាក់ទំនង | [ការងារជាមួយទិន្នន័យ](2-Working-With-Data/README.md) | ការណែនាំអំពីទិន្នន័យទំនាក់ទំនង និងមូលដ្ឋាននៃការស្វែងយល់ និងវិភាគទិន្នន័យទំនាក់ទំនងដោយប្រើភាសាសំណួររចនាសម្ព័ន្ធ ដែលត្រូវគេហៅថា SQL (អានថា “ស៊ី-ខែល”)។ | [មេរៀន](2-Working-With-Data/05-relational-databases/README.md) | [Christopher](https://www.twitter.com/geektrainer) | | |
| 06 | ការធ្វើការជាមួយទិន្នន័យ NoSQL | [ការងារជាមួយទិន្នន័យ](2-Working-With-Data/README.md) | ការណែនាំអំពីទិន្នន័យមិនទំនាក់ទំនង ប្រភេទផ្សេងៗរបស់វា និងមូលដ្ឋាននៃការស្វែងយល់ និងវិភាគឃ្លាំងឯកសារ។ | [មេរៀន](2-Working-With-Data/06-non-relational/README.md) | [Jasmine](https://twitter.com/paladique)|
| 07 | ការធ្វើការជាមួយ Python | [ការងារជាមួយទិន្នន័យ](2-Working-With-Data/README.md) | មូលដ្ឋាននៃការប្រើ Python សម្រាប់ការស្វែងយល់ទិន្នន័យជាមួយបណ្ណាល័យដូចជា Pandas។ ការយល់ដឹងមូលដ្ឋានលើកម្មវិធី Python ត្រូវបានណែនាំ។ | [មេរៀន](2-Working-With-Data/07-python/README.md) [វីដេអូ](https://youtu.be/dZjWOGbsN4Y) | [Dmitry](http://soshnikov.com) |
| 08 | ការរៀបចំទិន្នន័យ | [ការងារជាមួយទិន្នន័យ](2-Working-With-Data/README.md) | ប្រធានបទអំពីបច្ចេកទេសទិន្នន័យសម្រាប់សម្អាត និងផ្លាស់ប្តូរទិន្នន័យដើម្បីដោះស្រាយបញ្ហារបស់ទិន្នន័យខ្វះ ខុស ឬមិនគ្រប់លក្ខណៈ។ | [មេរៀន](2-Working-With-Data/08-data-preparation/README.md) | [Jasmine](https://www.twitter.com/paladique) |
| 09 | ការបង្ហាញបរិមាណ | [ការបង្ហាញទិន្នន័យ](3-Data-Visualization/README.md) | រៀនពីរបៀបប្រើ Matplotlib ដើម្បីបង្ហាញទិន្នន័យសត្វឥន្ទនៈ 🦆 | [មេរៀន](3-Data-Visualization/09-visualization-quantities/README.md) | [Jen](https://twitter.com/jenlooper) |
| 10 | ការបង្ហាញចែកចាយទិន្នន័យ | [ការបង្ហាញទិន្នន័យ](3-Data-Visualization/README.md) | បង្ហាញការសង្កេត និងនិន្នាការនៅក្នុងចន្លោះពេល។ | [មេរៀន](3-Data-Visualization/10-visualization-distributions/README.md) | [Jen](https://twitter.com/jenlooper) |
| 11 | ការបង្ហាញភាគរយ | [ការបង្ហាញទិន្នន័យ](3-Data-Visualization/README.md) | បង្ហាញភាគរយដាច់ដោយឡែក និងជាក្រុម។ | [មេរៀន](3-Data-Visualization/11-visualization-proportions/README.md) | [Jen](https://twitter.com/jenlooper) |
| 12 | ការបង្ហាញទំនាក់ទំនង | [ការបង្ហាញទិន្នន័យ](3-Data-Visualization/README.md) | បង្ហាញការតភ្ជាប់ និងសមិទ្ធផលរវាងកំណត់ទិន្នន័យ និងអថេរបស់វា។ | [មេរៀន](3-Data-Visualization/12-visualization-relationships/README.md) | [Jen](https://twitter.com/jenlooper) |
| 13 | ការបង្ហាញមានន័យ | [ការបង្ហាញទិន្នន័យ](3-Data-Visualization/README.md) | បច្ចេកទេស និងការណែនាំសម្រាប់បង្កើតការបង្ហាញមានតម្លៃសម្រាប់ដោះស្រាយបញ្ហាយ៉ាងមានប្រសិទ្ធភាព និងការយល់ដឹង។ | [មេរៀន](3-Data-Visualization/13-meaningful-visualizations/README.md) | [Jen](https://twitter.com/jenlooper) |
| 14 | ការណែនាំអំពីជីវិតវដ្តវិទ្យាសាស្ត្រទិន្នន័យ | [ជីវិតវដ្ត](4-Data-Science-Lifecycle/README.md) | ការណែនាំអំពីជីវិតវដ្តវិទ្យាសាស្ត្រទិន្នន័យ និងជំហានដំបូងសម្រាប់ទទួលមក និងដកយកទិន្នន័យ។ | [មេរៀន](4-Data-Science-Lifecycle/14-Introduction/README.md) | [Jasmine](https://twitter.com/paladique) |
| 15 | ការវិភាគ | [ជីវិតវដ្ត](4-Data-Science-Lifecycle/README.md) | ជំហាននេះរបស់ជីវិតវដ្តវិទ្យាសាស្ត្រទិន្នន័យផ្តោតលើបច្ចេកទេសក្នុងការវិភាគទិន្នន័យ។ | [មេរៀន](4-Data-Science-Lifecycle/15-analyzing/README.md) | [Jasmine](https://twitter.com/paladique) | | |
| 16 | ការទំនាក់ទំនង | [ជីវិតវដ្ត](4-Data-Science-Lifecycle/README.md) | ជំហាននេះរបស់ជីវិតវដ្តវិទ្យាសាស្ត្រទិន្នន័យផ្តោតលើការនាំเสนอគំនិតពីទិន្នន័យជារបៀបដែលឲ្យងាយស្រួលសម្រាប់អ្នកបង្កើតសេចក្តីសម្រេចចិត្តយល់។ | [មេរៀន](4-Data-Science-Lifecycle/16-communication/README.md) | [Jalen](https://twitter.com/JalenMcG) | | |
| 17 | វិទ្យាសាស្ត្រទិន្នន័យនៅលើពពក | [ទិន្នន័យពពក](5-Data-Science-In-Cloud/README.md) | ស៊េរីមេរៀននេះណែនាំអំពីវិទ្យាសាស្ត្រទិន្នន័យនៅលើពពក និងអត្ថប្រយោជន៍របស់វា។ | [មេរៀន](5-Data-Science-In-Cloud/17-Introduction/README.md) | [Tiffany](https://twitter.com/TiffanySouterre) និង [Maud](https://twitter.com/maudstweets) |
| 18 | វិទ្យាសាស្ត្រទិន្នន័យនៅលើពពក | [ទិន្នន័យពពក](5-Data-Science-In-Cloud/README.md) | បណ្តុះបណ្តាលម៉ូឌែលដោយប្រើឧបករណ៍Low Code។ |[មេរៀន](5-Data-Science-In-Cloud/18-Low-Code/README.md) | [Tiffany](https://twitter.com/TiffanySouterre) និង [Maud](https://twitter.com/maudstweets) |
| 19 | វិទ្យាសាស្ត្រទិន្នន័យនៅលើពពក | [ទិន្នន័យពពក](5-Data-Science-In-Cloud/README.md) | ដាក់បញ្ចូលម៉ូឌែលជាមួយ Azure Machine Learning Studio។ | [មេរៀន](5-Data-Science-In-Cloud/19-Azure/README.md)| [Tiffany](https://twitter.com/TiffanySouterre) និង [Maud](https://twitter.com/maudstweets) |
| 20 | វិទ្យាសាស្ត្រទិន្នន័យនៅក្នុងព្រៃ | [នៅក្នុងព្រៃ](6-Data-Science-In-Wild/README.md) | គម្រោងប្រើវិទ្យាសាស្ត្រទិន្នន័យនៅក្នុងពិភពជាក់ស្តែង។ | [មេរៀន](6-Data-Science-In-Wild/20-Real-World-Examples/README.md) | [Nitya](https://twitter.com/nitya) |
## GitHub Codespaces
អនុវត្តតាមជំហានទាំងនេះដើម្បីបើកឧទាហរណ៍នេះក្នុង Codespace ៖
1. ចុចម៉ឺនុយធ្លាយរបស់ Code ហើយជ្រើសរើសជម្រើស Open with Codespaces។
2. ជ្រើសរើស + New codespace នៅខាងក្រោមផ្នែកខាងក្រោមកញ្ចក់។
សម្រាប់ព័ត៌មានបន្ថែម សូមពិនិត្យឯកសាររបស់ [GitHub](https://docs.github.com/en/codespaces/developing-in-codespaces/creating-a-codespace-for-a-repository#creating-a-codespace)។
## VSCode Remote - Containers
អនុវត្តតាមជំហានទាំងនេះដើម្បីបើករ៉េប៉ូនេះក្នុងកុងតឺន័រពីម៉ាស៊ីនក្នុងស្រុករបស់អ្នកជាមួយ VSCode ដោយប្រើផ្នែកបន្ថែម VS Code Remote - Containers៖
1. ប្រសិនបើនេះជាលើកដំបូងដែលអ្នកប្រើកុងតឺន័រអភិវឌ្ឍ សូមប្រាកដថាប្រព័ន្ធរបស់អ្នកបានបំពេញលក្ខណៈបូកបន្ថែម (ឧ. មានការដំឡើង Docker) នៅក្នុង [ឯកសារចាប់ផ្ដើម](https://code.visualstudio.com/docs/devcontainers/containers#_getting-started)។
ដើម្បីប្រើរ៉េប៉ូនេះ អ្នកអាចបើករ៉េប៉ូក្នុងការរក្សាទុក Docker ដែលបានដំណើរការផ្ទាល់ខ្លួន៖
**សេចក្តីសម្គាល់**៖ នៅខាងក្រោម វានឹងប្រើពាក្យបញ្ជា Remote-Containers: **Clone Repository in Container Volume...** ដើម្បីចម្លងកូដបញ្ចូលក្នុង Docker volume ផ្ទេរស្ដាប់នៅក្នុងឧបករណ៍ផ្ទាល់ខ្លួន។ [Volumes](https://docs.docker.com/storage/volumes/) គឺជាមធ្យោបាយដែលត្រូវការសម្រាប់រក្សាទុកទិន្នន័យក្នុងកុងតឺន័រ។
ឬបើកកូដដែលបានចម្លងរឺទាញយកក្នុងស្រុក៖
- ចម្លងរ៉េប៉ូនេះទៅក្នុងផ្ទាំងភាសាបទក្នុងស្រុករបស់អ្នក។
- បិទ F1 ហើយជ្រើសរើសពាក្យបញ្ជា **Remote-Containers: Open Folder in Container...**
- ជ្រើសយកចម្លងថតនេះ រង់ចាំកុងតឺន័រចាប់ផ្ដើម ហើយសាកល្បង។
## ការចូលប្រើក្រៅបណ្តាញ
អ្នកអាចរត់ឯកសារនេះក្រៅបណ្តាញដោយប្រើ [Docsify](https://docsify.js.org/#/)។ ចម្លងរ៉េប៉ូនេះ [ដំឡើង Docsify](https://docsify.js.org/#/quickstart) នៅលើម៉ាស៊ីនក្នុងស្រុករបស់អ្នក រួចនៅក្នុងថតដើមនៃរ៉េប៉ូនេះ វាយ `docsify serve`។ គេហទំព័រនឹងត្រូវបម្លែងនៅលើពត៌មានផត 3000 នៅ localhost របស់អ្នក៖ `localhost:3000`
> ចំណាំ សៀវភៅកំណត់ត្រានឹងមិនត្រូវបានបង្ហាញតាមរយៈ Docsify ទេ ដូចនេះពេលដែលអ្នកត្រូវការប្រតិបត្តិការសៀវភៅកំណត់ត្រា សូមធ្វើវាផ្ទាល់ក្នុង VS Code ប្រតិបត្តិការជាមួយ Python kernel ។
## វគ្គសិក្សា​ផ្សេងទៀត
ក្រុមរបស់យើងផលិតវគ្គសិក្សាផ្សេងទៀត! សូមពិនិត្យ៖
<!-- CO-OP TRANSLATOR OTHER COURSES START -->
### LangChain
[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners)
[![LangChain.js សម្រាប់អ្នកចាប់ផ្តើម](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin)
[![LangChain សម្រាប់អ្នកចាប់ផ្តើម](https://img.shields.io/badge/LangChain%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://github.com/microsoft/langchain-for-beginners?WT.mc_id=m365-94501-dwahlin)
---
### Azure / Edge / MCP / Agents
[![AZD សម្រាប់អ្នកចាប់ផ្តើម](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst)
[![Edge AI សម្រាប់អ្នកចាប់ផ្តើម](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)
[![MCP សម្រាប់អ្នកចាប់ផ្តើម](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst)
[![AI Agents សម្រាប់អ្នកចាប់ផ្តើម](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst)
---
### ស៊េរី AI ការបង្កើត
[![Generative AI សម្រាប់អ្នកចាប់ផ្តើម](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
[![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst)
[![Generative AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst)
[![Generative AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst)
---
### ការរសាត់រៀនស្នូល
[![ML សម្រាប់អ្នកចាប់ផ្តើម](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst)
[![វិទ្យាសាស្ត្រទិន្នន័យសម្រាប់អ្នកចាប់ផ្តើម](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
[![AI សម្រាប់អ្នកចាប់ផ្តើម](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst)
[![សន្តិសុខបណ្តាញសម្រាប់អ្នកចាប់ផ្តើម](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung)
[![ការអភិវឌ្ឍវេបសម្រាប់អ្នកចាប់ផ្តើម](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst)
[![IoT សម្រាប់អ្នកចាប់ផ្តើម](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst)
[![XR ការអភិវឌ្ឍសម្រាប់អ្នកចាប់ផ្តើម](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst)
---
### ស៊េរី Copilot
[![Copilot សម្រាប់កម្មវិធី AI ជាគូ](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
[![Copilot សម្រាប់ C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst)
[![Copilot ការផ្សងព្រេង](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst)
<!-- CO-OP TRANSLATOR OTHER COURSES END -->
## ការទទួលបានជំនួយ
**ប្រឈមមុខនឹងបញ្ហាដែរឬទេ?** ពិនិត្យមើល [មគ្គុទេសក៍ដោះស្រាយបញ្ហា](TROUBLESHOOTING.md) របស់យើងសម្រាប់ដំណោះស្រាយទៅបញ្ហារួមៗ។
បើអ្នកឆ្ងល់ឬមានសំណួរអំពីការបង្កើតកម្មវិធី AI។ ចូលរួមជាមួយអ្នករៀន និងអ្នកអភិវឌ្ឍមានបទពិសោធន៍ ក្នុងការពិភាក្សាអំពី MCP។ វាជាសហគមន៍គាំទ្រដែលសំណួរត្រូវបានស្វាគម និងចែករំលែកចំណេះដឹងដោយសេរី។
[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG)
បើអ្នកមានមតិយោបល់អំពីផលិតផលឬកើតមានកំហុសខណៈស្ថាបនារើយមើល:
[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការព្រមាន**៖
ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលយើងខំប្រឹងសំរាប់ភាពច្បាស់លាស់ សូមមានការយល់ដឹងថាការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុសឬភាពមិនត្រឹមត្រូវ។ ឯកសារដើមជាភាសាមាតុភូមិគឺត្រូវបានពិចារណា​ជា​ប្រភព​អាទិភាព។ សម្រាប់ព័ត៌មានសំខាន់ៗ សូមណែនាំឱ្យប្រើការបកប្រែដោយមនុស្សវិជ្ជាជីវៈ។ យើងមិនខ្ចោះខាតចំពោះការយល់ខុស ឬការបកប្រែខុសណាមួយដែលកើតមានពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,44 @@
## សុវត្ថិភាព
Microsoft យកសុវត្ថិភាពនៃផលិតផលនិងសេវាកម្មផ្នែកទន់ខាងរបស់យើងយ៉ាងចម្បង រួមទាំងឃ្លាំងកូដដើម​ទាំងអស់ដែលគេគ្រប់គ្រងតាមរយៈសហគម GitHub របស់យើង ដែលរួមមាន [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), និង [សហគម GitHub របស់យើង](https://opensource.microsoft.com/)។
បើអ្នកជឿជាក់ថាអ្នកបានរកឃើញចំណុចខ្វះសុវត្ថិភាពនៅក្នុងឃ្លាំងកូដណាមួយដែលជាកម្មសិទ្ធិរបស់ Microsoft ដែលបំពេញតាម [ការកំណត់អំពីចំណុចខ្វះសុវត្ថិភាពរបស់ Microsoft](https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc751383(v=technet.10)) សូមរាយការណ៍ឲ្យយើងដូចបានពិពណ៌នាក្រោមនេះ។
## ការរាយការណ៍បញ្ហាសុវត្ថិភាព
**សូមកុំរាយការណ៍ចំណុចខ្វះសុវត្ថិភាពតាមរយៈប្រធានបទ GitHub សាធារណៈ។**
ដោយសារតែ វាអាចហ្នឹងរាយការណ៍ទៅកាន់មជ្ឈមណ្ឌលឆ្លើយតបសុវត្ថិភាព Microsoft (MSRC) តាម [https://msrc.microsoft.com/create-report](https://msrc.microsoft.com/create-report)។
បើអ្នកចង់ដាក់ស្នើដោយមិនត្រូវចូលគណនី សូមផ្ញើអ៊ីមែលទៅ [secure@microsoft.com](mailto:secure@microsoft.com)។ ប្រសិនបើអាចធ្វើបាន សូមបំលែងសាររបស់អ្នកជាមួយកូនសោ PGP របស់យើង; សូមទាញយកវាពី [ទំព័រកូនសោ PGP របស់មជ្ឈមណ្ឌលឆ្លើយតបសុវត្ថិភាព Microsoft](https://www.microsoft.com/en-us/msrc/pgp-key-msrc)។
អ្នកគួរតែទទួលបានការឆ្លើយតបក្នុងរយៈពេល២៤ម៉ោង។ ប្រសិនបើមានមូលហេតុណាមួយដែលមិនទទួលបាន សូមតាមដានតាមអ៊ីមែលដើម្បីធានាថាយើងបានទទួលសារដើមរបស់អ្នក។ ព័ត៌មានបន្ថែមអាចបើកយោលបាននៅ [microsoft.com/msrc](https://www.microsoft.com/msrc)។
សូមបញ្ចូលពត៌មានដែលបានស្នើរខាងក្រោម (បានច្រើនប៉ុន្មានកាន់តែល្អ) ដើម្បីជួយឲ្យយើងយល់ការបញ្ហានិងវិសាលភាពបញ្ហាដែលអាចកើតឡើងបានល្អប្រសើរ:
* ប្រភេទបញ្ហា (ឧ. buffer overflow, SQL injection, cross-site scripting, ល។)
* ផ្លូវពេញលេញនៃឯកសារដើមដែលពាក់ព័ន្ធនឹងបញ្ហា
* ទីតាំងកូដដើមដែលរងផលប៉ះពាល់ (tag/branch/commit ឬ URL ផ្ទាល់)
* ការកំណត់ពិសេសណាមួយដែលត្រូវមានដើម្បីអាចបង្កើតឡើងបានបញ្ហា
* ជំហាន-ជំហាននៃការបង្កើតឡើងបានបញ្ហា
* គំរូបញ្ជាក់បទឬកូដប្រើប្រាស់ (បើអាច)
* ផលប៉ះពាល់នៃបញ្ហា រួមទាំងរបៀបដែលអ្នកវាយប្រហារអាចប្រើប្រាស់បានបញ្ហា
ព័ត៌មាននេះនឹងជួយឲ្យយើងវាយតម្លៃការរាយការណ៍របស់អ្នកបានយ៉ាងរហ័ស។
បើអ្នកកំពុងរាយការណ៍សម្រាប់កម្មវិធីរង្វាន់កំហុស ប្រាថ្នារបាយការណ៍ពេញលេញរបស់អ្នកអាចជួយឲ្យបានរង្វាន់ខ្ពស់ជាងមុន។ សូមចូលទៅកាន់ [កម្មវិធីរង្វាន់កំហុស Microsoft](https://microsoft.com/msrc/bounty) របស់យើងសម្រាប់ព័ត៌មានបន្ថែមអំពីកម្មវិធីសកម្មរបស់យើង។
## ភាសាប្រាជ្ញាចម្បង
យើងចង់ឲ្យការទាក់ទងទាំងអស់មាននៅក្នុងភាសាអង់គ្លេស។
## គោលនយោបាយ
Microsoft អនុវត្តតាមគោលការណ៍នៃ [ការបង្ហាញចំណុចខ្វះសុវត្ថិភាពជាសហការណ៍](https://www.microsoft.com/en-us/msrc/cvd)។
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការបញ្ជាក់**:
ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ទោះយើងខិតខំផ្តល់ភាពត្រឹមត្រូវ ក៏សូមយល់ដឹងថាការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុស ឬក៏ភាពមិនត្រឹមត្រូវ។ ឯកសារដើមជាភាសារបស់វាគួរត្រូវបានគេគិតថាជាទិន្នន័យផ្លូវការដែលត្រូវអោយគោរព។ សូមណែនាំឲ្យប្រើការបកប្រែដោយមនុស្សជំនាញសម្រាប់ព័ត៌មានសំខាន់ៗ។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ព្រម ឫការបកស្រាយខុសប្រក្រតីណាមួយដែលកើតឡើងពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,19 @@
# ផ្គត់ផ្គង់ជំនួយ
## របៀបដាក់បញ្ហា និងទទួលបានជំនួយ
គម្រោងនេះប្រើ GitHub Issues ដើម្បីតាមដានកំហុស និងសំណើមុខងារ។ សូមស្វែងរកបញ្ហាដែលមានរួចមកមុន
មុនដាក់បញ្ហាថ្មី ដើម្បីបញ្ឈប់ការស្ទួន។ សម្រាប់បញ្ហាថ្មី សូមដាក់បញ្ហាកំហុស ឬសំណើរមុខងារជា
Issue ថ្មី។
សម្រាប់ការជំនួយ និងសំណួរអំពីការប្រើគម្រោងនេះ សូមដាក់បញ្ហា។
## គោលការណ៍ផ្គត់ផ្គង់ជំនួយរបស់ Microsoft
ការគាំទ្រសម្រាប់រ៉េហ្ស៊ីសទូរីនេះមានកំណត់តែទៅតាមធនធានដែលបានរាយបញ្ជីខាងលើ។
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការបដិទិន**៖
ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលដែលយើងខិតខំក្នុងការរក្សាគុណភាពឲ្យត្រឹមត្រូវ សូមយល់ឲ្យបានថាការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុសឬការមិនត្រឹមត្រូវ។ ឯកសារដើមនៅក្នុងភាសាម្ចាស់របស់វាគួរត្រូវបានគោះថាជាហេតុផលផ្លូវការសម្រាប់ព័ត៌មាន។ សម្រាប់ព័ត៌មានសំខាន់ៗ ការបកប្រែដោយអ្នកជំនាញមានជំនាញមនុស្សគួរត្រូវបានផ្ដល់អនុសាសន៍។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំឬការបកប្រែខុសផ្សេងៗណាត្រូវកើតឡើងពីការប្រើប្រាស់ការបកប្រែនេះទេ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,620 @@
# មគ្គុទេសក៍ដោះស្រាយបញ្ហា
មគ្គុទេសក៍នេះផ្តល់ដំណោះស្រាយចំពោះបញ្ហាទូទៅដែលអ្នកអាចជួបប្រទៈនៅពេលធ្វើការជាមួយមេរៀន Data Science សម្រាប់អ្នកដើម។
## តារាងមាតិកា
- [បញ្ហា Python និង Jupyter](#បញ្ហា-python-និង-jupyter)
- [បញ្ហា Package និង Dependency](#បញ្ហា-package-និង-dependency)
- [បញ្ហា Jupyter Notebook](#បញ្ហា-jupyter-notebook)
- [បញ្ហាកម្មវិធី Quiz](#បញ្ហាកម្មវិធី-quiz)
- [បញ្ហា Git និង GitHub](#បញ្ហា-git-និង-github)
- [បញ្ហា Docsify Documentation](#បញ្ហា-docsify-documentation)
- [បញ្ហារបស់ Data និង File](#បញ្ហារបស់-data-និង-file)
- [បញ្ហាសមត្ថភាព](#បញ្ហាសមត្ថភាព)
- [ការទទួលបានជំនួយបន្ថែម](#ការទទួលបានជំនួយបន្ថែម)
## បញ្ហា Python និង Jupyter
### មិនឃើញ Python ឬ ជំនាន់មិនត្រឹមត្រូវ
**បញ្ហា:** `python: command not found` ឬ ជំនាន់ Python មិនត្រឹមត្រូវ
**ដំណោះស្រាយ:**
```bash
# ពិនិត្យ​ប្រភេទ Python
python --version
python3 --version
# បើ python3 បានដំឡើងជា 'python3', បង្កើត alias
# លើ macOS/Linux, បន្ថែមទៅ ~/.bashrc ឬ ~/.zshrc:
alias python=python3
alias pip=pip3
# ឬ​ប្រើ python3 យ៉ាងបញ្ជាក់
python3 -m pip install jupyter
```
**ដំណោះស្រាយសម្រាប់ Windows:**
1. តម្លើង Python ពី [python.org](https://www.python.org/)
2. នៅពេលតម្លើង សូមពិនិត្យ "Add Python to PATH"
3. បើកបញ្ចាញបញ្ជា/Terminal ឡើងវិញ
### បញ្ហាចាប់ផ្តើម Virtual Environment
**បញ្ហា:** Virtual environment មិនអាចចាប់ផ្តើមបាន
**ដំណោះស្រាយ:**
**Windows:**
```bash
# ប្រសិនបើអ្នកទទួលមានកំហុសគោលនយោបាយអនុវត្ត
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
# បន្ទាប់មកបើកអ្នក
venv\Scripts\activate
```
**macOS/Linux:**
```bash
# បញ្ចាក់ឲ្យបានថា script បើកដំណើរការអាចប្រតិបត្តិបាន
chmod +x venv/bin/activate
# បន្ទាប់មកបើកដំណើរការ
source venv/bin/activate
```
**ตรวจสอบการเปิดใช้งาน:**
```bash
# បញ្ជាក់របស់អ្នកគួរតែបង្ហាញ (venv)
# ពិនិត្យទីតាំង Python
which python # គួរតែចង្អុលទៅ venv
```
### បញ្ហា Kernel Jupyter
**បញ្ហា:** "Kernel not found" ឬ "Kernel keeps dying"
**ដំណោះស្រាយ:**
```bash
# ដំឡើង kernel ថ្មី
python -m ipykernel install --user --name=datascience --display-name="Python (Data Science)"
# ឬប្រើ kernel លំនាំដើម
python -m ipykernel install --user
# ចាប់ផ្ដើម Jupyter ថ្មីម្តង
jupyter notebook
```
**បញ្ហា:** ជំនាន់ Python មិនត្រឹមត្រូវនៅក្នុង Jupyter
**ដំណោះស្រាយ:**
```bash
# តំឡើង Jupyter នៅក្នុងបរិបទវីរុសរបស់អ្នក
source venv/bin/activate # បើកដំណើរការជាមុន
pip install jupyter ipykernel
# ចុះឈ្មោះកណ្តុរពហុ
python -m ipykernel install --user --name=venv --display-name="Python (venv)"
# នៅក្នុង Jupyter, ជ្រើស Kernel -> ប្ដូរកណ្តុរពហុ -> Python (venv)
```
## បញ្ហា Package និង Dependency
### បញ្ហា Import
**បញ្ហា:** `ModuleNotFoundError: No module named 'pandas'` (ឬ package ផ្សេង)
**ដំណោះស្រាយ:**
```bash
# ប្រាកដថាបរិយាកាសពិតត្រូវបានបើកបរ
source venv/bin/activate # macOS/Linux
venv\Scripts\activate # វីនដូ
# ដំឡើងផ្នែកបាក់កេសដែលខ្វះ
pip install pandas
# ដំឡើងផ្នែកបាក់កេសទូទៅទាំងអស់
pip install jupyter pandas numpy matplotlib seaborn scikit-learn
# បញ្ជាក់ការដំឡើង
python -c "import pandas; print(pandas.__version__)"
```
### បិទការតម្លើង Pip
**បញ្ហា:** `pip install` បរាជ័យដោយសារមានបញ្ហារបស់ការអនុញ្ញាត
**ដំណោះស្រាយ:**
```bash
# ប្រើទង់ដង់ --user
pip install --user package-name
# ឬប្រើបរិយាកាសវត្ថុសូរ (ណែនាំ)
python -m venv venv
source venv/bin/activate
pip install package-name
```
**បញ្ហា:** `pip install` បរាជ័យដោយសារត្រូវបាន SSL certificate
**ដំណោះស្រាយ:**
```bash
# បន្ទាន់សម័យ pip ជាមុនសិន
python -m pip install --upgrade pip
# សាកល្បងដំឡើងជាមួយម៉ាស៊ីនឧបត្ថម្ភដែលទុកចិត្តបាន (វិធីជួយបណ្តោះអាសន្ន)
pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org package-name
```
### បញ្ហា Package មានជំនាន់ផ្ទុះ
**បញ្ហា:** ជំនាន់ package មិនត្រូវគ្នា
**ដំណោះស្រាយ:**
```bash
# បង្កើតបរិបទវើឌឺជាទំនើប
python -m venv venv-new
source venv-new/bin/activate # ឬ venv-new\Scripts\activate នៅលើប្រព័ន្ធប្រតិបត្តិការ Windows
# ដំឡើងកញ្ចប់ជាមួយនឹងកំណែជាក់លាក់ ប្រសិនបើចាំបាច់
pip install pandas==1.3.0
pip install numpy==1.21.0
# ឬអនុញ្ញាតឲ្យ pip បញ្ចេញទំនាក់ទំនងដែលត្រូវការ
pip install jupyter pandas numpy matplotlib seaborn scikit-learn
```
## បញ្ហា Jupyter Notebook
### Jupyter មិនចាប់ផ្តើម
**បញ្ហា:** ពាក្យបញ្ជា `jupyter notebook` មិនឃើញ
**ដំណោះស្រាយ:**
```bash
# ដំឡើង Jupyter
pip install jupyter
# ឬប្រើ python -m
python -m jupyter notebook
# បន្ថែមទៅ PATH ប្រសិនបើចាំបាច់ (macOS/Linux)
export PATH="$HOME/.local/bin:$PATH"
```
### Notebook មិនផ្ទុក ឬ មិនរក្សាទុក
**បញ្ហា:** "Notebook failed to load" ឬ បញ្ហាក្នុងការរក្សាទុក
**ដំណោះស្រាយ:**
1. ពិនិត្យសិទ្ធិលើ File
```bash
# ត្រូវប្រាកដថាអ្នកមានសិទ្ធិសរសេរ
ls -l notebook.ipynb
chmod 644 notebook.ipynb # ប្រសិនបើត្រូវការ
```
2. ពិនិត្យការខូចខាតនៅលើ File
```bash
# សាកល្បងបើកនៅកម្មវិធីកែសម្រួលអត្ថបទដើម្បីត្រួតពិនិត្យរចនាសម្ព័ន្ធ JSON
# បញ្ចូលមាតិកាទៅកាន់សៀវភៅកំណត់ត្រាថ្មី ប្រសិនបើខូចខាត
```
3. សម្អាត cache Jupyter
```bash
jupyter notebook --clear-cache
```
### Cell មិនអាចសម្រឹងបាន
**បញ្ហា:** Cell ឈរនៅ "In [*]" ឬ ប្រើពេលយូរ
**ដំណោះស្រាយ:**
1. **ដកចេញ kernel**: ចុចប៊ូតុង "Interrupt" ឬចុច `I, I`
2. **ចាប់ផ្តើម kernel ម្តងទៀត**: របារទំព័រ Kernel → Restart
3. **ពិនិត្យរក loop មិនចប់** ក្នុង code របស់អ្នក
4. **សម្អាតចេញលទ្ធផល**: Cell → All Output → Clear
### ការបង្ហាញផ្ទាំងរេចតាមប្រព័ន្ធមិនបង្ហាញ
**បញ្ហា:** `matplotlib` បង្ហាញគូលនៅក្នុង notebook មិនបាន
**ដំណោះស្រាយ:**
```python
# បន្ថែមពាក្យបញ្ជាមន្តអោយនៅកំពូលសៀវភៅកំណត់ត្រា
%matplotlib inline
import matplotlib.pyplot as plt
# បង្កើតផ្លុក
plt.plot([1, 2, 3, 4])
plt.show() # បញ្ជាក់អោយហៅ show()
```
**ជម្រើសផ្សេងសម្រាប់ផ្ទាំងរេចតាមប្រព័ន្ធអន្តរកម្ម:**
```python
%matplotlib notebook
# ឬ
%matplotlib widget
```
## បញ្ហាកម្មវិធី Quiz
### ការតម្លើង npm បរាជ័យ
**បញ្ហា:** មានកំហុសនៅពេល `npm install`
**ដំណោះស្រាយ:**
```bash
# សម្អាត cache npm
npm cache clean --force
# យក node_modules និង package-lock.json ចេញ
rm -rf node_modules package-lock.json
# ដំឡើងឡើងវិញ
npm install
# ប្រសិនបើនៅតែបរាជ័យ សូមសាកល្បងជាមួយ legacy peer deps
npm install --legacy-peer-deps
```
### កម្មវិធី Quiz មិនចាប់ផ្តើម
**បញ្ហា:** `npm run serve` បរាជ័យ
**ដំណោះស្រាយ:**
```bash
# ពិនិត្យកំណែ Node.js
node --version # គួរតែជាកំណែ 12.x ឬខ្ពស់ជាងនេះ
# ដំឡើងតម្រូវការឡើងវិញ
cd quiz-app
rm -rf node_modules package-lock.json
npm install
# សាកល្បងច្រកផ្សេងទៀត
npm run serve -- --port 8081
```
### ច្រក (Port) មានការប្រើប្រាស់រួចហើយ
**បញ្ហា:** "Port 8080 is already in use"
**ដំណោះស្រាយ:**
```bash
# ស្វែងរក និងបាញ់បណ្តាលដំណើរការនៅលើព្រលង់ 8080
# macOS/Linux:
lsof -ti:8080 | xargs kill -9
# Windows:
netstat -ano | findstr :8080
taskkill /PID <PID> /F
# ឬប្រើព្រលង់ផ្សេងទៀត
npm run serve -- --port 8081
```
### កម្មវិធី Quiz មិនផ្ទុក ឬ ទំព័របង្ហាញទទេ
**បញ្ហា:** កម្មវិធី Quiz ផ្ទុកប៉ុន្តែនៅទំព័រទទេ
**ដំណោះស្រាយ:**
1. ពិនិត្យ console របស់ browser សម្រាប់កំហុស (F12)
2. សម្អាត cache និង cookies របស់ browser
3. សាក browser ផ្សេងទៀត
4. ធានាបានថា JavaScript បានបើក
5. ពិនិត្យថាមិនមានកម្មវិធីរារាំងផ្សាយពាណិជ្ជកម្ម (ad blocker) រារាំង
```bash
# សាងសង់កម្មវិធីឡើងវិញ
npm run build
npm run serve
```
## បញ្ហា Git និង GitHub
### មិនកំណត់ស្គាល់ git
**បញ្ហា:** `git: command not found`
**ដំណោះស្រាយ:**
**Windows:**
- តម្លើង Git ពី [git-scm.com](https://git-scm.com/)
- បើក terminal ម្តងទៀតបន្ទាប់ពីតម្លើង
**macOS:**
> **ចំណាំ:** ប្រសិនបើអ្នកមិនមាន Homebrew ត្រូវធ្វើតាមការណែនាំនៅ [https://brew.sh/](https://brew.sh/) ដើម្បីតម្លើងជាមុន។
```bash
# ដំឡើងតាមរយៈ Homebrew
brew install git
# ឬដំឡើងឧបករណ៍បញ្ជារបន្ទាត់ Xcode
xcode-select --install
```
**Linux:**
```bash
sudo apt-get install git # Debian/Ubuntu
sudo dnf install git # Fedora
```
### ការចម្លង clone បរាជ័យ
**បញ្ហា:** `git clone` បរាជ័យដោយសារការផ្ទៀងផ្ទាត់មិនបាន
**ដំណោះស្រាយ:**
```bash
# ប្រើ URL HTTPS
git clone https://github.com/microsoft/Data-Science-For-Beginners.git
# ប្រសិនបើអ្នកបានបើក 2FA នៅលើ GitHub សូមប្រើ Personal Access Token
# បង្កើត token នៅ: https://github.com/settings/tokens
# ប្រើ token ជាពាក្យសម្ងាត់នៅពេលដែលត្រូវបានស្នើសុំ
```
### សិទ្ធិដាក់បដិសេធ (publickey)
**បញ្ហា:** ការផ្ទៀងផ្ទាត់សោ SSH បរាជ័យ
**ដំណោះស្រាយ:**
```bash
# បង្កើតកូនសោ SSH
ssh-keygen -t ed25519 -C "your_email@example.com"
# បញ្ចូលកូនសោទៅ ssh-agent
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
# បន្ថែមកូនសោសាធារណៈទៅ GitHub
# ចម្លងកូនសោៈ cat ~/.ssh/id_ed25519.pub
# បន្ថែមនៅ៖ https://github.com/settings/keys
```
## បញ្ហា Docsify Documentation
### ពាក្យបញ្ជា Docsify មិនឃើញ
**បញ្ហា:** `docsify: command not found`
**ដំណោះស្រាយ:**
```bash
# ដំឡើងជាសកល
npm install -g docsify-cli
# ប្រសិនបើមានកំហុសសិទ្ធិលើ macOS/Linux
sudo npm install -g docsify-cli
# ផ្ទៀងផ្ទាត់ការដំឡើង
docsify --version
# ប្រសិនបើនៅតែមិនបានរកឃើញ ចូរបន្ថែមផ្លូវ npm ជាសកល
# រកផ្លូវ npm ជាសកល
npm config get prefix
# បន្ថែមទៅ PATH (បន្ថែមចូលក្នុង ~/.bashrc ឬ ~/.zshrc)
export PATH="$PATH:/usr/local/bin"
```
### ការរចនាឯកសារ មិនផ្ទុក
**បញ្ហា:** Docsify ប្រើប្រាស់បាន ប៉ុន្តែមាតិកាមិនផ្ទុក
**ដំណោះស្រាយ:**
```bash
# ការធានាថាអ្នកនៅក្នុងឫសកន្លែងបញ្ជូន
cd Data-Science-For-Beginners
# ពិនិត្យមើលសម្រាប់ index.html
ls index.html
# បម្រើជាមួយព័រត់ជាក់លាក់
docsify serve --port 3000
# ពិនិត្យមើលកុងសូលកម្មវិធីរុករកសម្រាប់កំហុស (F12)
```
### រូបភាពមិនបង្ហាញ
**បញ្ហា:** រូបភាពបង្ហាញការខូចខាត
**ដំណោះស្រាយ:**
1. ពិនិត្យវិថីរូបភាពគឺជាវិថីនិបាត
2. ធានាថារូបភាពមាននៅក្នុងធរណីមួយ
3. សម្អាត cache របស់ browser
4. ពិនិត្យឱ្យប្រាកដថាគ្មានកំហុសនៅក្នុងបន្ថែមទីបញ្ចូលឯកសារ (case-sensitive នៅលើប្រព័ន្ធខ្លះ)
## បញ្ហារបស់ Data និង File
### កំហុសមិនឃើញ File
**បញ្ហា:** `FileNotFoundError` ពេលដំណើរការទិន្នន័យ
**ដំណោះស្រាយ:**
```python
import os
# ពិនិត្យថាតើថតកំពុងធ្វើការបច្ចុប្បន្ន
print(os.getcwd())
# ប្រើផ្លូវដាច់ដោយឡែក
data_path = os.path.join(os.getcwd(), 'data', 'filename.csv')
df = pd.read_csv(data_path)
# ឬប្រើផ្លូវទាក់ទងពីទីតាំងសៀវភៅសរសេរ
df = pd.read_csv('../data/filename.csv')
# ផ្ទៀងផ្ទាត់ឯកសារមាននៅ
print(os.path.exists('data/filename.csv'))
```
### កំហុសអាន CSV
**បញ្ហា:** កំហុសនៅពេលអានឯកសារ CSV
**ដំណោះស្រាយ:**
```python
import pandas as pd
# ព្យាយាមការបង្កូតផ្សេងៗ
df = pd.read_csv('file.csv', encoding='utf-8')
# ឬ
df = pd.read_csv('file.csv', encoding='latin-1')
# ឬ
df = pd.read_csv('file.csv', encoding='ISO-8859-1')
# គ្រប់គ្រងតម្លៃដែលបាត់បង់
df = pd.read_csv('file.csv', na_values=['NA', 'N/A', ''])
# បញ្ជាក់អថេរបំបែក ប្រសិនបើមិនមែនជាក្បៀសកុម្ភៈ
df = pd.read_csv('file.csv', delimiter=';')
```
### កំហុសម៉ឺម៉ូរីជាមួយឯកសារច្រើន
**បញ្ហា:** `MemoryError` ពេលដំណើរការឯកសារធំ
**ដំណោះស្រាយ:**
```python
# អានជាផ្នែកៗ
chunk_size = 10000
chunks = []
for chunk in pd.read_csv('large_file.csv', chunksize=chunk_size):
# ដំណើរការផ្នែក
chunks.append(chunk)
df = pd.concat(chunks)
# ឬអានតែជួរឈរពិសេសប៉ុណ្ណោះ
df = pd.read_csv('file.csv', usecols=['col1', 'col2'])
# ប្រើប្រភេទទិន្នន័យដែលមានប្រសិទ្ធភាពច្រើនជាង
df = pd.read_csv('file.csv', dtype={'column_name': 'int32'})
```
## បញ្ហាសមត្ថភាព
### សមត្ថភាព Notebook យឺត
**បញ្ហា:** Notebook ធ្វើការយឺតខ្លាំង
**ដំណោះស្រាយ:**
1. **ចាប់ផ្តើម kernel ម្តងទៀត និងសម្អាតលទ្ធផល**
- Kernel → Restart & Clear Output
2. **បិទ notebooks ដែលមិនប្រើប្រាស់**
3. **បង្កើនប្រសិទ្ធភាព code:**
```python
# ប្រើប្រតិបត្តិការវិចទ័រជំនួសការលោត
# អាក្រក់:
result = []
for x in data:
result.append(x * 2)
# ល្អ:
result = data * 2 # វិចទ័រកម្ម NumPy/Pandas
```
4. **យកតែទិន្នន័យគំរូពី dataset ធំៗ:**
```python
# ធ្វើការជាមួយ​គំរូក្នុងអំឡុងពេលអភិវឌ្ឍន៍
df_sample = df.sample(n=1000) # ឬ df.head(1000)
```
### Browser ធ្លាក់ឬមិនចាប់ផ្តើមបាន
**បញ្ហា:** Browser ធ្លាក់ ឬមិនប្រតិបត្តិការក្នុងលក្ខខណ្ឌល្អ
**ដំណោះស្រាយ:**
1. បិទផ្ទាំងបើកមិនប្រើប្រាស់
2. សម្អាត cache របស់ browser
3. បង្កើនម៉ឺម៉ូរី browser (Chrome: `chrome://settings/system`)
4. ប្រើ JupyterLab ជំនួស:
```bash
pip install jupyterlab
jupyter lab
```
## ការទទួលបានជំនួយបន្ថែម
### មុនសុំជំនួយ
1. សូមពិនិត្យមើលមគ្គុទេសក៍ដោះស្រាយបញ្ហានេះ
2. ស្វែងរកនៅ [GitHub Issues](https://github.com/microsoft/Data-Science-For-Beginners/issues)
3. ពិនិត្យឯកសារ [INSTALLATION.md](INSTALLATION.md) និង [USAGE.md](USAGE.md)
4. សាកសួរពាក្យកំហុសនៅលើអ៊ីនធើណេត
### របៀបសុំជំនួយ
ពេលបង្កើតបញ្ហា ឬសុំជំនួយ សូមបញ្ចូល:
1. **ប្រព័ន្ធប្រតិបត្តិការ**: Windows, macOS, ឬ Linux (ចុះដឹងប្រភេទ)
2. **ជំនាន់ Python**: រត់ `python --version`
3. **សារកំហុស**: ចម្លងសារបញ្ហាពេញលេញ
4. **ជំហានដែលបានធ្វើ**: ការប្រតិបត្តិមុនកើតកំហុស
5. **អ្វីដែលបានសាកល្បង**: ដំណោះស្រាយដែលអ្នកបានព្យាយាមរួច
**ឧទាហរណ៍:**
```
**Operating System:** macOS 12.0
**Python Version:** 3.9.7
**Error Message:** ModuleNotFoundError: No module named 'pandas'
**Steps to Reproduce:**
1. Activated virtual environment
2. Started Jupyter notebook
3. Tried to import pandas
**What I've Tried:**
- Ran pip install pandas
- Restarted Jupyter
```
### ប្រភពធនធានសហគមន៍
- **GitHub Issues**: [បង្កើតបញ្ហា](https://github.com/microsoft/Data-Science-For-Beginners/issues/new)
- **Discord**: [ចូលរួមសហគមន៍](https://aka.ms/ds4beginners/discord)
- **Discussions**: [ការ​ពិភាក្សា GitHub](https://github.com/microsoft/Data-Science-For-Beginners/discussions)
- **Microsoft Learn**: [កន្លែងសួរសំណួរ Q&A](https://docs.microsoft.com/answers/)
### ឯកសារពាក់ព័ន្ធ
- [INSTALLATION.md](INSTALLATION.md) - មគ្គុទេសក៍ដំឡើង
- [USAGE.md](USAGE.md) - របៀបប្រើប្រាស់មេរៀន
- [CONTRIBUTING.md](CONTRIBUTING.md) - របៀបចូលរួម
- [README.md](README.md) - ពត៌មានសង្ខេបគម្រោង
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការបដិសេធ**៖
ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ បើទោះបីយើងខិតខំកទ្រឹងភាពត្រឹមត្រូវ ក៏ដោយ សូមជ្រាបថាការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុសឬមិនត្រឹមត្រូវ។ ឯកសារដើមជាភាសា​ដើមគួរត្រូវបានគិតថាជាឯកសារដែលមានភាពអប់រំខ្ពស់បំផុត។ សម្រាប់ព័ត៌មានសំខាន់ៗ សូមណែនាំឱ្យប្រើការបកប្រែដោយអ្នកជំនាញមនុស្សវិជ្ជាជីវៈ។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំនឹងឬការបោះពុម្ពអត់ត្រឹមត្រូវណាមួយដែលកើតឡើងពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,367 @@
# Usage Guide
This guide provides examples and common workflows for using the Data Science for Beginners curriculum.
## Table of Contents
- [How to Use This Curriculum](#how-to-use-this-curriculum)
- [Working with Lessons](#working-with-lessons)
- [Working with Jupyter Notebooks](#working-with-jupyter-notebooks)
- [Using the Quiz Application](#using-the-quiz-application)
- [Common Workflows](#common-workflows)
- [Tips for Self-Learners](#tips-for-self-learners)
- [Tips for Teachers](#tips-for-teachers)
## How to Use This Curriculum
This curriculum is designed to be flexible and can be used in multiple ways:
- **Self-paced learning**: Work through lessons independently at your own speed
- **Classroom instruction**: Use as a structured course with guided instruction
- **Study groups**: Learn collaboratively with peers
- **Workshop format**: Intensive short-term learning sessions
## Working with Lessons
Each lesson follows a consistent structure to maximize learning:
### Lesson Structure
1. **Pre-lesson Quiz**: Test your existing knowledge
2. **Sketchnote** (Optional): Visual summary of key concepts
3. **Video** (Optional): Supplemental video content
4. **Written Lesson**: Core concepts and explanations
5. **Jupyter Notebook**: Hands-on coding exercises
6. **Assignment**: Practice what you've learned
7. **Post-lesson Quiz**: Reinforce your understanding
### Example Workflow for a Lesson
```bash
# ១. ទៅកាន់ថតមេរៀន
cd 1-Introduction/01-defining-data-science
# ២. អាន README.md
# បើក README.md នៅក្នុងកម្មវិធីរុករក ឬកម្មវិធីកែសម្រួលរបស់អ្នក
# ៣. ធ្វើការប្រលងមុនមេរៀន
# ចុចលើតំណភ្ជាប់ការប្រលងនៅក្នុង README
# ៤. បើកសៀវភៅកំណត់ត្រា Jupyter (បើមាន)
jupyter notebook
# ៥. បញ្ចប់លំហាត់ក្នុងសៀវភៅកំណត់ត្រា
# ៦. ធ្វើការងារផ្នែកដែលបានផ្ដល់
# ៧. ធ្វើការប្រលងបន្ទាប់ពីមេរៀន
```
## Working with Jupyter Notebooks
### Starting Jupyter
```bash
# បើកប្រព័ន្ធបរិស្ថាននិន្នាការរបស់អ្នក
source venv/bin/activate # លើ macOS/Linux
# ឬ
venv\Scripts\activate # លើ Windows
# ចាប់ផ្តើម Jupyter ពីឫសសារមន្ទីរ
jupyter notebook
```
### Running Notebook Cells
1. **Execute a cell**: Press `Shift + Enter` or click the "Run" button
2. **Execute all cells**: Select "Cell" → "Run All" from the menu
3. **Restart kernel**: Select "Kernel" → "Restart" if you encounter issues
### Example: Working with Data in a Notebook
```python
# នាំចូលបណ្ណាល័យដែលត្រូវការ
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# ផ្ទុកទិន្នន័យ
df = pd.read_csv('data/sample.csv')
# ស្ទង់មើលទិន្នន័យ
df.head()
df.info()
df.describe()
# បង្កើតការមើលឃើញ
plt.figure(figsize=(10, 6))
plt.plot(df['column_name'])
plt.title('Sample Visualization')
plt.xlabel('X-axis Label')
plt.ylabel('Y-axis Label')
plt.show()
```
### Saving Your Work
- Jupyter auto-saves periodically
- Manually save: Press `Ctrl + S` (or `Cmd + S` on macOS)
- Your progress is saved in the `.ipynb` file
## Using the Quiz Application
### Running the Quiz App Locally
```bash
# ចូលទៅកាន់ថតកម្មវិធីគ្រាប់សំណួរ
cd quiz-app
# ចាប់ផ្ដើមម៉ាស៊ីនមេអភិវឌ្ឍន៍
npm run serve
# ចូលប្រើនៅ http://localhost:8080
```
### Taking Quizzes
1. Pre-lesson quizzes are linked at the top of each lesson
2. Post-lesson quizzes are linked at the bottom of each lesson
3. Each quiz has 3 questions
4. Quizzes are designed to reinforce learning, not to test exhaustively
### Quiz Numbering
- Quizzes are numbered 0-39 (40 total quizzes)
- Each lesson typically has a pre and post quiz
- Quiz URLs include the quiz number: `https://ff-quizzes.netlify.app/en/ds/quiz/0`
## Common Workflows
### Workflow 1: Complete Beginner Path
```bash
# 1. កំណត់បរិយាកាសរបស់អ្នក (មើល INSTALLATION.md)
# 2. ចាប់ផ្តើមជាមួយមេរៀនទី 1
cd 1-Introduction/01-defining-data-science
# 3. សម្រាប់មេរៀននីមួយៗ:
# - ធ្វើការប្រលងមុនមេរៀន
# - អានមាតិការបង្រៀន
# - ធ្វើការលើសៀវភៅកំណត់ត្រា
# - បញ្ចប់ការផ្តល់អនុសាសន៍
# - ធ្វើការប្រលងបន្ទាប់មេរៀន
# 4. ចំណូវតាមរយៈមេរៀនទាំង 20 ដោយលំដាប់លំដោយ
```
### Workflow 2: Topic-Specific Learning
If you're interested in a specific topic:
```bash
# ឧទាហរណ៍៖ ផ្ដោតលើការមើលឃើញទិន្នន័យ
cd 3-Data-Visualization
# សូមស្វែងយល់មេរៀន 9-13៖
# - មេរៀន 9៖ ការមើលឃើញបរិមាណ
# - មេរៀន 10៖ ការមើលឃើញការបែងចែក
# - មេរៀន 11៖ ការមើលឃើញអត្រា
# - មេរៀន 12៖ ការមើលឃើញទំនាក់ទំនង
# - មេរៀន 13៖ ការមើលឃើញមានអត្ថន័យ
```
### Workflow 3: Project-Based Learning
```bash
# ១. ពិនិត្យមើលមេរៀន វដ្ដជីវិតវិទ្យាសាស្ត្រទិន្នន័យ (១៤-១៦)
cd 4-Data-Science-Lifecycle
# ២. ធ្វើការជាមួយឧទាហរណ៍ពិតប្រាកដ (មេរៀន ២០)
cd ../6-Data-Science-In-Wild/20-Real-World-Examples
# ៣. អនុវត្តគំនិតទៅលើគម្រោងផ្ទាល់ខ្លួនរបស់អ្នក
```
### Workflow 4: Cloud-Based Data Science
```bash
# រៀនអំពីវិទ្យាសាស្ត្រទិន្នន័យពពក (មេរៀន ១៧-១៩)
cd 5-Data-Science-In-Cloud
# ១៧: ការណែនាំអំពីវិទ្យាសាស្ត្រទិន្នន័យពពក
# ១៨: ឧបករណ៍ ML កូដទាប
# ១៩: ស្ទូឌីយោ Azure Machine Learning
```
## Tips for Self-Learners
### Stay Organized
```bash
# បង្កើតសៀវភៅកំណត់ហេតុការសិក្សា
mkdir my-learning-journal
# សម្រាប់មេរៀននីមួយៗ បង្កើតកំណត់សម្គាល់
echo "# Lesson 1 Notes" > my-learning-journal/lesson-01-notes.md
```
### Practice Regularly
- Set aside dedicated time each day or week
- Complete at least one lesson per week
- Review previous lessons periodically
### Engage with the Community
- Join the [Discord community](https://aka.ms/ds4beginners/discord)
- Participate in #Data-Science-for-Beginners Channel in Discord [Discord Discussions](https://aka.ms/ds4beginners/discord)
- Share your progress and ask questions
### Build Your Own Projects
After completing lessons, apply concepts to personal projects:
```python
# ឧទាហរណ៍៖ វិភាគទិន្នន័យរបស់អ្នកផ្ទាល់
import pandas as pd
# បញ្ចូលទិន្នន័យរបស់អ្នកផ្ទាល់
my_data = pd.read_csv('my-project/data.csv')
# អនុវត្តបច្ចេកទេសដែលបានរៀន
# - សម្អាតទិន្នន័យ (មេរៀនទី ៨)
# - វិភាគទិន្នន័យស្រាវជ្រាវ (មេរៀនទី ៧)
# - ការបង្ហាញតាមរូបភាព (មេរៀនទី ៩-១៣)
# - ការវិភាគ (មេរៀនទី ១៥)
```
## Tips for Teachers
### Classroom Setup
1. Review [for-teachers.md](for-teachers.md) for detailed guidance
2. Set up a shared environment (GitHub Classroom or Codespaces)
3. Establish a communication channel (Discord, Slack, or Teams)
### Lesson Planning
**Suggested 10-Week Schedule:**
- **Week 1-2**: Introduction (Lessons 1-4)
- **Week 3-4**: Working with Data (Lessons 5-8)
- **Week 5-6**: Data Visualization (Lessons 9-13)
- **Week 7-8**: Data Science Lifecycle (Lessons 14-16)
- **Week 9**: Cloud Data Science (Lessons 17-19)
- **Week 10**: Real-World Applications & Final Projects (Lesson 20)
### Running Docsify for Offline Access
```bash
# បម្រើឯកសារពិពណ៌នាទៅក្នុងមូលដ្ឋានសម្រាប់ការប្រើប្រាស់ថ្នាក់រៀន
docsify serve
# សិស្សអាចចូលប្រើបាននៅ localhost:3000
# មិនចាំបាច់មានអ៊ីនធឺណិតបន្ទាន់ក្រោយពេលបង្កើតដំបូង
```
### Assignment Grading
- Review student notebooks for completed exercises
- Check for understanding through quiz scores
- Evaluate final projects using data science lifecycle principles
### Creating Assignments
```python
# គំរូភារកិច្ចផ្ទាល់ខ្លួនឧទាហរណ៍
"""
Assignment: [Topic]
Objective: [Learning goal]
Dataset: [Provide or have students find one]
Tasks:
1. Load and explore the dataset
2. Clean and prepare the data
3. Create at least 3 visualizations
4. Perform analysis
5. Communicate findings
Deliverables:
- Jupyter notebook with code and explanations
- Written summary of findings
"""
```
## Working Offline
### Download Resources
```bash
# អំពីចម្លងគ្រប់ផ្នែកទាំងអស់នៃឃ្លាំងទិន្នន័យ
git clone https://github.com/microsoft/Data-Science-For-Beginners.git
# ទាញយកសំណុំនៃទិន្នន័យជាមុន
# សំណុំនៃទិន្នន័យភាគច្រើនត្រូវបានបញ្ចូលក្នុងឃ្លាំងទិន្នន័យ
```
### Run Documentation Locally
```bash
# បម្រុងជាមួយ Docsify
docsify serve
# ចូលប្រើនៅ localhost:3000
```
### Run Quiz App Locally
```bash
cd quiz-app
npm run serve
```
## Accessing Translated Content
Translations are available in 40+ languages:
```bash
# ចូលទៅកាន់មេរៀនបានបកប្រែ
cd translations/fr # ភាសាបារាំង
cd translations/es # ភាសាអេស្ប៉ាញ
cd translations/de # ភាសាអាល្លឺម៉ង់
# ... និងច្រើនទៀត
```
Each translation maintains the same structure as the English version.
## Additional Resources
### Continue Learning
- [Microsoft Learn](https://docs.microsoft.com/learn/) - Additional learning paths
- [Student Hub](https://docs.microsoft.com/learn/student-hub) - Resources for students
- [Azure AI Foundry](https://aka.ms/foundry/forum) - Community forum
### Related Curricula
- [AI for Beginners](https://aka.ms/ai-beginners)
- [ML for Beginners](https://aka.ms/ml-beginners)
- [Web Dev for Beginners](https://aka.ms/webdev-beginners)
- [Generative AI for Beginners](https://aka.ms/genai-beginners)
## Getting Help
- Check [TROUBLESHOOTING.md](TROUBLESHOOTING.md) for common issues
- Search [GitHub Issues](https://github.com/microsoft/Data-Science-For-Beginners/issues)
- Join our [Discord](https://aka.ms/ds4beginners/discord)
- Review [CONTRIBUTING.md](CONTRIBUTING.md) to report issues or contribute
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការព្រមាន**៖
ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាកម្មបកប្រែដោយ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលដែលយើងខិតខំប្រឹងប្រែងសម្រាប់ភាពត្រឹមត្រូវ សូមយល់ឱ្យបានច្បាស់ថា ការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុស ឬភាពមិនត្រឹមត្រូវ។ ឯកសារដើមក្នុងភាសាដើមគួรถูกគេពិចារណាថាជាផ្លូវការនៃព័ត៌មាន។ សម្រាប់ព័ត៌មានសំខាន់ៗ ការបកប្រែដោយអ្នកជំនាញផ្ទាល់ខ្លួនត្រូវបានណែនាំ។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកស្រាយខុសនៃព័ត៌មានដែលបណ្តាលមកពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,33 @@
- ការណែនាំ
- [ការប្រកាស​ឲ្យដឹង​អំពីវិទ្យាសាស្ត្រទិន្នន័យ](../1-Introduction/01-defining-data-science/README.md)
- [ទ្រឹស្តីសីលធម៌នៃវិទ្យាសាស្ត្រទិន្នន័យ](../1-Introduction/02-ethics/README.md)
- [ការកំណត់ន័យទិន្នន័យ](../1-Introduction/03-defining-data/README.md)
- [ប្រូបាប & ស្ថិតិ](../1-Introduction/04-stats-and-probability/README.md)
- ការងារជាមួយទិន្នន័យ
- [មូលដ្ឋានទិន្នន័យទាក់ទង](../2-Working-With-Data/05-relational-databases/README.md)
- [មូលដ្ឋានទិន្នន័យអម្រិតទាក់ទង](../2-Working-With-Data/06-non-relational/README.md)
- [Python](../2-Working-With-Data/07-python/README.md)
- [ការរៀបចំទិន្នន័យ](../2-Working-With-Data/08-data-preparation/README.md)
- ការបង្ហាញទិន្នន័យ
- [ការបង្ហាញបរិមាណ](../3-Data-Visualization/09-visualization-quantities/README.md)
- [ការបង្ហាញការចែកចាយ](../3-Data-Visualization/10-visualization-distributions/README.md)
- [ការបង្ហាញអត្រាពាណិជ្ជកម្ម](../3-Data-Visualization/11-visualization-proportions/README.md)
- [ការបង្ហាញទំនាក់ទំនង](../3-Data-Visualization/12-visualization-relationships/README.md)
- [ការបង្ហាញមានន័យ](../3-Data-Visualization/13-meaningful-visualizations/README.md)
- ជីវចង្វាក់វិទ្យាសាស្ត្រទិន្នន័យ
- [ការណែនាំ](../4-Data-Science-Lifecycle/14-Introduction/README.md)
- [ការវិភាគ](../4-Data-Science-Lifecycle/15-analyzing/README.md)
- [ការទំនាក់ទំនង](../4-Data-Science-Lifecycle/16-communication/README.md)
- វិទ្យាសាស្ត្រទិន្នន័យក្នុង​ពពក
- [ការណែនាំ](../5-Data-Science-In-Cloud/17-Introduction/README.md)
- [កូដទាប](../5-Data-Science-In-Cloud/18-Low-Code/README.md)
- [Azure](../5-Data-Science-In-Cloud/19-Azure/README.md)
- វិទ្យាសាស្ត្រទិន្នន័យក្នុងព្រៃ
- [DS ក្នុងព្រៃ](../6-Data-Science-In-Wild/README.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការបដិសេធ**៖
ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ បើយើងបំពេញការបកប្រែដោយប្រុងប្រយ័ត្ន ចូរដឹងថាការបកប្រែដោយស្វ័យប្រវត្តិនេះអាចមានកំហុសឬមានភាពច្រឡំ។ ឯកសារដើមនៅក្នុងភាសាដើមគួរត្រូវបានគេគិតថាជាឈុតដើមដើម្បីយោង។ សម្រាប់ព័ត៌មានសំខាន់ៗ ការបកប្រែដោយមនុស្សជំនាញគឺជាជម្រើសដែលបានណែនាំ។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកប្រែខុសពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,142 @@
# ឧទាហរណ៍វិទ្យាសាស្ត្រទិន្នន័យសម្រួលសម្រាប់អ្នកចាប់ផ្តើម
សូមស្វាគមន៍មកកាន់ថតឯកសារឧទាហរណ៍! ការប្រមូលផ្តុំឧទាហរណ៍សាមញ្ញដែលមានការពន្យល់លម្អិតនេះត្រូវបានរចនាឡើងដើម្បីជួយអ្នកចាប់ផ្តើមជាមួយវិទ្យាសាស្ត្រទិន្នន័យ ទោះបីជាអ្នកជាអ្នកចាប់ផ្តើមសង្ខេបក៏ដោយ។
## 📚 អ្វីដែលអ្នកនឹងរកឃើញនៅទីនេះ
អៀហរណ៍នីមួយៗមានភាពឯករាជ្យ និងរួមបញ្ចូល៖
- **កំណត់សម្គាល់ច្បាស់លាស់** ពន្យល់ជំហានរាល់ជំហាន
- **កូដសាមញ្ញអាចអានបាន** ដែលបង្ហាញមេរៀនមួយក្នុងពេលមួយ
- **បរិបទពិតជាពិភពលោក** ជួយអ្នកយល់ពីពេលណា និងហេតុអ្វីបានប្រើបច្ចេកទេសទាំងនេះ
- **លទ្ធផលដែលរំពឹងទុក** ដើម្បីឲ្យអ្នកដឹងត្រូវស្វែងរកអ្វី
## 🚀 ការចាប់ផ្តើម
### លក្ខខ័ណ្ឌមុន
មុនពេលរត់ឧទាហរណ៍ទាំងនេះ សូមប្រាកដថាអ្នកមាន៖
- Python 3.7 ឬខ្ពស់ជាងនេះបានដំឡើង
- ការយល់ដឹងមូលដ្ឋានពីរបៀបរត់ស្គ្រីប Python
### ការដំឡើងបណ្ណាល័យត្រូវការ
```bash
pip install pandas numpy matplotlib
```
## 📖 មើលទិដ្ឋភាពទូទៅនៃឧទាហរណ៍
### 1. Hello World - បែបវិទ្យាសាស្ត្រទិន្នន័យ
**ឯកសារ៖** `01_hello_world_data_science.py`
កម្មវិធីវិទ្យាសាស្ត្រទិន្នន័យដំបូងរបស់អ្នក! ស្វែងរៀនពីរបៀប៖
- ដោនឡើងបណ្ដុំទិន្នន័យសាមញ្ញ
- បង្ហាញព័ត៌មានមូលដ្ឋានអំពីទិន្នន័យរបស់អ្នក
- បោះពុម្ពលទ្ធផលវិទ្យាសាស្ត្រទិន្នន័យដំបូងរបស់អ្នក
ល្អឥតខ្ចោះសម្រាប់អ្នកចាប់ផ្តើមដែលចង់មើលកម្មវិធីវិទ្យាសាស្ត្រទិន្នន័យដំបូងរបស់ពួកគេក្នុងសកម្មភាព។
---
### 2. ការផ្ទុក និងស្វែងរកទិន្នន័យ
**ឯកសារ៖** `02_loading_data.py`
ស្វែងយល់មូលដ្ឋាននៃការងារជាមួយទិន្នន័យ៖
- អានទិន្នន័យពីឯកសារ CSV
- មើលជួរដំបូងៗនៃបណ្ដុំទិន្នន័យរបស់អ្នក
- ទទួលបានស្ថិតិមូលដ្ឋានអំពីទិន្នន័យរបស់អ្នក
- យល់ពីប្រភេទទិន្នន័យ
នេះជាជំហានដំបូងច្រើនជាងគេនៅក្នុងគម្រោងវិទ្យាសាស្ត្រទិន្នន័យ!
---
### 3. វិភាគទិន្នន័យសាមញ្ញ
**ឯកសារ៖** `03_simple_analysis.py`
អនុវត្តវិភាគទិន្នន័យដំបូងរបស់អ្នក៖
- គណនាស្ថិតិមូលដ្ឋាន (មធ្យម, មេឌីយ៉ាន, ម៉ូដ)
- រកតម្លៃអតិបរមា និងអប្បបរមា
- រាប់ចំនួនករណីនៃតម្លៃ
- ផ្ទាត់ទិន្នន័យអាស្រ័យលើលក្ខខណ្ឌ
មើលពីរបៀបឆ្លើយសំណួរសាមញ្ញអំពីទិន្នន័យរបស់អ្នក។
---
### 4. មូលដ្ឋានការបង្ហាញទិន្នន័យ
**ឯកសារ៖** `04_basic_visualization.py`
បង្កើតការបង្ហាញផ្ទាំងដំបូងរបស់អ្នក៖
- បង្កើតក្រាហ្វបារែសាមញ្ញមួយ
- បង្កើតការបង្ហាញជារបារបន្ទាត់
- បង្កើតក្រាហ្វព្រី
- រក្សាទុកការបង្ហាញរបស់អ្នកជារូបភាព
រៀនបច្ចេកទេសផ្សព្វផ្សាយការស្វែងរករបស់អ្នកជាផ្ទាំង!
---
### 5. ធ្វើការជាមួយទិន្នន័យពិត
**ឯកសារ៖** `05_real_world_example.py`
ប្រមូលចំនុចទាំងអស់ជាមួយឧទាហរណ៍ពេញលេញ៖
- ដោនឡើងទិន្នន័យពិតពីឃ្លាំងទិន្នន័យ
- សម្អាត និងរៀបចំទិន្នន័យ
- អនុវត្តវិភាគ
- បង្កើតការបង្ហាញដ៏មានន័យ
- ស្ដាប់ចេញនូវសេចក្តីសន្និដ្ឋាន
ឧទាហរណ៍នេះបង្ហាញដំណើរការពេញលេញចាប់ពីការចាប់ផ្តើមដល់បញ្ចប់។
---
## 🎯 របៀបប្រើឧទាហរណ៍ទាំងនេះ
1. **ចាប់ផ្តើមពីដំបូង**៖ ឧទាហរណ៍ត្រូវបានលេខរៀបឡើងតាមកម្រិតភាពខុសប្លែក។ ចាប់ផ្តើមជាមួយ `01_hello_world_data_science.py` ហើយបន្តទៅមុខ។
2. **អានកំណត់សម្គាល់**៖ ឯកសារនីមួយៗមានកំណត់សម្គាល់លម្អិតពន្យល់ពីអ្វីដែលកូដធ្វើ និងហេតុអ្វីបានធ្វើ។ សូមអានយ៉ាងយកចិត្តទុកដាក់!
3. **សាកល្បង**៖ ព្យាយាមកែប្រែកូដ។ មានអ្វីកើតឡើងប្រសិនបើអ្នកប្ដូរតម្លៃមួយ? បែកបាក់ ហើយជួសជុលវា - នោះជារបៀបដែលអ្នករៀន!
4. **រត់កូដ**៖ ប្រតិបត្តិឧទាហរណ៍នីមួយៗ ហើយសង្កេតលទ្ធផល។ ប្រៀបធៀបវាជាមួយអ្វីដែលអ្នករំពឹងទុក។
5. **ពង្រីកវា**៖ ពេលដែលអ្នកយល់ឧទាហរណ៍មួយ សាកល្បងពង្រីកវា ជាមួយគំនិតផ្ទាល់ខ្លួន។
## 💡 យោបល់សម្រាប់អ្នកចាប់ផ្តើម
- **កុំរត់លឿន**៖ ចំណាយពេលយល់ឧទាហរណ៍នីមួយៗ មុនពេលទៅកាន់វាជាថ្មី
- **វាយកូដដោយខ្លួនឯង**៖ កុំគ្រាន់តែចម្លងបិទបិទ។ ការវាយជួយអ្នករៀន និងចងចាំ
- **ស្វែងរកមេរៀនដែលមិនស្គាល់**៖ ប្រសិនបើអ្នកឃើញអ្វីមួយដែលមិនយល់ ស្វែងរកវាពីអ៊ិនធឺណែត ឬនៅក្នុងមេរៀនសំខាន់ៗ
- **សួរពិភាក្សា**៖ ចូលរួមក្នុង [វេទិកាពិភាក្សា](https://github.com/microsoft/Data-Science-For-Beginners/discussions) ប្រសិនបើអ្នកត្រូវការជំនួយ
- **ហ្វឹកហ្វឺនជាប្រចាំ**៖ ព្យាយាមកូដប្រហែលតិចៗរៀងរាល់ថ្ងៃ ជាជាងពេលវេលាធំធេងមួយភាគច្រេីនក្នុងមួយសប្តាហ៍
## 🔗 ជំហានបន្ទាប់
បន្ទាប់ពីបញ្ចប់ឧទាហរណ៍ទាំងនេះ អ្នករួចរាល់រាល់បញ្ហា៖
- ធ្វើតាមមេរៀនគ្រប់មេរៀន
- សាកល្បងការងារប្រលងនៅក្នុងថតមេរៀននីមួយៗ
- ស្វែងយល់កំណត់ត្រា Jupyter សម្រាប់ការសិក្សាដ៏ជ្រាលជ្រៅ
- បង្កើតគម្រោងវិទ្យាសាស្ត្រទិន្នន័យផ្ទាល់ខ្លួន
## 📚 ប្រភពអភិវឌ្ឍបន្ថែម
- [មេរៀនសំខាន់](../README.md) - វគ្គរៀនភាគ20ពេញលេញ
- [សម្រាប់គ្រូ](../for-teachers.md) - ការប្រើវគ្គនេះក្នុងថ្នាក់រៀនរបស់អ្នក
- [Microsoft Learn](https://docs.microsoft.com/learn/) - ប្រភពសិក្សាអនឡាញឥតគិតថ្លៃ
- [ឯកសារព័ត៌មាន Python](https://docs.python.org/3/) - ឯកសារយោងផ្លូវការរបស់ Python
## 🤝 ការរួមចំណែក
បានរកឃើញបញ្ហាឬមានគំនិតសម្រាប់ឧទាហរណ៍ថ្មី? យើងសូមស្វាគមន៍ការរួមចំណែក! សូមមើល [មគ្គុទេសក៍រួមចំណែក](../CONTRIBUTING.md) របស់យើង។
---
**សូមរីករាយរៀន! 🎉**
ចូរចងចាំ៖ អ្នកជំនាញរាល់គ្នាបានធ្លាប់ជាអ្នកចាប់ផ្តើមមួយនៅពេលម៉ូដមុន។ ចាប់ផ្តើមជំហានមួយៗ ហើយកុំភ័យខ្លាចក្នុងការខកខាន - ពួកវាជាផ្នែកនៃដំណើរការរៀន!
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការបដិសេធ**៖
ឯកសារនេះត្រូវបានបកប្រែក្នុងការប្រើប្រាស់សេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ទោះបីយើងខិតខំប្រឹងប្រែងដើម្បីបានភាពត្រឹមត្រូវ ក៏សូមយល់ថាការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុសឬភាពមិនត្រឹមត្រូវ។ ឯកសារដើមនៅក្នុងភាសាដើមគួរត្រូវបានពិចារណាជា ប្រភពមានអាទិភាព ។ សម្រាប់ព័ត៌មានសំខាន់ ផ្តល់អនុសាសន៍ឱ្យប្រើប្រាស់ការបកប្រែដោយមនុស្សជំនាញ។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកស្រាយតិចតួចណាមួយដែលកើតចេញពីការប្រើប្រាស់ការបកប្រែនេះនោះទេ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,69 @@
## សម្រាប់គ្រូបង្រៀន
តើអ្នកចង់ប្រើមេរៀននេះនៅក្នុងថ្នាក់រៀនរបស់អ្នកទេ? សូមរីករាយ!
ជាក់ស្តែង អ្នកអាចប្រើវាក្នុង GitHub ផ្ទាល់ដោយប្រើ GitHub Classroom។
ដើម្បីធ្វើបែបនេះ សូមចម្លង repo នេះ។ អ្នកនឹងត្រូវបង្កើត repo សម្រាប់មេរៀនមួយមួយ ដូច្នេះអ្នកត្រូវបំបែកថតនីមួយៗទៅក្នុង repo ផ្សេងៗគ្នា។ ដូច្នេះ [GitHub Classroom](https://classroom.github.com/classrooms) អាចយកមេរៀនមួយៗបំបែកជាប្រភេទសេរី។
ការណែនាំ [ពេញលេញទាំងនេះ](https://github.blog/2020-03-18-set-up-your-digital-classroom-with-github-classroom/) នឹងផ្តល់ឱ្យអ្នកគំនិតពីរបៀបចាប់ផ្តើមថ្នាក់រៀនរបស់អ្នក។
## ការប្រើ repo ដូចដែលវាជា
បើអ្នកចង់ប្រើ repo នេះដូចដែលវាមានស្ថានភាពរួច ដោយមិនប្រើ GitHub Classroom ក៏អាចធ្វើបានដែរ។ អ្នកត្រូវទំនាក់ទំនងជាមួយសិស្សរបស់អ្នកថាតើត្រូវរៀនមេរៀនណា។
ក្នុងទ្រង់ទ្រាយអនឡាញ (Zoom, Teams ឬដូចផ្សេង) អ្នកអាចបង្កើតបន្ទប់បំបែកសម្រាប់ប្រលងមូលដ្ឋាន និងជួយណែនាំសិស្សឱ្យត្រៀមខ្លួនសម្រាប់ការរៀន។ បន្ទាប់មកអញ្ជើញសិស្សចូលរួមប្រលងនិងដាក់ចម្លើយជាបញ្ហាទៅក្នុងពេលកំណត់។ អ្នកអាចធ្វើដូចគ្នាក៏បានជាមួយការស្នើសុំ ប្រសិនបើអ្នកចង់ឲ្យសិស្សធ្វើការងារជាក្រុមចេញក្រៅក្នុងលំនៅឋានសាធារណៈ។
បើអ្នកចូលចិត្តទ្រង់ទ្រាយផ្ទាល់ខ្លួនជាងនេះ សូមស្នើឲ្យសិស្សចម្លងមេរៀននេះ មេរៀនមួយ មេរៀនមួយ ទៅក្នុង repo ផ្ទាល់ខ្លួនរបស់ពួកគេក្នុង GitHub ជា repo ផ្ទាល់ខ្លួន និងផ្ដល់សិទ្ធិចូលដំណើរការអោយអ្នក។ បន្ទាប់មកពួកគេអាចបញ្ចប់ប្រឡង និងការងារនិងដាក់ស្នើជាបញ្ហាដល់អ្នកតាមរយៈ issues លើ repo ថ្នាក់រៀនរបស់អ្នក។
មានវិធីជាច្រើនក្នុងការធ្វើឲ្យវាដំណើរការបានក្នុងទ្រង់ទ្រាយថ្នាក់រៀនអនឡាញ។ សូមប្រាប់យើងអំពីរបៀបណាដែលសមស្របជាងគេសម្រាប់អ្នក!
## រួមបញ្ចូលនៅក្នុងមេរៀននេះ៖
20 មេរៀន, 40 ប្រលង, និង 20 ការងារ។ សេចក្ដីសង្ខេបរូបភាពត្រូវបានភ្ជាប់ជាមួយមេរៀនសម្រាប់អ្នករៀនដោយឃើញ។ មេរៀនជាច្រើនមានក្នុងទាំង Python និង R និងអាចបញ្ចប់ប្រើ Jupyter notebooks ក្នុង VS Code។ អំពីរបៀបកំណត់ថ្នាក់រៀនរបស់អ្នកដើម្បីប្រើបច្ចេកវិទ្យានេះ៖ https://code.visualstudio.com/docs/datascience/jupyter-notebooks។
សេចក្ដីសង្ខេបរូបភាពទាំងអស់ រួមទាំងបដា​ទំហំធំ ដាក់ក្នុង [ថតនេះ](../../sketchnotes)។
អ្នកក៏អាចបើកប្រើមេរៀននេះជាគេហទំព័រឯករាជ្យដែលអាចប្រើបានបណ្តោះអាសន្ន ដោយប្រើ [Docsify](https://docsify.js.org/#/)។ [ដំឡើង Docsify](https://docsify.js.org/#/quickstart) លើម៉ាស៊ីនក្នុងផ្ទះរបស់អ្នក បន្ទាប់មកនៅថតមេ root នៃសម្រង់នេះ បញ្ចូលពាក្យ `docsify serve`។ គេហទំព័រនឹងបញ្ជូននៅលើទ្វារ 3000 លើ localhost របស់អ្នក: `localhost:3000`
ជម្រើសមេរៀនបណ្តោះអាសន្ននឹងបើកជាទំព័របណ្ដាញឯករាជ្យ: https://localhost:3000
មេរៀនត្រូវបានចាត់ទុកជា 6 ផ្នែក៖
- 1: ការណែនាំ
- 1: កំណត់ទ្រង់ទ្រាយវិទ្យាចរចារទិន្នន័យ
- 2: ទ្រឹស្តី គុណធម៌
- 3: កំណត់ទិន្នន័យ
- 4: ទិដ្ឋភាពទូទៅនៃប្រូប៉ាប៊ីលីទី និងស្ថិតិ
- 2: ការធ្វើការជាមួយទិន្នន័យ
- 5: មូលដ្ឋានទិន្នន័យទំនាក់ទំនង
- 6: មូលដ្ឋានទិន្នន័យមិនទាក់ទង
- 7: Python
- 8: ការរៀបចំទិន្នន័យ
- 3: ការតំណាងទិន្នន័យ
- 9: ការតំណាងបរិមាណ
- 10: ការតំណាងបចេ្ឆផ្សាយ
- 11: ការតំណាងសមាហរណ៍
- 12: ការតំណាងទំនាក់ទំនង
- 13: ការតំណាងមានអត្ថិភាព
- 4: ជីវចរិតវិទ្យាចរចាទិន្នន័យ
- 14: ការណែនាំ
- 15: ការវិភាគ
- 16: ការទំនាក់ទំនង
- 5: វិទ្យាចរចាទិន្នន័យនៅលើពពក
- 17: ការណែនាំ
- 18: ជម្រើសកូដទាប
- 19: Azure
- 6: វិទ្យាចរចាទិន្នន័យនៅក្នុងធម្មជាតិ
- 20: ទិដ្ឋភាពទូទៅ
## សូមផ្ដល់មតិយោបល់ទៅយើង!
យើងចង់ធ្វើឲ្យមេរៀននេះដំណើរការសម្រាប់អ្នក និងសិស្សរបស់អ្នក។ សូមផ្ដល់មតិយោបល់នៅលើក្តារពិភាក្សា! សូមរីករាយបង្កើតតំបន់ថ្នាក់ស្ដាប់នៅលើក្តារពិភាក្សាសម្រាប់សិស្សរបស់អ្នក។
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការបដិសេដ**៖
ឯកសារនេះត្រូវបានបកប្រែប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលយើងខិតខំប្រឹងប្រែងដើម្បីភាពត្រឹមត្រូវ សូមយល់ការលើបថាការបកប្រែដោយស្វ័យmọត៍អាចមានកំហុសឬភាពមិនត្រឹមត្រូវ។ ឯកសារដើមនៅភាសាមាតុភូមិត្រូវបានគេចាត់ទុកជាភាសាផ្លូវការ។ សម្រាប់ព័ត៌មានសំខាន់ សូមណែនាំឲ្យប្រើការបកប្រែដោយមនុស្សជំនាញ។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកប្រែខុសពីការប្រើប្រាស់បកប្រែនេះឡើយ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,131 @@
# ព្រឹត្តិការណ៍សួរសំណួរ
ព្រឹត្តិការណ៍សួរសំណួរទាំងនេះគឺជាព្រឹត្តិការណ៍សួរសំណួរមុននិងក្រោយមេរៀនសម្រាប់មេរៀនវិទ្យាសាស្ត្រទិន្នន័យនៅ https://aka.ms/datascience-beginners
## ការបន្ថែមកំណត់ត្រាព្រឹត្តិការណ៍សួរសំណួរដែលបានបកប្រែ
បន្ថែមការបកប្រែព្រឹត្តិការណ៍សួរសំណួរដោយបង្កើតរចនាសម្ព័ន្ធព្រឹត្តិការណ៍សួរសំណួរដែលផ្គូផ្គងគ្នានៅក្នុងថត `assets/translations`។ ព្រឹត្តិការណ៍សួរសំណួរដើមមាននៅក្នុង `assets/translations/en`។ ព្រឹត្តិការណ៍សួរសំណួរត្រូវបានបំបែកជា​ចំនួនជាក្រុម​ពីរ នៃថ្នាក់សួរសំណួរ។ ត្រូវប្រាកដថាអ្នកត្រូវតាមលេខរៀងជាមួយផ្នែកព្រឹត្តិការណ៍សួរសំនួរដូចគ្នា។ មានព្រឹត្តិការណ៍សួរសំណួរចំនួន ៤០ ក្នុងមេរៀននេះ ហើយលេខរាប់ចាប់ពី 0 ។
បន្ទាប់ពីកែសម្រួលការបកប្រែ សូមកែសម្រួលឯកសារ index.js នៅក្នុងថតបកប្រែដើម្បីនាំចូលឯកសារទាំងអស់ដោយអនុវត្តតាមទំនាក់ទំនងនៅក្នុង `en`
កែសម្រួលឯកសារ `index.js` នៅក្នុង `assets/translations` ដើម្បីនាំចូលឯកសារបកប្រែថ្មី។
បន្ទាប់មក កែសម្រួលផ្ទាំងជាលំហូរនៅក្នុង `App.vue` នៅក្នុងកម្មវិធីនេះ ដើម្បីបន្ថែមភាសារបស់អ្នក។ ត្រូវផ្គូផ្គងការបំប្លែងខ្លីរបស់ភាសារឱ្យស្របជាមួយឈ្មោះថតសម្រាប់ភាសារបស់អ្នក។
ចុងក្រោយ កែសម្រួលតំណភ្ជាប់ព្រឹត្តិការណ៍សួរសំណួរទាំងអស់នៅក្នុងមេរៀនដែលបានបកប្រែ ប្រសិនបើមាន ដើម្បីបញ្ចូលការបំប្លែងភាសានេះជាប៉ារ៉ាម៉ែត្រសំណួរ៖ `?loc=fr` ជាឧទាហរណ៍។
## ការតំឡើងគម្រោង
```
npm install
```
### កំណត់រួច ហើយផ្ទុកឡើងវិញសម្រាប់ការអភិវឌ្ឍន៍
```
npm run serve
```
### កំណត់រួច ហើយបង្រួមសម្រាប់ការផលិត
```
npm run build
```
### ត្រួតពិនិត្យ និងកែសម្រួលឯកសារ
```
npm run lint
```
### ប្ដូរតំរូវការកំណត់
មើល [យោងការកំណត់](https://cli.vuejs.org/config/)។
គាំទ្រ៖ អរគុណចំពោះកំណែដើមនៃកម្មវិធីព្រឹត្តិការណ៍សួរសំណួរនេះ៖ https://github.com/arpan45/simple-quiz-vue
## ការបង្ហោះទៅ Azure
នេះជាមេរៀនជំហានក្រោយជំហាន់ដើម្បីជួយអ្នកចាប់ផ្តើម៖
1. Fork រត់បញ្ជី GitHub
ធ្វើឱ្យប្រាកដថាកូដកម្មវិធីអេបស្ទាតរបស់អ្នកមាននៅក្នុងរត់បញ្ជី GitHub របស់អ្នក។ Fork រត់បញ្ជីនេះ។
2. បង្កើត Azure Static Web App
- បង្កើតគណនី [Azure](http://azure.microsoft.com)
- ចូលទៅកាន់ [Azure portal](https://portal.azure.com)
- ចុច “Create a resource” ហើយស្វែងរក “Static Web App”។
- ចុច “Create”។
3. កំណត់ Static Web App
- មូលដ្ឋាន៖ Subscription: ជ្រើសរើសការចុះបញ្ជី Azure របស់អ្នក។
- Resource Group: បង្កើតក្រុមធនធានថ្មី ឬប្រើក្រុមដែលមានរួច។
- Name: ផ្តល់ឈ្មោះសម្រាប់កម្មវិធីអេបស្ទាតរបស់អ្នក។
- តំបន់៖ ជ្រើសតំបន់ដែលនៅក្បែរពេលអ្នកប្រើប្រាស់របស់អ្នក។
- #### ព័ត៌មានការបង្ហោះ:
- ប្រភព៖ ជ្រើស "GitHub"។
- គណនី GitHub៖ អនុញ្ញាត Azure ដើម្បីចូលប្រើគណនី GitHub របស់អ្នក។
- អង្គភាព៖ ជ្រើសអង្គភាព GitHub របស់អ្នក។
- រត់បញ្ជី៖ ជ្រើសរត់បញ្ជីដែលមានកម្មវិធីអេបស្ទាតរបស់អ្នក។
- សាខា៖ ជ្រើសសាខាដែលអ្នកចង់បង្ហោះពី។
- #### ព័ត៌មានផលិត៖
- Build Presets: ជ្រើសផ្ទាំងការងារដែលកម្មវិធីរបស់អ្នកត្រូវបានកំណត់ជាមួយ (ឧ. React, Angular, Vue, ជាដើម)។
- App Location: បញ្ជាក់ថតដែលមានកូដកម្មវិធីរបស់អ្នក (ឧ. / ប្រសិនបើវានៅក្នុងថតដើម)។
- API Location: ប្រសិនបើអ្នកមាន API សូមបញ្ជាក់ទីតាំង (ជាជម្រើស)។
- Output Location: បញ្ជាក់ថតដែលផលិតផលបង្កើត (ឧ. build ឬ dist)។
4. ពិនិត្យ និងបង្កើត
ពិនិត្យការកំណត់របស់អ្នកហើយចុច “Create”។ Azure នឹងរៀបចំធនធានត្រឹមត្រូវ និងបង្កើត workflow GitHub Actions នៅក្នុងរត់បញ្ជីរបស់អ្នក។
5. Workflow GitHub Actions
Azure នឹងបង្កើតឯកសារ workflow GitHub Actions ដោយស្វ័យប្រវត្តិ នៅក្នុងរត់បញ្ជីរបស់អ្នក (.github/workflows/azure-static-web-apps-<name>.yml)។ Workflow នេះនឹងគ្រប់គ្រងដំណើរការបង្កើត និងការបង្ហោះ។
6. តាមដានការបង្ហោះ
ចូលទៅកាន់ផ្ទាំង “Actions” នៅក្នុងរត់បញ្ជី GitHub របស់អ្នក។
អ្នកគួរតែឃើញ workflow កំពុងដំណើរការ។ Workflow នេះនឹងបង្កើត និងបង្ហោះកម្មវិធីអេបស្ទាតរបស់អ្នកទៅ Azure។
ពេល workflow សម្រេចរួច ពាក្យសុំរបស់អ្នកនឹងមាននៅលើ URL Azure ដែលបានផ្ដល់។
### ឧទាហរណ៍ឯកសារ Workflow
នេះគឺជាឧទាហរណ៍នៃរូបរាងឯកសារ workflow GitHub Actions:
name: ការបង្ហោះ CI/CD របស់ Azure Static Web Apps
```
on:
push:
branches:
- main
pull_request:
types: [opened, synchronize, reopened, closed]
branches:
- main
jobs:
build_and_deploy_job:
runs-on: ubuntu-latest
name: Build and Deploy Job
steps:
- uses: actions/checkout@v2
- name: Build And Deploy
id: builddeploy
uses: Azure/static-web-apps-deploy@v1
with:
azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }}
repo_token: ${{ secrets.GITHUB_TOKEN }}
action: "upload"
app_location: "quiz-app" # App source code path
api_location: ""API source code path optional
output_location: "dist" #Built app content directory - optional
```
### ឯកសារបន្ថែម
- [ឯកសារព័ត៌មាន Azure Static Web Apps](https://learn.microsoft.com/azure/static-web-apps/getting-started)
- [ឯកសារព័ត៌មាន GitHub Actions](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការបដិសេធ**៖
ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលដែលយើងខិតខំដើម្បីឱ្យមានភាពត្រឹមត្រូវ សូមយល់ថាការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុស ឬភាពមិនត្រឹមត្រូវខ្លះ។ ឯកសារដើមជាភាសាម្ដងខ្លួនគួរត្រូវបានគិតជាទីតាំងប្រភពដ៏មានសុពលភាព។ សម្រាប់ព័ត៌មានសំខាន់ៗ សូមផ្តល់អាទិភាពនូវការបកប្រែដោយមនុស្សមានជំនាញ។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកស្រាយខុសប្រកបដោយការប្រើប្រាស់ការបកប្រែនេះឡើយ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -0,0 +1,14 @@
ស្វែងរកសគ្រីបតាំងទាំងអស់នៅទីនេះ!
## អ្នកឥណទាន
Nitya Narasimhan, ច្នៃប្រឌិត
![roadmap sketchnote](../../../translated_images/km/00-Roadmap.4905d6567dff4753.webp)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ការបដិសេធ**៖
ឯកសារនេះត្រូវបានបកប្រែក្នុងការប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ទោះបីបើយើងខិតខំប្រឹងប្រែងសម្រាប់ភាពត្រឹមត្រូវក៏ដោយ សូមយល់ដឹងថាការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុសឬការមិនត្រឹមត្រូវ។ ឯកសារដើមក្នុងភាសាដំបូងគួរត្រូវបានស្គាល់ថាជារបស់ថ្នាក់ដើមសម្រាប់យោង។ សម្រាប់ព័ត៌មានសំខាន់ៗ សូមណែនាំឱ្យប្រើការបកប្រែដោយមនុស្សជំនាញផ្នែកវិជ្ជាជីវៈ។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកស្រាយខុសចេញពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
Loading…
Cancel
Save