|
|
3 months ago | |
|---|---|---|
| .. | ||
| solution | 4 months ago | |
| README.md | 3 months ago | |
| assignment.md | 4 months ago | |
| notebook.ipynb | 4 months ago | |
README.md
ការណែនាំអំពីការបែងចែកក្រុម
ការបែងចែកក្រុមគឺជាប្រភេទនៃការសិក្សាដោយគ្មានការត្រួតពិនិត្យ (Unsupervised Learning) ដែលទាយថា ឯកសារទិន្នន័យមិនមានស្លាក ឬថា ទិន្នន័យបញ្ចូលរបស់វាមិនត្រូវបានតភ្ជាប់ជាមួយនឹងលទ្ធផលដែលបានកំណត់ជាមុន។ វាប្រើអាល់ហ្គோரីធម៍ផ្សេងៗដើម្បីចម្រោះតាមទិន្នន័យគ្មានស្លាក និងផ្តល់ការបែងចែកជាក្រុមតទៅតាមលំនាំដែលវាសង្កេតឃើញក្នុងទិន្នន័យ។
🎥 ចុចរូបភាពខាងលើសម្រាប់វីដេអូ។ ខណៈពេលដែលអ្នកកំពុងរៀនម៉ាស៊ីនរៀនជាមួយការបែងចែកក្រុម សូមរីករាយជាមួយបទចម្រៀង Dance Hall នៃប្រទេស Nigeria – នេះគឺជាបទចម្រៀងដែលមានការវាយតម្លៃខ្ពស់ពីឆ្នាំ 2014 ដោយ PSquare។
សំនួរតេស្តមុនអធិប្បាយ
ការណែនាំ
ការបែងចែកក្រុម មានប្រយោជន៍ខ្លាំងសម្រាប់ការស្វែងយល់ទិន្នន័យ។ យើងមកមើលថា តើវាអាចជួយរកឃើញនិន្នាការនិងលំនាំនៅវិធីដែលអ្នកស្តាប់ភ្លេងកម្ពុជាស៊ីវ៉េងហ្សិកប៍រមកបានយ៉ាងដូចម្តេច។
✅ ចំណាយពេលមួយនាទីគិតអំពីប្រយោជន៍នៃការបែងចែកក្រុម។ ក្នុងជីវិតពិត ការបែងចែកក្រុមកើតឡើងខណៈដែលអ្នកមានចំណុចគ្រប់យ៉ាងនៃការកក់ស្បែក ហើយត្រូវតែចម្រោះសម្លៀកបំពាក់របស់សមាជិកគ្រួសាររបស់អ្នក 🧦👕👖🩲។ ក្នុងវិទ្យាសាស្ត្រទិន្នន័យ ការបែងចែកក្រុមកើតឡើងពេលខល្បងវិភាគចំណូលចិត្តរបស់អ្នកប្រើ ហើយកំណត់លក្ខណៈនៃឯកសារទិន្នន័យគ្មានស្លាក។ ការបែងចែកក្រុម ជួយបំភ្លឺន័យចម្រង់ដូចជាប្រអប់ស្រោមជើងស្បែក។
🎥 ចុចរូបភាពខាងលើសម្រាប់វីដេអូ៖ John Guttag របស់ MIT គឺណែនាំអំពីការបែងចែកក្រុម
នៅក្នុងបរិដ្ឋានវិជ្ជាជីវៈ ការបែងចែកក្រុមអាចប្រើសម្រាប់កំណត់ចំណែកទីផ្សារ កំណត់ថា តើក្រុមអាយុណាដែលទិញមុខទំនិញណា ឧទាហរណ៍។ ប្រើសម្រាប់រកករណីប្លែកៗ ឧត្តមសម្រាប់រកការលួចបន្លំពីកម្រិតទិន្នន័យប្រតិបត្តិការកាតឥណទាន។ ឬអ្នកអាចប្រើការបែងចែកក្រុមដើម្បីច្បាស់លាស់ភាពមានមហារីកក្នុងឯកសារស្កែនវេជ្ជសាស្រ្តមួយ។
✅ ចំណាយពេលមួយនាទីគិតពីវិធីដែលអ្នកបានជួបប្រទៈជាមួយការបែងចែកក្រុមក្នុងបរិដ្ឋានធម្មជាតិ ដូចជា ធនាគារ, ពាណិជ្ជកម្មអេឡិចត្រូនិក, ឬអាជីវកម្ម។
🎓 ចំនុចគួរចាប់អារម្មណ៍ គឺការវិភាគក្រុមបានចាប់ផ្តើមនៅក្នុង វិស័យ Anthropology និង Psychology ក្នុងឆ្នាំ 1930។ តើអ្នកអាចស្រមៃថាវាត្រូវបានប្រើយ៉ាងដូចម្តេច?
ក្នុងករណីផ្សេងទៀត អ្នកអាចប្រើវាសម្រាប់បែងចែកលទ្ធផលស្វែងរក - ជាដំណាក់កាលផ្ដោតតាមតំណភ្ជាប់ទំនិញ, រូបភាព, ឬការវាយតម្លៃ។ ការបែងចែកក្រុមមានប្រយោជន៍ខ្លាំងនៅពេលដែលអ្នកមានទិន្នន័យច្រើនដែលអ្នកចង់កាត់បន្ថយ ហើយធ្វើការវិភាគជាមុខងារជ្រាលជ្រៅបន្ថែម ដូច្នេះបច្ចេកទេសនេះអាចប្រើសម្រាប់រៀនអំពីទិន្នន័យ មុនពេលថតម៉ូដែលផ្សេងៗ។
✅ បន្ទាប់ពីទិន្នន័យរបស់អ្នកត្រូវបានរៀបចំក្នុងក្រុម អ្នកបែងចែកវាជា ID ក្រុម ហើយបច្ចេកទេសនេះអាចមានប្រយោជន៍នៅពេលរក្សាអាហារូបត្ថម្ភនៃទិន្នន័យ; អ្នកអាចយោងទៅកាន់ចំណុចទិន្នន័យដោយ ID ក្រុម ជំនួសទៅនឹងប្រើទិន្នន័យដែលបង្ហាញអត្តសញ្ញាណ។ តើអ្នកអាចគិតអំពីមូលហេតុផ្សេងទៀតហើយហេតុអ្វីបានជាជ្រើសយោង ID ក្រុមជាជំនួសវត្ថុផ្សេងទៀតក្នុងក្រុមដើម្បីកំណត់វា?
បន្ថែមការយល់ដឹងរបស់អ្នកអំពីបច្ចេកទេសបែងចែកក្រុមក្នុងមេឡឺន Learn module
ការចាប់ផ្តើមជាមួយការបែងចែកក្រុម
Scikit-learn ផ្ដល់ជូននូវវីធីផ្សេងៗ សម្រាប់បំពេញការបែងចែកក្រុម។ ប្រភេទដែលអ្នកជ្រើសរើសនឹងអាស្រ័យលើការប្រើប្រាស់របស់អ្នក។ យោងតាមឯកសារ ចំណុចផ្សេងគ្នានៃមាគ៌ាមួយៗមានអត្ថប្រយោជន៍ខុសៗគ្នា។ នេះគឺជាបារាំងតារាងសាមញ្ញនៃវិធីសាស្ត្រ ដែលស្គីតឡើនគាំទ្រ និងករណីប្រើប្រាស់សមរម្យរបស់ពួកវា៖
| ឈ្មោះវិធីសាស្ត្រ | ករណីប្រើ |
|---|---|
| K-Means | គោលបំណងទូទៅ, inductive |
| Affinity propagation | ក្រុមច្រើន, មិនស្មើ, inductive |
| Mean-shift | ក្រុមច្រើន, មិនស្មើ, inductive |
| Spectral clustering | ក្រុមតិច, ស្មើ, transductive |
| Ward hierarchical clustering | ក្រុមច្រើន, ដាក់កំណត់, transductive |
| Agglomerative clustering | ក្រុមច្រើន, ដាក់កំណត់, បំបែកប្រភេទអេយូស៍ Euclidean, transductive |
| DBSCAN | គំនរផ្ទៃមិនស្មើ, ក្រុមមិនស្មើ, transductive |
| OPTICS | គំនរផ្ទៃមិនស្មើ, ក្រុមមិនស្មើជាមួយសំបុត្រផ្ទឹងខុសៗគ្នា, transductive |
| Gaussian mixtures | គំនរផ្ទៃស្មើ, inductive |
| BIRCH | ឯកសារទិន្នន័យធំជាមួយច្រេីន, inductive |
🎓 របៀបដែលយើងបង្កើតក្រុមពាក់ព័ន្ធយ៉ាងខ្លាំងនឹងរបៀបយើងប្រមូលចំណុចទិន្នន័យទៅជាក្រុម។ យើងមកពន្យល់ពាក្យគន្លឹះ៖
🎓 'Transductive' ទល់នឹង 'inductive'
ការសន្និដ្ឋានតាមការបញ្ជូន (transductive inference) នៅលើករណីបណ្តុះបណ្តាលដែលតភ្ជាប់ទៅករណីសាកល្បងជាក់លាក់។ ការសន្និដ្ឋានអនុគមន៍ (inductive inference) គឺចេញពីករណីបណ្តុះបណ្តាលដែលដាក់ចេញជាការតំលើងទង្វើទូទៅ ហើយបន្ទាប់មកអនុវត្តទៅករណីសាកល្បង។
ឧទាហរណ៍៖ សូមគំនិតថា អ្នកមានទិន្នន័យដែលមានស្លាកមួយផ្នែកប៉ុណ្ណោះ។ មានវត្ថុជារបាំង, ស៊ីឌី, និងខាំស្កិច។ ការងាររបស់អ្នកគឺផ្ដល់ស្លាកទៅវត្ថុខាំស្កិចទទេ។ ប្រសិនបើអ្នកជ្រើសរើសវិធីសាស្ត្រអនុគមន៍ អ្នកនឹងបណ្តុះម៉ូដែលស្វែងរក 'របាំង' និង 'ស៊ីឌី' ហើយផ្ដល់ស្លាកទៅទិន្នន័យគ្មានស្លាក។ វិធីសាស្ត្រនេះប្រឈមមុខនឹងការលំបាកក្នុងការបែងចែកវត្ថុពិតជាជាទម្រង់ 'កាសែត'។ វិធីសាស្ត្រតាមការបញ្ជូន ប្រញាប់ប្រញាល់ដោះស្រាយទិន្នន័យមិនស្គាល់វា ដោយវាធ្វើការបែងចែកវត្ថុដែលស្រដៀងគ្នាទៅក្នុងក្រុម ហើយបន្ទាប់មកផ្ដល់ស្លាកទៅក្រុម។ ក្នុងករណីនេះ ក្រុមអាចបង្ហាញ 'វត្ថុភ្លេងរង្វង់' និង 'វត្ថុកែង'។
🎓 'គំនរមិនស្មើ' ទល់នឹង 'គំនរស្មើ'
កាន់តាមគណិតវិទ្យា គំនរមិនស្មើ និង គំនរស្មើ បញ្ជាក់ពីវិធីវាស់ចម្ងាយរវាងចំណុចដោយវិធី គំនរស្មើ (Euclidean) ឬ គំនរមិនស្មើ (non-Euclidean)។
'គំនរស្មើ' ក្នុងបរិបទនេះគឺ Euclidean (ផ្ទៃផែនទី), ហើយគំនរមិនស្មើគឺ non-Euclidean។ តើគំនរ និង ម៉ាស៊ីនរៀនមានចំនាក់ទំនងយ៉ាងដូចម្តេច? ដោយសារទាំងពីរជាវិស័យដែលដើមកំណើតពីគណិតវិទ្យា នោះវាត្រូវមានវិធីវាស់ចម្ងាយរវាងចំណុចក្នុងក្រុម ដោយរបៀបគំនរស្មើ ឬ គំនរមិនស្មើ ប្រែក្លាយតាមលក្ខណៈទិន្នន័យ។ ចម្ងាយ Euclidean វាស់ជាប្រវែងខ្សែរវាងចំណុចពីរដោយផ្ទាល់។ ចម្ងាយ non-Euclidean វាស់តាមខ្សែរ曲។ ប្រសិនបើទិន្នន័យរបស់អ្នក មើលទៅមិនស្ថិតលើផែនទីផ្ទាល់ នោះ អ្នកប្រហែលជាត្រូវការប្រើអាល់ហ្គរីធម៍ពិសេសសម្រាប់ដោះស្រាយវា។
រូបភាពដោយ Dasani Madipalli
🎓 'ចម្ងាយ'
ក្រុមត្រូវបានកំណត់ដោយម៉ាទ្រីចចម្ងាយរវាងចំណុច។ ចម្ងាយឈ្មោះ Euclidean គឺដោយជម្រាលតម្លៃមធ្យមនៃចំណុច និងមាន 'centroid' ឬចំណុចមួយកណ្តាល។ ចម្ងាយវាស់តាមចម្ងាយទៅកាន់ centroid នោះ។ ចម្ងាយ non-Euclidean មានការតំរៀបជាក្រុម 'clustroids' ដែលជាចំណុចអាចជិតច្រើនចំណុចផ្សេងទៀត។ Clustroids មានវិធីកំណត់ខុសៗគ្នា។
ការបែងចែកក្រុមដាក់កំណត់ បញ្ចូលការសិក្សា 'semi-supervised' ទៅក្នុងវិធានការដោយគ្មានការត្រួតពិនិត្យនេះ។ ទំនាក់ទំនងរវាងចំណុចត្រូវបានមើលថាជា 'មិនអាចភ្ជាប់' ឬ 'ត្រូវភ្ជាប់' ដើម្បីដាក់កំណត់ច្បាស់លាស់លើទិន្នន័យ។
ឧទាហរណ៍៖ ប្រសិនបើអាល់ហ្គរីធម៍ត្រូវបញ្ចេញការងារនៅលើទិន្នន័យគ្មានស្លាក ឬជាក់ស្តែងខ្លះនៃស្លាក ក្រុមដែលបានបង្កើតអាចមានគុណភាពខ្សោយ។ ក្នុងឧទាហរណ៍ខាងលើ ក្រុមអាចបែងចែកជា 'វត្ថុភ្លេងរង្វង់', 'វត្ថុកែង', 'វត្ថុកោងត្រី', និង 'គុយគុយ'។ ប្រសិនប្រសើរបំពាន ន័យដូចជា ("វត្ថុត្រូវតែផលិតពីផ្លាស្ទិច", "វត្ថុខ្លះត្រូវតែផលិតសំលេង") វាអាចជួយ 'ដាក់កំណត់' អាល់ហ្គរីធម៍ឲ្យធ្វើជម្រើសល្អជាងមុន។
🎓 'ភាពខ្លាញ់'
ទិន្នន័យដែល 'រញ្លៀត' ត្រូវបានគេពិនិត្យថា 'ខ្លាញ់'។ ចម្ងាយរវាងចំណុចនៅក្នុងក្រុមមួយៗអាចបង្ហាញថាខ្លាញ់ឬច្របូកច្របល់ ហើយទិន្នន័យនេះត្រូវបានវិភាគជាមួយវិធីបែងចែកក្រុមសមរម្យ។ អត្ថបទនេះ បង្ហាញពីភាពខុសគ្នារវាងការប្រើ K-Means clustering និង HDBSCAN ដើម្បីស្វែងយល់ទិន្នន័យរញ្លៀតដែលមានភាពខ្លាញ់ខុសៗគ្នា។
អាល់ហ្គរីធម៍បែងចែកក្រុម
មានអាល់ហ្គរីធម៍បែងចែកក្រុមជាង 100 និងការប្រើប្រាស់របស់ពួកវាអាស្រ័យលើលក្ខណៈទិន្នន័យ។ យើងមកពិភាក្សាពីអាល់ហ្គរីធម៍សំខាន់ៗ៖
-
ការបែងចែកក្រុមរាយត្រី។ ប្រសិនបើវត្ថុត្រូវបានចាត់ថ្នាក់ដោយជិតស្និទ្ធទៅកាន់វត្ថុជិតខាង ជាងទៅវត្ថុឆ្ងាយ ក្រុមនឹងបង្កើតផ្អែកលើចម្ងាយរបស់សមាជិកទៅកាន់វត្ថុផ្សេងៗ។ Scikit-learn agglomerative clustering គឺជារឿងរាយត្រី។
រូបភាពដោយ Dasani Madipalli
-
ការបែងចែកក្រុមមជ្ឈមណ្ឌល។ អាល់ហ្គរីធម៍ពេញនិយមនេះត្រូវការជ្រើសរើស 'k' ឬចំនួនក្រុមចង់បង្កើត បន្ទាប់មកអាល់ហ្គរីធម៍កំណត់ចំណុចមជ្ឈមណ្ឌលនៃក្រុមមួយ ហើយប្រមូលទិន្នន័យជុំវិញចំណុចនោះ។ K-means clustering គឺជារូបមន្តពេញនិយមនៃការបែងចែកមជ្ឈមណ្ឌល។ ចំណុចមជ្ឈមណ្ឌលកំណត់ដោយមធ្យមដល់ជិតមុខ និងហៅវាឈ្មោះដូច្នេះ។ ចម្ងាយចតពីក្រុមត្រូវបានធ្វើអោយតិចបំផុត។
រូបភាពដោយ Dasani Madipalli
-
ការបែងចែកក្រុមដោយផ្អែកលើចែកចាយ។ អាស្រ័យលើគំរូស្ថិតិ, ការបែងចែកក្រុមដោយផ្អែកលើចែកចាយផ្តោតលើការកំណត់ប្រហែលថាចំណុចទិន្នន័យជាក្រុមណាមួយ ហើយផ្តល់អោយយ៉ាងសមរម្យ។ វិធី Gaussian mixture ស្ថិតក្នុងប្រភេទនេះ។
-
ការបែងចែកក្រុមដោយផ្អែកលើភាពខ្លាញ់។ ចំណុចទិន្នន័យត្រូវបានផ្ដាច់ក្នុងក្រុមដោយផ្អែកលើភាពខ្លាញ់ ឬ ការប្រមូលគ្នាព័ន្ធព័ន្ធ។ ចំណុចដែលឆ្ងាយពីក្រុមត្រូវបានគេចាត់ទុកជាចំណុចលំបាក ឬសំឡេងរំខាន។ DBSCAN, Mean-shift, និង OPTICS ស្ថិតក្នុងប្រភេទនេះ។
-
ការបែងចែកក្រុមបែបក្រឡា។ សម្រាប់ឯកសារទិន្នន័យច្រើនវិមាត្រ ក្រឡាបង្កើតឡើង ហើយទិន្នន័យត្រូវបានបែងចែកទៅក្នុងក្រឡានីមួយៗ ដូច្នេះបង្កើតក្រុម។
លំហាត់ - បែងចែកក្រុមទិន្នន័យរបស់អ្នក
ការបែងចែកក្រុមជាបច្ចេកទេសមានអត្ថប្រយោជន៍ខ្លាំងដោយរូបភាពភាពបញ្ជាក់យ៉ាងត្រឹមត្រូវ ដូច្នេះតោះចាប់ផ្តើមដោយរូបភាពទិន្នន័យភ្លេងរបស់យើង។ លំហាត់នេះនឹងជួយយើងសម្រេចថាវិធីណាមួយនៃការបែងចែកក្រុមដែលយើងគួរប្រើប្រាស់យ៉ាងមានប្រសិទ្ធភាពសម្រាប់ប្រភេទទិន្នន័យនេះ។
-
បើកឯកសារ notebook.ipynb ក្នុងថតនេះ។
-
នាំចូលកញ្ចប់
Seabornសម្រាប់ការតាំងរូបភាពទិន្នន័យល្អ។!pip install seaborn -
បន្ថែមទិន្នន័យបទចម្រៀងពី nigerian-songs.csv។ បើក data frame ជាមួយទិន្នន័យពីបទចម្រៀងខ្លះៗ។ រៀបចំសម្រាប់ការស្វែងយល់ទិន្នន័យនេះដោយនាំចូលបណ្ណាល័យ និងបង្ហាញទិន្នន័យ៖
import matplotlib.pyplot as plt import pandas as pd df = pd.read_csv("../data/nigerian-songs.csv") df.head()ពិនិត្យមើលបន្ទាត់ដើមទិន្នន័យប៉ុន្មានបន្ទាត់៖
name album artist artist_top_genre release_date length popularity danceability acousticness energy instrumentalness liveness loudness speechiness tempo time_signature 0 Sparky Mandy & The Jungle Cruel Santino alternative r&b 2019 144000 48 0.666 0.851 0.42 0.534 0.11 -6.699 0.0829 133.015 5 1 shuga rush EVERYTHING YOU HEARD IS TRUE Odunsi (The Engine) afropop 2020 89488 30 0.71 0.0822 0.683 0.000169 0.101 -5.64 0.36 129.993 3 2 LITT! LITT! AYLØ indie r&b 2018 207758 40 0.836 0.272 0.564 0.000537 0.11 -7.127 0.0424 130.005 4 3 Confident / Feeling Cool Enjoy Your Life Lady Donli nigerian pop 2019 175135 14 0.894 0.798 0.611 0.000187 0.0964 -4.961 0.113 111.087 4 4 wanted you rare. Odunsi (The Engine) afropop 2018 152049 25 0.702 0.116 0.833 0.91 0.348 -6.044 0.0447 105.115 4 -
ទទួលបានព័ត៌មានអំពី dataframe ដោយហៅ
info()៖df.info()លទ្ធផលបង្ហាញដូចខាងក្រោម៖
<class 'pandas.core.frame.DataFrame'> RangeIndex: 530 entries, 0 to 529 Data columns (total 16 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 name 530 non-null object 1 album 530 non-null object 2 artist 530 non-null object 3 artist_top_genre 530 non-null object 4 release_date 530 non-null int64 5 length 530 non-null int64 6 popularity 530 non-null int64 7 danceability 530 non-null float64 8 acousticness 530 non-null float64 9 energy 530 non-null float64 10 instrumentalness 530 non-null float64 11 liveness 530 non-null float64 12 loudness 530 non-null float64 13 speechiness 530 non-null float64 14 tempo 530 non-null float64 15 time_signature 530 non-null int64 dtypes: float64(8), int64(4), object(4) memory usage: 66.4+ KB -
ពិនិត្យមើលមួយទៀតសម្រាប់តម្លៃ null ដោយហៅ
isnull()និងបញ្ជាក់ថា សរុបមានតម្លៃ 0៖df.isnull().sum()មើលទៅល្អ៖
name 0 album 0 artist 0 artist_top_genre 0 release_date 0 length 0 popularity 0 danceability 0 acousticness 0 energy 0 instrumentalness 0 liveness 0 loudness 0 speechiness 0 tempo 0 time_signature 0 dtype: int64 -
ពិពណ៍នាអំពីទិន្នន័យ៖
df.describe()release_date length popularity danceability acousticness energy instrumentalness liveness loudness speechiness tempo time_signature count 530 530 530 530 530 530 530 530 530 530 530 530 mean 2015.390566 222298.1698 17.507547 0.741619 0.265412 0.760623 0.016305 0.147308 -4.953011 0.130748 116.487864 3.986792 std 3.131688 39696.82226 18.992212 0.117522 0.208342 0.148533 0.090321 0.123588 2.464186 0.092939 23.518601 0.333701 min 1998 89488 0 0.255 0.000665 0.111 0 0.0283 -19.362 0.0278 61.695 3 25% 2014 199305 0 0.681 0.089525 0.669 0 0.07565 -6.29875 0.0591 102.96125 4 50% 2016 218509 13 0.761 0.2205 0.7845 0.000004 0.1035 -4.5585 0.09795 112.7145 4 75% 2017 242098.5 31 0.8295 0.403 0.87575 0.000234 0.164 -3.331 0.177 125.03925 4 max 2020 511738 73 0.966 0.954 0.995 0.91 0.811 0.582 0.514 206.007 5
🤔 ប្រសិនបើយើងកំពុងធ្វើការជាមួយ clustering ដែលជាវិធីសាស្រ្តមិនត្រូវការទិន្នន័យមានស្លាកហើយ (unsupervised method) នោះហេតុអ្វីបានជាយើងបង្ហាញទិន្នន័យនេះជាមួយស្លាក? ក្នុងដំណាក់កាលស្វែងយល់ទិន្នន័យ វាគឺមានប្រយោជន៍ ប៉ុន្តែវាមិនចាំបាច់សម្រាប់ algorithm clustering ដើម្បីដំណើរការ។ អ្នកអាចដកក្បាលជួរឈរចេញហើយយោងទៅតាមលេខជួរឈរបាន។
មើលតម្លៃទូទៅរបស់ទិន្នន័យ។ សូមចំណាំថា popularity អាចមានតម្លៃ '0' ដែលបង្ហាញពីបទចម្រៀងដែលគ្មានចំណាត់ថ្នាក់។ យើងនឹងដកវាចេញក្នុងរយៈពេលខ្លី។
-
ប្រើ barplot ដើម្បីរក genres ដែលពេញនិយមបំផុត៖
import seaborn as sns top = df['artist_top_genre'].value_counts() plt.figure(figsize=(10,7)) sns.barplot(x=top[:5].index,y=top[:5].values) plt.xticks(rotation=45) plt.title('Top genres',color = 'blue')
✅ ប្រសិនបើអ្នកចង់មើលតម្លៃលំដាប់ខ្ពស់បន្ថែមទៀត គ្រាន់តែរំលាស់ [:5] ទៅតម្លៃធំជាងនេះ ឬយកវាចេញដើម្បីមើលទាំងអស់។
សូមចំណាំ ថា នៅពេល genre ខ្ពស់គឺពណ៌នាថា 'Missing' មានន័យថា Spotify មិនបានចាត់ថ្នាក់វា ទេ ដូចនេះយើងត្រូវដកវាចេញ។
-
ដកទិន្នន័យ missing ដោយផ.Filterវាចេញ
df = df[df['artist_top_genre'] != 'Missing'] top = df['artist_top_genre'].value_counts() plt.figure(figsize=(10,7)) sns.barplot(x=top.index,y=top.values) plt.xticks(rotation=45) plt.title('Top genres',color = 'blue')ឥឡូវនេះពិនិត្យមើល genres ម្តងទៀត៖
-
នៅទូទៅ genre បីចុងក្រោយបំផុតគ្រប់គ្រង dataset នេះ។ យើងសូមផ្តោតទៅលើ
afro dancehall,afropop, និងnigerian popហើយបន្ថែមការលាងសំអាត dataset ដើម្បីដកវត្ថុដែលមានតម្លៃ popularity បាន 0 (មានន័យថាវាមិនបានចាត់ថ្នាក់ជាមួយ popularity ក្នុង dataset ហើយអាចត្រូវបានគេយល់ថាជាសំឡេងរំខានសម្រាប់គោលបំណងរបស់យើង)៖df = df[(df['artist_top_genre'] == 'afro dancehall') | (df['artist_top_genre'] == 'afropop') | (df['artist_top_genre'] == 'nigerian pop')] df = df[(df['popularity'] > 0)] top = df['artist_top_genre'].value_counts() plt.figure(figsize=(10,7)) sns.barplot(x=top.index,y=top.values) plt.xticks(rotation=45) plt.title('Top genres',color = 'blue') -
ប្រើតេស្តមួយឆាប់រហ័សដើម្បីមើលថាតើយោងរវាងទិន្នន័យមានទំនាក់ទំនងខ្លះទេ៖
corrmat = df.corr(numeric_only=True) f, ax = plt.subplots(figsize=(12, 9)) sns.heatmap(corrmat, vmax=.8, square=True)ទំនាក់ទំនងត្រឹមតែខ្លាំងតែរវាង
energyនិងloudnessប៉ុណ្ណោះ ដែលមិនចម្លែកទេ ព្រោះតន្ត្រីដែលមានសំឡេងខ្លាំងសាកសមនឹងមានថាមពលខ្លាំង។ ផ្សេងទៀត ទំនាក់ទំនងគឺខ្សោយ។ វានឹងគួរឱ្យចាប់អារម្មណ៍មើលថា algorithm clustering អាចធ្វើអ្វីបានពីទិន្នន័យនេះ។🎓 សូមចំណាំថា ទំនាក់ទំនងមិនមានន័យថាមានមូលហេតុទេ! យើងមានភស្តុតាងនៃទំនាក់ទំនង ប៉ុន្តែមិនមានភស្តុតាងនៃមូលហេតុ។ គេហទំព័រស្រែកសើចមួយបានបង្ហាញរូបភាពដែលផ្តោតលើចំណុចនេះ។
តើមានការប្រមូលផ្តុំក្នុង dataset នេះជុំវិញការសង្កេតថាល្បីរបស់បទចម្រៀង និង danceability ទេ? FacetGrid បង្ហាញថាមានវង់រាងមូល ដែលដាក់បន្ទាប់គ្នា បើមិនគិតពី genre។ តើអាចជាការចូលរួមរបស់អ្នកស្តាប់ចម្រៀងនីហ្សេរីយ៉ា នៅលើកម្រិតខ្លះនៃ danceability សម្រាប់ genre នេះទេ?
✅ សូមព្យាយាមប្រើ datapoint ផ្សេងទៀត (energy, loudness, speechiness) និង genre តន្ត្រីផ្សេងៗ មើលថាតើអ្នកអាចរកឃើញអ្វីបានខ្លះ? សូមមើលតារាង df.describe() ដើម្បីមើលចំនួនទូទៅនៃចំណុចទិន្នន័យ។
អនុវត្តន៍ - ការបែងចែកទិន្នន័យ
តើតួរនៃ genre ទាំងបីនេះខុសគ្នាយ៉ាងសំខាន់ទេក្នុងការសង្កេតឱ្យឃើញការលេងភ្លេងរបស់ពួកវា ដោយផ្អែកលើ popularity?
-
ពិនិត្យការបែងចែកទិន្នន័យនៃ genre ទីបីក្នុងចំណោម popularity និង danceability តាមអ័ក្ស x និង y មួយ៖
sns.set_theme(style="ticks") g = sns.jointplot( data=df, x="popularity", y="danceability", hue="artist_top_genre", kind="kde", )អ្នកអាចស្គាល់ភាពជាវង់រាងមូលនៅជុំវិញចំណុចទូទៅមួយ នូវការបែងចែកចំណុចទិន្នន័យ។
🎓 សូមចំណាំថា ឧទាហរណ៍នេះប្រើក្រាហ្វ KDE (Kernel Density Estimate) ដែលតំណាងឲ្យទិន្នន័យតាមរយៈវង់ភាពប្រភេទប្រសាទបន្តរបន្ត។ វាអនុញ្ញាតឲ្យយើងពិវោធន៍ទិន្នន័យនៅពេលធ្វើការជាមួយការបែងចែកច្រើន។
ទូទៅ genre ទាំងបីស្របគ្នាខ្ពស់លើការលេងភ្លេង និង popularity។ ការកំណត់ cluster ក្នុងទិន្នន័យដែលស្របគ្នាខ្សោយនេះ នឹងជាការប្រឈមមួយ៖
-
បង្កើត scatter plot៖
sns.FacetGrid(df, hue="artist_top_genre", height=5) \ .map(plt.scatter, "popularity", "danceability") \ .add_legend()scatterplot របស់អ័ក្សដូចគ្នាបង្ហាញលំនាំស្រដៀងគ្នានៃការប្រមូលផ្តុំ
ទូទៅសម្រាប់ clustering អ្នកអាចប្រើ scatterplot ដើម្បីបង្ហាញក្រុមទិន្នន័យ ដូច្នេះការទទួលបានជំនាញកែច្នៃ visualization ប្រភេទនេះគឺមានប្រយោជន៍ខ្ពស់។ ក្នុងមេរៀនបន្ទាប់ យើងនឹងយកទិន្នន័យដែលបានត្រៀមនេះ ហើយប្រើ k-means clustering ដើម្បីរកក្រុមទិន្នន័យដែលមានការប្រាប់គ្នានៅវិធីគួរឱ្យចាប់អារម្មណ៍។
🚀បញ្ហាប្រឈម
ក្នុងការរៀបចំសម្រាប់មេរៀនក្រោយ សូមបង្កើតតារាងអំពី algorithm clustering ផ្សេងៗដែលអ្នកអាចស្វែងរក និងប្រើនៅក្នុងបរិបទផលិតកម្ម។ តើបញ្ហាប្រឈមណាដែល clustering ព្យាយាមដោះស្រាយ?
សំណួរពិសោធន៍បន្ទាប់មេរៀន
ការត្រួតពិនិត្យ និងអប់រំផ្ទាល់ខ្លួន
មុនពេលអ្នកអនុវត្ត algorithm clustering ដូចដែលយើងបានរៀន វាជាគំនិតល្អក្នុងការយល់ដឹងពីសារធាតុនៃ dataset របស់អ្នក។ អានបន្ថែមពីប្រធានបទនេះ នៅទីនេះ
អត្ថបទមានប្រយោជន៍នេះ នាំអ្នកឆ្ពោះទៅកាន់វិធីផ្សេងៗនៃ algorithm clustering ដែលប្រើប្រាស់ បើយោងតាមរាងទិន្នន័យផ្សេងៗ។
ភារកិច្ច
ស្រាវជ្រាវអំពីការបង្ហាញឬបង្ហាញទិន្នន័យផ្សេងៗសម្រាប់ clustering
ការបដិសេធ: ឯកសារនេះត្រូវបានបម្លែងភាសា ដោយប្រើសេវាបម្លែងភាសា AI Co-op Translator។ ទោះយើងខ្ញុំមានក្តីប្រាថ្នាឱ្យបានច្បាស់លាស់ តែសូមយល់ដឹងថាការបម្លែងដោយស្វ័យប្រវត្តិក៏អាចមានកំហុសឬភាពមិនត្រឹមត្រូវ។ ឯកសារដើមជាភាសាទីតាំងគួរត្រូវបានគេប្រើជាប្រភពច្បាស់លាស់។ សម្រាប់ព័ត៌មានសំខាន់ៗ សូមណែនាំឱ្យប្រើប្រាស់ការប្រែដោយមនុស្សជំនាញ។ យើងខ្ញុំមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកស្រាយខុសបន្ទាប់ពីការប្រើប្រាស់ការបម្លែងនេះនោះទេ។









