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.
ML-For-Beginners/translations/pa/4-Classification/1-Introduction
leestott f915efe2b4
🌐 Update translations via Co-op Translator
2 weeks ago
..
solution 🌐 Update translations via Co-op Translator 3 weeks ago
README.md 🌐 Update translations via Co-op Translator 2 weeks ago
assignment.md 🌐 Update translations via Co-op Translator 3 weeks ago
notebook.ipynb 🌐 Update translations via Co-op Translator 3 weeks ago

README.md

ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਦਾ ਪਰਚੇਅ

ਇਨ੍ਹਾਂ ਚਾਰ ਪਾਠਾਂ ਵਿੱਚ, ਤੁਸੀਂ ਕਲਾਸਿਕ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਦੇ ਇੱਕ ਮੂਲ ਧਿਆਨ - ਕਲਾਸੀਫਿਕੇਸ਼ਨ - ਦੀ ਖੋਜ ਕਰੋਗੇ। ਅਸੀਂ ਏਸ਼ੀਆ ਅਤੇ ਭਾਰਤ ਦੇ ਸਾਰੇ ਸ਼ਾਨਦਾਰ ਖਾਣਿਆਂ ਬਾਰੇ ਡੇਟਾਸੈਟ ਨਾਲ ਵੱਖ-ਵੱਖ ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਐਲਗੋਰਿਥਮ ਦੀ ਵਰਤੋਂ ਕਰਨ ਦਾ ਤਰੀਕਾ ਸਿੱਖਾਂਗੇ। ਉਮੀਦ ਹੈ ਕਿ ਤੁਸੀਂ ਭੁੱਖੇ ਹੋ!

ਸਿਰਫ਼ ਇੱਕ ਚੁਟਕੀ!

ਇਨ੍ਹਾਂ ਪਾਠਾਂ ਵਿੱਚ ਪੈਨ-ਏਸ਼ੀਆਈ ਖਾਣਿਆਂ ਦਾ ਜਸ਼ਨ ਮਨਾਓ! ਚਿੱਤਰ Jen Looper ਦੁਆਰਾ

ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਸੁਪਰਵਾਈਜ਼ਡ ਲਰਨਿੰਗ ਦਾ ਇੱਕ ਰੂਪ ਹੈ ਜੋ ਰਿਗ੍ਰੈਸ਼ਨ ਤਕਨੀਕਾਂ ਨਾਲ ਕਾਫ਼ੀ ਸਮਾਨਤਾ ਰੱਖਦਾ ਹੈ। ਜੇ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਸਾਰੇ ਡੇਟਾਸੈਟ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਮੁੱਲ ਜਾਂ ਚੀਜ਼ਾਂ ਦੇ ਨਾਮਾਂ ਦੀ ਪੇਸ਼ਗੋਈ ਕਰਨ ਬਾਰੇ ਹੈ, ਤਾਂ ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਆਮ ਤੌਰ 'ਤੇ ਦੋ ਸਮੂਹਾਂ ਵਿੱਚ ਵੰਡਿਆ ਜਾਂਦਾ ਹੈ: ਬਾਈਨਰੀ ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਅਤੇ ਮਲਟੀਕਲਾਸ ਕਲਾਸੀਫਿਕੇਸ਼ਨ

ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਦਾ ਪਰਚੇਅ

🎥 ਉਪਰੋਕਤ ਚਿੱਤਰ 'ਤੇ ਕਲਿਕ ਕਰੋ: MIT ਦੇ John Guttag ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਦਾ ਪਰਚੇਅ ਦਿੰਦੇ ਹਨ

