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/2-Regression/3-Linear/README.md

37 KiB

ਸਕਾਈਟ-ਲਰਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲ ਬਣਾਓ: ਰਿਗ੍ਰੈਸ਼ਨ ਦੇ ਚਾਰ ਤਰੀਕੇ

ਲਿਨੀਅਰ ਵਿਰੁੱਧ ਪੋਲੀਨੋਮਿਅਲ ਰਿਗ੍ਰੈਸ਼ਨ ਇਨਫੋਗ੍ਰਾਫਿਕ

ਇਨਫੋਗ੍ਰਾਫਿਕ ਦਸਾਨੀ ਮਾਡਿਪਾਲੀ ਦੁਆਰਾ

ਪ੍ਰੀ-ਲੈਕਚਰ ਕਵਿਜ਼

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

ਤਾਰਫ਼

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

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

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

ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਲਈ ਸ਼ੁਰੂਆਤੀ - ਲਿਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਨੂੰ ਸਮਝਣਾ

🎥 ਉਪਰੋਕਤ ਚਿੱਤਰ 'ਤੇ ਕਲਿਕ ਕਰੋ ਲਿਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਦਾ ਛੋਟਾ ਵੀਡੀਓ ਝਲਕ ਦੇਖਣ ਲਈ।

ਇਸ ਪਾਠਕ੍ਰਮ ਵਿੱਚ, ਅਸੀਂ ਗਣਿਤ ਦੇ ਘੱਟ ਗਿਆਨ ਨੂੰ ਧਿਆਨ ਵਿੱਚ ਰੱਖਦੇ ਹਾਂ ਅਤੇ ਵਿਦਿਆਰਥੀਆਂ ਲਈ ਇਸਨੂੰ ਸਹਿਜ ਬਣਾਉਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਹਾਂ ਜੋ ਹੋਰ ਖੇਤਰਾਂ ਤੋਂ ਆ ਰਹੇ ਹਨ। ਇਸ ਲਈ ਨੋਟਸ, 🧮 ਕਾਲਆਉਟਸ, ਡਾਇਗ੍ਰਾਮ ਅਤੇ ਹੋਰ ਸਿੱਖਣ ਦੇ ਸਾਧਨਾਂ 'ਤੇ ਧਿਆਨ ਦਿਓ ਜੋ ਸਮਝਣ ਵਿੱਚ ਮਦਦ ਕਰਦੇ ਹਨ।

ਪੂਰਵ ਸ਼ਰਤ

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

ਤਿਆਰੀ

ਯਾਦ ਦਿਵਾਉਣ ਲਈ, ਤੁਸੀਂ ਇਹ ਡਾਟਾ ਲੋਡ ਕਰ ਰਹੇ ਹੋ ਤਾਂ ਜੋ ਇਸ ਤੋਂ ਸਵਾਲ ਪੁੱਛੇ ਜਾ ਸਕਣ।

  • ਕਦੂ ਖਰੀਦਣ ਦਾ ਸਭ ਤੋਂ ਵਧੀਆ ਸਮਾਂ ਕਦੋਂ ਹੈ?
  • ਮਿਨੀਏਚਰ ਕਦੂ ਦੇ ਕੇਸ ਦੀ ਕੀਮਤ ਕੀ ਹੋ ਸਕਦੀ ਹੈ?
  • ਕੀ ਮੈਂ ਇਹਨਾਂ ਨੂੰ ਅੱਧੇ-ਬੁਸ਼ਲ ਬਾਸਕਟਾਂ ਵਿੱਚ ਖਰੀਦਣਾ ਚਾਹੀਦਾ ਹੈ ਜਾਂ 1 1/9 ਬੁਸ਼ਲ ਬਾਕਸ ਦੁਆਰਾ?

ਆਓ ਇਸ ਡਾਟਾ ਵਿੱਚ ਹੋਰ ਖੋਜ ਕਰੀਏ।

ਪਿਛਲੇ ਪਾਠ ਵਿੱਚ, ਤੁਸੀਂ ਇੱਕ ਪੈਂਡਾਸ ਡਾਟਾ ਫਰੇਮ ਬਣਾਇਆ ਅਤੇ ਇਸਨੂੰ ਮੂਲ ਡਾਟਾਸੈੱਟ ਦੇ ਹਿੱਸੇ ਨਾਲ ਭਰਿਆ, ਕੀਮਤਾਂ ਨੂੰ ਬੁਸ਼ਲ ਦੁਆਰਾ ਮਿਆਰੀਕ੍ਰਿਤ ਕੀਤਾ। ਇਸਨੂੰ ਕਰਨ ਦੁਆਰਾ, ਹਾਲਾਂਕਿ, ਤੁਸੀਂ ਸਿਰਫ 400 ਡਾਟਾਪੌਇੰਟਸ ਇਕੱਠੇ ਕਰ ਸਕੇ ਅਤੇ ਸਿਰਫ ਪਤਝੜ ਦੇ ਮਹੀਨਿਆਂ ਲਈ।

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

ਲਿਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਲਾਈਨ

