본문 바로가기

코드

[머신러닝] CNN 층에 dropout(드롭아웃) 추가하기 (텐서플로) Dropout(드롭아웃)은 랜덤으로 선택한 node만 학습시키고, 일부 node는 버리는 것을 말하는데요, 한 번의 학습 후 다음 학습 때 이 과정을 반복합니다. Dropout을 사용하면 은닉층이 많은 neural network에서 오버피팅 문제를 방지할 수 있다는 장점을 가지는데요, 텐서플로를 이용하여 만든 CNN 층에 드롭아웃 층을 추가하는 코드에 대해서 살펴보겠습니다. model = models.Sequential() model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1))) model.add(layers.MaxPooling2D((2, 2))) model.add(layers.Conv2D(64, (3, 3), act.. 더보기
[머신러닝] CNN(합성곱 신경망) 모델 만들기 (텐서플로 / 코드) 이번 글에서 텐서플로(tensorflow)를 이용하여 합성곱 층(CNN)을 만들어보도록 하겠습니다. 모델에 사용할 데이터는 텐서플로에서 제공하는 MNIST 데이터셋을 사용하도록 하겠습니다. 1. 텐서플로 import & 데이터셋 준비 먼저, tensorflow 라이브러리를 import 해준 뒤, 학습을 위한 데이터를 다운로드합니다. import tensorflow as tf from tensorflow.keras import datasets, layers, models (train_images, train_labels), (test_images, test_labels) = datasets.mnist.load_data() 이미지 데이터는 아래 코드처럼 28 x 28 형태의 shape으로 바꾸고, 픽셀 값을.. 더보기
[자연어처리] Okt : 형태소 단위로 나누는 방법 (파이썬) 자연어처리를 할 때, 데이터 전처리로 문장을 형태소 단위로 나누는 과정을 거쳐야 하는데요, 파이썬에서 형태소 단위로 나누는 라이브러리는 다양합니다. 그중에서 Okt 라이브러리를 이용하여 형태소 단위로 나누는 방법에 대해서 살펴보도록 하겠습니다. - 형태소 단위로 나누기 먼저, 필요한 라이브러리를 설치해줍니다. from konlpy.tag import Okt import re 그리고, 형태소 단위로 나눌 문장은 다음과 같다고 가정하겠습니다. text1 = "Tue) 오늘도 나는 커피를 마셔요!" Okt 객체를 이용해서 이 문장을 형태소 단위로 나누기 전, 한글과 공백을 제외한 문자를 모두 제거해주어야 하는데요, 정규표현식을 이용해서 코드를 다음과 같이 입력해주면 됩니다. text2 = re.sub("[^가.. 더보기
[자연어처리] 파이썬으로 원 핫 인코딩(One-Hot Encoding) 구현하기 (코드) 1. 원-핫 인코딩이란? 원-핫 인코딩(One-Hot Encoding)이란 단어 집합의 크기를 벡터 차원으로 만든 뒤, 표현하고 싶은 단어의 인덱스에 1의 값을 부여하고 다른 인덱스에는 0을 부여하는 방식을 말합니다. 한편, 케라스에서는 원-핫 인코딩을 하기 위한 함수 'to_categorical()'를 제공하는데요, 코드를 통해 원-핫 인코딩을 어떻게 하는지 살펴보도록 하겠습니다. 2. 코드 구현하기 먼저, 다음과 같은 문장이 있다고 가정해보겠습니다. text = "나는 얼죽아 추워도 아이스아메리카노 나는 아이스아메리카노 좋아 아이스아메리카노 마시자" 그리고나서 이 문장에 대해 원-핫 인코딩을 하기 위한 코드를 작성해보겠습니다. (1) 라이브러리 설치 먼저, 원 핫 인코딩을 하기 위한 라이브러리를 비롯.. 더보기
[자연어처리] 파이썬 코드로 패딩(Padding) 구현하기 - pad_sequences 패딩(Padding)이란, 데이터에 특정한 값을 채워서 데이터의 크기를 일괄적으로 조정하는 것을 말하는데요, 이때 특정한 값이 0이라면 이를 제로 패딩이라고 합니다. 한편, 케라스에서 패딩을 하기 위한 함수 'pad_sequences()'를 제공하는데요, 정수 인코딩이 된 값을 입력하면 패딩된 값으로 반환해줍니다. 한번 코드를 보면서 살펴보도록 하겠습니다. 1. 정수 인코딩하기 정수 인코딩을 하는 방법은 이전 글에서 자세하게 살펴보았는데요, 이에 대해서는 이전 글을 참고하시고, 바로 코드를 작성해보겠습니다. import numpy as np from tensorflow.keras.preprocessing.text import Tokenizer sentences = [['place', 'tree'], ['.. 더보기
[머신러닝] 파이썬으로 softmax(소프트맥스) 함수 구현하기 word_encoded = tokenizer.texts_to_sequences(sentences) print(word_encoded) softmax(소프트맥스) 함수란 인풋값을 넣으면, 그 값들을 모두 0과 1 사이의 값으로 정규화를 해주는 함수를 말하는데요, 아래와 같은 연산을 가집니다. 이러한 softmax 함수는 확률처럼 모든 아웃풋 값을 더했을 때 1이 총합이라는 특징을 갖는 함수입니다. 따라서 시그모이드 함수의 경우 인풋이 하나일 때 사용되지만, 소프트맥스는 인풋이 여러 개일 때도 사용할 수 있는 함수입니다. 따라서 softmax 함수는 멀티 클래스 분류모델을 만들고자 할 때 이용하는 것이 좋습니다. 한편, 파이썬에서 특정 라이브러리에선 소프트맥스를 구현하는 함수를 제공하는데요, 이를 사용하지 .. 더보기
[머신러닝] StandardScaler : 표준화 하기 (파이썬 코드) 표준화란 데이터의 평균을 0, 분산과 표준편차를 1로 만들어주는 것을 말하는데요, 표준화를 하는 이유는 다른 통계 데이터와 비교하는 데에 있어 용이하게 하기 위함입니다. 만약, 표준화를 하지 않으면 한 데이터셋과 다른 데이터셋의 평균과 분산, 표준편차는 제각각으로 서로 비교할 수 없습니다. 따라서 표준화를 통해 분포를 단순화시켜서 비교를 쉽게 할 수 있답니다. 한편, 사이킷런(Scikit-learn) 라이브러리에서 StandardScaler 함수를 제공하는데요, 아래 코드를 보면서 살펴보도록 하겠습니다. 먼저, StandardScaler 함수를 사용하여 표준화를 하는 코드는 다음과 같습니다. from sklearn.preprocessing import StandardScaler std_scaler = S.. 더보기
[머신러닝] MSE, MAE 뜻 & 구현 코드 1. MSE(Mean Squared Error) MSE란 Mean Squared Error의 약자로, 말 그대로 예측 값과 실제 값의 차이에 대한 제곱을 평균한 값을 말합니다. MSE의 경우 오차가 작으면 성능이 좋을 수 있지만, 과대적합이 될 수도 있습니다. 한편, MSE는 오차에 대해서 예측한 값이 실제 값보다 큰지, 작은지를 알 수 없다는 특징을 갖고 있습니다. - MSE : 코드로 구현하기 사이킷런(Scikit-learn) 패키지에서는 MSE를 구하는 라이브러리를 제공하는데요, 만약 실제 값 'true_y'와 예측한 값 'pred_y'의 MSE 값을 구하고 싶다면 다음과 같이 코드를 작성하면 됩니다. from sklearn.metrics import mean_squared_error #필요한 라이.. 더보기
[머신러닝] 사이킷런(Scikit-learn) 데이터로 릿지 회귀 모델 만들기 - Ridge() 이번 글에서는 사이킷런 라이브러리에서 제공하는 보스턴 주택 데이터(boston data)를 이용하여 릿지 회귀 모델을 만들어 보도록 하겠습니다. 1. 릿지(Ridge) 회귀 모델이란? 릿지 회귀 모델은 회귀를 하기 위한 선형 모델로, 가중치의 절댓값을 최소한으로 만드는 예측 함수를 사용합니다. 즉, 기울기를 작게 만들도록 제약을 거는데요, 과대적합이 되지 않도록 모델을 강제로 제약하는 '규제'를 하는 모델입니다. 2. 사이킷런 데이터 불러와 train data, test data로 나누기 릿지 회귀 모델에 사용할 데이터를 사이킷런 라이브러리에서 불러오고, train_test_split()함수를 이용하여 train data, test data로 나누어보도록 하겠습니다. import mglearn from .. 더보기
[웹크롤링] 자바스크립트로 이루어진 페이지와 html로 이루어진 페이지를 크롤링 하는 코드가 다른가요? 1. html로 이루어진 페이지 html로 이루어진 페이지를 크롤링하는 것은 자바스크립트로 이루어진 페이지를 크롤링하는 것과 다르게 코드를 작성해야 하는지 궁금하실 수 있는데요, html로 이루어진 페이지와 자바스크립트로 이루어진 페이지를 크롤링하는 방법은 약간 다르답니다! html로 이루어진 경우 간단하게 url을 찾고 BeautifulSoup()를 이용하여 본문을 가져오면 되는데요, 기본적으로 다음과 같이 코드를 입력하면 됩니다. from bs4 import BeautifulSoup import requests url = "https://www.naver.com/" resp = requests.get(url,params) soup = BeautifulSoup(resp.content, 'lxml') 2.. 더보기