분류 전체보기

    [Deep Learning] loss function - Cross Entropy

    딥러닝에서 손실함수의 종류는 여러가지가 있다. 하지만 cross entropy 는 잘 이해하지 못했는데 여기서 쉽게 이해한 내용을 정리해보고자 한다. Cross-entropy 란? 틀릴 수 있는 정보(머신러닝 모델의 output) 로 부터 구한 불확실성 정보의 양이다. 잘 이해가 안되지만 밑에 예제를 살펴보자 여기서 Cross entropy 값은 딥러닝 분류문제에서 softmax 를 통해 나온 결과값과 oneHotEncoding 되어있는 정답 값의 차이라고 보면 된다. 여기서 Q를 예측한 값(Estimated PRobability) 이라고 하고 P를 정답 값(True Probability)이라고 생각해보자. cross entropy는 정보의 량(Q)에 log qi 분의 2를 사용하기 때문에 모델의 예측값..

    [NLP] TF-IDF 를 활용한 제목별 추천 시스템.

    컨텐츠기반 추천시스템 우리가 유튜브로 영상을 클릭하면 해당 영상과 비슷한 영상들이 오른쪽에 쭉나열된다. 이 알고리즘을 사용한 건 아니지만 TF-IDF를 통해 제목만가지고 비슷하게 한번 흉내내보자. 먼저 필요한 패키지를 불러옵니다. import pandas as pd import numpy as np from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.metrics.pairwise import cosine_similarity TF-IDF를 사용해야하기떄문에 sklearn 안에 있는 패키지를 불러오고 TF-IDF 값을 기준으로 코사인 유사도를 통해 가장 유사한 제목을 찾아주기떄문에 cosine_similarity를 사용합니다. 그..

    [SQL] Python 에서 SQL을 다루는 방법.

    1. Python에서 데이터베이스에 연결하는 법 import sqlite3 # built-in library (Python 2.x & 3.x) dbpath = "chinook.db" conn = sqlite3.connect(dbpath) cur = conn.cursor() Python에서 SQL을 사용할 때에는 먼저 db와 연결해주는 connect 함수와 실제로 그 안에서 일을 하는 cursor 가 있다. * 실제로 일하는 건 cursor 가 다한다. dbpath 변수는 데이터베이스 파일의 경로를 지정하는 곳이고 파일이 없으면 새로 생성한다. 2. python 에서 SQL에 데이터를 삽입하는 방법 script = """ DROP TABLE IF EXISTS employees; CREATE TABLE em..

    [이미지 전처리] BGR and RGB

    openCV 와 PIL 패키지를 왓다갔다 사용하다 보면 이런 괴상한 형식의 이미지를 발견하게 된다. 이런 이유를 계속찾아봤더니 두 패키지의 이미지불러오기 방식이 다르기 때문이였다. openCV 는 기본적으로 BGR의 형태로 변환하여 데이터를 가져오고 PIL 은 이미지가 가지고있는 형식 그대로를 가져온다. def stringToRGB(base64_string): imgdata = base64.b64decode(base64_string) dataBytesIO = io.BytesIO(imgdata) image = Image.open(dataBytesIO) return cv2.cvtColor(np.array(image), cv2.COLOR_BGR2RGB) 이 함수를 통해 문자열이미지 데이터를 변환했을 때 뒤에있..

    [Colab]. 나의 구글드라이브 저장소와 코랩연동하기

    구글 코랩은 다운받은 데이터셋을 업로드하는 방식도 있지만 나의 구글드라이브에 연동하여 사용하는 방법도 있다. 먼저 구글드라이브에 데이터셋을 업로드하고 코랩에 접속한다.( 구글로그인 ) from google.colab import drive drive.mount('/gdrive') 이 두줄을 입력하면 이렇게 인증키를 입력해 달라는 text필드가 생기고 해당 url 에 접속해서 인증키를 입력하면 된다. 인증키를 입력하면 연결이 완료된다. 그럼 부모폴더와 같은 위치에있는 gdrive 폴더 안에 Mydrive 가 나의 구글드라이브라고 보면된다. 그래서 해당 경로로 접근해서 나의 파일들을 불러 올 수 있다. labels = pd.read_csv('/gdrive/MyDrive/beauty_score-master/t..

    [이미지 전처리]. ImageDataGenerator 클래스 : 이미지 제너레이터

    케라스 공식 홈페이지 keras.io/ko/preprocessing/image/ Image Preprocessing - Keras Documentation 이미지 전처리 [source] ImageDataGenerator 클래스 keras.preprocessing.image.ImageDataGenerator(featurewise_center=False, samplewise_center=False, featurewise_std_normalization=False, samplewise_std_normalization=False, zca_whitening=False, zca_epsi keras.io ImageDataGenerator 클래스란? 이미지를 학습시킬 때 학습데이터의 양이 적을 경우 학습데이터를 조금씩..

    [이미지 전처리] Pillow PIL , Opencv cv2 , 이미지 형태 정규화(RGB, RGBA)

    나는 사용자들이 업로드한 이미지를 받아서 처리해주는 프로젝트를 진행하고 있고 역시 에러가 발생하기 전까지는 이런 사실을 전혀 몰랐다. 이미지 칼라의 형식은 다양한 형식이 있고 이것에 따라 차원이 달라진다. RGB , RGBA 등등... 모든 데이터를 RGB든 RGBA 든 모두 같은 형식(정규화)으로 통일 시켜야 정확한 결과를 얻을 수 있다. 내가 여지것 본 데이터들은 ( 143 , 266 , 3 ) 과 같이 뒤에가 항상 3 으로 끝나는 이미지가 대부분이여서 이미지는 끝이 3으로 끝나는 구나 라고 생각했는데 그게 아니였다. 에러를 발생시킨 이미지를 봤더니 위처럼 이미지 객체가 이런식으로 차원의 맨 끝이 4로 되어있더라.. 궁금해서 mode( ) 함수를 통해 형식을 알아봤다. 보니까 RGBA 형식이더라 RG..

    [데이터 전처리]. pandas Dataframe 중복된 값 제거하기

    중복된 값 확인하기. df.duplicated() # True , False 반환 df[df.duplicated] # 중복행 반환 이 함수를 사용하면 중복값이 있는지 Boolean 마스크로 확인할 수 있다. 중복된 값 제거하기 1. 중복된 행들을 제거하고 unique 한 행들만 남기기 df.drop_duplicates() 2. 중복된 것들 중 하나만 남기고 제거하기 df.drop_duplicates(['title'],keep='last') 이렇게 하면 title 행에 있는 중복값들 중에서 keep='last' 즉 , 마지막에 있는 데이터만 남기고 나머지를 다 날린다.

    [데이터 전처리]. pandas Dataframe, Series 특수문자 제거하기

    문자열(string) 데이터에 특수문자들이 있으면 파이썬으로 처리하기에 불편한 점이 한 두 가지가 아니다. 특히 자연어 처리에 있어서는 특수문자는 골치덩어리 (제거하기도 애매한 것들이 있음). 이번엔 다 필요없고 문자만 남기고 다 지워버리는 방법이다. 위에 데이터를 보면 ♡, [ , ] , ! , & 등 특수문자들이 보인다. 이런 것 다 없애보자. 없애는 방법은 간단하다. 정규표현식을 사용한다. df["title"] = df["title"].str.replace(pat=r'[^\w]', repl=r'', regex=True) replace( ) 함수는 조건에 맞는 것을 다른 것으로 대체 해주는 함수. r'[^\w]' 는 모든 특수문자를 뜻하는 정규 표현식. df["title"].str 을 하면 글자를 하..

    [이미지 전처리]. 이미지 차원 추가하기 , np.append_dim()

    코딩을 하다보면 아주 간단한 문제인데도 불구하고 오랜시간을 매달리게 되는 경우가 많다. 이것 역시 간단한 문제... 모델을 학습시킬 때는 많은 차원의 데이터들이 트레이닝 데이터로 활용된다. 하지만 우리가 실제로 사용할 때는 하나의 데이터를 넣고 모델을 거쳐 결과를 뽑아낸다. 여기서 차원이 맞지 않는 문제가 발생한다. *어떤 예측모델인지에 따라 다르지만 예측할때 들어가는 input 데이터의 shape를 확인해서 shape을 맞춰주는 작업이 필요하다. 이미지는 행렬로 변환하면 3차원 데이터이다. 하지만 예측할 때 이 데이터를 넣으면 에러가 발생한다. 왜냐하면 예측에 필요한 데이터는 4차원 데이터 이기 때문이다. 그래서 서론이 길었지만 차원을 하나 추가해주어야한다. testimg_resized = np.exp..