ਜਿਵੇਂ ਤੁਸੀਂ ਪਾਠ 1 ਵਿੱਚ ਸਿੱਖਿਆ, ਲਿਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਅਭਿਆਸ ਦਾ ਉਦੇਸ਼ ਇੱਕ ਲਾਈਨ ਪਲੌਟ ਕਰਨ ਦੇ ਯੋਗ ਹੋਣਾ ਹੈ:

  • ਵੈਰੀਏਬਲ ਸੰਬੰਧ ਦਿਖਾਉਣਾ। ਵੈਰੀਏਬਲਾਂ ਦੇ ਵਿਚਕਾਰ ਸੰਬੰਧ ਦਿਖਾਉਣਾ
  • ਭਵਿੱਖਵਾਣੀ ਕਰਨਾ। ਨਵਾਂ ਡਾਟਾਪੌਇੰਟ ਕਿੱਥੇ ਲਾਈਨ ਦੇ ਸੰਬੰਧ ਵਿੱਚ ਆਵੇਗਾ ਇਸ ਦੀ ਸਹੀ ਭਵਿੱਖਵਾਣੀ ਕਰਨਾ

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

ਅਸੀਂ ਇਹ ਇਸ ਲਈ ਕਰਦੇ ਹਾਂ ਕਿਉਂਕਿ ਅਸੀਂ ਇੱਕ ਲਾਈਨ ਮਾਡਲ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹਾਂ ਜਿਸਦਾ ਸਾਰੇ ਡਾਟਾਪੌਇੰਟਸ ਤੋਂ ਕੁੱਲ ਦੂਰੀ ਘੱਟ ਹੋਵੇ। ਅਸੀਂ ਸ਼ਰਤਾਂ ਨੂੰ ਜੋੜਨ ਤੋਂ ਪਹਿਲਾਂ ਸਕਵੇਅਰ ਕਰਦੇ ਹਾਂ ਕਿਉਂਕਿ ਅਸੀਂ ਇਸਦੇ ਮਾਪੇ 'ਤੇ ਧਿਆਨ ਦੇ ਰਹੇ ਹਾਂ ਨਾ ਕਿ ਇਸਦੇ ਦਿਸ਼ਾ 'ਤੇ।

🧮 ਮੈਨੂੰ ਗਣਿਤ ਦਿਖਾਓ

ਇਹ ਲਾਈਨ, ਜਿਸਨੂੰ ਲਾਈਨ ਆਫ ਬੈਸਟ ਫਿਟ ਕਿਹਾ ਜਾਂਦਾ ਹੈ, ਇਕ ਸਮੀਕਰਨ ਦੁਆਰਾ ਪ੍ਰਗਟ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ:

Y = a + bX

X 'ਵਿਆਖਿਆਤਮਕ ਵੈਰੀਏਬਲ' ਹੈ। Y 'ਨਿਰਭਰ ਵੈਰੀਏਬਲ' ਹੈ। ਲਾਈਨ ਦਾ ਢਲਾਨ b ਹੈ ਅਤੇ a y-ਇੰਟਰਸੈਪਟ ਹੈ, ਜੋ X = 0 ਹੋਣ 'ਤੇ Y ਦੀ ਕੀਮਤ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ।

ਢਲਾਨ ਦੀ ਗਣਨਾ ਕਰੋ

ਪਹਿਲਾਂ, ਢਲਾਨ b ਦੀ ਗਣਨਾ ਕਰੋ। ਇਨਫੋਗ੍ਰਾਫਿਕ ਜੈਨ ਲੂਪਰ ਦੁਆਰਾ

ਦੂਜੇ ਸ਼ਬਦਾਂ ਵਿੱਚ, ਅਤੇ ਕਦੂ ਡਾਟਾ ਦੇ ਮੂਲ ਸਵਾਲ ਨੂੰ ਸੰਦਰਭਿਤ ਕਰਦੇ ਹੋਏ: "ਮਹੀਨੇ ਦੁਆਰਾ ਪ੍ਰਤੀ ਬੁਸ਼ਲ ਕਦੂ ਦੀ ਕੀਮਤ ਦੀ ਭਵਿੱਖਵਾਣੀ ਕਰੋ", X ਕੀਮਤ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ ਅਤੇ Y ਵਿਕਰੀ ਦੇ ਮਹੀਨੇ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ।

ਸਮੀਕਰਨ ਪੂਰਾ ਕਰੋ

Y ਦੀ ਕੀਮਤ ਦੀ ਗਣਨਾ ਕਰੋ। ਜੇ ਤੁਸੀਂ ਲਗਭਗ $4 ਦੇ ਰਹੇ ਹੋ, ਤਾਂ ਇਹ ਅਪ੍ਰੈਲ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ! ਇਨਫੋਗ੍ਰਾਫਿਕ ਜੈਨ ਲੂਪਰ ਦੁਆਰਾ

ਲਾਈਨ ਦੀ ਗਣਨਾ ਕਰਨ ਵਾਲਾ ਗਣਿਤ ਲਾਈਨ ਦੇ ਢਲਾਨ ਨੂੰ ਦਰਸਾਉਣਾ ਚਾਹੀਦਾ ਹੈ, ਜੋ ਇੰਟਰਸੈਪਟ 'ਤੇ ਵੀ ਨਿਰਭਰ ਹੈ, ਜਾਂ ਜਿੱਥੇ X = 0 ਹੋਣ 'ਤੇ Y ਸਥਿਤ ਹੈ।

