Categories
Bangla Data Science

āϕ⧋-āϰāĻŋāϞ⧇āĻļāύ (Correlation), āĻ•āĻœā§‡āĻļāύ (Causation) āĻ“ āĻĢ⧇āχāϏāĻŦ⧁āϕ⧇āϰ āĻ—āĻ˛ā§āĻĒ

āĻ¸ā§āĻŸā§āϝāĻžāϟāĻŋāĻ¸ā§āϟāĻŋāĻ•ā§āϏ – ā§§ā§Ļā§§ āĻ•āĻŋāĻ‚āĻŦāĻž āĻŦāĻŋāϜāύ⧇āϏ āϰāĻŋāϏāĻžāĻ°ā§āϚ – ā§§ā§Ļā§§ āϕ⧋āĻ°ā§āϏ āϗ⧁āϞ⧋āϤ⧇ āĻāĻ•āϟāĻž āĻĒā§āϰāĻļā§āύ āϖ⧁āĻŦāχ āĻ•āĻŽāύ – “āϕ⧋-āϰāĻŋāϞ⧇āĻļāύāχ āĻ•āĻŋ āĻ•āĻœā§‡āĻļāύ? āωāĻĻāĻžāĻšāϰāύ āϏāĻš āĻŦā§āϝāĻ–ā§āϝāĻž āĻ•āϰ⧋” āĨ¤ āϕ⧋-āϰāĻŋāϞ⧇āĻļāύ āĻĨ⧇āϕ⧇ āφāĻŽāϰāĻž āϜāĻžāύāϤ⧇ āĻĒāĻžāϰāĻŋ āĻĻ⧁āĻŸā§‹ āĻ­ā§āϝāĻžāϰāĻŋā§Ÿā§‡āĻŦāϞ āĻāϰ āĻŽāĻ§ā§āϝ⧇ āϕ⧋āύ “āϕ⧋-āϰāĻŋāϞ⧇āĻļāύāĻļāĻŋāĻĒ” āφāϛ⧇ āĻ•āĻŋāύāĻž āĨ¤

āĻŽāύ⧇ āĻ•āϰāĻŋ num_friends āĻšāĻšā§āϛ⧇ āĻāĻ•āϜāύ āĻŦā§āϝāĻ•ā§āϤāĻŋāϰ āĻĢ⧇āχāϏāĻŦ⧁āĻ• āĻĢā§āϰ⧇āĻ¨ā§āĻĄā§‡āϰ āϏāĻ‚āĻ–ā§āϝāĻž āφāϰ time_spent āĻšāĻšā§āϛ⧇ āϏ⧇āχ āĻŦā§āϝāĻ•ā§āϤāĻŋ āĻĻāĻŋāύ⧇ āĻ•āϤāϟ⧁āϕ⧁ āϏāĻŽā§Ÿ āĻĢ⧇āχāϏāĻŦ⧁āϕ⧇ āĻŦā§āϝ⧟ āĻ•āϰ⧇ āĨ¤ āĻāĻ•āĻĻāĻŋāύ āϏāĻŽā§Ÿ āĻ•āϰ⧇ āφāĻŽāĻŋ āĻŦāĻŋāϜāύ⧇āϏ āĻā§āϝāĻžāĻĄāĻŽāĻŋāύāĻŋāĻ¸ā§āĻŸā§āϰ⧇āĻļāύ āĻĄāĻŋāϏāĻŋāĻĒā§āϞāĻŋāύ⧇āϰ āĻļāĻŋāĻ•ā§āώāĻžāĻ°ā§āĻĨā§€āĻĻ⧇āϰ āωāĻĒāϰ āϜāϰāĻŋāĻĒ āĻ•āϰ⧇ āĻāχ āĻĄāĻžāϟāĻž āĻ•āĻžāϞ⧇āĻ•ā§āϟ āĻ•āϰāĻŋ āĻāĻŦāĻ‚ āϕ⧋-āϰāĻŋāϞ⧇āĻļāύ āύāĻŋāĻ°ā§āύ⧟ āĻ•āϰāĻŋ āĨ¤ āĻĻ⧇āĻ–āĻž āϗ⧇āϞ⧋ āĻāχ āĻ­ā§āϝāĻžāϰāĻŋā§Ÿā§‡āĻŦāϞ āĻĻ⧁āϟāĻŋ āĻĒāϜāĻŋāϟāĻŋāĻ­āϞāĻŋ āϕ⧋-āϰāĻŋāϞ⧇āĻŸā§‡āĻĄ āĨ¤ āϤāĻžāϰ āĻŽāĻžāύ⧇ āϝāĻžāĻĻ⧇āϰ āĻĢ⧇āχāϏāĻŦ⧁āϕ⧇ āĻĢā§āϰ⧇āĻ¨ā§āĻĄ āϏāĻ‚āĻ–ā§āϝāĻž āĻŦ⧇āĻļā§€, āϤāĻžāϰāĻž āĻĢ⧇āχāϏāĻŦ⧁āϕ⧇ āĻŦ⧇āĻļā§€ āϏāĻŽā§Ÿ āĻ•āĻžāϟāĻžā§Ÿ āĨ¤

