728x90
# 필요한 라이브러리 설치
!pip install pykrx tensorflow matplotlib pandas numpy scikit-learn

# 라이브러리 임포트
from pykrx import stock
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.preprocessing import MinMaxScaler
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense, Dropout
from datetime import datetime, timedelta

# 1. LG전자의 OHLCV와 펀더멘털 지표 가져오기
def get_lg_data():
    ticker = "066570"  # LG전자 종목코드
    today = datetime.today().strftime("%Y%m%d")
    one_year_ago = (datetime.today() - timedelta(days=365)).strftime("%Y%m%d")

    # OHLCV 데이터 가져오기
    ohlcv = stock.get_market_ohlcv_by_date(one_year_ago, today, ticker)

    # 펀더멘털 데이터 가져오기
    fundamentals = stock.get_market_fundamental_by_date(one_year_ago, today, ticker)
    
    # OHLCV와 펀더멘털 데이터를 합치기
    data = pd.concat([ohlcv, fundamentals], axis=1)

    return data

data = get_lg_data()

# 2. 데이터 전처리 (종가와 PER을 입력으로 사용)
def preprocess_data(data):
    df = data[['종가', 'PER']].dropna()  # 종가와 PER만 사용

    # MinMaxScaler로 데이터 정규화
    scaler = MinMaxScaler()
    scaled_data = scaler.fit_transform(df)

    # LSTM 입력에 맞게 시퀀스 데이터 만들기
    X, y = [], []
    seq_length = 10  # 10일 동안의 데이터를 사용하여 다음날을 예측

    for i in range(len(scaled_data) - seq_length):
        X.append(scaled_data[i:i+seq_length])
        y.append(scaled_data[i+seq_length, 0])  # 종가를 예측

    X = np.array(X)
    y = np.array(y)

    return X, y, scaler

X, y, scaler = preprocess_data(data)

# 3. LSTM 모델 생성 및 학습
def create_lstm_model():
    model = Sequential()
    model.add(LSTM(units=50, return_sequences=True, input_shape=(X.shape[1], X.shape[2])))
    model.add(Dropout(0.2))
    model.add(LSTM(units=50))
    model.add(Dropout(0.2))
    model.add(Dense(1))  # 종가 예측을 위한 출력층

    model.compile(optimizer='adam', loss='mean_squared_error')
    return model

model = create_lstm_model()

# 모델 학습
model.fit(X, y, epochs=20, batch_size=32)

# 4. 주가 예측 및 시각화
def predict_future_prices(model, data, scaler, days=7):
    # 최근 10일간의 데이터를 가져와서 예측에 사용
    recent_data = data[-10:]
    scaled_recent_data = scaler.transform(recent_data[['종가', 'PER']].values)

    # 예측할 일주일 동안의 데이터
    predictions = []
    for _ in range(days):
        input_data = scaled_recent_data[-10:].reshape(1, 10, 2)
        predicted_price = model.predict(input_data)
        predictions.append(predicted_price[0, 0])

        # 새로운 예측값을 기존 데이터에 추가
        scaled_recent_data = np.vstack([scaled_recent_data, [[predicted_price[0, 0], scaled_recent_data[-1, 1]]]])

    # 예측된 종가 값을 스케일링 복원
    predicted_prices = scaler.inverse_transform(np.array(predictions).reshape(-1, 1))

    return predicted_prices

predicted_prices = predict_future_prices(model, data, scaler)

# 실제 종가와 예측 종가 시각화
def plot_predictions(data, predicted_prices):
    plt.figure(figsize=(10,6))

    # 실제 데이터 시각화
    plt.plot(data.index, data['종가'], label='Actual Prices', color='blue')

    # 예측 데이터 시각화
    future_dates = pd.date_range(start=data.index[-1] + timedelta(days=1), periods=len(predicted_prices))
    plt.plot(future_dates, predicted_prices, label='Predicted Prices', linestyle='--', color='orange')

    plt.title("LG Electronics Stock Price Prediction")
    plt.xlabel("Date")
    plt.ylabel("Price")
    plt.legend()
    plt.grid()
    plt.show()