ਤੁਸੀਂ Math is Fun ਵੈਬਸਾਈਟ 'ਤੇ ਇਨ੍ਹਾਂ ਮੁੱਲਾਂ ਦੀ ਗਣਨਾ ਕਰਨ ਦੀ ਵਿਧੀ ਦਾ ਅਵਲੋਕਨ ਕਰ ਸਕਦੇ ਹੋ। ਇਹ ਲੀਸਟ-ਸਕਵੇਅਰਜ਼ ਕੈਲਕੂਲੇਟਰ 'ਤੇ ਜਾਓ ਅਤੇ ਦੇਖੋ ਕਿ ਨੰਬਰਾਂ ਦੇ ਮੁੱਲ ਲਾਈਨ ਨੂੰ ਕਿਵੇਂ ਪ੍ਰਭਾਵਿਤ ਕਰਦੇ ਹਨ।

ਸੰਬੰਧਤਾ

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

ਇੱਕ ਚੰਗਾ ਲਿਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲ ਉਹ ਹੋਵੇਗਾ ਜਿਸਦਾ ਲੀਸਟ-ਸਕਵੇਅਰਜ਼ ਰਿਗ੍ਰੈਸ਼ਨ ਵਿਧੀ ਨਾਲ ਰਿਗ੍ਰੈਸ਼ਨ ਲਾਈਨ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਉੱਚ (1 ਦੇ ਨੇੜੇ 0 ਦੇ ਬਦਲੇ) ਸੰਬੰਧਤਾ ਗੁਣਾਂਕ ਹੋਵੇ।

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

ਕੋਡ ਵਿੱਚ ਹੇਠਾਂ, ਅਸੀਂ ਮੰਨਦੇ ਹਾਂ ਕਿ ਅਸੀਂ ਡਾਟਾ ਸਾਫ਼ ਕਰ ਲਿਆ ਹੈ, ਅਤੇ new_pumpkins ਨਾਮਕ ਇੱਕ ਡਾਟਾ ਫਰੇਮ ਪ੍ਰਾਪਤ ਕੀਤਾ ਹੈ, ਜੋ ਹੇਠਾਂ ਦਿੱਤੇ ਜਿਵੇਂ ਹੈ:

ID Month DayOfYear Variety City Package Low Price High Price Price
70 9 267 PIE TYPE BALTIMORE 1 1/9 bushel cartons 15.0 15.0 13.636364
71 9 267 PIE TYPE BALTIMORE 1 1/9 bushel cartons 18.0 18.0 16.363636
72 10 274 PIE TYPE BALTIMORE 1 1/9 bushel cartons 18.0 18.0 16.363636
73 10 274 PIE TYPE BALTIMORE 1 1/9 bushel cartons 17.0 17.0 15.454545
74 10 281 PIE TYPE BALTIMORE 1 1/9 bushel cartons 15.0 15.0 13.636364

ਡਾਟਾ ਸਾਫ਼ ਕਰਨ ਦਾ ਕੋਡ notebook.ipynb ਵਿੱਚ ਉਪਲਬਧ ਹੈ। ਅਸੀਂ ਪਿਛਲੇ ਪਾਠ ਵਿੱਚ ਕੀਤੇ ਸਾਰੇ ਸਾਫ਼ ਕਰਨ ਦੇ ਕਦਮ ਕੀਤੇ ਹਨ, ਅਤੇ ਹੇਠਾਂ ਦਿੱਤੇ ਹਵਾਲੇ ਦੀ ਵਰਤੋਂ ਕਰਕੇ DayOfYear ਕਾਲਮ ਦੀ ਗਣਨਾ ਕੀਤੀ ਹੈ:

day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days)

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

ਸੰਬੰਧਤਾ ਦੀ ਖੋਜ

ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਲਈ ਸ਼ੁਰੂਆਤੀ - ਸੰਬੰਧਤਾ ਦੀ ਖੋਜ: ਲਿਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਦੀ ਕੁੰਜੀ

🎥 ਉਪਰੋਕਤ ਚਿੱਤਰ 'ਤੇ ਕਲਿਕ ਕਰੋ ਸੰਬੰਧਤਾ ਦਾ ਛੋਟਾ ਵੀਡੀਓ ਝਲਕ ਦੇਖਣ ਲਈ।

ਪਿਛਲੇ ਪਾਠ ਤੋਂ ਤੁਸੀਂ ਸ਼ਾਇਦ ਦੇਖਿਆ ਹੈ ਕਿ ਵੱਖ-ਵੱਖ ਮਹੀਨਿਆਂ ਲਈ ਔਸਤ ਕੀਮਤ ਇਸ ਤਰ੍ਹਾਂ ਲੱਗਦੀ ਹੈ:

ਮਹੀਨੇ ਦੁਆਰਾ ਔਸਤ ਕੀਮਤ