ਯਾਦ ਰੱਖੋ:

  • ਲਿਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਨੇ ਤੁਹਾਨੂੰ ਵੈਰੀਏਬਲਾਂ ਦੇ ਵਿਚਕਾਰ ਸੰਬੰਧਾਂ ਦੀ ਪੇਸ਼ਗੋਈ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕੀਤੀ ਅਤੇ ਇਹ ਪਤਾ ਲਗਾਉਣ ਵਿੱਚ ਸਹੀ ਪੇਸ਼ਗੋਈ ਕੀਤੀ ਕਿ ਨਵਾਂ ਡੇਟਾਪੌਇੰਟ ਉਸ ਲਾਈਨ ਦੇ ਸੰਬੰਧ ਵਿੱਚ ਕਿੱਥੇ ਆਵੇਗਾ। ਇਸ ਲਈ, ਤੁਸੀਂ ਪੇਸ਼ਗੋਈ ਕਰ ਸਕਦੇ ਹੋ ਕਿ ਸਿਤੰਬਰ ਦੇ ਮੁਕਾਬਲੇ ਦਸੰਬਰ ਵਿੱਚ ਕਦੂ ਦੀ ਕੀਮਤ ਕੀ ਹੋਵੇਗੀ
  • ਲੌਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਨੇ ਤੁਹਾਨੂੰ "ਬਾਈਨਰੀ ਸ਼੍ਰੇਣੀਆਂ" ਦੀ ਖੋਜ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕੀਤੀ: ਇਸ ਕੀਮਤ 'ਤੇ, ਕੀ ਇਹ ਕਦੂ ਸੰਤਰੀ ਹੈ ਜਾਂ ਨਾ-ਸੰਤਰੀ?

ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਵੱਖ-ਵੱਖ ਐਲਗੋਰਿਥਮ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ ਤਾਂ ਜੋ ਡੇਟਾਪੌਇੰਟ ਦੇ ਲੇਬਲ ਜਾਂ ਕਲਾਸ ਨੂੰ ਨਿਰਧਾਰਤ ਕਰਨ ਦੇ ਹੋਰ ਤਰੀਕੇ ਲੱਭੇ ਜਾ ਸਕਣ। ਆਓ ਇਸ ਖਾਣੇ ਦੇ ਡੇਟਾ ਨਾਲ ਕੰਮ ਕਰੀਏ ਤਾਂ ਜੋ ਦੇਖ ਸਕੀਏ ਕਿ ਸਮੱਗਰੀ ਦੇ ਇੱਕ ਸਮੂਹ ਨੂੰ ਦੇਖ ਕੇ, ਅਸੀਂ ਇਸ ਦੇ ਮੂਲ ਖਾਣੇ ਦੀ ਪਛਾਣ ਕਰ ਸਕਦੇ ਹਾਂ।

ਪ੍ਰੀ-ਪਾਠ ਕਵਿਜ਼

ਇਹ ਪਾਠ R ਵਿੱਚ ਉਪਲਬਧ ਹੈ!

ਪਰਚੇਅ

ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਖੋਜਕਰਤਾ ਅਤੇ ਡੇਟਾ ਸਾਇੰਟਿਸਟ ਦੀਆਂ ਮੂਲ ਗਤੀਵਿਧੀਆਂ ਵਿੱਚੋਂ ਇੱਕ ਹੈ। ਇੱਕ ਬਾਈਨਰੀ ਮੁੱਲ ("ਕੀ ਇਹ ਈਮੇਲ ਸਪੈਮ ਹੈ ਜਾਂ ਨਹੀਂ?") ਦੀ ਬੁਨਿਆਦੀ ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਤੋਂ ਲੈ ਕੇ ਕੰਪਿਊਟਰ ਵਿਜ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਜਟਿਲ ਚਿੱਤਰ ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਅਤੇ ਸੈਗਮੈਂਟੇਸ਼ਨ ਤੱਕ, ਡੇਟਾ ਨੂੰ ਕਲਾਸਾਂ ਵਿੱਚ ਵੰਡਣਾ ਅਤੇ ਇਸ ਤੋਂ ਸਵਾਲ ਪੁੱਛਣਾ ਹਮੇਸ਼ਾ ਲਾਭਦਾਇਕ ਹੁੰਦਾ ਹੈ।

ਇਸ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਹੋਰ ਵਿਗਿਆਨਕ ਢੰਗ ਨਾਲ ਵਿਆਖਿਆ ਕਰਨ ਲਈ, ਤੁਹਾਡਾ ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਵਿਧੀ ਇੱਕ ਪੇਸ਼ਗੋਈ ਮਾਡਲ ਬਣਾਉਂਦੀ ਹੈ ਜੋ ਤੁਹਾਨੂੰ ਇਨਪੁਟ ਵੈਰੀਏਬਲਾਂ ਅਤੇ ਆਉਟਪੁਟ ਵੈਰੀਏਬਲਾਂ ਦੇ ਵਿਚਕਾਰ ਸੰਬੰਧ ਨੂੰ ਨਕਸ਼ੇ ਵਿੱਚ ਦਰਸਾਉਣ ਯੋਗ ਬਣਾਉਂਦੀ ਹੈ।

ਬਾਈਨਰੀ ਵਸ. ਮਲਟੀਕਲਾਸ ਕਲਾਸੀਫਿਕੇਸ਼ਨ

