<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>minye.log</title>
        <link>https://velog.io/</link>
        <description>🔥오늘도 노력하고 있지요😁</description>
        <lastBuildDate>Mon, 10 Jan 2022 10:27:40 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>minye.log</title>
            <url>https://images.velog.io/images/minye_ppp/profile/0718ef86-1f70-440e-b482-195e5fb44fc5/social.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. minye.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/minye_ppp" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[Python 데이터 시각화]]></title>
            <link>https://velog.io/@minye_ppp/Python-%EC%8B%9C%EA%B0%81%ED%99%94-Line-Plot</link>
            <guid>https://velog.io/@minye_ppp/Python-%EC%8B%9C%EA%B0%81%ED%99%94-Line-Plot</guid>
            <pubDate>Mon, 10 Jan 2022 10:27:40 GMT</pubDate>
            <description><![CDATA[<h2 id="line-plot">Line Plot</h2>
<blockquote>
<p>시간의 흐름, 순서에 따른 관측값의 변화, 추세를 시각화 하는데 유용한 선 그래프</p>
</blockquote>
<pre><code class="language-python">import pandas as pd
import matplotlib.pyplot as plt


data = &#39;/content/drive/MyDrive/Colab Notebooks/DataSet/Iris/Iris.csv&#39;
df = pd.read_csv(data)
df = df.drop([&#39;Id&#39;], axis=1)

df.plot.line(title=&#39;Iris Dataset&#39;)
plt.show()</code></pre>
<p><img src="https://images.velog.io/images/minye_ppp/post/7c87ab4e-2cc9-49d4-885b-33673a3e12f3/image.png" alt=""></p>
<pre><code class="language-python">df[&#39;SepalLengthCm&#39;].plot();</code></pre>
<p><img src="https://images.velog.io/images/minye_ppp/post/a71892b9-5bcc-4529-81c5-12c914c01eae/image.png" alt=""></p>
<p>📌 Lineplot 참고: </p>
<ul>
<li><a href="https://continuous-development.tistory.com/143">https://continuous-development.tistory.com/143</a></li>
</ul>
<hr>
<h2 id="histogram">Histogram</h2>
<blockquote>
<p>데이터의 분포를 확인 할 수 있다. 이를 토대로 어느 부분에 자료가 많이 집중되어 있는지와 이상치를 살펴볼 수 있고, 데이터의 좌우 대칭성을 설명할 수 있다. 주의할 점은 계급 폭을 다르게 하면 해석이 달라 질 수 있다는 점이다.</p>
</blockquote>
<pre><code>plt.hist(df[&#39;SepalWidthCm&#39;], bins=10)</code></pre><p><img src="https://images.velog.io/images/minye_ppp/post/10a3521b-d5ca-4b27-bc95-a2e844780ccc/image.png" alt=""></p>
<hr>
<h2 id="scatter-plot">Scatter Plot</h2>
<blockquote>
<p>두 변수 간의 방향, 트렌드, 밀집도와 이상치를 확인 할 수 있다. 또한, 명목형 변수의 군집별로 색을 다르게 하여 구분할 수도 있다.</p>
</blockquote>
<pre><code class="language-python">groups = df.groupby(&#39;Species&#39;)
fig, ax = plt.subplots()
for name, group in groups:
  ax.plot(group.PetalLengthCm,
          group.PetalWidthCm,
          marker=&#39;o&#39;,
          linestyle=&#39;&#39;,
          label=name)
ax.legend(fontsize=12, loc=&#39;upper left&#39;)
plt.title(&#39;Scatter Plot of iris by matplotlib&#39;, fontsize=20)
plt.xlabel(&#39;Petal Length&#39;, fontsize=14)
plt.ylabel(&#39;Petal Width&#39;, fontsize=14)
plt.show()</code></pre>
<p><img src="https://images.velog.io/images/minye_ppp/post/00718112-3e3c-4c2e-a458-a36fff9152fa/image.png" alt=""></p>
<hr>
<h2 id="box-plot">Box Plot</h2>
<blockquote>
<p>하나의 연속형 변수에 대해서 분포 형태, 퍼짐정도, 이상치 여부등을 시각화하고, 하나의 그룹 혹은 여러개의 그룹 간 비교하는데 유용한 상자그림이다.</p>
</blockquote>
<blockquote>
<p>연속형 변수에 대해서 최소값(min), 제 1사분위수(Q1), 중앙값(Q2, median), 제 3사분위수(Q3), 최대값(max) 의 요약통계량을 계산하는 것에서 시작한다.</p>
</blockquote>
<h3 id="🏷️-boxplot-그리는-순서-및-방법">🏷️ BoxPlot 그리는 순서 및 방법</h3>
<ol>
<li>주어진 데이터에서 각 사분위수를 계산한다.</li>
<li>그래프에서 제1 사분위와 제3 사분위를 밑변으로 하는 직사각형을 그리고, 제 2사분위에 해당하는 위치에 선분을 긋는다.</li>
<li>사분위수 범위(IQR, Interquartile range, $$Q_3 - Q1$$)를 계산한다.</li>
<li>$$Q_3$$과 차이가 $$1.5 \times IQR$$ 이내인 값 중에서 최댓값을 $$Q_3$$과 직선으로 연결하고, 마찬가지로 $$Q_1$$과 차이가 $$1.5 \times IQR$$ 이내인 값 중에서 최솟값을 $$Q_1$$과 연결한다.</li>
<li>$$Q_3$$보다 $$1.5 \times IQR$$ 이상 초과하는 값과 $$Q_1$$보다 $$1.5 \times IQR$$ 이상 미달하는 값은 점이나, 원, 별표등으로 따로 표시한다(이상치 점).
<img src="https://images.velog.io/images/minye_ppp/post/571d42db-4882-44e7-b60c-eefdca806133/image.png" alt="">
source: <a href="https://en.wikipedia.org/wiki/Box_plot">https://en.wikipedia.org/wiki/Box_plot</a></li>
</ol>
<pre><code class="language-python">import seaborn as sns
import matplotlib.pyplot as plt


## boxplot
figure = plt.figure(figsize=(10, 8))
plt.rcParams.update({&#39;font.size&#39;: 22})
plt.ylim(0, 10)
sns.boxplot(x=&quot;Species&quot;, y=&quot;SepalLengthCm&quot;, data=df, showmeans=True,
            meanprops={&quot;marker&quot;:&quot;s&quot;,&quot;markerfacecolor&quot;:&quot;black&quot;, &quot;markeredgecolor&quot;:&quot;black&quot;})</code></pre>
<p><img src="https://images.velog.io/images/minye_ppp/post/43fab0b9-51ea-4d67-a311-1d46b844b8e9/image.png" alt=""></p>
<p>📌 boxplot 참고: </p>
<ul>
<li><a href="https://rfriend.tistory.com/410">https://rfriend.tistory.com/410</a></li>
<li><a href="https://blog.naver.com/qbxlvnf11/221351657248">https://blog.naver.com/qbxlvnf11/221351657248</a>
<a href="https://wikidocs.net/141959">https://wikidocs.net/141959</a></li>
</ul>
<hr>
<h2 id="heatmap">HeatMap</h2>
<blockquote>
<p>상관계수를 통하여 두 속성 간의 연관성을 나타낼 수 있다. -1에 가까우면 음의 상관관계, 0이면 상관관계가 없고, 1에 가까울수록 양의 상관관계를 나타낸다.</p>
</blockquote>
<pre><code class="language-python">plt.figure(figsize=(7, 4))
sns.heatmap(df.corr(), annot=True)</code></pre>
<p><img src="https://images.velog.io/images/minye_ppp/post/d354318a-2bc1-4b50-9a50-99324b338c4a/image.png" alt=""></p>
<hr>
<h2 id="pair-plot">Pair Plot</h2>
<blockquote>
<p>데이터의 모든 컬럼들의 변수의 상관관계를 histogram과 Scatterplot으로 출력한다. 전체 데이터의 상관관계를 한눈에 볼 수 있다.</p>
</blockquote>
<pre><code class="language-python">sns.pairplot(df, hue=&#39;Species&#39;)
plt.show()</code></pre>
<p><img src="https://images.velog.io/images/minye_ppp/post/77308b5d-94b2-4bc2-8b7a-211d54a18463/image.png" alt=""></p>
<hr>
<p>📌 참고: </p>
<ul>
<li><a href="https://www.insilicogen.com/blog/361">https://www.insilicogen.com/blog/361</a></li>
<li><a href="https://zzsza.github.io/development/2018/08/24/data-visualization-in-python/">https://zzsza.github.io/development/2018/08/24/data-visualization-in-python/</a></li>
<li><a href="https://velog.io/@changhtun1/Python-%EC%8B%9C%EA%B0%81%ED%99%94-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC%EB%A5%BC-%ED%99%9C%EC%9A%A9%ED%95%9C-Data-Visualization">https://velog.io/@changhtun1/Python-%EC%8B%9C%EA%B0%81%ED%99%94-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC%EB%A5%BC-%ED%99%9C%EC%9A%A9%ED%95%9C-Data-Visualization</a></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[EDA (Exploratory Data Analysis)]]></title>
            <link>https://velog.io/@minye_ppp/EDA-Exploratory-Data-Analysis</link>
            <guid>https://velog.io/@minye_ppp/EDA-Exploratory-Data-Analysis</guid>
            <pubDate>Mon, 10 Jan 2022 09:56:40 GMT</pubDate>
            <description><![CDATA[<h1 id="탐색적-데이터-분석eda-exploratory-data-analysis">탐색적 데이터 분석(EDA: Exploratory Data Analysis)</h1>
<h3 id="1-정의"><strong>1. 정의</strong></h3>
<p>데이터를 다양한 각도에서 관찰하고, 이해하는 모든 과정으로, 데이터 분석에 있어서 매우 중요한 초기 분석 단계이다. 다음과 같은 방법들을 통해 지료를 직관적으로 바라본다.</p>
<blockquote>
<ul>
<li>시각화와 같은 도구를 통해서 패턴 발견</li>
<li>데이터의 특이성 확인</li>
<li>통계와 그래픽(혹은 시각적 표현)을 통해서 가설을 검정하는 과정</li>
<li>데이터 분석을 통해 인사이트 도출</li>
</ul>
</blockquote>
<h3 id="2-필요한-이유"><strong>2. 필요한 이유</strong></h3>
<p>1) 데이터의 분포(Distribution)와 값(Value)을 다양한 관점에서 바라봄으로써 데이터가 가지고 있는 현상을 이해하고, 데이터의 잠재적인 문제를 발견할 수 있다. 이를 통해, 본격적인 분석에 들어가기에 앞서 데이터의 수집을 결정할 수 있다.</p>
<p>2) 데이터를 다양한 각도에서 살펴보는 과정을 통해 문제정의 단계에서 발견하지 못했던 다양한 패턴을 발견하고, 이를 바탕으로 기존의 가설을 수정하거나 새로운 가설을 설정할 수 있다.</p>
<p>3) 탐색적 데이터 분석의 최종적 목표는 데이터를 이해하는 것이다. 데이터 이해를 통해 적절한 통계 도구를 제시하고 추가 자료수집을 위한 기반이 되기도 한다.</p>
<h3 id="3-과정"><strong>3. 과정</strong></h3>
<p>탐색적 데이터 분석은 한번에 완벽한 결론에 도달하는 것이 아니라, 아래와 같은 방법을 반복하여 <strong>데이터를 이해하고 탐구하는 과정</strong>이다.</p>
<blockquote>
<p>(1) 데이터에 대한 질문 &amp; 문제 만들기
(2) 데이터를 시각화하고, 변환하고, 모델링하여 그 질문 &amp; 문제에 대한 답을 찾아보기
(3) 찾는 과정에서 배운것을 토대로 다시 질문을 다듬고 또 다른 질문 &amp; 문제 만들기</p>
</blockquote>
<p>이러한 과정을 기반으로 데이터에서 흥미있는 패턴이 발견될 때까지, 더 찾는 것이 불가능하다고 판단될 때까지 도표, 그래프 등의 시각화, 요약 통계를 이용하여 전체적인 데이터를 살펴보고 개별 속성의 값을 관찰한다. 데이터에서 발견되는 이상치를 찾아내 전체 데이터 패턴에 끼치는 영향을 관찰하고, 속성 간의 관계에서 패턴을 발견한다.</p>
<p>1) 전체적인 데이터 분석</p>
<ul>
<li>분석의 목적과 변수가 무엇이 있는지 확인</li>
<li>데이터 항목의 개수, 속성 목록, NAN 값, 각 속성이 가지는 데이터형 등을 확인</li>
<li>데이터 가공 과정에서 데이터의 오류나 누락이 없는지 데이터의 head와 tail을 확인</li>
<li>데이터를 구성하는 각 속성값이 예측한 범위와 분포를 갖는지 확인. 만약 그렇지 않다면, 이유가 무엇인지 확인</li>
</ul>
<p>2)  이상치(Outlier) 분석</p>
<ul>
<li>개별 데이터를 관찰하여 전체적인 추세와 특이사항을 관찰(데이터가 많다고 특정 부분만 보게 되면 이상치가 다른 부분에서 나타날 수도 있으므로 앞, 뒤, 무작위로 표본을 추출해서 관찰)</li>
<li>적절한 요약 통계 지표를 사용<ul>
<li>데이터의 중심을 알기 위해서는 평균, 중앙값, 최빈값을 사용</li>
<li>데이터의 분산도를 알기 위해서는 범위, 분산 등을 이용<ul>
<li>시각화를 통해 데이터의 개별 속성에 어떤 통게 지표가 적절한지 결정</li>
<li>이외에도 기계학습의 K-means 기법, Static based detection, Deviation based method, Distance based Detection 기법을 이용하여 이상치를 발견할 수 있다</li>
</ul>
</li>
</ul>
</li>
</ul>
<p>3) 속성간의 관계 분석
속성간의 관계에 초점을 맞추어, 개별 속성 관찰에서 찾아내지 못했던 속성들의 조합, 패턴 발견</p>
<ul>
<li>상관계수를 통한 상관관계 확인</li>
<li>그래프를 통해 시각화하여 속성간의 관계 분석(히트맵, 산점도, Box plot, 파이차트 등)</li>
</ul>
<h3 id="4-eda-방법--대상"><strong>4. EDA 방법 / 대상</strong></h3>
<p>1) EDA 방법</p>
<ul>
<li>Graphic : 차트 혹은 그림 등을 이용하여 데이터를 확인하는 방법</li>
<li>Non-Graphic : 그래픽적인 요소를 사용하지 않는 방법으로, 주로 Summary Statistics를 통해 데이터를 확인하는 방법</li>
</ul>
<p>2) EDA 대상(타겟)</p>
<ul>
<li>Univariate(일변량) : 변수가 1개, 데이터를 설명하고 그 안에 존재하는 패턴을 찾는것이 주요 목적</li>
<li>Multi-variate(다변량) : 변수가 여러개, 여러 변수들간의 관계를 보는 것이 주요 목적</li>
</ul>
<h3 id="5-eda-유형"><strong>5. EDA 유형</strong></h3>
<p><img src="https://images.velog.io/images/minye_ppp/post/d1671fa1-7920-481e-97c5-ef8c4b1b10a1/image.png" alt=""></p>
<p>1) Uni-Non Graphic(일변량 비시각화)
 주어진 데이터의 Distribution을 확인하는 것이 주목적</p>
<ul>
<li>Numeric data의 경우: summary statistics를 제일 많이 활용하는데 이에는, Center (Mean, Median, Mode), Spread (Variance, SD, IQR, Range), Modality (Peak), Shape (Tail, Skewness, Kurtosis), Outliers 등을 확인한다.</li>
<li>Categorical data의 경우: occurence, frequency, tabulation등을 할 수 있다.</li>
</ul>
<p>2) Uni-Graphic(일변량 시각화)
주어진 데이터를 전체적으로 살펴보는 것이 주목적</p>
<ul>
<li>Histogram 혹은 Pie chart, Stem-leaf plot, Boxplot, QQplot 등을 사용</li>
</ul>
<p>3) Multi-Non Graphic(다변량 비시각화)
주어진 둘 이상의 변수간 관계를 확인하는 것이 주목적</p>
<ul>
<li>Cross-Tabulation, Cross-Statistics (Correlation, Covariance)등을 사용</li>
</ul>
<p>4) Multi-Graphic(다변량 시각화)
주어진 둘 이상의 변수간 관계를 전체적으로 살펴보는 것이 주목적</p>
<ul>
<li>Category &amp; Numeric : Boxplots, Stacked bar, Parallel Coordinate, Heatmap</li>
<li>Numeric &amp; Numeric : Scatter Plot</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Deep Learning] 경사하강법과 역전파 알고리즘]]></title>
            <link>https://velog.io/@minye_ppp/Deep-Learning-%EA%B2%BD%EC%82%AC%ED%95%98%EA%B0%95%EB%B2%95%EA%B3%BC-%EC%97%AD%EC%A0%84%ED%8C%8C-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98</link>
            <guid>https://velog.io/@minye_ppp/Deep-Learning-%EA%B2%BD%EC%82%AC%ED%95%98%EA%B0%95%EB%B2%95%EA%B3%BC-%EC%97%AD%EC%A0%84%ED%8C%8C-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98</guid>
            <pubDate>Tue, 10 Aug 2021 11:18:51 GMT</pubDate>
            <description><![CDATA[<h3 id="🏆-학습목표">🏆 학습목표</h3>
<ul>
<li>경사하강법과 역전파 알고리즘에 대해 이해하고 설명할 수 있다.</li>
<li>경사하강법과 역전파 알고리즘을 사용하여 신경망을 구현할 수 있다.</li>
<li>케라스 프레임워크를 이용하여 모델을 구축할 수 있다.</li>
</ul>
<h3 id="📚-손실함수loss-function">📚 손실함수(loss function)</h3>
<blockquote>
<p>손실함수란?</p>
</blockquote>
<ul>
<li>실제값과 예측값의 차이(loss, cost)를 수치화 해주는 함수.</li>
<li>손실함수의 값을 최소화하는 w, b를 찾는 것이 목표.</li>
<li>딥러닝 모델은 실제 라벨과 가장 가까운 값이 예측되도록 훈련되어진다. 이때 그 가까운 정도를 측정하기 위해 사용되는 것이 손실함수(loss function)이다.</li>
</ul>
<blockquote>
<p>손실함수 종류</p>
</blockquote>
<ol>
<li><p>MSE(mean squared error)
: 회귀(regression)용도의 딥러닝 모델을 훈련시킬 때 많이 사용되는 손실 함수이다.<br/></p>
</li>
<li><p>MAE(mean absolute error)
: 에러 제곱의 평균이 아니라 에러 절대값의 평균을 구한다. MAE도 회귀 용도의 딥러닝 모델을 훈려시킬 때 많이 사용된다.<br/></p>
</li>
<li><p>binary crossentropy
: 이진분류기 훈련때 사용. 이진 분류기라는 것은 True 또는 False, 양성 또는 음성 등 2개의 클래스를 분류할 수 있는 분류기를 의미한다.<br/></p>
</li>
<li><p>categorical crossentropy
: 분류해야할 클래스가 3개 이상인 경우 사용(멀티 클래스 분류). 라벨이 [0,0,1,0,0], [1,0,0,0,0], [0,0,0,1,0]과 같이 one-hot 형태로 제공될 때 사용된다.<br/></p>
</li>
<li><p>sparse categorical crossentropy
: 분류해야할 클래스가 3개 이상인 경우 사용(멀티 클래스 분류). 라벨이 0, 1, 2, 3, 4와 같이 정수의 형태로 제공될 때 사용한다.</p>
</li>
</ol>
<pre><code>참고_https://bskyvision.com/822
</code></pre><h3 id="📕-신경망-구조">📕 신경망 구조</h3>
<p><img src="https://images.velog.io/images/minye_ppp/post/cf754b40-b5ca-4f35-a533-dd32a0ea68db/image.png" alt=""></p>
<ul>
<li>입력층(Input layer), 은닉층(Hidden layer), 출력층(Output layer)이 존재</li>
<li>각 층은 n개의 뉴런(노드, activation units)으로 구성되어 있고, 각각 가중치(weight)와 편향(bias)를 가지고 있다.</li>
<li>입력층에서 은닉층, 출력층으로 데이터 전달(순전파)<ul>
<li>훈련데이터를 입력층(이전층)으로부터 받는다.<ul>
<li>입력데이터는 가중치와 가중합(weight sum)을 한다.</li>
<li>편향(bias)이 더해진다.</li>
<li>편향이 더해진 가중합은 활성화 함수(activation funcion)을 통해 다음층으로 전달된다. 입력의 특성이 n개인 경우 전달되는 값은 다음과 같다.</li>
</ul>
</li>
</ul>
</li>
</ul>
<p>$$
 y = sigmoid(\sum(w_{1}x_{1} + w_{2}x_{2} + ... + w_{n}x_{n}) + bias)
$$</p>
<h3 id="📗-backpropagationbp-역전파">📗 Backpropagation(BP) 역전파</h3>
]]></description>
        </item>
    </channel>
</rss>