parent
50a8750976
commit
99b18ade45
File diff suppressed because one or more lines are too long
@ -0,0 +1,24 @@
|
||||
# មុខជំនាញទិន្នន័យ
|
||||
|
||||

|
||||
> រូបថតដោយ <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 @@
|
||||
# ការធ្វើការជាមួយទិន្នន័យ៖ មូលដ្ឋានទិន្នន័យទំនាក់ទំនង
|
||||
|
||||
| ](../../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,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,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 @@
|
||||
# ការបំពេញទិន្នន័យ: ការរៀបចំទិន្នន័យ
|
||||
|
||||
| ](../../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 -->
|
||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,23 @@
|
||||
# ការធ្វើការជាមួយទិន្នន័យ
|
||||
|
||||

|
||||
> រូបថតដោយ <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 @@
|
||||
# ការមើលឃើញចំនួន
|
||||
|
||||
| ](../../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()
|
||||
```
|
||||

|
||||
|
||||
តើអ្នកសង្កេតអ្វីបានខ្លះភ្លាមៗ? មានរាងមួយពិតជា 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()
|
||||
```
|
||||

|
||||
|
||||
ទោះបីមានការបង្វិលស្លាកបានកំណត់ទៅ ៤៥ កុំផ្នែក ក៏មានច្រើនពេកមិនអាចអានបាន។ តោះសាកល្បងយុទ្ធសាស្ត្រផ្សេងទៀត៖ ស្លាកគ្រាប់ថ្មីប៉ុណ្ណោះ ហើយកំណត់ស្លាកនៅក្នុងតារាង។ អ្នកអាចប្រើរូប 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)`) ហើយប្រើឈ្មោះសត្វបក្សីជាស្លាក។
|
||||
|
||||
តើអ្នកបានរកឃើញអ្វី?
|
||||
|
||||

|
||||
|
||||
## ស្កេនទិន្នន័យរបស់អ្នក
|
||||
|
||||
ទាំង 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()
|
||||
```
|
||||
|
||||
|
||||
ដោយការសសៃចេញចំណុចក្រៅស្តង់ដា ទិន្នន័យរបស់អ្នកឥឡូវនេះមានសមាសភាពល្អ និងងាយស្រួលយល់។
|
||||
|
||||

|
||||
|
||||
ឥឡូវនេះយើងមាន dataset ដែលបានជ្រៅស្អាតយ៉ាងហោចណាស់ក្នុងវិស័យទំហំស្លាប ចូររកឃើញព័ត៌មានបន្ថែមអំពីសត្វបក្សីទាំងនេះ។
|
||||
|
||||
ខណៈដែលរូបជួរឈរ និង scatterplot អាចបង្ហាញព័ត៌មានអំពីតម្លៃទិន្នន័យ និងការចែកចាយរបស់វា ប៉ុន្តា យើងចង់គិតអំពីតម្លៃដែលមាននៅក្នុង dataset នេះ។ អ្នកអាចបង្កើតការមើលឃើញដើម្បីឆ្លើយសំនួរបន្ថែមអំពីចំនួន៖
|
||||
|
||||
> តើមានប៉ុន្មានប្រភេទសត្វបក្សី និងតើពួកវាមានចំនួនប៉ុន្មាន?
|
||||
> តើមានប៉ុន្មានជាបក្សីដែលស្រុតស្រយាល បញ្ហាទឹកជំនន់ កម្រ តន្ត្រី ឬធម្មតា?
|
||||
> តើមានប៉ុន្មាននៅក្នុងចំណាត់ថ្នាក់ជិនិងការបញ្ជីលំដាប់តាមផែនការលីណេអូ?
|
||||
|
||||
## ស្រាវជ្រាវរូបបារ
|
||||
|
||||
រូបបារ មានប្រយោជន៍នៅពេលអ្នកត្រូវបង្ហាញក្រុមនៃទិន្នន័យ។ តោះស្រាវជ្រាវប្រភេទសត្វបក្សីដែលមាននៅក្នុង dataset ដើម្បីមើលថាតើប្រភេទណាមានច្រើនបំផុត។
|
||||
|
||||
នៅក្នុងឯកសារ notebook បង្កើតរូបបារសាមញ្ញមួយ។
|
||||
|
||||
✅ សម្គាល់ អ្នកអាចស្កីនចេញពីបក្សីចំណុចក្រោយណាមួយដែលបានកំណត់ពីមុន កែសម្រួលកំហុសនៅចំណុចទំហំស្លាបរបស់ពួកគេ ឬទុកពួកគេនៅក្នុងការប្រើប្រាស់ប្រឡងទាំងនេះដែលមិនគិតពីតម្លៃទំហំស្លាប។
|
||||
|
||||
បើអ្នកចង់បង្កើតរូបបារ អ្នកអាចជ្រើសរើសទិន្នន័យដែលចង់ផ្តោត។ រូបបារអាចបង្កើតពីទិន្នន័យដើម៖
|
||||
|
||||
```python
|
||||
birds.plot(x='Category',
|
||||
kind='bar',
|
||||
stacked=True,
|
||||
title='Birds of Minnesota')
|
||||
|
||||
```
|
||||

|
||||
|
||||
រូបបារនេះ ពិតមែន មិនអាចអានបាន ព្រោះមានទិន្នន័យមិនសម្រាប់ក្រុមច្រើនពេក។ អ្នកត្រូវលៃតម្រូវតែជ្រើសទិន្នន័យដែលចង់គូរតែប៉ុណ្ណោះ។ តោះមកមើលប្រវែងបក្សីផ្អែកលើប្រភេទ។
|
||||
|
||||
ស្កេនទិន្នន័យរបស់អ្នក ដើម្បីរួមបញ្ចូលតែប្រភេទសត្វបក្សី។
|
||||
|
||||
✅ សូមចំណាំថា អ្នកប្រើ Pandas ដើម្បីគ្រប់គ្រងទិន្នន័យ ហើយបន្ទាប់មកអោយ Matplotlib សម្រាប់បង្កើតរូប។
|
||||
|
||||
ដោយសារតែមានប្រភេទជាច្រើន អ្នកអាចបង្ហាញរូបនេះជាតំណើងឈររង្វ្រឹង ហើយកែទំងន់របស់វាដើម្បីគ្រប់គ្រងទិន្នន័យទាំងមូល៖
|
||||
|
||||
```python
|
||||
category_count = birds.value_counts(birds['Category'].values, sort=True)
|
||||
plt.rcParams['figure.figsize'] = [6, 12]
|
||||
category_count.plot.barh()
|
||||
```
|
||||

|
||||
|
||||
រូបបារនេះបង្ហាញទស្សនៈល្អនៃចំនួនបក្សីនៅក្នុងប្រភេទនីមួយៗ។ ក្នុងមួយទស្សន៏ជូនភ្នែក អ្នកឃើញចំនួនសត្វបក្សីច្រើនបំផុតនៅតំបន់នេះស្ថិតនៅក្នុងប្រភេទ 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()
|
||||
```
|
||||

|
||||
|
||||
គ្មានអ្វីដែលអស្ចារ្យនៅទីនេះទេ៖ សត្វ 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។ អ្នកអាចនិយាយយ៉ាងស្ងប់ស្ងាត់ថា ដោយផ្អែកលើទិន្នន័យនេះ បក្សីធំនានឹងមានជួរត្រង់ប្រវែងធំបំផុត។ វាគួរឲ្យចាប់អារម្មណ៍ណាស់!
|
||||
|
||||

|
||||
|
||||
## 🚀 បញ្ហា
|
||||
|
||||
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 @@
|
||||
# ការបង្ហាញចែកចាយទិន្នន័យ
|
||||
|
||||
| ](../../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()
|
||||
```
|
||||

