반응형

파이썬 딥러닝 / Google Colab (코랩) 딥러닝 개발 환경설정 및 사용법

 

파이썬 딥러닝을 하려면 GPU를 사용해야 하는데, Google Colab에서 제공하는 개발 환경에서 딥러닝 코드를 테스트할 수 있습니다. 물론 Google Colab은 무료로 사용 가능합니다. 

 

이번에는 Google Colab 개발 환경 설정과 사용법을 알아보겠습니다. 

 

우선 구글 드라이브에서 딥러닝 테스트를 위한 폴더 하나를 생성합니다. 

drive.google.com/drive

 

Google 드라이브 - 모든 파일을 한 곳에서

하나의 계정으로 모든 Google 서비스를 Google 드라이브로 이동하려면 로그인하세요.

accounts.google.com

 

그리고 새로 만들기를 눌러 Colab을 추가해보겠습니다. 

 

 

그리고 Colaboratory를 선택하여 설치합니다.

 

이제 만들어놓은 폴더로 이동합니다. 

여기에서 마우스 오른쪽 버튼을 누르면 아래와 같이 메뉴가 뜨는데, Google Colaboratory를 선택합니다.

 

 

그러면 파이썬을 테스트할 수 있는 환경이 만들어집니다. 

딥러닝을 할 경우에는 GPU를 사용해야 하기 때문에, 

런타임 > 런타임 유형 변경에서 하드웨어 가속기를 GPU로 설정합니다. 

이제 간단한 예제를 살펴보겠습니다. 

반응형
반응형

파이썬 암호화폐  / pybithumb 모듈로 빗썸 비트코인 정보 가져오기

 

빗썸에 가입하지 않고, 빗썸에서 제공하는 API를 통해 가상화폐의 현재가와 거래량 등의 정보를 가져올 수 있습니다. 

이 API를 사용하는 방법에 대해서 살펴보겠습니다. 

 

먼저 pybithumb 모듈을 설치합니다. 

pip install pybithumb 

 

pybithumb를 import하고, 가상화폐 티커 목록과 총 갯수 정보를 가져오겠습니다. 

간단하게 pybithumb 모듈의 get_tickers() 함수로 티커 목록을 가져옵니다. 

tickers = pybithumb.get_tickers()
print(tickers)
print("total : " , len(tickers))

 

그리고 get_current_price() 함수로 원하는 티커의 현재가를 가져올 수 있습니다. 

BTC(비트코인)이 가장 유명하니, 해당 현재가를 가져오도록 하겠습니다.

price = pybithumb.get_current_price("BTC")
print("BTC price : ", price)

get_market_detail() 함수는 24시간 동안의 저가/고가/거래금액/거래량 정보를 가져옵니다.

detail = pybithumb.get_market_detail("BTC")
print(detail)

get_orderbook() 함수로는 원하는 티커의 호가 정보를 가져옵니다. 

timestamp, payment_currency, order_currency, bids, asks 정보를 표시하는데, 

bids는 매수 호가이며, asks는 매도 호가 정보입니다.

orderbook = pybithumb.get_orderbook("BTC")
print(orderbook)

 

전체 코드

import pybithumb

tickers = pybithumb.get_tickers()
print(tickers)
print("total : " , len(tickers))

price = pybithumb.get_current_price("BTC")
print("BTC price : ", price)

detail = pybithumb.get_market_detail("BTC")
print(detail)

orderbook = pybithumb.get_orderbook("BTC")
print(orderbook)
반응형
반응형

파이썬 머신러닝 / k-최근접 이웃 알고리즘(KNN) 알아보기

 

k-최근접 이웃 알고리즘은 가장 간단한 지도학습 머신러닝 알고리즘으로 가장 가까운 훈련 데이터 포인트 하나를 최근접 이웃으로 찾아 예측합니다. 가장 가까운 이웃을 k개를 선택할 수 있고, 둘 이상의 이웃을 선택하였을 경우 레이블을 정하기 위해 더 많은 클래스를 레이블의 값으로 정합니다. 

 

간단하게 파이썬으로 k-최근접 이웃 알고리즘의 성능을 평가해보겠습니다. 

 

 

먼저 필요한 라이브러리를 가져옵니다. 

from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_breast_cancer
import matplotlib.pyplot as plt

 

분석을 위한 scikit-learn 라이브러리의 유방암에 대한 데이터셋을 가져오겠습니다. 

그리고 데이터는 학습 세트와 테스트 세트로 나누었습니다. 