ਬਾਈਨਰੀ ਵਸ. ਮਲਟੀਕਲਾਸ ਸਮੱਸਿਆਵਾਂ ਜਿਨ੍ਹਾਂ ਨੂੰ ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਐਲਗੋਰਿਥਮ ਹੱਲ ਕਰ ਸਕਦੇ ਹਨ। ਇਨਫੋਗ੍ਰਾਫਿਕ Jen Looper ਦੁਆਰਾ

ਡੇਟਾ ਨੂੰ ਸਾਫ਼ ਕਰਨ, ਇਸ ਨੂੰ ਵਿਜ਼ੁਅਲਾਈਜ਼ ਕਰਨ ਅਤੇ ਇਸ ਨੂੰ ML ਕੰਮਾਂ ਲਈ ਤਿਆਰ ਕਰਨ ਦੀ ਪ੍ਰਕਿਰਿਆ ਸ਼ੁਰੂ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ, ਆਓ ਸਿੱਖੀਏ ਕਿ ਕਿਵੇਂ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਨੂੰ ਡੇਟਾ ਨੂੰ ਕਲਾਸੀਫਾਈ ਕਰਨ ਲਈ ਲਾਭਦਾਇਕ ਬਣਾਇਆ ਜਾ ਸਕਦਾ ਹੈ।

ਅੰਕੜੇ ਤੋਂ ਲਿਆ ਗਿਆ, ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਕਲਾਸਿਕ ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ, ਜਿਵੇਂ ਕਿ smoker, weight, ਅਤੇ age ਵਰਗੇ ਫੀਚਰਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ X ਬਿਮਾਰੀ ਦੇ ਵਿਕਾਸ ਦੀ ਸੰਭਾਵਨਾ ਦਾ ਨਿਰਧਾਰਨ ਕਰਨਾ। ਇੱਕ ਸੁਪਰਵਾਈਜ਼ਡ ਲਰਨਿੰਗ ਤਕਨੀਕ ਦੇ ਤੌਰ 'ਤੇ ਜੋ ਤੁਸੀਂ ਪਹਿਲਾਂ ਕੀਤੇ ਰਿਗ੍ਰੈਸ਼ਨ ਅਭਿਆਸਾਂ ਦੇ ਸਮਾਨ ਹੈ, ਤੁਹਾਡਾ ਡੇਟਾ ਲੇਬਲ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਅਤੇ ML ਐਲਗੋਰਿਥਮ ਉਹਨਾਂ ਲੇਬਲਾਂ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਨ ਤਾਂ ਜੋ ਡੇਟਾਸੈਟ ਦੇ ਕਲਾਸਾਂ (ਜਾਂ 'ਫੀਚਰਾਂ') ਦੀ ਪੇਸ਼ਗੋਈ ਅਤੇ ਨਿਰਧਾਰਨ ਕੀਤਾ ਜਾ ਸਕੇ ਅਤੇ ਉਨ੍ਹਾਂ ਨੂੰ ਇੱਕ ਸਮੂਹ ਜਾਂ ਨਤੀਜੇ ਵਿੱਚ ਸੌਂਪਿਆ ਜਾ ਸਕੇ।

ਇੱਕ ਖਾਣੇ ਦੇ ਡੇਟਾਸੈਟ ਦੀ ਕਲਪਨਾ ਕਰਨ ਲਈ ਇੱਕ ਪਲ ਲਓ। ਇੱਕ ਮਲਟੀਕਲਾਸ ਮਾਡਲ ਕੀ ਜਵਾਬ ਦੇ ਸਕਦਾ ਹੈ? ਇੱਕ ਬਾਈਨਰੀ ਮਾਡਲ ਕੀ ਜਵਾਬ ਦੇ ਸਕਦਾ ਹੈ? ਜੇ ਤੁਸੀਂ ਇਹ ਪਤਾ ਲਗਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ ਕਿ ਦਿੱਤੇ ਗਏ ਖਾਣੇ ਵਿੱਚ ਮੀਥੀ ਦਾਣਾ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ ਜਾਂ ਨਹੀਂ, ਤਾਂ ਕੀ ਹੋਵੇਗਾ? ਜੇ ਤੁਸੀਂ ਇਹ ਦੇਖਣਾ ਚਾਹੁੰਦੇ ਹੋ ਕਿ, ਸਟਾਰ ਐਨੀਸ, ਆਰਟੀਚੋਕ, ਫੁੱਲਗੋਭੀ, ਅਤੇ ਹਾਰਸਰੈਡਿਸ਼ ਨਾਲ ਭਰੇ ਇੱਕ ਕਿਰਾਣੇ ਬੈਗ ਦੇ ਤੌਹਫ਼ੇ ਦੇ ਨਾਲ, ਤੁਸੀਂ ਇੱਕ ਆਮ ਭਾਰਤੀ ਖਾਣਾ ਬਣਾਉਣ ਦੇ ਯੋਗ ਹੋ ਸਕਦੇ ਹੋ?