ਇਹ ਸੁਝਾਅ ਦਿੰਦਾ ਹੈ ਕਿ ਕੁਝ ਸੰਬੰਧਤਾ ਹੋ ਸਕਦੀ ਹੈ, ਅਤੇ ਅਸੀਂ Month ਅਤੇ Price ਦੇ ਵਿਚਕਾਰ ਜਾਂ DayOfYear ਅਤੇ Price ਦੇ ਵਿਚਕਾਰ ਸੰਬੰਧਤਾ ਦੀ ਭਵਿੱਖਵਾਣੀ ਕਰਨ ਲਈ ਲਿਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲ ਟ੍ਰੇਨ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰ ਸਕਦੇ ਹਾਂ। ਹੇਠਾਂ ਦਿੱਤਾ ਸਕੈਟਰਪਲੌਟ ਦਿਖਾਉਂਦਾ ਹੈ ਕਿ ਦੂਜਾ ਸੰਬੰਧ ਕਿਵੇਂ ਲੱਗਦਾ ਹੈ:

Price vs. Day of Year ਦਾ ਸਕੈਟਰਪਲੌਟ

ਆਓ corr ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਦੇਖੀਏ ਕਿ ਕੀ ਕੋਈ ਸੰਬੰਧਤਾ ਹੈ:

print(new_pumpkins['Month'].corr(new_pumpkins['Price']))
print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price']))

ਲੱਗਦਾ ਹੈ ਕਿ ਸੰਬੰਧਤਾ ਬਹੁਤ ਘੱਟ ਹੈ, Month ਦੁਆਰਾ -0.15 ਅਤੇ DayOfMonth ਦੁਆਰਾ -0.17, ਪਰ ਹੋਰ ਮਹੱਤਵਪੂਰਨ ਸੰਬੰਧ ਹੋ ਸਕਦਾ ਹੈ। ਲੱਗਦਾ ਹੈ ਕਿ ਵੱਖ-ਵੱਖ ਕਦੂ ਦੀਆਂ ਕਿਸਮਾਂ ਦੇ ਸੰਬੰਧਿਤ ਕੀਮਤਾਂ ਦੇ ਵੱਖ-ਵੱਖ ਕਲਸਟਰ ਹਨ। ਇਸ ਧਾਰਨਾ ਦੀ ਪੁਸ਼ਟੀ ਕਰਨ ਲਈ, ਆਓ ਹਰ ਕਦੂ ਸ਼੍ਰੇਣੀ ਨੂੰ ਵੱਖ-ਵੱਖ ਰੰਗ ਦੀ ਵਰ ਸਾਡੀ ਗਲਤੀ ਲਗਭਗ 2 ਪਾਇੰਟਾਂ 'ਤੇ ਹੈ, ਜੋ ਕਿ ~17% ਹੈ। ਇਹ ਬਹੁਤ ਵਧੀਆ ਨਹੀਂ ਹੈ। ਮਾਡਲ ਦੀ ਗੁਣਵੱਤਾ ਦਾ ਇੱਕ ਹੋਰ ਸੰਕੇਤ coefficient of determination ਹੈ, ਜਿਸਨੂੰ ਇਸ ਤਰ੍ਹਾਂ ਪ੍ਰਾਪਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ:

score = lin_reg.score(X_train,y_train)
print('Model determination: ', score)

ਜੇ ਮੁੱਲ 0 ਹੈ, ਤਾਂ ਇਸਦਾ ਮਤਲਬ ਹੈ ਕਿ ਮਾਡਲ ਇਨਪੁਟ ਡਾਟਾ ਨੂੰ ਧਿਆਨ ਵਿੱਚ ਨਹੀਂ ਲੈਂਦਾ ਅਤੇ ਸਭ ਤੋਂ ਖਰਾਬ ਰੇਖੀਅ ਪੇਸ਼ਕਰਤਾ ਵਜੋਂ ਕੰਮ ਕਰਦਾ ਹੈ, ਜੋ ਸਿਰਫ਼ ਨਤੀਜੇ ਦਾ ਔਸਤ ਮੁੱਲ ਹੈ। ਮੁੱਲ 1 ਦਾ ਮਤਲਬ ਹੈ ਕਿ ਅਸੀਂ ਸਾਰੇ ਉਮੀਦਵਾਰ ਨਤੀਜਿਆਂ ਦੀ ਪੂਰੀ ਤਰ੍ਹਾਂ ਪੇਸ਼ਕਰੀ ਕਰ ਸਕਦੇ ਹਾਂ। ਸਾਡੇ ਕੇਸ ਵਿੱਚ, ਕੋਐਫੀਸ਼ੀਅੰਟ ਲਗਭਗ 0.06 ਹੈ, ਜੋ ਕਿ ਕਾਫ਼ੀ ਘੱਟ ਹੈ।

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

plt.scatter(X_test,y_test)
plt.plot(X_test,pred)
Linear regression

ਪੋਲੀਨੋਮਿਅਲ ਰਿਗ੍ਰੈਸ਼ਨ

