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
leestott 343c66d101
🌐 Update translations via Co-op Translator
1 year ago
..
solution 🌐 Update translations via Co-op Translator 1 year ago
README.md 🌐 Update translations via Co-op Translator 1 year ago
assignment.md 🌐 Update translations via Co-op Translator 1 year ago
notebook.ipynb 🌐 Update translations via Co-op Translator 1 year ago

README.md

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

ਲਿਨੀਅਰ ਅਤੇ ਪੋਲੀਨੋਮਿਅਲ ਰਿਗ੍ਰੈਸ਼ਨ ਇਨਫੋਗ੍ਰਾਫਿਕ

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

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

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

ਤਾਰਫ਼

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

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

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

ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਲਈ ਬੇਸਿਕ ਲਿਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਦੀ ਸਮਝ

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

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

ਪੂਰਵ-ਆਵਸ਼ਕਤਾ

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

ਤਿਆਰੀ

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

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

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

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

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

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

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

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

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

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

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

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

Y = a + bX

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

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

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

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

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

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

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

ਤੁਸੀਂ 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 ਦੇ ਵਿਚਕਾਰ ਸੰਬੰਧਤਾ ਦੀ ਭਵਿੱਖਵਾਣੀ ਕਰਨ ਲਈ ਲਿਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲ ਟ੍ਰੇਨ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰ ਸਕਦੇ ਹਾਂ। ਹੇਠਾਂ ਦਿੱਤਾ ਸਕੈਟਰਪਲਾਟ ਦਿਖਾਉਂਦਾ ਹੈ ਕਿ ਦੂਜੇ ਸੰਬੰਧ ਦਾ ਰਿਸ਼ਤਾ ਕਿਵੇਂ ਹੈ:

ਸਕੈਟਰਪਲਾਟ: ਕੀਮਤ ਵਸ. ਸਾਲ ਦਾ ਦਿਨ

ਆਓ 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 ਦਾ ਮਤਲਬ ਹੈ ਕਿ ਅਸੀਂ ਸਾਰੇ ਉਮੀਦਵਾਰ ਨਤੀਜਿਆਂ ਦੀ ਪੂਰੀ ਤਰ੍ਹਾਂ ਪੇਸ਼ਕਰੀ ਕਰ ਸਕਦੇ ਹਾਂ। ਸਾਡੇ ਕੇਸ ਵਿੱਚ, coefficient ਲਗਭਗ 0.06 ਹੈ, ਜੋ ਕਿ ਕਾਫ਼ੀ ਘੱਟ ਹੈ।

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

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

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

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

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

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

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

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

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

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 ਸ਼ਾਮਲ ਕਰੇਗਾ। ਜੇਕਰ ਅਸੀਂ ਚਾਹੀਏ ਤਾਂ ਉੱਚ ਡਿਗਰੀ ਦੇ ਪੋਲੀਨੋਮਿਅਲ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹਾਂ।

Pipelines ਨੂੰ ਮੂਲ LinearRegression ਵਸਤੂ ਵਾਂਗ ਹੀ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ, ਜਿਵੇਂ ਕਿ ਅਸੀਂ pipeline ਨੂੰ fit ਕਰ ਸਕਦੇ ਹਾਂ ਅਤੇ ਫਿਰ predict ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਪੇਸ਼ਕਰੀ ਦੇ ਨਤੀਜੇ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦੇ ਹਾਂ। ਹੇਠਾਂ ਦਿੱਤੇ ਗ੍ਰਾਫ ਵਿੱਚ ਟੈਸਟ ਡਾਟਾ ਅਤੇ approximation curve ਦਿਖਾਈ ਗਈ ਹੈ:

Polynomial regression

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

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

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

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

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

ML for beginners - Categorical Feature Predictions with Linear Regression

🎥 ਉੱਪਰ ਦਿੱਤੀ ਤਸਵੀਰ 'ਤੇ ਕਲਿੱਕ ਕਰੋ categorical features ਦੀ ਵਰਤੋਂ ਦਾ ਇੱਕ ਛੋਟਾ ਵੀਡੀਓ ਝਲਕ ਦੇਖਣ ਲਈ।

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

