오늘 할 일: 갈고 닦기
article thumbnail
유사도의 종류와 파이썬 구현: 자카드 유사도, 피어슨 유사도, 코사인 유사도

어떤 상품 X와 Y, Z가 있다고 합시다. 세 상품은 속성으로 제조년도, 제조국가, 유통기한, 소비기한, 원가, 판매가 등등을 가질 수 있겠죠. 이런 속성들을 숫자로 잘 뽑으면 상품들을 속성 값들의 나열, 즉 벡터로 표현할 수 있게 됩니다. 예를 들면, X = [1,0,2,3,2] Y = [1,0,3,2,1] Z = [0,1,3,1,1] 이런 식인거죠. 이렇게 아이템마다 벡터화를 해주고 나면, 아이템간 유사도를 구할 수 있습니다. 어떤 아이템이 과연 어떤 아이템과 가장 비슷한가? 혹은 비슷하지 않은가?를 계산할 수 있는 것이죠. 이 포스팅에서는 벡터를 이용하여 계산할 수 있는 유사도들을 알아보겠습니다. 1. 자카드 유사도(Jaccard Similarity) 자카드 유사도는 집합의 개념을 이용하는데요, 한..

article thumbnail
[시각화] subplots와 반복문을 이용하여 그래프 여러개 그리기

데이터를 파악하기 위해서는 시각화가 필수입니다. 데이터가 어떻게 생겼는지 확인하기 위해 여러 그림을 그리다보면 한번에 그리고 싶을 때가 있죠. 본 포스팅에서는 matplotlib의 subplots 함수와 seaborn 라이브러리를 이용하여 그래프를 한번에 여러개 그려보도록 하겠습니다. 먼저 필요한 라이브러리들과 데이터를 불러옵니다. 데이터는 캐글에서 가져온 HR 자료를 사용했습니다. import pandas as pd import numpy as np import seaborn as sns import matplotlib.pyplot as plt df = pd.read_csv('./data/HR_comma_sep.csv') display(df.shape, df.head()) 위 데이터로부터 부서(Depa..

[datetime] 파이썬에서 datetime을 이용하여 날짜, 시간 다루기

데이터 분석을 할 때 빠지면 섭섭한 자료형이 바로 날짜, 시간입니다. 고객이 행동을 하면 기록되는 웹페이지 로그라던가 초단위로 집계되는 기계의 자동화 시스템이 시간과 함께 저장되는 대표적인 데이터라고 할 수 있겠습니다. 시간, 시점과 관련한 분석을 실행하기 위해서는 파이썬에서 어떻게 날짜와 시간을 처리하는지 알아야겠죠. 본 포스팅에서는 파이썬에서 날짜와 시간을 다루는데 사용되는 datetime 라이브러리 사용방법에 대해 알아보겠습니다. datetime 라이브러리 소개 datetime은 파이썬에서 날짜와 시간을 다루는 클래스, 함수들을 모아놓은 라이브러리입니다. datetime 라이브러리는 날짜와 시간을 함께 저장하는 datetime 클래스, 날짜 정보를 저장하는 date 클래스, 시간 정보를 저장하는 t..

article thumbnail
[JSON] 파이썬에서 json 파일 읽기, 쓰기, 수정하기

JSON 파일이란? JSON은 JavaScript Object Notation의 약자로 JavaScript 언어의 자료형을 텍스트로 표현한 포맷입니다. 키-값 쌍으로 이루어져 있으며 사람이 쉽게 읽을 수 있도록 구성되어 있습니다. 서로 다른 시스템간에 데이터를 교환하기에 좋고, 언어가 다르더라도 데이터를 교환하는데 용이하다는 장점이 있습니다. JSON은 데이터를 키(key)와 값(value)로 표현하고, 이를 중괄호 {}로 감싸서 표현합니다. 예를 들면 {"점수" : 80} 이런 식이죠. 키는 큰따옴표로 묶은 문자열이고, 여러 개의 키-값 쌍을 저장하고 싶다면 쉼표(, comma)로 구분합니다. 만약 값으로 둘 이상의 값들을 사용하고 싶다면 대괄호 []로 묶어주면 됩니다. ex) {"singer": "T..

article thumbnail
[Flask] Flask 개념과 예제 코드 소개

Flask 소개 Flask는 파이썬에서 사용하는 경량 WSGI(Web Server Gateway Interface)로, 웹 애플리케이션을 구축할 수 있는 라이브러리입니다. Flask를 활용하면 웹 페이지, 블로그 혹은 머신러닝 예측 결과를 제공하는 웹 API를 만들 수 있습니다. 아래 그림에서 보는 바와 같이 머신러닝 모델과 프론트엔드 웹 페이지를 연결해주는 중간 다리로 사용되죠. 장고Django와 함께 파이썬 웹 프레임워크의 양대산맥으로 알려져 있습니다. Django는 이미 잘 짜여진 다양한 기능을 제공하는 반면 Flask는 심플한 대신에 사용자 자유도가 높다고 하네요. (마치 케라스와 파이토치같은..?ㅎ 아님 말고..) 이제 아래 예시에서 iris 데이터를 이용하여 모델을 만든 후, 플라스크가 모델에..

article thumbnail
[pandas] 딕셔너리를 데이터프레임의 열로 변경하는 방법

데이터프레임 형태를 갖는 어떤 데이터가 있다고 합시다. 이 데이터의 한 칼럼은 하나의 값이 아니라 여러 개의 값을 갖고 있습니다. 각각의 값들이 하나의 칼럼이 되어 새로운 값을 갖도록 하려면 어떻게 해야 할까요? 한 강의를 듣다가 문득 궁금증이 생겼는데, 강사님께서 직접 찾아보라고 하셔서 ㅎ.. 알아보았습니다. 유용하게 쓰일 법한 테크닉인데, 구현하는 방법은 굉장히 단순해서 놀랐어요. 데이터 준비 import os import pandas as pd import numpy as np from tqdm import tqdm path = '../data/movielens' movies_df = pd.read_csv(os.path.join(path, 'movies.csv'), index_col='movieId..

[pandas] object와 category의 차이

파이썬에서 tabular 형식으로 갖춰진 데이터를 다룰 때 보통 판다스를 가장 먼저 사용하죠. 판다스는 칼럼이 가질 수 있는 자료형으로 숫자, 문자, 날짜, boolen(True or False) 등을 지원합니다. 판다스로 데이터프레임을 다뤄보다가 문득 object 형식과 category 형식이 정확히 어떤 차이인지 궁금해졌어요. 그래서 이 포스팅에서는 두 형식의 개념과 차이에 대해 알아보고자 합니다. 판다스에서 자료형으로 사용되는 object와 category의 개념은 다음과 같이 이해할 수 있습니다. object 판다스에서는 문자열을 object라는 자료형으로 나타냅니다. 파이썬에서는 문자열을 string이라고 하지만, 판다스는 object라고 합니다. pd.DataFrame을 사용하여 데이터프레임을..

article thumbnail
Movielens 데이터 소개

grouplens에서 제공하는 movielens 데이터는 아래 사이트에서 다운받을 수 있습니다. 전체 데이터가 담겨있는 Full version과 이보다 적은 양의 데이터가 담겨있는 Small version이 준비되어 있는데요, Full version은 28만명의 사용자와 58000개의 영화 정보가 제공되고, Small version은 600명의 사용자와 9000개의 영화 정보가 제공된다고 합니다. 저장된 파일들의 형식은 동일하니 간단한 탐색을 위해 Full version 데이터가 아니라, Small version 데이터를 받아서 사용하겠습니다. https://grouplens.org/datasets/movielens/latest/ MovieLens Latest Datasets These datasets ..

[100 Numpy exercies] 11번 ~ 20번

11. Create a 3x3 identity matrix (★☆☆) mat1 = np.identity(3) mat2 = np.eye(3) print(mat1) print(mat2) [[1. 0. 0.] [0. 1. 0.] [0. 0. 1.]] [[1. 0. 0.] [0. 1. 0.] [0. 0. 1.]] 12. Create a 3x3x3 array with random values (★☆☆) mat = np.random.random((3, 3, 3)) print(mat) [[[0.5282567 0.309261 0.76337568] [0.43948225 0.90048663 0.58643259] [0.20646 0.56080675 0.1688716 ]] [[0.50961462 0.17716085 0.857..

article thumbnail
Pandas 기초 - 요약하기

Pandas 기초 마지막 포스팅입니다. 여기서는 데이터를 요약하는 몇가지 함수들을 알아보겠습니다. describe() : 수치형 칼럼 요약 grades.describe().round(2) describe()는 수치형 값을 갖는 칼럼에 한해 count(빈도수), mean(평균), std(표준편차), min(최솟값), 25%(제1사분위수), 50%(제2사분위수), 75%(제3사분위수), max(최댓값)를 제공합니다. round(N)는 소수점 자리수에서 반올림을 해주는 함수인데, N+1번째 자릿수에서 반올림하여 소숫점 아래 숫자를 N개만 남깁니다. quantile() : 분위수 구하기 grades.quantile([0.1, 0.4, 0.7, 0.9]) 사용자가 직접 구하고 싶은 분위수를 지정하여 값을 얻을 수..

반응형