ਰੇਖੀਅ ਰਿਗ੍ਰੈਸ਼ਨ ਦੀ ਇੱਕ ਹੋਰ ਕਿਸਮ ਪੋਲੀਨੋਮਿਅਲ ਰਿਗ੍ਰੈਸ਼ਨ ਹੈ। ਜਦੋਂਕਿ ਕਈ ਵਾਰ ਚਰਾਂ ਵਿੱਚ ਰੇਖੀਅ ਸੰਬੰਧ ਹੁੰਦਾ ਹੈ - ਜਿਵੇਂ ਕਿ ਕਦੂ ਦਾ ਵਾਲਿਊਮ ਵਧਣ ਨਾਲ ਕੀਮਤ ਵਧਦੀ ਹੈ - ਕਈ ਵਾਰ ਇਹ ਸੰਬੰਧ ਇੱਕ ਸਿੱਧੇ ਰੇਖਾ ਜਾਂ ਪਲੇਨ ਵਜੋਂ ਪਲਾਟ ਨਹੀਂ ਕੀਤੇ ਜਾ ਸਕਦੇ।

ਇੱਥੇ ਕੁਝ ਹੋਰ ਉਦਾਹਰਨ ਹਨ ਜਿਨ੍ਹਾਂ ਵਿੱਚ ਪੋਲੀਨੋਮਿਅਲ ਰਿਗ੍ਰੈਸ਼ਨ ਦੀ ਲੋੜ ਹੋ ਸਕਦੀ ਹੈ।

ਮਿਤੀ ਅਤੇ ਕੀਮਤ ਦੇ ਸੰਬੰਧ ਨੂੰ ਦੁਬਾਰਾ ਦੇਖੋ। ਕੀ ਇਹ scatterplot ਸਿੱਧੇ ਰੇਖਾ ਨਾਲ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰਨ ਯੋਗ ਲੱਗਦਾ ਹੈ? ਕੀ ਕੀਮਤਾਂ ਵਿੱਚ ਉਤਾਰ-ਚੜ੍ਹਾਅ ਨਹੀਂ ਹੋ ਸਕਦਾ? ਇਸ ਕੇਸ ਵਿੱਚ, ਤੁਸੀਂ ਪੋਲੀਨੋਮਿਅਲ ਰਿਗ੍ਰੈਸ਼ਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰ ਸਕਦੇ ਹੋ।

ਪੋਲੀਨੋਮਿਅਲ ਗਣਿਤੀਅ ਅਭਿਵਿਅਕਤੀਆਂ ਹਨ ਜੋ ਇੱਕ ਜਾਂ ਵੱਧ ਚਰਾਂ ਅਤੇ ਗੁਣਾਂਕਾਂ 'ਤੇ ਆਧਾਰਿਤ ਹੋ ਸਕਦੀਆਂ ਹਨ।

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

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

from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import make_pipeline

pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression())

pipeline.fit(X_train,y_train)

PolynomialFeatures(2) ਵਰਤਣ ਦਾ ਮਤਲਬ ਹੈ ਕਿ ਅਸੀਂ ਇਨਪੁਟ ਡਾਟਾ ਤੋਂ ਸਾਰੇ ਦੂਜੇ-ਡਿਗਰੀ ਪੋਲੀਨੋਮਿਅਲ ਸ਼ਾਮਲ ਕਰਾਂਗੇ। ਸਾਡੇ ਕੇਸ ਵਿੱਚ ਇਹ ਸਿਰਫ DayOfYear2 ਹੋਵੇਗਾ, ਪਰ ਜੇ ਦੋ ਇਨਪੁਟ ਚਰ X ਅਤੇ Y ਹਨ, ਤਾਂ ਇਹ X2, XY ਅਤੇ Y2 ਸ਼ਾਮਲ ਕਰੇਗਾ। ਜੇ ਅਸੀਂ ਚਾਹੀਏ ਤਾਂ ਅਸੀਂ ਉੱਚੇ ਡਿਗਰੀ ਦੇ ਪੋਲੀਨੋਮਿਅਲ ਵੀ ਵਰਤ ਸਕਦੇ ਹਾਂ।

ਪਾਈਪਲਾਈਨ ਨੂੰ ਉਸੇ ਤਰੀਕੇ ਨਾਲ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ ਜਿਵੇਂ ਅਸਲ LinearRegression ਆਬਜੈਕਟ, ਜਿਵੇਂ ਕਿ ਅਸੀਂ ਪਾਈਪਲਾਈਨ ਨੂੰ fit ਕਰ ਸਕਦੇ ਹਾਂ ਅਤੇ ਫਿਰ predict ਵਰਤ ਕੇ ਪੇਸ਼ਕਰੀ ਦੇ ਨਤੀਜੇ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦੇ ਹਾਂ। ਇੱਥੇ ਟੈਸਟ ਡਾਟਾ ਅਤੇ ਅਨੁਮਾਨਿਤ ਵਕਰ ਦਿਖਾਉਣ ਵਾਲਾ ਗ੍ਰਾਫ ਹੈ:

Polynomial regression

