- ÇöÀç À§Ä¡
- home > ÄÄÇ»ÅÍ¡¤ICT¡¤¾îÇÐ > ÄÄÇ»ÅÍ¡¤IT µµ¼ > ÇÁ·Î±×·¡¹Ö/¾ð¾î > ÆÄÀ̽㠰´Ã¼ÁöÇâ ÇÁ·Î±×·¡¹Ö 4/e[¿¡ÀÌÄÜÃâÆÇ]
°´Ã¼ÁöÇâÀÇ ±âº» °³³äºÎÅÍ ½ÃÀÛÇØ °´Ã¼ÁöÇâ µðÀÚÀÎÀ» Æ÷°ýÀûÀ¸·Î ´Ù·é´Ù. ŸÀÔ ÈùÆ®¸¦ »ç¿ëÇÏ´Â ¹æ¹ý, Ŭ·¡½ºµé °£ÀÇ ´Ù¾çÇÑ °ü°è¸¦ È°¿ëÇØ¾ß ÇÒ ½Ã±â¿Í ¹æ¹ý, Ãß»óÈ ¹× ÆÄÀ̽㠵¥ÀÌÅÍ ±¸Á¶¸¦ ÅëÇØ µðÀÚÀÎÀ» ´Ü¼øÈÇÒ ¼ö ÀÖ´Â ±â¹ý, ºü¸£°í È¿À²ÀûÀÎ ÆÄÀ̽ãÀÇ ³»Àå Ä÷º¼ÇÀ» ´Ù·ç´Â ÀÌÅÍ·¹ÀÌÅÍ ÆÐÅÏ, ±×¸®°í 12°¡Áö °í±Þ µðÀÚÀÎ ÆÐÅÏÀ¸·Î °ß°íÇÑ ¾ÖÇø®ÄÉÀ̼ÇÀ» °³¹ßÇÏ´Â ¹æ¹ý µîÀ» ÈǸ¢ÇÑ ¿¹Á¦·Î ¹è¿ï ¼ö ÀÖ´Ù. ¶ÇÇÑ ÆÄÀ̽㠾ÖÇø®ÄÉÀ̼ÇÀ» ÀÚµ¿ÈµÈ ´ÜÀ§ Å×½ºÆ® ¸ðµâ°ú ¸ðÀÇ °´Ã¼¸¦ »ç¿ëÇØ ½±°Ô Å×½ºÆ®ÇÒ ¼ö ÀÖ´Â °í±Þ Å×½ºÆ® ±â¹ýµµ ¹è¿ï ¼ö ÀÖ´Ù. ¸¶Áö¸·À¸·Î °´Ã¼ÁöÇâ µðÀÚÀÎÀ» È°¿ëÇØ µ¿½Ã¼º ÇÁ·Î±×·¡¹Ö ±â¼úÀ» »ç¿ëÇÏ´Â ¹æ¹ýÀ» º¸¿©ÁØ´Ù.
ÀúÀÚ: ½ºÆ¼ºì ·ÎÆ®
1Àå. °´Ã¼ÁöÇâ µðÀÚÀÎ
2Àå. ÆÄÀ̽ãÀÇ °´Ã¼
3Àå. °´Ã¼°¡ À¯»çÇÑ °æ¿ì
4Àå. ¿¹»óÄ¡ ¸øÇÑ »óȲÀ» ¿¹»óÇϱâ
5Àå. °´Ã¼ÁöÇâ ÇÁ·Î±×·¡¹ÖÀÇ »ç¿ë ½Ã±â
6Àå. Ãß»ó ±âº» Ŭ·¡½º¿Í ¿¬»êÀÚ ¿À¹ö·Îµù
7Àå. ÆÄÀ̽㠵¥ÀÌÅÍ ±¸Á¶
8Àå. °´Ã¼ÁöÇâ°ú ÇÔ¼öÇü ÇÁ·Î±×·¡¹ÖÀÇ ±³Â÷Á¡
9Àå. ¹®ÀÚ¿, Á÷·ÄÈ, ÆÄÀÏ °æ·Î
10Àå. ÀÌÅÍ·¹ÀÌÅÍ ÆÐÅÏ
11Àå. ÀÏ¹Ý µðÀÚÀÎ ÆÐÅÏ
12Àå. °í±Þ µðÀÚÀÎ ÆÐÅÏ
13Àå. °´Ã¼ÁöÇâ ÇÁ·Î±×·¥ Å×½ºÆ®
14Àå. µ¿½Ã¼º
2Àå. ÆÄÀ̽ãÀÇ °´Ã¼
3Àå. °´Ã¼°¡ À¯»çÇÑ °æ¿ì
4Àå. ¿¹»óÄ¡ ¸øÇÑ »óȲÀ» ¿¹»óÇϱâ
5Àå. °´Ã¼ÁöÇâ ÇÁ·Î±×·¡¹ÖÀÇ »ç¿ë ½Ã±â
6Àå. Ãß»ó ±âº» Ŭ·¡½º¿Í ¿¬»êÀÚ ¿À¹ö·Îµù
7Àå. ÆÄÀ̽㠵¥ÀÌÅÍ ±¸Á¶
8Àå. °´Ã¼ÁöÇâ°ú ÇÔ¼öÇü ÇÁ·Î±×·¡¹ÖÀÇ ±³Â÷Á¡
9Àå. ¹®ÀÚ¿, Á÷·ÄÈ, ÆÄÀÏ °æ·Î
10Àå. ÀÌÅÍ·¹ÀÌÅÍ ÆÐÅÏ
11Àå. ÀÏ¹Ý µðÀÚÀÎ ÆÐÅÏ
12Àå. °í±Þ µðÀÚÀÎ ÆÐÅÏ
13Àå. °´Ã¼ÁöÇâ ÇÁ·Î±×·¥ Å×½ºÆ®
14Àå. µ¿½Ã¼º
¢Â ÀÌ Ã¥¿¡¼ ´Ù·ç´Â ³»¿ë ¢Â
¡ß Ŭ·¡½º »ý¼º ¹× ¸Þ¼µå Á¤ÀǸ¦ ÅëÇÑ ÆÄÀ̽㠰´Ã¼ ±¸Çö
¡ß »ó¼ÓÀ» »ç¿ëÇÑ Å¬·¡½º ±â´É È®Àå
¡ß ¿¹¿Ü¸¦ »ç¿ëÇÑ ºñÁ¤»óÀûÀÎ »óȲ ó¸®
¡ß °´Ã¼ÁöÇâ ±â´ÉÀ» »ç¿ëÇØ¾ß ÇÒ ¶§¿Í »ç¿ëÇÏÁö ¸»¾Æ¾ß ÇÒ ¶§¿¡ ´ëÇÑ ÀÌÇØ
¡ß ³Î¸® »ç¿ëµÇ´Â ¸î °¡Áö µðÀÚÀÎ ÆÐÅÏ°ú ±¸Çö
¡ß ´ÜÀ§ ¹× ÅëÇÕ Å×½ºÆ®ÀÇ ´Ü¼ø¼º ¹ß°ß ¹× Å×½ºÆ®ÀÇ Á߿伺
¡ß µ¿Àû Äڵ忡 ´ëÇÑ Á¤Àû ŸÀÔ Ã¼Å© ¹æ¹ý
¡ß asyncio¸¦ ÀÌ¿ëÇÑ µ¿½Ã¼º ÇÁ·Î±×·¡¹Ö ¹× ÇÁ·Î±×·¥ ¼Óµµ Çâ»ó ¹æ¹ý
¢Â ÀÌ Ã¥ÀÇ ´ë»ó µ¶ÀÚ ¢Â
ÀÌ Ã¥Àº ÆÄÀ̽ãÀÇ °´Ã¼ÁöÇâ ÇÁ·Î±×·¡¹ÖÀ» óÀ½ Á¢ÇÏ´Â µ¶ÀÚ¸¦ ´ë»óÀ¸·Î ÇÑ´Ù. ÆÄÀ̽㿡 ´ëÇÑ ±âÃÊ Áö½ÄÀÌ ÀÖ´Ù°í °¡Á¤ÇÑ´Ù. ´Ù¸¥ °´Ã¼ÁöÇâ ÇÁ·Î±×·¡¹Ö ¾ð¾î¿¡ ´ëÇÑ ¹è°æ Áö½ÄÀÌ ÀÖ´Â µ¶ÀÚ¸¦ À§ÇØ ÆÄÀ̽ãÀÇ Á¢±Ù ¹æ½ÄÀÌ °®´Â µ¶Æ¯ÇÑ Æ¯Â¡À» ¼³¸íÇÒ °ÍÀÌ´Ù.
µ¥ÀÌÅÍ °úÇÐ ¹× µ¥ÀÌÅÍ ºÐ¼®¿¡¼ ÆÄÀ̽ãÀ» ¸¹ÀÌ »ç¿ëÇϱ⠶§¹®¿¡ °ü·Ã ¼öÇаú Åë°è °³³äµµ ´Ù·é´Ù. ÀÌ ºÐ¾ßÀÇ Áö½ÄÀº °³³äÀ» º¸´Ù ±¸Ã¼ÀûÀ¸·Î Àû¿ëÇÏ´Â µ¥ µµ¿òÀÌ µÉ ¼ö ÀÖ´Ù.
¢Â ÀÌ Ã¥ÀÇ ±¸¼º ¢Â
ÀÌ Ã¥Àº ÀüüÀûÀ¸·Î ³× ºÎºÐÀ¸·Î ±¸¼ºµÅ ÀÖ´Ù. óÀ½ ¿©¼¸ °³ÀÇ ÀåÀº °´Ã¼ÁöÇâ ÇÁ·Î±×·¡¹ÖÀÇ ÇÙ½É ¿ø¸®¿Í °³³äÀ» ¼³¸íÇϸç ÆÄÀ̽㿡¼ ÀÌ °³³äµéÀÌ ¾î¶»°Ô ±¸ÇöµÇ´ÂÁö¸¦ ¼³¸íÇÑ´Ù. ´ÙÀ½ ¼¼ °³ÀÇ Àå¿¡¼´Â °´Ã¼ÁöÇâ ÇÁ·Î±×·¡¹ÖÀÇ ·»Á ÅëÇØ ÆÄÀ̽㠳»Àå ±â´ÉÀ» ÀÚ¼¼È÷ »ìÆ캻´Ù. 10Àå, 11Àå, 12Àå¿¡¼´Â ¿©·¯ °¡Áö µðÀÚÀÎ ÆÐÅÏ°ú ÀÌ°ÍÀ» ÆÄÀ̽㿡¼ ó¸®ÇÏ´Â ¹æ¹ýÀ» »ìÆ캻´Ù. ¸¶Áö¸· ºÎºÐ¿¡¼´Â Å×½ºÆ®¿Í µ¿½Ã¼ºÀ» ´Ù·é´Ù.
1Àå ¡®°´Ã¼ÁöÇâ µðÀÚÀΡ¯¿¡¼´Â °´Ã¼ÁöÇâ µðÀÚÀÎÀÇ ±âÃÊ°¡ µÇ´Â ÇÙ½É °³³äÀ» ¼Ò°³ÇÑ´Ù. »óÅÂ¿Í µ¿ÀÛ, ¼Ó¼º°ú ¸Þ¼µå, °´Ã¼¸¦ Ŭ·¡½º·Î ±×·ìÈÇÏ´Â ¹æ¹ý µî¿¡ ´ëÇÑ ¾ÆÀ̵ð¾î¸¦ ÅëÇØ ·Îµå¸ÊÀ» Á¦°øÇÑ´Ù. ĸ½¶È, »ó¼Ó ¹× ±¸¼º °ü°èµµ »ìÆ캼 °ÍÀÌ´Ù. »ç·Ê ¿¬±¸¿¡¼´Â k-ÃÖ±ÙÁ¢ ÀÌ¿ô(k-NN, k-Nearest Neighbors) ºÐ·ù±â¸¦ ±¸ÇöÇÏ´Â ¸Ó½Å·¯´× ¹®Á¦¸¦ ¼Ò°³ÇÑ´Ù.
2Àå ¡®ÆÄÀ̽ãÀÇ °´Ã¼¡¯¿¡¼´Â ÆÄÀ̽㿡¼ Ŭ·¡½º Á¤ÀÇ°¡ ¾î¶»°Ô µ¿ÀÛÇÏ´ÂÁö º¸¿©ÁØ´Ù. ¿©±â¿¡´Â ŸÀÔ ÈùÆ®(type hints)¶ó°í ºÒ¸®´Â ŸÀÔ ÁÖ¼®(type annotations), Ŭ·¡½º Á¤ÀÇ, ¸ðµâ, ÆÐÅ°Áö µîÀÌ Æ÷ÇԵȴÙ. Ŭ·¡½º Á¤ÀÇ ¹× ĸ½¶È¿¡ ´ëÇÑ ½Ç¹«ÀûÀÎ °í·Á»çÇ×À» ¾Ë·ÁÁØ´Ù. »ç·Ê ¿¬±¸¿¡¼´Â k-NN ºÐ·ù±âÀÇ ÀϺΠŬ·¡½º¸¦ ±¸ÇöÇغ»´Ù.
3Àå ¡®°´Ã¼°¡ À¯»çÇÑ °æ¿ì¡¯¿¡¼´Â Ŭ·¡½ºµéÀÌ ¼·Î ¾î¶»°Ô ¿¬°üµÅ ÀÖ´ÂÁö ¼³¸íÇÑ´Ù. ¿©±â¿¡´Â »ó¼Ó ¹× ´ÙÁß »ó¼ÓÀÇ »ç¿ë¹ýÀÌ Æ÷ÇԵȴÙ. Ŭ·¡½º °èÃþ ±¸Á¶¿¡¼ Ŭ·¡½º °£ÀÇ ´ÙÇü¼º °³³äÀ» »ìÆ캼 °ÍÀÌ´Ù. »ç·Ê ¿¬±¸¿¡¼´Â °¡Àå °¡±î¿î ÀÌ¿ôÀ» ã´Â µ¥ »ç¿ëµÇ´Â °Å¸® °è»êÀ» À§ÇÑ ¸î °¡Áö µðÀÚÀÎÀ» »ìÆ캼 °ÍÀÌ´Ù.
4Àå, ¡®¿¹»óÄ¡ ¸øÇÑ »óȲÀ» ¿¹»óÇϱ⡯¿¡¼´Â ÆÄÀ̽ãÀÇ ¿¹¿Ü¿Í ¿¹¿Ü 󸮿¡ ´ëÇØ ÀÚ¼¼È÷ »ìÆ캻´Ù. ³»Àå ¿¹¿ÜÀÇ °èÃþ ±¸Á¶µµ ´Ù·é´Ù. ¶ÇÇÑ °íÀ¯ÇÑ ¹®Á¦ µµ¸ÞÀÎÀ̳ª ¾ÖÇø®ÄÉÀ̼ÇÀ» ¹Ý¿µÇϱâ À§ÇØ °íÀ¯ÇÑ ¿¹¿Ü¸¦ Á¤ÀÇÇÏ´Â ¹æ¹ýµµ »ìÆ캼 °ÍÀÌ´Ù. »ç·Ê ¿¬±¸¿¡¼´Â µ¥ÀÌÅÍ À¯È¿¼º °Ë»ç¿¡ ¿¹¿Ü¸¦ Àû¿ëÇÑ´Ù.
5Àå ¡®°´Ã¼ÁöÇâ ÇÁ·Î±×·¡¹ÖÀÇ »ç¿ë ½Ã±â¡¯¿¡¼´Â µðÀÚÀÎ ±â¹ý¿¡ ´ëÇØ ´õ ±íÀÌ ÀÖ°Ô ´Ù·é´Ù. ÀÌ Àå¿¡¼´Â ÆÄÀ̽㿡¼ ÇÁ·ÎÆÛƼ(property)¸¦ »ç¿ëÇØ ¼Ó¼º(attribute)À» ±¸ÇöÇÏ´Â ¹æ¹ýÀ» »ìÆ캼 °ÍÀÌ´Ù. ¶ÇÇÑ °´Ã¼µéÀÇ Ä÷º¼ÇÀ» ´Ù·ç±â À§ÇÑ °ü¸®ÀÚ °´Ã¼ÀÇ ÀϹÝÀûÀÎ °³³äÀ» »ìÆ캻´Ù. »ç·Ê ¿¬±¸¿¡¼´Â ÀÌ·± ¾ÆÀ̵ð¾î¸¦ Àû¿ëÇØ k-NN ºÐ·ù±â¸¦ Æø³Ð°Ô ±¸ÇöÇÑ´Ù.
6Àå ¡®Ãß»ó ±âº» Ŭ·¡½º¿Í ¿¬»êÀÚ ¿À¹ö·Îµù¡¯¿¡¼´Â Ãß»óÈ¿¡ ´ëÇÑ °³³ä°ú ÆÄÀ̽ãÀÌ Ãß»ó ±âº» Ŭ·¡½º¸¦ Áö¿øÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ ±íÀÌ ÀÖ°Ô ´Ù·é´Ù. ¿©±â¿¡´Â °ø½ÄÀûÀÎ Protocol Á¤ÀÇ ¸Þ¼Òµå¿Í ´ö ŸÀÌÇÎ(duck typing)À» ºñ±³ÇÏ´Â °ÍÀÌ Æ÷ÇԵȴÙ. ¶ÇÇÑ ÆÄÀ̽ãÀÇ ³»Àå ¿¬»êÀÚ¸¦ ¿À¹ö·ÎµåÇÏ´Â ±â¹ýµµ Æ÷ÇԵȴÙ. ¸ÞŸŬ·¡½º¿Í À̸¦ »ç¿ëÇØ Å¬·¡½º ±¸Á¶¸¦ ¼öÁ¤ÇÏ´Â ¹æ¹ýµµ »ìÆ캼 °ÍÀÌ´Ù. »ç·Ê ¿¬±¸¿¡¼´Â Ãß»óȸ¦ Á¶½É½º·´°Ô »ç¿ëÇØ µðÀÚÀÎÀ» ´Ü¼øÈÇÏ´Â ¹æ¹ýÀ» º¸¿©ÁÖ±â À§ÇØ ±âÁ¸ Ŭ·¡½º Áß ÀϺθ¦ ÀçÁ¤ÀÇÇÒ °ÍÀÌ´Ù.
7Àå, ¡®ÆÄÀ̽㠵¥ÀÌÅÍ ±¸Á¶¡¯¿¡¼´Â ´Ù¾çÇÑ ÆÄÀ̽㠳»Àå Ä÷º¼ÇÀ» »ìÆ캼 °ÍÀÌ´Ù. ÀÌ Àå¿¡¼´Â Æ©ÇÃ, µñ¼Å³Ê¸®, ¸®½ºÆ®, ÁýÇÕ µîÀ» ´Ù·é´Ù. ¶ÇÇÑ µ¥ÀÌÅÍŬ·¡½º¿Í ¸í¸íµÈ Æ©ÇÃÀÌ Å¬·¡½ºÀÇ ¿©·¯ °øÅë ±â´ÉÀ» Á¦°øÇÔÀ¸·Î½á ¾î¶»°Ô µðÀÚÀÎÀ» ´Ü¼øÈ ÇÒ ¼ö ÀÖ´ÂÁö »ìÆ캻´Ù. »ç·Ê ¿¬±¸¿¡¼´Â ÀÌ·± »õ·Î¿î ±â¼úÀ» »ç¿ëÇϱâ À§ÇØ ÀÌÀüÀÇ ÀϺΠŬ·¡½º Á¤ÀǸ¦ ¼öÁ¤ÇÒ °ÍÀÌ´Ù.
8Àå ¡®°´Ã¼ÁöÇâ°ú ÇÔ¼öÇü ÇÁ·Î±×·¡¹ÖÀÇ ±³Â÷Á¡¡¯¿¡¼´Â Ŭ·¡½º Á¤ÀÇ°¡ ¾Æ´Ñ ÆÄÀ̽㠱¸Á¶Ã¼(construct)¸¦ »ìÆ캻´Ù. ÆÄÀ̽ãÀÇ ¸ðµç °ÍÀÌ °´Ã¼ÁöÇâÀûÀÌÁö¸¸ ÇÔ¼ö Á¤ÀǸ¦ »ç¿ëÇϸé Ŭ·¡½º Á¤ÀÇÀÇ º¹À⼺À» ÇÇÇØ È£Ãâ °¡´ÉÇÑ °´Ã¼¸¦ »ý¼ºÇÒ ¼ö ÀÖ´Ù. ¶ÇÇÑ ÆÄÀ̽ãÀÇ ÄÁÅؽºÆ® °ü¸®ÀÚ ±¸Á¶Ã¼¿Í with ¹®À» »ìÆ캼 °ÍÀÌ´Ù. »ç·Ê ¿¬±¸¿¡¼´Â Ŭ·¡½º º¹À⼺À» ÇÇÇÏ´Â ´ë¾ÈÀûÀÎ µðÀÚÀÎÀ» »ìÆ캼 °ÍÀÌ´Ù.
9Àå ¡®¹®ÀÚ¿, Á÷·ÄÈ, ÆÄÀÏ °æ·Î¡¯¿¡¼´Â °´Ã¼¸¦ ¹®ÀÚ¿·Î Á÷·ÄÈÇÏ´Â ¹æ¹ý°ú ¹®ÀÚ¿À» ÆĽÌÇØ °´Ã¼¸¦ »ý¼ºÇÏ´Â ¹æ¹ýÀ» ´Ù·é´Ù. ¿©±â¼´Â Pickle, JSON, CSV µîÀ» Æ÷ÇÔÇÑ ¿©·¯ Çü½ÄÀ» »ìÆ캼 °ÍÀÌ´Ù. »ç·Ê ¿¬±¸¿¡¼´Â k-NN ºÐ·ù±â°¡ »ùÇà µ¥ÀÌÅ͸¦ ·ÎµåÇÏ°í ó¸®ÇÏ´Â ¹æ¹ýÀ» ´Ù½Ã »ìÆ캻´Ù.
10Àå ¡®ÀÌÅÍ·¹ÀÌÅÍ ÆÐÅÏ¡¯¿¡¼´Â ¹Ýº¹ 󸮿¡ ´ëÇÑ ÆÄÀ̽ãÀÇ º¸ÆíÀûÀÎ °³³äÀ» ¼³¸íÇÑ´Ù. ¸ðµç ³»Àå Ä÷º¼ÇÀº ¹Ýº¹ °¡´ÉÇϸç, ÀÌ µðÀÚÀÎ ÆÐÅÏÀº ÆÄÀ̽㠵¿ÀÛ¿¡¼ ÇÙ½ÉÀ» Â÷ÁöÇÑ´Ù. ÆÄÀ̽ãÀÇ ÄÄÇÁ¸®Çî¼Ç(comprehension)°ú Á¦³Ê·¹ÀÌÅÍ(generator) ÇÔ¼öµµ »ìÆ캼 °ÍÀÌ´Ù. »ç·Ê ¿¬±¸¿¡¼´Â Á¦³Ê·¹ÀÌÅÍ Ç¥Çö½Ä°ú ¸®½ºÆ® ÄÄÇÁ¸®Çî¼ÇÀ» »ç¿ëÇØ ÇнÀ ¹× Å×½ºÆ® »ùÇÃÀ» ºÐÇÒÇÏ´Â ÀÌÀü µðÀÚÀÎÀ» ´Ù½Ã »ìÆ캻´Ù.
11Àå ¡®ÀÏ¹Ý µðÀÚÀÎ ÆÐÅÏ¡¯¿¡¼´Â ¸î °¡Áö ÀϹÝÀûÀÎ °´Ã¼ÁöÇâ µðÀÚÀÎÀ» »ìÆ캻´Ù. ¿©±â¿¡´Â µ¥ÄÚ·¹ÀÌÅÍ(Decorator), ¿ÉÀú¹ö(Observer), Àü·«(Strategy), Ä¿¸Çµå(Command), »óÅÂ(State), ½Ì±ÛÅæ(Singleton) µðÀÚÀÎ ÆÐÅÏÀÌ Æ÷ÇԵȴÙ.
12Àå ¡®°í±Þ µðÀÚÀÎ ÆÐÅÏ¡¯¿¡¼´Â Á» ´õ ¹ßÀüµÈ °´Ã¼ÁöÇâ µðÀÚÀÎÀ» »ìÆ캻´Ù. ¿©±â¿¡´Â ¾î´ðÅÍ(Adapter), ÆÛ»çµå(Fa?ade), ÇöóÀÌ¿þÀÌÆ®(Flyweight), Ãß»ó ÆÑÅ丮(Abstract Factory), ÄÄÆ÷Áþ(Composite), ÅÛÇø´(Template) ÆÐÅÏÀÌ Æ÷ÇԵȴÙ.
13Àå ¡®°´Ã¼ÁöÇâ ÇÁ·Î±×·¥ Å×½ºÆ®¡¯¿¡¼´Â unittest¿Í pytest¸¦ »ç¿ëÇØ ÆÄÀ̽㠾ÖÇø®ÄÉÀ̼ÇÀ» À§ÇÑ ÀÚµ¿ÈµÈ ´ÜÀ§ Å×½ºÆ® ½ºÀ§Æ®¸¦ Á¦°øÇÏ´Â ¹æ¹ýÀ» º¸¿©ÁØ´Ù. À̸¦ ÅëÇØ ¸ðÀÇ °´Ã¼¸¦ »ç¿ëÇØ Å×½ºÆ®ÇÒ ¶§ ´ÜÀ§¸¦ ºÐ¸®ÇÏ´Â °Í°ú °°Àº °í±Þ Å×½ºÆ® ±â¹ýÀ» »ìÆ캼 ¼ö ÀÖ´Ù. »ç·Ê ¿¬±¸¿¡¼´Â 3Àå¿¡¼ ´Ù·ð´ø °Å¸® °è»ê¿¡ ´ëÇؼ Å×½ºÆ® ÄÉÀ̽º¸¦ ÀÛ¼ºÇÏ´Â °ÍÀ» º¸¿©ÁØ´Ù.
14Àå ¡®µ¿½Ã¼º¡¯¿¡¼´Â ¸ÖƼÄÚ¾î ¹× ¸ÖƼÇÁ·Î¼¼¼ ÄÄÇ»ÅÍ ½Ã½ºÅÛÀ» »ç¿ëÇØ ½Å¼ÓÇÏ°Ô °è»êÀ» ¼öÇàÇÏ°í ¿ÜºÎ À̺¥Æ®¿¡ ÀÀ´äÇÏ´Â ¼ÒÇÁÆ®¿þ¾î¸¦ ÀÛ¼ºÇÏ´Â ¹æ¹ýÀ» »ìÆ캻´Ù. ½º·¹µå¿Í ¸ÖƼÇÁ·Î¼¼½Ì»Ó¸¸ ¾Æ´Ï¶ó ÆÄÀ̽ãÀÇ asyncio ¸ðµâµµ »ìÆ캼 °ÍÀÌ´Ù. »ç·Ê ¿¬±¸¿¡¼´Â k-NN ¸ðµ¨¿¡¼ ÇÏÀÌÆÛÆĶó¹ÌÅÍ Æ©´×À» ¼öÇàÇϱâ À§ÇØ ÀÌ·± ±â¼úÀ» »ç¿ëÇÏ´Â ¹æ¹ýÀ» º¸¿©ÁÙ °ÍÀÌ´Ù.
¢Â ¿Å±äÀÌÀÇ ¸» ¢Â
ÀÌ Ã¥Àº ÆÄÀ̽㿡¼ °´Ã¼ÁöÇâ µðÀÚÀÎÀ» È°¿ëÇØ °ß°íÇÏ°í À¯Áöº¸¼ö°¡ ½¬¿î ¾ÖÇø®ÄÉÀ̼ÇÀ» °³¹ßÇÏ´Â µ¥ ÁßÁ¡À» µÎ°í ¼³¸íÇÑ´Ù. ¸ðµç Àå¿¡ °ÉÃÄ ÀÖ´Â »ç·Ê ¿¬±¸´Â ¾ÆÀ̸®½º ²É ºÐ·ù¸¦ À§ÇÑ ¸Ó½Å·¯´× ¾ÖÇø®ÄÉÀ̼ÇÀ» °³¹ßÇÏ´Â ½ÇÁ¦ ÇÁ·ÎÁ§Æ®¸¦ ´Ù·ç°í ÀÖ¾î¼ ÀüüÀûÀÎ ¸Æ¶ô¿¡¼ °¢ ÁÖÁ¦¸¦ ÀÏ°ü¼º ÀÖ°Ô ÀÌÇØÇÒ ¼ö ÀÖµµ·Ï ±¸¼ºµÅ ÀÖ´Â °ÍÀÌ ÀåÁ¡ÀÌ´Ù. ¶ÇÇÑ UML ´ÙÀ̾î±×·¥À» ÅëÇØ µðÀÚÀÎ ÆÐÅÏ°ú Äڵ带 ÅëÇÕÀûÀ¸·Î ´Ù·ç°í ÀÖ´Â °Íµµ ÀåÁ¡ÀÌ´Ù.
ÆÄÀ̽ã 3.5ºÎÅÍ Å¸ÀÔ ÈùÆ®°¡ µµÀÔµÆÁö¸¸ ½Ç¹«¿¡¼´Â Àß »ç¿ëµÇÁö ¾Ê¾Ò´Ù. ÇÏÁö¸¸ ÀÌ Ã¥À» ÅëÇØ Å¸ÀÔ ÈùÆ®¸¦ »ç¿ëÇϸé ŸÀÔ ÈùÆ®°¡ Áö¼ÓÀûÀÎ À¯Áöº¸¼ö¿¡ ¾ó¸¶³ª Å« ±â¿©¸¦ ÇÏ´ÂÁö ¾Ë°Ô µÉ °ÍÀÌ´Ù. À¯»çÇÑ ±â´ÉÀ» °¡Áø °´Ã¼µé¿¡ ´ëÇØ »ó¼ÓÀ̳ª ±¸¼º °ü°è¸¦ »ç¿ëÇÏ´Â ¹æ¹ý°ú ÆÄÀ̽ãÀÇ Æí¸®ÇÑ Æ¯Â¡ Áß ÇϳªÀÎ ´ö ŸÀÌÇÎ(duck typing)ÀÇ À¯¿ëÇÔÀ» ¹è¿ï ¼ö ÀÖ´Ù.
°´Ã¼ÁöÇâÀ» »ç¿ëÇØ¾ß ÇÒ ¶§°¡ ¾ðÁ¦ÀÎÁö, ±×¸®°í »ç¿ëÇÏÁö ¸»¾Æ¾ß ÇÒ ¶§°¡ ¾ðÁ¦ÀÎÁö¸¦ ´Ù·ç´Â ºÎºÐÀº ÀÌ Ã¥ÀÇ ÇÙ½É Áß ÇϳªÀÌ´Ù. ÀÌ Ã¥ÀÇ °¡Àå Áß¿äÇÑ ºÎºÐÀº ³Î¸® »ç¿ëµÇ´Â 12°¡Áö µðÀÚÀÎ ÆÐÅÏ°ú ÀÌ ÆÐÅÏÀ» ÆÄÀ̽㿡¼ ±¸ÇöÇÏ´Â ¹æ¹ýÀ» ´Ù·ç´Â ºÎºÐÀ̶ó°í ÇÒ ¼ö ÀÖ´Ù. ÆÄÀ̽ãÀÌ ´Ù¸¥ ¾ð¾î¿¡ ºñÇØ °´Ã¼ÁöÇâ µðÀÚÀÎÀ» ´õ ½±°í ¿ì¾ÆÇÏ°Ô Àû¿ëÇÒ ¼ö ÀÖ´Ù´Â °ÍÀ» ¾Ë°Ô µÉ °ÍÀÌ´Ù.
°´Ã¼ÁöÇâ ÇÁ·Î±×·¡¹Ö°ú ÇÔ¼öÇü ÇÁ·Î±×·¡¹ÖÀÌ ¾î¶»°Ô ´Ù¸£°í ¾î¶² ºÎºÐ¿¡¼ ¼·Î ¸¸³ª´ÂÁö ´Ù·ç°í ÀÖ´Â ºÎºÐÀº ¸Å¿ì Èï¹Ì·Ó´Ù. ÀÌ ÁÖÁ¦¸¦ Àß ÀÌÇØÇϸé Ŭ·¡½ºÀÇ º¹À⼺À¸·Î ÇÇÇÒ ¼ö ÀÖ´Â ´ë¾ÈÀûÀÎ µðÀÚÀÎÀ» µµÀÔÇÏ´Â µ¥ µµ¿òÀÌ µÉ °ÍÀÌ´Ù. ¶Ç ÇÑ °¡Áö, ÆÄÀ̽ãÀÇ ÄÄÇÁ¸®Çî¼Ç(comprehension)°ú Á¦³Ê·¹ÀÌÅÍ(generator) ÇÔ¼ö´Â Äڵ带 ´Ü¼øÈÇÒ ¼ö ÀÖ´Â ÈǸ¢ÇÑ ¹æ¹ýÀÌ´Ù. ÆÄÀ̽ãÀÇ ³»Àå Ä÷º¼ÇÀÌ ¾ó¸¶³ª È¿À²ÀûÀÎ µµ±¸ÀÎÁö ´Ù½Ã Çѹø ÀÌÇØÇÏ°Ô µÉ °ÍÀÌ´Ù.
¸¶Áö¸·À¸·Î unittest¿Í pytest¸¦ »ç¿ëÇØ ÆÄÀ̽㠾ÖÇø®ÄÉÀ̼ÇÀ» À§ÇÑ ÀÚµ¿ÈµÈ ´ÜÀ§ Å×½ºÆ® ½ºÀ§Æ®¸¦ Á¦°øÇÏ´Â ¹æ¹ýÀ» º¸¿©ÁØ´Ù. ÀÌ·¸°Ô ÀÚµ¿ÈµÈ Å×½ºÆ®¸¦ »ç¿ëÇÏ¸é °³¹ß ÇÁ·ÎÁ§Æ®¿¡¼ »ó´çÈ÷ ¸¹Àº ºÎÇϸ¦ ÁÙÀÏ ¼ö ÀÖ´Ù. µ¶Àڵ鵵 ÆÄÀ̽ãÀÇ ÀÚµ¿ÈµÈ Å×½ºÆ®¿¡ Àͼ÷ÇØÁö±â¸¦ ¹Ù¶õ´Ù.
ÀÌ Ã¥Àº ÆÄÀ̽ãÀÌ ¾ó¸¶³ª ÈǸ¢ÇÏ°í »ç¿ëÇϱâ ÆíÇÑ °³¹ß ¾ð¾îÀÎÁö Àß º¸¿©ÁØ´Ù. ÀÌ Ã¥¿¡¼ ¹è¿î ±â¼úÀ» È°¿ëÇØ ÆÄÀ̽㠰³¹ß ÇÁ·ÎÁ§Æ®¿¡¼ ¸¹Àº ¼º°ú¸¦ ¾òÀ» ¼ö ÀÖÀ» °ÍÀÌ´Ù.
¡ß Ŭ·¡½º »ý¼º ¹× ¸Þ¼µå Á¤ÀǸ¦ ÅëÇÑ ÆÄÀ̽㠰´Ã¼ ±¸Çö
¡ß »ó¼ÓÀ» »ç¿ëÇÑ Å¬·¡½º ±â´É È®Àå
¡ß ¿¹¿Ü¸¦ »ç¿ëÇÑ ºñÁ¤»óÀûÀÎ »óȲ ó¸®
¡ß °´Ã¼ÁöÇâ ±â´ÉÀ» »ç¿ëÇØ¾ß ÇÒ ¶§¿Í »ç¿ëÇÏÁö ¸»¾Æ¾ß ÇÒ ¶§¿¡ ´ëÇÑ ÀÌÇØ
¡ß ³Î¸® »ç¿ëµÇ´Â ¸î °¡Áö µðÀÚÀÎ ÆÐÅÏ°ú ±¸Çö
¡ß ´ÜÀ§ ¹× ÅëÇÕ Å×½ºÆ®ÀÇ ´Ü¼ø¼º ¹ß°ß ¹× Å×½ºÆ®ÀÇ Á߿伺
¡ß µ¿Àû Äڵ忡 ´ëÇÑ Á¤Àû ŸÀÔ Ã¼Å© ¹æ¹ý
¡ß asyncio¸¦ ÀÌ¿ëÇÑ µ¿½Ã¼º ÇÁ·Î±×·¡¹Ö ¹× ÇÁ·Î±×·¥ ¼Óµµ Çâ»ó ¹æ¹ý
¢Â ÀÌ Ã¥ÀÇ ´ë»ó µ¶ÀÚ ¢Â
ÀÌ Ã¥Àº ÆÄÀ̽ãÀÇ °´Ã¼ÁöÇâ ÇÁ·Î±×·¡¹ÖÀ» óÀ½ Á¢ÇÏ´Â µ¶ÀÚ¸¦ ´ë»óÀ¸·Î ÇÑ´Ù. ÆÄÀ̽㿡 ´ëÇÑ ±âÃÊ Áö½ÄÀÌ ÀÖ´Ù°í °¡Á¤ÇÑ´Ù. ´Ù¸¥ °´Ã¼ÁöÇâ ÇÁ·Î±×·¡¹Ö ¾ð¾î¿¡ ´ëÇÑ ¹è°æ Áö½ÄÀÌ ÀÖ´Â µ¶ÀÚ¸¦ À§ÇØ ÆÄÀ̽ãÀÇ Á¢±Ù ¹æ½ÄÀÌ °®´Â µ¶Æ¯ÇÑ Æ¯Â¡À» ¼³¸íÇÒ °ÍÀÌ´Ù.
µ¥ÀÌÅÍ °úÇÐ ¹× µ¥ÀÌÅÍ ºÐ¼®¿¡¼ ÆÄÀ̽ãÀ» ¸¹ÀÌ »ç¿ëÇϱ⠶§¹®¿¡ °ü·Ã ¼öÇаú Åë°è °³³äµµ ´Ù·é´Ù. ÀÌ ºÐ¾ßÀÇ Áö½ÄÀº °³³äÀ» º¸´Ù ±¸Ã¼ÀûÀ¸·Î Àû¿ëÇÏ´Â µ¥ µµ¿òÀÌ µÉ ¼ö ÀÖ´Ù.
¢Â ÀÌ Ã¥ÀÇ ±¸¼º ¢Â
ÀÌ Ã¥Àº ÀüüÀûÀ¸·Î ³× ºÎºÐÀ¸·Î ±¸¼ºµÅ ÀÖ´Ù. óÀ½ ¿©¼¸ °³ÀÇ ÀåÀº °´Ã¼ÁöÇâ ÇÁ·Î±×·¡¹ÖÀÇ ÇÙ½É ¿ø¸®¿Í °³³äÀ» ¼³¸íÇϸç ÆÄÀ̽㿡¼ ÀÌ °³³äµéÀÌ ¾î¶»°Ô ±¸ÇöµÇ´ÂÁö¸¦ ¼³¸íÇÑ´Ù. ´ÙÀ½ ¼¼ °³ÀÇ Àå¿¡¼´Â °´Ã¼ÁöÇâ ÇÁ·Î±×·¡¹ÖÀÇ ·»Á ÅëÇØ ÆÄÀ̽㠳»Àå ±â´ÉÀ» ÀÚ¼¼È÷ »ìÆ캻´Ù. 10Àå, 11Àå, 12Àå¿¡¼´Â ¿©·¯ °¡Áö µðÀÚÀÎ ÆÐÅÏ°ú ÀÌ°ÍÀ» ÆÄÀ̽㿡¼ ó¸®ÇÏ´Â ¹æ¹ýÀ» »ìÆ캻´Ù. ¸¶Áö¸· ºÎºÐ¿¡¼´Â Å×½ºÆ®¿Í µ¿½Ã¼ºÀ» ´Ù·é´Ù.
1Àå ¡®°´Ã¼ÁöÇâ µðÀÚÀΡ¯¿¡¼´Â °´Ã¼ÁöÇâ µðÀÚÀÎÀÇ ±âÃÊ°¡ µÇ´Â ÇÙ½É °³³äÀ» ¼Ò°³ÇÑ´Ù. »óÅÂ¿Í µ¿ÀÛ, ¼Ó¼º°ú ¸Þ¼µå, °´Ã¼¸¦ Ŭ·¡½º·Î ±×·ìÈÇÏ´Â ¹æ¹ý µî¿¡ ´ëÇÑ ¾ÆÀ̵ð¾î¸¦ ÅëÇØ ·Îµå¸ÊÀ» Á¦°øÇÑ´Ù. ĸ½¶È, »ó¼Ó ¹× ±¸¼º °ü°èµµ »ìÆ캼 °ÍÀÌ´Ù. »ç·Ê ¿¬±¸¿¡¼´Â k-ÃÖ±ÙÁ¢ ÀÌ¿ô(k-NN, k-Nearest Neighbors) ºÐ·ù±â¸¦ ±¸ÇöÇÏ´Â ¸Ó½Å·¯´× ¹®Á¦¸¦ ¼Ò°³ÇÑ´Ù.
2Àå ¡®ÆÄÀ̽ãÀÇ °´Ã¼¡¯¿¡¼´Â ÆÄÀ̽㿡¼ Ŭ·¡½º Á¤ÀÇ°¡ ¾î¶»°Ô µ¿ÀÛÇÏ´ÂÁö º¸¿©ÁØ´Ù. ¿©±â¿¡´Â ŸÀÔ ÈùÆ®(type hints)¶ó°í ºÒ¸®´Â ŸÀÔ ÁÖ¼®(type annotations), Ŭ·¡½º Á¤ÀÇ, ¸ðµâ, ÆÐÅ°Áö µîÀÌ Æ÷ÇԵȴÙ. Ŭ·¡½º Á¤ÀÇ ¹× ĸ½¶È¿¡ ´ëÇÑ ½Ç¹«ÀûÀÎ °í·Á»çÇ×À» ¾Ë·ÁÁØ´Ù. »ç·Ê ¿¬±¸¿¡¼´Â k-NN ºÐ·ù±âÀÇ ÀϺΠŬ·¡½º¸¦ ±¸ÇöÇغ»´Ù.
3Àå ¡®°´Ã¼°¡ À¯»çÇÑ °æ¿ì¡¯¿¡¼´Â Ŭ·¡½ºµéÀÌ ¼·Î ¾î¶»°Ô ¿¬°üµÅ ÀÖ´ÂÁö ¼³¸íÇÑ´Ù. ¿©±â¿¡´Â »ó¼Ó ¹× ´ÙÁß »ó¼ÓÀÇ »ç¿ë¹ýÀÌ Æ÷ÇԵȴÙ. Ŭ·¡½º °èÃþ ±¸Á¶¿¡¼ Ŭ·¡½º °£ÀÇ ´ÙÇü¼º °³³äÀ» »ìÆ캼 °ÍÀÌ´Ù. »ç·Ê ¿¬±¸¿¡¼´Â °¡Àå °¡±î¿î ÀÌ¿ôÀ» ã´Â µ¥ »ç¿ëµÇ´Â °Å¸® °è»êÀ» À§ÇÑ ¸î °¡Áö µðÀÚÀÎÀ» »ìÆ캼 °ÍÀÌ´Ù.
4Àå, ¡®¿¹»óÄ¡ ¸øÇÑ »óȲÀ» ¿¹»óÇϱ⡯¿¡¼´Â ÆÄÀ̽ãÀÇ ¿¹¿Ü¿Í ¿¹¿Ü 󸮿¡ ´ëÇØ ÀÚ¼¼È÷ »ìÆ캻´Ù. ³»Àå ¿¹¿ÜÀÇ °èÃþ ±¸Á¶µµ ´Ù·é´Ù. ¶ÇÇÑ °íÀ¯ÇÑ ¹®Á¦ µµ¸ÞÀÎÀ̳ª ¾ÖÇø®ÄÉÀ̼ÇÀ» ¹Ý¿µÇϱâ À§ÇØ °íÀ¯ÇÑ ¿¹¿Ü¸¦ Á¤ÀÇÇÏ´Â ¹æ¹ýµµ »ìÆ캼 °ÍÀÌ´Ù. »ç·Ê ¿¬±¸¿¡¼´Â µ¥ÀÌÅÍ À¯È¿¼º °Ë»ç¿¡ ¿¹¿Ü¸¦ Àû¿ëÇÑ´Ù.
5Àå ¡®°´Ã¼ÁöÇâ ÇÁ·Î±×·¡¹ÖÀÇ »ç¿ë ½Ã±â¡¯¿¡¼´Â µðÀÚÀÎ ±â¹ý¿¡ ´ëÇØ ´õ ±íÀÌ ÀÖ°Ô ´Ù·é´Ù. ÀÌ Àå¿¡¼´Â ÆÄÀ̽㿡¼ ÇÁ·ÎÆÛƼ(property)¸¦ »ç¿ëÇØ ¼Ó¼º(attribute)À» ±¸ÇöÇÏ´Â ¹æ¹ýÀ» »ìÆ캼 °ÍÀÌ´Ù. ¶ÇÇÑ °´Ã¼µéÀÇ Ä÷º¼ÇÀ» ´Ù·ç±â À§ÇÑ °ü¸®ÀÚ °´Ã¼ÀÇ ÀϹÝÀûÀÎ °³³äÀ» »ìÆ캻´Ù. »ç·Ê ¿¬±¸¿¡¼´Â ÀÌ·± ¾ÆÀ̵ð¾î¸¦ Àû¿ëÇØ k-NN ºÐ·ù±â¸¦ Æø³Ð°Ô ±¸ÇöÇÑ´Ù.
6Àå ¡®Ãß»ó ±âº» Ŭ·¡½º¿Í ¿¬»êÀÚ ¿À¹ö·Îµù¡¯¿¡¼´Â Ãß»óÈ¿¡ ´ëÇÑ °³³ä°ú ÆÄÀ̽ãÀÌ Ãß»ó ±âº» Ŭ·¡½º¸¦ Áö¿øÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ ±íÀÌ ÀÖ°Ô ´Ù·é´Ù. ¿©±â¿¡´Â °ø½ÄÀûÀÎ Protocol Á¤ÀÇ ¸Þ¼Òµå¿Í ´ö ŸÀÌÇÎ(duck typing)À» ºñ±³ÇÏ´Â °ÍÀÌ Æ÷ÇԵȴÙ. ¶ÇÇÑ ÆÄÀ̽ãÀÇ ³»Àå ¿¬»êÀÚ¸¦ ¿À¹ö·ÎµåÇÏ´Â ±â¹ýµµ Æ÷ÇԵȴÙ. ¸ÞŸŬ·¡½º¿Í À̸¦ »ç¿ëÇØ Å¬·¡½º ±¸Á¶¸¦ ¼öÁ¤ÇÏ´Â ¹æ¹ýµµ »ìÆ캼 °ÍÀÌ´Ù. »ç·Ê ¿¬±¸¿¡¼´Â Ãß»óȸ¦ Á¶½É½º·´°Ô »ç¿ëÇØ µðÀÚÀÎÀ» ´Ü¼øÈÇÏ´Â ¹æ¹ýÀ» º¸¿©ÁÖ±â À§ÇØ ±âÁ¸ Ŭ·¡½º Áß ÀϺθ¦ ÀçÁ¤ÀÇÇÒ °ÍÀÌ´Ù.
7Àå, ¡®ÆÄÀ̽㠵¥ÀÌÅÍ ±¸Á¶¡¯¿¡¼´Â ´Ù¾çÇÑ ÆÄÀ̽㠳»Àå Ä÷º¼ÇÀ» »ìÆ캼 °ÍÀÌ´Ù. ÀÌ Àå¿¡¼´Â Æ©ÇÃ, µñ¼Å³Ê¸®, ¸®½ºÆ®, ÁýÇÕ µîÀ» ´Ù·é´Ù. ¶ÇÇÑ µ¥ÀÌÅÍŬ·¡½º¿Í ¸í¸íµÈ Æ©ÇÃÀÌ Å¬·¡½ºÀÇ ¿©·¯ °øÅë ±â´ÉÀ» Á¦°øÇÔÀ¸·Î½á ¾î¶»°Ô µðÀÚÀÎÀ» ´Ü¼øÈ ÇÒ ¼ö ÀÖ´ÂÁö »ìÆ캻´Ù. »ç·Ê ¿¬±¸¿¡¼´Â ÀÌ·± »õ·Î¿î ±â¼úÀ» »ç¿ëÇϱâ À§ÇØ ÀÌÀüÀÇ ÀϺΠŬ·¡½º Á¤ÀǸ¦ ¼öÁ¤ÇÒ °ÍÀÌ´Ù.
8Àå ¡®°´Ã¼ÁöÇâ°ú ÇÔ¼öÇü ÇÁ·Î±×·¡¹ÖÀÇ ±³Â÷Á¡¡¯¿¡¼´Â Ŭ·¡½º Á¤ÀÇ°¡ ¾Æ´Ñ ÆÄÀ̽㠱¸Á¶Ã¼(construct)¸¦ »ìÆ캻´Ù. ÆÄÀ̽ãÀÇ ¸ðµç °ÍÀÌ °´Ã¼ÁöÇâÀûÀÌÁö¸¸ ÇÔ¼ö Á¤ÀǸ¦ »ç¿ëÇϸé Ŭ·¡½º Á¤ÀÇÀÇ º¹À⼺À» ÇÇÇØ È£Ãâ °¡´ÉÇÑ °´Ã¼¸¦ »ý¼ºÇÒ ¼ö ÀÖ´Ù. ¶ÇÇÑ ÆÄÀ̽ãÀÇ ÄÁÅؽºÆ® °ü¸®ÀÚ ±¸Á¶Ã¼¿Í with ¹®À» »ìÆ캼 °ÍÀÌ´Ù. »ç·Ê ¿¬±¸¿¡¼´Â Ŭ·¡½º º¹À⼺À» ÇÇÇÏ´Â ´ë¾ÈÀûÀÎ µðÀÚÀÎÀ» »ìÆ캼 °ÍÀÌ´Ù.
9Àå ¡®¹®ÀÚ¿, Á÷·ÄÈ, ÆÄÀÏ °æ·Î¡¯¿¡¼´Â °´Ã¼¸¦ ¹®ÀÚ¿·Î Á÷·ÄÈÇÏ´Â ¹æ¹ý°ú ¹®ÀÚ¿À» ÆĽÌÇØ °´Ã¼¸¦ »ý¼ºÇÏ´Â ¹æ¹ýÀ» ´Ù·é´Ù. ¿©±â¼´Â Pickle, JSON, CSV µîÀ» Æ÷ÇÔÇÑ ¿©·¯ Çü½ÄÀ» »ìÆ캼 °ÍÀÌ´Ù. »ç·Ê ¿¬±¸¿¡¼´Â k-NN ºÐ·ù±â°¡ »ùÇà µ¥ÀÌÅ͸¦ ·ÎµåÇÏ°í ó¸®ÇÏ´Â ¹æ¹ýÀ» ´Ù½Ã »ìÆ캻´Ù.
10Àå ¡®ÀÌÅÍ·¹ÀÌÅÍ ÆÐÅÏ¡¯¿¡¼´Â ¹Ýº¹ 󸮿¡ ´ëÇÑ ÆÄÀ̽ãÀÇ º¸ÆíÀûÀÎ °³³äÀ» ¼³¸íÇÑ´Ù. ¸ðµç ³»Àå Ä÷º¼ÇÀº ¹Ýº¹ °¡´ÉÇϸç, ÀÌ µðÀÚÀÎ ÆÐÅÏÀº ÆÄÀ̽㠵¿ÀÛ¿¡¼ ÇÙ½ÉÀ» Â÷ÁöÇÑ´Ù. ÆÄÀ̽ãÀÇ ÄÄÇÁ¸®Çî¼Ç(comprehension)°ú Á¦³Ê·¹ÀÌÅÍ(generator) ÇÔ¼öµµ »ìÆ캼 °ÍÀÌ´Ù. »ç·Ê ¿¬±¸¿¡¼´Â Á¦³Ê·¹ÀÌÅÍ Ç¥Çö½Ä°ú ¸®½ºÆ® ÄÄÇÁ¸®Çî¼ÇÀ» »ç¿ëÇØ ÇнÀ ¹× Å×½ºÆ® »ùÇÃÀ» ºÐÇÒÇÏ´Â ÀÌÀü µðÀÚÀÎÀ» ´Ù½Ã »ìÆ캻´Ù.
11Àå ¡®ÀÏ¹Ý µðÀÚÀÎ ÆÐÅÏ¡¯¿¡¼´Â ¸î °¡Áö ÀϹÝÀûÀÎ °´Ã¼ÁöÇâ µðÀÚÀÎÀ» »ìÆ캻´Ù. ¿©±â¿¡´Â µ¥ÄÚ·¹ÀÌÅÍ(Decorator), ¿ÉÀú¹ö(Observer), Àü·«(Strategy), Ä¿¸Çµå(Command), »óÅÂ(State), ½Ì±ÛÅæ(Singleton) µðÀÚÀÎ ÆÐÅÏÀÌ Æ÷ÇԵȴÙ.
12Àå ¡®°í±Þ µðÀÚÀÎ ÆÐÅÏ¡¯¿¡¼´Â Á» ´õ ¹ßÀüµÈ °´Ã¼ÁöÇâ µðÀÚÀÎÀ» »ìÆ캻´Ù. ¿©±â¿¡´Â ¾î´ðÅÍ(Adapter), ÆÛ»çµå(Fa?ade), ÇöóÀÌ¿þÀÌÆ®(Flyweight), Ãß»ó ÆÑÅ丮(Abstract Factory), ÄÄÆ÷Áþ(Composite), ÅÛÇø´(Template) ÆÐÅÏÀÌ Æ÷ÇԵȴÙ.
13Àå ¡®°´Ã¼ÁöÇâ ÇÁ·Î±×·¥ Å×½ºÆ®¡¯¿¡¼´Â unittest¿Í pytest¸¦ »ç¿ëÇØ ÆÄÀ̽㠾ÖÇø®ÄÉÀ̼ÇÀ» À§ÇÑ ÀÚµ¿ÈµÈ ´ÜÀ§ Å×½ºÆ® ½ºÀ§Æ®¸¦ Á¦°øÇÏ´Â ¹æ¹ýÀ» º¸¿©ÁØ´Ù. À̸¦ ÅëÇØ ¸ðÀÇ °´Ã¼¸¦ »ç¿ëÇØ Å×½ºÆ®ÇÒ ¶§ ´ÜÀ§¸¦ ºÐ¸®ÇÏ´Â °Í°ú °°Àº °í±Þ Å×½ºÆ® ±â¹ýÀ» »ìÆ캼 ¼ö ÀÖ´Ù. »ç·Ê ¿¬±¸¿¡¼´Â 3Àå¿¡¼ ´Ù·ð´ø °Å¸® °è»ê¿¡ ´ëÇؼ Å×½ºÆ® ÄÉÀ̽º¸¦ ÀÛ¼ºÇÏ´Â °ÍÀ» º¸¿©ÁØ´Ù.
14Àå ¡®µ¿½Ã¼º¡¯¿¡¼´Â ¸ÖƼÄÚ¾î ¹× ¸ÖƼÇÁ·Î¼¼¼ ÄÄÇ»ÅÍ ½Ã½ºÅÛÀ» »ç¿ëÇØ ½Å¼ÓÇÏ°Ô °è»êÀ» ¼öÇàÇÏ°í ¿ÜºÎ À̺¥Æ®¿¡ ÀÀ´äÇÏ´Â ¼ÒÇÁÆ®¿þ¾î¸¦ ÀÛ¼ºÇÏ´Â ¹æ¹ýÀ» »ìÆ캻´Ù. ½º·¹µå¿Í ¸ÖƼÇÁ·Î¼¼½Ì»Ó¸¸ ¾Æ´Ï¶ó ÆÄÀ̽ãÀÇ asyncio ¸ðµâµµ »ìÆ캼 °ÍÀÌ´Ù. »ç·Ê ¿¬±¸¿¡¼´Â k-NN ¸ðµ¨¿¡¼ ÇÏÀÌÆÛÆĶó¹ÌÅÍ Æ©´×À» ¼öÇàÇϱâ À§ÇØ ÀÌ·± ±â¼úÀ» »ç¿ëÇÏ´Â ¹æ¹ýÀ» º¸¿©ÁÙ °ÍÀÌ´Ù.
¢Â ¿Å±äÀÌÀÇ ¸» ¢Â
ÀÌ Ã¥Àº ÆÄÀ̽㿡¼ °´Ã¼ÁöÇâ µðÀÚÀÎÀ» È°¿ëÇØ °ß°íÇÏ°í À¯Áöº¸¼ö°¡ ½¬¿î ¾ÖÇø®ÄÉÀ̼ÇÀ» °³¹ßÇÏ´Â µ¥ ÁßÁ¡À» µÎ°í ¼³¸íÇÑ´Ù. ¸ðµç Àå¿¡ °ÉÃÄ ÀÖ´Â »ç·Ê ¿¬±¸´Â ¾ÆÀ̸®½º ²É ºÐ·ù¸¦ À§ÇÑ ¸Ó½Å·¯´× ¾ÖÇø®ÄÉÀ̼ÇÀ» °³¹ßÇÏ´Â ½ÇÁ¦ ÇÁ·ÎÁ§Æ®¸¦ ´Ù·ç°í ÀÖ¾î¼ ÀüüÀûÀÎ ¸Æ¶ô¿¡¼ °¢ ÁÖÁ¦¸¦ ÀÏ°ü¼º ÀÖ°Ô ÀÌÇØÇÒ ¼ö ÀÖµµ·Ï ±¸¼ºµÅ ÀÖ´Â °ÍÀÌ ÀåÁ¡ÀÌ´Ù. ¶ÇÇÑ UML ´ÙÀ̾î±×·¥À» ÅëÇØ µðÀÚÀÎ ÆÐÅÏ°ú Äڵ带 ÅëÇÕÀûÀ¸·Î ´Ù·ç°í ÀÖ´Â °Íµµ ÀåÁ¡ÀÌ´Ù.
ÆÄÀ̽ã 3.5ºÎÅÍ Å¸ÀÔ ÈùÆ®°¡ µµÀÔµÆÁö¸¸ ½Ç¹«¿¡¼´Â Àß »ç¿ëµÇÁö ¾Ê¾Ò´Ù. ÇÏÁö¸¸ ÀÌ Ã¥À» ÅëÇØ Å¸ÀÔ ÈùÆ®¸¦ »ç¿ëÇϸé ŸÀÔ ÈùÆ®°¡ Áö¼ÓÀûÀÎ À¯Áöº¸¼ö¿¡ ¾ó¸¶³ª Å« ±â¿©¸¦ ÇÏ´ÂÁö ¾Ë°Ô µÉ °ÍÀÌ´Ù. À¯»çÇÑ ±â´ÉÀ» °¡Áø °´Ã¼µé¿¡ ´ëÇØ »ó¼ÓÀ̳ª ±¸¼º °ü°è¸¦ »ç¿ëÇÏ´Â ¹æ¹ý°ú ÆÄÀ̽ãÀÇ Æí¸®ÇÑ Æ¯Â¡ Áß ÇϳªÀÎ ´ö ŸÀÌÇÎ(duck typing)ÀÇ À¯¿ëÇÔÀ» ¹è¿ï ¼ö ÀÖ´Ù.
°´Ã¼ÁöÇâÀ» »ç¿ëÇØ¾ß ÇÒ ¶§°¡ ¾ðÁ¦ÀÎÁö, ±×¸®°í »ç¿ëÇÏÁö ¸»¾Æ¾ß ÇÒ ¶§°¡ ¾ðÁ¦ÀÎÁö¸¦ ´Ù·ç´Â ºÎºÐÀº ÀÌ Ã¥ÀÇ ÇÙ½É Áß ÇϳªÀÌ´Ù. ÀÌ Ã¥ÀÇ °¡Àå Áß¿äÇÑ ºÎºÐÀº ³Î¸® »ç¿ëµÇ´Â 12°¡Áö µðÀÚÀÎ ÆÐÅÏ°ú ÀÌ ÆÐÅÏÀ» ÆÄÀ̽㿡¼ ±¸ÇöÇÏ´Â ¹æ¹ýÀ» ´Ù·ç´Â ºÎºÐÀ̶ó°í ÇÒ ¼ö ÀÖ´Ù. ÆÄÀ̽ãÀÌ ´Ù¸¥ ¾ð¾î¿¡ ºñÇØ °´Ã¼ÁöÇâ µðÀÚÀÎÀ» ´õ ½±°í ¿ì¾ÆÇÏ°Ô Àû¿ëÇÒ ¼ö ÀÖ´Ù´Â °ÍÀ» ¾Ë°Ô µÉ °ÍÀÌ´Ù.
°´Ã¼ÁöÇâ ÇÁ·Î±×·¡¹Ö°ú ÇÔ¼öÇü ÇÁ·Î±×·¡¹ÖÀÌ ¾î¶»°Ô ´Ù¸£°í ¾î¶² ºÎºÐ¿¡¼ ¼·Î ¸¸³ª´ÂÁö ´Ù·ç°í ÀÖ´Â ºÎºÐÀº ¸Å¿ì Èï¹Ì·Ó´Ù. ÀÌ ÁÖÁ¦¸¦ Àß ÀÌÇØÇϸé Ŭ·¡½ºÀÇ º¹À⼺À¸·Î ÇÇÇÒ ¼ö ÀÖ´Â ´ë¾ÈÀûÀÎ µðÀÚÀÎÀ» µµÀÔÇÏ´Â µ¥ µµ¿òÀÌ µÉ °ÍÀÌ´Ù. ¶Ç ÇÑ °¡Áö, ÆÄÀ̽ãÀÇ ÄÄÇÁ¸®Çî¼Ç(comprehension)°ú Á¦³Ê·¹ÀÌÅÍ(generator) ÇÔ¼ö´Â Äڵ带 ´Ü¼øÈÇÒ ¼ö ÀÖ´Â ÈǸ¢ÇÑ ¹æ¹ýÀÌ´Ù. ÆÄÀ̽ãÀÇ ³»Àå Ä÷º¼ÇÀÌ ¾ó¸¶³ª È¿À²ÀûÀÎ µµ±¸ÀÎÁö ´Ù½Ã Çѹø ÀÌÇØÇÏ°Ô µÉ °ÍÀÌ´Ù.
¸¶Áö¸·À¸·Î unittest¿Í pytest¸¦ »ç¿ëÇØ ÆÄÀ̽㠾ÖÇø®ÄÉÀ̼ÇÀ» À§ÇÑ ÀÚµ¿ÈµÈ ´ÜÀ§ Å×½ºÆ® ½ºÀ§Æ®¸¦ Á¦°øÇÏ´Â ¹æ¹ýÀ» º¸¿©ÁØ´Ù. ÀÌ·¸°Ô ÀÚµ¿ÈµÈ Å×½ºÆ®¸¦ »ç¿ëÇÏ¸é °³¹ß ÇÁ·ÎÁ§Æ®¿¡¼ »ó´çÈ÷ ¸¹Àº ºÎÇϸ¦ ÁÙÀÏ ¼ö ÀÖ´Ù. µ¶Àڵ鵵 ÆÄÀ̽ãÀÇ ÀÚµ¿ÈµÈ Å×½ºÆ®¿¡ Àͼ÷ÇØÁö±â¸¦ ¹Ù¶õ´Ù.
ÀÌ Ã¥Àº ÆÄÀ̽ãÀÌ ¾ó¸¶³ª ÈǸ¢ÇÏ°í »ç¿ëÇϱâ ÆíÇÑ °³¹ß ¾ð¾îÀÎÁö Àß º¸¿©ÁØ´Ù. ÀÌ Ã¥¿¡¼ ¹è¿î ±â¼úÀ» È°¿ëÇØ ÆÄÀ̽㠰³¹ß ÇÁ·ÎÁ§Æ®¿¡¼ ¸¹Àº ¼º°ú¸¦ ¾òÀ» ¼ö ÀÖÀ» °ÍÀÌ´Ù.