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 343c66d101
🌐 Update translations via Co-op Translator
11 months ago
..
solution 🌐 Update translations via Co-op Translator 11 months ago
README.md 🌐 Update translations via Co-op Translator 11 months ago
assignment.md 🌐 Update translations via Co-op Translator 11 months ago
notebook.ipynb 🌐 Update translations via Co-op Translator 11 months 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() ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਡੇਟਾ ਨੂੰ ਇੱਕ ਵਾਰ ਹੋਰ ਦੇਖ ਸਕਦੇ ਹੋ। ਭਵਿੱਖ ਦੇ ਪਾਠਾਂ ਵਿੱਚ ਵਰਤੋਂ ਲਈ ਇਸ ਡੇਟਾ ਦੀ ਇੱਕ ਕਾਪੀ ਸੇਵ ਕਰੋ:

    transformed_df.head()
    transformed_df.info()
    transformed_df.to_csv("../data/cleaned_cuisines.csv")
    

    ਇਹ ਤਾਜ਼ਾ CSV ਹੁਣ ਰੂਟ ਡੇਟਾ ਫੋਲਡਰ


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