ਪ੍ਰੇਸ਼ਾਨ ਕਰਨ ਵਾਲੇ ਰਹੱਸਮਈ ਬਾਸਕਟ

🎥 ਉਪਰੋਕਤ ਚਿੱਤਰ 'ਤੇ ਕਲਿਕ ਕਰੋ। 'Chopped' ਸ਼ੋਅ ਦਾ ਸਾਰ ਇਹ ਹੈ ਕਿ 'ਰਹੱਸਮਈ ਬਾਸਕਟ' ਜਿੱਥੇ ਸ਼ੈਫ਼ਾਂ ਨੂੰ ਸਮਰਥਨ ਦੇ ਤੌਰ 'ਤੇ ਚੁਣੇ ਗਏ ਸਮੱਗਰੀ ਨਾਲ ਕੁਝ ਖਾਣਾ ਬਣਾਉਣਾ ਪੈਂਦਾ ਹੈ। ਨਿਸ਼ਚਿਤ ਤੌਰ 'ਤੇ ਇੱਕ ML ਮਾਡਲ ਮਦਦ ਕਰਦਾ!

ਹੈਲੋ 'ਕਲਾਸੀਫਾਇਰ'

ਜੋ ਸਵਾਲ ਅਸੀਂ ਇਸ ਖਾਣੇ ਦੇ ਡੇਟਾਸੈਟ ਤੋਂ ਪੁੱਛਣਾ ਚਾਹੁੰਦੇ ਹਾਂ, ਉਹ ਅਸਲ ਵਿੱਚ ਇੱਕ ਮਲਟੀਕਲਾਸ ਸਵਾਲ ਹੈ, ਕਿਉਂਕਿ ਸਾਡੇ ਕੋਲ ਕੰਮ ਕਰਨ ਲਈ ਕਈ ਸੰਭਾਵਿਤ ਰਾਸ਼ਟਰੀ ਖਾਣੇ ਹਨ। ਦਿੱਤੇ ਗਏ ਸਮੱਗਰੀ ਦੇ ਬੈਚ ਦੇ ਅਧਾਰ 'ਤੇ, ਇਹ ਡੇਟਾ ਕਿਹੜੇ ਕਈ ਕਲਾਸਾਂ ਵਿੱਚ ਫਿੱਟ ਹੋਵੇਗਾ?

Scikit-learn ਵੱਖ-ਵੱਖ ਐਲਗੋਰਿਥਮ ਪੇਸ਼ ਕਰਦਾ ਹੈ ਜੋ ਤੁਸੀਂ ਡੇਟਾ ਨੂੰ ਕਲਾਸੀਫਾਈ ਕਰਨ ਲਈ ਵਰਤ ਸਕਦੇ ਹੋ, ਇਹ ਇਸ ਗੱਲ 'ਤੇ ਨਿਰਭਰ ਕਰਦਾ ਹੈ ਕਿ ਤੁਸੀਂ ਕਿਹੜੀ ਸਮੱਸਿਆ ਹੱਲ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ। ਅਗਲੇ ਦੋ ਪਾਠਾਂ ਵਿੱਚ, ਤੁਸੀਂ ਇਨ੍ਹਾਂ ਐਲਗੋਰਿਥਮਾਂ ਬਾਰੇ ਸਿੱਖੋਗੇ।

ਅਭਿਆਸ - ਆਪਣੇ ਡੇਟਾ ਨੂੰ ਸਾਫ਼ ਅਤੇ ਸੰਤੁਲਿਤ ਕਰੋ

ਇਸ ਪ੍ਰੋਜੈਕਟ ਨੂੰ ਸ਼ੁਰੂ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਪਹਿਲਾ ਕੰਮ, ਤੁਹਾਡੇ ਡੇਟਾ ਨੂੰ ਸਾਫ਼ ਅਤੇ ਸੰਤੁਲਿਤ ਕਰਨਾ ਹੈ ਤਾਂ ਜੋ ਵਧੀਆ ਨਤੀਜੇ ਪ੍ਰਾਪਤ ਕੀਤੇ ਜਾ ਸਕਣ। ਇਸ ਫੋਲਡਰ ਦੇ ਰੂਟ ਵਿੱਚ ਖਾਲੀ notebook.ipynb ਫਾਈਲ ਨਾਲ ਸ਼ੁਰੂ ਕਰੋ।

