검색
검색
공개 노트 검색
회원가입로그인

[이솦] 파이선으로 배우는 AI 기초 01

요약
  • 하루에 하나씩 파이썬 강좌를 들으며 EBS 소프트에서 파이썬 강좌를 시작함.
  • 기아 자동차 주가 예측을 위해 Prophet 라이브러리를 사용해 예측 코드를 실습함.
  • Prophet 모델을 사용하여 NOAA 미국 해양 기상청 데이터를 바탕으로 90일 날씨 예측을 수행함.

하루에 하나씩 파이썬 강좌를 듣고 실습해 보기로 했다.

역시 학원인으로서 나는 EBS에서 하는 EBS 소프트에 들어갔고, 파이썬 강좌 맨 처음 나오는걸 해봤다.

이솦 | EBS 소프트웨어·인공지능 교육

처음엔 맛보기로 주식 예측 하는 코드를 화면에 띄워 줬다.

Screenshot 2024-07-01 6

import fix_yahoo_finance as yf
yf.pdr_override()
start_date = '1990-1-1'
end_date = '2021-12-30'
KIA = data.get_data_yahoo('000270.KS', start_date, end_date)
pd.DataFrame({'ds':KIA_trunc.index,'y':KIA_trunc['Close']})
df =pd.reset_index(inplace=True)
m =Prophet(daily_seasonality=True)
m.fit(df);
m.plot_components(forecast);

이걸 강사 (또는 교수님인지, 하여간 연세가 지긋하셨다) 님이 구글 코랩에서 실행해서 나도 구글 코랩에 실행했다. 역시 한번에 되면 천재겠지.

!pip install prophet
import yfinance as yf 
import pandas as pd # Import pandas library
from prophet import Prophet # Import the Prophet class

start_date = '1990-1-1'
end_date = '2021-12-30'
KIA = yf.download('000270.KS', start=start_date, end=end_date) # Use yf.download directly
KIA_trunc = KIA.copy()  
df = pd.DataFrame({'ds':KIA_trunc.index,'y':KIA_trunc['Close']})
df.reset_index(inplace=True) # Call reset_index on the DataFrame 'df'
m =Prophet(daily_seasonality=True) # Now Prophet is defined
m.fit(df);
# You will also need to create a forecast object before you can plot components
future = m.make_future_dataframe(periods=365)
forecast = m.predict(future)
m.plot_components(forecast);

이중 두가지가 강조되었다.

Prophet 은 가져온 데이터를 기반으로 예측하는 코드

fit은 훈련을 통해서 예즉하는 코드 라고 하셨다.

다운로드

코드 실행 결과 이렇게 나왔다. 야후 파이넌스에서 기아 자동차의 주가를 예측하는 프로그램이다.