cancer = load_breast_cancer()
x_train, x_test, y_train, y_test = train_test_split(cancer.data, cancer.target, test_size=0.3, stratify=cancer.target, random_state=100)

 

k-최근접 이웃의 수에 따라 train 세트와 test세트의 정확도를 살펴보기 위해 아래와 같이 변수를 생성하였습니다.

training_accuracy = []
test_accuracy = []
neighbors_settings = range(1, 101)

 

최근접 이웃의 수를 1부터 101까지 설정하여 학습 데이터를 가지고, 테스트 데이터의 성능을 평가해보겠습니다. 

for n_neighbors in neighbors_settings:
    clf = KNeighborsClassifier(n_neighbors=n_neighbors)
    clf.fit(x_train, y_train)
    training_accuracy.append(clf.score(x_train, y_train))
    test_accuracy.append(clf.score(x_test, y_test))

 

그리고 이것을 그래프로 그려보겠습니다. 

plt.plot(neighbors_settings, training_accuracy, label='train_accuracy')
plt.plot(neighbors_settings, test_accuracy, label='test_accuracy')
plt.ylabel('accuracy')
plt.xlabel('n_neighbors')
plt.legend()
plt.show()

 

이것을 실행해보면 아래 그래프가 출력됩니다. 

그래프로 봐서는 n_neighbors가 10정도일 때, train_accuracy와 test_accuracy가 어느 정도 높게 나오는 것을 볼 수 있습니다. 

 

 

 

전체 코드

from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_breast_cancer
import matplotlib.pyplot as plt

cancer = load_breast_cancer()
x_train, x_test, y_train, y_test = train_test_split(cancer.data, cancer.target, test_size=0.3, stratify=cancer.target, random_state=100)

training_accuracy = []
test_accuracy = []
neighbors_settings = range(1, 101)


for n_neighbors in neighbors_settings:
    clf = KNeighborsClassifier(n_neighbors=n_neighbors)
    clf.fit(x_train, y_train)
    training_accuracy.append(clf.score(x_train, y_train))
    test_accuracy.append(clf.score(x_test, y_test))

plt.plot(neighbors_settings, training_accuracy, label='train_accuracy')
plt.plot(neighbors_settings, test_accuracy, label='test_accuracy')
plt.ylabel('accuracy')
plt.xlabel('n_neighbors')
plt.legend()
plt.show()
반응형
반응형

파이썬 머신러닝 - Kernel PCA를 이용한 비선형 특성의 수 줄이기

 

PCA는 특성 행렬의 차원을 축소하고, 표준 PCA는 샘플을 선형적으로 투영하여 특성을 축소합니다. 데이터가 선형적으로 구분되지 않으면 선형 변환이 잘 되지 않습니다. 하여 커널 함수를 이용하여 선형적으로 구분되지 않은 데이터를 선형적으로 구분되는 고차원 공간에서 주성분으로 투영된 결과를 반환하도록 합니다. 

 

Kernel PCA에 사용할 수 있는 커널은 rbf(가우시안 방사 기저 함수 커널), poly(다항식 커널), sigmoid(시그모이드 커널), linear(선형 투영 커널) 등이 있습니다. linear를 이용하면 표준 PCA와 동일한 효과를 나타냅니다. 

 

 

rbf 커널을 이용하는 코드를 구현해보겠습니다.

먼저 scikit-learn 의 함수를 이용하여 swiss roll data를 만들어 보겠습니다.

이는 선형적으로 구분되지 않은 데이터입니다.

features, t = make_swiss_roll(n_samples=1000, noise=0.1, random_state=42)

 

방사 기저 함수 rbf를 사용하여 Kernel PCA를 적용시킵니다. 

kpca = KernelPCA(n_components = 1, kernel="rbf", gamma=15)
features_kpca = kpca.fit_transform(features)

아래와 같이 3개의 특성을 1개의 특성으로 축소한 것을 볼 수 있습니다.

print("원본 : ", features.shape[1])
print("축소 : ", features_kpca.shape[1])

 

전체 코드

from sklearn.datasets import make_swiss_roll
from sklearn.decomposition import KernelPCA


features, t = make_swiss_roll(n_samples=1000, noise=0.1, random_state=42)

kpca = KernelPCA(n_components = 1, kernel="rbf", gamma=15)
features_kpca = kpca.fit_transform(features)

print("원본 : ", features.shape[1])
print("축소 : ", features_kpca.shape[1])

 

반응형

+ Recent posts