Average price by variety

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

  • ਸਧਾਰਨ numeric encoding ਇੱਕ ਵੱਖ-ਵੱਖ ਕਿਸਮਾਂ ਦੀ ਸੂਚੀ ਬਣਾਏਗਾ ਅਤੇ ਫਿਰ ਕਿਸਮ ਦੇ ਨਾਮ ਨੂੰ ਉਸ ਸੂਚੀ ਵਿੱਚ ਇੱਕ index ਨਾਲ ਬਦਲ ਦੇਵੇਗਾ। ਇਹ ਰੇਖੀਅਤ ਰਿਗ੍ਰੈਸ਼ਨ ਲਈ ਸਭ ਤੋਂ ਵਧੀਆ ਵਿਚਾਰ ਨਹੀਂ ਹੈ, ਕਿਉਂਕਿ ਰੇਖੀਅਤ ਰਿਗ੍ਰੈਸ਼ਨ index ਦੇ ਅਸਲ ਸੰਖਿਆਤਮਕ ਮੁੱਲ ਨੂੰ ਲੈਂਦਾ ਹੈ ਅਤੇ ਇਸਨੂੰ ਕੁਝ ਗੁਣਾਂਕ ਨਾਲ ਗੁਣਾ ਕਰਕੇ ਨਤੀਜੇ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰਦਾ ਹੈ। ਸਾਡੇ ਕੇਸ ਵਿੱਚ, index ਨੰਬਰ ਅਤੇ ਕੀਮਤ ਦੇ ਵਿਚਕਾਰ ਸੰਬੰਧ ਸਪਸ਼ਟ ਤੌਰ 'ਤੇ nonlinear ਹੈ, ਭਾਵੇਂ ਅਸੀਂ ਇਹ ਯਕੀਨੀ ਬਣਾਈਏ ਕਿ indices ਨੂੰ ਕਿਸੇ ਵਿਸ਼ੇਸ਼ ਢੰਗ ਨਾਲ ਕ੍ਰਮਬੱਧ ਕੀਤਾ ਗਿਆ ਹੈ।
  • One-hot encoding Variety ਕਾਲਮ ਨੂੰ 4 ਵੱਖ-ਵੱਖ ਕਾਲਮਾਂ ਨਾਲ ਬਦਲ ਦੇਵੇਗਾ, ਹਰ ਕਿਸਮ ਲਈ ਇੱਕ। ਹਰ ਕਾਲਮ ਵਿੱਚ 1 ਹੋਵੇਗਾ ਜੇਕਰ ਸੰਬੰਧਿਤ row ਦਿੱਤੀ ਕਿਸਮ ਦੀ ਹੋਵੇ, ਅਤੇ 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 variety ਨੂੰ ਇਨਪੁਟ ਵਜੋਂ ਵਰਤ ਕੇ ਰੇਖੀਅਤ ਰਿਗ੍ਰੈਸ਼ਨ ਨੂੰ ਟ੍ਰੇਨ ਕਰਨ ਲਈ, ਸਾਨੂੰ ਸਿਰਫ X ਅਤੇ y ਡਾਟਾ ਨੂੰ ਸਹੀ ਤਰੀਕੇ ਨਾਲ ਸ਼ੁਰੂ ਕਰਨ ਦੀ ਲੋੜ ਹੈ:

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

ਬਾਕੀ ਕੋਡ ਉਹੀ ਹੈ ਜੋ ਅਸੀਂ ਉੱਪਰ ਰੇਖੀਅਤ ਰਿਗ੍ਰੈਸ਼ਨ ਨੂੰ ਟ੍ਰੇਨ ਕਰਨ ਲਈ ਵਰਤਿਆ ਸੀ। ਜੇਕਰ ਤੁਸੀਂ ਇਸਨੂੰ ਅਜ਼ਮਾਉਂਦੇ ਹੋ, ਤਾਂ ਤੁਸੀਂ ਵੇਖੋਗੇ ਕਿ mean squared error ਲਗਭਗ ਉਹੀ ਹੈ, ਪਰ ਅਸੀਂ ਕਾਫ਼ੀ ਉੱਚਾ coefficient of 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 coefficient ਅਤੇ MSE=2.23 (~8% ਪੇਸ਼ਕਰੀ ਗਲਤੀ) ਦੇਵੇਗਾ।

Model 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% ਤੱਕ ਸੁਧਾਰਿਆ ਹੈ। ਰਿਗ੍ਰੈਸ਼ਨ 'ਤੇ ਅੰਤਿਮ ਭਾਗ ਵਿੱਚ, ਤੁਸੀਂ ਸ਼੍ਰੇਣੀਆਂ ਨੂੰ ਨਿਰਧਾਰਤ ਕਰਨ ਲਈ Logistic Regression ਬਾਰੇ ਸਿੱਖੋਗੇ।


🚀ਚੁਣੌਤੀ

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

Post-lecture quiz

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

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

ਅਸਾਈਨਮੈਂਟ

ਮਾਡਲ ਬਣਾਓ


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