<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>끄적끄적</title>
    <link>https://codingduckhu.tistory.com/</link>
    <description>공부한 내용들을 정리하는 공간입니다~ TIL</description>
    <language>ko</language>
    <pubDate>Thu, 20 Aug 2026 11:46:28 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>TIL강쥐</managingEditor>
    <image>
      <title>끄적끄적</title>
      <url>https://tistory1.daumcdn.net/tistory/4875437/attach/bfa1f4d6057c4507add8f7062f3092ba</url>
      <link>https://codingduckhu.tistory.com</link>
    </image>
    <item>
      <title>PM 용어 정리_TIL</title>
      <link>https://codingduckhu.tistory.com/99</link>
      <description>&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;PM은 디자이너, 개발자와 같이 다양한 직군의 사람들과 소통해야 하는 일들이 빈번하게 발생합니다. 이를 위해서 PM에게 필요한 용어들을 정리해보는 시간을 가져보도록 하겠습니다.&lt;/p&gt;
&lt;h2 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size26&quot;&gt;PM에게 필요한 용어 정리&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. PMF(Product Market Fit) : 제품이 사장과 잘 맞는 상태를 의미&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;PMF가 달성된 제품은 아래와 같은 특징을 가지고 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;1) 유기적 성장: 마케팅 비용을 많이 쓰지 않고도 사용자가 늘어남&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;2) 높은 리텐션(Retention): 사용자들이 제품을 다시 찾음&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;3) 구매 의사: 유료 서비스라도 비용을 지불&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;b&gt;2. AARRR : 유저의 행동 흐름을 5단계로 나눈 분석 프레임워크 , 사용자 유치부터 매출 발생까지의 전체 흐름을 파악&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;Acquisition(획득) - Activation(활성화) - Retention(유지) - Revenue(수익)&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;1) Acquisition(유입/획득)&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;- 정의: 고객이 우리 서비스를 어떻게 처음 알게 되고 방문하는가?&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;- 핵심: 낮은 비용으로 양질의 유저를 데려오는 것이 중요하다.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;- 주요 지표: 신규 방문자수, CAC(고객획득비용), 광고 채널별 유입 경로&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;2) Activation(활성화)&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;- 정의: 고객이 서비스의 핵심 가치를 경험했는가?(Aha-moment)&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;- 핵심: 회원가입 후 이탈하지 않고 서비스의 기능을 사용해보게 만드는 단계&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;- 주요 지표: 회원가입률, 튜토리얼 완료율, 첫 구매/콘텐츠 소비율&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;3) Retention(유지/리텐션)&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;- 정의: 고객이 우리 서비스를 지속적으로 방문하는가?&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;- 핵심: 유입된 고객들이 계속해서 우리 서비스를 이용하게 만들어야한다.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;- 주요 지표: 재방문율(Retention Rate), 이탈률(Churn Rate)&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;4) Revenue(매출)&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;- 정의: 고객이 우리 서비스에 돈을 지불하는가?&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;- 핵심: 서비스의 비즈니스 모델이 잘 작동하는가를 확인&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;- 주요 지표: 유료 전환율, ARPU(유저당 평균 결제액), LTV(고객 생애 가치)&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;5) Referral(추천)&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;- 정의: 고객이 자발적으로 우리 서비스를 추천하는가?&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;- 핵심: 유기적 성장의 핵심이며, 마케팅 비용을 낮춤&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;- 주요 지표: 공유 횟수, 바이럴 계수(K-factor), 리뷰 평점&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;AARRR 프레임워크를 통해 현재 서비스의 문제를 판단하고 데이터 기반의 의사결정이 가능하게 됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size20&quot;&gt;PM에게 필요한 용어 정리2 ( 개발자 소통편 )&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PM은 개발을 &quot;잘하는 사람&quot;이 아니라 &lt;b&gt;무엇을, 왜 만들어야 하는지 설명&lt;/b&gt;할 수 있는 사람입니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. Legacy(레거시)&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;레거시는 직역하게 되면 '유산'이라는 뜻을 가지고 있습니다. 하지만 실무에서는 '과거로부터 물려받았지만 현재는 다루기 까다로운 낡은 기술이나 시스템 및 코드'를 의미합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;레거시 시스템의 주요 특징은 아래와 같습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) 기술적 부채(Technical Debt): 과거의 설계 방식이나 구버전 언어를 사용하고 있어 최신 기술과의 연동이 어려움&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2) 복잡한 문서화: 코드가 꼬여 있고, 이를 설명하는 문서가 없거나 담당자가 퇴사한 경우&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3) 높은 유지비용: 테스트와 수정에 과도한 시간이 소요됨&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;무조건 레거시 코드를 수정해야 하는 것처럼 보일 수 있지만, 비즈니스적인 문제로 인해 레거시를 안고가거나 일부만 리팩토링 하는 방식을 통해 레거시에 대처하기도 합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size20&quot;&gt;PM에게 필요한 용어 정리3 ( UI/UX 디자이너 소통편 )&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PM은 디자인 &quot;잘하는 사람&quot;이 아니라 왜 이렇게 설계했는지 설명할 수 있는 사람입니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. User Flow(유저 플로우)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 정의: 사용자가 서비스 내에서 특정 목표를 달성하기 위해 거치는 모든 경로와 과정을 시각화한 것입니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자가 각 단계에서 어떤 결정을 내리고, 그 결과로 어떤 페이지로 이동하는지 전체적인 흐름을 설계하는 지도로 이해할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) 유저플로우의 핵심 구성 요소&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 진입점(Entry Point): 유저가 어디서 왔는가? (ex. 인스타그램 광고, 구글 검색)&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 단계(Steps/Nodes): 유저가 보게 되는 화면이나 액션( ex. 상세페이지, 장바구니 버튼 클릭)&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 결정 지점(Decision Points): 유저의 선택에 따라 경로가 갈리는 곳(ex. 로그인이 되어 있는가? )&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 최종 목적지(Final Goal): 유저가 도달하려는 지점 (ex. 주문 완료 페이지)&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;유저플로우가 왜 중요한가에 대해 고민해보면 통해 사용자들의 이탈지점을 파악해볼 수 있습니다. 예를 들어, 왜 결제 단계에서 유저들이 나갈까?에 대해 분석해보면 단계가 너무 복잡하거나 불필요한 인증 절차가 있는지를 확인해볼 수 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;정리&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은 PM이 디자이너, 개발자와 협업을 하면서 필요한 용어들을 정리해보았습니다. PM은 개발자, 디자이너와 효율적으로 소통하기 위해서는 용어를 이해함은 물론 이것들이 실무에서 어떻게 활용되고 있는지를 잘 이해하고 있어야만 효율적으로 일을 진행할 수 있습니다. 앞으로도, TIL을 하면서 매일 한 걸음씩 더 성장할 수 있도록 하겠습니다.&amp;nbsp;&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;002&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/002.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/002.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>TIL</category>
      <category>TIL #PM용어</category>
      <author>TIL강쥐</author>
      <guid isPermaLink="true">https://codingduckhu.tistory.com/99</guid>
      <comments>https://codingduckhu.tistory.com/99#entry99comment</comments>
      <pubDate>Tue, 14 Apr 2026 15:33:16 +0900</pubDate>
    </item>
    <item>
      <title>PM_7기 TIL 시작 </title>
      <link>https://codingduckhu.tistory.com/98</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;스파르타클럽의 PM 교육을 듣고 배운 내용을 정리하는 공간입니다. 아직 PM이라는 직무가 익숙하지 않지만, 취업하기 전까지 최선을 다해 배우고 성장해보겠습니다! 취업 파이팅~!&amp;nbsp;&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;niniz&quot; data-emoticon-name=&quot;022&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/niniz/large/022.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/niniz/large/022.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;</description>
      <category>TIL</category>
      <author>TIL강쥐</author>
      <guid isPermaLink="true">https://codingduckhu.tistory.com/98</guid>
      <comments>https://codingduckhu.tistory.com/98#entry98comment</comments>
      <pubDate>Mon, 13 Apr 2026 14:50:52 +0900</pubDate>
    </item>
    <item>
      <title>Kaggle 도전기_Home Credit Default Risk(1)</title>
      <link>https://codingduckhu.tistory.com/96</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1981&quot; data-origin-height=&quot;351&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cRNzsO/btsL2JjubHC/hqORVCcbMKkB5rpfcc4r1k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cRNzsO/btsL2JjubHC/hqORVCcbMKkB5rpfcc4r1k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cRNzsO/btsL2JjubHC/hqORVCcbMKkB5rpfcc4r1k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcRNzsO%2FbtsL2JjubHC%2FhqORVCcbMKkB5rpfcc4r1k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1981&quot; height=&quot;351&quot; data-origin-width=&quot;1981&quot; data-origin-height=&quot;351&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;오늘은 캐글데이터셋 중에서 Home Credit Default Risk 주제를 통해 캐글에 Submit한 뒤, 점수를 확인하는 작업을 진행해보겠습니다.&lt;br&gt;feature engineering에 대해서는 간략하게 진행한 뒤, 일단 빠르게 모델을 설계하여 제출을 한 뒤에 &lt;strong&gt;하이퍼파라미터 튜닝&lt;/strong&gt;, &lt;strong&gt;feature engineering&lt;/strong&gt; 등의 작업을 진행해보도록 하겠습니다.&lt;/p&gt;