ਪੋਲੀਨੋਮਿਅਲ ਰਿਗ੍ਰੈਸ਼ਨ ਵਰਤ ਕੇ, ਅਸੀਂ ਥੋੜ੍ਹਾ ਘੱਟ MSE ਅਤੇ ਉੱਚਾ determination ਪ੍ਰਾਪਤ ਕਰ ਸਕਦੇ ਹਾਂ, ਪਰ ਬਹੁਤ ਵੱਡਾ ਫਰਕ ਨਹੀਂ। ਸਾਨੂੰ ਹੋਰ ਫੀਚਰਾਂ ਨੂੰ ਧਿਆਨ ਵਿੱਚ ਲੈਣਾ ਪਵੇਗਾ!

ਤੁਸੀਂ ਵੇਖ ਸਕਦੇ ਹੋ ਕਿ ਘੱਟਤਮ ਕਦੂ ਦੀਆਂ ਕੀਮਤਾਂ ਹਾਲੋਵੀਨ ਦੇ ਆਸ-ਪਾਸ ਦੇਖੀਆਂ ਜਾਂਦੀਆਂ ਹਨ। ਤੁਸੀਂ ਇਸ ਨੂੰ ਕਿਵੇਂ ਸਮਝਾਉਂਦੇ ਹੋ?

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

ਸ਼੍ਰੇਣੀਵਾਰ ਫੀਚਰ

ਆਦਰਸ਼ ਜਗਤ ਵਿੱਚ, ਅਸੀਂ ਇੱਕੋ ਮਾਡਲ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਵੱਖ-ਵੱਖ ਕਦੂ ਦੀਆਂ ਕਿਸਮਾਂ ਲਈ ਕੀਮਤਾਂ ਦੀ ਪੇਸ਼ਕਰੀ ਕਰਨ ਦੇ ਯੋਗ ਹੋਣਾ ਚਾਹੁੰਦੇ ਹਾਂ। ਹਾਲਾਂਕਿ, Variety ਕਾਲਮ Month ਵਰਗੇ ਕਾਲਮਾਂ ਤੋਂ ਕੁਝ ਵੱਖਰਾ ਹੈ, ਕਿਉਂਕਿ ਇਸ ਵਿੱਚ ਗੈਰ-ਸੰਖਿਆਤਮਕ ਮੁੱਲ ਹਨ। ਇਸ ਤਰ੍ਹਾਂ ਦੇ ਕਾਲਮਾਂ ਨੂੰ ਸ਼੍ਰੇਣੀਵਾਰ ਕਿਹਾ ਜਾਂਦਾ ਹੈ।

ML for beginners - Categorical Feature Predictions with Linear Regression

🎥 ਉੱਪਰ ਦਿੱਤੀ ਤਸਵੀਰ 'ਤੇ ਕਲਿਕ ਕਰੋ ਸ਼੍ਰੇਣੀਵਾਰ ਫੀਚਰ ਵਰਤਣ ਬਾਰੇ ਇੱਕ ਛੋਟੇ ਵੀਡੀਓ ਝਲਕ ਲਈ।

ਇੱਥੇ ਤੁਸੀਂ ਵੇਖ ਸਕਦੇ ਹੋ ਕਿ ਕਿਸਮ ਦੇ ਆਧਾਰ 'ਤੇ ਔਸਤ ਕੀਮਤ ਕਿਵੇਂ ਨਿਰਭਰ ਕਰਦੀ ਹੈ:

Average price by variety