|
||||
|
||||
នេះផ្តល់ឱ្យនូវទិដ្ឋភាពទូទៅអំពីការចែកចាយរេសមាយប្រវែងសារពាង្គកាយក្នុងមួយបក្សី តាមក្រុម Order ប៉ុន្តែមិនមែនជារបៀបល្អបំផុតក្នុងការបង្ហាញការចែកចាយពិតប្រាកដទេ។ ការងារនេះភាគច្រើនត្រូវបានគ្រប់គ្រងដោយការបង្កើត Histogram។
|
||||
## ការដំណើរការជាមួយ histograms
|
||||
|
||||
Matplotlib ផ្តល់នូវវិធីល្អណាស់ក្នុងការបង្ហាញការចែកចាយទិន្នន័យដោយប្រើ Histograms។ ប្រភេទតារាងនេះមានរូបរាងដូចជាតារាងបារ ដែលការចែកចាយអាចមើលឃើញតាមរបៀបឡើង និងចុះនៃបារ។ ដើម្បីបង្កើត histogram អ្នកត្រូវការទិន្នន័យជាតួចំនួន។ ដើម្បីបង្កើត Histogram អ្នកអាចគូសតារាងដោយកំណត់ប្រភេទជា 'hist' សម្រាប់ Histogram។ តារាងនេះបង្ហាញនូវការចែកចាយនៃ MaxBodyMass សម្រាប់ចន្លោះទិន្នន័យជាច្រើនរួមទាំងទាំងសំណុំទិន្នន័យ។ ដោយបែងចែកអារេនៃទិន្នន័យដែលបានផ្តល់ជាព្រំដែនតូចៗ វាអាចបង្ហាញការចែកចាយនៃតម្លៃទិន្នន័យ៖
|
||||
|
||||
```python
|
||||
birds['MaxBodyMass'].plot(kind = 'hist', bins = 10, figsize = (12,12))
|
||||
plt.show()
|
||||
```
|
||||

|
||||
|
||||
ដូចដែលអ្នកអាចមើលឃើញ តួចំនួនភាគច្រើនពីបក្សីច្រើនជាង ៤០០ ត្រូវបានដាក់នៅក្នុងចន្លោះក្រោម ២០០០ សម្រាប់ Max Body Mass របស់ពួកវា។ សូមទទួលបានអំណាចកាន់តែច្រើនលើទិន្នន័យដោយការប្ដូរព៉ារ៉ាម៉ែត្រ `bins` ទៅចំនួនខ្ពស់ជាងនេះ ប្រហែល ៣០៖
|
||||
|
||||
```python
|
||||
birds['MaxBodyMass'].plot(kind = 'hist', bins = 30, figsize = (12,12))
|
||||
plt.show()
|
||||
```
|
||||

|
||||
|
||||
តារាងនេះបង្ហាញការចែកចាយដោយមានលំអិតបន្ថែម។ តារាងមួយដែលមិនបត់ទៅឆ្វេងច្រើនអាចត្រូវបានបង្កើតដោយធ្វើឲ្យប្រាកដថាអ្នកជ្រើសតែទិន្នន័យត្រឹមក្នុងចន្លោះជាក់លាក់មួយ៖
|
||||
|
||||
ធ្វើតម្រងទិន្នន័យរបស់អ្នកឲ្យទទួលបានតែបក្សីដែល mass នៃរូបកាយមានតិចជាង ៦០ ហើយបង្ហាញ ៤០ `bins`៖
|
||||
|
||||
```python
|
||||
filteredBirds = birds[(birds['MaxBodyMass'] > 1) & (birds['MaxBodyMass'] < 60)]
|
||||
filteredBirds['MaxBodyMass'].plot(kind = 'hist',bins = 40,figsize = (12,12))
|
||||
plt.show()
|
||||
```
|
||||

|
||||
|
||||
✅ សូមសាកល្បងតម្រង និងចំណុចទិន្នន័យផ្សេងទៀត។ ដើម្បីមើលការចែកចាយទិន្នន័យពេញលេញ សូមដកចេញតម្រង `['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)
|
||||
```
|
||||
មានមួយចំនុចដែលទៅទំនាក់ទំនងគ្នាដែលរំពឹងទុកបានរវាងធាតុទាំងពីរនៅលើអ័ក្សដែលរំពឹងទុក មួយមានការប្រមូលផ្តុំខ្លាំងជាពិសេស៖
|
||||
|
||||

|
||||
|
||||
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();
|
||||
```
|
||||
|
||||

|
||||
|
||||
មើលទៅមិនមានទំនាក់ទំនងល្អណាមួយរវាងទំហំស្លាបអប្បបរមា និងស្ថានភាពការការពារទេ។ សាកល្បងធាតុផ្សេងទៀតនៅក្នុងសំណុំទិន្នន័យដោយប្រើវិធីនេះ។ អ្នកអាចសាកល្បងតម្រងផ្សេងៗបានផងដែរ។ តើអ្នកបានរកឃើញទំនាក់ទំនងមួយណា?
|
||||
|
||||
## រាងផ្ទុកដង់ស៊ីត្តី (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()
|
||||
```
|
||||

