<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>overhaul_.log</title>
        <link>https://velog.io/</link>
        <description></description>
        <lastBuildDate>Fri, 25 Oct 2024 02:33:32 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>overhaul_.log</title>
            <url>https://velog.velcdn.com/images/overhaul_/profile/4043acf2-f5c7-4521-b030-cdde3bea8091/social_profile.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. overhaul_.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/overhaul_" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[시계열 데이터 분석 ]]></title>
            <link>https://velog.io/@overhaul_/%EC%8B%9C%EA%B3%84%EC%97%B4-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%EC%84%9D</link>
            <guid>https://velog.io/@overhaul_/%EC%8B%9C%EA%B3%84%EC%97%B4-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%EC%84%9D</guid>
            <pubDate>Fri, 25 Oct 2024 02:33:32 GMT</pubDate>
            <description><![CDATA[<p><a href="https://www.tableau.com/analytics/what-is-time-series-analysis">https://www.tableau.com/analytics/what-is-time-series-analysis</a></p>
<p><img src="https://velog.velcdn.com/images/overhaul_/post/f6dc8ff6-a044-4d0c-b1d9-fab24c8364dd/image.png" alt=""></p>
<h1 id="시계열-분석time-series-analysis이란">시계열 분석(Time Series Analysis)이란?</h1>
<p>시계열 분석은 일정한 시간 간격을 두고 수집된 데이터 포인트의 일련을 분석하는 특정 방법입니다. 시계열 분석에서는 데이터를 불규칙적이거나 임의로 기록하는 것이 아니라, 일정한 간격으로 데이터를 수집합니다. 그러나 시계열 분석은 단순히 데이터를 시간 순서대로 수집하는 것 이상을 의미합니다.</p>
<p>시계열 데이터를 다른 데이터와 차별화하는 것은 이 분석이 변수가 시간에 따라 어떻게 변화하는지를 보여줄 수 있다는 점입니다. 다시 말해, 시간이 중요한 변수로 작용하며, 이는 데이터 포인트가 시간에 따라 어떻게 조정되는지와 최종 결과에 대한 정보를 제공합니다. 시계열 데이터는 데이터 간 종속성을 나타내며, 이를 통해 추가적인 정보를 제공하는 역할을 합니다.</p>
<p>시계열 분석은 일반적으로 일관성과 신뢰성을 확보하기 위해 많은 데이터 포인트가 필요합니다. 대규모 데이터 세트는 대표성을 확보하고, 노이즈 데이터를 제거하며, 발견된 패턴이 <strong>이상값(outliers)</strong>이 아닌 실제 경향을 나타내는지 확인하는 데 도움을 줍니다. 또한, 시계열 데이터는 과거 데이터를 기반으로 미래를 예측하는 예측에도 사용할 수 있습니다.</p>
<h2 id="시계열-데이터-분석을-사용하는-이유">시계열 데이터 분석을 사용하는 이유</h2>
<p>시계열 분석은 조직이 시간에 따른 추세나 패턴의 근본적인 원인을 이해하는 데 도움을 줍니다. 데이터를 시각화함으로써 사용자들은 계절적 경향을 볼 수 있으며, 이러한 경향이 발생하는 이유를 더 깊이 파악할 수 있습니다. 최신 분석 플랫폼을 통해 이 시각화는 단순한 선 그래프 이상의 다양한 형태로 제공됩니다.</p>
<p>조직이 일관된 간격으로 데이터를 분석하면, 시계열 예측을 통해 미래 사건의 발생 가능성을 예측할 수 있습니다. 시계열 예측은 예측 분석의 한 부분으로, 계절성이나 주기적 행동과 같은 데이터 변화 가능성을 보여주며, 이를 통해 데이터 변수를 더 잘 이해하고 더 정확한 예측을 할 수 있도록 도와줍니다.</p>
<p>예를 들어, Des Moines 공립학교는 5년간의 학생 성취 데이터를 분석해 위험 학생을 식별하고, 시간이 지남에 따라 성과를 추적했습니다. 오늘날의 기술을 통해 매일 엄청난 양의 데이터를 수집할 수 있으며, 일관된 데이터를 충분히 확보하여 종합적인 분석을 수행하는 것이 그 어느 때보다 쉬워졌습니다.</p>
<h4 id="시계열-분석의-예시">시계열 분석의 예시</h4>
<p>날씨 데이터
강수량 측정
온도 기록
심박수 모니터링(EKG)
뇌 활동 모니터링(EEG)
분기별 매출
주식 가격
자동 주식 거래
산업 예측
이자율
시계열 분석 유형
시계열 분석에는 다양한 데이터 범주가 포함되므로, 분석가들은 때때로 복잡한 모델을 만들어야 합니다. 그러나 모든 변동성을 다루거나 특정 모델을 모든 샘플에 일반화할 수는 없습니다. 너무 복잡하거나 과적합된 모델은 무작위 오류와 진정한 관계를 구분하지 못하게 되어, 분석이 왜곡되고 예측이 잘못될 수 있습니다.</p>
<h2 id="시계열-분석-모델">시계열 분석 모델</h2>
<p><strong>분류(Classification):</strong> 데이터를 식별하고 범주를 할당합니다.
<strong>곡선 맞춤(Curve Fitting):</strong> 데이터를 곡선으로 나타내 변수 간 관계를 연구합니다.
<strong>기술 분석(Descriptive Analysis):</strong> 추세, 주기, 계절적 변동과 같은 시계열 데이터의 패턴을 식별합니다.
<strong>설명 분석(Explanative Analysis):</strong> 데이터와 그 관계, 원인과 결과를 이해하려고 시도합니다.
<strong>탐색 분석(Exploratory Analysis):</strong> 시계열 데이터의 주요 특징을 시각적 형식으로 강조합니다.
<strong>예측(Forecasting):</strong> 과거 추세에 기반하여 미래 데이터를 예측합니다.
<strong>개입 분석(Intervention Analysis):</strong> 사건이 데이터에 미치는 영향을 연구합니다.
<strong>세분화(Segmentation):</strong> 데이터를 세분화하여 원본 정보의 기본 속성을 보여줍니다.</p>
<h2 id="시계열-데이터의-분류">시계열 데이터의 분류</h2>
<p>시계열 데이터는 두 가지 주요 범주로 분류될 수 있습니다:</p>
<h3 id="재고-시계열-데이터stock-time-series-data">재고 시계열 데이터(Stock Time Series Data)</h3>
<p>: 특정 시점에서 속성을 측정하는 것으로, 정보의 정적 스냅샷을 제공합니다.</p>
<h3 id="흐름-시계열-데이터flow-time-series-data">흐름 시계열 데이터(Flow Time Series Data)</h3>
<p>: 일정 기간 동안 속성의 활동을 측정하는 것으로, 총 결과의 일부를 구성합니다.</p>
<h2 id="시계열-데이터의-변동">시계열 데이터의 변동</h2>
<p>시계열 데이터에서는 변동이 간헐적으로 발생할 수 있습니다.</p>
<h3 id="기능적-분석functional-analysis">기능적 분석(Functional Analysis)</h3>
<p>: 데이터 내 패턴과 관계를 파악하여 주목할 만한 사건을 식별합니다.</p>
<h3 id="추세-분석trend-analysis">추세 분석(Trend Analysis)</h3>
<p>: 일관된 방향으로의 움직임을 결정합니다. 추세에는 <strong>결정론적(deterministic)</strong>과 확률론적(stochastic) 유형이 있으며, 후자는 무작위적이고 설명하기 어렵습니다.</p>
<h3 id="계절적-변동seasonal-variation">계절적 변동(Seasonal Variation)</h3>
<p>: 일정한 간격으로 일어나는 사건을 설명합니다.</p>
<h2 id="시계열-분석-모델-및-기법">시계열 분석 모델 및 기법</h2>
<h3 id="box-jenkins-arima-모델">Box-Jenkins ARIMA 모델</h3>
<p>: 이 단변량 모델은 단일 시간 의존 변수를 이해하고 미래 데이터를 예측하는 데 사용됩니다. ARIMA 모델은 데이터가 <strong>정상성(stationary)</strong>을 가정하며, 이동 평균, 계절적 차분 연산자, 자기회귀 항을 포함하여 계절성을 설명할 수 있습니다.</p>
<h3 id="box-jenkins-다변량-모델multivariate-models">Box-Jenkins 다변량 모델(Multivariate Models)</h3>
<p>: 다중 시간 의존 변수(예: 온도와 습도)를 분석하는 데 사용됩니다.</p>
<p>Holt-Winters 방법: <strong>지수 평활법(Exponential Smoothing)</strong>을 사용하는 기법으로, 계절성이 포함된 데이터를 예측할 때 사용됩니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[시계열 데이터 (Time- Series) Data]]></title>
            <link>https://velog.io/@overhaul_/%EC%8B%9C%EA%B3%84%EC%97%B4-%EB%8D%B0%EC%9D%B4%ED%84%B0-Time-Series-Data</link>
            <guid>https://velog.io/@overhaul_/%EC%8B%9C%EA%B3%84%EC%97%B4-%EB%8D%B0%EC%9D%B4%ED%84%B0-Time-Series-Data</guid>
            <pubDate>Wed, 23 Oct 2024 14:51:13 GMT</pubDate>
            <description><![CDATA[<h1 id="시계열-데이터">시계열 데이터</h1>
<h3 id="시간의-흐름에-따라-관찰된-데이터-기온-데이터-주가-데이터-등">시간의 흐름에 따라 관찰된 데이터 (기온 데이터, 주가 데이터 등)</h3>
<p><img src="https://velog.velcdn.com/images/overhaul_/post/d3acba8e-57fe-4fca-8c2b-a7ec6eb236b9/image.png" alt=""></p>
<h3 id="변동-요인">변동 요인</h3>
<p><strong>-추세 변동(trend):</strong> 장기간에 걸쳐 점진적이고 지속적인 상승, 하락 상태
<strong>-계절 변동(any apparent sharp changes in behavior):</strong> 주기적인 패턴을 가지고 반복적으로 나타나는 변동
*<em>-순환 변동(any apparent sharp changes in behavior): *</em>수년간의 간격을 두고 상승과 하락이 주기적으로 나타나는 변동
*<em>-불규칙 변동(any outlying observations): *</em>명확히 설명될 수 없는 요인에 의해 발생되는 변동(ex.코로나)</p>
<p>시점에 따라 평균과 분산이 일정하지 않음. 분석한 데이터에 대해 신뢰할 수 없음.
-&gt; 시점에 따라 평균과 분산이 일정하도록 전처리 과정 필요</p>
<h2 id="전처리-eda">전처리 EDA</h2>
<h3 id="정상성stationary-시계열-데이터가-시점에-따라-평균이나-분산이-변하지-않는-특징">정상성(Stationary) :시계열 데이터가 시점에 따라 평균이나 분산이 변하지 않는 특징</h3>
<h4 id="평활화smoothing-추세를-부드럽게-만드는-방법---노이즈-제거하여-부드럽게">평활화(Smoothing): 추세를 부드럽게 만드는 방법 -&gt; 노이즈 제거하여 부드럽게</h4>
<p>   -이동평균법: 이전 일정한 구간의 평균
   -지수평활법: 특점 시점에 가중치
---&gt;평활화를 수행을 했을때 분산이 안정되는 느낌은 들지만, 특정 시점에 따라 데이터가 정상성을 띄긴 어려울 것이다.</p>
<h4 id="차분-현-시점의-데이터를-이전-시점의-데이터와-빼는-방법----현시점-이전시점--그래프의-차이만-남음---평균과-분산이-일정">차분: 현 시점의 데이터를 이전 시점의 데이터와 빼는 방법  -&gt; 현시점-이전시점 = 그래프의 차이만 남음 -&gt; 평균과 분산이 일정</h4>
<p>평활화와 차분으로 정상성을 갖춘 시계열 데이터를 만듬</p>
<h2 id="모델-학습">모델 학습</h2>
<p>-AR
   자기자신의 과거 값이 미래를 결정하는 모델
   부분자기상관함수(PACF)를 활용 AR(p)모델 선정
    yt = <del>~</del> 자기 자신의 과거값들의 합 = 미래를 결정
-MR 
   이전 *백색잡음들의 선형결합으로 표현되는 모델
      자기상관함수(ACF)를 활용 MA(q)모델 선정 &#39;
      잡음들의 선형 결함으로 미래를 결정.</p>
<p>   선형 회귀는 종속, 독립.
      여기는 백색잡음과 선형적으로 </p>
<p> *백색 잡음: 시계열 모형의 오차항을 의미하며, 원인은 알려지지 않음/서로 독립이며 동일한 분포를 따름-&gt;회기모델에서 오차항이 존재. 시계열 데이터도 오차항을 가짐. -&gt; 시계열 모델에서의 오차다. 오차들의 결합으로 표현되는 모델 -&gt; MA</p>
<p> 부분자기 상관함수
 자기상관함수</p>
<p>  ACF
  오늘 1일전 2일전 3일전
  오늘과 3일전이 얼마나 관계가 있는지 알아보는걸 상관계수 분석
  =&gt; 1일전과 2일전이 3일전 일에 영향을 끼친다. </p>
<p>  PACF 1일전과 2일전은 배제하고 3일전만 고려
  급격히 감소하는 이전 시점 선정 -&gt; 다른 건 고려시점이 아니다. 
  PACF-&gt; AR(3)모형
  ACF-&gt;MA(3)모형</p>
<p>-ARIMA
  AR 과 MA 가 결합된 모델
  ARIMA(p,d,q)모델
     p는 AR모형의 PACF로 도출
     q는 MA모형의 ACF로 도출
     d는 정상화를 위해 차분을 몇 번 했는지 의미
   d=0이면 ARMA(p, q)모델
     if p==0 : IMA
     if q==0: ART</p>
<h2 id="예측">예측</h2>
<h4 id="회귀-예측">회귀 예측</h4>
<p>AR, MA, ARIMA, 딥러닝 -&gt; 주가 예측, 기온 예측</p>
<h4 id="회귀-모델-평가-지표">회귀 모델 평가 지표</h4>
<p>MSE, MAE, R-Square</p>
<blockquote>
</blockquote>
<h4 id="분류-예측">분류 예측</h4>
<p>딥러닝 -&gt; 소음을 통한 제품 결합 확인, 자연어 처리(대화할 때 쓰는 말)</p>
<h4 id="분류-예측-평가">분류 예측 평가</h4>
<p>혼동행렬, ROC Curve</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[mmsegmentation에서 사용할 API ]]></title>
            <link>https://velog.io/@overhaul_/mmsegmentation%EC%97%90%EC%84%9C-%EC%82%AC%EC%9A%A9%ED%95%A0-API</link>
            <guid>https://velog.io/@overhaul_/mmsegmentation%EC%97%90%EC%84%9C-%EC%82%AC%EC%9A%A9%ED%95%A0-API</guid>
            <pubDate>Tue, 22 Oct 2024 15:19:22 GMT</pubDate>
            <description><![CDATA[<h1 id="mmsegmentation에서-사용할-api">mmsegmentation에서 사용할 API</h1>
<p><img src="https://velog.velcdn.com/images/overhaul_/post/6525647e-cb8e-491e-8e1d-9c30d213b929/image.png" alt=""></p>
<p>gitgub open-mmlab
<a href="https://github.com/open-mmlab/mmsegmentation">https://github.com/open-mmlab/mmsegmentation</a></p>
<h4 id="mmsegmentation은-openmmlab의-이미지-분할-라이브러리로-다양한-분할-모델을-쉽게-사용할-수-있도록-돕는-역할"><strong>mmsegmentation</strong>은 OpenMMLab의 이미지 분할 라이브러리로, 다양한 분할 모델을 쉽게 사용할 수 있도록 돕는 역할</h4>
<p><strong>init_segmentor:</strong> 모델을 초기화하는 데 사용합니다. 설정 파일과 체크포인트 경로를 입력하여 모델을 로드합니다.</p>
<pre><code>from mmseg.apis import init_segmentor

model = init_segmentor(config_file, checkpoint_file, device=&#39;cuda:0&#39;)</code></pre><p><strong>inference_segmentor:</strong> 주어진 이미지에 대해 분할 결과를 추론합니다.</p>
<pre><code>from mmseg.apis import inference_segmentor

result = inference_segmentor(model, img)</code></pre><p><strong>show_result:</strong> 추론 결과를 시각화하는 데 사용할 수 있습니다. 이 함수는 분할된 이미지를 시각적으로 확인할 수 있도록 도와줍니다.</p>
<pre><code>from mmseg.apis import show_result

show_result(img, result, out_file=&#39;output.png&#39;)</code></pre><p><strong>get_segmentation_results</strong>: 모델의 추론 결과에서 각 클래스에 대한 픽셀 수를 계산하고, IoU를 측정하는 데 사용할 수 있습니다. 이 부분은 일반적으로 직접 구현해야 하며, ground truth와 비교하여 IoU를 계산하는 로직을 포함해야 합니다.</p>
<p><strong>mmcv:</strong> 이미지와 비디오 처리에 유용한 다양한 기능을 제공하는 라이브러리로, 파일 입출력과 같은 작업에 활용할 수 있습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Vision former ViT 논문 리뷰]]></title>
            <link>https://velog.io/@overhaul_/Vision-former-ViT-%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0</link>
            <guid>https://velog.io/@overhaul_/Vision-former-ViT-%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0</guid>
            <pubDate>Tue, 22 Oct 2024 03:58:44 GMT</pubDate>
            <description><![CDATA[<p><a href="https://arxiv.org/pdf/2010.11929">https://arxiv.org/pdf/2010.11929</a></p>
<h1 id="이미지의-가치는-16x16단어">이미지의 가치는 16X16단어:</h1>
<h1 id="대규모-이미지-인식을-위한-트랜스포머">대규모 이미지 인식을 위한 트랜스포머</h1>
<p><strong>알렉세이 도소비츠키 , 루카스 바이어, 알렉산더 콜레스니코프, 더크 바이센본, Xiaohua Zhai∗, 토마스 운터티너, 모스타파 데하니, 마티아스 마인드레러,
게오르그 하이골드, 실뱅 겔리, 야콥 우스코레, 닐 홀스비 ,동등한 기술 기여, 동등한 조언
Google 리서치, 브레인 팀 {아도소비츠키, 닐홀스비}@google.com</strong></p>
<h2 id="abstract">ABSTRACT</h2>
<p>트랜스포머 아키텍처는 자연을 위한 사실상의 표준이 되었지만, 언어 처리 작업, 컴퓨터 비전에서 트랜스포머 아키텍처의 적용은 여전히 제한적입니다. 비전 분야에서 어텐션(attention)은 컨볼루션 네트워크와 함께 적용되거나
컨볼루션 네트워크의 특정 구성 요소를 유지하면서 대체하는 데 사용됩니다
전반적인 구조가 마련되어 있습니다. CNN에 대한 이러한 의존도가 필요하지 않다는 것을 보여줍니다
이미지 패치 시퀀스에 직접 적용된 순수 변압기는 다음과 같은 성능을 발휘할 수 있습니다
이미지 분류 작업을 매우 잘 수행합니다. 대량의
데이터를 여러 중간 크기 또는 작은 이미지 인식 벤치마크로 전송합니다
(이미지넷, CIFAR-100, VTAB 등) 비전 트랜스포머(ViT)는 우수합니다
최첨단 컨볼루션 네트워크와 비교했을 때 훈련하는 데 훨씬 적은 계산 리소스가 필요한 결과입니다.1
1 소개
자기 주의 기반 아키텍처, 특히 트랜스포머(Vaswani et al., 2017)는 다음과 같이 되었습니다
자연어 처리(NLP)에서 선택하는 모델. 지배적인 접근 방식은 다음을 사전 교육하는 것입니다
대규모 텍스트 말뭉치를 사용한 다음 더 작은 작업별 데이터 세트를 미세 조정합니다(Devlin et al., 2019). 감사합니다
트랜스포머의 계산 효율성과 확장성을 위해 다음과 같은 모델을 훈련하는 것이 가능해졌습니다
100B 이상의 매개변수를 가진 전례 없는 크기(브라운 외, 2020; 레피킨 외, 2020). 그리고
모델과 데이터 세트가 성장하고 있지만 여전히 성능이 포화될 조짐은 보이지 않습니다.
그러나 컴퓨터 비전에서는 컨볼루션 아키텍처가 여전히 지배적입니다(르쿤 외, 1989;
크리제프스키 외, 2012; 그 외, 2016). NLP 성공에서 영감을 받은 여러 작품이 결합을 시도합니다
자기 주의를 기울이는 CNN과 유사한 아키텍처(왕 외, 2018, 카리온 외, 2020), 일부 대체 기능
컨볼루션 전체 (라마찬드란 외, 2019; 왕 외, 2020a). 후자의 모델은 다음과 같습니다
이론적으로 효율적이지만, 다음과 같은 이유로 인해 최신 하드웨어 가속기에서 아직 효과적으로 확장되지 않았습니다
특수 주의 패턴의 사용. 따라서 대규모 이미지 인식에서 고전적인 ResNetlike 아키텍처는 여전히 최첨단입니다(Mahajan et al., 2018; Xie et al., 2020; 콜레스니코프 등).
2020).
NLP에서 트랜스포머 확장 성공에서 영감을 받아 표준을 적용하는 실험을 진행합니다
가능한 한 최소한의 수정으로 이미지로 직접 변환합니다. 이를 위해 이미지를 분할합니다
는 패치로 만들고 이러한 패치의 선형 임베딩 시퀀스를 트랜스포머에 대한 입력으로 제공합니다.</p>
<p><img src="https://velog.velcdn.com/images/overhaul_/post/d4930984-1ae6-4e61-8f76-aeebdc339ba4/image.png" alt=""></p>
<h3 id="모델-개요">모델 개요.</h3>
<p>이미지를 고정된 크기의 패치로 분할하고 각 패치를 선형으로 삽입합니다.
위치 임베딩을 추가하고 결과 벡터 시퀀스를 표준 변환기에 공급합니다.
인코더. 분류를 수행하기 위해 추가 학습 가능 항목을 추가하는 표준 접근 방식을 사용합니다.
&quot;분류 토큰&quot;을 시퀀스에 추가합니다. Transformer 인코더의 그림은 다음에서 영감을 받았습니다.
Vaswaniet al. (2017).</p>
<h2 id="3-method">3. METHOD</h2>
<p>모델 설계에서는 원래 Transformer(Vaswani et al., 2017)를 최대한 가깝게 따릅니다.
이렇게 의도적으로 간단한 설정의 장점은 확장 가능한 NLP Transformer 아키텍처와
효율적인 구현 – 거의 즉시 사용할 수 있습니다.</p>
<h4 id="31-비전-트랜스포머vit">3.1 비전 트랜스포머(VIT)</h4>
<p>모델의 개요는 그림 1에 나와 있습니다. 표준 Transformer는 1D 입력을 받습니다.
토큰 삽입 순서. 2D 이미지를 처리하기 위해 이미지 x ∈ R의 모양을 변경합니다.
H×W×C로
평평한 2D 패치의 시퀀스 xp ∈ R
N×(피
2
·기음)
, 여기서 (H, W)는 원본의 해상도입니다.
C는 채널 수, (P, P)는 각 이미지 패치의 해상도, N = HW/P2
는 패치의 결과 수이며, 이는 또한 유효 입력 시퀀스 길이 역할을 합니다.
변신 로봇. Transformer는 모든 레이어를 통해 일정한 잠재 벡터 크기 D를 사용하므로
패치를 평평하게 하고 기차를 사용하여 D 차원에 매핑합니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[데이터분석라이브러리함수모음]]></title>
            <link>https://velog.io/@overhaul_/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B6%84%EC%84%9D-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC-%ED%95%A8%EC%88%98%EB%AA%A8%EC%9D%8C</link>
            <guid>https://velog.io/@overhaul_/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B6%84%EC%84%9D-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC-%ED%95%A8%EC%88%98%EB%AA%A8%EC%9D%8C</guid>
            <pubDate>Thu, 20 Jun 2024 13:34:22 GMT</pubDate>
            <description><![CDATA[<h2 id="1scikit-learn를-별칭aliassk로-임포트하는-코드를-작성하고-실행하세요">1.scikit-learn를 별칭(alias)sk로 임포트하는 코드를 작성하고 실행하세요</h2>
<pre><code>import sklearn as sk</code></pre><h2 id="2pandas는-데이터-분석을-위해-널리-사용되는-파이썬-라이브러리입니다">2.Pandas는 데이터 분석을 위해 널리 사용되는 파이썬 라이브러리입니다.</h2>
<p>Pandas를 사용할 수 있도록 별칭 (alias)을 pd로 해서 불러오세요 </p>
<pre><code>import pandas as pd</code></pre><h2 id="3-pandas함수-2개-데이터-파일을-읽고-합쳐서-1개의-데이터프레임-변수명-df에-할당하는-코드를-작성하세요">3. Pandas함수 2개 데이터 파일을 읽고 합쳐서 1개의 데이터프레임 변수명 df에 할당하는 코드를 작성하세요</h2>
<h3 id="a0007itjson-파일을-읽어-데이터-프레임-변수명-df_a에-할당하세요">A0007IT.json 파일을 읽어 데이터 프레임 변수명 df_a에 할당하세요</h3>
<h3 id="signalcsv-파일을-읽어-데이터-프레임-변수명-df_b에-할당하세요">signal.csv 파일을 읽어 데이터 프레임 변수명 df_b에 할당하세요</h3>
<h3 id="df_a와-df_b-데이터프레임을-판다스의-merge-함수를-활용하여-합쳐-데이터프레임-변수명-df에-저장하세요">df_a와 df_b 데이터프레임을 판다스의 merge 함수를 활용하여 합쳐 데이터프레임 변수명 df에 저장하세요</h3>
<h4 id="합칠-때-사용하는-키onrid">합칠 때 사용하는 키(on):&#39;RID&#39;</h4>
<h4 id="합치는-방법-howinner">합치는 방법 (how):&#39;inner&#39;</h4>
<pre><code>df_a = pd.read_json(&#39;A0007IT.json&#39;)
df_b = pd.read_csv(&#39;signal.csv&#39;)
df = pd.merge(df_a, df_b, on = &#39;RID&#39;, how=&#39;inner&#39;)</code></pre><h2 id="4address1에-대해-countplot그래프로-만드는코드와-답안을-작성하세요">4.Address1에 대해 countplot그래프로 만드는코드와 답안을 작성하세요</h2>
<h3 id="seaborn활용">Seaborn활용</h3>
<h3 id="address1에-대해서-분포를-보여주는-countplot그래프">Address1에 대해서 분포를 보여주는 countplot그래프</h3>
<h3 id="지역명이-없는--에-해당하는-row행-삭제">지역명이 없는 &#39;-&#39;에 해당하는 row(행) 삭제</h3>
<pre><code>import seaborn as sns

sns.countplot(data = df , x = &#39;Address1&#39;)
df = df[df[&#39;Address1&#39;] !=&#39;-&#39;]
plt.show()</code></pre><h2 id="5-실주행시간과-평균시속의-분포의-길이를-다음과-같이-확인하려고합니다">5. 실주행시간과 평균시속의 분포의 길이를 다음과 같이 확인하려고합니다</h2>
<p>Time_Driving(실주행시간)과 Speed_Per_Hour(평균시속)을 jointplot그래프로 만드세요 </p>
<h3 id="seaborn-활용">Seaborn 활용</h3>
<h3 id="x축에는-time_driving표시-y축에는-speed_per_hour-표시하세요">x축에는 Time_Driving표시, Y축에는 Speed_per_Hour 표시하세요</h3>
<pre><code>sns.jointplot(data= df, x = &#39;Time_Driving&#39;, y= &#39;Speed_Per_Hour&#39;)
plt.show()
</code></pre><h2 id="6-위의-jointplot-그래프에서-시속-300이-넘는-이상치를-발견할-수-있었습니다-가이드에-따라서-전처리를-수행하고-저장하세요">6. 위의 jointplot 그래프에서 시속 300이 넘는 이상치를 발견할 수 있었습니다. 가이드에 따라서 전처리를 수행하고 저장하세요</h2>
<h3 id="대상-데이터프레임df">대상 데이터프레임:df</h3>
<h3 id="jointplot그래프를-보고-시속-300이상이-되는-이상치를-찾아-해당-행row을-삭제하세요">jointplot그래프를 보고 시속 300이상이 되는 이상치를 찾아 해당 행(Row)을 삭제하세요</h3>
<h3 id="불필요한-rid컬럼-삭제">불필요한 &#39;RID&#39;컬럼 삭제</h3>
<h3 id="전저리-반영-후-새로운-데이터프레임-변수명-df_temp에-저장">전저리 반영 후 새로운 데이터프레임 변수명 df_temp에 저장</h3>
<pre><code>df=df[df[&#39;Speed_Per_Hour&#39;]&lt;300]
df_temp = df = df.drop(columns = &#39;RID&#39;)</code></pre><h2 id="7-모델링-성능을-제대로-얻기-위해서-결측치-처리는-필수입니다">7. 모델링 성능을 제대로 얻기 위해서 결측치 처리는 필수입니다.</h2>
<h3 id="대상-데이터프레임--df_temp">대상 데이터프레임 : df_temp</h3>
<h3 id="결측치를-확인하는-코드-작성">결측치를 확인하는 코드 작성</h3>
<h3 id="결측치가-있는-행raw-삭제">결측치가 있는 행(raw) 삭제</h3>
<h3 id="전처리-반영된-결과를-새로운-데이터프레임-변수명-df_na에-저장">전처리 반영된 결과를 새로운 데이터프레임 변수명 df_na에 저장</h3>
<pre><code>df_temp.isna().sum()
df_na = df_temp.dropna(axis= 0)</code></pre><h2 id="8-모델링-성능을-제대로-얻기-위해서-불필요한-변수는-삭제해야합니다">8. 모델링 성능을 제대로 얻기 위해서 불필요한 변수는 삭제해야합니다.</h2>
<h3 id="대상-데이터프레임-df_na">대상 데이터프레임: df_na</h3>
<h3 id="time_departure-time_arrival-2개-컬럼을-삭제하세요">&#39;Time_Departure&#39;, &#39;Time_Arrival&#39; 2개 컬럼을 삭제하세요</h3>
<h3 id="전처리-반영된-결과를-새로운-데이터프레임-변수명-df_del에-저장하세요">전처리 반영된 결과를 새로운 데이터프레임 변수명 df_del에 저장하세요</h3>
<pre><code>df_del = df_na.drop([&#39;Time_Departure&#39;,&#39;Time_Arrival&#39;], axis = 1)</code></pre><h2 id="9-원-핫-인코딩one-hoe-encoding은-범주형-변수를-1과-0의-이진형-백터로-변환하기-위해-사용하는-방법입니다">9. 원-핫 인코딩(One-hoe encoding)은 범주형 변수를 1과 0의 이진형 백터로 변환하기 위해 사용하는 방법입니다.</h2>
<p>원-핫 인코딩으로 아래 조건에 해당하는 컬럼 데이터를 변환하세요</p>
<h3 id="대상-데이터프레임-df_del">대상 데이터프레임: df_del</h3>
<h3 id="원-핫-인코딩-대상-object타입의-전체컬럼">원-핫 인코딩 대상: object타입의 전체컬럼</h3>
<h3 id="활용함수-pandas의-get_dummies">활용함수: Pandas의 get_dummies</h3>
<h3 id="해당-전처리가-반영된-결과를-데이터프레임-변수-df_preset에-저장">해당 전처리가 반영된 결과를 데이터프레임 변수 df_preset에 저장</h3>
<pre><code>cols = df_del.select_dtypes(&#39;object&#39;).columns
df_preset = pd.get_dummies(data = df_del, columns = cols)</code></pre><h2 id="10훈련과-검증-각가에-사용할-데이터셋-분리">10.훈련과 검증 각가에 사용할 데이터셋 분리</h2>
<p>Time_Driving(실주행시간)컬럼을 label값 y로, 나머지 컬럼을 feature값 x로 할당한 후 훈련데이터셋과 검증데이터셋으로 분리</p>
<h3 id="대상-데이터프레임-df_preset">대상 데이터프레임: df_preset</h3>
<h3 id="훈련과-검증-데이터셋-분리">훈련과 검증 데이터셋 분리</h3>
<h4 id="훈련-데이터셋-label--y_train-훈련-데이터셋-feature-x_train">훈련 데이터셋 label : y_train, 훈련 데이터셋 Feature: x_train</h4>
<h4 id="검증-데이터셋-label-y_valid-검증-데이터셋-feature-x_valid">검증 데이터셋 label: y_valid, 검증 데이터셋 Feature: x_valid</h4>
<h4 id="훈련-데이터셋과-검증데이터셋-비율은-8020">훈련 데이터셋과 검증데이터셋 비율은 80:20</h4>
<h4 id="random_state-42">random_state: 42</h4>
<h4 id="scikit-learn-의-train_test_split-함수를-활용">Scikit-learn 의 train_test_split 함수를 활용</h4>
<h3 id="robustscaler-스케일링-수행">RobustScaler 스케일링 수행</h3>
<h4 id="sklearnpreprocessing의-robustscaler함수-사용">sklearn.preprocessing의 RobustScaler함수 사용</h4>
<h4 id="훈련데이터셋의-feature는-robustscaler의-fit_transform-함수를-활용하여-x_train변수로-할당">훈련데이터셋의 Feature는 RobustScaler의 fit_transform 함수를 활용하여 x_train변수로 할당</h4>
<h4 id="검증데이터셋의-feature는-robustscaler의-transform-함수를-활용하여-x_test변수로-할당">검증데이터셋의 Feature는 RobustScaler의 transform 함수를 활용하여 x_test변수로 할당</h4>
<pre><code>from sklearn.model_selection import train_test_split

x = df_preset.drop(&#39;Time_Driving&#39;, axis = 1)
y = df_preset[&#39;Time_Driving&#39;]

x_train, x_test, y_train, y_test = train_test_split( x, y , test_size = 0.2, random_state =42)
# 스케일링 수행
scaler = RobustScaler()
X_train = scaler.fit_transform(X_train)
X_valid = scaler.transform(X_valid)</code></pre><h2 id="11-time_driving실주행시간을-예측하는-머신러닝-모델을-만들려고-합니다-의사결정나무-decision-tree와-랜덤포레스트randomforest는-여러가지-규칙을-순차적으로-적용하면서-독립변수-공간을-분할하는-모형으로-분류classification와-회귀-분석-regression에-모두-사용될-수-있습니다-아래-가이드에-따라-의사결정나무decision-tree와-랜덤포레스트randomforest모델을-만들고-학습을-진행하세요">11. Time_Driving(실주행시간)을 예측하는 머신러닝 모델을 만들려고 합니다. 의사결정나무 (decision tree)와 랜덤포레스트(RandomForest)는 여러가지 규칙을 순차적으로 적용하면서 독립변수 공간을 분할하는 모형으로 분류(classification)와 회귀 분석 (regression)에 모두 사용될 수 있습니다. 아래 가이드에 따라 의사결정나무(decision tree)와 랜덤포레스트(RandomForest)모델을 만들고 학습을 진행하세요</h2>
<h3 id="의사결정나무decision-tree">의사결정나무(decision tree)</h3>
<h4 id="트리의-최대깊이-5">트리의 최대깊이: 5</h4>
<h4 id="노드를-분할하기-위한-최소한의-샘플-데이터수min_samples_split3">노드를 분할하기 위한 최소한의 샘플 데이터수(min_samples_split):3</h4>
<h4 id="random_state-120">random_state: 120</h4>
<h4 id="의사결정나무desicion-tree모델을-dt변수에-저장">의사결정나무(desicion tree)모델을 dt변수에 저장</h4>
<h3 id="랜덤포레스트randomforest">랜덤포레스트(RandomForest)</h3>
<h4 id="트리의-최대깊이5">트리의 최대깊이:5</h4>
<h4 id="노드를-분할하기-위한-최소한의-샘플-데이터수min_samples_split-3">노드를 분할하기 위한 최소한의 샘플 데이터수(min_samples_split): 3</h4>
<h4 id="random_state-120-1">random_state: 120</h4>
<h4 id="랜덤포레스트randomforest모델을-rf변수에-저장">랜덤포레스트(RandomForest)모델을 rf변수에 저장</h4>
<h3 id="위의2개의-모델에-대해-fit을-활용해-모델을-학습해주세요-학습시-훈련데이터-셋을-활용">위의2개의 모델에 대해 fit을 활용해 모델을 학습해주세요. 학습시 훈련데이터 셋을 활용</h3>
<pre><code>from sklearn.tree import DecisionTreeRegressor
from sklearn.ensemble import RandomForestRegressor

dt = DecisionTreeRegressor(max_depth=5, min_samples_split=3, random_state = 120)
dt.fit(x_train, y_train)


rt = RandomForestRegressor(max_depth = 5, min_samples_split = 3, random_state=120)
rt.fit(x_train, y_train)

# 예측 수행
y_pred_dt = dt.predict(x_test)
y_pred_rt = rt.predict(x_test)

# 결과 출력
print(&quot;Decision Tree Predictions:&quot;, y_pred_dt)
print(&quot;Random Forest Predictions:&quot;, y_pred_rt)
</code></pre><blockquote>
<h4 id="두-모델의-평균-제곱-오차mse-값을-비교한-결과">두 모델의 평균 제곱 오차(MSE) 값을 비교한 결과:</h4>
</blockquote>
<p>의사결정나무(Decision Tree)의 MSE: 573
랜덤포레스트(Random Forest)의 MSE: 548
MSE 값은 낮을수록 모델의 예측 성능이 좋음을 나타냅니다. 따라서, 랜덤포레스트(Random Forest) 모델이 더 낮은 MSE 값을 가지므로 의사결정나무(Decision Tree) 모델보다 더 좋은 성능을 보이는 것으로 판단할 수 있습니다.</p>
<p>결론적으로, 주어진 결과에서 랜덤포레스트(Random Forest) 모델이 더 좋은 성능을 보입니다.</p>
<blockquote>
</blockquote>
<h2 id="12-위-의사결정나무와-랜덤포레스트-모델의-성능평가-아래-가이드에-따라-예측결과의-maemean-absolute-error를-구하고-평가">12. 위 의사결정나무와 랜덤포레스트 모델의 성능평가. 아래 가이드에 따라 예측결과의 mae(Mean Absolute Error)를 구하고 평가</h2>
<h3 id="성능-평가는-검증-데이터셋을-활용">성능 평가는 검증 데이터셋을 활용</h3>
<h3 id="11번-문제에서-만든-의사결정나무-decision-tree모델로-y값을-예측predict하여-y_pred_dt에-저장">11번 문제에서 만든 의사결정나무 (decision tree)모델로 y값을 예측(predict)하여 y_pred_dt에 저장</h3>
<h3 id="검증-정답y_vaild과-예측값y_pred_dt의-maemean-absolute-error를-구하고-dt_mae변수에-저장">검증 정답(y_vaild)과 예측값(y_pred_dt)의 mae(Mean Absolute Error)를 구하고 dt_mae변수에 저장</h3>
<h3 id="11번-문제에서-만든-랜덤포레스트-모델로-y값을-예측-predict하여-y_pred_rd에-저장">11번 문제에서 만든 랜덤포레스트 모델로 y값을 예측 (predict)하여 y_pred_rd에 저장</h3>
<h3 id="검증-정답y_valid과-예측값y_pred_rf의-maemean-absolute-error를-구하고-rf_mae-변수에-저장">검증 정답(y_valid)과 예측값(y_pred_rf)의 mae(Mean Absolute Error)를 구하고 rf_mae 변수에 저장</h3>
<pre><code>from sklearn.metrics import mean_absolute_error

dt_mae = mean_absolute_error(y_test, y_pred_dt)
rf_mae = mean_absolute_error(y_test, y_pred_rf)

print(&quot;Decision Tree - Mean Absolute Error:&quot;, dt_mae)
print(&quot;Random Forest - Mean Absolute Error:&quot;, rt_mae)</code></pre><h2 id="13time_driving실주행시간을-예측하는-딥러닝모델">13.Time_Driving(실주행시간)을 예측하는 딥러닝모델</h2>
<h3 id="tensonflow-framework를-사용하여-딥러닝-모델을-만드세요">Tensonflow framework를 사용하여 딥러닝 모델을 만드세요</h3>
<h3 id="히든레이어hidden-layer-2개-이상으로-모델을-구성하세요">히든레이어(hidden layer) 2개 이상으로 모델을 구성하세요</h3>
<h3 id="손실함수는-msemean-squared-error를-사용하세요">손실함수는 MSE(Mean Squared Error)를 사용하세요</h3>
<h3 id="하이퍼파라미터-epochs30-batch_size16으로-설정">하이퍼파라미터 epochs:30, batch_size:16으로 설정</h3>
<h3 id="각-에포크마다-loss-와-metrics-평가하기-위한-데이터로-x_valid-y_valid-사용">각 에포크마다 loss 와 metrics 평가하기 위한 데이터로 x_valid, y_valid 사용</h3>
<h3 id="학습-정보는-history변수에-저장">학습 정보는 history변수에 저장</h3>
<pre><code>from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.optimizers import Adam
from tensorflow.keras.losses import MeanSquareError

model = Sequential([
    Dense(64, activation=&#39;relu&#39;, input_shape = (x_train.shape[1],)),
    Dense(32, acitivatio=&#39;relu&#39;),
    Dense(16, activation=&#39;relu&#39;),
    Dense(1)
    ])

model.complie(optimizer=Adam(), loss= MeanSquaredError(), metrics=[&#39;mae&#39;])

history = model.fit(
    x_train, y_train,
    epochs = 30, 
    batch_size=16,
    validation_data=(x_valid, y_valid)
)</code></pre><h2 id="14-위-딥러닝-모델의-성능을-평가">14. 위 딥러닝 모델의 성능을 평가</h2>
<h2 id="matplotlib-라이브러리-활용해서-학습-mse와-검증-mse를-그래프로-표시하ㅔ요">Matplotlib 라이브러리 활용해서 학습 mse와 검증 mse를 그래프로 표시하ㅔ요</h2>
<h3 id="1개의-그래프에-학습-mse과-검증-mse-2가지를-모두-표시하세요">1개의 그래프에 학습 mse과 검증 mse 2가지를 모두 표시하세요</h3>
<h3 id="위-2가지-각각이-범례를-mse-val_mse로-표시하세요">위 2가지 각각이 범례를 &#39;mse&#39;, &#39;val_mse&#39;로 표시하세요</h3>
<h3 id="그래프의-타이틀은-model-mse로-표시">그래프의 타이틀은 &#39;Model MSE&#39;로 표시</h3>
<h3 id="x축에는-epochs라고-표시하고-y축에는-mse라고-표시">x축에는 &#39;Epochs&#39;라고 표시하고 y축에는 &#39;MSE&#39;라고 표시</h3>
<pre><code>import matplotlib.pyplot as plt

mse = history.history[&#39;loss&#39;]
val_mse = history.history[&#39;val_loss&#39;]

epochs = range(1, len(mse)+1)

plt.figure(figsize=(10,6))
plt.plot(epochs,mse,&#39;ro-&#39;, label=&#39;val_mse&#39;)
plt.title(&#39;Model MSE&#39;)
plt.xlabel(&#39;Epochs&#39;)
plt.ylabel(&#39;MSE&#39;)
plt.legend()
plt.grid(True)
plt.show()</code></pre>]]></description>
        </item>
    </channel>
</rss>