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

ਇੰਫੋਗ੍ਰਾਫਿਕ ਦੁਆਰਾ ਦਸਾਨੀ ਮਦਿਪੱਲੀ
ਹਾਲ ਤੱਕ ਤੁਸੀਂ ਪੰਪਕਿਨ ਦੀ ਕੀਮਤ ਦੇ ਡਾਟਾ ਸੈੱਟ ਵਿਚੋਂ ਕੁਝ ਨਮੂਨਾ ਡਾਟਾ ਨਾਲ ਰਿਗ੍ਰੈਸ਼ਨ ਕੀਹ ਹੈ ਦਾ ਅਨੁਸੰਦਾਨ ਕੀਤਾ ਹੈ। ਤੁਸੀਂ ਇਹ ਮੈਟਪਲਾਟਲਿਬ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਵੀ ਵਿਜੁਆਲਾਈਜ਼ ਕਰ ਚੁੱਕੇ ਹੋ।
ਹੁਣ ਤੁਸੀਂ ML ਲਈ ਰਿਗ੍ਰੈਸ਼ਨ ਵਿੱਚ ਹੋਰ ਗਹਿਰਾਈ ਨਾਲ ਜਾਣ ਦੇ ਲਈ ਤਿਆਰ ਹੋ। ਜਦੋਂਕਿ ਵਿਜੁਆਲਾਈਜ਼ੇਸ਼ਨ ਤੁਹਾਨੂੰ ਡਾਟਾ ਦੇ ਸਮਝਣ ਵਿੱਚ ਮਦਦ ਕਰਦੀ ਹੈ, ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਦੀ ਅਸਲੀ ਤਾਕਤ ਮਾਡਲਾਂ ਨੂੰ ਟ੍ਰੇਨ ਕਰਨ ਵਿੱਚ ਹੈ। ਮਾਡਲ ਇਤਿਹਾਸਕ ਡਾਟਾ 'ਤੇ ਟ੍ਰੇਨ ਕੀਤੇ ਜਾਂਦੇ ਹਨ ਤਾਂ ਜੋ ਡਾਟਾ ਦੀ dependency ਨੂੰ ਆਪਣੇ ਆਪ ਸਮਝ ਸਕਣ, ਅਤੇ ਇਹ ਤੁਹਾਨੂੰ ਨਵੇਂ ਡਾਟਾ ਲਈ ਨਤੀਜੇ ਭਵਿੱਖਬਾਣੀ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦੇ ਹਨ, ਜਿਸਨੂੰ ਮਾਡਲ ਪਹਿਲਾਂ ਨਹੀਂ ਦੇਖਿਆ ਹੁੰਦਾ।
ਇਸ ਪਾਠ ਵਿੱਚ, ਤੁਸੀਂ ਰਿਗ੍ਰੈਸ਼ਨ ਦੇ ਦੋ ਪ੍ਰਕਾਰਾਂ ਬਾਰੇ ਜ਼ਿਆਦਾ ਜਾਣੋਗੇ: ਮੁਲਭੂਤ ਲਾਈਨਰ ਰਿਗ੍ਰੈਸ਼ਨ ਅਤੇ ਪੋਲਿਨੋਮਿਆਲ ਰਿਗ੍ਰੈਸ਼ਨ, ਨਾਲ ਹੀ ਇਹ ਤਕਨੀਕਾਂ ਦੇ ਮੈਥਮੈਟਿਕਲ ਅਧਾਰ ਨੂੰ ਸਮਝੋਗੇ। ਉਹ ਮਾਡਲ ਪੰਪਕਿਨਾਂ ਦੀਆਂ ਕੀਮਤਾਂ ਨੂੰ ਵੱਖ-ਵੱਖ ਇਨਪੁਟ ਡਾਟਾ ਦੇ ਅਧਾਰ 'ਤੇ ਅਨੁਮਾਨ ਲਗਾਉਣਗੇ।
🎥 ਉਪਰੋਕਤ ਚਿੱਤਰ 'ਤੇ ਕਲਿੱਬ ਕਰੋ ਲਾਈਨਰ ਰਿਗ੍ਰੈਸ਼ਨ ਦਾ ਛੋਟਾ ਵੀਡੀਓ ਵੇਰਵਾ ਦੇਖਣ ਲਈ।
ਇਸ ਸਿਲੇਬਸ ਵਿੱਚ, ਅਸੀਂ ਘੱਟੋ-ਘੱਟ ਗਣਿਤ ਗਿਆਨ ਮੰਨਦੇ ਹਾਂ, ਅਤੇ ਇਹ ਵੱਖ-ਵੱਖ ਖੇਤਰਾਂ ਤੋਂ ਆਏ ਵਿਦਿਆਰਥੀਆਂ ਲਈ ਜਾਣਣਾ ਆਸਾਨ ਬਣਾਉਣਾ ਚਾਹੁੰਦੇ ਹਾਂ, ਇਸ ਲਈ ਨੋਟਾਂ, 🧮 ਕਾਲਆਊਟ, ਡਾਇਗ੍ਰਾਮ ਅਤੇ ਹੋਰ ਸਿੱਖਣ ਵਾਲੇ ਉਪਕਾਰਨਾਂ ਨੂੰ ਧਿਆਨ ਨਾਲ ਵੇਖੋ।
ਤੁਸੀਂ ਹੁਣ ਤੱਕ ਪੰਪਕਿਨ ਡਾਟਾ ਦੀ ਸਰਚਨਾ ਨੂੰ ਸਮਝ ਚੁੱਕੇ ਹੋ ਜੋ ਅਸੀਂ ਇਸ ਪਾਠ ਵਿੱਚ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰ ਰਹੇ ਹਾਂ। ਤੁਹਾਡੇ ਕੋਲ ਇਹ ਇਸ ਪਾਠ ਦੀ notebook.ipynb ਫਾਈਲ ਵਿੱਚ ਪਹਿਲਾਂ ਹੀ ਲੋਡ ਅਤੇ ਸਾਫ ਕੀਤਾ ਹੋਇਆ ਹੈ। ਉਸ ਫਾਈਲ ਵਿੱਚ, ਪੰਪਕਿਨ ਦੀ ਕੀਮਤ ਨੂੰ ਪ੍ਰਤੀ ਬਸ਼ਲ ਵਿਆਪਕ ਕੀਤਾ ਗਿਆ ਹੈ। ਇਹ ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਤੁਸੀਂ ਵਿਜ਼ੂਅਲ ਸਟੂਡੀਓ ਕੋਡ ਚੈਣਲਾਂ ਵਿੱਚ ਇਹ ਨੋਟਬੁੱਕ ਚਲਾ ਸਕਦੇ ਹੋ।
ਸਮਝ ਲਈ, ਤੁਸੀਂ ਇਹ ਡਾਟਾ ਲੋਡ ਕਰ ਰਹੇ ਹੋ ਤਾਂ ਜੋ ਤੁਸੀਂ ਉਸ ਤੋਂ ਸਵਾਲ ਪੁੱਛ ਸਕੋ।
- ਪੰਪਕਿਨ ਖਰੀਦਣ ਲਈ ਸਭ ਤੋਂ ਵਧੀਆ ਸਮਾਂ ਕਦੋਂ ਹੈ?
- ਮਿਨੀਏਚਰ ਪੰਪਕਿਨਾਂ ਦੇ ਇੱਕ ਕੇਸ ਦੀ ਕੀਮਤ ਕੀ ਉਮੀਦ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ?
- ਕੀ ਮੈਂ ਅੱਧਾ-ਬਸ਼ਲ ਟੋਕਰੀਵਾਲੇ ਖਰੀਦਾਂ ਜਾਂ 1 1/9 ਬਸ਼ਲ ਬਾਕਸ ਦੁਆਰਾ? ਆਓ ਇਸ ਡਾਟਾ ਵਿੱਚ ਹੋਰ ਖੋਜ ਕਰੀਏ।
ਪਿਛਲੇ ਪਾਠ ਵਿੱਚ, ਤੁਸੀਂ ਇੱਕ ਪੈਂਡਾਸ ਡਾਟਾ ਫਰੇਮ ਬਣਾਇਆ ਅਤੇ ਅਸਲ ਡਾਟਾ ਸੈੱਟ ਦੇ ਹਿੱਸੇ ਨਾਲ ਭਰਿਆ, ਮੁੱਲ ਦੀ ਸਟੈਂਡਰਡਾਈਜ਼ਿੰਗ ਬਸ਼ਲ ਦੇ ਮੁਤਾਬਕ ਕੀਤੀ। ਪਰ ਇਹ ਕਰਨ ਨਾਲ, ਤੁਸੀਂ ਸਿਰਫ ਲਗਭਗ 400 ਡਾਟਾਪੋਇੰਟ ਅਰਜਾ ਕਰ ਸਕੇ ਅਤੇ ਸਿਰਫ ਪਤਝੜ ਮਹੀਨਿਆਂ ਲਈ।
ਇਸ ਪਾਠ ਦੇ ਨਾਲ ਜੁੜੇ ਨੋਟਬੁੱਕ ਵਿੱਚ ਪਹਿਲਾਂ ਹੀ ਲੋਡ ਕੀਤਾ ਡਾਟਾ ਦੇਖੋ। ਡਾਟਾ ਪਹਿਲਾਂ ਹੀ ਲੋਡ ਹੈ ਅਤੇ ਇੱਕ ਬੁਨਿਆਦੀ scatterplot ਇਹ ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਮਹੀਨੇ ਦਾ ਡਾਟਾ ਕਿਵੇਂ ਹੈ। ਸਾਡੀ ਕੋਸ਼ਿਸ਼ ਹੋ ਸਕਦੀ ਹੈ ਕਿ ਇਸ ਡਾਟਾ ਦੀ ਕੁਦਰਤ ਨੂੰ ਹੋਰ ਸਾਫ ਕਰਕੇ ਭਲਕੇ ਜਾਣਕਾਰੀ ਮਿਲੇ।
ਜਿਵੇਂ ਤੁਸੀਂ ਪਾਠ 1 ਵਿੱਚ ਸਿੱਖਿਆ ਸੀ, ਲਾਈਨਰ ਰਿਗ੍ਰੈਸ਼ਨ ਦਾ ਮੁੱਖ ਉਦੇਸ਼ ਇੱਕ ਅਜਿਹੀ ਲਾਈਨ ਦੁਆਰਾ:
- ਵিৱਰਣਾਤਮਕ ਸੰਬੰਧ ਦਿਖਾਉਣਾ। ਵਿਆਪਕ ਸੰਬੰਧ ਦਰਸਾਉਣਾ
- ਭਵਿੱਖਬਾਣੀ ਕਰਨੀ। ਇਹ ਠੀਕ ਭਵਿੱਖਬਾਣੀ ਕਰਨੀ ਕਿ ਨਵਾਂ ਡਾਟਾਪੋਇੰਟ ਕਿਹੜੇ ਸਥਾਨ ਤੇ ਆਵੇਗਾ।
ਇਹ ਆਮ ਤੌਰ ਤੇ ਲੀਸਟ-ਸਕਵੈਅਰਜ਼ ਰਿਗ੍ਰੈਸ਼ਨ ਦੀ ਪ੍ਰਕਿਰਿਆ ਹੁੰਦੀ ਹੈ। "ਲੀਸਟ-ਸਕਵੈਅਰਜ਼" ਸ਼ਬਦ ਮਾਡਲ ਵਿੱਚ ਕੁੱਲ ਗਲਤੀ ਨੂੰ ਘਟਾਉਣ ਦੀ ਪ੍ਰਕਿਰਿਆ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ। ਹਰ ਡਾਟਾਪੋਇੰਟ ਲਈ ਅਸੀਂ ਲਕੀਰ ਅਤੇ ਅਸਲ ਨੁਕਤੇ ਵਿਚਕਾਰ ਖੜ੍ਹੇ ਦੇ ਉਚਾਈ ਮੂਲ ਨੂੰ ਮਾਪਦੇ ਹਾਂ (ਜਿਸ ਨੂੰ ਰੇਜ਼ਿਡੂਅਲ ਕਹਿੰਦੇ ਹਨ)।
ਅਸੀਂ ਦੁੱਧਰ ਮੂਲਾਂ ਨੂੰ ਦੋ ਮੁੱਖ ਕਾਰਨਾਂ ਕਰਕੇ ਵਰਗ ਕਰਦੇ ਹਾਂ:
-
ਦਿਸ਼ਾ ਤੋਂ ਵੱਧ ਮਹੱਤਵ: ਅਸੀਂ ਚਾਹੁੰਦੇ ਹਾਂ ਕਿ -5 ਵੱਲੀ ਗਲਤੀ +5 ਵਾਂਗੋਂ ਸਮਾਨ ਦਾ ਮੂਲ ਰੱਖੇ। ਵਰਗ ਕਰਨ ਨਾਲ ਸਾਰੇ ਮੁੱਲ ਸਕਾਰਾਤਮਕ ਹੋ ਜਾਂਦੇ ਹਨ।
-
ਆਉਟਲਾਇਅਰਜ਼ ਨੂੰ ਸਜ਼ਾ ਦੇਣਾ: ਵਰਗ ਕਰਨ ਨਾਲ ਵੱਡੀਆਂ ਗਲਤੀਆਂ ਨੂੰ ਵੱਧ ਭਾਰ ਮਿਲਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਲਾਈਨ ਉਹਨਾਂ ਨੁਕਤਿਆਂ ਤੋਂ ਨੇੜੇ ਰਹਿੰਦੀ ਹੈ ਜੋ ਦੂਰ ਹਨ।
ਫਿਰ ਅਸੀਂ ਇਹ ਸਾਰੇ ਵਰਗ ਮੁੱਲ ਜੋੜਦੇ ਹਾਂ। ਸਾਡੀ ਕੋਸ਼ਿਸ਼ ਹੈ ਕਿ ਉਹ ਖਾਸ ਲਾਈਨ ਲੱਭੀਏ ਜਿੱਥੇ ਇਹ ਜੋੜ ਸਭ ਤੋਂ ਘੱਟ ਹੋਵੇ — ਇਸ ਲਈ ਇਸਨੂੰ "ਲੀਸਟ-ਸਕਵੈਅਰਜ਼" ਕਹਿੰਦੇ ਹਨ।
🧮 ਮੈਨੂੰ ਗਣਿਤ ਦਿਖਾਓ
ਇਹ ਲਾਈਨ, ਜਿਸਨੂੰ ਬਿਹਤਰ ਫਿੱਟ ਲਾਈਨ ਕਹਿੰਦੇ ਹਨ, ਇੱਕ ਸਮੀਕਰਨ ਨਾਲ ਦਰਸਾਈ ਜਾਂਦੀ ਹੈ:
Y = a + bX
Xਨੂੰ 'ਵਿਆਖਿਆਤਮਕ ਚਰ' ਕਹਿੰਦੇ ਹਨ।Yਨੂੰ 'ਨਲੀ ਚਰ' ਕਹਿੰਦੇ ਹਨ। ਲਾਈਨ ਦਾ ਢਲਾਨbਹੈ ਅਤੇay-ਇੰਟਰਸੈਪਟ ਹੈ, ਜੋ ਇਹ ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਜਦੋਂX = 0ਹੋਵੇ ਤਾਂYਦੀ ਕੀਮਤ ਕੀ ਹੈ।ਪਹਿਲਾਂ ਢਲਾਨ
bਦੀ ਗਣਨਾ ਕਰੋ। ਇੰਫੋਗ੍ਰਾਫਿਕ ਦੁਆਰਾ ਜੈਨ ਲੂਪਰਦੂਜੇ ਸ਼ਬਦਾਂ ਵਿੱਚ, ਸਾਡੇ ਪੰਪਕਿਨ ਡਾਟਾ ਦੇ ਮੁੱਖ ਸਵਾਲ: "ਮਹੀਨੇ ਦੇ ਅਨੁਸਾਰ ਪ੍ਰਤੀ ਬਸ਼ਲ ਪੰਪਕਿਨ ਦੀ ਕੀਮਤ ਦੀ ਭਵਿੱਖਬਾਣੀ ਕਰੋ", ਵਿੱਚ
Xਕੀਮਤ ਨੂੰ ਦਰਸਾਏਗਾ ਅਤੇYਮਾਹ ਉਦੇਸ਼ ਸਮਝਾਏਗਾ।
Yਦੀ ਕੀਮਤ ਦੀ ਗਣਨਾ ਕਰੋ। ਜੇ ਤੁਸੀਂ ਲੱਗਭਗ $4 ਦੇ ਕਦਰ ਦੇ ਰਹੇ ਹੋ, ਤਾਂ ਇਹ ਜ਼ਰੂਰ ਅਪ੍ਰੈਲ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ! ਇੰਫੋਗ੍ਰਾਫਿਕ ਦੁਆਰਾ ਜੈਨ ਲੂਪਰਸਮੀਕਰਨ ਜੋ ਲਾਈਨ ਦੀ ਗਣਨਾ ਕਰਦਾ ਹੈ ਉਸਨੂੰ ਢਲਾਨ ਨੂੰ ਦਰਸਾਉਣਾ ਚਾਹੀਦਾ ਹੈ ਜੋ ਇਸਸ਼ਨਾਲ ਇੰਟਰਸੈਪਟ ਤੇ ਨਿਰਭਰ ਕਰਦਾ ਹੈ, ਜਾਂ ਜਿੱਥੇ
X = 0ਹੋਵੇ ਤਾਂYਕਿੱਥੇ ਹੈ।ਤੁਸੀਂ ਇਹ ਮੁਲ್ಯਾਂ ਦੀ ਗਣਨਾ ਕਰਨ ਦੇ ਤਰੀਕੇ ਨੂੰ Math is Fun ਵੈੱਬਸਾਈਟ 'ਤੇ ਵੇਖ ਸਕਦੇ ਹੋ। ਇਸ ਨਾਲ ਨਾਲ ਇਸ Least-squares ਕੈਲਕੂਲੇਟਰ ਨੂੰ ਵੀ ਵੇਖੋ ਜੋ ਨੰਬਰਾਂ ਦੀਆਂ ਕਦਰਾ ਲਾਈਨ ਉੱਤੇ ਕਿਵੇਂ ਅਸਰ ਪਾਂਦੀਆਂ ਹਨ।
ਇਕ ਹੋਰ ਸ਼ਬਦ ਜਾਣਣਾ ਹੈ ਜੋ ਹੈ ਸਹ ਸਬੰਧ ਗੁਣਕ ਜੋ ਦਿੱਤੇ ਗਏ X ਅਤੇ Y ਚਰਾਂ ਵਿਚਕਾਰ ਹੁੰਦਾ ਹੈ। scatterplot ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਤੁਸੀਂ ਇਸ ਗੁਣਕ ਨੂੰ ਜਲਦੀ ਵੇਖ ਸਕਦੇ ਹੋ। ਜੇ ਡਾਟਾਪੋਇੰਟ ਇੱਕ ਸੁਸਮਤ ਲਾਈਨ ਵਿੱਚ ਵੰਡੇ ਹੋਏ ਹਨ ਤਾਂ ਉਹ ਉੱਚ ਸਹ ਸਬੰਧ ਦਰਸਾਉਂਦਾ ਹੈ, ਪਰ ਜੇ ਡਾਟਾਪੋਇੰਟ ਹਰ ਜਗ੍ਹਾ ਫੈਲੇ ਹੋਏ ਹਨ ਤਾਂ ਇਹ ਘੱਟ ਸਹ ਸਬੰਧ ਹੈ।
ਇੱਕ ਵਧੀਆ ਲਾਈਨਰ ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲ ਉਹ ਹੋਵੇਗਾ ਜਿਸ ਦਾ ਸਹ ਸਬੰਧ ਗੁਣਕ ਵਧੀਆ (1 ਦੇ ਨੇੜੇ 0 ਨਾਲੋਂ) ਹੋਵੇ ਅਤੇ Least-Squares Regression ਤਰੀਕੇ ਨਾਲ ਲਾਈਨ ਰਿਗ੍ਰੈਸ਼ਨ ਨਾਲ ਬਣਾਇਆ ਗਿਆ ਹੋਵੇ।
✅ ਇਸ ਪਾਠ ਨਾਲ ਜੁੜੇ ਨੋਟਬੁੱਕ ਨੂੰ ਚਲਾਓ ਅਤੇ ਮਹੀਨੇ ਤੋਂ ਕੀਮਤ scatterplot ਵੇਖੋ। ਕੀ ਪੰਪਕਿਨ ਵਿਕਰੀ ਲਈ ਮਹੀਨੇ ਅਤੇ ਕੀਮਤ ਦਾ ਡਾਟਾ ਤੇਰੇ ਵਿਜੁਅਲ ਵਿਵੇਚਨਾ ਮੁਤਾਬਕ ਉੱਚ ਜਾਂ ਘੱਟ ਸਹ ਸਬੰਧ ਦਿਖਾਉਂਦਾ ਹੈ? ਕੀ ਇਹ ਬਦਲਦਾ ਹੈ ਜੇ ਤੁਸੀਂ Month ਦੇ ਬਜਾਏ ਵੱਧ ਸਾਹੀ ਮਾਪ ਵਰਤੋਂ, ਜਿਵੇਂ ਕਿ ਸਾਲ ਦਾ ਦਿਨ (ਜਿਵੇਂ ਕਿ ਸਾਲ ਦੀ ਸ਼ੁਰੂਆਤ ਤੋਂ ਲੰਘੇ ਦਿਨਾਂ ਦੀ ਗਿਣਤੀ)?
ਹੇਠਾਂ ਦਿੱਤੇ ਕੋਡ ਵਿੱਚ ਅਸੀਂ ਮੰਨ ਰਹੇ ਹਾਂ ਕਿ ਸਾਡੇ ਕੋਲ ਸਾਫ ਕੀਤਾ ਹੋਇਆ ਡਾਟਾ ਹੈ ਅਤੇ ਇੱਕ ਡਾਟਾ ਫਰੇਮ ਹੈ ਜਿਸ ਦਾ ਨਾਮ 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)ਹੁਣ ਜਦੋਂ ਕਿ ਤੁਹਾਨੂੰ ਲਾਈਨਰ ਰਿਗ੍ਰੈਸ਼ਨ ਦੇ ਮੈਥਮੈਟਿਕ ਦਾ ਬੂਝ ਹੋ ਗਿਆ ਹੈ, ਆਓ ਇਕ ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲ ਬਣਾਈਏ ਤਾਂ ਜੋ ਵੇਖੀਏ ਕਿ ਅਸੀਂ ਅਨੁਮਾਨ ਲਗਾ ਸਕਦੇ ਹਾਂ ਕਿ ਕਿਹੜਾ ਪੰਪਕਿਨ ਪੈਕੇਜ ਸਭ ਤੋਂ ਚੰਗੀ ਕੀਮਤ ਲਈ ਹੋਵੇਗਾ। ਕੈਸੀਨੂੰ ਛੁੱਟੀ ਵਾਲੀ ਪੁੱਛ ਲਈ ਪੰਪਕਿਨ ਖਰੀਦਣ ਵਾਲਾ ਇਹ ਜਾਣਕਾਰੀ ਚਾਹੀਦੀ ਹੋ ਸਕਦੀ ਹੈ ਤਾਂ ਜੋ ਉਹ ਆਪਣੀ ਖਰੀਦ ਦੀ ਯੋਜਨਾ ਨੂੰ ਵਧੀਆ ਬਣਾ ਸਕੇ।
🎥 ਉਪਰੋਕਤ ਚਿੱਤਰ 'ਤੇ ਕਲਿੱਬ ਕਰੋ correlation ਦਾ ਛੋਟਾ ਵੀਡੀਓ ਵੇਰਵਾ ਵੇਖਣ ਲਈ।
ਪਿਛਲੇ ਪਾਠ ਵਿੱਚ ਤੁਸੀਂ ਸ਼ਾਇਦ ਵੇਖਿਆ ਹੈ ਕਿ ਵੱਖ-ਵੱਖ ਮਹੀਨਿਆਂ ਵਾਸਤੇ ਔਸਤ ਕੀਮਤ ਇਸ ਤਰ੍ਹਾਂ ਦਿੱਸਦੀ ਹੈ:
ਇਸ ਤੋਂ ਇਤਲਾ ਮਿਲਦਾ ਹੈ ਕਿ ਕੁਝ ਸਹ ਸਬੰਧ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ, ਅਤੇ ਅਸੀਂ ਲਾਈਨਰ ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲ ਲਰ ਕੇ Month ਅਤੇ Price, ਜਾਂ DayOfYear ਅਤੇ Price ਦਰਮਿਆਨ ਰਿਸ਼ਤੇ ਦੀ ਭਵਿੱਖਬਾਣੀ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰ ਸਕਦੇ ਹਾਂ। ਇੱਥੇ scatterplot ਹੈ ਜੋ ਦੂਜਾ ਸੰਬੰਧ ਦਰਸਾਉਂਦਾ ਹੈ:
ਆਓ ਦੇਖੀਏ ਕਿ corr ਫੰਕਸ਼ਨ ਨਾਲ ਕੋਈ correlation ਹੈ ਜਾਂ ਨਹੀਂ:
print(new_pumpkins['Month'].corr(new_pumpkins['Price']))
print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price']))ਲੱਗਦਾ ਹੈ correlation ਕਾਫੀ ਛੋਟਾ ਹੈ, -0.15 Month ਨਾਲ ਅਤੇ -0.17 DayOfMonth ਨਾਲ, ਪਰ ਹੋ ਸਕਦਾ ਹੈ ਕੋਈ ਹੋਰ ਮਹੱਤਵਪੂਰਨ ਸੰਬੰਧ ਹੋਵੇ। ਲੱਗਦਾ ਹੈ ਕਿ ਕੀਮਤਾਂ ਦੇ ਵੱਖ-ਵੱਖ ਕੁਲੱਸਟਰ ਵੱਖਰੇ ਪੰਪਕਿਨ ਕਿਸਮਾਂ ਨਾਲ ਜੁੜੇ ਹੋਏ ਹਨ। ਇਸ ਸਿਧਾਂਤ ਦੀ ਪੁਸ਼ਟੀ ਕਰਨ ਲਈ, ਆਓ ਹਰ ਪੰਪਕਿਨ ਸ਼੍ਰੇਣੀ ਨੂੰ ਵੱਖਰੀ ਰੰਗ ਨਾਲ ਪਲਾਟ ਕਰੀਏ। scatter ਪਲਾਟਿੰਗ ਫੰਕਸ਼ਨ ਨੂੰ ax ਪੈਰਾਮੀਟਰ ਦੇ ਕੇ ਸਾਰੇ ਨੁਕਤੇ ਇੱਕੋ ਗ੍ਰਾਫ ‘ਤੇ ਪਲਾਟ ਕੀਤੇ ਜਾ ਸਕਦੇ ਹਨ:
ax=None
colors = ['red','blue','green','yellow']
for i,var in enumerate(new_pumpkins['Variety'].unique()):
df = new_pumpkins[new_pumpkins['Variety']==var]
ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var)ਸਾਡੇ ਖੋਜ ਨਾਲ ਪਤਾ ਲੱਗਦਾ ਹੈ ਕਿ ਕਿਸਮ ਦਾ ਕੁੱਲ ਕੀਮਤ 'ਤੇ ਮਹੱਤਵ ਵੱਧ ਹੈ ਬਜਾਏ ਕਿ ਵਿਕਰੀ ਦੀ ਅਸਲੀ ਤਾਰੀਖ ਦਾ। ਅਸੀਂ ਇਹ ਬਾਰ ਗ੍ਰਾਫ ਨਾਲ ਵੇਖ ਸਕਦੇ ਹਾਂ:
new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar')ਆਓ ਇੱਕ ਪੰਪਕਿਨ ਕਿਸਮ 'pie type' 'ਤੇ ਫੋਕਸ ਕਰੀਏ, ਅਤੇ ਵੇਖੀਏ ਕਿ ਕਿਵੇਂ ਮਿਤੀ ਦਾ ਕੀਮਤ ‘ਤੇ ਅਸਰ ਹੈ:
pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE']
pie_pumpkins.plot.scatter('DayOfYear','Price') ਜੇ ਅਸੀਂ ਹੁਣ Price ਅਤੇ DayOfYear ਵਿਚਕਾਰ correlation corr ਫੰਕਸ਼ਨ ਨਾਲ ਕੈਲਕੁਲੇਟ ਕਰੀਏ ਤਾਂ ਲਗਭਗ -0.27 ਆਵੇਗਾ - ਜੋ ਦੱਸਦਾ ਹੈ ਕਿ ਭਵਿੱਖਬਾਣੀ ਮਾਡਲ ਸਿੱਖਾਉਣਾ ਮਾਨਯੋਗ ਹੈ।
ਲਾਈਨਰ ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲ ਸਿੱਖਾਉਣ ਤੋਂ ਪਹਿਲਾਂ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਣਾ ਜ਼ਰੂਰੀ ਹੈ ਕਿ ਸਾਡਾ ਡਾਟਾ ਸਾਫ ਹੈ। ਲਾਈਨਰ ਰਿਗ੍ਰੈਸ਼ਨ ਖਾਲੀ ਮੁੱਲਾਂ ਨਾਲ ਚੰਗੀ ਤਰ੍ਹਾਂ ਕੰਮ ਨਹੀਂ ਕਰਦਾ, ਇਸ ਲਈ ਸਾਰੇ ਖਾਲੀ ਸੈੱਲ ਹਟਾਉਣਾ ਸਹੀ ਹੈ:
pie_pumpkins.dropna(inplace=True)
pie_pumpkins.info()ਦੂਜਾ ਤਰੀਕਾ ਇਹ ਹੋਵੇਗਾ ਕਿ ਖਾਲੀ ਮੁੱਲਾਂ ਨੂੰ ਉਸੇ ਕਾਲਮ ਦੇ ਔਸਤ ਮੁੱਲ ਨਾਲ ਭਰ ਦਿੱਤਾ ਜਾਵੇ।
🎥 ਉਪਰ ਦੀ ਤਸਵੀਰ ਤੇ ਕਲਿੱਬ ਕਰੋ ਲਾਈਨਰ ਅਤੇ ਪੋਲਿਨੋਮਿਆਲ ਰਿਗ੍ਰੈਸ਼ਨ ਦਾ ਛੋਟਾ ਵੀਡੀਓ ਵੇਰਵਾ ਵੇਖਣ ਲਈ।
ਸਾਡਾ ਲਾਈਨਰ ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲ ਸਿੱਖਾਉਣ ਲਈ, ਅਸੀਂ Scikit-learn ਲਾਇਬ੍ਰੇਰੀ ਦੀ ਵਰਤੋਂ ਕਰਾਂਗੇ।
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_splitਅਸੀਂ ਪਹਿਲਾਂ ਇਨਪੁਟ ਮੁੱਲ (ਫੀਚਰ) ਅਤੇ ਉਮੀਦ ਕੀਤੀ ਆਉਟਪੁੱਟ (ਲੇਬਲ) ਨੂੰ ਵੱਖਰੇ numpy arrays ਵਿੱਚ ਵੰਡਦੇ ਹਾਂ:
X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1)
y = pie_pumpkins['Price']ਧਿਆਨ ਦਿਓ ਕਿ ਅਸੀਂ ਇਨਪੁਟ ਡਾਟਾ ਵਿੱਚ
reshapeਕਰਨਾ ਪਿਆ ਤਾਂ ਜੋ Linear Regression ਪੈਕੇਜ ਇਸ ਨੂੰ ਸਹੀ ਸਮਝ ਸਕੇ। Linear Regression ਨੂੰ 2D-arrayExpectedInput ਜਾਂ input ਦੀ ਲੋੜ ਹੋਂਦੀ ਹੈ, ਜਿੱਥੇ ਆਰੇ ਦੇ ਹਰ ਰੋ ਵਿੱਚ ਫੀਚਰਾਂ ਦਾ ਵੈਕਟਰ ਹੁੰਦਾ ਹੈ। ਸਾਡੇ ਮਾਮਲੇ ਵਿੱਚ ਚੂੰਕਿ ਸਿਰਫ ਇੱਕ ਇਨਪੁਟ ਹੈ - ਸਾਨੂੰ ਐਨੀ ਰੇਸ਼ਪ N×1 ਦੀ ਲੋੜ ਹੈ, ਜਿੱਥੇ N ਡਾਟਾ ਸੈੱਟ ਦਾ ਆਕਾਰ ਹੈ।
ਫਿਰ, ਅਸੀਂ ਡਾਟਾ ਨੂੰ ਟ੍ਰੇਨ ਅਤੇ ਟੈਸਟ ਸੈੱਟਾਂ ਵਿੱਚ ਵੰਡਦੇ ਹਾਂ ਤਾਂ ਜੋ ਟ੍ਰੇਨਿੰਗ ਬਾਅਦ ਮਾਡਲ ਜਾਚਿਆ ਜਾ ਸਕੇ:
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)ਆਖਿਰ ਵਿੱਚ, Linear Regression ਮਾਡਲ ਨੂੰ ਸਿੱਖਾਉਣਾ ਸਿਰਫ ਦੋ ਕੋਡ ਲਾਈਨਾਂ ਲੈਂਦਾ ਹੈ। ਅਸੀਂ LinearRegression ਉਬਜੈਕਟ ਬਣਾਉਂਦੇ ਹਾਂ, ਅਤੇ fit ਵਿਧੀ ਨਾਲ ਇਸ ਨੂੰ ਡਾਟਾ 'ਤੇ ਫਿੱਟ ਕਰਦੇ ਹਾਂ:
lin_reg = LinearRegression()
lin_reg.fit(X_train,y_train)LinearRegression ਔਬਜੈਕਟ fit ਕਰਨ ਤੋਂ ਬਾਅਦ ਰਿਗ੍ਰੈਸ਼ਨ ਦੇ ਸਾਰੇ ਕੋਐਫੀਸ਼ਿਅੰਟ ਰੱਖਦਾ ਹੈ, ਜਿਨ੍ਹਾਂ ਨੂੰ ਤੁਸੀਂ .coef_ ਪ੍ਰਾਪਰਟੀ ਰਾਹੀਂ ਪਹੁੰਚ ਸਕਦੇ ਹੋ। ਸਾਡੇ ਮਾਮਲੇ ਵਿੱਚ, ਸਿਰਫ਼ ਇੱਕ ਕੋਐਫੀਸ਼ਿਅੰਟ ਹੈ, ਜੋ ਲੱਗਭਗ -0.017 ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ। ਇਸਦਾ ਅਰਥ ਹੈ ਕਿ ਕੀਮਤਾਂ ਸਮੇਂ ਦੇ ਨਾਲ ਥੋੜ੍ਹ੍ਹਾ ਘਟਦੀਆਂ ਹਨ, ਪਰ ਬਹੁਤ ਜ਼ਿਆਦਾ ਨਹੀਂ, ਲਗਭਗ 2 ਸੈਂਟ ਪ੍ਰਤੀ ਦਿਨ। ਅਸੀਂ ਰਿਗ੍ਰੈਸ਼ਨ ਦੇ Y-ਅਕਸ਼ ਨਾਲ ਟਕਰਾਉਣ ਵਾਲਾ ਬਿੰਦੂ lin_reg.intercept_ ਰਾਹੀਂ ਵੀ ਵੇਖ ਸਕਦੇ ਹਾਂ - ਸਾਡੇ ਮਾਮਲੇ ਵਿੱਚ ਇਹ ਲਗਭਗ 21 ਹੋਵੇਗਾ, ਜੋ ਸਾਲ ਦੀ ਸ਼ੁਰੂਆਤ ਉੱਤੇ ਕੀਮਤ ਦਰਸਾਉਂਦਾ ਹੈ।
ਸਾਡੇ ਮਾਡਲ ਦੀ ਸਹੀ ਤülਾ ਕਰਨ ਲਈ, ਅਸੀਂ ਟੈਸਟ ਡੈਟਾ ਸੈਟ 'ਤੇ ਕੀਮਤਾਂ ਦੀ ਭਵਿੱਖਵਾਣੀ ਕਰ ਸਕਦੇ ਹਾਂ, ਅਤੇ ਫਿਰ ਵੇਖ ਸਕਦੇ ਹਾਂ ਕਿ ਸਾਡੇ ਅਨੁਮਾਨ ਨੇ ਉਮੀਦ ਕੀਤੀ ਕੀਮਤਾਂ ਨਾਲ ਕਿੰਨਾ ਨੇੜੇ ਹਨ। ਇਹ ਦਰੁਸਤੀਆਂ ਨੂੰ ਮੀਨ ਸਕਵੇਅਰ ਏਰਰ (MSE) ਮੈਟ੍ਰਿਕਸ ਰਾਹੀਂ ਮਾਪਿਆ ਜਾ ਸਕਦਾ ਹੈ, ਜੋ ਉਮੀਦ ਕੀਤੇ ਅਤੇ ਅਨੁਮਾਨ ਕੀਤੇ ਮੁੱਲਾਂ ਵਿਚਕਾਰ ਸਾਰੇ ਵਰਗਾਂ ਦੇ ਅੰਤਰਾਂ ਦਾ ਮੀਨ ਹੁੰਦਾ ਹੈ।
pred = lin_reg.predict(X_test)
mse = np.sqrt(mean_squared_error(y_test,pred))
print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)')ਸਾਡੀ ਗਲਤੀ ਲਗਭਗ 2 ਪੌਇੰਟ ਹੈ, ਜੋ ~17% ਹੈ। ਬਹੁਤ ਚੰਗਾ ਨਹੀਂ। ਮਾਡਲ ਦੀ ਗੁਣਵੱਤਾ ਦਾ ਇਕ ਹੋਰ ਸੰਕੇਤਕ ਹੈ ਕੋਐਫੀਸ਼ਿਅੰਟ ਆਫ ਡਿਟਰਮੀਨੇਸ਼ਨ, ਜਿਸ ਨੂੰ ਇਸ ਤਰ੍ਹਾਂ ਪ੍ਰਾਪਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ:
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)ਲੀਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਦਾ ਇੱਕ ਹੋਰ ਪ੍ਰਕਾਰ ਪੋਲੀਨੋਮਿਯਲ ਰਿਗ੍ਰੈਸ਼ਨ ਹੈ। ਜਦ ਕਦੇ ਕਈ ਵਾਰੀ ਇਨਪੁਟ ਵੈਰੀਏਬਲਾਂ ਵਿਚਕਾਰ ਲੀਨੀਅਰ ਸੰਬੰਧ ਹੁੰਦੇ ਹਨ - ਜਿਵੇਂ ਕਿ ਵਾਲੀ ਭਰੀ ਵੱਡੀ ਹੁੰਦੀ ਹੈ, ਕੀਮਤ ਵਧਦੀ ਹੈ - ਪਰ ਕਈ ਵਾਰੀ ਉਹ ਸੰਬੰਧ ਸਿੱਧੀ ਲਾਈਨ ਜਾਂ ਸਮਤਲ 'ਤੇ ਤਿਆਰ ਨਹੀਂ ਕੀਤੇ ਜਾ ਸਕਦੇ।
✅ ਇਹਾਂ ਕੁਝ ਹੋਰ ਉਦਾਹਰਨਾਂ ਹਨ ਜੋ Polynomial Regression ਵਰਤ ਸਕਦੀਆਂ ਹਨ
ਦਿਨ ਅਤੇ ਕੀਮਤ ਵਿਚਕਾਰ ਦੇ ਸੰਬੰਧ ਨੂੰ ਫਿਰ ਤੋਂ ਵੇਖੋ। ਕੀ ਇਹ ਸਕੈਟਰਪਲੌਟ ਐਸਾ ਲੱਗਦਾ ਹੈ ਕਿ ਇਸਨੂੰ ਜ਼ਰੂਰੀ ਤੌਰ 'ਤੇ ਸਿੱਧੀ ਲਾਈਨ ਨਾਲ ਵਿਸ਼ਲੇਸ਼ਣ ਕੀਤਾ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ? ਕੀ ਕੀਮਤਾਂ ਫਲਕਟੂਏਟ ਨਹੀਂ ਹੋ ਸਕਦੀਆਂ? ਇਸ ਮਾਮਲੇ ਵਿੱਚ, ਤੁਸੀਂ ਪੋਲੀਨੋਮਿਯਲ ਰਿਗ੍ਰੈਸ਼ਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰ ਸਕਦੇ ਹੋ।
✅ ਪੋਲੀਨੋਮਿਯਲਜ਼ ਗਣਿਤਕ ਬਿਆਨ ਹੁੰਦੇ ਹਨ ਜੋ ਇੱਕ ਜਾਂ ਵਧੇਰੇ ਵੈਰੀਏਬਲਾਂ ਅਤੇ ਕੋਐਫੀਸ਼ਿਅੰਟਾਂ ਤੋਂ ਬਣੇ ਹੁੰਦੇ ਹਨ।
ਪੋਲੀਨੋਮਿਯਲ ਰਿਗ੍ਰੈਸ਼ਨ ਇੱਕ ਵੱਕਰੀ ਲਾਈਨ ਬਣਾਉਂਦਾ ਹੈ ਜੋ ਗੈਰ-ਲੀਨੀਅਰ ਡਾਟਾ ਨੂੰ ਵਧੀਆ ਫਿੱਟ ਕਰਦਾ ਹੈ। ਸਾਡੇ ਮਾਮਲੇ ਵਿੱਚ, ਜੇ ਅਸੀਂ DayOfYear ਦਾ ਵਰਗਾ (ਸਕੁਏਰਡ) ਵੈਰੀਏਬਲ ਇਨਪੁਟ ਡਾਟਾ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰੀਏ, ਤਾਂ ਅਸੀਂ ਆਪਣਾ ਡਾਟਾ ਪੈਰਾਾਬੋਲਿਕ ਕਰਵ ਨਾਲ ਫਿੱਟ ਕਰ ਸਕਦੇ ਹਾਂ, ਜੋ ਸਾਲ ਦੇ ਇੱਕ ਨਿਰਧਾਰਿਤ ਬਿੰਦੂ ਉੱਤੇ ਘੱਟੋ-ਘੱਟ ਹੋਵੇਗਾ।
Scikit-learn ਵਿੱਚ ਇੱਕ ਸਹਾਇਕ pipeline API ਹੈ ਜੋ ਵੱਖ-ਵੱਖ ਡਾਟਾ ਪ੍ਰੋਸੈਸਿੰਗ ਦੇ ਕਦਮਾਂ ਨੂੰ ਇੱਕਠਾ ਕਰਦਾ ਹੈ। ਇੱਕ ਪਾਈਪਲਾਈਨ estimators ਦੀ ਇੱਕ ਕੜੀ ਹੁੰਦੀ ਹੈ। ਸਾਡੇ ਮਾਮਲੇ ਵਿੱਚ, ਅਸੀਂ ਇੱਕ ਪਾਈਪਲਾਈਨ ਬਣਾਵਾਂਗੇ ਜੋ ਪਹਿਲਾਂ ਪੋਲੀਨੋਮਿਯਲ ਫੀਚਰਾਂ ਨੂੰ ਮਾਡਲ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰਦਾ ਹੈ, ਫਿਰ ਰਿਗ੍ਰੈਸ਼ਨ ਨੂੰ ਸਿਖਾਉਂਦਾ ਹੈ:
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 ਨਾਲ ਅਨੁਮਾਨ ਪ੍ਰਾਪਤ ਕਰਨਾ ਹੈ। ਇਹ ਰਹੀ ਗ੍ਰਾਫ ਜੋ ਟੈਸਟ ਡਾਟਾ ਅਤੇ ਅਨੁਮਾਨਿਤ ਕਰਵ ਦਿਖਾਉਂਦੀ ਹੈ:
ਪੋਲੀਨੋਮਿਯਲ ਰਿਗ੍ਰੈਸ਼ਨ ਵਰਤ ਕੇ, ਅਸੀਂ ਥੋੜ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹ੍ਹੀ MSE ਅਤੇ ਉੱਚਾ ਕੋਐਫੀਸ਼ਿਅੰਟ ਆਫ ਡਿਟਰਮੀਨੇਸ਼ਨ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦੇ ਹਾਂ, ਪਰ ਇਹ ਜ਼ਿਆਦਾ ਮਹੱਤਵਪੂਰਣ ਨਹੀਂ ਹੁੰਦਾ। ਸਾਨੂੰ ਹੋਰ ਫੀਚਰਾਂ ਦਾ ਖਿਆਲ ਰੱਖਣਾ ਹੋਵੇਗਾ!
ਤੁਸੀਂ ਦੇਖ ਸਕਦੇ ਹੋ ਕਿ ਪੰਪਕਿਨ ਕੀਮਤਾਂ ਦਾ ਘੱਟੋ-ਘੱਟ ਦਰ ਹਾਲੋਵੀਨ ਦੇ ਆਲੇ-ਦੁਆਲੇ ਹੁੰਦੀ ਹੈ। ਤੁਸੀਂ ਇਸ ਨੂੰ ਕਿਵੇਂ ਸਮਝਾ ਸਕਦੇ ਹੋ?
🎃 ਵਧਾਈ ਹੋ! ਤੁਸੀਂ ਹਾਲ ਹੀ ਵਿੱਚ ਇਕ ਮਾਡਲ ਬਨਾਇਆ ਹੈ ਜੋ ਪਾਈ ਪੰਪਕਿਨਾਂ ਦੀ ਕੀਮਤ ਭਵਿੱਖਵਾਣੀ ਕਰ ਸਕਦਾ ਹੈ। ਤੁਸੀਂ ਸੰਭਵਤ: ਸਾਰੇ ਪੰਪਕਿਨ ਕਿਸਮਾਂ ਲਈ ਇਹੀ ਪ੍ਰਕਿਰਿਆ ਦੁਹਰਾ ਸਕਦੇ ਹੋ, ਪਰ ਇਹ ਥੋੜ੍ਹਾ ਥਕਾਵਟ ਭਰਿਆ ਹੋਵੇਗਾ। ਚੱਲੋ ਹੁਣ ਸਿੱਖਦੇ ਹਾਂ ਕਿ ਆਪਣੇ ਮਾਡਲ ਵਿੱਚ ਪੰਪਕਿਨ ਕਿਸਮ ਨੂੰ ਕਿਵੇਂ ਸ਼ਾਮਲ ਕਰਨਾ ਹੈ!
ਆਦਰਸ਼ ਸੰਸਾਰ ਵਿੱਚ, ਅਸੀਂ ਇੱਕੋ ਮਾਡਲ ਵਰਤ ਕੇ ਵੱਖ-ਵੱਖ ਪੰਪਕਿਨ ਕਿਸਮਾਂ ਦੀਆਂ ਕੀਮਤਾਂ ਦੀ ਭਵਿੱਖਵਾਣੀ ਕਰ ਸਕਣਾ ਚਾਹੁੰਦੇ ਹਾਂ। ਪਰ Variety ਕਾਲਮ Month ਵਰਗੇ ਕਾਲਮਾਂ ਤੋਂ ਕੁਝ ਵੱਖਰਾ ਹੈ, ਕਿਉਂਕਿ ਇਸ ਵਿੱਚ ਗੈਰ-ਸੰਖਿਆਤਮਕ ਮੁੱਲ ਹੁੰਦੇ ਹਨ। ਇਸ ਤਰ੍ਹਾਂ ਦੇ ਕਾਲਮਾਂ ਨੂੰ ਸ਼੍ਰੇਣੀਬੱਧ ਕਿਹਾ ਜਾਂਦਾ ਹੈ।
🎥 ਉਪਰ ਦਿੱਤੀ ਚਿੱਤਰ 'ਤੇ ਕਲਿੱਕ ਕਰੋ ਕੈਟੇਗੋਰੀਕਲ ਫੀਚਰ ਵਰਤਣ ਦੇ ਸੂਚਨਾ ਵਾਲੇ ਛੋਟੇ ਵੀਡੀਓ ਲਈ।
ਇੱਥੇ ਤੁਸੀਂ ਦੇਖ ਸਕਦੇ ਹੋ ਕਿ ਵਰਾਇਟੀ 'ਤੇ ਆਧਾਰਿਤ ਔਸਤ ਕੀਮਤ ਕਿਵੇਂ ਹੈ:
ਵਰਾਇਟੀ ਨੂੰ ਵਿਚਾਰ ਵਿੱਚ ਲੈਣ ਲਈ, ਪਹਿਲਾਂ ਘੱਟੋ-ਘੱਟ ਇਸ ਨੂੰ ਸੰਖਿਆਤਮਕ ਰੂਪ ਵਿੱਚ ਬਦਲਣਾ ਪਵੇਗਾ, ਜਾਂ ਇੰਕੋਡ ਕਰਨਾ ਪਵੇਗਾ। ਅਸੀਂ ਇਸਦਾ ਕੁਝ ਤਰੀਕੇ ਨਾਲ ਕਰ ਸਕਦੇ ਹਾਂ:
- ਸਰਲ ਨੰਬਰਾਤਮਕ ਇੰਕੋਡਿੰਗ ਇੱਕ ਟੇਬਲ ਬਣਾਉਂਦਾ ਹੈ ਜਿਸ ਵਿੱਚ ਵੱਖ-ਵੱਖ ਵਰਾਇਟੀ ਹੁੰਦੀਆਂ ਹਨ, ਅਤੇ ਫਿਰ ਟੇਬਲ ਵਿੱਚ ਉਸ ਵਰਾਇਟੀ ਨਾਮ ਦੇ ਅਨੁਕੂਲ ਇੰਡੈਕਸ ਨਾਲ ਸਥਾਨ ਬਦਲ ਦਿੰਦਾ ਹੈ। ਪਰ ਇਹ ਲੀਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਲਈ ਸਭ ਤੋਂ ਵਧੀਆ ਵਿਚਾਰ ਨਹੀਂ ਹੈ, ਕਿਉਂਕਿ ਲੀਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਇੰਡੈਕਸ ਦਾ ਅਸਲੀ ਸੰਖਿਆਤਮਕ ਮੁੱਲ ਲੈਂਦਾ ਹੈ ਅਤੇ ਕੁਝ ਕੋਐਫੀਸ਼ਿਅੰਟ ਨਾਲ ਗੁਣਾ ਕਰਦਾ ਹੈ। ਸਾਡੇ ਮਾਮਲੇ ਵਿੱਚ, ਇੰਡੈਕਸ ਨੰਬਰ ਅਤੇ ਕੀਮਤ ਵਿਚਕਾਰ ਸੰਬੰਧ ਸਪਸ਼ਟ ਤੌਰ 'ਤੇ ਗੈਰ-ਲੀਨੀਅਰ ਹੈ, ਭਾਵੇਂ ਅਸੀਂ ਇੰਡੈਕਸ ਨੂੰ ਕਿਸੇ ਖ਼ਾਸ ਤਰਤੀਬ 'ਚ ਰੱਖੀਏ।
- One-hot encoding
Varietyਕਾਲਮ ਦੀ ਥਾਂ 4 ਵੱਖਰੇ ਕਾਲਮ ਬਣਾ ਦੇਵੇਗਾ, ਪ੍ਰਤੀ ਵੱਖਰੀ ਵਰਾਇਟੀ ਇੱਕ। ਹਰ ਕਾਲਮ ਵਿੱਚ1ਹੋਵੇਗਾ ਜੇ ਉਸ ਕਤਾਰ ਦੀ ਵਰਾਇਟੀ ਉਹੀ ਹੋਵੇ, ਨਹੀਂ ਤਾਂ0। ਇਸਦਾ ਅਰਥ ਹੈ ਕਿ ਲੀਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਵਿੱਚ 4 ਕੋਐਫੀਸ਼ਿਅੰਟ ਹੋਣਗੇ, ਇਕ-ਇਕ ਹਰ ਕਿਸਮ ਦੇ ਪੰਪਕਿਨ ਲਈ, ਜੋ ਉਸ ਖ਼ਾਸ ਵਰਾਇਟੀ ਲਈ "ਸ਼ੁਰੂਆਤੀ ਕੀਮਤ" (ਜਾਂ ਹੋਰ "ਵਧੀਕ ਕੀਮਤ") ਦਾ ਜ਼ਿੰਮੇਵਾਰ ਹੋਵੇਗਾ।
ਹੇਠ ਲਿਖਿਆ ਕੋਡ ਦਿਖਾਉਂਦਾ ਹੈ ਕਿ ਅਸੀਂ ਕਿਵੇਂ ਵਰਾਇਟੀ ਨੂੰ 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 encode ਕੀਤੀ ਵਰਾਇਟੀ ਨਾਲ ਸਿਖਾਉਣ ਲਈ, ਸਾਨੂੰ ਸਿਰਫ਼ X ਅਤੇ y ਡਾਟਾ ਸਹੀ ਤਰੀਕੇ ਨਾਲ ਤਿਆਰ ਕਰਨ ਦੀ ਲੋੜ ਹੈ:
X = pd.get_dummies(new_pumpkins['Variety'])
y = new_pumpkins['Price']ਬਾਕੀ ਕੋਡ ਸਾਡੇ ਪਹਿਲਾਂ ਵਰਤੇ ਹੋਏ Linear Regression ਵਰਗੀ ਹੀ ਹੈ। ਜੇ ਤੁਸੀਂ ਇਸ ਨੂੰ ਕੋਸ਼ਿਸ਼ ਕਰੋਗੇ, ਤਾਂ ਤੁਸੀਂ ਵੇਖੋਗੇ ਕਿ ਮੀਨ ਸਕਵੇਅਰ ਏਰਰ ਲਗਭਗ ਇਕੋ ਜਿਹਾ ਰਹਿੰਦਾ ਹੈ, ਪਰ ਸਾਨੂੰ ਬਹੁਤ ਉੱਚਾ ਕੋਐਫੀਸ਼ਿਅੰਟ ਆਫ ਡਿਟਰਮੀਨੇਸ਼ਨ (~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%) ਅਤੇ ਡਿਟਰਮੀਨੇਸ਼ਨ 0.94 ਮਿਲਦਾ ਹੈ!
ਸਭ ਤੋਂ ਵਧੀਆ ਮਾਡਲ ਬਣਾਉਣ ਲਈ, ਅਸੀਂ ਉਪਰੋਕਤ ਉਦਾਹਰਨ ਤੋਂ ਮਿਲੇ ਗਏ ਮਿਲੇ-ਜੁਲੇ (one-hot encode ਕੀਤੇ ਸ਼੍ਰੇਣੀਬੱਧ + ਸੰਖਿਆਤਮਕ) ਡਾਟਾ ਨਾਲ Polynomial Regression ਵਰਤ ਸਕਦੇ ਹਾਂ। ਤੁਹਾਡੇ ਸੁਖਦ ਲਈ ਸਾਰਾ ਕੋਡ ਹੇਠਾਂ ਦਿੱਤਾ ਹੈ:
# ਸਿਖਲਾਈ ਡਾਟਾ ਸੈੱਟ ਕਰੋ
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']
# ਟ੍ਰੇਨ-ਟੈਸਟ ਵੰਡ ਬਣਾਓ
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
# ਪਾਈਪਲਾਈਨ ਸੈੱਟਅਪ ਅਤੇ ਸਿਖਲਾਈ ਕਰੋ
pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression())
pipeline.fit(X_train,y_train)
# ਟੈਸਟ ਡਾਟਾ ਲਈ ਨਤੀਜੇ ਭਵਿੱਖਵਾਣੀ ਕਰੋ
pred = pipeline.predict(X_test)
# MSE ਅਤੇ ਨਿਧਾਰਨ ਦੀ ਗਣਨਾ ਕਰੋ
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% ਦਾ ਸਭ ਤੋਂ ਵਧੀਆ ਡਿਟਰਮੀਨੇਸ਼ਨ ਕੋਐਫੀਸ਼ਿਅੰਟ ਅਤੇ MSE=2.23 (~8% ਭਵਿੱਖਵਾਣੀ ਗਲਤੀ) ਮਿਲੇਗੀ।
| ਮਾਡਲ | MSE | ਡਿਟਰਮੀਨੇਸ਼ਨ |
|---|---|---|
DayOfYear ਲੀਨੀਅਰ |
2.77 (17.2%) | 0.07 |
DayOfYear ਪੋਲੀਨੋਮਿਯਲ |
2.73 (17.0%) | 0.08 |
Variety ਲੀਨੀਅਰ |
5.24 (19.7%) | 0.77 |
| ਸਭ ਫੀਚਰ ਲੀਨੀਅਰ | 2.84 (10.5%) | 0.94 |
| ਸਭ ਫੀਚਰ ਪੋਲੀਨੋਮਿਯਲ | 2.23 (8.25%) | 0.97 |
🏆 ਸ਼ਾਬਾਸ਼! ਤੁਸੀਂ ਇੱਕ ਪਾਠ ਵਿੱਚ ਚਾਰ ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲ ਬਣਾਏ ਅਤੇ ਮਾਡਲ ਦੀ ਗੁਣਵੱਤਾ 97% ਤੱਕ ਸੁਧਾਰੀ। ਰিগ੍ਰੈਸ਼ਨ ਦੇ ਅੰਤਿਮ ਹਿੱਸੇ ਵਿੱਚ, ਤੁਸੀਂ ਲੌਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਬਾਰੇ ਸਿੱਖੋਗੇ ਜੋ ਵਰਗਾਂ ਨੂੰ ਨਿਰਧਾਰਤ ਕਰਦਾ ਹੈ।
ਇਸ ਨੋਟਬੁੱਕ ਵਿੱਚ ਵੱਖ-ਵੱਖ ਵੈਰੀਏਬਲਾਂ ਦਾ ਟੈਸਟ ਕਰੋ ਤਾਂ ਜੋ ਦੇਖ ਸਕੋ ਕਿ ਕੋਰਲੇਸ਼ਨ ਮਾਡਲ ਦੀ ਸਹੀਤਾ ਨਾਲ ਕਿਵੇਂ ਮੇਲ ਖਾਂਦੀ ਹੈ।
ਇਸ ਪਾਠ ਵਿੱਚ ਅਸੀਂ ਲੀਨੀਅਰ ਰਿਗ੍ਰੈਸ਼ਨ ਬਾਰੇ ਸਿੱਖਿਆ। ਹੋਰ ਮਹੱਤਵਪੂਰਣ ਕਿਸਮਾਂ ਦੀ ਰਿਗ੍ਰੈਸ਼ਨ ਵੀ ਹੁੰਦੀ ਹੈ। Stepwise, Ridge, Lasso ਅਤੇ Elasticnet ਤਕਨੀਕਾਂ ਬਾਰੇ ਪੜ੍ਹੋ। ਹੋਰ ਸਿੱਖਣ ਲਈ ਇੱਕ ਚੰਗਾ ਕੋਰਸ Stanford Statistical Learning course ਹੈ।
ਅਸਵੀਕਾਰੋਪੱਤਰ: ਇਸ ਦਸਤਾਵੇਜ਼ ਨੂੰ AI ਅਨੁਵਾਦ ਸੇਵਾ Co-op Translator ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀਤ ਲਈ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਦੇਖੋ ਕਿ ਸਵੈਚਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੰਤੁਲਨ ਹੋ ਸਕਦੇ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਆਪਣੇ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਿਕ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਣ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਅਸੀਂ ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਕਾਰਨ ਕਿਸੇ ਵੀ ਗਲਤਫਹਮੀ ਜਾਂ ਗਲਤ ਅਰਥ ਲੱਗਣ ਲਈ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ।