plot_predictions(data, predicted_prices)

 

  • LG전자의 데이터 가져오기: get_lg_data() 함수에서 LG전자의 종목 코드를 사용하여 오늘부터 1년 동안의 OHLCV 및 펀더멘털 지표를 가져옵니다.
  • 데이터 전처리: preprocess_data() 함수에서 종가와 PER를 사용하여 LSTM 모델의 입력 데이터로 변환합니다. 데이터를 정규화하고, 시퀀스 데이터를 생성합니다.
  • LSTM 모델 생성: create_lstm_model() 함수에서 LSTM 모델을 구성합니다. 여기서는 두 개의 LSTM 레이어와 드롭아웃 레이어를 추가하여 과적합을 방지합니다.
  • 모델 학습: LSTM 모델을 학습시킵니다.
  • 주가 예측 및 시각화: predict_future_prices() 함수에서 모델을 사용하여 향후 7일 간의 주가를 예측합니다. plot_predictions() 함수에서 실제 주가와 예측된 주가를 시각화합니다.

 

 

 

 

728x90

'프로그래밍 > 파이썬' 카테고리의 다른 글

주식 예측 모델  (2) 2024.10.10
주식거래 시스템을 위한 준비  (0) 2024.10.06
728x90

`pykrx` 모듈을 활용하여 삼성전자의 OHLCV 데이터를 가져오고, LSTM 모델을 통해 주가를 예측하는 코드를 아래와 같이 작성할 수 있습니다. 

1. `pykrx` 모듈로 OHLCV 데이터 및 펀더멘털 지표를 가져오기
2. 종가와 PER를 입력으로 LSTM 모델 구성
3. 모델 학습 및 주가 예측
4. 결과 시각화

먼저, 코드를 구성해봅니다.