|
||||
|
||||
អ្នកអាចមើលឃើញថាតារាងនេះមានការមានរបងទន់លើការបង្ហាញវាលស្លាបអប្បបរមា; វាត្រឡប់ទៅតារាងពីមុន ហើយគ្រាន់តែផ្ទាត់បន្តិចបន្តួច។ យោងតាមឯកសាររបស់ Seaborn, "ប្រៀបធៀបនឹង histogram, KDE អាចបង្កើតតារាងដែលមានចរាចរល្អ និងងាយក្នុងការបកស្រាយ ជាពិសេសនៅពេលគូសតារាងច្រើន។ ប៉ុន្តែវាអាចបង្កើតបំរែបំរួលបើការចែកចាយគោលដៅត្រូវបានដាក់ព្រំដែន ឬមិនរលោង។ ដូចជា histogram គុណភាពនៃការបង្ហាញក៏ពឹងផ្អែកលើការជ្រើសយកព៉ារ៉ាម៉ែត្រការស្ទង់ល្អ។" [ប្រភព](https://seaborn.pydata.org/generated/seaborn.kdeplot.html) ក្នុងន័យផ្សេង outliers តែងធ្វើឲ្យតារាងរបស់អ្នកប្រព្រឹត្ដខុស។
|
||||
|
||||
ប្រសិនបើអ្នកចង់ពិនិត្យមើលខ្សែកោង MaxBodyMass ដែលចំហាចេញនៅតារាងទីពីរដែលបានបង្កើត អ្នកអាចធ្វើឲ្យរលោងបានយ៉ាងល្អជាមួយវិធីនេះ៖
|
||||
|
||||
```python
|
||||
sns.kdeplot(filteredBirds['MaxBodyMass'])
|
||||
plt.show()
|
||||
```
|
||||

|
||||
|
||||
ប្រសិនបើអ្នកចង់បានខ្សែកោងរលោង ប៉ុន្តែមិនរលោងពេក អ្នកអាចកែប្រែព៉ារ៉ាម៉ែត្រ `bw_adjust`៖
|
||||
|
||||
```python
|
||||
sns.kdeplot(filteredBirds['MaxBodyMass'], bw_adjust=.2)
|
||||
plt.show()
|
||||
```
|
||||

|
||||
|
||||
✅ អានអំពីព៉ារ៉ាម៉ែត្រដែលមានសម្រាប់តារាងនេះ ហើយសាកល្បងប្រើ!
|
||||
|
||||
ប្រភេទតារាងនេះផ្តល់នូវការបង្ហាញត្រចៀកស្រាលដែរ។ ជាមួយបណ្ដាលេខកូដមួយចំនួន អ្នកអាចបង្ហាញភាពងាយស្រួលក្នុងការមើលបរិមាណសារពាង្គកាយអតិបរមា នៃបក្សីតាមក្រុម Order:
|
||||
|
||||
```python
|
||||
sns.kdeplot(
|
||||
data=filteredBirds, x="MaxBodyMass", hue="Order",
|
||||
fill=True, common_norm=False, palette="crest",
|
||||
alpha=.5, linewidth=0,
|
||||
)
|
||||
```
|
||||
|
||||

|
||||
|
||||
អ្នកអាចផាត់មាំរាងដង់ស៊ីត្តីច្រើនផ្សំក្នុងតារាងតែមួយផងដែរ។ តេស្ត MaxLength និង MinLength នៃបក្សី ប្រៀបធៀបនឹងស្ថានភាពការការពាររបស់ពួកវា៖
|
||||
|
||||
```python
|
||||
sns.kdeplot(data=filteredBirds, x="MinLength", y="MaxLength", hue="ConservationStatus")
|
||||
```
|
||||
|
||||

|
||||
|
||||
ប្រហែលជាវាក៏មានតម្លៃក្នុងការស្រាវជ្រាវថាតើក្រុមបក្សី '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
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
@ -0,0 +1,198 @@
|
||||
# Visualizing Proportions
|
||||
|
||||
| ](../../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, ក្រឡាចត្រង្គគ្រាប់បាយបង្ហាញអត្រាតាមភាគរយនៃទិន្នន័យនេះ តាមរយៈចំណាត់ថ្នាក់ពីរនេះនៃផ្សិត។ វាសំខាន់ណាស់ក្នុងការកំណត់លំដាប់ស្លាកឲ្យត្រឹមត្រូវ ដូច្នេះសូមផ្ទៀងផ្ទាត់លំដាប់ដែលបង្កើតស្លាកជាប្រចាំមួយ!
|
||||
|
||||

|
||||
|
||||
## ក្រឡាចត្រង្គដូណាត់!
|
||||
|
||||
ក្រោយមក ក្រឡាចត្រង្គដូណាត់គឺជាក្រឡាចត្រង្គគ្រាប់បាយដែលមានរនាំងនៅចំកណ្ដាល។ យើងមកមើលទិន្នន័យរបស់យើងជារបៀបនេះ។
|
||||
|
||||
សូមមើលតំបន់រស់នៅផ្សេងៗដែលផ្សិតដាំដុះ៖
|
||||
|
||||
```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()
|
||||
```
|
||||
|
||||

|
||||
|
||||
កូដនេះគូរក្រឡាចត្រង្គ និងរង្វង់កណ្តាលមួយ បន្ទាប់មកបន្ថែមរង្វង់កណ្តាលនោះក្នុងក្រឡាចត្រង្គ។ អ្នកអាចកែទំហំនៃរង្វង់កណ្តាលដោយផ្លាស់ប្តូរ `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 នេះមានអត្រាពីរបីមិនទ្បឿន។ គួរឱ្យចាប់អារម្មណ៍ដែលមានផ្សិតពណ៌បៃតងច្រើន។
|
||||
|
||||

|
||||
|
||||
✅ 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,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
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
@ -0,0 +1,176 @@
|
||||
# ការធ្វើ ដាក់បង្ហាញទិន្នន័យមានអត្ថន័យ
|
||||
|
||||
| ](../../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/) សម្រាប់សំណួរដែលអ្នកសួរបាន ដោយប្រើតារាងនេះ៖
|
||||
|
||||
| អ្នកត្រូវការ: | អ្នកគួរប្រើ: |
|
||||
| -------------------------- | ------------------------------ |
|
||||
| បង្ហាញនិន្នាការទិន្នន័យតាមរយៈពេលវេលា | ខ្សែ |
|
||||
| ប្រៀបធៀបប្រភេទ | បារ, ពាយ |
|
||||
| ប្រៀបធៀបសរុប | ពាយ, បារ ដែលស្តុក |
|
||||
| បង្ហាញទំនាក់ទំនង | ចំណុចរាក់ទាក់, ខ្សែ, ផ្នែក, ខ្សែទ្វេ |
|
||||
| បង្ហាញចែកចាយ | ចំណុចរាក់ទាក់, ប្រវត្តិ, ប្រអប់ |
|
||||
| បង្ហាញនៃសមាហរណៈ | ពាយ, ដូណាត់, វ៉ាហ្វហ្វ |
|
||||
|
||||
> ✅ សម្រាប់ទម្រង់តំណាងទិន្នន័យ អ្នកប្រហែលជាត្រូវបម្លែងវាពីអត្ថបទទៅលេខ ដើម្បីឲ្យផែនតារូបភាពជួយគាំទ្រវា។
|
||||
|
||||
## ជៀសវាងការលំលំហ
|
||||
|
||||
ព្រោះថាមានច្រើនវិធីដែលទិន្នន័យអាចត្រូវបានបង្ហាញដើម្បីបញ្ជាក់មតិ ឬបង្កើតតំរូវការមិនត្រឹមត្រូវ ហើយនៅពេលជាក់ស្តែងគឺធ្វើឲ្យទិន្នន័យខូច។ មាន ឧទាហរណ៍ជាច្រើននៃផែនតារូបភាព និងព័ត៌មានមិនត្រឹមត្រូវ!
|
||||
|
||||
[](https://www.youtube.com/watch?v=oX74Nge8Wkw "How charts lie")
|
||||
|
||||
> 🎥 ចុចរូបខាងលើសម្រាប់សុន្ទរកថាស្តីពីផែនតារូបភាពមិនត្រឹមត្រូវ
|
||||
|
||||
ផែនតានេះប្ដូរតម្លៃអ័ក្ស X ឲ្យវិលត្រឡប់ក្នុងការបង្ហាញវាលេងផ្សេងពីការពិត ពឹងផ្អែកលើកាលបរិច្ឆេទ៖
|
||||
|
||||

|
||||
|
||||
[ផែនតានេះ](https://media.firstcoastnews.com/assets/WTLV/images/170ae16f-4643-438f-b689-50d66ca6a8d8/170ae16f-4643-438f-b689-50d66ca6a8d8_1140x641.jpg) គ្រប់គ្រាន់លំបាកជាងនេះ ព្រោះភ្នែកត្រូវទាញទៅស្តាំដើម្បីសន្និដ្ឋានថា ទីកន្លែងផ្សេងៗមានករណី COVID កាត់បន្ថយ។ តាមពិត ប្រសិនបើអ្នកមើលកាលបរិច្ឆេទយ៉ាងហ្មត់ចត់ អ្នកនឹងឃើញថាវាត្រូវបានផ្លាស់ប្តូរជារបៀបដែលបង្កើតនិន្នាការចុះ។
|
||||
|
||||

|
||||
|
||||
ឧទាហរណ៍ដ៏ល្បីនោះប្រើពណ៌ និងប្រែតម្លៃអ័ក្ស Y ដោយបង្ខំ៖ ជំនួសនឹងបញ្ជាក់ថាចំនួនស្លាប់ពីកាំភ្លើងកើនឡើងបន្ទាប់ពីច្បាប់រដ្ឋាភិបាលដែលគាំទ្រកាំភ្លើង តាមពិតភ្នែកត្រូវបានគួរឱ្យភ្លក់គិតថាពីព្រោះទេបង្កើតការច្រៀង។
|
||||
|
||||

|
||||
|
||||
ផែនតាពិសេសនេះបង្ហាញពីរបៀបដែលអាចគ្រប់គ្រងភាគរយ ដើម្បីផលប៉ះពាល់សើចសើច៖
|
||||
|
||||

|
||||
|
||||
ការប្រៀបធៀបរបស់អ្វីដែលមិនអាចប្រៀបធៀបគ្នា បានជាសកម្មភាពមួយផ្សេងទៀត។ មាន [គេហទំព័រអស្ចារ្យមួយ](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
|
||||
|
||||
ខ្លះនៃការដាក់បង្ហាញទិន្នន័យល្អបំផុតសព្វថ្ងៃគឺមានរូបចលនា។ Shirley Wu មានផែនតាល្អៗដែលបង្កើតជាមួយ D3 ដូចជា '[ផ្កាភ្នំពេញ](http://bl.ocks.org/sxywu/raw/d612c6c653fb8b4d7ff3d422be164a5d/)' ដែលផ្កាផ្សេងៗគ្នារបស់មួយៗពាក់ព័ន្ធទៅនឹងភាពយន្តមួយ។ ឧទាហរណ៍ផ្សេងទៀតសម្រាប់រុក្ខជាតិ Guardian គឺ 'bussed out' ដែលជាបទពិសោធន៍អន្តរកម្មផ្ដល់បទពិសោធន៍បង្ហាញរូបភាពជារួមជាមួយ Greensock និង D3 បូកជាមួយអត្ថបទ scrollytelling ដើម្បីបង្ហាញពីរបៀប NYC គ្រប់គ្រងបញ្ហាឧត្តមភាពដោយបញ្ជូនមនុស្សជាពលរដ្ឋក្រៅទីក្រុង។
|
||||
|
||||

|
||||
|
||||
> "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។ នៅពេលកម្មវិធីដំណើរការ អ្នកអាចរុញចំណុចនៅលើអេក្រង់ដើម្បីបញ្ច្រាសទិន្នន័យ។
|
||||
|
||||

|
||||
|
||||
## គម្រោង៖ បង្កើតផែនតាដើម្បីបង្ហាញបណ្ដាញដោយប្រើ 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 -->
|
||||
File diff suppressed because one or more lines are too long
@ -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 @@
|
||||
# ការមើលឃើញបរិមាណ
|
||||
| ](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()` ពីព្រោះមានគោលដៅបង្ហាញគំនូសបន្ទាត់។
|
||||
|
||||

|
||||
|
||||
តើអ្នកចាប់អារម្មណ៍អ្វីភ្លាមៗ? មានប្រហែលករណីចេញក្រៅអង្គការ ១ករណីមួយណាមួយ - នោះគឺ 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()` ផ្តល់ឈ្មោះដល់ក្រាហ្វ/គំនូស។
|
||||
|
||||

|
||||
|
||||
ទោះបីជាបានបង្វិលស្លាកទៅ 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 ដើម្បីអោយគំនូសស្អាតក្នុងវិស័យតូចម្ដង។
|
||||
|
||||
តើអ្នករកឃើញអ្វី?
|
||||
|
||||

|
||||
|
||||
## កែលម្អទិន្នន័យរបស់អ្នក
|
||||
|
||||
ទាំង 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` ហើយក៏គូសគំនូសចែកចាយចុចចំលើយមួយ។ ដោយច្រោះចេញពីករណីចេញក្រៅ ទិន្នន័យរបស់អ្នកឥឡូវនេះមានភាពសន្តិសុខ និងយល់បានល្អ។
|
||||
|
||||

|
||||
|
||||
ឥឡូវនេះដែលយើងមានសំណុំទិន្នន័យបានសម្អាតយ៉ាងហោចណាស់ក្នុងវិស័យ 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` ហើយបញ្ជាក់ពណ៌សម្រាប់ប្រភេទផ្សេងៗនៃបក្សី និងស្លាក។
|
||||
|
||||

|
||||
|
||||
គំនូសបារនេះ មិនអាចអានបានទេ ព្រោះមានទិន្នន័យមិនបានចែកក្រុមច្រើនពេក។ អ្នកត្រូវជ្រើសទិន្នន័យដែលចង់គូសប៉ុណ្ណោះ ដូច្នេះមកមើលប្រវែងនៃបក្សីដាក់លើមូលដ្ឋានប្រភេទរបស់ពួកវា។
|
||||
|
||||
ច្រោះចេញតែចំណាត់ថ្នាក់បក្សីប៉ុណ្ណោះ។
|
||||
|
||||
ដោយសារតែមានច្រើនប្រភេទ អ្នកអាចបង្ហាញគំនូសនេះឱ្យឈរឈរ ហើយកែសំរួលកម្ពស់វាឱ្យត្រូវនឹងទិន្នន័យទាំងអស់៖
|
||||
|
||||
```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()` ដើម្បីបង្ហាញបារ៉ាងហ្វូយហ្វូយ។
|
||||
|
||||

|
||||
|
||||
គំនូសបារនេះបង្ហាញទស្សនវិស័យល្អចំពោះចំនួនបក្សីក្នុងប្រភេទនីមួយៗ។ ក្នុងពេលខ្លី ទស្សនាវិទ្យាអ្នកមើលឃើញថាចំនួនបក្សីច្រើនបំផុតនៅតំបន់នេះស្ថិតនៅក្នុងប្រភេទ 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` ហើយបន្ទាប់មកគូសគំនូសបារ។
|
||||
|
||||

|
||||
|
||||
គ្មានអ្វីអស្រូវទេ៖ បក្សី 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()
|
||||
```
|
||||

|
||||
|
||||
## 🚀 សម្រួល
|
||||
|
||||
សំណុំទិន្នន័យបក្សីនេះផ្តល់ព័ត៌មានជាច្រើនអំពីប្រភេទបក្សីនៅក្នុងប្រព័ន្ធបរិស្ថានជាក់លាក់ទេ។ ស្វែងរកនៅលើអ៊ីនធឺណិត ហើយមើលថាតើអ្នកអាចរកឃើញសំណុំទិន្នន័យផ្សេងៗទាក់ទងនឹងបក្សីទៀតប៉ុន្មាន។ ហាត់បង្កើតគំនូស និងក្រាហ្វិកជុំវិញបក្សីទាំងនេះ ដើម្បីរកឃើញកត្តាផ្សេងៗដែលអ្នកមិនធ្លាប់ដឹង។
|
||||
|
||||
## [តេស្តបន្ទាប់មេរៀន](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
|
||||
|
||||
| ](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()
|
||||
```
|
||||

|
||||
|
||||
នេះបង្ហាញទិដ្ឋភាពទូទៅនៃចែកចាយប្រវែងកាយខ្លួនប្រចាំលំដាប់សត្វបក ប៉ុន្តែវាមិនមែនជាវិធីល្អបំផុតសម្រាប់បង្ហាញចែកចាយពិតប្រាកដទេ។ ការប្រព្រឹត្តការនេះទូទៅត្រូវបានធ្វើដោយការ បង្កើតតារាងហ៊ីស្តូក្រាម។
|
||||
## ការងារជាមួយហ៊ីស្តូក្រាម
|
||||
|
||||
`ggplot2` ផ្ដល់នូវវិធីល្អបំផុតសម្រាប់បង្ហាញចែកចាយទិន្នន័យដោយការប្រើប្រាស់ហ៊ីស្តូក្រាម។ ប្រភេទតារាងនេះគឺដូចជាតារាងកន្ទុយដែលអាចឃើញចែកចាយតាមរបៀបពីការកើនឡើងនិងធ្លាក់ចុះរបស់កន្ទុយ។ ដើម្បីបង្កើតហ៊ីស្តូក្រាម អ្នកត្រូវការទិន្នន័យគណិតវិទ្យា ។ ដើម្បីបង្កើតហ៊ីស្តូក្រាម អ្នកអាចគូរតារាងបានដោយកំណត់ប្រភេទជា 'hist' សម្រាប់ហ៊ីស្តូក្រាម។ តារាងនេះបង្ហាញចែកចាយនៃ MaxBodyMass សម្រាប់ជួរទិន្នន័យគណិតវិទ្យាទាំងមូលនៃឃ្លាំងទិន្នន័យ។ ដោយបែងចែកសំណុំទិន្នន័យដែលមានទៅជាធុងតូចៗ វាអាចបង្ហាញចែកចាយតម្លៃទិន្នន័យបាន៖
|
||||
|
||||
```r
|
||||
ggplot(data = birds_filtered, aes(x = MaxBodyMass)) +
|
||||
geom_histogram(bins=10)+ylab('Frequency')
|
||||
```
|
||||

|
||||
|
||||
ដូចដែលអ្នកអាចមើលឃើញ សត្វបកជាង ៤០០ ត្រូវរុំខ្លួននៅក្នុងជួរទាបជាង ២០០០ សម្រាប់មាស់របស់ពួកវា។ ទទួលបានការយល់ដឹងបន្ថែមអំពីទិន្នន័យដោយប្តូរពារ៉ាម៉ែត្រ `bins` ទៅចំនួនខ្ពស់ជាងនេះ ប្រហែលជា ៣០៖
|
||||
|
||||
```r
|
||||
ggplot(data = birds_filtered, aes(x = MaxBodyMass)) + geom_histogram(bins=30)+ylab('Frequency')
|
||||
```
|
||||
|
||||

|
||||
|
||||
តារាងនេះបង្ហាញចែកចាយនៅក្នុងរបៀបលំអិតជាងមុន។ តារាងដែលមិនលំអៀងទៅឆ្វេងច្រើនអាចបង្កើតបានដោយធ្វើឲ្យប្រាកដថាអ្នកជ្រើសរើសទិន្នន័យក្នុងជួរមួយកំណត់៖
|
||||
|
||||
ចម្រាញ់ទិន្នន័យរបស់អ្នកសម្រាប់ត្រឹមតែសត្វបកដែលម៉ាសរាងកាយតិចជាង ៦០ ហើយបង្ហាញ ៣០ `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')
|
||||
```
|
||||
|
||||

|
||||
|
||||
✅ សាកល្បងចម្រាញ់និងចំណុចទិន្នន័យផ្សេងទៀត។ ដើម្បីមើលចែកចាយទិន្នន័យបែបពេញលេញ សូមដកចេញថ្នាក់តម្រៀប `['MaxBodyMass']` ដើម្បីបង្ហាញចែកចាយដែលមានស្លាក។
|
||||
|
||||
ហ៊ីស្តូក្រាមផ្ដល់នូវពណ៌ និងស្លាកដែលមានលក្ខណៈល្អសម្រាប់សាកល្បងដែរ៖
|
||||
|
||||
បង្កើតហ៊ីស្តូក្រាម 2D ដើម្បីប្រៀបធៀបទំនាក់ទំនងរវាងចែកចាយពីរប្រភេទ។ យើងប្រៀបធៀบ `MaxBodyMass` និង `MaxLength`។ `ggplot2` ផ្ដល់វិធីសាស្រ្តមួយដែលបង្កើតពណ៌ភ្លឺសម្រាប់បង្ហាញភាពប្រសើររួមបញ្ចូលគ្នា៖
|
||||
|
||||
```r
|
||||
ggplot(data=birds_filtered_1, aes(x=MaxBodyMass, y=MaxLength) ) +
|
||||
geom_bin2d() +scale_fill_continuous(type = "viridis")
|
||||
```
|
||||
មានបំណងមានទំនាក់ទំនងដែលគេរំពឹងទុករវាងធាតុទាំងពីរនៅលើតួអក្សរដែលរំពឹងទុក មួយចំណុចបង្ហាញសកម្មភាពរួមបញ្ចូលខ្លាំងពិសេសមួយ៖
|
||||
|
||||

|
||||
|
||||
ហ៊ីស្តូក្រាមដំណើរការល្អសម្រាប់ទិន្នន័យគណិតវិទ្យា។ តើអ្នកត្រូវការមើលចែកចាយផ្អែកលើទិន្នន័យអក្សរតើដូចម្តេច?
|
||||
|
||||
## ស្វែងយល់ឃ្លាំងទិន្នន័យសម្រាប់ចែកចាយដោយប្រើទិន្នន័យអក្សរ
|
||||
|
||||
ឃ្លាំងទិន្នន័យនេះក៏មានព័ត៌មានល្អអំពីប្រភេទសត្វបក និងក្រុមជីវចម្រុះជាតិ គ្រួសារ និងស្ថានភាពការធ្វើអភិរក្សរបស់វា។ មកពិនិត្យពីព័ត៌មានស្តីអំពីការរក្សាសត្វនេះ។ តើមានចែកចាយយ៉ាងដូចម្តេចអំពីសត្វបក តាមស្ថានភាពការធ្វើអភិរក្សរបស់ពួកវា?
|
||||
|
||||
> ✅ ក្នុងឃ្លាំងទិន្នន័យនេះ វាក៏មានអក្សរកាត់ច្រើនប្រើសម្រាប់ពិពណ៌នាស្ថានភាពការធ្វើអភិរក្សផងដែរ។ អក្សកាត់ទាំងនេះមានមកពី [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"))
|
||||
```
|
||||
|
||||

|
||||
|
||||
មិនមានទំនាក់ទំនងល្អណាមួយមាត់ស្លាបអប្បបរមា និងស្ថានភាពការធ្វើអភិរក្ស។ សាកល្បងធាតុផ្សេងទៀតពីឃ្លាំងទិន្នន័យដោយវិធីនេះ។ អ្នកអាចសាកល្បងចម្រាញ់ផ្សេងៗបានផងដែរ។ តើអ្នករកឃើញទំនាក់ទំនងដែរឬទេ?
|
||||
|
||||
## តារាងកម្រាស់ (Density plots)
|
||||
|
||||
អ្នកប្រហែលថាបានដឹងថា ហ៊ីស្តូក្រាមដែលយើងបានមើលមកដល់បច្ចុប្បន្នគឺ 'ជ પગបិតជំហាន' ហើយមិនរលូនទន់ត្រង់។ ដើម្បីបង្ហាញតារាងកម្រាស់ទន់ប្រសើរជាងនេះ អ្នកអាចសាកល្បងប្រើតារាងកម្រាស់ (density plot)។
|
||||
|
||||
មកធ្វើការជាមួយតារាងកម្រាស់ឥឡូវនេះ!
|
||||
|
||||
```r
|
||||
ggplot(data = birds_filtered_1, aes(x = MinWingspan)) +
|
||||
geom_density()
|
||||
```
|
||||

|
||||
|
||||
អ្នកអាចមើលឃើញថាតារាងនេះស្រដៀងទៅនឹងតារាងមុនសម្រាប់ទិន្នន័យ Minimum Wingspan; វាត្រឹមតែទន់ចិត្តជាងបន្តិច។ ប្រសិនបើអ្នកចង់ត្រឡប់ទៅមើលខ្សែ MaxBodyMass ដែលមានជំហានច្រើននៅក្នុងតារាងទីពីរ អ្នកអាចធ្វើឱ្យវាត្រង់ល្អជាងមុនដោយបង្កើតវាឡើងវិញដោយវិធីនេះ៖
|
||||
|
||||
```r
|
||||
ggplot(data = birds_filtered_1, aes(x = MaxBodyMass)) +
|
||||
geom_density()
|
||||
```
|
||||

|
||||
|
||||
បើអ្នកចង់មានខ្សែធម្មតា តែមិនទន់លឿនពេក អ្នកអាចកែប្រែពារ៉ាម៉ែត្រ `adjust`:
|
||||
|
||||
```r
|
||||
ggplot(data = birds_filtered_1, aes(x = MaxBodyMass)) +
|
||||
geom_density(adjust = 1/5)
|
||||
```
|
||||

|
||||
|
||||
✅ អានអំពីពារ៉ាម៉ែត្រដែលអាចប្រើបានសម្រាប់ប្រភេទតារាងនេះ ហើយសាកល្បង!
|
||||
|
||||
ប្រភេទតារាងនេះផ្តល់នូវការបង្ហាញដែលស្រួលយល់។ ជាមួយជួរដេកកូដមួយចំនួន អ្នកអាចបង្ហាញកម្រាស់ម៉ាសរាងកាយប៉ុណ្ណៃរបស់សត្វបកប្រចាំលំដាប់៖
|
||||
|
||||
```r
|
||||
ggplot(data=birds_filtered_1,aes(x = MaxBodyMass, fill = Order)) +
|
||||
geom_density(alpha=0.5)
|
||||
```
|
||||

|
||||
|
||||
## 🚀 챌린지
|
||||
|
||||
ហ៊ីស្តូក្រាមគឺជាប្រភេទតារាងដែលមានភាពស្មុគស្មាញជាងតារាងស្កាតទ័រ ឬតារាងកន្ទុយ ឬតារាងខ្សែធម្មតា។ ស្វែងរកតាមអ៊ីនធឺណិតសម្រាប់ឧទាហរណ៍ល្អៗនៃការប្រើប្រាស់ហ៊ីស្តូក្រាម។ តើពួកវាត្រូវបានប្រើប្រាស់យ៉ាងដូចម្តេច, បង្ហាញអ្វី, និងនៅក្នុងដែនកំណត់ ឬវិស័យស្រាវជ្រាវណាដែលពួកវាត្រូវបានប្រើប្រាស់ជាទូទៅ?
|
||||
|
||||
## [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 @@
|
||||
# ការចាក់បង្ហាញអំពីអត្រាភាគរយ
|
||||
|
||||
| ](../../../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?")
|
||||
```
|
||||
|
||||
វ៉ា ឡា, គំនូរតារាងមូលបង្ហាញអត្រាសមាមាត្រនៃទិន្នន័យនេះដោយផ្អែកលើថ្នាក់ផ្សិតទាំងពីរ។ វារស់សំខាន់ក្នុងការត្រួតពិនិត្យលំដាប់នៃស្លាក ដូច្នេះចូរត្រួតពិនិត្យលំដាប់របស់ចំណងជើងដែលបង្កើតឡើងច្បាស់លាស់ណាស់!
|
||||
|
||||

|
||||
|
||||
## ស្លាបព្រីង!
|
||||
|
||||
គំនូរតារាងមូលមួយដែលគួរឲ្យចាប់អារម្មណ៍ 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))
|
||||
```
|
||||
|
||||

|
||||
|
||||
កូដនេះប្រើបណ្ណាល័យពីរ 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"))
|
||||
```
|
||||
|
||||
ដោយប្រើគំនូរតារាងវ៉ាហ្វ៊ែ អ្នកអាចមើលឃើញពីភាគរយពណ៌មួកក្នុងឈុតទិន្នន័យផ្សិតនេះយ៉ាងច្បាស់។ គួរឲ្យចាប់អារម្មណ៍មានផ្សិតពណ៌បៃតងច្រើន!
|
||||
|
||||