āϏāĻŽāĻ¸ā§āϝāĻž āĻšāϞ⧋, āĻāχ āϘāϟāύāĻžāϰ āĻĒāĻŋāĻ›āύ⧇ ā§Š āϧāϰāύ⧇āϰ āĻ•āĻžāϰāύ āĻĨāĻžāĻ•āϤ⧇ āĻĒāĻžāϰ⧇:

(ā§§) āϝāĻžāĻĻ⧇āϰ āĻĢā§āϰ⧇āĻ¨ā§āĻĄ āϏāĻ‚āĻ–ā§āϝāĻž āĻŦ⧇āĻļā§€, āϤāĻžāϰāĻž āĻĢā§āϰ⧇āĻ¨ā§āĻĄāĻĻ⧇āϰ āĻĒā§‹āĻ¸ā§āϟ, āĻ›āĻŦāĻŋ, āĻ•āĻŽā§‡āĻ¨ā§āϟ āĻĒ⧜āĻžāϰ āϜāĻ¨ā§āϝ āĻĢ⧇āχāϏāĻŦ⧁āϕ⧇ āĻŦ⧇āĻļā§€ āϏāĻŽā§Ÿ āĻŦā§āϝ⧟ āĻ•āϰ⧇ (“num_friends” causes “time_spent”)

(⧍) āϝāĻžāϰāĻž āĻĢ⧇āχāϏāĻŦ⧁āϕ⧇ āĻŦ⧇āĻļā§€ āϏāĻŽā§Ÿ āĻ•āĻžāϟāĻžā§Ÿ āϤāĻžāϰāĻž āĻĢāĻŸā§‹āĻ—ā§āϰāĻžāĻĢāĻŋ āĻ—ā§āϰ⧁āĻĒ, āĻĢ⧁āĻĄāĻŋāϜ āĻ—ā§āϰ⧁āĻĒ, āύāĻŋāĻœā§‡āϰ āĻ•ā§āϞāĻžāϏ⧇āϰ āĻ—ā§āϰ⧁āĻĒ, āĻĄāĻŋāϏāĻŋāĻĒā§āϞāĻŋāύ⧇āϰ āĻ—ā§āϰ⧁āĻĒ – āύāĻžāύāĻž āĻ—ā§āϰ⧁āĻĒ⧇ āĻŽāϤāĻžāĻŽāϤ āĻļā§‡ā§ŸāĻžāϰ āĻ•āϰ⧇ āĨ¤ āĻāϰāĻĢāϞ⧇ āϏāĻŽāĻŽāύāĻž āĻ…āύ⧇āĻ• āĻŽāĻžāύ⧁āώ⧇āϰ āϏāĻžāĻĨ⧇ āĻŦāĻ¨ā§āϧ⧁āĻ¤ā§āĻŦ āĻšā§Ÿ āĨ¤ (“time_spent” causes “num_friends”)