```python
# 필요한 라이브러리 설치
!pip install pykrx tensorflow matplotlib pandas numpy scikit-learn

# 라이브러리 임포트
from pykrx import stock
from pykrx import bond
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.preprocessing import MinMaxScaler
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense, Dropout
from datetime import datetime, timedelta

# 1. 삼성전자의 OHLCV와 펀더멘털 지표 가져오기
def get_samsung_data():
    ticker = "005930"  # 삼성전자 종목코드
    today = datetime.today().strftime("%Y%m%d")
    one_year_ago = (datetime.today() - timedelta(days=365)).strftime("%Y%m%d")

    # OHLCV 데이터 가져오기
    ohlcv = stock.get_market_ohlcv_by_date(one_year_ago, today, ticker)

    # 펀더멘털 데이터 가져오기
    fundamentals = stock.get_market_fundamental_by_date(one_year_ago, today, ticker)
    
    # OHLCV와 펀더멘털 데이터를 합치기
    data = pd.concat([ohlcv, fundamentals], axis=1)

    return data

data = get_samsung_data()

# 2. 데이터 전처리 (종가와 PER을 입력으로 사용)
def preprocess_data(data):
    df = data[['종가', 'PER']].dropna()  # 종가와 PER만 사용

    # MinMaxScaler로 데이터 정규화
    scaler = MinMaxScaler()
    scaled_data = scaler.fit_transform(df)

    # LSTM 입력에 맞게 시퀀스 데이터 만들기
    X, y = [], []
    seq_length = 10  # 10일 동안의 데이터를 사용하여 다음날을 예측

    for i in range(len(scaled_data) - seq_length):
        X.append(scaled_data[i:i+seq_length])
        y.append(scaled_data[i+seq_length, 0])  # 종가를 예측

    X = np.array(X)
    y = np.array(y)

    return X, y, scaler

X, y, scaler = preprocess_data(data)

# 3. LSTM 모델 생성 및 학습
def create_lstm_model():
    model = Sequential()
    model.add(LSTM(units=50, return_sequences=True, input_shape=(X.shape[1], X.shape[2])))
    model.add(Dropout(0.2))
    model.add(LSTM(units=50))
    model.add(Dropout(0.2))
    model.add(Dense(1))  # 종가 예측을 위한 출력층

    model.compile(optimizer='adam', loss='mean_squared_error')
    return model

model = create_lstm_model()

# 모델 학습
model.fit(X, y, epochs=20, batch_size=32)

# 4. 주가 예측 및 시각화
def predict_future_prices(model, data, scaler, days=7):
    # 최근 10일간의 데이터를 가져와서 예측에 사용
    recent_data = data[-10:]
    scaled_recent_data = scaler.transform(recent_data[['종가', 'PER']].values)

    # 예측할 일주일 동안의 데이터
    predictions = []
    for _ in range(days):
        input_data = scaled_recent_data[-10:].reshape(1, 10, 2)
        predicted_price = model.predict(input_data)
        predictions.append(predicted_price[0, 0])

        # 새로운 예측값을 기존 데이터에 추가
        scaled_recent_data = np.vstack([scaled_recent_data, [[predicted_price[0, 0], scaled_recent_data[-1, 1]]]])

    # 예측된 종가 값을 스케일링 복원
    predicted_prices = scaler.inverse_transform(np.array(predictions).reshape(-1, 1))

    return predicted_prices

predicted_prices = predict_future_prices(model, data, scaler)

# 실제 종가와 예측 종가 시각화
def plot_predictions(data, predicted_prices):
    plt.figure(figsize=(10,6))

    # 실제 데이터 시각화
    plt.plot(data.index, data['종가'], label='Actual Prices')

    # 예측 데이터 시각화
    future_dates = pd.date_range(start=data.index[-1], periods=len(predicted_prices) + 1, closed='right')
    plt.plot(future_dates, predicted_prices, label='Predicted Prices', linestyle='--')

    plt.title("Samsung Stock Price Prediction")
    plt.xlabel("Date")
    plt.ylabel("Price")
    plt.legend()
    plt.show()

plot_predictions(data, predicted_prices)
```

### 코드 설명
1. `get_samsung_data()` 함수는 삼성전자의 종목 코드를 사용하여 최근 1년간의 OHLCV와 펀더멘털 데이터를 가져옵니다.
2. `preprocess_data()` 함수는 종가와 PER 데이터를 사용해 시퀀스 데이터로 변환하고 정규화를 진행합니다.
3. `create_lstm_model()` 함수는 LSTM 모델을 생성합니다.
4. `predict_future_prices()` 함수는 LSTM 모델을 사용하여 향후 일주일간의 주가를 예측합니다.
5. `plot_predictions()` 함수는 실제 주가와 예측된 주가를 그래프로 시각화합니다.

이 코드를 실행하면 삼성전자의 OHLCV 데이터를 바탕으로 LSTM 모델을 통해 주가 예측 결과를 확인할 수 있습니다.

728x90

'프로그래밍 > 파이썬' 카테고리의 다른 글