위 코드를 구글 AI 스튜디오를 통해서 설명을 시켰다.

  1. 라이브러리 설치 및 가져오기:

    • !pip install prophet: 이 줄은 Python 패키지 관리자인 pip를 사용하여 Prophet 라이브러리를 시스템에 설치합니다.

    • import yfinance as yf: Yahoo Finance에서 금융 데이터를 가져오는 데 사용되는 라이브러리인 yfinance를 가져와서 yf로 별칭을 지정합니다.

    • import pandas as pd: 데이터 조작 및 분석을 위한 강력한 라이브러리인 pandas를 가져와서 pd로 별칭을 지정합니다.

    • from prophet import Prophet: Prophet 라이브러리에서 Prophet 클래스를 가져옵니다.

  2. 금융 데이터 가져오기:

    • start_date = '1990-1-1': 분석 시작일을 설정합니다.

    • end_date = '2021-12-30': 분석 종료일을 설정합니다.

    • KIA = yf.download('000270.KS', start=start_date, end=end_date): 이 줄은 Yahoo Finance(yf.download)에서 기아 자동차 주식('000270.KS')의 과거 주식 시세 데이터를 다운로드합니다. 데이터는 시작일과 종료일 사이의 기간에 대해 수집됩니다.

  3. 데이터 전처리:

    • KIA_trunc = KIA.copy(): 원본 데이터가 수정되지 않도록 데이터프레임 KIA의 복사본을 생성하여 KIA_trunc에 저장합니다.

    • df = pd.DataFrame({'ds': KIA_trunc.index, 'y': KIA_trunc['Close']}): Prophet에서 사용하는 특정 형식으로 새 데이터프레임 df를 생성합니다.

      • ds: 날짜 정보를 나타내는 KIA_trunc 데이터프레임의 인덱스(날짜)를 'ds' 열에 할당합니다.

      • y: KIA_trunc 데이터프레임에서 'Close'(종가)를 나타내는 값을 'y' 열에 할당합니다.

    • df.reset_index(inplace=True): 데이터프레임의 인덱스를 열로 재설정하여 'Date'라는 새 열을 생성합니다. Prophet 모델에 필요합니다.

  4. Prophet 모델 생성 및 맞춤:

    • m = Prophet(daily_seasonality=True): 일일 계절성을 고려하여 새 Prophet 모델 객체를 인스턴스화하고 'm'에 할당합니다.

    • m.fit(df): 전처리된 데이터프레임 df를 Prophet 모델에 맞춥니다. 모델은 데이터의 과거 추세를 학습합니다.

  5. 미래 예측:

    • future = m.make_future_dataframe(periods=365): 과거 데이터의 끝에서 시작하여 365일(1년) 동안의 미래 날짜를 포함하는 데이터프레임 'future'를 생성합니다.

    • forecast = m.predict(future): 맞춰진 모델 'm'을 사용하여 미래 기간에 대한 예측을 수행합니다. 예측 결과는 'forecast' 데이터프레임에 저장됩니다.

  6. 예측 구성 요소 플롯:

    • m.plot_components(forecast): Prophet의 내장 함수를 사용하여 추세, 연간 계절성, 주간 계절성 및 휴일과 같은 예측된 구성 요소의 시각적 표현을 플롯합니다.

이 내용을 수정해서 삼성전자... 주식은 하지 않고 NOAA 미국 해양 기상청 데이터를 가져와서 90일 예측 하는 걸로 수정했다.

!pip install prophet pandas requests
import requests
import pandas as pd
from datetime import datetime, timedelta
from prophet import Prophet
from io import StringIO # import StringIO from io

# NOAA GHCN-Daily 데이터셋 설정
station_id = 'USW00023188'  # 예시: 뉴욕 센트럴 파크 기상 관측소
start_year = 2020
end_year = datetime.now().year

# NOAA 데이터 가져오기
url = f"https://www.ncei.noaa.gov/access/services/data/v1?dataset=daily-summaries&dataTypes=TAVG&stations={station_id}&startDate={start_year}-01-01&endDate={end_year}-12-31&format=csv"
response = requests.get(url)
data = response.text

# 데이터프레임 생성
df = pd.read_csv(StringIO(data)) # Use StringIO from io
df['DATE'] = pd.to_datetime(df['DATE'])
df = df[['DATE', 'TAVG']]
df.columns = ['ds', 'y']

# Prophet 모델 학습
m = Prophet(daily_seasonality=True)
m.fit(df)

# 향후 90일 예측
future = m.make_future_dataframe(periods=90)
forecast = m.predict(future)

# 결과 시각화
m.plot(forecast)

다운로드 (1)

복습

  • m = Prophet(daily_seasonality=True): 일일 계절성을 고려하여 새 Prophet 모델 객체를 인스턴스화하고 'm'에 할당합니다.

  • m.fit(df): 전처리된 데이터프레임 df를 Prophet 모델에 맞춥니다. 모델은 데이터의 과거 추세를 학습합니다.

조회수 : 102
heart
공유하기
카카오로 공유하기
페이스북 공유하기
트위터로 공유하기
url 복사하기
T
페이지 기반 대답
AI Chat