(ā§Š) āĻāϰāĻž āĻĢ⧇āχāϏāĻŦ⧁āϕ⧇ āĻŦ⧇āĻļā§€ āϏāĻŽā§Ÿ āĻ•āĻžāϟāĻžāύ āĻŦ⧟āĻĢā§āϰ⧇āĻ¨ā§āĻĄ āĻŦāĻž āĻ—āĻžāĻ°ā§āϞāĻĢā§āϰ⧇āĻ¨ā§āĻĄā§‡āϰ āϏāĻžāĻĨ⧇ āĻšā§āϝāĻžāϟ āĻ•āϰ⧇ āφāϰ āĻĢā§āϰ⧇āĻ¨ā§āĻĄ āĻā§āϝāĻžāĻĄ āĻ•āϰ⧇āύ āĻĄāĻŋāϏāĻŋāĻĒā§āϞāĻŋāύ⧇āϰ āϏāĻŋāύāĻŋ⧟āϰ āϜ⧁āύāĻŋ⧟āϰ āϏāĻŦāĻžāχāϕ⧇ āĨ¤ (none causes the other)

āĻāĻ–āύ āϝ⧇āĻšā§‡āϤ⧁ āφāĻŽāϰāĻž āύāĻŋāĻļā§āϚāĻŋāϤ āύāĻž āĻāχ ā§ŠāϟāĻŋ āϘāϟāύāĻžāϰ āϕ⧋āύāϟāĻŋ āϘāϟāϛ⧇ āĨ¤ āϤāĻžāχ āϕ⧋āϰāĻŋāϞ⧇āĻļāύ āĻŽāĻžāύ⧇āχ āϝ⧇ āĻ•āĻœā§‡āĻļāύ – āĻāχ āϧāĻžāϰāύāĻž āφāĻŽāĻžāĻĻ⧇āϰ āύāĻžāĻ•āϚ āĻ•āϰ⧇ āĻĻāĻŋāϤ⧇ āĻšā§Ÿ āĨ¤ āĻāĻŦāĻ‚ āĻāϟāĻž āφāĻŽāϰāĻž āϏ⧁āĻ¨ā§āĻĻāϰ āĻ•āϰ⧇ āĻĒāϰ⧀āĻ•ā§āώāĻžāϰ āĻ–āĻžāϤāĻžā§Ÿ āĻŦā§āϝāĻ–ā§āϝāĻž āĻ•āϰ⧇ āύāĻžāĻŽā§āĻŦāĻžāϰ āĻĒāĻžāχ āĨ¤ āϤāĻžāχ āĻāϰ āĻŦ⧇āĻļā§€ āφāĻŽāĻžāĻĻ⧇āϰ āϚāĻŋāĻ¨ā§āϤāĻž āĻ•āϰāĻž āĻšā§Ÿā§‡ āωāϠ⧇ āύāĻž āĨ¤