LG전자 주가 예측 파이썬 코딩  (0) 2024.11.03
주식거래 시스템을 위한 준비  (0) 2024.10.06
728x90
  1. 파이썬 설치
    https://www.python.org 에서 최신 버전을 다운로드 받음
    https://www.python.org/downloads/release/python-3127/
    가급적 3.9.x 버전을 설치하는 것을 권장함.
    최신버전의 경우 패키지 모듈이 설치 되지 않을 수 있다.
  2. 파이썬 관련 모듈 설치
    1) numpy : 수식 계산, 배열 연산
    pip install numpy
    2) pandas : : 데이터 처리와 분석
    pip install pandas
    3) matplotlib : 데이터 시각화
    pip install matplotlib
    4) pyinstaller : exe 파일 생성
    pip install pyinstaller
    5) pykrx : 주식 관련 데이터
    pip install pykrx
    6) ccxt : 암호화폐 관련 데이터
    pip install ccxt
    7) statsmodels : 통계분석, 회귀분석, 시계열분석
    pip install statsmodels
    8) pyqt5 : 파이썬 GUI 지원
    pip install pyqt5
    9) pyside2 : Qt Designer UI 디자인
    pip install pyside2
    10) tensorflow : 머신러닝과 딥러닝 오픈 소스
    pip install tensorflow
  3. 파이참 커뮤니티 설치
    제트브레인 홈페이지로 이동
    https://www.jetbrains.com/ko-kr/pycharm/download/?section=windows
  4. vscode 설치
    https://code.visualstudio.com/
728x90

'프로그래밍 > 파이썬' 카테고리의 다른 글

LG전자 주가 예측 파이썬 코딩  (0) 2024.11.03
주식 예측 모델  (2) 2024.10.10
728x90

sual Studio Code는 Microsoft에서 개발한 강력한 오픈소스 코드 편집기 Linux, Windows, MacOS등 다양한 플랫폼에서 사용할 수 있다. 코드 디버깅, 작업 실행 및 버전 제어 활성화에 도움이 되는 강력한 도구로, 리팩토링, 구문 강조, 자동 코드 완성, 스니펫 등 다른 코드 편집기와 차별화되는 많은 기능(Extension)이 제공된다. 이 글에서는 Ubuntu 22.04에 Visual Studio Code 설치방법에 대해 알아본다.

Contents:

 

Step 1: 시스템 업데이트 (System Update)

다음 명령어를 실행하여 시스템을 업데이트 한다.

$ sudo apt update && sudo apt upgrade -y

Step 2: 패키지 설치 (Package Install)

시스템이 업데이트 되었으면 Visual Studio Code를 설치하기 전에 설치되어야 하는 패키지들을 설치한다.

$ sudo apt install software-properties-common apt-transport-https wget -y

Step 3: 저장소 가져오기

Visual Studio Code 설치를 위해 Visual Studio Code 리포지토리를 추가한다. 그 전에 설치된 패키지를 인증하기 위해 Microsoft GPG 키를 가져와야 한다.

wget -O- https://packages.microsoft.com/keys/microsoft.asc | sudo gpg --dearmor | sudo tee /usr/share/keyrings/vscode.gpg

echo deb [arch=amd64 signed-by=/usr/share/keyrings/vscode.gpg] https://packages.microsoft.com/repos/vscode stable main | sudo tee /etc/apt/sources.list.d/vscode.list

Step 4: 시스템 업데이트 다시

패키지를 설치하고, 저장소를 추가 했으므로, 시스템 업데이트를 다시 수행한다.

Step 5: Visual Studio Code 설치

Visual Studio Code를 설치한다.

설치가 완료되었으면, 검색창에 code를 입력하여 Visual Studio Code가 install 되어 있는지 확인한다.

아래는 설치된 Visual Studio Code를 실행한 화면이다.

참조

https://linuxize.com/post/how-to-install-visual-studio-code-on-ubuntu-20-04/

https://junorionblog.co.kr/

728x90

'프로그래밍 > 리눅스' 카테고리의 다른 글

우분투 파이썬 설치  (0) 2024.02.25
유분투 크롬 설치  (0) 2024.02.25
우분투에 파이썬 설치  (0) 2024.01.02
svn 재시작  (0) 2023.01.17
톰켓 로그 분할 하는 방법  (0) 2022.08.25
728x90

Python 3.10은 Ubuntu의 기본 저장소에서 사용할 수 없습니다. 따라서 Python 3.10 설치를 위해 다른 저장소를 추가해야 합니다. deadsnake라는 이름의 launchpad 저장소에서는 Python 패키지에 사용할 수 있습니다.