ਕਿਸਮ ਨੂੰ ਧਿਆਨ ਵਿੱਚ ਲੈਣ ਲਈ, ਸਾਨੂੰ ਪਹਿਲਾਂ ਇਸਨੂੰ ਸੰਖਿਆਤਮਕ ਰੂਪ ਵਿੱਚ ਰੂਪਾਂਤਰਿਤ ਕਰਨਾ ਪਵੇਗਾ, ਜਾਂ encode ਕਰਨਾ ਪਵੇਗਾ। ਇਸਨੂੰ ਕਰਨ ਦੇ ਕਈ ਤਰੀਕੇ ਹਨ:

  • ਸਧਾਰਨ numeric encoding ਇੱਕ ਵੱਖਰੀ ਕਿਸਮਾਂ ਦੀ ਸੂਚੀ ਬਣਾਏਗਾ ਅਤੇ ਫਿਰ ਕਿਸਮ ਦੇ ਨਾਮ ਨੂੰ ਉਸ ਸੂਚੀ ਵਿੱਚ ਇੱਕ ਇੰਡੈਕਸ ਨਾਲ ਬਦਲ ਦੇਵੇਗਾ। ਇਹ ਰੇਖੀਅ ਰਿਗ੍ਰੈਸ਼ਨ ਲਈ ਸਭ ਤੋਂ ਵਧੀਆ ਵਿਚਾਰ ਨਹੀਂ ਹੈ, ਕਿਉਂਕਿ ਰੇਖੀਅ ਰਿਗ੍ਰੈਸ਼ਨ ਇੰਡੈਕਸ ਦੇ ਅਸਲ ਸੰਖਿਆਤਮਕ ਮੁੱਲ ਨੂੰ ਲੈਂਦਾ ਹੈ ਅਤੇ ਇਸਨੂੰ ਕੁਝ ਗੁਣਾਂਕ ਨਾਲ ਗੁਣਾ ਕਰਕੇ ਨਤੀਜੇ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰਦਾ ਹੈ। ਸਾਡੇ ਕੇਸ ਵਿੱਚ, ਇੰਡੈਕਸ ਨੰਬਰ ਅਤੇ ਕੀਮਤ ਦੇ ਵਿਚਕਾਰ ਸੰਬੰਧ ਸਪਸ਼ਟ ਤੌਰ 'ਤੇ ਗੈਰ-ਰੇਖੀਅ ਹੈ, ਭਾਵੇਂ ਅਸੀਂ ਇਹ ਯਕੀਨੀ ਬਣਾਈਏ ਕਿ ਇੰਡੈਕਸ ਕਿਸੇ ਵਿਸ਼ੇਸ਼ ਤਰੀਕੇ ਨਾਲ ਕ੍ਰਮਬੱਧ ਹਨ।
  • One-hot encoding Variety ਕਾਲਮ ਨੂੰ 4 ਵੱਖਰੇ ਕਾਲਮਾਂ ਨਾਲ ਬਦਲ ਦੇਵੇਗਾ, ਹਰ ਕਿਸਮ ਲਈ ਇੱਕ। ਹਰ ਕਾਲਮ ਵਿੱਚ 1 ਹੋਵੇਗਾ ਜੇ ਸੰਬੰਧਿਤ ਪੰਕਤੀ ਦਿੱਤੀ ਕਿਸਮ ਦੀ ਹੈ, ਅਤੇ 0 ਨਹੀਂ। ਇਸਦਾ ਮਤਲਬ ਹੈ ਕਿ ਰੇਖੀਅ ਰਿਗ੍ਰੈਸ਼ਨ ਵਿੱਚ ਚਾਰ ਗੁਣਾਂਕ ਹੋਣਗੇ, ਹਰ ਕਦੂ ਦੀ ਕਿਸਮ ਲਈ ਇੱਕ, ਜੋ ਉਸ ਵਿਸ਼ੇਸ਼ ਕਿਸਮ ਲਈ "ਸ਼ੁਰੂਆਤੀ ਕੀਮਤ" (ਜਾਂ "ਵਾਧੂ ਕੀਮਤ") ਲਈ ਜ਼ਿੰਮੇਵਾਰ ਹੋਵੇਗਾ।

ਹੇਠਾਂ ਦਿੱਤਾ ਕੋਡ ਦਿਖਾਉਂਦਾ ਹੈ ਕਿ ਅਸੀਂ ਕਿਸਮ ਨੂੰ one-hot encode ਕਿਵੇਂ ਕਰ ਸਕਦੇ ਹਾਂ:

pd.get_dummies(new_pumpkins['Variety'])
ID FAIRYTALE MINIATURE MIXED HEIRLOOM VARIETIES PIE TYPE
70 0 0 0 1
71 0 0 0 1
... ... ... ... ...
1738 0 1 0 0
1739 0 1 0 0
1740 0 1 0 0
1741 0 1 0 0
1742 0 1 0 0

One-hot encoded ਕਿਸਮ ਨੂੰ ਇਨਪੁਟ ਵਜੋਂ ਵਰਤ ਕੇ ਰੇਖੀਅ ਰਿਗ੍ਰੈਸ਼ਨ ਨੂੰ ਟ੍ਰੇਨ ਕਰਨ ਲਈ, ਸਾਨੂੰ ਸਿਰਫ X ਅਤੇ y ਡਾਟਾ ਨੂੰ ਸਹੀ ਤਰੀਕੇ ਨਾਲ ਸ਼ੁਰੂ ਕਰਨ ਦੀ ਲੋੜ ਹੈ:

X = pd.get_dummies(new_pumpkins['Variety'])
y = new_pumpkins['Price']

ਬਾਕੀ ਕੋਡ ਉਹੀ ਹੈ ਜੋ ਅਸੀਂ ਉੱਪਰ ਰੇਖੀਅ ਰਿਗ੍ਰੈਸ਼ਨ ਨੂੰ ਟ੍ਰੇਨ ਕਰਨ ਲਈ ਵਰਤਿਆ ਸੀ। ਜੇ ਤੁਸੀਂ ਇਸਨੂੰ ਅਜ਼ਮਾਉਂਦੇ ਹੋ, ਤਾਂ ਤੁਸੀਂ ਵੇਖੋਗੇ ਕਿ ਔਸਤ ਵਰਗ ਗਲਤੀ ਲਗਭਗ ਉਹੀ ਹੈ, ਪਰ ਅਸੀਂ ਕਾਫ਼ੀ ਉੱਚਾ determination ਕੋਐਫੀਸ਼ੀਅੰਟ (~77%) ਪ੍ਰਾਪਤ ਕਰਦੇ ਹਾਂ। ਹੋਰ ਸਹੀ ਪੇਸ਼ਕਰੀ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ, ਅਸੀਂ ਹੋਰ ਸ਼੍ਰੇਣੀਵਾਰ ਫੀਚਰਾਂ ਨੂੰ, ਨਾਲ ਹੀ ਸੰਖਿਆਤਮਕ ਫੀਚਰਾਂ ਜਿਵੇਂ Month ਜਾਂ DayOfYear ਨੂੰ ਧਿਆਨ ਵਿੱਚ ਲੈ ਸਕਦੇ ਹਾਂ। ਇੱਕ ਵੱਡੇ ਫੀਚਰ ਐਰੇ ਨੂੰ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ, ਅਸੀਂ join ਵਰਤ ਸਕਦੇ ਹਾਂ:

X = pd.get_dummies(new_pumpkins['Variety']) \
        .join(new_pumpkins['Month']) \
        .join(pd.get_dummies(new_pumpkins['City'])) \
        .join(pd.get_dummies(new_pumpkins['Package']))
y = new_pumpkins['Price']

ਇੱਥੇ ਅਸੀਂ City ਅਤੇ Package ਕਿਸਮ ਨੂੰ ਵੀ ਧਿਆਨ ਵਿੱਚ ਲੈਂਦੇ ਹਾਂ, ਜੋ ਸਾਨੂੰ MSE 2.84 (10%) ਅਤੇ determination 0.94 ਦਿੰਦਾ ਹੈ!

ਸਭ ਕੁਝ ਇਕੱਠੇ ਕਰਨਾ

ਸਭ ਤੋਂ ਵਧੀਆ ਮਾਡਲ ਬਣਾਉਣ ਲਈ, ਅਸੀਂ ਉਪਰੋਕਤ ਉਦਾਹਰਨ ਤੋਂ ਮਿਲੀ-ਝੁਲੀ (one-hot encoded ਸ਼੍ਰੇਣੀਵਾਰ + ਸੰਖਿਆਤਮਕ) ਡਾਟਾ ਨੂੰ ਪੋਲੀਨੋਮਿਅਲ ਰਿਗ੍ਰੈਸ਼ਨ ਦੇ ਨਾਲ ਵਰਤ ਸਕਦੇ ਹਾਂ। ਤੁਹਾਡੇ ਸੁਵਿਧਾ ਲਈ ਪੂਰਾ ਕੋਡ ਇੱਥੇ ਹੈ:

# set up training data
X = pd.get_dummies(new_pumpkins['Variety']) \
        .join(new_pumpkins['Month']) \
        .join(pd.get_dummies(new_pumpkins['City'])) \
        .join(pd.get_dummies(new_pumpkins['Package']))
y = new_pumpkins['Price']

# make train-test split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)

# setup and train the pipeline
pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression())
pipeline.fit(X_train,y_train)

# predict results for test data
pred = pipeline.predict(X_test)

# calculate MSE and determination
mse = np.sqrt(mean_squared_error(y_test,pred))
print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)')

score = pipeline.score(X_train,y_train)
print('Model determination: ', score)

ਇਹ ਸਾਨੂੰ ਲਗਭਗ 97% ਦਾ ਸਭ ਤੋਂ ਵਧੀਆ determination ਕੋਐਫੀਸ਼ੀਅੰਟ ਅਤੇ MSE=2.23 (~8% ਪੇਸ਼ਕਰੀ ਗਲਤੀ) ਦੇਵੇਗਾ।

ਮਾਡਲ MSE Determination
DayOfYear Linear 2.77 (17.2%) 0.07
DayOfYear Polynomial 2.73 (17.0%) 0.08
Variety Linear 5.24 (19.7%) 0.77
All features Linear 2.84 (10.5%) 0.94
All features Polynomial 2.23 (8.25%) 0.97

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


🚀ਚੁਣੌਤੀ

ਇਸ ਨੋਟਬੁੱਕ ਵਿੱਚ ਕਈ ਵੱਖਰੇ ਚਰਾਂ ਦੀ ਜਾਂਚ ਕਰੋ ਤਾਂ ਜੋ ਵੇਖਿਆ ਜਾ ਸਕੇ ਕਿ ਸੰਬੰਧ ਮਾਡਲ ਦੀ ਸਹੀਤਾ ਨਾਲ ਕਿਵੇਂ ਸਬੰਧਿਤ ਹੈ।

ਪੋਸਟ-ਪਾਠ ਕਵਿਜ਼

ਸਮੀਖਿਆ ਅਤੇ ਸਵੈ-ਅਧਿਐਨ

ਇਸ ਪਾਠ ਵਿੱਚ ਅਸੀਂ ਰੇਖੀਅ ਰਿਗ੍ਰੈਸ਼ਨ ਬਾਰੇ ਸਿੱਖਿਆ। ਰਿਗ੍ਰੈਸ਼ਨ ਦੇ ਹੋਰ ਮਹੱਤਵਪੂਰਨ ਪ੍ਰਕਾਰ ਹਨ। Stepwise, Ridge, Lasso ਅਤੇ Elasticnet ਤਕਨੀਕਾਂ ਬਾਰੇ ਪੜ੍ਹੋ। ਹੋਰ ਸਿੱਖਣ ਲਈ ਇੱਕ ਵਧੀਆ ਕੋਰਸ Stanford Statistical Learning course ਹੈ।

ਅਸਾਈਨਮੈਂਟ

ਮਾਡਲ ਬਣਾਓ


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