&lt;h1&gt;1. 해결하고자 하는 과제&lt;/h1&gt;
&lt;p&gt;해당 대회에서 해결하고자 하는 문제는 아래 있는 링크로 들어가 Description을 확인하면 전체적인 대회에 대한 설명을 볼 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.kaggle.com/competitions/home-credit-default-risk/overview&quot;&gt;https://www.kaggle.com/competitions/home-credit-default-risk/overview&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;735&quot; data-origin-height=&quot;492&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bEMGvv/btsL1sXE7S3/E1oTK8Y6CkDpJg07g9u85k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bEMGvv/btsL1sXE7S3/E1oTK8Y6CkDpJg07g9u85k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bEMGvv/btsL1sXE7S3/E1oTK8Y6CkDpJg07g9u85k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbEMGvv%2FbtsL1sXE7S3%2FE1oTK8Y6CkDpJg07g9u85k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;735&quot; height=&quot;492&quot; data-origin-width=&quot;735&quot; data-origin-height=&quot;492&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;application_{train|test}.csv&lt;ul&gt;
&lt;li&gt;고객 정보와 현재 대출 정보 제공&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;previous_application.csv&lt;ul&gt;
&lt;li&gt;과거 대출 이력&lt;/li&gt;
&lt;li&gt;고객의 현재 대출 이전 과거 대출 정보 제공&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;bureau.csv&lt;ul&gt;
&lt;li&gt;고객의 현재 대출 이전 타사 대출 정보 제공&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;간략하게 설명하자면 사용자의 데이터를 통해 어떤 사용자가 은행 채무를 불이행할지를 예측하는 모델을 만드는 것입니다. 평가 기준은 ROC curve를 통해서 평가를 진행하게 됩니다. 제출해야되는 형태는 아래 사진과 같이 SK_ID_CURR과 TARGET 값이 나오는 csv파일을 제출하게 됩니다. TARGET에 들어가는 데이터는 채무 불이행을 할지 즉, 1인 확률이 들어간다고 생각하면 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1534&quot; data-origin-height=&quot;444&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkxolj/btsL2mB6XDu/tQMAvgKlFBtKFp3Tw9kLp0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkxolj/btsL2mB6XDu/tQMAvgKlFBtKFp3Tw9kLp0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkxolj/btsL2mB6XDu/tQMAvgKlFBtKFp3Tw9kLp0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbkxolj%2FbtsL2mB6XDu%2FtQMAvgKlFBtKFp3Tw9kLp0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1534&quot; height=&quot;444&quot; data-origin-width=&quot;1534&quot; data-origin-height=&quot;444&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h1&gt;2. 데이터 시각화&lt;/h1&gt;
&lt;h2&gt;2.1 TARGET 값 분포 및 AMT_INCOME_TOTAL 값 histogram&lt;/h2&gt;
&lt;p&gt;일단, train_app 데이터의 target 분포를 확인하게 되면 대부분의 데이터가 0인 점을 확인할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1373&quot; data-origin-height=&quot;356&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bELBmd/btsL01eIAR6/uaWs6zUWyOhjOKUZ3jChnK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bELBmd/btsL01eIAR6/uaWs6zUWyOhjOKUZ3jChnK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bELBmd/btsL01eIAR6/uaWs6zUWyOhjOKUZ3jChnK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbELBmd%2FbtsL01eIAR6%2FuaWs6zUWyOhjOKUZ3jChnK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;586&quot; height=&quot;152&quot; data-origin-width=&quot;1373&quot; data-origin-height=&quot;356&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;해당 코드는 &lt;code&gt;value_counts()&lt;/code&gt;를 통해 각 target의 갯수를 구하고 이를 app_train의 전체 행으로 각각 나눠주게 되면 각 target값의 비율을 확인해볼 수 있습니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;sns.distplot(app_train[&amp;#39;AMT_INCOME_TOTAL&amp;#39;])
plt.show()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;100%&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhUSM8/btsL1zoPkKR/axrdRHypP3xvrLxBeKpLYk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhUSM8/btsL1zoPkKR/axrdRHypP3xvrLxBeKpLYk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhUSM8/btsL1zoPkKR/axrdRHypP3xvrLxBeKpLYk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbhUSM8%2FbtsL1zoPkKR%2FaxrdRHypP3xvrLxBeKpLYk%2Fimg.png&quot; width=&quot;100%&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;seaborn을 distplot 메서드를 활용하여 &amp;#39;AMT_INCOME_TOTAL&amp;#39; 데이터의 분포를 확인할 수 있다. 대부분의 데이터가 0.2이하에 몰려있는 것을 확인할 수 있다. AMT_INCOME_TOTAL은 고객의 소득을 나타내는 데이터이다.&lt;/p&gt;
&lt;h2&gt;2.2 TARGET 값에 따른 AMT_INCOME_TOTAL값 분포도 비교&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;def show_columns_hist_by_target(df, column, is_amt=False):
    cond1 = (df[&amp;#39;TARGET&amp;#39;] == 1)
    cond0 = (df[&amp;#39;TARGET&amp;#39;] == 0)

    fig, axs = plt.subplots(figsize=(12,4), nrows=1, ncols=2, squeeze=False)
    # is_amt가 True이면 &amp;lt;500000 조건으로 fitlering
    cond_amt = True
    if is_amt:
        cond_amt = (df[&amp;#39;AMT_INCOME_TOTAL&amp;#39;] &amp;lt; 500000)

    sns.violinplot(x=&amp;#39;TARGET&amp;#39;, y=column ,data=df[cond_amt], palette=&amp;#39;Set2&amp;#39;, ax=axs[0][0])
    sns.distplot(df[cond0 &amp;amp; cond_amt][column], label=&amp;#39;0&amp;#39;, color=&amp;#39;blue&amp;#39;, ax=axs[0][1])
    sns.distplot(df[cond1 &amp;amp; cond_amt][column], label=&amp;#39;1&amp;#39;, color=&amp;#39;red&amp;#39;, ax=axs[0][1])

    plt.show()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;show_columns_hist_by_target 함수는 TARGET 데이터에 따른 violinplot과 distplot을 그려주는 코드이다.&lt;br&gt;&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;100%&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ug2aT/btsL1EcYdkQ/mQSyPA90PkyvxoGkWvmzm0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ug2aT/btsL1EcYdkQ/mQSyPA90PkyvxoGkWvmzm0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ug2aT/btsL1EcYdkQ/mQSyPA90PkyvxoGkWvmzm0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fug2aT%2FbtsL1EcYdkQ%2FmQSyPA90PkyvxoGkWvmzm0%2Fimg.png&quot; width=&quot;100%&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2&gt;app_train과 app_test를 합쳐서 한번에 데이터 preprocessing 수행&lt;/h2&gt;
&lt;p&gt;train과 test를 합쳐서 한번에 전처리를 진행하게 된다. 데이터 시각화 이후에 train과 test데이터 모두에 동일한 전처리 작업을 진행해야 하기 때문에 데이터를 concat을 통해서 합쳐주게 된다. &lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;apps = pd.concat([app_train, app_test])
apps.shape&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Object feature들을 Encoding 진행&lt;/h2&gt;
&lt;p&gt;그 다음으로 Object feature들을 Encoding하는 작업을 진행합니다. Encoding 기존 범주형 데이터를 수치형 데이터를 변환하는 작업입니다. 해당 작업을 진행하는 이유는 모델을 학습시킬 때에 범주형 데이터는 모델에게 학습이 되지 않을 수 있기 때문에 수치형 데이터로 변환을 해야합니다. 해당 과제에서는 Label Encoding을 통해 수치형 데이터로 변환을 진행합니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;object_columns= apps.dtypes[apps.dtypes==&amp;#39;object&amp;#39;].index.tolist()

for column in object_columns:
    apps[column] = pd.factorize(apps[column])[0]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;pd.factorize 메서드를 통해 각 컬럼에 따른 범주형 데이터를 수치형 데이터로 변환하게 됩니다. 해당 메서드를 통해 각 범주형 데이터를 레이블 인코딩을 진행해주게 됩니다. 인코딩에는 레이블 인코딩과 원핫인코딩의 방법이 있지만, 이번에는 레이블 인코딩만을 통해서 범주형 데이터를 수치형 데이터로 변환하게 됩니다.&lt;/p&gt;
&lt;h2&gt;결론&lt;/h2&gt;
&lt;p&gt;이번 시간에는 Home Credit Default Risk 를 주제로 데이터를 시각화하고 encoding하는 작업까지 진행하였습니다. 다음 시간에는 데이터를 학습 데이터와 테스트 데이터로 다시 분리하여 LGBM Classifier를 통해 학습을 수행하여 예측 결과를 확인해보도록 하겠습니다. 그리고 에측한 결과를 submission에 담아서 kaggle에 제출해보는 작업까지 진행해보겠습니다. &lt;/p&gt;
&lt;p&gt;해당 과제를 진행하면서 느낀 점은 데이터를 분석하는 데에 있어 도메인에 대한 지식의 중요성을 크게 느낄 수 있었습니다. 해당 과제에서는 많은 feature engineering을 진행하지는 않았지만 도메인에 대한 지식이 없다면 feature engineering 과정에 어려움이 발생하게 됩니다. 각 데이터들을 깊이 이해하고 활용하는 연습이 필요함을 느꼈습니다.&lt;/p&gt;</description>
      <category>IT지식창고/AI | 머신러닝</category>
      <category>home credit default risk</category>
      <category>데이터분석</category>
      <category>캐글</category>
      <author>TIL강쥐</author>
      <guid isPermaLink="true">https://codingduckhu.tistory.com/96</guid>
      <comments>https://codingduckhu.tistory.com/96#entry96comment</comments>
      <pubDate>Mon, 27 Jan 2025 23:38:36 +0900</pubDate>
    </item>
    <item>
      <title>FastAPI 란? (FastAPI 장,단점)</title>
      <link>https://codingduckhu.tistory.com/95</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;934&quot; data-origin-height=&quot;280&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cz7ZpF/btsLQjUzVXT/UpKKmM8YOJkS3o45evJ6kk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cz7ZpF/btsLQjUzVXT/UpKKmM8YOJkS3o45evJ6kk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cz7ZpF/btsLQjUzVXT/UpKKmM8YOJkS3o45evJ6kk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcz7ZpF%2FbtsLQjUzVXT%2FUpKKmM8YOJkS3o45evJ6kk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;934&quot; height=&quot;280&quot; data-origin-width=&quot;934&quot; data-origin-height=&quot;280&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;FastAPI를 이해하기 위해서는 웹 생태계의 발전과정에 대해 이해하고 있어야 합니다. 웹의 발전 과정은 1~4세대로 구분하여 이해할 수 있습니다.&lt;br&gt;1세대: 정적 웹 서비스 - HTML/CSS 로 만들어진 파일을 서버에 제공&lt;br&gt;2세대: 동적 웹 서비스 -  CGI와 데이터베이스를 사용하여 사용자 요청에 따른 페이지를 동적으로 생성&lt;br&gt;3세대: MVC 프레임워크 - 모델(Model), 뷰(View), 컨트롤러(Controller)로 코드 구조화&lt;br&gt;4세대: API 중심 서비스 - 마이크로 서비스 아키텍처(MSA)를 통해 다양한 플랫폼 지원&lt;/p&gt;
&lt;p&gt;마이크로 프레임워크의 특징&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;풀스택 프레임워크와 대비되는 개념으로, 필수 기능만 제공하여 서비스 경량화와 학습 곡선 감소&lt;/li&gt;
&lt;li&gt;장점: 빠른 개발, 선택적 기능 사용, 높은 확장성, 쉬운 문제 해결&lt;/li&gt;
&lt;li&gt;Flask/FastAPI는 파이썬 라이브러리와 결합하여 파이썬 생태계의 강력한 기능 활용 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;※ 풀스택 프레임워크는 프레임워크에 있는 모든 기능이 실행된다. 모든 기능이 포함되어 있기 때문에 다양한 기능을 사용할 수 있다는 장점이 있지만, 작은 기능만 사용하는 경우에는 효율성의 문제가 발생할 수 있음 (Ex. 항공모함이 모든 기능을 할 수 있는 것과 같음)  &lt;/p&gt;
&lt;h1&gt;FastAPI란?&lt;/h1&gt;
&lt;p&gt;FastAPI는 Python을 위한 현대적인, 빠르고 성능이 좋은 웹 프레임워크로, 주로 API 개발에 사용됩니다. 이는 &lt;code&gt;비동기 처리&lt;/code&gt;를 강조하며, Starlette(비동기 프레임워크)와 Pydantic(데이터 검증 및 설정 라이브러리)에 기반을 두고 있습니다.&lt;/p&gt;
&lt;h2&gt;주요 특징&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;성능 중심: 비동기 프로그래밍을 통한 높은 처리 속도. 데이터베이스 쿼리, 서버 간 통신 I/O 작업이 많은 애플리케이션에 유리&lt;/li&gt;
&lt;li&gt;RESTful API 개발 용이: 보일러플레이트 코드 감소, 웹 서비스와 클라이트 간 데이터 교환 최적화&lt;/li&gt;
&lt;li&gt;자동문서화 기능: API 작성 시 자동으로 문서 생성&lt;/li&gt;
&lt;li&gt;유효성 검사: Pydantic을 통한 간편한 데이터 유효성 검사&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;FastAPI 기본코드&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;from fastapi import FastAPI

app = FastAPI()

@app.get(&amp;quot;/&amp;quot;)
def read_root():
    return {&amp;quot;message&amp;quot;: &amp;quot;Hello, World&amp;quot;}
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;from fastapi import FastAPI&lt;/code&gt;: FastAPI 클래스를 가져옴&lt;/li&gt;
&lt;li&gt;&lt;code&gt;app = FastAPI()&lt;/code&gt; : FastAPI 클래스를 생성&lt;/li&gt;
&lt;li&gt;&lt;code&gt;@app.get(&amp;quot;/&amp;quot;)&lt;/code&gt; : HTTP GET 요청의 경로 지정&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def read_root():&lt;/code&gt; : GET 요청 처리 함수&lt;/li&gt;
&lt;li&gt;&lt;code&gt;return {&amp;quot;message&amp;quot;: &amp;quot;Hello, World&amp;quot;}&lt;/code&gt; : JSON 형태의 응답 반환. FastAPI가 자동 변환&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;FastAPI 서버 실행 방법&lt;/h3&gt;
&lt;p&gt;FastAPI 서버를 실행하기 위해서는 uvicorn을 설치해야한다. uvicorn 설치는 &lt;code&gt;pip install uvicorn&lt;/code&gt;을 터미널에 입력하여 설치를 진행할 수 있다. &lt;/p&gt;
&lt;p&gt;FastAPI코드를 &lt;code&gt;main.py&lt;/code&gt;에 저장한 후, 아래 명령어를 실행하여 애플리케이션을 실행합니다. &lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;uvicorn main:app --reload&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;--reload는 개발 중 코드 변경 시 자동으로 서버 재시작합니다. &lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;100%&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cdjO73/btsLQNnq3C4/mkyypfmYMqWDvR0wRAQ8I1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cdjO73/btsLQNnq3C4/mkyypfmYMqWDvR0wRAQ8I1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cdjO73/btsLQNnq3C4/mkyypfmYMqWDvR0wRAQ8I1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcdjO73%2FbtsLQNnq3C4%2FmkyypfmYMqWDvR0wRAQ8I1%2Fimg.png&quot; width=&quot;100%&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;서버를 시작하게 되면 위의 사진과 같이 서버를 구동하게 되며, 나와있는 주소를 입력하면 해당 웹사이트로 이동할 수 있습니다. &lt;/p&gt;
&lt;p&gt;이번 시간에는 FastAPI가 무엇이며, 어떤 특징을 가지고 있는지 알아봤습니다. FastAPI는 높은 성능과 더불어 AI 서비스를 활용하는 데에 많이 사용되고 있으며, FastAPI에 대한 수요도 점차 증가하고 있어 FastAPI를 먼저 배워보는 것도 추천드립니다. &lt;/p&gt;
&lt;p&gt;다음 시간에는 FastAPI의 기본 문법에 대해 학습을 진행하도록 하겠습니다! &lt;/p&gt;</description>
      <category>fastapi</category>
      <category>python</category>
      <category>기술블로그</category>
      <author>TIL강쥐</author>
      <guid isPermaLink="true">https://codingduckhu.tistory.com/95</guid>
      <comments>https://codingduckhu.tistory.com/95#entry95comment</comments>
      <pubDate>Fri, 17 Jan 2025 15:53:14 +0900</pubDate>
    </item>
    <item>
      <title>[Python] 웹 크롤링 템플릿</title>
      <link>https://codingduckhu.tistory.com/94</link>
      <description>&lt;p&gt; 데이터 분석에 있어 가장 중요한 단계 중 하나는 &lt;code&gt;데이터 수집&lt;/code&gt; 단계일 것이다.&lt;br&gt; 오늘은 python 웹 크롤링을 통해 웹에서 데이터를 수집하는 코드를 작성해보도록 하겠다. &lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt; import requests  
from bs4 import BeautifulSoup
res = requests.get(&amp;#39;http://&amp;#39;)  // 접근하고자 하는 url 입력 
soup = BeautifulSoup(res.content,&amp;#39;html.parser&amp;#39;)
mydata = soup.find(&amp;#39;title&amp;#39;)  // &amp;#39;title&amp;#39; 태그를 통해 값을 가져온다
print(mydata.get_text())&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt; 위 코드는 requests 라이브러리를 통해 웹 사이트에 접근하고 BeautifulSoup를 통해 크롤링을 진행하게 된다. soup.find를 통해 태그나 속성을 통해 값에 접근할 수 있으며, 가져온 값은 mydata 변수에 담아주게 된다. mydata에 담겨진 변수를 출력할 때에는 .get_text() 를 사용하거나 .string을 통해서도 데이터를 출력할 수 있다. &lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;data = soup.find(&amp;#39;p&amp;#39;, class_=&amp;#39;cssstyle&amp;#39;)
data = soup.find(&amp;#39;p&amp;#39;, &amp;#39;cssstyle&amp;#39;)
data = soup.find(&amp;#39;p&amp;#39;, attrs = {&amp;#39;align&amp;#39;: &amp;#39;center&amp;#39;})
data = soup.find(id=&amp;#39;body&amp;#39;)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt; 태그나 속성을 통해 값을 가져오고자 할 때, 같은 태그나 속성이 있다면 원하는 값을 가져오기 힘든 경우가 발생할 것이다. 그런 경우에는 위 코드와 같이 태그와 속성을 같이 달아주는 다양한 코드를 사용해서 내가 원하는 데이터를 가져올 수 있다. 주의하실 점은 class_=&amp;#39;cssstyle&amp;#39;에서 class뒤에 &lt;em&gt;(언더바) 가 포함되어 있다는 것입니다. python에서는 class가 예약어이기 때문에 class&lt;/em&gt; 로 사용한다고 이해하시면 됩니다. &lt;/p&gt;
&lt;p&gt; 그렇다면 같은 아래 사진과 같이 여러 개의 데이터를 한번에 가져오기 위해서는 어떻게 해야할까요?&lt;br&gt; &lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;100%&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/baWuGS/btsLO7LVsI5/4R7zryAOrKohKqistuy8Q1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/baWuGS/btsLO7LVsI5/4R7zryAOrKohKqistuy8Q1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/baWuGS/btsLO7LVsI5/4R7zryAOrKohKqistuy8Q1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbaWuGS%2FbtsLO7LVsI5%2F4R7zryAOrKohKqistuy8Q1%2Fimg.png&quot; width=&quot;100%&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt; data = soup.find_all(&amp;#39;p&amp;#39;)
for item in data:
    print(item.string)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt; 여러 개의 데이터를 한번에 가져오기 위해서는 find_all 메서드를 사용해주시면 됩니다. find_all 메서드의 경우에는 반환 값이 리스트이기 때문에 출력할 때에는 반복문을 통해 출력을 하시면 됩니다. &lt;/p&gt;
&lt;p&gt; 크롤링을 할 때에는 기본적인 HTML 및 CSS 에 대한 내용을 알고 있다면 데이터를 어렵지 않게 수집할 수 있습니다. 기본적인 데이터 수집을 위한 크롤링 방법에 대해 학습을 진행하였습니다. 해당 코드를 외우기 보다는 필요할 때에는 검색해서 사용할 수 있는 능력을 기르는 것이 더 중요할 거 같습니다~ &lt;/p&gt;
&lt;p&gt; 다음 시간에는 좀 더 크롤링의 다양한 방법에 대해 정리해보도록 하겠습니다! 감사합니다&lt;/p&gt;</description>
      <category>IT지식창고/Python</category>
      <category>데이터 수집</category>
      <category>웹 크롤링</category>
      <category>크롤링</category>
      <author>TIL강쥐</author>
      <guid isPermaLink="true">https://codingduckhu.tistory.com/94</guid>
      <comments>https://codingduckhu.tistory.com/94#entry94comment</comments>
      <pubDate>Wed, 15 Jan 2025 16:26:50 +0900</pubDate>
    </item>
    <item>
      <title>JupyterNotebook에서 구글드라이브 연동하기</title>
      <link>https://codingduckhu.tistory.com/93</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;저는 로컬에서 Jupyter Notebook을 열게 되면 &lt;b&gt;Google Drive&lt;/b&gt;가 폴더가 들어와있는데요.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은 주피터노트북에서 구글 드라이브에 있는 코드를 실행하는 방법에 대해 알아보도록 하겠습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;644&quot; data-origin-height=&quot;713&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dXh538/btsJSN2Xafq/yMKQCYgKW86w4boIyfgAJK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dXh538/btsJSN2Xafq/yMKQCYgKW86w4boIyfgAJK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dXh538/btsJSN2Xafq/yMKQCYgKW86w4boIyfgAJK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdXh538%2FbtsJSN2Xafq%2FyMKQCYgKW86w4boIyfgAJK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;644&quot; height=&quot;713&quot; data-origin-width=&quot;644&quot; data-origin-height=&quot;713&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저, &lt;b&gt;cmd(명령 프롬프트)를 관리자권한으로 실행&lt;/b&gt;합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1496&quot; data-origin-height=&quot;927&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pl1dU/btsL3O0PgTz/yxC0haEFaTTiHHsEJbNC2k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pl1dU/btsL3O0PgTz/yxC0haEFaTTiHHsEJbNC2k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pl1dU/btsL3O0PgTz/yxC0haEFaTTiHHsEJbNC2k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fpl1dU%2FbtsL3O0PgTz%2FyxC0haEFaTTiHHsEJbNC2k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;774&quot; height=&quot;480&quot; data-origin-width=&quot;1496&quot; data-origin-height=&quot;927&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 다음에는 cd 명령어를 통해 여러분들이 구글드라이브를 연동하고 싶은 폴더로 이동합니다. 저는&lt;b&gt; C:\Users\사용자이름&lt;/b&gt;으로 이동하도록 하겠습니다.&amp;nbsp; &lt;b&gt;cd C:\Users\사용자이름 &lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;639&quot; data-origin-height=&quot;61&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XQqhB/btsL4z9Quz0/KKQIMBSwSC5wVMfX5kKK0K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XQqhB/btsL4z9Quz0/KKQIMBSwSC5wVMfX5kKK0K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XQqhB/btsL4z9Quz0/KKQIMBSwSC5wVMfX5kKK0K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXQqhB%2FbtsL4z9Quz0%2FKKQIMBSwSC5wVMfX5kKK0K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;639&quot; height=&quot;61&quot; data-origin-width=&quot;639&quot; data-origin-height=&quot;61&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 폴더로 이동한 다음에는 mklink /J &quot;C:\Users\사용자이름\Google Drive&quot; &quot;G:\GoogleDrive&quot;를 입력하게 되면 교차점을 만들었다는 명령어를 확인할 수 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;818&quot; data-origin-height=&quot;64&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKkDgo/btsL3y4R7Zn/VMcOJTT9irOUWvrKbMmE0K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKkDgo/btsL3y4R7Zn/VMcOJTT9irOUWvrKbMmE0K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKkDgo/btsL3y4R7Zn/VMcOJTT9irOUWvrKbMmE0K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKkDgo%2FbtsL3y4R7Zn%2FVMcOJTT9irOUWvrKbMmE0K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;818&quot; height=&quot;64&quot; data-origin-width=&quot;818&quot; data-origin-height=&quot;64&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IT지식창고</category>
      <author>TIL강쥐</author>
      <guid isPermaLink="true">https://codingduckhu.tistory.com/93</guid>
      <comments>https://codingduckhu.tistory.com/93#entry93comment</comments>
      <pubDate>Tue, 15 Oct 2024 23:41:12 +0900</pubDate>
    </item>
    <item>
      <title>[C] 문자열과 포인터</title>
      <link>https://codingduckhu.tistory.com/92</link>
      <description>&lt;h2&gt;문자열 상수 구현 방법&lt;/h2&gt;
&lt;p&gt;문자열을 char 배열 형태로 따로 보관하고 문자열 상수가 있던 곳에는 배열의 위치 값을 사용합니다. &lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-C&quot;&gt;#include &amp;lt;stdio.h&amp;gt;


int main(void)
{
    printf(&amp;quot;apple이 저장된 시작 주소 값: %p\n&amp;quot;, &amp;quot;apple&amp;quot;); // 주소 값 출력
    printf(&amp;quot;두 번째 문자의 주소 값: %p\n&amp;quot;, &amp;quot;apple&amp;quot; + 1);  // 주소 값 출력
    printf(&amp;quot;첫 번째 문자: %c\n&amp;quot;, *&amp;quot;apple&amp;quot;); // 간접 참조 연산
    printf(&amp;quot;두 번째 문자: %c\n&amp;quot;, *(&amp;quot;apple&amp;quot; + 1)); // 포인터 연산식
    printf(&amp;quot;배열로 표현한 세 번째 문자 : %c\n&amp;quot;, &amp;quot;apple&amp;quot;[2]);

    return 0;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>IT지식창고/C</category>
      <author>TIL강쥐</author>
      <guid isPermaLink="true">https://codingduckhu.tistory.com/92</guid>
      <comments>https://codingduckhu.tistory.com/92#entry92comment</comments>
      <pubDate>Wed, 11 Sep 2024 22:50:47 +0900</pubDate>
    </item>
    <item>
      <title>[C언어] 문자열과 포인터</title>
      <link>https://codingduckhu.tistory.com/91</link>
      <description>&lt;h2&gt;문자열 상수 구현 방법&lt;/h2&gt;
&lt;p&gt;문자열은 크기가 일정하지 않습니다. 컴파일 과정에서 문자열을 char 배열 형태로 따로 보관하고 문자열 상수가 있던 곳에는 배열의 위치 값을 사용합니다. &lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-C&quot;&gt;#include &amp;lt;stdio.h&amp;gt;

int main(void)
{
    printf(&amp;quot;apple이 저장된 시작 주소 값: %p\n&amp;quot;, &amp;quot;apple&amp;quot;); //주소 값 출력
    printf(&amp;quot;두 번째 문자의 주소 값: %p\n&amp;quot;, &amp;quot;apple&amp;quot; + 1);
    printf(&amp;quot;첫 번째 문자: %c\n&amp;quot;, *&amp;quot;apple&amp;quot;);  // 간접 참조 연산
    printf(&amp;quot;첫 번째 문자: %c\n&amp;quot;, *(&amp;quot;apple&amp;quot; + 1));
    printf(&amp;quot;배열로 표현한 세 번째 문자: %c\n&amp;quot;, &amp;quot;apple&amp;quot;[2]); // 배열 표현식

    return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;char 포인터로 문자열 사용&lt;/h2&gt;
&lt;p&gt;문자열은 주소입니다. 따라서 문자열도 char 포인터에 대입하여 사용할 수 있습니다. &lt;/p&gt;</description>
      <category>IT지식창고/C</category>
      <author>TIL강쥐</author>
      <guid isPermaLink="true">https://codingduckhu.tistory.com/91</guid>
      <comments>https://codingduckhu.tistory.com/91#entry91comment</comments>
      <pubDate>Wed, 11 Sep 2024 22:50:38 +0900</pubDate>
    </item>
    <item>
      <title>[Git] Git의 3가지 작업 영역</title>
      <link>https://codingduckhu.tistory.com/90</link>
      <description>&lt;p&gt;Git은 내부적으로 3가지 종류의 작업 영역을 통해 동작합니다. &lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;working directory&lt;/li&gt;
&lt;li&gt;staging area&lt;/li&gt;
&lt;li&gt;repository&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;먼저, &lt;code&gt;working directory&lt;/code&gt;는 작업을 하는 프로젝트 디렉토리를 의미합니다.&lt;br&gt;&lt;code&gt;staging area&lt;/code&gt;는 &lt;code&gt;git add&lt;/code&gt;를 한 파일들이 존재하는 영역입니다. 커밋을 하게 되면 &lt;code&gt;staging area&lt;/code&gt;에 있는 파일들만 커밋에 반영합니다.&lt;br&gt;마지막 &lt;code&gt;repository&lt;/code&gt;는 커밋들이 저장되는 영역입니다. &lt;/p&gt;
&lt;p&gt;해당 내용들을 풀어서 생각해 보면,&lt;br&gt;&lt;code&gt;working directory&lt;/code&gt;에서 작업하기 -&amp;gt; 작업한 파일들 &lt;code&gt;git add&lt;/code&gt; 하면 &lt;code&gt;staging area&lt;/code&gt;에 영역으로 -&amp;gt; 커밋을 하게 되면 &lt;code&gt;staging area&lt;/code&gt;에 있던 파일들이 &lt;code&gt;repository&lt;/code&gt;에 저장&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; width=&quot;100%&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FG4ri/btsJmOhtyNe/Y30OkhQzjX9PUiHVfPEQrK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FG4ri/btsJmOhtyNe/Y30OkhQzjX9PUiHVfPEQrK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FG4ri/btsJmOhtyNe/Y30OkhQzjX9PUiHVfPEQrK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFG4ri%2FbtsJmOhtyNe%2FY30OkhQzjX9PUiHVfPEQrK%2Fimg.png&quot; width=&quot;100%&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;center&gt;이미지 출처 : 코드잇&lt;/center&gt;</description>
      <category>IT지식창고/Git Github</category>
      <author>TIL강쥐</author>
      <guid isPermaLink="true">https://codingduckhu.tistory.com/90</guid>
      <comments>https://codingduckhu.tistory.com/90#entry90comment</comments>
      <pubDate>Sat, 31 Aug 2024 10:13:22 +0900</pubDate>
    </item>
    <item>
      <title>JpyterNotebook 구글드라이브 연동</title>
      <link>https://codingduckhu.tistory.com/89</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; JupyterNotebook에서 구글 드라이브를 연동하여 사용하는 방법에 대해 알아보도록 하겠습니다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1513&quot; data-origin-height=&quot;1512&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dlidxj/btsI8RS1Ccl/e057SOlWEjONRPYQH0IqL0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dlidxj/btsI8RS1Ccl/e057SOlWEjONRPYQH0IqL0/img.png&quot; data-alt=&quot;결과물&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dlidxj/btsI8RS1Ccl/e057SOlWEjONRPYQH0IqL0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdlidxj%2FbtsI8RS1Ccl%2Fe057SOlWEjONRPYQH0IqL0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;638&quot; height=&quot;638&quot; data-origin-width=&quot;1513&quot; data-origin-height=&quot;1512&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;결과물&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. cmd 명령 프롬포트를 관리자권한으로 실행해줍니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 현재 jupyternotebook경로를 &quot;cd 경로&quot;를 통해 경로를 잡아줍니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. mklink /j &quot;C드라이브 경로&quot; &quot;G:\&quot; 를 실행하면 &quot;교차점을 만들었습니다&quot; 문구가 뜨게 되고, JupyterNotebook에 Google Drive가 있는 것을 확인할 수 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;578&quot; data-origin-height=&quot;180&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bIL8uR/btsI9yZuQD9/rYBoXTVbN3kQkMetrudoe0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bIL8uR/btsI9yZuQD9/rYBoXTVbN3kQkMetrudoe0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bIL8uR/btsI9yZuQD9/rYBoXTVbN3kQkMetrudoe0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbIL8uR%2FbtsI9yZuQD9%2FrYBoXTVbN3kQkMetrudoe0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;578&quot; height=&quot;180&quot; data-origin-width=&quot;578&quot; data-origin-height=&quot;180&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <author>TIL강쥐</author>
      <guid isPermaLink="true">https://codingduckhu.tistory.com/89</guid>
      <comments>https://codingduckhu.tistory.com/89#entry89comment</comments>
      <pubDate>Tue, 20 Aug 2024 09:58:32 +0900</pubDate>
    </item>
  </channel>
</rss>