1. 저장소 추가하기

다음 명령을 사용하여 deadsnake 저장소를 추가합니다.

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update

패키지가 잘 업데이트 됐는지 아래 명령어로 확인해 줍니다.

apt list | grep python3.10

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

idle-python3.10/focal,focal 3.10.10-1+focal1 all
libpython3.10-dbg/focal 3.10.10-1+focal1 amd64
libpython3.10-dev/focal 3.10.10-1+focal1 amd64
libpython3.10-minimal/focal 3.10.10-1+focal1 amd64
libpython3.10-stdlib/focal 3.10.10-1+focal1 amd64
libpython3.10-testsuite/focal,focal 3.10.10-1+focal1 all
libpython3.10/focal 3.10.10-1+focal1 amd64
libqgispython3.10.4/focal 3.10.4+dfsg-1ubuntu2 amd64
python3.10-dbg/focal 3.10.10-1+focal1 amd64
python3.10-dev/focal 3.10.10-1+focal1 amd64
python3.10-distutils/focal,focal 3.10.10-1+focal1 all
python3.10-examples/focal,focal 3.10.10-1+focal1 all
python3.10-full/focal 3.10.10-1+focal1 amd64
python3.10-gdbm-dbg/focal 3.10.10-1+focal1 amd64
python3.10-gdbm/focal 3.10.10-1+focal1 amd64
python3.10-lib2to3/focal,focal 3.10.10-1+focal1 all
python3.10-minimal/focal 3.10.10-1+focal1 amd64
python3.10-tk-dbg/focal 3.10.10-1+focal1 amd64
python3.10-tk/focal 3.10.10-1+focal1 amd64
python3.10-venv/focal 3.10.10-1+focal1 amd64
python3.10/focal 3.10.10-1+focal1 amd64

2. Python 3.10 설치하기

sudo apt install python3.10

3. (Option) 다른 Python 버전과 함께 사용하기

만약 Python 3.10 설치 전 다른 Python3.x 버전을 사용하고 있었다면, update-alternatives를 이용해 관리해준다. 본인은 3.8 버전을 기존해 사용하고 있었다.

$ sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1
update-alternatives: using /usr/bin/python3.8 to provide /usr/bin/python3 (python3) in auto mode

$ sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 2
update-alternatives: using /usr/bin/python3.10 to provide /usr/bin/python3 (python3) in auto mode

$sudo update-alternatives --config python3
There are 2 choices for the alternative python3 (providing /usr/bin/python3).

  Selection    Path                 Priority   Status
------------------------------------------------------------
* 0            /usr/bin/python3.10   2         auto mode
  1            /usr/bin/python3.10   2         manual mode
  2            /usr/bin/python3.8    1         manual mode

Press <enter> to keep the current choice[*], or type selection number: 0

$python3 -V
Python 3.10.10

출처: https://sonseungha.tistory.com/678 [Developer's Delight:티스토리]

728x90

'프로그래밍 > 리눅스' 카테고리의 다른 글

우분투 비주얼 스튜디오 코드 설치  (0) 2024.02.25
유분투 크롬 설치  (0) 2024.02.25
우분투에 파이썬 설치  (0) 2024.01.02
svn 재시작  (0) 2023.01.17
톰켓 로그 분할 하는 방법  (0) 2022.08.25
728x90

2022. 6. 12  최초작성

1. 저장소 목록을 새로 가져옵니다.

 

$ sudo apt update

2. wget을 설치합니다.

 

$ sudo apt install wget -y

3. Chrome 패키지를 다운로드합니다.

 

4. Chrome 패키지를 설치합니다.

 

$ sudo dpkg -i ./google-chrome-stable_current_amd64.deb

 

<출처>https://webnautes.tistory.com/1941

728x90

'프로그래밍 > 리눅스' 카테고리의 다른 글

