<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>hey_roha.log</title>
        <link>https://velog.io/</link>
        <description></description>
        <lastBuildDate>Wed, 13 Nov 2024 16:15:50 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>hey_roha.log</title>
            <url>https://velog.velcdn.com/images/hey_roha/profile/9e43e3bc-4eb3-4474-8828-af88a0589da6/image.jpg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. hey_roha.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/hey_roha" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[99클럽 코테 스터디 16일차 TIL (강의1주차)]]></title>
            <link>https://velog.io/@hey_roha/99%ED%81%B4%EB%9F%BD-%EC%BD%94%ED%85%8C-%EC%8A%A4%ED%84%B0%EB%94%94-16%EC%9D%BC%EC%B0%A8-TIL-%EA%B0%95%EC%9D%98</link>
            <guid>https://velog.io/@hey_roha/99%ED%81%B4%EB%9F%BD-%EC%BD%94%ED%85%8C-%EC%8A%A4%ED%84%B0%EB%94%94-16%EC%9D%BC%EC%B0%A8-TIL-%EA%B0%95%EC%9D%98</guid>
            <pubDate>Wed, 13 Nov 2024 16:15:50 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/hey_roha/post/598957b6-22b6-4e44-b83c-11c83aa8c9eb/image.png" alt=""></p>
<ul>
<li>알파벳을 바로 꺼내오는 방법<pre><code class="language-python">import string
</code></pre>
</li>
</ul>
<h1 id="1-알파벳을-바로-꺼내오는-방법">1. 알파벳을 바로 꺼내오는 방법</h1>
<p>print(string.ascii_lowercase)
print(string.ascii_letters)
print(string.ascii_uppercase)</p>
<h1 id="2-ord-연산아스키-문자--숫자">2. ord 연산(아스키 문자-&gt; 숫자)</h1>
<p>print(ord(&#39;a&#39;), ord(&#39;A&#39;), ord(&#39;@&#39;))  # 97 65 64</p>
<h1 id="3-range">3. range</h1>
<p>for i in range(10):
    print(i)</p>
<pre><code>
- 간단하게 아스키 코드 string을 이용하여 알파벳 index알아내는 방법
- 이 경우 for문을 한번 사용하기 때문에 시공간 복잡도가 O(n)이 됨
```python
def get_idx(word):
    # O(N)
    result = [-1]*len(string.ascii_lowercase)
    for i in range(len(word)):
        idx = ord(word[i]) - 97
        if result[idx] == -1:
            result[idx] = i
    return result</code></pre><hr>
<p>1주차 숙제- 문자열 팰린드롬</p>
<ul>
<li><strong>팰린드롬</strong>이란? 앞으로 읽어도 뒤로 읽어도 문자열이 똑같은것(ex&gt; radar)</li>
<li>문자열을 받았을때 하나씩 list에 넣고, 이걸 반대로 넣은 리스트를 하나더 생성해서 같은지 아닌지 비교하는 형식으로 코드 작성</li>
<li>list를 list[::-1]하면 거꾸로 정렬되는것과 같은 방식을 사용<pre><code class="language-python">#1-1 팰린드롬
</code></pre>
</li>
</ul>
<p>char = input()
li = []</p>
<p>for i in char:
  li.append(i)
  li_re = li[::-1]</p>
<p>if li == li_re:
  print(&quot;True&quot;)
else:
  print(&quot;False&quot;)
```</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[99클럽 코테 스터디 7일차 TIL + 완전탐색/ 모음사전]]></title>
            <link>https://velog.io/@hey_roha/99%ED%81%B4%EB%9F%BD-%EC%BD%94%ED%85%8C-%EC%8A%A4%ED%84%B0%EB%94%94-7%EC%9D%BC%EC%B0%A8-TIL-%EC%99%84%EC%A0%84%ED%83%90%EC%83%89-%EB%AA%A8%EC%9D%8C%EC%82%AC%EC%A0%84</link>
            <guid>https://velog.io/@hey_roha/99%ED%81%B4%EB%9F%BD-%EC%BD%94%ED%85%8C-%EC%8A%A4%ED%84%B0%EB%94%94-7%EC%9D%BC%EC%B0%A8-TIL-%EC%99%84%EC%A0%84%ED%83%90%EC%83%89-%EB%AA%A8%EC%9D%8C%EC%82%AC%EC%A0%84</guid>
            <pubDate>Sun, 03 Nov 2024 08:09:56 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/hey_roha/post/17c5ad4b-9438-48e8-9d3f-a8c3a3e15a14/image.png" alt=""></p>
<p>✏️회고록</p>
<ul>
<li><p>코딩 공부를 너무 오랫동안 놔서 그런지 보는 문제마다 낯설고 이미 풀어봤던 문제들 같은데 잘 풀리지가 않아서 GPT의 도움을 계속 받고있다. 그래도 감이 슬슬 돌아오는 것 같아 조금씩은 도움을 받으면서 빨리빨리 훑어보고 다른 문제들을 풀어보는 방식도 좋을 것 같다.</p>
</li>
<li><p>백준의 경우 input을 써도 잘 돌아갔는데 프로그래머스에서는 sys.stdin.readline을 써야 테스트케이스가 돌아가고 통과된다.</p>
</li>
<li><p>미들러 문제 푸는것도 감을 찾는데 좋지만 지금 기초적인 문법도 조금씩 흔들리는 상화이라 비기너 문제와 기초문제를 보충적으로 하루에 5개<del>10개씩 풀고 일단 미들러 수준의 문제는 2</del>3개로비율을 맞추는 것이 좋을 것 같다. 기본이 흔들리면 그 후에 문제푸는 방식도 제대로 틀이 안 잡힐 것 같기때문,,,</p>
</li>
<li><p>특히 함수정의와 enumerate, lambda 같은 함수에 익숙해지는게 중요!!</p>
</li>
</ul>
<p>⭐미들러 문제는 문제 풀면서 해당 카테고리의 틀의 형식을 잘 익혀보는걸 중점적으로 공부하기</p>
<pre><code class="language-python">import sys


word = sys.stdin.readline()
def solution(word):
    vowels = [&#39;A&#39;,&#39;E&#39;,&#39;I&#39;,&#39;O&#39;,&#39;U&#39;]
    weights = [781, 156, 31, 6, 1]

    answer = 0
    for i, char in enumerate(word):
        index = vowels.index(char)
        answer += index * weights[i] + 1

    return answer


print(solution(word))
</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[99클럽 코테 스터디 일차 TIL + 백준 2805번 나무자르기]]></title>
            <link>https://velog.io/@hey_roha/99%ED%81%B4%EB%9F%BD-%EC%BD%94%ED%85%8C-%EC%8A%A4%ED%84%B0%EB%94%94-%EC%9D%BC%EC%B0%A8-TIL-%EB%B0%B1%EC%A4%80-2805%EB%B2%88-%EB%82%98%EB%AC%B4%EC%9E%90%EB%A5%B4%EA%B8%B0</link>
            <guid>https://velog.io/@hey_roha/99%ED%81%B4%EB%9F%BD-%EC%BD%94%ED%85%8C-%EC%8A%A4%ED%84%B0%EB%94%94-%EC%9D%BC%EC%B0%A8-TIL-%EB%B0%B1%EC%A4%80-2805%EB%B2%88-%EB%82%98%EB%AC%B4%EC%9E%90%EB%A5%B4%EA%B8%B0</guid>
            <pubDate>Sat, 02 Nov 2024 19:47:02 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/hey_roha/post/4a42d86c-bdce-4f6a-9be9-44ab0a8b4314/image.png" alt=""></p>
<ul>
<li>아직 이분탐색에 대한 문제가 익숙하지 않아 저번 게임 문제에 이어 많이 버벅거렸다. 우선 쉬운 문제와 어려운 문제를 몇개씩 뽑아서 10문제 정도씩 풀면서 이분탐색 문제의 틀을 익히는게 중요할 것 같다. 몇 문제들을 풀면서 느끼는건 문제 유형은 좀 달라도 전체적인 틀이 살짝 잡혀있는 느낌이 들었다.</li>
</ul>
<pre><code class="language-python">n,m = map(int, input().split())
tree = list(map(int, input().split()))


up, down = max(tree),0
result = 0

while down &lt;= up:
  mid = (up+down) // 2
  cnt = 0

  for t in tree:
    if t &gt; mid :
      cnt += t- mid

  if cnt &gt;= m:
    result = mid
    down = mid + 1

  else:
    up = mid - 1

print(result)</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[99클럽 코테 스터디 3일차 TIL + 백준 1072 게임]]></title>
            <link>https://velog.io/@hey_roha/99%ED%81%B4%EB%9F%BD-%EC%BD%94%ED%85%8C-%EC%8A%A4%ED%84%B0%EB%94%94-%EC%9D%BC%EC%B0%A8-TIL-%EB%B0%B1%EC%A4%80-1072-%EA%B2%8C%EC%9E%84</link>
            <guid>https://velog.io/@hey_roha/99%ED%81%B4%EB%9F%BD-%EC%BD%94%ED%85%8C-%EC%8A%A4%ED%84%B0%EB%94%94-%EC%9D%BC%EC%B0%A8-TIL-%EB%B0%B1%EC%A4%80-1072-%EA%B2%8C%EC%9E%84</guid>
            <pubDate>Sat, 02 Nov 2024 17:57:58 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/hey_roha/post/ddb0a850-9dab-477a-93e6-340b0c7c6611/image.png" alt=""></p>
<ul>
<li><p>이분 탐색 문제</p>
</li>
<li><p>처음 문제를 직면했을때 다른 방식으로 접근해 시간이 오래걸렸다. 우선, 단순히 z+1의 확률만 넘기면 된다고 생각하여 계산식으로 풀려고 했는데 그게 아니라 이분탐색으로 왼쪽 오른쪽의 수치를 비교해가면서 범위를 좁혀나가는 문제였다. 관련 이진탐색에 대해 깃헙에 개념을 정리해놓고, 관련 카테고리의 문제를 더 풀어야겠다. </p>
</li>
</ul>
<pre><code class="language-python">import math

x,y = map(int,input().split())
z = y * 100 // x

if z &gt;= 99:
  print(-1)

