ਰਿਗ੍ਰੈਸ਼ਨ ਦੇ ਇਸ ਅੰਤਿਮ ਪਾਠ ਵਿੱਚ, ਜੋ ਕਿ ML ਦੀ ਇੱਕ ਬੁਨਿਆਦੀ ਕਲਾਸਿਕ ਤਕਨੀਕ ਹੈ, ਅਸੀਂ ਲਾਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਦਾ ਅਧਿਐਨ ਕਰਾਂਗੇ। ਤੁਸੀਂ ਇਸ ਤਕਨੀਕ ਨੂੰ ਬਾਈਨਰੀ ਸ਼੍ਰੇਣੀਆਂ ਦੀ ਪੇਸ਼ਗੂਈ ਕਰਨ ਲਈ ਪੈਟਰਨ ਖੋਜਣ ਲਈ ਵਰਤ ਸਕਦੇ ਹੋ। ਕੀ ਇਹ ਕੈਂਡੀ ਚਾਕਲੇਟ ਹੈ ਜਾਂ ਨਹੀਂ? ਕੀ ਇਹ ਬਿਮਾਰੀ ਸੰਕਰਮਕ ਹੈ ਜਾਂ ਨਹੀਂ? ਕੀ ਇਹ ਗਾਹਕ ਇਸ ਉਤਪਾਦ ਨੂੰ ਚੁਣੇਗਾ ਜਾਂ ਨਹੀਂ?
ਇਸ ਪਾਠ ਵਿੱਚ, ਤੁਸੀਂ ਸਿੱਖੋਗੇ:
- ਡਾਟਾ ਵਿਜ਼ੁਅਲਾਈਜ਼ੇਸ਼ਨ ਲਈ ਇੱਕ ਨਵੀਂ ਲਾਇਬ੍ਰੇਰੀ
- ਲਾਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਲਈ ਤਕਨੀਕਾਂ
✅ ਇਸ Learn module ਵਿੱਚ ਇਸ ਕਿਸਮ ਦੇ ਰਿਗ੍ਰੈਸ਼ਨ ਨਾਲ ਕੰਮ ਕਰਨ ਦੀ ਸਮਝ ਨੂੰ ਗਹਿਰਾ ਕਰੋ।
ਕਦੂ ਦੇ ਡਾਟਾ ਨਾਲ ਕੰਮ ਕਰਦੇ ਹੋਏ, ਅਸੀਂ ਹੁਣ ਇਸ ਨਾਲ ਕਾਫ਼ੀ ਜਾਣੂ ਹੋ ਗਏ ਹਾਂ ਕਿ ਇੱਕ ਬਾਈਨਰੀ ਸ਼੍ਰੇਣੀ ਹੈ ਜਿਸ ਨਾਲ ਅਸੀਂ ਕੰਮ ਕਰ ਸਕਦੇ ਹਾਂ: Color।
ਆਓ ਇੱਕ ਲਾਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਮਾਡਲ ਬਣਾਈਏ ਜੋ ਕੁਝ ਵੈਰੀਏਬਲ ਦੇ ਆਧਾਰ 'ਇੱਕ ਦਿੱਤੇ ਕਦੂ ਦਾ ਰੰਗ ਕਿਹੜਾ ਹੋ ਸਕਦਾ ਹੈ' ਦੀ ਪੇਸ਼ਗੂਈ ਕਰੇ (ਸੰਤਰੀ 🎃 ਜਾਂ ਚਿੱਟਾ 👻)।
ਅਸੀਂ ਰਿਗ੍ਰੈਸ਼ਨ ਦੇ ਪਾਠ ਸਮੂਹ ਵਿੱਚ ਬਾਈਨਰੀ ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਬਾਰੇ ਕਿਉਂ ਗੱਲ ਕਰ ਰਹੇ ਹਾਂ? ਸਿਰਫ਼ ਭਾਸ਼ਾਈ ਸੁਵਿਧਾ ਲਈ, ਕਿਉਂਕਿ ਲਾਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਵਾਸਤਵ ਵਿੱਚ ਇੱਕ ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਤਰੀਕਾ ਹੈ, ਹਾਲਾਂਕਿ ਇਹ ਰੇਖੀ-ਅਧਾਰਿਤ ਹੈ। ਡਾਟਾ ਨੂੰ ਕਲਾਸੀਫਾਈ ਕਰਨ ਦੇ ਹੋਰ ਤਰੀਕਿਆਂ ਬਾਰੇ ਅਗਲੇ ਪਾਠ ਸਮੂਹ ਵਿੱਚ ਸਿੱਖੋ।
ਸਾਡੇ ਮਕਸਦ ਲਈ, ਅਸੀਂ ਇਸਨੂੰ ਇੱਕ ਬਾਈਨਰੀ ਵਜੋਂ ਪ੍ਰਗਟ ਕਰਾਂਗੇ: 'ਚਿੱਟਾ' ਜਾਂ 'ਚਿੱਟਾ ਨਹੀਂ'। ਸਾਡੇ ਡਾਟਾਸੈਟ ਵਿੱਚ ਇੱਕ 'ਧਾਰੀਦਾਰ' ਸ਼੍ਰੇਣੀ ਵੀ ਹੈ ਪਰ ਇਸਦੇ ਕੁਝ ਹੀ ਉਦਾਹਰਨ ਹਨ, ਇਸ ਲਈ ਅਸੀਂ ਇਸਨੂੰ ਵਰਤ ਨਹੀਂ ਰਹੇ। ਇਹ ਡਾਟਾਸੈਟ ਤੋਂ null ਮੁੱਲਾਂ ਨੂੰ ਹਟਾਉਣ ਤੋਂ ਬਾਅਦ ਖਤਮ ਹੋ ਜਾਂਦੀ ਹੈ।
🎃 ਮਜ਼ੇਦਾਰ ਤੱਥ: ਅਸੀਂ ਕਈ ਵਾਰ ਚਿੱਟੇ ਕਦੂਆਂ ਨੂੰ 'ਭੂਤ' ਕਦੂ ਕਹਿੰਦੇ ਹਾਂ। ਇਹ ਕੱਟਣ ਲਈ ਬਹੁਤ ਆਸਾਨ ਨਹੀਂ ਹੁੰਦੇ, ਇਸ ਲਈ ਇਹ ਸੰਤਰੀ ਕਦੂਆਂ ਜਿੰਨੇ ਲੋਕਪ੍ਰਿਯ ਨਹੀਂ ਹਨ, ਪਰ ਇਹ ਦਿਖਣ ਵਿੱਚ ਬਹੁਤ ਕੂਲ ਹੁੰਦੇ ਹਨ! ਇਸ ਲਈ ਅਸੀਂ ਆਪਣੇ ਪ੍ਰਸ਼ਨ ਨੂੰ ਇਸ ਤਰੀਕੇ ਨਾਲ ਵੀ ਦੁਬਾਰਾ ਬਣਾਉਣ ਦੇ ਬਾਰੇ ਸੋਚ ਸਕਦੇ ਹਾਂ: 'ਭੂਤ' ਜਾਂ 'ਭੂਤ ਨਹੀਂ'। 👻
ਲਾਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਕੁਝ ਮਹੱਤਵਪੂਰਨ ਤਰੀਕਿਆਂ ਵਿੱਚ ਰੇਖੀ ਰਿਗ੍ਰੈਸ਼ਨ ਤੋਂ ਵੱਖਰਾ ਹੈ, ਜਿਸ ਬਾਰੇ ਤੁਸੀਂ ਪਹਿਲਾਂ ਸਿੱਖਿਆ ਸੀ।
🎥 ਲਾਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਦੇ ਇੱਕ ਛੋਟੇ ਵੀਡੀਓ ਝਲਕ ਲਈ ਉਪਰੋਕਤ ਚਿੱਤਰ 'ਤੇ ਕਲਿਕ ਕਰੋ।
ਲਾਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਰੇਖੀ ਰਿਗ੍ਰੈਸ਼ਨ ਦੇ ਜਿਵੇਂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਨਹੀਂ ਦਿੰਦਾ। ਪਹਿਲਾ ਇੱਕ ਬਾਈਨਰੀ ਸ਼੍ਰੇਣੀ ('ਚਿੱਟਾ ਜਾਂ ਚਿੱਟਾ ਨਹੀਂ') ਬਾਰੇ ਪੇਸ਼ਗੂਈ ਦਿੰਦਾ ਹੈ ਜਦਕਿ ਦੂਜਾ ਲਗਾਤਾਰ ਮੁੱਲਾਂ ਦੀ ਪੇਸ਼ਗੂਈ ਕਰਨ ਦੇ ਯੋਗ ਹੈ, ਉਦਾਹਰਨ ਲਈ, ਕਦੂ ਦੇ ਮੂਲ ਅਤੇ ਫਸਲ ਦੇ ਸਮੇਂ ਦੇ ਆਧਾਰ 'ਇਸਦੀ ਕੀਮਤ ਕਿੰਨੀ ਵਧੇਗੀ'।
ਇਨਫੋਗ੍ਰਾਫਿਕ ਦਸਾਨੀ ਮਾਡੀਪੱਲੀ ਦੁਆਰਾ
ਲਾਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਦੇ ਹੋਰ ਕਿਸਮਾਂ ਵੀ ਹਨ, ਜਿਵੇਂ ਕਿ ਮਲਟੀਨੋਮਿਅਲ ਅਤੇ ਆਰਡਿਨਲ:
- ਮਲਟੀਨੋਮਿਅਲ, ਜਿਸ ਵਿੱਚ ਇੱਕ ਤੋਂ ਵੱਧ ਸ਼੍ਰੇਣੀਆਂ ਸ਼ਾਮਲ ਹੁੰਦੀਆਂ ਹਨ - "ਸੰਤਰੀ, ਚਿੱਟਾ, ਅਤੇ ਧਾਰੀਦਾਰ"।
- ਆਰਡਿਨਲ, ਜਿਸ ਵਿੱਚ ਕ੍ਰਮਬੱਧ ਸ਼੍ਰੇਣੀਆਂ ਸ਼ਾਮਲ ਹੁੰਦੀਆਂ ਹਨ, ਜੇਕਰ ਅਸੀਂ ਆਪਣੇ ਨਤੀਜਿਆਂ ਨੂੰ ਤਰਕਸੰਗਤ ਤੌਰ 'ਤੇ ਕ੍ਰਮਬੱਧ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹਾਂ, ਜਿਵੇਂ ਕਿ ਸਾਡੇ ਕਦੂ ਜੋ ਇੱਕ ਨਿਰਧਾਰਿਤ ਗਿਣਤੀ ਦੇ ਆਕਾਰਾਂ (mini, sm, med, lg, xl, xxl) ਦੁਆਰਾ ਕ੍ਰਮਬੱਧ ਹਨ।
ਯਾਦ ਹੈ ਕਿ ਰੇਖੀ ਰਿਗ੍ਰੈਸ਼ਨ ਵਧੇਰੇ ਸੰਬੰਧਿਤ ਵੈਰੀਏਬਲਾਂ ਨਾਲ ਚੰਗਾ ਕੰਮ ਕਰਦਾ ਸੀ? ਲਾਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਇਸਦਾ ਉਲਟ ਹੈ - ਵੈਰੀਏਬਲਾਂ ਨੂੰ ਸੰਬੰਧਿਤ ਹੋਣ ਦੀ ਲੋੜ ਨਹੀਂ। ਇਹ ਇਸ ਡਾਟਾ ਲਈ ਕੰਮ ਕਰਦਾ ਹੈ ਜਿਸ ਵਿੱਚ ਕੁਝ ਕਮਜ਼ੋਰ ਸੰਬੰਧ ਹਨ।
ਲਾਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਜ਼ਿਆਦਾ ਸਹੀ ਨਤੀਜੇ ਦੇਵੇਗਾ ਜੇ ਤੁਸੀਂ ਜ਼ਿਆਦਾ ਡਾਟਾ ਵਰਤੋਂਗੇ; ਸਾਡਾ ਛੋਟਾ ਡਾਟਾਸੈਟ ਇਸ ਕੰਮ ਲਈ ਉਤਮ ਨਹੀਂ ਹੈ, ਇਸ ਲਈ ਇਸਨੂੰ ਯਾਦ ਰੱਖੋ।
🎥 ਲਾਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਲਈ ਡਾਟਾ ਤਿਆਰੀ ਦੇ ਇੱਕ ਛੋਟੇ ਵੀਡੀਓ ਝਲਕ ਲਈ ਉਪਰੋਕਤ ਚਿੱਤਰ 'ਤੇ ਕਲਿਕ ਕਰੋ।
✅ ਉਹ ਡਾਟਾ ਦੇ ਕਿਸਮਾਂ ਬਾਰੇ ਸੋਚੋ ਜੋ ਲਾਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਲਈ ਚੰਗੇ ਹੋ ਸਕਦੇ ਹਨ।
ਸਭ ਤੋਂ ਪਹਿਲਾਂ, ਡਾਟਾ ਨੂੰ ਕੁਝ ਸਾਫ਼ ਕਰੋ, null ਮੁੱਲਾਂ ਨੂੰ ਹਟਾਓ ਅਤੇ ਕੁਝ ਕਾਲਮਾਂ ਨੂੰ ਚੁਣੋ:
-
ਹੇਠਾਂ ਦਿੱਤਾ ਕੋਡ ਸ਼ਾਮਲ ਕਰੋ:
columns_to_select = ['City Name','Package','Variety', 'Origin','Item Size', 'Color'] pumpkins = full_pumpkins.loc[:, columns_to_select] pumpkins.dropna(inplace=True)
ਤੁਸੀਂ ਹਮੇਸ਼ਾ ਆਪਣੇ ਨਵੇਂ ਡਾਟਾਫਰੇਮ 'ਤੇ ਇੱਕ ਝਲਕ ਮਾਰ ਸਕਦੇ ਹੋ:
pumpkins.info
ਹੁਣ ਤੱਕ ਤੁਸੀਂ ਸ਼ੁਰੂਆਤੀ ਨੋਟਬੁੱਕ ਵਿੱਚ ਕਦੂ ਡਾਟਾ ਲੋਡ ਕਰ ਲਿਆ ਹੈ ਅਤੇ ਇਸਨੂੰ ਸਾਫ਼ ਕੀਤਾ ਹੈ ਤਾਂ ਜੋ ਕੁਝ ਵੈਰੀਏਬਲਾਂ ਸਮੇਤ Color ਵਾਲਾ ਡਾਟਾਸੈਟ ਬਚ ਸਕੇ। ਆਓ ਨੋਟਬੁੱਕ ਵਿੱਚ ਡਾਟਾਫਰੇਮ ਨੂੰ ਇੱਕ ਵੱਖਰੀ ਲਾਇਬ੍ਰੇਰੀ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਵਿਜ਼ੁਅਲਾਈਜ਼ ਕਰੀਏ: Seaborn, ਜੋ ਪਹਿਲਾਂ ਵਰਤੇ ਗਏ Matplotlib 'ਤੇ ਬਣਿਆ ਹੈ।
Seaborn ਤੁਹਾਡੇ ਡਾਟਾ ਨੂੰ ਵਿਜ਼ੁਅਲਾਈਜ਼ ਕਰਨ ਦੇ ਕੁਝ ਸ਼ਾਨਦਾਰ ਤਰੀਕੇ ਪੇਸ਼ ਕਰਦਾ ਹੈ। ਉਦਾਹਰਨ ਲਈ, ਤੁਸੀਂ ਇੱਕ ਸ਼੍ਰੇਣੀਬੱਧ ਪਲਾਟ ਵਿੱਚ Variety ਅਤੇ Color ਦੇ ਡਾਟਾ ਦੇ ਵੰਡ ਦੀ ਤੁਲਨਾ ਕਰ ਸਕਦੇ ਹੋ।
-
catplotਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ, ਸਾਡੇ ਕਦੂ ਡਾਟਾpumpkinsਦੀ ਵਰਤੋਂ ਕਰਕੇ, ਅਤੇ ਹਰ ਕਦੂ ਸ਼੍ਰੇਣੀ (ਸੰਤਰੀ ਜਾਂ ਚਿੱਟਾ) ਲਈ ਇੱਕ ਰੰਗ ਨਕਸ਼ਾ ਨਿਰਧਾਰਤ ਕਰਕੇ, ਇੱਕ ਪਲਾਟ ਬਣਾਓ:import seaborn as sns palette = { 'ORANGE': 'orange', 'WHITE': 'wheat', } sns.catplot( data=pumpkins, y="Variety", hue="Color", kind="count", palette=palette, )
ਡਾਟਾ ਨੂੰ ਦੇਖ ਕੇ, ਤੁਸੀਂ ਦੇਖ ਸਕਦੇ ਹੋ ਕਿ Color ਡਾਟਾ
Varietyਨਾਲ ਕਿਵੇਂ ਸੰਬੰਧਿਤ ਹੈ।✅ ਇਸ ਸ਼੍ਰੇਣੀਬੱਧ ਪਲਾਟ ਦੇ ਆਧਾਰ ਤੇ, ਤੁਹਾਡੇ ਮਨ ਵਿੱਚ ਕਿਹੜੀਆਂ ਦਿਲਚਸਪ ਖੋਜਾਂ ਆ ਸਕਦੀਆਂ ਹਨ?
ਸਾਡੇ ਕਦੂ ਡਾਟਾਸੈਟ ਵਿੱਚ ਇਸਦੇ ਸਾਰੇ ਕਾਲਮਾਂ ਲਈ ਸਤਰ ਮੁੱਲ ਹਨ। ਸ਼੍ਰੇਣੀਬੱਧ ਡਾਟਾ ਨਾਲ ਕੰਮ ਕਰਨਾ ਮਨੁੱਖਾਂ ਲਈ ਬਹੁਤ ਸਹਜ ਹੈ ਪਰ ਮਸ਼ੀਨਾਂ ਲਈ ਨਹੀਂ। ਮਸ਼ੀਨ ਲਰਨਿੰਗ ਐਲਗੋਰਿਥਮ ਨੰਬਰਾਂ ਨਾਲ ਚੰਗਾ ਕੰਮ ਕਰਦੇ ਹਨ। ਇਸੇ ਲਈ ਐਨਕੋਡਿੰਗ ਡਾਟਾ ਪ੍ਰੀ-ਪ੍ਰੋਸੈਸਿੰਗ ਦੇ ਚਰਨ ਵਿੱਚ ਇੱਕ ਬਹੁਤ ਮਹੱਤਵਪੂਰਨ ਕਦਮ ਹੈ, ਕਿਉਂਕਿ ਇਹ ਸਾਨੂੰ ਸ਼੍ਰੇਣੀਬੱਧ ਡਾਟਾ ਨੂੰ ਸੰਖਿਆਤਮਕ ਡਾਟਾ ਵਿੱਚ ਬਦਲਣ ਯੋਗ ਬਣਾਉਂਦਾ ਹੈ, ਬਿਨਾਂ ਕੋਈ ਜਾਣਕਾਰੀ ਗੁਆਏ। ਚੰਗੀ ਐਨਕੋਡਿੰਗ ਇੱਕ ਚੰਗਾ ਮਾਡਲ ਬਣਾਉਣ ਵਿੱਚ ਸਹਾਇਕ ਹੈ।
ਫੀਚਰ ਐਨਕੋਡਿੰਗ ਲਈ ਦੋ ਮੁੱਖ ਕਿਸਮ ਦੇ ਐਨਕੋਡਰ ਹਨ:
-
ਆਰਡਿਨਲ ਐਨਕੋਡਰ: ਇਹ ਆਰਡਿਨਲ ਵੈਰੀਏਬਲਾਂ ਲਈ ਚੰਗਾ ਹੈ, ਜੋ ਸ਼੍ਰੇਣੀਬੱਧ ਵੈਰੀਏਬਲ ਹਨ ਜਿਨ੍ਹਾਂ ਦੇ ਡਾਟਾ ਦਾ ਲਾਜ਼ਮੀ ਕ੍ਰਮ ਹੁੰਦਾ ਹੈ, ਜਿਵੇਂ ਕਿ ਸਾਡੇ ਡਾਟਾਸੈਟ ਵਿੱਚ
Item Sizeਕਾਲਮ। ਇਹ ਇੱਕ ਨਕਸ਼ਾ ਬਣਾਉਂਦਾ ਹੈ ਜਿਸ ਵਿੱਚ ਹਰ ਸ਼੍ਰੇਣੀ ਨੂੰ ਇੱਕ ਨੰਬਰ ਦੁਆਰਾ ਦਰਸਾਇਆ ਜਾਂਦਾ ਹੈ, ਜੋ ਕਾਲਮ ਵਿੱਚ ਸ਼੍ਰੇਣੀ ਦਾ ਕ੍ਰਮ ਹੈ।from sklearn.preprocessing import OrdinalEncoder item_size_categories = [['sml', 'med', 'med-lge', 'lge', 'xlge', 'jbo', 'exjbo']] ordinal_features = ['Item Size'] ordinal_encoder = OrdinalEncoder(categories=item_size_categories)
-
ਸ਼੍ਰੇਣੀਬੱਧ ਐਨਕੋਡਰ: ਇਹ ਨਾਮਵਾਚਕ ਵੈਰੀਏਬਲਾਂ ਲਈ ਚੰਗਾ ਹੈ, ਜੋ ਸ਼੍ਰੇਣੀਬੱਧ ਵੈਰੀਏਬਲ ਹਨ ਜਿਨ੍ਹਾਂ ਦੇ ਡਾਟਾ ਦਾ ਲਾਜ਼ਮੀ ਕ੍ਰਮ ਨਹੀਂ ਹੁੰਦਾ, ਜਿਵੇਂ ਕਿ ਸਾਡੇ ਡਾਟਾਸੈਟ ਵਿੱਚ
Item Sizeਤੋਂ ਵੱਖਰੇ ਸਾਰੇ ਫੀਚਰ। ਇਹ ਇੱਕ one-hot ਐਨਕੋਡਿੰਗ ਹੈ, ਜਿਸਦਾ ਅਰਥ ਹੈ ਕਿ ਹਰ ਸ਼੍ਰੇਣੀ ਨੂੰ ਇੱਕ ਬਾਈਨਰੀ ਕਾਲਮ ਦੁਆਰਾ ਦਰਸਾਇਆ ਜਾਂਦਾ ਹੈ: ਐਨਕੋਡ ਕੀਤੀ ਵੈਰੀਏਬਲ 1 ਦੇ ਬਰਾਬਰ ਹੈ ਜੇਕਰ ਕਦੂ ਉਸ Variety ਨਾਲ ਸਬੰਧਿਤ ਹੈ ਅਤੇ 0 ਹੋਰਥਾਂ।from sklearn.preprocessing import OneHotEncoder categorical_features = ['City Name', 'Package', 'Variety', 'Origin'] categorical_encoder = OneHotEncoder(sparse_output=False)
ਫਿਰ, ColumnTransformer ਨੂੰ ਕਈ ਐਨਕੋਡਰਾਂ ਨੂੰ ਇੱਕ ਸਿੰਗਲ ਕਦਮ ਵਿੱਚ ਜੋੜਨ ਅਤੇ ਉਨ੍ਹਾਂ ਨੂੰ ਸਹੀ ਕਾਲਮਾਂ 'ਤੇ ਲਾਗੂ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ।
from sklearn.compose import ColumnTransformer
ct = ColumnTransformer(transformers=[
('ord', ordinal_encoder, ordinal_features),
('cat', categorical_encoder, categorical_features)
])
ct.set_output(transform='pandas')
encoded_features = ct.fit_transform(pumpkins)ਦੂਜੇ ਪਾਸੇ, ਲੇਬਲ ਨੂੰ ਐਨਕੋਡ ਕਰਨ ਲਈ, ਅਸੀਂ scikit-learn LabelEncoder ਕਲਾਸ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਾਂ, ਜੋ ਲੇਬਲਾਂ ਨੂੰ ਸਧਾਰਨ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰਨ ਲਈ ਇੱਕ ਯੂਟਿਲਿਟੀ ਕਲਾਸ ਹੈ ਤਾਂ ਜੋ ਉਹ ਸਿਰਫ਼ 0 ਤੋਂ n_classes-1 (ਇੱਥੇ, 0 ਅਤੇ 1) ਦੇ ਮੁੱਲਾਂ ਨੂੰ ਸ਼ਾਮਲ ਕਰੇ।
from sklearn.preprocessing import LabelEncoder
label_encoder = LabelEncoder()
encoded_label = label_encoder.fit_transform(pumpkins['Color'])ਜਦੋਂ ਸਾਨੂੰ ਫੀਚਰ ਅਤੇ ਲੇਬਲ ਐਨਕੋਡ ਕਰ ਲਏ, ਅਸੀਂ ਉਨ੍ਹਾਂ ਨੂੰ ਇੱਕ ਨਵੇਂ ਡਾਟਾਫਰੇਮ encoded_pumpkins ਵਿੱਚ ਮਿਲਾ ਸਕਦੇ ਹਾਂ।
encoded_pumpkins = encoded_features.assign(Color=encoded_label)✅ Item Size ਕਾਲਮ ਲਈ ਆਰਡਿਨਲ ਐਨਕੋਡਰ ਦੀ ਵਰਤੋਂ ਕਰਨ ਦੇ ਫਾਇਦੇ ਕੀ ਹਨ?
ਹੁਣ ਜਦੋਂ ਅਸੀਂ ਆਪਣੇ ਡਾਟਾ ਨੂੰ ਪ੍ਰੀ-ਪ੍ਰੋਸੈਸ ਕਰ ਲਿਆ ਹੈ, ਅਸੀਂ ਫੀਚਰ ਅਤੇ ਲੇਬਲ ਦੇ ਵਿਚਕਾਰ ਸੰਬੰਧਾਂ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰ ਸਕਦੇ ਹਾਂ ਤਾਂ ਜੋ ਇਹ ਸਮਝ ਸਕੀਏ ਕਿ ਮਾਡਲ ਫੀਚਰ ਦੇ ਆਧਾਰ 'ਤੇ ਲੇਬਲ ਦੀ ਪੇਸ਼ਗੂਈ ਕਿੰਨਾ ਚੰਗਾ ਕਰੇਗਾ।
ਇਸ ਕਿਸਮ ਦੇ ਵਿਸ਼ਲੇਸ਼ਣ ਨੂੰ ਕਰਨ ਦਾ ਸਭ ਤੋਂ ਵਧੀਆ ਤਰੀਕਾ ਡਾਟਾ ਨੂੰ ਪਲਾਟ ਕਰਨਾ ਹੈ। ਅਸੀਂ ਫਿਰ Seaborn catplot ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਾਂਗੇ, Item Size, Variety ਅਤੇ Color ਦੇ ਵਿਚਕਾਰ ਸੰਬੰਧਾਂ ਨੂੰ ਇੱਕ ਸ਼੍ਰੇਣੀਬੱਧ ਪਲਾਟ ਵਿੱਚ ਵਿਜ਼ੁਅਲਾਈਜ਼ ਕਰਨ ਲਈ। ਡਾਟਾ ਨੂੰ ਵਧੀਆ ਪਲਾਟ ਕਰਨ ਲਈ ਅਸੀਂ ਐਨਕੋਡ ਕੀਤੇ Item Size ਕਾਲਮ ਅਤੇ ਅਨਐਨਕੋਡ ਕੀਤੇ Variety ਕਾਲਮ ਦੀ ਵਰਤੋਂ ਕਰਾਂਗੇ।
palette = {
'ORANGE': 'orange',
'WHITE': 'wheat',
}
pumpkins['Item Size'] = encoded_pumpkins['ord__Item Size']
g = sns.catplot(
data=pumpkins,
x="Item Size", y="Color", row='Variety',
kind="box", orient="h",
sharex=False, margin_titles=True,
height=1.8, aspect=4, palette=palette,
)
g.set(xlabel="Item Size", ylabel="").set(xlim=(0,6))
g.set_titles(row_template="{row_name}")ਕਿਉਂਕਿ Color ਇੱਕ ਬਾਈਨਰੀ ਸ਼੍ਰੇਣੀ ਹੈ (ਚਿੱਟਾ ਜਾਂ ਚਿੱਟਾ ਨਹੀਂ), ਇਸਨੂੰ ਵਿਜ਼ੁਅਲਾਈਜ਼ ਕਰਨ ਲਈ 'ਇੱਕ ਵਿਸ਼ੇਸ਼ ਤਰੀਕਾ' ਦੀ ਲੋੜ ਹੈ। ਇਸ ਸ਼੍ਰੇਣੀ ਦੇ ਹੋਰ ਵੈਰੀਏਬਲਾਂ ਨਾਲ ਸੰਬੰਧ ਨੂੰ ਵਿਜ਼ੁਅਲਾਈਜ਼ ਕਰਨ ਦੇ ਹੋਰ ਤਰੀਕੇ ਹਨ।
ਤੁਸੀਂ Seaborn ਪਲਾਟਾਂ ਨਾਲ ਵੈਰੀਏਬਲਾਂ ਨੂੰ ਸਾਈਡ-ਬਾਈ-ਸਾਈਡ ਵਿਜ਼ੁਅਲਾਈਜ਼ ਕਰ ਸਕਦੇ ਹੋ।
- ਮੁੱਲਾਂ ਕਨਫਿਊਜ਼ਨ ਮੈਟ੍ਰਿਕਸ ਪ੍ਰਿਸੀਜ਼ਨ ਅਤੇ ਰੀਕਾਲ ਨਾਲ ਕਿਵੇਂ ਸੰਬੰਧਿਤ ਹੈ? ਯਾਦ ਰੱਖੋ, ਉੱਪਰ ਪ੍ਰਿੰਟ ਕੀਤੀ ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਰਿਪੋਰਟ ਨੇ ਪ੍ਰਿਸੀਜ਼ਨ (0.85) ਅਤੇ ਰੀਕਾਲ (0.67) ਦਿਖਾਈ।
ਪ੍ਰਿਸੀਜ਼ਨ = tp / (tp + fp) = 22 / (22 + 4) = 0.8461538461538461
ਰੀਕਾਲ = tp / (tp + fn) = 22 / (22 + 11) = 0.6666666666666666
✅ ਪ੍ਰਸ਼ਨ: ਕਨਫਿਊਜ਼ਨ ਮੈਟ੍ਰਿਕਸ ਦੇ ਅਨੁਸਾਰ, ਮਾਡਲ ਕਿਵੇਂ ਕਰ ਰਿਹਾ ਹੈ? ਜਵਾਬ: ਬੁਰਾ ਨਹੀਂ; ਸਹੀ ਨੈਗੇਟਿਵਜ਼ ਦੀ ਚੰਗੀ ਗਿਣਤੀ ਹੈ ਪਰ ਕੁਝ ਗਲਤ ਨੈਗੇਟਿਵਜ਼ ਵੀ ਹਨ।
ਆਓ ਉਹ ਸ਼ਬਦਾਵਲੀ ਦੁਬਾਰਾ ਵੇਖੀਏ ਜੋ ਅਸੀਂ ਪਹਿਲਾਂ ਦੇਖੀ ਸੀ, TP/TN ਅਤੇ FP/FN ਦੇ ਕਨਫਿਊਜ਼ਨ ਮੈਟ੍ਰਿਕਸ ਦੇ ਮੈਪਿੰਗ ਦੀ ਮਦਦ ਨਾਲ:
🎓 ਪ੍ਰਿਸੀਜ਼ਨ: TP/(TP + FP) ਰਿਕਵਰ ਕੀਤੇ ਗਏ ਇੰਸਟੈਂਸ ਵਿੱਚੋਂ ਸਬੰਧਤ ਇੰਸਟੈਂਸ ਦਾ ਅੰਸ਼ (ਉਦਾਹਰਣ ਲਈ, ਕਿਹੜੇ ਲੇਬਲ ਚੰਗੀ ਤਰ੍ਹਾਂ ਲੇਬਲ ਕੀਤੇ ਗਏ)
🎓 ਰੀਕਾਲ: TP/(TP + FN) ਸਬੰਧਤ ਇੰਸਟੈਂਸ ਦਾ ਅੰਸ਼ ਜੋ ਰਿਕਵਰ ਕੀਤਾ ਗਿਆ, ਚਾਹੇ ਚੰਗੀ ਤਰ੍ਹਾਂ ਲੇਬਲ ਕੀਤਾ ਗਿਆ ਹੋ ਜਾਂ ਨਹੀਂ
🎓 f1-ਸਕੋਰ: (2 * ਪ੍ਰਿਸੀਜ਼ਨ * ਰੀਕਾਲ)/(ਪ੍ਰਿਸੀਜ਼ਨ + ਰੀਕਾਲ) ਪ੍ਰਿਸੀਜ਼ਨ ਅਤੇ ਰੀਕਾਲ ਦਾ ਵਜ਼ਨੀ ਔਸਤ, ਸਭ ਤੋਂ ਵਧੀਆ 1 ਅਤੇ ਸਭ ਤੋਂ ਖਰਾਬ 0
🎓 ਸਪੋਰਟ: ਹਰ ਲੇਬਲ ਲਈ ਰਿਕਵਰ ਕੀਤੇ ਗਏ ਇੰਸਟੈਂਸ ਦੀ ਗਿਣਤੀ
🎓 ਐਕੁਰੇਸੀ: (TP + TN)/(TP + TN + FP + FN) ਨਮੂਨੇ ਲਈ ਸਹੀ ਤਰੀਕੇ ਨਾਲ ਅਨੁਮਾਨਿਤ ਲੇਬਲਾਂ ਦਾ ਪ੍ਰਤੀਸ਼ਤ।
🎓 ਮੈਕਰੋ ਐਵਰੇਜ: ਹਰ ਲੇਬਲ ਲਈ ਅਣਵਜ਼ਨੀ ਮੀਨ ਮੈਟ੍ਰਿਕਸ ਦੀ ਗਣਨਾ, ਲੇਬਲ ਅਸਮਤਲਤਾ ਨੂੰ ਧਿਆਨ ਵਿੱਚ ਨਾ ਲਿਆਉਂਦੇ ਹੋਏ।
🎓 ਵਜ਼ਨੀ ਐਵਰੇਜ: ਹਰ ਲੇਬਲ ਲਈ ਮੀਨ ਮੈਟ੍ਰਿਕਸ ਦੀ ਗਣਨਾ, ਲੇਬਲ ਅਸਮਤਲਤਾ ਨੂੰ ਧਿਆਨ ਵਿੱਚ ਲਿਆਉਂਦੇ ਹੋਏ, ਉਨ੍ਹਾਂ ਦੇ ਸਪੋਰਟ (ਹਰ ਲੇਬਲ ਲਈ ਸਹੀ ਇੰਸਟੈਂਸ ਦੀ ਗਿਣਤੀ) ਦੁਆਰਾ ਵਜ਼ਨੀ।
✅ ਕੀ ਤੁਸੀਂ ਸੋਚ ਸਕਦੇ ਹੋ ਕਿ ਕਿਹੜੀ ਮੈਟ੍ਰਿਕਸ ਨੂੰ ਦੇਖਣਾ ਚਾਹੀਦਾ ਹੈ ਜੇ ਤੁਸੀਂ ਆਪਣੇ ਮਾਡਲ ਵਿੱਚ ਗਲਤ ਨੈਗੇਟਿਵਜ਼ ਦੀ ਗਿਣਤੀ ਘਟਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ?
🎥 ਉੱਪਰ ਦਿੱਤੀ ਤਸਵੀਰ 'ਤੇ ਕਲਿਕ ਕਰੋ ROC ਕਰਵਜ਼ ਦਾ ਛੋਟਾ ਵੀਡੀਓ ਝਲਕ ਦੇਖਣ ਲਈ
ਆਓ ਇੱਕ ਹੋਰ ਵਿਜੁਅਲਾਈਜ਼ੇਸ਼ਨ ਕਰੀਏ ਤਾਂ ਜੋ 'ROC' ਕਰਵ ਨੂੰ ਵੇਖ ਸਕੀਏ:
from sklearn.metrics import roc_curve, roc_auc_score
import matplotlib
import matplotlib.pyplot as plt
%matplotlib inline
y_scores = model.predict_proba(X_test)
fpr, tpr, thresholds = roc_curve(y_test, y_scores[:,1])
fig = plt.figure(figsize=(6, 6))
plt.plot([0, 1], [0, 1], 'k--')
plt.plot(fpr, tpr)
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('ROC Curve')
plt.show()Matplotlib ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ, ਮਾਡਲ ਦਾ Receiving Operating Characteristic ਜਾਂ ROC ਪਲਾਟ ਕਰੋ। ROC ਕਰਵਜ਼ ਨੂੰ ਅਕਸਰ ਇੱਕ ਕਲਾਸੀਫਾਇਰ ਦੇ ਆਉਟਪੁੱਟ ਨੂੰ ਇਸਦੇ ਸਹੀ ਅਤੇ ਗਲਤ ਪਾਜ਼ਿਟਿਵਜ਼ ਦੇ ਤੌਰ 'ਤੇ ਵੇਖਣ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ। "ROC ਕਰਵਜ਼ ਆਮ ਤੌਰ 'ਤੇ Y ਅਕਸ 'ਤੇ ਸਹੀ ਪਾਜ਼ਿਟਿਵ ਦਰ ਅਤੇ X ਅਕਸ 'ਤੇ ਗਲਤ ਪਾਜ਼ਿਟਿਵ ਦਰ ਦਿਖਾਉਂਦੇ ਹਨ।" ਇਸ ਲਈ, ਕਰਵ ਦੀ ਢਲਾਨ ਅਤੇ ਮਿਡਪੋਇੰਟ ਲਾਈਨ ਅਤੇ ਕਰਵ ਦੇ ਵਿਚਕਾਰ ਦੀ ਜਗ੍ਹਾ ਮਹੱਤਵਪੂਰਨ ਹੈ: ਤੁਸੀਂ ਇੱਕ ਕਰਵ ਚਾਹੁੰਦੇ ਹੋ ਜੋ ਜਲਦੀ ਉੱਪਰ ਅਤੇ ਲਾਈਨ ਤੋਂ ਪਰੇ ਜਾਵੇ। ਸਾਡੇ ਕੇਸ ਵਿੱਚ, ਸ਼ੁਰੂ ਵਿੱਚ ਕੁਝ ਗਲਤ ਪਾਜ਼ਿਟਿਵਜ਼ ਹਨ, ਅਤੇ ਫਿਰ ਲਾਈਨ ਠੀਕ ਢੰਗ ਨਾਲ ਉੱਪਰ ਅਤੇ ਪਰੇ ਚਲੀ ਜਾਂਦੀ ਹੈ:
ਅੰਤ ਵਿੱਚ, Scikit-learn ਦੇ roc_auc_score API ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਸਲ 'Area Under the Curve' (AUC) ਦੀ ਗਣਨਾ ਕਰੋ:
auc = roc_auc_score(y_test,y_scores[:,1])
print(auc)ਨਤੀਜਾ ਹੈ 0.9749908725812341। ਜਿਵੇਂ ਕਿ AUC 0 ਤੋਂ 1 ਤੱਕ ਹੁੰਦੀ ਹੈ, ਤੁਸੀਂ ਇੱਕ ਵੱਡਾ ਸਕੋਰ ਚਾਹੁੰਦੇ ਹੋ, ਕਿਉਂਕਿ ਇੱਕ ਮਾਡਲ ਜੋ ਆਪਣੇ ਅਨੁਮਾਨਾਂ ਵਿੱਚ 100% ਸਹੀ ਹੈ ਉਸਦਾ AUC 1 ਹੋਵੇਗਾ; ਇਸ ਕੇਸ ਵਿੱਚ, ਮਾਡਲ ਕਾਫ਼ੀ ਚੰਗਾ ਹੈ।
ਭਵਿੱਖ ਦੇ ਕਲਾਸੀਫਿਕੇਸ਼ਨ ਪਾਠਾਂ ਵਿੱਚ, ਤੁਸੀਂ ਆਪਣੇ ਮਾਡਲ ਦੇ ਸਕੋਰਾਂ ਨੂੰ ਸੁਧਾਰਨ ਲਈ ਦੁਹਰਾਉਣ ਦੇ ਤਰੀਕੇ ਸਿੱਖੋਗੇ। ਪਰ ਇਸ ਸਮੇਂ ਲਈ, ਵਧਾਈ ਹੋਵੇ! ਤੁਸੀਂ ਇਹ ਰਿਗ੍ਰੈਸ਼ਨ ਪਾਠ ਪੂਰੇ ਕਰ ਲਏ ਹਨ!
ਲੌਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਬਾਰੇ ਬਹੁਤ ਕੁਝ ਸਿੱਖਣ ਲਈ ਹੈ! ਪਰ ਸਿੱਖਣ ਦਾ ਸਭ ਤੋਂ ਵਧੀਆ ਤਰੀਕਾ ਅਨੁਭਵ ਕਰਨਾ ਹੈ। ਇੱਕ ਡਾਟਾਸੈਟ ਲੱਭੋ ਜੋ ਇਸ ਕਿਸਮ ਦੇ ਵਿਸ਼ਲੇਸ਼ਣ ਲਈ ਉਚਿਤ ਹੋਵੇ ਅਤੇ ਇਸ ਨਾਲ ਇੱਕ ਮਾਡਲ ਬਣਾਓ। ਤੁਸੀਂ ਕੀ ਸਿੱਖਦੇ ਹੋ? ਸੁਝਾਅ: ਦਿਲਚਸਪ ਡਾਟਾਸੈਟ ਲਈ Kaggle ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ।
Stanford ਦੇ ਇਸ ਪੇਪਰ ਦੇ ਪਹਿਲੇ ਕੁਝ ਪੰਨੇ ਪੜ੍ਹੋ ਜੋ ਲੌਜਿਸਟਿਕ ਰਿਗ੍ਰੈਸ਼ਨ ਦੇ ਕੁਝ ਵਿਹਾਰਕ ਉਪਯੋਗਾਂ ਬਾਰੇ ਹਨ। ਉਹ ਕੰਮਾਂ ਬਾਰੇ ਸੋਚੋ ਜੋ ਅਸੀਂ ਹੁਣ ਤੱਕ ਪੜ੍ਹੇ ਰਿਗ੍ਰੈਸ਼ਨ ਦੇ ਕਿਸੇ ਇੱਕ ਜਾਂ ਦੂਜੇ ਕਿਸਮ ਲਈ ਵਧੀਆ ਹੋ ਸਕਦੇ ਹਨ। ਕੀ ਸਭ ਤੋਂ ਵਧੀਆ ਕੰਮ ਕਰੇਗਾ?
ਇਸ ਰਿਗ੍ਰੈਸ਼ਨ ਨੂੰ ਦੁਬਾਰਾ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ
ਅਸਵੀਕਤੀ:
ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ Co-op Translator ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀਤਾ ਲਈ ਯਤਨਸ਼ੀਲ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਚਤਤਾਵਾਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਇਸਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ।