ਸਭ ਤੋਂ ਪਹਿਲਾਂ imblearn ਨੂੰ ਇੰਸਟਾਲ ਕਰੋ। ਇਹ Scikit-learn ਪੈਕੇਜ ਹੈ ਜੋ ਤੁਹਾਨੂੰ ਡੇਟਾ ਨੂੰ ਵਧੀਆ ਸੰਤੁਲਿਤ ਕਰਨ ਦੀ ਆਗਿਆ ਦੇਵੇਗਾ (ਤੁਸੀਂ ਇਸ ਕੰਮ ਬਾਰੇ ਇੱਕ ਮਿੰਟ ਵਿੱਚ ਹੋਰ ਸਿੱਖੋਗੇ)।

  1. imblearn ਨੂੰ ਇੰਸਟਾਲ ਕਰਨ ਲਈ, pip install ਚਲਾਓ, ਇਸ ਤਰ੍ਹਾਂ:

    pip install imblearn
    
  2. ਆਪਣੇ ਡੇਟਾ ਨੂੰ ਇੰਪੋਰਟ ਕਰਨ ਅਤੇ ਇਸ ਨੂੰ ਵਿਜ਼ੁਅਲਾਈਜ਼ ਕਰਨ ਲਈ ਜ਼ਰੂਰੀ ਪੈਕੇਜ ਇੰਪੋਰਟ ਕਰੋ, SMOTE ਨੂੰ imblearn ਤੋਂ ਵੀ ਇੰਪੋਰਟ ਕਰੋ।

    import pandas as pd
    import matplotlib.pyplot as plt
    import matplotlib as mpl
    import numpy as np
    from imblearn.over_sampling import SMOTE
    

    ਹੁਣ ਤੁਸੀਂ ਅਗਲੇ ਕਦਮ ਵਿੱਚ ਡੇਟਾ ਨੂੰ ਇੰਪੋਰਟ ਕਰਨ ਲਈ ਤਿਆਰ ਹੋ।

  3. ਅਗਲਾ ਕੰਮ ਡੇਟਾ ਨੂੰ ਇੰਪੋਰਟ ਕਰਨਾ ਹੋਵੇਗਾ:

    df  = pd.read_csv('../data/cuisines.csv')
    

    read_csv() ਦੀ ਵਰਤੋਂ cusines.csv ਫਾਈਲ ਦੀ ਸਮੱਗਰੀ ਨੂੰ ਪੜ੍ਹਨ ਲਈ ਕੀਤੀ ਜਾਵੇਗੀ ਅਤੇ ਇਸ ਨੂੰ ਵੈਰੀਏਬਲ df ਵਿੱਚ ਰੱਖਿਆ ਜਾਵੇਗਾ।

  4. ਡੇਟਾ ਦੇ ਆਕਾਰ ਦੀ ਜਾਂਚ ਕਰੋ:

    df.head()
    

    ਪਹਿਲੇ ਪੰਜ ਪੰਕਤਾਂ ਇਸ ਤਰ੍ਹਾਂ ਦਿਖਾਈ ਦਿੰਦੇ ਹਨ:

    |     | Unnamed: 0 | cuisine | almond | angelica | anise | anise_seed | apple | apple_brandy | apricot | armagnac | ... | whiskey | white_bread | white_wine | whole_grain_wheat_flour | wine | wood | yam | yeast | yogurt | zucchini |
    | --- | ---------- | ------- | ------ | -------- | ----- | ---------- | ----- | ------------ | ------- | -------- | --- | ------- | ----------- | ---------- | ----------------------- | ---- | ---- | --- | ----- | ------ | -------- |
    | 0   | 65         | indian  | 0      | 0        | 0     | 0          | 0     | 0            | 0       | 0        | ... | 0       | 0           | 0          | 0                       | 0    | 0    | 0   | 0     | 0      | 0        |
    | 1   | 66         | indian  | 1      | 0        | 0     | 0          | 0     | 0            | 0       | 0        | ... | 0       | 0           | 0          | 0                       | 0    | 0    | 0   | 0     | 0      | 0        |
    | 2   | 67         | indian  | 0      | 0        | 0     | 0          | 0     | 0            | 0       | 0        | ... | 0       | 0           | 0          | 0                       | 0    | 0    | 0   | 0     | 0      | 0        |
    | 3   | 68         | indian  | 0      | 0        | 0     | 0          | 0     | 0            | 0       | 0        | ... | 0       | 0           | 0          | 0                       | 0    | 0    | 0   | 0     | 0      | 0        |
    | 4   | 69         | indian  | 0      | 0        | 0     | 0          | 0     | 0            | 0       | 0        | ... | 0       | 0           | 0          | 0                       | 0    | 0    | 0   | 0     | 1      | 0        |
    
  5. ਇਸ ਡੇਟਾ ਬਾਰੇ ਜਾਣਕਾਰੀ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ info() ਕਾਲ ਕਰੋ:

    df.info()
    

    ਤੁਹਾਡਾ ਆਉਟਪੁੱਟ ਇਸ ਤਰ੍ਹਾਂ ਦਿਖਾਈ ਦਿੰਦਾ ਹੈ:

    <class 'pandas.core.frame.DataFrame'>
    RangeIndex: 2448 entries, 0 to 2447
    Columns: 385 entries, Unnamed: 0 to zucchini
    dtypes: int64(384), object(1)
    memory usage: 7.2+ MB
    

