DATA

    [데이터 사이언스] pandas

    pandas란? 원래 데이터 사이엔스에서는 파이썬보다 R이 훨씬 인기가 많았습니다. R은 애초에 통계를 위해 만들어진 언어이기 때문에 데이터 분석에 파이썬보다 적합했습니다. 그러다가 개발자들이 R의 장점을 파이썬으로 베껴오기 시작했습니다. R에서 데이터를 보관, 분석 시 가장 핵심적 역할을 한 게 DataFrame인데, 파이썬의 pandas 그 DataFrame을 사용할 수 있게 해놓은 라이브러리입니다. pandas는 numpy를 이용해서 만들어졌으므로 numpy의 기능들은 pandas에 기본적으로 있다고 보면 되고, 거기에 추가로 데이터 분석, 정리, 외부 데이터 읽고 쓰기 등 편리한 기능들이 추가된 것이 pandas입니다. pandas로 DataFrame 만들어보기 HTML 삽입 미리보기할 수 없는 ..

    [데이터베이스] 테이블 생성하기

    1. CSV 파일로 테이블 생성하기 테이블을 생성하는 방법은 크게 2가지가 있습니다. SQL 문으로 생성하는 방법 CSV 파일을 import 해서 테이블로 만드는 방법 지금은 데이터베이스와 테이블이 이미 존재하고, 그 안에 데이터도 이미 저장된 상황을 가정하고 데이터를 분석하는 것에 집중해서 공부해볼 것이므로 두 번째 방법을 이용해서 테이블을 만들어 볼 것입니다. 나는 codeit을 이용해서 공부하고 있으므로 codeit에서 제공하는 CSV 파일을 이용합니다. CSV는 Comma Separated Values의 약자로, 모든 값들이 ,로 구분된 형식의 내용을 가진 파일을 말합니다. 컴퓨터에 MS Office가 설치되어 있다면 아마 CSV파일이 Excel로 열리게 되어있을 텐데, CSV 파일의 가장 raw..

    [데이터베이스] 데이터베이스 기본 개념

    1. 데이터베이스와 테이블 데이터베이스: 일정한 체계 속에 저장된 데이터의 집합 데이터는 보통 데이터베이스 안에서 table(표)이라는 단위로 저장됩니다. 2. 테이블의 row와 column row: 개체 하나를 나타내는 단위 column: 개체 각각이 갖는 속성 하나하나를 나타내는 단위 3. DBMS와 SQL DBMS: DataBase Management System(데이터베이스 관리 시스템), 데이터베이스를 관리하기 위한 프로그램 이런 DBMS에도 MySql, Oracle, MS SQL Server, MariaDB, SQLite 등이 있는데 사용자가 골라서 사용하면 됩니다. 데이터베이스를 구축하는 것도 DBMS를 선택하는 것에서 시작합니다. DBMS를 선택하고 사용하면 DBMS가 내부적으로 알아서 미..

    [머신 러닝] RNN과 CNN을 사용해 시퀀스 처리하기

    미래를 예측하는 것은 우리가 늘 하는 일입니다. 이번 포스트에서는 미래를 어느 정도 예측할 수 있는 네트워크인 순환 신경망을 알아보겠습니다. 이 신경망은 시계열 데이터를 분석해서 주식가격 같은 것을 예측해 언제 사고팔지 알려줄 수 있습니다. 일반적으로 이 신경망은 지금까지 봤던 모든 네트워크처럼 고정 길이 입력이 아닌 임의 길이를 가진 시퀀스를 다룰 수 있습니다. 예를 들어, 문장, 문서, 오디오 샘플을 입력으로 받을 수 있고, 자동 번역, 스피치 투 텍스트같은 자연어 처리(NLP)에 매우 유용합니다. 순환 뉴런과 순환 층 지금까지는 활성화 신호가 입력층에서 출력층으로 한 방향으로만 흐르는 피드포워드 신경망에 초점을 맞추었습니다. 순환 신경망은 피드포워드 신경망과 매우 비슷하지만 뒤쪽으로 순환하는 연결도..

    [머신 러닝] 합성곱 신경망을 사용한 컴퓨터 비전

    합성곱 신경망(CNN)은 대뇌의 시각 피질 연구에서 시작되었고 1980년대부터 이미지 인식 분야에 사용됐습니다. CNN은 이미지 검색 서비스, 자율주행 자동차, 영상 자동 분류 시스템 등에 큰 기여를 했습니다. 또한 CNN은 시각 분야에 국한되지 않고 음성 인식이나 자연어 처리(NLP) 같은 다른 작업에도 많이 사용됩니다. 그러나 이번 포스트에서는 시각적 애플리케이션에 초점을 맞추겠습니다. 합성곱 층과 풀링 층부터 시작해서 하나하나 알아보겠습니다. 합성곱 층 합성곱 층은 CNN에서 가장 중요한 요소입니다. 첫 번째 합성곱 층의 뉴런은 입력 이미지의 모든 픽셀에 연결되는 것이 아니라 합성곱 층 뉴런의 수용장 안에 있는 픽셀에만 연결됩니다. 두 번째 합성곱 층에 있는 각 뉴런은 첫 번째 층의 작은 사각 영역..

    [머신 러닝] 텐서플로를 사용한 사용자 정의 모델과 훈련

    사용자 정의 모델과 훈련 알고리즘 가장 간단하고 많이 사용하는 사용자 정의 손실 함수를 만들어보겠습니다. 사용자 정의 손실 함수 회귀 모델을 훈련하는 데 훈련 세트에 잡음 데이터가 조금 있을 때, 이상치를 제거하거나 고쳐서 데이터셋을 수정할 수 있지만, 비효율적이고 잡음이 여전히 있을 수 있습니다. 이럴 때 평균 제곱 오차를 쓰면 큰 오차에 너무 과한 벌칙을 가해서 정확하지 않은 모델이 만들어질 것이고, 평균 절댓값 오차는 이상치에 관대해서 훈련이 수렴되기까지 식나이 걸리고 모델이 정밀하지 않을 것입니다. 이런 경우 후버 손실을 사용하면 좋습니다. 후버 손실은 아직 케라스 공식 API에서 지원하지 않습니다. tf.keras에서는 지원하기는 하지만, (keras.losses.Huber 클래스를 사용하면 됩..

    [머신 러닝] 머신러닝을 위한 텐서플로

    텐서플로 훑어보기 텐서플로는 강력한 수치 계산용 라이브러리입니다. 특히 대규모 머신러닝에 잘 맞도록 튜닝되어 있습니다. 텐서플로가 제공하는 것들을 간단히 요약하면 아래와 같습니다. 핵심 구조는 넘파이와 매우 비슷하지만 GPU를 지원합니다. (여러 장치와 서버에 대해서) 분산 컴퓨팅을 지원합니다. 일종의 JIT(just-in-time) 컴파일러를 포함합니다. 속도를 높이고 메모리 사용량을 줄이기 위해 계산을 최적화합니다. 이를 위해 파이썬 함수에서 계산 그래프를 추출한 다음 최적화하고 효율적으로 실행합니다. 계산 그래프는 플랫폼에 중립적인 포맷으로 내보낼 수 있으므로 한 환경에서 텐서플로 모델을 훈련하고 다른 환경에서 실행할 수 있습니다. 텐서플로는 자동 미분 기능과 RMSProp, Nadam과 같은 고성..

    [머신 러닝] 심층 신경망 훈련하기

    고해상도 이미지에서 수백 종류의 물체를 감지하는 것처럼 아주 복잡한 문제를 다뤄야 한다면 수백 개의 뉴런으로 구성된 10개 이상의 층을 수십만 개의 가중치로 연결해 훨씬 더 깊은 심층 신경망을 훈련해야 할 것입니다. 심층 신경망 훈련은 쉽지 않습니다. 훈련 중 다음과 같은 문제를 맞닥뜨릴 수 있습니다. 까다로운 그레이디언트 소실 또는 그레이디언트 폭주 문제에 직면할 수 있습니다. (신경망의 아래쪽으로 갈수록 그레이디언트가 점점 더 작아지거나 커지는 현상입니다.) 대규모 신경망을 위한 훈련 데이터가 충분하지 않거나 레이블을 만드는 작업에 비용이 많이 들 수 있습니다. 훈련이 극단적으로 느려질 수 있습니다. 모델이 너무 복잡해 과대적합될 위험이 큽니다. 특히 훈련 샘플이 충분하지 않거나 잡음이 많은 경우에 ..