|
||||
|
||||
នៅក្នុងមេរៀននេះ អ្នកបានរៀនពីវិធីបង្ហាញអត្រាភាគរយឆេរបីវិធី។ ជាមុនសិន អ្នកត្រូវចែកទិន្នន័យជាក្រុមតាមប្រភេទ ហើយបន្ទាប់មកជ្រើសរើសវិធីល្អបំផុតសម្រាប់បង្ហាញទិន្នន័យ - គំនូរមូល ភាគរយស្លាបព្រីង ឬវ៉ាហ្វ៊ែ។ ទាំងអស់ទាំងនេះឆ្ងាញ់និងផ្តល់ចំណង់ចំណូលចិត្តឱ្យអ្នកប្រើដោយទទួលបានរូបភាពមួយភ្លាមៗពីឈុតទិន្នន័យ។
|
||||
|
||||
## 🚀 មេរៀនបញ្ញាត់
|
||||
|
||||
សាកល្បងបង្កើតវិញគំនូរឆ្ងាញ់ៗទាំងនេះនៅក្នុង [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 @@
|
||||
# ការមើលឃើញទំនាក់ទំនង៖ អំពីទឹកឃ្មុំទាំងអស់ 🍯
|
||||
|
||||
| ](../../../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")
|
||||
```
|
||||

|
||||
|
||||
ឥឡូវនេះ បង្ហាញទិន្នន័យដូចគ្នានេះជាមួយផ្ទាំងពណ៌ទឹកឃ្មុំ ដើម្បីបង្ហាញពីការវិវឌ្ឍតម្លៃក្នុងរយៈពេលជាច្រើនឆ្នាំ។ អ្នកអាចធ្វើនេះដោយបន្ថែមអថេរ '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))
|
||||
```
|
||||

|
||||
|
||||
ជាមួយការប្រែប្រួលផ្ទាំងពណ៌នេះ អ្នកអាចឃើញថាមានការទៅមុខយ៉ាងខ្លាំងតាមឆ្នាំពាក់ព័ន្ធនឹងតម្លៃទឹកឃ្មុំក្នុងមួយផោនពិតប្រាកដ។ ពិតណាស់ ប្រសិនបើអ្នកមើលទៅកន្លែងមួយក្នុងទិន្នន័យដើម្បីផ្ទៀងផ្ទាត់ (ជ្រើសរើសរដ្ឋមួយ, ឧទាហរណ៍ 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))
|
||||
```
|
||||
អ្នកអាចឃើញទំហំចំណុចកើនឡើងយ៉ាងលំនាំ។
|
||||
|
||||

|
||||
|
||||
តើនេះជាករណីធម្មតាជារឿងផ្គត់ផ្គង់ និងតម្រូវការឬ? ដោយសារបញ្ហាដូចជា ការប្រែប្រួលអាកាសធាតុ និងការបាត់បង់ពូជមហាធំ ទឹកឃ្មុំមានបរិមាណតិចជាងមុនក្នុងមួយឆ្នាំ ហើយតម្លៃកំពុងឡើង?
|
||||
|
||||
ដើម្បីស្វែងរកទំនាក់ទំនងរវាងអថេរមួយចំនួនក្នុងទិន្នន័យនេះ សូមស្វែងយល់ពីក្រាភិកបន្ទាត់ខ្លះ។
|
||||
|
||||
## ក្រាភិកបន្ទាត់
|
||||
|
||||
សំនួរ៖ តើមានការកើនឡើងច្បាស់លាស់ក្នុងតម្លៃទឹកឃ្មុំក្នុងមួយផោន រៀងរាល់ឆ្នាំឬ? អ្នកអាចស្វែងរកកម្រិតមិនលំបាក ដោយបង្កើតក្រាភិកបន្ទាត់តែមួយ៖
|
||||
|
||||
```r
|
||||
qplot(honey$year,honey$priceperlb, geom='smooth', span =0.5, xlab = "year",ylab = "priceperlb")
|
||||
```
|
||||
ចម្លើយ៖ មែនហើយ មានករណីលើសខ្លះនៅឆ្នាំ ២០០៣៖
|
||||
|
||||

|
||||
|
||||
សំនួរ៖ នៅឆ្នាំ ២០០៣ តើយើងអាចឃើញកំណើនក្នុងការផ្គត់ផ្គង់ទឹកឃ្មុំដែរឬ? ប្រសិនបើអ្នកមើលការផលិតសរុប រៀងរាល់ឆ្នាំ?
|
||||
|
||||
```python
|
||||
qplot(honey$year,honey$totalprod, geom='smooth', span =0.5, xlab = "year",ylab = "totalprod")
|
||||
```
|
||||
|
||||

|
||||
|
||||
ចម្លើយ៖ មិនមែនទេ។ ប្រសិនបើអ្នកមើលកម្រិតការផលិតសរុប វាហាក់បីដូចជាបានកើនឡើងនៅឆ្នាំនោះ ចូរបញ្ជាក់ថា ជាទូទៅ ចំនួនទឹកឃ្មុំផលិតកំពុងធ្លាក់ចុះនៅក្នុងឆ្នាំទាំងនេះ។
|
||||
|
||||
សំនួរ៖ ក្នុងករណីនោះ អ្វីជាអ្វីដែលបណ្តាលឲ្យតម្លៃទឹកឃ្មុំកើនឡើងខ្លាំងនៅឆ្នាំ ២០០៣?
|
||||
|
||||
ដើម្បីស្វែងរកចម្លើយនេះ អ្នកអាចស្វែងយល់ក្រាភិក 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 សម្រាប់ជួរឈរ៖
|
||||
|
||||

|
||||
|
||||
សម្រាប់ទិន្នន័យនេះ ពុំមានអ្វីសំខាន់ផ្ដល់អារម្មណ៍ពិសេសទាក់ទងនឹងចំនួនពូជ និងផលចំណេញរបស់ពួកគេ រៀងរាល់ឆ្នាំ និងរៀងរាល់រដ្ឋទេ។ តើមានវិធីផ្សេងណាមួយដើម្បីស្វែងរកទំនាក់ទំនងរវាងអថេរទាំងពីរនេះទេ?
|
||||
|
||||
## ក្រាភិកបន្ទាត់គូ
|
||||
|
||||
សាកល្បងក្រាភិកបន្ទាត់ច្រើន ដោយដាក់ចំលងក្រាភិកបន្ទាត់ពីរលើគ្នា ប្រើប្រាស់ `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)
|
||||
```
|
||||

|
||||
|
||||
ខណៈពេលដែលគ្មានអ្វីបង្ហាញឡើងយ៉ាងច្បាស់នៅឆ្នាំ ២០០៣ វានៅតែមើលឃើញថាគម្ពីរនេះអាចបញ្ចប់មេរៀននេះដោយសំណើចមួយ៖ បើទោះជា ចំនួនពូជមហាធំពីរបៀបចុះតាមរយៈសរុប តែក៏ចំនួនពូជមហាធំពីរត្រូវបានអនុវត្តន៍ថ្កោលទុក ទោះបីផលចំណេញលើមហាធំកំពុងធ្លាក់ចុះមែន។
|
||||
|
||||
បាទ សិប្បនិម្មិត្តសូម្បី!
|
||||
|
||||
🐝❤️
|
||||
## 🚀 ប្រវត្តិនេះជាការប្រកួតប្រជែង
|
||||
|
||||
នៅក្នុងមេរៀននេះ អ្នកបានរៀនបន្ថែមពីការប្រើប្រាស់សាច់ញាតិកំណត់តាមចំណុច និងក្រាភិកបន្ទាត់គូ រួមមាន 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,36 @@
|
||||
# Visualizations
|
||||
|
||||

|
||||
> រូបថតដោយ <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
|
||||
|
||||
| ](../../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 ជំហាន ៖
|
||||
|
||||
- ការកាន់កាប់
|
||||
- ការប្រព្រឹត្តការ
|
||||
- ការវិភាគ
|
||||
- ការទំនាក់ទំនង
|
||||
- ការថែទាំ
|
||||
|
||||
មេរៀននេះផ្តោតលើបីផ្នែកនៃជីវចក្រ៖ ការកាន់កាប់ ការប្រព្រឹត្តការ និងការថែទាំ។
|
||||
|
||||

|
||||
> រូបថតដោយ [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)|
|
||||
|--|--|
|
||||
| |  |
|
||||
| រូបភាពដោយ [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 @@
|
||||
# ជីវចរណ៍វិទ្យាសាស្ត្រទិន្នន័យ៖ ការវិភាគ
|
||||
|
||||
| ](../../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,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 @@
|
||||
# ជីវឆាកវិទ្យាសាស្ត្រទិន្នន័យ
|
||||
|
||||

|
||||
> រូបថតដោយ <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 @@
|
||||
# អធិប្បាយអំពីវិទ្យាសាស្រ្តទិន្នន័យនៅក្នុងពពក
|
||||
|
||||
| ](../../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,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"
|
||||
|
||||
| ](../../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 ។
|
||||
|
||||

|
||||
|
||||
### 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 ហើយអ្នកនឹងឃើញធនធានគណនាផ្សេងៗដែលមានស្រាប់
|
||||
|
||||

|
||||
|
||||
ចង់បង្កើតឧបករណ៍គណនាដើម្បីផ្ដល់សេវាទៅរៀបចំមួយសៀវភៅកំណត់ត្រា 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។
|
||||

|
||||
3. វានឹងបើកផ្ទាំងរុករកថ្មីជាមួយឧបករណ៍ jupyter notebook របស់អ្នក។ ចុចប៊ូតុង "New" ដើម្បីបង្កើតសៀវភៅកំណត់ត្រាថ្មី។
|
||||
|
||||

|
||||
|
||||
ពេលនេះដែលយើងមានសៀវភៅកំណត់ត្រា អាចចាប់ផ្ដើមបណ្តោះអាសន្នម៉ូដែលជាមួយ 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 @@
|
||||
# វិទ្យាសាស្ត្រទិន្នន័យនៅលើពពក
|
||||
|
||||

|
||||
|
||||
> រូបថតដោយ [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)។
|
||||
|
||||

|
||||
|
||||
### ប្រធានបទ
|
||||
|
||||
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 @@
|
||||
# វិទ្យាសាស្ត្រទិន្នន័យនៅក្នុងពិភពពិត
|
||||
|
||||
|  ](../../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 ស៊េរី, ការអភិវឌ្ឍថ្នាំ (ការវាយតម្លៃហានិភ័យ, ការទាយសម្គាល់ភាពជោគជ័យ), វិភាគទាយទំនង (ការថែរក្សាអ្នកជំងឺ និងរបៀបផ្គត់ផ្គង់), ការតាមដាន និងការការពារ ជម្ងឺ។
|
||||
|
||||
 ការិយាល័យរូបភាព៖ [Data Flair៖ 6 កម្មវិធីវីទ្យាសាស្ត្រទិន្នន័យអស្ចារ្យ](https://data-flair.training/blogs/data-science-applications/)
|
||||
|
||||
រូបនេះបង្ហាញពីដែនកន្លែង និងឧទាហរណ៍ផ្សេងទៀតសម្រាប់អនុវត្តបច្ចេកទេសវិទ្យាសាស្ត្រទិន្នន័យ។ ចង់ស្វែងយល់ពីកម្មវិធីផ្សេងទៀតទេ? ពិនិត្យមើលផ្នែក [ការត្រួតពិនិត្យ និងសិក្សាឯកជន](../../../../6-Data-Science-In-Wild/20-Real-World-Examples) ខាងក្រោម។
|
||||
|
||||
## វិទ្យាសាស្ត្រទិន្នន័យ + ការស្រាវជ្រាវ
|
||||
|
||||
|  ](../../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))។
|
||||
|
||||
## វិទ្យាសាស្ត្រទិន្នន័យ + មនុស្សវិទ្យាឌីជីថល
|
||||
|
||||
|  ](../../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) ដើម្បីធ្វើការស្រាវជ្រាវតាមផ្លូវទាំងនេះ
|
||||
|
||||
## វិទ្យាសាស្ត្រទិន្នន័យ + បរិស្ថាននិយម
|
||||
|
||||
|  ](../../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 - ជ្រើសរើសធនធានទិន្នន័យដែលអ្នកចាប់អារម្មណ៍ ជ្រើសរើសសំណួរត្រូវតាម និងជម្រើសបង្ហាញដែលពាក់ព័ន្ធ។
|
||||
|
||||

|
||||
|
||||
`ភារកិច្ចរបស់អ្នក៖`
|
||||
ឥឡូវនេះសិក្សាការបង្ហាញដែលបានបង្ហាញនៅក្នុងកម្មវិធីរកមើល និងឆ្លើយសំណួរបង្ហាញដូចខាងក្រោម៖
|
||||
* តើធនធានទិន្នន័យមាន _លក្ខណៈពិសេស_ អ្វីខ្លះ?
|
||||
* តើការបង្ហាញព័ត៌មានផ្តល់ _មតិយោបល់_ ឬលទ្ធផលអ្វីខ្លះ?
|
||||
* តើ _ផលប៉ះពាល់_ នៃមតិយោបល់ទាំងនោះដល់គោលបំណងចីរភាពនៃគម្រោងមានអ្វីខ្លះ?
|
||||
* តើកំណត់ខូច _នៃការបង្ហាញ_ មានអ្វីខ្លះ (ឧ. តើអ្នកមិនទទួលបានមតិយោបល់អ្វី)?
|
||||
* ប្រសិនបើអ្នកមានទិន្នន័យដើម តើអ្នកនឹងបង្កើតការបង្ហាញបរិច្ឆេទ _ជំនួស_ អ្វីខ្លះ ហើយហេតុអ្វី?
|
||||
|
||||
`ពិន្ទុបុណ្យ:`
|
||||
ដាក់ពាក្យសុំគណនី - ហើយចុះបញ្ជីចូលពេលបានទទួល។
|
||||
* ប្រើជម្រើស _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,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 ទៅរូបភាព៖ ``
|
||||
- រក្សាប្រវែងបន្ទាត់សមរម្យ (ប្រហែល ៨០-១០០ តួអក្សរ)
|
||||
|
||||
### 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 @@
|
||||
# វិទ្យាសាស្ត្រទិន្នន័យសម្រាប់អ្នកចាប់ផ្ដើម - មាតិកាកម្មវិធីសិក្សា
|
||||
|
||||
[](https://github.com/codespaces/new?hide_repo_select=true&ref=main&repo=344191198)
|
||||
|
||||
[](https://github.com/microsoft/Data-Science-For-Beginners/blob/master/LICENSE)
|
||||
[](https://GitHub.com/microsoft/Data-Science-For-Beginners/graphs/contributors/)
|
||||
[](https://GitHub.com/microsoft/Data-Science-For-Beginners/issues/)
|
||||
[](https://GitHub.com/microsoft/Data-Science-For-Beginners/pulls/)
|
||||
[](http://makeapullrequest.com)
|
||||
|
||||
[](https://GitHub.com/microsoft/Data-Science-For-Beginners/watchers/)
|
||||
[](https://GitHub.com/microsoft/Data-Science-For-Beginners/network/)
|
||||
[](https://GitHub.com/microsoft/Data-Science-For-Beginners/stargazers/)
|
||||
|
||||
|
||||
[](https://discord.gg/nTYy5BXMWG)
|
||||
|
||||
[](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 ដោយ [@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)**
|
||||
|
||||
#### ចូលរួមសហគមន៍របស់យើង
|
||||
[](https://discord.gg/nTYy5BXMWG)
|
||||
|
||||
យើងមានសកម្មភាព Discord ស្វែងយល់ជាមួយ AI នៅតែបន្ត ប្រសិនបើចង់ស្វែងយល់បន្ថែម និងចូលរួម សូមចូលមកនៅ [Learn with AI Series](https://aka.ms/learnwithai/discord) ចាប់ពី 18 - 30 ខែកញ្ញា ២០២៥។ អ្នកនឹងទទួលបានយុទ្ធនាការនិងបច្ចេកទេសក្នុងការប្រើប្រាស់ GitHub Copilot សម្រាប់វិទ្យាសាស្ត្រទិន្នន័យ។
|
||||
|
||||

|
||||
|
||||
# តើអ្នកជាសិស្សរឺ?
|
||||
|
||||
ចាប់ផ្ដើមជាមួយធនធានខាងក្រោម៖
|
||||
|
||||
- [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)។
|
||||
|
||||
## សូមស្គាល់ក្រុម
|
||||
|
||||
[](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)** 👈
|
||||
|
||||
## មេរៀន
|
||||
|
||||
|
||||
||
|
||||
|:---:|
|
||||
| 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
|
||||
[](https://aka.ms/langchain4j-for-beginners)
|
||||
[](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin)
|
||||
[](https://github.com/microsoft/langchain-for-beginners?WT.mc_id=m365-94501-dwahlin)
|
||||
---
|
||||
|
||||
### Azure / Edge / MCP / Agents
|
||||
[](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst)
|
||||
[](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)
|
||||
[](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst)
|
||||
[](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst)
|
||||
|
||||
---
|
||||
|
||||
### ស៊េរី AI ការបង្កើត
|
||||
[](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
|
||||
[-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst)
|
||||
[-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst)
|
||||
[-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst)
|
||||
|
||||
---
|
||||
|
||||
### ការរសាត់រៀនស្នូល
|
||||
[](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst)
|
||||
[](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
|
||||
[](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst)
|
||||
[](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung)
|
||||
[](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst)
|
||||
[](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst)
|
||||
[](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst)
|
||||
|
||||
---
|
||||
|
||||
### ស៊េរី Copilot
|
||||
[](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
|
||||
[](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst)
|
||||
[](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst)
|
||||
<!-- CO-OP TRANSLATOR OTHER COURSES END -->
|
||||
|
||||
## ការទទួលបានជំនួយ
|
||||
|
||||
**ប្រឈមមុខនឹងបញ្ហាដែរឬទេ?** ពិនិត្យមើល [មគ្គុទេសក៍ដោះស្រាយបញ្ហា](TROUBLESHOOTING.md) របស់យើងសម្រាប់ដំណោះស្រាយទៅបញ្ហារួមៗ។
|
||||
|
||||
បើអ្នកឆ្ងល់ឬមានសំណួរអំពីការបង្កើតកម្មវិធី AI។ ចូលរួមជាមួយអ្នករៀន និងអ្នកអភិវឌ្ឍមានបទពិសោធន៍ ក្នុងការពិភាក្សាអំពី MCP។ វាជាសហគមន៍គាំទ្រដែលសំណួរត្រូវបានស្វាគម និងចែករំលែកចំណេះដឹងដោយសេរី។
|
||||
|
||||
[](https://discord.gg/nTYy5BXMWG)
|
||||
|
||||
បើអ្នកមានមតិយោបល់អំពីផលិតផលឬកើតមានកំហុសខណៈស្ថាបនារើយមើល:
|
||||
|
||||
[](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, ច្នៃប្រឌិត
|
||||
|
||||

|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**ការបដិសេធ**៖
|
||||
ឯកសារនេះត្រូវបានបកប្រែក្នុងការប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ទោះបីបើយើងខិតខំប្រឹងប្រែងសម្រាប់ភាពត្រឹមត្រូវក៏ដោយ សូមយល់ដឹងថាការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុសឬការមិនត្រឹមត្រូវ។ ឯកសារដើមក្នុងភាសាដំបូងគួរត្រូវបានស្គាល់ថាជារបស់ថ្នាក់ដើមសម្រាប់យោង។ សម្រាប់ព័ត៌មានសំខាន់ៗ សូមណែនាំឱ្យប្រើការបកប្រែដោយមនុស្សជំនាញផ្នែកវិជ្ជាជីវៈ។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកស្រាយខុសចេញពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
Loading…
Reference in new issue