ਅਭਿਆਸ - ਖਾਣਿਆਂ ਬਾਰੇ ਸਿੱਖਣਾ

ਹੁਣ ਕੰਮ ਹੋਰ ਦਿਲਚਸਪ ਹੋਣਾ ਸ਼ੁਰੂ ਹੁੰਦਾ ਹੈ। ਆਓ ਖਾਣੇ ਦੇ ਅਨੁਸਾਰ ਡੇਟਾ ਦੇ ਵੰਡਨ ਦੀ ਖੋਜ ਕਰੀਏ।

  1. barh() ਕਾਲ ਕਰਕੇ ਡੇਟਾ ਨੂੰ ਬਾਰਾਂ ਵਜੋਂ ਪਲਾਟ ਕਰੋ:

    df.cuisine.value_counts().plot.barh()
    

    ਖਾਣੇ ਦੇ ਡੇਟਾ ਦਾ ਵੰਡਨ

    ਖਾਣਿਆਂ ਦੀ ਗਿਣਤੀ ਸੀਮਿਤ ਹੈ, ਪਰ ਡੇਟਾ ਦਾ ਵੰਡਨ ਅਸਮਾਨ ਹੈ। ਤੁਸੀਂ ਇਸ ਨੂੰ ਠੀਕ ਕਰ ਸਕਦੇ ਹੋ! ਇਸ ਨੂੰ ਠੀਕ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ, ਹੋਰ ਖੋਜ ਕਰੋ।

  2. ਪਤਾ ਕਰੋ ਕਿ ਹਰ ਖਾਣੇ ਲਈ ਕਿੰਨਾ ਡੇਟਾ ਉਪਲਬਧ ਹੈ ਅਤੇ ਇਸ ਨੂੰ ਪ੍ਰਿੰਟ ਕਰੋ:

    thai_df = df[(df.cuisine == "thai")]
    japanese_df = df[(df.cuisine == "japanese")]
    chinese_df = df[(df.cuisine == "chinese")]
    indian_df = df[(df.cuisine == "indian")]
    korean_df = df[(df.cuisine == "korean")]
    
    print(f'thai df: {thai_df.shape}')
    print(f'japanese df: {japanese_df.shape}')
    print(f'chinese df: {chinese_df.shape}')
    print(f'indian df: {indian_df.shape}')
    print(f'korean df: {korean_df.shape}')
    

    ਆਉਟਪੁੱਟ ਇਸ ਤਰ੍ਹਾਂ ਦਿਖਾਈ ਦਿੰਦਾ ਹੈ:

    thai df: (289, 385)
    japanese df: (320, 385)
    chinese df: (442, 385)
    indian df: (598, 385)
    korean df: (799, 385)
    

ਸਮੱਗਰੀ ਦੀ ਖੋਜ