āĻ…āĻ¨ā§āϝāĻĻāĻŋāϕ⧇ āĻĢ⧇āχāϏāĻŦ⧁āϕ⧇āϰ āĻŦ⧇āϤāύāϭ⧁āĻ•ā§āϤ āĻĄāĻžāϟāĻž āϏāĻžā§Ÿā§‡āĻ¨ā§āϟāĻŋāĻ¸ā§āϟāϰāĻž āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻāϤ āϏāĻšāĻœā§‡ āĻĒāĻžāϰ āĻĒāĻžāύ āύāĻž āĨ¤ āϤāĻžāĻĻ⧇āϰ āϟāĻžāĻ°ā§āϗ⧇āϟ āφāĻŽāĻžāĻĻ⧇āϰ āĻ¸ā§āϟ⧁āĻĄā§‡āĻ¨ā§āϟāĻĻ⧇āϰāϕ⧇ āĻŦ⧇āĻļā§€ āϏāĻŽā§Ÿ āĻĢ⧇āχāϏāĻŦ⧁āϕ⧇ āφāϟāϕ⧇ āϰāĻžāĻ–āĻž, āĻāϜāĻ¨ā§āϝ āĻāϟāĻž āύāĻŋā§Ÿā§‡ āϤāĻžāĻĻ⧇āϰ āĻŦāĻŋāĻļāĻžāϞ āĻŽāĻžāĻĨāĻž āĻŦā§āϝāĻĨāĻž āĨ¤ āϤāĻžāϰāĻž āϜāĻžāύāϤ⧇ āϚāĻžā§Ÿ āĻŦāĻŋāĻ āĻĄāĻŋāϏāĻŋāĻĒā§āϞāĻŋāύ⧇āϰ āĻāχ āϕ⧋-āϰāĻŋāϞ⧇āĻļāύ⧇āϰ āĻĒāĻŋāĻ›āύ⧇ āφāϏāϞ āϘāϟāύāĻž āĻ•āĻŋ āĨ¤ āϤāĻžāϰāĻž āĻĄāĻŋāϏāĻŋāĻĒā§āϞāĻŋāύ⧇āϰ āĻ¸ā§āϟ⧁āĻĄā§‡āĻ¨ā§āϟāĻĻ⧇āϰ āĻĨ⧇āϕ⧇ āĻ°â€ā§āϝāĻžāĻ¨ā§āĻĄāĻŽ āϏāĻžāĻŦāϏ⧇āϟ āύāĻŋā§Ÿā§‡ āϤāĻžāĻĻ⧇āϰ āωāĻĒāϰ āĻāĻ•ā§āϏāĻĒ⧇āϰāĻŋāĻŽā§‡āĻ¨ā§āϟ āϚāĻžāϞāĻžā§Ÿ – āϤāĻžāĻĻ⧇āϰ āύāĻŋāωāϜāĻĢāĻŋāĻĄ āĻ•āĻžāĻ¸ā§āĻŸā§‹āĻŽāĻžāχāϜ āĻ•āϰ⧇ āĻĢ⧇āϞ⧇ āĻāĻŦāĻ‚ ⧍ āϧāϰāύ⧇āϰ āĻŸā§‡āĻ¸ā§āϟ āϚāĻžāϞāĻžā§Ÿ –

(ā§§) āĻ•āĻŋāϛ⧁ āϞ⧋āĻ•āϜāύāϕ⧇ āĻŦā§āϝāĻžāĻĄ āĻāϰ āύ⧇āϟāĻ“ā§ŸāĻžāĻ°ā§āĻ• āĻĨ⧇āϕ⧇ āĻĒā§‹āĻ¸ā§āϟ āĻĻ⧇āĻ–āĻžāύ⧋ āĻ•āĻŽāĻŋā§Ÿā§‡ āĻĻā§‡ā§Ÿ āĨ¤ āĻ•āĻŋāϛ⧁ āϞ⧋āĻ•āϜāύāϕ⧇ āĻŦ⧇āĻļā§€ āĻĒā§‹āĻ¸ā§āϟ āĻĻ⧇āĻ–āĻžāύ⧋ āĻļ⧁āϰ⧁ āĻ•āϰ⧇ āĨ¤

(⧍) āĻ•āĻŋāϛ⧁ āϞ⧋āĻ•āϜāύāϕ⧇ āĻŦ⧇āĻļā§€ āĻŦ⧇āĻļā§€ āĻŦā§āϝāĻžāĻĄ āĻāϰ āϏāĻŋāύāĻŋ⧟āϰ, āϜ⧁āύāĻŋ⧟āϰāĻĻ⧇āϰ āĻĢā§āϰ⧇āĻ¨ā§āĻĄ āϰāĻŋāĻ•ā§ā§Ÿā§‡āĻ¸ā§āϟ āϏāĻžāĻœā§‡āĻ¸ā§āϟ āĻ•āϰāϤ⧇ āĻĨāĻžāϕ⧇, āĻ•āĻŋāϛ⧁ āϞ⧋āĻ•āϜāύāϕ⧇ āĻ•āĻŽāĻŋā§Ÿā§‡ āĻĻā§‡ā§Ÿ āĨ¤

