You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
298 lines
36 KiB
298 lines
36 KiB
<!--
|
|
CO_OP_TRANSLATOR_METADATA:
|
|
{
|
|
"original_hash": "730225ea274c9174fe688b21d421539d",
|
|
"translation_date": "2025-09-06T06:57:24+00:00",
|
|
"source_file": "5-Clustering/1-Visualize/README.md",
|
|
"language_code": "pa"
|
|
}
|
|
-->
|
|
# ਕਲੱਸਟਰਿੰਗ ਦਾ ਪਰਚੇ
|
|
|
|
ਕਲੱਸਟਰਿੰਗ ਇੱਕ ਕਿਸਮ ਦਾ [ਅਨਸੁਪਰਵਾਈਜ਼ਡ ਲਰਨਿੰਗ](https://wikipedia.org/wiki/Unsupervised_learning) ਹੈ ਜੋ ਮੰਨਦਾ ਹੈ ਕਿ ਡੇਟਾਸੈੱਟ ਬਿਨਾਂ ਲੇਬਲ ਵਾਲਾ ਹੈ ਜਾਂ ਇਸਦੇ ਇਨਪੁਟਸ ਨੂੰ ਪਹਿਲਾਂ ਤੋਂ ਪਰਿਭਾਸ਼ਿਤ ਆਉਟਪੁਟਸ ਨਾਲ ਨਹੀਂ ਜੋੜਿਆ ਗਿਆ। ਇਹ ਵੱਖ-ਵੱਖ ਐਲਗੋਰਿਥਮਾਂ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ ਤਾਂ ਜੋ ਬਿਨਾਂ ਲੇਬਲ ਵਾਲੇ ਡੇਟਾ ਨੂੰ ਵੱਖ-ਵੱਖ ਸਮੂਹਾਂ ਵਿੱਚ ਵੰਡ ਸਕੇ, ਡੇਟਾ ਵਿੱਚ ਪੈਟਰਨ ਦੇ ਆਧਾਰ 'ਤੇ।
|
|
|
|
[](https://youtu.be/ty2advRiWJM "PSquare ਦੁਆਰਾ No One Like You")
|
|
|
|
> 🎥 ਉੱਪਰ ਦਿੱਤੀ ਤਸਵੀਰ 'ਤੇ ਕਲਿੱਕ ਕਰੋ ਇੱਕ ਵੀਡੀਓ ਲਈ। ਜਦੋਂ ਤੁਸੀਂ ਕਲੱਸਟਰਿੰਗ ਨਾਲ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਪੜ੍ਹ ਰਹੇ ਹੋ, ਨਾਈਜੀਰੀਅਨ ਡਾਂਸ ਹਾਲ ਟ੍ਰੈਕਸ ਦਾ ਆਨੰਦ ਲਓ - ਇਹ 2014 ਦਾ PSquare ਦੁਆਰਾ ਇੱਕ ਬਹੁਤ ਹੀ ਰੇਟ ਕੀਤੀ ਗਈ ਗੀਤ ਹੈ।
|
|
|
|
## [ਪ੍ਰੀ-ਲੈਕਚਰ ਕਵਿਜ਼](https://ff-quizzes.netlify.app/en/ml/)
|
|
|
|
### ਪਰਚੇ
|
|
|
|
[ਕਲੱਸਟਰਿੰਗ](https://link.springer.com/referenceworkentry/10.1007%2F978-0-387-30164-8_124) ਡੇਟਾ ਐਕਸਪਲੋਰੇਸ਼ਨ ਲਈ ਬਹੁਤ ਹੀ ਲਾਭਦਾਇਕ ਹੈ। ਆਓ ਵੇਖੀਏ ਕਿ ਕੀ ਇਹ ਨਾਈਜੀਰੀਅਨ ਦਰਸ਼ਕਾਂ ਦੇ ਸੰਗੀਤ ਦੀ ਖਪਤ ਦੇ ਤਰੀਕਿਆਂ ਵਿੱਚ ਰੁਝਾਨ ਅਤੇ ਪੈਟਰਨ ਖੋਜਣ ਵਿੱਚ ਮਦਦ ਕਰ ਸਕਦਾ ਹੈ।
|
|
|
|
✅ ਇੱਕ ਮਿੰਟ ਲਓ ਕਲੱਸਟਰਿੰਗ ਦੇ ਉਪਯੋਗਾਂ ਬਾਰੇ ਸੋਚਣ ਲਈ। ਅਸਲ ਜ਼ਿੰਦਗੀ ਵਿੱਚ, ਕਲੱਸਟਰਿੰਗ ਤਦ ਹੁੰਦੀ ਹੈ ਜਦੋਂ ਤੁਹਾਡੇ ਕੋਲ ਕੱਪੜਿਆਂ ਦਾ ਢੇਰ ਹੁੰਦਾ ਹੈ ਅਤੇ ਤੁਹਾਨੂੰ ਆਪਣੇ ਪਰਿਵਾਰ ਦੇ ਮੈਂਬਰਾਂ ਦੇ ਕੱਪੜੇ ਵੱਖ ਕਰਨੇ ਪੈਂਦੇ ਹਨ 🧦👕👖🩲। ਡੇਟਾ ਸਾਇੰਸ ਵਿੱਚ, ਕਲੱਸਟਰਿੰਗ ਤਦ ਹੁੰਦੀ ਹੈ ਜਦੋਂ ਕਿਸੇ ਯੂਜ਼ਰ ਦੀ ਪਸੰਦ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ, ਜਾਂ ਕਿਸੇ ਬਿਨਾਂ ਲੇਬਲ ਵਾਲੇ ਡੇਟਾਸੈੱਟ ਦੀ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਦਾ ਨਿਰਧਾਰਨ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਕਲੱਸਟਰਿੰਗ, ਇੱਕ ਤਰੀਕੇ ਨਾਲ, ਗੁਣਾਂ ਨੂੰ ਸਮਝਣ ਵਿੱਚ ਮਦਦ ਕਰਦੀ ਹੈ, ਜਿਵੇਂ ਕਿ ਮੋਜ਼ੇ ਵਾਲਾ ਦਰਾਜ਼।
|
|
|
|
[](https://youtu.be/esmzYhuFnds "ਕਲੱਸਟਰਿੰਗ ਦਾ ਪਰਚੇ")
|
|
|
|
> 🎥 ਉੱਪਰ ਦਿੱਤੀ ਤਸਵੀਰ 'ਤੇ ਕਲਿੱਕ ਕਰੋ ਇੱਕ ਵੀਡੀਓ ਲਈ: MIT ਦੇ John Guttag ਕਲੱਸਟਰਿੰਗ ਦਾ ਪਰਚੇ ਕਰਦੇ ਹਨ।
|
|
|
|
ਪੇਸ਼ੇਵਰ ਸੈਟਿੰਗ ਵਿੱਚ, ਕਲੱਸਟਰਿੰਗ ਵਰਤ ਕੇ ਬਾਜ਼ਾਰ ਸੈਗਮੈਂਟੇਸ਼ਨ, ਜਿਵੇਂ ਕਿ ਕਿਹੜੇ ਉਮਰ ਦੇ ਸਮੂਹ ਕਿਹੜੀਆਂ ਚੀਜ਼ਾਂ ਖਰੀਦਦੇ ਹਨ, ਦਾ ਨਿਰਧਾਰਨ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਇੱਕ ਹੋਰ ਉਪਯੋਗ ਅਨੋਮਲੀ ਡਿਟੈਕਸ਼ਨ ਹੋ ਸਕਦਾ ਹੈ, ਸ਼ਾਇਦ ਕ੍ਰੈਡਿਟ ਕਾਰਡ ਟ੍ਰਾਂਜ਼ੈਕਸ਼ਨ ਦੇ ਡੇਟਾਸੈੱਟ ਤੋਂ ਧੋਖਾਧੜੀ ਦਾ ਪਤਾ ਲਗਾਉਣ ਲਈ। ਜਾਂ ਤੁਸੀਂ ਕਲੱਸਟਰਿੰਗ ਨੂੰ ਮੈਡੀਕਲ ਸਕੈਨ ਦੇ ਬੈਚ ਵਿੱਚ ਟਿਊਮਰਾਂ ਦਾ ਨਿਰਧਾਰਨ ਕਰਨ ਲਈ ਵਰਤ ਸਕਦੇ ਹੋ।
|
|
|
|
✅ ਇੱਕ ਮਿੰਟ ਲਈ ਸੋਚੋ ਕਿ ਤੁਸੀਂ ਕਲੱਸਟਰਿੰਗ ਨੂੰ 'ਜੰਗਲੀ' ਵਿੱਚ ਕਿਵੇਂ ਮਿਲਿਆ ਹੋਵੇਗਾ, ਜਿਵੇਂ ਕਿ ਬੈਂਕਿੰਗ, ਈ-ਕਾਮਰਸ, ਜਾਂ ਕਾਰੋਬਾਰ ਸੈਟਿੰਗ ਵਿੱਚ।
|
|
|
|
> 🎓 ਦਿਲਚਸਪ ਗੱਲ ਇਹ ਹੈ ਕਿ ਕਲੱਸਟਰ ਵਿਸ਼ਲੇਸ਼ਣ 1930 ਦੇ ਦਹਾਕੇ ਵਿੱਚ ਐਂਥਰੋਪੋਲੋਜੀ ਅਤੇ ਸਾਇਕੋਲੋਜੀ ਦੇ ਖੇਤਰਾਂ ਵਿੱਚ ਸ਼ੁਰੂ ਹੋਇਆ। ਕੀ ਤੁਸੀਂ ਕਲਪਨਾ ਕਰ ਸਕਦੇ ਹੋ ਕਿ ਇਹ ਕਿਵੇਂ ਵਰਤਿਆ ਗਿਆ ਹੋਵੇਗਾ?
|
|
|
|
ਇਸਦੇ ਬਦਲੇ, ਤੁਸੀਂ ਇਸਨੂੰ ਖੋਜ ਦੇ ਨਤੀਜਿਆਂ ਨੂੰ ਸਮੂਹਬੱਧ ਕਰਨ ਲਈ ਵਰਤ ਸਕਦੇ ਹੋ - ਉਦਾਹਰਨ ਲਈ, ਖਰੀਦਦਾਰੀ ਲਿੰਕ, ਚਿੱਤਰ, ਜਾਂ ਸਮੀਖਾਵਾਂ ਦੁਆਰਾ। ਕਲੱਸਟਰਿੰਗ ਤਦ ਲਾਭਦਾਇਕ ਹੁੰਦੀ ਹੈ ਜਦੋਂ ਤੁਹਾਡੇ ਕੋਲ ਇੱਕ ਵੱਡਾ ਡੇਟਾਸੈੱਟ ਹੁੰਦਾ ਹੈ ਜਿਸਨੂੰ ਤੁਸੀਂ ਘਟਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ ਅਤੇ ਜਿਸ 'ਤੇ ਤੁਸੀਂ ਹੋਰ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ, ਇਸ ਲਈ ਇਹ ਤਕਨੀਕ ਹੋਰ ਮਾਡਲ ਬਣਾਉਣ ਤੋਂ ਪਹਿਲਾਂ ਡੇਟਾ ਬਾਰੇ ਸਿੱਖਣ ਲਈ ਵਰਤੀ ਜਾ ਸਕਦੀ ਹੈ।
|
|
|
|
✅ ਜਦੋਂ ਤੁਹਾਡਾ ਡੇਟਾ ਕਲੱਸਟਰਾਂ ਵਿੱਚ ਸੰਗਠਿਤ ਹੁੰਦਾ ਹੈ, ਤੁਸੀਂ ਇਸਨੂੰ ਇੱਕ ਕਲੱਸਟਰ ਆਈਡੀ ਸੌਂਪਦੇ ਹੋ, ਅਤੇ ਇਹ ਤਕਨੀਕ ਡੇਟਾਸੈੱਟ ਦੀ ਗੋਪਨੀਯਤਾ ਨੂੰ ਸੁਰੱਖਿਅਤ ਕਰਨ ਵਿੱਚ ਲਾਭਦਾਇਕ ਹੋ ਸਕਦੀ ਹੈ; ਤੁਸੀਂ ਇਸਦੀ ਬਜਾਏ ਕਲੱਸਟਰ ਆਈਡੀ ਦੁਆਰਾ ਡੇਟਾ ਪੌਇੰਟ ਦਾ ਹਵਾਲਾ ਦੇ ਸਕਦੇ ਹੋ, ਨਾ ਕਿ ਹੋਰ ਖੁਲਾਸਾ ਕਰਨ ਵਾਲੇ ਡੇਟਾ ਤੱਤਾਂ ਦੁਆਰਾ। ਕੀ ਤੁਸੀਂ ਹੋਰ ਕਾਰਨਾਂ ਬਾਰੇ ਸੋਚ ਸਕਦੇ ਹੋ ਕਿ ਤੁਸੀਂ ਕਲੱਸਟਰ ਆਈਡੀ ਨੂੰ ਕਲੱਸਟਰ ਦੇ ਹੋਰ ਤੱਤਾਂ ਦੇ ਬਦਲੇ ਕਿਉਂ ਵਰਤਨਾ ਚਾਹੁੰਦੇ ਹੋ?
|
|
|
|
ਕਲੱਸਟਰਿੰਗ ਤਕਨੀਕਾਂ ਦੀ ਆਪਣੀ ਸਮਝ ਨੂੰ ਇਸ [ਸਿੱਖਣ ਮਾਡਿਊਲ](https://docs.microsoft.com/learn/modules/train-evaluate-cluster-models?WT.mc_id=academic-77952-leestott) ਵਿੱਚ ਵਧਾਓ।
|
|
|
|
## ਕਲੱਸਟਰਿੰਗ ਨਾਲ ਸ਼ੁਰੂਆਤ
|
|
|
|
[Scikit-learn](https://scikit-learn.org/stable/modules/clustering.html) ਕਲੱਸਟਰਿੰਗ ਕਰਨ ਲਈ ਵੱਖ-ਵੱਖ ਤਰੀਕੇ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ। ਤੁਸੀਂ ਕਿਹੜਾ ਤਰੀਕਾ ਚੁਣਦੇ ਹੋ ਇਹ ਤੁਹਾਡੇ ਉਪਯੋਗ ਦੇ ਕੇਸ 'ਤੇ ਨਿਰਭਰ ਕਰਦਾ ਹੈ। ਦਸਤਾਵੇਜ਼ਾਂ ਦੇ ਅਨੁਸਾਰ, ਹਰ ਤਰੀਕੇ ਦੇ ਵੱਖ-ਵੱਖ ਫਾਇਦੇ ਹਨ। ਇੱਥੇ Scikit-learn ਦੁਆਰਾ ਸਮਰਥਿਤ ਤਰੀਕਿਆਂ ਅਤੇ ਉਨ੍ਹਾਂ ਦੇ ਉਪਯੋਗ ਦੇ ਕੇਸਾਂ ਦੀ ਇੱਕ ਸਰਲ ਟੇਬਲ ਹੈ:
|
|
|
|
| ਤਰੀਕੇ ਦਾ ਨਾਮ | ਉਪਯੋਗ ਦੇ ਕੇਸ |
|
|
| :--------------------------- | :------------------------------------------------------------------ |
|
|
| K-Means | ਆਮ ਉਦੇਸ਼, ਇੰਡਕਟਿਵ |
|
|
| Affinity propagation | ਬਹੁਤ ਸਾਰੇ, ਅਸਮਾਨ ਕਲੱਸਟਰ, ਇੰਡਕਟਿਵ |
|
|
| Mean-shift | ਬਹੁਤ ਸਾਰੇ, ਅਸਮਾਨ ਕਲੱਸਟਰ, ਇੰਡਕਟਿਵ |
|
|
| Spectral clustering | ਥੋੜੇ, ਸਮਾਨ ਕਲੱਸਟਰ, ਟ੍ਰਾਂਸਡਕਟਿਵ |
|
|
| Ward hierarchical clustering | ਬਹੁਤ ਸਾਰੇ, ਰੋਕੇ ਹੋਏ ਕਲੱਸਟਰ, ਟ੍ਰਾਂਸਡਕਟਿਵ |
|
|
| Agglomerative clustering | ਬਹੁਤ ਸਾਰੇ, ਰੋਕੇ ਹੋਏ, ਗੈਰ-ਯੂਕਲਿਡੀਅਨ ਦੂਰੀਆਂ, ਟ੍ਰਾਂਸਡਕਟਿਵ |
|
|
| DBSCAN | ਗੈਰ-ਸਮਤਲ ਜਿਓਮੈਟਰੀ, ਅਸਮਾਨ ਕਲੱਸਟਰ, ਟ੍ਰਾਂਸਡਕਟਿਵ |
|
|
| OPTICS | ਗੈਰ-ਸਮਤਲ ਜਿਓਮੈਟਰੀ, ਅਸਮਾਨ ਕਲੱਸਟਰ, ਵੱਖ-ਵੱਖ ਘਣਤਾ, ਟ੍ਰਾਂਸਡਕਟਿਵ |
|
|
| Gaussian mixtures | ਸਮਤਲ ਜਿਓਮੈਟਰੀ, ਇੰਡਕਟਿਵ |
|
|
| BIRCH | ਵੱਡਾ ਡੇਟਾਸੈੱਟ ਜਿਸ ਵਿੱਚ ਆਉਟਲਾਇਰ ਹਨ, ਇੰਡਕਟਿਵ |
|
|
|
|
> 🎓 ਕਲੱਸਟਰ ਬਣਾਉਣ ਦਾ ਡੇਟਾ ਪੌਇੰਟਸ ਨੂੰ ਸਮੂਹਾਂ ਵਿੱਚ ਇਕੱਠਾ ਕਰਨ ਦੇ ਤਰੀਕੇ ਨਾਲ ਬਹੁਤ ਸਾਰਾ ਸੰਬੰਧ ਹੈ। ਆਓ ਕੁਝ ਸ਼ਬਦਾਵਲੀ ਨੂੰ ਸਮਝੀਏ:
|
|
>
|
|
> 🎓 ['ਟ੍ਰਾਂਸਡਕਟਿਵ' ਵਿਰੁੱਧ 'ਇੰਡਕਟਿਵ'](https://wikipedia.org/wiki/Transduction_(machine_learning))
|
|
>
|
|
> ਟ੍ਰਾਂਸਡਕਟਿਵ ਇੰਫਰੈਂਸ ਉਹਨਾਂ ਟ੍ਰੇਨਿੰਗ ਕੇਸਾਂ ਤੋਂ ਲਿਆ ਜਾਂਦਾ ਹੈ ਜੋ ਖਾਸ ਟੈਸਟ ਕੇਸਾਂ ਨਾਲ ਜੁੜਦੇ ਹਨ। ਇੰਡਕਟਿਵ ਇੰਫਰੈਂਸ ਉਹਨਾਂ ਟ੍ਰੇਨਿੰਗ ਕੇਸਾਂ ਤੋਂ ਲਿਆ ਜਾਂਦਾ ਹੈ ਜੋ ਆਮ ਨਿਯਮਾਂ ਨਾਲ ਜੁੜਦੇ ਹਨ ਜੋ ਫਿਰ ਟੈਸਟ ਕੇਸਾਂ 'ਤੇ ਲਾਗੂ ਕੀਤੇ ਜਾਂਦੇ ਹਨ।
|
|
>
|
|
> ਉਦਾਹਰਨ: ਕਲਪਨਾ ਕਰੋ ਕਿ ਤੁਹਾਡੇ ਕੋਲ ਇੱਕ ਡੇਟਾਸੈੱਟ ਹੈ ਜੋ ਸਿਰਫ਼ ਅੰਸ਼ਿਕ ਤੌਰ 'ਤੇ ਲੇਬਲ ਕੀਤਾ ਗਿਆ ਹੈ। ਕੁਝ ਚੀਜ਼ਾਂ 'ਰਿਕਾਰਡ' ਹਨ, ਕੁਝ 'ਸੀਡੀ' ਹਨ, ਅਤੇ ਕੁਝ ਖਾਲੀ ਹਨ। ਤੁਹਾਡਾ ਕੰਮ ਖਾਲੀਆਂ ਲਈ ਲੇਬਲ ਪ੍ਰਦਾਨ ਕਰਨਾ ਹੈ। ਜੇ ਤੁਸੀਂ ਇੱਕ ਇੰਡਕਟਿਵ ਪਹੁੰਚ ਚੁਣਦੇ ਹੋ, ਤਾਂ ਤੁਸੀਂ 'ਰਿਕਾਰਡ' ਅਤੇ 'ਸੀਡੀ' ਦੀ ਭਾਲ ਕਰਨ ਲਈ ਇੱਕ ਮਾਡਲ ਟ੍ਰੇਨ ਕਰੋਗੇ, ਅਤੇ ਉਹਨਾਂ ਲੇਬਲਾਂ ਨੂੰ ਆਪਣੇ ਬਿਨਾਂ ਲੇਬਲ ਵਾਲੇ ਡੇਟਾ 'ਤੇ ਲਾਗੂ ਕਰੋਗੇ। ਇਹ ਪਹੁੰਚ ਉਹ ਚੀਜ਼ਾਂ ਕਲਾਸੀਫਾਈ ਕਰਨ ਵਿੱਚ ਮੁਸ਼ਕਲ ਹੋਵੇਗੀ ਜੋ ਅਸਲ ਵਿੱਚ 'ਕੈਸੇਟ' ਹਨ। ਟ੍ਰਾਂਸਡਕਟਿਵ ਪਹੁੰਚ, ਦੂਜੇ ਪਾਸੇ, ਇਸ ਅਣਜਾਣ ਡੇਟਾ ਨੂੰ ਹੋਰ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਢੰਗ ਨਾਲ ਸੰਭਾਲਦੀ ਹੈ ਕਿਉਂਕਿ ਇਹ ਸਮਾਨ ਚੀਜ਼ਾਂ ਨੂੰ ਇਕੱਠਾ ਕਰਨ ਲਈ ਕੰਮ ਕਰਦੀ ਹੈ ਅਤੇ ਫਿਰ ਇੱਕ ਸਮੂਹ ਨੂੰ ਲੇਬਲ ਲਗਾਉਂਦੀ ਹੈ। ਇਸ ਮਾਮਲੇ ਵਿੱਚ, ਕਲੱਸਟਰ 'ਗੋਲ ਸੰਗੀਤਕ ਚੀਜ਼ਾਂ' ਅਤੇ 'ਚੌਰਸ ਸੰਗੀਤਕ ਚੀਜ਼ਾਂ' ਨੂੰ ਦਰਸਾ ਸਕਦੇ ਹਨ।
|
|
>
|
|
> 🎓 ['ਗੈਰ-ਸਮਤਲ' ਵਿਰੁੱਧ 'ਸਮਤਲ' ਜਿਓਮੈਟਰੀ](https://datascience.stackexchange.com/questions/52260/terminology-flat-geometry-in-the-context-of-clustering)
|
|
>
|
|
> ਗਣਿਤਕ ਸ਼ਬਦਾਵਲੀ ਤੋਂ ਲਿਆ ਗਿਆ, ਗੈਰ-ਸਮਤਲ ਵਿਰੁੱਧ ਸਮਤਲ ਜਿਓਮੈਟਰੀ ਦਾ ਹਵਾਲਾ ਪੌਇੰਟਸ ਦੇ ਵਿਚਕਾਰ ਦੂਰੀਆਂ ਨੂੰ ਮਾਪਣ ਦੇ ਤਰੀਕੇ ਨਾਲ ਹੈ, ਜਾਂ 'ਸਮਤਲ' ([ਯੂਕਲਿਡੀਅਨ](https://wikipedia.org/wiki/Euclidean_geometry)) ਜਾਂ 'ਗੈਰ-ਸਮਤਲ' (ਗੈਰ-ਯੂਕਲਿਡੀਅਨ) ਜਿਓਮੈਟਰੀਕਲ ਤਰੀਕਿਆਂ ਦੁਆਰਾ।
|
|
>
|
|
>'ਸਮਤਲ' ਇਸ ਸੰਦਰਭ ਵਿੱਚ ਯੂਕਲਿਡੀਅਨ ਜਿਓਮੈਟਰੀ (ਜਿਸਦੇ ਕੁਝ ਹਿੱਸੇ 'ਪਲੇਨ' ਜਿਓਮੈਟਰੀ ਵਜੋਂ ਪੜ੍ਹਾਏ ਜਾਂਦੇ ਹਨ) ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ, ਅਤੇ ਗੈਰ-ਸਮਤਲ ਗੈਰ-ਯੂਕਲਿਡੀਅਨ ਜਿਓਮੈਟਰੀ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ। ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਨਾਲ ਜਿਓਮੈਟਰੀ ਦਾ ਕੀ ਸੰਬੰਧ ਹੈ? ਖੈਰ, ਦੋ ਖੇਤਰ ਜੋ ਗਣਿਤ ਵਿੱਚ ਜੜੇ ਹੋਏ ਹਨ, ਪੌਇੰਟਸ ਦੇ ਵਿਚਕਾਰ ਦੂਰੀਆਂ ਨੂੰ ਮਾਪਣ ਦਾ ਇੱਕ ਆਮ ਤਰੀਕਾ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ, ਅਤੇ ਇਹ 'ਸਮਤਲ' ਜਾਂ 'ਗੈਰ-ਸਮਤਲ' ਤਰੀਕੇ ਨਾਲ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ, ਡੇਟਾ ਦੀ ਪ੍ਰਕਿਰਤੀ ਦੇ ਅਨੁਸਾਰ। [ਯੂਕਲਿਡੀਅਨ ਦੂਰੀਆਂ](https://wikipedia.org/wiki/Euclidean_distance) ਨੂੰ ਦੋ ਪੌਇੰਟਸ ਦੇ ਵਿਚਕਾਰ ਲਾਈਨ ਸੈਗਮੈਂਟ ਦੀ ਲੰਬਾਈ ਵਜੋਂ ਮਾਪਿਆ ਜਾਂਦਾ ਹੈ। [ਗੈਰ-ਯੂਕਲਿਡੀਅਨ ਦੂਰੀਆਂ](https://wikipedia.org/wiki/Non-Euclidean_geometry) ਨੂੰ ਇੱਕ ਵਕਰ ਦੇ ਨਾਲ ਮਾਪਿਆ ਜਾਂਦਾ ਹੈ। ਜੇ ਤੁਹਾਡਾ ਡੇਟਾ, ਵਿਜੁਅਲਾਈਜ਼ ਕੀਤਾ ਗਿਆ, ਇੱਕ ਪਲੇਨ 'ਤੇ ਮੌਜੂਦ ਨਹੀਂ ਲੱਗਦਾ, ਤਾਂ ਤੁਹਾਨੂੰ ਇਸਨੂੰ ਸੰਭਾਲਣ ਲਈ ਇੱਕ ਵਿਸ਼ੇਸ਼ ਐਲਗੋਰਿਥਮ ਦੀ ਲੋੜ ਹੋ ਸਕਦੀ ਹੈ।
|
|
>
|
|

|
|
> ਇਨਫੋਗ੍ਰਾਫਿਕ [Dasani Madipalli](https://twitter.com/dasani_decoded) ਦੁਆਰਾ
|
|
>
|
|
> 🎓 ['ਦੂਰੀਆਂ'](https://web.stanford.edu/class/cs345a/slides/12-clustering.pdf)
|
|
>
|
|
> ਕਲੱਸਟਰਾਂ ਨੂੰ ਉਨ੍ਹਾਂ ਦੀ ਦੂਰੀ ਮੈਟ੍ਰਿਕਸ ਦੁਆਰਾ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਜਿਵੇਂ ਕਿ ਪੌਇੰਟਸ ਦੇ ਵਿਚਕਾਰ ਦੂਰੀਆਂ। ਇਹ ਦੂਰੀਆਂ ਕੁਝ ਤਰੀਕਿਆਂ ਨਾਲ ਮਾਪੀਆਂ ਜਾ ਸਕਦੀਆਂ ਹਨ। ਯੂਕਲਿਡੀਅਨ ਕਲੱਸਟਰਾਂ ਨੂੰ ਪੌਇੰਟ ਵੈਲਿਊਜ਼ ਦੇ ਔਸਤ ਦੁਆਰਾ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਅਤੇ ਇੱਕ 'ਸੈਂਟਰਾਇਡ' ਜਾਂ ਕੇਂਦਰੀ ਪੌਇੰਟ ਹੁੰਦਾ ਹੈ। ਦੂਰੀਆਂ ਇਸ ਲਈ ਉਸ ਸੈਂਟਰਾਇਡ ਤੋਂ ਦੂਰੀ ਦੁਆਰਾ ਮਾਪੀਆਂ ਜਾਂਦੀਆਂ ਹਨ। ਗੈਰ-ਯੂਕਲਿਡੀਅਨ ਦੂਰੀਆਂ 'ਕਲੱਸਟਰਾਇਡ' ਨੂੰ ਦਰਸਾਉਂਦੀਆਂ ਹਨ, ਉਹ ਪੌਇੰਟ ਜੋ ਹੋਰ ਪੌਇੰਟਸ ਦੇ ਸਭ ਤੋਂ ਨੇੜੇ ਹੁੰਦਾ ਹੈ। ਕਲੱਸਟਰਾਇਡ ਨੂੰ ਵੱਖ-ਵੱਖ ਤਰੀਕਿਆਂ ਨਾਲ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।
|
|
>
|
|
> 🎓 ['ਰੋਕੇ ਹੋਏ'](https://wikipedia.org/wiki/Constrained_clustering)
|
|
>
|
|
> [ਰੋਕੇ ਹੋਏ ਕਲੱਸਟਰਿੰਗ](https://web.cs.ucdavis.edu/~davidson/Publications/ICDMTutorial.pdf) ਇਸ ਅਨਸੁਪਰਵਾਈਜ਼ਡ ਤਰੀਕੇ ਵਿੱਚ 'ਸੈਮੀ-ਸੁਪਰਵਾਈਜ਼ਡ' ਲਰਨਿੰਗ ਨੂੰ ਸ਼ਾਮਲ ਕਰਦਾ ਹੈ। ਪੌਇੰਟਸ ਦੇ ਵਿਚਕਾਰ ਸੰਬੰਧਾਂ ਨੂੰ 'ਲਿੰਕ ਨਹੀਂ ਕਰ ਸਕਦਾ' ਜਾਂ 'ਲਿੰਕ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ' ਵਜੋਂ ਚਿੰਨ੍ਹਿਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਤਾਂ ਕਿ ਡੇਟਾਸੈੱਟ 'ਤੇ ਕੁਝ ਨਿਯਮ ਲਾਗੂ ਕੀਤੇ ਜਾ ਸਕਣ।
|
|
>
|
|
>ਉਦਾਹਰਨ: ਜੇਕਰ ਇੱਕ ਐਲਗੋਰਿਥਮ ਨੂੰ ਬਿਨਾਂ ਲੇਬਲ ਜਾਂ ਅੰਸ਼ਿਕ ਤੌਰ 'ਤੇ ਲੇਬਲ ਡੇਟਾ ਦੇ ਬੈਚ 'ਤੇ ਖੁੱਲ੍ਹਾ ਛੱਡਿਆ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਇਹ ਬਣਾਏ ਗਏ ਕਲੱਸਟਰਾਂ ਦੀ ਗੁਣਵੱਤਾ ਖਰਾਬ ਹੋ ਸਕਦੀ ਹੈ। ਉਪਰੋਕਤ ਉਦਾਹਰਨ ਵਿੱਚ, ਕਲੱਸਟਰ 'ਗੋਲ ਸੰਗੀਤਕ ਚੀਜ਼ਾਂ' ਅਤੇ 'ਚੌਰਸ ਸੰਗੀਤਕ ਚੀਜ਼ਾਂ' ਅਤੇ 'ਤਿਕੋਣ ਚੀਜ਼ਾਂ' ਅਤੇ 'ਕੁਕੀਜ਼' ਨੂੰ ਸਮੂਹਬੱਧ ਕਰ ਸਕਦੇ ਹਨ। ਜੇਕਰ ਕੁਝ ਰੋਕਾਂ, ਜਾਂ ਨਿਯਮਾਂ ਦੀ ਪਾਲਣਾ ਕਰਨ ਲਈ ਦਿੱਤੀ ਜਾਂਦੀ ਹੈ ("ਆਈਟਮ ਪਲਾਸਟਿਕ ਦਾ ਬਣਿਆ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ", "ਆਈਟਮ ਨੂੰ ਸੰਗੀਤ ਪੈਦਾ ਕਰਨ ਦੇ ਯੋਗ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ") ਇਹ ਐਲਗੋਰਿਥਮ ਨੂੰ ਵਧੀਆ ਚੋਣਾਂ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰ ਸਕਦਾ ਹੈ।
|
|
>
|
|
> 🎓 'ਘਣਤਾ'
|
|
>
|
|
> ਡੇਟਾ ਜੋ 'ਸ਼ੋਰ' ਵਾਲਾ ਹੈ ਉਸਨੂੰ '
|
|
| 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 |
|
|
|
|
1. ਡਾਟਾਫਰੇਮ ਬਾਰੇ ਕੁਝ ਜਾਣਕਾਰੀ ਪ੍ਰਾਪਤ ਕਰੋ, `info()` ਕਾਲ ਕਰਕੇ:
|
|
|
|
```python
|
|
df.info()
|
|
```
|
|
|
|
ਨਤੀਜਾ ਇਸ ਤਰ੍ਹਾਂ ਦਿਖਾਈ ਦੇ ਰਿਹਾ ਹੈ:
|
|
|
|
```output
|
|
<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
|
|
```
|
|
|
|
1. ਨਲ ਮੁੱਲਾਂ ਦੀ ਦੂਬਾਰਾ ਜਾਂਚ ਕਰੋ, `isnull()` ਕਾਲ ਕਰਕੇ ਅਤੇ ਇਹ ਪੱਕਾ ਕਰਕੇ ਕਿ ਜੋੜ 0 ਹੈ:
|
|
|
|
```python
|
|
df.isnull().sum()
|
|
```
|
|
|
|
ਸਭ ਕੁਝ ਠੀਕ ਹੈ:
|
|
|
|
```output
|
|
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
|
|
```
|
|
|
|
1. ਡਾਟਾ ਦਾ ਵੇਰਵਾ ਦਿਓ:
|
|
|
|
```python
|
|
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 |
|
|
|
|
> 🤔 ਜੇਕਰ ਅਸੀਂ ਕਲੱਸਟਰਿੰਗ ਨਾਲ ਕੰਮ ਕਰ ਰਹੇ ਹਾਂ, ਇੱਕ ਅਨਸੁਪਰਵਾਈਜ਼ਡ ਵਿਧੀ ਜੋ ਲੇਬਲਡ ਡਾਟਾ ਦੀ ਲੋੜ ਨਹੀਂ ਰੱਖਦੀ, ਤਾਂ ਅਸੀਂ ਇਹ ਡਾਟਾ ਲੇਬਲਸ ਨਾਲ ਕਿਉਂ ਦਿਖਾ ਰਹੇ ਹਾਂ? ਡਾਟਾ ਐਕਸਪਲੋਰੇਸ਼ਨ ਫੇਜ਼ ਵਿੱਚ, ਇਹ ਸਹਾਇਕ ਹੁੰਦੇ ਹਨ, ਪਰ ਕਲੱਸਟਰਿੰਗ ਐਲਗੋਰਿਥਮਾਂ ਦੇ ਕੰਮ ਕਰਨ ਲਈ ਇਹ ਜ਼ਰੂਰੀ ਨਹੀਂ ਹਨ। ਤੁਸੀਂ ਕਾਲਮ ਹੈਡਰਜ਼ ਨੂੰ ਹਟਾ ਸਕਦੇ ਹੋ ਅਤੇ ਕਾਲਮ ਨੰਬਰ ਦੁਆਰਾ ਡਾਟਾ ਦਾ ਹਵਾਲਾ ਦੇ ਸਕਦੇ ਹੋ।
|
|
|
|
ਡਾਟਾ ਦੇ ਆਮ ਮੁੱਲਾਂ ਨੂੰ ਦੇਖੋ। ਧਿਆਨ ਦਿਓ ਕਿ popularity '0' ਹੋ ਸਕਦੀ ਹੈ, ਜੋ ਉਹ ਗੀਤ ਦਿਖਾਉਂਦੇ ਹਨ ਜਿਨ੍ਹਾਂ ਦੀ ਕੋਈ ਰੈਂਕਿੰਗ ਨਹੀਂ ਹੈ। ਆਓ ਇਸਨੂੰ ਜਲਦੀ ਹਟਾਈਏ।
|
|
|
|
1. ਸਭ ਤੋਂ ਪ੍ਰਸਿੱਧ ਜਾਨਰਜ਼ ਦਾ ਪਤਾ ਲਗਾਉਣ ਲਈ ਇੱਕ ਬਾਰਪਲਾਟ ਦੀ ਵਰਤੋਂ ਕਰੋ:
|
|
|
|
```python
|
|
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]` ਨੂੰ ਵਧੇਰੇ ਮੁੱਲ ਵਿੱਚ ਬਦਲੋ, ਜਾਂ ਇਸਨੂੰ ਹਟਾ ਦਿਓ ਤਾਂ ਜੋ ਸਾਰੇ ਨੂੰ ਦੇਖ ਸਕੋ।
|
|
|
|
ਨੋਟ ਕਰੋ, ਜਦੋਂ ਸਿਖਰਲੇ ਜਾਨਰ ਨੂੰ 'Missing' ਵਜੋਂ ਵੇਰਵਾ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਇਸਦਾ ਮਤਲਬ ਹੈ ਕਿ Spotify ਨੇ ਇਸਨੂੰ ਵਰਗਬੱਧ ਨਹੀਂ ਕੀਤਾ, ਇਸ ਲਈ ਆਓ ਇਸਨੂੰ ਹਟਾ ਦਿਓ।
|
|
|
|
1. ਗੁੰਮ ਹੋਏ ਡਾਟਾ ਨੂੰ ਫਿਲਟਰ ਕਰਕੇ ਹਟਾਓ
|
|
|
|
```python
|
|
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')
|
|
```
|
|
|
|
ਹੁਣ ਜਾਨਰਜ਼ ਦੀ ਦੁਬਾਰਾ ਜਾਂਚ ਕਰੋ:
|
|
|
|

|
|
|
|
1. ਸਪਸ਼ਟ ਤੌਰ 'ਤੇ, ਸਿਖਰਲੇ ਤਿੰਨ ਜਾਨਰਜ਼ ਇਸ ਡਾਟਾਸੈਟ ਵਿੱਚ ਹਾਵੀ ਹਨ। ਆਓ `afro dancehall`, `afropop`, ਅਤੇ `nigerian pop` 'ਤੇ ਧਿਆਨ ਕੇਂਦਰਿਤ ਕਰੀਏ, ਅਤੇ ਇਸ ਤੋਂ ਇਲਾਵਾ ਡਾਟਾਸੈਟ ਨੂੰ ਫਿਲਟਰ ਕਰਕੇ 0 popularity ਮੁੱਲ ਵਾਲੇ ਕਿਸੇ ਵੀ ਚੀਜ਼ ਨੂੰ ਹਟਾਓ (ਜਿਸਦਾ ਮਤਲਬ ਹੈ ਕਿ ਇਸਨੂੰ ਡਾਟਾਸੈਟ ਵਿੱਚ ਇੱਕ popularity ਨਾਲ ਵਰਗਬੱਧ ਨਹੀਂ ਕੀਤਾ ਗਿਆ ਅਤੇ ਸਾਡੇ ਉਦੇਸ਼ਾਂ ਲਈ ਇਸਨੂੰ ਸ਼ੋਰ ਮੰਨਿਆ ਜਾ ਸਕਦਾ ਹੈ):
|
|
|
|
```python
|
|
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')
|
|
```
|
|
|
|
1. ਇੱਕ ਛੋਟਾ ਟੈਸਟ ਕਰੋ ਕਿ ਡਾਟਾ ਕਿਸੇ ਖਾਸ ਤਰੀਕੇ ਨਾਲ ਮਜ਼ਬੂਤੀ ਨਾਲ ਸੰਬੰਧਿਤ ਹੈ ਜਾਂ ਨਹੀਂ:
|
|
|
|
```python
|
|
corrmat = df.corr(numeric_only=True)
|
|
f, ax = plt.subplots(figsize=(12, 9))
|
|
sns.heatmap(corrmat, vmax=.8, square=True)
|
|
```
|
|
|
|

|
|
|
|
ਸਿਰਫ਼ `energy` ਅਤੇ `loudness` ਦੇ ਵਿਚਕਾਰ ਮਜ਼ਬੂਤ ਸੰਬੰਧ ਹੈ, ਜੋ ਹੈਰਾਨੀਜਨਕ ਨਹੀਂ ਹੈ, ਕਿਉਂਕਿ ਉੱਚ-ਅਵਾਜ਼ ਵਾਲਾ ਸੰਗੀਤ ਆਮ ਤੌਰ 'ਤੇ ਕਾਫ਼ੀ energetic ਹੁੰਦਾ ਹੈ। ਇਸ ਤੋਂ ਇਲਾਵਾ, ਸੰਬੰਧ ਕਾਫ਼ੀ ਕਮਜ਼ੋਰ ਹਨ। ਇਹ ਦਿਲਚਸਪ ਹੋਵੇਗਾ ਕਿ ਕਲੱਸਟਰਿੰਗ ਐਲਗੋਰਿਥਮ ਇਸ ਡਾਟਾ ਤੋਂ ਕੀ ਬਣਾਉਂਦਾ ਹੈ।
|
|
|
|
> 🎓 ਨੋਟ ਕਰੋ ਕਿ ਸੰਬੰਧ ਕਾਰਨ ਨੂੰ ਦਰਸਾਉਂਦਾ ਨਹੀਂ ਹੈ! ਸਾਡੇ ਕੋਲ ਸੰਬੰਧ ਦਾ ਸਬੂਤ ਹੈ ਪਰ ਕਾਰਨ ਦਾ ਸਬੂਤ ਨਹੀਂ। ਇੱਕ [ਮਜ਼ੇਦਾਰ ਵੈਬਸਾਈਟ](https://tylervigen.com/spurious-correlations) ਕੁਝ ਵਿਜੁਅਲ ਦਿਖਾਉਂਦੀ ਹੈ ਜੋ ਇਸ ਬਿੰਦੂ ਨੂੰ ਜ਼ੋਰ ਦਿੰਦੀ ਹੈ।
|
|
|
|
ਕੀ ਇਸ ਡਾਟਾਸੈਟ ਵਿੱਚ ਗੀਤ ਦੀ perceived popularity ਅਤੇ danceability ਦੇ ਆਸਪਾਸ ਕੋਈ ਸੰਮਿਲਨ ਹੈ? ਇੱਕ FacetGrid ਦਿਖਾਉਂਦਾ ਹੈ ਕਿ concentric circles ਲਾਈਨ ਅਪ ਹੁੰਦੀਆਂ ਹਨ, ਜਾਨਰ ਤੋਂ ਬਿਨਾਂ। ਕੀ ਇਹ ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਨਾਈਜੀਰੀਆਈ ਰੁਚੀਆਂ ਇਸ ਜਾਨਰ ਲਈ danceability ਦੇ ਇੱਕ ਖਾਸ ਪੱਧਰ 'ਤੇ converge ਕਰਦੀਆਂ ਹਨ?
|
|
|
|
✅ ਵੱਖ-ਵੱਖ ਡਾਟਾਪੋਇੰਟ (energy, loudness, speechiness) ਅਤੇ ਹੋਰ ਜਾਂ ਵੱਖਰੇ ਸੰਗੀਤਕ ਜਾਨਰਜ਼ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ। ਤੁਸੀਂ ਕੀ ਖੋਜ ਸਕਦੇ ਹੋ? ਡਾਟਾ ਪੋਇੰਟਸ ਦੇ ਆਮ ਫੈਲਾਅ ਨੂੰ ਦੇਖਣ ਲਈ `df.describe()` ਟੇਬਲ ਨੂੰ ਦੇਖੋ।
|
|
|
|
### ਅਭਿਆਸ - ਡਾਟਾ ਵੰਡ
|
|
|
|
ਕੀ ਇਹ ਤਿੰਨ ਜਾਨਰਜ਼ ਆਪਣੇ popularity ਦੇ ਆਧਾਰ 'ਤੇ danceability ਦੀ perception ਵਿੱਚ ਮਹੱਤਵਪੂਰਨ ਤੌਰ 'ਤੇ ਵੱਖਰੇ ਹਨ?
|
|
|
|
1. ਸਾਡੇ ਸਿਖਰਲੇ ਤਿੰਨ ਜਾਨਰਜ਼ ਦੇ ਡਾਟਾ ਵੰਡ ਨੂੰ popularity ਅਤੇ danceability ਲਈ ਦਿੱਤੇ x ਅਤੇ y ਅਕਸਾਂ ਦੇ ਨਾਲ ਜਾਂਚੋ।
|
|
|
|
```python
|
|
sns.set_theme(style="ticks")
|
|
|
|
g = sns.jointplot(
|
|
data=df,
|
|
x="popularity", y="danceability", hue="artist_top_genre",
|
|
kind="kde",
|
|
)
|
|
```
|
|
|
|
ਤੁਸੀਂ ਇੱਕ ਆਮ ਸੰਮਿਲਨ ਬਿੰਦੂ ਦੇ ਆਸਪਾਸ concentric circles ਦੀ ਖੋਜ ਕਰ ਸਕਦੇ ਹੋ, ਜੋ ਬਿੰਦੂਆਂ ਦੀ ਵੰਡ ਦਿਖਾਉਂਦਾ ਹੈ।
|
|
|
|
> 🎓 ਨੋਟ ਕਰੋ ਕਿ ਇਹ ਉਦਾਹਰਨ ਇੱਕ KDE (Kernel Density Estimate) ਗ੍ਰਾਫ ਦੀ ਵਰਤੋਂ ਕਰਦੀ ਹੈ ਜੋ ਡਾਟਾ ਨੂੰ ਇੱਕ ਲਗਾਤਾਰ probability density curve ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਦਰਸਾਉਂਦੀ ਹੈ। ਇਹ ਸਾਨੂੰ ਕਈ ਵੰਡਾਂ ਨਾਲ ਕੰਮ ਕਰਦੇ ਸਮੇਂ ਡਾਟਾ ਦੀ ਵਿਆਖਿਆ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦੀ ਹੈ।
|
|
|
|
ਆਮ ਤੌਰ 'ਤੇ, ਤਿੰਨ ਜਾਨਰਜ਼ ਆਪਣੇ popularity ਅਤੇ danceability ਦੇ ਹਵਾਲੇ ਨਾਲ ਢਿੱਲੇ ਤੌਰ 'ਤੇ ਸਿੱਧੇ ਲਾਈਨ ਵਿੱਚ ਹਨ। ਇਸ ਢਿੱਲੇ-ਲਾਈਨਡ ਡਾਟਾ ਵਿੱਚ ਕਲੱਸਟਰਾਂ ਨੂੰ ਨਿਰਧਾਰਤ ਕਰਨਾ ਇੱਕ ਚੁਣੌਤੀ ਹੋਵੇਗੀ:
|
|
|
|

|
|
|
|
1. ਇੱਕ scatter plot ਬਣਾਓ:
|
|
|
|
```python
|
|
sns.FacetGrid(df, hue="artist_top_genre", height=5) \
|
|
.map(plt.scatter, "popularity", "danceability") \
|
|
.add_legend()
|
|
```
|
|
|
|
ਉਹੀ ਅਕਸਾਂ ਦੇ scatterplot ਵਿੱਚ ਸੰਮਿਲਨ ਦਾ ਇੱਕ ਸਮਾਨ ਪੈਟਰਨ ਦਿਖਾਈ ਦਿੰਦਾ ਹੈ
|
|
|
|

|
|
|
|
ਆਮ ਤੌਰ 'ਤੇ, ਕਲੱਸਟਰਿੰਗ ਲਈ, ਤੁਸੀਂ ਡਾਟਾ ਦੇ ਕਲੱਸਟਰਾਂ ਨੂੰ ਦਿਖਾਉਣ ਲਈ scatterplots ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹੋ, ਇਸ ਲਈ ਇਸ ਕਿਸਮ ਦੇ ਵਿਜੁਅਲਾਈਜ਼ੇਸ਼ਨ ਨੂੰ ਮਾਸਟਰ ਕਰਨਾ ਬਹੁਤ ਹੀ ਲਾਭਦਾਇਕ ਹੈ। ਅਗਲੇ ਪਾਠ ਵਿੱਚ, ਅਸੀਂ ਇਸ ਫਿਲਟਰਡ ਡਾਟਾ ਨੂੰ ਲੈ ਕੇ k-means clustering ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇਸ ਡਾਟਾ ਵਿੱਚ ਸਮੂਹਾਂ ਦੀ ਖੋਜ ਕਰਾਂਗੇ ਜੋ ਦਿਲਚਸਪ ਤਰੀਕੇ ਨਾਲ ਇੱਕ-ਦੂਜੇ ਨਾਲ ਢੁਕਵਾਂ ਹਨ।
|
|
|
|
---
|
|
|
|
## 🚀ਚੁਣੌਤੀ
|
|
|
|
ਅਗਲੇ ਪਾਠ ਦੀ ਤਿਆਰੀ ਵਿੱਚ, ਉਹਨਾਂ ਵੱਖ-ਵੱਖ ਕਲੱਸਟਰਿੰਗ ਐਲਗੋਰਿਥਮਾਂ ਬਾਰੇ ਇੱਕ ਚਾਰਟ ਬਣਾਓ ਜੋ ਤੁਸੀਂ ਖੋਜ ਸਕਦੇ ਹੋ ਅਤੇ ਉਤਪਾਦਨ ਵਾਤਾਵਰਣ ਵਿੱਚ ਵਰਤ ਸਕਦੇ ਹੋ। ਕਲੱਸਟਰਿੰਗ ਕਿਸ ਕਿਸਮ ਦੇ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਹੱਲ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰ ਰਹੀ ਹੈ?
|
|
|
|
## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ml/)
|
|
|
|
## ਸਮੀਖਿਆ ਅਤੇ ਸਵੈ ਅਧਿਐਨ
|
|
|
|
ਕਲੱਸਟਰਿੰਗ ਐਲਗੋਰਿਥਮਾਂ ਨੂੰ ਲਾਗੂ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ, ਜਿਵੇਂ ਕਿ ਅਸੀਂ ਸਿੱਖਿਆ ਹੈ, ਇਹ ਤੁਹਾਡੇ ਡਾਟਾਸੈਟ ਦੀ ਪ੍ਰਕਿਰਤੀ ਨੂੰ ਸਮਝਣ ਲਈ ਇੱਕ ਚੰਗਾ ਵਿਚਾਰ ਹੈ। ਇਸ ਵਿਸ਼ੇ 'ਤੇ ਹੋਰ ਪੜ੍ਹੋ [ਇੱਥੇ](https://www.kdnuggets.com/2019/10/right-clustering-algorithm.html)
|
|
|
|
[ਇਹ ਸਹਾਇਕ ਲੇਖ](https://www.freecodecamp.org/news/8-clustering-algorithms-in-machine-learning-that-all-data-scientists-should-know/) ਤੁਹਾਨੂੰ ਵੱਖ-ਵੱਖ ਤਰੀਕਿਆਂ ਨਾਲ ਦਿਖਾਉਂਦਾ ਹੈ ਕਿ ਵੱਖ-ਵੱਖ ਕਲੱਸਟਰਿੰਗ ਐਲਗੋਰਿਥਮ ਵੱਖ-ਵੱਖ ਡਾਟਾ ਸ਼ੇਪਾਂ ਦੇ ਨਾਲ ਕਿਵੇਂ ਵਿਹਾਰ ਕਰਦੇ ਹਨ।
|
|
|
|
## ਅਸਾਈਨਮੈਂਟ
|
|
|
|
[ਕਲੱਸਟਰਿੰਗ ਲਈ ਹੋਰ ਵਿਜੁਅਲਾਈਜ਼ੇਸ਼ਨ ਖੋਜੋ](assignment.md)
|
|
|
|
---
|
|
|
|
**ਅਸਵੀਕਾਰਨਾ**:
|
|
ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀਤਾ ਲਈ ਯਤਨਸ਼ੀਲ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਣੀਕਤਾਵਾਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਇਸਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। |