ਹੁਣ ਤੁਸੀਂ ਡੇਟਾ ਵਿੱਚ ਹੋਰ ਗਹਿਰਾਈ ਵਿੱਚ ਜਾ ਸਕਦੇ ਹੋ ਅਤੇ ਸਿੱਖ ਸਕਦੇ ਹੋ ਕਿ ਹਰ ਖਾਣੇ ਲਈ ਆਮ ਸਮੱਗਰੀ ਕੀ ਹਨ। ਤੁਸੀਂ ਮੁੜ-ਮੁੜ ਆਉਣ ਵਾਲੇ ਡੇਟਾ ਨੂੰ ਸਾਫ਼ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ ਜੋ ਖਾਣਿਆਂ ਦੇ ਵਿਚਕਾਰ ਗੁੰਝਲ ਪੈਦਾ ਕਰਦਾ ਹੈ, ਤਾਂ ਆਓ ਇਸ ਸਮੱਸਿਆ ਬਾਰੇ ਸਿੱਖੀਏ।

  1. Python ਵਿੱਚ ਇੱਕ ਫੰਕਸ਼ਨ create_ingredient() ਬਣਾਓ ਤਾਂ ਜੋ ਇੱਕ ਸਮੱਗਰੀ ਡੇਟਾਫਰੇਮ ਬਣਾਇਆ ਜਾ ਸਕੇ। ਇਹ ਫੰਕਸ਼ਨ ਇੱਕ ਅਣਸਹਾਇਕ ਕਾਲਮ ਨੂੰ ਹਟਾ ਕੇ ਸ਼ੁਰੂ ਕਰੇਗਾ ਅਤੇ ਗਿਣਤੀ ਦੇ ਅਨੁਸਾਰ ਸਮੱਗਰੀ ਨੂੰ ਸਾਰਟ ਕਰੇਗਾ:

    def create_ingredient_df(df):
        ingredient_df = df.T.drop(['cuisine','Unnamed: 0']).sum(axis=1).to_frame('value')
        ingredient_df = ingredient_df[(ingredient_df.T != 0).any()]
        ingredient_df = ingredient_df.sort_values(by='value', ascending=False,
        inplace=False)
        return ingredient_df
    

    ਹੁਣ ਤੁਸੀਂ ਇਸ ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਹਰ ਖਾਣੇ ਲਈ ਸਭ ਤੋਂ ਪ੍ਰਸਿੱਧ ਦਸ ਸਮੱਗਰੀਆਂ ਦਾ ਅੰਦਾਜ਼ਾ ਲਗਾ ਸਕਦੇ ਹੋ।

  2. create_ingredient() ਕਾਲ ਕਰੋ ਅਤੇ barh() ਕਾਲ ਕਰਕੇ ਇਸ ਨੂੰ ਪਲਾਟ ਕਰੋ:

    thai_ingredient_df = create_ingredient_df(thai_df)
    thai_ingredient_df.head(10).plot.barh()
    

    ਥਾਈ

  3. ਜਪਾਨੀ ਡੇਟਾ ਲਈ ਵੀ ਇਹੀ ਕਰੋ:

    japanese_ingredient_df = create_ingredient_df(japanese_df)
    japanese_ingredient_df.head(10).plot.barh()
    

    ਜਪਾਨੀ

  4. ਹੁਣ ਚੀਨੀ ਸਮੱਗਰੀ ਲਈ:

    chinese_ingredient_df = create_ingredient_df(chinese_df)
    chinese_ingredient_df.head(10).plot.barh()
    

    ਚੀਨੀ

  5. ਭਾਰਤੀ ਸਮੱਗਰੀ ਪਲਾਟ ਕਰੋ:

    indian_ingredient_df = create_ingredient_df(indian_df)
    indian_ingredient_df.head(10).plot.barh()
    

    ਭਾਰਤੀ

  6. ਆਖਰੀ, ਕੋਰੀਆਈ ਸਮੱਗਰੀ ਪਲਾਟ ਕਰੋ:

    korean_ingredient_df = create_ingredient_df(korean_df)
    korean_ingredient_df.head(10).plot.barh()
    

    ਕੋਰੀਆਈ

  7. ਹੁਣ, ਵੱਖ-ਵੱਖ ਖਾਣਿਆਂ ਦੇ ਵਿਚਕਾਰ ਗੁੰਝਲ ਪੈਦਾ ਕਰਨ ਵਾਲੀਆਂ ਸਭ ਤੋਂ ਆਮ ਸਮੱਗਰੀਆਂ ਨੂੰ ਹਟਾਓ, drop() ਕਾਲ ਕਰਕੇ:

    ਹਰ ਕੋਈ ਚਾਵਲ, ਲਸਣ ਅਤੇ ਅਦਰਕ ਨੂੰ ਪਸੰਦ ਕਰਦਾ ਹੈ!

    feature_df= df.drop(['cuisine','Unnamed: 0','rice','garlic','ginger'], axis=1)
    labels_df = df.cuisine #.unique()
    feature_df.head()
    

ਡੇਟਾਸੈਟ ਨੂੰ ਸੰਤੁਲਿਤ ਕਰੋ