āϝ⧇āĻšā§‡āϤ⧁ āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āĻ•āĻ˛ā§āĻĒāĻŋāϤ āϘāϟāύāĻž āϏ⧇āĻšā§‡āϤ⧁ āĻāχ āĻŸā§‡āĻ¸ā§āĻŸā§‡āϰ āĻĢāϞāĻžāĻĢāϞ āφāĻŽāĻžāϰ āϜāĻžāύāĻž āύ⧇āχ āĨ¤ āϤāĻŦ⧇ āĻĒā§āϰāĻĨāĻŽ āĻāĻŦāĻ‚ āĻĻā§āĻŦāĻŋāĻ¤ā§€ā§Ÿ āĻŸā§‡āĻ¸ā§āϟ āĻĨ⧇āϕ⧇ āĻ•āĻŋāϛ⧁āϟāĻž “āĻ•āύāĻĢāĻŋāĻĄā§‡āĻ¨ā§āϏ” āĻĒāĻžāĻ“ā§ŸāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇ āĨ¤ āϝāĻĻāĻŋ āĻĒā§āϰāĻĨāĻŽ āĻŸā§‡āĻ¸ā§āĻŸā§‡ āĻĻ⧇āĻ–āĻž āϝāĻžā§Ÿ āϝ⧇ āĻŦ⧇āĻļā§€ āĻĒā§‹āĻ¸ā§āϟ āĻĻ⧇āĻ–āĻžāύ⧋āϰ āĻ•āĻžāϰāύ⧇ āϞ⧋āĻ•āϜāύ āĻŦ⧇āĻļā§€ āϏāĻŽā§Ÿ āĻ•āĻžāϟāĻžāĻšā§āϛ⧇, āφāϰ āĻĒā§‹āĻ¸ā§āϟ āĻ•āĻŽāĻŋā§Ÿā§‡ āĻĻ⧇āĻ“ā§ŸāĻžāϰ āĻ•āĻžāϰāύ⧇ āĻ•āĻŽ āϏāĻŽā§Ÿ āĻ•āĻžāϟāĻžāĻšā§āϛ⧇ āϤāĻžāĻšāϞ⧇ āφāĻŽāϰāĻž āĻ•āĻŋāϛ⧁āϟāĻž āφāχāĻĄāĻŋ⧟āĻž āĻĒāĻžāχ āϝ⧇ āφāϏāϞ⧇ num_friends causes time_spent āĻ…āĻ¨ā§āϝāĻĻāĻŋāϕ⧇ āĻĻā§āĻŦāĻŋāĻ¤ā§€ā§Ÿ āĻŸā§‡āĻ¸ā§āϟ āĻĨ⧇āϕ⧇ āφāĻŽāϰāĻž āĻāϰ āωāĻ˛ā§āĻŸā§‹āϟāĻž āϜāĻžāύāϤ⧇ āĻĒāĻžāϰāĻŋ āĨ¤ āφāϰ āĻĻ⧁āĻŸā§‹ āĻŸā§‡āĻ¸ā§āĻŸā§‡āχ āϝāĻĻāĻŋ āύ⧇āϗ⧇āϟāĻŋāĻ­ āϰ⧇āϜāĻžāĻ˛ā§āϟ āĻĒāĻžāχ, āϤāĻžāĻšāϞ⧇ āĻĢ⧇āχāϏāĻŦ⧁āϕ⧇āϰ āϰāĻŋāϏāĻžāĻ°ā§āϚ āĻŸā§€āĻŽā§‡āϰ āĻ•āĻžāϜ āφāϰāĻ“ āĻŦā§‡ā§œā§‡ āϗ⧇āϞ⧋ āĨ¤ ā§Šā§Ÿ āĻ•āĻŋ āϘāϟāύāĻž āϘāϟāϤ⧇ āĻĒāĻžāϰ⧇ āĻāϟāĻž āύāĻŋā§Ÿā§‡ āĻāĻ–āύ āϤāĻžāĻĻ⧇āϰ āϚ⧁āϞāĻšā§‡āϰāĻž āĻŦāĻŋāĻļā§āϞ⧇āώāύ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āĨ¤