우분투 비주얼 스튜디오 코드 설치  (0) 2024.02.25
우분투 파이썬 설치  (0) 2024.02.25
우분투에 파이썬 설치  (0) 2024.01.02
svn 재시작  (0) 2023.01.17
톰켓 로그 분할 하는 방법  (0) 2022.08.25
728x90

1. 저장소 추가하기

다음 명령을 사용하여 deadsnake 저장소를 추가합니다.

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update

패키지가 잘 업데이트 됐는지 아래 명령어로 확인해 줍니다.

apt list | grep python3.10

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

idle-python3.10/focal,focal 3.10.10-1+focal1 all
libpython3.10-dbg/focal 3.10.10-1+focal1 amd64
libpython3.10-dev/focal 3.10.10-1+focal1 amd64
libpython3.10-minimal/focal 3.10.10-1+focal1 amd64
libpython3.10-stdlib/focal 3.10.10-1+focal1 amd64
libpython3.10-testsuite/focal,focal 3.10.10-1+focal1 all
libpython3.10/focal 3.10.10-1+focal1 amd64
libqgispython3.10.4/focal 3.10.4+dfsg-1ubuntu2 amd64
python3.10-dbg/focal 3.10.10-1+focal1 amd64
python3.10-dev/focal 3.10.10-1+focal1 amd64
python3.10-distutils/focal,focal 3.10.10-1+focal1 all
python3.10-examples/focal,focal 3.10.10-1+focal1 all
python3.10-full/focal 3.10.10-1+focal1 amd64
python3.10-gdbm-dbg/focal 3.10.10-1+focal1 amd64
python3.10-gdbm/focal 3.10.10-1+focal1 amd64
python3.10-lib2to3/focal,focal 3.10.10-1+focal1 all
python3.10-minimal/focal 3.10.10-1+focal1 amd64
python3.10-tk-dbg/focal 3.10.10-1+focal1 amd64
python3.10-tk/focal 3.10.10-1+focal1 amd64
python3.10-venv/focal 3.10.10-1+focal1 amd64
python3.10/focal 3.10.10-1+focal1 amd64

2. Python 3.10 설치하기

sudo apt install python3.10

3. (Option) 다른 Python 버전과 함께 사용하기

만약 Python 3.10 설치 전 다른 Python3.x 버전을 사용하고 있었다면, update-alternatives를 이용해 관리해준다. 본인은 3.8 버전을 기존해 사용하고 있었다.

$ sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1
update-alternatives: using /usr/bin/python3.8 to provide /usr/bin/python3 (python3) in auto mode

$ sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 2
update-alternatives: using /usr/bin/python3.10 to provide /usr/bin/python3 (python3) in auto mode

$sudo update-alternatives --config python3
There are 2 choices for the alternative python3 (providing /usr/bin/python3).

  Selection    Path                 Priority   Status
------------------------------------------------------------
* 0            /usr/bin/python3.10   2         auto mode
  1            /usr/bin/python3.10   2         manual mode
  2            /usr/bin/python3.8    1         manual mode

Press <enter> to keep the current choice[*], or type selection number: 0

$python3 -V
Python 3.10.10

출처: https://sonseungha.tistory.com/678 [Developer's Delight:티스토리]

728x90

'프로그래밍 > 리눅스' 카테고리의 다른 글

우분투 파이썬 설치  (0) 2024.02.25
유분투 크롬 설치  (0) 2024.02.25
svn 재시작  (0) 2023.01.17
톰켓 로그 분할 하는 방법  (0) 2022.08.25
리눅스 파일 있으면 복사 없으면 생성하기  (0) 2022.08.18
728x90
  1. 서비스 확인
    ps -ef | grep svn

  2. 서비스 확인 후 프로세스 종료
    kill -9 svn 프로세스 아이디

  3. 서비스 시작
    svnserve -d -r /home/svn

  4. 서비스 확인
    ps -ef | grep svn
    netstat -ant | grep 3690

728x90

+ Recent posts