else:
  left, right = 1,x
  answer = 0
  while left &lt;= right:
    mid = (left + right) //2
    z_new = (y+mid) * 100 // (x+mid)

    if z_new &gt; z:
      answer = mid
      right = mid - 1
    else:
      left = mid + 1


  print(answer)</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Zero-Base]데이터 취업 스쿨 스터디 노트(딥러닝 - Beginning of Deeplearning)]]></title>
            <link>https://velog.io/@hey_roha/Zero-Base%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%B7%A8%EC%97%85-%EC%8A%A4%EC%BF%A8-%EC%8A%A4%ED%84%B0%EB%94%94-%EB%85%B8%ED%8A%B8%EB%94%A5%EB%9F%AC%EB%8B%9D-Beginning-of-Deeplearning</link>
            <guid>https://velog.io/@hey_roha/Zero-Base%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%B7%A8%EC%97%85-%EC%8A%A4%EC%BF%A8-%EC%8A%A4%ED%84%B0%EB%94%94-%EB%85%B8%ED%8A%B8%EB%94%A5%EB%9F%AC%EB%8B%9D-Beginning-of-Deeplearning</guid>
            <pubDate>Fri, 23 Aug 2024 16:57:29 GMT</pubDate>
            <description><![CDATA[<h2 id="딥러닝의-기초">딥러닝의 기초</h2>
<h3 id="tensorflow-소개">Tensorflow 소개</h3>
<blockquote>
<ul>
<li>머신러닝을 위한 오픈소스 플랫폼- 딥러닝 프레임워크</li>
</ul>
</blockquote>
<ul>
<li>구글이 주도저긍로 개발 - 구글 코랩에는 기본 장착</li>
<li>최근 2.x 버전이 발표</li>
<li>Keras(텐서플로우를 사용하기 쉽게 만들어주는 아이,&#39;간결함&#39;)라고 하는 고수준 API를 사용</li>
<li>파이토치와 함께 양대산맥</li>
<li>Tensor: 벡터나 행렬을 의미</li>
<li>Graph: 텐서가 흐르는 경로(혹은 공간)</li>
<li>Tensor Flow: 첸서가 그래프를 통해 흐른다.</li>
</ul>
<p><img src="https://velog.velcdn.com/images/hey_roha/post/5c001350-8c8c-49cf-a65e-8f0b68862ffa/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/66b86258-1da1-4c67-95b6-2433872a1fa0/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/b435e9d8-d046-4842-b7e2-a0a2d62d7264/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Zero-Base]데이터 취업 스쿨 스터디 노트(GPT - 자연어처리 기초)]]></title>
            <link>https://velog.io/@hey_roha/Zero-Base%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%B7%A8%EC%97%85-%EC%8A%A4%EC%BF%A8-%EC%8A%A4%ED%84%B0%EB%94%94-%EB%85%B8%ED%8A%B8GPT-%EC%9E%90%EC%97%B0%EC%96%B4%EC%B2%98%EB%A6%AC-%EA%B8%B0%EC%B4%88</link>
            <guid>https://velog.io/@hey_roha/Zero-Base%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%B7%A8%EC%97%85-%EC%8A%A4%EC%BF%A8-%EC%8A%A4%ED%84%B0%EB%94%94-%EB%85%B8%ED%8A%B8GPT-%EC%9E%90%EC%97%B0%EC%96%B4%EC%B2%98%EB%A6%AC-%EA%B8%B0%EC%B4%88</guid>
            <pubDate>Tue, 06 Aug 2024 07:57:02 GMT</pubDate>
            <description><![CDATA[<h2 id="motivation--direction">Motivation &amp; Direction</h2>
<p><img src="https://velog.velcdn.com/images/hey_roha/post/50f9d4de-ef9b-4d9c-9ecf-c386814c6d6b/image.png" alt=""></p>
<h2 id="자연어-데이터-특징">자연어 데이터 특징</h2>
<ul>
<li><strong>이미지</strong> : 이미지 안의 의미있는 정보는 위치에 무관/ convolution 연산은 <strong>위치에 무관한 지역적인 정보를</strong> 추출하기 좋은 연산</li>
<li><strong>자연어</strong> :문장을 구성하고 있는 단어들의 위치가 변해서는 안됨/ 단어들간의 관계가 중요하고 하나의 단어만 바뀌거나 추가되어도 전혀 다른 의미(index)를 가질 수 있음</li>
</ul>
<h2 id="자연어-데이터의-토큰화">자연어 데이터의 토큰화</h2>
<ul>
<li>hugging face와 같은 대중적인 공유 라이브러리가 존재하기 전까지 연구자들이 각각 토큰화를 임의로 진행했음.</li>
<li>이에 따라서 모델을 다운받아 실행시킬 경우 전혀 다른 결과가 나타남.</li>
<li>즉, 자연어에서의 토큰처리 과정에 대해 아는 것은 매우 중요함.</li>
</ul>
<h2 id="자연어-처리-task">자연어 처리 Task</h2>
<ul>
<li>하나의 문장을 여러 개로 나누고 나눈 토큰들의 결합분포로 문장에 대해서 확률을 계산</li>
</ul>
<h2 id="자연어-처리-metrics평가지표">자연어 처리 Metrics(평가지표)</h2>
<ul>
<li>BLEU(단어를 한번에 몇개 볼지 정함(n-gram))</li>
<li>Rouge(BLEU보다 더 fluency를 고려)</li>
<li>METEOR</li>
</ul>
<blockquote>
<p>세 지표 모두 길이에 의존적인지 아닌지 먼저 판단한다</p>
</blockquote>
<ul>
<li>Human Based Measures : 사람에게 시켜서 직접 측정하게 하기도 한다. 이렇듯 전처리(특히 번역문)는 정량적인 분석이 어렵다. (감정분석도 마찬가지)
<img src="https://velog.velcdn.com/images/hey_roha/post/4587b02f-19d6-413c-b554-34ae88fe47ce/image.png" alt=""></li>
</ul>
<hr>
<h2 id="자연어-처리-모델-기존-연구들">자연어 처리 모델 기존 연구들</h2>
<ul>
<li><p>어떤 한 문장을 분류하거나 혹은 이 문장을 내포하고 있는 어떤 벡터로 표현하고자 함</p>
</li>
<li><p>문장의 문맥을 하나의 벡터로 표현하기 위해서 인코딩</p>
</li>
<li><p>인코딩 전 tokenizing 진행</p>
</li>
<li><p>각 token을 숫자로 표현하고 벡터로 표현</p>
</li>
<li><p>각 token의 벡터를 encoding 시키면 n차원의 context vector가 됨.
<img src="https://velog.velcdn.com/images/hey_roha/post/27440176-530d-462a-8d63-01ed2febb719/image.png" alt=""></p>
</li>
<li><p>문맥을 알아내는 Enconder를 학습했다면 다양한 Task에 적용이 가능하다.
<img src="https://velog.velcdn.com/images/hey_roha/post/1f6789a1-89cb-4308-98f6-a7d64a8c686e/image.png" alt=""></p>
</li>
<li><p>문장은 순서를 가지고 있으니, 문장의 처음부터 끝까지 순서대로 입력을 받아서 최종적으로 벡터를 생성.
<img src="https://velog.velcdn.com/images/hey_roha/post/ab26ef67-59ec-4d9e-9eb1-2ebb59f25ca9/image.png" alt=""></p>
</li>
</ul>
<h3 id="rnn">RNN</h3>
<blockquote>
<p><strong>Recurent Neural Net</strong>: RNN, LSTM의 핵심 방법</p>
</blockquote>
<ul>
<li>input x_t가 들어가면 output은 h_t와 다음 A에게 들어간다.
<img src="https://velog.velcdn.com/images/hey_roha/post/2c4f41d4-d6aa-4fc7-8a04-1930a0076e4b/image.png" alt=""></li>
<li>문장은 단어들이 순서를 가지고 있는데, 중요한 단어들이 처음 부분에 있다면 정보 손실이 발생할 수 있지 않을까?(정보손실) 에 대한 의문 제기 -&gt; 각각의 단어에 대해서 Attention을 줄 수 있다면 좋겠다!</li>
<li>즉, I 를 번역할때는 &quot;나는&quot;에 attention score 줌.</li>
<li>아래에서 나는/ 사과를 / 좋아한다 h1,h2,h3를 h&#39;_ j 와 각각 결합시켜 유사도 점수(attention score)를 구하고 softmax를 시켜 확률적 수치를 출력
<img src="https://velog.velcdn.com/images/hey_roha/post/57fb5208-bd7c-4068-9a78-5999998b84bf/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/59b47f8e-f105-468f-acd9-1fabf8ffe160/image.png" alt=""></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Zero-Base]데이터 취업 스쿨 스터디 노트(ML-Model Ensemble)]]></title>
            <link>https://velog.io/@hey_roha/Zero-Base%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%B7%A8%EC%97%85-%EC%8A%A4%EC%BF%A8-%EC%8A%A4%ED%84%B0%EB%94%94-%EB%85%B8%ED%8A%B8ML-Model-Ensemble</link>
            <guid>https://velog.io/@hey_roha/Zero-Base%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%B7%A8%EC%97%85-%EC%8A%A4%EC%BF%A8-%EC%8A%A4%ED%84%B0%EB%94%94-%EB%85%B8%ED%8A%B8ML-Model-Ensemble</guid>
            <pubDate>Mon, 29 Jul 2024 07:50:30 GMT</pubDate>
            <description><![CDATA[<h2 id="앙상블-기법">앙상블 기법</h2>
<h3 id="har-데이터">HAR 데이터</h3>
<blockquote>
<p><strong>Human Activity Recognition</strong></p>
</blockquote>
<ul>
<li>인간의 몸에 디바이스를 부착해 값을 측정한 데이터</li>
</ul>
<p><img src="https://velog.velcdn.com/images/hey_roha/post/119932f4-e833-462d-b285-56ebb66b9d66/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/7c37e23f-cc4a-4d98-ae03-8906c00e7d4e/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Zero-Base]데이터 취업 스쿨 스터디 노트(Tableau for Business Intelligence)]]></title>
            <link>https://velog.io/@hey_roha/Zero-Base%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%B7%A8%EC%97%85-%EC%8A%A4%EC%BF%A8-%EC%8A%A4%ED%84%B0%EB%94%94-%EB%85%B8%ED%8A%B8Tableau-for-Business-Intelligence</link>
            <guid>https://velog.io/@hey_roha/Zero-Base%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%B7%A8%EC%97%85-%EC%8A%A4%EC%BF%A8-%EC%8A%A4%ED%84%B0%EB%94%94-%EB%85%B8%ED%8A%B8Tableau-for-Business-Intelligence</guid>
            <pubDate>Mon, 29 Jul 2024 04:40:00 GMT</pubDate>
            <description><![CDATA[<h2 id="기본-차트만들기">기본 차트만들기</h2>
<h3 id="테이블-막대-라인">테이블/ 막대/ 라인</h3>
<ul>
<li><strong>테이블</strong>
<img src="https://velog.velcdn.com/images/hey_roha/post/c296ff02-0bed-4e1d-b6ed-4b332681b86b/image.png" alt=""></li>
<li><strong>막대</strong>
<img src="https://velog.velcdn.com/images/hey_roha/post/4bbf9e6c-4b07-4bd8-80a6-f631a034d631/image.png" alt="">
(가운데 맞춤, 전체보기, 축 숫자 백만단위까지 표시)
<img src="https://velog.velcdn.com/images/hey_roha/post/6fac216b-914e-4168-99f9-dbcd33db73a8/image.png" alt=""></li>
</ul>
<blockquote>
<ul>
<li>차원을 먼저 선택하고 측정값을 그 다음에 선택하면 막대가 되고, 측정값을 먼저 선택하면 테이블이 된다.</li>
</ul>
</blockquote>
<ul>
<li><strong>라인</strong></li>
<li>날짜 데이터를 넣으면 태블로에서 자동으로 시간별 추세를 보기 쉽게 라인으로 만들어준다.
<img src="https://velog.velcdn.com/images/hey_roha/post/28572ca2-fdd4-42ee-820a-1783f3de4b5b/image.png" alt="">
(평균 라인을 통해 평균 삽입 가능)
<img src="https://velog.velcdn.com/images/hey_roha/post/5ebb3aab-4357-4277-a800-ae470748feca/image.png" alt="">
(평균 라인을 선택 후 편집을 누른 뒤 값을 나타낼 수 있음)
<img src="https://velog.velcdn.com/images/hey_roha/post/845b338a-6fbb-40ea-8094-c56939c0730f/image.png" alt=""></li>
</ul>
<h3 id="파이-트리맵-누적막대">파이/ 트리맵/ 누적막대</h3>
<ul>
<li><p><strong>파이</strong></p>
</li>
<li><p>비중 표시할때 유리
(매출을 각도 부분에 넣어주어야 제대로 비중 표시가 된다.)
<img src="https://velog.velcdn.com/images/hey_roha/post/2ef7c5c7-36ee-427c-be5d-fb6fa0ed30fe/image.png" alt="">
(구성비율을 선택하면 값이 비율로 표시된다.)
<img src="https://velog.velcdn.com/images/hey_roha/post/b9fe27ed-6347-42dd-8c94-cec68620a92b/image.png" alt="">
(텍스트 수정을 통해 아래와 같이 시각적으로 보기 편하게 나타낼 수 있다.)
<img src="https://velog.velcdn.com/images/hey_roha/post/acef542f-4c6c-4743-a5e0-922b365363c3/image.png" alt=""></p>
</li>
<li><p><strong>트리맵</strong></p>
</li>
<li><p>전체를 기준으로 얼마만큼의 비중을 차지하는지 보여준다.
(아래의 경우 분류할 가짓수가 많아지면 보기 어렵다. 트리맵은 이렇게 분류가 많을 경우 사용한다.)
<img src="https://velog.velcdn.com/images/hey_roha/post/53d057de-94f0-4f8c-94e7-9d0e989a0521/image.png" alt=""></p>
</li>
<li><p>ctrl로 동시에 필드를 집고 표현 방식의 그래프를 선택한다.
<img src="https://velog.velcdn.com/images/hey_roha/post/b7735bbb-3d0f-4c03-8f0d-6387334f5ff7/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/97a7cc44-4d33-41ef-a6dd-63b4d81e8969/image.png" alt=""></p>
</li>
<li><p><strong>누적막대</strong>
<img src="https://velog.velcdn.com/images/hey_roha/post/d3f53fc4-ad47-46e4-b158-cb665e3706ca/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/d0d72ea3-0e29-4dea-8146-a4a9d3e7986a/image.png" alt="">
(고객세그먼트 드래그를 통해 순서를 바꾸거나 해당 정보만 강조해서 볼 수 있다.)
<img src="https://velog.velcdn.com/images/hey_roha/post/5f06682a-2ee1-4949-8986-8739f8f00ef2/image.png" alt=""></p>
</li>
</ul>
<blockquote>
<p>실무에서 쓴 경험은 거의 없으니 일단 참고하라고 하심</p>
</blockquote>
<h3 id="대시보드">대시보드</h3>
<blockquote>
<p><strong>대시보드</strong>: 다양한 데이터를 동시에 볼 수 있게 하는 여러 뷰의 모음.</p>
</blockquote>
<ul>
<li><p>대시보드를 <strong>누가</strong> / <strong>어떤 목적</strong>으로 사용할 것인지 / <strong>전달하려는 정보</strong>가 뭔지 파악</p>
</li>
<li><p><strong>디스플레이 환</strong>경이 태블릿인지 핸드폰인지 pc인지 파악</p>
</li>
<li><p><strong>레이아웃</strong> 배치 - &gt; 핵심 내용은 <strong>왼쪽 상단</strong>에 위치</p>
</li>
<li><p>대시보드 추가 버튼을 선택하여 생성
<img src="https://velog.velcdn.com/images/hey_roha/post/d9c46b15-3c6a-4f8e-9d2c-788783b0cb52/image.png" alt=""></p>
</li>
<li><p>만든 시트들을 하나씩 가져와서 배치하기
<img src="https://velog.velcdn.com/images/hey_roha/post/e144663c-b2f7-4582-84a6-c6befac3799f/image.png" alt=""></p>
</li>
</ul>
<h2 id="분산형-차트만들기">분산형 차트만들기</h2>
<blockquote>
<p><strong>분산형 차트</strong>: 측정값간의 관계를 파악하기 위해 사용. 2~4개의 측정값을 한번에 올린뒤 차원으로 나눠 정보를 세분화함. 추세선을 삽입해 알아보기 쉽게 할 수 있다.</p>
</blockquote>
<ul>
<li>전체 데이터 scatter형식으로 표현하고 색상표를 더블클릭해서 고급&gt;&gt; 기준값을 변경할 수도 있다.
<img src="https://velog.velcdn.com/images/hey_roha/post/358b1c87-daaf-4c37-90ab-4ae851fdc1ee/image.png" alt=""></li>
<li>추세선 삽입 가능
<img src="https://velog.velcdn.com/images/hey_roha/post/81d80154-f19a-45b4-ae4f-ef6a52e5ce4d/image.png" alt=""></li>
</ul>
<h3 id="데이터-설명">데이터 설명</h3>
<ul>
<li>outlier가 왜 발생하게 되었는지 알아보기</li>
<li>저 버튼을 클릭해 데이터 가이드를 확인할 수 있고, 왜 낮은값이 발생하게 되었는지를 파악할 수 있다.</li>
</ul>
<p><img src="https://velog.velcdn.com/images/hey_roha/post/21c42694-ecd5-40d0-b812-82329ac66531/image.png" alt=""><img src="https://velog.velcdn.com/images/hey_roha/post/324d1e62-d2c5-4822-af7b-5aee04fefde9/image.png" alt=""></p>
<h2 id="이중축-차트만들기">이중축 차트만들기</h2>
<ul>
<li>두개의 측정값을 사용하여 이중축을 만들어 더 효과적인 시각화 표현</li>
<li>많은 내용을 담고싶을때 이중축 사용</li>
<li>하나의 뷰 안에서 축을 이중으로 사용</li>
<li>제한된 공간에서 여러개의 데이터를 비교하기 위해 사용</li>
</ul>
<h3 id="콤비네이션-라인--영역">콤비네이션/ 라인 + 영역</h3>
<blockquote>
<p><strong>콤비네이션</strong>: 막대 + 라인차트</p>
</blockquote>
<ul>
<li>파이썬 시각화에서 hue값을 주는 것과 유사 </li>
</ul>
<p><img src="https://velog.velcdn.com/images/hey_roha/post/feb74fe6-cc74-4029-8e92-16f77585be85/image.png" alt=""></p>
<ul>
<li>콤비네이션을 사용하면 아래와 같이 매출은 증가하는데 수익은 감소한다는 등의 새로운 인사이트를 찾아낼 수 있다. 
<img src="https://velog.velcdn.com/images/hey_roha/post/42acc76b-b18c-44cc-bb7a-9730ec9a3e79/image.png" alt=""></li>
<li>두개의 같은 차트를 만들어 하나는 라인 , 하나는 원을 만든다음 이중축을 사용해서 표현한다. 이때 축이 맞지 않으니 축 동기화를 통해 축을 맞춰주는 과정이 필요하다.
<img src="https://velog.velcdn.com/images/hey_roha/post/96711682-1eec-49c7-9ee8-fba8271bc709/image.png" alt=""></li>
</ul>
<p><img src="https://velog.velcdn.com/images/hey_roha/post/4a593354-c731-4ee6-b2e6-c6b0981255e7/image.png" alt=""></p>
<blockquote>
<p><strong>라인 + 영역</strong></p>
</blockquote>
<ul>
<li>필드를 오른쪽 버튼을 누르고 가져와서 분기를 설정해줌.
<img src="https://velog.velcdn.com/images/hey_roha/post/a78ed6db-cce5-45dd-907e-05487ef74f96/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/6fee0430-8926-4642-ab4a-8bee5ba0ea4e/image.png" alt=""></li>
<li>필드의 퀵테이블 계산의 비율차이를 선택하면 전 분기 대비 성장세를 확인할 수 있다.
<img src="https://velog.velcdn.com/images/hey_roha/post/1dc2ab92-bffb-40dc-8b21-630d495020e4/image.png" alt=""></li>
<li>레이블로 수치 표시, 축동기화 후, 라인이 영역차트보다 앞에 있게 하기위해 맨 앞으로 이동을 선택한다.
<img src="https://velog.velcdn.com/images/hey_roha/post/7f0b608e-14aa-4e38-922a-dd8a051d88c7/image.png" alt=""></li>
</ul>
<h3 id="응용차트-도넛">응용차트/ 도넛</h3>
<blockquote>
<p><strong>도넛</strong> : 실무에서 많이 사용한다.</p>
</blockquote>
<ul>
<li>열에 숫자 0을 넣어서 축 생성
<img src="https://velog.velcdn.com/images/hey_roha/post/971324dd-8aaf-4e16-b25f-650185e2af6a/image.png" alt=""></li>
<li>이상태로 만든 뒤 이중축 만들기
<img src="https://velog.velcdn.com/images/hey_roha/post/93ab1f01-4499-4c3e-8ed8-438eecdae107/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/a65aa6e4-dd46-45d5-bb63-477b3851f61f/image.png" alt=""></li>
<li>화면 뷰 우클릭을 통해 라인을 다 제거해준다.
<img src="https://velog.velcdn.com/images/hey_roha/post/ad1626ff-cd09-41ac-92c2-a5d057c7cd28/image.png" alt=""></li>
<li>도구설명 제거를 통해 아래의 0 값을 제거할 수 있다.
<img src="https://velog.velcdn.com/images/hey_roha/post/7131c70e-f2ac-4ebb-8b00-c8d640121e32/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/aa28fda6-14a5-452b-a7b6-6bf54d1c80da/image.png" alt=""></li>
</ul>
<h3 id="대시보드-만들기레이아웃-중심">대시보드 만들기(레이아웃 중심)</h3>
<ul>
<li>대시보드를 만들어 &quot;동작&quot; 기능을 추가해, 해당하는 부분의 데이터만 강조해서 볼 수 있다.(필터와 하이라이트를 가장 많이 사용한다.)
<img src="https://velog.velcdn.com/images/hey_roha/post/5dfa9754-3be4-40ca-8b1e-3b4727945e44/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/cd901286-70f1-4e6f-93be-189816ba905c/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/db58623a-a86d-46b3-95c4-e98234e37334/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/d507d16f-878e-459a-8ffb-f107de948c33/image.png" alt=""></li>
</ul>
<h2 id="다양한-기능-활용">다양한 기능 활용</h2>
<h3 id="그룹-집합-결합된-집합">그룹/ 집합/ 결합된 집합</h3>
<ul>
<li>만들기 부분을 통해 집합이나 그룹을 만들어서 아래와 같이 표시할 수 있음.</li>
<li>3개 이상으로 나눌 경우에는 <strong>그룹</strong> 으로 사용해야 함.
<img src="https://velog.velcdn.com/images/hey_roha/post/e5323430-7f37-4455-8221-ceb85c999865/image.png" alt=""></li>
<li>집합을 사용해서 필요한 데이터를 IN/OUT으로 표현 가능
<img src="https://velog.velcdn.com/images/hey_roha/post/1a69f534-bb40-4b08-b0d0-26501a4efa50/image.png" alt=""></li>
</ul>
<h3 id="계층-드릴다운">계층/ 드릴다운</h3>
<ul>
<li>화면에서 드릴다운해서 값을 세부적으로 찾을 수 있음.</li>
<li>플러스 버튼이 드릴다운.</li>
<li>플러스 버튼이 생기면 계층이 잘 만들어진 것.</li>
<li>동일한 시군구가 있을 경우 에러가 생길 수 있으므로 계층을 이용하는 것이 좋음.</li>
<li>하위에 있을 필드를 상위에 있을 필드 위로 드래그하면 계층 생성이 가능함.</li>
<li>날씨나 시간필드의 경우 자동으로 계층이 생성됨.
<img src="https://velog.velcdn.com/images/hey_roha/post/74cb82db-35c0-4c2f-baca-f280d030095c/image.png" alt=""></li>
</ul>
<h2 id="맵-차트만들기">맵 차트만들기</h2>
<ul>
<li>맵에서 계층을 사용하는 이유는 사용하지 않을 경우 일부 데이터가 누락될 수 있으므로 사용한다.</li>
<li>동일한 시군구의 이름을 시도에서 사용할 경우 에러 발생</li>
<li>세번째 그림과 같이 강서구의 경우 부산과 서울에 둘 다 존재
<img src="https://velog.velcdn.com/images/hey_roha/post/a9f5e240-06e6-42e5-b3f4-7f04116470e2/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/1b6145da-3331-43a6-b48f-78227c540f97/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/8c41b67b-1572-417a-b4e4-34463adfed8d/image.png" alt=""></li>
</ul>
<ul>
<li><p>국가의 지리적 역할을 사용하여 위도 경도를 지도에 표시할 수 있다.
<img src="https://velog.velcdn.com/images/hey_roha/post/0ae8e6be-78bd-4ae8-89d9-b00bd04be6db/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/df3b9126-30b5-4fcf-91bc-b149b01ac102/image.png" alt=""></p>
</li>
<li><p>맵차트를 이용해 수익과 매출을 시각화 할 수 있음.
<img src="https://velog.velcdn.com/images/hey_roha/post/7deb23d6-ef3a-40bb-8b18-e415c46ac377/image.png" alt=""></p>
</li>
<li><p>제품 대분류, 소분류에 대한 매출 시트를 새로 만들고, 도구설명에 시트를 삽입하면 아래와 같이 마우스 오버했을때 매출 정보가 같이 뜬다.
<img src="https://velog.velcdn.com/images/hey_roha/post/9ec3c3e2-b3ab-4211-a456-a3b6c9dceb7b/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/45090cf0-a9de-4bd4-a17f-a2e095087a8c/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/87176b0b-dd44-4e7b-bb15-ada16a56bba4/image.png" alt=""></p>
</li>
<li><p>배경맵을 위성으로 만든 뒤, 필터를 설정하고 대시보드에 시트를 올림.</p>
</li>
<li><p>드롭다운, 부동 설정하기</p>
</li>
<li><p>지역별로 확인 가능
<img src="https://velog.velcdn.com/images/hey_roha/post/5967e528-e860-4290-87aa-49c37f76a6be/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/c2c05d97-2b32-4a99-ba57-fee742d59cd9/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/694a0f79-acb2-408b-842a-e4ae13e1e528/image.png" alt=""></p>
</li>
</ul>
<h2 id="응용-차트만들기">응용 차트만들기</h2>
<h3 id="워드-클라우드">워드 클라우드</h3>
<ul>
<li>동시에 두 필드를 잡아 마크에 내려놓기</li>
<li>제품 중분류에 대한 워드를 나타내고자 하므로 <strong>제품 중분류를 레이블에</strong> 가져가기
<img src="https://velog.velcdn.com/images/hey_roha/post/c8c1c5d5-e364-494f-9f6c-6f16fb555672/image.png" alt=""></li>
<li>매출에 대한 크기를 알아야 하므로 매출 필드를 크기로 이동시킴</li>
<li>이 크기를 워드의 형태 크기로 알아야 하므로 그래프를 자동-&gt; 텍스트로 변경
<img src="https://velog.velcdn.com/images/hey_roha/post/f7af492b-cb4f-4b1e-ae0c-a36186d86509/image.png" alt=""></li>
<li>수익을 색상별로 표시해 같이 볼 수 있다.
<img src="https://velog.velcdn.com/images/hey_roha/post/66d70b27-5733-4d67-9285-a5ca6f841b28/image.png" alt=""></li>
</ul>
<h3 id="달력형-히트맵">달력형 히트맵</h3>
<blockquote>
<p>유용하게 사용될 수 있음</p>
</blockquote>
<ul>
<li>년단위의 주문일자를 주단위로 변경-&gt; 행열 전환
<img src="https://velog.velcdn.com/images/hey_roha/post/86a71826-d5a0-4355-b36c-139e739592cb/image.png" alt=""></li>
<li>매출을 텍스트에 올려놓고. 열에 주문일자를 우클릭으로 가져다 놓은 후 요일을 선택하기.
<img src="https://velog.velcdn.com/images/hey_roha/post/bd5b08c4-6a1f-4d00-afc6-a99aae4a93dc/image.png" alt=""></li>
<li>필터에 주문일자 필드를 넣어 달력형으로 나타내기
<img src="https://velog.velcdn.com/images/hey_roha/post/d614ddcd-6094-4f35-9a1d-b7372ce5bd2e/image.png" alt=""></li>
<li>총계를 사용해 행별로 주차별 매출을 나타내고 사각형 그래프 모양과 색상을 사용해 효과적으로 시각화 함.
<img src="https://velog.velcdn.com/images/hey_roha/post/f348aeb4-3d70-4978-93e0-30e8890e3ff9/image.png" alt=""></li>
<li>월을 하나씩 보고싶다면 필터 목록을 누르고 아래 세모표시에 슬라이더를 사용해 확인이 가능하다.
<img src="https://velog.velcdn.com/images/hey_roha/post/50650572-c273-42cc-b81d-743873a8d3e7/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/4381526d-0625-4c3b-8e2a-27aba9da5692/image.png" alt=""></li>
</ul>
<h2 id="대시보드-만들기동작">대시보드 만들기(동작)</h2>
<h3 id="필터-하이라이트">필터, 하이라이트</h3>
<ul>
<li>상단의 대시보드에서 동작 클릭-&gt; 동작추가</li>
<li>ctrl로 복수개를 선택해 여러개의 값을 한번에 확인이 가능하다.</li>
<li>esc로 선택 해제 가능
<img src="https://velog.velcdn.com/images/hey_roha/post/69d4e3a6-9e9e-4315-9801-4e07b2c53e16/image.png" alt=""></li>
</ul>
<h3 id="시트이동">시트이동</h3>
<ul>
<li>연관 대시보드로의 클릭을 통해 이동이 가능</li>
<li>행 선반에 &quot;&quot;로 (만들 버튼의 제목)을 입력한다.</li>
<li>서식 부분에 들어가 음영부분 조절해주기
<img src="https://velog.velcdn.com/images/hey_roha/post/550f2a8a-4e9e-44f1-a114-383797b8cc76/image.png" alt=""></li>
<li>글자 색상 및 크기 조정
<img src="https://velog.velcdn.com/images/hey_roha/post/667db7fd-85a7-4f71-bde1-11fcb18628bf/image.png" alt=""></li>
<li>새로운 대시보드를 만들고 방금 만든 시트 넣어주기</li>
<li>부동을 선택하고 행 숨기기, 크기조절
<img src="https://velog.velcdn.com/images/hey_roha/post/0db229d1-ebcf-485c-92e3-92a9d4affb23/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/be2b0a7b-e5b1-4750-83fb-a2792af95ca5/image.png" alt=""></li>
<li>메뉴를 눌러주고 이동할 대상 시트 선택
<img src="https://velog.velcdn.com/images/hey_roha/post/5c897b3a-e14c-4e85-ab30-8e56aa4822e7/image.png" alt=""></li>
<li>클릭하면 이동하게됨.
<img src="https://velog.velcdn.com/images/hey_roha/post/1ff11887-8c1f-4ce5-b88d-1efd314b3f15/image.png" alt=""></li>
</ul>
<h3 id="매개변수-변경">매개변수 변경</h3>
<p><img src="https://velog.velcdn.com/images/hey_roha/post/bf61864c-b415-46e8-bee9-8e4172563f99/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/7c990bf4-6465-4d19-8124-c2cc7959ef70/image.png" alt=""></p>
<ul>
<li>매개변수 표시를 하게 될 경우 단독으로 사용할 수 없고, 참조선 필드나 계산된 필드와 같이 사용이 가능
<img src="https://velog.velcdn.com/images/hey_roha/post/c9f6fb67-1ddf-4109-aeb7-dce79aaa8095/image.png" alt=""></li>
<li>계산된 필드 만들기
<img src="https://velog.velcdn.com/images/hey_roha/post/63180883-e17a-4539-bc7f-2a936ea6595f/image.png" alt=""></li>
<li>드래그로 가져오기
<img src="https://velog.velcdn.com/images/hey_roha/post/d42bf695-fff5-43e2-bfda-f5b848193760/image.png" alt=""></li>
<li>간단한 함수 만들어주기 (매출을 누르면 매출 합계가 나온다는 뜻)
<img src="https://velog.velcdn.com/images/hey_roha/post/4ea4c971-74e6-4b42-ae35-6318b79805f0/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/f52b5442-024e-4929-b200-41e461b3a7a9/image.png" alt=""></li>
<li>주문 일자별 매출, 수량, 수익
<img src="https://velog.velcdn.com/images/hey_roha/post/3fa00b09-e570-4fd3-b90f-bd9e977d59d8/image.png" alt=""></li>
<li>매개변수 동작 추가를 통해 각 매출, 수량, 수익을 누를때마다 추이가 변하는 것을 확인할 수 있다.
<img src="https://velog.velcdn.com/images/hey_roha/post/a8448c9f-3459-4f5c-8cda-40421e3e155c/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/92a9d968-48ba-4583-8a7a-4e91f197cef6/image.png" alt=""></li>
</ul>
<h3 id="집합-값-변경">집합 값 변경</h3>
<ul>
<li>집합에 있는 값을 변경해 주는 것(인/아웃으로 표시해서 대상값을 표시해주는 것)</li>
<li>IN/OUT으로 변경해 집합 동작을 추가하여 해당 집합을 선택했을 경우의 변화를 보여준다.
<img src="https://velog.velcdn.com/images/hey_roha/post/b54b2756-f2fd-40a1-aaba-83c3673c4613/image.png" alt=""></li>
</ul>
<h3 id="url동작">URL동작</h3>
<ul>
<li>미리 지정해놓은 외부 리소스로 연결시키는 방식</li>
<li>시각적 흐름이 깨지지 않는다는 점에서 효율적임.</li>
<li>상단의 지역을 선택할 경우 네이버에 해당 지역을 검색하는 동작을 만들고자 함.</li>
<li>개체 부분에 웹페이지를 클릭 후 QUERY부분 까지만 NAVER에서 복사해서 붙여넣기
<img src="https://velog.velcdn.com/images/hey_roha/post/fea3a1bf-1fc0-4604-9e56-e1c6f26424c3/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/506bf570-6a7f-483c-83f4-40539a5028f4/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/34971a1f-017f-41be-ba74-b48fefe7622a/image.png" alt=""></li>
</ul>
<h3 id="개체">개체</h3>
<ul>
<li>레이아웃을 변경시키는 기능, 이미지, 텍스트 또는 다운로드 할 수 있는 기능이 있다.
<img src="https://velog.velcdn.com/images/hey_roha/post/326e57d3-9b72-4018-8302-39ef1f4024ee/image.png" alt=""></li>
<li>이번 강의에서는 탐색- 네비게이션 기능만 다룰 것임.</li>
<li>탐색부분을 대쉬보드에 드래그해 더블클릭</li>
<li>이동할 위치와 이미지 또는 텍스트를 입력한 뒤 ALT+CLICK을 하면 해당 시트로 이동하게됨.
<img src="https://velog.velcdn.com/images/hey_roha/post/9eae1ee5-84a9-4558-ba5c-ed4f4eec030f/image.png" alt=""></li>
</ul>
<h3 id="레이아웃">레이아웃</h3>
<ul>
<li>레이아웃에는 바둑판 형식과 부동 형식이 있다.</li>
<li>바둑판형식이 기본값이며 겹치지 않고, 다른 시트의 크기에 따라 변화되며, 부동형식의 경우 겹치게 배치가 가능하며 다른 컨테이너에 영향을 받지 않기 때문에 지정한 사이즈가 그대로 유지된다.</li>
<li>부동의 경우 범례나 필터에 사용.</li>
</ul>
<h2 id="스토리-만들기">스토리 만들기</h2>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Zero-Base]데이터 취업 스쿨 스터디 노트(Tableau for Business Analytics)]]></title>
            <link>https://velog.io/@hey_roha/Zero-Base%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%B7%A8%EC%97%85-%EC%8A%A4%EC%BF%A8-%EC%8A%A4%ED%84%B0%EB%94%94-%EB%85%B8%ED%8A%B8Tableau-for-Business-Analytics</link>
            <guid>https://velog.io/@hey_roha/Zero-Base%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%B7%A8%EC%97%85-%EC%8A%A4%EC%BF%A8-%EC%8A%A4%ED%84%B0%EB%94%94-%EB%85%B8%ED%8A%B8Tableau-for-Business-Analytics</guid>
            <pubDate>Sun, 28 Jul 2024 17:00:35 GMT</pubDate>
            <description><![CDATA[<h2 id="퀵테이블-계산">퀵테이블 계산</h2>
<h3 id="누계">누계</h3>
<blockquote>
<p>이중축 review: 행에 두개의 비교하고자 하는 필드가 있을때 이중축을 사용하여 같은 표로 비교 표현 가능
<img src="https://velog.velcdn.com/images/hey_roha/post/33059e56-5d33-47b1-b8f7-21771f44cb82/image.png" alt=""></p>
</blockquote>
<h3 id="차이">차이</h3>
<ul>
<li>이전 분기와의 차이</li>
<li>2016년 이전의 값은 비교대상이 없으므로 null 값이 생김(숨기기로 숨기기 가능)
<img src="https://velog.velcdn.com/images/hey_roha/post/d9a959fc-439d-4d69-b8c3-8c9cbefabfd8/image.png" alt=""></li>
<li>색상을 이용해 시각화 가능
<img src="https://velog.velcdn.com/images/hey_roha/post/9fcd7686-a60a-4c94-83ab-41bc50fad696/image.png" alt=""></li>
<li>테이블로도 차이 확인 가능
<img src="https://velog.velcdn.com/images/hey_roha/post/d240d871-94ff-4a24-9950-d50419b0e504/image.png" alt=""></li>
<li>기준을 첫번째로 정하여 2016년 1월과 비교함
<img src="https://velog.velcdn.com/images/hey_roha/post/62dd304e-4ca3-4a9e-924f-417dc4ecaf32/image.png" alt=""></li>
<li>이때 기준이 각 년도의 1월과 비교하기 위해서는 패널 아래로를 선택하면됨
<img src="https://velog.velcdn.com/images/hey_roha/post/f2728b76-2c21-478f-a6bf-28e7a1dd858e/image.png" alt=""></li>
</ul>
<h3 id="구성-비율">구성 비율</h3>
<ul>
<li>대분류의 차원을 해제하고 분석의 총계를 소계로 설정하면 다음과 같이 각 대분류별 비율을 확인할 수 있다.
<img src="https://velog.velcdn.com/images/hey_roha/post/96d24a10-01e2-4526-a4bf-90abdd2bc259/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/bf11b33d-317e-4801-b770-3e453da1c870/image.png" alt=""></li>
</ul>
<h3 id="순위">순위</h3>
<ul>
<li>앞의 구성비율과 마찬가지로 공통부분인 대분류를 해제해주면 대분류 내의 순위가 매겨지게 된다.
<img src="https://velog.velcdn.com/images/hey_roha/post/72081ade-6b00-4f94-a039-7871d3342148/image.png" alt=""></li>
<li>측정값을 두개로 설정해 전체와 부분 순위 비교가 가능하다.
<img src="https://velog.velcdn.com/images/hey_roha/post/2a25e930-991e-4813-b866-0d53d479c1b3/image.png" alt=""></li>
<li>측정값을 원래 측정값 필드로 드래그해서 가져다 놓으면 이름 변경이 가능하다.
<img src="https://velog.velcdn.com/images/hey_roha/post/5593b97b-0c7d-4bfc-9b60-83d8964d119f/image.png" alt=""></li>
</ul>
<h3 id="비율-차이">비율 차이</h3>
<ul>
<li>앞에 있는 데이터의(직전값) 증감을 알려줌</li>
<li>비율 차이가 차이보다 더 많이 쓰이긴 함
<img src="https://velog.velcdn.com/images/hey_roha/post/f5217218-a651-4005-9554-40c10649c5f3/image.png" alt=""></li>
</ul>
<h3 id="백분위수">백분위수</h3>
<ul>
<li>필드의 합계 매출을 선택하면 내림차순 정렬이됨.
<img src="https://velog.velcdn.com/images/hey_roha/post/0773f44b-3fb4-4ba6-82dc-ea3794221027/image.png" alt=""></li>
<li>전체 고객중 가장 많이 차지하는 매출을 전체대비 퍼센트로 알려줌
<img src="https://velog.velcdn.com/images/hey_roha/post/8c3c0d1c-7a3b-4e3b-a354-9a63e0ed9357/image.png" alt=""></li>
<li>일반적으로 상위 표현은 100%가 아닌 0.1%로 얘기하기 때문에 테이블 게산에서 계산 유형을 내림차순으로 바꿔준다.
<img src="https://velog.velcdn.com/images/hey_roha/post/b1b29781-00fb-41de-8490-6522fa374ac0/image.png" alt=""></li>
</ul>
<h3 id="이동-평균">이동 평균</h3>
<blockquote>
<p>성과에 대한 기준을 나타낼 수 있으며 이동평균선을 기준으로 위에 있으면 성과가 좋고, 아래 있으면 성과가 낮은 것을 시사할 수 있다.</p>
</blockquote>
<ul>
<li>평균을 구하는 기간을 설정하고, 그 기간의수를 나눠줌.</li>
<li>주식데이터에 주로 사용되고, 5/20/60/120일 주로 4가지로 나누어서 사용한다.
<img src="https://velog.velcdn.com/images/hey_roha/post/ec302522-3fd2-46dd-a22c-912dbde6042b/image.png" alt=""></li>
<li>이런식으로 축 안에 매출을 드래그해서 넣어줌.</li>
<li>이전 2에서 0까지의 평균(즉, 현재 매출에서 전전 매출까지의 평균을 구한다.)
<img src="https://velog.velcdn.com/images/hey_roha/post/91e16c23-8777-42a2-93e9-49da0e15472a/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/f0646b6d-aa29-4dab-aa6e-5230e6920530/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/3f268888-10ce-476c-9a31-a8a54057a0f6/image.png" alt=""></li>
<li>이동평균을 설정한 측정값의 테이블 계산 값을 바꿔주면 평균을 나눠주는 기간이 길어지게 된다.
<img src="https://velog.velcdn.com/images/hey_roha/post/7549326d-a060-419a-bcb0-485bc1d0a326/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/d364e968-5ae4-44e9-971d-a81843adb045/image.png" alt=""></li>
</ul>
<h3 id="ytd-총계">YTD 총계</h3>
<blockquote>
<p>Year to Date: 해당년도 시작일부터 현재까지의 총계</p>
</blockquote>
<p>-각 해마다 1월부터 12월까지의 누계를 보여줌
<img src="https://velog.velcdn.com/images/hey_roha/post/53f3907a-9a83-4451-92ab-d81ae15eff1f/image.png" alt=""></p>
<ul>
<li>누계와 비슷하지만 누계의 경우 다음해까지의 누적까지 보여줌.
<img src="https://velog.velcdn.com/images/hey_roha/post/f3cddead-36fd-40cc-be40-9aaa42a1984b/image.png" alt=""></li>
</ul>
<h3 id="통합-성장률연평균-성장률-cagr">통합 성장률(연평균 성장률 CAGR)</h3>
<blockquote>
<p>연평균 성장률(Compound Annual Growth Rate): 여러 해 동안의 성장들을 평균으로 환산한 것으로, 매년 성장률을 산술평균이 아닌 기하평균으로 환산한다.
$=(최종연도값/최소연도값)^(1/연도간격)-1$</p>
</blockquote>
<p><img src="https://velog.velcdn.com/images/hey_roha/post/d40a4411-5b75-4738-9aeb-e9100518f9a5/image.png" alt=""></p>
<h2 id="계산된-필드">계산된 필드</h2>
<p><img src="https://velog.velcdn.com/images/hey_roha/post/7f173c03-a6a3-48c5-8e47-671dc24a3f27/image.png" alt=""></p>
<blockquote>
<p>계산된 필드 구성요소 </p>
</blockquote>
<ul>
<li>필드: 데이터 원본이 존재하는 필드를 활용해 새로운 필드를 만든다.</li>
<li>연산자: 함수, 필드, 매개변수 등을 연결하고 계산을 판단하는 요소이다.</li>
<li>매개변수: 상수 값을 동적인 값으로 변경해주는 변수이다.(최근1년, 최근3년 등)</li>
<li>함수: 새로운 계산식을 적용하기 위해 기존 데이터 원본의 필드에 유형 및 역할을 결정하는데 영향을 준다.</li>
</ul>
<h3 id="연산자">연산자</h3>
<ul>
<li>일반적으로 주문 건수는 테이블에 나타나지 않기 때문에 주문 번호로 계산해 주어야 하고, 중복이 겹치지 않도록 고유로 계산해 주어야 한다.(countd()함수 사용)
<img src="https://velog.velcdn.com/images/hey_roha/post/891f8690-0e1a-463b-b88e-9beae239cc0a/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/bc440b04-35e9-41f0-8741-cfd0297b2478/image.png" alt=""></li>
<li>다음과 같이 함수를 사용해 계산 가능
<img src="https://velog.velcdn.com/images/hey_roha/post/38f4e5fb-ebf5-440f-a7d0-8dec44242dab/image.png" alt=""></li>
<li>수익과 주문 건당 수의 서식조건을 변경하고, 주문 일자를 변경해 다음과 같이 변경 가능하다.
<img src="https://velog.velcdn.com/images/hey_roha/post/c0a61166-4d25-49a1-bf60-22d756baf9e6/image.png" alt=""></li>
</ul>
<h3 id="논리함수">논리함수</h3>
<blockquote>
<p>참/거짓 판단</p>
</blockquote>
<ul>
<li><p>태블로에서 if/case함수의 경우 로직을 만들고 꼭 end로 닫아 주어야 오류 발생하지 않음.</p>
</li>
<li><p>&#39;//&#39; 으로 주석처리 가능</p>
</li>
<li><p>2억으로 구분
<img src="https://velog.velcdn.com/images/hey_roha/post/d46066ba-199d-4f6c-81dc-fa284ae5013f/image.png" alt=""></p>
</li>
<li><p>상수라인으로 추세선 추가 가능
<img src="https://velog.velcdn.com/images/hey_roha/post/083b8d56-5e63-4b92-9047-755c1f6f340c/image.png" alt=""></p>
</li>
<li><p>편집으로 추세선 변경 가능
<img src="https://velog.velcdn.com/images/hey_roha/post/1dce64cb-eaff-410c-979b-aae9b662b7ec/image.png" alt=""></p>
</li>
<li><p>iif 를 사용해 &#39;,&#39;로 문장 길이를 줄일 간결하게 할 수 있다.
<img src="https://velog.velcdn.com/images/hey_roha/post/7bab4527-3591-46a4-8add-f1d579f99e7a/image.png" alt=""></p>
</li>
<li><p>True/False로 더 간결히 표시 가능(동일하게 나타남)
<img src="https://velog.velcdn.com/images/hey_roha/post/babd8173-1050-4f2f-8f5f-113eaf94cea7/image.png" alt=""></p>
</li>
</ul>
<h3 id="매개변수">매개변수</h3>
<p><img src="https://velog.velcdn.com/images/hey_roha/post/a6ada991-366f-4975-b119-ed6b29cee50b/image.png" alt=""></p>
<blockquote>
<p>계속 값을 변경해줘야 하는 경우라면 매개변수를 통해 동적으로 변경해주는게 효율적이다. </p>
</blockquote>
<ul>
<li><strong>매개변수는 단독으로 사용할 수 없고 계산식이나 참조선이랑 같이 사용되어야 한다.</strong></li>
</ul>
<h4 id="범위형">범위형</h4>
<ul>
<li>슬라이드 부분을 조정하면 그 금액에 맞춰 색상이 변경된다.
<img src="https://velog.velcdn.com/images/hey_roha/post/85618510-bfe3-4adf-8db5-b1a7130e186d/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/abe48bc8-65c1-499a-901e-f7ffa4b89ee2/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/d2cdc2cc-97fa-404c-b382-119ccc6eae83/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/50fa20d4-f9a4-47f2-a92a-9ee7245f4c9b/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/81515463-000b-45c0-8507-5ca20a81040e/image.png" alt=""></li>
<li>값이 계속 바뀌므로 이번에는 상수라인이 아니라 참조선으로 선을 만든다
<img src="https://velog.velcdn.com/images/hey_roha/post/5f7e765d-2cd3-4312-8dce-8910d9a1d1f3/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/999a77ea-75a9-4250-af26-02fc37508dbd/image.png" alt=""></li>
</ul>
<h4 id="목록형">목록형</h4>
<blockquote>
<p>실무에서 많이 사용/ 외국계 회사에서는 회계 단위가 다를 수 있기때문에 필수적으로 사용</p>
</blockquote>
<ul>
<li>우선 계산된 필드를 사용하여 USD를 만들어줌
<img src="https://velog.velcdn.com/images/hey_roha/post/7793f15e-1d86-460e-8604-d2e4d2c2e0f3/image.png" alt=""></li>
<li>매개변수 설정
<img src="https://velog.velcdn.com/images/hey_roha/post/5be51bce-eb22-442a-a811-90cb505ff25f/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/001a2eea-41bd-405b-b4ed-fa06898f9fc2/image.png" alt=""></li>
<li>드롭다운을 통해 환율을 선택할 수 있다.
<img src="https://velog.velcdn.com/images/hey_roha/post/ae2763af-63ac-480b-8367-c524e089692a/image.png" alt=""></li>
</ul>
<h4 id="날짜형">날짜형</h4>
<blockquote>
<p>실무에서 대시보드를 만들때 많이 사용</p>
</blockquote>
<ul>
<li>매개변수 만들기(2개)
<img src="https://velog.velcdn.com/images/hey_roha/post/35e4a96a-52a9-4946-9bdb-3ab8fa9e6a53/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/c31777c6-8c24-46a9-b5c5-2beaec36cc8a/image.png" alt=""></li>
<li>계산 필터 만들기
<img src="https://velog.velcdn.com/images/hey_roha/post/3c3f40ea-2cc0-4661-b4be-238d4562a7db/image.png" alt=""></li>
<li>필터에 적용시키면 아래와 같이 날짜 주문 기간별로 매출이 나타남
<img src="https://velog.velcdn.com/images/hey_roha/post/95853593-1d93-423b-830b-a881cdd80675/image.png" alt=""></li>
</ul>
<h4 id="복합-매개-변수">복합 매개 변수</h4>
<blockquote>
<p>하나의 화면에서 다양한 각도로 분석해야할때 사용/ 여러개의 차원, 측정값을 보고자 할때</p>
</blockquote>
<ul>
<li><p>매개 변수를 많이 사용할 경우 퍼포먼스가 낮아질 수 있기 때문에 적절하게 사용해야한다.</p>
</li>
<li><p>두개의 매개변수를 만들고(화면표시) 계산된 필드 만들기
<img src="https://velog.velcdn.com/images/hey_roha/post/6706117a-a43b-44ee-857e-7ff8b3ff2b36/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/bce5bf61-eea1-40e8-8ae8-8ee17634690e/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/367b274b-0364-451a-9e37-f0f09be2dd89/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/a12c863e-2739-4a32-8e44-5da7eb3f3ff1/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/bb021d30-4592-454e-9edf-bcadb0121721/image.png" alt=""></p>
</li>
<li><p>단위에 대한 계산 필드도 만들어 주기
<img src="https://velog.velcdn.com/images/hey_roha/post/e01736eb-b852-482d-8a3a-c54c56e53d88/image.png" alt=""></p>
</li>
</ul>
<h2 id="테이블-계산-함수--primary함수">테이블 계산 함수- PRIMARY함수</h2>
<blockquote>
<p>PRIMARY 함수: 함수 내에 다른 함수가 포함된 함수</p>
</blockquote>
<ul>
<li>primary함수 내에는 반드시 집계된 값의 함수가 포함되어야 한다.</li>
</ul>
<p><img src="https://velog.velcdn.com/images/hey_roha/post/b00987d7-477a-4381-820f-1164b6875df3/image.png" alt=""></p>
<h3 id="running">RUNNING</h3>
<ul>
<li>현재 식에서 주어진 식까지 누계해서 출력
<img src="https://velog.velcdn.com/images/hey_roha/post/dc3af046-7f1c-4e58-90e7-b2ee9aec51b7/image.png" alt=""></li>
<li>누계와 같이 동일한 값을 출력해줌
<img src="https://velog.velcdn.com/images/hey_roha/post/0f8462f7-c6c6-4cdf-adcb-d2c3f15d6620/image.png" alt=""></li>
<li>running avg(전체 평균) 와 이동평균(특정분기 기간의 평균)
<img src="https://velog.velcdn.com/images/hey_roha/post/115dfe75-af20-4f25-af1b-56ca1520684c/image.png" alt=""></li>
</ul>
<h3 id="total">TOTAL</h3>
<blockquote>
<p>총 합계를 구하는 함수</p>
</blockquote>
<ul>
<li>sum의 경우 차원의 영향을 받지만 total은 차원의 영향 없이 총 합계를 나타내줌
<img src="https://velog.velcdn.com/images/hey_roha/post/9c06afed-596c-4b84-89aa-91014a5d2968/image.png" alt=""></li>
</ul>
<h3 id="lock-up">LOCK UP</h3>
<blockquote>
<p>현재 행 기준으로 오프셋만큼 떨어진 곳의 주어진 식의 값을 반환한다.</p>
</blockquote>
<ul>
<li>현재 행으로부터 -1(바로 하나 전) 의 행을 가져오는 것</li>
<li>음수를 넣으면 이전, 양수를 넣으면 그 후의 값을 가져옴
<img src="https://velog.velcdn.com/images/hey_roha/post/480f802b-27cf-418f-9fb5-14bab727684b/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/63562385-4d92-4b3e-b7ef-3b6fc54b67bc/image.png" alt=""></li>
</ul>
<h3 id="window">WINDOW</h3>
<blockquote>
<p>현재 화면 내에서 해당 식을 반환</p>
</blockquote>
<ul>
<li><p>특정 범위를 지정할 수 있다는 점에서 running함수와 차이를 보인다.</p>
</li>
<li><p>현재부터 이전 3개 분기의 평균
<img src="https://velog.velcdn.com/images/hey_roha/post/b9dc6b2f-67f0-4b57-8869-da44cc38d7c7/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/fa5f2a88-edb0-448e-8f90-1bccfa029541/image.png" alt=""></p>
</li>
<li><p>이동평균의 분기 기준을 조정했을때의 값과 동일하다
<img src="https://velog.velcdn.com/images/hey_roha/post/662bb2a2-f5fd-47d5-926c-1f09739b5f8e/image.png" alt=""></p>
</li>
</ul>
<h2 id="문자열-함수">문자열 함수</h2>
<h3 id="contain">CONTAIN</h3>
<blockquote>
<p>문자열이 들어있는지 확인</p>
</blockquote>
<ul>
<li>계산된 필드 만들기
<img src="https://velog.velcdn.com/images/hey_roha/post/fd860472-d84c-4507-a87e-b1b6e4e5185f/image.png" alt=""></li>
<li>필터에 적용
<img src="https://velog.velcdn.com/images/hey_roha/post/2b876f67-f41e-4cd6-953b-834d62367732/image.png" alt=""></li>
</ul>
<h3 id="split">SPLIT</h3>
<blockquote>
<p>문자열 분리</p>
</blockquote>
<ul>
<li>브랜드명만 가져오기
<img src="https://velog.velcdn.com/images/hey_roha/post/fc4975df-a06a-42f3-93c3-7e87f7448ea5/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/bf66a6ce-2662-4c70-8b1f-dc9b29c7691c/image.png" alt=""></li>
</ul>
<h3 id="replace">REPLACE</h3>
<ul>
<li>문자열 대체해서 가져오기
<img src="https://velog.velcdn.com/images/hey_roha/post/9785cc9a-be3e-4e53-ad69-c1d024f764f9/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/0a3c4d15-68b1-4eb0-9aab-4ca7e1a48025/image.png" alt=""></li>
</ul>
<h2 id="date-함수">DATE 함수</h2>
<blockquote>
<p>시계열 분석할때 필수적인 함수</p>
</blockquote>
<h3 id="datepart">DATEPART</h3>
<ul>
<li>지정한 날짜의 부분을 정수로 반환</li>
<li>의도하지 않게 많이 사용 중이었음
<img src="https://velog.velcdn.com/images/hey_roha/post/8fda37e3-b0fa-4cdc-a1a5-234c50fd286f/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/b196322b-40a4-4038-befd-92b3f9aebd48/image.png" alt=""></li>
<li>텍스트 부분으로 이동시켜 표현 가능
<img src="https://velog.velcdn.com/images/hey_roha/post/9d005e61-759e-45ce-a06c-119b52d3cee4/image.png" alt=""></li>
</ul>
<h3 id="datetrunc">DATETRUNC</h3>
<ul>
<li>지정한 날짜 부분을 기준으로 잘라내고 새 날짜를 반환
<img src="https://velog.velcdn.com/images/hey_roha/post/1f035f0a-9258-4eb5-834a-cbf41955b6a7/image.png" alt=""></li>
<li><h3 id="datediff">DATEDIFF</h3>
</li>
<li>날짜간의 차이를 구해줌</li>
<li>각 제품별 배송까지 걸린 기간 반환
<img src="https://velog.velcdn.com/images/hey_roha/post/23a68efa-53eb-4b1e-bd87-5a02d14fef08/image.png" alt=""></li>
<li>이때 주문번호가 중복되는 경우 아래와 같이 제대로된 값이 나오지 않을 수 있으므로 제품명을 추가해줘야함
<img src="https://velog.velcdn.com/images/hey_roha/post/ca04aa44-cb82-4e49-bbdf-09c2a7ca214f/image.png" alt=""></li>
</ul>
<blockquote>
<p>MTD: Month to date
QTD: Quater to date
YTD: Year to date</p>
</blockquote>
<h2 id="lod-표현식">LOD 표현식</h2>
<blockquote>
<p>LOD: Level of Detail(세부 수준 식)
<code>{include [차원1],[차원2] : sum([측정값])}</code></p>
</blockquote>
<ul>
<li>반드시 중괄호 안에 써야 하고, 그 사이에 꼭 콜론이 있어야하고, 하나 이상의 집계값이 들어가야 한다.</li>
</ul>
<h3 id="include">include</h3>
<blockquote>
<p>화면에 포함되지 않은 특정 차원을 포함하여 결과를 계산</p>
</blockquote>
<ul>
<li>최대값 매출은 매출 중에 그냥 최대 값을 말하는 것이고, inlcude의 경우는 눈에 보이진 않지만 화면의 차원보다 큰 차원에 있는 값을 가져와서 집계해줌. 즉, 여기서는 대분류 차원 내에서 중분류들 중 가장 큰 매출을 보여준다.
<img src="https://velog.velcdn.com/images/hey_roha/post/6534e2c0-7829-40bc-9430-347701da7d8a/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/e5cd4972-9c14-40d8-9694-fa9a3f4d0768/image.png" alt=""></li>
</ul>
<h3 id="exclude">exclude</h3>
<blockquote>
<p>화면에 포함된 특정 차원을 제외하여 결과를 계산</p>
</blockquote>
<ul>
<li>제품 중분류의 모든 합계를 가져와서 값이 다 동일하게 나옴
<img src="https://velog.velcdn.com/images/hey_roha/post/a81ffc5f-a768-4405-9c98-dd6b22f615dc/image.png" alt=""></li>
</ul>
<h3 id="fixed">Fixed</h3>
<blockquote>
<p>화면에 상관 없이 특정 차원을 고정하여 결과를 계산</p>
</blockquote>
<ul>
<li>include 와 exclude보다 많이 사용됨.</li>
</ul>
<p><img src="https://velog.velcdn.com/images/hey_roha/post/30c0ff60-b789-41e7-87e4-1b1f1cf40a5f/image.png" alt=""></p>
<ul>
<li>include/ exclude/ fix간의 차이
<img src="https://velog.velcdn.com/images/hey_roha/post/16ca263b-0c14-4f7c-9b69-47906abf2925/image.png" alt=""></li>
</ul>
<h2 id="태블로-작동-순서">태블로 작동 순서</h2>
<hr>
<blockquote>
<p>📌참고</p>
</blockquote>
<ul>
<li>계산된 필드는 측정값 이름 옆에 델타(세모)표시가 나타난다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Zero-Base]데이터 취업 스쿨 스터디 노트(ML - Linear Regression)]]></title>
            <link>https://velog.io/@hey_roha/Zero-Base%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%B7%A8%EC%97%85-%EC%8A%A4%EC%BF%A8-%EC%8A%A4%ED%84%B0%EB%94%94-%EB%85%B8%ED%8A%B8ML-Linear-Regression</link>
            <guid>https://velog.io/@hey_roha/Zero-Base%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%B7%A8%EC%97%85-%EC%8A%A4%EC%BF%A8-%EC%8A%A4%ED%84%B0%EB%94%94-%EB%85%B8%ED%8A%B8ML-Linear-Regression</guid>
            <pubDate>Sat, 20 Jul 2024 16:16:47 GMT</pubDate>
            <description><![CDATA[<h2 id="basic-of-regression">Basic of Regression</h2>
<blockquote>
<p>학습 데이터 각각에 정답이 주어져 있는 학습을 <strong>지도학습</strong> 이라고 하며, 이 정답을 연속된 값으로 예측하는 것을 <strong>회귀</strong>라 한다.</p>
</blockquote>
<ul>
<li><strong>학습 데이터 셋</strong>을 <strong>학습 알고리즘</strong>에 넣어 학습시킨뒤, 테스트하고자 하는 값을 이 알고리즘에 넣어 <strong>예측값</strong>을 얻어낸다.</li>
</ul>
<h3 id="ols">OLS</h3>
<blockquote>
<p><strong>Ordinary Linear Least Square (최소 제곱법)</strong></p>
</blockquote>
<ul>
<li>주어진 데이터세트에서 종속 변수 y와 독립변수 x간의 선형관계를 모델링하는데 사용된다.</li>
<li>실제 관측값(y)과 예측값(y_hat) 간의 오차의 제곱합을 최소화하는 회귀선을 찾는 것이 목적이다.</li>
<li>데이터 전체에 대한 모든 행렬을 구하고 거기에 역행렬을 취하는 것.</li>
</ul>
<p><img src="https://velog.velcdn.com/images/hey_roha/post/cfbfc3ae-2260-4af4-9e52-2f246ba8ab82/image.png" alt=""></p>
<h2 id="cost-function">Cost Function</h2>
<blockquote>
<p>가설이 얼마나 정확한지 판단하는 기준을 말하며, <strong>loss function 의 합, 평균 에러</strong>를 다룬다. <strong>순간 마다의 loss</strong>를 판단할때는 <strong>loss function</strong>을 사용하고, <strong>학습이 완료된 후</strong>에는 전체 데이터에 대한 <strong>cost function</strong>을 확인한다.</p>
</blockquote>
<h3 id="cost-function과-gradient-descent">Cost Function과 Gradient Descent</h3>
<ul>
<li>실제 데이터는 너무 복잡해서 손으로 풀기 어렵기 때문에 평면상의 방정식이 아니라 <strong>다차원</strong>에서 고민해야할 때가 많음.</li>
<li>때문에 단순하게 한번의 시도로 <strong>cost function의 최소값</strong>을 구할 수 없을 때가 더 많다. </li>
<li>이를 위해 <strong>Gradient Descent</strong>를 사용하여 cost function이 최소값을 가지는 지점을 확인한다.</li>
</ul>
<blockquote>
<p><strong>Gradient Descent</strong></p>
</blockquote>
<ul>
<li>랜덤하게 임의의 점을 선택</li>
<li>임의의 점에서 미분(or편미분)한 값을 계산해서 업데이트</li>
<li>계산한 값을 원래 방정식의 $$x$$또는 $$\theta$$에 차감을 시켜 방정식을 업데이트 시킨다.</li>
</ul>
<p><img src="https://velog.velcdn.com/images/hey_roha/post/d502cc7c-aabc-4c22-9b0c-c252f258329e/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/fc1d8959-0445-4c1e-811c-1b8701b4c662/image.png" alt=""></p>
<ul>
<li><strong>학습률이 크다면</strong> 최솟값을 찾으러 가는 간격이 크게 되고, 찾게 되어도 갱신횟수는 상대적으로 적을 수 있으나 <strong>수렴하지 않고 진동</strong>할 수도 있음.</li>
<li>따라서 학습률은 <strong>적당한 값</strong>을 찾아야 하는 <strong>hyper parameter</strong>이다.</li>
<li><strong>다변수 데이터</strong>에 대한 회귀의 경우 <strong>Multivariate Linear Regression</strong>으로 해결한다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Zero-Base]데이터 취업 스쿨 스터디 노트(SQL - Sub Query)]]></title>
            <link>https://velog.io/@hey_roha/Zero-Base%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%B7%A8%EC%97%85-%EC%8A%A4%EC%BF%A8-%EC%8A%A4%ED%84%B0%EB%94%94-%EB%85%B8%ED%8A%B8SQL-Sub-Query</link>
            <guid>https://velog.io/@hey_roha/Zero-Base%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%B7%A8%EC%97%85-%EC%8A%A4%EC%BF%A8-%EC%8A%A4%ED%84%B0%EB%94%94-%EB%85%B8%ED%8A%B8SQL-Sub-Query</guid>
            <pubDate>Sat, 20 Jul 2024 12:43:04 GMT</pubDate>
            <description><![CDATA[<h1 id="✏️sub-query">✏️Sub Query</h1>
<blockquote>
<ul>
<li>하나의 sql문 안에 포함되어있는 또 다른 sql문을 말한다.</li>
</ul>
</blockquote>
<ul>
<li>메인쿼리가 서브쿼리를 포함하는 종속적인 관계이다.
(서브쿼리는 메인쿼리의 컬럼 사용 가능/ 메인쿼리는 서브쿼리의 컬럼 사용 불가)</li>
<li>서브쿼리는 괄호로 묶어서 사용.</li>
<li>단일 행 혹은 복수 행 비교 연산자와 함께 사용 가능</li>
<li>서브쿼리는 order by 사용x</li>
</ul>
<hr>
<p><img src="https://velog.velcdn.com/images/hey_roha/post/8983b5cb-29e0-4f1f-b4a4-20e645061662/image.png" alt=""></p>
<h2 id="scalar-subquery">Scalar Subquery</h2>
<p><img src="https://velog.velcdn.com/images/hey_roha/post/4ecfbe04-3889-4513-b933-8a9d66aa6912/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/291b1358-62fc-41d5-bb9c-09cbfc77c7b6/image.png" alt=""></p>
<h2 id="inline-view">Inline View</h2>
<p><img src="https://velog.velcdn.com/images/hey_roha/post/1fae2ce5-b06e-4404-9581-a57cce1b1657/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/3d937299-fa2d-4658-96a9-4dac0f572492/image.png" alt="">
(경찰서별로 가장 많이 발생한 범죄건수와 범죄 유형 조회)</p>
<h2 id="nested-subquery">Nested Subquery</h2>
<p><img src="https://velog.velcdn.com/images/hey_roha/post/31e7afaf-1dc7-4dfe-9162-d3d310d6069e/image.png" alt=""></p>
<h3 id="single-row">single row</h3>
<p><img src="https://velog.velcdn.com/images/hey_roha/post/c064cdd1-00f7-4abb-b754-2bd95e8ae80a/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/9c701231-a498-46e3-be53-37065a072ac3/image.png" alt=""></p>
<ul>
<li>서브쿼리의 결과가 한 행을 출력하지 않으면 에러가발생.</li>
<li>괄호 꼭 써주기</li>
</ul>
<h3 id="multiple-row">multiple row</h3>
<ul>
<li>IN
<img src="https://velog.velcdn.com/images/hey_roha/post/eac9d865-a199-4e5a-914b-7cd11f11d7ef/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/aa6235b4-5962-4c1b-9e04-6d5b17c3c6ed/image.png" alt="">
(snl에 출연한 영화배우 조회)</li>
<li>EXIST
<img src="https://velog.velcdn.com/images/hey_roha/post/a72b9438-b2ac-4a5a-89a8-ba4925c63cfa/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/928dd33b-c212-4a98-8814-e1d7fc8a2378/image.png" alt="">
(범죄 검거 혹은 발생건수가 2000건 보다 큰 경찰서 조회)</li>
<li>ANY</li>
</ul>
<p><img src="https://velog.velcdn.com/images/hey_roha/post/d998f451-524f-45c1-bd65-3dbd74cb17f5/image.png" alt="">
(snl에 출연한 적이 있는 출연자 조회)</p>
<pre><code></code></pre><ul>
<li>ALL: 서브쿼리를 모두 만족하면 출력(비교연산자 사용)
<img src="https://velog.velcdn.com/images/hey_roha/post/6cf674ae-2527-4a0a-9bed-bd3eee29f851/image.png" alt=""><h3 id="multiple-column">multiple column</h3>
</li>
<li>서브쿼리 내에 메인쿼리 컬럼이 같이 사용되는 경우
<img src="https://velog.velcdn.com/images/hey_roha/post/2c9a2d9d-5f10-4e9e-934b-346626dd3363/image.png" alt=""></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Zero-Base]데이터 취업 스쿨 스터디 노트(Machine Learning - Model Evaluation)]]></title>
            <link>https://velog.io/@hey_roha/Zero-Base%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%B7%A8%EC%97%85-%EC%8A%A4%EC%BF%A8-%EC%8A%A4%ED%84%B0%EB%94%94-%EB%85%B8%ED%8A%B8Machine-Learning-Model-Evaluation</link>
            <guid>https://velog.io/@hey_roha/Zero-Base%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%B7%A8%EC%97%85-%EC%8A%A4%EC%BF%A8-%EC%8A%A4%ED%84%B0%EB%94%94-%EB%85%B8%ED%8A%B8Machine-Learning-Model-Evaluation</guid>
            <pubDate>Fri, 12 Jul 2024 09:00:41 GMT</pubDate>
            <description><![CDATA[<h2 id="분류모델-평가의-개념">분류모델 평가의 개념</h2>
<p><img src="https://velog.velcdn.com/images/hey_roha/post/b29ba91b-d511-4aa6-9e92-42b8874b23aa/image.png" alt="">!<a href="https://velog.velcdn.com/images/hey_roha/post/4719c47b-8661-4b52-8eda-61da4fdee12b/image.png"></a></p>
<blockquote>
<p><strong>recall</strong> : 참인 데이터 중에서 참이라고 예측한 데이터의 비율
<strong>precision</strong> : 참이라고 예측한 데이터에서 실제 참인 데이터의 비율</p>
</blockquote>
<ul>
<li>실제 양성인 데이터를 음성이라고 판단하면 안되는 경우라면 recall이 중요하고(암환자 판별-threshold 0.3<del>0.4), 음성인 데이터를 양성이라고 판단하면 안되는 경우라면 precision이 중요하다.(스팸메일- threshold 0.8</del>0.9)</li>
</ul>
<p><img src="https://velog.velcdn.com/images/hey_roha/post/badd0890-8d80-42f9-a566-85a3746e122e/image.png" alt=""></p>
<ul>
<li>F1score는 조화평균이라고도 함.<pre><code class="language-python">from sklearn.metrics import (accuracy_score, recall_score,precision_score,f1_score, roc_auc_score, roc_curve)
</code></pre>
</li>
</ul>
<p>print(f&#39;acc:{accuracy_score(y_t, y_pred)}&#39;)
print(f&#39;recall:{recall_score(y_t, y_pred)}&#39;)
print(f&#39;precision:{precision_score(y_t, y_pred)}&#39;)
print(f&#39;auc:{roc_auc_score(y_t, y_pred)}&#39;)
print(f&#39;f1:{f1_score(y_t, y_pred)}&#39;)</p>
<pre><code>
## ROC/AUC
![](https://velog.velcdn.com/images/hey_roha/post/823208c8-99db-487a-a591-d03de05ac350/image.png)

- FPR = FALL-OUT(실제 양성이 아닌데, 양성이라고 잘못 예측한 경우)
- TPR = RECALL(SENSITIVITY)

![](https://velog.velcdn.com/images/hey_roha/post/17f3665a-d840-45e0-85f5-6a09852281ab/image.png)
- AUC는 ㄱROC곡선 아래의 면적을 의미

```python
import matplotlib.pyplot as plt
%matplotlib inline 

pred_proba = wine_tree.predict_proba(x_t)[:,1]

fpr, tpr, thres = roc_curve(y_t, pred_proba)

plt.figure(figsize=(10,8))
plt.plot([0,1],[0,1])
plt.plot(fpr, tpr)
plt.grid()
plt.show()</code></pre><p><img src="https://velog.velcdn.com/images/hey_roha/post/d8e8f86f-8690-447d-97d3-4dc7132613b7/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Zero-Base]데이터 취업 스쿨 스터디 노트(Machine Learning - Wine데이터 분석)]]></title>
            <link>https://velog.io/@hey_roha/Zero-Base%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%B7%A8%EC%97%85-%EC%8A%A4%EC%BF%A8-%EC%8A%A4%ED%84%B0%EB%94%94-%EB%85%B8%ED%8A%B8Machine-Learning-Wine%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%EC%84%9D</link>
            <guid>https://velog.io/@hey_roha/Zero-Base%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%B7%A8%EC%97%85-%EC%8A%A4%EC%BF%A8-%EC%8A%A4%ED%84%B0%EB%94%94-%EB%85%B8%ED%8A%B8Machine-Learning-Wine%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%EC%84%9D</guid>
            <pubDate>Thu, 11 Jul 2024 05:45:02 GMT</pubDate>
            <description><![CDATA[<h2 id="레드와인-화이트와인-분류기">레드와인 화이트와인 분류기</h2>
<h3 id="훈련용-테스트용-데이터-분류양상-확인">훈련용, 테스트용 데이터 분류양상 확인</h3>
<pre><code class="language-python">import plotly.graph_objects as go

fig = go.Figure()
fig.add_trace(go.Histogram(x = x_tr[&#39;quality&#39;], name = &#39;Train&#39;))
fig.add_trace(go.Histogram(x = x_t[&#39;quality&#39;], name = &#39;Test&#39;))

fig.update_layout(barmode =&#39;overlay&#39;)
fig.update_traces(opacity = 0.75)
fig.show()</code></pre>
<p><img src="https://velog.velcdn.com/images/hey_roha/post/65bce5df-ea9c-4dab-899f-d6ff416127fb/image.png" alt=""></p>
<h3 id="decision-tree-train">Decision Tree Train</h3>
<ul>
<li>두 데이터셋의 성능은 비슷하다.<pre><code class="language-python">from sklearn.metrics import accuracy_score
</code></pre>
</li>
</ul>
<p>y_pred = wine_tree.predict(x_tr)
y_pred_test = wine_tree.predict(x_t)</p>
<p>print(f&#39;Train acc: {accuracy_score(y_tr, y_pred)}&#39;)
print(f&#39;Test acc: {accuracy_score(y_t, y_pred_test)}&#39;)</p>
<pre><code>![](https://velog.velcdn.com/images/hey_roha/post/121e2dd9-ada6-4efa-a42a-06bfcba30ad7/image.png)

## 데이터 전처리
```python
fig = go.Figure()
fig.add_trace(go.Box(y = x[&#39;fixed acidity&#39;],name = &#39;fixed acidity&#39;))
fig.add_trace(go.Box(y = x[&#39;chlorides&#39;],name = &#39;chlorides&#39;))
fig.add_trace(go.Box(y = x[&#39;quality&#39;],name = &#39;quality&#39;))

fig.show()</code></pre><p><img src="https://velog.velcdn.com/images/hey_roha/post/08dcbc54-e671-4734-8492-34a950f798eb/image.png" alt=""></p>
<ul>
<li>일반적으로 머신러닝에서 컬럼간의 범위격차가 많이 나면 트레이닝이 잘 안 될 수.도. 있다.</li>
<li>이렇게 차이가 나는 경우 스케일링을 하는게 좋을 수 있는데, Decision scaler에서는 의미가 없음.(주로 cost function 을 최적화할때 유효하다.)</li>
</ul>
<h3 id="minmaxscaler">MinMaxScaler</h3>
<pre><code class="language-python">from sklearn.preprocessing import MinMaxScaler
from sklearn.preprocessing import StandardScaler

mms = MinMaxScaler()
ss = StandardScaler()

mms.fit(x)
ss.fit(x)

x_mms = mms.transform(x)
x_ss = ss.transform(x)

x_mms_pd = pd.DataFrame(x_mms, columns = x.columns)
x_ss_pd = pd.DataFrame(x_ss, columns = x.columns)</code></pre>
<p><img src="https://velog.velcdn.com/images/hey_roha/post/387fde48-89d6-46df-94d6-e84253fc7328/image.png" alt=""></p>
<ul>
<li>정확성 확인: 별 차이가 없긴 하지만 그래도 테스트 해봐야함.</li>
</ul>
<pre><code class="language-python">x_tr,x_t,y_tr,y_t = train_test_split(x_mms_pd, y, test_size = 0.2, random_state= 0xC0FFEE)

wine_tree = DecisionTreeClassifier(max_depth = 2, random_state = 0xC0FFEE)
wine_tree.fit(x_tr,y_tr)

y_pred = wine_tree.predict(x_tr)
y_pred_test = wine_tree.predict(x_t)

print(f&#39;Train acc: {accuracy_score(y_tr, y_pred)}&#39;)
print(f&#39;Test acc: {accuracy_score(y_t, y_pred_test)}&#39;)</code></pre>
<p><img src="https://velog.velcdn.com/images/hey_roha/post/58409eb2-9ebb-495b-b03b-715f05f8c6a5/image.png" alt=""></p>
<h3 id="standardscaler">StandardScaler</h3>
<p><img src="https://velog.velcdn.com/images/hey_roha/post/456fa597-dbf3-48e0-818c-686c62a1f3cf/image.png" alt=""></p>
<ul>
<li>정확성 확인: 차이 없음.<pre><code class="language-python">x_tr,x_t,y_tr,y_t = train_test_split(x_ss_pd, y, test_size = 0.2, random_state= 0xC0FFEE)
</code></pre>
</li>
</ul>
<p>wine_tree = DecisionTreeClassifier(max_depth = 2, random_state = 0xC0FFEE)
wine_tree.fit(x_tr,y_tr)</p>
<p>y_pred = wine_tree.predict(x_tr)
y_pred_test = wine_tree.predict(x_t)</p>
<p>print(f&#39;Train acc: {accuracy_score(y_tr, y_pred)}&#39;)
print(f&#39;Test acc: {accuracy_score(y_t, y_pred_test)}&#39;)</p>
<pre><code>![](https://velog.velcdn.com/images/hey_roha/post/12b112fb-1a2d-41d3-8a8e-ce9c3f40396d/image.png)


## 맛의 이진 분류
- 퀄리티의 지표가 몇 개 없으니 0,1로 taste 칼럼을 추가로 만들어 평가할 것.
```python
wine[&#39;taste&#39;] = [1. if grade &gt; 5 else 0. for grade in wine[&#39;quality&#39;]]
wine.head()</code></pre><ul>
<li><p>이 형태로 모델을 학습시킨뒤 정확성을 보았더니 1.0으로 나옴.
<img src="https://velog.velcdn.com/images/hey_roha/post/a024447c-7915-43b3-ae9f-a715f0058a9d/image.png" alt=""></p>
</li>
<li><p>이걸 확인해보기 위해 트리 작성.(이 경우에서 feature_names 부분에 x.columns만 쓰면 오류가 나서 list로 묶어줌.)</p>
</li>
<li><p>quality컬럼으로 taste컬럼을 만들었기 때문에 quality컬럼도 삭제 시켜주어야 학습이 잘 된다.</p>
</li>
</ul>
<pre><code class="language-python">from sklearn import tree
import matplotlib.pyplot as plt
import sklearn.tree as tree

plt.figure(figsize=(12,8))
tree.plot_tree(wine_tree, feature_names = list(x.columns));</code></pre>
<p><img src="https://velog.velcdn.com/images/hey_roha/post/abee22d8-f1e5-4b23-b362-28c560556f9a/image.png" alt=""></p>
<ul>
<li>코드를 수정한 정확도는 아래와 같다.<pre><code class="language-python">x = wine.drop([&#39;taste&#39;,&#39;quality&#39;],axis = 1)
y = wine[&#39;taste&#39;]
</code></pre>
</li>
</ul>
<p>x_tr, x_t, y_tr, y_t = train_test_split(x,y,test_size = 0.2, random_state = 0xC0FFEE)</p>
<p>wine_tree = DecisionTreeClassifier(max_depth = 2, random_state = 0xC0FFEE)
wine_tree.fit(x_tr, y_tr)</p>
<pre><code>![](https://velog.velcdn.com/images/hey_roha/post/dd0b47f1-f63e-46ce-9fb5-8c4ee2bd1102/image.png)
```python
#수정 후

plt.figure(figsize=(12,8))
tree.plot_tree(wine_tree, feature_names=list(x.columns),
               rounded = True,
               filled = True)

plt.show()</code></pre><p><img src="https://velog.velcdn.com/images/hey_roha/post/d089b346-d571-47a4-8af2-e6acc4952906/image.png" alt=""></p>
<h2 id="pipeline">pipeline</h2>
<ul>
<li>Jupyter Notebook 상황에서 데이터의 전처리와 여러 알고리즘의 반복 실행,
하이퍼 파라미터의 튜닝 과정을 번갈아 하다 보면 코드의 실행 순서에 혼돈이 있을 수 있다.</li>
<li>이런 경우 클래스(class)로 만들어서 진행해도 되지만, sklearn 유저에게는 꼭 그럴 필요없이 준비된 기능이 있다. → Pipeline
<img src="https://velog.velcdn.com/images/hey_roha/post/c896f321-a9a6-46d7-a48a-b730e3e58a11/image.png" alt=""><pre><code class="language-python">from sklearn.pipeline import Pipeline
from sklearn.tree import DecisionTreeClassifier
from sklearn.preprocessing import StandardScaler
</code></pre>
</li>
</ul>
<p>estimators = [
    (&#39;scaler&#39;,StandardScaler()),
    (&#39;clf&#39;, DecisionTreeClassifier())
]
pipe = Pipeline(estimators)</p>
<pre><code>![](https://velog.velcdn.com/images/hey_roha/post/7a761cb4-b114-4e44-97ba-a4b8852378f0/image.png)
- ```pipe.steps```:어떤 단계로 이루어지고, 뭐가 지정되어 있는지 알려준다.
- ```pipe.steps[1]```: 어느 위치에 뭐가 지정되어 있는지 알려준다.(스텝별로 객체 호출 가능)
- ```pipe.set_params(clf__max_depth = 2)```: pipe에 할당된 스탭에 언더바 두개 &#39;__&#39;로 속성 할당이 가능하다.

- pipeline을 통해 학습이 깔끔해져서 혼돈이 생기지 않게 된다.


## 교차검증
&gt; - **과적합**: 모델이 학습 데이터에만 과도하게 최적화된 현상
- 이로 인해 일반화된 데이터에서는 예측 성능이 과하게 떨어지게 된다.
- 나에게 주어진 데이터에 적용한 모델의 성능을 정확히 표현하기 위해서도 사용이된다.

![](https://velog.velcdn.com/images/hey_roha/post/b8b6874c-f944-4bf9-871f-dd185ca8c8a6/image.png)
### 1. KFold사용
```python
import numpy as np
from sklearn.model_selection import KFold
#샘플 생성
x = np.array([
    [1,2],[3,4],[1,2],[3,4]
])

y = np.array([1,2,3,4])
#k-fold
kf = KFold(n_splits = 2)
print(kf.get_n_splits(x))
print(kf)</code></pre><p><img src="https://velog.velcdn.com/images/hey_roha/post/3b7ce603-5e1e-4849-9afd-1ff21d43e9d4/image.png" alt=""></p>
<pre><code class="language-python">for train_idx, test_idx in kf.split(x):
    print(f&#39;train:{train_idx}&#39;)
    print(f&#39;test:{test_idx}&#39;)
</code></pre>
<p><img src="https://velog.velcdn.com/images/hey_roha/post/0fa9c067-0562-4225-9fd7-b8b5fdb06713/image.png" alt=""></p>
<ul>
<li>실제 들어가있는 데이터가 뭔지 확인하기<pre><code class="language-python">for train_idx, test_idx in kf.split(x):
  print(f&#39;train:{train_idx}&#39;)
  print(f&#39;test:{test_idx}&#39;)
  print(&#39;----train_data&#39;)
  print(x[train_idx])
  print(&#39;---validation_data&#39;) 
  print(x[test_idx])  </code></pre>
<img src="https://velog.velcdn.com/images/hey_roha/post/69c6a559-48c7-44ec-b749-f72a9b7e9c63/image.png" alt=""></li>
</ul>
<h3 id="2-stratifiedfold사용">2. StratifiedFold사용</h3>
<pre><code class="language-python">from sklearn.model_selection import StratifiedKFold

kf = KFold(n_splits = 5)
wine_tree_cv = DecisionTreeClassifier(max_depth = 2, random_state = 13)

cv_acc = []

for train_idx, test_idx_idx in kf.split(x):
    x_tr = x.iloc[train_idx]
    x_t = x.iloc[test_idx]
    y_tr = y.iloc[train_idx]
    y_t = y.iloc[test_idx]

    wine_tree_cv.fit(x_tr,y_tr)
    y_pred = wine_tree_cv.predict(x_t)

    cv_acc.append(accuracy_score(y_t, y_pred))

cv_acc</code></pre>
<h3 id="3-cross-validation-score-사용">3. cross validation score 사용</h3>
<pre><code class="language-python">from sklearn.model_selection import cross_val_score

kf = KFold(n_splits = 5)
wine_tree_cv = DecisionTreeClassifier(max_depth = 2, random_state = 13)

cross_val_score(wine_tree_cv, x, y, cv = kf)</code></pre>
<ul>
<li>train score를 함께 보고싶다면 cross_validate사용<pre><code class="language-python">from sklearn.model_selection import cross_validate
</code></pre>
</li>
</ul>
<p>cross_validate(wine_tree_cv, x, y, cv =kf, return_train_score= True)</p>
<pre><code>
![](https://velog.velcdn.com/images/hey_roha/post/fd11e393-0bee-4aee-9426-8be4e0f7e108/image.png)

&gt; **fit_time**: 모델을 학습(fit)하는 데 걸린 시간을 측정한 값
**score_time**: 모델이 예측을 수행하고 점수를 계산하는 데 걸린 시간을 측정한 값


## 하이퍼파라미터 튜닝
- 모델의 성능을 확보하기 위해 조정하는 값
![](https://velog.velcdn.com/images/hey_roha/post/d9d0ff8f-c28e-4ec0-a0b5-75896e1ba013/image.png)
```python
from sklearn.model_selection import GridSearchCV
from sklearn.tree import DecisionTreeClassifier

params = {&#39;max_depth&#39;: [2,4,7,10]}
wine_tree = DecisionTreeClassifier(max_depth = 2, random_state = 13)

gridsearch = GridSearchCV(estimator = wine_tree, param_grid = params, cv = 5)
gridsearch.fit(x,y)</code></pre><ul>
<li>cv는 cross validation<pre><code class="language-python">import pprint 
</code></pre>
</li>
</ul>
<p>pp = pprint.PrettyPrinter(indent =4)
pp.pprint(gridsearch.cv_results_)</p>
<pre><code>![](https://velog.velcdn.com/images/hey_roha/post/4c6d3123-ef51-46e3-8c58-607d084e3e60/image.png)

&gt; -```gridsearch.best_estimator_```, ```gridsearch.best_score_```,```gridsearch.best_params_```: 성능이 좋은 지표들을 출력해준다.

- 파이프라인과 연결

```python
from sklearn.pipeline import Pipeline
from sklearn.tree import DecisionTreeClassifier
from sklearn.preprocessing import StandardScaler

estimators = [
    (&#39;scaler&#39;,StandardScaler()),
    (&#39;clf&#39;, DecisionTreeClassifier())
]
pipe = Pipeline(estimators)

param_grid = [{&#39;clf__max_depth&#39;: [2,4,6,8]}]

GridSearch = GridSearchCV(estimator = pipe , param_grid = param_grid, cv =5)
GridSearch.fit(x,y)</code></pre><p><img src="https://velog.velcdn.com/images/hey_roha/post/ef5a2ee6-bda9-4f5d-94db-a9b904350346/image.png" alt=""></p>
<ul>
<li>표로 정리</li>
</ul>
<p><img src="https://velog.velcdn.com/images/hey_roha/post/a3b7b08d-90fa-4498-903d-69ab77d40cd5/image.png" alt=""></p>
<hr>
<blockquote>
<p>📌회고록</p>
</blockquote>
<ul>
<li><code>pip install plotly</code>로 plotly 모듈 불러오기 가능.
(plotly는 대화형 그래프를 만들기 위한 라이브러리이고, 주로 사용하는 모듈은 graph_objs와 express가 있다.아래와 같이 수치가 나온다.)
<img src="https://velog.velcdn.com/images/hey_roha/post/655b1b1c-7b94-494e-90c6-5d9d3865d799/image.png" alt=""></li>
<li><code>np.unique</code>: 분리된 트레인,테스트 데이터가 어떻게 분리되었는지 확인할 수 있음.</li>
<li><code>dict(zip(x_tr.columns,wine_tree.feature_importances_))</code>: 중요한 영향을 끼치는 컬럼에 대해 확인할 수 있으며, max_depth를 증가시키면 저 수치에도 변화가 생긴다.</li>
<li>트리 그림에서 value는 두번째 층을 보았을때 총 2401개의 샘플 중에 1331개는 첫번째 클래스에 속하고, 1070은 두번째 클래스에 속하는 것을 의미한다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Zero-Base]데이터 취업 스쿨 스터디 노트(Machine Learning - Preprocessing)]]></title>
            <link>https://velog.io/@hey_roha/Zero-Base%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%B7%A8%EC%97%85-%EC%8A%A4%EC%BF%A8-%EC%8A%A4%ED%84%B0%EB%94%94-%EB%85%B8%ED%8A%B8Machine-Learning-1</link>
            <guid>https://velog.io/@hey_roha/Zero-Base%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%B7%A8%EC%97%85-%EC%8A%A4%EC%BF%A8-%EC%8A%A4%ED%84%B0%EB%94%94-%EB%85%B8%ED%8A%B8Machine-Learning-1</guid>
            <pubDate>Wed, 10 Jul 2024 08:07:01 GMT</pubDate>
            <description><![CDATA[<h2 id="encoder-and-scalar">Encoder and Scalar</h2>
<h3 id="label-encoder">Label Encoder</h3>
<ul>
<li>글자로 되어있는 컬럼을 숫자로 바꿔줌.</li>
<li>그 반대도 가능.
<img src="https://velog.velcdn.com/images/hey_roha/post/9915ef21-e662-4b15-9462-c6b14d710814/image.png" alt=""></li>
<li>아래 코드를 통해 학습<pre><code class="language-python">from sklearn.preprocessing import LabelEncoder
</code></pre>
</li>
</ul>
<p>le = LabelEncoder()
le.fit(df[&#39;A&#39;])</p>
<pre><code>- ```le.classes_``` : 클래스 확인
- ```le.transform(df[&#39;A&#39;])``` : A컬럼의 문자를 숫자로 변환
- ```le.inverse_transform(df[&#39;le_A&#39;])``` : 숫자를 글자로 변환


### min-max scaler(정규화)
![](https://velog.velcdn.com/images/hey_roha/post/ae8568da-6312-44b2-a516-709036cf35ae/image.png)
```python
from sklearn.preprocessing import MinMaxScaler

mms = MinMaxScaler()
mms.fit(df)</code></pre><ul>
<li><p><code>mms.data_max_, mms.data_min_, mms.data_range_</code>: 각 컬럼의 최대값, 최소값, 범위 나타냄.</p>
</li>
<li><p><code>df_mms = mms.transform(df)</code> : min-max scaler 로 변환
<img src="https://velog.velcdn.com/images/hey_roha/post/bc6fba89-aa8f-4e1a-aad5-81cd62d025f0/image.png" alt=""></p>
</li>
<li><p><code>mms.inverse_transeform(df_mms)</code> : 변환시킨걸 다시 원래대로 되돌릴 수 있음.
<img src="https://velog.velcdn.com/images/hey_roha/post/d504ce4c-760f-4ec6-8a6f-ca514c3598e5/image.png" alt=""></p>
</li>
</ul>
<h3 id="standard-scaler표준화">standard scaler(표준화)</h3>
<p><img src="https://velog.velcdn.com/images/hey_roha/post/81533e23-015d-4701-859c-5c9824b9ff43/image.png" alt=""></p>
<ul>
<li><code>sd.mean_, sd.scale_</code>: 평균과 표준편차
<img src="https://velog.velcdn.com/images/hey_roha/post/70e74e6a-c34e-40da-a1f6-7c134d85e627/image.png" alt=""></li>
<li>표준화 시키면 아래와 같다
<img src="https://velog.velcdn.com/images/hey_roha/post/5ff98948-fbc8-460f-94d9-e782ebdd3225/image.png" alt=""></li>
</ul>
<h3 id="roburst-scaler">roburst scaler</h3>
<p><img src="https://velog.velcdn.com/images/hey_roha/post/e9c511db-0200-4ab7-b1be-df91f4137f3f/image.png" alt=""></p>
<ul>
<li>사분위 데이터를 활용</li>
<li><code>from sklearn.preprocessing import RobustScaler</code>사용</li>
<li>사용법은 위의 scaler들과 같음
<img src="https://velog.velcdn.com/images/hey_roha/post/e20d0d7c-fd92-4f28-a663-c6490645e8d4/image.png" alt=""></li>
</ul>
<h3 id="총-비교">총 비교</h3>
<p><img src="https://velog.velcdn.com/images/hey_roha/post/15c3cc60-d175-4bee-b144-8839bf165200/image.png" alt=""></p>
<hr>
<blockquote>
<p>📌회고록(오답노트)</p>
</blockquote>
<ul>
<li><code>pip install scikit-learn</code>: sklearn설치</li>
<li>머신러닝은 머신에게 데이터를 주고, 학습한 후,사용자가 질문한 내용에 대답할 수 있다.</li>
<li>머신러닝에서 예측은 꼭 미래에 대한 데이터를 의미하는건 아니다.</li>
<li>과적합이 발생하면 흔히들 모델이 일반화된 성능이 높지 않을 것이라 생각한다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Zero-Base]데이터 취업 스쿨 스터디 노트(Git-README)]]></title>
            <link>https://velog.io/@hey_roha/Zero-Base%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%B7%A8%EC%97%85-%EC%8A%A4%EC%BF%A8-%EC%8A%A4%ED%84%B0%EB%94%94-%EB%85%B8%ED%8A%B8Git-README</link>
            <guid>https://velog.io/@hey_roha/Zero-Base%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%B7%A8%EC%97%85-%EC%8A%A4%EC%BF%A8-%EC%8A%A4%ED%84%B0%EB%94%94-%EB%85%B8%ED%8A%B8Git-README</guid>
            <pubDate>Mon, 08 Jul 2024 13:53:16 GMT</pubDate>
            <description><![CDATA[<h2 id="✍️readme">✍️README</h2>
<ul>
<li>간단한 markdown문법</li>
</ul>
<pre><code class="language-markdown">This is H1
====

This is H2
---

# This is H1
## This is H2
### This is H3
#### This is H4
##### This is H5
###### This is H6

#### BlockQuote
#### 블럭인용문자 사용(&gt;)
&gt; This is a first blockquote
&gt;&gt; This is a second blockquote
&gt;&gt;&gt; This is a third blockquote
&gt;&gt;&gt;

#### BlockQuote(혼합)
#### 블럭 내에서 다른  Markdown 요소를 포함할 수 있음.
&gt; ### This is H3
&gt; * List
&gt;
#### 목록 - 순서가 있는 목록
##### 내림차순으로 자동 정렬됨.

1. 첫번째
2. 두번째
3. 세번째

#### 목록 - 순서가 없는 목록
* - +

* 빨강
  * 녹색
    * 파랑

+ 빨강
  + 녹색
    + 파랑

- 1단계
  - 2단계
    - 3단계</code></pre>
<p><img src="https://velog.velcdn.com/images/hey_roha/post/0dea3f73-b3d2-4a13-9adc-99ec64d080e8/image.png" alt=""></p>
<hr>
<pre><code>#### 코드블럭1
&lt;pre&gt;&lt;code&gt;print(&#39;hello, world&#39;)&lt;/code&gt;&lt;/pre&gt;
&lt;code&gt;print(&#39;this is readme file.txt&#39;)&lt;/code&gt;

#### 코드블럭2
```code block```

#### 외부링크 
Link : [Google](https://google.com)

#### 강조
*이태리체*
_이태리체_
**강조**
__강조__
~~취소선~~</code></pre><p><img src="https://velog.velcdn.com/images/hey_roha/post/08a7f994-7901-4214-a08d-9cc73ecef19d/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Zero-Base]데이터 취업 스쿨 스터디 노트(Git-Tag)]]></title>
            <link>https://velog.io/@hey_roha/Zero-Base%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%B7%A8%EC%97%85-%EC%8A%A4%EC%BF%A8-%EC%8A%A4%ED%84%B0%EB%94%94-%EB%85%B8%ED%8A%B8Git-Tag</link>
            <guid>https://velog.io/@hey_roha/Zero-Base%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%B7%A8%EC%97%85-%EC%8A%A4%EC%BF%A8-%EC%8A%A4%ED%84%B0%EB%94%94-%EB%85%B8%ED%8A%B8Git-Tag</guid>
            <pubDate>Mon, 08 Jul 2024 13:28:35 GMT</pubDate>
            <description><![CDATA[<h2 id="git-tag">Git tag</h2>
<h3 id="실습환경-만들기">실습환경 만들기</h3>
<ul>
<li>remote repository에 tag_project생성</li>
<li>local에서 3번 커밋 후, remote에 push한 상황</li>
<li>아래는 commit 후의 git log
<img src="https://velog.velcdn.com/images/hey_roha/post/ce29ee74-a0e6-4b8f-a5d4-4cd4ec2a1f09/image.png" alt=""></li>
</ul>
<h3 id="git-tag-1">Git tag</h3>
<p>-<strong>tag</strong> : 내가 커밋한 특정 버전에 태그를 달아놔서 필요할때마다 태그를 가져와서 사용하는 것.</p>
<ul>
<li><code>git tag (버전명) (해당 커밋의 고유번호-해시)</code>: 커밋의 태그 버전을 생성(해시값을 작성하지 않을 경우 마지막 커밋에 부여)
<img src="https://velog.velcdn.com/images/hey_roha/post/eae57978-7adc-48cc-9b1a-09eab2ac8210/image.png" alt=""></li>
</ul>
<p><img src="https://velog.velcdn.com/images/hey_roha/post/d2e6992e-b563-4360-9404-cfc2a0613f09/image.png" alt=""></p>
<ul>
<li><code>git push origin (버전명)</code>: local에서 해당 버전을 지정한채로 push
<img src="https://velog.velcdn.com/images/hey_roha/post/eae931a8-ac44-43bd-b947-4d99d3f73c0d/image.png" alt=""></li>
<li>remote에서 확인해보면 tag의 숫자가 올라간 것을 확인할 수 있음.
<img src="https://velog.velcdn.com/images/hey_roha/post/9859bacc-6a73-4a19-bf01-6a4c347cfc79/image.png" alt=""></li>
<li><code>git tag</code>: tag의 목록만 불러서 볼 수 있음.
<img src="https://velog.velcdn.com/images/hey_roha/post/56f11733-8608-48a3-a1fb-38346ae6e187/image.png" alt=""></li>
<li><code>git show (태그이름)</code>: 해당 태그의 정보를 확인할 수 있음.
<img src="https://velog.velcdn.com/images/hey_roha/post/8a2dcfcf-a18e-4e09-93a4-94e1e3f8e66e/image.png" alt=""></li>
<li><code>git tag --delete (버전이름)</code> : 해당 버전 삭제</li>
<li><code>git push --delete origin (버전이름)</code> : remote repository에서 해당 버전 삭제
<img src="https://velog.velcdn.com/images/hey_roha/post/0c7bad30-8abb-4e8b-8aeb-83dbbfaf4c8d/image.png" alt=""></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Zero-Base]데이터 취업 스쿨 스터디 노트(Git-Merge and Conflict)]]></title>
            <link>https://velog.io/@hey_roha/Zero-Base%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%B7%A8%EC%97%85-%EC%8A%A4%EC%BF%A8-%EC%8A%A4%ED%84%B0%EB%94%94-%EB%85%B8%ED%8A%B8Git-Merge-and-Conflict</link>
            <guid>https://velog.io/@hey_roha/Zero-Base%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%B7%A8%EC%97%85-%EC%8A%A4%EC%BF%A8-%EC%8A%A4%ED%84%B0%EB%94%94-%EB%85%B8%ED%8A%B8Git-Merge-and-Conflict</guid>
            <pubDate>Mon, 08 Jul 2024 12:52:06 GMT</pubDate>
            <description><![CDATA[<h2 id="merge-and-conflict">Merge and Conflict</h2>
<h3 id="merge-실습환경-만들기">Merge 실습환경 만들기</h3>
<ul>
<li>remote에 merge_project 레파지토리 생성</li>
<li>local에는 dev branch 생성 후 이동, text.txt파일 수정한 상황
<img src="https://velog.velcdn.com/images/hey_roha/post/a0a1c044-1756-436b-83a6-08f1c8056981/image.png" alt=""></li>
<li>diff 와 유사하게 merge설정 추가
<img src="https://velog.velcdn.com/images/hey_roha/post/488189cb-99ab-4b69-8004-9f19c79ccb5d/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/31f0dcc7-5823-4c02-8c9e-6ffd20e81071/image.png" alt=""></li>
</ul>
<h3 id="merge">Merge</h3>
<ul>
<li>변경사항이 차이가 있는 두 파일을 합쳐주는 과정</li>
<li>현재 있는 branch를 기준으로 merge</li>
<li><code>git merge (branch name a)</code>: main브랜치 기준으로 a라는 브랜치를 merge시켜준다.</li>
<li>두코드의 라인이 다르기 때문에 git이 자동으로 인식해 conflict가 생기지 않는 상황
<img src="https://velog.velcdn.com/images/hey_roha/post/81ca6f52-2fb1-4222-b14f-eff31610ee15/image.png" alt=""></li>
</ul>
<h3 id="git-merge-and-conflict">Git Merge and Conflict</h3>
<ul>
<li>main 과 dev2 의 branch가 둘 다 변경되어서 커밋된 상황에서 merge</li>
<li>충돌이 발생함</li>
<li>같은 라인에 있는 코드가 차이가 있어서 충돌이 발생.</li>
<li>이와 같은 경우는 직접 수정을 해줘야함.</li>
<li><code>git mergetool</code>사용</li>
<li>남기고자 하는 code외에 모두 삭제한 후 저장</li>
<li>conflict상황을 해제하기 위해서 add를 한번씩 해줘야함</li>
<li>그 후 <code>git commit</code> 명령 후 뜨는 commit창을 저장해주기</li>
<li>다시 확인해보면 merge가 잘 되어있음</li>
</ul>
<p><img src="https://velog.velcdn.com/images/hey_roha/post/1b458e64-42c6-473b-975b-ed249455702c/image.png" alt=""></p>
<ul>
<li>mergetool 실행 후<img src="https://velog.velcdn.com/images/hey_roha/post/507e7395-fe4c-4e80-a91c-ee49d733bbc7/image.png" alt=""><img src="https://velog.velcdn.com/images/hey_roha/post/d7d5811a-9e58-44c1-a95b-c526a6e3babf/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/0e4641e6-bd2e-43fb-8a64-19486226bf97/image.png" alt=""></li>
</ul>
<hr>
<blockquote>
<p>📌<strong>회고록</strong></p>
</blockquote>
<ul>
<li>로컬에서 repository를 만들면 master로 branch가 생기고, remote의 경우  main으로 생성된다.</li>
<li>겹치는 부분이 있으면 merge를 자동으로 수행해주지만 다르면 충돌이 생긴다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Zero-Base]데이터 취업 스쿨 스터디 노트(Git-Log and Diff)]]></title>
            <link>https://velog.io/@hey_roha/Zero-Base%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%B7%A8%EC%97%85-%EC%8A%A4%EC%BF%A8-%EC%8A%A4%ED%84%B0%EB%94%94-%EB%85%B8%ED%8A%B8Git-Log-and-Diff</link>
            <guid>https://velog.io/@hey_roha/Zero-Base%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%B7%A8%EC%97%85-%EC%8A%A4%EC%BF%A8-%EC%8A%A4%ED%84%B0%EB%94%94-%EB%85%B8%ED%8A%B8Git-Log-and-Diff</guid>
            <pubDate>Mon, 08 Jul 2024 08:37:14 GMT</pubDate>
            <description><![CDATA[<h2 id="git-log-and-diff실습환경-만들기">Git Log and Diff실습환경 만들기</h2>
<h3 id="git-log-확인">Git Log 확인</h3>
<ul>
<li>git bash에서<code>code</code>명령어를 통해 vscode를 실행시킨다.</li>
<li>vscode에서 git graph를 찾은뒤 설치</li>
<li>아래의 화면이 나타나면 성공</li>
<li>커밋의 기록을 알 수 있음.
<img src="https://velog.velcdn.com/images/hey_roha/post/9af25cab-0deb-40a7-82be-451f9c5fb944/image.png" alt=""></li>
</ul>
<h3 id="git-log-실습환경-만들기">Git Log 실습환경 만들기</h3>
<ul>
<li>새로운 레파지토리를 remote에 만들어줌.</li>
<li>log_project 레파지토리 안에 다음과 같이 설정해줌
<img src="https://velog.velcdn.com/images/hey_roha/post/13d9080d-2937-4f68-a37e-ba1eaaf4fc26/image.png" alt=""></li>
</ul>
<h3 id="git-log">Git Log</h3>
<ul>
<li><code>git log</code>: 깃의 로그 확인 가능</li>
<li>아래서부터 시작
<img src="https://velog.velcdn.com/images/hey_roha/post/732ff597-7d77-4b10-a16f-e27a04c731d6/image.png" alt=""></li>
</ul>
<h3 id="git-editor-and-diff-tool설정">Git Editor and Diff tool설정</h3>
<ul>
<li><code>$ git config --global core.editor</code>: 기본 문서 편집기가 무엇인지 확인(vim 이 떠야하는데 뜨지 않는다면 <code>$ git config --global core.editor &quot;vim&quot;</code> 으로 직접 설정
<img src="https://velog.velcdn.com/images/hey_roha/post/9db82549-96e6-400a-bfe9-710ff413b504/image.png" alt=""></li>
<li><code>vi (파일이름)</code> : vim으로 파일 편집 가능.
<img src="https://velog.velcdn.com/images/hey_roha/post/f9058d2e-b3a7-423c-a408-05e5e6814af0/image.png" alt=""></li>
<li><code>$ git config --global core.editor &quot;code --wait&quot;</code>: vim 말고 vscode로 수월하게 편집하기 위해서 기본 설정 바꿀 것임.(*wait 설정은  vscode를 종료할 때까지 bash창의 명령어를 입력하지 않도록 기다리겠다는 것. 불편하면 wait없이 &#39;code&#39;만 입력해도 됨.)
<img src="https://velog.velcdn.com/images/hey_roha/post/62c39a22-77c0-4010-b32e-b8eb0dafe568/image.png" alt=""></li>
</ul>
<p><code>git config --global -e</code>: vscode에서 gitconfiguration 열기
<img src="https://velog.velcdn.com/images/hey_roha/post/64f40274-1cab-4b5d-a9a1-6cba983de7f1/image.png" alt=""></p>
<ul>
<li>위의 gitconfid에 diff 설정 추가(추가하고 x눌러서 꺼줘야함)
<img src="https://velog.velcdn.com/images/hey_roha/post/8b3b8e39-8936-4546-8ff7-a287ae930147/image.png" alt=""></li>
</ul>
<h2 id="git-difflocal">Git Diff(local)</h2>
<ul>
<li><p><code>get diff (브랜치1) (브랜치2)</code>: 각 브랜치간, 커밋간 들어가있는 내용이 다를 수 있는데 이를 확인할 수 있게 도와주는 것.
<img src="https://velog.velcdn.com/images/hey_roha/post/22923129-f13c-4869-9946-fdb06edacac4/image.png" alt=""></p>
</li>
<li><p><code>get difftool (브랜치1) (브랜치2)</code>: vscode상에서 브랜치의 차이를 보여줌
<img src="https://velog.velcdn.com/images/hey_roha/post/8398838a-010c-4cdb-a2fe-1cc1e96fe844/image.png" alt=""><img src="https://velog.velcdn.com/images/hey_roha/post/7b5118f0-7a54-4c93-9012-977ce9dd80f0/image.png" alt=""></p>
</li>
<li><p>커밋 번호를 통해서도 확인 가능
<img src="https://velog.velcdn.com/images/hey_roha/post/64b892d0-c506-40cf-bc31-0fbae0fc49b5/image.png" alt=""><img src="https://velog.velcdn.com/images/hey_roha/post/b8874ee7-4771-430d-b6a3-e805f001c87a/image.png" alt=""></p>
</li>
<li><p>head^는 head(마지막커밋)이전의 커밋을 말함
<img src="https://velog.velcdn.com/images/hey_roha/post/532f8499-3bd7-4ed5-beb7-57e26620be04/image.png" alt=""></p>
</li>
<li><p><code>get difftool HEAD</code>: 마지막 커밋과 현재 수정사항의 비교</p>
</li>
<li><p>마지막 수정은 cat이었는데 , 현재는 pig로 변경되어있음을 나타냄.
<img src="https://velog.velcdn.com/images/hey_roha/post/7b44f8a4-5551-4d36-9071-6253ffb661f4/image.png" alt=""></p>
</li>
</ul>
<h2 id="git-diffremote">Git Diff(remote)</h2>
<ul>
<li><code>git difftool main origin/main</code>: main은 local을 의미하고 origin은 remote에 연결되어있는 기본 레파지토리의 url을 말한다. local과 remote의 변동 내용을 비교
<img src="https://velog.velcdn.com/images/hey_roha/post/5eb549d9-bd6a-4ee0-92db-689aafb4a20e/image.png" alt=""><img src="https://velog.velcdn.com/images/hey_roha/post/c2cd41e4-bb56-4c9b-9733-f7afbaf1eceb/image.png" alt=""></li>
</ul>
<hr>
<blockquote>
<p>📌회고록</p>
</blockquote>
<ul>
<li><code>cat &gt;</code>: 덮어쓰기</li>
<li><code>cat &gt;&gt;</code>: 붙여쓰기</li>
<li><code>git checkout -b (브랜치이름)</code>: 해당 브랜치가 없는 경우에만 사용해야함</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Zero-Base]데이터 취업 스쿨 스터디 노트(Git-Remote Repository)]]></title>
            <link>https://velog.io/@hey_roha/Zero-Base%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%B7%A8%EC%97%85-%EC%8A%A4%EC%BF%A8-%EC%8A%A4%ED%84%B0%EB%94%94-%EB%85%B8%ED%8A%B8Git-Remote-Repository</link>
            <guid>https://velog.io/@hey_roha/Zero-Base%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%B7%A8%EC%97%85-%EC%8A%A4%EC%BF%A8-%EC%8A%A4%ED%84%B0%EB%94%94-%EB%85%B8%ED%8A%B8Git-Remote-Repository</guid>
            <pubDate>Mon, 08 Jul 2024 03:42:33 GMT</pubDate>
            <description><![CDATA[<h2 id="remote-repository">Remote Repository</h2>
<ul>
<li>레파지토리를 만들때 git ignore설정을 하면 그 파일 안에 들어있는 확장자 명들은 다루지 않겠다는 것.
<img src="https://velog.velcdn.com/images/hey_roha/post/0c1602cd-58db-4e78-847d-b9f27050909e/image.png" alt=""></li>
</ul>
<h2 id="default-branch">Default Branch</h2>
<ul>
<li>branch의 기본 이름인 main을 master또는 다른걸로 변경가능</li>
<li>main을 클릭후 아래 view all branches클릭
<img src="https://velog.velcdn.com/images/hey_roha/post/2cdf1892-24e0-4073-a28a-3f22ecfa6ed6/image.png" alt=""></li>
<li>또는 프로필에서 환경설정의 repository로 들어가 디폴트로 생성되는 레파지토리의 브랜치 이름을 변경할 수 있다.
<img src="https://velog.velcdn.com/images/hey_roha/post/8b308640-a1d6-49f0-8a57-cfce54caa658/image.png" alt=""></li>
</ul>
<h2 id="remote-repository복제하기">Remote Repository복제하기</h2>
<ul>
<li><code>git clone (토큰,주소값)</code>을 하면 local에서 변경된 내용을 한번에 가져올 수 있다.
<img src="https://velog.velcdn.com/images/hey_roha/post/0e613db9-a7f6-4959-a2bd-f117c3d57d1e/image.png" alt=""></li>
</ul>
<hr>
<blockquote>
<p>📌회고록</p>
</blockquote>
<ul>
<li>만약 remote의 url을 잘못 설정했다면 <code>git remote remove origin</code>을 사용해 삭제할 수 있다.</li>
<li>파일명 앞에 &#39;.&#39;이 붙어있으면 숨김파일이므로 <code>ls -all</code>을 해서 찾아볼 수 있다.
<img src="https://velog.velcdn.com/images/hey_roha/post/e255329f-04de-44a1-87ba-7a986c2214db/image.png" alt=""></li>
</ul>
<h2 id="branch">Branch</h2>
<h3 id="branch-조회">Branch 조회</h3>
<ul>
<li><p>Branch 조회&gt; 생성&gt; 이동&gt; 삭제
(Local에서 작업을 하면 remote로 보내줘야함)</p>
</li>
<li><p><code>git branch</code> : local branch의 정보를 알려줌
<img src="https://velog.velcdn.com/images/hey_roha/post/fbf236e1-ec36-4d4e-9036-6a6548c6c264/image.png" alt=""></p>
</li>
<li><p><code>git branch -r</code>:  remote branch를 기준으로 어떤 정보가 담겨있는지 알려줌.
<img src="https://velog.velcdn.com/images/hey_roha/post/2024f73c-4c1d-40ca-943a-a84b29df72a3/image.png" alt=""></p>
</li>
<li><p><code>git branch -a</code>: local 과 remote branch의 정보를 같이 알려줌.
<img src="https://velog.velcdn.com/images/hey_roha/post/d6e4b4bf-a734-4ede-a702-58216eccd242/image.png" alt=""></p>
</li>
</ul>
<h3 id="branch-생성이동">Branch 생성&amp;이동</h3>
<h4 id="local에서-작업">&gt;local에서 작업</h4>
<ul>
<li><code>git branch (생성할 브랜치 이름)</code>: 브랜치 생성
<img src="https://velog.velcdn.com/images/hey_roha/post/2c640ce6-6938-4d56-90b6-53a9c335166f/image.png" alt=""></li>
</ul>
<p>-<code>git checkout (이동할 브랜치 이름)</code>: 해당 브랜치로 이동(master에서 바뀐것 확인 가능)
<img src="https://velog.velcdn.com/images/hey_roha/post/c8a8d851-626b-4faa-8d37-df3ff622bf39/image.png" alt=""></p>
<p>-<code>$ git checkout -b (브랜치 이름)</code>: 해당 브랜치로 이동하는데 없으면 생성하고 이동
<img src="https://velog.velcdn.com/images/hey_roha/post/5691d7d1-511c-4e52-8ae3-39c9f237472f/image.png" alt=""></p>
<h4 id="remote에서-작업">&gt;remote에서 작업</h4>
<ul>
<li>local에서 만든 branch를 remote에 적용시키는 과정</li>
<li><code>git push origin (브랜치 이름)</code>: 해당 브랜치를 remote repository에 적용(아래 빨간색 부분이 remote)</li>
<li>branch01이 생긴것 확인 가능</li>
<li>branch02까지 적용 완료
<img src="https://velog.velcdn.com/images/hey_roha/post/8a854c88-fe1e-4256-9b6d-f30ef9f06b18/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/f1b9d683-74d2-407c-92cc-d9d9ace12b5e/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/b0ffba45-b898-4899-8d79-a91a2bd34315/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/b59e6e5a-989a-4278-b757-0217388a8a0e/image.png" alt=""></li>
</ul>
<h3 id="branch-삭제">Branch 삭제</h3>
<h4 id="local에서-작업-1">&gt;local에서 작업</h4>
<ul>
<li><p>branch02 삭제작업</p>
</li>
<li><p>해당 branch가 활성화 되어있는 경우에는 삭제가 되지 않으므로 다른 branch로 checkout후에 삭제를 진행해야 한다.</p>
</li>
<li><p><code>git branch -d (브랜치 이름)</code>: 해당 branch를 삭제
<img src="https://velog.velcdn.com/images/hey_roha/post/943e3bf5-b659-4472-952d-6550b0dc3408/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/2683bf0c-f717-4b7b-a23e-f3bb00ca3102/image.png" alt=""></p>
</li>
<li><p>생성한 모든 브랜치를 지우고 확인하니 local에서는 삭제된게 remote에는 아직 남아있음.
<img src="https://velog.velcdn.com/images/hey_roha/post/9a7f2829-5652-477b-9218-56f6b1c0ff78/image.png" alt=""></p>
</li>
<li><p><code>git push origin --delete (브랜치이름)</code>:
해당 브랜치를 삭제한걸 remote에 반영함.(마지막에는 다 적용되어 master만 남은 것을 확인할 수 있음)
<img src="https://velog.velcdn.com/images/hey_roha/post/42af436e-d993-41c1-86d7-cf40a524cfd8/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/6a57e526-6e07-4caf-b847-3454ea9cea38/image.png" alt=""></p>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Zero-Base]데이터 취업 스쿨 스터디 노트(Git-Repository)]]></title>
            <link>https://velog.io/@hey_roha/Zero-Base%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%B7%A8%EC%97%85-%EC%8A%A4%EC%BF%A8-%EC%8A%A4%ED%84%B0%EB%94%94-%EB%85%B8%ED%8A%B8Git-Repository</link>
            <guid>https://velog.io/@hey_roha/Zero-Base%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%B7%A8%EC%97%85-%EC%8A%A4%EC%BF%A8-%EC%8A%A4%ED%84%B0%EB%94%94-%EB%85%B8%ED%8A%B8Git-Repository</guid>
            <pubDate>Sun, 07 Jul 2024 17:21:14 GMT</pubDate>
            <description><![CDATA[<h2 id="local-repository생성">Local Repository생성</h2>
<h3 id="1첫번째-단계">1.첫번째 단계</h3>
<ul>
<li>git 실습을 할 폴더(test_project) 생성</li>
<li>git init을 통해 git이 폴더를 관리할 수 있도록 만듦</li>
<li>working directory의 단계</li>
<li><code>ls -all</code>을 통해 git이 관리하는 숨김파일을 다 볼 수 있다.</li>
</ul>
<p><img src="https://velog.velcdn.com/images/hey_roha/post/d5afb19d-5089-4feb-a3b3-89e752b20917/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/hey_roha/post/5be8f9e5-7bae-49f9-9a56-7ef7447bcb3e/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/2aca4074-cc56-43eb-93ed-146ae2a820ea/image.png" alt=""></p>
<hr>
<h3 id="2두번째-단계">2.두번째 단계</h3>
<p><img src="https://velog.velcdn.com/images/hey_roha/post/444661fb-eae0-428c-bbd8-2b92fece3084/image.png" alt=""></p>
<ul>
<li><code>$ touch (파일이름.txt)</code>: 텍스트 파일 생성</li>
<li><code>git status</code>: 현재 이 폴더 안에서 어떤 일들이 생겨나는지 확인 가능
<img src="https://velog.velcdn.com/images/hey_roha/post/c150a85f-1404-459f-ac21-4be2802ae1c9/image.png" alt=""></li>
<li>텍스트파일을 <code>git add (파일명)</code> 후(index추가) git의 상태가 변화됨.
<img src="https://velog.velcdn.com/images/hey_roha/post/ab2ba321-599b-431b-aaee-28d4d75d16d1/image.png" alt=""></li>
</ul>
<hr>
<h3 id="3세번째-단계">3.세번째 단계</h3>
<p><img src="https://velog.velcdn.com/images/hey_roha/post/265cb787-30dc-45c3-bf5b-8eca0ff77727/image.png" alt=""></p>
<ul>
<li>commit 을 통해 head로 올리는 단계</li>
<li><code>$ git commit -m &#39;(커밋에 대한 설명 메세지)&#39; (적용시킬 파일명)</code>
<img src="https://velog.velcdn.com/images/hey_roha/post/6a148db0-0715-46f7-a6db-0a1dbf5aad49/image.png" alt=""></li>
</ul>
<h2 id="remote-repository생성">Remote Repository생성</h2>
<h3 id="1-remote-repository-생성">1. remote repository 생성</h3>
<ul>
<li>인터넷에서 사용할 레파지토리</li>
<li>github 홈페이지에 들어가서 새로운 레파지토리 생성</li>
<li>프로필의 setting에 들어가서 맨 아래 developers settings에서 token발급</li>
<li>name작성,no expiration, repo로 선택</li>
</ul>
<p><img src="https://velog.velcdn.com/images/hey_roha/post/f89ceb43-087d-4c81-832a-af9eb853eb5c/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/hey_roha/post/2c1aba79-d726-42c6-9344-5224b59d02c6/image.png" alt=""></p>
<hr>
<h3 id="2-remote랑local-연결">2. remote랑local 연결</h3>
<ul>
<li><p>연결 문법
<img src="https://velog.velcdn.com/images/hey_roha/post/a3f31ee5-65f8-4be5-9ca9-f832952b6a58/image.png" alt=""></p>
</li>
<li><p><code>$ git remote add origin https://heyroha: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~@github.com/heyroha/test_project.git</code></p>
</li>
<li><p>연결된 remote repository확인</p>
</li>
</ul>
<p><img src="https://velog.velcdn.com/images/hey_roha/post/8254a0f1-0be3-4978-b115-bdf6dd72aba0/image.png" alt=""></p>
<h2 id="remoite-repository에-push하기">Remoite repository에 push하기</h2>
<ul>
<li>Local repository(head)에 반영된 변경내용을 Remote 에도 반영하기 위해 push사용</li>
<li>master가 안된다면 main으로 실행</li>
<li>커밋을 하고 깃헙페이지 새로고침하면 test.txt가 커밋된 것을 확인할 수 있다.</li>
<li>이 명령어에서 origin은 일반적으로 프로젝트의 원격 저장소를 의미한다. 여러개의 원격 저장소를 추가할 수 있지만 &#39;origin&#39;은 기본적으로 사용된다.</li>
<li>origin은 원격 저장소를 지정하고, master는 브랜치를 지정한다.</li>
</ul>
<p><img src="https://velog.velcdn.com/images/hey_roha/post/ba3de510-d796-4051-8b79-c750efcf7eff/image.png" alt="">
<img src="https://velog.velcdn.com/images/hey_roha/post/505a0dfd-1dbd-4726-a007-b6fe1da4585d/image.png" alt=""></p>
<h2 id="local-repository에-pull하기">Local repository에 pull하기</h2>
<ul>
<li><code>git pull origin master</code>를 통해 로컬에 있는 파일 pull 할 수 있다.</li>
<li>readme 파일이 생긴 것을 확인할 수 있다.</li>
</ul>
<p><img src="https://velog.velcdn.com/images/hey_roha/post/37195b1c-288b-46c3-94d5-d62e7ac3d34c/image.png" alt=""></p>
<hr>
<blockquote>
<p>📌회고록</p>
</blockquote>
<ul>
<li>git 사용할때는 변화된 내용이 있을 수 있으므로 습관적으로 <code>git status</code>확인해주기!</li>
<li>폴더를 만들고 그 폴더 내에서 <code>git init</code>을 해줘야 git이 관리를 할 수 있음.</li>
<li>텍스트 파일을 확인해보고 싶으면 <code>cat (파일명)</code>을 사용해서 확인 가능</li>
<li>파일만들기&gt; git add를 통해 index추가하기&gt; 커밋하기&gt; 리모트랑 로컬 연결하기 &gt; push하기/pull하기</li>
<li><code>cat &gt; (파일명)</code>을 통해 문서 수정가능( ctrl+D로 저장)</li>
</ul>
]]></description>
        </item>
    </channel>
</rss>