āϏāĻšāϜ āĻ•āĻĨāĻžā§Ÿ, āϕ⧋āϰāĻŋāϞ⧇āĻļāύ āύāĻŋāĻļā§āϚāĻŋāϤāĻ­āĻžāĻŦ⧇ āĻ•āĻœā§‡āĻļāύ āĻŽāĻŋāύ āĻ•āϰ⧇ āύāĻž, āϤāĻŦ⧇ āĻŸā§‹āϟāĻžāϞ āĻĒāĻĒ⧁āϞ⧇āĻļāύ⧇āϰ āĻ°â€ā§āϝāĻžāĻ¨ā§āĻĄāĻŽ āϏāĻžāĻŦāϏ⧇āϟ āύāĻŋā§Ÿā§‡ āĻ•āĻŋāϛ⧁ āĻŸā§‡āĻ¸ā§āϟ āĻ•āϰ⧇ āϕ⧋āϰāĻŋāϞ⧇āĻļāύ⧇āϰ āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ āĻ•āĻœā§‡āĻļāύāĻ“ āφāϛ⧇ āĻ•āĻŋāύāĻž āϏ⧇ āĻŦā§āϝāĻžāĻĒāĻžāϰ⧇ āφāχāĻĄāĻŋ⧟āĻž āĻĒāĻžāĻ“ā§ŸāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇ āĨ¤

āĻĒ⧁āύāĻļā§āϚ: āφāĻŽāĻžāϰ āĻāχ āωāĻĻāĻžāĻšāϰāύ āϏāĻŽā§āĻĒā§‚āĻ°ā§āύ āĻŦāĻžāĻ¨ā§‹ā§ŸāĻžāϟ āĻšāϞ⧇āĻ“ āĻĢ⧇āχāϏāĻŦ⧁āĻ• āϤāĻžāϰ āύāĻŋāωāϜāĻĢāĻŋāĻĄ āύāĻŋā§Ÿā§‡ āĻāĻ•ā§āϏ⧇āĻĒ⧇āϰāĻŋāĻŽā§‡āĻ¨ā§āϟ āĻ•āϰ⧇āϛ⧇ āĻāĻŦāĻ‚ āϏ⧇āϟāĻžāϰ āχāĻĨāĻŋāĻ•ā§āϝāĻžāϞ āĻĻāĻŋāĻ• āύāĻŋā§Ÿā§‡ āφāϞ⧋āϚāύāĻž āϏāĻŽāĻžāϞ⧋āϚāύāĻžāĻ“ āĻšā§Ÿā§‡āϛ⧇ āĻ…āύ⧇āĻ• āĨ¤

āϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏ: http://www.nytimes.com/2014/06/30/technology/facebook-tinkers-with-users-emotions-in-news-feed-experiment-stirring-outcry.html?_r=1

Categories
Django Python

Django REST Framework: Custom Exception Handler

While using DRF, do you need to handle the exceptions yourselves? Here’s how to do it. First, we need to create an exception handler function like this:

In the exception handler, we get exc which is the exception raised and the context contains the context of the request. However, we didn’t do anything fancy with these. We just called the default exception handler and joined the errors in a flat string. We also added the exception to our response.

Now, we need to tell DRF to call our custom exception handler when it comes across an exception. That is easy:

Open up your settings.py and look for the REST_FRAMEWORK dictionary. Here you need to add the exception handler to the EXCEPTION_HANDLER key. So it should look something like this:

Categories
Django Python

Django: Handling broken migrations

Often for one reason or another, migrations don’t apply properly and we have to fix them manually. If there’s a faulty migration that throws errors when run, we first have to identify what went wrong. Very often on MySQL, we see half applied migrations (probably because MySQL doesn’t have transactions?). In this case we need to do the other half ourselves.

We can easily connect to the database prompt by typing the dbshell command.

The command opens the shell for the respective database engine using the configurations provided in the settings file. That is you don’t have to remember the username or password for the database connection.

Now you have to fix the issues and then you can try running the migration again. In case it fails again, you should alter the database to match the state the migration would have created. For example, if the migration was supposed to alter a column from store_type to store_type_id (from a char field to foreign keys), you have to manually run the query, something like:

Then you have to fake the migration. When a migration is run, Django stores the name of the migration in a table. It helps track which migrations have already run and which needs to be run. When we fake a migration, Django stores the faked migration name in that table without actually running it. If we don’t do this, when we next run migrate command, Django will try to run this migration again and fail.

This is how we fake it:

You can also specify one particular migration when you have multiple migrations running.