ਹੁਣ ਜਦੋਂ ਤੁਸੀਂ ਡੇਟਾ ਨੂੰ ਸਾਫ਼ ਕਰ ਲਿਆ ਹੈ, SMOTE - "Synthetic Minority Over-sampling Technique" - ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇਸ ਨੂੰ ਸੰਤੁਲਿਤ ਕਰੋ।

  1. fit_resample() ਕਾਲ ਕਰੋ, ਇਹ ਰਣਨੀਤੀ ਇੰਟਰਪੋਲੇਸ਼ਨ ਦੁਆਰਾ ਨਵੇਂ ਨਮੂਨੇ ਬਣਾਉਂਦੀ ਹੈ।

    oversample = SMOTE()
    transformed_feature_df, transformed_label_df = oversample.fit_resample(feature_df, labels_df)
    

    ਡੇਟਾ ਨੂੰ ਸੰਤੁਲਿਤ ਕਰਕੇ, ਤੁਸੀਂ ਇਸ ਨੂੰ ਕਲਾਸੀਫਾਈ ਕਰਨ ਸਮੇਂ ਵਧੀਆ ਨਤੀਜੇ ਪ੍ਰਾਪਤ ਕਰੋਗੇ। ਇੱਕ ਬਾਈਨਰੀ ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਬਾਰੇ ਸੋਚੋ। ਜੇ ਤੁਹਾਡੇ ਡੇਟਾ ਦਾ ਜ਼ਿਆਦਾਤਰ ਹਿੱਸਾ ਇੱਕ ਕਲਾਸ ਹੈ, ਤਾਂ ਇੱਕ ML ਮਾਡਲ ਉਸ ਕਲਾਸ ਦੀ ਪੇਸ਼ਗੋਈ ਵਧੇਰੇ ਵਾਰ ਕਰੇਗਾ, ਸਿਰਫ਼ ਇਸ ਲਈ ਕਿ ਇਸ ਲਈ ਹੋਰ ਡੇਟਾ ਉਪਲਬਧ ਹੈ। ਡੇਟਾ ਨੂੰ ਸੰਤੁਲਿਤ ਕਰਨਾ ਕਿਸੇ ਵੀ ਤਰੱਕੀਸ਼ੀਲ ਡੇਟਾ ਨੂੰ ਲੈਂਦਾ ਹੈ ਅਤੇ ਇਸ ਅਸਮਾਨਤਾ ਨੂੰ ਹਟਾਉਣ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ।

  2. ਹੁਣ ਤੁਸੀਂ ਸਮੱਗਰੀ ਪ੍ਰਤੀ ਲੇਬਲਾਂ ਦੀ ਗਿਣਤੀ ਦੀ ਜਾਂਚ ਕਰ ਸਕਦੇ ਹੋ:

    print(f'new label count: {transformed_label_df.value_counts()}')
    print(f'old label count: {df.cuisine.value_counts()}')
    

    ਤੁਹਾਡਾ ਆਉਟਪੁੱਟ ਇਸ ਤਰ੍ਹਾਂ ਦਿਖਾਈ ਦਿੰਦਾ ਹੈ:

    new label count: korean      799
    chinese     799
    indian      799
    japanese    799
    thai        799
    Name: cuisine, dtype: int64
    old label count: korean      799
    indian      598
    chinese     442
    japanese    320
    thai        289
    Name: cuisine, dtype: int64
    

    ਡੇਟਾ ਸੁੰਦਰ, ਸਾਫ਼, ਸੰਤੁਲਿਤ ਅਤੇ ਬਹੁਤ ਹੀ ਸੁਆਦਿਸ਼ਟ ਹੈ!

  3. ਆਖਰੀ ਕਦਮ ਇਹ ਹੈ ਕਿ ਤੁਹਾਡੇ ਸੰਤੁਲਿਤ ਡੇਟਾ, ਲੇਬਲਾਂ ਅਤੇ ਫੀਚਰਾਂ ਸਮੇਤ, ਨੂੰ ਇੱਕ ਨਵੇਂ ਡੇਟਾਫਰੇਮ ਵਿੱਚ ਸੇਵ ਕਰੋ ਜੋ ਇੱਕ ਫਾਈਲ ਵਿੱਚ ਐਕਸਪੋਰਟ ਕੀਤਾ ਜਾ ਸਕੇ:

    transformed_df = pd.concat([transformed_label_df,transformed_feature_df],axis=1, join='outer')
    
  4. ਤੁਸੀਂ transformed_df.head() ਅਤੇ transformed_df.info() ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਡੇਟਾ ਨੂੰ ਇੱਕ ਵਾਰ ਹੋਰ ਦੇਖ ਸਕਦੇ ਹੋ। ਭਵਿੱਖ ਦੇ ਪਾਠਾਂ ਵਿੱਚ ਵਰਤੋਂ ਲਈ ਇਸ ਡੇ


ਅਸਵੀਕਾਰਨਾ:
ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ Co-op Translator ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀਤਾ ਲਈ ਯਤਨਸ਼ੀਲ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਚਨਾਵਾਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਇਸਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ।